Embodiments described herein relate generally to a memory controller and a memory system that control nonvolatile semiconductor memory.
In a storage that uses flash memory, data transfer performance is improved by mounting a plurality of memory chips, and driving the plurality of memory chips in parallel. Physical blocks are collected from the respective memory chips, and a virtual block called a logical block is constructed from the collected plurality of physical blocks, and the constructed logical block is used as a managing unit of erase, read, write and the like.
In the flash memory, since memory cells wear out as erasing of blocks are performed, a wear leveling that smoothes a number of times of erasing of blocks is performed. In a case where the logical block is configured, since erasing is performed in the logical block units, the physical blocks within the logical block are at the same number of times of erasing. Accordingly, the number of times of erasing is smoothed in the physical block units if the number of times of erasing in the logical block units is smoothed.
However, in reality, since there is a reliability variation among the physical blocks, an error rate of data error correction may not be the same between the physical blocks having the same number of times of erasing. Especially in a case where the reliability variation is large among memory chips, a physical block included in a memory chip with low reliability and a physical block included in a memory chip with high reliability are mixedly present in the logical block, whereby the error rate differs among the physical blocks within the logical block. Due to this, a possibility of exceeding an error correction capacity of the error correction becomes high at an earlier stage for the physical blocks with low reliability and high error rate, and an entire device had to be regarded as out of service despite sufficiency in life of the physical blocks with high reliability and low error rate.
According to an embodiment, a nonvolatile semiconductor memory includes a plurality of memory chips, each of the memory chips includes a plurality of physical blocks, and the physical block is a unit of erase operation. A memory controller controls the nonvolatile semiconductor memory. The memory controller includes a block manager and an access controller. The block manager manages state information of the plurality of logical blocks. The logical block is a collection of physical blocks from the plurality of memory chips. The state information includes information indicating which of a first state and a second state a logical block is in. The access controller controls the erase operation to the logical blocks. The access controller refers to the state information upon the erase operation, causes the erase operation to be performed on all the collection of physical blocks included in a first logical block, the first logical block being the logical block in the first state, and causes the erase operation to be performed on a part of the collection of physical blocks included in a second logical block and does not cause the erase operation to be performed on rest of the collection of the physical blocks, the second logical block being the logical block in the second state.
Hereafter a memory controller and a memory system according to embodiments will be described in detail with reference to the drawings. Note that these embodiments do not limit the present invention.
The memory system 100 includes the host I/F 2, a NAND flash 10 (hereafter abbreviated as NAND) as nonvolatile semiconductor memory, a memory controller 3, and a data buffer 20. The memory controller 3 is provided with a write controller 31, a read controller 32, a memory interface 33, a data manager 34 and a block manager 40. The block manager 40 is provided with a block allocator 41, a partial block determination unit 42, and a logical block managing table 50. The write controller 31, the read controller 32, and the block allocator 41 function as an access controller. Notably, as the nonvolatile semiconductor memory, memories other than the NAND flash may be used. For example, memories such as three-dimensional laminate type NAND flash memory, RERAM (resistance random access memory), FERAM (Ferroelectric Random Access Memory) and the like may be used.
The NAND 10 stores user data sent from the host 1, management information of the memory system 100, system data and the like. The NAND 10 includes a memory cell array in which a plurality of memory cells is arrayed in a matrix. Each memory cell may be capable of multilevel storage by using an upper page and a lower page. The NAND 10 is configured of a plurality of memory chips #0 to #n, and each memory chip #0 to #n is configured by arranging a plurality of physical blocks being units of data erasing. Further, in the NAND 10, data write and data read are performed for each physical page. A physical block is configured of a plurality of physical pages.
The host I/F 2 receives commands such as a read command and a write command from the host 1 via a communication interface such as SATA (Serial Advanced Technology Attachment), a SAS (Serial Attached SCSI) and the like. An address of data, size, data and the like to be transferred by the command is added to the command. When a command is received from the host 1, the host I/F 2 allocates necessary buffer region on the data buffer 20, and notifies the command to the memory controller 3.
The data buffer 20 temporarily stores data transferred to and from the host 1. As the data buffer 20, for example, SRAM (Static Random Access Memory), or DRAM (Dynamic Random Access Memory) is used.
The memory controller 3 performs processings such as reading and writing on the NAND 10 according to commands notified from the host I/F 2. Further, the memory controller 3 performs storage position management of managing positions where the data is to be stored in the NAND 10, and block management of managing which blocks are to be used to store the data.
In the memory system 100, logical blocks that are virtual blocks are used as managing units of the blocks. A logical block is configured by gathering physical blocks from the plurality of memory chips #0 to #n.
Notably, the physical blocks include defective blocks that do not operate normally due to various causes and thus cannot be used (hereafter referred to as bad blocks) and normal blocks that operate normally and thus can be used, and a logical block is constructed of the normal blocks other than the bad blocks. The bad block may occur due to congenital causes at the production stage, and may occur due to acquired causes during the use of the NAND 10, for example, during data read or during data write.
The states of each logical block include two states of an active state and a free state. A logical block in which valid data is recorded is referred to as an active block. A logical block where valid data is not recorded and that is reusable after being erased is referred to as a free block. Only invalid data is stored in the free block.
In the embodiment, two types of state of the active blocks, namely a full block and a partial block, are further defined. The full block is a logical block that erases all of the physical blocks configuring the logical block and records new data in all of the physical blocks upon allocating a free block as an active block to newly record data. Contrary to this, a partial block handles a part of the physical blocks among the physical blocks configuring the logical block as preserved physical blocks. Erasing and writing are not performed on a preserved physical block. That is the preserved physical block is a physical block to which rest has been given during a certain period. The preserved physical block is restricted of an erasing operation. Accordingly, in the partial block, physical blocks other than the preserved physical block are erased, and data is recorded in the erased physical blocks. The preserved physical block is hereafter referred also as a preserved block.
In
The read controller 32 performs a read process from the NAND 10 according to control of the memory controller 3. The read controller 32 acquires a physical position on the NAND 10 corresponding to a logical address of read data from an address translation table managed by the data manager 34, and performs the read process by notifying the acquired physical position to the memory I/F 33.
The write controller 31 performs a write process from the NAND 10 according to control of the memory controller 3. The write controller 31 acquires position information of a plurality of physical blocks belonging to the logical block to which data is to be written from the block manager 40. The write controller 31 performs the write process by outputting position information of the physical blocks acquired from the block manager 40 and the data read out from the data buffer 20 to the memory I/F 33. The write controller 31 performs a write completion notification to the data manager 34. Due to this, update of the address translation table managed by the data manager 34 is performed.
The memory I/F 33 is a controller that directly controls the NAND according to a control protocol of the NAND 10, and includes an error correction circuit (ECC circuit) 35 and the like. The memory I/F 33 writes the data temporarily stored in the data buffer 20 to the NAND 10 according to the control of the write controller 31 and the like, reads out the data stored in the NAND 10 according to the control of the read controller 32 and the like, and transfers the same to the data buffer 20. The error correction circuit 35 performs an encoding process in an ECC process (error correction process) on the data to be written to the NAND 10, and adds an encoding result to the data. Further, the error correction circuit 35 performs a decoding process (error correction process using an error correction code) in the ECC process on the data read out from the NAND 10.
The block manager 40 performs management of the blocks in the NAND 10, and has the following function (a) to function (c):
(a) To construct the logical block by gathering normal physical blocks from the plurality of memory chips. The block manager 40 constructs the logical block from physical blocks other than the bad blocks for example upon when power is initially turned on in a manufacturing stage. The bad block may occur due to congenital causes at the production stage, and may occur due to acquired causes during the use of the NAND 10 as aforementioned, and the block manager 40 may perform a reconstruction process of the logical block from physical blocks other than the bad blocks even upon using the memory system 100 at a suitable timing such as when the free blocks fall below a predetermined threshold or the like.
(b) To retain management information (state information) of each logical block. The management information is managed by using a logical block managing table 50. The management information includes at least the following information:
Identification information of the plurality of physical blocks configuring the logical block (physical block numbers);
Number of times of erasing (erase count) in logical block units;
Use state (identification information as to being whether an active block or a free block);
In a case of the active block, identification information as to being whether a full block or a partial block; and
In a case of the partial block, identification information of a preserved block within the partial block.
(c) To retain life information indicating variation in a degree of wear of the respective physical blocks in each logical block. This life information (estimated life) is calculated for example by using reliability information of each memory chip and the degree of wear of each physical block. This life information is used for determination by the partial block determination unit 42.
In the first embodiment, a case in which the reliability information (reliability bias) of each memory chip is predeterminedly known upon starting the use of the memory system 100 will be described.
As the life information, for example, as illustrated in
The remaining number of times of erasing possible Nrce is calculated by subtracting a current number of times of erasing Ne of each physical block from a number of times of erasing possible Nce of the physical block belonging to each memory chip as in the following equation (1).
Nrce=Nce−Ne (1)
In the equation (1), the number of times of erasing possible Nce indicates the reliability information of each memory chip, and the current number of times of erasing Ne indicates the degree of wear of each physical block. The number of times of erasing possible Nce of the physical block is predeterminedly known for each of the memory chips to which the physical block belongs, and the number of times of erasing possible Nce of each physical block comes to be of the same value within the same memory chip in a case where the reconstruction of the logical block or an allocation to the partial block is not performed. An initial value of the number of times of erasing Ne is 0. That is, in a case where the remaining number of times of erasing possible Nrce is employed as the estimated life, the reliability information has the same value for the plurality of physical blocks included in the same memory chip, and the degree of wear is a value that changes according to an erase operation on the respective physical blocks.
The number of times of erasing possible Nce may set the number of times of erasing possible Nce of each memory chip based on a test result upon manufacturing the NAND 10. Further, upon an initial startup during the manufacturing of the memory system 100, erasing, writing, reading, and measurement of the error rate upon the reading may be repeatedly performed on one or more sample blocks of each memory chip, and the reliability information of each memory chip included in each memory chip may be determined based on the measured error rate. The number of times of erasing possible Nce of each memory chip is stored predeterminedly in a specific management region in the NAND 10, for example.
In
In
The partial block determination unit 42 determines, in connection to a logical block designated by the block allocator 41, whether to allocate it as a partial block or to allocate it as a full block by using the life information. In the partial block determination unit 42, the life information of the designated logical block is acquired from the block manager 40, and determines that it should be allocated as the partial block in a case where there is a difference of a predetermined threshold C1 or more in the life information of the physical blocks in the logical block. In the partial block determination unit 42, the designated logical block is determined as that it should be allocated as the full block in a case where there is the difference in the life information is smaller than the predetermined threshold C1. In the case where it is determined that the logical block should be the partial block, the difference in the life information of the physical blocks in the logical block is made to be small by selecting one or more physical blocks having the short-lived life information as preserved blocks. For example, the physical block having the life information with the shortest life may be selected, or the selection may be made for a plurality of physical blocks in an order of shorter life in the life information.
The block allocator 41 acquires a determination result on determination of whether to regard as the partial block or the full block from the partial block determination unit 42. In a case where the determination result of regarding as the partial block is notified from the partial block determination unit 42, the identification information of the preserved blocks is also notified from the partial block determination unit 42. In the case where the determination is made to use as the full block, the block allocator 41 erases all of the physical blocks in the logical block, and updates the management information and the life information of the logical block. In the case where the determination is made to use as the partial block, the block allocator 41 does not erase the preserved blocks notified from the partial block determination unit 42 but erases the physical blocks in the logical block other than the preserved block, and updates the management information and the life information of the logical block.
In a case where the logical block allocated by the block allocator 41 is a partial block, the write controller 31 does not perform writing in the preserved blocks but performs writing only on the physical blocks other than the preserved blocks. In a case of the full block that is not a partial block, the write controller 31 performs writing on all of the physical blocks in the logical block.
In step S120, the partial block determination unit 42 determines to use the logical block L as the partial block in a case where a difference between a maximum value and a minimum value of the remaining number of times of erasing possible Nrce that the respective physical blocks in the logical block L have is equal to or more than a predetermined threshold C1, and determines to use the logical block L as the full block in a case where the difference is smaller than the predetermined threshold C1.
In the case where the logical block L is determined to be used as the full block (step S130, NO), the partial block determination unit 42 notifies the block allocator 41 that the logical block L should be used as the full block. The block allocator 41 erases all of the physical blocks in the logical block L (step S160), and updates the management information and the reliability information of the logical block L (step S170). The information to be updated includes the number of times of erasing in the logical block units, the use state (the identification information as to being an active block or a free block), the information indicating being the full block, and the remaining number of times of erasing possible Nrce as the life information.
Further, in the case where the logical block L is determined to be used as the partial block (step S130, YES), the partial block determination unit 42 selects the preserved blocks from the logical block L based on the remaining number of times of erasing possible Nrce as the life information (step S140), and notifies the block allocator 41 that the logical block L should be used as the partial block, and the identification information of the preserved blocks.
For example, the partial block determination unit 42 selects one physical block having the life information with the shortest life as a preserved block. In the case where the remaining number of times of erasing possible Nrce as the life information is employed, the partial block determination unit 42 selects the physical block with the shortest life, that is, with the smallest remaining number of times of erasing possible Nrce as the preserved block.
The block allocator 41 erases the physical blocks other than the preserved blocks in the logical block L, and does not erase the preserved blocks (step S150). Further, the block allocator 41 updates the management information and the reliability information of the logical block L (step S170). The information to be updated includes the number of times of erasing in the logical block units, the use state (the identification information as to being an active block or a free block), the information indicating being the partial block, the identification information of the preserved blocks in the partial block, and the remaining number of times of erasing possible Nrce as the life information. Notably, upon writing, if the logical block is a partial block, writing is not performed on the preserved blocks in the partial block, and the writing is performed only on the physical blocks other than the preserved blocks.
In
Since erase is performed on the physical blocks of the memory chip #3 other than that in the plane p0, the remaining number of times of erasing possible Nrce is decreased by 1.
The logical block #1 illustrates an example of a second-time use. In the logical block #1, the difference of the maximum value and the minimum value of the remaining number of times of erasing possible Nrce of the respective physical blocks is 4999−1999=3000, and is determined as that this difference is larger than the threshold C1, whereby the block is allocated as the partial block. The physical block of the plane p1 of the memory chip #3 with the shortest life, that is, with the minimum remaining number of times of erasing possible Nrce of 1999, is selected as the preserved block. Since erase is performed on the physical blocks of the memory chip #3 other than that in the plane p1, the remaining number of times of erasing possible Nrce is decreased by 1.
The logical block #2 has the number of times of erasing of 1000, and illustrates a state in which rewrite of the respective physical blocks has progressed. In the logical block #2, the difference of the maximum value and the minimum value of the remaining number of times of erasing possible Nrce of the respective physical blocks is 4000−1500=2500, and this difference 2500 is determined as being smaller than the threshold C1. Thus, the logical block #2 is allocated as the full block.
Nrre=Ncemax−Nce (2)
As described above, the number of times of erasing possible Nce of the physical block is known in advance for each memory chip to which the physical block belongs, and the number of times of erasing possible Nce of the physical blocks in the same memory chip comes to be of the same value when the reconstruction of the logical block or the allocation to a partial block is not performed.
The remaining number of times of rest Nrre is decremented by 1 each time the physical block is allocated as a preserved block. Accordingly, the current remaining number of times of rest Nrre is derived by subtracting a current number of times of rest from the initial value of the remaining number of times of rest Nrre.
The initial value of the remaining number of times of rest Nrre expresses the reliability information for each memory chip, and the current number of times of rest expresses the degree of wear of each physical block.
That is, the remaining number of times of rest of the physical block is obtained by using the reliability information of the physical block, and the number of times of erase operation performed on the physical block.
Since the remaining number of times of rest Nrre is obtained based on the number of times of erasing possible Nce of the physical blocks obtained in memory chip units, similar to the remaining number of times of erasing possible Nrce, the value thereof is known at the time of starting the use of the memory system 100.
In
The logical block #1 illustrates the example of the second-time use. In the logical block #1, the difference of the maximum value and the minimum value of the remaining number of times of rest Nrre of the respective physical blocks is 3000−0=3000, and is determined as that the difference is larger than the threshold C1, whereby the block is allocated as the partial block. The physical block of the plane p1 of the memory chip #3 with the shortest life, that is, with the maximum remaining number of times of rest Nrre of 3000, is selected as the preserved block. Since resting is performed on the physical block in the plane p1 of the memory chip #3, the remaining rest number Nrre is decreased by 1.
The logical block #2 has the number of times of erasing of 1000, and illustrates the state in which the rewrite of the respective physical blocks has progressed. In the logical block #2, the difference of the maximum value and the minimum value of the remaining number of times of rest Nrre of the respective physical blocks is 2500−0=2500, and this difference 2500 is determined as being smaller than the threshold C1. Thus, the logical block #2 is allocated as the full block.
Accordingly in the first embodiment, the physical block belonging to the memory chip with low reliability is used as the partial block that is temporarily unused and put to rest among the physical blocks in the logical block so as to make a difference in the number of times of erasing depending on the reliability, whereby the number of times of erasing of the physical blocks with low reliability in the logical block can be suppressed, and the physical blocks with high reliability can effectively be used up to their number of times of erasing possible before the low-reliability physical blocks are damaged, and it becomes possible to use up all of the physical blocks in the logical block thoroughly through their lives. Further, by making logical blocks to be deficient in turns instead of making all the logical blocks deficient, an operable capability can be maintained, and at the same time a life management of the logical blocks that takes reliability bias among the memory chips into consideration can be performed.
Notably, in the above description, although a free block was allocated as a partial block when the difference in the life information among the respective physical blocks exceeds the threshold, the preserved block may be allocated only to some of the memory chips with low reliability. In this case, a configuration that only retains the life information related to the physical blocks belonging to such memory chips (hereafter referred to as preservation-candidates) is possible. In order to make the remaining number of times of rest of the preservation-candidate memory chips not to be smaller than that of the memory chips other than the preservation-candidates (that is, to prevent from putting them to rest too often), the threshold C1 may be set to be equal to or larger than the remaining number of times of rest of the memory chips other than the preservation-candidates. The minimum value of the remaining number of times of rest is retained at 0. Notably, some of the physical blocks with the life information that is equal to or less than a predetermined value may be regarded as preservation-candidate physical blocks, and estimated lives thereof may be managed instead of managing the life information of the preservation-candidate blocks in the memory chip units.
For example, in a storage having a combination of memory chips similar to
Further, if the remaining number of times of rest of the preservation-candidate memory chip is set based on the life of the memory chip with the lowest reliability other than the preservation-candidates instead of setting the life of the memory chip with the highest reliability among all of the memory chips as a reference, a value that subtracts the number of times of erasing possible of the respective preservation-candidates from the minimum value of the number of times of erasing possible of the memory chips other than the preservation-candidates may be set as the initial value of the remaining number of times of rest. The threshold C1 is set to 0, and the minimum value of the remaining number of times of rest is set to 0. For example, as mentioned earlier, in the case of setting only the memory chip #3 as the preservation-candidate in
Accordingly, in a case where preservation-candidate blocks are included in the logical block to be allocated upon the allocation of the logical block from the free block to the active block, the logical block is allocated as a partial block managing the preservation-candidate blocks as preserved blocks until when the remaining number of times of erasing possible or the remaining number of times of rest reaches a threshold, and the logical block is allocated as a full block in which all of the physical blocks including the preservation-candidate blocks are used after when the life information reaches the threshold.
With respect to this, in
Further, in the embodiment, the reliability (number of times of erasing possible Nce) of each memory chip is estimated in advance in the manufacturing stage, and the threshold C1 is set for the partial block determination; thus, the partial block determination is possible from the beginning of the use of the memory system. Further, in the memory system 100, it is preferable that all of the physical blocks reach their number of times of erasing possible Nce substantially at the same time in the end. Due to this, it becomes possible to use up all of the respective physical blocks in the logical block through their lives if the differences in the remaining number of times of erasing possible among the physical blocks in the logical block can be controlled to be similar.
In the second embodiment, a case in which reliability bias between memory chips is unknown upon beginning use of a memory system 100, reliability information having correlation with wear of physical blocks belonging to each memory chip is employed as life information of the respective physical blocks, and management of partial blocks is performed by dynamically acquiring the reliability information will be described. Specifically, an error correction is performed by an error correction circuit 35 upon reading a block, a bit error rate (BER) thereof is acquired, and an average bit error rate is retained as the life information. As the life information, other than the above, a rate by which correction becomes incapable in the error correction (frame error rate: FER) may be used. Other than the above, if erase time or write time has correlation with the wear of the physical blocks, a value thereof may be employed as the life information.
The embodiment operates such that reliability information dynamically acquired and having correlation with wear is leveled. Hereafter, a specific operation in a case of using the BER as the life information will be described. Upon an initial start of the memory system 100, a block manager 40 initializes the BER of all of physical blocks managed by a logical block managing table 50 to 0. A partial block determination unit 42 determines a partial block in a case where a difference of the maximum value and the minimum value of the BER is greater than a predetermined threshold C2 upon allocating a free block to an active block. The partial block determination unit 42 selects a block with the maximum BER within the partial block as a preserved block. A read controller reads a part of pages of the respective physical blocks after data is written to a logical block (full block or partial block), the BER is acquired by performing the error correction by the error correction circuit 35, and the BER of the respective physical blocks is notified to the block manager 40. The block manager 40 updates the logical block managing table 50 and updates the BER of the respective physical blocks in the logical block to which the writing had been performed.
A logical block #N illustrates a state just after the initialization, and an average number of error bit of the respective physical blocks is 0. A logical block #0 and a logical block #1 are allocated as full blocks, since their number of error bit does not reach the threshold C2 (=9). In a logical block #2, since the average number of error bit of the physical block belonging to a plane p0 of a memory chip #3 is 10 and the difference with the physical block belonging to a plane p0 of the memory chip #1 exceeds 9, it is allocated as a partial block. The physical block in the plane p0 of the memory chip #3 with the largest average number of error bit is selected as a physical block with shortest life, and is set as the preserved block.
Accordingly, in the second embodiment, even in the case where the life information is not known in advance, partial block determination can be performed accurately especially when an end of life is nearing, by determining the preserved block that is not to be used while measuring the life information dynamically.
In the third embodiment, an actual capacity of an operable NAND 10 is secured by restricting a partial block number existing simultaneously in a memory system. In a first method, an allocation number of the partial blocks is restricted. In a second method, the partial block is copied and released by copying the valid data into a full block upon a garbage collection to decrease a partial block number.
The first method will be described. A number of allowed partial block is a number of partial block which allocation is allowed simultaneously in a memory system 100, and a number that would ensure that operation can be continued by storing data with a capacity provided to a host 1 in a NAND 10 even when a decrease of the capacity by the partial blocks is subtracted is set thereto. The number of allowed partial block and a total number of partial block at that time are retained and managed by a block manager 40.
The first method will be described in detail by using
If the total number of partial block<the number of allowed partial block is satisfied and the allocation of the partial block is possible (step S210: Yes), the block allocator 41 sends the identification information of the selected logical block L (for example, the logical block number) to the partial block determination unit 42 (step S240). The partial block determination unit 42 acquires the life information of the logical block L from the block manager 40, and determines which of the full block and the partial block should the logical block L be used as based on the acquired life information of the logical block L (step S250).
In a case where the logical block L is determined as that it should be used as the full block (step S260, NO), the partial block determination unit 42 notifies the block allocator 41 that the logical block L should be used as the full block. The block allocator 41 erases all of physical blocks in the logical block L (step S220), and updates management information and reliability information of the logical block L (step S230).
Further, in a case where the logical block L is determined as that it should be used as the partial block (step S260, YES), the partial block determination unit 42 selects a preserved block from the logical block L based on the life information (step S270), and notifies the block allocator 41 that the logical block L should be used as the partial block, and the identification information of the preserved block. The block allocator 41 erases the physical blocks other than the preserved block in the logical block L, and does not erase the preserved block (step S280). Further, the block allocator 41 increments the total number of partial block by 1 (step S290). Moreover, the block allocator 41 updates the management information and the life information of the logical block L (step S230). The information to be updated includes the number of times of erasing in the logical block units, the use state (the identification information as to being an active block or a free block), the information indicating being the partial block, the identification information of the preserved block in the partial block, and the life information.
Accordingly, in the procedure of
The second method will be described in detail by using
The second method will be described in detail by using
In a case where this logical block L is determined as being for the host write-use (step S310, Yes), the block allocator 41 sends the identification information (for example, the logical block number) of the logical block L to the partial block determination unit 42. The partial block determination unit 42 acquires the life information of the logical block L from the block manager 40 (step S340). The partial block determination unit 42 determines which of the full block and the partial block should the logical block L be used as based on the acquired life information of the logical block L (step S350).
In the case where the logical block L is determined to be used as the full block (step S360, NO), the partial block determination unit 42 notifies the block allocator 41 that the logical block L should be used as the full block. The block allocator 41 erases all of the physical blocks in the logical block L (step S320), and updates the management information and the life information of the logical block L (step 330).
Further, in a case where the logical block L is determined as that it should be used as the partial block (step S360, YES), the partial block determination unit 42 selects a preserved block from the logical block L based on the life information (step S370), and notifies the block allocator 41 that the logical block L should be used as the partial block, and the identification information of the preserved block. The block allocator 41 erases the physical blocks other than the preserved blocks in the logical block L, and does not erase the preserved blocks (step S380). Moreover, the block allocator 41 updates the management information and the life information of the logical block L (step S330). The information to be updated includes the number of times of erasing in the logical block units, the use state (the identification information as to being an active block or a free block), the information indicating being the partial block, the identification information of the preserved block in the partial block, and the life information.
Accordingly, in this embodiment, since the allocation of the partial block is limited to the host write-use, capacity control becomes easy.
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. 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.
This application is based upon and claims the benefit of priority from U.S. Provisional Patent Application No. 61/874,425, filed on Sep. 6, 2013; the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61874425 | Sep 2013 | US |