(57)【要約】  装置が説明される。装置は、プログラマブルコンポーネントを有するメモリコントローラを含む。プログラマブルコンポーネントは、データチェック機能を実装する。プログラマブルコンポーネントは、メモリコントローラに結合される２又はそれより多くのＤＩＭＭカードからデータチェック機能の部分結果を受信し、処理する。
2018524648.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルコンポーネントを含むメモリコントローラであり、前記プログラマブルコンポーネントはデータチェック機能を実装し、前記プログラマブルコンポーネントは前記メモリコントローラに結合される２又はそれより多くのＤＩＭＭカードから前記データチェック機能の部分結果を受信し、処理する、メモリコントローラを備える装置。
【請求項２】
前記プログラマブルコンポーネントは、プロセッサを含む、請求項１に記載の装置。
【請求項３】
前記プログラマブルコンポーネントは、プログラマブルロジックハードウェアコンポーネントを含む、請求項１又は２に記載の装置。
【請求項４】
前記プログラマブルロジックハードウェアコンポーネントは、プログラマブルロジックデバイスを有する、請求項３に記載の装置。
【請求項５】
前記プログラマブルロジックハードウェアコンポーネントは、フィールドプログラマブルゲートアレイを有する、請求項３または４に記載の装置。
【請求項６】
前記２又はそれより多くのＤＩＭＭカードは、少なくとも２つのメモリチャネルを介して前記メモリコントローラに結合される、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記メモリコントローラは、前記プログラマブルコンポーネントから前記データチェック機能の部分結果を受信し、処理する第２プログラマブルコンポーネントを有する処理コアに結合される、請求項１から６のいずれか一項に記載の装置。
【請求項８】
データチェック機能を実装するそれぞれの第１プログラマブルコンポーネントを有する１又は複数のＤＩＭＭカードと、
前記データチェック機能を実装する第２プログラマブルコンポーネントを有する第１メモリコントローラであり、前記第１メモリコントローラは前記１又は複数のＤＩＭＭカードから前記データチェック機能の部分結果を受信し、処理する、第１メモリコントローラと、
を備えるコンピューティングシステム。
【請求項９】
前記第１メモリコントローラは、前記第１メモリコントローラが結合される１又は複数の他のＤＩＭＭカードから前記データチェック機能の他の部分結果を受信し、処理する、第３プログラマブルコンポーネントを含む、請求項８に記載のコンピューティングシステム。
【請求項１０】
前記データチェック機能を実装する第３プログラマブルコンポーネントを有する第２メモリコントローラであり、前記第１メモリコントローラは、前記第２メモリコントローラが結合される１又は複数の他のＤＩＭＭカードから前記データチェック機能の部分結果を受信し、処理する、第２メモリコントローラをさらに備える、請求項９に記載のコンピューティングシステム。
【請求項１１】
前記第１メモリコントローラ及び前記第２メモリコントローラは、前記第１メモリコントローラ及び前記第２メモリコントローラから前記データチェック機能の部分結果を受信し、処理する第４プログラマブルコンポーネントを有する処理コアに結合される、請求項１０に記載のコンピューティングシステム。
【請求項１２】
前記第１メモリコントローラ及び前記第２メモリコントローラは、異なる半導体ダイ上に配置される、請求項１０又は１１に記載のコンピューティングシステム。
【請求項１３】
前記第１プログラマブルコンポーネントは、
プロセッサと、
プログラマブルロジックハードウェアコンポーネントと、
のうちのいずれかである、請求項８から１２のいずれか一項に記載のコンピューティングシステム。
【請求項１４】
前記第２プログラマブルコンポーネントは、
プロセッサと、
プログラマブルロジックハードウェアコンポーネントと、
のうちのいずれかである、請求項８から１３のいずれか一項に記載のコンピューティングシステム。
【請求項１５】
データチェック機能の第１コンポーネントをＤＩＭＭカードにプログラミングするための手段と、
前記データチェック機能の第２コンポーネントを前記ＤＩＭＭカードが結合される第１メモリコントローラにプログラミングするための手段と、
前記データチェック機能の部分結果を生成するために、前記ＤＩＭＭカード上で前記データチェック機能の前記第１コンポーネントを実行し、前記部分結果を前記ＤＩＭＭカードが結合される第１メモリコントローラに転送するための手段と、
前記第１メモリコントローラ上で前記部分結果を用いて前記データチェック機能の前記第２コンポーネントを実行するための手段と、
を備える装置。
【請求項１６】
前記第１コンポーネントをプログラミングするための手段は、
前記ＤＩＭＭカード上でアブストラクトプログラムコードをプロセッサにロードするための手段と、
前記ＤＩＭＭカード上でオブジェクトコードをプロセッサにロードするための手段と、
前記ＤＩＭＭカード上でハードウェア記述をプログラマブルロジックハードウェアコンポーネントにロードするための手段と、
のうちのいずれかを含む、請求項１５に記載の装置。
【請求項１７】
前記第２コンポーネントをプログラミングするための手段は、
前記ＤＩＭＭカード上でアブストラクトプログラムコードをプロセッサにロードするための手段と、
前記ＤＩＭＭカード上でオブジェクトコードをプロセッサにロードするための手段と、
前記ＤＩＭＭカード上でハードウェア記述をプログラマブルロジックハードウェアコンポーネントにロードするための手段と、
のうちのいずれかを含む、請求項１６に記載の装置。
【請求項１８】
前記データチェック機能のそれぞれの第１コンポーネントを第２ＤＩＭＭカードにプログラミングするための手段と、
前記第２ＤＩＭＭカード上の前記データチェック機能のそれぞれの前記第１コンポーネントを実行して、前記データチェック機能の第２部分結果を生成し、前記第２部分結果を第１メモリコントローラに転送するための手段と、
をさらに備える、請求項１６又は１７に記載の装置。
【請求項１９】
前記データチェック機能のそれぞれの第１コンポーネントを第２ＤＩＭＭカードにプログラミングするための手段と、
前記第２ＤＩＭＭカード上の前記データチェック機能のそれぞれの前記第１コンポーネントを実行して、前記データチェック機能の第２部分結果を生成し、前記第２部分結果を第２メモリコントローラに転送するための手段と、
をさらに備える、請求項１６から１８のいずれか一項に記載の装置。
【請求項２０】
前記第１メモリコントローラ及び前記第２メモリコントローラは、同じＣＰＵパッケージ内にある、請求項１９に記載の装置。
【請求項２１】
メモリページデータチェック機能を実装するプログラマブルコンポーネントを有するＤＩＭＭカードを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野は、概して、コンピューティングシステムであり、より詳細には、埋込みプログラマブルデータチェック機能を備えた不揮発性システムメモリコンピューティングシステムにおける即時再起動に関する。
【背景技術】
【０００２】
コンピューティングシステムは、典型的に、システムのプロセッサがその時点で実行しているソフトウェアコードのデータ及びプログラムコードを含むシステムメモリ（又はメインメモリ）を含む。多くのコンピュータシステムにおいて関係があるボトルネックは、システムメモリである。ここで、当該分野において理解されているように、コンピューティングシステムは、システムメモリに記憶されたプログラムコードを実行することにより動作する。プログラムコードは、実行されると、システムメモリからデータを読み、システムメモリにデータを書き込む。そのように、システムメモリは、コンピューティングシステムの動作の連続にわたって、多くのプログラムコード及びデータの読み出し並びに多くのデータの書き込みにより激しく利用される。したがって、システムメモリは、理想的には高性能であり且つ電力効率が高い。
【図面の簡単な説明】
【０００３】
本発明のより良い理解は、以下の図面と併せて以下の詳細な説明から得ることができる。
【図１】多段メモリを有するコンピューティングシステムを示す。
【図２】複数のメモリチャネル及び関連するＤＩＭＭカードをサポートするメモリコントローラを示す。
【図３ａ】アプリケーション特有のデータチェックを実行するためのプログラマブルな機能を有する処理コア、メモリコントローラ、及びＤＩＭＭを示す。
【図３ｂ】図３ａのアーキテクチャ上で実行可能な処理のフロー図を示す。
【図４】メモリページの例示的な図を示す。
【図５】第１のアプリケーションソフトウェア特有のメモリページデータチェックのシナリオを示す。
【図６】第２のアプリケーションソフトウェア特有のメモリページデータチェックのシナリオを示す。
【図７】第３のアプリケーションソフトウェア特有のメモリページデータチェックのシナリオを示す。
【図８】アプリケーションソフトウェア特有のメモリページデータチェック機能をプログラミングするための様々な手段を示す。
【図９】コンピューティングシステムの実施形態を示す。
【発明を実施するための形態】
【０００４】
高性能システムを実装する１つのやり方は、多階層のシステムメモリを有することである。図１は、メモリサイドキャッシュを有する多階層又は多段システムメモリ１１２を含むコンピューティングシステム１００の実施形態を示す。メモリサイドキャッシュ（ニアメモリキャッシュ１１３）は、コンピューティングシステムによってより頻繁に呼び出される及び／又は呼び出されることとなるアイテムである（及び／又はアイテムとなると期待される）システムメモリアイテムを格納するために使用される。ニアメモリキャッシュ１１３は、より低階層システムメモリコンポーネント（ファーメモリ１１４）より低いアクセス時間を有する。より頻繁に呼び出されるアイテムをニアメモリに格納することによって、システムメモリは、システムがより速いニアメモリ１１３に保持されているアイテムを頻繁に呼び出すこととなるため、より速く見られることとなる。
【０００５】
いくつかの実施形態によると、例えば、ニアメモリ１１３は、ファーメモリ１１４より速いクロック速度を示すことにより、アクセス時間が短縮される。ここで、ニアメモリ１１３は、より速い、揮発性システムメモリ技術（例えば、高性能ＤＲＡＭ）であってよい。対照的に、ファーメモリ１１４は、より遅いクロック速度で実装される揮発性メモリ技術（例えば、より遅いクロックを受信するＤＲＡＭコンポーネント）又は、例えば、揮発性／ＤＲＡＭメモリより本質的に遅い不揮発性メモリ技術のいずれかであってよい。
【０００６】
例えば、下位レベル１１４は、いくつかの可能性を挙げると、相変化型メモリ（例えば、ＳＸＰ又はＰＣＭＳ）、強誘電体メモリ（例えば、ＦＲＡＭ（登録商標））、磁気型メモリ（例えば、ＭＲＡＭ），スピントランスファトルク型メモリ（例えば、ＳＴＴ−ＲＡＭ）、レジスタ型メモリ（例えば、ＲｅＲＡＭ）又は「メモリスタ」型メモリのような新興の不揮発性３次元クロスポイントランダムアクセスメモリ技術から構成されてよい。そのような新興の不揮発性ランダムアクセスメモリ技術は、典型的に、以下のいくつかの組み合わせを有する。１）ＤＲＡＭより高い記憶密度（例えば、３次元回路構造で構成されることによるもの）。２）ＤＲＡＭより低い電力消費密度（例えば、それらはリフレッシュする必要がないから）。及び／又は３）ＤＲＡＭより遅いが、ＦＬＡＳＨのような従来の不揮発性メモリ技術よりさらに速いアクセスレイテンシ。後者の特徴は、特に、新興の不揮発性メモリ技術が、（不揮発性ストレージの従来のアーキテクチャの記憶場所である）低レベルストレージの役割ではなくメインシステムメモリの役割において使用されることを可能にする。
【０００７】
様々な実施形態では、ファーメモリ２１４は、従来の低レイヤ不揮発性ストレージに関連付けられるより大きなブロックベースのアクセスではなく、より細かい粒度のデータアクセス（例えば、キャッシュライン）をサポートするという点で真のシステムメモリとして動作し、及び／又は、そうでなければ、ＣＰＵのプロセッサにより実行されているプログラムコードが動作する（例えば、バイト）アドレス可能メモリとして動作する。
【０００８】
ニアメモリ１１３はキャッシュとして動作するので、ニアメモリ１１３はそれ自体の個別のアドレス空間を有さなくてよい。むしろ、ファーメモリ１１４のみが、コンピューティングシステムのメインメモリの個別にアドレス可能なメモリ空間を含む。様々な実施形態では、ニアメモリ１１３は、最後のレベルのＣＰＵキャッシュとして動作するのではなく、ファーメモリ１１４のキャッシュとして真に動作する。概して、ＣＰＵレベルキャッシュは、メモリコントローラ１１６と同じ半導体チップ上に集積される処理コア１１７に利用可能にされるシステムメモリのアドレス空間の全体にわたってキャッシュラインを維持することができる。
【０００９】
例えば、様々な実施形態では、図２を参照すると、システムメモリは、メモリチャネル２２０_１にプラグ接続されるＤＩＭＭカード２２１を用いて実装される。ここで、単一のＤＩＭＭカードは、ＤＲＡＭ及び新興の不揮発性メモリチップの両方を有し、ＤＲＡＭチップは、不揮発性メモリチップのオンボードキャッシュとして効果的に動作する。理想的には、あらゆる特定のＤＩＭＭカードのより頻繁にアクセスされるキャッシュラインは、そのＤＩＭＭカードの不揮発性メモリチップではなくそのＤＩＭＭカードのＤＲＡＭチップ上で見いだされるであろう。複数のＤＩＭＭカードは典型的に動作中のコンピューティングシステムにプラグ接続され、各ＤＩＭＭカードが、ＤＩＭＭカードが結合される半導体チップ又はＣＰＵパッケージの処理コアに利用可能にされるシステムメモリアドレスの所与のセクションのみが与えられるとすると、ＤＲＡＭチップは、最後のレベルのＣＰＵキャッシュではなくそれらがＤＩＭＭカードを共有する不揮発性メモリのキャッシュとして動作している。
【００１０】
他の構成では、ＤＲＡＭチップのみを有するＤＩＭＭカードは、不揮発性システムメモリチップのみを有するＤＩＭＭカードを用いて、同じシステムメモリチャネル（例えば、ＤＤＲチャネル）にプラグ接続されてよい。理想的には、チャネルのより頻繁に使用されるキャッシュラインは、不揮発性メモリのＤＩＭＭカードではなくＤＲＡＭのＤＩＭＭカード内に見いだされるであろう。したがって、再び、典型的に、複数の処理コアを有する同じ半導体チップに結合される複数のメモリチャネルがあるので、ＤＲＡＭチップは、最後のレベルのＣＰＵキャッシュとしてではなく、それらが同じチャネルを共有する不揮発性メモリチップのキャッシュとして動作している。
【００１１】
さらに他の実施形態では、（例えば、ＤＲＡＭのＤＩＭＭカード上に配置される）システムメモリ内のＤＲＡＭデバイスは、（例えば、不揮発性システムメモリのＤＩＭＭカード上に配置される）不揮発性システムメモリデバイスに提供されるシステムアドレス空間と異なるそれら独自の唯一のシステムアドレス空間が与えられてよい。この場合、システムメモリは、より高性能のアドレス領域及びより低い領域のキャッシュとして動作するより高い領域とは対照的であるより低性能アドレス領域を有するように構成される。さらに他の実施形態では、システムメモリは、不揮発性メモリデバイスのみを有する。
【００１２】
特有のシステムメモリ実装にかかわらず、上の解説は、不揮発性メモリデバイスが、従来の下位レベルのストレージデバイスではなく真のシステムメモリデバイスとして使用されてよいことを示す。不揮発性システムメモリの使用は、様々な非伝統的なコンピューティングシステムの方法論を提供する。
【００１３】
これらの１つが、「即時再起動」である。ここで、伝統的なコンピューティングシステムが電源オンされると、ソフトウェアプログラムコードは、下位レベルの従来のストレージからシステムメモリにロードされる。コンピューティングシステムの最初の電源オンとコンピュータの使用準備が整う時間との間に費やされる時間は、非常に長くなり得、主にソフトウェアのロード処理の作用である。
【００１４】
しかし、不揮発性システムメモリを用いて、ロード処理はかなり減少されることができる。ここで、ソフトウェアプログラムコードは、単にシステムメモリにロードされ、従来のストレージとしても保持される。コンピュータシステムを電源オンすると、ソフトウェアは、すでにシステムメモリ内に存在し、ロードする必要がない。
【００１５】
即時再起動は、不測の電源ダウンイベントの後に特に役に立ってよい。ここで、ソフトウェアは、おそらくシステムメモリから実行され、電源がなくなると特定の「状態」にある。すなわち、ソフトウェアは、ソフトウェアの多数の変数に割り当てられた特定のデータ値を有する１又は複数の特有の実行パスに沿っている。理論的に、不揮発性システムメモリが存在するため、ソフトウェアは、「オフにされたままだとしても、すぐにバックアップを取る」ことができるであろう。すなわち、コンピューティングシステムが再び動作可能になると、ソフトウェアは、不測の電源ダウンの状態（又はその直前）から再び動作を開始することができる。さらに、ソフトウェアをロードする必要がないため、ソフトウェアは、おそらく、コンピュータが再び電源オンされるすぐ後にこの状態から再起動することができるであろう。
【００１６】
面倒なのは、データが、さらなる動作のために正確とみなされる前にチェックされる必要があるという事実である。ハードウェアでは、これは、例えば、データに対して巡回冗長検査（ＣＲＣ）を実行することにより達成されることができる。残念ながら、ソフトウェア自体は、しばしば、不測の電源ダウンイベントを検出し、そしてデータが正確であることをそれ自体で立証するために書かれる。これは、システムメモリから大量のデータを呼び出し、システムの処理コアによって実行されるデータを有することを含む。システムメモリからのデータのロード及び処理コアのキャッシュレベルへのその転送は、大量の時間を使用し、不揮発性システムメモリの即時再起動の可能性を無にすることがある。
【００１７】
図３ａは、アプリケーションソフトウェアのデータチェック機能を実行するプログラマブルロジック回路を特に含む改善されたハードウェアアーキテクチャを示す。以下により詳細に説明されるように、アプリケーションソフトウェアプログラムのデータチェック機能は、論理関数Ｈ（  ）、Ｇ（  ）、及びＦ（  ）の様々な組み合わせのうちの１つとしてハードウェアに「移植」される。ここで、Ｈ（  ）は、プロセッサコア３１７（又はメモリコントローラ３１６の他のアーキテクチャ位置「ｎｏｒｔｈ」）に常駐するプログラマブル回路として見ることができる。同様に、Ｇ（  ）は、メモリコントローラ３１６に常駐するプログラマブル回路として見ることができ、Ｆ（  ）は、１又は複数のＤＩＭＭカード又は他のシステムメモリデバイスパッケージにロードされるプログラマブル回路として見ることができる。
【００１８】
したがって、全体環境は、図３ｂに示されるプロセスに従うように構成される。まず、アプリケーションソフトウェアのデータチェック機能は、（例えば、アプリケーションソフトウェアから抽出されることにより又はその分離可能又は兄弟コンポーネントとして提供されることにより）定義される（３０１）。次に、データチェック機能は、コンパイルされ、そうでなければデータチェック機能を実行する基本的なハードウェアをプログラミングする情報に転換される（３０２）。以下により詳細に説明されるように、情報は、システムメモリ内のアプリケーションソフトウェアのメモリページの任意のインターリービングに基づいて、ハードウェアの異なるアーキテクチャコンポーネント（例えば、処理コアＨ（  ）、メモリコントローラＧ（  ）、ＤＩＭＭカードＨ（  ））に分割されてよい。ここで、データチェックシーケンスは、典型的に、それらが強い可換プロパティを有するため、容易に分割可能である。すなわち、データが処理される順序は、無関係である。例えば、データチェック機能は、Ｆ（  ）、Ｇ（  ）、及びＨ（  ）の間で分割される１つの大きなＸＯＲ関数として実装されてよい。データチェック機能は、任意の複雑なソフトウェア動作であることができる。しかし、データチェック機能が可換でない場合、チェックされるデータのユニットは、使用される関数のレベルで存在しなければならない。例えば、データ全体が、単一のＤＩＭＭ内に適合する場合、Ｆ（  ）のみが使用される。あるいは、データ全体が単一のチャネル（メモリコントローラ）内に適合する場合、Ｇ（  ）のみが使用される。
【００１９】
次に、再起動シーケンスの際に、データは、ソフトウェアではなくプログラムハードウェアによってチェックされる（３０３）。データはハードウェア内でチェックされ、その大部分は処理コアの「下位」（例えば、メモリコントローラＧ（  ）内及び／又はＤＩＭＭカードＨ（  ）上）でチェックされ得るので、処理コアへのシステムメモリからの大量のデータの転送は回避される。そのように、即時再起動は、現実の実現性により近い。
【００２０】
当該分野において理解されているように、ページは、ユニットとして、メモリに切り換えられ、メモリから切り換えられることができるアプリケーションソフトウェアプログラムのデータのコレクションである。ここで、情報の１又は複数のページは、ソフトウェアプログラムによってメモリに呼び出される。ここで、典型的に、ソフトウェアプログラムによってメモリに呼び出されることができるページのサイズ及び／又はページの数及び／又は基本的なオペレーティングシステムのインスタント及び／又は仮想マシンモニタにおけるいくつかの制限がある。動作中、メモリを効率的に使用するために、メモリに呼び出されるページは、必要とされる又は必要とされると考えられるページであり、メモリから切り換えられるページは、必要とされない又は必要とされないと考えられるページである。
【００２１】
各ページは、また、キャッシュラインのようなより小さい個別のアドレス可能なデータユニットに分解されているように見られる。図４は、ａからｈにラベリングされた８つのキャッシュラインを有するページの例示的な図を示す。もちろん、これは、単なる例示に過ぎない。メモリページ及びそれらに関連付けられるデータユニットは、様々なサイズであることが多く、その結果、メモリページ当たりのユニットの数の点で多種多様な実施形態をもたらす。
【００２２】
メモリインターリービングは、ページのデータユニットが、異なるＤＩＭＭ又は異なるメモリコントローラのような異なる物理リソースにわたって拡がり得る技術である。ここで、ソフトウェアプログラムは、頻繁に、おおよそ同じタイムフレーム内に同じページ上のデータを呼び出してよい。複数の物理リソースにわたって同じページのデータユニットを拡散することにより、これらのデータユニットへのシステムメモリアクセスは、直列化された性質より並列化された性質を有してよい。言い換えると、同じページのデータユニットのすべてが同じメモリチップ内に記憶され及びアプリケーションソフトウェアが即座にデータユニットのすべてを必要とする場合、システムは、各データユニットが個別に相次いでアクセスされている間待機する以外にない。
【００２３】
上述のように、システムメモリのソフトウェアアプリケーションのメモリページ内のデータの任意のインターリービングは、図３ａ及び図３ｂのどのプログラマブルなパーティションＨ（  ）、Ｇ（  ）、Ｆ（  ）がどの機能を実行するかを決定するファクタであってよい。図５は、ページ全体が同じＤＩＭＭ５２１上に記憶される第１の可能なシナリオを示す。この場合、ソフトウェアアプリケーションの全データチェック機能は、ＤＩＭＭカード上のＦ（  ）関数によって実行されることができる。全アプリケーションに対するメモリのフットプリントが同一に構成される場合、アプリケーションのすべてのメモリページの全データチェック機能は、ソフトウェアアプリケーションのページが保持されるシステムの１又は複数のＤＩＭＭカードによって実行されることができる。各ＤＩＭＭカード上で、第１ページがＤＩＭＭからチェックされた後、ＤＩＭＭ上のアプリケーションのすべてのページがチェックされるまで、次のページがチェックされる。
【００２４】
図６は、同じページのキャッシュラインが異なるＤＩＭＭにわたって拡げられる別のシナリオを示す。具体的には、第１ＤＩＭＭカード６２１_１は、キャッシュラインａ，ｃ，ｅ，ｇを有し、第２ＤＩＭＭカード６２１_２は、キャッシュラインｂ，ｄ，ｆ，ｈを有する。故にＤＩＭＭカード６２１_１上のＦ（  ）関数は、キャッシュラインａ，ｃ，ｅ，ｇ上でデータチェックを実行することができ、ＤＩＭＭカード６２１_２上のＦ（  ）関数は、キャッシュラインｂ，ｄ，ｆ，ｈ上でデータチェックを実行することができる。両ＤＩＭＭ上の両Ｆ（  ）関数の演算結果は、依然としてページ全体のデータチェック機能を完了するのに組み合わされる必要のある部分積又は部分結果に似ている。そのように、ＤＩＭＭカード６２１_１は、部分結果をキャッシュラインａ，ｃ，ｅ，ｇからメモリコントローラ６１６のＧ（  ）関数に送信し、ＤＩＭＭカード６２１_２は、部分結果をキャッシュラインｂ，ｄ，ｆ，ｈからメモリコントローラ６１６のＧ（  ）関数に送信する。次に、メモリコントローラのＧ（  ）関数は、受信した部分結果の両方を用いて計算を実行することにより、ページ全体のデータチェックを完了する。
【００２５】
再び、ソフトウェアアプリケーションのすべてのメモリページが同様に構成されると、ソフトウェアアプリケーションのすべてのメモリページは、同じ処理によってチェックされることができる。すべてのＤＩＭＭカードがすべてのメモリページのすべての部分結果をレポートし且つメモリコントローラが同じページからのすべての部分積について計算を実行した後、アプリケーションのメモリページは、完全にチェックされている。アプリケーションのメモリページが、図５及び６のシナリオの組み合わせのようにシステムメモリにおいて実装される場合、次に、アプリケーションのメモリページは、図５及び６に関して上で説明された処理の組み合わせを介して完全にチェックされることができる。
【００２６】
図６のシナリオは、異なるＤＩＭＭカード６２１_１、６２１_２が同じメモリコントローラ６１６に結合される環境に向けられる。示されるように、異なるＤＩＭＭカード６２１_１、６２１_２は、同じメモリコントローラ６１６から出てくる異なるメモリチャネルに結合される。他の実施形態では、異なるＤＩＭＭカード６２１_１、６２１_２は、同じメモリチャネルに結合されてよい。加えて、図６のシナリオは、たった２つの異なるＤＩＭＭカードが単一のメモリページのすべてのキャッシュラインを保持すると仮定する。代替の実施形態では、２を超えるＤＩＭＭカードが、単一のメモリページのキャッシュラインを格納してよい。
【００２７】
図６のシナリオは、メモリコントローラあたり１つのＧ（  ）関数のみを示す。しかし、様々な実装は、メモリコントローラあたり１より多いＧ（  ）関数インスタンスを含んでよい。例えば、８つのメモリチャネルをサポートするメモリコントローラは、２つのＧ（  ）関数インスタンス（４つのメモリチャネルあたり１つ）を有してよい。同様に、１より多いＦ（  ）関数インスタンスは、任意のＤＩＭＭカード又は他のシステムメモリデバイスパッケージ上に存在してよい。
【００２８】
図７は、同じメモリページのデータユニットが、複数のＤＩＭＭカードにわたって拡がるだけでなく、複数のメモリコントローラ７１６_１、７１６_２並びにメモリコントローラ毎の複数のＤＩＭＭカードにわたってさらに拡がるさらに別のシナリオを示す。具体的には、ＤＩＭＭカード７２１_１及び７２１_２は、メモリコントローラ７１６_１に結合され、ＤＩＭＭカード７２１_３及び７２１_４は、メモリコントローラ７１６_２に結合される。
【００２９】
図７に見られるように、メモリページはインターリーブされ、それにより、ＤＩＭＭカード７２１_１はキャッシュラインａ及びｅを保持し、ＤＩＭＭカード７２１_２はキャッシュラインｃ及びｇを保持し、ＤＩＭＭカード７２１_３はキャッシュラインｂ及びｆを保持し、ＤＩＭＭカード７２１_４はキャッシュラインｄ及びｈを保持する。そのように、部分的なデータチェック結果は、キャッシュラインａ及びｅに対してＤＩＭＭカード７２１_１上のＦ（  ）関数により、キャッシュラインｃ及びｇに対してＤＩＭＭカード７２１_２上のＦ（  ）関数により計算される。これらの部分的なデータチェック結果は、キャッシュラインａ，ｅ，ｃ，及びｇを考慮した組み合わせられた部分データチェック結果を作成するメモリコントローラ７１６_１上のＧ（  ）関数に転送される。
【００３０】
同様に、部分的なデータチェック結果は、キャッシュラインｂ及びｆに対してＤＩＭＭカード７２１_３上のＦ（  ）関数により、キャッシュラインｄ及びｈに対してＤＩＭＭカード７２１_４上のＦ（  ）関数により計算される。これらの部分的なデータチェック結果は、キャッシュラインｂ，ｆ，ｄ，及びｈを考慮した組み合わせられた部分データチェック結果を作成するメモリコントローラ７１６_２上のＧ（  ）関数に転送される。次に、メモリコントローラ７１６_１及び７１６_２からの組み合わせられた部分データチェック結果は、そのＨ（  ）関数がメモリページに対する最終データチェックを実行する処理コアに転送される。メモリページに対する最終チェックは、チェック関数の全体の出力を格納値と比較することにより実行されてよい。値は、レジスタ空間又はメモリ空間に記憶されてよい。様々な実施形態では、格納値に対する関数出力のチェックは、Ｆ（  ）、Ｇ（  ）、及びＨ（  ）レベルのいずれかでロジック（ハードウェア及び／又はソフトウェア）により実行されてよい（例えば、全データチェック機能は、Ｇ（  ）レベルで現実され、チェックは、メモリコントローラ又はより上位のプロセッサレベルで実行されてよい）。
【００３１】
様々な実施形態では、複数のメモリコントローラ７１６_１、７１６_２は、同じダイ（例えば、１セットのプロセッサコアが、同じ半導体ダイ上の複数のシステムメモリコントローラに結合される）又は少なくとも同じＣＰＵパッケージ（例えば、それぞれがメモリコントローラ及び対応するセットのプロセッサコアを有する複数のシステムオンチップ（ＳＯＣ）半導体ダイ）内に存在してよい。後者の場合、メモリコントローラ７１６_１及び７１６_２は、異なる半導体ダイ上にあり、１つのダイのコアの１つのＨ（  ）関数は、メモリページに対する最終データチェック計算を実行するために使用される。
【００３２】
したがって、メモリページに対するデータチェックシーケンスは、メモリページがハードウェア内でインターリーブされたやり方に依存して、ハードウェア内に分割されることができる。
【００３３】
ソフトウェアのデータチェックルーチンがハードウェアに移植されるメカニズムは、実施形態から異なってよい。図８を参照すると、当該分野において理解されているように、ソフトウェアアプリケーションは、典型的に、ソースコード（例えば、Ｃ＋＋）で記述される。アプリケーションのデータチェックルーチン８０１のソースコード表現は、アブストラクトコード８０２又はオブジェクトコード８０３のような下位の形式のコードにコンパイルされてよい。アブストラクトコード８０２は、ハードウェアプロセッサ上で「実行」するインタプリタ又は仮想マシンにより実行されることができるコードの形式である。オブジェクトコード８０３は、プロセッサ上で直接実行される。
【００３４】
様々な実装では、Ｈ（  ）、Ｇ（  ）、又はＦ（  ）関数のいずれかは、ローカルメモリ（例えば、マイクロコントローラ又は処理コアに直接又はそうでなければ関連付けられるメモリ）外のプログラムコードを実行するマイクロコントローラ、処理コア、又はデジタル信号プロセッサ（すべて「プロセッサ」と称され得る）として実装される。ここで、ソフトウェアアプリケーションのデータチェックルーチン８０１のソースコード表現は、プロセッサ上で実行されるインタプリタ又は仮想マシンにより実行されるアブストラクトコード８０２にコンパイルされてよく、又はプロセッサにより直接実行されるオブジェクトコードにコンパイルされてよい。Ｈ（  ）関数は、ＳＯＣの標準処理コアにより実装されてよいが、図５、６及び７のシナリオは、Ｈ（  ）関数に送られる情報の量を、処理コアによりすべてのデータチェックを実行する手法と比べて削減することに留意されたい。
【００３５】
さらに別の手法では、Ｈ（  ）、Ｇ（  ）、又はＦ（  ）関数のいずれかは、プログラマブルロジックデバイス（ＰＬＤ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなプログラマブルロジックハードウェアとして実装されてよい。プログラマブルロジックハードウェアは、プロセッサがするように、プログラムコードを実行しない。むしろ、ハードウェアによって実行される論理関数は、ハードウェアのハードウェア回路にプログラムされる。例えば、ヒューズが切断されて特定の論理ゲートへの／からのルートを切り離してよく、又は埋め込みメモリ（例えば、ＳＲＡＭ）は、所望の論理機能を実装するルックアップテーブル情報を用いてロードされてよい。Ｈ（  ）、Ｇ（  ）、又はＦ（  ）関数のいずれかがプログラマブルロジックハードウェアを用いて実装される場合、アプリケーションソフトウェアのデータチェックルーチン８０１のソースコードは、プログラマブルロジックハードウェアデバイスを最終的にプログラミングするために使用され得るハードウェア回路記述フォーマット８０４にコンパイルされてよい。様々な実装は、システムのＨ（  ）、Ｇ（  ）、及びＦ（  ）関数のいずれかを実装するために、プロセッサ及びプログラマブルロジックハードウェアデバイスの組み合わせを採用してよい。
【００３６】
図９は、パーソナルコンピューティングシステム（例えば、デスクトップ又はラップトップ）又はタブレットデバイス又はスマートフォンのようなモバイル又はハンドヘルドコンピューティングシステムのような例示的なコンピューティングシステム９００の図を示す。図９に見られるコンピューティングシステムは、上記のＨ（  ）、Ｇ（  ）、及びＦ（  ）のいずれかを含んでよい。
【００３７】
図９に見られるように、基本的なコンピューティングシステムは、中央処理ユニット９０１（例えば、アプリケーションプロセッサ又はマルチコアプロセッサ上に配置される複数の汎用処理コア及びメインメモリコントローラを含んでよい）、システムメモリ９０２、ディスプレイ９０３（例えば、タッチスクリーン、フラットパネル）、ローカル有線ポイントツーポイントリンク（例えば、ＵＳＢ）インターフェース０４、様々なネットワークＩ／Ｏ関数９０５（イーサネット（登録商標）インターフェース及び／又はセルラモデムサブシステムのような）、無線ローカルエリアネットワーク（例えば、ＷｉＦｉ）インターフェース９０６、無線ポイントツーポイントリンク（例えば、ブルートゥース（登録商標））インターフェース９０７、及びグローバルポジショニングシステムインターフェース９０８、様々なセンサ９０９_１から９０９_Ｎ（例えば、ジャイロスコープ、加速度計、磁力計、温度センサ、圧力センサ、湿度センサ、その他のうちの１又は複数）、カメラ９１０、バッテリ９１１、電力管理制御ユニット９１２、スピーカ及びマイク９１３及びオーディオコーダ／デコーダ９１４を含んでよい。ディスプレイ９０３は、ここで説明されるようなＬＥＤドライバ回路によって駆動されるＬＥＤディスプレイであってよい。
【００３８】
アプリケーションプロセッサ又はマルチコアプロセッサ９５０は、そのＣＰＵ９０１内に１又は複数の汎用処理コア９１５、１又は複数のグラフィック処理ユニット９１６、メモリ管理機能９１７（例えば、メモリコントローラ）及びＩ／Ｏ制御機能９１８を含んでよい。汎用処理コア９１５は、典型的に、コンピューティングシステムのオペレーティングシステム及びアプリケーションソフトウェアを実行する。グラフィック処理ユニット９１６は、典型的に、グラフィックインテンシブ関数を実行して、例えば、ディスプレイ９０３上に与えられるグラフィック情報を生成する。メモリ制御機能９１７は、システムメモリ９０２とインターフェース接続する。システムメモリ９０２は、多段システムメモリであってよい。動作の間、データ及び／又は命令は、典型的に、最低レベルの不揮発性（例えば、「ディスク」）ストレージ９２０及びシステムメモリ９０２の間で転送される。電力管理制御ユニット９１２は、概して、システム９００の電力消費を制御する。
【００３９】
タッチスクリーンディスプレイ９０３、通信インターフェース９０４−９０７、ＧＰＳインターフェース９０８、センサ９０９、カメラ９１０、及びスピーカ／マイクコーデック９１３，９１４のすべてのそれぞれは、適切な場所には、集積されたペリフェラルデバイス（例えば、カメラ９１０）を同様に含むコンピューティングシステム全体と比べて様々な形式のＩ／Ｏ（入力及び／又は出力）として見られることができる。実装に依存して、これらのＩ／Ｏコンポーネントの様々なものは、アプリケーションプロセッサ／マルチコアプロセッサ９５０上に集積されてよく、ダイの外又はアプリケーションプロセッサ／マルチコアプロセッサ９５０のパッケージ外にあってもよい。
【００４０】
発明の実施形態は、上記のように、様々な処理を含んでよい。処理は、機械実行可能命令において具現されてよい。命令は、汎用又は専用プロセッサに、特定の処理を実行させるために使用されることができる。あるいは、これらの処理は、処理を実行するためのハードウェアに組み込まれたロジックを含む特定のハードウェアコンポーネントによって、又はプログラムされたコンピュータコンポーネント及びカスタマイズされたハードウェアコンポーネントの任意の組み合わせによって実行されてよい。
【００４１】
本発明の要素は、機械実行可能命令を格納するための機械可読媒体として提供されてもよい。機械可読媒体は、これらに限定されないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、及び磁気光ディスク、ＦＬＡＳＨメモリ、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、伝搬媒体、又は電子命令を格納するのに適した他のタイプの媒体／機械可読媒体を含んでよい。例えば、本発明は、通信リンク（例えば、モデム又はネットワークコネクション）を介して搬送波又は他の伝搬媒体に具現されるデータ信号として、リモートコンピュータ（例えば、サーバ）からリクエストしているコンピュータ（例えば、クライアント）に転送され得るコンピュータプログラムとしてダウンロードされてよい。
【００４２】
前述の明細書において、本発明は、その特定の例示的な実施形態を参照して説明されている。しかし、添付の特許請求の範囲に記載される本発明のより広い思想及び範囲から逸脱することなく、様々な修正及び変更がこれになされ得ることは明らかであろう。これにより、明細書及び図面は、限定的な意味ではなく例示的なものとしてみなされるべきである。
【図１】
2018524648.tif 000003
【図２】
2018524648.tif 000004
【図３ａ】
2018524648.tif 000005
【図３ｂ】
2018524648.tif 000006
【図４】
2018524648.tif 000007
【図５】
2018524648.tif 000008
【図６】
2018524648.tif 000009
【図７】
2018524648.tif 000010
【図８】
2018524648.tif 000011
【図９】
2018524648.tif 000012
【国際調査報告】
2018524648.tif 000013
2018524648.tif 000014
2018524648.tif 000015