JP6137582B2 - 電子デバイス、メモリコントローラ、装置 - Google Patents

電子デバイス、メモリコントローラ、装置 Download PDF

Info

Publication number
JP6137582B2
JP6137582B2 JP2016500400A JP2016500400A JP6137582B2 JP 6137582 B2 JP6137582 B2 JP 6137582B2 JP 2016500400 A JP2016500400 A JP 2016500400A JP 2016500400 A JP2016500400 A JP 2016500400A JP 6137582 B2 JP6137582 B2 JP 6137582B2
Authority
JP
Japan
Prior art keywords
data
error correction
correction code
logic
memory device
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.)
Active
Application number
JP2016500400A
Other languages
English (en)
Other versions
JP2016510927A (ja
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2016510927A publication Critical patent/JP2016510927A/ja
Application granted granted Critical
Publication of JP6137582B2 publication Critical patent/JP6137582B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • 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
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、概して、エレクトロニクスの分野に関する。より詳細には、本発明のいくつかの実施形態は、概して、メモリレイテンシ管理に関する。
いくつかのメモリシステムは、揮発性メモリとして具現化されることが多く、キャッシュメモリとして機能し得るローカルな高速アクセスメモリ、及び、不揮発性メモリ、例えば、相変化メモリ、NANDメモリ等、またはさらに、磁気もしくは光学メモリを備え得る1つまたは複数の遠隔メモリデバイスを用いて、実装され得る。
複数の遠隔メモリデバイスは、ローカルキャッシュメモリより高いレイテンシを有するため、システム性能に悪影響を及ぼす。従って、複数のレイテンシ改善技術は、有用たり得る。
詳細な説明は、添付の複数の図を参照しながら提供される。複数の図において、参照番号の最も左側の桁は、その参照番号が最初に登場する図を特定する。異なる複数の図に同じ複数の参照番号が用いられる場合、同様のまたは同一の複数の要素を示す。
本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための、装置の複数のコンポーネントの模式的なブロック図である。 本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すフローチャートである。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すタイムラインの模式図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すタイムラインの模式図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すタイムラインの模式図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。 本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。
いくつかのメモリシステムは、揮発性メモリとして具現化されることが多く、キャッシュメモリとして機能し得るローカルな高速アクセスメモリ、及び、不揮発性メモリ、例えば、ダイナミックランダムアクセスメモリ、またはさらに、磁気もしくは光学メモリを備え得る1つまたは複数の遠隔メモリデバイスを用いて、実装され得る。例として、複数の遠隔メモリデバイスは、1つまたは複数のダイレクトインラインメモリモジュール(DIMM)を備えてもよく、その各々は、1つまたは複数のメモリランクを備えてもよく、次いで、これらは、1つまたは複数のダイナミックランダムアクセスメモリ(DRAM)チップを備えてもよく、または不揮発性メモリ、例えば、相変化メモリ、NANDメモリ等を含んでもよい。いくつかの電子デバイス(例えば、スマートフォン、タブレットコンピュータ等)は、1つまたは複数のDRAMを備えるより簡易な複数の遠隔メモリシステムを備えてもよい。
複数の遠隔メモリデバイスは、複数の読み出しエラーを検出及び訂正するために、複数のエラー訂正コード(ECC)アルゴリズムを実行してもよい。例示的な複数のECCアルゴリズムは、BCHエラー訂正コード及び複数のリード−ソロモンアルゴリズムを含む。このような複数のECCアルゴリズムは、遠隔メモリデバイスによって実行される複数の読み出し動作に、追加のレイテンシを導入する。複数の様々な実施形態において、本明細書で説明される複数の技術は、遠隔メモリデバイスが、ECC訂正ロジックをホストへのデータ転送でパイプライン化することにより、読み出し動作中に得られたデータをECCアルゴリズムの完了前に戻すことを可能にすることによって、このようなレイテンシを低減する。データ要求を発したコントローラは、遠隔メモリデバイスからのECCインジケータを待ちつつ、遠隔メモリデバイスから受信されたデータをローカルメモリに格納するように構成されてもよい。遠隔メモリデバイスによって実行されたECCアルゴリズムが、データ中にエラーを検出しなかった場合、遠隔メモリデバイスは、データが良好であることを示すECCインジケータを転送し、データ要求を発したコントローラは、データを処理してもよい。一方、遠隔メモリデバイスによって実行されたECCアルゴリズムが、データ中に複数のエラーを検出した場合、遠隔メモリデバイスは、データに欠陥があることを示すECCインジケータを転送し、データ要求を発したコントローラは、データ処理に進む前に、訂正されたデータを受信するまで待つ。
本明細書で説明される複数の技術は、様々な複数のコンピューティングシステム(例えば、サーバ、デスクトップ、ノートブック、スマートフォン、タブレット、ポータブルゲームコンソール等を含む)で提供されてもよく、これらは、一般的にデュアルインラインメモリモジュール(DIMM)に組み込まれる複数のDRAMチップ及び不揮発性メモリ、例えば、相変化メモリまたはNANDメモリを備えるメモリシステムを含んでもよい。このような複数の実施形態において、各DRAMは、別個の更新制御ロジックを備えてもよい。代替的に、更新制御ロジックは、DIMMの複数のDRAMに対する複数の動作を制御するために、DIMMレベルで実装されてもよい。
以下の説明において、複数の様々な実施形態を十分に理解ならしめるために、多数の具体的な詳細が記載される。しかしながら、本発明の複数の様々な実施形態は、具体的な詳細がなくても実施され得る。他の複数の例において、周知の方法、処理、コンポーネント及び回路は、本発明の複数の特定の実施形態を曖昧にしないよう、詳細には説明されていない。さらに、本発明の複数の実施形態の様々な複数の態様は、集積半導体回路(「ハードウェア」)、1つまたは複数のプログラムにまとめられたコンピュータ可読命令(「ソフトウェア」)またはハードウェア及びソフトウェアのいくつかの組み合わせのような、様々な手段を用いて実行され得る。本開示の目的のため、「ロジック」という記載は、ハードウェア、ソフトウェアまたはそれらのいくつかの組み合わせのいずれかを意味するものとする。
図1は、本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための、装置の複数のコンポーネントの模式的なブロック図である。図1を参照すると、いくつかの実施形態において、中央処理装置(CPU)パッケージ100は、制御ハブ120に連結される1つまたは複数のCPU110と、ローカルメモリ130とを備えてもよい。制御ハブ120は、メモリコントローラ122と、メモリインタフェース124とを備える。
メモリインタフェース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の具体的構成は、重要ではない。
上述されたように、いくつかの実施形態において、メモリコントローラ122のロジックは、メモリデバイス140における複数の読み出し動作に関連付けられたメモリレイテンシを管理するために、メモリデバイスのコントローラ142のロジックと連携する。メモリコントローラ122及びコントローラ142によって実行される複数の動作は、図2を参照しながら説明される。図2を参照すると、動作210において、メモリコントローラ122は、ホストから、例えば、CPU110または制御ハブ120に連結された他のプロセッサ上で動作するアプリケーションからのデータ要求を受信する。動作215において、メモリコントローラ122は、アプリケーションによって要求されたデータに対するデータ要求を生成する。データ要求は、メモリインタフェース124及びバス160を介して、メモリデバイス140のコントローラ142に転送される。
動作220において、コントローラ142は、データ要求を受信し、動作225において、コントローラ142は、メモリバンク150からのデータ要求に関連付けられたデータを取得する。動作230において、コントローラ142は、バス160がアイドリングしているか否かを判断する。動作230において、データバス160がアイドリングしていない場合(例えば、データバス160が、データ送信のために用いられている場合)、制御は動作235に渡り、コントローラ142は、メモリバンク150から取得されたデータにおける複数の読み出しエラーを検出及び訂正するECCアルゴリズムを実行する。動作240において、メモリバンク150から取得されたデータは、バス160を介してメモリインタフェース124に送信される。
動作270において、メモリコントローラ122は、バス160を介してデータを受信する。動作275において、メモリコントローラ122は、データが読み出しエラーを有するか否かを評価する。データはECC検出及び訂正動作を既に受けているため、データはエラーを有しておらず、制御は動作285に渡り、データは、ホストに戻される。
これら複数の動作に関連付けられたレイテンシのタイムラインが、図3に示される。図3を参照すると、第1回目のレイテンシ310は、コマンド処理に関連付けられ、第2回目のレイテンシ315は、メモリバンク150からのデータ読み出しにおける読み出しアクセスレイテンシに関連付けられる。第3のレイテンシ320は、メモリバンク150からコントローラ142へのデータ転送に関連付けられる。第4のレイテンシ325は、ECCチェック及び訂正処理325に関連付けられる。第5のレイテンシは、メモリデバイス140から制御ハブ120へのデータ転送に関連付けられる。合計レイテンシは、図3に示される複数のレイテンシの各々の合計に対応する。
再び図2を参照すると、動作230においてデータバス160がアイドリングしていた場合、制御は動作245に渡り、コントローラ142は、要求されたデータに対するECCチェックの実行に必要な時間を推定する。いくつかの実施形態において、複数の読み出し動作は、ECC動作にかかる期間をコントローラが予め判断できるように、既知の固定サイズである。
動作250において、コントローラ142は、動作245において判断されたECCの遅延時間に対応する時間長だけ、データ送信の遅延を実行し、次に動作255において、コントローラ142は、データバス160を介し、メモリデバイス140からメモリインタフェース124への、要求されたデータのデータ送信を開始する。動作260において、コントローラ142は、データに対するECCチェックを実行し、動作265において、コントローラ142は、ECCインジケータを、データバスを介してメモリインタフェース124に送信する。
動作270において、メモリコントローラ122は、バス160を介して、データ及びECCインジケータを受信する。動作275において、メモリコントローラ122は、データが読み出しエラーを有するか否かを評価する。一実施形態において、ECCチェックが、メモリバンク150からのデータの読み出しにおいて、1つまたは複数の読み出しエラーが発生したと判断した場合に、コントローラ142は、リトライ及びフェールECCインジケータを送信してもよい。動作275において、エラーは示されず、次に、制御は動作285に渡り、コントローラ122は、データをホストに戻す。
これら複数の動作と関連付けられたレイテンシのタイムラインは、図4に示される。図4を参照すると、第1回目のレイテンシ310は、コマンド処理に関連付けられ、第2回目のレイテンシ315は、メモリバンク150からのデータの読み出しにおける読み出しアクセスレイテンシに関連付けられる。第3のレイテンシ320は、メモリバンク150からコントローラ142へのデータ転送に関連付けられる。図4に示されるように、メモリデバイス140から制御ハブ120へのデータ転送は、データがメモリバンク150からコントローラ142に転送されている間に開始する。つまり、この動作に関連付けられたレイテンシは、取り除かれる。第4のレイテンシ325は、ECCチェック処理325に関連付けられる。合計レイテンシは、図4に示される複数のレイテンシの各々の合計に対応する。
再び図2を参照すると、動作275においてエラーが示された場合、制御は動作280に渡り、コントローラ122は、受信されたデータを破棄し、コントローラ142がデータをホストに戻す(動作285)前に、訂正されたデータを送信するまで待つ。
これら複数の動作と関連付けられたレイテンシのタイムラインは、図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に示される複数のレイテンシの各々の合計に対応する。
上述されたように、いくつかの実施形態において、電子デバイスは、コンピュータシステムとして具現化されてもよい。図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つまたは複数のコンポーネントによって実行されてもよい。
チップセット606は、相互接続ネットワーク604とさらに通信を行ってもよい。チップセット606は、メモリ制御ハブ(MCH)608を含んでもよい。MCH608は、(図1のメモリ130と同じまたは同様たり得る)メモリ612と通信を行うメモリコントローラ610を含んでもよい。メモリ412は、複数の命令の複数のシーケンスを含むデータを格納してもよく、これは、CPU602またはコンピューティングシステム600に含まれる任意の他のデバイスによって実行され得る。本発明の一実施形態において、メモリ612は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、または他のタイプのストレージデバイスのような1つまたは複数の揮発性ストレージ(またはメモリ)デバイスを含んでもよい。ハードディスクのような不揮発性メモリも、利用可能である。追加の複数のデバイスは、複数のCPU及び/または複数のシステムメモリのような相互接続ネットワーク604を介して、通信を行ってもよい。
MCH608は、ディスプレイデバイス616と通信を行うグラフィックインタフェース614をさらに含んでもよい。本発明の一実施形態において、グラフィックインタフェース614は、アクセラレーテッドグラフィクスポート(AGP)を介して、ディスプレイデバイス616と通信を行ってもよい。本発明の実施形態において、(フラットパネルディスプレイのような)ディスプレイ616は、例えば、ビデオメモリまたはシステムメモリのようなストレージデバイスに格納された画像のデジタル表現を、ディスプレイ616によって解読及び表示される複数の表示信号に変換する信号コンバータを通じて、グラフィックインタフェース614と通信を行ってもよい。ディスプレイデバイスによって生成される複数の表示信号は、ディスプレイ616によって解読され、次にその上に表示される前に、様々な複数の制御デバイスを通して渡されてもよい。
ハブインタフェース618は、MCH608及び入出力制御ハブ(ICH)620を通信可能にしてもよい。ICH620は、コンピューティングシステム600と通信を行うI/Oデバイスへのインタフェースを提供してもよい。ICH620は、周辺機器相互接続(PCI)ブリッジ、ユニバーサルシリアルバス(USB)コントローラまたは複数の他のタイプの周辺ブリッジもしくはコントローラのような周辺ブリッジ(またはコントローラ)624を通じて、バス622と通信を行ってもよい。ブリッジ624は、CPU602と複数の周辺デバイスとの間にデータパスを提供してもよい。複数の他のタイプのトポロジが、利用可能である。また、複数のバスは、例えば、複数のブリッジまたはコントローラを通じて、ICH620と通信してもよい。さらに、本発明の複数の様々な実施形態において、ICH620と通信を行う他の複数の周辺機器は、統合ドライブエレクトロニクス(IDE)もしくはスモールコンピュータシステムインタフェース(SCSI)ハードドライブ、USBポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー(登録商標)ディスクドライブ、デジタル出力サポート(例えば、デジタルビデオインタフェース(DVI))、または複数の他のデバイスを含んでもよい。
バス622は、オーディオデバイス626、1つまたは複数のディスクドライブ628及び(コンピュータネットワーク603と通信を行う)ネットワークインタフェースデバイス630と通信を行ってもよい。複数の他のデバイスは、バス622を介して通信を行ってもよい。また、本発明のいくつかの実施形態において、(ネットワークインタフェースデバイス630のような)複数の様々なコンポーネントは、MCH608と通信を行ってもよい。さらに、本明細書で説明されるプロセッサ602及び1つまたは複数の他のコンポーネントは、組み合わせられることにより、単一のチップを形成(例えば、システムオンチップ(SoC))を提供)してもよい。さらに、本発明の複数の他の実施形態において、グラフィクスアクセラレータ616は、MCH608内に含まれてもよい。
さらに、コンピューティングシステム600は、揮発性及び/または不揮発性メモリ(またはストレージ)を含んでもよい。例えば、不揮発性メモリは、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的EPROM(EEPROM)、ディスクドライブ(例えば、628)、フロッピー(登録商標)ディスク、コンパクトディスクROM(CD−ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、光磁気ディスク、または電子データ(例えば、複数の命令を含む)を格納可能な複数の他のタイプの不揮発性機械可読メディアのうち1つまたは複数を含んでもよい。
図7は、本発明の実施形態に係るコンピューティングシステム700のブロック図を示す。システム700は、1つまたは複数のプロセッサ702−1から702−N(概して、本明細書では「複数のプロセッサ702」または「プロセッサ702」と称される)を含んでもよい。複数のプロセッサ702は、相互接続ネットワークまたはバス704を介して通信を行ってもよい。各プロセッサは、複数の様々なコンポーネントを含んでもよく、それらのいくつかは、明確化のため、プロセッサ702−1のみを参照して説明される。従って、残るプロセッサ702−2から702−Nの各々は、プロセッサ702−1を参照して説明される同じまたは同様の複数のコンポーネントを含んでもよい。
実施形態において、プロセッサ702−1は、1つまたは複数のプロセッサコア706−1から706−M(本明細書では「複数のコア706」、またはより一般的には「コア706」と称される)、共有キャッシュ708、ルータ710及び/またはプロセッサ制御ロジックもしくはユニット720を含んでもよい。プロセッサコア706は、単一の集積回路(IC)チップ上に実装されてもよい。さらに、チップは、1つまたは複数の共有及び/または専用のキャッシュ(例えばキャッシュ708)、複数のバスまたは複数の相互接続(例えばバスまたは相互接続ネットワーク712)、複数のメモリコントローラまたは複数の他のコンポーネントを含んでもよい。
一実施形態において、ルータ710は、プロセッサ702−1及び/またはシステム700の複数の様々なコンポーネントの間で通信を行うために用いられてもよい。さらに、プロセッサ702−1は、1つより多くのルータ710を含んでもよい。さらに、多数のルータ710が通信を行うことにより、プロセッサ702−1内外の複数の様々なコンポーネント間におけるデータルーティングを可能にしてもよい。
共有キャッシュ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を参照して上述された複数の動作を実行するロジックを含んでもよい。
図8は、本発明の実施形態に係るコンピューティングシステムのプロセッサコア706及び複数の他のコンポーネントの一部のブロック図を示す。一実施形態において、図8に示される複数の矢印は、コア706を通じた複数の命令のフローの方向を示す。1つまたは複数のプロセッサコア(例えばプロセッサコア706)は、図7を参照して説明されたもののような単一の集積回路チップ(またはダイ)上に実装されてもよい。さらに、チップは、1つまたは複数の共有及び/または専用キャッシュ(例えば、図7のキャッシュ708)、相互接続(例えば、図7の相互接続704及び/または112)、制御ユニット、メモリコントローラまたは複数の他のコンポーネントを含んでもよい。
図8に示されるように、プロセッサコア706は、フェッチユニット802を含むことにより、複数の命令(複数の条件付き分岐を有する複数の命令を含む)をコア706による実行のためにフェッチしてもよい。複数の命令は、メモリ714のような任意の複数のストレージデバイスからフェッチされてもよい。コア706は、デコードユニット804を含むことにより、フェッチされた命令をデコードしてもよい。例えば、デコードユニット804は、フェッチされた命令を複数のuop(複数のマイクロオペレーション)にデコードしてもよい。
追加的に、コア706は、スケジューリングユニット806を含んでもよい。スケジューリングユニット806は、複数の命令がディスパッチ可能となるまで、例えば、デコードされた命令の全てのソース値が適用可能となるまで、複数のデコードされた命令(例えば、デコードユニット804から受信されたもの)の格納に関連付けられた複数の様々な動作を実行してもよい。一実施形態において、スケジューリングユニット806は、複数のデコードされた命令をスケジューリングし、及び/またはこれらを実行のために実行ユニット808に発し(またはディスパッチし)てもよい。実行ユニット808は、複数のディスパッチされた命令が(例えばデコードユニット804によって)デコードされ、(例えばスケジューリングユニット806によって)ディスパッチされた後、これらを実行してもよい。実施形態において、実行ユニット808は、1つより多くの実行ユニットを含んでもよい。実行ユニット808は、加算、減算、乗算及び/または除算のような複数の様々な演算オペレーションをさらに実行してもよく、1つまたは複数の論理ユニット(ALU)を含んでもよい。実施形態において、コプロセッサ(不図示)は、実行ユニット808と連携して、複数の様々な演算オペレーションを実行してもよい。
さらに、実行ユニット808は、複数の命令をアウトオブオーダで実行してもよい。よって、一実施形態において、プロセッサコア706は、アウトオブオーダプロセッサコアであってもよい。コア706は、リタイアメントユニット810をさらに含んでもよい。リタイアメントユニット810は、実行された複数の命令を、これらがコミットされた後でリタイアしてもよい。実施形態において、実行された複数の命令のリタイアにより、プロセッサの状態が複数の命令の実行からコミットされる、複数の命令によって用いられた複数の物理レジスタが解放される等の結果がもたらされてもよい。
コア706は、プロセッサコア706の複数のコンポーネントと(図8を参照して説明されたコンポーネントのような)複数の他のコンポーネントとの間の通信を、1つまたは複数のバス(例えば、バス804及び/または812)を介して可能とするバスユニット814をさらに含んでもよい。コア706は、コア706の複数の様々なコンポーネントによってアクセスされるデータ(電力消費状態設定に関する複数の値など)を格納する1つまたは複数のレジスタ816をさらに含んでもよい。
さらに、図7は、制御ユニット720が相互接続812を介してコア706に連結されるものとして示すが、複数の様々な実施形態においては、制御ユニット720は、バス704等を介してコアに連結されるコア706の内部のような他の箇所に配置され得る。
いくつかの実施形態において、本明細書で説明される複数のコンポーネントのうち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)ダイ上に提供される。
図9に示されるように、SoCパッケージ902は、メモリコントローラ942を介して、(本明細書において複数の他の図を参照して説明されるメモリと同様のまたは同じであり得る)メモリ960に連結される。実施形態において、メモリ960(またはその一部)は、SoCパッケージ902に一体化されてもよい。
I/Oインタフェース940は、例えば、本明細書において複数の他の図を参照して説明されるもののような相互接続及び/またはバスを介して、1つまたは複数のI/Oデバイス970に連結されてもよい。I/Oデバイス970は、キーボード、マウス、タッチパッド、ディスプレイ、画像/ビデオキャプチャデバイス(カメラまたはカムコーダ/ビデオレコーダなど)、タッチスクリーン、スピーカ等のうち1つまたは複数を含んでもよい。
図10は、本発明の実施形態に係るポイントツーポイント(PtP)構成で構成されるコンピューティングシステム1000を示す。詳細には、図10は、複数のプロセッサ、メモリ及び複数の入力/出力デバイスが、多数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。図2を参照して説明された複数の動作は、システム1000の1つまたは複数のコンポーネントによって実行されてもよい。
図10に示されるように、システム1000は、いくつかのプロセッサを含んでもよく、これらは明確化のため、プロセッサ1002および1004の2つのみが示される。プロセッサ1002および1004は、各々、ローカルメモリコントローラハブ(MCH)1006及び1008を含むことにより、メモリ1010および1012との通信を可能としてもよい。いくつかの実施形態において、MCH1006および1008は、図1のメモリコントローラ120及び/またはロジック125を含んでもよい。
実施形態において、プロセッサ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とさらにデータを交換してもよい。
図10に示されるように、図1の複数のコア106及び/またはキャッシュ108のうち1つまたは複数は、プロセッサ902および904内に配置されてもよい。本発明の複数の他の実施形態は、しかしながら、図9のシステム900内の他の複数の回路、複数の論理ユニットまたは複数のデバイスに存在してもよい。さらに、本発明の複数の他の実施形態は、図9に示されるいくつかの回路、論理ユニットまたはデバイス全体に分散されてもよい。
チップセット920は、PtPインタフェース回路941を用いてバス940と通信を行ってもよい。バス940は、バスブリッジ942及びI/Oデバイス943のような、それ自体と通信を行う1つまたは複数のデバイスを有してもよい。バス944を介して、バスブリッジ943は、複数の他のデバイス、例えば、キーボード/マウス945、通信デバイス946(モデム、ネットワークインタフェースデバイスまたはコンピュータネットワーク803と通信可能な他の通信デバイス)と、オーディオI/Oデバイス及び/またはデータストレージデバイス948と通信を行ってもよい。データストレージデバイス948(ハードディスクドライブまたはNANDフラッシュベースのソリッドステートドライブであってもよい)は、複数のプロセッサ902及び/または904によって実行可能なコード949を格納してもよい。
以下の複数の例は、さらなる複数の実施形態に関する。
例1は、プロセッサと、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するメモリ制御ロジックとを備える電子デバイスである。
電子デバイスは、ホストデバイスからデータに対する要求を受信し、ホストデバイスからの要求に応答して、遠隔メモリデバイスからのデータに対する要求を生成し、ロジックをさらに備える。電子デバイスは、遠隔メモリデバイスから受信されたデータをローカルキャッシュに格納するロジックをさらに備える。
電子デバイスは、遠隔メモリデバイスから取得されたデータがエラーなく取得されたことをエラー訂正コードインジケータが示すか否かを判断し、データがエラーなく取得されたという判断に応答して、データをホストデバイスに戻すロジックをさらに備える。電子デバイスは、遠隔メモリデバイスから取得されたデータが少なくとも1つのエラーを含むことをエラー訂正コードインジケータが示すか否かを判断し、データが少なくとも1つのエラーを含という判断に応答して、ローカルキャッシュメモリからデータを削除し、遠隔メモリデバイスからのデータに対する新たな要求を送信するロジックをさらに備える。
例2は、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するロジックを備えるメモリコントローラである。
メモリコントローラは、ホストデバイスからデータに対する要求を受信し、データが遠隔メモリデバイスに格納されたと判断し、ホストデバイスからの要求に応答して、遠隔メモリデバイスからのデータに対する要求を生成するロジックをさらに備える。
メモリコントローラは、遠隔メモリデバイスから受信されたデータをローカルキャッシュに格納するロジックをさらに備える。メモリコントローラは、遠隔メモリデバイスから取得されたデータがエラーなく取得されたことをエラー訂正コードインジケータが示すか否かを判断し、データがエラーなしで取得されたという判断に応答して、データをホストデバイスに戻すロジックをさらに備える。
メモリコントローラは、遠隔メモリデバイスから取得されたデータが少なくとも1つのエラーを含むことをエラー訂正コードインジケータが示すか否かを判断し、データが少なくとも1つのエラーを含むという判断に応答して、ローカルキャッシュメモリからデータを削除し、遠隔メモリデバイスからのデータに対する新たな要求を送信するロジックをさらに備える。
例3は、1つまたは複数のメモリセルと、1つまたは複数のメモリセルに格納されたデータに対する要求を、要求元からデータバスを介して受信し、1つまたは複数のメモリセルからデータを取得し、データバスがアイドリング状態であるか否かを判断し、データバスがアイドリング状態であるという判断に応答して、装置からデータバス上の要求元にデータを送信し、データが送信を開始した後にエラー訂正コードアルゴリズムを開始し、データバスを介して要求元にエラー訂正コードインジケータを送信するメモリ制御ロジックとを有するメモリデバイスを備える装置である。
装置は、エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、装置から要求元へのデータ送信を遅延時間だけ遅延させるメモリ制御ロジックを備えてもよい。装置は、エラー訂正コードアルゴリズムがデータにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを要求元に送信するメモリ制御ロジックを備えてもよい。
装置は、データを訂正し、データバスを介して、訂正されたデータを要求元に送信するメモリ制御ロジックを備えてもよい。データバスがアイドリング状態ではないという判断に応答して、エラー訂正コードアルゴリズムは、装置からデータバス上の要求元にデータが送信される前に実行される。
例4において、コントローラは、1つまたは複数のメモリセルに格納されたデータに対する要求を要求元から受信し、1つまたは複数のメモリセルからデータを取得し、データバスがアイドリング状態であるか否かを判断し、データバスがアイドリング状態であるという判断に応答して、データバスを介して、装置からデータバス上の要求元にデータを送信し、データが送信を開始した後にエラー訂正コードアルゴリズムを開始し、データバスを介してエラー訂正コードインジケータを要求元に送信するロジックを備える。
コントローラは、エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、装置から要求元へのデータ送信を遅延時間だけ遅延させるメモリ制御ロジックを備えてもよい。コントローラは、エラー訂正コードアルゴリズムがデータにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを要求元に送信するメモリ制御ロジックを備えてもよい。
コントローラは、データを訂正し、データバスを介して、訂正されたデータを要求元に送信するメモリ制御ロジックを備えてもよい。データバスがアイドリング状態ではないという判断に応答して、エラー訂正コードアルゴリズムは、装置からデータバス上の要求元にデータが送信される前に実行される。
本発明の複数の様々な実施形態において、本明細書において、例えば図1―9を参照して説明される複数の動作は、コンピュータが本明細書で説明される処理を実行するようにプログラムするために用いられるハードウェア(例えば、回路、ソフトウェア、ファームウェア、マイクロコードまたはそれらの複数の組み合わせであり、例えば、複数の命令(または複数のソフトウェア処理)を格納する有形の(例えば、非一時的)機械可読またはコンピュータ可読メディアを含むコンピュータプログラム製品として提供され得るもの)として実装されてもよい。また、用語「ロジック」は、例として、ソフトウェア、ハードウェアまたはソフトウェア及びハードウェアの複数の組み合わせを含んでもよい。機械可読メディアは、本明細書で説明されるもののようなストレージデバイスを含んでもよい。
本明細書における「一実施形態」または「実施形態」という記載は、実施形態に関連して説明された特定の機能、構造または特性が、少なくとも実装に含まれてもよいことを意味する。本明細書の様々な複数の箇所における「一実施形態において」という表現の出現は、全て同じ実施形態を参照してもよく、しなくてもよい。
また、説明および特許請求の範囲で、「連結」及び「接続」という用語は、それらの複数の活用形とともに用いられてもよい。本発明のいくつかの実施形態において、「接続」は、2つまたはそれより多くのエレメントが互いに直接物理的にまたは電気的に接触することを示すために用いられてもよい。「連結」は、2つまたはそれより多くのエレメントが、直接物理的にまたは電気的に接触することを意味してもよい。しかしながら、「連結」は、2つまたはそれより多くのエレメントが互いに直接は接触しないが、互いに連携または相互作用し得ることを意味してもよい。
つまり、本発明の複数の実施形態は、複数の構造的な特徴及び/または複数の方法論的な動きに固有の記載で説明されているが、特許請求の範囲に係る主題は、説明された複数の具体的な特徴又は複数の動きに限定されないことを理解されたい。むしろ、複数の具体的な特徴及び複数の動きは、特許請求の範囲に係る主題を実施するための例示的な複数の形式として開示される。

