JP3177194B2 - 命令データを位置合せするための方法および装置 - Google Patents

命令データを位置合せするための方法および装置

Info

Publication number
JP3177194B2
JP3177194B2 JP18112897A JP18112897A JP3177194B2 JP 3177194 B2 JP3177194 B2 JP 3177194B2 JP 18112897 A JP18112897 A JP 18112897A JP 18112897 A JP18112897 A JP 18112897A JP 3177194 B2 JP3177194 B2 JP 3177194B2
Authority
JP
Japan
Prior art keywords
data
word
unit data
multiplexer
unit
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.)
Expired - Fee Related
Application number
JP18112897A
Other languages
English (en)
Other versions
JPH10161872A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10161872A publication Critical patent/JPH10161872A/ja
Application granted granted Critical
Publication of JP3177194B2 publication Critical patent/JP3177194B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3824Operand accessing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3856Reordering of instructions, e.g. using queues or age tags
    • 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)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、マイクロ
プロセッサの分野に関し、より詳細には、スーパースカ
ラ・プロセッサにおいて命令データを位置合せするため
の方法および装置に関する。
【0002】
【従来の技術】最新のマイクロプロセッサは、通常、キ
ャッシュ・メモリを利用してマイクロプロセッサの動作
パフォーマンスを改善している。最新マイクロプロセッ
サの多くの設計では、データと命令が両方ともキャッシ
ュに入れられる。そのようなキャッシュ技術は当技術分
野では周知である。マイク・ジョンソン(Mike Johnso
n)の論文「Superscaler Microprocessor Design」Pren
tice Hall(1991)を参照されたい。
【0003】スーパースカラ・プロセッサは1サイクル
あたり複数の命令をフェッチして実行するように設計さ
れているため、キャッシュ技術は、スーパースカラ・マ
イクロプロセッサのパフォーマンスにとって特に重要で
ある。しかしながら、キャッシュ式スーパースカラ・プ
ロセッサにしばしば現れる1つの問題は、データの位置
合せである。
【0004】キャッシュ・メモリは、通常、数バイトの
ブロックまたはラインに配列される。たとえば、具体例
としてIBMの「POWERPC」アーキテクチャで
は、各キャッシュ・ブロックは、1ブロックあたり8バ
イトになるように、それぞれ4バイトを含む2ワードか
らなる。各ブロックの各ワードが個別にアドレス指定さ
れる。
【0005】図1は、nバイト幅のキャッシュ100の
例を示す。キャッシュ100は、それぞれワード0とワ
ード1からなるブロック0とブロック1を含む。ブロッ
ク0のワード0はバイト0〜3からなり、ワード1はバ
イト4〜7からなり、ブロック1のワード0は、バイト
8〜Bからなり、ワード1はバイトC〜Fからなる。
【0006】図1に関して説明するように、ある特定の
命令を実行するとき、キャッシュ内のデータの境界がず
れることがある。たとえば、ワード・ロード命令が実行
されると、2つの汎用レジスタ(「GPR」)からのア
ドレス・データが加算され、データがキャッシュの結果
アドレスから取り出され、第3の汎用レジスタに記憶さ
れる。キャッシュ内のデータの境界がそのような命令に
よってどのようにずれるかを示すために、ワード・ロー
ド命令が、GPR1とGPR2に記憶された2つのアド
レスをそれぞれ加算し、キャッシュの結果アドレスから
のデータをGPR3に記憶しなければならないと想定す
る。GPR1が0でGPR2が1の場合は、キャッシュ
100のブロック0のアドレス1で始まるワードがGP
R3に書き込まれる。図1に示したように、このワード
は、一部分がワード0に一部分がワード1に記憶された
バイト1〜4を含む。したがって、このワードをGPR
3に記憶するためには、キャッシュ100から2度読み
取らなければならない。最初の読み取りで、ワード0か
らバイト0〜3が取り出される。2度目の読み取りで、
ワード1からバイト4〜7が取り出される。次に、この
データは、バイト1〜4を含む1つのワードを形成する
ためにマージされ、GPR3に記憶される。当然なが
ら、ワード0とワード1からの所望のデータを適切にマ
ージするために、当該のバイトを位置合せしなければな
らない。
【0007】図2は、従来の位置合せ回路の例を示す。
前述の例を参照すると、最初の読取りバイト0〜3は、
キャッシュ100のブロック0のワード0から読み取ら
れ、バイト・ローテータ300に渡される。バイト・ロ
ーテータ300は、キャッシュから読み取ったワードを
左に1バイトだけシフトし、その結果をレジスタ302
に記憶する。レジスタ302は、1ワード幅であり、バ
イト・ローテータ300からデータを受け取った後、バ
イト123xをその順序で含む。ここで、「x」は無指
定条件(ドント・ケア)である。次の読み取りで、バイ
ト4〜7がキャッシュのブロック0のワード1から読み
取られてバイト・ローテータ300に渡され、バイト・
ローテータ300は、バイト・ローテータ300の出力
がxxx4になるようにバイト4〜7を右に3バイト回
転する。
【0008】バイト・ローテータ300とレジスタ30
2からの32ビット出力バスは、バイト幅のデータ・バ
スに細分され、図に示したマルチプレクサ304、30
6、308、310に提供される。マルチプレクサ30
4〜310は、それぞれ入力aおよびbを有する従来の
2:1マルチプレクサである。各マルチプレクサの出力
は、トライステート・バッファ305、307、30
9、311を介して32ビット・データ・バス312の
1バイト幅セグメントに結合される。データ・バス31
2は、リネーム・レジスタR0〜Rnを含むリネーム・
レジスタ・ブロック314に結合される。
【0009】上の例で説明したような2度目の読み取り
後、所望のデータをマージして正しく位置合せしたワー
ドをレジスタR0〜Rnのうちの1つに記憶するために
は、マルチプレクサ304、306、308のマルチプ
レクサ選択線304b、306b、308bをそれぞれ
活動化し、マルチプレクサ310の選択線310aを活
動化するだけでよい。次に、マルチプレクサの出力が、
たとえばリネーム・レジスタR0に提供され、リネーム
・レジスタR0は、バイト1、2、3、4からなる正し
い順序になったワードを記憶する。レジスタR0内に記
憶された位置合せ済みワードは、プロセッサの所望の実
行ユニットに渡され、あるいは汎用レジスタ上のメモリ
に書き戻される。
【0010】
【発明が解決しようとする課題】前述の技術に伴うひと
つの問題は、レジスタ302などの位置合せ記憶レジス
タに特に必要な回路を製造するのに大きなシリコン面積
を必要とすることである。この問題は、実施形態によっ
て並列の誤位置合せロードが許容されるときにより大き
くなり、位置合せハードウェアおよび位置合せレジスタ
の量を増大させる。したがって、このような位置合せレ
ジスタがチップ上に多数形成されることになる。
【0011】したがって、本発明の目的は、当技術分野
における上記の問題点を克服し、以下の開示により明ら
かになるその他の改良および利点を提供することであ
る。
【0012】
【課題を解決するための手段】本発明の一つの態様は、
別々のワード内に記憶されたバイトを位置合せするため
の複数の実行ユニットと、リネーム・レジスタと、アー
キテクチャ・レジスタと、それぞれ複数のワードを有す
るデータ・ブロックを記憶するキャッシュとを有するマ
イクロプロセッサにおいて、有用な方法に関連する。一
実施形態では、この方法は、キャッシュから第1のワー
ドを読み取る段階と、第1のワードの少なくとも1つの
バイトをリネーム・レジスタの第1のバイトと位置合せ
するために第1のワードを回転させる段階と、リネーム
・レジスタに第1のワードの少なくとも1つのバイトを
記憶する段階と、キャッシュから第2のワードを読み取
る段階と、第2のワードの少なくとも1つのバイトをリ
ネーム・レジスタの第2のバイトと位置合せするために
第2のワードを回転させる段階と、リネーム・レジスタ
に第2のワードの少なくとも1つのバイトを記憶する段
階とを含む。
【0013】本発明のもう1つの態様は、マイクロプロ
セッサのキャッシュの別々のワードに記憶されたバイト
を位置合せする回路に関する。一実施形態では、この回
路は、キャッシュから第1のワードを読み取る手段と、
第1のワードの少なくとも1つのバイトをリネーム・レ
ジスタの第1のバイトと位置合せするために第1のワー
ドを回転させる手段と、リネーム・レジスタに第1のワ
ードの少なくとも1つのバイトを記憶する手段と、キャ
ッシュから第2のワードを読み取る手段と、第2のワー
ドの少なくとも1つのバイトをリネーム・レジスタの第
2のバイトと位置合せするために第2のワードを回転さ
せる手段と、リネーム・レジスタに第2のワードの少な
くとも1つのバイトを記憶する手段とを含む。
【0014】
【発明の実施の形態】図3は、本発明の実施形態による
情報を処理するプロセッサ10のシステムのブロック図
である。この実施形態において、プロセッサ10は、単
一集積回路スーパースカラ・マイクロプロセッサであ
る。したがって、さらに後で説明するように、プロセッ
サ10は、様々なユニット、レジスタ、バッファ、メモ
リその他の部分を含み、それらはすべて集積回路によっ
て構成される。図1に示したように、システム・バス1
1は、プロセッサ10のバス・インタフェース・ユニッ
ト(「BIU」)12に接続される。BIU12は、プ
ロセッサ10とシステム・バス11の間での情報の転送
を制御する。
【0015】BIU12は、プロセッサ10の命令キャ
ッシュ14とデータ・キャッシュ16に接続される。命
令キャッシュ14は、シーケンサ・ユニット18に命令
を出力する。シーケンサ・ユニット18は、命令キャッ
シュ14からのその命令に応答して、プロセッサ10の
他の実行回路に命令を選択的に出力する。
【0016】プロセッサ10の実行回路は、シーケンサ
・ユニット18の他に、複数の実行ユニット、すなわち
分岐ユニット20、固定小数点ユニットA(「FXU
A」)22、固定小数点ユニットB(「FXUB」)2
4、複合固定小数点ユニット(「CFXU」)26、ロ
ード/記憶ユニット(「LSU」)28および浮動小数
点ユニット(「FPU」)30を含む。FXUA22、
FXUB24、CFXU26およびLSU28は、汎用
アーキテクチャ・レジスタ(「GPR」)32および固
定小数点リネーム・バッファ34から、そのソース・オ
ペランド情報を入力する。さらに、FXUA22とFX
UB24は、キャリー・ビット(「CA」)レジスタ4
2から「キャリー・ビット」を入力する。FXUA2
2、FXUB24、CFXU26およびLSU28は、
固定小数点リネーム・バッファ34内の選択したエント
リに記憶するために、演算の結果(宛先オペランド情
報)を出力する。また、CFXU26は、ソース・オペ
ランド情報と宛先オペランド情報を、特殊レジスタ
(「SPR」)40との間でやりとりする。
【0017】FPU30は、浮動小数点アーキテクチャ
・レジスタ(「FPR」)36と浮動小数点リネーム・
バッファ38からソース・オペランド情報を入力する。
FPU30は、浮動小数点リネーム・バッファ38の選
択したエントリに記憶するために、演算の結果(宛先オ
ペランド情報)を出力する。
【0018】LSU28は、ロード命令に応答して、デ
ータ・キャッシュ16から情報データを入力し、その情
報を、リネーム・バッファ34と38のうち選択された
一方に複写する。その情報がデータ・キャッシュ16に
記憶されていない場合は、データ・キャッシュ16は、
(BIU12とシステム・バス11を介して)その情報
をシステム・バス11に接続されたシステム・メモリ3
9から入力する。さらに、データ・キャッシュ16は、
データ・キャッシュ16から(BIU12とシステム・
バス11を介して)システム・バス11に接続されたシ
ステム・メモリ39に情報を出力することができる。L
SU28は、記憶命令に応答して、GPR32とFPR
36のうち選択された一方から情報を入力し、その情報
をデータ・キャッシュ16に複写する。
【0019】シーケンサ・ユニット18は、完了ユニッ
ト18aとディスパッチ・ユニット18bを含む。ディ
スパッチ・ユニット18bは、命令を復号して適切な実
行ユニットに発行する論理回路を含む。各命令ごとにリ
オーダ・バッファ・エントリが割り振られ、ディスパッ
チ待ち行列内の命令間の依存関係が検査される。レジス
タ・ファイルからオペランドをフェッチするときに、リ
ネーム・バッファでオペランドが探索される。ディスパ
ッチ待ち行列内の命令よりも前に他の命令によって書き
込まれたオペランドは、その命令のリネーム・バッファ
のタグが提供され、そうでない場合は、リネーム・バッ
ファまたはレジスタ・ファイルが、オペランドまたはタ
グを提供する。命令がディスパッチされると、フェッチ
・ユニットは、ディスパッチ待ち行列がさらに他の命令
で更新できることを知らされる。
【0020】完了ユニット18aは、実行した命令をリ
オーダ・バッファから引き上げ、例外条件を認識し、後
続の命令でプログラム順に行われる演算を破棄する。命
令は、実行し終えたときにリオーダ・バッファから引き
上げられ、それよりも前のすべての命令は完了してい
る。命令の結果は、適切なレジスタ・ファイルに書き込
まれ、完了時以後にリネーム・バッファから除去され
る。完了すると、その命令によって影響を受ける他のリ
ソースが更新される。
【0021】ディスパッチ・ユニット18bが、実行ユ
ニットに命令をディスパッチするとき、その命令は、命
令番号、目標リネーム・バッファおよびオペランド・ソ
ースを表すタグと共に、完了ユニット18aに同時にデ
ィスパッチされる。完了ユニット18aは、命令が先入
れ先出し(「FIFO」)バッファにディスパッチされ
る順序を維持する。完了ユニット18aは、リネーム・
レジスタと関連する有効ビットを監視する。実行ユニッ
トがリネーム・レジスタの有効ビットをセットして、リ
ネーム・レジスタが有効な情報を含むことを示すとき、
完了ユニットのFIFOバッファ内の対応する命令に終
了のマークが付けられる。FIFOバッファ内に終了し
た命令よりも前の未終了の命令がない場合は、完了ユニ
ット18aは、終了した命令の結果をアーキテクチャ・
レジスタに書き戻す。終了した命令よりも前の未終了の
命令がある場合は、完了ユニット18aは、未終了の命
令が終了するまで待ってからアーキテクチャ・レジスタ
への書き戻しを行う。これにより、未終了の命令のうち
の1つが例外をもたらす場合にアーキテクチャ・レジス
タへの間違ったデータの書込みが防止される。
【0022】シーケンサ・ユニット18は、情報をGP
R32およびFPR36に入力しそこから出力する。分
岐ユニット20は、シーケンサ・ユニット18から、命
令とプロセッサ10の現在の状態を示す信号を入力す
る。そのような信号に応答して、分岐ユニット20は、
プロセッサ10が実行する一連の命令を記憶する適切な
メモリ・アドレスを示す信号を(シーケンサ・ユニット
18に)出力する。シーケンサ・ユニット18は、分岐
ユニット20からのそのような信号に応答して、命令キ
ャッシュ14から示された一連の命令を入力する。一連
の命令のうちの1つまたは複数が命令キャッシュ14に
記憶されていない場合、命令キャッシュ14は、その命
令をシステム・バス11に接続されたシステム・メモリ
39から(BIU12およびシステム・バス11を介し
て)入力する。
【0023】シーケンサ・ユニット18は、命令キャッ
シュ14からの入力された命令に応答して、命令を、実
行ユニット20、22、24、26、28、30のうち
の選択された1つに選択的にディスパッチする。各実行
ユニットは、特定クラスの命令のうちの1つまたは複数
の命令を実行する。たとえば、FXUA22とFXUB
24は、加算、減算、AND演算、OR演算、XOR演
算などの第1クラスの固定小数点演算をオペランドに対
して実行する。CFXU26は、固定小数点の乗算や除
算などの第2のクラスの固定小数点演算をソース・オペ
ランドに対して実行する。FPU30は、浮動小数点の
乗算や除算などの浮動小数点演算をソース・オペランド
に対して実行する。
【0024】情報が、リネーム・バッファ34のうちの
選択された1つに記憶されるとき、その情報は、選択し
たリネーム・バッファが割り振られる命令によって指定
される記憶位置(たとえば、GPR32またはCAレジ
スタ42の一方)と関連付けられる。リネーム・バッフ
ァ34のうちの選択された1つに記憶された情報は、シ
ーケンサ・ユニット18からの信号に応答して、GPR
32(またはCAレジスタ42)のうちの関連する1つ
に複写される。シーケンサ・ユニット18は、その情報
を生成した命令の「完了」に応答して、リネーム・バッ
ファ34のうちの選択された1つに記憶された情報の複
写を指示する。そのような複写は、「ライトバック」と
呼ばれる。
【0025】リネーム・バッファ38のうちの選択され
た1つに情報が記憶されると、その情報は、FPR36
のうちの1つと関連付けられる。リネーム・バッファ3
8のうちの選択された1つに記憶された情報は、シーケ
ンサ・ユニット18からの信号に応答してFPR36の
うちの関連する1つに複写される。シーケンサ・ユニッ
ト18は、情報を生成した命令の「完了」に応答して、
リネーム・バッファ38のうちの選択された1つに記憶
された情報の複写を指示する。
【0026】プロセッサ10は、実行ユニット20、2
2、24、26、28、30の様々な実行ユニットで複
数の命令を同時に処理することにより高いパフォーマン
スを達成する。したがって、各命令は、それぞれ他の命
令の段階と並列に実行できる一連の段階として処理され
る。そのような技術は、先に論じたように「パイプライ
ン方式」と呼ばれる。一般に、命令は、6つの段階、す
なわちフェッチ、復号、ディスパッチ、実行、完了およ
び「ライトバック」として処理される。
【0027】フェッチ段階において、シーケンサ・ユニ
ット18は、分岐ユニット20およびシーケンサ・ユニ
ット18に関して先に論じた一連の命令を記憶する1つ
または複数のメモリ・アドレスから、1つまたは複数の
命令を(命令キャッシュ14から)選択的に入力する。
【0028】復号段階において、シーケンサ・ユニット
18は、フェッチした命令を最高4つまで復号する。
【0029】ディスパッチ段階において、シーケンサ・
ユニット18は、ディスパッチされた命令の結果(宛先
オペランド情報)用にリネーム・バッファのエントリを
予約した後、実行ユニット20、22、24、26、2
8、30のうちの(復号段階における復号に応答して)
選択された1つに、復号された命令を最高4つまで選択
的にディスパッチする。ディスパッチ段階において、デ
ィスパッチされた命令のオペランド情報が、選択された
実行ユニットに提供される。プロセッサ10は、命令を
プログラム・シーケンスの順序でディスパッチする。
【0030】実行段階において、実行ユニットは、ディ
スパッチされた命令を実行し、演算の結果(宛先オペラ
ンド情報)を出力して、前に詳しく述べたようにリネー
ム・バッファ34およびリネーム・バッファ38の選択
されたエントリに記憶する。このように、プロセッサ1
0は、そのプログラム・シーケンスの順序に関係のない
順序で命令を実行することができる。
【0031】完了段階において、シーケンサ・ユニット
18は、命令が「完了」したことを示す。プロセッサ1
0は、命令をそのプログラム・シーケンスの順序で「完
了」する。
【0032】ライトバック段階において、シーケンサ・
ユニット18は、リネーム・バッファ34および38か
らGPR32とFPR36にそれぞれ情報を複写するよ
うに指示する。シーケンサ・ユニット18は、選択され
たリネーム・バッファに記憶された情報の複写を指示す
る。同様に、特定の命令のライトバック段階において、
プロセッサ10は、その特定の命令に応答してアーキテ
クチャ状態を更新する。プロセッサ10は、各命令の
「ライトバック」段階をプログラム・シーケンスの順序
で処理する。プロセッサ10が、特定の状況において命
令完了段階とライトバック段階をマージすると有利であ
る。
【0033】図4は、、位置合せされたデータがリネー
ム・レジスタに直接書き込まれる、本発明の実施形態に
よる概略図である。位置合せレジスタをなくすために、
特定の命令IDに関連付けられたリネーム・レジスタを
利用して、データ・キャッシュの最初の読み取りによる
データを一時的に記憶する。この実施形態では、ワード
がキャッシュからバイト・ローテータ500に提供され
る。バイト・ローテータ500は、キャッシュから提供
されたワード内のバイトを回転させ、このデータを4本
の8ビット・データ線500a〜500dに出力する。
これらのデータ線はそれぞれ、リネーム・レジスタ・ブ
ロック512にデータを渡すデータ・バス510に結合
される。
【0034】データ・バス510は、4本の8ビット・
データ線510a〜510dを含む。バイト・ローテー
タ500からの出力データ線500a〜500dはそれ
ぞれ、図のように、トライステート・バッファ502、
504、506、508を介して対応する8ビット・デ
ータ線510a〜510dに結合される。トライステー
ト・バッファは、選択線503、505、507、50
9によってそれぞれ操作される。
【0035】リネーム・レジスタ・ブロック512は、
n個のリネーム・レジスタR0〜Rnを含む。各リネー
ム・レジスタは、1ワード幅であり、バイト・アドレス
指定可能である。たとえば、リネーム・レジスタR0
は、4つのバイトR0a〜R0dを含み、これらはぞれ
ぞれデータ・バス510の対応する8ビット・データ線
510a〜510dによってアクセス可能である。例示
のために、図ではデータ・バス510は、リネーム・レ
ジスタR0に直接結合してある。しかし、実際には、デ
ータ・バス510は、レジスタR0〜Rnのそれぞれに
多重接続され、それによりバイト・ローテータ500は
リネーム・レジスタ・ブロック512内のレジスタの任
意のバイトにデータを渡すことができることを理解され
たい。
【0036】バイト・ローテータ500は、キャッシュ
から受け取ったワードのバイトを、8ビット出力データ
線500a〜500dのいずれかと、すなわちリネーム
・レジスタR0の任意のバイトR0a〜R0dと位置合
せするように適合されている。図5に、適切なバイト・
ローテータの例を示す。この事例では、キャッシュから
来る32ビット・データ線は4つの8ビット・データ線
に入り、それぞれマルチプレクサ700、702、70
4、706に別々の入力として提供される。各マルチプ
レクサの動作は、選択線701、703、705、70
7によってそれぞれ制御される。図から明らかなよう
に、32ビット・データ線に渡されたワードの任意のバ
イトは、対応するマルチプレクサの適切な選択線の活動
化によって、マルチプレクサ700、702、704、
706のどれから出力されることもできる。したがっ
て、ローテータという言葉を使用するが、いくつかの実
施形態では、バイトは設計上の好みで任意の順序で配置
することができるので、バイトの回転とは、バイトを単
に右か左にシフトするよりも複雑な動作を指すことを理
解されたい。
【0037】動作中、図4の実施形態は、キャッシュか
ら受け取ったワードの任意のバイトを回転させ、トライ
ステート・バッファ502、504、506、508を
選択的に動作させることによって、リネーム・レジスタ
・ブロック512内の任意のリネーム・レジスタの任意
のバイトに記憶することができる。このことを、以下の
例に関してより詳細に説明する。再び図1を参照する
と、バイト1〜4が、キャッシュ100から読み取ら
れ、位置合せされ、リネーム・レジスタR0のバイトR
0a〜R0dにそれぞれ記憶される。最初の読み取り
で、バイト0〜3を含むキャッシュ・ブロック0からワ
ードがバイト・ローテータ500に渡される。バイト・
ローテータ500は、このデータを左に1バイト回転
し、それにより、バイト1、2、3は、出力データ線5
00a、500b、500cとそれぞれ位置合せされ
る。次に、バイト1、2、3は、トライステート・バッ
ファ502、504、506を介してR0a、R0b、
R0cに渡される。トライステート・バッファ508は
高インピーダンス・モードにされ、このときバイトR0
dは書き込まれない。
【0038】2度目の読み取りで、バイト4〜7を含む
キャッシュ・ブロック0のワード1がバイト・ローテー
タ500に渡される。バイト・ローテータ500は、こ
のデータを右に3バイト回転させ、それによりバイト4
が出力線500dと位置合せされる。このデータは、次
に、トライステート・バッファ508を活動化すること
によってR0dに書き込まれる。バイトR0dが書き込
まれている間、トライステート・バッファ502、50
4、506は、高インピーダンス・モードを維持するよ
うに設定され、それによりバイトR0a〜R0c内のデ
ータは上書きされない。これにより、2度目の読み取り
の終了時に、バイト1、2、3および4が正しく位置合
せされ、リネーム・レジスタR0のバイトR0a〜R0
dにそれぞれ記憶される。この位置合せされたデータ
は、次に、プロセッサの他の実行ユニットによってアク
セスされ、あるいはアーキテクチャ・レジスタに書き戻
すこともできる。キャッシュから読み取られるバイトが
2つの別のキャッシュ・ブロックに及ぶときにもこれと
類似の動作が行われる。たとえば、バイト6〜9からな
るワードを位置合せする場合、最初の読み取りで、ブロ
ック0のワード1が読み取られ、左に2バイト回転され
る。次に、バイト6および7が、R0a〜R0bに記憶
される。2度目の読み取りで、キャッシュ・ブロック1
のワード0が読み取られ、右に2バイト回転され、それ
により、バイト8および9が位置合せされ、次にR0c
とR0dにそれぞれ書き込まれる。
【0039】当業者には、本発明が32ビット・システ
ムに制限されないことは明らかであろう。以上説明した
特定の実施形態を、所望のサイズのキャッシュ・ブロッ
クとリネーム・レジスタを有するプロセッサに適用する
ことは、全く当業者の技量の範囲内である。また、本発
明を、ニブルやワードなどの様々なメモリ境界に基づい
てデータを位置合せするプロセッサに適用することも当
業者の技量の範囲内である。さらに、本発明は、ワード
が4バイトからなる実施形態に関して詳しく説明した
が、ワードという用語はそれに制限されず、選択された
術語により任意の数のバイトからなることができ、たと
えば、バイトを、他の一般に利用されるアーキテクチャ
において2バイトとして定義することもできる。
【0040】本発明を特定の実施形態に関して具体的に
示し説明したが、当業者は、本発明の精神および範囲か
ら逸脱せずに形態および詳細の様々な変更を行えること
を理解されよう。
【図面の簡単な説明】
【図1】従来のキャッシュ・メモリのブロック図であ
る。
【図2】従来の位置合せ回路の回路図である。
【図3】本発明の一実施形態による位置合せ回路を含む
処理ユニットのブロック図である。
【図4】本発明の一実施形態によるデータ位置合せを提
供する回路の回路図である。
【図5】図4に示した本発明の実施形態に役立つバイト
・ローテータの回路図である。
【符号の説明】
10 プロセッサ 11 システム・バス 12 バス・インタフェース・ユニット 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 分岐ユニット 22 固定小数点ユニットA 24 固定小数点ユニットB 26 複合固定小数点ユニット 28 ロード/記憶ユニット 30 浮動小数点ユニット 32 汎用アーキテクチャ・レジスタ 34 固定小数点リネーム・バッファ 36 浮動小数点アーキテクチャ・レジスタ 38 浮動小数点リネーム・バッファ 40 特殊レジスタ 42 キャリー・ビット・レジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ソウンミヤ・マリック アメリカ合衆国78729 テキサス州オー スチン パートリッジ・ベンド・ドライ ブ 13032 (56)参考文献 特開 平7−271585(JP,A) 特開 平6−332792(JP,A) 特開 平7−13953(JP,A) 特開 平8−30508(JP,A) 特開 昭53−76721(JP,A) 特開 昭64−81033(JP,A) 特開 昭61−177540(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/38 G06F 12/00 - 12/06

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】キャッシュ(14)からデータ・ブロック
    を受け入れ、受け入れられたデータ・ブロックが含む単
    位データの位置合わせを行う位置合わせ装置であって、
    前記データ・ブロックは、それぞれn+1(n≧1)個
    のワードi(n≧i≧0)を含み、前記ワードiはそれ
    ぞれd(d≧1)個の単位データij(d≧j≧1)を
    含み、 それぞれ前記ワードiを順次、受け入れ、受け入れたワ
    ードiに含まれる前記単位データijのいずれかを選択
    するd個のマルチプレクサj(700〜706)と、 それぞれ前記マルチプレクサjと接続または切断され、
    前記接続されたマルチプレクサjから入力される前記単
    位データを記憶する(n+1)×d個のレジスタkj
    (n≧k≧1;512)と、 互いに接続された前記マルチプレクサjと前記レジスタ
    kjとの間を接続または切断するd個のバッファj(5
    02〜508)とを有し、 前記キャッシュから前記データ・ブロックに含まれるワ
    ードiを順次、読み出し、読み出したワードiに含まれ
    る前記単位データijの位置を前記マルチプレクサjで
    順次、回転し、前記位置が回転された単位データij
    を、前記バッファjで前記マルチプレクサjに接続した
    前記レジスタkjに順次、記憶させることにより、前記
    単位データの位置合わせを行うように構成された位置合
    わせ装置。
  2. 【請求項2】前記単位データijはバイト構成である請
    求項1に記載の位置合わせ装置。
  3. 【請求項3】前記(n+1)×d個のレジスタkjはd
    個ずつ、n+1個のリネーム・レジスタkに分けられ、 前記d個のマルチプレクサは、それぞれ前記データ・ブ
    ロックに含まれるワー ドiを順次、受け入れ、受け入れ
    たワードiに含まれる前記単位データの位置を回転し、 前記バッファjは、前記単位データの位置が回転された
    ワードiを記憶させようとするレジスタkjの0個以上
    とマルチプレクサjとを接続し、前記単位データの位置
    が回転されたワードiを記憶させようとするレジスタk
    j以外とマルチプレクサjとを切断し、 前記単位データの位置が回転されたワードiが記憶され
    ようとする前記リネーム・レジスタkの0個以上は、前
    記バッファjを介して接続された前記d個のマルチプレ
    クサから前記位置が回転された単位データを受け入れて
    記憶する請求項1または2に記載の位置合わせ装置。
  4. 【請求項4】前記データ・ブロックは、それぞれ1つ以
    上の前記単位データijを含む命令データを含み、 前記命令データの境界と前記ワードiの境界とを合わせ
    るように、前記単位データijの位置合わせを行う請求
    項1〜3のいずれかに記載の位置合わせ装置。
  5. 【請求項5】プロセッサにおいて、キャッシュからデー
    タ・ブロックを受け入れ、受け入れられたデータ・ブロ
    ックが含む単位データの位置合わせを行う位置合わせ方
    法であって、前記データ・ブロックは、それぞれn+1
    (n≧1)個のワードi(n≧i≧0)を含み、前記ワ
    ードiはそれぞれd(d≧1)個の単位データij(d
    ≧j≧1)を含み、前記プロセッサは、それぞれ前記ワ
    ードiを順次、受け入れ、受け入れたワードiに含まれ
    る前記単位データijのいずれかを選択するd個のマル
    チプレクサjと、それぞれ前記マルチプレクサjと接続
    または切断され、前記接続されたマルチプレクサjから
    入力される前記単位データを記憶する(n+1)×d個
    のレジスタkj(n≧k≧1)と、互いに接続された前
    記マルチプレクサjと前記レジスタkjとの間を接続ま
    たは切断するd個のバッファjとを有し、 前記キャッシュから前記データ・ブロックに含まれるワ
    ードiを順次、読み出 し、 読み出したワードiに含まれる前記単位データijの位
    置を前記マルチプレクサjを用いて順次、回転し、 前記位置が回転された単位データijを、前記バッファ
    jで前記マルチプレクサjに接続した前記レジスタkj
    に順次、記憶させる位置合わせ方法。
  6. 【請求項6】前記単位データijはバイト構成である請
    求項5に記載の位置合わせ方法。
  7. 【請求項7】前記(n+1)×d個のレジスタkjはd
    個ずつ、n+1個のリネーム・レジスタkに分けられ、 前記d個のマルチプレクサにより、それぞれ前記データ
    ・ブロックに含まれるワードiを順次、受け入れ、受け
    入れたワードiに含まれる前記単位データの位置を回転
    し、 前記バッファjにより、前記単位データの位置が回転さ
    れたワードiを記憶させようとするレジスタkjの0個
    以上とマルチプレクサjとを接続し、前記単位データの
    位置が回転されたワードiを記憶させようとするレジス
    タkj以外とマルチプレクサjとを切断し、 前記単位データの位置が回転されたワードiが記憶され
    ようとする前記リネーム・レジスタkの0個以上によ
    り、前記バッファjを介して接続された前記d個のマル
    チプレクサから前記位置が回転された単位データを受け
    入れて記憶する請求項5または6に記載の位置合わせ方
    法。
  8. 【請求項8】前記データ・ブロックは、それぞれ1つ以
    上の前記単位データijを含む命令データを含み、 前記命令データの境界と前記ワードiの境界とを合わせ
    るように、前記単位データijの位置合わせを行う請求
    項5〜7のいずれかに記載の位置合わせ方法。
JP18112897A 1996-07-16 1997-07-07 命令データを位置合せするための方法および装置 Expired - Fee Related JP3177194B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/680808 1996-07-16
US08/680,808 US5802556A (en) 1996-07-16 1996-07-16 Method and apparatus for correcting misaligned instruction data

Publications (2)

Publication Number Publication Date
JPH10161872A JPH10161872A (ja) 1998-06-19
JP3177194B2 true JP3177194B2 (ja) 2001-06-18

Family

ID=24732599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18112897A Expired - Fee Related JP3177194B2 (ja) 1996-07-16 1997-07-07 命令データを位置合せするための方法および装置

Country Status (2)

Country Link
US (1) US5802556A (ja)
JP (1) JP3177194B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US6279044B1 (en) * 1998-09-10 2001-08-21 Advanced Micro Devices, Inc. Network interface for changing byte alignment transferring on a host bus according to master and slave mode memory and I/O mapping requests
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
US6230238B1 (en) * 1999-03-02 2001-05-08 Motorola, Inc. Method and apparatus for accessing misaligned data from memory in an efficient manner
US6393446B1 (en) 1999-06-30 2002-05-21 International Business Machines Corporation 32-bit and 64-bit dual mode rotator
US6289428B1 (en) * 1999-08-03 2001-09-11 International Business Machines Corporation Superscaler processor and method for efficiently recovering from misaligned data addresses
US6820195B1 (en) * 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US6970996B1 (en) * 2000-01-04 2005-11-29 National Semiconductor Corporation Operand queue for use in a floating point unit to reduce read-after-write latency and method of operation
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7937559B1 (en) 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US20060174066A1 (en) * 2005-02-03 2006-08-03 Bridges Jeffrey T Fractional-word writable architected register for direct accumulation of misaligned data
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US8359433B2 (en) 2010-08-17 2013-01-22 Intel Corporation Method and system of handling non-aligned memory accesses
JP6344022B2 (ja) * 2014-04-08 2018-06-20 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN107066238A (zh) * 2017-04-18 2017-08-18 上海兆芯集成电路有限公司 执行高速缓存行未对齐加载指令的系统和方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0547247B1 (en) * 1991-07-08 2001-04-04 Seiko Epson Corporation Extensible risc microprocessor architecture
US5497493A (en) * 1993-09-30 1996-03-05 Intel Corporation High byte right-shift apparatus with a register alias table
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5577200A (en) * 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming

Also Published As

Publication number Publication date
US5802556A (en) 1998-09-01
JPH10161872A (ja) 1998-06-19

Similar Documents

Publication Publication Date Title
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3588755B2 (ja) コンピュータシステム
US6230254B1 (en) System and method for handling load and/or store operators in a superscalar microprocessor
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US6192465B1 (en) Using multiple decoders and a reorder queue to decode instructions out of order
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US6360317B1 (en) Predecoding multiple instructions as one combined instruction and detecting branch to one of the instructions
JP3177194B2 (ja) 命令データを位置合せするための方法および装置
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP2002521761A (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
JP2694124B2 (ja) 処理システム及び操作方法
JP2742393B2 (ja) オペレーションの処理システム及び方法
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
JPH11272464A (ja) 投機的境界不整列ロ―ド操作方法及び装置
JP2682812B2 (ja) オペレーションの処理システム及び方法
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
JPH11272467A (ja) ス―パスカラ・プロセッサを操作するための方法および回路装置
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US6708267B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US6587941B1 (en) Processor with improved history file mechanism for restoring processor state after an exception
US6233672B1 (en) Piping rounding mode bits with floating point instructions to eliminate serialization
US5878242A (en) Method and system for forwarding instructions in a processor with increased forwarding probability
US6393446B1 (en) 32-bit and 64-bit dual mode rotator

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees