JPH0962571A - メモリバッファ装置 - Google Patents

メモリバッファ装置

Info

Publication number
JPH0962571A
JPH0962571A JP7237654A JP23765495A JPH0962571A JP H0962571 A JPH0962571 A JP H0962571A JP 7237654 A JP7237654 A JP 7237654A JP 23765495 A JP23765495 A JP 23765495A JP H0962571 A JPH0962571 A JP H0962571A
Authority
JP
Japan
Prior art keywords
data
memory
buffer
store
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.)
Granted
Application number
JP7237654A
Other languages
English (en)
Other versions
JP3614946B2 (ja
Inventor
Atsushi Kawai
淳 河井
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP23765495A priority Critical patent/JP3614946B2/ja
Publication of JPH0962571A publication Critical patent/JPH0962571A/ja
Application granted granted Critical
Publication of JP3614946B2 publication Critical patent/JP3614946B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

(57)【要約】 【課題】 ローコスト化と消費電力の低減化、かつ、プ
ログラム実行性能を向上させることのできるメモリバッ
ファ装置を実現する。 【解決手段】 ロードバッファ部100は、バッファヒ
ットの場合は、これをCPU300に返送し、バッファ
ミスの場合は、メモリ装置400より読み出し、そのデ
ータを複数語の独立に読み書き可能なレジスタに格納す
る。ストアバッファ部200は、CPU300からメモ
リ装置400への書き込み要求に対して、ストアデータ
バッファ部201の先入れ先出しバッファ内に、該当デ
ータか、その同一メモリブロックのデータが存在する場
合は、該当データを格納する。該当データが、先入れ先
出しバッファ内のデータとは異なるメモリブロックであ
った場合は、先入れ先出しバッファに格納されているデ
ータを全てメモリ装置400に書き込む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算機におけるメ
モリ読み出し、およびメモリ書き込みのためのメモリバ
ッファ装置に関する。
【0002】
【従来の技術】既存技術による計算機では、メモリ操作
は基本的に1語、半語、あるいは1/4語単位で任意のメ
モリアドレスに対してデータ読み出し(ロード命令実
行)、およびデータ書き込み(ストア命令実行)を行
う。このため、小規模の計算機では1語のメモリレジス
タを設置し、ロード命令実行ではメモリ装置から読み出
したデータをこのレジスタに格納し、CPU(中央処理
装置)はこれを内部に取り込み、また、ストア命令実行
では書き込むべきデータを一旦レジスタに格納し、これ
をメモリ装置に書き込んでいる。このため、ロード命令
実行では、CPUの要求毎にメモリアクセス時間が命令
実行時間にそのまま反映され、ストア命令実行では、C
PUからレジスタに書き込みデータを格納するまでの時
間が命令実行時間に反映される。但し、ストア命令実行
直後にロード命令、あるいはストア命令を実行する場合
には、前のストア命令実行に伴うメモリ書き込み時間の
間、次のメモリ操作は待たされる。
【0003】大規模の計算機ではキャッシュメモリを設
置し、これを介在させてロード命令実行、およびストア
命令実行を行う。これによりCPUはキャッシュメモリ
との間で1語単位のデータ授受を行ない、また、メモリ
装置はキャッシュメモリとの間で連続するメモリアドレ
スに配置される複数語のデータ(以下データブロックと
称す)授受を行う。これにより、ロード命令で要求され
るデータがキャッシュメモリに存在する場合(以下ロー
ドキャッシュヒットと称す)には、キャッシュメモリか
らの高速なデータ応答により短時間でロード命令が完了
し、また、ストア命令では書き込むべきデータを含むデ
ータブロックがキャッシュメモリに存在する場合(以下
ストアキャッシュヒットと称す)には、キャッシュメモ
リへのデータ書き込みのみ実行することでストア命令を
完了させることが可能である。
【0004】ロード命令実行においてロードキャッシュ
ヒットでない場合(以下ロードキャッシュミスと称
す)、あるいはストア命令実行においてストアキャッシ
ュヒットでない場合(以下ストアキャッシュミスと称
す)には小規模の計算機と同様にメモリ装置のアクセス
時間が命令実行時間、あるいは直後のメモリ操作に反映
される。
【0005】
【発明が解決しようとする課題】上記のように、従来技
術による計算機におけるメモリ操作では、小規模の計算
機ではロード命令毎にメモリ装置のアクセス時間が命令
実行時間に直接反映され、また、ストア命令実行に伴う
メモリ書き込み動作のためにこれに連続するロード命
令、あるいはストア命令の実行は待たされてしまうた
め、メモリ操作命令の実行時間による性能低下の問題が
大きい。かつ、1語単位のメモリ操作であるためDRAMデ
バイスに用意される高速ページアクセス等の連続語に渡
るメモリ操作によるメモリスループットの向上は活かさ
れない。特に、最近の高動作周波数のCPUではCPU
内部のみで実行される命令実行時間と、メモリ操作命令
の実行時間の差が大きくなる傾向で、このことがCPU
動作周波数の向上にもかかわらずプログラム実行性能が
延びない原因となっている。
【0006】一方、大規模の計算機ではキャッシュメモ
リを設置することにより上記CPU動作とメモリ動作の
ギャップを埋めているが、キャッシュメモリをCPUと
同一のLSIに内蔵することによるチップサイズ、チッ
プコスト、および消費電力の増大、あるいはキャッシュ
メモリをCPU−LSI外部に設置することによる装置
コスト、装置容積、および消費電力の増大が問題となっ
ている。更に、CPU動作周波数の向上に伴い、キャッ
シュメモリのアクセス時間がこれに追従できず、キャッ
シュメモリを設置しながらもメモリ操作命令実行のため
のクロックサイクル数の増大を招いている。
【0007】このような点から、ローコスト化および消
費電力の低減化が図れ、かつ、プログラム実行性能を向
上させることのできるメモリバッファ装置を実現するこ
とが望まれていた。
【0008】
【課題を解決するための手段】第1発明のメモリバッフ
ァ装置は、前述の課題を解決するために、メモリ装置か
らデータ読み出しのためのロードバッファ部と、メモリ
装置への書き込みのためのストアバッファ部とを備え、
ロードバッファ部は、一メモリブロック分のデータを格
納するための複数語の独立に読み書き可能なレジスタを
有するロードデータバッファ部と、中央処理装置からの
メモリ装置へのデータ読み出し要求に対して、レジスタ
内のいずれかに該当データが存在する場合は、これを中
央処理装置に返送し、どのレジスタにも該当データが存
在しない場合は、メモリ装置より、読み出し要求のデー
タのメモリアドレスから連続して同一メモリブロックの
最終アドレスまでのデータを読み出して、これらを順
次、レジスタに格納するロードバッファ制御部とからな
り、ストアバッファ部は、一メモリブロック分のデータ
として複数語を格納する先入れ先出しバッファを備えた
ストアデータバッファ部と、中央処理装置からのメモリ
装置への書き込み要求に対して、先入れ先出しバッファ
内に、該当データが存在する場合はこれを更新すると共
に、格納位置を最後尾とし、該当データの同一メモリブ
ロックのデータが存在する場合は、該当データを最後尾
に格納し、先入れ先出しバッファ内のデータが、該当デ
ータのメモリブロックとは異なるメモリブロックであっ
た場合は、先入れ先出しバッファに格納されているデー
タを全てメモリ装置に書き込むと共に、該当データを先
入れ先出しバッファの先頭位置に格納するストアバッフ
ァ制御部とからなることを特徴とするものである。
【0009】第1発明のメモリバッファ装置がこのよう
に構成されていることにより、ロードバッファ部は、中
央処理装置からのメモリ装置へのデータ読み出し要求に
対して、レジスタ内のいずれかに該当データが存在する
場合は、これを中央処理装置に返送する。一方、どのレ
ジスタにも該当するデータが存在しない場合は、メモリ
装置より、読み出し要求のデータのメモリアドレスから
連続して同一メモリブロックの最終アドレスまでのデー
タを読み出して、これらを順次、レジスタに格納する。
また、ストアバッファ部は、中央処理装置からのメモリ
装置への書き込み要求に対して、先入れ先出しバッファ
内に、該当データが存在する場合はこれを更新すると共
に、格納位置を最後尾とする。書き込み要求のデータの
同一メモリブロックのデータが、先入れ先出しバッファ
内に存在する場合は、該当データをその最後尾に格納す
る。一方、先入れ先出しバッファ内のデータが、該当デ
ータのメモリブロックとは異なるメモリブロックであっ
た場合は、先入れ先出しバッファに格納されているデー
タを全てメモリ装置に書き込むと共に、その該当データ
を先入れ先出しバッファの先頭位置に格納する。
【0010】第2発明のメモリバッファ装置は、前述の
課題を解決するために、メモリ装置からデータ読み出し
のためのロードバッファ部と、メモリ装置への書き込み
のためのストアバッファ部とを備え、ロードバッファ部
は、一メモリブロック分のデータを格納するための複数
語の独立に読み書き可能なレジスタを有するロードデー
タバッファ部と、中央処理装置からのメモリ装置へのデ
ータ読み出し要求に対して、レジスタ内のいずれかに該
当データが存在する場合は、これを中央処理装置に返送
し、どのレジスタにも該当データが存在しない場合は、
メモリ装置より、読み出し要求のデータのメモリアドレ
スを含む同一メモリブロック全体のデータを読み出し
て、これらを順次、レジスタに格納するロードバッファ
制御部とからなり、ストアバッファ部は、一メモリブロ
ック分のデータとして複数語を格納する先入れ先出しバ
ッファを備えたストアデータバッファ部と、中央処理装
置からのメモリ装置への書き込み要求に対して、先入れ
先出しバッファ内に、該当データが存在する場合はこれ
を更新すると共に、格納位置を最後尾とし、該当データ
の同一メモリブロックのデータが存在する場合は、該当
データを最後尾に格納し、先入れ先出しバッファ内のデ
ータが、該当データのメモリブロックとは異なるメモリ
ブロックであった場合は、先入れ先出しバッファに格納
されているデータを全てメモリ装置に書き込むと共に、
該当データを先入れ先出しバッファの先頭位置に格納す
るストアバッファ制御部とからなることを特徴とするも
のである。
【0011】第2発明のメモリバッファ装置がこのよう
に構成されていることにより、ロードバッファ部は、中
央処理装置からのメモリ装置へのデータ読み出し要求に
対して、レジスタ内のいずれかに該当データが存在する
場合は、これを中央処理装置に返送する。一方、どのレ
ジスタにも該当するデータが存在しない場合は、メモリ
装置より、読み出し要求のデータのメモリアドレスを含
む同一メモリブロック全体のデータを読み出して、これ
らを順次、レジスタに格納する。また、ストアバッファ
部の動作は、第1発明と同様である。
【0012】第3発明のメモリバッファ装置は、前述の
課題を解決するために、第1または第2発明のメモリバ
ッファ装置において、中央処理装置からのメモリ装置へ
のデータ書き込み要求に対して、該当データが、ロード
データバッファ部内のレジスタのいずれかに存在する場
合は、このデータを更新するロードバッファ制御部を備
えたことを特徴とするものである。
【0013】第3発明がこのように構成されていること
により、中央処理装置からのメモリ装置へのデータ書き
込み要求があった場合、該当データが、ロードデータバ
ッファ部内のレジスタのいずれかに存在した場合は、そ
の都度、メモリ装置に書き込まず、ロードデータバッフ
ァ部内のデータのみを更新する。
【0014】
【発明の実施の形態】以下、本発明の実施の形態を図面
を用いて詳細に説明する。 《実施形態1》 [構成]図1は本発明のメモリバッファ装置の実施形態
1および後述する実施形態2を示す構成図である。図の
装置は、メモリバッファ装置を構成するロードバッファ
部100とストアバッファ部200、および中央処理装
置(以下、CPUという)300とメモリ装置400を
示している。
【0015】ロードバッファ部100は、主としてCP
U300からのロード命令(メモリ読み出し命令)実行
時に働き、ストアバッファ部200は、CPU300か
らのストア命令(メモリ書き込み命令)実行時に働く。
即ち、ロードバッファ部100は、一メモリブロック分
のデータを格納するための複数語の独立に読み書き可能
なレジスタを有するロードデータバッファ部101と、
CPU300からのメモリ読み出し要求に対して、複数
のレジスタ内のいずれかに該当データが存在する場合
は、これをCPU300に返送し、どのレジスタにも該
当データが存在しない場合は、メモリ装置400より、
読み出し要求のデータのメモリアドレスから連続して同
一メモリブロックの最終アドレスまでのデータを読み出
して、これらを順次、レジスタに格納するロードバッフ
ァ制御部102とからなる。
【0016】ロード命令実行時はCPU300からロー
ドバッファ部100に対してリクエスト信号をアサート
し(“1”を出力し)、リード/ライト信号をネゲート
し(“0”を出力し)、更に所定のメモリアドレスにな
るようにアドレスを出力する。ロードバッファ部100
ではこれに応えて、アクノレッジ信号をアサートすると
共に、CPU300の要求するロードデータをCPU3
00に出力する。ロード命令実行時で、メモリ装置40
0からデータ読み出しを行う場合にはロードバッファ部
100からメモリ装置400に対してメモリリクエスト
をアサートし、メモリリード/ライト信号をネゲート
し、更に所定のメモリアドレスになるようにメモリアド
レスを出力する。メモリ装置400はこれに応えて、メ
モリアクノレッジ信号をアサートすると共に、ロードバ
ッファ部100の要求するリードデータをロードバッフ
ァ部100に出力する。
【0017】また、ストアバッファ部200は、一メモ
リブロック分のデータとして複数語を格納する先入れ先
出しバッファを備えたストアデータバッファ部201
と、CPU300からメモリ装置400への書き込み要
求に対して、先入れ先出しバッファ内に、該当データが
存在する場合はこれを更新すると共に、格納位置を最後
尾とし、該当データの同一メモリブロックのデータが存
在する場合は、該当データを最後尾に格納し、先入れ先
出しバッファ内のデータが、該当データのメモリブロッ
クとは異なるメモリブロックであった場合は、先入れ先
出しバッファに格納されているデータを全てメモリ装置
400に書き込むと共に、該当データを先入れ先出しバ
ッファの先頭位置に格納するストアバッファ制御部20
2とを備えている。
【0018】ストア命令実行時はCPU300からスト
アバッファ部200に対してリクエスト信号をアサート
し(“1”を出力し)、リード/ライト信号をアサート
し(“1”を出力し)、書き込むべきデータ、即ち、ス
トアデータを出力し、更に所定のメモリアドレスになる
ようにアドレスを出力する。ストアバッファ部200で
はこれに応えて、アクノレッジ信号をアサートしてCP
U300に出力する。ストア命令実行時で、メモリにデ
ータ書き込みを行う場合にはストアバッファ部200か
らメモリ装置400に対してメモリリクエストをアサー
トし、メモリリード/ライト信号をアサートし、書き込
むべきデータとなるようにライトデータを出力し、更に
所定のメモリアドレスになるようにメモリアドレスを出
力する。メモリ装置400はこれに応えて、メモリアク
ノレッジ信号をアサートしてロードバッファ部100に
出力する。
【0019】図2は、ロードバッファ部100の構成図
である。ロードバッファ部100は、上記のように、ロ
ードデータバッファ部101と、ロードバッファ制御部
102とで構成されている。ロードデータバッファ部1
01は、本実施形態1では、4語のデータレジスタ(L
B0〜3)、ロードバッファ入力セレクタ101a、お
よびロードバッファ出力セレクタ101bとで構成され
るが、本発明においてはデータ語数は4語に限定される
ものではなく、1語以上任意の語数をとることが可能で
ある。
【0020】実施形態1および実施形態2では、ロード
データバッファ部101は4語のメモリデータを一時的
に格納することが可能で、メモリ装置400から読み出
した1語のデータ、あるいは連続的に読み出した2〜4
語のデータを格納する。CPU300からのロード命令
実行時に、これらのデータレジスタLB0〜3内に保存
されているデータが、CPU300からのアドレスで指
定されるメモリアドレスに格納されているデータのコピ
ーを含む場合には、メモリ装置400からデータ読み出
しは行わずに4つのデータレジスタLB0〜3の出力の
うち、CPU300で指定されるデータを格納する1つ
をロードバッファ出力セレクタ101bにて選択し、ロ
ードデータとしてCPU300に出力する。
【0021】また、ストア命令実行時において、そのス
トアデータのメモリアドレスと同一のメモリアドレスか
らデータを読み出し、データレジスタLB0〜3にその
データを格納してある場合には、データの一致性を保つ
ために新たなストアデータを該当レジスタにも格納する
必要がある。本実施形態では、以下これをストアバイパ
ス動作と記す。ロードバッファ入力セレクタ101a
は、通常のメモリ装置400からの読み出し時のリード
データとストアバイパス動作時のCPU300からのス
トアデータとのいずれかを選択してデータレジスタLB
0〜3に出力するものである。
【0022】ロードバッファ制御部102は、CPU3
00およびメモリ装置400に対する制御信号の入出力
を行うと共に、ロードデータバッファ部101の制御を
行う機能を有している。ロードバッファ制御部102か
らロードデータバッファ部101には、ストアバイパス
信号、LB0〜3セット、およびロードアドレスオフセ
ット信号が出力される。ストアバイパス信号はロードバ
ッファ入力セレクタ101aへの入力選択信号で“0”
のときリードデータを、“1”のときストアデータを選
択してLB0〜3に出力する。LB0〜3セット信号は
それぞれデータレジスタLB0〜3へのデータセット信
号であり、この信号の立ち上がりエッジで入力データが
新たに格納される。CPU300からのアドレスの下位
2ビット(以下、スモールアドレスと記す)はロードバ
ッファ出力セレクタ101bへの選択信号となり、LB
0〜3の出力のうち1つを選択する。
【0023】図3は、ロードバッファ制御部102の構
成図である。図4、図5は、それぞれ図3におけるロー
ドデータバッファ有効フラグ部およびLB0〜3セット
信号生成部の構成図である。ロードバッファ制御部10
2は、CPU300、およびメモリ装置400に対する
制御信号の入出力を行うと共に、ロードデータバッファ
部101の制御を行うもので、メモリアドレス一致検査
部102a、ロードデータバッファ有効フラグ(以下V
フラグと記す)部102b、LB0〜3セット信号生成
部102c、およびシーケンス制御部とから構成され
る。
【0024】即ち、これらの図に示すロードバッファ制
御部102は、アンド回路1〜21、オア回路31〜3
5、バッファ41〜44、ブロックアドレスバッファ4
5、オフセットアドレスバッファ46、タグレジスタ5
1、V0レジスタ(V0)〜V3レジスタ(V3)、メ
モリリクエストレジスタ52、スモールアドレスセレク
タ61、Vフラグセレクタ62、スモールアドレスデコ
ーダ71、オフセットアドレスデコーダ72、スモール
アドレスデコーダ73、オフセットアドレスカウンタ8
1、比較器91を備えている。
【0025】尚、図3中、A1はアクノレッジ、A2は
ラージアドレス(ブロックアドレス)、A3はリード/
ライト、A4はリクエスト、A5はスモールアドレスを
示す。また、B1はメモリブロックアドレス、B2はメ
モリオフセットアドレス、B3はメモリリクエスト、B
4はメモリリード/ライト、B5はメモリビジー、B6
はストアバイパス、B7はメモリアクノレッジ、B8〜
B11はLB0セット〜LB3セットを示している。
【0026】メモリアドレス一致検査部102aは、タ
グレジスタ51および比較器91とで構成される。タグ
レジスタ51は、CPU300から入力されるアドレス
のうち下位2ビットを除く信号(ラージアドレス)を一
時的に格納するレジスタで、ロードデータバッファ部1
01に格納される1〜4語のデータのメモリ装置400
上に配置されているブロックアドレスを保持する。比較
器91は、Ex−NOR回路であり、タグレジスタ51
に格納されるラージアドレス(ブロックアドレス)と、
CPU300から入力されるアドレスのうち下位2ビッ
トを除く値を比較し、両者が一致するか否かを検査す
る。つまり、ロード命令、あるいはストア命令実行時に
CPU300から入力されるブロックアドレスに配置さ
れるデータの一部あるいは全部(4語)のコピーがロー
ドデータバッファ部101に格納されているか否かを検
査するものである。以下、上記検査結果が一致する場合
をロードデータバッファヒット、そうでない場合をロー
ドデータバッファミスと記す。
【0027】Vフラグ部102bは、図4に示すよう
に、V0〜3レジスタ(V0〜3)、スモールアドレス
セレクタ61、スモールアドレスデコーダ71、アンド
回路3〜6、およびVフラグセレクタ62とで構成され
る。V0〜3レジスタ(V0〜V3)は、ロードデータ
バッファ部101のLB0〜3に格納されるメモリデー
タのコピーのうち、その内容が有効であるか否かをそれ
ぞれ示すためのV0〜3フラグを格納する部分で、ロー
ドデータヒット時にCPU300から入力されるアドレ
スの下位2ビット(以下スモールアドレスと記す)で指
定されるデータレジスタ、即ち、LB0〜3のうちのい
ずれか1つに対して該当するVフラグが“1”である場
合にはそのデータレジスタの内容が有効であることを示
すものである。
【0028】一方、該当するVフラグが“0”である場
合には、ロードデータヒット時であってもCPU300
の要求するデータはデータレジスタLB0〜3には格納
されておらず、メモリ装置400にアクセスを行い、デ
ータを読み出す必要がある。スモールアドレスセレクタ
61は、V0〜3レジスタV0〜V3のうち、Vフラグ
をセットすべきレジスタを選択するための2ビットの選
択信号を選択するもので、メモリ装置400から読み出
したデータを、データレジスタLB0〜3に格納する時
には、オフセットアドレスカウンタ81(シーケンス制
御部)の出力を選択し、また、前記ストアバイパス動作
時にはCPU300から入力されるスモールアドレスを
選択する。スモールアドレスデコーダ71は、スモール
アドレスセレクタ61の出力をデコードする。アンド回
路3〜6は、スモールアドレスデコーダ71の出力(4
出力のうち1つが“1”となる)とシーケンス制御部の
オア回路31の出力(後述)との論理積をそれぞれとる
もので、これらの出力はV0〜3レジスタV0〜V3の
セット入力にそれぞれ接続される。
【0029】オア回路31出力がアサートされた時点で
アンド回路3〜6のうちのいずれか1出力が“1”とな
り、この信号の立ち上がり時に該当するV0〜3レジス
タV0〜V3のうち1つが“1”にセットされる。V0
〜3レジスタV0〜V3の前記以外の3つはそれ以前の
内容を保存する。V0〜3レジスタV0〜V3のリセッ
ト入力はシーケンス制御部のアンド回路9の出力(メモ
リリクエストレジスタ52のセット入力:後述)に接続
され、このアンド回路9の出力がアサートされた立ち上
がり時点でV0〜3の内容は全て“0”となる。Vフラ
グセレクタ62は、V0〜3レジスタV0〜V3の4つ
の出力のうち1つを選択して出力するもので、CPU3
00から入力されるスモールアドレスを選択信号とす
る。前記ロードバッファヒット時に、このVフラグセレ
クタ63の出力が“1”の場合にはCPU300がロー
ド命令で要求するメモリデータのコピーが該当するロー
ドデータバッファ部101に格納されていることを示
す。
【0030】LB0〜3セット信号生成部102cは、
図5に示すように、オフセットアドレスデコーダ72、
スモールアドレスデコーダ73、アンド回路14〜2
1、およびオア回路32〜35とで構成され、ロードデ
ータバッファLB0〜3へのデータセット信号を生成す
るものである。
【0031】オフセットアドレスデコーダ72は、シー
ケンス制御部のオフセットアドレスカウンタ81の2ビ
ットの出力をデコードするものである。尚、オフセット
アドレスカウンタ81はメモリ装置400に対して読み
出しを行う時のメモリアドレスの下位2ビットとなるも
ので、実際にメモリ装置400からデータを読み出すメ
モリブロック内の位置(以下、これをメモリオフセット
と記す)を示す。
【0032】アンド回路14〜17は、オフセットアド
レスデコーダ72の出力(4つの出力のうちいずれか1
出力が“1”となる)と、シーケンス制御部のアンド回
路11(後述)出力との論理積をそれぞれとるもので、
メモリ装置400から読み出したリードデータをデータ
レジスタLB0〜3の該当レジスタに格納するためのセ
ット信号を生成する。
【0033】スモールアドレスデコーダ73は、CPU
300から入力される2ビットのスモールアドレスをデ
コードするもので、ストアバイパス動作時のメモリブロ
ック内のデータ書き込み位置(メモリオフセット)に相
当するデータレジスタLB0〜3のうちの1つを選択す
るものである。
【0034】アンド回路18〜21は、スモールアドレ
スデコーダ73の出力(4つの出力のうちいずれか1出
力が“1”となる)と、シーケンス制御部のアンド回路
13(後述)出力との論理積をそれぞれとるもので、ス
トアバイパス動作時にCPU300から入力されるスト
アデータをバイパスしてデータレジスタLB0〜3の該
当レジスタに格納するためのセット信号を生成する。オ
ア回路32〜35は、アンド回路14〜17、およびア
ンド回路18〜21の出力の論理和をそれぞれとるもの
で、オア回路32〜35の出力がLB0〜3セット信号
としてデータレジスタLB0〜3にそれぞれ出力され
る。
【0035】シーケンス制御部は、CPU300および
メモリ装置400に対する制御信号の入出力、メモリ装
置400に対する読み出し動作制御を行うと共に、ロー
ドデータバッファ部101の動作制御を行うもので、図
3に示すアンド回路1〜2,7〜13、メモリリクエス
トレジスタ52、バッファ41〜44、ブロックアドレ
スバッファ45、オフセットアドレスバッファ46、オ
ア回路31、オフセットアドレスカウンタ81で構成さ
れる。
【0036】シーケンス制御部では、先ず、アンド回路
1でCPU300からのリクエスト信号と、リード/ラ
イト信号の反転信号との論理積をとり、リードリクエス
ト信号を生成する。尚、リード/ライト信号は、“0”
の場合はリード、“1”の場合はライトを示している。
従って、リードリクエスト信号が“1”の時、CPU3
00からのロード命令実行であることを認識する。
【0037】また、アンド回路2ではCPU300から
のリクエスト信号、リード/ライト信号、およびメモリ
アドレス一致検査部102aの比較器91出力(以下、
この出力をタグマッチ信号と記す)との論理積をとり、
ストアバイパス信号を生成する。ストアバイパス信号が
アサートされる場合にはストアバイパス動作を行う。即
ち、ライト指示でかつ、ブロックアドレスが一致したた
め、ストアバイパス動作を行うものである。
【0038】アンド回路7は、アドレス一致検査部10
2aの比較器91出力と、Vフラグ部102bのVフラ
グセレクタ62出力であるバリッド信号との論理積をと
る。アンド回路7の出力が“1”の場合は、CPU30
0から入力されるアドレスに配置されるメモリ装置40
0内のデータのコピーがデータレジスタLB0〜3の該
当レジスタに存在することを示す。即ち、ロードデータ
バッファヒットで、かつ、Vフラグが“1”である。
【0039】アンド回路8では、アンド回路7の出力
と、アンド回路1の出力(リードリクエスト信号)との
論理積をとる。アンド回路8の出力が“1”の場合には
メモリ装置400からのデータ読み出しは行わず、この
信号をバッファ41で駆動アクノレッジ信号としてCP
U300に出力する。この時、図2のロードバッファ部
100内のロードバッファ出力セレクタ101bでは、
データレジスタLB0〜3のうち、CPU300から入
力されるスモールアドレスで指定されるデータレジスタ
出力を選択し、ロードデータとしてCPU300に出力
する。
【0040】ここで、アクノレッジ信号とリクエスト信
号とはハンドシェイクの関係にある。即ち、CPU30
0にてリクエスト信号がアサートされ、メモリバッファ
装置が動作を行う。これが完了した時点でメモリバッフ
ァ装置にてアクノレッジ信号がアサートされる。CPU
300ではアクノレッジ信号がアサートされたことによ
りリクエスト信号をネゲートする。メモリバッファ装置
ではリクエスト信号がネゲートされたことによりアクノ
レッジ信号をネゲートする。CPU300ではアクノレ
ッジ信号がネゲートされている状態において、次のメモ
リリクエストをアサートする。このようにメモリリクエ
スト信号、およびアクノレッジ信号は、CPU300、
およびメモリバッファ装置間の1語のデータアクセス毎
の動作の同期をとるために使用される。
【0041】アンド回路9では、アンド回路7の出力の
反転信号と、アンド回路1の出力であるリードリクエス
ト信号、およびメモリビジィの反転信号との論理積をと
る。この出力は、CPU300からのロード命令で読み
出す必要のあるデータがロードデータバッファ部101
に存在せず、かつ、その時点でメモリ装置400がアク
セス可能な状態にあることを示す。メモリビジィ信号は
ロードバッファ部100およびストアバッファ部200
との共通信号である。そして、両者のうちいずれかがメ
モリ装置400にアクセス中である時にアサートされる
アンド回路9の出力の立ち上がり時点で、メモリリクエ
ストレジスタ52が“1”にセットされる(以下、
“1”にセットされることを単にセットされると記し、
“0”にセットされることをリセットされると記す)。
つまり、ロードデータバッファミスであるため、CPU
300の要求するデータをメモリ装置400から読み出
す必要があり、メモリリクエストレジスタ52をセット
することでメモリ装置400に起動をかける。
【0042】アンド回路9の出力は、更にタグレジスタ
51のクロック入力、V0〜3レジスタV0〜V3のリ
セット入力、およびオフセットアドレスカウンタ81の
ロード入力に接続される。タグレジスタ51は、アンド
回路9の出力のアサート時点、即ち、メモリリクエスト
レジスタ52のセット時点でCPU300から入力され
るラージアドレスを新たに格納する。タグレジスタ51
の出力は、メモリリクエストレジスタ52の出力である
Mリクエスト信号がアサートされている間ブロックアド
レスバッファ45により駆動され、メモリブロックアド
レスとしてメモリ装置400に出力される。また、V0
〜3レジスタはメモリ装置400に対する新たなメモリ
アクセスを開始する時点、即ち、アンド回路9の出力の
アサート時点に全てクリアされ、その内容は“0”とな
る。
【0043】オフセットアドレスカウンタ81は、アン
ド回路9の出力のアサート時点にCPU300から入力
される2ビットのスモールアドレスをセットする。オフ
セットアドレスカウンタ81の出力は、オフセットアド
レスバッファ46により駆動され、メモリ装置400に
メモリオフセットアドレスとして出力される。また、こ
の信号はオフセットアドレスデコーダ72に入力され、
メモリ装置400からのリードデータをロードデータバ
ッファ部101に格納する時のLB0〜3の選択信号と
なる。更に、この信号はスモールアドレスセレクタ61
に入力され、メモリ装置400に対するリードアクセス
を行った際のVフラグをセットする時のV0〜3レジス
タV0〜V3の選択信号となる。
【0044】メモリリクエストレジスタ52の出力であ
るMリクエスト信号は、アンド回路12において、メモ
リアクノレッジの反転信号との論理積をとり、バッファ
42により駆動され、メモリリクエスト信号としてメモ
リ装置400に出力される。メモリアクノレッジ信号は
メモリ装置400から入力される信号で、この信号がア
サートされるとメモリ装置400での所定の動作が完了
したことを示す。また、メモリリクエスト信号はロード
バッファ部100およびストアバッファ部200との共
通信号であり、両者のうちいずれかがメモリ装置400
に対してアクセス要求していることを示す。
【0045】メモリリクエスト信号とメモリアクノレッ
ジ信号はハンドシェイクの関係にある。即ち、メモリバ
ッファ装置(ロードバッファ部100またはストアバッ
ファ部200)にてメモリリクエスト信号がアサートさ
れ、メモリ装置400が動作を行う。これが完了した時
点でメモリ装置400にてメモリアクノレッジ信号がア
サートされる。メモリバッファ装置ではメモリアクノレ
ッジ信号がアサートされたことにより、メモリリクエス
ト信号をネゲートする。メモリ装置400ではメモリリ
クエスト信号がネゲートされたことにより、メモリアク
ノレッジ信号をネゲートする。メモリバッファ装置では
メモリアクノレッジ信号がネゲートされている状態にお
いて次のメモリリクエストをアサートする。このように
メモリリクエスト信号、およびメモリアクノレッジ信号
は、メモリバッファ装置、およびメモリ装置400の間
の1語のデータアクセス毎の動作の同期をとるために使
用される。従って、前記2つの信号は毎メモリサイクル
にオンオフする。
【0046】Mリクエストの反転信号はバッファ43に
より駆動され、メモリリード/ライト信号としてメモリ
装置400に出力される。メモリリード/ライト信号は
Mリクエスト信号が“1”の間“0”となる。また、M
リクエスト信号はバッファ44により駆動され、メモリ
ビジィ信号をアサートする。メモリリード/ライト信
号、およびメモリビジィ信号は毎メモリサイクルにオン
オフせず、Mリクエスト信号がアサートされている間駆
動され続ける。これらは、メモリバッファ装置とメモリ
装置400の間のメモリブロック内の連続メモリアクセ
スを行うために1〜4メモリサイクルの間アサートされ
る。
【0047】Mリクエスト信号は、更にアンド回路11
の入力、およびスモールアドレスセレクタ61の選択入
力に接続される。アンド回路11ではMリクエスト信号
とメモリアクノレッジ信号との論理積がとられる。この
出力はリードアクノレッジ信号としてこの信号がアサー
トされたことによりメモリ装置400におけるリードア
クセス動作が完了したことを示す。スモールアドレスセ
レクタ61は、V0〜3レジスタのうち、いずれか1つ
を選択して、これをセットするもので、メモリ装置40
0に対するリードアクセスの時にはオフセットアドレス
カウンタ81の出力を選択し、ストアバイパスの時には
CPU300から入力されるスモールアドレスを選択し
てスモールアドレスデコーダ71に出力する。このため
の選択信号としてMリクエスト信号が使用される。
【0048】アンド回路11の出力であるリードアクノ
レッジ信号は、アンド回路10の入力、オア回路31の
入力、オフセットアドレスカウンタ81のクロック入
力、およびアンド回路14〜17の入力に接続される。
アンド回路10ではリードアクノレッジ信号とオフセッ
トアドレスデコーダ72の出力3(入力信号が“11”
の時アサートされる)との論理積をとる。アンド回路1
0の出力はリードダン信号で、この信号のアサートによ
り、メモリ装置400からCPU300が要求するデー
タからリードアクセスを始めてそのメモリブロックの最
大メモリアドレス、即ち、メモリアドレスの下位2ビッ
トが“11”まで連続してリードアクセスが完了したこ
とを示す。
【0049】リードダン信号はメモリリクエストレジス
タ52のリセット入力に入力され、この信号の立ち上が
り時点でメモリリクエストレジスタ52はリセットされ
る。そして出力のMリクエスト信号はネゲートされる。
オア回路31ではリードアクノレッジ信号とアンド回路
13の出力の論理和がとられる。オア回路31の出力
は、Vフラグ部102bのアンド回路3〜6に入力さ
れ、V0〜3レジスタV0〜V3へのセット入力のアサ
ートされるタイミング信号となる。
【0050】アンド回路11の出力であるリードアクノ
レッジ信号は、メモリ装置400に対してリードアクセ
スを行う場合のVフラグのセットタイミング信号として
使用される。オフセットアドレスカウンタ81は、メモ
リ装置400に出力するオフセットアドレスの生成を行
うと共に、連続してメモリアクセスを行う時のサイクル
数を計数するために使用する。本実施形態1では、メモ
リアクセスはロードバッファミスとなったメモリアドレ
スからそのメモリブロックの最大アドレスまでに配置さ
れるデータを連続してリードアクセスしてロードデータ
バッファ部101に格納するとしている。
【0051】アンド回路13は、ストアバイパス信号と
アクノレッジ信号との論理積をとる。この時のアクノレ
ッジ信号はストア命令実行時にストアバッファ部200
で駆動されアサートされる。アンド回路13の出力は、
オア回路31の入力およびLB0〜3セット信号生成部
102cのアンド回路18〜21の入力に接続される。
オア回路31へは、ストアバイパス時のVフラグのセッ
トタイミング信号として入力される。アンド回路18〜
21ではストアバイパス時にCPU300から入力され
るストアデータをバイパスしてロードデータバッファ部
101に格納するためのLB0〜3セット信号をアサー
トするタイミング信号となる。
【0052】図6は、ストアバッファ部200の構成図
である。上述したように、ストアバッファ部200は、
ストアデータバッファ部201と、ストアバッファ制御
部202とで構成される。ストアデータバッファ部20
1はキュー(FIFO:先入れ先出しメモリ)で構成さ
れる。本実施形態では4語のデータレジスタ(SB0〜
3)、4つのスモールアドレスレジスタ(各2ビット:
SB0〜3A)、および3つのデータセレクタ(SB1
〜3B)を直列に接続して、ストアデータとその書き込
み先メモリアドレスの下位2ビット、即ち、スモールア
ドレスとを格納するキューの部分、およびCPU300
から入力されたスモールアドレスの内容とスモールアド
レスレジスタSB0〜3Aに格納される既にキューに入
れられているスモールアドレスの内容との比較を行うマ
ッチャSB0〜3Cとで構成されるが、本発明において
はデータ語数は4語に限定されるものではなく、1語以
上任意の語数をとることが可能である。
【0053】CPU300からのストア命令実行時に入
力されるラージアドレス、即ち、メモリアドレスの下位
2ビットを除いた値と、前記キューに保存されているデ
ータの書き込み先メモリブロックのアドレス、即ちメモ
リブロックアドレスが等しい場合には、メモリ装置40
0に対してデータ書き込みは行わずにキューの最後尾に
新たなストアデータと書き込み先メモリブロック内のオ
フセットアドレス(以下、単にオフセットアドレスと記
す)、即ち、CPU300から入力されるスモールアド
レスの内容を書き込む。
【0054】この時、既にキューに格納されているデー
タ、およびオフセットアドレスは1語分キューの先頭方
向にシフトされる。メモリブロックアドレス、およびオ
フセットアドレスの両方がそれぞれCPU300から入
力されるラージアドレス、およびスモールアドレスに等
しい場合、即ち、ストア命令で与えられたメモリアドレ
スと同一のメモリアドレスへのストアデータが既にキュ
ーに格納されている場合には、そのデータは後続するス
トアデータで上書きされる。即ち、実際にメモリ装置4
00には書き込まれずに同一メモリアドレスに対する新
たなストアデータがキューに格納される。
【0055】ラージアドレスとメモリブロックアドレス
の一致検査はストアバッファ制御部202にて行われ、
スモールアドレスとメモリオフセットアドレスの一致検
査はマッチャSB0〜3Cにて行われる。マッチャSB
0〜3Cのうちいずれかで一致が確認された場合には、
一致したストアバッファSB(データレジスタSB0〜
3、およびスモールアドレスレジスタSB0〜3Aに対
する総称とする)に相当するマッチャSB0〜3Cのい
ずれかがアサートされる。データセレクタSB0〜3B
は、キューに新たなデータを格納する場合には、そのス
トアバッファSBへの入力に対してはCPU300から
入力されるストアデータ、およびスモールアドレスを選
択し、それ以外のストアバッファSBに対しては1つ後
ろのストアバッファSBの出力を選択して出力する。
【0056】ストアバッファ制御部202は、CPU3
00、およびメモリ装置400に対する制御信号の入出
力を行うと共に、ストアデータバッファ部201の制御
を行う。ストアバッファ制御部202からストアデータ
バッファ部201には、SB0〜3クロック信号、およ
びSB1〜3セット信号が出力され、ストアデータバッ
ファ部201からストアバッファ制御部202には、S
B0〜3マッチ信号が出力される。SB0〜3クロック
信号は、データレジスタSB0〜3、およびスモールア
ドレスレジスタSB0〜3Aの各レジスタに対するクロ
ック信号である。データレジスタSB0〜3、およびス
モールアドレスレジスタSB0〜3Aは、クロック信号
の立ち上がり時点で入力を格納する。SB1〜3セット
信号はデータセレクタSB1〜3Bの選択信号で、
“1”の時、CPU300から入力されるストアデー
タ、およびスモールアドレスを選択し、“0”の時、直
列に接続される後続のレジスタの出力を選択する。SB
0〜3マッチ信号は、マッチャSB0〜3Cの出力信号
でマッチャの入力同士が一致した場合には“1”とな
る。
【0057】図7は、ストアバッファ制御部202の構
成図である。図8は、図7におけるストアバッファ信号
生成部202bの構成図である。これらの図において、
ストアバッファ制御部202は、CPU300、および
メモリ装置400に対する制御信号の入出力を行うと共
に、ストアデータバッファ部201の制御を行うもの
で、メモリアドレス一致検査部202a、ストアバッフ
ァ信号生成部202b、およびシーケンス制御部とから
構成される。
【0058】即ち、これらの図に示すストアバッファ制
御部202は、アンド回路1〜18、オア回路31〜4
0、バッファ41〜43、ブロックアドレスバッファ4
4、タグレジスタ51、メモリリクエストレジスタ5
2、セレクタ63〜66、ライトバッファテールデコー
ダ74、ライトバッファポインタ82、比較器91を備
えている。尚、図7中、A1は、ラージアドレス、A2
はアクノレッジ、A3はリクエスト、A4はリード/ラ
イト、A5〜A8はSB0マッチ〜SB3マッチであ
り、B1はメモリブロックアドレス、B2はメモリリー
ドライト、B3はメモリビジー、B4はメモリリクエス
ト、B5はメモリアクノレッジ、B6〜B8はSB1セ
ット〜SB3セット、B9〜B12はSB0クロック〜
SB3クロックを示している。
【0059】メモリアドレス一致検査部202aは、図
3に示すロードバッファ制御部102のメモリアドレス
一致検査部102aと同一の構成で動作も同様であるた
め、タグレジスタ51と比較器91からなる構成の図示
および動作の説明は省略する。
【0060】ストアバッファ信号生成部202bは、S
B0〜3クロック、およびSB1〜3セット信号を生成
する回路であり、図8に示すように、ライトバッファテ
ールデコーダ74、アンド回路12〜14、オア回路3
5〜40、セレクタ63〜66、およびアンド回路15
〜18で構成される。ライトバッファテールデコーダ7
4は2−4デコーダであり、シーケンス制御部のライト
バッファポインタ82で計数されるストアバッファSB
で構成されるライトデータバッファキューの最後尾位置
を示す2ビットの入力信号をデコードするもので、4つ
の出力のうちアサートされた1つに相当するストアバッ
ファSBがキューの最後尾となる。
【0061】アンド回路12〜14は、SB1〜3セッ
ト信号を生成するもので、ライトバッファテールデコー
ダ74の1〜3出力(入力が“01”、“10”、“1
1”の時それぞれアサートされる)と、シーケンス制御
部のアンド回路1の出力(後述)との論理積をそれぞれ
とるものである。ここで、アンド回路12〜14の出力
のうち“1”の信号がある場合には、図6のデータセレ
クタSB1〜3Bにおいて、CPU300から入力され
るストアデータ、およびスモールアドレスが選択され、
データレジスタSB1〜3、およびスモールアドレスレ
ジスタSB1〜3Aの該当レジスタに入力される。
【0062】一方、データレジスタSB0、およびスモ
ールアドレスレジスタSB0Aは、キューの入り口に設
置されるため、後続のレジスタは入力に接続されない。
従って、データレジスタSB0、およびスモールアドレ
スレジスタSB0Aにデータを格納する場合には常にC
PU300から入力されるストアデータ、およびスモー
ルアドレスが入力となる。
【0063】オア回路35〜37は、キューに新たなデ
ータを格納する場合、およびキューの内容をシフトアウ
トしてメモリ装置400に書き込む場合に、ストアバッ
ファSBに出力するSB0〜3クロック信号発生の選択
を行う論理をとる部分である。新たなデータをキューに
格納する場合にはライトバッファポインタ82の値の示
すレジスタよりも先に接続される、即ち、キューの先頭
方向にあるストアバッファSBに対してクロック信号を
供給する。また、キューの内容をシフトアウトしてメモ
リ装置400に書き込みを行う場合についても、外部か
ら新たに書き込むべきデータがCPU300から入力さ
れない限りは、既にキューに格納されているデータのみ
を先頭方向にシフトする。従って、この場合にもライト
バッファポインタ82の値の示すレジスタよりも先に接
続される、即ち、キューの先頭方向にあるストアバッフ
ァSBに対してクロック信号を供給する。オア回路35
〜37においてこのような論理をとることにより、キュ
ーの内容をメモリ装置400に書き込む際にも無効なデ
ータがキューに格納されることはなくなる。
【0064】オア回路38〜40では、既にキューに格
納されているデータのメモリ装置400内の書き込みメ
モリアドレスと同一のメモリアドレスに対するストア命
令実行の場合のSB0〜3クロック信号発生の選択を行
う。この場合は、キュー内容の上書きを行うため、スト
アデータバッファ部201から入力されるSB0〜3マ
ッチのうちアサートされる1〜4つの信号に応じてSB
0〜3クロック信号が生成される。
【0065】即ち、ストアバッファSB0のみアサート
される場合にはSB0クロックのみが生成され、ストア
バッファSB1のみ、あるいはストアバッファSB0、
SB1の両方がアサートされる場合には、SB0クロッ
ク、およびSB1クロックが生成され、ストアバッファ
SB2のみ、ストアバッファSB2、SB1の両方、あ
るいはストアバッファSB2、SB1、およびSB0の
3つがアサートされる場合には、SB0クロック、SB
1クロック、およびSB2クロックの3つが生成され、
そして、ストアバッファSB3のみ、ストアバッファS
B3、SB2の両方、ストアバッファSB3、SB2、
SB1の3つ、あるいはストアバッファSB3、SB
2、SB1、およびストアバッファSB0の全てがアサ
ートされる場合にはSB0クロック、SB1クロック、
SB2クロック、およびSB3クロックの全てが生成さ
れる。
【0066】これにより、新たに書き込むデータがライ
トバッファテール信号(ライトバッファポインタ82の
出力)により示されるキューの最後尾に格納され、そし
て元のストアデータは後続のストアデータに上書きされ
ることになる。セレクタ63〜66は、前記2系統のS
B0〜3クロック発生選択回路を経て生成される信号の
選択回路で、シーケンス制御部のアンド回路3の出力
(後述)が“1”の場合、即ち、キューに格納されてい
るストアデータの上書き時には、オア回路38〜40の
出力、およびSB3マッチ信号が選択され、アンド回路
15〜18に出力される。一方、アンド回路3の出力が
“0”の場合、即ち、キューに新たなストアデータを格
納する場合、あるいはキューに格納されているストアデ
ータを順次連続してメモリ装置400に書き込む場合に
は、ライトバッファテールデコーダ74の0出力、およ
びオア回路35〜37出力が選択されて、アンド回路1
5〜18に入力される。アンド回路15〜18は、これ
らセレクタ63〜66の出力と、シーケンス制御部のオ
ア回路34の出力(後述)との論理積をとり、ストアデ
ータバッファ部201に出力するためのSB0〜3クロ
ックを生成する。オア回路34の出力は、ストアバッフ
ァSBに与えるクロックのアサートタイミングを決定す
る信号である。
【0067】シーケンス制御部は、CPU300、およ
びメモリ装置400に対する制御信号の入出力、メモリ
装置400に対する書き込み動作制御を行うと共に、ス
トアデータバッファ部の動作制御を行う。このシーケン
ス制御部は、図7に示すアンド回路1〜11、オア回路
31〜34、メモリリクエストレジスタ52、バッファ
41〜43、ブロックアドレスバッファ44、ライトバ
ッファポインタ82で構成される。
【0068】シーケンス制御部では、先ず、アンド回路
1で、CPU300からのリクエスト信号と、リード/
ライト信号との論理積をとり、ライトリクエスト信号を
生成する。ライトリクエスト信号が“1”の時、CPU
300からのストア命令実行であることを認識する。ま
た、オア回路31は、ストアデータバッファ部201か
ら入力されるSB0〜3マッチ信号全ての論理和をと
る。オア回路31の出力はオフセットアドレスマッチ信
号で、ストアデータバッファ部201(キュー)に新た
にCPU300から書き込み要求のあるメモリアドレス
の下位2ビット、即ち、スモールアドレスと同一のメモ
リブロック内アドレス、更に言い替えれば、メモリオフ
セットアドレスに対するストアデータがキューに既に格
納されている時にこの信号がアサートされる。
【0069】アンド回路2は、メモリアドレス一致検査
部202aの比較器91出力と、オア回路31の出力す
るオフセットアドレスマッチの反転信号との論理積をと
る。アンド回路2の出力は、タグマッチ信号が“1”、
即ち、タグレジスタ51に格納されているメモリブロッ
クアドレスの内容とCPU300から入力されるラージ
アドレスの内容は同一であるが、スモールアドレスと前
記キューのスモールアドレスレジスタSB0〜3Aに格
納されるメモリオフセットアドレスの内容は一致しない
ことを意味する。つまり、キューに格納されるストアデ
ータと同一のメモリブロックの新たなブロック内オフセ
ットアドレスに書き込むストア命令が実行された場合で
ある。この場合には、入力されるストアデータ、および
スモールアドレスの内容をキューに格納する。この時の
格納先ストアバッファSBは、ライトバッファポインタ
82の出力であるライトバッファテール信号により示さ
れる。
【0070】アンド回路3は、メモリアドレス一致検査
部202aの比較器91の出力と、前記のオフセットア
ドレスマッチ信号との論理積をとる。アンド回路3の出
力は、CPU300から入力されたアドレスとタグレジ
スタ51、およびキューに格納されているメモリアドレ
スが一致する場合にアドレスマッチ信号としてアサート
される。この場合には、既にキューに格納されているス
トアデータを上書きし、新たにCPU300から入力さ
れるストアデータをライトバッファテール信号で指定さ
れるキューの最後尾に格納する。
【0071】アンド回路4は、メモリアドレス一致検査
部202aの比較器91の出力の反転信号、アンド回路
1の出力であるライトリクエスト信号、およびメモリビ
ジィ信号との論理積をとる。メモリビジィ信号は、ロー
ドバッファ部100でも説明したように、ロードバッフ
ァ部100、およびストアバッファ部200との共通信
号である。
【0072】アンド回路5は、アンド回路1の出力とア
ンド回路2の出力との論理積をとり、エンキュー信号を
出力する。アンド回路6は、アンド回路1の出力とアン
ド回路3の出力との論理積をとり、オーバライト信号を
出力する。アンド回路3の出力は、ストアバッファ信号
生成部202bのセレクタ63〜66に対する選択信号
として使用される。前記エンキュー信号は、オア回路3
4、およびオア回路32に出力される。前記オーバライ
ト信号はオア回路34に入力される。オア回路34は、
これら2つの信号とアンド回路10の出力(後述)との
論理和をとるもので、シフトタイミング信号を出力す
る。
【0073】シフトタイミング信号は、ストアバッファ
信号生成部202bのアンド回路15〜18に入力さ
れ、SB0〜3クロック信号のアサートタイミングを与
える。シフトタイミング信号は、更にアンド回路7に出
力される。アンド回路7は、前記のライトリクエスト信
号と、シフトタイミング信号との論理積をとり、バッフ
ァ41により駆動され、アクノレッジ信号としてCPU
300に出力する。アンド回路4の出力は、メモリリク
エストレジスタ52のセット入力(S入力)、およびオ
ア回路32に出力される。メモリリクエストレジスタ5
2では、セット入力の立ち上がり時点でセットされ、M
リクエスト信号をアサートする。Mリクエスト信号は、
前記ロードバッファ制御部102のMリクエスト信号と
同様に、メモリ装置400に対する書き込みアクセスを
行うための起動信号となる。
【0074】Mリクエスト信号は、ブロックアドレスバ
ッファ44のイネーブル信号としてタグレジスタ51の
出力を駆動し、メモリラージアドレスをメモリ装置40
0に出力し、バッファ42により駆動され、メモリリー
ド/ライト信号をメモリ装置400に出力し、アンド回
路11に出力され、メモリ装置400から入力されるメ
モリアクノレッジの反転信号との論理積をとり、バッフ
ァ43により駆動され、メモリリクエスト信号としてメ
モリ装置400に出力される。
【0075】メモリリクエスト信号、およびメモリアク
ノレッジ信号は、前記ロードバッファ部100で記した
ようにハンドシェイク信号である。Mリクエスト信号は
更にアンド回路10に出力される。アンド回路10は、
Mリクエスト信号とメモリアクノレッジ信号との論理積
をとり、ライトアクノレッジ信号を出力する。ライトア
クノレッジ信号は、ストアバッファ部200から出力さ
れたメモリ書き込みアクセス要求のためのリクエスト信
号に対する動作が完了したことを示す信号で、この信号
の立ち上がり時点で前記メモリ動作が完了したと認識さ
れる。
【0076】アンド回路10の出力、即ち、ライトアク
ノレッジ信号は、オア回路34、アンド回路8、およ
び、アンド回路9に出力される。オア回路34は、シフ
トタイミング信号を生成するもので、ライトアクノレッ
ジ信号がアサートされ、オア回路34に入力される場合
には、メモリ装置400への書き込みアクセスが完了し
たことを示すもので、この時、シフトタイミング信号は
アサートされ、アンド回路15〜18に出力されて、S
B0〜3クロック信号のアサートタイミングを与える。
また、シフトタイミング信号はアンド回路7に出力され
る。ライトアクノレッジ信号がアサートされることによ
りシフトタイミング信号がアサートされ、そしてアンド
回路7にてライトリクエストとの論理積出力がアサート
された場合は、メモリ装置400への書き込みを伴うス
トア命令実行に対するアクノレッジ信号がアサートさ
れ、バッファ41で駆動され、CPU300に出力され
る。この場合のアクノレッジ信号は、ストアデータバッ
ファ(キュー)の先頭の1語がメモリ装置400に書き
込み完了した時点でアサートされる。
【0077】アンド回路10の出力、即ち、ライトアク
ノレッジ信号は、アンド回路8にてライトバッファテー
ルデコーダ74の3出力、即ち、ラストアクセス信号と
論理積がとられ、また、アンド回路9にて前記ラストア
クセスの反転信号との論理積がとられる。アンド回路8
の出力は、メモリ装置400へのストアデータバッファ
(キュー)に格納されている古い(新たにCPU300
が書き込み要求しているデータの書き込み先メモリデー
タブロックとは異なる)メモリデータブロックに対する
書き込みの最後のメモリアクセスの完了時にアサートさ
れる。また、アンド回路9の出力は、上記メモリ書き込
みの最後以外のメモリアクセスの完了時にアサートされ
る。アンド回路8の出力はライトダン信号で、メモリリ
クエストレジスタ52のリセット入力、およびオア回路
33に出力される。また、アンド回路9の出力はオア回
路32に出力される。
【0078】メモリリクエストレジスタ52は、リセッ
ト入力の立ち上がり時点でリセットされる。メモリリク
エストレジスタ52がリセットされることで、Mリクエ
スト信号がネゲートされ、これによりメモリ装置400
に対する1〜4回のメモリ書き込みを終了させると共
に、メモリビジィ信号をネゲートする。オア回路32は
前記アンド回路4の出力、即ち、メモリリクエストレジ
スタ52へのセット入力となる信号と、アンド回路9の
出力との論理和をとるもので、出力はライトバッファポ
インタ82へのアップ入力に接続される。また、オア回
路33は、前記アンド回路5の出力、即ち、エンキュー
信号と、アンド回路8の出力、即ち、ライトダン信号と
の論理和をとるもので、出力はライトバッファポインタ
82へのダウン入力に接続される。
【0079】ライトバッファポインタ82は、ストアデ
ータバッファ(キュー)の最後尾を示すための2ビット
のライトバッファテール信号を生成するものである。以
下にライトバッファポインタ82による計数動作を示
す。ストアデータバッファは先頭位置(出口)から3、
2、1、0の順に番号付けされる。したがってキューの
構造上の入り口(最後尾とは限らない;最後尾は動作時
のキューの入り口)は0である。また、キューの最後尾
は通常次にデータを書き込むことのできるSBを示して
いる。したがって、ライトバッファポインタはデータの
挿入時に更新され(1つ番号が小さくなる)、次のデー
タ挿入に備え、またデータのメモリ装置400への書き
出し時に更新される(1つ番号が大きくなる)。
【0080】[a.初期状態、即ち、電源投入直後]デ
ータは何も書き込まれていないので3となる。 [b.タグレジスタの内容と同一のメモリブロックへの
ストア命令実行時] (b−1.スモールアドレスがスモールアドレスレジス
タSB0〜3Aのいずれかと同一の場合):データの上
書きを行うので増減なし。 (b−2.スモールアドレスがスモールアドレスレジス
タSB0〜3Aのいずれとも同一でない場合):データ
の挿入を行うので1減じられる。
【0081】[c.タグレジスタの内容と異なるメモリ
ブロックへのストア命令実行時] 先ず、1増加される(キューへのデータ挿入、および
元のキュー内容の先頭方向へのシフト、即ち、1語のキ
ュー内容のシフトアウトへのポインタ準備)。 メモリ装置400への書き込みアクセスを行い、メモ
リアクノレッジがアサートされる毎に1増加される(キ
ュー内容のシフトアウトへのポインタ準備。新たなメモ
リブロックへの書き込みデータが挿入される)。そし
て、ポインタの値が3になるまで増加は続く。 ポインタの値が3の時のメモリ書き込みアクセス時の
メモリアクノレッジ信号のアサート時に1減じられ2と
なり、メモリ書き込みアクセスは終了する。即ち、以前
のメモリブロックへの書き込みデータが全てメモリ装置
400に書き込まれ、新たなメモリブロックへの書き込
みデータがキューの先頭まで進み、ポインタの値は次の
データの挿入に備えて2となる(キューの先頭から2番
目のSB2を示す)。
【0082】上記説明において、b−1の時にはアンド
回路5の出力、即ち、エンキュー信号がアサートされ、
c−の時には、アンド回路4の出力がアサートされ、
c−の時にはアンド回路9の出力がアサートされ、そ
してc−の時にはアンド回路8の出力、即ち、ライト
ダン信号がアサートされて、オア回路32、あるいはオ
ア回路33を経てライトバッファポインタ82のアップ
入力、あるいはダウン入力に出力され、ライトバッファ
ポインタ82にて必要な計数動作を行う。
【0083】[動作]図9〜11は、本実施形態1の動
作を示す説明図であり、図9が、ロード時の動作、図1
0、11がストア時の動作を示している。ロード命令実
行時は、ロードバッファ部100のタグレジスタ51の
内容とCPU300から入力されるラージアドレスの内
容の一致、あるいは不一致、および上記ラージアドレス
の一致の場合のVフラグの内容(“1”の時有効、
“0”の時無効)により動作が異なる。
【0084】ストア命令実行時は、ストアバッファ部2
00のタグレジスタ51の内容とCPU300から入力
されるラージアドレスの内容の一致、あるいは不一致、
および、これらとキューに格納されているメモリオフセ
ットアドレスとCPU300から入力されるスモールア
ドレスの内容の一致、あるいは不一致の組み合わせによ
り動作が異なる。更に、上記ストア命令実行時において
ロードバッファ部100のタグレジスタ51の内容とC
PU300から入力されるラージアドレスの内容が一
致、あるいは不一致の場合で更に動作が異なる。図9〜
11にはこれらの各々の組み合わせと動作が記されてい
る。
【0085】図12、図13は、本実施形態1および後
述する実施形態2におけるロード命令実行時のタイムチ
ャートである。図12はバッファヒットの場合の動作
で、この場合はメモリ装置400に対して読み出しアク
セスは行われず、ロードデータバッファ部101内の必
要なデータが選択されCPU300に出力される。図1
2において、リクエスト信号とアクノレッジ信号はハン
ドシェイクの関係にある。また、ラージアドレス、スモ
ールアドレス、およびリード/ライト信号はリクエスト
信号がアサートされている間正しい値となっている。ロ
ードデータはアクノレッジ信号の立ち上がり時点で正し
い値となっている。
【0086】図13はバッファミスの場合の動作で、こ
の場合はメモリ装置400に対して読み出しアクセスを
行い、CPU300の要求するデータをCPU300に
出力すると共に、ロードデータバッファ部101に格納
する。更に、CPU300はメモリ装置400に読み出
しアクセスを行ったメモリアドレス以降、そのメモリブ
ロック(実施形態1、および後述する実施形態2では4
語で構成される)の最後のデータまで連続してメモリ装
置400から読み出し、ロードデータバッファ部101
の該当レジスタに格納する。CPU300に対するアク
ノレッジ信号のアサートおよびロードデータの出力は、
最初のメモリ読み出しアクセスでメモリ装置400から
読み出したデータが入力された時点、即ち、最初のメモ
リリクエスト信号のアサートに対するメモリアクノレッ
ジ信号のアサート時に確定する。
【0087】図13ではスモールアドレスの内容が“0
0”の場合、即ち、当該メモリブロックの最初に配置さ
れるデータに対してのロード命令実行時の動作を示す。
この場合には、ロードバッファミスとなったメモリブロ
ックの最初に配置されるデータから読み出しアクセスを
行い、4語のメモリブロック全部を連続して読み出し、
ロードデータバッファ部101の該当レジスタに順次格
納する。図13でリクエスト信号とアクノレッジ信号は
ハンドシェイクの関係にある。また、ラージアドレス、
スモールアドレス、およびリード/ライト信号はリクエ
スト信号がアサートされている間正しい値となってい
る。更に、メモリブロックアドレス、メモリオフセット
アドレス、メモリリード/ライト信号はメモリリクエス
ト信号がアサートされている間正しい値となっている。
そして、メモリリードデータはメモリアクノレッジ信号
の立ち上がり時点、およびLB0〜3セット信号の立ち
上がり時点で正しい値となっている。また、ロードデー
タはアクノレッジ信号の立ち上がり時点で正しい値とな
っている。
【0088】図14、15は、本実施形態1および後述
する実施形態2のストア命令実行時のタイムチャートで
ある。図14はバッファヒットの場合で、この場合には
メモリ装置400に対する書き込みアクセスは行われ
ず、ストアデータバッファ(キュー)に書き込みデータ
を格納するのみの動作を行う。図14でリクエスト信号
とアクノレッジ信号はハンドシェイクの関係にある。ま
た、ラージアドレス、スモールアドレス、リード/ライ
ト信号、およびストアデータはリクエスト信号がアサー
トされている間正しい値となっている。
【0089】図15はバッファミスの場合の動作で、こ
の場合はメモリ装置400に対して連続して書き込みア
クセスを行い、既にキューに格納されていた書き込みデ
ータをメモリ装置400の当該メモリブロックに対して
書き込みアクセスを行うと共に、CPU300から入力
されるストアデータを新たにキューに格納する。CPU
300に対するアクノレッジ信号のアサートは、最初の
メモリ書き込みアクセスでキューの先頭にあるデータを
メモリ装置400に書き込み完了した時点、即ち、最初
のメモリリクエスト信号のアサートに対するメモリアク
ノレッジ信号のアサート時に確定する。図15でリクエ
スト信号とアクノレッジ信号はハンドシェイクの関係に
ある。また、ラージアドレス、スモールアドレス、リー
ド/ライト信号、およびストアデータはリクエスト信号
がアサートされている間正しい値となっている。更に、
メモリブロックアドレス、メモリオフセットアドレス、
メモリリード/ライト信号、およびメモリライトデータ
はメモリリクエスト信号がアサートされている間、およ
びSB0〜3クロックの立ち上がり時点で正しい値とな
っている。
【0090】[効果]以上のように、本実施形態1は、
複数語のロードデータバッファ部101、および複数語
のストアデータバッファ部201(キュー)、およびこ
れらの制御部とからメモリバッファ装置を構成している
ため、例えば、キャッシュメモリに比べてデータ格納の
ための別途のメモリ部を必要としない等、小規模の回路
でメモリバッファ装置を構成することができる。その結
果、CPU300の高動作周波数化に対して十分追従可
能な動作速度が確保できると共に、CPU300と本発
明のメモリバッファ装置とを含むLSIのチップ面積
を、従来技術によるCPUとキャッシュメモリで構成さ
れるLSIに比べ大幅に削減することが可能で、ローコ
スト化および消費電力の低減化を図ることができる。
【0091】また、ロード命令実行時でバッファミスが
発生した場合は、メモリ装置400から複数語のメモリ
アクセス動作を行うため、CPU300のメモリ装置4
00へのアクセス頻度を軽減でき、メモリスループット
の向上を図ることができ、従って、プログラム実行性能
の向上に寄与することができる。
【0092】更に、本実施形態1では、ロード命令実行
時でバッファミスが発生した場合に、そのメモリアドレ
スから連続して同一メモリブロックの最終アドレスまで
の読み出しアクセスを行い、ロードバッファ部100に
格納するようにしたので、次のような効果がある。ミス
を起こしたメモリアドレスから先の(メモリアドレスが
増加する方向の)データのみを連続アクセスすることに
より、例えば、配列演算といった前方参照頻度の高いプ
ログラムの実行に対しては、ブロック全体を常に読みだ
す場合に比べてメモリアクセスサイクルを低減すること
ができる。即ち、メモリ参照は直前のメモリ参照の対象
アドレスから連続して、あるいは数語離れた前方(メモ
リアドレスの増加する方向)に対して行われる確率が高
い場合には、直前のメモリ参照の対象アドレスよりも後
方(メモリアドレスの減少する方向)のデータアクセス
は稀であり、これらのデータを不必要にメモリ装置40
0から読み出すことがないからである。
【0093】《実施形態2》 [構成]本実施形態2において、全体構成は、図1に示
した構成および図2に示した構成と図面上は同様であ
る。また、ストアバッファ部については、図6、7、8
に示した構成と同様であるため、これらの構成について
は省略する。本実施形態が上記実施形態1と異なるの
は、ロードバッファ制御部の構成であり、以下のように
なっている。
【0094】図16は、実施形態2におけるロードバッ
ファ制御部の構成図である。即ち、本実施形態では、上
記実施形態1のロードバッファ制御部102に対し、メ
モリアクセスカウンタ83を新たに設置する点が異な
る。この点以外の構成については実施形態1と同様であ
るため、対応する部分に同一符号を付してその説明を省
略する。
【0095】本実施形態2と上記実施形態1との違いは
ロード命令実行時にバッファミスとなった場合の動作の
みである。このような場合、実施形態1ではミスを発生
したメモリアドレスから連続して当該メモリブロックの
最終アドレスのデータまでをメモリ装置400から連続
読み出しアクセスしてロードデータバッファ部101の
該当レジスタに格納する動作を行った。これに対し、実
施形態2ではミスを発生したメモリアドレスから連続し
て当該メモリブロックの最終アドレスのデータ、および
当該メモリブロックの先頭アドレスのデータからミスを
発生したメモリアドレスの直前のメモリアドレスのデー
タまで、即ち、1メモリブロック全体のデータをメモリ
装置400から読み出しアクセスして、ロードデータバ
ッファ部101の該当レジスタに格納する動作を行う。
【0096】このために、図16に示すようにオフセッ
トアドレスカウンタ81、およびメモリアクセスカウン
タ83の2つのカウンタを設置する。オフセットアドレ
スカウンタ81は、読み出しアクセスを行うメモリブロ
ック内のオフセットアドレスを生成し、また、1メモリ
ブロック分のデータ読み出しアクセスを行うためのアク
セスサイクル数を計数する。そして、メモリアクセスカ
ウンタ83のカウントクロック入力はオフセットアドレ
スカウンタ81のカウントクロック入力と同一信号で、
図3に示すロードバッファ制御部102のリードアクノ
レッジ信号と同一である。
【0097】メモリアクセスカウンタ83のロード入力
はオフセットアドレスカウンタ81のロード入力と同一
信号で、図3に示すロードバッファ制御部102のメモ
リリクエストレジスタ52へのセット入力と同一であ
る。この時、メモリアクセスカウンタ83には必ず“0
0”がロードされる。メモリアクセスカウンタ83のキ
ャリー出力は、この2ビットのカウンタがオーバフロー
した時、即ち、4となった時にアサートされる。これに
より1メモリブロック分のデータである4語のデータが
メモリ装置400から連続して読み出されたことが認識
される。この信号はラストアクセス信号で、アンド回路
10でリードアクノレッジ信号と論理積がとられ、その
出力がメモリリクエストレジスタ52のリセット信号と
なり、メモリリクエストレジスタ52をリセットする。
尚、ラストアクセス信号は図3に示す実施形態1のロー
ドバッファ制御部102と同一の役割である。このメモ
リアクセスカウンタ83を設置することにより、バッフ
ァミスの場合には必ずミスを発生したメモリブロック全
体、即ち、4語のデータアクセスを連続してメモリ装置
400に対して行う。
【0098】図17〜19は、本実施形態2の動作を示
す説明図であり、図17がロード時の動作、図18、1
9がストア時の動作を示している。本実施形態2のメモ
リバッファ装置の動作は、図9〜11に示す実施形態1
のメモリバッファ装置の動作と比べてロード命令実行時
の動作のみ異なる。実施形態2では、ロードバッファミ
スの場合に必ずミスとなったメモリアドレスを含むメモ
リブロック全体(4語)をメモリ装置400から読み出
しアクセスし、ロードデータバッファ部101の該当レ
ジスタに格納するため、以降のメモリアクセスにおい
て、ロードVフラグは必ず“1”となる。従って、ロー
ドバッファ部100のタグレジスタ51の内容がCPU
300から入力されるラージアドレスの内容と一致する
場合には必ずバッファヒットとなり、この場合にはロー
ドデータバッファ部101の該当レジスタからデータを
CPU300に出力する。
【0099】一方、上記タグレジスタ51の内容とCP
U300から入力されるラージアドレスの内容が一致し
ない場合にはバッファミスであるため、ミスとなったメ
モリアドレスから連続してメモリ装置400から1メモ
リブロック分のデータを読み出し、最初に読み出したリ
ードデータをCPU300に出力すると共に、1メモリ
ブロック分のデータ(4語)をロードデータバッファ部
101の該当レジスタに格納する。ストア命令実行時の
動作は図9〜11に示す実施形態1のメモリバッファ装
置の動作と同一である。
【0100】また、実施形態2におけるロード命令実行
時およびストア命令実行時の各信号のタイミングについ
ては、図12〜図15で示した状態と同様であるため、
その説明は省略する。但し、実施形態2では、スモール
アドレスの内容が“00”〜“11”のいずれの値の場
合であってもロードバッファミスとなったメモリブロッ
クの最初に配置されるデータから読み出しアクセスを行
い、4語のメモリブロック全部を連続して読み出しロー
ドデータバッファの該当レジスタに順次格納する。
【0101】[効果]以上のように、実施形態2では、
上記実施形態1と同様に、ローコスト化および消費電力
の低減化を図ることができるといった効果を奏すると共
に、ロード命令実行時でバッファミスが発生した場合
に、ミスとなったメモリアドレスを含む1メモリブロッ
ク全体のデータの読み出しアクセスを行ってロードバッ
ファ部100に格納するようにしたので、次のような効
果がある。ミスを起こしたメモリアドレスを含むメモリ
ブロック全体を連続アクセスすることにより、例えば、
スタックを用いた演算といった前方参照頻度と後方参照
頻度とが同程度に高いプログラムの実行に対しては、ブ
ロック全体を常に読みだすことで全体のバッファミス回
数を低減することができる。即ち、メモリ参照は直前の
メモリ参照の対象アドレスから連続して、あるいは数語
離れた前方(メモリアドレスの増加する方向)、および
後方(メモリアドレスの減少する方向)に対して同程度
のメモリアクセス確率がある場合には、1度に連続アク
セスしてバッファに格納することが可能である最大語数
のデータをメモリ装置400から連続してアクセスする
ことで、メモリスループットを最大とすることができ
る。
【0102】
【発明の効果】以上説明したように、第1発明のメモリ
バッファ装置によれば、複数語のレジスタを有するロー
ドデータバッファ部と、複数語の先入れ先出しバッファ
を有するストアデータバッファ部、およびこれらの制御
部とから構成しているため、例えば、キャッシュメモリ
に比べてデータ格納のための別途のメモリ部を必要とし
ない等、小規模の回路でメモリバッファ装置を構成する
ことができる。その結果、CPUの高動作周波数化に対
して十分追従可能な動作速度が確保できると共に、CP
Uと本発明のメモリバッファ装置とを含むLSIのチッ
プ面積を、従来技術によるCPUとキャッシュメモリで
構成されるLSIに比べ大幅に削減することが可能で、
ローコスト化および消費電力の低減化を図ることができ
る。
【0103】また、ロード命令実行時でバッファミスが
発生した場合は、メモリ装置から複数語のメモリアクセ
ス動作を行うため、CPUのメモリ装置へのアクセス頻
度を軽減でき、メモリスループットの向上を図ることが
でき、従って、プログラム実行性能の向上に寄与するこ
とができる。
【0104】更に、ロード命令実行時でバッファミスが
発生した場合に、そのメモリアドレスから連続して同一
メモリブロックの最終アドレスまでの読み出しアクセス
を行い、ロードバッファ部に格納するようにしたので、
次のような効果がある。ミスを起こしたメモリアドレス
から先の(メモリアドレスが増加する方向の)データの
みを連続アクセスすることにより、例えば、配列演算と
いった前方参照頻度の高いプログラムの実行に対して
は、ブロック全体を常に読みだす場合に比べてメモリア
クセスサイクルを低減することができる。
【0105】第2発明のメモリバッファ装置によれば、
第1発明と同様に、複数語のレジスタを有するロードデ
ータバッファ部と、複数語の先入れ先出しバッファを有
するストアデータバッファ部、およびこれらの制御部と
から構成しているため、第1発明と同様の効果がある。
また、ロード命令実行時でバッファミスが発生した場合
に、ミスとなったメモリアドレスを含む1メモリブロッ
ク全体のデータの読み出しアクセスを行ってロードバッ
ファ部に格納するようにしたので、次のような効果があ
る。即ち、ミスを起こしたメモリアドレスを含むメモリ
ブロック全体を連続アクセスすることにより、例えば、
スタックを用いた演算といった前方参照頻度と後方参照
頻度とが同程度に高いプログラムの実行に対しては、ブ
ロック全体を常に読みだすことで全体のバッファミス回
数を低減することができる。
【0106】第3発明のメモリバッファ装置によれば、
中央処理装置からのデータ書き込み要求に対して、該当
データが、ロードデータバッファ部内のレジスタのいず
れかに存在する場合は、このデータを更新するようにし
たので、このような場合は、メモリ装置にアクセスする
必要がなく、従って、プログラム実行性能を向上させる
ことができる。
【図面の簡単な説明】
【図1】本発明のメモリバッファ装置の実施形態1、2
を示す構成図である。
【図2】本発明のメモリバッファ装置のロードバッファ
部の構成図である。
【図3】本発明のメモリバッファ装置の実施形態1のロ
ードバッファ制御部の構成図である。
【図4】本発明のメモリバッファ装置の実施形態1にお
けるロードデータバッファ有効フラグ部の構成図であ
る。
【図5】本発明のメモリバッファ装置の実施形態1にお
けるLB0〜3セット信号生成部の構成図である。
【図6】本発明のメモリバッファ装置の実施形態1にお
けるストアバッファ部の構成図である。
【図7】本発明のメモリバッファ装置の実施形態1にお
けるストアバッファ制御部の構成図である。
【図8】本発明のメモリバッファ装置の実施形態1にお
けるストアバッファ信号生成部の構成図である。
【図9】本発明のメモリバッファ装置の実施形態1にお
ける動作(ロード時)の説明図である。
【図10】本発明のメモリバッファ装置の実施形態1に
おける動作(ストア時)の説明図(その1)である。
【図11】本発明のメモリバッファ装置の実施形態1に
おける動作(ストア時)の説明図(その2)である。
【図12】本発明のメモリバッファ装置におけるロード
命令実行時のタイムチャート(バッファヒット)であ
る。
【図13】本発明のメモリバッファ装置におけるロード
命令実行時のタイムチャート(バッファミス)である。
【図14】本発明のメモリバッファ装置におけるストア
命令実行時のタイムチャート(バッファヒット)であ
る。
【図15】本発明のメモリバッファ装置におけるストア
命令実行時のタイムチャート(バッファミス)である。
【図16】本発明のメモリバッファ装置の実施形態2に
おけるロードバッファ制御部の構成図である。
【図17】本発明のメモリバッファ装置の実施形態2に
おける動作(ロード時)の説明図である。
【図18】本発明のメモリバッファ装置の実施形態2に
おける動作(ストア時)の説明図(その1)である。
【図19】本発明のメモリバッファ装置の実施形態2に
おける動作(ストア時)の説明図(その2)である。
【符号の説明】
100 ロードバッファ部 101 ロードデータバッファ部 102 ロードバッファ制御部 200 ストアバッファ部 201 ストアデータバッファ部 202 ストアバッファ制御部

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 メモリ装置からデータ読み出しのための
    ロードバッファ部と、メモリ装置への書き込みのための
    ストアバッファ部とを備え、 前記ロードバッファ部は、 一メモリブロック分のデータを格納するための複数語の
    独立に読み書き可能なレジスタを有するロードデータバ
    ッファ部と、 中央処理装置からの前記メモリ装置へのデータ読み出し
    要求に対して、前記レジスタ内のいずれかに該当データ
    が存在する場合は、これを当該中央処理装置に返送し、 どのレジスタにも該当データが存在しない場合は、前記
    メモリ装置より、前記読み出し要求のデータのメモリア
    ドレスから連続して同一メモリブロックの最終アドレス
    までのデータを読み出して、これらを順次、前記レジス
    タに格納するロードバッファ制御部とからなり、 前記ストアバッファ部は、 一メモリブロック分のデータとして複数語を格納する先
    入れ先出しバッファを備えたストアデータバッファ部
    と、 前記中央処理装置からの前記メモリ装置への書き込み要
    求に対して、前記先入れ先出しバッファ内に、該当デー
    タが存在する場合はこれを更新すると共に、格納位置を
    最後尾とし、該当データの同一メモリブロックのデータ
    が存在する場合は、該当データを最後尾に格納し、 前記先入れ先出しバッファ内のデータが、該当データの
    メモリブロックとは異なるメモリブロックであった場合
    は、当該先入れ先出しバッファに格納されているデータ
    を全て前記メモリ装置に書き込むと共に、前記該当デー
    タを当該先入れ先出しバッファの先頭位置に格納するス
    トアバッファ制御部とからなることを特徴とするメモリ
    バッファ装置。
  2. 【請求項2】 メモリ装置からデータ読み出しのための
    ロードバッファ部と、メモリ装置への書き込みのための
    ストアバッファ部とを備え、 前記ロードバッファ部は、 一メモリブロック分のデータを格納するための複数語の
    独立に読み書き可能なレジスタを有するロードデータバ
    ッファ部と、 中央処理装置からの前記メモリ装置へのデータ読み出し
    要求に対して、前記レジスタ内のいずれかに該当データ
    が存在する場合は、これを当該中央処理装置に返送し、 どのレジスタにも該当データが存在しない場合は、前記
    メモリ装置より、前記読み出し要求のデータのメモリア
    ドレスを含む同一メモリブロック全体のデータを読み出
    して、これらを順次、前記レジスタに格納するロードバ
    ッファ制御部とからなり、 前記ストアバッファ部は、 一メモリブロック分のデータとして複数語を格納する先
    入れ先出しバッファを備えたストアデータバッファ部
    と、 前記中央処理装置からの前記メモリ装置への書き込み要
    求に対して、前記先入れ先出しバッファ内に、該当デー
    タが存在する場合はこれを更新すると共に、格納位置を
    最後尾とし、該当データの同一メモリブロックのデータ
    が存在する場合は、該当データを最後尾に格納し、 前記先入れ先出しバッファ内のデータが、該当データの
    メモリブロックとは異なるメモリブロックであった場合
    は、当該先入れ先出しバッファに格納されているデータ
    を全て前記メモリ装置に書き込むと共に、前記該当デー
    タを当該先入れ先出しバッファの先頭位置に格納するス
    トアバッファ制御部とからなることを特徴とするメモリ
    バッファ装置。
  3. 【請求項3】 請求項1または2に記載のメモリバッフ
    ァ装置において、 中央処理装置からのメモリ装置へのデータ書き込み要求
    に対して、該当データが、ロードデータバッファ部内の
    レジスタのいずれかに存在する場合は、このデータを更
    新するロードバッファ制御部を備えたことを特徴とする
    メモリバッファ装置。
JP23765495A 1995-08-23 1995-08-23 メモリバッファ装置 Expired - Fee Related JP3614946B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23765495A JP3614946B2 (ja) 1995-08-23 1995-08-23 メモリバッファ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23765495A JP3614946B2 (ja) 1995-08-23 1995-08-23 メモリバッファ装置

Publications (2)

Publication Number Publication Date
JPH0962571A true JPH0962571A (ja) 1997-03-07
JP3614946B2 JP3614946B2 (ja) 2005-01-26

Family

ID=17018534

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23765495A Expired - Fee Related JP3614946B2 (ja) 1995-08-23 1995-08-23 メモリバッファ装置

Country Status (1)

Country Link
JP (1) JP3614946B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044354A (ja) * 2001-07-26 2003-02-14 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2014174868A (ja) * 2013-03-12 2014-09-22 Nec Corp メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044354A (ja) * 2001-07-26 2003-02-14 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2014174868A (ja) * 2013-03-12 2014-09-22 Nec Corp メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Also Published As

Publication number Publication date
JP3614946B2 (ja) 2005-01-26

Similar Documents

Publication Publication Date Title
US5930523A (en) Microcomputer having multiple bus structure coupling CPU to other processing elements
US5832308A (en) Apparatus for controlling data transfer between external interfaces through buffer memory using a FIFO, an empty signal, and a full signal
US6151658A (en) Write-buffer FIFO architecture with random access snooping capability
JPS6331813B2 (ja)
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
CN1961302B (zh) 具有命令前瞻的存储器控制器
US7155582B2 (en) Dynamic reordering of memory requests
JP3498673B2 (ja) 記憶装置
US6507899B1 (en) Interface for a memory unit
US5924120A (en) Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times
JP2010026716A (ja) キャッシュメモリ制御回路及びプロセッサ
US9009415B2 (en) Memory system including a spiral cache
JP3444154B2 (ja) メモリアクセス制御回路
JPH05210589A (ja) 高速バッファコピー方法
EP0730228A1 (en) ECC protected memory organization with pipelined read-modify-write accesses
JPH07121437A (ja) コンピュータシステム
TW491970B (en) Page collector for improving performance of a memory
US20100217914A1 (en) Memory access determination circuit, memory access determination method and electronic device
JPH0962571A (ja) メモリバッファ装置
EP0415351A2 (en) Data processor for processing instruction after conditional branch instruction at high speed
JP3295728B2 (ja) パイプラインキャッシュメモリの更新回路
US6671781B1 (en) Data cache store buffer
JPH09319657A (ja) 命令読み込み用バッファを備えたプロセッサ
JP3039391B2 (ja) メモリシステム
JPH06348592A (ja) ライトバッファ制御方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040614

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040622

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040629

A59 Written plea

Free format text: JAPANESE INTERMEDIATE CODE: A59

Effective date: 20040921

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041028

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees