JP2008107983A - キャッシュメモリ - Google Patents
キャッシュメモリ Download PDFInfo
- Publication number
- JP2008107983A JP2008107983A JP2006288862A JP2006288862A JP2008107983A JP 2008107983 A JP2008107983 A JP 2008107983A JP 2006288862 A JP2006288862 A JP 2006288862A JP 2006288862 A JP2006288862 A JP 2006288862A JP 2008107983 A JP2008107983 A JP 2008107983A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- tag
- hit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
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
【課題】多段パイプライン構造のキャッシュメモリにおいて、連続するメモリアクセスを効率的に処理可能とする。
【解決手段】キャッシュメモリ1は、第1ステージで、タグメモリ11からのタグアドレスの読み出しを実行する。第2ステージで、ヒット判定部12によるヒット判定を実行する。キャッシュヒットの場合には、第3ステージ以降で、データメモリ10からのデータ読み出しと、データメモリ10から読み出されたデータのプロセッサ2への出力を実行する。一方、ミスヒットの場合には、第3ステージで、コントローラ13によるタグメモリ11の更新制御及びタグメモリ11を迂回してアドレスラッチ17の保持データをヒット判定部12に入力するためのセレクタ19の制御を実行し、第4ステージ以降で、主記憶3からのデータ読み出しによるデータメモリ10の更新と、主記憶3から読み出されたデータのプロセッサ2への出力を実行する。
【選択図】図1
【解決手段】キャッシュメモリ1は、第1ステージで、タグメモリ11からのタグアドレスの読み出しを実行する。第2ステージで、ヒット判定部12によるヒット判定を実行する。キャッシュヒットの場合には、第3ステージ以降で、データメモリ10からのデータ読み出しと、データメモリ10から読み出されたデータのプロセッサ2への出力を実行する。一方、ミスヒットの場合には、第3ステージで、コントローラ13によるタグメモリ11の更新制御及びタグメモリ11を迂回してアドレスラッチ17の保持データをヒット判定部12に入力するためのセレクタ19の制御を実行し、第4ステージ以降で、主記憶3からのデータ読み出しによるデータメモリ10の更新と、主記憶3から読み出されたデータのプロセッサ2への出力を実行する。
【選択図】図1
Description
本発明は、プロセッサによるメモリアクセスを複数の処理ステージに分割されたパイプラインにより処理するキャッシュメモリに関する。
クロック同期式SRAM(シンクロナスSRAM)等を利用し、パイプライン構造を採用したキャッシュメモリが実用化されている。このようなパイプライン構造を有するキャッシュメモリは、プロセッサと低速メモリの間に配置され、プロセッサによるメモリアクセスを複数の処理ステージに分割されたパイプラインにより処理する(例えば特許文献1を参照)。ここで、パイプライン構造のキャッシュメモリにメモリアクセス要求を行うプロセッサは、典型的にはRISC(Reduced Instruction Set Computer)方式のマイクロプロセッサであるが、CISC(Complex Instruction Set Computer)方式のプロセッサである場合や、音声処理や画像処理等のデジタル信号処理を行うDSP(Digital Signal Processor)である場合もある。また、パイプライン構造のキャッシュメモリが2次キャッシュ以下で使用される場合であれば、当該キャッシュメモリにメモリアクセス要求を行うプロセッサは、上位キャッシュメモリとなる。
キャッシュメモリのパイプラインステージ数を増加させることによりスループットの向上が期待できるが、その半面、キャッシュアクセス時間、つまり、プロセッサがアクセス要求をキャッシュメモリに与えてから結果が得られるまでの時間は増加することになる。このようなキャッシュアクセス時間の増加が敬遠されるために、キャッシュメモリのパイプラインステージ数は2段であることが一般的である。
一方、キャッシュメモリの消費電力を削減するために、特にセットアソシアティブ方式のキャッシュメモリにおいては、ロード要求に応答してデータメモリの全てのウェイからデータの読み出しを行うのではなく、ヒットしたウェイにのみアクセスしてデータの読み出しを行う構成も知られている。
2段パイプライン構造を有する従来のキャッシュメモリの構成例を図5に示す。図5に示すキャッシュメモリ8は、プロセッサ2と低速メモリである主記憶3との間に設けられた4ウェイ・セットアソシアティブ方式のキャッシュメモリである。キャッシュメモリ8とプロセッサ2との間は、アドレスバス4、データバス5及びWAIT信号線7により接続されている。また、キャッシュメモリ8と主記憶3の間はメモリバス6により接続されている。
キャッシュメモリ8が有するデータメモリ10は、主記憶3に格納されているデータの部分集合に相当するデータを格納するためのメモリである。データメモリ10の記憶領域は、物理的又は論理的に4つのウェイに分割されている。また、各ウェイはさらにラインと呼ばれる複数ワードのデータ格納単位により管理される。データメモリ10のデータ格納位置は、アドレスバス4から入力される入力アドレスの下位部分をデコードすることによって指定される。具体的には、入力アドレスの下位部分の上位側であるインデックスアドレスによりラインが指定され、入力アドレスの最下位部分であるワードアドレスによりライン内でのワード位置が指定される。入力アドレスの一例を図7に示す。ワードアドレス、インデックスアドレス及び上位部分のタグアドレスのそれぞれのビット数は、キャッシュメモリ8のウェイ数、1ウェイに含まれるライン数、及び1ラインに含まれるワード数をどのように設計するかに応じて定められる。
タグメモリ11は、データメモリ10にライン単位で格納されているデータに対応するタグアドレスを格納するメモリである。タグメモリ11は、入力アドレスに含まれるインデックスアドレスによってアクセスされ、インデックスアドレスをデコードすることにより特定されたタグアドレスを出力する。なお、キャッシュメモリ8は4ウェイ方式であるため、1つのインデックスアドレスに対し4つのウェイに対応する4つのタグアドドレスを出力する。また、タグメモリ11は、格納されたタグアドレスの有効性を示すバリッドフラッグ(不図示)と、ストアアクセスによりデータメモリ10が更新されたことにより、データメモリ10の保持データと主記憶3の保持データの間に不整合が生じていることを示すダーティフラグ(不図示)を保持している。
ヒット判定部12は、入力アドレスに含まれるタグアドレスと、タグメモリ11から出力される4つのタグアドレスとの比較によって、キャッシュヒットであるかミスヒットであるかを判定する。具体的には、入力アドレスに含まれるタグアドレスとタグメモリ11の出力とが一致する場合にキャッシュヒットを示す信号を出力し、不一致である場合にキャッシュミスを示す信号を出力する。ヒット判定部12の出力信号は、1ウェイ毎のヒット判定結果をそれぞれ1ビットの論理値で示す合計4ビットの信号である。
コントローラ83は、ヒット判定部12によりキャッシュヒットと判定された場合に、チップセレクト信号(CS信号)及びリードストローブ信号(RS信号)をデータメモリ10に出力することによりデータメモリ10からのデータ読み出しを制御する。一方、ヒット判定部12によりミスヒットと判定された場合に、コントローラ83は、入力アドレスに含まれるタグアドレスによるタグメモリ11の書き換え制御、データリフィル制御を行う。ここで、データリフィル制御とは、主記憶3からのデータ読み出し、及び、主記憶から読み出されたデータによるデータメモリ10の書き換えの制御である。また、コントローラ83は、ミスヒットの発生をプロセッサ2に通知するためにWAIT信号線7を用いてWAIT信号を出力する。
アドレスラッチ14は、入力アドレスの少なくともタグアドレス部分を1クロックサイクルだけ保持する回路であり、例えば、Dフリップフロップにより構成することができる。アドレスラッチ14の保持するデータは、タグメモリ11の書き換えを行う際の入力データとして利用される。
次に、図6を参照してキャッシュメモリ8の動作を説明する。図6は、プロセッサ2によるロード要求に対するキャッシュメモリ8のパイプライン動作を示しており、図6(a)がキャッシュヒット時の動作、図6(b)がミスヒット時の動作を示している。まず、パイプラインの第1ステージにおいて、プロセッサ2から入力される入力アドレスによりタグメモリ11がアクセスされ、これに対応するタグアドレスが読み出される。さらに、同じ第1ステージにおいて、ヒット判定部12よりヒット判定が行われる。
ヒット判定部12による判定がキャッシュヒットである場合は、第1ステージの終端において、入力アドレス、CS信号及びRS信号がデータメモリ10に入力される。また、図6(a)に示すように、第1ステージに引き続く第2ステージにおいて、データメモリ10からデータが読み出され、読み出されたデータがプロセッサ2に出力される。キャッシュメモリ8の出力データは、汎用レジスタ等のプロセッサ2の所定の格納領域に格納される。
一方、ヒット判定部12による判定がミスヒットである場合は、第1ステージの終端におけるCS信号及びRS信号の出力は行われない。そして、図6(b)に示すように、第1ステージに引き続く第2ステージにおいて、置換ウェイを決定する処理、タグメモリ11に保持されている置換ウェイに決定されたラインに対応するタグアドレスを入力アドレスのタグアドレスによって更新する処理が行われる。また、同じく第2ステージにおいて、メモリバス6を介して接続された主記憶3に対するリードアクセスが行われ、入力アドレスに対応するデータが主記憶3から読み出されてデータメモリ10に格納される。さらに、同じく第2ステージにおいて、主記憶3から読み出されたデータがプロセッサ2に出力される。
特開平10−63575号公報
上述したように、図5に示した従来のキャッシュメモリ8は、1段目のパイプラインステージにおいてタグメモリ11からのタグアドレスの読み出し、及びヒット判定部12によるヒット判定までを行う。キャッシュヒットした場合は、2段目のパイプラインステージで、データメモリ10のヒットしたウェイからのデータ読み出し、及び読み出されたデータのプロセッサ2への転送を行う。ミスヒットであった場合は、2段目のパイプラインステージで、置換ウェイの決定、タグメモリ11の更新、主記憶3から読み出されたデータによるデータメモリ10の更新、主記憶3から読み出されたデータのプロセッサ2への転送を行う。
しかしながら、上述したような2段パイプラインのキャッシュメモリでは、1ステージでの処理量が多いためにキャッシュメモリ8の動作周波数の向上が難しく、十分な高速化(スループットの向上)が達成できない。そこで、本願の発明者は、3段以上の多段パイプライン化を図り、タグメモリからのタグアドレス読み出し処理と、読み出されたタグアドレスと入力アドレスに含まれるタグアドレスの比較によるヒット判定処理とを分割して異なるパイプラインステージで実行する構成を考案した。しかしながら、このようにパイプラインステージの分割を行ってパイプラインの多段化を進める場合には、キャッシュメモリの効率的な動作の妨げとなる以下に述べる問題が発生することが分かった。
つまりその問題とは、あるメモリアクセス要求においてミスヒットが発生しタグメモリの更新が行われた場合に、直後のメモリアクセス要求におけるヒット判定に直前のメモリアクセス要求でのミスヒット発生によるタグメモリの更新が反映されないという問題である。これを放置すると、例えば、直後のメモリアクセス要求がミスヒットの発生した直前のメモリアクセス要求と同一メモリブロックに対するアクセスであり、ミスヒット検出に応じて既に低速メモリからのデータリフィルが行われているにもかかわらず、再度ミスヒットと判定して無駄なデータリフィル処理を行ってしまうことになる。また、直後のメモリアクセス要求が、直前のメモリアクセス要求でのミスヒット検出に基づくデータリフィル処理によって置換対象とされたメモリブロックに対するアクセスである場合は、本来ミスヒットと判定すべきところをキャッシュヒットと誤判定し、誤ったデータの読み出しが実行されてしまう。
このような無駄なデータリフィル動作やデータメモリからの誤ったデータの読み出しを回避する1つの解決策として、あるメモリアクセス要求でミスヒットが発生した場合に、後続のメモリアクセス要求の処理をパイプラインの先頭、つまりタグメモリの読み出し処理から再度実行するアーキテクチャを採用することが考えられる。このようなアーキテクチャは、RISC方式のマイクロプロセッサ等で採用されるアーキテクチャである。しかしながら、このようなアーキテクチャは、ハードウェア規模の増大、再実行シーケンスを制御する制御部の複雑性の増大を招くという問題がある。
タグメモリからのタグアドレス読み出し処理とヒット判定処理とを異なるパイプラインステージに分割する場合に生じる上述の問題を解消するために、本発明の第1の態様にかかるキャッシュメモリは以下のように構成される。つまり、本発明の第1の態様にかかるキャッシュメモリは、プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するキャッシュメモリであって、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、前記プロセッサより入力される入力アドレスに含まれるインデックスアドレスを用いて前記タグメモリを検索することにより得られるタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定するヒット判定部と、前記入力アドレスに含まれるタグアドレスを保持するラッチ回路と、前記ラッチ回路の保持データを、前記タグメモリを迂回して前記ヒット判定部に入力するためのバイパス回路と、前記ヒット判定部によりキャッシュヒットと判定された場合に、前記データメモリからのデータ読み出しを制御し、前記ヒット判定部によりミスヒットと判定された場合に、前記入力アドレスに含まれるタグアドレスによる前記タグメモリの更新処理、前記低速メモリからのデータ読み出しによる前記データメモリの更新処理、及び前記バイパス回路の動作を制御するコントローラとを備える。さらに、本発明の第1の態様にかかるキャッシュメモリは、第1のパイプラインステージにおいて、前記インデックスアドレスを用いた前記タグメモリからのタグアドレスの読み出し処理を実行する。次に、前記第1のパイプラインステージに続く第2のパイプラインステージにおいて、前記ヒット判定部による判定処理を実行する。続いて、前記第2のパイプライステージにおいてキャッシュヒットと判定された場合には、前記第2のパイプラインステージの直後に引き続く第3のパイプラインステージ以降において、前記データメモリからのデータ読み出し処理と、前記データメモリから読み出されたデータの前記プロセッサへの出力とを実行する。一方、前記第2のパイプライステージにおいてミスヒットと判定された場合には、前記第3のパイプラインステージにおいて、前記コントローラによる前記タグメモリの更新制御及び前記タグメモリを迂回して前記ラッチ回路の保持データを前記ヒット判定部に入力するための前記バイパス回路の制御を実行し、前記第3のパイプラインステージに続く第4のパイプラインステージ以降において、前記低速メモリからのデータ読み出しによる前記データメモリの更新処理と、前記低速メモリから読み出されたデータの前記プロセッサへの出力とを実行する。
上述した本発明の第1の態様にかかるキャッシュメモリによれば、先行するメモリアクセス要求においてミスヒットが発生した場合に、先行するメモリアクセス要求でのミスヒット発生によるタグメモリの更新を後続のメモリアクセス要求におけるヒット判定に反映させることができる。このため、後続のメモリアクセス要求に関するヒット判定における判定誤りを防止し、無駄なデータリフィル動作やデータメモリからの誤ったデータの読み出しを抑制することができる。さらに、前記第1の態様にかかるキャッシュメモリによれば、先行するメモリアクセス要求でミスヒットが発生した場合に、後続のメモリアクセス要求の処理をパイプライン先頭のタグメモリの読み出し処理からやり直す必要がない。このため、タグメモリの読み出し処理から再度実行するための冗長なハードウェアを必要としない。
本発明により、キャッシュメモリのパイプラインの多段化を進める場合にも、連続するメモリアクセスを効率的に処理可能なキャッシュメモリを提供することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
本実施の形態にかかるキャッシュメモリ1の構成を図1に示す。本実施の形態にかかるキャッシュメモリ1は、4ウェイ・セットアソシアティブ方式のキャッシュメモリである。なお、図5に示した従来のキャッシュメモリ8との対比を容易にするために、4ウェイ・セットアソシアティブ構成としているが当該構成は一例である。つまり、キャッシュメモリ1のウェイ数は他の数でもよく、またダイレクトマップ方式であっても良い。
なお、キャッシュメモリ1が有するデータメモリ10、タグメモリ11、ヒット判定部12及びデータラッチ14は、図5に示した構成要素と同様であるため、対応する構成要素と同一の符号を付して詳細な説明を省略する。
キャッシュメモリ1が有するコントローラ13のキャッシュヒット時の動作は、従来のコントローラ83と同様である。つまり、コントローラ13は、ヒット判定部12によりキャッシュヒットと判定された場合に、チップセレクト信号(CS信号)及びリードストローブ信号(RS信号)をデータメモリ10に出力することによりデータメモリ10からのデータ読み出しを制御する。一方、ヒット判定部12によりミスヒットと判定された場合には、コントローラ13は、入力アドレスに含まれるタグアドレスによるタグメモリ11の書き換え制御及びデータリフィル制御に加えて、後述するセレクタ19の動作制御を行う。
また、キャッシュメモリ1は、4段パイプライン構造を採用しているため、パイプラインステージ間での中間データを保持するためのラッチ回路を図5のキャッシュメモリ8に比べて多く有している。アドレスラッチ15〜17及び20と、データラッチ21がこれに相当する。アドレスラッチ15は、入力アドレスの少なくともインデックスアドレス及びワードアドレス部分を保持する回路である。アドレスラッチ16及び17は、アドレスラッチ14と同様に、入力アドレスの少なくともタグアドレス部分を保持する回路である。
アドレスラッチ20は、セレクタ19とヒット判定回路12との間で中間データを保持する回路である。なお、アドレスラッチ20は、入力アドレスに対応してタグメモリ11から出力される4つのタグアドレスを保持できるよう構成される。例えば、平行して出力される4つのタグアドレスを保持できるように、それぞれが1つのタグアドレスを保持可能なDフリップフロップを4つ設ければ良い。
データラッチ21は、データメモリ10の出力データを保持する回路である。つまり、データラッチ21は、データメモリ10へアクセスする処理と、プロセッサ2にデータを転送する処理とを別々のパイプラインステージに分割するために設けられている。
バイパス配線18及びセレクタ19は、タグメモリ11を迂回してアドレスラッチ17の保持データをヒット判定部12に入力するためのバイパス回路である。セレクタ19の動作は、コントローラ13から出力される制御信号(SC信号)により行われる。
続いて以下では、図2を参照してキャッシュメモリ1の動作を説明する。図2は、プロセッサ2によるロード要求に対するキャッシュメモリ1のパイプライン動作を示しており、図2(a)がキャッシュヒット時の動作、図2(b)がミスヒット時の動作を示している。まず、パイプラインの第1ステージにおいて、プロセッサ2から入力される入力アドレスによりタグメモリ11がアクセスされ、これに対応する4つのタグアドレスが読み出される。読み出された4つのタグアドレスは、セレクタ19を経由してアドレスラッチ20に保持される。
次に、第1ステージに引き続く第2ステージにおいて、ヒット判定部12によりヒット判定が行われる。ヒット判定部12は、アドレスラッチ16に保持された入力アドレスに含まれるタグアドレスと、アドレスラッチ20に保持されタグアドレスとを比較する。
ヒット判定部12による判定がキャッシュヒットである場合は、第2ステージの終端において、入力アドレス、CS信号及びRS信号がデータメモリ10に入力される。また、図2(a)に示すように、第2ステージに引き続く第3ステージにおいて、データメモリ10からデータが読み出され、読み出されたデータがデータラッチ21に保持される。最後に、第3ステージに引き続く第4ステージにおいて、データラッチ21の保持データがプロセッサ2に転送され、汎用レジスタ等のプロセッサ2の所定の格納領域に格納される。
一方、ヒット判定部12による判定がミスヒットである場合は、第2ステージの終端におけるCS信号及びRS信号の出力は行われない。そして、図2(b)に示すように、第2ステージに引き続く第3ステージにおいて、置換するウェイを決定する処理、タグメモリ11に保持されている置換ウェイに決定されたタグアドレスを入力アドレスのタグアドレスにより更新する処理が行われる。置換ウェイの決定は、4つのウェイからランダムに選択するランダム法、最も過去に参照されたウェイを選択するLRU法など、従来から知られている決定方法により行えば良い。
さらに、コントローラ13は、第3ステージにおいてセレクタ19を制御し、置換ウェイに対応するタグアドレスを保持しているアドレスラッチ20を、アドレスラッチ17の格納値、つまり入力アドレスのタグアドレスにより更新する。
ここで、コントローラ13は、上述した置換ウェイの決定処理及びタグメモリ11の更新処理、セレクタ19の制御を第3ステージの最初のクロックサイクル、つまり図2(b)のC3サイクルにおいて実行するとともに、WAIT信号を出力してパイプライン動作を1クロックサイクルだけストールさせる。
ストールされた第3ステージの2サイクル目の後に続く第4ステージでは、メモリバス6を介して接続された主記憶3に対するリードアクセスが行われ、入力アドレスに対応するデータが主記憶3から読み出されてデータメモリ10に格納される。さらに、同じく第4ステージにおいて、主記憶3から読み出されたデータがプロセッサ2に出力される。
上述のように動作するキャッシュメモリ1の効果について、図3及び4を参照して説明する。図3は、2つのロード要求(ロード要求A及びB)が連続して行われる場合のキャッシュメモリ1のパイプライン処理を示すタイミングチャートである。さらに詳しくは、先行するロード要求Aにおいてミスヒットが発生した場合の処理を示している。
図3に示すように、ロード要求Aの2段目(m+1ステージ)のヒット判定がミスヒットとなると、引き続く3段目(m+2ステージ)の1サイクル目(C3サイクル)において置換ウェイの決定及びタグメモリ11の書き換えが行われる。さらに、バイパス配線18及びセレクタ19により、新たにタグメモリ11に格納されるタグアドレスが、タグメモリ11を迂回してアドレスラッチ20に与えられる。さらに、パイプラインが1サイクルだけストールされる。
なお、上述したロード要求Aに対する処理に平行して、後続のロード要求Bに対する処理が開始されている。つまり、ロード要求Aの2段目に当たるm+1ステージでは、ロード要求Bの1段目の処理であるタグメモリ11からのタグアドレス読み出しが行われる。つまり、ロード要求Bのタグアドレス読み出し時点では、先行するロード要求Aのミスヒットに伴うタグメモリ11の更新は完了していない。このため、ロード要求Bの2段目(m+2ステージ)では、ロード要求Bに対するヒット判定が行われるが、このヒット判定は、先行するロード要求Aのミスヒットに伴うタグメモリ11の更新を反映せずに行われる。
しかしながら、ストールされたm+2ステージの2サイクル目(C4サイクル)で再び実行されるロード要求Bのヒット判定は、タグメモリ11を迂回してアドレスラッチ20に与えられた新しいタグアドレスを用いてヒット判定が再実行される。
このように、本実施の形態にかかるキャッシュメモリ1によれば、先行するメモリアクセス要求においてミスヒットが発生した場合に、先行するメモリアクセス要求でのミスヒット発生によるタグメモリ11の更新を後続のメモリアクセス要求におけるヒット判定に反映させることができる。このため、後続のメモリアクセス要求に関するヒット判定における判定誤りを防止し、無駄なデータリフィル動作やデータメモリからの誤ったデータの読み出しを抑制することができる。さらに、キャッシュメモリ1によれば、図3に示したように、先行するメモリアクセス要求でミスヒットが発生した場合に、後続のメモリアクセス要求の処理を先頭のタグメモリ11の読み出し処理からやり直す必要がない。このため、タグメモリ11の読み出し処理から再度実行するための冗長なハードウェアが不要となる。また、タグメモリ11の読み出し処理の再実行によって、後続のメモリアクセス要求のキャッシュアクセス時間が増加することを抑制できる。
また、本実施の形態にかかるキャッシュメモリ1は、以下に説明する点で有効である。図4は、プロセッサ2がキャッシュメモリ1を介さずに直接主記憶3にデータ書き込みを行う直接ストア要求と、キャッシュメモリ1に対するロード要求が連続して行われる場合を示したタイミングチャートである。つまり、図4(b)の直接ストアアクセスのパイプラインはプロセッサ2のパイプラインを示しており、図4(c)のロード要求のパイプラインは、キャッシュメモリ12のパイプラインを示している。
図4(b)の直接ストアアクセスは、プロセッサ2においてIFステージ(C1サイクル)からEXEステージ(C6サイクル)までの6段パイプラインで実行される。具体的には、IFステージ(C1サイクル)では、命令キャッシュからの命令取り込みが行われ、IDステージ(C2サイクル)ではフェッチされた命令のデコードが行われ、ADRステージ(C3サイクル)では実効アドレスの計算が行われる。EXEステージ(C6サイクル)では、主記憶3へのデータ書き込みが実行されるが、この場合、メモリバス6のバス速度とプロセッサ2の処理速度との速度差によりプロセッサ2がストールすることを防止するため、直接主記憶3に対してデータ書き込みを行うのではなく、いったんストアバッファ(不図示)を経由する構成が一般的である。このようにストアバッファを経由する場合、EXEステージ(C6サイクル)では、ストアバッファに対する書き込みデータの出力のみが行われ、主記憶へのデータ書き込みは、EXEステージ以降のクロックサイクル(C7サイクル)以降で行われる。
このように、直接ストアアクセスによる主記憶3への実アクセスがC7サイクル以降で発生する場合、C6サイクルではストアバッファに書き込み中であり、メモリバス6へのアクセス要求は出ていないことになる。このため、仮に、ミスヒットを検出したキャッシュメモリ1によるメモリバス6へのアクセス要求が図4のC6サイクルで先に発生すると、競合する命令が存在しないために、ミスヒットによる主記憶3からのデータ読み出しが先に開始されてしまい、直前のストア命令(直接ストアアクセス)によるメモリバス6へのアクセスが後で実行されることになる。もし、同一アドレス対する直接ストア要求及びロード要求であった場合は、処理順序が入れ替わることによって、これ以降のプログラムの正常実行ができなくなる。
しかしながら、本実施の形態のキャッシュメモリ1は、ミスヒット発生時の主記憶3からのデータ読み出しをパイプラインの最終ステージで行うこととしている。このため、図4のタイミングチャートにおいて、キャッシュメモリ1によるメモリバス6へのアクセスが発生するのはC8サイクル以降であり、これより前にストアバッファによるメモリバス6へのアクセスが開始されていることになる。なお、図4(c)において、C5サイクルのCMPステージはヒット判定が行われるパイプラインステージを表しており、C6サイクルのWTGステージは、ミスヒットに伴うタグメモリ11の更新が行われるパイプラインステージを表しており、C8サイクル以降のMacステージは、主記憶3からのデータ読み出し及び読み出されたデータのプロセッサ2への転送が行われるパイプラインステージを表している。図4に示すように、ストアバッファ(不図示)によるメモリバス6へのアクセス要求とキャッシュメモリ1によるメモリバス6へのアクセス要求とが共に発生しているか、又は、キャッシュメモリ1によるアクセス要求が後から発生すれば、メモリバス6のバスコントローラ(不図示)は命令実行順序に応じてアクセス要求を調停することができる。したがって、同一アドレス対する直接ストア要求及びロード要求であっても、プログラムを正常に実行することができる。
なお、本実施の形態にかかるキャッシュメモリ1の構成は一例であって、様々な変形が可能である。例えば、パイプラインステージ数は4段に限定されない。また、コントローラ13の具体的な構成は、複数の回路の集合でも良く、例えば、置換ウェイの計算、セレクタ19の制御、主記憶3へのアクセス制御を個別の回路で実現しても良い。
また、本発明のその他の実施の形態には、上述したキャッシュメモリ1が有する構成の一部を有するキャッシュメモリがある。具体的には、タグメモリ11の読み出し処理とヒット判定処理を分割して別々のパイプラインステージで実行するキャッシュメモリとし、ミスヒットが発生した場合に、ヒット判定を行うパイプラインステージの直後のパイプラインステージにおいて、置換ウェイの決定及びタグメモリ11の書き換えを実行するとともに、ミスヒットのあったアクセス要求に関するタグアドレスを、タグメモリ11を迂回して後続のアクセス要求のヒット判定にフォワーディングする構成とすればよい。これにより、後続のアクセス要求をパイプラインの先頭から再実行することなく、ヒット判定の誤りを防止することができる。
また、上述したキャッシュメモリ1は、ミスヒット時にパイプラインをストールさせる構成である。このような構成は、置換されるタグアドレスの情報を後続のメモリアクセス要求のヒット判定に確実に反映せることができる点で有効である。しかしながら、例えば、ランダム方式による置換ウェイの決定などによって置換ウェイの決定処理を高速化することにより、パイプラインをストールさせずに置換されるタグアドレスの情報を後続のメモリアクセス要求のヒット判定に反映させることも可能である。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
1 キャッシュメモリ
2 プロセッサ
3 主記憶
4 アドレスバス
5 データバス
6 メモリバス
7 WAIT信号線
10 データメモリ
11 タグメモリ
12 ヒット判定部
13 コントローラ
14〜17 アドレスラッチ
18 バイパス配線
19 セレクタ
20 アドレスラッチ
21 データラッチ
2 プロセッサ
3 主記憶
4 アドレスバス
5 データバス
6 メモリバス
7 WAIT信号線
10 データメモリ
11 タグメモリ
12 ヒット判定部
13 コントローラ
14〜17 アドレスラッチ
18 バイパス配線
19 セレクタ
20 アドレスラッチ
21 データラッチ
Claims (4)
- プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するキャッシュメモリであって、
前記低速メモリの部分集合に相当するデータを格納するデータメモリと、
前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、
前記プロセッサより入力される入力アドレスに含まれるインデックスアドレスを用いて前記タグメモリを検索することにより得られるタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定するヒット判定部と、
前記入力アドレスに含まれるタグアドレスを保持するラッチ回路と、
前記ラッチ回路の保持データを、前記タグメモリを迂回して前記ヒット判定部に入力するためのバイパス回路と、
前記ヒット判定部によりキャッシュヒットと判定された場合に、前記データメモリからのデータ読み出しを制御し、前記ヒット判定部によりミスヒットと判定された場合に、前記入力アドレスに含まれるタグアドレスによる前記タグメモリの更新処理、前記低速メモリからのデータ読み出しによる前記データメモリの更新処理、及び前記バイパス回路の動作を制御するコントローラとを備え、
第1のパイプラインステージにおいて、前記インデックスアドレスを用いた前記タグメモリからのタグアドレスの読み出し処理を実行し、
前記第1のパイプラインステージに続く第2のパイプラインステージにおいて、前記ヒット判定部による判定処理を実行し、
前記第2のパイプライステージにおいてキャッシュヒットと判定された場合には、前記第2のパイプラインステージの直後に引き続く第3のパイプラインステージ以降において、前記データメモリからのデータ読み出し処理と、前記データメモリから読み出されたデータの前記プロセッサへの出力とを実行し、
前記第2のパイプライステージにおいてミスヒットと判定された場合には、前記第3のパイプラインステージにおいて、前記コントローラによる前記タグメモリの更新制御及び前記タグメモリを迂回して前記ラッチ回路の保持データを前記ヒット判定部に入力するための前記バイパス回路の制御を実行し、前記第3のパイプラインステージに続く第4のパイプラインステージ以降において、前記低速メモリからのデータ読み出しによる前記データメモリの更新処理と、前記低速メモリから読み出されたデータの前記プロセッサへの出力とを実行する、キャッシュメモリ。 - 前記低速メモリからのデータ読み出しによる前記データメモリの更新処理が、最終段のパイプラインステージで実行されることを特徴とする請求項1に記載のキャッシュメモリ。
- 前記ヒット判定部によりミスヒットと判定された場合に前記第3のパイプラインステージには少なくとも2クロックサイクルが割り当てられ、前記コントローラは前記タグメモリの更新を前記第3のパイプラインステージの最終クロックサイクルより前のクロックサイクルまでに実行するとともに、前記最終クロックサイクルにおいて前記ラッチ部の保持データが前記ヒット判定部に入力されるよう前記バイパス回路の動作を制御する、請求項1又は2に記載のキャッシュメモリ。
- 前記バイパス回路は、
前記ラッチ部から出力されるタグアドレス及び前記タグメモリから出力されるデータのいずれかを前記ヒット判定部に対して選択的に出力するセレクタを備え、
前記コントローラは、前記第3のパイプラインステージにおいて、前記ヒット判定部の判定結果がミスヒットであることに応じて前記セレクタに前記ラッチ部に格納されたデータの出力を選択させ、前記ヒット判定部の判定結果がミスヒットでない場合に前記セレクタに前記タクグメモリから出力されるデータを選択させる、請求項1乃至3のいずれかに記載のキャッシュメモリ。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006288862A JP2008107983A (ja) | 2006-10-24 | 2006-10-24 | キャッシュメモリ |
| GB0719926A GB2443298B (en) | 2006-10-24 | 2007-10-11 | Cache memory having pipeline structure and method for controlling the same |
| US11/877,874 US7836253B2 (en) | 2006-10-24 | 2007-10-24 | Cache memory having pipeline structure and method for controlling the same |
| KR1020070107376A KR100955433B1 (ko) | 2006-10-24 | 2007-10-24 | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006288862A JP2008107983A (ja) | 2006-10-24 | 2006-10-24 | キャッシュメモリ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2008107983A true JP2008107983A (ja) | 2008-05-08 |
| JP2008107983A5 JP2008107983A5 (ja) | 2009-11-05 |
Family
ID=38788037
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006288862A Pending JP2008107983A (ja) | 2006-10-24 | 2006-10-24 | キャッシュメモリ |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US7836253B2 (ja) |
| JP (1) | JP2008107983A (ja) |
| KR (1) | KR100955433B1 (ja) |
| GB (1) | GB2443298B (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011141657A (ja) * | 2010-01-06 | 2011-07-21 | Yokogawa Electric Corp | データ処理装置 |
| WO2013001632A1 (ja) * | 2011-06-29 | 2013-01-03 | 富士通株式会社 | キャッシュ制御装置及びパイプライン制御方法 |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009217640A (ja) * | 2008-03-11 | 2009-09-24 | Ricoh Co Ltd | データ転送制御装置 |
| JP5583893B2 (ja) * | 2008-05-28 | 2014-09-03 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
| US8332590B1 (en) * | 2008-06-25 | 2012-12-11 | Marvell Israel (M.I.S.L.) Ltd. | Multi-stage command processing pipeline and method for shared cache access |
| JP2010102623A (ja) * | 2008-10-27 | 2010-05-06 | Nec Electronics Corp | キャッシュメモリ及びその制御方法 |
| JP2011028343A (ja) * | 2009-07-22 | 2011-02-10 | Fujitsu Ltd | 演算処理装置、およびデータ転送方法 |
| KR101635395B1 (ko) | 2010-03-10 | 2016-07-01 | 삼성전자주식회사 | 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법 |
| CN108228646B (zh) * | 2016-12-21 | 2022-02-08 | 伊姆西Ip控股有限责任公司 | 用于访问数据的方法和电子设备 |
| JP2018106227A (ja) * | 2016-12-22 | 2018-07-05 | ルネサスエレクトロニクス株式会社 | キャッシュメモリ装置及び半導体装置 |
| US11256657B2 (en) | 2019-03-26 | 2022-02-22 | Intel Corporation | System, apparatus and method for adaptive interconnect routing |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH077356B2 (ja) * | 1989-05-19 | 1995-01-30 | 株式会社東芝 | パイプライン方式のマイクロプロセッサ |
| JPH0740247B2 (ja) * | 1989-06-20 | 1995-05-01 | 松下電器産業株式会社 | キャッシュメモリ装置 |
| JP3152345B2 (ja) | 1996-08-19 | 2001-04-03 | 日本電気株式会社 | キャッシュメモリ |
| TW451132B (en) * | 1998-12-15 | 2001-08-21 | Nippon Electric Co | System and method for cache processing |
| US6983346B2 (en) * | 2002-05-10 | 2006-01-03 | Texas Instruments Incorporated | Reducing tag-ram accesses and accelerating cache operation during cache miss |
-
2006
- 2006-10-24 JP JP2006288862A patent/JP2008107983A/ja active Pending
-
2007
- 2007-10-11 GB GB0719926A patent/GB2443298B/en not_active Expired - Fee Related
- 2007-10-24 US US11/877,874 patent/US7836253B2/en active Active
- 2007-10-24 KR KR1020070107376A patent/KR100955433B1/ko active Active
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011141657A (ja) * | 2010-01-06 | 2011-07-21 | Yokogawa Electric Corp | データ処理装置 |
| WO2013001632A1 (ja) * | 2011-06-29 | 2013-01-03 | 富士通株式会社 | キャッシュ制御装置及びパイプライン制御方法 |
| JP5637312B2 (ja) * | 2011-06-29 | 2014-12-10 | 富士通株式会社 | キャッシュ制御装置及びパイプライン制御方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20080098174A1 (en) | 2008-04-24 |
| US7836253B2 (en) | 2010-11-16 |
| GB2443298B (en) | 2011-06-29 |
| KR100955433B1 (ko) | 2010-05-04 |
| GB2443298A (en) | 2008-04-30 |
| KR20080036940A (ko) | 2008-04-29 |
| GB0719926D0 (en) | 2007-11-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7836253B2 (en) | Cache memory having pipeline structure and method for controlling the same | |
| US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
| US7219185B2 (en) | Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache | |
| US20180011748A1 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
| US8117395B1 (en) | Multi-stage pipeline for cache access | |
| US8332590B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
| JP3498673B2 (ja) | 記憶装置 | |
| JPH06242951A (ja) | キャッシュメモリシステム | |
| US6859860B2 (en) | Control circuits comparing index offset and way for cache system and method of controlling cache system | |
| US20100106910A1 (en) | Cache memory and method of controlling the same | |
| CN101833517B (zh) | 快取存储器系统及其存取方法 | |
| US20050015552A1 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
| JP4621292B2 (ja) | キャッシュ制御装置およびキャッシュ制御方法 | |
| EP0442690A2 (en) | Data cache store buffer for high performance computer | |
| JP2020095345A (ja) | 演算処理装置、メモリ装置、及び演算処理装置の制御方法 | |
| JP4765249B2 (ja) | 情報処理装置およびキャッシュメモリ制御方法 | |
| JP3295728B2 (ja) | パイプラインキャッシュメモリの更新回路 | |
| JPH07200406A (ja) | キャッシュシステム | |
| US8370582B2 (en) | Merging subsequent updates to a memory location | |
| CN103262029B (zh) | 可编程控制器 | |
| US8468306B2 (en) | Microprocessor and method for deferred store data forwarding for store background data in a system with no memory model restrictions | |
| JP2001344152A (ja) | キャッシュメモリ装置 | |
| JP2001154845A (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
| JP2001505327A (ja) | 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法 | |
| JP2006139646A (ja) | データ転送装置およびデータ転送方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090910 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090916 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120110 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120508 |