JP3498673B2 - 記憶装置 - Google Patents
記憶装置Info
- Publication number
- JP3498673B2 JP3498673B2 JP2000103567A JP2000103567A JP3498673B2 JP 3498673 B2 JP3498673 B2 JP 3498673B2 JP 2000103567 A JP2000103567 A JP 2000103567A JP 2000103567 A JP2000103567 A JP 2000103567A JP 3498673 B2 JP3498673 B2 JP 3498673B2
- Authority
- JP
- Japan
- Prior art keywords
- store
- data
- instruction
- buffer
- stored
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Advance Control (AREA)
Description
びキャッシュメモリを備えた記憶装置に係り、特に高性
能化・低消費電力化を図った記憶装置に関する。
容量であるが低速である主記憶へのデータアクセスを高
速化するため、小容量であるが高速であるキャッシュメ
モリによりデータアクセスのレイテンシを隠蔽する技術
が広く使われている。特に近年においては、マイクロプ
ロセッサの処理速度と主記憶等のチップ外部における処
理速度の差が次第に顕著になり、プロセッサ内に益々大
容量のキャッシュメモリを搭載する傾向が高まってい
る。
量のデータを消費するプログラムでは、キャッシュメモ
リは一度に多量のデータを供給することが求められてい
るため、多ポートのキャッシュメモリを備え、複数のロ
ード命令やストア命令のアクセスを同時に処理したり、
ロード命令やストア命令によるアクセスと主記憶とキャ
ッシュメモリ間のデータ転送を同時に処理することを可
能にしたマイクロプロセッサも増えている。このような
多ポートのキャッシュメモリを実現する場合、メモリセ
ル自体を多ポートにするとレイアウト面積上のコストが
大きい。このため、通常はキャッシュメモリを更に小さ
い単位であるバンクに分割し、バンク毎にアクセスを処
理するバンク・インターリーブ方式が採用されている。
この場合、異なるバンクへのアクセスは同時に処理する
ことが可能となる。
してロード命令が発行された場合には、キャッシュタグ
の読み出し及びヒット判定と、キャッシュデータの読み
出しとが平行に行われるため、単一のパイプライン・ス
テージで処理が完了する。一方、ストア命令が発行され
た場合には、キャッシュタグの読み出し及びヒット判定
を行って、書き込みの可否及び書き込みを行うキャッシ
ュ・ウェイを決定した後、実際にデータを書き込むこと
となる。このため、ストア命令では、ロード命令よりも
処理に時間がかかり、一般に2つ以上のパイプライン・
ステージが必要となる。この結果、ストア命令とロード
命令とが連続して発行された場合には、キャッシュメモ
リへのアクセスのパイプライン・タイミングが合わない
ため処理速度が低下してしまう。
モリとともにストアバッファと呼ばれるストア命令によ
るストアデータを格納するバッファを備えたマイクロプ
ロセッサがある。このストアバッファを備えたマイクロ
プロセッサにおいては、ストア命令によるストアデータ
を一旦ストアバッファに格納し、ストアバッファからキ
ャッシュメモリへ書き込みを行うため、ロード命令とス
トア命令のパイプライン上のタイミング調整が可能とな
り、ストア命令に対しても処理速度を確保できる。
クロプロセッサにおいては、分岐命令などによる投機的
なストア命令に対しても効果を奏する。例えば、近年で
は分岐命令に対してパイプライン動作を円滑に実行する
ために、分岐予測機構に基づく命令の投機実行が広く行
われるようになった。この分岐予測機構では、分岐先を
予測し、分岐先アドレスが決定する前に予測した分岐先
の命令を投機的に実行する。
機的に実行した命令を取り消す必要がある。しかしなが
らキャッシュメモリに書き込まれたストア命令の結果を
取り消すのは容易でなかった。これに対し、ストアバッ
ファに書き込まれたストア命令の結果を取り消すのは容
易である。したがって、投機的なストア命令によるスト
アデータは一旦ストアバッファに格納し、分岐予測が成
功したことが確定した後、ストアバッファからキャッシ
ュメモリに書き込みを行い、分岐予測が失敗した場合に
は、ストアバッファ上で投機的なストア命令によるスト
アデータの取り消しを行えばよい。これにより、分岐先
が確定する前に分岐先を予測し、ストア命令を含めた予
測された分岐先の命令を投機的に実行することが可能と
なる。
データは最新のデータである。このため、後続の同じア
ドレスに対するロード命令は、主記憶やキャッシュメモ
リではなく、ストアバッファからそのデータを読み出す
ことが可能となる。通常ストアバッファはストアバッフ
ァに格納されたストアデータを後続のロード命令に提供
する機構を備える。また、同じアドレスに対するストア
命令が複数発行された場合、ストアバッファでは先行す
るストア命令のストアデータが、後続のストア命令のス
トアデータを破壊しないように保障する必要がある。こ
のため、通常ストアバッファは先入れ先出し(FIF
O)バッファにより実現し、先に発行されたストア命令
のストアデータから順にキャッシュメモリへ書き込みを
行うように制御される。なお、ストアバッファについて
は例えば特開平6−301600号公報や特開平8−3
6491号公報に開示されている。
報端末等の用途等、マイクロプロセッサに対して消費電
力削減の要求が益々強くなる一方、動作周波数の向上や
キャッシュメモリの大容量化・多ポート化などのため
に、マイクロプロセッサの消費電力におけるキャッシュ
メモリの割合が大きくなっているという問題がある。
同時に発生するキャッシュメモリへのアクセス要求数が
多い場合にはポート競合が発生し、いずれかのアクセス
はポートが空くまで待たせる必要があるため、その分だ
け処理性能が低下するという問題があった。また、多ポ
ートのキャッシュメモリをバンク・インターリーブ方式
で実現する場合においては、同じバンクに同時にアクセ
スしようとするいわゆるバンク競合が発生すると、アク
セス処理を1つずつ順に処理する必要があるため、その
分だけ処理性能が低下するという問題があった。
もので、キャッシュメモリにおける電力消費を低減する
とともに、ポート競合及びバンク競合の発生率を低下さ
せることにより処理能力の低下を低減させた記憶装置を
提供することを目的とする。
に、本発明では、キャッシュメモリあるいは主記憶への
ストアデータを一時的に保持するストアバッファを備え
た記憶装置において、ロード命令により該キャッシュメ
モリからロードデータを読み出した場合には、該ロード
データを該ストアバッファに格納し、前記ロード命令に
より前記キャッシュメモリから読み出したロードデータ
を前記ストアバッファに格納する際に、前記ストアバッ
ファ中に空きエントリが存在する場合には、該空きエン
トリに前記ロード命令によるロードデータを格納し、前
記ストアバッファ中に空きエントリが存在せず、かつ前
記ストアバッファ中にロードデータが格納されているエ
ントリが存在する場合には、該エントリのいずれか1つ
に前記ロード命令によるロードデータを格納し、前記ス
トアバッファ中に空きエントリが存在せず、かつ前記ス
トアバッファ中にロードデータが格納されているエント
リも存在しない場合には、前記ロード命令によるロード
データを前記ストアバッファへ格納しないことを特徴と
する。
シュメモリあるいは主記憶へのストアデータを一時的に
保持するストアバッファを備えた記憶装置において、ロ
ード命令により該キャッシュメモリからロードデータを
読み出した場合には、該ロードデータを該ストアバッフ
ァに格納し、前記ストアバッファにストア命令によるス
トアデータを格納する際に、前記ストアバッファ中に該
ストア命令の対象アドレスと同一のアドレスのストアデ
ータまたはロードデータが格納されているエントリが存
在する場合、該エントリに前記ストア命令によるストア
データを格納し、前記ストアバッファ中に前記ストア命
令の対象アドレスと同一のアドレスのストアデータまた
はロードデータが格納されているエントリが存在せず、
かつ前記ストアバッファ中に空きエントリが存在する場
合、該空きエントリに前記ストア命令によるストアデー
タを格納し、前記ストアバッファ中に前記ストア命令の
対象アドレスと同一のアドレスのストアデータまたはロ
ードデータが格納されているエントリが存在せず、かつ
前記ストアバッファ中に空きエントリが存在せず、かつ
前記ストアバッファ中にロードデータが格納されている
エントリが存在する場合、該ロードデータが格納されて
いるいずれかの該エントリに前記ストア命令によるスト
アデータを格納することを特徴とする。なお、全てのエ
ントリにストアデータが格納されていて、どのストアデ
ータともアドレスが異なる場合、空きエントリができる
までストア命令の実行を停止する。
1または請求項2に記載の記憶装置において、前記ロー
ド命令の実行時において、前記ストアバッファに前記ロ
ード命令の対象アドレスと同じアドレスのストアデータ
またはロードデータが格納されていることが判明した場
合には、該ストアデータまたはロードデータを前記スト
アバッファより読み出して前記ロード命令の実行結果と
して転送することを特徴とする。
1乃至請求項3のいずれかひとつに記載の記憶装置にお
いて、前記ロード命令の実行時において、前記ストアバ
ッファに前記ロード命令の対象アドレスと同じアドレス
のストアデータまたはロードデータが格納されているこ
とが判明し、該ストアデータまたはロードデータを前記
ストアバッファより読み出して前記ロード命令の実行結
果として転送する期間において、前記キャッシュメモリ
や前記主記憶へのアクセスを中止することを特徴とす
る。
1乃至請求項4のいずれかひとつに記載の記憶装置にお
いて、ワード内の一部のバイトのみを対象としたストア
命令の実行時において、前記ストアバッファに前記スト
ア命令によるストアデータを格納する際に、前記ストア
命令の対象アドレスと同一のアドレスのストアデータま
たはロードデータが格納されているエントリが前記スト
アバッファ中に存在し、更に該エントリに前記ストア命
令によるストアデータを格納する場合に、前記ストア命
令がストア対象とするバイト位置には前記ストア命令に
よるストアデータを格納し、前記ストア命令がストア対
象としないバイト位置には書き込みを行わず以前の値を
そのまま保持することを特徴とする。
1乃至請求項5のいずれかひとつに記載の記憶装置にお
いて、ワード内の一部のバイトのみを対象としたストア
命令の実行時において、前記ストアバッファに前記スト
ア命令によるストアデータを格納する際に、前記ストア
命令の対象アドレスと同一のアドレスのストアデータま
たはロードデータが格納されているエントリが前記スト
アバッファ中に存在せず、かつ前記ストアバッファに空
きエントリが存在する場合には、前記キャッシュメモリ
あるいは前記主記憶より、前記ストア命令の対象アドレ
スと同一のアドレスのデータを読み出し、該データを前
記ストア命令がストア対象としないバイト位置に格納
し、前記ストア命令がストア対象とするバイト位置には
前記ストア命令によるストアデータを格納することを特
徴とする。
1乃至請求項6のいずれかひとつに記載の記憶装置にお
いて、前記ストアバッファのエントリのうち、一部のエ
ントリにはストアデータを格納せず、ロードデータのみ
を格納することを特徴とする。
1乃至請求項7のいずれかひとつに記載の記憶装置にお
いて、前記ストアバッファに格納されたストアデータを
前記ストアバッファから前記キャッシュメモリに書き込
む際に、前記ストアバッファに格納されている前記スト
アデータのうち、前記書き込み可能になったものの中か
ら任意の順番で前記キャッシュメモリに書き込みを行う
ことを特徴とする。
ストアバッファを検索し、ロードの対象のアドレスと同
じアドレスのストアデータまたはロードデータが存在す
れば、それをロードデータとしてストアバッファから転
送を行い、キャッシュメモリにはアクセスしない。すな
わち、従来と比べてストアバッファに格納されているロ
ードデータにヒットする分だけ、キャッシュメモリへの
アクセス回数が減少することになる。ストアバッファは
キャッシュメモリに比べてはるかに容量が小さいため、
アクセスしたときの消費電力も小さい。従って、キャッ
シュメモリへのアクセスの減少により、消費電力を削減
することができるという効果がある。
リからロードデータを読み出した場合には、該ロードデ
ータをストアバッファに格納する。通常、ストア命令に
よりストアしたデータをその直後にロード命令でロード
する場合はまれであるのに対して、ロード命令によりロ
ードしたデータを再びロードする場合は比較的多い。こ
のため、上述のようにキャッシュメモリから読み出され
たロードデータをストアバッファに格納することによ
り、後続するロード命令に対してストアバッファでヒッ
トする頻度が高くなり、キャッシュメモリにアクセスす
る頻度を低下させることが可能となる。
は、キャッシュメモリへのアクセスが減少することによ
り、キャッシュメモリでポート競合が発生する頻度が減
少する。さらに、多ポートのキャッシュメモリをバンク
・インターリーブ方式で実現する場合においても、キャ
ッシュメモリへのアクセスが減少することにより、バン
ク競合の発生確率も減少する。この結果、低ハードウエ
アコスト且つ低消費電力でポート競合やバンク競合の発
生確率が小さいキャッシュメモリを備える記憶装置を実
現することができるという特徴がある。
て図面を参照して詳細に説明する。図1は本発明の第1
の実施形態による記憶装置の構成を示すブロック図であ
る。同図において、符号1はストアバッファ、符号20
はキャッシュメモリ、符号30はセレクタ、符号31は
アライナである。
は当該ストアバッファ1の各エントリの有効・無効ビッ
トや、そのエントリに格納されているストアデータまた
はロードデータのワードアドレスを保持するタグバッフ
ァである。なお、ワードアドレスとは通常のバイト単位
でのアドレスであるバイトアドレスからワード内のオフ
セット部分を除去あるいは無視したワード単位でのアド
レスである。符号11はストア命令あるいはロード命令
の対象アドレスが当該ストアバッファ1に格納されてい
るか否かを判定し、判定結果に基づいた信号を出力する
比較回路である。符号12は当該ストアバッファ1に格
納されているストアデータまたはロードデータをワード
単位で保持するデータバッファである。これによりスト
アバッファ1は、ワードアドレス境界で整列したストア
データあるいはロードデータをワード単位で保持する。
符号13はセレクタであり、符号14はアライナであ
る。
号21は当該キャッシュメモリ20に格納されているキ
ャッシュラインのアドレスやライン状態などを保持する
タグアレイ、符号22はキャッシュメモリ20に格納さ
れているキャッシュラインのデータを保持するデータア
レイである。符号23はロード命令あるいはストア命令
の対象アドレスが当該キャッシュメモリ20に格納され
ているか否かを判定する比較回路、符号24は比較回路
23の出力に基づいてデータアレイ22からのデータを
出力するセレクタである。
アバッファ1において、ロード命令が発行された場合に
ついて図2及び図3を参照して説明する。なお、ロード
命令の実行は図2(a)及び図3(a)に示すように連
続する2つのクロック・サイクルで行われる。
クロックサイクルにおいてロード命令の対象アドレス
(以下、ロード命令対象アドレスとする)は、アドレス
線40を通じてキャッシュメモリ20内のタグアレイ2
1、データアレイ22、比較回路23及びストアバッフ
ァ1内のタグバッファ10、比較回路11に入力される
(図2(b))。続いて、ストアバッファ1内の比較回
路11により、タグバッファ10内の各エントリに格納
されているアドレスと、ロード命令対象アドレスとが比
較される。なお、この比較は全エントリ並列に行われ
る。この結果、いずれかのエントリに格納されているア
ドレスがロード命令対象アドレスと一致した場合、即ち
ストアバッファ1でヒットした場合、比較回路11はヒ
ット信号をデータバッファ12及び信号線43を通じて
キャッシュメモリ20及びセレクタ回路30に出力する
(図2(c))。
ファ12へ入力されると、第2のクロック・サイクルに
おいてデータバッファ12は、ヒットしたエントリに格
納されているストアデータまたはロードデータをデータ
線45を通じてセレクタ回路30に出力する(図2
(d))。セレクタ回路30は、データ線43を通じて
比較回路11からヒット信号が入力され、またデータバ
ッファ12からデータ線45により読み出しデータが供
給されると、この読み出しデータをアライナ回路31に
出力する。アライナ回路31は必要に応じて読み出しデ
ータの整列を行い、データ線47を通じてロードデータ
として転送する(図2(e))。これに対し、キャッシ
ュメモリ20はデータ線43により比較回路11からヒ
ット信号が入力されると、ストアバッファ1でヒットし
たと認識し、ロード命令による読み出し動作を中止す
る。これは、キャッシュメモリ内のクロック停止、アド
レスラッチの動作停止やセンスアンプの動作停止などを
伴なう。
アドレスがタグバッファ10のいずれのエントリにも格
納されていなかった場合、即ちストアバッファでミスし
た場合は、第1のサイクルにおいて比較回路11により
ヒット信号が出力されないこととなる(図3(c))。
これによりキャッシュメモリ20は、ストアバッファ1
でミスしたと認識する。この場合、第2のクロックサイ
クルにおいてキャッシュメモリ20は以下の動作を行
う。
を通じて入力されたアドレスの一部のビットをインデッ
クスとしてタグを検索し、該当するタグを抽出して比較
回路23へ出力する。また、これと同時にデータアレイ
22は、データをセレクタ回路24に出力する。なお、
ここで出力されるタグ及びデータは、ダイレクトマップ
ド方式のキャッシュメモリにおいてはそれぞれ1つであ
り、セット・アソシアティブ方式のキャッシュメモリに
おいてはその連想数だけ出力される。
出されたタグと信号線40を通じて入力されたロード命
令対象アドレスとを比較し、その比較結果を信号線42
を通じてセレクタ回路24及び30に出力する(図3
(d))。セレクタ回路24は、比較回路23から入力
されたタグの比較結果に基づいて、データアレイ22か
ら読み出されたデータのうち、比較回路23においてヒ
ットしたアドレスに対応するデータを選択し、データ線
44を通じてセレクタ回路30及びストアバッファ1内
のセレクタ回路13へ出力する(図3(e))。
からデータ線44に読み出されているデータをアライナ
回路31に出力する。アライナ回路31は必要に応じて
読み出しデータの整列を行い、データ線47を通じてロ
ードデータとして転送する(図3(f))。同時にスト
アバッファ1ではキャッシュメモリ20より読み出した
データの格納動作が行われる。具体的には、キャッシュ
メモリ20から読み出されたデータはデータ線44及び
セレクタ回路13を通じてデータバッファ12に入力さ
れる(図3(g))。
40を通じてタグバッファ10に入力されている。スト
アバッファ1は空きエントリがあれば、それら空きエン
トリのうちの1つに上記データ及びアドレスを格納す
る。空きエントリがなく、ロードデータが格納されてい
るエントリがあれば、それらのエントリのうちの1つに
上記データ及びアドレスを格納する。ストアバッファ1
のエントリにはすべてストアデータが格納されており、
空きエントリもロードデータが格納されているエントリ
がない場合には、格納は行わない。
タは、後続の同じアドレスを対象とするロード命令に転
送されることになる。この場合、前記したようにキャッ
シュメモリ20へのアクセスが中止されるため、消費電
力の削減やポート競合、バンク競合の発生頻度の低減に
効果がある。
の動作を具体例を用いて詳細に説明する。図4に、スト
アバッファ1の詳細構成図を示す。なお、ここでは、ス
トアバッファ1のエントリ数が4、データバッファ12
の各エントリがそれぞれ2バイトデータであるストアバ
ッファ1であるとする。
ントリ分のタグ101a〜101dと1つのセレクタ回
路102とから構成されている。タグ101a〜101
dはストアデータ有効ビットSV、ロードデータ有効ビ
ットLV、アドレス領域の3つの領域から構成され、こ
のストアデータ有効ビットSVが“1”であれば、該当
エントリにストアデータが格納されていることを示し、
ストアデータ有効ビットSVが“0”であれば、該当エ
ントリにストアデータが格納されていないことを示す。
同様に、ロードデータ有効ビットLVが“1”であれ
ば、該当エントリにロードデータが格納されていること
を示し、ロードデータ有効ビットLVが0であれば、該
当エントリにロードデータが格納されていないことを示
す。アドレス領域はアドレス線40より入力されるスト
アデータまたはロードデータのアドレスのワードアドレ
ス部分を格納する。セレクタ回路102は各エントリか
らのアドレスを選択してアドレス線46に出力する。
11a〜111dとOR回路112から構成される。比
較器111a〜111dはタグバッファ10から入力さ
れる各エントリのアドレスとアドレス線40で与えられ
るアドレスのワードアドレス部分を比較し、比較結果を
OR回路112及びデータバッファ12へ出力する。O
R回路112は各エントリの比較結果の論理和をとるこ
とにより、いずれかのエントリが一致する場合、信号線
43にヒット信号を出力する。
ッファ121a〜121dとセレクタ回路122から構
成される。バッファ121a〜121dは、データ線1
5から入力されるロードデータまたはストアデータを保
持する。セレクタ回路122は比較回路11からの比較
結果に基づいて、ヒットしたエントリのデータをデータ
線45に出力する。
いては、ストアデータ有効ビットSVには“0”が、ロ
ードデータ有効ビットLVには“1”が、アドレス領域
には16進数で表現された16ビットのワードアドレス
“0004”が、また、エントリ1のデータバッファ1
21aにはデータ“0101”が示されている。これ
は、エントリ1にはアドレス“0004”のロードデー
タ“0101”が格納されていることを意味する。ここ
で、1ワードは2バイトから構成され、16ビットのア
ドレスの内3ビット目から16ビット目がワードアドレ
スを表わし、1ビット目及び2ビット目でワード内のバ
イトを選択するものとする。
トアデータ有効ビットSVには“1”が、ロードデータ
有効ビットLVには“0”が、アドレス領域にはワード
アドレス“0010”が、エントリ2のデータバッファ
121bにはデータ“0202”が示されているため、
エントリ2にはアドレス“0010”のストアデータ
“0202”が格納されていることを意味する。
アデータ有効ビットSVには“0”が、ロードデータ有
効ビットLVには“1”が、アドレス領域にはワードア
ドレス“0028”が、エントリ3のデータバッファ1
21cにはデータ“0303”が示されており、エント
リ3にはアドレス“0028”のロードデータ“030
3”が格納されていることを意味する。一方、エントリ
4のタグ101dのアドレス領域にはワードアドレス
“0028”が格納されているが、ストアデータ有効ビ
ットSV及びロードデータ有効ビットLVには共に
“0”が格納されており、エントリ4にはロードデータ
もストアデータも格納されていないことを意味する。
アバッファにおいて、アドレス“002a”に対するロ
ード命令が発行された場合について説明する。まず、ロ
ード命令の対象アドレス“002a”はアドレス線40
を通じて各エントリに設置された比較器111a〜11
1dに入力される。各比較器111a〜111dは、各
エントリのタグに格納されたアドレスが対象アドレス
“002a”に一致するかを判定するとともに、タグの
ロードデータ有効ビットLVが“1”あるいはストアデ
ータ有効ビットSVが“1”であるか否かを判定する。
111dはワードアドレス、即ちアドレスの3ビット目
から16ビット目を比較するため、ロード命令の対象ア
ドレス“002a”は、詳細には“0028”、“00
29”、“002a”、“002b”と一致する。この
結果、エントリ3に格納されているタグのアドレスは
“0028”であり、更にロードデータ有効ビットLV
が“1”であることから、ロード命令対象アドレス“0
02a”に一致すると判定され、比較器111cはヒッ
ト信号をOR回路112及びセレクタ122へ出力す
る。
に格納されているアドレス“0028”とも一致する
が、エントリ4のロードデータ有効ビットLV及びスト
アデータ有効ビットSVは共に“0”であり、エントリ
4にはロードデータもストアデータも格納されていない
ため、エントリ4の比較器111dはヒット信号を出力
しない。
3の比較器111cからのヒット信号に基づいて、エン
トリ3のデータバッファ121cに格納されたデータ
“0303”をロードデータとしてデータ線45へ出力
する。
ドレス及びデータはそのままの状態で、例えばロード命
令としてアドレス“0020”に対するロード命令が発
行された場合について説明する。まず、ロード命令対象
アドレス“0020”はアドレス線40を通じて各エン
トリに設置された比較器111a〜111dへ入力され
る。比較器111a〜111dは、各エントリに格納さ
れているアドレスと、入力されたアドレス“0020”
と比較した結果、いずれのアドレスとも一致しないと判
定し、ヒット信号を出力しない。したがって信号線43
にヒット信号が出力されず、この結果アドレス“002
0”に対するロード命令はキャッシュメモリ20をアク
セスすることとなる。
果、キャッシュメモリにおいてヒットし、ロードデータ
“0505”が読み出されたとする。このキャッシュメ
モリ20より読み出されたロードデータ“0505”
は、図5に示すようにデータ線15を通じてデータバッ
ファ12に入力される。
るいはストアデータのいずれも格納されていないエント
リが存在すれば、そのエントリにキャッシュメモリ20
より読み出したロードデータを格納する。即ち、図5に
示すように、エントリ4のタグ101dのアドレス領域
にロードデータ命令の対象アドレス“0020”を、ロ
ードデータ有効ビットLVに“1”を、ストアデータ有
効ビットSVに“0”を、エントリ4のデータバッファ
121dにロードデータ“0505”を格納する。
スし、キャッシュメモリ20からデータを読み出した場
合には、そのデータをストアバッファ1内の空きエント
リに格納することにより、後続する同様のロード命令に
対してはストアバッファ1にてヒットする確率が高くな
る。
れた場合について説明する。なお、ストア命令の実行は
上述のロード命令と同様、連続する2つのクロック・サ
イクルで行われる。まず、ストア命令が発行されると、
第1のクロックサイクルにおいてストア命令の対象アド
レス(以下、ストア命令対象アドレスとする)は、アド
レス線40を通じてキャッシュメモリ20内のタグアレ
イ21、データアレイ22、比較回路23及びストアバ
ッファ1内のタグバッファ10、比較回路11に入力さ
れる(図6(b))。
1により、タグバッファ10内の各エントリに格納され
ているアドレスと、ストア命令対象アドレスとが比較さ
れる。なお、比較は全エントリ並列に行う。この結果、
いずれかのエントリに格納されているアドレスがストア
命令対象アドレスと一致した場合、即ちストアバッファ
1でヒットした場合、比較回路11はヒット信号をデー
タバッファ12及び信号線43を通じてキャッシュメモ
リ20及びセレクタ回路30に出力する(図6
(c))。
ファ12へ入力されると、第2のクロック・サイクルに
おいて、そのヒットしたエントリにストアデータの書き
込みを行う。具体的には、ストアデータはデータ線41
を通じてストアバッファ1へ供給され(図6(d))、
ストアバッファ1内のアライナ回路14、セレクタ回路
13及びデータ線15を経由してデータバッファ12に
入力される(図6(e))。なお、ストアデータのアド
レスは、アドレス線40を通じてタグバッファ10に入
力されているので、データバッファ12へのストアデー
タの格納と同時に、タグバッファ10にそのストアデー
タのアドレスを格納する。
のバイトのみをストアの対象とするものがある。そのよ
うなストア命令をストアバッファ1に格納する場合に
は、通常、ストアデータはデータ線41に下位のバイト
方向へ整列した形で与えられる。このため、アライナ回
路14によって、ストアするバイト位置をストア命令対
象アドレスが指し示すワード内のバイト位置に移動され
た後、データバッファ12では、ワード内のストアする
バイト位置のみ書き込み(上書き)を行う。
ア対象とするストア命令が発行された場合について図7
を参照して詳しく説明する。図7に示すように、今回の
例ではワード長は32ビット、バイト長は8ビットであ
り、ワード内には4つのバイトが存在し、下位のバイト
から順に第0バイト、第1バイト、第2バイト、第3バ
イトと呼ぶこととする。即ち、32ビットのワードにお
いて、下位のビットから順に0ビット目、1ビット目、
・・・、31ビット目としたとき、0ビット目から7ビ
ット目までの8ビットを第0バイト、8ビット目から1
5ビット目までの8ビットを第1バイト、16ビット目
から23ビット目までの8ビットを第2バイト、24ビ
ット目から31ビット目までの8ビットを第3バイトと
する(図7(A))。
2バイト目の位置のみにストアを行うストア命令が発行
されたとすると、ストア対象のバイトデータは、図7
(B)に示すように下位のバイト方向に整列した形で、
即ち第0のバイト位置にストアデータが格納された形
で、データ線41を通じてアライナ回路14へ入力され
る。アライナ回路14は、第0バイトの位置に与えられ
ているストアデータをストアするバイト位置、すなわち
第2バイト目の位置に移動する(図7(C))。なお、
ストア対象のバイト位置はストア命令対象アドレスの下
位2ビット、即ち0ビット目及び1ビット目で得ること
ができる。また、ストアデータが格納されているバイト
位置以外に格納されているデータは任意である。
ト位置にストアデータが移動されると、該ストアデータ
は信号線16を通じてセレクタ13へ入力された後デー
タバッファ12へ入力される。データバッファ12は同
じワードアドレスのデータが格納されているエントリに
ストアを行う。ただし、ストアするのはエントリ内のす
べてのバイトではなくストア対象の第2バイトのみであ
り、他のバイト位置については、以前の値が保持された
ままとする。これにより、一部のバイトのみにストアを
行うストア命令が発行された場合でも、ストアバッファ
1には常にワード全体で有効でかつ最新のストアデータ
が格納されていることになる。すなわち、後続のワード
全体をロードするロード命令に対して、ストアバッファ
1からデータを転送することが可能となる。
バッファ1にミスした場合、即ちストア命令対象アドレ
スに一致するアドレスがタグバッファ10のいずれのエ
ントリにも格納されていなかった場合について図8を参
照して説明する。まず、ストアバッファ1でミスした場
合は、第1のクロック・サイクルにおいて比較回路11
よりヒット信号が出力されない(図8(c))。ここ
で、発行されたストア命令がワード全体へのストアであ
る場合には、データ線41に与えられるストアデータを
データバッファ12に格納し、また、アドレス線40で
与えられるアドレスをタグバッファ10に格納する。な
お、格納するタグバッファ及びデータバッファのエント
リは、空いているエントリか、空いているエントリがな
ければロードデータが格納されているエントリである。
ではなく特定のバイトのみを対象としていた場合には、
第2クロック・サイクルでキャッシュメモリ20にアク
セスする。キャッシュメモリ20において、まず、タグ
アレイ21は、アドレス線40を通じて入力されたアド
レスの一部のビットをインデックスとしてタグを検索
し、該当するタグを抽出して比較回路23へ出力する。
また、これと同時にデータアレイ22は、データをセレ
クタ回路24に出力する。
出されたタグと信号線40を通じて入力されたストア命
令対象アドレスとを比較した結果、その比較結果を信号
線42を通じてセレクタ回路24及び30に出力する
(図8(d))。セレクタ回路24は、比較回路23か
ら入力されたタグの比較結果に基づいて、データアレイ
22から読み出されたデータのうち、比較回路23にお
いてヒットしたアドレスに対応するデータを選択し、デ
ータ線44を通じてセレクタ回路30及びストアバッフ
ァ1内のセレクタ回路13へ出力する(図8(f))。
バッファにおいてヒットするしないにかかわらず第2の
クロック・サイクルにおいてストアバッファ1内のアラ
イナ14へ入力される。このストアデータは図7(B)
に示したように、整列した形でデータ線41に与えられ
るため、アライナ回路14によりストアするバイト位置
に移動された後、セレクタ回路13に出力される。セレ
クタ13は、アライナ回路14より入力されたストアデ
ータと、キャッシュメモリ20から読み出されたデータ
とを合成して、信号線15を通じてデータバッファ12
へ出力し、データバッファ12は空きエントリか、ある
いは空いているエントリが無ければロードデータが格納
されているエントリへ、入力されたストアデータを格納
する(図8(g))。
ア対象とするストア命令が発行され、更にストアバッフ
ァにおいてミスした場合について図9を参照して詳しく
説明する。なお、ワード長及びバイト長は、図7に示し
たものと同様とする。例えば今、第2バイト目の位置の
みにストアを行うストア命令が発行されたとする。スト
アするバイトデータは、下位のバイト方向に整列した形
で、データ線41の第0バイトの位置に与えられる(図
9(B))。アライナ回路14は第0バイトの位置に与
えられたストアするバイトデータをストアするアドレス
位置、すなわち第2バイト目の位置に移動する(図9
(C))。
アドレスの以前のデータがキャッシュメモリ20から読
み出されている。データはワード全体、すなわちすべて
のバイトが有効である。セレクタ回路13は、ストアを
行うバイト位置、即ち第2バイトはアライナ回路14の
出力を選択し、その他のバイトはデータ線44のデータ
を選択してデータバッファ12に出力する(図9
(D))。
体で有効でかつ最新のデータが出力される。データバッ
ファ12はそのデータ全体、すなわちすべてのバイトを
格納する。これにより、一部のバイトのみにストアを行
うストア命令が発行された場合でも、ストアバッファ1
には常にワード全体で有効でかつ最新のストアデータが
格納されていることになる。即ち、後続のワード全体を
ロードするロード命令に対して、ストアバッファ1から
データを転送することができる。
を、ロード命令及びストア命令で、ストアバッファ1に
ヒットした場合及びストアバッファ1にミスし、かつキ
ャッシュメモリ20にヒットした場合についてそれぞれ
説明した。なお、ストアバッファ1にミスし、更にキャ
ッシュメモリ20にもミスした場合には、主記憶や2次
キャッシュメモリより読み出したデータをキャッシュメ
モリ20に格納した後、キャッシュメモリから読み出し
た該データをストアバッファ1へと書き込む。この間、
従来のノン・ブロッキング・キャッシュメモリと同様
に、後続のロード命令やストア命令で、ストアバッファ
1やキャッシュメモリ20にヒットするものを先に実行
することも可能である。
ストアデータは、キャッシュメモリ20に書き込み可能
になると、キャッシュメモリ20に転送し、ストアバッ
ファ1からは削除する。ここで、キャッシュメモリ20
に書き込み可能になるとは、ストアバッファ1にストア
データを格納したストア命令の実行が確定し、実行の取
り消しが発生しないことが保証される場合で、そのスト
アデータのアドレスがキャッシュメモリ20にヒットす
る場合である。より詳細には、データバッファ12から
データ線45を通じてキャッシュメモリ20のデータア
レイ22に出力し、格納する。同時にそのストアデータ
のアドレスは、タグバッファ10からアドレス線46を
通じてキャッシュメモリ20のタグアレイ21に出力
し、格納する。
ストアデータのアドレスが、キャッシュメモリ20にミ
スした場合は、主記憶や2次キャッシュメモリからミス
したアドレスのキャッシュラインデータをキャッシュメ
モリ20に格納した後、上記したキャッシュメモリ20
にヒットする場合と同様に、キャッシュメモリ20に格
納し、ストアバッファ1から削除する。
は、同じアドレスのストアデータは1つしか存在せず、
そのデータは常に最新のデータである。また、キャッシ
ュメモリ20にヒットする場合には、そのデータはワー
ド全体、即ち全てのバイトが有効である。これは、従来
のストアバッファと異なり、キャッシュメモリ20に書
き込み可能になった任意のストアデータから、任意の順
番で書き込みが行えることを意味する。即ち、あるエン
トリのストアデータがキャッシュメモリ20にミスし、
そのアドレスのデータが主記憶や2次キャッシュメモリ
からキャッシュメモリ20に書き込まれるのを待ってい
る間に、キャッシュメモリ20にヒットする他のストア
データの書き込みを先に実行することができる。従っ
て、本実施形態では効率的にストアバッファにエントリ
を空けることができるので、ストアバッファがストアデ
ータで一杯になり、命令の実行が停止することによる処
理性能の低下が小さいという効果が得られる。
ストアバッファ1の全てのエントリにストアデータが格
納されている場合はロードデータの格納を行わないとし
ているが、ロードデータのみを格納するエントリを設け
て、常にロードデータを格納可能としても良い。
て、ロード命令及びストア命令は連続する2クロック・
サイクルで実行しているが、それぞれのサイクルはパイ
プライン・ステージが独立しているため、ある命令が2
つ目のクロック・サイクルの処理を実行中に、別の命令
が1つ目のクロック・サイクルの処理を行うことができ
る。すなわち、毎クロック・サイクルでロード命令また
はストア命令を発行し、実行することができる。なお、
ロード命令やストア命令を実行するクロック・サイクル
は2サイクルに限るものではない。また、本実施形態に
よる記憶装置において、容量が4エントリのタグバッフ
ァ10、比較回路11、データバッファ12の実施の形
態を示したが、エントリ数はこの限りではない。
憶装置について図10を参照して説明する。第2の実施
形態における記憶装置は、2つのポートを有するストア
バッファ201、2つのポートを有するキャッシュメモ
リ220、2ポート分のセレクタ回路30A、30B及
び2ポート分のアライナ回路31A、31Bから構成さ
れる。更にストアバッファ201は、2ポートのタグバ
ッファ210、2ポートの比較回路211、2ポートの
データバッファ212、及び2ポート分のセレクタ回路
13A、13B、2ポート分のアライナ回路14A、1
4Bから構成され、2つのポート、ポートA及びBを通
じて同時に2つのロード命令もしくはストア命令を処理
することができる。
つのバンク、バンクX及びバンクY、入力セレクタ回路
50、出力セレクタ回路51から構成される。バンクX
及びバンクYはタグアレイ21、データアレイ22、比
較回路23、セレクタ回路24から構成される1ポート
のキャッシュメモリである。キャッシュメモリ220の
2つのポート、ポートA及びポートBのそれぞれの入力
である40A、43A、45A、46A及び40B、4
3B、45B、46Bは入力セレクタ回路50によりそ
のいずれかのポートの入力がバンクXまたはバンクYに
入力される。
X、44X及び42Y、44Yは出力セレクタ回路51
で選択された後、ポートAの出力42A、44A及びポ
ートBの出力42B、44Bに出力される。バンクX及
びバンクYは1つのポートしか持たないため、ポートA
及びポートBから同時にロード命令あるいはストア命令
の処理を行うことができないが、互いに独立に動作可能
であるので、ポートA及びポートBからのアクセスが異
なるバンクにアクセスする時に限り同時に2つの処理が
可能となる。2つのポートからのアクセスが同じバンク
をアクセスするバンク競合が発生する場合は、いずれか
の処理を待たせる必要があり、しいては性能低下を招い
てしまう。
を構成するタグバッファ210、比較回路211、デー
タバッファ212がすべて2つのポートを持ち、常に同
時に2つのアクセスを処理することができる。ストアバ
ッファ201はハードウェア規模が比較的小さいため多
ポート化が容易であるのに対して、キャッシュメモリ2
20のハードウェア規模はストアバッファ201に比べ
て遥かに大きいため、完全に多ポート化するのは現実的
ではなく、本例のようにバンク分割により擬似的に多ポ
ート化するのが一般的である。この場合、バンク競合の
発生を低減することが性能を向上するための大きな課題
となる。
令やストア命令が発行されると、まずストアバッファ2
01にアクセスされる。ストアバッファ201にヒット
すればロード命令、ストア命令ともそこで処理が終了
し、キャッシュメモリ220にはアクセスされない。し
かし、ロード命令またはストア命令がストアバッファ2
01にミスした場合には、キャッシュメモリ220にア
クセスされる。この場合、ポートA及びポートBを通じ
て異なるバンクにアクセスされる場合は、ポートA及び
ポートBからの処理を同時に行うことが可能となる。し
かしながら、ポートA及びポートBから同じバンクにア
クセスされる場合には、バンク競合が発生する。このよ
うな場合には、同時に処理を行うことができず、どちら
かの処理が待たされるため、処理能力が低下することと
なる。
ット率が高くなればキャッシュメモリ220へのアクセ
ス数は減少し、したがってバンク競合の発生率も減少す
るため、性能の低下を低減させることが可能となる。
令によりキャッシュメモリ220をアクセスした場合、
そのロードデータを信号線44Aまたは44Bを通じて
ストアバッファ201に格納することを特徴としてい
る。これによりストアバッファ201のヒット率が向上
するため、キャッシュメモリ220へのアクセス数が減
少し、バンク競合による性能の低下を回避することがで
きるという顕著な効果を奏する。更に、キャッシュメモ
リ220へのアクセスは、ストアバッファ201へのア
クセスに比べ消費電力が大きいことから、キャッシュメ
モリ220へのアクセス数が減少することにより消費電
力を減少させることができるという効果を奏する。
によれば、ストア命令によるストアデータをストアバッ
ファに格納するのに加えて、ロード命令によりキャッシ
ュメモリからロードデータを読み出した場合において
も、そのロードデータをストアバッファに格納する。こ
れにより、ロード命令実行時にストアバッファのヒット
率が向上し、キャッシュメモリへのアクセス数が減少す
るので、キャッシュメモリの消費電力を削減できるとい
う効果が得られる。
減少することにより、キャッシュメモリでポート競合が
発生する頻度が減少するため、ポート競合を原因とする
プロセッサ性能の低下を低減することができる。さら
に、多ポートメモリをバンク・インターリーブ方式で実
現したキャッシュメモリを備えた記憶装置の場合、キャ
ッシュメモリへのアクセスが減少することにより、バン
ク競合の発生確率が減少するため、バンク競合を原因と
する性能の低下を低減することができる。
トアバッファにストア命令によるストアデータを格納す
る際に、ストアバッファ中にストア命令の対象アドレス
と同一のアドレスのストアデータまたはロードデータが
格納されているエントリが存在する場合、エントリにス
トア命令によるストアデータを格納し、ストアバッファ
中にストア命令の対象アドレスと同一のアドレスのスト
アデータまたはロードデータが格納されているエントリ
が存在せず、かつストアバッファ中に空きエントリが存
在する場合、空きエントリにストア命令によるストアデ
ータを格納し、ストアバッファ中にストア命令の対象ア
ドレスと同一のアドレスのストアデータまたはロードデ
ータが格納されているエントリが存在せず、かつストア
バッファ中に空きエントリが存在せず、かつストアバッ
ファ中にロードデータが格納されているエントリが存在
する場合、ロードデータが格納されているいずれかのエ
ントリにストア命令によるストアデータを格納する。こ
れにより、ストアバッファのエントリを有効に使用する
ことができるので、後から発行されるロード命令または
ストア命令がストアバッファにヒットする確率が高くな
る。この結果、キャッシュメモリにアクセスする頻度が
減少するので、アクセス時の消費電力を削減することが
できる。
ード内の一部のバイトのみを対象としたストア命令の実
行時において、ストアバッファにストア命令によるスト
アデータを格納する際に、ストア命令の対象アドレスと
同一のアドレスのストアデータまたはロードデータが格
納されているエントリがストアバッファ中に存在し、更
にエントリにストア命令によるストアデータを格納する
場合に、ストア命令がストア対象とするバイト位置には
ストア命令によるストアデータを格納し、ストア命令が
ストア対象としないバイト位置には書き込みを行わず以
前の値をそのまま保持する。
のデータのみが格納されることとなる。また、従来にお
いてはデータの上書きができなかったため、同じアドレ
スのデータがストアデータとして供給された場合にも違
うエントリに書き込まなければならなかった。したがっ
て、エントリを有効に使用することができなかった。こ
れに対して、本発明の記憶装置によれば、同じアドレス
であればストアデータを上書きできるため、エントリを
有効に使用することが可能となる。
ード内の一部のバイトのみを対象としたストア命令の実
行時において、ストアバッファにストア命令によるスト
アデータを格納する際に、ストア命令の対象アドレスと
同一のアドレスのストアデータまたはロードデータが格
納されているエントリがストアバッファ中に存在せず、
かつストアバッファに空きエントリが存在する場合に
は、キャッシュメモリあるいは主記憶より、ストア命令
の対象アドレスと同一のアドレスのストアデータまたは
ロードデータを読み出し、ロードデータをストア命令が
ストア対象としないバイト位置に格納し、ストア命令が
ストア対象とするバイト位置にはストア命令によるスト
アデータを格納する。これにより、ストア命令に対して
ストアバッファでヒットしなかった場合においても、ワ
ード全体が有効で且つ最新のストアデータをストアバッ
ファに格納することが可能となる。これにより、後続の
ロード命令がストアバッファにおいてヒットする確率が
高くなるという効果が得られる。
トアバッファのエントリのうち、一部のエントリにはス
トアデータを格納せず、ロードデータのみを格納する。
これにより、ロード命令を実行した際に、キャッシュメ
モリより読み出したロードデータを確実にストアバッフ
ァに格納することができるため、後続のロード命令がス
トアバッファにヒットする確率を更に増加させることが
できる。また、請求項9に記載の発明によれば、ストア
バッファに格納されたストアデータをストアバッファか
らキャッシュメモリに書き込む際に、ストアバッファに
格納されているストアデータのうち、書き込み可能にな
ったものの中から任意の順番でキャッシュメモリに書き
込みを行う。これにより、効率的にストアバッファ内に
空きエントリを作ることができるため、ストアバッファ
がストアデータで一杯になり、命令の実行が停止するこ
とによる処理性能の低下を減少させることができる。ま
た、ロード命令実行時には、ロードデータをストアバッ
ファに格納する頻度が増加するため、後続のロード命令
がストアバッファにヒットする確率が増加する。この結
果、キャッシュメモリへのアクセス時の消費電力を削減
することができ、また、バンク競合や、ポート競合の発
生率も低下するので、処理能力を維持することが可能と
なるという効果が得られる。
構成を示したブロック図である。
ストアバッファにヒットした場合の動作を示すタイミン
グチャートである。
ストアバッファにミスした場合の動作を示すタイミング
チャートである。
おけるストアバッファの動作の具体例を示す図である。
おけるストアバッファの動作の具体例を示す図である。
ストアバッファにヒットした場合の動作を示すタイミン
グチャートである。
部のバイトのみ書き込む場合のデータ構成を説明する説
明図である。
部のバイトのみ書き込む場合に、ストア命令実行時にス
トアバッファにミスした場合の動作を示すタイミングチ
ャートである。
部のバイトのみ書き込む場合に、ストア命令実行時にス
トアバッファにミスした場合のデータ構成図を示す図で
ある。
の構成を示したブロック図である。
Claims (8)
- 【請求項1】キャッシュメモリあるいは主記憶へのスト
アデータを一時的に保持するストアバッファを備えた記
憶装置において、 ロード命令により該キャッシュメモリからロードデータ
を読み出した場合には、該ロードデータを該ストアバッ
ファに格納し、 前記ロード命令により前記キャッシュメモリから読み出
したロードデータを前記ストアバッファに格納する際
に、 前記ストアバッファ中に空きエントリが存在する場合に
は、該空きエントリに前記ロード命令によるロードデー
タを格納し、 前記ストアバッファ中に空きエントリが存在せず、かつ
前記ストアバッファ中にロードデータが格納されている
エントリが存在する場合には、該エントリのいずれか1
つに前記ロード命令によるロードデータを格納し、 前記ストアバッファ中に空きエントリが存在せず、かつ
前記ストアバッファ中にロードデータが格納されている
エントリも存在しない場合には、前記ロード命令による
ロードデータを前記ストアバッファへ格納しないことを
特徴とする記憶装置。 - 【請求項2】キャッシュメモリあるいは主記憶へのスト
アデータを一時的に保持するストアバッファを備えた記
憶装置において、 ロード命令により該キャッシュメモリからロードデータ
を読み出した場合には、該ロードデータを該ストアバッ
ファに格納し、 前記ストアバッファにストア命令によるストアデータを
格納する際に、 前記ストアバッファ中に該ストア命令の対象アドレスと
同一のアドレスのストアデータまたはロードデータが格
納されているエントリが存在する場合、該エントリに前
記ストア命令によるストアデータを格納し、 前記ストアバッファ中に前記ストア命令の対象アドレス
と同一のアドレスのストアデータまたはロードデータが
格納されているエントリが存在せず、かつ前記ストアバ
ッファ中に空きエントリが存在する場合、該空きエント
リに前記ストア命令によるストアデータを格納し、 前記ストアバッファ中に前記ストア命令の対象アドレス
と同一のアドレスのストアデータまたはロードデータが
格納されているエントリが存在せず、かつ前記ストアバ
ッファ中に空きエントリが存在せず、かつ前記ストアバ
ッファ中にロードデータが格納されているエントリが存
在する場合、該ロードデータが格納されているいずれか
の該エントリに前記ストア命令によるストアデータを格
納することを特徴とする記憶装置。 - 【請求項3】前記ロード命令の実行時において、前記ス
トアバッファに前記ロード命令の対象アドレスと同じア
ドレスのストアデータまたはロードデータが格納されて
いることが判明した場合には、該ストアデータまたはロ
ードデータを前記ストアバッファより読み出して前記ロ
ード命令の実行結果として転送することを特徴とする請
求項1または請求項2に記載の記憶装置。 - 【請求項4】前記ロード命令の実行時において、前記ス
トアバッファに前記ロード命令の対象アドレスと同じア
ドレスのストアデータまたはロードデータが格納されて
いることが判明し、該ストアデータまたはロードデータ
を前記ストアバッファより読み出して前記ロード命令の
実行結果として転送する期間において、前記キャッシュ
メモリや前記主記憶へのアクセスを中止することを特徴
とする請求項1乃至請求項3のいずれかひとつに記載の
記憶装置。 - 【請求項5】ワード内の一部のバイトのみを対象とした
ストア命令の実行時において、前記ストアバッファに前
記ストア命令によるストアデータを格納する際に、前記
ストア命令の対象アドレスと同一のアドレスのストアデ
ータまたはロードデータが格納されているエントリが前
記ストアバッファ中に存在し、更に該エントリに前記ス
トア命令によるストアデータを格納する場合に、前記ス
トア命令がストア対象とするバイト位置には前記ストア
命令によるストアデータを格納し、前記ストア命令がス
トア対象としないバイト位置には書き込みを行わず以前
の値をそのまま保持することを特徴とする請求項1乃至
請求項4のいずれかひとつに記載の記憶装置。 - 【請求項6】ワード内の一部のバイトのみを対象とした
ストア命令の実行時において、前記ストアバッファに前
記ストア命令によるストアデータを格納する際に、前記
ストア命令の対象アドレスと同一のアドレスのストアデ
ータまたはロードデータが格納されているエントリが前
記ストアバッファ中に存在せず、かつ前記ストアバッフ
ァに空きエントリが存在する場合には、前記キャッシュ
メモリあるいは前記主記憶より、前記ストア命令の対象
アドレスと同一のアドレスのデータを読み出し、該デー
タを前記ストア命令がストア対象としないバイト位置に
格納し、前記ストア命令がストア対象とするバイト位置
には前記ストア命令によるストアデータを格納すること
を特徴とする請求項1乃至請求項5のいずれかひとつに
記載の記憶装置。 - 【請求項7】前記ストアバッファのエントリのうち、一
部のエントリにはストアデータを格納せず、ロードデー
タのみを格納することを特徴とする請求項1乃至請求項
6のいずれかひとつに記載の記憶装置。 - 【請求項8】前記ストアバッファに格納されたストアデ
ータを前記ストアバッファから前記キャッシュメモリに
書き込む際に、前記ストアバッファに格納されている前
記ストアデータのうち、前記書き込み可能になったもの
の中から任意の順番で前記キャッシュメモリに書き込み
を行うことを特徴とする請求項1乃至請求項7のいずれ
かひとつに記載の記憶装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000103567A JP3498673B2 (ja) | 2000-04-05 | 2000-04-05 | 記憶装置 |
US09/824,677 US6678789B2 (en) | 2000-04-05 | 2001-04-04 | Memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000103567A JP3498673B2 (ja) | 2000-04-05 | 2000-04-05 | 記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001290702A JP2001290702A (ja) | 2001-10-19 |
JP3498673B2 true JP3498673B2 (ja) | 2004-02-16 |
Family
ID=18617250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000103567A Expired - Fee Related JP3498673B2 (ja) | 2000-04-05 | 2000-04-05 | 記憶装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6678789B2 (ja) |
JP (1) | JP3498673B2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100395756B1 (ko) * | 2001-06-16 | 2003-08-21 | 삼성전자주식회사 | 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서 |
US6963988B2 (en) * | 2002-06-27 | 2005-11-08 | International Business Machines Corporation | Fixed point unit power reduction mechanism for superscalar loop execution |
JP3784766B2 (ja) * | 2002-11-01 | 2006-06-14 | 株式会社半導体理工学研究センター | 多ポート統合キャッシュ |
US20040128448A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US7363427B2 (en) * | 2004-01-12 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Memory controller connection to RAM using buffer interface |
JP4336848B2 (ja) * | 2004-11-10 | 2009-09-30 | 日本電気株式会社 | マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式 |
JP5116275B2 (ja) * | 2006-09-29 | 2013-01-09 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
KR101388134B1 (ko) | 2007-10-01 | 2014-04-23 | 삼성전자주식회사 | 뱅크 충돌 방지 장치 및 방법 |
US8452946B2 (en) * | 2009-12-17 | 2013-05-28 | Intel Corporation | Methods and apparatuses for efficient load processing using buffers |
JP5561091B2 (ja) * | 2010-10-15 | 2014-07-30 | 富士通株式会社 | プロセッサシステム |
JP5480793B2 (ja) * | 2010-12-10 | 2014-04-23 | 株式会社日立製作所 | プログラマブルコントローラ |
KR101788245B1 (ko) * | 2011-02-25 | 2017-11-16 | 삼성전자주식회사 | 다중 포트 캐시 메모리 장치 및 그 구동 방법 |
US10114750B2 (en) | 2012-01-23 | 2018-10-30 | Qualcomm Incorporated | Preventing the displacement of high temporal locality of reference data fill buffers |
US9697884B2 (en) * | 2015-10-08 | 2017-07-04 | Rambus Inc. | Variable width memory module supporting enhanced error detection and correction |
JP6680978B2 (ja) * | 2016-04-15 | 2020-04-15 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN111124312B (zh) * | 2019-12-23 | 2023-10-31 | 第四范式(北京)技术有限公司 | 数据去重的方法及其装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0384641A (ja) | 1989-08-21 | 1991-04-10 | Sun Microsyst Inc | コンピュータシステムおよびこれの動作速度を速める方法 |
CA2045756C (en) | 1990-06-29 | 1996-08-20 | Gregg Bouchard | Combined queue for invalidates and return data in multiprocessor system |
JPH06100985B2 (ja) | 1991-06-26 | 1994-12-12 | 工業技術院長 | 階層キャッシュ・メモリ装置 |
JPH06100982B2 (ja) | 1992-05-20 | 1994-12-12 | 工業技術院長 | 階層キャッシュ・メモリ装置 |
JPH06222990A (ja) | 1992-10-16 | 1994-08-12 | Fujitsu Ltd | データ処理装置 |
JPH06301600A (ja) | 1993-04-19 | 1994-10-28 | Hitachi Ltd | 記憶装置 |
DE69530720T2 (de) | 1994-03-09 | 2003-11-27 | Sun Microsystems, Inc. | Verzögertes Cachespeicherschreiben eines Speicherungsbefehls |
US6078992A (en) * | 1997-12-05 | 2000-06-20 | Intel Corporation | Dirty line cache |
US20030074530A1 (en) * | 1997-12-11 | 2003-04-17 | Rupaka Mahalingaiah | Load/store unit with fast memory data access mechanism |
-
2000
- 2000-04-05 JP JP2000103567A patent/JP3498673B2/ja not_active Expired - Fee Related
-
2001
- 2001-04-04 US US09/824,677 patent/US6678789B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20010029571A1 (en) | 2001-10-11 |
JP2001290702A (ja) | 2001-10-19 |
US6678789B2 (en) | 2004-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3498673B2 (ja) | 記憶装置 | |
EP0106667B1 (en) | Central processing unit | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
US6401192B1 (en) | Apparatus for software initiated prefetch and method therefor | |
KR100626858B1 (ko) | 단일 적재 워드를 형성하기 위해서 별개의 저장 버퍼 엔트리들로부터의 개별 바이트들의 전송을 적재하는 저장 시스템 | |
JP3969009B2 (ja) | ハードウェアプリフェッチシステム | |
US5515518A (en) | Two-level branch prediction cache | |
EP0097790B1 (en) | Apparatus for controlling storage access in a multilevel storage system | |
US6021471A (en) | Multiple level cache control system with address and data pipelines | |
US6779102B2 (en) | Data processor capable of executing an instruction that makes a cache memory ineffective | |
US7836253B2 (en) | Cache memory having pipeline structure and method for controlling the same | |
JP2004157593A (ja) | 多ポート統合キャッシュ | |
JPH11175401A (ja) | コンピュータのランダムアクセスメモリシステム | |
EP1039377B1 (en) | System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy | |
JPH02239331A (ja) | データ処理システム及びその命令実行を促進する方法 | |
US5283890A (en) | Cache memory arrangement with write buffer pipeline providing for concurrent cache determinations | |
US20040073753A1 (en) | Directoryless L0 cache for stall reduction | |
US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
JPH0756808A (ja) | データキャッシュバッファ及び記憶方法 | |
US5490262A (en) | Dual cache memory device with cache monitoring | |
JP3614946B2 (ja) | メモリバッファ装置 | |
US6671781B1 (en) | Data cache store buffer | |
JP4116346B2 (ja) | 演算処理装置及びそのアドレス変換方法 | |
JPH07200406A (ja) | キャッシュシステム | |
JPH1185613A (ja) | キャッシュメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20031104 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071205 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081205 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091205 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091205 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101205 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101205 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111205 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111205 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121205 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121205 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131205 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |