JP4044585B2 - キャッシュメモリおよびその制御方法 - Google Patents

キャッシュメモリおよびその制御方法 Download PDF

Info

Publication number
JP4044585B2
JP4044585B2 JP2005515399A JP2005515399A JP4044585B2 JP 4044585 B2 JP4044585 B2 JP 4044585B2 JP 2005515399 A JP2005515399 A JP 2005515399A JP 2005515399 A JP2005515399 A JP 2005515399A JP 4044585 B2 JP4044585 B2 JP 4044585B2
Authority
JP
Japan
Prior art keywords
way
task
cache memory
data
ways
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.)
Active
Application number
JP2005515399A
Other languages
English (en)
Other versions
JPWO2005048112A1 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2005048112A1 publication Critical patent/JPWO2005048112A1/ja
Application granted granted Critical
Publication of JP4044585B2 publication Critical patent/JP4044585B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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
    • 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

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

本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリおよびその制御方法に関する。
キャッシュメモリは、主記憶装置のアクセス時間を短縮しプロセッサの処理能力の向上を図るために、従来から広く用いられている。
例えば特開平6−266620号公報等に開示されたキャッシュメモリは、メインメモリのブロック単位のデータを各エントリに格納し、このエントリを介して、マルチタスク処理を行なう処理ユニットからのアクセスに対応するデータの転送制御と排他制御を行なう。このキャッシュメモリは、エントリに格納されているブロックを排他制御の対象として設定した処理ユニットの各タスクの識別情報を登録するタスク識別情報登録部を、エントリごとに設ける構成とし、タスク単位で、エントリに格納されているブロックの排他制御、および、この排他制御の設定と解除を行なっている。
このキャッシュメモリによれば、マルチタスク処理における排他制御を効率良く行ない、タスク間で共通に使用するデータの矛盾を解消することを図っている。
しかしながら、上記従来技術におけるキャッシュメモリによれば、プロセッサのタスク切り替えに伴ってキャッシュメモリのヒット率が実行中でない他のタスクによる影響を受けるという問題がある。
例えば、タスクAの命令列(又はデータ)がキャッシュメモリに格納されている状態でタスクAの実行からタスクBの実行に切り換えられた場合、タスクBの実行によりキャッシュメモリ中のタスクAの命令列(又はデータ)が追い出されてしまう。タスクAの命令列(又はデータ)がキャッシュメモリから追い出されていれば、再度タスクAが実行されたときに、キャッシュミスが発生するという問題がある。特に、圧縮音声データや圧縮映像データのデコード/エンコード処理などのリアルタイム性を必要とする処理では、上記タスク切り替えに伴う他のタスクの影響によって、タスク切り替え後のキャッシュのリプレース処理によってタスクの割当時間を侵食され、必要な処理時間を確保できず、リアルタイム性が損なわれるあるいは処理時間を確定できないという問題がある。
本発明は、タスク切り替え等によるキャッシュメモリの他のタスクの影響を防止し、タスクの実質的な処理時間を容易に確保するキャッシュメモリを提供することを目的とする。
上記目的を達成するため本発明のキャッシュメモリは、N−ウェイ・セット・アソシエイティブ方式のキャッシュメモリであって、N個のウェイのうち1つ以上のウェイを示す制御レジスタと、制御レジスタに示されるウェイをアクティブにする制御手段と、制御レジスタの内容を更新する更新手段とを備える。
この構成によれば、キャッシュメモリを構成するN−ウェイのうち、制御レジスタに示されたウェイのみをアクティブにし、しかも制御レジスタの内容は更新可能なので、プロセッサが実行する処理に応じてアクティブなウェイを動的に設定することができる。タスクとウェイとを対応付ければ、タスク切り替え後に他のタスクによりキャッシュメモリから必要なデータが追い出されることが解消され、タスク切り替えに伴うヒット率の他のタスクからの影響を防止することができる。その結果、タスクに必要とされる実質的な処理時間を容易に確保することができる。
ここで、前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイ(インアクティブなウェイと呼ぶ。)に対して少なくともリプレースを制限する構成としてもよい。
この構成によれば、インアクティブなウェイについては、少なくともリプレースが制限される。つまり、インアクティブなウェイについて完全にディスエーブルにしても、リプレースだけをディスエーブルにしてもよい。後者の場合、キャッシュメモリに対するリード/ライトまでは制限されないので、ヒット率の低化を防止し、かつインアクティブなウェイを有効に活用することができる。
ここで、前記キャッシュメモリは、さらに、ウェイ毎に設けられ、キャッシュデータのアドレスをタグとして保持するタグ保持手段と、プロセッサから出力されるメモリアクセスアドレスの上位部分であるタグアドレスと、タグ保持手段から出力されるN個のタグとを比較することによりヒットかミスヒットかを判定するN個の比較手段を有し、前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイに対応する比較手段をディスエーブルにする構成としてもよい。
この構成によれば、インアクティブなウェイに対応する比較手段をディスエーブルにするので、比較手段における消費電力を低減することができる。
ここで、前記制御手段は、さらに、制御レジスタに示されたアクティブなウェイ以外のウェイに対応するタグ保持手段に対して、比較手段へのタグ出力をディスエーブルにする構成としてもよい。
この構成によれば、インアクティブなウェイに対応するタグ出力と比較手段とがディスエーブルされるので、タグ保持手段の消費電力を低減することができる。
ここで、前記制御手段は、プロセッサからメモリアクセスアドレスが出力されたとき、当該アクセスアドレスについて、比較手段に最大2回のタグ比較を行わせるよう制御し、1回目のタグ比較では、制御レジスタに示されたアクティブなウェイ以外のウェイに対応する比較手段をディスエーブルし、1回目のタグ比較においてミスヒットと判定された場合に、アクティブなウェイ以外のウェイに対応する比較手段をディスエーブルしないで2回目のタグ比較を行わせる構成としてもよい。
この構成によれば、1回目のタグ比較におけるヒット率が高いほど、比較手段における消費電力を低減することができ、しかも、1回目のタグ比較においてミスヒットした場合に2回目のタグ比較を行うので、インアクティブなウェイのキャッシュデータも有効に活用することができる。
ここで、前記制御手段は、前記2回目のタグ比較においてアクティブなウェイに対応する比較手段をディスエーブルする構成としてもよい。
この構成によれば、2回目のタグ比較ではインアクティブなウェイに対応する比較手段のみがタグ比較を行うので、さらに消費電力を低減することができる。
ここで、前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイに対して、その状態の更新を禁止する構成としてもよい。
この構成によれば、例えばインアクティブなウェイの状態を示すフラグ類の更新を禁止することにより、インアクティブなウェイに対するタスク切り替えによる影響を防止することができる。
ここで、前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイについて、そのアクセス順序を示す情報の更新を禁止する構成としてもよい。
この構成によれば、アクセス順序を示す情報の更新を禁止するので、更新手段による更新によってインアクティブなウェイがアクティブなウェイに割り当てられたタスクのキャッシュミス時のリプレース順が変化することがない。
ここで、前記キャッシュメモリは、さらに、前記更新手段によって制御レジスタの内容が更新されたとき、ウェイに対するアクセス順序を示す情報をリセットするリセット手段を有する構成としてもよい。また、前記アクセス順序を示す情報は、キャッシュエントリー毎の1ビットデータであり、前記キャッシュメモリは、さらに、リプレース可能な複数ウェイから1つのウェイをラウンドロビン方式で選択するためラウンド位置を示すデータを保持するレジスタを有し、前記リセット手段は、前記更新手段によって制御レジスタの内容が更新されたとき、前記レジスタをリセットするように構成してもよい。
この構成によれば、インアクティブなウェイを割り当てたタスクのキャッシュミス時のリプレース順への影響をなくすことができる。
ここで、前記更新手段は、アクティブにすべきウェイを指定するウェイデータであって、タスク毎のウェイデータを保持する保持手段と、実行中のタスクに対応するウェイデータを保持するよう前記制御レジスタを書き換える書き換え手段とを有する構成としてもよい。
この構成によれば、タスクが切り替わる毎に動的に、制御レジスタを書き換えるので、他タスク毎にアクティブなウェイを対応付けることができる。
ここで、前記保持手段は、メモリ中に記憶されたタスク毎のコンテキストデータの一部として前記ウェイデータを保持し、前記書き換え手段は、タスク切り替えに際して、制御レジスタ中の現タスクのウェイデータをメモリに退避し、次タスクのウェイデータをメモリから前記制御レジスタに復帰する構成としてもよい。
この構成によれば、制御レジスタの更新は、OS(Operating System)によるタスク切り替えにより、キャッシュメモリのハードウェアを大幅に追加することなく簡単に実現することができる。
ここで、前記保持手段は、タスク毎の前記ウェイデータを保持し、前記書き換え手段は、メモリに記憶された各タスクのアドレス範囲を記憶するアドレス記憶手段と、アドレス記憶手段に記憶されたアドレス範囲と、プロセッサから出力される命令フェッチアドレスとに基づいて、実行中のタスクを判別する判別手段と、判別された実行中のタスクに対応するウェイデータを前記保持手段から選択する選択手段と、選択されたウェイデータを前記制御レジスタに書き込む書き込み手段とを備える構成としてもよい。
この構成によれば、制御レジスタの更新は、キャッシュメモリ自身が主体的に判断することにより行われるので、どのようなプロセッサに対しても、タスク毎に対応するウェイをアクティブにすることができる。
ここで、前記保持手段は、タスク毎の前記ウェイデータを保持し、前記書き換え手段は、プロセッサから出力されるタスク番号に従って、実行中のタスクに対応するウェイデータを前記保持手段から選択する選択手段と、選択されたウェイデータを前記制御レジスタに書き込む書き込み手段とを備える構成としてもよい。
この構成によれば、プロセッサから出力されるタスク番号を利用するのでハードウェアを大幅に追加することなく、制御レジスタを簡単に更新し、タスク毎に対応するウェイをアクティブにすることができる。
ここで、前記保持手段に保持されるウェイデータは、OSによってタスクに割り当てられるように構成してもよい。
この構成によれば、タスクへのウェイの割り当てをOSが行うことによって、各タスクへのウェイの割り当てを最適化することが容易になる。
ここで、前記キャッシュメモリは、各ウェイにおけるリプレース単位をキャッシュエントリーのラインサイズと、ラインサイズの2のn乗分の1のサイズとに切り替え可能であり、前記制御レジスタは、さらに、ウェイ毎のリプレースサイズを示し、前記制御手段は、制御レジスタに示されたリプレースサイズを単位としてリプレース制御を行う構成としてもよい。
また、前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイに対して少なくともリプレースを制限し、制御レジスタに示されたアクティブなウェイに対して制御レジスタに示されたサイズを単位にリプレースを行う構成としてもよい。
ここで、前記更新手段は、アクティブにすべきウェイを指定するウェイデータであってタスク毎のウェイデータと、タスク毎のリプレースサイズとを保持する保持手段と、実行中のタスクに対応するウェイデータ及びリプレースサイズを保持するよう前記制御レジスタを書き換える書き換え手段とを有する構成としてもよい。
この構成によれば、タスク毎にアクティブなウェイを切り換えると同時に、リプレース単位をも切り換えることができるので、タスクの処理内容に応じてミスヒットを低減することができる。
また、本発明のキャッシュメモリの制御方法は、N−ウェイ・セット・アソシエイティブ方式のキャッシュメモリを制御する制御方法であって、N個のウェイのうち1つ以上のウェイを示すウェイデータを制御レジスタに設定するステップと、制御レジスタに示されるウェイをアクティブにする制御ステップとを有する。
ここで、前記制御ステップでは、制御レジスタに示されたアクティブなウェイ以外のウェイに対して少なくともリプレースを制限するようにしてもよい。
ここで、前記制御方法は、さらに、アクティブにすべきウェイを指定するウェイデータであってタスク毎のウェイデータを保持する保持部から、実行中のタスクに対応するウェイデータ読み出して、読み出したウェイデータを前記制御レジスタに書き込む更新ステップを有する構成としてもよい。
以上説明したように、本発明のキャッシュメモリによれば、プロセッサが実行する処理毎にアクティブなウェイを動的に設定することができるので、タスクとウェイとを対応付ければ、タスク切り替え後に他のタスクによりキャッシュメモリから必要なデータが追い出ることが解消され、タスク切り替えに伴うヒット率の他のタスクからの影響を防止することができる。その結果、タスクに必要とされる実質的な処理時間を容易に確保することができる。
(実施の形態1)
図1は、本発明の実施の形態1におけるプロセッサ1、キャッシュメモリ3、メモリ2を含むシステムの概略構成を示すブロック図である。同図のように、本発明のキャッシュメモリ3は、プロセッサ1およびメモリ2を有するシステムに備えられる。プロセッサ1は、マルチタスク制御を行うプロセッサであり、メモリ2中のタスク1〜4等を切り替えて実行する。キャッシュメモリ3は、N−ウェイ・セット・アソシエイティブ方式のキャッシュメモリであって、タスク毎にN個のウェイのうち1つ以上のウェイを対応させて、当該タスク実行中に対応するウェイをアクティブにするよう構成されている。各タスクは、アクティブなウェイに対しては、キャッシュメモリとしての全機能を利用可能である。また、各タスクは、アクティブでないウェイ(インアクティブなウェイと呼ぶ)に対しては、キャッシュメモリとしての全機能のうち利用可能な機能が制限されている。本実施の形態では、インアクティブなウェイは、リプレースする機能が制限され、それ以外のリード、ライト等は制限されていないものとする。
以下では、キャッシュメモリ3の具体例として、8ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
図2は、キャッシュメモリ3の構成例を示すブロック図である。同図のように、キャッシュメモリ3は、アドレスレジスタ20、デコーダ30、8つのウェイ31a〜31h(以下ウェイ0〜7と略す)、8つの比較器32a〜32h、8つのアンド回路33a〜33h、オア回路34、セレクタ35、セレクタ36、デマルチプレクサ37、制御部38を備える。
アドレスレジスタ20は、メモリ2へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレス、4ビットのセットインデックス(図中のSI)、5ビットのワードインデックス(図中のWI)を含む。
ここで、タグアドレスはウェイにマッピングされるメモリ中の領域(そのサイズはセット数×ブロックである。)を指す。この領域のサイズは、タグアドレスよりも下位のアドレスビット(A10〜A0)で定まるサイズつまり2kバイトであり、1つのウェイのサイズでもある。セットインデックス(SI)はウェイ0〜3に跨る複数セットの1つを指す。このセット数は、セットインデックスが4ビットなので16セットである。タグアドレスおよびセットインデックスで特定されるブロックは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスビットで定まるサイズつまり128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。ワードインデックス(WI)は、ラインデータを構成する複数ワード中の1ワードを指す。アドレスレジスタ20中の最下位2ビット(A1、A0)は、ワードアクセス時には無視される。
デコーダ30は、セットインデックスの4ビットをデコードし、8つのウェイ0〜7の同順に位置するキャッシュエントリーからなる16個のセット中の1つのセットを選択する。
ウェイ0〜7は、同じ構成を有数する8つのウェイであり、8×2kバイトの容量を有する。ウェイ0は、16個のキャッシュエントリーを有する。1つのキャッシュエントリーは、バリッドフラグV、21ビットのタグ、128バイトのラインデータを保持する。バリッドフラグVは、そのキャッシュエントリーが有効か否かを示す。タグは21ビットのタグアドレスのコピーである。ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の128バイトデータのコピーである。また、ウェイ1〜7についても、ウェイ0と同様である。セットインデックスの4ビットによってデコーダ30を介して選択される4ウェイに跨る4つのキャッシュエントリーは、セットと呼ばれる。また、同図では書き込みがあったことを示すダーティフラグは省略されている。
比較器32aは、アドレスレジスタ20中のタグアドレスと、セットインデックスにより選択されたセットに含まれる4つのタグ中のウェイ0のタグとが一致するか否かを比較する。比較器32b〜32hについても、ウェイ31b〜31hに対応すること以外は同様である。
アンド回路33aは、バリッドフラグと比較器32aの比較結果とが一致するか否かを比較する。この比較結果をh0とする。比較結果h0が1である場合は、アドレスレジスタ20中のタグアドレスおよびセットインデックスに対応するラインデータが存在すること、つまりウェイ0においてヒットしたことを意味する。比較結果h0が0である場合は、ミスヒットしたことを意味する。アンド回路33b〜33hについても、ウェイ31b〜31hに対応すること以外は同様である。その比較結果h1〜h7は、ウェイ1〜7でヒットしたかミスしたかを意味する。
オア回路34は、比較結果h0〜h3のオアをとる。このオアの結果をhitとする。hitは、キャッシュメモリにヒットしたか否かを示す。
セレクタ35は、選択されたセットにおけるウェイ0〜7のラインデータのうち、ヒットしたウェイのラインデータを選択する。
セレクタ36は、セレクタ35により選択された32ワードのラインデータにうち、ワードインデックスに示される1ワードを選択する。
デマルチプレクサ37は、キャッシュエントリーにデータを書き込む際に、ウェイ0〜7の1つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
制御部38は、内部にウェイ・レジスタ371を有し、キャッシュメモリ3の全体の制御を行う。ウェイ・レジスタ371は、ウェイ0〜7のうちアクティブなウェイを示すデータを保持するレジスタである。制御部38は、ウェイ・レジスタ371によって示されるアクティブなウェイに対しては、キャッシュメモリとしての全機能を制限なく制御し、インアクティブなウェイに対しては、リプレースする機能を制限する。
図3は、ウェイ・レジスタ371のビット構成を示す図である。同図のように、ウェイ・レジスタ371は、32ビットレジスタであり、下位8ビットにウェイ0〜7に対応するW0フラグ〜W7フラグを保持する。例えば、W0フラグが1のときウェイ0がアクティブなウェイであることを示し、0のときウェイ0がインアクティブなウェイであることを示す。W1フラグ〜W7フラグについても同様である。以下、W0フラグ〜W7フラグの集まりをアクティブウェイデータと呼ぶ。このウェイ・レジスタ371は、プロセッサ1から直接読み書き可能であり、各タスクのコンテキストの一部をなす。つまり、タスク毎にアクティブウェイデータを有し、タスク切り替えによって、ウェイ・レジスタ371の内容は実行中のタスクに対応するアクティブウェイデータに書き換えられる。
図4は、ウェイ・レジスタ371とウェイとの対応関係を示す説明図である。同図左側では、ウェイ・レジスタ371に保持されているアクティブウェイデータが”00111000”であるので、ウェイ2、3、4がアクティブウェイとなり、ウェイ0、1、5、6、7がインアクティブになる。タスク切り替えに際して、ウェイ・レジスタ371は、例えば同図右側のようなアクティブウェイデータに書き換えられる。同図右側では、ウェイ5〜7がアクティブとなり、ウェイ0〜4がインアクティブになる。
図5は、制御部38におけるリプレース処理を示すフローチャートである。同図において、制御部38は、ミスヒットが発生したか否かを判定し(S51)、ミスヒットが発生したと判定された場合に、セットインデックスにより選択されたセットにおける、4つウェイのキャッシュエントリーの中からリプレース対象を1つ選択する(ステップS52)。このリプレース対象の選択はLRU方式でよい。
さらに、制御部38は、ウェイ・レジスタ371を参照して、選択されたウェイがアクティブであるか否かを判定し(S53)、アクティブでなければステップS52に戻り再度他のウェイのキャッシュエントリーを選択する。制御部38は選択されたアクティブなウェイのキャシュエントリーをリプレースする(S54)。
このように、制御部38は、ウェイ・レジスタ371に示されるインアクティブなウェイに対しては、リプレースを制限し、制御部38は、アクティブなウェイに対しては、リプレースを制限することなくキャッシュメモリとしても全機能を制御する。ここでは、リプレースの制限はリプレースの禁止としている。
図6は、プロセッサ1におけるタスク切り替え処理を示すフローチャートである。タスク切り替え処理は時間の経過やイベントの発生により起動される。同図においてプロセッサ1は、現在実行中のタスクのコンテキストをメモリ2中の例えばスタック領域に退避し(ステップS61)、次に実行すべきタスクのコンテキストをスタック領域から復帰させる(ステップS62)。ここで、スタック領域は、図7に示すように、メモリ2に確保され、各タスクのコンテキストを記憶するための領域である。各タスクのコンテキストは、プロセッサの汎用レジスタのデータや、種々の制御レジスタのデータを含み、加えて、本実施の形態ではウェイ・レジスタに格納されるアクティブウェイデータを含む。
このようにして、ウェイ・レジスタ371は、タスク切り替えに際して書き換えられるので、常に実行中のタスクに対応するアクティブウェイデータを保持することになる。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、プロセッサ1に実行されるタスクから見れば、キャッシュメモリへのリードおよびライトについてはアクティブなウェイに対してもインアクティブなウェイに対しても可能であるが、ミスヒットした場合にリプレース対象となるウェイについてはアクティブなウェイに制限されることになる。
例えば、図4において同図左側をタスク1実行時、右側をタスク2実行時のアクティブウェイとする。タスクの実行が経過するにつれて、タスク1のキャッシュデータは次第にウェイ2〜3に格納されていき、タスク2のキャッシュデータは次第にウェイ4〜7に格納されていくことになる。言い換えれば、ウェイ2〜3に格納されたタスク1のキャッシュデータはタスク2の実行によって追い出されない(リプレースされない)。また、ウェイ4〜7に格納されたタスク2のキャッシュデータはタスク1の実行によって追い出されない(リプレースされない)。その結果、タスク切り替えに伴ってタスク1では必要なキャッシュデータが、他のタスクによってリプレースされ、再度タスク1実行時に追い出されたデータをキャッシュにリプレースすることも解消できる。その結果、タスク切り替えに伴うリプレースの発生を低減させることができ、他のタスクからの影響を抑えることができる。
<変形例>
なお、本発明のキャッシュメモリは、上記の実施形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(1)複数のタスクと複数のウェイの対応関係については、1つのタスクに独占されるウェイと、複数のタスクに共用されるウェイとを混在させることができる。例えば、図4において、ウェイ2〜4はタスク1が独占し、ウェイ5〜7はタスク2が独占し、ウェイ0、1は他のタスクが共用するものとする。この場合、タスク1および2は、ウェイを独占するので、タスク切り替えによるキャッシュミスを低減し、リアルタイム性を要する処理に適している。タスク1および2以外のタスクは、リアルタイム性を要しない処理等に適している。
(2)上記実施の形態では、制御部38は、アクティブなウェイについてはキャッシュメモリの全機能を制御し、インアクティブなウェイについてはリプレースを禁止しているが、これに限らない。
例えば、制御部38は、ウェイ・レジスタ371に示されたインアクティブなウェイ対して、その状態の更新を禁止する構成としてもよい。例えば、ウェイの状態を表すフラグ類の更新を禁止することにより、インアクティブなウェイに対するタスク切り替えによる影響を防止することができる。
また、制御部38は、ウェイ・レジスタ371に示されたインアクティブなウェイについて、そのアクセス順序を示す情報の更新を禁止する構成としてもよい。これによれば、アクセス順序を示す情報の更新を禁止するので、他タスクの実行によりリプレース順が影響を受けることがなくなる。
あるいは、制御部38は、インアクティブなウェイについて、全機能を禁止するようにしてもよい。この場合、インアクティブなウェイのタグ出力を禁止するよう出力イネーブル信号をディスエーブルにすればよい。こうすれば、インアクティブなウェイの消費電力を低減することができる。また、全機能を禁止する場合には、各タスクがウェイを共用することなく独占するように、タスクとウェイとを対応付けることが望ましい。こうすれば、メモリとキャッシュメモリとの間でデータに矛盾が生じることを防止することができる。
また、制御部38は、リプレースの禁止に加えて、アクセスの順番を示すLRU用の順序データを更新しないように構成してもよい。
(3)ウェイ・レジスタ371の内容が更新されたとき、LRU方式で用いられるアクセス順序情報をリセットする構成としてもよい。
(4)また、制御部38は、リプレース禁止の代わりにリプレース回数を制限する構成としてもよいし、ウェイ中の特定のキャッシュエントリーに対するリプレースを禁止し、その他のキャッシュエントリーに対してはリプレースを行う構成としてもよい。
(5)上記実施の形態では、8ウェイ・セット・アソシエイティブのキャッシュメモリを例に説明したが、ウェイ数は、4ウェイでも16ウェイでもいくつでもよい。また、上記実施の形態では、セット数が16である例を説明したが、セット数はいくつでもよい。
(6)上記実施の形態では、セット・アソシエイティブのキャッシュメモリを例に説明したが、フル・アソシエイティブ方式のキャッシュメモリであってもよい。フル・アソシエイティブ方式の場合、セットが1つのケースと考えることができる。
(7)図4に示したアクティブウェイデータは、OSによってタスク毎に割り当てられるようにしてもよい。すなわち、OSは実行対象のタスクを生成するときに、そのタスクに対してアクティブにすべきウェイを割り当て、割り当てた結果からそのタスクのアクティブウェイデータを生成する。さらに、OSは、生成されたアクティブウェイデータを、図7に示すように当該タスクのコンテキストデータの一部に設定すればよい。
(8)複数のタスクがメモリデータを共有する場合、それらのタスクには全く同じウェイを共有すべきである。例えば、タスクAとタスクBがメモリデータを共有する場合、タスクAにウェイ5、6、7が割り当てられていれば、OSは、タスクBにもウェイ5、6、7を割り当てればよい。
(実施の形態2)
実施の形態1では、ウェイ・レジスタ371をタスク切り替えによって書き換える構成を説明したが、本実施の形態では、キャッシュメモリにおいてタスクを判別して判別結果に応じてウェイ・レジスタ371を書き換える構成について説明する。加えて、実施の形態1ではリプレースアルゴリズムが周知のLRU方式としたが、本実施の形態ではアクセス順序を示すデータの代わりに1ビットのフラグを用いる擬似的なLRU方式を行う構成について説明する。
図8は、本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメメリは、図2の構成と比較して、ウェイ31a〜31dの代わりにウェイ131a〜131dを備える点と、制御部38の代わりに制御部138を備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
ウェイ131aは、ウェイ31aと比べて、各キャッシュエントリー中に、使用フラグとニューフラグとが追加されている点が異なる。図9に、キャッシュエントリーのビット構成を示す。1つのキャッシュエントリーは、バリッドフラグV、21ビットのタグ、128バイトのラインデータ、使用フラグU、ニューフラグNおよびダーティフラグDを保持する。このうち、使用フラグUは、そのキャッシュエントリーにアクセスがあったか否かを示し、ミスヒットによるリプレースに際してセット内の8つのキャッシュエントリーにおけるアクセス順序の代わりに用いられる。より正確には、使用フラグUの1は、アクセスがあったことを、0はないことを意味する。セット内の8つの使用フラグは、全て1になれば、0にリセットされるので、セット内の8つのキャッシュエントリーにおける使用の有無を示す相対的な値である。別言すれば、使用フラグUは、アクセスされた時期が古いか新しいか2つの相対的な状態を示す。つまり、使用フラグUが1のキャッシュエントリーは、使用フラグが0のキャッシュエントリーよりも新しくアクセスされたことを意味する。また、ニューフラグNは、リプレース直後(又はフィル直後)に初期値として1が設定され、当該キャッシュエントリーへのアクセスがあったときに0にリセットされる。つまり、ニューフラグNの1は、当該キャッシュエントリーがリプレース(又はフィル)されてから一度もアクセスされていない、新しい状態であることを意味する。
制御部138は、制御部38と比べて、設定部372が追加された点と、使用フラグUおよびニューフラグNの設定および更新を行う点とが異なる。
設定部372は、プロセッサ1において実行されているタスクを判別し、判別したタスクに対応するアクティブウェイデータをウェイ・レジスタ371に設定する。
<設定部の構成>
図10は、設定部372の構成例を示すブロック図である。同図のように、設定部372は、判別部100a〜100dとアクティブウェイデータ保持部110a〜110dとセレクタ111とを備える。
判別部100aは、スタートアドレス保持部101、エンドアドレス保持部102、比較器103、104、アンド回路105とを有し、実行中のタスクがタスク1であるかを判別する。
スタートアドレス保持部101、エンドアドレス保持部102は、プロセッサ1から読み書き可能であり、メモリ2に格納されたタスク1のスタートアドレス、エンドアドレスをそれぞれ保持する。このスタートアドレスおよびエンドアドレスは、プロセッサ1によって予め書き込まれ、動的に変更可能である。
比較器103は、プロセッサ1から出力される命令フェッチアドレス(IFアドレス)とスタートアドレス保持部101から出力されるスタートアドレスとを比較し、スタートアドレスよりもIFアドレスの方が大きい場合に1を出力する。
比較器104は、プロセッサ1から出力されるIFアドレスとエンドアドレス保持部102から出力されるエンドアドレスとを比較し、IFアドレスよりもエンドアドレスの方が大きい場合に1を出力する。
アンド回路105は、比較器103および104の比較結果が共に1の場合、すなわち、IFアドレスがタスク1の命令をフェッチしている場合に、実行されているタスクがタスク1であることを示す。
判別部100b〜100dについても同様であり、実行中のタスクがタスク2〜3であるかを判別する。
アクティブウェイデータ保持部110a〜110dは、プロセッサ1から読み書き可能であり、判別部100a〜100dに対応するタスクのアクティブウェイデータを保持する。このアクティブウェイデータは、プロセッサ1によって予め書き込まれ、動的に変更可能である。
セレクタ111は、判別部100a〜100dの判別結果に従って、実行中のタスクに対応するアクティブウェイデータを選択し、ウェイ・レジスタ371に出力する。これにより、ウェイ・レジスタ371は、実行中のタスクに対応するアクティブウェイデータを保持する。
<使用フラグの更新例>
図11は、制御部138による使用フラグUの更新例を示す説明図である。同図では、説明の便宜上8ウェイではなく4ウェイの場合について説明する。同図の上段、中断、下段は、ウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。この4つの使用フラグUをU0〜U3と記す。
同図上段では(U0〜U3)=(1、0、1、0)であるので、ウェイ0、2のキャッシュエントリーはアクセスがあったことを、ウェイ1、3のキャッシュエントリーはアクセスがないことを意味する。
この状態で、メモリアクセスがセットN内のウェイ1のキャッシュエントリーにヒットした場合、同図中断に示すように、(U0〜U3)=(1、1、1、0)に更新される。つまり、実線に示すようにウェイ1の使用フラグU1が0から1に更新される。
さらに、同図中断の状態で、メモリアクセスがセットN内のウェイ3のキャッシュエントリーにヒットした場合、同図下断に示すように、(U0〜U3)=(0、0、0、1)に更新される。つまり、実線に示すようにウェイ3の使用フラグU1が0から1に更新される。加えて、破線に示すようにウェイ3以外の使用フラグU0〜U2が1から0に更新される。これにより、ウェイ3のキャシュエントリーが、ウェイ0〜2の各キャッシュエントリーよりも新しくアクセスされたことを意味することになる。
制御部138は、キャッシュミス時に使用フラグに基づいてリプレース対象のキャッシュエントリーを決定してリプレースを行う。例えば、制御部138は、図11上段では、ウェイ1とウェイ3の何れかをリプレース対象と決定し、図11中断ではウェイ3をリプレース対象と決定し、図11下段ではウェイ0〜2の何れかをリプレース対象と決定する。
<使用フラグ、ニューフラグの更新処理>
図12は、制御部138における使用フラグおよびニューフラグのフラグ更新処理を示すフローチャートである。同図では、バリッドフラグが0(無効)であるキャッシュエントリーの使用フラグUは0に初期化されているものとする。
同図において、制御部138は、キャッシュヒットしたとき(ステップS61)、セットインデックスにより選択されたセットにおけるヒットしたウェイの使用フラグUを1にセットし(ステップS62)、選択されたセット内のヒットしたウェイのキャッシュエントリーのニューフラグが1なら0にリセットする(ステップS171)。
さらに、制御部138は、そのセット内の他のウェイの使用フラグUを読み出し(ステップS63)、読み出した使用フラグUが全て1であるか否かを判定し(ステップS64)、全て1でなければ終了し、全て1であれば他のウェイの全ての使用フラグUを0にリセットする(ステップS65)。
このようにして制御部138は、図11に示した更新例のように、使用フラグを更新する。また、ニューフラグNは、キャッシュエントリーのリプレース後、最初にアクセスされた時点でリセットされる。
<リプレース処理>
図13は、制御部138におけるリプレース処理フローを示す図である。同図において制御部138は、メモリアクセスがミスしたとき(ステップS91)、セットインデックスにより選択されたセットにおける、8つウェイの使用フラグUと、8つのニューフラグN0〜N7を読み出し(ステップS92)、読み出した8つのニューフラグN0〜N7の全てが1であるか否かを判定し(ステップS161)、全てが1である場合は、ステップS93に進み、全てが1ではない(0がある)場合には、使用フラグUが0のウェイのうち、ニューフラグNが1のウェイを除外する(ステップS162)。
さらに、制御部138は、使用フラグUが0のウェイを1つ選択する(ステップS93)。このとき、使用フラグUが0になっているウェイが複数存在する場合は、制御部138はランダムに1つを選択する、あるいはラウンドロビン方式で1つを選択する。さらに、制御部138は、当該セットにおける選択されたウェイのキャッシュエントリーを対象にリプレースし(ステップS94)、リプレース後に当該キャッシュエントリーの使用フラグUを1に、ニューフラグを1に初期化する(ステップS95)。なお、このときバリッドフラグV、ダーティフラグDは、それぞれ1、0に初期化される。また、ラウンドロビン方式で、使用フラグUが0になっている複数ウェイから1つのウェイを選択するために、制御部138をラウンド位置(選択したウェイの位置)を示すデータをレジスタに保持・更新し、使用フラグUが0になっているウェイのうち次のラウンド位置を選択すればよい。
このように、リプレース対象は、ニューフラグが0でかつ使用フラグが0のキャッシュエントリーを1つ選択することにより決定される。ただし、8つのニューフラグの全てが1である場合には、ニューフラグが1でかつ使用フラグUが0のウェイの中からリプレース対象を1つ選択する。このリプレースアルゴリズムは、従来のLRU方式におけるアクセス順序を示すデータの代わりに1ビットの使用フラグを用いるので、擬似的なLRU方式ということができる。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、設定部372を備えることにより、キャッシュメモリ自身が実行中のタスクを判別して、判別したタスクに対応するアクティブウェイデータをウェイ・レジスタ371に設定し、タスク毎にアクティブなウェイを切り替えることができる。その結果、実施の形態1と同様に、タスク切り替えに伴う無駄なリプレースの発生を低減させることができ、ヒット率を向上させることができる。
また、本実施の形態におけるキャッシュメモリによれば、従来のLRU方式におけるアクセス順序を示すデータをキャッシュエントリー毎に設ける代わりに、1ビットの使用フラグをキャッシュエントリー毎に設けている。これにより、従来のアクセス順序データを更新する複雑な回路を、使用フラグを更新する簡単なフラグ更新回路(フラグ更新部39)に置き換えることができる。また、リプレース部40において、リプレース対象を、使用フラグが0のキャッシュエントリーの1つを選択することにより簡単に決定することができる。このように、本実施の形態におけるキャッシュメモリによれば、ハードウェア規模を大きく低減することができる。しかも、従来のLRUと比較してもほぼ同等のヒット率を得ることができる。
さらに、本実施の形態における制御部138は、ニューフラグが1の場合は、当該キャッシュエントリーをリプレース対象から除外している。これは、次の理由による。すなわち、使用フラグUは初期値が1であるが他のウェイの使用フラグが順次1になれば、0にリセットされる。つまり、使用フラグUが0のキャッシュエントリーであってもリプレース後に一度もアクセスされていない場合がある。こうして使用フラグが0になった場合、リプレース後に一度もアクセスされていないキャッシュエントリーが、キャッシュミスの発生により再度リプレース対象に選択されてしまう可能性がある。そのため、ニューフラグNを設けることにより、リプレースされた後に一度もアクセスされていないキャッシュエントリーがリプレースされてしまうことを防止することができる。
<変形例>
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(1)実施の形態1における変形例(1)〜(6)を本実施の形態に適用してもよい。
(2)プロセッサ1から実行中のタスクを示すタスク番号(あるいはスレッド番号、プロセス番号等)が出力される場合には、上記判別部100a〜100dの代わりに、タスク番号を保持および更新するタスク番号保持部を備える構成としてもよい。この場合セレクタ111は、タスク番号に対応するアクティブウェイデータを選択すればよい。
(3)制御部138は、図11の下段に示したようにセット内の他のウェイの使用フラグUが全部1であれば0にし、ヒットしたウェイ自身の使用フラグUを1に更新するが、この代わりに、ヒットしたウェイ自身の使用フラグも0に更新する構成としてもよい。
(4)ウェイ・レジスタ371の内容が更新されたとき、制御部138は、全ての使用フラグをリセットする構成としてもよい。さらに、使用フラグのリセットと共に、制御部138は、使用フラグUが0になっている複数のウェイから1つを選択するための上記ラウンドロビン方式におけるラウンド位置を示す情報をリセットしてもよい。
(5)上記実施形態におけるニューフラグを有しない構成としてもよい。
(実施の形態3)
実施の形態1、2では、キャッシュエントリーのリプレース単位がライン(128バイト)単位でなされる構成を開示したが、本実施の形態では、リプレース単位がタスク毎にライン単位とサブライン(32バイト)単位とで切り替え可能な構成について説明する。
図14は、本発明の実施の形態3におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリは、図8に示した構成と比較して、ウェイ131a〜131hの代わりにウェイ231a〜231hを備える点と、セレクタ233a〜233hが追加された点と、制御部138の代わりに制御部238を備える点とが異なっている。以下、同じ点は説明を省略して異なる点を中心に説明する。
ウェイ231a〜231hは、図8のウェイ131a〜131hと比べて、キャッシュエントリー内にバリッドフラグとダーティフラグとを1ビットずる保持するのではなく、サブライン毎に保持する点が異なっている。図15に、キャッシュエントリーのビット構成を示す。同図のように、同図のように1つのキャッシュエントリーは、バリッドフラグV0〜V3、タグ、ラインデータ、使用フラグU、ニューフラグN、ダーティフラグD0〜D3を保持する。使用フラグUおよびニューフラグについては既に説明したので省略する。ラインデータ(128バイト)は4つのサブライン(32バイト)からなる。バリッドフラグV0〜V3は、4つのサブライン0〜3に対応し、対応するサブラインが有効か否かを示す。ダーティフラグD0〜D3は、4つのサブライン0〜3に対応し、対応するサブラインに書き込みがあったか否かを示す。バリッドフラグおよびダーティフラグがサブライン単位に設けられているのは、リプレースをサブライン単位でも行うことを可能にするためである。また、ライトバック(又はライトスルー)もサブライン単位で行うことが可能である。
セレクタ233aは、ウェイ231aから、ソースインデックスSIにより選択されたセットに対応するバリッドフラグV0〜V3と、ワードインデックスWIの上位2ビットとが入力され、この上位2ビットに指定されるサブラインに対応するバリッドフラグを選択する。セレクタ233b〜233hについても、ウェイ231b〜231hに対応している点以外同様である。これによりセレクタ233a〜233hは、サブライン単位でヒットしたか否かを判定すること可能にしている。
制御部238は、制御部138と比べて、設定部372が削除された点と、RS(リプレースサイズ)レジスタ373が追加された点とが異なる。
設定部372が削除されているのは、ウェイ・レジスタ371が実施の形態1と同様にタスク切り替えにおいて書き換えられるからである。
RSレジスタ373は、ウェイ毎にリプレースサイズを示すリプレースサイズデータを保持する。図16にRSレジスタ373のビット構成例を示す。同図のようにRSレジスタ373は、RS0〜RS7からなるリプレースサイズデータを保持する。RS0〜RS7の各ビットは、1のときリプレースサイズがサブライン(32バイト)であることを、0のときリプレースサイズがライン(128バイト)であることを制御部238に指示する。このRSレジスタ373は、ウェイ・レジスタ371と同様に、プロセッサ1から読み書き可能であり、コンテキストの一部としてタスク切り換えにおいて書き換えられる。これにより、リプレースサイズをラインとするとサブラインとするかを、ウェイ毎にかつ
タスク毎に設定することを可能にしている。
図17は、制御部238におけるフラグの更新処理を示すフローチャートである。同図は、図12に示したフローチャートと比べて、ダーティフラグをサブライン単位で設定するためのステップS175〜S177が追加された点が異なる。すなわち、制御部238は、キャッシュメモリへの書き込みがあったとき(ステップS175)、書き込まれたサブラインを判別し(ステップS176)、判別されたサブラインに対応するダーティフラグを1にセットする(ステップS177)。ステップS175〜S177の処理は、例えば、制御部238に1入力4出力のデマルチプレクサをウェイ毎に備えることにより簡単に実現することができる。このデマルチプレクサは、論理”1”が入力され、4つの出力をキャッシュエントリー中のダーティフラグD0〜D3に対応させ、ワードインデックスWIの上位2ビットにより出力先を制御するよう構成すればよい。
このようにして、制御部238は、サブライン単位に設けられたダーティフラグD0〜D3をキャッシュライトに応じて更新する。
図18は、制御部238におけるリプレース処理を示すフローチャートである。同図は、図13に示したフローチャートと比べて、ステップS94の代わりにステップS181〜183を有する点と、ステップS95の代わりにステップS95aを有する点とが異なる。
制御部238は、RSレジスタ373からステップS93で選択されたウェイに対応するRSフラグを読み出して、リプレースサイズとしてサブラインとラインの何れが指定されているかを判定し(ステップS181)、サブラインと指定されている場合には、当該ウェイのサブラインをリプレースし(ステップS182)、ラインと指定されている場合には、当該ウェイのラインをリプレースする(ステップS182)。さらに、制御部238は、リプレースされたサブラインまたはラインに対応するバリッドフラグおよびダーティフラグを初期化する(ステップS95a)。すなわち、リプレースされたサブラインに対応するバリッドフラグ、ダーティフラグをそれぞれ1、0に設定する。ライン単位でリプレースされた場合には、4つのサブラインに対応する4つのバリッドフラグ、ダーティフラグをそれぞれ1、0に設定する。
以上説明してきたように本実施の形態におけるキャッシュメモリによれば、実施の形態1又は2に加えて、リプレース単位をラインとサブラインとでウェイ毎およびタスク毎に設定できるので、タスクの必要とするデータサイズに応じてリプレース単位を切り換えることにより、キャッシュミスをさらに低減することができる。例えば、タスク1はオーディオデータのデコード/エンコード処理を、タスク2がビデオデータのデコード/エンコード処理を行うものとする。この場合、タスク1ではラインサイズをリプレース単位とし、タスク2ではサブラインをリプレース単位とすることができる。こうすれば、タスク1、2のキャッシュ利用効率を向上させることができる。なぜなら、タスク1は、シーケンシャルアクセスするデータの長さが比較的長く、タスク2は、シーケンシャルアクセスするデータの長さが比較的短いからである。
<変形例>
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(1)実施の形態2における変形例(1)、(3)、(4)、(5)を本実施の形態に適用してもよい。
(2)上記実施の形態では、サブラインのサイズをラインのサイズの1/4としているが、1/2、1/8、1/16等他のサイズでもよい。その場合、各キャッシュエントリー
は、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持すればよい。
(実施の形態4)
実施の形態1〜3では、インアクティブなウェイに対して少なくともリプレースが制限される例を説明したが、本実施の形態では、さらに比較器32a〜32hのうちインアクティブなウェイに対応する比較器における比較の禁止と、インアクティブなウェイに対応するキャッシュエントリーからのタグ出力の禁止をする構成について説明する。
そのため本実施の形態におけるキャッシュメモリは図14に示した制御部238内部に比較制御部372を追加した構成となっている。
図19は、比較制御部372およびウェイ231a〜231hの要部の構成を示すブロック図である。
同図において、キャッシュアドレスエントリ300a〜300hは、キャッシュメモリ中のウェイ0〜8に含まれ、それぞれセット数と同数(実施形態では16個)のタグを保持する。キャッシュアドレスエントリ300aは、ウェイ0に含まれ、16個のタグ保持部301〜316と、16個のアンド回路321〜336とを含む。他のキャッシュアドレスエントリ300b〜300hも同様である。
アンド回路321は、16個のセット中のセット0に対応し、セットインデックスをデコードするデコーダ30によりセット0が選択信号(set0)と、イネーブル信号E0とのアンドをとる。その結果、アンド回路321は、選択信号set0=1でかつイネーブル信号E0=1のときのみ、タグ保持部301からのタグ出力と、比較器32aとをイネーブルにする。
比較器32a〜32hは、それぞれイネーブル端子ENを有し、イネーブル端子の入力が1のときに、アドレスレジスタ20中のタグアドレスとキャッシュアドレスエントリ301からのタグとの比較動作を行う。
比較制御部372は、8つのウェイに対応する8つのイネーブル回路381a〜381h、回数カウンタ382を備え、比較器32a〜32hにおいて最大2回のタグ比較を行わせるよう制御し、1回目のタグ比較では、ウェイ・レジスタ371に示されたアクティブなウェイに対応する比較器をイネーブルにし、かつインアクティブウェイに対応する比較器をディスエーブルすることによって、アクティブウェイのタグを比較対象とし、さらに、1回目のタグ比較においてミスヒットと判定された場合に、アクティブウェイに対応する比較器をディスエーブルし、アクティブウェイに対応する比較器をイネーブルにすることによって、インアクティブウェイのタグを比較対象とし2回目のタグ比較を行わせるよう構成している。また、各比較器のイネーブル/ディスエーブルの制御と同時にウェイ231a〜231hからのタグ出力もイネーブル/ディスエーブルを制御している。これによりディスエーブルされた比較器およびタグ出力による消費電力の低減を図っている。
イネーブル回路381a〜381hは、ウェイ231a〜231hに対応し、ウェイ・レジスタ371に保持されるアクティブウェイデータに従って、比較器32a〜32hのうち、1回目のタグ比較ではアクティブなウェイに対応する比較器のみをイネーブルにし、2回目のタグ比較ではインアクティブなウェイに対応する比較器のみをイネーブルにする。
すなわち、イネーブル回路381a〜381hは、イネーブル信号E0〜E7を生成し、このイネーブル信号E0〜E7により、キャッシュメモリ中のウェイ0〜8に対応する8つのキャッシュアドレスエントリーからのタグ出力と、8つの比較器32a〜32hをイネーブル/ディスエーブルする。例えば、イネーブル回路381aは排他的論理和回路により、ウェイ0がアクティブか否かを示すW0ビットと、回数カウンタ382のカウント
値に従ってイネーブル信号E0を生成する。
回数カウンタ382は、比較の回数をカウントするカウンタであり、0(1回目)、1(2回目)とカウントアップする。ただし、1回目がヒットした場合にはカウントアップしない。
図20は、回数カウンタ382のカウント値とアクティブウェイデータWn(n=0〜7)を入力として、イネーブル信号Enを出力とするイネーブル回路の制御論理を示す真理値表を示す。同図において、例えば、ウェイ0〜2がアクティブでウェイ3〜7がインアクティブである場合(W0=1)、1回目の比較では、イネーブル信号E0〜E2が1(イネーブル)でイネーブル信号E3〜E7がディスエーブルになる。この1回目の比較でヒットした場合には、回数カウンタがカウントアップしないので2回目の比較はなされない。1回目の比較でミスヒットした場合には、回数カウンタがカウントアップするので2回目の比較がなされる。この場合、2回目の比較では、イネーブル信号E0〜E2が0(ディスエーブル)でイネーブル信号E3〜E7が1(イネーブル)になる。
以上の構成により、1回目のタグ比較では、インアクティブなウェイを比較対照としないので比較器における消費電力およびタグ出力による消費電力を低減することができる。さらに、1回目のタグ比較においてミスヒットした場合には、インアクティブなウェイのみを比較対象として2回目のタグ比較を行うので、全てのウェイのキャッシュデータを有効に活用することができる。
なお、2回目の比較において全ての比較器をイネーブルにしてもよい。この場合、1回目でのヒットした場合に2回目の比較が行われないので、消費電力を低減することができる。つまり、タスクごとにアクティブウェイが割り当てられるので1回目の比較において高いヒット率を得られると考えられる。
また、2回目の比較を行わない構成としてもよい。この1回目の比較において高いヒット率を得られると考えられるので、消費電力を低減する効果がある。
本発明は、メモリアクセスを高速化するためのキャッシュメモリおよびその制御方法に適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
図1は、本発明の実施の形態1におけるプロセッサ、キャッシュメモリ、メモリを含むシステムの概略構成を示すブロック図である。 図2は、キャッシュメモリの構成例を示すブロック図である。 図3は、ウェイ・レジスタのビット構成を示す図である。 図4は、ウェイ・レジスタとウェイとの対応関係を示す説明図である。 図5は、制御部におけるリプレース処理を示すフローチャートである。 図6は、タスク切り替え処理を示すフローチャートである。 図7は、タスク領域のコンテキストに含まれるタスク毎のウェイデータを示す図である。 図8は、本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。 図9は、キャッシュエントリーのビット構成を示す図である。 図10は、設定部の構成を示すブロック図である。 図11は、フラグの更新例を示す説明図である。 図12は、フラグ更新処理フローを示す図である。 図13は、リプレース処理フローを示す図である。 図14は、本発明の実施の形態3におけるキャッシュメモリの構成を示すブロック図である。 図15は、キャッシュエントリーのビット構成を示す図である。 図16は、リプレースサイズレジスタのビット構成を示す図である。 図17は、12ベース フラグの更新例を示す説明図である。 図18は、ベース リプレース処理を示すフローチャートである。 図19は、本発明の実施の形態4における比較制御部および各ウェイの要部の構成を示すブロック図である。 図20は、イネーブル回路の制御論理を示す真理値表をである。

