(57)【要約】ポストパッケージリペアシステムは、メモリチャネルコントローラと、第１エラーカウンタと、スクラバと、データプロセッサと、を含む。メモリチャネルコントローラは、データアクセス要求を対応するメモリアクセスに変換し、メモリインタフェースから受信した応答に応じて返送データをホストインタフェースに提供する。この応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。第１エラーカウンタは、返送データ内のエラーをカウントし、所定の状態に達したことに応じて制御信号を提供する。スクラバは、メモリチャネルコントローラを制御して、メモリシステムの複数のアドレスからデータを順次且つ定期的に読出し、訂正可能なエラーを検出したことに応じて訂正済みデータを再書込みする。データプロセッサは、制御信号に応じてメモリシステムを用いてポストパッケージリペア動作を実行する。【選択図】図６
2019520639.tif 000002
【特許請求の範囲】
【請求項１】
ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換し、前記メモリインタフェース（６４４）から受信した応答に応じて返送データを前記ホストインタフェース（６４２）に提供するメモリチャネルコントローラ（６４０）であって、前記応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む、メモリチャネルコントローラ（６４０）と、
前記返送データ内のエラーをカウントするために前記メモリチャネルコントローラ（６４０）に接続された第１エラーカウンタ（６５２）であって、所定の状態に達したことに応じて制御信号を提供する第１エラーカウンタ（６５２）と、
前記メモリチャネルコントローラ（６４０）に接続されたスクラバ（６２４）であって、前記メモリチャネルコントローラ（６４０）を制御して、メモリシステム（６７０）の複数のアドレスからデータを順次且つ定期的に読出し、訂正可能なエラーを検出したことに応じて訂正済みデータを再書込みするスクラバ（６２４）と、
前記メモリチャネルコントローラ（６４０）に接続されたデータプロセッサ（６１０）であって、前記制御信号に応じて前記メモリシステム（６７０）を用いてポストパッケージリペア動作を実行するデータプロセッサ（６１０）と、を備える、
ポストパッケージメモリリペアシステム（６００）。
【請求項２】
前記データプロセッサ（６１０）は、
前記メモリチャネルコントローラ（６４０）に接続された中央処理装置（ＣＰＵ）コア（６１４）と、
前記ＣＰＵコア（６１４）によって実行されると、前記メモリチャネルコントローラ（６４０）が前記ポストパッケージリペア動作を実行するように前記ＣＰＵコア（６１４）に制御させる複数の命令を記憶するために前記ＣＰＵコア（６１４）に接続されたファームウェアメモリ（６１２）と、を含む、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項３】
前記ファームウェアメモリ（６１２）は基本入出力システム（ＢＩＯＳ）を記憶し、前記複数の命令は前記ＢＩＯＳの一部である、
請求項２のポストパッケージメモリリペアシステム（６００）。
【請求項４】
前記データプロセッサ（６１０）は、前記メモリチャネルコントローラ（６４０）が所定レベルのエラーを検出したことに応じて、前記スクラバのスクラブレートを増加させる、
請求項２のポストパッケージメモリリペアシステム（６００）。
【請求項５】
前記スクラバ（６２４）は、前記メモリシステム（６７０）内の対応する行のサイズよりも小さい所定サイズのメモリからデータ要素を読出し、
前記メモリチャネルコントローラ（６７０）は、前記データ要素を一時的に記憶するための前記所定サイズの読出し／書込みバッファを有する、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項６】
前記所定状態は、前記第１エラーカウンタ（６５２）がターミナルカウントに達したときに達する、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項７】
前記メモリチャネルコントローラ（６４０）は、
前記返送データ及び前記複数のＥＣＣビットに応じて前記返送データ内のエラーを検出し、前記エラーが訂正可能かどうかを判別するＥＣＣチェック回路（６４６）を含む、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項８】
複数の追加のエラーカウンタ（６５４）をさらに備え、
前記ＥＣＣチェック回路（６４６）は、メモリアクセスにおけるＥＣＣエラーの検出に応じて、前記第１エラーカウンタ（６５２）に対する第１インクリメント信号、及び、前記メモリシステム（６７０）内の前記メモリアクセスの領域に従って選択された対応する複数の追加のエラーカウンタ（６５４）に対する複数の追加のインクリメント信号のうち１つを提供する、
請求項７のポストパッケージメモリリペアシステム（６００）。
【請求項９】
前記メモリインタフェース（６４４）は、ダブルデータレート（ＤＤＲ）−物理インタフェース（ＤＦＩ）仕様と互換性を有するインタフェースに接続するように構成されている、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項１０】
前記スクラバ（６２４）は、ハードウェア回路として実装されている、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項１１】
前記スクラバ（６２４）は、前記データプロセッサ（６１０）上で実行されるソフトウェアによって実装されている、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項１２】
ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換し、前記メモリインタフェース（６４４）から受信した応答に応じて返送データを前記ホストインタフェース（６４２）に提供するメモリチャネルコントローラ（６４０）であって、前記応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含み、前記メモリチャネルコントローラ（６４０）は、前記返送データに対応する前記複数のエラー訂正コード（ＥＣＣ）ビットに基づいてエラーチェックを実行することによって前記返送データ内のエラーを検出し、前記返送データ内のエラーを検出したことに応じて、カウント信号を提供する、メモリチャネルコントローラ（６４０）と、
前記カウント信号に応じてエラーをカウントするために前記メモリチャネルコントローラ（６４０）に接続された第１エラーカウンタ（６５２）であって、所定の状態に達したことに応じて制御信号を提供する第１エラーカウンタ（６５２）と、を備える、
メモリコントローラ（６３０）。
【請求項１３】
前記制御信号は、マシンチェックアーキテクチャ割込みを含む、
請求項１２のメモリコントローラ（６３０）。
【請求項１４】
前記メモリチャネルコントローラ（６４０）は、
前記返送データ及び前記複数のＥＣＣビットに応じて前記返送データ内のエラーを検出し、前記エラーが訂正可能であるかどうかを判別するＥＣＣチェック回路（６４６）を含む、
請求項１２のメモリコントローラ（６３０）。
【請求項１５】
複数の追加のエラーカウンタ（６５４）をさらに備え、
前記ＥＣＣチェック回路（６４６）は、メモリアクセスにおけるＥＣＣエラーの検出に応じて、前記第１エラーカウンタ（６５２）に対するカウント信号、及び、対応する複数の追加のエラーカウンタ（６５４）に対する複数の追加のインクリメント信号のうち選択された１つを提供し、前記選択された１つは、メモリシステム（６７０）内の前記メモリアクセスの領域に従って前記メモリアクセスのために選択される、
請求項１４のメモリコントローラ（６３０）。
【請求項１６】
前記メモリインタフェース（６４４）は、ダブルデータレート（ＤＤＲ）−物理インタフェース（ＤＦＩ）仕様と互換性を有するインタフェースに接続するように構成されている、
請求項１２のメモリコントローラ（６３０）。
【請求項１７】
ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換することと、
前記メモリインタフェース（６４４）から受信した応答に応じて返送データを前記ホストインタフェース（６４２）に提供することであって、前記応答は、前記返送データ及び複数のエラー訂正コード（ＥＣＣ）ビットと、を含む、ことと、
前記返送データ及び前記複数のＥＣＣビットに従ってエラーについてメモリシステム（６７０）をスクラブして、訂正可能なエラーをリペアすることと、
前記スクラブの間、前記メモリシステム（６７０）の領域内の所定数のエラーに応じて前記メモリシステム上でポストパッケージリペア動作を実行することと、を含む、
方法。
【請求項１８】
前記変換することは、
前記データアクセス要求をキュー（５２０）に記憶することと、
所定の基準によって決定された時間に前記メモリアクセスを提供するために前記キュー（５２０）に記憶された複数のデータアクセス要求間でアービトレーションを行うことと、を含む、
請求項１７の方法。
【請求項１９】
前記スクラブすることは、
読出しコマンドを前記メモリシステム（６７０）内の次のアドレスに提供することと、
前記応答を前記メモリシステム（６７０）から受信することと、
前記返送データ及び前記複数のＥＣＣビットに従ってＥＣＣチェックを実行することと、
前記ＥＣＣチェックを実行することがエラーを示す場合に、エラーカウンタ（６５２）をインクリメントすることと、を含む、
請求項１７に記載の方法。
【請求項２０】
前記エラーカウンタ（６５２）がターミナルカウントに達したことに応じて、前記メモリシステム（６７０）において前記ポストパッケージリペア動作を実行することをさらに含む、
請求項１９の方法。
【請求項２１】
前記スクラブすることは、
前記訂正可能なエラーについて前記メモリシステム（６７０）の各アドレスを定期的且つ順次スクラブすることを含む、
請求項１７の方法。
【請求項２２】
訂正不可能なエラーを検出することと、
前記訂正不可能なエラーを基本入出力システム（ＢＩＯＳ）に報告することと、をさらに含む、
請求項１７の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より詳細には、高信頼性メモリを有するデータ処理システムに関する。
【背景技術】
【０００２】
最新のダイナミックランダムアクセスメモリ（ＤＲＡＭ）は、その低コスト、高密度及びランダムアクセスタイムのために、今日の大部分のパーソナルコンピュータシステム及びサーバで用いられている。ＤＲＡＭは、電荷をコンデンサに蓄えてメモリセルの状態を示す小型のメモリセルに基づいている。容量性蓄電は動的なものであり、コンデンサは、時間の経過と共にそれらの電荷を失う。したがって、メモリセルは、周期的にリフレッシュされなければならない。また、読出し動作は、コンデンサの電荷を失うため、データの破壊をもたらす。特定の行のメモリ位置に対するアクセスの前に、その行の内容を、例えば８キロバイト（８ｋＢ）の大きさの大きなページバッファに記憶することによって当該行が「アクティベート」される。別の行のメモリ位置を読み書きする前に、現在ページバッファにあるメモリ行を、ページバッファの内容を行に沿ってメモリセルに再書込みすることによって「プリチャージ」しなければならず、これにより、コンデンサが元の状態まで充電される。
【０００３】
ＤＲＡＭメモリセルは、サイズが小さいために、ソフトエラーの影響を受けやすい。ソフトエラーは、コンデンサを通過するアルファ粒子、電磁干渉等のランダムな電気的イベントの発生によって生じるデータエラーである。したがって、ソフトエラーは、回路内の基本的なエラーや欠陥を反映しない。ソフトエラーを訂正するために、メモリメーカーは、通常、８つのＤＲＡＭチップのセット毎に１つの追加のＤＲＡＭチップを含むことによって、いわゆるエラー訂正コード（ＥＣＣ）を採用している。ＥＣＣは、データと共に記憶される追加のビットであり、例えば、一群のビットからの単一のビットエラーの訂正、及び、複数ビットエラーの訂正ではなく検出を可能にすることができる。ＥＣＣが単一のビットエラーの訂正を可能にするのは、誤っているビットの位置を識別するのに十分な情報をＥＣＣコードが含んでおり、後続のプリチャージ動作の間にビットがメモリアレイに再書込みされる前に論理状態を反転させることができるからである。
【０００４】
ＥＣＣビットを用いたソフトエラーの検出は、読出し又は書込みアクセス中にリアルタイムに行うのが困難である。したがって、メモリコントローラは、ソフトエラーについてメモリセルのバックグラウンドチェックを実行するために「スクラバ」を使用することがある。スクラバは、ＥＣＣエラーについてメモリのラインを定期的にチェックする。スクラバが訂正可能なエラーを検出した場合にエラーを訂正し、これにより、実際の読出し又は書込みアクセス中にエラーが発生する確率を低下させる。スクラバは、定期的に（例えば、１日に１回等）、このようなエラーについて物理メモリ空間全体の全てのメモリ位置をチェックする。
【０００５】
一方、メモリセルは、時々、メモリセル又は隣接するメモリセルのセットが故障するまで時間の経過と共に悪化する回路欠陥すなわち「ハード」エラーに見舞われる。従来、ＤＲＡＭは、ハードエラーを検出するために工場でテストされ、故障した行又は列を冗長な行又は列に置換することによって訂正されている。しかしながら、製造後に不良となるメモリセルの検出及び訂正が、より困難になる。通常、メモリは、起動時にハードエラーについてテストされ、ハードエラーが発生したメモリ部分は、システムメモリマップから取り除かれる。しかしながら、起動後にハードエラーが発生した場合には、実行中のプログラムがクラッシュし、ユーザの不便やデータの損失を招く可能性がある。さらに、時間の経過と共にゆっくり進行するハードエラーであって、ＥＣＣビットが利用可能であるためにプログラム障害又はデータの損失を引き起こさないハードエラーを検出及び訂正するための周知の戦略が存在しない。
【０００６】
工場テストの後に発生するハードエラーを訂正するために、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって仕様化されたダブルデータレートバージョン４（ＤＤＲ４）メモリは、ポストパッケージリペアとして知られる機能を採用している。しかしながら、ポストパッケージリペア機能を用いて、ハードエラーを、簡単で効率的に、且つ、プログラム障害又はデータの損失の前に訂正可能な周知のシステムは存在しない。
【図面の簡単な説明】
【０００７】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適した加速処理ユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した別のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、インテグラルポストパッケージリペアを伴うデータ処理システムのブロック図である。
【図７】いくつかの実施形態による、図６のデータ処理システムにおけるポストパッケージリペアに関連する動作のフローチャートである。
【図８】いくつかの実施形態による、ポストパッケージリペアルーチンのフローチャートである。
【発明を実施するための形態】
【０００８】
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
【０００９】
以下に１つの形態で説明するように、ポストパッケージリペアシステムは、メモリチャネルコントローラと、スクラバと、第１エラーカウンタと、データプロセッサと、を含む。メモリチャネルコントローラは、ホストインタフェースから受信したデータアクセス要求をメモリインタフェースに提供される対応するメモリアクセスに変換し、メモリインタフェースから受信した応答に応じて返送データをホストインタフェースに提供する。この応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。第１エラーカウンタは、メモリチャネルコントローラに接続されており、返送データ内のエラーをカウントし、所定の状態に達したことに応じて制御信号を提供する。スクラバは、メモリチャネルコントローラに接続されており、メモリチャネルコントローラを制御して、メモリシステムの複数のアドレスからデータを順次且つ定期的に読出し、訂正可能なエラーを検出したことに応じて訂正済みデータを再書込みする。データプロセッサは、メモリチャネルコントローラに接続されており、制御信号に応じてメモリシステムを用いてポストパッケージリペア動作を実行する。
【００１０】
別の形態では、メモリコントローラは、メモリシステム上でポストパッケージリペアを実行するシステムでの使用に適している。メモリコントローラは、メモリチャネルコントローラと、第１エラーカウンタと、を備える。メモリチャネルコントローラは、ホストインタフェースから受信したデータアクセス要求をメモリインタフェース上の対応するメモリアクセスに変換し、メモリインタフェースから受信した応答に応じて返送データをホストインタフェースに提供する。この応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。メモリチャネルコントローラは、返送データに対応する複数のエラー訂正コード（ＥＣＣ）ビットに基づいてエラーチェックを実行することによって返送データ内のエラーを検出し、返送データ内のエラーを検出したことに応じて、カウント信号を提供する。第１エラーカウンタは、カウント信号に応じてエラーをカウントするためにメモリチャネルコントローラに接続されており、所定の状態に達したことに応じて制御信号（例えば、マシンチェックアーキテクチャ（ＭＣＡ）例外）を提供する。ＭＣＡ例外によって、ポストパッケージリペアファームウェアを実行しているデータプロセッサ等の他のエージェントが、ポストパッケージリペア動作を実行することができる。
【００１１】
さらに別の形態では、ホストインタフェースから受信したデータアクセス要求は、メモリインタフェースに提供される対応するメモリアクセスに変換される。返送データは、メモリインタフェースから受信した応答に応じてホストインタフェースに提供され、当該応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。メモリシステムは、返送データ及び複数のＥＣＣビットに従ってエラーについてスクラブされ、訂正可能なエラーがリペア（修復）される。ポストパッケージリペア動作は、スクラブの間、メモリシステムの領域内の所定数のエラーに応じてメモリシステム上で実行される。
【００１２】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（Peripheral Component Interconnect Express）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクに接続するためのＰＣＩｅルートコンプレックス、ＵＳＢネットワークに接続するためのＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースが含まれる。
【００１３】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、この例では別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１４】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、様々な不揮発性メモリタイプ（例えば、読出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等）の何れかであってもよい。
【００１５】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１６】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１７】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、最新のＤＤＲメモリ（例えば、ＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等）に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。
【００１８】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１９】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この例では、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックスは任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００２０】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を、高度に統合された並列方式で実行することの可能な高性能グラフィックス処理装置（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができる。グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００２１】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００２２】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２３】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２４】
周辺バスコントローラ２７０はシステムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２５】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロックソース（例えば位相ロックループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
【００２６】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２７】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するための電力エンジン３２０を有する。
【００２８】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有の電力エンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２９】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、概して、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、リプレイキュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００３０】
インタフェース５１２は、外部バスを介してデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００３１】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表される物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００３２】
リプレイキュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているかを判別する。リプレイキュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再実行されるのを可能にする。
【００３３】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウン状態にある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、リフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
【００３４】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、起動コマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、リプレイキュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、リプレイキュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３５】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３６】
電力コントローラ５５０は、概して、ＡＸＩ（Advanced Extensible Interface, version 1）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「ＥＶＥＮＴ＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みタイミングエンジン５６８は、ＤＤＲインタフェース最大読出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３７】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３８】
図６は、いくつかの実施形態による、インテグラルポストパッケージリペアを伴うデータ処理システム６００のブロック図である。データ処理システム６００は、概して、データプロセッサ６１０と、データファブリック６２０と、メモリコントローラ６３０と、ＰＨＹ６６０と、メモリシステム６７０と、を含む。データプロセッサ６１０は、ポストパッケージリペアファームウェアを記憶するメモリ６１２と、ＣＰＵコア６１４と、を含む。メモリ６１２は、図１のシステムＢＩＯＳ１５７に対応し、ＣＰＵコア６１４は、ＣＰＵコアコンプレックス２１０のＣＰＵコア（例えば、ＣＰＵコア２１２又はＣＰＵコア２１４等）に対応する。図１のマルチコアアーキテクチャでは、１つのＣＰＵコアは、ＢＩＯＳサービスプロセッサ（ＢＳＰ）として知られており、システムＢＩＯＳ１５７に接続されている。データプロセッサ６１０において、ＣＰＵコア６１４はＢＳＰであり、ポストパッケージリペアファームウェアを含むＢＩＯＳ命令を読出して実行するために、メモリ６１２に双方向に接続されている。ＣＰＵコア６１４は、データファブリック６２０にも双方向に接続されており、読出し及び書込みコマンドをメモリシステムに発行し、メモリシステムから読出し応答を受信し、１つのＣＰＵコアの内部キャッシュに記憶され得る共有データについてＣＰＵコア６１４と他のＣＰＵコアコンプレックスとの間でプローブを発行し、プローブに応答する。
【００３９】
データファブリック６２０は、コヒーレントスレーブ６２２と、制御ブロック６２６と、を含む。コヒーレントスレーブ６２２は、読み書き要求に応じてアクセスを生成して、そのアクセスをメモリコントローラ６３０等の適切なメモリコントローラに提供するエンジンである。また、コヒーレントスレーブ６２２は、スクラバ６２４を含む。スクラバ６２４は、システム内の各メモリチップの各バンク及びメモリチップの各ランクを含むメモリの位置毎にメモリアドレスを巡回することによってスクラブ動作を実行するために用いられるハードウェアステートマシンである。コヒーレントスレーブ６２２は、スクラブ動作において、メモリシステム６７０内の連続した位置にリードモディファイライトサイクルを発行し、その結果、メモリエラーが検出され、いくつかのエラーの場合には訂正される。一方、制御ブロック６２６は、報告されたエラーを追跡し、訂正不可能なメモリエラーについてマシンチェック割込みを通知する。また、制御ブロック６２６は、メモリ６１２に記憶されたポストパッケージリペアを使用してポストパッケージリペア動作を実行する必要性について、ＣＰＵコア６１４に通知する。
【００４０】
メモリコントローラ６３０は、図５のメモリコントローラ５００を用いて実装することができる。しかしながら、図６に示すメモリコントローラ６３０は、メモリエラー検出、訂正及びポストパッケージリペア決定を実行するために用いられるメモリコントローラの部分のみを含む。図示するように、メモリコントローラ６３０は、メモリチャネルコントローラ６４０と、電力エンジン６５０と、を含む。メモリチャネルコントローラ６４０は、ホストインタフェース６４２と、ＰＨＹインタフェース６４４と、内部データパス６４６と、ＥＣＣチェック回路６４８と、を含む。内部データパス６４６は、データ及びＥＣＣ信号を伝えるために用いられ、ホストインタフェース６４２と、ＰＨＹインタフェース６４４と、ＥＣＣチェック回路６４８と、を内部的に接続する。ホストインタフェース６４２は、ＡＸＩ４バスに接続された双方向ポートと、内部データパス６４６に接続するための双方向ポートと、を有する。ＰＨＹインタフェース６４４は、内部データパス６４６に接続された双方向ポートと、ＤＦＩバスに接続するための双方向ポートと、を有する。ＥＣＣチェック回路６４８は、内部データパス６４６に接続された双方向ポートと、図６においてランク０及びランク７の各々に対応する「ＩＮＣ＿ＣＳ０」及び「ＩＮＣ＿ＣＳ７」と付された２つの代表的な出力を示す８つの出力のセットと、を有する。電力エンジン６５０は、信号ＩＮＣ＿ＣＳ０及びＩＮＣ＿ＣＳ７の各々の信号を受信し、ランク０及びランク７の各々に対応する代表的なカウンタ６５２，６５４を含む８つのカウンタのセットを含む。各カウンタは、ＡＸＩバスを介して、カウンタオーバーフロー信号をデータファブリック６２０の制御ブロック６２６に提供するための出力を有する。
【００４１】
ＰＨＹ６６０は、ＤＦＩバスを介してメモリコントローラ６３０に接続された双方向ポートと、メモリシステム６７０に接続するための「ＤＤＲ４  インタフェース」と付されたメモリインタフェースに接続された双方向ポートと、を有する。ＰＨＹ６６０は、図３のＤＤＲｘ  ＰＨＹ３３０及び図４のＤＤＲｘ  ＰＨＹ４４０，４５０に関して上述したように実装することができる。
【００４２】
メモリシステム６７０は、ＤＤＲ４メモリシステムであり、ＤＤＲ４インタフェースを介してＰＨＹ６６０に接続されている。ＤＤＲ４メモリは、ポストパッケージリペアをサポートし、したがって、以下により詳細に説明する方法でデータ処理システム６００と相互作用する。
【００４３】
動作中、データ処理システム６００は、利用可能なリソースを使用して、メモリ信頼性チェック、訂正可能なＥＣＣエラーのリペア、訂正不可能なＥＣＣエラーの報告、及び、ポストパッケージリペアを効率的に実行する。また、データ処理システム６００は、バックグラウンドのスクラブ動作を利用してハードエラーを検出し、ＤＤＲ４  ＤＲＡＭ等の一部のＤＲＡＭのポストパッケージリペア機能を用いて、訂正不可能なエラーが発生する前にこれらを訂正する。
【００４４】
データ処理システム６００は、ポストパッケージ検出及び訂正タスクを、データプロセッサ６１０、データファブリック６２０及びメモリコントローラ６３０に効率的に分配する。データファブリック６２０は、メモリシステム６７０内の全てのメモリ位置のバックグラウンドスクラブを実行するスクラバ６２４を含む。スクラブは低帯域幅のバックグラウンド処理であるため、単一のスクラバを複数のメモリコントローラと共に用いることによって、僅かな回路領域でメモリ空間全体をスクラブすることができる。
【００４５】
スクラバ６２４は、２つの動作モードを有している。第１に、スクラバ６２４は、バックグラウンドスクラブを実行する制御モードを有している。制御モードにおけるバックグラウンドスクラブは、ＥＣＣエラーが存在するかどうかを判別するために各メモリ位置を読み出すことを含む。特定のメモリ位置ついてＥＣＣエラーが存在しない場合、スクラバ６２４は、メモリ空間内の後続のメモリ位置を読出し続ける前に、データを再書込みする。一実施形態においては、スクラバ６２４は、一部のＤＲＡＭがオンチップＥＣＣを実装しているので、訂正可能なＥＣＣエラーが検出されたかどうかにかかわらず、データを再書込みする。後続の書込みサイクルは、ＤＲＡＭにおいて検出されたが修正されたためにスクラバ６２４に見られなかった訂正可能なＥＣＣエラーによって、更新されたデータがページバッファに再書込みされることを確実にする。そして、後続のプリチャージコマンドの際に、訂正済みデータが、エラーを訂正するためにメモリアレイに書き込まれる。しかしながら、後続の書込み動作がない場合には、エラーがメモリアレイ内で決して訂正されないことになる。代替の実施形態において、スクラバ６２４は、読出しサイクルを実行するが、検出されたエラーについてのデータを再書込みするのみである。スクラバ６２４が訂正可能なエラーを検出した場合、スクラバ６２４は、当該エラーをマシンチェックアーキテクチャ（ＭＣＡ）例外として報告する。
【００４６】
スクラバ６２４は、メモリシステム６７０内の全てのメモリ位置を特定のレートでスクラブする。例えば、スクラバ６２４は、１日に１回、全てのメモリ位置のスクラブを実行するというルールに従ってもよい。図示した実施形態において、スクラバ６２４は、長さ８のバーストを使用して単一のバーストでメモリシステム６７０から効率的に読み出すことができる、通常６４バイトのＣＰＵコアのキャッシュラインに等しいサイズを有するメモリ位置を読み出す。したがって、スクラバ６２４は、６４バイトバッファと、ＥＣＣ検出及び訂正回路と、を含む。しかしながら、他の実施形態では、スクラバ６２４は、領域又はページ等の様々なサイズのメモリ位置を読み出すことができる。
【００４７】
第２に、スクラバ６２４は、リダイレクトモードを有している。スクラバ６２４は、システムアクセスがＥＣＣエラーに遭遇したことに応じて上述したように、エラーをシステムＢＩＯＳに報告する。例えば、ＤＤＲｘ  ＤＩＭＭ用の一般的なＥＣＣメカニズムは、単一ビットのエラーの検出及び訂正と、複数ビットのエラー検出と、をサポートする。ＥＣＣエラーは、アルファ粒子が単一のメモリセルの内容を変更することによって発生する場合があり、したがって、永久に訂正される必要のないランダムエラーを表す。システムＢＩＯＳは、訂正可能なＥＣＣエラーを報告したことに応じて、メモリ位置の読み書き動作を実行するようにスクラバ６２４にリダイレクトする。しかしながら、スクラバ６２４が複数ビットのエラー等の訂正不可能なエラーを検出した場合には、ＭＣＡ例外を用いてそのことも報告し、データプロセッサ６１０が異なる訂正動作を行うのを可能にする。例えば、ソフトウェアエラーハンドラは、破損データを使用していたソフトウェアアプリケーションを停止させてもよいし、データプロセッサ６１０をリセットしてもよい。
【００４８】
スクラバ６２４は、各読出し要求をメモリコントローラ６３０に発行する。メモリコントローラ６３０は、通常動作アービトレーションに従って決定された順序で読出し要求を発行する。メモリコントローラ６３０は、要求データを受信すると、自身のＥＣＣチェックを実行し、算出されたＥＣＣがメモリから返されたＥＣＣと一致するかどうかを判別する。メモリコントローラ６３０がエラーを検出しない場合、スクラバ６２４は、次のメモリ位置に進む。しかしながら、メモリコントローラ６３０がエラーを検出した場合、インクリメント信号をアクティベートすることによって電力エンジン６５０に対してエラーを示す。最終的に、エラーカウント値が閾値を超えると、カウンタは、エラーを制御ブロック６２６に報告する。次に、制御ブロック６２６は、ポストパッケージリペア動作を含むことができる適切な改善措置をとる。
【００４９】
スクラバ６２４をポストパッケージリペアフローに組み込むことによって、データ処理システム６００は、既存の回路ブロックを使用して、ＤＤＲ４ポストパッケージリペア機能をアンロックする。メモリコントローラ６３０で利用可能なコピー及び再書込み動作を用いることによって、大きな読出し／書込みバッファの必要性を回避する。例えば、現在のメモリ構成及び密度では１行のサイズが８キロバイト（ｋＢ）であり、読み書き動作でこのタイプの動作を実行すると、カウンタは、メモリの全ての行を評価するために８ｋＢのバッファを必要とする。また、スクラバ６２４は、既に行われているであろうバックグラウンドタスクとして、データを故障行から移行させるのを可能にする。
【００５０】
このアーキテクチャには、いくつかの利点がある。第１に、このアーキテクチャは、ソフトエラーを検出及び訂正するために既に利用可能となり得るバックグラウンドスクラブを利用するので、効率的である。第２に、このアーキテクチャは、例えばＥＣＣチェック回路６４８及びカウンタのセット等の追加のハードウェアを僅かに用いて、最終的にポストパッケージリペア動作を発生させる可能性のあるエラーを追跡する。第３に、このアーキテクチャは、訂正可能なエラーを高いレートで検出することの可能なカウンタを使用しており、これにより、実際のプログラム障害又はデータ損失の前にポストパッケージリペア動作をトリガする。
【００５１】
図７は、いくつかの実施形態による、図６のデータ処理システム６００におけるポストパッケージリペアに関連する動作のフローチャート７００である。動作は、例えば、起動後しばらくしてから、システムＢＩＯＳ又はオペレーティングシステムがスクラバ６２４を開始するアクションボックス７１０で開始する。アクションボックス７２０において、スクラバ６２４は、リードモディファイライト（ＲＭＷ）サイクルの一部として、次のアドレスへの読出し要求を発行する。アクションボックス７３０において、メモリコントローラ６３０は、返送された読出しデータ及び対応するＥＣＣビットを伴う読出し応答を受信する。アクションボックス７４０において、メモリコントローラ６３０は、ＥＣＣチェック回路６３８を用いて、データ及び対応するＥＣＣビットに対してＥＣＣチェックを実行する。次に、フローは、サブフロー７５０に進む。
【００５２】
サブフロー７５０において、判別ボックス７５１は、ＥＣＣチェック回路６４８がデータエラーを検出したかどうかを判別する。エラーを検出した場合、アクションボックス７５２において、メモリコントローラ６３０は、エラーカウンタをインクリメントする。判別ボックス７５３は、エラーカウンタがターミナルカウントに達したかどうかを判別する。カウンタがターミナルカウントに達したかどうかの検出は、インクリメントカウンタ用のオーバーフロービット、又は、プリロード及びデクリメントカウンタ用のアンダーフロービットとして効率的に実行することができる。カウンタがターミナルカウントに達した場合、フローは、ポストパッケージリペアサブフロー７５４に進む。そうでなければ、フローは、判別ボックス７５５に進む。
【００５３】
判別ボックス７５５は、ＥＣＣエラーが訂正可能であるかどうか（例えば、１ビットエラーであるかどうか）を判別する。訂正可能でない場合には、フローは、アクションボックス７５６に進み、アクションボックス７５６において、メモリコントローラ６３０は、マシンチェックアーキテクチャ（ＭＣＡ）例外を通して訂正不可能なエラーをオペレーティングシステムに報告する。このような訂正不可能なエラーは、オペレーティングシステムに対して、プロセス又はプログラムの終了、システムの再起動等の適切な処置を行わせる。エラーが訂正可能である場合、アクションボックス７５７において、メモリコントローラ６３０は、エラーをスクラバ６２４に報告する。そして、アクションボックス７５８において、スクラバ６２４は、カウンタをインクリメントすることなく訂正済みデータを再書込みするように、メモリコントローラ６３０にリダイレクトする。
【００５４】
アクションボックス７６０において、スクラバ６２４は、次のスクラブサイクルに備えてそのアドレスをインクリメントし、次いで、アクションボックス７７０において、スクラバ６２４は、フローをアクションボックス７２０に戻す前に或る期間待機する。いくつかの実施形態では、スクラバ６２４は、特定のレート（例えば、全ての物理メモリを１日につき１回）でスクラブすることができるが、スクラビングのレートは、高レベルのエラーに応じて等において加速することができる。
【００５５】
図８は、いくつかの実施形態による、ポストパッケージリペアサブフローのフローチャート８００である。フローチャート８００は、メモリシステム６７０がＤＤＲ４  ＤＲＡＭを含むことを仮定しているが、ポストパッケージリペアをサポートする異なるＤＲＡＭに対して、本明細書に記載された動作に従って、対応するフローを定義することができる。フローはボックス８１０で開始する。アクションボックス８２０において、メモリコントローラ６３０は、影響を受けたメモリチップの全てのバンクをプリチャージし、それらのモードレジスタが更新されるのを可能にする。アクションボックス８３０において、メモリコントローラ６３０は、ＤＤＲ４規格に規定されるように特定のモードレジスタビットに書込むことによって、影響を受けたＤＲＡＭのデータバス反転（ＤＢＩ）及び巡回冗長チェック（ＣＲＣ）モードを無効にする。アクションボックス８４０において、メモリコントローラ６３０は、モードレジスタ４のビット１３（ＭＲ４［１３］）を１に設定することによって、影響を受けたメモリチップをポストパッケージリペアモードに移行する。なお、アクションボックス８３０と８４０との間では、いくつかのＤＲＡＭは、ランダムなソフトエラーが誤ってポストパッケージリペア動作を発生させるのを抑制するために、ポストパッケージリペアが有効にされる前に、拡張アンロックシーケンスを必要とする。アクションボックス８５０において、影響を受けたＤＲＡＭは、ポストパッケージリペア動作を実行する。アクションボックス８６０において、メモリコントローラ６３０は、ＭＲ４［１３］を０に設定することによって、影響を受けたメモリチップをポストパッケージリペアモードから抜け出させる。アクションボックス８７０において、フローは、フローチャート７００に示すメインフロー（具体的には、アクションボックス７６０）に戻る。
【００５６】
したがって、ポストパッケージリペアシステムは、システム信頼性を効率的に向上させる。システムは、ポストパッケージリペアが必要であると判別すると、ポストパッケージリペアの間にもたらされたエラーがシステムＥＣＣコードによって訂正可能なままとなるように、ＤＲＡＭ上でポストパッケージリペアを選択的に実行する。典型的なＤＲＡＭランクは、１８ｘ４のＤＲＡＭを用いる７２ビットメモリバスを含む。システム６００は、一度に１つのｘ４デバイスのリペアを可能にするｘ４「チップキル」訂正コードを有する。ポストパッケージリペアファームウェアを実行すると、単一のｘ４  ＤＲＡＭの対応するページの現在の内容が破壊される。しかしながら、ポストパッケージリペアの後、これらのエラーは訂正可能なエラーのままになり、これらのメモリ位置への通常のアクセス中に要求元に影響を与えることなく、インラインで訂正することができる。したがって、スクラバ６２４のＲＭＷアクセス（リダイレクト又は定期的なスクラブの何れかによる）は、ＥＣＣアクセスによって破壊されたビットを含む、ＥＣＣ及びデータの完全なＤＲＡＭ内容を再生成する。この動作は、リペアされているＤＲＡＭ内のデータのコピーを維持するための大きなバッファを必要とすることなく、又は、要求元からのメモリアクセスを長期間停止させることなく行われる。他の実施形態において、システム６００は、メモリアクセス要求を行うプロセッサ上で実行するルーチンとしてのシステムファームウェア又はソフトウェアとして、スクラバ６２４を実装することができる。
【００５７】
図７及び図８の方法と、データ処理システム６００のいくつかの動作とは、ハードウェア及びソフトウェアの様々な組み合わせによって実行することができる。例えば、ＥＣＣチェックは、ハードウェア回路を用いて、又は、コントローラ上で実行するファームウェアにおいて行うことができる。さらに、図示した実施形態では、スクラバ６２４がデータファブリック６２０内に存在するハードウェア回路として実装されているが、他の実施形態では、スクラバ６２４は、システムファームウェア又はソフトウェアで実施されるソフトウェアエンジンであってもよい。いくつかのソフトウェアコンポーネントは、少なくとも１つのプロセッサによる実行のためにコンピュータ可読記憶媒体に記憶されてもよい。さらに、図７及び図８に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶される命令であって、少なくとも１つのプロセッサによって実行される命令によって制御され得る。図７及び図８に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応することができる。様々な実施形態において、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性記憶装置を含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５８】
図６のデータ処理システム６００又はそのいかなる部分も、プログラムによって読み出され、集積回路を製造するために直接的若しくは間接的に用いられるデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、その記述を合成して、ゲートのリストを含むネットリストを合成ライブラリから生成することができる合成ツールによって読み出され得る。ネットリストは、集積回路を含むハードウェアの機能性を表すゲートのセットを含む。次に、ネットリストを配置しルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト（合成ライブラリの有無にかかわらず）、又は、必要に応じてデータセットであってもよいし、ＧＤＳ（Graphic Data System）ＩＩデータであってもよい。
【００５９】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者において明らかであろう。例えば、ポストパッケージリペア動作は、ＤＤＲ４  ＤＲＡＭに関して説明されているが、ポストパッケージリペアをサポートする、現在存在し得る他のメモリ又は将来仕様化され得る他のメモリに容易に適応することができる。さらに、バックグラウンドスクラバは、複数のメモリコントローラを制御することができるようにデータファブリック内に都合よく配置されているが、他の実施形態では、バックグラウンドスクラバは、代わりにメモリコントローラ内にあってもよい。さらに、開示された実施形態は、１バイト毎に１つの追加のＥＣＣビットを使用して、単一ビットの検出及び訂正と複数ビットの検出とをサポートしているが、他の実施形態では、より多くのビットを使用して、より多い数のビットの検出及び訂正を行うことができる他のＥＣＣスキームを使用してもよい。
【００６０】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を包含することが意図されている。
【図１】
2019520639.tif 000003
【図２】
2019520639.tif 000004
【図３】
2019520639.tif 000005
【図４】
2019520639.tif 000006
【図５】
2019520639.tif 000007
【図６】
2019520639.tif 000008
【図７】
2019520639.tif 000009
【図８】
2019520639.tif 000010
【手続補正書】
【提出日】平成31年2月21日(2019.2.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換し、前記メモリインタフェース（６４４）から受信した応答に応じて返送データを前記ホストインタフェース（６４２）に提供するメモリチャネルコントローラ（６４０）であって、前記応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む、メモリチャネルコントローラ（６４０）と、
前記返送データ内のエラーをカウントするために前記メモリチャネルコントローラ（６４０）に接続された第１エラーカウンタ（６５２）であって、所定の状態に達したことに応じて制御信号を提供する第１エラーカウンタ（６５２）と、
前記メモリチャネルコントローラ（６４０）に接続されたバックグラウンドスクラバ（６２４）であって、前記メモリチャネルコントローラ（６４０）を制御して、メモリシステム（６７０）の全てのメモリ位置からデータを順次且つ定期的に読出し、訂正可能なエラーを検出したことに応じて訂正済みデータを再書込みするバックグラウンドスクラバ（６２４）と、
前記メモリチャネルコントローラ（６４０）に接続されたデータプロセッサ（６１０）であって、前記制御信号に応じて前記メモリシステム（６７０）を用いてポストパッケージリペア動作を実行するデータプロセッサ（６１０）と、を備える、
ポストパッケージメモリリペアシステム（６００）。
【請求項２】
前記データプロセッサ（６１０）は、
前記メモリチャネルコントローラ（６４０）に接続された中央処理装置（ＣＰＵ）コア（６１４）と、
前記ＣＰＵコア（６１４）によって実行されると、前記メモリチャネルコントローラ（６４０）が前記ポストパッケージリペア動作を実行するように前記ＣＰＵコア（６１４）に制御させる複数の命令を記憶するために前記ＣＰＵコア（６１４）に接続されたファームウェアメモリ（６１２）と、を含む、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項３】
前記データプロセッサ（６１０）は、前記メモリチャネルコントローラ（６４０）が所定レベルのエラーを検出したことに応じて、前記バックグラウンドスクラバのスクラブレートを増加させる、
請求項２のポストパッケージメモリリペアシステム（６００）。
【請求項４】
前記バックグラウンドスクラバ（６２４）は、前記メモリシステム（６７０）内の対応する行のサイズよりも小さい所定サイズのメモリからデータ要素を読出し、
前記メモリチャネルコントローラ（６７０）は、前記データ要素を一時的に記憶するための前記所定サイズの読出し／書込みバッファを有する、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項５】
前記メモリチャネルコントローラ（６４０）は、
前記返送データ及び前記複数のＥＣＣビットに応じて前記返送データ内のエラーを検出し、前記エラーが訂正可能かどうかを判別するＥＣＣチェック回路（６４６）を含む、
請求項１のポストパッケージメモリリペアシステム（６００）。
【請求項６】
複数の追加のエラーカウンタ（６５４）をさらに備え、
前記ＥＣＣチェック回路（６４６）は、メモリアクセスにおけるＥＣＣエラーの検出に応じて、前記第１エラーカウンタ（６５２）に対する第１インクリメント信号、及び、前記メモリシステム（６７０）内の前記メモリアクセスの領域に従って選択された対応する複数の追加のエラーカウンタ（６５４）に対する複数の追加のインクリメント信号のうち１つを提供する、
請求項５のポストパッケージメモリリペアシステム（６００）。
【請求項７】
ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換し、前記メモリインタフェース（６４４）から受信した応答に応じて返送データを前記ホストインタフェース（６４２）に提供するメモリチャネルコントローラ（６４０）であって、前記応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含み、前記メモリチャネルコントローラ（６４０）は、前記返送データに対応する前記複数のエラー訂正コード（ＥＣＣ）ビットに基づいてエラーチェックを実行することによって前記返送データ内のエラーを検出し、前記返送データ内のエラーを検出したことに応じて、カウント信号を提供する、メモリチャネルコントローラ（６４０）と、
前記カウント信号に応じてエラーをカウントするために前記メモリチャネルコントローラ（６４０）に接続された第１エラーカウンタ（６５２）であって、所定の状態に達したことに応じて制御信号を提供する第１エラーカウンタ（６５２）と、を備える、
メモリコントローラ（６３０）。
【請求項８】
前記制御信号は、マシンチェックアーキテクチャ割込みを含む、
請求項７のメモリコントローラ（６３０）。
【請求項９】
前記メモリチャネルコントローラ（６４０）は、
前記返送データ及び前記複数のＥＣＣビットに応じて前記返送データ内のエラーを検出し、前記エラーが訂正可能であるかどうかを判別するＥＣＣチェック回路（６４６）を含む、
請求項７のメモリコントローラ（６３０）。
【請求項１０】
複数の追加のエラーカウンタ（６５４）をさらに備え、
前記ＥＣＣチェック回路（６４６）は、メモリアクセスにおけるＥＣＣエラーの検出に応じて、前記第１エラーカウンタ（６５２）に対するカウント信号、及び、対応する複数の追加のエラーカウンタ（６５４）に対する複数の追加のインクリメント信号のうち選択された１つを提供し、前記選択された１つは、メモリシステム（６７０）内の前記メモリアクセスの領域に従って前記メモリアクセスのために選択される、
請求項９のメモリコントローラ（６３０）。
【請求項１１】
ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換することと、
前記メモリインタフェース（６４４）から受信した応答に応じて返送データを前記ホストインタフェース（６４２）に提供することであって、前記応答は、前記返送データ及び複数のエラー訂正コード（ＥＣＣ）ビットと、を含む、ことと、
前記返送データ及び前記複数のＥＣＣビットに従ってエラーについてメモリシステム（６７０）をスクラブして、訂正可能なエラーをリペアすることと、
前記スクラブの間、前記メモリシステム（６７０）の領域内の所定数のエラーに応じて前記メモリシステム上でポストパッケージリペア動作を実行することと、を含む、
方法。
【請求項１２】
前記変換することは、
前記データアクセス要求をキュー（５２０）に記憶することと、
所定の基準によって決定された時間に前記メモリアクセスを提供するために前記キュー（５２０）に記憶された複数のデータアクセス要求間でアービトレーションを行うことと、を含む、
請求項１１の方法。
【請求項１３】
前記スクラブすることは、
読出しコマンドを前記メモリシステム（６７０）内の次のアドレスに提供することと、
前記応答を前記メモリシステム（６７０）から受信することと、
前記返送データ及び前記複数のＥＣＣビットに従ってＥＣＣチェックを実行することと、
前記ＥＣＣチェックを実行することがエラーを示す場合に、エラーカウンタ（６５２）をインクリメントすることと、を含む、
請求項１１の方法。
【請求項１４】
前記スクラブすることは、
前記訂正可能なエラーについて前記メモリシステム（６７０）の各アドレスを定期的且つ順次スクラブすることを含む、
請求項１１の方法。
【請求項１５】
訂正不可能なエラーを検出することと、
前記訂正不可能なエラーを基本入出力システム（ＢＩＯＳ）に報告することと、をさらに含む、
請求項１１の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より詳細には、高信頼性メモリを有するデータ処理システムに関する。
【背景技術】
【０００２】
最新のダイナミックランダムアクセスメモリ（ＤＲＡＭ）は、その低コスト、高密度及びランダムアクセスタイムのために、今日の大部分のパーソナルコンピュータシステム及びサーバで用いられている。ＤＲＡＭは、電荷をコンデンサに蓄えてメモリセルの状態を示す小型のメモリセルに基づいている。容量性蓄電は動的なものであり、コンデンサは、時間の経過と共にそれらの電荷を失う。したがって、メモリセルは、周期的にリフレッシュされなければならない。また、読出し動作は、コンデンサの電荷を失うため、データの破壊をもたらす。特定の行のメモリ位置に対するアクセスの前に、その行の内容を、例えば８キロバイト（８ｋＢ）の大きさの大きなページバッファに記憶することによって当該行が「アクティベート」される。別の行のメモリ位置を読み書きする前に、現在ページバッファにあるメモリ行を、ページバッファの内容を行に沿ってメモリセルに再書込みすることによって「プリチャージ」しなければならず、これにより、コンデンサが元の状態まで充電される。
【０００３】
ＤＲＡＭメモリセルは、サイズが小さいために、ソフトエラーの影響を受けやすい。ソフトエラーは、コンデンサを通過するアルファ粒子、電磁干渉等のランダムな電気的イベントの発生によって生じるデータエラーである。したがって、ソフトエラーは、回路内の基本的なエラーや欠陥を反映しない。ソフトエラーを訂正するために、メモリメーカーは、通常、８つのＤＲＡＭチップのセット毎に１つの追加のＤＲＡＭチップを含むことによって、いわゆるエラー訂正コード（ＥＣＣ）を採用している。ＥＣＣは、データと共に記憶される追加のビットであり、例えば、一群のビットからの単一のビットエラーの訂正、及び、複数ビットエラーの訂正ではなく検出を可能にすることができる。ＥＣＣが単一のビットエラーの訂正を可能にするのは、誤っているビットの位置を識別するのに十分な情報をＥＣＣコードが含んでおり、後続のプリチャージ動作の間にビットがメモリアレイに再書込みされる前に論理状態を反転させることができるからである。
【０００４】
ＥＣＣビットを用いたソフトエラーの検出は、読出し又は書込みアクセス中にリアルタイムに行うのが困難である。したがって、メモリコントローラは、ソフトエラーについてメモリセルのバックグラウンドチェックを実行するために「スクラバ」を使用することがある。スクラバは、ＥＣＣエラーについてメモリのラインを定期的にチェックする。スクラバが訂正可能なエラーを検出した場合にエラーを訂正し、これにより、実際の読出し又は書込みアクセス中にエラーが発生する確率を低下させる。スクラバは、定期的に（例えば、１日に１回等）、このようなエラーについて物理メモリ空間全体の全てのメモリ位置をチェックする。
【０００５】
一方、メモリセルは、時々、メモリセル又は隣接するメモリセルのセットが故障するまで時間の経過と共に悪化する回路欠陥すなわち「ハード」エラーに見舞われる。従来、ＤＲＡＭは、ハードエラーを検出するために工場でテストされ、故障した行又は列を冗長な行又は列に置換することによって訂正されている。しかしながら、製造後に不良となるメモリセルの検出及び訂正が、より困難になる。通常、メモリは、起動時にハードエラーについてテストされ、ハードエラーが発生したメモリ部分は、システムメモリマップから取り除かれる。しかしながら、起動後にハードエラーが発生した場合には、実行中のプログラムがクラッシュし、ユーザの不便やデータの損失を招く可能性がある。さらに、時間の経過と共にゆっくり進行するハードエラーであって、ＥＣＣビットが利用可能であるためにプログラム障害又はデータの損失を引き起こさないハードエラーを検出及び訂正するための周知の戦略が存在しない。
【０００６】
工場テストの後に発生するハードエラーを訂正するために、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって仕様化されたダブルデータレートバージョン４（ＤＤＲ４）メモリは、ポストパッケージリペアとして知られる機能を採用している。しかしながら、ポストパッケージリペア機能を用いて、ハードエラーを、簡単で効率的に、且つ、プログラム障害又はデータの損失の前に訂正可能な周知のシステムは存在しない。
【図面の簡単な説明】
【０００７】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適した加速処理ユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した別のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、インテグラルポストパッケージリペアを伴うデータ処理システムのブロック図である。
【図７】いくつかの実施形態による、図６のデータ処理システムにおけるポストパッケージリペアに関連する動作のフローチャートである。
【図８】いくつかの実施形態による、ポストパッケージリペアルーチンのフローチャートである。
【発明を実施するための形態】
【０００８】
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
【０００９】
以下に１つの形態で説明するように、ポストパッケージリペアシステムは、メモリチャネルコントローラと、スクラバと、第１エラーカウンタと、データプロセッサと、を含む。メモリチャネルコントローラは、ホストインタフェースから受信したデータアクセス要求をメモリインタフェースに提供される対応するメモリアクセスに変換し、メモリインタフェースから受信した応答に応じて返送データをホストインタフェースに提供する。この応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。第１エラーカウンタは、メモリチャネルコントローラに接続されており、返送データ内のエラーをカウントし、所定の状態に達したことに応じて制御信号を提供する。スクラバは、メモリチャネルコントローラに接続されており、メモリチャネルコントローラを制御して、メモリシステムの複数のアドレスからデータを順次且つ定期的に読出し、訂正可能なエラーを検出したことに応じて訂正済みデータを再書込みする。データプロセッサは、メモリチャネルコントローラに接続されており、制御信号に応じてメモリシステムを用いてポストパッケージリペア動作を実行する。
【００１０】
別の形態では、メモリコントローラは、メモリシステム上でポストパッケージリペアを実行するシステムでの使用に適している。メモリコントローラは、メモリチャネルコントローラと、第１エラーカウンタと、を備える。メモリチャネルコントローラは、ホストインタフェースから受信したデータアクセス要求をメモリインタフェース上の対応するメモリアクセスに変換し、メモリインタフェースから受信した応答に応じて返送データをホストインタフェースに提供する。この応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。メモリチャネルコントローラは、返送データに対応する複数のエラー訂正コード（ＥＣＣ）ビットに基づいてエラーチェックを実行することによって返送データ内のエラーを検出し、返送データ内のエラーを検出したことに応じて、カウント信号を提供する。第１エラーカウンタは、カウント信号に応じてエラーをカウントするためにメモリチャネルコントローラに接続されており、所定の状態に達したことに応じて制御信号（例えば、マシンチェックアーキテクチャ（ＭＣＡ）例外）を提供する。ＭＣＡ例外によって、ポストパッケージリペアファームウェアを実行しているデータプロセッサ等の他のエージェントが、ポストパッケージリペア動作を実行することができる。
【００１１】
さらに別の形態では、ホストインタフェースから受信したデータアクセス要求は、メモリインタフェースに提供される対応するメモリアクセスに変換される。返送データは、メモリインタフェースから受信した応答に応じてホストインタフェースに提供され、当該応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。メモリシステムは、返送データ及び複数のＥＣＣビットに従ってエラーについてスクラブされ、訂正可能なエラーがリペア（修復）される。ポストパッケージリペア動作は、スクラブの間、メモリシステムの領域内の所定数のエラーに応じてメモリシステム上で実行される。
【００１２】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（Peripheral Component Interconnect Express）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクに接続するためのＰＣＩｅルートコンプレックス、ＵＳＢネットワークに接続するためのＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースが含まれる。
【００１３】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、この例では別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１４】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、様々な不揮発性メモリタイプ（例えば、読出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等）の何れかであってもよい。
【００１５】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１６】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１７】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、最新のＤＤＲメモリ（例えば、ＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等）に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。
【００１８】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１９】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この例では、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックスは任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００２０】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を、高度に統合された並列方式で実行することの可能な高性能グラフィックス処理装置（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができる。グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００２１】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００２２】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２３】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２４】
周辺バスコントローラ２７０はシステムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２５】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロックソース（例えば位相ロックループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
【００２６】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２７】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するための電力エンジン３２０を有する。
【００２８】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有の電力エンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２９】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、概して、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、リプレイキュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００３０】
インタフェース５１２は、外部バスを介してデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００３１】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表される物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００３２】
リプレイキュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているかを判別する。リプレイキュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再実行されるのを可能にする。
【００３３】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウン状態にある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、リフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
【００３４】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、起動コマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、リプレイキュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、リプレイキュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３５】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３６】
電力コントローラ５５０は、概して、ＡＸＩ（Advanced Extensible Interface, version 1）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「ＥＶＥＮＴ＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みタイミングエンジン５６８は、ＤＤＲインタフェース最大読出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３７】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３８】
図６は、いくつかの実施形態による、インテグラルポストパッケージリペアを伴うデータ処理システム６００のブロック図である。データ処理システム６００は、概して、データプロセッサ６１０と、データファブリック６２０と、メモリコントローラ６３０と、ＰＨＹ６６０と、メモリシステム６７０と、を含む。データプロセッサ６１０は、ポストパッケージリペアファームウェアを記憶するメモリ６１２と、ＣＰＵコア６１４と、を含む。メモリ６１２は、図１のシステムＢＩＯＳ１５７に対応し、ＣＰＵコア６１４は、ＣＰＵコアコンプレックス２１０のＣＰＵコア（例えば、ＣＰＵコア２１２又はＣＰＵコア２１４等）に対応する。図１のマルチコアアーキテクチャでは、１つのＣＰＵコアは、ＢＩＯＳサービスプロセッサ（ＢＳＰ）として知られており、システムＢＩＯＳ１５７に接続されている。データプロセッサ６１０において、ＣＰＵコア６１４はＢＳＰであり、ポストパッケージリペアファームウェアを含むＢＩＯＳ命令を読出して実行するために、メモリ６１２に双方向に接続されている。ＣＰＵコア６１４は、データファブリック６２０にも双方向に接続されており、読出し及び書込みコマンドをメモリシステムに発行し、メモリシステムから読出し応答を受信し、１つのＣＰＵコアの内部キャッシュに記憶され得る共有データについてＣＰＵコア６１４と他のＣＰＵコアコンプレックスとの間でプローブを発行し、プローブに応答する。
【００３９】
データファブリック６２０は、コヒーレントスレーブ６２２と、制御ブロック６２６と、を含む。コヒーレントスレーブ６２２は、読み書き要求に応じてアクセスを生成して、そのアクセスをメモリコントローラ６３０等の適切なメモリコントローラに提供するエンジンである。また、コヒーレントスレーブ６２２は、スクラバ６２４を含む。スクラバ６２４は、システム内の各メモリチップの各バンク及びメモリチップの各ランクを含むメモリの位置毎にメモリアドレスを巡回することによってスクラブ動作を実行するために用いられるハードウェアステートマシンである。コヒーレントスレーブ６２２は、スクラブ動作において、メモリシステム６７０内の連続した位置にリードモディファイライトサイクルを発行し、その結果、メモリエラーが検出され、いくつかのエラーの場合には訂正される。一方、制御ブロック６２６は、報告されたエラーを追跡し、訂正不可能なメモリエラーについてマシンチェック割込みを通知する。また、制御ブロック６２６は、メモリ６１２に記憶されたポストパッケージリペアを使用してポストパッケージリペア動作を実行する必要性について、ＣＰＵコア６１４に通知する。
【００４０】
メモリコントローラ６３０は、図５のメモリコントローラ５００を用いて実装することができる。しかしながら、図６に示すメモリコントローラ６３０は、メモリエラー検出、訂正及びポストパッケージリペア決定を実行するために用いられるメモリコントローラの部分のみを含む。図示するように、メモリコントローラ６３０は、メモリチャネルコントローラ６４０と、電力エンジン６５０と、を含む。メモリチャネルコントローラ６４０は、ホストインタフェース６４２と、ＰＨＹインタフェース６４４と、内部データパス６４６と、ＥＣＣチェック回路６４８と、を含む。内部データパス６４６は、データ及びＥＣＣ信号を伝えるために用いられ、ホストインタフェース６４２と、ＰＨＹインタフェース６４４と、ＥＣＣチェック回路６４８と、を内部的に接続する。ホストインタフェース６４２は、ＡＸＩ４バスに接続された双方向ポートと、内部データパス６４６に接続するための双方向ポートと、を有する。ＰＨＹインタフェース６４４は、内部データパス６４６に接続された双方向ポートと、ＤＦＩバスに接続するための双方向ポートと、を有する。ＥＣＣチェック回路６４８は、内部データパス６４６に接続された双方向ポートと、図６においてランク０及びランク７の各々に対応する「ＩＮＣ＿ＣＳ０」及び「ＩＮＣ＿ＣＳ７」と付された２つの代表的な出力を示す８つの出力のセットと、を有する。電力エンジン６５０は、信号ＩＮＣ＿ＣＳ０及びＩＮＣ＿ＣＳ７の各々の信号を受信し、ランク０及びランク７の各々に対応する代表的なカウンタ６５２，６５４を含む８つのカウンタのセットを含む。各カウンタは、ＡＸＩバスを介して、カウンタオーバーフロー信号をデータファブリック６２０の制御ブロック６２６に提供するための出力を有する。
【００４１】
ＰＨＹ６６０は、ＤＦＩバスを介してメモリコントローラ６３０に接続された双方向ポートと、メモリシステム６７０に接続するための「ＤＤＲ４  インタフェース」と付されたメモリインタフェースに接続された双方向ポートと、を有する。ＰＨＹ６６０は、図３のＤＤＲｘ  ＰＨＹ３３０及び図４のＤＤＲｘ  ＰＨＹ４４０，４５０に関して上述したように実装することができる。
【００４２】
メモリシステム６７０は、ＤＤＲ４メモリシステムであり、ＤＤＲ４インタフェースを介してＰＨＹ６６０に接続されている。ＤＤＲ４メモリは、ポストパッケージリペアをサポートし、したがって、以下により詳細に説明する方法でデータ処理システム６００と相互作用する。
【００４３】
動作中、データ処理システム６００は、利用可能なリソースを使用して、メモリ信頼性チェック、訂正可能なＥＣＣエラーのリペア、訂正不可能なＥＣＣエラーの報告、及び、ポストパッケージリペアを効率的に実行する。また、データ処理システム６００は、バックグラウンドのスクラブ動作を利用してハードエラーを検出し、ＤＤＲ４  ＤＲＡＭ等の一部のＤＲＡＭのポストパッケージリペア機能を用いて、訂正不可能なエラーが発生する前にこれらを訂正する。
【００４４】
データ処理システム６００は、ポストパッケージ検出及び訂正タスクを、データプロセッサ６１０、データファブリック６２０及びメモリコントローラ６３０に効率的に分配する。データファブリック６２０は、メモリシステム６７０内の全てのメモリ位置のバックグラウンドスクラブを実行するスクラバ６２４を含む。スクラブは低帯域幅のバックグラウンド処理であるため、単一のスクラバを複数のメモリコントローラと共に用いることによって、僅かな回路領域でメモリ空間全体をスクラブすることができる。
【００４５】
スクラバ６２４は、２つの動作モードを有している。第１に、スクラバ６２４は、バックグラウンドスクラブを実行する制御モードを有している。制御モードにおけるバックグラウンドスクラブは、ＥＣＣエラーが存在するかどうかを判別するために各メモリ位置を読み出すことを含む。特定のメモリ位置ついてＥＣＣエラーが存在しない場合、スクラバ６２４は、メモリ空間内の後続のメモリ位置を読出し続ける前に、データを再書込みする。一実施形態においては、スクラバ６２４は、一部のＤＲＡＭがオンチップＥＣＣを実装しているので、訂正可能なＥＣＣエラーが検出されたかどうかにかかわらず、データを再書込みする。後続の書込みサイクルは、ＤＲＡＭにおいて検出されたが修正されたためにスクラバ６２４に見られなかった訂正可能なＥＣＣエラーによって、更新されたデータがページバッファに再書込みされることを確実にする。そして、後続のプリチャージコマンドの際に、訂正済みデータが、エラーを訂正するためにメモリアレイに書き込まれる。しかしながら、後続の書込み動作がない場合には、エラーがメモリアレイ内で決して訂正されないことになる。代替の実施形態において、スクラバ６２４は、読出しサイクルを実行するが、検出されたエラーについてのデータを再書込みするのみである。スクラバ６２４が訂正可能なエラーを検出した場合、スクラバ６２４は、当該エラーをマシンチェックアーキテクチャ（ＭＣＡ）例外として報告する。
【００４６】
スクラバ６２４は、メモリシステム６７０内の全てのメモリ位置を特定のレートでスクラブする。例えば、スクラバ６２４は、１日に１回、全てのメモリ位置のスクラブを実行するというルールに従ってもよい。図示した実施形態において、スクラバ６２４は、長さ８のバーストを使用して単一のバーストでメモリシステム６７０から効率的に読み出すことができる、通常６４バイトのＣＰＵコアのキャッシュラインに等しいサイズを有するメモリ位置を読み出す。したがって、スクラバ６２４は、６４バイトバッファと、ＥＣＣ検出及び訂正回路と、を含む。しかしながら、他の実施形態では、スクラバ６２４は、領域又はページ等の様々なサイズのメモリ位置を読み出すことができる。
【００４７】
第２に、スクラバ６２４は、リダイレクトモードを有している。スクラバ６２４は、システムアクセスがＥＣＣエラーに遭遇したことに応じて上述したように、エラーをシステムＢＩＯＳに報告する。例えば、ＤＤＲｘ  ＤＩＭＭ用の一般的なＥＣＣメカニズムは、単一ビットのエラーの検出及び訂正と、複数ビットのエラー検出と、をサポートする。ＥＣＣエラーは、アルファ粒子が単一のメモリセルの内容を変更することによって発生する場合があり、したがって、永久に訂正される必要のないランダムエラーを表す。システムＢＩＯＳは、訂正可能なＥＣＣエラーを報告したことに応じて、メモリ位置の読み書き動作を実行するようにスクラバ６２４にリダイレクトする。しかしながら、スクラバ６２４が複数ビットのエラー等の訂正不可能なエラーを検出した場合には、ＭＣＡ例外を用いてそのことも報告し、データプロセッサ６１０が異なる訂正動作を行うのを可能にする。例えば、ソフトウェアエラーハンドラは、破損データを使用していたソフトウェアアプリケーションを停止させてもよいし、データプロセッサ６１０をリセットしてもよい。
【００４８】
スクラバ６２４は、各読出し要求をメモリコントローラ６３０に発行する。メモリコントローラ６３０は、通常動作アービトレーションに従って決定された順序で読出し要求を発行する。メモリコントローラ６３０は、要求データを受信すると、自身のＥＣＣチェックを実行し、算出されたＥＣＣがメモリから返されたＥＣＣと一致するかどうかを判別する。メモリコントローラ６３０がエラーを検出しない場合、スクラバ６２４は、次のメモリ位置に進む。しかしながら、メモリコントローラ６３０がエラーを検出した場合、インクリメント信号をアクティベートすることによって電力エンジン６５０に対してエラーを示す。最終的に、エラーカウント値が閾値を超えると、カウンタは、エラーを制御ブロック６２６に報告する。次に、制御ブロック６２６は、ポストパッケージリペア動作を含むことができる適切な改善措置をとる。
【００４９】
スクラバ６２４をポストパッケージリペアフローに組み込むことによって、データ処理システム６００は、既存の回路ブロックを使用して、ＤＤＲ４ポストパッケージリペア機能をアンロックする。メモリコントローラ６３０で利用可能なコピー及び再書込み動作を用いることによって、大きな読出し／書込みバッファの必要性を回避する。例えば、現在のメモリ構成及び密度では１行のサイズが８キロバイト（ｋＢ）であり、読み書き動作でこのタイプの動作を実行すると、カウンタは、メモリの全ての行を評価するために８ｋＢのバッファを必要とする。また、スクラバ６２４は、既に行われているであろうバックグラウンドタスクとして、データを故障行から移行させるのを可能にする。
【００５０】
このアーキテクチャには、いくつかの利点がある。第１に、このアーキテクチャは、ソフトエラーを検出及び訂正するために既に利用可能となり得るバックグラウンドスクラブを利用するので、効率的である。第２に、このアーキテクチャは、例えばＥＣＣチェック回路６４８及びカウンタのセット等の追加のハードウェアを僅かに用いて、最終的にポストパッケージリペア動作を発生させる可能性のあるエラーを追跡する。第３に、このアーキテクチャは、訂正可能なエラーを高いレートで検出することの可能なカウンタを使用しており、これにより、実際のプログラム障害又はデータ損失の前にポストパッケージリペア動作をトリガする。
【００５１】
図７は、いくつかの実施形態による、図６のデータ処理システム６００におけるポストパッケージリペアに関連する動作のフローチャート７００である。動作は、例えば、起動後しばらくしてから、システムＢＩＯＳ又はオペレーティングシステムがスクラバ６２４を開始するアクションボックス７１０で開始する。アクションボックス７２０において、スクラバ６２４は、リードモディファイライト（ＲＭＷ）サイクルの一部として、次のアドレスへの読出し要求を発行する。アクションボックス７３０において、メモリコントローラ６３０は、返送された読出しデータ及び対応するＥＣＣビットを伴う読出し応答を受信する。アクションボックス７４０において、メモリコントローラ６３０は、ＥＣＣチェック回路６３８を用いて、データ及び対応するＥＣＣビットに対してＥＣＣチェックを実行する。次に、フローは、サブフロー７５０に進む。
【００５２】
サブフロー７５０において、判別ボックス７５１は、ＥＣＣチェック回路６４８がデータエラーを検出したかどうかを判別する。エラーを検出した場合、アクションボックス７５２において、メモリコントローラ６３０は、エラーカウンタをインクリメントする。判別ボックス７５３は、エラーカウンタがターミナルカウントに達したかどうかを判別する。カウンタがターミナルカウントに達したかどうかの検出は、インクリメントカウンタ用のオーバーフロービット、又は、プリロード及びデクリメントカウンタ用のアンダーフロービットとして効率的に実行することができる。カウンタがターミナルカウントに達した場合、フローは、ポストパッケージリペアサブフロー７５４に進む。そうでなければ、フローは、判別ボックス７５５に進む。
【００５３】
判別ボックス７５５は、ＥＣＣエラーが訂正可能であるかどうか（例えば、１ビットエラーであるかどうか）を判別する。訂正可能でない場合には、フローは、アクションボックス７５６に進み、アクションボックス７５６において、メモリコントローラ６３０は、マシンチェックアーキテクチャ（ＭＣＡ）例外を通して訂正不可能なエラーをオペレーティングシステムに報告する。このような訂正不可能なエラーは、オペレーティングシステムに対して、プロセス又はプログラムの終了、システムの再起動等の適切な処置を行わせる。エラーが訂正可能である場合、アクションボックス７５７において、メモリコントローラ６３０は、エラーをスクラバ６２４に報告する。そして、アクションボックス７５８において、スクラバ６２４は、カウンタをインクリメントすることなく訂正済みデータを再書込みするように、メモリコントローラ６３０にリダイレクトする。
【００５４】
アクションボックス７６０において、スクラバ６２４は、次のスクラブサイクルに備えてそのアドレスをインクリメントし、次いで、アクションボックス７７０において、スクラバ６２４は、フローをアクションボックス７２０に戻す前に或る期間待機する。いくつかの実施形態では、スクラバ６２４は、特定のレート（例えば、全ての物理メモリを１日につき１回）でスクラブすることができるが、スクラビングのレートは、高レベルのエラーに応じて等において加速することができる。
【００５５】
図８は、いくつかの実施形態による、ポストパッケージリペアサブフローのフローチャート８００である。フローチャート８００は、メモリシステム６７０がＤＤＲ４  ＤＲＡＭを含むことを仮定しているが、ポストパッケージリペアをサポートする異なるＤＲＡＭに対して、本明細書に記載された動作に従って、対応するフローを定義することができる。フローはボックス８１０で開始する。アクションボックス８２０において、メモリコントローラ６３０は、影響を受けたメモリチップの全てのバンクをプリチャージし、それらのモードレジスタが更新されるのを可能にする。アクションボックス８３０において、メモリコントローラ６３０は、ＤＤＲ４規格に規定されるように特定のモードレジスタビットに書込むことによって、影響を受けたＤＲＡＭのデータバス反転（ＤＢＩ）及び巡回冗長チェック（ＣＲＣ）モードを無効にする。アクションボックス８４０において、メモリコントローラ６３０は、モードレジスタ４のビット１３（ＭＲ４［１３］）を１に設定することによって、影響を受けたメモリチップをポストパッケージリペアモードに移行する。なお、アクションボックス８３０と８４０との間では、いくつかのＤＲＡＭは、ランダムなソフトエラーが誤ってポストパッケージリペア動作を発生させるのを抑制するために、ポストパッケージリペアが有効にされる前に、拡張アンロックシーケンスを必要とする。アクションボックス８５０において、影響を受けたＤＲＡＭは、ポストパッケージリペア動作を実行する。アクションボックス８６０において、メモリコントローラ６３０は、ＭＲ４［１３］を０に設定することによって、影響を受けたメモリチップをポストパッケージリペアモードから抜け出させる。アクションボックス８７０において、フローは、フローチャート７００に示すメインフロー（具体的には、アクションボックス７６０）に戻る。
【００５６】
したがって、ポストパッケージリペアシステムは、システム信頼性を効率的に向上させる。システムは、ポストパッケージリペアが必要であると判別すると、ポストパッケージリペアの間にもたらされたエラーがシステムＥＣＣコードによって訂正可能なままとなるように、ＤＲＡＭ上でポストパッケージリペアを選択的に実行する。典型的なＤＲＡＭランクは、１８ｘ４のＤＲＡＭを用いる７２ビットメモリバスを含む。システム６００は、一度に１つのｘ４デバイスのリペアを可能にするｘ４「チップキル」訂正コードを有する。ポストパッケージリペアファームウェアを実行すると、単一のｘ４  ＤＲＡＭの対応するページの現在の内容が破壊される。しかしながら、ポストパッケージリペアの後、これらのエラーは訂正可能なエラーのままになり、これらのメモリ位置への通常のアクセス中に要求元に影響を与えることなく、インラインで訂正することができる。したがって、スクラバ６２４のＲＭＷアクセス（リダイレクト又は定期的なスクラブの何れかによる）は、ＥＣＣアクセスによって破壊されたビットを含む、ＥＣＣ及びデータの完全なＤＲＡＭ内容を再生成する。この動作は、リペアされているＤＲＡＭ内のデータのコピーを維持するための大きなバッファを必要とすることなく、又は、要求元からのメモリアクセスを長期間停止させることなく行われる。他の実施形態において、システム６００は、メモリアクセス要求を行うプロセッサ上で実行するルーチンとしてのシステムファームウェア又はソフトウェアとして、スクラバ６２４を実装することができる。
【００５７】
図７及び図８の方法と、データ処理システム６００のいくつかの動作とは、ハードウェア及びソフトウェアの様々な組み合わせによって実行することができる。例えば、ＥＣＣチェックは、ハードウェア回路を用いて、又は、コントローラ上で実行するファームウェアにおいて行うことができる。さらに、図示した実施形態では、スクラバ６２４がデータファブリック６２０内に存在するハードウェア回路として実装されているが、他の実施形態では、スクラバ６２４は、システムファームウェア又はソフトウェアで実施されるソフトウェアエンジンであってもよい。いくつかのソフトウェアコンポーネントは、少なくとも１つのプロセッサによる実行のためにコンピュータ可読記憶媒体に記憶されてもよい。さらに、図７及び図８に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶される命令であって、少なくとも１つのプロセッサによって実行される命令によって制御され得る。図７及び図８に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応することができる。様々な実施形態において、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性記憶装置を含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５８】
図６のデータ処理システム６００又はそのいかなる部分も、プログラムによって読み出され、集積回路を製造するために直接的若しくは間接的に用いられるデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、その記述を合成して、ゲートのリストを含むネットリストを合成ライブラリから生成することができる合成ツールによって読み出され得る。ネットリストは、集積回路を含むハードウェアの機能性を表すゲートのセットを含む。次に、ネットリストを配置しルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト（合成ライブラリの有無にかかわらず）、又は、必要に応じてデータセットであってもよいし、ＧＤＳ（Graphic Data System）ＩＩデータであってもよい。
【００５９】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者において明らかであろう。例えば、ポストパッケージリペア動作は、ＤＤＲ４  ＤＲＡＭに関して説明されているが、ポストパッケージリペアをサポートする、現在存在し得る他のメモリ又は将来仕様化され得る他のメモリに容易に適応することができる。さらに、バックグラウンドスクラバは、複数のメモリコントローラを制御することができるようにデータファブリック内に都合よく配置されているが、他の実施形態では、バックグラウンドスクラバは、代わりにメモリコントローラ内にあってもよい。さらに、開示された実施形態は、１バイト毎に１つの追加のＥＣＣビットを使用して、単一ビットの検出及び訂正と複数ビットの検出とをサポートしているが、他の実施形態では、より多くのビットを使用して、より多い数のビットの検出及び訂正を行うことができる他のＥＣＣスキームを使用してもよい。
【００６０】
１つの形態では、ポストパッケージメモリリペアシステム（６００）は、メモリチャネルコントローラ（６４０）と、第１エラーカウンタ（６５２）と、バックグラウンドスクラバ（６２４）と、メモリチャネルコントローラ（６４０）に接続されたデータプロセッサ（６１０）であって、制御信号に応じてメモリシステム（６７０）を用いてポストパッケージリペア動作を実行するデータプロセッサ（６１０）と、を備える。
【００６１】
１つの態様によれば、データプロセッサ（６１０）は、メモリチャネルコントローラ（６４０）に接続された中央処理装置（ＣＰＵ）コア（６１４）と、ＣＰＵコア（６１４）によって実行されると、メモリチャネルコントローラ（６４０）がポストパッケージリペア動作を実行するようにＣＰＵコア（６１４）に制御させる複数の命令を記憶するためにＣＰＵコア（６１４）に接続されたファームウェアメモリ（６１２）と、を備える。ファームウェアメモリ（６１２）は基本入出力システム（ＢＩＯＳ）を記憶し、複数の命令はＢＩＯＳの一部である。
【００６２】
他の態様によれば、第１エラーカウンタ（６５２）は、返送データ内のエラーをカウントするためにメモリチャネルコントローラ（６４０）に接続されており、所定の状態に達したことに応じて制御信号を提供する。この所定の状態は、第１エラーカウンタ（６５２）がターミナルカウントに達したときに達する。
【００６３】
さらに他の態様によれば、メモリチャネルコントローラ（６４０）は、ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換し、メモリインタフェース（６４４）から受信した応答に応じて返送データをホストインタフェース（６４２）に提供し、当該応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含む。メモリインタフェース（６４４）は、ダブルデータレート（ＤＤＲ）−物理インタフェース（ＤＦＩ）仕様と互換性を有するインタフェースに接続するように構成されている。
【００６４】
さらに他の態様によれば、バックグラウンドスクラバ（６２４）は、ハードウェア回路として実装されている。
【００６５】
さらなる態様によれば、バックグラウンドスクラバ（６２４）は、データプロセッサ（６１０）上で実行されるソフトウェアによって実装されている。
【００６６】
他の形態によれば、メモリコントローラ（６３０）は、ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換し、メモリインタフェース（６４４）から受信した応答に応じて返送データをホストインタフェース（６４２）に提供するメモリチャネルコントローラ（６４０）であって、応答は、返送データと、複数のエラー訂正コード（ＥＣＣ）ビットと、を含み、メモリチャネルコントローラ（６４０）は、返送データに対応する複数のエラー訂正コード（ＥＣＣ）ビットに基づいてエラーチェックを実行することによって返送データ内のエラーを検出し、返送データ内のエラーを検出したことに応じて、カウント信号を提供する、メモリチャネルコントローラ（６４０）と、カウント信号に応じてエラーをカウントするためにメモリチャネルコントローラ（６４０）に接続された第１エラーカウンタ（６５２）であって、所定の状態に達したことに応じて制御信号を提供する第１エラーカウンタ（６５２）と、を備える。
【００６７】
１つの態様によれば、メモリインタフェース（６４４）は、ダブルデータレート（ＤＤＲ）−物理インタフェース（ＤＦＩ）仕様と互換性を有するインタフェースに接続するように構成されている。
【００６８】
さらに他の形態によれば、方法は、ホストインタフェース（６４２）から受信したデータアクセス要求をメモリインタフェース（６４４）に提供される対応するメモリアクセスに変換することと、メモリインタフェース（６４４）から受信した応答に応じて返送データをホストインタフェース（６４２）に提供することであって、応答は、返送データ及び複数のエラー訂正コード（ＥＣＣ）ビットと、を含む、ことと、返送データ及び複数のＥＣＣビットに従ってエラーについてメモリシステム（６７０）をスクラブして、訂正可能なエラーをリペアすることと、スクラブの間、メモリシステム（６７０）の領域内の所定数のエラーに応じてメモリシステム上でポストパッケージリペア動作を実行することと、を含む。
【００６９】
１つの態様によれば、方法は、エラーカウンタ（６５２）がターミナルカウントに達したことに応じて、メモリシステム（６７０）においてポストパッケージリペア動作を実行することをさらに含む。
【００７０】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を包含することが意図されている。
【国際調査報告】
2019520639.tif 000011
2019520639.tif 000012