(57)【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラム命令に応答して、データ処理操作を実施するように構成される処理回路と、
前記処理回路に連結され、前記プログラム命令に応答して、前記データ処理操作を実施するように、前記処理回路を制御するための制御信号を生成する、命令デコーダ回路と、
を備え、前記命令デコーダ回路は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる前記メモリアドレスの場所を指定するプレロード命令をデコードする際に、前記メモリアドレスをヌル値と比較し、かつ、
（ｉ）前記メモリアドレスが、前記ヌル値と一致しない場合、前記プレロード操作を実施するための制御信号であって、前記処理回路を制御するための制御信号を生成し、
（ｉｉ）前記メモリアドレスが、前記ヌル値と一致する場合、前記プレロード操作を実施するための制御信号であって、前記処理回路を制御するための制御信号を生成しないものである、装置。
【請求項２】
仮想アドレスと物理アドレスとの間のトランスレーションを指定する、アドレスマッピングデータを記憶するように構成される、トランスレーションルックアサイドバッファ回路を含み、前記メモリアドレスは、仮想メモリアドレスであり、前記アドレスマッピングデータが、前記メモリアドレスのためのトランスレーションを指定しない場合、前記プレロード操作は、前記メモリアドレスのためのアドレスマッピングデータの、前記トランスレーションルックアサイドバッファ回路へのロードをトリガする、請求項１に記載の装置。
【請求項３】
前記メモリアドレスのための前記アドレスマッピングデータが、ページテーブルウォーク操作を使用してアクセスされる、請求項２に記載の装置。
【請求項４】
キャッシュメモリを備え、前記プレロード操作が、前記メモリアドレスから前記キャッシュメモリへデータをロードする、請求項１、２、および３のいずれか１項に記載の装置。
【請求項５】
前記ヌル値がゼロである、請求項１、２、３および４のいずれか１項に記載の装置。
【請求項６】
前記ヌル値が、一連の値のうちの１つである、請求項１〜４のいずれか１項に記載の装置。
【請求項７】
前記ヌル値が、プログラム可能な値である、請求項１〜４のいずれか１項に記載の装置。
【請求項８】
前記ヌル値が、前記プレロード操作の対象とならないメモリアドレスを検出するように構成される検出回路によってプログラムされる、請求項６に記載の装置。
【請求項９】
前記メモリアドレスが、メモリアドレスページに分割されるメモリアドレススペース内にあり、前記命令デコーダ回路が、アクセス不可能メモリページへのメモリアクセスであると以前に検出されたメモリアクセスに対応するように、前記ヌル値を設定する、請求項１〜４のいずれか１項に記載の装置。
【請求項１０】
データを処理するための装置であって、
プログラム命令に応答して、データ処理操作を実施するための処理手段と、
前記プログラム命令に応答して制御信号を生成するための命令デコーダ手段であって、前記制御信号は、前記データ処理操作を実施するように前記処理手段を制御する、手段と、
を備え、前記命令デコーダ手段は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる前記メモリアドレスの場所を指定するプレロード命令をデコードする際に、前記メモリアドレスをヌル値と比較し、かつ、
（ｉ）前記メモリアドレスが、前記ヌル値と一致しない場合、前記プレロード操作を実施するための制御信号であって、前記処理手段を制御するための制御信号を生成し、
（ｉｉ）前記メモリアドレスが、前記ヌル値と一致する場合、前記プレロード操作を実施するための制御信号であって、前記処理手段を制御するための制御信号を生成しないものである、装置。
【請求項１１】
データを処理する方法であって、
データ処理操作を制御するための制御信号を生成するために、プログラム命令をデコードするステップと、
前記プログラム命令に応答して前記データ処理操作を実施するステップと、
を含み、前記デコードするステップは、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる前記メモリアドレスの場所を指定するプレロード命令をデコードする際に、前記メモリアドレスをヌル値と比較し、かつ、
（ｉ）前記メモリアドレスが、前記ヌル値と一致しない場合、前記プレロード操作を実施するための制御信号であって、前記データ処理操作を制御するための制御信号を生成し、
（ｉｉ）前記メモリアドレスが、前記ヌル値と一致する場合、前記プレロード操作を実施するための制御信号であって、前記データ処理操作を制御するための前記制御信号を生成しないものである、方法。
【請求項１２】
前記方法は、仮想アドレスと物理アドレスとの間のトランスレーションを指定する、アドレスマッピングデータを記憶するステップをさらに含み、
前記メモリアドレスは、仮想メモリアドレスであり、
前記方法は、前記アドレスマッピングデータが、前記メモリアドレスのためのトランスレーションを指定しない場合、前記プレロード操作に基づき、前記メモリアドレスのためのアドレスマッピングデータのロードをトリガするステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記メモリアドレスのための前記アドレスマッピングデータが、ページテーブルウォーク操作を使用してアクセスされる、請求項１２に記載の方法。
【請求項１４】
前記プレロード操作が、前記メモリアドレスからキャッシュメモリにデータをロードする、請求項１１、１２、および１３のいずれか１項に記載の方法。
【請求項１５】
前記ヌル値がゼロである、請求項１１〜１４のいずれか１項に記載の方法。
【請求項１６】
前記ヌル値が、一連の値のうちの１つである、請求項１１〜１４のいずれか１項に記載の方法。
【請求項１７】
前記ヌル値が、プログラム可能な値である、請求項１１〜１４のいずれか１項に記載の方法。
【請求項１８】
前記ヌル値は、前記プレロード操作の対象とならないメモリアドレスをハードウェアにおいて検出することによって、プログラムされるものである、請求項１７に記載の方法。
【請求項１９】
前記メモリアドレスが、メモリアドレスページに分割されるメモリアドレススペース内にあり、前記ヌル値が、以前に検出されたアクセス不可能メモリページへのメモリアクセスに対応するように設定される、請求項１１〜１４のいずれか１項に記載の方法。
【請求項２０】
請求項１１〜１９のいずれか１項に記載の方法に従って作動するようにコンピュータを制御する、コンピュータプログラムによって提供される仮想機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、後のメモリアクセスに備えるために、プレロード操作をトリガさせるためのプレロード命令をサポートする、データ処理システムに関する。
【背景技術】
【０００２】
プレロード命令をサポートするデータ処理システムを提供することは公知である。かかるプレロード命令は、後のメモリアドレスへのメモリアクセスに備えるためのプレロード操作の対象となる、メモリアドレスを指定する。このメモリアドレスにおけるデータは、少なくとも後にアクセスされる可能性があり、したがって後のアクセスに備えるためのプレロード操作は、後のアクセスを加速することができる。しかしながら、プレロード操作は、機能するためのエネルギーを消費し、状況によっては、機能することが所望される他のデータ処理操作を遅らせ得、例えば、フェッチをトリガさせるプレロード操作は、そのフェッチデータ値を直ちに要求する、後のロード操作の妨げとなる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
エネルギー消費の低減および実行の効率性を改善することができる措置は、有利である。
【課題を解決するための手段】
【０００４】
一態様から概観すると、本発明は、データを処理するための装置であって、
プログラム命令に応じて、データ処理操作を実施するように構成される処理回路と、
該処理回路に連結され、該プログラム命令に応答して、該データ処理操作を実施するように、該処理回路を制御するための制御信号を生成する、命令デコーダ回路と、
を備え、該命令デコーダは、プレロード命令に応答し、該プレロード命令は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる該メモリアドレスの場所を指定し、該メモリアドレスをヌル値と比較し、かつ、
（ｉ）該メモリアドレスが、該ヌル値と一致しない場合、該プレロード操作を実施するために、該処理回路を制御するための制御信号を生成し、
（ｉｉ）該メモリアドレスが、該ヌル値と一致する場合、該プレロード操作を実施するために、該処理回路を制御するための該制御信号を生成しない、装置を提供する。
【０００５】
本技術は、特定のメモリアドレスについて、プレロード命令が、そのメモリアドレスをプレロードしようとして実行される場合、プレロード操作を抑制することが望ましい場合があることを認識する。例として、特定のメモリアドレスは、実施されることがなく、かつ実際に要求されないデータアクセスに対応することは知られ得る。したがって、それらのメモリアドレスに対応しているデータ値をプレロードしようとするプレロード命令は、浪費エネルギーにつながると思われ、実施されている他のより有用な命令を妨げる可能性がある。これらのメモリアドレスは、ヌル値として見なされる場合があり、命令デコーダは、プレロード操作が実際に実施されるべきかどうかを決定するために、受信したプレロード命令のメモリアドレスを、これらのヌル値と比較し得る。メモリアドレスがヌル値と一致する場合、プレロード操作は実施されない。これは、エネルギーを節約し、効率性を高める。
【０００６】
プレロード操作が、多種多様な異なる形態をとり得ることは、理解されるだろう。幾つかのシステムでは、トランスレーションルックアサイドバッファ回路は、仮想アドレスと物理アドレスとの間のトランスレーションを指定する、アドレスマッピングデータを記憶する。本文脈におけるプレロード操作は、メモリアドレスのためのアドレスマッピングデータが、トランスレーションルックアサイドバッファ内にまだ記憶されていない場合、メモリアドレスのためのアドレスマッピングデータの、トランスレーションルックアサイドバッファへのロードをトリガし得る。それゆえに、実際のロード操作が要求されるとき、アドレストランスレーションデータは、すでにトランスレーションルックアサイドバッファ内に存在し、したがってロード操作は、より迅速に進み得る。
【０００７】
トランスレーションデータの、トランスレーションルックアサイドバッファへのロードは、ページテーブルウォーク操作を使用してもよい。かかるページテーブルウォークは、メモリアドレストランスレーションデータを記憶する効率的方法であるが、比較的遅いという不都合を被る。したがって、ページテーブルウォーク操作を使用して、メモリアドレスのためのトランスレーションデータの記憶をトリガさせる機能を果たす、メモリアドレスに対するプレロード命令は、そのメモリアドレスへの実際のアクセス操作が実施されるとき、かなりの時間を節約する。
【０００８】
他の実施形態では、キャッシュメモリが提供されてもよく、プレロード操作は、データを、メモリアドレスからキャッシュメモリへロードしてもよい。このロードされたデータは、次いで、メモリアドレスへのアクセスが要求されるとき、より迅速に入手可能となる。
【０００９】
ヌル値は、ゼロ等の固定値に設定され得る。ゼロメモリアドレスは、誤操作を捕らえる方法として、多くのオペレーティングシステムによって、通常アクセス不可能に設定される、メモリアドレススペースにおける最終ページに通常は対応する。ゼロであるメモリアドレスポインタ値もまた、データアクセスの連結リストシーケンスの最終部分を示す一般的な方法であり、最後のデータブロックは、それが最後のデータブロックであることを示すために、ゼロのヌル値で満たされた次のデータブロックへのポインタを有する。
【００１０】
ヌル値はまた、一連の値のうちのいずれか１つであってもよく、例えば、メモリアドレスの範囲内の任意のメモリアドレスは、ヌル値と一致するものとして扱われる。
【００１１】
ヌル値は、ソフトウェアまたはハードウェア制御下で、プレロード操作が実際に要求されないことの指標として、ユーザまたはシステムに知られる値に設定されるプログラマブル値であってもよい可能性もある。この技術は、例えば、別の既定値が、連結リストデータ構造内の最後のデータブロックを示すものとして使用される場合に、使用されてもよい。
【００１２】
ヌル値は、プレロード操作の対象とならないメモリアドレスを検出するように構成される検出回路によって、ハードウェア制御下でプログラムされてもよい。かかるメモリアドレスは、例えば、メモリアドレスがアクセス不可能であるという結果を返す、以前のメモリアクセスによって特定されてもよい。アクセス不可能メモリアドレスをプレロードする後の試みは、無益であり、したがってかかるプレロード操作は、抑制され得る。
【００１３】
別の態様から概観すると、本発明は、データを処理するための装置であって、
プログラム命令に応じて、データ処理操作を実施する処理手段と、
該プログラム命令に応答して制御信号を生成するための命令デコーダ手段であって、該制御信号は、該データ処理操作を実施するように該処理回路を制御する、手段と、
を備え、該命令デコーダ手段は、プレロード命令に応答し、該プレロード命令は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となるように該メモリアドレスの場所を指定し、該メモリアドレスをヌル値と比較し、かつ、
（ｉ）該メモリアドレスが、該ヌル値と一致しない場合、該プレロード操作を実施するために、該処理回路を制御するための制御信号を生成し、
（ｉｉ）該メモリアドレスが、該ヌル値と一致する場合、該プレロード操作を実施するために、該処理回路を制御するための該制御信号を生成しない、装置を提供する。
【００１４】
さらなる態様から概観すると、本発明は、データを処理するための方法であって、
プログラム命令に応じてデータ処理操作を実施するステップと、
該データ処理操作を制御するための制御信号を生成するために、プログラム命令をデコードするステップと、
を含み、該デコードするステップは、プレロード命令に応答し、該プレロード命令は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる該メモリアドレスの場所を指定し、該メモリアドレスをヌル値と比較し、かつ、
（ｉ）該メモリアドレスが、該ヌル値と一致しない場合、該プレロード操作を実施するために、該処理回路を制御するための制御信号を生成し、
（ｉｉ）該メモリアドレスが、該ヌル値と一致する場合、該プレロード操作を実施するために、該処理回路を制御するための該制御信号を生成しない、方法を提供する。
【００１５】
本発明の上記および他の目的、特徴および利点は、添付の図面に関連して一読されるべき、例示的な実施形態の以下の詳細な説明から、明らかであろう。
【図面の簡単な説明】
【００１６】
【図１】プレロード命令のためのサポートを含む、データ処理システムを概略的な例示である。
【図２】命令デコーダによる、プレロード命令のデコードを概略的に例示するフロー図である。
【図３】トランスレーションルックアサイドバッファを概略的に例示する図である。
【図４】３レベルページテーブル階層を通じるページテーブルウォークを概略的に例示する図である。
【図５】ページテーブルウォークの間にアクセス不可能ページに遭遇したときの、プレロード命令のためのヌル値のアップデートを概略的に例示するフロー図である。
【図６】連結リストの最終部分を示すためのヌル値を使用する、連結リストデータ構造を概略的に例示する図である。
【図７】仮想機械実施形態を概略的に例示する図である。
【発明を実施するための形態】
【００１７】
図１は、メモリ６に連結したプロセッサ４を含むデータ処理システム２を例示する。プロセッサ４は、様々の異なる形態を有する処理回路を含む。レジスタバンク８、乗算器１０、シフター１２、および加算器１４を備えるデータパスは、演算操作等のデータ処理操作を実施する。ロード／記憶ユニット１６は、メモリ６内に記憶されるデータにアクセスするための、ロードおよび記憶操作を実施する。
【００１８】
プロセッサ４は、トランスレーションルックアサイドバッファ２０を組み込むメモリ管理ユニット１８を含む。メモリ管理ユニット１８は、関連するアクセス許可を点検するほかに、アクセスされるメモリ場所の仮想アドレスを受信し、これを物理アドレスに変換する。トランスレーションルックアサイドバッファ２０は、それらの物理アドレスに関連するアクセスパラメータを記憶するほかに、仮想アドレスを物理アドレスにマップする、アドレスマッピングデータのキャッシュを記憶する機能を果たす。トランスレーションルックアサイドバッファ２０内に記憶されるアドレスマッピングデータは、メモリ６内に記憶されるページテーブルデータ２２に由来し、メモリアドレススペースの全体に関する、アドレスマッピングデータの一式、ならびにメモリアドレススペースの全体に関する、アクセスプロパティを定義する。キャッシュメモリ２４は、それらがメモリ６内に記憶されるデータ値よりも迅速にアクセスされ得るように、プロセッサ４内にデータ値を記憶する。キャッシュメモリ２４は、物理的にアドレス指定され、したがって、仮想アドレスから物理アドレストランスレーションへのダウンストリームは、トランスレーションルックアサイドバッファ２０（またはメモリ６から読み出されるページテーブルデータ）を使用して、メモリ管理ユニット１８によって実施される。
【００１９】
命令フェッチユニット２６は、プログラム命令を、メモリ６内に記憶されるプログラム２８からフェッチする機能を果たす。これらのフェッチ命令は、プログラム命令が、命令デコーダ３２に適用されるステージであるデコードステージに、フェッチ命令が到達するまで、フェッチ命令が、命令パイプラインステージ（例えば、リオーダー、イシュー等）に沿って進行するところの、命令パイプライン３０に供給される。命令デコーダ３２は、プログラム命令をデコードし、プロセッサ４の他の部分に供給され、デコードされているプログラム命令で指定されるデータ処理操作を実施するために、それらのプロセッサ４の他の部分を設定および制御する機能を果たす制御信号を生成する。プログラム命令は、メモリ６内に記憶されるメディアデータ値３４等のデータ値にアクセスするための、ロード／記憶ユニット１６によって実施されるロードおよび記憶命令を含み得る。プログラム命令は、それらのアクセスデータ値、例えば、加算、乗算等を操作するための、演算命令を含み得る。
【００２０】
命令デコーダ３２によってサポートされる、命令の１つのタイプは、プレロード命令（ＰＬＤ〔ｒ０〕である。このプレロード命令は、レジスタｒ０内に保持される値によって指定されるメモリアドレス上で、プレロード操作を実施する機能を果たす。プレロード操作は、様々の異なる形態をとり得る。プレロード操作は、レジスタｒ０内のメモリアドレスによって指定されるデータ値を収容するキャッシュラインを、キャッシュメモリ２４へ、プレロードするために、ロード／記憶ユニット１６をトリガさせることであってもよい。プレロード操作の別の形態は、トランスレーションルックアサイドバッファ２０が、レジスタｒ０内の値によって指定される仮想アドレスを、物理アドレス値にトランスレートするのに必要なトランスレーションデータをまだ含まない場合、ページテーブルデータ２２を通じて、ページテーブルウォークを実施するために、メモリ管理ユニット１８をトリガさせることであってもよい。ページテーブルウォーク操作は、比較的遅く、したがってデータ値が実際に要求される前に、このページテーブルウォークを実施するために、メモリ管理ユニット１８をトリガさせることは、トランスレーションデータが、それが実際に要求される前に、トランスレーションルックアサイドバッファ２０において入手可能となることを保証し、それによって後のアクセス命令遅延を低減する。
【００２１】
命令デコーダ３２は、プレロードヌルレジスタ３６に連結され、プレロード操作が実施されない値である、メモリアドレスのヌル値を示すプレロード命令をデコードするとき、命令デコーダ３２によって解釈されて使用されるヌル値を記憶する。この例示的実施形態では、プレロードヌルレジスタ３６は、ソフトウェア制御下で、プログラム可能である。しかしながら、プレロードヌルレジスタ３６が、ゼロ等の固定既定値を記憶してもよいか、または後述されるように、ハードウェア制御下で設定されてもよい可能性もある。ヌル値はまた、一連の値のうちのいずれか１つであってもよい可能性もあり、例えば、範囲内のあるメモリアドレス（それはプログラム可能である可能性がある）は、ヌル値と一致するものとして扱われる。
【００２２】
ヌル値がメモリアドレスの範囲に対応する実施形態は、次のような状況において有用であり得る。
ＭＯＶ  ｒ０，＃０ｘ１０００
ＰＬＤ  〔ｒ０〕
は、トランスレーションルックアサイドバッファの場合について、０ｘ１０００に対応するだけでなく、後に続く４ｋＢページにも対応するマッピングをロードし、それゆえに次の
ＰＬＤ  〔ｒ０，＃０ｘ４〕
は、パフォーマンスに影響することなく破棄される可能性がある（および潜在的にある種のパフォーマンス向上をもたらす）。これはまた、キャッシュライン長がアーキテクチャー上不変ではないため、キャッシュラインフィルを実施するハードウェアに有用であり、したがって、後のＰＬＤに使用されるストライドが、コードが実行され得る全てのチップ上に存在するキャッシュライン長の最小公倍数であるように、コードが書き込まれてもよく、それによってより長いキャッシュライン長での実施は、効果的に反復されるＰＬＤ（同じキャッシュラインをヒットしているＰＬＤ）を破棄することを選択してもよい。エントリーをタイムアウトする追加的機構もまた、長い間隔を空けて実行される同一のプレロード（アイテムが退去させられた場合があるような）を防止するために、退去を監視する代替と共に、実施されてもよい。
【００２３】
図２は、命令デコーダ３２によって実施されるときの、プレロード命令ＰＬＤ〔ｒ０〕のデコードを概略的に例示するフロー図である。ステップ３８において、処理は、プレロード命令が受信されるまでウェイトする。プレロード命令が受信されるとき、ステップ４０は、レジスタｒ０内に記憶される値によって指定されるメモリアドレスが、ヌル値レジスタ３６内に記憶される、ヌル値に対応するかどうかを決定する。一致がある場合、処理は終了する。一致がない場合、処理は、プレロード操作が実施されるステップ４２に進む。プレロード操作は、アドレストランスレーションデータが、トランスレーションルックアサイドバッファ２０内にまだ記憶されていない場合、任意の必要なページテーブルウォークおよび／またはキャッシュメモリ２４に対する、キャッシュラインフェッチ操作を含んでもよい。
【００２４】
図３は、トランスレーションルックアサイドバッファ２０を概略的に例示する。トランスレーションルックアサイドバッファ２０は、対応する物理アドレストランスレーションおよびアクセスプロパティと共に、仮想アドレスタグの形態でアドレスマッピングデータを記憶する。使用するとき、仮想アドレスは、トランスレーションルックアサイドバッファ２０によって使用され、アドレスマッピングデータ内に記憶される全ての仮想アドレスタグとの比較がなされる（例えば、トランスレーションルックアサイドバッファが、コンテントアドレッサブルメモリＣＡＭとして使用される等）。一致が見出される場合、対応する物理トランスレーションは、そのメモリ領域についてのアクセスプロパティと共に、アドレスマッピングデータから読み出しされる。メモリがページに分割されるところのページは、４ｋＢ等のサイズを有し、それは仮想アドレスの最も有意な部分のみが、対応する物理アドレスにトランスレートされる必要があるようなサイズであることは、当業者であれば理解するであろう。メモリページ内の異なる位置に対応しているアドレス内のビットは、トランスレートされる必要がない。
【００２５】
図４は、トランスレーションルックアサイドバッファ２０内にミスがあるときに発現する、ページテーブルデータ２２を通した、ページテーブルウォーク操作を概略的に例示する。ミスが発現するとき、受信した仮想アドレスに関するアドレスマッピングデータは、トランスレーションルックアサイドバッファ２０内には存在しない。したがって、仮想アドレスの部分（例えば、最も有意な部分）は、最初に、第１レベルテーブル４４にインデックスするために使用され、ここでポインタは第２レベルテーブル４６に見出される。仮想アドレスの異なる部分（例えば、２番目に有意な部分）は、次いで第２レベルテーブル４６内の位置へのインデックスを形成するために使用され、そこからさらなるポインタが、第３レベルテーブル４８を識別するために読み出しされる。仮想アドレスの最終部分（しかし仮想アドレスの剰余の全てではない）は、第３レベルページテーブル内のエントリーのインデックスとして消費され、それはトランスレーションルックアサイドバッファ２０に返されることになる、物理アドレストランスレーションデータおよびアクセスプロパティを記憶する。
【００２６】
図５は、ヌル値が、アクセス不可能ページにアクセスしているページテーブルウォークに応じて、メモリ管理ユニット１８によって、ハードウェア制御下に設定され得る様子を概略的に例示するフロー図である。ステップ５０で、メモリ管理ユニット１８による処理は、ページテーブルウォークが要求されるまでウェイトする。ページテーブルウォークが要求されるとき、ステップ５２は、図４に例示するように、ページテーブルウォークを実施し、アクセスプロパティを示しているデータを含む、アドレスマッピングデータを返す。ステップ５４は、返されたアクセスプロパティから、ページがアクセス不可能としてマークされているかどうかを決定する。ページが、アクセス不可能としてマークされていない場合、ステップ５６は、ページテーブルデータを、トランスレーションルックアサイドバッファ２０に返す。ページがアクセス不可能としてマークされている場合、ステップ５８は、プレロードヌルレジスタ３６内のヌル値を、ページテーブルウォークが実施されたばかりのページのメモリアドレスに対応するように設定する機能を果たす。このページテーブルは、アクセス不可能であり、したがってそのアクセス不可能ページに対する、さらなるページテーブルウォークを実施する意味はない。それゆえに、アクセス不可能ページ内のメモリアドレスを指定する、プレロード命令は、後に、ヌル値に対応しているものとして識別され、ページテーブルウォークは、かかるメモリアドレスに対するプレロード操作の一部としてはトリガされない。
【００２７】
図６は、連結リストデータ構造を概略的に例示する略図である。かかる連結リストデータ構造は、一般的に、データ処理内で使用され、そのデータのサイズが事前に知られていない場合に、大量のデータを柔軟に記憶するのに便利である。データは、固定サイズブロック内で消費されるデータ値として記憶され、各ブロックにおける最終エントリーは、その連結リストデータ構造内の次のデータブロックに向けてポイントしている。それゆえに、連結リストは、変化する数のブロックから形成され得、各ブロックは、リストにおける次のブロックに向けてポイントしている。リストにおける最終ブロックは、次のブロックへのポインタが見出される位置におけるヌル値の存在によって、最終ブロックとして示される。処理効率を高めるために、データブロックが最初に開くとき、次のポインタ値がプレロード命令によって使用されることが通常である。以前のブロックが最初にアクセスされるとき、そのようにして次のブロックに関して実施される、プレロード操作は、次のデータブロックが、データ処理における消費のために、実際に存在することが要求される前に、キャッシュロード、ページテーブルウォーク等の操作が実施されるための十分な時間を与える。しかしながら、最終データブロックに遭遇するとき、連結リストの最終部分の指標として記憶されるヌル値に関して、プレロード操作を実施することは、エネルギーおよび処理リソースの浪費である。したがって、本技術は、かかるヌル値が識別され、またプレロード操作が抑制されることを可能にする。
【００２８】
図７は、使用され得る仮想機械実施を例示する。前述の実施形態が、考慮している当技術をサポートする特定の処理ハードウェアを操作する装置および方法の観点から、本発明を実施する一方で、ハードウェアデバイスのいわゆる仮想機械実施を提供することもまた可能である。これらの仮想機械実施は、仮想機械プログラム５１０をサポートする、ホストオペレーティングシステム５２０を動作する、ホストプロセッサ５３０上で動作する。典型的には、大型の強力なプロセッサは、適正なスピードで実行する仮想機械実施を提供することが要求されるが、そのようなアプローチは、互換性または再利用の理由で、別のプロセッサに対してネイティブなコードを動作することが望ましいとき等、特定の状況において正当化され得る。仮想機械プログラム５１０は、仮想機械プログラム５１０によってモデル化されているデバイスである、リアルハードウェアによって提供され得る、アプリケーションプログラムインターフェースと同じアプリケーションプログラム５００に、アプリケーションプログラムインターフェースを提供する。それゆえに、上述のメモリアクセスの制御を含むプログラム命令は、それらの仮想機械ハードウェアとの相互作用をモデル化するために、仮想機械プログラム５１０を使用して、アプリケーションプログラム５００内で実行され得る。
【００２９】
本発明の例示的な実施形態について、添付の図面を参照して、本明細書中に詳細に説明したが、本発明は、これらの厳密な実施形態には制限されず、添付の特許請求の範囲に記載されているように、本発明の範囲および精神から逸脱せずに、当業者によって、本発明に種々の変更および修正を行うことができるということを理解されたい。
【符号の説明】
【００３０】
２  データ処理システム
４  プロセッサ
６  メモリ
８  レジスタバンク
１０  乗算器
１２  シフター
１４  加算器
１６  ロード／記憶ユニット
【図１】
0005608594.tif 000002
【図２】
0005608594.tif 000003
【図３】
0005608594.tif 000004
【図４】
0005608594.tif 000005
【図５】
0005608594.tif 000006
【図６】
0005608594.tif 000007
【図７】
0005608594.tif 000008