Claims (12)

  1. N−ウェイ・セット・アソシエイティブ方式のキャッシュメモリであって、
    N個のウェイのうち1つ以上のウェイを示す制御レジスタと、
    制御レジスタに示されるウェイをアクティブにする制御手段と、
    制御レジスタの内容を更新する更新手段と、
    前記更新手段によって制御レジスタの内容が更新されたとき、ウェイに対するアクセス順序を示す情報をリセットするリセット手段と
    を備えることを特徴とするキャッシュメモリ。
  2. 前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイに対して少なくともリプレースを制限する
    ことを特徴とする請求項記載のキャッシュメモリ。
  3. 前記制御手段は、制御レジスタに示されたアクティブなウェイ以外のウェイについて、その状態の更新を禁止する
    ことを特徴とする請求項記載のキャッシュメモリ。
  4. 前記アクセス順序を示す情報は、キャッシュエントリー毎の1ビットデータであり、
    前記キャッシュメモリは、さらに、リプレース可能な複数ウェイから1つのウェイをラウンドロビン方式で選択するためラウンド位置を示すデータを保持するレジスタを有し、
    前記リセット手段は、前記更新手段によって制御レジスタの内容が更新されたとき、前記レジスタをリセットする
    ことを特徴とする請求項記載のキャッシュメモリ。
  5. 前記更新手段は、
    アクティブにすべきウェイを指定するウェイデータであって、タスク毎のウェイデータを保持する保持手段と、
    実行中のタスクに対応するウェイデータを保持するよう前記制御レジスタを書き換える書き換え手段と
    を有することを特徴とする請求項記載のキャッシュメモリ。
  6. 前記保持手段は、メモリ中に記憶されたタスク毎のコンテキストデータの一部として前記ウェイデータを保持し、
    前記書き換え手段は、タスク切り替えに際して、制御レジスタ中の現タスクのウェイデータをメモリに退避し、次タスクのウェイデータをメモリから前記制御レジスタに復帰する
    ことを特徴とする請求項記載のキャッシュメモリ。
  7. 前記保持手段に保持されるウェイデータは、オペレーティングシステムによってタスクに割り当てられる
    ことを特徴とする請求項記載のキャッシュメモリ。
  8. 前記キャッシュメモリは、さらに、
    キャッシュの単位となるデータを保持するキャッシュエントリー毎に、アクセスの有無を示す1ビットのアクセス情報を記憶する記憶手段と、
    アクセス無しを示すアクセス情報に対応するキャッシュエントリーの中からリプレース対象のキャッシュエントリーを選択する選択手段と
    を備えることを特徴とする請求項記載のキャッシュメモリ。
  9. 前記キャッシュメモリは、さらに
    リプレース可能な複数ウェイから1つのウェイをラウンドロビン方式で選択するためのラウンド位置を示すデータを保持するレジスタを有し、
    前記更新手段によって制御レジスタの内容が更新されたとき、ウェイに対するアクセス順序を示す情報と、前記レジスタが保持するラウンド位置を示すデータとをリセットするリセット手段と
    を有することを特徴とする請求項記載のキャッシュメモリ。
  10. N−ウェイ・セット・アソシエイティブ方式のキャッシュメモリを制御する制御方法であって、
    N個のウェイのうち1つ以上のウェイを示すウェイデータを制御レジスタに設定するステップと、
    制御レジスタに示されるウェイをアクティブにする制御ステップと、
    制御レジスタの内容を更新する更新ステップと、
    前記更新ステップによって制御レジスタの内容が更新されたとき、ウェイに対するアクセス順序を示す情報をリセットするリセットステップと
    を有することを特徴とする制御方法。
  11. 前記制御ステップでは、制御レジスタに示されたアクティブなウェイ以外のウェイに対して少なくともリプレースを制限する
    ことを特徴とする請求項10記載の制御方法。
  12. 前記制御方法は、さらに、
    アクティブにすべきウェイを指定するウェイデータであってタスク毎のウェイデータを保持する保持部から、実行中のタスクに対応するウェイデータ読み出して、読み出したウェイデータを前記制御レジスタに書き込む更新ステップを有する
    ことを特徴とする請求項11記載の制御方法。
