JPH08249178A - プロセッサのアネックス内において修飾ビットを形成する方法及び装置 - Google Patents

プロセッサのアネックス内において修飾ビットを形成する方法及び装置

Info

Publication number
JPH08249178A
JPH08249178A JP7333728A JP33372895A JPH08249178A JP H08249178 A JPH08249178 A JP H08249178A JP 7333728 A JP7333728 A JP 7333728A JP 33372895 A JP33372895 A JP 33372895A JP H08249178 A JPH08249178 A JP H08249178A
Authority
JP
Japan
Prior art keywords
register
address
annex
virtual
bit
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.)
Pending
Application number
JP7333728A
Other languages
English (en)
Inventor
Torenburei Maaku
トレンブレイ マーク
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08249178A publication Critical patent/JPH08249178A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

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

Abstract

(57)【要約】 【課題】アネックス構造内に仮想アドレスを使用してプ
ロセッサの処理速度を向上し、さらにはハードウェアの
コストを削減すること。 【解決手段】プロセッサのアネックス内において修飾ビ
ットを形成する方法及び装置を提供する。アネックス・
エントリ内のアネックス仮想アドレスを命令オペランド
仮想アドレスと比較する際に使用するアネックス・エン
トリの修飾ビットを形成する場合、各仮想アドレスが1
つの物理アドレス群及び同物理アドレス群に属する1つ
の物理アドレスをマップする。アネックス仮想アドレス
及び命令オペランド仮想アドレスの両方が1つの物理ア
ドレス群をマップする場合に修飾ビットを主張する。ア
ネックス仮想アドレス及び命令オペランド仮想アドレス
が異なる1つの物理アドレス群をそれぞれマップする場
合に修飾ビットの主張を取り消す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はパイプライン化した
スーパースカラ・プロセッサ、より詳細には完了ユニッ
ト・レジスタ・ファイル(Completion unit register f
ile)からの結果を対応する宛先レジスタへ書き込む前
に同結果を検索することに関する。
【0002】
【従来の技術及び発明が解決しようとする課題】初期の
一般的なマイクロプロセッサは中央演算処理装置(CP
U)を含む。CPUはメモリとの間のインターフェース
を提供し、さらには命令を連続的に順次実行し得る装置
を実現する。一般的に、命令実行は少なくとも4つの主
なステージ、即ち、命令及びオペランドのフェッチ、命
令の復号、実行、並びに宛先レジスタへの結果の書き戻
しに分割される。1つの一般的な命令の実行は1つのク
ロック・サイクルを要する。このため、前記した4つの
機能は同クロック・サイクルにおいてそれぞれ実施され
る。各ステージは自身の演算の完了以前に前のステージ
の結果を待つ必要がある。また、最も短いクロック・ピ
リオドは4つの全てのステージにおける最も長い伝搬遅
延によって決定される。
【0003】パイプラインの概念は各クロック・サイク
ルにおいて実施されるロジックの総数を削減することに
より最大クロック周波数を増加させる。これを促進すべ
く、例えば、第2のステージ及び第3のステージ間のイ
ンターフェースをクロックド・ラッチ(Clocked latche
s)を用いて分離し得る。最初の2つのステージ(フェ
ッチ及び復号)を1つのクロック・サイクルで実施可能
である。続いて、第2のクロック・サイクルにおいて、
最後の2つのステージ(実行及び書き戻し)を実施し得
る。フェッチの開始から書き戻しの終了までの合計時間
がほぼ等しいため、命令の総待ち時間は殆ど変わらな
い。しかし、命令実行を明確に区分された2つの部分に
分割することには大きな利点がある。即ち、スループッ
トを倍増できる。これはパイプライン化されたCPUが
2つの命令を同時に実行し得るという事実に基づく。1
つの命令の実行及び書き戻し中に、第2の命令のフェッ
チ及び復号が可能である。当然、4つのステージをそれ
ぞれ別のクロック・サイクルにおいて実施し、これによ
りスループットを増大すべくパイプラインの概念を拡大
できる。この結果、ロジックをN個のステージに分割す
ることにより、理論的にはスループットをN倍に増やせ
る。
【0004】命令実行を4つを越す数のパイプライン・
ステージに分割して、任意の1つのステージを通じて形
成される最大伝搬遅延を短縮し、これにより動作周波数
及びスループットを増加すべく、高度にパイプライン化
されたデザインでは4つのステージの全てまたは一部に
含まれるロジックが分割される。図1はスーパースカラ
・マイクロプロセッサ10を示す。
【0005】スーパースカラ・プロセッサ10は幾つか
の並列機能ユニット11を有している。幾つかの一般的
なスーパースカラ・インプリメンテーションは浮動小数
点、整数、分岐及びロード/ストアの各機能ユニット1
1を含む。一般的に、機能ユニット11には浮動小数点
演算または類似する複雑なオペレーションを行い得るユ
ニットが含まれる。各機能ユニット11による新たな命
令の実行をサイクル毎に開始可能にするとともに、これ
らの複雑なユニットを他のハードウェアと同一のクロッ
ク周波数にて動作させることが好ましい。これらの目的
を実現するためには、並列機能ユニット11のパイプラ
イン化が望ましい。最も複雑な機能ユニットにおける複
雑さ及び論理の分割は同機能ユニット11内に必要とさ
れるパイプライン・ステージの数を支配する。全ての機
能ユニット11が同一の待ち時間を有するとは限らな
い。4つの並列機能ユニット11のうち、浮動小数点ユ
ニットが最も複雑である。他の3種類の機能ユニット1
1は浮動小数点ユニットほど複雑ではない。従って、こ
れら3つの機能ユニット11は浮動小数点ユニットのパ
イプライン化に要するステージ数より更に少ないステー
ジ数でパイプライン化できる。全ての並列機能ユニット
11は最終ステージ12で併合される。最終ステージ1
2では、実行結果が対応する宛先レジスタに書き込まれ
る。
【0006】全ての並列機能ユニット11のパイプライ
ンが同数のステージでそれぞれ構成されていない場合、
幾つかの機能ユニット11の結果は他の機能ユニット1
1の結果より早く形成される。例えば、整数ユニットの
パイプライン化が2つのステージを要する一方で、浮動
小数点ユニットのパイプライン化が5つのステージを要
する場合、両方の命令が同時にディスパッチされたとし
ても整数ユニットの結果は浮動小数点ユニットの結果よ
り3クロック・サイクル早く形成される。同様に、新し
い命令は古い命令より早く終了できる。例えば、1クロ
ック・サイクルにおいて浮動小数点命令がディスパッチ
され、次のクロック・サイクルにおいて加算等の整数命
令がディスパッチされたとする。整数パイプラインが浮
動小数点パイプラインより3ステージ短い場合、浮動小
数点命令を最初にディスパッチしたとしても整数加算の
結果は浮動小数点の結果より2クロック・サイクル早く
形成される。この例において、整数加算は古い浮動小数
点命令より後にディスパッチされているため、同整数加
算は新しい命令といえる。
【0007】幾つかの新しい命令を幾つかの古い命令よ
り先に宛先レジスタへ書き込み可能にした場合、潜在的
な問題が発生する。例えば、新しい命令及び古い命令の
両方を同一の宛先レジスタに書き込む場合、プログラマ
は新しい命令の結果が古い命令の結果に対して上書きさ
れることを期待する。古い命令が新しい命令の結果に上
書きされた場合、意図する結果が意図する宛先に現れな
いため、プロセッサは逐次プログラムを正確に実行しな
い。従って、命令結果の書き戻し順序を維持することが
重要である。
【0008】図2において、短い機能ユニット・パイプ
ライン20は命令結果の逐次書き戻しを実現すべく余分
なパイプライン・ステージを備えることにより長くなっ
ている。この結果、全ての機能ユニットはディスパッチ
21から書き戻し22まで同一の待ち時間を有する。こ
の場合、短い機能ユニット・パイプライン20の末端に
は、幾つかの余分なステージ23が付加されている。余
分なパイプライン・ステージ23は業界において完了ユ
ニット・レジスタ・ファイルと称される先入れ先出し
(FIFO)バッファを効果的に形成する。以下、同バ
ッファをアネックスと称する。
【0009】短い機能ユニット20のパイプラインに対
して余分なステージ23を付加することにより、プログ
ラム実行及び書き戻しの順序が維持される一方で、別の
問題が発生する。図2に示す短い機能ユニット20が命
令順序の実行に使用し得る整数演算用ALU機能ユニッ
トであると仮定する。例えば、“add rs1,rs
2,rd”がレジスタrs1に格納された数値をレジス
タrs2に格納された数値に加算し、その結果をレジス
タrdへ格納することを意味する以下のプログラム断片
について以下に詳述する。
【0010】 add r1,r2,r3; add r3,r4,r5; ここで、第1の命令はレジスタr3へ格納する結果を形
成する。次の命令は前の命令によって算出されたr3の
値を使用する。しかし、第1の命令によって算出された
r3の値は、第2の命令の実行開始前にレジスタ・ファ
イルへ書き込まれない。レジスタ・ファイル内の宛先レ
ジスタは書き戻しステージ22がアネックス23の末端
に到達するまでは最終的に更新されない。従って、第2
の命令が実行される際、第2の命令の正確なオペランド
はアネックスの第1のエントリ内に存在する。後の命令
によるアネックス23内のエントリの利用を可能にすべ
く、アネックス23に対するある種のアクセスを提供す
る必要がある。更に、機能ユニット20,24へ出力す
るエントリを決定するために、アネックス23の各エン
トリに格納されたレジスタ・アドレスを決定する手段が
必要である。
【0011】図3はアネックスを実現するためのメモリ
30の使用を含む効果的な方法を示す。アネックス30
の1つのエントリが現在の命令のオペランドに使用され
る最新の変数を含む場合、同エントリは機能ユニット3
3への入力を形成すべくアネックス・アクセス・バス3
1への出力が可能であり、同出力はマルチプレクサ32
によって選択される。2つのインプットを備えたマルチ
プレクサ32への出力はアネックス30の各エントリを
通じて行う代わりに、1セットの貫通接続31のみを用
いて行われる。これはアネックス30内のエントリの総
数に左右されることなく機能ユニット・データパス34
におけるピッチの増加を排除する。アネックス30内の
エントリの総数に左右されることなくマルチプレクサ3
2に対するインプットの総数は2つに維持される。
【0012】マルチプレクサ32への出力を形成するエ
ントリを決定する1つの方法には、アネックス30のア
ドレス・フィールドでの内容検索メモリの使用が含まれ
る。アネックス30の各エントリはアドレス・フィール
ド及びデータ・フィールドを格納する。データ・フィー
ルドが宛先レジスタへ格納する結果を保持する一方、ア
ドレス・フィールドは同宛先レジスタのアドレスを有す
る。オペランドのうちの1つがアネックス30内に存在
するか否かを決定する際、同オペランドのアドレスはア
ネックス内に格納された全てのアドレスと同時に比較さ
れる。両アドレスが整合した場合、そのエントリに対す
る整合ラインが主張される。
【0013】殆どの命令は複数のオペランドを必要とす
る。例えば、“add x,y,z”という命令はxに
格納された数値をyに格納された数値に加算し、同加算
結果をzに格納させる。従って、x及びyはオペランド
・レジスタである。xに対するデータ及びyに対するデ
ータがともにアネックス30内に存在し得るため、全て
のオペランドの同時検索を可能にする複数の比較ポート
及び整合ライン・セットを内容検索メモリ内に形成する
必要がある。
【0014】特定のオペランド宛先レジスタ・アドレス
の結果を格納するアネックス・エントリの検索は、幾つ
かのプロセッサが物理レジスタ・アドレスとは異なる仮
想レジスタ・アドレスをサポートしているという事実に
よって複雑化されている。殆どのインプリメンテーショ
ンでは、実際の物理アドレスの総数は仮想アドレスの総
数とは異なる。一般的に、仮想アドレスは物理アドレス
より多く存在する。有効な仮想アドレスが物理アドレス
より多く存在する場合、幾つかの仮想アドレスは同一の
物理アドレスをマップすることになる。同一の物理アド
レスをマップする複数の仮想アドレスは“別名(Aliase
s)”と称される。
【0015】一般的に、レジスタ・ウィンドウを使用す
るアーキテクチャは仮想アドレスを使用しており、同仮
想アドレスは物理アドレスをマップする。オペランド・
レジスタ及び宛先レジスタ・アドレスは命令内において
対応する仮想アドレスに属する。レジスタ・ウィンドウ
の使用には多くの利点がある。レジスタ・ウィンドウは
多くのアーキテクチャにみられる固定レジスタ・セット
・デザインの主記憶特性に対して時間を要する漏出及び
充填をともなわないマルチプル・レジスタの使用を可能
にする。大型ウィンドウを備えたレジスタ・ファイルを
使用した場合、プロセッサは互いに重複する複数のセッ
トを形成する多数のオンチップ・レジスタに対するアク
セスを有する。このアクセスによりコンパイラはレジス
タ内において自動的に数値をキャッシュし、かつパラメ
ータをパスし得る。任意の瞬間において、プログラムは
更に大きなレジスタ・ファイル内において8個のグロー
バル整数レジスタ及び24個のレジスタのウィンドウを
認識する。ウィンドウを備えるレジスタはプロシージャ
・アーギュメント、ローカル値及びリターン・アドレス
のキャッシュとして使用できる。
【0016】図4は8個のウィンドウを備えるインプリ
メンテーションにおけるレジスタ・ウィンドウの環状ス
タック特性を示す。図5は同一のウィンドウ構造の平面
図である。任意の時間において、プログラムは32個の
整数レジスタ、即ち、アクティブ・ウィンドウに含まれ
る8個の入力レジスタ(IN registers)50、8個のロ
ーカル・レジスタ(LOCAL registers)51及び8個の
出力レジスタ(OUT registers)52並びに任意のウィ
ンドウからアドレスできる8個のグローバル・レジスタ
(GLOBAL registers)53をアドレスし得る。1つのウ
ィンドウに含まれる8個の出力レジスタ52は隣接する
ウィンドウに含まれる8個の入力レジスタ50でもあ
る。レジスタ・ウィンドウの重複特性はパラメータをプ
ロシージャ間で迅速に受け渡しできるユニックス(UNI
X)同様のマルチタスク環境にとって理想的といえる。
特定のレジスタをウィンドウ間で共有するレジスタ・ウ
ィンドウの重複特性により、パラメータの実際の移動は
生じない。寧ろ、パラメータは呼び掛ける側のレジスタ
・ウィンドウ及び呼び掛けられる側のレジスタ・ウィン
ドウの間で単に共有されている。
【0017】レジスタ・ファイルに含まれる物理レジス
タの実際の総数は仮想レジスタ・ファイルに含まれる仮
想レジスタの総数より少ない。これはグローバル・レジ
スタ53と称される8個の物理レジスタが全ての仮想レ
ジスタ・ウィンドウ間で共有されていることに主に起因
する。更に、1つの仮想レジスタ・ウィンドウの入力レ
ジスタ50及び隣接する仮想レジスタ・ウィンドウの出
力レジスタ52は事実上同一の物理レジスタである。従
って、N個のグローバル・レジスタ、N個のローカル・
レジスタ、N個の入力レジスタ及びN個の出力レジスタ
をそれぞれ有するK個のウィンドウを備えた仮想レジス
タ・ファイルでは、仮想レジスタの総数は4*K*Nで
あり、実際の物理レジスタの総数は僅かに(2K+1)
*Nである。
【0018】図6は物理レジスタ60に対する仮想レジ
スタ・ウィンドウの一般的なマッピングを示す。各ウィ
ンドウ内において、レジスタは同一の方法で仮想的にア
ドレスされる。レジスタr[0]〜r[7]はグローバ
ル・レジスタg0〜g7であり、レジスタr[8]〜r
[15]は入力レジスタi0〜i7であり、レジスタr
[16]〜r[23]はローカル・レジスタl0〜l7で
あり、レジスタr[24]〜r[31]は出力レジスタ
o0〜o7である。カレント・ウィンドウ・ポインタ
(CWP)61はカレント・ウィンドウに追随する。
【0019】特徴的な仮想レジスタ・ファイル構造に起
因して、仮想から物理レジスタ・アドレス62への翻訳
はレジスタに対するアクセスが行われる度に実施する必
要がある。翻訳はカレント・ウィンドウ・ポインタ(C
WP)61の数値及び仮想レジスタ番号を翻訳装置へ入
力することによって実現される。翻訳装置は物理レジス
タ・アドレス62を算出する。これはある程度の複雑さ
をともなう計算である。図6に示すマッピングでは、物
理レジスタ・アドレス62は16とカレント・ウィンド
ウ・ポインタ61の数値との積に対して仮想レジスタ・
インデックスの数値を加算することによって翻訳し得
る。カレント・ウィンドウ・ポインタ61の2進数表示
がW2 W1 W0であり、仮想レジスタ・インデック
スの2進数表示がR4 R3 R2 R1 R0である
場合、非グローバル・レジスタに対する翻訳は以下の数
1に示す式の通りである。
【0020】
【数1】 図6に例示するマッピングにおいて、グローバル・レジ
スタは仮想レジスタ・インデックスが0から7の間にあ
るレジスタである。従って、R4及びR3がゼロである
場合、物理アドレス62は単純に前記のレジスタ・イン
デックスとなる。
【0021】レジスタはプロセッサがアクセスする最速
メモリとして設計されているため、仮想から物理レジス
タ・アドレス62を算出する回数を最小限に抑制するこ
とが望ましい。設計者はアネックス構造内で使用するア
ドレスの種類を決定する必要がある。図7において、物
理アドレス62を使用した場合、仮想から物理アドレス
への翻訳70は命令の結果がアネックス71へ入力され
る以前に行う必要がある。更に、アネックス71内にお
いて命令のオペランドの検索を実施すべく、各オペラン
ドの仮想アドレスを検索以前に翻訳する必要がある。こ
れはハードウェアに対する大きな出費及び処理の遅延を
招来する。
【0022】本発明は前述した事情に鑑みてなされたも
のであって、その目的は、アネックス構造内に仮想アド
レスを使用してプロセッサの処理速度を向上し、さらに
はハードウェアのコストを削減することにある。
【0023】
【課題を解決するための手段】同時にディスパッチされ
た全ての命令を同時に宛先レジスタに書き戻すことが望
ましいため、短い機能ユニットの後には待ち時間を等し
くするために幾つかの余分なパイプライン・ステージが
形成されている。これらの余分なステージは完了ユニッ
ト・レジスタ・ファイル、即ちアネックスである。後に
続く命令におけるデータの使用を可能にすべく同データ
をアネックスから検索可能にする必要がある。仮想アド
レスがアネックス内に格納されている場合、翻訳は全く
必要ない。しかし、システムは検索中の命令オペランド
・アドレスの別名の位置を確認可能にする必要がある。
【0024】本発明に基づき、修飾ビット(Qualify bi
t )がアネックス内の各エントリに付加される。エント
リの修飾ビットが設定された場合にのみ、同エントリの
アドレスは命令オペランド・アドレスと一致する。同一
ウィンドウに対してアドレスされたアネックス・エント
リは常に修飾される。グローバル・レジスタに対してア
ドレスされたアネックス・エントリは常に修飾される。
出力レジスタに対してアドレスされたアネックス・エン
トリは、命令アドレスが次のウィンドウに含まれる複数
の入力レジスタのうちの1つである場合にのみ修飾され
る。入力レジスタに対してアドレスされたアネックス・
エントリは命令アドレスが前のウィンドウに含まれる複
数の出力レジスタのうちの1つである場合にのみ修飾さ
れる。
【0025】本発明に基づき、疑似アドレス・ビットは
命令オペランド・アドレスに対する容易な比較を実現す
べく各アネックス・エントリに付加される。仮想レジス
タ・アドレスはウィンドウ・ポインタ及びレジスタ・イ
ンデックスによって示される。ローカル・レジスタは別
名を有していない。グローバル・レジスタのインデック
スは全てのウィンドウについて同一である。他のレジス
タ(入力レジスタ及び出力レジスタ)の場合、別名に対
するインデックスは1ビットだけ異なっており、同ビッ
トはアドレスの最も重要なビットである。疑似アドレス
・ビットはインデックスの比較を可能にする。従って、
インデックスが同一でない場合でも、別名が検出され
る。疑似アドレス・ビットは常にはアネックス・エント
リのインデックスの最も重要なビットの値をとる。しか
し、命令オペランド仮想レジスタが特定のウィンドウの
出力レジスタであり、アネックス仮想レジスタが次のウ
ィンドウの入力レジスタである場合、そのエントリに対
する疑似アドレス・ビットは1に設定される。命令オペ
ランド仮想レジスタが前のウィンドウの出力レジスタで
ある場合、そのエントリに対する疑似アドレス・ビット
はゼロに設定される。
【0026】次いで、比較ロジックは命令オペランド・
インデックスをアネックス・インデックスと比較する。
この場合、アネックス・インデックスの最も重要なビッ
トは疑似アドレス・ビットと置換されている。整合し、
かつ主張された修飾ビット(Asserted qualify bits)
を有するエントリは同一の物理レジスタをアドレスす
る。
【0027】
【発明の実施の形態】図8は本発明に基づくプロセッサ
の機能ユニット80、アネックス81及び書き戻し82
のパイプラインを示す簡単なブロック図である。命令は
機能ユニット80によって実行される。これらの命令は
一般的に1つ以上のオペランドを必要とする。現在の命
令のオペランドのうちの1つが最近実行された命令の結
果である場合、同結果はアネックス・アクセス・バス8
3を通じてアネックス81からフェッチする必要があ
る。マルチプレクサ84はアネックス・ヒット(Annex
hit)が存在するか否かに基づいてレジスタ・ファイル
からのデータ及びアネックス81からのデータのうちの
いずれを使用するか選択する。
【0028】結果は同結果が最終ステージ85に到達す
るまでアネックスFIFO内をクロック・サイクルで順
次送られる。レジスタ・ファイルへ最終的に結果を書き
込む書き戻しステージ82へ結果を入力する前に、仮想
から物理レジスタ・アドレスへの翻訳86が実施され
る。
【0029】本発明に基づき、アネックス81は自身が
保持する結果の仮想アドレスを格納し得る(従来の方法
では、物理アドレスがアネックス内に格納される)。図
8に示すように、アネックス81が自身のエントリ内に
仮想アドレスを保持する場合、仮想から物理レジスタ・
アドレスへの翻訳86はアネックス・パイプライン81
の末端において行われればよい。翻訳86は命令オペラ
ンドの検索には必要ない。しかし、これはアネックス・
パイプラインの末端において翻訳86が必ず行われるこ
とを意味しない。書き戻しステージ82でのタイミング
に関する制約を最小限に抑制すべく、翻訳86は書き戻
しステージ82以前の任意の時点で実施してよい。アネ
ックス81内に物理アドレスを格納する別のハードウェ
アを提供する代わりに、翻訳は結果の書き戻し時におけ
る物理アドレスの使用を可能とする限りアネックス81
内の任意の1つまたは複数のステージで行える。
【0030】以上、シフト・レジスタからなるアネック
スの構造を詳述した。しかし、アネックスを一対の循環
型ポインタを備えたランダム・アクセス・メモリ・ファ
イルから形成してもよい。書き戻しステージはパイプラ
イン後端表示ポインタによって示されたメモリ位置から
結果を読み取り得る。パイプライン後端表示ポインタは
アネックスから結果が読み取られる度にディクリメント
可能である。機能ユニットは自身の結果をパイプライン
前端表示ポインタによって示されたメモリ位置へ書き込
み得る。パイプライン前端表示ポインタはアネックス内
に各結果が書き込まれる度にディクリメント可能であ
る。理解し易いように、本発明をシフト・レジスタに関
して詳述する。しかし、請求項はランダム・アクセス・
メモリ等の他の装置をも包含することを目的とする。
【0031】各物理アドレスが自身をマップする仮想ア
ドレスを1つのみ有する場合、アネックス81内におけ
るオペランドの検索は簡単な比較処理となる。全てのア
ネックス・エントリに対するこのような比較は内容検索
メモリを使用することにより一斉に行い得る。
【0032】しかし、同一の物理レジスタ・アドレスに
対して複数の仮想アドレスが存在する場合、アネックス
81内におけるオペランドの検索は複雑になる。例え
ば、仮想レジスタ・アドレスA及びBはいずれも物理レ
ジスタ6をマップし得る。前の命令が仮想レジスタ・ア
ドレスAへの書き込みを行った場合、同結果はアネック
ス81内に依然存在し得る。Bをオペランドとして使用
するその後の命令が実行可能に機能ユニット内に存在す
る場合、A及びBが相互に別名であることから、物理レ
ジスタ6に対して定められたアネックス81内の結果が
検索される。
【0033】図6のレジスタ・ウィンドウ構造には、8
個のウィンドウと、各ウィンドウに含まれる32個のレ
ジスタとが示されている。このため、カレント・ウィン
ドウ・ポインタ61の表現には3ビット(W2、W1及
びW0)が必要となり、さらにレジスタ・インデックス
の表現には5ビット(R4、R3、R2、R1及びR
0)が必要となる。3ビット・カレント・ウィンドウ・
ポインタ61及び5ビット・レジスタ・インデックスの
連結により8ビット仮想アドレスが形成される。8個の
ウィンドウのそれぞれに含まれる8個のグローバル・レ
ジスタは全てそれぞれに対応する同一の8個の物理レジ
スタをマップする。従って、0〜7のインデックスがそ
れぞれ付けられた各物理レジスタには8つの別名(各ウ
ィンドウに1つの別名)が存在する。これとは対照的
に、各ウィンドウに含まれる8個のローカル・レジスタ
はそれぞれ自身を示す1つの仮想レジスタを有するのみ
である。1つのウィンドウに含まれる各入力レジスタ
は、前のウィンドウに含まれる複数の出力レジスタのう
ちの1つに対する別名である。
【0034】任意のレジスタの内容を検索するために
は、どの仮想アドレスが検索中の仮想レジスタ・アドレ
スに対する別名であるかを認識する方法が必要となる。
本発明に基づき、修飾ビットがアネックス81内の各エ
ントリに加えられる。仮想レジスタに対するアクセスが
行われた場合、要求されたレジスタの仮想アドレスはア
ネックス81内に格納された仮想レジスタ・アドレスと
比較される。アネックス・エントリ内のアドレスをアネ
ックス・アドレスと称する一方で、検索中の命令のオペ
ランドのアドレスを命令アドレスと称する。理解し易く
するために、“A”をアネックス・アドレス・ビットの
前に配置する一方で、“I”を命令アドレス・ビットの
前に配置する。従って、図6に示すシステムでは、仮想
命令アドレスの仮想アドレス・ビットはIW2 IW1
IW0 IR4 IR3 IR2IR1 IR0とな
り、仮想アネックス・アドレスの仮想アドレス・ビット
はAW2 AW1 AW0 AR4 AR3 AR2
AR1 AR0となる。
【0035】本発明に基づく修飾ビットの値の計算にお
いて、オペランドのカレント・ウィンドウと同一のウィ
ンドウに対してアドレスされた結果を含むアネックス・
エントリは常に修飾される。オペランドのカレント・ウ
ィンドウ・ポインタと、任意のアネックス・エントリに
対して格納されたカレント・ウィンドウ・ポインタとが
一致した場合、同アネックス・エントリに対して修飾ビ
ットが設定される。従って、IW2 IW1 IW0=
AW2 AW1 AW0である場合に、修飾ビットが設
定される。ローカル・レジスタは別名を有していないた
め、これはローカル・レジスタに対してアドレスされた
アネックス内の結果を修飾し得る唯一の方法である。更
に、同一ウィンドウ内の入力レジスタ、出力レジスタ及
びグローバル・レジスタも同規則に基づいて修飾され
る。
【0036】グローバル・レジスタに対する結果を含む
アネックス・エントリは常に修飾される。任意のウィン
ドウのグローバル・レジスタのレジスタ・インデックス
が0〜7、即ち二進数において00000〜00111
の範囲に属するため、5ビット仮想レジスタ・インデッ
クスのうちの最も重要な2つのビット(AR4及びAR
3)は常にゼロになる。従って、任意のアネックス・エ
ントリの修飾ビットはAR4及びAR3がいずれもゼロ
である場合に設定される。
【0037】命令ウィンドウとは異なるウィンドウ内に
含まれる非グローバル・レジスタに対してアドレスされ
た結果を含むアネックス・エントリは、命令アドレスの
別名を有するアドレス群にアネックス・アドレスが含ま
れる場合にのみ修飾される。アネックス・ウィンドウの
出力レジスタに対するアネックス・アドレスは、命令ア
ドレスが次のウィンドウに含まれる複数の入力レジスタ
のうちの1つである場合にのみ修飾される。図5及び図
6に示すように、出力レジスタは24〜31、即ち二進
数において11000〜11111の範囲に属する仮想
アドレス・インデックスを備えたレジスタである。従っ
て、出力レジスタにおいて、最も重要な仮想アドレス・
インデックスR4及びR3はいずれも1である。更に、
入力レジスタは8〜15、即ち二進数において0100
0〜01111の範囲に属する仮想アドレス・インデッ
クスを備えたレジスタである。入力レジスタにおいて、
最も重要な仮想アドレス・インデックスR4及びR3は
それぞれゼロ及び1ある。従って、命令カレント・ウィ
ンドウ・ポインタがアネックス・カレント・ウィンドウ
・ポインタより1大きく、即ち、8を法とした(AW2
AW1 AW0+1)が(IW2 IW1 IW0)
に等しく、AR4及びAR3が1であり、IR4がゼロ
であり、IR3が1である場合、アネックス・エントリ
は同規則に基づいて修飾される。
【0038】同様に、アネックス・ウィンドウの入力レ
ジスタに対するアネックス・アドレスは、命令アドレス
が前のウィンドウに含まれる複数の出力レジスタのうち
の1つである場合にのみ修飾される。従って、命令カレ
ント・ウィンドウ・ポインタがアネックス・カレント・
ウィンドウ・ポインタより1小さく、即ち、8を法とし
た(AW2 AW1 AW0−1)が(IW2 IW1
IW0)に等しく、IR4及びIR3が1であり、A
R4がゼロであり、AR3が1である場合、アネックス
・エントリは同規則に基づいて修飾される。アネックス
内において、組合わせロジックは新たな命令アドレスの
検索の度に使用される修飾ビットを計算すべく各エント
リ単位で存在する。修飾ビットの計算をクリティカル・
パスから排除すべく、同計算は修飾ビットが使用される
サイクルの前のサイクルで実施される。計算結果は各エ
ントリ単位で格納され、次のクロック・サイクル中に即
座に使用し得る。多くの命令が複数のオペランドを有す
るため、アネックス内の全てのオペランド・レジスタを
検索することが望ましい。これら複数の検索が平行して
実施された場合、各オペランド・サーチ・ポートに対す
る別の修飾ビットが存在し得る。本質的に、図6に示す
レジスタ・マッピングのための修飾ビット計算ロジック
は前記した状態に関する論理ORである。図9はこの最
適化されていないロジックを示す。勿論、任意の組合わ
せロジック機能では、真の論理的インプリメンテーショ
ンは、ゲート数を削減することと、待ち時間を削減する
ことと、使用する特定の種類の技術を適応させることの
うちのいずれか1つを実現すべく論理的に最適化され
る。更に、レジスタ・マッピングが図6に示すレジスタ
・マッピングとは異なる場合、論理式自体が前記の式と
は異なる。しかし、レジスタの別名をサポートする任意
の仮想レジスタ構造に含まれる修飾ビットに関する正確
な論理式は、前記の方法に類似した方法で導き出し得
る。
【0039】図9において、排他的否定論理和(Exclus
ive NOR)ゲート91は命令ウィンドウ・ポインタの各
ビットをアネックス・ウィンドウ・ポインタの対応する
ビットと比較する。排他的否定論理和ゲート91は等価
テストの論理機能を実行する。即ち、排他的否定論理和
ゲート91の両方の入力が同一である場合にのみ、同排
他的否定論理和ゲート91の出力が主張される。論理積
(AND)ゲート92は対応する全ての命令ウィンドウ・
ポインタ及びアネックス・ウィンドウ・ポインタが同一
の場合にのみ主張する出力(Asserted output )を形成
する。従って、信号93はそのエントリに対する命令ウ
ィンドウ・ポインタ及びアネックス・ウィンドウ・ポイ
ンタが同一である場合にのみ主張される。
【0040】否定論理和(NOR)ゲート94はAR4及
びAR3がいずれもゼロの場合にのみ主張する出力を形
成する。従って、信号95はアネックス・アドレスがグ
ローバル・レジスタに対するものである場合にのみ主張
される。
【0041】複数の加算器96は命令ウィンドウから次
のウィンドウ及び前のウィンドウを計算する。そして、
等価テスト97のうちの1つはアネックス・ウィンドウ
・ポインタが命令ウィンドウ・ポインタより1小さい
か、または1大きい場合にのみ主張する出力を形成す
る。上側に位置する論理積ゲート98は命令ウィンドウ
・ポインタがアネックス・ウィンドウ・ポインタより1
大きく、しかもアネックス・インデックスが出力レジス
タである一方で、命令インデックスが入力レジスタであ
る場合にのみ主張する出力を形成する。下側に位置する
論理積ゲート98は命令ウィンドウ・ポインタがアネッ
クス・ウィンドウ・ポインタより1小さく、しかもアネ
ックス・インデックスが入力レジスタである一方で、命
令インデックスが出力レジスタである場合にのみ主張す
る出力を形成する。従って、アネックス・エントリが出
力アドレスまたは入力アドレスであって、同出力アドレ
スまたは入力アドレスがそれぞれ入力命令アドレスまた
は出力命令アドレスの別名である場合にのみ、信号99
のうちの1つが主張される。論理和(OR)ゲート90は
信号93,95,99の状態の論理和である修飾ビット
出力を形成する。
【0042】修飾ビットが算出された後、どのエントリ
が命令アドレスと同一の物理アドレスをアドレスするか
を実際に決定し得る。主張する修飾ビットを有するアネ
ックス・エントリは検索中の仮想オペランド・アドレス
によってマップされた物理レジスタと同一の物理レジス
タに対する結果を含み得る唯一のエントリである。整合
を発見すべく、命令レジスタ・インデックス(IR4
IR3 IR2 IR1 IR0)は全てのアネックス
・エントリに対してバスを通じて送られる。
【0043】検索中の命令インデックスがグローバル・
アドレス・インデックスまたはローカル・アドレス・イ
ンデックスである場合、命令インデックスを各エントリ
のアネックス・インデックス(AR4 AR3 AR2
AR1 AR0)と直接比較できる。グローバル仮想
レジスタの場合、これはグローバル・レジスタに対する
全ての別名が同一のインデックスを有するという事実に
基づく。グローバル・レジスタの別名間における唯一の
違いはウィンドウ・ポインタ内に存在する。ローカル仮
想レジスタに対する別名は存在しない。従って、整合は
レジスタ・インデックス及びウィンドウ・ポインタの両
方が同じ場合に生じる。修飾ビットの計算はウィンドウ
・ポインタが整合するという事実をコード化するため、
グローバル・レジスタのインデックス及びローカル・レ
ジスタのインデックスの比較が必要になる。
【0044】しかし、入力仮想レジスタ及び出力仮想レ
ジスタは複雑さをもたらす。前記したように、入力仮想
レジスタ・アドレスまたは出力仮想レジスタ・アドレス
はそれぞれ1つの別名を有する。同別名は異なるレジス
タ・インデックスを有する。各入力仮想レジスタは1つ
の出力仮想レジスタの別名である。入力レジスタは8〜
15、即ち二進法において01000〜01111の範
囲に属するインデックスを有する。しかし、出力レジス
タは24〜31、即ち二進数において11000〜11
111の範囲に属するインデックスを有する。“(CW
P) 1 1R2 R1 R0”によって表される仮想
出力レジスタ・アドレスは“(8を法とするCWP+
1) 0 1 R2 R1 R0”によって表される仮
想入力レジスタ・アドレスの別名である。ところが、こ
れら2つの別名に付随するR4ビットは互いに逆の値を
示す。命令インデックス及びアネックス・インデックス
の直接比較を行った場合、R4ビットが互いに逆である
ことから入力レジスタまたは出力レジスタの別名は発見
できない。
【0045】本発明に基づき、入力仮想レジスタ・アド
レス及び出力仮想レジスタ・アドレスの別名の発見に付
随する問題を解決するために、アネックス・エントリ毎
に別のビットが導入される。この疑似アドレス・ビット
(PA)はインデックスの比較を可能にすべく使用され
る。従って、インデックスが正確に一致しない場合でも
別名が検出される。疑似アドレス・ビットは常にはAR
4の値をとる。しかし、命令仮想レジスタが1つのウィ
ンドウに含まれる出力レジスタであり、アネックス仮想
レジスタが次のウィンドウに含まれる入力レジスタであ
る場合、そのエントリに対する疑似アドレス・ビットは
1に設定される。従って、PA=IR4=1となる。同
様に、命令仮想レジスタが1つのウィンドウに含まれる
入力レジスタであり、アネックス仮想レジスタが前のウ
ィンドウに含まれる出力レジスタである場合、そのエン
トリに対する疑似アドレス・ビットはゼロに設定され
る。従って、PA=IR4=0となる。
【0046】図10のロジックは図6に示すレジスタ・
マッピングのための疑似アドレス・ビットの計算を実施
する1つの方法を例示する。図10において、複数のパ
ス・ゲート101のうちの1つのみが任意の時間におい
てイネーブルされる。パス・ゲート101は疑似アドレ
ス・ビットの適切な値を選択する。1及び0にそれぞれ
接続された2つのパス・ゲートにそれぞれ対応するイネ
ーブル・ロジック102,103は修飾ビットの計算に
おいて最後の2つの状態を形成するために使用するロジ
ックと同一のロジックである。否定論理和ゲート104
はイネーブル・ロジック102,103の両方が主張す
る出力を形成しない場合に、疑似アドレス・ビットへの
AR4の書き込みをイネーブルする。
【0047】次いで、比較ロジックは命令インデックス
を比較インデックスと比較する。比較インデックスはア
ネックス・インデックスに含まれる最も重要度の低い4
つのビットに付随する疑似アドレス・ビットである。従
って、疑似アドレス・ビットPAは比較においてAR4
と置換される。主張する修飾ビットを有するとともに、
IR4 IR3 IR2 IR1 IR0=PA AR
3 AR2 AR1AR0であるアネックス・エントリ
の場合、そのアネックス・エントリは検索中の機能ユニ
ット・オペランドと同一の物理レジスタに対してアドレ
スされる。
【0048】図11はオペランド・アドレスを体系化す
る方法と、アネックス内における情報の体系化の方法
と、8個のエントリを有するアネックスFIFOとを示
す。命令アドレスはオペランド・レジスタ・インデック
ス111に付随するカレント・ウィンドウ・ポインタ1
10によって示される。一般的に、カレント・ウィンド
ウ・ポインタ110はレジスタ87内に格納される(図
8参照)。レジスタ・インデックスは命令に含まれる。
例えば、“add rA,rB,rC”等の命令はr
A,rB,rCに対する加算命令コード及びレジスタ・
インデックスを含み得る。カレント・ウィンドウ・ポイ
ンタ110は独立して維持される。しかし、整合する仮
想アドレスに対するアネックスを検索するために、カレ
ント・ウィンドウ・ポインタ110及びレジスタ・イン
デックス111の両方が使用される。アネックス・エン
トリは同エントリに対するデータ結果を機能ユニット8
0(図8参照)が形成したクロック・サイクルにおける
ウィンドウ・ポインタ112の値を含む。修飾ビット1
13、疑似アドレス・ビット114及び有効ビット11
7はアネックス・エントリ毎に維持される。新たに形成
された結果は図11の左側に位置するアネックスの最新
のエントリ位置115へ入力される。アネックス自身は
パイプラインであり、同パイプラインは最も古いエント
リ位置116に到達するまでエントリをシフトする。最
も古いエントリは各サイクル中に書き戻しステージ82
(図8参照)へ出力される。書き戻しステージは物理ア
ドレスへの実際の書き込みを行う。
【0049】図12はアネックス・エントリ整合信号1
24を形成する前記の修飾ビット及び疑似アドレス・ビ
ット構造を実現するために使用するロジックを示す。命
令インデックス121をアネックス・インデックス12
5と比較する際、アネックス・インデックスの最も重要
なビット126は疑似アドレス・ビット127によって
置換される。比較器122が等価を検出した場合、同比
較器122は主張する出力を形成する。有効ビット12
9はアネックス・エントリが有意義な情報を含むか否か
を表示する。修飾ビット128、有効ビット129及び
比較器122の出力が全て主張された場合、論理積ゲー
ト123はアネックス・エントリ整合信号124を形成
する。アネックス・エントリ整合信号124が主張され
た場合、そのアネックス・エントリ内の結果は命令オペ
ランド仮想アドレスと同一の物理レジスタに対してアド
レスされる。
【0050】以上詳述したように、アネックス構造内に
仮想アドレスを使用するとともに、アネックス仮想アド
レス及び命令オペランド仮想アドレスの比較において修
飾ビット及び疑似アドレス・ビットを使用する本発明の
方法及び装置では、命令オペランドの検索以前に仮想か
ら物理レジスタ・アドレスへの翻訳を行う必要がないう
え、同翻訳は書き戻しステージの前に実施されるのみで
ある。この結果、アネックス構造内に物理アドレスを使
用する従来の方法及び装置と比較して、本発明の方法及
び装置は仮想から物理レジスタ・アドレスへの翻訳回数
を大幅に削減することにより、プロセッサの処理速度の
向上及びハードウェアのコストの削減を可能にする。
【0051】以上の説明は図6のレジスタ・マッピング
を中心にして開示したものである。しかし、同説明は例
示を目的とするものであって同レジスタ・マッピングに
限定されるものではない。これ以外にも多数のレジスタ
・マッピングが存在する。例えば、更に多くのウィンド
ウ若しくは更に少ないウィンドウを使用するか、または
1つのウィンドウに対して更に多くのレジスタ若しくは
更に少ないレジスタを使用し得る。グローバル・レジス
タ及びローカル・レジスタのうちの少なくとも一方を完
全または部分的に排除し得る。入力レジスタ及び出力レ
ジスタの相対的位置を変更し得る。請求項によって包含
される自明な各種別例が多数存在するが、これらの別例
については説明を簡潔にすべく列挙することを避ける。
【0052】同様に、ここに示すロジック・インプリメ
ンテーションは例示を目的とするものである。ここに示
すロジックの正確なインプリメンテーション、またはそ
れらの正確な論理的関係は図6に示すレジスタ・マッピ
ングに対するロジックの実現を例示するものである。技
術または最適化等の各種の理由に基づき、ここに開示す
るインプリメンテーション・ロジックに対する自明な各
種別例が存在する。レジスタ・マッピングが図6に示す
レジスタ・マッピングと異なる場合、論理図を変更する
必要がある。全ての拡張及び変更は本発明の範囲及び精
神を逸脱しないことを目的とする。
【0053】
【発明の効果】本発明によれば、アネックス構造内に仮
想アドレスを使用してプロセッサの処理速度を向上し、
さらにはハードウェアのコストを削減し得るという優れ
た効果を発揮する。
【図面の簡単な説明】
【図1】スパースカラ・プロセッサ・アーキテクチャを
示すブロック図。
【図2】2つのスカラ実行ステージを示すブロック図。
【図3】アネックスのエントリに対するアクセス方法を
示すブロック図。
【図4】互いに重複するレジスタを含む8個のウィンド
ウを示す図。
【図5】前後のウィンドウに対するカレント・ウィンド
ウの関係を表すレジスタの構造図。
【図6】仮想レジスタ及び物理レジスタ間のマッピング
を示す図。
【図7】アネックスが物理アドレスを格納する際のアー
キテクチャを示すブロック図。
【図8】本発明に基づきアネックスが仮想アドレスを格
納する際のアーキテクチャを示すブロック図。
【図9】図6のレジスタ構造におけるアネックス・エン
トリの修飾ビットの計算を示す論理図。
【図10】図6のレジスタ構造におけるアネックス・エ
ントリの疑似アドレス・ビットの計算を示す論理図。
【図11】本発明に基づく図6のレジスタ構造に対する
命令オペランド・アドレスと、アネックス・エントリ内
のデータの構成と、8個のエントリを有するアネックス
とを示す図。
【図12】本発明に基づく図6のレジスタ構造に対する
アネックス・エントリ整合信号の計算を示す論理図。
【符号の説明】
80…プロセッサの機能ユニット、81…アネックス、
82…書き戻し、83…アネックス・アクセス・バス、
84…マルチプレクサ、85…アネックス内の最終ステ
ージ、86…仮想から物理レジスタ・アドレスへの翻
訳、90…論理和ゲート、91…排他的否定論理和ゲー
ト、92,123…論理積ゲート、93…信号、94…
否定論理和ゲート、95…信号、96…加算器、97…
等価テスト、98…論理積ゲート、99…信号、101
…パス・ゲート、102,103…イネーブル・ロジッ
ク、110…カレント・ウィンドウ・ポインタ、111
…レジスタ・インデックス、112…ウィンドウ・ポイ
ンタ、113,128…修飾ビット、114,127…
疑似アドレス・ビット、115…最新のエントリ位置、
117,129…有効ビット、121…命令インデック
ス、122…比較器、124…アネックス・エントリ整
合信号、125…アネックス・インデックス。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成8年1月16日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】図11
【補正方法】変更
【補正内容】
【図11】

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 アネックス・エントリ内のアネックス仮
    想アドレスを命令オペランド仮想アドレスと比較する際
    に使用するアネックス・エントリの修飾ビットを形成す
    る方法であって、前記各仮想アドレスが1つの物理アド
    レス群及び同物理アドレス群に属する1つの物理アドレ
    スをマップする方法において、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スの両方が1つの物理アドレス群をマップする場合に修
    飾ビットを主張する工程と、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スが異なる1つの物理アドレス群をそれぞれマップする
    場合に修飾ビットの主張を取り消す工程とを含む方法。
  2. 【請求項2】 各仮想アドレスはウィンドウ・ポインタ
    及びレジスタ・インデックスを含む請求項1に記載の方
    法。
  3. 【請求項3】 同一の物理アドレスをマップする互いに
    異なる仮想アドレスは同一のレジスタ・インデックスを
    それぞれ有するか、または所定の1ビットだけ互いに異
    なるレジスタ・インデックスをそれぞれ有する請求項2
    に記載の方法。
  4. 【請求項4】 各仮想アドレス内のウィンドウ・ポイン
    タは複数の仮想レジスタ・ウィンドウのうちの1つを示
    す請求項2に記載の方法。
  5. 【請求項5】 全ての仮想レジスタ・ウィンドウはグロ
    ーバル・レジスタ・アドレスを有し、同グローバル・レ
    ジスタ・アドレスが全てのレジスタ・ウィンドウにおい
    て同一の物理レジスタをマップする請求項4に記載の方
    法。
  6. 【請求項6】 全ての仮想レジスタ・ウィンドウはロー
    カル・レジスタ・アドレスを有し、同ローカル・レジス
    タ・アドレスが全てのレジスタ・ウィンドウにおいて異
    なる物理レジスタをマップする請求項5に記載の方法。
  7. 【請求項7】 全ての仮想レジスタ・ウィンドウは入力
    レジスタ・アドレス及び出力レジスタ・アドレスを有
    し、前記入力レジスタ・アドレスは別の仮想レジスタ・
    ウィンドウの出力レジスタ・アドレスがマップする物理
    レジスタ・アドレスと同一の物理レジスタ・アドレスを
    マップし、出力レジスタ・アドレスは更に別の仮想レジ
    スタ・ウィンドウの入力レジスタ・アドレスがマップす
    る物理レジスタ・アドレスと同一の物理レジスタ・アド
    レスをマップする請求項6に記載の方法。
  8. 【請求項8】 仮想レジスタ構造内において、アネック
    ス・エントリに含まれるアネックス仮想アドレスを命令
    オペランド仮想アドレスと比較する際に使用するアネッ
    クス・エントリの疑似アドレス・ビットを形成する方法
    であって、前記各仮想アドレスがウィンドウ・ポインタ
    及びレジスタ・インデックスを有し、前記仮想レジスタ
    構造が互いに重複する複数の仮想レジスタ・ウィンドウ
    をサポートし、前記重複は前記2つの仮想アドレスが同
    一の物理アドレスをマップし、かつ互いに所定の1ビッ
    トだけ異なる2つのレジスタ・インデックスを有するよ
    う行われる方法において、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スが同一の物理アドレスをマップした際に、疑似アドレ
    ス・ビットに対して命令オペランド・レジスタ・インデ
    ックスに含まれる所定のビットの値を割り当てる工程
    と、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スがそれぞれ異なる物理アドレスをマップした際に、疑
    似アドレス・ビットに対してアネックス・レジスタ・イ
    ンデックスに含まれる所定のビットの値を割り当てる工
    程とを含む方法。
  9. 【請求項9】 前記所定のビットがアネックス・レジス
    タ・インデックスの最も重要なビットである請求項8に
    記載の方法。
  10. 【請求項10】 修飾ビット及び疑似アドレス・ビット
    を有するアネックス・エントリに含まれるアネックス・
    ウィンドウ・ポインタ及びアネックス・レジスタ・イン
    デックスを備えたアネックス仮想アドレスと、命令オペ
    ランド・ウィンドウ・ポインタ及び命令オペランド・レ
    ジスタ・インデックスを備えた命令オペランド仮想アド
    レスとが1つの物理アドレスをマップした際に主張され
    る整合信号を形成する方法であって、 アネックス・レジスタ・インデックスに含まれる所定の
    ビットを疑似アドレス・ビットと置換することによりア
    ネックス比較インデックスを形成する工程と、等価信号
    を形成すべく命令オペランド・レジスタ・インデックス
    をアネックス比較インデックスと比較する工程と、 修飾ビット及び等価信号の両方が主張された場合にのみ
    整合信号を主張する工程とを含む方法。
  11. 【請求項11】 前記所定のビットがアネックス・レジ
    スタ・インデックスの最も重要なビットである請求項1
    0に記載の方法。
  12. 【請求項12】 アネックス・エントリ内のアネックス
    仮想アドレスを命令オペランド仮想アドレスと比較する
    際に使用するアネックス・エントリの修飾ビットを形成
    する装置であって、前記各仮想アドレスが1つの物理ア
    ドレス群及び同物理アドレス群に含まれる1つの物理ア
    ドレスをマップする装置において、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スの両方が1つの物理アドレス群をマップする場合に、
    修飾ビットを主張する主張回路と、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スが異なる物理アドレス群をそれぞれマップする場合
    に、修飾ビットの主張を取り消す主張取り消し回路とを
    有する装置。
  13. 【請求項13】 各仮想アドレスがウィンドウ・ポイン
    タ及びレジスタ・インデックスを有する請求項12に記
    載の装置。
  14. 【請求項14】 同一の物理アドレスをマップする互い
    に異なる仮想アドレスが同一のレジスタ・インデックス
    を有するか、または所定の1ビットだけ互いに異なるレ
    ジスタ・インデックスを有する請求項13に記載の装
    置。
  15. 【請求項15】 各仮想アドレス内のウィンドウ・ポイ
    ンタが複数の仮想レジスタ・ウィンドウのうちの1つを
    表示する請求項13に記載の装置。
  16. 【請求項16】 全ての仮想レジスタ・ウィンドウはグ
    ローバル・レジスタ・アドレスを有し、同グローバル・
    レジスタ・アドレスが全てのレジスタ・ウィンドウにお
    いて同一の物理レジスタをマップする請求項15に記載
    の装置。
  17. 【請求項17】 全ての仮想レジスタ・ウィンドウはロ
    ーカル・レジスタ・アドレスを有し、同ローカル・レジ
    スタ・アドレスが全てのレジスタ・ウィンドウにおいて
    異なる物理レジスタをマップする請求項16に記載の装
    置。
  18. 【請求項18】 全ての仮想レジスタ・ウィンドウは入
    力レジスタ・アドレス及び出力レジスタ・アドレスを有
    し、前記入力レジスタ・アドレスは別の仮想レジスタ・
    ウィンドウの出力レジスタ・アドレスがマップする物理
    レジスタ・アドレスと同一の物理レジスタ・アドレスを
    マップし、出力レジスタ・アドレスは更に別の仮想レジ
    スタ・ウィンドウの入力レジスタ・アドレスがマップす
    る物理レジスタ・アドレスと同一の物理レジスタ・アド
    レスをマップする請求項17に記載の装置。
  19. 【請求項19】 仮想レジスタ構造内において、アネッ
    クス・エントリに含まれるアネックス仮想アドレスを命
    令オペランド仮想アドレスと比較する際に使用するアネ
    ックス・エントリの疑似アドレス・ビットを形成する装
    置であって、前記各仮想アドレスがウィンドウ・ポイン
    タ及びレジスタ・インデックスを有し、前記仮想レジス
    タ構造が互いに重複する複数の仮想レジスタ・ウィンド
    ウをサポートし、前記重複は前記2つの仮想アドレスが
    同一の物理アドレスをマップし、かつ互いに所定の1ビ
    ットだけ異なる2つのレジスタ・インデックスを有する
    よう行われる装置において、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スが同一の物理アドレスをマップした際に、疑似アドレ
    ス・ビットに対して命令オペランド・レジスタ・インデ
    ックスに含まれる所定のビットの値を割り当てる第1の
    割り当て回路と、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スがそれぞれ異なる物理アドレスをマップした際に、疑
    似アドレス・ビットに対してアネックス・レジスタ・イ
    ンデックスに含まれる所定のビットの値を割り当てる第
    2の割り当て回路とを含む装置。
  20. 【請求項20】 前記所定のビットがアネックス・レジ
    スタ・インデックスの最も重要なビットである請求項1
    9に記載の装置。
  21. 【請求項21】 修飾ビット及び疑似アドレス・ビット
    を有するアネックス・エントリに含まれるアネックス・
    ウィンドウ・ポインタ及びアネックス・レジスタ・イン
    デックスを備えたアネックス仮想アドレスと、命令オペ
    ランド・ウィンドウ・ポインタ及び命令オペランド・レ
    ジスタ・インデックスを備えた命令オペランド仮想アド
    レスとが1つの物理アドレスをマップした際に主張され
    る整合信号を形成する装置であって、 アネックス・レジスタ・インデックスに含まれる所定の
    ビットを疑似アドレス・ビットと置換することによりア
    ネックス比較インデックスを形成する形成回路と、 等価信号を形成すべく命令オペランド・レジスタ・イン
    デックスをアネックス比較インデックスと比較する比較
    回路と、 修飾ビット及び等価信号の両方が主張された場合にのみ
    整合信号を主張する主張回路とを含む装置。
  22. 【請求項22】 前記所定のビットがアネックス・レジ
    スタ・インデックスの最も重要なビットである請求項2
    1に記載の装置。
  23. 【請求項23】 アネックス・エントリ内のアネックス
    仮想アドレスを命令オペランド仮想アドレスと比較する
    際に使用するアネックス・エントリの修飾ビットを形成
    するとともに、前記各仮想アドレスが1つの物理アドレ
    ス群及び同物理アドレス群に含まれる1つの物理アドレ
    スをマップする装置の製造方法であって、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スの両方が1つの物理アドレス群をマップする場合に、
    修飾ビットを主張する主張回路を提供する工程と、 アネックス仮想アドレス及び命令オペランド仮想アドレ
    スが異なる物理アドレス群をそれぞれマップする場合
    に、修飾ビットの主張を取り消す主張取り消し回路を提
    供する工程とを含む方法。
