説明

変換索引マニピュレーション

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

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

【特許請求の範囲】
【請求項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記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2012−230683(P2012−230683A)
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−129502(P2012−129502)
【出願日】平成24年6月7日(2012.6.7)
【分割の表示】特願2008−551562(P2008−551562)の分割
【原出願日】平成19年1月22日(2007.1.22)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】