JPH05143451A - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH05143451A
JPH05143451A JP3304459A JP30445991A JPH05143451A JP H05143451 A JPH05143451 A JP H05143451A JP 3304459 A JP3304459 A JP 3304459A JP 30445991 A JP30445991 A JP 30445991A JP H05143451 A JPH05143451 A JP H05143451A
Authority
JP
Japan
Prior art keywords
instruction
data
cache
main memory
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP3304459A
Other languages
English (en)
Inventor
Kisaburo Nakazawa
喜三郎 中澤
Hiroshi Nakamura
宏 中村
Hiromitsu Imori
弘充 位守
Junji Nakakoshi
順二 中越
Hideo Wada
英夫 和田
Naoki Hamanaka
直樹 濱中
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.)
Hitachi Ltd
Imori Hiromitsu
Original Assignee
Hitachi Ltd
Imori Hiromitsu
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 Hitachi Ltd, Imori Hiromitsu filed Critical Hitachi Ltd
Priority to JP3304459A priority Critical patent/JPH05143451A/ja
Publication of JPH05143451A publication Critical patent/JPH05143451A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】キャッシュへの主記憶データのプリフェッチと
キャッシュからのロードとを並行して行えるようにす
る。 【構成】主記憶から読み出された主記憶データを保持す
る複数のキャッシュメモリ121A,121Bを設け、
その一方に対して、主記憶104から主記憶データをプ
リフェッチし、後続のロード命令で指定される主記憶デ
ータをレジスタ群113のいずれかにロードするとき、
このデータをキャッシュメモリ121A,121Bの他
方から読み出すようにする。具体的には、プリフェッチ
命令で一方のキャッシュメモリを指定し、ロード命令で
他方のキャッシュメモリを指定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理装置に関わ
り、特に主記憶アクセスの高速化に好適なキャッシュ制
御に関する。
【0002】
【従来の技術】従来、キャッシュを用いたメモリアクセ
スの高速化においては、日立評論 VOL.67 N
o.12 61ページから66ページに記載(第1の従
来例と呼ぶ)のように、主記憶とバッファ記憶の間に高
速大容量のワーク記憶を置く3階層記憶構成のプロセッ
サがある。
【0003】またSuperASCII,Vol1.2
#6 June,1991 第98ページに記載(第
2の従来例と呼ぶ)のように、命令用キャッシュとデー
タ用キャッシュを分けたプロセッサがある。
【0004】また特開平3−116345号に記載(第
3の従来例と呼ぶ)のように、データブロックのポイン
タが登録される2つのアドレスアレイと、主記憶アドレ
スからそのアドレスを含むデータブロックのポインタと
それに連続して後続するデータブロックのポインタを生
成するポインタ生成回路などを設けている。これらによ
り、あるデータブロックの読出しを行なう場合、それに
連続して後続するデータブロックについてもキャッシュ
を同時に検索し、未登録の後続データブロックの先読み
を行なっている。
【0005】またキャッシュへの先取り命令について
は、SuperASCII,Vol1.2 #6 Ju
ne,1991 第98ページから第99ページに記載
(第4の従来例と呼ぶ)のように、メモリから汎用レジ
スタへロードする命令において汎用レジスタ0がロード
命令で指定されると、この汎用レジスタ0の内容は常に
0のままにしてこの命令をキャッシュへのプリフェッチ
として特別に処理することがなされている。後続の命令
はこのロード命令の完了を待たずに実行でき、これによ
りメモリアクセスの高速化を図っている。
【0006】
【発明が解決しようとする課題】上記第1の従来技術で
は、主記憶の前段に高速な大容量バッファを置くことに
より、メモリの実効的な読み出し時間を少なくすること
を目的としている。上記第2の従来技術では、命令とデ
ータといった性格の異なるメモリアクセスを分離して、
メモリの実効的な読み出し時間をいくらかでも軽減する
ことを目的としている。しかし、これらでは連続する主
記憶データの読み出しの場合、効果が少ない。
【0007】第3の従来技術では、キャッシュに先読み
できるのは、ある主記憶アドレスから連続したアドレス
を有する1個のデータブロックだけである。このため連
続する主記憶データの読出しでは、キャッシュに必ず存
在するという状態を意識的に作り出すことができるが、
不連続な主記憶のデータ読出しには、キャッシュに必ず
存在するという状態が意識的に作り出せない、また、こ
の場合では先読みするデータブロックが命令実行で使用
されるか否かにかかわらず主記憶から読みだされるとい
う問題がある。
【0008】また上記第4の従来技術では、汎用レジス
タ0を指定したロード命令と汎用レジスタ0以外を指定
したロード命令がそれぞれ連続的に実行されると、キャ
ッシュの書き込みと読み出しが同時に発生する場合があ
る。このキャッシュの書き込みと読み出しのアクセスは
逐次に実行されるため、逐次実行によりロード命令の実
行が遅れるという問題がある。
【0009】本発明の目的は、複数組で、かつそれぞれ
が同格である、データを一時格納するキャッシュメモリ
を採用することで、主記憶アクセスが連続/不連続に関
わらず、キャッシュメモリに必ず存在するという状態を
意識的に作り出せ、またロード命令の実行を高速に行な
うデータ処理装置を提供することにある。
【0010】
【課題を解決するための手段】上記目的を達成するため
に複数組で、かつ、それぞれが同格のキャッシュメモリ
を設け、また複数組のキャッシュメモリのうちの1つを
指定し、任意の指定されたキャッシュメモリに主記憶デ
ータを登録するプリフェッチ命令と、複数のキャッシュ
メモリのうちの1つを指定し、主記憶データを指定され
たキャッシュメモリからも読みだすことができるロード
命令を設ける。
【0011】さらにプリフェッチ命令で指定された主記
憶アドレスをキャッシュメモリに登録するまで保持し、
ロード命令で指定される主記憶アドレスと該保持したプ
リフェッチ命令の主記憶アドレスの内容を比較し、一致
したことを検出する一致検出手段と、主記憶アクセスの
制御を行ない、該一致検出手段により一致したことを検
出したときは、該主記憶アドレスが一致したプリフェッ
チ命令の主記憶データを該ロード命令の主記憶データと
して該命令処理ユニットに送る主記憶アクセス制御手段
を設ける。
【0012】
【作用】プリフェッチ命令は以下のように動作する。
【0013】(1)プリフェッチ命令で指定される主記
憶アドレスをもとに、命令で指定されるキャッシュメモ
リを検索する。
【0014】(2)検索した結果が既に登録済みであれ
ば、何も動作はしない。
【0015】(3)一方、検索した結果が未登録であれ
ば、まず一致検出手段に主記憶アドレスを保持し、主記
憶データの読出しを行なう。
【0016】(4)主記憶から読みだされた主記憶デー
タは、命令で指定されたキャッシュメモリに登録する。
このとき一致検出手段に保持された主記憶アドレスは解
放される。
【0017】ロード命令は以下のように動作する。
【0018】(1)ロード命令で指定される主記憶アド
レスをもとに、命令で指定されるキャッシュメモリを検
索する。
【0019】(2)検索した結果が既に登録済みであれ
ば、キャッシュメモリから読みだされたデータを演算制
御に渡す。
【0020】(3)一方、検索した結果が未登録であれ
ば、命令で指定される主記憶アドレスと一致検出手段で
保持される実行中のプリフェッチ命令の主記憶アドレス
との一致を検出する。
【0021】(4)もし一致しないのであれば主記憶デ
ータの読出しを行ない、主記憶データをキャッシュメモ
リに登録する。また、これと同時に主記憶データを演算
制御に渡す。
【0022】(5)もし一致するのであれば、主記憶ア
クセス制御手段がロード命令の主記憶アドレスと一致し
たプリフェッチ命令の主記憶データが読み出されるのを
待つ。主記憶から実行中のプリフェッチ命令に対応する
主記憶データが読みだされると、その主記憶データをキ
ャッシュメモリに登録する。また、これと同時に主記憶
データを演算制御に渡すことにより、ロード命令が実行
される。
【0023】これらの2つの命令を用いたプログラムで
は、まず予め主記憶データを読みだすアドレスがわかっ
ている場合は演算で使用する前にプリフェッチ命令によ
りキャッシュメモリに読出しておく。次に実際に演算で
使用するときにロード命令で主記憶データを読みだす。
【0024】以上よりキャッシュメモリに必ず存在する
という状態が作り出せ、また先読み命令によるキャッシ
ュメモリへの書き込みと、ロード命令によるキャッシュ
メモリからの読み出しを異なるキャッシュメモリから行
なえるため、ロード命令の実行を高速に行なうことがで
きる。
【0025】
【実施例】以下、本発明の一実施例を図を用いて説明す
る。
【0026】(実施例1)図1に本実施例のデータ処理
装置を示す。データ処理装置は命令の制御および実行を
行なう命令処理ユニット101、記憶制御ユニットから
読みだされた主記憶データのバッファリングなどを行な
うバッファ制御ユニット102、主記憶のアクセス制御
を行なう記憶制御ユニット103、および命令処理ユニ
ットで実行する命令やデータを記憶する主記憶104か
ら構成される。
【0027】命令処理ユニット101は、主記憶から命
令を先行読み出しを行ない、読みだされた命令を蓄える
命令バッファと命令バッファから個々の命令を切り出す
切り出し回路を含む命令供給回路110、命令供給回路
110より切り出された命令を保持する命令レジスタ1
11、命令レジスタ111の内容を解読し、命令の実行
制御を行なう命令実行制御112、汎用レジスタ、浮動
小数点レジスタを複数含む演算で必要なデータなどを保
持するレジスタ群113、命令で指定される演算を実行
する演算器114、主記憶をアクセスするための主記憶
アドレスを計算するアドレス加算器115により構成さ
れる。
【0028】バッファ制御ユニット102は、記憶制御
ユニット103から読みだされた主記憶データを保持す
るキャッシュメモリ121A、121B、電源投入時に
システムの保守/診断機能を有するサービスプロセッサ
により設定され、キャッシュメモリ121A、121B
の番号を保持するキャッシュ番号レジスタ122A、1
22B、キャッシュ番号レジスタ122A、122Bと
命令実行制御112およびキャッシュ書き込み回路13
2から指定されるキャッシュ番号を比較し、一致したか
否かを検出するキャッシュ番号比較回路123A1、1
23A2、123B1、123B2、命令制御112お
よびキャッシュ書き込み回路132の指示によりキャッ
シュメモリ121A、121Bのアクセスを制御するキ
ャッシュ制御124A、124B、キャッシュメモリ1
21A、121Bの検索結果に従い、記憶制御ユニット
103から主記憶データを読み出す制御などを行なう主
記憶アクセス制御126、プリフェッチ命令により指定
される主記憶アドレスを複数個保持できるプリフェッチ
アドレスレジスタ群127、ロード命令により指定され
る主記憶アドレスを保持するロードアドレスレジスタ1
28、プリフェッチアドレスレジスタ群127やロード
アドレスレジスタ128に命令で指定された主記憶アド
レスの設定などを制御するアドレス制御129、命令で
指定される主記憶アドレスとプリフェッチアドレスレジ
スタ群127で保持するアドレスが一致するかを検出す
る一致検出回路130、主記憶104から読み出された
データがプリフェッチ命令とロード命令の両方で指定さ
れていたか否かを検出する一致回路131、主記憶10
4から読み出されたデータをキャッシュメモリ121
A、121Bに書き込むための制御などを行なうキャッ
シュ書き込み回路132から構成される。
【0029】ここでキャッシュメモリ121A、121
Bでは、主記憶のデータを数十バイトの単位(ブロック
と呼ぶ)で複数ブロックを保持できる。主記憶をアクセ
スするときには、そのデータがキャッシュメモリに保持
(登録)されているかを調べるために、主記憶をアクセ
スするアドレスとキャッシュメモリに存在する全ブロッ
クのアドレスを格納したアドレスアレイ(図示せず)を
比較する。一致するアドレスがあれば、それに対応した
データをキャッシュメモリから読みだし、なければブロ
ック転送をするのと同時にアドレスアレイにもそのアド
レスを登録する。このようなキャッシュメモリについて
は、「情報処理」第21巻332ページから340ペー
ジ、昭和55年4月、に記載されている。本実施例では
キャッシュメモリのアドレスのマッピング方法など何で
あってもよいが、説明を簡単にするためにコングルエン
ト方式マッピングとし、ブロックのサイズを16バイト
とする。
【0030】またこのデータ処理装置には、図2で示す
ように2つの命令が新たに追加する。1つは(a)プリ
フェッチ命令で、もう1つは(b)ロード命令である。
プリフェッチ命令は、記憶制御ユニット103から主記
憶データを読み出しキャッシュメモリ121A、121
Bに登録することを指示する命令である。このフォーマ
ットは、命令コード(Prefetch)、キャッシュ
番号、ベースレジスタ、インデックスレジスタ、ディス
プレースメントに分かれる。命令コードは、プリフェッ
チ命令であることを示すものである。キャッシュ番号
は、たとえば図1であると、2つのキャッシュメモリ1
21,121Bのいずれかを指定するものである。ベー
スレジスタ、インデックスレジスタ、ディスプレースメ
ントは、オペランドの主記憶アドレスを計算するための
ものであり、その計算結果は記憶制御ユニット103か
ら主記憶データを読み出すためのアドレスである。この
ベースレジスタ、インデックスレジスタは、実際には汎
用レジスの番号が指定され、それらの加算によって求め
られる。また未使用は、この命令では使用しないことを
示している。
【0031】ロード命令は、この命令で指定される、キ
ャッシュ121A、121Bのいずれかに保持されてい
る主記憶データを読み出し、レジスタ群113の一つに
取り込むことを指示する命令である。このフォーマット
はプリフェッチ命令と同様に、命令コード(Loa
d)、キャッシュ番号、レジスタ群の1つのレジスタ番
号、ベースレジスタ、インデックスレジスタ、ディスプ
レースメントに分かれる。命令コードは、ロード命令で
あることを示すものである。キャッシュ番号は、たとえ
ば図1であると、2つのキャッシュメモリ121A,1
21Bのいずれかを指定するものである。レジスタ番号
は、主記憶データを読み出し、レジスタ群113内の1
個のレジスタに取り込むための命令処理ユニット101
内のレジスタ群113を示すものである。ベースレジス
タ、インデックスレジスタ、ディスプレースメントは、
オペランドの主記憶アドレスを計算するためのものであ
り、この計算結果が、キャッシュメモリ121A、12
1Bから主記憶データを読み出すためのアドレスにな
る。レジスタ群113は汎用レジスタ群と活動小数点レ
ジスタ群からなるが、これらのレジスタは簡単化のため
に区別されずに示されている。
【0032】これらの命令列を用いたプログラムの例を
図3を用いて説明する。このプログラムは、ソースプロ
グラムで示しているように、配列Yと配列Zのそれぞれ
の要素を乗算し、Xにその乗算結果を加算する内積計算
プログラムである。
【0033】そのオブジェクトプログラムを図4に示
す。このオブジェクトプログラムはループを4重展開し
ている。これらは以下のように動作する。
【0034】(1)項番1のロード命令では、キャッシ
ュAから配列Y(i)の要素を浮動小数点レジスタ#1
(FR1)にロードする。ここでベースレジスタは汎用
レジスタ#0(GR0)であり、ここには初期値として
配列Yの先頭アドレスが格納されている。インデクッス
レジスタフィールドは0を示し、汎用レジスタは指定さ
れず、主記憶アドレス計算時に0として計算されること
を示す。またディスプレースメントは0である。
【0035】(2)項番2のロード命令では、キャッシ
ュAから配列Z(i)の要素を浮動小数点レジスタ#2
(FR2)にロードする。ここで汎用レジスタ#1(G
R1)には、項番1と同様に初期値として配列Zの先頭
アドレスが格納されている。
【0036】(3)項番3のプリフェッチ命令では、汎
用レジスタ#0の内容とデイスプレースメントで示され
る16の値が加算され、その加算結果で示される配列Y
の複数の要素がキャッシュBにロードされる。ここでキ
ャッシュBにロードされる配列Yの要素数は、配列Yの
各要素が8バイトデータとすると、ブロックが16バイ
トであるため2個になる。
【0037】(4)項番4のプリフェッチ命令では、汎
用レジスタ#1の内容とデイスプレースメントで示され
る16の値が加算され、その加算結果で示される配列Z
の複数の要素がキャッシュBにロードされる。ここでキ
ャッシュBにロードされる配列Zの要素数は、項番3と
同様に2個になる。
【0038】(5)項番5の乗算命令は、配列Y(i)
の1要素と配列Z(i)の1要素の乗算を行なうための
命令であり、浮動小数点レジスタ#1の内容と浮動小数
点レジスタ#2の内容を乗算し、その結果を浮動小数点
レジスタ#3に格納する。この命令は従来命令と同じで
ある。
【0039】(6)項番6の加算命令は、配列Y(i)
の1要素と配列Z(i)の1要素の乗算結果をXに加算
するための命令であり、浮動小数点レジスタ#0の内容
と浮動小数点レジスタ#3の内容を加算し、その結果を
浮動小数点汎用レジスタ#0に格納する。ここで浮動小
数点レジスタ#0には、初期値としてXの値が格納され
ているとする。また、この命令は従来命令と同じであ
る。
【0040】ここまでで1回目(i)のループの計算を
終えたことになる。
【0041】(7)項番7のロード命令では、キャッシ
ュAから配列Y(i+1)の要素を浮動小数点レジスタ
#1(FR1)にロードする。この時のディスプレース
メントは、オペランドデータが8バイトであるため、8
である。
【0042】(8)項番8のロード命令では、キャッシ
ュAから配列Z(i+1)の要素を浮動小数点レジスタ
#2(FR2)にロードする。
【0043】(9)項番9の乗算命令は、項番5と同様
に、配列Y(i+1)の1要素と配列Z(i+1)の1
要素の乗算を行なうための命令である。
【0044】(10)項番10の加算命令は、項番5と
同様に、配列Y(i+1)の1要素と配列Z(i+1)
の1要素の乗算結果をXに加算するための命令である。
【0045】ここまでで2回目(i+1)のループの計
算を終えたことになる。
【0046】(11)項番11のロード命令では、キャ
ッシュBから配列Y(i+2)の要素を浮動小数点レジ
スタ#1(FR1)にロードする。またディスプレース
メントは16である。
【0047】(12)項番12のロード命令では、キャ
ッシュBから配列Z(i+2)の要素を浮動小数点レジ
スタ#2(FR2)にロードする。
【0048】(13)項番13のプリフェッチ命令で
は、汎用レジスタ#0の内容とデイスプレースメントで
示される32の値が加算され、その加算結果で示される
配列Yの複数の要素がキャッシュAにロードされる。
【0049】(14)項番14のプリフェッチ命令で
は、汎用レジスタ#1の内容とデイスプレースメントで
示される32の値が加算され、その加算結果で示される
配列Zの複数の要素がキャッシュAにロードされる。
【0050】(15)項番15の乗算命令は、項番5と
同様に、配列Y(i+2)の要素と配列Z(i+2)の
要素の乗算を行なうための命令である。
【0051】(16)項番16の加算命令は、項番5と
同様に、配列Y(i+2)の要素と配列Z(i+2)の
要素の乗算結果をXに加算するための命令である。
【0052】ここまでで3回目(i+2)のループの計
算を終えたことになる。
【0053】(17)項番17のロード命令では、キャ
ッシュAから配列Y(i+3)の要素を浮動小数点レジ
スタ#1(FR1)にロードする。この時のディスプレ
ースメントは、オペランドデータが8バイトであるた
め、8である。
【0054】(18)項番18のロード命令では、キャ
ッシュAから配列Z(i+3)の要素を浮動小数点レジ
スタ#2(FR2)にロードする。
【0055】(19)項番19の乗算命令は、項番5と
同様に、配列Y(i+3)の1要素と配列Z(i+3)
の1要素の乗算を行なうための命令である。
【0056】(20)項番20の加算命令は、項番5と
同様に、配列Y(i+3)の1要素と配列Z(i+3)
の1要素の乗算結果をXに加算するための命令である。
【0057】ここまでで4回目(i+3)のループの計
算を終えたことになる。
【0058】(21)項番21の加算命令は次の配列Y
(i+4)の要素の主記憶アドレスを求めるための命令
であり、汎用レジスタ#0の内容に32を加算し、汎用
レジスタ#0に格納する。この命令は従来命令と同じで
ある。
【0059】(22)項番22の加算命令は次の配列Z
(i+4)の要素の主記憶アドレスを求めるための命令
であり、汎用レジスタ#1の内容に32を加算し、汎用
レジスタ#1に格納する。この命令は従来命令と同じで
ある。
【0060】(23)項番23の分岐命令は、ループが
終了したか否かを判定するための命令であり、汎用レジ
スタ#3の内容が0でないとき、Loopに分岐する。
この時、汎用レジスタ#3の内容を1だけ減算する。ま
た0の時、分岐を行なわず、それ以降に続く命令を実行
する。ここで汎用レジスタ#3には、初期値としてルー
プカウント数nが格納されているとする。
【0061】以上の命令動作において、項番1、2のロ
ード命令がループの第1回目に実行されたときには、キ
ャッシュメモリにデータが登録されていないため、主記
憶からのデータ供給のオーバーヘッドが発生する。しか
し、本実施例ではそれ以降のロード命令ではキャッシュ
メモリにデータが必ず登録されている状態になり、主記
憶からのデータ供給のオーバーヘッドが発生せず、高速
に命令を実行できる。たとえば、項番3,4のプリフェ
ッチ命令によりキャシュに格納された、データを項番1
1,12のロード命令が利用できるので、これらのロー
ド命令が高速に実行できる。さらに、あるループの繰り
返し時にプリフェッチ命令13,14でキャッシュにフ
ェッチされたデータを、次のループの繰り返し時に項番
1,2,7,8のロード命令が利用できる。なお、項番
7,8のロード命令は、ループの第1回目の繰り返しの
ときには、項番1,2のロード命令でキャッシュに格納
されるブロック内のデータを利用するので、この項番
7,8のロード命令も高速に実行できる。
【0062】本実施例が特に重要なことは、項番7,8
のロード命令によるキャッシュの読み出しをそれぞれの
項番3,4のプリフェッチ命令によるキャッシュの書き
込みを並行して実行できることである。すなわち、これ
らのプリフェッチ命令とこれらのロード命令は異なるキ
ャッシュを利用するからである。
【0063】次に、これらの命令の動作を図1に従い、
説明する。まずプリフェッチ命令について説明する。命
令処理ユニット101内の命令レジスタ111に命令が
取り込まれると、命令実行制御112が解読する。命令
実行制御112がプリフェッチ命令であることを識別す
ると、この命令で指定されるベースレジスタ番号BR,
インデックスレジスタ番号XRをもとにレジスタ群11
3からこれらの番号のレジスタを読み出し、アドレス加
算器115によりこれらのレジスタの内容と命令が指定
するディスプレイメントDを加算して主記憶アドレス1
16を計算する。また命令実行制御112では、プリフ
ェッチ命令が指定されたことと、その命令で指定される
キャッシュ番号を信号166によりセレクタ167を経
由して、バッファ制御ユニット102にリクエスト信号
117により知らせる。
【0064】バッファ制御ユニット102ではプリフェ
ッチ命令の動作を行なうことが指示されると、まず命令
で指定されたキャッシュ番号とキャッシュ番号レジスタ
122A、122Bの比較がキャッシュ番号比較回路1
23A1、123A2、123B1、123B2で行な
われる。この比較回路123A1、123A2、123
B1、123B2の結果は、それぞれのキャッシュ制御
124A、124Bに送られ、その結果が等しい場合に
対応するキャッシュ制御124A、または124Bだけ
が動作する。ここでは仮にキャッシュメモリ121Bが
プリフェッチ命令たとえば項番3(図4)のプリフェッ
チ命令で指定されたとすると、キャッシュ制御124B
が命令制御112より送られてくる主記憶アドレス11
6をセレクタ125Bにより選択し、キャッシュメモリ
121Bを検索する。キャッシュメモリ121Bでは、
主記憶アドレス116に対応するデータが登録されてい
るか否かの状態142Bと、登録されている場合は対応
する主記憶データ143Bを出力する。キャッシュメモ
リBから出力された状態142Bは主記憶アクセス制御
126に送られる。
【0065】主記憶アクセス制御126では、図5に示
すように、セレクタ501により状態142A、142
Bの一つを選択する。今の例では、リクエスト信号11
7でプリフェッチ命令でキャッシュメモリBが指定され
ていることにより、セレクタ501は状態142Bを選
択する。選択された状態142Bは、登録判定回路50
2によりキャッシュメモリに登録されているか否かを判
定し、プリフェッチ命令で登録か否かを信号503に出
力する。その信号503が既に登録済みを示していれ
ば、主記憶読みだし判定回路506が信号164により
プリフェッチ命令の動作が終了したことを命令実行制御
112に報告する。命令実行制御112では、この信号
164により次の命令を実行するために命令供給回路1
10に対して信号165を送る。この信号165により
命令供給回路110は次に実行すべき命令、例えば図4
の項番4のプリフェッチ命令、を命令レジスタ111に
供給する。
【0066】一方、信号503が状態142Bの未登録
を示しているならば、登録判定回路502がアドレス制
御129に対してプリフェッチアドレスレジスタ群12
7の1つに、その主記憶アドレス116とキャッシュ番
号117を保持することを信号161により指示する。
【0067】アドレス制御129は、図6に示すよう
に、プリフェッチアドレスレジスタ群127の読みだ
し、書き込み制御、およびロードアドレスレジスタ12
8の書き込み制御を行なうものである。書き込みポイン
タ602は、プリフェッチアドレスレジスタ群127の
うちの1個の書き込み位置を示すものであり、登録判定
回路502からの信号161により、プリフェッチ書き
込みアドレス書き込み回路606がそのポインタ602
に従い、プリフェッチアドレスレジスタ群127のうち
の1個に書き込みを行なう。この時、書き込みポインタ
602と読みだしポインタ601の値が比較回路607
により比較され、等しい時にはプリフェッチアドレスレ
ジスタへの書き込みは待たされる。また書き込みが行な
われる毎に加算器604により1だけ加算される。一
方、読みだしポインタ601は、プリフェッチアドレス
レジスタ群127のうちの1個の読みだし位置を示すも
のであり、読みだしポインタ601の出力は、セレクタ
160のセレクト制御信号になる。キャッシュ書き込み
回路132からの信号163により、RP制御605が
1だけ加算する。ロードアドレス書き込み回路608
は、登録判定回路502からの信号161により、ロー
ドアドレスレジスタ128に書き込みを行なうものであ
る。
【0068】また信号503により記憶制御リクエスト
送出回路505が記憶制御ユニット103に対して、主
記憶アドレス116に従い、主記憶データを読みだすこ
とをリクエスト信号145により指示する。さらに、こ
れと同時に主記憶読みだし判定回路506が信号164
によりプリフェッチ命令の動作が終了したことを命令実
行制御112に報告する。すなわち、プリフェッチ命令
は主記憶データの読み出しを始める前に終了したものと
して扱われる。
【0069】記憶制御ユニット103では主記憶アドレ
スに従い、主記憶データを読みだす。記憶制御ユニット
103の主記憶データの読み出しが終了すると、信号1
46によりキャッシュ書き込み回路132に報告され
る。ここで主記憶104から読み出される主記憶データ
は、主記憶アクセス制御126から送出されるリクエス
トの順に戻ってくるとする。
【0070】キャッシュ書き込み回路132では、記憶
制御ユニット103からプリフェッチ命令の主記憶読み
出しデータの報告を受けると、プリフェッチアドレスレ
ジスタ群127から対応する主記憶アドレスとキャッシ
ュ番号を読み出し、信号147によりキャッシュメモリ
121A、121Bの一方(今の例えばキャッシュメモ
リ121B)に記憶制御ユニット103から読み出され
た主記憶データ148を登録することを指示する。また
アドレス制御129に対して信号163により、先にプ
リフェッチアドレスレジスタ群127に保持した主記憶
アドレスとキャッシュ番号を解放することを指示する。
これによりキャッシュ書き込み回路132で指定された
キャッシュ番号とキャッシュ番号レジスタ122A、1
22Bの比較がキャッシュ番号比較回路123A1、1
23A2、123B1、123B2で行なわれる。ここ
ではキャッシュメモリBが指定されていると仮定してい
るため、この比較回路123B1、123B2の結果が
等しく、キャッシュ制御124Bが動作し、記憶制御ユ
ニット103から読み出された主記憶データ148を登
録する。
【0071】以上のようにプリフェッチ命令は動作す
る。また、ここでは、キャッシュメモリBについての動
作を示したが、項番13又は14のプリフェッチ命令に
対しては、他のキャッシュメモリAが同様に動作する。
【0072】次にロード命令たとえば項番11又は12
のロード命令について説明する。命令処理ユニット10
1内の命令レジスタ111に命令が取り込まれると、命
令実行制御112が解読する。命令実行制御112がロ
ード命令であることを識別すると、命令で指定される主
記憶アドレスをもとにレジスタ群113の中から命令で
指定される汎用レジスタを読み出し、アドレス加算器1
15により主記憶アドレス116を計算する。また命令
制御112では、ロード命令が指定されたことと、その
命令で指定されるキャッシュ番号を信号166によりセ
レクタ167を経由して、バッファ制御ユニット102
にリクエスト信号117により知らせる。
【0073】バッファ制御ユニットではロード命令の動
作を行なうことが指示されると、まず命令で指定された
キャッシュ番号とキャッシュ番号レジスタ122A、1
22Bの比較がキャッシュ番号比較回路123A1、1
23A2、123B1、123B2で行なわれる。この
比較回路123A1、123A2、123B1、123
B2の結果は、それぞれのキャッシュ制御124A、1
24Bに送られ、その結果が等しい場合に対応するキャ
ッシュ制御124A、または124Bだけが動作する。
ここでは仮にキャッシュメモリ121Bがロード命令で
指定されたとすると、キャッシュ制御124Bが命令制
御112より送られてくる主記憶アドレス116をセレ
クタ125により選択し、キャッシュメモリ121Bを
検索する。キャッシュメモリ121Bでは、主記憶アド
レス116に対応するデータが登録されているか否かの
状態142Bと、登録されている場合は対応する主記憶
データ143Bを出力する。キャッシュメモリ121B
から出力された状態142Bは、主記憶アクセス制御1
26に送られる。
【0074】主記憶アクセス制御126では、図5に示
すように、状態142A、142Bを、リクエスト信号
117でロード命令でキャッシュメモリBが指定されて
いることにより、セレクタ501で状態142Bを選択
する。選択された状態142Bは、登録判定回路502
によりキャッシュメモリに登録されているか否かを判定
し、ロード命令で登録か否かを信号503に出力する。
その信号503が“既に登録済み”を示していれば、信
号503により主記憶データ選択回路504は、キャッ
シュメモリ121Bから読み出された主記憶データ14
3Bをセレクタ133により選択し、信号149により
命令処理ユニット101に送る。これと同時に、主記憶
読みだし判定回路506が信号164によりロード命令
の動作が終了したことを命令実行制御112に報告す
る。命令実行制御112では、バッファ制御ユニット1
02から送られてくる主記憶データ149をレジスタ群
113内の、命令で指定される汎用レジスタに格納す
る。また信号164により次の命令を実行するために命
令供給回路110に対して信号165を送る。この信号
165により命令供給回路110は次に実行すべき命令
を命令レジスタ111に供給する。
【0075】一方、その信号503が、状態142Bが
“未登録”であること示しているのであれば、プリフェ
ッチアドレスレジスタ群127に保持されている、プリ
フェッチ命令で指定された現在、主記憶読み出し中の主
記憶アドレスが、ロード命令で指定された主記憶アドレ
ス116と一致するものがあるかを一致検出回路130
により検出する。
【0076】その検出結果150が一致しないことを示
しているならば、主記憶アクセス制御126では、図5
に示すように、記憶制御リクエスト送出回路505が記
憶制御ユニット103に対して主記憶アドレス116に
従い、主記憶データを読みだすことをリクエスト信号1
45により指示する。また登録判定回路502は、アド
レス制御129に対して、信号161によりロード命令
で指定される主記憶アドレスとキャッシュ番号をロード
アドレスレジスタ128に保持することを指示する。
【0077】記憶制御ユニット103では、主記憶アド
レスに従い、主記憶データを読みだす。記憶制御ユニッ
ト103の主記憶データ読み出しが終了すると、信号1
46により主記憶アクセス制御126およびキャッシュ
書き込み回路132に報告される。
【0078】キャッシュ書き込み回路132では、記憶
制御ユニット103からロード命令の主記憶読み出しデ
ータの報告を受けると、ロードアドレスレジスタ128
から主記憶アドレスとキャッシュ番号を読み出し、信号
147によりそれぞれのキャッシュメモリ121A、ま
たは121Bに記憶制御ユニット103から読み出され
た主記憶データ148を登録することを指示する。これ
によりキャッシュ書き込み回路132で指定されたキャ
ッシュ番号とキャッシュ番号レジスタ122A、122
Bの比較がキャッシュ番号比較回路123A1、123
A2、123B1、123B2で行なわれる。ここでは
ロード命令がキャッシュメモリBが指定されていると仮
定しているため、この比較回路123B1、123B2
の結果が等しく、キャッシュ制御124Bが動作し、記
憶制御ユニット103から読み出された主記憶データ1
48を登録する。
【0079】またキャッシュ書き込み回路132では、
信号163によりアドレス制御129に対して先にロー
ドアドレスレジスタ128に保持した主記憶アドレスと
キャッシュ番号を解放することを指示する。
【0080】主記憶アクセス制御126の主記憶データ
選択回路504では、信号146によりロード命令の主
記憶読み出しデータの報告を受けると、記憶制御ユニッ
ト103から読み出された主記憶データ148をセレク
タ133により選択し、信号149により命令処理ユニ
ット101に送る。また、これと同時に、主記憶読みだ
し判定回路506が、信号164によりロード命令の動
作が終了したことを命令実行制御112に報告する。命
令実行制御112では、バッファ制御ユニット102か
ら送られてくる主記憶データ149を命令で指定される
汎用レジスタ113に格納する。また信号164により
次の命令を実行するために命令供給回路110に対して
信号165を送る。この信号165により命令供給回路
110は次に実行すべき命令を命令レジスタ111に供
給する。
【0081】一方、何等かの理由でその検出結果150
が一致を示す場合、即ちロード命令で指定した主記憶デ
ータが、ロード命令の実行前に指定されたプリフェッチ
命令により読み出し中である場合には、主記憶アクセス
制御126では、図5に示すように、記憶制御リクエス
ト送出回路505が、ロード命令による主記憶データの
読み出しは行なわず、現在実行中のプリフェッチ命令で
指定された主記憶データの読み出しが終わるまで待つ。
フリップフロップ507は、記憶制御リクエスト送出回
路505により、ロード命令を現在実行中のプリフェッ
チ命令で指定された主記憶データの読み出しが終わるま
でセットされ、それが終了した時にリセットされる。ま
た登録判定回路502は、アドレス制御129に対し
て、信号161によりロード命令で指定される主記憶ア
ドレスとキャッシュ番号をロードアドレスレジスタ12
8に保持することを指示する。
【0082】そして記憶制御ユニット103の主記憶デ
ータの読み出しが終了すると、信号146によりキャッ
シュ書き込み回路132に報告される。キャッシュ書き
込み回路132では記憶制御ユニット103からプリフ
ェッチ命令の主記憶読み出しデータの報告を受けると、
プリフェッチアドレスレジスタ群127から対応する主
記憶アドレスとキャッシュ番号を読み出し、信号147
によりそれぞれのキャッシュメモリ121A、または1
21Bに記憶制御ユニット103から読み出された主記
憶データ148を登録することを指示する。またアドレ
ス制御129に対して先にプリフェッチアドレスレジス
タ群127に保持した主記憶アドレスとキャッシュ番号
を解放することを信号163により指示する。
【0083】また信号146は主記憶アクセス制御12
6にも入力され、主記憶アクセス制御126では、その
主記憶データ148がロード命令で指定されている主記
憶データであるかを判別するために、プリフェッチアド
レスレジスタ群127に保持されている、主記憶データ
148に対応する主記憶アドレスとロードアドレスレジ
スタ128に保持されている主記憶アドレスを一致回路
131の比較結果を判定する。この一致回路131の結
果151が等しくなければ、論理積回路508が0にな
り、主記憶データ選択回路504および主記憶読みだし
判定回路506には何も報告されず、次の記憶制御ユニ
ット103の主記憶データの読み出しが終了するまで待
つ。
【0084】一方、一致回路131の結果151が、一
致を示している場合、即ち現在、主記憶読み出し中のプ
リフェッチ命令で指定された主記憶データでかつ後続の
ロード命令で指定された主記憶データである場合、キャ
ッシュ書き込み回路132によりプリフェッチ命令で指
定されたキャッシュメモリに記憶制御ユニット103か
ら読み出された主記憶データ148の登録の指示を行な
う。
【0085】これと同時に、主記憶リクエスト制御12
6の論理積回路508が1になり、主記憶データ選択回
路504および主記憶読みだし判定回路506に対し
て、ロード命令で指定された主記憶データが届いたこと
が報告され、主記憶データ選択回路504では、記憶制
御ユニット103から読み出された主記憶データ148
をセレクタ133により選択し、信号149により命令
処理ユニット101に送る。また、これと同時に、主記
憶読みだし判定回路506が、信号164によりロード
命令の動作が終了したことを命令実行制御112に報告
する。命令実行制御112では、バッファ制御ユニット
102から送られてくる主記憶データ149を命令で指
定される汎用レジスタ113に格納する。また信号16
4により次の命令を実行するために命令供給回路110
に対して信号165を送る。この信号165により命令
供給回路110は次に実行すべき命令を命令レジスタ1
11に供給する。
【0086】以上のようにロード命令は動作する。ここ
ではキャッシュメモリ121Bについての動作を示した
が、他のキャッシュメモリについても同様に動作する。
【0087】命令供給回路110には、主記憶から先行
して読みだした、いくらかの命令を蓄えることができる
命令バッファ(図示せず)を持っているが、その命令バ
ッファに命令が無くなると、命令フェッチを行なう。命
令フェッチのリクエストは、信号168により送出さ
れ、セレクタ167を経由して、キャッシュメモリ12
1A、または121Bをアクセスする。本実施例におい
て命令は、キャッシュメモリ121A、または121B
のいずれにあってもよいが、ここでは、キャッシュメモ
リ121Aに登録されているものとする。従って命令供
給回路110から命令フェッチが発行されるときには、
リクエスト168はキャッシュメモリAのキャッシュ番
号を示すようになっている。命令実行制御112は、命
令フェッチ時にはセレクタ167によりリクエスト16
8に選択するようになっている。命令フェッチを受け取
ったバッファ制御ユニット102は、ロード命令の動作
と同様に動作する。ただし、命令フェッチリクエストに
対しては、キャッシュメモリAのみが応答すること、主
記憶アクセス制御126から出力される信号164が、
命令フェッチ動作の終了を示し、命令供給回路110に
入力され、主記憶104から読みだされた命令が命令供
給回路110に入力されることが異なる。
【0088】以上により本実施例の装置の基本的な動作
が説明されたが、さらに、図4のプログラムがどのよう
に実行されるかを説明する。
【0089】まず、項番1のロード命令が実行されたと
き、この命令が要求する主記憶データがいずれのキャッ
シュメモリにもないと仮定すると、そのデータを含むブ
ロック(16バイトと仮定している)が、主記憶104
から読み出され、その内のこの命令が指定するデータ
(8バイトと仮定している)が、この命令が指定する浮
動小数点レジスタ#1に転送され、さらに、この命令が
指定するキャッシュメモリ121Aにこのブロックが記
憶される。こうしてこの命令の実行が終了する。この命
令の終了にあわせて、次の項番2のロード命令が実行さ
れる。この命令が要求する主記憶データも、いずれのキ
ャッシュメモリにないと仮定すると、この命令も項番1
のロード命令と同様に実行され、この命令が要求する主
記憶データを含むブロック(16バイト)が、主記憶1
04から読み出され、その内のこの命令が指定するデー
タ(8バイト)が、この命令が指定する浮動小数点レジ
スタ#2に転送され、さらに、この命令が指定するキャ
ッシュメモリ121Aにこのブロックが記憶される。こ
うしてこの命令の実行が終了する。
【0090】この命令の終了にあわせて、次の項番3の
プリフェッチ命令が実行される。この命令が指定する主
記憶データもいずれのキャッシュメモリにないと仮定す
ると、このデータの読みだしが主記憶アクセス回路12
6により要求される。この時点で、この命令の実行の終
了が、命令供給回路110に通知される。
【0091】このプリフェッチ命令により要求された主
記憶データがその後主記憶から読み出されたときには、
このデータは、この命令が指定するキャッシュメモリB
にキャッシュ書き込み回路132により、書き込まれ
る。
【0092】本実施例では、この主記憶データが実際に
主記憶から読み出されるのを待たないで、次の項番4の
プリフェッチ命令が実行される。この命令が指定する主
記憶データもいずれのキャッシュメモリにないと仮定す
ると、このデータの読みだしも主記憶アクセス回路12
6により要求される。この時点で、この命令の実行の終
了が、命令供給回路110に通知される。
【0093】このプリフェッチ命令により要求された主
記憶データがその後主記憶から読み出されたときには、
このデータは、この命令が指定したキャッシュメモリB
にキャッシュ書き込み回路132により、書き込まれ
る。
【0094】本実施例では、この主記憶データが実際に
主記憶から読み出されるのを待たないで、次の項番3の
乗算命令が実行される。この命令では、項番1、2のロ
ード命令でロードされた、浮動小数点レジスタ#1,#
2の内容の積が求められ、浮動小数点レジスタ#3に格
納され、この命令の実行が終了する。
【0095】続いて、項番6の加算命令が実行される。
この命令では、項番3の乗算命令で求められた、浮動小
数点レジスタ#3内の積と浮動小数点レジスタ#0の内
容(この内容は、予め0にセットしてあると仮定する)
とが加算され、その結果が浮動小数点レジスタ#0に格
納され、この命令の実行が終了する。
【0096】続いて、項番7のロード命令が実行され
る。この命令が要求する主記憶データのアドレスは、項
番1のロード命令が要求したデータのアドレスとは8バ
イトしか異ならないので、項番1のロード命令の実行時
に主記憶からフェッチされたブロック内にある。従っ
て、今の例では、このデータは、キャッシュメモリAに
保持されていることになる。従って、この命令が要求す
るデータはキャッシュメモリAから読み出され、浮動小
数点レジスタ#1に格納されて、この命令の実行が終了
する。
【0097】つぎの項番8のロード命令についても同様
である。
【0098】本実施例で重要なことは、先行する項番3
または4のプリフェッチ命令によりフェッチされたブロ
ックをキャッシュメモリに書き込むのと並行して、項番
7または8のロード命令のためのキャッシュメモリの読
み出しを並行して行えることである。即ち、本実施例で
は、項番3または4のプリフェッチ命令により要求され
たデータが主記憶から読み出され、キャッシュメモリに
書き込まれるのを待たないで、後続の項番5以降の命令
を実行している。従って、そのデータが項番7または8
のロード命令の実行時にバッファ制御ユニット102に
主記憶104から到達することが起こりうる。しかし、
本実施例では、項番3または4のプリフェッチ命令が指
定するキャッシュメモリはキャッシュメモリBであり、
項番7または8のロード命令は、これと異なるキャッシ
ュメモリAを指定するようになっているので、前者の命
令によるデータの書き込みと後者の命令によるデータの
読みだしは互いに影響されることなく並行して実行され
ることになる。
【0099】さて、項番7または8のロード命令の実行
後に、項番9,10の乗算命令と加算命令が、項番6,
7の命令と同様に実行される。
【0100】その後項番11のロード命令が実行され
る。図4のプログラムは、このロード命令が要求する主
記憶データを含むブロックを項番3のプリフェッチ命令
により先行して主記憶より読みだされるようにプログラ
ムされている。従って、本実施例では、項番3の後の、
項番4から10の命令列の実行に通常必要な時間よりメ
モリからのデータの読みだし時間が短いように設計され
ている。このため、項番11のロード命令の実行時に
は、この命令が必要とする主記憶データは、通常は、項
番3のプリフェッチ命令が指定するキャッシュメモリB
に既に登録されている。従って、項番11のロード命令
の実行時は、それが要求するデータをキャッシュメモリ
Bから読みだすことができ、この命令を高速に実行する
ことができる。
【0101】もし、なんらかの理由、例えば、主記憶に
対する、他の装置、例えば、入出力装置からのメモリア
クセス要求との競合により、項番3のプリフェッチ命令
のための主記憶データの読みだしが遅延されたときに
は、項番11のロード命令の実行時には、この命令が要
求するデータがまだキャッシュメモリBに登録されてい
ないことが起こりうる。
【0102】本実施例で重要なことは、既に述べたよう
に、このようなときには、主記憶アクセス126は、こ
のロード命令のための主記憶アクセスを要求しないで、
先行するプリフェッチ命令、今の例では、項番3の命令
により起動した主記憶データ読み出し要求により読み出
したブロックが、バッファ制御ユニット102に読み出
されたときに、このブロック内のデータをこのロード命
令が要求したデータとして利用するようになっている。
これにより、同じデータを主記憶から読みださないよう
にするとともに、ロード命令の実行がなるべく遅延しな
いようにしている。
【0103】さて、項番11のロード命令の実行後に、
項番12のロード命令が同様に実行される。
【0104】その後、項番13,14のプリフェッチ命
令が項番3,4の命令と同様に実行される。これらの項
番13、14の命令は、項番1,2,7,8のロード命
令が図4のループのつぎの繰返しのときに要求するデー
タを先行して主記憶よりキャッシュメモリAに読みだす
ためのものである。
【0105】以下の命令も同様に実行される。それらの
命令のなかで、本実施例において重要なことは、とく
に、項番3,4のプリフェッチ命令により主記憶から読
み出したデータをキャッシュメモリAに書き込むのと並
行して、項番17、18のロード命令が実行されたとき
でも、これらのロード命令が要求するデータ(これら
は、項番3または4のプリフェッチ命令により既に主記
憶からキャッシュメモリBに読み出されたブロックに含
まれている)をキャッシュメモリBから読みだせること
である。このことは、項番7,8のロード命令に関して
説明したことと同様である。さらに、図4のループのつ
ぎの繰返しにより、項番1、2のロード命令が実行され
たときに、ループの第一回の繰返し時に実行された項番
13または14の命令による主記憶データが送れて読み
出されたときには、項番1または2のための主記憶読み
出しを要求しないで、項番13または14の命令の実行
により主記憶から読み出されたデータを項番17または
18の命令に利用する。このことは、先に、項番11の
ロード命令に関して説明したのと同じである。
【0106】以上から明らかなごとく、本実施例では、
まず演算で用いる主記憶データについて、予め演算で使
用する前にプリフェッチ命令によりキャッシュメモリに
読出し、次に実際に演算で使用するときにロード命令で
主記憶データを読みだす。さらに独立したキャッシュメ
モリが2面あることにより、ロード命令でキャッシュメ
モリを読みだす処理と、プリフェッチ命令でキャッシュ
メモリに書き込む処理とが衝突せずに独立に並列に動作
できる。
【0107】また、先行するプリフェッチ命令が指定す
る主記憶データがまだキャッシュメモリに登録されてい
ない段階で、この主記憶データのロードを要求する後続
のロード命令が実行されたとき、このロード命令のため
の、主記憶データの読み出しを行なう必要がない。これ
により、主記憶へのアクセスを減らしている。
【0108】(実施例2)本実施例では、実施例1と異
なり、プリフェッチ命令、ロード命令としてキャッシュ
番号を指定しない命令を用いる。図7(a)はプリフェ
ッチ命令で、(b)はロード命令を示す。本実施例で
は、同図(c)に示すキャッシュスイッチ命令を使用す
る。この命令はキャッシュ番号を指定する。
【0109】図9は、本実施例によるデータ処理装置を
示す。図において、図1と同じ参照番号は同じものをさ
す。本実施例では、キャッシュ番号を保持するプリフェ
ッチキャッシュレジスタ421と、この内容と異なるキ
ャッシュ番号を出力する変換回路422と、命令キャシ
ュ番号レジスタ420と、これらの出力の一つを選択す
るセレクタ423が設けられている点が主に実施例1と
異なる。
【0110】プリフェッチ命令は、記憶制御ユニット1
03から主記憶データを読み出しキャッシュメモリ12
1A、または121Bに登録することを指示する命令で
ある。これらのフォーマットは、図2と同様である。キ
ャッシュスイッチ命令は、プリフェッチ命令が指定され
る場合にどのキャッシュメモリを使用するかを指示する
命令である。このフォーマットは、命令コードであるC
acheSw、キャッシュメモリ121A、121Bの
いずれかのキャッシュ番号を保持するレジスタ群113
内の一つの汎用レジスタを指定するレジスタ番号に分か
れる。
【0111】これらの命令列を用いたプログラムの例を
図3を用い、そのオブジェクトプログラムを図8に示
す。このオブジェクトプログラムは図3のループを2重
に展開して処理するものである。これらは以下のように
動作する。
【0112】(1)項番1のロード命令では、キャッシ
ュメモリ121A、121Bのいずれかから配列Y
(i)の要素を浮動小数点レジスタ#1(FR1)にロ
ードする。ここでは、予めプリフェッチ用にキャッシュ
メモリ121Bが選択されているとする。従って、この
ロード命令ではキャッシュメモリ121Aからロードさ
れる。また汎用レジスタ#0(GR0)には、初期値と
して配列Yの先頭アドレスが格納されている。汎用レジ
スタ#0がベースレジスタであり、インデクッスレジス
タフィールドは0を示し、汎用レジスタは指定されず、
主記憶アドレス計算時に0として計算されることを示
す。またディスプレースメントは0である。
【0113】(2)項番2のロード命令では、キャッシ
ュ121A、121Bのいずれかから配列Z(i)の要
素を浮動小数点レジスタ#2(FR2)にロードする。
このロード命令でもキャッシュメモリ121Aからロー
ドされる。ここで汎用レジスタ#1(GR1)には、項
番1と同様に初期値として配列Zの先頭アドレスが格納
されている。
【0114】(3)項番3のプリフェッチ命令では、汎
用レジスタ#0の内容とデイスプレースメントで示され
る16の値が加算され、その加算結果で示される配列Y
の複数の要素がキャッシュメモリ121A、121Bの
いずれかにロードされる。ここでは、予めプリフェッチ
用にキャッシュメモリ121Bが選択されていると仮定
しているため、キャッシュメモリ121Bに主記憶デー
タがロードされる。またキャッシュメモリにロードされ
る配列Yの要素数は、配列Yの各要素が8バイトデータ
とすると、ブロックが16バイトであるため2個にな
る。
【0115】(4)項番4のプリフェッチ命令では、汎
用レジスタ#1の内容とデイスプレースメントで示され
る16の値が加算され、その加算結果で示される配列Z
の複数の要素がキャッシュ121A、121Bのいずれ
かにロードされる。ここでも項番3と同様に、キャッシ
ュメモリ121Bに主記憶データがロードされる。また
キャッシュメモリにロードされる配列Zの要素数は、項
番3と同様に2個になる。
【0116】(5)項番5の乗算命令は、配列Y(i)
の1要素と配列Z(i)の1要素の乗算を行なうための
命令であり、浮動小数点レジスタ#1の内容と浮動小数
点レジスタ#2の内容を乗算し、その結果を浮動小数点
レジスタ#3に格納する。この命令は従来命令と同じで
ある。
【0117】(6)項番6の加算命令は、配列Y(i)
の1要素と配列Z(i)の1要素の乗算結果をXに加算
するための命令であり、浮動小数点レジスタ#0の内容
と浮動小数点レジスタ#3の内容を加算し、その結果を
浮動小数点汎用レジスタ#0に格納する。ここで浮動小
数点レジスタ#0には、初期値としてXの値が格納され
ているとする。また、この命令は従来命令と同じであ
る。
【0118】ここまでで1回目(i)のループの計算を
終えたことになる。
【0119】(7)項番7のロード命令では、キャッシ
ュメモリ121A、121Bのいずれかから配列Y(i
+1)の要素を浮動小数点レジスタ#1(FR1)にロ
ードする。ここでは、項番1と同様に、キャッシュメモ
リ121Aからロードされる。また、この時のディスプ
レースメントは、オペランドデータが8バイトであるた
め、8である。
【0120】(8)項番8のロード命令では、キャッシ
ュメモリ121A、121Bのいずれかから配列Z(i
+)の要素を浮動小数点レジスタ#2(FR2)にロー
ドする。また、ここでも項番1と同様に、キャッシュメ
モリ121Aからロードされる。
【0121】(9)項番9の乗算命令は、項番5と同様
に、配列Y(i+1)の1要素と配列Z(i+1)の1
要素の乗算を行なうための命令である。
【0122】(10)項番10の加算命令は、項番6と
同様に、配列Y(i+1)の1要素と配列Z(i+1)
の1要素の乗算結果をXに加算するための命令である。
【0123】ここまでで2回目(i+1)のループの計
算を終えたことになる。
【0124】(11)項番11の加算命令は、汎用レジ
スタ#4の内容に1を加算する命令である。この汎用レ
ジスタ4には、予めキャッシュメモリ121Bのキャッ
シュ番号1が設定されていると仮定する。このため、こ
の加算により汎用レジスタ#4の内容は、キャッシュメ
モリ121Aのキャッシュ番号2が保持される。なぜな
ら独立したキャッシュメモリが2つであるため、キャッ
シュ番号としては0と1で表わせ、汎用レジスタの最下
位1ビットで2つのキャッシュメモリを区別できるため
である。
【0125】(12)項番12のキャッシュスイッチ命
令は、この命令の直後の命令から、汎用レジスタ#4の
内容2が示すキャッシュメモリ121Aをプリフェッチ
用キャッシュメモリに使用することを指示する命令であ
る。
【0126】(13)項番13の加算命令は次の配列Y
(i+2)の要素の主記憶アドレスを求めるための命令
であり、汎用レジスタ#0の内容に16を加算し、汎用
レジスタ#0に格納する。この命令は従来命令と同じで
ある。
【0127】(14)項番14の加算命令は次の配列Z
(i+2)の要素の主記憶アドレスを求めるための命令
であり、汎用レジスタ#1の内容に16を加算し、汎用
レジスタ#1に格納する。この命令は従来命令と同じで
ある。
【0128】(15)項番15の分岐命令は、ループが
終了したか否かを判定するための命令であり、汎用レジ
スタ#3の内容が0でないとき、Loopに分岐する。
この時、汎用レジスタ#3の内容を1だけ減算する。ま
た0の時、分岐を行なわず、それ以降に続く命令を実行
する。ここで汎用レジスタ#3には、初期値としてルー
プカウント数nが格納されているとする。
【0129】以上の命令動作において、項番1、2のロ
ード命令が図8のループの第1回目に実行されたときに
は、キャッシュメモリにデータが登録されていないた
め、主記憶からのデータ供給のオーバーヘッドが発生す
る。しかし、本実施例では、それ以降のロード命令では
キャッシュメモリにデータが必ず登録されている状態に
なり、主記憶からのデータ供給のオーバーヘッドが発生
せず、高速に命令を実行できる。たとえば、項番12の
キャッシュスイッチ命令により、プリフェッチ命令とロ
ード命令が使用するキャッシュメモリが切りかえられる
ため、項番1又は2のロード命令が図8のループの第2
回目に実行されたときには、項番3又は4のプリフェッ
チ命令が図8のループの第1回目にフェッチしたデータ
を格納したキャッシュメモリからデータを読み出しう
る。
【0130】さらに本実施例では後述するように、プリ
フェッチ命令が使用するキャッシュメモリとロード命令
が使用するキャッシュメモリとが異なるように制御され
る、たとえば項番3又は4のプリフェッチ命令によるキ
ャッシュメモリへのデータ書き込みを並行して、項番7
又は8のロード命令によるキャッシュからのデータ読み
出しを並行して行える。
【0131】これらの命令の動作を図9に従い、説明す
る。まずキャッシュスイッチ命令について説明する。命
令処理ユニット101内の命令レジスタ111に命令が
取り込まれると、命令実行制御112が解読する。命令
実行制御112がキャッシュスイッチ命令であることを
識別すると、キャッシュスイッチ命令で指定されたレジ
スタ群113の中の汎用レジスタの内容を読み出し、読
み出した内容であるキャッシュ番号をバッファ制御ユニ
ット102内のプリフェッチキャッシュ番号レジスタ4
21にリクエスト信号117により設定する。命令実行
制御112ではこれによりキャッシュスイッチ命令を終
了し、命令供給回路110に対して信号165を送る。
この信号165により命令供給回路110は次に実行す
べき命令を命令レジスタに供給する。
【0132】次にプリフェッチ命令について説明する。
命令処理ユニット101内の命令レジスタ111に命令
が取り込まれると、命令実行制御112が解読する。命
令実行制御112がプリフェッチ命令であることを識別
すると、命令で指定される主ベースレジスタ、インデッ
クスレジスタ、デイスプレースメントをもとに汎用レジ
スタ113を読み出し、アドレス加算器115により主
記憶アドレス116を計算する。また命令制御112で
は、プリフェッチ命令が指定されたことをバッファ制御
ユニット102にリクエスト信号117により知らせ
る。
【0133】バッファ制御ユニット102ではプリフェ
ッチ命令の動作を行なうことが指示されると、プリフェ
ッチ命令が指定されたことによりセレクタ423により
プリフェッチキャッシュ番号レジスタ421を選択し、
それとキャッシュ番号レジスタ122A、122Bの比
較がキャッシュ番号比較回路123A、123Bで行な
われる。この比較回路123A、123Bの結果は、そ
れぞれのキャッシュ制御124A、124Bに送られ、
その結果が等しい場合に対応するキャッシュ制御124
Aまたは124Bだけが動作する。本実施例では、プリ
フェッチキャッシュ番号レジスタ421にはあらかじめ
値1が設定されていると仮定しているため、キャッシュ
メモリ121Bがこのプリフェッチ命令のために使用さ
れることになる。したがって、キャッシュ制御124B
が命令制御112より送られてくる主記憶アドレス11
6をセレクタ125Bにより選択し、キャッシュメモリ
121Bを検索する。キャッシュメモリ121Bでは、
主記憶アドレス116に対応するデータが登録されてい
るか否かの状態142Bと、登録されている場合は対応
する主記憶データ143Bを出力する。キャッシュメモ
リ121Bから出力された状態142Bは主記憶アクセ
ス制御126に送られる。
【0134】主記憶アクセス制御126では、状態14
2Bが“既に登録済み”であれば、図1で説明したのと
同様に、主記憶アクセス制御126の主記憶読み出し判
定回路506が信号165によりプリフェッチ命令の動
作が終了したことを命令実行制御112に報告する。一
方、状態142BB“未登録”を示しているのであれ
ば、アドレス制御129によりプリフェッチアドレスレ
ジスタ群127に、その主記憶アドレス116とプリフ
ェッチキャッシュ番号レジスタ421の内容を保持す
る。また記憶制御ユニット103に対して主記憶アドレ
ス116に従い、主記憶データを読みだすことをリクエ
スト信号145により指示する。これより以下の動作は
図1のプリフェッチ命令で説明した動作と同じである。
【0135】以上のようにプリフェッチ命令は動作す
る。また、ここでは、キャッシュメモリBについての動
作を示したが、他のキャッシュメモリについても同様に
動作する。
【0136】次にロード命令について説明する。命令処
理ユニット101内の命令レジスタ111に命令が取り
込まれると、命令実行制御112が解読する。命令実行
制御112がロード命令であることを識別すると、命令
で指定されるベースレジスタ、インデックスレジスタ、
ディスプレースメントをもとに汎用レジスタ113を読
み出し、アドレス加算器115により主記憶アドレス1
16を計算する。また命令実行制御112では、ロード
命令が指定されたことをバッファ制御ユニット102に
リクエスト信号117により知らせる。
【0137】バッファ制御ユニットではロード命令の動
作を行なうことが指示されると、まずロード命令が指定
されたことによりセレクタ423によりロードキャッシ
ュ番号変換回路422の内容が選択され、それとキャッ
シュ番号レジスタ122A、122Bの比較がキャッシ
ュ番号比較回路123A、123Bで行なわれる。ここ
でロードキャッシュ番号変換422は、プリフェッチキ
ャッシュ番号レジスタ421に保持されているキャッシ
ュ番号以外のキャッシュ番号を出力するものであり、た
とえばプリフェッチキャッシュ番号レジスタ421にキ
ャッシュメモリAのキャッシュ番号が保持されている
と、キャッシュメモリBのキャッシュ番号を出力する。
【0138】この比較回路123A、123Bの結果
は、それぞれのキャッシュ制御124A、124Bに送
られ、その結果が等しい場合に対応するキャッシュ制御
124A、124Bだけが動作する。ここでは仮にキャ
ッシュメモリ121Bが対応したとすると、キャッシュ
制御124Bが命令制御112より送られてくる主記憶
アドレス116をセレクタ125Bにより選択し、キャ
ッシュメモリ121Bを検索する。キャッシュメモリ1
21Bでは、主記憶アドレス116に対応するデータが
登録されているか否かの状態142Bと、登録されてい
る場合は対応する主記憶データ143Bを出力する。キ
ャッシュメモリ121Bから出力された状態142B
は、主記憶アクセス制御126に送られる。
【0139】主記憶アクセス制御126では、状態14
2Bが既に登録済みであれば、その動作は図1のロード
命令で説明した動作と同じである。一方、状態142B
が未登録を示しているのであれば、アドレス制御129
によりロード命令で指定される主記憶アドレスとキャッ
シュ番号変換422の出力であるキャッシュ番号をロー
ドアドレスレジスタ128に保持する以外は、図1のロ
ード命令で説明した動作と同じである。
【0140】以上のようにロード命令は動作する。ここ
ではキャッシュメモリ121Bについての動作を示した
が、他のキャッシュメモリについても同様に動作する。
【0141】なお、本実施例2でも、実施例1と同じ
く、命令はキャッシュメモリAのみに保持されていると
仮定している。命令をフェッチするリクエスト168は
本実施例では、実施例1と異なり、キャッシュメモリA
の番号を指定する必要はない。それにかわり、命令キャ
ッシュ番号レジスタ420には、キャッシュメモリAの
番号0が保持されている。セレクタ167は命令フェッ
チリクエスト168が入力されるときには、これを選択
してセレクタ423に送る。セレクタ423は、この命
令フェッチリクエストに応答してレジスタ420内の番
号0を選択する。この後は、前述したロード命令、プリ
フェッチ命令のときと同じようにして、キャッシュメモ
リAから命令が読み出される。
【0142】以上により本実施例2の装置の基本的な動
作が説明されたが、さらに、図8のプログラムがどのよ
うに実行されるかを説明する。
【0143】まず、項番1のロード命令が実行されたと
き、この命令が要求する主記憶データがいずれのキャッ
シュメモリにもないと仮定すると、そのデータを含むブ
ロック(16バイトと仮定している)が、主記憶104
から読み出され、その内のこの命令が指定するデータ
(8バイトと仮定している)が、この命令が指定する浮
動小数点レジスタ#1に転送される。本実施例では、キ
ャッシュ番号レジスタ421には、初期値として、キャ
ッシュメモリBに対する番号1が予め記憶されていると
仮定している。従って、この項番1のロード命令の実行
時には、ロードキャッシュ変換回路422は、キャッシ
ュメモリAに対するキャッシュ番号0を出力している。
このロード命令に応答して、セレクタ423はロードキ
ャッシュ変換回路422の出力0を選択するので、この
ロード命令により主記憶から読み出されたブロックは、
キャッシュメモリ121Aに記憶される。こうしてこの
命令の実行が終了する。
【0144】この命令の終了にあわせて、次の項番2の
ロード命令が実行される。この命令が要求する主記憶デ
ータも、いずれのキャッシュメモリにないと仮定する
と、この命令も項番1のロード命令と同様に実行され、
この命令が要求する主記憶データを含むブロック(16
バイト)が、主記憶104から読み出され、その内のこ
の命令が指定するデータ(8バイト)が、この命令が指
定する浮動小数点レジスタ#2に転送され、さらに、項
番1のロード命令の場合と全く同様にして、キャッシュ
メモリ121Aにこのブロックが記憶される。こうして
この命令の実行が終了する。
【0145】この命令の終了にあわせて、次の項番3の
プリフェッチ命令が実行される。この命令が指定する主
記憶データもいずれのキャッシュメモリにないと仮定す
ると、このデータの読みだしが主記憶アクセス回路12
6により要求される。この時点で、この命令の実行の終
了が、命令供給回路110に通知される。
【0146】このプリフェッチ命令により要求された主
記憶データがその後主記憶から読み出されたときには、
このデータは、キャッシュ番号レジスタ421が指定し
ているキャッシュメモリBにキャッシュ書き込み回路1
32により、書き込まれる。本実施例では、この主記憶
データが実際に主記憶から読み出されるのを待たない
で、このプリフェッチ命令の実行の終了に応答して次の
項番4のプリフェッチ命令が実行される。この命令が指
定する主記憶データもいずれのキャッシュメモリにない
と仮定すると、このデータの読みだしも主記憶アクセス
回路126により要求される。この時点で、この命令の
実行の終了が、命令供給回路110に通知される。
【0147】このプリフェッチ命令により要求された主
記憶データがその後主記憶から読み出されたときには、
キャッシュ書き込み回路132によりこの命令が指定し
たキャッシュメモリBに書き込まれる。
【0148】この主記憶データが実際に主記憶から読み
出されるのを待たないで、次の項番5の乗算命令が実行
される。この命令では、実施例1と同じく、項番1、2
のロード命令でロードされた、浮動小数点レジスタ#
1,#2の内容の積が求められ、浮動小数点レジスタ#
3に格納され、この命令の実行が終了する。
【0149】続いて、項番6の加算命令が実行される。
この命令では、実施例1と同じく、項番3の乗算命令で
求められた、浮動小数点レジスタ#3内の積と浮動小数
点レジスタ#0の内容(この内容は、予め0にセットし
てあると仮定する)とが加算され、その結果が浮動小数
点レジスタ#0に格納され、この命令の実行が終了す
る。
【0150】続いて、項番7のロード命令が実行され
る。この命令が要求する主記憶データのアドレスは、実
施例1と同じく、項番1のロード命令が要求したデータ
のアドレスとは8バイトしか異ならないので、項番1の
ロード命令の実行時に主記憶からフェッチされたブロッ
ク内にある。従って、今の例では、このデータは、キャ
ッシュメモリAに保持されていることになる。従って、
この命令が要求するデータはキャッシュメモリAから読
み出され、浮動小数点レジスタ#1に格納されて、この
命令の実行が終了する。
【0151】つぎの項番8のロード命令についても同様
である。
【0152】本実施例で重要なことは、先行する項番3
または4のプリフェッチ命令によりフェッチされたブロ
ックをキャッシュメモリに書き込むのと並行して、項番
7または8のロード命令のためのキャッシュメモリの読
み出しを並行して行えることである。即ち、本実施例で
は、項番3または4のプリフェッチ命令により要求され
たデータが主記憶から読み出され、キャッシュメモリに
書き込まれるのを待たないで、後続の項番5以降の命令
を実行している。従って、そのデータが項番7または8
のロード命令の実行時にバッファ制御ユニット102に
主記憶104から到達することが起こりうる。しかし、
本実施例では、項番3または4のプリフェッチ命令が要
求した主記憶データの登録に用いるキャッシュメモリは
キャッシュメモリBであり、項番7または8のロード命
令が要求した主記憶データの読みだしに用いるキャッシ
ュメモリは、これと異なるキャッシュメモリAであるよ
うにこれらの命令のために使用するキャッシュメモリ
が、セレクタ423により選択されるので、前者の命令
によるデータの書き込みと後者の命令によるデータの読
みだしは互いに影響されることなく並行して実行される
ことになる。
【0153】さて、項番7または8のロード命令の実行
後に、項番9,10の乗算命令と加算命令が、項番6,
7の命令と同様に実行される。
【0154】その後項番11の加算命令が実行される。
この命令は、レジスタ群113内の汎用レジスタ#4の
内容(現在の例では、値が1)を図8のループを実行す
る毎に、さらに1増大するために用いられる。この増大
により、次ぎのキャッシュスイッチ命令によりプリフェ
ッチ命令用のキャッシュメモリを切り替えることができ
る。今の例では、この命令を実行した結果、この汎用レ
ジスタの内容は2となる。
【0155】即ち、次ぎの項番12のキャッシュスイッ
チ命令が実行されると、この汎用レジスタ#4内の値の
最下位ビット(今の例では0)がプリフェッチキャッシ
ュレジスタ番号レジスタ421にセットされる。こうし
て、この命令より後に実行されるプリフェッチ命令およ
びロード命令に対しては、それぞれ、キャッシュメモリ
A,Bが用いられることになる。
【0156】次ぎの項番13,14の加算命令が実行さ
れて、項番1、2のロード命令が要求するメモリアドレ
スが16だけ増大されるように、事前に汎用レジスタ#
0、#1の内容が16だけ増大される。
【0157】次ぎに項番15の分岐命令が実行され、そ
の後、図8のループが繰り返えされる。
【0158】図8のプログラムは、このループ繰返しで
再実行された項番1のロード命令が要求する主記憶デー
タを含むブロックを項番3のプリフェッチ命令により先
行して主記憶より読みだされるようにプログラムされて
いる。従って、本実施例では、項番3の後の、項番4か
ら15の命令列の実行に通常必要な時間よりメモリから
のデータの読みだし時間が短いように設計されている。
このため、項番1のロード命令の再実行時には、この命
令が必要とする主記憶データは、通常は、項番3のプリ
フェッチ命令のために用いるキャッシュメモリBに既に
登録されている。従って、項番1のロード命令の再実行
時は、それが要求するデータをキャッシュメモリBから
読みだすことができ、この命令を高速に実行することが
できる。もし、なんらかの理由、例えば、主記憶に対す
る、他の装置、例えば、入出力装置からのメモリアクセ
ス要求との競合により、項番3のプリフェッチ命令のた
めの主記憶データの読みだしが遅延されたときには、項
番1のロード命令の再実行時には、この命令が要求する
データがまだキャッシュメモリBに登録されていないこ
とが起こりうる。
【0159】本実施例で重要なことは、既に述べたよう
に、このようなときには、主記憶アクセス126は、こ
のロード命令のための主記憶アクセスを要求しないで、
先行するプリフェッチ命令、今の例では、項番3の命令
により起動した主記憶データ読み出し要求により読み出
したブロックが、バッファ制御ユニット102に読み出
されたときに、このブロック内のデータをこのロード命
令が要求したデータとして利用するようになっている。
これにより、同じデータを主記憶から読みださないよう
にするとともに、ロード命令の実行がなるべく遅延しな
いようにしている。
【0160】このキャッシュスイッチ命令を用いること
によりプログラムでは、プリフェッチ命令、ロード命令
でキャッシュ番号を意識する必要がなくなり、さらにル
ープ構造をもつプログラムにおいては、ループが1回繰
り返される毎にキャッシュスイッチ命令でキャッシュメ
モリを切り替えることができるので、ループ単位でキャ
ッシュメモリに必ず存在するという状態が作り出せ、主
記憶アクセスを高速に行なうことができる。
【0161】(実施例3)以上、説明した実施例1,2
では、いずれかの命令でキャッシュメモリを指定し、命
令で複数のキャッシュメモリのいずれかを指定する必要
がある。次にプログラムで複数のキャッシュメモリを意
識することなく、主記憶アクセスを高速に行なう実施例
3について述べる。
【0162】図12は本実施例による装置の概略図であ
る。図において図1又は図9と同じ参照番号は同じもの
をさす。本実施例では、実施例2のプリフェッチキャッ
シュ番号レジスタ421にかえて、1ビットのプリフェ
ッチキッシュ番号カウンタ421Aが設けられ、このカ
ウン421Aを命令実行制御112が、ループの繰り返
しを判定する分岐命令(BCT命令)を解読したときに
出力する信号166Aによりカウントアップする点が実
施例2と主に異なる。
【0163】これを実現するために、デ−タ処理装置に
は、図10(a),(b)で示すようなプリフェッチ命
令とロード命令を用いる。これらは実施例2で用いた、
図7(a),(b)に示す命令と同じである。本実施例
では、図7(c)のキャッシュスイッチ命令を用いな
い。
【0164】これらの命令列を用い、図3の処理を行う
オブジェクトプログラムを図11に示す。このプログラ
ムは図8のプログラム中の項番12のキッシュスイッチ
命令と、その命令が指定する汎用レジスタ#4を更新す
るための、項番11の加算命令を省略したものになって
いる。
【0165】カウンタ421Aにはあらかじめキャッシ
ュメモリBの番号1が保持されていて、実施例2のプリ
フェッチキャッシュ番号レジスタ421と同じように使
用される。したがって、図11の項番1,2,7,8の
ロード命令はキャッシュメモリAに対して行なわれ、項
番3,4のプリフェッチ命令は、キャッシュメモリBに
対して行なわれる。項番13の分岐命令を命令実行制御
168Aが解読したときには、これが出力する信号16
6Aによりカウンタ421がカウントアップされ、その
値が0になる。したがって、図11のループが繰り返さ
れたときには、ロード命令とプリフェッチ命令が使用す
るキャッシュメモリがそれぞれB,Aとなる。このよう
に、本実施例では、ループの繰り返しごとにプリフェッ
チ命令とロード命令が使用するキャッシュメモリを切り
かえることができ、実施例2で用いたキャッシュスイッ
チ命令も必要としない。
【0166】以上、データを一時格納するキャッシュメ
モリを2個としたが、さらに増やしても同様な考え方で
実現できる。さらに命令については、データと同じキャ
ッシュメモリに格納すると仮定しているが、命令とデー
タとを分けたキャッシュメモリ構成としてもよい。
【0167】
【発明の効果】本発明によれば、主記憶データを一時格
納する、複数で、かつそれぞれが同格のキャッシュメモ
リを用いて、一方を主記憶データの先取り用キャッシュ
メモリとして、他方を一般的なキャッシュメモリとして
動作できるので、プログラムにおける主記憶データのア
クセスにおいて、ロード命令でキャッシュメモリから読
みだす処理と、プリフェッチ命令でキャッシュメモリに
書き込む処理とが衝突せずに独立にアクセスでき、主記
憶アクセスを高速に行なうことができる。
【図面の簡単な説明】
【図1】本発明によるデータ処理装置の第1の実施例の
構成図。
【図2】図1の装置に用いられる、それぞれ複数のキャ
ッシュの1つを指定できるプリフェッチ命令とキャッシ
ュロード命令のフォーマットを示す図
【図3】内積計算ソースプログラムの例を示す図。
【図4】図2の命令列を用いた内積計算オブジェクトプ
ログラムの例を示す図。
【図5】図1の主記憶アクセス制御(126)のブロッ
ク図。
【図6】図1のアドレス制御(129)のブロック図。
【図7】本発明による第2の実施例で用いるプリフェッ
チ命令、キャッシュスイッチ命令のフォーマットを示す
図。
【図8】図7の命令列を用いた内積計算オブジェクトプ
ログラムの例を示す図。
【図9】本発明によるデータ処理装置の第2の実施例を
示す図。
【図10】本発明の第3の実施例で用いるプリフェッチ
命令とロード命令のフォーマットを示す図。
【図11】図10の命令列を用いた内積計算オブジェク
トプログラムの例を示す図。
【図12】本発明によるデータ処理装置の第3の実施例
を示す図。
【符号の説明】
101…命令処理ユニット、102…バッファ制御ユニ
ット、103…記憶制御ユニット、111…命令レジス
タ、112…命令実行制御、113…汎用レジスタ、浮
動小数点レジスタを含むレジスタ群、114…演算器、
115…アドレス加算器、124A/B…キャッシュ制
御、121A、121B…キャッシュメモリ、126、
626…主記憶アクセス制御、127…プリフェッチキ
ャッシュアドレスレジスタ、128…ロードキャッシュ
アドレスレジスタ、122A、122B…キャッシュ番
号レジスタ、132…キャッシュ書き込み回路、130
…一致検出回路、422…キャッシュ番号変換。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中澤 喜三郎 神奈川県相模原市相模台6丁目29番10号 (72)発明者 中村 宏 茨城県つくば市並木4丁目1043番 (72)発明者 位守 弘充 茨城県つくば市天久保2丁目23番6号 (72)発明者 中越 順二 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 和田 英夫 神奈川県秦野市堀山下1番地 株式会社日 立製作所神奈川工場内 (72)発明者 濱中 直樹 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】主記憶と、 該主記憶のデータの一部のデータの写をそれぞれ保持す
    る、複数のキャッシュメモリと、 主記憶内のデータをキャッシュメモリにプリフェッチす
    ることを要求する第1種の命令に応答して、該主記憶か
    ら少なくともその命令が要求するデータを含むデータを
    読みだす主記憶アクセス手段と、 該読み出されたデータを該複数のキャッシュメモリの内
    のいずれか一つのキャッシュメモリに格納する手段と、 主記憶内のデータを処理装置に読み出すことを要求する
    第2種の命令に応答して、その命令が要求するデータが
    いずれか一つのキャッシュメモリに存在するかを判別
    し、そのデータがいずれか一つのキャッシュメモリに存
    在する場合には、そのキャッシュメモリからそのデータ
    を処理装置に読み出すキャッシュメモリ読み出し手段で
    あって、該格納手段がデータを格納しようとするキャッ
    シュメモリと異なるキャッシュメモリに対しては該格納
    手段によるデータの格納と並行して該読み出しを実行可
    能なものとを有するデータ処理装置。
  2. 【請求項2】該格納手段は、異なる第1種の命令に対し
    て主記憶から読み出されたデータを異なるキャッシュメ
    モリに格納するように、それぞれの第1種の命令に対し
    てそれぞれが要求したデータを格納するキャッシュメモ
    リを選択する手段を有する請求項1記載のデータ処理装
    置。
  3. 【請求項3】該選択手段は、複数の第1種の命令のそれ
    ぞれのが指定する情報に従い、それぞれの命令が要求し
    た主記憶データを格納するキャッシュメモリを選択する
    手段を有する請求項2記載のデータ処理装置。
  4. 【請求項4】該キャッシュメモリ読み出し手段は、異な
    る第2種の命令に対してそれぞれが要求する主記憶デー
    タが存在するか否かを判別するキャッシュメモリをそれ
    ぞれの命令が指定する情報により選択する手段を有する
    請求項3記載のデータ処理装置。
  5. 【請求項5】該選択手段は、 該複数のキャッシュメモリの一つを指定する情報を保持
    する手段と、 第3種の命令に応答して、該情報を他のキャッシュメモ
    リを指定する情報に変更する手段と、 第1種の命令が要求した主記憶データを格納すべきキャ
    ッシュメモリとして該保持手段に保持された情報により
    指定されるキャッシュメモリを選択する手段からなる請
    求項3記載のデータ処理装置。
  6. 【請求項6】該第3種の命令は、該保持された情報の変
    更を求める命令である請求項5記載のデータ処理装置。
  7. 【請求項7】該保持手段は、カウンタであり、該更新手
    段は、該第3種の命令に応答してそのカウンタを更新す
    る手段である請求項5記載のデータ処理装置。
  8. 【請求項8】該第3種の命令は、該第1種と第2種の命
    令が含まれたループを繰返して実行することを指示する
    命令である請求項5記載のデータ処理装置。
  9. 【請求項9】該キャッシュメモリ読み出し手段は、該保
    持手段に保持された情報により指定されるキャッシュメ
    モリと異なるキャッシュメモリに対して、第2種の命令
    が要求したデータがあるかを選択的に判別する手段を有
    する請求項5記載のデータ処理装置。
  10. 【請求項10】主記憶と、 該主記憶のデータの一部のデータの写をそれぞれ保持す
    る、複数のキャッシュメモリと、 主記憶内のデータをキャッシュメモリにプリフェッチす
    ることを要求する第1種の命令に応答して、該主記憶か
    ら少なくともその命令が要求するデータを含むデータを
    読みだす主記憶アクセス手段と、 該読み出されたデータを該複数のキャッシュメモリの内
    の、その命令が指定するいずれか一つのキャッシュメモ
    リに格納する手段と、 主記憶内のデータを処理装置に読み出すことを要求する
    第2種の命令に応答して、その命令が要求するデータが
    その命令が指定するキャッシュメモリに存在するかを判
    別し、そのデータがそのキャッシュメモリに存在する場
    合には、そのキャッシュメモリからそのデータを処理装
    置に読み出すキャッシュメモリ読み出し手段とを有する
    データ処理装置。
  11. 【請求項11】主記憶と、 該主記憶のデータの一部のデータの写をそれぞれ保持す
    る、複数のキャッシュメモリと、 主記憶内のデータをキャッシュメモリにプリフェッチす
    ることを要求する第1種の命令に応答して、該主記憶か
    ら少なくともその命令が要求するデータを含むデータを
    読みだす主記憶アクセス手段と、 該複数のキャッシュメモリの一つを指定する情報を保持
    する手段と、 該読み出されたデータを該情報により定まるキャッシュ
    メモリに格納する手段と、 主記憶内のデータを処理装置に読み出すことを要求する
    第2種の命令に応答して、その命令が要求するデータ
    が、該情報により定まるキャッシュメモリと異なるいず
    れか一つのキャッシュメモリに存在するかを判別し、そ
    のデータがそのキャッシュメモリに存在する場合には、
    そのキャッシュメモリからそのデータを処理装置に読み
    出すキャッシュメモリ読み出し手段と、 第3種の命令に応答して、該情報を他のキャッシュメモ
    リを指定する情報に変更する手段とを有するデータ処理
    装置。
  12. 【請求項12】該第3種の命令は、該保持された情報の
    変更を求める命令である請求項11記載のデータ処理装
    置。
  13. 【請求項13】該保持手段は、カウンタであり、該更新
    手段は、該第3種の命令に応答してそのカウンタを更新
    する手段である請求項11記載のデータ処理装置。
  14. 【請求項14】該第3種の命令は、該第1種と第2種の
    命令が含まれたループを繰返して実行することを指示す
    る命令である請求項11記載のデータ処理装置。
  15. 【請求項15】主記憶内のデータをキャッシュメモリに
    プリフェッチすることを要求する少なくとも一つの先行
    する第1種の命令に応答して、該主記憶から少なくとも
    その命令が要求するデータを含む第1のデータを読みだ
    し、 該読み出された第1のデータを複数のキャッシュメモリ
    の内の第1のキャッシュメモリに格納し、 該主記憶内の該第1のデータに含まれるデータを処理装
    置に読み出すことを要求する、該先行する第1種の命令
    に後続する第2種の命令に応答して、その命令が要求す
    るデータをその第1のキャッシュメモリから、読み出
    し、 該第1種の命令に後続する少なくとも一つの第1種の命
    令に応答して、該主記憶から少なくともその命令が要求
    するデータを含む第2のデータを読みだし、 該読み出された第2のデータを該複数のキャッシュメモ
    リの内の第2のキャッシュメモリに、該第1のデータを
    該第1のキャッシュメモリから読み出すのと並行して、
    格納するデータ処理方法。
  16. 【請求項16】該後続する第1種の命令は、該第2種の
    命令より先に実行された命令である請求項15記載のデ
    ータ処理方法。
  17. 【請求項17】主記憶内のデータをキャッシュメモリに
    プリフェッチすることを要求する複数の先行する第1種
    の命令のそれぞれに応答して、該主記憶から少なくとも
    それぞれの命令の一つが要求するデータを含む複数群の
    データを読みだし、 該読み出された複数群のデータを複数のキャッシュメモ
    リの内の第1のキャッシュメモリに格納し、 該主記憶内の該複数群の一つの群に含まれるデータを処
    理装置に読み出すことをそれぞれ要求する、該先行する
    第1種の命令に後続する複数の第2種の命令に応答し
    て、それぞれの命令が要求する複数のデータをその第1
    のキャッシュメモリから、読み出し、 該複数の第1種の命令に後続する複数の第1種の命令に
    応答して、該主記憶から少なくともそれぞれの命令の一
    つが要求するデータを含む他の複数群のデータを読みだ
    し、 該読み出された他の複数群のデータを該複数のキャッシ
    ュメモリの内の第2のキャッシュメモリに、該複数のデ
    ータを該第1のキャッシュメモリから読み出すのと並行
    して、格納するデータ処理方法。
  18. 【請求項18】主記憶と、 該主記憶に保持されたデータの一部のデータをそれぞれ
    保持する、少なくとも一つのキャッシュメモリと、 該主記憶内のデータをキャッシュメモリに転送すること
    を要求するプリフェッチ命令に応答して、その命令が指
    定するデータ(プリフェッチすべきデータ)の主記憶ア
    ドレスを、そのプリフェッチすべきデータがキャッシュ
    メモリに転送されるまで保持する手段と、 そのプリフェッチすべきデータの転送が完了する前に、
    該主記憶内のデータを該データ処理装置内の複数のレジ
    スタの一つに転送することを要求するロード命令が実行
    されたとき、該ロード命令が指定した、ロードすべきデ
    ータの主記憶アドレスと該保持されたプリフェッチすべ
    きデータの主記憶アドレスを比較する手段と、 該ロードすべきデータが該キャッシュメモリに保持され
    ていないが、該比較手段により主記憶アドレスの一致が
    検出されたときには、該ロードすべきデータの該主記憶
    からの読み出しを行わないで、該プリフェッチすべきデ
    ータが該主記憶から読み出されたときに、そのデータを
    該ロードすべきデータとして使用する主記憶アクセス制
    御手段とを有するデータ処理装置。
