JP2016534431A - ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 - Google Patents

ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 Download PDF

Info

Publication number
JP2016534431A
JP2016534431A JP2016525993A JP2016525993A JP2016534431A JP 2016534431 A JP2016534431 A JP 2016534431A JP 2016525993 A JP2016525993 A JP 2016525993A JP 2016525993 A JP2016525993 A JP 2016525993A JP 2016534431 A JP2016534431 A JP 2016534431A
Authority
JP
Japan
Prior art keywords
load
loads
loq
address
integrated circuit
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.)
Pending
Application number
JP2016525993A
Other languages
English (en)
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2016534431A publication Critical patent/JP2016534431A/ja
Pending legal-status Critical Current

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本発明は、キュー構造をロードするために順序付けされていないロードの実施形態をサポートする方法及び装置を提供する。この装置の一実施形態は、他のメモリオペレーションに対して順序付けされずに実行されるメモリオペレーションを記憶するためのロードキューを含む。また、この装置は、特定のアドレスに対して順序付けされたキャッシュ可能なオペレーションのためのロード順序キューを含む。【選択図】図2

Description

(関連出願の相互参照)
本願は、2013年10月25日に出願された米国仮特許出願第61/895,618号の利益を主張するものであり、その全ての内容を引用により含むものである。
開示された実施形態は、概してプロセッサに関し、より具体的には、プロセッサの性能を最大化するために、ロード/記憶オペレーション及びデータキャッシュ性能を向上させる方法、システム及び装置に関する。
ハードウェアの性能の発達により、2種類のプロセッサが開発された。プロセッサが例えば従来のメモリ等の他の部品とやり取りをしていた初期では、Complex Instruction Set Computers(CISC)を含むプロセッサ用の命令セットが、メモリからのデータ及び命令のフェッチにより遅延が生じるという前提の下で開発された。コンプレックスインストラクションとは、メモリソースから命令を待つのではなく、コンピュータのクロックの幾つかのサイクルを用いて1つの命令を完了することによって、プロセッサの時間をより効率的に使用することを意味する。後に、メモリの性能の向上がプロセッサに追いついたときに、Reduced Instruction Set Computers (RISC)が開発された。これらのコンピュータは、CISCプロセッサより少ないサイクルで命令を処理することが可能であった。一般に、RISCプロセッサは、プロセッサへの命令の転送を簡略化する単純なロード/記憶アーキテクチャを使用しているが、全ての命令が均一であったり独立したものでもないので、命令の優先付けを可能にし、その独立性を保持させるためにデータキャッシュが実装されている。マルチコアプロセッサが開発されることにより、RISCプロセッサからのデータキャッシュアーキテクチャの原理は、マルチコアプロセッサが処理する命令スレッドのバランシングという長所をもたらすことが分かった。
RISCプロセッサの設計は、CISCタイプのプロセッサよりもエネルギー効率が良いことが証明され、このため、低コストの携帯型バッテリ電源装置(例えば、スマートフォン、タブレットやネットブックが例に挙げられるがこれらに限定されない)において望ましいものである。一方、計算性能が望まれる用途では、CISCプロセッサが好ましい。CISCプロセッサの一例としては、カリフォルニア州サンタクララのインテル社により最初に開発されたx86プロセッサアーキテクチャタイプが挙げられ、RISCの一例としては、英国ケンブリッジのARM社により最初に開発されたアドバンスドRISCマシーン(ARM)アーキテクチャタイプが挙げられる。最近では、ARMアーキテクチャタイプのRISCプロセッサは、64ビット実行状態を有し、64ビット汎用レジスタと、64ビットプログラムカウンタ(PC)、スタックポインタ(SP)及び例外リンクレジスタ(ELR)と、を用いる64ビット構成でリリースされていた。64ビット実行状態は、32ビット命令の符号化を用いる固定幅の命令セットであるシングル命令セットであり、ARMアーキテクチャタイプの32ビット構成と後方互換性のあるシングル命令セットを提供する。また、1つ以上のCISCプロセッサコアの実行能力と、64ビット構成を使用する1つ以上のRISCプロセッサコアと、を利用する計算プラットフォームについての需要が高まっている。これらの両方の例では、ロード/記憶アーキテクチャ及びデータキャッシュの従来の構成では、RISCプロセッサコア構成毎の実行能力において遅れが生じ、プロセッサコアの1つ以上において遅れが生じると、命令のスレッドを処理するのにより長い時間が掛かってしまう。よって、RISCプロセッサ構成のロード/記憶及びデータキャッシュ能力を向上させる必要がある。
本発明の一実施形態によれば、システム及び方法は、順序付けされておらず(OOO)割り当てされていないロードキュー(LDQ)を有するパイプライン化された実行ユニット用の順序付けされていないロードをキューイングすることを含み、前記LDQは、サイクル毎に最大2つのピックを選択して、メモリからロードをキューイングし、順序に依らずに完了したロードをロード順序キュー(load order queue;LOQ)を用いてトラッキングして、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにする。
LOQエントリは、ロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を用いて生成されており、LOQは、最大16のエントリを含む。
LTLI CAMは、同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築し、同じアドレスについて有効なロードのみを考慮し、非キャッシュ可能な同じアドレスへのロードについてフェール状態を生成し、非キャッシュ可能なロードが順に保たれるようにする。
LOQは、トラックされたアドレスがマッチした場合にエントリを結合させて、キューサイズを小さくする。
他の実施形態では、実行ユニットは、OPコード(オペレーションコード)のロードオペレーション及び記憶オペレーションを容易にする複数のパイプラインであって、各OPコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)においてメモリからの物理アドレスに対応する仮想アドレスを用いて、実行ユニットによってアドレス可能である、複数のパイプラインを備える。また、最大4つの同時テーブルウォークをサポートするパイプライン化されたページテーブルウォーカが設けられている。
さらに、他の実施形態では、実行ユニットは、OPコードのロードオペレーション及び記憶オペレーションを容易にする複数のパイプラインであって、各OPコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)においてメモリからの物理アドレスに対応する仮想アドレスを用いて、実行ユニットによってアドレス可能である、複数のパイプラインを備える。また、最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカが設けられている。
添付の図面と共に一例として記載された以下の説明を参照すれば、より詳細に理解されるであろう。
開示された実施形態の1つ以上が実施され得る装置の一実施例を示すブロック図である。 本発明の一態様によるプロセッサのブロック図である。 本発明の一態様によるページテーブルウォーカとTLB MABのブロック図である。 本発明の一態様によるページサイズの表である。 本発明の一態様によるCAMタグビットに関するページサイズの表である。 本発明の一態様によるロードキュー(LDQ)のブロック図である。 本発明の一態様による3アドレス生成パイプを用いたロード/記憶のブロック図である。
本発明の例となる実施形態を以下に説明する。分かりやすさの為に、実際の実施の全ての構成を本明細書では説明しない。当然、如何なる実際の実施形態の開発の際には、数多くの実施上の決定が成され、実施毎に異なるものとなるであろう開発者の具体的なゴール(例えば、システム上の制約や、ビジネス上の制約等)を達成することになるであろう。また、そのような開発努力は、複雑で時間が掛かるものであるが、本開示の利益を享受する当業者にとっては、ルーチン的なものになることが理解され得るであろう。
本発明を添付の図面に基づいて説明する。様々な構造、接続、システム及び装置を概略的に図示するが、説明を目的とするだけのものであり、当業者にとって公知の詳細な事項よって、開示された主題が分かりにくくなることを避けている。それでも、添付の図面は、本発明の例となる実施例を記載し、説明するために添付されている。本明細書において使用される文言や語句は、当業者によって使用される文言や語句と同じ意味であると理解し、解釈されるべきである。文言や語句の特別な定義、つまり、当業者が理解する普通且つ通常の意味とは異なる定義を、本明細書における文言や語句の一貫的な使用によって示唆する意図はない。文言や語句が特別な意味を持つ場合、つまり、当業者が理解するもの以外の意味を持つ場合には、かかる特別な定義は、本明細書で定義され、その文言や語句の特別な定義を直接的且つ明確に提供するであろう。
図1は、1つ以上の開示された実施形態が実施可能な装置100の一例を示す図である。装置100としては、例えば、コンピュータ、ゲーミングデバイス、携帯機器、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータが挙げられる。装置100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力装置108と、1つ以上の出力装置110と、を備える。また、装置100は、任意で、入力ドライバ112及び出力ドライバ114を備えてもよい。装置100は、図1に示していない他のコンポーネントを備えてもよい。
プロセッサ102は、中央処理ユニット(CPU)、グラフィクス処理ユニット(GPU)、同じダイに搭載されたCPU及びGPU、又は、1つ以上のプロセッサコアであって、各々がCPU又はGPUでもよいプロセッサコアを含む構成であってもよい。メモリ104は、プロセッサ102と同じダイに搭載されていてもよいし、プロセッサ102とは別々の位置に配置されていてもよい。メモリ104は、例えばランダムアクセスメモリ(RAM)、ダイナミックRAM又はキャッシュ等のように、揮発性又は不揮発性のメモリを含んでいてもよい。
記憶装置106は、例えば、ハードディスクドライブ、半導体ドライブ、光学ディスク、又はフラッシュドライブ等のように固定型又は取り外し可能な記憶装置を含む構成であってもよい。入力装置108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検知器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用無線ローカルエリアネットワークカード)を含む構成であってもよい。出力装置110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用無線ローカルエリアネットワークカード)を含む構成であってもよい。
入力ドライバ112は、プロセッサ102及び入力装置108と通信し、プロセッサ102が、入力装置108から入力を受け取れるようにする。出力ドライバ114は、プロセッサ102及び出力装置110と通信し、プロセッサ102が出力装置110に出力を送れるようにする。なお、入力ドライバ112及び出力ドライバ114は、任意のコンポーネントであり、装置100は、入力ドライバ112及び出力ドライバ114が無い場合でも同様に動作する。
図2は、スタンドアローン型プロセッサとして使用されたり、マルチコア動作環境で使用され得るプロセッサコア200の実施形態の一例を示す図である。プロセッサコアは、例えば、命令が、デコードエンジンに入って、共有実行エンジン208及び浮動小数点エンジン210により処理される前に、先ず、命令が、命令キャッシュ(Iキャッシュ)及びプリフェッチエンジン204に供給される分岐予測及びアドレス生成エンジン202を介して命令スレッドを処理するAarch 64アーキテクチャタイプのプロセッサ等の64ビットRISCプロセッサコアである。ロード/記憶キューエンジン(LS)212は、データ及び命令情報を記憶することの可能なL2キャッシュ216によってサポートされたL1データキャッシュ214により処理される、プロセッサメモリ要求からのロード及び記憶命令を処理する実行エンジンと協働する。この例示的な実施形態のL1データキャッシュは、8ウェイの結合性を有する32キロバイト(KB)のサイズである。仮想アドレスと物理アドレスとの間のメモリ管理は、ページテーブルウォーカ(Page Table Walker)218及びデータトランスレーションロックアサイドバッファ(Data Translation Lookaside Buffer)(DTLB)220により処理される。DTLB220のエントリは、バーチャルアドレス、ページサイズ、物理アドレス及びメモリ属性のセットを含むものであってもよい。
(ページテーブルウォーカ(PTW))
典型的なページテーブルウォーカは、一連の工程を行う状態機械である。ネスト化したページング用の2段階トランスレーションをサポートする「x86」及びARMv8等のアーキテクチャについては、このトランスレーションについて20〜30程の主要工程が存在し得る。性能を向上させ、一度に複数のページテーブルウォークを行う典型的なページテーブルウォーカについては、当業者は、状態機械が2台必要でって、その関連するロジックが重大なコストに繋がることを理解するであろう。典型的には、ページテーブルウォークの実行プロセスにおいて、時間の大きい割合を占めるのは、実行されるメモリアクセスを待つ時間であり、状態機械ロジックの大部分が殆どの時間において使用されていないことになる。一実施形態において、ページテーブルウォーカは、バッファにおいて部分的に完成したページテーブルウォークに対応する状態を記憶することができ、状態機械ロジックは、一方が待っている間、他方のページテーブルウォークを処理するために自由な状態にすることができる。状態機械ロジックは、さらに「パイプライン化」され、サイクル毎に新たなページテーブルウォークを開始することができ、同時処理するページテーブルウォークの数は、使用可能なバッファのエントリの数によってのみ制限される。バッファは、次に何れのウォークを処理するのかを選ぶ「ピッカ(Picker)」を備えている。このピッカは、如何なる数のアルゴリズムを使用してもよいが(例えば、ファーストインファーストアウト、準備可能で最も古いもの(oldest ready)、ランダム等)、例示的な実施形態では、次のステップへ準備可能で最も古いエントリを選択するものとする。各時間の間でバッファに全ての状態が記憶されるので、ウォークは、パイプラインを流れるように選択され、1つの状態機械ロジックが、複数の同時進行ページテーブルウォークを処理することができる。
図3によると、例示的な実施形態は、4つの同時進行テーブルウォークをサポートするパイプライン状態機械であって、図2のIキャッシュ及びフェッチコントロールに含まれるLS及び命令フェッチ(IF)用のL2キャッシュトランスレーションルックアサイドバッファ(L2TLB)302へアクセスするパイプライン状態機械であるページテーブルウォーク300を備える。TLBのミスを解決する際にコンテキストをOSに切り替えると、重大な付帯的コストが問題処理パスに加わる。これに対処するために、ページテーブルウォーカは、内蔵ハードウェアを使用してページテーブルを読み込み、仮想から物理へのトランスレーションをTLBに自動的にロードするオプションを提供する。ページテーブルウォーカは、OSへのコストのかかる移行を必要としないが、ハードウェアが認識するのに好適な所定のフォーマットでトランスレーションすることを必要とする。PTWの主要構造は、以下のようになる。
a)8ウェイの非対称の結合性を有する1024エントリを有し、部分的なトランスレーションの能力を有する4KB/64KB/1Mサイズのページが可能なL2キャッシュトランスレーションルックアサイドバッファ(L2TLB)302。
b)完全な結合性能力を有する64のエントリを有し、部分的なトランスレーションの能力を有する16M及び512Mサイズのページが可能なページウォーカキャッシュ(PWC)304。
c)アドレス、プロパティ及び未決のテーブルウォークの状態をホールドする4エントリ選択可能キューを有するトランスレーションルックアサイドバッファ―ミスアドレスバッファ(TLBMAB)306。
d)ITLB(instruction translation lookaside buffer)ミス時にIキャッシュからのトランスレーション要求を処理するのに必要な仮想アドレスや処理状態等のIF要求バッファ308情報。
e)DTLB(data translation lookaside buffer)ミス時にDキャッシュからのトランスレーション要求を処理するのに必要な仮想アドレスや処理状態等のL2要求バッファ310情報。
f)アドレススペース識別子(ASID)/仮想機械識別子(VMID)リマッパ312。
PTWパイプラインの基本的なフローは、TLBMABから未決の要求を選択し、L2TLB及びPWCにアクセスし、プロパティ/問題と次の状態とを判断し、フィル要求をLSに送ってメモリにアクセスし、フィル応答を処理してページテーブルをウォークし、部分的及び最終的なトランスレーションをL1TLB、L2TLB、PWC及びIFに書き込む。PTWは、ネスト化したページング、アドレス/データ(A/D)ビット更新、リマッピングASID/VMID、及び、L2からのTLB/IC管理フラッシュオペレーションをサポートする。
(PTWページングサポート)
このセクションでは、テーブルウォークに適用されるアーキテクチャルールの全ての事項を繰り返さない。よって、本説明の全てを理解するには、当業者は、Aarch64アーキテクチャタイプ等のRISCプロセッサのページングアーキテクチャの基本的な理解が必要になるであろう。しかし、一例としての実施形態のページテーブルウォーカは、以下のページング構成をサポートするものとして理解されよう。
− ステージ2ページウォークからのプロパティは、基本的にステージ1のトランスレーションに適用されるが、その逆はない。
− トランスレーションテーブルベースレジスタ(TTBR)のEL1(例外レベル1)ステージ1は、2つのTTBRを定義し得る。他の全てのアドレススペースは、1つのTTBRを定義する。
− テーブルウォーカは、TTBR、トランスレーションコントロールレジスタ(TCR)又は仮想トランスレーションテーブルベースレジスタ(VTTBR)から、フィル要求のデータやアドレス等のmemtypeを得る。
− TTBR自身は、中間物理アドレス(IPA)のみを生成する場合があり、ステージ2が可能な場合には、トランスレーションが必要になる。
− フルアドレススペースが定義されてない場合には、テーブルサイズ(TSize)により定義されているウォークのL0以外のレベルで開始することができる。これは、64KBグラニュル(granule)と短い記述子について当てはまる。
− ステージ2のテーブルは、トップレベルが16エントリを越えない場合には、連結されてもよい。
− 64KBテーブルは、ステージ2バッキングページが4KBの場合に分割され、トップレベルテーブル用のマルチTLBエントリに分かれる。例えばステージ1O/Sが64KBグラニュルを示す場合に、ステージ2O/Sは4KBページを示す。64KB用のトップレベルテーブルが、512(4KB/8B)を越えるエントリを有し得る。通常、このトップレベルが全て同じプロパティの連続的なメモリの塊になると予想されるかもしれない。しかし、ハイパバイザは、異なるプロパティを有する非連続の4KBの複数の塊になるように強制し得る。
− ページテーブルポインタ又はエントリのビットフィールドは、RISCプロセッサアーキテクチャにより定義される。限定を加えることなく理解を深めるために、RISCプロセッサがAarch64アーキテクチャタイプの場合には、イングランド、ケンブリッジのARMホールディングス社発行のARMv8−Aテクニカルリファレンスマニュアル(ARMDDI0487A.C)が引用により本明細書に含まれてもよい。
− 全ての共有性(Shareability)は無視され、アウタシェアラブル(Outershareable)と考えられる。アウタシェアラブルとは、ブリッジにより分けられたバス上の装置を意味する。
− アウタmemtypeは無視され、インナmemtypeのみが使用される。
− テーブルウォークに問題が生じると、問題がアドレス/日付ビット(Abit/Dbit)の更新により非特異的に解決されない限り、テーブルウォークが停止する。
− MMUが可能でない場合、PTWは、従来の定義済みのmemtypeを使用して、4KBトランスレーションをL1TLB及びIFTLBに返す。
− MMUが可能になった場合、PTWはTLBフラッシュを送る。
MMU(メモリ管理ユニット)は、アーキテクチャの在来部分であり、主にページテーブルウォーカのロード/記憶ユニット内に実装されている。
(ページサイズ)
図4のテーブルは、従来の特定のページサイズと、例示的な一実施形態におけるこれらの実施サイズと、を示している。全てのページサイズをサポートしていないので、より小さいページに分割されることもあり得る。太線は、適切なビットを回転させるマルチサイクルフラッシュを必要とするページの分割を示す。一方、連続するページをベースの非連続ページサイズに分割するには、これは単にヒントなので、余分なフラッシングを必要としない。L1C、L2C及びL3Cの行は、「連続」ページを示す。PWCの数と、L2TLBの数は、アーキテクチャにサポートされている従来のアドレッシングモードに基づいて、これらの間のサポートされているページサイズを分割する。そのようなエントリがハイパスプリンタとしてタグされ、仮想アドレス(VA)に基づくフラッシュが使用された場合に、ビットフリッピングによって全てのマッチングページを見つけるのは不可能なので、全てフラッシュされるステージ2のルックアップに基づいて、ハイパバイザは、オペレーティングシステム(O/S)ページサイズをさらに分割する。部分トランスレーション/ネスト化及び最終LSトランスレーションは、L2TLB及びPWCに記憶されるが、最終命令キャッシュ(IC)トランスレーションは記憶されない。
異なるサイズページ/部分をキャッシングする構造が図5のテーブルに示されている。ここで、コンテンツアドレス可能メモリ(CAM)タグビットのアドレスは、アドレスのトランスレートされたビットである。物理アドレスは、従来の64ビットレジスタを使用する際にはビット47までであり、従来の32ビットレジスタを使用する際にはビット31までになる。
(ページ分割(page splintering))
図3のページサイズテーブルのように、実施の利便性のためにページが分割される。一実施形態では、ページは、分割の際に任意にタグ付けされる。ハイパバイザのページがO/Sページサイズより小さい場合には、インストールされたページは、ハイパバイザのサイズを使用して、HypervisorSplinteredとエントリをマークする。VAによりTLB無効化(TLBI)が起こった場合には、HypervisorSplinteredされたページは、VAにマッチしているとみなされ、オペレーティングモードのCAMの残りがマッチする場合には、フラッシュされる。このようにして行われた分割は、VAによるフラッシュによって、3つのフラッシュを生成する。1つのフラッシュは要求されたアドレスによって生成され、1つのフラッシュはビットをフリッピングして、1GBページの他の512MBを得ることによって生成され、1つのフラッシュはビットをフリッピングして、2MBページの他の1MBを得ることによって生成される。第2の2つのフラッシュは、この方法により分割されたページのみに影響する。TLBがそのビットを実施しない限り、どのマッチングページでもよい。
一実施形態では、VMID/ASIDをリマッパにおいて任意の分割されたページを持つものとして最適化してタグ付けし、余分なフラッシュを不要に生成することを避ける。
MemTypeテーブル
実施されたMemType
符号化 タイプ
3’b000 デバイス nGnRnE
3’b001 ハイパバイザ デバイス nGnRnE
3’b010 デバイスGRE
3’b011
3’b100 ノーマルキャッシュ不可能/WriteThru
3’b101 ノーマルWriteBack NoAlloc
3’b110 ノーマルWriteBack Transient
3’b111 ノーマルWriteBack
従来のメモリ属性間接レジスタ(MAIR)memtype符号化は、実施形態のサポートされたmemtypeにマップされ、クロスプラットフォーム互換性を記憶する。PWTは、MAIR/ショート記述子の符号化を、サポートされたmemtypeのより制約されたものに変換することについて担当する。ステージ2memtypeは、ステージ1memtypeに対してより制約を付する。memtypeは、上記テーブルにおいて2つのうち、より制約されていないもの/より制約されているものを選択する際に常に結合される。なお、ハイパバイザ装置メモリは、特定の符号化が行われ、装置のアライメントフォールトを正しい場所にトラップするのをアシストする。Mビットのステージ1イネーブルと、VMビットステージ2イネーブルと、IビットICイネーブルと、CビットDCイネーブルと、DCビットデフォルトキャッシュアブルと、の効果は、ARMv8−A技術参照マニュアル(ARM DDI0487A.C)に従来定義されたように、結果として得られたmemtypeに重ねられる。
アクセス許可テーブル
AP 2:0 非EL0プロパティ EL0プロパティ
3’b000 フォールト フォールト
3’b001 読取/書き込み フォールト
3’b010 読取/書き込み 読取
3’b011 読取/書き込み 読取/書き込み
3’b100 フォールト フォールト
3’b101 読取 フォールト
3’b110 読取 読取
3’b111 読取 読取

