JP2009524166A - 変換索引マニピェレーション - Google Patents

変換索引マニピェレーション Download PDF

Info

Publication number
JP2009524166A
JP2009524166A JP2008551562A JP2008551562A JP2009524166A JP 2009524166 A JP2009524166 A JP 2009524166A JP 2008551562 A JP2008551562 A JP 2008551562A JP 2008551562 A JP2008551562 A JP 2008551562A JP 2009524166 A JP2009524166 A JP 2009524166A
Authority
JP
Japan
Prior art keywords
tlb
processor
instructions
stage
pipeline
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.)
Granted
Application number
JP2008551562A
Other languages
English (en)
Other versions
JP2009524166A5 (ja
JP5329234B2 (ja
Inventor
コペック、ブライアン・ジョセフ
オーグスバーグ、ビクター・ロバーツ
ディーフェンダーファー、ジェームズ・ノリス
ブリッジス、ジェフリー・トッド
サートリウス、トマス・アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009524166A publication Critical patent/JP2009524166A/ja
Publication of JP2009524166A5 publication Critical patent/JP2009524166A5/ja
Application granted granted Critical
Publication of JP5329234B2 publication Critical patent/JP5329234B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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]

Landscapes

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

Abstract

TLBおよびTLBコントローラを含むコントローラ多段パイプラインを有するプロセッサ。TLBミス信号に応じて、TLBコントローラはメモリあるいは高いレベルのTLBのいずれかからアドレス変換情報を要求するTLB再ロードを開始し、そしてその情報をTLBの中に配置する。プロセッサはミスしている仮想アドレスを有するインストラクションをフラッシュし、そしてインストラクションをリフェッチし、結果的にインストラクションを再挿入する。TLB再ロードの開始およびインストラクションのフラッシュ/リフェッチは、直ちにパイプラインをストールすることなしに、実質的に平行して行われる。リフェッチされたインストラクションはTLB再ロードが完了するまでTLBアクセスポイント上部のパイプラインのポイントに保持され、そしてリフェッチされたインストラクションが次のアクセスに際してTLB内に「ヒット」を発生する。

Description

[分野]
本開示は変換索引バッファに関する
ページをつけられた仮想メモリをサポートするプロセッサ内においては、データはプロセッサの仮想アドレス空間(virtual address space)を占有する仮想(あるいは、「論理(logical)」アドレスを使用して定義される。仮想アドレス空間は典型的にはシステムにおける実際の物理的メモリの総量よりも大きいかもしれない。これらのプロセッサにおけるオペレーティングシステムはページと呼ばれる固定されたサイズにおける物理的メモリを管理するであろう。
仮想ページアドレス(virtual page address)を物理ページアドレス(physical page address)に変換するためにプロセッサはシステムメモリ内に記憶されたページテーブルを探索することができ、そしてそれはアドレス変換情報を含むことができる。これらの探索(またはページテーブル散歩(page table walks))はメモリアクセスを含むかも知れず、そうでなければページテーブルデータはデータキャッシュのなかに存在し、これらの探索は時間のかかるものであろう。
その結果プロセッサは1つあるいはそれより多くの変換索引バッファ(TLB;translation lookaside buffer)を使用してアドレス変換を実施するであろう。TLBはアドレス変換キャッシュであり、すなわち最新のマッピングを仮想アドレス(virtual address )から物理アドレス(physical address)に記憶する小さいキャッシュである。プロセッサはページテーブル探索およびアドレス変換の後にTLB内の物理アドレスをキャッシュすることができる。TLBは一般にしばしば参照される仮想ページアドレスをこれと組み合わされた物理ページアドレスと同様に含むことができる。インストラクション(instruction)アドレス(インストラクションTLB,あるいはI−TLB)に関して、およびデータアドレス(data-TLBあるいはD−TLB)に関して、別個のTLBが存在することができる。
TLBが仮想アドレスを受信すると、TLBはこれらの何れかのエントリに含まれるアドレス変換情報が受信された仮想ページアドレスに適合するか否かを探索することができる。もしもTLBに与えられた受信された仮想ページアドレスがTLBエントリの何れかのアドレス変換情報に適合する場合はTLB「ヒット(hit)」が発生しそうでない場合はTLB「ミス(miss)」が発生するであろう。
TLBミスに応じて、パイプラインはミスが発生した点においてストール(stall)するであろう。仮想アドレスを含んでいるインストラクションは,アドレス変換情報の不足のため次のステージに進むことが不可能となり、ただ動かずそして待つことになることができる。これが生じている間、ミスが発生しているポイントより上部のすべてのステージは待機しなければならず、その結果として著しい非効率が生ずる。TLBミスに際して採用された他の基準(measure)は、TLBアクセスポイントに先立つステージにおいてインストラクションをストーリングすることなく、失われたインストラクションをフラッシュ(flush)することであろう。この場合、多数のミスが複数のフラッシュを要求している同じインストラクションに対して発生することになるかもしれない。このこともまた非効率の原因となることができる。
[概要]
プロセッサは多段のパイプラインを有することができ、そしてTLBおよびTLBコントロール装置を含むことができる。TLBは仮想アドレスが物理アドレスに変換されることを可能にするアドレス変換情報を保存するように形成されることができる。TLBはさらにTLB対して与えられる命令の仮想アドレスがTLBから失われている場合、TLBミス信号を発生するように形成されることができる。TLBコントロール回路はさらにTLBミス信号に対応してTLB再ロード(TLB reload)を開始するように形成されることができる。プロセッサは失われた仮想アドレスを有するインストラクションをフラッシュするように形成されることができる。プロセッサはさらにインストラクションをリフェッチ(refetch)するように形成されているかも知れず、そしてそれは、結果的にTLBアクセスポイント上部のパイプラインの初期ステージにおいて、インストラクションを再挿入させることになる。TLB再ロードの開始およびインストラクションのフラッシュ/リフェッチの両者は、ただちにパイプラインをストーリングすることなしに、並行して実行することができる。プロセッサは、TLBの再ロードが完了するまで、TLBアクセスポイントも上部のパイプラインのポイントにおいてさらにリフェッチされたインストラクションを保持するように形成することができ、そこでリフェッチされたインストラクションはそこで次のアクセスに際してTLB内において「ヒット」するであろう。
多段パイプラインを有するパイプライン化されたプロセッサにおいてTLBを動作させる方法は、TLBからのTLBミス信号を受信することを含むことができる。TLBミス信号は、アドレス変換情報のTLB内に、インストラクションの仮想アドレスについて存在しないことを示すことができる。この方法はさらにミス信号に応じて、TLB再ロードを開始させることを含むことができる。この方法はさらにインストラクションをフラッシングしそしてそれをリフェッチングすることを含むことができ、さらにTLBミス信号に応じて、TLBアクセスポイントの上部のパイプラインの初期ステージにおいて、再挿入を生じさせる。TLB再ロードの開始およびインストラクションのフラッシュ/リフェッチの両者は、直ちにパイプラインをストール(stall)することなく、並行して実施されることができる。この方法は更に、リフェッチされたインストラクションがその次のアクセスにおいてTLBにおいて「ヒット」するように、TLBの再ロードが完了するまで、TLBアクセスポイントの上部のパイプラインにおけるポイントにおいてリフェッチされたインストラクションを保持することを含むことができる。
[詳細な説明]
添付された図面に関連して以下に述べる詳細な記載は、プロセッサに関する種々の例示的な実施例を記述し、そして、プロセッサ内におけるTLBを動作させる方法に関して記述することを意図するものであるが、しかし、ここに開示された創造的コンセプトを実施することのできる単なる実施例を表現することを意図するものではない。詳細な説明は記載されている全体の理解を可能にするための特定の詳細部を含む。しかしながら、いくつかの実施例におけるこれらの特定の詳細部の1つ以上のものは必要とされないことを当業界において習熟した人々によって正しく評価されるべきである。若干の実施例においては、表現されているコンセプトをより明確に示すために、良く知られた構造および構成部品はブロック線図の形態で示されている。
図1は仮想メモリシステムにおいて動作するTLBを概略的に示す。仮想メモリシステムにおいてマッピング(あるいは変換)は、典型的に仮想(または「線型(linear)」)アドレス空間および物理アドレス空間との間で実行される。仮想アドレス空間は、典型的には、プロセッサによって発生されたすべての仮想アドレス22の組に関係する。物理アドレス空間は、典型的には、プロセッサの物理的メモリ30内に存在するデータに対する全ての物理的アドレスの組に、即ち物理的メモリ30内の特定の位置に書き込みまたは特定の位置から読み出すためのメモリバスにおいて提供されるアドレスに関係する。
ページを付された仮想メモリシステムにおいて、データは通常ページとしての基準とされる一定した長さの単位31から構成されると想定することができる。仮想アドレス空間および物理アドレス空間は連続したページアドレスのブロックに分割することができる。各仮想ページアドレスは仮想ページ番号を提供することができ、そして各物理ページアドレスはデータの特定の31ページのメモリ30内の位置を表示することができる。例えば、異なったページサイズを使用することができるとしても、典型的なページサイズは約4キロバイトである。物理メモリ30内のページテーブル20は、仮想メモリシステムの全ての仮想ページアドレスに対応する物理ページアドレスを含むことができ、即ち、仮想アドレスス空間におけるすべての仮想ページアドレスに関し、仮想ページアドレスと対応する物理ページアドレスとの間のマッピングを含むことができる。典型的には、ページテーブル20は複数のページテーブルエントリ(PTEs;page table entries)21を含むことができ、各PTE21は、特定の仮想アドレスに対応する物理メモリ30内のページ31を示す。
物理メモリ30内のページテーブル20に記録されたPTE21をアクセスすることは、一般にメモリバストランザクション(memory bus transaction)を必要とするかも知れず、それはプロセッササイクルタイムおよび電力消費の点で高価である。メモリバストランザクションの数は、物理メモリ30よりもむしろTLB10にアクセスすることによって減少することができる。前に説明したように、TLB10は最近の仮想および物理的アドレス間のマッピングを記録するアドレス変換キャッシュである。TLB10は典型的にはページテーブル20の中に記録されている仮想から物理アドレスマッピングへのサブセットを含む。TLBアクセスの効率を増加するために、TLBの複数レベル(図示せず)が使用されそして実行されることができ、メモリイキャッシュの複数レベルの類推により、低レベルTLBは上位レベルTLBと比較してより小さくそしてより速い。TLB10は典型的には複数のTLBエントリ12を含むことができる。各TLBエントリ12はタグフィールド14およびデータフィールド16を有することができる。タグフィールド14は、仮想ページアドレスのより高い順位のビットのいくつかをタグとして含むことができる。データフィールド16はタグ付けされた仮想ページアドレスに対応している物理ページアドレスを示すことができる。
ページを付けられた仮想メモリシステムは、上に述べられたように、多ステージパイプラインを有するパイプライン化されたプロセッサ内で使用されることができる。パイプライン化は、一回以上の操作が連続して実行できるようにハードウエアを調整することにより、プロセッサの特性を増加することができる。例え任意の与えられた動作を完了されるのに必要とされる時間の総量は同じ量にとどまるとしても、この方法により単位時間に実行される動作数は増加されることが可能である。パイプライン化されたプロセッサにおいて、プロセッサ内における動作のシーケンスは複数のセグメントあるいはステージに分割することができ、各ステージは命令または動作の異なる部分を並行して遂行する。複数のステージはパイプを形成するように結合されているように見える。典型的に、パイプライン内の各ステージは、1クロックサイクル内においてその動作を終了することが期待されているであろう。中間の保存バッファは一般に一つのステージから次のステージに通過する情報を保持するのに使用することができる。
プログラムの実行期間中に、インストラクションが対応する物理アドレスに変換される必要がある仮想アドレス22を有する場合、TLB10はTLB10内に記録されたTLBエントリ12の中の仮想アドレス22をルックアップ(look up)するためにアクセスされることができる。仮想アドレス22は一般的に仮想ページナンバーを含み、これはTLB10内において対応する物理ページアドレスを探索するために使用されることができる。より特定的には、プロセッサによって発生された各仮想アドレスは、インストラクションフェッチあるいはオペランドフェッチ(operand fetch)/記録動作のためであろうとなかろうと、オフセット(典型的には仮想アドレスの低位ビットによって示される。)が続く仮想ページ番号(典型的には仮想ページアドレスの高位ビットによって示される。)を含んでいると見られることができる。仮想アドレスのオフセット部分はページ内の特定のバイトあるいはワードの位置を特定することができる。
もしもTLB10が、そのTLBエントリの中に、TLBに与えられた仮想アドレス22に含まれる仮想ページ番号に対応する特定の物理ページアドレスを含む場合は、TLB「ヒット」が発生することができ、そして物理ページアドレスはTLB10から取得
される(retrieve)ことができる。もしもTLB10がTLBに与えられた仮想アドレス22内の仮想ページ番号に対応する特定の物理ページアドレスを含まない場合は、TLB「ミス」が発生し、そして物理メモリ30(および/あるいはもしあればより高次のTLBのルックアップ)内のページテーブル20のルックアップが実行されなければならないであろう。一度ページテーブル20から物理ページアドレスが決定されると、仮想ページアドレスに対応する物理ページアドレスはTLB10のなかにロードされることができ、そしてTLB10は仮想ページアドレス22を用いて再度アクセスされることができる。所望の物理ページアドレスがいまやTLB10のなかにロードされている故に、TLBアクセスは今回はTLB「ヒット」となることができ、そして最近ロードされた物理的ページアドレスはTLB10の出力において発生させられることができる。
図2は、パイプラインを直ちにストールすることなく、TLB再ロードの開始によってTLBミス信号に対応するように形成されたパイプライ化されたプロセッサ100の概略図である。概観すると、プロセッサ100は複数のページのなかにインストラクションおよびデータを保存するように形成されたメモリ130を含むことができ、データキャッシュ(D−cache)117およびインストラクションキャッシュ(I−cache)127は主メモリ130内に記録されたデータおよびインストラクションのサブセットに高速度アクセスを提供するように形成され、TLB122は仮想アドレスから物理アドレスへの最新の変換を記録するように形成され.そしてTLBコントロール回路140はTLB122の動作を制御するよう形成される。
TLBコントロール回路140は図2に示されるようにプロセッサ100内の中央プロセッサユニット(CPU)150の一部であることができる。他の実施例において、TLBコントロール回路140はプロセッサ100のCPU150の近くに置かれることができる。プロセッサ100の図示された実施例において、TLB122もまたCPU150の一部である。他の実施例において、TLB122はプロセッサのCPUの近くに置かれることができるが、しかしCPU内ではない。例えば、TLB122はCPUの外側におかれるメモリ管理ユニット(図示せず)の中に置かれることができる。メモリ130はプロセッサ100によって発生された仮想ページアドレスに対応する物理ページアドレスを記憶するページテーブル120を含むことができる。TLBは、データTLB(DTLB)および/あるいはインストラクションTLB(ITLB)および/あるいは統合されたTLB(UTLB;unified TLB)とすることができる。
プロセッサ100は、所望のアドレス変換メカニズムがTLB122においてミスしている(missing)場合に、正確なアドレス変換情報を決定するために、TLB再ロードを実行するよう形成されTLB再ロードメカニズム170をさらに含むことができる。TLB再ロードメカニズム170は、例えばハードウェアページテーブルウォーク(hardware page table walk)を実行するためのロジカルステートマシン(logical state machine)(図示せず)を使用して、メモリ130内のページテーブル120からのアドレス変換情報を取得することを実行することができる。ある実施例において(図示せず)、情報装置100は1つあるいはより多くのより高いレベルのTLBを含むことができる。これらの場合において、もし所望のアクセスが結果としてTLB122において「ミス」となる場合、TLB再ロードメカニズム170は、メモリ130をアクセスする前に、より高次のTLBに最初にアクセスするであろう。
プロセッサ100は多段にパイプライン化されたプロセッサであり、そしてCPU150内の典型的なパイプラインステージのシーケンスは破線を用いて概念的に図2に示されている。図2に示されたステージのシーケンスは、フェッチステージ210、デコードステージ220、実行ステージ320、メモリアクセスステージ240、およびライトバックステージ(write back stage)250を含む。図2における典型的なシーケンスは説明の目的のために示されている。より小さいあるいはより大きいパイプラインステージを有する他の代わりのシーケンスも可能である。各ステージ中の機能、例えば、フェッチングステージ210の継続期間中のインストラクションのフェッチング、デコードステージ220の継続期間中のインストラクションのデコーディング、などは、典型的に1つのCPUクロックサイクル中に起きる。
図2はまたハードウェアユニットを示しており、それぞれは1つのCPUクロックサイクル内の各ステージに関する機能を実行するように形成されている。ハードウェアユニットは、I−キャッシュ127あるいは主メモリ130から1つあるいはそれより多くのインストラクションをフェッチするように形成されている少なくとも1つのフェッチユニット211を、フェッチユニット211によってフェッチされたインストラクションをデコードするように形成されている少なくとも1つのデコードユニット(decode unit)221、デコードユニット221によりデコードされた1つあるいはそれより多くのインストラクションを実行するように形成された少なくとも1つの実行ユニット(execute unit)231、メモリアクセスを実行するように形成された少なくとも1つのメモリユニット241、そしてメモリ130から取得されたデータを実行ユニット231内にライトバックするように形成された少なくとも1つのライトバックユニット(write back unit)251を含むことができる。ヒット/ミス表示レジスタまたはバッファ135は、フェッチユニット211によってフェッチされたインストラクションによるI−キャッッシュへのアクセスの結果、ヒットあるいはミスを表示するために提供されることができる。
パイプラインは矢印242を用いて機能的に示されているTLBアクセスポイント242を含むことができ、ここで1つあるいはそれより多いデータアクセスインストラクションはアドレス変換情報に関して探索するためにTLB122をアクセスすることができる。所望のアドレス変換情報がTLB122内に存在する場合、TLB122はTLBヒット信号を発生することができる。アドレス変換情報はTLB122から取得されることができ、そしてDキャッシュ117に送られることができる。データバッファおよび/あるいはアドレスバッファ(図示せず)は、データに関しおよびアドレス変換情報に関し一時的記録を提供するために、Dキャッシュ117に結合されることができる。
TLB122は、TLB122に与えられたインストラクションによって要求されたデータの仮想アドレスに対するアドレス変換情報が、TLB122におけるエントリの何れかからミスされた場合、TLBミス信号を発生するように形成されている。インストラクションはフェッチユニット211によってIキャッシュ127からフェッチされることができ、デコードユニット221によってデコードされ、そして実行ユニット231によって実行されているプロセスの中にあることができる。
TLBミス信号に応じて、通常の実行はミスが発生した点においてパイプラインをストールすることであった。TLBミス信号の原因となった仮想アドレスを有しているインストラクションは、まさに停止してそして待つ(sit and wait)ことができ、アドレス変換情報が欠けているためにパイプラインにおける次のステージに進むことが不可能となる。このことが発生する一方で、ミスが発生しているポイント上部のすべてのステージは、著しい非効率の結果として、待たなければならないであろう。代わりにTLBミスを生じさせたインストラクションは、ストール(stall)およびリフェッチ(refetch)されることなく、フラッシュ(flush)されることができる。このプロセスは多数のフラッシュを要求する同じ命令に関し、多数のミスの原因となるかもしれず、これは結果的に待ち時間(latency)および非能率性(inefficiency)を増加させることになるであろう。
図2に図示されたプロセッサ100の実施例において、TLB122からのTLBミス信号に応じて、すぐにパイプラインをストールすることなしに、TLBコントローラ140がTLB再ロードを開始するように形成されている。TLB再ロードプロセスは所望のアドレス変換情報を決定するために開始される。
プロセッサ100は、パイプラインの上部において(即ち、図2における開始ステージ210において)TLBミスの原因となったインストラクションの再挿入を生じさせる、ミスしているインストラクションをフラッシュしそしてリフェッチする。TLB再ロードの開始およびミスしているインストラクションのフラッシュ/リフェッチは、実質的に並行して実行され、そして直ちにパイプラインをストールすることはない。完成されるべきTLB再ロード処理を待つためパイプラインをストーリングする代わりに、流れる(flow)ことの可能なものを流してしまうため、プロセッサ100はインストラクションをフラッシュし、続いてインストラクションをリフェッチする。最初のTLBミス信号の元となったインストラクションは、第2の時間において、このようにしてパイプラインの連続したステージを通過し、そしてTLB再ロードプロセスが完了するまでTLBアクセスポイント上のパイプラインステージにおいて保持されるであろう。
プロセッサ100はさらに、TLB再ロードが完成されるまで、TLBアクセスポイント242の上のパイプライン内のポイントにおいてリフェッチされたインストイラクションを保持するように形成される。
TLB再ロードプロセスの期間中TLB再ロードメカニズム(TLB reload mechanism)170はメモリ130にアクセスすることができ、TLBミスの原因となったインストラクションの仮想アドレスに関するアドレス変換情報をメモリ130内のページテーブル120から取得し、そして取得したアドレス変換情報をTLB122に書き込む。1またはそれより多いより高いレベルのTLB(図示せず)が提供されるプロセッサの実施例において、TLB再ロードメカニズム170は、物理メモリ130へアクセスする前に、より高いレベルのTLB(最も低レベルのTLBからの出発しそして、TLBの連続的に増加していくレベルへと推移させる)に最初にアクセスすることができる。
一度TLB再ロードメカニズムが完成されると、プロセッサ100はTLBアクセスポイント上でのパイプラインに保持されるであろうリフェッチされたインストラクションをリリース(release)する。メモリ130から取得されたアドレス変換情報は今までにTLB122のなかに書き込まれ、TLB122は今やリフェッチされたインストラクションの仮想アドレスに関する所望のアドレス変換情報を含む。従って、次回のインストラクション(本来TLBミスの原因となる)はTLB122にあたえられ、TLBミスの代わりに、TLBヒットが生ずるであろう。リフェッチされたインストラクションはこのように、2度目あたりに、TLBミスを発生しないことができる。
プロセサ100は、所定の回数(predetermined number of times)に関してそしてそれより多くなく、パイプラインの上部にインストラクション(最初のTLBミスの原因となった)を再挿入するように形成されることができる。プロセッサ100の一つの実施例において、所定の回数は1とすることができる。
図3はTLBミスに対応している方法300の流れ図である。ステップ302において、TLBミス信号はインストラクションの仮想アドレスに関するアドレス変換情報をルックアップするためにTLBにアクセスしたインストラクションに応答して受信される。TLBミス信号は例えばプロセッサのCPUの内のまたは近くのTLBコントローラによって、またはCPUの内の何か他のコントロールレジスタによって受信されることができる。TLBミス信号は、インストラクションの仮想アドレスに関する所望のアドレス変換情報のTLB122における欠如を示す。
ステップ304において、アドレス変換情報をメモリあるいはより高いレベルのTLBのいずれかに要求することによって、直ちにパイプラインをストールすることなしに、TLB再ロードが開始される。ステップ306において、TLBミス信号に起因するインストラクションは、実質的にTLB再ロードプロセスと並行してフラッシュされそしてリフェッチされる。ステップ308において、仮想アドレスに対する所望のアドレス変換情報は、メモリからあるいはより高いレベルTLBから取得され、そして取得されたアドレス変換情報はTLBのなかに書き込まれる。ステップ310および311において、リフェッチされたインストラクションは、TLB再ロードプロセスが完了するまで、TLBアクセスポイント上のパイプラインの上方のポイントに保持される。最後に、ステップ312において、リフェッチされたインストラクションがリリースされ、いったんTLB再ロードプロセスが完了する。所望のアドレス変換情報がステップ306においてTLBに書き込まれるため、TLBミスはもはや発生しない。
要するに、装置および方法は、直ちにパイプラインをストーリングすることなしに、TLBミスに応答することに関して記述されてきている。TLB再ロードはTLBミスに応答して直ちにパイプラインをストーリングすることなしに開始され、そしてTLBミスに起因するフラッシュおよびリフェッチは、TLB再ロードプロセスと並行して実行される。リフェッチされたインストラクションは、TLB再ロードプロセスが完了するまで、TLBアクセスポイントの上部のパオプラインにおけるポイントに保存される。インストラクションに対する必要不可欠のアドレス変換情報はTLB再ロードの期間中TLBの中に書き込まれている故に、リフェッチされたインストラクションはリリースされることができ、そしてもはやTLBミスの原因とはならない。
開示された実施例に関する以上の記載は、この技術分野におけるいかなる熟練者についても、上で述べられたシステムを作成しあるいは使用することを可能とするために提供される。これらの実施例に関する種々の変更は当業界における熟練者にとって容易であることが明白であり、そしてこの中に明確にされた一般的原理はこの中に開示された発明の概念から離れることなしに他の実施例に適用することが可能である。したがって本発明はこの中に示された実施例に限定することを意図するものではないが、請求項に一致する全体的範囲と一致されるべきであり、ここで個々の構成要素についての基準は、特にそのように記述するものでない場合、「1つあるいはそれより多く」ではなく「1つそしてただ1つ」を意味することを意図するものでない。この技術分野における熟練者に知られまたは後に知られるようになる、この開示の全体に亘って記載された種々の実施例の構成要素と構造的にそして機能的に同等のものの全ては、参照によってここに明確に組み込まれ、そして請求項により取り込まれることが意図されるものである。さらに、ここに開示されないものは、かかる開示が請求項の中に明示的に開示されているかどうかにかかわらず、公衆に対し確保されることが意図されるものである。請求項の構成要素は、この構成要素が「means for」なる語句を用いて明確に記載されているのではない場合には、または方法の請求項の場合において構成要素が「step for」なる語句を用いて明確に記載いるのではない場合には、米国特許112条6段落の条項に基づいて解釈されるものではない。
図1は仮想メモリシステムにおいて動作をするTLBを図的に示す。 図2はパイプラインをストールすることなしにTLBミス信号に応じてTLB再ロードプロセスを開始するように配置されたTLBコントローラを有するパイプラインプロセッサの概要の図である。 図3はTLBミスに反応する方法のフロー線図である。

Claims (22)

  1. 多段パイプラインを有するプロセッサであって、該プロセッサは、
    仮想アドレスが物理アドレスに変換されることを可能とするアドレス変換情報を記録するように形成されている変換索引バッファ(TLB)と、なお、TLBはさらに、TLBに対し与えられるインストラクションの仮想アドレスがTLBからミスしている場合は、TLBミス信号を発生するように形成されており、そして
    TLBミス信号に対応して、直ちにパイプラインをストーリングすることなしに、TLB再ロードを開始するように形成されているTLBコントロール回路と
    を含み、
    ここで、プロセッサはミスしている仮想アドレスを有するインストラクションをフラッシュし、そしてリフェッチするように形成されている
    プロセッサ。
  2. パイプラインは、そのポイントで一つあるいはそれより多くのインストラクションがTLBにアクセスすることを可能にされるTLBアクセスポイントを含み、そしてプロセッサはさらにTLB再ロードが完了するまで、TLBアクセスポイント上にリフェッチされたインストラクションを保持するように形成されている、請求項1記載のプロセッサ。
  3. プロセッサはさらに、パイプラインの最初のステージにおいてインストラクションを再挿入によりインストラクションをリフェッチするよう形成されている、請求項1記載のプロセッサ。
  4. プロセッサはさらに所定の回数よりも多くないようにパイプラインの初期ステージにおいてインストラクションを再挿入するように形成されている、請求項3記載の装置。
  5. 所定の回数数は1である、請求項4記載のプロセッサ。
  6. さらに複数のページ内にデータを記録するように形成されたメモリを含む、請求項1記載の装置。
  7. さらにメモリ内に記録されるデータのサブセットを記録するように形成されたデータキャッシュを含む、請求項6記載の装置。
  8. メモリはさらに複数のインストラクションを記録するように形成されている、請求項6記載の装置。
  9. さらに、メモリ内に記録されたインストラクションのサブセットを記録するように形成されたインストラクションキャシュを含む、請求項8記載のプロセッサ。
  10. TLBコントロール回路はさらに、TLB再ロードの期間中に、ミスしている仮想アドレスに関するアドレス変換情報をメモリから取得し、そしてアドレス変換情報をTLBの中に書き込むように形成されている、請求項6記載のプロセッサ。
  11. 複数のページの夫々の1つは物理ページアドレスを有し、そしてTLBに含まれるアドレス変換情報は仮想アドレスが複数のページの物理ページアドレスに変換されることを可能とする、請求項6記載のプロセッサ。
  12. TLBは少なくとも一個のデータTLB(DTLB)、インストラクション−TLB(ITLB)、および統合されたTLB(UTLB)を含む、請求項1記載のプロセッサ。
  13. マルチステージパイプラインは、少なくともフェッチステージ、デコードステージ、実行ステージ、メモリアクセスステージおとびライトバックステージを含む、請求項1記載のプロセッサ。
  14. さらに、インストラクションレジスタから1つあるいはそれより多くのインストラクションをフェッチするように形成された少なくとも1つのフェッチユニットと、
    フェッチユニットによってフェッチされた1つあるいはそれより多くのインストラクションをデコードするように形成された少なくとも1つのデコードユニットと、そして
    デコードユニットによってデコードされた1つあるいはそれより多くのインストラクションを実行するように形成された少なくとも1つの実行ユニットと
    を含む、請求項10記載のプロセッサ。
  15. マルチステージパイプラインを有するパイプライン化されたプロセッサにおいてTLBを動作させる方法であって、この方法は
    TLBからTLBミス信号を受信すること、なおTLBミス信号はアドレス変換情報のTLB内においてインストラクションの仮想アドレスの欠落を示しており、
    TLBミス信号に応じて、直ちにパイプラインをストーリングすることなくTLBの再ロードを開始すること、
    インストラクションをフラッシングすること、そして
    インストラクションをリフェッチングすること
    を含む方法。
  16. パイプラインはそこで1つあるいはそれより多くのインストラクションがTLBにアクセスすることが可能であるTLBアクセスポイントを含み、そしてさらに、TLB再ロードが完了するまで、リフェッチされたストラクションをTLBアクセスポイント上で保持する動作を含む、請求項15記載の方法。
  17. インストラクションをリフェッチングする動作は、パイプラインの初期ステージにおけるインストラクションの再挿入を含む、請求項15記載の方法。
  18. インストラクションをパイプラインの初期ステージにおいて再挿入する動作は、パイプラインの初期ステージにおいて所定の回数を超えることなく、インストラクションを再挿入することを含む、請求項17記載の方法。
  19. 所定の回数は1である、請求項18記載の方法。
  20. プロセッサはメモリを含み、そしてさらにTLB再ロードの期間中に、メモリから仮想アドレスに関するアドレス変換情報を取得する動作と、そしてアドレス変換情報をTLB内に書き込む動作を含む、請求項15記載の方法。
  21. プロセッサは、そこからTLBミス信号が受信されるTLBに比較して、より高いレベルのTLBである少なくとも1の付加的なTLBを含み、そしてより高いレベルのTLBから仮想アドレスに関するアドレス変換情報の取得を実行することをさらに含み、そしてTLBにアドレス変換情報を書き込むことを含む、請求項15記載の方法。
  22. パイプラインは少なくともフェッチステージ、デコードステージ、実行ステージ、メモリアクセスステージおよびライトバックステージを含む、請求項15記載の方法。
JP2008551562A 2006-01-20 2007-01-22 変換索引マニピェレーション Expired - Fee Related JP5329234B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/336,264 2006-01-20
US11/336,264 US7721067B2 (en) 2006-01-20 2006-01-20 Translation lookaside buffer manipulation
PCT/US2007/060813 WO2007085009A1 (en) 2006-01-20 2007-01-22 Translation lookaside buffer manipulation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012129502A Division JP2012230683A (ja) 2006-01-20 2012-06-07 変換索引マニピュレーション

Publications (3)

Publication Number Publication Date
JP2009524166A true JP2009524166A (ja) 2009-06-25
JP2009524166A5 JP2009524166A5 (ja) 2011-11-10
JP5329234B2 JP5329234B2 (ja) 2013-10-30

Family

ID=38091746

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008551562A Expired - Fee Related JP5329234B2 (ja) 2006-01-20 2007-01-22 変換索引マニピェレーション
JP2012129502A Pending JP2012230683A (ja) 2006-01-20 2012-06-07 変換索引マニピュレーション

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012129502A Pending JP2012230683A (ja) 2006-01-20 2012-06-07 変換索引マニピュレーション

Country Status (6)

Country Link
US (1) US7721067B2 (ja)
EP (1) EP1974255B1 (ja)
JP (2) JP5329234B2 (ja)
KR (1) KR100974775B1 (ja)
CN (1) CN101375245B (ja)
WO (1) WO2007085009A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015060499A (ja) * 2013-09-20 2015-03-30 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation
US20070180157A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation Method for cache hit under miss collision handling
US20070180158A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation Method for command list ordering after multiple cache misses
US7809893B2 (en) * 2007-07-12 2010-10-05 Apple Inc. Method and apparatus for refetching data
US8433855B2 (en) * 2008-02-15 2013-04-30 International Business Machines Corporation Serializing translation lookaside buffer access around address translation parameter modification
US9569349B2 (en) * 2008-12-19 2017-02-14 Ati Technologies Ulc Method and apparatus for reallocating memory content
JP5347024B2 (ja) * 2009-06-24 2013-11-20 パナソニック株式会社 メモリアクセス制御装置、集積回路、メモリアクセス制御方法及びデータ処理装置
US10515671B2 (en) 2016-09-22 2019-12-24 Advanced Micro Devices, Inc. Method and apparatus for reducing memory access latency
US10127159B1 (en) * 2017-07-13 2018-11-13 International Business Machines Corporation Link consistency in a hierarchical TLB with concurrent table walks
US11061822B2 (en) * 2018-08-27 2021-07-13 Qualcomm Incorporated Method, apparatus, and system for reducing pipeline stalls due to address translation misses
CN114827076B (zh) * 2022-06-30 2022-09-13 沐曦集成电路(上海)有限公司 一种基于地址翻译单元的地址返回方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076153A (en) * 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6745297B2 (en) * 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076153A (en) * 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015060499A (ja) * 2013-09-20 2015-03-30 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム

Also Published As

Publication number Publication date
KR100974775B1 (ko) 2010-08-06
KR20080095253A (ko) 2008-10-28
WO2007085009A1 (en) 2007-07-26
US7721067B2 (en) 2010-05-18
EP1974255B1 (en) 2018-08-22
US20070174584A1 (en) 2007-07-26
CN101375245A (zh) 2009-02-25
JP5329234B2 (ja) 2013-10-30
CN101375245B (zh) 2013-05-01
EP1974255A1 (en) 2008-10-01
JP2012230683A (ja) 2012-11-22

Similar Documents

Publication Publication Date Title
JP5329234B2 (ja) 変換索引マニピェレーション
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US20070186050A1 (en) Self prefetching L2 cache mechanism for data lines
US20090006803A1 (en) L2 Cache/Nest Address Translation
JP2008545199A (ja) メモリ内の同じページに対する多数の変換ルックアサイド緩衝器へのアクセスの防止
US7680985B2 (en) Method and apparatus for accessing a split cache directory
JPH07200399A (ja) マイクロプロセッサ、およびマイクロプロセッサにおいてメモリにアクセスするための方法
US20070094476A1 (en) Updating multiple levels of translation lookaside buffers (TLBs) field
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
US5938761A (en) Method and apparatus for branch target prediction
US20080162819A1 (en) Design structure for self prefetching l2 cache mechanism for data lines
TWI579695B (zh) 對處理器的快取進行清除的方法以及該處理器
TWI774474B (zh) 處理器電路以及資料處理方法
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
JP4037806B2 (ja) キャッシュメモリ装置
WO2009000702A1 (en) Method and apparatus for accessing a cache
TWI606393B (zh) 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法
JP4796580B2 (ja) フェッチ・バーストを用いて情報をキャッシュ・モジュールに与える装置及び方法
JP2001344152A (ja) キャッシュメモリ装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110816

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110823

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20110921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110922

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130724

R150 Certificate of patent or registration of utility model

Ref document number: 5329234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees