JP3015565B2 - 複数命令の並列実行機能を持つ情報処理装置 - Google Patents
複数命令の並列実行機能を持つ情報処理装置Info
- Publication number
- JP3015565B2 JP3015565B2 JP3336739A JP33673991A JP3015565B2 JP 3015565 B2 JP3015565 B2 JP 3015565B2 JP 3336739 A JP3336739 A JP 3336739A JP 33673991 A JP33673991 A JP 33673991A JP 3015565 B2 JP3015565 B2 JP 3015565B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- instructions
- decoder
- executed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Advance Control (AREA)
Description
【0001】
【産業上の利用分野】この発明は、複数命令の並列実行
機能を持つ情報処理装置に係り、特にレジスタ依存関係
のある複数の命令の並列実行方式に関する。
機能を持つ情報処理装置に係り、特にレジスタ依存関係
のある複数の命令の並列実行方式に関する。
【0002】
【従来の技術】既存のソフトウェアを高速に実行する情
報処理装置として、命令の実行ユニットを複数備え、ソ
フトウェア内の命令列のうち複数の命令を同時(並列)
に(同じサイクル内で)実行し、1サイクルに要する時
間を短縮せずに(即ちクロックの周波数を上げずに)済
ませる、スーパースカラ型計算機で代表される情報処理
装置が知られている。
報処理装置として、命令の実行ユニットを複数備え、ソ
フトウェア内の命令列のうち複数の命令を同時(並列)
に(同じサイクル内で)実行し、1サイクルに要する時
間を短縮せずに(即ちクロックの周波数を上げずに)済
ませる、スーパースカラ型計算機で代表される情報処理
装置が知られている。
【0003】上記した複数命令の並列実行機能を持つ情
報処理装置では、1サイクルで実行可能な最大命令数以
上の命令を保持したキューから、同時に実行しても1つ
ずつ逐次実行した場合と結果が変わらない命令を取出
し、実行するようになっていた。
報処理装置では、1サイクルで実行可能な最大命令数以
上の命令を保持したキューから、同時に実行しても1つ
ずつ逐次実行した場合と結果が変わらない命令を取出
し、実行するようになっていた。
【0004】もし、キューに入った命令のうちデータの
依存関係のあるものは同時に実行できない。例えば、あ
る命令#1の出力データが別の命令#2の入力データと
なる場合、この命令#1,#2は同時に実行できず、無
理に実行した場合には、その結果は命令#1を実行して
から命令#2を実行した場合と食い違ってしまう。
依存関係のあるものは同時に実行できない。例えば、あ
る命令#1の出力データが別の命令#2の入力データと
なる場合、この命令#1,#2は同時に実行できず、無
理に実行した場合には、その結果は命令#1を実行して
から命令#2を実行した場合と食い違ってしまう。
【0005】また、データの依存関係がなくても、レジ
スタに依存関係があれば、該当する命令は全て同時には
実行できないのが普通である。例えば、命令#3がある
レジスタの保持データを用い、別の命令#4が同じレジ
スタにデータを書込む場合には、命令#3,#4は、両
データに依存関係がないにも拘らず、同時に実行できな
い。これは、命令#3で用いようとするデータのレジス
タに命令#4で値が書込まれるためである。
スタに依存関係があれば、該当する命令は全て同時には
実行できないのが普通である。例えば、命令#3がある
レジスタの保持データを用い、別の命令#4が同じレジ
スタにデータを書込む場合には、命令#3,#4は、両
データに依存関係がないにも拘らず、同時に実行できな
い。これは、命令#3で用いようとするデータのレジス
タに命令#4で値が書込まれるためである。
【0006】このようなレジスタ依存を無くすには、互
いに異なるレジスタを用いればよい。しかし、既存のソ
フトウェア(プログラム)でレジスタ依存のある命令列
を持つ場合には、そのソフトウェアを書換えなければな
らず、極めて煩雑である。また、新規に作成するソフト
ウェアでも、命令語中のレジスタ指定フィールドのサイ
ズの関係で指定可能なレジスタ数が制限されるため、そ
のレジスタ数より多いデータ数を扱う場合には、互いに
依存しないデータを同じレジスタで用いる可能性が大き
い。つまり、命令語中でアクセス対象として指定可能な
レジスタ数、言い替えればソフトウェアから認識できる
レジスタ数が同じなら、実行ユニットを増やしてもレジ
スタ依存による性能低下を減らすことはできず、ソフト
ウェアから認識できるレジスタの数を増やして対処しよ
うとすると、既存のソフトウェアを書き直さなければな
らない。
いに異なるレジスタを用いればよい。しかし、既存のソ
フトウェア(プログラム)でレジスタ依存のある命令列
を持つ場合には、そのソフトウェアを書換えなければな
らず、極めて煩雑である。また、新規に作成するソフト
ウェアでも、命令語中のレジスタ指定フィールドのサイ
ズの関係で指定可能なレジスタ数が制限されるため、そ
のレジスタ数より多いデータ数を扱う場合には、互いに
依存しないデータを同じレジスタで用いる可能性が大き
い。つまり、命令語中でアクセス対象として指定可能な
レジスタ数、言い替えればソフトウェアから認識できる
レジスタ数が同じなら、実行ユニットを増やしてもレジ
スタ依存による性能低下を減らすことはできず、ソフト
ウェアから認識できるレジスタの数を増やして対処しよ
うとすると、既存のソフトウェアを書き直さなければな
らない。
【0007】
【発明が解決しようとする課題】上記したように、複数
命令の並列実行機能を持つ従来の情報処理装置では、互
いにレジスタ依存関係のある命令列は同時に実行できな
いために、1つずつ逐次実行しなければならず、並列実
行機能を最大限に生かすことができないという問題があ
り、これを解決するためには、ソフトウェアを改造して
レジスタ依存のないように命令列を並べる、あるいは並
べ替えなければならず、多くの人手と費用を要するとい
う問題があった。
命令の並列実行機能を持つ従来の情報処理装置では、互
いにレジスタ依存関係のある命令列は同時に実行できな
いために、1つずつ逐次実行しなければならず、並列実
行機能を最大限に生かすことができないという問題があ
り、これを解決するためには、ソフトウェアを改造して
レジスタ依存のないように命令列を並べる、あるいは並
べ替えなければならず、多くの人手と費用を要するとい
う問題があった。
【0008】この発明は上記事情に鑑みてなされたもの
でその目的は、レジスタ依存関係のある命令列を含むソ
フトウェアでも、そのソフトウェアを改造することな
く、装置が持つ複数命令の並列実行能力を十分に生かし
て実行できる情報処理装置を提供することにある。
でその目的は、レジスタ依存関係のある命令列を含むソ
フトウェアでも、そのソフトウェアを改造することな
く、装置が持つ複数命令の並列実行能力を十分に生かし
て実行できる情報処理装置を提供することにある。
【0009】
【課題を解決するための手段】この発明は、命令の実行
ユニットを複数備え、複数命令の並列実行が可能な情報
処理装置において、命令語で指定可能な複数の第1のレ
ジスタと、この第1のレジスタの代用として一時的に使
用される少なくとも1つの第2のレジスタと、実行すべ
き命令列の中から、前記第1のレジスタについてレジス
タ依存関係のある命令を検出し、その命令の指定する前
記第1のレジスタを前記第2のレジスタに一時的に置換
える手段とを備え、レジスタ依存関係のある複数の命令
を、前記第2のレジスタの使用により並列に実行するよ
うにしたことを特徴とするものである。
ユニットを複数備え、複数命令の並列実行が可能な情報
処理装置において、命令語で指定可能な複数の第1のレ
ジスタと、この第1のレジスタの代用として一時的に使
用される少なくとも1つの第2のレジスタと、実行すべ
き命令列の中から、前記第1のレジスタについてレジス
タ依存関係のある命令を検出し、その命令の指定する前
記第1のレジスタを前記第2のレジスタに一時的に置換
える手段とを備え、レジスタ依存関係のある複数の命令
を、前記第2のレジスタの使用により並列に実行するよ
うにしたことを特徴とするものである。
【0010】
【作用】上記の構成においては、同一の第1のレジスタ
指定に起因するレジスタ依存関係のある命令について
は、その命令の指定する第1のレジスタに代えて、命令
語の指定対象外となる第2のレジスタ(一時レジスタ)
が一時的に割当てられる。この第2のレジスタの割当て
により、レジスタ依存関係が解除されるため、命令語で
指定されていた第1のレジスタのみ用いたのでは、レジ
スタ依存関係のせいで並列に複数の命令を実行できない
ようなソフトウェアでも、装置が持つ複数命令の並列実
行能力を十分に生かして実行でき、性能向上を図ること
が可能となる
指定に起因するレジスタ依存関係のある命令について
は、その命令の指定する第1のレジスタに代えて、命令
語の指定対象外となる第2のレジスタ(一時レジスタ)
が一時的に割当てられる。この第2のレジスタの割当て
により、レジスタ依存関係が解除されるため、命令語で
指定されていた第1のレジスタのみ用いたのでは、レジ
スタ依存関係のせいで並列に複数の命令を実行できない
ようなソフトウェアでも、装置が持つ複数命令の並列実
行能力を十分に生かして実行でき、性能向上を図ること
が可能となる
【0011】。
【実施例】図1はこの発明の一実施例に係る複数命令の
並列実行機能を持つ情報処理装置の構成を示すブロック
図である。
並列実行機能を持つ情報処理装置の構成を示すブロック
図である。
【0012】図1において、1はプログラム、データ等
が格納されるメモリ、2はメモリ1からフェッチされた
命令をそのフェッチ順の並びで保持するための命令キュ
ーである。この命令キュー2は、後述する並列実行部4
で同時に実行可能な最大命令数以上の命令を保持可能な
構造となっている。命令キュー2内に保持された命令
は、実行されると、同キュー2から除かれる。
が格納されるメモリ、2はメモリ1からフェッチされた
命令をそのフェッチ順の並びで保持するための命令キュ
ーである。この命令キュー2は、後述する並列実行部4
で同時に実行可能な最大命令数以上の命令を保持可能な
構造となっている。命令キュー2内に保持された命令
は、実行されると、同キュー2から除かれる。
【0013】なお、メモリ1と命令キュー2との間にキ
ャッシュメモリ(あるいは命令キャッシュ)を設け、キ
ャッシュメモリからフェッチされた命令が命令キュー2
に格納されるものであってもよい。
ャッシュメモリ(あるいは命令キャッシュ)を設け、キ
ャッシュメモリからフェッチされた命令が命令キュー2
に格納されるものであってもよい。
【0014】3は命令キュー2から命令を順に取出して
デコード処理を行うデコーダである。このデコーダ3
は、複数命令の並列(同時)実行のために、対象命令の
データ依存関係、レジスタ依存関係を調べる周知の機能
の他に、レジスタ依存関係のある命令については、その
命令で指定するレジスタを後述する一時レジスタに置換
える制御を行う。
デコード処理を行うデコーダである。このデコーダ3
は、複数命令の並列(同時)実行のために、対象命令の
データ依存関係、レジスタ依存関係を調べる周知の機能
の他に、レジスタ依存関係のある命令については、その
命令で指定するレジスタを後述する一時レジスタに置換
える制御を行う。
【0015】4はデコーダ3による複数の命令について
のデコード結果を受けて、複数命令を並列に実行するた
めの並列実行部である。並列実行部4は、デコーダ3か
ら与えられる各命令毎のデコード結果をもとに、対応す
る命令実行をそれぞれ独立に行うための複数の実行ユニ
ット4-1,4-2,4-3…を持つ。
のデコード結果を受けて、複数命令を並列に実行するた
めの並列実行部である。並列実行部4は、デコーダ3か
ら与えられる各命令毎のデコード結果をもとに、対応す
る命令実行をそれぞれ独立に行うための複数の実行ユニ
ット4-1,4-2,4-3…を持つ。
【0016】5は並列実行部4(内の実行ユニット4-
1,4-2,4-3…等)により操作されるデータを保持す
るためのレジスタ部である。レジスタ部5は、本装置上
で動くソフトウェアで認識される(即ち命令語のソース
またはデスティネーションレジスタ指定フィールドで指
定可能な)複数の一般レジスタ(レジスタA,B,C,
D…で表現)からなる一般レジスタ群51と、上記ソフ
トウェアから認識されない複数の一時レジスタ(レジス
タα,β…で表現)からなる一時レジスタ群52とによ
り構成される。
1,4-2,4-3…等)により操作されるデータを保持す
るためのレジスタ部である。レジスタ部5は、本装置上
で動くソフトウェアで認識される(即ち命令語のソース
またはデスティネーションレジスタ指定フィールドで指
定可能な)複数の一般レジスタ(レジスタA,B,C,
D…で表現)からなる一般レジスタ群51と、上記ソフ
トウェアから認識されない複数の一時レジスタ(レジス
タα,β…で表現)からなる一時レジスタ群52とによ
り構成される。
【0017】6は複数のエントリを持つ置換えテーブル
である。この置換えテーブル6の各エントリは、デコー
ダ3による置換えの対象となったレジスタ部5内の一般
レジスタのレジスタ名(レジスタ番号)と、この一般レ
ジスタに代えて用いられたレジスタ部5内の一時レジス
タのレジスタ名(レジスタ番号)と、該当エントリの情
報が有効であるか否かを示す有効フラグ(Vフラグ)の
各設定フィールドからなる。
である。この置換えテーブル6の各エントリは、デコー
ダ3による置換えの対象となったレジスタ部5内の一般
レジスタのレジスタ名(レジスタ番号)と、この一般レ
ジスタに代えて用いられたレジスタ部5内の一時レジス
タのレジスタ名(レジスタ番号)と、該当エントリの情
報が有効であるか否かを示す有効フラグ(Vフラグ)の
各設定フィールドからなる。
【0018】7はデータ整合保証回路である。データ整
合保証回路7は、レジスタ部5内の一時レジスタの内容
を置換えテーブル6で示される置換えの対象となった一
般レジスタに書き戻すことで、データの整合性を保証す
る。次に、図1の構成の動作を、命令キュー2にフェッ
チされた命令列が図2(a)のようになっている場合を
例に、説明する。
合保証回路7は、レジスタ部5内の一時レジスタの内容
を置換えテーブル6で示される置換えの対象となった一
般レジスタに書き戻すことで、データの整合性を保証す
る。次に、図1の構成の動作を、命令キュー2にフェッ
チされた命令列が図2(a)のようになっている場合を
例に、説明する。
【0019】なお、図2において、“add A,B,
A”で示される命令#1は、レジスタAとレジスタBの
両内容の和をレジスタAに格納することを指示する命令
であり、“and A,D,D”で示される命令#2
は、レジスタAとレジスタDの両内容をANDした結果
をレジスタDに格納することを指示する命令である。ま
た、“or C,E,A”で示される命令#3は、レジ
スタCとレジスタEの両内容をORした結果をレジスタ
Aに格納することを指示する命令であり、“sub
A,C,A”で示される命令#4は、レジスタAとレジ
スタCの両内容の差をレジスタAに格納することを指示
する命令である。
A”で示される命令#1は、レジスタAとレジスタBの
両内容の和をレジスタAに格納することを指示する命令
であり、“and A,D,D”で示される命令#2
は、レジスタAとレジスタDの両内容をANDした結果
をレジスタDに格納することを指示する命令である。ま
た、“or C,E,A”で示される命令#3は、レジ
スタCとレジスタEの両内容をORした結果をレジスタ
Aに格納することを指示する命令であり、“sub
A,C,A”で示される命令#4は、レジスタAとレジ
スタCの両内容の差をレジスタAに格納することを指示
する命令である。
【0020】今、図示せぬ命令フェッチ機構によってメ
モリ1から命令キュー2に命令列がフェッチされた結
果、サイクルT0 の開始時において、命令キュー2の内
容が図2(a)に示すようになっているものとする。こ
こで、命令キュー2内の命令列の並び順は、メモリ1か
らのフェッチ順であり、1命令ずつ順に実行されるもの
として作成された命令の順である。
モリ1から命令キュー2に命令列がフェッチされた結
果、サイクルT0 の開始時において、命令キュー2の内
容が図2(a)に示すようになっているものとする。こ
こで、命令キュー2内の命令列の並び順は、メモリ1か
らのフェッチ順であり、1命令ずつ順に実行されるもの
として作成された命令の順である。
【0021】さて、図2(a)に示す命令キュー2内の
命令列を従来方式で実行するには、図3(b)に示すよ
うに4サイクルを要し、同時実行は不可能である。その
理由は次の通りである。
命令列を従来方式で実行するには、図3(b)に示すよ
うに4サイクルを要し、同時実行は不可能である。その
理由は次の通りである。
【0022】第1に、命令#2で用いる演算データの一
方はレジスタAに入っているが、このレジスタAの値は
命令#1(add命令)が実行されないと定まらないた
めである。即ち命令#1と命令#2との間にデータ依存
関係があるためである。
方はレジスタAに入っているが、このレジスタAの値は
命令#1(add命令)が実行されないと定まらないた
めである。即ち命令#1と命令#2との間にデータ依存
関係があるためである。
【0023】第2に、命令#3(or命令)でOR結果
を書込むレジスタAには、命令#1,#2(and命
令)で用いる演算データが入っているため、命令#1,
#2が実行されてから命令#3を実行しないと、命令#
1,#2で用いるレジスタAのデータが、命令#3で書
換えられてしまう可能性があるためである。即ち、命令
#1,#2と命令#3との間にレジスタ依存関係がある
ためである。
を書込むレジスタAには、命令#1,#2(and命
令)で用いる演算データが入っているため、命令#1,
#2が実行されてから命令#3を実行しないと、命令#
1,#2で用いるレジスタAのデータが、命令#3で書
換えられてしまう可能性があるためである。即ち、命令
#1,#2と命令#3との間にレジスタ依存関係がある
ためである。
【0024】第3に、命令#4(sub命令)で用いる
レジスタAの値は、命令#3(or命令)が実行されな
いと定まらないためである。即ち命令#3と命令#4と
の間にデータ依存関係があるためである。
レジスタAの値は、命令#3(or命令)が実行されな
いと定まらないためである。即ち命令#3と命令#4と
の間にデータ依存関係があるためである。
【0025】これに対して本実施例では、図2(a)に
示す命令キュー2内の命令列を、後述するレジスタ置換
えで図2(b)に示すように変更することにより、図3
(a)に示すように2サイクルで実行することができ
る。この動作につき、図4のフローチャートを参照して
詳述する。
示す命令キュー2内の命令列を、後述するレジスタ置換
えで図2(b)に示すように変更することにより、図3
(a)に示すように2サイクルで実行することができ
る。この動作につき、図4のフローチャートを参照して
詳述する。
【0026】サイクルT0 においてデコーダ3は、命令
キュー2内の先頭の命令(#1)と2番目の命令(#
2)を比較してその依存関係を調べ、後の命令(#2)
が先の命令(#1)に対してデータ依存またはレジスタ
依存の関係にあるか否かをチェックする(ステップS
1)。もし、依存関係が存在しない場合には、デコーダ
3は、両命令を次のサイクル(第1サイクル)T1 で同
時に実行することを決定する(ステップS2)。
キュー2内の先頭の命令(#1)と2番目の命令(#
2)を比較してその依存関係を調べ、後の命令(#2)
が先の命令(#1)に対してデータ依存またはレジスタ
依存の関係にあるか否かをチェックする(ステップS
1)。もし、依存関係が存在しない場合には、デコーダ
3は、両命令を次のサイクル(第1サイクル)T1 で同
時に実行することを決定する(ステップS2)。
【0027】これに対し、図2(a)の例のように、先
の命令#1と後の命令#2との間に依存関係(ここでは
データ依存関係)のある場合には、デコーダ3は、依存
のあるレジスタ(ここではレジスタA)を後の命令#2
がソース指定しているか否かをチェックする(ステップ
S3)。
の命令#1と後の命令#2との間に依存関係(ここでは
データ依存関係)のある場合には、デコーダ3は、依存
のあるレジスタ(ここではレジスタA)を後の命令#2
がソース指定しているか否かをチェックする(ステップ
S3)。
【0028】図2(a)の例のように、先の命令#1と
の間で依存関係のあるレジスタ(A)を後の命令#2で
ソース指定している場合には、デコーダ3は、先の命令
#1については次の第1サイクルT1 で実行し、後の命
令#2については更に次の第2サイクルT2 で実行する
ことを決定し、その旨を内部記憶する(ステップS
4)。実際には、第1サイクルT1 で実行する命令の命
令キュー2内位置を示す情報を内部記憶、あるいは第1
サイクルT1 で実行する命令の命令キュー2内位置に固
有の例えばフラグビットをオンすればよい。
の間で依存関係のあるレジスタ(A)を後の命令#2で
ソース指定している場合には、デコーダ3は、先の命令
#1については次の第1サイクルT1 で実行し、後の命
令#2については更に次の第2サイクルT2 で実行する
ことを決定し、その旨を内部記憶する(ステップS
4)。実際には、第1サイクルT1 で実行する命令の命
令キュー2内位置を示す情報を内部記憶、あるいは第1
サイクルT1 で実行する命令の命令キュー2内位置に固
有の例えばフラグビットをオンすればよい。
【0029】次にデコーダ3は、命令キュー2内の3番
目の命令(#3)と先行命令(#2)とについて、上記
ステップS1を実行し、命令#3が命令#2に対してデ
ータ依存またはレジスタ依存の関係にあるか否かをチェ
ックする。
目の命令(#3)と先行命令(#2)とについて、上記
ステップS1を実行し、命令#3が命令#2に対してデ
ータ依存またはレジスタ依存の関係にあるか否かをチェ
ックする。
【0030】もし、図2(a)の例のように、命令#2
と命令#3との間に依存関係(ここではレジスタ依存関
係)があり、且つ依存のあるレジスタ(A)を後の命令
#3でソース指定してない場合(ステップS3のNO判
定時)には、デコーダ3は、その命令#3以降の命令キ
ュー2内の命令のレジスタA指定部分を全て(ここでは
命令#3のデスティネーションレジスタA指定部分と、
命令#4のソース並びにデスティネーションレジスタA
指定部分)、一時レジスタ群52内の任意の一時レジス
タ、例えば一時レジスタαの指定に置換える(ステップ
S5)。このときの命令キュー2の内容を、図2(b)
に示す。
と命令#3との間に依存関係(ここではレジスタ依存関
係)があり、且つ依存のあるレジスタ(A)を後の命令
#3でソース指定してない場合(ステップS3のNO判
定時)には、デコーダ3は、その命令#3以降の命令キ
ュー2内の命令のレジスタA指定部分を全て(ここでは
命令#3のデスティネーションレジスタA指定部分と、
命令#4のソース並びにデスティネーションレジスタA
指定部分)、一時レジスタ群52内の任意の一時レジス
タ、例えば一時レジスタαの指定に置換える(ステップ
S5)。このときの命令キュー2の内容を、図2(b)
に示す。
【0031】次にデコーダ3は、命令キュー2内の第1
サイクルT1 での実行が決定された命令#1と(レジス
タAからレジスタαへの置換えが施された)命令#3と
を比較してその依存関係を調べ、命令#3が命令#1に
対してデータ依存またはレジスタ依存の関係にあるか否
かをチェックする(ステップS1)。
サイクルT1 での実行が決定された命令#1と(レジス
タAからレジスタαへの置換えが施された)命令#3と
を比較してその依存関係を調べ、命令#3が命令#1に
対してデータ依存またはレジスタ依存の関係にあるか否
かをチェックする(ステップS1)。
【0032】図2(b)の例のように、命令#1と命令
#3との間に依存関係が存在しない場合には、デコーダ
3は、命令#3を命令#1と同じ第1サイクルT1 で同
時に実行することを決定し、その旨を内部記憶する(ス
テップS2)。
#3との間に依存関係が存在しない場合には、デコーダ
3は、命令#3を命令#1と同じ第1サイクルT1 で同
時に実行することを決定し、その旨を内部記憶する(ス
テップS2)。
【0033】次にデコーダ3は、命令キュー2内の命令
#1と(命令#3の次の命令であって、レジスタAから
レジスタαへの置換えが施された)命令#4とを比較し
てその依存関係を調べ、命令#4が命令#1に対してデ
ータ依存またはレジスタ依存の関係にあるか否かをチェ
ックする(ステップS1)。
#1と(命令#3の次の命令であって、レジスタAから
レジスタαへの置換えが施された)命令#4とを比較し
てその依存関係を調べ、命令#4が命令#1に対してデ
ータ依存またはレジスタ依存の関係にあるか否かをチェ
ックする(ステップS1)。
【0034】図2(b)の例のように、命令#1と命令
#4との間に依存関係が存在しない場合には、デコーダ
3は、命令#4を命令#1と同じ第1サイクルT1 で同
時に実行することを決定し、その旨を内部記憶する(ス
テップS2)。
#4との間に依存関係が存在しない場合には、デコーダ
3は、命令#4を命令#1と同じ第1サイクルT1 で同
時に実行することを決定し、その旨を内部記憶する(ス
テップS2)。
【0035】次にデコーダ3は、命令キュー2内の上記
レジスタ置換え後の命令#3と命令#4とを比較してそ
の依存関係を調べ、命令#4が命令#3に対してデータ
依存またはレジスタ依存の関係にあるか否かをチェック
する(ステップS1)。
レジスタ置換え後の命令#3と命令#4とを比較してそ
の依存関係を調べ、命令#4が命令#3に対してデータ
依存またはレジスタ依存の関係にあるか否かをチェック
する(ステップS1)。
【0036】図2(b)の例のように、命令#3と命令
#4との間に依存関係が存在し、且つ依存のあるレジス
タ(α)を後の命令#4でソース指定している場合(ス
テップS3のYES判定時)には、デコーダ3は、先の
命令#3については第1サイクルT1 で実行し、後の命
令#4については次の第2サイクルT2 で実行すること
を決定し、その旨を内部記憶する(ステップS4)。こ
れにより、命令#4の実行サイクルをT1 とする先の決
定内容が解除される。
#4との間に依存関係が存在し、且つ依存のあるレジス
タ(α)を後の命令#4でソース指定している場合(ス
テップS3のYES判定時)には、デコーダ3は、先の
命令#3については第1サイクルT1 で実行し、後の命
令#4については次の第2サイクルT2 で実行すること
を決定し、その旨を内部記憶する(ステップS4)。こ
れにより、命令#4の実行サイクルをT1 とする先の決
定内容が解除される。
【0037】デコーダ3は、命令キュー2内の最後の命
令#3,#4の比較によりその実行サイクルを決定する
と、第1サイクルT1 で実行すべき命令、即ち命令#
1,#3を命令キュー2から取出してデコードし、命令
#1,#3のデコード結果を並列実行部4内の実行ユニ
ット4-i,4-j(i,jは1,2,3…のうちの互いに
異なる値)に渡して、次の第1サイクルT1 において該
当する命令を実行させる(ステップS6)。またデコー
ダ3は、現サイクル(T0 )の最後に、上記の処理にお
いて置換えの対象となったレジスタAと置換えに用いた
レジスタαのレジスタ名(レジスタ番号)の対を置換え
テーブル6内の空きエントリに登録し、Vフラグをオン
する(ステップS7)。
令#3,#4の比較によりその実行サイクルを決定する
と、第1サイクルT1 で実行すべき命令、即ち命令#
1,#3を命令キュー2から取出してデコードし、命令
#1,#3のデコード結果を並列実行部4内の実行ユニ
ット4-i,4-j(i,jは1,2,3…のうちの互いに
異なる値)に渡して、次の第1サイクルT1 において該
当する命令を実行させる(ステップS6)。またデコー
ダ3は、現サイクル(T0 )の最後に、上記の処理にお
いて置換えの対象となったレジスタAと置換えに用いた
レジスタαのレジスタ名(レジスタ番号)の対を置換え
テーブル6内の空きエントリに登録し、Vフラグをオン
する(ステップS7)。
【0038】さてデコーダ3から並列実行部4内の実行
ユニット4-i,4-jに命令#1,#3のデコード結果が
渡されると、第1サイクルT1 において、実行ユニット
4-iでは、命令#1(add命令)の指定するレジスタ
A,Bの両内容を加算し、その加算結果を一般レジスタ
群51内のレジスタAに格納する動作が行われる。ま
た、実行ユニット4-jでは、命令#3(or命令)の指
定するレジスタC,Eの両内容をORし、そのOR結果
を一時レジスタ群52内のレジスタαに格納する動作が
行われる。デコーダ3により命令キュー3から命令#
1,#3が取出されると、後続の命令が命令キュー2に
フェッチされる。
ユニット4-i,4-jに命令#1,#3のデコード結果が
渡されると、第1サイクルT1 において、実行ユニット
4-iでは、命令#1(add命令)の指定するレジスタ
A,Bの両内容を加算し、その加算結果を一般レジスタ
群51内のレジスタAに格納する動作が行われる。ま
た、実行ユニット4-jでは、命令#3(or命令)の指
定するレジスタC,Eの両内容をORし、そのOR結果
を一時レジスタ群52内のレジスタαに格納する動作が
行われる。デコーダ3により命令キュー3から命令#
1,#3が取出されると、後続の命令が命令キュー2に
フェッチされる。
【0039】デコーダ3は、命令#1,#3が同時に実
行されるサイクルT1 において、その際に命令キュー2
に格納されている命令列(ここでは、命令#2,#4を
含む命令列)に対して、図4のフローチャートで示され
る上記(した命令#1〜#4に対するの)と同様の動作
を行う。但し、命令#4より後の命令中にレジスタA指
定部分が存在すれば、置換えテーブルに6に従ってレジ
スタα指定に置換えられる。
行されるサイクルT1 において、その際に命令キュー2
に格納されている命令列(ここでは、命令#2,#4を
含む命令列)に対して、図4のフローチャートで示され
る上記(した命令#1〜#4に対するの)と同様の動作
を行う。但し、命令#4より後の命令中にレジスタA指
定部分が存在すれば、置換えテーブルに6に従ってレジ
スタα指定に置換えられる。
【0040】ここでは、命令#4より後の命令中にレジ
スタA指定部分が存在せず、各命令間にデータまたはレ
ジスタ依存関係が存在しないものとすると、デコーダ3
は、命令#2,#4(を含む命令列)を次のサイクル
(第2サイクルT2 )において同時に実行可能であるも
のと判断する。この場合、デコーダ3は、命令#2,#
4(を含む命令列)を命令キュー2から取出してデコー
ドし、そのデコード結果を並列実行部4内の実行ユニッ
トに渡して、次の第2サイクルT2 において該当する命
令を実行させる。
スタA指定部分が存在せず、各命令間にデータまたはレ
ジスタ依存関係が存在しないものとすると、デコーダ3
は、命令#2,#4(を含む命令列)を次のサイクル
(第2サイクルT2 )において同時に実行可能であるも
のと判断する。この場合、デコーダ3は、命令#2,#
4(を含む命令列)を命令キュー2から取出してデコー
ドし、そのデコード結果を並列実行部4内の実行ユニッ
トに渡して、次の第2サイクルT2 において該当する命
令を実行させる。
【0041】この結果、命令#2,#4のデコード結果
が実行ユニット4-s,4-t(s,tは1,2,3…のう
ちの互いに異なる値)に渡された場合であれば、実行ユ
ニット4-sでは、命令#2(and命令)の指定するレ
ジスタA,Dの両内容をANDし、そのAND結果を一
般レジスタ群51内のレジスタDに格納する動作が行わ
れる。また、実行ユニット4-tでは、命令#4(sub
命令)の指定するレジスタα,Cの両内容の減算を行
い。その減算結果を一時レジスタ群52内のレジスタα
に格納する動作が行われる。
が実行ユニット4-s,4-t(s,tは1,2,3…のう
ちの互いに異なる値)に渡された場合であれば、実行ユ
ニット4-sでは、命令#2(and命令)の指定するレ
ジスタA,Dの両内容をANDし、そのAND結果を一
般レジスタ群51内のレジスタDに格納する動作が行わ
れる。また、実行ユニット4-tでは、命令#4(sub
命令)の指定するレジスタα,Cの両内容の減算を行
い。その減算結果を一時レジスタ群52内のレジスタα
に格納する動作が行われる。
【0042】データ整合保証回路7は、並列実行部4内
の実行ユニット4-1,4-2,4-3…によるレジスタ部5
に対するアクセスを監視している。データ整合保証回路
7は、置換えテーブル6内でVフラグがオン状態にある
エントリに登録されているレジスタ、即ちレジスタA,
αへのアクセスが実行されないサイクル(例えば第3サ
イクルT3 )を検出すると、一時レジスタαの内容を一
般レジスタAに書き戻す。そしてデータ整合保証回路7
は、置換えテーブル6内のVフラグをオフする。
の実行ユニット4-1,4-2,4-3…によるレジスタ部5
に対するアクセスを監視している。データ整合保証回路
7は、置換えテーブル6内でVフラグがオン状態にある
エントリに登録されているレジスタ、即ちレジスタA,
αへのアクセスが実行されないサイクル(例えば第3サ
イクルT3 )を検出すると、一時レジスタαの内容を一
般レジスタAに書き戻す。そしてデータ整合保証回路7
は、置換えテーブル6内のVフラグをオフする。
【0043】このように本実施例によれば、命令間にあ
るレジスタ依存等のために、従来であれば4サイクルを
要していた図2(a)の命令列を、図2(b)のように
レジスタ置換えを行うことにで、2サイクルで実行する
ことができる。即ち本実施例によれば、レジスタ依存関
係のある命令の指定する一般レジスタを一時レジスタに
一時的に置換える(代用する)ことにより、レジスタ依
存関係のために複数の実行ユニット4-iによる命令の同
時実行を妨げることが防止でき、性能向上が図れる。
るレジスタ依存等のために、従来であれば4サイクルを
要していた図2(a)の命令列を、図2(b)のように
レジスタ置換えを行うことにで、2サイクルで実行する
ことができる。即ち本実施例によれば、レジスタ依存関
係のある命令の指定する一般レジスタを一時レジスタに
一時的に置換える(代用する)ことにより、レジスタ依
存関係のために複数の実行ユニット4-iによる命令の同
時実行を妨げることが防止でき、性能向上が図れる。
【0044】なお、一時レジスタは必ずしも複数設ける
必要はない。また、本実施例のように複数の一時レジス
タを設けた場合には、各々の一時レジスタを別々の一般
レジスタの代用とすることも可能である。また、同一の
一時レジスタを多重に代用することも可能である。
必要はない。また、本実施例のように複数の一時レジス
タを設けた場合には、各々の一時レジスタを別々の一般
レジスタの代用とすることも可能である。また、同一の
一時レジスタを多重に代用することも可能である。
【0045】
【発明の効果】以上詳述したようにこの発明によれば、
レジスタ依存関係のある命令の指定する一般レジスタ
(第1のレジスタ)を一時レジスタ(第2のレジスタ)
に一時的に置換えることにより、レジスタ依存関係のあ
る命令列を含むソフトウェアでも、そのソフトウェアを
改造することなく、装置が持つ複数命令の並列実行能力
を十分に生かして実行でき、性能向上を図ることができ
る。
レジスタ依存関係のある命令の指定する一般レジスタ
(第1のレジスタ)を一時レジスタ(第2のレジスタ)
に一時的に置換えることにより、レジスタ依存関係のあ
る命令列を含むソフトウェアでも、そのソフトウェアを
改造することなく、装置が持つ複数命令の並列実行能力
を十分に生かして実行でき、性能向上を図ることができ
る。
【図1】この発明の一実施例に係る複数命令の並列実行
機能を持つ情報処理装置の構成を示すブロック図。
機能を持つ情報処理装置の構成を示すブロック図。
【図2】命令キュー2に格納された命令列を、レジスタ
置換え後の命令列と対比して示す図。
置換え後の命令列と対比して示す図。
【図3】図2の命令列の実行順序を、従来方式による場
合と対比して示す図。
合と対比して示す図。
【図4】動作を説明するためのフローチャート。
2…命令キュー、3…デコーダ(置換え手段)、4…並
列実行部、4-1,4-2,4-3…実行ユニット、5…レジ
スタ部、6…置換えテーブル、7…データ整合保証回
路、51…一般レジスタ群(第1のレジスタの群)、5
2…一時レジスタ群(第2のレジスタの群)。
列実行部、4-1,4-2,4-3…実行ユニット、5…レジ
スタ部、6…置換えテーブル、7…データ整合保証回
路、51…一般レジスタ群(第1のレジスタの群)、5
2…一時レジスタ群(第2のレジスタの群)。
フロントページの続き (56)参考文献 特開 昭63−167934(JP,A) 特開 昭63−245529(JP,A) 特開 昭61−48037(JP,A) 特開 昭60−129838(JP,A) Robert.M.Keller著" Look−Ahead Process ors”,Computing Sur veys,Vol.7 No.4,De cember 1975(昭和50年)p. 177−195 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38
Claims (1)
- 【請求項1】 複数命令の並列実行が可能な情報処理装
置において、 命令語で指定可能な複数の第1のレジスタと、 この第1のレジスタの代用として一時的に使用される、
命令語で指定不可能な少なくとも1つの第2のレジスタ
と、実行すべき命令列を順次デコードするデコーダであっ
て、前記第1のレジスタについてレジスタ依存関係のあ
る命令を検出し、その命令の指定する前記第1のレジス
タのみを前記第2のレジスタに一時的に置換えるデコー
ダと、 前記デコーダのデコード結果に基づいて複数命令を並列
に実行する複数の実行ユニットを有する並列実行部であ
って、前記デコーダによるレジスタ置換えがなされた命
令については、その置換え後の前記第2のレジスタを使
用して当該命令を実行する並列実行部と、 前記デコーダによる置き換えの対象となった第1のレジ
スタを示す情報と置換えに用いられた第2のレジスタを
示す情報の対が登録される置換えテーブルと、 前記置換えテーブルに登録されている情報対で示される
第1及び第2のレジスタへのアクセスが実行されないサ
イクルで、当該第2のレジスタの内容を対応する前記第
1のレジスタに書き戻すデータ整合保証回路とを具備す
る ことを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3336739A JP3015565B2 (ja) | 1991-12-19 | 1991-12-19 | 複数命令の並列実行機能を持つ情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3336739A JP3015565B2 (ja) | 1991-12-19 | 1991-12-19 | 複数命令の並列実行機能を持つ情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05173781A JPH05173781A (ja) | 1993-07-13 |
JP3015565B2 true JP3015565B2 (ja) | 2000-03-06 |
Family
ID=18302278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3336739A Expired - Fee Related JP3015565B2 (ja) | 1991-12-19 | 1991-12-19 | 複数命令の並列実行機能を持つ情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3015565B2 (ja) |
-
1991
- 1991-12-19 JP JP3336739A patent/JP3015565B2/ja not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
Robert.M.Keller著"Look−Ahead Processors",Computing Surveys,Vol.7 No.4,December 1975(昭和50年)p.177−195 |
Also Published As
Publication number | Publication date |
---|---|
JPH05173781A (ja) | 1993-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2938426B2 (ja) | 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 | |
EP0380850B1 (en) | Method and digital computer for preproccessing multiple instructions | |
JP2937485B2 (ja) | スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置 | |
JP3547482B2 (ja) | 情報処理装置 | |
US5142633A (en) | Preprocessing implied specifiers in a pipelined processor | |
JP3020212B2 (ja) | ディジタル・データ処理システム及び命令シーケンス処理方法 | |
KR19980069764A (ko) | 단일 사이클 마이크로 명령을 이용한 명령 스케쥴링 방법 및 프로세서 | |
JPH0242569A (ja) | ベクター処理システムに用いる文脈スイッチング方法及び装置 | |
JPS58125148A (ja) | 条件付きブランチ命令の予測装置 | |
US6338134B1 (en) | Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data | |
US6772317B2 (en) | Method and apparatus for optimizing load memory accesses | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
JPH0496825A (ja) | データ・プロセッサ | |
JP2889845B2 (ja) | 情報処理装置 | |
US5761467A (en) | System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field | |
JPH0682320B2 (ja) | データ処理装置 | |
TWI836108B (zh) | 資料結構放棄 | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
JP3015565B2 (ja) | 複数命令の並列実行機能を持つ情報処理装置 | |
US20030084272A1 (en) | Handling problematic events in a data processing apparatus | |
JP2904624B2 (ja) | 並列演算処理装置 | |
TW201734769A (zh) | 處理向量指令 | |
US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
JP2843844B2 (ja) | 並列演算処理装置 | |
EP0634717B1 (en) | Data processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |