JP2012128646A - メモリシステムおよびメモリシステムの制御方法 - Google Patents

メモリシステムおよびメモリシステムの制御方法 Download PDF

Info

Publication number
JP2012128646A
JP2012128646A JP2010279376A JP2010279376A JP2012128646A JP 2012128646 A JP2012128646 A JP 2012128646A JP 2010279376 A JP2010279376 A JP 2010279376A JP 2010279376 A JP2010279376 A JP 2010279376A JP 2012128646 A JP2012128646 A JP 2012128646A
Authority
JP
Japan
Prior art keywords
command
read
management information
queue
address
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.)
Granted
Application number
JP2010279376A
Other languages
English (en)
Other versions
JP5296041B2 (ja
Inventor
Toshikatsu Hida
敏克 檜田
Tetsukazu Yoshida
哲和 吉田
Eiji Yoshihashi
鋭二 吉橋
Hirokuni Yano
浩邦 矢野
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 JP2010279376A priority Critical patent/JP5296041B2/ja
Priority to US13/825,695 priority patent/US20130212319A1/en
Priority to PCT/JP2011/079580 priority patent/WO2012081730A1/en
Priority to TW100146301A priority patent/TWI472917B/zh
Publication of JP2012128646A publication Critical patent/JP2012128646A/ja
Application granted granted Critical
Publication of JP5296041B2 publication Critical patent/JP5296041B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】従来に比して、ホスト装置とSSDとの間で転送されるデータを一時的に格納するバッファを削減しながら、データ転送のスループットを高めることができるメモリシステムを提供する。
【解決手段】実施形態によれば、メモリシステム20は、揮発性メモリと、NANDメモリ30と、コマンドキュー420と、アドレス情報キャッシュ461と、コントローラと、を備える。コントローラは、ホスト装置からコマンドの実行時に、コマンドの実行に使用するアドレス管理情報をNANDメモリ30からアドレス情報キャッシュ461に読み出して、NANDメモリ30に対してリード/ライトを実行する。また、コントローラは、コマンドキュー420に格納されたリードコマンドのうち、1つのリードコマンドに含まれるアクセス先のすべてが揮発性アドレス管理情報に存在するリードコマンドから優先的に実行するようにリオーダ制御する。
【選択図】図2

Description

本発明の実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
コンピュータシステムに用いられるメモリシステムとして、NAND型フラッシュメモリ(以下、単にNANDメモリという)などの不揮発性半導体メモリを搭載したSSD(Solid State Drive)が注目されている。このSSDにおいて、NANDメモリを複数のチップで構成し、SSDコントローラと複数のチップとの間をそれぞれ独立のチャネルで接続して、より高速のリード/ライト処理を実現させる技術が開示されている。
米国特許出願公開第2009/292865号明細書 特開2001−142774号公報
本発明の一つの実施形態は、バッファ量を削減しながら、データ転送のスループットを高めることができるメモリシステムおよびメモリシステムの制御方法を提供することを目的とする。
本発明の一つの実施形態によれば、揮発性メモリと、不揮発性メモリと、コマンドキューと、アドレス情報キャッシュと、コントローラと、を備えるメモリシステムが提供される。前記不揮発性メモリは、ホスト装置からの書き込みデータをそれぞれ記憶し、前記書き込みデータの物理的な記憶位置である物理アドレスと前記ホスト装置から指定される論理アドレスとを対応付けた不揮発性アドレス管理情報が格納される。前記コマンドキューは、前記ホスト装置からのコマンドを格納する。前記アドレス情報キャッシュは、前記不揮発性メモリ内の前記不揮発性アドレス管理情報の一部である揮発性アドレス管理情報を格納する。前記コントローラは、前記ホスト装置からコマンドの実行時に、前記コマンドの実行に使用するアドレス管理情報を前記不揮発性メモリから前記アドレス情報キャッシュに読み出して、前記不揮発性メモリに対してリード/ライトを実行する。また、前記コントローラは、前記コマンドキューに格納されたリードコマンドのうち、1つのリードコマンドに含まれるアクセス先のすべてが前記揮発性アドレス管理情報に存在するリードコマンドから優先的に実行するようにリオーダ制御する。
図1は、第1の実施形態によるメモリシステムの構成の一例を模式的に示すブロック図である。 図2は、第1の実施形態によるSSDの機能構成を模式的に示すブロック図である。 図3は、不揮発性アドレス管理情報の一例を示す図である。 図4は、揮発性アドレス管理情報の一例を示す図である。 図5は、リオーダバッファの構成の一例を模式的に示す図である。 図6は、第1の実施形態によるコマンドのリオーダ処理の手順の一例を示すフローチャートである。 図7は、SSDの操作完了時の処理手順の一例を示すフローチャートである。 図8は、データ転送の準備処理の手順の一例を示すフローチャートである。 図9は、管理情報の先行要求処理の手順の一例を示すフローチャートである。 図10は、リードコマンド処理の手順の一例を示すフローチャートである。 図11は、ライトコマンド処理の手順の一例を示すフローチャートである。 図12は、リオーダ処理の概略を模式的に示す図である。 図13は、リード処理時のリオーダ処理の概略を模式的に示す図である。 図14は、チャネルの利用状況に応じたリオーダ処理の概略を模式的に示す図である。 図15は、コマンド投入数に制限がある場合の読み出し用リソース情報へのリードコマンドの登録の一例を示す図である。 図16は、チャネルの利用状況に応じたリオーダ処理の概略を模式的に示す図である。 図17は、再利用性を考慮したリードコマンドの実行順序の入れ替え処理を模式的に示す図である。 図18は、SSDを搭載したパーソナルコンピュータの一例を示す斜視図である。 図19は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。
従来技術では、ホスト装置とSSDとの間で転送されるデータを一時的に格納するバッファ量を削減しながら、データ転送のスループットを高めることに着目した技術については提案されていなかった。
以下の各実施形態では、従来に比して、ホスト装置とSSDとの間で転送されるデータを一時的に格納するバッファ量を削減しながら、データ転送のスループットを高めることができるメモリシステムおよびその制御方法を開示する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態によるメモリシステムの構成の一例を模式的に示すブロック図である。ここでは、メモリシステムの一例としてSSDを例に挙げて説明するが、本実施形態の適用対象はSSDに限定されない。
SSD20は、パーソナルコンピュータなどのホスト装置(以下ホストという)10とATA(Advanced Technology Attachment)規格などの通信インタフェースで接続され、ホスト10の外部記憶装置として機能する。SSD20は、ホスト10からリード/ライトされるデータを記憶する不揮発性半導体メモリであるNANDメモリ30と、SSD20のデータ転送制御を実行するデータ転送装置40と、データ転送装置40が転送する転送データを一時的に格納する際などに使用される例えば揮発性メモリであるRAM50と、を備える。ホスト10から送信されてきたデータは、データ転送装置40の制御の基に、一旦RAM50に格納され、その後、RAM50から読み出されてNANDメモリ30に書き込まれる。NANDメモリ30から読み出されたデータは、一旦RAM50に格納され、その後、RAM50から読み出されてホスト10に転送される。
データ転送装置40は、ATA I/Fの制御およびホスト10とRAM50との間のデータ転送の制御を実行するATAインタフェースコントローラ(以下、ATAコントローラという)41と、RAM50に対するデータのリード/ライトを制御するRAMコントローラ42と、NANDメモリ30とRAM50との間のデータ転送の制御を実行するNANDコントローラ43と、ファームウェアに基づいてデータ転送装置40全体の制御を実行するMPU44と、NANDメモリ30からのリード管理と、NANDメモリ30からリードしたデータをRAM50へデータ転送する際のデータ転送管理を行う自動転送管理部45と、を備える。MPU44、ATAコントローラ41、RAMコントローラ42、NANDコントローラ43および自動転送管理部45はバス接続されている。自動転送管理部45は、NANDコントローラ43の上位のコントローラであり、自動転送管理部45は、MPU44の制御下で、NANDコントローラ43によるNANDメモリ30の読み出し制御を管理する。
NANDメモリ30は、ホスト10によって指定されたユーザデータを記憶したり、RAM50で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ30は、この場合、4並列動作を行う4つの並列動作要素31a〜31dを有する。各並列動作要素31a〜31dはそれぞれチャネルch0〜ch3を介してNANDコントローラ43に接続されている。設定によって、4つの並列動作要素31a〜31dを単独動作させたり、並列動作させたりすることが可能である。また、NANDメモリ30は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリ30は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ30では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。また、SSD20では、物理ブロックを、内部に有効データを含まない、用途未割り当てのブロックであるフリーブロックと、内部に有効データを含み、用途が割り当てられたアクティブブロックとに区別して管理する。なお、ここではNANDメモリ30を4つの並列動作要素31a〜31dで構成される場合が示されているが、並列動作要素の数は4つに限定されない。
RAM50は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部(データ転送用バッファ)としては、ホスト10から書込要求があったデータをNANDメモリ30に書込む前に一時的に保存したり、ホスト10から読出要求があったデータをNANDメモリ30から読出して一時的に保存したりする用途で使用される。管理情報記録用の記憶部としては、NANDメモリ30に記憶されるデータの格納位置とホスト10が指定する論理アドレスとの対応などを管理するための管理情報(NANDメモリ30に記憶されている各種管理テーブルの一部が起動時などに展開された管理テーブル、これら管理テーブルの変更差分情報であるログなど)を格納するために使用される。
図2は、第1の実施形態によるSSDの機能構成を模式的に示すブロック図である。機能構成で見た場合のSSD20は、ホストインタフェース(以下、ホストI/Fと表記)410と、コマンドキュー420と、バッファ430と、NANDメモリ30と、NANDインタフェース(以下、NAND I/Fと表記)440と、転送順序制御部450と、アドレス情報キャッシュ461と、リオーダバッファ462と、ウェイトキュー463と、ウェイトキュー用リオーダバッファ464と、リソース情報格納部465と、リソース情報格納部465と、制御部470と、を備える。
図2に示す各機能ブロックは、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
ホストI/F410は、ライト処理(書き込み処理)の場合には、ホスト10からのコマンドとNANDメモリ30に書き込むデータを受け付け、リード処理(読み出し処理)の場合には、ホスト10からのコマンドを受け付け、バッファ430に格納されたデータをホスト10へと送出する。ホストI/F410は、制御部470によって実行要求が出されたライトコマンドを受け付けるライトキュー411を有する。ホストI/F410はライトキュー411に登録された順にコマンドを実行する。
コマンドキュー420は、ホストI/F410を介して受け付けたコマンドを格納する。バッファ430は、ライトコマンド(書き込みコマンド)を受けた時に、書き込み処理を行うデータを一時的に記憶するライトキャッシュ(図中、WCと表記)431と、リードコマンドを受けた時に、リードコマンドに含まれるLBAに対応するNANDメモリ30の記憶位置から読み出したデータを一時的に記憶するリードキャッシュ(図中、RCと表記)432と、を有する。
NANDメモリ30は、上記したようにそれぞれがチャネルch0〜ch3によってNAND I/F440に接続される4つの並列動作要素31a〜31dによって構成され、SSD20を動作させる上で必要なソフトウェアやホスト10から書き込み要求があったデータ、NANDメモリ30内でのデータの保存位置を管理する不揮発性管理情報32などを格納する。不揮発性管理情報32は、NANDメモリ30の各並列動作要素31a〜31dが管理する論理アドレスの範囲を規定するアドレス−チャネル対応情報と、NANDメモリ30内のデータのすべての記憶位置を管理する不揮発性アドレス管理情報と、を含む。ここでは、各並列動作要素31a〜31dに不揮発性管理情報32が設けられる場合を示しているが、不揮発性管理情報32は、4つの並列動作要素31a〜31dのうちの少なくとも1つ以上に設けられていればよい。また、アドレス−チャネル対応情報は、いずれか1つの並列動作要素31a〜31dに設けられていればよい。
図3は、不揮発性アドレス管理情報の一例を示す図であり、(a)はアドレス−チャネル対応情報の一例を示す図であり、(b)は不揮発性アドレス管理情報の一例を示す図である。アドレス−チャネル対応情報は、ホスト10から入力される論理アドレスとしてのLBA(Logical Block Addressing)と、各並列動作要素31a〜31d(チャネルch0〜ch3)との関連付けを行っている。LBAはセクタ(サイズ:512B)に対して0からの通し番号を付けた論理アドレスである。なお、セクタサイズはこの限りではない。
この例では、アドレス−チャネル対応情報として、図3(a)に示されるように、0〜L1のLBAにチャネルch0に接続される並列動作要素31a(物理アドレス0〜P1)が割り当てられ、L1〜L2のLBAにチャネルch1に接続される並列動作要素31b(物理アドレスP1〜P2)が割り当てられ、L2〜L3のLBAにチャネルch2に接続される並列動作要素31c(物理アドレスP2〜P3)が割り当てられ、L3〜L4のLBAにチャネルch3に接続される並列動作要素31d(物理アドレスP3〜P4)が割り当てられている。このようにアドレス−チャネル対応情報では、チャネル単位(並列動作要素31a〜31d単位)でLBAとNANDメモリ30内の物理アドレスとの対応付けを管理している。
不揮発性アドレス管理情報は、図3(b)に示されるように、ホスト10から指定される論理アドレスとしてのLBAと、実際のNANDメモリ30上での記憶位置を示す物理アドレスとの対応付けを管理している。ここでは、アドレス−チャネル対応情報と異なり、たとえばセクタ単位でLBAとNANDメモリ30内の物理アドレスとを対応付けて管理しているものとする。また、アドレス変換の単位としては、セクタサイズの2以上の倍数であればよい。SSD20では、論理アドレスと物理アドレスとの関係は予め静的に決定されておらず、データの書き込み時に動的に関係づけられる論物変換方式が採用されている。
NAND I/F440は、転送順序制御部450からのコマンドにしたがってNANDメモリ30とバッファ430との間のデータ転送を制御する。
転送順序制御部450は、制御部470によって実行要求が出されたリードコマンドを受け付けるリードキュー451を有し、リードキュー451に登録された順にコマンドを実行する。コマンドの実行の際には、NANDメモリ30からのデータの読み出しと、読み出したデータのホスト10への転送を制御し、また管理情報の読み出しの際には、NANDメモリ30からアドレス情報キャッシュ461にアドレス管理情報を読み出してくる制御を行う。
また、転送順序制御部450は、特願2010−213776に開示しているように、1つのリードコマンドをLBA順の複数のリード命令列に展開し、NANDメモリ30からLBA順にリード命令列に対応するデータをバッファ430に読み出し、ホスト10へと転送するように制御する。ここではNANDメモリ30からデータをLBA順に読み出すようにしているが、LBA順に読み出すのではなく、バッファ430に読み出す順番に関係なくホスト10へ転送する際にバッファからLBA順に転送する構成としてもよい。
また、転送順序制御部450は、リードキュー451に登録されたリードコマンドの中でNAND I/F440へ発行可能な要求を前もって発行する。たとえば、あるリードコマンドのデータ転送中に、リードキュー451に登録された後続するリードコマンドの要求を予めNAND I/F440へ発行し、データ転送処理の準備を先行して行う。そして、上記あるリードコマンドについてのデータ転送が完了すると、NAND I/F440に先行して発行されたリードコマンドの要求が実行され、またリードキュー451に登録された後続するリードコマンドの要求を先行してNAND I/F440へと発行する。ここでは、先行するリードコマンドの要求に対するデータ転送中にNAND I/F440へと発行する要求として、異なるリードコマンドの要求でもよいし、データ転送しているデータがLBA順に読み出されるようにリードコマンド内の後続する要求でもよい。
アドレス情報キャッシュ461は、NANDメモリ30中の不揮発性アドレス管理情報の一部である揮発性アドレス管理情報を格納する。揮発性アドレス管理情報は、リードコマンドのLBAで指定されたNANDメモリ30内のデータを読み出す際に使用する情報であり、NANDメモリ30の不揮発性アドレス管理情報からリードコマンドのLBAが含まれるアドレス管理情報が読み出され、アドレス情報キャッシュ461に展開される。このように、このSSD20では、NANDメモリ30内のすべてのデータの記憶位置をキャッシュメモリに読み出して管理するのではなく、NANDメモリ30内の一部のデータの記憶位置を必要に応じて読み出して管理する方式を採っている。このような構成とすることで、キャッシュメモリ(アドレス情報キャッシュ461)の容量を抑えることができる。
図4は、揮発性アドレス管理情報の一例を示す図である。この揮発性アドレス管理情報は、図3(b)の不揮発性アドレス管理情報の構造と同じであるが、上記したようにNANDメモリ30内のすべてのデータの記憶位置についてのアドレス管理情報ではなく、NANDメモリ30内の一部のデータの記憶位置について格納されている。アドレス情報キャッシュ461の容量は、SSD20に求められる性能によって定められる。なお、揮発性アドレス管理情報は、ホスト10からのコマンドが要求するデータのLBAに対応するNANDメモリ30内の物理アドレスが存在しない場合に、制御部470によってその物理アドレスが含まれるように更新される。
リオーダバッファ462は、制御部470によって実行可能と判断されたコマンドを一時的に格納するバッファである。具体的には、後述するように依存関係がないコマンドであり、かつアドレス情報キャッシュ461にアクセス先のアドレスが管理されているコマンドを一時的に保持する。図5は、リオーダバッファの構成の一例を模式的に示す図である。この図に示されるように、NANDメモリ30のチャネルch0〜ch3(並列動作要素31a〜31d)に対応してコマンドを登録することができる構成となっている。なお、この図でRはリードコマンドを示し、RTはリードコマンドを実行するのに必要な管理情報を読み出すコマンドを示している。
ウェイトキュー463は、制御部470によってすぐには実行できないと判断されたコマンドを一時的に格納するバッファである。具体的には、アドレス情報キャッシュ461にアクセス先のアドレスが管理されていないリードコマンドを一時的に保持する。コマンドを実行することができる環境になった場合に、制御部470によってリオーダバッファ462へと移される。
ウェイトキュー用リオーダバッファ464は、ウェイトキュー463に振り分けられたコマンドのうちリードコマンドについて、NANDメモリ30上のアドレスを特定するのに必要なアドレス管理情報をNANDメモリ30の不揮発性管理情報32から読み出し、アドレス情報キャッシュ461に登録する管理情報読み出しコマンドを一時的に保持する。このウェイトキュー用リオーダバッファ464の構成も図5に示されるリオーダバッファの構成と同様であり、NANDメモリ30のチャネルch0〜ch3(並列動作要素31a〜31d)に対応してコマンドを登録することができる構成となっている。
リソース情報格納部465は、バッファ430のライトキャッシュ431の空き容量を示す書き込み用リソース情報と、NANDメモリ30のコマンドの受け付け状態(処理状態)を示す読み出し用リソース情報と、を有する。読み出し用リソース情報として、NANDメモリ30が受け付けているコマンド数(NANDメモリ30が一度に受け付けることが可能なコマンド数)や各並列動作要素31a〜31d(チャネルch0〜ch3)に積まれているコマンドの数、またはこれら2つを合わせたものなどを用いることができる。
制御部470は、コマンドキュー420に格納されたライトコマンドの書き込みを制御する書き込み制御部471と、コマンドキュー420に格納されたリードコマンドの実行順序を制御するリオーダ制御部472と、コマンドキュー420に格納されたコマンドのアドレスを変換し、アドレス情報キャッシュ461を管理するアドレス管理部473と、バッファ430のライトキャッシュ431の空き容量と、NANDメモリ30のコマンドの受け付け状態を管理するリソース管理部474と、を有する。
書き込み制御部471は、ライトコマンドにしたがってデータをバッファ430のライトキャッシュ431に書き込んだり、ライトキャッシュ431上のデータをNANDメモリ30へと書き込んだりする処理を行う。また、書き込み処理部471は、後述する依存関係のないライトコマンドについて、リソース情報格納部465内の書き込み用リソース情報からライトキャッシュ431の空き領域がライトコマンドで書き込むデータ量よりも大きいと判定した場合に、すぐに実行できるコマンドとし、そうでない場合にすぐには実行できないコマンドとする。また、すぐには実行できないライトコマンドが実行可能な状態となるように環境を整える機能も有する。具体的には、ライトキャッシュ431に転送されるデータ量を書き込むことができるように空き容量を確保する処理を行う。たとえば、ライトキャッシュ431に格納されているデータのうち、最も古いデータからNANDメモリ30に追い出す処理を行う。このNANDメモリ30への書き込み処理は、追い出すデータのLBAが含まれるNANDメモリ30内のブロックを取得し、このブロック内のデータをライトキャッシュ431のデータを用いて更新し、更新したデータをNANDメモリ30内の新たな(別の)ブロックに書き込む。このとき、古いデータが記憶されていたブロックは無効化される。そして、書き込み処理部471は、実行可能なライトコマンドについて、無条件でハードウェア(ホストI/F410のライトキュー411)へ投入する。
リオーダ制御部472は、コマンドキュー420に格納されたコマンドについて依存関係があるかを判定し、依存関係がある場合には、依存関係が解消されるまでそのコマンドの実行を中止する。コマンドの依存関係には、Read After Write(以下、RAWという)、Write After Write(以下、WAWという)およびWrite After Read(以下、WARという)の3種類がある。RAWは、後続する読み出し要求が先行する書き込み要求を追い越して、先行する書き込み要求と同じLBAの古いデータを読み出してしまう場合である。WAWは、後続の書き込み要求が先行する同一アドレスに対する書き込み要求を追い越すことで古い書き込みデータが最終的に残ってしまう場合である。WARは、後続の書き込み要求が先行する読み出し要求を追い越すことで、未来のデータを読み出してしまう場合である。
これらの依存関係は、先行する要求と後続の要求とがいずれも同一のアドレスに対するものである場合である。そのため、リオーダ制御部471は、コマンドキュー420に蓄積されたコマンドのアクセス先のアドレスを調べ、先行する(先に投入された)コマンドと後続の(後に投入された)コマンドとが同じアクセス先アドレスを有し、かつRAW,WAWまたはWARの関係を有する場合には、そのコマンドの実行を中止する処理を行う。
また、リオーダ制御部472は、依存関係がないコマンドについて、すぐに実行可能なコマンドをリオーダバッファ462に格納し、すぐには実行できないコマンドをウェイトキュー463に格納する処理も行う。たとえば、アドレス管理部473によってコマンドのアクセス先のLBAがNANDメモリ30内の物理アドレスに変換された場合に、すぐに実行できるコマンドとし、そうでない場合にすぐには実行できないコマンドとする。
さらに、リオーダ制御部472は、リオーダバッファ462に登録されたコマンドについて、読み出し用リソース情報に基づいてハードウェア(転送順序制御部450のリードキュー451)への投入を制御する。たとえば、NANDメモリ30のリソースとして、NANDメモリ30に投入されている全コマンド数を用いる場合には、NANDメモリ30に投入されている全コマンド数が所定の閾値の場合にリードコマンドを投入せず、閾値未満の場合に閾値から投入されている全コマンド数を差し引いた数のリードコマンドを投入する。また、NANDメモリ30のリソースとして、各並列動作要素31a〜31dに積まれているコマンド数を用いる場合には、リードコマンドを投入する並列動作要素のコマンドの積み数が所定の閾値の場合にリードコマンドを投入せず、閾値未満の場合にたとえばチャネル番号が増える方向にラウンドロビンで空いている並列動作要素31a〜31dに順にリードコマンドを投入する。
また、このときリオーダ制御部472は、リードコマンドのアドレスを参照し、同じアドレス(ページ)へのアクセスとなるリードコマンドが存在するかを判定し、同じアドレス(ページ)または連続するアドレス(ページ)へのアクセスとなるリードコマンドが存在する場合には、続けて実行されるようにリードコマンドの順序を決定する。
たとえば、ウェイトキュー463中のリードコマンドのアクセス先アドレスであるLBAを取得し、アドレス−チャネル対応情報からそのLBAが存在する並列動作要素を特定し、特定した並列動作要素の不揮発性アドレス管理情報からそのLBAとNANDメモリ30内の物理アドレスとの対応関係が記録されているアドレス管理情報を特定する。この特定されたアドレス管理情報をNANDメモリ30上から読み出す管理情報読み出しコマンドを作成し、作成した管理情報読み出しコマンドをウェイトキュー用リオーダバッファ464に登録し、読み出し用リソース情報に基づいてハードウェア(転送順序制御部450のリードキュー451)への投入を制御する。また、ウェイトキュー463中のコマンドで読み込むデータの記録位置の解決に必要なすべての情報(アドレス管理情報)が揃った(アドレス情報キャッシュ461に登録された)段階で、そのコマンドをウェイトキュー463からリオーダバッファ462に登録する。なお、管理情報読み出しコマンドを実行する際に、リオーダバッファ462に登録されたリードコマンドで使用されるアドレス管理情報は残し、リオーダバッファ462に登録されたリードコマンドで使用されないアドレス管理情報を消去して、この消去した領域に取得したアドレス管理情報を登録する。
アドレス管理部473は、依存関係がないリードコマンドについて、そのリードコマンドのアクセス先アドレス(LBA)について、アドレス情報キャッシュ461のアドレス管理情報を用いてNANDメモリ30内の物理アドレスに変換し、その結果をリオーダ制御部472に通知する。アドレス情報キャッシュ461のアドレス管理情報のみでアクセス先のNANDメモリ30上の位置を特定することができる場合には、そのNANDメモリ30上の物理アドレスをリオーダ制御部472に通知する。また、アドレス情報キャッシュ461のアドレス管理情報ではアクセス先のNANDメモリ30上の位置を特定することができない場合には、リオーダ制御部472に物理アドレスを特定することができないことを示す情報を通知する。
リソース管理部474は、ライトコマンドの実行に必要なバッファ430のライトキャッシュ431の空き容量を書き込み用リソース情報として管理し、リードコマンドの実行に必要なNANDメモリ30のコマンドの受け付け状態を読み出し用リソース情報として管理し、これらの書き込み用リソース情報と読み出し用リソース情報に変更が生じる際に、リソース情報格納部465内のそれぞれの情報を更新する。
つぎに、このような構成のSSD20におけるコマンドのリオーダ処理について説明する。図6は、第1の実施形態によるコマンドのリオーダ処理の手順の一例を示すフローチャートである。まず、リオーダ制御部472は、過去に実行されたコマンドについてSSD20の操作が完了したかを判定する(ステップS11)。ここでは、たとえばアドレス管理情報の読み出しやNANDメモリ30からの1ページ分のデータの読み出し完了などのSSD20の内部状態の変化が検出されたかを判定する。ついで、第1の状態の更新処理としてSSD20の操作完了時の処理を行う(ステップS12)。
図7は、SSDの操作完了時の処理手順の一例を示すフローチャートである。リオーダ制御部472は、過去に実行されたコマンドの完了した操作の情報を取得し(ステップS31)、完了した操作がSSD20へのリード要求であるかを判定する(ステップS32)。完了した操作がSSD20へのリード要求である場合(ステップS32でYesの場合)には、リソース管理部474は、リソース情報格納部465の読み出し用リソース情報を更新する(ステップS33)。
ついで、実行待ちのリードコマンドがあるかを判定し(ステップS34)、実行待ちのリードコマンドがある場合(ステップS34でYesの場合)には、後述するリードコマンドの実行処理を行う(ステップS35)。その後または実行待ちのリードコマンドがない場合(ステップS34でNoの場合)には、図6のフローチャートへと処理が戻る。
また、ステップS32で完了した操作がSSD20へのライト要求である場合(ステップS32でNoの場合)には、書き込み制御部471は、バッファ430のライトキャッシュ431を確保する(ステップS36)。このとき、リソース管理部474は、リソース情報格納部465の書き込み用リソース情報を更新する。
その後、実行待ちのライトコマンドがあるかを判定し(ステップS37)、実行待ちのライトコマンドがある場合(ステップS37でYesの場合)には、後述するライトコマンドの実行処理を行う(ステップS38)。その後または実行待ちのライトコマンドがない場合(ステップS37でNoの場合)には、図6のフローチャートへと処理が戻る。
図6のフローチャートに戻り、ステップS12のSSD20の操作完了時の処理が終了後、またはステップS11でSSD20の操作が完了した場合(ステップS11でNoの場合)には、新しいコマンドを受信したか、またはコマンドの実行が完了したかを判定する(ステップS13)。新しいコマンドを受信したかまたはコマンドの実行が完了した場合(ステップS13でYesの場合)には、第2の状態更新処理としてコマンドの依存関係更新処理を行う(ステップS14)。これは、新たなコマンドを受信したことによって、コマンドの依存関係が発生したか、またコマンドの実行を完了したことによって、依存関係のあったコマンドに関して、依存関係が解消されたかを確認する。
その後、またはステップS13で新しいコマンドを受信せずかつコマンドの実行が完了していない場合(ステップS13でNoの場合)には、上記第1と第2の状態の更新処理を行ったかを判定する(ステップS15)。第1と第2の状態の更新処理を行った場合(ステップS15でYesの場合)には、データ転送の準備処理を行う(ステップS16)。
図8は、データ転送の準備処理の手順の一例を示すフローチャートである。まず、ホスト10からのコマンドがホストI/F410を介してSSD20に入力され、コマンドキュー420が新たなコマンドを受け付ける(ステップS51)。ついで、リオーダ制御部472がキューイングされたコマンド間の依存関係の更新と依存関係の存在の有無を判断し(ステップS52)、依存関係のないコマンドが存在するかを判定する(ステップS53)。コマンド間の依存関係の存在については、リオーダ制御部472は、たとえばコマンドキュー420に蓄積されたコマンドのアクセス先アドレスを用いて、コマンド間に上記したRAW,WAWまたはWARの関係があるかを判定する。
依存関係のないコマンドが存在する場合(ステップS53でYesの場合)には、リオーダ制御部472は、コマンドの種類とLBA、コマンドで実行されるデータの転送サイズを取得する(ステップS54)。ついで、取得したコマンドがリードコマンドであるかを判定する(ステップS55)。コマンドがリードコマンドである場合(ステップS55でYesの場合)には、リオーダ制御部472は後述するリードコマンドの処理を実行し(ステップS56)、図6のフローチャートに処理が戻る。また、コマンドがリードコマンドでない場合(ステップS55でNoの場合)には、書き込み制御部471は後述するライトコマンドの処理を実行し(ステップS57)、図6のフローチャートに処理が戻る。
一方、ステップS53で依存関係のあるコマンドが存在する場合(ステップS53でNoの場合)には、コマンドの転送準備をしていないコマンドであるかを判定する(ステップS58)。コマンドの転送準備をしているコマンドである場合(ステップS58でNoの場合)には、図6のフローチャートに処理が戻る。
また、コマンドの転送準備をしていないコマンドである場合(ステップS58でYesの場合)には、そのコマンドがリードコマンドであるかを判定する(ステップS59)。リードコマンドである場合(ステップS59でYesの場合)には、リオーダ制御部472は管理情報の先行要求処理を行う(ステップS60)。この処理は、実行しようとするコマンドが依存関係のあるリードコマンドの場合に、そのコマンドのアクセス先のデータを取得する際に用いるアドレス管理情報を予め取得する処理である。
図9は、管理情報の先行要求処理の手順の一例を示すフローチャートである。まず、アドレス管理部473によって、アドレス情報キャッシュ461中の揮発性アドレス管理情報を用いて、転送するデータのNANDメモリ30上の物理アドレスを解決する処理を行い(ステップS71)、その結果から、リオーダ制御部472は、NANDメモリ30上のアドレスを解決することができたかを判定する(ステップS72)。具体的には、アドレス管理部473によって、リードコマンドに含まれるLBAがNANDメモリ30内での記録位置を示す物理アドレスに変換されるかを判定する。そして、アドレス管理部473によって物理アドレスが返された場合には、リオーダ制御部472は転送するデータのNANDメモリ30上の物理アドレスを解決することができると判定し、物理アドレスが返されない場合には、転送するデータのNANDメモリ30上の物理アドレスを解決することができないと判定する。
転送するデータのNANDメモリ30上のアドレスを解決できた場合(ステップS72でYesの場合)には、アドレス情報キャッシュ461中の揮発性アドレス管理情報で解決できたことを示し、新たにアドレス管理情報を取得する必要はないので、アドレス管理情報の先行要求処理が終了し、処理が図8のフローチャートに戻る。
また、転送するデータのNANDメモリ30上のアドレスを解決できなかった場合(ステップS72でNoの場合)には、リオーダ制御部472は、読み出すべきアドレス管理情報を特定し、読み出すべきアドレス管理情報を読み出す管理情報読み出しコマンドを作成する(ステップS73)。読み出すべきアドレス管理情報とは、リードコマンドで指定されるLBAのうち、揮発性アドレス管理情報に含まれないLBAとNANDメモリ30上の物理アドレスとの対応関係を示す情報である。リオーダ制御部472は、読み出すべきアドレス管理情報が格納されている並列動作要素をアドレス−チャネル対応情報から取得し、その読み出すべきアドレス管理情報が格納されている位置を取得することによって、管理情報読み出しコマンドを作成する。そして、リオーダ制御部472は、作成した管理情報読み出しコマンドを、ウェイトキュー用リオーダバッファ464のアクセス先の並列動作要素に対応するキューに配置する。
ついで、リオーダ制御部472は、アドレス管理情報の読み出し時にアクセスするNAND I/F440(並列動作要素31a〜31d)の現在のリソース状況を取得して(ステップS74)、管理情報読み出しコマンドの実行の有無を判断する(ステップS75)。具体的には、リオーダ制御部472は、リソース情報格納部465から現在の読み出し用リソース情報を取得し、読み出し用リソース情報からNAND I/F440にコマンドを投入することができるかを判断する。アクセスするNAND I/F440のリソース量がいっぱいである場合には、管理情報読み出しコマンドを実行せず、アクセスするNAND I/F440のリソース量に空きがある場合には、管理情報読み出しコマンドを実行すると判定する。
管理情報読み出しコマンドを実行すると判定した場合(ステップS75でYesの場合)には、ハードウェア(ここでは、転送順序制御部450のリードキュー451)へ管理情報読み出しコマンドを登録し(ステップS76)、図8のフローチャートに処理が戻る。また、管理情報読み出しコマンドを実行しないと判定した場合(ステップS75でNoの場合)には、管理情報の先行要求取得処理が終了し、図8のフローチャートに処理が戻る。
以上の図9に示したように依存関係があるリードコマンドのうち、データ転送のための準備処理が行われていないリードコマンドについて、アドレス管理情報を先行して取得する処理が行われる。そして、この処理が終了すると、図6のフローチャートに処理が戻る。
図8のフローチャートに戻ってステップS59でライトコマンドである場合(ステップS59でNoの場合)には、書き込み制御部471は、バッファ430のライトキャッシュ431にライトコマンドで指定される転送データを書き込めるだけの領域を確保する処理を行い(ステップS61)、図6のフローチャートに処理が戻る。
再び図6のフローチャートに戻り、ステップS16のデータ転送の準備処理の後、またはステップS15で第1と第2の状態の更新処理を行っていない場合(ステップS15でNoの場合)には、リオーダ制御部472は、コマンドキュー420に蓄積されたすべてのコマンドについて処理が完了したかを判定する(ステップS17)。すべてのコマンドの処理が完了していない場合(ステップS17でNoの場合)には、ステップS11に戻り、すべてのコマンドの処理が完了した場合(ステップS17でYesの場合)には、リオーダ処理が終了する。
つぎに、図7のステップS35と図8のステップS56に示されるリードコマンドの処理の詳細について説明する。図10は、リードコマンド処理の手順の一例を示すフローチャートである。まず、アドレス管理部473によって、アドレス情報キャッシュ461中の揮発性アドレス管理情報を用いて、転送するデータのNANDメモリ30上の物理アドレスを解決する処理を行い(ステップS91)、その結果から、リオーダ制御部472は、転送するデータのNANDメモリ30上のアドレスを解決することができたかを判定する(ステップS92)。
ここでは、リオーダ制御部472は、リードコマンドのLBAと転送サイズをアドレス管理部473に通知し、アドレス管理部473は、アドレス情報キャッシュ461中の揮発性アドレス管理情報を用いて、受け取ったLBAをNANDメモリ30上の物理アドレスに変換する。このとき、受け取ったLBAに対応するNANDメモリ30上の物理アドレスが揮発性アドレス管理情報にある場合には、LBAを物理アドレスに変換したものをリオーダ制御部472に返すが、受け取ったLBAに対応するNANDメモリ30上の物理アドレスが揮発性アドレス管理情報にない場合には、物理アドレスがない旨の信号(たとえば受け取ったLBA)を返す。これによって、リオーダ制御部472は、転送するデータのNANDメモリ30上のアドレスを解決できたかを判定することができる。
転送するデータのNANDメモリ30上のアドレスを解決できた場合(ステップS92でYesの場合)には、リオーダ制御部472は、そのリードコマンドについて実行可能と判断する。このとき、リオーダ制御部472は、そのリードコマンドをリオーダバッファ462中のアクセス先の並列動作要素に対応するキューに格納する。
その後、リオーダ制御部472は、リソース情報格納部465の読み出し用リソース情報を用いて、そのリードコマンドでデータ転送が行われるNAND I/F440のリソース状況を確認し(ステップS93)、そのリードコマンド実行の可否を判断する(ステップS94)。ここでは、リオーダ制御部472は、リオーダバッファ462に登録されたリードコマンドのアクセス先のNAND I/F440のリソース量が、所定値未満の場合に実行可能と判断し、NAND I/F440のリソース量が所定値の場合には実行不可能と判断する。なお、ステップS93のリソース状況の確認時に、コマンドの再利用性や連続性も考慮して、コマンドの実行の可否を判定してもよい。たとえば、同じアドレスや連続するアドレスにアクセスするリードコマンドが存在する場合には、それらのコマンドを続けて処理するように並び替えた後に、読み出し用リソース情報を用いてリードコマンド実行の可否を判定してもよい。
判断の結果、コマンドを実行しないと判断した場合(ステップS94でNoの場合)には、リードコマンドの処理が終了し、図7または図8のフローチャートに処理が戻る。また、コマンドを実行すると判断した場合(ステップS94でYesの場合)には、ハードウェア(ここでは、転送順序制御部450のリードキュー451)へリードコマンドの転送要求を登録し(ステップS95)、図7または図8のフローチャートに処理が戻る。
一方、ステップS92で転送するデータのNANDメモリ30上のアドレスを解決できなかった場合(ステップS92でNoの場合)には、リオーダ制御部472は、そのリードコマンドでデータ転送を行う際に使用されるアドレス管理情報を読み出す管理情報読み出しコマンドを既に発行したかを判定する(ステップS96)。管理情報読み出しコマンドを既に発行した場合(ステップS96でYesの場合)には、リードコマンドの処理を終了し、図7または図8のフローチャートに処理が戻る。
また、管理情報読み出しコマンドをまだ発行していない場合(ステップS96でNoの場合)には、リオーダ制御部472は、読み出すべきアドレス管理情報を特定し、管理情報読み出しコマンドを作成する(ステップS97)。
ついで、リオーダ制御部472は、アドレス管理情報の読み出し時にアクセスするNAND I/F440(並列動作要素)の現在のリソース状況、すなわち読み出し用リソース情報を取得して(ステップS98)、リソース状況に基づいて管理情報読み出しコマンドの実行の有無を判断する(ステップS99)。
管理情報読み出しコマンドを実行すると判定した場合(ステップS99でYesの場合)には、ハードウェア(ここでは、転送順序制御部450のリードキュー451)へ管理情報読み出しコマンドを登録し(ステップS100)、図7または図8のフローチャートに処理が戻る。また、管理情報読み出しコマンドを実行しないと判定した場合(ステップS99でNoの場合)には、リードコマンドの処理が終了し、図7または図8のフローチャートに処理が戻る。
以上のようにリードコマンドの処理では、アドレス情報キャッシュ461中の揮発性アドレス管理情報で転送するすべてのデータのNANDメモリ30上の物理アドレスを解決することができる場合には、NAND I/F440のリソース量に応じハードウェアへリードコマンドを転送するか否かを決めている。また、揮発性アドレス管理情報ではNANDメモリ30上の物理アドレスを解決できない場合には、そのリードコマンドを実行するのに用いるアドレス管理情報をアドレス情報キャッシュ461に登録する管理情報読み出しコマンドを発行する処理を行う。
つぎに、図7のステップS38と図8のステップS57に示されるライトコマンドの処理の詳細について説明する。図11は、ライトコマンド処理の手順の一例を示すフローチャートである。まず、書き込み制御部471は、ライトコマンドで指定されるデータ量を書き込むのに十分な空き領域がバッファ430のライトキャッシュ431にあるかを、書き込み用リソース情報を用いて確認し、転送するデータ量分の領域をライトキャッシュ431に確保する処理を行う(ステップS111)。
転送するデータ量分の領域をライトキャッシュ431に確保できた場合(ステップS112でYesの場合)には、書き込み制御部471はライトコマンドの実行を判断する(ステップS113)。このとき、リソース管理部474は、ライトコマンドで転送するデータを書き込むことによって変化するライトキャッシュ431の空き領域を計算し、リソース情報格納部465の書き込み用リソース情報を更新する。そして、ハードウェア(この場合には、ホストI/F410)にライトコマンドの転送要求を登録し(ステップS114)、図7と図8のフローチャートに処理が戻る。
また、転送するデータ量分の領域をライトキャッシュ431に確保できない場合(ステップS112でNoの場合)には、既にバッファ430のライトキャッシュ431の確保処理を行ったコマンドであるかを判定する(ステップS115)。既にライトキャッシュ431の確保処理を行ったコマンドの場合(ステップS115でYesの場合)には、ライトコマンドの処理が終了し、図7と図8のフローチャートに処理が戻る。
また、まだライトキャッシュ431の確保処理を行っていないコマンドの場合(ステップS115でNoの場合)には、バッファ430のライトキャッシュ431にライトコマンドで指定される転送データを書き込めるだけの領域を確保する処理を行い(ステップS116)、図7と図8のフローチャートに処理が戻る。
以上のようにライトコマンドの処理では、書き込むデータ量分の空き領域をライトキャッシュ431に確保することができた場合にはライトコマンドを実行させ、ライトキャッシュ431に書き込むデータ量分の空き領域を確保できなかった場合には、ライトキャッシュ431に空き領域を確保する処理を行うようにしている。
なお、以上で説明した処理は、それぞれの処理が独立して実行される。ここで、第1の実施形態によるリオーダ処理の具体的な流れについて、図面を参照しながら説明する。
<リオーダ処理の概略>
図12は、リオーダ処理の概略を模式的に示す図である。新しいコマンドがコマンドキュー420に登録されると(ステップS201)、制御部470はコマンドキュー420内の新規コマンドを検索し(ステップS202)、ライトコマンドまたはリードコマンドを取得する(ステップS203,S204)。なお、この図でWはライトコマンドを示している。
ライトコマンドを取得した場合(ステップS203)には、制御部470はライト処理を実行する(ステップS205)。上記したように、ライト処理の場合には、ライトキャッシュ431にデータを書き込む空き領域を確保し、確保した空き領域に取得したライトコマンドで書き込むデータを割り当てる。そして、ライトコマンドの実行をライトキュー411に登録し(ステップS206)、ライトキュー411に登録された順にライトコマンドが実行される(ステップS207)。
リードコマンドを取得した場合(ステップS204)には、制御部470はリード処理を実行する(ステップS208)。上記したように、リード処理の場合には、揮発性アドレス管理情報内にリードコマンドのアクセス先のNANDメモリ30内の物理アドレスがあるか否かによってリードコマンドの実行順序を変更し、すぐに実行可能なリードコマンドについてNAND I/F440のリソース状況とリードコマンドの再利用性に応じてさらにリードコマンドの実行順序を変更するリオーダ処理が行われる。また、揮発性アドレス管理情報内にリードコマンドのアクセス先のNANDメモリ30内の物理アドレスがない場合に、そのリードコマンドについてのアドレス管理情報を読み出す管理情報読み出しコマンドを作成する。そして、リードコマンドまたは管理情報読み出しコマンドをリードキュー451に登録し(ステップS209)、リードキュー451に登録された順にリードコマンドが実行される(ステップS210)。
<リード処理時のデータ記録位置の解決の可否によるリオーダ処理>
図13は、リード処理時のリオーダ処理の概略を模式的に示す図である。新しいコマンドがコマンドキュー420に登録されると(ステップS301)、制御部470はコマンドキュー420内の新規コマンドを検索し(ステップS302)、リードコマンドを取得する(ステップS303)。
ついで、制御部470は、アドレス情報キャッシュ461を用いてリードコマンドのLBAをNANDメモリ30内の物理アドレスに変換できるか否かによって振り分け処理を行う(ステップS304,S305)。転送すべき全データの記録位置をアドレス情報キャッシュ461の揮発性アドレス管理情報で解決できる場合には、そのリードコマンドをリオーダバッファ462に登録し(ステップS304)、転送すべきデータの記録位置を揮発性アドレス管理情報で解決できない場合には、そのリードコマンドをウェイトキュー463に登録する(ステップS305)。
ついで、制御部470は、リオーダバッファ462に登録されたリードコマンドについて、NAND I/F440のリソース状況に応じてさらにリードコマンドの実行の可否を決め、実行可能なリードコマンドについてリードキュー451に登録する(ステップS306)。
制御部470は、ウェイトキュー463に登録されたリードコマンドについて、リードコマンドで転送すべき全データの記録位置を解決できるアドレス管理情報を取得する管理情報読み出しコマンドを生成し、リードキュー451に登録する(ステップS307)。また、転送すべきデータの記録位置の解決に必要なアドレス管理情報が揃った段階で、ウェイトキュー463中のリードコマンドを、制御部470を介してリオーダバッファ462に登録する。なお、リオーダバッファ462に登録されたリードコマンドは、ステップS306で説明したように、リソース状況に応じてリードキュー451に登録される。
そして、リードキュー451に登録された順にリードコマンドが実行される(ステップS309)。
<チャネルの利用状況に応じたリオーダ処理>
図14は、チャネルの利用状況に応じたリオーダ処理の概略を模式的に示す図である。この図は、図13のリオーダバッファ462からリードキュー451に登録する処理の詳細を示している。なお、ここでは、リードキュー451に既にリードコマンドR1〜R7が登録されているものとする。
まず、制御部470は、コマンドキュー420からリードコマンドを取得し、アドレス情報キャッシュ461の揮発性アドレス管理情報でアクセス先のNANDメモリ30内の物理アドレスを解決できたリードコマンドをリオーダバッファ462に登録する(ステップS401)。このとき、コマンドキュー420には、リードコマンドR8〜R14が順に登録されたものとし、リオーダバッファ462内のチャネルch0〜ch3(並列動作要素31a〜31d)ごとに設けられたキュー462−0〜462−3のうち、アクセス先の並列動作要素31a〜31dに対応するキューにリードコマンドR8〜R14が登録される。たとえば、リードコマンドR8〜R10,R14は並列動作要素31aをアクセス先とするので、リオーダバッファ462内のチャネルch0に対応するキュー462−0に登録される。また、リードコマンドR11,R12,R13は、それぞれリオーダバッファ462内のチャネルch1,ch2,ch3に対応するキュー462−1,462−2,462−3に登録される。
ついで、制御部470は、リソース情報格納部465の読み出し用リソース情報465aを参照して、並列動作要素31a〜31dのコマンドの登録状況を参照する(ステップS402)。ここで、NANDメモリ30全体のコマンド登録個数は10個に制限されているとし、各並列動作要素31a〜31dへのコマンド登録個数は3個までであるとする。つまり、読み出し用リソース情報465aに、リードコマンドが10個登録されている場合には、リードキュー451への新たなコマンドの登録はできず、また1つのチャネルch0〜ch3にリードコマンドが3個登録されている場合には、そのチャネルには新たなコマンドの登録はできないものとする。
図に示される例では、制御部470は、NANDメモリ30全体のコマンド登録数が7個であるので、新たにコマンドを3個登録することができると判断する。そして、読み出し用リソース情報465aで、最もコマンドの登録個数の少ない並列動作要素に対応するチャネルで、かつチャネル番号の小さいものを検索する。そして、制御部470は、読み出し用リソース情報465aの検索したチャネルからラウンドロビンで空いている場所にリードコマンドを登録し(ステップS403)、読み出し用リソース情報465aを更新する。
この例では、読み出し用リソース情報465aのチャネルch2で最もコマンドの登録個数が少なく、かつチャネル番号が小さいものであるので、まずこのチャネルch2にリードコマンドR12を登録する。ついで、チャネルch3にリードコマンドR13を登録し、さらにチャネルch1にリードコマンドR11を登録する。なお、NANDメモリ30全体に登録できるコマンド数は10個であり、この登録処理の前には7個のコマンドが登録されていたので、3個のリードコマンドが登録される。また、チャネルch0には3個のコマンドが登録されているので、リードコマンドは登録されない。
その後、読み出し用リソース情報465aに登録した順に、リオーダバッファ462からリードキュー451にリードコマンドを登録する(ステップS404)。ステップS403では、リードコマンドR12,R13,R11の順で読み出し用リソース情報465aに登録したので、リードキュー451にこの順番で登録する。その結果、リードキュー451ではリードコマンドR7の後に、リードコマンドR8ではなくリードコマンドR12が登録されることになる。
なお、図14の例では、NANDメモリ30に最初に投入されているコマンド数は、登録可能な個数の10個よりも少ない7個であったが、最初に投入されているコマンド数が10個の場合について、コマンドの投入方法について説明する。図15は、コマンド投入数に制限がある場合の読み出し用リソース情報へのリードコマンドの登録の一例を示す図である。図15(a)に示されるように、読み出し用リソース情報465aには10個のリードコマンドR1〜R10が登録されている。そのため、この状態ではこれ以上のリードコマンドの投入はできない。
その後、図15(b)に示されるように、リードコマンドR1,R2の処理が完了すると、全体で2個のリードコマンドを投入可能な状態となる。そこで、ここでは新たに2個のリードコマンドR11,R12が、上記した規則にしたがってそれぞれチャネルch2,ch3に登録される。
このように、NANDメモリ30に投入される全体のコマンド数に制限がある場合には、コマンドの完了によってコマンド数に空きが生じた後に、新たなコマンドが投入されることになる。
<アドレス管理情報の読み出し制御>
上記したフローチャートを用いた説明では、管理情報読み出しコマンドのリードキュー451への投入は、リードコマンドと同様の手順によって行われる場合を示したが、このような方法に限定されず、他の方法で管理情報読み出しコマンドをリードキュー451へ投入してもよい。
図16は、チャネルの利用状況に応じたリオーダ処理の概略を模式的に示す図である。この図は、図13のウェイトキュー463からリードキュー451に管理情報読み出しコマンドを登録する処理の詳細を示している。なお、ここでは、リードキュー451に既にリードコマンドR1〜R5が登録されているものとする。
まず、制御部470は、ウェイトキュー463に登録されたリードコマンドのアクセスに必要な不揮発性アドレス管理情報のアドレスを取得する(ステップS501)。このとき、たとえば複数のリードコマンドについて不揮発性アドレス管理情報のアドレスを取得してもよく、この例では4つのリードコマンドR21〜R24の不揮発性アドレス管理情報のアドレスを取得するものとする。
ついで、制御部470は、取得した各リードコマンドの不揮発性アドレス管理情報のアドレスを用いて、管理情報読み出しコマンドを作成し、ウェイトキュー用リオーダバッファ464に登録する(ステップS502)。ここでは、リードコマンドR21は、並列動作要素31a,31cの2箇所にアクセスするものであるので、管理情報読み出しコマンドとして、並列動作要素31aにアクセスする際のアドレス管理情報を取得する管理情報読み出しコマンドRT21−aと、並列動作要素31cにアクセスする際のアドレス管理情報を取得する管理情報読み出しコマンドRT21−bと、の2つのコマンドが生成されている。また、リードコマンドR22,R23についてはそれぞれ並列動作要素31dにアクセスするものであるので、管理情報読み出しコマンドとして、並列動作要素31dにアクセスする管理情報読み出しコマンドRT22,RT23が生成される。さらに、リードコマンドR24については、並列動作要素31b,31dの2箇所にアクセスするものであるので、管理情報読み出しコマンドとして、並列動作要素31bにアクセスする際のアドレス管理情報を取得する管理情報読み出しコマンドRT24−aと、並列動作要素31dにアクセスする際のアドレス管理情報を取得する管理情報読み出しコマンドRT24−bと、の2つのコマンドが生成されている。
ついで、ウェイトキュー用リオーダバッファ464のチャネルに対応するキューのいずれかに積まれた管理情報読み出しコマンドの数が所定の数(この例では2)になった時点で、リソース情報格納部465の読み出し用リソース情報465aに、管理情報読み出しコマンドを登録する(ステップS503)。なお、このとき1回の読み出し処理で積めないところ(たとえば、図のウェイトキュー用リオーダバッファ464の管理情報読み出しコマンドRT24−b)は、コマンドの完了を待つか、つぎの読み出し要求として登録する。
その後、読み出し用リソース情報465aに登録した管理情報読み出しコマンドをリードキュー451に登録する(ステップS504)。この例では、読み出し用リソース情報465aに4つの管理情報読み出しコマンドRT21−a〜RT23が登録されており、これらをまとめて1つのリードコマンドとして扱い、リードキューに登録する。
<再利用性を考慮した実行順序入れ替え処理>
図17は、再利用性を考慮したリードコマンドの実行順序の入れ替え処理を模式的に示す図である。ここでは、リオーダバッファ462の並列動作要素31a(チャネルch0)に対応するキューに、4つのリードコマンドRa〜Rdが登録されているものとする。また、リードコマンドRaはブロック0のページ0へのリード要求であり、リードコマンドRbはブロック99のページ0内の領域(1)へのリード要求であり、リードコマンドRcはブロック0のページ0へのリード要求であり、リードコマンドRdはブロック99のページ0内の領域(2)へのリード要求であるものとする。
図17(a)に示されるように、コマンドの再利用性を考慮しない場合では、リオーダバッファ462に登録された順、すなわちリードコマンドRa,Rb,Rc,Rdの順にコマンドの実行処理が行われる。そのため、1つのリードコマンドを実行すると、そのリードコマンドで指定されるNANDメモリ30内の記憶位置からデータを読み出し、その後につぎのリードコマンドを実行する。つまり、1つのコマンドを実行するごとにデータの読み出し時間tRが発生する。
一方、図17(b)に示されるように、コマンドの再利用性を考慮する場合では、リオーダバッファ462に登録されたリードコマンドが、再利用性を考慮してさらに並び替えられる。ここでは、リードコマンドRaと同じアドレスにアクセスするリードコマンドRcを、リードコマンドRaのつぎに配置する。つまり、リードコマンドRbとリードコマンドRcとを入れ替える。その結果、リードコマンドRbはリードコマンドRcの後に配列されることになる。このようにリオーダ処理すると、同じアドレスにアクセスするリードコマンドRaを実行した後に、リードコマンドRcを配置しているので、データの読み出しが一回で済む。また、同じページで異なる領域(1),(2)を読み出すコマンドRb,Rdも一度の読み出し処理で行われる。なお、ここでは同一のページに対する要求をまとめる場合を示したが、既に実行を決定したページのつぎのページに対する要求についても同様にまとめて実行することができる。
このように、すでに実行を決定したページ、またはそのつぎのページに対する要求をまとめるように、リードコマンドの順番を入れ替え、優先的にリードキュー451に登録することで、SSD20内のキャッシュ機能を有効活用することができ、余計な読み出し時間を削減することができる。
第1の実施形態では、依存関係のあるコマンドを中止し、依存関係のないリードコマンドについて、揮発性アドレス管理情報でNANDメモリ30にアクセス可能か否かと、揮発性アドレス管理情報でNANDメモリ30にアクセス可能な場合に並列動作要素31a〜31dでのコマンドの積み具合によって、コマンドキュー420に蓄積されたコマンドの並び替えを行うようにした。これによって、SSD20内でのデータ転送準備の時間を削減しつつ、少ないバッファ量で高いスループットのデータ転送を達成することができる。
また、揮発性アドレス管理情報でNANDメモリ30にアクセス可能でないリードコマンドについては、そのリードコマンドのアクセス先のアドレス管理情報をNANDメモリ30から読み出し、アドレス情報キャッシュ461に登録する管理情報読み出しコマンドを作成し、実行されるようにした。これによって、後回しにされたコマンドも、アクセス環境が整った段階でコマンドが実行されることになる。
さらに、依存関係のないライトコマンドについては、ライトキャッシュ431に転送するデータを書き込むだけのデータ量があるか否かによって、コマンドキュー420に蓄積されたコマンドの並び替えを行うようにした。これによって、ライトキャッシュ431にすぐに転送することができるデータを先に処理し、空き領域を確保しなければならないコマンドを後回しにしたので、SSD20内でのデータ転送準備の時間を削減しつつ、少ないバッファ量で高いスループットのデータ転送を達成することができる。
また、先行するリードコマンドによるデータ転送中に、リードキュー451に登録された後続のリードコマンドをNAND I/F440に予め発行してデータ転送の準備をしておき、先行するリードコマンドによるデータ転送が終了するとすぐにつぎに登録されている後続のリードコマンドによるデータ転送を開始するようにした。これによって、データ転送のスループットを上げることができる。
(第2の実施形態)
図18は、SSDを搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図19は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス1314等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…ホスト、20,100 SSD、30…NANDメモリ、31a〜31d…並列動作要素、32…不揮発性管理情報、40…データ転送装置、41…ATAコントローラ、42…RAMコントローラ、43…NANDコントローラ、45…自動転送管理部、50…RAM、410…ホストI/F、411…ライトキュー、420…コマンドキュー、430…バッファ、431…ライトキャッシュ、432…リードキャッシュ、440…NAND I/F、450…転送順序制御部、451…リードキュー、461…アドレス情報キャッシュ、462…リオーダバッファ、463…ウェイトキュー、464…ウェイトキュー用リオーダバッファ、465…リソース情報格納部、470…制御部、471…書き込み制御部、472…リオーダ制御部、473…アドレス管理部、474…リソース管理部。

Claims (20)

  1. 揮発性メモリと、
    ホスト装置からの書き込みデータをそれぞれ記憶し、前記書き込みデータの物理的な記憶位置である物理アドレスと前記ホスト装置から指定される論理アドレスとを対応付けた不揮発性アドレス管理情報が格納された不揮発性メモリと、
    前記ホスト装置からのコマンドを格納するコマンドキューと、
    前記不揮発性メモリ内の前記不揮発性アドレス管理情報の一部である揮発性アドレス管理情報を格納するアドレス情報キャッシュと、
    前記ホスト装置からコマンドの実行時に、前記コマンドの実行に使用するアドレス管理情報を前記不揮発性メモリから前記アドレス情報キャッシュに読み出して、前記不揮発性メモリに対してリード/ライトを実行するコントローラと、
    を備え、
    前記コントローラは、前記コマンドキューに格納されたリードコマンドのうち、1つのリードコマンドに含まれるアクセス先のすべてが前記揮発性アドレス管理情報に存在するリードコマンドから優先的に実行するようにリオーダ制御することを特徴とするメモリシステム。
  2. 前記コントローラは、前記コマンドキューに格納されたコマンド中の依存関係を調べ、依存関係がないリードコマンドについて前記リオーダ制御することを特徴とする請求項1に記載のメモリシステム。
  3. 前記不揮発性メモリは、それぞれ個別にリード/ライトされる並列動作要素を複数備え、少なくとも1つの前記並列動作要素に前記不揮発性アドレス管理情報を格納し、
    前記コントローラは、前記複数の並列動作要素に対してリード/ライトを同時に実行可能な構成を有し、前記アクセス先のすべてが前記揮発性アドレス管理情報に存在するリードコマンドのうち、コマンドの処理状況が少ない前記並列動作要素から所定の順序で前記リードコマンドを実行させるようにリオーダ制御することを特徴とする請求項2に記載のメモリシステム。
  4. 前記コントローラでリオーダ制御された順にリードコマンドを登録するリードキューと、
    前記リードキューに登録された順に前記リードコマンドを実行する転送順序制御手段と、
    前記揮発性アドレス管理情報で前記不揮発性メモリにアクセス可能なリードコマンドを記憶するリオーダバッファと、
    前記揮発性アドレス管理情報では前記不揮発性メモリにアクセスできないリードコマンドを格納するウェイトキューと、
    をさらに備え、
    前記コントローラは、前記コマンドキューに格納されたリードコマンドのうち、前記リードコマンドに含まれるすべてのアクセス先の論理アドレスを前記揮発性アドレス管理情報によって前記不揮発性メモリ上の記憶位置を特定できるリードコマンドを前記リオーダバッファに登録し、前記不揮発性メモリ上の記憶位置を特定できないリードコマンドを前記ウェイトキューに登録する第1の処理手段を有することを特徴とする請求項1に記載のメモリシステム。
  5. 前記不揮発性メモリは、それぞれ個別にリード/ライトされる並列動作要素を複数備え、少なくとも1つの前記並列動作要素に前記不揮発性アドレス管理情報を格納し、
    前記リオーダバッファは、前記並列動作要素ごとに対応したキューを有し、
    前記第1の処理手段は、前記不揮発性メモリ上の記憶位置を特定できるリードコマンドを、そのアクセス先の前記並列動作要素に対応する前記リオーダバッファ中の前記キューに登録することを特徴とする請求項4に記載のメモリシステム。
  6. 前記コントローラは、コマンドの処理状況が少ない前記並列動作要素から所定の順序で前記リードコマンドを実行させるように、前記リオーダバッファに登録されたリードコマンドを前記リードキューに登録する第2の処理手段を有することを特徴とする請求項5に記載のメモリシステム。
  7. 前記コントローラは、前記コマンドキューに格納されたコマンド中の依存関係を判断し、依存関係がないリードコマンドを前記リオーダバッファと前記ウェイトキューに振り分ける第3の処理手段を有することを特徴とする請求項4〜6のいずれか1つに記載のメモリシステム。
  8. 前記不揮発性メモリと前記揮発性メモリとの間でのデータ転送をコマンドにしたがって行う不揮発性メモリインタフェースを備え、
    前記転送順序制御手段は、先行するリードコマンドのデータ転送中に、前記リードキュー中の前記先行するリードコマンドに後続するリードコマンドの要求を前記不揮発性メモリインタフェースに発行し、
    前記不揮発性メモリインタフェースは、前記先行するリードコマンドのデータ転送が終了した後、発行された前記後続するリードコマンドの要求によるデータ転送処理を開始することを特徴とする請求項4〜7のいずれか1つに記載のメモリシステム。
  9. 前記ウェイトキューに登録された前記リードコマンドについての管理情報読み出しコマンドを記憶するウェイトキュー用リオーダバッファをさらに備え、
    前記コントローラは、前記ウェイトキューに登録された前記リードコマンドの論理アドレスで指定される前記不揮発性メモリ上の記憶位置を特定できるアドレス管理情報を前記不揮発性メモリの前記不揮発性アドレス管理情報から取得して、前記アドレス情報キャッシュに登録する管理情報読み出しコマンドを生成し、前記ウェイトキュー用リオーダバッファに登録し、前記管理情報読み出しコマンドによって前記アドレス情報キャッシュに前記ウェイトキューに登録された前記リードコマンド用のアドレス管理情報が登録された後、前記リードコマンドを前記リオーダバッファに登録する第4の処理手段をさらに有することを特徴とする請求項4〜8のいずれか1つに記載のメモリシステム。
  10. 前記第2の処理手段は、前記リードキューに投入しようとするリードコマンドと同じアドレスまたは連続するアドレスの他のリードコマンドがある場合には、前記リードコマンドとともに前記他のリードコマンドも前記リードキューに投入することを特徴とする請求項9に記載のメモリシステム。
  11. 前記コントローラは、前記コマンドキューに格納されたライトコマンドのうち転送するデータ量分の空きが前記揮発性メモリにあるものを優先的に処理する書き込み制御手段を有することを特徴とする請求項1〜10のいずれか1つに記載のメモリシステム。
  12. 前記書き込み制御手段は、前記コマンドキューに格納されたライトコマンドのうち依存関係がないライトコマンドを依存関係があるライトコマンドよりも優先的に処理することを特徴とする請求項11に記載のメモリシステム。
  13. 前記書き込み制御手段は、前記依存関係がないライトコマンドのうち前記転送するデータ量分の空きが前記揮発性メモリにない場合に、前記揮発性メモリに前記転送するデータ量分の空きを作るように前記揮発性メモリに開き領域を確保するコマンドを生成し、実行することを特徴とする請求項11または12に記載のメモリシステム。
  14. 揮発性メモリと、
    ホスト装置からの書き込みデータをそれぞれ記憶し、前記書き込みデータの物理的な記憶位置である物理アドレスと前記ホスト装置から指定される論理アドレスとを対応付けた不揮発性アドレス管理情報が格納された不揮発性メモリと、
    前記ホスト装置からのコマンドを格納するコマンドキューと、
    前記不揮発性メモリ内の前記不揮発性アドレス管理情報の一部である揮発性アドレス管理情報を格納するアドレス情報キャッシュと、
    前記ホスト装置からコマンドの実行時に、前記コマンドの実行に使用するアドレス管理情報を前記不揮発性メモリから前記アドレス情報キャッシュに読み出して、前記不揮発性メモリに対してリード/ライトを実行するコントローラと、
    を備えるメモリシステムの制御方法であって、
    前記コントローラは、前記コマンドキューに格納されたリードコマンドのうち、1つのリードコマンドに含まれるアクセス先のすべてが前記揮発性アドレス管理情報に存在するリードコマンドから優先的に実行するようにリオーダ制御することを特徴とするメモリシステムの制御方法。
  15. 前記コントローラは、前記コマンドキューに格納されたコマンド中の依存関係を調べ、依存関係がないリードコマンドについて前記リオーダ制御することを特徴とする請求項14に記載のメモリシステムの制御方法。
  16. 前記不揮発性メモリは、それぞれ個別にリード/ライトされる並列動作要素を複数備え、少なくとも1つの前記並列動作要素に前記不揮発性アドレス管理情報を格納し、
    前記コントローラは、前記複数の並列動作要素に対してリード/ライトを同時に実行可能な構成を有し、前記アクセス先のすべてが前記揮発性アドレス管理情報に存在するリードコマンドのうち、コマンドの処理状況が少ない前記並列動作要素から所定の順序で前記リードコマンドを実行させるようにリオーダ制御することを特徴とする請求項15に記載のメモリシステムの制御方法。
  17. 前記不揮発性メモリと前記揮発性メモリとの間でのデータ転送をコマンドにしたがって行う不揮発性メモリインタフェースと、
    前記コントローラによってリオーダ制御された順に前記不揮発性メモリインタフェースを介して前記リードコマンドを実行する転送順序制御手段と、
    をさらに備え、
    前記転送順序制御手段は、先行するリードコマンドのデータ転送中に、前記先行するリードコマンドに後続するリードコマンドの要求を前記不揮発性メモリインタフェースに発行し、
    前記不揮発性メモリインタフェースは、前記先行するリードコマンドのデータ転送が終了した後、発行された前記後続するリードコマンドの要求によるデータ転送処理を開始することを特徴とする請求項14〜16のいずれか1つに記載のメモリシステムの制御方法。
  18. 前記コントローラは、前記コマンドキューに格納されたライトコマンドのうち転送するデータ量分の空きが前記揮発性メモリにあるものを優先的に処理することを特徴とする請求項14〜17のいずれか1つに記載のメモリシステムの制御方法。
  19. 前記コントローラは、前記コマンドキューに格納されたライトコマンドのうち依存関係がないライトコマンドを依存関係があるライトコマンドよりも優先的に処理することを特徴とする請求項18に記載のメモリシステムの制御方法。
  20. 前記コントローラは、前記依存関係がないライトコマンドのうち前記転送するデータ量分の空きが前記揮発性メモリにない場合に、前記揮発性メモリに前記転送するデータ量分の空きを作るように前記揮発性メモリに開き領域を確保するコマンドを生成し、実行することを特徴とする請求項18または19に記載のメモリシステムの制御方法。
JP2010279376A 2010-12-15 2010-12-15 メモリシステムおよびメモリシステムの制御方法 Active JP5296041B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010279376A JP5296041B2 (ja) 2010-12-15 2010-12-15 メモリシステムおよびメモリシステムの制御方法
US13/825,695 US20130212319A1 (en) 2010-12-15 2011-12-14 Memory system and method of controlling memory system
PCT/JP2011/079580 WO2012081730A1 (en) 2010-12-15 2011-12-14 Memory system and method of controlling memory system
TW100146301A TWI472917B (zh) 2010-12-15 2011-12-14 記憶系統及控制記憶系統之方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010279376A JP5296041B2 (ja) 2010-12-15 2010-12-15 メモリシステムおよびメモリシステムの制御方法

Publications (2)

Publication Number Publication Date
JP2012128646A true JP2012128646A (ja) 2012-07-05
JP5296041B2 JP5296041B2 (ja) 2013-09-25

Family

ID=46244819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010279376A Active JP5296041B2 (ja) 2010-12-15 2010-12-15 メモリシステムおよびメモリシステムの制御方法

Country Status (4)

Country Link
US (1) US20130212319A1 (ja)
JP (1) JP5296041B2 (ja)
TW (1) TWI472917B (ja)
WO (1) WO2012081730A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015111148A1 (ja) * 2014-01-22 2015-07-30 株式会社日立製作所 ストレージ装置およびストレージ装置制御方法
US9286206B2 (en) 2013-07-30 2016-03-15 Kabushiki Kaisha Toshiba Memory system
US9569329B2 (en) 2014-03-19 2017-02-14 Nec Corporation Cache control device, control method therefor, storage apparatus, and storage medium
US9792989B2 (en) 2013-02-07 2017-10-17 Toshiba Memory Corporation Memory system including nonvolatile memory
US9959206B2 (en) 2015-05-19 2018-05-01 Toshiba Memory Corporation Memory system and method of controlling cache memory
JP2022046413A (ja) * 2020-09-10 2022-03-23 ウェスタン デジタル テクノロジーズ インコーポレーテッド 記憶デバイスのための改良された先読み能力

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9251055B2 (en) 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
KR20130109426A (ko) * 2012-03-27 2013-10-08 삼성전자주식회사 메모리 확장 장치 및 그것을 사용하는 휴대용 모바일 장치
US9529724B2 (en) 2012-07-06 2016-12-27 Seagate Technology Llc Layered architecture for hybrid controller
US9594685B2 (en) 2012-07-06 2017-03-14 Seagate Technology Llc Criteria for selection of data for a secondary cache
US9477591B2 (en) 2012-07-06 2016-10-25 Seagate Technology Llc Memory access requests in hybrid memory system
US9772948B2 (en) 2012-07-06 2017-09-26 Seagate Technology Llc Determining a criterion for movement of data from a primary cache to a secondary cache
KR101970712B1 (ko) 2012-08-23 2019-04-22 삼성전자주식회사 단말기의 데이터 이동장치 및 방법
KR101932920B1 (ko) * 2012-09-14 2019-03-18 삼성전자 주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
CN104919433B (zh) * 2013-01-11 2017-10-31 英派尔科技开发有限公司 用于闪存的页面分配
US8891296B2 (en) 2013-02-27 2014-11-18 Empire Technology Development Llc Linear Programming based decoding for memory devices
TWI526838B (zh) 2013-02-27 2016-03-21 東芝股份有限公司 記憶體裝置
US9367247B2 (en) * 2013-08-20 2016-06-14 Seagate Technology Llc Memory access requests in hybrid memory system
US9785564B2 (en) 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
US9690515B2 (en) 2013-10-25 2017-06-27 Sandisk Technologies Llc Delayed automation to maximize the utilization of read and write cache
US9859925B2 (en) 2013-12-13 2018-01-02 Empire Technology Development Llc Low-complexity flash memory data-encoding techniques using simplified belief propagation
KR20160065468A (ko) * 2014-12-01 2016-06-09 삼성전자주식회사 솔리드 스테이트 드라이브의 동작 방법
US10452557B2 (en) * 2015-01-28 2019-10-22 Hitachi, Ltd. Storage apparatus, computer system, and method for improved read operation handling
US10296236B2 (en) * 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US10198208B2 (en) * 2015-11-13 2019-02-05 International Business Machines Corporation Performing collective I/O operations within operating system processes
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
CN106339326A (zh) * 2016-08-26 2017-01-18 记忆科技(深圳)有限公司 一种提升固态硬盘顺序读性能的方法
CN107797760B (zh) * 2016-09-05 2021-06-11 北京忆恒创源科技有限公司 一种访问缓存信息的方法、装置与固态驱动器
CN107797759B (zh) * 2016-09-05 2021-05-18 北京忆恒创源科技有限公司 访问缓存信息的方法、装置与驱动器
KR20180032039A (ko) * 2016-09-21 2018-03-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180038875A (ko) 2016-10-07 2018-04-17 삼성전자주식회사 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들
US11003602B2 (en) 2017-01-24 2021-05-11 Micron Technology, Inc. Memory protocol with command priority
KR20190052441A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN109901785B (zh) * 2017-12-08 2022-04-05 华为云计算技术有限公司 命令排序方法、降低读时延方法及固态硬盘ssd控制器
JP7013294B2 (ja) 2018-03-19 2022-01-31 キオクシア株式会社 メモリシステム
CN110321060A (zh) * 2018-03-31 2019-10-11 深圳忆联信息系统有限公司 数据存储的方法及装置
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
KR20200019431A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11494306B2 (en) 2019-09-20 2022-11-08 Micron Technology, Inc. Managing data dependencies in a transfer pipeline of a hybrid dimm
US11531622B2 (en) * 2019-09-20 2022-12-20 Micron Technology, Inc. Managing data dependencies for out of order processing in a hybrid DIMM
US11256423B2 (en) * 2019-10-14 2022-02-22 Western Digital Technologies, Inc. Efficiently identifying command readiness based on system state and data spread in multi queue depth environment
US20240143512A1 (en) * 2022-11-01 2024-05-02 Western Digital Technologies, Inc. Write buffer linking for easy cache reads

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175537A (ja) * 1999-12-17 2001-06-29 Hitachi Ltd 記憶装置システムのキャッシュ常駐方式
JP2004102822A (ja) * 2002-09-11 2004-04-02 Toshiba Corp ディスクアレイ制御装置及びディスクアレイ制御装置におけるデータ書き込み方法
JP2011070365A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7187572B2 (en) * 2002-06-28 2007-03-06 Rambus Inc. Early read after write operation memory device, system and method
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US6112265A (en) * 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
US6260189B1 (en) * 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
JP3440032B2 (ja) * 1999-07-15 2003-08-25 パナソニック コミュニケーションズ株式会社 メモリ制御装置,ファクシミリ装置および画像形成装置
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US6490635B1 (en) * 2000-04-28 2002-12-03 Western Digital Technologies, Inc. Conflict detection for queued command handling in disk drive controller
US6829699B2 (en) * 2000-12-23 2004-12-07 International Business Machines Corporation Rename finish conflict detection and recovery
JP2006146833A (ja) * 2004-11-25 2006-06-08 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法
JP2010512584A (ja) * 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
JP4643667B2 (ja) * 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
KR101102136B1 (ko) * 2008-03-01 2012-01-02 가부시끼가이샤 도시바 메모리 시스템
JP4653817B2 (ja) * 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
KR101553532B1 (ko) * 2008-04-17 2015-09-16 삼성전자주식회사 스토리지 장치
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
KR20100012468A (ko) * 2008-07-29 2010-02-08 주식회사 하이닉스반도체 고속 동작하는 반도체 스토리지 시스템
US8099566B2 (en) * 2009-05-15 2012-01-17 Oracle America, Inc. Load/store ordering in a threaded out-of-order processor
CN101908368A (zh) * 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法
TWI499907B (zh) * 2009-07-17 2015-09-11 Genesys Logic Inc 快閃記憶體之平行處理架構及其方法
US8549274B2 (en) * 2010-04-14 2013-10-01 Jade Quantum Technologies, Inc. Distributive cache accessing device and method for accelerating to boot remote diskless computers
US9292294B2 (en) * 2012-09-27 2016-03-22 Intel Corporation Detection of memory address aliasing and violations of data dependency relationships

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175537A (ja) * 1999-12-17 2001-06-29 Hitachi Ltd 記憶装置システムのキャッシュ常駐方式
JP2004102822A (ja) * 2002-09-11 2004-04-02 Toshiba Corp ディスクアレイ制御装置及びディスクアレイ制御装置におけるデータ書き込み方法
JP2011070365A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792989B2 (en) 2013-02-07 2017-10-17 Toshiba Memory Corporation Memory system including nonvolatile memory
US9286206B2 (en) 2013-07-30 2016-03-15 Kabushiki Kaisha Toshiba Memory system
WO2015111148A1 (ja) * 2014-01-22 2015-07-30 株式会社日立製作所 ストレージ装置およびストレージ装置制御方法
US9569329B2 (en) 2014-03-19 2017-02-14 Nec Corporation Cache control device, control method therefor, storage apparatus, and storage medium
US9959206B2 (en) 2015-05-19 2018-05-01 Toshiba Memory Corporation Memory system and method of controlling cache memory
US10540278B2 (en) 2015-05-19 2020-01-21 Toshiba Memory Corporation Memory system and method of controlling cache memory
JP2022046413A (ja) * 2020-09-10 2022-03-23 ウェスタン デジタル テクノロジーズ インコーポレーテッド 記憶デバイスのための改良された先読み能力
JP7170093B2 (ja) 2020-09-10 2022-11-11 ウェスタン デジタル テクノロジーズ インコーポレーテッド 記憶デバイスのための改良された先読み能力

Also Published As

Publication number Publication date
WO2012081730A1 (en) 2012-06-21
TW201232259A (en) 2012-08-01
TWI472917B (zh) 2015-02-11
US20130212319A1 (en) 2013-08-15
JP5296041B2 (ja) 2013-09-25

Similar Documents

Publication Publication Date Title
JP5296041B2 (ja) メモリシステムおよびメモリシステムの制御方法
EP2396729B1 (en) Memory system and method of controlling memory system
EP2529308B1 (en) A system and method for read-while-write with nand memory device
JP5404483B2 (ja) メモリシステム
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US9183136B2 (en) Storage control apparatus and storage control method
US20090132761A1 (en) Storage management method and system using the same
US20190294365A1 (en) Storage device and computer system
JP6139381B2 (ja) メモリシステムおよび方法
US20080140919A1 (en) Multi-channel solid-state storage system
JP2011128998A (ja) 半導体記憶装置
KR20120112965A (ko) 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법
KR20030075356A (ko) 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법
KR20130112210A (ko) 메모리 시스템 및 그것의 페이지 교체 방법
US11520520B2 (en) Memory system and method of controlling nonvolatile memory
US11960396B2 (en) Method and computer program product for performing data writes into a flash memory
JP2019046238A (ja) メモリシステム
CN110908595B (zh) 存储装置及信息处理系统
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
US9058113B2 (en) Storage region providing device, storage region providing method, and recording medium
KR102076248B1 (ko) 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
JP6836536B2 (ja) ストレージシステム及びio処理の制御方法
KR20090053164A (ko) 상태 정보를 관리하는 플래시 메모리 제어 장치 및 방법
US20240069747A1 (en) Memory system
US20240094904A1 (en) Memory system and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130612

R151 Written notification of patent or utility model registration

Ref document number: 5296041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350