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

データ処理装置

Info

Publication number
JPH06222990A
JPH06222990A JP5281759A JP28175993A JPH06222990A JP H06222990 A JPH06222990 A JP H06222990A JP 5281759 A JP5281759 A JP 5281759A JP 28175993 A JP28175993 A JP 28175993A JP H06222990 A JPH06222990 A JP H06222990A
Authority
JP
Japan
Prior art keywords
data
instruction
cache
stored
cache 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.)
Withdrawn
Application number
JP5281759A
Other languages
English (en)
Inventor
Hitoshi Miyaoku
人至 宮奥
Atsuhiro Suga
敦浩 須賀
Koichi Sasamori
幸一 笹森
Kazuhide Yoshino
和秀 吉野
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5281759A priority Critical patent/JPH06222990A/ja
Priority to DE4335475A priority patent/DE4335475A1/de
Publication of JPH06222990A publication Critical patent/JPH06222990A/ja
Priority to US08/739,062 priority patent/US5828860A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 命令を格納するための命令キャッシュメモ
リ、およびデータを格納するデータキャッシュメモリに
できるだけ有効なデータを格納し、キャッシュメモリの
ヒット率を向上させ、データ処理装置としての全体的性
能を向上させ、さらにロード命令およびストア命令のキ
ャッシュアクセスの競合を解消する。 【構成】 命令を格納するための命令キャッシュメモリ
20と、命令キャッシュメモリに必要とする命令が格納
されていない時、必要とする命令の転送を命令キャッシ
ュメモリにより下位にある記憶装置に要求する命令処理
部21とを有し、命令キャッシュメモリにより下位の記
憶装置から転送され、データ処理装置の命令処理部が必
要として転送を要求した命令を含む1ライン分の命令デ
ータが格納される第1の転送命令データ格納手段23
と、1ラインに続いて転送された1ライン以上の先取り
命令データが格納される1段以上の第2の転送命令デー
タ格納手段24とを備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はキャッシュメモリを備え
たデータ処理装置に係わり、更に詳しくは命令、あるい
はデータを格納する手段を、主記憶装置とキャッシュメ
モリの間に設けてキャッシュメモリの高速化を図ったデ
ータ処理装置に関する。
【0002】
【従来の技術】近年コンピュータの高速化のために、複
数の演算ユニットや並列処理機構が設けられるようにな
っている。これらのユニットを効率的に稼働させるため
には、キャッシュメモリに次ぐ下位の記憶装置からデー
タ処理装置に対して、実行すべき命令や必要なデータを
絶えることなく供給する必要がある。ここで、キャッシ
ュメモリに次ぐ下位の記憶装置とは中央処理装置(CP
U)からみて下位のものであり、例えば2次キャッシュ
メモリ、または主記憶装置である。
【0003】データ処理装置における処理の高速化をは
かるために、主記憶装置の内容の一部のコピーを持ち、
主記憶装置より高速に動作するキャッシュメモリ(バッ
ファ記憶装置)が広く用いられている。
【0004】キャッシュ記憶装置には、通常、高速また
は大容量のSRAM(Static Random Access Memory)を
利用する。そこでまずデータ処理装置の中央処理装置
(CPU)の動作と関連させてキャッシュメモリの動作
を説明する。図69は中央処理装置(CPU)の概略構
成図である。
【0005】図69において、CPU1は、整数演算部
2、汎用レジスタ等3、プログラムカウンタ4、命令バ
ッファ5、命令デコーダ6、メモリ制御部7により構成
されるものである。比較的小規模のデータ処理装置のC
PUはMPU(マイクロプロセッサ)とも言われる。C
PU1は、中央演算処理ユニットであり、文字どおり計
算機における中心的機能を行う。
【0006】主記憶装置9には、CPU1が実行する命
令およびデータがコード化されて、蓄えられている。主
記憶装置9のメモリはアドレスが付けされており、CP
U1は主記憶装置9のメモリアドレスを指定することに
より、データの読み込みおよび書き込みを行う。通常、
主記憶装置9は1バイト(8ビット)ごとに先頭から順
にアドレス付けされている。例えば、32ビットアーキ
テクチャの場合、アドレスの指定は、32ビットの整数
で行われる。従って0〜429496729(=2
32個)のバイト位置が存在する。
【0007】計算機が動作を開始するとプログラムカウ
ンタ(PC)4で指定されたアドレスから、主記憶装置
9のメモリに格納されている命令が命令バッファ5に読
み出される。この動作を命令フェッチと言う。この命令
バッファ5は、複数の命令を格納することができる。命
令デコーダ6は、命令を命令バッファ5から読み出し、
解読を行う。解読された命令は、整数演算部2、汎用レ
ジスタ等3、または各種制御部に指示される。指示され
た各種演算部または制御部は命令を実行する。通常、命
令フェッチをF、命令デコードをD、命令実行をE、実
行結果の書き込みをWと省略し“F−D−E−W”のパ
イプライン制御が行われる。パイプラインの段数、およ
び一度に実行できる命令数は、アーキテクチャによって
異なる。
【0008】CPU1が主記憶装置9(メモリ)または
下位の記憶装置に命令、またはデータの読み出し、また
は書き込み要求を行う場合としては、命令フェッチ要求
によるものと命令の指定(Load/Store) するデータの読
み出し、または書き込み要求によるものがある。命令フ
ェッチは、CPU1が動作する際には必ず実行される。
フェッチされる命令のアドレスは、通常の場合上述のよ
うにプログラムカウンタ4の指定するアドレスである
が、命令の流れを換える命令(分岐またはジャンプ命令
等)の場合、ターゲット加算器等により命令フェッチア
ドレスが計算される。
【0009】一方、命令の指定(即ち、Load/Store命
令)する要求の場合、命令で指定された演算等を実行す
る際に使用するデータの読み出し(Load)または命令によ
り実行された演算結果の書き込み(Store) が行われる。
データへのアクセス要求は、命令デコードステージか、
または実行ステージで行われる。例えば、読み出し要求
アドレスは、整数演算部2を用いて計算される。
【0010】キャッシュメモリは、主記憶の内容のコピ
ーを持ち、主記憶装置よりも高速で動作するメモリであ
る。通常、その内容の入れ換えは、ハードウエアにより
動的に行われる。
【0011】キャッシュメモリは、図70に示すように
メモリの一階層を構成するものである。キャッシュメモ
リの性能を向上させる手段としてキャッシュメモリを複
数階層で構成させる方法もある。
【0012】キャッシュメモリは通常の二つの部分から
成る。キャッシュタグ(キャッシュディレクトリ)とキ
ャッシュ(ランダムアクセスメモリ(RAM))であ
る。キャッシュRAMは等しいサイズの沢山のラインに
分割されている。キャッシュタグは通常連想メモリで、
アドレスタグ、および制御ビットからなる。
【0013】アドレスタグは現在キャッシュ内にあるラ
インのラインアドレスを保持する。制御ビットはキャッ
シュの制御等に使用される。従って、キャッシュメモリ
はアドレス/データ対のセットを含み、そのセットの各
々は主記憶のラインアドレスと、そのアドレスに対応す
る主記憶内容のコピーを持つ。
【0014】キャッシュタグには、タグ検索とデータ検
索を並列して実行するものと、逐次的に実行するものが
ある。後者では、参照されたデータは、対応するタグを
検索した後で、キャッシュRAMから読み出される。一
方前者では、アドレスタグと対応したデータの検索が同
時に実行できる。しかし、必要なラインのデータがキャ
ッシュ中に存在するか否かはキャッシュサイクル終結時
に初めて検出される。
【0015】図71に、従来のデータ処理装置における
キャッシュ記憶装置の構成図を示す。図71において、
従来のデータ処理装置は、アドレスレジスタADR、デ
ータDR1およびDR2、キャッシュタグ11、キャッ
シュRAM12、比較器(COMP)13、およびセレ
クタ14(SE)から構成されている。なお、本従来例
のキャッシュ記憶装置は、4ウェイ構成であり、一度に
4つのデータを同時にアクセスしてタグアドレスの一致
したものを選択して読み出す。キャッシュメモリに要求
されるデータのアドレスはOffset,Index,Tagの三つに分
けられる。OffSetは、キャッシュの1ライン以内の位置
を指定するアドレスビットであるため、キャッシュアク
セスの際使用されない。Index は、キャッシュタグ1
1、およびキャッシュRAM12を検索する際のアドレ
スである。このIndex によりタグ、およびRAM内の1
ラインを特定できる。Tag はキャッシュタグ11内のラ
インアドレスと同ビットであり、コンパレータ13を用
いて両者を比較することにより必要なラインか否かが判
定される。
【0016】この判定においてキャッシュミスとなった
場合は、主記憶装置9または下位のキャッシュメモリか
らのデータの読み出し、または書き込みを行う。データ
の読み出し動作においてキャッシュミスが発生した際、
キャッシュメモリは主記憶装置または下位のキャッシュ
メモリにデータ読み出し要求を行う。この主記憶装置等
からキャッシュメモリへの読み出し動作を" ムーブイ
ン" と呼ぶ。上述のようにこのムーブインは、通常キャ
ッシュミス時にハードウエアが動的に行うものである。
一般的に、このキャッシュミスおよびムーブインは、C
PUの実行性能に重大な影響を及ぼす。従って、キャッ
シュメモリを設計する際、キャッシュミスを可能な限り
低くすること、およびムーブインに要するサイクル数を
可能な限り小さくすることに努力する必要がある。キャ
ッシュミス率は、キャッシュの容量およびWay 数を増加
させると減少する。しかし、これらの方法では同時にチ
ップ上で必要とする面積も増加する。一般的にCPUに
キャッシュメモリを内蔵して1チップ構成にする場合、
キャッシュメモリは他のハードウエア資源よりも大きな
面積を占める。従って、キャッシュメモリを可能な限り
小さな面積で、かつ高性能を維持するように構成しなけ
ればならない。
【0017】キャッシュミスを低減させる方法の一つと
して、キャッシュの内容の入れ換えの際に、キャッシュ
メモリへの読み出し要求ラインとは別に、今後利用され
る可能性のあるラインを先取りしてキャッシュメモリに
格納する方法がある。これは、「プリフェッチ」と呼ば
れている。このプリフェッチデータは、キャッシュメモ
リ内の既存の1ラインを削除して格納される。従って、
もしキャッシュメモリに格納されたプリフェッチデータ
が使用されなかった場合、キャッシュミスは逆に増加す
る。そこで、プリフェッチを行う際には、可能な限り有
効なデータのみをキャッシュメモリに格納するようにし
なければならない。
【0018】このプリフェッチは、例えばCPU内部の
命令処理部からの命令フェッチ要求に対応してハードウ
エアで自動的に行われるが、演算用のデータ(オペラン
ド)のプリフェッチ要求をプログラム上で指定すること
も可能である。このプリフェッチはソフトウエアにおい
て指定されることからソフトウエアプリフェッチと呼ば
れる。CPU内部の汎用レジスタにおけるアドレス0の
内容は通常‘0’に固定されている。そこで、このアド
レス0をプリフェッチデータの格納先とすることによ
り、プリフェッチデータはキャッシュには格納される
が、レジスタには実質的に格納されず、後で使われる可
能性のあるデータのプリフェッチを指定するソフトウエ
アプリフェッチが実現される。
【0019】キャッシュ記憶装置のヒット時の一般的な
動作をより具体的に説明するフローチャートを図72
(a),(b)に示す。図72(a)のロード命令で
は、アドレスセレクトステージ(ステップST1)にお
いて、ロード命令を発行し、アドレスを選択する。次
に、タグ及びキャッシュアクセスステージ(ステップS
T2)で、キャッシュRAM12及びキャッシュタグ1
1にアクセスしデータを読み出す。この読み出したデー
タのヒット判定は、次のヒット判定ステージ(ステップ
ST3)で行う。以上でヒット時のロード動作が終了す
る。
【0020】一方、図72(b)のストア命令では、ア
ドレスセレクトステージ(ステップST11)におい
て、ストア命令を発行し、アドレスを選択する。次に、
タグアクセスステージ(ステップST12)で、キャッ
シュタグ11のみにアクセスし、ヒット判定ステージ
(ステップST13)においてヒット判定を行う。も
し、ヒットしていれば、次のステージ(ステップST1
4)でキャッシュRAM12への書き込みを行う。
【0021】つまり、ロード命令ではキャッシュタグ1
1及びキャッシュRAM12へのアクセスを同一ステー
ジで行うのに対し、ストア命令ではキャッシュタグ11
からのアドレス読み出しとキャッシュへのデータ書き込
みを別のステージで行う。このロード命令とストア命令
の実行ステージの数の差により、ストア命令後に連続し
たロード命令は、キャッシュアクセスの競合により実行
できない。
【0022】図73に、ストア命令及びそれに連続する
ロード命令を実行する場合のキャッシュ記憶装置のタイ
ミングチャートを示す。図73に示されているように、
T0サイクルで発行されたストア命令(Store)は、T1
サイクルにおいてタグアクセス(Tag Access) 、T2サ
イクルにおいてヒット判定(Hit)、T3サイクルにおい
てキャッシュRAM12への書き込み(Data Write) を
行う。次に、T1サイクルで発行されたロード命令(Lo
ad) は、T2サイクルにおいてタグ及びキャッシュアク
セス(Cache Access) を行い、T3サイクルにおいてヒ
ット判定(Hit)及びデータBBの出力を行う。
【0023】しかし、次のT2サイクルでロード命令
(Load) を発行しようとすると、T3サイクルにおい
て、先行のストア命令(Store)によるキャッシュRAM
12への書き込み(Data Write) と、発行しようとする
ロード命令(Load)によるキャッシュRAM12からの読
み出しが競合する。従って、キャッシュ記憶装置は、T
2サイクルにおけるロード命令(Load) を受け入れるこ
とができず、次のT3サイクルまで待たせる必要があ
る。
【0024】このような先行ストア命令による後続ロー
ド命令の待たされるサイクル数は、上述の例のように1
サイクルとは限らない。
【0025】
【発明が解決しようとする課題】従来のデータ処理装置
においては、キャッシュメモリに次ぐ下位記憶装置、例
えば二次キャッシュ、あるいは主記憶装置から転送され
た命令、またはデータを全てキャッシュメモリに格納す
る方式が用いられていた。従って前述のように、キャッ
シュメモリに格納されたプリフェッチデータが使用され
なかった場合にはキャッシュミスは逆に増加することに
なる。通常プリフェッチはキャッシュミスの際に複数の
ラインをムーブインすることによって実現される。しか
し、例えば命令フェッチにおいてムーブインされた必要
な命令に後続する命令が分岐命令の場合には、プリフェ
ッチされた命令データは不必要になってしまう。このよ
うに従来の方式では、結果としてキャッシュメモリに不
必要な命令やデータが格納されてしまうという問題点が
あった。
【0026】また前述のソフトウエアプリフェッチ命令
によってデータの先取りを行う場合に、ソフトウエアプ
リフェッチ命令とその他の命令、例えば通常のロード命
令との区別は従来行われておらず、どちらの命令の場合
にも、例えば主記憶装置から転送されたデータをデータ
キャッシュメモリに即座に格納する方式が用いられてい
た。ソフトウエアプリフェッチ命令におけるデータのプ
リフェッチは実際に演算にデータを必要とするよりも以
前に行われることが多く、ソフトウエアプリフェッチ命
令がデータ供給を円滑に行うという目的を達することは
できるが、逆に他の命令、例えば実際に直ちに演算に必
要なデータをロードすべきロード命令の実行を妨げてし
まうという問題点があった。この場合データキャッシュ
メモリのパイプラインに乱れが生じ、データ処理装置の
全体的な性能を低下させることになってしまう。
【0027】更にソフトウエアプリフェッチ命令の場合
には、ソフトウエアプリフェッチ命令が実際にデータが
必要な時刻より前に実行されることにより、プリフェッ
チされたデータに対応する量のキャッシュメモリ内のデ
ータが捨てられ、ソフトウエアプリフェッチ命令が対象
とするデータが実際に演算のためにレジスタなどに格納
されるまでにヒットする可能性があるデータがキャッシ
ュメモリから捨てられてしまうという問題点もあった。
【0028】さらに、従来のデータ処理装置のキャッシ
ュ記憶装置では、ロード命令とストア命令の実行ステー
ジの実行ステージ数の差により、ストア命令後に連続し
たロード命令は、キャッシュアクセスの競合により実行
できず、後続のロード命令が待たされる現象が生じ、キ
ャッシュ記憶装置及び同装置を搭載するデータ処理装置
の性能に大きな影響を及ぼすという問題があった。
【0029】また、ロード命令の後にストア命令が続く
場合、もし先行するロード命令によるキャッシュタグへ
のアクセスがミスすると、主記憶装置あるいは他のキャ
ッシュ記憶装置から、必要とされるデータを読み出し
て、キャッシュRAMに書き込んでいた。読み出したデ
ータをキャッシュRAMに書き込んでいる間は、キャッ
シュRAMに対する他のアクセスが禁止されるため、後
続するストア命令を実行することができない。
【0030】従って、先行するロード命令によるキャッ
シュタグへのアクセスがミスすると、後続するストア命
令の実行が待たされ、インタロックを生じるという問題
もあった。
【0031】本発明は、命令を格納するための命令キャ
ッシュメモリ、およびデータを格納するデータキャッシ
ュメモリにできるだけ有効なデータを格納し、キャッシ
ュメモリのヒット率を向上させ、データ処理装置として
の全体的性能を向上させることを目的とする。
【0032】本発明は、さらにロード命令及びストア命
令のキャッシュアクセスの競合を解消し、高性能なキャ
ッシュ記憶装置を提供することを目的とする。
【0033】
【課題を解決するための手段】図1は本発明の原理ブロ
ック図である。同図(a)は、命令を格納するための命
令キャッシュメモリ20と、該命令キャッシュメモリ2
0に必要とする命令が格納されていない時、該必要とす
る命令の転送を要求する命令処理部21とを有するデー
タ処理装置における第1の発明の原理ブロック図であ
る。
【0034】図1(a)の第1の発明の原理ブロック図
において、第1の転送命令データ格納手段23は例えば
ロードバッファプライマリ(LBP)であり、命令キャ
ッシュメモリ20に次ぐ下位の記憶装置22、例えば主
記憶装置から転送され、命令処理部21が必要として転
送を要求した命令を含む1ライン分の命令データを一時
的に格納するものである。また第2の転送命令データ格
納手段24は例えばロードバッファセカンダリ(LB
S)であり、命令処理部21が転送を要求した命令を含
む1ラインに続く1ライン以上の命令データを先取りし
て、一時的に格納する1段以上のロードバッファから構
成されている。
【0035】図1(b)は第2の発明の原理ブロック図
である。第1の発明においては命令データが先取りされ
るのに対して、第2の発明においてはロード/ストア命
令、および前述のソフトウエアプリフェッチ命令の実行
に際して、ムーブインされたデータに引き続くデータが
プリフェッチされる。
【0036】図1(b)はデータを格納するためのデー
タキャッシュメモリ26と、そのデータキャッシュメモ
リ26に必要とするデータが格納されていない時、必要
とするデータの転送を主記憶装置などのキャッシュメモ
リに次ぐ下位記憶装置22に要求する命令/演算処理部
27とを有するデータ処理装置を示し、転送データ格納
手段28は命令/演算処理部27が必要として転送を要
求したデータを含む1ライン分のデータと共に、その1
ラインに続く1ライン以上のデータを先取りして格納す
るものであり、例えばデータロードバッファである。
【0037】
【作用】図1(a)にその原理を示した第1の発明にお
いては、命令処理部21から転送を要求された命令、す
なわちムーブイン対象の命令データを含む1ライン分の
データは第1の転送命令データ格納手段23、例えばロ
ードバッファプライマリ(LBP)に格納され、その1
ラインに続く1ライン以上の先取りされたラインは第2
の転送命令データ格納手段24、例えばロードバッファ
セカンダリ(LBS)に格納される。そしてLBPに格
納されたムーブイン対象命令は、命令キャッシュメモリ
20に直ちに出力されると共に、命令処理部21に対し
ても命令キャッシュメモリ20を介することなくバイパ
スして転送される。
【0038】LBPに格納された1ライン分のデータが
例えば4つの命令に対応するものであり、例えばムーブ
イン対象の命令の後に3つの命令データが格納されてい
るものとし、ムーブイン対象の命令がブランチ命令やジ
ャンプ命令などのように命令の流れを変える命令でなけ
れば、次の命令は有効データとして命令キャッシュメモ
リ20に格納されるべきものである。これに対してムー
ブイン対象の命令がブランチ命令やジャンプ命令の時に
は、次の命令を命令キャッシュメモリ20に格納するこ
とは不適当であり、このような命令データの有効性の判
定を行う必要がある。
【0039】本発明において、LBPおよびLBSは、
この命令データの有効性判別の手段として、命令データ
に対するアドレスの全てを比較してデータの有効性を判
定するヒット判定、および不完全ではあるが、アドレス
の下位ビットだけを比較してデータの有効性を判定する
アクセス判定の2つを行うことができ、例えばLBP内
でムーブイン対象となった命令に引き続く命令にアクセ
スがあった時、すなわちアクセス判定で有効と判定され
た時にのみLBS内の命令を命令キャッシュメモリ20
に格納することも、またLBPに格納された命令を命令
キャッシュメモリ20に格納した後にLBSに格納され
ている命令に対するアクセス判定が有効と判定された時
にのみLBS内の命令を命令キャッシュメモリ20に格
納することも、またLBP内に格納された命令へのアク
セスに対してLBPでのヒット判定の結果ヒットしたと
判定された時にのみLBSに格納された命令を命令キャ
ッシュメモリ20に格納することもできる。
【0040】第2の発明の原理を示す図1(b)におい
て、ハードウエアプリフェッチによる(すなわちソフト
ウエアプリフェッチ命令以外の命令に対応するプリフェ
ッチによる)プリフェッチデータのデータキャッシュメ
モリ26への格納は第1の発明におけると同様に行われ
る。例えば主記憶装置などのような、キャッシュメモリ
に次いで下位の記憶装置22から転送され、転送データ
格納手段28に格納されたデータのうちムーブイン対象
のデータ(命令/演算処理部27の要求データ)は、デ
ータキャッシュメモリ26に格納されると同時にバイパ
ス経路を介して命令/演算処理部27に転送される。ム
ーブイン対象データに引き続くプリフェッチデータに対
しては、第1の発明におけると同様にアクセス判定、ま
たはヒット判定が行われ、その結果に応じてデータキャ
ッシュメモリ26に転送される。
【0041】これに対してムーブインがソフトウエアプ
リフェッチ命令に対応して行われた場合には、プリフェ
ッチデータの格納は本発明においては最も低い優先度を
持つものとされ、例えばプライオリティコントロール部
による制御によって、実際に直ちにデータの転送を必要
とする命令、例えばロード/ストア命令などが実行され
ていない期間において実行され、データキャッシュメモ
リのパイプラインの中断を防ぎ、またすでに格納されて
いる有効データのデータキャッシュメモリ滞在期間をで
きるだけ延ばすことができる。
【0042】以上のように本発明によれば不必要な命令
やデータの命令キャッシュメモリ、およびデータキャッ
シュメモリへの格納を防ぐことが可能となる。さらに、
図1(a),(b)の原理図において、キャッシュメモ
リ20,26でキャッシュミスした場合、必要な命令あ
るいはデータを下位の記憶装置22から命令データ格納
手段23にムーブインする間、キャッシュメモリ20,
26をウェイント状態にすることなく、他の命令あるい
はデータに対して動作可能とする。
【0043】
【実施例】図2は本発明におけるデータ処理装置の中央
処理装置(CPU)の全体構成ブロック図である。同図
において、本発明の特徴である命令ロードバッファは命
令キャッシュブロック31内に、またデータロードバッ
ファはデータキャッシュブロック32内にそれぞれ備え
られる。
【0044】図2において、ブランチ命令やジャンプ命
令以外の一般の命令に対してはインクリメンタ33によ
ってプログラムカウンタ(PC)34の内容がインクリ
メントされ、その内容はセレクタ35を介して、要求ア
ドレスとして命令キャッシュブロック31に与えられ
る。命令キャッシュブロック31から読み出された命令
は命令バッファ36を介して命令デコーダ37に与えら
れる。命令デコーダ37によって解読された命令は、例
えば浮動少数点演算器などのコプロセッサ39、汎用レ
ジスタ40、またはALU41に与えられる。例えばジ
ャンプ命令などの場合には、加算器38に対してプログ
ラムカウンタ34の内容と命令バッファ36の出力が与
えられ、加算器38による加算結果のアドレスがセレク
タ35を介して命令キャッシュブロック31に与えられ
る。
【0045】データキャッシュブロック32への要求ア
ドレスは、例えばALU41によって与えられ、データ
キャッシュブロック32から出力されたデータは汎用レ
ジスタ40に与えられ、ALU41における演算などに
用いられる。汎用レジスタ40にはシフタ42が接続さ
れている。
【0046】命令キャッシュブロック31、およびデー
タキャッシュブロック32には、主記憶装置との間のイ
ンタフェースバスとしてのPBUSが接続されており、
本発明では主記憶装置とキャッシュメモリとの間のデー
タの交換はnバイトの単位で行われるものとする。例え
ば命令の語長がn/4バイトであるとすれば、主記憶と
キャッシュメモリとの間でのデータの交換が一度に4命
令分行われることになる。しかしながら、これらの命令
やデータの語長とデータの交換量との関係はこれに限定
されないことは当然である。
【0047】図2の各部を図1と対応させると、インク
リメンタ33、プログラムカウンタ34、セレクタ3
5、命令バッファ36、命令デコーダ37、および加算
器38は図1(a)の命令処理部21に対応し、この命
令処理部21とコプロセッサ39、汎用レジスタ40、
ALU41、およびシフタ42(これらは演算処理部を
構成する。)とを合わせたものが図1(b)の命令/演
算処理部27に対応する。
【0048】図3は、第1の実施例を説明するためのデ
ータ処理装置の構成ブロック図である。同図においては
図2の命令キャッシュブロック31内の命令キャッシュ
メモリ20および命令ロードバッファ(LBP45とL
BS46)と命令処理部21および主記憶装置9との関
係が示されている。前述のように命令ロードバッファ
は、図1(a)の第1の転送命令データ格納手段23を
構成するロードバッファプライマリ(LBP)45と、
第2の転送命令データ格納手段24を構成するロードバ
ッファセカンダリ(LBS)46とから成る。
【0049】後述する図6で説明するように、LBP4
5とLBS46とは実際には同一の構成を持ち、LBP
かLBSかはプライマリかセカンダリかを示すPSフラ
グの内容によって区別され、このフラグがアクティブの
とき、そのバッファはセカンダリとなる。
【0050】図1(a)において、命令処理部21から
の命令フェッチ要求が命令キャッシュメモリ20に入力
されると、その要求に応じて命令キャッシュメモリ20
の内容が検索される。命令キャッシュメモリ20に要求
命令データが格納されていないとき、すなわちキャッシ
ュミスが発生したときには、命令キャッシュメモリ20
から要求アドレスが主記憶装置9に通知され、ムーブイ
ン動作が開始される。
【0051】主記憶装置9から転送されるデータは2ラ
イン分であり、フェッチ要求対象の命令データを含む1
ラインはLBP45に格納され、それに続く1ラインは
LBS46に格納される。LBP45に格納されたフェ
ッチ要求対象の命令データは直ちに命令キャッシュメモ
リ20に書き込まれるとともに、命令処理部21に直接
出力される。LBS46に格納されたデータの命令キャ
ッシュメモリ20への書き込み等については、図8〜図
14で詳述する。
【0052】図2における命令キャッシュブロック31
の構成を図4に示す。本キャッシュブロックはnバイ
ト、ダイレクトマップ方式を3段パイプライン構成で実
現している。図中の2本線はセレクタを、斜線のボック
スはFFを、CMPと明記された三角形は比較器をそれ
ぞれ示す。Stage1は、プライオリティコントロール部5
0等により構成される。
【0053】プライオリティコントロール部50は、命
令処理部からの命令フェッチ要求および後述するウェイ
トレジスタからの再実行要求等を実行するか否かを各要
求の優先度により判定する。
【0054】Stage2は、キャッシュタグ53、キャッシ
ュRAM54を持つ。読み出されたデータは、本ステー
ジで図2に示されている命令バッファ36に格納され
る。Stage3は、ヒット判定を行うための比較器55、パ
リティチェック器59、ステータスコントロール部56
等により構成される。ステータスコントロール部56
は、ヒット判定および、例外(割り込み、その他)発生
等の各種状態の判定および制御を行う。命令キャッシュ
は、これ以外の主要構成要素としてウェイトレジスタ
(Wait Reg)部57、および命令ロードバッファ58を
持つ。
【0055】ウェイトレジスタ部57は、キャッシュミ
ス等により再実行を必要とするフェッチ要求、およびそ
のアドレス等を保有するためのバッファである。命令ロ
ードバッファ58は、ムーブインデータ、およびプリフ
ェッチデータを保持するためのバッファであり、本シス
テムにおける特徴的部分である。なお、図4における各
種制御信号の意味は図6に関連して後述する。
【0056】命令キャッシュブロック31にフェッチ要
求を行うにあたり、命令処理部21は命令フェッチ要求
信号をアクティブにするとともに要求アドレスを通知す
る。命令キャッシュブロック31がフェッチ要求を受け
付けるときは、命令処理部21に対するフェッチ応答信
号をアクティブにする。フェッチ要求は、プライオリテ
ィコントロール部50に入力され、例えば優先回路によ
ってその要求に対する優先度が判定され、同一サイクル
中における要求の中で、その優先度が最も高いときのみ
受け付けられる。要求が受け付けられると、該当アドレ
スのキャッシュタグ53、およびキャッシュRAM54
のラインが検索される。キャッシュタグ53から読み出
されたアドレスと要求アドレス(仮想アドレスか物理ア
ドレスかはシステムによって異なる)とが、コンパレー
タ55により比較される。図4に示されているシステム
では、アドレスの比較と同時にパリティチェック器59
によってRAMのパリティ検査が行われる。これらの結
果は、ステータスコントロール部56に入力され、命令
フェッチにより要求されたラインがキャッシュ内に存在
する場合、すなわちちキャッシュヒットの場合、ヒット
信号が出力され、命令フェッチに関する一連の動作はこ
れまでの処理で終了する。
【0057】しかしキャッシュミスが発生した場合、主
記憶装置から該当ラインとともにプリフェッチラインの
読み出しが行われる。キャッシュミスが発生した際、ス
テータスコントロール部56はウェイトレジスタ部57
にそのミス発生を通知する。ウェイトレジスタ部57は
キャッシュミス、またはその他の何等かの原因により再
実行あるいはムーブインを行うべき要求、およびアドレ
スを格納するバッファである。キャッシュミスを通知さ
れたウェイトレジスタ部57は該当アドレスを格納す
る。その後、ウェイトレジスタ部57はMIコントロー
ル部51にムーブイン要求及びそのアドレスを出力す
る。MIコントロール部51は主記憶装置に対して、該
当ラインの読み出し要求を行う。主記憶装置から読み出
されたデータは、命令ロードバッファ58に保有され
る。その後、命令ロードバッファ58は命令フェッチ要
求の該当データを命令処理部21に出力するとともに、
キャッシュにそのデータを格納する。
【0058】命令ロードバッファ58からキャッシュへ
のデータ出力に際して、命令ロードバッファ58は後述
するライトリクエスト信号をプライオリティコントロー
ル部50に出力し、そのリクエストに対するライトアク
ノリッジ信号を受けて命令のアドレス部をキャッシュタ
グ53に、データ部をキャッシュRAM54に出力す
る。ロードバッファに対するフェッチ要求があり、ロー
ドバッファ内のコンパレータ(不図示)によってアドレ
ス比較が行われ、ロードバッファ内のデータにヒットし
たとき、そのデータはキャッシュに格納されるととも
に、セレクタ60を介したバイパス径路によって命令処
理部21に出力される。
【0059】続いて図4の命令キャッシュブロック内の
主要構成部分について更に詳細に説明する。図5は図4
のプライオリティコントロール部50の動作の詳細説明
図である。プライオリティコントロール部50は、各種
の要求のうちどれを優先して受け付けるべきかを判定す
るための回路であり、プライオリティエンコーダといく
つかのゲートによって構成される。
【0060】図5に示すようにプライオリティコントロ
ール部50には命令フェッチ要求、再実行要求、および
キャッシュへの書込み要求の3つの要求信号が入力され
る。これらの要求に対しては、例えばキャッシュ書込み
要求に対して第1位、再実行要求に対して第2位、フェ
ッチ要求に対して第3位の優先順位が付けられ、プライ
オリティエンコーダはこの優先順位に従って3つの信号
のコード化を行う。この3つの要求に対しては、2ビッ
トによるコード化が可能である。
【0061】要求がキャッシュへの書込み要求の場合に
は、キャッシュアクセスアドレスをロードバッファから
のアドレス出力に切り換えるために、要求アドレスの制
御信号(出力信号)がアクティブとされる。更にこの
場合、命令キャッシュへの書込みが許可されることにな
るため、キャッシュライトアクノリッジ信号(出力信号
)も同時にアクティブとされ、これを契機としてロー
ドバッファは命令キャッシュへの書込みを行い、また後
述するWM/WLフラグをアクティブとする。
【0062】次に再実行要求に対しては、要求アドレス
の制御信号(出力信号)がアクティブとされ、ウェイ
トレジスタ部57から出力さるアドレスが要求アドレス
として送られる。
【0063】更にフェッチ要求に対しては、フェッチ要
求に対するアクノリッジ信号(出力信号)がアクティ
ブとされ、フェッチ要求が受け付けられたことが命令処
理部21に通知されると共に、出力信号,がノンア
クティブとされ、命令フェッチ動作が行われる。この動
作は命令キャッシュメモリの通常動作である。
【0064】次に、ウェイトレジスタ部57は実質的に
アドレス保持回路であり、単なるフリップフロップのみ
で構成される。すなわちウェイトレジスタ部57は、キ
ャッシュミスが発生した時に要求アドレスを保持してお
き、ムーブイン要求時に必要なアドレスを供給するため
にのみ存在するものであり、本来ならばステータスコン
トロール部56の内部に含めてもよいものである。
【0065】このように図4の命令キャッシュブロック
の構成はかなり一般的なものである。例えば、キャッシ
ュメモリ(TAG53,CHE54)、コンパレータ5
5、パリティチェック器59などは一般的なものであ
り、ステータスコントロール部56についても、その動
作はキャッシュブロックの構成によって異なる点がある
ものの、一般な回路である。
【0066】命令ロードバッファ58は、データ等を保
有するバッファ部と、バッファ部へのデータ書き込みお
よび命令ロードバッファ58からキャッシュへの書き込
み等を制御する制御部とに分けられる。ロードバッファ
の構成の一例を図6に示す。バッファ部は理論的にロー
ドバッファプライマリ(LBP)およびロードバッファ
セカンダリ(LBS)の2ブロックにより構成される。
LBPは、必ずキャッシュに格納される。命令を含むラ
インのみを保有する。従って通常LBPにはムーブイン
起動の原因となったフェッチ要求の対象データを含むラ
インが格納される。一方LBSはキャッシュミスととも
に実行されるプリフェッチ動作の対象となったデータを
格納する。従って、LBSには後続命令で使用されるか
否か明確でないデータが格納される。本ロードバッファ
は、回路的には同一な2本のバッファ(それぞれロード
バッファ0およびロードバッファ1と呼ぶ)により構成
される。これは、実際の回路構成としてLBPおよびL
BSの明確な区別を行わないことを意味する。LBPと
LBSの区別は、制御フラグを用いることにより行われ
る。
【0067】本ロードバッファは2ライン(図4におけ
るキャッシュは1ラインnバイトである。)を保有する
ことができる。従って、LBPおよびLBSはそれぞれ
nバイトのFFで構成される。ただし、主記憶装置から
のデータは1バイトごとのパリティを持つ。またLBP
およびLBSは、それぞれ格納データに対応するアドレ
スおよび制御フラグを持つ。本ロードバッファにおける
制御フラグは、V,PS,M,L,WM.WLの6ビッ
トで構成される。これらフラグの意味を以下に示す。
【0068】V :アクティブのときエントリが有効で
あることを示す。 PS:アクティブのときロードバッファがセカンダリで
あることを示す。 M :アクティブのときエントリのMSB側n/2バイ
トが有効であることを示す。
【0069】L :アクティブのときエントリのLSB
側n/2バイトが有効であることを示す。 WM:アクティブのときエントリのMSB側n/2バイ
トがキャッシュに格納されたことを示す。
【0070】WL:アクティブのときエントリのLSB
側n/2バイトがキャッシュに格納されたことを示す。 また、コントロール部とバッファ部間のデータの転送で
は以下のインタフェースを使用する。
【0071】WE0 :ロードバッファ0への書き込
みを指示する。 WE1 :ロードバッファ1への書き込みを指示す
る。 FLAG0 IN :ロードバッファ0の制御フラグの
書き込みデータ FLAG1 IN :ロードバッファ1の制御フラグの
書き込みデータ ADR IN :格納されるデータのアドレス DATA IN :格納されるデータ FLAG0 OUT:ロードバッファ0の制御フラグの
出力データ FLAG1 OUT:ロードバッファ1の制御フラグの
出力データ ADR0 OUT :LB0に格納されているデータの
アドレスの出力 ADR1 OUT :LB1に格納されているデータの
アドレスの出力 DO0 OUT :LB0に格納されているデータの
出力 DO1 OUT :LB1に格納されているデータの
出力 RESET :リセット信号 CLOCK :クロック信号 図7に本ロードバッファと命令キャッシュおよびPBU
Sとのインタフェースの一例を示す。それぞれの信号の
意味を以下に示す。
【0072】ILB ADR :ムーブイン起動の原
因となったフェッチ要求に対応するデータのしたアドレ
スを示す。 READ ID :命令フェッチ時の2ライン分、2
nバイト内のデータの選択信号(データを指定する) STAGE3 VALID:キャッシュブロックのST
AGE3が有効であることを示す。
【0073】STAGE3 PADR :命令フェッチ
要求の物理アドレスで、ILB ADRと同じとしても
よい。 WRITE ACK :キャッシュへの書き込み要
求に対するキャッシュからの応答 DO LOAD :キャッシュRAMへの書き
込みデータ DO LOAD IU :命令バッファへの書き込み
データ DATA ID :キャッシュへの書き込みデ
ータのID WRITE REQ :キャッシュへの書き込み要
求 IF NEGATE :PLBにデータが格納さ
れ、PLBがフェッチ要求を受け付ける状態となったこ
とを示す LOAD BUFF VALID:ロードバッファのデ
ータが有効であることを示す。
【0074】 SET STV :ムーブイン時のヒット信号 ILB LINE :ロードバッファに命令フェ
ッチ要求がきた際のヒット判定信号(ロードバッファ内
のコンパレータによりアドレスが比較された結果の判定
信号) PBUS DEI IN :PBUSから次のサイクル
にデータが来ることを示す PBUS DATA IN:PBUSからのデータ PBUS DATA ID:PBUSから来るデータの
2ライン分、2nバイト内の位置 RESET :リセット信号 CLOCK :クロック信号 図8に本ロードバッファのステートマシーンを示す。な
お、例えば図中のlbp.Vは大文字のLBP.Vと同
じものを示す。図8左側にロードバッファのステートマ
シーンを、また右側にロードバッファステートの1つで
あるData In のステートマシーンを示す。本ロードバッ
ファは、いかなる動作も行わないときidle状態を維持し
ている。しかし、次のサイクルでデータが転送されるこ
とを示すDEI信号がアクティブになることを契機にFi
rst Data In 状態に遷移する。この状態では、主記憶装
置から転送されてくる最初のムーブインデータを格納す
るまでの一連の動作が制御される。最初のデータを格納
する際、LB0の各制御フラグがアクティブにされる。
すなわち、エントリ有効を示すVフラグとともに、M,
またはLの該当するビットが1にセットされる。図8に
おけるLBP.Vは、LBPのVフラグを示している。
アクティブなDEI信号が入力され、LBP.Vがアク
ティブになると、状態はFirst Data In 状態からData I
n 状態に遷移する。Data In 状態は、ロードバッファVa
lid がアクティブの間維持される。
【0075】Data In状態におけるステートマシーン
は、図8の右側に示されている。状態がData In に遷移
するとき、Data In 状態のステートマシーンはidle状態
からLBPValid 状態に遷移する。この状態では、ムーブ
イン対象のフェッチ要求データに続くプリフェッチデー
タを格納しながらLBPに既に格納ずみの有効なデータ
をキャッシュへ書き込む。その際、キャッシュへの格納
を行ったことを示すフラグ、すなわちWMまたはWLフ
ラグ、をアクティブにする。本システムは、ムーブイン
を起動した命令フェッチ要求アドレスに示されるデータ
が、主記憶装置から最初にムーブインされることを期待
した制御を行っている。すなわち、LBP Valid状態の
最初にLBPに格納されたデータは、命令フェッチ要求
に該当するデータである。従って、LBP Valid 状態にお
いて格納されている該当データを命令バッファに格納す
るため、命令バッファへの信号線としてのDo Load Iuに
そのデータを出力する。このとき、キャッシュヒットを
示すSET STV信号とともにIF NEGATE信
号がアクティブとされる。命令キャッシュは、IF
EGATE信号がアクティブになることを契機に新たな
る命令フェッチ要求を受理する状態となり、同時にData
In 状態中のLBP Valid状態からLBP ValidWith F
etch 状態に遷移する。このLBP Valid With Fetch
状態では、新たなるムーブインデータ、すなわちプリフ
ェッチデータをロードバッファに格納しながらLBPで
保持しているデータで、かつまだキャッシュに格納して
いないデータをキャッシュに格納する。また本状態中命
令キャッシュブロックは、命令フェッチ要求を受理す
る。ロードバッファValid 中に受理された命令フェッチ
要求に対しては、キャッシュミスによってフェッチされ
た命令に続く命令を対象としてロードバッファが検索さ
れる。次の命令がジャンプ命令のときは多くの場合その
命令はロードバッファに格納されていない。
【0076】キャッシュミスが発生してから、LBP内
のデータをキャッシュに格納する動作をさらに詳細に説
明する。命令キャッシュにおいてミスが発生すると、次
の命令を実行することはできず、データ処理装置は全体
としてインタロックの状態となり、プライオリティコン
トロール部50はすべての要求を全く受けつけない。ロ
ードバッファは、DEI信号の入力によってデータが主
記憶から転送されてくることを最初に知るので、LB
P.VをアクティブにするとともにIF NEGATE
信号を用いてデータが転送されたことをプライオリティ
コントロール部50に通知し、インタロック状態は解除
され、プライオリティコントロール部50は要求を受理
できることになる。
【0077】そして、LBPに格納された最初の要求デ
ータは前述のようにセレクタ60を介したバイパス経路
によって命令バッファ36に出力されるが、このデータ
出力を命令処理部21に通知するために、SET ST
V信号がロードバッファからステータスコントロール部
56に出力され、ステータスコントロール部56からデ
ータがきたことが命令処理部に通知される。命令データ
が命令バッファ36に格納されると、次の命令フェッチ
が要求され、LBP Valid With Fetch 状態のロードバ
ッファは、例えばLBSにデータを格納しながらLBP
内のデータのうち命令キャッシュに格納していないデー
タの格納を続行する。
【0078】先述のようにプリフェッチデータをキャッ
シュに格納する効果的な方法の1つは、後続命令で使用
されるプリフェッチデータのみを格納する方法である。
図8におけるステートマシーンは、この方法の実現例を
示している。LBP Valid With Fetch 状態においてロ
ードバッファが命令処理部21からの命令フェッチ要求
(stage3 valid がアクティブにされるとともにstage3
padrにより要求アドレスが通知される。) に対応して
データを検索するとき、ロードバッファ制御部は、保持
しているデータのアドレスと要求アドレスとをコンパレ
ータによって比較する。このときLBP内のデータにヒ
ットした場合、ロードバッファが命令バッファに該当デ
ータを格納する。
【0079】すなわち命令フェッチ要求に対応したデー
タの検索とは、後述する図9で説明する命令ロードバッ
ファコントローラのコンパレータによりアドレス比較を
行うことを意味する。このコントローラに対してアドレ
スイン信号によって要求アドレスが入力され、コントロ
ーラ内部のコンパレータにより要求アドレスとロードバ
ッファ内の命令データのアドレスとの比較が行われる。
【0080】LBS内のデータにヒットした場合、LB
PのWMおよびWL両フラグがアクティブであればLB
S Valid状態に遷移する。LBPのWMおよびWL両方
がアクティブでないとき、まだキャッシュに格納してい
ないLBPのデータがキャッシュに格納される。LBS
Valid状態では、LBSのPSフラグにに0をセットす
ることによりLBSは直ちにLBPに変更される。図5
に示されているように、本ロードバッファの場合、この
LBSからLBPへの変更はPSフラグのみの変更で実
現される。この変更動作、即ちLBS.PS=0を契機
に、ステートマシーンはLBS Valid状態からLBP V
alid With Fetch 状態に遷移する。先述のようにこのL
BP Valid With Fetch 状態では、キャッシュに未格納
のLBPのデータがキャッシュに格納される。これによ
って、プリフェッチデータを含むすべてのムーブインデ
ータが格納されたことになる。ロードバッファ制御部は
すべてのデータがキャッシュに格納されるとロードバッ
ファValid を0にセットする。このロードバッファVali
d =0を契機にステートマシンは、idle状態に遷移す
る。
【0081】LBS内のデータにミスした場合、プリフ
ェッチデータは無効であるため、LBSのデータは無効
化される。その後ロードバッファValid =0を契機にス
テートマシーンはidle状態に遷移する。
【0082】本発明における命令ロードバッファの動作
について、図9〜図12を用いて更に詳細に説明する。
図9は図6で説明した命令ロードバッファのロードバッ
ファコントローラの概略構成図である。同図においてロ
ードバッファコントローラは、図8で説明したステート
マシンに相当するコントロール部70を中心としてロー
ドバッファ0に対してアクセスがあった場合、例えば命
令処理部からの要求によってムーブインされた命令の次
の命令に対するフェッチ要求に応じてロードバッファ0
の内容が検索される場合に、アクセスされる命令のアド
レスの上位ビットとロードバッファ0内の命令のアドレ
スの上位ビットとを比較するコンパレータ71、両方の
アドレスの下位ビットを比較するコンパレータ72、同
様にロードバッファ1に対してアクセスがあった場合ア
ドレスの上位ビットを比較するコンパレータ73、下位
ビットを比較するコンパレータ74、ロードバッファ
0、またはロードバッファ1内に格納されたデータのい
ずれかを選択して命令キャッシュメモリ側に出力するた
めのセレクタ75、および同様にアドレスを選択して命
令キャッシュメモリ側に出力するセレクタ76を備えて
いる。
【0083】図8の右側、および後述する図13以降で
説明する実施例においては、LBPに格納された命令が
命令キャッシュメモリ20に格納された後で、LBSに
格納された命令を命令キャッシュメモリに格納する場合
に、LBSに格納されている命令に対するアドレスの全
ビットを比較するヒット判定の結果判定に適合した時に
のみ、LBSに格納された命令が命令キャッシュメモリ
20に格納されることになる。すなわち、図8右側で、
LBP(Valid With Fetch)バリッドウィズフェッチ状態
からLBSバリッド状態に遷移するための条件は、LB
P内のデータが全てキャッシュメモリに格納され、かつ
LBS内のデータに対するヒット判定の結果がヒットと
判定されたことであり、図9ではコンパレータ73、お
よび74が共に‘1’を出力し、コントロール部70の
内部に設けられたアンドゲートにこれらのコンパレータ
の出力が入力されることによってそのアンドゲートの出
力が‘1’となり、ヒット判定に適合したものとして処
理が行われる。
【0084】本発明においては、図8で説明した状態遷
移のみでなく、それと異なった状態遷移も行われる。図
10は図8と異なる状態遷移の例(その1)を示す。同
図においては、図8の右側のデータイン状態のステート
マシンのみが示されており、このステートマシンにおい
てLBPバリッドウィズフェッチ状態からLBSバリッ
ド状態への遷移の条件が一部異なっており、LBSヒッ
トの代わりにLBPアクセスが用いられている。すなわ
ちここではLBPのデータを全て命令キャッシュメモリ
に格納した後に、LBSに格納されている命令データへ
のアクセスに対してアドレスの下位ビットのみによる判
定、すなわちアクセス判定が行われ、そのアクセス判定
に適合した時にLBSに格納されている命令データが命
令キャッシュメモリに格納される。図9においてはコン
パレータ74の出力が‘1’となることにより、このア
クセス判定に適合したものとして処理が行われる。
【0085】図11は図8と異なる状態遷移の例(その
2)を示す。同図においては、LBPに格納された命令
データが全て命令キャッシュメモリに格納された後にL
BS内に格納されたデータを命令キャッシュメモリに格
納するか否かが、図8と異なってLBP内に格納された
命令データに対するヒット判定の結果によって決定され
る。すなわちLBP内に格納された命令のうちで、命令
処理部からの要求に応じてムーブインされた命令データ
に引き続く命令へのアクセス時において、アドレスの全
ビットを用いた比較によってヒット判定が行われ、その
判定に適合した時にのみLBS内に格納された命令デー
タの命令キャッシュメモリへの格納が行われる。図9に
おいては、このヒット判定はコンパレータ71、および
72が共に‘1’を出力することに対応する。
【0086】図12は図8と異なる状態遷移の例(その
3)を示し、LBS内に格納された命令データを格納す
るか否かの決定が、LBPに格納された命令データへの
アクセス判定の結果によって決定される。すなわち、要
求に応じてムーブインされた命令データの次の命令デー
タに対してLBP内でアクセスがあった時に、アドレス
の下位ビットの比較によるアクセス判定の結果コンパレ
ータ72が‘1’を出力した場合にのみ、LBS内に格
納された命令データが命令キャッシュメモリに格納され
る。なお、図8〜図12の説明では、図6のロードバッ
ファ0が最初はLBPに相当し、ロードバッファ1がL
BSに相当するものとして状態遷移を説明した。
【0087】図13にLBS内のデータにヒットした場
合のタイムチャートを示す。図13において、命令キャ
ッシュに対する命令フェッチ要求はT0で発行される。
命令キャッシュは、フェッチ要求を受理することを命令
フェッチ応答により通知する。その後、T1において何
等かのデータが命令バッファに格納される。しかし、こ
のデータは要求データでないため、T2においてキャッ
シュミスが発生し、MIコントロール部によってムーブ
イン要求がアクティブとされることにより、ムーブイン
動作が開始される。T6においてDEIが通知され、そ
の次のT7からT10までの4サイクルの間主記憶からデ
ータが転送されてくる。最初に転送されてくるデータ、
即ちT7において転送されてくるデータAAAAは、例
えばバイパス経路を介してT8で命令バッファにも格納
される。それと同時にIF NEGATEがアクティブ
にされ、これによって命令キャッシュ部はこのサイクル
以後の命令フェッチ要求を受理することができる。T8
での命令フェッチ要求に対してT9において、ロードバ
ッファに入力される該当データCCCCは、直ちに命令
バッファに出力される。その後T10において、LBS内
のデータにヒットしたためLBS HITがアクティブ
になる。このとき一旦LBS VALID状態となり、
PSフラグが変更され、LBSはLBPに変更される。
T11, T12において、プリフェッチデータをキャッシュ
に格納し、次のT13においてIdle状態に遷移する。以上
で、一連の動作は終了する。なお、T8でアドレス10
8でなく、110のデータのフェッチが要求されている
のは要求アドレスが必ずしも連続とは限らないためであ
る。
【0088】図13ではT2でムーブイン要求が出され
てから、例えば実際にデータが転送されてくるT7まで
の期間においてはキャッシュメモリ側では何の動作も行
われないものとしたが、この期間においてキャッシュメ
モリに対して他の処理に伴うアクセスを許すことも可能
になる。すなわち本発明においては、命令ロードバッフ
ァに転送されたデータが命令キャッシュメモリに書き込
まれるまでの期間は命令キャッシュメモリに対するアク
セスを許すことができ、一般にこの期間は長いので、キ
ャッシュメモリのさらなる有効利用が可能となる。
【0089】図14はLBS内のデータにミスした場合
を示す。T9までの動作は図13と同様である。しか
し、図14においてT10でLBS内のデータにミスし
たため、LBS内のデータを無効化することにより、T
11において一連の動作を終了させている。なお、T9に
おいて命令バッファへのデータは本来‘CCCC’であ
るが、次のサイクルでミスと判定される無効データであ
るので‘XXXX’としてある。さらにこのとき図13
と同様に、転送されたデータがロードバッファに入力さ
れると同時に命令バッファにも入力されているが、これ
は例えば別のパスを設けることによって可能である。
【0090】続いて第2の実施例について説明する。第
2の実施例においては、前述のようにデータキャッシュ
メモリへの、例えば主記憶装置からのデータのフェッチ
に際してデータを一時的に格納するためのデータロード
バッファが用いられ、フェッチ命令に対応するムーブイ
ン対象のデータに加えてプリフェッチデータがデータロ
ードバッファに格納される。そこでまず第2の実施例に
おけるデータプリフェッチ、すなわちデータの先取り制
御に関して、そのような先取り制御が有効なプログラム
の例と、そのようなプログラムに対応するタイミングチ
ャートを用いて第2の実施例の概要を説明する。
【0091】図15は第2の実施例においてデータの先
取り制御が有効なプログラムの例であり、図16は図1
5のプログラムに対応するタイミングチャートである。
図15においてアドレス‘0100’のデータがデータ
レジスタD1に読み込まれ、アドレスがインクリメント
され、インクリメントされたアドレスのデータがデータ
レジスタD2に読み込まれるという動作が行われる。例
えば図1(b)における命令/演算処理部27内のアド
レスレジスタA1に‘0100’というアドレス値が読
み込まれ、これに伴って命令/演算処理部27からデー
タキャッシュメモリ26の制御部にデータフェッチ要求
がなされ、その次のサイクルでデータキャッシュメモ
リ、およびデータロードバッファにおけるヒット判定が
行われる。
【0092】図16において、サイクルT1においてア
ドレス‘0100’を指定してデータキャッシュメモリ
に対するデータ要求がなされ、T2でデータキャッシュ
メモリとデータロードバッファの両方でヒット判定が行
われる。両方のヒット判定でミスと判定され、このサイ
クルでデータキャッシュメモリに次ぐ下位の記憶装置、
例えば主記憶装置へのデータ要求がアドレス‘010
0’を用いて行われる。
【0093】これに対応して、要求されたアドレスのデ
ータに加えて、データのプリフェッチが行われる。この
プリフェッチは第1の実施例におけると同様にハードウ
エアプリフェッチであり、Tnでフェッチ要求データ、
すなわちムーブイン対象データ‘AAA’が主記憶装置
からデータロードバッファに転送されると、その次のサ
イクルTn+1でプリフェッチデータ‘BBB’が続い
てデータロードバッファ(DLB)に転送される。それ
と同時に、データ‘AAA’はDLBからデータキャッ
シュメモリに出力されると共に、命令/演算処理部へも
バイパス経路を経て出力される。
【0094】サイクルTn+1において、命令/演算処
理部からアドレス‘0110’を用いてデータのフェッ
チ要求がデータキャッシュメモリとDLBの両方に対し
て入力され、次のサイクルTn+2において共にヒット
判定が行われる。この時要求データ、すなわち‘BB
B’はまだキャッシュメモリに格納されていないので、
キャッシュメモリにおいてはヒット判定の結果がミスと
なるが、DLBのヒット判定においてヒットと判定さ
れ、次のサイクルTn+3においてデータ‘BBB’が
データキャッシュメモリと命令/演算処理部との両方に
対して出力される。
【0095】第2の実施例においても、図13において
説明したと同様に、主記憶装置にムーブイン要求が出さ
れてから最初のデータがデータキャッシュメモリに格納
されるまでの期間においては、データキャッシュメモリ
に対する他の処理に伴うアクセスを許すことが可能とな
る。
【0096】図16のT3からTnまでの間がその期間
である図17および図18は第2の実施例においてソフ
トウエアプリフェッチ命令による先取り制御が有効なプ
ログラムの例であり、図17は高級言語の場合、図18
はアセンブリ言語の場合を示す。図17,図18のプロ
グラムにおいて‘pload A1’の命令がソフトウエアプ
リフェッチ命令であり、‘load D1,A1’の命令が
実際に演算に使用するために、データをレジスタD1に
格納するロード命令である。
【0097】図17の高級言語の場合にはソフトウェア
プリフェッチ命令に相当する命令がなく、図17は図1
8を理解するための概念を示しているものである。図1
8においてではdata(i)と言う配列の先頭アドレス
がセットされ、では後になって必要とするデータのプ
リフェッチが行われ、この命令によってムーブインが起
動される。通常ムーブイン動作は一般の命令実行に比べ
て非常に時間がかかるため、実際のロード命令よりも十
分な時間だけ前に実行されるコンパイラがその時間を考
慮して、このプリフェッチ命令を最適な位置に置く。
【0098】図18のは図17のS=0に相当する。
では実際に計算に必要なデータがデータレジスタD1
に読み込まれる。この時のプリフェッチ命令によって
すでに必要なデータがデータキャッシュメモリ、または
データロードバッファに格納されているため、このデー
タは高速に得られる。では和の計算が行われる。なお
図18ではこれ以後、ソフトウェアプリフェッチ命令
も、iをインクリメントする命令も出てこないが、これ
はのプリフェッチ命令によってS=S+data(i)を
計算するに十分なデータが読み込まれるためである。そ
しての命令実行により、図17のプログラムによると
同じ結果が得られる。
【0099】図19は図17,図18に対応するタイミ
ングチャートの例である。例えば図17において、最初
の命令でアドレスレジスタA1に‘0300’の数値が
アドレス値として読み込まれた後に、続いてA1が指す
アドレスのデータがソフトウエアプリフェッチされる。
これに対応して、図19においてサイクルT1において
アドレス‘0300’を用いてデータキャッシュメモリ
へのデータフェッチ要求がなされ、次のサイクルT2に
おいてデータキャッシュメモリとDLBとのヒット判定
において共にミスと判定され、例えば主記憶装置へのデ
ータ要求がこのアドレスを用いて行われる。
【0100】図16におけると同様に、サイクルTnに
おいてデータ‘AAA’が、また次のサイクルTn+1
においてプリフェッチデータ‘BBB’が主記憶装置か
らDLBに転送される。図16と異なり、サイクルTn
+1において命令/演算処理部からのデータ要求がなさ
れいないために、データキャッシュメモリへはTn+1
で‘AAA’が、またTn+2において‘BBB’が出
力される。この点では図16に比較してデータ‘BB
B’はデータキャッシュメモリに対しては1サイクル早
く出力される。しかしながら、図19においてはソフト
ウエアプリフェッチ命令であるために、命令/演算処理
部へのデータ出力はデータキャッシュメモリへの出力と
は同時に行われない。実際の命令/演算処理部へのデー
タ転送要求はTn+2においてなされ、この時アドレス
‘0300’のデータはすでにDLBからデータキャッ
シュメモリに出力されているので、Tn+3における判
定においてデータキャッシュメモリにおいてはヒット、
DLBにおいてはミスと判定され、Tn+4においてデ
ータ‘AAA’がデータキャッシュメモリから命令/演
算処理部に出力される。
【0101】図20は第2の実施例を説明するためのデ
ータ処理装置の構成ブロック図である。同図において
は、図3と異なり、図2のデータキャッシュブロック3
2内のデータキャッシュメモリ26a、同制御部26
b、データロードバッファ(DLB)61a、および同
制御部61bと、命令/演算処理部27および主記憶装
置9との関係のみが示されている。
【0102】DLB(バッファ部)61aも、図22で
説明するように、図3のLBP45、LBS46と同様
にそれぞれ1ライン分のデータ(オペランド)を格納す
る同一構成の2つのロードバッファから成っている。2
つのロードバッファは図6と同様にロードバッファ0、
ロードバッファ1と名づけられるが、プライマリ、セカ
ンダリの区別は成されない。
【0103】図20におけるデータロードバッファの動
作は図3における命令ロードバッファの動作と同様であ
る。すなわち命令/演算処理部27からのデータ要求に
対してキャッシュミスが発生すると、データキャッシュ
メモリ制御部26bから主記憶装置9に要求アドレスが
通知され、ムーブイン動作が開始される。
【0104】主記憶装置9から転送される2ライン分の
データはDLB(バッファ部)61aに格納される。デ
ータ要求がソフトウェアプリフェッチ命令によるもので
ないときには、命令/演算処理部27から要求されたデ
ータは直ちにデータキャッシュメモリ26aに書き込ま
れるとともに、命令/演算処理部27に直接出力され
る。他のデータおよびソフトウェアプリフェッチ命令に
対応するデータのデータキャッシュメモリ26aへの書
き込みについては図24で詳述する。
【0105】図21は図20のデータキャッシュブロッ
クの詳細構成図である。同図において、データキャッシ
ュブロックは図4で説明した命令キャッシュブロックと
構成は類似しているが、取り扱われるデータが演算など
に用いられるデータとしてのオペランドである点と、プ
ライオリティコントロール部に入力されるデータフェッ
チ要求がロード/ストア要求であり、フェッチ応答がロ
ード/ストア応答である点と、ストア命令に対応してデ
ータをCPUから主記憶装置に格納する際に使用される
バッファとしてのストアバッファ62が追加されている
点が異なっている。
【0106】ソフトウェアプリフェッチ命令は、例えば
図18で説明したように独立した命令としてインプリメ
ントすることもできる。またより簡単な方法としては、
通常のロード命令において格納対象レジスタとして書込
み禁止のレジスタを指定する方法もある。前者の場合に
は、通常のロード命令とソフトウェアプリフェッチ命令
は全く異なるため、命令/演算処理部がその違いを認識
するのは簡単であり、命令/演算処理部はソフトウェア
プリフェッチ命令をロード要求信号と共にデータキャッ
シュに通知する。
【0107】後者の場合には、ロード命令が実質的にソ
フトウェアプリフェッチ命令として機能するか否かの検
出を行うのは命令/演算処理部だけである。その理由は
データキャッシュメモリは通常要求されたデータを命令
/演算処理部に渡すだけであり、そのデータが最終的に
どのレジスタに格納されるかを知っている必要がないた
めである。すなわち命令/演算処理部は、格納対象レジ
スタが書込み禁止のレジスタであることから、その命令
がソフトウェアプリフェッチ命令であることを認識す
る。
【0108】従ってソフトウェアプリフェッチ命令か否
かはロードバッファに専用の信号として通知されるとす
るのが実際的である。その場合は、後述する図23で説
明するように、ソフトウェアプリフェッチ命令通知信号
はプライオリティコントロール部を介してプリフェッチ
信号としてロードバッファに通知される。
【0109】ストアデータをキャッシュに格納する手段
として有効なキャッシュライトバッファが追加されてい
る。キャッシュライトバッファにはステータスコントロ
ール部56からのSTORE HIT信号によりストア
データを格納する。そして、そのデータはプライオリテ
ィコントロール部50に要求を出してその要求が受け付
けられた際に、該当データをキャッシュに格納する。
【0110】図21のデータキャッシュブロックと図4
の命令キャッシュブロックとの構成の相違について更に
説明すると、まずウェイトレジスタ部とMIコントロー
ル部は全く同じ構成である。ステータスコントロール部
については、データキャッシュブロックでは命令キャッ
シュブロックと異なって主記憶装置への書込み、すなわ
ちストア動作が行われるために外部回路はその分異なる
が、ロードバッファに着目した時の動作は同じである。
【0111】また、プライオリティコントロール部につ
いては、要求が増えるためにプライオリティエンコーダ
の構成は若干異なるが、それ以外は同じである。キャッ
シュへの書込み要求に対するライトアクノリッジ信号の
出力タイミングについても、命令キャッシュブロックに
おけると全く同様である。ソフトウェアプリフェッチ命
令に対しては、ロードバッファに格納されたデータをキ
ャッシュメモリに格納する要求がプライオリティコント
ロール部で受け付けられた時に、プライオリティコント
ロール部からライトアクノリッジ信号が出力される。
【0112】図22は第2の実施例におけるデータロー
ドバッファの構成ブロック図である。同図において、デ
ータロードバッファは図6に説明した第1の実施例にお
ける命令データロード用のロードバッファとその構成に
おいてほとんど同様であるが、使用目的が異なり、図6
のようにロードバッファプライマリィとロードバッファ
セカンダリィとを区別する必要がない。ロードバッファ
のそれぞれはLB0およびLB1と名付けられ、これら
のそれぞれのロードバッファは1ライン分、nバイトの
フリップフロップで構成される。図6との大きな相違点
は、図6においてロードバッファのプライマリィとセカ
ンダリィとの区別を示すPSフラグの代わりに、アクテ
ィブである時のそのエントリのデータがソフトウエアプ
リフェッチのデータであることを示すPFフラグが設け
られている点である。その他のフラグなどの意味は図6
におけると同様である。
【0113】図23はデータロードバッファと図21に
示したデータキャッシュブロック内の各部とのインタフ
ェース、および主記憶装置との間のバスとしてのPBU
Sとのインタフェースの例である。図23における各信
号の意味は図7と類似しているが、区別を明確にするた
め、それぞれの信号の意味を以下に説明する。
【0114】DLB ADR :ムーブインの原因と
なったデータフェッチ要求に対応するデータの起動アド
レスを示す READ ID : データフェッチ時の2ライン
分、2nバイト内の選択信号 SRAGE3 VALID :キャッシュブロックのS
TAGE3が有効であることを示す SRAGE3 PADR :データフェッチ要求の物
理アドレスで、DLBADRと同じとしてもよい WRITE ACK :キャッシュへの書き込み
要求に対するキャッシュからの応答 PRE FETCH :ムーブインによるデータ
はソフトウエアプリフェッチであることを示す DO LOAD :キャッシュRAMへの書
き込みデータ DO LOAD IU :レジスタへの書き込みデ
ータ LB WRITE ADR :キャッシュへの書
き込みデータのアドレス LB WRITE REQ :キャッシュへの書
き込み要求 LB WRITE REQ WITH SPF :キャ
ッシュへのソフトウエアプリフェッチ時の書き込み要求 DF NEGATE :LBにデータが格納さ
れ、LBがフェッチ要求を受け付ける状態となったこと
を示す LOAD BUFF VALID:ロードバッファのデ
ータが有効であることを示す SET STV :ムーブイン時のヒット信
号 DLB LINE :ロードバッファにデータ
フェッチ要求がきた際のヒット判定信号(コンパレータ
による判定結果) PBUS DEI IN :PBUSから次のサイク
ルにデータが来ることを示す PBUS DATA IN :PBUSからのデータ PBUS DATA ID :PBUSから来るデータ
の2ライン、2nバイト内の位置 RESET :リセット信号 CLOCK :クロック信号 図24にデータロードバッファのステートマシンを示
す。図8と同様に左側は全体のステートマシンを、右側
は1つのステートであるデータインのステートマシンを
示している。左側の全体のステートマシンでは図8のL
BP.VのフラグがロードバッファのVフラグ、LB.
Vとなっている点を除いて、状態遷移の様子は図8と同
様である。
【0115】図8におけると同様に、フラグLB.Vが
アクティブになるとData In 状態になるが、このときソ
フトウエアプリフェッチでなければ(LB Pre Fetch
=0)ハードウエアプリフェッチとしてのLB Wait 状
態に遷移する。この状態は図8におけるLBP Valid状
態に相当し、同様の動作が行われる。例えばこの状態で
最初にロードバッファに格納されるデータは、データフ
ェッチ要求に該当するデータである。従って、LB Wai
t 状態において最初にデータが格納されるとき、データ
ロードバッファはそのデータを図2の汎用レジスタ40
に格納するため、do Load iuに出力する。このとき、
データロードバッファはキャッシュヒットを示すSET
STV信号をステータスコントロール部56に出力す
る。データキャッシュは、何等からの原因によりインタ
ーロックしない限り新たなるデータフェッチ要求を受理
する。
【0116】データフェッチ要求によってロードバッフ
ァに保有中のラインがアクセスされる場合、データロー
ドバッファは、アドレスの下位ビットのみによってアク
セス判定を行い、この判定にヒットしたとき、LB Acc
ess をアクティブにする。ロードバッファは、このL
B.Access信号がアクティブとなるのを契機にData In
状態中のLB Wait 状態からHigh Write状態に遷移す
る。このHigh Write状態では、新たなるムーブインデー
タ( プリフェッチデータ) を格納しながらLBで保持し
ているデータでかつまだキャッシュに格納していないデ
ータをキャッシュに格納する。また本状態中データキャ
ッシュブロックは、データフェッチ要求を受理する。ロ
ードバッファValid 中に受理されたデータフェッチ要求
に対しては、ロードバッファが検索される。上述のアク
セス判定の結果、LB Access がアクティブとなること
は、図37におけるキャッシュへのアクセスに関して説
明したアドレスのIndex 部が一致していることを意味す
る。
【0117】ソフトウエアプリフェッチのデータが主記
憶装置から転送されることにより状態がData In に遷移
するとき、Data In 状態のステートマシーンはidle状態
からLB Wait With SPF状態に遷移する。この状態
において、主記憶装置から転送されるデータはロードバ
ッファに格納される。しかし、キャッシュへの書き込み
は、キャッシュ部がいかなる動作も実行しない場合に限
り実行される。本システムでは、ロードバッファからキ
ャッシュへの書き込み要求(WRITE REQ WITH SPF)信号は
アクティブになるが、この信号はデータキャッシュ部で
実行される操作における最も低い優先度を持つ。従っ
て、この要求がデータフェッチ要求等の他の要求と衝突
したときは、ロードバッファに対する応答(WRITE ACK)
信号がアクティブとならない。LB Wait With SPF状態
においてのデータフェッチ要求に対しては、キャッシュ
部とともにロードバッファもその内容が検索される。
【0118】この検索においてロードバッファ内のデー
タにヒットすると、ステートマシーンはHigh Write状態
に遷移する。この状態では WRITE REQ WITH SPF よりも
優先度の高い書き込み要求(WRITE REQ) を用いてロード
バッファ内のデータはキャッシュに格納される。なおこ
の状態への遷移は、LB Go Write 信号がアクティブに
なることによっても成される。この信号は、図21にお
けるコンパレータ55によるアドレス比較の結果、キャ
ッシュミスのときにステータスコントロール部56から
出力されるもので、ロードバッファに対して格納されて
いるデータの出力を指示するものである。
【0119】データロードバッファのロードバッファコ
ントローラの構成は、図9で説明した命令ロードバッフ
ァのコントローラとほぼ同じである。図24で説明した
ように、データロードバッファのステートマシンは命令
ロードバッファのステートマシンと異なるため、コント
ロール部の内部の回路は当然命令ロードバッファのコン
トロール部の回路とは異なる。その回路については図3
8〜図51で説明する。
【0120】コントローラの動作としては、データロー
ドバッファの場合にはソフトウェアプリフェッチか否か
を示すPFフラグが、ロードバッファバリッド(Load Bu
fferValid) =1となってファーストデータイン(First
Data In) 状態からデータイン(Data In) 状態に遷移す
ると同時に書き込まれる。ソフトウェアプリフェッチか
否かは、図23で示したようにプリフェッチ信号によっ
てデータキャッシュインタフェースを介して通知され、
その信号の値がPFフラグの値としてセットされる。デ
ータイン状態では、図24の右側に示したように、この
PFフラグの値に応じて2種類の動作が行われる。
【0121】ソフトウェアプリフェッチでない場合に
は、例えば命令ロードバッファに対して図12で説明し
た動作と同様の動作が行われる。すなわち図24の右側
のLBウェイト(Wait)状態では、まず主記憶装置から転
送された要求対象データを含むラインのデータがデータ
キャッシュメモリに格納されると同時に、要求されたデ
ータ自体は図23に示したdo load iuにも出力される。
【0122】このラインがデータキャッシュメモリに格
納された時点、すなわちWM=WL=1となった時点
で、要求データを含むライン内のデータへのアクセスに
対してデータの下位アドレスのみを比較するアクセス判
定にそのデータが適合した時、LBアクセス(Access)=
1となってハイライト(High Write)状態への遷移が行わ
れる。この時点でアクセスがない場合にはLBVフラグ
が‘0’とされ、先取りされたラインのデータはデータ
キャッシュメモリに格納されることなく、アイドル状態
への遷移が行われる。
【0123】ハイライト(High Write)状態では、先取り
されたラインのデータがデータキャッシュメモリに格納
される。主記憶装置から転送されるデータがまだロード
バッファに格納中である時には,そのデータをロードバ
ッファに格納しながら、ロードバッファ内に保持されて
いるデータがデータキャッシュメモリに格納される。そ
して全てのデータをデータキャッシュメモリに格納し終
わった時点で、アイドル状態への遷移が行われる。
【0124】ソフトウェアプリフェッチでない場合に、
命令ロードバッファに対して図10で説明した動作と同
様の動作も行われる。図10ではロードバッファセカン
ダリ内の命令データに対するアクセス判定の結果、ロー
ドバッファセカンダリ内の命令データがその判定に適合
した場合にその命令データが命令キャッシュメモリに格
納されるが、データロードバッファの場合には要求され
たデータを含むラインの次のライン、すなわち先取りさ
れたライン内のデータがアクセス判定に適合した場合に
そのデータ、例えば図22ではロードバッファ1内のデ
ータが、ハイライト(High Write)状態においてデータキ
ャッシュメモリに格納される。この場合、図24のLB
ウェイト(Wait)状態からハイライト(High Write)状態へ
の遷移の条件であるLBアクセス(Access)=1という条
件の意味が、前述(ロードバッファ0内のデータに対す
る判定)とは異なるものとなる。
【0125】更に命令ロードバッファに対して図11で
説明した動作と同様の動作もデータロードバッファにお
いて行われる。すなわち命令/演算処理部から転送を要
求されたデータを含むライン内のデータを対象とするヒ
ット判定において、そのデータがアドレスの全ビットに
よるヒット判定に適合した場合にハイライト状態への遷
移が行われ、先取りされたラインのデータがデータキャ
ッシュメモリに格納される。この場合、図24において
LBウェイト(Wait)状態からの遷移の条件は、LB H
IT=1となる。ハイライト(High Write)状態において
はヒット判定の結果が、図21のDlb Lineを介して
データロードバッファ61からステータスコントロール
部56に通知され、それと共にデータの出力が行われ
る。
【0126】ソフトウェアプリフェッチ命令に対して
は、図21のプライオリティコントロール部50におい
て、データキャッシュメモリへのソフトウェアプリフェ
ッチデータの書込み要求を、通常のロード/ストア要求
に伴う書込み要求よりも優先度の低い要求として扱うこ
とにより、通常のロード/ストア要求に対応するデータ
フェッチ要求の処理が先に行われ、データフェッチ要求
がない時にソフトウェアプリフェッチデータがデータキ
ャッシュメモリに格納される。
【0127】この場合のプライオリティコントロール部
の優先順位としては、例えばソフトウェアプリフェッチ
命令以外の命令に対応するキャッシュへの書込み要求を
第1、再実行要求を第2、データフェッチ要求を第3、
ソフトウェアプリフェッチ命令に伴うキャッシュへの書
込み要求を第4とする順位とする。なお、ここで第3順
位のデータフェッチ要求はソフトウェアプリフェッチ命
令に対応するデータフェッチ要求をも含んでいるが、こ
の命令に伴うデータのキャッシュへの書込み要求は第4
の順位、すなわち最も低い優先順位で処理されることに
なる。
【0128】図24においては、ソフトウェアプリフェ
ッチ命令に対応してロードバッファバリッド(Load Buff
er Valid) =1となると、ロードバッファウェイトウィ
ズ(LB Wait With) SPF状態への遷移が行われる。
この状態では、主記憶装置から転送されるデータをロー
ドバッファに格納しながら、プライオリティコントロー
ル部に対してロードバッファは優先順位が第4位のキャ
ッシュへの書込み要求信号を出力し、その要求に対する
アクノリッジ信号を受けた時点でデータをキャッシュメ
モリに格納する動作が行われ、全てのデータの書込みが
終わった時点でアイドル状態への遷移が行われる。
【0129】ロードバッファウェイトウィズ(Load Buff
er Wait With) SPF状態からハイライト(High Write)
状態への遷移は、Load Buffer =HITと言う条件か、
ロードバッファゴーライト(LB go Write)=1と言う
条件である。ロードバッファウェイトウィズ(LB Wai
t With) SPF状態で命令/演算処理部からのデータフ
ェッチ要求の処理が行われ、キャッシュミスになった時
にはロードバッファに格納されたデータを対象としてア
ドレスの全ビットによるヒット判定が行われ、その判定
に適合した場合にはロードバッファ=ヒットの条件が成
り立ち、ハイライト(High Write)状態への遷移が行われ
る。またこのヒット判定においてミスした時にも、ロー
ドバッファゴーライト(Load Buffer go Write)=1とな
り、ハイライト(High Write)状態への遷移が行われる。
【0130】ハイライト(High Write)状態では、主記憶
装置から転送されるデータのロードバッファへの格納と
共に、前述のようなソフトウェアプリフェッチ命令以外
の場合と同様に有効データのキャッシュメモリへの格納
が行われるが、Load Buffer=HITの条件によって遷
移が行われた場合にはヒット判定通知が前述と同様にス
テータスコントロール部にも通知され、それと同時にデ
ータ出力が行われる。そして全てのデータをキャッシュ
メモリに格納した時点で、アイドル状態への遷移が行わ
れる。
【0131】図25にソフトウエアプリフェッチの場合
のタイムチャートを示す。図25において、データキャ
ッシュに対するLoad/Store 要求はT0で発行される。
データキャッシュは、命令/演算処理部27に対して、
フェッチ要求を受理することをLoad/Store 応答により
通知する。その後、T2において何等かのデータがレジ
スタに格納されるが、このデータは要求データと異なる
ためキャッシュミスが発生し、ムーブイン要求がアクテ
ィブとされて、ムーブイン動作が開始される。T6にお
いてDEIが通知され、その次のT7からT10までの4
サイクルの間主記憶からデータが転送されてくる。最初
に転送されてくるデータ、すなわちT7において転送さ
れて来るデータはレジスタに転送されるが、このレジス
タはアドレス値として0のみを持つものであり、実質的
にデータはレジスタに格納されない。データキャッシュ
部は他のデータフェッチ要求をT7以降に受理すること
ができる。T8においてT0のソフトウエアプリフェッ
チに対する実際のLoad/Store 要求が発行されている。
このフェッチ要求は、T10においてロードバッファ内の
データにヒットしている。ロードバッファはこのヒット
を契機にLB WAITWith SPF状態からHigh Write状態に
遷移している。その後、ロードバッファのデータは、優
先度の高い書き込み要求(WRITE REQ)により格納され
る。以上で、一連の動作は終了する。
【0132】図26〜図37は第1の実施例におけるロ
ードバッファ、すなわち命令ロードバッファに対する制
御回路の実施例である。また図38〜図51は第2の実
施例におけるロードバッファ、すなわちデータロードバ
ッファに対する制御回路の実施例である。これらの図中
で使用されているゲート信号の意味を以下に示す。
【0133】DEEREG :リセット付FF BUFGATE :バッファ(入力と同じ論理を出力) INVGATE :インバータ AND2 :2入力AND AND3 :3入力AND OR2 :2入力OR OR3 :3入力OR OR4 :4入力OR OR5 :5入力OR NOR2 :2入力NOR XOR2 :2入力排他倫理和 Data ID GEN :入力に応じた2ビットのI
D出力 MUX2 :2ビット2→1セレクタ MUX :144 ビット2 →1セレクタ MUX144 :144 ビット2 →1セレクタ CMPARATOR:27ビット比較器 BUFF :ロードバッファにおけるバッファ部 これらの制御回路のうち命令ロードバッファに対する制
御回路の動作の一部を説明する。図8のLBPバリッド
状態、またはLBPバリッドウィズフェッチ状態におい
て、LBPの格納内容のうちMSB側が命令キャッシュ
に格納されると、LBPのWMフラグが1とされる。ま
たLBPのLSBが命令キャッシュに格納されると、W
Lフラグが1とされる。するとLBP側ではWM=WL
=1となるので、図38〜図51のLB0Pライト(Wri
te) かLB1Pライト(Write) のどちらかが‘1’とな
り、ファーストLBPライト(First LBP Write) も1と
なる。
【0134】前述のように、命令ロードバッファにおい
てはPSフラグの内容によって2つのロードバッファが
それぞれLBP,LBSになるが、ここでも最初にLB
Pはロードバッファ0、LBSはロードバッファ1であ
ったとすると、LB0Pライトが‘1’となる。各フラ
グを‘1’とするためには、図9のコントロール部70
からLBPのWM/WLフラグを‘1’として出力する
と共に、ライトイネーブル信号(WE)として通常
‘1’を出力することになる。これらの信号は図6のフ
ラグ0イン信号とWE0とによってバッファ部に伝えら
れ、バッファ部内のフラグが書き換えられる。
【0135】一方、LBS内のデータに対するヒット判
定の結果がヒットであれば、図35のLBSヒットが
‘1’となる。このヒット判定は図37の2つのコンパ
レータによって行われる。これらの2つのコンパレータ
は図9では4つのコンパレータとして示されているが、
最終的には同じ結果が得られる。これらのコンパレータ
の出力から図35のLBSヒット信号が得られる。ファ
ーストLBPライト=1かつLBSヒット=1となる
と、図28のLBSバリッドが‘1’となり、LBSバ
リッド状態への遷移が行われる。この信号は次に図36
の回路に伝えられ、フラグ1(1)LBSバリッドが
‘1’となる。次に図32のフラグ(1)インが‘0’
となると共にWE1が‘1’となり、ロードバッファ1
のPSフラグが‘1’から‘0’に書き換えられる。
【0136】以上に説明した実施例においては、命令ロ
ードバッファ、およびデータロードバッファは共に各段
が1ライン分の容量を持つ2段のロードバッファによっ
て構成されるものとしたが、必ずしも2段に限定される
ことなく、3段以上のバッファによってこれらのロード
バッファを構成することもできることは当然である。
【0137】図52は本発明の第3の実施例のキャッシ
ュ記憶装置を示している。図52のキャッシュ記憶装置
は、キャッシュタグ301、キャッシュ302、コンパ
レータ303、セレクタ304、キャッシュ制御部31
0、キャッシュライトバッファ305と、さらにムーブ
インバッファ306、2入力セレクタ308を備える。
【0138】この実施例において、キャッシュライトバ
ッファ305が図示しない中央処理装置とキャッシュメ
モリ302の間に設けられ、ムーブインバッファ306
は主記憶装置309とキャッシュメモリ302の間に設
けられる。
【0139】以下、図53(a)及び(b)のフローチ
ャートを参照して、ロード命令及びストア命令の動作を
説明する。先ず、図53(a)のロード命令では、ステ
ップS1a(アドレスセレクトステージ)でロード命令
を発行してアドレスを選択し、ステップS2(タグ及び
キャッシュアクセスステージ)でキャッシュ302及び
キャッシュタグ303にアクセスしてデータを読み出
し、ステップS3a(ヒット判定ステージ)で読み出し
たデータのヒット判定を行う。
【0140】但し、キャッシュライトバッファ305内
に、キャッシュ302への書き込み前のデータが存在し
ている可能性があるので、ステップS1bでキャッシュ
ライトバッファ305の有効ビットVの判定をし、有効
である場合にはステップS3bでキャッシュライトバッ
ファ305のデータフィールドDのデータを読み出す。
【0141】一方、図53(b)のストア命令では、ス
テップS11a(アドレスセレクトステージ)でストア
命令を発行してアドレスを選択し、ステップS11bで
キャッシュライトバッファ305の有効ビットVの判定
をする。次に、ステップS12a(タグアクセスステー
ジ)でキャッシュタグ303にアクセスし、キャッシュ
ライトバッファ305の有効ビットVが有効である場合
には、同時にステップS12bで、キャッシュライトバ
ッファ305のデータフィールドDのデータ、すなわち
前のストア命令の書き込みデータをキャッシュ302に
書き込み、有効ビットVを無効化する。次に、ステップ
S13(ヒット判定ステージ)でヒット判定を行い、ヒ
ットしていれば、キャッシュライトバッファ305のア
ドレスフィールドAにアドレスデータを、データフィー
ルドDに書き込みデータをそれぞれ書き込み、有効ビッ
トVを有効化する。
【0142】次に、ストア命令の後に連続したロード命
令が実行される場合の動作を図54を参照して説明す
る。図54はストア命令及びそれに連続するロード命令
を実行する場合の第3の実施例のキャッシュ記憶装置の
タイミングチャートである。
【0143】図54において、T0サイクルでストア命
令(Store)が発行されと、同時にキャッシュライトバッ
ファ305の有効ビットVの判定をする。次に、T1サ
イクルにおいてタグアクセス(Tag Access) を行うと同
時に、有効ビットVが有効である(WB Valid) 場合には
キャッシュ302の該当アドレス(ADR 100)へのデータ
(Data AA)の書き込み(Data Write) を行う。
次に、T2サイクルにおいてヒット判定を行い、ヒット
(Hit)であればキャッシュライトバッファ305のアド
レスフィールドAにアドレスデータ(ADR 200)を、デー
タフィールドDに書き込みデータ(Data BB)を
それぞれ書き込み、有効ビットVを有効化(WB Valid)
する。
【0144】次に、T1サイクルでロード命令(Load)
が発行されると、T2サイクルにおいてタグ及びキャッ
シュアクセス(Cache Access) を行い、T3サイクルに
おいてヒット判定(Hit)及びデータ(Data CC)
の出力を行う。
【0145】更に、T2サイクルでロード命令(Load)
が発行されても、T3サイクルにおいてタグ及びキャッ
シュアクセス(Cache Access) を行い、T4サイクルに
おいてヒット判定(Hit)及びデータ(Data DD)
の出力を行う。つまり、従来のように、キャッシュ30
2へのアクセス競合により、後続のロード命令を待機さ
せることなく後続のロード命令を実行できる。
【0146】尚、第3の実施例では、キャッシュ制御部
310は、中央処理装置のストア命令実行時にキャッシ
ュミスが生じた場合、キャッシュライトバッファ305
には書き込みデータを書き込まず、ストアバッファのみ
に書き込むよう制御するとしたが、他の制御方法とし
て、必ず一度書き込みデータをキャッシュライトバッフ
ァ305に書き込み、キャッシュミスが生じた場合にキ
ャッシュライトバッファ305に書き込みを行った該デ
ータをリセットする方式も考えられる。
【0147】この場合、新たなストア命令を実行する時
には、命令発行時にキャッシュライトバッファ305の
データ(前のストア命令の書き込みデータ)をキャッシ
ュ302に書き込み、ヒット判定以前に書き込みデータ
をキャッシュライトバッファ305に書き込み、ヒット
判定の結果、ミスであれば(そのステージで)キャッシ
ュライトバッファ305の有効ビットVを無効化する。
【0148】また第3の実施例では、キャッシュライト
バッファ305内の有効なデータをキャッシュ302に
書き込むタイミングを、新たなストア命令実行時とした
が、これに限らず、新たなストア命令発行以前の当該キ
ャッシュ記憶装置の許す任意の時刻であればよい。
【0149】以上説明したように、第3の実施例によれ
ば、中央処理装置のストア命令実行時に、書き込みデー
タを直接キャッシュに書き込まず、先ずキャッシュライ
トバッファに書き込みアドレス及びデータを書き込み、
キャッシュ記憶装置の許す任意の時刻に、キャッシュラ
イトバッファが有効なデータを保持していると認識され
た場合に、該データをキャッシュに書き込むよう制御す
ることとしたので、ロード命令とストア命令の実行を同
一のステージ数で終了することが可能となり、ロード及
びストアのアクセス競合を解消した高性能なデータ処理
装置を提供することができる。
【0150】また、中央処理装置のストア命令実行時に
キャッシュミスが生じた場合、キャッシュライトバッフ
ァには書き込みデータを書き込まず、ストアバッファの
みに書き込むよう制御し、キャッシュライトバッファが
有効なデータを保持している場合には、新たなストア命
令を実行する時に、同時にキャッシュライトバッファの
データをキャッシュに書き込むよう制御する。このた
め、ロード命令とストア命令の実行を同一のステージ数
で終了することが可能となり、ストア命令及びそれに連
続するロード命令を実行する場合にも、先行のストア命
令によるキャッシュへの書き込みと、発行しようとする
ロード命令によるキャッシュからの読み出しが競合しな
い。従って後続のロード命令を待機させることなく実行
でき、結果として、キャッシュ記憶装置におけるロード
及びストアのアクセス競合を解消した高性能なデータ処
理装置を提供することができる。
【0151】図55は、第3の実施例によるロード命令
実行時の動作フローを示す。図52のキャッシュ記憶装
置は、S201で中央処理装置からロード命令と主記憶
装置アクセスアドレスを受け取る。
【0152】次に、アドレスレジスタADRに格納され
た主記憶装置アクセスアドレスのうち、インデクスを取
り出して、キャッシュ302およびキャッシュタグ30
1にアクセスし(S202)、キャッシュタグ301よ
り読み出したアドレスと、ADRより取り出したタグと
をコンパレータで比較する(S203)。
【0153】S203でアクセスがヒットしたときは、
キャッシュ302から読み出されたデータのうち、タグ
に対応するデータをセレクタにより選択し、処理を終え
る。S203でアクセスがミスしたとき、すなわち、タ
グに対応するアドレスがキャッシュタグ303に格納さ
れていなかったときは、キャッシュ制御部310は、主
記憶装置又は、主記憶装置と図52のキャッシュ記憶装
置の間に設けられた下位キャッシュ記憶装置に対して、
ロードすべきデータを要求する(S204)。
【0154】主記憶装置又は下位キャッシュ記憶装置か
らデータが読み出されると(S205)、このデータを
一旦ムーブインデータとしてムーブインバッファ306
に格納する(S206)。その後ムーブインバッファ3
06から、他のキャッシュアクセスに優先して、例え
ば、後続するストア命令のキャッシュライトバッファ3
05からキャッシュへの書き込みを待たせてムーブイン
データを2入力セレクタ308を介してキャッシュ30
2に格納する。このとき、ムーブインデータに対応する
アドレスもキャッシュ制御部310からキャッシュタグ
301に格納する。格納されたムーブインデータはロー
ドデータとして出力される(S207)。
【0155】中央処理装置から受け取った命令がストア
命令であった場合の動作フローは図53(b)に示され
ている。キャッシュ記憶装置は、主記憶装置アクセスア
ドレスとストアデータを受け取ると、まずキャッシュタ
グにアクセスし、タグのヒット判定を行う。ヒットすれ
ば、ストアデータをキャッシュライトバッファ305に
格納する。このとき、キャッシュライトバッファ305
の有効ビットがValid であれば、同時にキャッシュライ
トバッファ305に既に格納されていた他のデータをキ
ャッシュ302に書き込む。
【0156】キャッシュライトバッファ305に格納さ
れたストアデータは、他のストア命令の実行時以外に、
他のキャッシュアクセスが行われていない時にも、キャ
ッシュ302に書き込むことができる。不図示のCPU
の制御により、2入力セレクタ308は、キャッシュ3
02へのデータ入力元を、不図示のCPUの制御により
ムーブインバッファ306とキャッシュライトバッファ
305のうちから選択する。
【0157】図56は、図52のキャッシュ記憶装置に
おいて、ロード命令によるキャッシュアクセスがミスし
た場合を示すタイミングチャートである。サイクルT0
でロード命令と主記アクセスアドレスADR100が発
行されると、サイクルT1でタグアクセス及びキャッシ
ュアクセスを行い、サイクルT2でミスと判定される。
これに伴い、主記憶装置又は下位キャッシュ記憶装置に
対して、ムーブイン要求MI−REQと、ムーブイン用
の読み出しアドレスMI−ADR100を発行する。な
お、サイクルT2ではムーブインバッファ306にはデ
ータ(Data XX)が格納されている。サイクルT
4で主記憶装置又は下位キャッシュ記憶装置からデータ
AAが読み出され、サイクルT5でムーブインバッファ
306に格納される。T3はムーブイン要求MI−RE
Qが発行されてから、データAAが読み出れるまでの時
間を表し、必ずしも1サイクルとは限らない。
【0158】ムーブインバッファ306に格納されたデ
ータAAは、その後キャッシュ302に書き込まれる。
第3の実施例において、キャッシュタグ301でキャッ
シュミスが生じたときロードデータをムーブインして一
時格納するムーブインバッファ306を第1、第2実施
例のロードバッファによって構成すれば、ロードバッフ
ァと、ストアデータを一時格納するキャッシュライトバ
ッファ305とを共に設けることになるので、第1およ
び第2の実施例の効果も奏することができる。
【0159】本実施例によれば、ロード命令実行時にキ
ャッシュタグアクセスがミスしたとき、すなわち、ロー
ドしようとしたデータがキャッシュに保持されていなか
ったとき、主記憶装置あるいは別のキャッシュ記憶装置
から、上記データをキャッシュライトバッファに格納す
る。格納された、ロードしようとしたデータはストアデ
ータの場合と同様に、キャッシュライトバッファが有効
なデータを保持し、かつ、キャッシュへのアクセスが許
される任意の時刻にキャッシュに格納される。
【0160】従って、主記憶装置等から直接キャッシュ
にデータを格納する処理がなくなり、ロード命令に後続
する、ストア等のキャッシュアクセスを伴う命令を直ち
に実行することができる。そして、ムーブインバッファ
とキャッシュライトバッファとの切り換え手段を設け
て、キャッシュライトバッファからのストア命令あるい
はデータのキャッシュメモリへの格納とムーブインバッ
ファからのロード命令、あるいはロードデータのキャッ
シュメモリへの格納とを切り換え制御することができ
る。
【0161】図57は本発明の第4の実施例のキャッシ
ュ記憶装置を備えたデータ処理装置の構成図である。図
57のデータ処理装置は、演算処理装置321、命令制
御装置322、キャッシュ制御部323、キャッシュ記
憶部324、キャッシュライトバッファ325よりな
る。
【0162】ロード命令、ストア命令等のキャッシュア
クセス要求を命令制御装置322から受け取ると、キャ
ッシュ制御部323は、演算処理装置321からのアク
セスアドレスをもとに、キャッシュ記憶部324へのア
クセスを行う。
【0163】キャッシュアクセス要求がロード命令であ
った場合、キャッシュ記憶部324へのアクセスがミス
に終わると、キャッシュ制御部323は主記憶装置又は
下位キャッシュ記憶装置に対してアクセス要求を発行
し、ロード命令の要求するデータをムーブインデータと
して読み出す。読み出されたムーブインデータは、第4
の実施例とは異なり、キャッシュライトバッファ325
に格納される。
【0164】キャッシュアクセス要求がストア命令であ
った場合は、キャッシュ記憶部324へのアクセスがヒ
ットした後、ストアデータをキャッシュライトバッファ
325に格納する。
【0165】キャッシュライトバッファ325に格納さ
れたムーブインデータおよびストアデータはキャッシュ
格納データとして、他のストア命令実行時、あるいはキ
ャッシュ記憶部324に対するアクセスが行われていな
いときに、キャッシュ記憶部内に格納される。
【0166】このようにムーブインデータをムーブイン
バッファの代わりにキャッシュライトバッファ325に
格納して、ストアデータと同様に扱うことにより、ムー
ブインバッファが不要になる。従って、図52の第3の
実施例より、少ないチップ面積でムーブインデータの格
納が実現され、キャッシュ制御部323によるキャッシ
ュ記憶装置の制御も、より簡単になる。
【0167】図58は図57のキャッシュ記憶装置の詳
細構成図である。図57の第4の実施例のキャッシュ記
憶装置は、ムーブインのためのバッファを持たず、代わ
りにムーブインデータはキャッシュライトバッファ32
5に格納される。キャッシュライトバッファ325から
出力されるキャッシュ302への格納データは、ストア
データあるいはムーブインデータのいずれかである。
【0168】図59は図58のキャッシュライトバッフ
ァ325の構成図である。図59において、ストアデー
タ、ムーブインデータは、2入力セレクタ331を介し
て、キャッシュライトバッファ325内のデータフィー
ルドに格納される。2入力セレクタ331により、スト
アデータとムーブインデータとの選択をすることによ
り、キャッシュライトバッファ325はストアデータを
格納するキャッシュライトバッファ325としての動作
と、ムーブインデータを格納するムーブインバッファと
しての動作とを切り換えて行うことができる。キャッシ
ュライトバッファ325はキャッシュ302のウェイ数
に対応して4種類のデータを格納し、ファースト−イン
−ファースト−アウト方式で動作する。4入力セレクタ
334は、格納された4種類のデータのうち1つを選択
してキャッシュ302へ出力する。キャッシュライトバ
ッファ325に格納されるデータの幅は、キャッシュ3
02に一度に格納できるデータ幅と同一である。
【0169】書き込みアドレスはキャッシュ302へデ
ータを格納するときのアドレスであり、キャッシュ格納
アドレスとして、4入力セレクタ334からの格納デー
タと共に4入力セレクタ333から出力される。
【0170】バイトマークbmは、キャッシュへの格納
データのバイト数を表し、有効ビットVは、キャッシュ
ライトバッファ325内のデータが有効か否かを表す。
データが有効であれば、キャッシュ302に対して4入
力セレクタ332がライトイネーブル信号を出す。
【0171】なお、第4の実施例に用いられたキャッシ
ュライトバッファ325の構成は、図58図に示したも
のと2入力セレクタ331がない点を除いては同一であ
る。図60は、第4の実施例のキャッシュ記憶装置によ
るロード命令実行時の動作フローを示している。
【0172】図60のフローにおいて、S221からS
225までの動作は図55のS201からS205まで
の動作と同様である。S226において、主記憶装置又
は下位キャッシュ記憶装置から読み出されたムーブイン
データは、キャッシュライトバッファ325に格納さ
れ、この段階で処理を終了する。以後、格納されたムー
ブインデータはストアデータと同様に扱われ、例えば、
他のストア命令の実行時に、キャッシュ302に格納さ
れる。このとき、キャッシュ制御部310は、ムーブイ
ンデータの読み出しアドレスを、キャッシュタグ301
に格納する。
【0173】図61は第4の実施例において、ロード命
令実行時にキャッシュアクセスがミスした場合を示すタ
イミングチャートである。サイクルT0からT4までの
動作は、図56と同様であるが、サイクルT4におい
て、主記憶装置又は下位キャッシュ記憶装置から読み出
されたムーブインデータAAは、サイクルT5でキャッ
シュライトバッファ325に格納される。格納されたデ
ータAAは、ストア命令の実行時、または、キャッシュ
302への他のアクセスがないときに、キャッシュ30
2に格納される。
【0174】このように、ロード命令がキャッシュミス
した時に、ムーブインデータをキャッシュライトバッフ
ァに格納すれば、ムーブインバッファを制御する必要が
ないだけでなく、ムーブインバッファからキャッシュへ
のデータ書き込み処理がなくなる。したがって、他の命
令によるキャッシュアクセスが可能となり、キャッシュ
ライトバッファへのデータの格納と、キャッシュライト
バッファからキャッシュへのデータの格納は、ファース
トイン・ファーストアウト方式で制御されるので、後続
するロード命令またはストア命令のインタロックを解消
することができる。キャッシュライトバッファへのデー
タ書き込み動作とそれからのデータ読み出し動作とはと
もにファーストイン・ファーストアウト(FIFO)で
制御されるので、上記のストア命令とロード命令以外の
命令もキャッシュメモリにアクセスできる。
【0175】すなわち、図61のロード命令に伴う動作
は、サイクルT5で終了するため、サイクルT4で後続
命令が発行されたとき、次のサイクルT5で直ちにタグ
アクセス及びキャッシュアクセスを行うことができる。
従って、第4の実施例のように、ムーブインバッファの
データと対応する読み出しアドレスが、キャッシュとキ
ャッシュタグにそれぞれ格納されるまで、後続命令のア
クセスを待たせる必要がない。
【0176】本実施例では、ムーブインバッファとキャ
ッシュライトバッファを兼用したので、ムーブインバッ
ファとキャッシュライトバッファとに対するムーブイン
別々の制御が必要なくなり、かつバッファとキャッシュ
ライトバッファ間の制御も必要なくなる。
【0177】さらに、本実施例において、第1、第2の
実施例で述べたロードバッファとキャッシュライトバッ
ファとを兼用してもよい。尚、キャッシュ制御部は、後
続するロード命令又はストア命令と共にキャッシュ記憶
装置に与えられるタグの値が、キャッシュライトバッフ
ァ325に格納されているデータに対応して、キャッシ
ュ制御回路326が保持している読み出しアドレスに一
致する場合は、キャッシュライトバッファ325からキ
ャッシュ302への書き込みを優先して行うものとす
る。この場合、後続命令の対象データがキャッシュライ
トバッファ325内のそのデータと一致するため、後続
命令の実行前に、キャッシュ302に格納されていなけ
ればならないからである。このときその読み出しアドレ
スは、キャッシュ制御部326からキャッシュタグ30
1に格納される。
【0178】図62は、本発明の第5の実施例の原理ブ
ロック図である。
【0179】以下に述べるこの実施例は、いずれも、中
央処理装置と下位階層の記憶装置間に設けられたキャッ
シュ記憶装置を前提とする。同図において、キャッシュ
メモリ1001は、上記下位階層の記憶装置の内容の一
部のコピーを格納する。該キャッシュメモリ1001
は、例えば、ダイレクトマッピング方式、セットアソシ
エイティブ方式等の構成をとる。
【0180】ストアデータ格納手段1002は、上記中
央処理装置と該キャッシュメモリ1001間に設けら
れ、上記中央処理装置がストア命令実行時に上記キャッ
シュメモリ1001へのアクセスに成功したとき、該ス
トア命令のストアデータが格納される。
【0181】マージ手段1003は、前記中央処理装置
により、該ストアデータ格納手段1002に格納されて
いるストアデータをロードする命令が実行されたとき、
前記キャッシュメモリ1001から該ロード命令により
アクセスされたラインデータを読み出し、次にこのライ
ンデータと前記ストアデータ格納手段1002に格納さ
れているストアデータとをマージして該ラインデータ内
の当該部分が上記ストアデータに置き換えられた新たな
ラインデータを作成し、この新ラインデータを前記中央
処理装置に出力する。
【0182】したがって、中央処理装置により、主記憶
装置の同一アドレスにアクセスするストア命令とロード
命令とが連続して実行され、該ストア命令がヒットした
とき、ストアデータ格納手段1002に格納されている
該ストア命令のストアデータをキャッシュメモリ100
1に書き込まずとも、キャッシュメモリ1001から更
新すべきラインデータを読み出すだけで該ロード命令に
より要求されるデータを中央処理装置に出力できる。こ
のため、上記ロード命令の実行時間を短縮できる。
【0183】また、本発明の第5の実施例では、上記各
手段1001,1002、1003に加え、前記マージ
手段1003に前記ストアデータ格納手段1002に格
納されていた前記マージ処理用のストアデータが転送さ
れたとき、前記ストアデータ格納手段1002内の上記
ストアデータを無効化する制御手段1004を有する。
【0184】また、本発明の第5の実施例の態様では、
マージ手段1003が上述のようにしてマージ処理を行
う際に、マージ手段1003に前記ストアデータ格納手
段1002に格納されていた前記マージ処理用のストア
データが転送されたとき、前記ストアデータ格納手段1
002内の上記ストアデータを無効化する。
【0185】したがって、上記ストア命令の後に、中央
処理装置により別のストア命令が実行されたとき、スト
アデータ格納手段1002に格納されているストアデー
タをキャッシュメモリ1001に書き込む必要がなくな
る。このため、キャッシュメモリ1001内のラインデ
ータの書き換え頻度を減少できる。
【0186】また、本発明の第5の実施例では、上記キ
ャッシュメモリ1001、及び手段1002並びに10
03の他に、下記の手段1006及び1007を有す
る。ムーブインデータ格納手段1006は、上記下位階
層の記憶装置と上記キャッシュメモリ1001間に設け
られ、上記中央処理装置がロード命令実行時に上記キャ
ッシュメモリ1001へのアクセスに失敗したとき、前
記下位階層の記憶装置から転送されてくるムーブインデ
ータが格納される。尚、このムーブインデータは、上記
ロード命令実行時にキャッシュミスが発生したときに、
ムーブイン要求によって下位階層の記憶装置から送られ
てくる上記ロード命令によってロードされるべきデータ
が含まれたラインデータである。
【0187】また、データ書き込み手段1007は、マ
ージ手段1003によりマージ処理が行われている最中
に、前記ムーブインデータ格納手段1006にムーブイ
ンデータが転送・格納されたとき、該ムーブインデータ
を前記マージ手段1003が上記マージ処理のためのキ
ャッシュメモリ1001へのアクセス終了後に上記キャ
ッシュメモリ1001に格納する。
【0188】また、さらに、本発明の第5の実施例ので
は、上記の作用に加え、ムーブインデータ格納手段10
06に、上記中央処理装置がロード命令実行時に上記キ
ャッシュメモリ1001へのアクセスに失敗したとき、
前記下位階層の記憶装置から転送されてくるムーブイン
データが格納される。そして、前記マージ手段1003
によりマージ処理が行われている最中に、前記ムーブイ
ンデータ格納手段1006にムーブインデータが転送・
格納されたとき、データ書き込み手段1007は該ムー
ブインデータを前記マージ手段1003が上記マージ処
理のためのキャッシュメモリ1001へのアクセスを終
了した後に上記キャッシュメモリ1001に格納する。
【0189】したがって、同一のIndex を有するが異な
るラインデータに属するデータにアクセスするロード命
令とストア命令が連続して実行され、続いて該ストア命
令と同一の主記憶装置のアドレスにアクセスするロード
命令が実行されるとき、上記先行のロード命令がキャッ
シュメモリ1001にキャッシュミスし、かつ上記スト
ア命令が上記キャッシュメモリ1001にキャッシュヒ
ットした場合、以下のような効果が得られる。
【0190】すなわち、この場合、上述したように、ス
トアデータ格納手段1002に格納されているキャッシ
ュヒットしたストアデータは、キャッシュメモリ100
1に書き込まれることなく、上記マージ処理終了後、直
ちに無効とされる。そして、上記マージ処理により得ら
れたラインデータはキャッシュメモリ1001には書き
込まず、上記キャッシュミスにより下位階層の記憶装置
から転送されてくるムーブインデータをキャッシュメモ
リ1001に書き込む。これにより、次のストア命令が
実行されてもそのムーブインデータは直ちに書き換えら
れることはない。このことにより、上記ムーブインデー
タをキャッシュメモリ1001に長く存続させることが
できる。
【0191】次に、図63は本発明の第6の実施例の態
様の原理ブロック図である。同図において、キャッシュ
メモリ1001、ストアデータ格納手段1002、及び
ムーブインデータ格納手段1006は、上述した図62
に示す同一符号の手段と同一の機能を有する。
【0192】本発明の第6の実施例は、上記キャッシュ
メモリ1001、及び上記手段1002及び手段100
6に加え、前記ストアデータ格納手段1002に格納さ
れているストアデータが書き込まれるべきラインデータ
が、前記ムーブインデータ格納手段1006にムーブイ
ンデータとして転送されてきたとき、上記ストアデータ
を該ムーブインデータの当該位置にマージして、該マー
ジ処理により得られたラインデータを前記キャッシュメ
モリ1001の当該位置に書き込むマージ手段1011
を有する。
【0193】また、さらに、本発明の第6の実施例の態
様は、上記キャッシュメモリ1001、及び上記手段1
002、1003に加え、前記マージ手段1011が、
前記マージ処理の際に前記ストアデータ格納手段100
2から上記マージ処理用のストアデータを読み出したと
き、前記ストアデータ格納手段1002内の該ストアデ
ータを無効にする制御手段1012を、さらに有する。
【0194】まず、図64は、第5及び第6の実施例の
全体構成を示す図である。同図において、前述した図5
8に示すキャッシュ記憶装置内で用いられているものと
同一のものに対しては同一の符号を付している。
【0195】セレクタ(Selector1)110は、キャッ
シュまたはデータロードバッファ306のいずれか一方
から出力されるヒットしたデータを選択出力するもので
ある。また、セレクタ(Selector2)120は、上記セ
レクタ(Selector1)110から選択出力されてくるデ
ータまたはキャッシュライトバッファ305から出力さ
れてくるデータのいずれか一方を、主記憶装置または下
位のキャッシュ記憶装置に出力する。このような構成と
なっているため、セレクタ120からは、ヒットしたキ
ャッシュ内のデータに加え、キャッシュライトバッファ
305内またはデータロードバッファ306内のデータ
がキャッシュを介することなくバイパスして出力できる
ようになっている。
【0196】これらのデータは、後述するようにマージ
処理される。この第5の実施例の制御方式は、以下のよ
うな状況のときに有効なものである。 ロード命令においてキャッシュミスが生じた。 該キャッシュミスにより、ムーブイン(Move In)を
実行した。 上記ロード命令がロードしようとするデータ(ロー
ドデータ)と同一のIndex のデータをストアするストア
命令を実行した。 上記ストア命令がキャッシュヒットした。 上記ストア命令がストアしようとするデータ(スト
アデータ)をロードするロード命令を実行した。
【0197】このような〜のシーケンスで、ロード
命令並びにストア命令を実行する場合のタイムチャート
を図65に示す。T0において、アドレスADR001
00のデータをロードするロード命令が開始される。こ
れに対し、続くT1においてキャッシュアクセス(Cash
e Access) とタグアクセス(Tag Access) を行い、次の
T2でキャッシュミスが発生した。このため、このT2
でムーブイン要求を発行する。
【0198】一方、上記ロード命令に続けて、上記T1
でストア命令が受理される。このストア命令のストアデ
ータ「AXXX」(Xは無効データを表わす。以下にお
いても同様。したがって、この場合「A」のみが有効デ
ータ)のアドレスと、上記ロード命令のロードのデータ
のアドレスADR10100は、同一のIndexを有
する。このストア命令については、上記T2でタグアク
セスが行われ、次のT3でキャッシュヒットした。これ
により、キャッシュライトバッファ305に上記ストア
命令のストアデータ「AXXX」とそのストアアドレス
ADR10100を格納する。これにより、キャッシュ
ライトバッファの格納データはData AAとなる。このDat
a AA は、上記ストアデータのアドレスも含まれる。
【0199】さらに、上記ストア命令に続いて直ちに上
記T2でロード命令が受理される。このロード命令のロ
ードデータのアドレスは、上記ストア命令のストアデー
タのアドレスと同じADR1010である。したがっ
て、このロード命令は、T3でキャッシュアクセスとタ
グアクセスが行われた後、T4でキャッシュライトバッ
ファ305及びキャッシュにヒットする。
【0200】このロード命令は、先行のストア命令によ
ってストアされたデータをロードする必要がある。した
がって、この場合、本実施例の特徴であるが、キャッシ
ュライトバッファ305に格納されているストアデータ
(=AXXX)と上記キャッシュヒットによってキャッ
シュから読み出された上記アドレスADR10100の
データ(=ZZZZ)を含むラインデータとをマージし
て、これをCPUに出力する。そして、次のT5で上記
ムーブインによってデータロードバッファ306に格納
されアドレスADR00100のデータを含むラインデ
ータBBBBをキャッシュに書き込み、これと同時にキ
ャッシュライトバッファ305内に格納されているデー
タData AA を無効とする。
【0201】このように、この例では、T1で発行した
ストア命令がキャッシュヒットしたので、キャッシュラ
イトバッファ305に該ストア命令のストアデータ(=
AXXX)が格納される。しかし、後続のロード命令の
ロードデータが上記ストア命令のストアデータとなって
いるために、上記ムーブイン要求によってフェッチされ
たラインデータBBBBをキャッシュに書き込む前に、
T4でキャッシュライトバッファ305内のデータとキ
ャッシュ内の該当ラインのデータをマージして、該マー
ジにより得られたデータを中央処理装置に出力する。こ
れにより、キャッシュヒットによりキャッシュライトバ
ッファ305に一旦書き込んだデータをキャッシュに書
き込むことなく上記マージ処理が可能になる。このた
め、上記マージ処理を高速化できる。キャッシュライト
バッファ305内のデータを無効にできる。したがっ
て、後続のストア命令がキャッシュヒットした場合に
は、直ちにそのストアデータをキャッシュライトバッフ
ァに書き込むことができる。
【0202】上述した例では、ストア命令がキャッシュ
ヒットする毎に、キャッシュヒットした先行のストア命
令のストアデータをキャッシュライトバッファ305か
らキャッシュに書き込む必要がある。このため、ストア
命令においてキャッシュヒットが連続すると、キャッシ
ュ内のデータの書き換えが頻繁に生じ、パイプライン処
理に乱れを生じさせデータ処理装置の全体的な性能を低
下させる場合もありえる。この実施例では、このような
問題が改善される。
【0203】また、さらに、この実施例では、キャッシ
ュミスした先行のロード命令のロードデータとその直後
に発行されたストア命令のストアデータが、共に、同一
のIndex を有するラインデータとなっているが、上記先
行ロード命令のムーブインデータBBBBのみをキャッ
シュに書き込む。そして、キャッシュライトバッファ3
05に格納されている上記ストアデータを直ちに無効と
する。これにより、同一Index のデータに対するロード
命令とストア命令が連続し、かつ該ロード命令がキャッ
シュミスし、該ストア命令がキャッシュヒットした場合
であっても、上記ロード命令のキャッシュミスによりキ
ャッシュに格納されたムーブインデータBBBのキャッ
シュ内での存続期間を従来よりも長くすることができ
る。
【0204】さらに、キャッシュライトバッファ305
に格納したキャッシュヒットしたストア命令のストアデ
ータを先行ロード命令のロードデータとマージして、主
記憶装置または下位のキャッシュ記憶装置に出力した
後、キャッシュライトバッファ305に格納されている
上記ストアデータを直ちに無効とするので、同一Index
のデータに対するロード命令とストア命令が連続し、か
つ該ロード命令がキャッシュミスし、該ストア命令がキ
ャッシュヒットした場合であっても、上記ロード命令の
キャッシュミスによりキャッシュに格納されたデータの
保有期間を従来よりも長くすることができる。
【0205】次に、上述したようなキャッシュライトバ
ッファ305のデータとキャッシュ内の該当ラインのデ
ータとをマージする回路の一例を図66に示す。同図に
おいて、コンパレータ(CMP)131は、後続のロー
ド命令がキャッシュライトバッファ305にヒットした
か否かを判定する回路であり、該ロード命令のロードデ
ータのアドレスとキャッシュライトバッファ305に格
納されているストアデータのアドレスが入力される。
【0206】また、コンパレータ(CMP)133は、
上記後続のロード命令がキャッシュにヒットしたか否か
を判定する回路であり、該ロード命令のロードデータの
アドレスのタグと該アドレスのIndex をキーとしてキャ
ッシュから読み出されたタグとを比較する。
【0207】アンド回路135は、上記2つのコンパレ
ータ(CMP)131,133から出力される比較結果
を入力し、両比較結果が共に一致信号であればマージ・
イネーブル信号を出力する。
【0208】マージ回路136は、キャッシュライトバ
ッファ305からその格納データ(AXXX)を、キャ
ッシュから上記後続のロード命令によりキャッシュヒッ
トしたラインデータ(ZZZZ)とを入力し、該アンド
回路135から上記マージ・イネーブル信号が加わった
ときに該ラインデータ(ZZZZ)の内、上記ストア命
令のストアデータの格納部分のみを該ストアデータに書
き換えるマージ処理を行う。そして、このマージ処理に
より得られたラインデータをCPUに出力する。
【0209】次に、キャッシュライトバッファ305と
データロードバッファ306の有効利用を図る第6の実
施例を説明する。この実施例は、以下のような状況にお
いて有効である。 ロード命令においてキャッシュミスが生じた。 該キャッシュミスによりムーブインを実行した。 上記ロード命令によりロードされるデータが含まれ
るラインの他のオフセット位置に対するストア命令を実
行した。 該ストア命令がロードバッファヒットした。
【0210】以上のような状況が発生した際の、本実施
例の制御方式を図67のタイムチャートに示す。まず、
T0でアドレスADR00100のデータをロードする
ロード命令の実行が開始された。このロード命令に対
し、T1でタグアクセス並びにキャッシュアクセスが行
われ、T2でキャッシュミスが発生した。このため、T
2でムーブインの実行を開始する。
【0211】また、上記ロード命令に続き、T1でスト
ア命令が受理される。このストア命令は、アドレスAD
R00208にデータ「AXXX」をストアするもので
あり、このアドレスADR00208のデータと上記ロ
ード命令のロードアドレスADR00100のデータ
は、共に同一ラインのデータとなっている。このストア
命令に対しては、T2でタグアクセスが行われ、T3で
ロードバッファヒットする。すなわち、上記T2でムー
ブインの要求があったとき、ロードデータバッファ30
6には、上記ストアアドレスADR00208のデータ
を含むラインデータ「BBBB」はまだデータロードバ
ッファ306には格納されていないが、そのムーブイン
データ「BBBB」のアドレス情報は格納されているの
で、このアドレス情報によりロードバッファヒット(L
Hit)となる。このため、T3で上記ストア命令
のストアデータ「AXXX」をキャッシュライトバッフ
ァ305に格納する。
【0212】また、さらに前記T2で新たなストア命令
が受理される。この後続のストア命令は、アドレスAD
R00308にデータ「DXXX」を格納する命令であ
り、T3でタグアクセスとキャッシュアクセスが行わ
れ、T4でキャッシュヒットする。このため、上記デー
タ「DXXX」をキャッシュライトバッファ305に格
納する必要が生じる。本実施例では、上記ロードバッフ
ァヒットにより既にキャッシュライトバッファ305に
格納されているデータ「AXXX」を、従来のようにキ
ャッシュに書き込む代わりに、データロードバッファ3
06に転送する。そして、ロードデータバッファ306
内において、上記ムーブインデータ「BBBB」と上記
ストアデータ「AXXX」とをマージし、ラインデータ
「ABBB」を作成する。
【0213】すなわち、上述したように上記ロード命令
のロードアドレスADR00100とそれに続いて受理
された先行ストア命令のストアアドレスADR0020
8の各データは共に同一ライン内に有るので、上記のよ
うなマージ処理が可能である。このマージにより得られ
たラインフレームアドレスADR00100のラインデ
ータ「ABBB」は、T6でキャッシュに格納する。
【0214】このように、この実施例においては、先行
のストア命令がロードバッファヒットしたとき、後続の
ストア命令がタグアクセスステージT3においてキャッ
シュヒットしても、キャッシュライトバッファ305に
格納されている上記先行のストア命令のストアデータを
キャッシュには書き込まない。また、データロードバッ
ファ306内に転送されてきたムーブインデータ「BB
BB」も、直ちにキャッシュに書き込まない。そして、
データロードバッファ306においてこのストアデータ
を先行のロード命令の実行によりフェッチされたムーブ
インデータ「BBBB」とマージした後、このマージに
より得られたラインデータ「ABBB」すなわち、上記
ストアデータをキャッシュに書き込んでいる。したがっ
て、この実施例においても、キャッシュに格納されてい
る上記ムーブインデータ「BBBB」と同一のIndex を
有するラインデータのキャッシュ内での存続期間を、従
来よりも引き延ばすことができる。
【0215】次に、図68は、上述した第6の実施例に
おけるロードバッファ306においてムーブインデータ
とキャッシュライトバッファ305内のストアデータと
をマージする回路の一構成例を示す模式図である。
【0216】同図において、ロードバッファヒット検出
回路(LB Hit検出回路)141は、ストア命令実
行時に該ストア命令のストアアドレスを入力し、該スト
アアドレスをロードバッファ306内に格納されている
ムーブインデータのアドレス情報と比較する。そして、
該比較により上記ストア命令がロードバッファヒット
(LB Hit)したか否か検出し、ロードバッファヒ
ット時にはライト・イネーブル信号をキャッシュライト
バッファ305に出力する。
【0217】キャッシュライトバッファ305は、上記
ライト・イネーブル信号が加わると上記ストア命令のス
トアデータ(AXXX)とそのストアアドレス(ADR
00208)を格納する。また、有効フラグをアクティ
ブにする。
【0218】次に、後続のストア命令が実行されたと
き、このストア命令がキャッシュヒットしたか否かが、
キャッシュタグに対応して設けられたコンパレータ(C
MP)によって検出される。そして、該キャッシュヒッ
ト検出時には、ヒット検出信号がキャッシュライトバッ
ファ305上に出力される。
【0219】キャッシュライトバッファ305は、この
ヒット検出信号が入力されると、格納されていた先行の
ストア命令のストアデータ(AXXX)とそのストアア
ドレス(ADDR00208)をロードバッファ306
に転送する。
【0220】これは、本実施例の特徴であるが、ロード
バッファ306にはマージ回路306aが内蔵されてい
る。このマージ回路306aは、上記キャッシュライト
バッファ305から転送されてくる先行ストア命令のス
トアデータ(AXXX)と既に格納されているムーブイ
ンデータ(BBBB)とを、それらのアドレス情報を基
にマージする。そして、このマージにより得られたライ
ンデータ(ABBB)をキャッシュに書き込む。このと
き、そのラインデータ(ABBB)のタグ(フレームラ
インアドレス)もタグキャッシュの該当するIndex 位置
に書き込む。
【0221】以上説明したように、本発明の第5の実施
例によれば、同一アドレスにアクセスするストア命令と
ロード命令が連続し、かつ両命令がヒットした場合、上
記ストア命令のストアデータをキャッシュメモリに書き
込むことなく、上記ロード命令により要求されるロード
データを中央処理装置に出力できる。したがって、この
ような場合のデータ処理を高速化できると共に、既にキ
ャッシュメモリに格納されている上記ストア命令により
アクセスされるラインデータと同一のIndex を有するラ
インデータの存続期間を長くできる。
【0222】本発明の第5の実施例によれば、上記ロー
ド命令の実行のためにキャッシュライトバッファ(スト
アデータ格納手段)からデータを読み出すと直ちに該キ
ャッシュライトバッファ内のデータを無効にするため
に、後続のストア命令がキャッシュヒットした場合、直
ちにそのストア命令のストアデータを直ちにキャッシュ
ライトバッファに書き込むことができる。
【0223】本発明の第5の実施例によれば、同一のIn
dex を有するラインにアクセスするロード命令とストア
命令が連続して実行され、さらに該ストア命令の後に続
いてそのストア命令と同一のアドレスにアクセスするロ
ード命令が実行された場合、先行のロード命令がキャッ
シュミスし、次のストア命令がヒットしたとき、キャッ
シュライトバッファに格納されている該ストア命令のス
トアデータをキャッシュメモリに書き込むことなく、後
続のロード命令により要求されるデータを中央処理装置
に出力できる。したがって、この後続のロード命令によ
るデータのロード処理を高速化できる。
【0224】また、上記後続のロード命令のロードデー
タを含むラインデータのキャッシュメモリの書き込みは
行わず、上記キャッシュミスによるムーブイン要求によ
り下位の記憶装置から転送されてきた上記先行のロード
命令のロードデータを含むラインデータをキャッシュメ
モリに書き込むことにより、このラインデータのキャッ
シュメモリ内での存続期間を長くできる。
【0225】本発明の第6の実施例によれば、同一のラ
インにアクセスするロード命令とストア命令が連続して
実行されるとき、該ロード命令がキャッシュミスした場
合、該キャッシュミスに起因するムーブイン要求に応じ
て、下位階層の記憶装置からムーブインデータ格納手段
(データロードバッファ)に転送されてくるラインデー
タとストアデータ格納手段(キャッシュライトバッフ
ァ)内のストアデータとをマージして、該マージ処理に
より得られたラインデータをキャッシュメモリに書き込
む。このように、キャッシュライトバッファ内のストア
データと例えばデータロードバッファからなるムーブイ
ンデータ格納手段1006内のストアデータを共にキャ
ッシュメモリ1001に書き込まなくとも、上記マージ
処理が可能になる。したがって、同一アドレスにアクセ
スするロード命令とストア命令が連続して実行され、先
行のロード命令がキャッシュミスした場合の処理を高速
化できる。また、上記キャッシュミスしたラインのデー
タをキャッシュメモリに書き込む時間を遅らせることが
できるので、キャッシュメモリに保持されている上記ラ
インデータと同一のIndex を有するラインデータの存続
期間を長くできる。
【0226】本発明の第6の実施例によれば、上記マー
ジ処理の際、キャッシュライトバッファから上記ストア
データを読み出すと、該キャッシュライトバッファ内の
上記ストアデータを直ちに無効とするので、上記ストア
命令に続けて直ちにストア命令が実行され、この後続の
ストア命令がキャッシュヒットした場合にも、直ちにそ
のストアデータをキャッシュライトバッファに格納する
ことができ、パイプライン処理をスムーズに行うことが
できる。
【0227】
【発明の効果】以上詳細に説明したように、本実施例に
よれば命令やオペランドとしてのデータのプリフェッチ
によってキャッシュメモリにおけるヒット率を向上させ
ることができる。またロードバッファにおいてアクセス
判定、およびヒット判定を行って有効と判定されたデー
タのみをキャッシュメモリに格納することにより、無用
なプリフェッチデータをキャッシュメモリに格納するこ
とを防止することができる。更に、ソフトウエアプリフ
ェッチ命令によりプリフェッチされたデータをデータキ
ャッシュメモリに格納する処理の優先順位を低くするこ
とにより、例えばソフトウエアプリフェッチ命令以外の
ロード命令に対するデータキャッシュメモリのパイプラ
インを乱すことなく、データ供給を円滑に実施すること
ができ、データ処理装置全体としての性能向上に寄与す
るところが大きい。
【0228】また、本発明によれば、キャッシュライト
バッファとムーブインバッファとを設けたのでストア命
令に連続するロード命令を実行する場合にも、ストア命
令とロード命令とが同一ステージで競合することを避け
ることができるとともに、ストア命令とロード命令とを
切り換えてキャッシュメモリに格納することができる。
【0229】さらに、本発明はロードバッファとキャッ
シュライトバッファを共に設けることによりライトデー
タがストアデータのマージを、キャッシュメモリを使用
せずに行うことができるので、必要なデータのキャッシ
ュへの残留時間を長くしてヒット率をあげけることもで
きる。
【図面の簡単な説明】
【図1】本発明の原理ブロック図である。
【図2】本発明における中央処理装置(CPU)の全体
構成を示すブロック図である。
【図3】第1の実施例を説明するためのデータ処理装置
の構成ブロック図である。
【図4】命令キャッシュブロックの詳細構成を示すブロ
ック図である。
【図5】プライオリティコントロール部の動作の詳細を
説明する図である。
【図6】命令ロードバッファの構成を示すブロック図で
ある。
【図7】命令ロードバッファのインタフェースを示す図
である。
【図8】命令ロードバッファのステートマシンを示す図
である。
【図9】ロードバッファコントローラの概略構成を示す
ブロック図である。
【図10】図8と異なる状態遷移の例(その1)を示す
図である。
【図11】図8と異なる状態遷移の例(その2)を示す
図である。
【図12】図8と異なる状態遷移の例(その3)を示す
図である。
【図13】命令ロードバッファにおける命令フェッチの
タイムチャートを示す図(その1)である。
【図14】命令ロードバッファにおける命令フェッチの
タイムチャートを示す図(その2)である。
【図15】第2の発明におけるデータのプリフェッチが
有効なプログラムの例を示す図である。
【図16】図15におけるデータフェッチの例のタイミ
ングチャートである。
【図17】ソフトウエアプリフェッチ命令の例を示す図
(高級言語の場合)である。
【図18】ソフトウエアプリフェッチ命令の例を示す図
(アセンブリ言語の場合)である。
【図19】図17,図18におけるデータフェッチの例
を示すタイミングチャートである。
【図20】第2の実施例を説明するためのデータ処理装
置の構成を示すブロック図である。
【図21】データキャッシュブロックの詳細構成を示す
ブロック図である。
【図22】データロードバッファの構成を示すブロック
図である。
【図23】データロードバッファのインタフェースを示
す図である。
【図24】データロードバッファのステートマシンを示
す図である。
【図25】データロードバッファにおけるデータフェッ
チの例を示すタイミングチャートを示す図である。
【図26】命令ロードバッファの制御回路の例を示す図
(その1)である。
【図27】命令ロードバッファの制御回路の例を示す図
(その2)である。
【図28】命令ロードバッファの制御回路の例を示す図
(その3)である。
【図29】命令ロードバッファの制御回路の例を示す図
(その4)である。
【図30】命令ロードバッファの制御回路の例を示す図
(その5)である。
【図31】命令ロードバッファの制御回路の例を示す図
(その6)である。
【図32】命令ロードバッファの制御回路の例を示す図
(その7)である。
【図33】命令ロードバッファの制御回路の例を示す図
(その8)である。
【図34】命令ロードバッファの制御回路の例を示す図
(その9)である。
【図35】命令ロードバッファの制御回路の例を示す図
(その10)である。
【図36】命令ロードバッファの制御回路の例を示す図
(その11)である。
【図37】命令ロードバッファの制御回路の例を示す図
(その12)である。
【図38】データロードバッファの制御回路の例を示す
図(その1)である。
【図39】データロードバッファの制御回路の例を示す
図(その2)である。
【図40】データロードバッファの制御回路の例を示す
図(その3)である。
【図41】データロードバッファの制御回路の例を示す
図(その4)である。
【図42】データロードバッファの制御回路の例を示す
図(その5)である。
【図43】データロードバッファの制御回路の例を示す
図(その6)である。
【図44】データロードバッファの制御回路の例を示す
図(その7)である。
【図45】データロードバッファの制御回路の例を示す
図(その8)である。
【図46】データロードバッファの制御回路の例を示す
図(その9)である。
【図47】データロードバッファの制御回路の例を示す
図(その10)である。
【図48】データロードバッファの制御回路の例を示す
図(その11)である。
【図49】データロードバッファの制御回路の例を示す
図(その12)である。
【図50】データロードバッファの制御回路の例を示す
図(その13)である。
【図51】データロードバッファの制御回路の例を示す
図(その14)である。
【図52】第3の実施例のキャッシュ記憶装置の構成図
である。
【図53】(a)は第3の実施例におけるロード命令実
行時の動作を示すフローチャートであり、(b)は第3
の実施例におけるストア命令実行時の動作を示すフロー
チャートである。
【図54】第3の実施例の動作を示すタイミングチャー
トである。
【図55】第3の実施例におけるロード命令実行時の動
作を示すフローチャートである。
【図56】第3の実施例におけるロード命令実行時の動
作を示すタイミングチャートである。
【図57】第4の実施例のキャッシュ記憶装置を備える
データ処理装置の構成図である。
【図58】第4の実施例のキャッシュ記憶装置の構成図
である。
【図59】第4の実施例のキャッシュライトバッファの
構成図である。
【図60】第4の実施例におけるロード命令実行時の動
作を示すフローチャートである。
【図61】第4の実施例におけるロード命令実行時の動
作を示すタイミングチャートである。
【図62】第5の実施例の原理ブロック図である。
【図63】第6の実施例の原理ブロック図である。
【図64】第5、第6の実施例の全体構成を示す図であ
る。
【図65】第5の実施例の制御方式におけるロード命令
並びにストア命令を実行する場合のタイミングチャート
を示す図である。
【図66】キャッシュライトバッファのデータとキャッ
シュ内の該当ラインのデータとをマージする回路の一例
を示す図である。
【図67】第6の実施例の制御方式のタイミングチャー
トに示す図である。
【図68】第6の実施例におけるデータロードバッファ
においてムーブインデータとキャッシュライトバッファ
内のストアデータとをマージする回路の一構成例を示す
模式図である。
【図69】中央処理装置(CPU)の概略構成を示すブ
ロック図である。
【図70】記憶装置の階層を示す図である。
【図71】キャッシュメモリの構成を示すブロック図で
ある。
【図72】(a)はロード命令実行時の動作を示すフロ
ーチャートであり、(b)はストア命令実行時の動作を
示すフローチャートである。
【図73】ストア命令とそれに後続するロード命令を実
行した場合のキャッシュの動作を示すタイミングチャー
トである。
【符号の説明】
20 命令キャッシュメモリ 21 命令処理部 22 キャッシュメモリに次ぐ下位の記憶装置 23 第1の転送命令データ格納手段(LBP) 24 第2の転送命令データ格納手段(LBS) 26 データキャッシュメモリ 27 命令/演算処理部 28 転送データ格納手段 31 命令キャッシュブロック 32 データキャッシュブロック 34 プログラムカウンタ 36 命令バッファ 37 命令デコーダ
フロントページの続き (72)発明者 吉野 和秀 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (43)

    【特許請求の範囲】
  1. 【請求項1】 命令を格納するための命令キャッシュメ
    モリ(20)と、該命令キャッシュメモリ(20)に必
    要とする命令が格納されていない時、該必要とする命令
    の転送を該命令キャッシュメモリにより下位にある記憶
    装置(22)に要求する命令処理部(21)とを有する
    データ処理装置において、 該命令キャッシュメモリにより下位の記憶装置(22)
    から転送され、前記データ処理装置の命令処理部(2
    1)が必要として転送を要求した命令を含む1ライン分
    の命令データが格納される第1の転送命令データ格納手
    段(23)と、 該1ラインに続いて転送された1ライン以上の先取り命
    令データが格納される1段以上の第2の転送命令データ
    格納手段(24)とを備え、先取りされた命令の実行を
    高速化することを特徴とするデータ処理装置。
  2. 【請求項2】 前記データ処理装置において、 前記第1の転送命令データ格納手段(23)に格納され
    た命令を前記命令キャッシュメモリ(20)に格納した
    後に、前記第2の転送命令データ格納手段(24)に格
    納された命令を命令キャッシュメモリ(20)に格納す
    るに際して、 前記命令処理部(21)から転送を要求された命令に続
    いて格納された命令へのアクセスの適合性の判定であっ
    て、命令のアドレスの一部を比較するアクセス判定に該
    続いて格納された命令が適合した時に、該第2の転送命
    令データ格納手段(24)に格納された命令を該命令キ
    ャッシュメモリ(20)に格納することを特徴とする請
    求項1記載のデータ処理装置。
  3. 【請求項3】 前記データ処理装置において、 前記第1の転送命令データ格納手段(23)に格納され
    た命令を前記命令キャッシュメモリ(20)に格納した
    後に、前記第2の転送命令データ格納手段(24)に格
    納された命令を命令キャッシュメモリ(20)に格納す
    るに際して、 該第2の転送命令データ格納手段(24)に格納されて
    いる命令へのアクセスの適合性の判定であって、命令の
    アドレスの一部を比較するアクセス判定に該格納されて
    いる命令が適合した時に、該第2の転送命令データ格納
    手段(24)に格納された命令を該命令キャッシュメモ
    リ(20)に格納することを特徴とする請求項1記載の
    データ処理装置。
  4. 【請求項4】 前記データ処理装置において、 前記第1の転送命令データ格納手段(23)に格納され
    た命令を前記命令キャッシュメモリ(20)に格納した
    後に、前記第2の転送命令データ格納手段(24)に格
    納された命令を命令キャッシュメモリ(20)に格納す
    るに際して、 前記命令処理部(21)から転送を要求された命令に続
    いて格納された命令へのアクセスの適合性の判定であっ
    て、命令のアドレスの全ビットを比較するヒット判定に
    該続いて格納された命令が適合した時に、該第2の転送
    命令データ格納手段(24)に格納された命令を該命令
    キャッシュメモリ(20)に格納することを特徴とする
    請求項1記載のデータ処理装置。
  5. 【請求項5】 前記データ処理装置において、 前記第1の転送命令データ格納手段(23)に格納され
    た命令を前記命令キャッシュメモリ(20)に格納した
    後に、前記第2の転送命令データ格納手段(24)に格
    納された命令を該命令キャッシュメモリ(20)に格納
    するに際して、 該第2の転送命令データ格納手段(24)に格納されて
    いる命令へのアクセスの適合性の判定であって、命令の
    アドレスの全ビットを比較するヒット判定に該格納され
    ている命令が適合した時に、該第2の転送命令データ格
    納手段(24)に格納された命令を該命令キャッシュメ
    モリ(20)に格納することを特徴とする請求項1記載
    のデータ処理装置。
  6. 【請求項6】 前記データ処理装置において、 前記第1の転送命令データ格納手段(23)、および第
    2の転送命令データ格納手段(24)に対する、前記キ
    ャッシュメモリにより下位にある記憶装置(22)から
    の命令データ転送に際して、 該記憶装置に対して前記命令処理部(21)が転送を要
    求する命令のみのアドレスを通知し、該記憶装置との間
    の通信回数を削減させることを特徴とする請求項1記載
    のデータ処理装置。
  7. 【請求項7】 前記データ処理装置において、 前記第1の転送命令データ格納手段(23)がロードバ
    ッファプライマリ(LBP)によって、前記第2の転送
    命令データ格納手段(24)がロードバッファセカンダ
    リ(LBS)によって構成され、 該ロードバッファプライマリとロードバッファセカンダ
    リがそれぞれ対応する2つのロードバッファによって構
    成され、 該2つのロードバッファによって構成される命令ロード
    バッファのバッファ部に対して、該バッファ部を制御す
    るロードバッファコントローラを備え、 該2つのロードバッファのそれぞれが、前記各1ライン
    分の命令データのアドレスを格納するアドレス格納領域
    と、 該1ライン分の命令データを格納するデータ格納領域
    と、 該ロードバッファが前記セカンダリである時アクティブ
    となるPSフラグ、 とを備えていることを特徴とする請求項1記載のデータ
    処理装置。
  8. 【請求項8】 前記ロードバッファのデータ格納領域
    は、2つに分割され、それぞれは前記命令データの上位
    あるいは下位の1/2ライン分づつのデータを格納し、
    前記ロードバッファは、さらに格納されているデータが
    有効であることを示すVフラグと、前記上位の1/2ラ
    イン分のデータが有効であるときアクティブとなるMフ
    ラグと、前記下位の1/2ライン分のデータが有効であ
    るときアクティブとなるLフラグと、前記上位の1/2
    ライン分のデータが前記命令キャッシュメモリ(20)
    に格納されたときアクティブになるWMフラグと、前記
    下位の1/2ライン分のデータが該命令キャッシュメモ
    リ(20)に格納されたときにアクティブになるWLフ
    ラグを格納するフラグ格納領域を備えてなり、 前記命令ロードバッファ(58)が、アイドル、ファー
    ストデータイン、およびデータインの3つの状態を持
    ち、いかなる動作をも行わない時該アイドルの状態を維
    持し、 前記命令キャッシュメモリにより下位の記憶装置(2
    2)から送られる、次のサイクルでの転送データの存在
    を示すデータイネーブルインプット(DEI)信号の入
    力によって、該アイドル状態から前記ファーストデータ
    イン状態に遷移し、 最初の転送データの転送を受けて前記ロードバッファプ
    ライマリィのVフラグをアクティブとしてデータイン状
    態に遷移し、前記2つのロードバッファのいずれかのV
    フラグがアクティブである間該データイン状態を維持
    し、 該2つのロードバッファのVフラグが共に0となった時
    前記アイドル状態に遷移することを特徴とする請求項7
    記載のデータ処理装置。
  9. 【請求項9】 前記データイン状態において、 前記ロードバッファプライマリィのVフラグがアクティ
    ブとなることにより、前記ファーストデータイン状態か
    らデータイン状態中のロードバッファプライマリィバリ
    ッド状態に遷移し、前記最初の転送データに続くプリフ
    ェッチデータの転送を受けつつ、該ロードバッファプラ
    イマリィに格納されている有効データを、前記WM、W
    Lフラグをアクティブにしながら前記命令キャッシュメ
    モリ(20)に格納することを特徴とする請求項8記載
    のデータ処理装置。
  10. 【請求項10】 前記ロードバッファプライマリィバリ
    ッド状態において、 前記最初の転送データを前記命令キャッシュメモリ(2
    0)および命令バッファに出力するにあたり、次の命令
    フェッチ要求を受理可能となったことを示すインストラ
    クションフェッチネゲート信号をアクティブとして前記
    プライオリティコントロール部(50)に送り、ロード
    バッファプライマリィバリッドウィズフェッチ状態に遷
    移し、新たなプリフェッチデータの転送を受けつつ、前
    記ロードバッファプライマリィに格納されている有効デ
    ータの命令キャッシュメモリ(20)への格納を続ける
    ことを特徴とする請求項9記載のデータ処理装置。
  11. 【請求項11】 前記ロードバッファプライマリィバリ
    ッドウィズフェッチ状態において、 前記WMフラグおよびWLフラグが1となり、前記ロー
    ドバッファセカンダリィ内に格納されているデータに対
    するヒット判定においてヒットしたと判定された時、ロ
    ードバッファセカンダリィバリッド状態に遷移し、前記
    ロードバッファセカンダリィ内のPSフラグを0として
    該ロードバッファセカンダリィをロードバッファプライ
    マリィに変更し、ロードバッファプライマリィバリッド
    ウィズフェッチ状態に遷移することを特徴とする請求項
    10記載のデータ処理装置。
  12. 【請求項12】 前記ロードバッファプライマリィバリ
    ッドウィズフェッチ状態において、 前記ロードバッファプライマリィおよびロードバッファ
    セカンダリィ内のバリッドフラグが共に0となった時、
    前記データイン状態から前記アイドル状態に遷移するこ
    とを特徴とする請求項10または11記載のデータ処理
    装置。
  13. 【請求項13】 データを格納するためのデータキャッ
    シュメモリ(26)と、 該データキャッシュメモリ(26)に必要なデータが格
    納されていない時、該必要なデータの転送を該データキ
    ャッシュメモリにより下位にある記憶装置に要求する命
    令/演算処理部(27)とを有するデータ処理装置にお
    いて、 該データキャッシュメモリにより下位の記憶装置(2
    2)から転送され、前記データ処理装置の命令/演算処
    理部(27)が必要として転送を要求したデータを含む
    1ライン分のデータと、該1ラインに続く先取りされた
    1ライン以上のデータの各ラインが格納される複数段の
    バッファから成る転送データ格納手段(28)を備え、
    データ供給を高速化することを特徴とするデータ処理装
    置。
  14. 【請求項14】 前記データ処理装置において、 前記転送データ格納手段(28)に格納され、前記命令
    /演算処理部(27)から転送を要求されたデータに続
    くデータへのアクセスの適合性の判定であって、データ
    のアドレスの一部を比較するアクセス判定に該続くデー
    タが適合した時に、前記先取りされたラインのデータを
    前記データキャッシュメモリ(26)に格納することを
    特徴とする請求項13記載のデータ処理装置。
  15. 【請求項15】 前記データ処理装置において、 前記転送データ格納手段(28)に格納されたデータの
    うちで、前記命令/演算処理部(27)から転送を要求
    されたデータを含む1ライン分のデータを前記データキ
    ャッシュメモリ(26)に格納した後に、前記先取りさ
    れたラインのデータを該データキャッシュメモリ(2
    6)に格納するに際して、 該先取りされたラインのデータへのアクセスの適合性の
    判定であって、データのアドレスの一部を比較するアク
    セス判定に該先取りされたラインのデータが適合た時
    に、該先取りされたラインのデータを該データキャッシ
    ュメモリ(26)に格納することを特徴とする請求項1
    3記載のデータ処理装置。
  16. 【請求項16】 前記データ処理装置において、 前記転送データ格納手段(28)に格納されたデータの
    うちで、前記命令/演算処理部(27)から転送を要求
    されたデータに続きプリフェッチデータへのアクセスの
    適合性の判定であって、データのアドレスの全ビットを
    比較するヒット判定に該プリフェッチデータが適合した
    時に、該プリフェッチデータを前記データキャッシュメ
    モリ(26)に格納すると共に、前記命令/演算処理部
    (27)の内部のデータ要求元に直接転送することによ
    ってデータ供給を高速化することを特徴とする請求項1
    3記載のデータ処理装置。
  17. 【請求項17】 前記データ処理装置において、 前記転送データ格納手段(28)への前記キャッシュメ
    モリにより下位にある記憶装置(22)からのデータ転
    送に際して、該記憶装置に対して前記命令/演算処理部
    (27)が転送を要求したデータのみをアドレスを通知
    し、該記憶装置との間の通信回数を削減させることを特
    徴とする請求項13記載のデータ処理装置。
  18. 【請求項18】 前記データ処理装置において、 プログラムにおいてデータのプリフェッチを指定するソ
    フトウエアプリフェッチ命令に応じて、前記転送データ
    格納手段(28)に転送されたプリフェッチデータの前
    記データキャッシュメモリ(26)への格納に際して、 該データキャッシュメモリ(26)に対するデータフェ
    ッチ要求を該プリフェッチデータの格納よりも先に処理
    し、該データキャッシュメモリ(26)のパイプライン
    を乱すことなくデータ供給を円滑化することを特徴とす
    る請求項13記載のデータ処理装置。
  19. 【請求項19】 前記データ処理装置において、 プログラムにおいてデータのプリフェッチを指定するソ
    フトウエアプリフェッチ命令に応じて、前記転送データ
    格納手段(28)に転送されたプリフェッチデータの前
    記データキャッシュメモリ(26)への格納に際して、 該データキャッシュメモリ(26)に対してデータフェ
    ッチ要求ができている期間中は該転送データ格納手段
    (28)に格納されている該プリフェッチデータを保持
    し、該データフェッチ要求がきていない期間中に該プリ
    フェッチデータを前記データキャッシュメモリ(26)
    に格納することにより、該データキャッシュメモリ(2
    6)にすでに格納されている有効データのメモリ滞在時
    間を延ばすことを特徴とする請求項13記載のデータ処
    理装置。
  20. 【請求項20】 前記データ処理装置において、 プログラムにおいてデータのプリフェッチを指定するソ
    フトウエアプリフェッチ命令に応じて、前記転送データ
    格納手段(28)に転送されたプリフェッチデータの前
    記データキャッシュメモリ(26)への格納に際して、 該データキャッシュメモリ(26)に対するデータフェ
    ッチ要求を該プリフェッチデータの格納よりも先に処理
    し、該データフェッチ要求に対してキャッシュミスが発
    生した時該転送データ格納手段(28)に格納されてい
    るプリフェッチデータと該データフェッチ要求との間
    で、データのアドレスの全ビットを比較するヒット判定
    を行い、ヒットした時該プリフェッチデータを該データ
    キャッシュメモリ(26)に格納すると共に、前記命令
    /演算処理部(27)内のデータ要求元に直接転送する
    ことを特徴とする請求項13記載のデータ処理装置。
  21. 【請求項21】 前記データ処理装置において、 プログラムにおいてデータのプリフェッチを指定するソ
    フトウエアプリフェッチ命令に応じて、前記転送データ
    格納手段(28)に転送されたプリフェッチデータの前
    記データキャッシュメモリ(26)への格納に際して、 該データキャッシュメモリ(26)に対するデータフェ
    ッチ要求を該プリフェッチデータの格納よりも先に処理
    し、該データフェッチ要求に対してキャッシュミスが発
    生した時該転送データ格納手段(28)に格納されてい
    るプリフェッチデータと前記データフェッチ要求との間
    で、データのアドレスの全ビットを比較するヒット判定
    を行い、ミスした時には該プリフェッチデータを該デー
    タキャッシュメモリ(26)に格納することを特徴とす
    る請求項13記載のデータ処理装置。
  22. 【請求項22】 前記転送データ格納手段(28)が、
    前記命令/演算処理部(27)から転送を要求されたデ
    ータを含むラインと、少なくとも該ラインの次のライン
    との2ラインをそれぞれ格納する少なくとも2段のバッ
    ファから構成され、 該2段のバッファがそれぞれ対応する2つのロードバッ
    ファによって構成され、 該2つのロードバッファによって構成されるデータロー
    ドバッファのバッファ部に対して、該バッファ部を制御
    するロードバッファコントローラを備え、 該2つのロードバッファのそれぞれが、前記各1ライン
    分のデータのアドレスを格納するアドレス格納領域と、 該1ライン分のデータの2つのデータ格納領域と、 該ロードバッファがプログラムにおいてデータのプリフ
    ェッチを指定するソフトウエアプリフェッチ命令に応じ
    たデータを格納している時アクティブとなるPFフラグ
    を格納するフラグ格納領域とを備えていることを特徴と
    する請求項13記載のデータ処理装置。
  23. 【請求項23】 前記ロードバッファのデータ格納領域
    は、2つに分割され、それぞれは前記命令データの上位
    あるいは下位の1/2ライン分づつのデータを格納し、
    前記ロードバッファは、さらに格納されているデータが
    有効であることを示すVフラグと、前記上位の1/2ラ
    イン分のデータが有効であるときアクティブとなるMフ
    ラグと、前記下位の1/2ライン分のデータが有効であ
    るときアクティブとなるLフラグと、前記上位の1/2
    ライン分のデータが前記命令キャッシュメモリ(20)
    に格納されたときアクティブになるWMフラグと、前記
    下位の1/2ライン分のデータが該命令キャッシュメモ
    リ(20)に格納されたときにアクティブになるWLフ
    ラグを格納するフラグ格納領域を備えてなり、 前記データロードバッファ(61)が、アイドル、ファ
    ーストデータイン、およびデータインの3つの状態を持
    ち、いかなる動作をも行わない時該アイドルの状態を維
    持し、 前記キャッシュメモリにより下位の記憶装置(22)か
    ら送られる、次のサイクルでの転送データの存在を示す
    データイネーブルインプット(DEI)信号の入力によ
    って、該アイドル状態から前記ファーストデータイン状
    態に遷移し、 最初の転送データの転送を受けて前記ロードバッファの
    Vフラグをアクティブとしてデータイン状態に遷移し、
    前記2つのロードバッファのいずれかのVフラグがアク
    ティブである間該データイン状態を維持し、 該2つのロードバッファのVフラグが共に0となった時
    前記アイドル状態に遷移することを特徴とする請求項2
    2記載のデータ処理装置。
  24. 【請求項24】 前記データイン状態において、 前記ロードバッファのVフラグがアクティブとなり、前
    記ソフトウエアプリフェッチであることを示すプリフェ
    ッチ信号が0である時、前記ファーストデータイン状態
    からデータイン状態中のロードバッファウェイト状態に
    遷移し、前記最初の転送データに続くプリフェッチデー
    タの転送を受けつつ、該ロードバッファに格納されてい
    る有効データを、前記WM、WLフラグをアクティブに
    しながら前記データキャッシュメモリ(26)に格納す
    ることを特徴とする請求項23記載のデータ処理装置。
  25. 【請求項25】 前記ロードバッファウェイト状態にお
    いて、 前記最初の転送データに続くプリフェッチデータに対す
    る、該プリフェッチデータのアドレスの下位ビットのみ
    によるアクセス判定の結果、ヒットしたことを示すロー
    ドバッファアクセス信号がアクティブとなった時ハイラ
    イト状態に遷移し、新たなプリフェッチデータの転送を
    受けつつ、前記ロードバッファに格納されている有効デ
    ータのデータキャッシュメモリ(26)への格納を続け
    ることを特徴とする請求項24記載のデータ処理装置。
  26. 【請求項26】 前記ハイライト状態において、 前記ロードバッファのバリッドフラグが0となることに
    より前記データイン状態から前記アイドル状態に遷移す
    ることを特徴とする請求項25記載のデータ処理装置。
  27. 【請求項27】 前記データイン状態において、 前記ロードバッファのVフラグがアクティブとなり、前
    記ソフトウエアプリフェッチ命令に対応する処理である
    ことを示すロードバッファプリフェッチ信号がアクティ
    ブである時、前記ファーストデータイン状態からデータ
    イン状態中のロードバッファウェイトウィズソフトウエ
    アプリフェッチ状態に遷移し、前記最初の転送データに
    続くプリフェッチデータの転送を受け、前記データキャ
    ッシュメモリ(26)がいかなる動作をも行っていない
    時に該ロードバッファに格納されている有効データを前
    記WM、WLフラグをアクティブにしながら該データキ
    ャッシュメモリ(26)に格納することを特徴とする請
    求項23記載のデータ処理装置。
  28. 【請求項28】 前記ロードバッファウェイトウィズソ
    フトウエアプリフェッチ状態において、 前記最初の転送データに対するデータフェッチ要求の後
    で受け付けられたデータフェッチ要求に対して前記ロー
    ドバッファに格納されているプリフェッチデータとのヒ
    ットが判定された時、または該データフェッチ要求に対
    するキャッシュミスが発生した時ハイライト状態に遷移
    し、新たなプリフェッチデータの転送を受けつつ、該ロ
    ードバッファに格納されている有効データの前記データ
    キャッシュメモリ(26)への格納を行うことを特徴と
    する請求項27記載のデータ処理装置。
  29. 【請求項29】 前記ハイライト状態において、 前記ロードバッファのバリッドフラグが0となることに
    より前記データイン状態から前記アイドル状態に遷移す
    ることを特徴とする請求項28記載のデータ処理装置。
  30. 【請求項30】 命令を格納するための命令キャッシュ
    メモリ(20)と、該命令キャッシュメモリ(20)に
    必要とする命令が格納されていない時、該必要とする命
    令の転送を該命令キャッシュメモリにより下位にある記
    憶装置(22)に要求する命令処理部(21)とを有す
    るデータ処理装置において、 該命令キャッシュメモリにより下位にある記憶装置(2
    2)から転送され、前記データ処理装置の命令処理部
    (21)が必要として転送を要求した命令を含む1ライ
    ン分の命令データが格納される第1の転送命令データ格
    納手段(23)と、 該1ラインに続いて格納された1ライン以上の先取り命
    令データが格納される1段以上の第2の転送命令データ
    格納手段(24)とを備え、 該命令キャッシュメモリ(20)により下位にある記憶
    装置(22)に前記必要とする命令の転送が要求されて
    から、該必要とする命令が前記第1の転送命令データ格
    納手段(23)によって前記命令キャッシュメモリ(2
    0)に格納されるまでの期間において、該命令キャッシ
    ュメモリ(20)に対して、該必要とする命令の転送以
    外の処理に伴うアクセスを可能とすることを特徴とする
    データ処理装置。
  31. 【請求項31】 データを格納するためのデータキャッ
    シュメモリ(26)と、 該データキャッシュメモリ(26)に必要なデータが格
    納されていない時、該必要なデータの転送を該データキ
    ャッシュメモリにより下位にある記憶装置(22)に要
    求する命令/演算処理部(27)とを有するデータ処理
    装置において、 該データキャッシュメモリにより下位にある記憶装置
    (22)から転送され、前記データ処理装置の命令/演
    算処理部(27)が必要として転送を要求したデータを
    含む1ライン分のデータと、該1ラインに続く先取りさ
    れた1ライン以上のデータの各ラインが格納される複数
    段のバッファから成る転送データ格納手段(28)を備
    え、 該データキャッシュメモリ(26)により下位にある記
    憶装置(22)に前記必要なデータの転送が要求されて
    から、該必要なデータが前記転送データ格納手段(2
    8)によって前記データキャッシュメモリ(26)に格
    納されるまでの期間において、該データキャッシュメモ
    リ(26)に対して、該必要なデータの転送以外の処理
    に伴うアクセスを可能とすることを特徴とするデータ処
    理装置。
  32. 【請求項32】 中央処理装置と主記憶装置(309)
    間に設けられたキャッシュ記憶装置を備えるデータ処理
    装置であって、 前記キャッシュ記憶装置は、 データを保持するキャッシュ(302)と、 前記中央処理装置(309)とキャッシュ(302)間
    に書き込みアドレス及び書き込みデータを保持するキャ
    ッシュライトバッファ(305)と、 ムーブインバッファ(306)と、 前記キャッシュライトバッファとムーブインバッファの
    記憶手段(308)と、 当該キャッシュ記憶装置の動作制御を行うキャッシュ制
    御部(310,326)とを有し、 前記キャッシュ制御部(310,326)は、前記中央
    処理装置(309)のストア命令実行時に、書き込みデ
    ータを直接前記キャッシュ(302)に書き込まず、先
    ず前記キャッシュライトバッファ(305)に書き込み
    を行い、該データを当該キャッシュ記憶装置の許す任意
    の時刻に前記キャッシュ(302)に書き込みを行うよ
    う制御を行い、ロード命令実行時にキャッシュミスが発
    生した時、前記主記憶装置または異階層のキャッシュ記
    憶装置からデータを読み出し、読み出された該データを
    前記ムーブインバッファ(306)に格納することを特
    徴とするデータ処理装置。
  33. 【請求項33】 中央処理装置と主記憶装置(309)
    間に設けられたキャッシュ記憶装置を備えるデータ処理
    装置であって、 前記キャッシュ記憶装置は、 データを保持するキャッシュ(302)と、 前記中央処理装置(309)とキャッシュ(302)間
    に書き込みアドレス及び書き込みデータを保持するキャ
    ッシュライトバッファ(305)と、 当該キャッシュ記憶装置の動作制御を行うキャッシュ制
    御部(310,326)とを有し、 前記キャッシュ制御部(310,326)は、前記中央
    処理装置(309)のストア命令実行時に、書き込みデ
    ータを直接前記キャッシュ(302)に書き込まず、先
    ず前記キャッシュライトバッファ(305)に書き込み
    を行い、該データを当該キャッシュ記憶装置の許す任意
    の時刻に前記キャッシュ(302)に書き込みを行うよ
    う制御を行い、ロード命令実行時にキャッシュミスが発
    生した時、前記主記憶装置または異階層のキャッシュ記
    憶装置からデータを読み出し、読み出された該データを
    前記キャッシュライトバッファ(305)に格納するこ
    とを特徴とするデータ処理装置。
  34. 【請求項34】 前記キャッシュ制御部(310)は、
    ストア命令実行時または、前記キャッシュ(302)へ
    の他のアクセスがないとき、前記キャッシュライトバッ
    ファ(305)に格納されたデータを、前記キャッシュ
    に格納することを特徴とする請求項33記載のデータ処
    理装置。
  35. 【請求項35】 前記キャッシュ制御部は、後続する命
    令が処理するデータが、前記キャッシュライトバッファ
    (305)に格納されている場合は、格納されている該
    データを、前記後続する命令の実行に優先して、前記キ
    ャッシュに格納することを特徴とする請求項34記載の
    データ処理装置。
  36. 【請求項36】 中央処理装置と下位階層の記憶装置間
    に設けられたキャッシュ記憶装置において、 該下位階層の記憶装置の内容の一部のコピーを格納する
    キャッシュメモリ(1001)と、 上記中央処理装置と該キャッシュメモリ(1001)間
    に設けられ、上記中央処理装置がストア命令実行時に上
    記キャッシュメモリ(1001)へのアクセスに成功し
    たとき、該ストア命令のストアデータが格納されるスト
    アデータ格納手段(1002)と、 前記中央処理装置により、該ストアデータ格納手段(1
    002)に格納されているストアデータをロードする命
    令が実行されたとき、前記キャッシュメモリ(100
    1)から該ロード命令によりアクセスされたラインデー
    タを読み出し、次にこのラインデータと前記ストアデー
    タ格納手段(1002)に格納されているストアデータ
    とをマージして該ラインデータ内の当該部分が上記スト
    アデータに置き換えられた新たなラインデータを作成
    し、この新ラインデータを前記中央処理装置に出力する
    マージ手段(1003)と、 を有することを特徴とするデータ処理装置。
  37. 【請求項37】 前記マージ手段(1003)に前記ス
    トアデータ格納手段(1002)に格納されていた前記
    マージ処理用のストアデータが転送されたとき、前記ス
    トアデータ格納手段(1002)内の上記ストアデータ
    を無効化する制御手段(1004)を、 さらに有することを特徴とする請求項36記載のデータ
    処理装置。
  38. 【請求項38】 中央処理装置と下位階層の記憶装置間
    に設けられたキャッシュ記憶装置において、 該下位階層の記憶装置の内容の一部のコピーを格納する
    キャッシュメモリ(1001)と、 上記中央処理装置と該キャッシュメモリ(1001)間
    に設けられ、上記中央処理装置がストア命令実行時に上
    記キャッシュメモリ(1001)へのアクセスに成功し
    たとき、該ストア命令のストアデータが格納されるスト
    アデータ格納手段(1002)と、上記下位階層の記憶
    装置と上記キャッシュメモリ(1001)間に設けら
    れ、上記中央処理装置がロード命令実行時に上記キャッ
    シュメモリ(1001)へのアクセスに失敗したとき、
    前記下位階層の記憶装置から転送されてくるムーブイン
    データが格納されるムーブインデータ格納手段(100
    6)と、 前記中央処理装置により、該ストアデータ格納手段(1
    002)に格納されているストアデータをロードする命
    令が実行されたとき、前記キャッシュメモリ(100
    1)から該ロード命令によりアクセスされたラインデー
    タを読み出し、次にこのラインデータと前記ストアデー
    タ格納手段(1002)に格納されているストアデータ
    とをマージして該ラインデータ内の当該部分が上記スト
    アデータに置き換えられた新たなラインデータを作成
    し、この新ラインデータを前記中央処理装置に出力する
    マージ手段(1003)と、 上記下位階層の記憶装置と、上記キャッシュメモリ(1
    001)間に設けられ、上記中央処理装置がロード命令
    実行時に上記キャッシュメモリ(1001)へのアクセ
    スに失敗したとき、前記下位階層の記憶装置から転送さ
    れてくるムーブインデータが格納されるムーブインデー
    タ格納手段(1006)と、 前記マージ手段(1003)によりマージ処理が行われ
    ている最中に、前記ムーブインデータ格納手段(100
    6)にムーブインデータが転送・格納されたとき、該ム
    ーブインデータを前記マージ手段(1003)が上記マ
    ージ処理のためのキャッシュメモリ(1001)へのア
    クセス終了後に上記キャッシュメモリ(1001)に格
    納するデータ書き込み手段(1007)と、 を有することを特徴とするデータ処理装置。
  39. 【請求項39】 中央処理装置と下位階層の記憶装置間
    に設けられたキャッシュ記憶装置において、 該下位階層の記憶装置の内容の一部のコピーを格納する
    キャッシュメモリ(1001)と、 上記中央処理装置と該キャッシュメモリ(1001)間
    に設けられ、上記中央処理装置がストア命令実行時に上
    記キャッシュメモリ(1001)へのアクセスに成功し
    たとき、該ストア命令のストアデータが格納されるスト
    アデータ格納手段(1002)と、 上記下位階層の記憶装置と上記キャッシュメモリ(10
    01)間に設けられ、上記中央処理装置がロード命令実
    行時に上記キャッシュメモリ(1001)へのアクセス
    に失敗したとき、前記下位階層の記憶装置から転送され
    てくるムーブインデータが格納されるムーブインデータ
    格納手段(1006)と、 前記ストアデータ格納手段(1002)に格納されてい
    るストアデータが書き込まれるべきラインデータが、前
    記ムーブインデータ格納手段(1006)にムーブイン
    データとして転送されてきたとき、上記ストアデータを
    該ムーブインデータの当該位置にマージして、該マージ
    処理により得られたラインデータを前記キャッシュメモ
    リ(1001)の当該位置に書き込むマージ手段(10
    11)と、 を有することを特徴とするデータ処理装置。
  40. 【請求項40】 前記マージ手段(1011)が、前記
    マージ処理の際に前記ストアデータ格納手段(100
    2)から上記マージ処理用のストアデータを読み出した
    とき、前記ストアデータ格納手段(1002)内の該ス
    トアデータを無効にする制御手段(1012)を、 さらに有することを特徴とする請求項39記載のデータ
    処理装置。
  41. 【請求項41】 前記ストアデータ格納手段(100
    2)はキャッシュライトバッファであり、前記ムーブイ
    ンデータ格納手段(1006)はロードバッファである
    ことを特徴とする請求項39記載のデータ処理装置。
  42. 【請求項42】 キャッシュメモリと、 前記キャッシュメモリの上位側に接続され、ストアデー
    タを一時格納し前記キャッシュへのアクセスがあいたタ
    イミングでストアデータをキャッシュに格納するキャッ
    シュライトバッファと、 前記キャッシュメモリの下位側に接続されロードデータ
    を格納しヒットしたとき、該ロードデータをキャッシュ
    メモリに格納するロードバッファとを備えたことを特徴
    とするデータ処理装置。
  43. 【請求項43】 ロード時にはキャッシュライトバッフ
    ァ格納データとキャッシュメモリの格納データとをマー
    ジしてロードデータを生成し、ストア時には前記キャッ
    シュライトバッファの格納データと前記ロードバッファ
    の格納データとをマージしてストアデータを生成するマ
    ージ手段を前記キャッシュメモリの外部に設けたことを
    特徴とする請求項42記載のデータ処理装置。
