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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧 ▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特表2024-523150メモリマッピング無効化要求の同時処理
<>
  • 特表-メモリマッピング無効化要求の同時処理 図1
  • 特表-メモリマッピング無効化要求の同時処理 図2
  • 特表-メモリマッピング無効化要求の同時処理 図3
  • 特表-メモリマッピング無効化要求の同時処理 図4
  • 特表-メモリマッピング無効化要求の同時処理 図5
  • 特表-メモリマッピング無効化要求の同時処理 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-28
(54)【発明の名称】メモリマッピング無効化要求の同時処理
(51)【国際特許分類】
   G06F 12/1027 20160101AFI20240621BHJP
   G06F 12/0855 20160101ALI20240621BHJP
【FI】
G06F12/1027 100
G06F12/0855
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023573337
(86)(22)【出願日】2022-06-22
(85)【翻訳文提出日】2023-12-12
(86)【国際出願番号】 US2022034486
(87)【国際公開番号】W WO2022271800
(87)【国際公開日】2022-12-29
(31)【優先権主張番号】17/355,820
(32)【優先日】2021-06-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ウェイド ケイ. スミス
(72)【発明者】
【氏名】アンソニー アサロ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK23
5B205MM51
(57)【要約】
変換索引バッファ(TLB)[110]は、例えば処理システムの1つ以上の処理ユニット[102、104]等の1つ以上のソースからマッピング無効化要求[105、106]を受信する。TLBは、1つ以上の無効化処理パイプライン[112]を含み、各処理パイプラインは、パイプラインに配置された複数の処理状態を含み、所定のステージがその処理動作を実行するのと同時に、パイプラインの他のステージがそれらの処理動作を実行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
変換索引バッファ(TLB)において複数の無効化要求を受信するステップであって、前記複数の無効化要求の各々は、複数のメモリアドレスのうち対応するメモリアドレスに関連付けられている、ステップと、
前記TLBにおいて前記複数の無効化要求を同時に処理して、前記複数のメモリアドレスの各々に関連付けられたデータを無効化するステップと、を含む、
方法。
【請求項2】
前記複数の無効化要求を同時に処理するステップは、
前記複数の無効化要求の各々を第1のキューの対応するエントリに割り当てるステップであって、前記第1のキューの各エントリは、対応する無効化要求の状態を示す状態情報を記憶する、ステップを含む、
請求項1の方法。
【請求項3】
前記複数の無効化要求を同時に処理するステップは、
第1の無効化動作に関連付けられた第1の無効化処理パイプラインステージにおいて、前記第1のキューの第1のエントリを処理するステップを含む、
請求項2の方法。
【請求項4】
前記複数の無効化要求を同時に処理するステップは、
第2の無効化動作に関連付けられた第2の無効化処理パイプラインステージにおいて、前記第1のキューの第2のエントリを処理するステップを含む、
請求項3の方法。
【請求項5】
前記複数の無効化要求を処理するステップは、
前記第1の無効化処理パイプラインステージにおいて前記第1のエントリを処理するのと同時に、前記第2の無効化パイプラインステージにおいて前記第1のキューの前記第2のエントリを処理するステップを含む、
請求項4の方法。
【請求項6】
前記複数の無効化要求のうち第1の無効化要求を受信することに応じて、
前記複数の無効化要求のうち前記第1の無効化要求に関連付けられた第1のアドレス範囲を識別するステップと、
前記第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制するステップと、を更に含む、
請求項1~5の何れかの方法。
【請求項7】
前記第1のページウォーク動作を抑制するステップは、前記第1の無効化要求を処理するのと同時に、前記第1のページウォーク動作を再開するステップを含む、
請求項6の方法。
【請求項8】
第1のメモリアドレスに関連付けられたデータを無効にするための第1の無効化要求をメモリコントローラにおいて受信したことに応じて、
複数の無効化要求のうち前記第1の無効化要求に関連付けられた第1のアドレス範囲を識別するステップと、
前記第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制するステップと、を含む、
方法。
【請求項9】
前記第1のページウォーク動作を抑制するのと同時に、前記第1の無効化要求を処理して、前記第1のメモリアドレスに関連付けられたデータを無効化するステップを更に含む、
請求項8の方法。
【請求項10】
前記第1の無効化要求を処理するのと同時に、第2の無効化要求を処理して、第2のメモリアドレスに関連付けられたデータを無効化するステップを更に含む、
請求項9の方法。
【請求項11】
前記第1の無効化要求を処理するステップは、無効化処理パイプラインの第1のステージにおいて前記第1の無効化要求を処理するのと同時に、前記無効化処理パイプラインの第2のステージにおいて前記第2の無効化要求を処理するステップを含む、
請求項10の方法。
【請求項12】
前記無効化処理パイプラインの前記第1のステージにおいて前記第1の無効化要求を処理するステップは、第1の無効化動作に関連付けられた第1の処理ロジックを介して、前記第1の無効化要求に関連付けられた第1の状態情報を第1のキューから第2のキューに転送するステップを含む、
請求項11の方法。
【請求項13】
前記無効化処理パイプラインの前記第2のステージにおいて前記第2の無効化要求を処理するステップは、第2の無効化動作に関連付けられた第2の処理ロジックを介して、前記第2の無効化要求に関連付けられた第2の状態情報を前記第2のキューから第3のキューに転送するステップを含む、
請求項12の方法。
【請求項14】
第2のメモリアドレスに関連付けられたデータを無効化するための第2の無効化要求を受信したことに応じて、
前記複数の無効化要求のうち前記第2の無効化要求に関連付けられた第2のアドレス範囲を識別するステップと、
前記第2のアドレス範囲に関連付けられた第2のページウォーク動作を抑制するステップと、を更に含む、
請求項8~13の何れかの方法。
【請求項15】
プロセッサであって、
変換索引バッファ(TLB)を備え、
前記TLBは、
複数の仮想アドレスから物理アドレスへのマッピングを記憶するキャッシュと、
前記複数の仮想アドレスから物理アドレスへのマッピングのうち1つ以上を無効化することによって、複数の無効化要求を同時に処理する少なくとも1つの無効化処理パイプラインと、を備える、
プロセッサ。
【請求項16】
前記少なくとも1つの無効化処理パイプラインは、
第1のキューであって、前記第1のキューの各エントリは、対応する無効化要求の状態を示す状態情報を記憶する、第1のキューを備える、
請求項15のプロセッサ。
【請求項17】
前記少なくとも1つの無効化処理パイプラインは、
第1の無効化動作に関連付けられた第1のステージであって、前記第1のキューの第1のエントリを処理する第1のステージを備える、
請求項16のプロセッサ。
【請求項18】
前記少なくとも1つの無効化処理パイプラインは、
第2の無効化動作に関連付けられた第2のステージであって、前記第1のステージは、前記第1のキューの第2のエントリを処理する、第2のステージを備える、
請求項17のプロセッサ。
【請求項19】
前記第1のステージが前記第1のキューの前記第1のエントリを処理するのと同時に、前記第2のステージが前記第1のキューの前記第2のエントリを処理する、
請求項18のプロセッサ。
【請求項20】
前記TLBは、
ページウォーカを備え、
前記ページウォーカは、前記複数の無効化要求のうち第1の無効化要求を受信したことに応じて、
前記第1の無効化要求に関連付けられた第1のアドレス範囲を識別し、
前記第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制する、
請求項15~19の何れかのプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
処理システムは、通常、1つ以上のキャッシュ、処理システムのためのシステムメモリを形成する1つ以上のメモリモジュール等のような、メモリリソースのセットを提供する。メモリリソースは、データを記憶するための物理メモリロケーションのセットを含み、各メモリロケーションは、メモリロケーションが識別されアクセスされるのを可能にする一意の物理アドレスに関連付けられる。メモリリソースの効率的且つ柔軟な使用を提供するために、多くの処理ユニットは、仮想アドレス指定をサポートし、オペレーティングシステムは、1つ以上の実行プログラムのための仮想アドレス空間を維持し、処理ユニットは、仮想アドレスを、メモリリソースの対応する物理アドレスに変換することをサポートするハードウェア構造を提供する。
【0002】
例えば、処理ユニットは、典型的には、最近アクセスされたメモリ位置に対する仮想アドレスから物理アドレスへのマッピングを1つ以上のキャッシュに格納する1つ以上の変換索引バッファ(translation lookaside buffer、TLB)を含む。オペレーティングシステム又は他のシステムリソースが仮想メモリ空間を変更すると、1つ以上のキャッシュに記憶されたマッピングが古くなってしまう。したがって、メモリコヒーレンシ及び適切なプログラム実行を維持するために、処理システムは、マッピング無効化要求をサポートすることができ、オペレーティングシステム又は他のリソースは、キャッシュにおける、仮想アドレスから物理アドレスへの指定されたマッピングが無効であると宣言されることを要求し、その結果、そのようなマッピングはアドレス変換に使用されなくなる。しかしながら、そのようなマッピング無効化要求を実行するための従来の技術は、スループットが比較的低いものであり、処理システムの全体的な効率及び柔軟性を制限してしまう。
【0003】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
図1】いくつかの実施形態による、マッピング無効化要求の同時処理を行う処理システムのブロック図である。
図2】いくつかの実施形態による、図1の処理システムの無効化パイプラインのブロック図である。
図3】いくつかの実施形態による、異なるマッピング無効化要求を同時に処理する、図2の無効化パイプラインの一例を示すブロック図である。
図4】いくつかの実施形態による、異なるマッピング無効化要求を同時に処理する、図2の無効化パイプラインの一例を示すブロック図である。
図5】いくつかの実施形態による、異なるマッピング無効化要求を同時に処理する、図2の無効化パイプラインの一例を示すブロック図である。
図6】いくつかの実施形態による、マッピング無効化要求に応じてページウォーク要求を抑制する、図1の処理システムの一例を示すブロック図である。
【発明を実施するための形態】
【0005】
図1図6は、処理システムにおいてマッピング無効化要求を同時に処理するための技術を示す。いくつかの実施形態では、TLBは、処理システムの1つ以上の処理ユニット等の1つ以上のソースから、マッピング無効化要求(本明細書では簡略化のために無効化要求と呼ぶ)を受信する。TLBは、1つ以上の無効化処理パイプラインを含み、各処理パイプラインは、パイプラインに配置された複数の処理状態を含み、所定のステージは、その処理動作を、パイプラインの他のステージがそれらの処理動作を実行するのと同時に実行するようになっている。したがって、場合によっては、TLBは、複数の受信された無効化要求を1つ以上のパイプラインにサブミットし、複数の無効化要求が同時に処理される。このパイプライン方式で無効化要求を処理することによって、TLBは、全体的な無効化要求スループットを改善し、それによって全体的な処理効率を改善する。
【0006】
例えば、いくつかの処理システムは、システム仮想アドレス空間を比較的頻繁に更新する。例えば、いくつかの処理システムは、実行中のプログラムを頻繁に切り替え、それに対応して、仮想アドレス空間の頻繁な変更を必要とする。これらの変更を実行するために、処理システムで実行されるオペレーティングシステムは、異なる無効化要求を生成し、各無効化要求は、無効化されるTLBキャッシュエントリのセットを指定し、したがって、これらのエントリがアドレス変換に使用されないようにする。従来、各無効化要求が順に処理され、1つの要求の処理が完了してから、別の要求が処理を開始するようになっている。この手法は、安全なメモリ管理をサポートするが、結果として、無効化要求に対するスループットが低いものとなり、全体的なシステム効率に悪影響を及ぼす。本明細書で説明する技術を使用して複数の無効化要求を同時に処理することによって、無効化要求の処理のスループットが増大し、それによって全体的な処理効率が改善される。
【0007】
いくつかの実施形態では、TLBは、キャッシュのアドレスマッピングを生成するために、所定のプログラム、プログラムスレッド等のアドレスマッピングを記憶するページテーブルのセットをトラバースする。アドレスマッピングを生成するトラバーサルプロセスは、本明細書では「ページウォーク」と呼ばれる。場合によっては、TLBは、保留中のページウォークに関連付けられたメモリアドレスに対する無効化要求を受信する。すなわち、場合によっては、TLBは、所定のメモリアドレスに対するページウォークを実行するプロセスにありながら、同時に、その所定のメモリアドレスをターゲットとする無効化要求を受信する。ページウォークがキャッシュを不正確なアドレスマッピングで汚染することを防止するために、TLBは、受信された無効化要求のターゲットであるメモリアドレスに対するページウォークからのメモリマッピングの更新を抑制する。例えば、いくつかの実施形態では、TLBは、そのようなページウォークの結果に対して、そのページウォークの結果がキャッシュに記憶されることを防止する識別子を用いてマークをつける。
【0008】
図1は、いくつかの実施形態にしたがって、マッピング無効化要求を同時に処理する処理システム100を示している。処理システム100は、概して、電子デバイスの代わりに命令セット(例えば、コンピュータプログラム、オペレーティングシステム、アプリケーション等)を実行するように構成されている。したがって、異なる実施形態では、処理システム100は、例えばデスクトップコンピュータ、ラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲーム機等のような多くの電子デバイスのうち任意のものに組み込まれる。命令セットの実行をサポートするために、処理システム100は、処理ユニット102及び104と、変換索引バッファ(TLB)110と、を含む。いくつかの実施形態では、処理システム100は、図1に示されていない追加のモジュール及び回路を含み、それらの例としては、追加の処理ユニット、処理システム100のシステムメモリを形成する、1つ以上のキャッシュ及びメモリモジュール等のメモリモジュール、1つ以上のメモリコントローラ、1つ以上の入力/出力コントローラ及びデバイス等が挙げられる。
【0009】
処理ユニット102及び104は、命令のセットを実行して、その命令によって定義される1つ以上のタスクを実行するように概して構成されるユニットである。例えば、いくつかの実施形態では、処理ユニット102及び104のうち少なくとも1つは、中央処理ユニット(central processing unit、CPU)であり、プログラム、オペレーティングシステム等を形成する命令セットを実行するように構成されている。別の例として、いくつかの実施形態では、処理ユニット102及び104のうち少なくとも1つは、CPU等の別の処理ユニットから受信したコマンドに基づいて命令セット(例えば、ウェーブフロント(wavefronts)又はワープ(warps))を実行するグラフィックス処理ユニット(graphics processing unit、GPU)である。
【0010】
上述したように、いくつかの実施形態では、処理システム100は、システムメモリを形成する1つ以上のデータキャッシュ及び1つ以上のメモリモジュールを含む。集合的に、1つ以上のキャッシュ及びシステムメモリは、本明細書では処理システム100のメモリ階層と呼ばれる。命令を実行する過程で、処理ユニット102及び104は、メモリアクセス要求と呼ばれる動作を生成して、メモリ階層にデータを記憶し、メモリ階層からデータを取り出す。各メモリアクセス要求は、対応するデータがメモリ階層に格納されているメモリ位置を指定するアドレスを含む。実行命令のためのメモリアクセスを簡略化するために、処理システム100のオペレーティングシステムは、実行プログラム、アプリケーション等のための仮想アドレス空間を維持する。各仮想アドレス空間は、1組の仮想アドレスと1組の物理アドレスとの間の関係又はマッピングを定義し、各物理アドレスは、処理システム100のメモリ階層の異なるメモリ位置に一意に関連付けられる。データが、処理システム100によってメモリ階層の周りで移動される場合、処理システム100のオペレーティングシステム若しくはメモリハードウェア又はそれらの組み合わせは、仮想アドレス空間を更新して、プログラム及びアプリケーションの適切な実行を可能にする正しいマッピングを維持する。
【0011】
仮想アドレス空間をサポートするために、処理システムは、概して仮想アドレスを物理アドレスに変換するように構成されたTLB110を含む。例えば、処理ユニット102及び104は、生成されたメモリアクセス要求に関連付けられた仮想アドレスをTLB110に提供する。これに応じて、TLB110は、受信した各仮想アドレスを対応する物理アドレスに変換する。処理システム100のメモリコントローラ又は他のモジュール(図示せず)は、物理アドレスを使用して、物理アドレスによって示されるメモリ階層の位置にアクセスし、それによってメモリアクセス要求を実行する。
【0012】
アドレス変換を実行するため、TLB110は、アドレスキャッシュ115及びページウォーカ114を含む。アドレスキャッシュ115は、最近使用されたアドレスマッピングを記憶するように概して構成されたメモリである。特に、アドレスキャッシュ115は、複数のエントリ(例えば、エントリ118)を含み、各エントリは、仮想アドレスから物理アドレスへのマッピングを記憶するマッピングフィールド(例えば、マッピングフィールド116)と、対応するマッピングフィールドがアドレス変換のために使用される有効なマッピングを記憶するかどうかを示すステータス情報を記憶する有効性ステータスフィールド(例えば、有効性ステータスフィールド117)と、を含む。他の実施形態では、有効性ステータス情報は、アドレスキャッシュ115自体に記憶されないが、代わりに、アドレスキャッシュ115のためのステータス情報のテーブル等のような、TLB110の別の部分に記憶されるということが理解されよう。
【0013】
ページウォーカ114は、オペレーティングシステムによって維持されるページテーブル111のセットに対してページウォーク動作を実行するように構成されたハードウェアのセットであり、ページテーブルには、処理ユニット102及び104において実行される命令のセットに対する仮想アドレスから物理アドレスへのマッピングが格納される。ある仮想アドレスに対するアドレス変換要求を処理ユニットから受信したことに応じて、TLB110は、その仮想アドレスに対するマッピングがアドレスキャッシュ115のエントリに記憶されているかどうかを判定する。そうである場合、TLB110は、アドレスキャッシュ115に記憶されたマッピングを使用して、その仮想アドレスを対応する物理アドレスに変換し、変換を要求した処理ユニットにその物理アドレスを提供する。
【0014】
その仮想アドレスのマッピングがアドレスキャッシュ115に記憶されていない場合、TLB110は、ページウォーカ114に、その仮想アドレスを使用してページテーブル111のページウォークを実行するように命令する。ページウォーカ114は、ページウォークを実行して、ページテーブル111から、その仮想アドレスに対応する、仮想アドレスから物理アドレスへのマッピングを検索する。TLB110は、検索されたアドレスマッピングを、アドレスキャッシュ115のエントリのマッピングフィールドに記憶し、エントリの有効性ステータスを、有効ステータス(記憶されたマッピングがアドレス変換に使用されることを示す)に設定し、変換を要求した処理ユニットに物理アドレスを提供する。
【0015】
場合によっては、処理ユニット102及び104のうち1つ以上で実行されるオペレーティングシステム又は他のプログラムが、処理システム100の仮想アドレス空間を変更する。例えば、場合によっては、オペレーティングシステムは、異なるプログラムに対して異なる仮想アドレス空間を維持し、処理ユニット102及び104のうち1つ以上において何れのプログラムが実行されているかの変更に応じて、仮想アドレス空間を変更する。しかしながら、仮想アドレス空間が変更されると、アドレスキャッシュ115は、現在の仮想アドレス空間に対してもはや有効でないアドレスマッピングを記憶しているということがある。したがって、仮想アドレス空間の変更に応じて、オペレーティングシステム又は他のプログラムは、1つ以上の無効化要求(例えば無効化要求105及び106)をTLB110に送信する。各無効化要求は、現在の仮想アドレス空間に対して有効でないマッピングを有する、仮想メモリアドレス又は仮想メモリアドレスのセットを示す。無効化要求を受信することに応じて、TLB110は、無効化要求によって示される仮想アドレスのセットに対するマッピングを記憶する、キャッシュ115の1つ以上のエントリを識別し、それらのエントリが無効データを記憶しているということを示すように、それらのエントリに対する有効性ステータスフィールドを設定する。したがって、無効化要求を受信することに応じて、TLBは、要求によって識別されるキャッシュ115の1つ以上のエントリが無効であるということを示し、したがって、それらのエントリに記憶されたアドレスマッピングは、アドレス変換には使用されない。
【0016】
いくつかの実施形態では、TLBは、各無効化要求を満たす複数の処理動作を実施するが、そのような動作の例としては、要求によって識別されるアドレス又はアドレス範囲を識別する動作、無効化の通知を処理システム100の異なる部分に提供する動作(例えば、メモリコヒーレンシを維持するため)、いかなるページウォークの結果も無効化要求に対応するアドレスをターゲットできるようにする動作、キャッシュ115の無効化される1つ以上のエントリを識別する動作、識別されたエントリのステータス情報を、無効ステータスを示すように設定する動作、及び、無効化要求を実行する任意の他の動作等が挙げられる。また、場合によっては、これらの異なる動作をまとめると、複数の処理サイクル(例えば、TLB110の動作を管理するクロック信号の複数のサイクル)を必要とする。したがって、場合によっては、TLB110は、ある無効化要求を受信した場合に、別の無効化要求が処理中であるということが起こり得る。例えば、場合によっては、TLB110は、無効化要求105が処理されている間に、又は、無効化要求が処理の準備ができている場合に、無効化要求106を受信する。したがって、無効化要求のスループットを改善するために、TLB110は、概して、例えば無効化要求105及び106等のような異なる無効化要求を同時に処理するように構成される。
【0017】
無効化要求の同時処理をサポートするために、TLB110は、無効化パイプライン112を含む。本明細書で更に説明するように、無効化パイプライン112の各々は、複数のステージを含み、無効化パイプラインの各ステージは、無効化要求を実行するための指定された処理動作を実行する回路を含むが、そのような処理動作の例としては、要求によって識別されるアドレス又はアドレス範囲を識別する動作、無効化の通知を処理システム100の異なる部分に提供する動作(例えば、メモリコヒーレンシを維持するため)、いかなるページウォークの結果も無効化要求に対応するアドレスをターゲットできるようにする動作、キャッシュ115の無効化される1つ以上のエントリを識別する動作、識別されたエントリのステータス情報を、無効ステータスを示すように設定する動作、及び、無効化要求を実行する任意の他の動作等が挙げられる。各パイプラインステージは、他のパイプラインステージとは独立して動作するように構成され、その結果、パイプラインの異なるステージが、異なる無効化要求に対する動作を同時に実行する。すなわち、無効化パイプラインの所定のステージは、1つの無効化要求(例えば、無効化要求105)に対する処理動作を実行しながら、同時に、パイプラインの別のステージが、異なる無効化要求(例えば、無効化要求106)に対する異なる動作を実行する。このようにして無効化動作をパイプライン化することによって、TLB110は、複数の無効化要求を同時に満たし、したがって、無効化要求のスループットを増加させ、処理システム100の全体的な効率を改善する。
【0018】
いくつかの実施形態による、無効化パイプライン112の一例のブロック図が図2に示されている。図示された例において、無効化パイプライン112は、無効化前処理パイプライン223と、無効化処理パイプライン224と、を含む。無効化前処理パイプライン223は、概して、無効化を実行するために無効化要求を準備することに関連付けられた処理動作、すなわち、無効化要求によってターゲットとされた、キャッシュ115の1つ以上のエントリを無効化するように、TLB110を準備する処理動作を実行するように構成される。無効化前処理パイプライン223によって実施される動作の例としては、処理システム100の他のモジュールと通信して、無効化要求の実行がエラーを引き起こす可能性が高いかどうかを判定する動作(例えば、他のモジュールが、無効化要求によってターゲットにされるアドレスマッピングを使用することを期待するため)、無効化要求によってターゲットにされるエントリに関連付けられたあらゆるページウォーク動作を識別する動作、要求によってターゲットにされるキャッシュ115のエントリを識別する動作等が挙げられる。
【0019】
いくつかの実施形態では、無効化前処理パイプライン223のステージによって実施される動作の他の例としては、同じメモリアドレスをターゲットとするあらゆる進行中のページウォークに関する無効化要求の完了を追跡する動作と、他のキャッシュに無効化要求を通知する動作と、通知を追跡して、必要なキャッシュが通知されたこと及び無効化パイプライン224に進むことが安全であることを確認する動作と、を含む。いくつかの実施形態では、無効化前処理パイプライン223は、無効化処理パイプライン224によって使用される無効化要求の特性を識別する動作を実施して、無効化要求に関連付けられたアドレス範囲、要求に関連付けられた仮想メモリ識別子、要求に関連付けられた仮想マシン識別子等のうち1つ以上等のメモリアドレスマッピングのうち何れが無効化されるかを制御する。
【0020】
無効化処理パイプライン224は、概して、無効化要求によって示される要求された無効化の実行に関連付けられた処理動作を実行するように構成される。言い換えれば、無効化処理パイプライン224は、無効化要求によってターゲットにされたキャッシュ115の1つ以上のエントリを、無効ステータスに設定させる処理動作を実施する。無効化処理パイプライン223によって実施される動作の例には、無効化要求の対象となるキャッシュ115のエントリにアクセスする動作、そのアクセスされたエントリの状態情報を、無効状態を示すように変更する動作、そのエントリの無効状態を他のキャッシュ又はメモリモジュールに通知する動作等が挙げられる。
【0021】
パイプライン223及び224の各々は、複数のステージを含み、各パイプラインステージは、それぞれのパイプラインのための処理動作のうち1つ以上を実行するように構成される。特に、無効化前処理パイプライン223は、初期ステージ225と、N番目のステージ228までの追加ステージと、を含む(ここで、Nは整数である)。同様に、無効化処理パイプライン224は、初期ステージ235及びM番目のステージ238までの追加ステージを含む(ここでMは整数である)。いくつかの実施形態では、パイプライン223及び224は、同じ数のステージ(すなわち、N=M)を含むが、他の実施形態では、パイプライン223及び224は、異なる数のステージ(すなわち、NとMとが異なる)を含む。
【0022】
パイプライン223及び224における無効化要求の処理をサポートするために、無効化パイプライン112は、キュー220、221、222を含み、キュー220~222の各々は、複数のエントリ(例えばキュー220のエントリ231)を含み、各エントリは、対応する無効化要求に対する状態情報を記憶するように構成される。無効化要求が処理されると、パイプライン223及び224のステージは、無効化要求に対する状態情報を入力情報として使用し、そのステージに関連付けられた処理動作に基づいて無効化要求の状態情報を変更すること等を行うか、又は、それらを任意に組み合わせて行う。
【0023】
動作中、キュー220のエントリは、受信した無効化要求に関する状態情報を格納する。無効化要求を処理するために、無効化前処理ステージの初期ステージ225は、キュー220の対応するエントリに格納された無効化要求の状態情報を使用して、1つ以上の前処理動作を実行する。その1つ以上の動作を実行する過程で、ステージ225は、実行されている動作に基づいて、記憶された状態情報を変更する。1つ以上の動作が完了すると、無効化要求は、無効化前処理パイプライン223の次のステージ(図2では「ステージ2」と指定されている)に渡され、このステージは、キュー220の対応するエントリに格納されている無効化要求に対する状態情報を使用して、1つ以上の対応する前処理動作を実行する。同様に、無効化要求は、無効化前処理パイプライン223を通って進み、各ステージは、最終ステージ228に到達するまで、対応する前処理動作を実行する。その無効化要求に対する前処理動作を完了すると、ステージ228は、その無効化要求に対する結果として生じる状態情報を、キュー221のエントリに格納する。
【0024】
無効化処理パイプライン224は、キュー221のエントリに格納された状態情報を使用及び修正して、無効化前処理パイプライン223に関して上述したものと同様のパイプライン方式で無効化要求を処理する。初期ステージ235から始まり、無効化要求は、無効化処理パイプライン224のステージを通って進み、各ステージは、最終ステージ238に到達するまで、対応する前処理動作を実行する。その無効化要求に対する前処理動作を完了すると、ステージ238は、その無効化要求に対する結果として生じる状態情報を、キュー222のエントリに格納する。いくつかの実施形態において、キュー222における状態情報は、追加の動作を実行するために、TLB110又は処理システム100の他のモジュールによって使用される。
【0025】
パイプライン223及び224のステージの各々は、独立して動作するように構成され、パイプラインの1つのステージが、ある所定の無効化要求に対して対応する動作を実行しながら、同時にパイプラインの異なるステージが、異なる無効化要求に対して対応する動作を実行するようになっている。例えば、いくつかの実施形態では、パイプライン223及び224の各ステージは、処理サイクルと呼ばれる指定された時間内に、その対応する動作を実行するように構成される。いくつかの実施形態では、各処理サイクルは、TLB110の動作を管理するクロック信号の単一クロックサイクルに等しい。すなわち、いくつかの実施形態では、パイプライン223及び224の各ステージは、単一のクロックサイクルでその対応する動作を完了し、次いで、それぞれの無効化要求を、それぞれのパイプラインの次のステージに渡す。
【0026】
いくつかの実施形態による、複数の無効化要求に対する同時処理のパイプライン化の一例が図3図5に示されている。簡略化のために、図3図5は、無効化前処理パイプライン223における複数の無効化要求のパイプライン化を示す。しかしながら、無効化処理パイプライン224は、同様に動作をパイプライン化するということが理解されよう。図3図5の各々は、無効化処理パイプライン223のための異なる処理サイクルを示す。
【0027】
特に、図3は、最初の処理サイクルを示しており、ここでは、3つの無効化要求(この例では要求1、要求2、要求3として示されている)が、無効化前処理パイプライン223における同時処理のために利用可能である。要求1、要求2、要求3の各々は、キュー220において、それぞれINV1状態、INV2状態、INV3状態に指定された対応する状態情報に関連付けられる。図3に示された最初の処理サイクルでは、要求1は、無効化前処理パイプライン223の初期ステージ225で処理される。ステージ225は、この最初のサイクル中に要求1に対するその動作を完了し、要求1を、図4に示す次のステージに渡す。
【0028】
図4に示すように、次の処理サイクル(すなわち、図3に示す最初のサイクルの直後の処理サイクル)中に、要求1は第2のステージ226で処理され、第2のステージ226は、無効化前処理パイプライン223における初期ステージ225の直後に続くものである。加えて、要求2が、初期ステージ225で処理される。したがって、図4に示す処理サイクル中に、要求1及び要求2は、無効化前処理パイプライン223の異なるステージで同時に処理される。その処理サイクルの終わりまでに、ステージ225及び226の各々は、それぞれの無効化要求をパイプライン223の次のステージに渡し、次の処理サイクル中において、図5に示す更なる処理を行わせる。
【0029】
図5に示すように、その次の処理サイクル(すなわち、図4に示す処理サイクルの直後の処理サイクル)中に、要求1は第3のステージ227で処理され、第3のステージ227は、無効化前処理パイプライン223における第2のステージ226の直後に続くものである。更に、要求2は、第2のステージ226で処理され、要求3は初期ステージ225で処理される。したがって、図5に示す処理サイクル中に、要求1、要求2、要求3の全ては、無効化前処理パイプライン223の異なるステージで同時に処理される。このように、図3図5に示される例では、複数の無効化要求が、無効化パイプラインの異なるステージで同時に処理される。対照的に、従来のTLBは、各無効化要求の処理を完了してから、次に受信された無効化要求の処理を開始するので、全体的な無効化要求スループットを制限してしまう。
【0030】
いくつかの実施形態では、TLBは、キャッシュのアドレスマッピングを生成するために、所定のプログラム、プログラムスレッド等のアドレスマッピングを記憶するページテーブルのセットをトラバースする。アドレスマッピングを生成するトラバーサルプロセスは、本明細書では「ページウォーク」と呼ばれる。場合によっては、TLBは、保留中のページウォークに関連付けられたメモリアドレスに対する無効化要求を受信する。すなわち、場合によっては、TLBは、所定のメモリアドレスに対するページウォークを実行するプロセスにありながら、同時に、その所定のメモリアドレスをターゲットとする無効化要求を受信する。ページウォークがキャッシュを不正確なアドレスマッピングで汚染することを防止するために、TLBは、受信された無効化要求のターゲットであるメモリアドレスに対するページウォークに基づいて、メモリマッピングの更新を抑制する。例えば、いくつかの実施形態では、TLBは、そのようなページウォークの結果に対して、そのページウォークの結果がキャッシュに記憶されることを防止する識別子を用いてマークをつける。
【0031】
図1を再び参照すると、上述したように、ページウォーカ114は、概して、ページテーブル111をトラバースすることによってページウォークを実行し、それによってアドレスキャッシュ115に記憶するためのアドレスマッピングを生成するように構成される。しかしながら、いくつかの実施形態において、TLB110は、保留中のページウォークに関連付けられたメモリアドレスに対する無効化要求を受信する。言い換えれば、場合によっては、ページウォーカ114は、所定のメモリアドレス又は所定のメモリアドレス範囲のためのページウォークを実行する過程にありながら、同時に、その所定のメモリアドレス又はその所定のメモリアドレス範囲のアドレスについて無効化要求を受信する。これにより、競合状態が生じることがあり、ページウォークの結果は、無効化プロセスがそうでなければ完了した後に生成され、無効なマッピングがアドレスキャッシュ115に記憶され、プログラム実行エラーが生じる可能性がある。
【0032】
いくつかの実施形態では、この競合状態に対処するために、無効化パイプライン112は、各メモリアクセス要求によってターゲットにされるメモリアドレス又はメモリアドレス範囲をページウォーカ114に通知するように構成される。ページウォーカ114は、それらのメモリアドレスに対応するあらゆる保留中のページウォークを識別し、その識別されたページウォークの結果がアドレスキャッシュ115に記憶されることを抑制する。いくつかの実施形態では、ページウォーカ114は、対応するページウォークを完了させることによって結果を抑制するが、ページウォークから得られるアドレスマッピングが無効であることを示すようにステータス識別子を設定する。いかなるアドレスマッピングをも記憶する前に、アドレスキャッシュ115は、対応するステータス識別子をチェックし、アドレスマッピングが無効であることをステータス識別子が示す場合、そのアドレスマッピングを破棄する(すなわち、記憶しない)。
【0033】
いくつかの実施形態によって、無効化要求の受信に応じてページウォークの結果を抑制する例が図6に示されている。図示されている例では、無効化要求103は、アドレスキャッシュ115において無効化されるアドレスマッピングを有するメモリアドレスの範囲を示すアドレス範囲640を含む。無効化要求103を受信することに応じて、無効化パイプライン112は、アドレス範囲640内のメモリアドレスに関連付けられたアドレスキャッシュ115の各エントリを無効化する。更に、無効化パイプライン112は、ページウォーカ114に、アドレス範囲640を示す。
【0034】
アドレス範囲640の受信に応じて、ページウォーカ114は、アドレス範囲640に対応する、アドレス範囲642として図示されているページテーブル641の部分を識別する。すなわち、アドレス範囲642は、アドレス範囲640に対するアドレスマッピングを含む、ページテーブル641の部分を表す。いくつかの実施形態では、アドレス範囲642は、複数のページテーブルの異なる部分に対応するということが理解されよう。更に、アドレス範囲642は、ページテーブル641の連続領域として示されているが、いくつかの実施形態では、アドレス範囲642は、ページテーブル641の不連続な複数の部分、又は、複数のページテーブルにわたる不連続な複数の部分を含む。
【0035】
アドレス範囲640を識別することに応じて、ページウォーカ114は、アドレス範囲642内のメモリアドレスをターゲットとするいかなるページウォーク要求をも識別する。図示した例では、ページウォーク要求643は、アドレス範囲642内のメモリアドレスをターゲットにする一方で、異なるページウォーク要求645は、アドレス範囲642外のメモリアドレスをターゲットにする。したがって、ブロック644によって示されるように、ページウォーカ114は、ページウォーク要求643の結果を抑制して、ページウォーク要求643の結果がアドレスキャッシュ115に記憶されないようにする。更に、ブロック646によって示されるように、ページウォーカ114は、ページウォーク要求645の結果がアドレスキャッシュ115に記憶されることを可能にする。
【0036】
本明細書に開示されるように、いくつかの実施形態では、方法は、変換索引バッファ(TLB)において複数の無効化要求を受信するステップであって、複数の無効化要求の各々が複数のメモリアドレスのうち対応するメモリアドレスに関連付けられている、ステップと、TLBにおいて複数の無効化要求を同時に処理して、複数のメモリアドレスの各々に関連付けられているデータを無効化するステップと、を含む。一態様では、複数の無効化要求を同時に処理するステップは、複数の無効化要求の各々を第1のキューの対応するエントリに割り当てるステップを含み、第1のキューの各エントリは、対応する無効化要求の状態を示す状態情報を記憶する。別の一態様では、複数の無効化要求を同時に処理するステップは、第1の無効化動作に関連付けられた第1の無効化処理パイプラインステージにおいて、第1のキューの第1のエントリを処理するステップを含む。更に別の一態様では、複数の無効化要求を同時に処理するステップは、第2の無効化動作に関連付けられた第2の無効化処理パイプラインステージにおいて、第1のキューの第2のエントリを処理するステップを含む。
【0037】
一態様では、複数の無効化要求を処理するステップは、第2の無効化パイプラインステージにおいて第1のキューの第2のエントリを処理しながら、同時に、第1の無効化処理パイプラインステージにおいて第1のエントリを処理するステップを含む。別の一態様では、本方法は、複数の無効化要求のうち第1の無効化要求を受信したことに応じて、複数の無効化要求のうち第1の無効化要求に関連付けられた第1のアドレス範囲を識別するステップと、第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制するステップと、を含む。別の一態様では、第1のページウォーク動作を抑制するステップは、第1の無効化要求を処理しながら、同時に、第1のページウォーク動作を再開するステップを含む。
【0038】
いくつかの実施形態において、方法は、メモリコントローラにおいて、第1のメモリアドレスに関連付けられたデータを無効化するための第1の無効化要求を受信することに応じて、複数の無効化要求のうち第1の無効化要求に関連付けられた第1のアドレス範囲を識別するステップと、第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制するステップと、を含む。一態様では、本方法は、第1のページウォーク動作を抑制するステップと同時に、第1の無効化要求を処理して、第1のメモリアドレスに関連付けられたデータを無効化するステップを含む。別の一態様では、本方法は、第1の無効化要求を処理するステップと同時に、第2の無効化要求を処理して第2のメモリアドレスに関連付けられたデータを無効化するステップを含む。更に別の一態様では、第1の無効化要求を処理するステップは、無効化パイプラインの第2のステージにおいて第2の無効化要求を処理しながら、同時に、無効化処理パイプラインの第1のステージにおいて第1の無効化要求を処理するステップを含む。
【0039】
一態様では、無効化処理パイプラインの第1のステージにおいて第1の無効化要求を処理するステップは、第1の無効化動作に関連付けられた第1の処理ロジックを介して、第1の無効化要求に関連付けられた第1の状態情報を、第1のキューから第2のキューに転送するステップを含む。別の一態様では、無効化処理パイプラインの第2のステージにおいて第2の無効化要求を処理するステップは、第2の無効化動作に関連付けられた第2の処理ロジックを介して、第2の無効化要求に関連付けられた第2の状態情報を、第2のキューから第3のキューに転送するステップを含む。更に別の一態様では、本方法は、第2のメモリアドレスに関連付けられたデータを無効化するための第2の無効化要求を受信することに応じて、複数の無効化要求のうち第2の無効化要求に関連付けられた第2のアドレス範囲を識別するステップと、第2のアドレス範囲に関連付けられた第2のページウォーク動作を抑制するステップと、を含む。
【0040】
いくつかの実施形態において、プロセッサは、変換索引バッファ(TLB)を含み、そのTLBは、複数の仮想アドレスから物理アドレスへのマッピングを記憶するためのキャッシュと、複数の仮想アドレスから物理アドレスへのマッピングのうち1つ以上を無効化することによって、複数の無効化要求を同時に処理するための少なくとも1つの無効化処理パイプラインと、を備える。一態様では、少なくとも1つの無効化処理パイプラインは、第1のキューを含み、第1のキューの各エントリは、対応する無効化要求の状態を示す状態情報を記憶する。別の一態様では、少なくとも1つの無効化処理パイプラインは、第1の無効化動作に関連付けられた第1のステージであって、第1のキューの第1のエントリを処理する第1のステージを含む。更に別の一態様では、少なくとも1つの無効化処理パイプラインは、第2の無効化動作に関連付けられた第2のステージを含み、第1のステージは、第1のキューの第2のエントリを処理する。
【0041】
一態様では、第2のステージが第1のキューの第2のエントリを処理するのと同時に、第1のステージは、第1のキューの第1のエントリを処理する。別の一態様では、TLBは、複数の無効化要求のうち第1の無効化要求を受信したことに応じて、第1の無効化要求に関連付けられた第1のアドレス範囲を識別し、第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制するページウォーカを更に含む。
【0042】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0043】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0044】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2024-01-29
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
変換索引バッファ(TLB)において複数の無効化要求を受信するステップであって、前記複数の無効化要求の各々は、複数のメモリアドレスのうち対応するメモリアドレスに関連付けられている、ステップと、
前記TLBにおいて前記複数の無効化要求を同時に処理して、前記複数のメモリアドレスの各々に関連付けられたデータを無効化するステップと、を含む、
方法。
【請求項2】
前記複数の無効化要求を同時に処理するステップは、
前記複数の無効化要求の各々を第1のキューの対応するエントリに割り当てるステップであって、前記第1のキューの各エントリは、対応する無効化要求の状態を示す状態情報を記憶する、ステップを含む、
請求項1の方法。
【請求項3】
前記複数の無効化要求を同時に処理するステップは、
第1の無効化動作に関連付けられた第1の無効化処理パイプラインステージにおいて、前記第1のキューの第1のエントリを処理するステップを含む、
請求項2の方法。
【請求項4】
前記複数の無効化要求を同時に処理するステップは、
第2の無効化動作に関連付けられた第2の無効化処理パイプラインステージにおいて、前記第1のキューの第2のエントリを処理するステップを含む、
請求項3の方法。
【請求項5】
前記複数の無効化要求を処理するステップは、
前記第1の無効化処理パイプラインステージにおいて前記第1のエントリを処理するのと同時に、前記第2の無効化パイプラインステージにおいて前記第1のキューの前記第2のエントリを処理するステップを含む、
請求項4の方法。
【請求項6】
前記複数の無効化要求のうち第1の無効化要求を受信することに応じて、
前記複数の無効化要求のうち前記第1の無効化要求に関連付けられた第1のアドレス範囲を識別するステップと、
前記第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制するステップと、を更に含む、
請求項1~5の何れかの方法。
【請求項7】
前記第1のページウォーク動作を抑制するステップは、前記第1の無効化要求を処理するのと同時に、前記第1のページウォーク動作を再開するステップを含む、
請求項6の方法。
【請求項8】
プロセッサであって、
変換索引バッファ(TLB)を備え、
前記TLBは、
複数の仮想アドレスから物理アドレスへのマッピングを記憶するキャッシュと、
前記複数の仮想アドレスから物理アドレスへのマッピングのうち1つ以上を無効化することによって、複数の無効化要求を同時に処理する少なくとも1つの無効化処理パイプラインと、を備える、
プロセッサ。
【請求項9】
前記少なくとも1つの無効化処理パイプラインは、
第1のキューであって、前記第1のキューの各エントリは、対応する無効化要求の状態を示す状態情報を記憶する、第1のキューを備える、
請求項のプロセッサ。
【請求項10】
前記少なくとも1つの無効化処理パイプラインは、
第1の無効化動作に関連付けられた第1のステージであって、前記第1のキューの第1のエントリを処理する第1のステージを備える、
請求項のプロセッサ。
【請求項11】
前記少なくとも1つの無効化処理パイプラインは、
第2の無効化動作に関連付けられた第2のステージであって、前記第1のステージは、前記第1のキューの第2のエントリを処理する、第2のステージを備える、
請求項10のプロセッサ。
【請求項12】
前記第1のステージが前記第1のキューの前記第1のエントリを処理するのと同時に、前記第2のステージが前記第1のキューの前記第2のエントリを処理する、
請求項11のプロセッサ。
【請求項13】
前記TLBは、
ページウォーカを備え、
前記ページウォーカは、前記複数の無効化要求のうち第1の無効化要求を受信したことに応じて、
前記第1の無効化要求に関連付けられた第1のアドレス範囲を識別し、
前記第1のアドレス範囲に関連付けられた第1のページウォーク動作を抑制する、
請求項のプロセッサ。
【国際調査報告】