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