(57)【特許請求の範囲】
【請求項１】
パイプライン化されたプロセッサ内の電力消費の削減方法において、
前記パイプライン化されたプロセッサの実行の最中に、命令を記憶しているキャッシュに分岐命令を配置するのに先立って、前記分岐命令に関連付けられた分岐命令アドレスを含むメモリページ中に前記分岐命令のターゲットアドレスが配置されているか否かを検出することと、ここにおいて、前記検出することはメモリインタフェースと、前記キャッシュの中間に位置するプリ復号器によって実行され、前記検出することは、検出された状態を表すインジケータを生成する、ここにおいて、前記インジケータは前記キャッシュに記憶され、前記キャッシュ中で前記分岐命令と関連づけられる、
前記分岐命令の第２回の実行に先立って、命令実行パイプラインに、前記分岐命令と前記分岐命令に関連付けられた前記インジケータを前記キャッシュから読み出させることと、および、
前記インジケータが、前記分岐命令に関連付けられた前記分岐命令アドレスを含む前記メモリページ中に前記分岐命令の前記ターゲットアドレスが配置されている旨を表示する場合には、前記ターゲットアドレスから一個の命令をフェッチする際に一つのトランスレーションルックアサイドバッファ（ＴＬＢ）へのアクセスを抑制することと、
を備える方法。
【請求項２】
前記分岐命令に関連付られた分岐ターゲット同一ページビット値を決定すること、ただし、前記分岐ターゲット同一ページビット値は、前記分岐命令に関連づけられたインジケータに基づくことと、および、
前記分岐ターゲット同一ページビット値を前記キャッシュに記憶することと、
を更に備える、請求項１記載の方法。
【請求項３】
前記ターゲットアドレスから一つの命令をフェッチする際に一つのＴＬＢアクセスを抑制することが、前記ＴＬＢを無効化することを備える請求項１記載の方法。
【請求項４】
更に、前記分岐ターゲット同一ページビットに応じて、該ＴＬＢの以前の出力を保持する一つのレジスターに対する一つの更新を不許可にすることを備える請求項３記載の方法。
【請求項５】
前記分岐命令に関連付けられた分岐命令アドレスを含むメモリページ中に前記分岐命令のターゲットアドレスが配置されているか否かを検出することが、
前記分岐命令のターゲットアドレスを計算することと、
前記分岐命令のターゲットアドレスに関連付けられた第１のページ番号部分を、前記分岐命令アドレスに関連付けられた第２のページ番号部分と比較することと、
前記第１のページ番号部分と前記第２のページ番号部分とが同一のページ番号値を有する場合に、同一ページ状態を検出することと、
を備える請求項１記載の方法。
【請求項６】
前記同一ページ状態を検出することが、
前記第２のページ番号部分を前記第１のページ番号部分から減算し、第１の結果を生成することと、
前記第１の結果に対してリダクションOR演算を実行し、第２の結果を生成することと、
前記第２の結果をインバートすることと、
を備える請求項５記載の方法。
【請求項７】
前記分岐命令のターゲットアドレスを計算することが、前記分岐命令アドレスに分岐変位を加算することを備える請求項５記載の方法。
【請求項８】
前記分岐命令のターゲットアドレスを計算することが、前記分岐命令から前記ターゲットアドレスの一部を取り出すことを備える請求項５記載の方法。
【請求項９】
前記分岐命令のターゲットアドレスを計算することが、更に、前記ターゲットアドレスを拡張し、前記ターゲットアドレスをアドレス・バスにアラインすることを備える請求項８記載の方法。
【請求項１０】
前記分岐命令アドレスを計算することが、分岐ライン索引をラインフィルアドレスに加算することを備える請求項５記載の方法。
【請求項１１】
前記分岐命令が、プログラムカウンター（PC）相対分岐命令または絶対アドレスの分岐命令を備える請求項１記載の方法。
【請求項１２】
抑制することが、次の命令の計算のクリティカルパスから前記分岐命令のターゲットアドレスと前記分岐命令アドレスとの比較を取り除くことを備える請求項１記載の方法。
【請求項１３】
パイプライン化されたプロセッサ内の電力消費の削減方法において、
パイプライン化されたプロセッサの実行の最中に、命令を記憶しているキャッシュに分岐命令を配置するのに先立って、前記分岐命令に関連付けられた分岐命令アドレスを含むメモリーページ中に前記分岐命令のターゲットアドレスが配置されているか否かをメモリインタフェイスと前記キャッシュの中間に位置するプリ復号器によって検出することと、
前記キャッシュ中で前記分岐命令と関連付けられる、インジケータを前記キャッシュに記憶することと、
前記インジケータに応じて、前記分岐命令の最初の実行の期間内に前記ターゲットアドレスをフェッチする際に、ＴＬＢアクセスを抑制する手段が、一つのＴＬＢアクセスを抑制することと、
前記分岐命令の第２回目の実行に先立って、命令実行パイプラインが前記分岐命令とそれに関連付けられた前記インジケータを前記キャッシュから読み出すことと、
前記インジケータに応じて、前記分岐命令の２回目の実行の期間内に前記ターゲットアドレスをフェッチする際に、ＴＬＢアクセスを抑制する手段が、一つのＴＬＢアクセスを抑制することと、
を備える方法。
【請求項１４】
前記インジケータを記憶することが、分岐ターゲット同一ページビットを記憶することと、
前記記憶された分岐ターゲット同一ページビットを前記分岐命令に関連付けることと、
を備える請求項１３記載の方法。
【請求項１５】
更に、前記キャッシュに前記分岐命令を記憶することと、
前記分岐命令の前記２回目の実行に先立って、前記分岐命令と前記分岐ターゲット同一ページビットを前記キャッシュから読み出すことと、
を備える請求項１４記載の方法。
【請求項１６】
前記ＴＬＢアクセスを抑制することが、前記ＴＬＢを無効化することを備える請求項１３記載の方法。
【請求項１７】
プロセッサにおいて、
命令とプリ復号情報を記憶するように動作可能な命令キャッシュと、
メモリインタフェイスと前記命令キャッシュの中間に位置し、かつ前記命令を部分的に復号して前記プリ復号情報を前記命令キャッシュに置くように構成されたプリ復号器に含まれるページ居留検出ロジックと、ここにおいて、前記ページ居留検出ロジックは、分岐命令を前記命令キャッシュに記憶するのに先立って、前記分岐命令のターゲットアドレスが前記分岐命令に関連付けられた分岐命令アドレスを含むメモリページに配置されていることを表すインジケータであって、前記プリ復号情報とともに前記命令キャッシュに記憶され、前記命令キャッシュ中で前記分岐命令と関連付けられる、インジケータを生成するように動作可能である、
前記分岐命令の第２回目の実行に先立って、前記分岐命令とそれに関連付けられた前記インジケータを前記キャッシュから読み出す命令実行パイプラインと、
命令のフェッチに際してメモリーアクセス許可情報を生成するように動作可能な一つのＴＬＢであって、前記分岐命令の実行の期間内に前記ターゲットアドレスに位置する一つの命令をフェッチするに際して、前記インジケータの検出動作に応じて、ＴＬＢアクセスを抑制する手段によって抑制されるＴＬＢと、
を備えるプロセッサ。
【請求項１８】
プロセッサにおいて、
前記プロセッサの外部に位置し、複数の論理ページを含む、メモリをアクセスするメモリインタフェイスと、
前記メモリインタフェイスとデータ転送関係にあり、複数の命令を記憶するように動作可能である、キャッシュメモリと、
前記メモリインタフェイスと前記キャッシュメモリの中間に配置されたプリ復号器と、ここにおいて、前記プリ復号器は、分岐命令を前記キャッシュメモリに記憶するのに先立って、前記分岐命令のターゲットアドレスを計算するように動作可能であり、さらにプリ復号情報を前記キャッシュメモリに記憶するように適合され、前記プリ復号情報は、前記分岐命令を含む一の論理ページに前記計算されたターゲットアドレスが配置されているか否かを表し、前記キャッシュメモリ中で前記分岐命令と関連付けられている、
前記分岐命令の第２回目の実行に先立って、前記分岐命令とそれに関連付けられた前記プリ復号情報を前記キャッシュメモリから読み出す命令実行パイプラインと、
前記複数の論理ページの許可属性を管理するように動作可能な一つのＴＬＢであって、前記分岐命令の実行の期間内に前記ターゲットアドレスに位置する最初の命令をフェッチするに際して、ＴＬＢアクセスを抑制する手段によって、前記プリ復号情報に応じてＴＬＢに対する特定の許可属性検査アクセスが選択的に抑制されるＴＬＢと、
を備えるプロセッサ。
【請求項１９】
更に、前記分岐命令および前記プリ復号情報を前記キャッシュメモリから読み出すように動作可能な命令実行パイプラインを備える請求項１８記載のプロセッサ。
【請求項２０】
前記ＴＬＢへのアクセスは、前記ＴＬＢを無効化することによって抑制される請求項１８記載のプロセッサ。
【請求項２１】
前記ＴＬＢへのアクセスは、次の命令の計算のクリティカルパスから前記分岐命令のターゲットアドレスと前記分岐命令アドレスとの比較を取り除くことによって抑制される請求項１７記載のプロセッサ。
【請求項２２】
前記分岐命令は、プログラムカウンター（PC）相対分岐命令または絶対アドレス分岐命令を備える請求項１７記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にはプロセッサの分野に関し、特に、分岐ターゲットアドレスが分岐命令アドレスまたは分岐命令それ自体から決定できるページ内分岐のためのTLBアクセスを抑制することにより、プロセッサ内の電力消費を削減する方法に関する。
【背景技術】
【０００２】
可般型電子デバイスは現代生活においてユビキタス(ubiquitous)な装具となっている。可般型電子デバイスにおける二つの過酷な動向は、増大する機能とサイズの小型化である。増大する機能は増大する計算パワー、特に更に高速でより強力なプロセッサを要求する。
【０００３】
より高速なプロセッサを要求する先進的な特徴と機能を提供するのと同様に、可般型電子デバイス自身は大きさと重量において縮小し続ける。この動向に最も大きく影響しているものは、プロセッサ内における、プロセッサに電力を供給する電池と他の電子部品の減少するサイズである。電池の技術の進歩が部分的には問題を埋め合わせているものの、電池の減少するサイズは可般型電子デバイスの電子部品における電力の見込み消費量(budget)、特にプロセッサによって使われる電力の削減要求を課している。
【０００４】
従って、性能向上と電力消費の減少の一方または両者を実現するプロセッサの改良は可般型電子デバイスのような多くのアプリケーションにとって望ましい。現代のプロセッサはメモリー階層構造、即ち、高速で高価な小さい量のメモリーをプロセッサに近接させ、大きい量のより低速で安価なメモリーをプロセッサから、より幾分か離して配置してバックアップする構造を一般的に採用している。大きなメイン・メモリーは一般的にページと呼ばれる複数の論理的な単位に分割される。一のページの中の全てのデータ又は命令は、共通して同一の属性を持ち、その属性は共通の特性を定義し、許可(permission)およびそれと同様なものを介してアクセスを制限する。該ページ属性は典型的にはトランスレーションルックアサイドバッファー(TLB:Translation Lookaside Buffer)に格納される。一般的に、プロセッサは、命令フェッチの都度、プログラムが、命令の実行とアクセスの許可(permission)を持っているかを検証するために、TLBを経由して命令アドレスを渡す。
【０００５】
TLBにおいて許可(permission)のような属性を検査することは電力を消費する。一つのページ上の各々の命令は同じ属性、従って同じ許可（permission）を持っているので、一旦当該ページ上の何れか一つの命令がTLBを通して検証されれば、同一ページ上の他の全ての命令はTLB属性を検査することなくフェッチされることが可能である。例えば、以前にTLB属性が検査された命令から順番に実行される複数の命令について、当該順番に実行される命令がページ境界を横切るまで、TLB属性の検査を回避することが当該技術分野において既知である。
【０００６】
同様に、一つのページから去ることがない分岐ターゲットについてのTLB属性検査を回避することにも利点がある。分岐ターゲットアドレスの計算と次の命令をフェッチすべき分岐ターゲットアドレスを選択することは典型的には一の分岐命令のクリティカルパスであり、マシンサイクル時間（machine cycle time）を決定する上での制限要因である。分岐ターゲットアドレスが命令アドレスと同じページに存在するならば、該ターゲットアドレスのTLB属性の検査は回避されてもよい。しかしながら、分岐ターゲットアドレスがTLBにより検査された最後のアドレスと同じページに存在するか否かを判別するために、分岐ターゲットアドレスとTLBにより最後に検査されたアドレスとを比較することは、クリティカルパスに遅延を付加することになるため、サイクル時間を長くしてしまう。更に、各分岐命令を実行するたびごとに、計算が実行されなくてはならないため、同じページに存在すると判別されたターゲットアドレス群と命令アドレス群についてのTLB属性検査の回避により得られる電力消費が、該計算のために消費される余分な電力により相殺されてしまう。
【発明の開示】
【０００７】
[発明の概要]
分岐ターゲットアドレスが、分岐命令アドレスおよび分岐命令それ自身の何れか一方またはその両方によって決定されうるような分岐については、プリ復号器が分岐ターゲットアドレスを計算することが可能であり、該分岐ターゲットアドレスと分岐命令アドレスが同じメモリーページに存在するか否かを判別するために、該二つのアドレスを比較することが可能である。上記の条件を反映する分岐ターゲット同一ページビットは命令キャッシュに格納され、該分岐命令に関連付けられることが可能である。命令が実行される際に分岐が行われるならば、分岐ターゲットアドレスについての許可を検査するためのTLBアクセスは、分岐ターゲット同一ページビットに応じて抑制されることが可能である。
【０００８】
本発明は、パイプライン化されたプロセッサにおける電力消費を削減する方法に関する。パイプライン中の分岐命令を復号するのに先立って、PC相対アドレスまたは絶対アドレスの分岐命令のターゲットアドレスが分岐命令アドレスと同じメモリーページに存在することが検出される。その後、該ターゲットアドレスから命令をフェッチする際に、その検出に応じて、TLBアクセスが抑制される。
【０００９】
本発明は、プロセッサにおける電力消費の削減方法にも関連する。PC相対アドレスまたは絶対アドレスの分岐命令のターゲットアドレスが分岐命令アドレスと同じメモリーページに存在することが一旦検出される。該検出のインジケーターが格納される。該分岐命令の最初の実行期間内に該ターゲットアドレスをフェッチする際に、該インジケーターに応じて、TLBアクセスが抑制される。更に、該分岐命令の二回目の実行期間内に該ターゲットアドレスをフェッチする際に、該インジケーターに応じて、TLBアクセスが抑制される。
【００１０】
本発明は更に、プロセッサに関する。該プロセッサは、PC相対アドレスまたは絶対アドレスの分岐命令のターゲットアドレスが、分岐命令アドレスと同じメモリーページに存在することの表示を生成するページ居留検出ロジック（page residence detection logic）を含む。
【００１１】
更に該プロセッサは、該表示を格納するメモリ、および、該分岐命令の実行期間内に該ターゲットアドレスに位置する命令をフェッチする際に、該表示に応じてTLBが抑制されるような、命令フェッチに際してのメモリーアクセス許可情報を生成するTLBを含む。
【００１２】
本発明は更に、プロセッサに関する。該プロセッサは、該プロセッサの外部に位置するメモリーをアクセスするメモリーインターフェイスと、複数の論理ページとして構成されるメモリーを含む。該プロセッサは更に、メモリーインターフェイスとデータ転送関係にあり、複数の命令を格納するキャッシュメモリーを含む。該プロセッサは更に、メモリーインターフェイスとキャッシュメモリーの間に配置されるプリ復号器を含み、該プリ復号器は、PC相対アドレスまたは絶対アドレスの分岐命令をキャッシュメモリー中に格納するのに先立って、該分岐命令の分岐ターゲットアドレスを計算する。
【００１３】
[詳細な説明]
図１は、代表的なプロセッサ１０の機能ブロック図である。プロセッサ１０は制御ロジック１４に従って、命令実行パイプライン１２の中の複数の命令を実行する。該パイプラインは、複数のパイプステージ内に構成された多様なレジスターまたはラッチ１６、一または複数の算術論理ユニット（ALU）１８を含む。汎用レジスター（GPR）ファイル２０は、メモリー階層構造の頂点を備えるレジスター群を提供する。該パイプラインは、命令側トランスレーションルックアサイドバッファー（ITLB：Instruction-side Translation Lookaside Buffer）２４によって管理されるメモリーのアドレス指定と許可、および、任意的に、プリ復号器によって実行されるある初期復号処理と共に、命令キャッシュ２２から命令をフェッチする。データは、メインのトランスレーションルックアサイドバッファー（TLB：Translation Lookaside Buffer）２８によって管理されるメモリーのアドレス指定と許可と共に、データキャッシュ２６からアクセスされる。様々な実施例において、該ITLBは該TLBの一部の複製を備えることが可能である。代替的に、該ITLBと該TLBは統合されることが可能である。同様に、プロセッサ１０の様々な実施例においては、該命令キャッシュ２２とデータキャッシュ２６は統合されるまたは単一化されることが可能である。命令キャッシュ２２またはデータキャッシュ２６の何れか一方または両者を欠くことは、メモリーインターフェイス３０の制御の下でのメインの（チップ外の）メモリー３２へのアクセスを引き起こす。プロセッサ１０は、様々な周辺機器３６へのアクセスを制御する入出力（I/O）インターフェイス３４を含むことが可能である。当業者は、プロセッサ１０の数多くのバリエーションが可能であることを認識するであろう。例えば、プロセッサ１０は、命令キャッシュおよびデータキャッシュの何れか一方または両方のための第２階層キャッシュ（L2 cache: second-level cache）を含むことができる。更に、特定の実施例においては、プロセッサ１０において図示されている一または複数の機能ブロックを省略することが可能である。
【００１４】
多くのプログラムは、該プログラムを実行する計算機が、あたかも非常に大きな（理想的には無制限の）量の高速メモリーを持っているかのように書かれている。殆どの現代的なプロセッサは、その各々が異なる速度とコスト特性を持つメモリー種別の階層構造を採用することにより、上記の理想的条件をシミュレートする。上記階層構造における上記メモリー種別は、最上位における非常に高速で非常に高価なものから、段階的に、より低い階層における、より低速であるがより経済的な記憶装置種別まで様々に異なっている。典型的なプロセッサ・メモリー階層構造は、最上位におけるプロセッサ内のレジスター群（ゲート群）、それの背後における一または複数のチップ内キャッシュ２２、２６（SRAM）、場合によってはチップ外キャッシュ（SRAM）（図示なし）、メイン・メモリー３２（DRAM）、ディスク記憶装置（磁気記憶媒体）（図示なし）、および最下層におけるテープまたはCD（磁気または光学の記憶媒体）（図示なし）を備えることが可能である。殆どの可般型電子デバイスは、たとえ有るとしても限られたディスク記憶装置しか持っておらず、従ってメイン・メモリー３２（サイズが限定されている場合が多い）がメモリー階層構造の最下位の階層となる。
【００１５】
計算機メモリー階層構造においては、より下位の階層の各々は、より上位の階層に存在するデータの完全な（しかし場合によっては古くなった）複製を維持している。即ち、より上位の階層に格納されたデータはより下位の階層に格納されたデータを複写している。より小さい、より上位の階層の記憶装置は、より大きい、より下位の階層のメモリー内の多数の位置にマッピングすることができるので、階層構造内の階層間でアドレスを変換するためのマッピング方式が必要とされる。殆どのプロセッサは非常に大きな、概念的には連続した仮想アドレス空間において動作する。メイン・メモリー３２はハードウェアとシステムのパラメータによって制約される物理アドレス空間においてアクセスされる。プロセッサ・コアとメイン・メモリーの間に配置されたキャッシュ２２と２６は、完全に仮想アドレスだけで、または完全に物理アドレスだけで、または両者の組み合わせ（例えば、仮想インデックスと物理タグを使うことによるもの）によりアクセスすることが可能である。しかしながら、キャッシュの構成に関わらず、アドレスは結果的には仮想アドレス空間から物理アドレス空間へ変換されなくてはならない。
【００１６】
更に、多くのオペレーティング・システムは、各プログラムが命令セットアーキテクチャによって特定される全てのアドレス範囲を使うことが可能な別々の仮想アドレス空間をこれらのプログラムに与えることによって、プログラム同士を互いに切り離している。しかしながら、システムにおいて利用可能な実際の物理メモリーは、典型的には、仮想アドレス空間においてプログラムによってアドレス指定されるものよりも、サイズにおいて遥かに小さい。アドレスの仮想空間から物理空間へのマッピングは、プログラムが限られた物理メモリー内で走ることができるような方法で、限られた物理メモリーへのアクセスを管理するのに用いることができることが当該技術分野において広く知られている。
【００１７】
オペレーティング・システムによる、TLBのような特殊化されたメモリー管理ハードウェアと連携したメモリー管理は、プログラムを、お互いのデータを上書きすることから防ぐことができる。メモリー管理は更に、一のプロセスを他のプログラムのデータを読み出すことから防止することにより、セキュリティーを提供することができる。メモリー管理は、ユーザ・レベル・プログラムがスーパバイザ・レベルのデータ構造をアクセスすることを不許可とすることにより、信頼性を促進している。もしも、オペレーティング・システムの割り当てテーブルやパラメータ群のようなスーパバイザ・レベルのデータ構造が上書きされた場合、システムクラッシュが結果として生じる。仮想アドレス空間と物理アドレス空間の両者はページとして知られる単位に分割され管理される。許可属性は一般に各ページ単位でメモリー３２に割り当てられる。
【００１８】
TLB２８は、仮想メモリーアドレスから物理メモリーアドレスへの変換を行い、更に、仮想アドレスがマッピングされる物理メモリーページの許可の情報とその他の属性を維持する。ITLB２４は、上記と同様のことを命令に対して行う。物理的に索引付けされたキャッシュおよび物理的にタグ付けされたキャッシュの何れか一方または両者の場合、プロセッサ仮想アドレスは各々のキャッシュアクセスのたびに変換されなくてはならない。仮想的に索引付けされ、かつ、タグ付けされたキャッシュは各キャッシュアクセスのたびごとのアドレス変換を要さない。しかしながら、要求されたデータが存在するページに関連付けられた許可を検査するため、および、要求されている仮想アドレスにマッピングされた物理アドレスを得るために、プロセッサ１０がメモリー３２をアクセスするたびごとに、TLB２８は常に調べられる。これは、プログラムがそのページの実行許可を持っているかを検証するために、命令のフェッチについてITLB２４を検査することを含む。
【００１９】
関連する電力消費の節約を伴うITLB２４へのアクセス削減のために、幾つかの技法が当該技術分野において既知である。例えば、順次アクセスにおいては、ページ境界を横切るまで、全てのアクセスは同じページの中にあるであろう。順次アクセス検出はページサイズに依存する。メモリーアドレスは以下の表１に図示するごとく、ページ番号とページオフセットに論理的に分割される。
【表１】
0005231018.tif 000002
【００２０】
ページ番号はITLB２４によって変換される。ページオフセットは、仮想アドレスおよび物理アドレスについて同一であるページ内のオフセットである。即ち、ページオフセットビットは一般に変換されない。ページオフセットはページサイズ内のメモリーをアドレス指定するのに必要な数のビットを備える。例えば、４キロバイトのページを持つ３２ビットアドレスの場合、ページ番号はアドレスビット[31:12]を備え、ページオフセットはアドレスビット[11:0]を備える。
【００２１】
一連の順次アクセスの間のページ境界の横断を検出するために、ページ番号フィールドの最下位ビット（LSB）が監視される。上記の例においては、アドレスビット１２が順次アクセスの最中に反転した場合、プロセッサ１０はページ境界を横切ったと判定し、反転したアドレスビット１２を伴う最初のメモリーアクセスは、新しいページについてのアクセス許可を検査するためにITLBを介して変換される。
【００２２】
異なるページから命令をフェッチするために分岐するけれども、該フェッチされる命令のページ番号フィールドのLSB（即ち、ビット１２）が同一であるような分岐命令を突き止めようとすると、ページの横断は、より難しくなる。従って、ページ番号フィールドのLSBを監視することは、分岐命令によってページ境界が横切られた場合には不充分となる。分岐ターゲットアドレス（BTA：Branch Target Address）が計算される際、ページ番号に対応するビットフィールド、即ちBTA[31:12]は分岐命令アドレス（BIA：Branch Instruction Address）の対応するビット、即ちBIA[31:12]と比較することができる。二つのアドレスフィールドが同一であるならば、分岐ターゲットは分岐命令と同一のページ内に存在し、BTAに関する許可情報を得るためにITLB２４を調査する必要がない。何故なら、BTAの該許可はBIAに関するそれと同一だからである。
【００２３】
しかしながら、BTAをITLB２４に提示する前に、BTAの計算、および次の命令アドレスに関する無数の選択肢の中からBTAを選択することは、典型的にはプロセッサ・データフロー内におけるクリティカルタイミングパス（Critical Timing Path）となる。他の２０ビットの比較を実行することは、マシンサイクル時間の増加を必要とするかも知れず、その結果として、BTAとBIAが同一ページに存在する場合にITLB２４の検索を回避することで見込まれる電力の節約によって正当化される以上に性能を低下させることにつながる。
【００２４】
本発明の実施例によれば、分岐ターゲットアドレスが分岐命令それ自身のアドレスと同じメモリーページに存在する場合に、分岐ターゲットアドレスが、分岐命令アドレスおよび分岐命令それ自身の何れか一方または両者から決定され得る分岐命令について、ITLB２４へのアクセスが抑制される。本願において開示され、特許請求されているプロセッサと方法は、多数の分岐命令の実行についてのITLB24へのアクセスを抑制することによって電力消費を削減するものである。あるプログラムでは、４命令〜６命令ごとに分岐命令に遭遇する。よって、この様子は、それ単独で顕著な電力管理の改善を表している。
【００２５】
更に本発明は、分岐ターゲットアドレスが分岐命令アドレスまたは分岐命令それ自体から決定されうるような如何なる分岐命令に対しても、BTAとBIAの比較を一回だけ行うことにより電力の浪費を防ぐものであり、分岐命令が命令キャッシュ２２から実行されるたびごとにBTAとBIAの比較を行うのとは対照的である。最後に、本発明は、次の命令の計算と選択のクリティカルパスからBTAとBIAの比較を取り除くことにより、これらの電力節約をマシンサイクル時間に影響を与えることなく達成する。
【００２６】
パイプライン化されたプロセッサ１０において、プリ復号器２１を用いることが広く知られている。メイン・メモリー３２から命令がアクセスされる際に、該命令を検査することで、ある予備的な復号演算が実行されることが可能であり、該命令と共に、該命令に関するある結果情報が命令キャッシュ２２に格納されることが可能である。
【００２７】
命令がパイプライン１２に続けてフェッチされ復号される際に、プリ復号情報は、命令復号作業の幾らかを除くことにより、復号器の単純化を可能にするであろう。
【００２８】
本発明の一の実施例においては、分岐ターゲットアドレスが分岐命令アドレス又は分岐命令それ自体の何れか一方または両者から決定されるような分岐命令についての分岐ターゲットアドレス、即ちBTAを命令プリ復号器２１が計算する。プリ復号器２１はBTAを分岐命令アドレス、即ちBIAと比較し、「分岐ターゲット同一ページ」ビット４６（BTSP）を、該分岐命令および、場合によっては他のプリ復号情報４４と共に、命令キャッシュ２２に格納する。分岐命令が命令キャッシュ２２から続けてフェッチされ、（典型的には何度も）実行される場合、該BTSPビット４６はITLB２４を抑制し、ITLB２４が以前に提供した許可情報の更新を妨げる。
【００２９】
分岐ターゲットアドレスが分岐命令アドレス又は分岐命令それ自体の何れか一方または両者から決定されるような分岐命令は、プログラムカウンター（PC）相対分岐と絶対アドレス分岐を含む。PC相対分岐命令は該命令自身の一部である分岐変位（BDSP：branch displacement）フィールドを含む。PC相対分岐命令のBTAは該分岐命令のBIAにBDSPを加算することによって計算される。即ち、
BTA=BIA＋BDSP      式（１）
である。
【００３０】
絶対アドレス分岐命令は、該命令の一部であるフィールド中に分岐ターゲットアドレスの一部を含んでいる。このフィールドは典型的にはアドレス・バスのサイズまで拡張される必要があり、その後、BTAを生成するためにアドレス・バスにアラインされる。
【００３１】
図２は機能ブロック図の形で命令キャッシュ２２、ITLB２４、そしてプロセッサ１０のパイプライン１２の一部を図示している。命令キャッシュ２２内部で一の命令フェッチが失敗し、該命令がメイン・メモリー３２から取り出された場合（図１参照）、プリ復号器２１は該命令を命令キャッシュに置くのに先立って該命令を部分的に復号することが可能である。プリ復号器２１は、ラインフィルバッファ４０の中に含まれる複数の命令の集合をプリ復号処理することが可能である。プリ復号器２１は更に、LFAレジスター４２からラインフィルアドレスを受け取ることも可能である。これらのレジスター群はメモリーインターフェイス３０の一部（図１参照）を備えることが可能である。プリ復号器２１は当該技術分野において既知である。プリ復号器は命令を部分的に復号し、プリ復号ビット４４として図示されるように、該命令について部分的に復号された情報を命令キャッシュ２２に置くことが可能である。プリ復号された情報は例えば、可変長命令の長さを含むことが可能である。プリ復号ビット４４は命令を完全に復号する際に、パイプライン１２の中の復号ロジック４８を補助する。
【００３２】
本発明の一の実施例に従えば、PC相対アドレス又は絶対アドレスの分岐命令の分岐ターゲットアドレス（BTA）はプリ復号器２１によって計算され、該分岐命令の分岐命令アドレス（BIA）と比較される。該BIAは、以下の式に従って、ラインフィルアドレス（LFA）および分岐ライン索引（BLI：branch line index）から、またはキャッシュ・ライン（例示するなら、ラインフィルバッファの内容）の中の分岐命令のオフセットから計算されることが可能である。
【００３３】
BIA  ＝  LFA  ＋  BLI            式（２）
プリ復号器は更に、PC相対分岐命令から分岐変位（BDSP：branch displacement）を取り出し、式（１）に従ってBTAを計算し、一方、絶対アドレス分岐命令については、該命令それ自体の中のフィールドからBTAを形成する。BTAとBIAが同じメモリーページに存在するか否かが、上記両者のアドレス中のページ番号を備える部分同士を比較することにより確認される。例えば、４キロバイトのページサイズを持つ、３２ビットのメモリーシステムでは、ページ番号は上位の２０ビットを備える（表１参照）。分岐ターゲット同一ページビットは以下の式によって決定される（または、それは逆の意味を与えられるかも知れない）。
【００３４】
If(BTA[32:12]==BIA[32:12])then BTSP=1;   else   BTSP=0            式（３）
式（３）のハードウェア記述言語による一つの表現は、
BTSP = ~|(BTA[32:12] ‐ BIA[32:12])        式（４）
である。即ち、該二つのページ番号は、これらの数値的な差異がゼロである時に等しい。上記のゼロ検出は式（４）において一つのリダクションOR演算と一つのインバートにより表されている。
【００３５】
プリ復号器２１はBTSPビット４６をPC相対アドレスまたは絶対アドレスの分岐命令と該分岐命令と共に、命令キャッシュ２２に配置し、該ビット４６を該命令に関連付ける。BTAをレジスターの内容から獲得し又は計算する分岐命令（即ち、非PC相対アドレスまたは絶対アドレスの分岐命令）については、BTAが実際に生成される際に、パイプライン１２内での実行ステージよりも前には、BTAについて何も知ることができない。従って、非PC相対アドレスまたは絶対アドレスの分岐命令については、プリ復号器２１は、BTSPビット４６に強制して、ページ横断を表すことが可能であり、それは分岐が発生したと評価され、分岐ターゲット命令がフェッチされる場合に、ITLB２４へのアクセスを生成する。この事は、上記のような分岐についてアクセス許可が検査されることを保証する。
【００３６】
命令キャッシュ２２からPC相対アドレス又は絶対アドレスの分岐命令がフェッチされる際に、該命令に関連付けられたBTSPビット４６もフェッチされ、例えば、復号パイプステージラッチ５０（decode pipe stage latch 50）に格納される。これに続いて、ターゲットアドレスがフェッチされるに際して、該BTSPビット４６は、例えばBTAがITLB２４に提示される場合のイネーブル入力があった時点でITLB２４を抑制する。復号ラッチ５０内のBTSPビット４６に続く破断入りの線は、演算中において、BTSPビット４６が分岐命令と共にパイプラインを流れ下り、実行パイプステージ中のITLB２４のイネーブル入力に実際に提示される様子を表示している。パイプライン１２の特定のアーキテクチャはこの議論とは特に関係せず、従ってパイプライン１２のこれ以降のステージの詳細は図２からは省略してある。
【００３７】
ITLB２４を抑制することに加えて、BTSPビット４６は、ITLB２４から出力された属性を格納するXLTラッチ５２の更新を防止する。従って、分岐ターゲット命令のフェッチは、以前にラッチされた属性、即ち、同一メモリーページ内の以前の命令の属性に対応するものと同じものを使うことになる。
【００３８】
図２は、ITLB２４と命令キャッシュ２２の両者を索引付けしている仮想アドレスVA[32:0]を図示している。これは、仮想的に索引付けされタグ付けされた命令キャッシュ２２の場合である。代替的に、命令キャッシュは物理的に索引付けされ、タグ付けされることが可能であり、この場合においては、図２の破線で表示されるように、ITLB２４は仮想アドレスを物理アドレスPA[32:0]に変換し、命令キャッシュ２２に該物理アドレスを供給する。その他の代替事例としては、仮想的に索引付けられ、物理的にタグ付けされた場合において、両方のアドレス経路が存在することが可能である。
【００３９】
PC相対アドレス又は絶対アドレスの分岐命令についての分岐ターゲットアドレスの生成を行うことにより、そして、プリ復号器２１の内の分岐命令アドレスに対してページ比較を行い、その結果を命令キャッシュ２２に格納することにより、幾つかの方法で電力の浪費が抑えられる。第１に、分岐ターゲット命令が分岐命令それ自体と同じページからフェッチされる場合に、ITLB２４が許可の検査のためにアクセスされる必要がない。第２に、上記の計算を実行するための電力は一回だけ費やされる。該結果は、命令が実行されるたびごとに取り出されるために、命令キャッシュ２２内のBTSPビット４６の中に格納される。命令キャッシュについては高９０％におけるヒット率が一般的であるので、複数の機会はPC相対アドレス又は絶対アドレスの分岐命令が何度も実行されるであろうことである。単一の計算の結果を格納することは、命令を実行するたびごとに計算を実行することよりも、顕著な電力の節約となって現れる。実際、プリ復号器２１内でのアドレスの生成と比較を実行するのに、複数のサイクルが必要とされたとしても、該分岐命令が該キャッシュから何度も実行されることにより、該プロセスは依然として顕著な電力の節約という結果になる。最後に、BTAとBIAの比較は分岐ターゲットアドレスの生成と選択のクリティカルパスから取り除かれ、より短いサイクルタイムを可能とすることにより、性能を改善する。
【００４０】
当業者は、該プロセッサ１０が代表的なもののみを示していることを理解するであろう。プロセッサのアーキテクチャと設計の広範なバリエーションが存在し、本発明の技術的範囲の中において数多くのバリエーションが可能である。例えば、命令キャッシュ２２とデータキャッシュ２６は組み合わせることが可能であり、または唯一のキャッシュに一本化することができる。代替的に、一つ又は複数の追加的なキャッシュがキャッシュ２２および２６に対して階層的又は対等な関係において採用されることが可能である。同様に、ITLB２４はTLB２８と組み合わせることが可能であり、または、プロセッサはデータ側のためにDTLBを採用することが可能であろう。
【００４１】
本発明は本願において、特定の特徴、見地、および実施例について記載されているが、本発明の広範な技術的範囲に属する数多くのバリエーション、変形実施例およびその他の実施例が可能であり、従って、全ての該バリエーション、変形実施例および実施例は本発明の技術的範囲に属すると認められるべきである。従って、本実施例は全ての面において例示的であり、制限的でないと解釈されるべきであり、追加された請求項の均等範囲および手段から導かれる全ての変更はここに包含されるように意図されている。
【図面の簡単な説明】
【００４２】
【図１】パイプライン化されたプロセッサの機能ブロック図である。
【図２】ITLB（命令側トランスレーションルックアサイドバッファー：Instruction-side Translation Lookaside Buffer）、命令キャッシュ、および、プロセッサ・パイプラインの一部についての機能ブロック図である。
【符号の説明】
【００４３】
１０…プロセッサ、１２…命令実行パイプライン、１４…制御ロジック、１６…多様なレジスターまたはラッチ、１８…演算論理ユニット、２０…汎用レジスターファイル、２１…プリ復号器、２２…命令キャッシュ、２４…命令側トランスレーションルックアサイドバッファー、２６…データキャッシュ、２８…トランスレーションルックアサイドバッファー、３０…メモリーインターフェイス、３２…メイン・メモリー、３４…入出力インターフェイス、３６…周辺機器、４０…ラインフィルバッファ、４２…LFAレジスター、４４…プリ復号ビット、４６…分岐ターゲット同一ページビット、４８…復号ロジック、５０…復号パイプステージラッチ、５２…XLTラッチ
【図１】
0005231018.tif 000003
【図２】
0005231018.tif 000004