本発明は、主記憶装置と中央処理装置との間に介在して主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置に関し、特に、ループにより命令を繰り返し供給する場合において、主記憶装置へのアクセスを省略しても命令を供給することができる命令供給装置に関する。
従来、主記憶装置と中央処理装置との間に介在して主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置がある。
命令供給装置は、主記憶装置から読み出した命令を中央処理装置に効率的に供給するために、ループ用命令バッファと通常用命令バッファとを有する。そして、ループブロックの命令を供給する場合には、主記憶装置へのアクセスを省略して、ループ用命令バッファから中央処理装置に供給する(例えば、特許文献1参照。)。
「ループ用命令バッファ」とは、ループブロックを蓄積するバッファをいう。
「ループブロック」とは、ループにより繰り返し供給される命令列をいう。
「通常用命令バッファ」とは、通常ブロックを蓄積するバッファをいう。
「通常ブロック」とは、ループブロック以外の命令列をいう。
特開昭63−314644号公報
しかしながら、前記従来の技術においては、ループブロックの命令をループ用命令バッファだけで供給するため、ループブロックが多数の命令で構成されている場合には、ループ用命令バッファの容量を予め大きめに確保しておく必要がある。結果、ループ用命令バッファの容量が大きければ、ハードウェア量も増大するという問題がある。さらに、複数のループに対応するために、複数のループ用命令バッファを有すれば、より顕著にハードウェア量が増大するという問題がある。
そこで、本発明は、前記問題に鑑みてなされたものであり、少ないハードウェア量でループを形成する命令列を効率的に供給する命令供給装置を提供することを目的とする。
前記目的を達成するために、本発明に係る命令供給装置は、(a)主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置であって、(b)前記主記憶装置に格納されている命令列のうち、前記中央処理装置に繰り返し供給される第1の命令列を前記中央処理装置に再度供給する前に、前記第1の命令列の先頭部分である第1の部分命令列を蓄積する第1のバッファと、(c)前記第1の命令列を前記中央処理装置に繰り返し供給する際に、前記第1のバッファに蓄積されている前記第1の部分命令列を前記中央処理装置に供給しながら、前記第1の部分命令列に後続する第2の部分命令列を蓄積する第2のバッファと、(d)前記第1の部分命令列の全てを前記中央処理装置に供給すると、前記第2のバッファに蓄積されている第2の部分命令列から、前記第1の部分命令列の後続命令を前記中央処理装置に供給する選択手段とを備えることとする。
これによって、ループブロックの命令列を一つのバッファに蓄積する場合と比べて、二つ以上のバッファに分けて蓄積することができ、これ等のバッファが全て更新されない限り、更新されずにバッファに蓄積されている命令列を再利用することができる。そして、ループの後半部分をループ実行時にバックグラウンドでバッファに格納することによって、ループ全体を常時バッファに保持しなくても、ループ時には全てバッファに保持されている状態と同等となり、効率的な命令を供給することができる。
例えば、8語分の命令を二つのバッファに半分ずつ蓄積して、一つのバッファが更新されても、他のバッファが更新されていなければ、更新されずに他のバッファに蓄積している4語分の命令を再利用することができる。そして、8語分の命令を主記憶装置から再度読み出すことなく、更新された4語の命令を主記憶装置から再度読み出すだけでよく、主記憶装置にアクセスする時間も短くすることができる。
または、(a)前記命令供給装置は、さらに、(b)前記主記憶装置に格納されている命令列のうち、前記第1の命令列以外で前記中央処理装置に繰り返し供給される第2の命令列を前記中央処理装置に再度供給する前に、前記第2の命令列の先頭部分である第3の部分命令列を蓄積する第3のバッファを備え、(c)前記第2の命令列を前記中央処理装置に繰り返し供給する際に、前記第3のバッファに蓄積されている前記第3の部分命令列を前記中央処理装置に供給しながら、前記第3の部分命令列に後続する第4の部分命令列を前記第2のバッファに蓄積し、(d)前記選択手段は、前記第3の部分命令列の全てを前記中央処理装置に供給すると、前記第2のバッファに蓄積されている第4の部分命令列から、前記第3の部分命令列の後続命令を前記中央処理装置に供給することとしてもよい。
これによって、ループを形成する第1の命令列以外の第2の命令列を供給する際に用いられるバッファと、第1の命令列の先頭部分である部分命令列に結合される部分命令列を蓄積するバッファとを共用することができる。この場合において、バッファの追加なしに、より多数の命令を含む命令列を効率的に供給することができる。
なお、本発明は、命令供給装置として実現されるだけではなく、命令供給装置を制御する方法(以下、命令供給方法と呼称する。)等として実現されるとしてもよい。また、命令供給装置によって提供される機能(以下、命令供給機能と呼称する。)が組み込まれたLSI、命令供給機能をFPGA、CPLD等のプログラマブル・ロジック・デバイスに形成するIPコア(以下、命令供給コアと呼称する。)、及び命令供給コアを記録した記録媒体等として実現されるとしてもよい。
以上、本発明に係る命令供給装置によれば、ループ用命令バッファの容量以上のループブロックに対しても、主記憶装置へのアクセスを省略し、効率的に命令を供給することができる。そして、複数のループ用命令バッファを有する場合には、ハードウェア量の増加を抑止することができる。さらに、主記憶装置へのアクセスが省略されることによって、主記憶装置に対するアクセス待ちが回避され、中央処理装置における実行処理の性能を向上することができる。また、主記憶装置に対するアクセス頻度が低減され、消費電力の増大を抑制することができる。
図1は、実施の形態1における命令供給装置の構成を示す図である。
図2は、実施の形態1における命令供給装置において主記憶装置から命令をフェッチする際の処理を示す図である。
図3は、主記憶装置に格納されている命令列の一例を示す図である。
図4Aは、実施の形態1における命令供給装置の動作例を示す第1の図である。
図4Bは、実施の形態1における命令供給装置の動作例を示す第2の図である。
図4Cは、実施の形態1における命令供給装置の動作例を示す第3の図である。
図4Dは、実施の形態1における命令供給装置の動作例を示す第4の図である。
図5Aは、実施の形態1における命令供給装置の動作例を示す第5の図である。
図5Bは、実施の形態1における命令供給装置の動作例を示す第6の図である。
図5Cは、実施の形態1における命令供給装置の動作例を示す第7の図である。
図5Dは、実施の形態1における命令供給装置の動作例を示す第8の図である。
図6Aは、実施の形態1における命令供給装置の動作例を示す第9の図である。
図6Bは、実施の形態1における命令供給装置の動作例を示す第10の図である。
図6Cは、実施の形態1における命令供給装置の動作例を示す第11の図である。
図6Dは、実施の形態1における命令供給装置の動作例を示す第12の図である。
図7Aは、実施の形態1における命令供給装置の動作例を示す第13の図である。
図7Bは、実施の形態1における命令供給装置の動作例を示す第14の図である。
図8は、実施の形態2における命令供給装置の構成を示す図である。
図9は、実施の形態2における命令供給装置において主記憶装置から命令をフェッチする際の処理を示す図である。
図10Aは、実施の形態2における命令供給装置の動作例を示す第1の図である。
図10Bは、実施の形態2における命令供給装置の動作例を示す第2の図である。
図10Cは、実施の形態2における命令供給装置の動作例を示す第3の図である。
図10Dは、実施の形態2における命令供給装置の動作例を示す第4の図である。
図10Eは、実施の形態2における命令供給装置の動作例を示す第5の図である。
図10Fは、実施の形態2における命令供給装置の動作例を示す第6の図である。
図10Gは、実施の形態2における命令供給装置の動作例を示す第7の図である。
図10Hは、実施の形態2における命令供給装置の動作例を示す第8の図である。
図11Aは、実施の形態2における命令供給装置の動作例を示す第9の図である。
図11Bは、実施の形態2における命令供給装置の動作例を示す第10の図である。
図11Cは、実施の形態2における命令供給装置の動作例を示す第11の図である。
図11Dは、実施の形態2における命令供給装置の動作例を示す第12の図である。
図11Eは、実施の形態2における命令供給装置の動作例を示す第13の図である。
図11Fは、実施の形態2における命令供給装置の動作例を示す第14の図である。
図11Gは、実施の形態2における命令供給装置の動作例を示す第15の図である。
図11Hは、実施の形態2における命令供給装置の動作例を示す第16の図である。
図12Aは、実施の形態2における命令供給装置の動作例を示す第17の図である。
図12Bは、実施の形態2における命令供給装置の動作例を示す第18の図である。
符号の説明
1 主記憶装置
10,20 中央処理装置
100,200 マイクロプロセッサ
101,201 命令供給装置
111,211 メモリインターフェース
112,212 通常用命令バッファ
113 ループ用命令バッファ
114 ループ用命令バッファ
115 結合用命令バッファ
116,216 選択回路
213 閾値レジスタ
(実施の形態1)
以下、本発明に係る実施の形態1について図面を参照しながら説明する。
本発明に係る実施の形態1における命令供給装置は、メモリインターフェースを介して主記憶装置から先行して読み出した命令をバッファに蓄積しつつ、バッファに蓄積している命令列から命令を中央処理装置に供給する。このとき、ループにより繰り返し命令を供給する命令列(以下、ループブロックと呼称する。)以外の命令列(以下、通常ブロックと呼称する。)については、通常用命令バッファに蓄積する。また、ループブロックについては、分割してループ用命令バッファと結合用命令バッファとに蓄積する。そして、ループブロックの命令を中央処理装置に供給する場合には、ループ用命令バッファと結合用命令バッファとに蓄積している命令列を結合した命令列を中央処理装置に供給することを特徴とする。
「通常ブロック」とは、主記憶装置に格納されている命令列のうち、ループブロック以外のブロックをいう。
「ループブロック」とは、主記憶装置に格納されている命令列のうち、繰り返し実行される命令が格納されているブロックをいう。
以上の点を踏まえて本発明に係る実施の形態1における命令供給装置について説明する。
先ず、実施の形態1における命令供給装置の構成について説明する。
図1に示されるように、命令供給装置101は、マイクロプロセッサ100の中に一緒に実装された中央処理装置10の指示に応じて、マイクロプロセッサ100と接続されている主記憶装置1から命令を読み出し、中央処理装置10に供給する。ここでは、一例として、メモリインターフェース111、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、結合用命令バッファ115、及び選択回路116等を備える。
メモリインターフェース111は、中央処理装置10からの指示に応じて、主記憶装置1から命令を読み出し、読み出した命令を通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、結合用命令バッファ115のいずれかに蓄積する。
通常用命令バッファ112は、通常ブロックから読み出された命令を4語分蓄積するバッファである。
ループ用命令バッファ113は、ループブロックから読み出された命令を4語分蓄積するバッファである。
ループ用命令バッファ114は、ループブロックから読み出された命令を4語分蓄積するバッファである。
結合用命令バッファ115は、ループ用命令バッファ113及びループ用命令バッファ114のいずれかに結合する。ループ用命令バッファ113に結合する場合には、ループ用命令バッファ113に蓄積している命令列の後続命令を4語分蓄積する。ループ用命令バッファ114に結合する場合には、ループ用命令バッファ114に蓄積している命令列の後続命令を4語分蓄積するバッファである。
選択回路116は、中央処理装置10からの指示に応じて、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、結合用命令バッファ115のいずれかを命令の供給源に選択する。
続いて、実施の形態1における命令供給装置において主記憶装置から命令をフェッチする際の処理について説明する。
図2に示されるように、命令供給装置101は、中央処理装置10から指示を受けた場合において(ステップS101:Yes)、空きサイクルを見計らい(ステップS102:Yes)、通常用命令バッファ112、ループ用命令バッファ113、114、結合用命令バッファ115の中から、指示を受けたバッファに空きがある場合には(ステップS103:Yes)、主記憶装置1から命令をフェッチする(ステップS104)。
なお、指示を受けていないバッファは、指示待ち状態である。
続いて、中央処理装置10と命令供給装置101との動作について説明する。
ここでは、図3に示されるように、主記憶装置1に格納されている命令列として、通常ブロック121、123、125、ループブロック122、ループブロック124から構成される命令列を一例として説明する。
通常ブロック121は、上から下に向かって並んでいる命令列(I#1〜I#7、LSI#1)から構成されている。
I#1〜I#7は、ループストア命令、分岐命令以外の命令である。
LSI#1は、I#8からループブロック122が開始することが示されるループストア命令である。
ループブロック122は、上から下に向かって並んでいる命令列(I#8〜I#13、BI#1)から構成されている。
I#8〜I#13は、ループストア命令、分岐命令以外の命令である。
BI#1は、I#8に分岐する条件付の分岐命令である。
通常ブロック123は、上から下に向かって並んでいる命令列(I#14〜I#21、LSI#2)から構成されている。
I#14〜I#21は、ループストア命令、分岐命令以外の命令である。
LSI#2は、I#22からループブロック124が開始することが示されるループストア命令である。
ループブロック124は、上から下に向かって並んでいる命令列(I#22〜I#26、BI#2)から構成されている。
I#22〜I#26は、ループストア命令、分岐命令以外の命令である。
BI#2は、I#22に分岐する条件付の分岐命令である。
通常ブロック125は、上から下に向かって並んでいる命令列(I#27〜I#32)から構成されている。
I#27〜I#32は、ループストア命令、分岐命令以外の命令である。
「ループストア命令」とは、例えば、下記の命令で示されるように、labelによって特定されるアドレスからループブロックが開始することが示される命令である。
[命令]Loopstore label,buff
なお、ループブロックから読み出した命令を蓄積するバッファがbuff値によって指定される。ここでは、buff値が0の場合には、ループ用命令バッファ113に蓄積し、buff値が1の場合には、ループ用命令バッファ114に蓄積する。
なお、LSI#1については、buff値が0の場合として、中央処理装置10は、ループブロック122の先頭部分がループ用命令バッファ113に蓄積することを、命令供給装置101に指示する。
また、LSI#2については、buff値が1の場合として、中央処理装置10は、ループブロック124の先頭部分がループ用命令バッファ114に蓄積することを、命令供給装置101に指示する。
続いて、中央処理装置10の動作について説明する。
中央処理装置10は、一例として挙げた命令列(図3参照。)を実行するにあたり、下記(1)〜(6)の場合に応じて処理を行う。
(1)中央処理装置10は、通常ブロックの命令を実行する場合には、通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。さらに、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
(2)中央処理装置10は、ループストア命令を実行した場合には、通常用命令バッファ112への蓄積が行われていない時に、ループストア命令によって特定されるループブロックの先頭から一定量の命令をループストア命令によって指示されたループ用命例バッファに蓄積することをメモリインターフェース111に指示する。
(3)中央処理装置10は、繰り返し供給される場合を除き、分岐命令の実行によってループ用命令バッファから供給された命令を実行する場合には、そのループ用命令バッファに蓄積している命令列の後続命令を結合用命令バッファ115に蓄積することを、メモリインターフェース111に指示する。
(4)中央処理装置10は、ループ用命令バッファから全ての命令が供給された場合には、後続の命令の供給源に結合用命令バッファ115を選択することを、選択回路116に指示する。
(5)中央処理装置10は、繰り返し供給される場合を除き、結合用命令バッファ115から供給された命令を実行する場合には、結合用命令バッファ115に蓄積している命令列の後続命令を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。
(6)中央処理装置10は、分岐命令を実行してその分岐命令によって指定されたアドレスに分岐する場合には、そのアドレスによって特定される命令を蓄積しているループ用命令バッファを選択することを、選択回路116に指示する。一方、分岐せずに結合用命令バッファ115から全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
続いて、命令供給装置101の動作について説明する。
命令供給装置101は、中央処理装置10からの指示に応じて各構成要素が下記の様に振る舞う。
メモリインターフェース111は、主記憶装置1から命令を読み出し、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、及び結合用命令バッファ115のいずれかに読み出した命令を蓄積する。
選択回路116は、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、及び結合用命令バッファ115のいずれかを命令の供給源に選択する。
そして、命令の供給源に選択されたバッファは、選択回路116を介して中央処理装置10に、そのバッファに蓄積している命令を供給する。
ここでは、一例としてあげた命令列(図3参照。)を用いながら、中央処理装置10と命令供給装置101との動作について説明する。
図4A〜図7Bに示されるように、命令供給装置101は、下記(1)〜(12)の場合に応じた処理を行う。
(1)中央処理装置10は、通常ブロック121の命令を実行する場合には、通常ブロック121の命令列(I#1〜I#7、LSI#1)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#1〜I#7、LSI#1)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#1〜I#7、LSI#1)を供給する(図4A参照。)。
(2)中央処理装置10は、分岐命令により繰り返し供給される場合を除き、ループブロック122の命令を実行する場合には、命令列(I#8〜I#14)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。また、ループストア命令(LSI#1)を実行した場合には、ループストア命令(LSI#1)のbuff値が0により、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)をループ用命令バッファ113に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#8〜I#14)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#8〜BI#1)を供給する。これと同時にバックグランドで、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)を読み出し、読み出した命令列(I#8〜I#11)をループ用命令バッファ113に蓄積する(図4B、図4C参照。)。
(3)中央処理装置10は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐する場合には、ループ用命令バッファ113に蓄積している命令列(I#8〜I#11)の後続命令(I#12〜I#14)を結合用命令バッファ115に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#12〜I#14)を読み出して結合用命令バッファ115に蓄積する。さらに、選択回路116は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ113は、選択回路116を介して中央処理装置10に命令列(I#8〜I#11)を供給する(図4D参照。)。
(4)中央処理装置10は、ループ用命令バッファ113から全ての命令が供給された場合には、後続の命令の供給源に結合用命令バッファ115を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に結合用命令バッファ115を選択する。結合用命令バッファ115は、選択回路116を介して中央処理装置10に命令列(I#12〜I#14)を供給する(図5A参照。)。
(5)中央処理装置10は、結合用命令バッファ115への命令の蓄積が完了した場合には、結合用命令バッファ115に蓄積している命令列(I#12〜I#14)の後続命令(I#15〜I#17)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#15〜I#18)を読み出して通常用命令バッファ112に蓄積する(図5B参照。)。
(6)中央処理装置10は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐せずに、結合用命令バッファ115から全ての命令(I#12〜I#14)が供給された場合には、後続の命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#15〜I#18)を供給する(図5C参照。)。
(7)中央処理装置10は、通常ブロック123の命令を実行する場合には、通常ブロック123の命令列(I#19〜I#21、LSI#2)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#19〜I#21、LSI#2)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#19〜I#21、LSI#2)を供給する(図5D参照。)。
(8)中央処理装置10は、分岐命令により繰り返し供給される場合を除き、ループブロック124の命令を実行する場合には、命令列(I#22〜I#28)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。さらに、中央処理装置10は、ループストア命令(LSI#2)を実行した場合には、ループストア命令(LSI#2)のbuff値が1により、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)をループ用命令バッファ114に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#22〜I#25)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#22〜I#25)を供給する。これと同時にバックグランドで、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)を読み出し、読み出した命令列(I#22〜I#25)をループ用命令バッファ114に蓄積する(図6A、図6B参照。)。
(9)中央処理装置10は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐する場合には、ループ用命令バッファ114に蓄積している命令列(I#22〜I#25)の後続命令(I#26〜I#28)を結合用命令バッファ115に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#26〜I#28)を読み出して結合用命令バッファ115に蓄積する。さらに、選択回路116は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ114は、選択回路116を介して中央処理装置10に命令列(I#22〜I#25)を供給する(図6C参照。)。
(10)中央処理装置10は、ループ用命令バッファ114から全ての命令が供給された場合には、後続の命令の供給源に結合用命令バッファ115を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に結合用命令バッファ115を選択する。結合用命令バッファ115は、選択回路116を介して中央処理装置10に命令列(I#26〜I#28)を供給する(図6D参照。)。
(11)中央処理装置10は、結合用命令バッファ115への命令の蓄積が完了した場合には、結合用命令バッファ115に蓄積している命令列(I#26〜I#28)の後続命令(I#29〜I#32)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#29〜I#32)を読み出して通常用命令バッファ112に蓄積する(図7A参照。)。
(12)中央処理装置10は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐せずに、結合用命令バッファ115から全ての命令(I#26〜I#28)が供給された場合には、後続の命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#29〜I#32)を供給する(図7B参照。)。
以上、説明したように本発明の実施の形態1における命令供給装置によれば、ループブロックの命令列を一つのバッファに蓄積する場合と比べて、二つ以上のバッファに分けて蓄積することができ、これ等のバッファが全て更新されない限り、更新されずにバッファに蓄積されている命令列を再利用することができる。そして、ループの後半部分をループ実行時にバックグラウンドでバッファに格納することによって、ループ全体を常時バッファに保持しなくても、ループ時には全てバッファに保持されている状態と同等となり、効率的な命令を供給することができる。
例えば、8語分の命令を二つのバッファに半分ずつ蓄積し、そのうちの一つのバッファが更新されても、他のバッファが更新されていなければ、更新されずに他のバッファに蓄積している4語分の命令を再利用することができる。そして、8語分の命令を主記憶装置から再度読み出すことなく、更新された4語の命令を主記憶装置から再度読み出すだけでよく、主記憶装置にアクセスする時間も短くすることができる。そして、ループ用命令バッファおよび結合用命令バッファの合計語数である8語までのループブロックに対して、繰り返し供給する際には、主記憶装置にアクセスせずにループブロックの命令を供給することができる。
同様に、結合用命令バッファの代わりに、もう一つのループ用命令バッファを用いた場合においても、8語までのループブロックに対して、繰り返し供給する際には、主記憶装置にアクセスせずにループブロックの命令を供給することができる。
なお、8語のループブロック二つに対して、ループ中に主記憶装置にアクセスせずに供給するには、従来の構成においては、8語分のループ用命令バッファを2つ設ける必要があり、計16語分の命令バッファが必要となる。これに対して、本発明の実施の形態1においては、ループ用命令バッファ112、ループ用命令バッファ114、及び結合用命令バッファ115の計12語分の命令バッファを用いて、同等の機能を実現することができ、より少ないハードウェア量でループブロックに対して効率的に命令を供給することができる。
(実施の形態2)
次に、本発明に係る実施の形態2について図面を参照しながら説明する。なお、実施の形態1と同一の構成については説明を省略する。
本発明に係る実施の形態2における命令供給装置は、命令供給装置101(図1参照。)と比べて、結合用命令バッファ115を備えない代わりに、通常用命令バッファ112と結合用命令バッファ115とを兼用する通常用命令バッファを備える点が異なる。
具体的には、実施の形態2における通常命令バッファは、通常ブロックの命令を供給する場合には、通常用命令バッファ112のように機能し、ループブロックの命令を供給する場合には、結合用命令バッファ115のように機能する。
以上の点を踏まえて本発明に係る実施の形態2における命令供給装置について説明する。
先ず、本発明に係る実施の形態2における命令供給装置の構成について説明する。
図8に示されるように、命令供給装置201は、命令供給装置101(図1参照。)と比べて、下記(1)〜(5)の点が異なる。
(1)メモリインターフェース111の代わりにメモリインターフェース211を備える。
メモリインターフェース211は、中央処理装置20からの指示に応じて、主記憶装置1から命令を読み出し、読み出した命令を通常用命令バッファ212、ループ用命令バッファ213のいずれかに蓄積する。
(2)通常用命令バッファ112の代わりに通常用命令バッファ212を備える。
通常用命令バッファ212は、通常ブロックの命令を供給する場合には、通常用命令バッファ112のように、通常ブロックから読み出された命令を4語分蓄積する。また、ループブロックの命令を供給する場合には、結合用命令バッファ115のように、ループ用命令バッファ213に蓄積している命令列の後続命令を4語分蓄積する。
(3)選択回路116の代わりに選択回路216を備える。
選択回路216は、中央処理装置10からの指示に応じて、通常用命令バッファ212、ループ用命令バッファ213のいずれかを命令の供給源に選択する。
(4)新たに閾値レジスタ213を備える。
閾値レジスタ213は、通常用命令バッファ212がループブロックの命令を供給中に、通常用命令バッファ212の空き領域の容量が所定の容量に至ったか否かを判断する際に参照される閾値を保持する。
(5)ループ用命令バッファ114、結合用命令バッファ115を備えない。
命令供給装置201には、ループ用命令バッファが1つしか存在しないために、ループストア命令のbuff値、すなわち、バッファを選択する情報については無視する。
続いて、実施の形態2における命令供給装置において主記憶装置から命令をフェッチする際の処理について説明する。
図9に示されるように、通常用命令バッファ212は、ループ用命令バッファ113に蓄積されている命令列の後続命令を供給中の場合には(ステップS201:Yes)、命令供給に伴うバッファの空き領域が所定の閾値(ここでは、2語とする。)を超えるまでは(ステップS202)、新たな命令を蓄積しない。
続いて、中央処理装置20の動作について説明する。
中央処理装置20は、実施の形態1において一例として挙げた命令列(図3参照。)を実行するにあたり、下記(1)〜(5)の場合に応じて処理を行う。
(1)中央処理装置20は、通常ブロックの命令を実行する場合には、通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。さらに、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
(2)中央処理装置20は、ループストア命令を実行した場合には、通常用命令バッファ212への蓄積が行われていない時に、ループストア命令によって特定されるループブロックの先頭から一定量の命令をループ用命例バッファ113に蓄積することをメモリインターフェース211に指示する。
(3)中央処理装置20は、分岐命令の実行により、ループ用命令バッファ113から供給された命令を実行する場合には、ループ用命令バッファ113に蓄積している命令列の後続命令を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
(4)中央処理装置20は、ループ用命令バッファから全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
(5)中央処理装置20は、分岐命令を実行してその分岐命令によって指定されたアドレスに分岐する場合には、ループ用命令バッファ113を選択することを、選択回路216に指示する。一方、分岐せずに通常用命令バッファ112から残りの命令が供給された場合には、通常用命令バッファ212に蓄積している命令列の後続命令を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
続いて、命令供給装置201の動作について説明する。
命令供給装置201は、中央処理装置20からの指示を受けたメモリインターフェース211によって、主記憶装置1から命令を先行して読み出し、通常用命令バッファ212とループ用命令バッファ113のいずれかに読み出した命令を蓄積する。また、選択回路216において、通常用命令バッファ212とループ用命令バッファ113のいずれかを命令の供給源に選択する。そして、命令の供給源に選択されたバッファは、選択回路216を介して中央処理装置20に、そのバッファに蓄積している命令を供給する。
なお、通常用命令バッファ212は、ループブロックの命令を供給中に、命令を供給することによって生じた空き容量が閾値レジスタ213において保持されている閾値を超えると、主記憶装置1から後続の命令を読み出して蓄積する処理を再開する。
そして、通常用命令バッファ212は、ループブロックの命令を供給する場合、すなわち、ループ供給用命令バッファ113に後続命令を供給する場合には、命令の供給に伴い自身のバッファに空き領域ができても、その空き領域がこの閾値(例えば、2語とする。)を超えるまでは、新たな命令を主記憶装置1から読み出して蓄積しない。このことにより、ループ供給用命令バッファ113に後続命令を保持し続ける。
ここでは、一例として挙げた命令列(図3参照。)を用いながら、中央処理装置20と命令供給装置201との動作について説明する。
図10A〜図12Bに示されるように、命令供給装置201は、下記(1)〜(12)の場合に応じた処理を行う。
(1)中央処理装置20は、通常ブロック121の命令を実行する場合には、通常ブロック121の命令列(I#1〜I#7、LSI#1)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#1〜I#7、LSI#1)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#1〜I#7、LSI#1)を供給する(図10A参照。)。
(2)中央処理装置20は、分岐命令により繰り返し供給される場合を除き、ループブロック122の命令を実行する場合には、命令列(I#8〜I#14)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。また、ループストア命令(LSI#1)を実行した場合には、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)をループ用命令バッファ113に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#8〜I#14)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#8〜I#11)を供給する。これと同時にバックグラウンドで、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)を読み出し、読み出した命令列(I#8〜I#11)をループ用命令バッファ113に蓄積する(図10B、図10C参照。)。
(3)中央処理装置20は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐する場合には、ループ用命令バッファ113に蓄積している命令列(I#8〜I#11)の後続命令(I#12〜I#14)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#12〜I#14)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#8〜I#11)を供給する(図10D参照。)。
(4)中央処理装置20は、ループ用命令バッファ113から全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令(I#12、I#13)を供給する(図10E参照。)。
さらに、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令を供給する。このとき、中央処理装置20に命令を供給することによって生じた通常用命令バッファ212の空き領域が閾値を超えているため、通常用命令バッファ212に蓄積している命令列(I#12〜I#14)の後続命令(I#15、I#16)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#15、I#16)を読み出して通常用命令バッファ212に蓄積する(図10F参照。)。
(5)中央処理装置20は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐する場合には、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。それから、ループ用命令バッファ113に蓄積している命令列(I#8〜I#11)の後続命令(I#12、I#13)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。さらに、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#8〜I#11)を供給する。そして、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#12、I#13)を読み出して通常用命令バッファ212に蓄積する(図10G参照。)。
(6)中央処理装置20は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐せずに、通常用命令バッファ212から全ての命令(I#12〜I#14)が供給された場合には、通常用命令バッファ212に蓄積している命令列(I#12〜I#14)の後続命令(I#15〜I#18)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#15〜I#18)を読み出して通常用命令バッファ212に蓄積する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#15〜I#18)を供給する(図10H、図11A参照。)。
(7)中央処理装置20は、通常ブロック121の命令を実行する場合には、通常ブロック121の命令列(I#19〜I#21、LSI#2)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#19〜I#21、LSI#2)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#19〜I#21、LSI#2)を供給する(図11B参照。)。
(8)中央処理装置20は、分岐命令により繰り返し供給される場合を除き、ループブロック124の命令を実行する場合には、命令列(I#22〜I#25)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。また、ループストア命令(LSI#2)を実行した場合には、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)をループ用命令バッファ113に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#22〜I#25)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#22〜BI#2)を供給する。これと同時にバックグランドで、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)を読み出し、読み出し命令列(I#22〜I#25)をループ用命令バッファ113に蓄積する(図11C、図11D参照。)。
(9)中央処理装置20は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐する場合には、ループ用命令バッファ113に蓄積している命令列(I#22〜I#25)の後続命令(I#26〜I#28)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#26〜I#28)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#22〜I#25)を供給する(図11E参照。)。
(10)中央処理装置20は、ループ用命令バッファ113から全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令(I#26、BI#2)を供給する(図11F参照。)
さらに、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令を供給する。このとき、中央処理装置20に命令を供給することによって生じた通常用命令バッファ212の空き領域が閾値を超えていないため、通常用命令バッファ212に蓄積している命令列(I#26〜I#28)の後続命令(I#29、I#30)を通常用命令バッファ212に生じた空き領域に蓄積することを、メモリインターフェース211に指示しない(図11G参照。)。
(11)中央処理装置20は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐する場合には、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。
これに応じて、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。さらに、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#22〜I#25)を供給する(図11H参照。)
(12)中央処理装置20は、分岐命令(BI#2)を実行してループブロック122の開始アドレスに分岐せずに、通常用命令バッファ212から全ての命令(I#26〜I#28)が供給された場合には、通常用命令バッファ212に蓄積している命令列(I#26〜I#28)の後続命令(I#29〜I#32)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#29〜I#32)を読み出して通常用命令バッファ212に蓄積する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#29〜I#32)を供給する(図12A、図12B参照。)。
以上、説明したように命令供給装置201によれば、6語までのループブロックに対しては、主記憶装置1にアクセスせずとも、繰り返し命令を供給することができる。
例えば、従来の構成で同等の結果を実現する場合には、4語分の命令を蓄積する通常用命令バッファとは別に、6語分の命令を蓄積するループ用命令バッファが必要である。すなわち、合計して10語分の命令を蓄積するバッファが必要である。
しかし、命令供給装置201によれば、4語分の命令を蓄積する通常用命令バッファ212を有効に活用することによって、6語分のループブロックのうち4語分の命令をループ用命令バッファ113に蓄積し、残り2語分の命令を通常用命令バッファ212に蓄積することができる。すなわち、6語分のループブロックを一括して蓄積するループ用命令バッファを設ける必要がなく、4語分の命令を蓄積する通常用命令バッファ212と、4語分の命令を蓄積するループ用命令バッファ113だけが必要であり、合計して8語分の命令を蓄積するバッファが必要である。そして、従来の構成と比べると、2語分のバッファが削減されている。
(その他)
なお、閾値レジスタ213において保持されている閾値は、プログラムによって設定できるとしてもよい。また、通常用命令バッファ212の容量内で設定できるとしてもよい。これに伴い、プログラムの特定に合わせた命令を供給することができる。そして、この閾値を大きくすることによって、ループブロックの命令に対しては、割り当てられる容量が大きくなり、効率的に供給することができる。その反面、そのループブロックに後続する命令列に対しては、割り当てられる容量が小さくなり、そのループブロックと一緒に通常用命令バッファ212に蓄積できる命令数が少なくなるというトレードオフがある。
なお、命令供給装置は、フルカスタムLSI(Large Scale Integration)によって実現されるとしてもよい。また、ASIC(Application Specific Integrated Circuit)等のようなセミカスタムLSIによって実現されるとしてもよい。また、FPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)等のようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
さらに、命令供給装置を構成する1乃至2以上の機能を、これ等のLSIに形成する設計データは、VHDL(Very high speed integrated circuit Hardware Description Language)、Verilog−HDL、SystemC等のようなハードウェア記述言語によって記述されたプログラム(以下、HDLプログラムと呼称する。)としてもよい。また、HDLプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。
さらに、設計データは、コンピュータシステム、組み込みシステム等のようなハードウェアシステムに読み出され得るように、光学記録媒体(例えば、CD−ROM等。)、磁気記録媒体(例えば、ハードディスク等。)、光磁気記録媒体(例えば、MO等。)、半導体メモリ(例えば、RAM等。)等のようなコンピュータ読み取り可能な記録媒体に記録しておくとしてもよい。そして、記録媒体を介して他のハードウェアタシステムに読み取られた設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。
または、設計データは、ネットワーク等のような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアタシステムに取得された設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。
または、論理合成、配置、配線された設計データは、通電時にFPGAに転送され得るように、シリアルROMに記録しておくとしてもよい。そして、シリアルROMに記録された設計データは、通電時に、直接、FPGAにダウンロードされるとしてもよい。
本発明は、主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置等として、特に、ループ用命令バッファの容量を増加させることなく、より多数の命令によるループについて主記憶装置へのアクセスを行うことなく命令供給を行う命令供給装置等として、利用することができる。
【0002】
[0009]
そこで、本発明は、前記問題に鑑みてなされたものであり、少ないハードウェア量でループを形成する命令列を効率的に供給する命令供給装置を提供することを目的とする。
【課題を解決するための手段】
[0010]
前記目的を達成するために、本発明に係る命令供給装置は、(a)主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置であって、(b)前記主記憶装置に格納されている命令列のうち、前記中央処理装置に繰り返し供給される第1の命令列を前記中央処理装置に再度供給する前に、前記第1の命令列の先頭部分である第1の部分命令列を蓄積する第1のバッファと、(c)前記第1の命令列を前記中央処理装置に繰り返し供給する際に、前記第1のバッファに蓄積されている前記第1の部分命令列を前記中央処理装置に供給しながら、前記第1の部分命令列に後続する第2の部分命令列を蓄積する第2のバッファと、(d)前記第1の部分命令列の全てを前記中央処理装置に供給すると、前記第2のバッファに蓄積されている第2の部分命令列から、前記第1の部分命令列の後続命令を前記中央処理装置に供給する選択手段とを備え、前記第1の命令列の所在と、前記第1の部分命令列を前記第1のバッファに蓄積することが特定される情報が含まれる第1の命令が前記主記憶装置に格納されており、前記第1の命令を実行した前記中央処理装置から、前記第1の命令に含まれる情報に基づいた指示を受けて、前記第1の部分命令列を前記第1のバッファに蓄積することとする。
[0011]
これによって、ループブロックの命令列を一つのバッファに蓄積する場合と比べて、二つ以上のバッファに分けて蓄積することができ、これ等のバッファが全て更新されない限り、更新されずにバッファに蓄積されている命令列を再利用することができる。そして、ループの後半部分をループ実行時にバックグラウンドでバッファに格納することによって、ループ全体を常時バッファに保持しなくても、ループ時には全てバッファに保持されている状態と同等となり、効率的な命令を供給することができる。
[0012]
例えば、8語分の命令を二つのバッファに半分ずつ蓄積して、一つのバッファが更新されても、他のバッファが更新されていなければ、更新されずに他のバッファに蓄積している4語分の命令を再利用することができる。そして、8語分の命令を主記憶装置から再度読み出すことなく、更新された4語の命令を主記憶装置から再度読み出すだけでよく、主記憶装置にアクセスする時間も短くすることができる。
[0013]
または、(a)前記命令供給装置は、さらに、(b)前記主記憶装置に格納されている命令列のうち、前記第1の命令列以外で前記中央処理装置に繰り返し供給される第
【0003】
2の命令列を前記中央処理装置に再度供給する前に、前記第2の命令列の先頭部分である第3の部分命令列を蓄積する第3のバッファを備え、(c)前記第2の命令列を前記中央処理装置に繰り返し供給する際に、前記第3のバッファに蓄積されている前記第3の部分命令列を前記中央処理装置に供給しながら、前記第3の部分命令列に後続する第4の部分命令列を前記第2のバッファに蓄積し、(d)前記選択手段は、前記第3の部分命令列の全てを前記中央処理装置に供給すると、前記第2のバッファに蓄積されている第4の部分命令列から、前記第3の部分命令列の後続命令を前記中央処理装置に供給し、前記第2の命令列の所在と、前記第3の部分命令列を前記第3のバッファに蓄積することが特定される情報が含まれる第2の命令が前記主記憶装置に格納されており、前記第2の命令を実行した前記中央処理装置から、前記第2の命令に含まれる情報に基づいた指示を受けて、前記第3の部分命令列を前記第3のバッファに蓄積することとしてもよい。
[0014]
これによって、ループを形成する第1の命令列以外の第2の命令列を供給する際に用いられるバッファと、第1の命令列の先頭部分である部分命令列に結合される部分命令列を蓄積するバッファとを共用することができる。この場合において、バッファの追加なしに、より多数の命令を含む命令列を効率的に供給することができる。
[0015]
なお、本発明は、命令供給装置として実現されるだけではなく、命令供給装置を制御する方法(以下、命令供給方法と呼称する。)等として実現されるとしてもよい。また、命令供給装置によって提供される機能(以下、命令供給機能と呼称する。)が組み込まれたLSI、命令供給機能をFPGA、CPLD等のプログラマブル・ロジック・デバイスに形成するIPコア(以下、命令供給コアと呼称する。)、及び命令供給コアを記録した記録媒体等として実現されるとしてもよい。
【発明の効果】
[0016]
以上、本発明に係る命令供給装置によれば、ループ用命令バッファの容量以上のループブロックに対しても、主記憶装置へのアクセスを省略し、効率的に命令を供給することができる。そして、複数のループ用命令バッファを有する場合には、ハードウェア量の増加を抑止することができる。さらに、主記憶装置へのアクセスが省略されることによって、主記憶装置に対するアクセス待ちが回避され、中央処理装置における実行処理の性能を向上することができる。また、主記憶装置に対するアクセス頻度が低減され、消費電力の増大を抑制することができる。
【図面の簡単な説明】
[0017]
[図1]図1は、実施の形態1における命令供給装置の構成を示す図である。
本発明は、主記憶装置と中央処理装置との間に介在して主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置に関し、特に、ループにより命令を繰り返し供給する場合において、主記憶装置へのアクセスを省略しても命令を供給することができる命令供給装置に関する。
従来、主記憶装置と中央処理装置との間に介在して主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置がある。
命令供給装置は、主記憶装置から読み出した命令を中央処理装置に効率的に供給するために、ループ用命令バッファと通常用命令バッファとを有する。そして、ループブロックの命令を供給する場合には、主記憶装置へのアクセスを省略して、ループ用命令バッファから中央処理装置に供給する(例えば、特許文献1参照。)。
「ループ用命令バッファ」とは、ループブロックを蓄積するバッファをいう。
「ループブロック」とは、ループにより繰り返し供給される命令列をいう。
「通常用命令バッファ」とは、通常ブロックを蓄積するバッファをいう。
「通常ブロック」とは、ループブロック以外の命令列をいう。
特開昭63―314644号公報
しかしながら、前記従来の技術においては、ループブロックの命令をループ用命令バッファだけで供給するため、ループブロックが多数の命令で構成されている場合には、ループ用命令バッファの容量を予め大きめに確保しておく必要がある。結果、ループ用命令バッファの容量が大きければ、ハードウェア量も増大するという問題がある。さらに、複数のループに対応するために、複数のループ用命令バッファを有すれば、より顕著にハードウェア量が増大するという問題がある。
そこで、本発明は、前記問題に鑑みてなされたものであり、少ないハードウェア量でループを形成する命令列を効率的に供給する命令供給装置を提供することを目的とする。
前記目的を達成するために、本発明に係る命令供給装置は、(a)主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置であって、(b)前記主記憶装置に格納されている命令列のうち、前記中央処理装置に繰り返し供給される第1の命令列を前記中央処理装置に再度供給する前に、前記第1の命令列の先頭部分である第1の部分命令列を蓄積する第1のバッファと、(c)前記第1の命令列を前記中央処理装置に繰り返し供給する際に、前記第1のバッファに蓄積されている前記第1の部分命令列を前記中央処理装置に供給しながら、前記第1の部分命令列に後続する第2の部分命令列を蓄積する第2のバッファと、(d)前記第1の部分命令列の全てを前記中央処理装置に供給すると、前記第2のバッファに蓄積されている第2の部分命令列から、前記第1の部分命令列の後続命令を前記中央処理装置に供給する選択手段とを備え、前記第1の命令列の所在と、前記第1の部分命令列を前記第1のバッファに蓄積することが特定される情報が含まれる第1の命令が前記主記憶装置に格納されており、前記第1の命令を実行した前記中央処理装置から、前記第1の命令に含まれる情報に基づいた指示を受けて、前記第1の部分命令列を前記第1のバッファに蓄積することとする。
これによって、ループブロックの命令列を一つのバッファに蓄積する場合と比べて、二つ以上のバッファに分けて蓄積することができ、これ等のバッファが全て更新されない限り、更新されずにバッファに蓄積されている命令列を再利用することができる。そして、ループの後半部分をループ実行時にバックグラウンドでバッファに格納することによって、ループ全体を常時バッファに保持しなくても、ループ時には全てバッファに保持されている状態と同等となり、効率的な命令を供給することができる。
例えば、8語分の命令を二つのバッファに半分ずつ蓄積して、一つのバッファが更新されても、他のバッファが更新されていなければ、更新されずに他のバッファに蓄積している4語分の命令を再利用することができる。そして、8語分の命令を主記憶装置から再度読み出すことなく、更新された4語の命令を主記憶装置から再度読み出すだけでよく、主記憶装置にアクセスする時間も短くすることができる。
または、(a)前記命令供給装置は、さらに、(b)前記主記憶装置に格納されている命令列のうち、前記第1の命令列以外で前記中央処理装置に繰り返し供給される第2の命令列を前記中央処理装置に再度供給する前に、前記第2の命令列の先頭部分である第3の部分命令列を蓄積する第3のバッファを備え、(c)前記第2の命令列を前記中央処理装置に繰り返し供給する際に、前記第3のバッファに蓄積されている前記第3の部分命令列を前記中央処理装置に供給しながら、前記第3の部分命令列に後続する第4の部分命令列を前記第2のバッファに蓄積し、(d)前記選択手段は、前記第3の部分命令列の全てを前記中央処理装置に供給すると、前記第2のバッファに蓄積されている第4の部分命令列から、前記第3の部分命令列の後続命令を前記中央処理装置に供給し、前記第2の命令列の所在と、前記第3の部分命令列を前記第3のバッファに蓄積することが特定される情報が含まれる第2の命令が前記主記憶装置に格納されており、前記第2の命令を実行した前記中央処理装置から、前記第2の命令に含まれる情報に基づいた指示を受けて、前記第3の部分命令列を前記第3のバッファに蓄積することとしてもよい。
これによって、ループを形成する第1の命令列以外の第2の命令列を供給する際に用いられるバッファと、第1の命令列の先頭部分である部分命令列に結合される部分命令列を蓄積するバッファとを共用することができる。この場合において、バッファの追加なしに、より多数の命令を含む命令列を効率的に供給することができる。
なお、本発明は、命令供給装置として実現されるだけではなく、命令供給装置を制御する方法(以下、命令供給方法と呼称する。)等として実現されるとしてもよい。また、命令供給装置によって提供される機能(以下、命令供給機能と呼称する。)が組み込まれたLSI、命令供給機能をFPGA、CPLD等のプログラマブル・ロジック・デバイスに形成するIPコア(以下、命令供給コアと呼称する。)、及び命令供給コアを記録した記録媒体等として実現されるとしてもよい。
以上、本発明に係る命令供給装置によれば、ループ用命令バッファの容量以上のループブロックに対しても、主記憶装置へのアクセスを省略し、効率的に命令を供給することができる。そして、複数のループ用命令バッファを有する場合には、ハードウェア量の増加を抑止することができる。さらに、主記憶装置へのアクセスが省略されることによって、主記憶装置に対するアクセス待ちが回避され、中央処理装置における実行処理の性能を向上することができる。また、主記憶装置に対するアクセス頻度が低減され、消費電力の増大を抑制することができる。
(実施の形態1)
以下、本発明に係る実施の形態1について図面を参照しながら説明する。
本発明に係る実施の形態1における命令供給装置は、メモリインターフェースを介して主記憶装置から先行して読み出した命令をバッファに蓄積しつつ、バッファに蓄積している命令列から命令を中央処理装置に供給する。このとき、ループにより繰り返し命令を供給する命令列(以下、ループブロックと呼称する。)以外の命令列(以下、通常ブロックと呼称する。)については、通常用命令バッファに蓄積する。また、ループブロックについては、分割してループ用命令バッファと結合用命令バッファとに蓄積する。そして、ループブロックの命令を中央処理装置に供給する場合には、ループ用命令バッファと結合用命令バッファとに蓄積している命令列を結合した命令列を中央処理装置に供給することを特徴とする。
「通常ブロック」とは、主記憶装置に格納されている命令列のうち、ループブロック以外のブロックをいう。
「ループブロック」とは、主記憶装置に格納されている命令列のうち、繰り返し実行される命令が格納されているブロックをいう。
以上の点を踏まえて本発明に係る実施の形態1における命令供給装置について説明する。
先ず、実施の形態1における命令供給装置の構成について説明する。
図1に示されるように、命令供給装置101は、マイクロプロセッサ100の中に一緒に実装された中央処理装置10の指示に応じて、マイクロプロセッサ100と接続されている主記憶装置1から命令を読み出し、中央処理装置10に供給する。ここでは、一例として、メモリインターフェース111、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、結合用命令バッファ115、及び選択回路116等を備える。
メモリインターフェース111は、中央処理装置10からの指示に応じて、主記憶装置1から命令を読み出し、読み出した命令を通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、結合用命令バッファ115のいずれかに蓄積する。
通常用命令バッファ112は、通常ブロックから読み出された命令を4語分蓄積するバッファである。
ループ用命令バッファ113は、ループブロックから読み出された命令を4語分蓄積するバッファである。
ループ用命令バッファ114は、ループブロックから読み出された命令を4語分蓄積するバッファである。
結合用命令バッファ115は、ループ用命令バッファ113及びループ用命令バッファ114のいずれかに結合する。ループ用命令バッファ113に結合する場合には、ループ用命令バッファ113に蓄積している命令列の後続命令を4語分蓄積する。ループ用命令バッファ114に結合する場合には、ループ用命令バッファ114に蓄積している命令列の後続命令を4語分蓄積するバッファである。
選択回路116は、中央処理装置10からの指示に応じて、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、結合用命令バッファ115のいずれかを命令の供給源に選択する。
続いて、実施の形態1における命令供給装置において主記憶装置から命令をフェッチする際の処理について説明する。
図2に示されるように、命令供給装置101は、中央処理装置10から指示を受けた場合において(ステップS101:Yes)、空きサイクルを見計らい(ステップS102:Yes)、通常用命令バッファ112、ループ用命令バッファ113、114、結合用命令バッファ115の中から、指示を受けたバッファに空きがある場合には(ステップS103:Yes)、主記憶装置1から命令をフェッチする(ステップS104)。
なお、指示を受けていないバッファは、指示待ち状態である。
続いて、中央処理装置10と命令供給装置101との動作について説明する。
ここでは、図3に示されるように、主記憶装置1に格納されている命令列として、通常ブロック121、123、125、ループブロック122、ループブロック124から構成される命令列を一例として説明する。
通常ブロック121は、上から下に向かって並んでいる命令列(I#1〜I#7、LSI#1)から構成されている。
I#1〜I#7は、ループストア命令、分岐命令以外の命令である。
LSI#1は、I#8からループブロック122が開始することが示されるループストア命令である。
ループブロック122は、上から下に向かって並んでいる命令列(I#8〜I#13、BI#1)から構成されている。
I#8〜I#13は、ループストア命令、分岐命令以外の命令である。
BI#1は、I#8に分岐する条件付の分岐命令である。
通常ブロック123は、上から下に向かって並んでいる命令列(I#14〜I#21、LSI#2)から構成されている。
I#14〜I#21は、ループストア命令、分岐命令以外の命令である。
LSI#2は、I#22からループブロック124が開始することが示されるループストア命令である。
ループブロック124は、上から下に向かって並んでいる命令列(I#22〜I#26、BI#2)から構成されている。
I#22〜I#26は、ループストア命令、分岐命令以外の命令である。
BI#2は、I#22に分岐する条件付の分岐命令である。
通常ブロック125は、上から下に向かって並んでいる命令列(I#27〜I#32)から構成されている。
I#27〜I#32は、ループストア命令、分岐命令以外の命令である。
「ループストア命令」とは、例えば、下記の命令で示されるように、labelによって特定されるアドレスからループブロックが開始することが示される命令である。
[命令] Loopstore label, buff
なお、ループブロックから読み出した命令を蓄積するバッファがbuff値によって指定される。ここでは、buff値が0の場合には、ループ用命令バッファ113に蓄積し、buff値が1の場合には、ループ用命令バッファ114に蓄積する。
なお、LSI#1については、buff値が0の場合として、中央処理装置10は、ループブロック122の先頭部分がループ用命令バッファ113に蓄積することを、命令供給装置101に指示する。
また、LSI#2については、buff値が1の場合として、中央処理装置10は、ループブロック124の先頭部分がループ用命令バッファ114に蓄積することを、命令供給装置101に指示する。
続いて、中央処理装置10の動作について説明する。
中央処理装置10は、一例として挙げた命令列(図3参照。)を実行するにあたり、下記(1)〜(6)の場合に応じて処理を行う。
(1)中央処理装置10は、通常ブロックの命令を実行する場合には、通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。さらに、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
(2)中央処理装置10は、ループストア命令を実行した場合には、通常用命令バッファ112への蓄積が行われていない時に、ループストア命令によって特定されるループブロックの先頭から一定量の命令をループストア命令によって指示されたループ用命例バッファに蓄積することをメモリインターフェース111に指示する。
(3)中央処理装置10は、繰り返し供給される場合を除き、分岐命令の実行によってループ用命令バッファから供給された命令を実行する場合には、そのループ用命令バッファに蓄積している命令列の後続命令を結合用命令バッファ115に蓄積することを、メモリインターフェース111に指示する。
(4)中央処理装置10は、ループ用命令バッファから全ての命令が供給された場合には、後続の命令の供給源に結合用命令バッファ115を選択することを、選択回路116に指示する。
(5)中央処理装置10は、繰り返し供給される場合を除き、結合用命令バッファ115から供給された命令を実行する場合には、結合用命令バッファ115に蓄積している命令列の後続命令を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。
(6)中央処理装置10は、分岐命令を実行してその分岐命令によって指定されたアドレスに分岐する場合には、そのアドレスによって特定される命令を蓄積しているループ用命令バッファを選択することを、選択回路116に指示する。一方、分岐せずに結合用命令バッファ115から全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
続いて、命令供給装置101の動作について説明する。
命令供給装置101は、中央処理装置10からの指示に応じて各構成要素が下記の様に振る舞う。
メモリインターフェース111は、主記憶装置1から命令を読み出し、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、及び結合用命令バッファ115のいずれかに読み出した命令を蓄積する。
選択回路116は、通常用命令バッファ112、ループ用命令バッファ113、ループ用命令バッファ114、及び結合用命令バッファ115のいずれかを命令の供給源に選択する。
そして、命令の供給源に選択されたバッファは、選択回路116を介して中央処理装置10に、そのバッファに蓄積している命令を供給する。
ここでは、一例としてあげた命令列(図3参照。)を用いながら、中央処理装置10と命令供給装置101との動作について説明する。
図4A〜図7Bに示されるように、命令供給装置101は、下記(1)〜(12)の場合に応じた処理を行う。
(1)中央処理装置10は、通常ブロック121の命令を実行する場合には、通常ブロック121の命令列(I#1〜I#7、LSI#1)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#1〜I#7、LSI#1)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#1〜I#7、LSI#1)を供給する(図4A参照。)。
(2)中央処理装置10は、分岐命令により繰り返し供給される場合を除き、ループブロック122の命令を実行する場合には、命令列(I#8〜I#14)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。また、ループストア命令(LSI#1)を実行した場合には、ループストア命令(LSI#1)のbuff値が0により、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)をループ用命令バッファ113に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#8〜I#14)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#8〜BI#1)を供給する。これと同時にバックグランドで、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)を読み出し、読み出した命令列(I#8〜I#11)をループ用命令バッファ113に蓄積する(図4B、図4C参照。)。
(3)中央処理装置10は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐する場合には、ループ用命令バッファ113に蓄積している命令列(I#8〜I#11)の後続命令(I#12〜I#14)を結合用命令バッファ115に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#12〜I#14)を読み出して結合用命令バッファ115に蓄積する。さらに、選択回路116は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ113は、選択回路116を介して中央処理装置10に命令列(I#8〜I#11)を供給する(図4D参照。)。
(4)中央処理装置10は、ループ用命令バッファ113から全ての命令が供給された場合には、後続の命令の供給源に結合用命令バッファ115を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に結合用命令バッファ115を選択する。結合用命令バッファ115は、選択回路116を介して中央処理装置10に命令列(I#12〜I#14)を供給する(図5A参照。)。
(5)中央処理装置10は、結合用命令バッファ115への命令の蓄積が完了した場合には、結合用命令バッファ115に蓄積している命令列(I#12〜I#14)の後続命令(I#15〜I#17)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#15〜I#18)を読み出して通常用命令バッファ112に蓄積する(図5B参照。)。
(6)中央処理装置10は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐せずに、結合用命令バッファ115から全ての命令(I#12〜I#14)が供給された場合には、後続の命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#15〜I#18)を供給する(図5C参照。)。
(7)中央処理装置10は、通常ブロック123の命令を実行する場合には、通常ブロック123の命令列(I#19〜I#21、LSI#2)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#19〜I#21、LSI#2)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#19〜I#21、LSI#2)を供給する(図5D参照。)。
(8)中央処理装置10は、分岐命令により繰り返し供給される場合を除き、ループブロック124の命令を実行する場合には、命令列(I#22〜I#28)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。さらに、中央処理装置10は、ループストア命令(LSI#2)を実行した場合には、ループストア命令(LSI#2)のbuff値が1により、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)をループ用命令バッファ114に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#22〜I#25)を読み出して通常用命令バッファ112に蓄積する。さらに、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#22〜I#25)を供給する。これと同時にバックグランドで、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)を読み出し、読み出した命令列(I#22〜I#25)をループ用命令バッファ114に蓄積する(図6A、図6B参照。)。
(9)中央処理装置10は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐する場合には、ループ用命令バッファ114に蓄積している命令列(I#22〜I#25)の後続命令(I#26〜I#28)を結合用命令バッファ115に蓄積することを、メモリインターフェース111に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路116に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#26〜I#28)を読み出して結合用命令バッファ115に蓄積する。さらに、選択回路116は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ114は、選択回路116を介して中央処理装置10に命令列(I#22〜I#25)を供給する(図6C参照。)。
(10)中央処理装置10は、ループ用命令バッファ114から全ての命令が供給された場合には、後続の命令の供給源に結合用命令バッファ115を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に結合用命令バッファ115を選択する。結合用命令バッファ115は、選択回路116を介して中央処理装置10に命令列(I#26〜I#28)を供給する(図6D参照。)。
(11)中央処理装置10は、結合用命令バッファ115への命令の蓄積が完了した場合には、結合用命令バッファ115に蓄積している命令列(I#26〜I#28)の後続命令(I#29〜I#32)を通常用命令バッファ112に蓄積することを、メモリインターフェース111に指示する。
これに応じて、メモリインターフェース111は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#29〜I#32)を読み出して通常用命令バッファ112に蓄積する(図7A参照。)。
(12)中央処理装置10は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐せずに、結合用命令バッファ115から全ての命令(I#26〜I#28)が供給された場合には、後続の命令の供給源に通常用命令バッファ112を選択することを、選択回路116に指示する。
これに応じて、選択回路116は、命令の供給源に通常用命令バッファ112を選択する。そして、通常用命令バッファ112は、選択回路116を介して中央処理装置10に命令列(I#29〜I#32)を供給する(図7B参照。)。
以上、説明したように本発明の実施の形態1における命令供給装置によれば、ループブロックの命令列を一つのバッファに蓄積する場合と比べて、二つ以上のバッファに分けて蓄積することができ、これ等のバッファが全て更新されない限り、更新されずにバッファに蓄積されている命令列を再利用することができる。そして、ループの後半部分をループ実行時にバックグラウンドでバッファに格納することによって、ループ全体を常時バッファに保持しなくても、ループ時には全てバッファに保持されている状態と同等となり、効率的な命令を供給することができる。
例えば、8語分の命令を二つのバッファに半分ずつ蓄積し、そのうちの一つのバッファが更新されても、他のバッファが更新されていなければ、更新されずに他のバッファに蓄積している4語分の命令を再利用することができる。そして、8語分の命令を主記憶装置から再度読み出すことなく、更新された4語の命令を主記憶装置から再度読み出すだけでよく、主記憶装置にアクセスする時間も短くすることができる。そして、ループ用命令バッファおよび結合用命令バッファの合計語数である8語までのループブロックに対して、繰り返し供給する際には、主記憶装置にアクセスせずにループブロックの命令を供給することができる。
同様に、結合用命令バッファの代わりに、もう一つのループ用命令バッファを用いた場合においても、8語までのループブロックに対して、繰り返し供給する際には、主記憶装置にアクセスせずにループブロックの命令を供給することができる。
なお、8語のループブロック二つに対して、ループ中に主記憶装置にアクセスせずに供給するには、従来の構成においては、8語分のループ用命令バッファを2つ設ける必要があり、計16語分の命令バッファが必要となる。これに対して、本発明の実施の形態1においては、ループ用命令バッファ113、ループ用命令バッファ114、及び結合用命令バッファ115の計12語分の命令バッファを用いて、同等の機能を実現することができ、より少ないハードウェア量でループブロックに対して効率的に命令を供給することができる。
(実施の形態2)
次に、本発明に係る実施の形態2について図面を参照しながら説明する。なお、実施の形態1と同一の構成については説明を省略する。
本発明に係る実施の形態2における命令供給装置は、命令供給装置101(図1参照。)と比べて、結合用命令バッファ115を備えない代わりに、通常用命令バッファ112と結合用命令バッファ115とを兼用する通常用命令バッファを備える点が異なる。
具体的には、実施の形態2における通常命令バッファは、通常ブロックの命令を供給する場合には、通常用命令バッファ112のように機能し、ループブロックの命令を供給する場合には、結合用命令バッファ115のように機能する。
以上の点を踏まえて本発明に係る実施の形態2における命令供給装置について説明する。
先ず、本発明に係る実施の形態2における命令供給装置の構成について説明する。
図8に示されるように、命令供給装置201は、命令供給装置101(図1参照。)と比べて、下記(1)〜(5)の点が異なる。
(1)メモリインターフェース111の代わりにメモリインターフェース211を備える。
メモリインターフェース211は、中央処理装置20からの指示に応じて、主記憶装置1から命令を読み出し、読み出した命令を通常用命令バッファ212、ループ用命令バッファ113のいずれかに蓄積する。
(2)通常用命令バッファ112の代わりに通常用命令バッファ212を備える。
通常用命令バッファ212は、通常ブロックの命令を供給する場合には、通常用命令バッファ112のように、通常ブロックから読み出された命令を4語分蓄積する。また、ループブロックの命令を供給する場合には、結合用命令バッファ115のように、ループ用命令バッファ113に蓄積している命令列の後続命令を4語分蓄積する。
(3)選択回路116の代わりに選択回路216を備える。
選択回路216は、中央処理装置10からの指示に応じて、通常用命令バッファ212、ループ用命令バッファ113のいずれかを命令の供給源に選択する。
(4)新たに閾値レジスタ213を備える。
閾値レジスタ213は、通常用命令バッファ212がループブロックの命令を供給中に、通常用命令バッファ212の空き領域の容量が所定の容量に至ったか否かを判断する際に参照される閾値を保持する。
(5)ループ用命令バッファ114、結合用命令バッファ115を備えない。
命令供給装置201には、ループ用命令バッファが1つしか存在しないために、ループストア命令のbuff値、すなわち、バッファを選択する情報については無視する。
続いて、実施の形態2における命令供給装置において主記憶装置から命令をフェッチする際の処理について説明する。
図9に示されるように、通常用命令バッファ212は、ループ用命令バッファ113に蓄積されている命令列の後続命令を供給中の場合には(ステップS201:Yes)、命令供給に伴うバッファの空き領域が所定の閾値(ここでは、2語とする。)を超えるまでは(ステップS202)、新たな命令を蓄積しない。
続いて、中央処理装置20の動作について説明する。
中央処理装置20は、実施の形態1において一例として挙げた命令列(図3参照。)を実行するにあたり、下記(1)〜(5)の場合に応じて処理を行う。
(1)中央処理装置20は、通常ブロックの命令を実行する場合には、通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。さらに、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
(2)中央処理装置20は、ループストア命令を実行した場合には、通常用命令バッファ212への蓄積が行われていない時に、ループストア命令によって特定されるループブロックの先頭から一定量の命令をループ用命例バッファ113に蓄積することをメモリインターフェース211に指示する。
(3)中央処理装置20は、分岐命令の実行により、ループ用命令バッファ113から供給された命令を実行する場合には、ループ用命令バッファ113に蓄積している命令列の後続命令を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
(4)中央処理装置20は、ループ用命令バッファから全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
(5)中央処理装置20は、分岐命令を実行してその分岐命令によって指定されたアドレスに分岐する場合には、ループ用命令バッファ113を選択することを、選択回路216に指示する。一方、分岐せずに通常用命令バッファ112から残りの命令が供給された場合には、通常用命令バッファ212に蓄積している命令列の後続命令を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
続いて、命令供給装置201の動作について説明する。
命令供給装置201は、中央処理装置20からの指示を受けたメモリインターフェース211によって、主記憶装置1から命令を先行して読み出し、通常用命令バッファ212とループ用命令バッファ113のいずれかに読み出した命令を蓄積する。また、選択回路216において、通常用命令バッファ212とループ用命令バッファ113のいずれかを命令の供給源に選択する。そして、命令の供給源に選択されたバッファは、選択回路216を介して中央処理装置20に、そのバッファに蓄積している命令を供給する。
なお、通常用命令バッファ212は、ループブロックの命令を供給中に、命令を供給することによって生じた空き容量が閾値レジスタ213において保持されている閾値を超えると、主記憶装置1から後続の命令を読み出して蓄積する処理を再開する。
そして、通常用命令バッファ212は、ループブロックの命令を供給する場合、すなわち、ループ用命令バッファ113に後続命令を供給する場合には、命令の供給に伴い自身のバッファに空き領域ができても、その空き領域がこの閾値(例えば、2語とする。)を超えるまでは、新たな命令を主記憶装置1から読み出して蓄積しない。このことにより、ループ用命令バッファ113に後続命令を保持し続ける。
ここでは、一例として挙げた命令列(図3参照。)を用いながら、中央処理装置20と命令供給装置201との動作について説明する。
図10A〜図12Bに示されるように、命令供給装置201は、下記(1)〜(12)の場合に応じた処理を行う。
(1)中央処理装置20は、通常ブロック121の命令を実行する場合には、通常ブロック121の命令列(I#1〜I#7、LSI#1)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#1〜I#7、LSI#1)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#1〜I#7、LSI#1)を供給する(図10A参照。)。
(2)中央処理装置20は、分岐命令により繰り返し供給される場合を除き、ループブロック122の命令を実行する場合には、命令列(I#8〜I#14)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。また、ループストア命令(LSI#1)を実行した場合には、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)をループ用命令バッファ113に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#8〜I#14)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#8〜I#11)を供給する。これと同時にバックグラウンドで、ループストア命令(LSI#1)によって特定されるループブロック122の先頭部分の命令列(I#8〜I#11)を読み出し、読み出した命令列(I#8〜I#11)をループ用命令バッファ113に蓄積する(図10B、図10C参照。)。
(3)中央処理装置20は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐する場合には、ループ用命令バッファ113に蓄積している命令列(I#8〜I#11)の後続命令(I#12〜I#14)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#12〜I#14)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#8〜I#11)を供給する(図10D参照。)。
(4)中央処理装置20は、ループ用命令バッファ113から全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令(I#12、I#13)を供給する(図10E参照。)。
さらに、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令を供給する。このとき、中央処理装置20に命令を供給することによって生じた通常用命令バッファ212の空き領域が閾値を超えているため、通常用命令バッファ212に蓄積している命令列(I#12〜I#14)の後続命令(I#15、I#16)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#15、I#16)を読み出して通常用命令バッファ212に蓄積する(図10F参照。)。
(5)中央処理装置20は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐する場合には、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。それから、ループ用命令バッファ113に蓄積している命令列(I#8〜I#11)の後続命令(I#12、I#13)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。さらに、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#8〜I#11)を供給する。そして、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#12、I#13)を読み出して通常用命令バッファ212に蓄積する(図10G参照。)。
(6)中央処理装置20は、分岐命令(BI#1)を実行してループブロック122の開始アドレスに分岐せずに、通常用命令バッファ212から全ての命令(I#12〜I#14)が供給された場合には、通常用命令バッファ212に蓄積している命令列(I#12〜I#14)の後続命令(I#15〜I#18)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#15〜I#18)を読み出して通常用命令バッファ212に蓄積する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#15〜I#18)を供給する(図10H、図11A参照。)。
(7)中央処理装置20は、通常ブロック121の命令を実行する場合には、通常ブロック121の命令列(I#19〜I#21、LSI#2)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#19〜I#21、LSI#2)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#19〜I#21、LSI#2)を供給する(図11B参照。)。
(8)中央処理装置20は、分岐命令により繰り返し供給される場合を除き、ループブロック124の命令を実行する場合には、命令列(I#22〜I#25)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。また、ループストア命令(LSI#2)を実行した場合には、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)をループ用命令バッファ113に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#22〜I#25)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#22〜BI#2)を供給する。これと同時にバックグランドで、ループストア命令(LSI#2)によって特定されるループブロック124の先頭部分の命令列(I#22〜I#25)を読み出し、読み出し命令列(I#22〜I#25)をループ用命令バッファ113に蓄積する(図11C、図11D参照。)。
(9)中央処理装置20は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐する場合には、ループ用命令バッファ113に蓄積している命令列(I#22〜I#25)の後続命令(I#26〜I#28)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。それから、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#26〜I#28)を読み出して通常用命令バッファ212に蓄積する。さらに、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。そして、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#22〜I#25)を供給する(図11E参照。)。
(10)中央処理装置20は、ループ用命令バッファ113から全ての命令が供給された場合には、後続の命令の供給源に通常用命令バッファ212を選択することを、選択回路216に指示する。
これに応じて、選択回路216は、命令の供給源に通常用命令バッファ212を選択する。通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令(I#26、BI#2)を供給する(図11F参照。)
さらに、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令を供給する。このとき、中央処理装置20に命令を供給することによって生じた通常用命令バッファ212の空き領域が閾値を超えていないため、通常用命令バッファ212に蓄積している命令列(I#26〜I#28)の後続命令(I#29、I#30)を通常用命令バッファ212に生じた空き領域に蓄積することを、メモリインターフェース211に指示しない(図11G参照。)。
(11)中央処理装置20は、分岐命令(BI#2)を実行してループブロック124の開始アドレスに分岐する場合には、命令の供給源にループ用命令バッファ113を選択することを、選択回路216に指示する。
これに応じて、選択回路216は、命令の供給源にループ用命令バッファ113を選択する。さらに、ループ用命令バッファ113は、選択回路216を介して中央処理装置20に命令列(I#22〜I#25)を供給する(図11H参照。)
(12)中央処理装置20は、分岐命令(BI#2)を実行してループブロック122の開始アドレスに分岐せずに、通常用命令バッファ212から全ての命令(I#26〜I#28)が供給された場合には、通常用命令バッファ212に蓄積している命令列(I#26〜I#28)の後続命令(I#29〜I#32)を通常用命令バッファ212に蓄積することを、メモリインターフェース211に指示する。
これに応じて、メモリインターフェース211は、主記憶装置1にアクセスし、主記憶装置1から命令列(I#29〜I#32)を読み出して通常用命令バッファ212に蓄積する。そして、通常用命令バッファ212は、選択回路216を介して中央処理装置20に命令列(I#29〜I#32)を供給する(図12A、図12B参照。)。
以上、説明したように命令供給装置201によれば、6語までのループブロックに対しては、主記憶装置1にアクセスせずとも、繰り返し命令を供給することができる。
例えば、従来の構成で同等の結果を実現する場合には、4語分の命令を蓄積する通常用命令バッファとは別に、6語分の命令を蓄積するループ用命令バッファが必要である。すなわち、合計して10語分の命令を蓄積するバッファが必要である。
しかし、命令供給装置201によれば、4語分の命令を蓄積する通常用命令バッファ212を有効に活用することによって、6語分のループブロックのうち4語分の命令をループ用命令バッファ113に蓄積し、残り2語分の命令を通常用命令バッファ212に蓄積することができる。すなわち、6語分のループブロックを一括して蓄積するループ用命令バッファを設ける必要がなく、4語分の命令を蓄積する通常用命令バッファ212と、4語分の命令を蓄積するループ用命令バッファ113だけが必要であり、合計して8語分の命令を蓄積するバッファが必要である。そして、従来の構成と比べると、2語分のバッファが削減されている。
(その他)
なお、閾値レジスタ213において保持されている閾値は、プログラムによって設定できるとしてもよい。また、通常用命令バッファ212の容量内で設定できるとしてもよい。これに伴い、プログラムの特定に合わせた命令を供給することができる。そして、この閾値を大きくすることによって、ループブロックの命令に対しては、割り当てられる容量が大きくなり、効率的に供給することができる。その反面、そのループブロックに後続する命令列に対しては、割り当てられる容量が小さくなり、そのループブロックと一緒に通常用命令バッファ212に蓄積できる命令数が少なくなるというトレードオフがある。
なお、命令供給装置は、フルカスタムLSI(Large Scale Integration)によって実現されるとしてもよい。また、ASIC(Application Specific Integrated Circuit)等のようなセミカスタムLSIによって実現されるとしてもよい。また、FPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)等のようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
さらに、命令供給装置を構成する1乃至2以上の機能を、これ等のLSIに形成する設計データは、VHDL(Very high speed integrated circuit Hardware Description Language)、Verilog−HDL、SystemC等のようなハードウェア記述言語によって記述されたプログラム(以下、HDLプログラムと呼称する。)としてもよい。また、HDLプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。
さらに、設計データは、コンピュータシステム、組み込みシステム等のようなハードウェアシステムに読み出され得るように、光学記録媒体(例えば、CD−ROM等。)、磁気記録媒体(例えば、ハードディスク等。)、光磁気記録媒体(例えば、MO等。)、半導体メモリ(例えば、RAM等。)等のようなコンピュータ読み取り可能な記録媒体に記録しておくとしてもよい。そして、記録媒体を介して他のハードウェアタシステムに読み取られた設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。
または、設計データは、ネットワーク等のような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアタシステムに取得された設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。
または、論理合成、配置、配線された設計データは、通電時にFPGAに転送され得るように、シリアルROMに記録しておくとしてもよい。そして、シリアルROMに記録された設計データは、通電時に、直接、FPGAにダウンロードされるとしてもよい。
本発明は、主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置等として、特に、ループ用命令バッファの容量を増加させることなく、より多数の命令によるループについて主記憶装置へのアクセスを行うことなく命令供給を行う命令供給装置等として、利用することができる。
図1は、実施の形態1における命令供給装置の構成を示す図である。
図2は、実施の形態1における命令供給装置において主記憶装置から命令をフェッチする際の処理を示す図である。
図3は、主記憶装置に格納されている命令列の一例を示す図である。
図4Aは、実施の形態1における命令供給装置の動作例を示す第1の図である。
図4Bは、実施の形態1における命令供給装置の動作例を示す第2の図である。
図4Cは、実施の形態1における命令供給装置の動作例を示す第3の図である。
図4Dは、実施の形態1における命令供給装置の動作例を示す第4の図である。
図5Aは、実施の形態1における命令供給装置の動作例を示す第5の図である。
図5Bは、実施の形態1における命令供給装置の動作例を示す第6の図である。
図5Cは、実施の形態1における命令供給装置の動作例を示す第7の図である。
図5Dは、実施の形態1における命令供給装置の動作例を示す第8の図である。
図6Aは、実施の形態1における命令供給装置の動作例を示す第9の図である。
図6Bは、実施の形態1における命令供給装置の動作例を示す第10の図である。
図6Cは、実施の形態1における命令供給装置の動作例を示す第11の図である。
図6Dは、実施の形態1における命令供給装置の動作例を示す第12の図である。
図7Aは、実施の形態1における命令供給装置の動作例を示す第13の図である。
図7Bは、実施の形態1における命令供給装置の動作例を示す第14の図である。
図8は、実施の形態2における命令供給装置の構成を示す図である。
図9は、実施の形態2における命令供給装置において主記憶装置から命令をフェッチする際の処理を示す図である。
図10Aは、実施の形態2における命令供給装置の動作例を示す第1の図である。
図10Bは、実施の形態2における命令供給装置の動作例を示す第2の図である。
図10Cは、実施の形態2における命令供給装置の動作例を示す第3の図である。
図10Dは、実施の形態2における命令供給装置の動作例を示す第4の図である。
図10Eは、実施の形態2における命令供給装置の動作例を示す第5の図である。
図10Fは、実施の形態2における命令供給装置の動作例を示す第6の図である。
図10Gは、実施の形態2における命令供給装置の動作例を示す第7の図である。
図10Hは、実施の形態2における命令供給装置の動作例を示す第8の図である。
図11Aは、実施の形態2における命令供給装置の動作例を示す第9の図である。
図11Bは、実施の形態2における命令供給装置の動作例を示す第10の図である。
図11Cは、実施の形態2における命令供給装置の動作例を示す第11の図である。
図11Dは、実施の形態2における命令供給装置の動作例を示す第12の図である。
図11Eは、実施の形態2における命令供給装置の動作例を示す第13の図である。
図11Fは、実施の形態2における命令供給装置の動作例を示す第14の図である。
図11Gは、実施の形態2における命令供給装置の動作例を示す第15の図である。
図11Hは、実施の形態2における命令供給装置の動作例を示す第16の図である。
図12Aは、実施の形態2における命令供給装置の動作例を示す第17の図である。
図12Bは、実施の形態2における命令供給装置の動作例を示す第18の図である。
符号の説明
1 主記憶装置
10,20 中央処理装置
100,200 マイクロプロセッサ
101,201 命令供給装置
111,211 メモリインターフェース
112,212 通常用命令バッファ
113 ループ用命令バッファ
114 ループ用命令バッファ
115 結合用命令バッファ
116,216 選択回路
213 閾値レジスタ