This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2010-019547, filed Jan. 29, 2010, and No. 2011-004482, filed Jan. 13, 2011, the entire contents of both of which are incorporated herein by reference.
Embodiments described herein relate generally to a semiconductor storage device including a nonvolatile memory and a method of controlling a semiconductor storage device.
In general, a nonvolatile memory such as a flash memory is not capable of overwriting in data writing. Therefore, if writing and deletion of data are repeated, divided unnecessary regions remain undeleted. Processing to erase these unnecessary regions and gather used regions into a continuous region is called compaction. Conventional compaction processing for a semiconductor storage device is described in, for example, Jpn. Pat. Appln. KOKAI Publication No. 2008-146253 (paragraphs 0050, 0051, 0066, 0067 and 0072 to 0075).
In the storage device described in Jpn. Pat. Appln. KOKAI Publication No. 2008-146253, two-chip 8-gigabit NAND flash memories having a 16-bit input/output are connected in parallel to a 32-bit memory bus. Two chips are simultaneously accessed in parallel in reading and writing. That is, the memory bus comprises two channels of 16-bit buses. Each flash memory is accessed for writing or reading, for example, in 4-kilobyte page units. Thus, 8 kilobytes are collectively accessed as an actual page size.
A RAM incorporated in the storage device comprises a code area or working area for executing a program. The RAM further comprises an address translation table for managing page-by-page virtual addresses, a search table for searching for a normal free block, a counter table for managing the number of invalid pages in each block, a write pointer, a counter for the total number of invalid pages, and an unused page counter.
Data is updated (written) with additional writing. When data is written with the additional writing, a page region corresponding to a physical page address where data before update is stored, such as “0x0060B0” is deleted from a physical address field of the address translation table and cannot be accessed externally. That is, the page region is invalidated.
However, such regions have data written therein and in this condition, cannot even be used as free regions. If such writing is repeated many times, a great number of invalid pages are created. In order for these regions to be usable as free regions again, the data therein needs to be erased to restore the regions (corresponding to the compaction). In this case, other valid data remaining in the deletion block “0x0060” to be erased needs to be saved.
To carry out this restoration processing, for example, the valid data in the target block can be, first, once read into a page buffer as in the case of updating, and the data can be then written into a free region of another block in the additional writing so that the data is substantially saved. That is, a valid page is temporarily updated to completely invalidate its original region. The target block is then erased and the restoration processing is thus achieved.
This restoration processing can be automatically performed when the storage device is on standby or when a system is idle. However, forced restoration processing has little effect in a situation where a great number of unused regions remain and there are only a small number of invalid pages. On the other hand, if the restoration processing is not performed for a long time, there may be a shortage of unused regions leading to access latency. Therefore, a function to determine whether the restoration processing should be really executed and select a target block for the restoration processing is needed somewhere in the system.
Accordingly, the restoration processing, the determination of whether to execute the restoration processing and the selection of a restoration target block are regarded as one operation group, and are packaged in the storage device as a restoration sequence. The restoration sequence is automatically executed in response to a restoration processing execution command from a storage device itself which managed by firmware (FW), (rarely from host's command), usually it is done when the storage device is not busy or put on standby.
Thus, in the device described in Jpn. Pat. Appln. KOKAI Publication No. 2008-146253, the restoration processing, the determination of whether to execute the restoration processing and the selection of a restoration target block are packaged in the storage device as one restoration sequence, and the restoration sequence is executed in response to the restoration processing execution command from the system. As a result of the restoration of the invalid pages in the flash memory, the efficiency of the use of the flash memory can be improved.
However, since the restoration sequence is executed as software on a CPU in this device, the CPU has to perform plural processes to even execute one restoration sequence. There is a problem of decreased performance of the whole system when the processing performance of the CPU deteriorates due to interventions of the software during the execution of the restoration processing.
A general architecture that implements the various features of the embodiments will now be described with reference to the drawings. The drawings and the associated descriptions are provided to illustrate the embodiments and not to limit the scope of the invention.
Various embodiments will be described hereinafter with reference to the accompanying drawings. In general, according to one embodiment, a semiconductor storage device comprises a queuing buffer, a read module, a separating module, a write command issuing module, a write module. The queuing buffer is configured to queue a command of a nonvolatile memory. The read module is configured to issue a read command of the nonvolatile memory. The separating module is configured to separate data read from the nonvolatile memory by the read module into user data and management data. The write command issuing module is configured to add a write address indicated by write pointer information to the management data obtained by the separating module in order to issue a write command, and to automatically queue the write command into the queuing buffer, the write pointer information managing the write address of the nonvolatile memory. The write module is configured to supply the write command issued by the write command issuing module to the nonvolatile memory in order to write data into the nonvolatile memory.
According to another embodiment, a semiconductor storage device comprises a queuing buffer, a nonvolatile memory (such as NAND flash memory) access module (there are read and write sequence, in later, they are written as ‘read module’ and ‘write module’), a managing compaction information and data module (in later, it is written as ‘separating module’) and an issuing write command automatically module. The queuing buffer queues some commands which is issued by CPUs. The nonvolatile memory access module is accessing NAND flash memory, for example reads the data from NAND flash memory and/or writes the data to NAND flash memory. The managing compaction information and data module separates of read data in two, control information and user data when read sequence. When the write sequence, it makes write data based on the information of the issuing write command automatically module. The issuing write command automatically module makes write command based on information of a managing compaction information and data module and queuing automatically it into the queuing buffer. After that, this module also adds up a write address, that is, write pointer information. The write pointer information manages the write address of the nonvolatile memory. (More accurate, the write address above is calculated using Logical/Physical map.)
The flash memory interface 6 is connected to the NAND flash memories 81, 82, . . . , 8n, and controls access to the NAND flash memories 81, 82, . . . , 8n. Specifically, the flash memory interface 6 performs address or data control for the NAND flash memories 81, 82, . . . , 8n. The flash memory interface 6 receives a command from the CPU 2, and transfers data between the NAND flash memories 81, 82, . . . , 8n and the main memory 3. The flash memory interface control and NAND flash memory I/F portion 6 also stores logical block address (LBA) information and information on various attributes (flags) therein for use of compaction sequence.
The host interface 4 is connected to a host system 10 by a protocol SAS or SATA, and controls, via the dataflow controller 7, the flow of data exchanged between the host system 10 and the NAND flash memory 8. The host interface 4 is accessed from the host system 10 by the logical block address (LBA). A DRAM, for example, is used as the main memory 3. Temporally buffer data between Host and NAND flash memory, a valid page management table, a lookup table and a logical/physical conversion table are stored in the main memory 3.
An external boot ROM 9 is also connected to the internal bus 2b of the flash memory controller 1. A flash memory is used as the boot ROM 9 by way of example, and the boot ROM 9 includes a firmware. The firmware uses the CPU 2 to issue a read command or write command to the flash memory control and NAND flash memory I/F portion 6 to access the NAND flash memories 81, 82, . . . , 8n using I/O commands. Contents programmed in the ROM 9 are transferred to a temporary storage in the CPU 2 or to the main memory 3 when a system is powered on, and the firmware is thereby activated.
The read command or write command from the CPU 2 is written into a command queue 26 via the internal bus 2b (command input). A command format here has only to be a format easily processed by the flash memory control and NAND flash memory I/F portion 6, and is dependent on hardware implementation. When a command is input to the command queue 26 which is not a feature of the embodiment and is therefore not mentioned in particular here, a command processor 28 loads the entered command from the command queue 26 and issues a command to a command sequencer 30 to start accessing the NAND flash memories 81, 82, . . . , 8n.
When a compaction command is issued from the CPU 2, the compaction command is inputted to the command queue 26 as a read command, at first. The command processor 28 loads the read command from the command queue 26, and issues a command to the command sequencer 30 to start operation. Then, data is read from a relevant block of the NAND flash memories 81, 82, . . . , 8n via the I/O buffer 24. A valid page management table (described later) in the main memory 3 manages whether data in each page of each block in the NAND flash memories 81, 82, . . . , 8n is valid or invalid. The CPU 2 only provides a read address to a page including valid data, and only reads valid data.
The command sequencer 30 selects one of the NAND flash memories 81, 82, . . . , 8n, and issues an access command to the selected NAND flash memories 81, 82, . . . , 8n. In accessing the NAND flash memories 81, 82, . . . , 8n, the command sequencer 30 requests the data processor 32 to transfer data to the main memory 3 (the LBA/attributes may be included or may not be included). When the data transfer is completed, the data processor 32 returns an end response (including the LBA/attributes) to the command sequencer 30. When the command sequencer 30 reports an end command (the flag of command end) to the command processor 28, the command processor 28 sends the end command to a table updating module 34. At the same time, the data processor 32 separates the data in the valid page read from the NAND flash memories 81, 82, . . . , 8n into user data, LBA data, and attribute data necessary for following writing (a write command following the read command in the command queue 26). The data processor 32 then passes the LBA/attribute data to the command processor 28 together with the end response. The attribute data includes, by way of example, information indicating whether to check data by error correction coding (ECC), information on data length, and information on whether the data is encrypted.
After the end of all the read commands in the command queue 26, the operation moves to processing of the write command in the command queue 26 (referred to as following write processing). Details of this processing will be described later with reference to
When the data transfer is completed, the data processor 32 returns an end response to the command sequencer 30. The command processor 28 then passes an end report and information necessary to update the lookup table to the table updating module 34, and updates the data on the main memory 3. The table updating module 34 updates a table on the main memory 3 associated with the finished command. The table updating module 34 updates a valid page management bitmap table and other management tables at the end of writing. Details of the updating processing will be described later. After the end of all the processing, the table updating module 34 sends an end command and a status to a response queue 36, so that hardware command processing is completed. The CPU 2 reads the response queue 36 and can thereby recognize the execution result of the command.
The NAND flash memories 81, 82, . . . , 8n constitute one page every predetermined byte, for example, every 2,112 bytes. Predetermined pages, for example, 64 pages constitute one block. Valid pages and invalid pages are mixed in each block. The valid page has data written therein and shows that this data is valid. The invalid page has nothing written therein, or shows that the data written therein before becomes invalid. A valid page management table 52 is provided in the main memory 3 to indicate whether each page of the NAND flash memories 81, 82, . . . , 8n is valid or invalid. This table 52 is a bitmap table that indicates whether each page of each block is valid or invalid as shown in
First, the CPU 2 issues a compaction command with designating a physical address in the NAND flash memories 81, 82, . . . , 8n (block #10 in
The flash memory controller 1 reads data from the valid page of the designated physical address of the NAND flash memories 81, 82, . . . , 8n (block #102). The read data is separated into user data and management data (LBA/attribute data) by the data processor 32 (block #104). The user data is transferred to a buffer region (user data save region) in the main memory 3 (block #108).
On the other hand, a write address is calculated by write pointer information which shows next address 58 (included in the command processor 28 in
By the write command after read from the command queue 26, the user data transferred from the main memory 3 is written into the designated address of the NAND flash memories 81, 82, . . . , 8n (block #114), through command processor 28 and data processor 32. As in block #114, when the write command located in the command queue 26 is executed to follow the read command executed in block #102 (following write), it is necessary to again determine whether the read data is valid or invalid at a point immediately before the writing. The purpose is to cope with the possibility that the data which has been valid at the time of reading may change into an invalid state at this time. For example, when the user data is overwritten by the host 10, data is written on the NAND flash memories 81, 82, . . . , 8n at a physical address different from the physical address where the user data had been written before. The data (read data) that has been present in the physical address of the NAND flash memories 81, 82, . . . , 8n in which the user data had been written before becomes invalid. Thus, when the read data is invalid, the invalid data (all “0”s) is written (called “0” padding). Since the current writing is invalid, the write operation itself may have to be stopped, however, it may be difficult from the perspective of hardware to stop the write operation after the write command is loaded from the command queue 26. Therefore, also for simple hardware, writing data process does not stop. In block #116, the table updating module 34 updates the lookup table 56 in the main memory 3. In block #118, the table updating module 34 then sends an end command and a status to the response queue 36, so that hardware command processing is completed.
The CPU 2 reads the response queue 36 and thereby recognizes the execution status of the command (block #20).
For the compaction, a free block (all pages are invalid) #6 is acquired first, and data in the valid pages is copied in order starting with the head page of this block. A status after the data in the page #1 of the block #0 is copied to a page #0 of the block #6 is shown in the right of
As described above, according to the first embodiment, when the compaction processing of the NAND flash memories 81, 82, . . . , 8n is performed, the CPU 2 has only to issue a compaction command with designating a logical block address. In response to this command, the flash memory controller 1 reads data in the valid page from the designated block, and adds the write address generated by the write pointer information 58 to the management data (LBA/attribute data) separated from the read data in order to generate a write command. The user data from the main memory 3 is added and coupled to the write command, and the user data are written in the designated address of the NAND flash memories 81, 82, . . . , 8n page by page. After the writing, the block from which the data has been read is invalidated, and the lookup table 56 is updated. As a result, the compaction operation (read processing, following write processing and lookup table update processing) can be performed by one command from the CPU 2, so that the CPU processing load can be reduced. Moreover, since there is no interruption by software processing, the processing performance of the whole system is increased. Before writing, it is necessary to check the read data is invalid or not. When the read data is invalid, handling is, for example, writing itself is stopped and/or the invalid data such as all ‘0’s is written instead. This makes it possible to cope with the case where the read data changes into an invalid state in the middle of the compaction. Furthermore, the present invention can also be carried out to cause a computer to execute predetermined means, to cause a computer to function as predetermined means, or to cause a computer to enable a predetermined function. Alternatively, the present invention can also be carried out as a computer-readable recording medium in which a program is recorded.
Still further, the present invention is not limited to the compaction, and is also applicable to the movement of data at regular periods (regular refreshment) which is a characteristic of the nonvolatile memory, or to read-modify-write (RMW).
The various modules of the systems described herein can be implemented as software applications, hardware and/or software modules, or components on one or more computers, such as servers. While the various modules are illustrated separately, they may share some or all of the same underlying logic or code.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. For example, although the semiconductor drive (solid-state drive [SSD]) controlled by the host 10 has been taken as an example to describe the present invention, the present invention is not limited to this. The present invention is also applicable to, for example, silicon audio devices or memory media card. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2010-019547 | Jan 2010 | JP | national |
2011-004482 | Jan 2011 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
4775932 | Oxley et al. | Oct 1988 | A |
6266273 | Conley et al. | Jul 2001 | B1 |
7196937 | Sugio | Mar 2007 | B2 |
7409473 | Conley et al. | Aug 2008 | B2 |
7849381 | Tomlin | Dec 2010 | B2 |
20060077721 | Sugio | Apr 2006 | A1 |
20070028035 | Nishihara | Feb 2007 | A1 |
20080002469 | Ishimoto | Jan 2008 | A1 |
Number | Date | Country |
---|---|---|
2564483 | May 1986 | JP |
08-314775 | Nov 1996 | JP |
2003-186739 | Jul 2003 | JP |
2004-507007 | Mar 2004 | JP |
2006-107326 | Apr 2006 | JP |
2007-334935 | Dec 2007 | JP |
2008-146253 | Jun 2008 | JP |
2008-524748 | Jul 2008 | JP |
2008-524750 | Jul 2008 | JP |
WO 0217330 | Feb 2002 | WO |
WO 2006068963 | Jun 2006 | WO |
WO 2006068993 | Jun 2006 | WO |
Number | Date | Country | |
---|---|---|---|
20110191529 A1 | Aug 2011 | US |