JP2005515399A 2003-11-12 2004-09-08 キャッシュメモリおよびその制御方法 Active JP4044585B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003382570 2003-11-12
JP2003382570 2003-11-12
PCT/JP2004/013391 WO2005048112A1 (ja) 2003-11-12 2004-09-08 キャッシュメモリおよびその制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007190015A Division JP4098347B2 (ja) 2003-11-12 2007-07-20 キャッシュメモリおよびその制御方法

Publications (2)

Publication Number Publication Date
JPWO2005048112A1 JPWO2005048112A1 (ja) 2007-05-31
JP4044585B2 true JP4044585B2 (ja) 2008-02-06

Family

ID=34587259

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005515399A Active JP4044585B2 (ja) 2003-11-12 2004-09-08 キャッシュメモリおよびその制御方法
JP2007190015A Active JP4098347B2 (ja) 2003-11-12 2007-07-20 キャッシュメモリおよびその制御方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2007190015A Active JP4098347B2 (ja) 2003-11-12 2007-07-20 キャッシュメモリおよびその制御方法

Country Status (7)

Country Link
US (1) US7502887B2 (ja)
EP (1) EP1684180A4 (ja)
JP (2) JP4044585B2 (ja)
KR (1) KR100813370B1 (ja)
CN (1) CN1879092B (ja)
TW (1) TW200517835A (ja)
WO (1) WO2005048112A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1686485A4 (en) * 2003-11-18 2008-10-29 Matsushita Electric Ind Co Ltd CACHE MEMORY AND ASSOCIATED CHECK
JP4753549B2 (ja) 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
US7966511B2 (en) * 2004-07-27 2011-06-21 Intel Corporation Power management coordination in multi-core processors
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7664970B2 (en) * 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US7263577B2 (en) * 2005-03-03 2007-08-28 Qualcomm Incorporated Power saving methods and apparatus to selectively enable comparators in a CAM renaming register file based on known processor state
US7818502B2 (en) 2005-03-31 2010-10-19 Semiconductor Energy Laboratory Co., Ltd. Selectively powering down tag or data memories in a cache based on overall cache hit rate and per set tag hit rate
CN101156139A (zh) * 2005-04-08 2008-04-02 松下电器产业株式会社 高速缓冲存储器
KR20070093452A (ko) 2005-04-08 2007-09-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 시스템 및 그 제어 방법
US7647514B2 (en) * 2005-08-05 2010-01-12 Fujitsu Limited Reducing power consumption at a cache
US20070083783A1 (en) * 2005-08-05 2007-04-12 Toru Ishihara Reducing power consumption at a cache
TW200821831A (en) * 2005-12-21 2008-05-16 Nxp Bv Schedule based cache/memory power minimization technique
TW200746161A (en) * 2005-12-21 2007-12-16 Nxp Bv Power partitioning memory banks
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache
US8244980B2 (en) * 2006-06-21 2012-08-14 Intel Corporation Shared cache performance
US7861041B2 (en) * 2007-09-04 2010-12-28 Advanced Micro Devices, Inc. Second chance replacement mechanism for a highly associative cache memory of a processor
US7809980B2 (en) * 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
JP4635063B2 (ja) * 2008-03-11 2011-02-16 株式会社東芝 キャッシュメモリ制御回路及びプロセッサ
JP5040773B2 (ja) * 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
JP4767361B2 (ja) * 2008-03-31 2011-09-07 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
CN102077172A (zh) * 2008-07-02 2011-05-25 Nxp股份有限公司 使用运行时间任务调度的多处理器电路
JP2010244435A (ja) * 2009-04-08 2010-10-28 Panasonic Corp キャッシュ制御装置及びキャッシュ制御方法
US8645629B2 (en) * 2009-09-16 2014-02-04 Intel Corporation Persistent cacheable high volume manufacturing (HVM) initialization code
JP5650441B2 (ja) * 2010-06-07 2015-01-07 キヤノン株式会社 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
TW201220048A (en) * 2010-11-05 2012-05-16 Realtek Semiconductor Corp for enhancing access efficiency of cache memory
JP2012203560A (ja) * 2011-03-24 2012-10-22 Toshiba Corp キャッシュメモリおよびキャッシュシステム
WO2012169142A1 (en) 2011-06-09 2012-12-13 Semiconductor Energy Laboratory Co., Ltd. Cache memory and method for driving the same
JP6012263B2 (ja) 2011-06-09 2016-10-25 株式会社半導体エネルギー研究所 半導体記憶装置
CN102725741B (zh) * 2011-12-31 2014-11-05 华为技术有限公司 高速缓冲存储器控制方法、装置和系统
US9223709B1 (en) * 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US9135182B2 (en) 2012-06-01 2015-09-15 Semiconductor Energy Laboratory Co., Ltd. Central processing unit and driving method thereof
US9400544B2 (en) 2013-04-02 2016-07-26 Apple Inc. Advanced fine-grained cache power management
US8984227B2 (en) * 2013-04-02 2015-03-17 Apple Inc. Advanced coarse-grained cache power management
US9396122B2 (en) 2013-04-19 2016-07-19 Apple Inc. Cache allocation scheme optimized for browsing applications
CN104346298B (zh) * 2013-08-06 2018-12-25 北京数码视讯软件技术发展有限公司 基于智能卡的数据处理方法、装置及智能卡
US10073787B2 (en) * 2016-04-18 2018-09-11 Via Alliance Semiconductor Co., Ltd. Dynamic powering of cache memory by ways within multiple set groups based on utilization trends
US10303612B2 (en) * 2016-12-30 2019-05-28 Intel Corporation Power and performance-efficient cache design for a memory encryption engine
US10783083B2 (en) 2018-02-12 2020-09-22 Stmicroelectronics (Beijing) Research & Development Co. Ltd Cache management device, system and method
CN112906332B (zh) * 2021-03-25 2022-08-23 山东高云半导体科技有限公司 Fpga设计的综合实现方法和装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
JPH04100158A (ja) * 1990-08-18 1992-04-02 Pfu Ltd キャッシュ制御方式
JPH04137053A (ja) * 1990-09-28 1992-05-12 Nippon Telegr & Teleph Corp <Ntt> キャッシュメモリへのブロック登録制御方式
US5353425A (en) 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JP3381079B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 キャッシュメモリを用いた排他制御システム
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JP3348367B2 (ja) 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
US6282505B1 (en) 1996-02-16 2001-08-28 Hitachi, Ltd. Multi-port memory and a data processor accessing the same
US6144924A (en) * 1996-05-20 2000-11-07 Crane Nuclear, Inc. Motor condition and performance analyzer
US5802568A (en) * 1996-06-06 1998-09-01 Sun Microsystems, Inc. Simplified least-recently-used entry replacement in associative cache memories and translation lookaside buffers
EP0856797B1 (en) * 1997-01-30 2003-05-21 STMicroelectronics Limited A cache system for concurrent processes
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
WO2002008911A1 (fr) * 2000-07-24 2002-01-31 Hitachi,Ltd Systeme de traitement de donnees
JP2002116956A (ja) 2000-10-06 2002-04-19 Nec Corp キャッシュ制御方法及びキャッシュ制御システム
JP3900025B2 (ja) 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式

Also Published As

Publication number Publication date
KR100813370B1 (ko) 2008-03-12
TW200517835A (en) 2005-06-01
JPWO2005048112A1 (ja) 2007-05-31
CN1879092A (zh) 2006-12-13
WO2005048112A1 (ja) 2005-05-26
EP1684180A1 (en) 2006-07-26
KR20060085677A (ko) 2006-07-27
US20070136530A1 (en) 2007-06-14
JP2007299423A (ja) 2007-11-15
EP1684180A4 (en) 2008-10-29
US7502887B2 (en) 2009-03-10
CN1879092B (zh) 2010-05-12
JP4098347B2 (ja) 2008-06-11

Similar Documents

Publication Publication Date Title
JP4098347B2 (ja) キャッシュメモリおよびその制御方法
US7783836B2 (en) System and method for cache management
US4811209A (en) Cache memory with multiple valid bits for each data indication the validity within different contents
US7577793B2 (en) Patrol snooping for higher level cache eviction candidate identification
JP2005528694A (ja) スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置
US20110167224A1 (en) Cache memory, memory system, data copying method, and data rewriting method
US20100011165A1 (en) Cache management systems and methods
US7555610B2 (en) Cache memory and control method thereof
US20070143548A1 (en) Cache memory and its controlling method
US20060265551A1 (en) Handling of cache accesses in a data processing apparatus
JP4009304B2 (ja) キャッシュメモリおよびキャッシュメモリ制御方法
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
US7970998B2 (en) Parallel caches operating in exclusive address ranges
US20110179227A1 (en) Cache memory and method for cache entry replacement based on modified access order
US20090106497A1 (en) Apparatus, processor and method of controlling cache memory
JPH0659977A (ja) 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
US20120102271A1 (en) Cache memory system and cache memory control method
JPWO2012124034A1 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071115

R150 Certificate of patent or registration of utility model

Ref document number: 4044585

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20101122

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111122

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131122

Year of fee payment: 6

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250