(57)【要約】  開示された実施形態は、記憶デバイスからホストにデータを転送するシステムを提供する。該システムは、ホストから１組のブロックを読み取る要求を受け取る通信機構を含む。次に、記憶デバイスから１組のブロックからの各ブロックを読み取り次第、通信機構が、ブロックをホストとのインタフェースを介して転送する。システムは、また、ブロックを読み取り次第ブロックにエラー検出を実行するエラー検出装置と、ブロック内にエラーが検出された場合にブロックにエラー訂正を実行するエラー訂正装置とを含む。次に、通信機構は、ブロックからエラーが除去された後でブロックをホストに再転送してもよい。
2014529132.tif 000002
【特許請求の範囲】
【請求項１】
記憶デバイスからホストにデータを転送するためにコンピュータで実行される方法であって、
前記ホストから１組のブロックを読み取る要求を受け取る工程と、
前記記憶デバイスから、前記１組のブロックからの各ブロックを読み取り次第、
前記ブロックを前記ホストとのインタフェースを介して転送する工程と、
前記ブロックにエラー検出を同時に実行する工程と、
前記ブロック内にエラーが検出された場合に、
前記ブロックにエラー訂正を実行して前記エラーを除去する工程と、
前記ブロックから前記エラーが除去された後で前記ブロックを前記ホストに再転送する工程と、
を含む、方法。
【請求項２】
前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡する工程と、
前記ホストに前記ブロックがすべてエラーなしに転送された後で完了信号を前記ホストに送信する工程と、
を更に含む、請求項１に記載の方法。
【請求項３】
前記ブロックの前記エラー訂正を追跡する工程が、
前記ブロックをデータ構造に追加する工程と、
前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
を伴う、請求項２に記載の方法。
【請求項４】
前記ブロックが、前記ホストに順不同に再転送される、請求項１に記載の方法。
【請求項５】
前記ブロックが、前記インタフェースの１つ以上のレーンを介して前記ホストに転送される、請求項１に記載の方法。
【請求項６】
前記インタフェースが、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである、請求項１に記載の方法。
【請求項７】
前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項１に記載の方法。
【請求項８】
記憶デバイスからホストにデータを転送するためのシステムであって、
通信機構であって、
前記ホストから１組のブロックを読み取る要求を受け取るように構成され、
前記記憶デバイスから前記１組のブロックからの各ブロックを読み取り次第、前記ブロックを、前記ホストとのインタフェースを介して転送するように構成された、
通信機構と、
前記ブロックを読み取り次第、前記ブロックにエラー検出を実行するように構成されたエラー検出装置と、
前記ブロック内にエラーが検出された場合に前記ブロックにエラー訂正を実行するように構成されたエラー訂正装置と、
を備え、
前記通信機構が、更に、前記ブロックから前記エラーが除去された後で前記ホストに前記ブロックを再転送するように構成された、システム。
【請求項９】
前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡するように構成されたエラー追跡装置を更に備え、
前記通信機構が、更に、前記ブロックがすべてエラーなしに前記ホストに転送された後で完了信号を前記ホストに送信するように構成された、請求項８に記載のシステム。
【請求項１０】
前記ブロックの前記エラー訂正を追跡する工程が、
前記ブロックをデータ構造に追加する工程と、
前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
を伴う、請求項９に記載のシステム。
【請求項１１】
前記ブロックが、前記ホストに順不同に再転送される、請求項８に記載のシステム。
【請求項１２】
前記ブロックが、前記インタフェースの１つ以上のレーンを介して前記ホストに転送される、請求項８に記載のシステム。
【請求項１３】
前記インタフェースが、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである、請求項８に記載のシステム。
【請求項１４】
前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項８に記載のシステム。
【請求項１５】
コンピュータによって実行されるときに、前記コンピュータに、記憶デバイスからホストにデータを転送する方法を実行させる命令を記憶したコンピュータ可読記憶媒体であって、前記方法が、
前記ホストから１組のブロックを読み取る要求を受け取る工程と、
前記記憶デバイスから、前記１組のブロックからの各ブロックを読み取り次第、
前記ブロックを前記ホストとのインタフェースを介して転送する工程と、
前記ブロックにエラー検出を同時に実行する工程と、
前記ブロック内にエラーが検出された場合に、
前記ブロックにエラー訂正を実行して前記エラーを除去する工程と、
前記ブロックから前記エラーが除去された後で前記ホストに前記ブロックを再転送する工程とを含む、コンピュータ可読記憶媒体。
【請求項１６】
前記方法が、
前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡する工程と、
前記ホストに前記ブロックがすべてエラーなしに転送された後で完了信号を前記ホストに送信する工程と、
を更に含む、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記ブロックの前記エラー訂正を追跡する工程が、
前記ブロックをデータ構造に追加する工程と、
前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
を伴う、請求項１６に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記ブロックが、前記インタフェースの１つ以上のレーンを介して前記ホストに転送される、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記インタフェースが、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項１５のコンピュータ可読記憶媒体。
【請求項２１】
プロセッサ及びメモリを備えるホストと、記憶デバイスコントローラとを備えるシステムであって、
前記記憶デバイスコントローラは、
前記ホストから１組のブロックを読み取る要求を受け取るように構成され、
前記記憶デバイスから前記１組のブロックからの各ブロックを読み取り次第、前記ブロックを、前記ホストとのインタフェースを介して転送する、
ように構成された通信機構と、
前記ブロックを読み取り次第、前記ブロックにエラー検出を実行するように構成されたエラー検出装置と、
前記ブロック内にエラーが検出された場合に前記ブロックにエラー訂正を実行するように構成されたエラー訂正装置と、を備える、記憶デバイスコントローラと、を備え、
前記通信機構が、更に、前記ブロックから前記エラーが除去された後で前記ホストに前記ブロックを再転送することを特徴とするコンピュータシステム。
【請求項２２】
前記記憶デバイスコントローラが、前記ブロック内に前記エラーが検出された場合に前記ブロックの前記エラー訂正を追跡するように構成されたエラー追跡装置を更に備え、
前記通信機構が、更に、前記ブロックがすべてエラーなしに前記ホストに転送された後で前記完了信号を前記ホストに送信するように構成された、請求項２１に記載のコンピュータシステム。
【請求項２３】
前記ブロックの前記エラー訂正を追跡する工程が、
前記ブロックをデータ構造に追加する工程と、
前記ブロックから前記エラーが除去された後で前記データ構造から前記ブロックを除去する工程と、を伴う、請求項２２に記載のコンピュータシステム。
【請求項２４】
前記ブロックが、前記インタフェースの１つ以上のレーンを介して前記ホストに転送される、請求項２１に記載のコンピュータシステム。
【請求項２５】
前記インタフェースが、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである、請求項２１に記載のコンピュータシステム。
【請求項２６】
前記記憶デバイスが非回転式記憶デバイスに相当する、請求項２１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、コンピュータシステムの記憶デバイスに関する。より具体的には、本実施形態は、同時にデバイスからデータを転送しデータにエラー制御を実行して、待ち時間（レイテンシ）を短縮しホストへのスループットを改善する技術に関する。
【背景技術】
【０００２】
現代のコンピュータシステムは、典型的には、プロセッサ及びメモリを含むマザーボードを、様々なインタフェースを介してマザーボードに接続された１組の周辺構成要素と共に含む。例えば、シリアルＡＴＡ（ＳＡＴＡ）インタフェースは、記憶デバイス（例えば、ハードディスクドライブ、光学ドライブ、ソリッドステートドライブ、ハイブリッドハードドライブなど）とマザーボードとの間のデータ転送を容易にしてもよく、一方、ＰＣＩエクスプレス（ＰＣＩｅ）バスは、マザーボードと、幾つかの一体型及び／又はアドオン周辺構成要素との間の通信を可能にしてもよい。
【０００３】
更に、インタフェースのスループット及び／又は待ち時間は、コンピュータシステム内の構成要素間でデータが転送される速度に影響を及ぼすことがある。例えば、ＳＡＴＡインタフェースは、記憶デバイスとマザーボードとの間のデータのシリアル転送を最大６Ｇビット／秒の速度で可能にすることがある。ＳＡＴＡインタフェースを介したデータの送信の前に、データにエラー検出及び／又は訂正が行なわれ、これによりデータ送信の待ち時間が長くなることがある。また、送信データの８ｂ／１０ｂ符号化が、オーバヘッドを増やすことがある。その結果、ＳＡＴＡインタフェースは、約５５０ＭＢ／秒の実効スループットを提供することがある。
【０００４】
同時に、インタフェースに接続されたデバイスの動作速度は、次第に高速になっている。例えば、ソリッドステートドライブ（ＳＳＤ）は、複数のフラッシュチップにデータストライピング及び／又はインタリーブを実施することがある。また、ＳＳＤの読取り／書込み操作が、フラッシュチップに並列に行なわれ、ＳＳＤの実効読取り／書込み速度が７００ＭＢ／秒を超えることがある。その結果、コンピュータシステム内の高速構成要素間のデータ転送は、構成要素を接続するインタフェースのシグナル性能によって大きく限定されることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、コンピュータシステム内の構成要素間のインタフェースの待ち時間を短縮し及び／又はスループットを高めるための機構が必要とされている。
【課題を解決するための手段】
【０００６】
開示される実施形態は、記憶デバイスからホストにデータを転送するシステムを提供する。該システムは、ホストから１組のブロックを読み取る要求を受け取る通信機構を含む。次に、記憶デバイスから１組のブロックからの各ブロックを読み取り次第、通信機構は、ホストとのインタフェースを介してブロックを転送する。システムは、また、ブロックを読み取り次第ブロックにエラー検出を実行するエラー検出装置と、ブロックにエラーが検出された場合にブロックにエラー訂正を実行するエラー訂正装置とを含む。次に、ブロックからエラーが除去された後、通信機構は、ブロックをホストに再転送してもよい。
【０００７】
いくつかの実施形態では、ブロックは、順不同にホストに再転送される。例えば、ブロックは、後続のブロックがエラーなしにホストに転送された後で、ホストに再転送されてもよい。
【０００８】
いくつかの実施形態において、本システムは、また、ブロック内にエラーが検出された場合にブロックのエラー訂正を追跡するエラー追跡装置を含む。エラー追跡装置は、エラーを含む各ブロックをデータ構造に追加してもよい。ブロックからエラーが除去された後で、エラー追跡装置が、データ構造からブロックを除去してもよい。最後に、ブロックがすべてエラーなしにホストに転送された後（例えば、データ構造が空になった後）で、通信機構は、ホストに完了信号を送信してホストへのデータの転送を完了してもよい。
【０００９】
いくつかの実施形態では、ブロックは、インタフェースの１つ以上のレーンを介してホストに転送される。
【００１０】
いくつかの実施形態では、インタフェースは、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである。
【００１１】
いくつかの実施形態では、記憶デバイスは、非回転式記憶デバイスに相当する。例えば、記憶デバイスは、ソリッドステートドライブ（ＳＳＤ）でもよい。
【図面の簡単な説明】
【００１２】
【図１】一実施形態によるシステムの概略図である。
【図２】一実施形態による記憶デバイスからホストへのデータの転送である。
【図３】一実施形態による記憶デバイスからホストにデータを転送するプロセスを示すフローチャートである。
【図４】一実施形態によるコンピュータシステムである。
【００１３】
図では、類似の参照数字が同じ図要素を指す。
【発明を実施するための形態】
【００１４】
以下の説明は、如何なる当業者も実施形態を作成し使用できるようにするために提示され、特定の用途及びその要件の文脈で提供される。開示される実施形態に対する種々の変更は、当業者に容易に明らかになり、本明細書に定義される一般原理は、本開示の趣旨及び範囲から逸脱することなく他の実施形態及び用途に適用されてもよい。したがって、本発明は、示される実施形態に限定されず、本明細書に開示される原理及び特徴と一致する最も広い範囲が付与される。
【００１５】
この詳細な説明に述べるデータ構造及びコードは、典型的には、コンピュータ可読記憶媒体に記憶され、そのコンピュータ可読記憶媒体は、コンピュータシステムによって使用するためのコード及び／又はデータを記憶することができる任意のデバイス又は媒体でもよい。コンピュータ可読記憶媒体には、揮発性メモリ、不揮発性メモリ、ディスクドライブや磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスク若しくはデジタルビデオディスク）などの磁気及び光記憶デバイス、又は現在既知若しくは今後開発されるコード及び／若しくはデータを記憶できる他の媒体が挙げられるが、これらに限定されない。
【００１６】
詳細な説明の節で述べる方法及びプロセスは、前述のようなコンピュータ可読記憶媒体に記憶することができるコード及び／又はデータとして実施することができる。コンピュータシステムが、コンピュータ可読記憶媒体に記憶されたコード及び／又はデータを読み取り、執行するとき、コンピュータシステムは、データ構造及びコードとして実施され、コンピュータ可読記憶媒体内に記憶された方法及びプロセスを実行する。
【００１７】
更に、本明細書で述べる方法及びプロセスは、ハードウェアモジュール又は装置に含まれてもよい。これらのモジュール又は装置には、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定の時間に特定のソフトウェアモジュール若しくはコードを執行する専用若しくは共用プロセッサ、及び／又は現在既知若しくは今後開発される他のプログラム可能な論理デバイスが挙げられることがあるが、これらに限定されない。ハードウェアモジュール又は装置は、活性化されたとき、そこに含まれる方法及びプロセスを実行する。
【００１８】
開示される実施形態は、コンピュータシステム内のデータを転送するための方法及びシステムを提供する。図１に示されるように、コンピュータシステムは、ソリッドステートドライブ（ＳＳＤ）及び／又はハイブリッドハードドライブ（ＨＨＤ）などの記憶デバイス１４２を含んでもよい。記憶デバイス１４２は、ＳＳＤ内のフラッシュチップ及び／又はアレイのディスク（例えば、独立ディスクの冗長アレイ（ＲＡＩＤ））などの１つ以上の記憶ユニット１３２〜１４０を含むことがある。
【００１９】
記憶デバイス１４２は、コンピュータシステム内のホスト１００のためのデータを記憶することがある。図１に示されるように、ホスト１００は、プロセッサ１１０及びメモリ１２０を含むことがある。更に、ホスト１００は、バス１３０を介して記憶デバイス１４２用の記憶デバイスコントローラ１２２と通信することによって、記憶ユニット１３２〜１４０にデータを読み書きしてもよい。例えば、プロセッサ１１０は、バス１３０を介してデータの要求を記憶デバイスコントローラ１２２に送信することによって、記憶デバイス１４２に格納されたデータを取得してもよい。記憶デバイスコントローラ１２２は、１つ以上の記憶ユニット１３２〜１４０からデータを読み取り、そのデータをバス１３０を介してプロセッサ１１０及び／又はメモリ１２０内の１つ以上のロケーションに転送することによって、要求を処理してもよい。
【００２０】
当業者は、ホスト１００と記憶デバイス１４２との間のデータ転送速度が、バス１３０の待ち時間及び／又は帯域幅によって制限されることがあることを理解するであろう。例えば、バス１３０は、記憶デバイス１４２からホスト１００に最大６Ｇビット／秒の速度でデータをシリアルに転送するシリアルＡＴＡ（ＳＡＴＡ）バスに対応してもよい。しかしながら、バス１３０を介するデータ転送速度は、８ｂ／１０ｂ符号化オーバヘッド、並びにデータの送信前のデータのエラー訂正及び／又は検出によって限定されることがある。その結果、データは、記憶デバイス１４２とホスト１００との間で、５５０ＭＢ／秒以下の実効スループットで転送されることがある。
【００２１】
他方、記憶デバイスコントローラ１２２は、複数の記憶ユニット１３２〜１４０上でデータストライピング及び／又はインタリーブを実施することによって、記憶デバイス１４２の速度を高めてもよい。また、記憶デバイスコントローラ１２２は、記憶ユニット１３２〜１４０に並列に読み書き操作を行なってもよく、したがって、バス１３０のデータ転送速度を超える有効な読み／書き速度に達する。換言すると、バス１３０は、ホスト１００と記憶デバイス１４２との間のデータの転送のボトルネックとなることがある。
【００２２】
１つ以上の実施形態では、図１のシステムは、バス１３０の待ち時間を短縮することによってホスト１００と記憶デバイス１４２との間のデータの送信を容易にする。例えば、図２に関して後述されるように、記憶デバイスコントローラ１２２は、データのブロックを記憶ユニット１３２〜１４０から読み取るとすぐにデータのブロックをホスト１００に転送することによって、ホスト１００からのデータの要求を処理してもよい。その際に、記憶デバイスコントローラ１２２は、新しく読み取ったブロックを、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースなどのインタフェースの１つ以上のレーンを介して、メモリ１２０に送ってもよい。
【００２３】
１つ以上の実施形態では、図１のシステムは、また、バス１３０の帯域幅を大きくすることによってホスト１００と記憶デバイス１４２との間のデータの送信を容易にしてもよい。例えば、記憶デバイスコントローラ１２２は、１２８ｂ／１３０ｂ符号化を利用してもよく、インタフェースを介したデータの転送と関連するオーバヘッドを短縮させる。
【００２４】
新しく読み取ったブロックが、ホスト１００に転送されるとき、記憶デバイスコントローラ１２２は、ブロックのエラー検出を同時に実行してもよい。ブロックにエラーが検出された場合、記憶デバイスコントローラ１２２は、他のブロックをホスト１００に転送している間にエラー訂正を行なってエラーを除去してもよい。エラーが除去された後で、記憶デバイスコントローラ１２２は、ブロックをホスト１００に順不同に再転送してもよい（例えば、１つ以上の他の新しく読み取ったブロックを転送した後）。ブロックがすべてエラーなしにホストに転送された後、記憶デバイスコントローラ１２２は、ホストに完了信号を送信して要求を完了してもよい。同時に高速インタフェースを介してブロックを送りブロックのエラー制御を行なうことによって、記憶デバイスコントローラ１２２は、記憶デバイス１４２からホスト１００へのデータ送信の待ち時間を短縮してもよい。
【００２５】
図２は、一実施形態による記憶デバイス１４２からホスト１００へのデータの転送を示す。データ転送は、記憶デバイス１４２上の１組のブロック２１２〜２１８を読み取るホスト１００からの要求によって開始されてもよい。次に、要求は、インタフェース２００を介して送信され、記憶デバイスコントローラ１２２内の通信機構２０２によって受け取られてもよい。例えば、要求は、ホスト１００内のルートコンプレックスからＰＣＩｅインタフェースを介して記憶デバイスコントローラ１２２内のＰＣＩｅデバイスに送られてもよい。
【００２６】
要求を処理するために、記憶デバイスコントローラ１２２は、記憶デバイス１４２内の１つ以上の記憶ユニット（例えば、フラッシュチップ、ディスクなど）からブロック２１２〜２１８を読み取ってもよい。例えば、記憶デバイスコントローラ１２２は、ＳＳＤの複数のフラッシュチップ上のブロック２１２〜２１８をストライピング及び／又はインタリーブしてもよい。ブロック２１２〜２１８の後続の読み取りの際に、記憶デバイスコントローラ１２２は、フラッシュチップから各ブロックのデータを並列に取り出すことによって、記憶デバイス１４２と関連した読み取り速度を高めてもよい。
【００２７】
ブロックを読み取った後で、通信機構２０２は、インタフェース２００を介してブロックをホスト１００に転送してもよい。例えば、通信機構２０２は、ブロックのデータを含む１組の書き込みコマンドをＰＣＩｅインタフェースを介して発行することによって、ブロックを転送してもよい。書き込みコマンドは、ホスト１００内のメモリ（例えば、図１のメモリ１２０）の対応ブロック２２０〜２２６を更新するために、ホスト１００内のルートコンプレックスによって受け取られ、メモリコントローラに回送され、メモリコントローラによって使用されてもよい。
【００２８】
ブロックが、ホスト１００に転送されている間、記憶デバイスコントローラ１２２内のエラー検出装置２０４は、ブロックのエラー検出を実行してもよい。例えば、エラー検出装置２０４は、リード・ソロモン符号及び／又は他のエラー訂正符号（ＥＣＣ）などのブロックに追加された冗長データを調べてもよく、ブロックがエラーを含むかどうか判定する。ブロックにエラーがなく、ブロックがホスト１００に首尾よく転送された場合、記憶デバイスコントローラ１２２は、ブロックの読み取り及び転送を終了してもよい。
【００２９】
しかしながら、エラー検出装置２０４によってブロック内に１つ以上のエラーが検出された場合、記憶デバイスコントローラ１２２内のエラー訂正装置２０６が、ブロックにエラー訂正を実行してもよく、エラーを除去する。例えば、エラー訂正装置２０６は、冗長データを調べてエラーを探し、エラー値を訂正してもよい。エラー訂正装置２０６は、ブロックからエラーを除去する間、通信機構２０２が、記憶デバイス１４２から読み取った他のブロックをホスト１００に転送し続けてもよく、エラー検出装置２０４が、ブロックにエラー検出を実行してもよい。新しく読み取ったブロックの転送は、前に読み取ったブロックのエラー制御の完了に依存しないので、エラー訂正装置２０６は、より強力なＥＣＣを利用してもよく、記憶デバイス１４２からホスト１００へのブロックの転送の待ち時間を実質的に長くすることなく、前に読み取ったブロックのエラーを訂正する。
【００３０】
エラー訂正装置２０６が、ブロックからエラーを除去した後で、通信機構２０２は、ホスト１００にブロックを再転送してもよく、記憶デバイス１４２からホスト１００への正確なデータの送信を容易にする。ブロックが再転送される前に他のブロックがホスト１００に転送されることがあるので、ブロックは、順不同に再転送してもよい。例えば、記憶デバイスコントローラ１２２は、記憶デバイス１４２からブロック２１２〜２１８を昇順で読み取ってもよい。ブロック２１２が、インタフェース２００（例えば、ＰＣＩｅインタフェース）を介してホスト１００に転送され、ブロック２２０に書き込まれるとき、エラー検出装置２０４は、ブロック２１２内にエラーを検出してもよい。次に、エラー訂正装置２０６は、ブロック２１４〜２１８が、ホスト１００に転送され、エラーなしにブロック２２２〜２２６に書き込まれる間にブロック２１２にエラー訂正を実行してもよい。最後に、ブロック２１２からエラーが除去され、ブロック２１４〜２１８がホスト１００に首尾よく転送された後で、ブロック２１２が、ホスト１００に再転送され、ブロック２２０内のエラーデータを上書きするために使用されてもよい。
【００３１】
記憶デバイスコントローラ１２２内のエラー追跡装置２０８は、更に、ブロック内に検出されたエラーを追跡してもよい。エラー訂正の際に、エラー追跡装置２０８は、ブロックをキューや連結リストなどのデータ構造２１０に追加してもよい。ブロックからすべてのエラーが除去された後（例えば、エラー検出装置２０４とエラー訂正装置２０６との間の１回以上の繰り返し後）、エラー追跡装置２０８は、データ構造２１０からブロックを除去してもよい。したがって、エラー追跡装置２０８は、エラーと共にホスト１００に転送され、ブロックにエラー訂正が実行された後でホスト１００への再転送を必要とするブロックのリストを維持してもよい。
【００３２】
次に、記憶デバイスコントローラ１２２がエラー追跡装置２０８を使用して要求の完了状態を追跡してもよい。例えば、記憶デバイスコントローラ１２２は、ホスト１００によって要求されたブロック２１２〜２１８の別のリストを維持してもよい。各ブロックが、読み取られ、ホスト１００に転送されたとき、記憶デバイスコントローラ１２２は、リストからブロックを除去してもよい。他方、エラー検出装置２０４がブロック内にエラーを検出した場合には、ブロックは、データ構造２１０に追加されてもよい。すべてのブロック２１２〜２１８が読み取られてホスト１００に転送された後で、リストが空にされてもよく、一方、データ構造２１０は、ホスト１００への再転送を必要とするブロックを含んでもよい。次に、ブロックからエラーが除去されたときにブロックがデータ構造２１０から除去されてもよく、そのブロックは、エラーなしにホスト１００に再転送される。リスト及びデータ構造２１０が両方とも空になった後（例えば、すべてのブロック２１２〜２１８がエラーなしにホスト１００に転送された後）で、記憶デバイスコントローラ１２２は、ホスト１００に完了信号を送信してもよく、要求を完了する。
【００３３】
その結果、記憶デバイスコントローラ１２２は、インタフェース２００を介して並列性、順不同なデータ転送及び／又は繰り返しデータ転送を利用してもよく、ホスト１００と記憶デバイス１４２との間の通信を改善する。まず、記憶デバイスコントローラ１２２は、記憶デバイス１４２内の複数の記憶ユニットからデータを同時に読み取り、そのデータをインタフェース２００の複数レーンを介して並列に送ることによって、ホスト１００へのデータ転送の帯域幅を大きくしてもよい。次に、記憶デバイスコントローラ１２２は、同時にブロックをホスト１００に転送し、ブロックのエラー検出及び／又は訂正を実行してもよく、これにより、エラー制御が行なわれた後でホスト１００へのデータの送信と関連した待ち時間を短縮する。最後に、エラーが検出されブロックから除去された後で、記憶デバイスコントローラ１２２が、ホスト１００へのブロックの転送を順不同に繰り返してもよく、記憶デバイス１４２からエラーのないデータをホスト１００に提供する。
【００３４】
当業者は、記憶デバイスコントローラ１２２が様々な方法で実現されてもよいことを理解するであろう。例えば、通信機構２０２、エラー検出装置２０４、エラー訂正装置２０６、及びエラー追跡装置２０８が、単一回路及び／又は構成要素によって提供されてもよい。あるいは、記憶デバイスコントローラ１２２は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、マイクロコントローラ、及び／又はマイクロプロセッサなどの一体型及び別個の構成要素の他の組み合わせを利用してもよい。更に、記憶デバイスコントローラ１２２は、ＳＳＤ、ＨＨＤ並びに／又は他のタイプの回転式及び／又は非回転式記憶デバイスを含む様々な記憶デバイスに読み書きを実行するように構成されてもよい。
【００３５】
図３は、記憶デバイスから一実施形態によるホストにデータを転送するプロセスを示すフローチャートを示す。１つ以上の実施形態では、１つ以上の工程が、省略され、繰り返され、及び／又は異なる順序で実行されてもよい。したがって、図３に示される工程の特定の配列は、実施形態の範囲を限定するように解釈されるべきでない。
【００３６】
最初に、ホストから１組のブロックを読み取る要求を受け取る（動作３０２）。ホストは、コンピュータシステム内にプロセッサ及び／又はメモリを含んでもよい。次に、ブロックは、記憶デバイスからブロックを読み取り次第、ホストとのインタフェースを介して転送される（動作３０４）。例えば、ブロックは、ＳＳＤ内の１組のフラッシュチップから並列に読み取られ、ＰＣＩｅインタフェースの１つ以上のレーンを介してルートコンプレックスに転送されてもよい。ルートコンプレックスは、メモリコントローラにブロックを回送し、メモリコントローラは、ブロックをホスト上のメモリに書き込んでもよい。
【００３７】
ブロックがホストに転送されるときに同時にブロック上のエラー検出が実行され（動作３０６）、ブロック内にエラーが検出される（動作３０８）。ブロック内にエラーが検出されない場合、ブロックの処理は、ブロックがホストに転送された後で完了してもよい。エラーが検出された場合、ブロックにエラー訂正が実行されてエラーが除去される（動作３１０）。更に、ブロックのエラー訂正が追跡される（動作３１２）。例えば、エラー訂正の際に、ブロックはデータ構造に追加されてもよい。ブロックからすべてのエラーが除去された後で、ブロックはデータ構造から除去されてもよい。ブロックにエラー訂正が実行された後、ブロックは、ホストに順不同（例えば、後続のブロックがホストに転送された後）に再転送される（動作３１４）。
【００３８】
ホストへのブロックの転送は、続いてもよい（動作３１６）。例えば、すべての要求されたブロックがエラーなしにホストに転送されるまで、ブロックが転送され続けてもよい。ブロック転送が続く場合、新しく読み取られた各ブロックが、ホストに転送され（動作３０４）、ブロックに同時にエラー検出が実行されて（動作３０６）、ブロック内にエラーが検出される（動作３０８）。エラーが検出された場合、ブロックにエラー訂正が実行され（動作３１０）、追跡され（動作３１２）、続いてブロックは、ブロックからエラーが除去された後でホストに再転送される（動作３１４）。最後に、すべてのブロックが、エラーなしにホストに転送された後で、完了信号がホストに送信されて（動作３１８）、要求の処理を完結する。
【００３９】
図４は、一実施形態によるコンピュータシステム４００を示す。コンピュータシステム４００は、プロセッサ４０２、メモリ４０４、記憶デバイス４０６、及び／又は電子計算デバイス内に見られる他の構成要素を含む装置に相当してもよい。プロセッサ４０２は、コンピュータシステム４００内に他のプロセッサとの並列処理及び／又はマルチスレッド動作に対応してもよい。コンピュータシステム４００は、また、キーボード４０８、マウス４１０、及び表示装置４１２などの入出力（Ｉ／Ｏ）装置を含んでもよい。
【００４０】
コンピュータシステム４００は、本実施形態の様々な構成要素を執行する機能を有してもよい。詳細には、コンピュータシステム４００は、コンピュータシステム４００上のハードウェア及びソフトウェアリソースの使用を調整するオペレーティングシステム（図示せず）、並びにユーザのための専用タスクを実行する１つ以上のアプリケーションを含んでもよい。ユーザのためのタスクを実行するために、アプリケーションは、オペレーティングシステムからコンピュータシステム４００上のハードウェアリソースの使用を取得し、並びにオペレーティングシステムによって提供されるハードウェア及び／又はソフトウェアフレームワークによってユーザと対話してもよい。
【００４１】
１つ以上の実施形態では、コンピュータシステム４００は、記憶デバイスからホストにデータを転送するためのシステムを提供する。該システムは、ホストから１組のブロックを読み取る要求を受け取る通信機構を含んでもよい。次に、記憶デバイスから１組のブロックからの各ブロックを読み取り次第、通信機構は、ホストとのインタフェースを介してブロックを転送してもよい。該システムは、また、ブロックを読み取り次第ブロックにエラー検出を実行するエラー検出装置と、及びブロック内にエラーが検出された場合にブロックにエラー訂正を実行するエラー訂正装置とを含んでもよい。次に、ブロックからエラーが除去された後で、通信機構は、ブロックをホストに再転送してもよい。
【００４２】
システムは、更に、ブロック内に検出されたエラーを追跡するエラー追跡装置を含んでもよい。例えば、エラー追跡装置は、エラーを含む各ブロックをデータ構造に追加してもよい。ブロックからエラーが除去された後で、エラー追跡装置は、データ構造からブロックを除去してもよい。最後に、ブロックがすべてエラーなしにホストに転送された後（例えば、データ構造が空になった後）で、通信機構は、ホストに完了信号を送信してもよく、ホストへのデータの転送を完了する。
【００４３】
更に、コンピュータシステム４００の１つ以上の構成要素は、リモートに配置され、ネットワークを介して他の構成要素に接続されてもよい。また、本実施形態の一部分（例えば、通信機構、エラー検出装置、エラー訂正装置、エラー追跡装置など）は、また、実施形態を実現する分散システムの様々なノードに配置されてもよい。例えば、本実施形態は、リモート記憶デバイスとホストとの間でデータを転送するクラウドコンピューティングシステムを使用して実現されてもよい。
【００４４】
様々な実施形態の以上の説明は、例示及び説明のためにのみ提示されてきた。これらの説明は、網羅的でもなく本発明を開示された形態に限定するものでもない。したがって、多くの改良及び変形が当業者には明らかであろう。更に、上記の開示は、本発明を限定するものではない。
【図１】
2014529132.tif 000003
【図２】
2014529132.tif 000004
【図３】
2014529132.tif 000005
【図４】
2014529132.tif 000006
【手続補正書】
【提出日】平成26年2月19日(2014.2.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶デバイスからホストにデータを転送する方法であって、
前記ホストから１組のブロックを読み取る要求を受け取る工程と、
前記記憶デバイスから、前記１組のブロックからの各ブロックを読み取り次第、
前記ブロックを前記ホストとのインタフェースを介して転送する工程と、
前記ブロックにエラー検出を同時に実行する工程と、
前記ブロック内にエラーが検出された場合に、
前記ブロックにエラー訂正を実行して前記エラーを除去する工程と、
前記ブロックから前記エラーが除去された後で前記ブロックを前記ホストに再転送する工程と、
を含む、方法。
【請求項２】
前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡する工程と、
前記ブロックがすべてエラーなしに前記ホストに転送された後で完了信号を前記ホストに送信する工程と、
を更に含み、前記ブロックの前記エラー訂正を追跡する工程が、
前記ブロックをデータ構造に追加する工程と、
前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
を伴う、請求項１に記載の方法。
【請求項３】
前記ブロックが、前記ホストに順不同に再転送される、請求項１又は２に記載の方法。
【請求項４】
前記ブロックが、前記インタフェースの１つ以上のレーンを介して前記ホストに転送される、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記インタフェースが、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記記憶デバイス内の複数の記憶ユニットからデータを読み取る工程を更に含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記記憶デバイス内の複数の記憶ユニットにデータをインタリーブして前記記憶デバイスの速度を高める工程を更に含む、請求項１〜６のいずれか一項に記載の方法。
【請求項９】
前記記憶デバイスからのデータをストライピングして前記記憶デバイスの速度を高める工程を更に含む、請求項１〜６のいずれか一項に記載の方法。
【請求項１０】
記憶デバイスからホストにデータを転送するためのシステムであって、
前記ホストから１組のブロックを読み取る要求を受け取り、そして、前記記憶デバイスから前記１組のブロックからの各ブロックを読み取り次第、前記ブロックを前記ホストとのインタフェースを介して転送するように構成された通信機構を備え、更に、
前記ブロックを読み取り次第、前記ブロックにエラー検出を実行するように構成されたエラー検出装置と、
前記ブロック内にエラーが検出された場合に前記ブロックにエラー訂正を実行するように構成されたエラー訂正装置とを備え、
前記通信機構が、更に、前記ブロックから前記エラーが除去された後で前記ブロックを前記ホストに再転送するように構成されていることを特徴とする、システム。
【請求項１１】
前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡するように構成されたエラー追跡装置を更に備え、前記通信機構が、更に、前記ブロックがすべてエラーなしに前記ホストに転送された後で完了信号を前記ホストに送信するように構成され、
前記ブロックの前記エラー訂正を追跡する工程が、
前記ブロックをデータ構造に追加する工程と、
前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
を伴う、請求項１０に記載のシステム。
【請求項１２】
前記ブロックが、前記ホストに順不同に再転送される、請求項１０又は１１に記載のシステム。
【請求項１３】
前記ブロックが、前記インタフェースの１つ以上のレーンを介して前記ホストに転送される、請求項１０〜１２のいずれか一項に記載のシステム。
【請求項１４】
前記インタフェースが、ＰＣＩエクスプレス（ＰＣＩｅ）インタフェースである、請求項１０〜１３のいずれか一項に記載のシステム。
【請求項１５】
前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項１０〜１４のいずれか一項に記載のシステム。
【請求項１６】
前記記憶デバイス内の複数の記憶ユニットから前記データを読み取ることによって、前記ホストへの前記データ転送の帯域幅を大きくするように構成された記憶デバイスコントローラを更に備える、請求項１０〜１５のいずれか一項に記載のシステム。
【請求項１７】
更に、前記記憶デバイスコントローラが、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、マイクロコントローラ、及びマイクロプロセッサのうちの少なくとも１つを備える、請求項１６に記載のシステム。
【請求項１８】
前記記憶デバイスコントローラが、前記記憶デバイスからのデータをストライピングして前記記憶デバイスの速度を高めるように構成された、請求項１６又は１７に記載のシステム。
【請求項１９】
前記記憶デバイスコントローラが、前記記憶デバイス内の前記複数の記憶ユニット上にデータをインタリーブして前記記憶デバイスの速度を高めるように構成された、請求項１６〜１８のいずれか一項に記載のシステム。
【請求項２０】
前記ホストからブロックのデータセットを読み取る要求を送信するように構成され、インタフェースを介して前記１組のブロックから各ブロックを転送するように構成されたシリアルバスを更に備える、請求項１０〜１９のいずれか一項に記載のシステム。
【国際調査報告】
2014529132.tif 000007
2014529132.tif 000008
2014529132.tif 000009