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

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

▶ クアルコム,インコーポレイテッドの特許一覧

特表2024-541020同期イベントにおけるレイテンシ管理
<>
  • 特表-同期イベントにおけるレイテンシ管理 図1
  • 特表-同期イベントにおけるレイテンシ管理 図2
  • 特表-同期イベントにおけるレイテンシ管理 図3A
  • 特表-同期イベントにおけるレイテンシ管理 図3B
  • 特表-同期イベントにおけるレイテンシ管理 図4
  • 特表-同期イベントにおけるレイテンシ管理 図5
  • 特表-同期イベントにおけるレイテンシ管理 図6A
  • 特表-同期イベントにおけるレイテンシ管理 図6B
  • 特表-同期イベントにおけるレイテンシ管理 図6C
  • 特表-同期イベントにおけるレイテンシ管理 図6D
  • 特表-同期イベントにおけるレイテンシ管理 図7
  • 特表-同期イベントにおけるレイテンシ管理 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-06
(54)【発明の名称】同期イベントにおけるレイテンシ管理
(51)【国際特許分類】
   G06F 12/00 20060101AFI20241029BHJP
   G06F 12/1027 20160101ALI20241029BHJP
   G06F 12/0806 20160101ALI20241029BHJP
   G06F 9/52 20060101ALI20241029BHJP
