(58)【調査した分野】(Int.Cl.,DB名)
前記エラー訂正コードアルゴリズムが前記データにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを前記要求元に送信するロジックをさらに備える、請求項15または16に記載のコントローラ。
【発明を実施するための形態】
【0005】
いくつかのメモリシステムは、揮発性メモリとして具現化されることが多く、キャッシュメモリとして機能し得るローカルな高速アクセスメモリ、及び、不揮発性メモリ、例えば、ダイナミックランダムアクセスメモリ、またはさらに、磁気もしくは光学メモリを備え得る1つまたは複数の遠隔メモリデバイスを用いて、実装され得る。例として、複数の遠隔メモリデバイスは、1つまたは複数のダイレクトインラインメモリモジュール(DIMM)を備えてもよく、その各々は、1つまたは複数のメモリランクを備えてもよく、次いで、これらは、1つまたは複数のダイナミックランダムアクセスメモリ(DRAM)チップを備えてもよく、または不揮発性メモリ、例えば、相変化メモリ、NANDメモリ等を含んでもよい。いくつかの電子デバイス(例えば、スマートフォン、タブレットコンピュータ等)は、1つまたは複数のDRAMを備えるより簡易な複数の遠隔メモリシステムを備えてもよい。
【0006】
複数の遠隔メモリデバイスは、複数の読み出しエラーを検出及び訂正するために、複数のエラー訂正コード(ECC)アルゴリズムを実行してもよい。例示的な複数のECCアルゴリズムは、BCHエラー訂正コード及び複数のリード−ソロモンアルゴリズムを含む。このような複数のECCアルゴリズムは、遠隔メモリデバイスによって実行される複数の読み出し動作に、追加のレイテンシを導入する。複数の様々な実施形態において、本明細書で説明される複数の技術は、遠隔メモリデバイスが、ECC訂正ロジックをホストへのデータ転送でパイプライン化することにより、読み出し動作中に得られたデータをECCアルゴリズムの完了前に戻すことを可能にすることによって、このようなレイテンシを低減する。データ要求を発したコントローラは、遠隔メモリデバイスからのECCインジケータを待ちつつ、遠隔メモリデバイスから受信されたデータをローカルメモリに格納するように構成されてもよい。遠隔メモリデバイスによって実行されたECCアルゴリズムが、データ中にエラーを検出しなかった場合、遠隔メモリデバイスは、データが良好であることを示すECCインジケータを転送し、データ要求を発したコントローラは、データを処理してもよい。一方、遠隔メモリデバイスによって実行されたECCアルゴリズムが、データ中に複数のエラーを検出した場合、遠隔メモリデバイスは、データに欠陥があることを示すECCインジケータを転送し、データ要求を発したコントローラは、データ処理に進む前に、訂正されたデータを受信するまで待つ。
【0007】
本明細書で説明される複数の技術は、様々な複数のコンピューティングシステム(例えば、サーバ、デスクトップ、ノートブック、スマートフォン、タブレット、ポータブルゲームコンソール等を含む)で提供されてもよく、これらは、一般的にデュアルインラインメモリモジュール(DIMM)に組み込まれる複数のDRAMチップ及び不揮発性メモリ、例えば、相変化メモリまたはNANDメモリを備えるメモリシステムを含んでもよい。このような複数の実施形態において、各DRAMは、別個の更新制御ロジックを備えてもよい。代替的に、更新制御ロジックは、DIMMの複数のDRAMに対する複数の動作を制御するために、DIMMレベルで実装されてもよい。
【0008】
以下の説明において、複数の様々な実施形態を十分に理解ならしめるために、多数の具体的な詳細が記載される。しかしながら、本発明の複数の様々な実施形態は、具体的な詳細がなくても実施され得る。他の複数の例において、周知の方法、処理、コンポーネント及び回路は、本発明の複数の特定の実施形態を曖昧にしないよう、詳細には説明されていない。さらに、本発明の複数の実施形態の様々な複数の態様は、集積半導体回路(「ハードウェア」)、1つまたは複数のプログラムにまとめられたコンピュータ可読命令(「ソフトウェア」)またはハードウェア及びソフトウェアのいくつかの組み合わせのような、様々な手段を用いて実行され得る。本開示の目的のため、「ロジック」という記載は、ハードウェア、ソフトウェアまたはそれらのいくつかの組み合わせのいずれかを意味するものとする。
【0009】
図1は、本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための、装置の複数のコンポーネントの模式的なブロック図である。
図1を参照すると、いくつかの実施形態において、中央処理装置(CPU)パッケージ100は、制御ハブ120に連結される1つまたは複数のCPU110と、ローカルメモリ130とを備えてもよい。制御ハブ120は、メモリコントローラ122と、メモリインタフェース124とを備える。
【0010】
メモリインタフェース124は、通信バス160によって、1つまたは複数の遠隔メモリデバイス140に連結される。メモリデバイス140は、コントローラ142と、1つまたは複数のメモリバンク150とを備えてもよい。複数の様々な実施形態において、複数のメモリバンク150は、不揮発性メモリ、例えば、相変化メモリ、NAND(フラッシュ)メモリ、強誘電体ランダムアクセスメモリ(FeTRAM)、ナノワイヤベースの不揮発性メモリ、メモリスタ技術を組み込んだメモリ、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、スピン注入磁化反転メモリ(STT−RAM)またはNANDメモリのような3次元(3D)クロスポイントメモリを用いて実装されてもよい。例として、いくつかの実施形態において、メモリデバイス140は、コントローラ142への通信リンクを提供するメモリチャネル144に連結される1つまたは複数のダイレクトインラインメモリモジュール(DIMM)を備えてもよい。メモリデバイス140におけるメモリバンク150の具体的構成は、重要ではない。
【0011】
上述されたように、いくつかの実施形態において、メモリコントローラ122のロジックは、メモリデバイス140における複数の読み出し動作に関連付けられたメモリレイテンシを管理するために、メモリデバイスのコントローラ142のロジックと連携する。メモリコントローラ122及びコントローラ142によって実行される複数の動作は、
図2を参照しながら説明される。
図2を参照すると、動作210において、メモリコントローラ122は、ホストから、例えば、CPU110または制御ハブ120に連結された他のプロセッサ上で動作するアプリケーションからのデータ要求を受信する。動作215において、メモリコントローラ122は、アプリケーションによって要求されたデータに対するデータ要求を生成する。データ要求は、メモリインタフェース124及びバス160を介して、メモリデバイス140のコントローラ142に転送される。
【0012】
動作220において、コントローラ142は、データ要求を受信し、動作225において、コントローラ142は、メモリバンク150からのデータ要求に関連付けられたデータを取得する。動作230において、コントローラ142は、バス160がアイドリングしているか否かを判断する。動作230において、データバス160がアイドリングしていない場合(例えば、データバス160が、データ送信のために用いられている場合)、制御は動作235に渡り、コントローラ142は、メモリバンク150から取得されたデータにおける複数の読み出しエラーを検出及び訂正するECCアルゴリズムを実行する。動作240において、メモリバンク150から取得されたデータは、バス160を介してメモリインタフェース124に送信される。
【0013】
動作270において、メモリコントローラ122は、バス160を介してデータを受信する。動作275において、メモリコントローラ122は、データが読み出しエラーを有するか否かを評価する。データはECC検出及び訂正動作を既に受けているため、データはエラーを有しておらず、制御は動作285に渡り、データは、ホストに戻される。
【0014】
これら複数の動作に関連付けられたレイテンシのタイムラインが、
図3に示される。
図3を参照すると、第1回目のレイテンシ310は、コマンド処理に関連付けられ、第2回目のレイテンシ315は、メモリバンク150からのデータ読み出しにおける読み出しアクセスレイテンシに関連付けられる。第3のレイテンシ320は、メモリバンク150からコントローラ142へのデータ転送に関連付けられる。第4のレイテンシ325は、ECCチェック及び訂正処理325に関連付けられる。第5のレイテンシは、メモリデバイス140から制御ハブ120へのデータ転送に関連付けられる。合計レイテンシは、
図3に示される複数のレイテンシの各々の合計に対応する。
【0015】
再び
図2を参照すると、動作230においてデータバス160がアイドリングしていた場合、制御は動作245に渡り、コントローラ142は、要求されたデータに対するECCチェックの実行に必要な時間を推定する。いくつかの実施形態において、複数の読み出し動作は、ECC動作にかかる期間をコントローラが予め判断できるように、既知の固定サイズである。
【0016】
動作250において、コントローラ142は、動作245において判断されたECCの遅延時間に対応する時間長だけ、データ送信の遅延を実行し、次に動作255において、コントローラ142は、データバス160を介し、メモリデバイス140からメモリインタフェース124への、要求されたデータのデータ送信を開始する。動作260において、コントローラ142は、データに対するECCチェックを実行し、動作265において、コントローラ142は、ECCインジケータを、データバスを介してメモリインタフェース124に送信する。
【0017】
動作270において、メモリコントローラ122は、バス160を介して、データ及びECCインジケータを受信する。動作275において、メモリコントローラ122は、データが読み出しエラーを有するか否かを評価する。一実施形態において、ECCチェックが、メモリバンク150からのデータの読み出しにおいて、1つまたは複数の読み出しエラーが発生したと判断した場合に、コントローラ142は、リトライ及びフェールECCインジケータを送信してもよい。動作275において、エラーは示されず、次に、制御は動作285に渡り、コントローラ122は、データをホストに戻す。
【0018】
これら複数の動作と関連付けられたレイテンシのタイムラインは、
図4に示される。
図4を参照すると、第1回目のレイテンシ310は、コマンド処理に関連付けられ、第2回目のレイテンシ315は、メモリバンク150からのデータの読み出しにおける読み出しアクセスレイテンシに関連付けられる。第3のレイテンシ320は、メモリバンク150からコントローラ142へのデータ転送に関連付けられる。
図4に示されるように、メモリデバイス140から制御ハブ120へのデータ転送は、データがメモリバンク150からコントローラ142に転送されている間に開始する。つまり、この動作に関連付けられたレイテンシは、取り除かれる。第4のレイテンシ325は、ECCチェック処理325に関連付けられる。合計レイテンシは、
図4に示される複数のレイテンシの各々の合計に対応する。
【0019】
再び
図2を参照すると、動作275においてエラーが示された場合、制御は動作280に渡り、コントローラ122は、受信されたデータを破棄し、コントローラ142がデータをホストに戻す(動作285)前に、訂正されたデータを送信するまで待つ。
【0020】
これら複数の動作と関連付けられたレイテンシのタイムラインは、
図5に示される。
図5を参照すると、第1回目のレイテンシ310は、コマンド処理に関連付けられ、第2回目のレイテンシ315は、メモリバンク150からのデータの読み出しにおける読み出しアクセスレイテンシに関連付けられる。第3のレイテンシ320は、メモリバンク150からコントローラ142へのデータ転送に関連付けられる。
図5に示されるように、メモリデバイス140から制御ハブ120へのデータ転送は、データがメモリバンク150からコントローラ142に転送されている間に開始する。つまり、この動作に関連付けられたレイテンシは、取り除かれる。第4のレイテンシ325は、ECCチェック及び訂正処理325に関連付けられる。第5のレイテンシ335は、ECC訂正処理335に関連付けられ、第6のレイテンシ340は、メモリデバイス140からメモリバンク150、コントローラ142への、訂正されたデータの転送に関連付けられる。合計レイテンシは、
図5に示される複数のレイテンシの各々の合計に対応する。
【0021】
上述されたように、いくつかの実施形態において、電子デバイスは、コンピュータシステムとして具現化されてもよい。
図6は、本発明の実施形態に係るコンピューティングシステム600のブロック図を示す。コンピューティングシステム600は、相互接続ネットワーク(またはバス)604を介して通信を行う1つまたは複数の中央処理装置(CPU)602またはプロセッサを含んでもよい。プロセッサ602は、汎用プロセッサ、ネットワークプロセッサ(コンピュータネットワーク603を介して送受信されるデータを処理する)または複数の他のタイプのプロセッサ(縮小命令セットコンピュータ(RISC)プロセッサまたは複雑命令セットコンピュータ(CISC)を含む)を含んでもよい。さらに、複数のプロセッサ602は、単一のまたは複数のコア設計を有してもよい。複数のコア設計を有する複数のプロセッサ602は、異なる複数のタイプの複数のプロセッサコアを、同じ集積回路(IC)ダイに統合してもよい。また、複数のコア設計を有する複数のプロセッサ602は、複数の対称型または非対称型マルチプロセッサとして実装されてもよい。実施形態において、プロセッサ602のうち1つまたは複数は、
図1の複数のプロセッサ102と同じまたは同様であってもよい。例えば、プロセッサ602のうち1つまたは複数は、
図1−3を参照して説明された制御ユニット120を含んでもよい。また、
図3−5を参照して説明される複数の動作は、システム600の1つまたは複数のコンポーネントによって実行されてもよい。
【0022】
チップセット606は、相互接続ネットワーク604とさらに通信を行ってもよい。チップセット606は、メモリ制御ハブ(MCH)608を含んでもよい。MCH608は、(
図1のメモリ130と同じまたは同様たり得る)メモリ612と通信を行うメモリコントローラ610を含んでもよい。メモリ412は、複数の命令の複数のシーケンスを含むデータを格納してもよく、これは、CPU602またはコンピューティングシステム600に含まれる任意の他のデバイスによって実行され得る。本発明の一実施形態において、メモリ612は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、または他のタイプのストレージデバイスのような1つまたは複数の揮発性ストレージ(またはメモリ)デバイスを含んでもよい。ハードディスクのような不揮発性メモリも、利用可能である。追加の複数のデバイスは、複数のCPU及び/または複数のシステムメモリのような相互接続ネットワーク604を介して、通信を行ってもよい。
【0023】
MCH608は、ディスプレイデバイス616と通信を行うグラフィックインタフェース614をさらに含んでもよい。本発明の一実施形態において、グラフィックインタフェース614は、アクセラレーテッドグラフィクスポート(AGP)を介して、ディスプレイデバイス616と通信を行ってもよい。本発明の実施形態において、(フラットパネルディスプレイのような)ディスプレイ616は、例えば、ビデオメモリまたはシステムメモリのようなストレージデバイスに格納された画像のデジタル表現を、ディスプレイ616によって解読及び表示される複数の表示信号に変換する信号コンバータを通じて、グラフィックインタフェース614と通信を行ってもよい。ディスプレイデバイスによって生成される複数の表示信号は、ディスプレイ616によって解読され、次にその上に表示される前に、様々な複数の制御デバイスを通して渡されてもよい。
【0024】
ハブインタフェース618は、MCH608及び入出力制御ハブ(ICH)620を通信可能にしてもよい。ICH620は、コンピューティングシステム600と通信を行うI/Oデバイスへのインタフェースを提供してもよい。ICH620は、周辺機器相互接続(PCI)ブリッジ、ユニバーサルシリアルバス(USB)コントローラまたは複数の他のタイプの周辺ブリッジもしくはコントローラのような周辺ブリッジ(またはコントローラ)624を通じて、バス622と通信を行ってもよい。ブリッジ624は、CPU602と複数の周辺デバイスとの間にデータパスを提供してもよい。複数の他のタイプのトポロジが、利用可能である。また、複数のバスは、例えば、複数のブリッジまたはコントローラを通じて、ICH620と通信してもよい。さらに、本発明の複数の様々な実施形態において、ICH620と通信を行う他の複数の周辺機器は、統合ドライブエレクトロニクス(IDE)もしくはスモールコンピュータシステムインタフェース(SCSI)ハードドライブ、USBポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー(登録商標)ディスクドライブ、デジタル出力サポート(例えば、デジタルビデオインタフェース(DVI))、または複数の他のデバイスを含んでもよい。
【0025】
バス622は、オーディオデバイス626、1つまたは複数のディスクドライブ628及び(コンピュータネットワーク603と通信を行う)ネットワークインタフェースデバイス630と通信を行ってもよい。複数の他のデバイスは、バス622を介して通信を行ってもよい。また、本発明のいくつかの実施形態において、(ネットワークインタフェースデバイス630のような)複数の様々なコンポーネントは、MCH608と通信を行ってもよい。さらに、本明細書で説明されるプロセッサ602及び1つまたは複数の他のコンポーネントは、組み合わせられることにより、単一のチップを形成(例えば、システムオンチップ(SoC))を提供)してもよい。さらに、本発明の複数の他の実施形態において、グラフィクスアクセラレータ616は、MCH608内に含まれてもよい。
【0026】
さらに、コンピューティングシステム600は、揮発性及び/または不揮発性メモリ(またはストレージ)を含んでもよい。例えば、不揮発性メモリは、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的EPROM(EEPROM)、ディスクドライブ(例えば、628)、フロッピー(登録商標)ディスク、コンパクトディスクROM(CD−ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、光磁気ディスク、または電子データ(例えば、複数の命令を含む)を格納可能な複数の他のタイプの不揮発性機械可読メディアのうち1つまたは複数を含んでもよい。
【0027】
図7は、本発明の実施形態に係るコンピューティングシステム700のブロック図を示す。システム700は、1つまたは複数のプロセッサ702−1から702−N(概して、本明細書では「複数のプロセッサ702」または「プロセッサ702」と称される)を含んでもよい。複数のプロセッサ702は、相互接続ネットワークまたはバス704を介して通信を行ってもよい。各プロセッサは、複数の様々なコンポーネントを含んでもよく、それらのいくつかは、明確化のため、プロセッサ702−1のみを参照して説明される。従って、残るプロセッサ702−2から702−Nの各々は、プロセッサ702−1を参照して説明される同じまたは同様の複数のコンポーネントを含んでもよい。
【0028】
実施形態において、プロセッサ702−1は、1つまたは複数のプロセッサコア706−1から706−M(本明細書では「複数のコア706」、またはより一般的には「コア706」と称される)、共有キャッシュ708、ルータ710及び/またはプロセッサ制御ロジックもしくはユニット720を含んでもよい。プロセッサコア706は、単一の集積回路(IC)チップ上に実装されてもよい。さらに、チップは、1つまたは複数の共有及び/または専用のキャッシュ(例えばキャッシュ708)、複数のバスまたは複数の相互接続(例えばバスまたは相互接続ネットワーク712)、複数のメモリコントローラまたは複数の他のコンポーネントを含んでもよい。
【0029】
一実施形態において、ルータ710は、プロセッサ702−1及び/またはシステム700の複数の様々なコンポーネントの間で通信を行うために用いられてもよい。さらに、プロセッサ702−1は、1つより多くのルータ710を含んでもよい。さらに、多数のルータ710が通信を行うことにより、プロセッサ702−1内外の複数の様々なコンポーネント間におけるデータルーティングを可能にしてもよい。
【0030】
共有キャッシュ708は、コア706のようなプロセッサ702−1の1つまたは複数のコンポーネントによって用いられるデータ(例えば、複数の命令を含む)を格納してもよい。例えば、共有キャッシュ708は、プロセッサ702の複数のコンポーネントによるアクセスをより高速にするために、メモリ714に格納されたデータをローカルにキャッシュしてもよい。実施形態において、キャッシュ708は、中レベルキャッシュ(例えば、レベル2(L2)、レベル3(L3)、レベル4(L4)または他の複数のレベルのキャッシュ)、ラストレベルキャッシュ(LLC)及び/またはそれらの複数の組み合わせを含んでもよい。さらに、プロセッサ702−1の複数の様々なコンポーネントは、直接、バス(例えばバス712)及び/またはメモリコントローラもしくはハブを通じて、共有キャッシュ708と通信を行ってもよい。
図7に示されるように、いくつかの実施形態において、複数のコア706のうち1つまたは複数は、レベル1(L1)キャッシュ716−1(概して本明細書では「L1キャッシュ716」と称される)を含んでもよい。一実施形態において、制御ユニット720は、
図2のメモリコントローラ122を参照して上述された複数の動作を実行するロジックを含んでもよい。
【0031】
図8は、本発明の実施形態に係るコンピューティングシステムのプロセッサコア706及び複数の他のコンポーネントの一部のブロック図を示す。一実施形態において、
図8に示される複数の矢印は、コア706を通じた複数の命令のフローの方向を示す。1つまたは複数のプロセッサコア(例えばプロセッサコア706)は、
図7を参照して説明されたもののような単一の集積回路チップ(またはダイ)上に実装されてもよい。さらに、チップは、1つまたは複数の共有及び/または専用キャッシュ(例えば、
図7のキャッシュ708)、相互接続(例えば、
図7の相互接続704及び/または112)、制御ユニット、メモリコントローラまたは複数の他のコンポーネントを含んでもよい。
【0032】
図8に示されるように、プロセッサコア706は、フェッチユニット802を含むことにより、複数の命令(複数の条件付き分岐を有する複数の命令を含む)をコア706による実行のためにフェッチしてもよい。複数の命令は、メモリ714のような任意の複数のストレージデバイスからフェッチされてもよい。コア706は、デコードユニット804を含むことにより、フェッチされた命令をデコードしてもよい。例えば、デコードユニット804は、フェッチされた命令を複数のuop(複数のマイクロオペレーション)にデコードしてもよい。
【0033】
追加的に、コア706は、スケジューリングユニット806を含んでもよい。スケジューリングユニット806は、複数の命令がディスパッチ可能となるまで、例えば、デコードされた命令の全てのソース値が適用可能となるまで、複数のデコードされた命令(例えば、デコードユニット804から受信されたもの)の格納に関連付けられた複数の様々な動作を実行してもよい。一実施形態において、スケジューリングユニット806は、複数のデコードされた命令をスケジューリングし、及び/またはこれらを実行のために実行ユニット808に発し(またはディスパッチし)てもよい。実行ユニット808は、複数のディスパッチされた命令が(例えばデコードユニット804によって)デコードされ、(例えばスケジューリングユニット806によって)ディスパッチされた後、これらを実行してもよい。実施形態において、実行ユニット808は、1つより多くの実行ユニットを含んでもよい。実行ユニット808は、加算、減算、乗算及び/または除算のような複数の様々な演算オペレーションをさらに実行してもよく、1つまたは複数の論理ユニット(ALU)を含んでもよい。実施形態において、コプロセッサ(不図示)は、実行ユニット808と連携して、複数の様々な演算オペレーションを実行してもよい。
【0034】
さらに、実行ユニット808は、複数の命令をアウトオブオーダで実行してもよい。よって、一実施形態において、プロセッサコア706は、アウトオブオーダプロセッサコアであってもよい。コア706は、リタイアメントユニット810をさらに含んでもよい。リタイアメントユニット810は、実行された複数の命令を、これらがコミットされた後でリタイアしてもよい。実施形態において、実行された複数の命令のリタイアにより、プロセッサの状態が複数の命令の実行からコミットされる、複数の命令によって用いられた複数の物理レジスタが解放される等の結果がもたらされてもよい。
【0035】
コア706は、プロセッサコア706の複数のコンポーネントと(
図8を参照して説明されたコンポーネントのような)複数の他のコンポーネントとの間の通信を、1つまたは複数のバス(例えば、バス804及び/または812)を介して可能とするバスユニット814をさらに含んでもよい。コア706は、コア706の複数の様々なコンポーネントによってアクセスされるデータ(電力消費状態設定に関する複数の値など)を格納する1つまたは複数のレジスタ816をさらに含んでもよい。
【0036】
さらに、
図7は、制御ユニット720が相互接続812を介してコア706に連結されるものとして示すが、複数の様々な実施形態においては、制御ユニット720は、バス704等を介してコアに連結されるコア706の内部のような他の箇所に配置され得る。
【0037】
いくつかの実施形態において、本明細書で説明される複数のコンポーネントのうち1つまたは複数は、システムオンチップ(SoC)デバイスとして具現化されてもよい。
図9は、実施形態に係るSoCパッケージのブロック図を示す。
図9に示されるように、SoC902は、1つまたは複数の中央処理装置(CPU)コア920、1つまたは複数のグラフィクスプロセッサユニット(GPU)コア930、入力/出力(I/O)インタフェース940及びメモリコントローラ942を含む。SoCパッケージ902の複数の様々なコンポーネントは、本明細書において複数の他の図を参照して説明されるような相互接続またはバスに連結されてもよい。また、SoCパッケージ902は、本明細書において複数の他の図を参照して説明されるもののような、より多くのまたはより少ないコンポーネントを含んでもよい。さらに、SoCパッケージ902の各コンポーネントは、例えば、本明細書の複数の他の図を参照して説明されるような1つまたは複数の他のコンポーネントを含んでもよい。一実施形態において、SoCパッケージ902(及びその複数のコンポーネント)は、例えば、単一の半導体デバイスにパッケージ化される1つまたは複数の集積回路(IC)ダイ上に提供される。
【0038】
図9に示されるように、SoCパッケージ902は、メモリコントローラ942を介して、(本明細書において複数の他の図を参照して説明されるメモリと同様のまたは同じであり得る)メモリ960に連結される。実施形態において、メモリ960(またはその一部)は、SoCパッケージ902に一体化されてもよい。
【0039】
I/Oインタフェース940は、例えば、本明細書において複数の他の図を参照して説明されるもののような相互接続及び/またはバスを介して、1つまたは複数のI/Oデバイス970に連結されてもよい。I/Oデバイス970は、キーボード、マウス、タッチパッド、ディスプレイ、画像/ビデオキャプチャデバイス(カメラまたはカムコーダ/ビデオレコーダなど)、タッチスクリーン、スピーカ等のうち1つまたは複数を含んでもよい。
【0040】
図10は、本発明の実施形態に係るポイントツーポイント(PtP)構成で構成されるコンピューティングシステム1000を示す。詳細には、
図10は、複数のプロセッサ、メモリ及び複数の入力/出力デバイスが、多数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。
図2を参照して説明された複数の動作は、システム1000の1つまたは複数のコンポーネントによって実行されてもよい。
【0041】
図10に示されるように、システム1000は、いくつかのプロセッサを含んでもよく、これらは明確化のため、プロセッサ1002および1004の2つのみが示される。プロセッサ1002および1004は、各々、ローカルメモリコントローラハブ(MCH)1006及び1008を含むことにより、メモリ1010および1012との通信を可能としてもよい。いくつかの実施形態において、MCH1006および1008は、
図1のメモリコントローラ120及び/またはロジック125を含んでもよい。
【0042】
実施形態において、プロセッサ1002および1004は、
図7を参照して説明された複数のプロセッサ702のうちの1つであってもよい。プロセッサ1002および1004は、ポイントツーポイント(PtP)インタフェース1014を介して、PtPインタフェース回路1016および1018のそれぞれを用いてデータを交換してもよい。また、プロセッサ1002および1004は、個々のPtPインタフェース1022および1024を介して、ポイントツーポイントインタフェース回路1026、1028、1030および1032を用いて、チップセット1020と各々データを交換してもよい。チップセット1020は、高性能グラフィクスインタフェース1036を介して、例えば、PtPインタフェース回路1037を用いて、高性能グラフィクス回路1034とさらにデータを交換してもよい。
【0043】
図10に示されるように、
図1の複数のコア106及び/またはキャッシュ108のうち1つまたは複数は、プロセッサ902および904内に配置されてもよい。本発明の複数の他の実施形態は、しかしながら、
図9のシステム900内の他の複数の回路、複数の論理ユニットまたは複数のデバイスに存在してもよい。さらに、本発明の複数の他の実施形態は、
図9に示されるいくつかの回路、論理ユニットまたはデバイス全体に分散されてもよい。
【0044】
チップセット920は、PtPインタフェース回路941を用いてバス940と通信を行ってもよい。バス940は、バスブリッジ942及びI/Oデバイス943のような、それ自体と通信を行う1つまたは複数のデバイスを有してもよい。バス944を介して、バスブリッジ943は、複数の他のデバイス、例えば、キーボード/マウス945、通信デバイス946(モデム、ネットワークインタフェースデバイスまたはコンピュータネットワーク803と通信可能な他の通信デバイス)と、オーディオI/Oデバイス及び/またはデータストレージデバイス948と通信を行ってもよい。データストレージデバイス948(ハードディスクドライブまたはNANDフラッシュベースのソリッドステートドライブであってもよい)は、複数のプロセッサ902及び/または904によって実行可能なコード949を格納してもよい。
【0045】
以下の複数の例は、さらなる複数の実施形態に関する。
【0046】
例1は、プロセッサと、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するメモリ制御ロジックとを備える電子デバイスである。
【0047】
電子デバイスは、ホストデバイスからデータに対する要求を受信し、ホストデバイスからの要求に応答して、遠隔メモリデバイスからのデータに対する要求を生成し、ロジックをさらに備える。電子デバイスは、遠隔メモリデバイスから受信されたデータをローカルキャッシュに格納するロジックをさらに備える。
【0048】
電子デバイスは、遠隔メモリデバイスから取得されたデータがエラーなく取得されたことをエラー訂正コードインジケータが示すか否かを判断し、データがエラーなく取得されたという判断に応答して、データをホストデバイスに戻すロジックをさらに備える。電子デバイスは、遠隔メモリデバイスから取得されたデータが少なくとも1つのエラーを含むことをエラー訂正コードインジケータが示すか否かを判断し、データが少なくとも1つのエラーを含という判断に応答して、ローカルキャッシュメモリからデータを削除し、遠隔メモリデバイスからのデータに対する新たな要求を送信するロジックをさらに備える。
【0049】
例2は、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するロジックを備えるメモリコントローラである。
【0050】
メモリコントローラは、ホストデバイスからデータに対する要求を受信し、データが遠隔メモリデバイスに格納されたと判断し、ホストデバイスからの要求に応答して、遠隔メモリデバイスからのデータに対する要求を生成するロジックをさらに備える。
【0051】
メモリコントローラは、遠隔メモリデバイスから受信されたデータをローカルキャッシュに格納するロジックをさらに備える。メモリコントローラは、遠隔メモリデバイスから取得されたデータがエラーなく取得されたことをエラー訂正コードインジケータが示すか否かを判断し、データがエラーなしで取得されたという判断に応答して、データをホストデバイスに戻すロジックをさらに備える。
【0052】
メモリコントローラは、遠隔メモリデバイスから取得されたデータが少なくとも1つのエラーを含むことをエラー訂正コードインジケータが示すか否かを判断し、データが少なくとも1つのエラーを含むという判断に応答して、ローカルキャッシュメモリからデータを削除し、遠隔メモリデバイスからのデータに対する新たな要求を送信するロジックをさらに備える。
【0053】
例3は、1つまたは複数のメモリセルと、1つまたは複数のメモリセルに格納されたデータに対する要求を、要求元からデータバスを介して受信し、1つまたは複数のメモリセルからデータを取得し、データバスがアイドリング状態であるか否かを判断し、データバスがアイドリング状態であるという判断に応答して、装置からデータバス上の要求元にデータを送信し、データが送信を開始した後にエラー訂正コードアルゴリズムを開始し、データバスを介して要求元にエラー訂正コードインジケータを送信するメモリ制御ロジックとを有するメモリデバイスを備える装置である。
【0054】
装置は、エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、装置から要求元へのデータ送信を遅延時間だけ遅延させるメモリ制御ロジックを備えてもよい。装置は、エラー訂正コードアルゴリズムがデータにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを要求元に送信するメモリ制御ロジックを備えてもよい。
【0055】
装置は、データを訂正し、データバスを介して、訂正されたデータを要求元に送信するメモリ制御ロジックを備えてもよい。データバスがアイドリング状態ではないという判断に応答して、エラー訂正コードアルゴリズムは、装置からデータバス上の要求元にデータが送信される前に実行される。
【0056】
例4において、コントローラは、1つまたは複数のメモリセルに格納されたデータに対する要求を要求元から受信し、1つまたは複数のメモリセルからデータを取得し、データバスがアイドリング状態であるか否かを判断し、データバスがアイドリング状態であるという判断に応答して、データバスを介して、装置からデータバス上の要求元にデータを送信し、データが送信を開始した後にエラー訂正コードアルゴリズムを開始し、データバスを介してエラー訂正コードインジケータを要求元に送信するロジックを備える。
【0057】
コントローラは、エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、装置から要求元へのデータ送信を遅延時間だけ遅延させるメモリ制御ロジックを備えてもよい。コントローラは、エラー訂正コードアルゴリズムがデータにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを要求元に送信するメモリ制御ロジックを備えてもよい。
【0058】
コントローラは、データを訂正し、データバスを介して、訂正されたデータを要求元に送信するメモリ制御ロジックを備えてもよい。データバスがアイドリング状態ではないという判断に応答して、エラー訂正コードアルゴリズムは、装置からデータバス上の要求元にデータが送信される前に実行される。
【0059】
本発明の複数の様々な実施形態において、本明細書において、例えば
図1―9を参照して説明される複数の動作は、コンピュータが本明細書で説明される処理を実行するようにプログラムするために用いられるハードウェア(例えば、回路、ソフトウェア、ファームウェア、マイクロコードまたはそれらの複数の組み合わせであり、例えば、複数の命令(または複数のソフトウェア処理)を格納する有形の(例えば、非一時的)機械可読またはコンピュータ可読メディアを含むコンピュータプログラム製品として提供され得るもの)として実装されてもよい。また、用語「ロジック」は、例として、ソフトウェア、ハードウェアまたはソフトウェア及びハードウェアの複数の組み合わせを含んでもよい。機械可読メディアは、本明細書で説明されるもののようなストレージデバイスを含んでもよい。
【0060】
本明細書における「一実施形態」または「実施形態」という記載は、実施形態に関連して説明された特定の機能、構造または特性が、少なくとも実装に含まれてもよいことを意味する。本明細書の様々な複数の箇所における「一実施形態において」という表現の出現は、全て同じ実施形態を参照してもよく、しなくてもよい。
【0061】
また、説明および特許請求の範囲で、「連結」及び「接続」という用語は、それらの複数の活用形とともに用いられてもよい。本発明のいくつかの実施形態において、「接続」は、2つまたはそれより多くのエレメントが互いに直接物理的にまたは電気的に接触することを示すために用いられてもよい。「連結」は、2つまたはそれより多くのエレメントが、直接物理的にまたは電気的に接触することを意味してもよい。しかしながら、「連結」は、2つまたはそれより多くのエレメントが互いに直接は接触しないが、互いに連携または相互作用し得ることを意味してもよい。
【0062】
つまり、本発明の複数の実施形態は、複数の構造的な特徴及び/または複数の方法論的な動きに固有の記載で説明されているが、特許請求の範囲に係る主題は、説明された複数の具体的な特徴又は複数の動きに限定されないことを理解されたい。むしろ、複数の具体的な特徴及び複数の動きは、特許請求の範囲に係る主題を実施するための例示的な複数の形式として開示される。