JP2629479B2 - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2629479B2
JP2629479B2 JP3095435A JP9543591A JP2629479B2 JP 2629479 B2 JP2629479 B2 JP 2629479B2 JP 3095435 A JP3095435 A JP 3095435A JP 9543591 A JP9543591 A JP 9543591A JP 2629479 B2 JP2629479 B2 JP 2629479B2
Authority
JP
Japan
Prior art keywords
instruction
buffer
address
instructions
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP3095435A
Other languages
English (en)
Other versions
JPH04227542A (ja
Inventor
雅夫 井上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP3095435A priority Critical patent/JP2629479B2/ja
Publication of JPH04227542A publication Critical patent/JPH04227542A/ja
Application granted granted Critical
Publication of JP2629479B2 publication Critical patent/JP2629479B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は情報処理装置に関し、特
に命令の実行をパイプライン方式で行い、キャッシュメ
モリを備えた情報処理装置に関するものである。
【0002】
【従来の技術】図5は従来の技術を用いた命令およびデ
ータ用の物理キャッシュを持つパイプライン方式の情報
処理装置のブロック図、図6は従来の技術を用いたパイ
プライン処理の説明図である。ここでのパイプライン方
式の情報処理装置における命令の実行は、fetch、
decode、execution、storeという
4つのステージに分け、各ステージ並列に行われる。
【0003】fetchステージでは、プログラムカウ
ンター111の示すアドレス(nPC)の命令を、アド
レス変換装置112により論理アドレスから物理アドレ
スに変換して命令キャッシュ104をアクセスし、命令
バッファ105に命令を取りこむ処理を表す。
【0004】decodeステージでは、命令バッファ
105内の命令を命令解読部106において、パイプラ
イン制御信号107に変換し、この信号を用いて演算装
置116やデータキャッシュ113の制御を行う。演算
命令の場合には汎用レジスタ115から演算命令の実行
に必要なオペランドを読みだし内部バス117に出力す
る。ロードおよびストア命令の場合には命令コード内に
含まれている即値情報を即値符号拡張装置108におい
て、1ワードのデータに変換し、ロードおよびストアす
べきデータのアドレスをアドレス計算装置109におい
て計算する。図4は、32ビットの情報処理装置におけ
る命令フォーマットの例である。このフォーマットにお
いて13ビットのimmフィールドは即値情報を表し、
opフィールドは命令の種別を表す。一般に似たような
働きをする命令は、2、3ビットで区別するような命令
セットアーキテクチャを採る場合が多い。またrs、r
dはそれぞれ、ソースレジスタ、デスティネーションレ
ジスタを表している。そして、ロードすべきデータのア
ドレスは、アドレス計算装置109において、[rs+
imm]として計算される。
【0005】executionステージでは、演算命
令の場合には演算装置116において各種演算を行い内
部バス118に演算結果を出力する。またオーバーフロ
ー、アンダーフロー、負、ゼロなどの条件判定を伴う演
算命令の場合には、条件判定部119において前記演算
結果を調べ、オーバーフロー、アンダーフロー、負、ゼ
ロなどの状態を表すコンディションコードを生成する。
ロード命令の場合にはデータキャッシュ113をアクセ
スしてアライナー114で正しいバスにデータを乗せ換
え内部バス118に出力する。
【0006】storeステージでは、内部バス118
上のデータを汎用レジスタ115にストアする。ロード
命令の場合には、命令コードにおいて示されるデスティ
ネーションレジスタrdにストアされる。
【0007】キャッシュ104、113の容量が十分大
きくミスヒットする率が低い場合には、バスコントロー
ラー103を介してメインメモリ102との間で命令や
データをやり取りする必要はほとんどなく、各命令はパ
イプライン処理により1サイクル毎に処理されていく。
図6は、キャッシュにおいてミスヒットがないと仮定し
た場合のパイプライン処理のタイミングチャートを示
す。同図においてt−2からt−1のサイクルにかけて
nPCで表す命令アドレスnがプログラムカウンター1
11により出力され、t−1のサイクルにおいて論理ア
ドレスから物理アドレスに命令の一部分を変換する処理
および命令キャッシュのアクセスが行われ、tのサイク
ルにおいて命令バッファBFに命令アドレスnの命令I
[n]が取りこまれる。こうしてfetchステージか
ら命令I[n]に対するパイプライン処理が始まる。
【0008】図3(a)は、情報処理装置101に対し
てコンパイラより与えられたソースプログラムの例であ
る。図3(a)において、ldはロード命令、stはス
トア命令、muldはダブルワードの乗算命令、add
dはダブルワードの加算命令を表す。図3(a)に示す
アドレス00000010のmuldは、レジスタ(r
20、r21)とレジスタ(r10、r11)の間でダ
ブルワードの乗算を行い結果をレジスタ(r30、r3
1)に出力する。この例のように、ダブルワードの演算
命令の前には、連続する2つのアドレスのレジスタに演
算命令のオペランドデータをロードすることが多い。
【0009】また図10は、情報処理装置101に対し
てコンパイラより与えられたソースプログラムの例であ
る。図10において、lddはダブルワードのロード命
令、stdはダブルワードのストア命令、fmuldは
ダブルワードの乗算命令、fadddはダブルワードの
加算命令、addはシングルワードの加算命令、add
ccはシングルワードの加算命令であり結果が負の場合
には条件判定部119において負のコンディションコー
ドを生成する命令であり、bgeはコンディションコー
ドが正のときはアドレス00000000へ戻る後退分
岐命令であり、アドレス00000028の命令はアド
レス00000000の命令を実行する前にアドレス0
0000024の分岐命令に引き続いて実行される。
【0010】本例に示すプログラムはアドレス0000
0018の演算結果が負になるまでくり返される、アド
レス00000000からアドレス00000028ま
での11ステップからなるループを形成しているプログ
ラムである。図10に示すプログラムにおいて、アドレ
ス00000000、00000008のロード命令の
ロードするアドレスは、それぞれアドレス000000
10、0000001cの加算命令においてループがく
り返されるたびに変更されるが、アドレス000000
04のロード命令のロードするアドレスは、ループ内に
おいて変更されることはない。
【0011】
【発明が解決しようとする課題】しかし上記した構成で
は、コンパイラの出力する命令コードをそのまま実行す
る機能しか持っていないため、例えば図3(a)に示し
たような、本来ダブルワードのロード命令lddで一度
に実行可能な処理をシングルワードのロード命令ldを
2回用いて行うように記述された効率の悪いソースプロ
グラムが入力された場合、そのまま実行しなければなら
ず、情報処理装置において実行しなければならないプロ
グラムのステップ数が多くなり、処理時間が長くなると
いう問題点を有していた。このようなことは最適化性能
のよくないコンパイラにより処理されたアプリケーショ
ンプログラムを実行する際にはよく起こることである。
【0012】また上記した構成では、図10に示すルー
プのプログラムにおいて、アドレス00000004に
示すようなループ内において一度だけ実行すればよいロ
ード命令もループがくり返されるたびに実行されるた
め、情報処理装置において実行しなければならないプロ
グラムのステップ数が多くなり、処理時間が長くなると
いう問題点を有していた。
【0013】本発明は係る点に鑑み、2つのシングルワ
ードを対象とする命令を1つのダブルワードを対象とす
る命令で一度に処理し、ソースプログラムの実行ステッ
プ数を減らすことによりプログラムの実行の高速化を行
う情報処理装置を提供することを目的としている。
【0014】また第二の発明は、ループを含むプログラ
ムの実行中にループ内において一度だけ実行すればよい
ロード命令を検出し、ループがくり返されるたびに前記
ロード命令の実行をキャンセルし、プログラムの実行ス
テップ数を減らすことによりプログラムの実行の高速化
を行う情報処理装置を提供することを目的としている。
【0015】
【課題を解決するための手段】上記目的を達成するため
に、第1の発明における情報処理装置は、命令を格納す
る複数段から成る複数の命令バッファと、現在実行され
ている前記命令バッファ内の命令を除いた複数の前記命
令バッファ内の命令を入力として、前記複数の命令を同
時に実行できるかどうかを検査し、同時に実行できる場
合には前記複数の命令を前記複数の命令より少ない数の
命令に変換し、前記変換により空いた前記複数の命令バ
ッファ内に取りこむ命令のアドレスを示すプログラムカ
ウンターの値を調節する手段とを備えたものである。
【0016】また第2の発明は、外部より命令を取りこ
む第1の命令バッファおよび第2の命令バッファと、前
記第1の命令バッファ内の命令と前記第2の命令バッフ
ァ内の命令を入力として、前記2つの命令を同時に実行
する命令に変換できるかどうかを検査し前記変換した命
令および命令列変更通知信号を出力する機能を有する命
令列検査回路と、前記第2の命令バッファからの命令ま
たは前記命令列検査回路からの変換命令を入力する第3
の命令バッファと、外部からの複数の命令を選択して前
記第1の命令バッファに接続する機能を備えた第1の選
択手段と、外部からの命令あるいは前記第1の命令バッ
ファからの命令のいずれかを選択して前記第2の命令バ
ッファに接続する機能を備えた第2の選択手段と、前記
命令列検査回路からの変換命令あるいは前記第2の命令
バッファからの命令のいずれかを選択して前記第3の命
令バッファに接続する機能を備えた第3の選択手段とを
有し、前記第1の選択手段と第2の選択手段と第3の選
択手段がすべて前記命令列検査回路から出力される同一
のセレクタ制御信号で制御される命令バッファ回路とを
備えるよう構成したものである。
【0017】また第3の発明は、命令バッファ内の命令
を検査し、後退分岐命令により形成されるプログラムの
ループが検出された場合には、2回目以降の前記プログ
ラムのループ内の命令の実行において実行する必要のな
い命令を検出し、3回目以降の前記プログラムのループ
内の命令の実行において前記実行する必要のない命令の
実行をキャンセルし、前記キャンセルにより空いた前記
命令バッファ内に取りこむ命令のアドレスを示すプログ
ラムカウンターの値を調節する手段を備えたものであ
る。
【0018】また第4の発明は、外部より命令を取りこ
む第1の命令バッファおよび第2の命令バッファと、前
記第1の命令バッファ内の命令を入力として、前記入力
した命令がキャンセルできるかどうかを検査し、前記命
令実行のキャンセルおよびつぎに実行する命令のアドレ
スを示す命令キャンセル信号を出力する機能を有する命
令列検査回路と、外部からの複数の命令を選択して前記
第1の命令バッファに接続する機能を備えた第1の選択
手段と、外部からの命令あるいは前記第1の命令バッフ
ァからの命令のいずれかを選択して前記第2の命令バッ
ファに接続する機能を備えた第2の選択手段とを有し、
前記第1の選択手段と第2の選択手段がすべて前記命令
列検査回路から出力される同一のセレクタ制御信号で制
御される命令バッファ回路を備えるよう構成したもので
ある。
【0019】
【作用】第1の発明は上記した構成により、命令バッフ
ァ回路内において現在実行されている命令を除く複数の
命令を検査して、同時に実行できる場合には前記複数の
命令を1つの命令に変換して実行し、前記変換により空
いた命令バッファにつぎに続くアドレスの新たな命令が
取りこまれるようにプログラムカウンターの値を調節す
ることにより、従来実行に複数サイクルを要していたも
のを1サイクルで処理できるようになり、アプリケーシ
ョンプログラムの高速処理が可能となる。
【0020】また第2の発明における命令バッファ回路
の構成により、1つのセレクター制御信号を用いて、複
数の命令を1つの命令に変換して実行したあと、命令バ
ッファを空いたままにすることなく必要な数の命令を命
令キャッシュから取り込み連続的に命令実行ができる。
【0021】また第3の発明におけるループ検出アルゴ
リズムにより、ループを含むプログラムの実行におい
て、くり返し実行する必要のないロード命令の実行をキ
ャンセルすることにより、プログラムの高速処理が可能
となる。
【0022】また第4の発明における命令バッファ回路
の構成により、1つのセレクター制御信号を用いて、命
令の実行をキャンセルしたあと、命令バッファを空いた
ままにすることなく必要な数の命令を命令キャッシュか
ら取り込み連続的に命令実行ができる。
【0023】
【実施例】(実施例1)図1は、本発明の第一の実施例
における命令バッファの回路図であり、図5の従来の技
術による情報処理装置において太い破線で囲んだ部分を
改良したものである。
【0024】図1において、1が命令バッファ回路、
2、3、4がそれぞれ命令バッファBF、BF−1、B
F−2を表す。5は命令バッファ3と4の命令コードを
調べる命令列検査回路であり、6は命令列検査回路5に
おいて変換された、命令バッファ3と4内の命令を同時
に実行する変換命令を表す。7、8、9はセレクターを
表し、命令列検査回路5からセレクターに対するセレク
ター制御信号17が出される。このセレクター制御信号
17によりセレクター7、8、9を同時に制御する。1
0は命令列変更通知信号を表し、11はプログラムカウ
ンター、12は命令アドレスnPC+2を表し命令キャ
ッシュ13をアクセスするのに使われる。命令キャッシ
ュ13は、nPC+2、nPC+3の2つのアドレスを
アクセスし、命令I[nPC+2]用のバス14と命令
I[nPC+3]用のバス15を通して、前記2つの命
令が命令バッファ回路1に取りこまれる。16は命令解
読部を表す。
【0025】以下に図1を用いて動作を詳細に説明す
る。命令バッファ回路1では、命令バッファ2内の命令
がfetchステージにおいて実行されている間に、命
令列検査回路5において前記命令バッファ回路1内の現
在実行されていない2つの、命令バッファ3、4内の命
令を入力して、つぎのサイクルにおいて前記2つの命令
が同時に実行できるかどうか調べる。たとえば、2つの
シングルワードのロードあるいはストア命令が1つのダ
ブルワードのロードあるいはストア命令で一度に処理で
きる場合というのは、ロード命令の場合にはソースレジ
スタrsのアドレスが等しく、デスティネーションレジ
スタrdのアドレスが1つだけ違い、即値immの値が
アクセスするデータのアドレス分だけ違う場合である。
ストア命令の場合には、rsとrdがロード命令に対し
て逆の状態になる。したがって、この命令列検査回路5
は、上述のopフィールドとレジスタアドレスおよびi
mmフィールドの値の一致検査をしている。
【0026】同時に実行できない場合には、つぎのサイ
クルにおいて命令バッファ3内の命令が命令バッファ2
に取りこまれ、命令バッファ4内の命令が命令バッファ
3に取りこまれ、命令キャッシュ13からプログラムカ
ウンター11の示すアドレスnPC+2の命令I[nP
C+2]がバス14を通して命令バッファ4に取りこま
れるように、命令列検査回路5においてセレクター7、
8、9を同一のセレクター制御信号17を用いて制御す
る。
【0027】前記2つの命令がともにシングルワードの
ロード命令あるいはシングルワードのストア命令である
場合に、前記2つのシングルワードのロードあるいはス
トア命令を1つのダブルワードのロードあるいはストア
命令に変換して同時に処理できるかどうかを調べ、もし
可能な場合にはセレクター7で命令列検査回路5と命令
バッファ2を接続し、つぎのサイクルにおいて前記命令
列検査回路5において変換したダブルワードのロードあ
るいはストア命令6を命令バッファ2に取りこむ。この
とき2つの命令バッファ3、4が同時に空になるので、
命令列変更通知信号10によりプログラムカウンター1
1に命令列を変更したことを知らせて、プログラムカウ
ンター11によって示される命令アドレスnPC+2の
値を、前記変換により空いた2つの命令バッファ3、4
に新たな命令が取りこまれるように調節する。このとき
セレクター8は命令キャッシュ13と命令バッファ3が
バス14を経由して接続され、セレクター9は命令キャ
ッシュ13と命令バッファ4がバス15を経由して接続
されるよう命令列検査回路5から制御信号17が出さ
れ、セレクター7、8、9を同時に制御する。これによ
り、2つの命令が1つの命令に変換された場合にも連続
して効率よくつぎの命令が前記命令バッファ2、3、4
に入力される。
【0028】図11は、図1における命令列検査回路の
ブロック図である。図において、命令バッファ21、2
2内の命令は、命令列検査回路20に取り込まれて検査
される。制御部42では、前記2つの命令のopフィー
ルドを調べたり、同時に実行できるかどうかを調べるた
めの演算器に対する入力のセレクターの制御および変換
命令を生成するためのセレクターの制御を行なう。また
前記2つの命令を同時に実行する命令に変換できる場合
には、制御部42から命令列変更通知信号43を出力す
る。また図1に示すセレクター7、8、9を制御するた
めのセレクター制御信号44も出力する。
【0029】前記制御部42において検査した2つの命
令のopフィールドが共にシングルワードのロード命令
の場合には、前記2つの命令のソースフィールドrsを
比較器26に入力し、前記2つの命令のデスティネーシ
ョンフィールドrdを減算器23に入力するようにセレ
クター31、32、33、34を制御する。また即値i
mmのフィールドは、減算器27に入力される。そして
減算器23や絶対値算出器24および比較器25によ
り、前記2つの命令のrdの値が1つだけ違い、rsの
値が一致し、減算器27や絶対値算出器28および比較
器29により、immの値がアクセスするデータのアド
レス分(4バイト)違う場合には、アンド回路30によ
り、スイッチ40をイネーブルにするためのイネーブル
信号39が出力される。そして、セレクター35により
ダブルワードのロード命令lddのopフィールドをセ
レクトし、セレクター36により前記2つの命令のrd
のうち小さい方のrdをセレクトし、セレクター37に
より前記2つの命令のrsのうちいずれか一方のrs
(本発明の実施例の場合、命令バッファ21の命令のr
s)をセレクトし、セレクター38により前記2つの命
令のimmのうち小さい方のimmをセレクトし、前記
op、rd、rs、immを合わせたものが変換命令と
して、スイッチ40を通して、命令バッファ41に出力
される。このとき制御部42からは命令列変更通知信号
43が出力される。また命令バッファ内の命令の流れを
変えるためのセレクター制御信号44も出力される。
【0030】また制御部42において検査した2つの命
令のopフィールドが共にシングルワードのストア命令
の場合には、前記2つの命令のデスティネーションフィ
ールドrdを比較器26に入力し、前記2つの命令のソ
ースフィールドrsを減算器23に入力するようにセレ
クター31、32、33、34を制御する。また即値i
mmのフィールドは、減算器27に入力される。そして
減算器23や絶対値算出器24および比較器25によ
り、前記2つの命令のrsの値が1つだけ違い、rdの
値が一致し、減算器27や絶対値算出器28および比較
器29により、immの値がアクセスするデータのアド
レス分(4バイト)違う場合には、アンド回路30によ
り、スイッチ40をイネーブルにするためのイネーブル
信号39が出力される。そして、セレクター35により
ダブルワードのストア命令stdのopフィールドをセ
レクトし、セレクター36により前記2つの命令のrs
のうち小さい方のrsをセレクトし、セレクター37に
より前記2つの命令のrdのうちいずれか一方のrd
(本発明の実施例の場合、命令バッファ21の命令のr
d)をセレクトし、セレクター38により前記2つの命
令のimmのうち小さい方のimmをセレクトし、前記
op、rd、rs、immを合わせたものが変換命令と
して、スイッチ40を通して、命令バッファ41に出力
される。このとき制御部42からは命令列変更通知信号
43が出力される。また命令バッファ内の命令の流れを
変えるためのセレクター制御信号44も出力される。前
記制御部42において検査した2つの命令が同時に実行
する命令に変換できない場合には、命令列検査回路から
は、命令バッファ内の命令の流れを制御するためのセレ
クター制御信号44のみが出力される。
【0031】図2は、本発明の実施例における前記命令
バッファ回路1の動作を説明するためのタイミング図で
あり、命令キャッシュ13においてミスヒットがない場
合を示す。同図においてt−2からt−1のサイクルに
かけてnPC+2で示す命令アドレスn+2がプログラ
ムカウンター11より出力される。ここでnPC+2に
示す命令アドレスはnPCに示す命令アドレスからプロ
グラムカウンター11内部において生成している。
【0032】t−1のサイクルにおいて論理アドレスで
ある命令アドレスn+2から物理アドレスに命令の一部
分を変換する処理および命令キャッシュ13のアクセス
が行われ、命令アドレスn+2、n+3の連続する2つ
のアドレスの命令がバス14、15を通して命令バッフ
ァ回路1内に読み込まれる。
【0033】t−1のサイクルからtのサイクルに移る
とき、命令バッファBF−2に取りこまれていた命令I
[n+1]が命令バッファBF−1に取りこまれ、命令
バッファBF−1に取りこまれていた命令I[n]が命
令バッファBFに取りこまれる。そして空いた命令バッ
ファBF−2には、命令キャッシュ13から命令I[n
+2]が取りこまれる。
【0034】tのサイクルにおいて命令バッファBFに
取りこまれている命令I[n]は、t−2からt−1の
サイクルにかけてnPCで示されているアドレスの命令
であり、fetchステージから命令I[n]に対する
パイプライン処理が行われて行く。このとき同じサイク
ルtにおいてnPCに続くアドレスの命令I[n+
1]、I[n+2]の命令コードが命令列検査回路5に
よって調べられる。この場合、命令I[n+1]、I
[n+2]がともにシングルワードのロード命令(l
d)でありしかも一つのダブルワードのロード命令(l
dd)として同時に実行できるため、命令列検査回路5
から命令列変更通知信号10がプログラムカウンター1
1にtからt+1のサイクルにかけてのタイミングで伝
えられ、nPCの値がn+1からn+3に、nPC+2
の値がn+3からn+5に1命令分余分に進められる。
【0035】つぎのサイクルt+1は命令I[n+1]
のfetchステージなので、前記命令列検査回路5に
おいて変換された命令I[n+1](ldd)が命令列
検査回路5から命令バッファBFにストアされる。また
このサイクルにおいては、2つの命令バッファBF−
2、BF−1が同時に空くため、命令キャッシュ13か
ら2つの命令I[n+3]、I[n+4]がアクセスさ
れ、それぞれ命令バッファBF−1、BF−2に取りこ
まれる。
【0036】図3(b)に本発明の実施例において図3
(a)のソースプログラムを実行するときの命令実行シ
ーケンスを示す。4つのシングルワードのロード命令l
dと2つのシングルワードのストア命令stが、2つの
ダブルワードのロード命令lddと1つのダブルワード
のストア命令stdに変換され、従来10ステップかか
って実行されていたソースプログラムが、本発明では6
ステップで実行できるようになる。すべての命令がパイ
プライン処理により1サイクルで実行できる場合には、
40%もの性能改善となる。またmuldやadddな
どのような積和演算をよく使う数値計算プログラムなど
においては、その前後にロードおよびストア命令が存在
することが多いことからその効果は大きい。
【0037】なお、本発明の第一の実施例では3段から
なる命令バッファを持つ命令バッファ回路について説明
したが、4段以上の命令バッファを持ち同様の機能を有
する命令バッファ回路を構成することができることは言
うまでもない。また命令バッファBFに相当するものが
無く、命令が直接命令解読部において処理される2段の
命令バッファを持ち同様の機能を有する命令バッファ回
路を構成することができることは言うまでもない。また
各段毎に複数個の命令を格納できる命令バッファを持
ち、各サイクル毎に複数の命令を命令キャッシュから取
り込み、前記複数の命令を並列に実行する方式の情報処
理装置においても同様の機能を有する命令バッファ回路
を構成できることは言うまでもない。また本発明の第一
の実施例ではロード命令とストア命令を例としたが、ム
ーブ命令などその他の命令についても同様に複数の命令
を一度に実行できるように命令バッファ回路を構成する
ことができることは言うまでもない。
【0038】(実施例2)図7(a)は本発明の第二の
実施例におけるループ検出アルゴリズムであり、命令バ
ッファ回路内において命令の実行中にプログラムのルー
プを検出し、前記プログラムのループにおいて複数回実
行する必要のないロード命令を検出し、前記プログラム
のループにおいて複数回実行する必要のないロード命令
の実行のキャンセルの制御を行うために用いる。図7
(b)は図7(a)における分岐命令判定部55の詳細
なアルゴリズムを示している。
【0039】図7(a)において、プログラムはステッ
プ50からスタートし、ステップ51においてプログラ
ムの実行の最終サイクルかどうか判定し、もしプログラ
ムの実行の最終サイクルである場合には、ステップ52
においてプログラムの実行を完了する。またプログラム
の実行の最終サイクルでない場合には、ステップ53で
命令バッファ回路内の命令列検査回路において命令コー
ドを検査し、ステップ54で前記命令列検査回路におい
て検査した命令コードが分岐命令かどうかを調べ、分岐
命令の場合にはステップ55の分岐命令判定に進む。
【0040】ステップ55で検査した命令コードが分岐
命令でない場合にはステップ56に進む。ステップ55
の詳細は、図7(b)に示している。図7(b)におい
て、分岐命令判定はステップ60から始まる。ステップ
61で前記命令列検査回路において検査した命令コード
が後退分岐命令かどうかを調べ、後退分岐命令でない場
合にはステップ62に進み、命令列検査回路内のすべて
のモード(検査モード、キャンセルモード)をキャンセ
ルして、ステップ71で分岐命令判定を終了する。後退
分岐命令の場合にはステップ63に進み、前記後退分岐
命令がtakenすなわち後退分岐が成立したかどうか
を判定する。takenでない場合、すなわち後退分岐
が成立しなかった場合にはステップ64に進み、命令列
検査回路内のすべてのモード(検査モード、キャンセル
モード)をキャンセルして、ステップ71で分岐命令判
定を終了する。takenの場合、すなわち後退分岐が
成立した場合には、命令列検査回路内において後退分岐
命令のアドレスと飛び先の命令(target命令)の
アドレスの組を記憶してステップ65に進み、現在のモ
ードが命令列の検査モードかどうかを調べる。ここで命
令列の検査モードとは、プログラムのループ内の命令コ
ードを検査し、ロード命令と前記ロード命令のアドレス
を操作する演算命令の組を探索し、前記ロード命令のア
ドレスと前記ロード命令のアドレスを操作する演算命令
のアドレスの組を命令列検査回路内のテーブルLADに
記憶するモードである。図9(b)に前記テーブルLA
Dのフォーマットを示す。テーブルLADは、ロード命
令アドレス、ロードアドレス操作命令アドレス、キャン
セルフラグから成り立っており、キャンセルフラグの立
っているロード命令は、プログラムのループ内において
一度だけ実行すればよい命令なので、3回目以降のルー
プ内命令の実行においては前記キャンセルフラグの立っ
ているロード命令の実行は命令バッファ回路内において
キャンセルされる。
【0041】ステップ65において現在のモードが命令
列の検査モードでない場合にはステップ66に進み、命
令列の検査モードに入り、前記命令列検査回路内におい
て記憶した後退分岐命令のアドレスとtarget命令
のアドレスの組を命令列検査回路内のレジスタBADに
記憶し、ステップ71で分岐命令判定を終了する。図9
(a)にレジスタBADのフォーマットを示す。レジス
タBADは、後退分岐命令アドレス、target命令
アドレスの組から成り立っており、プログラムのループ
の検出のために用いる。ステップ65において現在のモ
ードが命令列の検査モードの場合にはステップ67に進
み、前記命令列検査回路内において記憶した後、退分岐
命令のアドレスとtarget命令のアドレスの組が、
ステップ66においてセットしたレジスタBADの内容
と同一であるかどうか調べる。異なる場合にはステップ
68に進み、命令列検査回路内のすべてのすべてのモー
ド(検査モード、キャンセルモード)をキャンセルし
て、ステップ71で分岐命令判定を終了する。
【0042】ステップ67において、同一である場合に
はステップ69に進み、現在のモードがキャンセルモー
ドかどうかを調べる。ここでキャンセルモードとは、プ
ログラムのループ内の命令実行において、前記テーブル
LADのロード命令アドレスおよびキャンセルフラグを
もとにして、キャンセルフラグの立っているロード命令
の実行をキャンセルするモードのことである。ステップ
69においてキャンセルモードでない場合にはステップ
70に進み、キャンセルモードに入り、ステップ71で
分岐命令判定を終了する。ステップ69においてキャン
セルモードの場合にはステップ71で分岐命令判定を終
了する。以上が図7(b)に示した分岐命令判定の詳細
な説明である。
【0043】図7(a)のステップ56において、現在
のモードがキャンセルモードの場合にはステップ57に
進み、命令列検査回路内において、前記ステップ53に
おいて検査した命令のアドレスとテーブルLAD内のロ
ード命令アドレスを比較して、前記ステップ53におい
て検査した命令がキャンセルフラグの立っているロード
命令である場合には、命令バッファ回路内において前記
ロード命令の実行をキャンセルし、ステップ51に戻
る。ステップ56において現在のモードがキャンセルモ
ードでない場合にはステップ58に進む。ステップ58
において現在のモードが命令列の検査モードの場合には
ステップ59に進み、前記ステップ53において検査し
た命令がロード命令あるいはロードアドレス操作命令の
場合には、命令列検査回路内の前記テーブルLAD内の
該当箇所にロード命令アドレスあるいはロードアドレス
操作命令アドレスを記憶し、ステップ51に戻る。ステ
ップ59のテーブルLADへのセットにおいて、対応す
るロードアドレス操作命令が検出されていないロード命
令をテーブルLADに記憶する際にはキャンセルフラグ
を立てておき、対応するロードアドレス操作命令が検出
され、ロード命令とロードアドレス操作命令の組がテー
ブルLADに記憶された時点でキャンセルフラグをクリ
アする。なお対応するロード命令が検出されていないロ
ードアドレス操作命令が検出された場合には、キャンセ
ルフラグを立てずにテーブルLADに記憶する。ステッ
プ58において現在のモードが命令列の検査モードでな
い場合には、ステップ51に戻る。
【0044】図8は本発明の第二の実施例におけるルー
プ検出アルゴリズムを用いた命令バッファの回路図であ
り、前記ループ検出アルゴリズムを用いて検出したロー
ド命令をキャンセルした場合にも、命令バッファを空に
することなく命令キャッシュから命令を供給できる構成
になっている。図8において、80が命令バッファ回
路、81、82がそれぞれ命令バッファBF、BF−1
を表す。83は命令バッファ81の命令コードを調べる
命令列検査回路であり、85、86はセレクターを表
し、命令列検査回路83からセレクター85、86に対
するセレクター制御信号84が出される。87は命令キ
ャンセル信号を表し、88はプログラムカウンター、8
9は命令アドレスnPC+1を表し命令キャッシュ90
をアクセスするのに使われる。命令キャッシュ90に対
してnPC+1、nPC+2の2つのアドレスをアクセ
スし、アドレスnPC+1の命令用のバス91とアドレ
スnPC+2の命令用のバス92とを通じて、2つの命
令が命令バッファ回路80内に取りこまれる。93は命
令解読部を表す。
【0045】以下に図8を用いて動作を詳細に説明す
る。命令バッファ回路80では、命令バッファ81内の
命令が実行されている間に、命令列検査回路83におい
て前記命令バッファ回路80内の現在実行されていない
命令バッファ82内の命令を入力して、図7に示すアル
ゴリズムを用いて命令コードを検査する。検査した命令
がキャンセルフラグの立っているロード命令でない場合
には、つぎのサイクルにおいて命令バッファ82内の命
令が命令バッファ81に取りこまれ、命令キャッシュ9
0からプログラムカウンター88の示すアドレスnPC
+1の命令がバス91を通して命令バッファ82に取り
こまれるように、命令列検査回路83においてセレクタ
ー85、86をセレクター制御信号84を用いて制御す
る。命令バッファ82内の命令がキャンセルフラグの立
っているロード命令の場合には、命令キャンセル信号8
7によりプログラムカウンター88に前記ロード命令の
実行をキャンセルしたこと、およびつぎに実行すべき命
令のアドレスを知らせる。前記したつぎに実行すべき命
令のアドレスは、前記命令列検査回路83内の図9
(a)に示すテーブルLADを見ることにより決定する
ことができる。
【0046】つぎのサイクルにおいて、命令バッファ8
2内の命令の実行がキャンセルされるために空く2つの
命令バッファ81、82に新たな命令が同時に取りこま
れるように、前記命令キャンセル信号87を用いてプロ
グラムカウンター88の値が調節される。このときセレ
クター85は命令キャッシュ90と命令バッファ81が
バス91を経由して接続され、セレクター86は命令キ
ャッシュ90と命令バッファ82がバス92を経由して
接続されるよう命令列検査回路83からセレクター制御
信号84が出される。このことにより、前記ロード命令
の実行がキャンセルされた場合にも命令の実行が途切れ
ることなく連続するように、命令が前記命令バッファ8
1、82に供給される。
【0047】なお本発明の第二の実施例において示した
ループ検出アルゴリズムにおいて、2回目のプログラム
のループ内の命令の実行においてキャンセルできる命令
を命令バッファ内において検出したが、これはプログラ
ムのループ外からループ内へ分岐してくる場合があるた
め、1回目のプログラムのループ内の命令の実行におい
てキャンセルできる命令を命令バッファ内において検出
できないためである。また本発明の第二の実施例におい
ては、2段の命令バッファからなる命令バッファ回路を
示したが、3段以上の命令バッファを持ち同様の機能を
有する命令バッファ回路を構成することができることは
言うまでもない。また各段毎に複数個の命令を格納でき
る命令バッファを持ち、各サイクル毎に複数の命令を命
令キャッシュから取り込み、前記複数の命令を並列に実
行する方式の情報処理装置においても同様の機能を有す
る命令バッファ回路を構成できることは言うまでもな
い。
【0048】
【発明の効果】以上説明したように本発明に示した方法
によれば、同時に実行できる複数の命令を1つの命令に
変換して実行するため、最適化性能のよくないコンパイ
ラから出力されたソースプログラムでも、命令バッファ
内において命令を最適化することにより、従来実行に複
数サイクルを要していたものを1サイクルで高速に処理
でき、その実用的効果は大きい。また実行段階にならな
いと2つのシングルワードを対象とする命令を1つのダ
ブルワードを対象とする命令に変換できるか定まらない
場合があり、この場合本発明は特に効果を発揮する。
【0049】また本発明に示した方法によれば、2回目
のプログラムのループ内の命令の実行においてキャンセ
ルできる命令を命令バッファ内において検出し、3回目
以降のプログラムのループ内の命令の実行において、前
記キャンセルできる命令の実行をキャンセルし、命令バ
ッファを空いたままにすることなく命令キャッシュから
命令を命令バッファに連続的に供給できるので、回数の
多いループを含むプログラムを実行する際には、実行ス
テップ数を大幅に減らすことができ、その実用的効果は
大きい。
【図面の簡単な説明】
【図1】本発明の第一の実施例における命令バッファの
構成図である。
【図2】同実施例における命令バッファの動作を示すタ
イミング図である。
【図3】(a)はソースプログラムの例を示す図であ
る。(b)は本発明の情報処理装置において図3(a)
のソースプログラムを実行するときの命令実行シーケン
ス図である。
【図4】命令フォーマットの例を示す図である。
【図5】従来の技術による情報処理装置のブロック図で
ある。
【図6】従来の技術によるパイプライン処理の説明図で
ある。
【図7】(a)は本発明の第二の実施例におけるループ
検出アルゴリズムを示すフローチャート図である。
(b)は図7(a)のステップ55の詳細なフローチャ
ート図である。
【図8】同実施例における命令バッファの構成図であ
る。
【図9】(a)は分岐命令アドレスとtarget命令
アドレスを記憶するレジスタを示す図である。(b)は
ロード命令アドレスとロードアドレス操作命令アドレス
とキャンセルフラグを記憶するテーブルを示す図であ
る。
【図10】ソースプログラムの第二の例を示す図であ
る。
【図11】図1の命令列検査回路の構成図である。
【符号の説明】
1 命令バッファ回路 2、3、4 命令バッファ 5 命令列検査装置 6 変換命令 7、8、9 セレクター 10 命令列変更通知信号 11 プログラムカウンター 12 命令アドレス信号 13 命令キャッシュ 14、15 バス 16 命令解読部 17 セレクター制御信号

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 命令バッファ内の命令を検査し、後退分
    岐命令により形成されるプログラムのループが検出され
    た場合には、2回目以降の前記プログラムのループ内の
    命令の実行において実行する必要のない命令を検出し、
    3回目以降の前記プログラムのループ内の命令の実行に
    おいて前記実行する必要のない命令の実行をキャンセル
    し、前記キャンセルにより空いた前記命令バッファ内に
    取りこむ命令のアドレスを示すプログラムカウンターの
    値を調整する手段を備えていることを特徴とする情報処
    理装置。
  2. 【請求項2】 実行する必要のない命令が、プログラム
    のループ内の命令においてロードするアドレスを操作す
    る命令の存在しないロード命令であることを特徴とする
    特許請求の範囲第1項記載の情報処理装置。
  3. 【請求項3】 後退分岐命令のアドレスおよび前記後退
    分岐命令の飛び先の命令のアドレスの組が二度連続して
    検出されたことにより、プログラムのループを検出する
    ことを特徴とする特許請求の範囲第1項記載の情報処理
    装置。
  4. 【請求項4】 外部より命令を取りこむ第1の命令バッ
    ファおよび第2の命令バッファと、前記第1の命令バッ
    ファ内の命令を入力として、前記入力した命令がキャン
    セルできるかどうかを検査し、前記命令実行のキャンセ
    ルおよびつぎに実行する命令のアドレスを示す命令キャ
    ンセル信号を出力する機能を有する命令列検査回路と、
    外部からの複数の命令を選択して前記第1の命令バッフ
    ァに接続する機能を備えた第1の選択手段と、外部から
    の命令あるいは前記第1の命令バッファからの命令のい
    ずれかを選択して前記第2の命令バッファに接続する機
    能を備えた第2の選択手段とを有し、前記第1の選択手
    段と第2の選択手段がすべて前記命令列検査回路から出
    力される同一のセレクタ制御信号で制御される命令バッ
    ファ回路を備えていることを特徴とする情報処理装置。
JP3095435A 1990-05-14 1991-04-25 情報処理装置 Expired - Fee Related JP2629479B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3095435A JP2629479B2 (ja) 1990-05-14 1991-04-25 情報処理装置

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2-123430 1990-05-14
JP12343090 1990-05-14
JP2-338121 1990-11-30
JP33812190 1990-11-30
JP3095435A JP2629479B2 (ja) 1990-05-14 1991-04-25 情報処理装置

Publications (2)

Publication Number Publication Date
JPH04227542A JPH04227542A (ja) 1992-08-17
JP2629479B2 true JP2629479B2 (ja) 1997-07-09

Family

ID=27307811

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3095435A Expired - Fee Related JP2629479B2 (ja) 1990-05-14 1991-04-25 情報処理装置

Country Status (1)

Country Link
JP (1) JP2629479B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51853A (ja) * 1974-06-21 1976-01-07 Hitachi Ltd Deetashorishisutemuno meireigoseisochi
JPS6265133A (ja) * 1985-09-17 1987-03-24 Nec Corp 命令先取り装置

Also Published As

Publication number Publication date
JPH04227542A (ja) 1992-08-17

Similar Documents

Publication Publication Date Title
US5652900A (en) Data processor having 2n bits width data bus for context switching function
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
KR920006275B1 (ko) 데이타 처리 장치
US5461722A (en) Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions
EP0394624B1 (en) Multiple sequence processor system
US5131086A (en) Method and system for executing pipelined three operand construct
KR100254007B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타프로세서
US5335330A (en) Information processing apparatus with optimization programming
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
US6101596A (en) Information processor for performing processing without register conflicts
EP0742517B1 (en) A program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
US20080209189A1 (en) Information processing apparatus
US6757809B1 (en) Data processor having 2n bits width data bus for context switching functions
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
JP2629479B2 (ja) 情報処理装置
US5983344A (en) Combining ALU and memory storage micro instructions by using an address latch to maintain an address calculated by a first micro instruction
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
US4935849A (en) Chaining and hazard apparatus and method
US20240111537A1 (en) Store instruction merging with pattern detection
JPH07114509A (ja) メモリアクセス装置
JP2591325B2 (ja) 分岐制御装置
JP2806093B2 (ja) ロード・ストア処理装置
JP3102399B2 (ja) データ処理装置及び方法
JPH0248733A (ja) 情報処理装置

Legal Events

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