WO2013168479A1 - Ssd(ソリッドステートドライブ)装置 - Google Patents
Ssd(ソリッドステートドライブ)装置 Download PDFInfo
- Publication number
- WO2013168479A1 WO2013168479A1 PCT/JP2013/059058 JP2013059058W WO2013168479A1 WO 2013168479 A1 WO2013168479 A1 WO 2013168479A1 JP 2013059058 W JP2013059058 W JP 2013059058W WO 2013168479 A1 WO2013168479 A1 WO 2013168479A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- unit
- nonvolatile memory
- written
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present invention relates to an SSD device using a flash memory such as a NAND flash memory.
- SSD solid state drive
- HDD hard disk drives
- DRAM Dynamic Random Access Memory
- Patent Documents 1 and 2 both disclose that a magnetoresistive memory (MRAM) can be used as a cache memory in addition to a DRAM.
- MRAM magnetoresistive memory
- the present invention has been made in view of the above circumstances, and an object thereof is to provide an SSD device that uses a nonvolatile memory as a cache and can reduce power consumption.
- the present invention for solving the problems of the conventional example described above is an SSD (solid state drive) device using flash memory, which includes n (non-volatile memories) different from the flash memory.
- n non-volatile memories
- n ⁇ 2 a non-volatile memory unit, and a controller that receives data to be written to the flash memory and stores the received data in the non-volatile memory unit.
- the controller generates divided data by dividing the data to be written into the flash memory into m pieces (2 ⁇ m ⁇ n), and obtains the divided pieces of data for the n nonvolatile memory units.
- m pieces of divided data may be written respectively.
- the controller generates divided data by dividing the data to be written into the flash memory into m (2 ⁇ m ⁇ n), and sequentially sets each of the n nonvolatile memory units as a write target. While switching, m pieces of divided data obtained by the division may be written.
- the controller generates divided data by dividing an error correction code attached to data to be written into the flash memory into m pieces (2 ⁇ m ⁇ n), and generates the divided data for the n nonvolatile memory units.
- the m pieces of divided data obtained by the division may be written respectively.
- the controller includes a storage unit including a volatile memory.
- the controller determines that the SSD device should be in a standby state, the controller reads data stored in the storage unit and writes the data to the nonvolatile memory unit. Thereafter, the power supply to the nonvolatile memory unit and the storage unit may be cut off.
- the controller determines that the SSD device should be returned to a normal state, it starts supplying power to the nonvolatile memory unit and the storage unit, and then reads the data written to the nonvolatile memory unit. May be stored in the storage unit.
- data can be read and written in parallel or in a time-sharing manner, reading and writing speeds are improved, and it can be used as a cache memory.
- the SSD device 1 includes a controller unit 11, an interface unit 12, a cache memory unit 13, a flash memory unit 14, and a power supply unit 15, as schematically shown in FIG. It is configured to include.
- the SSD device 1 is connected to a host (a computer or other device using the SSD device) via an interface unit 12. *
- the controller unit 11 is a program control device that operates according to a stored program. Specifically, as illustrated in FIG. 2, the CPU 21, the storage unit 22, the input / output unit 23, the cache control unit 24, and the like. And a flash memory interface 25. *
- the CPU 21 operates in accordance with a program stored in the storage unit 22.
- the CPU 21 reads and writes data from and to the cache memory unit 13 and the flash memory unit 14 in accordance with instructions input from the host side via the input / output unit 23.
- the specific processing contents by the CPU 21 will be described later.
- the storage unit 22 of the controller unit 11 is a volatile memory such as SRAM (Static Random Access Memory), and holds a program executed by the CPU 21 such as firmware.
- This firmware is stored in a non-volatile memory such as a NOR flash (not shown), and this NOR flash is connected to the controller unit 11, read from the NOR flash, and stored in the storage unit 22. May be.
- the firmware may be stored in a computer-readable recording medium such as a DVD-ROM (Digital Versatile Disc Disc Read Only Memory) or provided from the host side and copied to the storage unit 22. . *
- the input / output unit 23 is connected to the interface unit 12 and controls communication between the CPU 21 and the host via the interface unit 12.
- the input / output unit 23 is, for example, a SATA (Serial Advanced Technology Attachment) -PHY. *
- the cache control unit 24 performs data write / read processing with the cache memory unit 13 in accordance with an instruction input from the CPU 21.
- the cache control unit 24 adds an error correction code to the data to be written and writes the data including the error correction code in the cache memory unit 13.
- the cache control unit 24 performs error correction of the data using the error correction code included in the data read from the cache memory unit 13 in accordance with the read instruction input from the CPU 21, and instructs the CPU 21 on the data after error correction.
- the data is output to the transfer destination address.
- the flash memory interface 25 writes and reads data to and from the flash memory unit 14 in accordance with instructions input from the CPU 21. *
- the interface unit 12 is a SATA or PATA (Parallel Advanced Technology Attachment) interface connector or the like, and is connected to the host side.
- the interface unit 12 receives commands and data to be written from the host side and outputs them to the controller unit 11.
- the interface unit 12 outputs data input from the controller unit 11 to the host side.
- the input / output unit 23 included in the controller unit 11 is a SATA-PHY and the interface unit 12 is a PATA interface connector
- the PATA and SATA are connected between the controller unit 11 and the interface unit 12. It is also possible to provide a module that performs protocol conversion between them. *
- the cache memory unit 13 includes a type of nonvolatile memory different from the flash memory. Examples of such a non-volatile memory include FeRAM (Ferroelectric RAM) and MRAM (Magetoresistive RAM).
- the cache memory unit 13 includes n (n ⁇ 2) non-volatile memory units 130a, b,... Each including a different type of non-volatile memory from the flash memory. .
- the cache memory unit 13 holds data according to an instruction input from the controller unit 11. Further, the cache memory unit 13 reads out the held data and outputs it to the controller unit 11 in accordance with an instruction input from the controller unit 11. *
- the flash memory unit 14 includes, for example, a NAND flash.
- the flash memory unit 14 holds data according to an instruction input from the controller unit 11. Further, the flash memory unit 14 reads out the held data and outputs it to the controller unit 11 in accordance with an instruction input from the controller unit 11. *
- the power supply unit 15 individually turns on / off the power supply to each unit in accordance with an instruction input from the controller unit 11.
- device select signal lines CS0 #, CS1 #,... Corresponding to each of the plurality of nonvolatile memory units 130a, b,. , Higher byte select signal lines UB0 #, UB1 #, lower byte select signal lines LB0 #, LB1 #, write enable signal lines WEa #, WEb # to the device, read enable signal line RE0 # from the device , RE1 #... Are pulled out and connected to corresponding non-volatile memory units 130a, b.
- the write permission signal line and the read permission signal line, and the upper byte select signal line and the lower byte select signal line may be one signal line. In this case, it is determined which one of writing and reading is to be enabled (Enable) depending on one of H / L of the signal. Also, which of the upper and lower bytes is selected is determined by either H / L of the signal. *
- address signal lines (A0,... Am) and data signal lines (DQ0,... DQs) are drawn out from the cache control unit 24.
- the address signal lines are connected to the respective nonvolatile memory units 130a, b,. Has been.
- the data signal line is connected to each nonvolatile memory unit 130a, b,... (S + 1) / n (assumed to be an integer) bits of the s-bit signal line.
- the cache control unit 24 when receiving a data write instruction from the CPU 21, the cache control unit 24 outputs information indicating a write destination address to the address signal line. Then, the device select signal lines CSn # corresponding to the respective nonvolatile memory units 130a, b... Are asserted all at once, and the device write permission signal lines WEn # are simultaneously set to an enabled state.
- the upper byte select signal line UBn # and the lower byte select signal line LBn # corresponding to each nonvolatile memory unit 130a, b.
- the cache control unit 24 outputs data to be written (32-bit width) to the data signal line.
- the MRAM and the like included in the nonvolatile memory units 130a, b,... Have passed a predetermined time when the write enable signal line WEn # is enabled after the device select signal line CSn # is asserted.
- the data on the data signal line DQ is taken in from and written to the address input via the address signal line.
- the cache control unit 24 of this example accepts a data read instruction from the CPU 21, the cache control unit 24 outputs information indicating an address storing data to be read to the address signal line. Then, the device select signal lines CSn # corresponding to the respective nonvolatile memory units 130a, 130b are asserted all at once, and the read permission signal lines REn # to the devices are simultaneously set to an enabled state.
- the MRAM and the like included in the nonvolatile memory units 130a, b,... Output the read data to the data signal line DQ # after a predetermined time has elapsed since the address was output to the address signal line. Therefore, the cache control unit 24 takes in data on the data signal line DQ # after a predetermined time has elapsed since the address was output to the address signal line.
- the cache memory unit 13 may be connected to each channel, including a setting unit 35, a data setting unit 36, and an arbitration unit 37.
- Each of the channel control units 31a, b... Has an independent data transfer unit 32a, b.
- the data transfer unit 32 includes, for example, a DMAC (Direct Memory Access Controller), and transfers data from a specified address in the storage unit 22 to a specified address in the nonvolatile memory unit 130 of the corresponding channel.
- DMAC Direct Memory Access Controller
- the address setting unit 35 outputs a signal representing an address instructed from any one of the data transfer units 32 to the address signal lines A0.
- the address setting unit 35 does not accept an instruction for an address from another data transfer unit 32 until there is an instruction to end the transfer from the data transfer unit 32 that receives the instruction for the address.
- the data setting unit 36 accepts an address in the storage unit 22 designated by one of the data transfer units 32, reads the data stored in the storage unit 22 at the position represented by the address, and Is output to the data signal lines DQ0. *
- the arbitration unit 37 determines the data transfer unit 32 that performs address designation to the address setting unit 35.
- the arbitration unit 37 has a memory for recording a queue (queue), and upon receiving an address designation request from any of the data transfer units 32, the data transfer unit 32 that made the request at the end of the queue. Holds information that identifies
- the arbitration unit 37 also allows the data transfer unit 32 specified by the information at the head of the queue to specify an address. When the data transfer unit 32 specified by the information at the head of the queue outputs information indicating the end of transfer, the arbitration unit 37 deletes the information specifying the data transfer unit 32 from the head of the queue and continues processing. . *
- the nonvolatile memory units 130a and 130b are assigned to the first channel
- the nonvolatile memory units 130c and 130d are assigned to the second channel.
- the signal lines CS0 #, UB0 #, LB0 #, WE0 #, RE0 # corresponding to the nonvolatile memory unit 130a are taken out from the channel control unit 31a corresponding to the first channel.
- the signal lines CS2 #, UB2 #, LB2 #, WE2 #, RE2 # corresponding to the nonvolatile memory unit 130c are taken out from the channel control unit 31b corresponding to the second channel.
- address signal lines (A0,... Am) and data signal lines (DQ0,... DQs) are drawn out from the cache control unit 24.
- the address signal lines are connected to the respective nonvolatile memory units 130a, b,. Has been.
- the data signal line is connected to each of the nonvolatile memory units 130a, b,...,
- s / p assumed to be integers bits of the s-bit signal line.
- s is 32 bits
- the remaining 16 bits DQ16,... DQ31 are connected to the nonvolatile memory units 130b, d,. *
- the CPU 21 resets the counter i to “1” (S3), the address on the memory (transfer source address) in the storage unit 22 serving as the transfer source, and the nonvolatile memory unit 130 serving as the transfer destination.
- the address (transfer destination address) on the memory and the data length BL of the divided data as the length of the data to be transferred are set in the DMAC of the data transfer unit 32i of the channel control unit 31i corresponding to the i-th channel ( DMA setting process: S4).
- the transfer destination address may be determined in relation to the LBA (Logical Block Address) included in the command accompanied by data writing, and can be determined by adopting a method well known as a cache memory management method. The detailed description in is omitted.
- the CPU 21 stores the LBA, the write destination channel, and the transfer destination address in association with each other. *
- step S6 If i> CN in step S6, the process exits the loop and ends, and other processes are started. *
- the data transfer unit 32i starts transferring data having a specified data length from a specified address to the corresponding non-volatile memory unit 130. This specific processing is as follows.
- the data transfer unit 32 i requests the arbitration unit 37 to specify an address.
- the data transfer unit 32 i outputs the transfer destination address set in the DMA setting process to the address setting unit 35. *
- the data transfer unit 32i simultaneously asserts the device select signal line CSn # connected to the channel control unit 31i of the corresponding i-th channel and simultaneously enables the device write permission signal line WEn #. Set to the state of.
- the data transfer unit 32 i outputs a transfer source address to the data setting unit 36. By performing these operations at a predetermined timing, data is written to the i-th channel nonvolatile memory unit 130.
- the data transfer unit 32i repeats the above operation while incrementing the transfer destination address and the transfer source address until the writing of data corresponding to the data length BL is completed.
- the data transfer unit 32i outputs a signal indicating that the data transfer is completed to the arbitration unit 37.
- the data transfer unit 32 i performs predetermined end time processing (setting of end status information, etc.) and outputs an interrupt signal indicating the end of data transfer to the CPU 21.
- the SSD device 1 By performing the above operation, in the SSD device 1 according to this example of the present embodiment, when data is written, as shown in FIG. 6, the data transfer unit 32 of each channel to be written by the CPU 21. On the other hand, the DMA setting process is sequentially performed regardless of the progress of the data transfer process by each data transfer unit 32 (TDMA1, TDMA2,). *
- the first-channel data transfer unit 32a performs data transfer to the first-channel nonvolatile memory units 130a and 130b, and when the data transfer is completed, controls each unit so that the next data transfer unit 32b can perform the transfer. (In the above example, the arbitration unit 37 is notified of the transfer end). Then, the data transfer unit 32a of the first channel performs a predetermined end process and outputs an interrupt signal indicating the end of transfer to the CPU 21 (TE_DMA1). In response to this interrupt signal, the CPU 21 records the completion of writing to the first channel. *
- the data transfer unit 32b of the second channel performs data transfer to the nonvolatile memory units 130c and 130d of the second channel. That is, the cache control unit 24 writes the divided data obtained by the division while sequentially switching each of the nonvolatile memory units 130 of the respective channels as the write target.
- the CPU 21 ends the process when the data transfer is completed in all channels. According to this process, since the CPU 21 can execute other processes after the DMA setting process, the response speed of the SSD device 1 as viewed from the host side is increased. *
- the CPU 21 determines whether or not the data that should be stored in the LBA designated as the target of reading is stored in the nonvolatile memory unit 130 that is a cache memory, and determines that it is stored.
- the channel stored in correspondence with the LBA and the address of the nonvolatile memory unit 130 are output to the cache control unit 24 so that the data is read from the designated address of the nonvolatile memory unit 130 of the channel. Instruct. *
- the data output by the cache control unit 24 is output to the host side. If it is determined that the data to be stored in the LBA designated as the read target is not stored in the nonvolatile memory unit 130 that is the cache memory, the flash memory interface 25 is instructed to read the data from the LBA. To do. In response to this instruction, the flash memory interface 25 outputs data to be read and output from the flash memory unit 14 to the host side.
- the cache control unit 24 generates a bit string obtained by concatenating data read from the nonvolatile memory units 130a, b,... Of the first channel, the second channel, and so on, and outputs the generated bit string to the CPU 21.
- the CPU 21 initializes each unit at the time of activation, and then initializes the interface of the cache control unit 24. After that, if there is data saved in the MRAM at the end of the previous time, the CPU 21 transfers the saved data to the storage unit 22, establishes an interface with the host, and starts executing a loop waiting for a command. Compared with the conventional example using a DRAM in which destructive reading is performed, this process eliminates the need for a process of transferring the saved data to the storage unit 22 and then reading it again into the DRAM, thereby speeding up the startup.
- the saved data must be written to the flash memory unit 14, and there is a concern that data may not be read after a long period of time, so-called data retention (Data retention) may occur.
- data retention data retention
- FeRAM or MRAM as a nonvolatile memory that is not a flash memory.
- the CPU 21 waits for a command from the host after activation, and when a command from the host is received, performs processing according to the command. Specifically, when the CPU 21 receives an instruction to write data to the flash memory unit 14 from the host side, the CPU 21 accepts the data to be written according to the instruction from the host side. The data is output to the cache control unit 24 and stored in the cache memory unit 13.
- the CPU 21 also performs processing of selecting and reading a part of the data stored in the cache memory unit 13 by a predetermined method and storing it in the flash memory unit 14.
- the CPU 21 may select and read a part of the data stored in the flash memory unit 14 by a predetermined method, and may instruct the cache control unit 24 to write the data to the cache memory unit 13.
- a cache control / management method a widely known method can be adopted, and a detailed description thereof will be omitted here.
- the CPU 21 determines whether or not the data is stored in the cache memory unit 13. If it is determined that the data is stored, the CPU 21 determines whether the data is stored in the cache control unit 24. It instructs the data to be read out. In addition, when it is determined that the data is not stored in the cache memory unit 13, the CPU 21 reads the data stored in the flash memory unit 14 and outputs the data to the host side.
- the CPU 21 does not have a command from the host side, does not process in the background, and does not interrupt from any other input / output unit 23. Even when a certain time has elapsed, an SSD device using a conventional DRAM as a cache Unlike the case, the data stored in the cache memory unit 13 need not be stored in the flash memory unit 14 in preparation for an instantaneous power interruption.
- the CPU 21 performs the power saving control described below when a predetermined time has passed without any command from the host side, no background processing, and no other interrupt from the input / output unit 23. May be. Further, the CPU 21 may execute the power saving control in the same manner when a command is input from the host to the effect that the SSD device 1 should be put in a standby state. Examples of such commands include standby (STANDBY or STANDBY Immediate) and sleep (SLEEP) defined in the PATA / SATA standards.
- PHY PARTIAL and SLUMBER are commands that define the state of power saving for the serial ATA bus itself that connects the peripheral device (SSD) defined in the SATA standard and the host. The power saving control may be executed even when the controller detects it. *
- the CPU 21 that performs this power saving control reads out the data stored in the storage unit 22, outputs it to the cache control unit 24, and stores it in the cache memory unit 13 (data evacuation: S11). ).
- the CPU 21 causes the cache control unit 24 to stop outputting signals, and also causes the power supply unit 15 to stop supplying power to the cache memory unit 13 (S12). . *
- the CPU 21 sets the input / output unit 23 as it is or in a power saving state (S13), and shuts off the power in a predetermined range in the controller unit 11 (S14).
- storage part 22 and CPU21 itself is also interrupted
- the power supply to the cache memory unit 13 connected to the cache control unit 24 can be stopped. This is because the cache memory unit 13 does not need an operation for holding data (refresh operation or the like) required for a DRAM or the like.
- the input / output unit 23 waits until there is an input of a command (IDLE or IDLE ⁇ Immediate) to return to the normal state.
- a command IDLE or IDLE Immediate or PHY READY
- the input / output unit 23 returns from the power saving state when it is in the power saving state. Then, power supply to the CPU 21 and the storage unit 22 is started.
- the CPU 21 causes the power supply unit 15 to start supplying power to the cache memory unit 13 and instructs the cache control unit 24 to read the data saved from the storage unit 22.
- the CPU 21 stores the data in the storage unit 22 and restores the data in the storage unit 22. Then, the CPU 21 resumes processing based on the data in the storage unit 22.
- the CPU 21 does not need to store the save information from the DRAM to the flash memory unit 14 unlike the conventional DRAM that uses the cache as a cache. This is because the cache memory unit 13 retains data even after the power is turned off.
- the error correction code is added to the data to be written to the cache memory unit 13.
- the cache control unit 24 converts the error correction code (q bytes) into the nonvolatile memory unit.
- the error correction code may be divided into a plurality of numbers equal to or less than the number n of 130, and the divided error correction codes may be stored in different nonvolatile memory units 130.
- the cache control unit 24 may perform control so that a 1-byte error correction code is written into four nonvolatile memory units 130 in units of 1/4 byte.
- the cache control unit 24 sets q / The data is divided into r (2 ⁇ r ⁇ N) bytes, and the error correction code divided into q / r bytes is included in the byte string originally including the error correction code (if there is no byte string originally including the error correction code, a new one is added. (A byte sequence is generated) and stored in each nonvolatile memory unit 130.
- the cache control unit 24 reads data from each nonvolatile memory unit 130 until it becomes an error correction unit, and divides the data into data read from each nonvolatile memory unit 130 when it becomes the error correction unit. Then, the error correction codes contained therein are concatenated in the original order to reproduce the error correction code, and the error correction of the data read with the reproduced error correction code is performed.
- n 4 nonvolatile memory units 130a, 130b
- c and d data can be read and written with a width of 2 bytes each
- the operation is divided into two channels. According to this, it is possible to shorten the overhead time required for memory management processing, such as eliminating the need for re-setup of the address signal line between each channel (1.4 to 2 times according to the actual measurement value (1.5 times the average value)) ) Degree of speed is achieved).
- an average reading / writing speed of about 25 ⁇ 4 ⁇ 1.5 150 MB / s is achieved. Since this value is larger than the PATA transfer rate of 133 MB / s and comparable to the SATA transfer rate of 150 MB / s, the function as a cache can be sufficiently exerted in view of the data transfer rate of the host side interface.
- 1 SSD device 11 controller unit, 12 interface unit, 13 cache memory unit, 14 flash memory unit, 15 power supply unit, 21 CPU, 22 storage unit, 23 input / output unit, 24 cache control unit, 25 flash memory interface, 31 channels Control unit, 32 data transfer unit, 35 address setting unit, 36 data setting unit, 37 arbitration unit, 130 non-volatile memory unit.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
不揮発性メモリをキャッシュとして利用し、消費電力を低減できるSSD装置を提供する。フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置であって、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n個(n≧2)の不揮発性メモリユニット130と、フラッシュメモリへ書き込むべきデータを受け入れて、不揮発性メモリユニット130に、当該受け入れたデータを保存するコントローラ部11と、を含む。
Description
本発明は、NANDフラッシュメモリなど、フラッシュメモリを用いたSSD装置に関する。
近年、スループットの高さや消費電力の低さといった観点から、SSD(Solid State Drive)装置が、ハードディスクドライブ(HDD)に代わって利用されるようになっている。また、読出しや書込みの速度向上のために、キャッシュメモリとしてDRAM(Dynamic Random Access Memory)を利用する例がある。
なお、特許文献1,2には、いずれにもDRAM以外にも磁気抵抗メモリ(MRAM)をキャッシュメモリとして利用可能である旨の開示がある。
上記従来のDRAMキャッシュつきのSSDでは、DRAMのリフレッシュ動作が必須であるため、待機電力の低減が困難となっている。一方、磁気抵抗メモリ等の不揮発性のメモリでは、理論上ではDRAMに置換えてのキャッシュメモリとして採用できるが、実際にはDRAMのような書込み、読出し速度が達成できないため、ホスト側のインタフェースの速度よりも遅くなる(例えばベースクロック25MHzのMRAMを利用する場合、4バイトアクセスとしても25×4=100MB/sとなって、PATA(Parallel Advanced Technology Attachment)の要求する133MB/sよりも遅い)。これではキャッシュメモリとして利用することができない。
本発明は上記実情に鑑みて為されたもので、不揮発性メモリをキャッシュとして利用し、消費電力を低減できるSSD装置を提供することを、その目的の一つとする。
上記従来例の問題点を解決するための本発明は、フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置であって、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n個(n≧2)の不揮発性メモリユニットと、前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリユニットに、当該受け入れたデータを保存するコントローラと、を含むものである。
ここで前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットに対して、当該分割して得たm個の分割データをそれぞれ書き込むようにしてもよい。また、前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットのそれぞれを書込み対象として逐次的に切替えつつ、当該分割して得たm個の分割データをそれぞれ書き込むようにしてもよい。
また、前記コントローラは、前記フラッシュメモリへ書き込むべきデータに付するエラー訂正符号をm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットに対して、当該分割して得たm個の分割データをそれぞれ書き込むようにしてもよい。
さらに、前記コントローラは揮発性メモリからなる記憶部を含み、前記コントローラは、前記SSD装置を待機状態とすべき判断したときには、前記記憶部内に格納されたデータを読み出して前記不揮発性メモリユニットに書き込んだ後、この不揮発性メモリユニット及び前記記憶部への電源供給を断つようにしてもよい。さらに、前記コントローラは、前記SSD装置を通常状態へ復帰すべきと判断したときには、前記不揮発性メモリユニット及び前記記憶部への電源供給を開始した後、この不揮発性メモリユニットに書き込んだデータを読み出して前記記憶部に格納するようにしてもよい。
本発明によると、複数の不揮発性メモリユニットを用いることで、並行的あるいは時分割的にデータの読書きを可能として、読出し、書込み速度を向上し、キャッシュメモリとして利用可能としている。
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るSSD装置1は、図1にその概要を示すように、コントローラ部11と、インタフェース部12と、キャッシュメモリ部13と、フラッシュメモリ部14と、電源部15とを含んで構成されている。このSSD装置1は、インタフェース部12を介してホスト(コンピュータ等、SSD装置を利用する装置)に接続されている。
コントローラ部11は、記憶されているプログラムに従って動作するプログラム制御デバイスであり、具体的には図2に例示するように、CPU21と、記憶部22と、入出力部23と、キャッシュ制御部24と、フラッシュメモリインタフェース25と、を含んで構成されている。
ここでCPU21は、記憶部22に格納されたプログラムに従って動作する。本実施の形態では、このCPU21は、入出力部23を介してホスト側から入力される指示に従い、キャッシュメモリ部13やフラッシュメモリ部14との間でデータの読出しや書込みを行う。このCPU21による具体的な処理の内容は後に述べる。
コントローラ部11の記憶部22は、例えばSRAM(Static Random Access Memory)等の揮発性メモリであり、ファームウェア等CPU21によって実行されるプログラムを保持する。なお、このファームウェアは、図示しないNORフラッシュ等の不揮発性メモリに格納しておき、このNORフラッシュをコントローラ部11に接続して、当該NORフラッシュから読出してこの記憶部22に格納するようになっていてもよい。また、このファームウェアは、DVD-ROM(Digital Versatile Disc Read Only Memory)等のコンピュータ可読な記録媒体に格納されて、あるいはホスト側から提供され、この記憶部22に複写されたものであってもよい。
入出力部23は、インタフェース部12に接続され、インタフェース部12を介してCPU21とホストの間の通信を制御する。この入出力部23は、例えばSATA(Serial Advanced Technology Attachment)-PHYである。
キャッシュ制御部24は、CPU21から入力される指示に従い、キャッシュメモリ部13との間でデータの書き込みや読出しの処理を行う。このキャッシュ制御部24は、CPU21からデータの書き込み指示を受けると、書込み対象となるデータにエラー訂正符号を付して、このエラー訂正符号を含むデータをキャッシュメモリ部13に書き込む。またこのキャッシュ制御部24は、CPU21から入力される読出し指示に従ってキャッシュメモリ部13から読み出したデータに含まれるエラー訂正符号を用いてデータのエラー訂正を行い、エラー訂正後のデータをCPU21にの指示に従い転送先のアドレスにデータを出力する。フラッシュメモリインタフェース25は、CPU21から入力される指示に従い、フラッシュメモリ部14との間でデータの書き込みや読出しを行う。
インタフェース部12は、SATAまたはPATA(Parallel Advanced Technology Attachment)インタフェース・コネクタなどであり、ホスト側に接続される。このインタフェース部12は、ホスト側からコマンドや書込みの対象となるデータを受けて、コントローラ部11に出力する。また、このインタフェース部12は、コントローラ部11から入力されるデータ等をホスト側に出力する。さらに、例えばコントローラ部11に含まれる入出力部23がSATA-PHYであり、インタフェース部12がPATAインタフェース・コネクタである場合は、コントローラ部11とインタフェース部12との間に、PATAとSATAとの間のプロトコル変換を行うモジュールを設けることとしてもよい。
キャッシュメモリ部13は、フラッシュメモリとは異なる種類の不揮発性メモリを含む。このような不揮発性メモリとしては、FeRAM(Ferroelectric RAM)やMRAM(Magetoresistive RAM)等がある。本実施の形態では、このキャッシュメモリ部13には、フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n(n≧2)個の不揮発性メモリユニット130a,b,…が含まれる。キャッシュメモリ部13は、コントローラ部11から入力される指示に従い、データを保持する。またこのキャッシュメモリ部13は、コントローラ部11から入力される指示に従って、保持しているデータを読み出してコントローラ部11に出力する。
フラッシュメモリ部14は、例えばNANDフラッシュを含む。このフラッシュメモリ部14は、コントローラ部11から入力される指示に従い、データを保持する。またこのフラッシュメモリ部14は、コントローラ部11から入力される指示に従って、保持しているデータを読み出してコントローラ部11に出力する。
電源部15は、コントローラ部11から入力される指示に従って、各部への電源供給を個別にオン/オフする。
本実施の形態においては、図3に例示するように、コントローラ部11のキャッシュ制御部24から、複数の不揮発性メモリユニット130a,b…のそれぞれに対応したデバイスセレクト信号線CS0#,CS1#…、上位バイトのセレクト信号線UB0#,UB1#…、下位バイトのセレクト信号線LB0#,LB1#…、デバイスへの書込み許可信号線WEa#,WEb#…、デバイスからの読出し許可信号線RE0#,RE1#…が引出され、対応する不揮発性メモリユニット130a,b…に接続されている。なお、書込み許可信号線と読出し許可信号線、及び、上位バイトのセレクト信号線と下位バイトのセレクト信号線は、それぞれ一つの信号線であってもよい。この場合、信号のH/Lのいずれかによって、書込み・読出しのいずれをイネーブル(Enable)とするかを定める。また上位・下位のどちらのバイトを選択するかを信号のH/Lのいずれかによって定める。
またキャッシュ制御部24からは、アドレス信号線(A0,…Am)、データ信号線(DQ0,…DQs)が引出されており、このうちアドレス信号線は各不揮発性メモリユニット130a,b…に接続されている。またデータ信号線は、sビットの信号線のうち互いに異なる(s+1)/n(整数であるとする)ビットずつが各不揮発性メモリユニット130a,b…に接続される。一例として2個の不揮発性メモリユニット130a,bを用いる場合(n=2の場合)、データ信号線の幅(s+1)が32ビットであれば、DQ0,…DQ31の各信号線のうち、(s+1)/n=32/2=16ビット分DQ0,…DQ15が、不揮発性メモリユニット130a,c…に接続され、残る16ビット分DQ16,…DQ31が、不揮発性メモリユニット130b,d…に接続される。
この例では、キャッシュ制御部24は、CPU21からデータの書き込み指示を受け入れると、アドレス信号線に、書込み先のアドレスを表す情報を出
力する。そして各不揮発性メモリユニット130a,b…に対応するデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの書込み許可信号線WEn#を一斉にイネーブルの状態に設定する。なお、上位,下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット130a,b…に対応する上位バイトのセレクト信号線UBn#及び下位バイトのセレクト信号線LBn#を一斉にイネーブルの状態とする。
力する。そして各不揮発性メモリユニット130a,b…に対応するデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの書込み許可信号線WEn#を一斉にイネーブルの状態に設定する。なお、上位,下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット130a,b…に対応する上位バイトのセレクト信号線UBn#及び下位バイトのセレクト信号線LBn#を一斉にイネーブルの状態とする。
そしてキャッシュ制御部24は、データ信号線に、書き込むべきデータ(32ビット幅)を出力する。不揮発性メモリユニット130a,b…に含まれるMRAM等は、デバイスセレクト信号線CSn#がアサートされたあと、書込み許可信号線WEn#等がイネーブルの状態になったとき、所定の時間が経過してからデータ信号線DQにあるデータを取込んで、アドレス信号線を介して入力されるアドレスへ書き込む。このとき不揮発性メモリユニット130aには、データ信号線DQ0,…DQj(j=(s+1)/n)が接続され、不揮発性メモリユニット130bには、データ信号線DQj+1,…DQ(2j+1)(j=(s+1)/n)が接続され…というように、それぞれ接続されているので、各不揮発性メモリユニット130a,b…にデータが分割されて記録された状態となる。
つまりこのキャッシュ制御部24は、本実施の形態のこの例では、上述のように接続したことで、m=n個に分割して分割したデータを生成し、n個の不揮発性メモリユニット130a,b…に対して、当該分割して得たm個の分割データをそれぞれ書き込むことになる。 またこの例のキャッシュ制御部24は、CPU21からデータの読出し指示を受け入れると、アドレス信号線に、読出すべきデータ格納したアドレスを表す情報を出力する。そして各不揮発性メモリユニット130a,b…に対応するデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの読出し許可信号線REn#を一斉にイネーブルの状態に設定する。
不揮発性メモリユニット130a,b…に含まれるMRAM等は、アドレス信号線にアドレスが出力されてから所定の時間が経過した後に、データ信号線DQ#に、読出したデータを出力することになる。そこでキャッシュ制御部24は、アドレス信号線にアドレスを出力してから所定の時間が経過した後のデータ信号線DQ#のデータを取込む。このとき不揮発性メモリユニット130aには、データ信号線DQ0,…DQj(j=(s+1)/n)が接続され、不揮発性メモリユニット130bには、データ信号線DQj+1,…DQ(2j)(j=(s+1)/n)が接続され…というように、それぞれ接続されているので、各不揮発性メモリユニット130a,b…から得られた各ビットのデータを順番通りに連接したデータが、DQ0,…DQsの各データ信号線に現れる。キャッシュ制御部24は、このデータを取り出してCPU21の指示に従い、転送先アドレスにデータを出力する。
また本実施の形態の別の例では、図4に例示するように、コントローラ部11のキャッシュ制御部24が、複数のチャネルを制御するチャネル制御部31a,b…と、各チャネルに共通するアドレス設定部35、データ設定部36及び、調停部37とを有し、各チャネルにキャッシュメモリ部13がそれぞれ接続されてもよい。各チャネル制御部31a,b…は、それぞれ独立したデータ転送部32a,bを有する。このデータ転送部32は例えばDMAC(Direct Memory Access Controller)を含んでなり、記憶部22内の指定されたアドレスから、対応するチャネルの不揮発性メモリユニット130の指定されたアドレスへデータを転送する。
アドレス設定部35は、いずれかのデータ転送部32から指示されるアドレスを表す信号をアドレス信号線A0…に出力する。このアドレス設定部35は、アドレスの指示を受けるデータ転送部32から、転送終了の指示があるまでは、他のデータ転送部32からのアドレスの指示を受け入れない。
データ設定部36は、いずれかのデータ転送部32が指定する記憶部22内のアドレスを受け入れ、記憶部22内で、当該アドレスで表される位置に格納されているデータを読み出して、当該データを表す信号をデータ信号線DQ0…に出力する。
調停部37は、アドレス設定部35へのアドレス指定を行うデータ転送部32を決定する。この調停部37は、待ち行列(キュー)を記録するメモリを有し、いずれかのデータ転送部32からアドレス指定の要求を受けると、このキューの最後尾に当該要求を行ったデータ転送部32を特定する情報を保持する。調停部37は、また、キューの先頭の情報で特定されるデータ転送部32に対してアドレス指定を許可する。このキューの先頭の情報で特定されるデータ転送部32が転送の終了を表す情報を出力すると、調停部37は、このデータ転送部32を特定する情報をキューの先頭から削除して処理を続ける。
また複数の不揮発性メモリユニット130a,b…は、それぞれ同数p(p≧1)個ずつ(つまりチャネルの数をCNとすると、n=p×CNとなる)、いずれかのチャネルに割当てられている。本実施の形態のある例では、不揮発性メモリユニット130a,bが第1のチャネルに、不揮発性メモリユニット130c,dが第2のチャネルにそれぞれ割当てられる。
また、複数の不揮発性メモリユニット130a,b…のそれぞれに対応したデバイスセレクト信号線CS0#,CS1#…、上位バイトのセレクト信号線UB0#,UB1#…、下位バイトのセレクト信号線LB0#,LB1#…、デバイスへの書込み許可信号線WE0#,WE1#…、デバイスからの読出し許可信号線RE0#,RE1#…が、対応するチャネル制御部31a,b…から引出されて、対応する不揮発性メモリユニット130a,b…に接続されている。例えば、先の例であれば、不揮発性メモリユニット130aに対応する各信号線CS0#、UB0#、LB0#、WE0#、RE0#は、第1チャネルに対応するチャネル制御部31aから取出されており、不揮発性メモリユニット130cに対応する各信号線CS2#、UB2#、LB2#、WE2#、RE2#は、第2チャネルに対応するチャネル制御部31bから取出される。
またキャッシュ制御部24からは、アドレス信号線(A0,…Am)、データ信号線(DQ0,…DQs)が引出されており、このうちアドレス信号線は各不揮発性メモリユニット130a,b…に接続されている。またデータ信号線は、sビットの信号線のうち互いに異なるs/p(整数であるとする)ビットずつが各不揮発性メモリユニット130a,b…に接続される。一例として、上記のように1つのチャネルにつき2個の不揮発性メモリユニット130を対応させる場合、sが32ビットであれば、DQ0,…DQ31の各信号線のうち、32/2=16ビット分DQ0,…DQ15が、不揮発性メモリユニット130a,c…に接続され、残る16ビット分DQ16,…DQ31が、不揮発性メモリユニット130b,d…に接続される。
この例では図4に例示するように、CPU21は、ホスト側からデータの書き込み指示(データ書込みを伴うコマンド)と、書込みの対象となるデータとを受け入れると、このデータを所定のサイズのデータブロックに分割する。
具体的にCPU21は、受け入れたデータを記憶部22の空きエリアに格納し(S1)、書込み先のチャネルの数をCNとして、受け入れたデータ長Lをこのチャネル数CNで除した値BL=L/CNを、分割データのデータ長として演算する(S2)。
そしてCPU21は、カウンタiを「1」にリセットし(S3)、転送元となる記憶部22内のメモリ上のアドレス(転送元アドレス)と、転送先となる不揮発性メモリユニット130側での不揮発性メモリ上のアドレス(転送先アドレス)と、転送するデータの長さとしての分割データのデータ長BLとを、第iチャネルに対応するチャネル制御部31iのデータ転送部32iのDMACに設定する(DMA設定処理:S4)。
ここで転送元アドレスAsourceは、処理S1でデータを格納した空きエリアの先頭アドレスAsを用い、Asource=As+(i-1)×BLとして演算される。また転送先アドレスはデータの書込みを伴うコマンドに含まれるLBA(Logical Block Address)に関連して決めればよく、キャッシュメモリの管理の方法として広く知られている方法を採用して決定できるので、ここでの詳細な説明を省略する。CPU21は、LBAと、書込み先のチャネルと、転送先のアドレスとを関連付けて記憶しておく。
CPU21は、第iチャネルに対するDMA設定処理を終了すると、当該DMACによるデータ転送状況の如何に関わらず、iを「1」だけインクリメントして(S5)、iがCNを超えたか(i>CNであるか)否かを調べる(S6)。ここでi>CNでなければ、処理S4に戻って次のチャネルに対するDMA設定処理を引き続き行う。
また処理S6にてi>CNであれば、ループを抜けて処理を終了し、他の処理を開始する。
データ転送部32iは、対応する不揮発性メモリユニット130へ、指定されたアドレスから指定されたデータ長のデータの転送を開始するのであるが、この具体的な処理は次のようになる。データ転送部32iは、調停部37に対してアドレスの指定を要求する。調停部37からアドレスの指定が許可されると、データ転送部32iは、DMA設定処理にて設定された転送先アドレスをアドレス設定部35に対して出力する。
またこのデータ転送部32iは、対応する第i番目のチャネルのチャネル制御部31iに接続されているデバイスセレクト信号線CSn#を一斉にアサートし、デバイスへの書込み許可信号線WEn#を一斉にイネーブルの状態に設定する。なお、上位,下位のバイトごとの制御を行う場合は、各不揮発性メモリユニット130a,b…に対応する上位バイトのセレクト信号線UBn#及び下位バイトのセレクト信号線LBn#を一斉にイネーブルの状態とする。
そしてデータ転送部32iは、データ設定部36に対して転送元アドレスを出力する。これらの動作を所定のタイミングで行うことで、第iチャネルの不揮発性メモリユニット130に対して、データが書き込まれる。
以下、データ転送部32iは、データ長BLに相当するデータの書き込みが終了するまで、転送先アドレス、転送元アドレスをインクリメントしつつ以上の動作を繰返し行う。そしてデータ長BLに相当するデータの書き込みが終了すると、データ転送部32iは、データ転送が終了した旨の信号を調停部37に出力する。データ転送部32iは、所定の終了時処理(終了ステータス情報の設定等)を行い、CPU21に対して、データ転送終了を表す割込み信号を出力する。
以上の動作が行われることにより、本実施の形態のこの例に係るSSD装置1では、データを書き込む際に、図6に示すように、CPU21が書込みの対象となる各チャネルのデータ転送部32に対し、各データ転送部32によるデータ転送の処理の進捗の如何に関わらず、DMA設定処理を逐次的に行うことになる(TDMA1,TDMA2…)。
そしてCPU21このDMA設定処理を各チャネルについて行った後は、データ転送部32がデータ転送中であったとしても、他の処理を行うことができる(P1)。
第1チャネルのデータ転送部32aは、第1チャネルの不揮発性メモリユニット130a,bへのデータ転送を行い、データ転送が終了すると、次のデータ転送部32bによる転送が可能となるよう各部を制御(上述の例では調停部37に転送終了を通知)する。そして第1チャネルのデータ転送部32aは、所定の終了時処理を行って、CPU21に対して転送終了を表す割込信号を出力する(TE_DMA1)。CPU21は、この割込信号を受けて、第1チャネルへの書込み終了を記録する。
この間、第2チャネルのデータ転送部32bは、第2チャネルの不揮発
性メモリユニット130c,dへのデータ転送を行っている。つまり、キャッシュ制御部24は、各チャネルの不揮発性メモリユニット130のそれぞれを書込み対象として逐次的に切替えつつ、分割して得られた分割データをそれぞれ書き込んでいく。
性メモリユニット130c,dへのデータ転送を行っている。つまり、キャッシュ制御部24は、各チャネルの不揮発性メモリユニット130のそれぞれを書込み対象として逐次的に切替えつつ、分割して得られた分割データをそれぞれ書き込んでいく。
CPU21は、すべてのチャネルにおいてデータ転送が終了すると処理を終了する。この処理によると、CPU21は、DMA設定処理後は他の処理を実行できるようになるので、ホスト側から見たSSD装置1の応答速度が上昇することになる。
また読出し時には、CPU21は、読出しの対象として指定されたLBAに格納されているべきデータがキャッシュメモリである不揮発性メモリユニット130に格納されているか否かを判断し、格納されていると判断すると、LBAに対応して記憶しているチャネルと不揮発性メモリユニット130のアドレスとをキャッシュ制御部24に出力して、当該チャネルの不揮発性メモリユニット130の、当該指定されたアドレスからデータを読み出すよう指示する。
そしてこの指示に応じてキャッシュ制御部24が出力するデータをホスト側へ出力する。なお、読出しの対象として指定されたLBAに格納されているべきデータがキャッシュメモリである不揮発性メモリユニット130に格納されていないと判断すると、当該LBAからのデータの読出しをフラッシュメモリインタフェース25に指示する。そしてこの指示に応じてフラッシュメモリインタフェース25がフラッシュメモリ部14から読み出して出力するデータをホスト側へ出力する。
キャッシュ制御部24は、第1チャネル、第2チャネル…の各不揮発性メモリユニット130a,b…から読出したデータを連接したビット列を生成し、当該生成したビット列をCPU21に出力する。
次にCPU21の全体的な動作について説明する。CPU21は、起動時には各部を初期化した後、キャッシュ制御部24のインタフェースを初期設定する。その後CPU21は、前回終了時にMRAMへ退避したデータがあれば、当該退避したデータを記憶部22へ転送し、ホストとのインタフェースを確立して、コマンドを待機するループの実行を開始する。この処理は、破壊読出しが行われるDRAMを利用する従来例に比べ、退避したデータを記憶部22へ転送した後、DRAMへ再度読込む処理が不要となって、起動が高速化される。また、従来例では退避データをフラッシュメモリ部14に書き込む必要があり、長期間経過してしまった場合にデータが読出せなくなる、いわゆるデータリテンション(Data retention)が生じる懸念があったが、本実施の例では、フラッシュメモリではない不揮発性メモリとして例えばFeRAMやMRAMを利用することで、かかる問題を解消している。
またCPU21は、起動後は、ホストからのコマンドを待機し、ホストからのコマンドが受信されると、当該コマンドに応じた処理を行う。具体的にCPU21は、ホスト側からデータをフラッシュメモリ部14に書き込むべき指示を受けると、当該指示により書き込むべきデータをホスト側から受け入れる。そしてこのデータをキャッシュ制御部24に出力して、キャッシュメモリ部13に格納させる。
CPU21は、またキャッシュメモリ部13に格納したデータについて、その一部を所定の方法で選択して読み出し、フラッシュメモリ部14に格納する処理も行う。またCPU21は、フラッシュメモリ部14に格納されているデータの一部を所定の方法で選択して読み出し、キャッシュ制御部24に指示してキャッシュメモリ部13に書き込ませてもよい。このようなキャッシュの制御・管理方式については、広く知られている方法を採用できるため、ここでの詳細な説明を省略する。
CPU21はさらに、ホスト側からのデータの読出し指示を受けると、当該データがキャッシュメモリ部13に格納されているか否かを判断し、格納されていると判断される場合は、キャッシュ制御部24に対して当該データを読み出すよう指示する。また、このCPU21は、当該データがキャッシュメモリ部13に格納されていないと判断される場合は、フラッシュメモリ部14に格納されている当該データを読み出して、ホスト側に出力する。
なおCPU21は、ホスト側からのコマンドがなく、またバックグラウンドでの処理もなく、その他入出力部23からの割込みもなく一定の時間が経過したときも、従来のDRAMをキャッシュとして利用したSSD装置とは異なり、電源瞬断等に備えてキャッシュメモリ部13に格納したデータをフラッシュメモリ部14に保存する必要がない。
またCPU21は、ホスト側からキャッシュした情報をフラッシュ(flush)する指示(フラッシュメモリ部14に書き戻すべき指示)を受け入れたときは、当該コマンドを無視する(何もしない)。DRAMをキャッシュとして使用する場合とは異なり、FeRAMやMRAM等に格納したデータは破壊される恐れが少ないためである。
さらにCPU21は、ホスト側からのコマンドがなく、またバックグラウンドでの処理もなく、その他入出力部23からの割込みもない状態で予め定めた時間が経過したときには、次に述べる省電力制御を行ってもよい。またCPU21は、ホスト側からSSD装置1を待機状態とするべき旨のコマンドの入力があったときも同様に省電力制御を実行することとしてもよい。このようなコマンドの例としては、PATA規格/SATA規格で定義されているスタンバイ(STANDBY またはSTANDBY Immediate)、スリープ(SLEEP)等がある。また、SATA規格に定義されている周辺機器(SSD)とホストとを接続するシリアルATAバス自体を対象としてパワーセーブする状態を定義したコマンドであるPHY PARTIAL(パーシャル)、SLUMBER(スランバ)をSSDのコントローラが検知した場合にも省電力制御を実行することとしてもよい。
この省電力制御を行うCPU21は、図7に例示するように、記憶部22に格納しているデータを読み出して、キャッシュ制御部24に出力し、キャッシュメモリ部13に格納させる(データ退避:S11)。記憶部22に格納されたデータの退避が完了すると、CPU21はキャッシュ制御部24に信号の出力を停止させ、また、電源部15に対してキャッシュメモリ部13への電源供給を停止させる(S12)。
CPU21はさらに、入出力部23をそのままに、あるいは省電力状態に設定して(S13)、コントローラ部11内で予め定められた範囲の電源を遮断する(S14)。一例としては記憶部22やCPU21自身の電源も遮断する。また、キャッシュ制御部24に接続されたキャッシュメモリ部13への電源供給を停止させることもできる。キャッシュメモリ部13では、DRAM等で必要となる記憶保持のための動作(リフレッシュ動作等)も必要がないからである。
この後は入出力部23に、通常状態へ復帰するべき旨のコマンド(IDLE またはIDLE Immediate)の入力があるまで待機することとなる。入出力部23が通常状態へ復帰するべき旨のコマンド(IDLE またはIDLE Immediate またはPHY READY)をホスト側から受け入れると、入出力部23は(省電力状態であったときには省電力状態から復帰し)、CPU21、記憶部22への電源供給を開始させる。
このときCPU21は、電源部15に対してキャッシュメモリ部13への電源供給を開始させ、キャッシュ制御部24に対して記憶部22から退避したデータを読み出すよう指示する。この指示に応じてキャッシュ制御部24が読出したデータがCPU21に出力されると、CPU21は当該データを記憶部22に格納して記憶部22内のデータを復帰させる。そしてCPU21は記憶部22内のデータに基づく処理を再開する。
さらにSSD装置1の電源断時には、CPU21は、従来のDRAMをキャッシュとして利用するものとは異なり、退避情報をDRAMからフラッシュメモリ部14へ格納するという処理が不要となる。キャッシュメモリ部13では、電源が断となったあともデータが保持されるためである。
本実施の形態のSSD装置1では、また、キャッシュメモリ部13に書き込むデータにエラー訂正符号を付していたが、キャッシュ制御部24は、このエラー訂正符号(qバイト)を、不揮発性メモリユニット130の数n個以下の複数の数に分割し、分割したエラー訂正符号を、互いに異なる不揮発性メモリユニット130に格納させてもよい。一例では、キャッシュ制御部24は、1バイトのエラー訂正符号を、4つの不揮発性メモリユニット130に1/4バイトずつに分割して書き込むよう制御することとすればよい。例えば不揮発性メモリユニット130のそれぞれが2バイトずつの読書きに対応している場合、エラー訂正符号を含んだバイト列を書き込む際に、キャッシュ制御部24は、qバイトのエラー訂正符号についてq/r(2≦r≦N)バイトずつに分割し、本来エラー訂正符号を含むバイト列にq/rバイトずつの分割したエラー訂正符号を含めて(本来エラー訂正符号を含むバイト列がなければ新たにバイト列を生成して)、各不揮発性メモリユニット130に格納する。
この場合は、キャッシュ制御部24は、各不揮発性メモリユニット130からエラー訂正の単位となるまでデータを読み出し、エラー訂正の単位となったときに、各不揮発性メモリユニット130から読出したデータに分割されて含まれているエラー訂正符号を元の順序で連接してエラー訂正符号を再現し、この再現したエラー訂正符号で読出したデータのエラー訂正を行うこととなる。
本実施の形態のある例では、キャッシュメモリ部13としてのMRAMのデータ読み出し・書込みのおおよそのクロック数(ベースクロック)が25MHz程度である場合に、n=4の不揮発性メモリユニット130a,b,c,d(各2バイト幅でデータを読書き可能とする)を用い、2つのチャネルに分割して動作させる。これによると、各チャネルの間ではアドレス信号線の再セットアップが必要なくなるなど、メモリ管理の処理にかかるオーバーヘッド時間を短縮できる(実測値によると1.4ないし2倍(平均値で1.5倍)程度の速度が達成される)。
従って、実測値によると、平均25×4×1.5=150MB/s程度の読出し・書込み速度が達成されることとなる。この値は、PATAの転送速度133MB/sより大きく、またSATAの転送速度150MB/sに匹敵する速度であるため、ホスト側インタフェースのデータ転送速度から見て、キャッシュとしての機能を十分発揮できる。
1 SSD装置、11 コントローラ部、12 インタフェース部、13 キャッシュメモリ部、14 フラッシュメモリ部、15 電源部、21 CPU、22 記憶部、23 入出力部、24 キャッシュ制御部、25 フラッシュメモリインタフェース、31 チャネル制御部、32 データ転送部、35 アドレス設定部、36 データ設定部、37 調停部、130 不揮発性メモリユニット。
Claims (6)
- フラッシュメモリを用いたSSD(ソリッドステートドライブ)装置であって、
フラッシュメモリとは異なる種類の不揮発性メモリをそれぞれに含んだ、n個(n≧2)の不揮発性メモリユニットと、 前記フラッシュメモリへ書き込むべきデータを受け入れて、前記不揮発性メモリユニットに、当該受け入れたデータを保存するコントローラと、
を含む。 - 請求項1記載のSSD装置であって、
前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットに対して、当該分割して得たm個の分割データをそれぞれ書き込む。 - 請求項1記載のSSD装置であって、
前記コントローラは、前記フラッシュメモリへ書き込むべきデータをm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットのそれぞれを書込み対象として逐次的に切替えつつ、当該分割して得たm個の分割データをそれぞれ書き込む。 - 請求項3記載のSSD装置であって、
前記コントローラは、前記フラッシュメモリへ書き込むべきデータに付するエラー訂正符号をm個(2≦m≦n)に分割して分割データを生成し、前記n個の不揮発性メモリユニットに対して、当該分割して得たm個の分割データをそれぞれ書き込む。 - 請求項1記載のSSD装置であって、
前記コントローラは揮発性メモリからなる記憶部を含み、
前記コントローラは、前記SSD装置を待機状態とすべきと判断したときには、前記記憶部内に格納されたデータを読み出して前記不揮発性メモリユニットに書き込んだ後、この不揮発性メモリユニット及び前記記憶部への電源供給を断つ。 - 請求項5記載のSSD装置であって、
前記コントローラは、前記SSD装置を通常状態へ復帰すべきと判断したときには、前記不揮発性メモリユニット及び前記記憶部への電源供給を開始した後、この不揮発性メモリユニットに書き込んだデータを読み出して前記記憶部に格納する。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/399,004 US20150081953A1 (en) | 2012-05-07 | 2013-03-27 | Ssd (solid state drive) device |
CN201380024027.8A CN104303161A (zh) | 2012-05-07 | 2013-03-27 | Ssd(固态硬盘)装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012106260A JP5914148B2 (ja) | 2012-05-07 | 2012-05-07 | Ssd(ソリッドステートドライブ)装置 |
JP2012-106260 | 2012-05-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2013168479A1 true WO2013168479A1 (ja) | 2013-11-14 |
Family
ID=49550536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2013/059058 WO2013168479A1 (ja) | 2012-05-07 | 2013-03-27 | Ssd(ソリッドステートドライブ)装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150081953A1 (ja) |
JP (1) | JP5914148B2 (ja) |
CN (1) | CN104303161A (ja) |
WO (1) | WO2013168479A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5990430B2 (ja) | 2012-08-29 | 2016-09-14 | 株式会社バッファローメモリ | Ssd(ソリッドステートドライブ)装置 |
US9563557B2 (en) * | 2014-12-23 | 2017-02-07 | Intel Corporation | Instruction and logic for flush-on-fail operation |
CN104616688A (zh) * | 2015-03-05 | 2015-05-13 | 上海磁宇信息科技有限公司 | 一种集成mram的固态硬盘控制芯片及固态硬盘 |
CN105205015B (zh) * | 2015-09-29 | 2019-01-22 | 北京联想核芯科技有限公司 | 一种数据存储方法及存储设备 |
US20170109101A1 (en) * | 2015-10-16 | 2017-04-20 | Samsung Electronics Co., Ltd. | System and method for initiating storage device tasks based upon information from the memory channel interconnect |
US9747158B1 (en) * | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10318416B2 (en) * | 2017-05-18 | 2019-06-11 | Nxp B.V. | Method and system for implementing a non-volatile counter using non-volatile memory |
CN107807797B (zh) * | 2017-11-17 | 2021-03-23 | 北京联想超融合科技有限公司 | 数据写入的方法、装置及服务器 |
CN110727470B (zh) * | 2018-06-29 | 2023-06-02 | 上海磁宇信息科技有限公司 | 一种混合式非失性存储装置 |
CN109947678B (zh) * | 2019-03-26 | 2021-07-16 | 联想(北京)有限公司 | 一种存储装置、电子设备及数据交互方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003281084A (ja) * | 2002-03-19 | 2003-10-03 | Fujitsu Ltd | 外部バスへのアクセスを効率的に行うマイクロプロセッサ |
JP2007034944A (ja) * | 2005-07-29 | 2007-02-08 | Sony Corp | コンピュータシステム |
JP2007242163A (ja) * | 2006-03-09 | 2007-09-20 | Toshiba Corp | 半導体集積回路装置のデータ記録方式 |
JP2010108385A (ja) * | 2008-10-31 | 2010-05-13 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
US20100191896A1 (en) * | 2009-01-23 | 2010-07-29 | Magic Technologies, Inc. | Solid state drive controller with fast NVRAM buffer and non-volatile tables |
JP2012022422A (ja) * | 2010-07-13 | 2012-02-02 | Panasonic Corp | 半導体記録再生装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06266596A (ja) * | 1993-03-11 | 1994-09-22 | Hitachi Ltd | フラッシュメモリファイル記憶装置および情報処理装置 |
JPH07160575A (ja) * | 1993-12-10 | 1995-06-23 | Toshiba Corp | メモリシステム |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
JP5221332B2 (ja) * | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
JP2010211734A (ja) * | 2009-03-12 | 2010-09-24 | Toshiba Storage Device Corp | 不揮発性メモリを用いた記憶装置 |
JP2011022657A (ja) * | 2009-07-13 | 2011-02-03 | Fujitsu Ltd | メモリシステムおよび情報処理装置 |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US9235530B2 (en) * | 2010-05-31 | 2016-01-12 | Sandisk Technologies Inc. | Method and system for binary cache cleanup |
JP5553309B2 (ja) * | 2010-08-11 | 2014-07-16 | 国立大学法人 東京大学 | データ処理装置 |
JP2012063871A (ja) * | 2010-09-14 | 2012-03-29 | Univ Of Tokyo | 制御装置およびデータ記憶装置 |
-
2012
- 2012-05-07 JP JP2012106260A patent/JP5914148B2/ja active Active
-
2013
- 2013-03-27 WO PCT/JP2013/059058 patent/WO2013168479A1/ja active Application Filing
- 2013-03-27 US US14/399,004 patent/US20150081953A1/en not_active Abandoned
- 2013-03-27 CN CN201380024027.8A patent/CN104303161A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003281084A (ja) * | 2002-03-19 | 2003-10-03 | Fujitsu Ltd | 外部バスへのアクセスを効率的に行うマイクロプロセッサ |
JP2007034944A (ja) * | 2005-07-29 | 2007-02-08 | Sony Corp | コンピュータシステム |
JP2007242163A (ja) * | 2006-03-09 | 2007-09-20 | Toshiba Corp | 半導体集積回路装置のデータ記録方式 |
JP2010108385A (ja) * | 2008-10-31 | 2010-05-13 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
US20100191896A1 (en) * | 2009-01-23 | 2010-07-29 | Magic Technologies, Inc. | Solid state drive controller with fast NVRAM buffer and non-volatile tables |
JP2012022422A (ja) * | 2010-07-13 | 2012-02-02 | Panasonic Corp | 半導体記録再生装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5914148B2 (ja) | 2016-05-11 |
JP2013235347A (ja) | 2013-11-21 |
US20150081953A1 (en) | 2015-03-19 |
CN104303161A (zh) | 2015-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5914148B2 (ja) | Ssd(ソリッドステートドライブ)装置 | |
US20210397383A1 (en) | Rate Limit On The Transitions Of Zones To Open | |
US9043541B2 (en) | Storage control device, storage device, and control method for controlling storage control device | |
TWI385516B (zh) | 快閃記憶體儲存系統及其資料寫入方法 | |
TWI385519B (zh) | 資料寫入方法及使用此方法的快閃儲存系統與其控制器 | |
US20180275921A1 (en) | Storage device | |
TWI791536B (zh) | 記憶體控制器、系統及包括記憶體控制器的應用處理器 | |
JP4628750B2 (ja) | バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム | |
US20190042413A1 (en) | Method and apparatus to provide predictable read latency for a storage device | |
KR20210096133A (ko) | 구역화된 네임스페이스들에서의 기록 커맨드들의 유지 | |
JP2008152464A (ja) | 記憶装置 | |
JP5275623B2 (ja) | メモリコントローラ及びメモリシステム | |
TWI766207B (zh) | 多命名空間的資料存取方法及電腦程式產品 | |
JP2011253251A (ja) | データ記憶装置及びデータ書き込み方法 | |
JP2008176785A (ja) | ハイブリッドハードディスクドライブ、ハイブリッドハードディスクドライブを内蔵するコンピュータシステム、そしてハイブリッドハードディスクドライブのフラッシュメモリdma回路 | |
US8850084B2 (en) | Data processing systems for audio signals and methods of operating same | |
US20160062896A1 (en) | Memory system | |
US11194521B1 (en) | Rate limit on the transitions of streams to open | |
JP2006178923A5 (ja) | ||
US10747439B2 (en) | Method and apparatus for power-fail safe compression and dynamic capacity for a storage device | |
US8380920B2 (en) | Flash storage device and data access method of flash memory | |
JP2010211618A (ja) | 半導体記憶装置 | |
KR20240004454A (ko) | 솔리드 스테이트 드라이브에서 nand 다이 충돌들을 줄이는 방법 및 장치 | |
JP4621794B1 (ja) | キャッシュメモリ制御方法およびキャッシュメモリを備えた情報記憶装置 | |
JP2016154031A (ja) | Ssd(ソリッドステートドライブ)装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13786904 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14399004 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 13786904 Country of ref document: EP Kind code of ref document: A1 |