JP3304459A 1991-11-20 1991-11-20 データ処理装置 Pending JPH05143451A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3304459A JPH05143451A (ja) 1991-11-20 1991-11-20 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3304459A JPH05143451A (ja) 1991-11-20 1991-11-20 データ処理装置

Publications (1)

Publication Number Publication Date
JPH05143451A true JPH05143451A (ja) 1993-06-11

Family

ID=17933276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3304459A Pending JPH05143451A (ja) 1991-11-20 1991-11-20 データ処理装置

Country Status (1)

Country Link
JP (1) JPH05143451A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587927B2 (en) 1993-08-05 2003-07-01 Hitachi, Ltd. Data processor having cache memory
JP2008525919A (ja) * 2004-12-29 2008-07-17 インテル・コーポレーション プログラマ制御のキャッシュ・ライン追出しポリシーのための方法
US7644234B2 (en) 2004-05-31 2010-01-05 Sony Computer Entertainment Inc. Information processing apparatus with a cache memory and information processing method
JP2011034239A (ja) * 2009-07-30 2011-02-17 Nec Corp 情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラム
WO2011077549A1 (ja) * 2009-12-25 2011-06-30 富士通株式会社 演算処理装置
JP2011138213A (ja) * 2009-12-25 2011-07-14 Fujitsu Ltd 演算処理装置、情報処理装置及びキャッシュメモリ制御方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587927B2 (en) 1993-08-05 2003-07-01 Hitachi, Ltd. Data processor having cache memory
US6848027B2 (en) 1993-08-05 2005-01-25 Hitachi, Ltd. Data processor having cache memory
US7240159B2 (en) 1993-08-05 2007-07-03 Hitachi, Ltd. Data processor having cache memory
US7644234B2 (en) 2004-05-31 2010-01-05 Sony Computer Entertainment Inc. Information processing apparatus with a cache memory and information processing method
JP2008525919A (ja) * 2004-12-29 2008-07-17 インテル・コーポレーション プログラマ制御のキャッシュ・ライン追出しポリシーのための方法
JP2011034239A (ja) * 2009-07-30 2011-02-17 Nec Corp 情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラム
WO2011077549A1 (ja) * 2009-12-25 2011-06-30 富士通株式会社 演算処理装置
JP2011138213A (ja) * 2009-12-25 2011-07-14 Fujitsu Ltd 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
JP5482801B2 (ja) * 2009-12-25 2014-05-07 富士通株式会社 演算処理装置
US8856478B2 (en) 2009-12-25 2014-10-07 Fujitsu Limited Arithmetic processing unit, information processing device, and cache memory control method

Similar Documents

Publication Publication Date Title
US5553305A (en) System for synchronizing execution by a processing element of threads within a process using a state indicator
KR100278328B1 (ko) 캐시 미스 버퍼
US5887183A (en) Method and system in a data processing system for loading and storing vectors in a plurality of modes
US7467288B2 (en) Vector register file with arbitrary vector addressing
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
EP0148478B1 (en) A data processor with control of the significant bit lenghts of general purpose registers
EP0240032A2 (en) Vector processor with vector data compression/expansion capability
US5898882A (en) Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
KR930022222A (ko) 캐시가 일관된 다중 처리기 컴퓨터 시스템에서 다중 미결동작을 제공하기 위한 장치 및 그 방법
JP3093807B2 (ja) キャッシュ
JPH06242955A (ja) スーパースカラ・プロセッサ・システムにおける中間記憶バッファの割当てをインデックスする方法およびシステム
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
US4639862A (en) Computer system
US5197145A (en) Buffer storage system using parallel buffer storage units and move-out buffer registers
JPH05143451A (ja) データ処理装置
JPH07121437A (ja) コンピュータシステム
US5832533A (en) Method and system for addressing registers in a data processing unit in an indexed addressing mode
EP0465847B1 (en) Memory access control having commonly shared pipeline structure
GB2037466A (en) Computer with cache memory
JPH01177145A (ja) 情報処理装置
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ
JP2576589B2 (ja) 仮想記憶アクセス制御方式
JP2583614B2 (ja) ベクトル演算装置
JPH04266140A (ja) アドレス変換バッファ装置
JPH10111798A (ja) 情報処理装置