This application claims the benefit of Japanese Patent Application No. 2020-019687, filed on Feb. 7, 2020, the entire disclosure of which is incorporated by reference herein.
This application relates generally to a memory controller and a flash memory system.
With regard to cells of a flash memory, p-bit multiple level cells (MLC) that allow information of p (p is an integer of 2 or more) bits to be stored in each cell have been known. Note that it is common practice that a 2-bit MLC is simply referred to as an MLC and a 3-bit MLC and a 4-bit MLC are referred to as a triple level cell (TLC) and a quadruple level cell (QLC), respectively. In addition, a cell that stores information of one bit in the cell is referred to as a single level cell (SLC).
Examples of the p-bit MLC include a p-bit MLC that can be set to a mode that allows information of q bits, q being smaller than p, to be stored in each cell (although, hereinafter, referred to as a q-bit MLC mode for the sake of simplicity, this mode includes an SLC mode, which will be described later) and a p-bit MLC mode that allows information of p bits to be stored. For example, examples of the MLC include an MLC that can be set to the SLC mode that allows information of one bit to be stored as in the SLC and an MLC mode that allows information of two bits to be stored in each cell.
Writing speed when the q-bit MLC mode is set is faster than writing speed when the p-bit MLC mode is set. Consequently, setting the q-bit MLC mode to a p-bit MLC is a disadvantage in respect of capacity efficiency but an advantage in respect of writing speed. A technology of, taking advantage of the characteristics, using a region to which the q-bit MLC mode is set as a cache in a flash memory constituted by p-bit MLCs has been known.
In order to achieve the above-described objective, a memory controller according to a first aspect of the present disclosure includes
circuitry, in which
the circuitry
a ratio of a data amount of the first redundant data to a data amount of the data required to be saved is greater than a ratio of a data amount of the second redundant data to a data amount of the replicated data.
The memory controller may be a memory controller in which
the circuitry further
the first error-correcting code is generated using a sector of or a plurality of sectors of data as a unit of processing,
the first redundant data are parity data generated with respect to each piece of data into which a plurality of pieces of data of a unit of processing when the first error-correcting code is generated are collected,
the second error-correcting code is generated using a sector of or a plurality of sectors of data as a unit of processing, and
the second redundant data are parity data generated with respect to each piece of data into which a plurality of pieces of data of a unit of processing when the second error-correcting code is generated are collected.
The memory controller may be a memory controller in which
the circuitry further
The memory controller may be a memory controller in which
the first redundant data are same data as data to be written into the first data block, and,
the circuitry recovers data written into the first data block by reading and acquiring data successfully written into the first redundant block.
The memory controller may further include
a storage storing a group management table for managing the first group and the second group, in which
the circuitry further
In order to achieve the above-described objective, a flash memory system according to a second aspect of the present disclosure includes the memory controller and the flash memory.
A more complete understanding of this application can be obtained when the following detailed description is considered in conjunction with the following drawings, in which:
Hereinafter, referring to the drawings, a memory controller, a flash memory system, and a flash memory control method according to embodiments of the present disclosure will be described. The same reference signs are assigned to the same or equivalent constituent components in the respective drawings.
Referring to
The flash memory system 1 includes a flash memory 2 and a memory controller 10. The flash memory system 1 is connected to a host system 3. The flash memory system 1 is, for example, a solid state drive (SSD) or an embedded multi media card (eMMC). The flash memory system 1 is used as a secondary storage device of the host system 3. The flash memory system 1 is an example of the flash memory system according to the present disclosure.
The flash memory 2 includes one or more flash memory chips. The flash memory 2 is a NAND-type flash memory in Embodiment 1. The NAND-type flash memory 2 reads and writes data in units of a page and erases data in units of a block, which is made up of a plurality of pages. The flash memory 2 is an example of the flash memory according to the present disclosure.
In Embodiment 1, it is assumed that each cell constituting the flash memory 2 is an MLC that is capable of storing information of two bits. It is also assumed that each cell is a cell that can be set to an SLC mode that allows information of one bit to be stored or an MLC mode that allows information of two bits to be stored, controlled by the memory controller 10. Although a smaller amount of information can be stored in a cell operating in the SLC mode than a cell operating in the MLC mode, the cell operating in the SLC mode has a faster writing speed than the cell operating in the MLC mode. These modes are set in units of a block. The SLC mode is an example of a first storage mode according to the present disclosure, and the MLC mode is an example of a second storage mode according to the present disclosure.
Referring to
Note that allocation of the data area AD and the redundant area AR in the respective pages can be freely set. For example, when an error-correcting code of 16 bytes is generated with respect to each piece of data of one sector (512 bytes) and the data and the error-correcting code are successively written, data areas AD of one sector (512 bytes) and redundant areas AR of 16 bytes may be alternately allocated in the storage areas of respective pages in a sequence of a data area AD, a redundant area AR, a data area AD, a redundant area AR, and so on. When an error-correcting code of 32 bytes is generated with respect to each piece of data of two sectors (1024 bytes), data areas AD of two sectors (1024 bytes) and redundant areas AR of 32 bytes may be alternately allocated in the storage areas of respective pages in a sequence of a data area AD, a redundant area AR, a data area AD, a redundant area AR, and so on.
An error included in data written into the flash memory 2 is highly likely to occur at the time of data writing, and it is anticipated that errors occur to the extent that the errors cannot be corrected even using the error-correcting codes.
Note that, in general, a page and a block of a flash memory are also referred to as a physical page and a physical block, respectively. This is to discriminate the physical page and the physical block from a logical page and a logical block that are units in which the host system processes data. Note, however, that, in the following description, a physical page and a physical block are sometimes referred to as a page and a block, respectively, in the operation of writing, reading, or erasure of data into or from a physical page and a physical block of the flash memory 2.
The memory controller 10 sets some cells (for example, approximately 10 percent) of the respective cells in the flash memory 2 to the SLC mode and uses the cells as a cache area and sets the other cells to the MLC mode and uses the cells as a storage area, which will be described in detail later. The cache area is an area in which data required to be saved are temporarily saved, and the storage area is an area in which data required to be saved are saved for a long period of time. The memory controller 10 first writes data required to be saved into the cache area and subsequently reads the data from the cache area and writes the read data into the storage area when, for example, no request is issued from the host system 3. Data written into the cache area are saved in the cache area in conjunction with parity data generated based on the data, which will be described in detail later. As such, it is possible to achieve high data recovery capability using parity data with respect to data saved in the cache area.
The host system 3 is a host system that uses the flash memory system 1 as a secondary storage device. The host system 3 is, for example, a personal computer or a smartphone.
Next, to facilitate understanding, a flash memory control method performed by the memory controller 10 will be schematically described using a specific example with reference to
First, as illustrated in
In addition, as with the cache area, the memory controller 10 configures a plurality of blocks in the storage area, which is set to the MLC mode, into a plurality of groups classified as second groups and allocates a plurality of blocks constituting each group to data blocks (second data blocks) and a redundant block (second redundant block). The second data block is a block into which data required to be saved in the storage area are written. The second redundant block is a block into which redundant data for correcting an error occurring in data written into a second data block are written. In
Next, referring to
The memory controller 10 calculates parity, based on the data D11 and D12 and thereby generates the parity data P11. The parity calculated based on the data D11 and D12 is, for example, horizontal parity generated by calculating exclusive ORs (XORs) of the bit string of the data D11 and the bit string of the data D12. In other words, the parity is generated by calculating exclusive ORs across pieces of data which is written into each of the data blocks BD11 and BD12. In addition, the memory controller 10 generates an error-correcting code based on the data D11 and an error-correcting code based on the data D12. In other words, in this example, an error-correcting code is generated using four sectors (2048 bytes) of data as a unit of processing.
Next, as illustrated in section (2) of
Next, referring to
Next, as illustrated in section (2) of
When the memory controller 10 reads data from pages in the respective data blocks (first data blocks) in section (1) of
Referring to
On this occasion, the memory controller 10 reads the data D11, into which data have been successfully written, from a page in the data block BD11, which belongs to the same group G1 as the data block BD12. The data D11 are data of the same group as the error data D12, into which data have not been successfully written. Further, the memory controller 10 reads the parity data P11 that have been successfully written into a page in the redundant block BR11, which also belongs to the group G1 that is classified as a first group. The parity data P11 are also data of the same group as the error data D12. In other words, data and parity of the same group as the error data D12 are read. The memory controller 10 recovers the error data D12, based on the data D11 and the parity data P11, which are data of the same group as the error data D12. Specifically, when the parity data P11 written into the redundant block BR11 are horizontal parity, the error data D12 can be recovered by calculating exclusive ORs of the data D11 and the parity data P11, which are read from pages corresponding to the error data D12 in the data blocks BD11 and the redundant block BR11, respectively.
Therefore, even when an error exceeding the error correction capability of an error-correcting code occurs at the time of data writing into the data block BD12, the memory controller 10 is capable of recovering data written into the data block BD12, using parity written into the redundant block BR11.
In addition, when one of the pieces of data in a data block (second data block) in the storage area have not been successfully written, the memory controller 10, as with the case of the cache area, is also capable of recovering error data, based on data that have successfully been written into the other data blocks and parity data that have successfully been written into the redundant block. In this processing, data and parity data of the same group as the error data are used for the recovery of data. In other words, the data that have successfully been written into the other data blocks and the parity data that have successfully been written into the redundant block are data and parity data of the same group as the error data. Note that, when data corresponding to error data in a data block in the storage area remain in a data block (first data block) in the cache area, the memory controller 10 may recover data by reading the data from the corresponding first data block.
As schematically described above, even when an error occurring at the time of writing of data required to be saved cannot be recovered using an error-correcting code, the memory controller 10 enables the data to be recovered, using parity data written into the redundant block. Therefore, it is possible to secure high reliability with respect to data saved in the cache area and the storage area. Note that, although, since redundancy of a group that is configured in the cache area and classified as a first group is higher than redundancy of a group that is configured in the storage area and classified as a second group, capability of data recovery in the cache area excels that in the storage area, storage efficiency of data in the storage area excels that in the cache area.
Note also that the numbers of data blocks and redundant blocks per group are determined taking into consideration balance between redundancy and capacity efficiency. For example, when the number of redundant blocks is one, the larger the number of data blocks per group is, the higher the capacity efficiency becomes. However, since the larger the number of data blocks per group is, the higher an occurrence rate of error per group becomes, redundancy becomes low. This is because, when the number of pieces of error data that have not successfully been written among pieces of data of the same group exceeds the number of pieces of parity data of the same group as the error data, it becomes impossible to recover the error data.
Referring to
The memory interface 11 is an interface for communicating with the flash memory 2. The memory interface 11 is a memory interface conforming to, for example, the open NAND flash interface (ONFI) standard.
The control circuit 12 transmits and receives data to and from the host system 3 via the host interface 15 and controls the flash memory 2 via the memory interface 11. The control circuit 12 includes a central processing unit (CPU) and peripheral circuits. The CPU reading and executing control programs stored in the ROM 14 causes functions of respective functional units, which will be described later, to be achieved. The control circuit 12 is an example of circuitry according to the present disclosure.
The RAM 13 temporarily stores work data necessary for the CPU to execute the afore-described control programs, data received from the host system 3, data read from the flash memory 2, and the like. In other words, the RAM 13 functions as a buffer memory. Further, the RAM 13 stores a group management table, which will be described later. The RAM 13 is, for example, a volatile memory that is accessible at high speed, such as a static random access memory (SRAM) and a dynamic random access memory (DRAM). The RAM 13 is an example of a storage according to the present disclosure.
The ROM 14 stores the afore-described control programs. The ROM 14 is, for example, a programmable read-only memory (PROM) or an electrically erasable programmable read-only memory (EEPROM).
The host interface 15 is an interface for communicating with the host system 3. The host interface 15 is, for example, an interface conforming to the serial advanced technology attachment (SATA) standard or an interface conforming to the non-volatile memory express (NVMe) standard.
Referring to
The data preparer 121 prepares data required to be saved in the cache area in units of a page, as illustrated in the afore-described
In addition, the data preparer 121 reads data required to be saved in the storage area from data blocks (first data blocks) in the cache area and prepares the data required to be saved in the storage area in units of a page, as illustrated in the afore-described
As illustrated in the afore-described
The group manager 122 writes information indicating a correspondence relationship between a group and blocks and information indicating an allocation of data blocks and a redundant block into the group management table stored in the RAM 13. The group management table is, for example, a table illustrated in
The group manager 122, by writing information into the group management table in this form, manages information indicating a correspondence relationship between a group and blocks and information indicating an allocation of data blocks and a redundant block. Note that, although blocks allocated in a group classified as a first group are used in the SLC mode and blocks allocated in a group classified as a second group are used in the MLC mode, it may be configured such that, by exchanging blocks allocated in a group classified as a first group and blocks allocated in a group classified as a second group, deterioration of the respective blocks is equalized.
The redundant data generator 123 calculates parity, based on data written into a plurality of pages and thereby generates parity data that are redundant data in both a case where the data are saved in the cache area and a case where the data are saved in the storage area, as illustrated in the afore-described
The writer 124 writes pieces of data of the same group that the data preparer 121 has prepared in units of a page into pages in the respective data blocks belonging to the same group and writes parity data that the redundant data generator 123 has generated based on the above-described pieces of data into a page in the redundant block belonging to the above-described group in both a case where the data are saved in the cache area and a case where the data are saved in the storage area, as illustrated in the afore-described
The read checker 125 determines whether or not data are successfully written with respect to pages into which data have been written by the writer 124. Specifically, the read checker 125 first reads data and a corresponding error-correcting code from each page to be determined in units of processing when an error-correcting code is generated. The read checker 125 determines that data are successfully written into the page when there is no error in all the data in the page or, although there is an error in the data, the error can be corrected using a corresponding error-correcting code and determines that data are not successfully written into the page when there is an error in the data and the error cannot be corrected even using a corresponding error-correcting code. Hereinafter, the read checker 125 reading data from a page in a block and determining whether or not data are successfully written is referred to as “to read-check”. This read-checking may be performed every time data are written or collectively performed after all data writing in units of a block has been completed.
The recoverer 126 recovers data, based on data and parity data of the same group as error data that have not been successfully written, with respect to both the cache area and the storage area, as illustrated in the afore-described
The mode setter 127 sets the cells in blocks allocated to the cache area to the SLC mode and the cells in blocks allocated to the storage area to the MLC mode. The modes are set in units of a block. The mode setter 127 may fix blocks to be set to the SLC mode or the MLC mode or dynamically change blocks to be set to the SLC mode or the MLC mode. For example, the mode setter 127 may reserve free space in the flash memory 2 by decreasing the number of cells to be set to the SLC mode and increasing the number of cells to be set to the MLC mode when only a small amount of free space is available.
Next, referring to
The data preparer 121 of the control circuit 12 in the memory controller 10 prepares data required to be saved in the cache area (step S101). As described afore, the data preparer 121 prepares data required to be saved in units of a page.
The group manager 122 of the control circuit 12 configures a plurality of blocks in the cache area into a group classified as a first group and allocates the plurality of blocks constituting the group to data blocks (first data blocks) and a redundant block (first redundant block) (step S102). On this occasion, the group manager 122 writes information indicating a correspondence relationship between the group classified as a first group and the blocks and information indicating an allocation of the data blocks and the redundant block into the group management table.
The redundant data generator 123 of the control circuit 12 calculates parity across pieces of data of a page unit that were prepared in step S101 and thereby generates parity data that are redundant data (step S103).
The writer 124 of the control circuit 12 writes data into pages in a plurality of blocks belonging to the same group by writing the data that were prepared in units of a page in step S101 into pages in the data blocks (first data blocks) in the cache area and writing the parity data that were generated in step S103 into pages in the redundant block (first redundant block) in the cache area (step S104). The control circuit 12 repeats the operations in steps S101 to S104.
Next, referring to
The data preparer 121 of the control circuit 12 in the memory controller 10 prepares data required to be saved in the storage area in units of a page by reading data from pages in the data blocks (first data blocks) in the cache area by means of the read checker 125 (step S201).
The read checker 125 of the control circuit 12 determines whether or not there is an error that cannot be corrected using an error-correcting code in the data that were read in step S201 (step S202). When there is no error that cannot be corrected (step S202: No), the control circuit 12 transitions to the operations from step S204.
When there is an error that cannot be corrected using an error-correcting code (step S202: Yes), the recoverer 126 recovers data that include the error that cannot be recovered using an error-correcting code, based on data and parity data of the same group as the data including the unrecoverable error (step S203).
The redundant data generator 123 of the control circuit 12 calculates parity data, which are redundant data, across pieces of data each of which is written into a page in one of the data blocks belonging to a group classified as a second group (step S204). The pieces of data each of which is written into a page in one of the data blocks are data that the data preparer 121 read from pages in data blocks (first data blocks) in the cache area and prepared in step S201. Note, however, that, when a piece of data is recovered by the operation in step S203, the recovered data, in place of read data, are data to be written into a page in a data block belonging to the group classified as a second group.
The group manager 122 of the control circuit 12 configures a plurality of blocks in the storage area into a group classified as a second group and allocates the plurality of blocks constituting the group to data blocks (second data blocks) and a redundant block (second redundant block) (step S205). On this occasion, the group manager 122 writes information indicating a correspondence relationship between the group classified as a second group and the blocks and information indicating an allocation of the data blocks and the redundant block into the group management table. Note that the operation in step S205 may be performed before step S201, performed at the succeeding stage to step S201, or performed at the succeeding stage to step S203.
The writer 124 of the control circuit 12 writes data into pages in the blocks constituting the group classified as a second group by writing the data that were prepared in units of a page in step S201 into pages in the data blocks (second data blocks) belonging to the group classified as a second group and writing the parity data that were generated in step S204 into a page in the redundant block (second redundant block) belonging to the group classified as a second group (step S206). Note, however, that, when a piece of data is recovered by the operation in step S203, the writer 124 writes, in place of read data, the recovered data into a page in a data block (second data block).
The control circuit 12 repeats a flow of operations in steps S201 to S206.
Note that the above description was made on the assumption that errors that cannot be recovered using error-correcting codes do not occur in two or more pages of data among data of the same group that are read from the cache area. Since, when there exist errors that cannot be recovered using error-correcting codes in two or more pages of data, data cannot be recovered, the control circuit 12 informs the host system 3 of, for example, information indicating that a fatal error has occurred.
The flash memory system 1 according to Embodiment 1 has been described above. According to the flash memory system 1 according to Embodiment 1, a plurality of blocks in the cache area are configured into a group classified as a first group, the plurality of blocks constituting the group are allocated to data blocks (first data blocks) and a redundant block (first redundant block), and, when data are written into the data blocks (first data blocks), redundant data are also written into the redundant block (first redundant block). As such, it is possible to achieve high data recovery capability with respect to an area used as a cache.
In addition, the flash memory system 1 according to Embodiment 1 similarly enables high recovery capability to be achieved with respect to the storage area. Further, although, since the redundancy of a group that is configured in the storage area, which is classified as a second group, is lower than the redundancy of a group that is configured in the cache area, which is classified as a first group, the data recovery capability in the cache area excels that in the storage area, it is possible to reserve larger free space in the storage area than in the cache area.
In Embodiment 1, it was assumed that two data blocks were allocated in a group classified as a first group and four data blocks were allocated in a group classified as a second group. However, as long as redundancy of a group classified as a second group is lower than redundancy of a group classified as a first group, the number of allocated data blocks may be set at any number. Note that, although the number of pieces of data (the number of pieces of data of a page unit) belonging to the same group changes depending on the number of data blocks allocated in a group, parity data may similarly be calculated regardless of the number of pieces of data belonging to the same group.
In Embodiment 1, although it was assumed that a redundant block (second redundant block) was allocated in a group (group classified as a second group) configured in the storage area, a redundant block (second redundant block) does not necessarily have to be allocated in a group classified as a second group. Even when an error occurs in written data at the time of reading data from the cache area and writing the data into a data block (second data block) in the storage area, it is possible to read the same data from the cache area again and write the data into the second data block. Therefore, even when no redundant block (second redundant block) is included in a group classified as a second group, it is possible to write data including no error into the storage area. This variation is suitable for, for example, a case where the flash memory 2 has characteristics that error correction capability of only an error-correcting code is sufficient to cope with an error at any time except at data writing. Note that it may be configured such that a redundant block (second redundant block) is not allocated in only some groups classified as second groups.
In the flash memory system 1 according to Embodiment 1, it was assumed that a redundant block (first redundant block) was allocated per group classified as a first group. On the other hand, a flash memory system 1 according to Embodiment 2, which will be described below, differs from Embodiment 1 in that two redundant blocks (first redundant blocks) are allocated per group. The flash memory system 1 according to Embodiment 2 is suitable for, for example, a case where a flash memory 2 having characteristics that errors are highly likely to occur to the extent that error correction capability of only one redundant block (first redundant block) is insufficient to cope with errors occurring at the time of data writing is controlled. Note that it may be configured such that two redundant blocks (first redundant blocks) are allocated in only some groups classified as first groups and a redundant block (first redundant block) is allocated in the other groups.
A configuration of the flash memory system 2 according to Embodiment 2 is similar to those illustrated in
As illustrated in
As illustrated in
Recovery of data when there is an error that cannot be corrected using an error-correcting code in data written into a page in a data block (first data block) after writing belonging to a group classified as a first group is generally the same as that in Embodiment 1. In Embodiment 2, however, since two types of parity data are written into two first redundant blocks, a recoverer 126 is capable of recovering data, based on the two types of parity data even when there are errors that cannot be corrected using error-correcting codes in both of two pieces of data of the same group read from data blocks (first data blocks) belonging to a group classified as a first group. Note that each of two pieces of data of the same group corresponds to data of a unit of processing when an error-correcting code is generated.
The flash memory system 1 according to Embodiment 2 has been described above. According to the flash memory system 1 according to Embodiment 2, since two first redundant blocks are allocated in a group classified as a first group in the cache area, it is possible to achieve higher data recovery capability than Embodiment 1 with respect to an area used as a cache.
Although, in Embodiment 2, the number of first redundant blocks to be allocated in a first group was assumed to be two, the number of first redundant blocks may be three or more. Although three or more types of parity data are needed in this case, three or more types of parity data can be generated because preparing a plurality of methods of Galois field operations enables a plurality of types of Galois parity to be calculated.
In Embodiment 2, although it was assumed that a redundant block (second redundant block) was allocated in a group classified as a second group in the storage area, a redundant block (second redundant block) does not necessarily have to be allocated in a group classified as a second group or two or more redundant blocks (second redundant blocks) may be allocated in a group classified as a second group within a range satisfying a condition that redundancy of a group classified as a second group is lower than redundancy of a group classified as a first group.
In addition, in Embodiment 2, as with the variation of Embodiment 1, the number of data blocks (first data blocks) allocated in a group classified as a first group and the number of data blocks (second data blocks) allocated in a group classified as a second group can be appropriately set within a range satisfying a condition that redundancy of a group classified as a second group is lower than redundancy of a group classified as a first group.
In Embodiments 1 and 2, redundant data were parity data generated by calculating parity across pieces of data that are written into data blocks. On the other hand, in Embodiment 3, which will be described below, redundant data in a cache area are not parity data, but the same data as data to be written into a data block.
In Embodiment 3, a data block (first data block) and one or more redundant blocks (first redundant blocks) are allocated in a group classified as a first group, as illustrated in
A configuration of the flash memory system 1 according to Embodiment 3 is similar to those illustrated in
As illustrated in
As illustrated in
As illustrated in
The flash memory system 1 according to Embodiment 3 has been described above. The flash memory system 1 according to Embodiment 3, as with Embodiment 1, enables high data recovery capability to be achieved with respect to an area used as a cache. Since, differing from Embodiment 1, it is not necessary to calculate parity at the time of data writing into the cache area, a calculation load is low.
In Embodiment 3, allocation of data blocks (second data blocks) and a redundant block (second redundant block) in a group classified as a second group in the storage area is the same as Embodiment 1, and, as with Embodiment 1, parity data are written into the redundant block as redundant data. However, with respect to a second group, it may be configured such that, as with a first group, one or more redundant blocks (second redundant blocks) are allocated in a group classified as a second group and the same data as data in a data block are written into the redundant blocks as redundant data. Note, however, that the number of second redundant blocks allocated in a second group is determined in such a way that redundancy of a group classified as a second group is lower than redundancy of a first group.
In addition, in Embodiment 3, as with the variation of Embodiment 1, the number of first data blocks allocated in a group classified as a first group and the number of second data blocks allocated in a group classified as a second group may be any number of two or more as long as redundancy of a second group is lower than redundancy of a first group.
(Other Variations)
Although, in the above-described respective embodiments, the flash memory 2 was assumed to be a NAND-type flash memory, the flash memory 2 may be a memory other than a NAND-type flash memory as long as the flash memory 2 is a memory that is capable of changing the number of bits storable in each cell.
Although, in the above-described respective embodiments, each cell of the flash memory 2 was assumed to be an MLC, each cell of the flash memory 2 may be another type of p-bit MLC. In addition, each cell may be a cell to which a mode other than the SLC mode and the MLC mode can be set. For example, each cell may be a cell that is a QLC and to which the MLC mode and the QLC mode can be set.
In the above-described respective embodiments, it was assumed that the respective functional units of the control circuit 12 were achieved by the CPU disposed in the control circuit 12 executing control programs. However, the control circuit 12 may include an application specific integrated circuit (ASIC) in place of the CPU, and the respective functional units of the control circuit 12 may be achieved by the ASIC. Alternatively, the control circuit 12 may include both the CPU and the ASIC, and some functions of the control circuit 12 may be achieved by the ASIC. For example, since processing, such as calculation of an error-correcting code, error correction using an error-correcting code, calculation of Galois parity, and data recovery using Galois parity, are processing requiring a high load, an ASIC dedicated to such processing may be disposed in the control circuit 12 and the ASIC may execute the processing.
The foregoing describes some example embodiments for explanatory purposes. Although the foregoing discussion has presented specific embodiments, persons skilled in the art will recognize that changes may be made in form and detail without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. This detailed description, therefore, is not to be taken in a limiting sense, and the scope of the invention is defined only by the included claims, along with the full range of equivalents to which such claims are entitled.
Number | Date | Country | Kind |
---|---|---|---|
2020-019687 | Feb 2020 | JP | national |