Claims (18)

  1. プロセッサと、
    遠隔メモリデバイスからデータバスを介してデータを受信し、
    前記データをローカルキャッシュメモリに格納し、
    前記データに関連付けられたエラー訂正コードインジケータを受信し、
    前記エラー訂正コードインジケータに応答してデータ管理ポリシを実行する、
    メモリ制御ロジックと、
    を備え、
    前記メモリ制御ロジックは、
    前記データバスがアイドリング状態ではない場合には、前記データが前記遠隔メモリデバイスから送信される前に前記遠隔メモリデバイスによって前記データに対してエラー訂正コードアルゴリズムを実行した結果である前記エラー訂正コードインジケータを、前記遠隔メモリデバイスから受信し、
    前記データバスがアイドリング状態である場合には、前記データが前記遠隔メモリデバイスから送信された後に前記遠隔メモリデバイスにより前記データに対してエラー訂正コードアルゴリズムを実行した結果である前記エラー訂正コードインジケータを、前記遠隔メモリデバイスから受信する、電子デバイス。
  2. 前記データに対する要求をホストデバイスから受信し、
    前記ホストデバイスからの前記要求に応答して、前記遠隔メモリデバイスからの前記データに対する要求を生成する、
    ロジックをさらに備える、請求項1に記載の電子デバイス。
  3. 前記遠隔メモリデバイスから受信された前記データをローカルキャッシュに格納するロジックをさらに備える、請求項2に記載の電子デバイス。
  4. 前記遠隔メモリデバイスから取得された前記データがエラーなく取得されたことを前記エラー訂正コードインジケータが示すか否かを判断し、
    前記データがエラーなく取得されたという判断に応答して、前記データを前記ホストデバイスに戻す、
    ロジックをさらに備える、請求項2または3に記載の電子デバイス。
  5. 前記遠隔メモリデバイスから取得された前記データが少なくとも1つのエラーを含むことを前記エラー訂正コードインジケータが示すか否かを判断し、
    前記データが少なくとも1つのエラーを含むという判断に応答して、前記ローカルキャッシュメモリから前記データを削除し、
    前記遠隔メモリデバイスからの前記データに対する新たな要求を送信する、
    ロジックをさらに備える、請求項2または3に記載の電子デバイス。
  6. 遠隔メモリデバイスからデータバスを介してデータを受信し、
    前記データをローカルキャッシュメモリに格納し、
    前記データに関連付けられたエラー訂正コードインジケータを受信し、
    前記エラー訂正コードインジケータに応答して、データ管理ポリシを実行する、
    ロジックを備え、
    前記ロジックは、
    前記データバスがアイドリング状態ではない場合には、前記データが前記遠隔メモリデバイスから送信される前に前記遠隔メモリデバイスによって前記データに対してエラー訂正コードアルゴリズムを実行した結果である前記エラー訂正コードインジケータを、前記遠隔メモリデバイスから受信し、
    前記データバスがアイドリング状態である場合には、前記データが前記遠隔メモリデバイスから送信された後に前記遠隔メモリデバイスにより前記データに対してエラー訂正コードアルゴリズムを実行した結果である前記エラー訂正コードインジケータを、前記遠隔メモリデバイスから受信する、メモリコントローラ。
  7. データに対する要求をホストデバイスから受信し、
    前記データが前記遠隔メモリデバイスに格納されていることを判断し、
    前記ホストデバイスからの前記要求に応答して、前記遠隔メモリデバイスからの前記データに対する要求を生成する、
    ロジックをさらに備える、請求項6に記載のメモリコントローラ。
  8. 前記遠隔メモリデバイスから受信された前記データをローカルキャッシュに格納する、
    ロジックをさらに備える、請求項7に記載のメモリコントローラ。
  9. 前記遠隔メモリデバイスから取得された前記データがエラーなく取得されたことを前記エラー訂正コードインジケータが示すか否かを判断し、
    前記データがエラーなく取得されたという判断に応答して、前記データを前記ホストデバイスに戻す、
    ロジックをさらに備える、請求項7または8に記載のメモリコントローラ。
  10. 前記遠隔メモリデバイスから取得された前記データが少なくとも1つのエラーを含むことを前記エラー訂正コードインジケータが示すか否かを判断し、
    前記データが少なくとも1つのエラーを含むという判断に応答して、前記ローカルキャッシュメモリから前記データを削除し、
    前記遠隔メモリデバイスからの前記データに対する新たな要求を送信する、
    ロジックをさらに備える、請求項7または8に記載のメモリコントローラ。
  11. 装置であって、
    1つまたは複数のメモリセルを有するメモリデバイスと、
    前記1つまたは複数のメモリセルに格納されたデータに対する要求を、データバスを介して要求元から受信し、
    前記1つまたは複数のメモリセルから前記データを取得し、
    前記データバスがアイドリング状態であるか否かを判断し、前記データバスがアイドリング状態であるという判断に応答して、前記装置から前記データバス上の前記要求元に前記データを送信し、
    前記データが送信を開始した後で、エラー訂正コードアルゴリズムを開始し、
    前記データバスを介して、エラー訂正コードインジケータを前記要求元に送信する、
    メモリ制御ロジックと、
    を備え、
    前記データバスがアイドリング状態ではないという判断に応答して、前記エラー訂正コードアルゴリズムは、前記装置から前記データバス上の前記要求元に前記データが送信される前に実行される、装置。
  12. 前記メモリ制御ロジックは、
    エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、
    前記装置から前記要求元へのデータ送信を、前記遅延時間だけ遅延させる、
    ロジックをさらに備える、請求項11に記載の装置。
  13. 前記メモリ制御ロジックは、
    前記エラー訂正コードアルゴリズムが前記データにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを前記要求元に送信する、
    ロジックを備える、請求項11または12に記載の装置。
  14. 前記メモリ制御ロジックは、
    前記データを訂正し、
    前記データバスを介して、訂正されたデータを前記要求元に送信する、
    ロジックを備える、請求項13に記載の装置。
  15. 1つまたは複数のメモリセルに格納されたデータに対する要求を、データバスを介して要求元から受信し、
    前記1つまたは複数のメモリセルから前記データを取得し、
    前記データバスがアイドリング状態であるか否かを判断し、前記データバスがアイドリング状態であるという判断に応答して、装置から前記データバス上の前記要求元に前記データを送信し、前記データが送信を開始した後に、エラー訂正コードアルゴリズムを開始し、
    前記データバスを介して、前記要求元にエラー訂正コードインジケータを送信する、
    ロジックを備え、
    前記データバスがアイドリング状態ではないという判断に応答して、前記エラー訂正コードアルゴリズムは、前記装置から前記データバス上の前記要求元に前記データが送信される前に実行される、コントローラ。
  16. エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、
    前記装置から前記要求元へのデータ送信を、前記遅延時間だけ遅延させる、
    ロジックをさらに備える、請求項15に記載のコントローラ。
  17. 前記エラー訂正コードアルゴリズムが前記データにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを前記要求元に送信するロジックをさらに備える、請求項15または16に記載のコントローラ。
  18. 前記データを訂正し、
    前記データバスを介して、訂正されたデータを前記要求元に送信する、
    ロジックをさらに備える、請求項17に記載のコントローラ。