【FI】
G06F12/00 571A
G06F12/1027
G06F12/0806 100
G06F9/52 150A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024525124
(86)(22)【出願日】2023-01-11
(85)【翻訳文提出日】2024-04-25
(86)【国際出願番号】 US2023060472
(87)【国際公開番号】W WO2023168140
(87)【国際公開日】2023-09-07
(31)【優先権主張番号】17/684,231
(32)【優先日】2022-03-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】アドリアン・モンテロ
(72)【発明者】
【氏名】フゼファ・サンジェリワラ
(72)【発明者】
【氏名】ポール・キッチン
(72)【発明者】
【氏名】プラースナ・サンタナクリシュナン
(72)【発明者】
【氏名】コンラド・ブラスコ
(72)【発明者】
【氏名】プラディープ・カナパティピライ
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160CD06
5B205MM36
5B205MM51
5B205NN77
5B205NN92
5B205PP21
5B205RR05
(57)【要約】
電子デバイスは、1つまたは複数の仮想マシンを実行するための、1つまたは複数のプロセッサを含む。同期イベントを開始するための要求に応答して、プロセッサは、1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別する。自動的に、および識別に従って、プロセッサは、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージする。パージすることに続いて、プロセッサは、同期イベントを開始する。いくつかの実装形態では、第1のアプリケーションの終了、第1の仮想マシンの終了、またはシステムレジスタを更新するためのシステムコールに対応する、コンテキスト同期イベントに応答して、メモリアクセス完了が強制される。代替的に、いくつかの実装形態では、メモリアクセス完了は、ハイパーバイザ層またはファームウェア層上で開始される、データ同期イベントに応答して、オペレーティングシステムレベルまたはアプリケーションレベルにおいて強制される。
【特許請求の範囲】
【請求項1】
1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて実施される、メモリアクセスを管理するための方法であって、
同期イベントを開始するための要求を受信するステップと、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別するステップと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージするステップと、
前記同期イベントを開始するステップと
を含む方法。
【請求項2】
各メモリアクセス要求キューが、メモリアクセス要求の順序付きシーケンスを含み、前記投機的メモリアクセス要求のサブセットが、前記要求に続いて受信される1つまたは複数の命令を予期してキューイングされる、請求項1に記載の方法。
【請求項3】
前記要求を受信するステップが、メモリアクセス完了を強制するように構成されたバリア命令を受信するステップを含み、前記方法が、
前記要求に応答して、前記投機的メモリアクセス要求のサブセットのアドレス変換を中止し、第1の数のクロックサイクル内で前記バリア命令を完了するステップであって、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換が、第2の数のクロックサイクル内で完了されるように構成され、前記第1の数が前記第2の数よりも小さい、ステップ
をさらに含む、請求項2に記載の方法。
【請求項4】
前記それぞれのプロセッサが、変換キャッシュに関連付けられ、前記同期イベントを開始するステップが、各投機的メモリアクセス要求について、
それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了するステップと、
前記それぞれのプロセッサに関連付けられた前記変換キャッシュを満たすことを中止するステップと、
前記それぞれのプロセッサが前記それぞれのデータ項目を使用することを保留するステップと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記変換キャッシュが、トランスレーションルックアサイドバッファ(TLB)、およびページテーブルキャッシュを含む、請求項4に記載の方法。
【請求項6】
前記それぞれのプロセッサが、第1のメモリから、前記第1のメモリよりも高速な第2のメモリに、命令および関連するデータをフェッチするための命令フェッチユニット(IFU)と、ロードおよびストア命令を実行し、仮想アドレスを生成するためのロード/ストアユニット(LSU)と、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのためのリネーム/リタイア/ディスパッチユニット(REU)と、前記1つまたは複数のプロセッサのキャッシュおよびメモリへのメモリアクセスを管理するためのメモリ管理ユニット(MMU)と、事前に前記第1のメモリから前記第2のメモリに命令またはデータをフェッチするためのプリフェッチエンジンとのうちの1つまたは複数を含み、
前記それぞれのプロセッサの前記IFU、LSU、REU、MMU、およびプリフェッチエンジンが前記それぞれのデータ項目を使用することが保留される、請求項4に記載の方法。
【請求項7】
前記それぞれのプロセッサが、前記1つまたは複数のメモリアクセス要求キューを管理するように構成された、メモリ管理ユニット(MMU)を含み、前記方法が、
前記要求に応答して、前記それぞれのプロセッサによって、前記投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成するステップであって、前記MMUが、前記1つまたは複数のメモリアクセス要求キュー内の前記投機的メモリアクセス要求のサブセットを識別し、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換をパージする、ステップ
をさらに含む、請求項1に記載の方法。
【請求項8】
前記投機的メモリアクセス要求のサブセットを識別するステップが、フラグを用いて、前記投機的メモリアクセス要求のサブセットの各々にマークを付けるステップを含み、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換が、各投機的メモリアクセス要求が前記フラグに関連付けられるという決定に従って、自動的にパージされる、請求項1に記載の方法。
【請求項9】
前記1つまたは複数のメモリアクセス要求キューが、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューを含み、前記投機的メモリアクセス要求のサブセットが、前記データ、命令、およびプリフェッチ変換キュー内の少なくとも1つのメモリアクセス要求を含む、請求項1に記載の方法。
【請求項10】
前記方法が、
コンテキスト同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップ
をさらに含み、
前記コンテキスト同期イベントが、第2のアプリケーションを開始するための第1のアプリケーションの終了、第2の仮想マシンを開始するための第1の仮想マシンの終了、またはシステムレジスタを更新するためのシステムコールに対応する、請求項1に記載の方法。
【請求項11】
前記方法が、
前記それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップ
をさらに含み、
前記バリア命令が、オペレーティングシステムレベルまたはアプリケーションレベルへの前記投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層またはファームウェア層上で実行される、データ同期バリアを含む、請求項1に記載の方法。
【請求項12】
前記バリア命令が、ゲストオペレーティングシステムからのハイパーバイザコールを含む、請求項11に記載の方法。
【請求項13】
1つまたは複数の仮想マシンを実行するように構成された、1つまたは複数のプロセッサを備える、電子デバイスであって、それぞれのプロセッサが、
同期イベントを開始するための要求を受信することと、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別することと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることと、
前記同期イベントを開始することと
を実行するように構成される、電子デバイス。
【請求項14】
各メモリアクセス要求キューが、メモリアクセス要求の順序付きシーケンスを含み、前記投機的メモリアクセス要求のサブセットが、前記要求に続いて受信される1つまたは複数の命令を予期してキューイングされる、請求項13に記載の電子デバイス。
【請求項15】
前記要求を受信することが、メモリアクセス完了を強制するように構成されたバリア命令を受信することを含み、前記それぞれのプロセッサが、
前記要求に応答して、前記投機的メモリアクセス要求のサブセットのアドレス変換を中止し、第1の数のクロックサイクル内で前記バリア命令を完了することであって、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換が、第2の数のクロックサイクル内で完了されるように構成され、前記第1の数が前記第2の数よりも小さい、こと
を実行するようにさらに構成される、請求項14に記載の電子デバイス。
【請求項16】
前記それぞれのプロセッサが、変換キャッシュに関連付けられ、前記同期イベントを開始することが、各投機的メモリアクセス要求について、
それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了することと、
前記それぞれのプロセッサに関連付けられた前記変換キャッシュを満たすことを中止することと、
前記それぞれのプロセッサが前記それぞれのデータ項目を使用することを保留することと
をさらに含む、請求項13に記載の電子デバイス。
【請求項17】
前記変換キャッシュが、トランスレーションルックアサイドバッファ(TLB)、およびページテーブルキャッシュを含む、請求項16に記載の電子デバイス。
【請求項18】
前記それぞれのプロセッサが、第1のメモリから、前記第1のメモリよりも高速な第2のメモリに、命令および関連するデータをフェッチするための命令フェッチユニット(IFU)と、ロードおよびストア命令を実行し、仮想アドレスを生成するためのロード/ストアユニット(LSU)と、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのためのリネーム/リタイア/ディスパッチユニット(REU)と、前記1つまたは複数のプロセッサのキャッシュおよびメモリへのメモリアクセスを管理するためのメモリ管理ユニット(MMU)と、事前に前記第1のメモリから前記第2のメモリに命令またはデータをフェッチするためのプリフェッチエンジンとのうちの1つまたは複数を含み、前記それぞれのプロセッサの前記IFU、LSU、REU、MMU、およびプリフェッチエンジンが前記それぞれのデータ項目を使用することが保留される、請求項17に記載の電子デバイス。
【請求項19】
1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサによる実行のために構成された、1つまたは複数のプログラムを記憶する、非一時的コンピュータ可読記憶媒体であって、前記1つまたは複数のプログラムが命令を含み、前記命令が、前記それぞれのプロセッサによって実行されると、前記それぞれのプロセッサに、
同期イベントを開始するための要求を受信することと、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別することと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることと、
前記同期イベントを開始することと
を実行させる、非一時的コンピュータ可読記憶媒体。
【請求項20】
1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて、メモリアクセスを管理するための装置であって、
同期イベントを開始するための要求を受信するための手段と、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別することと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることと、
前記パージすることに続いて、前記同期イベントを開始することと
を行うための手段と
を備える装置。
【発明の詳細な説明】
【技術分野】
【0001】
優先権出願
本出願は、その全体が参照により本明細書に組み込まれる、2022年3月1日に出願された「LATENCY MANAGEMENT IN SYNCHRONIZATION EVENTS」と題する米国特許出願第17/684,231号の優先権を主張する。
【0002】
本出願は、一般に、限定はしないが、仮想マシンを実行している1つまたは複数のプロセッサに関連付けられたメモリアクセス要求を管理するための方法、システム、およびデバイスを含む、マイクロプロセッサ技術に関する。
【背景技術】
【0003】
キャッシングは、しばしば使用されるデータの物理アドレスへの参照など、最近使用されたかまたはしばしば使用されるデータ項目を、物理メモリストアと比較して、アクセスがより高速であるキャッシュ内に保つことによって、コンピュータ性能を向上させる。新しい情報が物理メモリストアまたはキャッシュからフェッチされるとき、現在のおよび/または予期されるデータニーズを反映するために、新たにフェッチされた情報を記憶するように、キャッシュが更新される。1つまたは複数の仮想マシンをホストするコンピュータシステムは、コンピュータシステムにわたる異なるキャッシュ内に、各仮想マシンにおいて実行される機能またはアプリケーションに関係する情報を記憶し得る。仮想マシンが停止される前、またはアプリケーションが仮想マシン上で閉じられる前に、コンピュータシステムは、アドレス変換中にアプリケーション識別子および仮想マシン識別子を収集するために、メモリアクセスキューのすべてのテーブルウォークを完了すること、および/またはすべてのシステムレジスタをサンプリングすることを行わなければならない。そのような長いレイテンシのテーブルウォークおよびレジスタサンプリング動作は、仮想マシンの停止および仮想マシン上のアプリケーションの終了を遅延させる。したがって、仮想マシンを実行している1つまたは複数のプロセッサのための、メモリアクセス要求および関連するアドレス変換を効率的に管理する、電子デバイスまたは電子システムを提供することが、大いに望ましくなる。
【発明の概要】
【課題を解決するための手段】
【0004】
添付の特許請求の範囲内のシステム、方法、およびデバイスの様々な実装形態は、各々がいくつかの態様を有し、それらのうちの単一の態様が、本明細書で説明する属性を単独で担うものではない。添付の特許請求の範囲を限定することなしに、本開示を考慮した後、および詳細には「発明を実施するための形態」と題するセクションを考慮した後、仮想マシンを実行しているプロセッサシステムの同期イベント中にキューイングされるメモリアクセスを管理するために、いくつかの実装形態の態様がどのように使用されるかが理解されよう。各同期イベントにおいて、プロセッサは、同期イベントを停止させることなしに、投機的メモリアクセス要求を識別すること、および投機的メモリアクセス要求に関連付けられた変換をパージすることを行うために、ハンドシェーキングプロセスを編成する。
【0005】
詳細には、いくつかの実装形態では、投機的メモリアクセス要求に関連付けられた未解決の変換要求に、フラグ(たとえば、「ヌル応答とともにパージされる」)を用いてマークが付けられる。各マークされた変換要求に応答して、対応する変換プロセスは、いかなる変換キャッシュ構造(たとえば、トランスレーションルックアサイドバッファ(TLB)、テーブルウォークキャッシュ)を満たすこともなしに、早期に終了される。変換プロセスに関連付けられたいかなる投機的メモリアクセス要求から抽出されたデータも、たとえば、プロセッサの命令フェッチモジュール、ロード/ストアモジュール、またはプリフェッチエンジンによって適用されることが可能でない。プロセッサは、同期イベントの実行を損なうことなしに、投機的メモリアクセス要求に関連付けられた変換の長いレイテンシのテーブルウォークをスキップする。システムレジスタが、変換ユニットにわたってサンプリングおよびコピーされる必要はない。これらの手段によって、仮想マシンを実行している1つまたは複数のプロセッサのために、メモリアクセス要求および関連するアドレス変換を効率的に管理するために、効率的なメモリ管理ソリューションが提供され、それによって、同期イベントも効果的に促進される。
【0006】
いくつかの実装形態では、1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて、メモリアクセスを管理するための方法が採用される。方法は、同期イベントを開始するための要求を受信するステップを含む。方法は、要求に応答して、1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別するステップと、自動的に、識別に従って、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージするステップと、同期イベントを開始するステップとをさらに含む。いくつかの実装形態では、各メモリアクセス要求キューが、メモリアクセス要求の順序付きシーケンスを含み、投機的メモリアクセス要求のサブセットが、要求に続いて受信される1つまたは複数の命令を予期してキューイングされる。
【0007】
いくつかの実装形態では、それぞれのプロセッサが、変換キャッシュに関連付けられ、同期イベントを開始するステップが、各投機的メモリアクセス要求について、それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了するステップと、それぞれのプロセッサに関連付けられた変換キャッシュを満たすことを中止するステップと、それぞれのプロセッサがそれぞれのデータ項目を使用することを保留するステップとをさらに含む。さらに、いくつかの実装形態では、変換キャッシュが、TLBおよびページテーブルキャッシュを含む。
【0008】
いくつかの実装形態では、方法は、コンテキスト同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップをさらに含む。コンテキスト同期イベントは、第2のアプリケーションを開始するための第1のアプリケーションの終了、第2の仮想マシンを開始するための第1の仮想マシンの終了、またはシステムレジスタを更新するためのシステムコールに対応する。代替的に、いくつかの実装形態では、方法は、それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップをさらに含む。
【0009】
別の態様では、電子デバイスは、1つまたは複数の仮想マシンを実行するように構成された、1つまたは複数のプロセッサを含む。それぞれのプロセッサは、上記の方法のいずれかを実施するように構成される。
【0010】
別の態様では、非一時的コンピュータ可読記憶媒体は、1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサによる実行のために構成された、1つまたは複数のプログラムを記憶する。1つまたは複数のプログラムは命令を含み、命令が、それぞれのプロセッサによって実行されると、それぞれのプロセッサに、上記の方法のいずれかを実施させる。
【0011】
また別の態様では、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて、メモリアクセスを管理するための装置は、上記の方法のいずれかを実行するための手段を含む。1つまたは複数のプロセッサは、1つまたは複数の仮想マシンを実行するように構成される。
【図面の簡単な説明】
【0012】
図1】いくつかの実装形態による、典型的な電子デバイス内の例示的なシステムモジュールのブロック図である。
図2】いくつかの実装形態による、1つまたは複数の処理クラスタを有する例示的な電子デバイスのブロック図である。
図3A】いくつかの実装形態による、システムモジュール上で仮想マシンをホストするためのハイパーバイザのブロック図である。
図3B】いくつかの実装形態による、処理クラスタによってデータをフェッチするための1段階テーブルウォークプロセスのフロー図である。
図4】いくつかの実装形態による、コンテキスト同期イベントを可能にするために実装される命令の例示的なシーケンスの図である。
図5】いくつかの実装形態による、データ同期イベントを可能にするように構成された命令500の別の例示的なシーケンスの図である。
図6A】いくつかの実装形態による、コンテキスト同期イベントにおいて実装される例示的なアドレス変換プロセスのフロー図である。
図6B】いくつかの実装形態による、システムレジスタを更新するように構成された例示的な命令のシーケンスの図である。
図6C】いくつかの実装形態による、データ同期イベントにおいて実装される別の例示的なアドレス変換プロセスのフロー図である。
図6D】いくつかの実装形態による、システムレジスタを更新し、テーブルウォークを完了するように構成された、例示的な命令のシーケンスの図である。
図7】いくつかの実装形態による、同期イベントにおけるレイテンシを制御するためのプロセスのフロー図である。
図8】いくつかの実装形態による、メモリアクセスを管理するための方法のフロー図である。
【発明を実施するための形態】
【0013】
様々な説明する実装形態のより良い理解のために、以下の図面とともに、以下の発明を実施するための形態への参照が行われるべきであり、以下の図面では、図全体を通して、同様の参照番号は、対応する部分を指す。図面全体を通して、同様の参照番号は、対応する部分を指す。
【0014】
次に、特定の実施形態が詳細に参照され、それらの例が添付の図面において示される。以下の発明を実施するための形態では、多数の非限定的な具体的な詳細が、本明細書で提示される主題の理解を支援するために記載される。ただし、様々な代替形態が、特許請求の範囲から逸脱することなく使用され得ること、および主題が、これらの具体的な詳細なしに実施され得ることは、当業者には明らかになるであろう。
【0015】
図1は、いくつかの実装形態による、典型的な電子デバイス内の例示的なシステムモジュール100のブロック図である。この電子デバイス内のシステムモジュール100は、少なくともシステムオンチップ(SoC)102と、プログラム、命令、およびデータを記憶するためのメモリモジュール104と、入力/出力(I/O)コントローラ106と、ネットワークインターフェース108などの1つまたは複数の通信インターフェースと、これらの構成要素を相互接続するための1つまたは複数の通信バス150とを含む。いくつかの実装形態では、I/Oコントローラ106は、SoC102がユニバーサルシリアルバスインターフェースを介してI/Oデバイス(たとえば、キーボード、マウス、またはトラックパッド)と通信することを可能にする。いくつかの実装形態では、ネットワークインターフェース108は、電子デバイスが外部ソース、たとえば、サーバまたは別の電子デバイスとデータを交換することを各々可能にする、Wi-Fi、イーサネット、およびBluetoothネットワークのための1つまたは複数のインターフェースを含む。いくつかの実装形態では、通信バス150は、システムモジュール100中に含まれた様々なシステム構成要素を相互接続し、それらの間の通信を制御する、回路(チップセットと呼ばれることがある)を含む。
【0016】
いくつかの実装形態では、メモリモジュール104(たとえば、図2におけるメモリ104)は、DRAM、SRAM、DDR RAM、または他のランダムアクセスソリッドステートメモリデバイスなど、高速ランダムアクセスメモリを含む。いくつかの実装形態では、メモリモジュール104は、1つまたは複数の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステート記憶デバイスなど、不揮発性メモリを含む。いくつかの実装形態では、メモリモジュール104、または代替的に、メモリモジュール104内の不揮発性メモリデバイスは、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装形態では、メモリスロットが、メモリモジュール104を受容するためにシステムモジュール100上で予約される。メモリスロットに挿入されると、メモリモジュール104は、システムモジュール100に組み込まれる。
【0017】
いくつかの実装形態では、システムモジュール100は、以下から選択された1つまたは複数の構成要素をさらに含む。
・キャッシュ置換ポリシーに従って、キャッシュ内のメモリ管理ユニット(MMU)ライン置換(たとえば、キャッシュエントリ置換、キャッシュライン置換)を制御することを含む、電子デバイス内のSoC102と、メモリモジュール104を含むメモリ構成要素との間の通信を制御する、メモリコントローラ110。
・電子デバイス内でデータを記憶するために集積回路アセンブリを適用し、多数の実装形態では、NANDまたはNORメモリ構成に基づく、ソリッドステートドライブ(SSD)112。
・電気機械磁気ディスクに基づいて、デジタル情報を記憶し、取り出すために使用される、従来のデータ記憶デバイスである、ハードドライブ114。
・外部電源を受けるために電気的に結合される、電源コネクタ116。
・電子デバイス内の様々な構成要素または回路(たとえば、SoC102)によって必要とされる、他の所望のDC電圧レベル、たとえば、5V、3.3V、または1.8Vに、受けられた外部電源を変調する、電力管理集積回路(PMIC)118。
・1つまたは複数のディスプレイデバイスへの出力画像のフィードを、それらの望ましい画像/ビデオフォーマットに従って生成する、グラフィックスモジュール120。
・コンピュータプログラムの制御下で、電子デバイスとの間でオーディオ信号の入力および出力を容易にする、サウンドモジュール122。
【0018】
通信バス150はまた、構成要素110~122を含む様々なシステム構成要素を相互接続し、それらの間の通信を制御することに留意されたい。
【0019】
さらに、他の非一時的コンピュータ可読記憶媒体は、メモリモジュール104内およびSSD112内でそれらの非一時的コンピュータ可読記憶媒体に情報を記憶するための新しいデータ記憶技術が開発されるとき、使用され得ることが、当業者にはわかる。それぞれのデータ記憶技術は、現在開発中であり、まだ商品化されていないが、これらの新しい非一時的コンピュータ可読記憶媒体は、限定はしないが、生物学的材料、ナノワイヤ、カーボンナノチューブ、および個々の分子から製造されたものを含む。
【0020】
いくつかの実装形態では、SoC102は、単一の基板上に1つまたは複数のマイクロプロセッサまたは中央処理ユニット、メモリ、入力/出力ポート、および2次記憶装置を集積する、集積回路上に実装される。SoC102は、PMIC118によって与えられる1つまたは複数の内部供給電圧を受けるように構成される。いくつかの実装形態では、SoC102とPMIC118の両方が、メインロジックボード上、たとえば、メインロジックボードの2つの別個のエリア上に取り付けられ、メインロジックボード中に形成された導線を介して互いに電気的に結合される。上記で説明したように、この配置は、SoCの性能を損なう、たとえば、内部電圧供給において電圧降下を引き起こすことがある、寄生効果および電気的雑音をもたらす。代替的に、いくつかの実装形態では、SoC102およびPMIC118は、電子デバイス内で垂直に配置されるので、メインロジックボード中に形成されていない電気的接続を介して互いに電気的に結合されるようになる。SoC102およびPMIC118のそのような垂直配置は、SoC102とPMIC118との間の電気的接続の長さを低減し、メインロジックボードの導線によって引き起こされる性能劣化を回避することができる。いくつかの実装形態では、SoC102およびPMIC118の垂直配置は、部分的にSoC102とPMIC118との間の限られた空間における薄膜インダクタの集積によって容易にされる。
【0021】
図2は、いくつかの実装形態による、1つまたは複数の処理クラスタ202(たとえば、第1の処理クラスタ202-1、M番目の処理クラスタ202-M)を有する例示的な電子デバイス200のブロック図である。いくつかの実装形態では、処理クラスタ202は、1つのSoC102上で実装される。いくつかの実装形態では、処理クラスタ202は、複数のSoCにわたって分散される。電子デバイス200は、処理クラスタ202に加えて、キャッシュ220と、メモリ104とをさらに含む。キャッシュ220は、電子デバイス200上で処理クラスタ202に結合され、電子デバイス200は、SoC102の外部にあるメモリ104にさらに結合される。各処理クラスタ202は、1つまたは複数のプロセッサ204と、クラスタキャッシュ210とを含む。クラスタキャッシュ210は、1つまたは複数のプロセッサ204に結合され、場合によっては、1つまたは複数のプロセッサ204のための1つまたは複数の要求キュー240を維持する。各クラスタキャッシュ210はまた、関連するクラスタキャッシュ210に、特定の仮想マシンのためのキャッシュエントリが記憶されるか、特定のアドレス空間のためのキャッシュエントリが記憶されるか、特定の仮想アドレスのためのキャッシュエントリが記憶されるかを決定するために使用され得る、1つまたは複数のフィルタ232に関連付けられる。
【0022】
いくつかの実装形態では、各プロセッサ204は、場合によっては命令キャッシュおよびデータキャッシュに分割される、コアキャッシュ208をさらに含み、コアキャッシュ208は、それぞれのプロセッサ204によって直ちに実行され得る命令およびデータを記憶する。各コアキャッシュ208はまた、関連するコアキャッシュ208に、特定の仮想マシンのためのキャッシュエントリが記憶されるか、特定のアドレス空間のためのキャッシュエントリが記憶されるか、特定の仮想アドレスのためのキャッシュエントリが記憶されるかを決定するために使用され得る、1つまたは複数のコアフィルタ(図2に示されていない)に関連付けられる。
【0023】
一例では、第1の処理クラスタ202-1は、第1のプロセッサ204-1、....、N番目のプロセッサ204-N、第1のクラスタキャッシュ210-1を含み、ただし、Nは1よりも大きい整数である。第1のクラスタキャッシュ210-1は、1つまたは複数の第1の要求キュー240-1を有し、各第1の要求キュー240-1は、第1の処理クラスタ202-1のプロセッサ204のサブセットから受信されたデマンド要求およびプリフェッチ要求のキューを含む。さらに、新しいキャッシュエントリが、第1のクラスタキャッシュ210-1において記憶されるとき、第1のクラスタキャッシュ210-1に関連付けられた1つまたは複数のフィルタ232-1は、新たに追加されたキャッシュエントリに関する情報を記憶するように更新される。たとえば、第1の仮想マシン識別子(VMID)を含む新しいキャッシュエントリが、第1のクラスタキャッシュ210-1において記憶される場合、第1のクラスタキャッシュ210-1に関連付けられた1つまたは複数のフィルタ232-1は、第1のクラスタキャッシュ210-1が、第1のVMIDをもつ少なくとも1つのキャッシュエントリを記憶することを示す、情報を記憶するように更新される。しかしながら、第1のクラスタキャッシュ210-1が、新しいキャッシュエントリとともに更新されるとき、いくつかのキャッシュエントリが、第1のクラスタキャッシュ210-1からエビクトされることがあり、エビクトされたキャッシュエントリが、第1のクラスタキャッシュ210-1においてもはや記憶されていないようになる。第1のクラスタキャッシュ210-1に関連付けられた1つまたは複数のフィルタ232-1は、第1のVMIDを含むキャッシュエントリが第1のクラスタキャッシュ210-1にもはや記憶されていない場合でも、第1のクラスタキャッシュ210-1が、第1のVMIDをもつ少なくとも1つのキャッシュエントリを記憶することを示す、情報を記憶し続けることがある。第1のクラスタキャッシュ210-1に関連付けられた1つまたは複数のフィルタ232-1は、第1のクラスタキャッシュ210-1に現在記憶されているキャッシュエントリを正確に反映するように再生成されなければならない。たとえば、第1のクラスタキャッシュ210-1に関連付けられた1つまたは複数のフィルタ232-1は、第1のクラスタキャッシュ210-1が、第1のVMIDをもつ少なくとも1つのキャッシュエントリを記憶することを示す、情報を除去するために更新される。
【0024】
いくつかの実装形態では、SoC102は、単一の処理クラスタ202-1のみを含む。代替的に、いくつかの実装形態では、SoC102は、少なくとも追加の処理クラスタ202、たとえば、M番目の処理クラスタ202-Mを含む。M番目の処理クラスタ202-Mは、第1のプロセッサ206-1、....、N'番目のプロセッサ206-N'、およびM番目のクラスタキャッシュ210-Mを含み、ただし、N'は1よりも大きい整数であり、M番目のクラスタキャッシュ210-Mは、1つまたは複数のM番目の要求キュー240-Mを有する。
【0025】
いくつかの実装形態では、1つまたは複数の処理クラスタ202は、電子デバイスのための中央処理ユニットを提供するように構成され、キャッシュの階層に関連付けられる。たとえば、キャッシュの階層は、それらの別個の動作速度およびサイズに基づいて区別される、3つのレベルを含む。本出願では、(キャッシュメモリを含む)メモリの「速度」への言及は、メモリにデータを書き込むために、またはメモリからデータを読み取るために必要とされる時間に関し(たとえば、より高速のメモリは、より低速のメモリよりも短い書込みおよび/または読取り時間を有する)、メモリの「サイズ」への言及は、メモリの記憶容量に関する(たとえば、より小さいメモリは、より大きいメモリよりも少ない記憶空間を提供する)。コアキャッシュ208、クラスタキャッシュ210、およびキャッシュ220は、それぞれ、第1のレベル(L1)キャッシュ、第2のレベル(L2)キャッシュ、および第3のレベル(L3)キャッシュに対応する。各コアキャッシュ208は、それぞれのプロセッサ204によって直接実行されることになる命令およびデータを保持し、メモリの3つのレベルの中で最も速い動作速度および最小サイズを有する。各処理クラスタ202について、クラスタキャッシュ210は、コアキャッシュ208よりも動作上より低速であり、より大きいサイズであり、それぞれの処理クラスタ202のプロセッサ204によってアクセスされる可能性がより高いデータを保持する。キャッシュ220は、複数の処理クラスタ202によって共有され、コアキャッシュ208およびクラスタキャッシュ210の各々よりも大きいサイズであり、より低速である。各処理クラスタ202は、コアキャッシュ208および/またはクラスタキャッシュ210への命令およびデータのプリフェッチを制御する。各個々のプロセッサ204は、それぞれのクラスタキャッシュ210からそれぞれの個々のコアキャッシュ208への命令およびデータのプリフェッチをさらに制御する。
【0026】
いくつかの実装形態では、第1の処理クラスタ202-1の第1のクラスタキャッシュ210-1は、同じ処理クラスタ内の単一のプロセッサ204-1に結合され、他のいかなるプロセッサ(たとえば、204-N)にも結合されない。いくつかの実装形態では、第1の処理クラスタ202-1の第1のクラスタキャッシュ210-1は、同じ処理クラスタ内の複数のプロセッサ204-1および204-Nに結合される。いくつかの実装形態では、第1の処理クラスタ202-1の第1のクラスタキャッシュ210-1は、同じ処理クラスタ202-1内の1つまたは複数のプロセッサ204に結合され、第1の処理クラスタ202-1以外のいかなるクラスタ内のプロセッサ(たとえば、クラスタ202-M内のプロセッサ206)にも結合されない。第1の処理クラスタ202-1の第1のクラスタキャッシュ210-1は、第2レベルキャッシュまたはL2キャッシュと呼ばれることがある。
【0027】
各処理クラスタ202において、各要求キュー240は、場合によっては、それぞれの処理クラスタ202のプロセッサ204のサブセットから受信されたデマンド要求およびプリフェッチ要求のキューを含む。それぞれのプロセッサ204から受信された各データアクセス要求は、それぞれの処理クラスタ202に関連付けられた要求キュー240のうちの1つに振り分けられる。いくつかの実装形態では、要求キュー240は、特定のプロセッサ204から受信された要求のみを受信する。いくつかの実装形態では、要求キュー240は、処理クラスタ202内の2つ以上のプロセッサ204から要求を受信し、要求負荷が複数の要求キュー240の間で分散されることを可能にする。詳細には、いくつかの状況では、要求キュー240は、同じ処理クラスタ202内の異なるプロセッサ204から、ただ1つのタイプのデータ検索要求(プリフェッチ要求など)を受信する。
【0028】
各要求キュー240は、コアキャッシュ208、クラスタキャッシュ210、キャッシュ220、およびメモリ104を含む、SOC102のメモリシステムにアクセスするための複数のメモリアクセス要求を含む。いくつかの実装形態では、要求された情報のタイプに基づいて、各メモリアクセス要求キュー240は、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューのうちの1つを含む。データ変換キューは、データに関連付けられた仮想アドレスを変換するための複数のデータアドレスマッピング要求を含み、データは、変換された仮想アドレスを使用して、SoC102のメモリシステムから抽出される。命令変換キューは、命令に関連付けられた仮想アドレスを変換するための複数の命令アドレスマッピング要求を含み、命令は、変換された仮想アドレスを使用して、SoC102のメモリシステムから抽出される。プリフェッチ変換キューは、事前にメモリシステムから命令オペコードをフェッチするために適用され、命令オペコードに関連付けられた仮想アドレスを変換するための複数のアドレスマッピング要求を含む。命令オペコードは、事前に、変換された仮想アドレスを使用して、SoC102のメモリシステムから抽出され、各処理クラスタ202内のプロセッサ204によって処理されるようになる。
【0029】
各処理クラスタ202は、プロセッサ204内で1つまたは複数のIFU212を含むか、またはそれに結合される。1つまたは複数のIFU212は、現在の命令の実行と並列に、今度の命令をプリフェッチ、復号、および/または準備するように構成される。いくつかの実装形態では、処理クラスタ202内の各プロセッサ204は、それぞれのプロセッサ204に関連付けられたキャッシュフェッチング(キャッシュプリフェッチングを含む)を制御するために、それぞれのIFU212を含むか、またはそれに結合される。いくつかの実装形態では、処理クラスタ202内のプロセッサ204のうちの2つまたはそれ以上が、同じIFU212を共有する。それぞれのIFU212は、デマンド要求のための命令および関連するデータをフェッチするためのデマンドフェッチャ、ならびにプリフェッチ要求のための命令および関連するデータをフェッチするためのプリフェッチャのうちのいずれかを含み得る。一例では、IFU212は、命令に関連付けられたデータフェッチ要求(場合によっては、デマンド要求またはプリフェッチ要求である)を発行し、データフェッチ要求は、処理クラスタ202のプロセッサ204において受信される。データフェッチ要求は、仮想アドレスを物理アドレスに変換するためのアドレス情報を含む、アドレス変換要求を含み、メモリ104からデータを取り出すために適用される。データフェッチ要求に応答して、プロセッサ204は、仮想アドレスから物理アドレスへの変換、または仮想アドレスから物理アドレスへのマッピングを実装し、それによって、たとえば、ページテーブル内のページエントリを識別し得る。関係するアドレス変換要求が、1つまたは複数のメモリアクセス要求キュー240の中のデータ変換キューにキューイングされる。
【0030】
図2に示されていない、いくつかの実装形態では、各プロセッサ204は、IFU212とは別個にプリフェッチエンジンを含む。プリフェッチエンジンは、現在の命令がそれぞれのプロセッサ204によって実施される間に、今度の命令および関連するデータが事前にフェッチされる、プリフェッチを実施するように構成される。
【0031】
いくつかの実装形態では、各プロセッサ204は、リネーム/リタイア/ディスパッチユニット(REU:rename/retire/dispatch unit)214と、ロード/ストアユニット(LSU:load/store unit)216と、メモリ管理ユニット(MMU)218とを含む。代替的に、いくつかの実装形態では、2つまたは3つのプロセッサ204が、REU214、LSU216、MMU218、またはそれらのサブセットを共有する。LSU216は、データおよび命令におけるローディングおよび記憶動作のための仮想アドレスを生成し、SoC102のメモリ104からデータをロードし、レジスタ222からのデータをSoC102のメモリ104に記憶するように構成される。REU214は、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのために構成される。MMU218は、1つまたは複数のメモリアクセス要求キュー240に基づいて、メモリアクセスを管理するように構成される。いくつかの実装形態では、MMU218は、同期イベント中に投機的メモリアクセスを管理するために、LSU216またはREU214と協働する。LSU216によって生成された仮想アドレスは、1つまたは複数のメモリアクセス要求キュー240内のメモリアクセス要求に関連付けられる。同期イベント(たとえば、コンテキストまたはデータ同期イベント)の開始に応答して、REU214またはLSU216は、1つまたは複数のメモリアクセス要求キュー240内の投機的メモリアクセス要求の変換をパージするためのパージ命令を生成する。パージ命令に応答して、MMU218は、メモリアクセス要求キュー240内の投機的メモリアクセス要求を識別し、キュー240から投機的メモリアクセス要求に関連付けられたアドレス変換またはマッピングをパージする。
【0032】
図3Aは、いくつかの実装形態による、システムモジュール100上で仮想マシン320をホストするためのハイパーバイザ310のブロック図を示す。システムモジュール100は、電子デバイス200およびメモリ104など、ハイパーバイザ310をサポートするハードウェアを含む。電子デバイス200は、(図2に示されたキャッシュ208、210、および220を含む)キャッシュ330を含む。ハイパーバイザ310は、1つまたは複数の仮想マシン320(たとえば、仮想マシン320-1~320-m)をホストし、仮想マシン320の各々は、それぞれのゲストオペレーティングシステム(OS)324、および1つまたは複数のそれぞれのゲストアプリケーション322を実行する。たとえば、図3Aに示されているように、ハイパーバイザ310は、m個の仮想マシン320をホストする。第1の仮想マシン320-1は、ゲストOS324-1ならびにゲストアプリケーション322-1~322-pを実行し、第2の仮想マシン320-2は、ゲストOS324-2ならびにゲストアプリケーション326-1~326-p'を実行する。仮想マシン320の各々は、同じハイパーバイザ310によってホストされるにもかかわらず、他の仮想マシンとは無関係に動作する。たとえば、第1の仮想マシン320-1および第2の仮想マシン320-2は、異なる時間に開始または作成され得る。別の例では、第2の仮想マシン320-2が動作可能のままである間に、第1の仮想マシン320-1が停止され得る。たとえば、第1の仮想マシン320-1は、第2の仮想マシン320-2をティアダウンすることなしに停止され得る。また別の例では、第1の仮想マシン320-1は、第2の仮想マシン320-2がアプリケーション326-1~326-p'のうちのいずれかを開き、実行し、または閉じることとは無関係に、アプリケーション322-1~322-pのうちのいずれかを開き、実行し、または閉じ得る。
【0033】
仮想マシン320の各々は、互いとは無関係に動作するが、仮想マシン320、それぞれのゲストOS324、およびそれぞれのゲストアプリケーション322の各々を実行するために必要とされる情報が、メモリ104に記憶される。仮想マシン320、ゲストOS324、および任意のゲストアプリケーション322の実行において使用される、仮想アドレスから物理アドレスへの変換は、システムモジュール100のキャッシュ330に記憶され得る。したがって、新しい仮想マシン320がセットアップされるとき、または新しいアプリケーション322が仮想マシン320上で開かれるとき、新しいアドレス変換が、キャッシュ330内にキャッシュエントリとして記憶される。さらに、仮想マシン320が停止されるか、または仮想マシン320上のアプリケーション322が閉じられるとき、それぞれ、停止された仮想マシン320に関連付けられたキャッシュエントリを無効化するために、または仮想マシン320上で閉じられたゲストアプリケーションに関連付けられたキャッシュエントリを無効化するために、TLB無効化命令がキャッシュ330に送られる。
【0034】
コンピュータプロセッサのための縮小命令セットコンピュータ(RISC)アーキテクチャのファミリー、たとえば、高度RISCマシン(ARM)では、ソフトウェアが異なるモジュールに分割され、各モジュールは、1つまたは複数のプロセッサ204と、関連付けられたキャッシュ330と、メモリ104とを含む、電子デバイス200へのそれぞれのレベルのアクセスを有する。とはいえ、各ソフトウェアモジュールは、プロセッサ204が例外を取るか、または例外から復帰するときのみ変化し得る、別個のレベルの特権(例外レベル(EL)とも呼ばれる)を有する。各例外レベルに番号が付けられ、より高いレベルの特権は、より高い番号を有する。たとえば、EL0、EL1、EL2、およびEL3は、それぞれ、ゲストアプリケーション322、ゲストOS324、ハイパーバイザ310、およびファームウェア層の高まる特権レベルに対応する。
【0035】
図3Bは、いくつかの実装形態による、処理クラスタ202によって(たとえば、図2の第1の処理クラスタ202-1のIFU212によって)データをフェッチするための1段階テーブルウォークプロセス380のフロー図である。各処理クラスタ202について、メモリアクセスキュー240は、メモリアクセス要求の順序付きシーケンスを含み、各メモリアクセス要求は、仮想マシン320のゲストOS324上で実行されたそれぞれのアプリケーション322に関連付けられた仮想アドレスの変換を要求する、アドレス変換要求308を含む。仮想アドレスは、1段階テーブルウォークプロセス380に従って、物理アドレス390に変換される。この例では、各メモリアクセス要求のアドレス変換情報は、少なくとも1つのレベル0テーブル、複数のレベル1テーブル、複数のレベル2テーブル、および複数のレベル3テーブルを含む、マルチレベル階層(すなわち、TLB370)に記憶される。レベル0テーブルは、特定のレベル1テーブル(たとえば、複数のレベル1テーブルのうちの特定のテーブル、複数のレベル1テーブルのうちの第1のテーブル)を識別するテーブル記述子を含むページエントリを記憶し、レベル1テーブルは、特定のレベル2テーブル(たとえば、複数のレベル2テーブルのうちの特定のテーブル、複数のレベル2テーブルのうちの第1のテーブル)を識別するテーブル記述子を含むページエントリを記憶し、レベル2テーブルは、特定のレベル3テーブル(たとえば、複数のレベル3テーブルのうちの特定のテーブル、複数のレベル3テーブルのうちの第1のテーブル)を識別するテーブル記述子を含むページエントリを記憶し、レベル3テーブルは、メモリ104内の特定のページテーブル360を識別するテーブル記述子を含むページエントリを記憶する。テーブルウォークプロセス380は、レベル0テーブルにおいて開始し、メモリ104内のページエントリに記憶された要求されたデータ390(たとえば、メモリ104内のページテーブル360)が識別されるまで継続する。
【0036】
データフェッチプロセスは、処理クラスタ(たとえば、処理クラスタ202-1)のプロセッサ(たとえば、プロセッサ204-1)が、変換されることになる仮想アドレス312を含むアドレス変換要求308を受信することで開始する。仮想アドレス312は、変換テーブルベースレジスタ(TTBR)を含み、変換テーブルベースレジスタ(TTBR)は、それにおいてプロセッサのデータフェッチャ(たとえば、プロセッサ204-1のIFU212-1)がテーブルウォークプロセス380を開始することができる、レベル0テーブルを識別する。テーブルウォークプロセス380は、要求されたデータ390(たとえば、アドレス変換要求308によって要求されたデータ)がTLB370に記憶されていない(たとえば、TLB「ミス」)という決定に従って開始される。
【0037】
詳細には、IFU212は、レベル0テーブル316内のページテーブルエントリに記憶されている第1のテーブル記述子314を識別することによって、テーブルウォークプロセス380を開始する。第1のテーブル記述子314は、それについてIFU212がテーブルウォークプロセス380を継続するためにクエリすることができる、レベル1テーブル318(たとえば、特定のレベル1テーブル)を識別する情報を含む。いくつかの実装形態では、仮想アドレス312の少なくとも一部分(たとえば、第1の部分312-1)が、レベル0テーブル316内で第1のテーブル記述子314を発見するために使用される。たとえば、仮想アドレス312の第1の部分312-1は、第1のテーブル記述子314を記憶するレベル0テーブル316内のページテーブルエントリへの参照を含み得る。
【0038】
IFU212は、レベル0テーブル316から取得(たとえば、出力)された第1のテーブル記述子314に基づいて、レベル1テーブル318を識別し、レベル1テーブル318内のページテーブルエントリに記憶されている第2のテーブル記述子332を識別する。第2のテーブル記述子332は、それについてIFU212がテーブルウォークプロセス380を継続するためにクエリすることができる、レベル2テーブル340(たとえば、特定のレベル2テーブル)を識別する情報を含む。いくつかの実装形態では、仮想アドレス312の少なくとも一部分(たとえば、第2の部分312-2)が、レベル1テーブル318内で第2のテーブル記述子332を発見するために使用される。たとえば、仮想アドレス312の第2の部分312-2は、第2のテーブル記述子332を記憶するレベル1テーブル318内のページテーブルエントリへの参照を含み得る。いくつかの実装形態では、第2のテーブル記述子332を提供することに加えて、レベル1テーブル318はまた、メモリ104内の第1の連続部分390-1、たとえば、その中に要求されたデータ390が記憶されているメモリ104内の第1の連続部分390-1を識別する、第1のブロック記述子334も提供する。
【0039】
IFU212は、レベル1テーブル318から取得された第2のテーブル記述子332に基づいて、レベル2テーブル340を識別し、レベル2テーブル340内のページテーブルエントリに記憶されている第3のテーブル記述子342を識別する。第3のテーブル記述子342は、それについてIFU212がテーブルウォークプロセス380を継続するためにクエリすることができる、レベル3テーブル350(たとえば、特定のレベル3テーブル)を識別する情報を含む。いくつかの実装形態では、仮想アドレス312の少なくとも一部分(たとえば、第3の部分312-3)が、レベル2テーブル340内で第3のテーブル記述子342を発見するために使用される。たとえば、仮想アドレス312の第3の部分312-3は、第3のテーブル記述子342を記憶するレベル2テーブル340内のページテーブルエントリへの参照を含み得る。いくつかの実装形態では、第3のテーブル記述子342を提供(たとえば、出力)することに加えて、レベル2テーブル340はまた、メモリ104内の第2の連続部分390-2(たとえば、その中に要求されたデータ390(たとえば、要求されたアドレス変換)が記憶されている、メモリ104内の第2の連続部分390-2)を識別する、第2のブロック記述子344も提供する。いくつかの実装形態では、メモリ104内の第2の連続部分390-2は、メモリ104内の第1の連続部分390-1と比較して、メモリ104のより小さい部分を含み、メモリ104内の第1の連続部分390-1は、メモリ104内の第2の連続部分390-2を含む。たとえば、メモリ104内の第1の連続部分390-1は、メモリ104内の16MBの空間を含み、メモリ104内の第2の連続部分390-2は、メモリ内の32KBの空間を含む。
【0040】
IFU212は、レベル2テーブル340から取得(たとえば、出力)された第3のテーブル記述子342に基づいて、レベル3テーブル350を識別し、レベル3テーブル350内のページテーブルエントリに記憶されているページ記述子352を識別する。ページ記述子352は、それについてIFU212がテーブルウォークプロセス380を継続するためにクエリすることができる、メモリ104内のページテーブル360を識別する情報を含む。いくつかの実装形態では、仮想アドレス312の少なくとも一部分(たとえば、第4の部分312-4)が、メモリ104内でページ記述子352を発見するために使用される。たとえば、仮想アドレス312の第4の部分312-4は、ページ記述子352を記憶するレベル3テーブル350内のページテーブルエントリへの参照を含み得る。
【0041】
IFU212は、要求されたデータ390を記憶する(たとえば、要求された、仮想アドレスから物理アドレスへの変換を記憶する)ページエントリ362を発見するために、レベル3テーブル350から出力されたページ記述子352によって識別されるような、メモリ104内のページテーブル360をクエリする。いくつかの実装形態では、仮想アドレス312の少なくとも一部分(たとえば、第5の部分312-5)が、ページテーブル360内でページエントリ362を発見するために使用される。たとえば、仮想アドレス312の第5の部分312-5は、要求されたデータ390を記憶するページテーブル360上のバイトへの参照を含み得る。したがって、テーブルウォークプロセス380を使用して、プロセッサのIFU212(たとえば、プロセッサ204-1のIFU212-1)は、要求されたデータ390(たとえば、要求されたアドレス変換380、要求308に対応する物理アドレス390)を取得し、要求されたデータ390をプロセッサに渡すことが可能である。しかしながら、テーブルウォークプロセス380は、システム動作にレイテンシをもたらす。したがって、いくつかの実施形態では、テーブルウォークプロセス380は、同期イベントのための要求に続いて受信される1つまたは複数の命令を予期して、メモリアクセス要求キュー240内にキューイングされる、各投機的メモリアクセス要求について、スキップまたはバイパスされる。
【0042】
図4は、いくつかの実装形態による、コンテキスト同期イベントを可能にするために実装される命令400の例示的なシーケンスである。コンテキスト同期イベントは、第2のアプリケーション322-2を開始するためのゲストOS324における第1のアプリケーション322-1の終了、第2の仮想マシン320-2を開始するための第1の仮想マシン320-1の終了、またはシステムレジスタ222を更新するためのシステムコールに対応する。いくつかの実装形態では、命令セットアーキテクチャ(ISA)は、システムモジュール100のハイパーバイザ310の一部であり、プロセッサ204がソフトウェアによってどのように制御されるかを定義する。コンテキスト同期イベントにおいて、ISAは、たとえば、メモリアクセスキュー240内の投機的メモリアクセス要求のテーブルウォークのための、変換を必要とするように構成された命令400のセットと、変換制御システムレジスタ222の一貫したビューとを含む。たとえば、仮想アドレスから物理アドレスへの変換は、変換のライフサイクル全体の間に同じアドレス空間識別情報(ASID)を保持する。
【0043】
いくつかの実装形態では、コンテキスト同期イベントのための「SVC」要求402は、第1の例外レベルEL0から第2の例外レベルEL1へのスーパバイザコールを含み、その後に、コンテキスト同期イベントを開始するために、メモリアクセス完了を強制するように構成される、「ISB」バリア命令404が続く。バリア命令404は、特定の時点においてメモリアクセス順序付けおよびアクセス完了を強制する、命令同期バリア(ISB)を作成する。バリア命令404は、プログラム順序においてISB命令後に来るすべての命令が、ISB命令が完了した後にキャッシュまたはメモリからフェッチされることを保証する。ISBを使用することによって、ISBの前に実行されたコンテキスト変更動作の効果が、ISB命令後にフェッチされた命令にとって可視であることが保証される。いくつかの実装形態では、コンテキスト変更動作は、動作の効果が、ISB命令後にフェッチされた命令にとって可視であることを保証するために、ISB命令の挿入を必要とする。そのようなコンテキスト変更動作の例は、限定はしないが、完了されたキャッシュおよびTLB維持命令、ならびにシステムレジスタへの変更を含む。ISB命令404後にプログラム順序において現れるいかなるコンテキスト変更動作も、ISBが実行された後にのみ、効果を生じる。
【0044】
たとえば、各メモリアクセス要求キュー240は、メモリアクセス要求の順序付きシーケンスを含み、要求402に続いて受信される1つまたは複数の命令を予期してキューイングされる、投機的メモリアクセス要求406のサブセットを含む。投機的メモリアクセス要求406は、場合によっては、命令406A~406Cをロードするための1つもしくは複数のプリフェッチ命令、またはコンテキスト同期イベントに続いて処理されることになる、関連するデータを含む。いくつかの状況では、これらのプリフェッチ命令は、それへのコンテキスト同期イベントが開始するように意図される、第2のアプリケーション322-2または第2の仮想マシン320-2のための命令および関連するデータをフェッチするように意図される。システムモジュール100のキャッシュ330が、第2のアプリケーション322-2または第2の仮想マシン320-2に基づいてパージおよび再ロードされていないので、プリフェッチ命令のためにフェッチされる、命令および関連するデータは、古いか、または矛盾するものであり、第2のアプリケーション322-2または第2の仮想マシン320-2を実装するために使用することができない。
【0045】
詳細には、コンテキスト同期イベントのための要求402に応答して、プロセッサ204は、投機的メモリアクセス要求406のサブセットを識別し、投機的メモリアクセス要求406のサブセットに関連付けられたアドレス変換を自動的にパージする。コンテキスト同期イベントは、投機的メモリアクセス要求406のサブセットがパージされるか否かとは無関係に開始される。とはいえ、コンテキスト同期イベントは、投機的メモリアクセス要求406のサブセットがパージされた後、その間、またはその前に開始され得る。いくつかの状況では、プリフェッチ命令は、第2のアプリケーション322-2または第2の仮想マシン320-2のための命令および関連するデータをフェッチするように意図され、これらのプリフェッチ命令に関係する投機的メモリアクセス要求406がパージされる。これらのプリフェッチ命令が、第1のアプリケーション322-1または第1の仮想マシン320-1に関連付けられた古い命令およびデータを提供するとすれば、これらのプリフェッチ命令に関係する投機的メモリアクセス要求406をパージすることによって、メモリアクセスの効率が向上し、コンテキスト同期イベントが促進される。
【0046】
図4を参照すると、一例では、コンテキスト同期イベントのための要求402は、第1のアプリケーション322-1を終了し、第2のアプリケーション322-2を開始するための、スーパバイザコールを含む。スーパバイザコールは、第1の例外レベルEL0から第2の例外レベルEL1へ、すなわち、第1のアプリケーション322-1からオペレーティングシステム324へと行われる。スーパバイザコールの後に、変換レジームを維持するためのレジーム命令408と、変換ベースレジスタ222を第1のアプリケーション322-1(たとえば、ASID=A)から第2のアプリケーション322-2(たとえば、ASID=B)に更新するための、レジスタ更新命令410とが続く。バリア命令404は、命令同期バリア(ISA)を作成するために、およびコンテキスト同期イベント後に受信される新しい命令が、第2のアプリケーション322-2のコンテキストにおいて処理されることを保証するために適用される。バリア命令404の後に、アプリケーションロード命令406A、例外レベル命令406B、およびレジーム命令406Cが続き、それらが第2のアプリケーション322-2に関連付けられる。
【0047】
いくつかの状況では、複数の投機的メモリアクセス要求406が、命令406A~406Cを予期してキューイングされる。要求402に応答して、プロセッサ204は、第1の数のクロックサイクル内でバリア命令404を完了する間に、投機的メモリアクセス要求406のアドレス変換の実施を中止する。対照的に、投機的メモリアクセス要求406のアドレス変換が中止されない場合、アドレス変換は、第2の数のクロックサイクル内で完了されるように構成される。第1の数は、第2の数よりも小さい。とはいえ、投機的メモリアクセス要求406のサブセットに関連付けられた変換をパージすることによって、古いかまたは矛盾する命令またはデータを提供し得る、投機的メモリアクセス要求406をバイパスすることによって、コンテキスト同期イベントが促進される。
【0048】
図5は、いくつかの実装形態による、データ同期イベントを可能にするように構成された命令500の別の例示的なシーケンスである。データ同期イベントは、高い例外レベルが、低い例外レベルに関連付けられた変換制御システムレジスタ222を安全に更新可能であることを可能にするために実装される。たとえば、データ同期イベントにおいて、ハイパーバイザ310(EL2)は、たとえば、それぞれ、2つの仮想マシン320、2つのアプリケーション322、または2つのオペレーティングシステム324の間で切り替えるために、コンテキスト同期イベントが生じるとき、仮想マシン320、アプリケーション322、またはオペレーティングシステム324に関連付けられた、関連する変換制御システムレジスタ222を更新する。いくつかの実装形態では、データ同期イベントが、ハイパーバイザ(EL2)またはファームウェア(EL3)から実行されるとき、より低い例外レベル(たとえば、EL1またはEL0)への投機的アドレス変換またはテーブルウォークが終了される。変換制御に関連付けられたシステムレジスタ222が更新されるとき、1つまたは複数の投機的メモリアクセスのためのアドレス変換(すなわち、投機的アドレス変換またはテーブルウォーク)がパージされる。
【0049】
いくつかの実装形態では、データ同期イベントを開始するために、「HVC」要求502が、ハイパーバイザコールを介して受信され、ハイパーバイザコールは、ゲストアプリケーション322またはゲストオペレーティングシステム324からハイパーバイザ310へと行われる。要求502の後に、データ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令504が続く。バリア命令504は、オペレーティングシステムレベル(EL1)またはアプリケーションレベル(EL0)への投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層(EL2)またはファームウェア層(EL3)上で実行される、1つまたは複数のデータ同期バリア504Aおよび504Bを含む。一例では、各バリア命令は、ハイパーバイザ310またはゲストオペレーティングシステム324からのハイパーバイザコールを含む。詳細には、各バリア命令504は、データ同期バリア(DSB)を作成する。DSBは、同期が完了するまで、ただロードまたは記憶するのではなく、これ以上の命令の実行をブロックする。いくつかの状況では、DSBはまた、プロセッサ204によって発行されるすべてのキャッシュ、TLB、および分岐予測子維持動作(たとえば、投機的メモリアクセス)が完了するまで待機する。逆に、いくつかの実装形態では、DSBは、いかなる投機的メモリアクセスのいかなる変換もパージする。
【0050】
各メモリアクセス要求キュー240は、メモリアクセス要求の順序付きシーケンスを含み、要求502に続いて受信される1つまたは複数の命令を予期してキューイングされる、投機的メモリアクセス要求506のサブセットを含む。データ同期イベントのための要求502に応答して、プロセッサ204は、投機的メモリアクセス要求506のサブセットを識別し、投機的メモリアクセス要求506のサブセットに関連付けられたアドレス変換を自動的にパージする。データ同期イベントは、投機的メモリアクセス要求506のサブセットがパージされる前、その後、またはその間に開始される。いくつかの状況では、プリフェッチ命令は、データ同期イベント後に適用されることになる命令506A~506Bおよび関連するデータをフェッチするために発行され、これらのプリフェッチ命令に関係する投機的メモリアクセス要求506がパージされる。これらのプリフェッチ命令は、更新されていないキャッシュ、TLB、およびメモリに関連付けられた古い命令およびデータを提供し、これらのプリフェッチ命令に関係する投機的メモリアクセス要求506をパージすることによって、メモリアクセスの効率が向上し、データ同期イベントが促進される。
【0051】
図5を参照すると、一例では、データ同期イベントのための要求502は、ゲスト(たとえば、オペレーティングシステム324またはアプリケーション326)からハイパーバイザ310へのハイパーバイザコールを含む。ハイパーバイザコールの後に、変換レジームを維持するためのレジーム命令508と、ハイパーバイザ310によって変換レジームをプローブするためのプロービング命令510とが続く。2つのバリア命令504は、アドレス変換が完了されること、およびページテーブルエントリ(PTE)が更新され、グローバルに観測可能であることを保証する、データバリアを作成するために適用される。バリア命令504の後に、例外レベル命令506A、およびレジーム命令506Bが続く。いくつかの状況では、複数の投機的メモリアクセス要求506が、命令506A~506Bを予期してキューイングされる。
【0052】
いくつかの実装形態では、要求502に応答して、プロセッサ204は、第1の数のクロックサイクル内でバリア命令504を完了する間に、投機的メモリアクセス要求506のアドレス変換の実施を中止する。対照的に、投機的メモリアクセス要求506のアドレス変換が中止されない場合、アドレス変換は、第2の数のクロックサイクル内で完了されるように構成される。第1の数は、第2の数よりも小さい。とはいえ、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることによって、古い(たとえば、矛盾する)命令またはデータを提供し得る、投機的メモリアクセス要求506をバイパスすることによって、データ同期イベントが促進される。
【0053】
図6Aは、いくつかの実装形態による、コンテキスト同期イベントにおいて実装される例示的なアドレス変換プロセス600のフロー図であり、図6Bは、いくつかの実装形態による、システムレジスタ222を更新するように構成された例示的な命令620のシーケンスである。SoC102のプロセッサ204は、同期イベントの完了を停止させることなしに、投機的メモリアクセスのアドレス変換(すなわち、投機的アドレス変換)をパージする、同期イベントを編成する。投機的メモリアクセスには、キャッシュ210内で維持された対応するメモリアクセスキュー240内で、たとえば、「ヌル応答とともにパージされる」としてマークが付けられる。投機的メモリアクセス要求に関連付けられたアドレス変換は、各投機的メモリアクセス要求にマークが付けられているという決定に従って、自動的にパージ(すなわち、早期に終了)される。プロセッサ204は、いかなる変換キャッシング構造(たとえば、TLB370、ページテーブル360)も満たさない。データは、投機的メモリアクセス要求によってフェッチされる場合、IFU212、REU214、LSU216、またはMMU218によって消費されることが可能でない。
【0054】
詳細には、プロセッサ204のREU214およびMMU218は、投機的アドレス変換がパージされるコンテキスト同期イベントを完了するために、互いと協調される。コンテキスト同期イベントのための要求を受信すると、REU214は、ISBを作成するためのバリア命令を生成する。バリア命令に応答して、REU214は、投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成する。MMU218は、メモリアクセスキュー240内の投機的メモリアクセス要求のサブセットを識別し、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージする。これらのパージされる変換は、データ変換602、命令変換604、プリフェッチ変換606、またはそれらの組合せを含む。代替的に、いくつかの実装形態では、1つまたは複数のメモリアクセス要求キュー240は、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューを含む。MMU218は、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューの各々における投機的メモリアクセス要求のサブセットを識別する。投機的メモリアクセス要求は、データ、命令、およびプリフェッチ変換キュー内の少なくとも1つのメモリアクセス要求を含み、関連付けられたアドレス変換がパージされる。
【0055】
図6Bを参照すると、一例では、コンテキスト同期イベントのための要求608が、REU214によって受信される。応答して、REU214は、ISBを作成するバリア命令610を発行することによって、ハンドシェーキングプロセスを開始する。後続の命令612に関連付けられた投機的アドレス変換は、後続の処理において使用可能でない、矛盾するかまたは古い命令および関連するデータを返すことがある、長いレイテンシのテーブルウォークを回避するためにパージされる。
【0056】
図6Cは、いくつかの実装形態による、データ同期イベントにおいて実装される別の例示的なアドレス変換プロセス640のフロー図であり、図6Dは、いくつかの実装形態による、システムレジスタ222を更新し、テーブルウォークを完了するように構成された、例示的な命令660のシーケンスである。プロセッサ204のLSU216およびMMU218は、投機的アドレス変換がパージされるデータ同期イベントを完了するために、互いと協調される。データ同期イベントのための要求を受信すると、LSU216は、DSBを作成するためのバリア命令を生成する。バリア命令に応答して、LSU216は、投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成する。MMU218は、メモリアクセスキュー240内の投機的メモリアクセス要求のサブセットを識別し、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージする。これらのパージされる変換は、データ変換642、命令変換644、プリフェッチ変換646、またはそれらの組合せを含む。代替的に、いくつかの実装形態では、1つまたは複数のメモリアクセス要求キュー240は、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューを含む。MMU218は、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューの各々における投機的メモリアクセス要求のサブセットを識別する。投機的メモリアクセス要求は、データ、命令、およびプリフェッチ変換キュー内の少なくとも1つのメモリアクセス要求を含み、関連付けられたアドレス変換がパージされる。
【0057】
図6Dを参照すると、一例では、データ同期イベントのための要求648が、LSU216によって受信される。応答して、LSU216は、DSBを作成するバリア命令650を発行することによって、ハンドシェーキングプロセスを開始する。後続の命令652に関連付けられた投機的アドレス変換は、後続の処理において使用可能でない、矛盾するかまたは古い命令および関連するデータを返すことがある、長いレイテンシのテーブルウォークを回避するためにパージされる。
【0058】
図7は、いくつかの実装形態による、同期イベントにおけるレイテンシを制御するためのプロセス700のフロー図である。プロセス700は、1つまたは複数のプロセッサ204と、メモリシステムとを有する、システムモジュール100のプロセッサ204によって実施される。システムモジュール100のメモリシステムは、各プロセッサ204のコアキャッシュ208と、処理クラスタ202の複数のプロセッサ204にとってアクセス可能なクラスタキャッシュ210と、複数の処理クラスタ202にとってアクセス可能なキャッシュ220と、メモリ104(たとえば、DRAM)とを含む。場合によっては、クラスタキャッシュ210は、クラスタキャッシュ210に結合されたプロセッサ204のための1つまたは複数のメモリアクセスキュー240を記憶する。プロセス700は、1つまたは複数のメモリアクセスキュー240内の投機的メモリアクセスの変換をスキップすることによって、同期イベントを促進し、そのレイテンシを低減する。
【0059】
プロセッサ204は、コンテキスト同期イベントのための要求402、またはデータ同期イベントのための要求502を受信する(702)。いくつかの実装形態では、コンテキスト同期イベントは、アプリケーションASID変更(すなわち、第2のアプリケーション322-2を開始するための第1のアプリケーション322-1の終了)、仮想マシンVMID変更(すなわち、第2の仮想マシン320-2を開始するための第1の仮想マシン320-1の終了)、またはシステムレジスタ222を更新するためのシステムコールに対応する。このコンテキスト同期イベントは、場合によっては、ページテーブル管理、システムコール、および例外復帰のうちの1つまたは複数によってトリガされる。代替的に、いくつかの実装形態では、データ同期イベントは、プロセッサ204上で実装された仮想マシン320に関連付けられたレジスタ222を更新する。要求402または502に応答して、プロセッサ204は、メモリアクセス完了を強制するための要求(たとえば、バリア命令を含む)を発行する(704)。要求は、各キャッシュ208、210、または220に送信される(706)。プロセッサ204は、1つまたは複数のメモリアクセスキュー240内の投機的メモリアクセス要求を識別し、たとえば、フラグを用いて、各投機的メモリアクセス要求にマークを付ける(708)。例示的なフラグは、「応答なしでパージされる」である。プロセッサ204は、各投機的メモリアクセス要求にマークが付けられているという決定に従って、投機的メモリアクセス要求に関連付けられたアドレス変換を自動的にパージする(710)。いくつかの実装形態では、これらのアドレス変換は、早期に終了され(712)、プロセッサ204は、いかなる変換キャッシング構造(たとえば、TLB、テーブルウォークキャッシュ)も満たさない(714)。データは、投機的メモリアクセス要求によってフェッチされる場合、同じプロセッサ204または任意の他のプロセッサ204のIFU212、REU214、LSU216、またはMMU218によって適用されることが可能でない(716)。同期イベントは、変換のパージとは無関係に、たとえば、変換のパージより前に、その後で、またはそれと同時に開始され得る(718)。言い換えれば、いくつかの状況では、同期イベントは、変換の開始または完了を待機することなしに開始される。
【0060】
プロセス700は、同期イベントの時間に投機的アドレス変換を終了し、それによって、同期イベントが、投機的アドレス変換によって引き起こされるレイテンシによって遅延されることなしに完了されることを可能にする。一例では、同期イベント(たとえば、ISBまたはDSB)は、10クロックサイクルにおいて完了し、長いレイテンシの投機的アドレス変換がパージされない場合、1000クロックサイクルよりも長く延長され得る。投機的アドレス変換をパージする過程の間に、システムレジスタ222が、変換ユニットにわたってサンプリングおよびコピーされる必要はなく、処理リソースが、重いオペレーティングシステムまたはハイパーバイザコンテキスト切替え、ページテーブル管理、およびシステムコールを実施するために予約され得る。これらの手段によって、投機的アドレス変換をスキップすることによって、同期イベントの時間におけるSoC102の電力消費および性能が向上する。
【0061】
図7における動作について説明した特定の順序は、例にすぎず、説明した順序が、動作が実行され得る唯一の順序であることを示すものではないことを理解されたい。当業者は、本明細書で説明する動作を並べ替えるための様々な方法を認識されよう。さらに、図1図6Dおよび図8に関して本明細書で説明する他のプロセスの詳細が、交換可能な様式において、プロセス700においても適用可能であることに留意されたい。簡潔のために、これらの詳細については、ここで繰り返さない。
【0062】
図8は、いくつかの実装形態による、メモリアクセスを管理するための方法800のフロー図である。方法800は、1つまたは複数の仮想マシン320を実行するように構成される、1つまたは複数のプロセッサ204のうちのそれぞれのプロセッサ204において実施される。1つまたは複数のプロセッサ204は、1つまたは複数の処理クラスタ202の中に配置される。それぞれのプロセッサ204(たとえば、第1のクラスタ202-1の第1のプロセッサ204-1)は、同期イベントを開始するための要求を受信する(802)。要求に応答して(804)、それぞれのプロセッサ204は、1つまたは複数のメモリアクセス要求キュー240内の投機的メモリアクセス要求のサブセットを識別し(806)、自動的に、識別に従って、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージする(808)。それぞれのプロセッサ204は、同期イベントを開始する(810)。いくつかの実施形態では、同期イベントは、変換のパージ(808)とは無関係に、たとえば、変換のパージより前に、その後で、またはそれと同時に開始される(810)。
【0063】
いくつかの実装形態では、各メモリアクセス要求キュー240は、メモリアクセス要求の順序付きシーケンスを含み、投機的メモリアクセス要求のサブセットが、要求に続いて受信される1つまたは複数の命令を予期してキューイングされる(812)。さらに、いくつかの実装形態では、要求を受信することは、メモリアクセス完了を強制するように構成されたバリア命令を受信することを含む(814)。要求に応答して、それぞれのプロセッサ204は、投機的メモリアクセス要求のサブセットのアドレス変換を中止し、第1の数のクロックサイクル内でバリア命令を完了する(816)。投機的メモリアクセス要求のサブセットに関連付けられた変換は、第2の数のクロックサイクル内で完了されるように構成され、第1の数が第2の数よりも小さい(818)。
【0064】
いくつかの実装形態では、それぞれのプロセッサ204は、変換キャッシュに関連付けられ、各投機的メモリアクセス要求について、それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了すること、それぞれのプロセッサに関連付けられた変換キャッシュを満たすことを中止すること、およびそれぞれのプロセッサがそれぞれのデータ項目を使用することを保留することによって、同期イベントを開始する。さらに、いくつかの実装形態では、変換キャッシュは、トランスレーションルックアサイドバッファ(TLB)370、およびページテーブルキャッシュ360を含む。さらに、いくつかの実装形態では、それぞれのプロセッサは、第1のメモリから、第1のメモリよりも高速な第2のメモリに、命令および関連するデータをフェッチするための命令フェッチユニット(IFU)212と、ロードおよびストア命令を実行し、仮想アドレスを生成するためのロード/ストアユニット(LSU)216と、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのためのリネーム/リタイア/ディスパッチユニット(REU)214と、1つまたは複数のプロセッサのキャッシュおよびメモリへのメモリアクセスを管理するためのメモリ管理ユニット(MMU)218と、事前に第1のメモリから第2のメモリに命令またはデータをフェッチするためのプリフェッチエンジンとのうちの1つまたは複数を含み、それぞれのプロセッサのIFU212、LSU216、REU214、MMU218、およびプリフェッチエンジンがそれぞれのデータ項目を使用することが保留される。
【0065】
いくつかの実装形態では、それぞれのプロセッサ204は、1つまたは複数のメモリアクセス要求キュー240を管理するように構成された、メモリ管理ユニット(MMU)218を含む。要求に応答して、それぞれのプロセッサ204は、投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成する。MMU218は、1つまたは複数のメモリアクセスキュー内の投機的メモリアクセス要求のサブセットを識別し、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージする。
【0066】
いくつかの実装形態では、投機的メモリアクセス要求のサブセットは、フラグ(たとえば、「ヌル応答とともにパージされる」)を用いて、投機的メモリアクセス要求のサブセットの各々にマークを付けることによって、識別される。投機的メモリアクセス要求のサブセットに関連付けられた変換は、各投機的メモリアクセス要求がフラグに関連付けられるという決定に従って、自動的にパージされる。
【0067】
いくつかの実装形態では、1つまたは複数のメモリアクセス要求キュー240は、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューを含み、投機的メモリアクセス要求のサブセットは、データ、命令、およびプリフェッチ変換キュー240内の少なくとも1つのメモリアクセス要求を含む。
【0068】
いくつかの実装形態では、それぞれのプロセッサ204は、コンテキスト同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信する(820)。コンテキスト同期イベントは、第2のアプリケーションを開始するための第1のアプリケーションの終了、第2の仮想マシンを開始するための第1の仮想マシンの終了、またはシステムレジスタ222を更新するためのシステムコールに対応する。
【0069】
代替的に、いくつかの実装形態では、それぞれのプロセッサ204は、それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信する(822)。バリア命令は、オペレーティングシステムレベルまたはアプリケーションレベルへの投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層またはファームウェア層上で実行される、データ同期バリアを含む。さらに、いくつかの実施形態では、バリア命令は、ゲストオペレーティングシステムからのハイパーバイザコールを含む(824)。
【0070】
図8における動作について説明した特定の順序は、例にすぎず、説明した順序が、動作が実行され得る唯一の順序であることを示すものではないことを理解されたい。当業者は、本明細書で説明する動作を並べ替えるための様々な方法を認識されよう。さらに、図1図7に関して本明細書で説明する他のプロセスの詳細が、交換可能な様式において、方法800においても適用可能であることに留意されたい。簡潔のために、これらの詳細については、ここで繰り返さない。
【0071】
少なくとも以下の番号付きの条項において、実装例が説明される。
【0072】
条項1. 1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて実施される、メモリアクセスを管理するための方法であって、同期イベントを開始するための要求を受信するステップと、要求に応答して、1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別するステップと、自動的に、識別に従って、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージするステップと、同期イベントを開始するステップとを含む方法。
【0073】
条項2. 各メモリアクセス要求キューが、メモリアクセス要求の順序付きシーケンスを含み、投機的メモリアクセス要求のサブセットが、要求に続いて受信される1つまたは複数の命令を予期してキューイングされる、条項1における方法。
【0074】
条項3. 要求を受信するステップが、メモリアクセス完了を強制するように構成されたバリア命令を受信するステップを含み、方法が、要求に応答して、投機的メモリアクセス要求のサブセットのアドレス変換を中止し、第1の数のクロックサイクル内でバリア命令を完了するステップであって、投機的メモリアクセス要求のサブセットに関連付けられた変換が、第2の数のクロックサイクル内で完了されるように構成され、第1の数が第2の数よりも小さい、ステップをさらに含む、先行する条項のいずれかの方法。
【0075】
条項4. それぞれのプロセッサが、変換キャッシュに関連付けられ、同期イベントを開始するステップが、各投機的メモリアクセス要求について、それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了するステップと、それぞれのプロセッサに関連付けられた変換キャッシュを満たすことを中止するステップと、それぞれのプロセッサがそれぞれのデータ項目を使用することを保留するステップとをさらに含む、条項1~3のいずれかの方法。
【0076】
条項5. 変換キャッシュが、トランスレーションルックアサイドバッファ(TLB)、およびページテーブルキャッシュを含む、条項4の方法。
【0077】
条項6. それぞれのプロセッサが、第1のメモリから、第1のメモリよりも高速な第2のメモリに、命令および関連するデータをフェッチするための命令フェッチユニット(IFU)と、ロードおよびストア命令を実行し、仮想アドレスを生成するためのロード/ストアユニット(LSU)と、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのためのリネーム/リタイア/ディスパッチユニット(REU)と、1つまたは複数のプロセッサのキャッシュおよびメモリへのメモリアクセスを管理するためのメモリ管理ユニット(MMU)と、事前に第1のメモリから第2のメモリに命令またはデータをフェッチするためのプリフェッチエンジンとのうちの1つまたは複数を含み、それぞれのプロセッサのIFU、LSU、REU、MMU、およびプリフェッチエンジンがそれぞれのデータ項目を使用することが保留される、条項4または5の方法。
【0078】
条項7. それぞれのプロセッサが、1つまたは複数のメモリアクセス要求キューを管理するように構成された、メモリ管理ユニット(MMU)を含み、方法が、要求に応答して、それぞれのプロセッサによって、投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成するステップであって、MMUが、1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別し、投機的メモリアクセス要求のサブセットに関連付けられた変換をパージする、ステップをさらに含む、先行する条項のいずれかの方法。
【0079】
条項8. 投機的メモリアクセス要求のサブセットを識別するステップが、フラグを用いて、投機的メモリアクセス要求のサブセットの各々にマークを付けるステップを含み、投機的メモリアクセス要求のサブセットに関連付けられた変換が、各投機的メモリアクセス要求がフラグに関連付けられるという決定に従って、自動的にパージされる、先行する条項のいずれかの方法。
【0080】
条項9. 1つまたは複数のメモリアクセス要求キューが、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューを含み、投機的メモリアクセス要求のサブセットが、データ、命令、およびプリフェッチ変換キュー内の少なくとも1つのメモリアクセス要求を含む、先行する条項のいずれかの方法。
【0081】
条項10. 方法が、コンテキスト同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップをさらに含み、コンテキスト同期イベントが、第2のアプリケーションを開始するための第1のアプリケーションの終了、第2の仮想マシンを開始するための第1の仮想マシンの終了、またはシステムレジスタを更新するためのシステムコールに対応する、条項1~9のいずれかの方法。
【0082】
条項11. 方法が、それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップをさらに含み、バリア命令が、オペレーティングシステムレベルまたはアプリケーションレベルへの投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層またはファームウェア層上で実行される、データ同期バリアを含む、条項1~9のいずれかの方法。
【0083】
条項12. バリア命令が、ゲストオペレーティングシステムからのハイパーバイザコールを含む、条項11の方法。
【0084】
条項13. 1つまたは複数の仮想マシンを実行するように構成された、1つまたは複数のプロセッサを備える、電子デバイスであって、それぞれのプロセッサが、条項1~12のいずれかにおける方法を実施するように構成される、電子デバイス。
【0085】
条項14. 1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサによる実行のために構成された、1つまたは複数のプログラムを記憶する、非一時的コンピュータ可読記憶媒体であって、1つまたは複数のプログラムが命令を含み、命令が、それぞれのプロセッサによって実行されると、それぞれのプロセッサに、条項1~12のいずれかにおける方法を実施させる、非一時的コンピュータ可読記憶媒体。
【0086】
条項15. 1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて、メモリアクセスを管理するための装置であって、装置が、条項1~12のいずれかにおける方法を実行するための手段を備える。
【0087】
上記の説明は、特定の実装形態を参照しながら提供された。しかしながら、上記の例示的な説明は、網羅的であるように、または開示される正確な形態への限定であるように意図されない。多くの修正および変形が、上記の教示に鑑みて可能である。開示される原理およびそれらの実際的適用例を最も良く説明し、それによって、他者が、企図された特定の使用に適するように、様々な修正とともに本開示および様々な実装形態を最も良く利用することを可能にするために、実装形態が選定および説明された。
【0088】
本明細書の様々な説明する実装形態の説明において使用する用語は、特定の実装形態について説明するためのものにすぎず、限定を意図するものではない。様々な説明する実装形態および添付の特許請求の範囲の説明において使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示さない限り、複数形も含むものとする。本明細書で使用する「および/または」という用語が、関連する列挙された項目のうちの1つまたは複数のいずれかおよびすべての可能な組合せを指し、それらを包含することも理解されよう。「含む(includes)」、「含む(including)」、「備える(comprises)」、および/または「備える(comprising)」という用語は、本明細書で使用するとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことがさらに理解されよう。さらに、「第1の」、「第2の」などの用語は、様々な要素について説明するために本明細書で使用され得るが、これらの要素がこれらの用語によって限定されるべきではないことが理解されよう。これらの用語は、ある要素を別の要素と区別するためにのみ使用される。
【0089】
本明細書で使用する「場合(if)」という用語は、場合によっては、文脈に応じて、「とき(when)」、または「すると(upon)」、または「決定に応答して(in response to determining)」、または「検出に応答して(in response to detecting)」、または「という決定に従って(in accordance with a determination that)」を意味するように解釈される。同様に、「決定される場合(if it is determined)」、または「[述べられた条件またはイベント]が検出される場合(if [a stated condition or event] is detected)」という句は、場合によっては、文脈に応じて、「決定すると(upon determining)」、または「決定に応答して(in response to determining)」、または「[述べられた条件またはイベント]を検出すると(upon detecting [the stated condition or event])」、または「[述べられた条件またはイベント]の検出に応答して(in response to detecting [the stated condition or event])」、または「[述べられた条件またはイベント]が検出されるという決定に従って(in accordance with a determination that [a stated condition or event] is detected)」を意味するように解釈される。
【0090】
上記の説明は、説明の目的で、特定の実施形態を参照しながら説明された。しかしながら、上記の例示的な説明は、網羅的であるように、または特許請求の範囲を開示される正確な形態に限定するように意図されない。多くの修正および変形が、上記の教示に鑑みて可能である。動作原理および実際的適用例を最も良く説明し、それによって、他の当業者を可能にするために、実施形態が選定および説明された。
【0091】
様々な図面は、いくつかの論理的段階を特定の順序で示すが、順序に依存しない段階は、並べ替えられてよく、他の段階が組み合わせられるか、または切り離されてよい。何らかの並べ替えまたは他のグループ化が詳細に述べられるが、他のものが当業者には明らかになるので、本明細書で提示される並べ替えおよびグループ化は、代替物の網羅的なリストではない。その上、段階は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組合せにおいて実装され得ることを認識されたい。
【符号の説明】
【0092】
100 システムモジュール
102 システムオンチップ(SoC)、SoC、SOC
104 メモリモジュール、メモリ
106 入力/出力(I/O)コントローラ、I/Oコントローラ
108 ネットワークインターフェース
110 メモリコントローラ、構成要素
112 ソリッドステートドライブ(SSD)、構成要素、SSD
114 ハードドライブ、構成要素
116 電源コネクタ、構成要素
118 電力管理集積回路(PMIC)、構成要素、PMIC
120 グラフィックスモジュール、構成要素
122 サウンドモジュール、構成要素
150 通信バス
200 電子デバイス
202 処理クラスタ
202-1 第1の処理クラスタ、単一の処理クラスタ、処理クラスタ、第1のクラスタ
202-M M番目の処理クラスタ、クラスタ
204、206 プロセッサ
204-1 第1のプロセッサ、単一のプロセッサ、プロセッサ
204-N N番目のプロセッサ、プロセッサ
206-1 第1のプロセッサ
206-N' N'番目のプロセッサ
208 コアキャッシュ、キャッシュ
210 クラスタキャッシュ、キャッシュ
210-1 第1のクラスタキャッシュ
210-M M番目のクラスタキャッシュ
212 IFU、命令フェッチユニット(IFU)
212-1 IFU
214 リネーム/リタイア/ディスパッチユニット(REU)、REU
216 ロード/ストアユニット(LSU)、LSU
218 メモリ管理ユニット(MMU)、MMU
220、330 キャッシュ
222 レジスタ、システムレジスタ、変換制御システムレジスタ、変換ベースレジスタ
232、232-1 フィルタ
240 要求キュー、メモリアクセス要求キュー、キュー、メモリアクセスキュー、データ、命令、およびプリフェッチ変換キュー
240-1 第1の要求キュー
240-M M番目の要求キュー
308 アドレス変換要求、要求
310 ハイパーバイザ
312 仮想アドレス
312-1 第1の部分
312-2 第2の部分
312-3 第3の部分
312-4 第4の部分
312-5 第5の部分
314 第1のテーブル記述子
316 レベル0テーブル
318 レベル1テーブル
320、320-1~320-m 仮想マシン
320-1 第1の仮想マシン
320-2 第2の仮想マシン
322、322-1~322-p、326-1~326-p' ゲストアプリケーション、アプリケーション
322-1 第1のアプリケーション
322-2 第2のアプリケーション
324 ゲストオペレーティングシステム(OS)、ゲストOS、オペレーティングシステム、ゲストオペレーティングシステム
324-1、324-2 ゲストOS
326 アプリケーション
332 第2のテーブル記述子
334 第1のブロック記述子
340 レベル2テーブル
342 第3のテーブル記述子
344 第2のブロック記述子
350 レベル3テーブル
352 ページ記述子
360 ページテーブル、ページテーブルキャッシュ
362 ページエントリ
370 TLB、トランスレーションルックアサイドバッファ(TLB)
380 1段階テーブルウォークプロセス、テーブルウォークプロセス、要求されたアドレス変換
390 物理アドレス、要求されたデータ
390-1 第1の連続部分
390-2 第2の連続部分
400、500、620、660 命令
402 「SVC」要求、要求
404 「ISB」バリア命令、バリア命令、ISB命令
406、506 投機的メモリアクセス要求
406A 命令、アプリケーションロード命令
406B、506A 命令、例外レベル命令
406C、506B 命令、レジーム命令
408、508 レジーム命令
410 レジスタ更新命令
502 「HVC」要求、要求
504、610、650 バリア命令
504A、504B データ同期バリア
510 プロービング命令
600 例示的なアドレス変換プロセス
602、642 データ変換
604、644 命令変換
606、646 プリフェッチ変換
608、648 要求
612、652 後続の命令
640 別の例示的なアドレス変換プロセス
700 プロセス
図1
図2
図3A
図3B
図4
図5
図6A
図6B
図6C
図6D
図7
図8
【手続補正書】
【提出日】2024-04-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて実施される、メモリアクセスを管理するための方法であって、
同期イベントを開始するための要求を受信するステップと、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別するステップと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージするステップと、
前記同期イベントを開始するステップと
含み、
前記それぞれのプロセッサが、前記1つまたは複数のメモリアクセス要求キューを管理するように構成された、メモリ管理ユニット(MMU)を含み、前記方法が、
前記要求に応答して、前記それぞれのプロセッサによって、前記投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成するステップであって、前記MMUが、前記1つまたは複数のメモリアクセス要求キュー内の前記投機的メモリアクセス要求のサブセットを識別し、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換をパージする、ステップ
をさらに含む、
方法。
【請求項2】
各メモリアクセス要求キューが、メモリアクセス要求の順序付きシーケンスを含み、前記投機的メモリアクセス要求のサブセットが、前記要求に続いて受信される1つまたは複数の命令を予期してキューイングされる、請求項1に記載の方法。
【請求項3】
前記要求を受信するステップが、メモリアクセス完了を強制するように構成されたバリア命令を受信するステップを含み、前記方法が、
前記要求に応答して、前記投機的メモリアクセス要求のサブセットのアドレス変換を中止し、第1の数のクロックサイクル内で前記バリア命令を完了するステップであって、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換が、第2の数のクロックサイクル内で完了されるように構成され、前記第1の数が前記第2の数よりも小さい、ステップ
をさらに含む、請求項2に記載の方法。
【請求項4】
前記それぞれのプロセッサが、変換キャッシュに関連付けられ、前記同期イベントを開始するステップが、各投機的メモリアクセス要求について、
それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了するステップと、
前記それぞれのプロセッサに関連付けられた前記変換キャッシュを満たすことを中止するステップと、
前記それぞれのプロセッサが前記それぞれのデータ項目を使用することを保留するステップと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記変換キャッシュが、トランスレーションルックアサイドバッファ(TLB)、およびページテーブルキャッシュを含む、請求項4に記載の方法。
【請求項6】
前記それぞれのプロセッサが、第1のメモリから、前記第1のメモリよりも高速な第2のメモリに、命令および関連するデータをフェッチするための命令フェッチユニット(IFU)と、ロードおよびストア命令を実行し、仮想アドレスを生成するためのロード/ストアユニット(LSU)と、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのためのリネーム/リタイア/ディスパッチユニット(REU)と、前記1つまたは複数のプロセッサのキャッシュおよびメモリへのメモリアクセスを管理するためのメモリ管理ユニット(MMU)と、事前に前記第1のメモリから前記第2のメモリに命令またはデータをフェッチするためのプリフェッチエンジンとのうちの1つまたは複数を含み、
前記それぞれのプロセッサの前記IFU、LSU、REU、MMU、およびプリフェッチエンジンが前記それぞれのデータ項目を使用することが保留される、請求項4に記載の方法
【請求項7】
記投機的メモリアクセス要求のサブセットを識別するステップが、フラグを用いて、前記投機的メモリアクセス要求のサブセットの各々にマークを付けるステップを含み、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換が、各投機的メモリアクセス要求が前記フラグに関連付けられるという決定に従って、自動的にパージされる、請求項1に記載の方法。
【請求項8】
前記1つまたは複数のメモリアクセス要求キューが、データ変換キュー、命令変換キュー、およびプリフェッチ変換キューを含み、前記投機的メモリアクセス要求のサブセットが、前記データ、命令、およびプリフェッチ変換キュー内の少なくとも1つのメモリアクセス要求を含む、請求項1に記載の方法。
【請求項9】
前記方法が、
コンテキスト同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップ
をさらに含み、
前記コンテキスト同期イベントが、第2のアプリケーションを開始するための第1のアプリケーションの終了、第2の仮想マシンを開始するための第1の仮想マシンの終了、またはシステムレジスタを更新するためのシステムコールに対応する、請求項1に記載の方法。
【請求項10】
前記方法が、
前記それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するステップ
をさらに含み、
前記バリア命令が、オペレーティングシステムレベルまたはアプリケーションレベルへの前記投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層またはファームウェア層上で実行される、データ同期バリアを含む、請求項1に記載の方法。
【請求項11】
前記バリア命令が、ゲストオペレーティングシステムからのハイパーバイザコールを含む、請求項10に記載の方法。
【請求項12】
1つまたは複数の仮想マシンを実行するように構成された、1つまたは複数のプロセッサを備える、電子デバイスであって、それぞれのプロセッサが、
同期イベントを開始するための要求を受信することと、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別することと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることと、
前記同期イベントを開始することと
を実行するように構成され、
前記それぞれのプロセッサが、前記1つまたは複数のメモリアクセス要求キューを管理するように構成された、メモリ管理ユニット(MMU)を含み、
前記それぞれのプロセッサが、前記要求に応答して、前記それぞれのプロセッサによって、前記投機的メモリアクセス要求のサブセットの変換をパージするためのパージ命令を生成するステップであって、前記MMUが、前記1つまたは複数のメモリアクセス要求キュー内の前記投機的メモリアクセス要求のサブセットを識別し、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換をパージするように構成される、
電子デバイス。
【請求項13】
各メモリアクセス要求キューが、メモリアクセス要求の順序付きシーケンスを含み、前記投機的メモリアクセス要求のサブセットが、前記要求に続いて受信される1つまたは複数の命令を予期してキューイングされる、請求項12に記載の電子デバイス。
【請求項14】
前記要求を受信することが、メモリアクセス完了を強制するように構成されたバリア命令を受信することを含み、前記それぞれのプロセッサが、
前記要求に応答して、前記投機的メモリアクセス要求のサブセットのアドレス変換を中止し、第1の数のクロックサイクル内で前記バリア命令を完了することであって、前記投機的メモリアクセス要求のサブセットに関連付けられた前記変換が、第2の数のクロックサイクル内で完了されるように構成され、前記第1の数が前記第2の数よりも小さい、こと
を実行するようにさらに構成される、請求項13に記載の電子デバイス。
【請求項15】
前記それぞれのプロセッサが、変換キャッシュに関連付けられ、前記同期イベントを開始することが、各投機的メモリアクセス要求について、
それぞれのデータ項目をそれぞれのメモリユニットから読み取るか、またはそれぞれのメモリユニットに書き込むための、対応するメモリアクセス要求を終了することと、
前記それぞれのプロセッサに関連付けられた前記変換キャッシュを満たすことを中止することと、
前記それぞれのプロセッサが前記それぞれのデータ項目を使用することを保留することと
をさらに含む、請求項12に記載の電子デバイス。
【請求項16】
前記変換キャッシュが、トランスレーションルックアサイドバッファ(TLB)、およびページテーブルキャッシュを含む、請求項15に記載の電子デバイス。
【請求項17】
前記それぞれのプロセッサが、第1のメモリから、前記第1のメモリよりも高速な第2のメモリに、命令および関連するデータをフェッチするための命令フェッチユニット(IFU)と、ロードおよびストア命令を実行し、仮想アドレスを生成するためのロード/ストアユニット(LSU)と、レジスタリネーミング、ならびに命令リタイアメントおよびディスパッチングのためのリネーム/リタイア/ディスパッチユニット(REU)と、事前に前記第1のメモリから前記第2のメモリに命令またはデータをフェッチするためのプリフェッチエンジンとのうちの1つまたは複数を含み、前記それぞれのプロセッサの前記IFU、LSU、REU、MMU、およびプリフェッチエンジンが前記それぞれのデータ項目を使用することが保留される、請求項16に記載の電子デバイス。
【請求項18】
1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサによる実行のために構成された、1つまたは複数のプログラムを記憶する、非一時的コンピュータ可読記憶媒体であって、前記1つまたは複数のプログラムが命令を含み、前記命令が、前記それぞれのプロセッサによって実行されると、前記それぞれのプロセッサに、
同期イベントを開始するための要求を受信することと、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別することと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることと、
前記同期イベントを開始することと
前記それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信することと、
を実行させ、
前記バリア命令が、オペレーティングシステムレベルまたはアプリケーションレベルへの前記投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層またはファームウェア層上で実行される、データ同期バリアを含む、
非一時的コンピュータ可読記憶媒体。
【請求項19】
1つまたは複数の仮想マシンを実行するように構成される、1つまたは複数のプロセッサのうちのそれぞれのプロセッサにおいて、メモリアクセスを管理するための装置であって、
同期イベントを開始するための要求を受信するための手段と、
前記要求に応答して、
1つまたは複数のメモリアクセス要求キュー内の投機的メモリアクセス要求のサブセットを識別することと、
自動的に、前記識別に従って、前記投機的メモリアクセス要求のサブセットに関連付けられた変換をパージすることと、
前記パージすることに続いて、前記同期イベントを開始することと
を行うための手段と
前記それぞれのプロセッサ上で実装された仮想マシンに関連付けられたレジスタを更新するためのデータ同期イベントを開始するために、メモリアクセス完了を強制するように構成された、バリア命令を受信するための手段と、
を備え、
前記バリア命令が、オペレーティングシステムレベルまたはアプリケーションレベルへの前記投機的メモリアクセス要求のメモリアクセス完了を強制するために、ハイパーバイザ層またはファームウェア層上で実行される、データ同期バリアを含む、
装置。
【国際調査報告】