JPH1091442A - プロセッサ - Google Patents
プロセッサInfo
- Publication number
- JPH1091442A JPH1091442A JP24292596A JP24292596A JPH1091442A JP H1091442 A JPH1091442 A JP H1091442A JP 24292596 A JP24292596 A JP 24292596A JP 24292596 A JP24292596 A JP 24292596A JP H1091442 A JPH1091442 A JP H1091442A
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- temporary
- read
- 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.)
- Pending
Links
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 並列動作可能な複数の演算器からなるプロセ
ッサにおいて、レジスタファイルのポート数限界による
演算器数を充分に増やせない問題を解決する。 【解決手段】 並列動作可能な複数の演算器により複数
の命令を並列に実行するプロセッサにおいて、演算器毎
に結果を書き込める1個以上のレジスタファイルと、結
果を書き込めない1個以上のレジスタファイルを備え、
命令発行は、書き込みレジスタ判別部112により当該命
令で指定された結果を書き込むレジスタの番号が含まれ
るレジスタファイルを判定し、これに書き込むことので
きる演算器へ行う。 【効果】 レジスタファイルのポート数の増大を書き込
みポート数を含めて抑えられ、演算器の数を増やせ、プ
ロセッサ性能を高められる。
ッサにおいて、レジスタファイルのポート数限界による
演算器数を充分に増やせない問題を解決する。 【解決手段】 並列動作可能な複数の演算器により複数
の命令を並列に実行するプロセッサにおいて、演算器毎
に結果を書き込める1個以上のレジスタファイルと、結
果を書き込めない1個以上のレジスタファイルを備え、
命令発行は、書き込みレジスタ判別部112により当該命
令で指定された結果を書き込むレジスタの番号が含まれ
るレジスタファイルを判定し、これに書き込むことので
きる演算器へ行う。 【効果】 レジスタファイルのポート数の増大を書き込
みポート数を含めて抑えられ、演算器の数を増やせ、プ
ロセッサ性能を高められる。
Description
【0001】
【発明の属する技術分野】本発明は、同時に並列に動作
可能な複数の演算器を備え、複数の命令を実行可能なプ
ロセッサに関し、特に演算器と結果を格納するレジスタ
を結合する技術に関する。
可能な複数の演算器を備え、複数の命令を実行可能なプ
ロセッサに関し、特に演算器と結果を格納するレジスタ
を結合する技術に関する。
【0002】
【従来の技術】従来、同時に並列動作可能な複数の演算
器を備え、複数の命令を実行可能なプロセッサにおい
て、最も基本的な構成では、プロセッサ内部の記憶要素
であるレジスタあるいはその集合体であるレジスタファ
イルは単一であり、演算器間のデータの受け渡しを自由
に行えるようになっていた。このような単一レジスタフ
ァイル構成では、レジスタファイルは複数の演算器に対
して必要な数だけのデータの送受ができるように、複数
のポート(読み出し及び書き込み口)を設けなければな
らない。
器を備え、複数の命令を実行可能なプロセッサにおい
て、最も基本的な構成では、プロセッサ内部の記憶要素
であるレジスタあるいはその集合体であるレジスタファ
イルは単一であり、演算器間のデータの受け渡しを自由
に行えるようになっていた。このような単一レジスタフ
ァイル構成では、レジスタファイルは複数の演算器に対
して必要な数だけのデータの送受ができるように、複数
のポート(読み出し及び書き込み口)を設けなければな
らない。
【0003】しかし、性能を高めるために演算器の数を
増加させ、同時に実行可能な命令数を増やして行くと、
各演算器と一度にやり取りしなければならないデータの
総数が膨大となる。このため単一レジスタファイルのま
まではポート数が多数必要となり、現実的な実装が困難
となる。またポート数の増大はそのままレジスタファイ
ルを構成する回路のトランジスタの数と規模の増大につ
ながり、回路の動作速度、消費電力を悪くすることにな
る。結果として、演算器の数を増やしただけの性能向上
を充分にあげることができない、または演算器の数を増
やせないという場合もあった。そこで従来では、このレ
ジスタファイルのポート数の増大を抑えるために、次の
二つの解決方法が取られていた。
増加させ、同時に実行可能な命令数を増やして行くと、
各演算器と一度にやり取りしなければならないデータの
総数が膨大となる。このため単一レジスタファイルのま
まではポート数が多数必要となり、現実的な実装が困難
となる。またポート数の増大はそのままレジスタファイ
ルを構成する回路のトランジスタの数と規模の増大につ
ながり、回路の動作速度、消費電力を悪くすることにな
る。結果として、演算器の数を増やしただけの性能向上
を充分にあげることができない、または演算器の数を増
やせないという場合もあった。そこで従来では、このレ
ジスタファイルのポート数の増大を抑えるために、次の
二つの解決方法が取られていた。
【0004】従来の解決方法の一つは、レジスタファイ
ルを一つの演算器毎あるいは充分少数の演算器のグルー
プ毎に分割して、複数持つものである。各演算器は自分
に割り当てられたレジスタファイルとのみデータのやり
取りを行う。このようにすることで分割された個々のレ
ジスタファイルに接続される演算器の数を削減し、ポー
ト数の増大を抑えることができる。例えば、論文「A VL
IW Architecture forTrace Scheduling Compiler」(R.
P.Colwell R.P.Nix, J.J.O'Donnell, D.B.Papworth, an
d P.K.Rodman, IEEE Transaction on computers, Vol.3
7, No.8, pp.967-979, IEEE, August, 1988)におい
て、現実の実装に関し、演算器とレジスタファイルを組
みにした構成を組立単位としてVLIWプロセッサを構成す
る例が示されている。また特開平5-233281号公報でも、
同様に複数の演算器とレジスタファイルを組みにして、
独立性を高めることを目的とした発明が行われている。
ルを一つの演算器毎あるいは充分少数の演算器のグルー
プ毎に分割して、複数持つものである。各演算器は自分
に割り当てられたレジスタファイルとのみデータのやり
取りを行う。このようにすることで分割された個々のレ
ジスタファイルに接続される演算器の数を削減し、ポー
ト数の増大を抑えることができる。例えば、論文「A VL
IW Architecture forTrace Scheduling Compiler」(R.
P.Colwell R.P.Nix, J.J.O'Donnell, D.B.Papworth, an
d P.K.Rodman, IEEE Transaction on computers, Vol.3
7, No.8, pp.967-979, IEEE, August, 1988)におい
て、現実の実装に関し、演算器とレジスタファイルを組
みにした構成を組立単位としてVLIWプロセッサを構成す
る例が示されている。また特開平5-233281号公報でも、
同様に複数の演算器とレジスタファイルを組みにして、
独立性を高めることを目的とした発明が行われている。
【0005】しかし、この方法における問題点は、同じ
レジスタファイルを共有していない演算器とデータをや
り取りしようとすると、一度外部メモリを経由させるな
ど、時間的に大きなペナルティが生じることである。特
開平5-233281号公報では、このペナルティを抑えるため
に演算結果交換専用の高速データパスを設けている。し
かし交換可能なデータがそのサイクルで演算が行われて
いるデータに制限される上、演算器の数が4乃至8以上
と大きくなると、このような高速な交換用データパスを
設けることは困難である。
レジスタファイルを共有していない演算器とデータをや
り取りしようとすると、一度外部メモリを経由させるな
ど、時間的に大きなペナルティが生じることである。特
開平5-233281号公報では、このペナルティを抑えるため
に演算結果交換専用の高速データパスを設けている。し
かし交換可能なデータがそのサイクルで演算が行われて
いるデータに制限される上、演算器の数が4乃至8以上
と大きくなると、このような高速な交換用データパスを
設けることは困難である。
【0006】これに対し、現実のプログラムでは並列度
を充分高めて性能を上げようとすると、どうしてもさま
ざまな演算器をできるだけ多数用いようとすることにな
る。この方法においてそのような演算器の使用形態を想
定すると、演算に必要なデータが多数の演算器間で共有
される可能性も大きい。そのため、演算器が自分のレジ
スタファイル外のデータを必要とすることがしばしば起
こり、時間的なペナルティが発生して性能が充分上がら
ないという事態も生じる。
を充分高めて性能を上げようとすると、どうしてもさま
ざまな演算器をできるだけ多数用いようとすることにな
る。この方法においてそのような演算器の使用形態を想
定すると、演算に必要なデータが多数の演算器間で共有
される可能性も大きい。そのため、演算器が自分のレジ
スタファイル外のデータを必要とすることがしばしば起
こり、時間的なペナルティが発生して性能が充分上がら
ないという事態も生じる。
【0007】レジスタファイルのポート数の増大を抑え
る従来の二つ目の方法は、演算器毎あるいは少数の演算
器のグループ毎に元のレジスタファイルのコピーを持た
せて、各演算器は自分に割り当てられたレジスタファイ
ルのコピーからのみデータを読み込むものである。この
時、レジスタファイルの各コピー間での値の無矛盾性を
保つため、各演算器は演算結果の書き込みについては、
すべてのレジスタファイルに結果を書き込む。例えば、
文献「POWER and PowerPC」(Shlomo Weiss and James
E. Smith Morgan Kaufmann Publishers, Inc., 1994)
の「6. POWER2:The Next Generation」中のP.160, 6行
目からの記述では、読み出しポート数10、書き込みポー
ト数6のレジスタファイルを、読み出しポート数5、書き
込みポート数6の二つのレジスタファイルで構成し、両
方のレジスタファイルへ同一の演算結果を書き込む方式
の例が説明されている。また特公報7-76923号公報にお
いても、演算器毎にローカルなレジスタファイルを持た
せ、演算結果の書き込みはすべてのローカルなレジスタ
ファイルに行う構成の例が示されている。
る従来の二つ目の方法は、演算器毎あるいは少数の演算
器のグループ毎に元のレジスタファイルのコピーを持た
せて、各演算器は自分に割り当てられたレジスタファイ
ルのコピーからのみデータを読み込むものである。この
時、レジスタファイルの各コピー間での値の無矛盾性を
保つため、各演算器は演算結果の書き込みについては、
すべてのレジスタファイルに結果を書き込む。例えば、
文献「POWER and PowerPC」(Shlomo Weiss and James
E. Smith Morgan Kaufmann Publishers, Inc., 1994)
の「6. POWER2:The Next Generation」中のP.160, 6行
目からの記述では、読み出しポート数10、書き込みポー
ト数6のレジスタファイルを、読み出しポート数5、書き
込みポート数6の二つのレジスタファイルで構成し、両
方のレジスタファイルへ同一の演算結果を書き込む方式
の例が説明されている。また特公報7-76923号公報にお
いても、演算器毎にローカルなレジスタファイルを持た
せ、演算結果の書き込みはすべてのローカルなレジスタ
ファイルに行う構成の例が示されている。
【0008】この方法における大きな問題点は、原理的
に読み出しポート数は削減できても、書き込みポート数
がまったく減らせないことにある。一般には演算器は2
項演算の場合ではデータを読み出す数が結果を書き込む
数の倍あるので、読み出しポート数を減らせる効果は有
効ではある。しかし書き込みポート数がまったく減らせ
ないという問題のため、ある程度以上は演算器を増やす
ことができなくなり、結果として性能が上がらなくな
る。
に読み出しポート数は削減できても、書き込みポート数
がまったく減らせないことにある。一般には演算器は2
項演算の場合ではデータを読み出す数が結果を書き込む
数の倍あるので、読み出しポート数を減らせる効果は有
効ではある。しかし書き込みポート数がまったく減らせ
ないという問題のため、ある程度以上は演算器を増やす
ことができなくなり、結果として性能が上がらなくな
る。
【0009】
【発明が解決しようとする課題】本発明は、以上のよう
な演算器の数を増やした時に、従来の方法ではレジスタ
ファイルのポート数を充分効果が上がるまで削減するの
は困難であるという問題を解決しようとするものであ
る。本発明の目的は、プロセッサ内部に並列動作可能な
多数の演算器を備えた時に、これに接続するレジスタフ
ァイルのポート数の増大を効果的に抑え、多数の演算器
の並列動作による性能の向上を充分引き出すことにあ
る。
な演算器の数を増やした時に、従来の方法ではレジスタ
ファイルのポート数を充分効果が上がるまで削減するの
は困難であるという問題を解決しようとするものであ
る。本発明の目的は、プロセッサ内部に並列動作可能な
多数の演算器を備えた時に、これに接続するレジスタフ
ァイルのポート数の増大を効果的に抑え、多数の演算器
の並列動作による性能の向上を充分引き出すことにあ
る。
【0010】
【課題を解決するための手段】本発明では上記の課題を
解決するために、n個の演算器(nは2以上)を持ち、
同時にn個の演算を実行可能なプロセッサにおいて、演
算結果を格納するm個(mは2以上)の番号付けされた
レジスタと、前記各演算器が前記レジスタのm個の値を
アクセスし演算に用いる手段と、前記n個のうちのk個
(kは1以上)の演算器は前記番号付けされたレジスタ
の番号によってm個のうちのi個(iは1以上n−1以
下)のレジスタに演算結果を格納し、前記m個のうちの
残りのm−i個のレジスタには演算結果を格納しない手
段を有するようにする。
解決するために、n個の演算器(nは2以上)を持ち、
同時にn個の演算を実行可能なプロセッサにおいて、演
算結果を格納するm個(mは2以上)の番号付けされた
レジスタと、前記各演算器が前記レジスタのm個の値を
アクセスし演算に用いる手段と、前記n個のうちのk個
(kは1以上)の演算器は前記番号付けされたレジスタ
の番号によってm個のうちのi個(iは1以上n−1以
下)のレジスタに演算結果を格納し、前記m個のうちの
残りのm−i個のレジスタには演算結果を格納しない手
段を有するようにする。
【0011】また、前記m個の番号付けされたレジスタ
のうち、同一の番号を持つレジスタをL個(Lは2以上)
ずつ備え、前記n個の演算器ごとに、同一の番号を持つ
L個のレジスタの中の一つを選んで値を読み出す手段を
備える。
のうち、同一の番号を持つレジスタをL個(Lは2以上)
ずつ備え、前記n個の演算器ごとに、同一の番号を持つ
L個のレジスタの中の一つを選んで値を読み出す手段を
備える。
【0012】またさらに、命令によって指定されている
前記レジスタの番号を付け替える付け替え手段と、前記
レジスタ番号付け替え手段によって付け替えられた結果
を記録するレジスタ番号付け替え記録手段と、前記n個
の演算器の中で命令を実行するときに利用可能であるも
のを検出する空き演算器検出手段を備え、前記レジスタ
番号付け替え手段は、演算結果を格納するレジスタにつ
いては、前記空き演算器検出手段によって検出された空
き演算器が演算結果を格納できるレジスタの番号に付け
替え、演算に用いるデータを読み出すレジスタの番号に
ついては、前記レジスタ番号付け替え記録手段によって
記録された結果に従って付け替える手段を備える。
前記レジスタの番号を付け替える付け替え手段と、前記
レジスタ番号付け替え手段によって付け替えられた結果
を記録するレジスタ番号付け替え記録手段と、前記n個
の演算器の中で命令を実行するときに利用可能であるも
のを検出する空き演算器検出手段を備え、前記レジスタ
番号付け替え手段は、演算結果を格納するレジスタにつ
いては、前記空き演算器検出手段によって検出された空
き演算器が演算結果を格納できるレジスタの番号に付け
替え、演算に用いるデータを読み出すレジスタの番号に
ついては、前記レジスタ番号付け替え記録手段によって
記録された結果に従って付け替える手段を備える。
【0013】また、実行待ちの命令をW個(Wは1以
上)まで格納しておく命令バッファを備え、前記レジス
タ番号付け替え手段が、演算結果を格納するレジスタに
ついて、前記命令バッファより命令が取り出されて実行
される時に、前記空き演算器検出手段によって検出され
た空き演算器が演算結果を格納できるレジスタの番号に
付けなおす実レジスタ番号割り当て手段と、前記命令バ
ッファに命令が格納される時に、前記実レジスタ番号割
り当て手段によって付け替える実レジスタ番号と区別さ
れ得る一時的な番号を割り付ける一時番号割り当て手段
を含み、前記レジスタ番号付け替え記録手段が、前記実
レジスタ番号割り当て手段によって割り当てられた実レ
ジスタ番号と、前記一時番号割り当て手段によって割り
当てられた一時番号の両方を記録し、かつ前記レジスタ
番号付け替え手段が更に、演算に用いるデータを読み出
すレジスタの番号について、前記レジスタ番号付け替え
記録手段によって記録された一時番号または実レジスタ
番号に付け替える第1の読み出しレジスタ番号割り当て
手段と、前記実レジスタ番号割り当て手段によって一時
番号が実レジスタ番号に付け変わった時に前記第1の読
み出しレジスタ番号割り当て手段によって割り当てられ
た中に該一時番号と等しい番号があるかどうか検出する
検出手段と、前記検出手段によって実レジスタ番号に付
け変わった一時番号が検出された時に、読み出しレジス
タに割り当てられた一時番号を前記実レジスタ番号割り
当て手段によって割り当てられた実レジスタ番号に付け
替える第2の読み出しレジスタ番号割り当て手段を含
む。
上)まで格納しておく命令バッファを備え、前記レジス
タ番号付け替え手段が、演算結果を格納するレジスタに
ついて、前記命令バッファより命令が取り出されて実行
される時に、前記空き演算器検出手段によって検出され
た空き演算器が演算結果を格納できるレジスタの番号に
付けなおす実レジスタ番号割り当て手段と、前記命令バ
ッファに命令が格納される時に、前記実レジスタ番号割
り当て手段によって付け替える実レジスタ番号と区別さ
れ得る一時的な番号を割り付ける一時番号割り当て手段
を含み、前記レジスタ番号付け替え記録手段が、前記実
レジスタ番号割り当て手段によって割り当てられた実レ
ジスタ番号と、前記一時番号割り当て手段によって割り
当てられた一時番号の両方を記録し、かつ前記レジスタ
番号付け替え手段が更に、演算に用いるデータを読み出
すレジスタの番号について、前記レジスタ番号付け替え
記録手段によって記録された一時番号または実レジスタ
番号に付け替える第1の読み出しレジスタ番号割り当て
手段と、前記実レジスタ番号割り当て手段によって一時
番号が実レジスタ番号に付け変わった時に前記第1の読
み出しレジスタ番号割り当て手段によって割り当てられ
た中に該一時番号と等しい番号があるかどうか検出する
検出手段と、前記検出手段によって実レジスタ番号に付
け変わった一時番号が検出された時に、読み出しレジス
タに割り当てられた一時番号を前記実レジスタ番号割り
当て手段によって割り当てられた実レジスタ番号に付け
替える第2の読み出しレジスタ番号割り当て手段を含
む。
【0014】また、前記命令バッファがそれぞれ一つの
命令を格納する番号付けされたW個(Wは1以上)のエ
ントリより構成され、前記一時番号割り当て手段によっ
て割り当てる一時番号として、該命令が格納される前記
命令バッファのエントリの番号を用いる。
命令を格納する番号付けされたW個(Wは1以上)のエ
ントリより構成され、前記一時番号割り当て手段によっ
て割り当てる一時番号として、該命令が格納される前記
命令バッファのエントリの番号を用いる。
【0015】
【発明の実施の形態】本発明の実施の形態の例を図によ
り説明する。
り説明する。
【0016】図1は、本発明の実施の形態の一例であ
る。本発明は特に、プロセッサ内部の演算器とレジスタ
ファイルの構成において実現されるので、図1にはプロ
セッサ内部の該当部分である命令実行部22の内部につい
てのみ示してある。
る。本発明は特に、プロセッサ内部の演算器とレジスタ
ファイルの構成において実現されるので、図1にはプロ
セッサ内部の該当部分である命令実行部22の内部につい
てのみ示してある。
【0017】これに対し、プロセッサ全体の構成の例
を、図2に示す。図2ではプロセッサ1の他、プロセッサ
外部の記憶要素である主記憶2も示してある。この主記
憶2にはキャッシュを含んでいてもよい。
を、図2に示す。図2ではプロセッサ1の他、プロセッサ
外部の記憶要素である主記憶2も示してある。この主記
憶2にはキャッシュを含んでいてもよい。
【0018】図2において、プロセッサ1は命令フェッチ
部20において主記憶2より命令を読み込む。次に命令デ
コード部21において命令の種類を解読し、解読結果に基
づいて、プロセッサ内部のレジスタを用いて演算を行う
命令は信号線111より命令実行部22へ、プロセッサ外部
の主記憶2とデータのやり取りを行うロード/ストア命
令は信号線201によりロード/ストア部23へそれぞれ送
出する。命令実行部22及びロード/ストア部23は送られ
てきた命令をそれぞれ実行する。
部20において主記憶2より命令を読み込む。次に命令デ
コード部21において命令の種類を解読し、解読結果に基
づいて、プロセッサ内部のレジスタを用いて演算を行う
命令は信号線111より命令実行部22へ、プロセッサ外部
の主記憶2とデータのやり取りを行うロード/ストア命
令は信号線201によりロード/ストア部23へそれぞれ送
出する。命令実行部22及びロード/ストア部23は送られ
てきた命令をそれぞれ実行する。
【0019】次に図1の命令実行部22の内部において、
本発明の実施の形態の例を説明する。
本発明の実施の形態の例を説明する。
【0020】図1において、まず命令デコード部21より
信号線111に命令が送られてくると、書き込みレジスタ
判別部112においてその命令中に含まれる命令の結果を
書き込むレジスタの番号を取り出し、いずれのレジスタ
へ命令実行の結果を書き込むかの判定を行う。その結果
によってセレクタ113を制御し、書き込みレジスタ番号
が0〜7のものは命令レジスタ114aヘ、8〜15は命令レジ
スタ114bへ、16〜23は命令レジスタ114cヘ、24〜31は命
令レジスタ114dヘ、それそれ送出する。
信号線111に命令が送られてくると、書き込みレジスタ
判別部112においてその命令中に含まれる命令の結果を
書き込むレジスタの番号を取り出し、いずれのレジスタ
へ命令実行の結果を書き込むかの判定を行う。その結果
によってセレクタ113を制御し、書き込みレジスタ番号
が0〜7のものは命令レジスタ114aヘ、8〜15は命令レジ
スタ114bへ、16〜23は命令レジスタ114cヘ、24〜31は命
令レジスタ114dヘ、それそれ送出する。
【0021】命令レジスタ114a〜dは、送られて来た命
令をそれぞれ対応する演算器115a〜dを用いて実行す
る。その際、演算に用いるデータの読み出しは、演算器
115aはレジスタファイル116a〜119aからセレクタ101a、
102aによって、演算器115bはレジスタファイル116b〜11
9bからセレクタ101b、102bによって行う。同様に、演算
器115cはレジスタファイル116c〜119cからセレクタ101
c、102cによって、演算器115dはレジスタファイル116d
〜119dからセレクタ101d、102dによって読み出す。この
ようにすることによって、4個の演算器の合計8個のデー
タ読み込み入力に対し、それぞれのレジスタファイルの
読み出しポート数は2個となっている。
令をそれぞれ対応する演算器115a〜dを用いて実行す
る。その際、演算に用いるデータの読み出しは、演算器
115aはレジスタファイル116a〜119aからセレクタ101a、
102aによって、演算器115bはレジスタファイル116b〜11
9bからセレクタ101b、102bによって行う。同様に、演算
器115cはレジスタファイル116c〜119cからセレクタ101
c、102cによって、演算器115dはレジスタファイル116d
〜119dからセレクタ101d、102dによって読み出す。この
ようにすることによって、4個の演算器の合計8個のデー
タ読み込み入力に対し、それぞれのレジスタファイルの
読み出しポート数は2個となっている。
【0022】また、演算結果の書き込みについては、上
述のように書き込みレジスタ判定部112によりセレクタ1
13を制御して命令を各命令レジスタ、演算器に分配した
ことにより、各レジスタファイルの書き込みポート数を
大きく減らすことができる。この点が本発明の効果であ
る。
述のように書き込みレジスタ判定部112によりセレクタ1
13を制御して命令を各命令レジスタ、演算器に分配した
ことにより、各レジスタファイルの書き込みポート数を
大きく減らすことができる。この点が本発明の効果であ
る。
【0023】図1で、演算器115aの結果はレジスタファ
イル119a〜119dに、演算器115bの結果はレジスタファイ
ル118a〜118dに格納される。同様に、演算器115cの結果
はレジスタファイル117a〜117dに、演算器115dの結果は
レジスタファイル116a〜116dに格納される。これにより
4個の演算器の4個の演算結果の書き込みに対し、各レジ
スタファイルの書き込みポート数は1となっている。図1
では他にロード/ストア部23より送られてくるロード・
データの書き込みのためにそれぞれのレジスタファイル
に書き込みポートを一つ設けてあるが、それを含めても
各レジスタファイルの書き込みポート数はたかだか2と
なっている。
イル119a〜119dに、演算器115bの結果はレジスタファイ
ル118a〜118dに格納される。同様に、演算器115cの結果
はレジスタファイル117a〜117dに、演算器115dの結果は
レジスタファイル116a〜116dに格納される。これにより
4個の演算器の4個の演算結果の書き込みに対し、各レジ
スタファイルの書き込みポート数は1となっている。図1
では他にロード/ストア部23より送られてくるロード・
データの書き込みのためにそれぞれのレジスタファイル
に書き込みポートを一つ設けてあるが、それを含めても
各レジスタファイルの書き込みポート数はたかだか2と
なっている。
【0024】図3には図1の本発明の実施の形態の例と併
せて用いることのできるロード/ストア部23の構成の例
を示しておく。図3において、命令デコード部21より解
読されたロード/ストア命令が信号線201により命令レ
ジスタ114eに受け取られる。ロード/ストア部の動作は
この命令レジスタ114eに受け取られた命令により決定さ
れる。
せて用いることのできるロード/ストア部23の構成の例
を示しておく。図3において、命令デコード部21より解
読されたロード/ストア命令が信号線201により命令レ
ジスタ114eに受け取られる。ロード/ストア部の動作は
この命令レジスタ114eに受け取られた命令により決定さ
れる。
【0025】受け取られた命令がロード命令の時は、初
めにアドレス計算のためにレジスタファイル116e〜119e
よりセレクタ101e、102eを通じて読み出す。次にレジス
タファイル116e〜119eより読み出した値を用いて命令に
より指定されたアドレス計算をアドレス加算器311によ
り行う。そして、その結果をアドレスとして命令レジス
タ114eより生成されるアクセス制御信号と共に主記憶2
へ出力する。これに従って主記憶2よりデータが読み出
されると、その結果はロードデータ入力となり、ロード
/ストア部23内のレジスタファイル116e〜119e、および
命令実行部22内のレジスタファイル116a〜119a、116b〜
119b、116c〜119c、116d〜119dのすべてのレジスタファ
イルについて、それぞれ命令で指定されたレジスタ番号
に書き込まれる。
めにアドレス計算のためにレジスタファイル116e〜119e
よりセレクタ101e、102eを通じて読み出す。次にレジス
タファイル116e〜119eより読み出した値を用いて命令に
より指定されたアドレス計算をアドレス加算器311によ
り行う。そして、その結果をアドレスとして命令レジス
タ114eより生成されるアクセス制御信号と共に主記憶2
へ出力する。これに従って主記憶2よりデータが読み出
されると、その結果はロードデータ入力となり、ロード
/ストア部23内のレジスタファイル116e〜119e、および
命令実行部22内のレジスタファイル116a〜119a、116b〜
119b、116c〜119c、116d〜119dのすべてのレジスタファ
イルについて、それぞれ命令で指定されたレジスタ番号
に書き込まれる。
【0026】受け取られた命令がストア命令の時には、
ロード命令の時と同じくレジスタファイル116e〜119eよ
り読み出した値でアドレス加算器311によりアドレス計
算を行うと共に、主記憶2に書き込むデータを同じくレ
ジスタファイル116e〜119eよりセレクタ101e、102eによ
り読み出して主記憶2へ送る。主記憶2では指定されたア
ドレスにデータを格納する。
ロード命令の時と同じくレジスタファイル116e〜119eよ
り読み出した値でアドレス加算器311によりアドレス計
算を行うと共に、主記憶2に書き込むデータを同じくレ
ジスタファイル116e〜119eよりセレクタ101e、102eによ
り読み出して主記憶2へ送る。主記憶2では指定されたア
ドレスにデータを格納する。
【0027】次に本発明の効果を従来例と比べることに
より、具体的に説明する。
より、具体的に説明する。
【0028】図4は命令実行部22に関する従来のレジス
タ読み出しポート数を減少させた形態の例である。図1
の本発明の実施の形態の例と同じく、4つの演算器を備
え、同時に4個までの命令を実行可能なように構成して
いる。従来では図4に示してあるように次に使用可能な
空き演算器を空き演算器判定部411により判定して選択
し、セレクタ113を制御して命令デコード部21より送ら
れて来た演算命令を命令レジスタ114a〜114dのいずれか
に格納する。本発明のように書き込みレジスタ番号で区
別されないので、レジスタファイル412a〜412dは図1の
ように番号により分割されることはない。それぞれが4
つの演算器115a〜115dのすべてから結果を書き込めるよ
うに書き込みポート数は4つずつ備える必要がある。ま
た図4では他にロード/ストア部23より送られてくるロ
ード・データの書き込みのために、図1と同じく書き込
みポートを別個に備える構成を採っている。
タ読み出しポート数を減少させた形態の例である。図1
の本発明の実施の形態の例と同じく、4つの演算器を備
え、同時に4個までの命令を実行可能なように構成して
いる。従来では図4に示してあるように次に使用可能な
空き演算器を空き演算器判定部411により判定して選択
し、セレクタ113を制御して命令デコード部21より送ら
れて来た演算命令を命令レジスタ114a〜114dのいずれか
に格納する。本発明のように書き込みレジスタ番号で区
別されないので、レジスタファイル412a〜412dは図1の
ように番号により分割されることはない。それぞれが4
つの演算器115a〜115dのすべてから結果を書き込めるよ
うに書き込みポート数は4つずつ備える必要がある。ま
た図4では他にロード/ストア部23より送られてくるロ
ード・データの書き込みのために、図1と同じく書き込
みポートを別個に備える構成を採っている。
【0029】図5には、図4の命令実行部22の従来の形態
の例と合わせて用いることのできるロード/ストア部23
の例を掲げる。図5においても、レジスタファイル412e
は命令実行部22内の4つの演算器115a〜115dのすべての
演算結果およびロード・データが書き込めるように、合
計で5個の書き込みポートを備えなければならない。
の例と合わせて用いることのできるロード/ストア部23
の例を掲げる。図5においても、レジスタファイル412e
は命令実行部22内の4つの演算器115a〜115dのすべての
演算結果およびロード・データが書き込めるように、合
計で5個の書き込みポートを備えなければならない。
【0030】一般にレジスタファイルでは、ポート数が
増えるとポート数分のアドレス線、データ線を備え、切
り替えのためにトランジスタを加え、またこれらに充分
なドライブ能力を提供するため各記憶セルを構成するト
ランジスタのサイズも大きくしなければならない。結果
としてLSIチップ上ではポート数に比例した面積が必要
となる。レジスタファイルに格納できるデータの総数
は、本発明の実施の形態の例である図1、図3と従来の形
態の例である図4、図5では同じであるが、従来の形態の
例の図4、図5では書き込みポート数が5個と多いため、
本発明の実施の形態の例の図1、図3に比べ5個/2個=2.
5倍の面積を必要とする。さらにレジスタファイルの面
積が増大するということはレジスタファイルの動作速
度、消費電力の面でも不利となる。このため従来では演
算器の数をある程度以上増やした構成にすることは困難
であった。
増えるとポート数分のアドレス線、データ線を備え、切
り替えのためにトランジスタを加え、またこれらに充分
なドライブ能力を提供するため各記憶セルを構成するト
ランジスタのサイズも大きくしなければならない。結果
としてLSIチップ上ではポート数に比例した面積が必要
となる。レジスタファイルに格納できるデータの総数
は、本発明の実施の形態の例である図1、図3と従来の形
態の例である図4、図5では同じであるが、従来の形態の
例の図4、図5では書き込みポート数が5個と多いため、
本発明の実施の形態の例の図1、図3に比べ5個/2個=2.
5倍の面積を必要とする。さらにレジスタファイルの面
積が増大するということはレジスタファイルの動作速
度、消費電力の面でも不利となる。このため従来では演
算器の数をある程度以上増やした構成にすることは困難
であった。
【0031】これに対し本発明では図1、図3の例のよう
にレジスタファイルのポート数の増大を抑えることがで
きるので、演算器の数を増やすことが容易となり、結果
として性能を高めることが可能である。
にレジスタファイルのポート数の増大を抑えることがで
きるので、演算器の数を増やすことが容易となり、結果
として性能を高めることが可能である。
【0032】図1、図3の実施の形態の例では、使用する
演算器が命令で指定した結果を書き込むレジスタの番号
で決定されてしまうので、もし該当する演算器が空きで
ないときは、他に空きの演算器があっても待ちが生じる
ことも有り得る。またある演算器が書き込めるレジスタ
がすべて使用中となってしまうと、その演算器をそれ以
降いずれかのレジスタが使用可となるまで用いることが
できなくなることもある。しかし、これらの点は次の二
つの方法のいずれかで解消可能である。
演算器が命令で指定した結果を書き込むレジスタの番号
で決定されてしまうので、もし該当する演算器が空きで
ないときは、他に空きの演算器があっても待ちが生じる
ことも有り得る。またある演算器が書き込めるレジスタ
がすべて使用中となってしまうと、その演算器をそれ以
降いずれかのレジスタが使用可となるまで用いることが
できなくなることもある。しかし、これらの点は次の二
つの方法のいずれかで解消可能である。
【0033】第1の方法は、コンパイラによるレジスタ
割り当ての最適化による方法である。図6にその例を示
す。
割り当ての最適化による方法である。図6にその例を示
す。
【0034】図6において、左側(a)の命令列を、本発明
の実施の形態の一例である図1の命令実行部22によって
実行したとする。すると、命令1〜命令8が同一のレジス
タファイル119a〜119dについて値を書き込もうとし、演
算器115aのみが使用されるので、他の演算器が空いてい
てもこれら8個の命令を同時に実行することはできな
い。1命令ずつ逐次実行することになる。また命令8まで
実行した時点で演算器115aが書き込めるレジスタファイ
ル119a〜119dに含まれるレジスタはすべて使用中となる
ため、命令mのようなMOV命令などで必要なデータを移
し、いずれかのレジスタを使用可としなければ、演算器
115aは用いることができなくなる。
の実施の形態の一例である図1の命令実行部22によって
実行したとする。すると、命令1〜命令8が同一のレジス
タファイル119a〜119dについて値を書き込もうとし、演
算器115aのみが使用されるので、他の演算器が空いてい
てもこれら8個の命令を同時に実行することはできな
い。1命令ずつ逐次実行することになる。また命令8まで
実行した時点で演算器115aが書き込めるレジスタファイ
ル119a〜119dに含まれるレジスタはすべて使用中となる
ため、命令mのようなMOV命令などで必要なデータを移
し、いずれかのレジスタを使用可としなければ、演算器
115aは用いることができなくなる。
【0035】これに対し図6の右側(b)のようにコンパイ
ラにおいてレジスタ割り当ての最適化を行うと、まず命
令1〜4の4命令が書き込むレジスタファイルが異なり、
別々の演算器で実行されるので、この4命令は同時に実
行することが可能である。同様に次の命令5〜8の4命令
も同時に実行することができる。またさらに演算器115a
の書き込めるレジスタファイルの中に使用可であるレジ
スタが残っているので、左側(a)のようにMOV命令などを
挿入する必要はなく、次の命令9を即座に実行すること
ができる。
ラにおいてレジスタ割り当ての最適化を行うと、まず命
令1〜4の4命令が書き込むレジスタファイルが異なり、
別々の演算器で実行されるので、この4命令は同時に実
行することが可能である。同様に次の命令5〜8の4命令
も同時に実行することができる。またさらに演算器115a
の書き込めるレジスタファイルの中に使用可であるレジ
スタが残っているので、左側(a)のようにMOV命令などを
挿入する必要はなく、次の命令9を即座に実行すること
ができる。
【0036】このように、コンパイラによるレジスタ割
り当ての最適化を行うことにより、命令で書き込むレジ
スタ番号により使用する演算器が固定されていても、充
分に性能を高めることが可能である。
り当ての最適化を行うことにより、命令で書き込むレジ
スタ番号により使用する演算器が固定されていても、充
分に性能を高めることが可能である。
【0037】使用する演算器が命令で指定された書き込
みレジスタ番号で決定されてしまうことを解消する第2
の方法は、命令実行部22において、命令で指定されたレ
ジスタ番号を実行時に演算器の空きの状態によって空き
演算器が結果を書き込めるレジスタ番号に付け直す機構
を設けることである。これについてまず実施の形態の第
1の例を図7に示す。
みレジスタ番号で決定されてしまうことを解消する第2
の方法は、命令実行部22において、命令で指定されたレ
ジスタ番号を実行時に演算器の空きの状態によって空き
演算器が結果を書き込めるレジスタ番号に付け直す機構
を設けることである。これについてまず実施の形態の第
1の例を図7に示す。
【0038】図7では、命令で指定できるレジスタの総
数を32として、各演算器が32個までのレジスタを書き込
めるように各レジスタファイル720a〜720d、721a〜721
d、722a〜722d、723a〜723dについて、それぞれ含まれ
るレジスタ数を32としている。従って付け替えられる実
レジスタ番号は、図中に示してあるように0〜127とな
る。またレジスタファイルについて同様の構成とした、
図7の命令実行部22と併せて用いることのできるロード
/ストア部23の実施の形態の例を図9に示しておく。図9
では、実行されるロード/ストア命令は図7に示した命
令実行部22において付け替えられた番号のレジスタをア
クセスするので、図7に示した命令実行部22よりレジス
タ番号が付け替えられた命令を受け取る。
数を32として、各演算器が32個までのレジスタを書き込
めるように各レジスタファイル720a〜720d、721a〜721
d、722a〜722d、723a〜723dについて、それぞれ含まれ
るレジスタ数を32としている。従って付け替えられる実
レジスタ番号は、図中に示してあるように0〜127とな
る。またレジスタファイルについて同様の構成とした、
図7の命令実行部22と併せて用いることのできるロード
/ストア部23の実施の形態の例を図9に示しておく。図9
では、実行されるロード/ストア命令は図7に示した命
令実行部22において付け替えられた番号のレジスタをア
クセスするので、図7に示した命令実行部22よりレジス
タ番号が付け替えられた命令を受け取る。
【0039】図7において、命令デコード部21より送ら
れてきた命令はまず読み出しレジスタ割り当て部712に
おいて、それまでの実レジスタの割り当ての記録をレジ
スタ割り当てテーブル711より読み出して、これに従っ
て命令の読み出しを行うレジスタ番号を付け替える。次
に書き込みレジスタ割り当て部713において、演算器115
a〜115dを番号付けし、空き演算器検出部714において判
定・選択された空き演算器の番号を用いることによっ
て、命令で指定された書き込みを行うレジスタの番号(0
〜31)を実際に結果を書き込む実レジスタ番号(0〜127)
に付け替える。この時付け替えを行った命令レジスタ番
号と実レジスタ番号の対応をレジスタ割り当てテーブル
711に記録して、それ以降の命令の読み出しレジスタの
番号の付け替えのための情報として用いる。その後は図
1の実施の形態の例と同様の動作となり、書き込みを行
う実レジスタ番号に基づいて書き込みレジスタ判定部11
2によりセレクタ113を制御し、当該命令レジスタに送っ
て先に選択された空き演算器を用いて命令の実行を行
う。
れてきた命令はまず読み出しレジスタ割り当て部712に
おいて、それまでの実レジスタの割り当ての記録をレジ
スタ割り当てテーブル711より読み出して、これに従っ
て命令の読み出しを行うレジスタ番号を付け替える。次
に書き込みレジスタ割り当て部713において、演算器115
a〜115dを番号付けし、空き演算器検出部714において判
定・選択された空き演算器の番号を用いることによっ
て、命令で指定された書き込みを行うレジスタの番号(0
〜31)を実際に結果を書き込む実レジスタ番号(0〜127)
に付け替える。この時付け替えを行った命令レジスタ番
号と実レジスタ番号の対応をレジスタ割り当てテーブル
711に記録して、それ以降の命令の読み出しレジスタの
番号の付け替えのための情報として用いる。その後は図
1の実施の形態の例と同様の動作となり、書き込みを行
う実レジスタ番号に基づいて書き込みレジスタ判定部11
2によりセレクタ113を制御し、当該命令レジスタに送っ
て先に選択された空き演算器を用いて命令の実行を行
う。
【0040】図8には、図7の実施の形態の例において、
実レジスタ割り当ての記録を保持するレジスタ割り当て
テーブル711の構成の例を掲げる。
実レジスタ割り当ての記録を保持するレジスタ割り当て
テーブル711の構成の例を掲げる。
【0041】図8において、図7の4つの演算器115a〜115
dを0〜3に番号付けを行えば、書き込みを行うための実
レジスタの番号は、図8(a)に示した式で決定可能であ
る。例えば、命令で指定された元のレジスタ番号(命令
レジスタ番号)が8で、これに書き込みを行う演算器の
番号が2である時は、実レジスタ番号は2×32+8=72と
なる。
dを0〜3に番号付けを行えば、書き込みを行うための実
レジスタの番号は、図8(a)に示した式で決定可能であ
る。例えば、命令で指定された元のレジスタ番号(命令
レジスタ番号)が8で、これに書き込みを行う演算器の
番号が2である時は、実レジスタ番号は2×32+8=72と
なる。
【0042】このようにすれば、命令で指定される各レ
ジスタの番号ごとに、最も最近に書き込みを行った演算
器の番号を記録しておけば充分である。図8では、テー
ブルのエントリとして演算器の番号0〜3を書き込めるも
の、例えば2ビットのラッチを、命令で指定できるレジ
スタの総数32と同じだけレジスタ番号対応に用意する。
そして、書き込みレジスタ割り当て部713からの信号に
従って、命令で指定されていた元の書き込みレジスタ番
号に対応するエントリに、書き込みを行う演算器の番号
を格納する。また読み出しレジスタ割り当て部712から
の要求に従って、命令で指定されているレジスタの番号
に対応するエントリの内容を一度に2個まで読み出し、
元の命令で指定されているレジスタの番号と一緒にし
て、次の(a)式、 実レジスタ番号(0〜127) =書き込み演算器番号(0〜3)×32+命令レジスタ番号(0〜31)…(a)式 により実レジスタ番号を決定して、レジスタ割り当て部
712に返す。
ジスタの番号ごとに、最も最近に書き込みを行った演算
器の番号を記録しておけば充分である。図8では、テー
ブルのエントリとして演算器の番号0〜3を書き込めるも
の、例えば2ビットのラッチを、命令で指定できるレジ
スタの総数32と同じだけレジスタ番号対応に用意する。
そして、書き込みレジスタ割り当て部713からの信号に
従って、命令で指定されていた元の書き込みレジスタ番
号に対応するエントリに、書き込みを行う演算器の番号
を格納する。また読み出しレジスタ割り当て部712から
の要求に従って、命令で指定されているレジスタの番号
に対応するエントリの内容を一度に2個まで読み出し、
元の命令で指定されているレジスタの番号と一緒にし
て、次の(a)式、 実レジスタ番号(0〜127) =書き込み演算器番号(0〜3)×32+命令レジスタ番号(0〜31)…(a)式 により実レジスタ番号を決定して、レジスタ割り当て部
712に返す。
【0043】一度に2個までのエントリを読み出せる構
成とするのは、図7の命令実行部22で処理される演算命
令が、演算に用いるデータを最大2個までレジスタから
読み出すと想定しているからである。もし本発明を、命
令によってはもっと多くの演算に用いるデータをレジス
タから読み出す命令セットを持つプロセッサにおいて実
施するときは、それに見合うだけのエントリ数を一度に
読み出せるように図8のレジスタ割り当てテーブル711を
構成しなければならない。また当然図7中のレジスタフ
ァイル720a〜723dの構成もそれに見合うように、読み出
しポート数を増やしたものとする。
成とするのは、図7の命令実行部22で処理される演算命
令が、演算に用いるデータを最大2個までレジスタから
読み出すと想定しているからである。もし本発明を、命
令によってはもっと多くの演算に用いるデータをレジス
タから読み出す命令セットを持つプロセッサにおいて実
施するときは、それに見合うだけのエントリ数を一度に
読み出せるように図8のレジスタ割り当てテーブル711を
構成しなければならない。また当然図7中のレジスタフ
ァイル720a〜723dの構成もそれに見合うように、読み出
しポート数を増やしたものとする。
【0044】以上、図7〜図9の構成によって、命令で指
定されたレジスタの番号を実行時に付け替えることによ
り、実行時に空き演算器を自由に用いることができる。
この結果、本発明のように演算器ごとに書き込めるレジ
スタに制限があっても、充分性能を高めることができ
る。
定されたレジスタの番号を実行時に付け替えることによ
り、実行時に空き演算器を自由に用いることができる。
この結果、本発明のように演算器ごとに書き込めるレジ
スタに制限があっても、充分性能を高めることができ
る。
【0045】図7の例では、命令で指定できるレジスタ
の総数は32、番号は0〜31であり、実際の物理的なレジ
スタの番号は0〜127となっている。即ち、命令から見え
ない空いているレジスタが存在する。このような空きレ
ジスタは、利用する手段を備えれば、命令の実行順序の
動的な並べ替え(out of oder命令実行)を行う際の出力
依存、逆依存の解消に用いることができる。
の総数は32、番号は0〜31であり、実際の物理的なレジ
スタの番号は0〜127となっている。即ち、命令から見え
ない空いているレジスタが存在する。このような空きレ
ジスタは、利用する手段を備えれば、命令の実行順序の
動的な並べ替え(out of oder命令実行)を行う際の出力
依存、逆依存の解消に用いることができる。
【0046】命令の実行順序を動的に並べ替えて、演算
器が空いている限り、実行可能な命令をデータの待ち等
が生じている命令を追い越して実行することで性能を高
めるout of oder命令実行の方式では、命令間に依存関
係があると、命令の実行順序の追い越しができない。こ
こで命令間の依存関係には、ある命令の結果を使って別
の命令が演算を行うというデータのフロー依存の他に、
出力依存と逆依存の二つの種類の依存関係がある。
器が空いている限り、実行可能な命令をデータの待ち等
が生じている命令を追い越して実行することで性能を高
めるout of oder命令実行の方式では、命令間に依存関
係があると、命令の実行順序の追い越しができない。こ
こで命令間の依存関係には、ある命令の結果を使って別
の命令が演算を行うというデータのフロー依存の他に、
出力依存と逆依存の二つの種類の依存関係がある。
【0047】ある命令の結果を格納するレジスタと同じ
レジスタに結果を格納する後続の命令は、前者の命令を
追い越して実行することができない。これが出力依存で
ある。またある命令がデータを読もうとしているレジス
タと同じレジスタを再利用して結果を格納する後続の命
令は、同じく前者の命令を追い越すことができない。こ
れが逆依存である。
レジスタに結果を格納する後続の命令は、前者の命令を
追い越して実行することができない。これが出力依存で
ある。またある命令がデータを読もうとしているレジス
タと同じレジスタを再利用して結果を格納する後続の命
令は、同じく前者の命令を追い越すことができない。こ
れが逆依存である。
【0048】この出力依存及び逆依存は、使用できるレ
ジスタ数の制限から、ある命令で結果を格納することに
用いたレジスタもその後再び別の命令の結果を格納する
ために再利用しなければならないことにより生じるもの
である。これら二つの依存関係は、命令の実行時に動的
に結果を格納するレジスタを空いているレジスタに割り
当て直すことができれば、解消することが可能となる。
ジスタ数の制限から、ある命令で結果を格納することに
用いたレジスタもその後再び別の命令の結果を格納する
ために再利用しなければならないことにより生じるもの
である。これら二つの依存関係は、命令の実行時に動的
に結果を格納するレジスタを空いているレジスタに割り
当て直すことができれば、解消することが可能となる。
【0049】本発明をout of oder命令実行の方式を持
ったプロセッサにおいて実施すれば、次のような実施の
形態により、上記のようなレジスタの動的な割り当てが
可能となる。
ったプロセッサにおいて実施すれば、次のような実施の
形態により、上記のようなレジスタの動的な割り当てが
可能となる。
【0050】図10に本発明によりout of oder命令実行
方式を採るプロセッサの命令実行部22の構成の例を掲げ
る。図10では、命令デコード部21より送られてきた命令
を順不同命令発行制御部90において実行順序を動的に並
べ替え、レジスタ番号の割り当ても行った後、図7の実
施の形態の例と同様に、書き込みレジスタ判別部112に
よって命令の結果を書き込む実レジスタの番号を判定す
る。そしてセレクタ113を制御して該当する命令レジス
タ114a〜114dに送り、割り当てられた演算器115a〜115d
を用いて命令を実行する。図10の例では、ロード/スト
ア命令も図7と同じく命令実行部22でレジスタ番号の付
け替えを行うこととしているので、ロード/ストア部23
には図9のものと同じものを用いることができる。
方式を採るプロセッサの命令実行部22の構成の例を掲げ
る。図10では、命令デコード部21より送られてきた命令
を順不同命令発行制御部90において実行順序を動的に並
べ替え、レジスタ番号の割り当ても行った後、図7の実
施の形態の例と同様に、書き込みレジスタ判別部112に
よって命令の結果を書き込む実レジスタの番号を判定す
る。そしてセレクタ113を制御して該当する命令レジス
タ114a〜114dに送り、割り当てられた演算器115a〜115d
を用いて命令を実行する。図10の例では、ロード/スト
ア命令も図7と同じく命令実行部22でレジスタ番号の付
け替えを行うこととしているので、ロード/ストア部23
には図9のものと同じものを用いることができる。
【0051】次に実際にout of oder命令実行を実現
し、レジスタの割り当ても行う順不同命令発行制御部に
おける、本発明の実施の形態の例を図11に示す。本発明
では、命令の実行順序の並び替えを行って実行可能にな
った命令が選ばれた時点で、その時の空き演算器の状況
によって使用可能な演算器が書き込めるレジスタファイ
ルに含まれる実レジスタを、命令の結果を格納するレジ
スタとして割り付ける方式となる。この点が本発明の実
施例における特徴となる。以下の説明では、命令で指定
するレジスタ番号を論理(レジスタ)番号、物理的なレ
ジスタに付けられた番号を実(レジスタ)番号とする。
また論理レジスタ番号は0から31の32個、実レジスタ番
号は0から127の128個とする。
し、レジスタの割り当ても行う順不同命令発行制御部に
おける、本発明の実施の形態の例を図11に示す。本発明
では、命令の実行順序の並び替えを行って実行可能にな
った命令が選ばれた時点で、その時の空き演算器の状況
によって使用可能な演算器が書き込めるレジスタファイ
ルに含まれる実レジスタを、命令の結果を格納するレジ
スタとして割り付ける方式となる。この点が本発明の実
施例における特徴となる。以下の説明では、命令で指定
するレジスタ番号を論理(レジスタ)番号、物理的なレ
ジスタに付けられた番号を実(レジスタ)番号とする。
また論理レジスタ番号は0から31の32個、実レジスタ番
号は0から127の128個とする。
【0052】図11の例では、命令デコード部21より送ら
れて来た命令は、初めに読み出しレジスタ割り当て部91
1で、レジスタ割当てテーブル916を参照して、命令で指
定された読み出しレジスタの論理番号を実レジスタ番号
に変換する。次に、命令で指定された書き込みレジスタ
の論理番号について、まず一時的な番号をレジスタ一時
割り当て部912で割り当てて、この一時番号に変換す
る。その後、読み出しを行うレジスタ上に必要となるデ
ータが別の命令で生成されて実行可能となるまで命令バ
ッファ913に蓄えられて待つ。命令バッファ913からは格
納された順序に関わらず、読み出しを行うレジスタにデ
ータが準備できた命令から取り出して実行を行う。その
際、書き込みレジスタに割り当てられていた一時番号を
実レジスタ割り当て部914により実際に値を書き込む実
レジスタ番号に割り当て直す。
れて来た命令は、初めに読み出しレジスタ割り当て部91
1で、レジスタ割当てテーブル916を参照して、命令で指
定された読み出しレジスタの論理番号を実レジスタ番号
に変換する。次に、命令で指定された書き込みレジスタ
の論理番号について、まず一時的な番号をレジスタ一時
割り当て部912で割り当てて、この一時番号に変換す
る。その後、読み出しを行うレジスタ上に必要となるデ
ータが別の命令で生成されて実行可能となるまで命令バ
ッファ913に蓄えられて待つ。命令バッファ913からは格
納された順序に関わらず、読み出しを行うレジスタにデ
ータが準備できた命令から取り出して実行を行う。その
際、書き込みレジスタに割り当てられていた一時番号を
実レジスタ割り当て部914により実際に値を書き込む実
レジスタ番号に割り当て直す。
【0053】実レジスタ割り当て部914では、レジスタ
状態テーブル915、レジスタ割り当てテーブル916にレジ
スタの割り当て情報や使用情報を管理更新して、空き演
算器信号入力701に入力された空き演算器の情報によ
り、空き演算器が書き込めるレジスタファイル中の実レ
ジスタ番号を割り当てる。実レジスタ割り当て部914に
より書き込みレジスタに実レジスタ番号を割り当てられ
た命令は、信号線702によりセレクタ113を経由して各命
令レジスタ114a〜114d、ロード/ストア部23に送出され
る。
状態テーブル915、レジスタ割り当てテーブル916にレジ
スタの割り当て情報や使用情報を管理更新して、空き演
算器信号入力701に入力された空き演算器の情報によ
り、空き演算器が書き込めるレジスタファイル中の実レ
ジスタ番号を割り当てる。実レジスタ割り当て部914に
より書き込みレジスタに実レジスタ番号を割り当てられ
た命令は、信号線702によりセレクタ113を経由して各命
令レジスタ114a〜114d、ロード/ストア部23に送出され
る。
【0054】次に、図11中の構成要素の内、レジスタ割
り当てテーブル916、命令バッファ913、レジスタ状態テ
ーブル915の詳細な構成の例をそれぞれ図12、図13、図1
4に掲げる。また実レジスタ割り当て部914によって実現
される命令バッファ913からの命令の取り出し及び実レ
ジスタの割り当て、レジスタ状態テーブル915、レジス
タ割り当てテーブル916の制御方法について、図15のフ
ローチャートにより示す。また読み出しレジスタ割り当
て部911、レジスタ一時割り当て部912によって実現され
る読み出しレジスタの割り当て、一時番号の割り当て、
命令バッファ913への命令の格納の制御方法について、
同じくフローチャートにより図16に示す。
り当てテーブル916、命令バッファ913、レジスタ状態テ
ーブル915の詳細な構成の例をそれぞれ図12、図13、図1
4に掲げる。また実レジスタ割り当て部914によって実現
される命令バッファ913からの命令の取り出し及び実レ
ジスタの割り当て、レジスタ状態テーブル915、レジス
タ割り当てテーブル916の制御方法について、図15のフ
ローチャートにより示す。また読み出しレジスタ割り当
て部911、レジスタ一時割り当て部912によって実現され
る読み出しレジスタの割り当て、一時番号の割り当て、
命令バッファ913への命令の格納の制御方法について、
同じくフローチャートにより図16に示す。
【0055】まず図12では、レジスタ割り当てテーブル
916の構成を示している。レジスタ割り当てテーブル916
は、命令で指定するレジスタの論理番号に対応する32個
分のエントリを備えている。それぞれのエントリは、実
レジスタの割り当てがある場合の実レジスタ番号記録部
921と、一時番号の割り当てがある場合の一時割り当て
番号マスク記録部922の二つの部分からなっている。こ
のうち図12の例では、一時割り当て番号マスク記録部92
2において、一時番号の最大値と等しいだけのビット数
を各エントリに備え、一時番号の割り当てがある場合に
は、その番号と等しいビット番号のビットを1にするこ
とでそれを表現している。もし、あるエントリの一時番
号マスクのビットがすべて0である時は、そのエントリ
の実レジスタ番号記録部921内に有効な実レジスタ番号
の割り当てがあると考える。一時割り当て番号マスク記
録部922及び実レジスタ番号記録部921内の各エントリの
情報は、まず読み出しレジスタ割り当て部911からの要
求により読み出され、信号線バス903によって返され
る。同時に、読み出された情報のうち一時割り当て番号
マスクの内容を検出器923において調べ、すべてのビッ
トが0、即ち有効な実レジスタ番号の割り当てがある場
合には、その実レジスタ番号を信号線904によりレジス
タ状態テーブル915へ送出する。
916の構成を示している。レジスタ割り当てテーブル916
は、命令で指定するレジスタの論理番号に対応する32個
分のエントリを備えている。それぞれのエントリは、実
レジスタの割り当てがある場合の実レジスタ番号記録部
921と、一時番号の割り当てがある場合の一時割り当て
番号マスク記録部922の二つの部分からなっている。こ
のうち図12の例では、一時割り当て番号マスク記録部92
2において、一時番号の最大値と等しいだけのビット数
を各エントリに備え、一時番号の割り当てがある場合に
は、その番号と等しいビット番号のビットを1にするこ
とでそれを表現している。もし、あるエントリの一時番
号マスクのビットがすべて0である時は、そのエントリ
の実レジスタ番号記録部921内に有効な実レジスタ番号
の割り当てがあると考える。一時割り当て番号マスク記
録部922及び実レジスタ番号記録部921内の各エントリの
情報は、まず読み出しレジスタ割り当て部911からの要
求により読み出され、信号線バス903によって返され
る。同時に、読み出された情報のうち一時割り当て番号
マスクの内容を検出器923において調べ、すべてのビッ
トが0、即ち有効な実レジスタ番号の割り当てがある場
合には、その実レジスタ番号を信号線904によりレジス
タ状態テーブル915へ送出する。
【0056】またレジスタ一時割り当て部912より命令
で指定される書き込みレジスタの論理番号に対し、新た
な一時番号の割り当てが行われた時には、信号線バス90
2により論理レジスタ番号と割り当てる一時番号が受け
取られる。図12では、信号線バス902の信号に従って、
論理レジスタ番号により選んだエントリに対し、一時割
り当て番号マスク922の設定された一時番号に対応する
ビットを1にセットし、他のビットを0とする。同時に
そのエントリがそれまで有効な実レジスタ番号の割り当
てを持っていた時は(直前に一時割り当て番号マスク922
のすべてのビットが0であった時は)、実レジスタ番号
記録部912よりそれまで格納されていた実レジスタ番号
を読み出して信号線905によりレジスタ状態テーブル915
へ通知する。
で指定される書き込みレジスタの論理番号に対し、新た
な一時番号の割り当てが行われた時には、信号線バス90
2により論理レジスタ番号と割り当てる一時番号が受け
取られる。図12では、信号線バス902の信号に従って、
論理レジスタ番号により選んだエントリに対し、一時割
り当て番号マスク922の設定された一時番号に対応する
ビットを1にセットし、他のビットを0とする。同時に
そのエントリがそれまで有効な実レジスタ番号の割り当
てを持っていた時は(直前に一時割り当て番号マスク922
のすべてのビットが0であった時は)、実レジスタ番号
記録部912よりそれまで格納されていた実レジスタ番号
を読み出して信号線905によりレジスタ状態テーブル915
へ通知する。
【0057】更に実レジスタ割り当て部914により、あ
る一時番号に新たに実レジスタが割り付けられた時に
は、その一時番号と実レジスタ番号が信号線901により
通知される。そして信号線901の情報により、該当する
一時番号を保持しているエントリがないか、一時割り当
て番号マスク922内の各エントリが検索される。この検
索は一時割り当て番号マスクの各エントリが一時番号を
それぞれ対応するビットを1にセットすることで表現し
ているので、各エントリの該当する一時番号に対応する
ビットだけを調べれば良く、容易に実現可能である。検
索の結果該当する一時番号を持つエントリがあれば、そ
れに対応する実レジスタ番号記録部中のエントリに、割
り付けられた実レジスタ番号を設定し、該当する一時割
り当て番号マスクのビットを0にリセットする。同時に
信号線906により該当する一時番号がレジスタ割り当て
テーブル内に保持されていたことをレジスタ状態テーブ
ル915に通知する。
る一時番号に新たに実レジスタが割り付けられた時に
は、その一時番号と実レジスタ番号が信号線901により
通知される。そして信号線901の情報により、該当する
一時番号を保持しているエントリがないか、一時割り当
て番号マスク922内の各エントリが検索される。この検
索は一時割り当て番号マスクの各エントリが一時番号を
それぞれ対応するビットを1にセットすることで表現し
ているので、各エントリの該当する一時番号に対応する
ビットだけを調べれば良く、容易に実現可能である。検
索の結果該当する一時番号を持つエントリがあれば、そ
れに対応する実レジスタ番号記録部中のエントリに、割
り付けられた実レジスタ番号を設定し、該当する一時割
り当て番号マスクのビットを0にリセットする。同時に
信号線906により該当する一時番号がレジスタ割り当て
テーブル内に保持されていたことをレジスタ状態テーブ
ル915に通知する。
【0058】図13は命令バッファ913の一エントリの構
成の例である。各エントリは命令OPコード保持部960、
二つの読み出しレジスタ番号保持部961及び962、そのエ
ントリが空きであるかどうかを示すF/E(Full/Empty)ビ
ット963、読み出しレジスタに一時番号が割り付けられ
ているとき、それを記録する二つの一時割り当て番号マ
スク記録部964及び965を備える。一時割り当て番号マス
ク記録部964及び965では、図12のレジスタ割り当てテー
ブル916中の一時割り当て番号マスク922と同様に、割り
当てられた一時番号を、対応する番号のビットを1と
し、他のビットを0とすることで表現している。一時割
り当て番号マスク記録部964または965のすべてのビット
が0の時は、対応する読み出しレジスタ番号保持部961ま
たは962に有効な実レジスタ番号が保持されていること
を示している。また、命令の結果を書き込むレジスタに
ついては、命令バッファ913中に命令が保持されている
間は書き込みレジスタには一時番号が割り当てられてい
るので、その一時番号として例えば命令バッファ913の
エントリを番号付けして用いれば、そのエントリによっ
て一時番号が一意に決定されるので、特に保持する手段
を設けなくてもよい。
成の例である。各エントリは命令OPコード保持部960、
二つの読み出しレジスタ番号保持部961及び962、そのエ
ントリが空きであるかどうかを示すF/E(Full/Empty)ビ
ット963、読み出しレジスタに一時番号が割り付けられ
ているとき、それを記録する二つの一時割り当て番号マ
スク記録部964及び965を備える。一時割り当て番号マス
ク記録部964及び965では、図12のレジスタ割り当てテー
ブル916中の一時割り当て番号マスク922と同様に、割り
当てられた一時番号を、対応する番号のビットを1と
し、他のビットを0とすることで表現している。一時割
り当て番号マスク記録部964または965のすべてのビット
が0の時は、対応する読み出しレジスタ番号保持部961ま
たは962に有効な実レジスタ番号が保持されていること
を示している。また、命令の結果を書き込むレジスタに
ついては、命令バッファ913中に命令が保持されている
間は書き込みレジスタには一時番号が割り当てられてい
るので、その一時番号として例えば命令バッファ913の
エントリを番号付けして用いれば、そのエントリによっ
て一時番号が一意に決定されるので、特に保持する手段
を設けなくてもよい。
【0059】図13において、実レジスタ割り当て部914
よりある一時番号に対して実レジスタ番号の割り当てが
生じたことが通知された時には、対応する一時番号を一
時割り当て番号マスク964及び965に保持しているエント
リがないかどうかが検索される。この検索も図12のレジ
スタ割り当てテーブル916の構成例と同様に、各エント
リの一時割り当て番号マスク記録部964及び965中の該当
するビットだけを調べれば良いので、容易に実現され
る。そしてもし該当するビットが1になっている、即ち
該当する一時番号の割り当てを保持しているエントリが
あれば、そのビットを0とすると共に、通知された実レ
ジスタ番号を対応する読み出しレジスタ番号保持部961
または962に格納する。同時に一時番号の割り当てを保
持していたことを信号線951または952に信号を出力して
通知する。信号線951及び952の信号は総和器966によっ
てすべてのエントリについて総和が取られ、命令バッフ
ァ内で該当する一時番号の割り当てが何個存在していた
かを示す信号となり、信号線909によってレジスタ状態
テーブル915へ通知される。
よりある一時番号に対して実レジスタ番号の割り当てが
生じたことが通知された時には、対応する一時番号を一
時割り当て番号マスク964及び965に保持しているエント
リがないかどうかが検索される。この検索も図12のレジ
スタ割り当てテーブル916の構成例と同様に、各エント
リの一時割り当て番号マスク記録部964及び965中の該当
するビットだけを調べれば良いので、容易に実現され
る。そしてもし該当するビットが1になっている、即ち
該当する一時番号の割り当てを保持しているエントリが
あれば、そのビットを0とすると共に、通知された実レ
ジスタ番号を対応する読み出しレジスタ番号保持部961
または962に格納する。同時に一時番号の割り当てを保
持していたことを信号線951または952に信号を出力して
通知する。信号線951及び952の信号は総和器966によっ
てすべてのエントリについて総和が取られ、命令バッフ
ァ内で該当する一時番号の割り当てが何個存在していた
かを示す信号となり、信号線909によってレジスタ状態
テーブル915へ通知される。
【0060】図14は、レジスタ状態テーブル915の内部
構成の例である。図14では、ある実レジスタ番号に対応
する読み出しの予約数をカウントする読み出し予約カウ
ンタ991、使用されていない実レジスタの番号を判定
し、その中から空き演算器信号入力701の信号に基づい
て空き演算器が書き込める使用可能な実レジスタ番号を
選択するフリーレジスタ判定部992、ある実レジスタ番
号がレジスタ割り当てテーブル916内に保持されている
かどうかを示す割り当て状態フラグ993より構成されて
いる。このうち、読み出し予約カウンタ991と割り当て
状態フラグ993は、各実レジスタ番号に対応して設けら
れるので、それぞれ実レジスタ番号の個数分、図14の例
では128個ある。また一つの読み出し予約カウンタ991で
カウントされる読み出し予約数の最大値は、1命令当た
りのレジスタの読み出し数の最大値の、命令バッファ91
3のエントリ数倍に等しい。
構成の例である。図14では、ある実レジスタ番号に対応
する読み出しの予約数をカウントする読み出し予約カウ
ンタ991、使用されていない実レジスタの番号を判定
し、その中から空き演算器信号入力701の信号に基づい
て空き演算器が書き込める使用可能な実レジスタ番号を
選択するフリーレジスタ判定部992、ある実レジスタ番
号がレジスタ割り当てテーブル916内に保持されている
かどうかを示す割り当て状態フラグ993より構成されて
いる。このうち、読み出し予約カウンタ991と割り当て
状態フラグ993は、各実レジスタ番号に対応して設けら
れるので、それぞれ実レジスタ番号の個数分、図14の例
では128個ある。また一つの読み出し予約カウンタ991で
カウントされる読み出し予約数の最大値は、1命令当た
りのレジスタの読み出し数の最大値の、命令バッファ91
3のエントリ数倍に等しい。
【0061】図14において、ある命令を命令バッファ91
3から取り出して実行しようとした時には、まず実レジ
スタ割り当て部914より書き込みレジスタに対する実レ
ジスタ番号割り当て要求と、読み出しレジスタに割り当
てられている実レジスタ番号が信号線バス907により通
知される。このうち読み出し実レジスタ番号は図14の例
では同時に2個まで入力可能な構成となっており、対応
する読み出し予約カウンタ991の内容をそれぞれ1だけカ
ウントダウンする。また実レジスタ割り当て要求入力は
フリーレジスタ判定部992に入力される。フリーレジス
タ判定部992では、空き演算器信号入力701により選ばれ
る空き演算器が書き込めるレジスタファイル内の実レジ
スタ番号の内、対応する読み出し予約カウンタ991の内
容が0になっており、かつ同じく対応する割り当て状態
フラグ993が0である番号から、新たに命令の結果の書き
込みに用いられる実レジスタ番号を選択する。
3から取り出して実行しようとした時には、まず実レジ
スタ割り当て部914より書き込みレジスタに対する実レ
ジスタ番号割り当て要求と、読み出しレジスタに割り当
てられている実レジスタ番号が信号線バス907により通
知される。このうち読み出し実レジスタ番号は図14の例
では同時に2個まで入力可能な構成となっており、対応
する読み出し予約カウンタ991の内容をそれぞれ1だけカ
ウントダウンする。また実レジスタ割り当て要求入力は
フリーレジスタ判定部992に入力される。フリーレジス
タ判定部992では、空き演算器信号入力701により選ばれ
る空き演算器が書き込めるレジスタファイル内の実レジ
スタ番号の内、対応する読み出し予約カウンタ991の内
容が0になっており、かつ同じく対応する割り当て状態
フラグ993が0である番号から、新たに命令の結果の書き
込みに用いられる実レジスタ番号を選択する。
【0062】選ばれた実レジスタ番号は信号線908によ
り実レジスタ割り当て部914に通知される。実レジスタ
割り当て部914では、これをレジスタ割り当てテーブル9
16にも通知し、新しく割り当てた実レジスタ番号がそれ
までの一時番号を置き換えてレジスタ割り当てテーブル
916内に格納された時には、それを示す信号を信号線906
に出力させる。信号線906の信号が出力された時には、
図14では新しく割り当てた実レジスタ番号に対応する割
り当て状態フラグ993を1にセットする。また同じく、命
令バッファ913中の他のエントリの読み出しレジスタ番
号記録部961及び962に新しく割り付けた実レジスタ番号
がそれまでの一時番号を置き換えて何個まで格納された
かが信号線909により通知されるので、その個数を対応
する読み出し予約カウンタ991にセットする。
り実レジスタ割り当て部914に通知される。実レジスタ
割り当て部914では、これをレジスタ割り当てテーブル9
16にも通知し、新しく割り当てた実レジスタ番号がそれ
までの一時番号を置き換えてレジスタ割り当てテーブル
916内に格納された時には、それを示す信号を信号線906
に出力させる。信号線906の信号が出力された時には、
図14では新しく割り当てた実レジスタ番号に対応する割
り当て状態フラグ993を1にセットする。また同じく、命
令バッファ913中の他のエントリの読み出しレジスタ番
号記録部961及び962に新しく割り付けた実レジスタ番号
がそれまでの一時番号を置き換えて何個まで格納された
かが信号線909により通知されるので、その個数を対応
する読み出し予約カウンタ991にセットする。
【0063】レジスタ割り当てテーブル916内に保持さ
れた実レジスタ番号は、後続の命令で読み出しレジスタ
の番号として読み出されて、命令バッファ913内の読み
出しレジスタ番号保持部961及び962に格納される度に、
レジスタ割り当てテーブル916より信号線904に出力され
て通知される。図14では信号線904に出力された2個まで
の実レジスタ番号に従って、対応する読み出し予約カウ
ンタ991を1だけカウントアップする。このようにするこ
とによって、読み出し予約カウンタ991には、それぞれ
対応する実レジスタの読み出しを待っている数が命令バ
ッファ913中に何個保持されているかを常に示している
ことになる。この値が0であり、かつ対応する割り当て
状態フラグ993が0である、即ちレジスタ割り当てテーブ
ル916内でその実レジスタ番号に割り当てられているレ
ジスタがないという実レジスタ番号が、空きレジスタ番
号となる。フリーレジスタ判定部992では、この空きレ
ジスタ番号の中から新たに用いる空き演算器が書き込め
る番号を選んで、新しく命令の結果を書き込む実レジス
タ番号として割り付けるのである。
れた実レジスタ番号は、後続の命令で読み出しレジスタ
の番号として読み出されて、命令バッファ913内の読み
出しレジスタ番号保持部961及び962に格納される度に、
レジスタ割り当てテーブル916より信号線904に出力され
て通知される。図14では信号線904に出力された2個まで
の実レジスタ番号に従って、対応する読み出し予約カウ
ンタ991を1だけカウントアップする。このようにするこ
とによって、読み出し予約カウンタ991には、それぞれ
対応する実レジスタの読み出しを待っている数が命令バ
ッファ913中に何個保持されているかを常に示している
ことになる。この値が0であり、かつ対応する割り当て
状態フラグ993が0である、即ちレジスタ割り当てテーブ
ル916内でその実レジスタ番号に割り当てられているレ
ジスタがないという実レジスタ番号が、空きレジスタ番
号となる。フリーレジスタ判定部992では、この空きレ
ジスタ番号の中から新たに用いる空き演算器が書き込め
る番号を選んで、新しく命令の結果を書き込む実レジス
タ番号として割り付けるのである。
【0064】また信号線905には、レジスタ割り当てテ
ーブル916内のエントリにおいてそれまで格納されてい
た実レジスタ番号が、新たに一時番号と置き替わった時
に出力される。図14では信号線905に実レジスタ番号が
入力されてきた時には、対応する割り当て状態フラグ99
3を0にリセットする。
ーブル916内のエントリにおいてそれまで格納されてい
た実レジスタ番号が、新たに一時番号と置き替わった時
に出力される。図14では信号線905に実レジスタ番号が
入力されてきた時には、対応する割り当て状態フラグ99
3を0にリセットする。
【0065】次に具体的な制御の手順の例を、図15及び
図16に示したフローチャートにより説明する。
図16に示したフローチャートにより説明する。
【0066】まず命令バッファ913からの命令の取りだ
しと実レジスタ番号の割り当ての手順を図15により説明
する。
しと実レジスタ番号の割り当ての手順を図15により説明
する。
【0067】図15では、まずステップ501において利用
可能な空き演算器が生じるまで待つ。
可能な空き演算器が生じるまで待つ。
【0068】空き演算器が生じたら、ステップ502にお
いて命令バッファ913中に格納された命令の内、読み出
しレジスタに2個とも実レジスタ番号が割り当てられて
いるものを選ぶ。読み出しレジスタに実レジスタ番号が
割り当てられていると言うことは、既にそのレジスタに
書き込みを行う命令が実行されていて、その実レジスタ
上に値が生成されていることを示している。
いて命令バッファ913中に格納された命令の内、読み出
しレジスタに2個とも実レジスタ番号が割り当てられて
いるものを選ぶ。読み出しレジスタに実レジスタ番号が
割り当てられていると言うことは、既にそのレジスタに
書き込みを行う命令が実行されていて、その実レジスタ
上に値が生成されていることを示している。
【0069】次にステップ503において、2個の読み出し
を行う実レジスタ番号に対し、レジスタ状態テーブル91
5中の読み出し予約カウンタ991をそれぞれ1ずつカウン
トダウンする。
を行う実レジスタ番号に対し、レジスタ状態テーブル91
5中の読み出し予約カウンタ991をそれぞれ1ずつカウン
トダウンする。
【0070】ステップ504では、レジスタ状態テーブル9
15中のフリーレジスタ判定部992より、読み出し予約カ
ウンタ991の内容が0であり、かつ割り当て状態フラグ99
3が0である実レジスタ番号の中から、空き演算器が書き
込める番号を選んで、その命令の結果を書き込む実レジ
スタとして割り当てる。
15中のフリーレジスタ判定部992より、読み出し予約カ
ウンタ991の内容が0であり、かつ割り当て状態フラグ99
3が0である実レジスタ番号の中から、空き演算器が書き
込める番号を選んで、その命令の結果を書き込む実レジ
スタとして割り当てる。
【0071】ステップ505及び506では、それまで書き込
みレジスタに割り当てられていた一時番号がレジスタ割
り当てテーブル916内に保持されていたどうかを検索し
て判定する。もし保持されていた時には、ステップ507
においてレジスタ割り当てテーブル中の該当するエント
リの実レジスタ番号記録部921へステップ504で新たに割
り当てた実レジスタ番号を設定する。またステップ508
において、レジスタ割り当てテーブル915内の対応する
割り当て状態フラグ993を1にセットする。
みレジスタに割り当てられていた一時番号がレジスタ割
り当てテーブル916内に保持されていたどうかを検索し
て判定する。もし保持されていた時には、ステップ507
においてレジスタ割り当てテーブル中の該当するエント
リの実レジスタ番号記録部921へステップ504で新たに割
り当てた実レジスタ番号を設定する。またステップ508
において、レジスタ割り当てテーブル915内の対応する
割り当て状態フラグ993を1にセットする。
【0072】次にステップ509及び510では、同じくそれ
まで書き込みレジスタに割り当てられていた一時番号
が、命令バッファ913中の他のエントリの読み出しレジ
スタとして保持されていないかどうかどうか検索する。
そして、保持されているのを検出したエントリについて
は、ステップ511において対応する読み出しレジスタ番
号保持部961または962に、ステップ504で新しく割り付
けた実レジスタ番号を設定する。そして、ステップ512
においてレジスタ状態テーブル915中の実レジスタ番号
に対応する読み出し予約カウンタ991をカウントアップ
して、命令バッファ913の各エントリ中の読み出しレジ
スタ保持部961または962に設定された総数を数え上げ
る。
まで書き込みレジスタに割り当てられていた一時番号
が、命令バッファ913中の他のエントリの読み出しレジ
スタとして保持されていないかどうかどうか検索する。
そして、保持されているのを検出したエントリについて
は、ステップ511において対応する読み出しレジスタ番
号保持部961または962に、ステップ504で新しく割り付
けた実レジスタ番号を設定する。そして、ステップ512
においてレジスタ状態テーブル915中の実レジスタ番号
に対応する読み出し予約カウンタ991をカウントアップ
して、命令バッファ913の各エントリ中の読み出しレジ
スタ保持部961または962に設定された総数を数え上げ
る。
【0073】以上のステップの処理がすべて終了した
ら、ステップ513において、空き演算器に対して命令を
発行し、ステップ501へ戻る。
ら、ステップ513において、空き演算器に対して命令を
発行し、ステップ501へ戻る。
【0074】次に、命令バッファ913への命令の格納、
読み出しレジスタへの実レジスタ番号または一時番号の
割り当て、及び書き込みレジスタへの一時番号の割り当
ての手順の例を図16のフローチャートで説明する。
読み出しレジスタへの実レジスタ番号または一時番号の
割り当て、及び書き込みレジスタへの一時番号の割り当
ての手順の例を図16のフローチャートで説明する。
【0075】図16では、まずステップ601及び602におい
て、命令バッファ913中に空きエントリが生じるまで待
つ。
て、命令バッファ913中に空きエントリが生じるまで待
つ。
【0076】次に空きエントリがあったら、ステップ60
3において命令で指定された2個までの読み出しレジスタ
の論理番号に対し、レジスタ割り当てテーブル916の内
容を読み出し、そのまま命令バッファ913中の空きエン
トリの読み出しレジスタ番号記録部961及び962、一時割
り当て番号マスク記録部964及び965へコピーする。
3において命令で指定された2個までの読み出しレジスタ
の論理番号に対し、レジスタ割り当てテーブル916の内
容を読み出し、そのまま命令バッファ913中の空きエン
トリの読み出しレジスタ番号記録部961及び962、一時割
り当て番号マスク記録部964及び965へコピーする。
【0077】次に今読み出したレジスタ割り当てテーブ
ル916の内容に従って、ステップ604において実レジスタ
番号の割り当てがあったかどうか判定し、実レジスタ番
号の割り当てがあった時には、ステップ605においてレ
ジスタ状態テーブル915中の対応する読み出し予約カウ
ンタ991をカウントアップする。
ル916の内容に従って、ステップ604において実レジスタ
番号の割り当てがあったかどうか判定し、実レジスタ番
号の割り当てがあった時には、ステップ605においてレ
ジスタ状態テーブル915中の対応する読み出し予約カウ
ンタ991をカウントアップする。
【0078】ステップ606において、命令で指定された
書き込みレジスタの論理番号に対し、一時番号として命
令バッファ913中の当該空きエントリの番号を割り付け
る。
書き込みレジスタの論理番号に対し、一時番号として命
令バッファ913中の当該空きエントリの番号を割り付け
る。
【0079】ステップ607において、レジスタ割り当て
テーブル916中の、命令で指定された書き込みレジスタ
の論理番号に対応するエントリの内容を読み出し、ステ
ップ608において実レジスタ番号の割り当てがあったか
どうか判定する。
テーブル916中の、命令で指定された書き込みレジスタ
の論理番号に対応するエントリの内容を読み出し、ステ
ップ608において実レジスタ番号の割り当てがあったか
どうか判定する。
【0080】実レジスタ番号の割り当てがあった時に
は、ステップ609において、レジスタ状態テーブル915中
の、その実レジスタ番号に対応する割り当て状態フラグ
993を0にリセットする。
は、ステップ609において、レジスタ状態テーブル915中
の、その実レジスタ番号に対応する割り当て状態フラグ
993を0にリセットする。
【0081】そしてステップ610において、レジスタ割
り当てテーブル916中の書き込みレジスタの論理番号に
対応するエントリに対し、一時割り当て番号マスク部92
2の割り当てた一時番号に対応するビットを1にセットす
る。
り当てテーブル916中の書き込みレジスタの論理番号に
対応するエントリに対し、一時割り当て番号マスク部92
2の割り当てた一時番号に対応するビットを1にセットす
る。
【0082】最後にステップ611において、命令バッフ
ァ913中の当該空きエントリに対し、残りのOPコード保
持部960に命令のOPコードを格納し、F/Eビット963を1に
セットして、命令バッファ913への命令の格納を完了す
る。
ァ913中の当該空きエントリに対し、残りのOPコード保
持部960に命令のOPコードを格納し、F/Eビット963を1に
セットして、命令バッファ913への命令の格納を完了す
る。
【0083】以上、図10〜14に示した構成を図15、16に
示した方法で制御すれば、多数の演算器を備えてもレジ
スタファイルのポート数の増大を抑えることができると
ともに、多数用意するレジスタを有効に用いて出力依
存、逆依存を解消し、out of order命令実行を行って高
い性能をあげることができる。
示した方法で制御すれば、多数の演算器を備えてもレジ
スタファイルのポート数の増大を抑えることができると
ともに、多数用意するレジスタを有効に用いて出力依
存、逆依存を解消し、out of order命令実行を行って高
い性能をあげることができる。
【0084】図10から図16にて説明した本発明の実施の
形態では、実レジスタの読み出し期間を正確に決定する
ため、若干複雑な構成となっている。これに対し、元の
命令で指定されたレジスタに新たに書き込む命令が現れ
た時には、それまでそのレジスタに割り当てられていた
実レジスタはその後の命令から読み出されることはな
い。これを利用すれば、簡略化した構成も可能である。
次にそのような構成とした例を示す。
形態では、実レジスタの読み出し期間を正確に決定する
ため、若干複雑な構成となっている。これに対し、元の
命令で指定されたレジスタに新たに書き込む命令が現れ
た時には、それまでそのレジスタに割り当てられていた
実レジスタはその後の命令から読み出されることはな
い。これを利用すれば、簡略化した構成も可能である。
次にそのような構成とした例を示す。
【0085】図17は、図11に代えて用いることのできる
順不同発行制御部90の別の実施の例である。図17では、
全体的な動作は図11とほぼ同じである。即ち、命令デコ
ード部21より送られてきた命令は、初めに読み出しレジ
スタ割り当て部811で、命令で指定された読み出しレジ
スタの論理番号を実レジスタ番号に変換する。次に、命
令で指定された書き込みレジスタの論理番号について、
まず一時番号をレジスタ一時割り当て部812で割り当て
て、この一時番号に変換する。その後、読み出しを行う
レジスタ上に必要となるデータが別の命令で生成されて
実行可能となるまで命令バッファ813に蓄えられて待
つ。命令バッファ813からは格納された順序に関わら
ず、読み出しを行うレジスタにデータが準備できた命令
から取り出して実行を行う。その際、書き込みレジスタ
に割り当てられていた一時番号を実レジスタ割り当て部
814により実際に値を書き込む実レジスタ番号に割り当
て直す。
順不同発行制御部90の別の実施の例である。図17では、
全体的な動作は図11とほぼ同じである。即ち、命令デコ
ード部21より送られてきた命令は、初めに読み出しレジ
スタ割り当て部811で、命令で指定された読み出しレジ
スタの論理番号を実レジスタ番号に変換する。次に、命
令で指定された書き込みレジスタの論理番号について、
まず一時番号をレジスタ一時割り当て部812で割り当て
て、この一時番号に変換する。その後、読み出しを行う
レジスタ上に必要となるデータが別の命令で生成されて
実行可能となるまで命令バッファ813に蓄えられて待
つ。命令バッファ813からは格納された順序に関わら
ず、読み出しを行うレジスタにデータが準備できた命令
から取り出して実行を行う。その際、書き込みレジスタ
に割り当てられていた一時番号を実レジスタ割り当て部
814により実際に値を書き込む実レジスタ番号に割り当
て直す。
【0086】実レジスタ割り当て部814では、レジスタ
割り当てテーブル815、レジスタ割り当て管理バッファ8
16にレジスタの割り当て情報や使用情報を管理更新し
て、空き演算器信号入力701に入力された空き演算器の
情報により、空き演算器が書き込めるレジスタファイル
中の実レジスタ番号を割り当てる。実レジスタ割り当て
部814により書き込みレジスタに実レジスタを割り当て
られた命令は、信号線702によりセレクタ113を経由して
各命令レジスタ114a〜114dに送出される。
割り当てテーブル815、レジスタ割り当て管理バッファ8
16にレジスタの割り当て情報や使用情報を管理更新し
て、空き演算器信号入力701に入力された空き演算器の
情報により、空き演算器が書き込めるレジスタファイル
中の実レジスタ番号を割り当てる。実レジスタ割り当て
部814により書き込みレジスタに実レジスタを割り当て
られた命令は、信号線702によりセレクタ113を経由して
各命令レジスタ114a〜114dに送出される。
【0087】次に、図17中の構成要素の内、レジスタ割
り当てテーブル816、命令バッファ813、レジスタ割り当
て管理バッファ815の詳細な構成の例をそれぞれ図18、
図19、図20に掲げる。また実レジスタ割り当て部814に
よって実現される命令バッファ813からの命令の取り出
し及び実レジスタの割り当て、レジスタ割り当て管理バ
ッファ815、レジスタ割り当てテーブル816の制御方法に
ついて、図21のフローチャートにより示す。また読み出
しレジスタ割り当て部811、レジスタ一時割り当て部812
によって実現される読み出しレジスタの割り当て、一時
レジスタの割り当て、命令バッファ813への命令の格納
の制御方法について、同じくフローチャートにより図22
に示す。
り当てテーブル816、命令バッファ813、レジスタ割り当
て管理バッファ815の詳細な構成の例をそれぞれ図18、
図19、図20に掲げる。また実レジスタ割り当て部814に
よって実現される命令バッファ813からの命令の取り出
し及び実レジスタの割り当て、レジスタ割り当て管理バ
ッファ815、レジスタ割り当てテーブル816の制御方法に
ついて、図21のフローチャートにより示す。また読み出
しレジスタ割り当て部811、レジスタ一時割り当て部812
によって実現される読み出しレジスタの割り当て、一時
レジスタの割り当て、命令バッファ813への命令の格納
の制御方法について、同じくフローチャートにより図22
に示す。
【0088】まず図18では、レジスタ割り当てテーブル
816の構成を示している。レジスタ割り当てテーブル816
は、命令で指定するレジスタの番号に対応する32個分の
エントリを備えている。それぞれのエントリは、実レジ
スタの割り当てがある場合の実レジスタ番号記録部821
と、一時番号の割り当てがある場合の一時割り当て番号
マスク記録部822の二つの部分からなっている。このう
ち図18の例では、一時割り当て番号マスク記録部822に
おいて、一時番号の最大値と等しいだけのビット数を各
エントリに備え、一時番号の割り当てがある場合には、
その番号と等しいビット番号のビットを1にすることで
それを表現している。もし、あるエントリの一時割り当
て番号マスクのビットがすべて0である時は、そのエン
トリの実レジスタ番号記録部821内に有効な実レジスタ
番号の割り当てがあると考える。一時割り当て番号マス
ク記録部822及び実レジスタ番号記録部821内の各エント
リの読み出しは、まずレジスタ割り当て部811からの要
求により行われ、信号線バス803によって返される。
816の構成を示している。レジスタ割り当てテーブル816
は、命令で指定するレジスタの番号に対応する32個分の
エントリを備えている。それぞれのエントリは、実レジ
スタの割り当てがある場合の実レジスタ番号記録部821
と、一時番号の割り当てがある場合の一時割り当て番号
マスク記録部822の二つの部分からなっている。このう
ち図18の例では、一時割り当て番号マスク記録部822に
おいて、一時番号の最大値と等しいだけのビット数を各
エントリに備え、一時番号の割り当てがある場合には、
その番号と等しいビット番号のビットを1にすることで
それを表現している。もし、あるエントリの一時割り当
て番号マスクのビットがすべて0である時は、そのエン
トリの実レジスタ番号記録部821内に有効な実レジスタ
番号の割り当てがあると考える。一時割り当て番号マス
ク記録部822及び実レジスタ番号記録部821内の各エント
リの読み出しは、まずレジスタ割り当て部811からの要
求により行われ、信号線バス803によって返される。
【0089】またレジスタ一時割り当て部812より新た
な一時番号の割り当てが行われた時には、信号線バス80
2により命令で指定される論理レジスタ番号と割り当て
る一時番号の設定内容が受け取られる。図18では、信号
線バス802の信号に従って、命令で指定されたレジスタ
番号により選んだエントリに対し、一時割り当て番号マ
スク822の設定された一時番号に対応するビットをセッ
トし、他のビットを0とする。同時にそのエントリがそ
れまで有効な実レジスタ番号の割り当てを持っていた時
は(直前に一時割り当て番号マスク822のすべてのビット
が0であった時には)、実レジスタ番号記録部812よりそ
れまで格納されていた実レジスタ番号を読み出して、信
号線805によりレジスタ割り当て管理バッファ815へ通知
する。
な一時番号の割り当てが行われた時には、信号線バス80
2により命令で指定される論理レジスタ番号と割り当て
る一時番号の設定内容が受け取られる。図18では、信号
線バス802の信号に従って、命令で指定されたレジスタ
番号により選んだエントリに対し、一時割り当て番号マ
スク822の設定された一時番号に対応するビットをセッ
トし、他のビットを0とする。同時にそのエントリがそ
れまで有効な実レジスタ番号の割り当てを持っていた時
は(直前に一時割り当て番号マスク822のすべてのビット
が0であった時には)、実レジスタ番号記録部812よりそ
れまで格納されていた実レジスタ番号を読み出して、信
号線805によりレジスタ割り当て管理バッファ815へ通知
する。
【0090】更に実レジスタ割り当て部814により、あ
る一時番号に新たに実レジスタが割り付けられた時に
は、その一時番号と実レジスタ番号が信号線801により
通知される。そして信号線801の情報により、該当する
一時番号を保持しているエントリがないか、一時割り当
て番号マスク822内の各エントリが検索される。この検
索は一時割り当て番号マスクの各エントリが一時番号を
それぞれ対応するビットを1にセットすることで表現し
ているので、各エントリの該当する一時番号に対応する
ビットだけを調べれば良く、容易に実現可能である。検
索の結果該当する一時番号を持つエントリがあれば、そ
れに対応する実レジスタ番号記録部中のエントリに、割
り付けられた実レジスタ番号を設定し、該当する一時割
り当て番号マスクのビットを0にリセットする。またも
し検索の結果該当する一時割り当て番号マスクのビット
が1になっているエントリがなかった時には、信号線81
0により一時番号ミスをレジスタ割り当て管理バッファ8
15へ出力する。
る一時番号に新たに実レジスタが割り付けられた時に
は、その一時番号と実レジスタ番号が信号線801により
通知される。そして信号線801の情報により、該当する
一時番号を保持しているエントリがないか、一時割り当
て番号マスク822内の各エントリが検索される。この検
索は一時割り当て番号マスクの各エントリが一時番号を
それぞれ対応するビットを1にセットすることで表現し
ているので、各エントリの該当する一時番号に対応する
ビットだけを調べれば良く、容易に実現可能である。検
索の結果該当する一時番号を持つエントリがあれば、そ
れに対応する実レジスタ番号記録部中のエントリに、割
り付けられた実レジスタ番号を設定し、該当する一時割
り当て番号マスクのビットを0にリセットする。またも
し検索の結果該当する一時割り当て番号マスクのビット
が1になっているエントリがなかった時には、信号線81
0により一時番号ミスをレジスタ割り当て管理バッファ8
15へ出力する。
【0091】図19は命令バッファ813の一エントリの構
成の例である。各エントリは命令OPコード保持部860、
二つの読み出しレジスタ番号保持部861及び862、そのエ
ントリが空きであるかどうかを示すF/E(Full/Empty)ビ
ット863、読み出しレジスタに一時番号が割り付けられ
ているとき、それを記録する二つの一時割り当て番号マ
スク記録部864及び865を備える。一時割り当て番号マス
ク記録部864及び865では、図18のレジスタ割り当てテー
ブル816中の一時割り当て番号マスク822と同様に、割り
当てられた一時番号を、対応する番号のビットを1と
し、他のビットを0とすることで表現している。一時割
り当て番号マスク記録部864または865のすべてのビット
が0の時は、対応する読み出しレジスタ番号保持部861ま
たは862に有効な実レジスタ番号が保持されていること
を示している。また、命令の結果を書き込むレジスタに
ついては、命令バッファ813中に命令が保持されている
間は書き込みレジスタには一時番号が割り当てられてい
るので、その一時番号として例えば命令バッファ813の
エントリを番号付けして用いれば、そのエントリによっ
て一時番号が一意に決定されるので、特に保持する手段
を設けなくてもよい。
成の例である。各エントリは命令OPコード保持部860、
二つの読み出しレジスタ番号保持部861及び862、そのエ
ントリが空きであるかどうかを示すF/E(Full/Empty)ビ
ット863、読み出しレジスタに一時番号が割り付けられ
ているとき、それを記録する二つの一時割り当て番号マ
スク記録部864及び865を備える。一時割り当て番号マス
ク記録部864及び865では、図18のレジスタ割り当てテー
ブル816中の一時割り当て番号マスク822と同様に、割り
当てられた一時番号を、対応する番号のビットを1と
し、他のビットを0とすることで表現している。一時割
り当て番号マスク記録部864または865のすべてのビット
が0の時は、対応する読み出しレジスタ番号保持部861ま
たは862に有効な実レジスタ番号が保持されていること
を示している。また、命令の結果を書き込むレジスタに
ついては、命令バッファ813中に命令が保持されている
間は書き込みレジスタには一時番号が割り当てられてい
るので、その一時番号として例えば命令バッファ813の
エントリを番号付けして用いれば、そのエントリによっ
て一時番号が一意に決定されるので、特に保持する手段
を設けなくてもよい。
【0092】図19において、実レジスタ割り当て部814
よりある一時番号に対して実レジスタ番号の割り当てが
生じたことが通知された時には、対応する一時番号を一
時割り当て番号マスク864及び865に保持しているエント
リがないかどうかが検索される。この検索も図18のレジ
スタ割り当てテーブル816の構成例と同様に、各エント
リの一時割り当て番号マスク記録部864及び865中の該当
するビットだけを調べれば良いので、容易に実現され
る。そしてもし該当するビットが1になっている、即ち
該当する一時番号の割り当てを保持しているエントリが
あれば、そのビットを0とすると共に、通知された実レ
ジスタ番号を対応する読み出しレジスタ番号保持部861
または862に格納する。
よりある一時番号に対して実レジスタ番号の割り当てが
生じたことが通知された時には、対応する一時番号を一
時割り当て番号マスク864及び865に保持しているエント
リがないかどうかが検索される。この検索も図18のレジ
スタ割り当てテーブル816の構成例と同様に、各エント
リの一時割り当て番号マスク記録部864及び865中の該当
するビットだけを調べれば良いので、容易に実現され
る。そしてもし該当するビットが1になっている、即ち
該当する一時番号の割り当てを保持しているエントリが
あれば、そのビットを0とすると共に、通知された実レ
ジスタ番号を対応する読み出しレジスタ番号保持部861
または862に格納する。
【0093】図20は、レジスタ割り当て管理バッファ81
5の内部構成の例である。図20では、命令の書き込みレ
ジスタに対し新しい一時番号を割り当てた時に、それま
で割り当てられていた実レジスタ番号と、該書き込み命
令が命令バッファ813中にあるかどうかを示す実行フラ
グを蓄える読み出しベンディングキュー881、実レジス
タの番号に対応してその実レジスタが空いているかどう
かを示すフリーフラグ882、空き演算器が書き込める使
用可能な実レジスタ番号を決定するフリーレジスタ判定
部883、命令バッファ813のエントリ番号をビット列に展
開する二つのビット番号展開部884及び885、読み出しペ
ンディングキュー881の先頭の実行フラグが0になった
かどうかを判定する実行フラグ判定部886、読み出しペ
ンディングキュー881の先頭からの実レジスタ番号の取
り出しを制御する取り出しゲート887、一時番号ミス入
力信号809により読み出しペンディングキュー881の実行
フラグ入力のすべてのビットを0にする切り替えゲート
888、及び実レジスタ番号入力をフリーレジスタ判定部8
83からの実レジスタ割り当て結果出力808に切り替える
切り替えゲート889から構成されている。このうち、読
み出しペンディングキュー881はFIFO(First-In/First-O
ut)キューとなっており、格納した順序で取り出され
る。
5の内部構成の例である。図20では、命令の書き込みレ
ジスタに対し新しい一時番号を割り当てた時に、それま
で割り当てられていた実レジスタ番号と、該書き込み命
令が命令バッファ813中にあるかどうかを示す実行フラ
グを蓄える読み出しベンディングキュー881、実レジス
タの番号に対応してその実レジスタが空いているかどう
かを示すフリーフラグ882、空き演算器が書き込める使
用可能な実レジスタ番号を決定するフリーレジスタ判定
部883、命令バッファ813のエントリ番号をビット列に展
開する二つのビット番号展開部884及び885、読み出しペ
ンディングキュー881の先頭の実行フラグが0になった
かどうかを判定する実行フラグ判定部886、読み出しペ
ンディングキュー881の先頭からの実レジスタ番号の取
り出しを制御する取り出しゲート887、一時番号ミス入
力信号809により読み出しペンディングキュー881の実行
フラグ入力のすべてのビットを0にする切り替えゲート
888、及び実レジスタ番号入力をフリーレジスタ判定部8
83からの実レジスタ割り当て結果出力808に切り替える
切り替えゲート889から構成されている。このうち、読
み出しペンディングキュー881はFIFO(First-In/First-O
ut)キューとなっており、格納した順序で取り出され
る。
【0094】図20で、ある命令を新たに命令バッファ81
3に格納しようとした時には、命令バッファのその命令
を格納するエントリの番号が信号線804により通知され
る。同時に、その命令で指定された書き込みレジスタの
論理番号に、それまで実レジスタ番号が割り当てられて
いた時には、レジスタ割り当てテーブル816より、その
実レジスタ番号が信号線805により通知される。信号線8
04により通知された命令バッファのエントリ番号はビッ
ト番号展開部884により、そのエントリ番号と等しいビ
ット番号のビットが1で他は0のビット列に展開される。
ビット列に展開されたエントリ番号はそのまま実行フラ
グの入力値となり、信号線805の実レジスタ番号と組み
にして、読み出しペンディングキュー881に入力され
る。
3に格納しようとした時には、命令バッファのその命令
を格納するエントリの番号が信号線804により通知され
る。同時に、その命令で指定された書き込みレジスタの
論理番号に、それまで実レジスタ番号が割り当てられて
いた時には、レジスタ割り当てテーブル816より、その
実レジスタ番号が信号線805により通知される。信号線8
04により通知された命令バッファのエントリ番号はビッ
ト番号展開部884により、そのエントリ番号と等しいビ
ット番号のビットが1で他は0のビット列に展開される。
ビット列に展開されたエントリ番号はそのまま実行フラ
グの入力値となり、信号線805の実レジスタ番号と組み
にして、読み出しペンディングキュー881に入力され
る。
【0095】また命令バッファ813から新たに命令を取
り出して実行しようとしたときには、まず、書き込みを
行うレジスタへの実レジスタ割り当て要求が信号線809
によりフリーレジスタ判定部883に入力される。同時に
命令バッファのその命令を取り出すエントリ番号が信号
線807により通知される。
り出して実行しようとしたときには、まず、書き込みを
行うレジスタへの実レジスタ割り当て要求が信号線809
によりフリーレジスタ判定部883に入力される。同時に
命令バッファのその命令を取り出すエントリ番号が信号
線807により通知される。
【0096】フリーレジスタ判定部883では空き演算器
信号入力701により選ばれる空き演算器が書き込めるレ
ジスタファイル内の実レジスタの内、対応するフリーフ
ラグ882が1である番号から、新たに命令の結果の書き
込みに用いられる実レジスタ番号を選択する。選択した
結果は信号線808により出力され、同時に選択した実レ
ジスタ番号に対応するフリーフラグ882は0にリセット
される。信号線808に出力された実レジスタ番号は、実
レジスタ割り当て部814に返され、一時番号と組みにさ
れて信号線801によりレジスタ割り当てテーブル816にも
伝達される。この時、もしレジスタ割り当て管理テーブ
ルより一時番号ミスが信号線810に出力されると、切り
替えゲート888及び889が切り替えられ、読み出しペンデ
ィングキュー881に実行フラグのビットをすべて0にし
て信号線808に出力された実レジスタ番号が入力され
る。このようにすることにより、レジスタ割り当てテー
ブル816に格納されていなかった一時番号に割り当てら
れた実レジスタ番号も、正しく読み出しペンディングキ
ュー881に入力される。
信号入力701により選ばれる空き演算器が書き込めるレ
ジスタファイル内の実レジスタの内、対応するフリーフ
ラグ882が1である番号から、新たに命令の結果の書き
込みに用いられる実レジスタ番号を選択する。選択した
結果は信号線808により出力され、同時に選択した実レ
ジスタ番号に対応するフリーフラグ882は0にリセット
される。信号線808に出力された実レジスタ番号は、実
レジスタ割り当て部814に返され、一時番号と組みにさ
れて信号線801によりレジスタ割り当てテーブル816にも
伝達される。この時、もしレジスタ割り当て管理テーブ
ルより一時番号ミスが信号線810に出力されると、切り
替えゲート888及び889が切り替えられ、読み出しペンデ
ィングキュー881に実行フラグのビットをすべて0にし
て信号線808に出力された実レジスタ番号が入力され
る。このようにすることにより、レジスタ割り当てテー
ブル816に格納されていなかった一時番号に割り当てら
れた実レジスタ番号も、正しく読み出しペンディングキ
ュー881に入力される。
【0097】信号線807により入力された取り出しエン
トリ番号はビット番号展開部885により、取り出しエン
トリ番号と等しいビット番号がのビットが1で他は0で
あるビット列に展開される。このビット列は読み出しペ
ンディングキュー881内の実行フラグと比較され、同じ
ビット番号のビットが1になっているエントリがないか
どうか検索される。これは図20の例ではビット列の検索
なので、高速に行うことができる。もし同じビット番号
のビットが1になっているエントリがあれば、その実行
フラグの1になっているビットを0にリセットする。
トリ番号はビット番号展開部885により、取り出しエン
トリ番号と等しいビット番号がのビットが1で他は0で
あるビット列に展開される。このビット列は読み出しペ
ンディングキュー881内の実行フラグと比較され、同じ
ビット番号のビットが1になっているエントリがないか
どうか検索される。これは図20の例ではビット列の検索
なので、高速に行うことができる。もし同じビット番号
のビットが1になっているエントリがあれば、その実行
フラグの1になっているビットを0にリセットする。
【0098】実行フラグ判定部886では、読み出しペン
ディングキュー881の先頭の実行フラグについて、すべ
てのビットが0かどうか監視している。先頭の実行フラ
グのビットがすべて0である間、取り出しゲート887を
開き、先頭のエントリを取り出し、その中の実レジスタ
番号をフリーフラグ882に送出する。フリーフラグ882で
は、送出された実レジスタ番号に対応するエントリを1
にして、新しく割り当てる実レジスタ番号の候補とす
る。
ディングキュー881の先頭の実行フラグについて、すべ
てのビットが0かどうか監視している。先頭の実行フラ
グのビットがすべて0である間、取り出しゲート887を
開き、先頭のエントリを取り出し、その中の実レジスタ
番号をフリーフラグ882に送出する。フリーフラグ882で
は、送出された実レジスタ番号に対応するエントリを1
にして、新しく割り当てる実レジスタ番号の候補とす
る。
【0099】次に具体的な制御の手順の例を、図21及び
図22に示したフローチャートにより説明する。
図22に示したフローチャートにより説明する。
【0100】まず命令バッファ813からの命令の取りだ
しと実レジスタ番号の割り当ての手順を図21により説明
する。
しと実レジスタ番号の割り当ての手順を図21により説明
する。
【0101】図21では、まずステップ521において利用
可能な空き演算器が生じるまで待つ。
可能な空き演算器が生じるまで待つ。
【0102】空き演算器が生じたら、ステップ522にお
いて命令バッファ813中に格納された命令の内、読み出
しレジスタに2個とも実レジスタ番号が割り当てられて
いるものを選ぶ。読み出しレジスタに実レジスタ番号が
割り当てられていると言うことは、既にそのレジスタに
書き込みを行う命令が実行されていて、その実レジスタ
上に値が生成されていることを示している。
いて命令バッファ813中に格納された命令の内、読み出
しレジスタに2個とも実レジスタ番号が割り当てられて
いるものを選ぶ。読み出しレジスタに実レジスタ番号が
割り当てられていると言うことは、既にそのレジスタに
書き込みを行う命令が実行されていて、その実レジスタ
上に値が生成されていることを示している。
【0103】次にステップ523において、レジスタ割り
当て管理テーブル815中のフリーレジスタ判定部883よ
り、フリーフラグ882が1である実レジスタ番号の中か
ら、空き演算器が書き込める番号を選んで、その命令の
結果を書き込む実レジスタとして割り当てる。割り当て
た実レジスタ番号のフリーフラグ882は0にリセットす
る。
当て管理テーブル815中のフリーレジスタ判定部883よ
り、フリーフラグ882が1である実レジスタ番号の中か
ら、空き演算器が書き込める番号を選んで、その命令の
結果を書き込む実レジスタとして割り当てる。割り当て
た実レジスタ番号のフリーフラグ882は0にリセットす
る。
【0104】ステップ524及び525では、それまで書き込
みレジスタに割り当てられていた一時番号がレジスタ割
り当てテーブル816内に保持されていたどうかを検索し
て判定する。もし保持されていた時には、ステップ527
においてレジスタ割り当てテーブル中の該当するエント
リの実レジスタ番号記録部821へステップ523で新たに割
り当てた実レジスタ番号を設定する。またそれまで書き
込みレジスタに割り当てられていた一時番号がレジスタ
割り当てテーブル816に保持されていなかった時には、
ステップ526において、レジスタ管理バッファ815中の読
み出しレジスタペンディグキュー881へステップ523で新
たに割り当てた実レジスタ番号を実行フラグのビットを
すべて0にして入力する。
みレジスタに割り当てられていた一時番号がレジスタ割
り当てテーブル816内に保持されていたどうかを検索し
て判定する。もし保持されていた時には、ステップ527
においてレジスタ割り当てテーブル中の該当するエント
リの実レジスタ番号記録部821へステップ523で新たに割
り当てた実レジスタ番号を設定する。またそれまで書き
込みレジスタに割り当てられていた一時番号がレジスタ
割り当てテーブル816に保持されていなかった時には、
ステップ526において、レジスタ管理バッファ815中の読
み出しレジスタペンディグキュー881へステップ523で新
たに割り当てた実レジスタ番号を実行フラグのビットを
すべて0にして入力する。
【0105】ステップ528及び529では、同じくそれまで
書き込みレジスタに割り当てられていた一時番号が、命
令バッファ813中の他のエントリの読み出しレジスタと
して保持されていないかどうかどうか検索する。そし
て、保持されているのを検出したエントリについては、
ステップ530において対応する読み出しレジスタ番号保
持部861または862に、ステップ523で新しく割り付けた
実レジスタ番号を設定する。
書き込みレジスタに割り当てられていた一時番号が、命
令バッファ813中の他のエントリの読み出しレジスタと
して保持されていないかどうかどうか検索する。そし
て、保持されているのを検出したエントリについては、
ステップ530において対応する読み出しレジスタ番号保
持部861または862に、ステップ523で新しく割り付けた
実レジスタ番号を設定する。
【0106】ステップ531及び532では、レジスタ割り当
て管理バッファ815中の読み出しペンディングキュー881
内の実行フラグについて、命令バッファ813の命令を取
り出す当該エントリ番号に対応するビットが1になって
いるエントリがないかどうか検索する。もし実行フラグ
のビットが1になっているエントリがあれば、ステップ
533でそのビットを0にする。
て管理バッファ815中の読み出しペンディングキュー881
内の実行フラグについて、命令バッファ813の命令を取
り出す当該エントリ番号に対応するビットが1になって
いるエントリがないかどうか検索する。もし実行フラグ
のビットが1になっているエントリがあれば、ステップ
533でそのビットを0にする。
【0107】次にステップ534及び535において、読み出
しペンディングキュー881の先頭のエントリの実行フラ
グのビットがすべて0かどうか調べる。実行フラグのビ
ットがすべて0の時には、ステップ536において、読み
出しペンディングキュー881よりそのエントリを取り出
し、その中に格納された実レジスタ番号に対応するフリ
ーフラグ882を1にセットする。そしてステップ534に戻
り、読み出しペンディグキュー881の先頭の実行フラグ
のビットがすべて0である間、ステップ534、535、536
を繰り返す。
しペンディングキュー881の先頭のエントリの実行フラ
グのビットがすべて0かどうか調べる。実行フラグのビ
ットがすべて0の時には、ステップ536において、読み
出しペンディングキュー881よりそのエントリを取り出
し、その中に格納された実レジスタ番号に対応するフリ
ーフラグ882を1にセットする。そしてステップ534に戻
り、読み出しペンディグキュー881の先頭の実行フラグ
のビットがすべて0である間、ステップ534、535、536
を繰り返す。
【0108】以上のステップの処理がすべて終了した
ら、ステップ537において、空き演算器に対して命令を
発行し、ステップ521へ戻る。
ら、ステップ537において、空き演算器に対して命令を
発行し、ステップ521へ戻る。
【0109】次に、命令バッファ813への命令の格納、
読み出しレジスタへの実レジスタ番号または一時番号の
割り当て、及び書き込みレジスタへの一時番号の割り当
ての手順の例を図22のフローチャートで説明する。
読み出しレジスタへの実レジスタ番号または一時番号の
割り当て、及び書き込みレジスタへの一時番号の割り当
ての手順の例を図22のフローチャートで説明する。
【0110】図22では、まずステップ621及び622におい
て、命令バッファ813中に空きエントリが生じるまで待
つ。
て、命令バッファ813中に空きエントリが生じるまで待
つ。
【0111】次に空きエントリがあったら、ステップ62
3において命令で指定された2個までの読み出しレジスタ
の論理番号に対し、レジスタ割り当てテーブル816の内
容を読み出し、そのまま命令バッファ813中の空きエン
トリの読み出しレジスタ番号記録部861及び862、一時割
り当て番号マスク記録部864及び865へコピーする。
3において命令で指定された2個までの読み出しレジスタ
の論理番号に対し、レジスタ割り当てテーブル816の内
容を読み出し、そのまま命令バッファ813中の空きエン
トリの読み出しレジスタ番号記録部861及び862、一時割
り当て番号マスク記録部864及び865へコピーする。
【0112】次にステップ624において、命令で指定さ
れた書き込みレジスタの論理番号に対し、一時番号とし
て命令バッファ813中の当該空きエントリの番号を割り
付ける。
れた書き込みレジスタの論理番号に対し、一時番号とし
て命令バッファ813中の当該空きエントリの番号を割り
付ける。
【0113】ステップ625において、レジスタ割り当て
テーブル816中の、命令で指定された書き込みレジスタ
の論理番号に対応するエントリの内容を読み出し、ステ
ップ626において実レジスタ番号の割り当てがあったか
どうか判定する。
テーブル816中の、命令で指定された書き込みレジスタ
の論理番号に対応するエントリの内容を読み出し、ステ
ップ626において実レジスタ番号の割り当てがあったか
どうか判定する。
【0114】実レジスタ番号の割り当てがあった場合に
は、ステップ627において、実レジスタ番号と、命令バ
ッファ813の命令を格納する当該空きエントリの番号に
対応するビットを1にした実行フラグの値を、レジスタ
割り当て管理バッファ815中の読み出しペンディングキ
ュー881へ入力する。
は、ステップ627において、実レジスタ番号と、命令バ
ッファ813の命令を格納する当該空きエントリの番号に
対応するビットを1にした実行フラグの値を、レジスタ
割り当て管理バッファ815中の読み出しペンディングキ
ュー881へ入力する。
【0115】そしてステップ628において、レジスタ割
り当てテーブル816中の書き込みレジスタの論理番号に
対応するエントリに対し、一時割り当て番号マスク部82
2の割り当てた一時番号に対応するビットを1にセットす
る。
り当てテーブル816中の書き込みレジスタの論理番号に
対応するエントリに対し、一時割り当て番号マスク部82
2の割り当てた一時番号に対応するビットを1にセットす
る。
【0116】最後にステップ629において、命令バッフ
ァ813中の当該空きエントリに対し、残りのOPコード保
持部860に命令のOPコードを格納し、F/Eビット863を1に
セットして、命令バッファ813への命令の格納を完了す
る。
ァ813中の当該空きエントリに対し、残りのOPコード保
持部860に命令のOPコードを格納し、F/Eビット863を1に
セットして、命令バッファ813への命令の格納を完了す
る。
【0117】以上、図17〜20に示した構成を図21、22に
示した方法で制御すれば、図11〜16に示した実施の形態
と同じく、多数の演算器を備えてもレジスタファイルの
ポート数の増大を抑えることができるとともに、ある程
度簡便な構成で、多数用意するレジスタを有効に用いて
出力依存、逆依存を解消し、out of order命令実行を行
って高い性能をあげることができる。
示した方法で制御すれば、図11〜16に示した実施の形態
と同じく、多数の演算器を備えてもレジスタファイルの
ポート数の増大を抑えることができるとともに、ある程
度簡便な構成で、多数用意するレジスタを有効に用いて
出力依存、逆依存を解消し、out of order命令実行を行
って高い性能をあげることができる。
【0118】
【発明の効果】本発明により、複数の演算器を備え、複
数の命令を同時に実行するプロセッサにおいて、プロセ
ッサ内部のレジスタファイルのポート数の増大を、書き
込みポート数を含めて、抑えることができる。これによ
り演算器の数を増やすことが容易となり、同時に実行で
きる命令数を増大させることによりプロセッサの性能を
高めることができる。
数の命令を同時に実行するプロセッサにおいて、プロセ
ッサ内部のレジスタファイルのポート数の増大を、書き
込みポート数を含めて、抑えることができる。これによ
り演算器の数を増やすことが容易となり、同時に実行で
きる命令数を増大させることによりプロセッサの性能を
高めることができる。
【図1】本発明によるプロセッサの内部の命令実行部に
関する実施の形態の一例である。
関する実施の形態の一例である。
【図2】プロセッサ全体の構成の例である。
【図3】本発明によるプロセッサの内部のロード/スト
ア部に関する実施の形態の一例である。
ア部に関する実施の形態の一例である。
【図4】プロセッサの内部の命令実行部に関する従来の
形態の一例である。
形態の一例である。
【図5】プロセッサの内部のロード/ストア部に関する
従来の形態の一例である。
従来の形態の一例である。
【図6】本発明によるレジスタ割り当てをコンパイラに
より最適化する例である。
より最適化する例である。
【図7】本発明によるプロセッサの内部の命令実行部に
関する実施の形態の別の一例である。
関する実施の形態の別の一例である。
【図8】本発明によるプロセッサの内部の、レジスタ割
り当てテーブルに関する実施の形態の一例である。
り当てテーブルに関する実施の形態の一例である。
【図9】本発明によるプロセッサの内部のロード/スト
ア部に関する実施の形態の別の一例である。
ア部に関する実施の形態の別の一例である。
【図10】本発明によるプロセッサの内部の命令実行部
に関する実施の形態の更に別の一例である。
に関する実施の形態の更に別の一例である。
【図11】本発明によるプロセッサの内部の順不同発行
制御部に関する実施の形態の一例である。
制御部に関する実施の形態の一例である。
【図12】本発明によるプロセッサの内部の、レジスタ
割り当てテーブルに関する実施の形態の別の一例であ
る。
割り当てテーブルに関する実施の形態の別の一例であ
る。
【図13】本発明によるプロセッサの内部の、命令バッ
ファの構成に関する実施の形態の一例である。
ファの構成に関する実施の形態の一例である。
【図14】本発明によるプロセッサの内部の、レジスタ
状態テーブルに関する実施の形態の一例である。
状態テーブルに関する実施の形態の一例である。
【図15】本発明によるプロセッサにおいて、命令バッ
ファから命令を取り出して実レジスタを割り付ける手順
の一例である。
ファから命令を取り出して実レジスタを割り付ける手順
の一例である。
【図16】本発明によるプロセッサにおいて、一時的な
レジスタ番号を割り当てて命令バッファに命令を格納す
る手順の一例である。
レジスタ番号を割り当てて命令バッファに命令を格納す
る手順の一例である。
【図17】本発明によるプロセッサの内部の順不同発行
制御部に関する実施の形態の別の例である。
制御部に関する実施の形態の別の例である。
【図18】本発明によるプロセッサの内部の、レジスタ
割り当てテーブルに関する実施の形態の更に別の一例で
ある。
割り当てテーブルに関する実施の形態の更に別の一例で
ある。
【図19】本発明によるプロセッサの内部の、命令バッ
ファの構成に関する実施の形態の別の一例である。
ファの構成に関する実施の形態の別の一例である。
【図20】本発明によるプロセッサの内部の、レジスタ
割り当て管理バッファに関す。
割り当て管理バッファに関す。
【図21】本発明によるプロセッサにおいて、命令バッ
ファから命令を取り出して実レジスタを割り付ける手順
の別の一例である。
ファから命令を取り出して実レジスタを割り付ける手順
の別の一例である。
【図22】本発明によるプロセッサにおいて、一時的な
レジスタ番号を割り当てて命令バッファに命令を格納す
る手順の別の一例である。
レジスタ番号を割り当てて命令バッファに命令を格納す
る手順の別の一例である。
1 プロセッサ 112 書き込みレジスタ判定部 113 セレクタ 114a〜e 命令レジスタ 115a〜e 演算器 116a〜119e レジスタファイル(8レジスタ、読み出し2
ポート、書き込み2ポート) 2 主記憶 20 命令フェッチ部 21 命令デコード部 22 命令実行部 23 ロード/ストア部 311 アドレス加算器 411、714 空き演算器判定部 412a〜e レジスタファイル(32レジスタ、読み出し2ポ
ート、書き込み5ポート) 711、816、916 レジスタ割り当てテーブル 712、811、911 読み出しレジスタ割り当て部 713 書き込みレジスタ割り当て部 720a〜723e レジスタファイル(32レジスタ、読み出し
2ポート、書き込み2ポート) 90 順不同発行制御部 812、912 レジスタ一時割り当て部 813、913 命令バッファ 814、914 実レジスタ割り当て部 815 レジスタ割り当て管理バッファ 915 レジスタ状態テーブル。
ポート、書き込み2ポート) 2 主記憶 20 命令フェッチ部 21 命令デコード部 22 命令実行部 23 ロード/ストア部 311 アドレス加算器 411、714 空き演算器判定部 412a〜e レジスタファイル(32レジスタ、読み出し2ポ
ート、書き込み5ポート) 711、816、916 レジスタ割り当てテーブル 712、811、911 読み出しレジスタ割り当て部 713 書き込みレジスタ割り当て部 720a〜723e レジスタファイル(32レジスタ、読み出し
2ポート、書き込み2ポート) 90 順不同発行制御部 812、912 レジスタ一時割り当て部 813、913 命令バッファ 814、914 実レジスタ割り当て部 815 レジスタ割り当て管理バッファ 915 レジスタ状態テーブル。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 金子 憲二 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内
Claims (5)
- 【請求項1】n個の演算器(nは2以上)を持ち、同時
にn個の演算を実行可能なプロセッサであって、 演算結果を格納するm個(mは2以上)の番号付けされ
たレジスタと、 前記各演算器が前記レジスタのm個の値をアクセスし演
算に用いる手段と、 前記n個のうちのk個(kは1以上)の演算器は前記番
号付けされたレジスタの番号によってm個のうちのi個
(iは1以上n−1以下)のレジスタに演算結果を格納
し、前記m個のうちの残りのm−i個のレジスタには演
算結果を格納しない手段を有することを特徴とするプロ
セッサ。 - 【請求項2】前記請求項1に記載のプロセッサであっ
て、前記m個のレジスタのうち、同一の番号を持つレジ
スタをL個(Lは2以上)ずつ備え、前記n個の演算器ご
とに、同一の番号を持つL個のレジスタの中の一つを選
んで値を読み出す手段を備えることを特徴とするプロセ
ッサ。 - 【請求項3】前記請求項1または2に記載のプロセッサ
であって、 命令によって指定されているレジスタの番号を付け替え
る付け替え手段と、 前記レジスタ番号付け替え手段によって付け替えられた
結果を記録するレジスタ番号付け替え記録手段と、 前記n個の演算器の中で命令を実行するときに利用可能
であるものを検出する空き演算器検出手段を備え、 前記レジスタ番号付け替え手段は、命令の演算結果を格
納するレジスタについては、前記空き演算器検出手段に
よって検出された演算器が演算結果を格納できるレジス
タの番号に付け替え、演算に用いるデータを読み出すレ
ジスタの番号については、前記レジスタ番号付け替え記
録手段によって記録された結果に従って付け替えること
を特徴とするプロセッサ。 - 【請求項4】前記請求項3に記載のプロセッサであっ
て、 実行待ちの命令をW個(Wは1以上)まで格納しておく
命令バッファを備え、 前記レジスタ番号付け替え手段が、演算結果を格納する
レジスタについて、前記命令バッファより命令が取り出
されて実行される時に、前記空き演算器検出手段によっ
て検出された演算器が演算結果を格納できるレジスタの
番号に付け直す実レジスタ番号割り当て手段と、前記命
令バッファに命令が格納される時に、前記実レジスタ番
号割り当て手段によって付け替える実レジスタ番号と区
別され得る一時的な番号を割り付ける一時番号割り当て
手段を含み、 前記レジスタ番号付け替え記録手段が前記実レジスタ番
号割り当て手段によって割り当てた実レジスタ番号と、
前記一時番号割り当て手段によって割り当てられた一時
番号の両方を記録し、 かつ前記レジスタ番号付け替え手段が更に、演算に用い
るデータを読み出すレジスタの番号について、前記レジ
スタ番号付け替え記録手段によって記録された一時番号
または実レジスタ番号に付け替える第1の読み出しレジ
スタ番号割り当て手段と、前記実レジスタ番号割り当て
手段によって一時番号が実レジスタ番号に付け変わった
時に前記第1の読み出しレジスタ番号割り当て手段によ
って割り当てられた中に該一時番号と等しい番号がある
かどうか検出する検出手段と、前記検出手段によって実
レジスタ番号に付け変わった一時番号が検出された時
に、読み出しレジスタに割り当てられた一時番号を前記
実レジスタ番号割り当て手段によって割り当てられた実
レジスタ番号に付け替える第2の読み出しレジスタ番号
割り当て手段を含むことを特徴とするプロセッサ。 - 【請求項5】請求項4に記載のプロセッサであって、前
記命令バッファがそれぞれ一つの命令を格納する番号付
けされたW個(Wは1以上)のエントリより構成され、
前記一時番号割り当て手段によって割り当てる一時番号
として、該命令が格納される前記命令バッファのエント
リの番号を用いることを特徴とするプロセッサ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24292596A JPH1091442A (ja) | 1996-09-13 | 1996-09-13 | プロセッサ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24292596A JPH1091442A (ja) | 1996-09-13 | 1996-09-13 | プロセッサ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1091442A true JPH1091442A (ja) | 1998-04-10 |
Family
ID=17096260
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP24292596A Pending JPH1091442A (ja) | 1996-09-13 | 1996-09-13 | プロセッサ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH1091442A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003091415A (ja) * | 2001-09-17 | 2003-03-28 | Sanyo Electric Co Ltd | データ処理方法と装置およびデータ変換方法 |
| EP2472392A1 (en) | 2010-12-29 | 2012-07-04 | Fujitsu Limited | Processing apparatus and method for performing computation |
| JPWO2014103235A1 (ja) * | 2012-12-25 | 2017-01-12 | 日本電気株式会社 | 演算装置及び演算方法 |
-
1996
- 1996-09-13 JP JP24292596A patent/JPH1091442A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003091415A (ja) * | 2001-09-17 | 2003-03-28 | Sanyo Electric Co Ltd | データ処理方法と装置およびデータ変換方法 |
| EP2472392A1 (en) | 2010-12-29 | 2012-07-04 | Fujitsu Limited | Processing apparatus and method for performing computation |
| US9043581B2 (en) | 2010-12-29 | 2015-05-26 | Fujitsu Limited | Storing in other queue when reservation station instruction queue reserved for immediate source operand instruction execution unit is full |
| JPWO2014103235A1 (ja) * | 2012-12-25 | 2017-01-12 | 日本電気株式会社 | 演算装置及び演算方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7051187B2 (en) | Superscalar RISC instruction scheduling | |
| US7650486B2 (en) | Dynamic recalculation of resource vector at issue queue for steering of dependent instructions | |
| US8656401B2 (en) | Method and apparatus for prioritizing processor scheduler queue operations | |
| US8418180B2 (en) | Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors | |
| US6330661B1 (en) | Reducing inherited logical to physical register mapping information between tasks in multithread system using register group identifier | |
| US5251306A (en) | Apparatus for controlling execution of a program in a computing device | |
| TWI533129B (zh) | 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊 | |
| CN1294484C (zh) | 利用重新调度的重放队列中断处理器中的重放依赖关系循环 | |
| EP0747816B1 (en) | Method and system for high performance multithread operation in a data processing system | |
| TWI520070B (zh) | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段 | |
| TWI518504B (zh) | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段 | |
| JP2022184701A (ja) | 共有機能部を有するマイクロプロセッサ | |
| Kim et al. | Warped-preexecution: A GPU pre-execution approach for improving latency hiding | |
| US20040268093A1 (en) | Cross-thread register sharing technique | |
| US9372698B2 (en) | Method and apparatus for implementing dynamic portbinding within a reservation station | |
| US9886278B2 (en) | Computing architecture and method for processing data | |
| US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
| US6324640B1 (en) | System and method for dispatching groups of instructions using pipelined register renaming | |
| KR20090113884A (ko) | 동시, 비순차적 디스패치를 사용하는 분산 디스패치 | |
| US20040199749A1 (en) | Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor | |
| US7191315B2 (en) | Method and system for tracking and recycling physical register assignment | |
| JPH1091442A (ja) | プロセッサ | |
| KR20080065733A (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 | |
| US20100100709A1 (en) | Instruction control apparatus and instruction control method | |
| JP2004318437A (ja) | 中間レジスタ・タグを使用するプロセッサ |