JP3981070B2 - キャッシュリプレース装置及びキャッシュリプレース方法 - Google Patents

キャッシュリプレース装置及びキャッシュリプレース方法 Download PDF

Info

Publication number
JP3981070B2
JP3981070B2 JP2003435789A JP2003435789A JP3981070B2 JP 3981070 B2 JP3981070 B2 JP 3981070B2 JP 2003435789 A JP2003435789 A JP 2003435789A JP 2003435789 A JP2003435789 A JP 2003435789A JP 3981070 B2 JP3981070 B2 JP 3981070B2
Authority
JP
Japan
Prior art keywords
way
thread
cache
hit
comparator
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
Application number
JP2003435789A
Other languages
English (en)
Other versions
JP2005196303A (ja
Inventor
竜生 照山
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2003435789A priority Critical patent/JP3981070B2/ja
Priority to US11/011,156 priority patent/US20050160228A1/en
Publication of JP2005196303A publication Critical patent/JP2005196303A/ja
Application granted granted Critical
Publication of JP3981070B2 publication Critical patent/JP3981070B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

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)

Description

本発明は、対称型マルチプロセッサ(SMP)システムや、同時マルチスレッディング(SMT)を用いたマイクロプロセッサにおけるキャッシュ制御に関し、特にセットアソシアティブ方式のキャッシュを用いたときのキャッシュリプレース装置及びキャッシュリプレース方法に係わる。
アソシアティブ方式のキャッシュは、複数のウェイによって構成されているために、ミスが発生したときはどのウェイを置き換えるかを決定しなければならない。特にセットアソシアティブ方式では、複数のウェイからどれを置き換えるかを選択する必要がある。選択法には、主にランダム法と最長未使用時間(LRU)法がある。ランダム法は候補の中から無作為に対象を選択する方法である。一方、LRU法は最も長い期間にわたって使用されていなかったウェイを選択する方法である。最近では、このLRU法またはその近似法を用いて、わずかでもミス率を下げる試みがなされている。(例えば、非特許文献1参照。)。
ジョン・L・ヘネシー、デイビッド・A・パターソン著、成田 光彰訳、「コンピュータの構成と設計(下)」、日経BP社出版、1998年9月25日、P412−483
LRU法では、実行を終了したスレッドに関連するデータが必ずしも置換対象に選択されるとは限らない。むしろまだ有効なスレッドによって使用される可能性のあるデータが置換対象となってしまうことがある。
本発明は、実行を終了したスレッドあるいは優先度の低いスレッドに関連するデータを置換対象として選択することが可能なキャッシュリプレース装置及びキャッシュリプレース方法を提供しようとするものである。
本発明の第1の特徴は、複数のウェイからなるキャッシュタグテーブルと、キャッシュタグテーブルに接続され、キャッシュタグテーブルの有する複数のウェイそれぞれ格納された格納スレッドIDと、実行を終了したスレッドの終了スレッドIDを比較するスレッド比較器と、キャッシュタグテーブル及びスレッド比較器に接続され、スレッド比較器による比較結果に応じて置換すべきウェイを決定するウェイ決定回路とを具備するキャッシュリプレース装置であることを要旨とする。
更に、本発明の第2の特徴は、命令によるキャッシュへのアクセスが空いている周期に、カウンタの値によって索引したキャッシュタグテーブルの各ウェイに設定されたスレッドIDをスレッド比較器に、そして有効フラグ、置換ウェイ番号及び最長未使用ウェイ番号をウェイセレクタにそれぞれ出力し、スレッド比較器に格納されている終了スレッドIDとスレッドIDが一致しているかの結果を、スレッド比較器からウェイ決定回路に出力し、有効フラグの値に応じて最長未使用ウェイ番号を、ウェイセレクタからウェイ決定回路に出力し、ウェイ決定回路が、置換すべきウェイ番号を決定し、カウンタの値によって索引したキャッシュタグテーブルの各ウェイの置換ウェイ番号を書き換え、そして有効フラグをオンに設定するキャッシュリプレース方法であることを要旨とする。
本発明によれば、実行を終了したスレッドが使用していたキャッシュを置換対象として選択することが可能となり、キャッシュの使用効率の向上及びヒットミス率の低下が期待できる。
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
(第1の実施の形態)
本発明の第1の実施の形態に係るキャッシュリプレース装置30aは、図1に例示すように、ウェイ0とウェイ1から構成されるキャッシュタグテーブル33aと、キャッシュタグテーブル33aに接続されたスレッド比較器36aと、キャッシュタグテーブル33a及びスレッド比較器36aに接続されたウェイ決定回路37aを具備する。またキャッシュリプレース装置30aは、キャッシュタグテーブル33aに接続されたインデックスセレクタ32aと、インデックスセレクタ32aに接続された命令アクセスアドレス格納部31と、インデックスセレクタ32aと命令アクセスアドレス格納部31に接続されたキャッシュミスアドレス格納部35とを具備する。そしてキャッシュリプレース装置30aは、キャッシュタグテーブル33aと命令アクセスアドレス格納部31に接続されたページフレーム番号(PFN)比較器34と、キャッシュタグテーブル33a、キャッシュミスアドレス格納部35及びPFN比較器34に接続されたキャッシュ制御回路38とをさらに具備する。
スレッド比較器36aは、図2に例示すように、第1エントリーユニット361、第2エントリーユニット362、第3エントリーユニット363、第4エントリーユニット364、先入れ先出し(FIFO)制御部400、ウェイ0ヒットORゲート366及びウェイ1ヒットORゲート365を具備する。第1から第4エントリーユニット361、362、363、364の内部には、終了したスレッドのIDを記憶する終了スレッド(Th)IDメモリ403と、キャッシュタグテーブル33aの各ウェイに格納されたThIDと終了ThIDメモリ403に格納されたThIDを比較する終了Th比較器401、402がある。そして、ウェイ0用の終了Th比較器401は、ウェイ0ヒットORゲート366に、ウェイ1用の終了Th比較器402は、ウェイ1ヒットORゲート365に接続されている。
キャッシュタグテーブル33aは、メモリを使用しているスレッドのスレッドID(ThID)、PFN及び最長未使用ウェイ番号(lruWay)を記憶し管理するためのメモリテーブルである。インデックスセレクタ32aは、スレッド実行時とキャッシュ置換時とで、キャッシュタグテーブル33aを索引するためのインデックスを選択しわけるための回路である。
命令アクセスアドレス格納部31は、実行するスレッドID(currThID)と、実行フレーム番号(currPFN)と実行インデックス(currIndex)で構成されたアクセスメモリのアドレスを格納するためのレジスタである。キャッシュミスアドレス格納部35は、キャッシュミスが発生した時に、命令アクセスアドレス格納部31に格納されていたデータを、ミススレッドID(missThID)と、ミスページフレーム番号(missPFN)とミスインデックス(missIndex)として格納し、さらに置換すべきウェイ番号(RepWay)を格納しておくメモリである。
PFN比較器34は、スレッド実行時に、キャッシュミスの有無を判定するために、キャッシュタグテーブル33aのPFNと命令アクセスアドレス格納部31の実行フレーム番号(currPFN)を比較し、その結果をキャッシュ制御回路38に出力する回路である。ウェイ決定回路37aは、キャッシュミス時に、ウェイ決定アルゴリズムに従って置換すべきウェイを決定し、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)を設定する回路である。
キャッシュ制御回路38は、スレッド実行時やキャッシュ置換時にどのウェイにアクセスするかを制御するための回路である。またLRUに従ってキャッシュタグテーブル33aの最長未使用ウェイ番号(lruWay)を設定する。
スレッド比較器36aの終了ThIDメモリ403は、生成スレッドIDキューからデタッチされた終了スレッド(Th)IDを記憶しておくメモリであり、スレッド比較器36aの先入れ先出し(FIFO)制御部400は、第1エントリーユニット361の終了ThIDメモリ403から第4エントリーユニット364の終了ThIDメモリ403まで、順次移動させて記憶させていくための回路である。
また、スレッド比較器36aの終了スレッド(Th)比較器401、402は、終了ThIDメモリ403に記憶された終了ThIDと、キャッシュタグテーブル33aの各ウェイに格納されたThIDを比較する回路である。スレッド比較器36aのウェイ0ヒットORゲート366とウェイ1ヒットORゲート365は、第1から第4エントリーユニット361、362、363、364の終了Th比較器401、402の結果の論理和を求め、最終的に各ウェイに終了したスレッドのデータがあるか否かをウェイ決定回路に出力するための回路である。
(第1の実施の形態に係るキャッシュリプレース方法)
(イ) 処理の実行要求に従ってスレッド生成回路10で生成されるスレッドIDは、順次生成スレッドIDキュー20にアタッチされる。実行順番がきたスレッドIDは、生成スレッドIDキュー20からデタッチされ、実行スレッドID(currThID)として命令アクセスアドレス格納部31に記憶されると同時に、スレッド比較器36aの終了ThIDメモリ403に格納される。
(ロ) メモリ管理部(MMU)(図示せず)によって、実行スレッドIDのスレッドがアクセスするメモリのアドレスとして、実行ページフレーム番号(currPFN)と実行インデックス(currIndex)が命令アクセスアドレス格納部31に記憶される。
(ハ) インデックスセレクタ32aによって実行インデックス(currIndex)が選択され、実行インデックス(currIndex)を用いてキャッシュタグテーブル33aが索引される。
(ニ) 次に、PFN比較器34によって、実行インデックス(currIndex)を用いて索引されたキャッシュタグテーブル33aのメモリに格納されているPFNと、命令アクセスアドレス格納部31に格納されている実行ページフレーム番号(currPFN)が読み出され比較される。そして各ウェイについて一致しているか否かがキャッシュ制御回路38に通知される。もし一致しているウェイがある場合、PFN比較器34はアドレスの一致をキャッシュ制御回路38に通知し、キャッシュ制御回路38は一致したウェイのデータを処理に使用させ、一致しなかったウェイ番号を最長未使用ウェイ(lruWay)に設定する。もし一致しているウェイがない場合は、キャッシュ置換処理が実行される。
(第1の実施の形態に係るキャッシュ置換処理)
(ホ) まず、スレッド比較器36aによって、実行インデックス(currIndex)を用いて索引されたキャッシュタグテーブル33aのメモリに格納されているスレッドID(ThID)が各ウェイから読み出される。次に第1から第4エントリーユニット361、362、363、364で、それぞれの終了ThIDメモリ403に格納されている終了ThIDが、各ウェイから読み出されたThIDと各終了Th比較器401、402によって比較される。そして比較結果の論理和がウェイ0ヒットORゲート366とウェイ1ヒットORゲート365によってウェイ決定回路37aに出力される。
(ヘ) 次に、ウェイ決定回路37aで、図3に示したアルゴリズムによって、置換すべきウェイが決定され、キャッシュミスアドレス格納部35に置換すべきウェイ番号(RepWay)として設定される。アルゴリズムについては後に詳述する。
(ト) また、命令アクセスアドレス格納部31に格納されていた実行スレッドID(currThID)、実行ページフレーム番号(currPFN)と索引に用いられた実行インデックス(currIndex)が、それぞれキャッシュミスアドレス格納部35のミススレッドID(missThID)、ミスページフレーム番号(missPFN)とミスインデックス(missIndex)に設定される。
(チ) キャッシュ制御回路38外部メモリから、ミスページフレーム番号(missPFN)とミスインデックス(missIndex)をアドレスとしてデータを読み出す。読み出されたデータはキャッシュメモリのデータ部(図示せず)に書き込まれる。
(リ) 続いて、インデックスセレクタ32aによってミスインデックス(missIndex)が選択され、ミスインデックス(missIndex)を用いてキャッシュタグテーブル33aが索引される。
(ヌ) キャッシュ制御回路38は、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)を読み出し、その値に従って置換すべきウェイへ、ミススレッドID(missThID)とミスページフレーム番号(missPFN)を、使用中のスレッドID(ThID)とページフレーム番号(PFN)として設定させる。これにより、キャッシュの置換が完了する。
(第1の実施の形態に係るアルゴリズム)
S100:ウェイ0ヒットORゲート366の結果とウェイ1ヒットORゲート365の結果を受信し、さらに実行インデックス(currIndex)を用いて索引されたキャッシュタグテーブル33aのメモリに格納されている最長未使用ウェイ(lruWay)を読み出す。
S101:ウェイ0ヒットORゲート366の結果が1か0か判定する。つまり、ウェイ0に格納されているThIDが4つの終了ThIDのいずれかと一致(ヒット=1)しているか否か(ミス=0)を調べる。
S102:S101でヒットしていた場合、ウェイ1ヒットORゲート365の結果が1か0か判定する。つまり、ウェイ1に格納されているThIDが4つの終了ThIDのいずれかと一致(ヒット=1)しているか否か(ミス=0)を調べる。
S103:S101でミスしていた場合、ウェイ1ヒットORゲート365の結果が1か0か判定する。つまり、ウェイ1に格納されているThIDが4つの終了ThIDのいずれかと一致(ヒット=1)しているか否か(ミス=0)を調べる。
S104:S102でヒットしていた場合、またはS103でミスしていた場合、lruWayの値を判定する。
S105:S102でミスしていた場合、またはS104でlruWay=0の場合、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)に0を設定する。
S106:S103でヒットしていた場合、またはS104でlruWay=1の場合、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)に1を設定する。
このアルゴリズムによって、以下の論理が実現されている:
・ウェイ0のThIDのみが終了ThIDに一致している場合は、置換すべきウェイ番号(RepWay)をウェイ0にする;
・ウェイ1のThIDのみが終了ThIDに一致している場合は、置換すべきウェイ番号(RepWay)をウェイ1にする;
・両方のウェイのThIDが終了ThIDに一致しているか、いずれも一致していない場合は、置換すべきウェイ番号(RepWay)を、既にキャッシュタグテーブル33aのメモリに設定されているlruWayの値とする。
第1の実施の形態に係るキャッシュリプレース装置30a及びキャッシュリプレース方法によれば、終了したスレッドが使用していたキャッシュを置換することができ、キャッシュの使用効率があがり、ヒットミス率の低下が期待できる。
(第2の実施の形態)
本発明の第2の実施の形態に係るキャッシュリプレース装置30bは、図4に例示すように、ウェイ0とウェイ1から構成されるキャッシュタグテーブル33bと、キャッシュタグテーブル33bに接続されたスレッド比較器36bと、キャッシュタグテーブル33b及びスレッド比較器36bに接続されたウェイ決定回路37bを具備する。またキャッシュリプレース装置30bは、キャッシュタグテーブル33bに接続されたインデックスセレクタ32bと、インデックスセレクタ32bに接続された命令アクセスアドレス格納部31、カウンタ40及びサイクル取得制御回路41と、命令アクセスアドレス格納部31に接続されたキャッシュミスアドレス格納部35とを具備する。そしてキャッシュリプレース装置30bは、キャッシュタグテーブル33bと命令アクセスアドレス格納部31に接続されたPFN比較器34と、キャッシュタグテーブル33b、キャッシュミスアドレス格納部35及びウェイ決定回路37bに接続されたウェイセレクタ39と、キャッシュタグテーブル33b、キャッシュミスアドレス格納部35及びPFN比較器34に接続されたキャッシュ制御回路38とをさらに具備する。
スレッド比較器36bは、図5に例示すように、第1エントリーユニット361、第2エントリーユニット362、第3エントリーユニット363、第4エントリーユニット364とこれらに接続した先入れ先出し(FIFO)制御部400、ウェイ0ヒットORゲート366及びウェイ1ヒットORゲート365を具備する。また、第1予測エントリーユニット501、第2予測エントリーユニット502とこれらに接続したスレッド予測回路405、ウェイ0ヒットNORゲート368及びウェイ1ヒットNORゲート367をさらに具備する。また、ウェイ0ヒットORゲート366とウェイ0ヒットNORゲート368に接続したウェイ0ヒットANDゲート504、及びウェイ1ヒットORゲート365とウェイ1ヒットNORゲート367に接続したウェイ1ヒットANDゲート503をさらに具備する。
第1から第4エントリーユニット361、362、363、364の内部には、終了したスレッドのIDを記憶する終了スレッド(Th)IDメモリ403と、キャッシュタグテーブル33bの各ウェイに格納されたThIDと終了ThIDメモリ403に格納されたThIDを比較する終了Th比較器401、402がある。そして、ウェイ0用の終了Th比較器401は、ウェイ0ヒットORゲート366に、ウェイ1用の終了Th比較器402は、ウェイ1ヒットORゲート365に接続されている。
第1予測エントリーユニット501と第2予測エントリーユニット502の内部には、スレッド予測回路405によって実行されると予測したスレッドのIDを記憶する予測スレッド(Th)IDメモリ404と、キャッシュタグテーブル33bの各ウェイに格納されたThIDと予測ThIDメモリ404に格納されたThIDを比較する予測Th比較器406、407がある。そして、ウェイ0用の予測Th比較器406は、ウェイ0ヒットNORゲート368に、ウェイ1用の予測Th比較器407は、ウェイ1ヒットNORゲート367に接続されている。
キャッシュタグテーブル33bは、メモリを使用しているスレッドのスレッドID(ThID)、PFN、最長未使用ウェイ番号(lruWay)、置換ウェイ番号有効フラグ(V)及び置換ウェイ番号(Rep)を記憶し管理するためのメモリテーブルである。カウンタ40は、インデックスセレクタ32bに読み出される毎に、キャッシュタグテーブル33bを索引するためのインデックス値をキャッシュタグテーブル33bの最大値まで1ずつ加算する回路である。
サイクル取得制御回路41は、命令実行サイクルの中から、キャッシュがスレッドの実行によってアクセスされないサイクルを探し出して通知する回路である。インデックスセレクタ32bは、スレッド実行時、置換ウェイ番号設定時及びキャッシュ置換時とで、キャッシュタグテーブル33bを索引するためのインデックスを選択しわけるための回路である。
命令アクセスアドレス格納部31は、実行するスレッドID(currThID)と、実行フレーム番号(currPFN)と実行インデックス(currIndex)で構成されたアクセスメモリのアドレスを格納するためにメモリである。キャッシュミスアドレス格納部35は、キャッシュミスが発生した時に、命令アクセスアドレス格納部31に格納されていたデータを、ミススレッドID(missThID)と、ミスページフレーム番号(missPFN)とミスインデックス(missIndex)として格納し、さらに置換すべきウェイ番号(RepWay)を格納しておくメモリである。PFN比較器34は、スレッド実行時に、キャッシュミスの有無を判定するために、キャッシュタグテーブル33bのPFNと命令アクセスアドレス格納部31の実行フレーム番号(currPFN)を比較し、その結果をキャッシュ制御回路38に出力する回路である。
ウェイセレクタ39は、キャッシュタグテーブル33bの置換ウェイ番号有効フラグ(V)に従って、最長未使用ウェイ番号(lruWay)と置換ウェイ番号(Rep)のどちらかを選択してウェイ決定回路37bに出力し、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)を設定する回路である。ウェイ決定回路37bは、キャッシュミス時及び置換ウェイ番号設定時に、ウェイ決定アルゴリズムに従って置換すべきウェイを決定し、キャッシュタグテーブル33bの置換ウェイ番号有効フラグ(V)及び置換ウェイ番号(Rep)を設定する回路である。
キャッシュ制御回路38は、スレッド実行時やキャッシュ置換時にどのウェイにアクセスするかを制御するための回路である。またLRU法に従ってキャッシュタグテーブル33bの最長未使用ウェイ番号(lruWay)を設定する。
スレッド比較器36bの終了ThIDメモリ403は、生成スレッドIDキューからデタッチされた終了スレッド(Th)IDを記憶しておくメモリであり、スレッド比較器36bの先入れ先出し(FIFO)制御部400は、第1エントリーユニット361の終了ThIDメモリ403から第4エントリーユニット364の終了ThIDメモリ403まで、順次移動させて記憶させていくための回路である。スレッド予測回路405は、今後実行されるスレッドのThIDを予測する回路であり、予測ThIDメモリ404は、そのThIDを記憶しておくメモリである。
また、スレッド比較器36bの終了スレッド(Th)比較器401、402は、終了ThIDメモリ403に記憶された終了ThIDと、キャッシュタグテーブル33bの各ウェイに格納されたThIDを比較する回路であり、スレッド比較器36bの予測スレッド(Th)比較器406、407は、予測ThIDメモリ404に記憶された予測ThIDと、キャッシュタグテーブル33bの各ウェイに格納されたThIDを比較する回路である。スレッド比較器36bのウェイ0ヒットORゲート366とウェイ1ヒットORゲート365は、第1から第4エントリーユニット361、362、363、364の終了スレッド(Th)比較器401、402の結果の論理和を求め、一方、ウェイ0ヒットNORゲート368とウェイ1ヒットNORゲート367は、第1予測エントリーユニット501と第2予測エントリーユニット502の予測スレッド(Th)比較器406、407の結果の否定的論理和を求める。そしてウェイ0ヒットANDゲート504とウェイ1ヒットANDゲート503は、最終的に各ウェイに終了したスレッドまたは実行されると予測されるスレッドのデータがあるか否かをウェイ決定回路に出力するための回路である。
(第2の実施の形態に係るキャッシュリプレース方法)
(イ) 処理の実行要求に従ってスレッド生成回路10で生成されるスレッドIDは、順次生成スレッドIDキュー20にアタッチされる。実行順番がきたスレッドIDは、生成スレッドIDキュー20からデタッチされ、実行スレッドID(currThID)として命令アクセスアドレス格納部31に記憶されると同時に、スレッド比較器36bの終了ThIDメモリ403に格納される。
(ロ) メモリ管理部(MMU)(図示せず)によって、実行スレッドIDのスレッドがアクセスするメモリのアドレスとして、実行ページフレーム番号(currPFN)と実行インデックス(currIndex)が命令アクセスアドレス格納部31に記憶される。
(ハ) インデックスセレクタ32bによって実行インデックス(currIndex)が選択され、実行インデックス(currIndex)を用いてキャッシュタグテーブル33bが索引される。
(ニ) 次に、ページフレーム番号(PFN)比較器34によって、実行インデックス(currIndex)を用いて索引されたキャッシュタグテーブル33bのメモリに格納されているページフレーム番号(PFN)と、命令アクセスアドレス格納部31に格納されている実行ページフレーム番号(currPFN)が読み出され比較される。そして各ウェイについて一致しているか否かがキャッシュ制御回路38に通知される。もし一致しているウェイがある場合、PFN比較器34は、一致したことをキャッシュ制御回路38に通知し、キャッシュ制御回路38は一致したウェイのデータを処理に使用させ、一致しなかったウェイ番号を最長未使用ウェイ(lruWay)に設定する。もし一致しているウェイがない場合は、キャッシュ置換処理が実行される。
(第2の実施の形態に係るキャッシュ置換処理)
(ホ) キャッシュメモリにアクセスする命令が実行中の場合、実行インデックス(currIndex)を用いて索引されたキャッシュタグテーブル33bのメモリに格納されている置換ウェイ番号有効フラグ(V)が1(オン)であり、ページフレーム番号(PFN)比較器34が不一致を検出(キャッシュミス)したならば、ウェイセレクタ39は置換ウェイ番号(Rep)をキャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)に設定し、(ヲ)にジャンプする。
(へ) もし置換ウェイ番号有効フラグ(V)が0(オフ)であり、ページフレーム番号(PFN)比較器34が不一致を検出(キャッシュミス)したならば、最長未使用ウェイ(lruWay)をウェイ決定回路37bに出力し、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)に設定する。そしてスレッド比較器36bによって、実行インデックス(currIndex)を用いて索引されたキャッシュタグテーブル33bのメモリに格納されているスレッドID(ThID)が各ウェイから読み出される。
(ト) サイクル取得制御回路41は、キャッシュメモリが使用されていないサイクルを見つけ、インデックスセレクタ32bにカウンタ40の値をインデックスとして出力させる。そして、スレッド比較器36bによって、そのインデックスを用いて索引されたキャッシュタグテーブル33bのメモリに格納されているスレッドID(ThID)が各ウェイから読み出さる。
(チ) 次に、スレッド比較器36bの第1から第4エントリーユニット361、362、363、364で、それぞれの終了ThIDメモリ403に格納されている終了ThIDが、各ウェイから読み出されたThIDと各終了Th比較器401、402によって比較される。そして比較結果の論理和がウェイ0ヒットORゲート366とウェイ1ヒットORゲート365によって、それぞれウェイ0ヒットANDゲート504とウェイ1ヒットANDゲート503に出力される。
(リ)一方、第1予測エントリーユニット501と第2予測エントリーユニット502で、それぞれの予測ThIDメモリ404に格納されている予測ThIDが、各ウェイから読み出されたThIDと各予測Th比較器406、407によって比較される。そして比較結果の否定的論理和がウェイ0ヒットNORゲート368とウェイ1ヒットNORゲート367によって、それぞれウェイ0ヒットANDゲート504とウェイ1ヒットANDゲート503に出力される。
(ヌ)ウェイ0ヒットANDゲート504とウェイ1ヒットANDゲート503によって、(チ)と(リ)で入力されたデータの論理積がウェイ決定回路37bに出力される。
(ル) 次に、ウェイ決定回路37bで、図6に示したアルゴリズムによって、置換すべきウェイが決定され、キャッシュタグテーブル33bに置換ウェイ番号(Rep)として設定されると共に、置換ウェイ番号有効フラグ(V)が1にされる。アルゴリズムについては後に詳述する。
(ヲ) キャッシュにアクセスする命令が、キャッシュミスを発生した場合、命令アクセスアドレス格納部31に格納されていた実行スレッドID(currThID)、実行ページフレーム番号(currPFN)と索引に用いられた実行インデックス(currIndex)が、それぞれキャッシュミスアドレス格納部35のミススレッドID(missThID)、ミスページフレーム番号(missPFN)とミスインデックス(missIndex)に設定される。
(ワ) キャッシュ制御回路38外部メモリから、ミスページフレーム番号(missPFN)とミスインデックス(missIndex)をアドレスとしてデータを読み出す。読み出されたデータはキャッシュメモリのデータ部(図示せず)に書き込まれる。
(カ) 続いて、インデックスセレクタ32bによってミスインデックス(missIndex)が選択され、ミスインデックス(missIndex)を用いてキャッシュタグテーブル33bが索引される。
(ヨ) キャッシュ制御回路38は、キャッシュミスアドレス格納部35の置換すべきウェイ番号(RepWay)を読み出し、その値に従って置換すべきウェイへ、ミススレッドID(missThID)とミスページフレーム番号(missPFN)を、使用中のスレッドID(ThID)とページフレーム番号(PFN)として設定させる。これにより、キャッシュの置換が完了する。
(第2の実施の形態に係るウェイ決定アルゴリズム)
S200:ウェイ0ヒットANDゲート504の結果とウェイ1ヒットANDゲート503の結果を受信し、さらにキャッシュタグテーブル33aのメモリに格納されている最長未使用ウェイ(lruWay)を読み出す。
S201:ウェイ0ヒットANDゲート504の結果が1か0か判定する。つまり、ウェイ0に格納されているThIDが4つの終了ThIDのいずれかと一致しているか否か,そして2つの予測ThIDのいずれかと一致しているか否かを調べる。ウェイ0が1つでも終了ThIDを含み、予測ThIDを全く含んでいない時のみヒット(1)となる。
S202:S201でヒットしていた場合、ウェイ1ヒットANDゲート503の結果が1か0か判定する。ウェイ1が1つでも終了ThIDを含み、予測ThIDを全く含んでいない時のみヒット(1)となっている。
S203:S201でミスしていた場合、ウェイ1ヒットANDゲート503の結果が1か0か判定する。ウェイ1が1つでも終了ThIDを含み、予測ThIDを全く含んでいない時のみヒット(1)となっている。
S204:S202でミスしていた場合、置換ウェイ番号(Rep)に0を設定し、置換ウェイ番号有効フラグ(V)に1を設定する。
S205:S202でヒットしていた場合、またはS203でミスしていた場合、置換ウェイ番号(Rep)に最長未使用ウェイ(lruWay)を設定し、置換ウェイ番号有効フラグ(V)に1を設定する。
S206:S203でヒットしていた場合、置換ウェイ番号(Rep)に1を設定し、置換ウェイ番号有効フラグ(V)に1を設定する。
このアルゴリズムによって、以下の論理が実現されている:
・ウェイ0のThIDのみが終了ThIDのみに一致している場合は、置換ウェイ番号(Rep)をウェイ0にする;
・ウェイ1のThIDのみが終了ThIDのみに一致している場合は、置換ウェイ番号(Rep)をウェイ1にする;
・両方のウェイのThIDが終了ThIDのみに一致しているか、いずれも予測ThIDに一致している場合は、置換ウェイ番号(Rep)を、既にキャッシュタグテーブル33bのメモリに設定されているlruWayの値とする。
第2の実施の形態に係るキャッシュリプレース装置30b及びキャッシュリプレース方法によれば、終了したスレッドが使用していたキャッシュを置換し、今後実行される予測されるスレッドが使用するキャッシュを置換しないようにすることができるため、キャッシュの使用効率があがり、ヒットミス率の低下が期待できる。
(その他の実施の形態)
第1の実施の形態のキャッシュリプレース装置30aのスレッド比較器36aと、第2の実施の形態のキャッシュリプレース装置30bのスレッド比較器36bとを置き換えたりすることで、別の実施の形態が可能であり、同様の効果が得られることは言うまでもない。
スレッド比較器36a、36bでは、終了スレッドIDとの比較を行ったが、代わりに生成スレッドIDキューのスレッドID(実行中のスレッドID)と比較して、一致しないものをリプレース対象とすることもできる。
また、実行中のスレッドであっても優先度の低いスレッドをリプレース対象とすることも可能である。さらにセットセットアソシアティブキャッシュだけでなく、フルアソシアティブキャッシュに対しても適用することができる。
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
本発明の第1の実施の形態に係るキャッシュリプレース装置の構成図である。 本発明の第1の実施の形態に係るスレッド比較器の構成図である。 本発明の第1の実施の形態に係るウェイ決定アルゴリズムの図である。 本発明の第2の実施の形態に係るキャッシュリプレース装置の構成図である。 本発明の第2の実施の形態に係るスレッド比較器の構成図である。 本発明の第2の実施の形態に係るウェイ決定アルゴリズムの図である。
符号の説明
10…スレッド生成回路
20…生成スレッドIDキュー
30a…キャッシュリプレース装置
30b…キャッシュリプレース装置
31…命令アクセスアドレス格納部
32a…インデックスセレクタ
32b…インデックスセレクタ
33a…キャッシュタグテーブル
33b…キャッシュタグテーブル
34…ページフレーム番号比較器
35…キャッシュミスアドレス格納部
36a…スレッド比較器
36b…スレッド比較器
37a…ウェイ決定回路
37b…ウェイ決定回路
38…キャッシュ制御回路
39…ウェイセレクタ
40…カウンタ
41…サイクル取得制御回路
361…第1エントリーユニット
362…第2エントリーユニット
363…第3エントリーユニット
364…第4エントリーユニット
365…ウェイ1ヒットORゲート
366…ウェイ0ヒットORゲート
367…ウェイ1ヒットNORゲート
368…ウェイ0ヒットNORゲート
400…FIFO制御部
401…終了Th比較器
402…終了Th比較器
403…終了ThIDメモリ
404…予測ThIDメモリ
405…スレッド予測回路
406…予測Th比較器
407…予測Th比較器
501…第1予測エントリーユニット
502…第2予測エントリーユニット
503…ウェイ1ヒットANDゲート
504…ウェイ0ヒットANDゲート

Claims (5)

  1. 複数のウェイまたはセットからなるキャッシュタグテーブルと、
    前記キャッシュタグテーブルに接続され、前記キャッシュタグテーブルの有する前記複数のウェイそれぞれ格納された格納スレッドIDと、実行を終了したスレッドの終了スレッドIDを比較するスレッド比較器と、
    前記キャッシュタグテーブル及び前記スレッド比較器に接続され、前記スレッド比較器による比較結果に応じて置換すべきウェイを決定するウェイ決定回路
    とを具備することを特徴とするキャッシュリプレース装置。
  2. 前記キャッシュタグテーブルに接続された命令アクセスアドレス格納部と、
    前記命令アクセスアドレス格納部に接続されたページフレーム番号比較器
    とをさらに具備することを特徴とする請求項1に記載のキャッシュリプレース装置。
  3. 前記スレッド比較器が、
    前記格納スレッドIDを複数の前記終了スレッドIDとそれぞれ比較する複数の終了スレッド比較器と、
    前記複数の終了スレッド比較器からの出力の論理和を、前記複数のウェイ毎にそれぞれ出力するウェイnヒットORゲート(nは自然数)
    とを備え、
    前記ウェイ決定回路が、前記ウェイnヒットORゲートからの出力と、前記キャッシュタグテーブルから出力される最長未使用ウェイ番号とを用いて前記複数のウェイのいずれかを置換すべきウェイとして決定することを特徴とする請求項1に記載のキャッシュリプレース装置。
  4. 前記スレッド比較器が、
    前記格納スレッドIDを複数の前記終了スレッドIDとそれぞれ比較する複数の終了スレッド比較器と、
    前記複数の終了スレッド比較器からの出力の論理和を、前記複数のウェイ毎にそれぞれ出力するウェイnヒットORゲート(nは自然数)と、
    実行が予測されるスレッドの予測スレッドIDを出力するスレッド予測回路と、
    前記複数のウェイ毎に、前記格納スレッドIDを前記予測スレッドIDと比較する複数の予測スレッド比較器と、
    前記複数の予測スレッド比較器からの出力の否定的論理和を、前記複数のウェイ毎にそれぞれ出力するウェイnヒットNORゲートと、
    前記ウェイnヒットORゲートと前記ウェイnヒットNORゲートの出力の論理積を、前記複数のウェイ毎にそれぞれ出力するウェイnヒットANDゲート
    とを備え
    前記ウェイ決定回路が、前記ウェイnヒットANDゲートからの出力と、前記キャッシュタグテーブルから出力される最長未使用ウェイ番号とを用いて前記複数のウェイのいずれかを置換すべきウェイとして決定することを特徴とする請求項1に記載のキャッシュリプレース装置。
  5. 命令によるキャッシュへのアクセスが空いている周期に、カウンタの値によって索引したキャッシュタグテーブルの各ウェイに設定されたスレッドIDをスレッド比較器に、そして有効フラグ、置換ウェイ番号及び最長未使用ウェイ番号をウェイセレクタにそれぞれ出力し、
    前記スレッド比較器に格納されている終了スレッドIDと前記スレッドIDが一致しているかの結果を、前記スレッド比較器からウェイ決定回路に出力し、
    前記有効フラグの値に応じて前記最長未使用ウェイ番号を、前記ウェイセレクタから前記ウェイ決定回路に出力し、
    前記ウェイ決定回路が、置換すべきウェイ番号を決定し、前記カウンタの値によって索引した前記キャッシュタグテーブルの各ウェイの前記置換ウェイ番号を書き換え、そして前記有効フラグをオンに設定する
    ことを特徴とするキャッシュリプレース方法。
