JP2016534431A - ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 - Google Patents
ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 60
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000013519 translation Methods 0.000 claims description 43
- 239000000872 buffer Substances 0.000 claims description 38
- 238000004519 manufacturing process Methods 0.000 claims description 10
- 230000003993 interaction Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 claims description 4
- 230000014616 translation Effects 0.000 description 42
- 239000003795 chemical substances by application Substances 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 239000000523 sample Substances 0.000 description 12
- 230000004044 response Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 8
- 230000007958 sleep Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 206010016825 Flushing Diseases 0.000 description 4
- 230000004913 activation Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 239000008187 granular material Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 241000287828 Gallus gallus Species 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002574 poison Substances 0.000 description 1
- 231100000614 poison Toxicity 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 208000011580 syndromic disease Diseases 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB 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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Description
本願は、2013年10月25日に出願された米国仮特許出願第61/895,618号の利益を主張するものであり、その全ての内容を引用により含むものである。
典型的なページテーブルウォーカは、一連の工程を行う状態機械である。ネスト化したページング用の2段階トランスレーションをサポートする「x86」及びARMv8等のアーキテクチャについては、このトランスレーションについて20〜30程の主要工程が存在し得る。性能を向上させ、一度に複数のページテーブルウォークを行う典型的なページテーブルウォーカについては、当業者は、状態機械が2台必要でって、その関連するロジックが重大なコストに繋がることを理解するであろう。典型的には、ページテーブルウォークの実行プロセスにおいて、時間の大きい割合を占めるのは、実行されるメモリアクセスを待つ時間であり、状態機械ロジックの大部分が殆どの時間において使用されていないことになる。一実施形態において、ページテーブルウォーカは、バッファにおいて部分的に完成したページテーブルウォークに対応する状態を記憶することができ、状態機械ロジックは、一方が待っている間、他方のページテーブルウォークを処理するために自由な状態にすることができる。状態機械ロジックは、さらに「パイプライン化」され、サイクル毎に新たなページテーブルウォークを開始することができ、同時処理するページテーブルウォークの数は、使用可能なバッファのエントリの数によってのみ制限される。バッファは、次に何れのウォークを処理するのかを選ぶ「ピッカ(Picker)」を備えている。このピッカは、如何なる数のアルゴリズムを使用してもよいが(例えば、ファーストインファーストアウト、準備可能で最も古いもの(oldest ready)、ランダム等)、例示的な実施形態では、次のステップへ準備可能で最も古いエントリを選択するものとする。各時間の間でバッファに全ての状態が記憶されるので、ウォークは、パイプラインを流れるように選択され、1つの状態機械ロジックが、複数の同時進行ページテーブルウォークを処理することができる。
このセクションでは、テーブルウォークに適用されるアーキテクチャルールの全ての事項を繰り返さない。よって、本説明の全てを理解するには、当業者は、Aarch64アーキテクチャタイプ等のRISCプロセッサのページングアーキテクチャの基本的な理解が必要になるであろう。しかし、一例としての実施形態のページテーブルウォーカは、以下のページング構成をサポートするものとして理解されよう。
図4のテーブルは、従来の特定のページサイズと、例示的な一実施形態におけるこれらの実施サイズと、を示している。全てのページサイズをサポートしていないので、より小さいページに分割されることもあり得る。太線は、適切なビットを回転させるマルチサイクルフラッシュを必要とするページの分割を示す。一方、連続するページをベースの非連続ページサイズに分割するには、これは単にヒントなので、余分なフラッシングを必要としない。L1C、L2C及びL3Cの行は、「連続」ページを示す。PWCの数と、L2TLBの数は、アーキテクチャにサポートされている従来のアドレッシングモードに基づいて、これらの間のサポートされているページサイズを分割する。そのようなエントリがハイパスプリンタとしてタグされ、仮想アドレス(VA)に基づくフラッシュが使用された場合に、ビットフリッピングによって全てのマッチングページを見つけるのは不可能なので、全てフラッシュされるステージ2のルックアップに基づいて、ハイパバイザは、オペレーティングシステム(O/S)ページサイズをさらに分割する。部分トランスレーション/ネスト化及び最終LSトランスレーションは、L2TLB及びPWCに記憶されるが、最終命令キャッシュ(IC)トランスレーションは記憶されない。
図3のページサイズテーブルのように、実施の利便性のためにページが分割される。一実施形態では、ページは、分割の際に任意にタグ付けされる。ハイパバイザのページがO/Sページサイズより小さい場合には、インストールされたページは、ハイパバイザのサイズを使用して、HypervisorSplinteredとエントリをマークする。VAによりTLB無効化(TLBI)が起こった場合には、HypervisorSplinteredされたページは、VAにマッチしているとみなされ、オペレーティングモードのCAMの残りがマッチする場合には、フラッシュされる。このようにして行われた分割は、VAによるフラッシュによって、3つのフラッシュを生成する。1つのフラッシュは要求されたアドレスによって生成され、1つのフラッシュはビットをフリッピングして、1GBページの他の512MBを得ることによって生成され、1つのフラッシュはビットをフリッピングして、2MBページの他の1MBを得ることによって生成される。第2の2つのフラッシュは、この方法により分割されたページのみに影響する。TLBがそのビットを実施しない限り、どのマッチングページでもよい。
実施された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
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 読取/書き込み
一実施形態では、スペキュレイティブな要求においてページウォーカが対応するフォールトは、非スペキュレイティブに実行される必要があるというロード/記憶/命令を知らせる。L1TLBにインストール済みの許可フォールトは、TLBミスのように扱われる。トランスレーション/アクセスフラッグ/アドレスサイズフォールトは、TLBに書き込まれない。フォールトトランスレーションへ導かれる、フォールトのない部分は、TLBにキャッシュされる。非スペキュレイティブな要求は、キャッシュ部分からウォークを繰り返す。TLBは、完全にはキャッシュされず、メモリからウォークを再開する。スぺクフォールトトランスレーション(SpecFaulting translations)は、インストールされず、後に消去される。非スぺク(NonSpec)要求にはフォールトが生じず、フォールトを解消するためにメモリが変更された場合には、メモリの変更が観測される。フォールトに対応した後、非スぺクフォールト(Nonspec faults)は、データフォールト状態レジスタ(DFSR)、データフォールトアドレスレジスタ(DFAR)、例外シンドロームレジスタ(ESR)を適宜更新する。その後、LD/STがフローし、例外を発見する。IFは、自身のプリフェッチ停止情報をログする全ての情報が与えられる。フォールトは、VA又はIPAをルックアップしている間にフォールトが来たか否かにより、レベルと共にステージ1又はステージ2として記録される。
アクセスフラッグが可能な場合に、ハードウェア管理が可能でなく、フラッグがセットされていない場合には、フォールトになる。ハードウェア管理が可能な場合に、フラグが設定されていない場合には、スペキュレイティブなウォークがフォールトになり、非スペキュレイティブなウォークは、アトミックにビットを設定する。トランスレーションがロードによりキャッシュ済みの可能性がある以外には、ダーティビットの更新についても同様である。
安全な物理アドレス(PA)レンジに対して安全でないアクセスが試みられると、フォールトが生成される。
一実施形態では、デバイス特定PAレンジへのアクセスが禁じられており、試してもフォールトになる。
AP及びHypAPは、読取又は書き込みが特定のページに許可されているか否かを定義する。ページウォーカ自身は、許可を得ていない読み込みがウォークの間に試みられたり、又は、Aビット/Dビットの更新時に書き込みが試みられると、ステージ2許可フォールトをトリガしてもよい。データ停止例外は、アクセス権が認められていないデータアクセスをプロセッサが試みると、生成される。例えば、プロセッサが、PL0に存在し、特権的メモリアクセスのみアクセスが可能であるとマークされたメモリ領域にアクセスを試みた場合には、データ停止例外が生成される。特権的メモリアクセスは、ユーザが開始したメモリアクセスを除く、PL1又はこれ以上での実行の際に実行されるアクセスである。非特権的メモリアクセスは、以下のケースの何れかにおいて実行されるロード又は記憶オペレーションの結果として生成されるアクセスである。
− プロセッサが、ユーザメモリアクセスのあるPL1に存在する場合。
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に返送され、オペレータにスリープ又はリトライさせる。
一実施形態では、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特定の許可フォールトと、ログトランスレーション、サイズ等の包括的なウォークフォールトを判定するのに必要な全ての情報を受け取る。
L2キャッシュは、IFプローブインターフェイスを介してPTWにIC又はTLBIフラッシュを送る構成でもよい。要求は、TLBIの場合に、2サイクルに亘ってフラッシュ情報を捉える2つのエントリバッファを割り当てる。要求は、最大4サイクルまで取って、上記のページ分割のために適切なフラッシュを生成する。フラッシュ要求に対しては、PW0ピックについて一番低い優先度が与えられる。ICフラッシュは、他の何もすることなく、PTWを介してフローし、オーバーロードされたウォーク応答バス上のPW3のIFに送る。L2要求は、バッファがフルの場合には認証されない。TLBIフラッシュは、パイプをフローし、かかるフラッシュが、CAMのアクセス前に、下記のようにリマッパをルックアップするオーバーロードのウォーク応答バス上のLS及びIFの両方に送られる前に、上述のようにL2TLB及びPWCをフラッシュする。各エントリは、VAベースのフラッシュに使用される状態機械を有し、適切なビットをフリップして、詳細が上述された分割ページを除去する。
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つの状態で状態機械を進める。
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からフィル要求が返送されてくるのを待つスリープ。
− 先頭のウォークが終わるまで、オーバーラッピングウォークとしてマークされている場合にスリープ。
これらの図は、PTW及びLSパイプのインタラクションの様々なケースを示す。PTWが最後のトランスレーションでヒットしない場合には、PTWは、ロードをLS(AG&DC)パイプに沿って送り、データ(EXを介する返送ウェイ)を把握する。データは、TLBMABに書き込まれ、PTWオペレーションが起動されて当該データとランデブする。もし、L1ミスがある場合には、PTWオペレーションは、L2からフィルデータとランデブする第2ロードを生成する。Aビット/Dビットの更新は、ロックを得るロードを必要とし、メモリのページテーブルを更新する記録を生成する。
アクセスされ、ダーティフラッグが有効となり、ハードウェア更新が有効となった場合、PTWは、アトミックRMWを実行し、必要に応じてメモリのページテーブルを更新する。Aビット又はDビットバイオレーションを見つけるスペキュレイティブなフローは、非スぺクとして再要求されるスペキュレイティブなフォールトを得る。Aビットの更新はスペキュレイティブなウォークに対して行われるが、ページテーブルがWBメモリにあり、キャッシュロックが可能な場合にのみ行われる。
ASIDリマッパは、16ビットASIDの32エントリテーブルであり、VMIDリマッパは、16ビットVMIDの8エントリテーブルである。VMID又はASIDが変更されると、リマップの値がフル値に割り当てられているかどうかを確認する適切なテーブルをCAMする。ミスがある場合には、LRUエントリが上書きされ、そのエントリについてコアローカルフラッシュが生成される。
− ASIDが再使用される場合、ASIDベースのフラッシュが発行される。
− これらのフラッシュは、PW0の選択においてもっとも高い優先度を有する。
− 各スレッドは、最大2つのフラッシュを必要とする構成であってもよい。
ヒットがある場合、リマップ値は、TLB CAMに使用されるLS及びIFに対して駆動される。L2は、ピックについて両方のテーブルのCAMを要求し、フラッシュにおいて使用されるリマップ値を見つける。
同じページサイズのエントリについて複数マッチが起こることを防ぐため、任意の書き込みをPWC、L2TLB及び/又はL1TLBに対して行う。PWC及び/又はL2TLBを再度ルックアップするまで、ヒットであるウォークは、PWC、L2TLB及び/又はL1TLBに書き込むことが禁止され、先頭のウォークが終了するまでスリープの状態にされるウォークをオーバーラップするためのTLBMABをCAMする。
図6に示す一実施形態では、従来の順序付けルールは、同じアドレスのロードが順序付けされた状態のままであることを要求する。ロードキュー(LDQ)600は、順序付けされずに、古いロードが完了しない間に非インタラクトのロードが完了することを可能にする。ロードをインタラクトするエイジ関係を再構築するため、ロード−記憶間のインタラクション用Store To Load Interlock(STLI)CAM602同様のLoad−ToLoad−Interlock(LTLI)CAM602がフロー時間に実行される。LTLI CAM結果は、キャッシュ不能なロードを順序付けし、ロード順序キュー(LOQ)604を割り当て、古いオペレーションに対して選択可能のマスクを供給するのに使用される。キャッシュ不能ロードについては、同じアドレスへのロードは、順序付けされた状態のままである必要があり、LTLIヒットにフェール状態にする。キャッシュ可能ロードについては、同じアドレスへのロードは、順序付けされた状態のままである必要があり、LOQ604をLTLIヒットに割り当てる。エイジを近似するため、Eビットのピックの一方のレッグは、LTLIヒットのエイジ部分を使用し、より古い有効なロードを判定し、フィードバックを提供して、選択オペレーションがより古いロードを選択するようにする。
エイジ比較チェックは、フローしているロードの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サイズのベクタ
外部のライタが無い場合、同じアドレスへのロードは、順序に依らず実行し、同じデータを返送する。より古いロードよりも古いデータを若いロードが観測するまれなケースでは、当該若いロードは、新たなデータを再同期し、再取得する。そして、LDQエントリは、自由に行われてもよく、外部ライタがある場合には、より軽量のLOQエントリが割り当てられて、このロード間関係をトラックする。ロードは、DC3の良性の状態の返送やDC3のLTLIcamにおけるヒットに基づいたDC4のLOQへ割り当て又は結合する。同じスレッドの、より古く未完了の同じアドレス、又は、未知のアドレスのロードがある場合には、ロードはLOQエントリを必要とする。
完了するロードは、DC4のLOQをCAMし、例外状態(下記のMatchを参照)と可能な結合(上記参照)を判定する。結合が可能でない場合には、スレッドに対してスペースが存在する場合に、ロードは新しいエントリを割り当てる。割り当てられるエントリは、より古いアドレスにマッチするロードのLTLIcamからの48ビットマッチを記録する。
両パイプが同じパイプステージでフローするインタラクティブなロードを有するような構成であってもよい。ロードは、同じアドレスに対する同じサイクルで実行される*Loadの順序から外れられないので、マスクの良性の状態のロードと、反対のパイプLTLI CAMからの結果は、同じデータになる。複数マッチを避けるため、2つのロードは、両方とも良い状態の場合には、Idx+Way+Hash+Treadで比較される。
プローブ(エビクションも含む)及びフローしているロードは、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スレッドを精査する必要があるかどうかを判定する。
DCパイプロードのみLOQをルックアップする。良好な状態で完了するロードは、DC4のLOQをルックアップし、フローしているロード(若いロードのLTLIからなる)のLdqIndxにLdVecがマッチするエントリを見つける。エントリが、フローしており完了するロードセットについてLoqResyncと、LdVec内の対応するビット位置とを有する場合、フローしているロードがマークされ、トラップを完了状態として再同調し、LdVecビット位置がクリアされる。結合したCAMのPaHashを再使用すると、ロードがマッチしない場合には、全てのマッチングエントリのLdVecに対応するビット位置がクリアされるため、フローしているロードをこのフローで完了して、それ自身をミスマッチから除く必要がない。
若いロードが順序に依らずに完了した場合、より古いロードの何れかが相互作業したかもしれない。ロードが完了すると、順序から外れてデータを観測する可能性がないので、LOQエントリが再利用されてもよい。LDQフラッシュは、若いロードがリタイヤしていない場合、より古いロードを有するLOQエントリをスペキュレイティブに有するロードがより古いコードを削除できないLdVecの全てのLOQエントリにおける対応するビットをクリアするのに使用されるフラッシュされたロードのベクトルを生成する。
LOQは、保護されているパリティではなく、結合CAMを無効にするビットがある。
(発送パイプ)
発送の間、1つのオペレーションに関する全ての統計的情報は、DEにより提供される。これは、オペレーションの種類を含むが、後にEXにより提供されるアドレスは含まない。発送パイプの目的は、ロード/記憶キュー内の提供された情報を捕捉し、エントリが使用されたEXにフィードバックすることにある。これにより、サイクル毎(最大4ロードと4記憶)に発送できるオペレーションを最大6とすることができる。DI1の初期の発送信号は、ゲートとして使用され、次のサイクルの発送を可能とする。次のサイクルで発送したロードの数は、DI1に提供されている。この信号は、包括的にスペキュレイティブなものであり、次のサイクルで実際に発送されるよりも多いロードを示すかもしれないが、少ないロードは示さない。しかし、発送されるスペキュレイティブなロードの数は、利用可能なトークンの数を越えてはならない。このコンテキストでは、次のサイクルで発送されなかったスペキュレイティブなロードに使用されるトークンは、次のサイクルまで再使用できない。例えば、トークンが1つだけ残っている場合、SpecDispLdValは、実際に発送されたロードが無くても、2つの連続するサイクルでは高いものになってはいけない。
図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パイプにバイパスされる。
1.集積回路であって、
キャッシュメモリと、
OPコードのロードオペレーションと記憶オペレーションとを容易にするための複数のパイプラインを有する実行ユニットであって、各パイプラインが、前記実行ユニットとキャッシュメモリとの間で、OPコードによって示された命令を実行するように構成されている、実行ユニットと、
1つのサイクルでロードと記憶とを同時に行う前記複数のパイプラインに含まれるアドレス生成パイプライン用の命令のロード及び記憶キューにキューイングすることを要求するように構成された命令フェッチコントローラと、を備える集積回路。
前記実行ユニットとキャッシュメモリとの間で、OPコードで示された命令を処理することと、
1つのサイクルで同時にロード及び記憶を行う前記複数のパイプラインに含まれるアドレス生成パイプラインの命令をロード及び記憶キューにキューイングすることと、を含む方法。
前記ICは、
オペレーションコードのロードオペレーションと記憶オペレーションとを容易にする複数のパイプラインを有する実行ユニットであって、各パイプラインが、前記実行ユニットとキャッシュメモリとの間で、オペレーションコードで示された命令を実行するように構成されている、実行ユニットと、
1つのサイクルでロード及び記憶を同時に行う前記複数のパイプラインに含まれるアドレス生成パイプライン用の命令のロード及び記憶キューにキューイングすることを要求するように構成された命令フェッチコントローラと、を含む、コンピュータ可読記憶媒体。
メモリと、
OPコードのロードオペレーションと記憶オペレーションとを容易にするための複数のパイプラインを含む実行ユニットであって、各OPコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、実行ユニットと、
最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む集積回路。
前記L2TLBは、1024エントリのL2TLBであり、
前記ページテーブルウォーカは、64エントリのページウォークキャッシュ(PWC)を含む、実施形態27〜33の何れかの集積回路。
最大4つのテーブルウォークを同時にサポートするパイプラインページテーブルウォーカを提供することを含む方法。
前記L2TLBは、1024エントリのL2TLBであり、
前記ページテーブルウォーカは、64エントリのページウォーカキャッシュ(PWC)を含む、実施形態35〜38の何れかの方法。
前記ICは、
OPコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインを含む実行ユニットであって、各OPコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、実行ユニットと、
最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含むコンピュータ可読記憶媒体。
前記L2TLBは、1024エントリのL2TLBであり、
前記ページテーブルウォーカは、64エントリのページウォーカキャッシュ(PWC)を含む、実施形態40〜46の何れかのコンピュータ可読記憶媒体。
Claims (21)
- メモリと、
順序付けされておらず(OOO)割り当てされていない、順序付けされていないロードキュー(LDQ)であって、サイクル毎に2つピックを選択するLDQを有し、前記メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
前記LDQは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順序キュー(LOQ)を含む、
集積回路。 - 前記LDQは、前記LOQエントリを生成するためのロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を備える、請求項1の集積回路。
- 前記LOQは、最大16のエントリを含む、請求項1の集積回路。
- 前記LTLI CAMは、同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築する、請求項2の集積回路。
- 前記LTLI CAMは、同じアドレスについて有効なロードのみを検討する、請求項2の集積回路。
- 前記LTLI CAMは、キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにする、請求項2の集積回路。
- 前記LOQは、順序を維持するために、必要に応じてロードを再同期する、請求項2の集積回路。
- 前記LOQは、トラックされたアドレスがマッチした場合にエントリを結合させることによって、キューサイズを小さくする、請求項2の集積回路。
- 前記実行ユニットは、
オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項1の集積回路。 - 前記実行ユニットは、
オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ(TLB)において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
最大4つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項1の集積回路。 - 順序付けされておらず(OOO)割り当てされていないロードキュー(LDQ)を有するパイプライン化された実行ユニットに対して、順序付けされていないロードをキューイングすることと、
サイクル毎に最大2つのピックを選択して、メモリからロードをキューイングすることと、
ロード順序キュー(LOQ)を用いて、順序に依らずに完了したロードをトラッキングして、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにすることと、を含む、
方法。 - ロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を用いて、前記LOQエントリを生成することを含む、請求項11の方法。
- 前記LOQは、最大16のエントリを含む、請求項11の方法。
- 同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築することを含む、請求項12の方法。
- 同じアドレスについて有効なロードのみを検討することを含む、請求項12の方法。
- キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにすることを含む、請求項12の方法。
- 順序を維持するために、必要に応じてLOQのロードを再同期することを含む、請求項12の方法。
- トラックされたアドレスがマッチした場合にエントリを結合させて、前記LOQのキューサイズを小さくすることを含む、請求項12の方法。
- 集積回路(IC)の設計又は製造を容易にする1つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読記憶媒体であって、
前記ICは、
順番付けされておらず(OOO)割り当てされていない、順序付けされていないロードキュー(LDQ)であって、サイクル毎に2つピックを選択するLDQを有し、メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
前記LDQは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順番キュー(LOQ)を含む、コンピュータ可読記憶媒体。 - 前記LDQは、LOQエントリを生成するためのロード間インターロック(LTLI)コンテンツアドレス可能メモリ(CAM)を備える、請求項19のコンピュータ可読記憶媒体。
- 前記命令は、装置の製造に使用されるハードウェア記述言語(HDL)命令である、請求項19のコンピュータ可読記憶媒体。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6690813B2 (ja) | 2014-07-25 | 2020-04-28 | インテル・コーポレーション | 変換ルックアサイドバッファを用いた命令セットアグノスティックランタイムアーキテクチャの実施 |
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 |
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 |
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 |
WO2016092347A1 (en) * | 2014-12-13 | 2016-06-16 | Via Alliance Semiconductor Co., Ltd. | Distributed hang recovery logic |
US10067871B2 (en) | 2014-12-13 | 2018-09-04 | Via Alliance Semiconductor Co., Ltd | Logic analyzer for detecting hangs |
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 |
CN109923528B (zh) * | 2017-09-25 | 2021-04-09 | 华为技术有限公司 | 一种数据访问的方法和装置 |
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)
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 |
CN101853150B (zh) * | 2009-05-29 | 2013-05-22 | 威盛电子股份有限公司 | 非循序执行的微处理器及其操作方法 |
CN101866280B (zh) * | 2009-05-29 | 2014-10-29 | 威盛电子股份有限公司 | 微处理器及其执行方法 |
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 |
-
2014
- 2014-10-24 EP EP14855056.9A patent/EP3060982A4/en not_active Withdrawn
- 2014-10-24 KR KR1020167013470A patent/KR20160074647A/ko not_active Application Discontinuation
- 2014-10-24 US US14/523,730 patent/US20150121046A1/en not_active Abandoned
- 2014-10-24 WO PCT/US2014/062267 patent/WO2015061744A1/en active Application Filing
- 2014-10-24 JP JP2016525993A patent/JP2016534431A/ja active Pending
- 2014-10-24 CN CN201480062841.3A patent/CN105765525A/zh active Pending
Cited By (5)
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 |
---|---|
EP3060982A4 (en) | 2017-06-28 |
KR20160074647A (ko) | 2016-06-28 |
EP3060982A1 (en) | 2016-08-31 |
US20150121046A1 (en) | 2015-04-30 |
CN105765525A (zh) | 2016-07-13 |
WO2015061744A1 (en) | 2015-04-30 |
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 | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
CN107278298B (zh) | 缓存器维护指令 | |
US20090119488A1 (en) | Prefetch Unit | |
JP2018504694A5 (ja) | ||
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) | 管理快取記憶體中的重用資訊 | |
KR20200011438A (ko) | 자격과 관련된 허가들을 해석하는 장치 및 방법 | |
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) | 演算処理装置、及び、演算処理装置の制御方法 |
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 |