JP7333728A 1994-12-23 1995-12-21 プロセッサのアネックス内において修飾ビットを形成する方法及び装置 Pending JPH08249178A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US36337894A 1994-12-23 1994-12-23
US08/363378 1994-12-23

Publications (1)

Publication Number Publication Date
JPH08249178A true JPH08249178A (ja) 1996-09-27

Family

ID=23429977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7333728A Pending JPH08249178A (ja) 1994-12-23 1995-12-21 プロセッサのアネックス内において修飾ビットを形成する方法及び装置

Country Status (3)

Country Link
US (1) US5875483A (ja)
JP (1) JPH08249178A (ja)
KR (1) KR960024924A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007234011A (ja) * 2006-03-02 2007-09-13 Internatl Business Mach Corp <Ibm> マップに基づくレジスタ・ファイルへの間接アクセスのためにレジスタ・マップをsimd指向管理するための方法、システム、およびプログラム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601146B2 (en) * 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
JP3737755B2 (ja) * 2001-12-28 2006-01-25 富士通株式会社 レジスタウィンドウ方式によるレジスタファイル及びその制御方法
EP1554648A2 (en) * 2002-10-11 2005-07-20 Koninklijke Philips Electronics N.V. Data processing apparatus with parallel operating functional units
US20050278707A1 (en) * 2004-06-09 2005-12-15 Intel Corporation Method and system providing virtual resource usage information
CN101593095B (zh) * 2008-05-28 2013-03-13 国际商业机器公司 基于流水级的数据处理方法和***
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
JP2015225675A (ja) 2014-05-26 2015-12-14 ルネサスエレクトロニクス株式会社 連想メモリおよび半導体装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237671A (en) * 1986-05-02 1993-08-17 Silicon Graphics, Inc. Translation lookaside buffer shutdown scheme

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007234011A (ja) * 2006-03-02 2007-09-13 Internatl Business Mach Corp <Ibm> マップに基づくレジスタ・ファイルへの間接アクセスのためにレジスタ・マップをsimd指向管理するための方法、システム、およびプログラム