JP2003435789A 2003-12-26 2003-12-26 キャッシュリプレース装置及びキャッシュリプレース方法 Expired - Fee Related JP3981070B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003435789A JP3981070B2 (ja) 2003-12-26 2003-12-26 キャッシュリプレース装置及びキャッシュリプレース方法
US11/011,156 US20050160228A1 (en) 2003-12-26 2004-12-15 Equipment and method for cache replacement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003435789A JP3981070B2 (ja) 2003-12-26 2003-12-26 キャッシュリプレース装置及びキャッシュリプレース方法

Publications (2)

Publication Number Publication Date
JP2005196303A JP2005196303A (ja) 2005-07-21
JP3981070B2 true JP3981070B2 (ja) 2007-09-26

Family

ID=34746914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003435789A Expired - Fee Related JP3981070B2 (ja) 2003-12-26 2003-12-26 キャッシュリプレース装置及びキャッシュリプレース方法

Country Status (2)

Country Link
US (1) US20050160228A1 (ja)
JP (1) JP3981070B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4487744B2 (ja) * 2004-11-29 2010-06-23 富士通株式会社 マルチスレッド制御装置及び制御方法
US8275942B2 (en) * 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
US8195886B2 (en) * 2007-03-16 2012-06-05 Arm Limited Data processing apparatus and method for implementing a replacement scheme for entries of a storage unit
JP4768054B2 (ja) * 2009-06-23 2011-09-07 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュ制御方法
US9009401B2 (en) 2012-07-27 2015-04-14 International Business Machines Corporation Multi-updatable least recently used mechanism
GB2509755B (en) * 2013-01-14 2015-07-08 Imagination Tech Ltd Partitioning a shared cache using masks associated with threads to avoiding thrashing
JP2015176245A (ja) 2014-03-13 2015-10-05 株式会社東芝 情報処理装置及びデータ構造
JP2016057763A (ja) 2014-09-08 2016-04-21 株式会社東芝 キャッシュ装置、及びプロセッサ
US9684602B2 (en) 2015-03-11 2017-06-20 Kabushiki Kaisha Toshiba Memory access control device, cache memory and semiconductor device
GB2537357A (en) * 2015-04-09 2016-10-19 Imagination Tech Ltd Cache operation in a multi-threaded processor
CN107710172B (zh) 2015-06-02 2020-07-07 华为技术有限公司 存储器的访问系统及方法
EP3258383A1 (en) * 2016-06-13 2017-12-20 Advanced Micro Devices, Inc. Dynamically adjustable inclusion bias for inclusive caches
GB2565338B (en) 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US11645178B2 (en) 2018-07-27 2023-05-09 MIPS Tech, LLC Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535359A (en) * 1988-12-02 1996-07-09 Mitsubishi Denki Kabushiki Kaisha Computer system with cache memory having address mask register
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6360299B1 (en) * 1999-06-30 2002-03-19 International Business Machines Corporation Extended cache state with prefetched stream ID information
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US7055003B2 (en) * 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures

Also Published As

Publication number Publication date
US20050160228A1 (en) 2005-07-21
JP2005196303A (ja) 2005-07-21

Similar Documents

Publication Publication Date Title
US7502887B2 (en) N-way set associative cache memory and control method thereof
JP3981070B2 (ja) キャッシュリプレース装置及びキャッシュリプレース方法
TWI533201B (zh) 縮減交易回復的快取控制
JP2005528694A (ja) スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置
US7447844B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced on a fixed schedule
JPH1196074A (ja) 交換アルゴリズム動的選択コンピュータシステム
JP4803983B2 (ja) 演算処理装置
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
KR20210019584A (ko) 다중 테이블 분기 타겟 버퍼
JP2009059077A (ja) キャッシュシステム
US11288209B2 (en) Controlling cache entry replacement based on usefulness of cache entry
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
WO2015004422A1 (en) Data store and method of allocating data to the data store
KR20160065773A (ko) 1차 캐시와 오버플로 선입 선출 캐시를 구비하는 캐시 시스템
JP2010033480A (ja) キャッシュメモリおよびキャッシュメモリ制御装置
US7761665B2 (en) Handling of cache accesses in a data processing apparatus
JP2007018514A (ja) キャッシュメモリを備えた装置、欠陥キャッシュエントリの選択禁止方法、及びキャッシュ置換管理装置
US7555610B2 (en) Cache memory and control method thereof
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
JP4009304B2 (ja) キャッシュメモリおよびキャッシュメモリ制御方法
US8688952B2 (en) Arithmetic processing unit and control method for evicting an entry from a TLB to another TLB
US8108611B2 (en) Cache memory system
WO2016188392A1 (zh) 一种数据地址产生系统和方法
JP3770091B2 (ja) キャッシュ制御方法及びキャッシュ制御回路
US8423719B2 (en) Apparatus, processor and method of controlling cache memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070604

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: 20070619

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070628

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100706

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110706

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120706

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130706

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees