JP2001356905A - スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法 - Google Patents

スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法

Info

Publication number
JP2001356905A
JP2001356905A JP2001130880A JP2001130880A JP2001356905A JP 2001356905 A JP2001356905 A JP 2001356905A JP 2001130880 A JP2001130880 A JP 2001130880A JP 2001130880 A JP2001130880 A JP 2001130880A JP 2001356905 A JP2001356905 A JP 2001356905A
Authority
JP
Japan
Prior art keywords
register
mapping
instruction
data
physical
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
JP2001130880A
Other languages
English (en)
Inventor
Nicholas J Richardson
ジェイ. リチャードソン ニコラス
Lun Bin Huang
ビン ホワン ルン
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.)
ST MICROELECTRONICS Inc
STMicroelectronics lnc USA
Original Assignee
ST MICROELECTRONICS Inc
STMicroelectronics lnc USA
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 ST MICROELECTRONICS Inc, STMicroelectronics lnc USA filed Critical ST MICROELECTRONICS Inc
Publication of JP2001356905A publication Critical patent/JP2001356905A/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift 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/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
    • 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/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 性能上の犠牲を発生することなしにデータ依
存性を取扱うことが可能なレジスタスタックに基づいた
パイプライン型プロセッサを提供する。 【解決手段】 本発明のデータプロセッサは、データプ
ロセッサによって実行される命令によって必要とされる
オペランドを格納する複数個のアーキテクチャ用レジス
タを具備するレジスタスタックを有している。更に、N
個の処理ステージを具備している命令実行パイプライン
が設けられており、各処理ステージは命令実行パイプラ
インによって実行中の係属中の命令と関連する複数個の
実行ステップのうちの1つを実施する。更に、N個の処
理ステージのうちの少なくとも1つと関連している少な
くとも1個のマッピングレジスタが設けられており、そ
れは係属中の命令によってアクセスされたアーキテクチ
ャ用スタックレジスタと関連する物理的レジスタを決定
するために使用することが可能なマッピングデータを格
納している。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、大略、データ処理
システムに関するものであって、更に詳細には、スタッ
クに基づいたパイプライン型プロセッサにおけるデータ
の依存性を取扱うシステムに関するものである。
【0002】
【従来の技術】高性能コンピュータに対する要求は、現
在の技術水準のマイクロプロセッサが最小量の時間で命
令を実行することを必要とする。命令実行時間を減少さ
せ、それによってプロセッサの処理能力を増加させるた
めに、多数の異なるアプローチがとられている。プロセ
ッサ処理能力を増加させる1つの方法は、パイプライン
アーキテクチャを使用することであり、その場合には、
プロセッサがパイプラインを形成する別個の処理ステー
ジに分割される。命令がアッセンブリラインの態様で異
なるステージにおいて実行される基本的なステップに分
解される。
【0003】パイプライン型プロセッサは幾つかの異な
る機械命令を同時的に実行することが可能である。この
ことは各命令に対する処理ステップを、各々が別個のパ
イプラインステージによって実行される幾つかの別々の
処理フェーズに分解することによって達成される。従っ
て、各命令はその実行を完了するためには各パイプライ
ンステージを介して逐次的に通過せねばならない。一般
的に、与えられた命令は一度に1つのパイプラインステ
ージのみによって処理され、1つのクロックサイクルが
各ステージに対して必要とされる。命令は同一の順番で
パイプラインステージを使用し、且つ、典型的に、単一
のクロックサイクルに対して各ステージ内に止まるに過
ぎないので、NステージパイプラインはN個の命令を同
時的に処理することが可能である。命令で一杯となる
と、N個のパイプラインステージを具備するプロセッサ
は各クロックサイクルに対して1個の命令を完了する。
【0004】パイプラインプロセッサの実行速度は、理
論的には、等価な非パイプライン型プロセッサよりもN
倍高速である。非パイプライン型プロセッサは次ぎの命
令へ進行する前に1つの命令の実行を完了するプロセッ
サである。典型的に、パイプラインオーバーヘッド及び
その他のファクタがパイプライン型プロセッサが非パイ
プライン型プロセッサと比較して有する効果的な実行速
度を幾分減少させる。
【0005】簡単化した5ステージプロセッサパイプラ
インは命令フェッチ (IF)ステージと、デコード (D
CD)ステージと、オペランドフェッチ (OF)ステージ
と、実行 (EXE)ステージと、ライトバック (WBK)
ステージとを有することが可能である。更に、該プロセ
ッサは実行用のプログラム命令を格納する命令キャッシ
ュ、そうでなければプロセッサメモリ内に格納されるデ
ータオペランドを一時的に格納するデータキャッシュ、
及び一時的にデータオペランドを格納するレジスタスタ
ックを有することが可能である。
【0006】命令フェッチステージは、命令キャッシュ
から実行用の命令をフェッチし、且つそれを命令フェッ
チバッファ (IFB)内へ格納する。デコードステージ
は命令キャッシュ内の命令フェッチバッファからの命令
を受取り且つその命令をその後のパイプラインステージ
を実行ために直接的に使用することが可能な1組の信号
へデコードする。オペランドフェッチステージはデータ
キャッシュ又はレジスタスタック内のレジスタから必要
とされるオペランドをフェッチする。実行ステージは、
オペランドフェッチステージによってフェッチされたオ
ペランドに関して実際のプログラムされている動作 (例
えば、加算、乗算、除算、等)を実施し且つその結果を
発生する。次いで,ライトバックステージは実行ステー
ジによって発生された結果をデータキャッシュ又はレジ
スタスタック内へ書き戻す。
【0007】各パイプラインステージが1つのクロック
サイクルでその動作を完了するものと仮定すると、上述
した5ステージプロセッサパイプラインは1つの命令を
処理するのに5個のクロックサイクルを必要とする。前
述したように、パイプラインが一杯になると、理論的に
は、クロックサイクル毎に1つの命令を完了することが
可能である。
【0008】典型的なパイプラインプログラム命令シー
ケンスは、前の命令の結果及び効果に関しての依存性を
具備する幾つかの命令を有している場合がある。その結
果、パイプラインの異なるステージを占有する命令の間
である程度の相互作用が存在するのが通常である。例え
ば、与えられた命令がそのオペランドとして先の命令か
らのデータ結果を使用することを必要とする場合があ
る。
【0009】レジスタファイル内の3個のレジスタ
(A,B,C)を有する前述した5ステージパイプライン
及び3個の命令を有する仮のプログラムシーケンスにつ
いて検討する。最初の2つの命令は、メモリからの各1
つのオペランドをレジスタA及びBの夫々にロードす
る。3番目の命令はレジスタAの内容をインクリメント
させる。このプログラムは以下のように表すことが可能
である。
【0010】(1) Ld Mem1,A (メモリ位
置1の内容をレジスタA内にロード) (2) Ld Mem2,B (メモリ位置2の内容を
レジスタB内にロード) (3) Inc A (レジスタAの内容をイ
ンクリメント) この例の場合には、インクリメント命令は第一命令に関
しての依存性を有している。インクリメント命令は、そ
れがレジスタAの内容をインクリメントする前に、第一
命令がメモリ位置1の内容でレジスタAをロードするま
で待機せねばならない。
【0011】従来技術においては、このようなデータの
依存性を取扱うのに通常3つの方法が存在している。第
一に、問題がない場合があり且つ何等特別なアクション
が必要とされない場合がある。依存性命令 (例えば、イ
ンクリメント)が影響されない蓋然性がある。これは、
第三命令がレジスタA内のデータをインクリメントさせ
る準備がなされる時までに、メモリデータがレジスタA
内にロードされる点までパイプラインが第一命令を処理
している場合である。これは、オペランドフェッチステ
ージへ入る場合に第三命令がレジスタAの新たな値を必
要とする前に、第一命令が実行ステージ及びライトバッ
クステージを介して進行し且つその結果をレジスタA内
へ書込むのに充分な時間を2個又はそれ以上のクロック
サイクルが与える場合である。
【0012】第二に、データが必要とされる場合に使用
可能であるように、1つ又はそれ以上のステージの処理
を遅延させることが可能な場合がある。例えば、インク
リメント命令は、インクリメント命令がオペランドフェ
ッチステージ内に存在する時までに第一ロード命令の結
果を必要とする。1クロックサイクルの代わりに2クロ
ックサイクルの間インクリメント命令をデコードステー
ジ内に保持することによって、第一命令は実行ステージ
及びライトバックステージを介して進行することが可能
であり、そのことは、インクリメント命令がオペランド
フェッチステージ内に存在する時までにレジスタAが必
要とされるオペランドデータでロードされることとな
る。従って、インクリメント命令に対して1クロックサ
イクル遅延が発生される。
【0013】第三に、選択した動作を除去するか又はバ
イパスすることによってパイプラインステージ間でデー
タを直接的に転送することが可能な場合がある。例え
ば、インクリメント命令がオペランドフェッチステージ
内にあり且つ第一命令がライトバックステージ内にある
場合に、インクリメント命令は第一命令の結果を必要と
する。これらの条件下において、ロード命令はメモリか
らの必要とされるデータをレジスタA内に書き込もうと
する。然しながら、レジスタAへ送られるメモリからの
データは、実際には、ライトバックステージ内の一時的
レジスタ内に存在しており、レジスタAへ転送する準備
がなされている。この点において、該一時的レジスタの
内容はインクリメント命令によって使用するためにオペ
ランドフェッチステージへ直接的に送ることが可能であ
り、それによってレジスタAをバイパスする。このバイ
パスはインクリメント命令が遅延を発生することを防止
する。
【0014】上述した遅延及びバイパス方法は何時1つ
の命令が前の命令の結果に依存するかを検知する論理を
必要とする。上述したような簡単なパイプラインプロセ
ッサの場合には、命令間のデータ依存性の検知は通常レ
ジスタスコアボード (register scoreb
oard)として知られているメカニズムを介して実施
される。レジスタスコアボードは、パイプラインにおい
てアクティブである命令によってアップデートされよう
としているのはプロセッサレジスタ (この例においては
A,B,C)のうちのいずれであるかをトラッキングす
る論理を有している。レジスタスコアボードは、又、任
意の与えられたクロックサイクル期間中に、夫々の命令
によってどのパイプラインステージが占有されているか
を識別する。従って、その後の命令は、レジスタスコア
ボードをチェックして、それが必要とするソースオペラ
ンド (A,B又はC)がパイプライン内の先行する命令
によって発生中であるか否かを決定することが可能であ
る。該ソースオペランドが発生中である場合には、それ
に依存する命令は必要とされるデータを得るためにスト
ール (遅延)動作又はバイパス動作を実施することが可
能である。
【0015】この処理は、命令中に埋め込まれている固
定され割り当てられているコードによって参照される固
定された名前を有するオンチップレジスタを具備する一
般的な殆どの形態のマイクロプロセッサアーキテクチャ
において良好に動作する。これらのアーキテクチャの場
合には、先のパイプラインステージにおける命令によっ
て要求されたソースレジスタが後のパイプラインステー
ジにおける命令のデスティネーション (ターゲット)レ
ジスタであるか否かをチェックすることは比較的簡単で
ある。後のパイプラインステージにおける命令は先のパ
イプラインステージにおける命令に先行する。該プロセ
ッサは、パイプライン内の各命令のソースレジスタ及び
格納 (ターゲット)レジスタアドレスが一致するか否か
を検査することによってこの解析を行うことが可能であ
る。一致が見つかった場合には、適宜の遅延又はバイパ
ス動作が行われる。
【0016】レジスタスタックを基礎としたアーキテク
チャで構成されているパイプラインプロセッサは、パイ
プライン型命令の間でのデータ依存性に対処する場合に
より複雑な問題を有している。この問題は、特定の動作
のデータ結果を格納するアーキテクチャ用レジスタ (即
ち、プログラムによって見られるレジスタ)のアドレス
は最早固定されておらず、命令の実行に応答して動的に
変化するという事実によって発生される。
【0017】例えば、レジスタスタックを基礎としたア
ーキテクチャは、通常、アーキテクチャ用レジスタが先
入先出 (FIFO)スタックとして構成されるという前
提に基づいている。レジスタスタックアーキテクチャに
おいてソースオペランドを必要とする命令は、最初に、
スタックのトップからそれをポップさせ次いで実行が完
了した場合に結果をスタックのトップへプッシュさせる
ことによってスタックのトップからのデータを暗示的に
使用する。従って、全てのスタックエントリは、依存性
のデータがスタックから除去する場合にはスタックのト
ップへ向かって移動し、且つ結果データがスタックへ付
加される場合には、スタックのボトム (底部)ヘ向かっ
て移動する。
【0018】この問題を例示するために、レジスタスタ
ックを基礎としたプロセッサに対して実施した場合の前
の命令シリーズについて検討する。この例の場合には、
レジスタA,B,Cはレジスタスタックとして構成さ
れ、レジスタAは、常に、スタックのトップ (上部)に
あり、レジスタBは中間にあり、レジスタCは底部にあ
る。
【0019】(1) Ld Mem1,A (メモリ位
置1の内容をレジスタA内へロード) (2) Ld Mem2,A (レジスタAの古い内容
をレジスタBへプッシュし、次いでメモリ位置2からの
データをレジスタA内ヘ格納) (3) Inc B (レジスタBの内容を明
示的にインクリメント) この例と前の例との間の基本的な差異は、メモリ1内の
データは最初にレジスタA内にロードされたものである
が、Bをインクリメントさせる命令が実行される時まで
にそれはレジスタB内にあるということである。従っ
て、両方の例の第一命令及び第三命令は、明示的に名前
が付けられたソースレジスタ及びデスティネーションレ
ジスタが異なる場合であっても、同一の依存性を有して
いる。
【0020】従って、レジスタスタックを基礎としたア
ーキテクチャはパイプラインデータ依存性問題をより複
雑なものとさせる。何故ならば、アーキテクチャ用レジ
スタ(即ち、プログラムによって見られるレジスタ)は、
各その後の命令がパイプラインにおいて実行されるに従
って動的に変化するからである。実際に、必要とされる
データ結果が存在するアーキテクチャ用レジスタは、そ
のデータを形成する命令とそのデータを必要とする命令
との間のいずれか又は全ての中間の命令によって変化さ
れる場合がある。
【0021】従って、命令パイプラインの異なるステー
ジの間でのデータ依存性問題によって影響を受けること
がより少ない改良したパイプラインプロセッサに対する
必要性が存在している。特に、命令パイプラインの異な
るステージ間においてデータ依存性が存在する場合に性
能上の犠牲を発生することのないパイプライン型プロセ
ッサ用の改良したレジスタスタックを基礎としたアーキ
テクチャに対する必要性が存在している。更に詳細に
は、アーキテクチャ用レジスタのアドレスを動的に変化
させることが可能であり、性能上の犠牲を発生すること
なしにデータの依存性を取扱うことが可能なレジスタス
タックを基礎としたパイプライン型プロセッサに対する
必要性が存在している。
【0022】
【発明が解決しようとする課題】本発明は、以上の点に
鑑みなされたものであって、上述した如き従来技術の欠
点を解消し、性能上の犠牲を発生することなしにデータ
依存性を取扱うことが可能な改良したデータプロセッサ
及びデータ処理装置及び方法を提供することを目的とす
る。
【0023】
【課題を解決するための手段】本発明によれば改良され
たデータプロセッサが提供され、それは、(1)データ
プロセッサによって実行される命令によって必要とされ
るオペランドを格納することが可能な複数個のアーキテ
クチャ用レジスタを具備するレジスタスタック、(2)
N個の処理ステージを具備している命令実行パイプライ
ンであって、前記N個の処理ステージの各々が命令実行
パイプラインによって実行中の係属中の命令と関連する
複数個の実行ステップのうちの1つを実施することが可
能な命令実行パイプライン、(3)前記N個の処理ステ
ージのうちの少なくとも1つと関連している少なくとも
1個のマッピングレジスタであって、前記係属中の命令
によってアクセスされるアーキテクチャ用スタックレジ
スタと関連する物理的レジスタを決定するために使用す
ることが可能なマッピングデータを格納することが可能
なマッピングレジスタ、を有している。
【0024】本発明の1実施例によれば、該マッピング
データは、物理的レジスタを識別する物理的識別子コー
ドを有している。
【0025】本発明の1実施例によれば、該マッピング
データは、該アーキテクチャ用レジスタを識別する仮想
識別子を有している。
【0026】本発明の別の実施例によれば、該物理的レ
ジスタは、(1)該係属中の命令によって検索されるべ
き第一オペランドを包含しているソースレジスタ、
(2)該第一オペランドが該係属中の命令によって格納
されるべきターゲットレジスタのうちの1つである。
【0027】本発明の更に別の実施例によれば、該少な
くとも1個のマッピングレジスタは、該N個の処理ステ
ージのうちの第一のものと関連する第一マッピングレジ
スタと、該N個の処理ステージのうちの第二のものと関
連している第二マッピングレジスタとを有している。
【0028】本発明の更に別の実施例によれば、該第一
マッピングレジスタは、該第一処理ステージにおいて処
理中の第一命令によってアクセスされる第一アーキテク
チャ用スタックレジスタと関連している第一物理的レジ
スタを決定するために使用することが可能な第一マッピ
ングデータを格納することが可能であり、且つ該第二マ
ッピングレジスタは、該第二処理ステージにおいて処理
中の第二命令によってアクセスされる第二アーキテクチ
ャ用スタックレジスタと関連している第二物理的レジス
タを決定するために使用することが可能な第二マッピン
グデータを格納することが可能である。
【0029】本発明の更に別の実施例によれば、該第一
マッピングレジスタは、該第一命令が該第一処理ステー
ジから該第二処理ステージへ転送される場合に、該第一
マッピングデータを該第二マッピングレジスタへ転送す
ることが可能である。
【0030】本発明の更に別の実施例によれば、該デー
タプロセッサは、更に、最後に実行された命令によって
アクセスされる第三アーキテクチャ用スタックレジスタ
と関連している第三物理的レジスタを決定するために使
用することが可能な第三マッピングデータを格納するこ
とが可能なレジスタスタックと関連している第三マッピ
ングレジスタを有している。
【0031】本発明の更に別の実施例によれば、該デー
タプロセッサは、該第三マッピングレジスタからの第三
マッピングデータを該第一マッピングレジスタ及び該第
二マッピングレジスタのうちの少なくとも1つへ転送す
ることが可能である。
【0032】前述したことは、当業者が以下に説明する
本発明の詳細な説明をより良く理解することが可能であ
るように本発明の特徴及び技術的な利点についてむしろ
広義に外観したものである。本発明の要旨を形成する本
発明の付加的な特徴及び利点については後に説明する。
当業者によって理解されるように、本発明の同じ目的を
実施するためのその他の構造を設計し又は修正するため
のベースとした本明細書に開示した概念及び特定の実施
例を使用することが可能である。当業者によって理解さ
れるように、そのような均等な構成は本発明の精神及び
範囲から逸脱するものではない。
【0033】本発明の詳細な説明を行う前に、本明細書
において使用している幾つかの用語及び文章の定義につ
いて説明する。「含む」及び「有する」及びそれに類似
した表現は、制限なしで包含することを意味し、「又
は」という用語は及び/又はの意味を包含しており、
「関連する」及びそれに類似する表現は包含すること、
包含されること、相互接続すること、含むこと、含まれ
ること、接続すること、結合すること、挿通可能である
こと、協働すること、インターリーブすること、並置す
ること、近接していること、結ばれていること、持って
いること、特性を有していること等を意味することが可
能であり、且つ「コントローラ (制御器)」という用語
は少なくとも1つの動作を制御する任意の装置、システ
ム又はその一部を意味し、このような装置はハードウエ
ア、ファームウエア、ソフトウエア、又はそれらのうち
の少なくとも2つの何等かの結合として構成することが
可能である。注意すべきことであるが、いずれか特定の
制御器と関連する機能性は集中化させるか又は局所的又
は遠隔的に分散させることが可能である。本明細書にお
いてはある単語及び表現に対しての定義が与えられてお
り、当業者にとって明らかなように、殆どの場合でなく
とも多くの場合において、このような定義はこのように
定義した用語及び文章の過去及び将来の使用に適用され
るものである。
【0034】
【発明の実施の形態】以下に説明する図1乃至3、及び
本明細書において発明の原理を説明するために使用する
種々の実施例は単に例示的なものであって、本発明の範
囲を制限するような態様で解釈すべきではない。当業者
が理解するように、本発明の原理は任意のデータプロセ
ッサにおいて実現することが可能である。
【0035】図1は例示的な処理システム、即ちパソコ
ン100の斜視図であって、それは本発明の原理に基づ
くレジスタスタックを基礎としたパイプライン型プロセ
ッサ106を有している。パソコン100はシャシー1
01、モニタ102、キーボード103を有している。
モニタ102及びキーボード103はその他の入力/出
力 (I/O)装置と置換させるか又は結合させることが
可能である。シャシー101は一部切り欠いて示してあ
り、それはフロッピィディスクドライブ104とハード
ディスクドライブ105とを示している。フロッピィデ
ィスクドライブ104は着脱自在なフロッピィディスク
に対して読取及び書込を行うことが可能である。ハード
ディスクドライブ105は高速アクセスデータ格納及び
検索を提供している。
【0036】本発明の例示的な実施例においては、プロ
セッサ106はレベル1 (L1)キャッシュとレベル2
(L2)キャッシュとを包含するオンボードの2レベルキ
ャッシュシステムを有することが可能である。この2レ
ベルキャッシュは、小型で高速のキャッシュ (L1キャ
ッシュ)が低速でより大型のキャッシュ (L2キャッシ
ュ)ヘ接続しているシステムである。プロセッサ106
のCPUコア論理がメモリ位置からデータを読取るか又
はそこへデータを書込む場合に、キャッシュシステム
は、最初に、その位置に属するデータがL1キャッシュ
内にあるか否かを判別するためのテストを行う。そのデ
ータがL1キャッシュ内にある場合には、そのデータは
L1キャッシュによって迅速に供給されるか又はアップ
デートされる。そのデータがL1キャッシュ内にない場
合には、L1キャッシュ読取「ミス」又はL1キャッシ
ュ書込「ミス」が発生する。次いで、そのデータがL2
キャッシュによってCPUコア論理へ供給されるか又は
アップデートされる。L1キャッシュ読取ミスの場合に
は、要求されたデータを包含するラインもL2キャッシ
ュからL1キャッシュへ転送され、従って次回のプロセ
ッサ106がそのデータへアクセスする場合にそのデー
タはより迅速に供給させることが可能である。このこと
はL1キャッシュラインフィル (line fill)
として知られている。そのデータがL2キャッシュ内に
もない場合には、L2キャッシュミスが発生し且つ要求
されたデータを包含しているラインがメインメモリから
フェッチされ次いでそのデータが次回要求された場合に
より迅速なアクセスを与えるためにL2キャッシュ内に
ロードされる。このことはL2キャッシュラインフィル
として知られている。
【0037】図2は本発明の1実施例に基づく例示的な
パイプライン型プロセッサ106をより詳細に例示して
いる。プロセッサ106は命令フェッチ (IF)ステー
ジ205、デコードステージ210、オペランドフェッ
チステージ215、実行ステージ220、ライトバック
ステージ225を有する命令パイプラインを有してい
る。プロセッサ106は、又、レジスタスタック23
0、命令キャッシュ235、データキャッシュ240、
マッピングレジスタ251−254を有している。命令
キャッシュ235及びデータキャッシュ240は命令及
びデータを夫々保持するL1キャッシュの部分である。
【0038】プロセッサ106は命令をフェッチし且つ
解釈し、データを検索し、命令を実行し、且つ結果を格
納することが可能な中央処理装置 (CPU)である。例
示したパイプラインは幾つかの異なる動作を同時的に実
行することが可能なメカニズム即ち機構である。該パイ
プラインは、各主要なタスクに対する処理ステップを幾
つかの個別的な処理フェーズへ分解することによってこ
のことを行い、各フェーズは別個のパイプラインステー
ジによって実行される。各タスクは、その実行を完了す
るために、各処理フェーズを介して、従って各パイプラ
インステージを介して逐次的に通過せねばならない。
【0039】命令フェッチステージ205は命令キャッ
シュ235から実行するための命令をフェッチし、それ
を命令フェッチバッファ (IFB)ヘ転送する。デコー
ドステージ210は命令フェッチバッファから命令を受
取り且つその命令をその後のパイプラインステージによ
って実行するために直接的に使用することが可能な信号
の組にデコードする。オペランドフェッチステージ21
5はデータキャッシュ又はレジスタスタック230から
オペランドをフェッチする。実行ステージ220はオペ
ランドフェッチステージ215においてフェッチしたオ
ペランドに介して命令が特定した動作 (例えば、加算、
乗算、除算等)を実行し、且つその結果を発生する。ラ
イトバックステージ225は実行ステージ220によっ
て発生された結果をデータキャッシュ240内又はレジ
スタスタック230内に書き戻す。
【0040】本発明の原理によれば、マッピングレジス
タ251−254の各々が物理的レジスタ及び物理的レ
ジスタのアーキテクチャ名との間の論理的マッピングを
格納する。マッピングレジスタ251−254の各々は
実行パイプラインにおける特定のステージと関連してい
る。例示した実施例においては、マッピングレジスタ2
51はデコードステージ210と関連しており、マッピ
ングレジスタ252はオペランドフェッチステージ21
5と関連しており、マッピングレジスタ253は実行ス
テージ220と関連しており、且つマッピングレジスタ
254はライトバックステージ225と関連している。
命令がフェッチされ且つデコードステージ210によっ
てデコードされると、デコードステージ210は命令内
のレジスタのアーキテクチャ名とその命令によって必要
とされるデータを実際に保持している物理的レジスタと
の間のマッピングを決定する。このマッピングはマッピ
ングレジスタ251内に配置される。該命令がその後の
パイプラインステージ内に入ると、該マッピングはその
命令と共にマッピングレジスタ252、マッピングレジ
スタ253、マッピングレジスタ254を介して流れ
る。
【0041】レジスタスタック230内の各物理的レジ
スタは2つの異なる識別子によって指定される。第一識
別子は物理的識別子 (PID)として知られている。こ
のPIDはレジスタスタック230内の特定のオンチッ
プ物理的レジスタを識別する固定された二進コードであ
る。従って、各PIDは設計の一部としてハードワイヤ
ードされており且つ変更不可能である。第二識別子は仮
想識別子 (VID)として知られている。VIDはプロ
グラムによって見られる物理的レジスタのアーキテクチ
ャ名 (例えば、A,B,C)を表す。従って、VIDは
命令がレジスタスタック230内のエントリを並び替え
る場合に変化する場合がある。各VIDは各物理的レジ
スタと関連している別個の二進VIDフィールド内に格
納される。
【0042】ライトバックステージ225が実行ステー
ジ220によって発生された結果をレジスタスタック2
30において特定のVIDを有している物理的レジスタ
内へ書込むと、ライトバックステージ225がその結果
を同一の物理的レジスタに対して指定された新たな結果
で上書きするまで、その結果は該物理的レジスタ内に止
まる。その後の命令が既存の結果をしてレジスタスタッ
ク230内のその位置を変化させると (即ち、そのアー
キテクチャ用レジスタを変化させる)、その位置変化は
新たなアーキテクチャ用レジスタを表すVIDをその結
果が存在している物理的レジスタのVIDフィールド内
に書込むことによって反映される。
【0043】パイプラインへ入る各命令がデコードされ
ると、デコードステージ210はその命令に対してのV
IDとPIDとの間の新たなマッピングを決定する。ア
ーキテクチャ用 (仮想)レジスタに対する全ての命令参
照はそれらの等価な物理的レジスタ名 (PID)で置換
される。命令がパイプラインに沿って更に下方へ流れる
に従い、該命令のソースレジスタ及びターゲットレジス
タのPID及び該命令のVID−PIDマッピングが該
命令と共に送給される。このことはPID情報及びVI
D−PIDマッピング情報をマッピングレジスタ251
−254を介してシフトさせることによって達成され
る。
【0044】各命令に対するVID−PIDマッピング
は全ての先行する命令の影響を考慮に入れねばならな
い。従って、新たな命令がデコードステージ210へ入
る場合には、デコードステージ210は前の命令のVI
D−PIDマッピング及びVID−PIDマッピングに
与える新たな命令の影響を考慮に入れることによって新
たなVID−PIDマッピングを形成する。命令と関連
しているソースレジスタ及び/又はターゲットレジスタ
がVIDからPIDへ変換されると、レジスタスコアボ
ード論理がパイプライン内の異なる命令のソースPID
及びターゲットPIDを直接的に比較し、ストール又は
バイパスすることが任意の与えられた命令に対して必要
であるか否かを判別する。これは簡単明瞭なプロセスで
ある。何故ならば、PIDは常に物理的レジスタに対し
ての絶対的で明瞭な参照だからである。
【0045】1例として、3個のアーキテクチャ用レジ
スタA,B,C (即ち、VID)は3個の物理的レジス
タR0,R1,R2 (即ち、PID)に対してマッピン
グさせることが可能である。従来技術の欄において説明
したサンプルの命令シーケンスの場合には、新たなソー
スレジスタ及びデスティネーションレジスタ及びデコー
ドステージ210によって計算された新たなVID−P
IDマッピングは次のようになる。
【0046】[開始マップ] R0=A,R
1=B,R2=C (1) Load Mem1,R2 R0=B,R1=
C,R2=A (=mem1) (2) Load Mem2,R2,R1 R0=C,
R1=A, (=mem2),R2=B (=mem1) (3) Inc R2 R0=C,R1=A, (=
mem2),R2=B (=mem1+1) 命令1と命令3との間のデータの依存性 (物理的レジス
タR2に関し)は、今や、アーキテクチャ用レジスタ名
を物理的レジスタ名で置換させた後に明示的に示され
る。
【0047】デコードステージ210におけるVID−
PIDマッピングは、パイプラインフラッシュが発生す
る場合に不正確なものとなる場合がある。このことは、
前の命令の結果に依存して、パイプライン内の幾つかの
命令が投機的に実行される場合に発生する場合がある。
例えば、予測された分岐経路から命令が投機的に実行さ
れ且つその分岐予測が正しくないものである場合には、
投機的に実行された命令の効果は無効にされねばならな
い。部分的に、このことはキャンセルされた命令の効果
を除去するためにデコードステージ210におけるVI
D−PIDマッピングを補正することが関与する。この
ことが、各命令に対するVID−PIDマッピングが何
故命令自身と共にマッピングレジスタ251−254を
介して送給されるかの部分的な理由である。実行するた
めの最後の命令に対するマッピングはレジスタスタック
230自身の中に格納される。不正確に実行された投機
的な命令がパイプラインからフラッシュされると、最後
の正確に実行された命令と関連するVID−PIDマッ
ピング (それは、未だに、レジスタスタック230のマ
ッピングレジスタ内にある)がデコードステージ210
用のマッピングレジスタ251内に保持されているVI
D−PIDマッピング内にコピーされる。
【0048】従って、本発明は以下のステップを介して
レジスタスタックを基礎としたパイプライン型プロセッ
サアーキテクチャと関連するデータ依存性問題を解消し
ている。
【0049】1.パイプライン型のレジスタスタックを
基礎としたマシンの場合には、デコードステージ210
が各物理的レジスタの物理的識別子 (PID)と関連す
る仮想識別子 (VID)を使用してどのオンチップの物
理的レジスタがどのアーキテクチャ用 (プログラムが見
ることが可能)レジスタに対してマッピングされている
かを決定する。
【0050】2.デコードステージ210はアーキテク
チャ用レジスタ名 (VIDによって指定されている)を
マッピングレジスタ251内の現在のVID−PIDマ
ッピングにおける物理的レジスタ名 (PIDによって指
定されている)ヘ変換し、それはデコードステージ21
0を介して流れる各命令で変化する。
【0051】3.各新たな命令がデコードステージ21
0へ入ると、デコードステージ210はアーキテクチャ
用ソース及びターゲットレジスタ名を物理的ソース及び
ターゲットレジスタ名 (PID)で置換させる。デコー
ドステージ210は各命令と関蓮するVID−PIDマ
ッピングをマッピングレジスタ251−254を使用し
て該命令と共にパイプライン下方へ送給する。
【0052】4.パイプラインの各ステージは該パイプ
ライン内の異なる命令のPIDを比較してターゲット依
存性の絶対的なソースを決定し且つストール又はバイパ
スが必要とされるか否かを判別する。
【0053】5.命令パイプラインがフラッシュされて
不正確な投機的に実行された命令をキャンセルすると、
プロセッサ106はデコードステージ210内のVID
−PIDマッピングを、レジスタスタック230と関連
しているマッピングレジスタ231内に保持されている
最後に正確に実行された命令のVID−PIDで上書き
することによってデコードステージ210内のVID−
PIDマッピングをロールバック即ち後退させる。
【0054】図2に例示したように、プロセッサ106
はより一般的にはNステージパイプライン型CPUとし
て説明することが可能であり、その最終ステージはN個
の物理的データレジスタのうちの1つへ結果を書込む。
N個の物理的データレジスタの各々は物理的識別子 (P
ID)によって与えられる固定された物理的レジスタ名
を有しており、且つVIDレジスタ内に保持されている
仮想識別子 (VID)によって与えられる可変のアーキ
テクチャ用レジスタ名を有している。1つのVIDレジ
スタは各物理的データレジスタと関連している。
【0055】プロセッサ106は、各命令がアーキテク
チャ用レジスタに対して新たな結果を書込むか又はアー
キテクチャ用レジスタの間で既存の結果を並び替えるか
(例えば、スタックに基づいたアーキテクチャにおい
て)、又はそれらの両方を行うことを可能とする命令セ
ットアーキテクチャ (ISA)を使用する。各ステージ
と関連しているアーキテクチャ用レジスタ並び替え (再
配置)メカニズムは、命令が、各物理的データレジスタ
と関連しているVIDレジスタの内容を変化させること
によって、アーキテクチャ用レジスタ間において結果を
物理的ではなく象徴的に並び替え即ち再配置することを
可能とする。このことはレジスタ間において単純にデー
タを並び替え即ち再配置させる動作用の物理的レジスタ
間においてのデータの転送を除去しており、従ってこの
ような転送によって発生するデータの依存性の可能性を
取除いている。
【0056】プロセッサ106は、又、初期パイプライ
ンステージ (例えば、デコードステージ210)と関連
しているアーキテクチャ用レジスタ名 (VID)対物理
的データレジスタ名 (PID)マッピングメカニズムを
有している。VID−PIDマッピングメカニズムはV
ID−PIDマッピングテーブルを使用してパイプライ
ンステージへ入るCPU命令によって使用されるアーキ
テクチャ用レジスタ名 (VID)を物理的レジスタ名
(PID)ヘ変換する。次いで、VID−PIDマッピン
グメカニズムは、それがパイプラインの終りにある物理
的データレジスタと関連している最終的なVIDフィー
ルドを究極的にアップデートするまで、各その後のパイ
プラインステージに沿ってその命令と関連している発生
されたVID−PIDマッピングを追従する。
【0057】このように、マッピングメカニズムを包含
するパイプラインステージに追従するパイプラインステ
ージ内の命令間のレジスタに基づいたデータ依存性は、
先のパイプラインステージにおける命令によってソース
として使用されたレジスタのPIDを後のパイプライン
ステージにおける命令によってデスティネーションとし
て書かれたレジスタのPIDと直接的に比較することに
よって検知することが可能である。このことはアーキテ
クチャ用レジスタ間において単純にデータを並び替え即
ち再配置させる中間命令によって発生されるような誤っ
た依存性の影響を取除いている。
【0058】プロセッサ106は、又、物理的データレ
ジスタと関連しているVIDレジスタの内容を初期的な
VID−PIDマッピングメカニズム (例えば、マッピ
ングレジスタ251)を包含している早期のパイプライ
ンステージ (例えば、デコードステージ210)におけ
るVID−PIDマッピングレジスタ内にコピー (即
ち、パイプラインフラッシュコピー動作)するメカニズ
ムを有している。このことは、パイプラインにおける中
間の命令がそれらの不正確な投機的実行のためにキャン
セルされた場合に、VID−PIDマッピングを成功裡
に完了された最後の命令のものへリセットさせるために
行われる。
【0059】図3はフローチャート300を示してお
り、それは本発明の1実施例に基づく例示的なパイプラ
イン型プロセッサ106の動作を例示している。初期的
には、マッピングレジスタ251はデコードステージ2
10によってデコードされた最後の命令に対するVID
−PIDマッピングデータを包含している。次の命令の
処理は、デコードステージ210が命令フェッチステー
ジ205から次の命令を受取り且つそれをデコードする
場合に開始する (処理ステップ305)。デコードステ
ージ210は該新たな命令をデコードし且つ (1)デコ
ードされた新たな命令によって実行中の動作及び (2)
マッピングレジスタ251内の古いVID−PIDマッ
ピングデータの2つのファクタに基づいて新たなVID
−PIDマッピングデータを決定する (処理ステップ3
10)。次いで、デコードステージ210はその新たな
VID−PIDマッピングデータをマッピングレジスタ
251内に格納する (処理ステップ315)。
【0060】その新たなデコードされた命令はデコード
ステージ250からオペランドフェッチステージ215
内ヘシフトされ、且つ新たなVID−PIDマッピング
データはマッピングレジスタ251からマッピングレジ
スタ252へシフトされる (処理ステップ320)。デ
コードされた命令がオペランドフェッチステージ215
から実行ステージ220へ、次いでライトバックステー
ジ225へシフトされるにつれて、該新たな命令の処理
が継続して行われる。同時に、該新たな命令と関連して
いるVID−PIDマッピングデータはマッピングレジ
スタ252からマッピングレジスタ253へ、次いでマ
ッピングレジスタ254へシフトされる(処理ステップ
325)。分岐予測エラーが発生しない場合には (又
は、分岐予測が該新たな命令と関連していない場合に
は)、ライトバックステージ225が、マッピングレジ
スタ254からレジスタスタック230におけるマッピ
ングレジスタ231へVID−PIDマッピングデータ
を書込む (処理ステップ330)。分岐予測エラーが発
生した場合には、プロセッサ106はマッピングレジス
タ231からの最後に正確に実行された命令のVID−
PIDマッピングデータをマッピングレジスタ251へ
転送し且つ命令パイプライン内にある係属中の命令をフ
ラッシュする (処理ステップ335)。
【0061】本発明は従来技術と比較して多数の利点を
有している。単一トランスレーション (翻訳)ステージ
の後に、全てのレジスタ名が固定された物理的レジスタ
名へ変換されるので、各命令のソースオペランド及びデ
スティネーションオペランド及び命令間の依存性を決定
することが簡単である。更に、VID−PIDレジスタ
マッピングを実施するために単一トランスレーションス
テージを使用することは、単に物理的レジスタ名を使用
して、全てのその他のパイプラインステージが従来の態
様でオンチップレジスタを取扱うことを意味している。
このことは、従来のスタックに基づかないプロセッサ用
の既存のマイクロアーキテクチャ又はマイクロアーキテ
クチャ概念をレジスタスタックに基づいたマシンにおい
て使用するために適合させることを容易なものとさせ、
従って従来のマイクロアーキテクチャ革新の全ての利点
を得ることを可能としている。
【0062】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ制限
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。
【図面の簡単な説明】
【図1】 本発明の原理に基づくレジスタスタックに基
づいたパイプライン型プロセッサを包含する例示的な処
理システム、即ちパソコンを示した概略斜視図。
【図2】 本発明の1実施例に基づく例示的なパイプラ
イン型プロセッサをより詳細に示した概略図。
【図3】 本発明の1実施例に基づく例示的なパイプラ
イン型プロセッサの動作を示したフローチャート。
【符号の説明】
100 パソコン 101 シャシー 102 モニタ 103 キーボード 104 フロッピィディスクドライブ 105 ハードディスクドライブ 106 レジスタスタックに基づいたパイプライン型プ
ロセッサ 205 命令フェッチステージ 210 デコードステージ 215 オペランドフェッチステージ 220 実行ステージ 225 ライトバックステージ 230 レジスタスタック 235 命令キャッシュ 240 データキャッシュ 251−254 マッピングレジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ニコラス ジェイ. リチャードソン アメリカ合衆国, カリフォルニア 92109, サン ディエゴ, アーチャー ストリート 740 (72)発明者 ルン ビン ホワン アメリカ合衆国, カリフォルニア 92130, サン ディエゴ, ウィローミ ア レーン 5620 Fターム(参考) 5B013 CC01

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 データプロセッサにおいて、 データプロセッサによって実行される命令によって必要
    とされるオペランドを格納することが可能な複数個のア
    ーキテクチャ用レジスタを具備しているレジスタスタッ
    ク、 N個の処理ステージを有しており、前記N個の処理ステ
    ージの各々が命令実行パイプラインによって実行中の係
    属中の命令と関連している複数個の実行ステップのうち
    の1つを実施することが可能である命令実行パイプライ
    ン、 前記N個の処理ステージのうちの少なくとも1つと関連
    している少なくとも1個のマッピングレジスタであっ
    て、前記係属中の命令によってアクセスされたアーキテ
    クチャ用スタックレジスタと関連する物理的レジスタを
    決定するために使用することが可能なマッピングデータ
    を格納することが可能な少なくとも1個のマッピングレ
    ジスタ、を有していることを特徴とするデータプロセッ
    サ。
  2. 【請求項2】 請求項1において、前記マッピングデー
    タが前記物理的レジスタを識別する物理的識別子コード
    を有していることを特徴とするデータプロセサ。
  3. 【請求項3】 請求項2において、前記マッピングデー
    タが前記アーキテクチャ用レジスタを識別する仮想識別
    子を有していることを特徴とするデータプロセッサ。
  4. 【請求項4】 請求項3において、前記物理的レジスタ
    が、 (1)前記係属中の命令によって検索されるべき第
    一オペランドを包含しているソースレジスタ、(2)前
    記第一オペランドが前記係属中の命令によって格納され
    るべきターゲットレジスタのうちの1つであることを特
    徴とするデータプロセッサ。
  5. 【請求項5】 請求項1において、前記少なくとも1個
    のマッピングレジスタが、前記N個の処理ステージのう
    ちの第一ステージと関連する第一マッピングレジスタ、
    及び前記N個の処理ステージのうちの第二ステージと関
    連する第二マッピングレジスタを有していることを特徴
    とするデータプロセッサ。
  6. 【請求項6】 請求項5において、前記第一マッピング
    レジスタが前記第一処理ステージにおいて処理中の第一
    命令によってアクセスされる第一アーキテクチャ用スタ
    ックレジスタと関連する第一物理的レジスタを決定する
    ために使用することが可能な第一マッピングデータを格
    納することが可能であり、前記第二マッピングレジスタ
    が前記第二処理ステージにおいて処理中の第二命令によ
    ってアクセスされる第二アーキテクチャ用スタックレジ
    スタと関連する第二物理的レジスタを決定するために使
    用することが可能な第二マッピングデータを格納するこ
    とが可能であることを特徴とするデータプロセッサ。
  7. 【請求項7】 請求項6において、前記第一マッピング
    レジスタが、前記第一命令が前記第一処理ステージから
    前記第二処理ステージへ転送される場合に、前記第一マ
    ッピングデータを前記第二マッピングレジスタへ転送す
    ることが可能であることを特徴とするデータプロセッ
    サ。
  8. 【請求項8】 請求項7において、更に、最後に実行さ
    れた命令によってアクセスされる第三アーキテクチャ用
    スタックレジスタと関連する第三物理的レジスタを決定
    するために使用することが可能な第三マッピングデータ
    を格納することが可能な前記第三レジスタスタックと関
    連する第三マッピングレジスタを有していることを特徴
    とするデータプロセッサ。
  9. 【請求項9】 請求項8において、前記第三マッピング
    データを前記第三マッピングレジスタから前記第一マッ
    ピングレジスタ及び前記第二マッピングレジスタのうち
    の少なくとも1つへ転送させることが可能であることを
    特徴とするデータプロセッサ。
  10. 【請求項10】 処理システムにおいて、 ユーザからの入力を受取ることが可能な少なくとも1個
    のユーザ入力/出力装置、 ユーザに対して画像を表示することが可能なモニタ、 ユーザデータ及び実行可能なプログラムを格納すること
    が可能なメモリ、 データプロセッサ、 を有しており、前記データプロセッサが、 前記データプロセッサによって実行される命令によって
    必要とされるオペランドを格納することが可能な複数個
    のアーキテクチャ用レジスタを具備しているレジスタス
    タック、 N個の処理ステージを具備している命令実行パイプライ
    ンであって、前記N個の処理ステージの各々が前記命令
    実行パイプラインによって実行中の係属中の命令と関連
    する複数個の実行ステップのうちの1つを実施すること
    が可能である命令実行パイプライン、 前記N個の処理ステージのうちの少なくとも1つと関連
    している少なくとも1個のマッピングレジスタであっ
    て、前記係属中の命令によってアクセスされたアーキテ
    クチャ用スタックレジスタと関連する物理的レジスタを
    決定するために使用することが可能なマッピングデータ
    を格納することが可能である少なくとも1個のマッピン
    グレジスタ、 を有していることを特徴とする処理システム。
  11. 【請求項11】 請求項10において、前記マッピング
    データが前記物理的レジスタを識別する物理的識別子コ
    ードを有していることを特徴とする処理システム。
  12. 【請求項12】 請求項11において、前記マッピング
    データが前記アーキテクチャ用レジスタを識別する仮想
    識別子を有していることを特徴とする処理システム。
  13. 【請求項13】 請求項12において、前記物理的レジ
    スタが、(1)前記係属中の命令によって検索されるべ
    き第一オペランドを包含しているソースレジスタ及び
    (2)前記係属中の命令によって前記第一オペランドを
    格納すべきターゲットレジスタのうちの1つであること
    を特徴とする処理システム。
  14. 【請求項14】 請求項10において、前記少なくとも
    1個のマッピングレジスタが、前記N個の処理ステージ
    のうちの第一ステージと関連している第一マッピングレ
    ジスタ、及び前記N個の処理ステージのうちの第二ステ
    ージと関連している第二マッピングレジスタを有してい
    ることを特徴とする処理システム。
  15. 【請求項15】 請求項14において、前記第一マッピ
    ングレジスタが前記第一処理ステージで処理中の第一命
    令によってアクセスされる第一アーキテクチャ用スタッ
    クレジスタと関連している第一物理的レジスタを決定す
    るために使用することが可能な第一マッピングデータを
    格納することが可能であり、且つ前記第二マッピングレ
    ジスタが前記第二処理ステージにおいて処理中の第二命
    令によってアクセスされる第二アーキテクチャ用スタッ
    クレジスタと関連している第二物理的レジスタを決定す
    るために使用することが可能な第二マッピングデータを
    格納することが可能であることを特徴とする処理システ
    ム。
  16. 【請求項16】 請求項15において、前記第一命令が
    前記第一処理ステージから前記第二処理ステージへ転送
    される場合に、前記第一マッピングレジスタが前記第一
    マッピングデータを前記第二マッピングレジスタへ転送
    することが可能であることを特徴とする処理システム。
  17. 【請求項17】 請求項16において、前記データプロ
    セッサが、更に、最後に実行された命令によってアクセ
    スされる第三アーキテクチャ用スタックレジスタと関連
    している第三物理的レジスタを決定するために使用する
    ことが可能な第三マッピングデータを格納することが可
    能な前記レジスタスタックと関連している第三マッピン
    グレジスタを有していることを特徴とする処理システ
    ム。
  18. 【請求項18】 請求項17において、前記データプロ
    セッサが、前記第三マッピングデータを前記第三マッピ
    ングレジスタから前記第一マッピングレジスタ及び前記
    第二マッピングレジスタのうちの少なくとも1つへ転送
    することが可能であることを特徴とする処理システム。
  19. 【請求項19】 データプロセッサによって実行される
    命令によって必要とされるオペランドを格納することが
    可能なレジスタスタックにおいて配列されている複数個
    のアーキテクチャ用レジスタと、N個の処理ステージを
    具備している命令実行パイプラインであって前記N個の
    処理ステージの各々が前記命令実行パイプラインによっ
    て実行中の係属中の命令と関連する複数個の実行ステッ
    プのうちの1つを実施することが可能な命令実行パイプ
    ラインとを有しているデータプロセッサにおいて使用す
    るために、前記命令の間でのデータ依存性を取扱う方法
    において、 第一命令を検索し且つデコードし、 前記第一命令によってアクセスされたアーキテクチャ用
    スタックレジスタと関連する物理的レジスタを決定する
    ために使用することが可能な第一マッピングデータを決
    定し、 前記N個の処理ステージのうちの第一ステージと関連す
    る第一マッピングレジスタ内に前記第一マッピングデー
    タを格納する、上記各ステップを有していることを特徴
    とする方法。
  20. 【請求項20】 請求項19において、前記前記第一マ
    ッピングデータが前記物理的レジスタを識別する物理的
    識別子コードを有していることを特徴とする方法。
  21. 【請求項21】 請求項20において、前記第一マッピ
    ングデータが前記アーキテクチャ用レジスタを識別する
    仮想識別子を有していることを特徴とする方法。
  22. 【請求項22】 請求項21において、前記決定するス
    テップが、前にフェッチした命令と関連する、前のマッ
    ピングデータ及び前記レジスタスタックに影響を与える
    前記第一命令によって実施された動作に基づいて前記第
    一マッピングデータを決定するステップを有しているこ
    とを特徴とする方法。
  23. 【請求項23】 データプロセッサにおいて、 N個の物理的データレジスタを具備しているレジスタス
    タックであって、前記N個の物理的データレジスタの各
    々が物理的識別子 (PID)によって与えられた固定し
    た物理的レジスタ名と仮想識別子 (VID)によって与
    えられた可変アーキテクチャ用レジスタ名とを具備して
    おり、前記VIDは前記N個の物理的データレジスタの
    前記各々と関連しているVIDレジスタ内に格納される
    レジスタスタック、 前記N個の物理的データレジスタのうちの1つへ結果を
    書込むことが可能な最終ステージを具備しているNステ
    ージパイプライン型中央処理装置 (CPU)であって、
    各命令が新たな結果のアーキテクチャ用レジスタへの書
    込及び既存の結果のアーキテクチャ用レジスタ間での並
    び替えのうちの少なくとも1つを可能とさせる命令セッ
    トアーキテクチャ (ISA)を具備しているCPU、 第一物理的データレジスタと関連する第一VIDレジス
    タ内のデータ値を修正することによって、前記第一物理
    的データレジスタと関連する第一アーキテクチャ用レジ
    スタ及び第二物理的データレジスタと関連する第二アー
    キテクチャ用レジスタとの間で命令が仮想的に結果を並
    び替えることを可能とするアーキテクチャ用レジスタ並
    び替えメカニズム、を有していることを特徴とするデー
    タプロセッサ。
  24. 【請求項24】 請求項23において、更に、 前記第一パイプラインステージに入る第一CPU命令に
    よって使用されているアーキテクチャ用レジスタ名を物
    理的レジスタ名へ変換する第一パイプラインステージと
    関連するVID−PIDマッピングレジスタ、 を有しており、前記データプロセッサは、その後のパイ
    プラインステージを介しての前記第一CPU命令と関連
    する発生されたVID−PIDマッピングを追従し、且
    つその後のパイプラインステージにおける命令間のレジ
    スタに基づいたデータの依存性が先のパイプラインステ
    ージにおける命令によって使用されたソースレジスタの
    PIDを後のパイプラインステージにおける命令によっ
    て書込まれたデスティネーションレジスタのPIDと比
    較することによって検知されることを特徴とするデータ
    プロセッサ。
  25. 【請求項25】 請求項24において、更に、 前記VID−PIDマッピングを最後に成功裡に完了し
    た命令と関連する値へリセットさせるために前記物理的
    データレジスタと関連するVIDレジスタの内容を前記
    第一パイプラインステージと関連する前記VID−PI
    Dマッピングレジスタ内にコピーすることが可能な装
    置、を有していることを特徴とするデータプロセッサ。
