(57)【要約】集積回路は、アドレス空間を有するメモリと、受信したメモリアクセスに応じてアドレス空間にアクセスするために、メモリに接続されたメモリコントローラと、を含む。メモリコントローラは、アドレス空間の第１の部分内の複数のデータ要素と、アドレス空間の第２の部分内の、複数のデータ要素に対応する信頼性データと、にアクセスする。【選択図】図３
2015535101.tif 000002
【特許請求の範囲】
【請求項１】
アドレス空間（４００，５００，６００，７００）を有するメモリ（３５０）と、
受信したメモリアクセスに応じて前記アドレス空間（４００，５００，６００，７００）にアクセスするために、前記メモリ（３５０）に接続されたメモリコントローラ（３４０）と、を備え、
前記メモリコントローラ（３４０）は、前記アドレス空間（４００，５００，６００，７００）の第１の部分内の複数のデータ要素と、前記アドレス空間（４００，５００，６００，７００）の第２の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする、
集積回路（３００）。
【請求項２】
前記アドレス空間（４００）の前記第１の部分は、第１のアドレスの連続する部分（４１２）を含み、
前記アドレス空間の前記第２の部分は、第２のアドレスの連続する部分（４１４）を含む、
請求項１に記載の集積回路（３００）。
【請求項３】
前記アドレス空間（４００）は、複数のバンク（４１０，４２０，４３０，４４０）を含み、
前記第１のアドレスの連続する部分（４１２）は、前記アドレス空間（４００）の上位に存在し、
前記第２のアドレスの連続する部分（４１４）は、前記アドレス空間（４００）の下位に存在する、
請求項２に記載の集積回路（３００）。
【請求項４】
前記アドレス空間（５００）は、複数のバンク（５１０，５２０，５３０，５４０）を含み、
前記アドレス空間（５００）の前記第１の部分は、前記複数のバンク（５１０）のうち１つのバンクの第１のアドレスの連続する部分（５１２）を含み、
前記アドレス空間（５００）の前記第２の部分は、前記複数のバンク（５１０）のうち前記１つのバンクの第２のアドレスの連続する部分（５１４）を含む、
請求項１に記載の集積回路（３００）。
【請求項５】
前記第１のアドレスの連続する部分（５１２）は、前記複数のバンク（５１０）のうち前記１つのバンクの第１のアドレス空間の上位に存在し、
前記第２のアドレスの連続する部分（５１４）は、前記複数のバンク（５１０）のうち前記１つのバンクの前記第１のアドレス空間の下位に存在する、
請求項４に記載の集積回路（３００）。
【請求項６】
前記アドレス空間（６００）は、前記アドレス空間（６００）内で順序を有する複数のバンク（６１０，６２０，６３０，６４０）を含み、
前記アドレス空間の前記第１の部分は、前記順序の前記複数のバンク（６１０，６２０，６３０，６４０）間で分散された所定数のデータ要素の複数のグループ（Ａ〜Ｆ，Ｉ〜Ｐ）を含み、
前記アドレス空間の前記第２の部分は、前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、
グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第２のバンク（６４０）の後の第１のバンク（６１０）に配置されている、
請求項１に記載の集積回路（３００）。
【請求項７】
前記メモリコントローラ（３４０）は、第１のチャネル（７１０）及び第２のチャネル（７２０）を用いて前記アドレス空間（７００）を形成し、前記第１のチャネル（７１０）は複数のバンク（７１１〜７１８）を含み、
前記メモリコントローラ（３４０）は、前記第１のチャネル（７１０）の前記複数のバンク（７１１〜７１８）間で特定のデータ要素（７３０）を分散させ、
前記メモリコントローラ（３４０）は、前記第２のチャネル（７２０）の前記データ要素（７３０）に関する信頼性データ（７４０）にアクセスする、
請求項１に記載の集積回路（３００）。
【請求項８】
前記メモリアクセスを生成し、前記メモリアクセスを前記メモリコントローラ（３４０）に提供するためのメモリアクセス生成回路（３２０）をさらに備える、
請求項１に記載の集積回路（３００）。
【請求項９】
前記メモリアクセス生成回路（３２０）は中央処理装置コア（３２２）を含む、
請求項８に記載の集積回路（３００）。
【請求項１０】
前記メモリアクセス生成回路（３２０）及び前記メモリコントローラは、単一の集積回路ダイ（３１０）上に結合されている、
請求項８に記載の集積回路（３００）。
【請求項１１】
前記メモリ（３５０）は複数のメモリチップ（３５２，３５４，３５６，３５８）を含む、
請求項１０に記載の集積回路（３００）。
【請求項１２】
前記信頼性データは、前記データ要素の各々に関する少なくとも１つのＥＣＣを含む複数の誤り訂正符号（ＥＣＣ）を含む、
請求項１に記載の集積回路（３００）。
【請求項１３】
前記信頼性データは、前記データ要素の各々に関する少なくとも１つのＣＲＣを含む複数の巡回冗長検査（ＣＲＣ）符号を含む、
請求項１に記載の集積回路（３００）。
【請求項１４】
前記メモリ（３５０）は、複数のバンクをそれぞれ有する複数のメモリチップ（３５２，３５４，３５６，３５８）を含む、
請求項１に記載の集積回路（３００）。
【請求項１５】
前記複数のメモリチップ（３５２，３５４，３５６，３５８）はメモリチップスタック（１４０，２４０）を含む、
請求項１に記載の集積回路（３００）。
【請求項１６】
メモリ（３５０）のアドレス空間（４００，５００，６００，７００）内のデータ要素に関するメモリアクセスを生成するためのメモリアクセス生成回路（３２０）と、
受信したメモリアクセスに応じて前記アドレス空間（４００，５００，６００，７００）にアクセスするために、前記メモリ（３５０）に接続されたメモリコントローラ（３４０）と、を備え、
前記メモリコントローラ（３４０）は、前記アドレス空間（４００，５００，６００，７００）の第１の部分内の複数のデータ要素と、前記アドレス空間（４００，５００，６００，７００）の第２の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする、
集積回路（３００）。
【請求項１７】
前記アドレス空間（４００）の前記第１の部分は、第１のアドレスの連続する部分（４１２）を含み、
前記アドレス空間の前記第２の部分は、第２のアドレスの連続する部分（４１４）を含む、
請求項１６に記載の集積回路（３００）。
【請求項１８】
前記アドレス空間（４００）は、複数のバンク（４１０，４２０，４３０，４４０）を含み、
前記第１のアドレスの連続する部分（４１２）は、前記アドレス空間（４００）の上位に存在し、
前記第２のアドレスの連続する部分（４１４）は、前記アドレス空間（４００）の下位に存在する、
請求項１７に記載の集積回路（３００）。
【請求項１９】
前記アドレス空間（５００）は、複数のバンク（５１０，５２０，５３０，５４０）を含み、
前記アドレス空間（５００）の前記第１の部分は、前記複数のバンク（５１０）のうち１つのバンクの第１のアドレスの連続する部分（５１２）を含み、
前記アドレス空間（５００）の前記第２の部分は、前記複数のバンク（５１０）のうち前記１つのバンクの第２のアドレスの連続する部分（５１４）を含む、
請求項１６に記載の集積回路（３００）。
【請求項２０】
前記第１のアドレスの連続する部分（５１２）は、前記複数のバンク（５１０）のうち前記１つバンクの第１のアドレス空間の上位に存在し、
前記アドレスの第２の連続する部分（５１４）は、前記複数のバンク（５１０）のうち前記１つのバンクの前記第１のアドレス空間の下位に存在する、
請求項１９に記載の集積回路（３００）。
【請求項２１】
前記アドレス空間（６００）は、前記アドレス空間（６００）内で順序を有する複数のバンク（６１０，６２０，６３０，６４０）を含み、
前記アドレス空間の前記第１の部分は、前記順序の前記複数のバンク（６１０，６２０，６３０，６４０）間で分散された所定数のデータ要素の複数のグループ（Ａ〜Ｆ，Ｉ〜Ｐ）を含み、
前記アドレス空間の前記第２の部分は、前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、
グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第２のバンクの後の第１のバンクに配置されている、
請求項１６に記載の集積回路（３００）。
【請求項２２】
前記メモリコントローラ（３４０）は、第１のチャネル（７１０）及び第２のチャネル（７２０）を用いて前記アドレス空間（７００）を形成し、前記第１のチャネル（７１０）は複数のバンク（７１１〜７１８）を含み、
前記メモリコントローラ（３４０）は、前記第１のチャネル（７１０）の前記複数のバンク（７１１〜７１８）間で特定のデータ要素（７３０）を分散させ、
前記メモリコントローラ（３４０）は、前記第２のチャネル（７２０）の前記データ要素（７３０）に関する信頼性データ（７４０）にアクセスする、
請求項１６に記載の集積回路（３００）。
【請求項２３】
データ要素に関する書き込みアクセスをリクエスタ（３２０）から受信すること（８１０）と、
前記データ要素に関する信頼性データを計算すること（８２０）と、
前記データ要素をアドレス空間（４００，５００，６００，７００）の第１の部分に格納し（８３０）、前記信頼性データを前記アドレス空間（４００，５００，６００，７００）の第２の部分に格納すること（８４０）と、
を含む、方法。
【請求項２４】
前記データ要素に関する読み出しアクセスを前記リクエスタ（３２０）から受信すること（９１０）と、
前記データ要素を前記アドレス空間（４００，５００，６００，７００）の前記第１の部分から読み出すこと（９２０）と、
前記信頼性データが適正に読み出されたか否かを判定すること（９３０）と、
をさらに含む、請求項２３に記載の方法。
【請求項２５】
前記判定すること（９３０）は、
計算された信頼性データを生成するために、前記アドレス空間（４００，５００，６００，７００）の前記第１の部分から読み出された前記データ要素に関する信頼性データを計算すること（９３２）と、
格納された信頼性データを生成するために、前記アドレス空間（４００，５００，６００，７００）の前記第２の部分に格納された前記信頼性データを読み出すこと（９３４）と、
前記計算された信頼性データを、前記格納された信頼性データと比較すること（９３６）と、
を含む、請求項２４に記載の方法。
【請求項２６】
前記格納された信頼性データが前記計算された信頼性データと一致する場合に、前記データ要素を前記リクエスタ（３２０）に戻すこと（９４２）と、
前記格納された信頼性が前記計算された信頼性データと一致しない場合に、前記信頼性データを訂正することができるか否かを判定すること（９４４）と、
前記信頼性データを訂正することができる場合に、前記データを訂正して（９４６）、訂正されたデータを前記リクエスタ（３２０）に戻すこと（９４８）と、
前記信頼性データを訂正することができない場合に、前記リクエスタ（３２０）にエラーを報告すること（９５０）と、
をさらに含む、請求項２５に記載の方法。
【請求項２７】
前記格納すること（８３０，８４０）は、
前記アドレス空間（４００）を、第１のアドレスの連続する部分（４１２）と第２のアドレスの連続する部分（４１４）とに分割することと、
前記データ要素を前記第１のアドレスの連続する部分（４１２）に格納することと、
前記信頼性データを前記第２のアドレスの連続する部分（４１４）に格納することと、
を含む、請求項２３に記載の方法。
【請求項２８】
前記格納すること（８３０，８４０）は、
前記アドレス空間（５００）を、バンク（５１０）の第１のアドレスの連続する部分（５１２）と前記バンク（５１０）の第２のアドレスの連続する部分（５１４）とに分割することと、
前記データ要素を、前記バンク（５１０）の前記第１のアドレスの連続する部分（５１２）に格納することと、
前記信頼性データを、前記バンク（５１０）の前記第２のアドレスの連続する部分（５１２）に格納することと、
を含む、請求項２３に記載の方法。
【請求項２９】
前記格納すること（８３０，８４０）は、
前記アドレス空間（６００）を、前記アドレス空間（６００）内で順序を有する複数のバンク（６１０，６２０，６３０，６４０）間で分割することと、
前記アドレス空間の前記第１の部分を、前記順序の前記複数のバンク（６１０，６２０，６３０，６４０）間で分散された所定数のデータ要素の複数のグループ（Ａ〜Ｆ，Ｉ〜Ｐ）として形成することと、
前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含む前記アドレス空間の前記第２の部分を形成することと、を含み、
グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第２のバンク（６４０）の後の第１のバンク（６１０）に配置されている、
請求項２３に記載の方法。
【請求項３０】
前記格納すること（８３０，８４０）は、
第１のチャネル（７１０）及び第２のチャネル（７２０）を用いて前記アドレス空間（７００）を形成することであって、前記第１のチャネル（７１０）は複数のバンク（７１１〜７１８）を含む、ことと、
前記第１のチャネル（７１０）の前記複数のバンク（７１１〜７１８）間で前記データ要素（７３０）を分散させることと、
前記データ要素（７３０）に関する前記信頼性データ（７４０）を前記第２のチャネル（７２０）に格納することと、
を含む、請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、集積回路に関し、より詳細には、メモリコントローラを有する集積回路に関する。
【背景技術】
【０００２】
消費者は、より高性能、かつ、より低コストのコンピュータシステムを要求し続けている。より高性能という要件に対処するために、コンピュータチップの設計者は、単一のチップ上に複数のプロセッサコアを有する集積回路を開発した。また、マルチコア集積マイクロプロセッサ及び関連するメモリチップを単一のコンポーネントとしてパッケージした種々のダイスタックド集積技術が開発されている。しかしながら、メモリチップは、種々の障害状態に陥りやすい。スタックドダイ構成で用いられるメモリチップでは、永続的な障害が起こる場合に、スタック内の全ての他のチップを交換せずに、メモリチップを容易に交換することはできない。
【発明の概要】
【課題を解決するための手段】
【０００３】
アドレス空間を有するメモリと、受信したメモリアクセスに応じてアドレス空間にアクセスするために、メモリに接続されたメモリコントローラと、を含む集積回路が提供される。メモリコントローラは、前記アドレス空間の第１の部分内の複数のデータ要素と、前記アドレス空間の第２の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする。
【０００４】
メモリアクセス生成回路と、メモリコントローラと、を含む集積回路も提供される。メモリアクセス生成回路は、メモリのアドレス空間におけるデータ要素に関するメモリアクセスを生成する。メモリコントローラは、受信したメモリアクセスに応じてアドレス空間にアクセスするために、メモリに接続されている。メモリコントローラは、アドレス空間の第１の部分内の複数のデータ要素と、アドレス空間の第２の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする。
【０００５】
第１のデータ要素に関する書き込みアクセスをリクエスタから受信する方法が提供される。信頼性データはデータ要素に関して計算される。データ要素はアドレス空間の第１の部分に格納され、信頼性データはアドレス空間の第２の部分に格納される。
【図面の簡単な説明】
【０００６】
【図１】いくつかの実施形態に係る物理的メモリを実装する第１のマルチチップモジュールの斜視図である。
【図２】いくつかの実施形態に係る物理的メモリを実装する第２のマルチチップモジュールの斜視図である。
【図３】いくつかの実施形態に係る高信頼性メモリコントローラを有する集積回路を示すブロック図である。
【図４】いくつかの実施形態に係る図３のメモリのアドレス空間の表現を示す図である。
【図５】いくつかの実施形態に係る図３のメモリのアドレス空間の別の表現を示す図である。
【図６】いくつかの実施形態に係る図３のメモリのアドレス空間の別の表現を示す図である。
【図７】いくつかの実施形態に係る図３のメモリのアドレス空間の別の表現を示す図である。
【図８】いくつかの実施形態に係るデータを書き込む方法のフロー図である。
【図９】いくつかの実施形態に係るデータを読み出す方法のフロー図である。
【発明を実施するための形態】
【０００７】
以下の説明では、異なる図面における同じ符号の使用は、同様の又は同一のアイテムを示す。特に言及されない限り、「結合される」という用語及びこれに関連する動詞形は、当該技術分野では周知の手段による直接接続および間接電気接続の両方を含み、特に言及されない限り、直接接続についてのどの説明も、適切な形態の間接電気接続を同様に用いる代替的な実施形態を意味する。
【０００８】
図１は、いくつかの実施形態に係る物理的メモリを実装する第１のマルチチップモジュールの斜視図である。マルチチップモジュール１００は、概して、マルチコアプロセッサチップ１２０と、メモリチップスタック１４０と、を含む。メモリチップスタック１４０は、積層された複数のメモリチップを含む。図１に示すように、メモリチップスタック１４０は、メモリチップ１４２と、メモリチップ１４４と、メモリチップ１４６と、メモリチップ１４８と、を含む。一般に、メモリチップスタック１４０は、図１に示されるよりも多い又は少ないメモリチップを含んでもよいことに留意されたい。メモリチップスタック１４０の各メモリチップは、適正なシステム動作のために所望によりメモリチップスタック１４０内の他のメモリチップに接続されている。また、メモリチップスタック１４０の各メモリチップは、適正なシステム動作のために所望によりマルチコアチップ１２０に接続されている。
【０００９】
マルチチップモジュール１００のコンポーネントは、動作中に、単一の集積回路パッケージとして組み合わされ、メモリチップスタック１４０およびマルチコアチップ１２０は、ユーザからは単一の集積回路のように見える。マルチコアチップ１２０へのメモリチップスタック１４０の電気接続は、水平相互接続と組み合わせた垂直相互接続（例えば、バイア又はシリコンスルーホール）を用いて実現される。マルチコアプロセッサダイ１２０は、メモリチップスタック１４０のメモリチップより厚く形成されており、メモリチップスタック１４０を物理的に支持する。マルチチップモジュール１００は、５つのチップの各々と比べた場合に、概してコンポーネントアクセス時間を減少させ、かつ、システム性能を増加させながら、システムコストおよび広いスペースを節約する。しかしながら、メモリチップは、種々の信頼性問題に陥る。例えば、環境内で自然発生し又は半導体パッケージング材料から放出されるアルファ粒子などのバックグラウンド放射線は、ビットセルに当たって値を乱すことがある。メモリの繰り返し使用も他の障害を引き起こすことがある。例えば、特定の重要なデバイスにおけるエレクトロマイグレーションは、当該デバイスの摩耗を引き起こすことがあり、当該デバイスは事実上より薄くなり、これにより当該デバイスの抵抗が増加し、最終的にはタイミング誤差を引き起こし、不正確な値が読み出されることになる。他のタイプの障害も起こりうる。メモリチップが故障した場合、故障したメモリチップを交換する実用的な方法が存在しない。代わりに、ユーザは、まだ機能しているメモリ及びプロセッサチップの全てを含むパッケージ全体を交換しなければならず、これは効果なオプションとなる。
【００１０】
図２は、いくつかの実施形態に係る物理的メモリを実装する第２のマルチチップモジュール２００の斜視図である。マルチチップモジュール２００は、概して、インターポーザ２１０と、マルチコアプロセッサチップ２２０と、メモリチップスタック２４０と、を含む。インターポーザ２１０は、マルチコアチップ２２０のアクティブ側に接続されている。メモリチップスタック２４０は、積層された複数のメモリチップを含む。図２に示すように、メモリチップスタック２４０は、メモリチップ２４２と、メモリチップ２４４と、メモリチップ２４６と、メモリチップ２４８と、を含む。一般に、メモリチップスタック２４０は、図２に示すよりも多い又は少ないメモリチップを含んでもよいことに留意されたい。メモリチップスタック２４０の各々のメモリチップは、適正なシステム動作のために所望によりメモリチップスタック２４０の他のメモリチップに接続されている。また、メモリチップスタック２４０各々の各メモリチップは、適正なシステム動作のために所望によりマルチコアチップ２２０に接続されている。いくつかの実施形態では、メモリチップスタック２４０は単一のメモリチップを含む。いくつかの実施形態では、マルチチップモジュール２００は、メモリチップスタック２４０のように、１つよりも多いメモリチップのスタックを含む。
【００１１】
マルチチップモジュール２００のコンポーネントは、動作中に、単一のパッケージ（図２には図示せず）として組み合わされ、これにより、メモリチップスタック２４０およびマルチコアチップ２２０は、ユーザからは単一の集積回路のように見える。マルチコアチップ２２０へのメモリチップスタック２４０の電気接続は、水平相互接続と組み合わせた垂直相互接続（例えばバイア又はシリコンスルーホール）を用いて実現される。インターポーザ２１０は、メモリチップスタック２４０の各々のメモリチップと、マルチコアチップ２２０との接続を容易にするために、物理的支持およびインターフェースの両方を提供する。５つのチップの各々と比べた場合に、マルチチップモジュール２００は、概してコンポーネントアクセス時間を減少させ、かつ、システム性能を増加させながら、システムコストおよび広いスペースを節約する。マルチチップモジュール２００は、マルチコアプロセッサ２２０からメモリチップスタック２４０を分離し、これにより、マルチコアプロセッサ２２０のより良好な冷却を可能にする。しかしながら、マルチチップモジュール２００は、パッケージ全体を交換せずに、欠陥のあるメモリチップを容易に交換することができないので、信頼性問題及びサービス性問題に悩まされる。
【００１２】
図３は、いくつかの実施形態に係る高信頼性メモリコントローラを有する集積回路３００を示すブロック図である。集積回路３００は、概して、単一の集積回路ダイ上に実装されたマルチコアプロセッサ３１０と、メモリ３５０と、を含む。
【００１３】
マルチコアプロセッサ３１０は、メモリアクセス生成回路３２０と、キュー３３２と、クロスバースイッチ（ＸＢＡＲ）３３４と、高速入力／出力（Ｉ／Ｏ）コントローラ３３６と、メモリコントローラ３４０と、を含む。メモリアクセス生成回路３２０は、「ＣＰＵ０」と表記された中央処理装置（ＣＰＵ）コア３２２と、「ＣＰＵ１」と表記されたＣＰＵコア３２４と、を含む。ＣＰＵコア３２２，３２４は、メモリアクセスを行うとともに、メモリアクセスを定義するアドレス、データ及び制御信号を送受信する。キュー３３２は、ＣＰＵコア３２２と、ＣＰＵコア３２４と、ＸＢＡＲ３３４と、に接続されている。ＸＢＡＲ３３４は、高速Ｉ／Ｏコントローラ３３６と、メモリコントローラ３４０と、に接続されている。高速Ｉ／Ｏコントローラ３３６は、「Ｉ／Ｏ」と表記された周辺装置（図３には示されていない）に対して外部信号のセットを送受信するために、入力／出力（Ｉ／Ｏ）ポートを有している。
【００１４】
メモリコントローラ３４０は、誤り訂正符号（ＥＣＣ）／巡回冗長符号（ＣＲＣ）計算（「ｃｏｍｐ」）回路３４２と、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）スケジューラ３４４と、物理的インターフェース（ＰＨＹ）３４６と、を含む。ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２及びＤＲＡＭスケジューラ３４４の各々は、ＰＨＹ３４６に接続されている。ＰＨＹ３４６は、「制御」と表記された信号のセットを提供するための出力と、「ＢＡ」と表記されたバンクアドレス信号のセットを提供するための出力と、「アドレス」と表記された信号のセットを提供するための出力と、「データ」と表記された信号のセットを送受信するためのＩ／Ｏポートと、を有している。
【００１５】
メモリ３５０は、アドレス空間を画定し、ＤＲＡＭ３５２と、ＤＲＡＭ３５４と、ＤＲＡＭ３５６と、ＤＲＡＭ３５８と、を含む複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップを含む。メモリ３５０は、図１のメモリチップスタック１４０又は図２のメモリチップスタック２４０の何れかによって実装されてもよい。ＤＲＡＭ３５２，３５４，３５６，３５８は、ＪＥＤＥＣによって公開されたＤＤＲ３ダブルデータレート（ＤＤＲ）規格に準拠しているが、他の実施形態では、他のＤＤＲ規格及び非ＤＤＲ規格に準拠してもよい。概して、ＤＤＲチップの各々は、メモリバンクのセットを有している。メモリ３５０の各ＤＲＡＭチップは、制御を受信するための入力と、ＢＡを受信するための入力と、アドレスを受信するための入力と、データを送受信するためのＩ／Ｏポートと、を有している。
【００１６】
ＣＰＵコア３２２およびＣＰＵコア３２４の両方は、動作中に、１つ以上のプログラムに対応する命令をフェッチする機能と、当該命令を実行する機能と、メモリアクセス要求をキュー３３２に提供することによって当該命令に関連するデータにアクセスする機能と、を有している。キュー３３２は、Ｉ／Ｏコントローラ３３６又はメモリコントローラ３４０にディスパッチするために、アクセスを記憶する。キュー３３２は、データアクセスに対して、先入れ先出し方式で優先順位を付ける。
【００１７】
ＸＢＡＲ３３４は、メモリアクセス生成回路３２０と、キュー３３２と、高速Ｉ／Ｏコントローラ３３６と、メモリコントローラ３４０と、を含むマルチコアプロセッサ３１０の回路、および、これらに関連したバスを切り換えるとともに多重化する。高速Ｉ／Ｏコントローラ３３６は、ＸＢＡＲ３３４と、イーサネット（登録商標）コントローラなどの外部回路との間の接続を提供する。
【００１８】
メモリコントローラ３４０は、メモリアクセス要求に応じて、メモリ３５０のアドレス空間内の記憶位置にアクセスする。メモリコントローラ３４０は、正常なデータと、データに関する特別な信頼性情報と、を標準的な既製のメモリチップに格納することによって、高い信頼性を保証する。信頼性データ情報は、ビットエラーの検出と、当該ビットエラーの可能な訂正と、を可能にする。メモリコントローラ３４０は、信頼性データを、低コストコモディティのメモリに格納することによって、マルチコアプロセッサ３１０が低価格のマルチチップモジュールのスタックドダイと一体化されるのを可能にする。
【００１９】
以下により詳細に説明されるように、メモリコントローラ３４０は、アドレス空間の第１の部分におけるデータ要素と、アドレス空間の第２の部分における前記データ要素に対応する信頼性データと、にアクセスする。メモリコントローラ３４０は、メモリ３５０に格納する信頼性データを、ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２を用いて生成し、その後、格納された信頼性データに対してチェックを行うために、信頼性データを計算する。ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２は、ＤＲＡＭスケジューラ３４４によってアクセスされたデータを、信頼性データを用いてチェックし、適切な場合には、当該データのエラーを選択的に訂正し、訂正されたデータを、リクエストしているＣＰＵに転送する。
【００２０】
ＰＨＹ３４６は、ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２及びＤＲＡＭスケジューラ３４４の、マルチバンクメモリ３５０へのインターフェースを提供する。ＰＨＹ３４６は、データにアクセスするために、標準的な制御信号、ＢＡ信号及びアドレス信号を、メモリ３５０に提供する。概して、メモリコントローラ３４０は、読み出しアクセス要求に応じて、アドレス空間の第１の部分からデータ要素を読み出し、アドレス空間の第２の部分から信頼性データを読み出すように、ＰＨＹ３４６を制御する。ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２は、受信したデータに基づいて信頼性を生成し、メモリコントローラ３４０は、生成した信頼性データを、検索した信頼性データと比較して、データが適正に読み出されたかどうかを判定する。メモリコントローラ３４０は、書き込みアクセス要求に応じて、データ要素に関する信頼性データを生成するようにＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２を制御し、データ要素をアドレス空間の第１の部分に書き込み、かつ、信頼性データをアドレス空間の第２の部分に書き込むように、ＰＨＹ３４６を制御する。異なるレベルの信頼性をサポートするために、メモリコントローラ３４０がメモリ３５０のアドレス空間を生成及び管理する方法が以下に記載される。
【００２１】
図４は、いくつかの実施形態に係る図３のメモリのアドレス空間４００の表現を示す図である。アドレス空間４００は、概して、「バンク０」と表記されたメモリバンク４１０と、「バンク１」と表記されたメモリバンク４２０と、「バンク２」と表記されたメモリバンク４３０と、「バンク３」と表記されたメモリバンク４４０と、を含む連続したメモリバンクの間でアドレスの連続した部分を含む。
【００２２】
メモリバンク４１０は、「Ａ」と表記された代表的なメモリページ４１２と、「Ｂ」〜「Ｐ」と連続して表記された複数の付加的かつ例示的なメモリページとを含む、複数の４キロバイト（ＫＢ）メモリページを含む。
【００２３】
メモリバンク４２０，４３０，４４０は、同様に、複数の４ＫＢメモリページを含む。ここで、メモリバンク４４０は、連続するデータ部分４４２と、全てのメモリバンクに関する信頼性データを格納するための連続する信頼性部分４４４と、を含む。信頼性部分４４４は、「Ｅ０」と表記された代表的なメモリページ４４６と、「Ｅ１」と表記された代表的なメモリページと、を含む。メモリページ４４６は、メモリページＡ〜Ｈのデータ要素に対応する、「ＥＡ」〜「ＥＨ」と連続して表記された信頼性データを含む。
【００２４】
メモリコントローラ３４０は、動作中に、アドレス空間４００の第１の部分（例えば、最上位、又は、より下位のアドレス）におけるデータ要素にアクセスし、かつ、アドレス空間４００の第２の部分（例えば、最下位、又は、より上位のアドレス）、すなわち信頼性部分４４４における、データ要素に対応する信頼性データにアクセスする。例えば、メモリバンク４１０は、４ＫＢメモリページに編成されている。図４は、アドレスの連続する部分における代表的なページＡ〜Ｈを示している。メモリバンク４４０において、メモリコントローラ３４０は、アドレスの連続する部分４４４内のページＡ〜Ｈのデータグループに対応する信頼性データＥＡ〜ＥＨを含む信頼性データグループＥ０に関する１つの４ＫＢメモリページ４４６にアクセスする。
【００２５】
同様に、メモリコントローラ３４０は、メモリバンク４１０において、アドレスの連続する部分におけるページＩ〜Ｐのデータグループに関する８つの４ＫＢメモリページにアクセスする。また、メモリコントローラ３４０は、メモリバンク４４０において、信頼性部分４４４内のページＩ〜Ｐのデータグループに対応する信頼性データ（図４には具体的に示されていない）を含む信頼性データグループＥ１に関する１つの４ＫＢメモリページにアクセスする。
【００２６】
アドレス空間４００は、アドレス空間４００の端部の連続する部分に信頼性データを配置することによって線形データアドレス空間を提供し、これにより、アドレス空間の「穴（ｈｏｌｅｓ）」を回避する。アドレス空間４００は、種々のタイプの信頼性データをサポートする。例えば、ある規格では、６４のデータビットにつき８の信頼性ビット（合計７２ビット）を有する、例えば（７２，６４）ＳＥＣＤＥＤコードなどの有用なシングルエラー訂正、ダブルエラー検出（ＳＥＣＤＥＤ）コードを規定している。ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２は、ＳＥＣＤＥＤを用いて、シングルエラーを検出及び訂正し、かつ、ダブルエラーを検出するが訂正しない機能を有する。他の周知のコードに関して、ＥＣＣ／ＣＲＣ  ｃｏｍｐ回路３４２は、２つ以上のエラーを検出及び／又は訂正する機能を有する。アドレス空間４００は、システムの信頼性のニーズに基づき使用される信頼性コードのタイプに基づいて、信頼性部分４４４のサイズが変更されるのを可能にする。
【００２７】
しかしながら、メモリコントローラ３４０は、全ての信頼性データを単一のメモリバンクに配置することによって、いくつかのシステムのアクセス待ち時間を、許容できないほど増加させる場合がある。例えば、複数のバンクにおいてページを同時に開いた状態に維持するシステムでは、メモリコントローラ３４０が単一のバンク４４０と異なるバンクへのアクセスのために信頼性データにアクセスする場合に、信頼性部分４４４へのアクセスが「ボトルネック」を引き起こす。マルチコアプロセッサ３１０は、このボトルネックを補償するために、他の機構を組み込むことが可能である点に留意されたい。例えば、メモリコントローラ３４０又はメモリアクセス生成回路３２０などの回路は、信頼性データをプリフェッチし、信頼性データをローカルキャッシュに格納することができる。以下により十分に述べられるように、メモリコントローラ３４０は、１つよりも多いシングルバンクに信頼性データを分散させることによって、信頼性データにアクセスするための待ち時間を補償することができ、又は、データ要素及び信頼性データをメモリバンク間で交互に格納することもできる。
【００２８】
図５は、いくつかの実施形態に係る図３のメモリのアドレス空間５００の別の表現を示す図である。アドレス空間５００は、概して、「バンク０」と表記されたメモリバンク５１０と、「バンク１」と表記されたメモリバンク５２０と、「バンク２」と表記されたメモリバンク５３０と、「バンク３」と表記されたメモリバンク５４０と、を含む連続したメモリバンクの間でアドレスの連続した部分を含む。
【００２９】
メモリバンク５１０は、「Ａ」〜「Ｄ」と連続して表記された４つの代表的なメモリページ５１６を含む、連続するデータ部分５１２内の複数のメモリページを含む。また、バンク５１０は、信頼性部分５１４内のメモリページを含む。信頼性部分５１４内の各ページは、メモリページＡ〜Ｄのデータ要素に対応する、「ＥＡ」と表記された代表的な信頼性データ５１８と「ＥＢ」〜「ＥＤ」と連続して表記された信頼性データとを含む、信頼性データを含む。また、同様に、メモリバンク５２０，５３０，５４０の各々は、データ部分５２２，５３２，５４２と信頼性部分５２４，５３４，５４４とを含む。信頼性部分５２４，５３４，５４４内の各ページは、それぞれデータ部分５２２，５３２，５４２内のデータ要素に対応する信頼性データを含む。
【００３０】
メモリコントローラ３４０は、動作中に、各メモリバンクの第１の部分内のデータ要素と、同じメモリバンクの第２の部分内のデータ要素に対応する信頼性データとにアクセスする。例えば、メモリコントローラ３４０は、データ部分５１０のメモリページ５１６内のデータ要素Ａ，Ｂ，Ｃ，Ｄと、信頼性部分５１４のメモリページ５１８内の信頼性データＥＡ〜ＥＤとにアクセスする。これにより、メモリコントローラ３４０は、データと、当該データに対応する信頼性データとを、単一のメモリバンクに格納する。同様に、メモリコントローラ３４０は、データ部分５２２，５３２，５４２内のデータ要素のために、メモリバンク５２０，５３０，５４０にアクセスする。また、メモリコントローラ３４０は、信頼性部分５２４，５３４，５４４内の信頼性データのために、メモリバンク５２０，５３０，５４０にアクセスする。
【００３１】
全体として、アドレス空間５００は、メモリバンク５１０〜５４０間で分散された不連続のデータ部分と、同様にメモリバンク５１０〜５４０間で分散された不連続の信頼性部分と、を有する。メモリコントローラ３４０は、メモリバンクの最初の（１００−Ｘ）％からデータ要素にアクセスし、かつ、同じメモリバンクの最後のＸ％から信頼性データにアクセスする。例えば、メモリコントローラ３４０が（６４，７２）ＳＥＣＤＥＤコードを用いる場合には、Ｘ＝１２．５％である。アドレス空間５００は、単一の線形データ空間を含まないが、信頼性データを、対応するデータと同じメモリバンクに配置することによって、メモリ空間５００は、図４のメモリ空間４００に関連したボトルネックを回避する。
【００３２】
図６は、いくつかの実施形態に係る図３のメモリのアドレス空間６００の別の表現を示す図である。アドレス空間６００は、概して、「バンク０」と表記されたメモリバンク６１０と、「バンク１」と表記されたメモリバンク６２０と、「バンク２」と表記されたメモリバンク６３０と、「バンク３」と表記されたメモリバンク６４０と、を含む連続したメモリバンクの間でアドレスの連続する部分を含む。
【００３３】
アドレス空間６００は、「Ａ」〜「Ｒ」と表記された代表的なメモリ列を含む複数のメモリ列であって、データを格納し、かつ、４つのメモリバンク間で分散された複数のメモリ列を含む。また、アドレス空間６００は、データに関する信頼性コードを格納する複数のメモリ列であって、メモリバンク間で分散され、かつ、データ要素を有する列とインターリーブされる複数のメモリ列を含む。これらの列の各々は、他の列のデータ要素に対応する信頼性データを有する。
【００３４】
特に、メモリバンク６１０は列６１１〜６１５を含み、メモリバンク６２０は列６２１〜６２５を含み、メモリバンク６３０は列６３１〜６３５を含み、メモリバンク６４０は列６４１〜６４５を含む。アドレス空間６００において、データはメモリバンク間で分散される。したがって、データ要素Ａはバンク６１０の列６１１に格納され、データ要素Ｂはバンク６２０の列６２１に格納され、データ要素Ｈがバンク６４０の列６４２に格納されるまで同様である。ここで、８つのデータ要素がこの方法で列に分散された後に、列に対応する信頼性データのセットが格納される。したがって、メモリバンク６１０は、列Ａ〜Ｈのデータ要素に対応する「ＥＡ〜ＥＨ」と表記された信頼性データを列６１３に含む。
【００３５】
バンク６１０〜６４０は、データ要素Ｉを格納するバンク６２０の列６２３で始まり、データ要素Ｊを格納するバンク６３０の列６３３、データ要素Ｐを格納するバンク６１０の列６１５まで同様の連続した位置に、８つの後続のデータ要素Ｉ〜Ｐを格納する。メモリバンク６２０の列６２５は、列Ｉ〜Ｐ内のデータ要素に対応する「ＥＩ〜ＥＰ」と表記された信頼性データを格納する。
【００３６】
メモリコントローラ３４０は、動作中に、アドレス空間６００内の連続したメモリバンク６１０〜６４０間で、データ要素を、当該データ要素に対応する信頼性データとインターリーブする。メモリコントローラ３４０は、連続してアドレス指定されたある数のデータ要素を有するデータグループの各データ要素を、複数のバンクのうち連続したバンク間で格納し、かつ、グループの全てのデータ要素に関する信頼性データを、次の連続したバンクに格納する。例えば、メモリコントローラ３４０は、メモリバンク６１０〜６４０間の列６１１，６２１，６３１，６４１，６１２，６２２，６３２，６４２内の第１の８つのデータグループに水平にアクセスする。メモリコントローラ３４０は、列Ａ〜Ｈ内の第１の８つのデータグループに対応する信頼性データを格納する列６１３であって、８番目のデータグループの後の列６１３に配置された信頼性データＥＡ〜ＥＨにアクセスする。また、メモリコントローラ３４０は、メモリバンク６１０〜６４０間の列６２３，６３３，６４３，６１４，６２４，６３４，６４４，６１５内の第２の８つのデータグループに水平にアクセスする。また、メモリコントローラ３４０は、列Ｉ〜Ｐ内の第２の８つのデータグループに対応する信頼性データを格納する列６２５であって、第２の８つのデータグループの後の列６２５内の信頼性データＥＩ〜ＥＰにアクセスする。
【００３７】
連続したメモリバンク間で、データ要素を、当該データ要素に対応する信頼性データとインターリーブすることによって、メモリコントローラ３４０は、特定のメモリアクセスに関する信頼性データが、対応するデータを格納するメモリバンクと同じメモリバンクに格納されることになる機会を低減する。ＤＤＲ  ＤＲＡＭでは、新しいページにアクセスする前に、バンクにプレチャージコマンドを発行することによって前のページが閉じられなければならず、かつ、アクティブ化コマンドを発行することによって新しいページが開かれなければならない。したがって、データと当該データに対応する信頼性データとが同じバンクに格納されることになる確率を低減させることによって、アドレス空間６００は、データ及び当該データに対応する信頼性データにアクセスするのに必要な平均時間を減少させる。
【００３８】
図７は、いくつかの実施形態に係る図３のメモリのアドレス空間７００の別の表現を示す図である。アドレス空間７００は、概して、「チャネル０」と表記されたメモリチャネル７１０と、「チャネル１」と表記されたメモリチャネル７２０と、データ要素７３０と、信頼性データ７４０と、を含む。メモリチャネル７１０は、「バンク０」〜「バンク７」と連続して表記されたメモリバンク７１１〜７１８を含む複数のメモリバンクを含む。
【００３９】
メモリバンク７１１は、データバイト「Ａ［７］」〜「Ａ［０］」を含む「Ａ」と表記されたデータグループを含む。メモリバンク７１２〜７１８の各々は、８バイトを有し、かつ、メモリバンク７１１と同様の態様で配列されたデータグループを含む。メモリバンク７１２は、データバイト「Ｂ［７］」〜「Ｂ［０］」を含む「Ｂ」と表記されたデータグループを含む。メモリバンク７１３は、データバイト「Ｃ［７］」〜「Ｃ［０］」を含む「Ｃ」と表記されたデータグループを含む。メモリバンク７１４は、データバイト「Ｄ［７］」〜「Ｄ［０］」を含む「Ｄ」と表記されたデータグループを含む。メモリバンク７１５は、データバイト「Ｅ［７］」〜「Ｅ［０］」を含む「Ｅ」と表記されたデータグループを含む。メモリバンク７１６は、データバイト「Ｆ［７］」〜「Ｆ［０］」を含む「Ｆ」と表記されたデータグループを含む。メモリバンク７１７は、データバイト「Ｇ［７］」〜「Ｇ［０］」を含む「Ｇ」と表記されたデータグループを含む。メモリバンク７１８は、データバイト「Ｈ［７］」〜「Ｈ［０］」を含む「Ｈ」と表記されたデータグループを含む。
【００４０】
メモリチャネル７２０は、「バンク０」と表記された代表的なメモリバンク７２１と、「バンク１」と表記された代表的なメモリバンクとを含む、複数のさらなるメモリバンクを含む。メモリバンク７２１は、「ＥＣＣコンポーネント」と表記された信頼性データコンポーネントを含む。
【００４１】
データ要素７３０は、８つの代表的なデータバイトであるコンポーネント［０］〜コンポーネント［７］を含む。
【００４２】
メモリコントローラ３４０は、動作中に、メモリチャネル７１０間でデータ要素７３０の一部をインターリーブし、データ要素７３０に関する信頼性データを、さらなるメモリバンク７２１に格納する。例えば、メモリコントローラ３４０は、データ要素７３０のコンポーネント［０］をバンク７１１のＡ［０］に格納し、データ要素７３０のコンポーネント［１］をバンク７１２のＢ［０］に格納し、データ要素７３０のコンポーネント［２］をバンク７１３のＣ［０］に格納し、以降同様に、データ要素７３０のコンポーネント［７］をバンク７１８のＨ［０］に格納する。メモリコントローラ３４０は、データコンポーネント［７］〜データコンポーネント［０］に対応する信頼性データコンポーネント７４０を、さらなるメモリバンク７２１のバイト位置［０］に格納する。
【００４３】
メモリチャネルのバンク間でデータ要素のバイトをインターリーブし、信頼性データバイトをさらなるメモリチャネルのバンクに格納することによって、メモリコントローラ３４０は、単一のバンクが故障した場合のデータの復元を可能にする。
【００４４】
しかしながら、メモリコントローラ３４０は、他の十分に機能しているメモリバンクにおいて、故障しているメモリバンクのデータコンポーネントを再度生成する能力を有する。例えば、メモリコントローラ３４０は、データ要素の各コンポーネントをメモリバンクに格納し、各コンポーネントを、さらなるメモリバンクからの信頼性データコンポーネントでカバーするので、故障しているメモリバンクの全てのデータ要素コンポーネントは、さらなるバンクからの関連する信頼性データによってカバーされる。例えば、メモリコントローラ３４０は、ＳＥＣＤＥＤコードを用いて、故障しているバンク内の全てのデータ要素を検出し、訂正し、再度生成する機能を有する。
【００４５】
上記の図４〜図７で開示された構成などの構成を用いることによって、マルチコアプロセッサ３１０は、低価格な既製のメモリを用いて、メモリチップを追加することなく、システムの信頼性、可用性及びサービス性を高める。
【００４６】
図８は、いくつかの実施形態に係るデータを書き込む方法８００のフロー図である。アクションボックス８１０では、データ要素に関する書き込みアクセスをリクエスタから受信する。アクションボックス８２０では、データ要素に関する信頼性データが計算される。アクションボックス８３０では、データ要素がアドレス空間の第１の部分に格納される。アクションボックス８４０では、信頼性データが前記アドレス空間の第２の部分に格納される。
【００４７】
図９は、いくつかの実施形態に係るデータを読み出す方法９００のフロー図である。例えば、図８の方法８００を用いて事前に書き込まれたデータに関する読み出しを行うこともできる。アクションボックス９１０では、データ要素に関する読み出しアクセスをリクエスタから受信する。決定ボックス９２０では、データ要素がアドレス空間の第１の部分から読み出される。アクションボックスのセット９３０では、信頼性データが適正に読み出されたかどうかが判定される。
【００４８】
アクションボックスのセット９３０は、計算された信頼性データを生成するために、アドレス空間の第１の部分から読み出されたデータ要素に関する信頼性データを計算するアクションボックス９３２と、格納された信頼性データを生成するために、アドレス空間の第２の部分に格納された信頼性データを読み出すアクションボックス９３４と、格納された信頼性データを計算された信頼性データと比較するアクションボックス９３６と、をさらに含む。
【００４９】
方法９００を続けると、決定ボックス９４０は、格納された信頼性データが計算された信頼性データと一致するか否かを判定する。格納された信頼性データが計算された信頼性データと一致する場合には、フローは、データ要素をリクエスタに戻すアクションボックス９４２に進む。格納された信頼性が計算された信頼性データと一致しない場合には、フローは、信頼性データを訂正することができるか否かを判定する決定ボックス９４４に進む。信頼性データを訂正することができる場合には、フローは、データを訂正するアクションボックス９４６と、訂正されたデータをリクエスタに戻すアクションボックス９４８と、に進む。信頼性データを訂正することができない場合には、フローは、エラーをリクエスタに報告するアクションボックス９５０に進む。
【００５０】
データ及び対応する信頼性データを格納し、後に取り出すことは、上記の図４〜図７で説明された技術の何れかかを用いて行うことができる。したがって、いくつかの実施形態では、アドレス空間は、第１のアドレスの連続する部分と、第２のアドレスの連続する部分と、に分割され、データ要素は、第２のアドレスの連続する部分に格納され、信頼性データは、第２のアドレスの連続する部分に格納される。いくつかの実施形態では、アドレス空間は、バンクの第１のアドレスの連続する部分と、バンクの第２のアドレスの連続する部分と、に分割され、データ要素は、バンクの第１のアドレスの連続する部分に格納され、信頼性データは、バンクの第２のアドレスの連続する部分に格納される。いくつかの実施形態では、アドレス空間は、アドレス空間内で順序を有する複数のバンク間で分割され、アドレス空間の第１の部分は、当該順序の複数のバンク間で分散された所定数のデータ要素の複数のグループとして形成され、アドレス空間の第２の部分は、複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、グループに関する信頼性データ要素は、当該順序のグループの最後のデータ要素を含む第２のバンクの後の第１のバンクに配置される。いくつかの実施形態では、アドレス空間は、第１のチャネル及び第２のチャネルを用いて形成され、第１のチャネルは複数のバンクを含み、データ要素は、第１のチャネルの複数のバンク間で分散され、データ要素に関する信頼性データは、第２のチャネルに格納される。
【００５１】
図３のメモリコントローラ３４０は、ハードウェア及びソフトウェアの種々の組み合わせと共に実装されてもよく、ソフトウェアコンポーネントは、少なくとも１つのプロセッサによる実行のためにコンピュータ可読記憶媒体に格納されてもよい。さらに、図４〜図７に示されたアドレスマップは、コンピュータ可読記憶媒体に格納されるとともに、メモリコントローラ３４０の機能を実装する少なくとも１つのプロセッサによって実行される命令によって、少なくとも部分的に実装されてもよい。図８及び図９に示された動作の各々は、固定（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）のコンピュータメモリ又はコンピュータ可読記憶媒体に格納された命令に対応してもよい。種々の実施形態では、固定のコンピュータ可読記憶媒体は、磁気ディスク記憶装置、光ディスク記憶装置、例えばフラッシュメモリなどのソリッドステート記憶装置、又は、他の１つ以上の不揮発性メモリデバイスを含む。固定のコンピュータ可読記憶媒体に格納されるコンピュータ可読命令は、１つ以上のプロセッサによって解釈及び／若しくは実行可能なソースコード、アセンブリ言語コード、オブジェクトコード、又は、他の命令フォーマットであってもよい。
【００５２】
さらに、メモリコントローラ３４０及び／又はマルチコアプロセッサ３１０は、データベースの形態のコンピュータがアクセス可能なデータ構造であってもよいし、集積回路３００を製造するためにプログラムによって直接又は間接的に読み出し及び用いることの可能な他のデータ構造によって説明又は表されてもよい。例えば、このデータ構造は、例えばＶｅｒｉｌｏｇ若しくはＶＨＤＬなどの高レベル設計言語（ＨＤＬ）でのハードウェア機能の挙動レベル記述又はレジスタ伝達レベル（ＲＴＬ）記述であってもよい。この記述は、合成ライブラリからのゲートのリストを含むネットリストを生成するために記述を合成し得る合成ツールによって読み出されてもよい。ネットリストは、集積回路３００を含むハードウェアの機能を表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために、配置及びルーティングされてもよい。マスクは、次いで、集積回路３００を製造するために、種々の半導体製造ステップで用いられてもよい。代替的に、コンピュータがアクセス可能な記憶媒体上のデータベースは、所望によりネットリスト（合成ライブラリを有する若しくは有しない）又はデータセットであってもよいし、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００５３】
開示された実施形態の種々の変更が当業者にとって明白となるであろう。本明細書に記載のメモリコントローラは、マルチチップモジュール１００，２００の他にデータ破壊を起こしやすい他の集積回路構成に有用である。例えば、プロセッサ及びメモリチップは、フリップチップ結合を用いてマザーボード基板に直接取り付けられる。メモリコントローラ及びメモリは、同じダイ上に実装することもできるが、高レベルの電磁干渉（ＥＭＩ）を有する環境で用いられることなどによる他の理由でデータ破壊を起こしやすい。メモリチップスタック１４０又はメモリチップスタック２４０は、例えば、個別のＣＰＵメモリ、個別のグラフィックス処理ユニット（ＧＰＵ）メモリ、個別のＡＰＵメモリなどとして、集積回路３００のメインメモリとは個別に実装することができる。ダイスタッキング集積（ｄｉｅ  ｓｔａｃｋｉｎｇ  ｉｎｔｅｇｒａｔｉｏｎ）１００及びダイスタッキング集積２００は、マルチチップモジュール（ＭＣＭ）として実装することができる。代替的に、メモリチップは、共通の基板上にＣＰＵ、ＧＰＵ、ＡＰＵ、メインメモリなどと隣接して同一平面上に配置することができる。マルチチップモジュール１００，２００は４チップメモリチップスタックを含むが、他の実施形態では異なる数のメモリチップを含むこともできる点に留意されたい。
【００５４】
メモリコントローラ３４０は、図３に示すように、マイクロプロセッサダイ上で少なくとも１つのプロセッサコアと一体化することができ、又は、別個のチップとすることができる。いくつかの実施形態では、集積回路３１０は、ＣＰＵを必要としない論理機能などのコンピューティング機能以外の他の全機能を果たすことができる。さらに、図３では、ＣＰＵコア３２２，３２４とは個別のメモリコントローラ３４０が示されているが、メモリコントローラ３４０は、ＣＰＵコア又は他の論理ブロックの内部に形成されてもよい。
【００５５】
メモリコントローラ３４０の動作は、異なるレベルの信頼性及びオーバーヘッドを実装する種々のアドレスマップに関連して説明されている。図４〜図７では、代表的な数のメモリバンクと共にこれらの概念が示されているが、そこで説明された技術は、異なる数のメモリバンクにスケール変更することができる。例えば、メモリ３５０が４つのＤＤＲ３チップと共に実装される場合には、アドレス空間内のメモリバンクの総数は３２となるであろう。
【００５６】
使用され得る信頼性データの例は、パリティビットと、誤り訂正符号ビット（例えば、限定されないが、シングルエラー訂正（ＳＥＣ）、シングルエラー訂正及びダブルエラー検出（ＳＥＣ−ＤＥＤ）、ダブルビットエラー訂正及びトリプルビットエラー検出（ＤＥＣ−ＴＥＤ）、トリプルエラー訂正、クワッドエラー検出（ＴＥＣ−ＱＥＤ）、及び、Ｂｏｓｅ  Ｃｈａｕｄｈｕｒｉ  Ｈｏｃｑｕｅｎｇｈｅｍ（ＢＣＨ）コードなどの線形ブロックコードを含む）と、チェックサム（例えば、ＣＲＣ、メッセージ・ダイジェスト（ＭＤ５））と、を含む。１、２又はそれ以上のレベルのＥＣＣ保護に関するサポートを提供することができ、この場合、システムハードウェア又はソフトウェアは、性能と信頼性のバランスをとるために選択することができる。
【００５７】
メモリ３５０は、ＤＲＡＭ技術に関連して上記で説明されている。しかしながら、メモリ３５０は、他のメモリ技術（例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、相変化メモリ（ＰＣＭ）、例えばメモリスタ及びスピントルク伝達磁気ＲＡＭ（ＳＴＴ−ＭＲＡＭ）などの抵抗式ＲＡＭ技術、並びに、フラッシュメモリ）と共に実装することができる。
【００５８】
上記の図４〜図７に示された実施形態は、８バイトのデータにつき１バイトの信頼性データを用いる。他の実施形態によれば、所与の数のデータバイトに関する信頼性データの量が異なることがある。
【００５９】
図示された実施形態では、メモリコントローラ３４０は、特定のメモリバンクの特定の部分にある信頼性データにアクセスする。いくつかの実施形態によれば、メモリコントローラ３４０は、代替メモリバンクの代替部分にアクセスすることもできる。
【００６０】
いくつかの図示された実施形態では、複数のバンク間でデータ要素を当該データ要素に対応する信頼性データとインターリーブすることを示している。いくつかの実施形態によれば、インターリーブアルゴリズム及びマッピングアルゴリズムを変更することもできる。
【００６１】
いくつかの実施形態では、複数のバンクにわたるアドレスの連続する部分が示されている。他の実施形態によれば、アドレスの部分は、アドレスの不連続の部分とすることもでき、アドレスの穴を含むこともできる。
【００６２】
したがって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を包含することは、添付の請求項によって意図される。
【図１】
2015535101.tif 000003
【図２】
2015535101.tif 000004
【図３】
2015535101.tif 000005
【図４】
2015535101.tif 000006
【図５】
2015535101.tif 000007
【図６】
2015535101.tif 000008
【図７】
2015535101.tif 000009
【図８】
2015535101.tif 000010
【図９】
2015535101.tif 000011
【手続補正書】
【提出日】平成27年6月10日(2015.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アドレス空間（６００）を有するメモリ（３５０）と、
受信したメモリアクセスに応じて前記アドレス空間にアクセスするために、前記メモリ（３５０）に接続されたメモリコントローラ（３４０）と、を備え、
前記メモリコントローラ（３４０）は、前記アドレス空間（６００）の第１の部分内の複数のデータ要素と、前記アドレス空間（６００）の第２の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスし、
前記アドレス空間（６００）は、前記アドレス空間（６００）内で順序を有する複数のバンク（６１０，６２０，６３０，６４０）を含み、
前記アドレス空間（６００）の前記第１の部分は、前記順序の前記複数のバンク（６１０，６２０，６３０，６４０）間で分散された所定数のデータ要素の複数のグループを含み、
前記アドレス空間の前記第２の部分は、前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、
グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第２のバンク（６４０）の後の第１のバンク（６１０）に配置されている、
集積回路（３００）。
【請求項２】
前記メモリアクセスを生成し、前記メモリアクセスを前記メモリコントローラ（３４０）に提供するためのメモリアクセス生成回路（３２０）をさらに備える、
請求項１に記載の集積回路（３００）。
【請求項３】
前記メモリアクセス生成回路（３２０）は中央処理装置コア（３２２）を含む、
請求項２に記載の集積回路（３００）。
【請求項４】
前記メモリアクセス生成回路（３２０）及び前記メモリコントローラは、単一の集積回路ダイ（３１０）上に結合されている、
請求項２に記載の集積回路（３００）。
【請求項５】
前記メモリ（３５０）は、メモリチップスタック（１４０，２４０）に配置された複数のメモリチップ（３５２，３５４，３５６，３５８）を含む、
請求項１に記載の集積回路（３００）。
【請求項６】
前記信頼性データは、前記データ要素の各々に関する少なくとも１つのＥＣＣを含む複数の誤り訂正符号（ＥＣＣ）を含む、
請求項１に記載の集積回路（３００）。
【請求項７】
前記信頼性データは、前記データ要素の各々に関する少なくとも１つのＣＲＣを含む複数の巡回冗長検査（ＣＲＣ）符号を含む、
請求項１に記載の集積回路（３００）。
【請求項８】
データ要素に関する書き込みアクセスをリクエスタから受信すること（８１０）と、
前記データ要素に関する信頼性データを計算すること（８２０）と、
前記データ要素をアドレス空間（６００）の第１の部分に格納し（８３０）、前記信頼性データを前記アドレス空間（６００）の第２の部分に格納すること（８４０）と、を含み、
前記格納すること（８３０，８４０）は、
前記アドレス空間（６００）を、前記アドレス空間（６００）内で順序を有する複数のバンク（６１０，６２０，６３０，６４０）間で分割することと、
前記アドレス空間（６００）の前記第１の部分を、前記順序の前記複数のバンク（６１０，６２０，６３０，６４０）間で分散された所定数のデータ要素の複数のグループとして形成することと、
前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含む前記アドレス空間（６００）の前記第２の部分を形成することと、を含み、
グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第２のバンク（６４０）の後の第１のバンク（６１０）に配置されている、
方法。
【請求項９】
前記データ要素に関する読み出しアクセスを前記リクエスタ（３２０）から受信すること（９１０）と、
前記データ要素を前記アドレス空間（４００，５００，６００，７００）の前記第１の部分から読み出すこと（９２０）と、
前記信頼性データが適正に読み出されたか否かを判定すること（９３０）と、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記判定すること（９３０）は、
計算された信頼性データを生成するために、前記アドレス空間（６００）の前記第１の部分から読み出された前記データ要素に関する信頼性データを計算すること（９３２）と、
格納された信頼性データを生成するために、前記アドレス空間（６００）の前記第２の部分に格納された前記信頼性データを読み出すこと（９３４）と、
前記計算された信頼性データを、前記格納された信頼性データと比較すること（９３６）と、
を含む、請求項９に記載の方法。
【請求項１１】
前記格納された信頼性データが前記計算された信頼性データと一致する場合に、前記データ要素を前記リクエスタ（３２０）に戻すこと（９４２）と、
前記格納された信頼性が前記計算された信頼性データと一致しない場合に、前記信頼性データを訂正することができるか否かを判定すること（９４４）と、
前記信頼性データを訂正することができる場合に、前記データを訂正して（９４６）、訂正されたデータを前記リクエスタ（３２０）に戻すこと（９４８）と、
前記信頼性データを訂正することができない場合に、前記リクエスタ（３２０）にエラーを報告すること（９５０）と、
をさらに含む、請求項１０に記載の方法。
【国際調査報告】
2015535101.tif 000012
2015535101.tif 000013