JP6718454B2 - 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと - Google Patents

選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと Download PDF

Info

Publication number
JP6718454B2
JP6718454B2 JP2017533975A JP2017533975A JP6718454B2 JP 6718454 B2 JP6718454 B2 JP 6718454B2 JP 2017533975 A JP2017533975 A JP 2017533975A JP 2017533975 A JP2017533975 A JP 2017533975A JP 6718454 B2 JP6718454 B2 JP 6718454B2
Authority
JP
Japan
Prior art keywords
address
translation
cache
address translation
instruction
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
JP2017533975A
Other languages
English (en)
Other versions
JP2018506776A (ja
JP2018506776A5 (ja
Inventor
ヴェンカタスブラマニアン ラマクリシュナン
ヴェンカタスブラマニアン ラマクリシュナン
オルオロード オルライ
オルオロード オルライ
プラサッド ヘレマガルール ラマプラサッド ビピン
プラサッド ヘレマガルール ラマプラサッド ビピン
Original Assignee
日本テキサス・インスツルメンツ合同会社
テキサス インスツルメンツ インコーポレイテッド
テキサス インスツルメンツ インコーポレイテッド
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 日本テキサス・インスツルメンツ合同会社, テキサス インスツルメンツ インコーポレイテッド, テキサス インスツルメンツ インコーポレイテッド filed Critical 日本テキサス・インスツルメンツ合同会社
Publication of JP2018506776A publication Critical patent/JP2018506776A/ja
Publication of JP2018506776A5 publication Critical patent/JP2018506776A5/ja
Application granted granted Critical
Publication of JP6718454B2 publication Critical patent/JP6718454B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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
    • G06F2212/1021Hit rate 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/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • 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/681Multi-level TLB, e.g. microTLB and main TLB

Landscapes

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

Description

本開示は、概してデジタルデータ処理に関し、より具体的には、アドレス変換に関する。
仮想メモリをサポートするプロセッサでは、CPUによって提供される仮想アドレスは物理アドレスに変換されなければならない。これは、典型的に、メモリ管理ユニット(MMU)によって実現される。MMUは、典型的に、MMUにストアされるアドレス変換エントリのキャッシュとしてμTLB(マイクロ変換ルックアサイドバッファ)を用いる。このようなアドレス変換エントリは、典型的に、メモリページに基づいて編成される。CPUによって要求されるどの仮想アドレスも、メモリアクセスのためμTLB/MMUによって物理アドレスに変換される必要がある。これは、典型的に、ページ境界で実施される。一連のプログラムフェッチが境界をクロスし次のページにフェッチする場合、次のアドレス変換エントリが、仮想アドレス−物理アドレス変換のために必要とされる。この次のアドレス変換エントリがμTLBにない場合、MMUから要求されなければならない。この変換データフェッチは、MMUにおけるページ変換及びページテーブルウォークレイテンシに従って、数十から数百サイクルを要し得る。
例示実施形態において、このようなプログラムフェッチに対するページミス変換レイテンシが隠される。説明される例では、CPUによってアクセスが要求されるときはいつも、L1Iキャッシュコントローラが、仮想アドレスとフェッチパケットカウントとの加算がページ境界をクロスするか否かのアプリオリルックアップを行う。アクセスがページ境界をクロスする場合、L1Iキャッシュコントローラは、第1のページとともに第2のページ変換を要求する。これにより、L1Iキャッシュコントローラが第2のページ要求を処理し始めるのを待たずに、μTLBへの要求がパイプライン化される。これは、第2のページ変換要求の決定性プリフェッチになる。第2のページについての変換情報が、L1Iキャッシュコントローラに局所的にストアされ、アクセスがページ境界をクロスするときに用いられる。
説明される例では、デジタル信号プロセッサ(DSP)、プログラムキャッシュメモリコントローラ(L1Iコントローラ)、及びCPUからL1Iキャッシュへのインターフェースが、仮想アドレス及びその仮想アドレスからのフェッチパケット数を提供する。アクセスされるこのフェッチパケット数は、概して、分岐予測アーキテクチャに基づく。L1Iキャッシュコントローラは、仮想アドレスとフェッチパケットカウントの和をアンロールして対応するフェッチパケット要求にし、これらのフェッチパケットをL1Iキャッシュにプリフェッチする。典型的な従来のDSP L1Iキャッシュコントローラでは、L1Iキャッシュは、仮想的にインデックスされ、仮想的にタグ付けされたキャッシュである。L2キャッシュに出るいかなるL1Iキャッシュミス要求(仮想アドレス)も、物理アドレスに変換され、L2キャッシュに対して要求されなければならない。
L1Iキャッシュコントローラは、また、最後に推定されるフェッチが変換テーブルにおける第2のページを指すかを判定する。第2のページを指す場合、L1Iキャッシュコントローラは、次のページ変換テーブルエントリをそれが必要とされる前に要求する。典型的に、この新しいページ変換テーブルエントリは、プログラムフェッチアドレスが次のページにクロスするときに、終了しているか、又は進行中である。これにより、第2のページにおける命令をフェッチするためのレイテンシが低減される。
一実施形態に従ったシングルコアスカラプロセッサを図示する。
別の実施形態に従ったデュアルコアスカラプロセッサを図示する。
さらなる実施形態に従ったシングルコアベクトルプロセッサを図示する。
さらなる実施形態に従ったデュアルコアベクトルプロセッサを図示する。
CPUの一実施形態の構造を図示する。
グローバルスカラレジスタファイルを図示する。
グローバルベクトルレジスタファイルを図示する。
乗算及び相関機能ユニットによって共有されるローカルベクトルレジスタファイルを図示する。
ロード/ストアユニットのローカルレジスタファイルを図示する。
プレディケートレジスタファイルを図示する。
好ましい実施形態に従った中央処理装置のパイプラインフェーズを図示する。
単一フェッチパケットの16個の命令を図示する。
命令の命令コーディングの例を図示する。
例示実施形態に従ったSIMD演算に対するキャリー制御を図示する。
主要部分を図示する。
仮想アドレスから物理アドレスへの変換を図示する。
例示実施形態に従ったアドレスアンロールユニットの実施形態を図示する。
例示実施形態に従ったページ境界クロスユニットの実施形態を図示する。
演算を概略的に図示する。
図1は、一実施形態に従ったシングルコアスカラプロセッサを図示する。シングルコアプロセッサ100は、個別のレベル1命令キャッシュ(L1I)111及びレベル1データキャッシュ(L1D)112に結合されるスカラ中央処理装置(CPU)110を含む。中央処理装置コア110は、当技術分野で周知のように構築され得、典型的に、レジスタファイル、整数算術論理ユニット、整数乗算器、及びプログラムフロー制御ユニットを含み得る。シングルコアプロセッサ100は、命令及びデータの両方を保持するレベル2組合せ命令/データキャッシュ(L2)113を含む。好ましい実施形態において、スカラ中央処理装置(CPU)110、レベル1命令キャッシュ(L1I)111、レベル1データキャッシュ(L1D)112、及びレベル2組合せ命令/データキャッシュ(L2)113は、単一集積回路に形成される。
好ましい実施形態において、この単一集積回路は更に、電力制御回路121、エミュレーション/トレース回路122、試験容易化設計(DST)プログラマブル内蔵自己試験(PBIST)回路123、及びクロッキング回路124などの補助回路を含む。メモリCPU110の外部にあり、おそらくは単一集積回路100に集積されるのは、コントローラ131である。
CPU110は、定義されるデータに対してデータ処理演算を実施するため、プログラム制御下で動作する。CPU110を制御するプログラムは、復号及び実行の前にフェッチされなければならない命令で構成される。シングルコアプロセッサ100は複数のキャッシュメモリを含む。図1は、一対の第1のレベルのキャッシュを図示する。レベル1命令キャッシュ(L1I)111は、CPU110によって用いられる命令をストアする。CPU110は、まず、レベル1命令キャッシュ111からの任意の命令へのアクセスを試みる。レベル1データキャッシュ(L1D)112は、CPU110によって用いられるデータをストアする。CPU110は、まず、レベル1データキャッシュ112からの任意の要求されるデータへのアクセスを試みる。これら2つのレベル1キャッシュ(L1I 111及びL1D 112)は、レベル2統合キャッシュ(L2)113によってバックアップされる。レベル1命令キャッシュ111への又はレベル1データキャッシュ112へのキャッシュミスの事象において、要求された命令又はデータは、レベル2統合キャッシュ113から捜される。要求された命令又はデータがレベル2統合キャッシュ113にストアされている場合、この命令又はデータは、中央処理装置コア110への供給のため、要求元のレベル1キャッシュに供給される。当技術分野で既知のように、要求された命令又はデータは、その使用を速めるために要求元キャッシュ及びCPU110に同時に供給され得る。
レベル2統合キャッシュ113はさらに、より高レベルのメモリシステムにメモリコントローラ131を介して結合される。メモリコントローラ131は、外部メモリ(図1には示さず)にアクセスすることによって、レベル2統合キャッシュ113におけるキャッシュミスを扱う。メモリコントローラ131は、キャッシュ可能性の決定、エラー検出及び補正、アドレス変換など、すべてのメモリ中枢機能を扱う。シングルコアプロセッサ100は、マルチプロセッサシステムの一部とし得る。この場合、メモリコントローラ131は、プロセッサ間のデータ転送を扱い、プロセッサ間のキャッシュコヒーレンスを維持する。
図2は、別の実施形態に従ったデュアルコアプロセッサを図示する。デュアルコアプロセッサ200は、個別のレベル1命令キャッシュ(L1I)211及びレベル1データキャッシュ(L1D)212に結合される第1の中央処理装置(CPU)210、並びに、個別のレベル1命令キャッシュ(L1I)221及びレベル1データキャッシュ(L1D)222に結合される第2のCPU220を含む。中央処理装置210及び220は、好ましくは、図1において図示するCPU110に類似して構築される。デュアルコアプロセッサ200は、4つのすべてのレベル1キャッシュ(L1I 211、L1D 212、L1I 221、及びL1D 222)をサポートする、単一の共有レベル2組合せ命令/データキャッシュ(L2)231を含む。好ましい実施形態において、CPU210、レベル1命令キャッシュ(L1I)211、レベル1データキャッシュ(L1D)212、CPU220、レベル1命令キャッシュ(L1I)221、レベル1データキャッシュ(L1D)222、及びレベル2組合せ命令/データキャッシュ(L2)231は、単一集積回路に形成される。この単一集積回路は、好ましくは、電力制御回路245、エミュレーション/トレース回路116、試験容易化設計(DST)プログラマブル内蔵自己試験(PBIST)回路117、及びクロッキング回路118などの補助回路も含む。この単一集積回路は、メモリコントローラ251も含み得る。
図3及び図4は、図1及び図2に各々示したものに類似するシングルコア及びデュアルコアプロセッサを図示する。図3及び図4は、ベクトル中央処理装置を示す点で図1及び図2と異なる。下記でさらに説明するように、シングルコアベクトルプロセッサ300はベクトルCPU310を含む。デュアルコアベクトルプロセッサ400は、2つのベクトルCPU410及び420を含む。ベクトルCPU310、410、及び420は、対応するスカラCPU110、210、及び220に比して、広いデータパス動作ユニット及び広いデータレジスタを含む。
ベクトルCPU310、410、及び420はさらに、ストリーミングエンジン313(図3)並びにストリーミングエンジン413及び423(図4)を含む点で、対応するCPU110、210、及び220と異なる。ストリーミングエンジン313、413、及び423は類似している。ストリーミングエンジン313は、レベル2統合キャッシュ313(L2)からベクトルCPU310にデータを転送する。ストリーミングエンジン413は、レベル2統合キャッシュ431からベクトルCPU410にデータを転送する。ストリーミングエンジン423は、レベル2統合キャッシュ431からベクトルCPU420にデータを転送する。好ましい実施形態に従って、各ストリーミングエンジン313、413、及び423は最大2つのデータストリームを管理する。
各ストリーミングエンジン313、413、及び423は、或る制限された状況においてデータを転送する。ストリームは、特定のタイプの要素のシーケンスで構成される。ストリームに対して動作するプログラムは、データを順次読み出し、各要素に対し順に動作する。どのストリームも下記の基本的特性を有する。ストリームデータは、時間的に明確な始まり及び終わりを有する。ストリームデータは、ストリームを通じて固定の要素サイズ及びタイプを有する。ストリームデータは、要素の固定シーケンスを有する。そのため、プログラムはストリーム内でランダムに捜すことができない。ストリームデータは、アクティブである間、読み出し専用である。プログラムは、ストリームを読み出しながら同時にストリームに書き込むことはできない。ストリームが開かれると、ストリーミングエンジンは、アドレスを計算し、定義されたデータタイプをレベル2統合キャッシュからフェッチし、ゼロ拡張、符号拡張、マトリックス移項等のデータ要素ソーティング/スワッピングなど、データタイプ操作を実施し、データをCPU内のプログラムされた実行ユニットに直接的に搬送する。このように、ストリーミングエンジンは、「良好に機能する」データに対するリアルタイムのデジタルフィルタリング演算に有用である。ストリーミングエンジンは、これらのメモリフェッチタスクを対応するCPUから解放し、その他の処理機能を可能にする。
ストリーミングエンジンは、下記の利点を提供する。ストリーミングエンジンは、多次元メモリアクセスを可能にする。ストリーミングエンジンは、機能ユニットに利用可能な帯域幅を広げる。ストリーミングエンジンは、キャッシュミスによるストール数を最小限にする。これは、ストリームバッファがL1Dキャッシュ及びL2キャッシュをバイパスし得るからである。ストリーミングエンジンは、維持すべきループにおいて必要とされるスカラ演算数を減少させる。ストリーミングエンジンは、アドレスポインタを管理する。ストリーミングエンジンは、アドレス生成に対処して、自動的にアドレス生成命令スロット及び.Dユニットを他の計算に解放する。
図5は、CPUの一実施形態の構造を示す。特に記載がない限り、この説明はスカラCPU及びベクトルCPUのいずれにもあてはまる。CPUは、乗算ユニット511(.M)、相関ユニット512(.C)、算術ユニット513(.L)、算術ユニット514(.S)、ロード/ストアユニット515(.D)、分岐ユニット516(.B)、及び予測ユニット(.P)の、複数の実行ユニットを含む。これらの実行ユニットの動作及び関係を以下で詳述する。好ましい実施形態に従って、図5のCPUは、命令サイクル毎に16個の命令のプログラムフェッチパケットをフェッチする超長命令語(VLIW)CPUである。下記で説明するように、これらの命令は、各命令サイクルの間、複数の実行ユニットによって並列に実行され得る。
乗算ユニット511は主として乗算を実施する。乗算ユニット511は、最大2つのダブルベクトルオペランドを受け、最大1つのダブルベクトル結果を生成する。乗算ユニット511は、下記の演算を実施するように構成可能な命令である。即ち、8ビットから64ビットまでの乗算演算の精度での、様々な整数乗算演算、様々な正規及び複素ドット積演算、及び様々な浮動小数点乗算演算、ビット単位論理演算、移動、並びに加算及び減算である。図5において図示するように、乗算ユニット511は、4つの同時16ビット×16ビット乗算のためのハードウェアを含む。乗算ユニット511は、以下に述べる方式で、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、並びに共有.M及び.Cローカルレジスタファイル523にアクセスし得る。転送マルチプレクサ530が、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及び乗算ユニット511の間のデータ転送を調停する。
相関ユニット512(.C)は、最大2つのダブルベクトルオペランドを受け、最大1つのダブルベクトル結果を生成する。相関ユニット512はこれらの主要演算をサポートする。WCDMAの「レーキ」及び「サーチ」命令を裏付けるものとして、相関ユニット512は、クロックサイクル当たり最大512個の2ビットPN×8ビットI/Q複素乗算を実施する。相関ユニット512は、8ビット及び16ビットの差分絶対値和(SAD)計算を実施して、クロックサイクル当たり最大512個のSADを実施する。相関ユニット512は、水平加算及び水平最小/最大命令を実施する。相関ユニット512は、ベクトル置換命令を実施する。相関ユニット512は、8個の256ビット幅制御レジスタを含む。これらの制御レジスタは、或る相関ユニット命令の演算を制御するために用いられる。相関ユニット512は、以下に述べる方式で、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、並びに共有.M及び.Cローカルレジスタファイル523にアクセスし得る。転送マルチプレクサ530は、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及び相関ユニット512の間のデータ転送を調停する。
CPU500は、2つの算術ユニット、算術ユニット513(.L)及び算術ユニット514(.S)、を含む。算術ユニット513及び算術ユニット514は各々、最大2つのベクトルオペランドを受け、最大1つのベクトル結果を生成する。これらの計算ユニットはこれらの主要演算をサポートする。算術ユニット513及び算術ユニット514は、様々な単一命令複数データ(SIMD)固定小数点算術演算を8ビットから16ビットまでの精度で実施する。算術ユニット513及び算術ユニット514は、様々なベクトル比較及び最小/最大命令を実施し、様々なベクトル比較及び最小/最大命令は、結果をプレディケートレジスタファイル526(下記でさらに説明する)に直接書き込む。これらの比較には、A=B、A>B、A≧B、A<B、及びA≦Bが含まれる。比較が肯定である場合、プレディケートレジスタ内の対応するビット位置において1ビットがストアされる。比較が否定である場合、プレディケートレジスタ内の対応するビット位置において0がストアされる。ベクトル比較命令はバイト(8ビット)データを想定し、そのため、32個のシングルビット結果を生成する。算術ユニット513及び算術ユニット514は、以下で説明するように、指定されたプレディケートレジスタを用いて様々なベクトル演算を実施する。算術ユニット513及び算術ユニット514は、様々なSIMD浮動小数点算術演算を、半精度(16ビット)、単精度(32ビット)、又は倍精度(64ビット)で実施する。算術ユニット513は及び算術ユニット514は、様々なアルゴリズム及び機能のスピードを上げるために特殊化された命令を実施する。算術ユニット513は及び算術ユニット514は、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、共有.L及び.Sローカルレジスタファイル524、及びプレディケートレジスタファイル526にアクセスし得る。転送マルチプレクサ530は、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、並びに算術ユニット513及び514間のデータ転送を調停する。
ロード/ストアユニット515(.D)は主としてアドレス計算に用いられる。ロード/ストアユニット515は、64ビットまでのスカラオペランドを受けるように拡張され、64ビットまでのスカラ結果を生成する。ロード/ストアユニット515は、他のユニットに対する作業負荷を低減するために、ロード及びストアデータに対して、スワッピング、パック、及びアンパックなどのデータ操作を実施するため付加的なハードウェアを含む。ロード/ストアユニット515は、クロックサイクル毎に1つのロード又はストア要求を44ビット物理アドレスとともにレベル1データキャッシュ(L1D)に送り得る。ロード又はストアデータ幅は、32ビット、64ビット、256ビット、又は512ビットとし得る。ロード/ストアユニット515は、これらの主要演算、即ち、64ビットSIMD算術演算、64ビットビット単位論理演算、並びに、スカラ及びベクトルのロード及びストアデータ操作、をサポートする。ロード/ストアユニット515は、好ましくは、48ビット仮想アドレスから44ビット物理アドレスへのアドレス変換を実施するためにマイクロTLB(テーブルルックアサイドバッファ)ブロックを含む。ロード/ストアユニット515は、以下に述べる方式で、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、及び.Dローカルレジスタファイル525にアクセスし得る。転送マルチプレクサ530は、グローバルスカラレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及びロード/ストアユニット515間のデータ転送を調停する。
分岐ユニット516(.B)は、分岐アドレスを計算し、分岐予測を実施し、この予測の結果に応じて制御フローを変更する。
プレディケートユニット517(.P)は、ベクトルプレディケートレジスタに対して基本的演算を実施する小型制御ユニットである。プレディケートユニット517は、ベクトルプレディケートレジスタ526への直接的アクセスを有する。プレディケートユニット517は、プレディケートレジスタに対して、AND、ANDN、OR、XOR、NOR、BITR、NEG、SET、BITCNT(ビットカウント)、RMBD(右端ビット検出(rightmost bit detect))、BIT Desimate及びExpandなど、異なるビット演算を実施する。
図6は、グローバルスカラレジスタファイル521を図示する。16個の独立した64ビット幅スカラレジスタがある。グローバルスカラレジスタファイル521の各レジスタは、32ビットスカラデータ(レジスタA0〜A15 601として指定される)又は64ビットのスカラデータ(レジスタEA0〜EA15 611として指定される)として読み出され得る。ただし、書き込みは常に64ビットであり、必要な場合、64ビットまで埋めるためにゼロ拡張される。すべての機能ユニットのすべてのスカラ命令が、グローバルスカラレジスタファイル521に対して読出し又は書込みし得る。命令タイプによりデータサイズが決まる。グローバルスカラレジスタファイル521は、8ビットから64ビットまでのサイズのデータタイプをサポートする。ベクトル命令は64ビットグローバルスカラレジスタ521にも書込みし得るが、ベクトルの上位192ビットデータは破棄される。ベクトル命令はまた、グローバルスカラレジスタファイル521から64ビットデータを読み出しし得る。この場合、オペランドは、入力ベクトルを形成するため、上位192ビットにおいてゼロ拡張される。
図7は、グローバルベクトルレジスタファイル522を図示する。16個の独立した256ビット幅ベクトルレジスタがある。グローバルベクトルレジスタファイル522の各レジスタは、32ビットスカラデータ(レジスタX0〜X15 701として指定される)、64ビットのスカラデータ(レジスタEX0〜EX15 711として指定される)、256ビットベクトルデータ(レジスタVX0〜VX15 721として指定される)、又は512ビットダブルベクトルデータ(DVX0〜DVX15として指定される、図示せず)として読み出され得る。この実施形態において、乗算ユニット511及び相関ユニット512のみがダブルベクトル命令を実行し得る。すべての機能ユニットのすべてのベクトル命令が、グローバルベクトルレジスタファイル522に対して読出し又は書込みし得る。任意の機能ユニットの任意のスカラ命令も、読出し又は書込みのために、グローバルベクトルレジスタファイル522の下位32又は64ビットにアクセスし得る。命令タイプによりデータサイズが決まる。
図8は、ローカルベクトルレジスタファイル523を図示する。16個の独立した256ビット幅ベクトルレジスタがある。ローカルベクトルレジスタファイル523の各レジスタは、32ビットスカラデータ(レジスタM0〜M15 701として指定される)、64ビットのスカラデータ(レジスタEM0〜EM15 711として指定される)、256ビットベクトルデータ(レジスタVM0〜VM15 721として指定される)、又は512ビットダブルベクトルデータ(DVM0〜DVM15として指定される、図示せず)として読み出され得る。この実施形態において、乗算ユニット511及び相関ユニット512のみがダブルベクトル命令を実行し得る。すべての機能ユニットのすべてのベクトル命令が、ローカルベクトルレジスタファイル523に書込みし得る。乗算ユニット511及び相関ユニット512の命令のみが、ローカルベクトルレジスタファイル523から読出しし得る。命令タイプによりデータサイズが決まる。
乗算ユニット511は、ダブルベクトル(512ビットデータ)に対して動作し得る。乗算ユニット511は、グローバルベクトルレジスタファイル522及びローカルベクトルレジスタファイル523からダブルベクトルデータを読み出し得、グローバルスカラレジスタファイル521及びローカルベクトルレジスタファイル523にダブルベクトルデータを書き込みし得る。レジスタ指定DVXx及びDVMxが、グローバルスカラレジスタファイル521及びローカルベクトルレジスタファイル523に下記のようにマッピングされる。
各ダブルベクトル指定は、グローバルベクトルレジスタ522又はローカルベクトルレジスタ523における隣接ベクトルレジスタの対応する一対にマッピングする。指定DVX0〜DVX7は、グローバルベクトルレジスタ522にマッピングする。指定DVM0〜DVM7はローカルベクトルレジスタ523にマッピングする。
ローカルベクトルレジスタファイル524はローカルベクトルレジスタファイル523に類似している。16個の独立した256ビット幅ベクトルレジスタがある。ローカルベクトルレジスタファイル524の各レジスタは、32ビットスカラデータ(レジスタL0〜L15 701として指定される)、64ビットのスカラデータ(レジスタEL0〜EL15 711として指定される)、又は256ビットベクトルデータ(レジスタVL0〜VL15 721として指定される)として読み出され得る。すべての機能ユニットのすべてのベクトル命令が、ローカルベクトルレジスタファイル524に書込みし得る。算術ユニット513及び算術ユニット514の命令のみが、ローカルベクトルレジスタファイル524から読出しし得る。
図9はローカルレジスタファイル525を図示する。16個の独立した64ビット幅レジスタがある。ローカルレジスタファイル525の各レジスタは、32ビットスカラデータ(レジスタD0〜D15 701として指定される)又は64ビットのスカラデータ(レジスタED0〜ED15 711として指定される)として読み出され得る。すべての機能ユニットのすべてのスカラ及びベクトル命令が、ローカルレジスタファイル525に書込みし得る。ロード/ストアユニット515の命令のみが、ローカルレジスタファイル525から読出しし得る。任意のベクトル命令も64ビットデータをローカルレジスタファイル525に書き込みし得るが、結果ベクトルの上位192ビットデータは廃棄される。また、任意のベクトル命令が、64ビットデータを64ビットローカルレジスタファイル525のレジスタから読み出しし得る。戻りデータは、入力ベクトルを形成するため、上位192ビットにおいてゼロ拡張される。ローカルレジスタファイル525のレジスタは、ストアデータとして又はロード/ストアユニット515の64ビット算術及び論理命令のためのソースとしてではなく、ロード/ストア命令におけるアドレスとしてのみ用いられ得る。
図10はプレディケートレジスタファイル517を図示する。プレディケートレジスタファイル517には16個の32ビットレジスタがある。プレディケートレジスタファイル517は、いずれかの算術によって実行されるベクトル比較演算からの結果を含み、ベクトル選択命令及びベクトルプレディケートストア命令によって用いられる。また、特殊命令の小サブセットが、プレディケートレジスタから直接的に読出しし得、演算を実施し得、プレディケートレジスタに直接的に書込み戻しし得る。グローバルレジスタファイル(521及び522)とプレディケートレジスタファイル517との間で値を転送し得る命令もある。プレディケートレジスタファイル517とローカルレジスタファイル(523、524、及び525)との間の転送はサポートされない。プレディケートレジスタ(P0〜P15として指定される)の各ビットが、ベクトルデータのバイトを制御する。ベクトルは256ビットなので、プレディケートレジスタの幅は256/8=32ビットに等しい。プレディケートレジスタファイルは、ベクトル比較の結果をストアするため、ベクトル比較算によって書き込まれ得る。
CPU110、210、220、310、410、又は420などのCPUが、命令パイプライン上で動作する。この命令パイプラインは、サイクル毎に7個の実行ユニット(乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515、分岐ユニット516、及びプレディケートユニット517)に命令を提供するように、最大9個の並列32ビットスロットにディスパッチ(dispatch)し得る。命令は、以下でさらに説明する固定長のパックされるフェッチ命令である。すべての命令はフェッチ及び復号に対して同じ数のパイプラインフェーズを必要とするが、可変数の実行フェーズを必要とする。
図11は、下記のパイプラインフェーズを図示する。即ち、プログラムフェッチフェーズ1110、ディスパッチ及び復号フェーズ1120、並びに、実行フェーズ1130である。プログラムフェッチフェーズ1110は、すべての命令に対して3つの段階を含む。ディスパッチ及び復号フェーズは、すべての命令に対して3つの段階を含む。実行フェーズ1130は、命令に応じて1〜4個の段階を含む。
フェッチフェーズ1110は、プログラムアドレス生成段階1111(PG)、プログラムアクセス段階1112(PA)、及びプログラム受信段階1113(PR)を含む。プログラムアドレス生成段階1111(PG)の間、CPUにおいてプログラムアドレスが生成され、読出し要求がレベル1命令キャッシュL1Iのためのメモリコントローラに送られる。プログラムアクセス段階1112(PA)の間、レベル1命令キャッシュL1Iは、この要求を処理し、そのメモリ内のデータにアクセスし、フェッチパケットをCPU境界に送る。プログラム受信段階1113(PR)の間、CPUはこのフェッチパケットを登録する。
命令は、常に、一度に、フェッチされる16個のワードである。図12はこのフェッチパケットを図示する。図12は、単一フェッチパケットの16個の命令1201〜1216を図示する。フェッチパケットは、512ビット(16ワード)境界で整列される。個々の命令の実行は、各命令におけるpビットによって部分的に制御される。このpビットは、好ましくは、命令のビット0である。このpビットにより、この命令が別の命令と並列に実行されるかが決まる。このpビットは下位アドレスから上位アドレスにスキャンされる。命令のpビットが1である場合、次の後続の命令はその命令Iと並列に(その命令Iと同じサイクルにおいて)実行される。命令のpビットが0である場合、次の後続の命令はこの命令後のサイクルにおいて実行される。並列に実行するすべての命令が、或る実行パケットを構成する。実行パケットは最大9個の命令を含み得る。実行パケットにおける各命令は、異なる機能ユニットを用いなければならない。実行パケットは、最大9個の32ビット幅スロットを含み得る。スロットは、自蔵命令であり得、又は、直前の命令によって特定される定数フィールドを拡張し得る。スロットは、同じフェッチパケット内の命令に適用するように条件付きコードとして用いられ得る。フェッチパケットは、最大2つの定数拡張スロット及び1つの条件コード拡張スロットを含み得る。
最大11個の別個の命令スロットがあるが、スケジューリング制約により並列スロットの最大数は9個に制限される。これら最大9個のスロットは下記のように共有される。
即ち、乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515、プレディケートユニット517と共有される分岐ユニット516、第1の定数拡張、第2の定数拡張、及び、条件コード拡張と共有されるユニットなし命令である。実行パケットにおける最後の命令は、0に等しいpビットを有する。
CPU及びレベル1命令キャッシュL1Iパイプラインは、互いからデカップリングされる。レベル1命令キャッシュL1Iから戻るフェッチパケットは、レベル1命令キャッシュL1Iにおいてヒットがあるか否かなどの外部状況に応じて、異なる数のクロックサイクルを取り得る。従って、プログラムアクセス段階1112(PA)は、他の段階と同様、1サイクルクロックの代わりにいくつかのクロックサイクルを取り得る。
ディスパッチ/復号フェーズ1120は、適切な実行ユニットへの命令ディスパッチ段階1121(DS)、命令事前復号段階(D1)、及び、命令復号・オペランド読出し段階1222(D2)を含む。適切な実行ユニットへの命令ディスパッチ段階1121(DS)の間、フェッチパケットは、実行パケットに分割され、適切な機能ユニットに割り当てられる。命令事前復号段階1122(D1)の間、機能ユニットにおける命令の実行のため、送出元レジスタ、宛先レジスタ、及び関連経路が復号される。命令復号の間、オペランド読出し段階1222(D2)のより詳細なユニットの復号が、レジスタファイルからのオペランド読出しとともに成される。
実行フェーズ1130は、実行段階1131〜1135(E1〜E5)を含む。異なるタイプの命令が、それらの実行を完了するために、異なる数のこれらの段階を必要とする。パイプラインのこれらの段階は、CPUサイクル境界でのデバイス状態の理解に重要な役割を果たす。
実行1段階1131(E1)の間、命令の状態が評価され、それに対してオペランドが動作される。図11において図示するように、実行1段階1131は、ストリームバッファ1141と、1142として概略的に示すレジスタファイルの1つとからオペランドを受け取り得る。ロード及びストア命令の場合、アドレス生成が実施され、アドレス改変がレジスタファイルに書き込まれる。分岐命令の場合、PGフェーズにおける分岐フェッチパケットが影響を受ける。図11において図示するように、ロード及びストア命令は、ここではメモリ1151として概略的に示すメモリにアクセスする。単一サイクル命令の場合、結果が宛先レジスタファイルに書き込まれる。これは、命令についての任意の状態が真と評価されると仮定している。或る状態が偽と評価される場合、命令は、いかなる結果も書き込まないか、又は、実行1段階1131後にいかなるパイプライン演算も有さない。
実行2段階1132(E2)の間、ロード命令がアドレスをメモリに送る。ストア命令が、アドレス及びデータをメモリに送る。結果を飽和させる単一サイクル命令が、飽和が生じた場合に、制御状態レジスタ(CSR)においてSATビットを設定する。2サイクル命令の場合、結果が宛先レジスタファイルに書き込まれる。
実行3段階1133(E3)の間、データメモリアクセスが実施される。結果を飽和させる任意の乗算命令が、飽和が生じた場合に、制御状態レジスタ(CSR)においてSATビットを設定する。3サイクル命令の場合、結果が宛先レジスタファイルに書き込まれる。
実行4段階1134(E4)の間、ロード命令がデータをCPU境界に運ぶ。4サイクル命令の場合、結果が宛先レジスタファイルに書き込まれる。
実行5段階1135(E5)の間、ロード命令がデータをレジスタに書き込む。これは、図11においてメモリ1151から実行5段階1135への入力とともに概略的に示されている。
図13は、命令の命令コーディングの例を図示する。各命令は、32ビットで構成され、個々に制御可能な機能ユニット(乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515)の1つの動作を制御する。ビットフィールドを下記のように定義する。cregフィールド及びzビットは、条件付き命令で用いられる任意選択のフィールドである。これらのビットは、プレディケートレジスタ及び条件を識別するために条件付き命令に用いられる。zビット(ビット28)は、プレディケートがプレディケートレジスタにおいてゼロ又は非ゼロに基づいているかを示す。z=1の場合、ゼロと等しいかどうかがテストされる。z=0の場合、非ゼロかどうかがテストされる。無条件命令実行を可能にするために、creg=0及びz=0の場合を常に真と扱う。表2に示すように、cregフィールド及びzフィールドは、命令において符号化される。
zビット列の「z」は、上述のゼロ/非ゼロ比較選択を指し、「x」はドントケア状態であることに留意されたい。このコーディングでは、16個のグローバルスカラレジスタのサブセットをプレディケートレジスタとして単に指定している。この選択は、命令コーディングにおいてビットをとっておくために成されている。無条件命令はこれらの任意選択ビットを有さないことに留意されたい。無条件命令の場合、これらのビット(28〜31)は好ましくは付加的なオペコードビットとして用いられる。ただし、必要とされる場合、実行パケットが、同じ実行パケットにある命令のための4ビットcreg/zフィールドを含む、固有の32ビット条件コード拡張スロットを含み得る。表3は、このような条件コード拡張スロットのコーディングを示す。
このように、条件コード拡張スロットは、同じ実行パケットにおいてcreg/zビットが特定の機能ユニットに割り当てられるのと同じ方式で復号されるビットを指定する。
特殊ベクトルプレディケート命令は、ベクトル演算を制御するために、指定されたプレディケートレジスタを用いる。この実施形態において、すべてのこれらのベクトルプレディケート命令は、バイト(8ビット)データ上で動作する。プレディケートレジスタの各ビットは、データの対応するバイトに対してSIMD演算が実施されるかを制御する。プレディケートユニット517の動作により、2つ以上のベクトル比較に基づく様々な複合ベクトルSIMD演算が可能になる。例えば、2つの比較を用いて範囲決定が成され得る。候補ベクトルが、第1のデータレジスタ内にパックされた範囲の最小値を有する第1のベクトル基準と比較される。候補ベクトルの第2の比較が、第2のデータレジスタ内にパックされた範囲の最大値を有する第2の基準ベクトルとの間で成される。これら2つの得られたプレディケートレジスタの論理的な組合せにより、候補ベクトルの各データ部分が範囲内であるか又は範囲外であるかを判定するベクトル条件付き演算が可能になり得る。
dstフィールドは、対応するレジスタファイルにおけるレジスタを、命令結果の宛先として特定する。
src2フィールドは、対応するレジスタファイルにおけるレジスタを、第2の送出元オペランドとして特定する。
src1/cstフィールドは、命令オペコードフィールド(ビット2〜12、及び無条件命令の場合には付加的にビット28〜31)に応じていくつかの意味を有する。第1の意味は、対応するレジスタファイルのレジスタを第1のオペランドとして特定する。第2の意味は即値定数である。命令タイプに応じて、これは、符号なし整数及び特定されたデータ長まで拡張されるゼロとして扱われるか、又は、符号付き整数及び特定されたデータ長まで拡張される符号として扱われる。
オペコードフィールド(すべての命令に対してビット2〜12、及び無条件命令の場合には付加的にビット28〜31)は、命令のタイプを特定し、適切な命令オプションを指定する。これは、機能ユニット及び実施される演算の指定を含む。
pビット(ビット0)は実行パケットをマーキングする。pビットは、命令が後続の命令と並列に実行されるかどうかを決める。pビットは、下位アドレスから上位アドレスにスキャンされる。現在の命令に対してp=1の場合、次の命令は現在の命令と並列に実行される。現在の命令に対してp=0の場合、次の命令は現在の命令後のサイクルにおいて実行される。並列に実行されるすべての命令が、或る実行パケットを構成する。実行パケットは最大8個の命令を含み得る。実行パケットにおける各命令は、異なる機能ユニットを用いなければならない。
相関ユニット512並びに算術ユニット513及び514は、単一命令複数データ(SIMD)モードで動作することがある。このSIMDモードでは、同じ命令が、2つのオペランドからのパックされたデータに適用される。各オペランドは、所定のスロットに配置される複数のデータ要素を保持する。SIMD演算は、データ境界におけるキャリー制御によって可能になる。このようなキャリー制御により、可変データ幅上での演算が可能となる。
図14はキャリー制御を示す。ANDゲート1401が、オペランド幅算術論理ユニット内のビットN(算術ユニット513及び514の場合は256ビット、相関ユニット512の場合は512ビット)のキャリー出力を受け取る。ANDゲート1401はまた、後にさらに説明するキャリー制御信号を受け取る。ANDゲート1401の出力は、オペランド幅算術論理ユニットのビットN+1のキャリー入力に供給される。ANDゲート1401などのANDゲートは、あり得るデータ境界における各ビット対間に配置される。例えば、8ビットデータの場合、このようなANDゲートは、ビット7とビット8の間、ビット15とビット16の間、ビット23とビット24の間等にある。このようなANDゲートは各々、対応するキャリー制御信号を受け取る。データサイズが最小の場合、各キャリー制御信号は0であり、隣接ビット間のキャリー送信が効果的に遮断される。選択されたデータサイズが両方の算術論理ユニットセクションを必要とする場合、対応するキャリー制御信号は1である。下記の表4は、算術ユニット513及び514で用いられるものなど、8ビット、16ビット、32ビット、64ビット、又は128ビットのセクションに分割され得る256ビット幅オペランドの場合の例示のキャリー制御信号を示す。最上位ビットのキャリー出力の制御は必要とされず、そのため、31個のキャリー制御信号のみが必要とされる。
当技術分野では、2の整数乗(2)であるデータサイズに対して動作することが典型的である。ただし、このキャリー制御技術は2の整数乗に限定されない。当業者であれば、この技術を他のデータサイズおよび他のオペランド幅にどのように適用するかが理解されよう。
例示実施形態は、多くの命令フェッチに対するページミス変換レイテンシを隠す。例示実施形態において、CPUによってアクセスが要求されるときはいつも、L1Iコントローラは、仮想アドレスとフェッチパケットカウントとの加算がページ境界をクロスするかどうかのアプリオリルックアップを行う。アクセスがページ境界をクロスする場合、L1Iキャッシュコントローラは、第2のページ変換エントリを第1のページエントリとともに要求し、そのため、L1Iキャッシュコントローラが第2のページ要求を処理し始めるのを待たずに、μTLBへの要求がパイプライン化される。これは、第2のページ変換要求の決定性プリフェッチになる。第2のページについてのアドレス変換情報が、L1Iキャッシュコントローラに局所的にストアされ、アクセスがページ境界をクロスするときに用いられる。
好ましい実施形態において、μTLBからMMUへの要求がパイプライン化される。μTLB要求がパイプライン化されるか否かで、この方式は、何らかのページミス変換レイテンシを隠す。これにより、プログラムメモリキャッシュ性能が大幅に改善される。
図15は主要部分を図示する。図15では、図示を簡略化するため、図1のスカラシングルコアの例から参照数字を用いる。例示の実施形態が、図1〜図4において図示した例の任意のもので実施され得る。特に、例示の実施形態は、図2及び図4において図示されたデュアルプロセッサの例で実施され得、デュアルプロセッサ間でレベル2統合キャッシュが共有される。中央処理装置(CPU)110が、レベル1命令キャッシュ(L1I)111に結合される。レベル1命令キャッシュL1Iはさらに、図1において図示されたメモリコントローラ131に対応するメモリ管理ユニット(MMU)131に、及び、L2キャッシュ113に接続される。図15は、L1Iキャッシュ111の一部として含まれるマイクロテーブルルックアサイドバッファ(μTLB)1501を図示する。図15は、CPU110とL1Iキャッシュ111との間で渡される信号、即ち、仮想アドレス1511、フェッチパケットカウント1512、及びフェッチパケット1513、を図示する。図15は、L1Iキャッシュ111とMMU131との間の双方向データフローを図示し、このデータフローは、ページ変換エントリ要求1521及びページ変換エントリ1522を含む。図15は、L1Iキャッシュ111とL2キャッシュ113との間で渡される信号、即ち、物理アドレス1531及びデータ1532、を図示する。
仮想アドレスから物理アドレスへの変換は、図16において示されるように動作する。この例では、CPU110は仮想アドレスを用いて動作する。L1Iキャッシュ111も仮想アドレスを用いる。L2キャッシュ113は物理アドレスを用いる。CPU110からL2キャッシュ113へのアクセスは、仮想アドレスから物理アドレスへのアドレス変換を経なければならない。例示を見やすくするために、L1Iキャッシュ111の一部が省略されていることに留意されたい。
命令の別のフェッチパケットが必要とされると、CPU110は、必要とされたフェッチパケットの仮想アドレス1511を供給する。マルチプレクサ1611が、仮想アドレス1511をL1IタグRAM1612に供給する。L1IタグRAM1612は、仮想アドレス1511を、どのアドレスがキャッシュされるか示すタグと比較する。ヒット/ミスユニット1613が、仮想アドレスが、キャッシュされたデータにアクセスするか(ヒット)、又はキャッシュされたデータにアクセスしないか(ミス)を判定する。L1Iキャッシュ111は、その性質上、CPU110によって用いられ得るすべてのプログラム命令を含み得ない。L1Iキャッシュ111は、これらのプログラム命令の限定サブセットをストアする。時間的及び空間的局所性原理に従って、プログラム命令をストアするメモリロケーションへのCPUアクセスは、メモリロケーションと同じメモリロケーション及びその近傍へのアクセスとなりやすい。要求されたフェッチパケットがL1Iキャッシュ111にストアされるとヒット/ミスユニット1613が判定する場合、このフェッチパケットは、L1Iキャッシュ111データメモリ(図示せず)からフェッチパケット1513(図15)を介してCPU110に供給される。
要求されたフェッチパケットがL1Iキャッシュ111にストアされないとヒット/ミスユニット1613が判定すると、このフェッチパケットはL2キャッシュ113から要求される。L1Iキャッシュ111は仮想的にタグ付けされ、L2キャッシュ113は物理的にタグ付けされるので、これはアドレス変換を要求する。同時に、仮想アドレス1511がL1IタグRAM1612に供給され、仮想アドレスはマルチプレクサ1621を介してμTLB1501にも供給される。アドレス変換は、典型的に、仮想アドレスの最上位ビット、及び物理アドレスの対応する最上位ビットのテーブルを用いて実施される。この例では、正しいアドレス対が検出されると、アドレス変換は、最上位仮想アドレスビットを最上位物理アドレスビットに置換する。仮想アドレスの最下位ビットが物理アドレスの最下位ビットと同じであることが典型的である。この例では、仮想アドレス/物理アドレス変換テーブルがMMU131にストアされる。また、L1Iキャッシュ111は、アドレス変換テーブルエントリの一部をキャッシュの様にストアするμTLB1501を含む。アドレス変換が成される場合、要求された仮想アドレス1511は、μTLB1501にストアされたアドレス変換テーブルエントリと比較される。仮想アドレス1511がμTLB1501内のテーブルエントリと合致すると、合致したテーブルエントリが現在のページ変換1623におけるアドレス変換に用いられる。このようなμTLBヒットがあると、現在のページ変換1623は、単一サイクルでアドレス変換を実施する。仮想アドレス1511がμTLB1501内のいかなるテーブルエントリとも合致しない場合、これらのアドレス変換パラメータはMMU131からフェッチされなければならない。μTLB1501は、仮想アドレス1511のためのページ変換エントリ要求1521をMMU131に送信する。このフェッチを実施するために、ページ変換及びMMUにおけるページテーブルウォークレイテンシによっては、数十又は数百サイクルが必要とされることがある。MMU131は、対応するアドレス変換エントリを見つけ、このエントリ1522をμTLB1501に戻す。μTLB1501はこの新たにフェッチされた変換エントリをストアし、典型的に、μTLB1501に現在ストアされているエントリを放出して余地を作る。現在のページ変換1623は、新たにストアされた変換エントリを用いてアドレス変換を実施する。アドレス変換に続いて、物理アドレスは、L2ユニットへの物理アドレス要求1631を介してL2キャッシュ113に渡される。この要求は、L1Iキャッシュ111におけるキャッシュミスを示すヒット/ミスユニット1613次第であることに留意されたい。L2キャッシュ113への物理アドレスの供給は、ヒット/ミスユニット1613がヒットを示す場合は要求されない。これは、このヒットが、メモリアクセスがL1Iキャッシュ111から成され得ることを示すからである。
図16は、μTLB1501におけるミスの際に生じるレイテンシを低減するためのさらなる改良を示す。この技術では、情報を用いて、生じ得るマイクロ変換ルックアサイドテーブルミスを、このミスが生じる前に予測する。各命令フェッチに対して、CPU110は、フェッチアドレスと、アクセスされるべきフェッチパケットの予測数とを生成する。アクセスされるべきフェッチパケットのこの予測数は、分岐ユニット516における分岐予測論理に基づく。
分岐予測は、パイプライン化されたプロセッサにおける条件付き分岐命令を扱う問題に対処する。パイプライン化は命令演算を扱う方法である。プログラムされた演算は、次の命令をフェッチし、この命令を復号し、オペランドにアクセスし、演算を実施し、結果をストアすることを必要とする。パイプライン化されたプロセッサは、命令を実行する異なる態様に専念する異なるハードウェアを有する。このタスク分割により、アセンブリラインの様な演算が可能となる。そのため、典型的に、パイプラインにおいて様々な終了段階で同時に複数の命令があり得る。進行中の命令をこのように分散させると、実行している条件付き分岐命令において遅延が生じ得る。命令実行は、通常、メモリロケーションを通して線形に進む。条件付き分岐命令は、何らかの現在の機械状態に基づいて、この線形の進行から逸脱する。レジスタにストアされるデータ又は状態ビットの状態などの、この機械状態は、典型的に、未知であるか、又は条件付き分岐命令に先立って知られ得る。多くの場合、この機械状態はちょうど計算された値である。条件付き分岐が採られる場合、プログラムフローが変化する。これは、パイプラインにおける進行中の複数の命令が誤った命令であることを意味する。簡単な解決法は、進行中のこれらの不正確な命令を中止し、正確に分岐宛先においてパイプラインの始まりを再開することである。命令フローにおけるこの中断をパイプラインヒットと呼ぶ。
分岐予測は、このようなパイプラインヒットの数を最小化するために用いられる。分岐ユニット516は、条件付き分岐が採られるか否かの予測を行う。命令フェッチシーケンスは、この予測された経路を辿る。条件付き分岐命令が正しく予測される場合、プログラムフローの中断又はパイプラインヒットはない。不正確な予測に対するパイプラインヒットは、予測なしで採られる分岐に対するパイプラインヒットと同じである。分岐予測は静的又は動的とし得る。静的な予測の例は、条件付き分岐命令の前に分岐宛先まで短距離である場合は分岐が常に採られることを予測すること、及びすべての他の採られない分岐を予測することである。これは、短い後方分岐が、反復的に実行され得るループの末尾から先頭までである、という理論に基づいている。動的な分岐予測は、この条件付き分岐命令の履歴を考慮に入れる。分岐が最後の1000回に採られる場合、この条件付き分岐が実行されて、分岐がこの場合に採られることが妥当であると予測される。この条件付き採命令の最後の4つの場合が、分岐が採られた、採られなかった、採られる、採られない場合、一方の予測(採られる/採られない)は他方と同じくらい良好である。動的な分岐予測は、静的な分岐予測より良好に入れ子ループを扱い得る。
分岐予測は、典型的に、プログラムコードにおいて、それが実行されるときに遭遇する各条件付き分岐命令のメモリアドレスをストアする。これにより、分岐ユニット516は、それが遭遇した条件付き分岐を認識し得る。条件付き分岐命令アドレスに関連するのは、採られた/採られなかった分岐予測、及び動的分岐予測で用いられる任意の分岐履歴である。この分岐予測情報は、常に、プログラムコードのかなり小さな部分に限定される。これは、分岐ユニット516内のメモリ及び回路の量の制限によるものである。ただし、現在の命令メモリロケーション、及び分岐予測に因るプログラムコード内の予測される経路に基づいて、分岐ユニット516は、分岐が採られると予測される前に、現在のフェッチパケットアクセスの後で用いられるべき線形に辿る命令又は命令フェッチパケットの想定数を決定し得る。この数はフェッチパケットカウント512である。
図16は、フェッチパケットのこの予測数1512の2つの使用を示す。アドレスアンロールユニット1614が、線形シーケンスにおける各フェッチパケットのアドレスを決定する。図17は、アドレスアンロールユニット1614の実施形態を図示する。仮想アドレス1511がアドレスアンロールユニット1614に供給されると、マルチプレクサ1701が、この初期仮想アドレスをアドレスレジスタ1702に供給する。アドレスレジスタ1702は、次のメモリサイクルまでこのアドレスをストアする。続くメモリアクセスサイクルで、加算器1703が、アドレスレジスタ1702の内容及びフェッチパケットサイズ入力を加算する。このフェッチパケットサイズ入力は、フェッチパケットのアドレスビットでのサイズである。好ましい実施形態において、このフェッチパケットサイズは16命令に固定される。好ましい実施形態において、命令は4バイトの32ビットである。好ましい実施形態において、メモリはバイト単位でアドレス可能であり、各アドレスロケーションは8ビット/1バイトに対応する。そのため、アドレスビットでのフェッチパケットサイズは16×4=48である。アドレスレジスタ1702とフェッチパケットサイズの和は、次のフェッチパケットのアドレスである。マルチプレクサ1611が、このアドレスをL1IタグRAM1612に供給する。L1IタグRAM1612は、アドレスアンロールユニット1614からの次のフェッチパケットアドレスを、次のアドレスがキャッシュされるかを決めるタグと比較する。ヒット/ミスユニット1613は、このアドレスがキャッシュされる(ヒット)か、キャッシュされないか(ミス)を示す。次のフェッチパケットアドレスがL1Iキャッシュ111にある場合(ヒット)、何の動作も必要とされない。次のフェッチパケットアドレスがL1Iキャッシュ111内にない場合(キャッシュミス)、L1Iキャッシュ111は命令プリフェッチコマンドを生成する。次のフェッチパケットアドレスは、マルチプレクサ1621を介してμTLB1501に結合される。少なくとも初期に、次のフェッチパケットのアドレスは初期仮想アドレス1511と同じページにあり、μTLB1501ヒットが生じる。現在のページ変換1623は、アドレス変換を実施し、対応する物理アドレスを、L2ユニットへの物理アドレス要求1631を介してL2キャッシュ113に供給する。次のフェッチパケットのアドレスが初期ページに続くページにヒットする場合、次のページ変換ユニット1624が、次のアドレス変換エントリが例示実施形態に従ってプリフェッチされている場合には、アドレス変換を実施する。いずれの場合も、これはL1IキャッシュミスをL2キャッシュ113に渡してメモリアクセスを行う。
アドレスレジスタ1702の初期仮想アドレス1511での初期的ロードに続いて、マルチプレクサ1701は、入力を切り替えてちょうど増分されたアドレスをロードする。次のメモリサイクルの間、加算器1703は、別の次のフェッチパケットアドレスを生成する。この新たな次のフェッチパケットアドレスは上述のように扱われる。カウントレジスタ1704には、初期的に、フェッチパケットカウント1512がロードされる。カウントレジスタ1704は、メモリアクセスサイクル毎に減分される。カウントレジスタ1704がゼロまで減分されたとゼロ検出ユニット1705が判定すると、マルチプレクサ1701へのイネーブルされた入力が切り替わって仮想アドレス1511に戻る。そのため、アドレスアンロールユニット1614は、メモリアドレスを介する線形進行の予測された終わりまで、初期アドレスに続く各フェッチパケットに対するアドレスを生成する。これにより、すべてのこれらのフェッチパケットのプリフェッチが、フェッチパケットがL1I 111にストアされる一致又はそれをL2キャッシュ113から要求することのいずれかによって可能になる。
フェッチパケットの予測数1512の第2の使用は、アドレス変換においてページ境界がクロスすることを検出することに関わる。ページ境界クロスユニット1622は、現在のフェッチアドレスにおいて始まるフェッチパケットの予測数がページ変換テーブルにおけるページ境界をクロスするかどうかを判定する。当技術分野で周知のように、アドレス変換は、仮想アドレス及び物理アドレスにおいて等しい最下位ビットの数に対応するサイズを有するメモリページ上で行われる。現在のフェッチアドレスは、アドレス変換テーブルの1つのページを指す。最後の予測されたフェッチパケットの終端アドレスは、同じページ又はそれに続くページを指す。
図18は、ページ境界クロスユニット1622を図示する。乗算器1801が、上述のように求められたフェッチパケットサイズにフェッチパケットカウント1512を乗算する。加算器1802が、この積をCPU110からの仮想アドレス1511に加算する。これにより、メモリを介する線形進行における最後のフェッチパケットのアドレスが計算される。ページ検出ユニット1803が、この最後のフェッチパケットのアドレス、及び現在のページサイズの指示を受け取る。当技術分野では、アドレス変換は固定又は可変サイズのページに基づき得ることが知られている。ページ検出ユニット1803は、最後のフェッチパケットのアドレスが仮想アドレス1511の同じページにあるか又は次のページにあるかを判定する。ページ境界クロスユニット1622がページ境界クロスを示す場合、マルチプレクサ1621は、初期仮想アドレスのページに続くページにアクセスするため、信号をμTLB1501に供給する。このアドレスのヒットの際、μTLB1501は、ヒット/ミスユニット1613がキャッシュミスを示すか否か、次のページ変換1624からL2キャッシュ113にL2ユニットへの物理アドレス要求1631を介して物理アドレスを提示する。ヒット/ミスユニット1613がL1Iキャッシュ111におけるヒットを示す場合、L2キャッシュ113へのいかなるアクセスも必要とされない。
ページ境界クロスユニット1622からの次のページが、μTLB1501におけるいかなるテーブルエントリとも合致しない場合、次のページ変換パラメータがMMU131からフェッチされなければならない。このような場合、次のページのアドレスがページ変換エントリ要求1521を介してMMU131に渡される。MMU131は、対応するアドレス変換エントリを見つけ、このエントリをページ変換エントリ1522を介してμTLB1501に戻す。μTLB1501は、この新たにフェッチされたアドレス変換エントリをストアし、典型的に、μTLB1501に現在ストアされているエントリを放出して余地を作る。これにより、次のページに対するアドレス変換エントリがμTLB1501にストアされる。命令フェッチがこの次のページに達すると、μTLB1501においてヒットが生じる。次のページ変換1624はアドレス変換を実施する。アドレス変換に続き、物理アドレスが、L2ユニットへの物理アドレス要求1631を介してL2キャッシュ113に渡される。この要求はL1Iキャッシュ111におけるキャッシュミスを示すヒット/ミスユニット1613次第であることに留意されたい。
上述のように、好ましい実施形態において、μTLB1501からMMU131への要求はパイプライン化される。また、好ましくは、MMU131からμTLB1501に戻るページ変換エントリ1522は、μTLB1501からMMU131に送られるページ変換エントリ要求1521と同じ順である必要はない。好ましい実施形態において、MMU131とμTLB1501との間のインターフェースは、複数の要求を同時に(パイプライン化して)扱い得る。MMU131の編成により、異なるページテーブルエントリに対してレイテンシを異ならせることができる。MMU131は、好ましくは、戻されたページ変換エントリ1522に対応するページ変換エントリ要求1521を追跡する。これにより、μTLB1501は、戻されたページ変換エントリ1522を、対応するページ変換エントリ要求1521と合致させ得る。これにより、μTLB1501は、順序付けられていない戻されたページ変換エントリ1522を扱い得る。
図19は演算を概略的に図示する。CPU110は、命令フェッチアドレス1511及びフェッチパケット数1512を生成する。この例では、フェッチアドレス1511は、メモリマップ1901におけるページA1911を指す。図19において示されるように、命令フェッチアドレス1511及びフェッチパケット数1512は、予測されたメモリアクセスがページA1911とページB1912との間のページ境界をクロスするようになっている。この決定の際、μTLB1501は、ページA1911及びページB1912の両方についてのページ変換エントリを要求する。これは、プログラムコードを介する経路がページ境界をクロスする場合、その新たなページ(ページB1912)に対するページ変換テーブルエントリがμTLB1501にすでにストアされていることを意味する。この新たなページに対するページ変換テーブルエントリをフェッチするためのレイテンシは、この早いフェッチによって隠される。
例示の実施形態は、プログラムがページミスを生じさせるか否かを、分岐予測論理からアクセスされるべき所定数のフェッチパケットから決定する。このような検出の際、μTLB1501は、ミスを生じさせる予期されたページアクセスに対するページ変換テーブルエントリを要求する。このように、このページ変換テーブルエントリは、CPU110が次のページにおけるフェッチパケットに実際にアクセスする前に要求される。ページ変換テーブルエントリフェッチは、これを行うのに長い時間を要し得る。また、このページ変換テーブルエントリフェッチを完了するための時間は、CPU110に見えないように高度に可変とし得る。そのため、μTLB1501に対するミスが予測される状況下では、早い要求が有利である。このように、例示の実施形態において、予想されたページ境界のクロスの検出と、CPU110命令要求に対応する実際のページ境界のクロスとの間のμTLB1501ミスレイテンシの一部が隠される。また、例示の実施形態は、予期されたページミスが生じるアドレスにおいて命令をプリフェッチし得る。このように、ページミスを生成するフェッチパケットは、実際のページミスの前に入手され得る。
アクセス予測が不正確であり、プログラムが第2のページにアクセスしない場合、例示の実施形態は、不要なページ変換テーブルエントリフェッチを実施する。これによりシステム性能が損なわれるとは予期されない。第2のページへの不正確なアクセス予測は、概して、不正確に予測されるプログラム分岐で生じ得る。このような場合、プログラムは、典型的に、元のアクセスページ及び次のページとは異なるページに分岐する。このような分岐によって生じるページミスがあり得る。第2のページ変換テーブルエントリの不要なフェッチは、不正確に予測された分岐ページミスと無関係であり得る。従って、例示の実施形態において、典型的に、不正確な分岐予測の場合でも性能が損なわれない。
置換方法の差異により、μTLBに1501はL1I 111にストアされるすべてのプログラム命令に対してページ変換テーブルエントリをストアしないことがあることに留意されたい。そのため、特定の命令アクセスが、L1Iヒット/ミスとμTLB1501の次のページのヒット/ミスとの4つの組合せのいずれかを生成することが可能となる。表5に、好ましい実施形態において採られるアクションを列挙する。
例示の実施形態において、命令プリフェッチは任意選択である。L1Iキャッシュ111におけるミスを点検することにより、概して、必要とされる時間が短くなり、μTLB1501におけるページエントリミスを点検するよりも変動が小さくなることが予期される。そのため、ページ変換テーブルエントリプリフェッチに関して命令プリフェッチの必要が小さくなる。
例示の実施形態は、第2のページ変換エントリが最終的にμTLBから要求されるかどうかを判定し、この第2のページに属する第1のアドレスがL1Iキャッシュコントローラによって要求される前にこのページ変換エントリをプリフェッチする。そのため、第2のページ変換エントリフェッチのミスレイテンシの一部又は全部が隠される。これにより、ストールサイクルが低減され、CPUのIPC(サイクル当たりの命令)実行メトリックが改善される。
例示の実施形態を、図5において図示した好ましい実施形態の超長命令語(VLIW)CPUに従ってフェッチパケットに適用可能として説明したが、例示の実施形態は、サイクル毎に単一命令をフェッチするCPUにも同様に適用可能である。この際、CPUの分岐予測ハードウェアからのフェッチパケット数は命令の数となる。これはフェッチパケット内の命令の数が1だからである。
例示の実施形態を、仮想アドレスを物理アドレスに変換する好ましい実施形態に関連して説明したが、例示の実施形態は、物理アドレスから仮想アドレスへの反対の変換にも同様に適用可能である。例示の実施形態により、ページ境界のクロスが予測される場合の第1のアドレスドメインから第2のアドレスドメインへの変換が増強され得る。
例示の実施形態を命令フェッチに関連して説明した。命令フェッチは、概略パターンがないデータフェッチと異なり、通常、線形に行われる。命令フェッチの場合、データフェッチの場合よりもページ境界のクロスを予測することがより容易であると予期される。そうではあるが、或る限定された状況において、例示の実施形態はデータフェッチに有用であり得る。

Claims (18)

  1. アドレス変換の方法であって、
    第1のアドレスドメインにおけるメモリアクセスの第1のアドレスを受け取ること
    前記第1のアドレスに線形に続く複数の予測される順次メモリアクセスの指示を受け取ること
    複数のアドレス変換エントリをメモリ管理ユニットにストアすることであって、各アドレス変換エントリが、前記第1のアドレスドメインの第1の所定の数の最上位アドレスビットと、対応するアドレスページに対する第2のアドレスドメインの第2の所定の数の最上位アドレスビットとを含む、前記メモリ管理ユニットにストアすることと、
    前記メモリ管理ユニットにストアされた前記アドレス変換エントリのサブセットをマイクロ変換ルックアサイドバッファにストアすることと、
    前記第1のアドレスに対応する第1のアドレス変換エントリについて前記マイクロ変換ルックアサイドバッファを探すこと
    前記第1のアドレス変換エントリが前記マイクロ変換ルックアサイドバッファにストアされていない場合前記メモリ管理ユニットから前記第1のアドレス変換エントリを呼び出し、前記呼び出された第1のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファにストアすること
    前記第2のアドレスドメインの前記第2の所定の最上位アドレスビットを前記第1のアドレス変換エントリの前記第1のアドレスドメインの前記第1の所定の最上位アドレスビットで置換することにより、前記第1のアドレス変換エントリに従って前記第1のアドレスを前記第2のアドレスドメインにおける第2のアドレスに変換すること
    前記第1のアドレスと前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示から、前記複数の予測される順次メモリアクセスの最後の予測される順次メモリアクセスが、前記第1のアドレス変換エントリに続く次のアドレス変換エントリに対応するかを判定すること
    前記複数の予測される順次メモリアクセスの前記最後の予測される順次メモリアクセスが、前記第1のアドレス変換エントリに続く次のアドレス変換エントリに対応する場合、前記次のアドレス変換エントリについて前記マイクロ変換ルックアサイドバッファを探すこと
    前記次のアドレス変換エントリが前記マイクロ変換ルックアサイドバッファにストアされていない場合、前記メモリ管理ユニットから前記次のアドレス変換エントリを呼び出し、前記呼び出された次のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファにストアすること
    を含む、方法。
  2. 請求項1に記載のアドレス変換の方法であって、
    前記第1のアドレスドメインにおける前記メモリアクセスが命令フェッチであり、
    前記方法が、
    条件付き分岐命令が分岐を採るか、分岐を採らないかを予測すること
    前記第1のアドレスと、採られると予測される次の順次条件付き分岐命令との間のアドレスロケーションの数に応じて、前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示を判定すること
    を含む、方法。
  3. 請求項1に記載のアドレス変換の方法であって、
    前記第1のアドレスドメインにおける前記メモリアクセスが連続する命令のフェッチパケットの命令フェッチであり、
    前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示がフェッチパケットの数である、方法。
  4. 請求項3に記載のアドレス変換の方法であって、
    前記複数の予測される順次メモリアクセスの最後の予測される順次メモリアクセスが前記次のアドレス変換エントリに対応するかを判定することが、
    前記フェッチパケットの数に前記フェッチパケットのサイズを乗算して積を形成すること
    前記積を前記第1のアドレスに加算してアドレスの和を形成すること
    前記アドレスの和が前記次のアドレス変換エントリに対応するかを判定すること
    を含む、方法。
  5. 請求項4に記載のアドレス変換の方法であって、
    前記アドレスの和が前記次のアドレス変換エントリに対応するかを判定することが、前記第1のアドレス変換エントリの現在のページサイズの指示を受け取ることを含む、方法。
  6. 請求項1に記載のアドレス変換の方法であって、
    メモリアドレスのサブセットに対するデータをキャッシュに一時的にストアすること
    前記第1のアドレスに対応するデータに対するメモリアクセスの各々受信される第1のアドレスについて前記キャッシュを探すこと
    前記キャッシュが前記第1のアドレスに対応するデータをストアしている場合、前記キャッシュから前記第1のアドレスに対してメモリアクセスを行うこと
    前記キャッシュが前記第1のアドレスに対応するデータをストアしていない場合
    前記第1のアドレス変換エントリに従って前記第1のアドレスを前記第2のドメインにおける第2のアドレスに変換することを含んで、前記第1のアドレスに対応する前記データを前記メモリから呼び出
    前記第1のアドレスに対応する前記呼び出されたデータを前記キャッシュにストア
    その後、前記キャッシュから前記第1のアドレスに対して前記メモリアクセスを行うこと
    更に含み、
    前記第1のアドレス変換エントリを前記メモリ管理ユニットから呼び出すこと、前記第1のアドレス変換エントリが前記マイクロ変換ルックアサイドバッファにストアされていない場合に前記呼び出された第1のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファにストアすることが、前記キャッシュが前記第1のアドレスに対応するデータをストアしていない場合にのみ実行される、方法。
  7. 請求項6に記載のアドレス変換の方法であって、
    前記第1のアドレスドメインにおける前記メモリアクセスが命令フェッチであり、前記第1のアドレスドメインにおける前記メモリアクセスが連続する命令のフェッチパケットの命令フェッチであり、前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示がフェッチパケットの数であり、
    前記方法が、
    前記第1のアドレスにフェッチパケットを加算することによって第1の次のパケットアドレスを生成すること
    前の次のパケットアドレスにフェッチパケットサイズを順次加算することによって次のフェッチアドレスのシーケンスを生成すること
    各次のパケットアドレスにおいて命令をプリフェッチすること
    更に含む、方法。
  8. 請求項7に記載のアドレス変換の方法であって、
    各次のパケットアドレスにおいて命令をプリフェッチすることが、
    前記次のパケットアドレスに対応する命令に対する各次のパケットアドレスについて前記キャッシュを探すこと
    前記キャッシュが前記次のパケットアドレスに対応する命令をストアしていない場合
    前記第1のアドレス変換エントリに従って前記次のパケットアドレスを前記第2のアドレスドメインにおける第3のアドレスに変換することを含んで、前記次のパケットアドレスに対応する前記データをメモリから呼び出
    各次のパケットアドレスに対応する前記呼び出された命令を前記キャッシュにストアすること
    を含む、方法。
  9. 請求項1に記載のアドレス変換の方法であって、
    前記次のアドレス変換エントリを前記メモリ管理ユニットから呼び出すことが、
    前記第1のアドレスを前記メモリ管理ユニットに供給すること
    前記第1のアドレスに対応するアドレス変換エントリを前記メモリ管理ユニットから呼び出すこと
    前記メモリ管理ユニットからの前記呼び出されたアドレス変換エントリを前記マイクロ変換ルックアサイドバッファに前記第1のアドレスに対応する指示とともに戻すことであって、それにより、前記マイクロ変換ルックアサイドバッファが順序付けられていない呼び出されたアドレス変換エントリを適切にストアし得る、前記戻すこと
    を含む、方法。
  10. アドレス変換を用いるデータ処理装置であって、
    命令制御下でデータに対してデータ処理演算を実施する中央処理装置であって、第1のアドレスドメインにおける対応する第1のアドレスでのメモリアクセスと、各メモリアクセスについて前記第1のアドレスに線形に続く複数の予測される順次メモリアクセスの指示とを生成する、前記中央処理装置
    複数のアドレス変換エントリをストアするメモリ管理ユニットであって、各アドレス変換エントリが、前記第1のアドレスドメインの第1の所定数の最上位アドレスビットと、対応するアドレスページについて第2のアドレスドメインの対応する第2の所定数の最上位アドレスビットとを含む、前記メモリ管理ユニット
    前記中央処理装置前記メモリ管理ユニットに接続されるアドレス変換ユニット
    を含み、
    前記アドレス変換ユニットが、前記複数のアドレス変換エントリのサブセットをストアするマイクロ変換ルックアサイドバッファを含み、
    前記アドレス変換ユニットが、
    現在の第1のアドレスに対応する第1のアドレス変換エントリについて前記マイクロ変換ルックアサイドバッファを探すこと
    前記第1のアドレス変換エントリが前記マイクロ変換ルックアサイドバッファにストアされていない場合前記メモリ管理ユニットから前記第1のアドレス変換エントリを呼び出し、前記呼び出された第1のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファにストア、前記アドレス変換エントリの前記第1のアドレスドメインの前記第1の所定の最上位ビットの代わりに前記第2のアドレスドメインにおける前記第2の所定の最上位ビットで置換することによって前記第1のアドレス変換エントリに従って前記第1のアドレスを第2のアドレスドメインにおける第2のアドレスに変換すること
    によって、前記中央処理装置からのメモリアクセスを前記第1のアドレスドメインから第2のアドレスドメインに変換するように動作可能であり、
    前記アドレス変換ユニットが、
    前記複数の予測される順次メモリアクセスの最後の予測される順次メモリアクセスが前記第1のアドレス変換エントリに続く次のアドレス変換エントリに対応するか否かを前記第1のアドレスと前記複数の予測される順次メモリアクセスの前記指示とから判定
    前記複数の予測される順次メモリアクセスの前記最後の予測される順次メモリアクセスが次のアドレス変換エントリに対応する場合、前記次のアドレス変換エントリについて前記マイクロ変換ルックアサイドバッファを探
    前記次のアドレス変換エントリが前記マイクロ変換ルックアサイドバッファにストアされていない場合、前記メモリ管理ユニットから前記次のアドレス変換エントリを呼び出し、前記呼び出された次のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファにストアする
    ように動作可能である、装置。
  11. 請求項10に記載のアドレス変換を用いるデータ処理装置であって、
    前記第1のアドレスドメインにおける前記メモリアクセスが命令フェッチであり、
    前記中央処理装置が分岐予測ユニットを含み、
    前記分岐予測ユニットが、
    条件付き分岐命令が分岐を採るか、分岐を採らないかの予測をストア
    前記第1のアドレスと、採られるように予測される次の順次条件付き分岐命令との間のアドレスロケーションの数に応じて、前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示を計算する
    ように動作可能である、装置。
  12. 請求項10に記載のアドレス変換を用いるデータ処理装置であって、
    前記中央処理装置が、複数の機能ユニットを含む超長命令語中央処理装置であり、
    前記第1のアドレスドメインにおける前記メモリアクセスが、連続する命令のフェッチパケットの命令フェッチであり、
    前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示がフェッチパケットの数である、装置。
  13. 請求項12に記載のアドレス変換を用いるデータ処理装置であって、
    前記アドレス変換ユニットが、
    前記フェッチパケットの数を受け取る第1の入力と、前記フェッチパケットのサイズを受け取る第2の入力と、積を形成する出力とを有する乗算器
    前記乗算器の前記出力に接続される第1の入力と、前記第1のアドレスを受け取る第2の入力と、アドレスの和を形成する出力とを有する加算器
    前記加算器の前記出力に接続される第1の入力を有し、前記アドレスの和が前記次のアドレス変換エントリに対応するか否かを判定する、ページ境界検出ユニット
    更に含む、装置。
  14. 請求項13に記載のアドレス変換を用いるデータ処理装置であって、
    前記ページ境界検出ユニットが、前記第1のアドレス変換エントリの現在のページのサイズの指示を受け取る第2の入力を更に有する、装置。
  15. 請求項10に記載のアドレス変換を用いるデータ処理装置であって、
    メモリアドレスのサブセットについてのデータを一時的にストアするキャッシュをに含み、
    前記キャッシュが、
    前記第1のアドレスに対応するデータに対するメモリアドレスの各々受信される第1のアドレスについて探
    前記キャッシュが前記第1のアドレスに対応するデータをストアしている場合、前記キャッシュから前記第1のアドレスに対して前記メモリアクセスを行
    前記キャッシュが前記第1のアドレスに対応するデータをストアしていない場合、前記アドレス変換ユニットが前記第1のアドレス変換エントリに従って前記第1のアドレスを前記第2のアドレスドメインにおける前記第2のアドレスに変換することを含んで、メモリから前記第1のアドレスに対応する前記データを呼び出し、前記第1のアドレス変換エントリに対応する前記呼び出されたデータをストアし、その後、前記キャッシュから前記第1のアドレスに対して前記メモリアクセスを行う
    ように動作可能であり、
    前記アドレス変換ユニットが、前記第1のアドレス変換エントリを前記メモリ管理ユニットから呼び出し、前記キャッシュが前記第1のアドレスに対応するデータをストアしていない場合にのみ、前記呼び出された第1のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファにストアするように動作可能である、装置。
  16. 請求項15に記載のアドレス変換を用いるデータ処理装置であって、
    前記中央処理装置が、連続する命令のフェッチパケットの命令フェッチを前記メモリアクセスとして生成し、前記第1のアドレスに線形に続く前記複数の予測される順次メモリアクセスの前記指示としてフェッチパケットの数を生成し、
    前記アドレス変換ユニットが、
    前記フェッチパケット数が初期的にロードされ、メモリサイクル毎に減分される、フェッチパケットカウントレジスタ
    前記中央処理装置に接続され前記第1のアドレスを受け取る第1の入力と、第2の入力と、出力と、ゼロカウントユニットに接続されゼロカウント指示を受け取る制御入力とを有するマルチプレクサ
    前記フェッチパケットカウントレジスタに接続され、前記フェッチパケットカウントレジスタのカウントがゼロかどうかのゼロカウント指示を生成するゼロカウントユニットであって、前記ゼロカウント指示が、前記マルチプレクサの前記制御入力に接続され、ゼロの指示の際に前記マルチプレクサの前記第1の入力を選択し、非ゼロの指示の際に前記マルチプレクサの前記第2の入力を選択する、前記ゼロカウントユニット
    フェッチパケットサイズの指示を受け取る第1の入力と、前記マルチプレクサの前記出力に接続される第2の入力と、アドレスの和を生成する出力とを有する加算器であって、前記出力が前記マルチプレクサの前記第2の入力に接続され、前記アドレスの和がキャッシュプリフェッチ要求を生成する、前記加算器
    更に含む、装置。
  17. 請求項16に記載のアドレス変換を用いるデータ処理装置であって、
    前記キャッシュが、
    前記キャッシュプリフェッチアドレスに対応するデータに対する各々受信されるキャッシュプリフェッチアドレスについて探
    前記キャッシュが前記キャッシュプリフェッチアドレスに対応するデータをストアしていない場合、前記アドレス変換ユニットが前記第1のアドレス変換エントリに従って前記キャッシュプリフェッチアドレスを前記第2のアドレスドメインにおける第3のアドレスに変換することを含んで、前記メモリから前記キャッシュプリフェッチアドレスに対応する前記データを呼び出
    前記キャッシュプリフェッチアドレスに対応する前記呼び出されたデータをストアする
    ように更に動作可能である、装置。
  18. 請求項10に記載のアドレス変換を用いるデータ処理装置であって、
    前記メモリ管理ユニットが、前記呼び出された第1のアドレス変換エントリを前記マイクロ変換ルックアサイドバッファに前記第1のアドレスに対応する指示とともに戻すように更に動作可能であり、
    前記マイクロ変換ルックアサイドバッファが、前記呼び出された第1のアドレス変換エントリを前記第1のアドレスに対応するロケーションにストアし、そのため、前記マイクロ変換ルックアサイドバッファが、順序付けられていない呼び出されたアドレス変換エントリを適切にストアし得る、装置。
JP2017533975A 2014-12-22 2015-12-22 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと Active JP6718454B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/579,654 US9514059B2 (en) 2014-12-22 2014-12-22 Hiding page translation miss latency in program memory controller by selective page miss translation prefetch
US14/579,654 2014-12-22
PCT/US2015/067525 WO2016106392A1 (en) 2014-12-22 2015-12-22 Hiding page translation miss latency in program memory controller by selective page miss translation prefetch

Publications (3)

Publication Number Publication Date
JP2018506776A JP2018506776A (ja) 2018-03-08
JP2018506776A5 JP2018506776A5 (ja) 2019-01-31
JP6718454B2 true JP6718454B2 (ja) 2020-07-08

Family

ID=56129570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017533975A Active JP6718454B2 (ja) 2014-12-22 2015-12-22 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと

Country Status (5)

Country Link
US (1) US9514059B2 (ja)
EP (1) EP3238073B1 (ja)
JP (1) JP6718454B2 (ja)
CN (1) CN107111550B (ja)
WO (1) WO2016106392A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10049054B2 (en) * 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10379858B2 (en) * 2015-09-14 2019-08-13 Spreadtrum Hong Kong Limited Method and apparatus for executing conditional instruction predicated on execution result of predicate instruction
KR20180012565A (ko) * 2016-07-27 2018-02-06 에스케이하이닉스 주식회사 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템
US9673977B1 (en) 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols
US10719451B2 (en) * 2017-01-13 2020-07-21 Optimum Semiconductor Technologies Inc. Variable translation-lookaside buffer (TLB) indexing
US10565115B2 (en) * 2017-03-30 2020-02-18 Western Digital Technologies, Inc. Calculating the optimal number of LBNS to prefetch per CPU
US10929296B2 (en) * 2017-10-12 2021-02-23 Texas Instruments Incorporated Zero latency prefetching in caches
KR102151180B1 (ko) * 2017-11-20 2020-09-02 삼성전자주식회사 효율적인 가상 캐시 구현을 위한 시스템 및 방법
US10489305B1 (en) 2018-08-14 2019-11-26 Texas Instruments Incorporated Prefetch kill and revival in an instruction cache
US10642742B2 (en) * 2018-08-14 2020-05-05 Texas Instruments Incorporated Prefetch management in a hierarchical cache system
US11113208B2 (en) 2019-05-22 2021-09-07 Texas Instruments Incorporated Pseudo-first in, first out (FIFO) tag line replacement
US11461106B2 (en) * 2019-10-23 2022-10-04 Texas Instruments Incorporated Programmable event testing
US11704253B2 (en) * 2021-02-17 2023-07-18 Microsoft Technology Licensing, Llc Performing speculative address translation in processor-based devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778434A (en) 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
JPH1040171A (ja) * 1996-07-24 1998-02-13 Sony Corp アドレス変換装置および方法
US6487640B1 (en) 1999-01-19 2002-11-26 International Business Machines Corporation Memory access request reordering to reduce memory access latency
EP1182569B8 (en) 2000-08-21 2011-07-06 Texas Instruments Incorporated TLB lock and unlock operation
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7117337B2 (en) * 2004-02-19 2006-10-03 International Business Machines Corporation Apparatus and method for providing pre-translated segments for page translations in segmented operating systems
US7689806B2 (en) * 2006-07-14 2010-03-30 Q Method and system to indicate an exception-triggering page within a microprocessor
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US20140108766A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
US9251048B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Memory page management

Also Published As

Publication number Publication date
EP3238073A1 (en) 2017-11-01
EP3238073B1 (en) 2019-06-26
WO2016106392A1 (en) 2016-06-30
US20160179700A1 (en) 2016-06-23
JP2018506776A (ja) 2018-03-08
CN107111550A (zh) 2017-08-29
EP3238073A4 (en) 2017-12-13
CN107111550B (zh) 2020-09-01
US9514059B2 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
JP6718454B2 (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
US9239735B2 (en) Compiler-control method for load speculation in a statically scheduled microprocessor
US9652392B2 (en) Using L1 cache as re-order buffer
CN111213131B (zh) 高速缓存器中的零时延预提取
US11500777B2 (en) Servicing CPU demand requests with inflight prefetches
US7805590B2 (en) Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
CN105718386B (zh) 程序存储器控制器中页面窗口的本地页面转换和许可存储
JP5335440B2 (ja) オペランドの早期の条件付き選択
JP2009524167A5 (ja)
US9652402B2 (en) Hiding page translation miss latency in program memory controller by next page prefetch on crossing page boundary
US20070300042A1 (en) Method and apparatus for interfacing a processor and coprocessor
US7925862B2 (en) Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
US10963254B2 (en) Mechanism to queue multiple streams to run on streaming engine
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200331

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: 20200520

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200612

R150 Certificate of patent or registration of utility model

Ref document number: 6718454

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250