JP2001130880A 2000-04-28 2001-04-27 スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法 Pending JP2001356905A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/561241 2000-04-28
US09/561,241 US7496734B1 (en) 2000-04-28 2000-04-28 System and method for handling register dependency in a stack-based pipelined processor

Publications (1)

Publication Number Publication Date
JP2001356905A true JP2001356905A (ja) 2001-12-26

Family

ID=24241195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001130880A Pending JP2001356905A (ja) 2000-04-28 2001-04-27 スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法

Country Status (3)

Country Link
US (1) US7496734B1 (ja)
EP (1) EP1150203A3 (ja)
JP (1) JP2001356905A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012230687A (ja) * 2007-01-24 2012-11-22 Qualcomm Inc 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694420B2 (en) * 2001-12-05 2004-02-17 Stmicroelectronics, Inc. Address range checking circuit and method of operation
JP5001209B2 (ja) * 2007-04-19 2012-08-15 パナソニック株式会社 再構成演算回路
US7865769B2 (en) * 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
US7853827B2 (en) 2008-08-29 2010-12-14 International Business Machines Corporation Isotropic processor
CN110532030B (zh) * 2019-08-01 2023-07-07 广州安凯微电子股份有限公司 一种cpu中优化寄存器访问的方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1506972A (en) * 1976-02-06 1978-04-12 Int Computers Ltd Data processing systems
US4974158A (en) * 1987-06-10 1990-11-27 Mitsubishi Denki Kabushiki Kaisha Multiple sequentially transferrable stackpointers in a data processor in a pipelining system
US4989138A (en) * 1988-09-02 1991-01-29 Tektronix, Inc. Single bus graphics data processing pipeline with decentralized bus arbitration
US5142635A (en) * 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
EP0503968B1 (en) * 1991-03-14 1999-01-07 Fujitsu Limited Pipeline operation control method and system
US5471626A (en) * 1992-05-06 1995-11-28 International Business Machines Corporation Variable stage entry/exit instruction pipeline
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5687336A (en) * 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
US5881305A (en) 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
EP0851343B1 (en) 1996-12-31 2005-08-31 Metaflow Technologies, Inc. System for processing floating point operations
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US5913047A (en) 1997-10-29 1999-06-15 Advanced Micro Devices, Inc. Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US5974531A (en) 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6134573A (en) * 1998-04-20 2000-10-17 Ip-First, L.L.C. Apparatus and method for absolute floating point register addressing
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6122656A (en) * 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6212622B1 (en) * 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6122727A (en) * 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6212623B1 (en) * 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
US6591359B1 (en) * 1998-12-31 2003-07-08 Intel Corporation Speculative renaming of data-processor registers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012230687A (ja) * 2007-01-24 2012-11-22 Qualcomm Inc 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2014211881A (ja) * 2007-01-24 2014-11-13 クゥアルコム・インコーポレイテッドQualcomm Incorporated 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2016167284A (ja) * 2007-01-24 2016-09-15 クゥアルコム・インコーポレイテッドQualcomm Incorporated 誤予測された分岐のためにフラッシュするセグメント化パイプライン

Also Published As

Publication number Publication date
US7496734B1 (en) 2009-02-24
EP1150203A3 (en) 2005-12-07
EP1150203A2 (en) 2001-10-31

Similar Documents

Publication Publication Date Title
TWI621065B (zh) 處理器和將架構指令轉譯成微指令的方法
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US7490229B2 (en) Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution
US6665776B2 (en) Apparatus and method for speculative prefetching after data cache misses
US5911057A (en) Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
TWI428820B (zh) 執行快速重複載入資料串操作的微處理器
US7523266B2 (en) Method and apparatus for enforcing memory reference ordering requirements at the L1 cache level
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US20040133769A1 (en) Generating prefetches by speculatively executing code through hardware scout threading
JPH0334024A (ja) 分岐予測の方法とそのための装置
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US10503506B2 (en) Apparatus and method for accessing data in a cache in response to an unaligned load instruction
US20100205406A1 (en) Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register
US20070050601A1 (en) Avoiding live-lock in a processor that supports speculative execution
US7293160B2 (en) Mechanism for eliminating the restart penalty when reissuing deferred instructions
US20050223201A1 (en) Facilitating rapid progress while speculatively executing code in scout mode
US20040133767A1 (en) Performing hardware scout threading in a system that supports simultaneous multithreading
JP2001356905A (ja) スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法
US5841999A (en) Information handling system having a register remap structure using a content addressable table
US6175909B1 (en) Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment