JP2012027649A - Data storage device and data readout method - Google Patents

Data storage device and data readout method Download PDF

Info

Publication number
JP2012027649A
JP2012027649A JP2010165070A JP2010165070A JP2012027649A JP 2012027649 A JP2012027649 A JP 2012027649A JP 2010165070 A JP2010165070 A JP 2010165070A JP 2010165070 A JP2010165070 A JP 2010165070A JP 2012027649 A JP2012027649 A JP 2012027649A
Authority
JP
Japan
Prior art keywords
data
read
sequential
memory
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010165070A
Other languages
Japanese (ja)
Inventor
Kazuhito Okita
一仁 置田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010165070A priority Critical patent/JP2012027649A/en
Publication of JP2012027649A publication Critical patent/JP2012027649A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To provide a data storage device capable of performing efficient data transfer in sequential read processing.SOLUTION: In an embodiment, a data storage device comprises memory controllers, a buffer memory, and a read controller. The memory controllers perform parallel data access to flash memories on the basis of a read command from a host. The buffer memory stores data which is read out from the flash memories by the memory controllers. The read controller controls sequential data transfer, for the data read out from the flash memories, between the buffer memory and the host on the basis of a sequence indicated by sequential numbers, if the read command instructs sequential read processing.

Description

本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。   Embodiments described herein relate generally to a data storage device using a nonvolatile memory as a storage medium.

近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ(以下、単にフラッシュメモリと表記する場合がある)を記憶媒体とするSSD(solid state drive)の開発が推進されている。   In recent years, development of an SSD (solid state drive) using a NAND-type flash memory (hereinafter sometimes simply referred to as a flash memory) as a data storage device as a storage medium has been promoted. .

SSDは、フラッシュメモリから読み出されたデータを、DRAMなどの揮発性メモリからなるバッファメモリに転送し、このバッファメモリからホストシステム(以下、単にホストと表記する場合がある)に転送する。ここで、フラッシュメモリは、バッファメモリと比較して、動作速度(アクセス速度)が低速である。この動作速度差を補償するために、SSDでは、フラッシュメモリを構成する複数のフラッシュメモリ素子に対して並列にアクセスする並列処理が行なわれている。   The SSD transfers data read from the flash memory to a buffer memory composed of a volatile memory such as a DRAM, and transfers the data from the buffer memory to a host system (hereinafter sometimes simply referred to as a host). Here, the flash memory has a lower operation speed (access speed) than the buffer memory. In order to compensate for this difference in operating speed, the SSD performs parallel processing for accessing a plurality of flash memory elements constituting the flash memory in parallel.

特開2001−51896号公報JP 2001-51896 A

SSDは、並列処理を実行しているため、ホストからシーケンシャルライトを指示するライトコマンドを受けると、フラッシュメモリにデータを並列にライトする処理を実行する。このため、フラッシュメモリでは、データのシーケンシャル性が失われた状態となる。   Since the SSD executes parallel processing, when it receives a write command instructing sequential write from the host, it executes processing to write data to the flash memory in parallel. For this reason, the flash memory is in a state where the data sequentiality is lost.

このようにフラッシュメモリにライトされたデータをシーケンシャルリード処理により読み出す場合、フラッシュメモリから並列にアクセスされたデータは、ランダムにバッファメモリに転送される。即ち、フラッシュメモリから並列に読み出されるデータの順番は、不定である。このため、SSDのマイクロプロセッサ(ファームウェア)は、フラッシュメモリからバッファメモリへのデータ転送とバッファメモリからホストへのデータ転送とを確認し、シーケンシャルリード処理によるデータ転送の制御を実行するという高負荷の処理を実行している。   When data written to the flash memory is read by sequential read processing, data accessed in parallel from the flash memory is randomly transferred to the buffer memory. That is, the order of data read in parallel from the flash memory is indefinite. For this reason, the SSD microprocessor (firmware) checks the data transfer from the flash memory to the buffer memory and the data transfer from the buffer memory to the host, and executes control of data transfer by sequential read processing. Processing is being executed.

本発明の目的は、シーケンシャルリード処理でのデータ転送の効率を図ることができるデータ記憶装置を提供することにある。   An object of the present invention is to provide a data storage device capable of improving the efficiency of data transfer in sequential read processing.

実施形態によれば、データ記憶装置は、メモリコントローラと、バッファメモリと、リードコントローラとを具備する。メモリコントローラは、ホストからのリードコマンドに基づいて、フラッシュメモリから並列にデータをアクセスする。バッファメモリは、前記メモリコントローラにより前記フラッシュメモリから読み出されたデータを格納する。リードコントローラは、前記リードコマンドがシーケンシャルリード処理を指示する場合には、前記フラッシュメモリから読み出されたデータを、シーケンシャル番号で指示される順番に基づいて前記バッファメモリと前記ホスト間のシーケンシャルデータ転送を制御する。   According to the embodiment, the data storage device includes a memory controller, a buffer memory, and a read controller. The memory controller accesses data in parallel from the flash memory based on a read command from the host. The buffer memory stores data read from the flash memory by the memory controller. When the read command instructs sequential read processing, the read controller transfers the data read from the flash memory based on the order indicated by the sequential number between the buffer memory and the host. To control.

実施形態に関するデータ記憶装置の構成を説明するためのブロック図。The block diagram for demonstrating the structure of the data storage apparatus regarding embodiment. 実施形態に関するシーケンシャルリードコントローラの構成を説明するためのブロック図。The block diagram for demonstrating the structure of the sequential read controller regarding embodiment. 実施形態に関するシーケンシャルリード処理を説明するための図。The figure for demonstrating the sequential read process regarding embodiment. 実施形態に関するシーケンシャルリードコントローラの動作を説明するための図。The figure for demonstrating operation | movement of the sequential read controller regarding embodiment. 実施形態に関するシーケンシャルリードコントローラの動作を説明するための図。The figure for demonstrating operation | movement of the sequential read controller regarding embodiment. 実施形態に関するデータ記憶装置の動作を説明するためのフローチャート。The flowchart for demonstrating operation | movement of the data storage apparatus regarding embodiment.

以下図面を参照して、実施形態を説明する。   Embodiments will be described below with reference to the drawings.

[データ記憶装置の構成]
図1は、実施形態のデータ記憶装置の構成を示すブロック図である。
[Configuration of data storage device]
FIG. 1 is a block diagram illustrating a configuration of a data storage device according to the embodiment.

図1に示すように、実施形態のデータ記憶装置はSSD(solid state drive)であり、NAND型フラッシュメモリ(以下単にフラッシュメモリ)17をデータ記憶媒体とする記憶装置である。   As shown in FIG. 1, the data storage device of the embodiment is an SSD (solid state drive), and is a storage device using a NAND flash memory (hereinafter simply referred to as a flash memory) 17 as a data storage medium.

フラッシュメモリ17は、複数のNAND型メモリモジュール(フラッシュメモリ素子)17-0〜17-nから構成されている。各メモリモジュール17-0〜17-nは、それぞれチャネルCH0〜CHnが割り当てられて、チャネルCH0〜CHnに対応する複数のメモリコントローラ11-0〜11-nにより並列にアクセス(リード/ライト)される。   The flash memory 17 includes a plurality of NAND type memory modules (flash memory elements) 17-0 to 17-n. Each of the memory modules 17-0 to 17-n is assigned with channels CH0 to CHn, and is accessed (read / written) in parallel by a plurality of memory controllers 11-0 to 11-n corresponding to the channels CH0 to CHn. The

バッファマネージャモジュール12は、各メモリコントローラ11-0〜11-nによりフラッシュメモリ17から読み出されたデータをバッファメモリ14に転送する。バッファマネージャモジュール12はアービタ(arbiter)13により、チャネルCH0〜CHn毎のデータの転送を調停する。   The buffer manager module 12 transfers the data read from the flash memory 17 by the memory controllers 11-0 to 11-n to the buffer memory 14. The buffer manager module 12 uses an arbiter 13 to arbitrate data transfer for each of the channels CH0 to CHn.

バッファメモリ14は、DRAM(dynamic random access memory)からなるキャッシュメモリに相当し、フラッシュメモリ17から読み出されたデータを格納する。バッファメモリ14に格納されたデータは、ホストインターフェースコントローラ(ホストI/Fコントローラ)15に転送される。これにより、バッファメモリ14は、フラッシュメモリ17とホストI/Fコントローラ15間のデータ転送の効率を高めることになる。   The buffer memory 14 corresponds to a cache memory composed of DRAM (dynamic random access memory), and stores data read from the flash memory 17. The data stored in the buffer memory 14 is transferred to the host interface controller (host I / F controller) 15. As a result, the buffer memory 14 increases the efficiency of data transfer between the flash memory 17 and the host I / F controller 15.

ホストI/Fコントローラ15は、バッファメモリ14とホストシステム30との間でのデータやコマンドの転送を制御する。ホストシステム(以下単にホストと表記する)30は、例えばパーソナルコンピュータである。   The host I / F controller 15 controls the transfer of data and commands between the buffer memory 14 and the host system 30. A host system (hereinafter simply referred to as a host) 30 is, for example, a personal computer.

さらに、本実施形態のSSDは、マイクロプロセッサ(MPU)10及びシーケンシャルリードコントローラ(以下単にリードコントローラと表記する)16とを有する。MPU10は、ファームウェア(FW)とも呼ばれており、ホスト30からのコマンド(リードコマンドやライトコマンド)を解読し、このコマンドに応じた制御を実行する。   Further, the SSD according to the present embodiment includes a microprocessor (MPU) 10 and a sequential read controller (hereinafter simply referred to as a read controller) 16. The MPU 10 is also called firmware (FW), decodes a command (read command or write command) from the host 30, and executes control according to the command.

具体的には、MPU10は、ホスト30からのリードコマンドに応じて、データのリード動作に必要なコマンドをメモリコントローラ11-0〜11-nに出力する。また、MPU10は、ホスト30からのライトコマンドに応じて、データのライト動作に必要なコマンドをメモリコントローラ11-0〜11-nに出力する。   Specifically, the MPU 10 outputs a command necessary for a data read operation to the memory controllers 11-0 to 11-n according to a read command from the host 30. Further, the MPU 10 outputs a command necessary for a data write operation to the memory controllers 11-0 to 11-n according to a write command from the host 30.

リードコントローラ16は、MPU10によりコマンドに付加されたシーケンシャル情報(タグ情報)に基づいて、シーケンシャルリード処理を制御するハードウェアモジュールである。シーケンシャル情報は、後述するシーケンシャルリード処理で必要なシーケンシャル番号とセクタ数を含む。即ち、シーケンシャル番号は、フラッシュメモリ17から読み出されたデータをシーケンシャルに転送するための順番を示す情報である。セクタ数は、シーケンシャルに転送するデータのサイズを示す情報である。リードコントローラ16は、シーケンシャル番号に基づいて、バッファメモリ14からホスト30に対して、先頭から順番にデータを転送するように制御する。   The read controller 16 is a hardware module that controls sequential read processing based on sequential information (tag information) added to a command by the MPU 10. The sequential information includes a sequential number and the number of sectors necessary for a sequential read process described later. That is, the sequential number is information indicating an order for sequentially transferring data read from the flash memory 17. The number of sectors is information indicating the size of data to be transferred sequentially. Based on the sequential number, the read controller 16 controls the buffer memory 14 to transfer data to the host 30 in order from the top.

図2に示すように、リードコントローラ16は、シーケンシャルセクタカウンタ(以下、単にセクタカウンタと表記する)20と、シーケンシャル情報を格納するメモリ21と、選択モジュール22と、コンペアモジュール23と、シーケンシャル番号カウンタ24と、基準コンペアモジュール25とを有する。セクタカウンタ20は、順番にデータを転送するときに、転送データ量及びバッファメモリ14の残存データ量を監視するためのカウンタである。   As shown in FIG. 2, the read controller 16 includes a sequential sector counter (hereinafter simply referred to as sector counter) 20, a memory 21 for storing sequential information, a selection module 22, a compare module 23, and a sequential number counter. 24 and a reference compare module 25. The sector counter 20 is a counter for monitoring the transfer data amount and the remaining data amount in the buffer memory 14 when transferring data in order.

[データ記憶装置の動作]
以下、図1から図6を参照して、実施形態のデータ記憶装置の動作を説明する。
[Operation of data storage device]
The operation of the data storage device according to the embodiment will be described below with reference to FIGS.

まず、図6のフローチャートに示すように、SSDは、ホストI/Fコントローラ15を介してホスト30からコマンドを受信すると、MPU10に転送する(ブロック600)。MPU10はコマンドを解読し、リードコマンドであればデータのリード動作を実行するように制御する。また、MPU10は、ライトコマンドであればデータのライト動作を実行するように制御する。ホスト30からのコマンドにより、アクセス対象の論理ブロックアドレス(LBA)及びデータサイズが指定される。   First, as shown in the flowchart of FIG. 6, when the SSD receives a command from the host 30 via the host I / F controller 15, it transfers it to the MPU 10 (block 600). The MPU 10 decodes the command, and controls to execute a data read operation if it is a read command. Further, the MPU 10 controls to execute a data write operation if it is a write command. A logical block address (LBA) to be accessed and a data size are specified by a command from the host 30.

本実施形態では、MPU10は、ホスト30からのリードコマンドがシーケンシャルリード処理を要求するコマンドであるか否かを判定する(ブロック601)。シーケンシャルリードとは、リードコマンドで指定されるアクセス対象のLBAが、例えば所定のセクタ(物理アドレス)数分以上で、番号が連続するLBA(連続LBA)の場合である。なお、MPU10は、ホスト30からのリードコマンドがシーケンシャルリードではない場合、通常のリード動作の制御を実行する(ブロック601のNO)。   In the present embodiment, the MPU 10 determines whether or not the read command from the host 30 is a command requesting sequential read processing (block 601). Sequential read is a case where the number of LBAs to be accessed specified by a read command is, for example, an LBA (continuous LBA) in which the number is continuous for a predetermined number of sectors (physical addresses) or more. When the read command from the host 30 is not sequential read, the MPU 10 executes normal read operation control (NO in block 601).

図3に示すように、本実施形態では、ホスト30からのリードコマンドで、例えば連続するLBA0〜63のデータを読み出すシーケンシャルリード処理が要求された場合を想定する。ここでは、フラッシュメモリ17の各チャネルCH0〜CH7に対応するメモリモジュール17-0〜17-7には、図3に示すように、8セクタ分毎のデータが分散されて格納されているとする。   As shown in FIG. 3, in the present embodiment, it is assumed that a sequential read process for reading, for example, continuous LBA 0 to 63 data is requested by a read command from the host 30. Here, in the memory modules 17-0 to 17-7 corresponding to the channels CH0 to CH7 of the flash memory 17, data for every eight sectors is distributed and stored as shown in FIG. .

通常では、SSDは、フラッシュメモリ17に対してクラスタ(cluster)単位でのデータのアクセス(リード又はライト)を実行する。1クラスタは、物理的なアクセス単位のセクタで、例えば8セクタ分に相当するデータサイズである。   Normally, the SSD executes data access (read or write) in units of clusters to the flash memory 17. One cluster is a sector of a physical access unit and has a data size corresponding to, for example, 8 sectors.

ここで、図示しないハードウェアモジュールは、リードコマンドで指定されるアクセス対象のLBAを、フラッシュメモリ17をアクセスするための物理アドレスに変換する(ブロック602)。物理アドレスとは、フラッシュメモリ17のチャネル、ブロック(セクタ)、ページからなる。   Here, a hardware module (not shown) converts the access target LBA specified by the read command into a physical address for accessing the flash memory 17 (block 602). The physical address includes a channel, a block (sector), and a page of the flash memory 17.

MPU10は、チャネルCH0〜CH7に対応するメモリコントローラ11-0〜11-7にコマンド(リード)100を発行する(ブロック603)。MPU10は、シーケンシャルリード処理で転送するデータの順番を示すシーケンシャル番号をコマンド100に付加する。メモリコントローラ11-0〜11-7は、対応するチャネルCH0〜CH7のメモリモジュール17-0〜17-7から、指定された物理アドレスのデータを読み出して、バッファマネージャモジュール12に転送する。   The MPU 10 issues a command (read) 100 to the memory controllers 11-0 to 11-7 corresponding to the channels CH0 to CH7 (block 603). The MPU 10 adds a sequential number indicating the order of data transferred in the sequential read process to the command 100. The memory controllers 11-0 to 11-7 read the data of the designated physical address from the memory modules 17-0 to 17-7 of the corresponding channels CH0 to CH7 and transfer them to the buffer manager module 12.

バッファマネージャモジュール12は、バッファメモリ14を制御し、メモリモジュール17-0〜17-7から並列に読み出されたデータをバッファメモリ14に転送する(ブロック604)。このとき、バッファマネージャモジュール12は、メモリモジュール17-0〜17-7からバッファメモリ14にセクタ単位のデータが完了する度に、セクタ転送完了及びコマンドに付加されたシーケンシャル番号を通知する通知情報120を、リードコントローラ16に発行する。   The buffer manager module 12 controls the buffer memory 14 and transfers the data read in parallel from the memory modules 17-0 to 17-7 to the buffer memory 14 (block 604). At this time, the buffer manager module 12 notifies the notification information 120 for notifying the sector transfer completion and the sequential number added to the command each time the sector unit data is completed from the memory modules 17-0 to 17-7 to the buffer memory 14. Is issued to the read controller 16.

次に、図2、図4、図5を参照して、リードコントローラ16の処理を説明する。   Next, processing of the read controller 16 will be described with reference to FIGS. 2, 4, and 5.

先ず、リードコントローラ16は、図2に示すように、チャネルCH0〜CH7毎のセクタ転送完了とシーケンシャル番号の通知情報120-0〜120-7を受信する。リードコントローラ16は、受信したシーケンシャル番号#0〜#7とそれに対するセクタ数(ここでは8セクタ)をカウントし、それらを一旦メモリ21のチャネルCH0〜CH7毎の記憶領域21-0〜21-7に格納する。   First, as shown in FIG. 2, the read controller 16 receives the sector transfer completion and sequential number notification information 120-0 to 120-7 for each of the channels CH0 to CH7. The read controller 16 counts the received sequential numbers # 0 to # 7 and the number of sectors corresponding thereto (here, 8 sectors) and temporarily stores them in the storage areas 21-0 to 21-7 for the channels CH0 to CH7 of the memory 21. To store.