JP2016500400A 2013-03-13 2014-02-26 電子デバイス、メモリコントローラ、装置 Active JP6137582B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
MYPI2013000863A MY180992A (en) 2013-03-13 2013-03-13 Memory latency management
MYPI2013000863 2013-03-13
PCT/US2014/018513 WO2014163880A1 (en) 2013-03-13 2014-02-26 Memory latency management

Publications (2)

Publication Number Publication Date
JP2016510927A JP2016510927A (ja) 2016-04-11
JP6137582B2 true JP6137582B2 (ja) 2017-05-31

Family

ID=51658789

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016500400A Active JP6137582B2 (ja) 2013-03-13 2014-02-26 電子デバイス、メモリコントローラ、装置

Country Status (9)

Country Link
US (2) US9904592B2 (ja)
EP (1) EP2972916B1 (ja)
JP (1) JP6137582B2 (ja)
KR (1) KR101669784B1 (ja)
CN (1) CN105210046B (ja)
BR (1) BR112015019392B1 (ja)
MY (1) MY180992A (ja)
RU (1) RU2618938C2 (ja)
WO (1) WO2014163880A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2752956A4 (en) * 2011-09-02 2015-09-30 Nec Corp CELL CONTROL SYSTEM, CELL CONTROLLER, CELL CONTROL METHOD AND RECORDING MEDIUM
MY180992A (en) 2013-03-13 2020-12-15 Intel Corp Memory latency management
US10055164B2 (en) * 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
US10282251B2 (en) * 2016-09-07 2019-05-07 Sandisk Technologies Llc System and method for protecting firmware integrity in a multi-processor non-volatile memory system
US10069597B2 (en) * 2016-09-07 2018-09-04 Western Digital Technologies, Inc. Aggregated metadata transfer at a data storage device
US10127184B2 (en) 2016-09-27 2018-11-13 Intel Corporation Low overheard high throughput solution for point-to-point link
CN108363544B (zh) * 2017-01-26 2021-05-07 建兴储存科技(广州)有限公司 固态储存装置及其读取重试方法
US10621091B2 (en) 2018-05-04 2020-04-14 Micron Technology, Inc. Apparatuses and methods to perform continuous read operations
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6287965A (ja) * 1985-10-14 1987-04-22 Fuji Photo Film Co Ltd 感光材料現像装置
JPH0341537A (ja) 1989-07-10 1991-02-22 Fujitsu Ltd 記憶装置のリトライリード制御方式
JPH0425954A (ja) 1990-05-22 1992-01-29 Nec Corp メモリ装置のエラー処理方式
JPH07146825A (ja) * 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
JP3534917B2 (ja) * 1995-11-08 2004-06-07 株式会社日立製作所 メモリアクセス制御方法
JP4105819B2 (ja) 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US7287649B2 (en) * 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US6683817B2 (en) 2002-02-21 2004-01-27 Qualcomm, Incorporated Direct memory swapping between NAND flash and SRAM with error correction coding
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
US7958430B1 (en) * 2005-06-20 2011-06-07 Cypress Semiconductor Corporation Flash memory device and method
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8892963B2 (en) 2005-11-10 2014-11-18 Advanced Micro Devices, Inc. Error detection in high-speed asymmetric interfaces utilizing dedicated interface lines
US7617437B2 (en) * 2006-02-21 2009-11-10 Freescale Semiconductor, Inc. Error correction device and method thereof
CN101401096A (zh) * 2006-03-16 2009-04-01 晟碟以色列有限公司 数据存储管理方法和设备
US8171251B2 (en) * 2006-03-16 2012-05-01 Sandisk Il Ltd. Data storage management method and device
US7636813B2 (en) * 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
US7644344B2 (en) 2007-05-15 2010-01-05 Intel Corporation Latency by offsetting cyclic redundancy code lanes from data lanes
US8239732B2 (en) 2007-10-30 2012-08-07 Spansion Llc Error correction coding in flash memory devices
CN201229544Y (zh) * 2008-07-03 2009-04-29 鸿富锦精密工业(深圳)有限公司 具改良型散热结构的计算机
US20100162037A1 (en) 2008-12-22 2010-06-24 International Business Machines Corporation Memory System having Spare Memory Devices Attached to a Local Interface Bus
JP4511618B2 (ja) 2009-01-23 2010-07-28 ソリッド ステート ストレージ ソリューションズ エルエルシー 外部記憶装置およびそのメモリアクセス制御方法
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
CN102640116B (zh) * 2009-09-28 2016-01-20 辉达公司 对外部dram的错误检测和纠正
US20110084248A1 (en) * 2009-10-13 2011-04-14 Nanya Technology Corporation Cross point memory array devices
US8656251B2 (en) * 2011-09-02 2014-02-18 Apple Inc. Simultaneous data transfer and error control to reduce latency and improve throughput to a host
MY180992A (en) 2013-03-13 2020-12-15 Intel Corp Memory latency management

