A memory system includes a plurality of non-volatile memory chips divided into a plurality of storage areas, and a memory controller that is connected to the plurality of memory chips to control an operation of each memory chip. The memory controller is configured to set an arbitration period separately for each of the respective storage areas, and to execute a process to store data into the storage areas one after another in accordance with the arbitration period set therefor.
|
8. A method of executing a process to store data in a plurality of non-volatile memory chips of a memory system, comprising:
buffering data received from a host in a volatile memory;
setting a plurality of arbitration periods, wherein each of the plurality of arbitration periods is for a corresponding one of the non-volatile memory chips and:
each of the plurality of arbitration periods is set according to an expected length of time to complete a process to store data buffered in the volatile memory into the corresponding non-volatile memory chip, and
each of the plurality of arbitration periods is a time period during which issuance of an instruction to the corresponding non-volatile memory chip is permitted, and after expiration of which the issuance is not permitted;
determining an order of a plurality of instructions to be issued sequentially to the non-volatile memory chips in association with the arbitration periods; and
issuing the plurality of instructions one after another to the non-volatile memory chips, respectively, in accordance with the determined order and the respective arbitration periods set therefor, wherein each of the instructions is for storing the data buffered in the volatile memory into the corresponding non-volatile memory chip, wherein
the plurality of non-volatile memory chips includes at least first and second memory chips, and
issuing the plurality of instructions further comprises:
setting a first arbitration period for the first memory chip and issuing, in accordance with the determined order, a first instruction to the first memory chip to store first data buffered in the volatile memory into the first memory chip,
setting a second arbitration period for the second memory chip and issuing, in accordance with the determined order, a second instruction to the second memory chip to store second data buffered in the volatile memory into the second memory chip, the second arbitration period being different from the first arbitration period,
during the first arbitration period, determining whether to issue a third instruction to the first memory chip to store third data buffered in the volatile memory into the first memory chip, wherein the third instruction is not issued because the first memory chip continues to perform a first process to store the first data therein at the end of the first arbitration period; and
during the second arbitration period, determining whether to issue a fourth instruction to the second memory chip to store fourth data buffered in the volatile memory into the second memory chip, wherein the fourth instruction is issued because the second memory chip has completed the second process by the end of the second arbitration period.
1. A memory system comprising:
a volatile memory in which data received from a host is buffered;
a plurality of non-volatile memory chips; and
a memory controller that is connected to the plurality of non-volatile memory chips to control the plurality of non-volatile memory chips,
wherein the memory controller is configured to:
set a plurality of arbitration periods, wherein each of the plurality of arbitration periods is for a corresponding one of the non-volatile memory chips and:
each of the plurality of arbitration periods is set according to an expected length of time to complete a process to store data buffered in the volatile memory into the corresponding non-volatile memory chip, and
each of the plurality of arbitration periods is a time period during which the memory controller is permitted to issue an instruction to the corresponding non-volatile memory chip, and after expiration of which the memory controller is not permitted to issue the instruction to the corresponding non-volatile memory chip,
determine an order of a plurality of instructions to be issued sequentially to the non-volatile memory chips in association with the arbitration periods, and
issue the plurality of instructions one after another to the non-volatile memory chips, respectively, in accordance with the determined order and the respective arbitration periods set therefor, wherein each of the instructions is for storing the data buffered in the volatile memory into the corresponding non-volatile memory chip, and
wherein the plurality of non-volatile memory chips includes at least first and second memory chips and the memory controller is further configured to:
set a first arbitration period for the first memory chip and issue, in accordance with the determined order, a first instruction to the first memory chip to store first data buffered in the volatile memory into the first memory chip,
set a second arbitration period for the second memory chip and issue, in accordance with the determined order, a second instruction to the second memory chip to store second data buffered in the volatile memory into the second memory chip, the second arbitration period being different from the first arbitration period,
during the first arbitration period, determine whether to issue a third instruction to the first memory chip to store third data buffered in the volatile memory into the first memory chip, wherein
the third instruction is not issued if the first memory chip continues to perform a first process to store the first data therein at the end of the first arbitration period; and
the third instruction is issued if the first memory chip has completed the first process by the end of the first arbitration period; and
during the second arbitration period, determine whether to issue a fourth instruction to the second memory chip to store fourth data buffered in the volatile memory into the second memory chip, wherein
the fourth instruction is not issued if the second memory chip continues to perform a second process to store the second data therein at the end of the second arbitration period; and
the fourth instruction is issued if the second memory chip has completed the second process by the end of the second arbitration period.
15. A memory controller for a memory system including a volatile memory in which data received from a host is buffered and a plurality of non-volatile memory chips, said memory controller comprising:
a non-volatilization instruction issuing circuit configured to:
store a parameter table in which a plurality of parameter values for getting a plurality of arbitration periods is stored, wherein each of the plurality of arbitration periods is for a corresponding one of the non-volatile memory chips and;
each of the plurality of arbitration periods is set according to an expected length of time to complete a process to store data buffered in the volatile memory into the corresponding non-volatile memory chips and
each of the plurality of arbitration periods is a time period during which issuance of an instruction to the corresponding non-volatile memory chips is permitted, and after expiration of which the issuance is not permitted;
determine an order of a plurality of instructions to be issued sequentially to the non-volatile memory chips in association with the arbitration periods, and
issue the plurality of instructions for storing the data buffered in the volatile memory into the non-volatile memory chips; and
a selection circuit configured to select an arbitration period from the plurality of arbitration periods for each of the plurality of non-volatile memory chips according to a corresponding one of the plurality of parameter values stored in the non-volatilization instruction issuing circuit, wherein
the instructions are issued one after another to the non-volatile memory chips, respectively, in accordance with the determined order and the plurality of arbitration periods selected for each of the plurality of non-volatile memory chips,
the plurality of non-volatile memory chips includes at least first and second memory chips and
the instruction issuing circuit is further configured to:
set a first arbitration period for the first memory chip and issue, in accordance with the determined order, a first instruction to the first memory chip to store first data buffered in the volatile memory into the first memory chip,
set a second arbitration period for the second memory chip and issue, in accordance with the determined order, a second instruction to the second memory chip to store second data buffered in the volatile memory into the second memory chip, the second arbitration period being different from the first arbitration period,
during the first arbitration period, determine whether to issue a third instruction to the first memory chip to store third data buffered in the volatile memory into the first memory chip, wherein
the third instruction is not issued if the first memory chip continues to perform a first process to store the first data therein at the end of the first arbitration period; and
the third instruction is issued if the first memory chip has completed the first process by the end of the first arbitration period; and
during the second arbitration period, determine whether to issue a fourth instruction to the second memory chip to store fourth data buffered in the volatile memory into the second memory chip, wherein
the fourth instruction is not issued if the second memory chip continues to perform a second process to store the second data therein at the end of the second arbitration period; and
the fourth instruction is issued if the second memory chip has completed the second process by the end of the second arbitration period.
2. The memory system according to
3. The memory system according to
4. The memory system according to
5. The memory system according to
6. The memory system according to
7. The memory system according to
the plurality of non-volatile memory chips are specified with chip numbers, and the order is determined to be an ascending order of the chip numbers.
9. The method according to
sequentially issuing the respective instructions to store the data buffered in the volatile memory into the first through the N-th memory chips.
10. The method according to
11. The method according to
storing a set of arbitration periods of different lengths, wherein
the arbitration period for each of the plurality of non-volatile memory chips is set by selecting one of the arbitration periods in the set.
12. The method according to
13. The method according to
14. The method according to
the plurality of non-volatile memory chips are specified with chip numbers, and the order is determined to be an ascending order of the chip numbers.
16. The memory controller according to
17. The memory controller according to
a register connected to the selection circuit and storing the plurality of arbitration periods.
18. The memory controller according to
19. The memory controller according to
20. The memory controller according to
the plurality of non-volatile memory chips are specified with chip numbers, and the order is an ascending order of the chip numbers.
|
This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2019-050808, filed Mar. 19, 2019, the entire contents of which are incorporated herein by reference.
Embodiments described herein relate generally to a memory system.
In a non-volatile semiconductor memory such as a NAND flash memory including a plurality of memory chips, when there is a difference in quality among the memory chips, a difference may also occur in the time required for non-volatilization processing of data stored in volatile memory.
Embodiments provide a memory system capable of executing non-volatilization processing with good performance in the memory system equipped with a plurality of memory chips even when individual memory chips of the memory system have differences in quality.
In general, according to one embodiment, a memory system includes a plurality of non-volatile memory chips divided into a plurality of storage areas, and a memory controller that is connected to the plurality of memory chips to control an operation of each memory chip. The memory controller is configured to set an arbitration period separately for each of the respective storage areas, and to execute a process to store data into the storage areas one after another in accordance with the arbitration period set therefor.
Next, the present embodiment will be described with reference to drawings. In the description of the drawings described below, the same or similar parts are given the same or similar reference numerals. However, it should be noted that the drawings are schematic, and the relationship between the thickness and the planar dimension of each component, and the like are different from actual ones. Therefore, specific thicknesses and dimensions should be determined in consideration of the following description. Moreover, parts having different dimensional relationships and proportions are included among the drawings.
In addition, the embodiment described below provides an example of devices and methods that embody a technical idea, and do not require the specific material, shape, structure, arrangement, and the like of each component. This embodiment may be modified in various manners within the scope of the claims.
For non-volatile storage devices (also referred to as memory systems), such as solid state drives (SSDs), multiple non-volatile memory chips may be used. Examples of the non-volatile memory include a NAND flash memory, a resistive random access memory (ReRAM), a ferroelectric random access memory (FeRAM), and a magnetoresistive random access memory (MRAM).
For example, when NAND flash memory chips of a new product are used, product quality varies. When a large capacity buffer using a dynamic random access memory (DRAM) or the like is mounted, it is possible to mask the variation in quality by having a large size buffer capacity. For example, when data is constantly transferred from the host at maximum speed, even if the performance of non-volatilization processing is insufficient, if a large capacity buffer is provided, the transfer performance of the DRAM is higher than the transfer performance of the NAND flash memory, and therefore data from the host can be received at high speed up to the size of the large capacity buffer. Therefore, it is possible to mask the variation in quality of the NAND flash memory in such cases.
On the other hand, when a large capacity buffer is not provided, the performance of the storage device depends on how smoothly the non-volatilization processing is performed while using a limited buffer memory of the memory controller.
For example, the controller of the storage device has an arbitration function of smoothly executing the non-volatilization processing in units of chips.
Usually, memory chips to be targets of non-volatilization processing are switched in order of chips (for example, in ascending order of chip numbers), but if a previous non-volatilization processing is not completed according to an original order, one or more of the memory chips may be excluded as targets of the non-volatilization processing after a predetermined arbitration period, and the non-volatilization processing may be delayed (for example, delayed by one cycle).
If the quality of the combined memory chip is uniform, even when an arbitration period is set identically for each memory chip is used, it is possible to schedule the non-volatilization processing so that such a cycle-delayed memory chip is avoided. However, if the quality of each memory chip is not uniform, when the arbitration period is set identically for each memory chip, cycle-delayed memory chips can appear, and as a result, the overall performance of the storage device will be degraded.
Therefore, in the present embodiment, paying attention to the variation in time required for the non-volatilization processing (hereinafter referred to as “non-volatilization execution time”) for each memory chip of the NAND flash memory, the non-volatilization arbitration period is set for each predetermined unit (for example, set per memory chip) so that a memory chip having a relatively long non-volatilization execution time for non-volatilization does not negatively impact the performance of other memory chips having a relatively short non-volatilization execution time. As a result, an event which is not in accordance with a non-volatilization arbitration period is less likely to occur, and the overall performance of the storage device is maintained.
The non-volatilization arbitration period is also referred to herein simply as an arbitration period. The non-volatilization arbitration period may be referred to as a non-volatilization grace period or grace period, or a non-volatilization wait period or wait period.
Memory System and Memory Controller
A schematic block configuration of a memory system 100 and a memory controller 200 according to the embodiment is expressed as shown in
The memory system 100 according to the embodiment includes the memory controller 200 and a plurality of memory chips 208, as shown in
The memory controller 200 according to the embodiment is connectable to the host 10 as shown in
The host 10 includes, for example, a wide range of electronic devices such as servers, laptop PCs, desktop PCs, tablet PCs, mobile phones, scanners, printers, cameras, home theaters, game devices, set-top boxes, navigation systems, electronic musical instruments, and the like as targets.
As shown in
The host I/F circuit 209 is an interface circuit that performs connection with the external host 10. The host I/F circuit 209 conforms to, for example, serial at attachment (SATA), serial attached SCSI (SAS), PCI Express (PCIe), NVM Express (NVMe), or the like. The DMA controller 202 is a controller that performs data transfer. The CPU 203 is a central processing unit that performs control and operation setting of each unit of the memory controller 200. The internal bus matrix 204 is a bus signal line connecting between each functional block in the memory controller 200. The internal memory 205 is, for example, a static random access memory (SRAM), and is a work memory for the CPU 203, for example. The internal memory 205 stores a logical-to-physical chip conversion table 251 and a logical-to-physical address conversion table 252 which will be described later with reference to
When data necessary for the non-volatilization processing is buffered in the data buffer 206, the non-volatilization data issuing circuit 201 has a function of generating non-volatilization address information and other attribute information necessary for writing to transmit a non-volatilization instruction to the NAND controller 207. The non-volatilization data issuing circuit 201 includes a sequencer 211, a parameter table 212, a parameter transfer circuit 213, and a program generator 214.
The parameter transfer circuit 213 transmits an index value to be used when selecting the setting value to be referred to by the NAND controller 207 for each of the predetermined units in advance before starting the non-volatilization processing, to the NAND controller 207. Here, the “predetermined unit” of the memory chip 208 is defined in units of a memory chip or in units of one physical area among a plurality of physical areas in each of the memory chips 208. Further, the “sequence” of the non-volatilization processing is a series of non-volatilization processing executed in order (for example, in ascending order of chip numbers) for each of the predetermined units.
The non-volatilization data issuing circuit 201 transmits the write data transferred from the host 10 and stored in the data buffer 206, and the logical-to-physical chip conversion table 251 and the logical-to-physical address conversion table 252 updated and stored in internal memory 205 which will be described with reference to
As shown in
When instructing the non-volatilization processing of the plurality of memory chips 208, the non-volatilization data issuing circuit 201 transmits the index value in the parameter table 212 to the NAND controller 207 via the parameter transfer circuit 213 by using the program generator 214.
When executing the non-volatilization processing on the plurality of memory chips 208 instructed by the non-volatilization data issuing circuit 201, the NAND controller 207 arbitrates the non-volatilization processing for each of the predetermined units in accordance with the arbitration period indicated by the arbitration period number corresponding to the index value transmitted from the non-volatilization data issuing circuit 201.
That is, the non-volatilization data issuing circuit 201 supplies an arbitration period setting that may be set for each series of non-volatilization processing which is sequentially executed for each of the predetermined units, to the NAND controller 207. As a result, even when there is a variation in quality for each memory chip 208, the non-volatilization processing can be arbitrated so that the cycle-delayed memory chip 208 is avoided. Therefore, the influence of the difference in quality between the memory chips 208 can be minimized, and the non-volatilization processing can be performed without degrading the performance of the storage device.
Here, if the data used for the non-volatilization processing is prepared and a previous cycle of non-volatilization processing for the memory chip 208 to be a target of non-volatilization processing is completed, within the arbitration period of the memory chip 208 to be the target of non-volatilization processing, the NAND controller 207 continues the non-volatilization processing for the memory chip 208.
On the other hand, when the data for the non-volatilization processing is not ready for storage, or the previous cycle of non-volatilization processing for the memory chip 208 to be a target of non-volatilization processing is not completed, within the arbitration period of the memory chip 208 to be the target of non-volatilization processing, the NAND controller 207 skips the non-volatilization processing for the memory chip 208.
Also, the NAND controller 207 includes index values 270 transmitted from the non-volatilization data issuing circuit 201, a non-volatilization target chip number table 272 for storing chip numbers for non-volatilization, a register 271 that holds index values and arbitration period numbers in association with each other, a selector 273 that selects the arbitration period number held in the register 271 for each of the predetermined units with reference to the index value 270 selected corresponding to the chip number of the non-volatilization target chip number table 272, and an arbitration period setting circuit 275.
The NAND controller 207 is a functional block that controls data non-volatilization processing and arbitration thereof for the memory chip 208. The NAND controller 207 selects the index value 270 of the non-volatilization arbitration period in the chip number of the memory chip 208 and associates the index value 270 with the index value in the register 271. The register 271 and the selector 273 are used to switch the index value 270 for each predetermined unit. For example, the NAND controller 207 passes the arbitration period number selected by the selector 273 in association with the chip number of the non-volatilization target chip number table 272 and the index value in the register 271 for each of the predetermined units to the arbitration period setting circuit 275. The arbitration period setting circuit 275 arbitrates the non-volatilization processing of the memory chip 208 for each of the predetermined units in accordance with the arbitration period number for each of the predetermined units.
In
The arrangement of the index values is not limited to the order of the numbers of the memory chips 208 (ascending order in the example of
The arbitration period setting parameter set held in the parameter table 212 of the non-volatilization data issuing circuit 201 and transmitted to the NAND controller 207 is not limited to only one set. For example, even in the same chip, if the memory address changes, the characteristics may also change, and therefore, it is also possible to prepare plural sets of arbitration period setting parameters corresponding to a plurality of physical area units of the memory chip 208, respectively.
When plural sets of arbitration period setting parameters are used, an example of a processing procedure is expressed as shown in
As shown in
Non-Volatilization Control Processing: Non-Volatilization Data Issuing Unit
A flowchart of an example of non-volatilization control processing by the non-volatilization data issuing circuit 201 of the memory controller 200 according to the embodiment is shown in
(a) First, when an operation is started in step S100, the non-volatilization data issuing circuit 201 sets a first set of arbitration period setting parameters in the parameter table 212 in advance.
(b) Next, in step S101, the non-volatilization data issuing circuit 201 transfers the set of arbitration period parameters including the index value in the parameter table 212 to the NAND controller 207 together with the transfer instruction.
(c) Next, in step S102, the non-volatilization data issuing circuit 201 shifts to a state of waiting for an instruction to start the non-volatilization processing, for example, a non-volatilization command from the host 10.
(d) Next, in step S103, when a command to start non-volatilization processing is received from host 10 via the host I/F circuit 209 (that is, when the result of the determination in step S103 is YES), the method flows to step S104, and the CPU 203 starts to transfer non-volatilization target data to the NAND controller 207. More specifically, the non-volatilization data issuing circuit 201 that received an instruction to start non-volatilization processing from the CPU 203 may transfer non-volatilization target data to the NAND controller 207 by using the DMA controller 202.
In response to this, the NAND controller 207 executes non-volatilization control processing as exemplified in
Non-Volatilization Control Processing: NAND Controller
A flowchart showing an example of non-volatilization control processing by the NAND controller 207 of the memory controller 200 according to the embodiment is shown in
(A) First, at the start of the first cycle of processing, the NAND controller 207 starts processing from the set of arbitration period setting parameters in which the parameter set number transferred in advance from the non-volatilization data issuing circuit 201 is 0 (step S200) and the non-volatilization chip number is 0 (step S201).
(B) Next, in step S202, the NAND controller 207 shifts to a state of waiting for non-volatilization target data that corresponds to the memory chip whose chip number is 0.
(C) Next, in step S203, when the non-volatilization target data has arrived (for example, the result of the determination in step S202 is YES), the NAND controller 207 determines the arbitration of the non-volatilization processing for the corresponding memory chip 208. Here, “determination of arbitration” is determination of whether or not the non-volatilization processing can be performed on the corresponding memory chip 208. The arbitration period to be used at that time is a period set according to the “arbitration period number (Arbitration_Period No.)” determined from the index value of the arbitration period setting parameter set and the non-volatilization target chip number table 272 as described above. More specifically, the arbitration period number is selected by using the index value indicated by the non-volatilization target chip number (NAND_CHIP_NUM) (step S201) among the parameter sets indicated by the parameter set number (PARAM_SET_NUM) (step S200). Then, the arbitration period value indicated by the arbitration period number is selected, and the arbitration determination is made.
(D) Next, in steps S204 and S205, in the case of the first cycle of non-volatilization processing, when non-volatilization data arrives, it is possible to perform non-volatilization processing on the corresponding memory chip 208, that is, the NAND controller 207 is not in the state of waiting for the first cycle of non-volatilization processing to be completed, proceeding to step S207, the NAND controller 207 immediately executes the non-volatilization processing.
That is, with regard to the first cycle of non-volatilization processing, since non-volatilization processing is not performed prior to that, there is no influence of the non-volatilization execution time of the NAND chip itself. Therefore, when non-volatilization data arrives, non-volatilization can be performed immediately.
(E) Next, in step S205, when non-volatilization data has not arrived, proceeding to step S206, the NAND controller 207 waits for arrival of non-volatilization data for a predetermined time, and then returns to step S203 to retry until the arbitration period is over.
(F) Next, when the first cycle of non-volatilization processing for the corresponding memory chip 208 is completed, proceeding to step S208, the NAND controller 207 adds 1 to the non-volatilization target chip number (that is, sets a next memory chip 208 as a new target) and performs the processing in steps S203 to S207. This processing is repeated by the number of components of the memory chip 208 (step S209).
(G) Next, for the second and subsequent cycles, when the previous non-volatilization processing is not completed, even if non-volatilization data arrived, the memory chip 208 may be affected by the non-volatilization execution time of the memory chip 208 itself.
(H) In the determination processing of step S204, until the arbitration period is over (that is, when the result of the determination in step S204 is NO), the NAND controller 207 determines whether the non-volatilization processing can be performed on the corresponding memory chip 208 (step S205), and if a non-volatilization condition is not satisfied (that is, when the result of the determination in step S205 is NO), the NAND controller 207 continues to determine whether or not the non-volatilization condition is satisfied until the arbitration period is over (step S205). If it is possible to execute the non-volatilization processing (that is, when the result of the determination in step S205 is YES), the NAND controller 207 immediately executes non-volatilization processing (step S207).
(I) In the determination processing of step S204, when the arbitration period is over (for example, when the result of the determination in step S204 is YES), for that memory chip 208, the processing of steps S205 to S207 is skipped (that is, the corresponding memory chip 208 is delayed by a cycle), and proceeding to step S208, where the NAND controller 207 shifts to the non-volatilization processing of the next memory chip 208. For the cycle-delayed memory chip 208, the non-volatilization processing is retried during the next cycle.
(J) In step S209, if the non-volatilization target chip number (that is, the number of chips for which non-volatilization processing is completed) exceeds the number of mounted memory chips 208 (that is, when the result of the determination in step S209 is YES), in step S210, the NAND controller 207 adds 1 to the parameter set number (PARAM_SET_NUM) specifying the arbitration period setting parameter set to be used to select a next parameter set.
(K) Next, in step S211, if the parameter set number (PARAM_SET_NUM) does not exceed the number of parameter sets that can be set (that is, when the result of the determination in step S211 is NO), returning to step S201, the NAND controller 207 performs non-volatilization processing by using the next parameter set.
(L) In step S211, if the parameter set number (PARAM_SET_NUM) exceeds the number of parameter sets that can be set (that is, when the result of the determination in step S211 is YES), returning to step S200, the NAND controller 207 returns the parameter set number (PARAM_SET_NUM) to “0” (initial value) (that is, returns to the first cycle of processing).
Example of Non-Volatile Control Process According to Comparative Example
A timing chart of the non-volatilization control processing (case where non-volatilization processing is completed) in the comparative example is expressed as shown in
In the drawing, “ISSUE” indicates a period during which non-volatilization target data is stored in the data buffer 206 and further transferred by the NAND controller 207. Further, in the drawing, “PROG” indicates a period (PROG_PERIOD) during which the non-volatilization processing is performed on the corresponding memory chip 208.
In the comparative example, as shown in
In an example where the problem of cycle delay does not occur, as shown in
In an example where the problem of cycle delay occurs, as shown in
When RAID is configured with a plurality of chips, to generate parity information for error correction for a chip, for example, the non-volatilization processing needs to be completed for all non-volatilization target data in a cycle. When parity information is generated for every cycle, for example, it is not possible to generate parity information for error correction by using the second cycle of non-volatilization processing target data at the time when non-volatilization target data for which non-volatilization processing is not completed remains due to cycle delay in the second cycle of the chip 2. In a state where parity information for error correction in the second cycle cannot be generated, the non-volatilization processing cannot be performed on non-volatilization target data in the third and subsequent cycles. This is because, in order to generate parity information for error correction in the second cycle, it is necessary to leave the second cycle of non-volatilization target data in the data buffer 206, and as a result, the available memory of the data buffer 206 becomes small, and it is difficult to perform non-volatilization processing on the third and subsequent cycles.
In the comparative example, since the length of the arbitration period is the same for each chip, when the arbitration period is set to be long in accordance with the non-volatilization execution period of the chip 0 in order to avoid the cycle delay of the chip 0, the arbitration period of all other memory chips 208 becomes longer, leading to performance degradation.
Example of Non-volatilization Control Processing According to Embodiment
A timing chart showing an example of the non-volatilization control process in the embodiment is expressed as shown in
In the embodiment, the arbitration period is set for each of the predetermined units. In the comparative example, an arbitration period having a uniform length was used for every chip, but in the embodiment as shown in
The arbitration period assigned here is divided into a plurality of types (three types in the example of FIG. 11) according to the quality of each memory chip 208 as illustrated in
As shown in
On the other hand, as shown in
In the embodiment, the arbitration period is set for each predetermined unit, that is, for each memory chip 208 or for each of physical areas of each memory chip 208. As a result, an appropriate arbitration period can be set for a memory chip that is inferior in performance to other memory chips and that requires a longer time for non-volatilization processing.
A timing chart showing an example of the non-volatilization control processing in the embodiment is expressed as shown in
In the example of
For the second and subsequent cycles, ARBIT_PERIOD[2] is set for the chip 0, ARBIT_PERIOD[1] is set for the chip 3, and ABIT_PERIOD[0] is set for other chips 1 and 2, and 4 to 7. As described above, ARBIT_PERIOD[0] is the shortest period (P1), ARBIT_PERIOD [1] is the longest period (P3), and ARBIT_PERIOD [2] is the period (P2) of a length between P1 and P3. Therefore, ARBIT_PERIOD[0] is set to the chips 1 and 2, and 4 to 7 which have a short execution time for non-volatilization processing, ARBIT_PERIOD[1] is set to the chip 3 which has a long execution time for non-volatilization processing, and next, ARBIT_PERIOD[2] is set to the chip 0 which has a long execution time for non-volatilization processing.
Therefore, as shown in
The starting point of each arbitration period in
Example of Arbitration Period Setting Processing
A flowchart showing an example of setting processing of the arbitration period setting parameter set in the embodiment is expressed as shown in
(a) First, in step S301, the memory controller 200 starts initialization processing of the memory chip 208.
(b) Next, in step S302, based on the result of the non-volatilization processing executed in the process of the initialization processing, the memory controller 200 calculates an arbitration period for each of the predetermined units from the non-volatilization processing time taken at that time.
(c) Next, in step S303, the memory controller 200 stores the arbitration period for each of the predetermined units calculated in step S302 in an arbitration period storage unit 300. The arbitration period storage unit 300 may be provided in the memory chip 208 or may be provided in the memory controller 200. Alternatively, the arbitration period storage unit 300 may be stored in an external medium (not shown) that is accessible when necessary.
(d) On the other hand, when executing the non-volatilization processing (step S401), the memory controller 200 executes the non-volatilization processing by using the arbitration period for each of the predetermined units stored in advance in the arbitration period storage unit 300 (step S402). When executing non-volatilization processing, information on the arbitration period for each of the predetermined units read from the arbitration period storage unit 300 is associated with the index value of the non-volatilization target chip and set as an arbitration period number (Arbitration_Period No.). Also, each time the address information of the NAND chip to be used changes, an arbitration period number adapted thereto is set.
As a calculation method in step S302, for example, the time required for the non-volatilization processing is calculated for each of the predetermined units, and the arbitration period can be calculated for each of the predetermined units by using the difference from the standard non-volatilization processing time ((or non-volatilization processing of high quality chip).
Post-Processing of Non-Volatilization Control Processing
An example of the logical-to-physical chip conversion table 251 to be used in the memory controller according to the embodiment is expressed as shown in
The logical-to-physical chip conversion table 251 is a logical-to-physical chip conversion table showing correspondence between a virtual chip number identified in the memory controller and a physical chip number of the memory chip 208, and is used when the non-volatilization processing is performed per chip of the memory chip 208.
In addition, the logical-to-physical address conversion table 252 is a logical-to-physical address conversion table showing correspondence between a logical address in the command issued by the host 10 and a physical address of the memory chip 208, and is used when the non-volatilization processing is performed on a plurality of physical area units of each memory chip 208.
A flowchart showing an example of post-processing of the non-volatilization control processing by the memory controller according to the embodiment is shown in
(A) First, in step S501, the memory controller 200 starts non-volatilization processing of write data to the memory chip 208.
(B) Next, in step S502, the memory controller 200 executes non-volatilization processing.
(C) Next, when the execution of the non-volatilization processing is completed, that is, when the non-volatilization processing of all the write data related to the logical-to-physical chip conversion table 251 and the logical-to-physical address conversion table 252 is completed, in step S503, the memory controller 200 executes update processing of the logical-to-physical chip conversion table 251 and the logical-to-physical address conversion table 252. For example, the memory controller 200 updates the logical-to-physical chip conversion table 251 and the logical-to-physical address conversion table 252 when the processing of performing the non-volatilization processing of write data one time for each of all the memory chips 208 is completed a plurality of times.
(D) Next, when the logical-to-physical chip conversion table 251 and the logical-to-physical address conversion table 252 have been updated, in step S504, the memory controller 200 executes error correction data generation processing. The error correction data generation processing (step S504) is processing of generating error correction data such as restoration parity information used when an error occurs in reading data from the memory chip 208, and is executed by the ECC circuit 218 in the memory controller 200.
(E) Next, when the error correction data generation processing ends, in step S505, the memory controller 200 ends the non-volatilization processing.
Logical-to-physical address conversion table updating processing (step S503) updates the logical-to-physical address conversion table 252. For example, when writing data to the same logical address, the physical address of the memory chip 208 to be actually written changes for every write. Therefore, the memory controller 200 updates the logical-to-physical address conversion table 252 after executing the non-volatilization processing in step S502. The logical-to-physical address conversion table 252 is stored in a cache memory in the internal memory 205, and is used for the next non-volatilization processing by the memory controller 200. The logical-to-physical address conversion table 252 updated in step S503 does not have to be non-volatile immediately after the update. For example, until the cache memory in the internal memory 205 is saturated (e.g., full), the updated logical-to-physical address conversion table 252 may be held in the cache memory. While the logical-to-physical address conversion table 252 updated in the cache memory is held, data can be read from the memory chip 208 at high speed.
In addition, when updating the logical-to-physical chip conversion table 251 in the logical-to-physical address conversion table updating processing (step S 503) and, for example, when one memory chip 208 out of seven memory chip 208 groups of logical chip numbers “0” to “7” arranged for one cycle has a defective block, the memory chip 208 having the defective block may be set to the logical chip number “7”, and the memory chip 208 having no other defective block may be set to the logical chip numbers “0” to “6”.
In the non-volatilization processing of the memory chip 208, when the cycle-delayed memory chip 208 appears, this leads to the deterioration of the overall performance, and also affects the generation processing of the logical-to-physical address conversion table (step S503) and the generation processing of error correction data (step S504).
However, according to the present embodiment, since the appearance of cycle-delayed memory chips 208 can be avoided as much as possible, the influence on the processing of updating the logical-to-physical address conversion table (step S503) and the processing of generating error correction data (step S504) can also be reduced.
As described above, according to the present embodiment it is possible to prevent a specific chip having a longer non-volatilization execution time from being a cycle-delayed chip. Therefore, it is possible to ensure that a non-volatilization request for the same chip can be issued thereafter. Also it is possible to prevent delays in the generation of related data such as updated data of a logical-to-physical address conversion table and error correction data.
Therefore, it is possible to provide a memory system capable of executing non-volatilization processing without degrading the performance even when there is a difference in quality between memory chips.
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.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
8533403, | Sep 30 2010 | Apple Inc.; Apple Inc | Arbitration unit for memory system |
20030076855, | |||
20120047299, | |||
20150095621, | |||
20180188991, | |||
JP2000267943, | |||
JP2011191867, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 29 2019 | Kioxia Corporation | (assignment on the face of the patent) | / | |||
Oct 01 2019 | TOSHIBA MEMORY CORPORATION | Kioxia Corporation | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 058777 | /0822 | |
Oct 07 2019 | AZUMA, TETSUHIKO | TOSHIBA MEMORY CORPORATION | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 052129 | /0746 |
Date | Maintenance Fee Events |
Aug 29 2019 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Date | Maintenance Schedule |
Jun 07 2025 | 4 years fee payment window open |
Dec 07 2025 | 6 months grace period start (w surcharge) |
Jun 07 2026 | patent expiry (for year 4) |
Jun 07 2028 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 07 2029 | 8 years fee payment window open |
Dec 07 2029 | 6 months grace period start (w surcharge) |
Jun 07 2030 | patent expiry (for year 8) |
Jun 07 2032 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 07 2033 | 12 years fee payment window open |
Dec 07 2033 | 6 months grace period start (w surcharge) |
Jun 07 2034 | patent expiry (for year 12) |
Jun 07 2036 | 2 years to revive unintentionally abandoned end. (for year 12) |