IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特表2024-504993アドレス変換のためのデータ処理装置および方法
<>
  • 特表-アドレス変換のためのデータ処理装置および方法 図1
  • 特表-アドレス変換のためのデータ処理装置および方法 図2a
  • 特表-アドレス変換のためのデータ処理装置および方法 図2b
  • 特表-アドレス変換のためのデータ処理装置および方法 図3
  • 特表-アドレス変換のためのデータ処理装置および方法 図4
  • 特表-アドレス変換のためのデータ処理装置および方法 図5
  • 特表-アドレス変換のためのデータ処理装置および方法 図6
  • 特表-アドレス変換のためのデータ処理装置および方法 図7
  • 特表-アドレス変換のためのデータ処理装置および方法 図8
  • 特表-アドレス変換のためのデータ処理装置および方法 図9
  • 特表-アドレス変換のためのデータ処理装置および方法 図10
  • 特表-アドレス変換のためのデータ処理装置および方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-02
(54)【発明の名称】アドレス変換のためのデータ処理装置および方法
(51)【国際特許分類】
   G06F 12/1009 20160101AFI20240126BHJP
   G06F 12/1027 20160101ALI20240126BHJP
【FI】
G06F12/1009
G06F12/1027 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023544517
(86)(22)【出願日】2022-02-02
(85)【翻訳文提出日】2023-08-09
(86)【国際出願番号】 GB2022050270
(87)【国際公開番号】W WO2022167789
(87)【国際公開日】2022-08-11
(31)【優先権主張番号】2101557.3
(32)【優先日】2021-02-04
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ガルシア-トビン、カルロス
(72)【発明者】
【氏名】マシューソン、ブルース ジェイムス
(72)【発明者】
【氏名】エヴァンス、マシュー ルーシアン
(72)【発明者】
【氏名】グリセンスウェイト、リチャード ロイ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205MM51
5B205PP21
5B205RR04
(57)【要約】
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリをキャッシュに記憶し、各ページテーブルエントリの属性を示す制御情報を符号化し、第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返し、ページテーブルエントリ内の属性の修正の通知に応答して、制御情報の少なくともいくつかを修正し、ページテーブルエントリ内の属性の修正の通知に応答して、対応する第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために、ページテーブルエントリに対応する少なくとも1つの変換エントリをキャッシュ内に保持する、装置および方法が提供される。
【選択図】図5
【特許請求の範囲】
【請求項1】
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリを記憶し、各ページテーブルエントリの属性を示す制御情報を符号化する、キャッシュと、
第1のルックアップアドレスを照会するルックアップに応答して、前記第1のルックアップアドレスが前記キャッシュに記憶された前記複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返す変換回路構成と、を備え、
ページテーブルエントリ内の前記属性の修正の通知に応答して、
前記制御情報の少なくともいくつかが修正され、
前記ページテーブルエントリに対応する少なくとも1つの変換エントリが、前記第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために前記キャッシュ内に保持される、
データ処理装置。
【請求項2】
前記属性が、前記ページテーブルエントリがアクセスされたことがあるか否かに関するヒントであり、
前記制御情報のうちの前記少なくともいくつかを修正することが、前記ページテーブルエントリに対応する前記キャッシュ内の変換エントリに関連付けられた変換エントリ固有制御情報を修正することを含む、請求項1に記載のデータ処理装置。
【請求項3】
前記第1のアドレスが、仮想アドレス空間における仮想アドレスであり、前記第2のアドレスが、物理アドレス空間における物理アドレスであり、前記第1のルックアップアドレスが、前記仮想アドレス空間における仮想ルックアップアドレスである、請求項1または請求項2に記載のデータ処理装置。
【請求項4】
前記属性の前記修正が、前記ページテーブルエントリの前記属性を第1の値に設定することに対応し、前記制御情報の前記少なくともいくつかの前記修正が、前記ページテーブルエントリの前記属性が前記第1の値に設定されていることを示すように、前記制御情報の前記少なくともいくつかを修正することに対応する、請求項1~3のいずれか一項に記載のデータ処理装置。
【請求項5】
前記データ処理装置が、前記後続のアドレスルックアップに応答して、
前記ページテーブルエントリの前記属性を第2の値に設定し、
前記ページテーブルエントリの前記属性が前記第2の値に設定されていることを示すように、前記制御情報の前記少なくともいくつかを修正するようにさらに適応されている、請求項4に記載のデータ処理装置。
【請求項6】
前記データ処理装置が、前記後続のアドレスルックアップに応答して、前記後続のアドレスルックアップから生成された対応する後続の第2のアドレスに基づいて、データトランザクションを実行することと並行して、前記ページテーブルエントリの前記属性を設定するようにさらに適応されている、請求項5に記載のデータ処理装置。
【請求項7】
前記属性が前記第2の値に設定されていることに応答して、前記属性を前記第1の値に設定する監視手順を実行する制御回路構成をさらに備える、請求項5または請求項6に記載のデータ処理装置。
【請求項8】
記憶回路構成をさらに備え、
前記制御回路構成が、前記監視手順を実行するときに、前記属性が前記第2の値に設定されているか否かを前記記憶回路構成に記録するようにさらに適応されている、請求項7に記載のデータ処理装置。
【請求項9】
前記制御回路構成が、
所定の時間が経過したこと、および
保守活動が行われたことの少なくとも一方の後に、前記監視手順を周期的に開始するように適応されている、請求項7または請求項8に記載のデータ処理装置。
【請求項10】
制御回路構成が、
壁時間、
所定数のクロックサイクル、
前記キャッシュ内の所定数のルックアップ、
コンテキストスイッチ、
ネットワーク活動の完了、
メモリ再利用イベント、
および電力状態の変化のうちの少なくとも1つに応答して、前記監視手順を周期的に開始するように適応されている、請求項7または請求項8に記載のデータ処理装置。
【請求項11】
属性修正命令に応答して、前記ページテーブルエントリ内の前記属性の前記修正の前記通知を生成する復号回路構成をさらに備えている、請求項1~10のいずれか一項に記載のデータ処理装置。
【請求項12】
前記属性修正命令が、属性無効化命令である、請求項11に記載のデータ処理装置。
【請求項13】
前記キャッシュが、変換索引バッファである、請求項1~12のいずれか一項に記載のデータ処理装置。
【請求項14】
前記ページテーブルエントリ内の別の属性の修正の通知に応答して、前記ページテーブルエントリに対応する前記少なくとも1つの変換エントリが無効にされる、請求項1~13のいずれか一項に記載のデータ処理装置。
【請求項15】
前記ページテーブルエントリ内の前記属性の前記修正の前記通知と、前記ページテーブルエントリ内の前記別の属性の前記修正の前記通知とは、異なる命令によって提供される、請求項14に記載のデータ処理装置。
【請求項16】
前記別の属性が、
第1のアドレス情報、
第2のアドレス情報、
セキュリティ情報、
およびステータス情報のうちの1つである、請求項14または請求項15に記載のデータ処理装置。
【請求項17】
変換エントリが、
第1の読み出しアドレスと第2の読み出しアドレスとの間の読み出しアクセスのために使用される読み出し変換、
および第1の書き込みアドレスと第2の書き込みアドレスとの間の書き込みアクセスのために使用される書き込み変換のうちの1つを定義し、
前記制御情報が、有効な書き込み変換の存在によって符号化される、請求項1~16のいずれか一項に記載のデータ処理装置。
【請求項18】
前記属性が、前記ページテーブルエントリによって示されるデータが修正されたことがあることを示す修正フラグであり、
前記制御情報の前記少なくともいくつかの前記修正が、対応する読み出し変換を保持しながら、対応する書き込み変換を無効にすることに対応する、請求項17に記載のデータ処理装置。
【請求項19】
前記変換回路構成が、
前記ルックアップが読み出しアクセスに対応するとき、前記対応する第2の読み出しアドレスを返し、前記制御情報とは無関係に、前記対応する第2の読み出しアドレスに基づいて、読み出しトランザクションを開始し、
前記ルックアップが書き込みアクセスに対応し、前記制御情報が対応する有効な書き込み変換の前記存在を符号化するとき、対応する第2の書き込みアドレスを返し、前記対応する第2の書き込みアドレスに基づいて、書き込みトランザクションを開始するように適応されている、請求項18に記載のデータ処理装置。
【請求項20】
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリをキャッシュに記憶し、各ページテーブルエントリの属性を示す制御情報を符号化する、手段と、
第1のルックアップアドレスを照会するルックアップに応答して、前記第1のルックアップアドレスが前記キャッシュに記憶された前記複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返す、手段と、
ページテーブルエントリ内の前記属性の修正の通知に応答して、前記制御情報の少なくともいくつかを修正する、手段と、
前記ページテーブルエントリ内の前記属性の前記修正の前記通知に応答して、前記第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために、前記ページテーブルエントリに対応する少なくとも1つの変換エントリを前記キャッシュ内に保持する、手段と、
を備えるデータ処理装置。
【請求項21】
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリをキャッシュに記憶し、各ページテーブルエントリの属性を示す制御情報を符号化し、
第1のルックアップアドレスを照会するルックアップに応答して、前記第1のルックアップアドレスが前記キャッシュに記憶された前記複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返し、
ページテーブルエントリ内の前記属性の修正の通知に応答して、前記制御情報の少なくともいくつかを修正し、および
前記ページテーブルエントリ内の前記属性の前記修正の前記通知に応答して、前記第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために、前記ページテーブルエントリに対応する少なくとも1つの変換エントリを前記キャッシュ内に保持する、
データ処理の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理装置に関し、特に、変換回路構成に関する。
【0002】
ページテーブルエントリの属性が修正されると、ページテーブルエントリに対応するキャッシュされた変換エントリは、不正確になり得る。したがって、キャッシュに記憶された変換エントリを無効にして、データ処理中に誤った変換エントリが使用されないようにする必要がある。よって、無効にされたエントリのアドレスを照会するルックアップは、キャッシュ内でミスしており、その結果、変換が遅くなる。
【0003】
第1の態様では、本発明は、
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリを記憶し、各ページテーブルエントリの属性を示す制御情報を符号化する、キャッシュと、
第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返す変換回路構成と、を含み、
ページテーブルエントリ内の属性の修正の通知に応答して、
制御情報の少なくともいくつかが修正され、
ページテーブルエントリに対応する少なくとも1つの変換エントリが、第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するためにキャッシュ内に保持される、データ処理装置を提供する。
【0004】
別の態様では、本発明は、
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリをキャッシュに記憶し、各ページテーブルエントリの属性を示す制御情報を符号化する、手段と、
第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返す、手段と、
ページテーブルエントリ内の属性の修正の通知に応答して、制御情報の少なくともいくつかを修正する、手段と、
ページテーブルエントリ内の属性の修正の通知に応答して、第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために、ページテーブルエントリに対応する少なくとも1つの変換エントリをキャッシュ内に保持する、手段と、を含むデータ処理装置を提供する。
【0005】
別の態様では、本発明は、
各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリをキャッシュに記憶し、各ページテーブルエントリの属性を示す制御情報を符号化し、
第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返し、
ページテーブルエントリ内の属性の修正の通知に応答して、制御情報の少なくともいくつかを修正し、
ページテーブルエントリ内の属性の修正の通知に応答して、第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために、ページテーブルエントリに対応する少なくとも1つの変換エントリをキャッシュ内に保持する、データ処理の方法を提供する。
【図面の簡単な説明】
【0006】
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技法をさらに説明する。
【0007】
図1】本技法の様々な実施例を具体化し得るデータ処理装置を概略的に示す。
図2a】本技法の様々な実施例を具体化し得るデータ処理装置の詳細を概略的に示す。
図2b】本技法の様々な実施例を具体化し得るデータ処理装置の詳細を概略的に示す。
図3】本技法の様々な実施例を具体化し得るデータ処理装置の詳細を概略的に示す。
図4】本技法の様々な実施例を具体化し得るデータ処理装置の詳細を概略的に示す。
図5】本技法の様々な実施例を具体化し得るデータ処理装置の詳細を概略的に示す。
図6】本技法の様々な実施例を具体化し得る、復号回路構成によって実行される一連のステップを概略的に示す。
図7】本技法の様々な実施例を具体化し得る、変換索引バッファによって実行される一連のステップを概略的に示す。
図8】本技法の様々な実施例を具体化し得る、ページテーブルエントリ、変換回路構成、および変換索引バッファに関して実行される一連のステップを概略的に示す。
図9】本技法の様々な実施例を具体化し得るデータ処理装置を概略的に示す。
図10】本技法の様々な実施例を具体化し得るデータ処理装置を概略的に示す。
図11】本技法の様々な実施例を具体化し得る、実行される一連のステップを概略的に示す。
【0008】
少なくともいくつかの実施形態は、各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリを記憶し、各ページテーブルエントリの属性を示す制御情報を符号化する、キャッシュと、第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返す変換回路構成と、を含み、ページテーブルエントリ内の属性の修正の通知に応答して、制御情報の少なくともいくつかが修正され、ページテーブルエントリに対応する少なくとも1つの変換エントリが、第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するためにキャッシュ内に保持される、データ処理装置を提供する。
【0009】
データ処理装置は、変換エントリを記憶するキャッシュが設けられる。各変換エントリは、対応するページテーブルエントリに関連付けられ、第1のアドレスと第2のアドレスとの間の変換を定義する。キャッシュされた変換エントリは、第1のアドレスから第2のアドレスに変換するときに変換回路構成によって使用される。キャッシュ内に第1のルックアップに対応する変換エントリがない場合、対応する第2のアドレスは、例えば、ページテーブルウォークを使用して決定され得る。このようなページテーブルウォークは時間がかかる可能性があり、その結果、キャッシュミスが発生する回数を最小限に抑えることがしばしば有益である。キャッシュに記憶された変換エントリがページテーブルエントリと整合することを保証するために、以前は、このような変換エントリが修正されたページテーブルエントリに関連付けられているキャッシュ内の変換エントリを無効にすることが必要であった。よって、第1のルックアップアドレスの後続のルックアップが行われるとき、キャッシュミスが発生することになり、その結果、ページウォークが発生している間、時間遅延が生じる。本技法の発明者らは、ページテーブルエントリに対するすべての修正によって、ページテーブルエントリに対応する変換エントリのうちの1つまたは複数が無効になるわけではないことに気づいた。例えば、ページテーブルエントリは、変換情報に加えて、一部の属性を含むことができる。変換エントリのうちの1つまたは複数を無効にしない修正(例えば、属性のうちの1つを修正すること)の場合、データ処理装置は、変換エントリを不必要に無効にすることになる。本技法のデータ処理装置は、ページテーブルエントリの属性が修正されたことを示す通知(これは、キャッシュからの内部通知、またはデータ処理装置内のどこか他の場所で生成された通知であり得る)に応答して、少なくともいくつかの制御情報を修正する。しかしながら、ページテーブルエントリに関連付けられた変換エントリのうちの1つまたは複数は、第1のルックアップアドレスを照会する後続のルックアップに応答して使用するためにキャッシュ内に保持される。このようにして、有効な変換エントリがキャッシュ内に残り、データ処理装置は、将来のルックアップのためにこれらの変換エントリを有利に使用することができる。キャッシュ内に符号化される制御情報は、以下でさらに説明するように、様々な形態をとることができる。いくつかの実施形態では、制御情報は、変換エントリに関連付けられたフラグまたはビットのセットとして符号化されるが、他の実施形態では、制御情報の符号化は、特定の第1のアドレスまたは第2のアドレスに対応するエントリの存在である。
【0010】
属性は、様々な方法で定義することができる。少なくともいくつかの実施形態では、属性は、ページテーブルエントリがアクセスされたことがあるか否かに関するヒントであり、制御情報の少なくともいくつかを修正することは、ページテーブルエントリに対応するキャッシュ内の変換エントリに関連付けられた変換エントリ固有の制御情報を修正することを含む。他の実施形態では、属性は、例えば、ページテーブルエントリに示されるデータが修正されたことがあることを示すダーティフラグ/ビットであり得る。属性を、ページテーブルエントリ内に既に存在する変換情報を保持しながら修正することができるページテーブルエントリ内の任意の値とすることができることは、当業者には容易に理解できるだろう。ヒントは、ページテーブルがアクセスされたことがあるか否かを示すものであり、多様に設けることができる。例えば、ヒントは、ページテーブルエントリがアクセスされたことを示すために論理1に設定され、ページテーブルエントリがアクセスされたことがないことを示すために論理0に設定される単一のブール値であり得る。あるいは、論理0を使用して、ページテーブルエントリがアクセスされたことがあることを示すことができ、論理1を使用して、ページテーブルエントリがアクセスされたことがないことを示すことができる。エントリ固有制御情報は、多様に設けることができ、情報の複数のサブセットを含み、その各々は、変換エントリのうちの1つに固有であり、そのエントリに固有の情報を決定するために使用することができる。
【0011】
少なくともいくつかの実施形態では、第1のアドレスは仮想アドレス空間内の仮想アドレスであり、第2のアドレスは物理アドレス空間内の物理アドレスであり、第1のルックアップアドレスは仮想アドレス空間内の仮想ルックアップアドレスである。このようにして、キャッシュは、データ処理回路構成によって使用される仮想アドレスがメモリ階層によって使用される物理アドレスに変換されることを可能にする変換情報を提供する。このような変換により、物理アドレス空間よりも仮想アドレス空間で使用されるアドレスビットを少なくすることができる。他の実施形態では、変換は、物理アドレスまたは仮想アドレスのいずれかではなく中間アドレスを含む場合があり、この場合、アドレス変換は、例えば、複数のステージで行われることがある。
【0012】
少なくともいくつかの実施形態では、属性の修正は、ページテーブルエントリの属性を第1の値に設定することに対応し、制御情報の少なくともいくつかの修正は、ページテーブルエントリの属性が第1の値に設定されていることを示すように制御情報の少なくともいくつかを修正することに対応する。例えば、いくつかの実施形態では、属性と制御情報の少なくともいくつかとが一致する。あるいは、制御情報は、属性または属性を定義するビットのサブセットを示す情報を含むことができる。制御情報が変換エントリ固有制御情報であり、属性がページテーブルエントリがアクセスされたことがあるか否かに関するヒントである実施形態では、エントリ固有制御情報は、ページテーブルエントリがアクセスされたことがあることを示すためにヒントが第1の値をとるときに第1の値をとり、ヒントが第1の値をとらないときに第1の値の論理反転をとり、よって、ページテーブルエントリがアクセスされたことがないことを示す単一ビットを含むことができる。第1の値は限定されず、論理1値または論理0値を有する単一ビットによって表されるブール値であってもよい。あるいは、第1の値は、属性の設定を示すためにデータ処理システムによって使用されるビットの任意の既知のシーケンスであってもよい。
【0013】
少なくともいくつかの実施形態では、データ処理装置は、後続のアドレスルックアップに応答して、ページテーブルエントリの属性を第2の値に設定し、ページテーブルエントリの属性が第2の値に設定されていることを示すように制御情報の少なくともいくつかを修正するようにさらに適応される。それによって、属性(したがって、制御情報)は、ページテーブルエントリがアクセスされたことがあるか否かを示す。前に述べたように、ページテーブルエントリの属性および制御情報は、必ずしも同じ値によって表される必要はなく、前述のように、多様に表され得る。第2の値は特に限定されず、第1の値とは異なる任意の値であってよく、必ずしも第1の値の論理反転である必要はない。
【0014】
少なくともいくつかの実施形態では、データ処理装置は、後続のアドレスルックアップに応答して、後続のアドレスルックアップから生成された対応する後続の第2のアドレスに基づいて、データトランザクションを実行することと並行して、ページテーブルエントリの属性を設定するようにさらに適応される。キャッシュに保持されている変換エントリを使用することによって、対応する後続の第2のアドレスを決定するためにページテーブルルックアップを最初に実行することなく、対応する後続の第2のアドレス(変換されたアドレス)に基づいて、データトランザクションを実行することが可能になる。加えて、ページテーブルエントリに属性を設定するトランザクションは、データトランザクションと並行して実行することができる。この結果、ページテーブルエントリは、データトランザクションが完了するのを待つ必要なく更新される。
【0015】
少なくともいくつかの実施形態では、データ処理装置は、属性が第2の値に設定されていることに応答して、属性を第1の値に設定するための監視手順を実行する制御回路構成をさらに備える。このようにして、属性は、監視手順が開始されてからキャッシュ内のページテーブルエントリおよび対応する変換エントリがアクセスされたことがあるか否かを示す。
【0016】
少なくともいくつかの実施形態では、データ処理装置は記憶回路構成をさらに備え、制御回路構成は、監視手順を実行するときに、属性が第2の値に設定されているかどうかを記憶回路構成に記録するようにさらに適応される。このようにして、記憶回路構成は、ページテーブルエントリ、よって、キャッシュに記憶された特定の変換エントリが、監視手順が開始されてからアクセスされたことがあるか否かを示す情報を含む。キャッシュに記憶された対応する変換エントリを有するすべてのページテーブルエントリ内の属性の設定に関する監視手順を開始することによって、記憶回路構成は、監視手順が開始されてからキャッシュ内のどの変換エントリが使用されたことがあるか、どの変換エントリが使用されたことがないかを示すデータを記憶する。加えて、記憶回路構成は、このようなデータをある期間にわたって記憶することを可能にする。
【0017】
少なくともいくつかの実施形態では、制御回路構成は、所定の時間が経過したこと、および保守活動が行われたことの少なくとも一方の後に、監視手順を周期的に開始するように適応される。例えば、いくつかの実施形態では、制御回路構成は、監視手順が行われるべき(例えば、秒単位または任意の他の時間単位で測定される)実際の時刻を示す壁時間、所定数のクロックサイクル、キャッシュ内の所定数のルックアップ、コンテキストスイッチ、ネットワーク活動の完了、メモリ再利用イベント、および電力状態の変化のうちの少なくとも1つに応答して、監視手順を周期的に開始するように適応される。監視手順を開始することによって、システムの挙動が劇的に変化し得るようなイベントに応答して、ページテーブルエントリの使用方法を決定することが可能になる。例えば、監視手順を例えば、10秒ごとに1回開始することによって、ページテーブルエントリが各10秒ウィンドウ内でアクセスされたか否かを判定することができる。よって、アクセス頻度を判定することができる。例えば、ページテーブルエントリが監視手順の10サイクルのうちの3サイクルでアクセスされた場合、ページテーブルエントリは100秒当たり3回アクセスされたと判断することができる。このようにして、データ処理装置は、キャッシュ内のどの変換エントリが特定の頻度で使用されるか、および保守活動が発生した後にキャッシュ内のどの変換エントリを維持する必要があるかを示す情報を記憶することができる。
【0018】
少なくともいくつかの実施形態では、データ処理装置は、属性修正命令に応答して、ページテーブルエントリ内の属性の修正の通知を生成する復号回路構成をさらに備える。よって、ページテーブルエントリの属性が修正されると、復号回路構成は、属性の修正を引き起こす制御信号を生成することに加えて、ページテーブルエントリ内の属性が修正されたことがあるという通知を生成する。前述のように、データ処理装置は、ページテーブルエントリ内の属性に対する修正の通知に応答して、制御情報の少なくともいくつかを修正し、対応する第1のルックアップアドレスを照会する後続のアドレスルックアップで使用するために、ページテーブルエントリに対応する変換エントリを保持する。
【0019】
少なくともいくつかの実施形態では、属性修正命令は、属性無効化命令である。属性無効化命令は、制御情報を無効にする命令である。よって、データ処理装置が制御情報を決定するためにキャッシュを読み出そうと試みるとき、制御情報が無効であり、データ処理装置がページテーブルエントリから制御情報を決定するためにさらなる処理(例えば、ページテーブルウォーク)を実行する必要があることが決定される。
【0020】
少なくともいくつかの実施形態では、キャッシュは変換索引バッファである。変換索引バッファは、データ処理回路構成によって使用される仮想アドレス空間内で使用される仮想アドレスと、メモリ階層によって使用される物理アドレス空間内で使用される物理アドレスとの間の変換を提供する。
【0021】
少なくともいくつかの実施形態では、ページテーブルエントリ内の別の属性の修正の通知に応答して、ページテーブルエントリに対応する変換エントリが無効にされる。前述のように、キャッシュ内の対応する変換エントリが無効になることなく修正され得るページテーブルエントリの一部の属性が存在する。しかしながら、修正されると、キャッシュ内の変換エントリが無効になる、ページテーブルエントリの他の属性(例えば、上述の「別の属性」)が存在する。別の属性の修正の通知にも応答するデータ処理装置を提供することによって、キャッシュ内の変換エントリは、可能であれば保持し、そうでなければ無効にすることができる。
【0022】
少なくともいくつかの実施形態では、ページテーブルエントリ内の属性の修正の通知およびページテーブルエントリ内の別の属性の修正の通知は、異なる命令によって提供される。代替実施形態では、ページテーブルエントリ内の属性の修正の通知、およびページテーブルエントリ内の別の属性の修正の通知は、属性が修正されるべきか否か、または別の属性が修正されるべきか否かを指定するパラメータを有する同じ命令によって提供される。このようにして、復号回路構成は、修正される必要があるのが制御情報であるか否か、または変換エントリが無効にされる必要があるか否かを示す通知をデータ処理装置に提供することによって、属性または別の属性が修正されるべきか否かを指定するパラメータを有する異なる命令または同じ命令に応答するようにセットアップされる。
【0023】
少なくともいくつかの実施形態では、別の属性は、第1のアドレス情報、第2のアドレス情報、セキュリティ情報、およびステータス情報(アクセス情報を含む)のうちの1つである。別の属性が、キャッシュ内の対応する変換エントリが無効にされることが有益である任意の属性であり得ることは、当業者には容易に理解できるだろう。例えば、データ整合性、データセキュリティ、またはシステム信頼性の理由で、変換エントリを無効にすることが有益であり得る。
【0024】
少なくともいくつかの実施形態では、変換エントリは、第1の読み出しアドレスと第2の読み出しアドレスとの間の読み出しアクセスのために使用される読み出し変換、および第1の書き込みアドレスと第2の書き込みアドレスとの間の書き込みアクセスのために使用される書き込み変換のうちの1つを定義し、制御情報は、有効な書き込み変換の存在によって符号化される。このような実施形態では、キャッシュは、読み出し変換および書き込み変換を別々に記憶する。読み出し変換の存在は、読み出し変換に対応する第1の読み出しアドレスを指定する読み出しトランザクションがキャッシュヒットをもたらし、対応する第2の読み出しアドレスが提供されることを意味する。同様に、書き込み変換の存在は、書き込み変換に対応する第1の書き込みアドレスを指定する書き込みトランザクションがキャッシュヒットをもたらし、対応する第2の書き込みアドレスが提供されることを意味する。場合によっては、特定のアドレスに対応する第1の読み出しアドレスを指定する読み出し変換と、特定のアドレスに対応する第1の書き込みアドレスを指定する書き込み変換の両方が提供される。よって、アドレスへの読み出しアクセスおよび書き込みアクセスは両方ともキャッシュヒットをもたらす。他の場合には、特定のアドレスに対応する第1の読み出しアドレスを有する読み出し変換のみが提供されてもよい(対応する書き込み変換は提供されなくてもよい)。この場合、読み出しアクセスはキャッシュヒットをもたらし、書き込みアクセスはキャッシュへのヒットをもたらさない。同様に、他の場合には、特定のアドレスに対応する第1の書き込みアドレスを有する書き込み変換のみが提供されてもよい(対応する読み出し変換は提供されなくてもよい)。この場合、書き込みアクセスはキャッシュヒットをもたらし、読み出しアクセスはキャッシュへのヒットをもたらさない。このような実施形態では、制御情報は、有効な書き込み変換の存在によって符号化される。言い換えれば、特定の第1のアドレスに対応する第1の読み出しアドレスを有する読み出し変換の場合、制御情報は、特定のアドレスに対応する第1の書き込みアドレスを有する有効な書き込み変換の存在である。したがって、制御情報の修正は、書き込み変換の無効化に対応する。このようにして、属性修正は、必然的に書き込み変換の無効化をもたらし得る。しかしながら、属性修正が、読み出しトランザクションが依然として有効であるようなものであれば、読み出し変換は、キャッシュ内に維持され、後続のトランザクションにおいて使用されてもよい。
【0025】
少なくともいくつかの実施形態では、属性は、ページテーブルエントリによって示されるデータが修正されたことがあることを示す修正フラグであり、制御情報の少なくともいくつかの修正は、対応する読み出し変換を保持しながら対応する書き込み変換を無効にすることに対応する。このような実施形態では、オペレーティングシステムは、ページテーブルエントリに示されるデータに関連するさらなるデータトランザクションに関して、修正フラグ(例えば、ダーティフラグ)の更新に厳密な順序付けを必要とする。設定修正フラグは、ページテーブルエントリに示されるデータ(すなわち、ページテーブルエントリの第2の/物理アドレスによってポイントされるデータ)が修正されたことがあることを示し、クリア修正フラグは、ページテーブルエントリに示されるデータが修正されたことがないことを示す(クリアがページテーブルエントリに示されるデータが修正されたことがあることを示し、設定がページテーブルエントリに示されるデータが修正されたことがないことを示すように、フラグの設定ステータスとクリアステータスとを入れ替えることができることは、当業者には容易に理解できるだろう。)。プロセッサがページテーブルに示されるデータに書き込みを行うとき、修正フラグが設定されるまで、その書き込みはどのプロセッサにも見えてはならない。このようにして、ページテーブルに示されるデータに書き込みを行う第1のプロセッサは、第1のプロセッサに知られることなく第2のプロセッサによってデータが上書きされることがないことを確実にすることができる。この順序付けを保証するために、属性の修正の通知がキャッシュによって受信されると、変換はキャッシュ内で無効にされる。発明者らは、読み出し変換と書き込み変換の両方を無効にする代わりに、読み出し変換をキャッシュ内に保持することによって性能を向上させることができることに気づいたが、その理由は、このような順序付け制約が読み出し変換に対して必要とされず、書き込み変換のみを無効にするからである。このようにして、キャッシュは、必要とされる変換をページテーブルエントリ内でルックアップする必要なく、キャッシュから直接的でなくとも読み出しアクセスに変換を提供することができる。
【0026】
少なくともいくつかの実施形態では、変換回路構成は、ルックアップが読み出しアクセスに対応するとき、対応する第2の読み出しアドレスを返し、制御情報とは無関係に、対応する第2の読み出しアドレスに基づいて、読み出しトランザクションを開始し、ルックアップが書き込みアクセスに対応し、制御情報が対応する有効な書き込み変換の存在を符号化するとき、対応する第2の書き込みアドレスを返し、対応する第2の書き込みアドレスに基づいて、書き込みトランザクションを開始するように適応される。このような実施形態では、ルックアップが書き込みアクセスに対応し、制御情報が対応する有効な書き込み変換の不在を符号化するとき、対応する第2の書き込みアドレスは変換回路構成によって返されず、データ処理装置は変換をページテーブルエントリ内でルックアップする必要がある。しかしながら、読み出しアクセスの場合、制御情報に対するこのような要件は存在せず、変換回路構成は、有効な書き込み変換または無効な書き込み変換が存在するか否かとは無関係に、対応する第2の読み出しアドレスを返し、よって、対応する第2の読み出しアドレスを決定するためのページテーブルウォークを回避することができる。
【0027】
図1は、フェッチステージ6と、復号ステージ10と、リネームステージ12と、発行ステージ16と、実行ステージ14と、ライトバックステージ20とを含む複数のステージを含むデータ処理装置2の一例を概略的に示す。命令はパイプラインを通ってステージからステージへ移動し、一部の命令がパイプラインの1つのステージにあり、他の命令が別のステージで保留中であり得る。これは可能なパイプライン構成の単なる例であり、他の例は、必要に応じて異なるステージまたはステージの組み合わせを有してもよいことが理解されるであろう。
【0028】
フェッチステージ6は、例えば命令キャッシュから命令をフェッチする。分岐予測器4は、分岐命令の結果を予測するために設けることができる。フェッチされた命令は復号ステージ10に渡され、復号ステージ10は命令を復号して、実行ステージ18をトリガして対応する処理動作を実行させるための制御信号を提供することができる復号された命令を生成する。フェッチステージ6によってフェッチされた一部の命令について、復号ステージ8は、パイプラインの後のステージによって読まれる「命令」がキャッシュ8からフェッチされた命令とは異なる形態であり得るように、命令を2つ以上の復号された命令にマッピングし得る。復号された命令は、命令によって指定されたアーキテクチャレジスタ指定子を、命令に応答してアクセスされるべき対応する物理レジスタ14を識別する物理レジスタ指定子にマッピングするために、レジスタリネームステージ12に渡される。発行ステージ16は、実行のために発行を待っている命令をキューに入れる。実行ステージ18は、発行ステージ16によって発行された命令を実行し、命令に応答して、算術演算もしくは論理演算、またはデータキャッシュ30もしくはさらなるレベルのキャッシュ32もしくはメモリ34へのロード/ストア動作などの様々なデータ処理動作を実行する。実行ユニット18は、いくつかの保留中のロード/ストア動作をキューに入れるためのロードストアユニット26を含むいくつかの実行ユニット22、24、21、25を有することができる。ライトバックステージ20は、実行ステージ18によって実行された命令の結果を、述語レジスタ44および条件ステータスレジスタ42を含む物理レジスタファイル14に書き込む。
【0029】
パイプラインは、命令によって指定された仮想アドレスをキャッシュまたはメモリ内のデータを識別する物理アドレスに変換するためのいくつかのTLBエントリを含む変換索引バッファ(Translation Lookaside Buffer、TLB)36を備えるメモリ管理ユニット(Memory Management Unit、MMU)35も有する。各エントリは、仮想アドレス(第1のアドレス)の所与のページに対応し、それらのアドレスを対応する物理アドレス(第2のアドレス)に変換する方法を指定することができる。ロード/ストア動作がロード/ストアユニット26によって受信されると、ロード/ストアユニット26は、対応する仮想アドレスをTLB36に渡すことができる。TLB36が対応するページのエントリを含む場合、TLB36は、対応する物理アドレスを返すことができる。TLB36が、要求された仮想アドレスを含むページのエントリを記憶していない場合、TLB36は、メモリ内のさらなるレベルのTLBまたはページテーブルエントリからTLBエントリをフェッチすることができる。
【0030】
図2aは、いくつかの実施形態によるデータ処理装置90のさらなる詳細を概略的に示す。データ処理装置90は、キャッシュ80と、変換回路構成58と、メモリ60とを備える。キャッシュ80は、複数の変換エントリ88を含む。複数の変換エントリ86の各エントリは、第1のアドレス82(例えば、仮想アドレス)と、第2のアドレス84(例えば、物理アドレス)と、変換エントリ固有制御情報86とを含む。キャッシュ80内の変換エントリ88の各々は、変換エントリと同じ変換93を定義するメモリ60内の対応するページテーブルエントリ62を有する。具体的には、変換エントリ88の第1の変換エントリは、第1のアドレス82(A)、第2のアドレス84(A)、および制御情報86(A)を定義する。第1の変換エントリは、それが対応する変換エントリと同じ変換93(A)を定義する対応するページテーブルエントリ62(A)を有することができる。この例では、ページテーブルエントリ62(A)の変換93(A)は、第1のアドレス82(A)および第2のアドレス84(A)を定義する。メモリ60内のページテーブルエントリ62は、属性として、ページテーブルエントリがアクセスされたことがあるか否かに関するヒント92をさらに含む。
【0031】
データ処理装置90は、第1のルックアップアドレスが複数の変換エントリ88内の第1のアドレス82に対応するとき、第1のルックアップアドレスを照会するルックアップに応答して、対応する第2のアドレスを返す変換回路構成58をさらに備える。例えば、第1のルックアップアドレスが第1のアドレス82(B)に対応する場合、変換回路構成はキャッシュヒットを判定し、対応する第2のアドレス84(B)がメモリ60内のデータトランザクションで使用されるように返される。
【0032】
データ処理装置90は、ヒント92の修正の通知に応答して、特定のページテーブルエントリに関連付けられた変換エントリに対応するエントリ固有制御情報86を修正する。例えば、ヒント属性92(A)を有するページテーブルエントリ62(A)が、第1のアドレス82(A)、第2のアドレス84(A)、および制御情報86(A)を有する変換エントリに対応する場合、ページテーブルエントリがアクセスされたことがあることを示すようにヒント属性が修正されると、対応するページテーブルエントリ62(A)がアクセスされたことがあることを示すように変換エントリ固有制御情報86(A)を修正させる通知が提供される。ページテーブルエントリ内の変換93(A)はアクセスフラグを設定またはクリアすることによって修正されないので、第1のアドレス82(A)から第2のアドレス84(A)への変換を提供するキャッシュ内の変換エントリは有効なままである。よって、この変換エントリは、第1のアドレス82(A)を指定する後続のルックアップで使用するためにキャッシュ内に保持される。いくつかの実施形態では、ヒント92は、ページテーブルエントリ62が最近アクセスされたことがないときに第1の値をとり、ページテーブルエントリ62が最近アクセスされたことがあるときに第2の値をとる単一ビットであってもよい。このような実施形態では、対応する変換エントリ固有制御情報86は、ヒント属性92の値を示す単一ビットであってもよい。
【0033】
図2bは、いくつかの実施形態によるデータ処理装置98のさらなる詳細を概略的に示す。データ処理装置98は、図2aに関連して既に説明した多数の特徴を含む。よって、既に説明した特徴とは異なる特徴に関して説明する。特に、データ処理装置は、キャッシュ91と、変換回路構成58と、メモリ60とを備える。メモリ60は、各々が第1のアドレス(仮想アドレス)から第2のアドレス(物理アドレス)への変換93を定義する複数のページテーブルエントリ62を含む。ページテーブルエントリ62は、ページテーブルエントリ内で参照されるデータ74が修正されたことがあることを示すダーティビット94を含む一部の属性を含む。
【0034】
キャッシュ91は、多数の変換エントリ99を含む。各変換エントリは、ページテーブルエントリ62に対応する。特に、変換エントリは、ページテーブルエントリ62において定義される第1のアドレス95(仮想アドレス)から第2のアドレス97(物理アドレス)への変換93のキャッシュされたコピーを含む。さらに、変換エントリ99は各々、変換エントリ固有制御情報97に関連付けられる。変換エントリ固有制御情報97は、対応するページテーブルエントリ内のダーティビットの修正に応答して修正される。例えば、ページテーブルエントリ62(A)に示されるデータが修正された場合、ダーティビット94(A)は、データが修正されたことがあることを示すように設定される。ダーティビットが修正されると、データ処理装置98はキャッシュ91に通知を送り、ページテーブルエントリに対応する変換エントリ固有制御情報の修正を引き起こす。図示の例では、第1のアドレス95(A)、第2のアドレス96(A)、および制御情報97(A)を有する第1の変換エントリが、ページテーブルエントリ62(A)に対応すると仮定する。言い換えれば、第1のアドレス95(A)および第2のアドレス96(A)によって定義される変換は、ページテーブルエントリ62(A)内で定義される変換93(A)のキャッシュされたコピーである。よって、ダーティビット94(A)が修正されると、通知がキャッシュに送られ、変換エントリ固有制御情報97(A)は、ダーティビットが修正されたことがあることを示すように修正される。
【0035】
第1のアドレスを指定するトランザクションに応答して、変換回路構成58は、TLBキャッシュ91内でルックアップを実行し、第1のアドレスがキャッシュ内でヒットすると、第2のアドレスおよび制御情報が返される。このようにして、データ処理装置は、物理アドレスに記憶されたデータ74が修正されたことがあるか否かを判定し、適切な措置を講じることができる。例えば、制御情報が、データが修正されたことがあり、トランザクションが書き込みトランザクションであることを示す場合、データ処理装置98は、データの完全性を維持するために書き込みトランザクションをアボートすることを選択することができる。
【0036】
図3は、ページテーブルエントリ302の修正に応答したキャッシュ300内の制御情報およびエントリの修正を概略的に示す。部分図300(A)は、複数の変換エントリを含むキャッシュ306(A)を示す。各変換エントリは、仮想アドレス(Virtual Address、VA)と、物理アドレス(Physical Address、PA)と、制御情報(Control Information、ctrl)と、有効ビットとを含む。キャッシュ306(A)内の変換エントリの各々は、ページテーブルエントリに対応する。特に、変換エントリは、ページテーブルエントリにおいて定義された仮想アドレスと物理アドレスとの間の変換のキャッシュされたコピーである。例えば、変換エントリ304(A)は、ページテーブルエントリ302(A)に対応する。変換エントリ304(A)は、仮想アドレス#00FF00、物理アドレス#0FFF、制御情報1、有効ビット1を含む。この情報は、仮想アドレス#00FF00が物理アドレス#0FFFに対応し、制御情報が、ページテーブルエントリ302(A)のヒント属性が設定されていることを決定し、有効ビットが、エントリが有効であることを決定することを示す。例示的な仮想アドレスおよび物理アドレスが純粋に例示の目的で使用されており、任意のフォーマットまたは長さの仮想アドレスまたは物理アドレスを使用することができることは当業者には理解されよう。同様に、任意の追加のステータスビットをキャッシュされたエントリに追加することができる。ページテーブルエントリ302(A)は、キャッシュされたエントリにコピーされる仮想アドレスおよび物理アドレスと、情報のいくつかの追加ビットとを定義する。図示の例では、ページテーブルエントリはまた、ページテーブルエントリが最近アクセスされたことがあることを示すために1の値をとり、ページテーブルエントリが最近アクセスされたことがないことを示すために0の値をとるヒントフラグと、ページテーブルに示されたデータが修正されたことがあることを示すために1の値をとり、ページテーブルエントリに示されたデータが修正されたことがないことを示すために0の値をとるダーティビットとを含む。これらの値が、特定の実装形態に応じて反対の意味を有するものとして解釈され得ることは当業者には容易に理解できるだろう。
【0037】
部分図300(B)は、ページテーブルエントリ302(A)およびキャッシュ306(A)に作用する属性無効化命令の結果を概略的に示す。特に、属性無効化命令は、ページテーブルエントリ302(A)のヒントフラグを0に設定されるように修正し、その結果、ページテーブルエントリ302(B)が得られる。加えて、上述したように、ヒントが修正されたことを示す通知が送信される。その結果、データ処理装置は、キャッシュ内の制御情報を、ヒント属性が修正されたことを示すように修正する。結果として生じる変換エントリ304(B)は、キャッシュ306(B)内に示されている。特に、306(B)内の仮想アドレスおよび物理アドレスは、変換エントリ304(A)内の仮想アドレスおよび物理アドレスに関して修正されていない。このようにして、変換情報自体がキャッシュ306(B)内に保持され、かつ(変換エントリ304(B)内の有効ビットによって示されるように有効である。しかしながら、0の制御情報は、ページテーブルエントリ302(B)においてヒント値が0に設定されている(クリアされた)ことを示す。したがって、データ処理装置は、変換エントリ304(B)に基づくトランザクションが開始されたとき、ページテーブルエントリ302(B)内のヒントフラグを設定するためにさらなるトランザクションが必要であると判断することができる。このようにして、ページテーブルエントリ302(B)は、ページテーブルエントリ自体を介して、またはTLB内のページテーブルエントリのキャッシュされたバージョンを介して、アクセスされたことがあるか否かを正確に示す。トランザクションがページテーブルエントリ302(B)内のヒントフラグを(例えば1に)更新した結果として、TLB306(B)のエントリ304(B)内の制御情報も(例えば1に)更新される。
【0038】
部分図300(C)は、ページテーブルエントリ302(C)内の仮想アドレスを修正する命令の結果としてのキャッシュ306(C)およびページテーブルエントリ302(C)を概略的に示す。特に、ページテーブルエントリ302(B)の仮想アドレスは、ページテーブルエントリ302(C)に示すように、#00FF00から#00AF00に修正される。その結果、キャッシュ306(C)内の変換エントリ304(C)は、もはやページテーブルエントリを正確に表さない。よって、変換エントリ304(C)は無効としてマークされる。図示の実施例では、これは、有効ビットをクリアすることによって達成される。しかしながら、変換を無効にする任意の方法が使用され得ることは当業者によって理解されるであろう。
【0039】
よって、上述のデータ処理装置は、対応するページテーブルエントリが修正されたとき、ページテーブルエントリに定義された変換が修正されないように変換情報をキャッシュに保持することができる。その結果、仮想アドレス#00FF00を指定するルックアップは、対応するページテーブルエントリ内の変換がキャッシュされたエントリと整合する限り、物理アドレス#0FFFに変換することができる。
【0040】
図4は、いくつかの実施形態によるデータ処理装置100のさらなる詳細を概略的に示す。データ処理装置は、キャッシュ102と、変換回路構成104と、メモリ106と、制御回路構成108とを備える。キャッシュ102は、上述したように、複数の変換エントリおよび制御情報を含む。制御回路構成108は多様に設けることができるが、制御回路構成108は、監視手順を開始する機能を実行する。監視手順は、ページテーブルエントリ110の属性112が、ページテーブルエントリ110が最近アクセスされたことがあることを示すかどうかを定期的に判定するステップと、そうである場合、属性112が、対応するページテーブルエントリ110が最近アクセスされたことがないことを示すように、属性112を修正するステップとを含む。この手順を繰り返すことによって、制御回路構成は、制御回路構成がページテーブルエントリ110の属性112を最後に修正(例えば、リセット)してから、ページテーブルエントリ110がアクセスされたことがあるかどうかを判定することができる。したがって、属性112は、ページテーブルエントリ110が最近アクセスされたことがあるか否かに関する指示またはヒントを構成し、「最近アクセスされたこと」という用語は、ページテーブルエントリ110が最近アクセスされたことがないことを示すために制御回路構成108が最後に属性112を修正してから、ある期間内におけるアクセスを指す。属性の修正に加えて、ページテーブルエントリ112の属性112が修正されたことがあることを示すように制御情報を修正できるように、通知がキャッシュ102に送信される。
【0041】
図5は、いくつかの実施形態による監視手順を実行するように適応されたデータ処理装置120のさらなる詳細を概略的に示す。データ処理装置120は、変換索引バッファ(TLB)122と、変換回路構成140と、復号回路構成142と、制御回路構成144と、記憶回路構成146と、メモリ148とを備える。TLB122は、複数の変換エントリ130を含み、変換エントリ130の各々は、仮想アドレス124(VA)と、物理アドレス126(PA)と、制御情報128とを含む。変換回路構成140は、最上位ビット(Most Significant Bit、MSB)132および最下位ビット(Least Significant Bit、LSB)134を含む仮想アドレスを受信する。
【0042】
変換回路構成は、最上位ビット132をTLBに渡して変換を実行する。仮想アドレスの最上位ビット132がTLB内のエントリに対応する場合、物理アドレスの対応する最上位ビット136および対応する制御情報138がTLBから変換回路構成に出力される。物理アドレス136の最上位ビットに対応する制御情報138が、物理アドレスに関連付けられたデータがまだアクセスされたことがないことを示す場合、データ処理装置120は、TLBに、物理アドレスに関連付けられたデータが現在アクセスされたことがあることを示すように対応する制御情報128を修正させる。変換回路構成140は、物理アドレスの最上位ビット136および仮想アドレスの最下位ビット134から物理アドレスを生成する。次いで、物理アドレスは、メモリ148内のデータトランザクションのために使用される。制御情報138は、変換回路構成から制御回路構成144に渡され、この制御回路構成は、物理アドレスに関連付けられたデータが現在アクセスされたことがあることを記憶回路構成146に記録することができる。加えて、制御情報128の修正は、第2のトランザクションを実行させて、物理アドレスに関連付けられたデータが現在アクセスされたことがあることを示すように、ページテーブルエントリ内の属性を修正する。これにより、属性が更新される前に制御情報が更新される。
【0043】
加えて、データ処理装置は、属性無効化命令にも応答する。特に、復号回路構成142は、属性無効化命令に応答して、ページテーブルに記憶された物理アドレスに関連付けられたデータがアクセスされたことがないことを示すように、メモリ148に記憶されたページテーブル内の属性を修正する。復号回路構成142はさらに、属性無効化命令に応答して、ページテーブルエントリ内の属性の修正の通知を生成する。この通知により、データ処理装置は、物理アドレス126に関連付けられたデータがアクセスされたことがないことを示すように、TLB122内のエントリ固有制御情報128を修正する。加えて、通知は、仮想アドレス124と物理アドレス126との間の変換を定義するアドレス変換エントリをTLBに保持させる。いくつかの実施形態では、属性および制御情報を並行して更新することができ、他の実施形態では、属性または制御情報のいずれか一方を他方より前に更新することができる。復号回路構成142は、TLB122内の変換情報130が無効になるようにページテーブルエントリを修正させるエントリ無効化命令である異なる命令にさらに応答することができる。復号回路構成142は、エントリ無効化命令に応答して、ページテーブルエントリの別の属性の修正の通知を生成し、ページテーブルエントリの別の属性の修正の通知に応答して、TLB122内の対応する変換エントリが無効にされる。
【0044】
制御回路構成144は、TLB122内のどのエントリが頻繁にアクセスされるデータに対応するかを判定するために、監視手順を実行することができる。制御回路構成144は、所定の時間または保守活動の少なくとも一方の後に、監視手順を周期的に開始する。監視手順は、1つまたは複数のページテーブルエントリのヒント属性をクリアして、それらがアクセスされたことがないことを示すことを含む。制御回路構成144は、次いで、ページテーブルエントリがアクセスされているか否かを判定するために監視し、そうである場合、アクセスを記憶回路構成に記録する。監視手順を周期的に実行することによって、記憶回路構成に記憶されたデータを使用して、どのデータが頻繁にアクセスされているかをはっきりさせることができる。
【0045】
図6は、いくつかの実施形態において復号回路構成142によって実行される一連のステップを概略的に示す。フローはステップS602から始まり、ここで次の命令が受信される。次いで、フローはステップS604に進み、命令が属性無効化命令であるかどうかが判定される。「はい」の場合、フローはステップS606に進み、「いいえ」の場合、フローはステップS616に進む。ステップS606では、ページテーブルエントリに属性が設定されているか否かが判定される。「いいえ」の場合、フローはステップS602に戻り、「はい」の場合、フローはステップS608に進み、ページテーブルエントリ内の属性がクリアされる。次いで、フローはステップS610に進み、TLB122内に対応するエントリがあるかどうかが判定される。「いいえ」の場合、フローはステップS602に戻り、「はい」の場合、フローはステップS612に進み、ページテーブルエントリに対応するTLB122内の制御情報が修正される。次いで、フローはステップS614に進み、修正されたページテーブルエントリに対応する変換エントリが、後続のルックアップで使用するためにTLB122に保持される。次いで、フローはステップS602に戻る。
【0046】
ステップS604の結果が「いいえ」の場合、フローはステップS616に進み、命令が、TLB122内の変換のキャッシュされたコピーが無効にされるように、(例えば、キャッシュされた変換エントリがページテーブルエントリと整合しないように変換自体を修正することによって)ページテーブルエントリを修正するエントリ無効化命令であるかどうかが判定される。「いいえ」の場合、フローはステップS602に戻る。「はい」の場合、フローはステップS618に進み、属性無効化命令に応答して修正された属性とは異なるページテーブルエントリの属性が修正される。例えば、別の属性は変換自体であってもよい。次いで、フローはステップS620に進み、TLB内に対応するエントリがあるかどうかが判定される。「いいえ」の場合、フローはステップS602に戻る。「はい」の場合、フローはステップS622に進み、フローがステップS602に戻る前に、TLBエントリは無効にされる。
【0047】
図7は、変換回路構成140によって実行される一連のステップを概略的に示す。フローは、変換回路構成140が、着信仮想アドレス(VA)を使用してTLB122内でルックアップを実行するステップS702から始まる。次いで、フローはステップS704に進み、仮想アドレスがTLB122内でヒットしたことがあることを示す物理アドレスおよび制御情報がTLB122によって返されたか否かが判定される。「はい」の場合、ステップS708に進み、対応するページテーブルエントリ内の属性が設定されていることを制御情報が示しているか否かが判定される。「はい」の場合、フローはステップS710に進む。「いいえ」の場合、フローはステップS712に進み、ページテーブルエントリ内の属性を設定するためにトランザクションが開始される。次いで、フローはステップS714に進み、変換回路構成140は、フローがステップS710に進む前に、アクセスフラグが設定されていることを示すよう制御情報を設定するようにTLB122に命令する。
【0048】
ステップS704で、TLB122において仮想アドレスがヒットしなかった、すなわち仮想アドレスがミスしたと判定された場合、フローはステップS716に進み、ページテーブルエントリおよび対応する物理アドレスを返すためにページテーブルウォークが開始される。次いで、フローはステップS718に進み、ページテーブルエントリ内の属性が、ページテーブルエントリに関連付けられたデータがアクセスされたことがあることを示すように設定される。次いで、フローはステップS720に進み、変換回路構成140は、ページテーブルエントリに基づいて、変換エントリを生成するようにTLB122に命令する。次いで、フローはステップS722に進み、変換回路構成140は、対応するページテーブルエントリ内の属性が設定されていることを示すよう制御情報を設定するようにTLB122に命令する。次いで、フローはステップS710に進む。ステップS710では、ステップS702に戻る前に、物理アドレスに基づいてトランザクションが開始される。ステップS710で開始されるトランザクションは、(ステップS712が実行されるときに)ステップS712のトランザクションと並行して開始され得る。
【0049】
図8は、ページテーブルエントリ、変換回路構成140、およびTLB122に関して実行される一連のステップを概略的に示す。ステップS901では、変換回路構成140は、仮想アドレスVA1のルックアップをTLB122内で実行する。この例では、最初は、TLB122内に対応する変換エントリが存在せず、よって、ルックアップがミスすると仮定する。ステップS902では、TLB122は変換回路構成にミスを示し、変換回路構成は、ステップS903で、物理アドレスを決定するためにページテーブルウォークを開始する。ステップS904では、仮想アドレスVA1に対応する物理アドレスが変換回路構成140に返され、対応するページテーブルエントリ内の属性が、ページテーブルエントリに関連付けられたデータがアクセスされたことがあることを示すように設定される。ステップS905では、TLB122は、仮想アドレスVA1と物理アドレスとの変換に対応するエントリを生成する。ページテーブルエントリ内の属性が設定されていることを示す対応する制御情報が設定される。ステップS906では、別のルックアップが変換回路構成140からTLBによって受信される。ルックアップは、同じ仮想アドレスVA1に対応する。TLB122内の新しい変換エントリが仮想アドレスVA1に対応するので、ルックアップはTLB内でヒットし、仮想アドレスVA1に対応する物理アドレスPA1が変換回路構成140に返される。
【0050】
ステップS908では、ページテーブルエントリ内の属性がクリアされたという通知が受信される。それに応答して、TLB122は、属性がクリアされたことを示すように制御情報を修正する。加えて、TLB122は、仮想アドレスVA1と対応する物理アドレスPA1との間の変換エントリを保持する。ステップS909では、仮想アドレスを指定する第3のルックアップに応答して、VA1が変換回路構成140からTLB122に送信される。仮想アドレスVA1と対応する物理アドレスPA1との間の変換を指定する変換エントリが保持されていたので、ルックアップはTLB122内でヒットし、物理アドレスPA1がステップS910で変換回路構成140に返される。加えて、TLB122内の制御情報は、ページテーブルエントリ内の属性が設定されるべきであり、ページテーブルエントリ内の属性が設定されていることを示すように修正される。
【0051】
図9は、図2図3に示す実施形態に対するいくつかの代替実施形態によるデータ処理装置200を概略的に示す。データ処理装置は、キャッシュ202と、変換回路構成216と、メモリ218とを備える。キャッシュ202は、第1の読み出しアドレス208(仮想読み出しアドレス)と対応する第2の読み出しアドレス210(物理読み出しアドレス)との間の変換を定義する読み出し変換エントリ204を含むという点で、これより前の実施形態とは異なる。キャッシュ202は、第1の書き込みアドレス212(仮想書き込みアドレス)と対応する第2の書き込みアドレス214(物理書き込みアドレス)との間の変換を定義する書き込み変換エントリ206をさらに含む。第2のアドレスの各々に、少なくとも1つの読み出し変換および少なくとも1つの書き込み変換が定義され得ることに留意されたい。あるいは、一部の第2のアドレスは、対応する読み出し変換または対応する書き込み変換のみを有し得る。キャッシュ202は、読み出し変換に対応する書き込み変換の有無によって/有無において符号化される制御情報をさらに含む。特に、第1の読み出しアドレス208(A)および第2の読み出しアドレス210(A)を指定する所与の読み出し変換について、制御情報は、第2の読み出しアドレス210(A)が第2の書き込みアドレス214(A)である場合、第2の書き込みアドレス214(A)に対応する第1の書き込みアドレス212(A)を指定する有効な書き込み変換が存在するとき、第1の値をとるとみなすことができる。一方、第2の読み出しアドレス210(A)に対応する有効な第2の書き込みアドレスが存在しない場合、制御情報は第2の値をとるとみなすことができる。よって、制御情報の値は、所与の第2の読み出しアドレス210が、第2の読み出しアドレスと同じである対応する有効な第2の書き込みアドレス214を有するか否かに関する判定を通じて決定される。キャッシュ202の読み出し変換204および書き込み変換206の各々は、図2bに関して説明したように、変換93およびダーティビット92を含むページテーブルエントリ62に対応する。
【0052】
変換回路構成216は、読み出しアクセスと書き込みアクセスの両方に応答して、ルックアップをキャッシュ202内で実行する。アクセスが読み出しアクセスである場合に、変換回路構成216は、読み出しルックアップをキャッシュ202内で実行する。アクセスが書き込みアクセスであるとき、変換回路構成216は、書き込みルックアップをキャッシュ202内で実行する。ルックアップがキャッシュ202内でヒットした場合、第2のアドレスが返される。図示の実施形態は、第2の読み出しアドレスと第2の書き込みアドレスとの間の区別を行うが、特定のデータ項目に対応するメモリ内の第2のアドレスは1つだけであり、読み出しルックアップがキャッシュ内でヒットすると、返される第2のアドレスは第2の読み出しアドレスであり、書き込みルックアップがキャッシュ202内でヒットすると、返される第2のアドレスは第2の書き込みアドレスであることを理解されたい。
【0053】
キャッシュ202は、ページテーブルエントリ62の属性の修正の通知に応答して、書き込み変換を無効にし、読み出し変換を保持する。図示の実施形態では、ページテーブルエントリ内の属性は、ページテーブルエントリ内で参照されるデータが、例えば、プロセッサによる書き込みトランザクションに応答して修正されたことがあることを示すダーティフラグである。書き込みトランザクションに関する厳密な順序付け要件が存在する。特に、プロセッサが所与のデータセットを物理アドレスに書き込むとき、その物理アドレスに関連する他の書き込みトランザクションが実行される前に、修正フラグを設定しなければならない。これは、異なるプロセッサによる後続の書き込みトランザクションが、書き込みトランザクションを実行するプロセッサに知られることなく、所与のデータを上書きすることがないことを確実にすることができることを保証する。しかしながら、読み出し変換に対してこのような順序付け要件がないので、それが無効にされる要件はない。よって、書き込み変換を無効にするだけで、読み出し変換を使用して、読み出し変換で定義された第2の読み出しアドレスからデータを読み取ることができる。無効化は、書き込み変換に関連付けられた特定の有効ビットを設定することによって行うことができ、あるいは、第1の書き込みアドレス212および第2の書き込みアドレス214のうちの1つを所定の値に設定することによって変換を無効とマークすることができる。いくつかの実施形態では、属性は、ページテーブルエントリによって示されるデータが修正されたことがあることを示す修正フラグである。このようにして、ページテーブルエントリによって示されるデータが修正されたとき、書き込み変換206を無効にすることができ、対応する読み出し変換204を将来のルックアップのために保持することができる。
【0054】
図10は、図9に示すデータ処理装置のページテーブルエントリ1102の修正に応答したキャッシュ1104内の制御情報およびエントリの修正を概略的に示す。部分図1100(A)は、複数の読み出し変換エントリ1106(A)および複数の書き込み変換エントリ1104(A)を含むキャッシュ1104(A)を示す。読み出し変換エントリ1108(A)および書き込み変換エントリ1108(B)の各々は、仮想アドレス(VA)、物理アドレス(PA)、および有効ビットを含む。キャッシュ1104(A)内の変換エントリの各々は、ページテーブルエントリに対応する。特に、図示の読み出し変換エントリ1118(A)および図示の書き込み変換エントリ1116(A)は、ページテーブルエントリ1102(A)内で定義された仮想アドレスと物理アドレスとの間の変換のキャッシュされたコピーである。図示の読み出し変換エントリ1118(A)および図示の書き込み変換エントリ1116(A)は、仮想アドレス#00FF00と、物理アドレス#0FFFと、有効ビット1とを含む。この情報は、読み出し変換1118(A)および書き込み変換1116(A)の両方について、仮想アドレス#00FF00が物理アドレス#0FFFに対応し、有効ビットが、エントリが有効であることを決定することを示す。例示的な仮想アドレスおよび物理アドレスが純粋に例示の目的で使用されており、任意のフォーマットまたは長さの仮想アドレスまたは物理アドレスを使用することができることは当業者には理解されよう。同様に、任意の追加のステータスビットをキャッシュされたエントリに追加することができる。ページテーブルエントリ1102(A)は、キャッシュされたエントリにコピーされる仮想アドレスおよび物理アドレスと、情報のいくつかの追加ビットとを定義する。図示の例では、ページテーブルエントリはまた、ページテーブルエントリが最近アクセスされたことがあることを示すために1の値をとり、ページテーブルエントリが最近アクセスされたことがないことを示すために0の値をとるヒントフラグと、ページテーブルに示されたデータが修正されたことがあることを示すために1の値をとり、ページテーブルエントリに示されたデータが修正されたことがないことを示すために0の値をとるダーティビットとを含む。これらの値が、特定の実装形態に応じて反対の意味を有するものとして解釈され得ることは当業者には容易に理解できるだろう。図示の実施形態では、制御データは、有効な書き込み変換1116(A)の存在によってキャッシュ1104(A)内で符号化される。
【0055】
部分図300(B)は、仮想アドレス#00FF00を指定する書き込みトランザクションの結果を概略的に示す。特に、書き込みトランザクションは、ページテーブルエントリ1102(A)のダーティビットを1に設定されるように修正し、その結果、ページテーブルエントリ1102(B)が得られる。加えて、上述したように、ページテーブルエントリで指定されたデータが修正されたことがあることを示す通知が送信される。その結果、データ処理装置は、キャッシュ内の制御情報を、ヒント属性が修正されたことを示すように修正する。具体的には、書き込み変換エントリ1116(B)は無効にされ、対応する読み出し変換エントリ1118(B)は有効な読み出し変換として保持される。結果として生じる変換エントリ1118(B)および1116(B)は、キャッシュ1104(B)に示されている。したがって、データ処理装置は、仮想アドレス#00FF00に基づく書き込みトランザクションがキャッシュ内でルックアップされると、(対応するページテーブルエントリ1102(B)をルックアップする必要なしに)ページテーブルエントリ1102(B)に関連付けられたデータがダーティであると判断することができる。
【0056】
部分図1100(C)は、ページテーブルエントリ1102(C)内の仮想アドレスを修正する命令の結果としてのキャッシュ1104(C)およびページテーブルエントリ1102(C)を概略的に示す。特に、ページテーブルエントリ1102(B)の仮想アドレスは、ページテーブルエントリ1102(C)に示すように、#00FF00から#00AF00に修正される。その結果、キャッシュ1104(C)内の読み出し変換エントリ1118(C)および書き込み変換エントリ1116(C)は、もはやページテーブルエントリを正確に表していない。よって、読み出し変換エントリ1118(C)も無効としてマークされる。図示の実施例では、これは、有効ビットをクリアすることによって達成される。しかしながら、変換を無効にする任意の方法が使用され得ることは当業者によって理解されるであろう。
【0057】
よって、上述のデータ処理装置は、対応するページテーブルエントリが、ページテーブルエントリ内で定義された読み出し変換が有効なままであるように修正されると、変換情報をキャッシュ内に保持することができる。その結果、仮想アドレス#00FF00を指定する読み出しルックアップは、対応するページテーブルエントリ内の読み出し変換がキャッシュされたエントリと整合する限り、物理アドレス#0FFFに変換することができる。
【0058】
図11は、いくつかの実施形態において実行される一連のステップを概略的に示す。ステップS1002では、各変換エントリが、ページテーブルに対応し、第1のアドレスと第2のアドレスとの間の変換を定義し、各ページテーブルエントリの属性を示す制御情報を符号化する複数の変換エントリがキャッシュに記憶される。ステップS1004では、第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスが返される。ステップS1006では、ページテーブルエントリ内の属性の修正の通知に応答して、制御情報の少なくともいくつかが修正される。ステップS1008では、ページテーブルエントリに対応する変換エントリは、ページテーブルエントリ内の属性の修正の通知に応答して、第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するためにキャッシュに保持される。
【0059】
全体を簡単にまとめると、各変換エントリが、複数のページテーブルエントリのうちの1つに対応し、第1のアドレスと第2のアドレスとの間の変換を定義する複数の変換エントリをキャッシュに記憶し、各ページテーブルエントリの属性を示す制御情報を符号化し、第1のルックアップアドレスを照会するルックアップに応答して、第1のルックアップアドレスがキャッシュに記憶された複数の変換エントリのうちの1つに対応するとき、対応する第2のアドレスを返し、ページテーブルエントリ内の属性の修正の通知に応答して、制御情報の少なくともいくつかを修正し、ページテーブルエントリ内の属性の修正の通知に応答して、対応する第1のルックアップアドレスを照会する後続のアドレスルックアップにおいて使用するために、ページテーブルエントリに対応する少なくとも1つの変換エントリをキャッシュ内に保持する、装置および方法が提供される。
【0060】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェアまたはソフトウェアの配設または相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、またはプロセッサもしくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0061】
本明細書では例示的な実施形態について添付の図面を参照して詳細に説明してきたが、理解されるように、本発明はそれらと寸分違わない実施形態に制限されるのではなく、また、添付の特許請求の範囲に定める本発明の範囲および精神から逸脱することなく、当業者によって様々な変更、追加、および修正を行うことができる。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
図1
図2a
図2b
図3
図4
図5
図6
図7
図8
図9
図10
図11
【国際調査報告】