[go: up one dir, main page]

JPH09114734A - ストアバッファ装置 - Google Patents

ストアバッファ装置

Info

Publication number
JPH09114734A
JPH09114734A JP7266947A JP26694795A JPH09114734A JP H09114734 A JPH09114734 A JP H09114734A JP 7266947 A JP7266947 A JP 7266947A JP 26694795 A JP26694795 A JP 26694795A JP H09114734 A JPH09114734 A JP H09114734A
Authority
JP
Japan
Prior art keywords
store
data
entry
buffer
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7266947A
Other languages
English (en)
Inventor
Motohisa Ito
元久 伊藤
Eiki Kamata
栄樹 釜田
Toshiko Isobe
敏子 磯部
Takashi Yamamoto
敬 山本
Katsutoshi Uehara
克利 上原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Hitachi Computer Engineering Co Ltd
Original Assignee
Hitachi Ltd
Hitachi Computer Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd, Hitachi Computer Engineering Co Ltd filed Critical Hitachi Ltd
Priority to JP7266947A priority Critical patent/JPH09114734A/ja
Priority to US08/729,837 priority patent/US5845321A/en
Publication of JPH09114734A publication Critical patent/JPH09114734A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

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

Abstract

(57)【要約】 【課題】 キャッシュのヒット判定とデータ書き込みを
分離することでキャッシュのヒット判定をパイプライン
的に実行し、キャッシュのヒット判定の実行ピッチとス
トアバッファへの入力ピッチを一致させ、また、キャッ
シュヒットするストア命令のみストアバッファに入力す
ることにより、ストアバッファに空きがなくなる状態の
発生を低減する。 【解決手段】 ストアバッファを前段ストアバッファ1
aと、後段ストアバッファ2aに分離し、前段ストアバ
ッファ1aと後段ストアバッファ2aの間でキャッシュ
のヒット判定3をパイプライン的に行う。キャッシュヒ
ットするストア命令のみを後段ストアバッファ2aに入
力する。データアレイ6への書き込みは後段ストアバッ
ファ2aから行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、キャッシュメモリ
を持ち、演算処理装置から主記憶装置及びキャッシュメ
モリに書き込まれるストアアドレスとストアデータを記
憶するストアバッファ装置に関する。
【0002】
【従来の技術】ストア命令が発行されると、キャッシュ
メモリのヒット判定を行い、キャッシュヒットしたデー
タがキャッシュメモリに書き込まれる。この従来の方式
では、キャッシュのヒット判定の時間が必要なため、書
き込み動作のピッチが長くなり、その結果、ストア命令
が連続すると中央演算処理装置(以下、CPUと呼ぶ)の
性能が低下する。
【0003】この問題点を解決する方法として、データ
をストアバッファに一旦保持して、キャッシュメモリへ
の書き込み動作はストアバッファへの書き込みをもって
終了し、これによりCPUは、データが実際にキャッシ
ュメモリに書き込まれるのを待たずに次の命令の処理に
移ることができるキャッシュメモリ制御方法がある(特
開平4ー37935号公報を参照)。
【0004】上記した従来手法では、最後に書き込んだ
ストアアドレスとキャッシュヒットの判定結果を記憶し
ておく。そして、後続のストアアドレスと記憶しておい
たストアアドレスとを比較し、一致する場合には、キャ
ッシュのヒット判定を行わずに、記憶しておいたキャッ
シュヒット判定結果を使用する。このようにして、キャ
ッシュのヒット判定を省略することで、書き込み動作の
ピッチを短くして性能の向上を図っている。
【0005】
【発明が解決しようとする課題】上記公報に記載された
方法では、非連続なアドレスにストアする場合、後続の
ストアアドレスと記憶しておいたストアアドレスが一致
せず、記憶しているキャッシュヒット判定を使用するこ
とができない。この場合には、改めてキャッシュのヒッ
ト判定をしなければならず、書き込みの動作ピッチは向
上しない。そのため、ストアバッファは常に空きがない
状態になり、バッファとして機能しなくなる。このよう
な状態になると、ストアバッファに空きができるまで、
CPUはその実行を待ち合わせるため、CPUの性能が
低下するという問題がある。
【0006】また、上記した従来の方法では、ストアバ
ッファから出力される段階で、キャッシュのヒット判定
が行われるので、キャッシュミスになるストア命令もス
トアバッファに保持されていて、ストアバッファのエン
トリが有効に使用されていない。
【0007】さらに、非連続なアドレスにストアする場
合、主記憶への書き込み動作ピッチも長くなり、主記憶
につながるバスが有効に使用されないという問題もあ
る。
【0008】本発明の目的は、連続アドレスに対するス
トアと非連続のアドレスに対するストアの動作ピッチを
同じにして、ストアバッファの入力と出力のピッチを一
致させ、ストアバッファに空きがなくなる状態の発生を
低減させることで、CPUの性能を低下させないように
したストアバッファ装置を提供することにある。
【0009】本発明の他の目的は、ストアバッファに入
力する前にキャッシュのヒット判定を行い、キャッシュ
ヒットするストア命令のみストアバッファに入力するこ
とで、ストアバッファの使用効率を向上させたストアバ
ッファ装置を提供することにある。
【0010】本発明のさらに他の目的は、複数のストア
バッファエントリのデータを同時にキャッシュに書き込
むことで、出力スループットを向上させたストアバッフ
ァ装置を提供することにある。
【0011】本発明のさらに他の目的は、キャッシュの
ヒット判定をパイプライン的におこなうことで、主記憶
への書き込みピッチとキャッシュのヒット判定のピッチ
を一致させ、主記憶につながるバスを有効に使用するス
トアバッファ装置を提供することにある。
【0012】
【課題を解決するための手段】前記目的を達成するため
に、請求項1記載の発明では、演算実行部から出力さ
れ、主記憶装置およびキャッシュメモリに書き込むスト
アアドレスとストアデータとの対を一時保持する複数エ
ントリからなる第1のバッファ手段と、該第1のバッフ
ァ手段から取り出したストアアドレスとストアデータと
の対が入力され、前記キャッシュメモリとのヒット判定
をパイプライン的に行うヒット判定手段と、該ヒット判
定の結果、キャッシュヒットと判定されたストアアドレ
スとストアデータとの対を一時保持する複数エントリか
らなる第2のバッファ手段とを備えたことを特徴として
いる。
【0013】請求項2記載の発明では、前記第1、第2
のバッファ手段の1エントリ全てを使用しないデータ長
のストアデータを保持するために、該第1、第2のバッ
ファ手段のエントリ内で有効なデータ位置を示す情報を
記憶した手段と、前記第2のバッファ手段に入力される
第1のストアデータが、該第2のバッファ手段に既に存
在する第2のストアデータと同一エントリに併合可能で
あるか否かを判定する手段と、該手段により併合可能と
判定されたとき、該第1のストアデータを該第2のスト
アデータと併合して該同一エントリに書き込む手段と、
該書き込みに応じて、前記記憶された、第2のバッファ
手段のエントリ内で有効なデータ位置を示す情報を更新
する手段とを備えたことを特徴としている。
【0014】請求項3記載の発明では、前記第2のバッ
ファ手段に入力される第1のストアデータが、該第2の
バッファ手段に既に存在する第2のストアデータと連結
可能であるか否かを判定する手段と、該手段により連結
可能と判定されたとき、連結する前記各ストアデータの
エントリ番号を記憶する手段と、該記憶されたエントリ
番号を基に、前記第2のバッファ手段内の複数エントリ
のストアデータを連結して前記キャッシュメモリに掃き
出す手段とを備えたことを特徴としている。
【0015】上記したように、キャッシュのヒット判定
とキャッシュへのデータ書き込みを分離したことによ
り、後段ストアバッファへの入力と、後段ストアバッフ
ァからの出力のピッチが一致し、後段ストアバッファに
空きがなくなる状態の発生を低減することができる。ま
た、キャッシュのヒット判定を後段ストアバッファ入力
時に行い、キャッシュヒットするストア命令のみ後段ス
トアバッファに入力することで、後段ストアバッファの
使用効率を向上することができる。また、後段ストアバ
ッファの複数のエントリを同時に掃き出せるようにした
ことで、後段ストアバッファに空きがなくなる状態の発
生を低減することができる。さらに、キャッシュのヒッ
ト判定をパイプライン的に行うことで、主記憶にデータ
を書き込むピッチとキャッシュのヒット判定のピッチが
一致し、主記憶につながるバスを有効に使用することが
できる。
【0016】
【発明の実施の形態】以下、本発明の一実施例を図面を
用いて具体的に説明する。以下の説明では、2進数を
“ ”で囲って表すことにする。図25は、本発明の実
施対象となる情報処理装置の構成を示す。図中、74は
CPU、75はストアスルー方式の2次キャッシュメモ
リ(以下、SCMと呼ぶ)、4は主記憶装置である。71
はプログラムを実行する命令実行部、72はCPU内蔵
の1次キャッシュメモリ(以下、FCMと呼ぶ)、73は
ストアバッファである。6はSCMのデータアレイ、7
はSCMのアドレスアレイである。108はストアアド
レスとデータ、106は主記憶にデータを書き込むパス
である。101はSCMアドレスアレイ7を参照するア
ドレス、102はSCMアドレスアレイ7の内容、10
4はSCMストアアドレス、105はSCMストアデー
タである。
【0017】情報処理装置において、メモリアクセスの
高速化のためにキャッシュメモリを用いるのが一般的で
ある。CPUチップ内に設けたFCM72は、高速に動
作するが容量を大きくするのは難しい。そこで、FCM
72の他に、CPUチップ外にSCM75を設けること
がある。このSCM75は、速度はFCM72に劣る
が、大容量化が可能である。図25は、CPU74の外
にSCM75を設けた場合の構成例である。SCM75
は、データアレイ6とアドレスアレイ7からなる。デー
タアレイ6にデータを書き込み、アドレスアレイ7で内
容の管理を行う。
【0018】ストア命令の実行は、FCMヒットならば
FCM72にデータを書き込み、同時にストアバッファ
73に書き込む。ストアバッファ73にデータが書き込
まれた段階でストア命令の実行は終了し、命令実行部7
1は次の命令の処理に移る。ストアバッファに保持され
たストア命令は、命令実行部71の動作とは非同期に、
主記憶4とSCM75に書き込む。ただし、SCMミス
ならば、SCM75には書き込まない。
【0019】〈実施例1〉図1は、本発明の実施例1の
構成であり、ストアバッファ、SCM、主記憶の書き込
みに関係する部分を示す。図1において、1aは前段ス
トアバッファ、2aは後段ストアバッファ、3はSCM
ヒット判定論理、4は主記憶、5aはセット信号生成論
理である。本発明では、図25のストアバッファ73
を、前段ストアバッファ1aと後段ストアバッファ2a
に分割し、前段ストアバッファ1aと後段ストアバッフ
ァ2aとの間にSCMヒット判定論理3を設けて構成し
たものである。
【0020】SCMヒット判定論理3は、パイプライン
遅延論理8、アドレス比較器9、SCMアドレスアレイ
7の参照アドレスを保持するラッチ91d、読み出した
アドレスアレイの内容を保持するラッチ91eからな
る。パイプライン遅延論理8は、ストアアドレスとデー
タをパイプライン的に遅延させるためのラッチ91a〜
cで構成されている。
【0021】103はセット信号生成論理5aから出力
されるセット信号、107はキャッシュヒット判定結果
である。109は前段ストアバッファ1aから出力され
るストアアドレスとデータであり、110はパイプライ
ン遅延論理8で遅延されたストアアドレスとデータであ
る。111は、指定されたエントリを後段ストアバッフ
ァ2aからデータアレイ6に掃きだすための掃き出し要
求である。
【0022】図1に示す実施例1の特徴は、ストアバッ
ファが前後2段に分かれていて、前段ストアバッファ1
aと後段ストアバッファ2aの間のSCMヒット判定論
理3内でパイプライン的にSCMヒット判定を行い、S
CMヒットしたストア命令のみを後段ストアバッファ2
aに入力することにある。
【0023】図2は、実施例1の前段ストアバッファ1
aの構成を示す。主記憶4に書き込む順序を保障するた
め、前段ストアバッファ1aは、先入れ先出し型(FI
FO)のバッファで構成されている。図2において、前
段ストアバッファ1aは、本実施例では8段のエントリ
からなり、各エントリは、本実施例では32ビットのア
ドレスフィールド53、32ビットのデータフィールド
54aからなる。55はリードライトポインタ、122
はライトエントリ、123はリードエントリである。
【0024】ストアアドレスとデータ108は、ライト
エントリ122が示すエントリに書き込まれ、リードエ
ントリ123が示すエントリのアドレスとデータをセレ
クタ60aで選択して、109に出力する。
【0025】前段ストアバッファ1aから出力したスト
アアドレスとデータは、主記憶4に送られ、ストアアド
レスにデータが書き込まれ、それと同時にSCMヒット
判定論理3に入力される。SCMヒット判定論理3は、
パイプライン的にSCMヒット判定を行う。
【0026】なお、本実施例のSCMのアドレスマッピ
ングは、例えばダイレクトマッピング法を用いる。図2
6は、ダイレクトマッピング法を説明する図である。3
2ビットのストアアドレスの内、上位の例えば12ビッ
ト(A0〜A11、タグ)が比較器の一方に入力され
る。また、例えばストアアドレスA12〜A27の16
ビット(インデックス)がアドレスアレイ7の参照アド
レスとなって1MブロックのSCMが参照される。そし
て、下位のA28〜A31の4ビットがブロック内のア
ドレスとなる。ここでは、1ブロックが16バイトで構
成されている。
【0027】アドレスアレイ7には上位12ビット(タ
グ)が格納され、参照アドレスで読み出される上位12
ビットが比較器の他方の入力となる。ストアアドレス中
のインデックスを用いてアドレスアレイ7のエントリを
指定し、該エントリのタグを読み出す。ストアアドレス
中のタグとアドレスアレイ7のタグが比較され(このと
き、タグに付けられている有効ビットもチェックされ
る)、一致したとき、1ブロックまたは、ストアアドレ
ス中のブロック内アドレスで指定された1バイトが読み
出される。また、タグが一致しないときは、主記憶をア
クセスする。
【0028】図3は、SCMヒット判定論理3の動作例
を示す。ラッチ91a〜cで構成されたパイプライン遅
延論理8で、ストアアドレスとデータをパイプライン的
に遅延する。また、ラッチ91dは、アドレスアレイ7
の参照アドレス(つまり、上記したインデックス)を保
持する。SCMの一実施例として、図3に示すように、
アドレスアレイ参照アドレスを与えてから、3サイクル
後にアドレスアレイ7の内容(つまり、上記したタグ)
が読み出されるSCMを考える。このSCMは、2サイ
クルピッチでアドレスを与えることで連続してデータの
読み出しが可能なラッチ付きスタチックラム(Latc
hed SRAM)で構成されているものとする。アド
レスアレイ7の内容がラッチ91eに読み出されるま
で、ストアアドレスはラッチ91a〜bで遅延する。ラ
ッチ91bのストアアドレス(タグ)とラッチ91eの
アドレスアレイ7の内容(タグ)をアドレス比較器9で
比較し、SCMヒット判定を行う。SCMヒット判定結
果107は、 SCMヒット:“1” SCMミス :“0” の値になる。SCMヒット判定結果107=“1”(S
CMヒット)ならば、セット信号生成論理5aで後段ス
トアバッファ2aのセット信号103を生成する。
【0029】このように、本発明ではSCMヒット判定
をパイプライン的に行っているので、アドレスアレイ7
からアドレスアレイの内容102が出力されると、直ち
に前段ストアバッファ1aから次のストア命令をSCM
ヒット判定論理3に投入することができ、この結果、従
来のものに比べてキャッシュのビジー率が低下する。
【0030】図4は、セット信号103を生成するセッ
ト信号生成論理5aの構成を示す図である。51は後段
ストアバッファ2aのライトポインタ用ラッチ、52は
更新論理である。ラッチ51は0から7の値を取り、更
新論理52はラッチ51の値を+1する。なお、ラッチ
51の値が7のとき、更新論理52は0を出力する。6
9はデコーダで、ラッチ51の値により以下の値を出力
する。
【0031】 103は、後段ストアバッファ2aに入力するセット信
号である。セット信号103は、本実施例では後段スト
アバッファ2aが8段エントリであるので8ビットで構
成され,“1”が立っている後段ストアバッファ2aの
エントリにストアアドレスとストアデータ、および有効
ビットが入力される。つまり、セット信号103の0ビ
ット目は0番エントリに入力することを示し、以下順
に、7ビット目が7番エントリに入力することを示す。
例えば、3番エントリに入力するセット信号103は、
“00010000”になる。セット信号103がオー
ル“0”のときは、後段ストアバッファ2aのどのエン
トリにも入力されない。このセット信号103は、以下
のように生成される。
【0032】(1)SCMヒット判定結果107=
“1”(SCMヒット)のとき、セレクタは更新論理5
2を選択し、従ってセット信号103としてデコーダ6
9の出力がアンドゲートを介して出力される。また、ラ
ッチ51の値は更新論理52により更新される。
【0033】(2)SCMヒット判定結果107=
“0”(SCMミス)のとき、セレクタは“0”を選択
し、従ってセット信号103としてオール“0”が出力
され、ラッチ51の値は更新されない。
【0034】図5は、前段ストアバッファ1a内のリー
ドライトポインタ55の構成を示す図である。56aは
ライトポインタ用ラッチ、56bはリードポインタ用ラ
ッチ、52は前述した更新論理、69は前述したデコー
ダである。128は命令実行部からのライト要求信号、
129は命令実行部からのリード要求信号である。
【0035】本実施例では前段ストアバッファ1aが8
段のエントリからなるので、ライトポインタ用ラッチ5
6a、リードポインタ用ラッチ56bともに0から7の
値をとる。ライト要求信号128が“1”になるたび
に、前段ストアバッファ1aにストアアドレス、データ
が書き込まれ、ライトポインタ用ラッチ56aは次の値
を示すように更新される。また、リード要求信号129
が“1”になるたびに、前段ストアバッファ1aからス
トアアドレス、データが掃き出され、リードポインタ用
ラッチ56bは次の値を示すように更新される。なお、
更新論理52は、ライトポインタ用ラッチ56a、ある
いは、リードポインタ用ラッチ56bの値が7のときは
0を出力する。
【0036】図6は、実施例1の後段ストアバッファ2
aの構成を示す図である。図6において、本実施例では
後段ストアバッファ2aは、8段のエントリからなり、
各エントリは、本実施例では30ビットのアドレスフィ
ールド57a、32ビットのデータフィールド58a、
1ビットの有効ビット59からなる。
【0037】アドレスフィールドが前段ストアバッファ
1aと同じ32ビット構成でないのは、本実施例ではデ
ータフィールド58aが32ビット構成(4バイト)で
あり、かつ、アライン(アドレス調整)されているの
で、ストアアドレスの下位2ビット(30、31ビット
目)はSCM書き込み時に使用しないためである。つま
り、データアレイの1ブロックが4バイト構成されてい
る。
【0038】61は後段ストアバッファ2aのリードポ
インタ、62はリードポインタ用ラッチ、52は前述し
た更新論理、69は前述したデコーダである。ラッチ6
2は0から7の値をとり、更新論理52はラッチ62の
値を+1する。なお、ラッチ62の値が7のとき、更新
論理52は0を出力する。
【0039】103は前述したセット信号生成論理5a
からのセット信号、111は命令実行部からの掃き出し
要求信号、104はSCMデータアレイの書き込みアド
レス、105はSCMデータアレイの書き込みデータで
ある。
【0040】パイプライン遅延論理3で遅延したストア
アドレスとデータは、信号線110から入力され、スト
アアドレスはアドレスフィールド57a内のセット信号
103で示すエントリに入力され、データはデータフィ
ールド58a内のセット信号103で示すエントリに入
力される。同時に、当該エントリの有効ビット59を
“1”にセットする。セット信号103がオール“0”
ならば、どのエントリにもストアアドレスとデータは入
力しない。このとき、有効ビット59は変化しない。す
なわち、SCMミスになるストア命令は、後段ストアバ
ッファ2aには入力されない。
【0041】一方、後段ストアバッファ2aからSCM
への掃き出しは、掃き出しエントリ306の示すエント
リから行われる。掃き出しエントリ306は、本実施例
では前段ストアバッファ2aが8段のエントリから構成
されているので、8ビットで構成される。掃き出しエン
トリ306の1ビット目は1番エントリを掃き出すこと
を示し、以下順に、7ビット目が7番エントリから掃き
出すことを示す。例えば、0番エントリを掃き出す掃き
出しエントリ306の値は“10000000”にな
る。掃き出しエントリ306は、以下のように生成され
る。
【0042】(1)デコーダ69の出力=“1” かつ、 有効ビット59=“1”(有効)、 かつ、 掃き出し要求111=“1”(有効)、 ならば、 掃き出しエントリ306の該当ビット=“1” (2)上記以外 掃き出しエントリ306の該当ビット=“0” セレクタ60cは、掃き出しエントリ306が示すエン
トリのアドレスフィールド57aからストアアドレスを
選択して信号線104に出力し、データフィールド58
aからデータを選択して信号線105に出力する。掃き
出しエントリ306がオール“0”ならばどのエントリ
も出力しない。ストアアドレスとデータの掃き出しと同
時に、掃き出したエントリの有効ビット59をリセット
する。さらに、ラッチ62の値は更新論理52により更
新する。
【0043】掃き出し要求111は、後段ストアバッフ
ァaにストア命令があり、かつ、SCMが動作していな
いときに、SCMコントローラ(図1には記載さていな
い)から出力する。このSCMコントローラは公知技術
で実現可能である。
【0044】図7は、図1の実施例1において、連続し
てストア命令を処理するときのタイムチャートを示す。
本実施例1では、ストア命令は、Store−1からS
tore−3まで3命令を連続して前段ストアバッファ
1aから掃き出す場合を例にしている。そして、Sto
re−1、3はSCMヒットし、Store−2はSC
Mミスしたものとする。また、本実施例では信号線10
6は、2サイクルピッチで主記憶へのストア命令を受け
付け可能であるものとする。
【0045】以下、実施例1の動作を説明すると、主記
憶に書き込むのと同じピッチで、ラッチ91aにストア
アドレスとデータが入力され、ラッチ91dにアドレス
アレイの参照アドレス(ストアアドレス中のインデック
ス)が入力される。インデックスで指定されたアドレス
アレイ7の内容(つまり、タグ)は、3サイクル後にラ
ッチ91eに読み出される。すなわち、ラッチ91eの
値は2サイクルピッチで変化する。
【0046】ラッチ91eのアドレスアレイの内容(タ
グ)とラッチ91cの遅延したストアアドレス中のタグ
をアドレス比較器9で比較して、SCMヒット判定結果
107が生成される。その結果、セット信号103、ラ
ッチ55の値は以下のように変化する。
【0047】 Store−1 SCM ヒット: セット信号103=“10000000”:ラッチ55=1 Store−2 SCM ミス: セット信号103=“00000000”:ラッチ55=1 Store−3 SCM ヒット: セット信号103=“01000000”:ラッチ55=2 従って、Store−1のストアアドレスとデータは、
セット信号103が指示する後段ストアバッファ2a内
の、0番目のエントリのアドレスフィールド57a、デ
ータフィールド58aにそれぞれ保持され(また、同時
に有効ビット59もセットされる)、同様に、Stor
e−3のストアアドレスとデータは、後段ストアバッフ
ァ2a内の1番目のエントリに保持され、ラッチ55の
値は2になる。
【0048】後段ストアバッファ2aに保持されている
ストア命令は、命令実行部からの掃き出し要求111に
よって、後段ストアバッファ2aからSCMのデータア
レイ6に書き込まれる。すなわち、リードポインタ61
によって指定されたエントリがセレクタ60cで選択さ
れる。選択されたエントリのアドレスフィールド57a
がデータアレイ書き込みアドレスとなってデータアレイ
6をアクセスする。ここで、データアレイ書き込みアド
レスは、下位2ビットを除く上位30ビットであり、該
アドレスで指定されたブロック内に、先のリードポイン
タ61で指定されたエントリのデータ(32ビット)が
書き込まれる。なお、図1のSCMは、図26のキャッ
シュメモリと異なり、アドレスアレイ7とデータアレイ
6に分離しているので、データアレイ6にはアドレスが
割り付けられている。
【0049】〈実施例2〉次に、実施例2について説明
する。通常、整数型のデータは4バイト(32ビット)
幅であることが多いが、浮動小数点データは、倍精度で
あると8バイト(64ビット)の幅が必要である。浮動
小数点データを1エントリに格納できるように、データ
フィールドの幅を8バイトにすると、整数型のデータを
格納する際に空きができて無駄が生じる。
【0050】そこで、データフィールドの幅を8バイト
にし、さらに、同じエントリを使用するストア命令は、
併合して1つのエントリを使用するようにすれば、浮動
小数点データを1エントリに格納できるうえに、整数型
のデータを格納する際の無駄が生じない。同じエントリ
を使用するストア命令を併合して1つのエントリを使用
することを、本実施例ではデータの併合と呼ぶことにす
る。そして、データの併合は、後段ストアバッファに対
して行う。つまり、既に後段ストアバッファに存在する
ストアデータと、後段ストアバッファに入力されるスト
アデータが同一エントリに併合可能であるとき、データ
の併合を行う。
【0051】データが併合可能か否かは、データフィー
ルドが8バイトであるから、下位3ビットを除く、スト
アアドレスの上位29ビット(0〜28ビット)を比較
することによって同一のエントリであるか否かが判明す
る。ストアアドレスの比較の結果、データ併合が可能な
らば、既存のデータフィールドに新しいストアデータを
書き込む。ただし、主記憶4に書き込む順番を保障する
目的を持つ前段ストアバッファ1bは、データフィール
ドの幅を8バイトにしてもデータの併合を行わない。
【0052】データフィールドの幅を8バイトに拡張し
たので、データフィールド内のどこに有効なデータが存
在するかを表す情報を記憶しておく必要が生じる。そこ
で、有効なデータが存在するバイト位置を表す情報をデ
ータフィールドの各エントリ毎に設ける。これをバイト
マスクと呼ぶ。
【0053】バイトマスクの値は, “1”:有効なデータが存在する “0”:有効なデータが存在しない である。例えば、0バイト目から3バイト目まで有効な
データが存在する場合のバイトマスクは、“11110
000”となる。
【0054】図8は、本発明の実施例2の構成を示す。
実施例1の構成に、前段バイトマスクバッファ11、後
段バイトマスクバッファ12、バイトマスク遅延論理1
3、バイトマスク更新論理14、アドレス一致検出論理
15aを付加して構成されている。
【0055】図9は、実施例2の前段ストアバッファ1
bの構成を示す図である。主記憶4に書き込む順序を保
障するため、前段ストアバッファ1bは先入れ先出し型
(FIFO)のバッファで構成され、本実施例では8段
のエントリを持つ。そして、データフィールド54b
は、本実施例では8バイト(64ビット)幅である。信
号線122と信号線123は,前段バイトマスクバッフ
ァ11の書き込み、あるいは掃き出しに使用する。ま
た、信号線128、129は、命令実行部からのライト
要求、リード要求である。リードライトポインタ55、
セレクタ60bは、実施例1で説明したものと同様の機
能を持つ。
【0056】図10は、前段バイトマスクバッファ11
の構成を示す図である。データフィールド54bは、本
実施例では1エントリ8バイト構成であるので、バイト
マスクの1エントリは8ビットで構成される。そして、
前段ストアバッファ1bと同じ8段のエントリを持つ。
信号線112から入力されたバイトマスクは、ライトエ
ントリ122の示すエントリに入力される。掃き出し
は、前段ストアバッファ1bの掃き出しと同時に、セレ
クタ60fでリードエントリ123の示すエントリのバ
イトマスクを選択する。
【0057】前段バイトマスクバッファ11から掃き出
したバイトマスク113は、バイトマスク遅延論理13
でSCMヒット判定が終わるまで遅延させ、バイトマス
ク更新論理14を通過した後、後段バイトマスクバッフ
ァ12に入力される。
【0058】図11は、バイトマスク更新論理14の構
成を示す図である。114はバイトマスク遅延論理13
で遅延させたバイトマスク、116−0〜7は、後段バ
イトマスクバッファ12に保持されたバイトマスクで、
116−0は0番エントリのバイトマスク、以下順に、
116−7が7番エントリのバイトマスクである。11
5−0〜115−7は後段バイトマスク12の入力であ
る。115−0は0番エントリの入力であり、以下順
に、115−7が7番エントリの入力である。121は
データ併合の有無を示す信号で、 “0”:併合なし、 “1”:併合あり、 を表す。
【0059】データ併合の有無に応じて、後段バイトマ
スクバッファ12の入力115−0〜7を以下のように
生成する。すなわち、 (1)信号線121=“0”(データ併合なし) 後段バイトマスク12の入力=ストアデータのバイトマ
スク114 (2)信号線121=“1”(データ併合あり) 後段バイトマスク12の入力=ストアデータのバイトマ
スク114 or(論理和)既存のバイトマスク116
−0〜7 図12は、後段バイトマスクバッファ12の構成を示す
図である。後段バイトマスクバッファ12は、本実施例
では、8エントリで構成され、各エントリは8ビット
で,データフィールド58b内の有効なデータが存在す
るバイト位置を示す。115−0〜7は各エントリの入
力であり、116−0〜7は各エントリの出力である。
前段バイトマスクバッファ11と違い、入力は共通では
なく各エントリ毎に個別になっている。そして、セット
信号103の示すエントリのバイトマスクのみが書き込
まれ、その他のエントリのバイトマスクは変化しない。
【0060】図13は、実施例2の後段ストアバッファ
2bの構成を示す図である。各エントリは本実施例2で
は、29ビットのアドレスフィールド57b、64ビッ
ト(8バイト)のデータフィールド58b、1ビットの
有効ビット59からなる。アドレスフィールドが32ビ
ット構成でないのは、データフィールド58bが64ビ
ット構成であるので、つまり、SCMデータアレイの1
ブロックが64ビット(8バイト)であり、ブロックエ
ントリがストアアドレスの上位29ビットで指定され、
下位3ビット(29〜31ビット目)がSCMデータア
レイの書き込み時に使用されないからである。
【0061】60dは、アドレスフィールド57b、デ
ータフィールド58bから掃き出すエントリを選択する
セレクタ、63aは、有効なデータが存在するバイト位
置のストアデータを取り出すバイトセレクタである。
【0062】103はセット信号、104はデータアレ
イ書き込みアドレス、105は書き込みデータである。
110はパイプライン遅延論理3で遅延したストアアド
レスとデータ、114はバイトマスク遅延論理14の出
力、111は掃き出し要求である。116−0〜7は後
段バイトマスクバッファ12の内容である。119−0
〜9はアドレスフィールド57bの内容である。124
−0〜7は有効ビット59の値である。
【0063】データフィールド58bは、バイト毎にス
トアデータをセット可能なように構成され、データフィ
ールド58bのセット信号307−0〜7は、セット信
号307−0が0バイト目のセット信号であり、以下順
に、セット信号307−7が7バイト目のセット信号で
ある。
【0064】パイプライン遅延論理3で遅延されたスト
アアドレスとデータは、信号線110から入力され、ス
トアアドレスはセット信号103で示すアドレスフィー
ルド57bのエントリに入力され、データはセット信号
307−0〜7で示すデータフィールド58bのエント
リのバイト位置に入力される。ストアアドレスとデータ
が入力されると同時に、当該エントリの有効ビット59
が“1”にセットされる。セット信号103がオール
“0”ならば、どのエントリにもストアアドレスとデー
タは保持されず破棄される。このとき、有効ビット59
は変化しない。すなわち、SCMミスになるストア命令
は、後段ストアバッファ2bに入力されない。
【0065】一方、後段ストアバッファ2bからの掃き
出しは、掃き出しエントリ306が示すエントリからお
こなわれる。セレクタ60dは掃き出しエントリ306
を基に、アドレスフィールド57bからストアアドレス
を選択して信号線104に出力し、データフィールド5
8bからデータを選択して信号線301に出力する。ス
トアアドレスとデータの掃き出しと同時に、掃き出した
エントリの有効ビット59をリセットする。さらに、ラ
ッチ62の値は更新論理52により更新する。バイトセ
レクタ63aは、有効なストアデータを取り出し信号線
105に出力する。
【0066】掃き出し要求信号111は、後段ストアバ
ッファ2bにストア命令があり、かつ、SCMが動作し
ていないときに、前述の公知技術であるSCMコントロ
ーラ(図8には示されていない)から出力する。
【0067】図14は、バイトセレクタ63aの構成を
示す図である。60gは掃き出しエントリ306を基
に、後段バイトマスクバッファの内容116−0〜7か
ら掃き出すエントリのバイトマスク308を取り出すセ
レクタである。このバイトマスク308を基にセレクタ
60hは、ストアデータ301から有効なデータを取り
出す。
【0068】図15は、データの併合を検査するための
アドレス一致検出論理15aの構成を示す図である。6
4−0〜7は、29ビットのアドレス比較器である。1
17は後段ストアバッファ2bに入力可能なストアデー
タのストアアドレス、119−0〜7は、後段ストアバ
ッファ2bに既に存在するストアデータのアドレスフィ
ールド57bの内容、124−0〜7は有効ビット59
の内容である。
【0069】29ビットのストアアドレス117が、各
アドレス比較器64−0〜7の一方に入力され、各アド
レス比較器64−0〜7の他方にはそれぞれアドレスフ
ィールド57bの内容A0〜A7が119−0〜7とし
て入力され、ストアアドレス117を持つストアデータ
が、後段ストアバッファ2bに既に存在するどのストア
データと併合が可能であるか否かを調べる。118−0
〜7は、アドレスが一致しデータ併合可能なことを示
す。つまり、118−0は、ストアアドレス117を持
つストアデータが、後段ストアバッファ2bの0番エン
トリのデータと併合可能であることを示し、以下順に、
118−7は7番エントリとデータ併合可能であること
を示す。
【0070】ただし、アドレス比較器64−0〜7は、
enable(有効ビット59)が“1”(有効)であ
るとき、ストアアドレス117の0〜28ビットと、ア
ドレスフィールド57bの内容119−0〜7をそれぞ
れ比較する。そして、アドレスが一致したならば、
“1”を出力し、不一致ならば“0”を出力する。en
able(有効ビット59)が“0”(無効)であると
きは“0”を出力する。
【0071】図16は、実施例2のセット信号生成論理
5bの構成を示す図である。121は、図15のデータ
併合可能なことを示す信号118−0〜7をORゲート
201を介した信号であり、“1”のときデータ併合が
あり、“0”のときデータ併合がないことを示す。
【0072】セット信号生成論理5bは、条件により以
下のように動作する。すなわち、 (1)信号線107=“1”(SCMヒット)、かつ、 信号線121=“0”(データ併合なし)ならば、 アンドゲート202の出力“1”によって、セレクタ2
03は更新論理52側の出力を選択する。ラッチ51の
値がデコーダ69で出力され、アンドゲート204、オ
アゲート205を介して信号103に出力される。この
場合はデータの併合がないので、実施例1と同様に、信
号103で指示された後段ストアバッファ2bのエント
リに入力される。また、この入力時に、前段バイトマス
クバッファ11からのバイトマスク114が後段ストア
バッファ2bにアンドゲート401を介して入力される
ので、そのバイトマスク114で指示されたバイト位置
に入力される。また、ラッチ51の値は更新論理52に
より更新される。
【0073】 (2)信号線107=“1”(SCMヒット)、かつ、 信号線121=“1”(データ併合あり)ならば、 アンドゲート202の出力は“0”となり、セレクタ2
03は“0”を選択し、デコーダ69はオール“0”と
なる。また、アンドゲート204の出力が“0”とな
る。従って、信号103としては、エントリ番号を示す
信号118−0〜7がオアゲート205を介して出力さ
れる。
【0074】エントリ番号を示す信号103は、図13
の後段ストアバッファ2bに入力され、これと同時にス
トアデータのバイトマスク114が入力される。これに
より、併合されるストアデータは、信号103で指示さ
れたエントリ中の、バイトマスク114で指示されたバ
イト位置のデータフィールド58bに入力される。
【0075】なお、併合時に、入力ストアデータが、後
段ストアバッファ2bに存在する併合相手のストアデー
タと同じバイト位置に書き込まれ、つまり上書きされる
こともあるが、同一エントリに対するストア命令が連続
したとき、最後のストア命令が後段ストアバッファ2b
に保持され、その後、SCMに最新のデータが掃きださ
れればよいので、何ら問題ではない。
【0076】 (3)信号線107=“0”(SCMミス)ならば、 アンドゲート202の出力は“0”となり、セレクタ2
03は“0”を選択し、デコーダ69はオール“0”と
なる。従って、信号線103はオール“0”、ラッチ5
1の値は更新されない。
【0077】〈実施例3〉次に実施例3について説明す
る。SCMへの書き込みデータ幅を広くすれば、データ
書き込みの効率はよくなる。そこで、本実施例ではSC
Mへの書き込みデータ幅を2倍の128ビット(16バ
イト)に広げ、後段ストアバッファの2エントリを連結
して掃き出すようにする。連結可能であるか否かは(つ
まり、2エントリのアドレスが連続しているか否か
は)、書き込みデータ幅が16バイトであるから、スト
アアドレスの上位28ビット(0〜27ビット目)を比
較すれば判明する。
【0078】図17は、本発明の実施例3の構成を示し
た図である。2cは後段ストアバッファであり、15b
はアドレス一致検出論理である。16は連結エントリバ
ッファである。連結エントリバッファ16は、後段スト
アバッファ2cの複数のエントリを連結して掃き出すと
き、どのエントリと連結するかを示す。
【0079】実施例3の特徴は、2エントリを連結して
同時に後段ストアバッファ2cから掃き出す制御方法に
ある。まず、どのエントリと連結可能であるかを示す連
結エントリバッファ16を持つ。また、ストアアドレス
を比較して連結可能なエントリを判定するアドレス一致
検出論理15bを持つ。さらに、任意の2エントリを同
時に掃き出し可能な後段ストアバッファ2cを持つ。
【0080】図18は、連結エントリバッファ16の構
成を示す図である。連結エントリバッファ16は、後段
ストアバッファ2cと同じ数のエントリを持ち、本実施
例では8段のエントリから構成され、各エントリは8ビ
ットの連結エントリフィールドMEnからなる。
【0081】連結エントリフィールドMEnは、n番エ
ントリと連結可能なエントリを示し、0ビット目が0番
エントリと連結可能であることを示し、以下順に、7ビ
ット目が7番エントリと連結可能であることを示す。
【0082】例えば、1番エントリと3番エントリが連
結可能ならば、連結エントリフィールドME1には、3
番エントリと連結可能であることを示す、 ME1=
“00010000”が格納され、連結エントリフィー
ルドME3には、1番エントリと連結可能であることを
示す、 ME3=“01000000”が格納される。
また、どのエントリとも連結できないときは、MEn=
オール“0”になる。125−0〜7は、アドレス一致
検出論理15bの出力であり、連結可能な既存のエント
リを示し、125−0は0番エントリと連結可能を示
し、以下順に、125−7が7番エントリと連結可能を
示す。
【0083】図18中の表は、入力A(信号103)、
B(信号125−0〜7)による出力Oの値を示す。例
えば、AB=“00”のとき、O=0になり、AB=
“01”のとき、O=1になる。O=0、1、2に応じ
て、セレクタ501は入力“0”、入力“1”(10
3)、入力“2”(125−0〜7)を選択する。
【0084】103(0)は、信号線103の0ビット
目を表し、以下順に、(7)は7ビット目を表す。信号
線103は、セット信号生成論理5b(図17)から出
力されるもので、前述した実施例2と同様に(図1
6)、後段ストアバッファ2cに入力されるストアデー
タのエントリの番号が出力される。例えば、信号線10
3の0ビット目が“1”であるときは、入力ストアデー
タは、データフィールド58bの0番エントリに入力さ
れる。
【0085】MEnの値は、上記したセット信号10
3、信号線125−0〜7の値により以下のようにセッ
トされる。なお、!=は等しくないことを表す。 (1)信号線103=オール“0”(つまり、後段スト
アバッファに入力がない) このとき、信号線125−0〜7=オール“0”、すな
わち、AB=“00”によって、O=“0”となり、M
Enは過去の値を保持する。 (2)信号線103!=オール“0”かつ、信号線12
5−0〜7=オール“0”(つまり、後段ストアバッフ
ァに入力があり、連結エントリがない場合) (a)信号線103=“1”のエントリは、AB=“1
0”であるから、O=2となり、セレクタ501は、信
号線125−0〜7の値を選択し、従って、MEn=オ
ール“0”となる。 (b)信号線103=“0”のエントリは、AB=“0
0”であるから、O=0となり、セレクタ501は、
“0”を選択し、MEnは過去の値を保持する。 (3)信号線103!=オール“0”、かつ、信号線1
25−0〜7!=オール“0”(つまり、後段ストアバ
ッファに入力があり、連結エントリがある場合) (a)信号線103=“1”のエントリは、AB=“1
0”であるから、O=2となり、セレクタ501は、信
号線125−0〜7の値を選択し、従って、MEnは連
結エントリを保持する。例えば、信号線103(0)=
“1”、つまり0番エントリが“1”であるとき、ME
0が選択されて、例えば信号線125−1が“1”(つ
まり、連結可能なエントリが1番エントリ)であれば、
ME0には、ME0=“01000000”がセットさ
れる。 (b)信号線103=“0”かつ、信号線125−0〜
7=“0”のエントリは、AB=“00”であるから、
O=0となり、セレクタ501は、“0”を選択し、M
Enは過去の値を保持する。 (c)信号線103=“0”かつ、信号線125−0〜
7!=“0”のエントリは、AB=“01”であるか
ら、O=1となり、セレクタ501は、セット信号10
3−0〜7を選択し、MEnにセット信号103−0〜
7を保持する。上記した(3)の(a)の例では、信号
線125−1=“1”であるので、1番エントリのME
1が選択され、ME1にセット信号103(0)、つま
り0番エントリがセットされ、ME1=“100000
00”となる。
【0086】この結果、上記した例では、連結エントリ
バッファ16には、 ME0=“01000000” ME1=“10000000” がセットされ、0番エントリと1番エントリが連結可能
であることが示される。
【0087】図19は、実施例3のアドレス一致検出論
理15bの構成を示す図である。データ併合が可能であ
るか否かはストアアドレスの上位29ビットを比較すれ
ばよい。また、データ書き込み幅が本実施例では128
ビット(16バイト)であるので、連結可能であるか否
かはストアアドレスの上位28ビットを比較すればよ
い。
【0088】64−0〜7は、データ併合が可能である
か否かを判定する29ビットのアドレス比較器、65−
0〜7は、連結可能であるか否かを判定する28ビット
のアドレス比較器である。117はストアアドレス、1
19−0〜7は、アドレスフィールド57bの内容、1
24−0〜7は有効ビット59の内容である。118−
0〜7は、アドレスが一致しデータ併合が可能なエント
リを示す。125−0〜7は、アドレスが一致し連結可
能なエントリを示す。
【0089】アドレス比較器64−0〜7は、enab
le(124−0〜7)が“1”(有効)であるとき、
ストアアドレス117の0〜28ビットと、アドレスフ
ィールド57bの内容119−0〜7をそれぞれ比較す
る。アドレスが一致したならば、“1”を出力し、不一
致ならば“0”を出力する。enableが“0”(無
効)の時は“0”を出力する。
【0090】同様に、アドレス比較器65−0〜7は、
enable(124−0〜7)が“1”(有効)であ
るとき、ストアアドレス117の0〜27ビットと、ア
ドレスフィールド57bの内容119-0〜7の0〜2
7ビットをそれぞれ比較する。アドレスが一致したなら
ば、“1”、不一致ならば“1”を出力する。enab
leが“0”(無効)の時は“0”を出力する。
【0091】図20は、実施例3の後段ストアバッファ
2cの構成を示す図である。実施例2の構成にさらに、
データセレクタ68と、バイトセレクタ63bを付加し
て構成されている。データセレクタ68への入力104
(28)は、信号線104(SCMストアアドレス)の
28ビット目を表す。
【0092】図21は、データセレクタ68の構成を示
す図である。60k、60lは、データフィールド58
bの出力305を選択するセレクタであり、60mは連
結エントリのセレクタであり、67はリードポインタ入
れ換え論理である。104(28)はストアアドレス1
04の28ビット目の値(“1”または“0”)であ
る。302−0〜1は選択されたストアデータ、303
−0〜1は、データセレクタ68内のリードポインタで
あり、303−0が下位側のリードポインタ、303−
1が上位側のリードポインタである。
【0093】同時に2つのエントリを掃き出し可能なよ
うに、データセレクタは2個設けられている。すなわ
ち、データセレクタ60kは下位アドレスのデータを選
択し、データセレクタ60lは上位アドレスのデータを
選択する。
【0094】同時に掃き出すエントリは、掃き出しエン
トリ306が示すエントリ(これは掃き出し要求111
によって決まる)と、そのエントリ306と連結可能な
エントリである。セレクタ60mは、掃き出しエントリ
306の値を基に信号線126−0〜7を選択して、当
該エントリと連結可能なエントリ番号を出力する。つま
り、掃き出しエントリ306の値を持つ連結エントリフ
ィールドMEnを参照して、掃き出しエントリ306と
連結可能なエントリ番号を出力する。
【0095】本実施例では、SCMのデータ書き込みパ
スは128ビット(16バイト)幅であり、後段ストア
バッファ2cのデータフィールドが64ビット(8バイ
ト)幅であるので、ストアアドレスによってデータをS
CMのデータ書き込みパスの上位側アドレスに載せる場
合と、下位側アドレスに載せる場合がある。
【0096】掃き出しエントリ306が示すエントリの
ストアアドレスは、図20に示すセレクタ60jによっ
て選択され、ストアアドレス104に出力される。この
ストアアドレス104の28ビット目の信号線104
(28)の値が“1”のとき、掃き出しエントリ306
のデータを上位側に載せる。そして、連結エントリ(信
号線126−0〜7)が示すエントリのデータは下位側
に載せる。
【0097】逆に、信号線104(28)の値が“0”
ならば、掃き出しエントリ306が示すエントリのデー
タを下位側に、連結エントリが示すエントリのデータを
上位側に載せる。
【0098】リードポインタ入れ換え論理67は、上記
の条件に基づいてデータセレクタ68内のリードポイン
タ303−0〜1を生成する。連結エントリは、前述し
たように、セレクタ60mによって掃き出しエントリ3
06を基に、連結エントリバッファ16の出力126−
0〜7を選択する。リードポインタ入れ換え論理67の
動作は以下の通りである。
【0099】(1)信号線104(28)=“1”のと
き(入力306、126−0〜7の“1”側の入力を選
択) リードポインタ303−0には、セレクタ60mの出力
(連結エントリ126−0〜7)が選択され、セレクタ
60kに出力され、リードポインタ303−1には、掃
き出しエントリ306が選択されてセレクタ60lに出
力される。従って、掃き出しエントリ306のデータ5
8bがセレクタ60lで選択されて上位側に置かれ、連
結エントリのデータ58bがセレクタ60kで選択され
て下位側に置かれ、データ302−0〜1となる。
【0100】(2)信号線104(28)=“0”のと
き(入力306、126−0〜7の“0”側の入力を選
択) リードポインタ303−0には、掃き出しエントリ30
6が選択されてセレクタ60kに出力され、リードポイ
ンタ303−1には、セレクタ60mの出力(連結エン
トリ)が選択されてセレクタ60lに出力される。従っ
て、掃き出しエントリ306のデータが下位側に置か
れ、連結エントリのデータが上位側に置かれて、データ
302−0〜1となる。
【0101】図22は、バイトセレクタ63bの構成を
示す図である。60r、60qは、リードポインタ30
3−0〜1を基に、後段バイトマスクバッファの内容1
16−0〜7から掃き出すエントリのバイトマスク30
4−0〜1を取り出すセレクタである。60n、60p
は、バイトマスク304−0〜1の値を基に有効なバイ
ト位置のデータを取り出すセレクタである。
【0102】例えば、掃き出しエントリ306のデータ
58bが上位側にあるときは、リードポインタ303−
1によってセレクタ60rが働き、掃き出しエントリ3
06に対応するバイトマスクを選択し、セレクタ60p
に出力する。セレクタ60pは、掃き出しエントリ30
6のデータ58bの内、バイトマスク304−1で指示
された有効なバイト位置のデータを取り出し、SCMス
トアデータ105として出力する。
【0103】〈実施例4〉次に、実施例4について説明
する。キャッシュミスにより処理が止まることを回避す
る目的で、キャッシュメモリからではなく直接主記憶か
らデータを読み込み、ロードデータの到着を待たずに次
の処理に移ることができるロード命令を導入する。本実
施例では、このロード命令をpreload命令と呼ぶ
ことにする。preload命令は大量のデータを扱う
場合に有利である。
【0104】しかし、同じアドレスに対するストア命令
とpreload命令があった場合、前のストア命令を
preload命令が追い越してしまうと、prelo
ad命令は間違ったデータを読み込んでしまう。そこ
で、主記憶を参照する命令間の順序性を保障する必要が
ある。
【0105】図23は、本発明の実施例4の構成を示す
図である。17は本実施例によって設けられたロードス
トアバッファである。ロードストアバッファ17は、p
reload命令とストア命令を保持するFIFO型の
バッファである。
【0106】図24は、ロードストアバッファの構成を
示す図である。66は命令フィールドOPである。命令
フィールド66は、当該エントリの命令がpreloa
d命令かストア命令かを示す。
【0107】ロードストアバッファ17は、本実施例で
は、8段のエントリからなり、各エントリは32ビット
のアドレスフィールド、64ビットのデータフィール
ド、命令フィールドOPからなる。ストアアドレスとデ
ータは信号線108から入力され、命令は信号線127
から入力され、ライトエントリ122の示すエントリに
書き込む。このとき、preload命令ならば、デー
タフィールドの値は意味を持たない。一方、ロードスト
アバッファ17からの掃き出しは、リードエントリ12
3の示すエントリの、アドレス、データ、命令をセレク
タ60eで選択する。
【0108】選択した命令がpreload命令なら
ば、主記憶に対して該命令が出力されるだけで、パイプ
ライン遅延論理3には出力されない。ストア命令なら
ば、前述した実施例と同様に、主記憶に書き込むと同時
に、パイプライン遅延論理3に送りSCMヒット判定を
行う。
【0109】
【発明の効果】以上、説明したように、本発明によれ
ば、ストアバッファの入力と出力のピッチを一致させる
ことができるので、ストアバッファに空きがなくなる状
態の発生を低減することができ、その結果、CPUの性
能低下を防ぐ効果がある。また、キャッシュヒットする
ストア命令のみストアバッファに入力するので、ストア
バッファを効率よく使用できる効果がある。さらに、複
数のストア命令によるデータ書き込みを同時に処理でき
るので、スループットを向上する効果がある。また、ス
トアスルー方式のキャッシュメモリを採用した場合、ス
トアバッファへの入力と主記憶への書き込みピッチが一
致するので、主記憶に繋がるバスを効率よく使用できる
効果がある。
【図面の簡単な説明】
【図1】本発明の実施例1の構成を示す図である。
【図2】実施例1の前段ストアバッファの構成を示す図
である。
【図3】SCMヒット判定論理の動作例を示す図であ
る。
【図4】実施例1のセット信号生成論理の構成を示す図
である。
【図5】リードライトポインタの構成を示す図である。
【図6】実施例1の後段ストアバッファの構成を示す図
である。
【図7】実施例1の動作例を示す図である。
【図8】本発明の実施例2の構成を示す図である。
【図9】実施例2の前段ストアバッファの構成を示す図
である。
【図10】実施例2の前段バイトマスクバッファの構成
を示す図である。
【図11】バイトマスク更新論理の構成を示す図であ
る。
【図12】後段バイトマスクバッファの構成を示す図で
ある。
【図13】実施例2の後段ストアバッファの構成を示す
図である。
【図14】バイトセレクタの構成を示す図である。
【図15】アドレス一致論理の構成を示す図である。
【図16】実施例2のセット信号生成論理の構成を示す
図である。
【図17】本発明の実施例3の構成を示す図である。
【図18】連結エントリバッファの構成を示す図であ
る。
【図19】実施例3のアドレス一致論理の構成を示す図
である。
【図20】実施例3の後段ストアバッファの構成を示す
図である。
【図21】データセレクタの構成を示す図である。
【図22】バイトセレクタの構成を示す図である。
【図23】本発明の実施例4の構成を示す図である。
【図24】ロードストアバッファの構成を示す図であ
る。
【図25】本発明の実施対象となる情報処理装置の構成
図である。
【図26】ダイレクトマッピング法を説明する図であ
る。
【符号の説明】
1a〜b 前段ストアバッファ 2a〜c 後段ストアバッファ 3 SCMヒット判定論理 4 主記憶 5a、b セット信号生成論理 6 データアレイ 7 アドレスアレイ 8 パイプライン遅延論理 9 アドレス比較器 11 前段バイトマスクバッファ 12 後段バイトマスクバッファ 13 バイトマスク遅延論理 14 バイトマスク更新論理 15a、b アドレス一致検出論理 16 連結エントリバッファ 17 ロードストアバッファ 51 後段ストアバッファライトポインタ 52 更新論理 53 アドレスフィールド 54a、b データフィールド 55 リードライトポインタ 56a ライトポインタ用ラッチ 56b リードポインタ用ラッチ 57a、b 後段ストアバッファアドレスフィールド 58a、b 後段ストアバッファデータフィールド 59 有効ビット 60a〜r セレクタ 61 後段ストアバッファリードポインタ 62 後段ストアバッファリードポインタ用ラッチ 63a、b バイトセレクタ 64、65 アドレス比較器 66 命令フィールド 67 リードポインタ入れ換え論理 68 データセレクタ 69 デコーダ 71 命令実行部 72 1次キャッシュメモリ(FCM) 73 ストアバッファ 74 CPU 75 2次キャッシュメモリ(SCM) 91a〜f ラッチ 101 SCMアドレスアレイ参照アドレス 102 SCMアドレスアレイの内容 103 セット信号 104 SCMストアアドレス 105 SCMストアデータ 106 主記憶書き込みアドレスとデータ 107 SCMヒット判定結果 108 ストアアドレスとデータ 109 前段ストアバッファから出力したストアアドレ
スとデータ 110 遅延したストアアドレスとデータ 111 掃き出し要求 112 前段バイトマスク入力 113 前段バイトマスク出力 114 バイトマスク遅延論理出力 115−0〜7 後段バイトマスク入力 116−0〜7 後段バイトマスク出力 117 アドレス一致入力 118−0〜7 アドレス一致出力 119−0〜7 アドレスフィールドの内容 121 データ併合の有無 122 ライトエントリ 123 リードエントリ 124−0〜7 有効ビット 125−0〜7 連結エントリ 126−0〜7 連結エントリバッファ出力 127 命令 128 ライト要求 129 リード要求 301、302 セレクトしたデータ 303 セレクト信号 305 データフィールド 306 掃き出しエントリ 307 データフィールドセット信号 308 選択したバイトマスク
───────────────────────────────────────────────────── フロントページの続き (72)発明者 釜田 栄樹 神奈川県秦野市堀山下1番地 株式会社日 立製作所汎用コンピュータ事業部内 (72)発明者 磯部 敏子 神奈川県秦野市堀山下1番地 日立コンピ ュータエンジニアリング株式会社内 (72)発明者 山本 敬 神奈川県秦野市堀山下1番地 株式会社日 立製作所汎用コンピュータ事業部内 (72)発明者 上原 克利 神奈川県秦野市堀山下1番地 株式会社日 立製作所汎用コンピュータ事業部内

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 演算実行部から出力され、主記憶装置お
    よびキャッシュメモリに書き込むストアアドレスとスト
    アデータとの対を一時保持する複数エントリからなる第
    1のバッファ手段と、該第1のバッファ手段から取り出
    したストアアドレスとストアデータとの対が入力され、
    前記キャッシュメモリとのヒット判定をパイプライン的
    に行うヒット判定手段と、該ヒット判定の結果、キャッ
    シュヒットと判定されたストアアドレスとストアデータ
    との対を一時保持する複数エントリからなる第2のバッ
    ファ手段と、を備えたことを特徴とするストアバッファ
    装置。
  2. 【請求項2】 前記第1、第2のバッファ手段の1エン
    トリ全てを使用しないデータ長のストアデータを保持す
    るために、該第1、第2のバッファ手段のエントリ内で
    有効なデータ位置を示す情報を記憶した手段と、前記第
    2のバッファ手段に入力される第1のストアデータが、
    該第2のバッファ手段に既に存在する第2のストアデー
    タと同一エントリに併合可能であるか否かを判定する手
    段と、該手段により併合可能と判定されたとき、該第1
    のストアデータを該第2のストアデータと併合して該同
    一エントリに書き込む手段と、該書き込みに応じて、前
    記記憶された、第2のバッファ手段のエントリ内で有効
    なデータ位置を示す情報を更新する手段と、を備えたこ
    とを特徴とする請求項1記載のストアバッファ装置。
  3. 【請求項3】 前記第2のバッファ手段に入力される第
    1のストアデータが、該第2のバッファ手段に既に存在
    する第2のストアデータと連結可能であるか否かを判定
    する手段と、該手段により連結可能と判定されたとき、
    連結する前記各ストアデータのエントリ番号を記憶する
    手段と、該記憶されたエントリ番号を基に、前記第2の
    バッファ手段内の複数エントリのストアデータを連結し
    て前記キャッシュメモリに掃き出す手段と、を備えたこ
    とを特徴とする請求項1記載のストアバッファ装置。
JP7266947A 1995-10-16 1995-10-16 ストアバッファ装置 Pending JPH09114734A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP7266947A JPH09114734A (ja) 1995-10-16 1995-10-16 ストアバッファ装置
US08/729,837 US5845321A (en) 1995-10-16 1996-10-15 Store buffer apparatus with two store buffers to increase throughput of a store operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7266947A JPH09114734A (ja) 1995-10-16 1995-10-16 ストアバッファ装置

Publications (1)

Publication Number Publication Date
JPH09114734A true JPH09114734A (ja) 1997-05-02

Family

ID=17437905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7266947A Pending JPH09114734A (ja) 1995-10-16 1995-10-16 ストアバッファ装置

Country Status (2)

Country Link
US (1) US5845321A (ja)
JP (1) JPH09114734A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010191638A (ja) * 2009-02-17 2010-09-02 Fujitsu Semiconductor Ltd キャッシュ装置
JP2013536526A (ja) * 2010-08-20 2013-09-19 アップル インコーポレイテッド フラッシュ指標を動的に調整可能な結合書き込みバッファ

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146836A (ja) * 1995-11-21 1997-06-06 Kofu Nippon Denki Kk キャッシュ索引の障害訂正装置
US6434665B1 (en) * 1999-10-01 2002-08-13 Stmicroelectronics, Inc. Cache memory store buffer
US6658505B2 (en) * 2001-06-05 2003-12-02 Hewlett-Packard Development Company, L.P. System and method for checking bits in a buffer with multiple entries
US7469314B2 (en) * 2005-03-10 2008-12-23 International Business Machines Corporation Magnetic tape write once overwrite protection
KR101312281B1 (ko) * 2007-11-06 2013-09-30 재단법인서울대학교산학협력재단 프로세서 및 메모리 제어 방법
US9405683B2 (en) * 2007-11-06 2016-08-02 Samsung Electronics Co., Ltd. Processor and memory control method for allocating instructions to a cache and a scratch pad memory
US8090931B2 (en) * 2008-09-18 2012-01-03 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US20100250850A1 (en) * 2009-03-25 2010-09-30 Faraday Technology Corp. Processor and method for executing load operation and store operation thereof
US11403229B2 (en) 2019-05-24 2022-08-02 Texas Instruments Incorporated Methods and apparatus to facilitate atomic operations in victim cache
US20220382546A1 (en) * 2021-05-31 2022-12-01 Andes Technology Corporation Apparatus and method for implementing vector mask in vector processing unit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4195340A (en) * 1977-12-22 1980-03-25 Honeywell Information Systems Inc. First in first out activity queue for a cache store
JPS5953631B2 (ja) * 1979-08-24 1984-12-26 株式会社日立製作所 記憶制御装置
US4467414A (en) * 1980-08-22 1984-08-21 Nippon Electric Co., Ltd. Cashe memory arrangement comprising a cashe buffer in combination with a pair of cache memories
JPS58133696A (ja) * 1982-02-03 1983-08-09 Hitachi Ltd 記憶制御方式
JPH0437935A (ja) * 1990-06-01 1992-02-07 Hitachi Ltd キャッシュメモリを有する計算機
US5510973A (en) * 1991-08-15 1996-04-23 Fujitsu Limited Buffer storage control system
JPH0546475A (ja) * 1991-08-15 1993-02-26 Fujitsu Ltd バツフア記憶制御方式
US5644748A (en) * 1992-01-30 1997-07-01 Fujitsu Limited Processor system including an index buffer circuit and a translation look-aside buffer control circuit for processor-to-processor interfacing
KR960006484B1 (ko) * 1992-09-24 1996-05-16 마쯔시다 덴기 산교 가부시끼가이샤 캐쉬메모리장치
US5659709A (en) * 1994-10-03 1997-08-19 Ast Research, Inc. Write-back and snoop write-back buffer to prevent deadlock and to enhance performance in an in-order protocol multiprocessing bus

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010191638A (ja) * 2009-02-17 2010-09-02 Fujitsu Semiconductor Ltd キャッシュ装置
JP2013536526A (ja) * 2010-08-20 2013-09-19 アップル インコーポレイテッド フラッシュ指標を動的に調整可能な結合書き込みバッファ

Also Published As

Publication number Publication date
US5845321A (en) 1998-12-01

Similar Documents

Publication Publication Date Title
US7240159B2 (en) Data processor having cache memory
US4583165A (en) Apparatus and method for controlling storage access in a multilevel storage system
US5680564A (en) Pipelined processor with two tier prefetch buffer structure and method with bypass
US7370150B2 (en) System and method for managing a cache memory
US7809924B2 (en) System for generating effective address
US5896529A (en) Branch prediction based on correlation between sets of bunches of branch instructions
US6272596B1 (en) Data processor
JPH06222990A (ja) データ処理装置
JPH09114734A (ja) ストアバッファ装置
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US5117493A (en) Pipelined register cache
KR100233898B1 (ko) Cpu와 메인메모리 사이에 마련된 캐시 메모리의 제어방식
US4992932A (en) Data processing device with data buffer control
US6678789B2 (en) Memory device
US7028151B2 (en) Information processing device equipped with improved address queue register files for cache miss
EP0442690A2 (en) Data cache store buffer for high performance computer
US4737908A (en) Buffer memory control system
US5349672A (en) Data processor having logical address memories and purge capabilities
US6671781B1 (en) Data cache store buffer
JPH0746323B2 (ja) 部分書込みアクセスを圧縮する主記憶装置
US5765220A (en) Apparatus and method to reduce instruction address storage in a super-scaler processor
JPH07234819A (ja) キャッシュメモリ
JPH0836525A (ja) 多重アクセスキャッシュ記憶装置
JPS5991552A (ja) セツトアソシアテイブ型分岐ヒストリテ−ブルを有する命令先取り装置
JPS6336536B2 (ja)