JP5281759A 1992-10-16 1993-10-16 データ処理装置 Withdrawn JPH06222990A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP5281759A JPH06222990A (ja) 1992-10-16 1993-10-16 データ処理装置
DE4335475A DE4335475A1 (de) 1992-10-16 1993-10-18 Datenverarbeitungseinrichtung mit Cache-Speicher
US08/739,062 US5828860A (en) 1992-10-16 1996-10-28 Data processing device equipped with cache memory and a storage unit for storing data between a main storage or CPU cache memory

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP4-278238 1992-10-16
JP27823892 1992-10-16
JP5281759A JPH06222990A (ja) 1992-10-16 1993-10-16 データ処理装置

Publications (1)

Publication Number Publication Date
JPH06222990A true JPH06222990A (ja) 1994-08-12

Family

ID=26552778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5281759A Withdrawn JPH06222990A (ja) 1992-10-16 1993-10-16 データ処理装置

Country Status (3)

Country Link
US (1) US5828860A (ja)
JP (1) JPH06222990A (ja)
DE (1) DE4335475A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990009220A1 (fr) * 1989-02-13 1990-08-23 Hisaka Works Limited Condenseur a film tombant
US5721865A (en) * 1995-01-20 1998-02-24 Hitachi, Ltd. Information processing apparatus with prefetch control for prefetching data structure from memory through cache memory
KR100397683B1 (ko) * 1995-02-16 2003-11-28 선 마이크로시스템즈 인코퍼레이티드 로드버퍼를 가진 로드/저장유닛에서 개별적인 태그 및 데이터 배열 액세스를 위한 방법 및 장치
US6678789B2 (en) 2000-04-05 2004-01-13 Nec Corporation Memory device
JP2006048181A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム
WO2007097030A1 (ja) * 2006-02-27 2007-08-30 Fujitsu Limited キャッシュ制御装置およびキャッシュ制御方法
JP2009540411A (ja) * 2006-06-07 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2015125526A (ja) * 2013-12-26 2015-07-06 Necプラットフォームズ株式会社 命令処理装置およびその命令処理方法
JP2015219550A (ja) * 2014-05-14 2015-12-07 富士通株式会社 演算処理装置および演算処理装置の制御方法

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW228580B (en) * 1993-10-01 1994-08-21 Ibm Information processing system and method of operation
JP3277730B2 (ja) * 1994-11-30 2002-04-22 株式会社日立製作所 半導体メモリ装置、及び、それを用いた情報処理装置
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US6052775A (en) * 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for non-intrusive cache fills and handling of load misses
US5948095A (en) * 1997-12-31 1999-09-07 Intel Corporation Method and apparatus for prefetching data in a computer system
US6119203A (en) * 1998-08-03 2000-09-12 Motorola, Inc. Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
US6374344B1 (en) * 1998-11-25 2002-04-16 Compaq Information Technologies Group L.P. (Citg) Methods and apparatus for processing load instructions in the presence of RAM array and data bus conflicts
DE19939764A1 (de) * 1999-08-21 2001-02-22 Philips Corp Intellectual Pty Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
US6799263B1 (en) 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US6553483B1 (en) * 1999-11-29 2003-04-22 Intel Corporation Enhanced virtual renaming scheme and deadlock prevention therefor
US6542982B2 (en) * 2000-02-24 2003-04-01 Hitachi, Ltd. Data processer and data processing system
US6836828B2 (en) * 2002-04-03 2004-12-28 Faraday Technology Corp. Instruction cache apparatus and method capable of increasing a instruction hit rate and improving instruction access efficiency
US7191320B2 (en) * 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
US7222217B2 (en) * 2003-06-27 2007-05-22 Microsoft Corporation Cache residency test instruction
US7284092B2 (en) * 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US8886895B2 (en) * 2004-09-14 2014-11-11 Freescale Semiconductor, Inc. System and method for fetching information in response to hazard indication information
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
US7447620B2 (en) * 2006-02-23 2008-11-04 International Business Machines Corporation Modeling asynchronous behavior from primary inputs and latches
US7490305B2 (en) * 2006-07-17 2009-02-10 International Business Machines Corporation Method for driving values to DC adjusted/untimed nets to identify timing problems
US8260990B2 (en) * 2007-11-19 2012-09-04 Qualcomm Incorporated Selective preclusion of a bus access request
US7882473B2 (en) 2007-11-27 2011-02-01 International Business Machines Corporation Sequential equivalence checking for asynchronous verification
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8943273B1 (en) 2008-08-14 2015-01-27 Marvell International Ltd. Method and apparatus for improving cache efficiency
US8122410B2 (en) * 2008-11-05 2012-02-21 International Business Machines Corporation Specifying and validating untimed nets
JP5444889B2 (ja) * 2009-06-30 2014-03-19 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP2011028343A (ja) * 2009-07-22 2011-02-10 Fujitsu Ltd 演算処理装置、およびデータ転送方法
US20110125987A1 (en) * 2009-11-20 2011-05-26 Qualcomm Incorporated Dedicated Arithmetic Decoding Instruction
US9507725B2 (en) * 2012-12-28 2016-11-29 Intel Corporation Store forwarding for data caches
JP6372297B2 (ja) * 2014-10-16 2018-08-15 富士通株式会社 情報処理装置および情報処理装置の制御方法
JP6455168B2 (ja) * 2015-01-16 2019-01-23 株式会社デンソー メモリ装置システム
JP6711167B2 (ja) * 2016-06-22 2020-06-17 富士通株式会社 演算処理装置および演算処理装置の制御方法
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
WO2018183553A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
CN110741356B (zh) 2017-04-10 2024-03-15 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
KR102462507B1 (ko) 2017-06-29 2022-11-02 삼성전자주식회사 프로세서, 이를 포함하는 컴퓨팅 장치 및 프로세서 저전력 모드 진입 방법
US10725825B2 (en) 2017-07-10 2020-07-28 Fungible, Inc. Data processing unit for stream processing
US11303472B2 (en) 2017-07-10 2022-04-12 Fungible, Inc. Data processing unit for compute nodes and storage nodes
US10380034B2 (en) * 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization
WO2019068017A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH
US12231353B2 (en) 2017-09-29 2025-02-18 Microsoft Technology Licensing, Llc Fabric control protocol for data center networks with packet spraying over multiple alternate data paths
US12341687B2 (en) 2017-09-29 2025-06-24 Microsoft Technology Licensing, Llc Reliable fabric control protocol extensions for data center networks with failure resilience
US12278763B2 (en) 2017-09-29 2025-04-15 Microsoft Technology Licensing, Llc Fabric control protocol with congestion control for data center networks
US12294470B2 (en) 2017-09-29 2025-05-06 Microsoft Technology Licensing, Llc Fabric control protocol for large-scale multi-stage data center networks
US10904367B2 (en) 2017-09-29 2021-01-26 Fungible, Inc. Network access node virtual fabrics configured dynamically over an underlay network
US12212495B2 (en) 2017-09-29 2025-01-28 Microsoft Technology Licensing, Llc Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths
US10841245B2 (en) 2017-11-21 2020-11-17 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
WO2019152063A1 (en) * 2018-02-02 2019-08-08 Fungible, Inc. Efficient work unit processing in a multicore system
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
CN115690235A (zh) * 2021-07-30 2023-02-03 北京字跳网络技术有限公司 图像处理方法、装置、电子设备及可读存储介质
CN114003182B (zh) * 2022-01-04 2022-04-29 苏州浪潮智能科技有限公司 指令交互方法、装置、存储设备以及介质
US11941295B2 (en) 2022-01-11 2024-03-26 Western Digital Technologies, Inc. Data storage device and method for providing an adaptive data path
CN117891509B (zh) * 2024-03-18 2024-06-14 芯来智融半导体科技(上海)有限公司 数据访存方法、装置、计算机设备和存储介质
CN121301239B (zh) * 2025-12-11 2026-03-20 上海壁仞科技股份有限公司 一种缓存访问控制方法、芯片及设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
JPS61224051A (ja) * 1985-03-29 1986-10-04 Fujitsu Ltd バッファメモリ制御方法
US4851993A (en) * 1987-04-20 1989-07-25 Amdahl Corporation Cache move-in bypass
US5027270A (en) * 1988-10-11 1991-06-25 Mips Computer Systems, Inc. Processor controlled interface with instruction streaming
KR900008516A (ko) * 1988-11-01 1990-06-04 미다 가쓰시게 버퍼 기억장치
EP0375864A3 (en) * 1988-12-29 1991-03-20 International Business Machines Corporation Cache bypass
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5222223A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
JPH0384641A (ja) * 1989-08-21 1991-04-10 Sun Microsyst Inc コンピュータシステムおよびこれの動作速度を速める方法
US5170476A (en) * 1990-01-22 1992-12-08 Motorola, Inc. Data processor having a deferred cache load
EP0449540B1 (en) * 1990-03-27 2000-05-17 Digital Equipment Corporation Memory system and method with prefetch buffer
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5265212A (en) * 1992-04-01 1993-11-23 Digital Equipment Corporation Sharing of bus access among multiple state machines with minimal wait time and prioritization of like cycle types
US5371870A (en) * 1992-04-24 1994-12-06 Digital Equipment Corporation Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching
US5410653A (en) * 1992-06-16 1995-04-25 International Business Machines Corporation Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990009220A1 (fr) * 1989-02-13 1990-08-23 Hisaka Works Limited Condenseur a film tombant
US5721865A (en) * 1995-01-20 1998-02-24 Hitachi, Ltd. Information processing apparatus with prefetch control for prefetching data structure from memory through cache memory
KR100397683B1 (ko) * 1995-02-16 2003-11-28 선 마이크로시스템즈 인코퍼레이티드 로드버퍼를 가진 로드/저장유닛에서 개별적인 태그 및 데이터 배열 액세스를 위한 방법 및 장치
US6678789B2 (en) 2000-04-05 2004-01-13 Nec Corporation Memory device
JP2006048181A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム
WO2007097030A1 (ja) * 2006-02-27 2007-08-30 Fujitsu Limited キャッシュ制御装置およびキャッシュ制御方法
US8312218B2 (en) 2006-02-27 2012-11-13 Fujitsu Limited Cache controller and cache control method
JP2009540411A (ja) * 2006-06-07 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2015125526A (ja) * 2013-12-26 2015-07-06 Necプラットフォームズ株式会社 命令処理装置およびその命令処理方法
JP2015219550A (ja) * 2014-05-14 2015-12-07 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
US5828860A (en) 1998-10-27
DE4335475A1 (de) 1994-06-01

Similar Documents

Publication Publication Date Title
JPH06222990A (ja) データ処理装置
US5202972A (en) Store buffer apparatus in a multiprocessor system
US6490658B1 (en) Data prefetch technique using prefetch cache, micro-TLB, and history file
EP0637800B1 (en) Data processor having cache memory
CN100541423C (zh) 在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
JP4699666B2 (ja) インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ
CN100428198C (zh) 改进任务切换的系统和方法
US5860107A (en) Processor and method for store gathering through merged store operations
US7111126B2 (en) Apparatus and method for loading data values
US6175898B1 (en) Method for prefetching data using a micro-TLB
US5835949A (en) Method of identifying and self-modifying code
US8074029B2 (en) Processor equipped with a pre-fetch function and pre-fetch control method
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US6912650B2 (en) Pre-prefetching target of following branch instruction based on past history
KR19990072272A (ko) 로드/로드검출및재정렬방법
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
JPH04251352A (ja) マイクロプロセサのオンチップキャッシュ内のメモリ位置の選択的ロック
JP3732234B2 (ja) スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
JPH0756808A (ja) データキャッシュバッファ及び記憶方法
JPH02242429A (ja) パイプライン浮動小数点ロード・インストラクシヨン回路
JPH02214937A (ja) データ処理装置
EP0375892A2 (en) Data processing system

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20001226