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