High Performance Flash Memory Devices (FMD)
First Claim
1. A high performance flash memory device (FMD) comprising:
- a FMD interface configured to provide data input and output to a host computer system;
at least one non-volatile memory module having one or more non-volatile memory chips that are arranged in a plurality of vertical groups and in a plurality of horizontal rows such that each of the vertical groups and each of the horizontal rows having one of said one or more non-volatile memory chips overlapped, wherein number of the non-volatile memory chips in said each of the vertical groups is equal to number of the plurality of horizontal rows; and
a FMD controller configured to control data transmission between said at least one non-volatile memory module and the host computer system via said FMD interface, said FMD controller comprises a microcontroller, a plurality of parallel data buffers and a plurality of independent data channels, each of the parallel data buffers is divided into a plurality of sub-buffers, each of the sub-buffers is connected to corresponding one of the parallel data channels, wherein each of the data channels connects to respective one of the horizontal rows and wherein said data transmission is conducted in parallel via the independent data channels in one of at least one data interleaving scheme.
2 Assignments
0 Petitions
Accused Products
Abstract
High performance flash memory devices (FMD) are described. According to one exemplary embodiment of the invention, a high performance FMD includes an I/O interface, a FMD controller, and at least one non-volatile memory module along with corresponding at least one channel controller. The I/O interface is configured to connect the high performance FMD to a host computing device The FMD contoller is configured to control data transfer (e.g., data reading, data writing/programming, and data erasing) operations between the host computing device and the non-volatile memory module. The at least one non-volatile memory module, comprising one or more non-volatile memory chips, is configured as a secondary storage for the host computing device. The at least one channel controller is configured to ensure proper and efficient data transfer between a set of data buffers located in the FMD controller and the at least one non-volatile memory module.
123 Citations
27 Claims
-
1. A high performance flash memory device (FMD) comprising:
-
a FMD interface configured to provide data input and output to a host computer system; at least one non-volatile memory module having one or more non-volatile memory chips that are arranged in a plurality of vertical groups and in a plurality of horizontal rows such that each of the vertical groups and each of the horizontal rows having one of said one or more non-volatile memory chips overlapped, wherein number of the non-volatile memory chips in said each of the vertical groups is equal to number of the plurality of horizontal rows; and a FMD controller configured to control data transmission between said at least one non-volatile memory module and the host computer system via said FMD interface, said FMD controller comprises a microcontroller, a plurality of parallel data buffers and a plurality of independent data channels, each of the parallel data buffers is divided into a plurality of sub-buffers, each of the sub-buffers is connected to corresponding one of the parallel data channels, wherein each of the data channels connects to respective one of the horizontal rows and wherein said data transmission is conducted in parallel via the independent data channels in one of at least one data interleaving scheme. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A method of data reading operations in high performance flash memory device (FMD) having at least two groups of at least one non-volatile memory chip, each of the non-volatile memory chips includes at least two dies, each of the dies includes two planes, the dies share input/output and control buses but are selectable individually, said method comprising:
-
(a1) receiving a data read request; (a2) loading a first chunk of data to respective register of a first plane of a first die of the first group of non-volatile memory chips, and loading a fifth chunk of data to respective register of a first plane of a first die of the second group; (a3) filling the first chunk of data from the respective register of the first plane of the first die of the first group into a first data buffer; (a4) while the first chunk of data in the first data buffer is transferred to a host according to a predefined data interleaving scheme, loading a second chunk of data to respective register of a second plane of the first die of the first group, and then filling the second chunk of data from the respective register of the second plane of the first die of the first group into a second data buffer; (a5) while the second chunk of data in the second data buffer is transferred to the host according to the predefined data interleaving scheme, loading a third chunk of data to respective register of a first plane of a second die of the first group, and then filling the third chunk of data from the respective register of the first plane of the second die of the first group into the first data buffer; (a6) while the third chunk of data in the first data buffer is transferred to the host according to the predefined data interleaving scheme, loading a fourth chunk of data to respective register of a second plane of the second die of the first group, and then filling the fourth chunk of data from the respective register of the second plane of the second die of the first group into the second data buffer; (a7) while the fourth chunk of data in the second data buffer is transferred to the host according to the predefined data interleaving scheme, loading a new first chunk of data to respective register of the first plane of the first die of the first group, and filling the fifth chunk of data from the respective register of the first plane of the first die of the second group into the first data buffer; (a8) while the fifth chunk of data in the first data buffer is transferred to the host according to the predefined data interleaving scheme, loading a sixth chunk of data to respective register of a second plane of the first die of the second group, and then filling the sixth chunk of data from the respective register of the second plane of the first die of the second group into the second data buffer; (a9) while the sixth chunk of data in the second data buffer is transferred to the host according to the predefined data interleaving scheme, loading a seventh chunk of data to respective register of a first plane of a second die of the second group, and then filling the seventh chunk of data from the respective register of the first plane of the second die of the second group into the first data buffer; (a10) while the seventh chunk of data in the first data buffer is transferred to the host according to the predefined data interleaving scheme, loading for an eighth chunk of data to respective register of a second plane of the second die of the second group, and then filling the eighth chunk of data from the respective register of the second plane of the second die of the second group into the second data buffer; (a11) while the eighth chunk of data in the second data buffer is transferred to the host according to the predefined data interleaving scheme, loading a new fifth chunk of data to respective register of the first plane of the first die of the second group; and (a12) repeating steps (a3)-(a10) until said data read request has been fulfilled. - View Dependent Claims (21, 22, 23)
-
-
24. A method of data programming operations in high performance flash memory device (FMD) having at least two groups of at least one non-volatile memory chips, each of the non-volatile memory chips includes at least two dies, each of the dies includes two planes, the dies share input/output and control buses but are selectable individually, said method comprising:
-
(b1) receiving a data program request; (b2) filling a first chunk of data into a first data buffer in a predefined data interleaving scheme from a host; (b3) moving the first chunk of data from the first data buffer into respective register of a first plane of a first die of a first group of non-volatile memory chips; (b4) while the first chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the first group to busy and filling a second chunk of data into a second data buffer in the predefined data interleaving scheme from the host; (b5) moving the second chunk of data from the second data buffer into respective register of a second plane of the first die of the first group; (b6) while the second chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the first group to busy and filling a third chunk of data into the first data buffer in the predefined data interleaving scheme from the host; (b7) moving the third chunk of data from the first data buffer into respective register of a first plane of a second die of the first group; (b8) while the third chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the first group to busy and filling a fourth chunk of data into the second data buffer in the predefined data interleaving scheme from the host; (b9) while the fourth chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the first group to busy and filling a fifth chunk of data into the first data buffer in the predefined data interleaving scheme from the host; (b10) moving the fifth chunk of data from the first data buffer into respective register of a first plane of a first die of a second group; (b11) while the fifth chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the second group to busy and filling a sixth chunk of data into the second data buffer in the predefined data interleaving scheme from the host; (b12) moving the sixth chunk of data from the second data buffer into respective register of a second plane of the first die of the second group; (b13) while the sixth chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the second group to busy and filling a seventh chunk of data into the first data buffer in the predefined data interleaving scheme from the host; (b14) moving the seventh chunk of data from the first data buffer into respective register of a first plane of a second die of the second group; (b15) while the seventh chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the second group to busy and filling an eighth chunk of data into the second data buffer in the predefined data interleaving scheme from the host; (b16) moving the eighth chunk of data from the second data buffer into respective register of a second plane of the second die of the second group; (b17) while the eighth chunk of data is written from the respective register to corresponding location of the non-volatile memory chips, setting read/busy signal of all of the non-volatile memory chips in the second group to busy and filling a new first chunk of data into the first data buffer if required; and (b18) repeating steps (b3)-(b17) until the data programming request has been fulfilled. - View Dependent Claims (25, 26, 27)
-
Specification