Also Published As

Publication number Publication date
US9904592B2 (en) 2018-02-27
KR101669784B1 (ko) 2016-10-27
US10572339B2 (en) 2020-02-25
KR20150104165A (ko) 2015-09-14
WO2014163880A1 (en) 2014-10-09
MY180992A (en) 2020-12-15
RU2015133910A (ru) 2017-02-17
CN105210046B (zh) 2021-10-19
BR112015019392B1 (pt) 2022-10-11
EP2972916A4 (en) 2017-04-12
RU2618938C2 (ru) 2017-05-11
JP2016510927A (ja) 2016-04-11
EP2972916A1 (en) 2016-01-20
US20160034345A1 (en) 2016-02-04
EP2972916B1 (en) 2020-12-30
US20190129792A1 (en) 2019-05-02
BR112015019392A2 (pt) 2017-07-18
CN105210046A (zh) 2015-12-30

Similar Documents

Publication Publication Date Title
JP6137582B2 (ja) 電子デバイス、メモリコントローラ、装置
CN106663472B (zh) 非易失性存储器中的恢复算法
JP6112594B2 (ja) ハイブリッドメモリデバイス、メモリデバイスを含む電子デバイス、および、メモリデバイス用のコントローラ
US20160283111A1 (en) Read operations in memory devices
KR101743409B1 (ko) 메모리 관리
WO2015080819A1 (en) Error correction in memory
KR101732841B1 (ko) 내장된 ecc 어드레스 맵핑
KR102549070B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능
KR20170036766A (ko) 비휘발성 메모리 모듈
US10019354B2 (en) Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
TW201637009A (zh) 在自旋轉移力矩記憶體中之寫入操作技術

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170419

R150 Certificate of patent or registration of utility model

Ref document number: 6137582

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250