Also Published As

Publication number Publication date
US5875483A (en) 1999-02-23
KR960024924A (ko) 1996-07-20

Similar Documents

Publication Publication Date Title
JP3871884B2 (ja) 記憶からロードへの転送のための機構
US5860107A (en) Processor and method for store gathering through merged store operations
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
US5664215A (en) Data processor with an execution unit for performing load instructions and method of operation
US8984261B2 (en) Store data forwarding with no memory model restrictions
US6351804B1 (en) Control bit vector storage for a microprocessor
US7769986B2 (en) Method and apparatus for register renaming
US20080276070A1 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
JP6467605B2 (ja) 命令処理システムと方法
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
JPH11212788A (ja) プロセッサのデータ供給装置
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
Liptay Design of the IBM Enterprise System/9000 high-end processor
JPH05120013A (ja) 分岐命令バツフアを有するデータプロセツサ
US7721073B2 (en) Conditional branch execution in a processor having a data mover engine that associates register addresses with memory addresses
KR19990072272A (ko) 로드/로드검출및재정렬방법
US7721074B2 (en) Conditional branch execution in a processor having a read-tie instruction and a data mover engine that associates register addresses with memory addresses
JP2002527798A (ja) ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム
JP3848161B2 (ja) アドレス変換履歴テーブルを用いたメモリアクセス装置及び方法
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
JPH08249178A (ja) プロセッサのアネックス内において修飾ビットを形成する方法及び装置
US6115730A (en) Reloadable floating point unit
US7721075B2 (en) Conditional branch execution in a processor having a write-tie instruction and a data mover engine that associates register addresses with memory addresses
US5613081A (en) Method of operating a data processor with rapid address comparison for data forwarding
JPH08212789A (ja) 連想メモリ回路及びtlb回路