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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-533553ページ変換の無効化に関連するストアコヒーレンス検証
<>
  • 特表-ページ変換の無効化に関連するストアコヒーレンス検証 図1
  • 特表-ページ変換の無効化に関連するストアコヒーレンス検証 図2
  • 特表-ページ変換の無効化に関連するストアコヒーレンス検証 図3
  • 特表-ページ変換の無効化に関連するストアコヒーレンス検証 図4
  • 特表-ページ変換の無効化に関連するストアコヒーレンス検証 図5
  • 特表-ページ変換の無効化に関連するストアコヒーレンス検証 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】ページ変換の無効化に関連するストアコヒーレンス検証
(51)【国際特許分類】
   G06F 9/38 20180101AFI20240905BHJP
   G06F 12/1027 20160101ALI20240905BHJP
   G06F 9/30 20180101ALI20240905BHJP
【FI】
G06F9/38 310F
G06F12/1027 100
G06F9/30 350A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024516776
(86)(22)【出願日】2022-09-29
(85)【翻訳文提出日】2024-03-15
(86)【国際出願番号】 CN2022122606
(87)【国際公開番号】W WO2023056886
(87)【国際公開日】2023-04-13
(31)【優先権主張番号】17/493,212
(32)【優先日】2021-10-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】カプール、シャクティ
(72)【発明者】
【氏名】ウー、ネルソン
(72)【発明者】
【氏名】ドゥサナプディ、マノジ
【テーマコード(参考)】
5B013
5B033
5B205
【Fターム(参考)】
5B013AA05
5B013AA12
5B013CC07
5B033BE00
5B033DA04
5B205MM51
(57)【要約】
ページ変換のエントリを無効化するためのシステムおよび方法が記載される。処理要素は、処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用してもよい。処理要素は、遅延されたドレインサイクルの下でSRQをドレインしてもよい。処理要素は、複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信してもよい。TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であってもよい。TLBI命令は、別の処理要素によってブロードキャストされてもよい。SRQのドレインサイクルに遅延を適用することにより、SRQのドレインサイクルと、TLBIに関連する無効化サイクルとの差を減少させてもよい。
【選択図】図6

【特許請求の範囲】
【請求項1】
複数の処理要素を有するデータ処理システムにおいて、ページ変換のエントリを無効化するための方法であって、
処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することと、
前記遅延されたドレインサイクルの下で前記SRQをドレインすることと、
前記複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信することと、を含み、当該TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であり、当該TLBI命令は、別の処理要素によってブロードキャストされ、
前記SRQの前記ドレインサイクルに前記遅延を適用することにより、当該SRQの当該ドレインサイクルと、前記TLBIに関連する無効化サイクルとの重なり量が増加する、方法。
【請求項2】
無効化される前記TLBエントリに関連する、前記SRQ内のSRQエントリを特定することと、
前記特定したSRQエントリを前記SRQからドレインすることと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記SRQを完全にドレインしたことに応じて、前記インターコネクトを介して前記別の処理要素に確認応答信号を送信することをさらに含む、請求項1に記載の方法。
【請求項4】
前記遅延は、前記TLBI命令が前記インターコネクトを介して前記別の処理要素から前記処理要素に伝搬するのに要する時間に比例する、請求項1に記載の方法。
【請求項5】
前記遅延は、前記SRQ内の各エントリをドレインするのに要するサイクル数と当該SRQのサイズとの積に基づく、請求項1に記載の方法。
【請求項6】
前記遅延のサイクル数は、1と前記SRQのサイズの倍数との間の乱数に基づく、請求項1に記載の方法。
【請求項7】
第1の処理要素と、
第2の処理要素と、
前記第1の処理要素および前記第2の処理要素に接続されたインターコネクトと、
を備えるコンピュータシステムであって、
前記第1の処理要素は、前記インターコネクト上で変換ルックアサイドバッファ無効化(TLBI)命令をブロードキャストするように構成され、当該TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であり、
前記第2の処理要素は、
前記第2の処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することと、
前記遅延されたドレインサイクルの下で前記SRQをドレインすることと、
前記インターコネクトから前記TLBI命令を受信することと、を実行するように構成され、
前記SRQの前記ドレインサイクルに前記遅延を適用することにより、当該SRQの当該ドレインサイクルと、前記TLBIに関連する無効化サイクルとの重なり量が増加する、コンピューティングシステム。
【請求項8】
前記第2の処理ユニットは、
無効化される前記TLBエントリに関連する、前記SRQ内のSRQエントリを特定することと、
前記特定したSRQエントリを前記SRQからドレインすることと、
を実行するように構成される、請求項7に記載のコンピューティングシステム。
【請求項9】
前記第2の処理要素は、前記SRQを完全にドレインしたことに応じて、前記インターコネクトを介して前記第1の処理要素に確認応答信号を送信するように構成される、請求項7に記載のコンピューティングシステム。
【請求項10】
前記遅延は、前記TLBI命令が前記インターコネクトを介して前記第1の処理要素から前記第2の処理要素に伝搬するのに要する時間に比例する、請求項7に記載のコンピューティングシステム。
【請求項11】
前記遅延は、前記SRQ内の各エントリをドレインするのに要するサイクル数と当該SRQのサイズとの積に基づく、請求項7に記載のコンピューティングシステム。
【請求項12】
前記遅延のサイクル数は、1と前記SRQのサイズの倍数との間の乱数に基づく、請求項7に記載のコンピューティングシステム。
【請求項13】
前記1つ以上の実行ユニットは、前記乱数を生成するように構成された乱数生成器を含む、請求項12に記載のコンピューティングシステム。
【請求項14】
前記乱数生成器は、1つ以上の線形フィードバックシフトレジスタによって実装される、請求項13に記載のコンピューティングシステム。
【請求項15】
コンピュータプログラムであって、当該プログラムがコンピュータ上で実行される際に請求項1から6のいずれかに記載の方法ステップを実行するように適合されたプログラムコードを含む、コンピュータプログラム。
【請求項16】
ロード命令およびストア命令を実行するように構成された1つ以上のロードストアユニット(LSU)を含むプロセッサパイプラインを含む処理要素であって、当該1つ以上のLSUは、
前記処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することと、
前記遅延されたドレインサイクルの下で前記SRQをドレインすることと、
複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信することと、を実行するように構成され、当該TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であり、当該TLBI命令は、別の処理要素によってブロードキャストされ、
前記SRQの前記ドレインサイクルに前記遅延を適用することにより、当該SRQの当該ドレインサイクルと、前記TLBIに関連する無効化サイクルとの重なり量が増加する、処理要素。
【請求項17】
前記1つ以上のLSUは、
無効化される前記TLBエントリに関連する、前記SRQ内のSRQエントリを特定することと、
前記特定したSRQエントリを前記SRQからドレインすることと、
を実行するように構成される、請求項16に記載の処理要素。
【請求項18】
前記1つ以上のLSUは、前記SRQを完全にドレインしたことに応じて、前記インターコネクトを介して前記別の処理要素に確認応答信号を送信するように構成される、請求項16に記載の処理要素。
【請求項19】
前記遅延は、前記TLBI命令が前記インターコネクトを介して前記別の処理要素から前記処理要素に伝搬するのに要する時間に比例する、請求項16に記載の処理要素。
【請求項20】
前記遅延は、前記SRQ内の各エントリをドレインするのに要するサイクル数と当該SRQのサイズとの積に基づく、請求項16に記載の処理要素。
【請求項21】
前記遅延のサイクル数は、1と前記SRQのサイズの倍数との間の乱数に基づく、請求項16に記載の処理要素。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサにおける実行に関し、より具体的には、データ処理に関し、さらに具体的には、マルチコアプロセッサ、マイクロプロセッサ、またはマルチプロセッサシステムにおけるキャッシュコヒーレンスおよびページ変換の無効化に関する。
【背景技術】
【0002】
一例において、コンピューティングシステムは、物理メモリ内のアドレスの正確な位置を考慮する必要なく、仮想メモリを利用して当該物理メモリ内のアドレスにアクセスすることができる。仮想メモリアドレスと物理メモリアドレスとのマッピングを維持し、ページテーブルとして格納することができる。一例において、プログラムが仮想メモリアドレスにアクセスすると、ページテーブルを使用したアドレス変換(address translation)が実行され、当該アクセスされた仮想メモリアドレスによって参照される物理メモリアドレスを特定することができる。そして、この特定された物理メモリアドレスに格納されたデータを、当該物理メモリアドレスから読み出すことができる。
【0003】
複数の処理要素を含むマルチプロセッサシステム(例えば、複数のプロセッサを有するシステムや、複数のコアを有するプロセッサなど)では、すべてのコアがページテーブルを共有することができる。ページテーブル内の変換へのアクセス効率を改善するために、各処理要素(プロセッサまたはコア)は、それ自身の変換ルックアサイドバッファ(TLB:translation lookaside buffer)を記憶してもよい。各TLBは、ページテーブルの一部を表すキャッシュであってもよい。TLBは、ページテーブルからの複数のエントリを含んでもよく、各TLBエントリは、仮想アドレスから物理アドレスへのマッピングを含んでもよい。一例において、TLBエントリは、TLBによってカバーされる全使用可能メモリのうちの一部が、全使用可能メモリのうちの直近にアクセスされた部分、最も一般的にアクセスされた部分、または最もアクセスされる可能性が高い部分を含むように維持されてもよい。物理メモリに対してデータの出し入れ(例えば、新たなプロセスの起動やコンテキストスイッチなど)が行われると、TLB内のエントリを更新して新たなデータの存在を反映させる必要があるとともに、システムメモリから削除されたデータに関連するTLBエントリを無効化する必要がある。各コアは自身のTLBを保持しているため、キャッシュコヒーレンス(cache coherency)を維持するためにコア同士は通信する必要がある。
【発明の概要】
【0004】
本開示の要約は、ページ変換エントリを無効化し、キャッシュコヒーレンスを維持するコンピュータ処理システムおよび方法の理解に資するために提供されるものであり、本開示または本発明を限定する意図はない。本開示は、当業者に向けられたものである。本開示の様々な態様および特徴は、ある場合においては単独に、他の場合においては本開示の他の態様および特徴と組み合わせて、有利に使用してもよいことを理解されたい。したがって、異なる効果を達成するために、メモリシステム、アーキテクチャ構造、および動作方法に対して変形および変更を加えてもよい。
【0005】
いくつかの例において、データ処理システムにおいてページ変換のエントリを無効化するための方法が一般的に説明される。データ処理システムは、複数の処理要素を含んでもよい。方法は、処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することを含んでもよい。方法は、遅延されたドレインサイクルの下でSRQをドレインすることをさらに含んでもよい。方法は、複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信することをさらに含んでもよい。TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であってもよい。TLBI命令は、別の処理要素によってブロードキャストされてもよい。SRQのドレインサイクルに遅延を適用することにより、SRQのドレインサイクルと、TLBIに関連する無効化サイクルとの差を減少させてもよい。
【0006】
いくつかの例において、データ処理システムにおいてページ変換のエントリを無効化するように構成されたコンピューティングシステムが一般的に説明される。コンピューティングシステムは、第1の処理要素と、第2の処理要素と、第1の処理要素および第2の処理要素に接続されたインターコネクトと、を含んでもよい。第1の処理要素は、インターコネクト上で変換ルックアサイドバッファ無効化(TLBI)命令をブロードキャストするように構成されてもよい。TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であってもよい。第2の処理要素は、第2の処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用するように構成されてもよい。第2の処理要素は、遅延されたドレインサイクルの下でSRQをドレインするようにさらに構成されてもよい。第2の処理要素は、インターコネクトからTLBI命令を受信するようにさらに構成されてもよい。SRQのドレインサイクルに遅延を適用することにより、SRQのドレインサイクルと、TLBIに関連する無効化サイクルとの間の差が減少する。
【0007】
いくつかの例では、データ処理システムにおいてページ変換のエントリを無効化するように構成された処理要素が一般的に説明される。処理要素は、ロード命令およびストア命令を実行するように構成された1つ以上のロードストアユニット(LSU)を有するプロセッサパイプラインを含んでもよい。1つ以上のLSUは、処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用するように構成されてもよい。1つ以上のLSUは、遅延されたドレインサイクルの下でSRQをドレインするようにさらに構成されてもよい。1つ以上のLSUは、複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信するように構成されてもよい。TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であってもよい。TLBI命令は、別の処理要素によってブロードキャストされる。SRQのドレインサイクルに遅延を適用することにより、SRQのドレインサイクルと、TLBIに関連する無効化サイクルとの差が減少する。
【0008】
さらなる特徴ならびに様々な実施形態の構造および動作を、添付図面を参照して以下に詳細に説明する。
【図面の簡単な説明】
【0009】
データを処理するプロセッサ、プロセッサシステム、もしくは方法またはその組み合わせの様々な態様、特徴、および実施形態は、添付の図面と併せて読むことでより良好に理解されるものと考えられる。各実施形態は、データを管理および処理するプロセッサ、プロセッサシステム、ならびに方法の態様、特徴、もしくは各種実施形態またはその組み合わせを例示する目的で図面において提供されるが、特許請求の範囲は、これらの図示された正確なシステム、実施形態、方法、プロセス、もしくはデバイスまたはその組み合わせに限定されるべきではなく、これらの図示された特徴もしくはプロセスまたはその両方は、単独で使用されてもよいし、他の特徴もしくはプロセスまたはその両方と組み合わせて使用されてもよい。なお、参照番号が付された要素は、当該要素が導入された図面に従って番号付けされており、後続の図面においても基本的に(必ずしもそうではないが)当該番号によって参照される。そして、図中の同様の参照番号は、基本的に(必ずしもそうではないが)本発明の例示的な実施形態における同様の部分を表す。
図1】一実施形態に係る一般的なコンピューティングシステムまたはデータ処理システムを示す図である。
図2】一実施形態に係るプロセッサのブロック図である。
図3】一実施形態における、ページ変換の無効化に関連するストアコヒーレンス検証の実装形態例を示す図である。
図4】一実施形態における、ページ変換の無効化に関連するストアコヒーレンス検証の別の実装形態例を示す図である。
図5】一実施形態における、ページ変換の無効化に関連するストアコヒーレンス検証の別の実装形態例を示す図である。
図6】一実施形態に係る、ページ変換の無効化に関連するストアコヒーレンス検証のフローチャート例を示す図である。
【発明を実施するための形態】
【0010】
以下の説明は、本発明の一般的な原理を説明するために提供されるものであり、本明細書において特許請求される発明的概念を限定するものではない。以下の詳細な説明では、プロセッサ、そのアーキテクチャ構造、およびその動作方法の理解を提供するために、多数の詳細が記載されるが、プロセッサ、アーキテクチャ構造、および動作方法の種々多数の実施形態は、これらの特定の詳細なしに実施可能であることが当業者には理解されよう。そして、特許請求の範囲および本発明は、本明細書において具体的に説明され示される実施形態、サブアセンブリ、特徴、プロセス、方法、態様、特徴、または詳細に限定されるべきではない。さらに、本明細書に記載された特定の特徴は、様々な可能な組み合わせおよび置換の各々において、他の記載された特徴と組み合わせて使用することができる。
【0011】
本明細書において別段の定義がない限り、すべての用語は、当業者によって理解される意味、もしくは辞書、専門書などで定義される意味またはその両方、および本明細書から暗示される意味を含む、可能な限り広範な解釈が与えられるものとする。
【0012】
プロセッサの「ワークロード」という用語は、所与の期間中または特定の瞬間に当該プロセッサによって実行される命令の数を指す。
【0013】
プロセッサは、一連の小さなステップで命令を実行することによって、命令を処理することができる。場合によっては、プロセッサによって処理される命令の数を増加させる(したがって、プロセッサの速度を増加させる)ために、プロセッサがパイプライン化されてもよい。パイプライン化(pipelining)とは、プロセッサ内に個別のステージを設け、各ステージが、命令の実行に必要な小さなステップのうちの1つ以上を実行することを指す。一例では、(他の回路に加えて)パイプラインは、プロセッサコアと呼ばれるプロセッサの一部に配置されてもよい。プロセッサによっては、複数のプロセッサコアを有する場合があり(例えば、マルチプロセッサシステム)、場合によっては、各プロセッサコアが複数のパイプラインを有する場合もある。プロセッサコアが複数のパイプラインを有する場合、命令のグループ(発行グループ(issue group)と呼ばれる)が複数のパイプラインに並列に発行され、パイプラインの各々によって並列に実行されてもよい。パイプラインは、デコードステージ、ディスパッチステージ、実行ステージなどの複数のステージを含んでもよい。実行ステージは、命令によって指定される異なる種類の操作を処理する各実行ユニットを含んでもよい。例えば、ロードストアユニット(LSU:load store unit)は、例えばロード命令やストア命令を処理する実行ユニットである。
【0014】
一例において、実行されるストア命令の物理アドレスは、LSU内にストアリオーダキュー(SRQ:store reorder queue)のエントリとして格納されてもよい。一例において、SRQは、プロセッサコアのL1データキャッシュ内に存在してもよい。SRQのエントリは、コミットされたストア命令であってもよい。コミットされたストア命令は、プロセッサまたは処理要素によって完了されるストア命令であってもよく、完了は取り消す(undone)ことができず、また、SRQがメモリ(例えば、レベル2(L2)キャッシュ)にドレイン(drain)されるまで、他の処理要素は完了を把握しない。SRQまたはコミットされたストア命令をメモリ(例えば、レベル2(L2)キャッシュ)にドレインすると、コミットされたストア命令によって指定されたメモリアドレスに格納または更新される値は、マルチプロセッサシステム内のすべてのプロセッサまたは処理要素から見ることができる。例えば、L2キャッシュがすべての処理要素にアクセス可能なグローバルメモリである場合、SRQエントリをL2キャッシュにドレインすると、ドレインされたSRQエントリのストア命令によって更新される値は、すべての処理要素から見ることができる。1つ以上の例示的な実施形態において、L2キャッシュは、処理要素に対してローカルなメモリであってもよく、レベル3(L3)キャッシュなどのより高レベルのキャッシュは、複数の処理要素にアクセス可能なグローバルメモリであってもよい。SRQエントリは、ローカルメモリのSRQからグローバルメモリにドレインすることができる。
【0015】
一例において、仮想アドレスと物理アドレスとのマッピングは、特定のイベントに応じて無効になる場合がある。例えば、物理メモリに対してデータの出し入れ(例えば、新たなプロセスの起動やコンテキストスイッチなど)が行われると、TLB内のエントリを更新して新たなデータの存在を反映させる必要があり、システムメモリから削除されたデータに関連するTLBエントリを無効化する必要がある。一例では、TLBエントリを無効化するための命令は、TLB無効化命令(TLBI:TLB invalidate instruction)と呼ばれることがある。仮想アドレスと物理アドレスとのマッピングが無効になると、この無効化されるマッピングに対応するTLBエントリを削除するために、TLBI命令がすべてのコアに対して発行される。一例では、1つのコアに対して、マルチプロセッサシステム内の他のコアにTLBI命令をブロードキャストするタスクを割り当ててもよい。
【0016】
一例において、第1のプロセッサは、自身のTLB内の特定のTLBエントリを無効化してもよい。この特定のTLBエントリは、特定の仮想アドレスを特定の物理アドレスにマッピングするものであってもよい。第1のプロセッサは、この特定の物理アドレスに関連する任意のプロセスもしくは命令またはその両方(例えば、特定の物理アドレスに書き込むコミットされたストア命令)をストールさせてもよい。そして、マルチプロセッサシステム内のすべてのプロセッサがアクセス可能なインターコネクト上で、TLBI命令をブロードキャストしてもよい。マルチプロセッサシステムのうちの第2のプロセッサは、インターコネクトからTLBI命令を受信し、これに応じて、特定の物理アドレスに関連するSRQエントリをメモリにドレインしてもよい。ドレイン後、第2のプロセッサは、特定の物理アドレスを含む自身のTLB内のエントリを無効化してもよい。無効化に応じて、第2のプロセッサは、第2のプロセッサがTLBの無効化を完了したことを示す確認応答(acknowledgement)を第1のプロセッサに返信してもよい。第1のプロセッサは、自身のTLB内の特定のTLBエントリを無効化する前に、第2のプロセッサ、およびマルチプロセッサシステム内の他のすべてのプロセッサからの確認応答を待ってもよい。
【0017】
しかし、一例において、TLBI命令の伝搬時間は、TLBI命令が第1の処理要素からインターコネクトに伝達し、インターコネクト内を伝達し、インターコネクトから第2の処理要素に伝達するのに要する時間を含む場合がある。この伝播時間中、第2のプロセッサは、自身の通常のSRQドレイン速度またはドレインサイクルで自身のSRQをドレインしている可能性がある。TLBI命令をブロードキャストした第1の処理要素に対して第2の処理要素が確認応答を返信する前に、TLBI命令の特定の物理アドレスに関連するSRQエントリが第2の処理要素によってドレインされない場合、問題が発生し得る。例えば、第2の処理要素によるSRQドレインの完了を検出するために、SRQロジックまたはアルゴリズムが使用される場合がある。SRQロジックが破損し、SRQが完全にドレインされたかどうかについて誤検出している場合、第2の処理要素がSRQを完全にドレインする前に確認応答を送信する可能性がある。第2の処理要素が確認応答を送信する前にSRQを完全にドレインしなかった結果、ブロードキャストされたTLBI命令に従ってすべての処理要素が無効化を完了した際に、TLBI命令によって示される特定の物理アドレスの値が最新でない可能性がある。例えば、すべての処理要素がそれぞれの無効化を完了した後、処理要素は特定の物理アドレスから古い値を読み出している可能性がある。したがって、TLBエントリの無効化(またはページ変換)、SRQ内のコミットメント、およびドレインとの間に競合状態(conflicting condition)が存在し、この競合状態が、マルチプロセッサシステム内のすべての処理要素に対するストア命令結果の可視性に影響を与える可能性がある。
【0018】
本明細書で説明する方法およびシステムは、プロセッサのSRQロジックが正しく機能しているかどうかをテストするために、マルチプロセッサシステム内のプロセッサのTLBエントリ無効化(例えば、TLBI)サイクルとドレインサイクルとの間の競合状態のウィンドウを大きくすることができる。この競合状態のウィンドウを大きくすることで、SRQドレインイベント(またはSRQサイクル)がTLBI無効化サイクルと重なる可能性を高くすることができる。一例として、プロセッサのSRQのドレインサイクルに遅延を適用して、SRQのドレインを遅くすることができる。従来、ドレインサイクルは無効化サイクルよりも短い場合がある(例えば、SRQドレインはTLBI命令の伝搬よりも速い場合がある)。さらに、ストア命令は(例えば、他のプロセッサコアからの他のスレッドや結果に依存するため)可変である場合があるため、ストア命令の処理時間は可変である場合があることから、ドレインサイクルが予測不可能になる可能性がある。SRQドレインサイクルに遅延を適用することで、プロセッサはSRQロジックの潜在的な問題や破損を特定する機会および時間を増やすことができる。例えば、遅延がない場合、プロセッサのSRQは比較的速くドレインする可能性があり、プロセッサがインターコネクトからTLBI命令を受信したときにSRQが空である可能性が増す。SRQが空であることをSRQロジックが示しているため、プロセッサは、SRQが本当に空であるかどうかを確認せずに確認応答を送信する可能性があり、SRQロジックをテストすることができない。ドレインサイクルを遅延させることにより時間を追加することで、プロセッサがTLBI命令を受信したときにSRQが空でない可能性が増す。これにより、キャッシュコヒーレンスを検証するために、SRQロジックが正しく機能しているかどうかを判定するテストが可能になる。SRQが空でない場合、プロセッサはSRQロジックによってトリガされ、確認応答を送信する前にSRQをチェックし、SRQをドレインする。SRQロジックによってプロセッサが正常にトリガされ、プロセッサが確認応答の送信前にSRQをドレインした場合、プロセッサのキャッシュコヒーレンスは成功とみなすことができる。SRQロジックによってプロセッサが正常にトリガされず、プロセッサが確認応答の送信前にSRQをドレインしなかった場合、プロセッサのキャッシュコヒーレンスは失敗とみなすことができる。
【0019】
図1は、情報ハンドリングシステム101を示す図である。情報ハンドリングシステム101は、本明細書で説明するコンピューティング動作を実行可能なコンピュータシステムの簡単な例とすることができる。コンピュータシステム101は、ホストバス102に結合された1つ以上のプロセッサ100を含むことができる。プロセッサ100は、例えば、市販のマイクロプロセッサ、カスタムプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ディスクリートロジックなど、または一般に命令を実行するための任意のデバイスを含むことができる。一例では、プロセッサ101は、2つ以上のプロセッサコアを含むマルチコアプロセッサであってもよい。レベル2(L2)キャッシュメモリ104は、ホストバス102に結合されてもよい。I/Oブリッジ(例えば、ホスト-PCIブリッジ)106は、メインメモリ108に結合されてもよい。I/Oブリッジは、キャッシュメモリおよびメインメモリ制御機能を含んでもよく、PCIバス110、プロセッサ100、L2キャッシュ104、メインメモリ108、およびホストバス102間の転送を処理するバス制御を提供してもよい。メインメモリ108は、ホストバス102と同様に、I/Oブリッジ106に結合されてもよい。ランダムアクセスメモリ(RAM)などの他のタイプのメモリ、もしくは様々な揮発性および/もしくは不揮発性メモリデバイス、またはその組み合わせが、同様にホストバス102もしくはI/Oブリッジ106またはその両方に結合されてもよい。例えば、ホストバス102に結合されるメモリデバイスは、電気的消去可能プログラマブルROM(EEPROM)、フラッシュプログラマブルROM(PROM)、バッテリバックアップRAM、ハードディスクドライブなどを含むことができる。ホストバス102に結合される不揮発性メモリデバイスは、実行可能なファームウェア、および、本明細書に記載する方法などの特定の機能をプロセッサ100に実行させるために実行可能なプログラミング命令を含む任意の不揮発性データを保持するために使用されてもよい。I/Oコンポーネント130など、プロセッサ100によってのみ使用されるデバイスは、PCIバス110に結合されてもよい。サービスプロセッサインタフェースおよびISAアクセスパススルー112は、PCIバス110とPCIバス114との間のインタフェースを提供してもよい。このようにして、PCIバス114は、PCIバス110から隔離されてもよい。フラッシュメモリ118などのデバイスは、PCIバス114に結合される。一実装形態において、フラッシュメモリ118は、種々の低レベルのシステム機能およびシステムブート機能のために必要なプロセッサ実行可能コードを組み込んだBIOSコードを含むことができる。
【0020】
PCIバス114は、例えばフラッシュメモリ118など、ホストプロセッサ100およびサービスプロセッサ116によって共有される種々のデバイス用のインタフェースを提供してもよい。PCI-to-ISAブリッジ135は、PCIバス114とISAバス140との間の転送を処理するバス制御、ユニバーサルシリアルバス(USB)機能145、および電力管理機能155を提供するとともに、リアルタイム・クロック(RTC)、DMA制御、割り込みサポート、およびシステム管理バスサポートなどの図示しない他の機能要素を含むことができる。不揮発性RAM120は、ISAバス140に接続されてもよい。サービスプロセッサ116は、初期化ステップ中にプロセッサ100と通信するためのバス122(例えば、JTAGもしくはI2Cバスまたはその両方)を含んでもよい。バス122はまた、プロセッサ、サービスプロセッサ、L2キャッシュ、Host-to-PCIブリッジ、およびメインメモリ108間の通信経路を提供するL2キャッシュ104、I/Oブリッジ106、およびメインメモリ108に結合されてもよい。サービスプロセッサ116はまた、情報ハンドリングデバイス101の電源を切るためのシステム電源リソースにアクセスすることができる。
【0021】
周辺デバイスおよび入出力(I/O)デバイスは、ISAバス140に結合された様々なインタフェース(例えば、パラレルインタフェース162、シリアルインタフェース164、キーボードインタフェース168、マウスインタフェース170)に接続することができる。あるいは、ISAバス140に接続されたスーパーI/Oコントローラ(不図示)によって、多くのI/Oデバイスを収容することができる。プロセッサ100が外部デバイスと通信できるようにする他のインタフェースとしては、特に限定されないが、RS-232、USB(ユニバーサルシリアルバス)、小型コンピュータシステムインタフェース(SCSI)、RS-309などのシリアルインタフェース、またはWi-Fi(登録商標)、Bluetooth(登録商標)、近距離無線通信(NFC)などの無線通信インタフェースが挙げられる。
【0022】
一例では、コンピュータシステム101を別のコンピュータシステムに接続して、ネットワーク経由でファイルをコピーするために、I/Oコンポーネント130は、PCIバス110に結合されたLANカードを含んでもよい。同様に、コンピュータシステム101を、電話回線接続を使用してISPに接続し、インターネットに接続するために、モデム175がシリアルポート164およびPCI-to-ISAブリッジ135に接続される。
図1は、プロセッサ100を使用する情報ハンドリングシステムを示しているが、情報ハンドリングシステムは、多くの形態をとり得る。例えば、情報ハンドリングシステム101は、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、または他のフォームファクタのコンピュータもしくはデータ処理システムの形態であってもよい。情報ハンドリングシステム101はまた、パーソナルデジタルアシスタント(PDA)、ゲーミングデバイス、ATM機、携帯電話デバイス、通信デバイス、またはプロセッサおよびメモリを含む他のデバイスなどの他のフォームファクタを有してもよい。
【0023】
図2は、一実施形態に係るプロセッサ200のブロック図である。プロセッサ200は、少なくとも、メモリ202、命令キャッシュ204、命令フェッチユニット206、分岐予測器208、およびプロセッサパイプラインまたは処理パイプライン210を含んでもよい。プロセッサ200は、コンピュータプロセッサ内に含まれてもよいし、その他の態様でコンピュータシステム内に分散されてもよい。命令およびデータは、メモリ202に格納することができ、命令キャッシュ204は、メモリ202内の命令にアクセスするとともに、フェッチされる命令を格納してもよい。メモリ202は、キャッシュメモリなどの任意のタイプの揮発性メモリまたは不揮発性メモリを含んでもよい。メモリ202および命令キャッシュ204は、複数のキャッシュレベルを含むことができる。データキャッシュ(不図示)がプロセッサ200に含まれてもよい。一実施形態において、命令キャッシュ204は、8ウェイセットアソシアティブ構造(8-way set associative structure)で命令を提供するように構成されてもよい。あるいは、任意の他の所望の構成およびサイズが採用されてもよい。例えば、命令キャッシュ204は、フルアソシアティブ(fully associative)、セットアソシアティブ、またはダイレクトマップ構成として実装されてもよい。
【0024】
図2では、命令フェッチユニット206および処理パイプライン210の簡単な例が示されている。様々な実施形態において、プロセッサ200は、複数の処理パイプライン210および命令フェッチユニット206を含んでもよい。一実施形態において、処理パイプライン210は、デコードユニット20、発行ユニット22、実行ユニット24、およびライトバックロジック26を含む。いくつかの例では、命令フェッチユニット206もしくは分岐予測器208またはその両方も、処理パイプライン210の一部であってもよい。処理パイプライン210はまた、エラーチェックおよび処理ロジック、リオーダバッファ、処理パイプライン210を通る1つ以上の並列パス、ならびに当技術分野において現在既知であるかまたは今後既知となる他の特徴など、他の特徴を含んでもよい。図2では、プロセッサ200を通る順方向パスが描かれているが、プロセッサ200の要素間に他のフィードバックパスおよび信号パスが含まれてもよい。
【0025】
分岐命令(または「分岐(branch)」)は、プログラム内で命令に遭遇するたびに分岐が行われることを意味する無条件(unconditional)分岐と、条件に応じて分岐が行われるかまたは行われないことを意味する条件付き(conditional)分岐とがある。プロセッサ200は、条件が満たされた場合に、コンピュータプログラムがある命令からターゲット命令に分岐する(それによって、中間命令がある場合はそれをスキップする)ことを可能にする条件付き分岐命令を提供することができる。条件が満たされない場合、分岐命令の後の次の命令は、ターゲット命令に分岐することなく実行されてもよい。多くの場合、条件付き分岐に続いて実行される命令は、分岐が依存する条件が解決されるまで確実には分からない。分岐予測器208は、分岐命令が実行される前に、プログラム内の条件付き分岐命令の結果の予測を試みることができる。分岐が誤って予測された場合、プログラム内で分岐に遭遇した時点以降のすべての投機的作業は破棄されなければならない。例えば、条件付き分岐命令に遭遇した場合、プロセッサ200は、分岐条件の結果が分かった後にどの命令が実行されるかを予測してもよい。そして、条件付き分岐命令が発行されたときに処理パイプライン210をストールさせる代わりに、プロセッサは、予測された次の命令から命令発行を続けることができる。
【0026】
条件付き分岐では、前の命令の結果に応じて、制御をターゲットアドレスに移すことができる。条件付き分岐は、分岐の実行時に当該前の命令の結果が既知であるかどうかに応じて、解決済み(resolved)分岐または未解決(unresolved)分岐のいずれかになる。分岐が解決済みであれば、分岐が実行されるかどうかが既知となる。条件付き分岐が実行されない場合、分岐命令の直後の逐次命令ストリーム(sequential instruction stream)が実行される。条件付き分岐が実行される場合、ターゲットアドレスから始まる命令ストリームが実行される。
【0027】
命令フェッチユニット206は、デコードユニット20がさらなる処理を行うために、命令アドレスに従って命令キャッシュ204から命令をフェッチする。デコードユニット20は命令をデコードし、デコードされた命令、命令の一部、または他のデコードされたデータを発行ユニット22に渡す。デコードユニット20はまた、分岐予測器208によって予測されなかった分岐命令を検出してもよい。発行ユニット22は、命令または他のデータを分析し、分析に基づいて、デコードされた命令、命令の一部、または他のデータを実行ユニット24内の1つ以上の実行ユニットに送信する。実行ユニット24は、命令を実行し、予測された分岐方向が間違っているかどうかを判断する。分岐方向は、「成立(taken)」の場合がある。この場合、後続の命令は、分岐命令のターゲットアドレスからフェッチされる。逆に、分岐方向は「不成立(not taken)」の場合もある。この場合、後続の命令は、分岐命令に連続するメモリ位置からフェッチされる。誤予測された分岐命令が検出された場合、この誤予測された分岐に後続する命令を、プロセッサ200の様々なユニットから破棄することができる。
【0028】
実行ユニット24は、固定小数点実行ユニット、浮動小数点実行ユニット、ロード/ストア実行ユニット(またはLSUと表記されるロードストアユニット)、およびベクトルマルチメディア実行ユニットなどの複数の実行ユニットを含んでもよい。また、実行ユニット24は、マルチターゲット分岐のターゲットを予測するための専用の分岐予測器を含んでもよい。ライトバックロジック26は、命令実行の結果を宛先リソース(destination resource)220に書き戻す。宛先リソース220は、レジスタ、キャッシュメモリ、他のメモリ、他のデバイスと通信するためのI/O回路、他の処理回路、または実行された命令もしくはデータ用の他の任意のタイプの宛先を含む、任意のタイプのリソースとすることができる。また、プロセッサパイプラインユニットのうちの1つ以上は、条件付き分岐命令の実行に関する情報を分岐予測器208に提供してもよい。
【0029】
一例では、実行スライス(execution slice)は、プロセッサコア内で直列に接続されたデータ処理回路またはハードウェアユニットのセットと呼ばれる場合がある。実行スライスは、パイプライン、またはパイプライン的な構造であってもよい。複数の実行スライスが、マルチプロセッサシステムにおける複数のプロセッサコアのうちの一のプロセッサコア内での同時マルチスレッディング(simultaneous multi-threading)の一部として使用されてもよい。最新のコンピュータアーキテクチャでは、LSU、ベクトルスカラユニット(VSU)、算術論理ユニット(ALU)など、複数の実行ユニットが実行スライス内に存在してもよい。LSUは通常、各々がストア命令を追跡し、ストアデータを保持するためのエントリを有する1つ以上のストアキューと、各々がロード命令を追跡し、ロードデータを保持するためのエントリを有する1つ以上のロードキューとを含む。
【0030】
一実施形態において、プロセッサ200は、条件付き分岐命令に後続する命令を投機的にフェッチするために、分岐予測を実行してもよい。分岐予測器208は、このような分岐予測動作を実行するために含まれる。一実施形態において、命令キャッシュ204は分岐予測器208に対して、フェッチされる命令アドレスの指示を提供してもよい。これにより、分岐予測器208は、分岐予測を形成するためにどの分岐ターゲットアドレスを選択するかを決定してもよい。分岐予測器208は、予測された分岐方向が正しいか正しくないかを判断するために、例えば、実行ユニット24、デコードユニット20、リオーダバッファなどの処理パイプライン210の様々な部分に結合されてもよい。
【0031】
マルチスレッディングを容易にするために、全体的なプロセッサパイプラインのある時点において何らかの方法で、異なるスレッドからの命令をインターリーブ(interleave)することができる。異なるスレッドからの命令をインターリーブする技術の一例では、インターリーブ規則に基づいてサイクルごとに命令をインターリーブする。例えば、異なるスレッドからの命令は、プロセッサが第1のクロックサイクルで第1のスレッドからの命令を実行し、次に第2のクロックサイクルで第2のスレッドからの命令を実行し、その後に第3のクロックサイクルで第1のスレッドからの別の命令を実行する、などのようにインターリーブすることができる。インターリーブ技術の中には、各スレッドに優先度を割り当て、割り当てられた優先度に基づいて異なるスレッドからの命令をインターリーブするものがある。例えば、第1のスレッドに第2のスレッドよりも高い優先度が割り当てられた場合、インターリーブ規則では、高い優先度が割り当てられた第1のスレッドからの命令が、低い優先度が割り当てられた第2のスレッドからの命令よりも2倍多くインターリーブストリームに含まれることを要求してもよい。同じ優先度のスレッドを解決するために設計された規則や、比較的重要度の低いスレッドからの命令を定期的にインターリーブする規則(例えば、優先度の低いスレッドからの命令をXサイクルごとに実行する)など、様々な異なるインターリーブ規則を設定することができる。
【0032】
優先度に基づくスレッドインターリーブによって、割り当てられた優先度に基づいてプロセッサリソースを割り当てることができる。しかし、スレッドの優先度は、スレッドがプロセッサパイプラインを進む能力に対して影響を与える可能性のあるプロセッサイベント(分岐予測ミスなど)を考慮しない場合がある。このようなイベントは、マルチスレッドプロセッサにおいて異なる命令スレッド間で割り当てられるプロセッサリソースの効率に影響を与える場合がある。例えば、パイプラインのデコード、リネーム、および命令キューステージにおいて、より少ない命令を有するスレッドにより高い優先度を与える優先度ベースの技術は、パイプラインにおける分岐予測ミス(例えば、誤って投機された命令)に起因する誤ったパス命令の数を低減する上では非効率となり得る。これらの誤ったパス命令は、命令キューや他の機能ユニットなど、プロセッサのフェッチ帯域幅や他の貴重なリソースを占有する可能性がある。
【0033】
プロセッサ200の効率もしくは性能またはその両方は、処理パイプライン210における誤ったパス命令の数を低減することによって改善することができる。例えば、予測ミス率がより高いスレッドを処理パイプライン210において遅延させる(例えば、命令フェッチユニットによってより遅くフェッチさせる)ことができ、これにより、処理パイプライン210における誤ったパス命令の数を低減することができる。さらに、最初の未完成または未解決の分岐命令に続く複数の命令について処理パイプライン210を追跡して、潜在的に誤ったパス命令が過剰に実行されるのを防止することができる。
【0034】
一実施形態において、プロセッサ200は、マルチスレッディングを実行するように構成されたSMTプロセッサとすることができる。プロセッサ200は、1つ以上の命令キュー212を使用して、1つ以上の異なるスレッドから命令を収集することができる。命令フェッチユニット206は、命令キャッシュ204に格納された命令をフェッチし、これらのフェッチした命令で命令キュー212を満たすことができる。プロセッサ200の性能は、命令フェッチユニット206がこれらの命令キュー212をどのように満たすかに依存し得る。命令フェッチユニット206は、異なるスレッドの優先度を割り当てて管理し、これらの優先度に基づいてどの命令もしくはどのスレッドまたはその両方をフェッチするかを決定し、かつこれらのフェッチした命令を命令キュー212に送信するように構成することができる。プロセッサ200は、命令キュー212内の命令をスケジューリングして処理パイプライン210に分配するように構成されたスレッドスケジューラ214をさらに含むことができる。一例では、プロセッサ200は、2つ以上のプロセッサコアを含むマルチコアプロセッサであってもよく、各コアは、それぞれのスレッドを処理するように構成されてもよい。
【0035】
一例では、実行ユニット24がロードストアユニット(LSU)228である場合に、回路230をLSU228に埋め込むかまたは統合して、SRQドレインの遅延を実装してもよい。SRQドレインの遅延は、例えば、メモリ(例えば、宛先リソース220の一部であってもよいL2キャッシュ)に対するストアリオーダキュー(SRQ)229(またはストアキュー)のドレインサイクルを遅延させるか、または遅くすることであってもよい。一例において、回路230は、プロセッサ200によって活性化(例えば、スイッチオン)または非活性化(例えば、スイッチオフ)されてもよい。回路230の活性化および非活性化は、プロセッサ200もしくはマルチプロセッサシステム内の他のプロセッサもしくはプロセッサコアまたはその組み合わせの動作状態に基づいてもよい。例えば、プロセッサ200は、回路230を活性化して、LSU228内のSRQ229のドレインサイクルに遅延を適用してもよい。別の例において、プロセッサ200は、回路230を非活性化して、LSU228内のSRQ229のドレインサイクルへの遅延の適用を防止してもよい。SRQ229のドレインサイクルに遅延を適用することにより、プロセッサ200は、プロセッサ102のキャッシュコヒーレンス(例えば、ロードコヒーレンスおよびストアコヒーレンスを含む)が成功であるか失敗であるかを検証するために追加の時間を使用することができる。例えば、この追加の時間により、コミットされたストア命令がSRQ229に残っている可能性が増す。これにより、プロセッサ102は、空のSRQを検出するとともに確認応答信号の送信をトリガするために使用されているSRQロジックをテストすることができる。TLBI命令が到着したときにSRQが常に空であれば、SRQロジックをテストすることはできない。TLBI命令が受信され、SRQロジックによって処理要素がトリガされ、確認応答信号の送信前にSRQをドレインした場合、プロセッサ102のキャッシュコヒーレンスは成功とみなすことができる。TLBI命令が受信されたが、SRQロジックがSRQのドレインをトリガせず、処理要素がSRQのドレインを行うことなく確認応答信号を送信した場合、プロセッサ102のキャッシュコヒーレンスは失敗とみなすことができる。
【0036】
図3は、一実施形態における、ページ変換の無効化に関連するストアコヒーレンスの検証の実装形態例を示す図である。一例において、プロセッサ200(図1および2参照)は、処理要素310、320、340(コア0、コア1、コアNとラベル付けされている)などのN個の処理要素を含んでもよい。なお、図3には3つのプロセッサコアが示されているが、プロセッサ200は追加のプロセッサコアを有してもよい。インターコネクト301(例えば、バス、メッシュネットワーク、クロスバーなど)は、コア0、コア1、およびコアN、ならびにプロセッサ200の他のコアを接続してもよい。コア0は、ロードストアユニット(LSU)312、レベル2(L2)キャッシュ316、およびTLB318を含んでもよい。LSU312は、SRQ314を含んでもよい。TLB318は、コア0に割り当てられた仮想メモリアドレスと物理メモリアドレスとの間のマッピングを示す複数のエントリを含んでもよい。例えば、TLB318は、M1、M2、M3、M4とラベル付けされたエントリを含んでもよい。コア0は、ロードストアユニット(LSU)312、レベル2(L2)キャッシュ316、およびTLB318を含んでもよい。LSU312はSRQ314を含んでもよい。コア1は、LSU322、L2キャッシュ326、およびTLB328を含んでもよい。LSU322は、SRQ324を含んでもよい。TLB328は、コア1に割り当てられた仮想メモリアドレスと物理メモリアドレスとの間のマッピングを示す複数のエントリを含んでもよい。コアNは、LSU342、L2キャッシュ346、およびTLB348を含んでもよい。LSU342は、SRQ344を含んでもよい。TLB348は、コアNに割り当てられた仮想メモリアドレスと物理メモリアドレスとの間のマッピングを示す複数のエントリを含んでもよい。1つ以上の実施形態例において、L2キャッシュ316、326、346は、コア0、コア1、コアNによってアクセス可能なグローバルL2キャッシュの個々のメモリバンクであってもよい。
【0037】
一例において、コンテキストスイッチなどのイベントに応じて、コア0は、TLB318内のエントリを無効化し、変換ルックアサイドバッファ無効化(TLBI)命令302をインターコネクト301上にブロードキャストしてもよい。TLBI命令302は、他の処理要素に対して、特定の仮想アドレス(例えば、P3)もしくは特定の物理アドレス(例えば、F4)またはその両方に対応するそれぞれのTLB内の1つ以上のTLBエントリを無効化させる命令であってもよい。例えば、TLBI命令302は、コア0以外の処理要素に対して、仮想アドレスを物理アドレスF4にマッピングするTLBエントリを無効化させる命令であってもよい。
【0038】
TLBI命令302は、コア0からインターコネクト301に伝搬し、次にインターコネクト301内で伝搬し、次にインターコネクト301からコア1およびコアNなどの処理要素に伝搬してもよい。したがって、TLBI命令302の伝搬時間は、TLBI命令302がコア0からインターコネクト301を介して受信コア(例えば、コア1、コアN)に伝搬するのに要する時間の合計であってもよい。なお、TLBI命令302の伝搬時間は、受信コアとTLBI命令302を発行したコアとの間の距離、および様々なプロセス変動、コアのハードウェア能力、インターコネクトのトラフィックなどの他の要因に基づいて、異なる処理要素間で異なる場合がある。なお、図3ではコア0がTLBI命令を発行する処理要素として示されているが、コア1やコアNなどの他の処理要素も、それぞれのTLBにおけるTLBエントリ無効化に関連するTLBI命令を発行するように構成されてもよい。
【0039】
コア1は、インターコネクト301からTLBI命令302を受信し、これに応じて、SRQ324、またはLSU322のSRQ324に残っているエントリをドレインしてもよい。ここで、ドレインされるSRQエントリは、コミットされたストア命令であってもよい。SRQ324を完全にドレインしたことに応じて、コア1はコア0に確認応答信号(ACK)304を送信し、SRQ324がドレインされたことをコア0に通知してもよい。ACK304を送信したことに応じて、コア1は、TLBI命令302で示された仮想アドレスP3もしくは仮想アドレスF4またはその両方に関連するTLB328内のTLBエントリを無効化してもよい。例えば、コア1は、仮想アドレスP3を仮想アドレスF4にマッピングするTLB328内のエントリM2を無効化してもよい。コア0は、コア1からのACK304および他のすべてのコア(例えば、コアNからのACK306)から受信したことに応じて、仮想アドレスP3もしくは仮想アドレスF4またはその両方に関連するTLB318内のTLBエントリを無効化してもよい。一例において、コア0は、通常動作を再開する前に、すべてのコアからのACK信号を待ってもよい。例えば、すべてのコアからACK信号を受信したことに応じて、コア0は、ページP3を別の物理アドレスにマッピングし、新たなマッピングでTLB318を更新してもよい。
【0040】
一例において、コア1は、ロジック327を実行してSRQ324が空であるかどうかを検出してもよい。そして、SRQ324が空であることに応じて、ACK304をコア0に送信するアクションをトリガしてもよい。しかし、ロジック327が破損している場合、SRQ324が空でないにもかかわらず、SRQ324が空であるとコア1が誤って検出する可能性がある。SRQが空ではないにもかかわらず、コア1がACK304をコア0に送信すると、コミットされたストア命令がSRQ324から適切にドレインされない場合に問題が発生し得る。例えば、F4にストアするコミットされたストア命令がSRQ324に残っているが、ロジック327の破損により、このコミットされたストア命令がSRQ324に存在することを検出できない場合、コア1はACK304をコア0に送信し、エントリM2を無効化する場合がある。このエラーの結果、コア0、およびコア1以外のコアは、SRQ324に残っているコミットされたストア命令がドレインされなかったため、F4で更新される値を確認できない場合がある。
【0041】
SRQを適切にドレインできない可能性を低減するために、コア0、コア1、およびコアNは、それぞれ、SRQ314、324、344のドレインサイクルに遅延330を適用するように構成可能な遅延回路(例えば、図2に示す回路230)を実装してもよい。一例において、遅延回路はLSU312、322、342に統合されてもよい。遅延330は、SRQ(例えば、SRQ314、324、344)のデフォルトのドレインサイクルに追加される特定のサイクル数であってもよく、これにより、SRQ314、324、344は、遅延330の適用に応じてより遅い速度でドレインされてもよい。SRQドレインサイクルを遅くすることにより、TLBI命令の受信時にSRQエントリがSRQに残っている可能性を増すことができる。言い換えると、遅延330は、受信側の処理要素(例えば、TLBI命令302を受信したコア1またはコアN)がTLBI命令302に関連するSRQエントリを特定し、状況を改善するために適切なアクションを実行するための追加の時間を提供することができる。例えば、コア1は、SRQ324内のF4に関連するSRQエントリを特定し、この特定したエントリをSRQ324からL2キャッシュ326にドレインすることができる。SRQ324をドレイン(例えば、SRQ324が空になるまでドレインする)したことに応じて、コア1は、TLB328内のTLBI命令302に関連するTLBエントリを無効化してもよい。
【0042】
図4は、一実施形態における、ページ変換の無効化に関連するストアコヒーレンス検証の別の実装形態例を示す図である。図4に示す例において、シナリオ401は、コア1が遅延330を適用せずにTLBI命令302を処理することを示しており、シナリオ402は、コア1が遅延330を適用してTLBI命令302を処理することを示している。シナリオ401では、コア1がTLBI命令302をインターコネクトから受信したとき、SRQ324は空であり、SRQエントリE1、E2、E3は、例えばL2キャッシュ326に既にドレインされている。SRQエントリE3がTLBI命令302に関連するものであり(例えば、物理アドレスF4への書き込み)、コア1がTLBI命令302を受信する前にSRQエントリE3がドレインされた場合、E3は適切にドレインされたことになる。しかし、シナリオ401においてロジック327(図3参照)が破損している場合、SRQ324が空であることは正しくない可能性がある。SRQエントリE3がSRQ324内に存在するにもかかわらず、SRQ324が空であるとコア1が誤って判断した場合、コア1がACK304をインターコネクト301に送信する前にエントリE3がドレインされない可能性がある。
【0043】
シナリオ402では、コア1がTLBI命令302をインターコネクトから受信したとき、SRQ324のドレインサイクルに遅延330が適用された結果、SRQ324は空ではなく、SRQエントリE3がSRQ324内に残っている。コア1は、SRQエントリE3がTLBI命令302に関連すると判断し、ACK304をインターコネクト301に送信する前に、SRQエントリE3をSRQ324からドレインしてもよい。遅延330を適用することにより、SRQ324のドレインを遅くするとともに、コア1がSRQ324内のSRQエントリを特定するための追加の時間を提供することができる。一例として、シナリオ401では、コア1は、SRQ325が空であることを示すロジック327に依存し、SRQ324内にエントリが残っているかどうかを確認せずに、ACK304をインターコネクト301に送信する場合がある。SRQドレインサイクルを遅延させることにより、SRQ324が空である可能性が低くなる。これにより、ACK304を送信する前にSRQ324をドレインするように、コア1をトリガすることができる。
【0044】
一例において、遅延330は、SRQ324のデフォルトのドレインサイクルに加算される特定のサイクル数であってもよい。そして、遅延330のサイクル数は、マルチプロセッサシステム内のすべてのコア間でTLBI命令302を伝搬するのに必要な時間に比例してもよい。一例において、遅延330のサイクル数は、SRQ324の各エントリをドレインするのに要するサイクル数と、SRQ324のサイズ(例えば、SRQ324における許容エントリ数または最大エントリ数)との積であってもよい。例えば、SRQ324の各エントリをドレインするのに要するデフォルトのサイクル数は2(例えば、2サイクルごとに1つのSRQエントリがドレインされる)であってもよく、SRQ324における許容エントリ数は64であってもよい。したがって、遅延330のサイクル数は64の任意の倍数であってもよい。別の例において、回路230(図2参照)は、1と、SRQ324における許可エントリ数の倍数との間の乱数を生成する乱数生成器を含んでもよい。生成された乱数は、遅延330のサイクル数もしくは各SRQエントリに対する遅延サイクル数またはその両方として設定されてもよい。例えば、第1のSRQエントリに適用される遅延330は第1のサイクル数であってもよく、第2のSRQエントリに適用される遅延330は第2のサイクル数であってもよい。一例において、回路230は、乱数生成を実装可能な線形フィードバックシフトレジスタ(LFSR:linear feedback shift register)を含んでもよい。遅延330を定義するサイクル数は任意とすることができ、プロセッサ102(図2参照)の所望の実装形態に基づいて構成またはプログラムすることができる。
【0045】
図5は、一実施形態における、ページ変換の無効化に関連するストアコヒーレンス検証の別の実装形態例を示す図である。図5に示す例では、TLBIサイクル500は、時間T0からT3に及ぶ場合がある。TLBIサイクル500は、第1の処理要素から第2の処理要素へのTLBI命令の伝搬時間を含む場合がある。SRQドレインサイクル502は、時間T0から時間T1に及ぶ場合がある。SRQドレインサイクルは、TLBサイクルよりも小さい場合がある。これにより、TLBI命令の伝搬よりも速いペースでSRQがドレインされる場合がある。したがって、SRQがTLBI命令の伝搬よりも速くドレインされると、TLBI命令が処理要素に到着したときにSRQが空である可能性が高まる。TLBIが到着したときにSRQが空である場合、SRQが既に空である(例えば、検出すべき空でない(non-empty)SRQがない)ため、SRQが空であるかどうかを検出するために実装されているSRQロジックをテストすることができない。
【0046】
SRQドレインサイクル502に遅延330を適用すると、時間T0からT2に及ぶ遅延されたSRQドレインサイクルの下で、SRQをより遅いペースでドレインすることができる。したがって、TLBIサイクル500とSRQドレインサイクル502との差を減少させることができる。言い換えれば、SRQドレインサイクル502とTLBIサイクル500との重なり量(amount of overlap)は、遅延330の適用に応じて増加させることができる。遅延300の結果生じた追加の時間T1~T2によって、SRQにより多くのSRQエントリが保持されている可能性を増すことができる。これにより、TLBI命令が到着したときに、SRQは空でない可能性があり、SRQロジック(例えば、確認応答を送信するために空のSRQを検出するように実装される)をテストする機会をテストすることができる。なお、遅延330は可変であってもよい。したがって、所望の実装形態に応じて、SRQドレインサイクル502を異なる量だけ遅延させてもよい。
【0047】
図6は、一実施形態に係る、ページ変換の無効化に関連するストアコヒーレンス検証のフローチャート例を示す図である。プロセス600は、ブロック602、604、もしくは606またはその組み合わせのうちの1つ以上によって例示されるように、1つ以上の操作、動作、または機能を含んでもよい。なお、図では個別のブロックとして示しているが、所望の実装形態に応じて、様々なブロックを追加のブロックに分割したり、より少ないブロックへと組み合わせたり、削除したり、並列に実行したり、異なる順序で実行したりすることができる。
【0048】
プロセス600は、ブロック602から開始してもよい。ブロック602にて、処理要素は、当該処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用してもよい。この処理要素は、データ処理システムにおける複数の処理要素のうちの1つであってもよい。プロセス600は、ブロック602からブロック604に進んでもよい。ブロック604にて、処理要素は、遅延されたドレインサイクルの下でSRQをドレインしてもよい。一例において、遅延は、インターコネクトを介して別の処理要素から処理要素へTLBI命令を伝搬するのに必要な時間に比例してもよい。別の例において、遅延は、SRQの各エントリをドレインするのに要するサイクル数と、SRQのサイズとの積に基づいてもよい。別の例において、遅延のサイクル数は、1とSRQのサイズの倍数との間の乱数に基づいてもよい。
【0049】
プロセス600は、ブロック604からブロック606に進んでもよい。ブロック606にて、処理要素は、複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信してもよい。TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であってもよい。TLBI命令は、インターコネクトに接続された別の処理要素によってブロードキャストされてもよい。SRQのドレインサイクルに遅延を適用することにより、SRQのドレインサイクルと、TLBIに関連する無効化サイクルとの差を減少させてもよい。
【0050】
一例において、TLBI命令を受信したことに応じて、処理要素は、確認応答信号を送信するか、またはSRQをドレインするかどうかを決定してもよい。例えば、処理要素は、無効化されるTLBエントリに関連するSRQ内のSRQエントリを特定し、特定したSRQエントリをSRQからドレインしてもよい。一例において、SRQを完全にドレインしたことに応じて、処理要素は、インターコネクトを介してTLBI命令をブロードキャストした処理要素に確認応答信号を送信してもよい。一例において、TLBI命令を受信したことに応じて、処理要素は、SRQが空であると判断し、インターコネクトを介してTLBI命令をブロードキャストした処理要素に確認応答信号を送信してもよい。
【0051】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでもよい。
【0052】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、一例として、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたはこれらの適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、消去可能プログラマブルROM(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化されたデバイス、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0053】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスへダウンロードすることができる。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくは無線ネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部ストレージデバイスへダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピューティングデバイス/処理デバイスにおけるコンピュータ可読記憶媒体に記憶するために転送する。
【0054】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0055】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0056】
これらのコンピュータ可読プログラム命令は、機械を生産するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供することができる。これにより、このようなコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。これらのコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他のデバイスまたはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶することができる。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0057】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他のデバイスにロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0058】
図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行されてもよい。例えば、関係する機能に応じて、連続して示される2つのブロックが、実際には、略同時に実行されてもよいし、ブロックが場合により逆順で実行されてもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行可能である。
【0059】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図するものではない。また、本明細書および添付の特許請求の範囲において、単数形「ある(a)」、「ある(an)」および「その(the)」は、別段の規定がない限り、複数形も含む。さらに、本明細書において、「含む(comprises)」もしくは「含む(comprising)」またはその両方の用語が用いられる場合、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせが存在することを規定するが、1つ以上の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせが存在したり、追加されたりすることを排除するものではない。
【0060】
以下の特許請求の範囲にミーンズプラスファンクション要素またはステッププラスファンクション要素がある場合には、そのすべての対応する構造、材料、動作、および均等物は、具体的に特許請求される他の特許請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本発明の記載は、例示および説明を目的として提示されたものであり、網羅的であることや、開示した形態に本発明を限定することを意図したものではない。本発明の範囲から逸脱することなく、多くの変更および変形が当業者には明らかである。本実施形態は、本発明の原理および実際の応用例を最もよく説明するために、かつ他の当業者が、企図している特定の用途に適した各種の変更を伴う各種の実施形態について本発明を理解できるように選択され記載されたものである。


図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2024-04-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の処理要素を有するデータ処理システムにおいて、ページ変換のエントリを無効化するための方法であって、
処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することと、
前記遅延されたドレインサイクルの下で前記SRQをドレインすることと、
前記複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信することと、を含み、当該TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であり、当該TLBI命令は、別の処理要素によってブロードキャストされ、
前記SRQの前記ドレインサイクルに前記遅延を適用することにより、当該SRQの当該ドレインサイクルと、前記TLBI命令に関連する無効化サイクルとの重なり量が増加する、方法。
【請求項2】
無効化される前記TLBエントリに関連する、前記SRQ内のSRQエントリを特定することと、
前記特定したSRQエントリを前記SRQからドレインすることと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記SRQを完全にドレインしたことに応じて、前記インターコネクトを介して前記別の処理要素に確認応答信号を送信することをさらに含む、請求項1に記載の方法。
【請求項4】
前記遅延は、前記TLBI命令が前記インターコネクトを介して前記別の処理要素から前記処理要素に伝搬するのに要する時間に比例する、請求項1に記載の方法。
【請求項5】
前記遅延は、前記SRQ内の各エントリをドレインするのに要するサイクル数と当該SRQのサイズとの積に基づく、請求項1に記載の方法。
【請求項6】
前記遅延のサイクル数は、1と前記SRQのサイズの倍数との間の乱数に基づく、請求項1に記載の方法。
【請求項7】
第1の処理要素と、
第2の処理要素と、
前記第1の処理要素および前記第2の処理要素に接続されたインターコネクトと、
を備えるコンピュータシステムであって、
前記第1の処理要素は、前記インターコネクト上で変換ルックアサイドバッファ無効化(TLBI)命令をブロードキャストするように構成され、当該TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であり、
前記第2の処理要素は、
前記第2の処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することと、
前記遅延されたドレインサイクルの下で前記SRQをドレインすることと、
前記インターコネクトから前記TLBI命令を受信することと、を実行するように構成され、
前記SRQの前記ドレインサイクルに前記遅延を適用することにより、当該SRQの当該ドレインサイクルと、前記TLBI命令に関連する無効化サイクルとの重なり量が増加する、コンピューティングシステム。
【請求項8】
前記第2の処理ユニット要素は、
無効化される前記TLBエントリに関連する、前記SRQ内のSRQエントリを特定することと、
前記特定したSRQエントリを前記SRQからドレインすることと、
を実行するように構成される、請求項7に記載のコンピューティングシステム。
【請求項9】
前記第2の処理要素は、前記SRQを完全にドレインしたことに応じて、前記インターコネクトを介して前記第1の処理要素に確認応答信号を送信するように構成される、請求項7に記載のコンピューティングシステム。
【請求項10】
前記遅延は、前記TLBI命令が前記インターコネクトを介して前記第1の処理要素から前記第2の処理要素に伝搬するのに要する時間に比例する、請求項7に記載のコンピューティングシステム。
【請求項11】
前記遅延は、前記SRQ内の各エントリをドレインするのに要するサイクル数と当該SRQのサイズとの積に基づく、請求項7に記載のコンピューティングシステム。
【請求項12】
前記遅延のサイクル数は、1と前記SRQのサイズの倍数との間の乱数に基づく、請求項7に記載のコンピューティングシステム。
【請求項13】
前記1つ以上の実行ユニットは、前記乱数を生成するように構成された乱数生成器を含む、請求項12に記載のコンピューティングシステム。
【請求項14】
前記乱数生成器は、1つ以上の線形フィードバックシフトレジスタによって実装される、請求項13に記載のコンピューティングシステム。
【請求項15】
コンピュータプログラムであって、当該プログラムがコンピュータ上で実行される際に請求項1から6のいずれかに記載の方法ステップを実行するように適合されたプログラムコードを含む、コンピュータプログラム。
【請求項16】
ロード命令およびストア命令を実行するように構成された1つ以上のロードストアユニット(LSU)を含むプロセッサパイプラインを含む処理要素であって、当該1つ以上のLSUは、
前記処理要素のストアリオーダキュー(SRQ)のドレインサイクルに遅延を適用することと、
前記遅延されたドレインサイクルの下で前記SRQをドレインすることと、
複数の処理要素を接続するインターコネクトから変換ルックアサイドバッファ無効化(TLBI)命令を受信することと、を実行するように構成され、当該TLBI命令は、仮想メモリページおよび物理メモリフレームの少なくとも一方に対応する変換ルックアサイドバッファ(TLB)エントリを無効化する命令であり、当該TLBI命令は、別の処理要素によってブロードキャストされ、
前記SRQの前記ドレインサイクルに前記遅延を適用することにより、当該SRQの当該ドレインサイクルと、前記TLBI命令に関連する無効化サイクルとの重なり量が増加する、処理要素。
【請求項17】
前記1つ以上のLSUは、
無効化される前記TLBエントリに関連する、前記SRQ内のSRQエントリを特定することと、
前記特定したSRQエントリを前記SRQからドレインすることと、
を実行するように構成される、請求項16に記載の処理要素。
【請求項18】
前記1つ以上のLSUは、前記SRQを完全にドレインしたことに応じて、前記インターコネクトを介して前記別の処理要素に確認応答信号を送信するように構成される、請求項16に記載の処理要素。
【請求項19】
前記遅延は、前記TLBI命令が前記インターコネクトを介して前記別の処理要素から前記処理要素に伝搬するのに要する時間に比例する、請求項16に記載の処理要素。
【請求項20】
前記遅延は、前記SRQ内の各エントリをドレインするのに要するサイクル数と当該SRQのサイズとの積に基づく、請求項16に記載の処理要素。
【請求項21】
前記遅延のサイクル数は、1と前記SRQのサイズの倍数との間の乱数に基づく、請求項16に記載の処理要素。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0019
【補正方法】変更
【補正の内容】
【0019】
図1は、情報ハンドリングシステム101を示す図である。情報ハンドリングシステム101は、本明細書で説明するコンピューティング動作を実行可能なコンピュータシステムの簡単な例とすることができる。コンピュータシステム101は、ホストバス102に結合された1つ以上のプロセッサ100を含むことができる。プロセッサ100は、例えば、市販のマイクロプロセッサ、カスタムプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ディスクリートロジックなど、または一般に命令を実行するための任意のデバイスを含むことができる。一例では、プロセッサ100は、2つ以上のプロセッサコアを含むマルチコアプロセッサであってもよい。レベル2(L2)キャッシュメモリ104は、ホストバス102に結合されてもよい。I/Oブリッジ(例えば、ホスト-PCIブリッジ)106は、メインメモリ108に結合されてもよい。I/Oブリッジは、キャッシュメモリおよびメインメモリ制御機能を含んでもよく、PCIバス110、プロセッサ100、L2キャッシュ104、メインメモリ108、およびホストバス102間の転送を処理するバス制御を提供してもよい。メインメモリ108は、ホストバス102と同様に、I/Oブリッジ106に結合されてもよい。ランダムアクセスメモリ(RAM)などの他のタイプのメモリ、もしくは様々な揮発性および/もしくは不揮発性メモリデバイス、またはその組み合わせが、同様にホストバス102もしくはI/Oブリッジ106またはその両方に結合されてもよい。例えば、ホストバス102に結合されるメモリデバイスは、電気的消去可能プログラマブルROM(EEPROM)、フラッシュプログラマブルROM(PROM)、バッテリバックアップRAM、ハードディスクドライブなどを含むことができる。ホストバス102に結合される不揮発性メモリデバイスは、実行可能なファームウェア、および、本明細書に記載する方法などの特定の機能をプロセッサ100に実行させるために実行可能なプログラミング命令を含む任意の不揮発性データを保持するために使用されてもよい。I/Oコンポーネント130など、プロセッサ100によってのみ使用されるデバイスは、PCIバス110に結合されてもよい。サービスプロセッサインタフェースおよびISAアクセスパススルー112は、PCIバス110とPCIバス114との間のインタフェースを提供してもよい。このようにして、PCIバス114は、PCIバス110から隔離されてもよい。フラッシュメモリ118などのデバイスは、PCIバス114に結合される。一実装形態において、フラッシュメモリ118は、種々の低レベルのシステム機能およびシステムブート機能のために必要なプロセッサ実行可能コードを組み込んだBIOSコードを含むことができる。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0043
【補正方法】変更
【補正の内容】
【0043】
シナリオ402では、コア1がTLBI命令302をインターコネクトから受信したとき、SRQ324のドレインサイクルに遅延330が適用された結果、SRQ324は空ではなく、SRQエントリE3がSRQ324内に残っている。コア1は、SRQエントリE3がTLBI命令302に関連すると判断し、ACK304をインターコネクト301に送信する前に、SRQエントリE3をSRQ324からドレインしてもよい。遅延330を適用することにより、SRQ324のドレインを遅くするとともに、コア1がSRQ324内のSRQエントリを特定するための追加の時間を提供することができる。一例として、シナリオ401では、コア1は、SRQ324が空であることを示すロジック327に依存し、SRQ324内にエントリが残っているかどうかを確認せずに、ACK304をインターコネクト301に送信する場合がある。SRQドレインサイクルを遅延させることにより、SRQ324が空である可能性が低くなる。これにより、ACK304を送信する前にSRQ324をドレインするように、コア1をトリガすることができる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0046
【補正方法】変更
【補正の内容】
【0046】
SRQドレインサイクル502に遅延330を適用すると、時間T0からT2に及ぶ遅延されたSRQドレインサイクルの下で、SRQをより遅いペースでドレインすることができる。したがって、TLBIサイクル500とSRQドレインサイクル502との差を減少させることができる。言い換えれば、SRQドレインサイクル502とTLBIサイクル500との重なり量(amount of overlap)は、遅延330の適用に応じて増加させることができる。遅延300の結果生じた追加の時間T1~T2によって、SRQにより多くのSRQエントリが保持されている可能性を増すことができる。これにより、TLBI命令が到着したときに、SRQは空でない可能性があり、SRQロジック(例えば、確認応答を送信するために空のSRQを検出するように実装される)をテストする機会を増加させることができる。なお、遅延330は可変であってもよい。したがって、所望の実装形態に応じて、SRQドレインサイクル502を異なる量だけ遅延させてもよい。
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図1
【補正方法】変更
【補正の内容】
図1
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図2
【補正方法】変更
【補正の内容】
図2
【国際調査報告】