(57)【要約】  複数のメモリレイテンシ動作を管理するための装置、複数のシステム及び複数の方法が説明される。一実施形態において、電子デバイスは、プロセッサと、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するメモリ制御ロジックとを備える。他の複数の実施形態が、さらに開示され、特許請求の範囲に記載される。
2016510927.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
遠隔メモリデバイスからデータを受信し、
前記データをローカルキャッシュメモリに格納し、
前記データに関連付けられたエラー訂正コードインジケータを受信し、
前記エラー訂正コードインジケータに応答してデータ管理ポリシを実行する、
メモリ制御ロジックと、
を備える、電子デバイス。
【請求項２】
前記データに対する要求をホストデバイスから受信し、
前記ホストデバイスからの前記要求に応答して、前記遠隔メモリデバイスからの前記データに対する要求を生成する、
ロジックをさらに備える、請求項１に記載の電子デバイス。
【請求項３】
前記遠隔メモリデバイスから受信された前記データをローカルキャッシュに格納するロジックをさらに備える、請求項２に記載の電子デバイス。
【請求項４】
前記遠隔メモリデバイスから取得された前記データがエラーなく取得されたことを前記エラー訂正コードインジケータが示すか否かを判断し、
前記データがエラーなく取得されたという判断に応答して、前記データを前記ホストデバイスに戻す、
ロジックをさらに備える、請求項２または３に記載の電子デバイス。
【請求項５】
前記遠隔メモリデバイスから取得された前記データが少なくとも１つのエラーを含むことを前記エラー訂正コードインジケータが示すか否かを判断し、
前記データが少なくとも１つのエラーを含むという判断に応答して、前記ローカルキャッシュメモリから前記データを削除し、
前記遠隔メモリデバイスからの前記データに対する新たな要求を送信する、
ロジックをさらに備える、請求項２または３に記載の電子デバイス。
【請求項６】
遠隔メモリデバイスからデータを受信し、
前記データをローカルキャッシュメモリに格納し、
前記データに関連付けられたエラー訂正コードインジケータを受信し、
前記エラー訂正コードインジケータに応答して、データ管理ポリシを実行する、
ロジックを備える、メモリコントローラ。
【請求項７】
データに対する要求をホストデバイスから受信し、
前記データが前記遠隔メモリデバイスに格納されていることを判断し、
前記ホストデバイスからの前記要求に応答して、前記遠隔メモリデバイスからの前記データに対する要求を生成する、
ロジックをさらに備える、請求項６に記載のメモリコントローラ。
【請求項８】
前記遠隔メモリデバイスから受信された前記データをローカルキャッシュに格納する、
ロジックをさらに備える、請求項７に記載のメモリコントローラ。
【請求項９】
前記遠隔メモリデバイスから取得された前記データがエラーなく取得されたことを前記エラー訂正コードインジケータが示すか否かを判断し、
前記データがエラーなく取得されたという判断に応答して、前記データを前記ホストデバイスに戻す、
ロジックをさらに備える、請求項７または８に記載のメモリコントローラ。
【請求項１０】
前記遠隔メモリデバイスから取得された前記データが少なくとも１つのエラーを含むことを前記エラー訂正コードインジケータが示すか否かを判断し、
前記データが少なくとも１つのエラーを含むという判断に応答して、前記ローカルキャッシュメモリから前記データを削除し、
前記遠隔メモリデバイスからの前記データに対する新たな要求を送信する、
ロジックをさらに備える、請求項７または８に記載のメモリコントローラ。
【請求項１１】
装置であって、
１つまたは複数のメモリセルを有するメモリデバイスと、
前記１つまたは複数のメモリセルに格納されたデータに対する要求を、データバスを介して要求元から受信し、
前記１つまたは複数のメモリセルから前記データを取得し、
前記データバスがアイドリング状態であるか否かを判断し、前記データバスがアイドリング状態であるという判断に応答して、前記装置から前記データバス上の前記要求元に前記データを送信し、
前記データが送信を開始した後で、エラー訂正コードアルゴリズムを開始し、
前記データバスを介して、エラー訂正コードインジケータを前記要求元に送信する、
メモリ制御ロジックと、
を備える、装置。
【請求項１２】
前記メモリ制御ロジックは、
エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、
前記装置から前記要求元へのデータ送信を、前記遅延時間だけ遅延させる、
ロジックをさらに備える、請求項１１に記載の装置。
【請求項１３】
前記メモリ制御ロジックは、
前記エラー訂正コードアルゴリズムが前記データにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを前記要求元に送信する、
ロジックを備える、請求項１１または１２に記載の装置。
【請求項１４】
前記メモリ制御ロジックは、
前記データを訂正し、
前記データバスを介して、訂正されたデータを前記要求元に送信する、
ロジックを備える、請求項１３に記載の装置。
【請求項１５】
前記データバスがアイドリング状態ではないという判断に応答して、前記エラー訂正コードアルゴリズムは、前記装置から前記データバス上の前記要求元に前記データが送信される前に実行される、請求項１１から１４のいずれか１項に記載の装置。
【請求項１６】
１つまたは複数のメモリセルに格納されたデータに対する要求を、データバスを介して要求元から受信し、
前記１つまたは複数のメモリセルから前記データを取得し、
前記データバスがアイドリング状態であるか否かを判断し、前記データバスがアイドリング状態であるという判断に応答して、装置から前記データバス上の前記要求元に前記データを送信し、前記データが送信を開始した後に、エラー訂正コードアルゴリズムを開始し、
前記データバスを介して、前記要求元にエラー訂正コードインジケータを送信する、
ロジックを備える、コントローラ。
【請求項１７】
エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、
前記装置から前記要求元へのデータ送信を、前記遅延時間だけ遅延させる、
ロジックをさらに備える、請求項１６に記載のコントローラ。
【請求項１８】
前記エラー訂正コードアルゴリズムが前記データにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを前記要求元に送信するロジックをさらに備える、請求項１６または１７に記載のコントローラ。
【請求項１９】
前記データを訂正し、
前記データバスを介して、訂正されたデータを前記要求元に送信する、
ロジックをさらに備える、請求項１８に記載のコントローラ。
【請求項２０】
前記データバスがアイドリング状態ではないという判断に応答して、前記エラー訂正コードアルゴリズムは、前記装置から前記データバス上の前記要求元に前記データが送信される前に実行される、請求項１６から１９のいずれか１項に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、エレクトロニクスの分野に関する。より詳細には、本発明のいくつかの実施形態は、概して、メモリレイテンシ管理に関する。
【背景技術】
【０００２】
いくつかのメモリシステムは、揮発性メモリとして具現化されることが多く、キャッシュメモリとして機能し得るローカルな高速アクセスメモリ、及び、不揮発性メモリ、例えば、相変化メモリ、ＮＡＮＤメモリ等、またはさらに、磁気もしくは光学メモリを備え得る１つまたは複数の遠隔メモリデバイスを用いて、実装され得る。
【０００３】
複数の遠隔メモリデバイスは、ローカルキャッシュメモリより高いレイテンシを有するため、システム性能に悪影響を及ぼす。従って、複数のレイテンシ改善技術は、有用たり得る。
【図面の簡単な説明】
【０００４】
詳細な説明は、添付の複数の図を参照しながら提供される。複数の図において、参照番号の最も左側の桁は、その参照番号が最初に登場する図を特定する。異なる複数の図に同じ複数の参照番号が用いられる場合、同様のまたは同一の複数の要素を示す。
【図１】本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための、装置の複数のコンポーネントの模式的なブロック図である。
【図２】本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すフローチャートである。
【図３】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すタイムラインの模式図である。
【図４】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すタイムラインの模式図である。
【図５】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するための方法における複数の動作を示すタイムラインの模式図である。
【図６】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。
【図７】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。
【図８】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。
【図９】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。
【図１０】本明細書で説明される複数の様々な実施形態に係るメモリレイテンシ管理を実行するように適合され得る電子デバイスの模式的なブロック図である。
【発明を実施するための形態】
【０００５】
いくつかのメモリシステムは、揮発性メモリとして具現化されることが多く、キャッシュメモリとして機能し得るローカルな高速アクセスメモリ、及び、不揮発性メモリ、例えば、ダイナミックランダムアクセスメモリ、またはさらに、磁気もしくは光学メモリを備え得る１つまたは複数の遠隔メモリデバイスを用いて、実装され得る。例として、複数の遠隔メモリデバイスは、１つまたは複数のダイレクトインラインメモリモジュール（ＤＩＭＭ）を備えてもよく、その各々は、１つまたは複数のメモリランクを備えてもよく、次いで、これらは、１つまたは複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップを備えてもよく、または不揮発性メモリ、例えば、相変化メモリ、ＮＡＮＤメモリ等を含んでもよい。いくつかの電子デバイス（例えば、スマートフォン、タブレットコンピュータ等）は、１つまたは複数のＤＲＡＭを備えるより簡易な複数の遠隔メモリシステムを備えてもよい。
【０００６】
複数の遠隔メモリデバイスは、複数の読み出しエラーを検出及び訂正するために、複数のエラー訂正コード（ＥＣＣ）アルゴリズムを実行してもよい。例示的な複数のＥＣＣアルゴリズムは、ＢＣＨエラー訂正コード及び複数のリード−ソロモンアルゴリズムを含む。このような複数のＥＣＣアルゴリズムは、遠隔メモリデバイスによって実行される複数の読み出し動作に、追加のレイテンシを導入する。複数の様々な実施形態において、本明細書で説明される複数の技術は、遠隔メモリデバイスが、ＥＣＣ訂正ロジックをホストへのデータ転送でパイプライン化することにより、読み出し動作中に得られたデータをＥＣＣアルゴリズムの完了前に戻すことを可能にすることによって、このようなレイテンシを低減する。データ要求を発したコントローラは、遠隔メモリデバイスからのＥＣＣインジケータを待ちつつ、遠隔メモリデバイスから受信されたデータをローカルメモリに格納するように構成されてもよい。遠隔メモリデバイスによって実行されたＥＣＣアルゴリズムが、データ中にエラーを検出しなかった場合、遠隔メモリデバイスは、データが良好であることを示すＥＣＣインジケータを転送し、データ要求を発したコントローラは、データを処理してもよい。一方、遠隔メモリデバイスによって実行されたＥＣＣアルゴリズムが、データ中に複数のエラーを検出した場合、遠隔メモリデバイスは、データに欠陥があることを示すＥＣＣインジケータを転送し、データ要求を発したコントローラは、データ処理に進む前に、訂正されたデータを受信するまで待つ。
【０００７】
本明細書で説明される複数の技術は、様々な複数のコンピューティングシステム（例えば、サーバ、デスクトップ、ノートブック、スマートフォン、タブレット、ポータブルゲームコンソール等を含む）で提供されてもよく、これらは、一般的にデュアルインラインメモリモジュール（ＤＩＭＭ）に組み込まれる複数のＤＲＡＭチップ及び不揮発性メモリ、例えば、相変化メモリまたはＮＡＮＤメモリを備えるメモリシステムを含んでもよい。このような複数の実施形態において、各ＤＲＡＭは、別個の更新制御ロジックを備えてもよい。代替的に、更新制御ロジックは、ＤＩＭＭの複数のＤＲＡＭに対する複数の動作を制御するために、ＤＩＭＭレベルで実装されてもよい。
【０００８】
以下の説明において、複数の様々な実施形態を十分に理解ならしめるために、多数の具体的な詳細が記載される。しかしながら、本発明の複数の様々な実施形態は、具体的な詳細がなくても実施され得る。他の複数の例において、周知の方法、処理、コンポーネント及び回路は、本発明の複数の特定の実施形態を曖昧にしないよう、詳細には説明されていない。さらに、本発明の複数の実施形態の様々な複数の態様は、集積半導体回路（「ハードウェア」）、１つまたは複数のプログラムにまとめられたコンピュータ可読命令（「ソフトウェア」）またはハードウェア及びソフトウェアのいくつかの組み合わせのような、様々な手段を用いて実行され得る。本開示の目的のため、「ロジック」という記載は、ハードウェア、ソフトウェアまたはそれらのいくつかの組み合わせのいずれかを意味するものとする。
【０００９】
図１は、本明細書で説明される様々な実施形態に係るメモリレイテンシ管理を実行するための、装置の複数のコンポーネントの模式的なブロック図である。図１を参照すると、いくつかの実施形態において、中央処理装置（ＣＰＵ）パッケージ１００は、制御ハブ１２０に連結される１つまたは複数のＣＰＵ１１０と、ローカルメモリ１３０とを備えてもよい。制御ハブ１２０は、メモリコントローラ１２２と、メモリインタフェース１２４とを備える。
【００１０】
メモリインタフェース１２４は、通信バス１６０によって、１つまたは複数の遠隔メモリデバイス１４０に連結される。メモリデバイス１４０は、コントローラ１４２と、１つまたは複数のメモリバンク１５０とを備えてもよい。複数の様々な実施形態において、複数のメモリバンク１５０は、不揮発性メモリ、例えば、相変化メモリ、ＮＡＮＤ（フラッシュ）メモリ、強誘電体ランダムアクセスメモリ（ＦｅＴＲＡＭ）、ナノワイヤベースの不揮発性メモリ、メモリスタ技術を組み込んだメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、相変化メモリ（ＰＣＭ）、スピン注入磁化反転メモリ（ＳＴＴ−ＲＡＭ）またはＮＡＮＤメモリのような３次元（３Ｄ）クロスポイントメモリを用いて実装されてもよい。例として、いくつかの実施形態において、メモリデバイス１４０は、コントローラ１４２への通信リンクを提供するメモリチャネル１４４に連結される１つまたは複数のダイレクトインラインメモリモジュール（ＤＩＭＭ）を備えてもよい。メモリデバイス１４０におけるメモリバンク１５０の具体的構成は、重要ではない。
【００１１】
上述されたように、いくつかの実施形態において、メモリコントローラ１２２のロジックは、メモリデバイス１４０における複数の読み出し動作に関連付けられたメモリレイテンシを管理するために、メモリデバイスのコントローラ１４２のロジックと連携する。メモリコントローラ１２２及びコントローラ１４２によって実行される複数の動作は、図２を参照しながら説明される。図２を参照すると、動作２１０において、メモリコントローラ１２２は、ホストから、例えば、ＣＰＵ１１０または制御ハブ１２０に連結された他のプロセッサ上で動作するアプリケーションからのデータ要求を受信する。動作２１５において、メモリコントローラ１２２は、アプリケーションによって要求されたデータに対するデータ要求を生成する。データ要求は、メモリインタフェース１２４及びバス１６０を介して、メモリデバイス１４０のコントローラ１４２に転送される。
【００１２】
動作２２０において、コントローラ１４２は、データ要求を受信し、動作２２５において、コントローラ１４２は、メモリバンク１５０からのデータ要求に関連付けられたデータを取得する。動作２３０において、コントローラ１４２は、バス１６０がアイドリングしているか否かを判断する。動作２３０において、データバス１６０がアイドリングしていない場合（例えば、データバス１６０が、データ送信のために用いられている場合）、制御は動作２３５に渡り、コントローラ１４２は、メモリバンク１５０から取得されたデータにおける複数の読み出しエラーを検出及び訂正するＥＣＣアルゴリズムを実行する。動作２４０において、メモリバンク１５０から取得されたデータは、バス１６０を介してメモリインタフェース１２４に送信される。
【００１３】
動作２７０において、メモリコントローラ１２２は、バス１６０を介してデータを受信する。動作２７５において、メモリコントローラ１２２は、データが読み出しエラーを有するか否かを評価する。データはＥＣＣ検出及び訂正動作を既に受けているため、データはエラーを有しておらず、制御は動作２８５に渡り、データは、ホストに戻される。
【００１４】
これら複数の動作に関連付けられたレイテンシのタイムラインが、図３に示される。図３を参照すると、第１回目のレイテンシ３１０は、コマンド処理に関連付けられ、第２回目のレイテンシ３１５は、メモリバンク１５０からのデータ読み出しにおける読み出しアクセスレイテンシに関連付けられる。第３のレイテンシ３２０は、メモリバンク１５０からコントローラ１４２へのデータ転送に関連付けられる。第４のレイテンシ３２５は、ＥＣＣチェック及び訂正処理３２５に関連付けられる。第５のレイテンシは、メモリデバイス１４０から制御ハブ１２０へのデータ転送に関連付けられる。合計レイテンシは、図３に示される複数のレイテンシの各々の合計に対応する。
【００１５】
再び図２を参照すると、動作２３０においてデータバス１６０がアイドリングしていた場合、制御は動作２４５に渡り、コントローラ１４２は、要求されたデータに対するＥＣＣチェックの実行に必要な時間を推定する。いくつかの実施形態において、複数の読み出し動作は、ＥＣＣ動作にかかる期間をコントローラが予め判断できるように、既知の固定サイズである。
【００１６】
動作２５０において、コントローラ１４２は、動作２４５において判断されたＥＣＣの遅延時間に対応する時間長だけ、データ送信の遅延を実行し、次に動作２５５において、コントローラ１４２は、データバス１６０を介し、メモリデバイス１４０からメモリインタフェース１２４への、要求されたデータのデータ送信を開始する。動作２６０において、コントローラ１４２は、データに対するＥＣＣチェックを実行し、動作２６５において、コントローラ１４２は、ＥＣＣインジケータを、データバスを介してメモリインタフェース１２４に送信する。
【００１７】
動作２７０において、メモリコントローラ１２２は、バス１６０を介して、データ及びＥＣＣインジケータを受信する。動作２７５において、メモリコントローラ１２２は、データが読み出しエラーを有するか否かを評価する。一実施形態において、ＥＣＣチェックが、メモリバンク１５０からのデータの読み出しにおいて、１つまたは複数の読み出しエラーが発生したと判断した場合に、コントローラ１４２は、リトライ及びフェールＥＣＣインジケータを送信してもよい。動作２７５において、エラーは示されず、次に、制御は動作２８５に渡り、コントローラ１２２は、データをホストに戻す。
【００１８】
これら複数の動作と関連付けられたレイテンシのタイムラインは、図４に示される。図４を参照すると、第１回目のレイテンシ３１０は、コマンド処理に関連付けられ、第２回目のレイテンシ３１５は、メモリバンク１５０からのデータの読み出しにおける読み出しアクセスレイテンシに関連付けられる。第３のレイテンシ３２０は、メモリバンク１５０からコントローラ１４２へのデータ転送に関連付けられる。図４に示されるように、メモリデバイス１４０から制御ハブ１２０へのデータ転送は、データがメモリバンク１５０からコントローラ１４２に転送されている間に開始する。つまり、この動作に関連付けられたレイテンシは、取り除かれる。第４のレイテンシ３２５は、ＥＣＣチェック処理３２５に関連付けられる。合計レイテンシは、図４に示される複数のレイテンシの各々の合計に対応する。
【００１９】
再び図２を参照すると、動作２７５においてエラーが示された場合、制御は動作２８０に渡り、コントローラ１２２は、受信されたデータを破棄し、コントローラ１４２がデータをホストに戻す（動作２８５）前に、訂正されたデータを送信するまで待つ。
【００２０】
これら複数の動作と関連付けられたレイテンシのタイムラインは、図５に示される。図５を参照すると、第１回目のレイテンシ３１０は、コマンド処理に関連付けられ、第２回目のレイテンシ３１５は、メモリバンク１５０からのデータの読み出しにおける読み出しアクセスレイテンシに関連付けられる。第３のレイテンシ３２０は、メモリバンク１５０からコントローラ１４２へのデータ転送に関連付けられる。図５に示されるように、メモリデバイス１４０から制御ハブ１２０へのデータ転送は、データがメモリバンク１５０からコントローラ１４２に転送されている間に開始する。つまり、この動作に関連付けられたレイテンシは、取り除かれる。第４のレイテンシ３２５は、ＥＣＣチェック及び訂正処理３２５に関連付けられる。第５のレイテンシ３３５は、ＥＣＣ訂正処理３３５に関連付けられ、第６のレイテンシ３４０は、メモリデバイス１４０からメモリバンク１５０、コントローラ１４２への、訂正されたデータの転送に関連付けられる。合計レイテンシは、図５に示される複数のレイテンシの各々の合計に対応する。
【００２１】
上述されたように、いくつかの実施形態において、電子デバイスは、コンピュータシステムとして具現化されてもよい。図６は、本発明の実施形態に係るコンピューティングシステム６００のブロック図を示す。コンピューティングシステム６００は、相互接続ネットワーク（またはバス）６０４を介して通信を行う１つまたは複数の中央処理装置（ＣＰＵ）６０２またはプロセッサを含んでもよい。プロセッサ６０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク６０３を介して送受信されるデータを処理する）または複数の他のタイプのプロセッサ（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサまたは複雑命令セットコンピュータ（ＣＩＳＣ）を含む）を含んでもよい。さらに、複数のプロセッサ６０２は、単一のまたは複数のコア設計を有してもよい。複数のコア設計を有する複数のプロセッサ６０２は、異なる複数のタイプの複数のプロセッサコアを、同じ集積回路（ＩＣ）ダイに統合してもよい。また、複数のコア設計を有する複数のプロセッサ６０２は、複数の対称型または非対称型マルチプロセッサとして実装されてもよい。実施形態において、プロセッサ６０２のうち１つまたは複数は、図１の複数のプロセッサ１０２と同じまたは同様であってもよい。例えば、プロセッサ６０２のうち１つまたは複数は、図１−３を参照して説明された制御ユニット１２０を含んでもよい。また、図３−５を参照して説明される複数の動作は、システム６００の１つまたは複数のコンポーネントによって実行されてもよい。
【００２２】
チップセット６０６は、相互接続ネットワーク６０４とさらに通信を行ってもよい。チップセット６０６は、メモリ制御ハブ（ＭＣＨ）６０８を含んでもよい。ＭＣＨ６０８は、（図１のメモリ１３０と同じまたは同様たり得る）メモリ６１２と通信を行うメモリコントローラ６１０を含んでもよい。メモリ４１２は、複数の命令の複数のシーケンスを含むデータを格納してもよく、これは、ＣＰＵ６０２またはコンピューティングシステム６００に含まれる任意の他のデバイスによって実行され得る。本発明の一実施形態において、メモリ６１２は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、または他のタイプのストレージデバイスのような１つまたは複数の揮発性ストレージ（またはメモリ）デバイスを含んでもよい。ハードディスクのような不揮発性メモリも、利用可能である。追加の複数のデバイスは、複数のＣＰＵ及び／または複数のシステムメモリのような相互接続ネットワーク６０４を介して、通信を行ってもよい。
【００２３】
ＭＣＨ６０８は、ディスプレイデバイス６１６と通信を行うグラフィックインタフェース６１４をさらに含んでもよい。本発明の一実施形態において、グラフィックインタフェース６１４は、アクセラレーテッドグラフィクスポート（ＡＧＰ）を介して、ディスプレイデバイス６１６と通信を行ってもよい。本発明の実施形態において、（フラットパネルディスプレイのような）ディスプレイ６１６は、例えば、ビデオメモリまたはシステムメモリのようなストレージデバイスに格納された画像のデジタル表現を、ディスプレイ６１６によって解読及び表示される複数の表示信号に変換する信号コンバータを通じて、グラフィックインタフェース６１４と通信を行ってもよい。ディスプレイデバイスによって生成される複数の表示信号は、ディスプレイ６１６によって解読され、次にその上に表示される前に、様々な複数の制御デバイスを通して渡されてもよい。
【００２４】
ハブインタフェース６１８は、ＭＣＨ６０８及び入出力制御ハブ（ＩＣＨ）６２０を通信可能にしてもよい。ＩＣＨ６２０は、コンピューティングシステム６００と通信を行うＩ／Ｏデバイスへのインタフェースを提供してもよい。ＩＣＨ６２０は、周辺機器相互接続（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラまたは複数の他のタイプの周辺ブリッジもしくはコントローラのような周辺ブリッジ（またはコントローラ）６２４を通じて、バス６２２と通信を行ってもよい。ブリッジ６２４は、ＣＰＵ６０２と複数の周辺デバイスとの間にデータパスを提供してもよい。複数の他のタイプのトポロジが、利用可能である。また、複数のバスは、例えば、複数のブリッジまたはコントローラを通じて、ＩＣＨ６２０と通信してもよい。さらに、本発明の複数の様々な実施形態において、ＩＣＨ６２０と通信を行う他の複数の周辺機器は、統合ドライブエレクトロニクス（ＩＤＥ）もしくはスモールコンピュータシステムインタフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインタフェース（ＤＶＩ））、または複数の他のデバイスを含んでもよい。
【００２５】
バス６２２は、オーディオデバイス６２６、１つまたは複数のディスクドライブ６２８及び（コンピュータネットワーク６０３と通信を行う）ネットワークインタフェースデバイス６３０と通信を行ってもよい。複数の他のデバイスは、バス６２２を介して通信を行ってもよい。また、本発明のいくつかの実施形態において、（ネットワークインタフェースデバイス６３０のような）複数の様々なコンポーネントは、ＭＣＨ６０８と通信を行ってもよい。さらに、本明細書で説明されるプロセッサ６０２及び１つまたは複数の他のコンポーネントは、組み合わせられることにより、単一のチップを形成（例えば、システムオンチップ（ＳｏＣ））を提供）してもよい。さらに、本発明の複数の他の実施形態において、グラフィクスアクセラレータ６１６は、ＭＣＨ６０８内に含まれてもよい。
【００２６】
さらに、コンピューティングシステム６００は、揮発性及び／または不揮発性メモリ（またはストレージ）を含んでもよい。例えば、不揮発性メモリは、リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、６２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、または電子データ（例えば、複数の命令を含む）を格納可能な複数の他のタイプの不揮発性機械可読メディアのうち１つまたは複数を含んでもよい。
【００２７】
図７は、本発明の実施形態に係るコンピューティングシステム７００のブロック図を示す。システム７００は、１つまたは複数のプロセッサ７０２−１から７０２−Ｎ（概して、本明細書では「複数のプロセッサ７０２」または「プロセッサ７０２」と称される）を含んでもよい。複数のプロセッサ７０２は、相互接続ネットワークまたはバス７０４を介して通信を行ってもよい。各プロセッサは、複数の様々なコンポーネントを含んでもよく、それらのいくつかは、明確化のため、プロセッサ７０２−１のみを参照して説明される。従って、残るプロセッサ７０２−２から７０２−Ｎの各々は、プロセッサ７０２−１を参照して説明される同じまたは同様の複数のコンポーネントを含んでもよい。
【００２８】
実施形態において、プロセッサ７０２−１は、１つまたは複数のプロセッサコア７０６−１から７０６−Ｍ（本明細書では「複数のコア７０６」、またはより一般的には「コア７０６」と称される）、共有キャッシュ７０８、ルータ７１０及び／またはプロセッサ制御ロジックもしくはユニット７２０を含んでもよい。プロセッサコア７０６は、単一の集積回路（ＩＣ）チップ上に実装されてもよい。さらに、チップは、１つまたは複数の共有及び／または専用のキャッシュ（例えばキャッシュ７０８）、複数のバスまたは複数の相互接続（例えばバスまたは相互接続ネットワーク７１２）、複数のメモリコントローラまたは複数の他のコンポーネントを含んでもよい。
【００２９】
一実施形態において、ルータ７１０は、プロセッサ７０２−１及び／またはシステム７００の複数の様々なコンポーネントの間で通信を行うために用いられてもよい。さらに、プロセッサ７０２−１は、１つより多くのルータ７１０を含んでもよい。さらに、多数のルータ７１０が通信を行うことにより、プロセッサ７０２−１内外の複数の様々なコンポーネント間におけるデータルーティングを可能にしてもよい。
【００３０】
共有キャッシュ７０８は、コア７０６のようなプロセッサ７０２−１の１つまたは複数のコンポーネントによって用いられるデータ（例えば、複数の命令を含む）を格納してもよい。例えば、共有キャッシュ７０８は、プロセッサ７０２の複数のコンポーネントによるアクセスをより高速にするために、メモリ７１４に格納されたデータをローカルにキャッシュしてもよい。実施形態において、キャッシュ７０８は、中レベルキャッシュ（例えば、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）または他の複数のレベルのキャッシュ）、ラストレベルキャッシュ（ＬＬＣ）及び／またはそれらの複数の組み合わせを含んでもよい。さらに、プロセッサ７０２−１の複数の様々なコンポーネントは、直接、バス（例えばバス７１２）及び／またはメモリコントローラもしくはハブを通じて、共有キャッシュ７０８と通信を行ってもよい。図７に示されるように、いくつかの実施形態において、複数のコア７０６のうち１つまたは複数は、レベル１（Ｌ１）キャッシュ７１６−１（概して本明細書では「Ｌ１キャッシュ７１６」と称される）を含んでもよい。一実施形態において、制御ユニット７２０は、図２のメモリコントローラ１２２を参照して上述された複数の動作を実行するロジックを含んでもよい。
【００３１】
図８は、本発明の実施形態に係るコンピューティングシステムのプロセッサコア７０６及び複数の他のコンポーネントの一部のブロック図を示す。一実施形態において、図８に示される複数の矢印は、コア７０６を通じた複数の命令のフローの方向を示す。１つまたは複数のプロセッサコア（例えばプロセッサコア７０６）は、図７を参照して説明されたもののような単一の集積回路チップ（またはダイ）上に実装されてもよい。さらに、チップは、１つまたは複数の共有及び／または専用キャッシュ（例えば、図７のキャッシュ７０８）、相互接続（例えば、図７の相互接続７０４及び／または１１２）、制御ユニット、メモリコントローラまたは複数の他のコンポーネントを含んでもよい。
【００３２】
図８に示されるように、プロセッサコア７０６は、フェッチユニット８０２を含むことにより、複数の命令（複数の条件付き分岐を有する複数の命令を含む）をコア７０６による実行のためにフェッチしてもよい。複数の命令は、メモリ７１４のような任意の複数のストレージデバイスからフェッチされてもよい。コア７０６は、デコードユニット８０４を含むことにより、フェッチされた命令をデコードしてもよい。例えば、デコードユニット８０４は、フェッチされた命令を複数のｕｏｐ（複数のマイクロオペレーション）にデコードしてもよい。
【００３３】
追加的に、コア７０６は、スケジューリングユニット８０６を含んでもよい。スケジューリングユニット８０６は、複数の命令がディスパッチ可能となるまで、例えば、デコードされた命令の全てのソース値が適用可能となるまで、複数のデコードされた命令（例えば、デコードユニット８０４から受信されたもの）の格納に関連付けられた複数の様々な動作を実行してもよい。一実施形態において、スケジューリングユニット８０６は、複数のデコードされた命令をスケジューリングし、及び／またはこれらを実行のために実行ユニット８０８に発し（またはディスパッチし）てもよい。実行ユニット８０８は、複数のディスパッチされた命令が（例えばデコードユニット８０４によって）デコードされ、（例えばスケジューリングユニット８０６によって）ディスパッチされた後、これらを実行してもよい。実施形態において、実行ユニット８０８は、１つより多くの実行ユニットを含んでもよい。実行ユニット８０８は、加算、減算、乗算及び／または除算のような複数の様々な演算オペレーションをさらに実行してもよく、１つまたは複数の論理ユニット（ＡＬＵ）を含んでもよい。実施形態において、コプロセッサ（不図示）は、実行ユニット８０８と連携して、複数の様々な演算オペレーションを実行してもよい。
【００３４】
さらに、実行ユニット８０８は、複数の命令をアウトオブオーダで実行してもよい。よって、一実施形態において、プロセッサコア７０６は、アウトオブオーダプロセッサコアであってもよい。コア７０６は、リタイアメントユニット８１０をさらに含んでもよい。リタイアメントユニット８１０は、実行された複数の命令を、これらがコミットされた後でリタイアしてもよい。実施形態において、実行された複数の命令のリタイアにより、プロセッサの状態が複数の命令の実行からコミットされる、複数の命令によって用いられた複数の物理レジスタが解放される等の結果がもたらされてもよい。
【００３５】
コア７０６は、プロセッサコア７０６の複数のコンポーネントと（図８を参照して説明されたコンポーネントのような）複数の他のコンポーネントとの間の通信を、１つまたは複数のバス（例えば、バス８０４及び／または８１２）を介して可能とするバスユニット８１４をさらに含んでもよい。コア７０６は、コア７０６の複数の様々なコンポーネントによってアクセスされるデータ（電力消費状態設定に関する複数の値など）を格納する１つまたは複数のレジスタ８１６をさらに含んでもよい。
【００３６】
さらに、図７は、制御ユニット７２０が相互接続８１２を介してコア７０６に連結されるものとして示すが、複数の様々な実施形態においては、制御ユニット７２０は、バス７０４等を介してコアに連結されるコア７０６の内部のような他の箇所に配置され得る。
【００３７】
いくつかの実施形態において、本明細書で説明される複数のコンポーネントのうち１つまたは複数は、システムオンチップ（ＳｏＣ）デバイスとして具現化されてもよい。図９は、実施形態に係るＳｏＣパッケージのブロック図を示す。図９に示されるように、ＳｏＣ９０２は、１つまたは複数の中央処理装置（ＣＰＵ）コア９２０、１つまたは複数のグラフィクスプロセッサユニット（ＧＰＵ）コア９３０、入力／出力（Ｉ／Ｏ）インタフェース９４０及びメモリコントローラ９４２を含む。ＳｏＣパッケージ９０２の複数の様々なコンポーネントは、本明細書において複数の他の図を参照して説明されるような相互接続またはバスに連結されてもよい。また、ＳｏＣパッケージ９０２は、本明細書において複数の他の図を参照して説明されるもののような、より多くのまたはより少ないコンポーネントを含んでもよい。さらに、ＳｏＣパッケージ９０２の各コンポーネントは、例えば、本明細書の複数の他の図を参照して説明されるような１つまたは複数の他のコンポーネントを含んでもよい。一実施形態において、ＳｏＣパッケージ９０２（及びその複数のコンポーネント）は、例えば、単一の半導体デバイスにパッケージ化される１つまたは複数の集積回路（ＩＣ）ダイ上に提供される。
【００３８】
図９に示されるように、ＳｏＣパッケージ９０２は、メモリコントローラ９４２を介して、（本明細書において複数の他の図を参照して説明されるメモリと同様のまたは同じであり得る）メモリ９６０に連結される。実施形態において、メモリ９６０（またはその一部）は、ＳｏＣパッケージ９０２に一体化されてもよい。
【００３９】
Ｉ／Ｏインタフェース９４０は、例えば、本明細書において複数の他の図を参照して説明されるもののような相互接続及び／またはバスを介して、１つまたは複数のＩ／Ｏデバイス９７０に連結されてもよい。Ｉ／Ｏデバイス９７０は、キーボード、マウス、タッチパッド、ディスプレイ、画像／ビデオキャプチャデバイス（カメラまたはカムコーダ／ビデオレコーダなど）、タッチスクリーン、スピーカ等のうち１つまたは複数を含んでもよい。
【００４０】
図１０は、本発明の実施形態に係るポイントツーポイント（ＰｔＰ）構成で構成されるコンピューティングシステム１０００を示す。詳細には、図１０は、複数のプロセッサ、メモリ及び複数の入力／出力デバイスが、多数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。図２を参照して説明された複数の動作は、システム１０００の１つまたは複数のコンポーネントによって実行されてもよい。
【００４１】
図１０に示されるように、システム１０００は、いくつかのプロセッサを含んでもよく、これらは明確化のため、プロセッサ１００２および１００４の２つのみが示される。プロセッサ１００２および１００４は、各々、ローカルメモリコントローラハブ（ＭＣＨ）１００６及び１００８を含むことにより、メモリ１０１０および１０１２との通信を可能としてもよい。いくつかの実施形態において、ＭＣＨ１００６および１００８は、図１のメモリコントローラ１２０及び／またはロジック１２５を含んでもよい。
【００４２】
実施形態において、プロセッサ１００２および１００４は、図７を参照して説明された複数のプロセッサ７０２のうちの１つであってもよい。プロセッサ１００２および１００４は、ポイントツーポイント（ＰｔＰ）インタフェース１０１４を介して、ＰｔＰインタフェース回路１０１６および１０１８のそれぞれを用いてデータを交換してもよい。また、プロセッサ１００２および１００４は、個々のＰｔＰインタフェース１０２２および１０２４を介して、ポイントツーポイントインタフェース回路１０２６、１０２８、１０３０および１０３２を用いて、チップセット１０２０と各々データを交換してもよい。チップセット１０２０は、高性能グラフィクスインタフェース１０３６を介して、例えば、ＰｔＰインタフェース回路１０３７を用いて、高性能グラフィクス回路１０３４とさらにデータを交換してもよい。
【００４３】
図１０に示されるように、図１の複数のコア１０６及び／またはキャッシュ１０８のうち１つまたは複数は、プロセッサ９０２および９０４内に配置されてもよい。本発明の複数の他の実施形態は、しかしながら、図９のシステム９００内の他の複数の回路、複数の論理ユニットまたは複数のデバイスに存在してもよい。さらに、本発明の複数の他の実施形態は、図９に示されるいくつかの回路、論理ユニットまたはデバイス全体に分散されてもよい。
【００４４】
チップセット９２０は、ＰｔＰインタフェース回路９４１を用いてバス９４０と通信を行ってもよい。バス９４０は、バスブリッジ９４２及びＩ／Ｏデバイス９４３のような、それ自体と通信を行う１つまたは複数のデバイスを有してもよい。バス９４４を介して、バスブリッジ９４３は、複数の他のデバイス、例えば、キーボード／マウス９４５、通信デバイス９４６（モデム、ネットワークインタフェースデバイスまたはコンピュータネットワーク８０３と通信可能な他の通信デバイス）と、オーディオＩ／Ｏデバイス及び／またはデータストレージデバイス９４８と通信を行ってもよい。データストレージデバイス９４８（ハードディスクドライブまたはＮＡＮＤフラッシュベースのソリッドステートドライブであってもよい）は、複数のプロセッサ９０２及び／または９０４によって実行可能なコード９４９を格納してもよい。
【００４５】
以下の複数の例は、さらなる複数の実施形態に関する。
【００４６】
例１は、プロセッサと、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するメモリ制御ロジックとを備える電子デバイスである。
【００４７】
電子デバイスは、ホストデバイスからデータに対する要求を受信し、ホストデバイスからの要求に応答して、遠隔メモリデバイスからのデータに対する要求を生成し、ロジックをさらに備える。電子デバイスは、遠隔メモリデバイスから受信されたデータをローカルキャッシュに格納するロジックをさらに備える。
【００４８】
電子デバイスは、遠隔メモリデバイスから取得されたデータがエラーなく取得されたことをエラー訂正コードインジケータが示すか否かを判断し、データがエラーなく取得されたという判断に応答して、データをホストデバイスに戻すロジックをさらに備える。電子デバイスは、遠隔メモリデバイスから取得されたデータが少なくとも１つのエラーを含むことをエラー訂正コードインジケータが示すか否かを判断し、データが少なくとも１つのエラーを含という判断に応答して、ローカルキャッシュメモリからデータを削除し、遠隔メモリデバイスからのデータに対する新たな要求を送信するロジックをさらに備える。
【００４９】
例２は、遠隔メモリデバイスからデータを受信し、データをローカルキャッシュメモリに格納し、データに関連付けられたエラー訂正コードインジケータを受信し、エラー訂正コードインジケータに応答してデータ管理ポリシを実行するロジックを備えるメモリコントローラである。
【００５０】
メモリコントローラは、ホストデバイスからデータに対する要求を受信し、データが遠隔メモリデバイスに格納されたと判断し、ホストデバイスからの要求に応答して、遠隔メモリデバイスからのデータに対する要求を生成するロジックをさらに備える。
【００５１】
メモリコントローラは、遠隔メモリデバイスから受信されたデータをローカルキャッシュに格納するロジックをさらに備える。メモリコントローラは、遠隔メモリデバイスから取得されたデータがエラーなく取得されたことをエラー訂正コードインジケータが示すか否かを判断し、データがエラーなしで取得されたという判断に応答して、データをホストデバイスに戻すロジックをさらに備える。
【００５２】
メモリコントローラは、遠隔メモリデバイスから取得されたデータが少なくとも１つのエラーを含むことをエラー訂正コードインジケータが示すか否かを判断し、データが少なくとも１つのエラーを含むという判断に応答して、ローカルキャッシュメモリからデータを削除し、遠隔メモリデバイスからのデータに対する新たな要求を送信するロジックをさらに備える。
【００５３】
例３は、１つまたは複数のメモリセルと、１つまたは複数のメモリセルに格納されたデータに対する要求を、要求元からデータバスを介して受信し、１つまたは複数のメモリセルからデータを取得し、データバスがアイドリング状態であるか否かを判断し、データバスがアイドリング状態であるという判断に応答して、装置からデータバス上の要求元にデータを送信し、データが送信を開始した後にエラー訂正コードアルゴリズムを開始し、データバスを介して要求元にエラー訂正コードインジケータを送信するメモリ制御ロジックとを有するメモリデバイスを備える装置である。
【００５４】
装置は、エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、装置から要求元へのデータ送信を遅延時間だけ遅延させるメモリ制御ロジックを備えてもよい。装置は、エラー訂正コードアルゴリズムがデータにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを要求元に送信するメモリ制御ロジックを備えてもよい。
【００５５】
装置は、データを訂正し、データバスを介して、訂正されたデータを要求元に送信するメモリ制御ロジックを備えてもよい。データバスがアイドリング状態ではないという判断に応答して、エラー訂正コードアルゴリズムは、装置からデータバス上の要求元にデータが送信される前に実行される。
【００５６】
例４において、コントローラは、１つまたは複数のメモリセルに格納されたデータに対する要求を要求元から受信し、１つまたは複数のメモリセルからデータを取得し、データバスがアイドリング状態であるか否かを判断し、データバスがアイドリング状態であるという判断に応答して、データバスを介して、装置からデータバス上の要求元にデータを送信し、データが送信を開始した後にエラー訂正コードアルゴリズムを開始し、データバスを介してエラー訂正コードインジケータを要求元に送信するロジックを備える。
【００５７】
コントローラは、エラー訂正制御アルゴリズムを実行するために必要な遅延時間を推定し、装置から要求元へのデータ送信を遅延時間だけ遅延させるメモリ制御ロジックを備えてもよい。コントローラは、エラー訂正コードアルゴリズムがデータにおける読み出しエラーを示す場合に、リトライエラー訂正コードインジケータを要求元に送信するメモリ制御ロジックを備えてもよい。
【００５８】
コントローラは、データを訂正し、データバスを介して、訂正されたデータを要求元に送信するメモリ制御ロジックを備えてもよい。データバスがアイドリング状態ではないという判断に応答して、エラー訂正コードアルゴリズムは、装置からデータバス上の要求元にデータが送信される前に実行される。
【００５９】
本発明の複数の様々な実施形態において、本明細書において、例えば図１―９を参照して説明される複数の動作は、コンピュータが本明細書で説明される処理を実行するようにプログラムするために用いられるハードウェア（例えば、回路、ソフトウェア、ファームウェア、マイクロコードまたはそれらの複数の組み合わせであり、例えば、複数の命令（または複数のソフトウェア処理）を格納する有形の（例えば、非一時的）機械可読またはコンピュータ可読メディアを含むコンピュータプログラム製品として提供され得るもの）として実装されてもよい。また、用語「ロジック」は、例として、ソフトウェア、ハードウェアまたはソフトウェア及びハードウェアの複数の組み合わせを含んでもよい。機械可読メディアは、本明細書で説明されるもののようなストレージデバイスを含んでもよい。
【００６０】
本明細書における「一実施形態」または「実施形態」という記載は、実施形態に関連して説明された特定の機能、構造または特性が、少なくとも実装に含まれてもよいことを意味する。本明細書の様々な複数の箇所における「一実施形態において」という表現の出現は、全て同じ実施形態を参照してもよく、しなくてもよい。
【００６１】
また、説明および特許請求の範囲で、「連結」及び「接続」という用語は、それらの複数の活用形とともに用いられてもよい。本発明のいくつかの実施形態において、「接続」は、２つまたはそれより多くのエレメントが互いに直接物理的にまたは電気的に接触することを示すために用いられてもよい。「連結」は、２つまたはそれより多くのエレメントが、直接物理的にまたは電気的に接触することを意味してもよい。しかしながら、「連結」は、２つまたはそれより多くのエレメントが互いに直接は接触しないが、互いに連携または相互作用し得ることを意味してもよい。
【００６２】
つまり、本発明の複数の実施形態は、複数の構造的な特徴及び／または複数の方法論的な動きに固有の記載で説明されているが、特許請求の範囲に係る主題は、説明された複数の具体的な特徴又は複数の動きに限定されないことを理解されたい。むしろ、複数の具体的な特徴及び複数の動きは、特許請求の範囲に係る主題を実施するための例示的な複数の形式として開示される。
【図１】
2016510927.tif 000003
【図２】
2016510927.tif 000004
【図３】
2016510927.tif 000005
【図４】
2016510927.tif 000006
【図５】
2016510927.tif 000007
【図６】
2016510927.tif 000008
【図７】
2016510927.tif 000009
【図８】
2016510927.tif 000010
【図９】
2016510927.tif 000011
【図１０】
2016510927.tif 000012
【国際調査報告】
2016510927.tif 000013
2016510927.tif 000014