JP3727244B2 - キャッシュシステムの制御回路 - Google Patents
キャッシュシステムの制御回路 Download PDFInfo
- Publication number
- JP3727244B2 JP3727244B2 JP2001022210A JP2001022210A JP3727244B2 JP 3727244 B2 JP3727244 B2 JP 3727244B2 JP 2001022210 A JP2001022210 A JP 2001022210A JP 2001022210 A JP2001022210 A JP 2001022210A JP 3727244 B2 JP3727244 B2 JP 3727244B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- store
- index
- tag search
- tag
- 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
Images
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、ストア命令を一旦記憶可能なストアキューを備え、かつ命令のリオーダーを可能とする半導体装置に用いて好適な、キャッシュシステムの制御回路に関する。
【0002】
【従来の技術】
データキャッシュ(あるいはデータキャッシュシステム)を有する半導体装置には、ストアキュー(あるいはライトバッファもしくはストアバッファ)と呼ばれるデータ書き込み命令用のバッファメモリを備え、主記憶装置、およびデータキャッシュにおけるデータメモリへのデータ書き込み時に、一旦書き込みアドレスとデータとからなるストア命令をストアキューに保持させることで、マイクロプロセッサの実行効率を向上させようとするものがある。この種の技術については、例えば特開平9−114734号公報「ストアバッファ装置」、特開2000−181780号公報「ストアバッファ装置」等に記載されている。なお、本願では「データキャッシュ(システム)」は、「タグメモリ」および「データメモリ」とそれらの制御回路とから構成されているものとする。
【0003】
また、ストアキューを用いる半導体装置では、命令リオーダーと呼ばれる命令順序を入れ替える制御を行うことがある。命令リオーダーでは、例えば、タグ検索済みのストア命令をストアキューに保持し、ストア命令の書き込みに先立って、後続のロード命令によってデータメモリや主記憶装置に対して読み出しを行う。このことで、主記憶装置やデータメモリへのアクセス効率の向上を図っている。ただし、この命令リオーダーにはアクセス先の依存関係を壊さない範囲でのみ入れ替え可能であるという制約がある。すなわち、同一アドレスに対して、ストア命令、ロード命令の順にアクセスする場合、ストア命令による書き込みに先立ってロード命令による読み出しを行うと、誤った値を読み出すことになる。
【0004】
図15は、命令リオーダーの動作例を説明するための図である。命令▲1▼はロード命令であり、16進数("0x")で示すアドレス"1000"のデータをレジスタ"r8"に読み出す命令である。同様に、命令▲2▼、▲4▼、▲5▼は、レジスタ"r9"、"r11"、"r12"へ、アドレス"1500"、"1840"、"1760"のデータをそれぞれロードする命令である。そして、命令▲3▼は、ストア命令であり、アドレス"1760"にレジスタ"r10"のデータを書き込む命令である。図15に示す例では、▲1▼,▲2▼,▲4▼の命令は依存関係がないので任意の順番で入れ替え可能である。一方、▲3▼,▲5▼の命令はアドレスが重なっているので、命令▲3▼→▲5▼の実行順序は保証する必要ある。したがって、入れ替え例としては、命令▲3▼,▲1▼,▲2▼,▲4▼,▲5▼や、命令▲1▼,▲2▼,▲4▼,▲3▼,▲5▼といったものが考えられる。例えば命令▲3▼,▲1▼,▲2▼,▲4▼,▲5▼のように命令を入れ替えると、対象アドレスが同一である▲3▼のストア命令と▲5▼のロード命令との時間間隔を大きくすることができるので、命令▲1▼〜▲5▼合計での処理時間を短縮することが可能である。
【0005】
次に、図11〜図14を参照して、命令リオーダーの制御において、アドレスの依存関係を保証するために設けられている従来の構成例およびその動作例について説明する。図11は依存関係の有無を検知するための回路構成を示すブロック図である。図12は主記憶あるいはデータメモリへアクセスする場合のアドレスの構成を示す説明図である。図13は図11の構成と組み合わせて用いられるデータキャッシュ(タグメモリ104およびデータメモリ105)の1ウェイ分の構成を示すブロック図である。そして、図14が、図11の構成に係るタグ検索を伴う命令の処理手順を示すフローチャートである。ここで、タグ検索を伴う命令とは、ロード命令、プリフェッチ命令、ストア命令等のデータキャッシュを利用する際にタグ検索を必要とする命令を意味する。またタグ検索とは、ロード命令、プリフェッチ命令、ストア命令等が処理対象とするアドレスにおけるページフレーム番号がタグメモリ104に格納されているかどうかを検索する処理である。
【0006】
この例では、図12に示すように、アドレス信号は、上位の所定ビットからなるページフレーム番号(あるいはタグ)と、中間の所定ビットからなるインデックスと、下位の所定ビットからなるオフセットから構成されている。一方、データキャッシュは、図13に示すように、タグメモリ104とデータメモリ105から構成されているが、タグメモリ104はM個の領域を有し、各領域にはそのインデックスに割り当てられているページフレーム番号が記憶され、さらに、図示してない他の状態保持用の複数のビットデータが記憶されている。また、データメモリ105は、タグメモリ104の各インデックス0〜M−1のページフレーム番号に対応する0〜M−1のインデックスが付けられたM個のデータ領域に区分されている。このデータメモリ105の各インデックスに対応するデータ領域は、複数のデータ領域から構成されていて、それぞれの位置は、図12に示すオフセットの値によって指定されるものである。
【0007】
図11に戻り、本例におけるアドレスの依存関係の有無の検知は、図12に示すアドレスのインデックス部分の比較によって行われる。図11に示す例は、上述したストア命令を保持するためのストアキュー101の段数が4段の場合の構成である。タグ検索を伴う命令を処理しようとする場合(ここではタグ検索を伴う命令が対象とするアドレスのインデックスがインデックスBであるとする)、4個の比較器(0)〜(3)からなる比較器群102によって、ストアキュー101の各段に保持されているインデックスA0〜A3と、インデックスBが比較される。比較器群102の4個の比較器(0)〜(3)による比較結果は、OR回路103によって演算(論理和)されて、その結果によってインデックスBがインデックスA0〜A3のいずれかに一致しているか否かが得られることになる。
【0008】
次に、図14を参照して、タグ検索を伴う命令の処理について概要を説明する。タグ検索を伴う命令(図14の説明において、以下、対象命令とする)を処理する場合、図11に示す構成によって、検索対象のインデックスとストアキュー内のすべてのストア命令のインデックスを比較する処理を行う(ステップS101)。ここで、検索対象のインデックスが、ストアキュー内のストア命令のインデックスと1つ以上一致した場合、ストアキュー内の該当命令による書き込みを行う(ステップS102)。以降、同様にステップS101〜S102の処理を繰り返し行う。ステップS101でのインデックス比較の結果がすべて不一致であった場合、対象命令に対するタグ検索処理を実行する(ステップS103)。タグ検索処理では、対象命令のページフレーム番号がタグメモリ104の検索対象インデックス内に記憶されている(ヒット)か否(ミス)かを調べ(ステップS103)、ヒットの場合は後続の処理を実行する(ステップS105)。ミスの場合は、タグメモリ104の該当するインデックスに対してリプレース処理をした後(ステップS104)、後続の処理を行う(ステップS105)。
【0009】
ステップS104のリプレース処理は、ページフレーム番号の更新に伴って、データキャッシュ(タグメモリ104とデータメモリ105)の内容を更新する処理である。処理の内容は、データメモリ105の内容を主記憶に書き戻す必要がある場合と、ない場合とで異なり、2種類の処理に分けられる。例えば主記憶からデータメモリ105に読み出されていたデータが、更新時までに変更されなかった場合には、そのデータを主記憶に書き戻す必要はなく、単に新たに設定されたページフレーム番号に対応するデータを主記憶からデータメモリ105の対応するインデックスの領域に読み出してくるだけでよい。この書き戻し(ライトバック)を伴わないデータの読み出しのみの処理をリフィル動作と呼ぶ。一方、データを主記憶に書き戻した後、新たに設定されたページフレーム番号に対応するデータを主記憶からデータメモリ105の対応するインデックスの領域に読み出してくる動作は、ライトバックおよびリフィル動作と呼ぶ。そして、リフィル動作、ならびに、ライトバックおよびリフィル動作の両方をまとめてリプレース動作(リプレース処理)と呼ぶこととする。つまり、リプレース処理と言った場合、リフィル動作のみを行うときと、ライトバック動作とリフィル動作の両者を行うときのどちらかを意味することになる。
【0010】
また、ステップS102の処理では、ストアキュー内の該当命令による書き込みが終了するまで、当該対象命令が停止、すなわちストールすることになる。
【0011】
【発明が解決しようとする課題】
ところで、従来の技術では、図11を参照して説明したように、タグ検索前にインデックスのみの比較が行われ、比較結果がひとつでも一致した場合にはストール状態となってしまう。しかしながら、タグ検索を伴う命令とストアキュー内のストア命令との間では、インデックスが一致している場合でも、例えばオフセットが異なっているときには、対象とするアドレスが異なるので、比較した命令間に依存関係は存在しない。すなわち、従来の技術では、このような命令に依存関係が存在しない場合でも、ストール状態になってしまうことがある。そのためストール状態が発生する確率が比較的高く、したがって、命令のリオーダーが効率的に行われなくなるという課題があった。
【0012】
本発明は、上記の事情を考慮してなされたものであって、不要なストール状態の発生をできるだけ回避し、それによって命令のリオーダーを促進することで、マイクロプロセッサの性能を向上させることができるキャッシュシステムの制御回路を提供することを目的とする。
【0013】
【課題を解決するための手段】
上記目的を達成するために、請求項1記載の発明は、少なくとも1以上のストア命令を格納するためのストアキューを備えるキャッシュシステムの制御方法において、タグ検索を伴う命令のインデックス及びオフセットと前記ストアキューに格納されたストア命令のインデックス及びオフセットを比較する第1のステップを実行し、前記第1のステップの比較の結果前記タグ検索を伴う命令のインデックス及びオフセットと前記ストアキューに格納されたストア命令のインデックス及びオフセットが少なくとも1以上一致する場合に、前記タグ検索を伴う命令をストールし、前記タグ検索を伴う命令のインデックス及びオフセットと一致した前記ストアキューに格納されたストア命令を実行する第2のステップを実行し、前記第1又は第2のステップを実行した後に前記タグ検索を伴う命令のタグ検索を行う第3のステップを実行し、前記第3のステップのタグ検索の結果キャッシュミスヒットである場合に、前記タグ検索を伴う命令のインデックス及び格納先ウェイと前記ストアキューに格納されたストア命令のインデックス及び格納先ウェイを比較する第4のステップを実行し、前記第4のステップの比較の結果前記タグ検索を伴う命令のインデックス及び格納先ウェイと前記ストアキューに格納されたストア命令のインデックス及び格納先ウェイが少なくとも1以上一致する場合に、前記タグ検索を伴う命令をストールし、前記タグ検索を伴う命令のインデックス及び格納先ウェイと一致した前記ストアキューに格納されたストア命令を実行し、前記ストア命令の実行後リプレース処理を行う第5のステップを実行することを特徴とする。請求項2記載の発明は、前記第1のステップの前に、前記タグ検索を伴う命令がストア命令であるか否かを判断する第6のステップを実行し、前記タグ検索を伴う命令がストア命令である場合には、第1及び第2のステップを実行しないことを特徴とする。請求項3記載の発明は、第3のステップのタグ検索の結果キャッシュヒットである場合、若しくは、前記第5のステップの実行後、前記タグ検索を伴う命令がロード命令である場合には前記ロード命令を実行し、前記タグ検索を伴う命令がストア命令である場合には前記ストアキューに前記ストア命令を格納する第7のステップを実行することを特徴とする。
【0014】
請求項4記載の発明は、前記前記第3のステップにて行われるタグ検索は、前記タグ検索を伴う命令のタグがタグメモリの検索対象インデックス内に格納されているか否かを検索する処理であることを特徴とする。請求項5記載の発明は、前記タグ検索を伴う命令の格納先ウェイは、LRU(Least Recently Used)の入れ替えアルゴリズムによって決定することを特徴とする。請求項6記載の発明は、前記キャッシュシステムは、mウェイ(mは2以上の整数)のセットアソシアティブ方式による構成を有していることを特徴とする。
【0017】
【発明の実施の形態】
以下、図面を参照して本発明によるキャッシュシステムの制御回路ならびにそれを用いた半導体装置の実施の形態について説明する。図1は、本発明によるキャッシュシステムの制御回路の構成を機能ブロックに分けて示すとともに、制御信号の流れを示すブロック図である。図1に示す実施形態において本発明が最も特徴とする部分の構成は、ストール検出(ストアキューヒット)6とストール検出(インデックスマッチ)7、およびそれらの入出力信号に関係する部分の構成である。
【0018】
命令フェッチ1は、順次、命令をフェッチし、複数の実行ユニット2,3,…に供給する。実行ユニット2は、ロード命令またはストア命令を処理するものであって、OR回路5からストール状態を指示するストール信号が出力されていない場合に、ロード命令またはストア命令を解読し、その結果得られたアドレスのオフセット、インデックス等を示す信号を、セレクタ4の一方の入力端子へと出力する。セレクタ4は、ストール信号が出力されていない状態で実行ユニット2の出力を選択してバッファ8へ入力する。このバッファ8の出力は、セレクタ4の他方の入力端子に入力されて、OR回路5からストール状態を指示するストール信号が出力されている場合にセレクタ4からそのまま出力されて、バッファ8の入力へ帰還されることになる。
【0019】
なお、本実施形態では説明を簡略化するため、実行ユニット2で処理される命令を、データキャッシュを使用するものであって、かつ、内部レジスタと、データキャッシュのデータメモリまたは主記憶装置との間でデータの読み出しまたは書き込みを行うロード命令またはストア命令に限定する。ただし、本発明の適用の範囲はこのようなロード命令やストア命令に限定されることなく、タグ検索を伴う命令であれば適用可能である。
【0020】
OR回路5は、ストール検出(ストアキューヒット)6と、ストール検出(インデックスマッチ)7との出力を入力として、論理和を求めて出力する。ストール検出(ストアキューヒット)6は、バッファ8から出力される後続命令と、ストアキュー9に記憶されている各命令とについて、インデックスおよびウェイをそれぞれ比較して、一致した場合にはその旨を示す信号(この場合アクティブレベルの信号)を出力する。ストール検出(インデックスマッチ)7は、バッファ8から出力される後続命令がストア命令以外の命令である場合に、当該命令と、ストアキュー9に記憶されている各命令とについて、インデックスとオフセットをそれぞれ比較して、一致した場合にはアクティブレベルを出力する。
【0021】
タグメモリ制御部12は、コントローラ12aとタグメモリ13とから構成されていて、後述するデータメモリ制御部10とともにデータキャッシュを構成する。コントローラ12aは、タグメモリ13へのアクセス制御を主な機能とする。タグメモリ制御部12はタグ検索を伴う後続命令のインデックス、オフセット、ページフレーム番号等を入力し、検索対象インデックス内に当該ページフレーム番号が記憶されている(ヒット)か否(ミス)かを確認し、検索結果(ヒット/ミス)を出力する。また、ヒット時にはヒットしたウェイ、ページフレーム番号を、ミス時にはリプレース対象のウェイ、および、ページフレーム番号をタグ検索結果として出力する。ストアキュー9はn段(n:1以上の整数)の記憶領域を有し、バッファ8から出力されてタグ検索済みのストア命令(書き込み要求)の対象アドレス、データ、タグメモリから出力されるページフレーム番号、ウェイ等の情報の組を最大n組まで記憶することができる。そして、ストアキュー9は、図示していないプロセッサから書き込み許可を示す実行許可信号を受け取ると、ストアキュー9内に格納された情報に基づき書き込みを行う。
【0022】
データメモリ制御部10は、コントローラ10aと所定容量のデータキャッシュ用のデータメモリ11とから構成されている。コントローラ10aは、ライトバック/リフィル及びデータメモリ11へのアクセス制御を主な機能とする。データメモリ制御部10は、タグメモリ制御部12の出力に基づいて、コントローラ10aによってライトバック/リフィル動作を制御し、バッファ8から直接供給されるリード要求と、ストアキュー9から供給されるライト要求に基づいて、データメモリ11および図示していない主記憶に対するリード/ライト動作を実行する。
【0023】
次に、図2を参照して、図1のストアキュー9の構成例について説明する。図2に示すように本実施形態では、ストアキュー9は、n段の領域を有し、各領域には0〜n−1のID(識別符号)が付けられている。各領域には、各ストア命令のアドレスとデータを示す情報が記憶される。ただし、図2ではそれらのうちのページフレーム番号、インデックス、オフセット、およびウェイのみを示し、ストアするデータ等については図示を省略している。なお、図2においてストアキュー9に記憶されるページフレーム番号、インデックス、オフセットは、いずれも図12に示すアドレスの各部分に対応するものである。ここで、ウェイは、データキャッシュの構成が複数ウェイ構成の場合に、どのウェイを各ストア命令が対象とするのかを示す値を有するものであって、例えばデータキャッシュがウェイ0およびウェイ1の2ウェイで構成されるときには、ウェイ0またはウェイ1に対応するウェイ番号"0"または"1"のいずれかの値を有することになる。
【0024】
次に、図3を参照して、図1に示すタグメモリ13と、データメモリ11の構成例について説明する。図3に示すように本実施形態では、データキャッシュは、ウェイ0およびウェイ1からなる2ウェイ構成であり、タグメモリ13と、データメモリ11には、それぞれ2ウェイ分の領域が設けられている。タグメモリ13では、ウェイ0およびウェイ1の2つ領域がページフレーム番号をそれぞれに記憶するための複数の領域に分けられていて、各領域に対してはウェイ0およびウェイ1共通に、インデックス0,1,2,…,i,…が付けられている。ただしウェイ数は、4,8等でもよく、2には限定されない。
【0025】
次に、図4および図5を参照して、図1に示す構成の基本的な動作について説明する。図4は、図1に示す構成におけるストア命令の処理を示すフローチャートであり、図5は、図1に示す構成におけるタグ検索を伴う命令の処理を示すフローチャートである。上述したように本願では、タグ検索を伴う命令を、ロード命令、プリフェッチ命令、ストア命令等のタグ検索処理を必要とする命令と定義している。したがって、図5のフローチャートは、図4のストア命令に対する処理を含んだものである。
【0026】
まず図4を参照して、ストア命令の処理フローについて説明する。ストア命令を処理する場合(以下、処理対象のストア命令を対象命令とする)、タグメモリ制御部12においてタグ検索、すなわち検索対象インデックス内に当該ページフレーム番号を記憶している(ヒット)か否(ミス)かを確認し、ヒット/ミスの結果を出力する(ステップS1)。ミスの場合、タグメモリ13で対象命令の書き込み対象インデックスの2つのウェイのいずれかを、LRU(Least Recently Used)等の入れ替えアルゴリズムによって選択して、選択した対象命令のインデックス・ウェイとストアキュー9内のすべてのストア命令のインデックス・ウェイとを比較し、一致しているストア命令がある場合は、一致しているストアキュー9内のすべてのストア命令による書き込みを実行した後、タグメモリ13に記憶しているページフレーム番号、データメモリ11に記憶しているデータに対してリプレース処理を実行し、対象命令をヒットの状態にする(ステップS2)。ヒットの状態で、対象命令をストアキュー9に格納する(ステップS3)。以上の処理がストア命令の実行フローによる第1ステップの処理である。
【0027】
第1ステップの処理が終了した後に、ストアキュー9に格納されているストア命令による書き込み処理が実際に実行される段階が、第2ステップの処理である。第2ステップの処理では、主記憶やデータキャッシュあるいは他の各部の動作状態に応じて、データがストア可能になったときに実行許可信号が入力され、実行許可条件がOK(満足)されたときに書き込みの実行が開始される(ステップS4)。実行許可条件がOKになった場合、ストアキュー9に格納されているストア命令による書き込みが行われて、データメモリ11に対してデータの書き込みが行われる(ステップS5)。ここで、実行許可信号は各ストア命令に対してそれぞれ発生される。
【0028】
次に図5のフローチャートを参照してタグ検索を伴う命令全体に対する処理について説明する。図5では、ステップS13の処理が図4のステップS1の処理に、ステップS14〜S16の処理が図4のステップS2の処理に、そして、ステップS17およびそれ以降の処理が図4のステップS3の処理およびステップS4〜S5の処理に、それぞれ対応している。図5において、タグ検索を伴う命令がバッファ8から出力された場合(以下、バッファ8から出力された命令を対象命令とする)、対象命令がストア命令でない場合には(ステップS10で判定結果が「No」の場合には)、ストール検出(インデックスマッチ)7によって、ストアキュー9内に、当該対象命令と、インデックス,オフセットがともに一致するストア命令が1つ以上あるかどうかが確認される(ステップS11)。ここで1つ以上の命令が確認された場合、ストール状態となって、当該対象命令による書き込みまたは読み出しの実行が停止され、条件が解消するまで、ストアキュー9に格納されているストア命令による書き込みの実行が行われる(ステップS12)。
【0029】
次に、ステップS11でストアキュー9内にインデックス,オフセットがともに一致するストア命令がなかったと確認された場合("すべて不一致"の場合)、または対象命令がストア命令の場合には(ステップS10で判定結果が「Yes」の場合には)、タグメモリ制御部12によってタグ検索が行われる(ステップS13)。タグ検索の結果が"ヒット"であった場合、次の処理が実行される(ステップS17)。
【0030】
本実施形態では、タグ検索を伴う命令がバッファ8から出力された場合、ストアキュー9にストア命令が格納されているときに、タグ検索を伴う命令による読み出し処理を先行して実行する制御が行われている。また、図4を参照して説明したようにストアキュー9に格納するストア命令に対してはキャッシュヒットを保証する制御も行われている。したがって、タグ検索を伴う命令に対するタグ検索結果が"ミス"の場合に、そのままデータキャッシュでリプレース処理を実行していまうと、キャッシュヒットの保証されているストア命令がストア対象としているキャッシュデータ(タグメモリ13およびデータメモリ11内のデータ)が、リプレースされてしまう可能性がある。つまり、ストア命令の対象ページフレーム番号が誤ったものとなってしまうことになる。そこで、本実施形態では、当該タグ検索結果がミスであったことに起因するリプレース処理の前にそのリプレース処理によってストアキュー9内のストア命令がストア対象としているキャッシュデータがリプレースされてしまうかどうかを事前に確認し、リプレースされてしまう場合には対応するストア命令による書き込み処理の方を先行して実行する制御を行うこととしている。具体的には、ステップS14で、タグメモリ制御部12によって指定された対象命令のリプレース対象の(インデックス,ウェイ)と、ストアキュー9内の全てのストア命令の(インデックス,ウェイ)を比較し、すべてが不一致である場合にはそのままリプレース処理を実行し(ステップS16)、1つ以上が一致している場合にはストアキュー9内の該当ストア命令による書き込みを優先して実行するようにしている(ステップS15)。ステップS14で1つ以上が一致していると判定された場合には、すべてが不一致になるまでストアキュー9内の該当ストア命令による書き込み処理を優先して実行し(ステップS14〜S15の繰り返し)、その後にステップS16のリプレース処理を実行するようにしている。
【0031】
以上の処理によって、ストアキュー9内のストア命令に対するキャッシュヒットを保証した状態で、タグ検索を伴う命令による読み出し処理の優先的な実行を行うことが可能となる。なお、ステップS16でリプレース処理を実行した後は、キャッシュヒットの場合と同様にステップS17の処理が実行される。
【0032】
次に、図6を参照して、タグ検索を伴う命令が処理される場合における図1〜図3のストール検出(ストアキューヒット)6、ストアキュー9、およびタグメモリ13の動作例について説明する。ここで図6に示す構成では、タグメモリ13のインデックスiのウェイ0に"ページフレーム番号A"が、ウェイ1に"ページフレーム番号B"が記憶されていることとする。また、ストアキュー9のID=1のページフレーム番号には"ページフレーム番号B"、インデックスには"i"、オフセットには"x"、そして、ウェイには"1"が記憶されていて、ストアキューのID=2のページフレーム番号には"ページフレーム番号A"、インデックスには"i"、オフセットには"y"、そして、ウェイには"0"、が記憶されているとする。
【0033】
図5のステップS13でタグ検索すべきデータとして、ページフレーム番号C、インデックスi、オフセットzが入力されたとすると、タグメモリ13のインデックスiのページフレーム番号A≠ページフレーム番号Cかつページフレーム番号B≠ページフレーム番号Cなので、タグ検索結果は"ミス"となる。ここで図1のタグメモリ制御部12においてLRU等によってリプレース対象として"ウェイ=1"が決定されたとする。この場合、ストール検出(ストアキューヒット)6で、当該タグ検索を伴う命令のインデックスiと、リプレース対象のウェイ1と、ストアキュー9のn個のインデックスとウェイとが比較される。この例では、その結果、ストアキュー9のID=1が一致するので、ストアキューヒットの状態となり、ステップS15の処理としてID=1のストア命令による書き込みが実行された後、リプレース処理(ステップS16)が実行されることになる。
【0034】
次に、図7および図8を参照して、図1に示す構成の具体的な動作例について説明する。図7は動作を説明するための命令シーケンスの例、図8は、図7の命令シーケンスが入力された場合の動作を説明するための説明図であって、命令のストア/ロードの区別、リプレース対象のウェイの値、タグメモリ13のインデックス0のウェイ0とウェイ1に格納されているページフレーム番号の値、およびストール検出(ストアキューヒット)6による比較結果("0"はミス、"1"はヒット)の変化を示す図である。なお、図7および後述する図9および図10では、説明を簡単にするため、一例として、アドレスのうち上位4ビットがページフレーム番号、中間の8ビットがインデックス、下位4ビットがオフセットであるとする。
【0035】
なお、初期状態において、タグメモリ13のインデックス0のウェイ0に格納されているページフレーム番号は"不定"、ウェイ1は"8"であるとする。また、ストアキュー9にはストア命令は格納されていないものとする。ここで、▲1▼のストア命令が処理されたとする(a)。▲1▼のストア命令はページフレーム番号が"4"、インデックスが"00"、オフセットが"0"である。したがって、タグ検索(図4のステップS1または図5のステップS13)では、タグメモリ13のインデックス"00"に対応する領域にページフレーム番号"4"が格納されているかどうかが確認され、この場合、結果は"ミス"となり、かつストアキュー9内にはストア命令が格納されていないのでリプレース処理が実行される(図4のステップS2または図5のステップS15)(b)。ただし、ここではリプレース対象としてウェイ0が指定されたものとする。このリプレース処理の結果、タグメモリ13のインデックス00のウェイ0には"4"、ウェイ1には"8"が格納される。そして、▲1▼のストア命令はストアキュー9に格納される(図4のステップS3または図5のステップS17)。
【0036】
次に、▲2▼のストア命令が処理されたとする(c)。▲2▼のストア命令はページフレーム番号が"8"、インデックスが"00"、オフセットが"0"である。したがって、タグ検索(図4のステップS1または図5のステップS13)では、タグメモリ13のインデックス"00"に対応する領域にページフレーム番号"8"が格納されているかどうかが確認され、この場合、結果は"ヒット"(ウェイ1)となるので、▲2▼のストア命令はストアキュー9に格納される(図4のステップS3または図5のステップS17)。
【0037】
ここで、▲3▼のロード(リード)命令が処理されたとする(d)。▲3▼のロード命令はページフレーム番号が"C"、インデックスが"00"、オフセットが"4"である。この場合、ストアキュー9に格納されている2つの命令▲1▼,▲2▼は、ともに、インデックス"00"と、オフセット"0"を対象とするものなので、図5のステップS11の判定結果は"すべて不一致"となる。次に、図5のステップS13のタグ検索が行われる。この場合、タグメモリ13のインデックス"00"にページフレーム番号"C"は格納されていないので、タグ検索の結果は"ミス"となる。次に、図5のステップS14の処理が実行される。ただし、▲3▼のロード命令に対するリプレース対象のウェイは"0"に指定されたものとする。この場合、▲3▼のロード命令のリプレース対象のインデックスは"00"、ウェイは"0"なので、ストアキュー9に格納されている▲1▼のストア命令とインデックス、ウェイがともに一致することになる。したがって、図5のステップS14の判定結果は"1つ以上一致(すなわちストアキューヒット状態)"となるので、ステップS15の処理が実行される。この場合、▲1▼のストア命令による書き込みが実行されてデータの書き込みが行われる(e)。
【0038】
この例では図5のステップS15では▲1▼のストア命令のみが該当命令となるので、▲1▼のストア命令による書き込みが実行された後、ステップS16のリプレース処理が実行されて、タグメモリ13のインデックス00のウェイ0には"C"が格納される(f)。
【0039】
次に、図9および図10を参照して、図5のステップS11で各条件が成立する具体例を説明する。図9および図10は、各条件が成立する命令の例を示す図である。図9は、インデックス,オフセット比較でストールする例を示し、(1)が実際にデータ依存関係がある場合(インデックス、オフセット一致,ページフレーム番号一致)(2)が依存関係はないが、インデックス、オフセットが一致した場合(インデックス、オフセット一致,ページフレーム番号不一致)を示している。図10は、インデックス,オフセット比較でストールしない例を示し、(1)がインデックスが不一致の場合、(2)がインデックス一致でオフセット不一致の場合(ストアキューヒットになる可能性がある場合)を示している。
【0040】
なお、本発明の実施の形態は上記のものに限定されることなく適宜変更可能である。例えば、図1におけるストール検出6,7を一体としてまとめたり、データメモリ制御部10とタグメモリ制御部12におけるコントローラ10a,12aを一体としてまとめたり、あるいは実行ユニット2をロード命令とストア命令毎に別ユニットとして設けたりすることが可能である。
【0041】
【発明の効果】
本発明によれば、タグ検索を伴う命令のインデックス及びオフセットがストアキュー内の少なくとも1個のストア命令のインデックス及びオフセットと一致するときにタグ検索を伴う命令をストールさせるようにしたので、従来に比べ不要なストール状態の発生を少なくすることができ、データキャッシュに関連する命令のリオーダーを促進し、マイクロプロセッサの性能を向上させることができる。
【図面の簡単な説明】
【図1】本発明によるキャッシュシステムの制御回路の一実施の形態を示すブロック図。
【図2】図1のストアキュー9の構成例を示す図。
【図3】本実施形態のデータキャッシュの構成例を示す図。
【図4】図1のキャッシュシステムの制御回路の動作を説明するためのフローチャート(ストア命令処理時)。
【図5】図1のキャッシュシステムの制御回路の動作を説明するためのフローチャート(タグ検索を伴う命令処理時)。
【図6】図1のストール検出6およびストアキュー9の内部構成例と、ストール検出6およびストアキュー9と、タグメモリ13とによる動作例を示すブロック図。
【図7】図1のキャッシュシステムの制御回路の動作を説明するために用いる命令の例を示す図。
【図8】図1のキャッシュシステムの制御回路の動作を説明するための説明図。
【図9】図1のキャッシュシステムの制御回路の他の動作を説明するための命令の例を示す図。
【図10】図1のキャッシュシステムの制御回路の他の動作を説明するための命令の例を示す図。
【図11】従来のキャッシュシステムの制御回路の構成例を示すブロック図。
【図12】本発明および従来のキャッシュシステムの制御回路で使用されるアドレス構成を示すブロック図。
【図13】セットアソシアティブ方式のキャッシュメモリの1ウェイ分の構成例を示すブロック図。
【図14】図9の従来例の動作を説明するためのフローチャート。
【図15】データキャッシュを用いる回路における命令リオーダーの動作を説明するための説明図。
【符号の説明】
1 命令フェッチ
2 実行ユニット
3 実行ユニット
4 セレクタ
5 OR回路
6 ストール検出(ストアキューヒット)
7 ストール検出(インデックスマッチ)
8 バッファ
9 ストアキュー(ライトバッファ)
10 データメモリ制御部
11 データメモリ
12 タグメモリ制御部
13 タグメモリ
Claims (6)
- 少なくとも1以上のストア命令を格納するためのストアキューを備えるキャッシュシステムの制御方法において、
タグ検索を伴う命令のインデックス及びオフセットと前記ストアキューに格納されたストア命令のインデックス及びオフセットを比較する第1のステップを実行し、
前記第1のステップの比較の結果前記タグ検索を伴う命令のインデックス及びオフセットと前記ストアキューに格納されたストア命令のインデックス及びオフセットが少なくとも1以上一致する場合に、前記タグ検索を伴う命令をストールし、前記タグ検索を伴う命令のインデックス及びオフセットと一致した前記ストアキューに格納されたストア命令を実行する第2のステップを実行し、
前記第1又は第2のステップを実行した後に前記タグ検索を伴う命令のタグ検索を行う第3のステップを実行し、
前記第3のステップのタグ検索の結果キャッシュミスヒットである場合に、前記タグ検索を伴う命令のインデックス及び格納先ウェイと前記ストアキューに格納されたストア命令のインデックス及び格納先ウェイを比較する第4のステップを実行し、
前記第4のステップの比較の結果前記タグ検索を伴う命令のインデックス及び格納先ウェイと前記ストアキューに格納されたストア命令のインデックス及び格納先ウェイが少なくとも1以上一致する場合に、前記タグ検索を伴う命令をストールし、前記タグ検索を伴う命令のインデックス及び格納先ウェイと一致した前記ストアキューに格納されたストア命令を実行し、前記ストア命令の実行後リプレース処理を行う第5のステップを実行することを特徴とするキャッシュシステムの制御方法。 - 前記第1のステップの前に、前記タグ検索を伴う命令がストア命令であるか否かを判断する第6のステップを実行し、前記タグ検索を伴う命令がストア命令である場合には、第1及び第2のステップを実行しないことを特徴とする請求項1記載のキャッシュシステムの制御方法。
- 第3のステップのタグ検索の結果キャッシュヒットである場合、若しくは、前記第5のステップの実行後、前記タグ検索を伴う命令がロード命令である場合には前記ロード命令を実行し、前記タグ検索を伴う命令がストア命令である場合には前記ストアキューに前記ストア命令を格納する第7のステップを実行することを特徴とする請求項1又は2記載のキャッシュシステムの制御方法。
- 前記第3のステップにて行われるタグ検索は、前記タグ検索を伴う命令のタグがタグメモリの検索対象インデックス内に格納されているか否かを検索する処理であることを特徴とする請求項1乃至3のいずれか1に記載のキャッシュシステムの制御方法。
- 前記タグ検索を伴う命令の格納先ウェイは、LRU(Least Recently Used)の入れ替えアルゴリズムによって決定することを特徴とする請求項1乃至4のいずれか1に記載のキャッシュシステムの制御方法。
- 前記キャッシュシステムは、mウェイ(mは2以上の整数)のセットアソシアティブ方式による構成を有していることを特徴とする請求項1乃至5のいずれか1に記載のキャッシュシステムの制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001022210A JP3727244B2 (ja) | 2001-01-30 | 2001-01-30 | キャッシュシステムの制御回路 |
US10/058,771 US6859860B2 (en) | 2001-01-30 | 2002-01-30 | Control circuits comparing index offset and way for cache system and method of controlling cache system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001022210A JP3727244B2 (ja) | 2001-01-30 | 2001-01-30 | キャッシュシステムの制御回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002229852A JP2002229852A (ja) | 2002-08-16 |
JP3727244B2 true JP3727244B2 (ja) | 2005-12-14 |
Family
ID=18887655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001022210A Expired - Fee Related JP3727244B2 (ja) | 2001-01-30 | 2001-01-30 | キャッシュシステムの制御回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6859860B2 (ja) |
JP (1) | JP3727244B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10515432B2 (en) | 2016-10-28 | 2019-12-24 | Samsung Electronics Co., Ltd. | Methods and apparatuses for managing graphics data using two-stage lookup tables in cache |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7152152B2 (en) * | 2004-01-22 | 2006-12-19 | International Business Machines Corporation | Method of avoiding flush due to store queue full in a high frequency system with a stall mechanism and no reject mechanism |
JP4550511B2 (ja) | 2004-07-27 | 2010-09-22 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法 |
US7366851B2 (en) * | 2004-08-19 | 2008-04-29 | International Business Machines Corporation | Processor, method, and data processing system employing a variable store gather window |
US7464242B2 (en) * | 2005-02-03 | 2008-12-09 | International Business Machines Corporation | Method of load/store dependencies detection with dynamically changing address length |
US7401186B2 (en) * | 2005-02-09 | 2008-07-15 | International Business Machines Corporation | System and method for tracking changes in L1 data cache directory |
JP5011885B2 (ja) | 2006-08-18 | 2012-08-29 | 富士通株式会社 | スヌープタグの制御装置 |
US8943273B1 (en) * | 2008-08-14 | 2015-01-27 | Marvell International Ltd. | Method and apparatus for improving cache efficiency |
US8392757B2 (en) * | 2010-10-22 | 2013-03-05 | Advanced Micro Devices, Inc. | Method and apparatus for processing load instructions in a microprocessor having an enhanced instruction decoder and an enhanced load store unit |
JP2014006807A (ja) * | 2012-06-26 | 2014-01-16 | Fujitsu Ltd | 演算処理装置、キャッシュメモリ制御装置及びキャッシュメモリの制御方法 |
US9361103B2 (en) * | 2012-11-02 | 2016-06-07 | Advanced Micro Devices, Inc. | Store replay policy |
JP6340894B2 (ja) * | 2014-04-24 | 2018-06-13 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US11099846B2 (en) | 2018-06-20 | 2021-08-24 | Advanced Micro Devices, Inc. | Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5848287A (en) * | 1996-02-20 | 1998-12-08 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches |
JP3169171B2 (ja) | 1996-10-15 | 2001-05-21 | セントラル硝子株式会社 | 高純度フルオロアルキルスルホン酸無水物の製造方法 |
US6363470B1 (en) * | 1998-10-06 | 2002-03-26 | Texas Instruments Incorporated | Circular buffer management |
US6433787B1 (en) * | 1998-11-23 | 2002-08-13 | Nicholas J. N. Murphy | Dynamic write-order organizer |
JP2000181780A (ja) | 1998-12-16 | 2000-06-30 | Hitachi Ltd | ストアバッファ装置 |
US6662280B1 (en) * | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
-
2001
- 2001-01-30 JP JP2001022210A patent/JP3727244B2/ja not_active Expired - Fee Related
-
2002
- 2002-01-30 US US10/058,771 patent/US6859860B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10515432B2 (en) | 2016-10-28 | 2019-12-24 | Samsung Electronics Co., Ltd. | Methods and apparatuses for managing graphics data using two-stage lookup tables in cache |
Also Published As
Publication number | Publication date |
---|---|
US20020103971A1 (en) | 2002-08-01 |
US6859860B2 (en) | 2005-02-22 |
JP2002229852A (ja) | 2002-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3729087B2 (ja) | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
JP3727244B2 (ja) | キャッシュシステムの制御回路 | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
US7836253B2 (en) | Cache memory having pipeline structure and method for controlling the same | |
JP2000215056A (ja) | 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理 | |
JPH11212788A (ja) | プロセッサのデータ供給装置 | |
US8103859B2 (en) | Information processing apparatus, cache memory controlling apparatus, and memory access order assuring method | |
US20200012694A1 (en) | Apparatus and method for searching linked lists | |
US5634119A (en) | Computer processing unit employing a separate millicode branch history table | |
JPH0668736B2 (ja) | 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法 | |
JP4071942B2 (ja) | データ処理装置及びデータプロセッサ | |
US20100106910A1 (en) | Cache memory and method of controlling the same | |
JP2016224796A (ja) | 演算処理装置および演算処理装置の処理方法 | |
EP0969358A2 (en) | Information processing device and method for performing parallel processing | |
US11126435B2 (en) | Branch destination prediction based on accord or discord of previous load data from a data cache line corresponding to a load instruction and present load data | |
JP4621292B2 (ja) | キャッシュ制御装置およびキャッシュ制御方法 | |
JPH0756808A (ja) | データキャッシュバッファ及び記憶方法 | |
KR20220154821A (ko) | 프로세서 파이프라인에서 간접 점프의 페치 스테이지 처리 | |
US8423719B2 (en) | Apparatus, processor and method of controlling cache memory | |
JP3497087B2 (ja) | 命令制御装置及びその方法 | |
JPH06161900A (ja) | キャッシュメモリ装置 | |
JPH0659977A (ja) | 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法 | |
JPH06301537A (ja) | 命令フェッチ回路 | |
JPH08161226A (ja) | データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040614 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050614 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050815 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050927 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091007 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091007 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101007 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101007 Year of fee payment: 5 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101007 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111007 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111007 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121007 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121007 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131007 Year of fee payment: 8 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |