(57)【要約】  半導体記憶デバイスは、データダイレクトメモリアクセス（ＤＤＭＡ）コントローラを含むコントローラを含む。コントローラは、ホストデバイスから、データタグに関連するデータ転送記述子に分割された複数の読出しコマンドを受信し、複数のデータ転送記述子をＤＤＭＡコントローラへ向ける。ＤＤＭＡコントローラは、複数のデータタグの１または複数に関連するホストデバイスからの１または複数の記述子をプリフェッチし、第１のデータタグは、メモリの連続ブロックに対応する関連するいくつかの記述子を有する。ＤＤＭＡコントローラは、関連する記述子数が閾値を満たすかを判定し、満たさない場合、第１のデータタグを第１のリストへ移動し、第１のリストの先頭にあるとき、第１のデータタグを第２のリストへ移動し、第２のリストの先頭にあるとき、第１のデータタグに関連するデータを送信する。
2021526255.tif 000002
【特許請求の範囲】
【請求項１】
ホストデバイスから、複数のデータタグに分割され、複数のデータ転送記述子を備える複数の読出しコマンドを受信するように構成されたコントローラであって、データダイレクトメモリアクセス（ＤＤＭＡ）コントローラを備えるコントローラを具備し、
前記ＤＤＭＡコントローラは、前記複数のデータ転送記述子を受信するように構成され、更に、
前記複数のデータタグの１または複数に関連する前記ホストデバイスからの１または複数の記述子をプリフェッチし、ここで、第１のデータタグは、メモリの連続ブロックに対応する、関連する記述子数を有し、
前記第１のデータタグに関連する前記記述子数が閾値を満たすか判定し、
前記第１のデータタグに関連する前記記述子数が閾値を満たす場合、
前記第１のデータタグを第１のリストへ移動し、
前記第１のデータタグが前記第１のリストの先頭にあり、前記第１のデータタグに関連するデータの転送の準備が整ったとき、前記第１のデータタグを第２のリストへ移動し、
前記第１のデータタグが前記第２のリストの先頭にあるとき、前記関連するデータを送信するように構成される、
半導体記憶デバイス。
【請求項２】
前記第１のデータタグに関連する前記記述子数が前記閾値を満たさない場合、前記ＤＤＭＡコントローラは更に、
前記関連するデータの準備が整ったとき、前記関連するデータを送信するように構成される、請求項１に記載の半導体記憶デバイス。
【請求項３】
複数のバッファを更に備え、各バッファは、前記第２のリスト内の複数のデータタグの１つに関連する前記データを送信する、請求項１に記載の半導体記憶デバイス。
【請求項４】
一度に、前記閾値を満たさない記述子数を有する前記第１のデータタグに関連するデータのデータ転送を実行するために、前記複数のバッファの１つのみが使用される、請求項３に記載の半導体記憶デバイス。
【請求項５】
前記閾値は、レジスタに格納された所定の量である、請求項１に記載の半導体記憶デバイス。
【請求項６】
前記閾値は、データタグに関連する所定の記述子数である、請求項１に記載の半導体記憶デバイス。
【請求項７】
前記第１のデータタグに関連する前記記述子数が前記閾値を満たさない場合、同じコマンドに関連する後続のデータタグは、前記閾値を満たさないとみなされる、請求項１に記載の半導体記憶デバイス。
【請求項８】
前記同じコマンドに関連する前記後続のデータタグは、前記第１のリストの最後に追加される、請求項７に記載の半導体記憶デバイス。
【請求項９】
前記第１のデータタグを処理することは、フラッシュメモリ内の関連メディアにアクセスすることを備える、請求項１に記載の半導体記憶デバイス。
【請求項１０】
前記第１のデータタグに関連する前記記述子数が前記閾値量を満たし、第２のデータタグに関連する記述子数も前記閾値量を満たす場合、前記ＤＤＭＡコントローラは、データが最初に利用可能になる、前記第１のデータタグおよび前記第２のデータタグのいずれかに関連するデータを転送するように構成される、請求項２に記載の半導体記憶デバイス。
【請求項１１】
第３のデータタグに関連する記述子数が前記閾値量を満たさない場合、前記第３のデータタグおよび任意の後続するデータタグは、前記第１のリストに追加される、請求項１０に記載の半導体記憶デバイス。
【請求項１２】
前記記述子は、メタデータ記述子を含む、請求項１に記載の半導体記憶デバイス。
【請求項１３】
前記メタデータ記述子は、前記閾値と比較される前記記述子数にカウントされない、請求項１２に記載の半導体記憶デバイス。
【請求項１４】
前記メタデータ記述子は、前記閾値と比較される前記記述子数にカウントされる、請求項１２に記載の半導体記憶デバイス。
【請求項１５】
前記複数のデータタグのリストおよび前記第１のリストを格納するように構成されたオンチップランダムアクセスメモリ（ＲＡＭ）を更に備える、請求項１に記載の半導体記憶デバイス。
【請求項１６】
前記第１のデータタグに関連する前記記述子数が前記閾値を満たさない場合、前記第１のデータタグに関連するプリフェッチされた記述子は、前記オンチップＲＡＭに格納される、請求項１５に記載の半導体記憶デバイス。
【請求項１７】
半導体記憶デバイスへのコマンドに関するダイレクトメモリアクセス（ＤＭＡ）記述子をフェッチする方法であって、
オンチップランダムアクセスメモリ（ＲＡＭ）内のコマンドリストの先頭にある、複数のデータタグに分割され、複数のデータ転送記述子を備える第１のコマンドに関して、
前記第１のコマンドを記述する第１のデータタグに関連する記述子数を判定することと、ここで、前記記述子数は、メモリの連続ブロックに対応し、
前記第１のデータタグに関連する記述子数を閾値と比較することと、
前記第１のデータタグに関連する前記記述子数が前記閾値を満たさない場合、
前記第１のデータタグを第１のリストに格納することと、
前記データタグが前記第１のリストの先頭にあり、前記第１のデータタグに関連するデータの準備が整ったとき、前記第１のデータタグを第２のリストへ移動することと、
前記第１のデータタグに関連する複数の追加の記述子をフェッチすることと、
前記第１のデータタグが前記第２のリストの先頭にあるとき、前記第１のデータタグに関連するデータのデータ転送を実行することと
によって前記第１のデータタグを処理することと、
を具備する方法。
【請求項１８】
前記第１のタグ要求に関連する前記記述子数が前記閾値を満たす場合、
前記第１のデータタグに関連する前記データが利用可能であるときに前記第１のデータタグに関連する前記データのデータ転送を実行すること
によって前記第１のデータタグを処理することを更に備える、請求項１７に記載の方法。
【請求項１９】
前記第１のデータタグに関連する前記記述子数が前記閾値を満たし、第２のデータタグに関連する記述子数も前記閾値を満たす場合、データが最初に利用可能になる、前記第１のデータタグおよび前記第２のデータタグのいずれかに関連するデータを転送することを更に備える、請求項１８に記載の方法。
【請求項２０】
第３のデータタグに関連する記述子数が前記閾値を満たさない場合、前記第３のデータタグおよび任意の後続するデータタグを前記第１のリストに追加することを備える、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、読出しコマンドを処理するためのシステムおよび方法に関する。
【背景技術】
【０００２】
たとえばソリッドステートドライブ（ＳＳＤ）などの半導体記憶デバイスの性能は、読出しコマンドを処理する速度によって多大な影響を受ける。読出しコマンド処理速度を高め、レイテンシを抑えるために、いくつかのシステムは、ホストから受信したデータタグに関する記述子をプリフェッチし、記述されるデータが処理されるまでそれらをローカルＲＡＭに格納するシステムを用いる。ホストから受信した読出しコマンドは、物理領域ページ（ＰＲＰ）形式要求によって記述されてよく、あるいは分散集積リスト（ＳＧＬ）の形式であってよい。ＳＧＬは、データを転送する位置の記述においてより高い柔軟性を可能にするが、データ転送を記述するための任意の数の記述子の使用を可能にする。
【０００３】
多くの場合、ホストによって用いられるＳＧＬデータ記述子形式は、少数の記述子を用いてデータ転送を記述するが、場合によっては、ＳＧＬ形式コマンドは、転送に関連する多数の記述子を含む。そのような場合、記述子のプリフェッチを用いるシステムは、データタグに関する非定型的に多い数のＳＧＬデータ記述子に関連する記述子をプリフェッチおよび格納しようと試みる、利用可能なローカルメモリ空間の全てを急速に使い果たす。また、非定型ＳＧＬの処理は、定型的な短いデータ記述子の処理よりも長い時間を要する。非定型ＳＧＬデータ記述子の処理は、少数の記述子によって記述された定型データタグの処理を妨げ、デバイスのバッファおよびメモリの非効率的な使用の原因となり、全体転送速度を減速させる。
【０００４】
したがって、分散集積リストにおけるデータの高効率処理を可能にするシステムを設計する必要性が、未だ対処されずに存在する。
【発明の概要】
【０００５】
一つの態様において、半導体記憶デバイスは、データダイレクトメモリアクセス（ＤＤＭＡ）コントローラを含むコントローラを含む。コントローラは、ホストデバイスから複数の読出しコマンドを受信し、複数の読出しコマンドは、複数のデータ転送記述子に関連する複数のデータタグに分割されている。ＤＤＭＡコントローラは、複数のデータ転送記述子を受信し、複数のデータタグの１または複数に関連するホストデバイスからの１または複数の記述子をプリフェッチし、第１のデータタグは、メモリの連続ブロックに対応する、関連する記述子数を有する。またＤＤＭＡコントローラは、第１のデータタグに関連する記述子数が閾値を満たすかを判定し、満たさない場合、第１のデータタグを第１のリストへ移動し、第１のデータタグが第１のリストの先頭に到達し、かつ第１のデータタグに関連するデータの転送の準備が整ったとき、第１のデータタグを第２のリストへ移動する。第１のデータタグが第２のリストの先頭にあるとき、ＤＤＭＡコントローラは、第１のデータタグに関連するデータを送信する。
【０００６】
別の態様において、コマンドに関するダイレクトメモリアクセス（ＤＤＭＡ）記述子を半導体記憶デバイスへフェッチする方法は、複数のデータタグに分割され、複数のデータ転送記述子を含む第１のコマンドに関して、オンチップランダムアクセスメモリ（ＲＡＭ）内のコマンドリストの先頭にあるとき、メモリの連続ブロックに対応する記述子数である、第１のコマンドを記述する第１のデータタグに関連する記述子数を判定することと、第１のデータタグに関連する記述子数を閾値と比較することとを含む。第１のデータタグに関連する記述子数が閾値を満たさない場合、方法は、第１のデータタグを第１のリストに格納すること、および記述子数に関連するデータの準備が整ったとき、第１のデータタグを第２のリストへ移動することによって、第１のデータタグを処理することを含む。方法は更に、第１のデータに関連する複数の追加の記述子をフェッチすることと、第１のデータタグが第２のリストの先頭に到達したとき、第１のデータタグに関連するデータのデータ転送を実行することとを含む。
【図面の簡単な説明】
【０００７】
【図１】図１は、ソリッドステートメモリシステムのブロック図を示す。
【０００８】
【図２】図２は、読出しコマンドの処理に関する判定チャートを示す。
【０００９】
【図３】図３は、読出しコマンドに関連する非定型データ記述子の処理のブロック図を示す。
【００１０】
【図４】図４は、キューに入れられた読出しコマンドの図を示す。
【００１１】
【図５Ａ】図５Ａは、複数の定型および非定型データ記述子の処理の図を示す。
【００１２】
【図５Ｂ】図５Ｂは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１３】
【図５Ｃ】図５Ｃは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１４】
【図５Ｄ】図５Ｄは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１５】
【図５Ｅ】図５Ｅは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１６】
【図５Ｆ】図５Ｆは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１７】
【図５Ｇ】図５Ｇは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１８】
【図５Ｈ】図５Ｈは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００１９】
【図５Ｉ】図５Ｉは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００２０】
【図５Ｊ】図５Ｊは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００２１】
【図５Ｋ】図５Ｋは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００２２】
【図５Ｌ】図５Ｌは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００２３】
【図５Ｍ】図５Ｍは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００２４】
【図５Ｎ】図５Ｎは、複数の定型および非定型データ記述子の処理におけるステップを示す。
【００２５】
【図６】図６は、読出しコマンドの処理の方法を示すフローチャートを示す。
【発明を実施するための形態】
【００２６】
図１は、半導体記憶システム１００のブロック図を示す。半導体記憶システム１００は、ホスト１０２、ホストメモリ１０３、ソリッドステートドライブ（ＳＳＤ）１０４、半導体チップ１１１、およびペリフェラルコンポーネントインターコネクト（ＰＣＩｅ）コア１１６を含む。半導体チップ１１１は、内部ランダムアクセスメモリ（ＲＡＭ）１１０、コマンドデコーダ１０６、データタグ実行コントローラ１０５、コマンドチョッパ１０７、およびフラッシュバックエンド１０９を有するデータダイレクトメモリアクセス（ＤＤＭＡ）コントローラ１０８を含む。フラッシュバックエンド１０９は、フラッシュメモリまたは他の任意のメモリ型であってよい、第１のメモリ１１２および第２のメモリ１１４に通信可能に結合される。ＰＣＩｅ１１６は、ホストインタフェース１１８を介してホスト１０２に通信可能に結合する。ＤＤＭＡコントローラ１０８は、ＰＣＩｅ１１６およびコマンドデコーダ１０６に通信可能に結合する。コマンドデコーダ１０６は、データタグ実行コントローラ１０５に通信可能に結合するコマンドチョッパ１０７に通信可能に結合する。またデータタグ実行コントローラ１０５は、ＤＤＭＡコントローラ１０８およびフラッシュバックエンド１０９にも通信可能に結合される。フラッシュバックエンド１０９は、ＳＳＤ上に位置する２つのメモリに接続されているようにしか示されないが、任意の数の内部または外部メモリに結合され得る。
【００２７】
ＰＣＩｅ１１６は、ホストインタフェース１１８を介してホスト１０２からのコマンドを受信し、それらをコマンドデコーダ１０６へ送信する。コマンドデコーダ１０６は、コマンドを復号し、コマンド取扱いシステムの休止のためのコマンドを準備する。コマンドデコーダ１０６は、後述する記述子のフェッチおよび順不同ＳＧＬ実行を含むホスト転送実行を管理するＤＤＭＡコントローラ１０８へコマンドを送信する。ＤＤＭＡコントローラ１０８は、データタグ片を備える部分ごとにコマンドを分割するコマンドチョッパ１０７に通信可能に結合する。コマンドチョッパ１０７は、データタグ実行コントローラ１０５およびＤＤＭＡコントローラ１０８の両方に通信可能に結合される。データタグ実行コントローラ１０５は、コマンドチョッパ１０７によって生成されたデータタグの実行を管理する。各読出しコマンドは、コマンドチョッパ１０７によって、要求されたデータの位置を記述する、関連する記述子数を有する、複数のデータタグに分離される。コマンドおよび記述子は、ホスト１０２によってホストメモリ１０３に格納される。ＤＤＭＡコントローラ１０８は、コマンドに関連する記述子をホストメモリ１０３から引き出してＤＤＭＡコントローラ１０８内へ引き込むことによって「プリフェッチ」を実行する。記述子は、ＲＡＭ１１０に格納され、コマンドチョッパ１０７によって生成されたデータタグサイズ片ごとにＤＤＭＡによって取り扱われる。データタグ実行コントローラ１０５は、フラッシュバックエンド１０９から関連データを要求することを含む、データタグの実行を管理する。データが第１のメモリ１１２および第２のメモリ１１４から取得されると、データはホスト１０２へ転送される。
【００２８】
ＤＤＭＡコントローラ１０８は、ＰＲＰまたはＳＧＬ記述子を有するコマンドを受信し、ＰＲＰおよびＳＧＬ記述子を格納するためにＲＡＭ１１０内のリストを維持し、ＰＲＰおよびＳＧＬ記述子を切り離すようにＲＡＭ１１０内のリストを維持する。ＤＤＭＡコントローラ１０８は更に、ホスト１０２からの記述子をプリフェッチし、データ転送のためのデータ転送（ＤＭＡ）要求を発行し、データタグを記述する複数の記述子が閾値を満たす定型的な条件において、プリフェッチされたＰＲＰおよびＳＧＬ記述子を用いた順不同の転送を可能にする。記述子のプリフェッチは、システムの全体的なレイテンシを低減する。記述子のプリフェッチおよび順不同のコマンドの処理は、データ記述子を順不同にプリフェッチまたは処理することのないシステムに対し、１０〜２０％の性能の向上をもたらし得る。
【００２９】
ＰＲＰ形式の記述子は、デフォルトでシングルポインタを有し、ＤＤＭＡコントローラ１０８は、記述子をプリフェッチし、要求されたデータが利用可能になるとそれを転送することによって、これらを処理する。ＳＧＬ形式の記述子は、非連続データブロックを記述するために用いられてよく、ＳＧＬコマンドは一般に、データタグごとに１または２つの記述子を有するが、いくつかの非定型的な例において、データタグに関連する任意の数の記述子を有し得る。これらの非定型的な例において、プリフェッチされた記述子の格納が非常に大量のオンチップＲＡＭ１１０を消費するために、データタグは、記述子をプリフェッチすることができない。この非定型的な例において、メモリ制限は、データタグが順不同で処理され得ないことを意味する。順不同処理アルゴリズムに非定型データタグを含めるよう試みることにより、定型データタグの処理が妨げられ、高いレイテンシを有する非効率的なシステムがもたらされる。
【００３０】
図２は、ＤＤＭＡコントローラ１０８が読出しコマンドを処理するプロセスに関する判定チャートを示す。ＤＤＭＡコントローラ１０８は、ＰＣＩｅ１１６およびコマンドデコーダ１０６から、コマンドおよびコマンドを記述するデータタグを受信し、コマンドに関するデータタグまたはデータ転送要求をＲＡＭ１１０に格納する。ステップ２０２において、ＤＤＭＡコントローラ１０８は、データタグに関する事前設定された数の記述子をフェッチする。未使用の記述子は全て、後続のデータタグのために保存される。プリフェッチされた記述子は、ＲＡＭ１１０に格納される。一般に、ＤＤＭＡコントローラ１０８は、ホスト１０２から、たとえば一度に６４バイトの記述子など、データタグに関連する設定配分の記述子を取得する。ＤＤＭＡコントローラによって取得された記述子の全てが必ずしも既知またはデータタグまたは「データ転送要求」のために必要なわけではない。未使用の記述子は、記述子メモリセグメントリストと称される、記述子メモリセグメント内のローカルＲＡＭ１１０内のリストに格納される。
【００３１】
ステップ２０４において、ＤＤＭＡコントローラ１０８は、第１のデータタグに関連する記述子の数が、事前設定された閾値を超えるかを判定する。データタグに関連する記述子の数が閾値を超える場合、データタグは、閾値を超えない関連記述子数を有する定型データタグとともに処理されるには多すぎる数の記述子を含むことから、非定型とみなされる。非定型データタグは、定型データタグとは異なる方法によって別に処理される。
【００３２】
ステップ２０６において、定型データタグは、順不同処理のためにＲＡＭ１１０に保存され、その間、ＤＤＭＡコントローラ１０８は、記述子に関連するデータを取得することによって定型データタグを処理する。データは、第１の通信チャネル１２０および第２の通信チャネル１２２を介して第１のメモリ１１２および第２のメモリ１１４からフラッシュバックエンド１０９によって取得される。いくつかの実装において、データがフラッシュバックエンド１０９において利用可能である場合、データタグ内のレディビットが設定され、定型データタグは実行リストへ移動されるが、他の実装において、定型データタグはリストへ移動されない。ステップ２０８において、データが利用可能である場合、ＤＤＭＡコントローラ１０８は、コマンドコントローラ１０６およびホストインタフェース１１８を介して、定型データタグに関連するデータをホスト１０２へ転送する。
【００３３】
ＤＤＭＡコントローラ１０８は、順不同処理リスト内の順序に関わらず、データの準備が整ったとき、定型データタグに関連するデータをホスト１０２へ転送する。順序通りではなく準備が整ったときに定型データタグに関連するデータを転送することにより、データが効率良く転送されること、およびコマンドの処理中にバッファがアイドル状態でないことが確実となる。定型データタグの順不同の処理および転送は、処理効率を高め、デバイスが、順不同処理キューの先頭にあるデータタグが処理されるのを待機して停滞することなく、一貫してホストへデータを送信することを可能にする。
【００３４】
過度に多い数の記述子を有する非定型データタグを除去し、それらを別に処理することによって、非定型データタグは、順不同処理から除去され、代わりに、ステップ２１０で開始する順序通りに処理され得る。ステップ２１０において、ＤＤＭＡコントローラ１０８は、非定型データタグを、ＲＡＭ１１０に格納されたコマンドごとのリストの末尾に追加し、ここで非定型データタグは処理を待機する。ステップ２１２において、非定型データタグがコマンドごとのリストの先頭に到達し、準備が整ったとき、ＤＤＭＡコントローラ１０８は、データタグを、処理されるターンを待機するための非定型実行リストへ移動する。
【００３５】
ステップ２１４において、データタグが非定型実行リストの先頭にあるとき、ＤＤＭＡコントローラ１０８は、ステップ２０２においてプリフェッチされなかった残りの全ての記述子をフェッチする。ＤＤＭＡコントローラ１０８は、ＲＡＭ１１０内の非定型コマンド記述子リストに、過去にプリフェッチされた記述子とともに記述子を格納する。ＤＤＭＡコントローラ１０８は、非定型データタグに関するプリフェッチおよびフェッチされた記述子に関連するデータを取得し、コマンドコントローラ１０６および第２のホストインタフェース１１８を介して、非定型データタグに関連するデータをホスト１０２へ転送する。
【００３６】
ＤＤＭＡコントローラ１０８は、非定型データタグを順番通りに、かつ定型データタグとは別に処理するので、非定型データタグが定型データタグの処理を減速させることはなく、大きなバッファの必要性が防止される。非定型データタグは、多数の記述子を有するＳＧＬによって記述され得るが、定型データタグは、システムに関して予想された数の記述子を有するＳＧＬによって記述され得る。たとえば、１つの実施形態において、定型データタグは、２つの記述子を有してよい。非定型データタグは、システムのハードウェアレジスタにおいて設定された閾値を上回る任意の数の記述子を有してよい。例として、１ＭＢコマンドは、単一の１ＭＢ記述子によって記述されてよく、非定型１ＭＢコマンドは、関連する１，０００の１ＫＢ記述子を有する。１，０００の記述子のプリフェッチおよび格納は、オンチップＲＡＭ１１０を消費するので、ＤＤＭＡコントローラ１０８は、図２に示すように、非定型データタグを別に、全ての記述子をプリフェッチすることなく処理する。
【００３７】
図３は、ＤＤＭＡコントローラ１０８によって処理されている時の読出しコマンドに関連するデータタグの処理のデータ構造図３００を示す。ＤＤＭＡコントローラ１０８は、データタグが定型であるのか非定型であるのか、つまり、「ノーティ」とみなされるかを示す識別、非定型であるデータタグリスト（いわゆる第１のリスト）の最初および最後のインジケーション、およびプリフェッチされた記述子がＲＡＭ１１０内で格納されている場所のアドレスを含む、コマンドＩＤセグメント３０２に示された情報とともに、各受信コマンドに固有の情報をＲＡＭ１１０に格納する。
【００３８】
ＤＤＭＡコントローラ１０８は更に、データタグ情報を、コマンド識別、ポート識別、レディビット、データタグが割り当てられているかのインジケーション、データタグに関する記述子が格納されている場所のアドレスを含む、ＲＡＭ１１０内のデータタグ情報リスト３０６に格納する。レディインジケータ（またはレディビット）は、関連データが転送のために利用可能であるかを示す。割り当てられたインジケータは、データおよびメタデータの両方を含む全ての記述子がデータタグのために利用可能であるかを示す。リストは、ＲＡＭ１１０内の記述子のリストの索引を含む。
【００３９】
ＤＤＭＡコントローラ１０８は、データタグに関連する記述子を、ＲＡＭ１１０内のポインタメモリセグメントリスト３０４に格納する。記述子メモリセグメントリスト３０４は、記述子の格納のための限られた量のスペースを有し、記述子メモリセグメントリストが一杯である場合、関連データをホスト１０２へ転送することによっていくつかの記述子が除去されるまで、更なる記述子がリストに追加されることはできない。一度に１つの非定型データタグを処理することにより、更に、ＲＡＭ１１０がオーバランになることが防がれ、バッファが、定型データタグを犠牲にして非定型データタグによって使い果たされることが防がれる。いくつかの実装において、非定型データタグの処理のために、一度に１つのバッファのみが使用される。記述子は、記述子が更に他の記述子に対応するかのインジケーションとともに格納される。たとえば、ホストメモリアドレス１は、関連ポインタホストメモリアドレス２を指し示す。
【００４０】
ＤＤＭＡコントローラ１０８は、ポートごとに複数のリストを維持し、コマンドの実行は、ＳＳＤ１０４のポートの間で分散される。
【００４１】
図４は、定型および非定型データ記述子部分を有する、キューに入れられた読出しコマンド４０８の図４００を示す。縦軸は、４０２として図示される、コマンド４０８に関連する増加する論理ブロックアドレス（ＬＢＡ）を示す。読出しコマンド４０８は、「定型」である第１のコマンド状態４０４および「非定型」である第２のコマンド状態４０６を含む。第１のコマンド状態４０４は、第１のデータタグＡ４１０を有し、２ＫＢのサイズであるデータ記述子「０」４１８によって記述され、データ記述子「０」４１８は、本明細書においてポインタとも称される。データタグＡ４１０によって記述された第１のコマンド状態４０４は、図２に関して前述したように順不同処理を用いて処理され得る定型コマンドである。読出しコマンド４０８は、合計１１ＫＢであり、４つのデータタグおよび様々なサイズの６つの記述子によって記述される。簡潔さのために、読出しコマンド４０８はメタデータを有さないものと仮定される。
【００４２】
第２のコマンド状態４０６は、３つのデータタグ、データタグＢ４１２、データタグＣ４１４、およびデータタグＤ４１６によって記述される。データタグＢ４１２は、各々が１ＫＢである４つの関連記述子、データ記述子「１」４２０、データ記述子「２」４２２、データ記述子「３」４２４、およびデータ記述子「４」４２６を有する。データタグＣ４１４およびデータタグＤ４１６は、単一の記述子、合計５ＫＢのサイズであるデータ記述子「５」４２８に関連する。データ記述子「０」４１８、データ記述子「１」４２０、データ記述子「２」４２２、データ記述子「３」４２４、データ記述子「４」４２６、およびデータ記述子「５」４２８は、ＤＤＭＡコントローラ１０８によって順序通りに読み出される必要がある。ＳＧＬ記述子を用いると、データタグＤ４１６の転送のために必要な情報は、関連データタグＤ４１６に対応するデータタグＡ４１２、データタグＢ４１４、およびデータタグＣ４１４に関連する記述子を見つけ出すための、これらのデータタグの前処理の後にのみ明らかになり得る。
【００４３】
データタグＢ４１２は、閾値より多い数（この例では２つの関連記述子）を有するので、データタグＢ４１２は非定型（「ノーティ」）であると判定され、図２に従って順序通りに処理される。データタグＣ４１４およびＤ４１６は、データタグＢ４１２に後続するので、これらもまた非定型（「ノーティ」）であり、この方法で処理される。データタグＣ４１４またはデータタグＤ４１６の１つが定型であり、閾値量よりも少ない数の関連記述子を有する場合でも、非定型データタグに続くコマンド内の全ての後続データタグは、非定型データ転送要求方法によって取り扱われる。非定型データタグに後続するデータタグは、順序通りの処理方法に従って取り扱われるので、同じコマンドに関連する全ての後続データタグは、コマンドごとのリストの最後に追加され、ノーティと指定される。
【００４４】
図３に示すように、データタグは、データの位置を記述するデータ記述子、またはポインタに関連する。データタグおよび記述子は、データタグがＤＤＭＡコントローラ１０８によって処理されると更新されるリストにおいて、ローカルＲＡＭ１１０に格納される。データタグは、データタグを独立データ構造に変換するために必要な記述子を参照する。しかし、過度に多い数の記述子を参照するデータタグを含む非定型コマンド部分は、利用可能なオンチップメモリの大部分を消費することなく、プリフェッチされた記述子をＲＡＭ１１０に格納させることができない。ＲＡＭ１１０が、コマンドのノーティ部分におけるデータタグに関するプリフェッチされた記述子によって全て消費された場合、他の定型データタグを処理するために利用可能なメモリがなくなり、既に完了したデータタグのキュー内のどれかのデータがホスト１０２へ転送されると、非定型データタグが処理を終えるまで、データの転送が存在しない。加えて、非定型データタグに関するプリフェッチされていない残りの記述子が順序通りにフェッチされた場合、バックエンドバッファは、多数の記述子をフェッチするビジー状態になり、他の定型データタグをプリフェッチするために利用不可能になるため、システムを減速させる。この方式でのシステム挙動は、非常に非効率的である。
【００４５】
データタグが定型であるか非定型であるかは、データタグ内の取得データ量ごとの記述子数によって判定される。例として、ＤＤＭＡコントローラは、データタグ実行コントローラ１０５によって送信されたデータタグのキューからのコマンドの構成に基づいて、４ＫＢの倍数でデータタグを取得する。定型コマンド閾値限度は、単一の４ＫＢデータタグに基づいており、より大きなデータタグは、このサイズの倍数に基づいてスケーリングされる。データタグ内の記述子数は、データタグが、順不同処理を用いて定型データタグとして処理されるか、または順序通りの処理を用いて非定型（「ノーティ」）データタグとして処理されるかを決定する。
【００４６】
図５Ａ〜５Ｍは、図２に示すプロセスに従って、図４に示すコマンドの取扱いを示す。
【００４７】
図５Ａは、図４のデータタグの処理における複数のリスト５００によって示された第１のステップを示す。複数のリスト５００は、コマンドＩＤテーブル５０２、データタグ索引メモリ５０６、コマンドコントローラ１０６からＤＤＭＡコントローラ１０８によって受信されたホストメモリ５０８からのコマンド転送データ、記述子メモリセグメント５１０、作業用コピー非定型コマンドリスト５１２、および非定型データタグとともに使用するためのノーティ実行リスト５０４を含む。コマンドＩＤテーブル５０２は、コマンドの特性を識別するコマンドＩＤによって索引される。記述子メモリセグメント５１０は、複数のリストを含む。この第１のステップにおいて、ホストからの最初の記述子セットのフェッチは既に発生しており、データタグＡ５３２は、ＤＤＭＡコントローラ１０８によって処理される。コマンドＩＤテーブル５０２において、ノーティインジケータは０に設定され、ホストからフェッチされる次の記述子は、ホストメモリ５０８からのコマンド転送データによって示され、ＤＤＭＡコントローラ１０８によって取得されたが第１のデータタグＡ５３２（記述子５１６、５１８、５２０）を記述しない余分な記述子は、余分な記述子リスト上で記述子メモリセグメント５１０に格納されるものとして示される。
【００４８】
ＤＤＭＡコントローラ１０８は、データタグＡ５３２に関連する２ＫＢデータ記述子「０」５１４、ならびに１ＫＢデータ記述子「１」５１６、１ＫＢデータ記述子「２」５１８、および１ＫＢデータ記述子「３」５２０を含む、第１のデータタグＡ５３２の処理に関する事前設定された量の記述子をプリフェッチする。データ記述子「０」５１４は、データタグＡ５３２を完全に記述し、任意の追加の記述子に対応しない。１ＫＢデータ記述子「１」５１６、１ＫＢデータ記述子「２」５１８、および１ＫＢデータ記述子「３」５２０は、データタグＡ５３２を記述するものではない余分な記述子であり、記述子メモリセグメント５１０に格納され、１ＫＢデータ記述子「１」５１６は次の記述子として１ＫＢデータ記述子「２」５１８を参照し、１ＫＢデータ記述子「２」５１８は次の記述子として１ＫＢデータ記述子「３」５２０を参照する。全てのデータ記述子が、記述子メモリセグメント５１０に格納されるが、データタグＡ５３２は、記述子メモリセグメント５１０内のデータ記述子「０」の位置への参照とともにデータタグメモリ５０６に格納される。
【００４９】
図５Ｂは、図４の読出しコマンドの処理における次のステップを示す。ＤＤＭＡコントローラ１０８は、データタグＢ５３４を取得し、データタグＢ５３４に関連する既にフェッチされた記述子を処理し、記述子の数が、ハードウェアレジスタにおいて設定された閾値を超えるか、およびそれに伴って非定型または「ノーティ」とみなされるかを判定する。ＤＤＭＡコントローラ１０８は、コマンドＩＤテーブル５０２において、コマンドがコマンドＩＤテーブル５０２において非定型または「ノーティ」とみなされることを示し、データタグＢ５３４を、コマンドごとのリストの一部としてデータタグメモリ５０６に格納する。データタグＡ５３２とともに過去に取得されたデータタグＢ５３４に関連するプリフェッチされた記述子は、記述子メモリセグメント５１０に格納され、この時、データタグＢ５３４のために追加の記述子がプリフェッチされることはない。
【００５０】
許容可能な定型記述子数の閾値は、記述子をプリフェッチするために利用可能なローカルＲＡＭ１１０のサイズに依存して、任意の記述子数であってよい。いくつかの実施形態において、閾値は、２つの記述子に設定される。他の実施形態において、閾値は、３、４、またはより多い数の記述子に設定される。閾値として設定された許容可能な記述子数の増加は、より多くのメモリを使用し、デバイスに追加のメモリが追加されることを必要とし、デバイスのサイズを増加させ得る。いくつかの実施形態において、プリフェッチされた記述子を格納するために外部ＲＡＭが使用されるが、外部ＲＡＭの使用は、システムのレイテンシを増加させる。いくつかの実施形態において、外部ＲＡＭは、説明されたアルゴリズムと併用してプリフェッチされた記述子を格納するためのオーバーフローとして含まれる。
【００５１】
定型ＳＧＬデータタグは、単一の記述子、または場合によっては２つの記述子を有する。ここで説明されるデータタグおよび記述子は、読出しコマンドのためのデータに関連するが、データタグが順不同で処理されるか順序通りに処理されるかを判定するためのアルゴリズムは、たとえばメタデータ記述子などの他の種類の記述子によって記述された他のタグにも適用され得る。いくつかの実装において、データ記述子はメタデータ記述子を含み、メタデータ記述子は、データタグが非定型とみなされるかを判定するために閾値と比較される記述子数にカウントされる。いくつかの実装において、データ記述子はメタデータ記述子を含み、メタデータ記述子は、閾値と比較される記述子数にカウントされない。
【００５２】
図５Ｃは、図４の読出しコマンドの処理における次のステップを示す。ＤＤＭＡコントローラ１０８は、データタグＣ５３６を取得し、コマンドが既にノーティとみなされている場合、これを、コマンドごとのリスト内のデータタグＢ５３４に後続して、コマンドごとのリストの一部としてデータタグメモリ５０６に追加する。データタグＣ５３６は、データタグＢ５３４に後続するためである。いくつかの実施形態において、コマンドごとのリストは、ポートごとのノーティリストと置き換えられてよく、これは、要求処理の効率を低下させるが、メモリを節約する。データタグＢ５３４と同様、データタグＣ５３６は非定型と識別され、コマンドＩＤテーブル５０２は、データタグＣ５３６を、非定型またはノーティデータコマンドの新たな最後、すなわち末尾として識別する。
【００５３】
図５Ｄは、図４の読出しコマンドの処理における次のステップを示す。データタグＣ５３６の準備が整った状態になり、データタグＣ５３６に関するレディビットはレディに設定される。ただし、コマンドは非定型であるため、データタグＣ５３６は順不同で処理されることができず、非定型コマンドの先頭であるデータタグＢ５３４の準備が整った状態になって処理されるまで待機する必要がある。
【００５４】
図５Ｅにおいて、データタグＢ５３４はこの時点で準備が整った状態となり、データタグＢ５３４に関するレディビットがレディに設定される。データタグＢ５３４は、データタグメモリ５０６内のコマンドのノーティ部分の先頭であるため、ＤＤＭＡコントローラ１０８は、これをノーティ実行リスト５０４に追加する。データタグＣ５３６もまた準備が整った状態であり、ＤＤＭＡコントローラ１０８は、これもノーティ実行リスト５０４に追加する。
【００５５】
ＤＤＭＡコントローラ１０８は、コマンドのノーティ部分の先頭かつデータタグメモリ５０６内のコマンドごとのリストの先頭であるデータタグＢ５３４の準備が整ったとき、データタグＢ５３４およびデータタグＣ５３６をデータタグメモリ５０６内のコマンドごとのリストからノーティ実行リスト５０４へ移動する。ノーティ実行リスト５０４へコマンドを移動し、残りのデータ記述子をフェッチする前に、ノーティコマンド部分の先頭がデータ転送の準備が整うまで待機することにより、他の定型データタグが非定型データタグの処理によって停滞することがない。
【００５６】
図５Ｆにおいて、ＤＤＭＡコントローラ１０８は、データタグＤ５３８を取得し、これを、データタグメモリ５０６に、コマンドごとのリストの末尾に追加する。データタグＤ５３８は、未だ準備が整っていないので、ノーティ実行リスト５０４に追加されない。
【００５７】
図５Ｇにおいて、データタグＢ５３４は、ノーティ実行リスト５０４の先頭にあり、ＤＤＭＡコントローラ１０８は、データ記述子「１」５１６、データ記述子「２」５１８、およびデータ記述子「３」５２０をノーティリスト５１２の作業用コピーへ移動することによって、データ転送要求タグＢ５３４の処理を開始する。いくつかの実施形態において、ノーティリスト５１２の作業用コピーは、記述子メモリセグメント５１０内の他のリストである。
【００５８】
図５Ｈにおいて、ＤＤＭＡコントローラ１０８は、データ記述子「１」５１６、データ記述子「２」５１８、およびデータ記述子「３」５２０に関連するデータをホスト１０２へ転送し、記述子は、ノーティリスト５１２の作業用コピーおよびローカルＲＡＭ１１０から除去される。ただし、データタグＢ５３４は未だ完了していない。
【００５９】
図５Ｉにおいて、ＤＤＭＡコントローラ１０８は、ホストメモリ５０８からのデータタグに関連する追加の６４バイトの記述子をフェッチし、コマンドＩＤテーブル５０２を適切に更新した。ＤＤＭＡコントローラ１０８は、データ記述子「４」５４０および５ＫＢデータ記述子「５」５４２を取得し、データタグＢ５３４の転送を完了するために、ノーティリスト５１２の作業用コピーにデータ記述子を格納する。
【００６０】
図５Ｊにおいて、ＤＤＭＡコントローラ１０８は、データタグＢ５３４の処理を完了するために、データ記述子「４」５４０に関連するデータを取得および転送する。データタグＢ５３４は完了され、データタグテーブル５０６から除去される。
【００６１】
図５Ｋにおいて、ＤＤＭＡコントローラ１０８は、データタグＢ５３４の転送を完了している。データ記述子「５」５４２は、データタグＢ５３４に関連しておらず、ノーティリスト５１２の作業用コピーから、記述子メモリセグメント５１０内の余分な記述子リストへ移動される。
【００６２】
図５Ｌにおいて、ＤＤＭＡコントローラ１０８は、データタグＣ５３６がノーティ実行リスト５０４の先頭であるため、これを処理する。データ記述子「５」５４２は、次のデータ記述子に対応していないので、ＤＤＭＡコントローラは、データ記述子「５」５４２をノーティリスト５１２の作業用コピーへ移動し、その後、関連データを転送する。ＤＤＭＡコントローラ１０９が、データタグＣ５３６に関連するデータの転送を終えると、データタグＣ５３６は、データタグメモリ５０６から除去される。データ記述子「５」５４２は、部分的にしか消費されていないので、更新され、ノーティリスト５１２の作業用コピーから除去され、１ＫＢデータ記述子「６」５４２として記述子メモリセグメント５１０に格納される。
【００６３】
図５Ｍにおいて、データタグＡ５３２は準備が整った状態となり、レディインジケータがレディを示す。図５Ｎにおいて、ＤＤＭＡコントローラ１０８は、データタグＡ５３２に関連するデータをホスト１０２へ転送する。データタグＡ５３２は定型データタグであるため、データの準備が整い次第、処理およびホストへデータ転送され得る。データタグＤ５３８は、記述子メモリセグメント５１０内の関連データ記述子「６」５４２とともにデータタグメモリ５０６に残される。データタグＢ５３４およびデータタグＣ５３２は、処理され転送されているので、データタグＤ５３８は、順序的に先立つデータタグが存在しないため、ノーティ実行リスト５０４の先頭であり、準備が整った時に転送され得る。
【００６４】
ＤＤＭＡコントローラ１０８がデータタグＡ５３２、データタグＢ５３４、データタグＣ５３６、およびタグＤ５３８を処理する間、他のアイテムが継続的にデータタグメモリ５０６に追加され得る。ＤＤＭＡコントローラ１０８によって取得される他のコマンドに関連する他の定型データタグは、データタグメモリ５０６に追加され、データが転送のために利用可能になると順不同で処理され得る。
【００６５】
いくつかの実施形態において、一度に１つのバッファのみが非定型データタグを処理し、その間、バッファを効率よく用いて読出しデータ転送要求を完了するために、他の全てのバッファは、定型データタグを処理する。いくつかの実施形態において、非定型データタグの処理または転送のために同時に用いられ得るバッファの数は、１より多く、たとえば２または３である。
【００６６】
図６は、読出しコマンドを処理する方法を示すフローチャート６００を示す。ステップ６０２において、ＤＤＭＡコントローラ１０８は、コマンドコントローラ１０６から、読出しコマンドを記述する複数のデータタグを受信する。ステップ６０４において、ＤＤＭＡコントローラ１０８は、複数のデータタグの数を取得する。いくつかの実施形態において、ＤＤＭＡコントローラ１０８は、事前設定されたサイズ分のデータタグ、たとえば４ＫＢのデータを取得する。
【００６７】
ステップ６０６において、ＤＤＭＡコントローラ１０８は、データタグに関連する設定された数の記述子をプリフェッチする。いくつかの実施形態において、ＤＤＭＡコントローラ１０８は、複数のデータタグに関連する事前設定されたサイズ分の記述子をプリフェッチする。ステップ６０８において、ＤＤＭＡコントローラ１０８は、第１のデータタグに関する記述子数と、ハードウェアレジストリにおいて設定された閾値とを比較する。
【００６８】
第１のデータタグに関する記述子数が閾値数を超えると、ステップ６１０において、ＤＤＭＡコントローラ１０８は、第１のデータタグを第１のリストに追加する。第１のデータ転送要求は非定型であるとみなされ、順序通りに処理されるが、ＤＤＭＡコントローラによって過去にフェッチされ処理された任意の定型データタグは、データが転送のために利用可能になると順不同で処理される。
【００６９】
ステップ６１２において、第１のデータタグに関してプリフェッチされた記述子に関連するデータは、バックエンドにおいて取得される。ＤＤＭＡコントローラ１０８は、第１のデータタグの実行の準備が整うまで、すなわち第１のデータタグがレディとしてマークされ、プリフェッチされた記述子データが利用可能であり、第１のデータタグが実行リストの先頭になるまで、第１のデータタグを記述する残りの記述子を一切フェッチしない。
【００７０】
ステップ６１４において、第１のデータタグは、第１のリストにおいて順序通りに処理される。これは、プリフェッチされた記述子データが受信され、転送のために利用可能であり、第１のデータタグが実行リストの先頭になった後に発生する。第１のデータタグが第１のリストの先頭にあり、第１のデータタグに関連するデータの転送の準備が整ったとき、第１のデータタグは、第２のリストへ移動される。第１のデータタグが第２のリストの先頭にあるとき、関連データが転送される。データタグに関連するデータの転送を完了するために追加の記述子が必要である場合、記述子がフェッチされ、データは、記述子が利用可能になると転送される。リスト内の後続するデータタグは、第１のデータタグが処理され、関連データが（たとえば順序通りに）転送された後にしか処理され得ない。
【００７１】
第１のデータタグに関連する記述子数が閾値を満たさない場合、ＤＤＭＡコントローラ１０８は、関連データの準備が整ったときに（たとえば順不同で）第１のデータタグに関連するデータを送信する。
【００７２】
本発明の様々な態様の他の目的、利点、および実施形態は、本発明の当業者には明らかであり、本明細書および添付図面の範囲内に収まるものである。たとえば、限定はされないが、構造的または機能的要素は、本発明と矛盾せずに並べ替えられてよい。同様に、本発明に係る原理は、本明細書で特に詳しく説明されなくとも本発明の範囲内である他の例にも適用され得る。
【図１】
2021526255.tif 000003
【図２】
2021526255.tif 000004
【図３】
2021526255.tif 000005
【図４】
2021526255.tif 000006
【図５Ａ】
2021526255.tif 000007
【図５Ｂ】
2021526255.tif 000008
【図５Ｃ】
2021526255.tif 000009
【図５Ｄ】
2021526255.tif 000010
【図５Ｅ】
2021526255.tif 000011
【図５Ｆ】
2021526255.tif 000012
【図５Ｇ】
2021526255.tif 000013
【図５Ｈ】
2021526255.tif 000014
【図５Ｉ】
2021526255.tif 000015
【図５Ｊ】
2021526255.tif 000016
【図５Ｋ】
2021526255.tif 000017
【図５Ｌ】
2021526255.tif 000018
【図５Ｍ】
2021526255.tif 000019
【図５Ｎ】
2021526255.tif 000020
【図６】
2021526255.tif 000021
【国際調査報告】
2021526255.tif 000022
2021526255.tif 000023