JP5896328B2 - 高性能ahciインターフェイス - Google Patents

高性能ahciインターフェイス Download PDF

Info

Publication number
JP5896328B2
JP5896328B2 JP2012289464A JP2012289464A JP5896328B2 JP 5896328 B2 JP5896328 B2 JP 5896328B2 JP 2012289464 A JP2012289464 A JP 2012289464A JP 2012289464 A JP2012289464 A JP 2012289464A JP 5896328 B2 JP5896328 B2 JP 5896328B2
Authority
JP
Japan
Prior art keywords
command
host
memory controller
commands
time
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.)
Active
Application number
JP2012289464A
Other languages
English (en)
Other versions
JP2013137772A (ja
Inventor
ペレド アリエ
ペレド アリエ
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2013137772A publication Critical patent/JP2013137772A/ja
Application granted granted Critical
Publication of JP5896328B2 publication Critical patent/JP5896328B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Communication Control (AREA)

Description

本発明は、一般的に、データ記憶に関するものであり、より特定すれば、メモリコマンドを同時に実行するための方法及びシステムに関する。
記憶装置と通信するための種々の記憶プロトコルが知られている。1つの規範的な記憶プロトコルは、シリアルアドバンストテクノロジーアタッチメント(SATA)プロトコルである。また、アドバンストホストコントローラインターフェイス(AHCI)と称されるプロトコルは、SATAプロトコルを使用するホストシステムメモリとアタッチされた記憶装置との間のデータの交換を明記している。
SATAは、例えば、相互参照としてここに援用する2009年6月2日付の“Serial ATA International Organization: Serial ATA Revision 3.0”に明記されている。AHCIは、例えば、相互参照としてここに援用する2008年6月26日付の“Serial ATA Advanced Host Controller Interface (AHCI)”改訂1.3に明記されている。
ここに述べる本発明の一実施形態では、所与の時間に単一コマンドのみの処理をサポートする記憶プロトコルに基づいてホストから実行のための複数のコマンドをメモリで受け取ることを含む方法が提供される。第1の時間に、第1のコマンドがメモリで実行され、そして記憶プロトコルに基づいて処理が現在サポートされるところの単一コマンドとして働くために第1のコマンドとは異なる第2のコマンドが選択されても、第1のコマンドに関連したデータがホストと交換される。第1のコマンドの進行は、第1の時間より後である第2の時間に、処理が現在サポートされるところの単一コマンドとして働くために第1のコマンドが選択されたことを検出した際に、ホストに報告される。
ある実施形態では、記憶プロトコルは、アドバンストホストコントローラインターフェイス(AHCI)プロトコルを含む。一実施形態において、第1のコマンドを実行することは、第1の時間に第1のコマンドの進行を報告するのを控えることを含む。ここに開示する実施形態では、第1のコマンドを実行することは、第1の時間に第1のコマンドの進行をキャッシュ記憶することを含み、そしてその進行を報告することは、キャッシュ記憶された進行を第2の時間にホストに報告することを含む。ここに例示する実施形態では、ホストは、処理がサポートされる単一コマンドの進行を報告するために1つ以上のレジスタを備え、そして進行を報告することは、キャッシュ記憶された進行でそれらレジスタを更新することを含む。
別の実施形態では、データを交換することは、第1のコマンドに関連したデータの2つ以上の部分を、少なくとも1つの他のコマンドに関連した付加的なデータとインターリーブして交換することを含む。更に別の実施形態では、データを交換することは、第1のコマンドが、記憶プロトコルに基づいて処理が現在サポートされているところの単一コマンドでなくても、第1のコマンドに関連したデータをホストと交換することを含む。
更に別の実施形態では、第1のコマンドを実行することは、第1のコマンドが、記憶プロトコルに基づいて処理が現在サポートされているところの単一コマンドでなくても、第1のコマンドを実行することを含む。一実施形態において、コマンドを受け取ることは、ホストからコマンドを第1の順序で受け容れ、そして第1の順序とは異なる第2の順序でコマンドを実行することを含む。データを交換することは、ホストのプロセッサを伴うことなく、ホストのホストメモリへ又はそこからデータを転送することを含む。
更に、本発明の実施形態によれば、メモリ及びメモリコントローラを備えた装置が提供される。メモリコントローラは、所与の時間に単一のコマンドのみの処理をサポートする記憶プロトコルに基づいてホストから実行のための複数のコマンドをメモリにおいて受け取り、第1の時間に、第1のコマンドをメモリにおいて実行し、そして記憶プロトコルに基づいて処理が現在サポートされるところの単一コマンドとして働くために第1のコマンドとは異なる第2のコマンドが選択されても、第1のコマンドに関連したデータをホストと交換し、そして第1のコマンドの進行を、第1の時間より後である第2の時間に、処理が現在サポートされるところの単一コマンドとして働くために第1のコマンドが選択されたことを検出した際に、ホストに報告するように構成される。
また、本発明の一実施形態によれば、ホスト及び記憶装置を備えたシステムが提供される。記憶装置は、所与の時間に単一のコマンドのみの処理をサポートする記憶プロトコルに基づいてホストから実行のための複数のコマンドを記憶装置のメモリにおいて受け取り、第1の時間に、第1のコマンドをメモリにおいて実行し、そして記憶プロトコルに基づき処理が現在サポートされるところの単一コマンドとして働くために第1のコマンドとは異なる第2のコマンドが選択されても、第1のコマンドに関連したデータをホストと交換し、そして第1のコマンドの進行を、第1の時間より後である第2の時間に、処理が現在サポートされるところの単一コマンドとして働くために第1のコマンドが選択されたことを検出した際に、ホストに報告するように構成される。
本発明は、添付図面を参照した実施形態の以下の詳細な説明から完全に理解されよう。
本発明の一実施形態によるデータ記憶システムを概略的に示すブロック図である。 本発明の実施形態により複数のコマンドを同時にAHCI準拠で実行するための方法を概略的に示すフローチャートである。
概略
ある記憶プロトコルは、記憶装置が複数の記憶コマンドを同時に及びおそらく順序ずれして受け取り及び処理できるようにする。例えば、SATAプロトコルは、ホストが32個までの未処理コマンドを記憶装置へ発行するネーティブコマンドキュー(NCQ)モードをサポートする。この特徴は、適当な記憶装置がコマンドを高い効率で且つ小さなレイテンシで実行できるようにする。
AHCI記憶プロトコルは、SATAを越えて定義されるもので、記憶装置とホストメモリとの間で直接的にデータを交換するための標準化されたインターフェイス及びデータ構造を提供する。しかしながら、AHCIは、所与の時間に単一コマンドのみに対するデータ転送及び進行報告を明記する。
ここに述べる本発明の実施形態は、記憶装置が、複数のコマンドを同時に及び順序ずれして、しかも、AHCIに準拠して処理できるようにする。ここに述べる実施形態は、主としてAHCIを参照するが、ここに開示する技術は、一度に1つのコマンドのみの処理をサポートする他の記憶プロトコルにも使用することができる。
ある実施形態では、記憶装置は、メモリ及びコントローラを含む。コントローラは、ホストからコマンドを受け取り、メモリにおいてコマンドを実行する。AHCIプロトコルによれば、所与の時間に単一のコマンドが選択され、そしてその単一のコマンドのみについてデータ転送及び進行報告が許される。それでも、ここに開示する実施形態では、コントローラは、複数のコマンドを同時に実行し、そしておそらく、単一コマンド、又は複数コマンドのインターリーブされたデータに対して、例えば、記憶装置の内部スケジューリング優先権に従って、データを順序ずれして転送する。
実行されるコマンドが、AHCIプロトコルに従って処理が現在サポートされるところの単一コマンドとは異なる場合には、コントローラは、実行されるコマンドに関連したデータをホストメモリと直接的に交換するが、適当なAHCIレジスタを使用してコマンドの進行をホストへ報告することは控えるようにする。むしろ、コントローラは、コマンドの進行をキャッシュ記憶し、そしてその後に、当該コマンドがAHCIプロトコルに基づいて単一コマンドとして選択されたときだけ、進行をホストへ報告する。更に、特定コマンドからのデータが順序ずれ形態で転送される場合には、進行報告は、典型的に、データ転送の順序付けされた部分のみについて行われる。
換言すれば、コントローラは、どのコマンドがAHCIプロトコルによる処理のために現在選択されているかに関わらず、受け取った複数のコマンドを同時に及びおそらく順序ずれ又はインターリーブ形態で実行する。コントローラは、典型的に、各実行されたコマンドのデータを、データが入手でき又は要求されるや否や、ホストメモリと直接的に交換し、それ故、データをバッファする必要性をなくす。複数の異なるコマンドのデータが、必要に応じて、インターリーブ形態でホストメモリと交換される。
しかしながら、AHCIプロトコルに準拠したままにするため、コントローラは、実行されたコマンドの進行報告を、AHCIプロトコルにより処理が許される単一コマンドとして働くコマンドが選択されるまで延期する。従って、あるケースでは、ホストは、記憶装置のコントローラによりメモリとで交換されるあるコマンドからのデータを得るが、このコマンドに対する進行報告は、後で到着する。このように進行報告からデータ転送を切り離すことでAHCIプロトコルに違反することはない。
ここに開示する技術は、メモリ装置が、同時及び順序ずれコマンド実行の性能利益に恵まれると同時に、AHCI仕様に合致できるようにする。データは、それが発生されるや否やホストメモリへ転送され、そしてAHCIドライバの変更がホストにおいて必要とされないので、データのバッファ動作は要求されない。
システムの説明
図1は、本発明の一実施形態によるデータ記憶システム20を概略的に示すブロック図である。システム20は、記憶装置、ここに示す例では、ソリッドステートドライブ(SSD)28にデータを記憶するホスト24を備えている。ホスト24及びSSD28は、ペリフェラルコンポーネントインターコネクト(PCI)又はPCIエクスプレス(PCIe)バス30を経て互いに通信する。
ホスト24は、例えば、パーソナルコンピュータ又は移動コンピューティング又は通信装置、或いは企業向けシステムを含む。別の実施形態では、ここに開示する技術は、他の適当な形式の記憶装置及び種々の他のホストに使用することができる。
ホスト24は、上述したAHCIプロトコルに基づいてSSD28にデータを記憶するように構成される。SSD28は、以下に詳細に述べる技術を使用して、複数の記憶コマンドをパラレルに及びおそらく順序ずれして実行すると同時に、AHCI仕様に適合するように構成される。
ホスト24は、中央処理ユニット(CPU)32を備え、これは、AHCIドライバ36及びPCIルートコンプレックス40を使用してSSD28と通信する。AHCIドライバ36は、実行のためのコマンドを割り当て、データ転送のためのリンクリストを準備し、そして各コマンドの完了をより上位のソフトウェアレイヤへ報告する。ドライバは、未処理のコマンドを実行するために、指定のメモリマップI/O(MMIO)レジスタ、ホストCPUメモリ構造におけるデータ構造をセットする。
ホスト24は、ホストメモリ44、典型的に、ランダムアクセスメモリ(RAM)を備えている。ホストメモリ44は、ホストにおいて種々の機能を果たす。AHCI仕様によれば、SSD28は、典型的に、ホストメモリとでデータを直接的に交換し、例えば、読み取りコマンドで検索されたデータを記憶し、又は書き込みコマンドで書き込まれるべきデータを読み取る。
SSD28は、ホスト24により与えられるデータを記憶するのに使用される不揮発性メモリを備えている。ここに示す例では、不揮発性メモリは、複数のNANDフラッシュメモリ装置48を含む。別の実施形態では、不揮発性メモリは、他の適当な形式のメモリを含む。SSDコントローラ52は、ここに開示する技術を使用して、例えば、フラッシュ装置48におけるデータ記憶及び検索や、ホスト24とのインターフェイスを含めて、SSDの種々の機能を実行する。「SSDコントローラ」及び「メモリコントローラ」という語は、ここでは、交換可能に使用される。
図1の例では、SSDコントローラ52は、SSDとホストとの間のPCIインターフェイスとして働くPCIコントローラを備えている。フロントエンドCPU60は、他の機能の中でも、SSDコントローラのAHCIプロトコル動作を管理するソフトウェアを実行する。直接メモリアクセス(DMA)モジュール64は、バス30を経てホストメモリ44とデータを直接的に(即ち、CPU32に関与せずに)交換する。内部メモリ68、典型的に、ダイナミックRAM(DRAM)は、SSDコントローラにおける内部記憶に使用される。典型的に、ここに述べるインターフェイス及び通信プロセスは、SSDコントローラ52の他の要素を使用して、フロントエンドCPU60により実行される。
PCIコントローラ56、フロントエンドCPU60及び/又はDMAモジュール64を含むSSDコントローラ52は、ハードウェアで具現化される。或いは又、SSDコントローラのある機能、例えば、CPU60の機能は、適当なソフトウェアを実行するマイクロプロセッサを使用して、又はハードウェア及びソフトウェア要素の組み合わせにより、具現化されてもよい。ある実施形態では、CPU60は、ここに述べる機能を実行するようにソフトウェアでプログラムされる汎用プロセッサをより成る。ソフトウェアは、例えば、ネットワークを経て電子的形態でプロセッサへダウンロードされてもよいし、それとは別に、又はそれに加えて、磁気、光学又は電子的メモリのような有形媒体に設けられ及び/又は記憶されてもよい。
図1のシステム構成は、単にコンセプトを明瞭にするために示された規範的な構成である。他の適当なシステム構成も使用できる。例えば、ある実施形態では、2つ以上のSSDが同じホストに接続される。本発明の原理を理解する上で必要ない要素、例えば、種々のインターフェイス、アドレス回路、タイミング及びシーケンシング回路、並びにデバッグ回路は、明瞭化のために図から除去されている。
図1に示す規範的なSSD構成では、メモリ装置48及びSSDコントローラ52は、個別の集積回路(IC)として具現化される。しかしながら、別の実施形態では、メモリ装置及びSSDコントローラは、単一のマルチチップパッケージ(MCP)又はシステムオンチップ(SoC)において個別の半導体ダイに一体化されて、内部バスで相互接続されてもよい。更に又、1つ以上のメモリ装置48が配置される同じダイにSSDコントローラ回路の一部又は全部が存在してもよい。更に又、SSDコントローラ52の一部又は全部がソフトウェアで具現化されて、ホスト24により又は他の形式のメモリコントローラにより実行されてもよい。ある実施形態では、ホスト24及びSSDコントローラ52は、同じダイに製造されるか、又は同じ装置パッケージ内で個別のダイに製造される。
AHCI準拠の同時コマンド実行
SATAプロトコルは、複数の記憶コマンドの同時実行をサポートするが、AHCI仕様のプロトコル及びデータ構造は、一度に1つのコマンドのみについて実行及び進行報告をサポートする。AHCIによれば、ホストは、複数の未処理コマンドを記憶装置へ発行する。しかしながら、記憶装置は、実行のためのコマンドを順序ずれして選択できるが、複数のコマンドのデータをインターリーブしたり又は特定コマンドのデータを順序ずれして返送したりすべきではない。
典型的に、ホスト24のAHCIドライバ36は、所与の時間に複数の未処理コマンドから単一のコマンドを選択する。データ転送及び進行報告は、その単一のコマンドに対してのみサポートされる。現在選択された単一コマンドの実行が完了すると、AHCIドライバは、実行のために別のコマンドを選択する。この種の順序正しい逐次の動作は、SSDの記憶性能を著しく低下させ、例えば、レイテンシを増加させ、スループットを低下させる。
ある実施形態では、SSDコントローラ52は、AHCIプロトコルの前記制約を満たし、AHCIの標準的プロトコル及びデータ構造を使用する。それにもかかわらず、SSDコントローラは、複数のコマンドを同時に実行し、そしておそらく、特定コマンドのデータを順序づれして配送する。この特徴は、データの転送を進行の報告から切り離すことにより達成される。
ホストのAHCIドライバ36の観点から、SSDは、現在選択されたコマンドのみを実行し、コマンドに関連したデータを、DMAモジュール64を使用してホストメモリ44と交換し、そしてコマンドの実行が完了するまで、コマンドの進行でホストを更新することが期待される。AHCIドライバは、コマンド実行の進行を報告するためのレジスタを含めて、このフローに適したコマンド及びデータ構造を与える。
ある実施形態では、SSDコントローラ52は、ホスト24から複数の記憶コマンド(例えば、読み取り及び書き込みコマンド)を受け取る。SSDコントローラは、メモリ装置48のコマンドを、必ずしもコマンドがホストから受け取られた順序ではなく、SSD28のあるスケジューリング優先権に基づいて、実行する。更に、SSDコントローラは、所与のコマンドを、このコマンドがAHCIドライバにより実行のために現在選択されたかどうかに関わらず、実行する。
あるコマンドを実行するときに、SSDコントローラは、コマンドに関連したデータをホストメモリ44と交換する。例えば、書き込みコマンドを実行するとき、SSDコントローラは、ホストメモリからデータを記憶のために読み取り、そしてデータをフラッシュ装置48に記憶する。読み取りコマンドにおいて、SSDコントローラは、フラッシュ装置48から検索されたデータをホストメモリ44に記憶する。
SSDコントローラは、実行されるコマンドが、AHCIドライバ36により実行のために現在選択された単一のコマンドであるかどうかに関わらず、上述したデータ交換を実行する。従って、SSDコントローラは、ある適当な優先権、ポリシー又は基準に基づいてコマンドを順序ずれして効率的に実行するための自由度を有している。データは、コマンド実行中にそれが入手できるや否や、ホストメモリと交換されるので、SSDコントローラではバッファ動作が不要である。
AHCIドライバにより実行のために現在選択されていないコマンドをSSDコントローラが実行するというシナリオを考える。そのようなケースでは、AHCIドライバは、SSDがこのコマンドの実行の進行を報告するようにさせる手段とはならない。(このとき、AHCIドライバは、実際には、異なるコマンド、即ちAHCIドライバにより現在選択された単一コマンドの進行を報告することが期待される。)従って、ある実施形態では、SSDコントローラは、現在実行されるコマンドに対する進行の報告を、その後にこのコマンドがAHCIドライバにより選択されるときまで、延期させる。
ある実施形態では、AHCIドライバ36は、1つ以上のレジスタを与え、それを使用して、SSDは、AHCIドライバにより現在選択された単一コマンドの実行の進行を報告することが期待される。AHCIドライバにより現在選択されていないコマンドを実行するときには、SSDコントローラ52は、典型的に、例えば、メモリ68の内部レジスタにおいて実行されるコマンドの進行報告をキャッシュ記憶する。その後、このコマンドがAHCIドライバにより実行のために選択されると、SSDコントローラは、AHCIドライバのレジスタを、そのコマンドのキャッシュ記憶された進行報告で更新する。
ここに開示された技術を使用するとき、SSDコントローラは、現在選択されているがAHCIドライバにより実行のために選択されていないコマンドに対してホストメモリとデータをしばしば交換する。このコマンドの進行報告が延期されるので、AHCIドライバは、典型的に、データが交換されたこと、又はコマンドの実行が完了したことに気付かない。AHCIドライバは、それがコマンドを選択しそして適当な進行報告を受け取ったときに、コマンドが完了したこと及びその後にのみデータが交換されたことに気付く。
更に、この技術を使用して、SSDコントローラは、2つ以上のコマンドのデータを、インターリーブ形態でホストメモリと交換し、即ち必要に応じて異なるコマンドに対して転送部分間を交番させる。所与のコマンドの実行が完了し、そして全ての当該データがホストメモリと交換された後に、SSDコントローラは、この進行をホストへ報告する。この種の動作は、AHCI仕様に違反しない。というのは、各コマンドは、典型的に、ホストメモリ44に専用スペースが予め割り当てられているからである。他方、この種の動作は、著しいパラレル化、ひいては、性能改善を可能にする。
図2は、本発明の実施形態により複数のコマンドを同時にAHCI準拠で実行するための方法を概略的に示すフローチャートである。この方法は、SSD28のSSDコントローラ52が、入力ステップ70において、ホスト24から複数の記憶コマンドを受け取ることで開始される。
SSDコントローラ52は、実行ステップ74において、フラッシュ装置48で複数のコマンドを実行する。SSDコントローラは、典型的に、ある内部スケジューリング優先権に基づいて、おそらく同時に及びおそらく順序ずれしてコマンドを実行する。コマンドの実行は、どのコマンドがホストのAHCIドライバ36により実行のために現在選択されているかに関わらず、実行される。実行中に、SSDコントローラは、種々のコマンドの進行、例えば、どのコマンドがまだ進行中であり、及びどのコマンドが完了したか追跡する。
複数のコマンドの実行中に、SSDコントローラ52は、報告チェックステップ78において、いずれかのコマンドが、ホストへ報告しなければならない進行更新を有するかどうかチェックする。もしそうでなければ、この方法は、前記ステップ74へループバックする。所与のコマンドが、報告されるべき進行更新を有する場合には、SSDコントローラは、このコマンドが、選択チェックステップ82において、AHCI仕様に基づきAHCIドライバ36によって実行のために現在選択された単一コマンドであるかどうかチェックする。
当該コマンドが、AHCIドライバの観点から、現在選択されたコマンドである場合には、SSDコントローラは、進行報告ステップ86において、適当なAHCIレジスタを更新することによりこのコマンドの進行を報告する。さもなければ、SSDコントローラは、延期ステップ90において、進行報告を延期する。SSDコントローラは、典型的に、進行報告をキャッシュ記憶し、そしてその後の時間に、当該コマンドがAHCIドライバにより実行のために選択されたことを検出すると、AHCIレジスタを更新する。次いで、この方法は、前記ステップ74へループバックする。
複数のコマンドの実行中に、SSDコントローラ52は、データチェックステップ94において、いずれかのコマンドがホストメモリ44と交換すべきデータを有するかどうかチェックする。もしそうでなければ、この方法は、前記ステップ74へループバックする。所与のコマンドが交換すべきデータを有する場合には、SSDコントローラは、データ転送ステップ98において、適宜、データをホストメモリへ又はホストメモリから転送する。SSDコントローラは、所与のコマンドがAHCIドライバにより実行のために現在選択されたかどうかに関わらず、データが利用できるや否や又はデータが要求されるや否やデータを転送する。次いで、この方法は、前記ステップ74へループバックする。
上述した実施形態は、一例に過ぎず、本発明は、特に図示して以上に述べたものに限定されないことが明らかであろう。むしろ、本発明の範囲は、上述した種々の特徴の組み合わせ及びサブ組み合わせと、従来技術に開示されておらずに当業者が前記説明を読んだときに明らかとなるその変更及び修正との両方を包含する。本特許出願に参考として援用された文書は、本出願の一体的部分とみなすべきであるが、本明細書において明確に又は暗示的になされた定義と矛盾するようにそれらの援用文書に用語が定義されているものについては、本明細書の定義のみを考慮すべきである。
20:データ記憶システム
24:ホスト
28:ソリッドステートドライブ(SSD)
30:バス
32:中央処理ユニット
36:AHCIドライバ
44:ホストメモリ
48:NANDフラッシュメモリ装置
52:SSDコントローラ
60:フロントエンドCPU
64:直接メモリアクセス(DMA)モジュール64
68:内部メモリ

Claims (19)

  1. メモリコントローラと複数のメモリを備えたメモリシステムにおいて実行される方法であって、
    ホストからの複数のコマンドを前記メモリシステムが受信する手順であって、前記複数のコマンドの各コマンドは、前記メモリコントローラによって実行され、前記ホストからの複数のコマンドが前記メモリコントローラによって受信される順序に対応する番号順で、前記メモリコントローラから前記ホストに提供される前記複数のコマンドの実行の進行報告を指定する記憶プロトコルに従う当該手順と、
    第1の時刻に、前記複数のコマンドのうちの第1のコマンドを前記メモリコントローラにおいて実行し、そして前記第1のコマンドが指定するデータを前記メモリコントローラと前記ホストとの間で交換する手順であって、前記複数のコマンドのうちの第2のコマンドが前記ホストによって送信され前記メモリコントローラで受信された後、前記第1のコマンドが前記ホストによって送信され前記メモリコントローラ受信される当該手順と、
    前記第1の時刻よりも遅い第2の時刻に、前記複数のコマンドのうちの第2のコマンドを前記メモリコントローラにおいて実行し、そして前記第2のコマンドが指定するデータを前記メモリコントローラと前記ホストとの間で交換する手順と、
    前記第2のコマンドの実行が前記メモリコントローラによって完了したことの知らせを含む前記第2のコマンドに関する第1の進行報告を、前記第時刻の後で発生する第3の時刻に、前記メモリコントローラから前記ホストへ送る手順と、
    前記第2のコマンドに関する第1の進行報告が前記ホストに送信されたことに応答して、前記第1のコマンドの実行が前記メモリコントローラによって完了したことの知らせを含む前記第1のコマンドに関する第2の進行報告を、前記メモリコントローラから前記ホストへ送る手順と、
    を実行する方法。
  2. 前記記憶プロトコルは、アドバンストホストコントローラインターフェイス(AHCI)プロトコルを含む、請求項1に記載の方法。
  3. 第1のコマンドを実行する前記手順は、前記第1の時刻に前記第1のコマンドに関する前記第2の進行報告を送信するのを控えることを含む、請求項1に記載の方法。
  4. 第1のコマンドを実行する前記手順は、前記第1の時刻に前記第1のコマンドの進行をキャッシュ記憶することを含み、そして前記第1のコマンドに関する前記第2の進行報告を送る前記手順は、前記第3の時刻の後に発生する第4の時刻に、前記キャッシュ記憶された進行を前記ホストに送信することを含む、請求項1に記載の方法。
  5. 前記ホストは、1つ以上のレジスタを備え、そして前記第1のコマンドに関する前記第2の進行報告を送る前記手順は、前記キャッシュ記憶された進行で前記1つ以上のレジスタを更新することを含む、請求項4に記載の方法。
  6. 前記第1のコマンドによって指定されたデータを交換する前記手順は、前記第1のコマンドによって指定されたデータの2つ以上の部分を、前記複数のコマンドのうちの少なくとも1つの他のコマンドによって指定された付加的なデータとインターリーブして交換することを含む、請求項1に記載の方法。
  7. 前記第1のコマンドによって指定されたデータを交換する前記手順は、前記第2のコマンドに関する第1の進行報告が前記ホストに送信されなくても、前記第1のコマンドによって指定されたデータを前記ホストと交換することを含む、請求項1に記載の方法。
  8. 第1のコマンドを実行する前記手順は、前記第2のコマンドに関する第1の進行報告が前記ホストに送信されなくても、前記第1のコマンドを実行することを含む、請求項1に記載の方法。
  9. 前記ホストから前記複数のコマンドを受信する手順は、前記ホストから前記複数のコマンドを第1の順序で受信し、そして前記第1の順序とは異なる第2の順序で前記複数のコマンドを実行することを含む、請求項1に記載の方法。
  10. メモリと、メモリコントローラとを備えた装置であって、
    前記メモリコントローラは、
    記憶プロトコルに基づき、ホストからの複数のコマンドを前記メモリにおいて受信し、前記記憶プロトコルは、前記ホストからの複数のコマンドが前記メモリコントローラによって受信される順序に対応する番号順で、前記メモリコントローラから前記ホストに提供される前記複数のコマンドの実行の進行報告を指定するものであり、
    第1の時刻に、前記複数のコマンドのうちの第1のコマンドを前記メモリにおいて実行し、そして前記第1のコマンドが指定するデータを前記メモリコントローラと前記ホストとの間で交換し、前記複数のコマンドのうちの第2のコマンドが前記ホストによって送信され前記メモリコントローラで受信された後、前記第1のコマンドが前記ホストによって送信され前記メモリコントローラ受信され、そして、
    前記第1の時刻より後である第2の時刻に、前記複数のコマンドのうちの第2のコマンドを実行し、そして前記第2のコマンドが指定するデータを前記メモリコントローラと前記ホストとの間で交換し、
    前記第2のコマンドの実行が前記メモリコントローラによって完了したことの知らせを含む前記第2のコマンドに関する第1の進行報告を、前記第時刻の後で発生する第3の時刻に前記ホストへ送り、
    前記第2のコマンドに関する第1の進行報告が前記ホストに送信されたことに応答して、前記第1のコマンドの実行が前記メモリコントローラによって完了したことの知らせを含む前記第1のコマンドに関する第2の進行報告を前記ホストへ送るように構成された装置。
  11. 前記記憶プロトコルは、アドバンストホストコントローラインターフェイス(AHCI)プロトコルを含む、請求項10に記載の装置。
  12. 前記メモリコントローラは、前記第1の時刻に前記第1のコマンドに関する前記第2の進行報告を送信するのを控えるように更に構成される、請求項10に記載の装置。
  13. 前記メモリコントローラは、前記第1の時刻に前記第1のコマンドの進行をキャッシュ記憶し、そして前記第1のコマンドに関する前記第2の進行報告を送るために、前記メモリコントローラは、前記第3の時刻の後に発生する第4の時刻に、前記キャッシュ記憶された進行を前記ホストに送信するように更に構成された、請求項10に記載の装置。
  14. 前記ホストは、1つ以上のレジスタを備え、そして前記第1のコマンドに関する前記第2の進行報告を送るために、前記メモリコントローラは、前記キャッシュ記憶された進行で前記1つ以上のレジスタを更新するように更に構成された、請求項13に記載の装置。
  15. 前記第1のコマンドによって指定されデータを前記ホストと交換するため、前記メモリコントローラは、前記第1のコマンドによって指定されたデータの2つ以上の部分を、前記複数のコマンドのうちの少なくとも1つの他のコマンドによって指定された付加的なデータとインターリーブして交換するように構成された、請求項10に記載の装置。
  16. 前記第1のコマンドによって指定されたデータを前記ホストと交換するため、前記メモリコントローラは、前記第2のコマンドに関する第1の進行報告が前記ホストに送信されなくても、前記第1のコマンドによって指定されたデータを前記ホストと交換するように構成された、請求項10に記載の装置。
  17. 前記メモリコントローラは、前記第2のコマンドに関する第1の進行報告が前記ホストに送信されなくても、前記第1のコマンドを実行するように構成された、請求項10に記載の装置。
  18. 前記メモリコントローラは、前記ホストから前記複数のコマンドを第1の順序で受信し、そして前記第1の順序とは異なる第2の順序で前記複数のコマンドを実行するように構成された、請求項10に記載の装置。
  19. ホストと、記憶装置とを備えたシステムであって、
    前記記憶装置は、
    記憶プロトコルに基づき、前記ホストからの複数のコマンドを前記記憶装置のメモリにおいて受信し、前記記憶プロトコルは、前記ホストからの複数のコマンドがメモリコントローラによって受信される順序に対応する番号順で、前記メモリコントローラから前記ホストに提供される前記複数のコマンドの実行の進行報告を指定するものであり、
    第1の時刻に、前記複数のコマンドのうちの第1のコマンドを前記メモリにおいて実行し、そして前記第1のコマンドが指定するデータを前記メモリコントローラと前記ホストとの間で交換し、前記複数のコマンドのうちの第2のコマンドが前記ホストによって送信され前記メモリコントローラで受信された後、前記第1のコマンドが前記ホストによって送信され前記メモリコントローラ受信され、そして
    前記第1の時刻より後である第2の時刻に、前記複数のコマンドのうちの第2のコマンドを実行し、そして前記第2のコマンドが指定するデータを前記メモリコントローラと前記ホストとの間で交換し、
    前記第2のコマンドの実行が前記メモリコントローラによって完了したことの知らせを含む前記第2のコマンドに関する第1の進行報告を、前記第時刻の後で発生する第3の時刻に前記ホストへ送り、
    前記第2のコマンドに関する第1の進行報告が前記ホストに送信されたことに応答して、前記第1のコマンドの実行が前記メモリコントローラによって完了したことの知らせを含む前記第1のコマンドに関する第2の進行報告を前記ホストへ送るように構成された、システム。
JP2012289464A 2011-12-27 2012-12-26 高性能ahciインターフェイス Active JP5896328B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161580324P 2011-12-27 2011-12-27
US61/580,324 2011-12-27
US13/560,152 US8713204B2 (en) 2011-12-27 2012-07-27 High-performance AHCI interface
US13/560,152 2012-07-27

Publications (2)

Publication Number Publication Date
JP2013137772A JP2013137772A (ja) 2013-07-11
JP5896328B2 true JP5896328B2 (ja) 2016-03-30

Family

ID=47522271

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012289464A Active JP5896328B2 (ja) 2011-12-27 2012-12-26 高性能ahciインターフェイス

Country Status (9)

Country Link
US (1) US8713204B2 (ja)
EP (1) EP2610731A3 (ja)
JP (1) JP5896328B2 (ja)
KR (1) KR101428317B1 (ja)
CN (1) CN103186351B (ja)
BR (1) BR102012033264A2 (ja)
DE (1) DE202012013729U1 (ja)
TW (1) TWI474254B (ja)
WO (1) WO2013101357A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101988287B1 (ko) * 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
TWI507883B (zh) * 2013-09-18 2015-11-11 Realtek Semiconductor Corp 記憶卡存取裝置、其控制方法與記憶卡存取系統
CN105808444B (zh) * 2015-01-19 2019-01-01 东芝存储器株式会社 存储装置及非易失性存储器的控制方法
KR102564165B1 (ko) 2016-04-25 2023-08-04 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190435A (ja) 1990-11-26 1992-07-08 Hitachi Ltd マルチプロセッサシステムのメモリアクセス順序保証方式
JPH05189154A (ja) 1992-01-14 1993-07-30 Nec Corp シーケンシャル動作ディスクファイル装置
JPH11167557A (ja) 1997-12-02 1999-06-22 Hitachi Ltd 共有メモリアクセス順序保証方法及びマルチプロセッサシステム
US6141707A (en) * 1998-05-28 2000-10-31 Emc Corporation Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume
JP2005215729A (ja) 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
US20070174504A1 (en) * 2006-01-05 2007-07-26 Pao-Ching Tseng Method and Apparatus for Advanced Technology Attachment Packet Interface Native Command Queuing
US7464228B2 (en) 2006-05-31 2008-12-09 Dell Products L.P. System and method to conserve conventional memory required to implement serial ATA advanced host controller interface
US7844777B2 (en) * 2007-06-26 2010-11-30 Intel Corporation Cache for a host controller to store command header information
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US8131921B2 (en) 2008-09-17 2012-03-06 Intel Corporation Command suspension in response, at least in part, to detected acceleration and/or orientation change
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US8868809B2 (en) * 2009-11-30 2014-10-21 Lsi Corporation Interrupt queuing in a media controller architecture
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
JP5216719B2 (ja) 2009-08-27 2013-06-19 京セラドキュメントソリューションズ株式会社 情報処理装置および制御装置
TWI405085B (zh) * 2010-01-29 2013-08-11 Innostor Technology Corp 應用於儲存裝置之多重傳輸介面的切換方法
GB2481384B (en) * 2010-06-21 2018-10-10 Advanced Risc Mach Ltd Key allocation when tracing data processing systems
US8281043B2 (en) * 2010-07-14 2012-10-02 Intel Corporation Out-of-band access to storage devices through port-sharing hardware
US8595522B2 (en) 2010-09-30 2013-11-26 Intel Corporation Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive

Also Published As

Publication number Publication date
CN103186351A (zh) 2013-07-03
CN103186351B (zh) 2016-05-25
EP2610731A3 (en) 2016-10-12
US8713204B2 (en) 2014-04-29
US20130166781A1 (en) 2013-06-27
TW201342193A (zh) 2013-10-16
BR102012033264A2 (pt) 2013-10-08
KR20130075694A (ko) 2013-07-05
KR101428317B1 (ko) 2014-08-07
EP2610731A2 (en) 2013-07-03
TWI474254B (zh) 2015-02-21
DE202012013729U1 (de) 2020-07-07
JP2013137772A (ja) 2013-07-11
WO2013101357A1 (en) 2013-07-04

Similar Documents

Publication Publication Date Title
JP5729774B2 (ja) いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法
US9256384B2 (en) Method and system for reducing write latency in a data storage system by using a command-push model
US8504737B2 (en) Serial line protocol for embedded devices
EP2936325B1 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
KR100909119B1 (ko) 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법
JP4748610B2 (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
US7805543B2 (en) Hardware oriented host-side native command queuing tag management
CN108121672A (zh) 一种基于NandFlash存储器多通道的存储阵列控制方法与装置
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
KR101857911B1 (ko) 가상채널을 이용한 다중 채널 메모리 제어기
JP5896328B2 (ja) 高性能ahciインターフェイス
TWI685744B (zh) 指令處理方法及使用所述方法的儲存控制器
EP4105771A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US7409486B2 (en) Storage system, and storage control method
TW201112131A (en) Controllers, apparatuses, and methods for transferring data
US20060265523A1 (en) Data transfer circuit and data transfer method
WO2009115058A1 (zh) 提供闪存存储功能的主板及其存储方法
EP3033686B1 (en) Implementing hardware auto device operations initiator
JPWO2018003244A1 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
JP2013171344A (ja) 半導体記憶装置及びその通信方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151001

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: 20160203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160219

R150 Certificate of patent or registration of utility model

Ref document number: 5896328

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250