JP2014529132A - 待ち時間を短縮しホストへのスループットを改善する同時データ転送及びエラー制御 - Google Patents

待ち時間を短縮しホストへのスループットを改善する同時データ転送及びエラー制御 Download PDF

Info

Publication number
JP2014529132A
JP2014529132A JP2014527361A JP2014527361A JP2014529132A JP 2014529132 A JP2014529132 A JP 2014529132A JP 2014527361 A JP2014527361 A JP 2014527361A JP 2014527361 A JP2014527361 A JP 2014527361A JP 2014529132 A JP2014529132 A JP 2014529132A
Authority
JP
Japan
Prior art keywords
block
host
error
storage device
blocks
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.)
Pending
Application number
JP2014527361A
Other languages
English (en)
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 JP2014529132A publication Critical patent/JP2014529132A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

開示された実施形態は、記憶デバイスからホストにデータを転送するシステムを提供する。該システムは、ホストから1組のブロックを読み取る要求を受け取る通信機構を含む。次に、記憶デバイスから1組のブロックからの各ブロックを読み取り次第、通信機構が、ブロックをホストとのインタフェースを介して転送する。システムは、また、ブロックを読み取り次第ブロックにエラー検出を実行するエラー検出装置と、ブロック内にエラーが検出された場合にブロックにエラー訂正を実行するエラー訂正装置とを含む。次に、通信機構は、ブロックからエラーが除去された後でブロックをホストに再転送してもよい。

Description

本実施形態は、コンピュータシステムの記憶デバイスに関する。より具体的には、本実施形態は、同時にデバイスからデータを転送しデータにエラー制御を実行して、待ち時間(レイテンシ)を短縮しホストへのスループットを改善する技術に関する。
現代のコンピュータシステムは、典型的には、プロセッサ及びメモリを含むマザーボードを、様々なインタフェースを介してマザーボードに接続された1組の周辺構成要素と共に含む。例えば、シリアルATA(SATA)インタフェースは、記憶デバイス(例えば、ハードディスクドライブ、光学ドライブ、ソリッドステートドライブ、ハイブリッドハードドライブなど)とマザーボードとの間のデータ転送を容易にしてもよく、一方、PCIエクスプレス(PCIe)バスは、マザーボードと、幾つかの一体型及び/又はアドオン周辺構成要素との間の通信を可能にしてもよい。
更に、インタフェースのスループット及び/又は待ち時間は、コンピュータシステム内の構成要素間でデータが転送される速度に影響を及ぼすことがある。例えば、SATAインタフェースは、記憶デバイスとマザーボードとの間のデータのシリアル転送を最大6Gビット/秒の速度で可能にすることがある。SATAインタフェースを介したデータの送信の前に、データにエラー検出及び/又は訂正が行なわれ、これによりデータ送信の待ち時間が長くなることがある。また、送信データの8b/10b符号化が、オーバヘッドを増やすことがある。その結果、SATAインタフェースは、約550MB/秒の実効スループットを提供することがある。
同時に、インタフェースに接続されたデバイスの動作速度は、次第に高速になっている。例えば、ソリッドステートドライブ(SSD)は、複数のフラッシュチップにデータストライピング及び/又はインタリーブを実施することがある。また、SSDの読取り/書込み操作が、フラッシュチップに並列に行なわれ、SSDの実効読取り/書込み速度が700MB/秒を超えることがある。その結果、コンピュータシステム内の高速構成要素間のデータ転送は、構成要素を接続するインタフェースのシグナル性能によって大きく限定されることがある。
したがって、コンピュータシステム内の構成要素間のインタフェースの待ち時間を短縮し及び/又はスループットを高めるための機構が必要とされている。
開示される実施形態は、記憶デバイスからホストにデータを転送するシステムを提供する。該システムは、ホストから1組のブロックを読み取る要求を受け取る通信機構を含む。次に、記憶デバイスから1組のブロックからの各ブロックを読み取り次第、通信機構は、ホストとのインタフェースを介してブロックを転送する。システムは、また、ブロックを読み取り次第ブロックにエラー検出を実行するエラー検出装置と、ブロックにエラーが検出された場合にブロックにエラー訂正を実行するエラー訂正装置とを含む。次に、ブロックからエラーが除去された後、通信機構は、ブロックをホストに再転送してもよい。
いくつかの実施形態では、ブロックは、順不同にホストに再転送される。例えば、ブロックは、後続のブロックがエラーなしにホストに転送された後で、ホストに再転送されてもよい。
いくつかの実施形態において、本システムは、また、ブロック内にエラーが検出された場合にブロックのエラー訂正を追跡するエラー追跡装置を含む。エラー追跡装置は、エラーを含む各ブロックをデータ構造に追加してもよい。ブロックからエラーが除去された後で、エラー追跡装置が、データ構造からブロックを除去してもよい。最後に、ブロックがすべてエラーなしにホストに転送された後(例えば、データ構造が空になった後)で、通信機構は、ホストに完了信号を送信してホストへのデータの転送を完了してもよい。
いくつかの実施形態では、ブロックは、インタフェースの1つ以上のレーンを介してホストに転送される。
いくつかの実施形態では、インタフェースは、PCIエクスプレス(PCIe)インタフェースである。
いくつかの実施形態では、記憶デバイスは、非回転式記憶デバイスに相当する。例えば、記憶デバイスは、ソリッドステートドライブ(SSD)でもよい。
一実施形態によるシステムの概略図である。 一実施形態による記憶デバイスからホストへのデータの転送である。 一実施形態による記憶デバイスからホストにデータを転送するプロセスを示すフローチャートである。 一実施形態によるコンピュータシステムである。
図では、類似の参照数字が同じ図要素を指す。
以下の説明は、如何なる当業者も実施形態を作成し使用できるようにするために提示され、特定の用途及びその要件の文脈で提供される。開示される実施形態に対する種々の変更は、当業者に容易に明らかになり、本明細書に定義される一般原理は、本開示の趣旨及び範囲から逸脱することなく他の実施形態及び用途に適用されてもよい。したがって、本発明は、示される実施形態に限定されず、本明細書に開示される原理及び特徴と一致する最も広い範囲が付与される。
この詳細な説明に述べるデータ構造及びコードは、典型的には、コンピュータ可読記憶媒体に記憶され、そのコンピュータ可読記憶媒体は、コンピュータシステムによって使用するためのコード及び/又はデータを記憶することができる任意のデバイス又は媒体でもよい。コンピュータ可読記憶媒体には、揮発性メモリ、不揮発性メモリ、ディスクドライブや磁気テープ、CD(コンパクトディスク)、DVD(デジタル多用途ディスク若しくはデジタルビデオディスク)などの磁気及び光記憶デバイス、又は現在既知若しくは今後開発されるコード及び/若しくはデータを記憶できる他の媒体が挙げられるが、これらに限定されない。
詳細な説明の節で述べる方法及びプロセスは、前述のようなコンピュータ可読記憶媒体に記憶することができるコード及び/又はデータとして実施することができる。コンピュータシステムが、コンピュータ可読記憶媒体に記憶されたコード及び/又はデータを読み取り、執行するとき、コンピュータシステムは、データ構造及びコードとして実施され、コンピュータ可読記憶媒体内に記憶された方法及びプロセスを実行する。
更に、本明細書で述べる方法及びプロセスは、ハードウェアモジュール又は装置に含まれてもよい。これらのモジュール又は装置には、特定用途向け集積回路(ASIC)チップ、フィールドプログラマブルゲートアレイ(FPGA)、特定の時間に特定のソフトウェアモジュール若しくはコードを執行する専用若しくは共用プロセッサ、及び/又は現在既知若しくは今後開発される他のプログラム可能な論理デバイスが挙げられることがあるが、これらに限定されない。ハードウェアモジュール又は装置は、活性化されたとき、そこに含まれる方法及びプロセスを実行する。
開示される実施形態は、コンピュータシステム内のデータを転送するための方法及びシステムを提供する。図1に示されるように、コンピュータシステムは、ソリッドステートドライブ(SSD)及び/又はハイブリッドハードドライブ(HHD)などの記憶デバイス142を含んでもよい。記憶デバイス142は、SSD内のフラッシュチップ及び/又はアレイのディスク(例えば、独立ディスクの冗長アレイ(RAID))などの1つ以上の記憶ユニット132〜140を含むことがある。
記憶デバイス142は、コンピュータシステム内のホスト100のためのデータを記憶することがある。図1に示されるように、ホスト100は、プロセッサ110及びメモリ120を含むことがある。更に、ホスト100は、バス130を介して記憶デバイス142用の記憶デバイスコントローラ122と通信することによって、記憶ユニット132〜140にデータを読み書きしてもよい。例えば、プロセッサ110は、バス130を介してデータの要求を記憶デバイスコントローラ122に送信することによって、記憶デバイス142に格納されたデータを取得してもよい。記憶デバイスコントローラ122は、1つ以上の記憶ユニット132〜140からデータを読み取り、そのデータをバス130を介してプロセッサ110及び/又はメモリ120内の1つ以上のロケーションに転送することによって、要求を処理してもよい。
当業者は、ホスト100と記憶デバイス142との間のデータ転送速度が、バス130の待ち時間及び/又は帯域幅によって制限されることがあることを理解するであろう。例えば、バス130は、記憶デバイス142からホスト100に最大6Gビット/秒の速度でデータをシリアルに転送するシリアルATA(SATA)バスに対応してもよい。しかしながら、バス130を介するデータ転送速度は、8b/10b符号化オーバヘッド、並びにデータの送信前のデータのエラー訂正及び/又は検出によって限定されることがある。その結果、データは、記憶デバイス142とホスト100との間で、550MB/秒以下の実効スループットで転送されることがある。
他方、記憶デバイスコントローラ122は、複数の記憶ユニット132〜140上でデータストライピング及び/又はインタリーブを実施することによって、記憶デバイス142の速度を高めてもよい。また、記憶デバイスコントローラ122は、記憶ユニット132〜140に並列に読み書き操作を行なってもよく、したがって、バス130のデータ転送速度を超える有効な読み/書き速度に達する。換言すると、バス130は、ホスト100と記憶デバイス142との間のデータの転送のボトルネックとなることがある。
1つ以上の実施形態では、図1のシステムは、バス130の待ち時間を短縮することによってホスト100と記憶デバイス142との間のデータの送信を容易にする。例えば、図2に関して後述されるように、記憶デバイスコントローラ122は、データのブロックを記憶ユニット132〜140から読み取るとすぐにデータのブロックをホスト100に転送することによって、ホスト100からのデータの要求を処理してもよい。その際に、記憶デバイスコントローラ122は、新しく読み取ったブロックを、PCIエクスプレス(PCIe)インタフェースなどのインタフェースの1つ以上のレーンを介して、メモリ120に送ってもよい。
1つ以上の実施形態では、図1のシステムは、また、バス130の帯域幅を大きくすることによってホスト100と記憶デバイス142との間のデータの送信を容易にしてもよい。例えば、記憶デバイスコントローラ122は、128b/130b符号化を利用してもよく、インタフェースを介したデータの転送と関連するオーバヘッドを短縮させる。
新しく読み取ったブロックが、ホスト100に転送されるとき、記憶デバイスコントローラ122は、ブロックのエラー検出を同時に実行してもよい。ブロックにエラーが検出された場合、記憶デバイスコントローラ122は、他のブロックをホスト100に転送している間にエラー訂正を行なってエラーを除去してもよい。エラーが除去された後で、記憶デバイスコントローラ122は、ブロックをホスト100に順不同に再転送してもよい(例えば、1つ以上の他の新しく読み取ったブロックを転送した後)。ブロックがすべてエラーなしにホストに転送された後、記憶デバイスコントローラ122は、ホストに完了信号を送信して要求を完了してもよい。同時に高速インタフェースを介してブロックを送りブロックのエラー制御を行なうことによって、記憶デバイスコントローラ122は、記憶デバイス142からホスト100へのデータ送信の待ち時間を短縮してもよい。
図2は、一実施形態による記憶デバイス142からホスト100へのデータの転送を示す。データ転送は、記憶デバイス142上の1組のブロック212〜218を読み取るホスト100からの要求によって開始されてもよい。次に、要求は、インタフェース200を介して送信され、記憶デバイスコントローラ122内の通信機構202によって受け取られてもよい。例えば、要求は、ホスト100内のルートコンプレックスからPCIeインタフェースを介して記憶デバイスコントローラ122内のPCIeデバイスに送られてもよい。
要求を処理するために、記憶デバイスコントローラ122は、記憶デバイス142内の1つ以上の記憶ユニット(例えば、フラッシュチップ、ディスクなど)からブロック212〜218を読み取ってもよい。例えば、記憶デバイスコントローラ122は、SSDの複数のフラッシュチップ上のブロック212〜218をストライピング及び/又はインタリーブしてもよい。ブロック212〜218の後続の読み取りの際に、記憶デバイスコントローラ122は、フラッシュチップから各ブロックのデータを並列に取り出すことによって、記憶デバイス142と関連した読み取り速度を高めてもよい。
ブロックを読み取った後で、通信機構202は、インタフェース200を介してブロックをホスト100に転送してもよい。例えば、通信機構202は、ブロックのデータを含む1組の書き込みコマンドをPCIeインタフェースを介して発行することによって、ブロックを転送してもよい。書き込みコマンドは、ホスト100内のメモリ(例えば、図1のメモリ120)の対応ブロック220〜226を更新するために、ホスト100内のルートコンプレックスによって受け取られ、メモリコントローラに回送され、メモリコントローラによって使用されてもよい。
ブロックが、ホスト100に転送されている間、記憶デバイスコントローラ122内のエラー検出装置204は、ブロックのエラー検出を実行してもよい。例えば、エラー検出装置204は、リード・ソロモン符号及び/又は他のエラー訂正符号(ECC)などのブロックに追加された冗長データを調べてもよく、ブロックがエラーを含むかどうか判定する。ブロックにエラーがなく、ブロックがホスト100に首尾よく転送された場合、記憶デバイスコントローラ122は、ブロックの読み取り及び転送を終了してもよい。
しかしながら、エラー検出装置204によってブロック内に1つ以上のエラーが検出された場合、記憶デバイスコントローラ122内のエラー訂正装置206が、ブロックにエラー訂正を実行してもよく、エラーを除去する。例えば、エラー訂正装置206は、冗長データを調べてエラーを探し、エラー値を訂正してもよい。エラー訂正装置206は、ブロックからエラーを除去する間、通信機構202が、記憶デバイス142から読み取った他のブロックをホスト100に転送し続けてもよく、エラー検出装置204が、ブロックにエラー検出を実行してもよい。新しく読み取ったブロックの転送は、前に読み取ったブロックのエラー制御の完了に依存しないので、エラー訂正装置206は、より強力なECCを利用してもよく、記憶デバイス142からホスト100へのブロックの転送の待ち時間を実質的に長くすることなく、前に読み取ったブロックのエラーを訂正する。
エラー訂正装置206が、ブロックからエラーを除去した後で、通信機構202は、ホスト100にブロックを再転送してもよく、記憶デバイス142からホスト100への正確なデータの送信を容易にする。ブロックが再転送される前に他のブロックがホスト100に転送されることがあるので、ブロックは、順不同に再転送してもよい。例えば、記憶デバイスコントローラ122は、記憶デバイス142からブロック212〜218を昇順で読み取ってもよい。ブロック212が、インタフェース200(例えば、PCIeインタフェース)を介してホスト100に転送され、ブロック220に書き込まれるとき、エラー検出装置204は、ブロック212内にエラーを検出してもよい。次に、エラー訂正装置206は、ブロック214〜218が、ホスト100に転送され、エラーなしにブロック222〜226に書き込まれる間にブロック212にエラー訂正を実行してもよい。最後に、ブロック212からエラーが除去され、ブロック214〜218がホスト100に首尾よく転送された後で、ブロック212が、ホスト100に再転送され、ブロック220内のエラーデータを上書きするために使用されてもよい。
記憶デバイスコントローラ122内のエラー追跡装置208は、更に、ブロック内に検出されたエラーを追跡してもよい。エラー訂正の際に、エラー追跡装置208は、ブロックをキューや連結リストなどのデータ構造210に追加してもよい。ブロックからすべてのエラーが除去された後(例えば、エラー検出装置204とエラー訂正装置206との間の1回以上の繰り返し後)、エラー追跡装置208は、データ構造210からブロックを除去してもよい。したがって、エラー追跡装置208は、エラーと共にホスト100に転送され、ブロックにエラー訂正が実行された後でホスト100への再転送を必要とするブロックのリストを維持してもよい。
次に、記憶デバイスコントローラ122がエラー追跡装置208を使用して要求の完了状態を追跡してもよい。例えば、記憶デバイスコントローラ122は、ホスト100によって要求されたブロック212〜218の別のリストを維持してもよい。各ブロックが、読み取られ、ホスト100に転送されたとき、記憶デバイスコントローラ122は、リストからブロックを除去してもよい。他方、エラー検出装置204がブロック内にエラーを検出した場合には、ブロックは、データ構造210に追加されてもよい。すべてのブロック212〜218が読み取られてホスト100に転送された後で、リストが空にされてもよく、一方、データ構造210は、ホスト100への再転送を必要とするブロックを含んでもよい。次に、ブロックからエラーが除去されたときにブロックがデータ構造210から除去されてもよく、そのブロックは、エラーなしにホスト100に再転送される。リスト及びデータ構造210が両方とも空になった後(例えば、すべてのブロック212〜218がエラーなしにホスト100に転送された後)で、記憶デバイスコントローラ122は、ホスト100に完了信号を送信してもよく、要求を完了する。
その結果、記憶デバイスコントローラ122は、インタフェース200を介して並列性、順不同なデータ転送及び/又は繰り返しデータ転送を利用してもよく、ホスト100と記憶デバイス142との間の通信を改善する。まず、記憶デバイスコントローラ122は、記憶デバイス142内の複数の記憶ユニットからデータを同時に読み取り、そのデータをインタフェース200の複数レーンを介して並列に送ることによって、ホスト100へのデータ転送の帯域幅を大きくしてもよい。次に、記憶デバイスコントローラ122は、同時にブロックをホスト100に転送し、ブロックのエラー検出及び/又は訂正を実行してもよく、これにより、エラー制御が行なわれた後でホスト100へのデータの送信と関連した待ち時間を短縮する。最後に、エラーが検出されブロックから除去された後で、記憶デバイスコントローラ122が、ホスト100へのブロックの転送を順不同に繰り返してもよく、記憶デバイス142からエラーのないデータをホスト100に提供する。
当業者は、記憶デバイスコントローラ122が様々な方法で実現されてもよいことを理解するであろう。例えば、通信機構202、エラー検出装置204、エラー訂正装置206、及びエラー追跡装置208が、単一回路及び/又は構成要素によって提供されてもよい。あるいは、記憶デバイスコントローラ122は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マイクロコントローラ、及び/又はマイクロプロセッサなどの一体型及び別個の構成要素の他の組み合わせを利用してもよい。更に、記憶デバイスコントローラ122は、SSD、HHD並びに/又は他のタイプの回転式及び/又は非回転式記憶デバイスを含む様々な記憶デバイスに読み書きを実行するように構成されてもよい。
図3は、記憶デバイスから一実施形態によるホストにデータを転送するプロセスを示すフローチャートを示す。1つ以上の実施形態では、1つ以上の工程が、省略され、繰り返され、及び/又は異なる順序で実行されてもよい。したがって、図3に示される工程の特定の配列は、実施形態の範囲を限定するように解釈されるべきでない。
最初に、ホストから1組のブロックを読み取る要求を受け取る(動作302)。ホストは、コンピュータシステム内にプロセッサ及び/又はメモリを含んでもよい。次に、ブロックは、記憶デバイスからブロックを読み取り次第、ホストとのインタフェースを介して転送される(動作304)。例えば、ブロックは、SSD内の1組のフラッシュチップから並列に読み取られ、PCIeインタフェースの1つ以上のレーンを介してルートコンプレックスに転送されてもよい。ルートコンプレックスは、メモリコントローラにブロックを回送し、メモリコントローラは、ブロックをホスト上のメモリに書き込んでもよい。
ブロックがホストに転送されるときに同時にブロック上のエラー検出が実行され(動作306)、ブロック内にエラーが検出される(動作308)。ブロック内にエラーが検出されない場合、ブロックの処理は、ブロックがホストに転送された後で完了してもよい。エラーが検出された場合、ブロックにエラー訂正が実行されてエラーが除去される(動作310)。更に、ブロックのエラー訂正が追跡される(動作312)。例えば、エラー訂正の際に、ブロックはデータ構造に追加されてもよい。ブロックからすべてのエラーが除去された後で、ブロックはデータ構造から除去されてもよい。ブロックにエラー訂正が実行された後、ブロックは、ホストに順不同(例えば、後続のブロックがホストに転送された後)に再転送される(動作314)。
ホストへのブロックの転送は、続いてもよい(動作316)。例えば、すべての要求されたブロックがエラーなしにホストに転送されるまで、ブロックが転送され続けてもよい。ブロック転送が続く場合、新しく読み取られた各ブロックが、ホストに転送され(動作304)、ブロックに同時にエラー検出が実行されて(動作306)、ブロック内にエラーが検出される(動作308)。エラーが検出された場合、ブロックにエラー訂正が実行され(動作310)、追跡され(動作312)、続いてブロックは、ブロックからエラーが除去された後でホストに再転送される(動作314)。最後に、すべてのブロックが、エラーなしにホストに転送された後で、完了信号がホストに送信されて(動作318)、要求の処理を完結する。
図4は、一実施形態によるコンピュータシステム400を示す。コンピュータシステム400は、プロセッサ402、メモリ404、記憶デバイス406、及び/又は電子計算デバイス内に見られる他の構成要素を含む装置に相当してもよい。プロセッサ402は、コンピュータシステム400内に他のプロセッサとの並列処理及び/又はマルチスレッド動作に対応してもよい。コンピュータシステム400は、また、キーボード408、マウス410、及び表示装置412などの入出力(I/O)装置を含んでもよい。
コンピュータシステム400は、本実施形態の様々な構成要素を執行する機能を有してもよい。詳細には、コンピュータシステム400は、コンピュータシステム400上のハードウェア及びソフトウェアリソースの使用を調整するオペレーティングシステム(図示せず)、並びにユーザのための専用タスクを実行する1つ以上のアプリケーションを含んでもよい。ユーザのためのタスクを実行するために、アプリケーションは、オペレーティングシステムからコンピュータシステム400上のハードウェアリソースの使用を取得し、並びにオペレーティングシステムによって提供されるハードウェア及び/又はソフトウェアフレームワークによってユーザと対話してもよい。
1つ以上の実施形態では、コンピュータシステム400は、記憶デバイスからホストにデータを転送するためのシステムを提供する。該システムは、ホストから1組のブロックを読み取る要求を受け取る通信機構を含んでもよい。次に、記憶デバイスから1組のブロックからの各ブロックを読み取り次第、通信機構は、ホストとのインタフェースを介してブロックを転送してもよい。該システムは、また、ブロックを読み取り次第ブロックにエラー検出を実行するエラー検出装置と、及びブロック内にエラーが検出された場合にブロックにエラー訂正を実行するエラー訂正装置とを含んでもよい。次に、ブロックからエラーが除去された後で、通信機構は、ブロックをホストに再転送してもよい。
システムは、更に、ブロック内に検出されたエラーを追跡するエラー追跡装置を含んでもよい。例えば、エラー追跡装置は、エラーを含む各ブロックをデータ構造に追加してもよい。ブロックからエラーが除去された後で、エラー追跡装置は、データ構造からブロックを除去してもよい。最後に、ブロックがすべてエラーなしにホストに転送された後(例えば、データ構造が空になった後)で、通信機構は、ホストに完了信号を送信してもよく、ホストへのデータの転送を完了する。
更に、コンピュータシステム400の1つ以上の構成要素は、リモートに配置され、ネットワークを介して他の構成要素に接続されてもよい。また、本実施形態の一部分(例えば、通信機構、エラー検出装置、エラー訂正装置、エラー追跡装置など)は、また、実施形態を実現する分散システムの様々なノードに配置されてもよい。例えば、本実施形態は、リモート記憶デバイスとホストとの間でデータを転送するクラウドコンピューティングシステムを使用して実現されてもよい。
様々な実施形態の以上の説明は、例示及び説明のためにのみ提示されてきた。これらの説明は、網羅的でもなく本発明を開示された形態に限定するものでもない。したがって、多くの改良及び変形が当業者には明らかであろう。更に、上記の開示は、本発明を限定するものではない。