一方、リードコントローラ16は、セクタカウンタ20のカウント対象であるシーケンシャル番号を設定するためにシーケンシャル番号カウンタ24のカウントを起動させる。コンペアモジュール23は、シーケンシャル番号カウンタ24のカウント値(例えば#0)と、メモリ21に格納されているシーケンシャル番号とを比較する。選択モジュール22は、コンペアモジュール23により一致がとれたシーケンシャル番号(例えば#0)の記憶領域(ここでは21-0)からセクタ数220をセクタカウンタ20に設定する。   On the other hand, the read controller 16 activates the counting of the sequential number counter 24 in order to set the sequential number that is to be counted by the sector counter 20. The compare module 23 compares the count value (eg, # 0) of the sequential number counter 24 with the sequential number stored in the memory 21. The selection module 22 sets the sector number 220 in the sector counter 20 from the storage area (here, 21-0) of the sequential number (for example, # 0) matched by the compare module 23.

セクタカウンタ20は、設定されたセクタ数分のインクリメントを実行する(ブロック605)。ここで、図4(A)に示すように、バッファメモリ14には、例えばチャネルCH0からシーケンシャル番号#0の4セクタ分のデータ41の転送が完了して格納されているとする。シーケンシャル番号#0の4セクタ分のデータ41は、例えばLBA0〜3の4セクタ分である。また、バッファメモリ14には、例えばチャネルCH3からシーケンシャル番号#3の8セクタ分のデータ42の転送が完了して格納されているとする。   The sector counter 20 increments the set number of sectors (block 605). Here, as shown in FIG. 4A, it is assumed that, for example, the transfer of the data 41 for four sectors of the sequential number # 0 from the channel CH0 is completed and stored in the buffer memory 14. The data 41 for 4 sectors of sequential number # 0 is, for example, 4 sectors of LBA0-3. In the buffer memory 14, for example, it is assumed that the transfer of the data 42 of 8 sectors of the sequential number # 3 from the channel CH3 is completed and stored.

なお、バッファメモリ14において、各LBAに対するスタートアドレス40は、フラッシュメモリ17からバッファメモリ14に転送するためのコマンドを発行するときに、バッファマネージャモジュール12により指定される。   In the buffer memory 14, the start address 40 for each LBA is designated by the buffer manager module 12 when issuing a command for transfer from the flash memory 17 to the buffer memory 14.

このような状態の場合に、図4(B)に示すように、セクタカウンタ20は、4セクタ分のデータ41の転送完了に応じてカウント値4までインクリメントを実行する。なお、例えば8セクタ分のデータ42が転送完了している場合でも、これにより前のシーケンシャル番号のデータの転送が完了していないため、セクタカウンタ20にはセクタ数の更新はされない。   In such a state, as shown in FIG. 4B, the sector counter 20 increments to the count value 4 in response to the completion of the transfer of the data 41 for four sectors. For example, even when the data 42 for 8 sectors has been transferred, the transfer of the data with the previous sequential number is not completed.

セクタカウンタ20がシーケンシャル番号#0に対するセクタ数分のインクリメントを終了すると、リードコントローラ16は、シーケンシャル番号カウンタ24をインクリメントする。コンペアモジュール23は、シーケンシャル番号カウンタ24のカウント値(例えば#1)と、メモリ21に格納されているシーケンシャル番号とを比較する。選択モジュール22は、コンペアモジュール23により一致がとれたシーケンシャル番号(例えば#1)の記憶領域(ここでは21-1)からセクタ数220をセクタカウンタ20に設定する。ここでは、セクタ数220は、8セクタである。   When the sector counter 20 finishes incrementing the number of sectors with respect to the sequential number # 0, the read controller 16 increments the sequential number counter 24. The compare module 23 compares the count value (for example, # 1) of the sequential number counter 24 with the sequential number stored in the memory 21. The selection module 22 sets the sector number 220 in the sector counter 20 from the storage area (here, 21-1) of the sequential number (for example, # 1) matched by the compare module 23. Here, the sector number 220 is 8 sectors.

このような過程を繰り返して、セクタカウンタ20は、シーケンシャル番号毎に転送完了したセクタ数をインクリメントする。セクタカウンタ20は、カウント値を基準コンペアモジュール25に出力する。基準コンペアモジュール25は、予め設定されている基準値(ここでは39とする)とセクタカウンタ20からのカウント値とを比較する。基準コンペアモジュール25は、当該基準値を超えると、ホストI/Fコントローラ15に対して、バッファメモリ14からホスト30へのデータ転送を許可する(ブロック606)。   By repeating such a process, the sector counter 20 increments the number of sectors that have been transferred for each sequential number. The sector counter 20 outputs the count value to the reference compare module 25. The reference compare module 25 compares a preset reference value (in this case 39) with the count value from the sector counter 20. If the reference value exceeds the reference value, the reference compare module 25 permits the host I / F controller 15 to transfer data from the buffer memory 14 to the host 30 (block 606).

具体的には、図5(A)に示すように、バッファメモリ14には、例えば5チャネルの40セクタ分のデータ50の転送が完了して格納されている。なお、データ51は、あるチャネルの8セクタ分のデータで、バッファメモリ14に転送が完了しているが、セクタカウンタ20のカウント値には含まれていない状態である。   Specifically, as shown in FIG. 5A, the buffer memory 14 stores, for example, data 50 for 40 channels of 5 channels after completion. The data 51 is data for 8 sectors of a certain channel and has been transferred to the buffer memory 14 but is not included in the count value of the sector counter 20.

図5(B)に示すように、セクタカウンタ20は、40セクタ分のデータ50の転送完了に応じてカウント値40までインクリメントを実行する。基準コンペアモジュール25は、カウント値40が基準値(39)を超えたので、ホストI/Fコントローラ15に対して、バッファメモリ14からホスト30へのデータ転送の許可信号160を出力する。この場合、バッファメモリ14からは、1セクタ分のデータ転送も完了してない状態である。   As shown in FIG. 5B, the sector counter 20 increments to the count value 40 in response to the completion of the transfer of the data 50 for 40 sectors. Since the count value 40 exceeds the reference value (39), the reference compare module 25 outputs a data transfer permission signal 160 from the buffer memory 14 to the host 30 to the host I / F controller 15. In this case, the data transfer from the buffer memory 14 for one sector is not completed.

ホストI/Fコントローラ15は、リードコントローラ16からの許可信号160に応じて、バッファメモリ14からホスト30へのデータ転送を開始する。リードコントローラ16は、バッファメモリ14からホスト30へのセクタ単位のデータ転送が完了する度に、ホストI/Fコントローラ15からのセクタ転送完了通知150を受信する。   The host I / F controller 15 starts data transfer from the buffer memory 14 to the host 30 in response to the permission signal 160 from the read controller 16. The read controller 16 receives a sector transfer completion notification 150 from the host I / F controller 15 every time data transfer in units of sectors from the buffer memory 14 to the host 30 is completed.

リードコントローラ16は、セクタ転送完了通知150を受信する度に、セクタカウンタ20をデクリメントする。即ち、セクタカウンタ20は、フラッシュメモリ17からバッファメモリ14に転送されて、バッファメモリ14に格納されているデータのセクタ数(先頭から連続したLBA)をカウント値で示す。換言すれば、セクタカウンタ20は、バッファメモリ14からホスト30に転送すべきデータの残存(セクタ数)をカウント値で示す。これにより、リードコントローラ16は、シーケンシャルリード処理によるデータ転送を管理することが可能となる。   Each time the read controller 16 receives the sector transfer completion notification 150, the read controller 16 decrements the sector counter 20. That is, the sector counter 20 indicates the number of sectors (LBA continuous from the head) of data transferred from the flash memory 17 to the buffer memory 14 and stored in the buffer memory 14 as a count value. In other words, the sector counter 20 indicates the remaining data (number of sectors) to be transferred from the buffer memory 14 to the host 30 as a count value. Thereby, the read controller 16 can manage data transfer by the sequential read process.

リードコントローラ16は、フラッシュメモリ17からバッファメモリ14へのデータ転送が全て完了すると、基準コンペアモジュール25の基準値を解除する(ブロック607のYES)。リードコントローラ16は、ホストI/Fコントローラ15からのセクタ転送完了通知150に応じてデクリメントするセクタカウンタ20により、バッファメモリ14とホスト30間のデータ転送を監視する(ブロック608)。リードコントローラ16は、セクタカウンタ20のカウント値が0になると、全てのシーケンシャルリード処理によるデータ転送が完了したことを認識する(ブロック609のYES)。   When all the data transfer from the flash memory 17 to the buffer memory 14 is completed, the read controller 16 cancels the reference value of the reference compare module 25 (YES in block 607). The read controller 16 monitors the data transfer between the buffer memory 14 and the host 30 by the sector counter 20 that decrements in response to the sector transfer completion notification 150 from the host I / F controller 15 (block 608). When the count value of the sector counter 20 reaches 0, the read controller 16 recognizes that data transfer by all sequential read processing has been completed (YES in block 609).

以上のように本実施形態によれば、ハードウェアモジュールであるリードコントローラ16により、シーケンシャルリード処理において、フラッシュメモリ17の各チャネルCH0〜CHnから並列かつランダムに読み出されるデータを、先頭から連続するLBAからなるシーケンシャルデータとして、ホスト30に転送することができる。   As described above, according to the present embodiment, in the sequential read process by the read controller 16 that is a hardware module, data that is read in parallel and randomly from each of the channels CH0 to CHn of the flash memory 17 is continuously LBA from the head. Can be transferred to the host 30 as sequential data.

即ち、リードコントローラ16は、MPU(FW)10がコマンド100に付加したシーケンシャル番号とセクタ数を含むシーケンシャル情報に基づいて、リオーダリング処理を実行する。具体的には、リードコントローラ16は、フラッシュメモリ17から並列かつランダムに読み出されたデータを、バッファメモリ14上でシーケンシャル番号で指定された順番に並び替えるリオーダリング処理を実行する。これにより、リードコントローラ16は、セクタ単位のシーケンシャルデータ転送を制御することができる。   That is, the read controller 16 executes the reordering process based on the sequential information including the sequential number and the number of sectors added to the command 100 by the MPU (FW) 10. Specifically, the read controller 16 executes a reordering process in which data read out in parallel and randomly from the flash memory 17 is rearranged in the order specified by the sequential number on the buffer memory 14. Thereby, the read controller 16 can control the sequential data transfer in units of sectors.

要するに、本実施形態のSSDでは、MPU(FW)10がバッファメモリ14とホスト30間のシーケンシャルデータ転送を監視することなく、ハードウェアモジュールであるリードコントローラ16が高速かつ効率的にシーケンシャルデータ転送を制御する。従って、SSDのメインコントローラであるMPU(FW)10の負荷を軽減できるため、SSD全体の効率化を図ることが可能となる。   In short, in the SSD of this embodiment, the MPU (FW) 10 does not monitor the sequential data transfer between the buffer memory 14 and the host 30, and the read controller 16 as a hardware module performs the sequential data transfer at high speed and efficiently. Control. Therefore, since the load on the MPU (FW) 10 that is the main controller of the SSD can be reduced, the efficiency of the entire SSD can be improved.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。   Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.

10…マイクロプロセッサ(MPUまたはFW)、11-0〜11-n…メモリコントローラ、
12…バッファマネージャモジュール、13…アービタ(arbiter)、
14…バッファメモリ、
15…ホストインターフェースコントローラ(ホストI/Fコントローラ)、
16…シーケンシャルリードコントローラ(リードコントローラ)、
17…NAND型フラッシュメモリ、17-0〜17-n…メモリモジュール、
20…シーケンシャルセクタカウンタ(セクタカウンタ)、
21…メモリ、22…選択モジュール、23…コンペアモジュール、
24…シーケンシャル番号カウンタ、25…基準コンペアモジュール、
30…ホストシステム。
10: Microprocessor (MPU or FW), 11-0 to 11-n: Memory controller,
12 ... Buffer manager module, 13 ... Arbiter,
14: Buffer memory,
15: Host interface controller (host I / F controller),
16: Sequential read controller (read controller),
17 ... NAND flash memory, 17-0 ~ 17-n ... Memory module,
20: Sequential sector counter (sector counter),
21 ... Memory, 22 ... Selection module, 23 ... Compare module,
24 ... Sequential number counter, 25 ... Standard compare module,
30: Host system.

Claims (10)

ホストからのリードコマンドに基づいて、フラッシュメモリから並列にデータをアクセスするメモリコントローラと、
前記メモリコントローラにより前記フラッシュメモリから読み出されたデータを格納するバッファメモリと、
前記リードコマンドがシーケンシャルリード処理を指示する場合には、前記フラッシュメモリから読み出されたデータを、シーケンシャル番号で指示される順番に基づいて前記バッファメモリと前記ホスト間のシーケンシャルデータ転送を制御するリードコントローラと
を具備するデータ記憶装置。
A memory controller that accesses data in parallel from the flash memory based on a read command from the host;
A buffer memory for storing data read from the flash memory by the memory controller;
When the read command instructs a sequential read process, the data read from the flash memory is read to control sequential data transfer between the buffer memory and the host based on the order indicated by the sequential number. A data storage device comprising a controller.
前記リードコントローラは、
前記シーケンシャル番号と、前記リードコマンドで要求された連続アドレスのデータのセクタ数とを含むシーケンシャル情報を取得し、
前記シーケンシャル情報に基づいて前記シーケンシャルデータ転送を制御するように構成されている請求項1に記載のデータ記憶装置。
The lead controller is
Obtaining sequential information including the sequential number and the number of sectors of data of the continuous address requested by the read command;
The data storage device according to claim 1, wherein the data storage device is configured to control the sequential data transfer based on the sequential information.
前記リードコントローラは、
前記フラッシュメモリから読み出されたデータを前記バッファメモリに転送するときに、前記シーケンシャル番号に基づいた順番で前記バッファメモリにデータを格納するように構成されている請求項1又は請求項2のいずれか1項に記載のデータ記憶装置。
The lead controller is
3. The data storage device according to claim 1, wherein when the data read from the flash memory is transferred to the buffer memory, the data is stored in the buffer memory in an order based on the sequential number. A data storage device according to claim 1.
ホストからのリードコマンドに応じてシーケンシャルリード処理を決定するモジュールを有し、
前記モジュールは、
前記リードコマンドで指定された連続アドレスに応じて前記フラッシュメモリの各チャネルからデータを読み出すことを指示するコマンドを前記メモリコントローラに発行し、
前記コマンドに対して前記シーケンシャル番号を付加するように構成されている請求項1から請求項3のいずれか1項に記載のデータ記憶装置。
It has a module that determines sequential read processing according to the read command from the host,
The module is
Issuing a command to the memory controller instructing to read data from each channel of the flash memory according to the continuous address specified by the read command;
4. The data storage device according to claim 1, wherein the data storage device is configured to add the sequential number to the command. 5.
前記リードコントローラは、
前記バッファメモリに格納されたデータのセクタ数、及び前記バッファメモリから前記ホストにシーケンシャルデータ転送すべきデータのセクタ数をカウントするためのセクタカウンタを含む請求項1から請求項4のいずれか1項に記載のデータ記憶装置。
The lead controller is
5. The sector counter according to claim 1, further comprising a sector counter for counting the number of sectors of data stored in the buffer memory and the number of sectors of data to be sequentially transferred from the buffer memory to the host. The data storage device described in 1.
前記リードコントローラは、
前記シーケンシャル番号を前記フラッシュメモリのチャネル毎に記憶するメモリを含み、
前記セクタカウンタは、前記シーケンシャル番号の順番に前記セクタ数のカウントを行なうように構成されている請求項5に記載のデータ記憶装置。
The lead controller is
A memory for storing the sequential number for each channel of the flash memory;
The data storage device according to claim 5, wherein the sector counter is configured to count the number of sectors in the order of the sequential numbers.
前記フラッシュメモリから読み出されたデータを前記バッファメモリに転送するバッファ管理モジュールを有し、
前記リードコントローラは、
前記バッファ管理モジュールから前記バッファメモリへのセクタ単位のデータ転送の完了通知を受信し、
前記完了通知と前記シーケンシャル番号に基づいて、シーケンシャルデータ転送すべきデータが前記バッファメモリに格納されたことを認識するように構成されている請求項1から請求項6のいずれか1項に記載のデータ記憶装置。
A buffer management module for transferring data read from the flash memory to the buffer memory;
The lead controller is
Receiving a sector unit data transfer completion notification from the buffer management module to the buffer memory;
7. The apparatus according to claim 1, configured to recognize that data to be sequentially transferred is stored in the buffer memory based on the completion notification and the sequential number. 8. Data storage device.
前記バッファメモリから前記ホストにシーケンシャルデータ転送を実行するホストコントローラを有し、
前記リードコントローラは、
前記シーケンシャルデータ転送すべきデータが、前記シーケンシャル番号に基づいて前記バッファメモリに格納された後に、前記ホストコントローラに対して前記シーケンシャルデータ転送の許可を発行するように構成されている請求項1から請求項7のいずれか1項に記載のデータ記憶装置。
A host controller that performs sequential data transfer from the buffer memory to the host;
The lead controller is
2. The apparatus according to claim 1, wherein the sequential data transfer permission is issued to the host controller after the data to be transferred is stored in the buffer memory based on the sequential number. Item 8. The data storage device according to any one of Item 7.
前記リードコントローラは、ハードウェアモジュールから構成されている請求項1から請求項8のいずれか1項に記載のデータ記憶装置。   The data storage device according to claim 1, wherein the read controller includes a hardware module. フラッシュメモリを備えたデータ記憶装置のデータ読み出し方法であって、
ホストからのリードコマンドに基づいて、フラッシュメモリから並列にデータを読み出し、
前記フラッシュメモリから読み出されたデータをバッファメモリに格納し、
前記リードコマンドがシーケンシャルリード処理を指示する場合には、前記フラッシュメモリから読み出されたデータを、シーケンシャル番号で指示される順番に基づいて前記バッファメモリと前記ホスト間のシーケンシャルデータ転送を制御するデータ読み出し方法。
A data reading method for a data storage device including a flash memory,
Based on the read command from the host, data is read from the flash memory in parallel,
Storing the data read from the flash memory in a buffer memory;
When the read command instructs a sequential read process, the data read from the flash memory is data for controlling sequential data transfer between the buffer memory and the host based on the order indicated by the sequential number. Reading method.
JP2010165070A 2010-07-22 2010-07-22 Data storage device and data readout method Pending JP2012027649A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010165070A JP2012027649A (en) 2010-07-22 2010-07-22 Data storage device and data readout method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010165070A JP2012027649A (en) 2010-07-22 2010-07-22 Data storage device and data readout method

Publications (1)

Publication Number Publication Date
JP2012027649A true JP2012027649A (en) 2012-02-09

Family

ID=45780516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010165070A Pending JP2012027649A (en) 2010-07-22 2010-07-22 Data storage device and data readout method

Country Status (1)

Country Link
JP (1) JP2012027649A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067147A1 (en) * 2011-09-13 2013-03-14 Kabushiki Kaisha Toshiba Storage device, controller, and read command executing method
US9619177B2 (en) 2014-06-05 2017-04-11 Kabushiki Kaisha Toshiba Memory system including non-volatile memory, buffer memory, and controller controlling reading data from non-volatile memory
CN113515232A (en) * 2021-04-26 2021-10-19 深圳忆联信息系统有限公司 Method and device for improving SSD low-command deep reading performance, computer equipment and storage medium

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH029063A (en) * 1988-06-28 1990-01-12 Nec Corp Disk controller
JP2000148652A (en) * 1998-11-12 2000-05-30 Hitachi Ltd Disk array control method and disk array controller
JP2001051896A (en) * 1999-08-04 2001-02-23 Hitachi Ltd Storage device
JP2004280862A (en) * 2004-06-28 2004-10-07 Hitachi Ltd Disk array control method and disk array controller
JP2005190456A (en) * 2003-12-03 2005-07-14 Hitachi Ltd Remote copy system
JP2006023889A (en) * 2004-07-07 2006-01-26 Hitachi Ltd Remote copy system and storage system
JP2008102967A (en) * 2007-12-28 2008-05-01 Hitachi Ltd Disk array control method and disk array controller

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH029063A (en) * 1988-06-28 1990-01-12 Nec Corp Disk controller
JP2000148652A (en) * 1998-11-12 2000-05-30 Hitachi Ltd Disk array control method and disk array controller
JP2001051896A (en) * 1999-08-04 2001-02-23 Hitachi Ltd Storage device
JP2005190456A (en) * 2003-12-03 2005-07-14 Hitachi Ltd Remote copy system
JP2004280862A (en) * 2004-06-28 2004-10-07 Hitachi Ltd Disk array control method and disk array controller
JP2006023889A (en) * 2004-07-07 2006-01-26 Hitachi Ltd Remote copy system and storage system
JP2008102967A (en) * 2007-12-28 2008-05-01 Hitachi Ltd Disk array control method and disk array controller

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067147A1 (en) * 2011-09-13 2013-03-14 Kabushiki Kaisha Toshiba Storage device, controller, and read command executing method
US9619177B2 (en) 2014-06-05 2017-04-11 Kabushiki Kaisha Toshiba Memory system including non-volatile memory, buffer memory, and controller controlling reading data from non-volatile memory
CN113515232A (en) * 2021-04-26 2021-10-19 深圳忆联信息系统有限公司 Method and device for improving SSD low-command deep reading performance, computer equipment and storage medium
CN113515232B (en) * 2021-04-26 2023-08-29 深圳忆联信息系统有限公司 Method, device, computer equipment and storage medium for improving SSD low order depth reading performance

Similar Documents

Publication Publication Date Title
CN107885456B (en) Reducing conflicts for IO command access to NVM
US9846541B2 (en) Memory system for controlling perforamce by adjusting amount of parallel operations
US9720860B2 (en) System and method for efficient processing of queued read commands in a memory system
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
JP6459644B2 (en) Storage control device, control system, and control program
US20130339576A1 (en) Method for constructing address mapping table of solid state drive
US20120159050A1 (en) Memory system and data transfer method
US10324833B2 (en) Memory controller, data storage device, and memory control method
JP6142860B2 (en) Disk array device, disk control device, solid state drive, disk control method, and program therefor
US20150339223A1 (en) Memory system and method
US20160092143A1 (en) Optimized garbage collection for solid-state storage devices
JP2012248110A (en) Memory unit having multiple channels and writing control method including error correction channel determination therein
US9043565B2 (en) Storage device and method for controlling data invalidation
US20100169550A1 (en) Semiconductor memory device, data transfer device, and method of controlling semiconductor memory device
US9213498B2 (en) Memory system and controller
KR102366512B1 (en) logical block addressing range collision crawler
US9959052B1 (en) Media based cache for data storage device
JP2012027649A (en) Data storage device and data readout method
CN107885667B (en) Method and apparatus for reducing read command processing delay
US9547450B2 (en) Method and apparatus to change tiers
KR20150127434A (en) Memory management apparatus and control method thereof
US10853321B2 (en) Storage system
US9047959B1 (en) Data storage device, memory control method, and electronic device with data storage device
US11704249B2 (en) Frozen time cache for multi-host read operations
JP4837121B1 (en) Data storage device and data writing method

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120306