(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-08
(45)【発行日】2024-05-16
(54)【発明の名称】変換ロード命令
(51)【国際特許分類】
G06F 12/1027 20160101AFI20240509BHJP
【FI】
G06F12/1027
(21)【出願番号】P 2022519187
(86)(22)【出願日】2020-09-25
(86)【国際出願番号】 IB2020058986
(87)【国際公開番号】W WO2021064531
(87)【国際公開日】2021-04-08
【審査請求日】2023-02-24
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ウィリアムズ、デレク
(72)【発明者】
【氏名】ヘレンシュミット、ベンジャミン
(72)【発明者】
【氏名】メイ、キャシー
(72)【発明者】
【氏名】フレイ、ブラッドリー、ジョージ
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2003-058421(JP,A)
【文献】特表2019-525298(JP,A)
【文献】特開2001-142779(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/08-12/128
(57)【特許請求の範囲】
【請求項1】
システムメモリを含むデータ処理システムにおける処理のための方法であって、前記方法が、
プロセッサコアが、メモリページの変換エントリ内で指定すべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理すること
であって、前記変換ロード命令は、所望の変換エントリを変換構造に選択的にロードさせる命令であり、前記変換構造は、実効アドレスを実アドレスに変換するための変換エントリを格納するバッファ又はキャッシュである、前記処理すること
を含み、前記変換ロード命令を処理することが、
前記メモリページ内の実効アドレスを計算することと、
前記所望のアクセス保護を含む変換エントリが前記データ処理システムの少なくとも1つの変換構造内に格納されるようにすることと
を含む、方法。
【請求項2】
前記少なくとも1つの変換構造が前記プロセッサコア内の変換構造を含み、
前記変換ロード命令がロードフィールドを含み、
前記方法は、前記プロセッサコアが、前記ロードフィールドが設定されていることに基づいて、前記プロセッサコア内の前記変換構造に前記実効アドレスの前記変換エントリをロードすることをさらに含む、
請求項1に記載の方法。
【請求項3】
前記変換構造がトランスレーション・ルックアサイド・バッファを含む、請求項2に記載の方法。
【請求項4】
前記少なくとも1つの変換構造が前記システムメモリ内のページフレームテーブル
に含まれるページテーブルエントリをキャッシュする、請求項1から請求項3までのいずれかに記載の方法。
【請求項5】
前記変換ロード命令内の前記保護フィールドが第1の保護フィールドであり、
前記変換エントリが第2の保護フィールドを含み、
前記方法は、前記プロセッサコアが、前記第1及び第2の保護フィールドで指定されたアクセス保護のミスマッチに基づいて、保護フォールトハンドラを呼び出すことをさらに含む、請求項1から請求項4までのいずれかに記載の方法。
【請求項6】
前記変換ロード命令によって要求されたアクセス保護の変更が合法であるかどうか判定することと、
前記変換ロード命令によって要求されたアクセス保護の前記変更が合法であるとの判定に応答して、前記変換エントリ内の前記第2の保護フィールドを更新することと
をさらに含む、請求項5に記載の方法。
【請求項7】
前記データ処理システムが、前記データ処理システムのシステムファブリックに結合されたネストメモリ管理ユニットを含み、
前記処理することは、前記プロセッサコアが、前記ネストメモリ管理ユニットによって開始された割込みを受け取ることに基づいて、前記変換ロード命令を処理することを含む、
請求項1から請求項6までのいずれかに記載の方法。
【請求項8】
データ処理システムのための処理ユニットであって、前記処理ユニットは、
実効アドレスを実アドレスに変換するメモリ管理ユニットと、
命令を実行する実行ユニットと、
を含むプロセッサコアを含み、前記プロセッサコアは、
メモリページの変換エントリ内で指定すべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理すること
であって、前記変換ロード命令は、所望の変換エントリを変換構造に選択的にロードさせる命令であり、前記変換構造は、実効アドレスを実アドレスに変換するための変換エントリを格納するバッファ又はキャッシュである、前記処理することを実行するように構成され、前記変換ロード命令を処理することが、
前記メモリページ内の実効アドレスを計算することと、
前記所望のアクセス保護を含む変換エントリが前記データ処理システムの少なくとも1つの変換構造内に格納されるようにすることと
を含む、処理ユニット。
【請求項9】
前記少なくとも1つの変換構造が前記プロセッサコア内の変換構造を含み、
前記変換ロード命令がロードフィールドを含み、
前記プロセッサコアが、前記ロードフィールドが設定されていることに基づいて、前記プロセッサコア内の前記変換構造に前記実効アドレスの前記変換エントリをロードするように構成された、
請求項8に記載の処理ユニット。
【請求項10】
前記変換構造がトランスレーション・ルックアサイド・バッファを含む、請求項9に記載の処理ユニット。
【請求項11】
前記少なくとも1つの変換構造
がシステムメモリ内のページフレームテーブル
に含まれるページテーブルエントリをキャッシュする、請求項8から請求項10までのいずれかに記載の処理ユニット。
【請求項12】
前記変換ロード命令内の前記保護フィールドが第1の保護フィールドであり、
前記変換エントリが第2の保護フィールドを含み、
前記プロセッサコアが、前記第1及び第2の保護フィールドで指定されたアクセス保護のミスマッチに基づいて、保護フォールトハンドラを呼び出すように構成された、
請求項8から請求項11までのいずれかに記載の処理ユニット。
【請求項13】
前記プロセッサコアが、
前記変換ロード命令によって要求されたアクセス保護の変更が合法であるかどうか判定することと、
前記変換ロード命令によって要求されたアクセス保護の前記変更が合法であるとの判定に応答して、前記変換エントリ内の前記第2の保護フィールドを更新することと
を実行するようにさらに構成された、請求項12に記載の処理ユニット。
【請求項14】
前記データ処理システムが、前記データ処理システムのシステムファブリックに結合されたネストメモリ管理ユニットを含み、
前記プロセッサコアが、前記ネストメモリ管理ユニットによって開始された割込みを、前記システムファブリックを介して受け取ることに基づいて、前記変換ロード命令を処理するように構成された、請求項8から請求項13までのいずれかに記載の処理ユニット。
【請求項15】
請求項8から請求項14までのいずれかに記載の複数の処理ユニットと、前記複数の処理ユニットを結合するシステムファブリックとを含む、データ処理システム。
【請求項16】
システムメモリを含むデータ処理システムにおける処理のためのコンピュータ・プログラムを格納するコンピュータ可読ストレージ媒体であって、
前記コンピュータ・プログラムは処理回路に、請求項1から請求項7までのいずれかに記載の方法を実行させる、コンピュータ可読ストレージ媒体。
【請求項17】
コンピュータ・プログラムであって、前記コンピュータ・プログラムはコンピュータに、請求項1から請求項7までのいずれかに記載の方法を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、データ処理に関し、具体的には、プロセッサによって実行されたときに、所望の変換エントリをアドレス変換構造内に選択的にロードさせる変換ロード命令に関する。
【背景技術】
【0002】
従来のマルチプロセッサ(MP)コンピュータシステムは、複数の処理ユニット(各々が1つ又は複数のプロセッサコアと様々なキャッシュメモリとを含むことができる)と、入力/出力(I/O)デバイスと、システムメモリ(揮発性又は不揮発性とすることができる)及び不揮発性マスストレージの両方を含むことができるデータストレージとを含む。メモリマップドI/Oオペレーションと、オペレーティングシステム及びアプリケーションソフトウェアが使用するデータ及び命令とに十分なアドレスを提供するために、MPコンピュータシステムは、典型的には、メモリマップドI/Oデバイス及びシステムメモリの物理ストレージ位置の数よりもはるかに多い数の実効アドレスを含む実効アドレス空間を参照する。したがって、メモリマップドI/Oを実行するため又はシステムメモリにアクセスするためには、実効アドレス指定を使用するコンピュータシステム内のプロセッサコアは、実効アドレスを、特定のI/Oデバイス又はシステムメモリ内の物理ストレージ位置に割り当てられた実アドレスに変換する必要がある。
【0003】
多くのアーキテクチャにおいて、実効アドレス空間は、複数のメモリページに区分化されており、各ページは、ページテーブルエントリ(PTE)と呼ばれるそれぞれの関連付けられたアドレス記述子を有する。特定のメモリページに対応するPTEは、他の情報の中でもとりわけ、メモリページのベース実効アドレス、並びに、関連付けられたページフレームのベース実アドレスを含み、これによりプロセッサコアは、メモリページ内の任意の実効アドレスをシステムメモリ内の実アドレスに変換することができる。システムメモリ内に例えばオペレーティングシステムもしくはハイパーバイザーソフトウェア又はその両方の指示の下で作成されたPTEは、ページフレームテーブルに集められる。
【0004】
メモリマップドI/O命令及びメモリアクセス命令(以下、これらをまとめて単に「メモリ参照命令」と呼ぶ)の処理中、実効アドレスの実アドレスへの変換を速めるために、従来のプロセッサコアは、他の変換構造の中でもとりわけトランスレーション・ルックアサイド・バッファ(TLB:Translation Lookaside Buffer)と呼ばれるキャッシュを利用して、最近アクセスされたPTEをプロセッサコア内にバッファすることが多い。当然のことながら、データがシステムメモリの物理ストレージ位置に出入りすると(例えば、新たなプロセスの呼び出し又はコンテキスト切り替えに応答して)、TLBのエントリは新たなデータの存在を反映して更新されなければならず、システムメモリから削除された(例えば、不揮発性大容量ストレージにページアウトされた)データに関連付けられたTLBエントリは無効にされなければならない。
【0005】
本出願は、データ処理システムのページフレームテーブル及びTLBなどのアドレス変換構造に変換エントリをロードするための改良された技術を提供することが有用かつ望ましいと認識する。
【0006】
したがって、当該技術分野では、前述の問題を解決することが必要とされる。
【発明の概要】
【0007】
第1の態様からみると、本発明は、システムメモリを含むデータ処理システムにおける処理のための方法を提供し、この方法は、プロセッサコアが、メモリページの変換エントリ内で指定すべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理することを含み、変換ロード命令を処理することは、メモリページ内の実効アドレスを計算することと、所望のアクセス保護を含む変換エントリがデータ処理システムの少なくとも1つの変換構造内に格納されるようにすることとを含む。
【0008】
さらに別の態様からみると、本発明は、データ処理システムのための処理ユニットを提供し、この処理ユニットは、実効アドレスを実アドレスに変換するメモリ管理ユニットと、命令を実行する実行ユニットと、を含むプロセッサコアを含み、プロセッサコアは、メモリページの変換エントリ内で指定すべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理することを実行するように構成され、変換ロード命令を処理することは、メモリページ内の実効アドレスを計算することと、所望のアクセス保護を含む変換エントリがデータ処理システムの少なくとも1つの変換構造内に格納されるようにすることと、を含む。
【0009】
さらに別の態様からみると、本発明は、集積回路を設計、製造又はテストするための機械可読ストレージデバイスにおいて有形に具体化された設計構造を提供し、この設計構造は、データ処理システムのための処理ユニットを含み、この処理ユニットは、プロセッサコアを含み、プロセッサコアは、実効アドレスを実アドレスに変換するメモリ管理ユニットと、命令を実行する実行ユニットと、を含み、処理ユニットは、メモリページの変換エントリ内で指定すべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理することを実行するように構成され、変換ロード命令を処理することは、メモリページ内の実効アドレスを計算することと、所望のアクセス保護を含む変換エントリがデータ処理システムの少なくとも1つの変換構造内に格納されるようにすることと、を含む。
【0010】
少なくとも1つの実施形態では、プロセッサコアは、メモリページの変換エントリにおいて指定すべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理する。変換ロード命令を処理することは、メモリページ内の実効アドレスを計算することと、所望のアクセス保護を含む変換エントリがデータ処理システムの少なくとも1つの変換構造内に格納されるようにすることを含む。
【図面の簡単な説明】
【0011】
ここで、本発明を、例示として、以下の図に示されるような好ましい実施形態を参照して説明する。
【0012】
【
図1】一実施形態による例示的なデータ処理システムの高レベルブロック図である。
【
図2】一実施形態による例示的な処理ユニットのより詳細なブロック図である。
【
図3】一実施形態による例示的な変換ロード命令を示す。
【
図4】一実施形態による例示的なページテーブルエントリを示す。
【
図5】一実施形態による、プロセッサコアが変換ロード命令を処理する例示的な方法の高レベル論理フローチャートである。
【
図6】一実施形態による、ページフォールトハンドラがページフォールトを解決する例示的な方法の高レベル論理フローチャートである。
【
図7】一実施形態による、保護フォールトハンドラが保護フォールトを解決する例示的な方法の高レベル論理フローチャートである。
【発明を実施するための形態】
【0013】
ここで、全体を通して同様の参照符号が同様の対応する部分を指す図、特に
図1を参照すると、一実施形態による例示的なデータ処理システム100を示す高レベルブロック図が示される。図示された実施形態では、データ処理システム100は、データ及び命令を処理するための複数の処理ノード102を含む、キャッシュコヒーレントな対称型マルチプロセッサ(SMP)データ処理システムである。処理ノード102は、アドレス、データ、及び制御情報を伝達するためのシステム・インターコネクト110に結合される。システム・インターコネクト110は、例えば、バス・インターコネクト、スイッチ・インターコネクト、又はハイブリッド・インターコネクトとして実装することができる。
【0014】
図示された実施形態において、各処理ノード102は、各々が好ましくはそれぞれの集積回路として実現される4つの処理ユニット104a~104dを含む、マルチチップモジュール(MCM)として実現されている。各処理ノード102内の処理ユニット104は、ローカル・インターコネクト114によって互いに通信するため及びシステム・インターコネクト110と通信するために結合されており、ローカル・インターコネクト114はシステム・インターコネクト110と同様に、例えば、1つ又は複数のバスもしくはスイッチ又はその両方で実装することができる。システム・インターコネクト110とローカル・インターコネクト114とが一緒になってシステムファブリックを形成する。
【0015】
図2を参照して以下でより詳細にされるように、処理ユニット104の各々は、それぞれのシステムメモリ108へのインターフェースを提供する、ローカル・インターコネクト114に接続されたメモリコントローラ106を含む。システムメモリ108内にあるデータ及び命令は、一般に、データ処理システム100内の任意の処理ノード102の任意の処理ユニット104内のプロセッサコアによってアクセス、キャッシュ、及び変更することができる。システムメモリ108は、このようにして、データ処理システム100の分散型共有メモリシステムにおける最下位レベルのメモリストレージを形成する。代替的な実施形態では、1つ又は複数のメモリコントローラ106(及びシステムメモリ108)を、ローカル・インターコネクト114ではなくシステム・インターコネクト110に結合することができる。
【0016】
当業者であれば、
図1のSMPデータ処理システム100は、相互接続ブリッジ、不揮発性ストレージ、ネットワーク又は付属デバイスに接続するためのポートなど、図示していない多くの付加的なコンポーネントを含むことができることを理解するであろう。このような付加的なコンポーネントは、説明する実施形態の理解に必要ではないため、
図1には図示されておらず、本明細書ではさらに論じられることもない。しかしながら、本明細書で説明する拡張機能は、多様なアーキテクチャのデータ処理システムに適用可能であり、
図1に示される一般化されたデータ処理システムアーキテクチャに限定されるものではないことも理解すべきである。
【0017】
ここで
図2を参照すると、一実施形態による例示的な処理ユニット104及びシステムメモリ108のより詳細なブロック図が示されている。図示された実施形態では、各処理ユニット104は、命令及びデータを処理するための1つ又は複数のプロセッサコア200を含む集積回路である。図示例では、プロセッサコア200は、複数の同時の実行ハードウェアスレッドから命令を実行する1つ又は複数の実行ユニット202を含む。
【0018】
プロセッサコア200は、実行ユニット202におけるメモリ参照命令の実行によって決定される実効アドレスを実アドレスに変換することを担当する、メモリ管理ユニット(MMU)204をさらに含む。MMU204は、トランスレーション・ルックアサイド・バッファ(TLB)、実効to実アドレス変換(ERAT:Effective-to-Real Address Translation)キャッシュ、セグメント・ルックアサイド・バッファ(SLB:Segment Lookaside Buffer)など、1つ又は複数の変換構造206を参照して、実効アドレスから実アドレスへの変換を行う。これらの変換構造の数もしくは種類又はその両方は、実装及びアーキテクチャ間で異なる。変換構造206は、さらに後述するように、システムメモリ108から取得することができる選択されたアドレス変換のローカルコピーをバッファすることによって、アドレス変換に関連付けられた待ち時間を短縮する。
【0019】
各プロセッサコア200のオペレーションは、すべての処理ユニット104により共有されるとともに統合メモリコントローラ106を介してアクセス可能なシステムメモリ108を最下位に有する、マルチレベル・メモリ階層によってサポートされる。図示のように、システムメモリ108は、1つ又は複数のシステムデータ構造(SDS)224を格納し、SDS224は、(場合によっては1つ又は複数の介在するメモリ空間を通して)実効アドレスから実アドレスへの変換が合法であるアドレスと、アドレス空間の異なる領域に対する現在のアクセス保護とを定義する。さらに、システムメモリ108は、複数のページテーブルエントリ(PTE)222を含むページフレームテーブル220を格納し、PTE222の各々は、システムメモリ108内に存在するそれぞれの対応するメモリページに対して実効アドレスから実アドレスへの変換を指定する。MMU204によってページフレームテーブル220からアクセスされたPTE222は、その後のアクセスのために、MMU204によって、例えば変換構造206の中で実装されるTLB内にキャッシュすることができる。SDS224及びページフレームテーブル220は、例えば、データ処理システム100内で実行されるオペレーティングシステムもしくはハイパーバイザーソフトウェア又はその両方によって確立、維持、及び更新することができる。
【0020】
各プロセッサコア200のマルチレベル・メモリ階層は、さらに、1つ又は複数のレベルのキャッシュメモリを含み、これは、図示された実施形態では、各プロセッサコア200内にそれ専用のストアスルー方式レベル1(L1)キャッシュ208と、各プロセッサコア200用のそれぞれのストアイン方式レベル2(L2)キャッシュ230とを含む。図示されたキャッシュ階層はキャッシュのレベルを2つしか含まないが、当業者であれば、代替的な実施形態は、付加的なレベル(L3、L4など)の、オンチップ又はオフチップの、専用又は共有の、インライン又はルックアサイドのキャッシュを含むことができること、これらは、上位のキャッシュのコンテンツを完全に含む場合も、部分的に含む場合も、又は含まない場合もあることを理解するであろう。
【0021】
各処理ユニット104は、さらに、ローカル・インターコネクト114とシステム・インターコネクト110とを含むシステムファブリック上のオペレーションの流れを制御すること、及び、所望のキャッシュコヒーレンシ・プロトコルを実施するのに必要なコヒーレンシ通信を実装することを担当する、統合型及び分散型のファブリックコントローラ214を含む。処理ユニット104はさらに、例えばアクセラレータ217などの1つ又は複数のI/Oデバイスの取り付けをサポートする統合I/O(入力/出力)コントローラ216を含む。処理ユニット104はまた、独自のアドレス変換機能をもたないアクセラレータ217などの他のエージェントに要求によりアドレス変換サービスを提供する、ネストメモリ管理ユニット(NMMU)218も含む。他の実施形態において、NMMU218は、代替的な又は付加的な方法で、例えばローカル・インターコネクト114ではなくシステム・インターコネクト110に結合されることによって、アクセラレータ217を含むエージェントにアドレス変換サービスを提供するように通信可能に結合することができることを理解すべきである。
【0022】
ここで
図3を参照すると、一実施形態による例示的な変換ロード命令300が示される。変換ロード命令300は、例えば、
図5を参照して以下でさらに説明するように、プロセッサコア200の実行ユニット202によって実行することができる。
【0023】
図示された実施形態において、変換ロード命令300は、命令300を変換ロード命令として識別するアーキテクチャ依存オペコードを指定するオペレーションコード(opcode)フィールド302を含む。さらに、変換ロード命令300は、そのコンテンツから仮想メモリページの実効アドレスを計算することができる1つ又は複数のレジスタを識別する、アドレスフィールド314を含む。
【0024】
変換ロード命令300はまた、保護フィールド304を含み、これは例えば、読出し専用(R)ビット306、読出し書込み(RW)ビット308、及び実行可能(E)ビット310を含む。Rビット306が設定(例えば1に)され、RWビット308がリセット(例えば0に)されている場合、アドレスフィールド314を使用して計算されるアドレスで識別されるメモリページが読出し専用であることが示される。Rビット306がリセット(例えば、0に)され、RWビット308が設定(例えば、1に)されている場合、そのメモリページが読出し及び書込み両方のアクセスの対象になることを示す。Eビット310は、そのメモリページが実行可能な命令を含むものとして扱われることを示す場合に独立して設定(例えば、1に)され、そうでない場合はリセット(例えば、0に)される。
【0025】
変換ロード命令300は、さらにロード(LD)フィールド312を含む。少なくとも幾つかの実施形態において、LDフィールド312は、各々がプロセッサコア200内の変換構造206のそれぞれ1つに対応する、1つ又は複数のビットで実装することができる。この例では、LDフィールド312に設定されているビットは、変換ロード命令300の実行に応答して、必要に応じて、参照されたメモリページのアドレスに対する変換がプロセッサコア200内の関連付けられた変換構造206にロードされることを示す。
【0026】
ここで
図4を参照して、一実施形態によるページテーブルエントリ222の例示的なフォーマットを示す。この例において、ページテーブルエントリ222は、実効アドレス空間内のメモリページのベース実効アドレスを示す実効アドレスフィールド400と、システムメモリ108内の対応するメモリページのベース実アドレスを示す実アドレスフィールド402と、メモリページのサイズを示すサイズフィールド403と、ページテーブルエントリ222が有効であるかどうか、したがってアドレス変換に使用できるかどうかを示す有効フィールド412とを含む。さらに、ページテーブルエントリ222は、読出し専用(R)ビット406と、読出し書込み(RW)ビット408と、実行可能(E)ビット410とを含む保護フィールド404を含む。変換ロード命令302の保護フィールド304と同様に、Rビット406が設定(例えば1に)され、RWビット408がリセット(例えば0に)されている場合、メモリページは読出し専用であることを示し、Rビット406がリセット(例えば0に)され、RWビット408が設定(例えば1に)されている場合、メモリページは読出し及び書込みの両方が可能であることを示す。Eビット410は、メモリページが実行可能な命令を含むことを示すよう場合に独立して設定(例えば、1に)され、そうでない場合はリセット(例えば、0に)される。
【0027】
ここで
図5を参照すると、一実施形態による、プロセッサコア200の実行ユニット202が変換ロード命令300を実行する例示的な方法の高レベル論理フローチャートが示されている。
【0028】
図5のプロセスは、例えば、実行ユニット202が実行すべき変換ロード命令300を受け取ったことに応答して、ブロック500で開始する。幾つかの使用事例において、1つ又は複数の変換ロード命令300をプロセッサコア200の実行ハードウェアスレッド内で実行して、1つ又は複数のアドレス変換を、それらのアドレス変換に依存するメモリ参照命令の実行(プロセッサコア200の同じ又は別のハードウェアスレッド内)に先立って変換構造206にロードすることができる。その結果、変換構造206内のアドレス変換にアクセスするための待ち時間が短い(ページフレームテーブル220から各々の必要なアドレス変換にアクセスする必要がない)というMMU204の機能によって、その後のメモリ参照命令の実行が加速される。
【0029】
他の使用事例において、プロセッサコア200は、NMMU218によって生じた割込みに応答して、変換ロード命令300を実行することができる。例えば、NMMU218がアクセラレータ217によって特定の実効アドレスの変換を要求され、対応するPTE222がページフレームテーブル220内に存在しない場合、又は、PTE222が要求されたアクセス保護を提供しない場合、NMMU218は、プロセッサコア200に割込みをかけ、特定の実効アドレスに対する変換ロード命令300の実行を行わせることができる。
【0030】
実行ユニット202は、変換ロード命令300の実行に応答して、変換ロード命令300のアドレスフィールド314のコンテンツに基づいて、メモリページ内の実効アドレスを計算する(ブロック502)。実行ユニット202によってブロック502で計算された実効アドレスに基づいて、実行中のプロセッサコア200は、任意に、ブロック504及び506において、それぞれ、実効アドレスに対する変換エントリが、LDフィールド312で示されるコア変換構造の各々に存在するかどうか、及び、保護フィールド304で示されるアクセス保護を少なくとも有するかどうかを判定する。任意のブロック504及び506の両方における肯定的判定に応答して、変換ロード命令300のさらなる処理は必要なく、
図5のプロセスはブロック530で終了する。しかしながら、ブロック504で肯定的判定がなされ、ブロック506で否定的判定がなされた場合には、保護フォールトが検出され、それに応じて、
図5のプロセスは、ページコネクタAを経て、後述するブロック520に進む。ブロック504で否定的判定がなされた場合、又は任意のブロック504及び506が省略された場合には、
図5のプロセスはブロック510に進む。
【0031】
ブロック510において、プロセッサコア200は、可能であれば、ブロック502で求めた実効アドレスに対応するPTE222を見つけ出すために、MMU204によるページフレームテーブル220のウォーク(walk)を開始する。ブロック512において、MMU204は、ページフレームテーブル220のウォークが、ページフレームテーブル220内で関連するPTE222を見いだしたかどうかを判定する。見いだした場合、処理は以下で説明するブロック516に進む。見いださなかった場合には、ページフォールトが検出され、実行中のプロセッサコア200がページフォールトハンドラを呼び出す(ブロック514)。ページフォールトを解決するために例示的なページフォールトハンドラが実行する処理については、
図6を参照して後述する。ブロック514でのページフォールトハンドラの実行に続いて、
図5のプロセスはブロック530で終了する。
【0032】
ここで、ブロック516を参照すると、実行プロセッサコア200は、ページフレームテーブル220のウォークによって見いだされたPTE222が、PTE222の保護フィールド404内に、変換ロード命令300の保護フィールド304で指定されたものと少なくとも同じ大きさのアクセス許可を含んでいるかどうかを判定する。例えば、変換ロード命令300の保護フィールド304が読出し専用ページを指定し(R=1)、保護フィールド404が読出し専用ページ又は読出し書込みページのいずれかを指定している(R=0..1)場合、ブロック516で肯定的判定がなされる。同様に、変換ロード命令300の保護フィールド304が非実行可能メモリページを指定し(E=0)、保護フィールド404が非実行可能メモリページ又は実行可能メモリページのいずれかを指定している(E=0..1)場合、ブロック516で肯定的判定がなされる。逆に、変換ロード命令300の保護フィールド304が読出し書込みページを指定し(RW=1)、保護フィールド404が読出し専用ページを指定している(RW=0)場合、又は変換ロード命令300の保護フィールド304が実行可能メモリページを指定し(E=1)、保護フィールド404が非実行可能メモリページを指示する(E=0)場合には、ブロック516で否定的判定がなされることになる。
【0033】
ブロック516における肯定的判定に応答して、プロセスは後述するブロック522に進む。しかしながら、ブロック516で否定的判定がなされた場合は、保護フォールトが検出され、実行中のプロセッサコア200は保護フォールトハンドラを呼び出す(ブロック520)。保護フォールトを解決するために例示的な保護フォールトハンドラが実行する処理については、
図7を参照して後述する。保護フォールトハンドラの実行に続いて、
図5のプロセスはブロック530で終了する。
【0034】
ブロック522は、実行プロセッサコア200が、変換ロード命令300のLDフィールド312内のいずれかのビットが、要求されたアドレス変換が1つ又は複数の変換構造206にロードされることを示すように設定されているかどうかを判定することを示す。設定されていない場合、変換ロード命令300の処理は完了し、それに応じて
図5のプロセスはブロック530で終了する。しかしながら、実行プロセッサコア200が、ブロック522において、少なくとも1つのビットがLDフィールド312内で、要求されたアドレス変換が1つ又は複数の変換構造206にロードされることを示すように設定されていると判定した場合には、実行プロセッサコア200はさらにブロック524において、要求されたアドレス変換が変換ロード命令300のLDフィールド312で示される各変換構造206内に存在するかどうかを判定する。存在しない場合、実行プロセッサコア200は、アドレス変換を提供する変換エントリを、変換ロード命令300のLDフィールド312で示される各変換構造206にロードする(ブロック526)。理解されるように、変換ロード命令300の処理に応答して実行される変換構造206の更新は、通常のデータ・ロード・アクセス、データ・ストア・アクセス、又は命令フェッチのいずれにも関係していないので、アドレス変換エントリを変換構造206にロードすることが、実行プロセッサコア200のキャッシュ階層(すなわち、L1、L2など)の汚染の原因となることはない。ブロック526に続いて、又はブロック524での肯定的判定に応答して、プロセッサコア200による変換ロード命令300の処理が完了し、
図5のプロセスはブロック530で終了する。
【0035】
ここで
図6を参照すると、一実施形態による、ページフォールトハンドラがページフォールトを解決する例示的な方法の高レベル論理フローチャートが示されている。上述のように、
図6のプロセスは、例えば、ページフォールトの検出に応答して、
図5のブロック514で実行することができる。
【0036】
図6のプロセスは、データ処理システム100のプロセッサコア200によるページフォールトハンドラの実行の呼び出しにより、ブロック600で開始する。このプロセスは、ブロック600からブロック602-ブロック604へと進み、これらブロックは、ページフォールトハンドラがシステムデータ構造224にアクセスして、変換が要求された実効アドレスが変換に有効なアドレスであるかどうかを判定することを示す。有効なアドレスでない場合、ページフォールトハンドラは、変換の失敗を示し、無効なアドレス変換を要求したプログラムの実行を停止する(ブロック606)。その後、
図6のプロセスはブロック614で終了する。
【0037】
ページフォールトハンドラが、ブロック604で、実効アドレスが変換に有効なアドレスであると判定したことに応答して、ページフォールトハンドラは、システムメモリ108内に実効アドレスに対応する新たな物理ページを確立する(ブロック608)。さらに、ブロック610で、ページフォールトハンドラは、ページフレームテーブル220内に、システムメモリ108内の新たな物理ページに対応するPTE222を確立し、その実効ビット412を設定する(ブロック610)。保護フィールド404は未設定のままにされるので、保護フォールトハンドラの少なくとも1回の実行で、メモリページに対して要求されたアクセス保護を設定することを確認する。ページフレームテーブル220内の新たなPTE222及びシステムメモリ108内の対応する物理ページを確立する際、ページフォールトハンドラは、ページフレームテーブル220から1つ又は複数の他のPTE222を削除し、システムメモリ108から対応する物理ページを削除(ページアウト)することができる。
【0038】
要求された変換を提供するPTE222がページフレームテーブル220内に確立された後、ページフォールトハンドラはその実行を終了し、ページフォールトの原因となった命令の再実行を開始する(ブロック612)。ページフォールトの原因となった命令が変換ロード命令300であった場合には、
図5を参照して前述したように、変換ロード命令300が再実行される。しかしながら、変換ロード命令300が再実行されたときには、要求された変換を提供するPTE222がページフレームテーブル220内に存在するので、ブロック512(又は実装されている場合にはブロック504)で肯定的判定がなされ、ページフォールトが再び発生することはない。しかしながら、保護フィールド404に保護ビットが設定されていないので、ブロック520において、保護フォールトハンドラを呼び出す保護フォールトが、新たに確立されたPTE222で発生することになる。ブロック612に続いて、
図6のプロセスはブロック614で終了する。
【0039】
ここで
図7を参照すると、一実施形態による保護フォールトハンドラが保護フォールトを解決する例示的な方法の高レベル論理フローチャートが示されている。上述のように、
図7のプロセスは、例えば、保護フォールトの検出に応答して、
図5のブロック520で実行することができる。
【0040】
図7のプロセスは、データ処理システム100のプロセッサ200による保護フォールトハンドラの実行の呼び出しにより、ブロック700で開始する。このプロセスは、ブロック700からブロック702-ブロック704へと進み、これらブロックは、保護フォールトハンドラがシステムデータ構造224にアクセスして、要求されたアクセス許可のアップグレード(例えば、読出し専用から読出し書込みへ、又は、Eビット410をメモリページが実行可能命令を含むように設定する)が合法であるかどうかを判定すること示す。合法でない場合、保護フォールトハンドラは、保護の失敗を示し、ページ保護の不正な変更を要求したプログラムの実行を停止する(ブロック706)。その後、
図7のプロセスはブロック714で終了する。
【0041】
保護フォールトハンドラが、ブロック704で、要求されたページ保護の変更が合法であると判定したことに応答して、保護フォールトハンドラは、データ処理システム100全体を通じてすべての変換構造206内の関連する実効アドレスのいずれのエントリも無効にする(ブロック708)。例えば、この無効化は、選択されたアーキテクチャ専用の変換無効化ソフトウェア・シーケンスの実行によって達成することができる。さらに、ブロック710において、保護フォールトハンドラは、ページフレームテーブル220内で、関連するPTE222の保護フィールド404を更新して、例えば、変換ロード命令300の保護フィールド304で要求された新たな値を反映させる(ブロック710)。その後、保護フォールトハンドラはその実行を終了し、保護フォールトの原因となった命令の再実行を開始する(ブロック712)。保護フォールトの原因となった命令が変換ロード命令300であった場合には、
図5を参照して上述したように、変換ロード命令300が次いで再実行される。しかしながら、変換ロード命令300が再実行されたときには、要求された保護を提供するPTE222がページフレームテーブル220内に存在するので、ブロック516(又は、実装されている場合にはブロック506)で肯定的判定がなされ、保護フォールトが再び発生することはない。ブロック712に続いて、
図7のプロセスはブロック714で終了する。
【0042】
図6~
図7を参照して上述した実施形態では、ページフォールト及び保護フォールトを別個のハンドラルーチンを使用して解決するが、他の実施形態では、ページフォールトハンドラが保護フォールトも検出して解決する場合もある。このような実施形態は、場合によっては、より長く複雑なページフォールトハンドラの実行を代償として、変換ロード命令300が再実行される回数を減らすことができる。
【0043】
ここで
図8を参照すると、例えば、半導体ICの論理設計、シミュレーション、テスト、レイアウト、及び製造で用いられる例示的な設計フロー800のブロック図が示される。設計フロー800は、設計構造又はデバイスを処理して、上述の及び
図1~
図2に示される設計構造もしくはデバイス又はその両方の論理的又はその他の機能的に等価な表現を生成するためのプロセス、機械もしくは機構又はそれらの組み合わせを含む。設計フロー800によって処理もしくは生成又はその両方が行われた設計構造は、データ処理システム上で実行され又はその他の処理がなされたときに、ハードウェアコンポーネント、回路、デバイス、又はシステムの論理的、構造的、機械的、又はその他の機能的に等価な表現を生成するデータもしくは命令又はその両方を含むように、機械可読の伝送又はストレージ媒体上に符号化することができる。機械は、回路、コンポーネント、デバイス、又はシステムの設計、製造、シミュレーションなど、IC設計プロセスで用いられるあらゆる機械を含むが、これらに限定されるものではない。例えば、機械は、リソグラフィ機械、マスクを生成するための機械もしくは機器又はその両方(例えば、電子ビーム描画装置)、設計構造をシミュレートするためのコンピュータ又は機器、製造又はテストプロセスで用いられるあらゆる装置、又は設計構造の機能的に等価な表現をいずれかの媒体にプログラミングするためのあらゆる機械(例えば、プログラマブルゲートアレイをプログラミングするための機械)を含むことができる。
【0044】
設計フロー800は、設計される表現のタイプに応じて異なる場合がある。例えば、特定用途向けIC(ASIC)を構築するための設計フロー800は、標準的なコンポーネントを設計するための設計フロー800、又は、例えばAltera(登録商標)社又はXilinx(登録商標)社が提供するプログラマブルゲートアレイ(PGA)又はフィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルアレイに設計をインスタンス化するための設計フロー800とは異なる場合がある。
【0045】
図8は、好ましくは設計プロセス800によって処理される入力設計構造820を含む複数のそうした設計構造を示す。設計構造820は、ハードウェアデバイスの論理的に等価な機能的表現を生成するために設計プロセス800によって生成及び処理される論理シミュレーション設計構造とすることができる。設計構造820はさらに、又は代替的に、設計プロセス800によって処理されたときに、ハードウェアデバイスの物理的構造の機能的表現を生成するデータもしくはプログラム命令又はその両方を含むことができる。機能的設計特徴もしくは構造的設計特徴又はその両方を表すかどうかにかかわらず、設計構造820は、コア開発者/設計者によって実施されるような電子コンピュータ支援設計(ECAD)を用いて生成することができる。機械可読データ伝送、ゲートアレイ、又はストレージ媒体上に符号化されたとき、設計構造820は、設計プロセス800内の1つ又は複数のハードウェアモジュールもしくはソフトウェアモジュール又はその両方によってアクセス及び処理されて、
図1~
図2に示されるもののような電子コンポーネント、回路、電子又は論理モジュール、装置、デバイス、又はシステムをシミュレートするか又はその他の方法で機能的に表現することができる。このように、設計構造820は、設計又はシミュレーションデータ処理システムによって処理されたときに、回路又は他のレベルのハードウェア論理設計を機能的にシミュレート又は他の方法で表現する、人間もしくは機械又はその両方が読むことができるソースコード、コンパイルされた構造、及びコンピュータ実行可能コード構造を含むファイル又は他のデータ構造を含むことができる。このようなデータ構造は、ハードウェア記述言語(HDL)設計エンティティ、又はVerilog及びVHDLなどの低レベルHDL設計言語もしくはC又はC++などの高レベル設計言語又はその両方に準拠もしくは互換性のある又はその両方である他のデータ構造を含むことができる。
【0046】
設計プロセス800は、好ましくは、設計構造820などの設計構造を含むことができるネットリスト880を生成するために、
図1~
図2に示されるコンポーネント、回路、デバイス、又は論理構造の設計/シミュレーションの機能的等価物を合成、変換、又はその他の処理をするためのハードウェアモジュールもしくはソフトウェアモジュール又はその両方を使用し、組み込む。ネットリスト880は、例えば、集積回路設計における他の要素及び回路への接続を記述するワイヤ、離散的コンポーネント、論理ゲート、制御回路、I/Oデバイス、モデルなどのリストを表す、コンパイルされた、又はその他の方法で処理されたデータ構造を含むことができる。ネットリスト880は、デバイスの設計仕様及びパラメータに応じてネットリスト880を1回又は複数回再合成する反復プロセスを用いて合成することができる。本明細書に記載される他の設計構造タイプと同様に、ネットリスト880は、機械可読ストレージ媒体上に記録されてもよく、又はプログラマブルゲートアレイにプログラムされてもよい。媒体は、磁気又は光ディスクドライブ、プログラマブルゲートアレイ、コンパクトフラッシュ(登録商標)、又は他のフラッシュメモリなどの不揮発性ストレージ媒体とすることができる。さらに、又はその代替として、媒体は、システム又はキャッシュメモリ、又はバッファ空間とすることができる。
【0047】
設計プロセス800は、ネットリスト880を含む様々な入力データ構造タイプを処理するためのハードウェア及びソフトウェアモジュールを含むことができる。そのようなデータ構造タイプは、例えば、ライブラリ要素830内に存在ことができ、所与の製造技術(例えば、異なる技術ノード、32nm、45nm、90nmなど)のためのモデル、レイアウト、及び記号表現を含む、一般的に使用される要素、回路、及びデバイスのセットを含む。データ構造タイプは、設計仕様840、特性データ850、検証データ860、設計ルール870、及び入力テストパターン、出力テスト結果、及びその他のテスト情報を含むことができるテストデータファイル885をさらに含むことができる。設計プロセス800は、例えば、応力解析、熱解析、機械的事象シミュレーション、鋳造、成形、ダイプレス成形などのオペレーションのためのプロセスシミュレーションなどの標準的な機械設計プロセスをさらに含むことができる。機械設計の当業者であれば、本発明の範囲から逸脱することなく、設計プロセス800で用いられる可能な機械設計ツール及びアプリケーションの範囲を理解することができる。また、設計プロセス800は、タイミング解析、検証、設計規則チェック、配置及び経路オペレーションなどの標準的な回路設計プロセスを実行するためのモジュールを含むことができる。
【0048】
設計プロセス800は、HDLコンパイラ及びシミュレーションモデル構築ツールなどの論理及び物理設計ツールを使用し、組み込み、設計構造820を、図示したサポートデータ構造の一部又は全部並びに付加的な機械設計又はデータ(該当する場合)とともに処理して、第2の設計構造890を生成する。設計構造890は、機械デバイス及び構造のデータの交換に用いられるデータフォーマット(例えば、IGES、DXF、Parasolid XT、JT、DRG、又はそのような機械設計構造を格納又はレンダリングするためのいずれかの他の適切なフォーマットに格納された情報)で、ストレージ媒体又はプログラマブルゲートアレイ上に存在する。設計構造820と同様に、設計構造890は、好ましくは、伝送又はデータ記憶媒体上に存在し、ECADシステムによって処理されると、
図1~
図2に示される本発明の実施形態の1つ又は複数の論理的又はその他の機能的に等価な形態を生成する1つ又は複数のファイル、データ構造、又はその他のコンピュータ符号化データ又は命令を含む。一実施形態では、設計構造890は、
図1~
図2に示すデバイスを機能的にシミュレートするコンパイルされた実行可能なHDLシミュレーションモデルを含むことができる。
【0049】
また、設計構造890は、集積回路のレイアウトデータの交換に用いられるデータフォーマットもしくは記号データフォーマット又はその両方(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、又はこのような設計データ構造を格納するためのいずれかの他の適切なフォーマットに格納される情報)を使用することもできる。設計構造890は、例えば、記号データ、マップファイル、テストデータファイル、設計コンテンツファイル、製造データ、レイアウトパラメータ、ワイヤ、金属のレベル、ビア、形状、製造ラインを通してルーティングするためのデータ、及び上述の及び
図1~
図2に示されるようなデバイス又は構造を製造するために製造業者又は他の設計者/開発者が必要とするいずれかの他のデータなどの情報を含むことができる。設計構造890は、その後、段階895に進むことができ、ここで、例えば、設計構造890は、テープアウトに進むこと、製造にリリースされること、マスクハウスにリリースされること、別の設計ハウスに送られること、顧客に返送されることなどが行われる。
【0050】
これまで説明してきたように、少なくとも1つの実施形態において、プロセッサコアは、メモリページの変換エントリ内で指定されるべき所望のアクセス保護を指定する保護フィールドを含む変換ロード命令を処理する。変換ロード命令を処理することは、メモリページ内の実効アドレスを計算することと、所望のアクセス保護を含む変換エントリがデータ処理システムの少なくとも1つの変換構造内に格納されていることを確認することとを含む。
【0051】
ここまで様々な実施形態を具体的に示し、説明してきたが、当業者であれば、添付の特許請求の範囲から逸脱することなく、その中で形態及び詳細に様々な変更を加えることができ、これらの代替的な実装はすべて添付の特許請求の範囲に含まれることが理解されるであろう。
【0052】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及びオペレーションを示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で行われることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方の中のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0053】
ここまで本発明の機能を指示するプログラムコードを実行するコンピュータシステムに関する態様を説明してきたが、本発明は代替的に、データ処理システムのプロセッサで処理することができるプログラムコードを格納するコンピュータ可読ストレージデバイスを含むプログラム製品として実装され、データ処理システムに説明された機能を実行させることもできることを理解すべきである。コンピュータ可読ストレージデバイスは、揮発性又は不揮発性メモリ、光ディスク又は磁気ディスクなどを含むことができるが、伝搬信号自体、伝送媒体自体、及びエネルギー自体の形態などの法定外の対象は除外する。
【0054】
一例として、プログラム製品は、データ処理システム上で実行又はその他の方法で処理されると、本明細書で開示されるハードウェアコンポーネント、回路、デバイス、又はシステムの論理的、構造的、又はその他の機能的に等価の表現(シミュレーションモデルを含む)を生成するデータもしくは命令又はその両方を含むことができる。このようなデータもしくは命令又はその両方は、Verilog及びVHDLなどの低レベルHDL設計言語、もしくはC又はC++などの高レベル設計言語又はその両方に準拠もしくは互換性のある又はその両方であるハードウェア記述言語(HDL)設計エンティティ又はその他のデータ構造を含むことができる。さらに、データもしくは命令又はその両方はまた、集積回路のレイアウトデータの交換に用いられるデータフォーマットもしくは記号データフォーマット又はその両方(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、又はこのような設計データ構造を格納するためのいずれかの他の適切なフォーマットに格納される情報)を使用することもできる。