Claims (26)

  1. 記憶デバイスからホストにデータを転送するためにコンピュータで実行される方法であって、
    前記ホストから1組のブロックを読み取る要求を受け取る工程と、
    前記記憶デバイスから、前記1組のブロックからの各ブロックを読み取り次第、
    前記ブロックを前記ホストとのインタフェースを介して転送する工程と、
    前記ブロックにエラー検出を同時に実行する工程と、
    前記ブロック内にエラーが検出された場合に、
    前記ブロックにエラー訂正を実行して前記エラーを除去する工程と、
    前記ブロックから前記エラーが除去された後で前記ブロックを前記ホストに再転送する工程と、
    を含む、方法。
  2. 前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡する工程と、
    前記ホストに前記ブロックがすべてエラーなしに転送された後で完了信号を前記ホストに送信する工程と、
    を更に含む、請求項1に記載の方法。
  3. 前記ブロックの前記エラー訂正を追跡する工程が、
    前記ブロックをデータ構造に追加する工程と、
    前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
    を伴う、請求項2に記載の方法。
  4. 前記ブロックが、前記ホストに順不同に再転送される、請求項1に記載の方法。
  5. 前記ブロックが、前記インタフェースの1つ以上のレーンを介して前記ホストに転送される、請求項1に記載の方法。
  6. 前記インタフェースが、PCIエクスプレス(PCIe)インタフェースである、請求項1に記載の方法。
  7. 前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項1に記載の方法。
  8. 記憶デバイスからホストにデータを転送するためのシステムであって、
    通信機構であって、
    前記ホストから1組のブロックを読み取る要求を受け取るように構成され、
    前記記憶デバイスから前記1組のブロックからの各ブロックを読み取り次第、前記ブロックを、前記ホストとのインタフェースを介して転送するように構成された、
    通信機構と、
    前記ブロックを読み取り次第、前記ブロックにエラー検出を実行するように構成されたエラー検出装置と、
    前記ブロック内にエラーが検出された場合に前記ブロックにエラー訂正を実行するように構成されたエラー訂正装置と、
    を備え、
    前記通信機構が、更に、前記ブロックから前記エラーが除去された後で前記ホストに前記ブロックを再転送するように構成された、システム。
  9. 前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡するように構成されたエラー追跡装置を更に備え、
    前記通信機構が、更に、前記ブロックがすべてエラーなしに前記ホストに転送された後で完了信号を前記ホストに送信するように構成された、請求項8に記載のシステム。
  10. 前記ブロックの前記エラー訂正を追跡する工程が、
    前記ブロックをデータ構造に追加する工程と、
    前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
    を伴う、請求項9に記載のシステム。
  11. 前記ブロックが、前記ホストに順不同に再転送される、請求項8に記載のシステム。
  12. 前記ブロックが、前記インタフェースの1つ以上のレーンを介して前記ホストに転送される、請求項8に記載のシステム。
  13. 前記インタフェースが、PCIエクスプレス(PCIe)インタフェースである、請求項8に記載のシステム。
  14. 前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項8に記載のシステム。
  15. コンピュータによって実行されるときに、前記コンピュータに、記憶デバイスからホストにデータを転送する方法を実行させる命令を記憶したコンピュータ可読記憶媒体であって、前記方法が、
    前記ホストから1組のブロックを読み取る要求を受け取る工程と、
    前記記憶デバイスから、前記1組のブロックからの各ブロックを読み取り次第、
    前記ブロックを前記ホストとのインタフェースを介して転送する工程と、
    前記ブロックにエラー検出を同時に実行する工程と、
    前記ブロック内にエラーが検出された場合に、
    前記ブロックにエラー訂正を実行して前記エラーを除去する工程と、
    前記ブロックから前記エラーが除去された後で前記ホストに前記ブロックを再転送する工程とを含む、コンピュータ可読記憶媒体。
  16. 前記方法が、
    前記ブロック内に前記エラーが検出された場合に、前記ブロックの前記エラー訂正を追跡する工程と、
    前記ホストに前記ブロックがすべてエラーなしに転送された後で完了信号を前記ホストに送信する工程と、
    を更に含む、請求項15に記載のコンピュータ可読記憶媒体。
  17. 前記ブロックの前記エラー訂正を追跡する工程が、
    前記ブロックをデータ構造に追加する工程と、
    前記ブロックから前記エラーが除去された後で、前記データ構造から前記ブロックを除去する工程と、
    を伴う、請求項16に記載のコンピュータ可読記憶媒体。
  18. 前記ブロックが、前記インタフェースの1つ以上のレーンを介して前記ホストに転送される、請求項15に記載のコンピュータ可読記憶媒体。
  19. 前記インタフェースが、PCIエクスプレス(PCIe)インタフェースである、請求項15に記載のコンピュータ可読記憶媒体。
  20. 前記記憶デバイスが、非回転式記憶デバイスに相当する、請求項15のコンピュータ可読記憶媒体。
  21. プロセッサ及びメモリを備えるホストと、記憶デバイスコントローラとを備えるシステムであって、
    前記記憶デバイスコントローラは、
    前記ホストから1組のブロックを読み取る要求を受け取るように構成され、
    前記記憶デバイスから前記1組のブロックからの各ブロックを読み取り次第、前記ブロックを、前記ホストとのインタフェースを介して転送する、
    ように構成された通信機構と、
    前記ブロックを読み取り次第、前記ブロックにエラー検出を実行するように構成されたエラー検出装置と、
    前記ブロック内にエラーが検出された場合に前記ブロックにエラー訂正を実行するように構成されたエラー訂正装置と、を備える、記憶デバイスコントローラと、を備え、
    前記通信機構が、更に、前記ブロックから前記エラーが除去された後で前記ホストに前記ブロックを再転送することを特徴とするコンピュータシステム。
  22. 前記記憶デバイスコントローラが、前記ブロック内に前記エラーが検出された場合に前記ブロックの前記エラー訂正を追跡するように構成されたエラー追跡装置を更に備え、
    前記通信機構が、更に、前記ブロックがすべてエラーなしに前記ホストに転送された後で前記完了信号を前記ホストに送信するように構成された、請求項21に記載のコンピュータシステム。
  23. 前記ブロックの前記エラー訂正を追跡する工程が、
    前記ブロックをデータ構造に追加する工程と、
    前記ブロックから前記エラーが除去された後で前記データ構造から前記ブロックを除去する工程と、を伴う、請求項22に記載のコンピュータシステム。
  24. 前記ブロックが、前記インタフェースの1つ以上のレーンを介して前記ホストに転送される、請求項21に記載のコンピュータシステム。
  25. 前記インタフェースが、PCIエクスプレス(PCIe)インタフェースである、請求項21に記載のコンピュータシステム。
  26. 前記記憶デバイスが非回転式記憶デバイスに相当する、請求項21に記載のコンピュータシステム。
JP2014527361A 2011-09-02 2012-08-28 待ち時間を短縮しホストへのスループットを改善する同時データ転送及びエラー制御 Pending JP2014529132A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/224,714 US8656251B2 (en) 2011-09-02 2011-09-02 Simultaneous data transfer and error control to reduce latency and improve throughput to a host
US13/224,714 2011-09-02
PCT/US2012/052713 WO2013033121A1 (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host

Publications (1)

Publication Number Publication Date
JP2014529132A true JP2014529132A (ja) 2014-10-30

Family

ID=46801657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014527361A Pending JP2014529132A (ja) 2011-09-02 2012-08-28 待ち時間を短縮しホストへのスループットを改善する同時データ転送及びエラー制御

Country Status (9)

Country Link
US (2) US8656251B2 (ja)
EP (1) EP2751688A1 (ja)
JP (1) JP2014529132A (ja)
KR (1) KR101598726B1 (ja)
CN (1) CN103748561B (ja)
AU (1) AU2012302094B2 (ja)
BR (1) BR112014002172A2 (ja)
MX (1) MX2013015121A (ja)
WO (1) WO2013033121A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170066226A (ko) * 2015-11-16 2017-06-14 에이취지에스티 네덜란드 비.브이. 에러 정정 전에 비휘발성 고체 상태 디바이스로부터 데이터를 송신하는 시스템 및 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8988800B1 (en) * 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
JP5542787B2 (ja) * 2011-12-08 2014-07-09 シャープ株式会社 画像形成装置
MY180992A (en) * 2013-03-13 2020-12-15 Intel Corp Memory latency management
US9323610B2 (en) 2014-01-30 2016-04-26 Sandisk Technologies Inc. Non-blocking commands
US9851901B2 (en) 2014-09-26 2017-12-26 Western Digital Technologies, Inc. Transfer of object memory references in a data storage device
KR102229024B1 (ko) 2014-12-03 2021-03-17 삼성전자주식회사 스스로 에러를 검출하고 로그를 저장할 수 있는 데이터 저장 장치와 이를 포함하는 시스템
DE102015209033A1 (de) * 2015-05-18 2016-11-24 Robert Bosch Gmbh Verfahren und Vorrichtung zum Liefern einer Prüfantwort
US11588783B2 (en) * 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
US10768856B1 (en) * 2018-03-12 2020-09-08 Amazon Technologies, Inc. Memory access for multiple circuit components
CN114978441A (zh) * 2022-06-14 2022-08-30 四川禹明光电技术有限公司 一种用于光纤传感同步传输的监测校正系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5819712A (ja) * 1981-07-29 1983-02-04 Hitachi Ltd デ−タ記録方式
JP2000305861A (ja) * 1999-04-26 2000-11-02 Hitachi Ltd 記憶装置およびメモリカード
JP2004152409A (ja) * 2002-10-30 2004-05-27 Victor Co Of Japan Ltd 復号化装置及びコンピュータプログラム並びにコンピュータプログラム送受信システム
JP2005141341A (ja) * 2003-11-05 2005-06-02 Hitachi Ltd メモリ制御装置、および、メモリ制御方法
US20060248432A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Method and apparatus for implementing processor bus speculative data completion
JP2007193810A (ja) * 2006-01-18 2007-08-02 Apple Inc フラッシュメモリ用インターリーブポリシー
JP2008204482A (ja) * 2008-04-24 2008-09-04 Matsushita Electric Ind Co Ltd 記憶装置
JP2010039779A (ja) * 2008-08-05 2010-02-18 Sony Corp リーダライタ、情報読み出し方法、通信システムおよび通信方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57211177A (en) * 1981-06-23 1982-12-24 Hitachi Metals Ltd Picture reproducing device
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
US5490148A (en) * 1993-12-15 1996-02-06 Motorola, Inc. Bit error rate estimator
US5694262A (en) * 1994-01-31 1997-12-02 Fujitsu Ltd. Method and apparatus for transferring data and making on-the-fly correction of errors
US5488702A (en) * 1994-04-26 1996-01-30 Unisys Corporation Data block check sequence generation and validation in a file cache system
JP4437519B2 (ja) * 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
JP4679370B2 (ja) * 2004-02-03 2011-04-27 パナソニック株式会社 データ処理装置並びにメモリカードの設定方法
US8402201B2 (en) * 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US8639870B2 (en) * 2011-01-14 2014-01-28 Oracle International Corporation String searching within peripheral storage devices

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5819712A (ja) * 1981-07-29 1983-02-04 Hitachi Ltd デ−タ記録方式
JP2000305861A (ja) * 1999-04-26 2000-11-02 Hitachi Ltd 記憶装置およびメモリカード
JP2004152409A (ja) * 2002-10-30 2004-05-27 Victor Co Of Japan Ltd 復号化装置及びコンピュータプログラム並びにコンピュータプログラム送受信システム
JP2005141341A (ja) * 2003-11-05 2005-06-02 Hitachi Ltd メモリ制御装置、および、メモリ制御方法
US20060248432A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Method and apparatus for implementing processor bus speculative data completion
JP2007193810A (ja) * 2006-01-18 2007-08-02 Apple Inc フラッシュメモリ用インターリーブポリシー
JP2008204482A (ja) * 2008-04-24 2008-09-04 Matsushita Electric Ind Co Ltd 記憶装置
JP2010039779A (ja) * 2008-08-05 2010-02-18 Sony Corp リーダライタ、情報読み出し方法、通信システムおよび通信方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170066226A (ko) * 2015-11-16 2017-06-14 에이취지에스티 네덜란드 비.브이. 에러 정정 전에 비휘발성 고체 상태 디바이스로부터 데이터를 송신하는 시스템 및 방법
JP2017151955A (ja) * 2015-11-16 2017-08-31 エイチジーエスティーネザーランドビーブイ 誤り訂正前に不揮発性固体装置からデータを送信するシステムおよび方法
KR101967955B1 (ko) 2015-11-16 2019-04-10 에이취지에스티 네덜란드 비.브이. 에러 정정 전에 비휘발성 고체 상태 디바이스로부터 데이터를 송신하는 시스템 및 방법

Also Published As

Publication number Publication date
MX2013015121A (es) 2014-03-31
AU2012302094A1 (en) 2014-01-16
CN103748561A (zh) 2014-04-23
BR112014002172A2 (pt) 2017-03-01
US20140195872A1 (en) 2014-07-10
CN103748561B (zh) 2019-01-08
US20130061111A1 (en) 2013-03-07
AU2012302094B2 (en) 2016-02-18
KR101598726B1 (ko) 2016-02-29
KR20140025595A (ko) 2014-03-04
EP2751688A1 (en) 2014-07-09
WO2013033121A1 (en) 2013-03-07
US9015557B2 (en) 2015-04-21
US8656251B2 (en) 2014-02-18

Similar Documents

Publication Publication Date Title
JP2014529132A (ja) 待ち時間を短縮しホストへのスループットを改善する同時データ転送及びエラー制御
US10545843B2 (en) Storage device with error recovery indication
US11095315B1 (en) Intelligent error correction in a storage device
US10976939B2 (en) Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US9946670B2 (en) Determining when to throttle interrupts to limit interrupt processing to an interrupt processing time period
TWI814975B (zh) 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片
US11366610B2 (en) Solid-state drive with initiator mode
KR102102728B1 (ko) 스케일러블 스토리지 보호
EP3074873A1 (en) Method and apparatus for storing data
WO2016048724A1 (en) Memory write management in a computer system
US20110282963A1 (en) Storage device and method of controlling storage device
CN112612639A (zh) 操作存储器系统的方法、操作主机的方法和计算系统
US9798493B2 (en) Firmware bypass for medium-access commands
JP5760556B2 (ja) ストレージ装置、制御装置およびストレージ装置制御方法
US9690484B2 (en) Minimizing delay periods when accessing mirrored disks
WO2020250091A1 (en) Efficient error correction of codewords encoded by binary symmetry-invariant product codes
JP4439295B2 (ja) データ転送制御装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150302

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150513

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150803

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151102