JP6933896B2 - 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体 - Google Patents

複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体 Download PDF

Info

Publication number
JP6933896B2
JP6933896B2 JP2016241038A JP2016241038A JP6933896B2 JP 6933896 B2 JP6933896 B2 JP 6933896B2 JP 2016241038 A JP2016241038 A JP 2016241038A JP 2016241038 A JP2016241038 A JP 2016241038A JP 6933896 B2 JP6933896 B2 JP 6933896B2
Authority
JP
Japan
Prior art keywords
conversion
request
processor core
invalidation request
invalidation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016241038A
Other languages
English (en)
Other versions
JP2017117453A (ja
Inventor
デレク・イー・ウィリアムズ
ガイ・エル・ガスリー
ヒュー・シェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2017117453A publication Critical patent/JP2017117453A/ja
Application granted granted Critical
Publication of JP6933896B2 publication Critical patent/JP6933896B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

一般に、本発明は、データ処理に関し、特に、マルチスレッド・データ処理システムにおける変換エントリの無効化に関する。
従来のマルチプロセッサ(MP)コンピュータ・システムは、(各々が1つ又は複数のプロセッサ・コア及びその種々のキャッシュ・メモリを含むことができる)複数の処理ユニット、入力/出力(I/O)デバイス、及び(揮発性とすることも又は不揮発性とすることもできる)システム・メモリ及び不揮発性の大容量記憶装置の両方を含む。メモリ・マップド(memory-mapped)I/O操作のための十分なアドレス、並びにオペレーティング・システム及びアプリケーション・ソフトウェアにより利用されるデータ及び命令を提供するために、MPコンピュータ・システムは、一般的に、メモリ・マップドI/Oデバイス及びシステム・メモリ内の物理ストレージ場所の数よりはるかに多数の実効アドレス(effective address)を含む実効アドレス空間を参照する。従って、メモリ・マップドI/Oを実行するため、又はシステム・メモリにアクセスするために、実効アドレッシングを利用するコンピュータ・システム内のプロセッサ・コアは、実効アドレスを、特定のI/Oデバイス又はシステム・メモリ内の物理的記憶場所に割り当てられる実アドレス(real address)に変換しなければならない。
POWER(商標)RISCアーキテクチャにおいて、実効アドレス空間は、多数の均一なサイズのメモリ・ページにパーティション化される。各ページは、ページ・テーブル・エントリ(PTE)と呼ばれる、それぞれの関連したアドレス記述子を有する。特定のメモリ・ページに対応するPTEは、メモリ・ページのベース実効アドレス、並びにページ・フレームの関連したベース実アドレスを含む。これにより、プロセッサ・コアが、メモリ・ページ内のあらゆる実効アドレスをシステム・メモリ内の実アドレスに変換することが可能になる。オペレーティング・システム及び/又はハイパーバイザ・ソフトウェアによりシステム・メモリ内に生成されるPTEは、ページ・フレーム・テーブル内に集められる。
メモリ・マップドI/O及びメモリ・アクセス命令(以下、合わせて単に「メモリ参照命令(memory referent instruction)」と呼ぶ)の処理の間に実効アドレスから実アドレスへの変換を促進するために、従来のプロセッサ・コアは、他の変換構造の中でも、プロセッサ・コア内の最近アクセスされたPTEをバッファリングするために、変換ルックアサイド・バッファ(TLB)と呼ばれるキャッシュを用いることが多い。もちろん、(例えば、新しいプロセス又はコンテキスト・スイッチの呼び出しに応答して)データがシステム・メモリ内の物理ストレージ場所に移動され、及び、システム・メモリ内の物理ストレージ場所から移動されると、新しいデータの存在を反映させるように、TLB内のエントリを更新しなければならず、かつ、システム・メモリから除去された(例えば、不揮発性の大容量記憶装置にページアウトされた)データと関連したTLBエントリを無効化する必要がある。IBMコーポレーションから入手可能なプロセッサのPOWER(商標)ラインのような多くの従来のプロセッサにおいては、TLBエントリの無効化はソフトウェアの責任であり、明示的なTLB無効化エントリ命令(例えば、POWER(商標)命令セット・アーキテクチャ(ISA)におけるTLBIE)の実行を通じて達成される。
MPコンピュータ・システムにおいて、1つのプロセッサ・コア内にキャッシュされたPTEの無効化は、各々の他のプロセッサ・コアがそれぞれのTLBを有し、これが、ターゲットPTEのコピーもキャッシュできるという事実により複雑化なものとなる。全てのプロセッサ・コアにわたるシステム・メモリの一貫した表示を維持するために、1つのプロセッサ・コア内のPTEを無効化すると、他の全てのプロセッサ・コアのTLB内の同じPTEの無効化が必要になる(存在する場合)。多くの従来のMPコンピュータ・システムにおいて、システム内の全てのプロセッサ・コアにおけるPTEの無効化は、開始(initiating)プロセッサ・コア内のTLBエントリ無効化(TLBinvalidate entry)命令の実行、及び、システム内の開始プロセッサ・コアから他の各々のプロセッサ・コアへのTLBエントリ無効化要求のブロードキャストによって達成される。開始プロセッサ・コアの命令シーケンスにおいて、TLBエントリ無効化命令(又は、複数のPTEが無効化される場合、複数の命令)の後に、全てのプロセッサ・コアによりTLBエントリの無効化が実行されたことを保証する1つ又は複数の同期命令が続くことがある。
従来のMPコンピュータ・システムにおいて、TLBエントリ無効化命令及び関連した同期命令は、厳密にシリアル化される。これは、実行がハードウェア・スレッドの次の命令に進む前に(例えば、TLBエントリ無効化要求を他のプロセッサ・コアにブロードキャストすることにより)TLBエントリ無効化命令を含む開始プロセッサ・コアのハードウェア・スレッドが、各々の命令を完全に処理しなければならないことを意味している。このシリアル化の結果として、特にハードウェア・スレッドが複数のTLBエントリ無効化命令を含む場合、少なくとも、TLBエントリ無効化命令を含む開始プロセッサ・コアのハードウェア・スレッドは、大きな性能上の不利益を被る。
マルチスレッド処理ユニットにおいて、処理ユニットのキュー、バッファ及び他のストレージ・ファシリティの少なくとも一部は、複数のハードウェア・スレッドにより共有される。TLBIEエントリ無効化命令及び関連した同期命令の厳密なシリアル化により、TLB無効化シーケンスと関連した特定の要求が、例えばこれらの共有ファシリティにおいてストールする一方で、他のプロセッサ・コアによる要求の処理の確認を待つことになる。適切に処理されない場合、こうしたストールにより、ストレージ・ファシリティを共有する他のハードウェア・スレッドが、高レイテンシ及び/又はデッドロックに直面することがある。
上記を考慮すると、本発明は、マルチスレッド・コンピュータ・システムにおいてPTEのコヒーレンシを維持するための改善された方法を提供するのに有用であり、望ましいことが認識される。
本発明の目的は、複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体を提供することである。
複数のプロセッサ・コアを含むマルチスレッド・データ処理システムの一実施形態によると、同時に実行されている複数のハードウェア・スレッドのストレージ修正要求が共有キュー内に受け取られる。ストレージ修正要求は、開始ハードウェア・スレッドの変換無効化要求を含む。変換無効化要求は、共有キューから除去され、各々が複数のハードウェア・スレッドのそれぞれと関連した複数のサイドカーの1つのサイドカー論理内にバッファリングされる。変換無効化要求がサイドカー内にバッファリングされている間に、変換無効化要求が複数のプロセッサ・コアにより受け取られ処理されるように、サイドカー論理は、変換無効化要求をブロードキャストする。開始プロセッサ・コアによる変換無効化要求の処理の完了を確認することに応答して、サイドカー論理は、サイドカーから変換無効化要求を除去する。複数のプロセッサ・コアの全てにおける変換無効化要求の処理の完了が、ブロードキャスト同期要求により保証される。
一実施形態において、付加的な同期命令(例えば、HWSYNC)の実行により、ブロードキャスト同期要求を参照して、後のメモリ参照命令が順序付けられる。
一実施形態による、例示的なデータ処理システムの高レベル・ブロック図である。 一実施形態による、例示的な処理ユニットのより詳細なブロック図である。 一実施形態による、プロセッサ・コア及び低レベル・キャッシュ・メモリの詳細なブロック図である。 一実施形態による、第1の例示的な変換エントリ無効化命令のシーケンスである。 一実施形態による、第2の例示的な変換エントリ無効化命令のシーケンスである。 一実施形態による、マルチプロセッサ・データ処理システムのプロセッサ・コアが変換エントリ無効化命令を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理ユニットのサイドカー論理が変換エントリ無効化要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態におる、処理ユニットのスヌーパが変換エントリ無効化要求及び変換同期要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理ユニットのアービタが変換エントリ無効化要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、プロセッサ・コアの変換シーケンサが変換エントリ無効化要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理ユニットのストア・キューが変換無効化完了要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、プロセッサ・コアが変換同期命令を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理ユニットのサイドカー論理が変換同期要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理コアがページ・テーブル同期命令を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理ユニットがページ・テーブル同期要求を処理する例示的な方法の高レベル論理フローチャートである。 一実施形態による、処理ユニットのスヌーパ論理が、変換無効化要求、変換無効化完了要求、及びページ・テーブル同期要求を処理する例示的な方法の高レベル論理フローチャートである。 設計プロセスを示すデータ・フロー図である。
ここで、全体にわたって同様の参照番号が同様の対応する部品を指す図面、特に図1を参照すると、一実施形態による、例示的なデータ処理システム100を示す高レベル・ブロック図が示される。示される実施形態において、データ処理システム100は、データ及び命令を処理するための複数の処理ノード102を含むキャッシュ・コヒーレント対称型マルチプロセッサ(SMP)データ処理システムである。処理ノード102は、アドレス、データ及び制御情報を搬送するために、システム相互接続110に結合されている。システム相互接続110は、例えば、バス状相互接続、スイッチ型相互接続、又はハイブリッド相互接続として実装することができる。
示される実施形態において、各処理ノード102は、それぞれが好ましくは集積回路として実現された4つの処理ユニット104a〜104dを含むマルチチップ・モジュール(MCM)として実現される。各処理ノード102内の処理ユニット104は、ローカル相互接続114によって通信のために結合されており、そのローカル相互接続は、システム相互接続110のように、1つ又は複数のバス及び/又はスイッチで実装することができる。システム相互接続110及びローカル相互接続114は一緒にシステム・ファブリックを形成する。
図2を参照して以下により詳細に説明されるように、処理ユニット104はそれぞれ、それぞれのシステム・メモリ108へのインターフェースを提供するための、ローカル相互接続114に結合されたメモリ・コントローラ106を含む。通常、データ処理システム100内のいずれかの処理ノード102のいずれかの処理ユニット104におけるプロセッサにより、システム・メモリ108内に常駐するデータ及び命令にアクセスし、それらをキャッシュし、修正することができる。従って、システム・メモリ108は、データ処理システム100の分散型共有メモリ・システム・メモリにおける最下位レベルのメモリ・ストレージを形成する。代替的な実施形態において、1つ又は複数のメモリ・コントローラ106(及びシステム・メモリ108)は、ローカル相互接続114ではなく、システム相互接続110に結合することができる。
当業者であれば、図1のSMPデータ処理システム100は、相互接続ブリッジ、不揮発性ストレージ、ネットワーク又は接続されたデバイスへの接続のためのポート等といった、示されていない多くの付加的なコンポーネントを含むことができる。そうした付加的なコンポーネントは、必ずしも、説明される実施形態の理解に必要ではないので、図1には示しておらず、又は本明細書でさらに説明もしない。しかしながら、本明細書で説明される機能強化が様々なアーキテクチャのデータ処理システムに適用可能であり、図1に示される一般化されたデータ処理システムのアーキテクチャに決して限定されるものではないことも理解されたい。
ここで図2を参照すると、一実施形態による、例示的な処理ユニット104のより詳細なブロック図が示される。示される実施形態において、各々の処理ユニット104は、命令及びデータを処理するための1つ又は複数のプロセッサ・コア200を含む集積回路である。好ましい実施形態において、各々のプロセッサ・コア200は、同時マルチスレッディング(simultaneous multithreading、SMT)をサポートし、従って、複数のハードウェア・スレッドを同時に独立して実行することができる。
各々のプログラム・コア200の動作は、マルチ・レベルのメモリ階層によってサポートされ、このメモリ階層は、統合されたメモリ・コントローラ106を介してアクセスされる共有システム・メモリ108をその最下位レベルで有する。示されるように、共有システム・メモリ108は、実効アドレス・実アドレス変換を行って、システム・メモリ108内のストレージ場所へのアクセスを可能にするために、複数のページ・フレーム・エントリ(PTE)222を含むページ・フレーム・テーブル220を格納する。その上位レベルでは、マルチレベル・メモリ階層は、1つ又は複数のレベルのキャッシュ・メモリを含み、それは、例証となる実施形態において、各プロセッサ・コア200内にあり、そのプロセッサ・コア専用のストア・スルー(store-through)・レベル1(L1)キャッシュ302(図3参照)と、各プロセッサ・コア200用のそれぞれのストア・イン(store-in)・レベル2(L2)キャッシュ230とを含む。示されるキャッシュ階層は、2つのレベルのキャッシュしか含まないが、当業者であれば、代替的な実施形態は、上位レベルのキャッシュのコンテンツを完全に含む、部分的に含む、又は含まない、付加的なレベル(L3、L4等)のオンチップ・キャッシュ又はオフチップ・キャッシュ、専用キャッシュ又は共有キャッシュ、インライン・キャッシュ又はルックアサイド・キャッシュを含み得ることを理解するであろう。
各処理ユニット104は、ローカル相互接続114及びシステム相互接続110を含むシステム・ファブリック上の動作のフローの制御、及び、選択されるキャッシュ・コヒーレンシ・プロトコルを実装するのに必要とされるコヒーレンシ通信の実装を担当する統合型及び分散型ファブリック・コントローラ216をさらに含む。処理ユニット104は、1つ又は複数のI/Oデバイス(示されない)の取り付けをサポートする統合型I/O(入力/出力)コントローラ214をさらに含む。
ここで図3を参照すると、一実施形態による、プロセッサ・コア200及びその関連のある(affiliated)L2キャッシュ230の例示的な実施形態のより詳細なブロック図が示される。
示される実施形態において、プロセッサ・コア200は、複数のハードウェア・スレッドの同時実行からの命令を実行する1つ又は複数の実行ユニット300を含む。命令は、例えば、算術命令、論理命令及びメモリ参照命令、並びに変換エントリ無効化命令(以下、POWER(商標)ISAニーモニックによりTLBIE(Translation Lookaside Buffer Invalidate Entry)と呼ばれる)及び関連した同期命令を含むことができる。実行ユニット300は、一般に、データ依存性、及び同期命令により要求される明示的な順序付けが観察される限り、いずれの順序でもハードウェア・スレッドの命令を実行することができる。
プロセッサ・コア200は、実行ユニット300内のメモリ参照命令の実行により決定されるターゲット実効アドレスを実アドレスの変換を担当するメモリ管理ユニット(memory management unit、MMU)308を付加的に含む。MMU308は、変換ルックアサイド・バッファ(TLB)、ブロック・アドレス・テーブル(BAT)、セグメント・ルックアサイド・バッファ(SLB)等などの1つ又は複数の変換構造310を参照することにより、実効アドレス−実アドレス変換を行う。これらの変換構造の数及びタイプは、実装及びアーキテクチャによって異なる。存在する場合、TLBは、ページ・フレーム・テーブル220から取り出されたPTE222をキャッシュすることにより、実効アドレス・実アドレス変換と関連したレイテンシを低減させる。変換構造310と関連付けられた変換シーケンサ312は、変換構造310内に保持される実効アドレス・実アドレス変換エントリの無効化を処理し、プロセッサ・コア200内の実行中(in flight)のメモリ参照命令に対するこうした無効化を管理する。
プロセッサ・コア200は、プロセッサ・コア200によりサポートされる複数のハードウェア・スレッドにより共有される種々のストレージ・ファシリティを付加的に含む。複数のハードウェア・スレッドにより共有されるストレージ・ファシリティは、実行ユニット300による対応するストア及び同期命令の実行により生成されるストア及び同期要求を一時的にバッファリングするL1ストア・キュー304を含む。L1キャッシュ302はストア・スルー・キャッシュであり、それは下位レベルのキャッシュ階層において(例えば、L2キャッシュ230において)コヒーレンスが完全に決定されることを意味するので、要求はL1 STQ304を通って流れ、次に、バス318を介してL2キャッシュ230に送られて処理される。
複数のハードウェア・スレッドにより共有されるプロセッサ・コア200のストレージ・ファシリティは、L1キャッシュ302内でミスするロード要求を一時的にバッファリングするロード・ミス・キュー(LMQ)306を付加的に含む。こうしたロード要求はまだ満たされていないので、ロード要求のターゲット実アドレスを得るために用いられたアドレス変換エントリが、ロード要求が満たされる前に無効化された場合、ロード要求は、誤ったメモリ・ページのヒットを受けることになる。従って、PTE又は他の変換エントリが無効化される場合、関連する変換エントリにより変換された実効アドレスを再割り当てする前に、その変換エントリに依存するLMQ306内のあらゆるロード要求を、LMQ306からドレインし、満たさなければならない。
さらに図3を参照すると、L2キャッシュ230は、キャッシュ・アレイ332と、キャッシュ・アレイ332のコンテンツのL2ディレクトリ334とを含む。キャッシュ・アレイ332及びL2ディレクトリ334が従来のもののようにセット・アソシアティブ方式(set associative)であると仮定すると、システム・メモリ108内のストレージ場所は、システム・メモリ(実)アドレス内の所定のインデックス・ビットを用いて、キャッシュ・アレイ332内の特定の合同クラスにマッピングされる。キャッシュ・アレイ332のキャッシュ・ライン内に格納された特定のメモリ・ブロックは、各々のキャッシュ・ライン毎に1つのディレクトリ・エントリを含むL2ディレクトリ334内に記録される。図3に明白に示されないが、キャッシュ・ディレクトリ334内の各ディレクトリ・エントリは、例えば、キャッシュ・アレイ332の対応するキャッシュ・ライン内に保持されるメモリ・ブロックの実アドレスを識別するタグ・フィールド、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド、同じ合同クラス内の他のキャッシュ・ラインに対するキャッシュ・ラインの置換順序を示すLRU(最長時間未使用)フィールド、及びメモリ・ブロックが関連したL1キャッシュ302内に保持されるかどうかを示す包含性ビットなどの種々のフィールドを含むことが、当業者により理解されるであろう。
L2キャッシュ230は、インターフェース318を介して、L1 STQ304からストレージ修正要求及び同期要求を受け取り、そうした要求をバッファリングするL2 STQ320を付加的に含む。L2 STQ320は、関連のあるプロセッサ・コア200の全てのハードウェア・スレッドの要求をバッファリングする統一されたストア・キューであることに留意されたい。従って、スレッドのストア要求の全て、TLBIE要求及び関連した同期要求は、L2 STQ320を通って流れる。大部分の実施形態において、L2 STQ320は複数のエントリを含むが、L2 STQ320は、深さに関係なく(即ち、単一のエントリ・キューとして実装される場合でも)、デッドロックフリー方式で機能することが必要とされる。このために、L2 STQ320は、インターフェース321により、関連のあるプロセッサ・コア200によりサポートされるハードウェア・スレッド毎に1つの要求バッファリング・エントリ(本明細書では「サイドカー(sidecar)」と呼ばれる)324を含む関連したサイドカー論理322に結合される。従って、L2 STQ320において、サイドカー324の数は、エントリの数と関連しない。本明細書でさらに説明されるように、サイドカー324の使用により、潜在的にデッドロック要求をL2 STQ320から除去することが可能になり、従って、変換エントリの無効化の際、デッドロックは発生しない。
L2キャッシュ230は、それぞれバス327及び328を介して関連のあるプロセッサ・コア200により開始されるローカル・ロード要求及びストア要求を受け取り、バス329を介してローカル相互接続114上でスヌープされる遠隔ロード要求を受け取る、ディスパッチ/応答論理336をさらに含む。ローカル・ロード要求及び遠隔ロード要求、ストア要求、TLBIE要求及び関連した同期要求を含むこうした要求は、ディスパッチ/応答論理336により処理され、次に、サービスのために適切な状態機械にディスパッチされる。
示される実施形態において、要求をサービスするためにL2キャッシュ230内に実装される状態機械は、関連のあるプロセッサ・コア200から受け取ったロード(LD)要求及びストア(ST)要求を独立して同時にサービスする、複数の読み取りクレーム(Read-Claim、RC)マシン342を含む。関連のあるプロセッサ・コア200以外のプロセッサ・コア200によって生じる遠隔メモリ・アクセス要求をサービスするために、L2キャッシュ230は、複数のスヌープ(snoop、SN)マシン344も含む。各スヌープ・マシン344は、ローカル相互接続114からスヌープされた遠隔メモリ・アクセス要求を独立して同時に処理することができる。理解されるように、RCマシン342によるメモリ・アクセス要求のサービスは、キャッシュ・アレイ332(及びL1キャッシュ302)内のメモリ・ブロックの置換又は無効化を必要とすることがある。従って、L2キャッシュ230は、キャッシュ・アレイ332からのメモリ・ブロックの除去及びライトバックを管理する複数のCO(キャストアウト)マシン340も含む。
示される実施形態において、L2キャッシュ230は、TLBIE要求及び関連した同期要求をサービスするために用いられる複数の変換スヌープ(TSN)マシン346を付加的に含む。幾つかの実施形態において、TSNマシン346は、例えば、キャッシュ不能な(noncacheable)メモリ・アクセス操作を処理するキャッシュ不能ユニット(NCU)(図示されない)など、処理ユニット104の別のサブユニット内に実装され得ることを理解されたい。少なくとも1つの実施形態において、データ処理システム100内の複数のTLBIE同時要求の処理を調整するコンセンサス・プロトコル(本明細書でさらに説明される)の実装を単純化するために、各々のL2キャッシュ230において、同じ番号のTSNマシン346が実装される。
TSNマシン346は全て、バス350を介して、プロセッサ・コア200内の変換シーケンサ312に伝送するために、TSNマシン346により処理される要求を選択するアービタ(arbiter)348に結合される。少なくとも幾つかの実施形態において、バス350は、TSNマシン346の要求のみ伝送するのではなく、L2キャッシュ230からプロセッサ・コア200へとデータ及び他の操作を戻す統一されたバスとして実装される。変換シーケンサ312は、デッドロックを回避するために、非ブロッキング方式でアービタ348からの要求を受け付けなければならない。
ここで図4を参照すると、一実施形態による、データ処理システム100のプロセッサ・コア200により実行することができる第1の例示的な変換エントリ無効化命令シーケンス400が示される。命令シーケンス400の目的は、(a)変換エントリがデータ処理システム100のいずれかのMMU308により再ロードされないように、ページ・フレーム・テーブル220内の変換エントリ(例えば、PTE222)をディスエーブルにすること、(b)データ処理システム100におけるいずれかのプロセッサ・コア200によりキャッシュされた変換エントリ(又は、変換エントリと同じ実効アドレスを変換する他の変換エントリ)のあらゆるコピーを無効化すること、及び(c)実効アドレスが再割り当てされる前に、古い変換エントリに依存する全ての未解決のメモリ・アクセス要求をドレインすることである。古い変換エントリに依存するストア要求がドレインする前に変換が更新された場合、ストア要求は、古い変換エントリにより識別されるメモリ・ページを損なうことがある。同様に、変換が再割り当てされる前に、古い変換エントリに依存し且つL1キャッシュ302をミスするロード要求が満たされなかった場合、ロード要求は、意図したのとは異なるメモリ・ページからデータを読み取り、従って、ロード要求に見えることを意図しないデータを観察する。
命令シーケンス400は、任意の数の命令に先行しても、任意の命令がこれに続いてもよく、1つ又は複数のストア(ST)命令402から開始する。各ストア命令402は、実行時にストア要求を生成させ、関連するシステム・メモリ108に伝搬されるとき、ページ・フレーム・テーブル220内のターゲットPTE222を無効としてマーク付けする。ひとたびストア要求がページ・フレーム・テーブル220においてPTE222を無効としてマーク付けすると、MMU308は、もはや、ページ・フレーム・テーブル220から無効化された変換をロードしない。
命令シーケンス400における1つ又は複数のストア命令402の後に、重量同期(heavyweight synchronization)(即ち、HWSYNC)命令404が続き、このHWSYNC命令404は、後のTLBIE命令406が、プロセッサ・コア200により再順序付けされ、ストア命令402のどれいずれよりも前に実行されないことを保証するバリアである。従って、HWSYNC命令404は、TLBIE命令406がPTE222のキャッシュされたコピーを無効化した後にプロセッサ・コア200がPTE222をページ・フレーム・テーブル220から再ロードした場合、プロセッサ・コア200が、ストア命令402に起因する無効化を観察したことが保証され、従って、ターゲットPTE222により変換された実効アドレスが再割り当てされ、有効に設定されるまで、ターゲットPTE222を使用しない又は変換構造310に再ロードしない。
命令シーケンス400におけるHWSYNC命令404の後に、少なくとも1つのTLBIE命令406が続き、このTLBIE命令406は、実行時に、データ処理システム100全体にわたって全ての変換構造310内のTLBIE要求のターゲット実効アドレスを変換するあらゆる変換エントリを無効化する対応するTLBIE要求を生成する。命令シーケンス400において、1つ又は複数のTLBIE命令406に、変換同期(即ち、TSYNC)命令408が続き、このTSYN命令408は、後続の命令に進むスレッドの実行前に、TLBIE命令406の実行により生成されるTLBIE要求が、データ処理システム100全体にわたる全ての変換構造310内のターゲット実効アドレスの全ての変換の無効化を終了し、今や無効化された変換に依存する全ての以前のメモリ・アクセス要求がドレインされたことを保証する。
命令シーケンス400は、第2のHWSYNC命令410で終了し、この第2のHWSYNC命令410は、TSYNC命令406がその処理を完了するまで、プログラム順でHWSYNC命令410に続くあらゆるメモリ参照命令の実行を防止するバリアを実施する。このように、TLBIE要求のターゲット実効アドレスの変換を必要とするいずれのより若いメモリ参照命令も、TLBIE要求により無効化された古い変換ではなく、新しい変換を受け取る。HWSYNC命令410は、ページ・フレーム・テーブル内のターゲットPTE222の無効化、変換構造310内の変換エントリの無効化、又は古い変換に依存するメモリ参照命令のドレインに直接関係するいずれの機能も有さないことに留意されたい。
ここで開示される本発明の理解を促進するために、図6〜図11を参照して、TLBIE命令406及びそこから生成されるTLBIE要求を開始から完了まで説明する。図12及び図13は、TSYNC命令408及びその対応するTSYNC要求の進行を付加的に示し、これらは、全てのスヌーピング・プロセッサ・コア200上でTLBIE要求により要求される無効化が完了したことを保証する。
最初に図6を参照すると、一実施形態による、マルチプロセッサ・データ処理システム100の開始プロセッサ・コア200が、変換エントリ無効化(例えば、TLBIE)命令を処理する例示的な方法の高レベル論理フローチャートが示される。示されるプロセスは、単一のハードウェア・スレッドで実施される処理を表し、単一のプロセッサ・コア200上で複数のこれらのプロセスを同時に(即ち、並行して)実行できること、そしてさらに、データ処理システム100全体にわたって種々の異なる処理コア200上で複数のこれらのプロセスを同時に実行できることを意味する。その結果、異なる開始ハードウェア・スレッドにより、データ処理システム100の種々のプロセッサ・コア200内にバッファリングされた複数の異なるアドレス変換エントリを同時に無効化することができる。
示されるプロセスがブロック500から開始し、次に、プロセッサ・コア200の実行ユニット300による命令シーケンス400におけるTLBIE命令406の実行を示すブロック501に進む。TLBIE命令406の実行は、データ処理システム100全体にわたって変換構造310内にバッファリングされた全ての変換エントリが無効化されるターゲット実効アドレスを決定する。TLBIE命令406の実行に応答して、図3の例示的な実施形態において、サイドカー論理322は、スレッド毎に単一のサイドカー324のみを含み、一度に、スレッド毎に最大でも1つのTLBIE要求がアクティブであり得ることを意味するので、プロセッサ・コア200は、開始ハードウェア・スレッド内のあらゆる付加的な命令のディスパッチを停止させる。スレッド毎に複数のサイドカー324を有する他の実施形態においては、スレッド毎に、同時にアクティブな複数のTLBIE要求をサポートすることができる。
ブロック504において、TLBIE命令406に対応するTLBIE要求が生成され、L1 STQ304に発行される。TLBIE要求は、例えば、要求のタイプ(即ち、TLBIE)を示すトランザクション・タイプ、キャッシュされた変換が無効化される実効アドレス、及びTLBIE要求を発行した開始プロセッサ・コア200及びハードウェア・スレッドの表示を含むことができる。L1 STQ304内の要求の処理は進行し、ブロック506に示されるように、TLBIE要求は、最終的に、バス318を介してL1 STQ304からL2 STQ320へ移動する。次に、プロセスは、開始プロセッサ・コア200が、バス325を介してストレージ・サブシステムから、開始プロセッサ・コア200によるTLBIE要求の処理が完了したことを示すTLBCMPLT_ACK信号を受け取るまで、開始ハードウェア・スレッド内の命令のディスパッチを控える続けることを示すブロック508に進む。(TLBCMPLT_ACK信号の生成は、図11のブロック1010を参照して以下に説明される。)開始スレッド内の命令のディスパッチが停止されるので、いずれの所定のスレッドについても、L2 STQ320及びサイドカー論理322内に、一度に2つのタイプの要求のうちの1つしか存在できないので、TSYNC命令408に対応するTSYNC要求による開始スレッドのサイドカー324の競合は存在し得ないことも留意されたい。
ブロック508におけるTLBCMPLT_ACK信号を受け取ったとの判断に応答して、プロセスはブロック508から、プロセッサ・コア200が開始スレッド内の命令のディスパッチを再開することを示すブロック510に進み、従って、図12を参照して以下に説明されるように、ブロック510におけるスレッドの解放により、TSYNC命令408(命令シーケンス400における次の命令である)の処理を開始することが可能になる。その後、ブロック512において、図6のプロセッサが終了する。
ここで図7を参照すると、L2キャッシュ230のサイドカー論理322が一実施形態により関連のあるプロセッサ・コア200のハードウェア・スレッドの変換編取り無効化(例えば、TLBIE)要求を処理する例示的な方法の高レベルの論理フローチャートが示される。図7のプロセスは、スレッドごとに行われる。
図7のプロセスはブロック600から開始し、次に、サイドカー論理322が、関連のあるプロセッサ・コア200のハードウェア・スレッドのTLBIE要求がL2 STQ320内にロードされたかどうかを判断することを示すブロック602に進む。ロードされていない場合、プロセスは、ブロック602において繰り返す。しかしながら、関連のあるプロセッサ・コア200のハードウェア・スレッドのTLBIE要求がL2 STQ320にロードされている場合、サイドカー論理322は、L2 STQ320からTLBIE要求を除去し、TLBIE要求を、インターフェース321を介して、開始スレッドに対応するサイドカー324に移動させる(ブロック604)。L2 STQ320からTLBIE要求を除去することにより、関連したプロセッサ・コア200からの入ってくる要求をL2 STQ320が受け取ることができないため、デッドロックが発生しないことが保証され、こうした要求がL2 STQ320を通って流れることが可能になる。
ブロック606において、サイドカー324は、インターフェース326及びローカル相互接合114を介して、コンセンサス・プロトコル(従来のものとすることができる)に関与し、1つ1つのL2 キャッシュ230における1つ(及び1つのみ)のTSNマシン346がそのTLBIE要求を受け取ることを保証する。さらに、コンセンサス・プロトコルは、ひとたび対応するTSNマシン346の全てがTLBIE要求を受け取ると、種々のTSNマシン346がTLBIE要求をサービスするためのアクションのみを取ることを保証する。その後、プロセスは、説明されたブロック602に戻る。
ここで図8を参照すると、一実施形態による、TSNマシン346がTLBIE要求及びTSYNC要求を処理する例示的な方法の高レベル論理フローチャートが示される。示されるプロセスは、各TSNマシン346について独立して同時に実行される。
プロセスがブロック700から開始し、次にブロック702及び720に進む。ブロック702及び後続のブロック704は、コンセンサス・プロトコルを介したTLBIE要求の受信に応答して、TSNマシン346がTLBIE要求をバッファリングし、TLBIE_アクティブ状態を呈する。システム・ファブリック110、114上で、開始プロセッサ・コア200のL2 キャッシュ230及び図7のブロック606におけるデータ処理システム100の全ての他のプロセッサ・コア200のものにブロードキャストされるTLBIE要求は、インターフェース329を介してL2キャッシュ230に受け取られ、ディスパッチ/応答論理336により処理され、次にTSNマシン346に割り当てられる。上述のように、好ましい実施形態において、コンセンサス・プロトコルは、TSNマシン346が全ての他のL2キャッシュ230によりTLBIE要求に同様に割り当てられる場合にのみ、TLBIE要求が、1つのL2キャッシュ230内のTSNマシン346に割り当てられるという状況を実施する。図9のブロック802を参照して以下にさらに説明されるように、TLBIE_アクティブ状態を呈するTSNマシン346は、TLBIE要求を処理する準備ができていることを、関連したアービタ348に知らせる。
ブロック706は、信号ライン330を介したTLBCMPLT_ACK信号の受信により示されるように、関連したプロセッサ・コア200によるTLBIE要求の処理(即ち、変換構造310内の関連する変換エントリの無効化及びプロセッサ・コア200からの関連するメモリ参照要求のドレイン)が完了するまで、TSNマシン346が、TLBIE_アクティブ状態のままであることを示す。TLBCMPLT_ACK信号の受信に応答して、TLBIE_アクティブ状態がリセットされ、TSNマシン346は、再割り当てのために解放される(ブロック708)。その後、図8のプロセスは、ブロック708から、説明されたブロック702に戻る。
ここでブロック720〜724を参照すると、TSNマシン346は、ブロック720において、ブロック704において確立されたTLBIE_アクティブ状態にあるかどうかを判断する。TLBIE_アクティブ状態にない場合、プロセスは、ブロック720において繰り返す。しかしながら、TSNマシン346が、ブロック704において確立されたTLBIE_アクティブ状態にある場合、TSNマシン346は、そのTLBIE要求の開始ハードウェア・スレッドのTSYNC要求が検出されたかどうかを判断するために監視を行う(ブロック722)。TSYNC要求が検出されない場合、プロセスは、ブロック720〜722において引き続き繰り返す。しかしながら、TSNマシン346がTLBIE_アクティブ状態にある間にそのTLBIE要求の開始ハードウェア・スレッドのTSYNC要求を検出することに応答して、ブロック724に示されるように、TSNマシン346は、システム・ファブリック110、114を介して、再試行コヒーレンス応答を提供する。図13のブロック1208を参照して以下に説明されるように、開始ハードウェア・スレッドのTLBIE要求を処理するいずれかのTSNスヌーパ346による再試行コヒーレンス応答は、ソースL2キャッシュ230によるTSYNC要求の再発行を強制し、再試行コヒーレンス応答なしでTSYNC要求が完了するまで、開始ハードウェア・スレッドがHWSYNC命令410に進むのを防止する。開始プロセッサ・コア200以外の全てのプロセッサ・コア200がTLBIE要求の処理を完了すると、TSYNC要求は、再試行コヒーレンス応答なしに完了する。(図6のブロック508を参照して上述されたように、TLBIE要求の処理のために命令のディスパッチが停止されるために、開始プロセッサ・コア200がTLBIE要求の処理を完了するまで、開始プロセッサ・コア200により、TSYNC要求は発行されない。)
ここで図9を参照すると、一実施形態による、L2キャッシュ230のアービタ348がTLBIE要求を処理する例示的な方法の高レベル論理フローチャートがある。プロセスはブロック800から開始し、アービタ348が、そのTSNマシン346のいずれかがTLBIE_アクティブ状態にあるかどうかを判断することを示すブロック802に進む。TLBIE_アクティブ状態にない場合、ブロック802において図9のプロセスを繰り返す。しかしながら、そのTSNマシン346の1つ又は複数がTLBIE_アクティブ状態にあると判断することに応答して、アービタ348は、そのTLBIE要求が以前転送されなかった、TLBIE_アクティブ状態にあるTSNマシン346の1つを選択し、そのTLBIE要求を、インターフェース350を介して関連のあるプロセッサ・コア200の変換シーケンサ312に伝送する(ブロック804)。デッドロックを回避するために、変換シーケンサ312は、一定の時間内に且つTLB要求を受け付ける任意の遅延なしに、TLB要求を受け付けるように構成される。
プロセスはブロック804から、関連のあるプロセッサ・コア200が、TLBIE要求に応答して、変換構造310内の関連する変換エントリ(単数又は複数)を無効化し、無効化された変換エントリにより変換されたそのターゲット・アドレスを有していた関連するメモリ参照要求をドレインしたことを示すTLBCMPLT_ACKメッセージの受信を、アービタ348が待っていることを示すブロック806に進む。従って、ブロック806において、アービタ348は、開始スレッド(ブロック508)及びL2キャッシュ230の各々におけるTSNマシン346(ブロック706)の両方のようにTLBCMPLT_ACKメッセージを待っている。ブロック806におけるTLBCMPLT_ACKメッセージの受信に応答して、プロセスは、説明されたブロック802に戻る。プロセスがブロック802戻る前に、ブロック706及び708に示されるようにTLBIE_アクティブ状態がリセットされるので、プロセスがブロック802に戻るまで、以前に選択されたTSNマシン346は、既に処理されたTLBIE要求に関して、依然としてTLBIE_アクティブ状態にないことに留意されたい。
図9のプロセス(特に、ブロック802及び806)は、プロセッサ・コア200により一度に1つのTLBIE要求だけが処理されることを保証する。図10を参照して以下に説明されるように、プロセッサ・コア200によるTLBIE要求のシリアル処理は、TLBCMPLT_ACKメッセージにタグ付けして、それらをTLBIE要求と関連付け、命令マーク付け機構を簡単化する必要性を排除する。しかしながら、当業者であれば、他の実施形態においては、プロセッサ・コア200は、何らかの付加的な複雑さを有して複数のTLBIE要求を同時にサービスするように構成できることを理解するであろう。
ここで図10を参照すると、一実施形態により、開始又はスヌーピング・プロセッサ・コア200の変換シーケンサ312がTLBIE要求を処理する例示的な方法の高レベル論理フローチャートが示される。図10に示されるプロセスはブロック900から開始し、図9のブロック804を参照して上述されるように、変換シーケンサ312がアービタ348により転送されるTLBIE要求の受信を待っていることを示すブロック902に進む。TLBIE要求の受信に応答して、変換シーケンサ312は、TLBIE要求のターゲット実効アドレスを変換する変換構造310内の1つ又は複数のエントリ(例えば、PTE又は他の変換エントリ)を無効化する(ブロック904)。さらに、ブロック906において、変換シーケンサ312は、プロセッサ・コア200からドレインされるべき全てのメモリ参照要求にマーク付けする。
あまり正確ではない実施形態において、ブロック906において、変換シーケンサ312は、そうしたメモリ参照要求のいずれかが、ブロック902で受け取ったTLBIE要求により無効化された変換エントリにより変換されたそのターゲット・アドレスを有することができたという仮定の下で、変換されたそのターゲット・アドレスを有していたプロセッサ・コア200における全てのハードウェア・スレッドの全てのメモリ参照要求にマーク付けする。従って、この実施形態において、マーク付けされたメモリ参照要求は、L1 STQ304内の全てのストア要求及びLMQ306内の全てのロード要求を含む。この実施形態は、L1 STQ304及びLMQ306の全てのエントリについての比較器を実装する必要性を排除するが、長いドレイン時間のために高いレイテンシをもたらし得る。
より正確な実施形態は、L1 STQ304及びLMQ306の全てのエントリについて比較器を実装する。この実施形態において、各比較器は、TLBIE要求によって指定される(及び、MMU308によって変換されない)実効アドレス・ビットのサブセットを、L1 STQ304又はLMQ306の関連したエントリ内に指定されたターゲット実アドレスの対応する実アドレス・ビットと比較する。比較器が合致を検出するメモリ参照要求だけが、変換シーケンサ312によりマーク付けされる。従って、このより正確な実施形態は、付加的な比較器を犠牲にして、マーク付けされたメモリ・アクセス要求の数を低減させる。
あまり正確でない及びより正確なマーク付け実施形態の幾つかの実装において、変換シーケンサ312により適用されるマーク付けは、プロセッサ・コア200内の要求にのみ適用され、マーク付けされた要求がプロセッサ・コア200からドレインされるまでしか持続しない。こうした実装において、L2キャッシュ230は元に戻り、L2キャッシュ230内の実行中の全ての要求が、TLBIE要求により無効化された変換エントリにより変換されたそのアドレスを有しており、且つ、TLBIE要求のターゲット実効アドレスの新しい変換を用いてストア要求を処理する前に、全てのそうしたストア要求のドレインを強制し得ることを悲観的に仮定することができる。他の実装においては、変換シーケンサ312により適用されるより正確なマーク付けは、L2キャッシュ230内の実行中のストア要求にも拡張することができる。
図10のプロセスは、ブロック906から、変換シーケンサ312が、ブロック906においてマーク付けされた要求がプロセッサ・コア200からドレインするのを待つことを示すブロック908へ進む。特定的には、変換シーケンサ312は、ブロック906でマーク付けされた全てのロード要求は、プロセッサ・コア200に戻されたその要求されたデータを有しており、且つ、ブロック906でマーク付けされた全てのストア要求がL2 STQ320に発行されるまで待つ。全てマーク受けされた要求がプロセッサ・コア200からドレインするのに応答して、変換シーケンサ312は、TLBCMPLT要求をL2 STQ320に挿入して、変換シーケンサ312によるTLBIE要求のサービスが完了したことを示す(ブロック910)。その後、ブロック912において、図10のプロセスが終了する。
ここで図11を参照すると、一実施形態による、L2 STQ320がTLBCMPLT要求を処理する例示的な方法の高レベル論理フローチャートが示される。図11のプロセスはブロック1000から開始し、次に、図10のブロック910を参照して上述されたように、L2 STQ320がその関連したプロセッサ・コア200により発行されるTLBCMPLT要求を受け取り、エントリの1つの中にエンキューすることを示すブロック1002に進む。ブロック1004に示されるように、TLBCMPLT要求を受け取った後、L2 STQ320は、L2 STQ320から全てのハードウェア・スレッドの全てのより古いストア要求がドレインするまで待つ。ひとたびL2 STQ320からより古いストア要求の全てがドレインされると、プロセスは、ブロック1004から、L2 STQ320が、TLBIE要求を発行したTSNマシン346、並びにブロック706及び708を参照して上述されたようにTLBIE要求の処理の完了の確認を待つアービタ348に、バス330を介して、TLBCMPLT_ACK信号を伝送することを示すブロック1006に進む。
ブロック1008において、L2 STQ320は、例えば、TLBCMPLT要求内のスレッド識別情報を調べることにより、関連のあるプロセッサ・コア200が、その完了がTLBCMPLT要求により知らせられるTLBIE要求の開始プロセッサ・コアであるかどうかを判断する。開始プロセッサ・コアでない場合(プロセスが、スヌーピング処理コア200と関連したL2キャッシュ230で行われていることを意味する)、TLBIE要求の処理は完了し、L2 STQ320は、L2 STQ320からTLBCMPLT要求を除去する(ブロック1014)。その後、ブロック1016においてプロセスは終了する。
一方、L2キャッシュ320が、ブロック1008において、その関連のあるプロセッサ・コア200がサイドカー論理322内にバッファリングされたTLBIE要求の開始プロセッサ・コア200であると判断する場合、プロセスは、ブロック1008から、L2 STQ320が、バス330を介してTLBCMPLT_ACK信号をサイドカー論理322に発行することを示すブロック1009に進む。TLBCMPLT_ACK信号の受信に応答して、サイドカー論理322は、バス325を介して、TLBCMPLT_ACK信号を関連のあるプロセッサ・コア200に発行する。図6のブロック508を参照して上述されるように、TLBCMPLT_ACK信号の受信により、プロセッサ・コア200の開始スレッドが解放され、新しい命令(即ち、その挙動が図12を参照して説明されるTSYNC命令408)のディスパッチを再開する。次に、関連するサイドカー324は、完了したTLBIE要求を除去し(ブロック1012)、プロセスは、説明されたブロック1014及び1016に移る。
ここで図12を参照すると、一実施形態による、プロセッサ・コア200が変換同期(例えば、TSYNC)命令を処理する例示的な方法の高レベル論理フローチャートが示される。
示されるプロセスはブロック1100から開始し、次に、プロセッサ・コア200の実行ユニット300による命令シーケンス400におけるTSYNC命令408の実行を示すブロック1101に進む。TSYNC命令408の実行に応答して、プロセッサ・コア200は、ハードウェア・スレッド内のあらゆる後の命令のディスパッチを停止する(ブロック1102)。上述のように、図3の例示的な実施形態において、サイドカー論理322は、プロセッサ・コア200のハードウェア・スレッド毎に単一のサイドカー324しか含まず、そのことは、一度に、スレッド毎に最大でも1つのTLBIE又はTSYNC要求がアクティブであり得ることを意味する。
ブロック1104において、TSYNC命令408に対応するTSYNC要求が生成され、L1 STQ304に発行される。TSYNC要求は、例えば、要求のタイプ(即ち、TSYNC)を示すトランザクション・タイプ、及びTSYNC要求を発行した開始プロセッサ・コア200及びハードウェア・スレッドの表示を含むことができる。L1 STQ304内の要求の処理は進行し、ブロック1106に示されるように、TSYNC要求は、最終的に、バス318を介してL1 STQ304からL2 STQ320に移動する。次にプロセスは、開始プロセッサ・コア200が、開始プロセッサ・コア200によるTSYNC要求の処理が完了したことを示すTSYNC_ACK信号を、バス325を介してストレージ・サブシステムから受け取るまで、開始ハードウェア・スレッド内の命令のディスパッチを引き続き控える。(TSYNC_ACK信号の生成は、図13のブロック1210を参照して、以下に説明される。)開始スレッド内の命令のディスパッチは停止されるため、いずれの所定のスレッドについても、L2 STQ320及びサイドカー論理322内に一度に2つのタイプの要求のうちの1つしか存在できないので、別のTLBIE要求による開始ハードウェア・スレッドのサイドカー324の競合は存在し得ないことに再び留意されたい。
ブロック1108において、TSYNC_ACK信号を受信したとの判断に応答して、プロセスは、プロセッサ・コア200が開始スレッドにおける命令のディスパッチを開始することを示すブロック1110に進み、従って、ブロック1110におけるスレッドの解放により、HWSYNC命令410(命令シーケンス400における次の命令である)の処理が可能になる。その後、ブロック1112において、図12のプロセスが終了する。
ここで図13を参照すると、一実施形態による、サイドカー論理324がTSYNC要求を処理する例示的な方法の高レベル論理フローチャートが示される。プロセスはブロック1200から開始し、次に、サイドカー論理324が、インターフェース321を介して、TSYNC要求がL2 STQ320内にエンキューされているとの通知を監視することを示すブロック1202に進む。インターフェース321を介して、TSYNC要求がL2 STQ320内にエンキューされているとの通知を受信することに応答して、サイドカー論理322は、インターフェース321を介して、TSYNC要求を開始ハードウェア・スレッドのサイドカー324に移動する(ブロック1204)。TSYNC要求の受信に応答して、サイドカー324は、インターフェース326を介して、システム・ファブリック110、114上でTSYNC要求を発行し(ブロック1206)、次に、TSYNC要求へのコヒーレンス応答を監視し、図8のブロック724に関して以前に説明されたように、いずれかのTSNマシン346が再試行コヒーレンス応答を提供したかどうかを判断する(ブロック1208)。上述のように、TSNマシン346は、TSNマシンが依然としてTLBIE_アクティブ状態にあり、且つそのスヌーピング・プロセッサ・コア200が、同じ開始プロセッサ・コア200及びハードウェア・スレッドの先行するTLBIE要求の処理の完了を待つ場合、再試行コヒーレンス応答を提供する。TLBCMPLT_ACKが開始プロセッサ・コア200に発行される前に、ブロック1006において、TLBCMPLT_ACK信号が発行プロセッサ・コアのTSNマシン346を非アクティブ状態にリセットするので、TSYNC要求が発行されるときまで、発行処理ユニットのTSNマシン346は、もはやTLBIE_アクティブ状態にはなく、再試行コヒーレンス応答を発行しないことに留意されたい。プロセッサ・コア200によるTLBCMPLT_ACK信号の受信により、開始プロセッサ・コア200は、TLBIE命令406の後の命令のディスパッチを再開し、従って、TSYNC命令408を実行して、TSYNC要求を生成する。しかしながら、開始プロセッサ・コア200は、スヌーピング処理コア200がその変換エントリの無効化を完了し、無効化された変換エントリに依存する又は潜在的に依存するとしてマーク付けされたメモリ参照命令をドレインするずっと前に、TLBIE要求の処理を完了することができる。従って、開始プロセッサ・コア200がHWSYNC命令410を実行する前に、TSYNC要求は、変換エントリの無効化、及びスヌーピング処理コア200における無効化された変換エントリに依存するメモリ参照命令のドレインが完了する。
ひとたび全てのスヌーピング・プロセッサ・コア200がTLBIE要求のその処理を完了すると、最終的に、TSYNC要求は、再試行コヒーレンス応答なしに完了する。ブロック1208において、TSYNC要求が再試行コヒーレンス応答なしに完了することに応答して、サイドカー324は、バス325を介して、TSYNC_ACK信号を開始プロセッサ・コア200に発行する(ブロック1210)。ブロック1108を参照して上述されたように、TSYNC_ACK信号の受信に応答して、開始プロセッサ・コア200は、より若いメモリ参照命令に対する開始スレッドの順序付け要件を完了するHWSYNC命令410を実行する。ブロック1210の後、サイドカー324は、TSYNC要求を除去し(ブロック1212)、プロセスは、説明されたブロック1202に戻る。
ここで図6〜図13を参照して、図4の命令シーケンス400及び関連した処理が詳細に説明されたが、次に、多数の命令、特定てきには、変換無効化シーケンスにおける同期命令の数を低減させる代替的なコード・シーケンス420を示す図5を参照する。示されるように、命令シーケンス420は、ページ・フレーム・テーブル220内のPTE222を無効化するための1つ又は複数のストア命令422、HWSYNC命令424、及び全てのプロセッサ・コア200内の指定された実効アドレスについてのキャッシュされた変換エントリを無効化する1つ又は複数のTLBIE命令426を含む。従って、命令422〜426は、図4の命令シーケンス426の命令402〜406に対応する。命令シーケンス420は、TLBIE命令426の直後のPTESYNC命令430を付加的に含む。PTESYNC命令430は、図4の命令シーケンス400のTSYNC命令408及びHWSYNC命令410によって実行される作業を結合して単一の命令にする。つまり、PTESYNC命令430の実行は、TLBIE命令426により生成されるTLBIE要求のシステム全体の完了の保証(TSYNC命令408の実行により生成されるTSYNC要求が行うような)、及び、より若いメモリ参照命令に対する命令の順序付けの実施(HWSYNC命令410の実行によって生成されるHWSYNC要求が行うような)の両方のために、データ処理システム100の全ての処理ユニット104にブロードキャストされるPTESYNC要求をもたらす。
命令シーケンス420及び400の類似性が与えられた場合、命令シーケンス420の処理は、図14〜図16を参照して以下に説明される、PTESYNC命令430の実行により生成されるPTESYNC要求に関連した処理を除いて、図6〜図13に与えられる命令シーケンス400についてのものと同じである。
ここで図14を参照すると、一実施形態による、処理コア200がページ・テーブル同期(例えば、PTESYNC)命令430を処理する例示的な方法の高レベルの論理フローチャートが示される。上述のように、PTESYNC命令430及びその実効アドレス-実アドレス変換により生成されるPTESYNC要求は、2つの機能、即ち、TLBIE命令426により生成されるTLBIE要求のシステム全体の完了を保証すること、及びより若いメモリ参照命令に対する命令の順序付けの実施を有する。
示されるプロセスは、ブロック1300から始まり、プロセッサ・コア200が、実行ユニット300内の命令シーケンス420におけるPTESYNC命令430の実行により、PTESYNC要求を生成することを示すブロック1301に進む。PTESYNC要求は、例えば、要求のタイプを示すトランザクション・タイプ(即ち、PTESYNC)及びPTESYNC要求を発行した開始プロセッサ・コア200及びハードウェア・スレッドの表示を含むことができる。PTESYNC命令430の実行に応答して、プロセッサ・コア200は、開始ハードウェア・スレッド内のあらゆるより若い命令のディスパッチを停止する(ブロック1302)。上述のように、図3の例示的な実施形態において、サイドカー論理322は、プロセッサ・コア200のハードウェア・スレッド毎に単一のサイドカー324だけを含み、それは、この実施形態においては、一度に、スレッド毎に最大でも1つのTLBIE又はPTESYNC要求がアクティブであり得ることを意味するので、ディスパッチは停止される。
ブロック1302に続いて、図14のプロセスは、並行してブロック1303及びブロック1304〜1312に進む。ブロック1303は、開始プロセッサ・コア200が、全てのハードウェア・スレッドの全ての適切なより古いロード要求(即ち、HWSYNC要求の処理が完了する前に要求されるデータを受け取るために、HWSYNCによりアーキテクチャ的に要求されもの)が、LMQ306からドレインするのを待つことにより、PTESYNC要求のロード順序付け機能を実施することを表す。ブロック1303においてこれらのロード要求が満たされるのを待つことにより、ブロック906において識別されたロード要求のセットが、再割り当てされたメモリ・ページではなく、正しいメモリ・ページからデータを受け取る(ターゲット・アドレスが再割り当てされるメモリ・ページ上にあった場合でも)ことが保証される。
ブロック1303と同時に、プロセッサ・コア200は、PTESYNC命令430に対応するPTESYNC要求も、L1 STQ304に発行する(ブロック1304)。プロセスは、ブロック1304から、全てのハードウェア・スレッドの全ての適切なより古いストア要求(即ち、L1 STQ304からドレインされるよう、HWSYNCによりアーキテクチャ的に要求されるもの)が、L1 STQ304からドレインするのを待つことにより、プロセッサ・コア200は、PTESYNC要求のストア順序付け機能を実施することを示すブロック1308に進む。ひとたびブロック1308において行われたストア順序付けが完了すると、ブロック1310に示されるように、PTESYNC要求が、バス318を介して、L1 STQ304からL2 STQ320に発行される。
次に、プロセスは、ブロック1310から、開始プロセッサ・コア200が監視を行って、開始プロセッサ・コア200によるPTESYNC要求の処理が完了したことを示すPTESYNC_ACK信号を、バス325を介してストレージ・サブシステムから受信したことを検出することを示すブロック1312に進む。(PTESYNC_ACK信号の生成は、図15のブロック1410を参照して、以下に説明される。)開始ハードウェア・スレッド内の命令のディスパッチが停止されたままであるため、いずれの所定のスレッドについても、L2 STQ320及びサイドカー論理322内に、一度にTLBIE要求又はPTESYNC要求の1つしか存在できないので、別のTLBIE要求による開始ハードウェア・スレッドのサイドカー324の競合は存在し得ないことに再び留意されたい。
ブロック1303及び1312の両方における肯定的判断にのみ応答して、図14のプロセスは、プロセッサ・コア200が、開始スレッド内の命令のディスパッチを再開することを示すブロック1314に進み、従って、ブロック1314におけるスレッドの解放により、PTESYNC命令430の後の命令の処理を開始することが可能になる。その後、ブロック1316において図14のプロセスが終了する。
ここで図15を参照すると、一実施形態による、処理ユニット104のL2 STQ320及びサイドカー論理322がPTESYNC要求を処理する例示的な方法の高レベル論理フローチャートが示される。図15のプロセスはブロック1400から開始し、次に、図14のブロック1310を参照して上述されたように、L2 STQ320が、L1 STQ304からのPTESYNC要求の受信を監視することを示すブロック1402に進む。図5の第2の実施形態において、PTESYNC要求の受信に応答して、L2 STQ320及びサイドカー論理324は協働して2つの機能、即ち(1)L2 STQ320内のストア要求についてのストア順序付け、及び(2)他の処理コア200の全てにおけるTLBIE要求の完了の保証を実施する。図15の実施形態において、これらの2つの機能は、それぞれ、ブロック1403、1405、並びにブロック1404、1406及び1408において示される2つの経路に沿って並行して実行される。代替的な実施形態において、これらの機能は、最初にブロック1403及び1405に示される順序付け機能を実行し、次に、ブロック1404、1406及び1408におけるTLBIE要求の完了を保証することによって、代わりにシリアル化することができる。(ストア順序付けを行う前にTLBIE要求の完了を保証することによって、これらの機能の順序付けをシリアル化しようとする試みがデッドロックをもたらし得ることに留意されたい。)
ここでブロック1403〜1405を参照すると、L2 STQ320は、L2 STQ320内の全ての適切なより古いストア要求がL2 STQ320からドレインされたことを保証することによって、PTESYNC要求についてのストア順序付けを行う。ブロック1403で順序付けられたストア要求のセットは、以前のTLBIE要求により無効化された変換エントリにより変換されたターゲット・アドレスを有していた可能性がある第1のサブセットを含む。この第1のサブセットは、ブロック906でマーク付けされたものに対応する。さらに、ブロック1403で順序付けられたストア要求のセットは、アーキテクチャ的に定められたストア要求がHWSYNCにより順序付けられるものを含む第2のサブセットを含む。ひとたび全てのこうしたストア要求がL2 STQ320からドレインされると、L2 STQ320は、L2 STQ320からPTESYNC要求を除去する(ブロック1405)。PTESYNC要求の除去により、PTESYNC要求より若いストア要求がL2 STQ320を通って流れることが可能になる。
ここでブロック1404を参照すると、サイドカー論理322は、L2 STQ320におけるPTESYNC要求の存在を検出し、ブロック1405においてL2 STQ320からPTESYNC要求を除去する前に、インターフェース321を介して、PTESYNC要求を適切なサイドカー324にコピーする。次に、プロセスは、ブロック1406及び1408に示されるループに進み、そこで、サイドカー論理322は、プロセッサ・コア200が再試行コヒーレンス応答に応答しなくなるまで(即ち、同じプロセッサ・コア及びハードウェア・スレッドの先行するTLBIE要求が、全てのスヌーピング・プロセッサ・コア200により完了されるまで)、システム・ファブリック110、114上でPTESYNC要求を発行し続ける。
ブロック1403、1405、並びにブロック1404、1406及び1408に示される機能の両方の完了のみに応答して、プロセスは、サイドカー論理322がバス325を介してPTESYNC_ACK信号を関連のあるプロセッサ・コアに発行することを示すブロック1410に進む。次に、サイドカー論理322は、サイドカー324からPTESYNC要求を除去し(ブロック1412)、プロセスは、説明されたブロック1402に戻る。
ここで図16を参照すると、一実施形態による、TSNマシン346が、TLBIE要求、TLBCMPT_ACK信号、及びPTESYNC要求を処理する例示的な方法の高レベル論理フローチャートがある。同様の参照番号で示されるように、図16は、ブロック1522を除いて、図8に前述したものと同じである。ブロック1522は、ブロック704において確立されたTLBIE_アクティブ状態にある間、TSNマシン346が監視を行って、そのTLBIE要求に合致する、開始プロセッサ・コア及びハードウェア・スレッドを指定するPTESYNC要求が検出されたかどうかを判断することを示す。検出されない場合、プロセスは、ブロック720及び1522を含むループにおいて繰り返す。しかしながら、TSNマシン346が、TLBIE_アクティブ状態にある間、そのTLBIE要求に合致する、開始プロセッサ・コア及びハードウェア・スレッドを指定するPTESYNC要求を検出することに応答して、ブロック724に示されるように、TSNマシン346は再試行コヒーレンス応答を提供する。上述のように、開始ハードウェア・スレッドのTLBIE要求を処理するいずれかのTSNスヌーパ346による再試行コヒーレンス応答は、PTESYNC要求の再試行を強制し、再試行コヒーレンス応答なしにPTESYNC要求完了するまで、開始ハードウェア・スレッドが、PTESYNC命令430より若いあらゆるメモリ参照命令を実行するのを防止する。
ここで図17を参照すると、例えば、半導体IC論理の設計、シミュレーション、試験、レイアウト及び製造に用いられる例示的な設計フロー1600のブロック図が示される。設計フロー1600は、図14に示される設計構造体及び/又はデバイスの論理的に又は他の方法で機能的に等価な表現を生成するように設計構造体又はデバイスを処理するためのプロセス、機械、及び/又は機構を含む。設計フロー1600によって処理及び/又は生成される設計構造体は、データ処理システム上で実行又は他の方法で処理されたときに、ハードウェア・コンポーネント、回路、デバイス又はシステムの論理的、構造的、機械的、又は他の方法で機能的に等価な表現を生成するデータ及び/又は命令を含むように、機械可読伝送又はストレージ媒体上でコード化することができる。機械は、これらに限定されるものではないが、回路、コンポーネント、デバイス、又はシステムを設計、製造又はシミュレートするといった、IC設計プロセスに用いられるどのようなマシンも含む。例えば、機械は、リソグラフィ機械、マスクを生成するための機械及び/又は機器(例えば、eビーム・ライタ)、設計構造体をシミュレートするためのコンピュータ又は機器、製造プロセス又は試験プロセスの製造に用いられるいずれかの装置、又は設計構造体の機能的に等価な表現をいずれかの媒体にプログラミングするためのいずれかの機械(例えば、プログラマブル・ゲートアレイをプログラミングするための機械)を含むことができる。
設計フロー1600は、設計される表現のタイプに応じて変わり得る。例えば、特定用途向けIC(ASIC)を構築するための設計フロー1600は、標準的なコンポーネントを設計するための設計フロー1600、又はプログラマブル・アレイ、例えば、Altera(登録商標) Inc.又はXilinx(登録商標) Inc.から提供されているプログラマブル・ゲートアレイ(PGA)又はフィールド・プログラマブル・ゲートアレイ(FPGA)に設計をインスタンス化するための設計フロー1600とは異なることがある。
図17は、好ましくは設計プロセス1610によって処理される入力設計構造体1620を含む、複数のこのような設計構造体を示す。設計構造体1620は、設計プロセス1610によって生成及び処理され、ハードウェア・デバイスの論理的に等価な機能表現を生じる、論理的シミュレーション設計構造体とすることができる。設計構造体1620はさらに、又は代替的に、設計プロセス1610によって処理されたときに、ハードウェア・デバイスの物理的構造の機能的表現を生成するデータ及び/又はプログラム命令を含むこともできる。機能的及び/又は構造的設計特徴のどちらを表現するのであれ、設計構造体1620は、コア開発者/設計者によって実施されるような、電子的コンピュータ支援設計(ECAD)を使用して生成することができる。機械可読データ伝送、ゲートアレイ、又はストレージ媒体上でコード化された場合、設計構造体1620を設計プロセス1610内の1つ又は複数のハードウェア及び/又はソフトウェア・モジュールによってアクセス及び処理して、図1〜図3に示されるもののような電子コンポーネント、回路、電子若しくは論理モジュール、装置、デバイス、又はシステムをシミュレートするか、又は他の方法で機能的に表現することができる。そのため、設計構造体1620は、設計又はシミュレーション・データ処理システムによって処理されたときに回路又は他のレベルのハードウェア論理設計を機能的にシミュレートするか、又は他の方法で表現する、人間及び/又は機械可読のソースコード、コンパイルされた構造体、及びコンピュータ実行可能コード構造体を含む、ファイル又は他のデータ構造体を含むことができる。このようなデータ構造体は、ハードウェア記述言語(HDL)設計エンティティ、又は、Verilog及びVHDLのような低レベルHDL設計言語、及び/又はC若しくはC++のような高レベル設計言語に適合する及び/又はそれと互換性のある他のデータ構造体を含むことができる
設計プロセス1610は、設計構造体1620のような設計構造体を含むことができるネットリスト1680を生成するために、図1〜図3に示されるコンポーネント、回路、デバイス又は論理構造体の設計/シミュレーションの機能的等価物を合成、変換又はその他の方法で処理するためのハードウェア及び/又はソフトウェア・モジュールを使用し、組み込むことが好ましい。ネットリスト1680は、例えば、集積回路設計内の他の素子及び回路への接続を記述する配線、個別部品、論理ゲート、制御回路、I/Oデバイス、モデル等のリストを表す、コンパイルされた又は他の方法で処理されたデータ構造体を含むことができる。ネットリスト1680は繰り返しプロセスを用いて合成することができ、このプロセスにおいて、ネットリスト1680は、デバイスの設計仕様及びパラメータに応じて1回又は複数回再合成される。ここで説明された他の設計構造体のタイプと同様に、ネットリスト1680を機械可読データ・ストレージ媒体上に記録し、又はプロブラマブル・ゲートアレイにプログラムすることができる。媒体は、磁気又は光ディスク・ドライブのような不揮発性ストレージ媒体、プロブラマブル・ゲートアレイ、コンパクト・フラッシュ、又は他のフラッシュメモリとすることができる。それに加えて、又は代替的に、媒体は、システム又はキャッシュ・メモリ、又はバッファ領域とすることができる。
設計プロセス1610は、ネットリスト1680を含む様々な入力データ構造体のタイプを処理するためのハードウェア及びソフトウェア・モジュールを含むことができる。このようなデータ構造体のタイプは、例えば、ライブラリ要素1630内に常駐し、所与の製造技術(例えば、異なる技術ノード32nm、45nm、90nm等)についての、モデル、レイアウト及び記号表示を含む、一般的に用いられる要素、回路及びデバイスの組を含むことができる。データ構造体のタイプは、設計仕様1640と、特性データ1650と、検証データ1660と、設計規則1670と、入力試験パターン、出力試験結果及び他の試験情報を含むことができるテスト・データ・ファイル1685とをさらに含むことができる。設計プロセス1610は、例えば、応力分析、熱分析、機械イベント・シミュレーション、鋳造、成形、ダイ・プレス形成等のような動作のためのプロセス・シミュレーションのような標準的な機械設計プロセスをさらに含むことができる。機械設計の当業者であれば、本発明の範囲及び趣旨から逸脱することなく、設計プロセス1610に用いられる可能な機械設計ツール及びアプリケーションの範囲を認識することができる。設計プロセス1610はまた、タイミング分析、検証、設計規則照合、場所及びルート動作等のような標準的な回路設計プロセスを実行するためのモジュールを含むこともできる。
設計プロセス1610は、第2の設計構造体1690を作成するために、HDLコンパイラ及びシミュレーション・モデル構築ツールのような論理的及び物理的設計ツールを使用し、組み込んで、設計構造体1620を、図示された支持データ構造体のうちの幾つか又は全てと共に、いずれかの付加的な機械設計又はデータ(該当する場合)と併せて処理する。設計構造体1690は、機械的なデバイス及び構造体のデータの交換に用いられるデータ形式(例えば、IGES、DXF、Parasolid XT、JT、DRG、又はこのような機械的設計構造体を格納又はレンダリングするのに適したその他のいずれかの形式で格納される情報)でストレージ媒体又はプログラマブル・ゲートアレイ上に存在する。設計構造体1620と同様に、設計構造体1690は、好ましくは、1つ又は複数のファイル、データ構造体、又は他のコンピュータ・コード化データ又は命令を含み、これは、伝送又はデータ・ストレージ媒体上に存在し、かつ、ECADシステムによって処理されると図1〜図3に示される本発明の実施形態の1つ又は複数の論理的又はその他の方式で機能的に等価な形態を生成する。1つの実施形態において、設計構造体1690は、例えば、図1〜図3に示されるデバイスを機能的にシミュレートする、コンパイルされた実行可能なHDLシミュレーション・モデルを含むことができる。
設計構造体1690はまた、集積回路のレイアウト・データの交換に用いられるデータ形式、及び/又は記号データ形式(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、又はこのような設計データ構造体を格納するためのその他のいずれかの適切な形式で格納される情報)を使用することもできる。データ構造体1690は、例えば、記号データ、マップファイル、試験データ・ファイル、設計コンテンツ・ファイル、製造データ、レイアウト・パラメータ、配線、金属のレベル、ビア、形状、製造ラインを通じた経路指定のためのデータ、並びに、上記に説明され、図1〜図3に示されるようなデバイス又は構造体を製造するために製造者又は他の設計者/開発者により要求される他のいずれかのデータといった情報を含むことができる。次に、設計構造体1690はステージ1695に進むことができ、そこで、例えば、設計構造体1690は、テープに読み出されたり、製造のためにリリースされたり、マスク会社にリリースされたり、別の設計会社に送られたり、顧客に返送されたりする。
既述のように、複数のプロセッサ・コアを含むマルチスレッド・データ処理システムの少なくとも1つの実施形態において、同時に実行している複数のハードウェア・スレッドのストレージ修正要求を、共有キュー内に受け取る。ストレージ修正要求は、開始ハードウェア・スレッドの変換無効化要求を含む。変換無効化要求は、共有キューから除去され、各々が複数のハードウェア・スレッドのそれぞれと関連付けられた複数のサイドカーの1つのサイドカー論理内にバッファリングされる。変換無効化要求は、サイドカー内にバッファリングされるが、サイドカー論理は、変換無効化要求をブロードキャストするので、変換無効化要求は、複数のプロセッサ・コアにより受け取られ、処理される。開始プロセッサ・コアによる変換無効化要求の処理の完了を確認することに応答して、サイドカー論理は、サイドカーから変換無効化要求を除去する。複数のプロセッサ・コアの全てにおける変換無効化要求の処理の完了が、ブロードキャスト同期要求により保証される。
一実施形態において、付加的な同期命令(例えば、HWSYNC)の実行により、ブロードキャスト同期要求を参照して、後のメモリ参照命令が順序付けられる。
種々の実施形態が具体的に示され、説明されたが、当業者であれば、添付の特許請求の範囲の趣旨及び範囲から逸脱することなく、形態及び詳細における種々の変更を本明細書においてなし得ることを理解するであろう。例えば、本明細書の機能を指示するプログラム・コードを実行するコンピュータ・システムに関して態様が説明されたが、本発明は、代替的に、データ処理システムに、説明された機能を実施させるために、データ処理システムのプロセッサにより処理することができるプログラム・コードを格納するコンピュータ可読ストレージ・デバイスを含むプログラム製品として実装できることを理解されたい。コンピュータ可読ストレージ・デバイスは、揮発性又は不揮発性メモリ、光又は磁気ディスク等を含むことができるが、伝搬信号自体、伝送媒体自体及びエネルギー自体の形態のような非法定主題(non-statutory subject matter)を排除する。
一例として、プログラム製品は、データ処理システム上で実行される又は他の方法で処理されるとき、本明細書で開示されるハードウェア・コンポーネント、回路、デバイス又はシステムの論理的、構造的、又は他の方法で機能的に等価な表現(シミュレーション・モデルを含む)を生成する、データ及び/又は命令を含むことができる。こうしたデータ及び/又は命令は、ハードウェア記述言語(HDL)設計エンティティ、又はVerilog及びVHDLのような低レベルHDL設計言語、及び/又はC若しくはC++のような高レベル設計言語に適合する及び/又はそれと互換性のある他のデータ構造体を含むことができる。さらに、データ及び/又は命令は、集積回路のレイアウト・データの交換に用いられるデータ形式、及び/又は記号データ形式(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、又はこのような設計データ構造体を格納するための他のいずれかの適切な形式で格納される情報)を使用することもできる。
100:データ処理システム
102:処理ノード
104、104a〜104d:処理ユニット
108:システム・メモリ
110:システム相互接続
114:ローカル相互接続
200:プロセッサ・コア
222:ページ・フレーム・エントリ(PTE)
220:ページ・テーブル
230:レベル2(L2)キャッシュ
300:実行ユニット
308:メモリ管理ユニット(MMU)
310:変換構造
312:変換シーケンサ
302:レベル1(L1)キャッシュ
304:L1 STQ
320:L2 STQ
322:サイドカー論理
324:サイドカー
346:変換スヌープ(TSN)マシン
348:アービタ
400、420:命令シーケンス
1600:設計フロー
1610:設計プロセス
1620:設計構造体

Claims (13)

  1. 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて、デッドロックなしに前記プロセッサ・コアにおける実効アドレスから実アドレスへの変換のための変換構造の変換エントリを無効化する方法であって、
    前記複数のプロセッサ・コアのうちの開始プロセッサ・コアの同時に実行されている複数のハードウェア・スレッドのストレージ修正要求を共有キュー内に受け取ることであって、前記複数のハードウェア・スレッドのストレージ修正要求は、前記複数のハードウェア・スレッドのうちの開始ハードウェア・スレッドの変換無効化要求を含む、受け取ることと、
    前記共有キュー内に前記変換無効化要求を受け取ることに応答して、前記共有キューから前記変換無効化要求を除去し、前記変換無効化要求をサイドカー論理内にバッファリングすることと、
    前記変換無効化要求がサイドカー論理内にバッファリングされる間に、前記変換無効化要求が前記複数のプロセッサ・コアにより受け取られ処理されるように、前記サイドカー論理が、前記変換無効化要求をブロードキャストすることと、
    前記開始プロセッサ・コアによる前記変換無効化要求の処理の完了を確認することに応答して、前記サイドカー論理が、前記サイドカー論理のサイドカーから前記変換無効化要求を除去することと、
    ブロードキャスト同期要求により前記複数のプロセッサ・コアの全てにおける前記変換無効化要求の処理の完了を保証することと、
    を含み、
    前記開始プロセッサ・コアにおける前記変換無効化要求の処理の完了を確認する確認応答信号を受け取るまで、前記開始プロセッサ・コアが、プログラム順で前記変換無効化要求に続く前記開始ハードウェア・スレッド内の命令のディスパッチを停止することをさらに含む、
    方法。
  2. 前記マルチスレッド・データ処理システムのシステム・ファブリック上の前記変換無効化要求のブロードキャストのスヌーピングに応答して、変換スヌープ・マシンと関連のあるスヌーピング・プロセッサ・コアにおける前記変換無効化要求の処理の完了を確認する信号を受け取り、その後、当該信号により変換スヌープ・マシンがリセットされて非アクティブ状態に戻るまで、変換スヌープ・マシンがアクティブ状態のままであることをさらに含む、請求項1に記載の方法。
  3. 前記変換無効化要求は実効アドレスを指定し、
    前記開始プロセッサ・コアにおいて前記変換無効化要求を受け取ることに応答して、
    前記開始プロセッサ・コアが、前記実効アドレスを変換する1つ又は複数の変換エントリを無効化し、
    前記開始プロセッサ・コアが、前記1つ又は複数の変換エントリに依存する1つ又は複数のメモリ参照要求が前記開始プロセッサ・コアからドレインするのを待ち、その後、
    前記開始プロセッサ・コアが、完了要求を前記共有キューに伝送して、前記開始プロセッサ・コアによる前記変換無効化要求の処理の完了の確認を提供する、
    請求項1に記載の方法。
  4. 前記共有キューが前記完了要求を受け取ることに応答して、前記共有キューは、前記サイドカーから前記変換無効化要求を除去するより前に、前記共有キューから前記共有キュー内の全てのより古いストア要求がドレインされることを保証することをさらに含む、請求項3に記載の方法。
  5. 前記完了を保証することは、前記開始プロセッサ・コアにおける前記変換無効化要求の処理の完了を確認する確認応答信号を受け取って、前記開始プロセッサ・コアが、プログラム順で前記変換無効化要求に続く前記開始ハードウェア・スレッド内の命令のディスパッチを再開した後、前記共有キュー内に変換同期要求を受け取ることに応答して、前記共有キューから前記変換同期要求を除去し、前記変換同期要求を前記サイドカー論理内にバッファリングして、前記変換同期要求が前記サイドカー論理内にバッファリングされる間に、前記サイドカー論理が、前記変換同期要求を前記複数のプロセッサ・コアの全てにブロードキャストして、前記複数のプロセッサ・コアの全てにおける前記変換無効化要求の処理の完了を保証することを含む、請求項1に記載の方法。
  6. 前記開始プロセッサ・コアが、第1の同期命令の実行により、前記ブロードキャスト同期要求を生成することと、
    前記開始プロセッサ・コアが、第2の同期命令の実行により、前記第1の同期命令に対する後のメモリ参照命令の実行を順序付けること、
    をさらに含む、請求項1に記載の方法。
  7. 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムのための処理ユニットであって、前記処理ユニットは、
    アドレス変換をキャッシュする変換構造と、
    前記変換構造を参照することにより、実効アドレスを実アドレスに変換するメモリ管理ユニットと、
    複数のハードウェア・スレッドを同時に実行する実行ユニットであって、前記複数のハードウェア・スレッドのうちの開始スレッドは、対応する変換無効化命令の実行によって変換無効化要求を生成する、実行ユニットと、
    前記同時に実行されている複数のハードウェア・スレッドのストレージ修正要求を受け取る共有キューであって、前記複数のハードウェア・スレッドのストレージ修正要求は前記変換無効化要求を含む、共有キューと、
    前記共有キューに結合され、各々が前記複数のハードウェア・スレッドのそれぞれと関連付けられた複数のサイドカーを含む、サイドカー論理と、
    を含むプロセッサ・コアを含み、前記処理ユニットは、
    前記共有キュー内に前記変換無効化要求を受け取ることに応答して、前記共有キューから前記変換無効化要求を除去し、前記変換無効化要求を前記開始スレッドと関連したサイドカー内にバッファリングすることと、
    前記変換無効化要求が前記サイドカー内にバッファリングされる間に、前記変換無効化要求が前記複数のプロセッサ・コアにより受け取られ処理されるように、前記変換無効化要求をブロードキャストすることと、
    前記プロセッサ・コアによる前記変換無効化要求の処理の完了を確認することに応答して、前記サイドカーから前記変換無効化要求を除去することと、
    ブロードキャスト同期要求により前記複数のプロセッサ・コアの全てにおける前記変換無効化要求の処理の完了を保証することと、
    を実行するように構成され、
    前記処理ユニットは、前記プロセッサ・コアにおける前記変換無効化要求の処理の完了を確認する肯定応答信号を受け取るまで、プログラム順で前記変換無効化要求に続く前記開始スレッド内の命令のディスパッチを停止するようにさらに構成される、
    処理ユニット。
  8. 前記マルチスレッド・データ処理システムのシステム・ファブリック上の前記変換無効化要求のブロードキャストのスヌーピングに応答して、前記プロセッサ・コアにより前記変換無効化要求の処理の完了を確認する信号を受け取り、その後、当該信号によりリセットされて非アクティブ状態に戻るまでアクティブ状態のままである、変換スヌープ・マシンをさらに含む、請求項7に記載の処理ユニット。
  9. 前記変換無効化要求は実効アドレスを指定し、
    前記プロセッサ・コアは、前記変換無効化要求を受け取ることに応答して、前記実効アドレスを変換する前記変換構造内の1つ又は複数の変換エントリを無効化する変換シーケンサを含み、
    前記プロセッサ・コアは、前記変換無効化要求に応答して、前記1つ又は複数の変換エントリに依存する1つ又は複数のメモリ参照要求が前記プロセッサ・コアからドレインするのを待ち、その後、完了要求を前記共有キューに伝送して前記プロセッサ・コアによる前記変換無効化要求の処理の完了の確認を提供するように構成される、請求項7に記載の処理ユニット。
  10. 前記共有キューは、前記完了要求を受け取ることに応答して、前記サイドカーから前記変換無効化要求を除去するより前に、前記共有キューから、前記共有キュー内の全てのより古いストア要求がドレインされることを保証する、請求項9に記載の処理ユニット。
  11. 前記ブロードキャスト同期要求は、前記サイドカー論理によりブロードキャストされる変換同期要求であ前記処理ユニットは、前記プロセッサ・コアにおける前記変換無効化要求の処理の完了を確認する肯定応答信号を受け取って、前記プロセッサ・コアが、プログラム順で前記変換無効化要求に続く前記開始スレッド内の命令のディスパッチを再開した後、前記共有キュー内に前記変換同期要求を受け取ることに応答して、前記共有キューから前記変換同期要求を除去し、前記変換同期要求を前記サイドカー論理内にバッファリングして、前記変換同期要求が前記サイドカー論理内にバッファリングされる間に、前記サイドカー論理が、前記変換同期要求を前記複数のプロセッサ・コアの全てにブロードキャストして、前記複数のプロセッサ・コアの全てにおける前記変換無効化要求の処理の完了を保証するように構成される、請求項7に記載の処理ユニット。
  12. 前記プロセッサ・コアが、第1の同期命令の実行により前記ブロードキャスト同期要求を生成し、
    前記プロセッサ・コアが、第2の同期命令の前記実行ユニットによる実行に応答して、前記第1の同期命令に対する後のメモリ参照命令の実行を順序付ける、請求項7に記載の処理ユニット。
  13. 請求項7に記載の複数の処理ユニットと、前記複数の処理ユニットを結合するシステム・ファブリックとを含むデータ処理システム。
JP2016241038A 2015-12-22 2016-12-13 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体 Active JP6933896B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/977,797 US9575815B1 (en) 2015-12-22 2015-12-22 Translation entry invalidation in a multithreaded data processing system
US14/977797 2015-12-22

Publications (2)

Publication Number Publication Date
JP2017117453A JP2017117453A (ja) 2017-06-29
JP6933896B2 true JP6933896B2 (ja) 2021-09-08

Family

ID=58017625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016241038A Active JP6933896B2 (ja) 2015-12-22 2016-12-13 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体

Country Status (2)

Country Link
US (1) US9575815B1 (ja)
JP (1) JP6933896B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928119B2 (en) * 2015-12-22 2018-03-27 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9898416B2 (en) 2015-12-22 2018-02-20 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US9830198B2 (en) 2015-12-22 2017-11-28 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US10365824B2 (en) * 2017-04-24 2019-07-30 Advanced Micro Devices, Inc. Silent active page migration faults
US10496335B2 (en) 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US10318435B2 (en) * 2017-08-22 2019-06-11 International Business Machines Corporation Ensuring forward progress for nested translations in a memory management unit
US11526278B2 (en) 2017-12-21 2022-12-13 Advanced Micro Devices, Inc. Adaptive page close prediction
US10977183B2 (en) 2018-12-11 2021-04-13 International Business Machines Corporation Processing a sequence of translation entry invalidation requests with regard to draining a processor core
US10740239B2 (en) 2018-12-11 2020-08-11 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US10817434B2 (en) * 2018-12-19 2020-10-27 International Business Machines Corporation Interruptible translation entry invalidation in a multithreaded data processing system
US11748267B1 (en) 2022-08-04 2023-09-05 International Business Machines Corporation Concurrent processing of translation entry invalidation requests in a processor core

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5437017A (en) 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US6171714B1 (en) 1996-04-18 2001-01-09 Gould Electronics Inc. Adhesiveless flexible laminate and process for making adhesiveless flexible laminate
US6128705A (en) 1998-01-07 2000-10-03 International Business Machines Corporation Method and apparatus for executing multiply-initiated, multiply-sourced variable delay system bus operations
US6202131B1 (en) 1998-01-07 2001-03-13 International Business Machines Corporation Method and apparatus for executing variable delay system bus operations of differing type or character without dead lock using shared buffers
US6314495B1 (en) 1998-01-07 2001-11-06 International Business Machines Corporation Method and apparatus for executing multiply-initiated, multiply-sourced variable delay system bus operations
US6119204A (en) * 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6178485B1 (en) 1998-07-13 2001-01-23 International Business Machines Corporation Method and apparatus for executing singly-initiated, singly-sourced variable delay system bus operations of differing character
US6480915B1 (en) 1999-11-09 2002-11-12 International Business Machines Corporation Bus protocol and token manager for SMP execution of global operations utilizing a single token with implied release
US6507880B1 (en) 1999-11-09 2003-01-14 International Business Machines Corporation Bus protocol, bus master and bus snooper for execution of global operations utilizing multiple tokens
US6553442B1 (en) 1999-11-09 2003-04-22 International Business Machines Corporation Bus master for SMP execution of global operations utilizing a single token with implied release
US6460101B1 (en) 1999-11-09 2002-10-01 International Business Machines Corporation Token manager for execution of global operations utilizing multiple tokens
US6442629B1 (en) 1999-11-09 2002-08-27 International Business Machines Corporation Bus protocol and token manager for execution of global operations utilizing a single token with multiple operations with explicit release
US6516368B1 (en) 1999-11-09 2003-02-04 International Business Machines Corporation Bus master and bus snooper for execution of global operations utilizing a single token for multiple operations with explicit release
US6460100B1 (en) 1999-11-09 2002-10-01 International Business Machines Corporation Bus snooper for SMP execution of global operations utilizing a single token with implied release
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7617378B2 (en) 2003-04-28 2009-11-10 International Business Machines Corporation Multiprocessor system with retry-less TLBI protocol

Also Published As

Publication number Publication date
US9575815B1 (en) 2017-02-21
JP2017117453A (ja) 2017-06-29

Similar Documents

Publication Publication Date Title
JP6933896B2 (ja) 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体
US9710394B2 (en) Translation entry invalidation in a multithreaded data processing system
US9785557B1 (en) Translation entry invalidation in a multithreaded data processing system
CN108885583B (zh) 高速缓存存储器访问
US10817434B2 (en) Interruptible translation entry invalidation in a multithreaded data processing system
US8131935B2 (en) Virtual barrier synchronization cache
US9898416B2 (en) Translation entry invalidation in a multithreaded data processing system
US8095733B2 (en) Virtual barrier synchronization cache castout election
US9772945B1 (en) Translation entry invalidation in a multithreaded data processing system
US10740239B2 (en) Translation entry invalidation in a multithreaded data processing system
US10977183B2 (en) Processing a sequence of translation entry invalidation requests with regard to draining a processor core
US9830198B2 (en) Translation entry invalidation in a multithreaded data processing system
US9928119B2 (en) Translation entry invalidation in a multithreaded data processing system
US10970215B1 (en) Cache snooping mode extending coherence protection for certain requests
US11157408B2 (en) Cache snooping mode extending coherence protection for certain requests
US11176038B2 (en) Cache-inhibited write operations
US11537519B1 (en) Marking in-flight requests affected by translation entry invalidation in a data processing system
US9665297B1 (en) Injection of at least a partial cache line in a private multilevel cache hierarchy
US11748267B1 (en) Concurrent processing of translation entry invalidation requests in a processor core
US11693788B1 (en) Gathering translation entry invalidation requests in a data processing system
US12001343B1 (en) Selective distribution of translation entry invalidation requests in a multithreaded data processing system
US20240220418A1 (en) Selective distribution of translation entry invalidation requests in a multithreaded data processing system
US11556472B1 (en) Data processing system having masters that adapt to agents with differing retry behaviors
US20240211398A1 (en) Centralized distribution of multicast requests in a data processing system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210819

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210820

R150 Certificate of patent or registration of utility model

Ref document number: 6933896

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150