HypAP[2:1] プロパティ
2’b00 フォールト
2’b01 読取
2’b10 書き込み
2’b11 読取/書き込み
アクセス許可は、従来の64ビットアーキテクチャの符号化を用いて符号化される。アクセス許可ビット(AP[0])がアクセスフラッグの場合、許可チェックが1だとみなされる。ハイパバイザの許可は、別途記録され、フォールトを何処で指示するかを示す。APTableは、最終トランスレーション及び部分的書き込み用のTLBMABに蓄積される。
(フォールト)
一実施形態では、スペキュレイティブな要求においてページウォーカが対応するフォールトは、非スペキュレイティブに実行される必要があるというロード/記憶/命令を知らせる。L1TLBにインストール済みの許可フォールトは、TLBミスのように扱われる。トランスレーション/アクセスフラッグ/アドレスサイズフォールトは、TLBに書き込まれない。フォールトトランスレーションへ導かれる、フォールトのない部分は、TLBにキャッシュされる。非スペキュレイティブな要求は、キャッシュ部分からウォークを繰り返す。TLBは、完全にはキャッシュされず、メモリからウォークを再開する。スぺクフォールトトランスレーション(SpecFaulting translations)は、インストールされず、後に消去される。非スぺク(NonSpec)要求にはフォールトが生じず、フォールトを解消するためにメモリが変更された場合には、メモリの変更が観測される。フォールトに対応した後、非スぺクフォールト(Nonspec faults)は、データフォールト状態レジスタ(DFSR)、データフォールトアドレスレジスタ(DFAR)、例外シンドロームレジスタ(ESR)を適宜更新する。その後、LD/STがフローし、例外を発見する。IFは、自身のプリフェッチ停止情報をログする全ての情報が与えられる。フォールトは、VA又はIPAをルックアップしている間にフォールトが来たか否かにより、レベルと共にステージ1又はステージ2として記録される。
(A/Dビット妨害)
アクセスフラッグが可能な場合に、ハードウェア管理が可能でなく、フラッグがセットされていない場合には、フォールトになる。ハードウェア管理が可能な場合に、フラグが設定されていない場合には、スペキュレイティブなウォークがフォールトになり、非スペキュレイティブなウォークは、アトミックにビットを設定する。トランスレーションがロードによりキャッシュ済みの可能性がある以外には、ダーティビットの更新についても同様である。
(セキュリティフォールト)
安全な物理アドレス(PA)レンジに対して安全でないアクセスが試みられると、フォールトが生成される。
(アドレスレンジフォールト)
一実施形態では、デバイス特定PAレンジへのアクセスが禁じられており、試してもフォールトになる。
(許可フォールト)
AP及びHypAPは、読取又は書き込みが特定のページに許可されているか否かを定義する。ページウォーカ自身は、許可を得ていない読み込みがウォークの間に試みられたり、又は、Aビット/Dビットの更新時に書き込みが試みられると、ステージ2許可フォールトをトリガしてもよい。データ停止例外は、アクセス権が認められていないデータアクセスをプロセッサが試みると、生成される。例えば、プロセッサが、PL0に存在し、特権的メモリアクセスのみアクセスが可能であるとマークされたメモリ領域にアクセスを試みた場合には、データ停止例外が生成される。特権的メモリアクセスは、ユーザが開始したメモリアクセスを除く、PL1又はこれ以上での実行の際に実行されるアクセスである。非特権的メモリアクセスは、以下のケースの何れかにおいて実行されるロード又は記憶オペレーションの結果として生成されるアクセスである。
− プロセッサがPL0に存在する場合。
− プロセッサが、ユーザメモリアクセスのあるPL1に存在する場合。
(PTW LS 要求)
LS要求は、L1TLBにより仲裁され、L1TLB及びLSピッカが要求間のスレッド公平性を担保するTLBMABに送られる。LS要求は、IF要求により仲裁し、TLBMABに割り当てられる。公正性は、最終的にラウンドロビンを行って、両方が割り当てを望む場合に失うものを割り当てる。エントリは、IF又は具体的なスレッドのために、TLBMABにリザーブされない。TLBMABへの割り当ては公平であり、前回割り当てられなかったリクエスタを割り当てることを試みる。IFは、バッファに位置し、ライブロックウィジェットが始動する場合にLSが再度試みるためにリフロする必要のあるサイクル毎で試みるので、LS非スぺクオペレータは、TLBMABが必要になり、LSがTLBMABへの割り当てを成功するまで、さらにIF要求を割り当てることを行わない。LSは、同じ4Kページにマッチするものを探すための割り当ての前に、CAM TLBMABを要求する。マッチするものが見つかった場合には、新たなTLBMABが割り当てられず、マッチングタグがLSに送り返される。TLBMABがフルな場合には、フル信号がLSに返送され、オペレータにスリープ又はリトライさせる。
(PTW IF要求)
一実施形態では、IF要求は、トークンでコントロールされた2つのエントリFIFOに割り当てられる。要求が読み出されてTLBMABに配置されると、トークンはIFに返送される。IFは、スレッドの要求間が公平であることを担う。IF要求の第1フローは、IFへの初期起動標識を抑制するので、IF要求がL2TLB又はPWCにヒットする場合でも、フェイルし、リトライする必要がある。IFは、自身のL2TLBを有し、LSは、LS L2TLBに最終IFトランスレーションを記憶しない。非常にまれな状態において、LS及びIFはページを共有するので、IFウォークの第1フローにおいて共にL2TLB又はPWCをヒットするかもしれない。しかし、共有のケースで電力やIFの起動を節約するために、PTWは、IFへ送信される初期のPW0の起動を代わりに抑制し、この例でヒットがある場合には単純にリトライする。IF要求は、IF特定の許可フォールトと、ログトランスレーション、サイズ等の包括的なウォークフォールトを判定するのに必要な全ての情報を受け取る。
(PTW L2 要求)
L2キャッシュは、IFプローブインターフェイスを介してPTWにIC又はTLBIフラッシュを送る構成でもよい。要求は、TLBIの場合に、2サイクルに亘ってフラッシュ情報を捉える2つのエントリバッファを割り当てる。要求は、最大4サイクルまで取って、上記のページ分割のために適切なフラッシュを生成する。フラッシュ要求に対しては、PW0ピックについて一番低い優先度が与えられる。ICフラッシュは、他の何もすることなく、PTWを介してフローし、オーバーロードされたウォーク応答バス上のPW3のIFに送る。L2要求は、バッファがフルの場合には認証されない。TLBIフラッシュは、パイプをフローし、かかるフラッシュが、CAMのアクセス前に、下記のようにリマッパをルックアップするオーバーロードのウォーク応答バス上のLS及びIFの両方に送られる前に、上述のようにL2TLB及びPWCをフラッシュする。各エントリは、VAベースのフラッシュに使用される状態機械を有し、適切なビットをフリップして、詳細が上述された分割ページを除去する。
(PTW状態機械)
PTW状態機械は、LevelやHypLevelとして符号化される。IpaValは、ウォークが、現在VAを使用したステージ1か、IPAを使用するステージ2か、について条件をつける。TtbrIsPaは、〜TtbrIsPaの場合に、ウォークが、現在のIPAをPAにトランスレートしようとしているかに否かについて条件をつける。状態機械は、グラニュルサイズのページの前にリーフノードにヒットしたために状態をスキップしたり、レベルの少ない小さなテーブルのためにレベルをスキップしたりしてもよい。状態は、TLBMABエントリ毎に保持され、PW3において更新される。LevelやHypLevelは、ページテーブルのレベルL0、L1、L2、L3の何れかがアクティブに探されるかを示す。ウォークは、L0エントリを探す、00,00,0,0{Level、HypLevel、IpaVal,TtbrIsPA}にて開始される。ステージ2のページングにより、L0エントリを見つける前にTTBR(00,00−11)を最初にトランスレートすることが可能である。L2TLB及びPWCは、ステージ1又はステージ2のウォークの開始の際にのみルックアップされ、テーブルを出来るだけ進む。その後、ウォークは、L2TLB及び/又はPWCに書き込まれたエントリを有するメモリから進み、更なるウォークを促進する。ルックアップは、NoWr及びAビット/Dビットの必要条件による必要に応じて再度可能とされる。L2TLB及び/又はPWCのヒットは、状態機械を進めるヒットエントリのレベルを示す。メモリのページテーブルからのフィル応答は、リーフノード又はフォールトに出くわすまで1つの状態で状態機械を進める。
PTW パイプライン ロジック:
PW0マイナス2:
− LS L1TLB CAM
− IF要求がFIFOを書き込む

PW0マイナス1:
− LS及びIF要求を仲裁
− LS要求と同じ4KBフィルタリング
− L2要求がFIFOを書き込む
− フィル/フロー起動

PW0:
− TLBMAB ピック −最も古く準備されたもの(タイミングがフェールした場合は、ready OpsからのバックアップFF1)
− L2 フラッシュ ピック −TLBMABが選択しない場合、又は、欠乏したL2TLBが事前復号を読み込む場合に選択されたL2要求−選択されたウェイ及び部分的に複合されたインデックス毎のPgSz(これは、クリティカルパス)

PW1:
− L2TLB 8ウェイの読み込み及びアドレス/モード比較:優先度多重通信回路ヒット
− PWC CAM及び優先度多重通信回路ヒット

PW2:
− L2TLB RAM 読み込み
− PWC RAM 読み込み
− 優先度多重通信回路データソース
− 優先度組み合わせ
− 次の状態を決定

PW3:
− フィル要求をLSパイプに送付
− ファイナル応答をIF/LSに返送
− オーバーラッピングウォーク用TLBMAB NoWr CAM
− L2TLBが事前復号書き込み
− TLBMAB更新、リトライの場合にはマークレディ(mark ready)
− 生成物をAビット/Dビット記憶

PW4:
− L2TLB書き込み
− PWC書き込み
− LS L1TLB書き込み
− LDQ/STQ書き込む

リトライとスリープ条件:
− LSパイプ要求が不良状態標識を受取り、MABを割り当てられなかった場合、又は、ロック要求が満足されなかった若しくは〜DecTedOkを応答時に受け取った場合、ウォークはリトライする。
− L2TLBマクロ書き込みの後にウォークが読み込みコンフリクトにエンカウントした場合、ウォークはリトライする。
− L2TLB/PWCマルチヒット又はパリティエラーにエンカウントし、無効にした後ウォークはリトライする。
− ウォークは、VAからLSパイプ要求が選択されるのを待つIPAフロースリープへ切り替えるようにリトライする。
− L2からフィル要求が返送されてくるのを待つスリープ。
− 先頭のウォークが終わるまで、オーバーラッピングウォークとしてマークされている場合にスリープ。
各TLBMABエントリ及びL2フラッシュ要求が8ビット(プログラマブル)飽和カウンタを有する場合、フォワードプログレス/スターべイション(Forward Progress/Starvation)が発生し得る。カウンタは、割り当て時にクリアされ、又は、他のウォークが完了した時に増加する。カウンタが、閾値を満足したために飽和した場合には、それが完了するまでそのエントリのみを選択することができ、他のエントリは、準備されていないとしてマスクされる。一緒に有効期限が切れる複数のページウォークがある場合には、この条件が、底からのFF1により解決される。
(PTWフィル要求)
これらの図は、PTW及びLSパイプのインタラクションの様々なケースを示す。PTWが最後のトランスレーションでヒットしない場合には、PTWは、ロードをLS(AG&DC)パイプに沿って送り、データ(EXを介する返送ウェイ)を把握する。データは、TLBMABに書き込まれ、PTWオペレーションが起動されて当該データとランデブする。もし、L1ミスがある場合には、PTWオペレーションは、L2からフィルデータとランデブする第2ロードを生成する。Aビット/Dビットの更新は、ロックを得るロードを必要とし、メモリのページテーブルを更新する記録を生成する。
PTWパイプ/LSパイプインタラクションの例を上述した。
よって、ウォークが選ばれAG/DCパイプにおいて直ぐにフローする場合には、PTWは、リフロする必要がなく、2エントリFIFOが書き込まれる。
ウォークが選ばれLSパイプをフローすると、エントリは、PTWで起動され、データ返送とランデブする。
フローがMAB要求をする場合、テーブルウォークは、MABTAGにおいてスリープされる。
フィル応答が来た場合、FIFOは再度書き込まれ、FillBypassのデータとランデブするロードを注入する。PTWは、ロードのmemtype及びPA、そして、それがロックされているか否かの指標を供給する。PTW装置メモリの読取は、スペキュレイティブに起こり、Ncバッファを使用しないが、FillBypassである必要がある。ページングモードに基づいて要求は32バイト又は64バイトであるが、常にアラインされている。LSルートからの応答データは、EXを介するウェイを通り、フローの場合に読み取るウォークのTLBMABに記憶される。ポイズンデータ応答はフォールトになり、修正可能なECCエラーがあるL1又はL2からのデータは、再度フェッチされる。
(PTW A/D ビット更新)
アクセスされ、ダーティフラッグが有効となり、ハードウェア更新が有効となった場合、PTWは、アトミックRMWを実行し、必要に応じてメモリのページテーブルを更新する。Aビット又はDビットバイオレーションを見つけるスペキュレイティブなフローは、非スぺクとして再要求されるスペキュレイティブなフォールトを得る。Aビットの更新はスペキュレイティブなウォークに対して行われるが、ページテーブルがWBメモリにあり、キャッシュロックが可能な場合にのみ行われる。
Aビット又はDビットバイオレーションを見つける非スぺクのフローは、PTWがロードを生成してLSパイプをフローし、ロックを取得し、ロックを取得するとデータを返送するLSに対して、ロックされたロード要求を出す。この要求は、ラインがロックされている場合(又は、バスロックされている場合)、PTWにデータを返す。ページを修正する必要がある場合、記憶がPW3/PW4のSCBに送られて、ページテーブルを更新し、ロックをリリースする。ページを修正できなかったり、ビットが既に設定されている場合には、ロックがキャンセルされる。TLBMABエントリがテーブルデータを受け取った直後にフローする場合、2バイトのロック解除記憶をSCBに送り、メモリのページテーブルを更新する。
非スぺク更新が、Dビットを更新することができる記憶の代わりであれば、Aビット及びDビットの両方を共に設定する。Aビットバイオレーションは、TLBにキャッシュされないため、非スぺク要求は、先ず、LSパイプのロック解除されたロードを行い、Aビット更新の必要性を発見する。Dビットバイオレーションがキャッシュする構成の場合、フローにおいてマッチングL2TLB/PWCエントリを無効にし、ロックデータを、フローがPW4に達したときに新しいエントリが書き込まれるフラッシュのように消費する。LRUが無効のエントリを最初に選択する。これは、書き込みがパイプラインに先んじてない場合、同じエントリになる可能性が高い。Dビット更新の後にL1TLBは、既存のマッチへの書き込みにCAMする。
(PTW ASID/VMID リマッパ)
ASIDリマッパは、16ビットASIDの32エントリテーブルであり、VMIDリマッパは、16ビットVMIDの8エントリテーブルである。VMID又はASIDが変更されると、リマップの値がフル値に割り当てられているかどうかを確認する適切なテーブルをCAMする。ミスがある場合には、LRUエントリが上書きされ、そのエントリについてコアローカルフラッシュが生成される。
− VMIDが再使用される場合、VMIDベースのフラッシュが発行される。
− ASIDが再使用される場合、ASIDベースのフラッシュが発行される。
− これらのフラッシュは、PW0の選択においてもっとも高い優先度を有する。
− 各スレッドは、最大2つのフラッシュを必要とする構成であってもよい。
(PTW A/D ビット 更新20)
ヒットがある場合、リマップ値は、TLB CAMに使用されるLS及びIFに対して駆動される。L2は、ピックについて両方のテーブルのCAMを要求し、フラッシュにおいて使用されるリマップ値を見つける。
− ASIDヒットがなく、ASIDがフラッシュマッチで使用される場合、フラッシュは無演算命令(NOP)である。
− VMIDヒットがなく、フラッシュマッチでVMIDが使用される場合、フラッシュは無演算命令(NOP)である。
− リマップされた値を、フラッシュ用のL2TLB、PWC、L1TLB及びIFに送る。
− フラッシュが、VMID又はASIDの全てのエントリに対するものの場合、対応するエントリは、リマッパでは無効とマークされる。
無効のエントリは、最初に選択されて、LRUエントリの前に使用される。テーブルに新たなエントリを割り当てることは、LRUを更新しない。カウンタを飽和する4ビット(プログラマブル)がエントリ毎に保持される。TLBMABをエントリに割り当てると、カウンタを増やす。カウンタが飽和したり、オペレーティングモードが飽和したカウンタのエントリに切り替わる場合、エントリはMRUになる。LRUは、VMIDについては7ビットツリーとして、ASIDについてはセカンドチャンスとして保持される。
(PTW 特別 挙動)
同じページサイズのエントリについて複数マッチが起こることを防ぐため、任意の書き込みをPWC、L2TLB及び/又はL1TLBに対して行う。PWC及び/又はL2TLBを再度ルックアップするまで、ヒットであるウォークは、PWC、L2TLB及び/又はL1TLBに書き込むことが禁止され、先頭のウォークが終了するまでスリープの状態にされるウォークをオーバーラップするためのTLBMABをCAMする。
(ロードインターロック(LTLI)へのロード)
図6に示す一実施形態では、従来の順序付けルールは、同じアドレスのロードが順序付けされた状態のままであることを要求する。ロードキュー(LDQ)600は、順序付けされずに、古いロードが完了しない間に非インタラクトのロードが完了することを可能にする。ロードをインタラクトするエイジ関係を再構築するため、ロード−記憶間のインタラクション用Store To Load Interlock(STLI)CAM602同様のLoad−ToLoad−Interlock(LTLI)CAM602がフロー時間に実行される。LTLI CAM結果は、キャッシュ不能なロードを順序付けし、ロード順序キュー(LOQ)604を割り当て、古いオペレーションに対して選択可能のマスクを供給するのに使用される。キャッシュ不能ロードについては、同じアドレスへのロードは、順序付けされた状態のままである必要があり、LTLIヒットにフェール状態にする。キャッシュ可能ロードについては、同じアドレスへのロードは、順序付けされた状態のままである必要があり、LOQ604をLTLIヒットに割り当てる。エイジを近似するため、Eビットのピックの一方のレッグは、LTLIヒットのエイジ部分を使用し、より古い有効なロードを判定し、フィードバックを提供して、選択オペレーションがより古いロードを選択するようにする。
同じスレッドの有効なロードのみがマッチだとみなされる。Load To Load Interlock(ロード間のインターロック)CAMは、エイジ比較とアドレスマッチから構成されている。
(エイジ比較)
エイジ比較チェックは、フローしているロードのRetTag+Wrapと、LDQのロードとの間の比較である。CAMのこの部分は、まだLDQを更新してしないパイプラインにおいてより古く完了するロードのための各サイクルを付加するバイパスを有するDC1にて実行される。
(アドレスマッチ)
LTLIのアドレスマッチは、より古くフローするロードのバイパスを有するDC3にて実行される。まだアドレス生成されていないロードは、ヒットだとみなされる。アドレス生成されているがPAを得ていないロードは、インデックスがマッチした場合にはヒットだとみなされる。PAを有するロードは、インデックスとPAハッシュとがマッチした場合には、ヒットだとみなされる。アラインされていないLDQエントリは、ページがアラインされていないMA2が、チェックの対象となる別のPAハッシュを有さず、単一でインデックスマッチするMA1又はMA2アドレスの何れかにおいてヒットするかチェックされる。
(ロード順序キュー)
LOQは、順序に依らずに完了したロードをトラックして、同じアドレスへのロードが、それらの値を順番に留めるかのように見えることを保証するLDQの16エントリの拡張子である。LOQは、プローブを観察し、必要に応じてロードを再同期し、順序を維持する。キューの全体的なサイズを減らすため、トラックされたアドレスがマッチする場合は、エントリを結合してもよい。
エントリ毎の記憶テーブル
フィールド サイズ 説明
Val 2 エントリは、スレッド1またはスレッド0で有効(相互排除)
Resync 1 プローブによりヒットしているエントリ
WayVal 1 エントリは、idx+hashの代わりにidx+wayを使用してトラックされる
Idx 6 エントリのアドレスの11:6
Way 3 エントリのWay
Hash 4 PAのHash 19:16^15:12
LdVec 48 トラックされたロードであって、より古いロードのLDQサイズのベクタ
(LOQ割り当て)
外部のライタが無い場合、同じアドレスへのロードは、順序に依らず実行し、同じデータを返送する。より古いロードよりも古いデータを若いロードが観測するまれなケースでは、当該若いロードは、新たなデータを再同期し、再取得する。そして、LDQエントリは、自由に行われてもよく、外部ライタがある場合には、より軽量のLOQエントリが割り当てられて、このロード間関係をトラックする。ロードは、DC3の良性の状態の返送やDC3のLTLIcamにおけるヒットに基づいたDC4のLOQへ割り当て又は結合する。同じスレッドの、より古く未完了の同じアドレス、又は、未知のアドレスのロードがある場合には、ロードはLOQエントリを必要とする。
フルな状態のLOQのため、又は、スレッドの閾値に到達したために割り当てができないロードは、LOQの割り当てが解除されるまでスリープさせる必要があり、レジスタに不良の状態を強いる。スレッド毎の最も古いロード(ミスアラインされている可能性あり)のエントリをリザーブすることを避けるため、LOQの割り当て解放のときにスリープしているロードは、最も古いロードの割り当て解除により起動してもよい。LTLIでミスしているロードは、トークンが無くても継続して完了する。LTLIがない、又は、LOQが結合しているため割り当てが必要とされない場合、トークンは、スペキュレイティブにDC3で消費され、次のサイクルで返送される。
キャッシュラインをクロスするロードは、LOQにより2つの別々のロードとみなされる。ロードペアの一部は、結合されたロードがキャッシュラインをクロスする場合に、別々に処理される。
既存のエントリに結合するために、スレッド、インデックス、及び、ウェイ又はハッシュにマッチするエントリを見つけるLOQをDC4ロードがCAMする。CAMマッチが見つかった場合、DC4ロードからのLTLIヒットベクトルは、エントリのLoad Order Queue Load Vetor (LoqLdVec)にORされる。Idx+WayとIdx+Hashの両方でマッチが見つかった場合、ロードは、Idx+Wayマッチに結合される。各DCロードパイプ(A&B)は、結合CAMを実行する。
(新たなエントリ割り当て)
完了するロードは、DC4のLOQをCAMし、例外状態(下記のMatchを参照)と可能な結合(上記参照)を判定する。結合が可能でない場合には、スレッドに対してスペースが存在する場合に、ロードは新しいエントリを割り当てる。割り当てられるエントリは、より古いアドレスにマッチするロードのLTLIcamからの48ビットマッチを記録する。
ロードがDCヒットの場合には、WayValを設定し、LOQのIdx+wayを記録する。
ロードがDCミスの場合には、〜WayValを設定し、LOQのIdx+PaHashを記録する。
LTLIマッチが無い場合(同じパイプステージ、反対のパイプを考慮後)には、ロードは、LOQエントリの割り当てを行わない。
ロードパイプの両方は、自由なエントリが1つだけの場合に、優先権を得ているより古いロードを同じサイクルで割り当てる。
(同じサイクルのロードインタラクション)
両パイプが同じパイプステージでフローするインタラクティブなロードを有するような構成であってもよい。ロードは、同じアドレスに対する同じサイクルで実行される*Loadの順序から外れられないので、マスクの良性の状態のロードと、反対のパイプLTLI CAMからの結果は、同じデータになる。複数マッチを避けるため、2つのロードは、両方とも良い状態の場合には、Idx+Way+Hash+Treadで比較される。
− 両者が同じであれば、LTLIの結果は、共にORされ、同じエントリに割り当てられるか、併合される。
− ハッシュがマッチするが、ウェイ(way)がマッチしない場合、ロードの際にDC4において併合するIdx+Wayのマッチを無視する。
フローしているロードがDC3にある場合にDC4、DC5、DC6において完了したロードは、より古いロードがパイプ内にあるため、より古いロードがLDQのLTLIcamに現れ、より古いロードが完了した場合にマスクされる/バイパスされる必要のある場合に、まだLdqを更新していないかもしれないというLTLI結果からマスクされる。
(LOQマッチ)
プローブ(エビクションも含む)及びフローしているロードは、LOQをルックアップして、順序に依らず完了したインタラクティブなロードを見つける。順序のバイオレーションが検知された場合、より若いロードを再発送して、新しいデータを取得する必要がある。LTLI CAMのアドレスマッチの誤検出も、より古いロードのアドレスが分かれば除去することができる。
(プローブマッチ)
このコンテキストのプローブは、外部無効プローブ、他のスレッド用のSMTエイリアス応答、L1エビクション、各スレッドのようなラインの可読性を除去する任意のイベントを意味する。プローブは、WayValにより選択されたWay対PaHashを用いて、Tread+Idx+Way+PaHashを有するRS6のLOQをCAMし、エビクションがタグアレイを読み込み、PAハッシュによりトラックされたエントリがあるLOQからの標識に基づいてPAビットを取得する。L2からのプローブは、Idx+WayをRS3のTagマッチに基づいて生成する。エイリアス応答について、RS5の状態読み込みは、ラインの最終状態を判定し、任意のLOQスレッドを精査する必要があるかどうかを判定する。
LOQエントリをヒットするプローブは、このエントリを再同調する必要があるとマークする。この再同調オペレーションを下記に説明する。フローのオペレーションに関して、プローブを観測するには遅すぎるタイミングでLOQエントリを割り当ててもよい。このウィンドウがDC2−RS8までDC4−RS6の場合、STAは、このプローブ比較を対応し、LOQが必要に応じて割り当てられ、再同調される。
(フローしているロードマッチ)
DCパイプロードのみLOQをルックアップする。良好な状態で完了するロードは、DC4のLOQをルックアップし、フローしているロード(若いロードのLTLIからなる)のLdqIndxにLdVecがマッチするエントリを見つける。エントリが、フローしており完了するロードセットについてLoqResyncと、LdVec内の対応するビット位置とを有する場合、フローしているロードがマークされ、トラップを完了状態として再同調し、LdVecビット位置がクリアされる。結合したCAMのPaHashを再使用すると、ロードがマッチしない場合には、全てのマッチングエントリのLdVecに対応するビット位置がクリアされるため、フローしているロードをこのフローで完了して、それ自身をミスマッチから除く必要がない。
(LOQ割り当ての解放)
若いロードが順序に依らずに完了した場合、より古いロードの何れかが相互作業したかもしれない。ロードが完了すると、順序から外れてデータを観測する可能性がないので、LOQエントリが再利用されてもよい。LDQフラッシュは、若いロードがリタイヤしていない場合、より古いロードを有するLOQエントリをスペキュレイティブに有するロードがより古いコードを削除できないLdVecの全てのLOQエントリにおける対応するビットをクリアするのに使用されるフラッシュされたロードのベクトルを生成する。
LOQエントリの全てのLdVecビットがクリアされた場合、割り当てから解放され、トークンが返送される。多数のLOQエントリが、同じサイクルで割り当てから解放され得る。割り当ての解放は、信号をLDQに送り、エントリが自由になるのを待っているロードを起動する。
(LOQ特別挙動)
LOQは、保護されているパリティではなく、結合CAMを無効にするビットがある。
(ロード及び記憶パイプライン)
(発送パイプ)
発送の間、1つのオペレーションに関する全ての統計的情報は、DEにより提供される。これは、オペレーションの種類を含むが、後にEXにより提供されるアドレスは含まない。発送パイプの目的は、ロード/記憶キュー内の提供された情報を捕捉し、エントリが使用されたEXにフィードバックすることにある。これにより、サイクル毎(最大4ロードと4記憶)に発送できるオペレーションを最大6とすることができる。DI1の初期の発送信号は、ゲートとして使用され、次のサイクルの発送を可能とする。次のサイクルで発送したロードの数は、DI1に提供されている。この信号は、包括的にスペキュレイティブなものであり、次のサイクルで実際に発送されるよりも多いロードを示すかもしれないが、少ないロードは示さない。しかし、発送されるスペキュレイティブなロードの数は、利用可能なトークンの数を越えてはならない。このコンテキストでは、次のサイクルで発送されなかったスペキュレイティブなロードに使用されるトークンは、次のサイクルまで再使用できない。例えば、トークンが1つだけ残っている場合、SpecDispLdValは、実際に発送されたロードが無くても、2つの連続するサイクルでは高いものになってはいけない。
LSDCは、割り当てられたロードの4のLDQインデックスを返送し、返送されたインデックスは、ロード及び記憶がDI2で発送される、如何なる具体的な順序であってはならない。LSDCは、割り当てられた記憶にSTQインデックスを返送し、割り当てられた記憶は、提供されたインデックスから次の4つまでになる。有効なビットと他のペイロード構造は、DI4に記録されている。有効なビットと、以前選択されたエントリとの組み合わせは、底からスキャンされ、次の4つのフリーなLDQエントリを見つける。
(アドレス生成(AG)パイプ)
図7を参照すると、アドレス生成700(又は、agen、SCピック若しくはAGピックと呼ぶ)中、オペレーションは、スケジューラにより選択され、EXパイプを流れ、アドレス702を生成する。アドレス702は、またLSに提供される。アドレス生成後、オペレーションは、AGパイプを流れ(恐らく少々の遅延の後)、LSは、オペレーションをLSパイプ(ある場合)に流して、オペレーションがこのフローでも完了するようにする。EXは、サイクル毎に3つのオペレーションのアドレス生成をする(最大2ロードと2記憶)。アドレス生成パイプは、3本(つまり、0、1、2)又は(B、A、C)704、705、706がある。ロード712は、パイプ0又は1(パイプ1のみがロードに対応できる)についてアドレス生成される。記憶714は、パイプ0又は2(パイプ2のみが記憶に対応できる)についてアドレス生成される。アドレス生成パイプの全てのオペレーションは、AG1のμTAGアレイ710をルックアップして、ウェイ(way)を判定する。必要な場合、ウェイは、AG3でペイロードにて捕捉される。ミスアラインされたオペレーションは、スタッタされ、μTAGアレイ710を2回ルックアップし、MA2時のアドレス作成時にルックアップするオペレーションのアドレスは4つのエントリスキッドバッファで捕捉される。なおスキッドバッファは、ミスアラインの状態であっても、アドレス作成毎に1つのエントリを使用し、スキッドバッファが厳格にFIFOであり、スキッドバッファでオペレーションとオペレーションの順序変更がフラッシュされず、無効としてマークされないようにする。スキッドバッファがフルの場合、EXからのアドレス作成はStallAgen信号をアサートして中断される。StallAgenのアサート後、スキッドバッファにフィットする必要のある追加のオペレーションが必要である2以上のアドレス生成があり得る。LSは、システム制御ブロック(SCB)720と、書き込みコンバインバッファ(WCB)722と同期する。オペレーションは、DCパイプ上の各オペレーションがTLBポートを必要としない場合には、AG1のTLB716をルックアップしてもよい。通常、DCパイプ上のオペレーションは、AGパイプ上のオペレーションよりも優先される。物理アドレスは、DCパイプにバイパスされない場合には、AG3のペイロードに捉えられる。ロードオペレーションは、AG1のVAハッシュと、AG2のインデックス−ウェイ(way)/インデックス−PAとを使用してMABをcamする。AG1camは、実行されて、同じアドレスのスペキュレイティブなL2要求がマッチするのを防止して、電力を節約する。インデックス−ウェイ(way)/PAcamは、実行され、複数のフィルが、同じウェイ/アドレスに起こるのを防止する。MABは、割り当てられ、AG3サイクルのL2に送られる。記憶は、AGパイプCからのMAB要求を発行することができない(AGパイプAからの記憶フィルは、チキンビットで無効にすることができる)。また、アドレス生成パイプ上のオペレーションは、これが最も頻度の高いケースである(AG1/DC1)L1のデータパイプ724にバイパスされる。スキッドバッファは、AGパイプとDCパイプがミスアライン状態のオペレーションに対しても同期しているようにする。また、スキッドバッファは、一サイクルバイパスを避けるために使用される。つまり、DCパイプは、一サイクルでAGパイプをトレイルし、ピッカが有効に流れるオペレーションを1つしか持ってない場合でも、参照によりこれがなされるようにする。当業者は、AG2/DC1は可能ではなく、AG3/DC1とAG3/DC0が特別なバイパスのケースで、AG4/DC0以降は、μTAGのヒットに基づいてAG2の再選択の決定をする際にはピックロジックによりカバーされる。
(データパイプ)
一実施形態では、3本のデータパイプ、0、1、2があり、ロードは、パイプ0又は1を流れることができ、記憶は、パイプ0又は2を流れることができる構成である。AGパイプ0は、LSピックが無い場合、DCパイプ0にバイパスされ、パイプ間バイパスが無いパイプ1、2についても同様である(例えばAG0がDC1に)。LSピックは、DCパイプが前回のSCピックのミスアライン状態のサイクルによって塞がれない限り、SCピックに優先する(つまり、AGパイプバイパス)。AGのDCパイプへのバイパスが1つのDCピック(1サイクルまたはミスアラインの場合2サイクル)とぶつかる場合には、AGする。オペレーションは、スキッドバッファにて待機し、それからDCパイプにバイパスされる。
以下のテーブルは、同じオペレーションAGとDCパイプフロー間の関係を示すものである。
Figure 2016534431
(実施形態)
1.集積回路であって、
キャッシュメモリと、
OPコードのロードオペレーションと記憶オペレーションとを容易にするための複数のパイプラインを有する実行ユニットであって、各パイプラインが、前記実行ユニットとキャッシュメモリとの間で、OPコードによって示された命令を実行するように構成されている、実行ユニットと、
1つのサイクルでロードと記憶とを同時に行う前記複数のパイプラインに含まれるアドレス生成パイプライン用の命令のロード及び記憶キューにキューイングすることを要求するように構成された命令フェッチコントローラと、を備える集積回路。
2.前記アドレス生成パイプラインは、少なくとも1つの専用ロードアドレス生成パイプラインと、ロード又は記憶オペレーション用の少なくとも1つのアドレス生成パイプラインと、を含む、実施形態1の集積回路。
3.前記アドレス生成パイプラインは、少なくとも1つの専用記憶アドレス生成パイプラインと、ロード又は記憶オペレーション用の少なくとも1つのアドレス生成パイプラインと、を含む、実施形態1又は2の集積回路。
4.前記アドレス生成パイプラインは、少なくとも1つの専用ロードアドレス生成パイプラインを含む、実施形態1〜3の何れかの集積回路。
5.前記アドレス生成パイプラインは、3つのパイプラインを含み、最大2つのロード又は最大2つの記憶を有し、1つのサイクルで最大3つの命令が処理される、実施形態1〜4の何れかの集積回路。
6.前記アドレス生成パイプラインは、OPコードの優先順位付けを判定するためのマクロTAGルックアップを含む、実施形態1〜5の何れかの集積回路。
7.前記アドレス生成パイプラインは、OPコードの優先順位付けを判定するためのマクロTAGルックアップを含む、実施形態1〜6の何れかの集積回路。
8.前記マクロTAGルックアップによりミスアラインの状態と判定されたOPコードは、前記マクロTAGルックアップによりスタッタされて次のサイクルで処理される、実施形態1〜7の何れかの集積回路。
9.前記マクロTAGルックアップにより次のサイクルでミスアラインの状態と判定されたOPコードは、スキッドバッファに送られる、実施形態1〜8の何れかの集積回路。
10.前記キャッシュメモリは、レベル2キャッシュである、実施形態1〜9の何れかの集積回路。
11.前記集積回路は、アドレス生成パイプでμTAGルックアップを実行するように構成されている、実施形態1〜10の何れかの集積回路。
12.前記μTAGルックアップは、ウェイプリディクタ(WP)ルックアップである、実施形態1〜11の何れかの集積回路。
13.前記集積回路は、アドレストランスレーションをアドレス生成(AGEN)パイプで実行するように構成されている、実施形態1〜12の何れかの集積回路。
14.前記集積回路は、書き込み結合バッファ(WCB)制御を実行するように構成されている、実施形態1〜13の何れかの集積回路。
15.前記集積回路は、エイリアスサポートする他のフル連想μTAG構造を有する、実施形態1〜14の何れかの集積回路。
16.複数のパイプラインを有する実行ユニットにおいて、OPコードにより示された命令を処理する方法であって、
前記実行ユニットとキャッシュメモリとの間で、OPコードで示された命令を処理することと、
1つのサイクルで同時にロード及び記憶を行う前記複数のパイプラインに含まれるアドレス生成パイプラインの命令をロード及び記憶キューにキューイングすることと、を含む方法。
17.ロードのキューイングは、ロード要求専用の1つのパイプラインと、ロード要求又は記憶要求を処理する1つのパイプラインと、を含む最大2つのパイプラインを使用する、実施形態16の方法。
18.2つのロードのキューイングは、記憶要求専用の1つのパイプラインを含む最大3つのパイプラインを用いて1つの記憶要求のキューイングを行うことを含む、実施形態16又は17の方法。
19.記憶のキューイングは、記憶要求専用の1つのパイプラインと、ロード要求又は記憶要求を処理する1つのパイプラインと、を含む最大2つのパイプライン使用する、実施形態16〜18の何れかの方法。
20.2つの記憶のキューイングは、ロード要求専用の1つのパイプラインを含む最大3つのパイプラインを用いて1つの記憶要求のキューイングを行うことを含む、実施形態16〜19の何れかの方法。
21.前記キャッシュメモリは、レベル2キャッシュである、実施形態16〜20の何れかの方法。
22.アドレス生成パイプ上のμTAGをルックアップすることを含む、実施形態16〜21の何れかの方法。
23.前記μTAGルックアップは、ウェイプリディクタ(WP)ルックアップである、実施形態16〜22の何れかの方法。
24.アドレス生成(AGEN)パイプでのアドレストランスレーションを要求することを含む、実施形態16〜23の何れかの方法。
25.集積回路(IC)の設計又は製造を容易にする1つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読記憶媒体であって、
前記ICは、
オペレーションコードのロードオペレーションと記憶オペレーションとを容易にする複数のパイプラインを有する実行ユニットであって、各パイプラインが、前記実行ユニットとキャッシュメモリとの間で、オペレーションコードで示された命令を実行するように構成されている、実行ユニットと、
1つのサイクルでロード及び記憶を同時に行う前記複数のパイプラインに含まれるアドレス生成パイプライン用の命令のロード及び記憶キューにキューイングすることを要求するように構成された命令フェッチコントローラと、を含む、コンピュータ可読記憶媒体。
26.前記命令は、装置の製造用に使用されるハードウェア記述言語(HDL)命令である、実施形態25のコンピュータ可読記憶媒体。
27.集積回路であって、
メモリと、
OPコードのロードオペレーションと記憶オペレーションとを容易にするための複数のパイプラインを含む実行ユニットであって、各OPコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、実行ユニットと、
最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む集積回路。
28.前記ページテーブルウォーカは、64エントリのフル連想ページウォークキャッシュ(PWC)を含む、実施形態27の集積回路。
29.トランスレーションルックアサイドバッファ−ミスアドレスバッファ(TLBMAB)を含む、実施形態27又は28の集積回路。
30.前記TLBMABは、アドレス、プロパティ及び未決のテーブルウォークの状態を保持する4つのエントリ選択可能キューを含む、実施形態27〜29の何れかの集積回路。
31.前記ページテーブルウォーカは、TLBMABキューにおいて最大4つのエントリを選択する、実施形態27〜30の何れかの集積回路。
32.前記ページテーブルウォーカは、TLBにアクセスし、物理アドレスと仮想アドレスとを対応付けしたウォークをTLBに追加する、実施形態27〜31の何れかの集積回路。
33.前記TLBは、レベル1のTLB(DTLB)と、レベル2のTLB(L2TLB)と、から構成された群から選択される、実施形態27〜32の何れかの集積回路。
34.前記DTLBは、64エントリのDTLBであり、
前記L2TLBは、1024エントリのL2TLBであり、
前記ページテーブルウォーカは、64エントリのページウォークキャッシュ(PWC)を含む、実施形態27〜33の何れかの集積回路。
35.実行ユニットとメモリとの間のOPコードのロードオペレーション及び記憶オペレーションであって、各OPコードは、前記実行ユニットによって、キャッシュトランスレーションルックアサイドバッファ(TLB)の物理アドレスに対応する仮想アドレスを用いてアドレス可能である、ロードオペレーション及び記憶オペレーションを容易にすることと、
最大4つのテーブルウォークを同時にサポートするパイプラインページテーブルウォーカを提供することを含む方法。
36.アドレス、プロパティ及び未決のテーブルウォークの状態を保持するトランスレーションルックアサイドバッファ−ミスアドレスバッファ(TLBMAB)の4つのエントリ選択可能キューから最大4つのウォーカタスクを選択する、実施形態35の方法。
37.前記ページテーブルウォーカが、TLBにアクセスし、物理アドレスと仮想アドレスとを対応付けしたウォークをTLBに追加することを含む、実施形態35又は36の方法。
38.前記TLBは、レベル1のTLB(DTLB)と、レベル2のTLB(L2TLB)と、から構成された群から選択される、実施形態35〜37の何れかの方法。
39.前記DTLBは、64エントリのDTLBであり、
前記L2TLBは、1024エントリのL2TLBであり、
前記ページテーブルウォーカは、64エントリのページウォーカキャッシュ(PWC)を含む、実施形態35〜38の何れかの方法。
40.集積回路(IC)の設計又は製造を容易にする1つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読憶媒体であって、
前記ICは、
OPコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインを含む実行ユニットであって、各OPコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、実行ユニットと、
最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含むコンピュータ可読記憶媒体。
41.前記命令は、装置の製造に使用されるハードウェア記述言語(HDL)命令である、実施形態40のコンピュータ可読記憶媒体。
42.トランスレーションルックアサイドバッファ−ミスアドレスバッファ(TLBMAB)を含む、実施形態40又は41のコンピュータ可読記憶媒体。
43.前記TLBMABは、アドレス、プロパティ及び未決のテーブルウォークの状態を保持する4つのエントリ選択可能キューを含む、実施形態40〜42の何れかのコンピュータ可読記憶媒体。
44.前記ページテーブルウォーカは、TLBMABキューにおいて最大4つのエントリを選択する、実施形態40〜43の何れかのコンピュータ可読記憶媒体。
45.前記ページテーブルウォーカは、TLBにアクセスし、物理アドレスと仮想アドレスとを対応付けしたウォークをTLBに追加する、実施形態40〜44の何れかのコンピュータ可読記憶媒体。
46.前記TLBは、レベル1のTLB(DTLB)と、レベル2のTLB(L2TLB)と、から構成された群から選択される、実施形態40〜45の何れかのコンピュータ可読記憶媒体。
47.前記DTLBは、64エントリのDTLBであり、
前記L2TLBは、1024エントリのL2TLBであり、
前記ページテーブルウォーカは、64エントリのページウォーカキャッシュ(PWC)を含む、実施形態40〜46の何れかのコンピュータ可読記憶媒体。
なお、本明細書の開示に基づき多数の変形が可能である。上記では特定の組み合わせにおいて構成や要素を説明したが、各構成や要素は、他の構成や要素なしに単独で使用されてもよいし、他の構成や要素を有し又は有しない様々な組み合わせで使用可能である。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアに実装されてもよい。好適なプロセッサの例としては、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連した1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、その他の全てのタイプの集積回路(IC)、及び/又は、状態機械が挙げられる。かかるプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(コンピュータ可読媒体に記録可能な命令)の結果を使用して、製造プロセスを構成して製造されたものでもよい。かかるプロセスの結果は、上述した実施形態の態様が実装されているプロセッサを製造する半導体製造プロセスで使用されるマスクワークであってもよい。
本明細書で提供する方法やフローチャートは、非一時的なコンピュータ可読記憶媒体に記憶された、汎用コンピュータやプロセッサにより実行されるコンピュータプログラム、ソフトウェア又はファームウェアとして実施されてもよい。非一時的なコンピュータ可読記憶媒体の例としては、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリ装置、内蔵ハードディスクやリムーバブルディスク、CD−ROMディスクやデジタル多用途ディスク(DVD)等の光磁気ディスク等の磁気メディアが挙げられる。

Claims (21)

  1. メモリと、
    順序付けされておらず(OOO)割り当てされていない、順序付けされていないロードキュー(LDQ)であって、サイクル毎に2つピックを選択するLDQを有し、前記メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
    前記LDQは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順序キュー(LOQ)を含む、
    集積回路。
  2. 前記LDQは、前記LOQエントリを生成するためのロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を備える、請求項1の集積回路。
  3. 前記LOQは、最大16のエントリを含む、請求項1の集積回路。
  4. 前記LTLI CAMは、同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築する、請求項2の集積回路。
  5. 前記LTLI CAMは、同じアドレスについて有効なロードのみを検討する、請求項2の集積回路。
  6. 前記LTLI CAMは、キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにする、請求項2の集積回路。
  7. 前記LOQは、順序を維持するために、必要に応じてロードを再同期する、請求項2の集積回路。
  8. 前記LOQは、トラックされたアドレスがマッチした場合にエントリを結合させることによって、キューサイズを小さくする、請求項2の集積回路。
  9. 前記実行ユニットは、
    オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
    最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項1の集積回路。
  10. 前記実行ユニットは、
    オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
    最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項1の集積回路。
  11. 順序付けされておらず(OOO)割り当てされていないロードキュー(LDQ)を有するパイプライン化された実行ユニットに対して、順序付けされていないロードをキューイングすることと、
    サイクル毎に最大2つのピックを選択して、メモリからロードをキューイングすることと、
    ロード順序キュー(LOQ)を用いて、順序に依らずに完了したロードをトラッキングして、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにすることと、を含む、
    方法。
  12. ロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を用いて、前記LOQエントリを生成することを含む、請求項11の方法。
  13. 前記LOQは、最大16のエントリを含む、請求項11の方法。
  14. 同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築することを含む、請求項12の方法。
  15. 同じアドレスについて有効なロードのみを検討することを含む、請求項12の方法。
  16. キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにすることを含む、請求項12の方法。
  17. 順序を維持するために、必要に応じてLOQのロードを再同期することを含む、請求項12の方法。
  18. トラックされたアドレスがマッチした場合にエントリを結合させて、前記LOQのキューサイズを小さくすることを含む、請求項12の方法。
  19. 集積回路(IC)の設計又は製造を容易にする1つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読記憶媒体であって、
    前記ICは、
    順番付けされておらず(OOO)割り当てされていない、順序付けされていないロードキュー(LDQ)であって、サイクル毎に2つピックを選択するLDQを有し、メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
    前記LDQは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順番キュー(LOQ)を含む、コンピュータ可読記憶媒体。
  20. 前記LDQは、LOQエントリを生成するためのロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を備える、請求項19のコンピュータ可読記憶媒体。
  21. 前記命令は、装置の製造に使用されるハードウェア記述言語(HDL)命令である、請求項19のコンピュータ可読記憶媒体。
JP2016525993A 2013-10-25 2014-10-24 ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 Pending JP2016534431A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361895618P 2013-10-25 2013-10-25
US61/895,618 2013-10-25
PCT/US2014/062267 WO2015061744A1 (en) 2013-10-25 2014-10-24 Ordering and bandwidth improvements for load and store unit and data cache

Publications (1)

Publication Number Publication Date
JP2016534431A true JP2016534431A (ja) 2016-11-04

Family

ID=52993662

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525993A Pending JP2016534431A (ja) 2013-10-25 2014-10-24 ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上

Country Status (6)

Country Link
US (1) US20150121046A1 (ja)
EP (1) EP3060982A4 (ja)
JP (1) JP2016534431A (ja)
KR (1) KR20160074647A (ja)
CN (1) CN105765525A (ja)
WO (1) WO2015061744A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019096309A (ja) * 2017-11-22 2019-06-20 エイアールエム リミテッド メンテナンス動作の実行
JP2020514872A (ja) * 2017-01-13 2020-05-21 エイアールエム リミテッド Tlbまたはキャッシュ割り当ての分割

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106716363B (zh) 2014-07-25 2021-04-09 英特尔公司 使用转换后备缓冲器来实现指令集不可知的运行时架构
US9733909B2 (en) * 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
EP3066559B1 (en) 2014-12-13 2019-05-29 VIA Alliance Semiconductor Co., Ltd. Logic analyzer for detecting hangs
CN105980978B (zh) * 2014-12-13 2019-02-19 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器
US10296348B2 (en) * 2015-02-16 2019-05-21 International Business Machines Corproation Delayed allocation of an out-of-order queue entry and based on determining that the entry is unavailable, enable deadlock avoidance involving reserving one or more entries in the queue, and disabling deadlock avoidance based on expiration of a predetermined amount of time
EP3153971B1 (en) * 2015-10-08 2018-05-23 Huawei Technologies Co., Ltd. A data processing apparatus and a method of operating a data processing apparatus
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) * 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
GB2550859B (en) * 2016-05-26 2019-10-16 Advanced Risc Mach Ltd Address translation within a virtualised system
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10282296B2 (en) 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
EP3671472B1 (en) 2017-09-25 2022-05-04 Huawei Cloud Computing Technologies Co., Ltd. Data access method and device
CN110502458B (zh) * 2018-05-16 2021-10-15 珠海全志科技股份有限公司 一种命令队列控制方法、控制电路及地址映射设备
GB2575801B (en) * 2018-07-23 2021-12-29 Advanced Risc Mach Ltd Data Processing
US11436071B2 (en) 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory
US11113056B2 (en) 2019-11-27 2021-09-07 Advanced Micro Devices, Inc. Techniques for performing store-to-load forwarding
US11822486B2 (en) * 2020-06-27 2023-11-21 Intel Corporation Pipelined out of order page miss handler
US11615033B2 (en) * 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
CN112380150B (zh) * 2020-11-12 2022-09-27 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
CN117389630B (zh) * 2023-12-11 2024-03-05 北京开源芯片研究院 一种数据缓存方法、装置、电子设备及可读存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US7302527B2 (en) * 2004-11-12 2007-11-27 International Business Machines Corporation Systems and methods for executing load instructions that avoid order violations
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
US8447911B2 (en) 2007-07-05 2013-05-21 Board Of Regents, University Of Texas System Unordered load/store queue
CN101866280B (zh) * 2009-05-29 2014-10-29 威盛电子股份有限公司 微处理器及其执行方法
CN101853150B (zh) * 2009-05-29 2013-05-22 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
US8713263B2 (en) * 2010-11-01 2014-04-29 Advanced Micro Devices, Inc. Out-of-order load/store queue structure
US20120117335A1 (en) 2010-11-10 2012-05-10 Advanced Micro Devices, Inc. Load ordering queue
US9069690B2 (en) * 2012-09-13 2015-06-30 Intel Corporation Concurrent page table walker control for TLB miss handling

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020514872A (ja) * 2017-01-13 2020-05-21 エイアールエム リミテッド Tlbまたはキャッシュ割り当ての分割
US11243892B2 (en) 2017-01-13 2022-02-08 Arm Ltd. Partitioning TLB or cache allocation
JP7245779B2 (ja) 2017-01-13 2023-03-24 アーム・リミテッド Tlbまたはキャッシュ割り当ての分割
JP2019096309A (ja) * 2017-11-22 2019-06-20 エイアールエム リミテッド メンテナンス動作の実行
JP7340326B2 (ja) 2017-11-22 2023-09-07 アーム・リミテッド メンテナンス動作の実行

Also Published As

Publication number Publication date
CN105765525A (zh) 2016-07-13
US20150121046A1 (en) 2015-04-30
WO2015061744A1 (en) 2015-04-30
EP3060982A4 (en) 2017-06-28
EP3060982A1 (en) 2016-08-31
KR20160074647A (ko) 2016-06-28

Similar Documents

Publication Publication Date Title
JP2016534431A (ja) ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US9747218B2 (en) CPU security mechanisms employing thread-specific protection domains
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US7426626B2 (en) TLB lock indicator
JP3587591B2 (ja) キャッシュ・ミスを制御する方法およびその計算機システム
US9465748B2 (en) Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US7779208B2 (en) Prefetch unit
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
CN107278298B (zh) 缓存器维护指令
JP2001142779A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
JP2001147857A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
BR102013014996B1 (pt) processador, método e unidade de renomeação de registrador
US10482024B2 (en) Private caching for thread local storage data access
JP2001202287A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
US11119925B2 (en) Apparatus and method for managing capability metadata
US11507521B2 (en) Apparatus and method for controlling use of bounded pointers
TW201633144A (zh) 管理快取記憶體中的重用資訊
WO2013084315A1 (ja) 演算処理装置、及び、演算処理装置の制御方法
JP2001142780A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
JPWO2008155851A1 (ja) 演算処理装置、エントリ制御プログラムおよびエントリ制御方法
US9348598B2 (en) Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
JPWO2013084315A1 (ja) 演算処理装置、及び、演算処理装置の制御方法
JP2010176692A (ja) 演算処理装置、情報処理装置及び制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160808

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180925

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190423