米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 株式会社東芝

発明の名称 情報処理装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−11580(P2007−11580A)
公開日 平成19年1月18日(2007.1.18)
出願番号 特願2005−189948(P2005−189948)
出願日 平成17年6月29日(2005.6.29)
代理人 【識別番号】100075812
【弁理士】
【氏名又は名称】吉武 賢次
発明者 宮 本 久 也
要約 課題
キャッシュメモリのライトバック処理、無効化処理またはこれらの両方を効率よく行う。

解決手段
本発明の一態様としての情報処理装置は、CPUと、タスク又はプロセスを識別するタスクID又はプロセスIDを格納するレジスタと、前記CPUより指定されたメモリアドレスに対応するキャッシュラインにデータを記録するキャッシュメモリであって、前記キャッシュラインを管理するタグの一部に前記レジスタ内のタスクID又はプロセスIDを前記キャッシュラインのオーナーIDとして書き込むキャッシュメモリと、を備え、前記CPUは、前記レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理や無効化処理といった特定の操作を行うこと指示する記述を含むキャッシュ制御命令を実行することを特徴とする。
特許請求の範囲
【請求項1】
CPUと、
タスク又はプロセスを識別するタスクID又はプロセスIDを格納するレジスタと、
前記CPUにより指定されたメモリアドレスに対応するキャッシュラインにデータを記録するキャッシュメモリであって、前記キャッシュラインを管理するタグの一部に前記レジスタ内のタスクID又はプロセスIDを前記キャッシュラインのオーナーIDとして書き込むキャッシュメモリと、を備え、
前記CPUは、前記レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理を行うこと指示する記述を含むキャッシュ制御命令を実行することを特徴とする情報処理装置。
【請求項2】
前記CPUは、前記レジスタに記録されたタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみ無効化処理を行うことを指示する記述を含むキャッシュ制御命令をさらに実行することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
各々異なるCPU−IDが割り当てられた複数のCPUと、
タスク又はプロセスを識別するタスクID又はプロセスIDを格納するレジスタと、
前記CPUにより指定されたメモリアドレスに対応するキャッシュラインにデータを記録するキャッシュメモリであって、前記キャッシュラインを管理するタグの一部に、前記CPUのCPU−IDと前記レジスタ内のタスクID又はプロセスIDとを前記キャッシュラインのオーナーIDとして書き込むキャッシュメモリと、を備え、
前記CPUは、自身のCPU−ID及び前記レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理することを指示する記述を含むキャッシュ制御命令を実行することを特徴とする情報処理装置。
【請求項4】
前記CPUは、自身のCPU−ID及び前記レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみ無効化処理を行うことを指示する記述を含むキャッシュ制御命令をさらに実行することを特徴とする請求項3に記載の情報処理装置
【請求項5】
バスを介して各前記CPUによりアクセス可能な主メモリにおける共有領域を定めた情報を格納するレジスタと、
前記CPUにより指定されたメモリアドレスが前記共有領域に属する場合は前記キャッシュラインのタグの一部に共有情報をセットするキャッシュコントローラと、をさらに備え、
前記CPUは、共有情報がセットされたキャッシュラインについては、オーナーIDを指定してキャッシュラインの無効化またはライトバックを実行する前記キャッシュ制御命令に関し、指定された前記オーナーIDが前記タグ上に記録されたオーナーIDと一致した場合においても、その実行を抑制することを特徴とする請求項4に記載の情報処理装置。
発明の詳細な説明
【技術分野】
【0001】
本発明は、マルチマスター(或いはマルチCPU)環境におけるキャッシュ制御手法に関する。
【背景技術】
【0002】
マルチマスター(或いはマルチCPU)システムにおいて、従来から、キャッシュコヒーレンシ(coherency)つまり、キャッシュ及びメモリ間のコヒーレンス(coherence)を確保することは重要な関心事である。そのため、キャッシュスヌープ(snoop)の機構が数多く提案されており、マルチCPU環境の実現に寄与している。
【0003】
特開2002-163149公報(特許文献1)及び 特開平11-212868公報(特許文献2)に提案されるようなマルチCPU間のキャッシュコヒーレンスを保つ仕組みがその例である。
【0004】
しかしながら、前者は回路規模の増大や、システム全体のタグ情報の管理のためのオーバーヘッドという別の問題があり、一方、後者のようなスヌープ機構はバス上のトラフィックが増大する局面を招く。
【0005】
また、特定のCPUにおけるキャッシュのヒット率を向上するための技術として特開2000-276403公報(特許文献3)のようなキャッシュのカテゴライズが提案されているが、プログラム規模が増大する昨今のシステムにおいて必ずしもこのような仕組みがシステム全体のパフォーマンスを向上させ得るとは限らない。
【0006】
一方、上述のキャッシュスヌープに関し、次のような[条件1]において、キャッシュスヌープが十分に寄与しないことが想定できる。
【0007】
[条件 1] CPU以外のマスター(外部マスター)が主メモリの一部を参照し、処理内容を記載したコマンド列やデータを読み出す。このとき、同外部マスターが参照する物理アドレスは実際にメモリデバイスが存在するアドレスではなく、適切なシステムコントローラによって主メモリの一部がマッピングされた物理アドレスである。この場合、外部マスターが参照する物理アドレスとキャッシュタグの物理アドレスは一致するはずが無く、キャッシュスヌープの機能が寄与しないことになる。
【0008】
また、仮に外部マスターとCPUが同じ主メモリ上の物理アドレスを参照する場合においても、そのデータ量が多い場合には、キャッシュスヌープの機能を用いずに、あらかじめデータキャッシュをライトバックする方がシステムのパフォーマンス上好ましいと言える。これは、その過程を考えれば明らかである。外部マスターの主メモリ参照が行われると、
1) 外部マスターからスヌープ信号と物理アドレスがCPUへ通知される
2) 該当キャッシラインの探索とライトバック処理
3) sync(Synchronize Shared Memory)相当の処理の後、外部マスターの主メモリ参照が特定のブロックに限って行われる
といった手順になり、データ量が多いほど1)→2)→3)→1)...→3)の過程でバス権のやり取りが頻繁に発生することになる。
【0009】
ところで、多くのCPUはソフトウェアに対しキャッシュの制御手段を提供している。キャッシュスヌープの実装されていない(或いは有効に機能しない)システムであっても、ソフトウェアによる適切なキャッシュの制御により、マルチマスターシステムにおけるキャッシュコヒーレンシは十分保障され得る。
【0010】
しかしながら、以下の[条件2]及び[条件3]においてソフトウェアによるキャッシュ制御は、システム全体のパフォーマンスの観点では好ましくない、つまりパフォーマンスの低下をもたらす。
【0011】
[条件 2] マルチタスク・マルチプロセスの環境において、あるタスク(若しくはプロセス)が外部マスターによって参照される大量のデータを主メモリに格納し、データキャッシュのライトバックを行い、外部マスターにデータの読み出し指示を行う場合を想定する。
【0012】
このとき、上記タスク(若しくはプロセス)が動作中にも他のタスク(或いはプロセス)に実行権が切り替わる可能性があり、データキャッシュ上には上記タスク(若しくはプロセス)が書き込んだデータ以外にもさまざまなタスク(若しくはプロセス)が書き込み或いは参照したデータが格納されている。
【0013】
一般にソフトウェアは自身が書き込みを行ったデータがデータキャッシュ上に存在するか否かを効率的に検知する手段を持たない。従って、この条件設定において上記タスク(或いはプロセス)は全データキャッシュを対象にライトバック処理を行わざるを得ず、
1) データキャッシュのライトバック処理に要する時間が必要以上に長くなり
2) 他のタスク(或いはプロセス)が参照するはずのデータに関しても無効化(無効化)してしまい
他のタスク(或いはプロセス)の動作・システム全体のパフォーマンスに少なからず影響を与え得る。
【0014】
また、CPUに実装されるデータキャッシュのサイズが大きくなるほど、同ライトバック処理によるシステム全体のパフォーマンスへの影響は大きくなる。
【0015】
[条件 3] 更に、ローダープログラムによるプログラムのダウンロード過程においては、データキャッシュのライトバック処理に加え命令キャッシュの無効化処理も行われる。後者の命令キャッシュ無効化はプログラム(プロセス)の消滅過程においても極めて重要な処理である。
ローダープログラムはダウンロードしたプログラムデータがデータキャッシュ上に在るか否かをやはり効率的に知る術はなく、更にダウンロードしたプログラムと衝突するラインが命令キャッシュに存在するか否かについても同じ様に効率的に知る術はない。
【0016】
従って、ローダープログラムはシステムの安定した動作を保障するためにシステム全体のパフォーマンスを犠牲にし、全データキャッシュのライトバック処理に加え、全命令キャッシュの無効化処理を実行せざるを得ない。この条件においても、CPUに実装される命令キャッシュのサイズが大きくなるほど、同無効化処理によるシステム全体のパフォーマンスへの影響は大きくなるのである。
【特許文献1】特開2002-163149公報
【特許文献2】特開平11-212868公報
【特許文献3】特開2000-276403公報
【発明の開示】
【発明が解決しようとする課題】
【0017】
本発明は、キャッシュメモリのライトバック処理、無効化処理またはこれらの両方を効率よく行うことができる情報処理装置を提供する。
【課題を解決するための手段】
【0018】
本発明の一態様としての情報処理装置は、CPUと、タスク又はプロセスを識別するタスクID又はプロセスIDを格納するレジスタと、前記CPUにより指定されたメモリアドレスに対応するキャッシュラインにデータを記録するキャッシュメモリであって、前記キャッシュラインを管理するタグの一部に前記レジスタ内のタスクID又はプロセスIDを前記キャッシュラインのオーナーIDとして書き込むキャッシュメモリと、を備え、前記CPUは、前記レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理を行うこと指示する記述を含むキャッシュ制御命令を実行することを特徴とする。
【0019】
本発明の一態様としての情報処理装置は、各々異なるCPU−IDが割り当てられた複数のCPUと、タスク又はプロセスを識別するタスクID又はプロセスIDを格納するレジスタと、前記CPUにより指定されたメモリアドレスに対応するキャッシュラインにデータを記録するキャッシュメモリであって、前記キャッシュラインを管理するタグの一部に、前記CPUのCPU−IDと前記レジスタ内のタスクID又はプロセスIDとを前記キャッシュラインのオーナーIDとして書き込むキャッシュメモリと、を備え、前記CPUは、自身のCPU−ID及び前記レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理することを指示する記述を含むキャッシュ制御命令を実行することを特徴とする。
【発明の効果】
【0020】
本発明により、キャッシュメモリのライトバック処理、無効化処理またはこれらの両方を効率よく行うことができる。
【発明を実施するための最良の形態】
【0021】
本実施の形態は、キャッシュラインの管理情報にそのキャッシュのオーナー情報を加えることで、キャッシュのライトバック処理または無効化処理を効率よく行い、マルチマスター或いはマルチCPU環境にけるパフォーマンス向上を実現させようとするものである。以下、図面を参照しながら、本発明の実施の形態について説明する。
【0022】
図1は、本発明に係わるマルチマスターシステムの構成を概略的に示すブロック図である。
【0023】
このマルチマスターシステムは、情報処理装置11、主メモリ12、デバイス13(例えばグラフィックコントローラ)、複数のプログラムやデータを格納する外部記憶装置14及びそれらを繋ぐバス15を備える。情報処理装置11は、CPU21、命令キャッシュ(I$)22、データキャッシュ(D$)23、メモリ管理ユニット(MMU)24及びCPU制御レジスタの1つである専用レジスタ25を有する。デバイス13は、CPU11上で動作するプログラムとの間で主メモリ12上の特定領域R1を共有する。
【0024】
本実施形態ではCPU21上で動作するプログラムが生成したデータをデバイス13が参照する場合を想定する。この時、プログラムが生成したデータは、図1に示すように、データキャッシュ23に格納され(<1>)、プログラムによる強制的なライトバック(<2>)が行われる。その後にデバイス13によるデータの読み出し(<3>)が実行されることになる。
【0025】
プログラムは一般に仮想アドレスにて実行が管理される。MMU24は、プログラムの読み出しや、プログラムからのメモリや他のデバイスへのアクセスにおいて、仮想アドレスと物理アドレスとの対応付けを行う。実行するプログラムがプロセス単位で管理される場合、そのプロセスにはオペレーティングシステム(OS)が管理するIDが個別に付与され、プロセスIDごとに仮想アドレスと物理アドレスとの対応が管理される。
【0026】
専用レジスタ25は、実行中のプロセスIDを格納する。MMU24は、専用レジスタ25を参照することで実行中のプロセスのプロセスIDを確認できる。
【0027】
CPU21とバス15との間には命令キャッシュ22及びデータキャッシュ23が介在する。特殊な場合を除きプログラムの実行に伴う命令の読み出しやプログラムからのメモリ参照・データの更新においては、命令キャッシュ22及びデータキャッシュ23を介した間接的なメモリアクセスが行われる。
【0028】
この環境において、いま特定のタスク(或いはプロセス)がデバイス13用のデータを主メモリ12上に生成する状況を考える。デバイス13が主メモリ12上のデータを間違いなく参照(図1における<3>)するためには、上記特定のタスク(或いはプロセス)が生成したデータがデータキャッシュ23からライトバック(図1における<2>)されなければならない。
【0029】
この時、CPU21上で動作する複数のタスク(或いはプロセス)の内上記特定のタスク(或いはプロセス)が書き込んだデータのみについてデータキャッシュ23のライトバック処理が行うことができれば、システム全体のパフォーマンスを下げることは無いと考えられる。図1のシステムは、このように特定のタスク(或いはプロセス)が書き込んだデータのみデータキャッシュ23のライトバックを行うことができる機構をもつ。以下これについて詳細に説明する。
【0030】
図2は、データキャッシュ23に格納する情報を説明する図である。
【0031】
データキャッシュ23は複数のキャッシュラインをもつ。各キャッシュラインには、それを管理するための情報として、オーナー情報としてのオーナーID(Owner-ID)、物理アドレス(Physical Address)、状態(State)ビットを記録するタグが用意されている。タグに記録された物理アドレスに相当するメモリから読み込まれたデータ或いは同物理アドレスに書き込まれるデータがキャッシュラインのデータ領域に記録される。オーナーIDは、該当するキャッシュラインを最後にダーティ(dirty、つまりデータを書き込まれた状態)にしたタスクのIDまたはプロセスのID(以下プロセスIDに統一)である。データの書き込み操作あった場合に、専用レジスタ25におけるプロセスIDがデータ書き込みのあったキャッシュラインのタグにコピーされる。以上の機構により、特定のタスク(或いはプロセス)が書き込んだキャッシュラインを識別できるため、特定のタスク(或いはプロセス)が書き込んだキャッシュラインのみをライトバックすることが可能となる。これについてさらに詳しく述べるならば以下の通りである。
【0032】
一般にキャッシュは、対応する主メモリの物理アドレスを格納するタグにより管理されている(命令キャッシュにおいては、仮想アドレスによりタグが管理されている場合も存在する)。このタグを拡張し、キャッシュ上のデータのオーナーを管理できるようにする。オーナーを示すIDとしてはプロセスIDで代用できる。プロセスIDはOSにより管理されるものであり、各タスクやプロセスはそれ自身のプロセスIDを知る必要はない。プロセスIDはOSがプロセスを管理するために各プロセスに対し一意に発行するものではあるが、一方で、このプロセスIDを用い仮想アドレスをプロセス空間として拡張し管理するために、ハードウェアにおいても同プロセスIDを登録する仕組みが設けられている。例えば、MIPSアーキテクチャにおいて実行権を得たプロセスのプロセスIDは専用のレジスタ(EntryHiレジスタ)により管理される。上記タグにおけるオーナーとはそのキャッシュラインを最後にダーティにしたタスクやプロセスのプロセスIDであり、ハードウェアは専用レジスタ25の存在によりキャッシュラインを最後にダーティにしたタスクやプロセスのプロセスIDを知ることができ、タグにオーナーであるプロセスIDを記録することが出来るのである。つまり、データの書き込み操作があった場合に、専用レジスタ25におけるプロセスIDをキャッシュのタグにコピーすればよいことになる。なお、タグに加えられたオーナーIDは、キャッシュの置き換え(replace)には何ら影響を与えるものではない。
【0033】
ここで、ライトバック処理のコーディング例を以下に示す。
la $2, Base_addr
li $3, Loop_max
loop:
cache D_writeback_OwnerID, way_0($2)
cache D_writeback_OwnerID, way_1($2)
cache D_writeback_OwnerID, way_2($2)
cache D_writeback_OwnerID, way_3($2)

addiu $3, $3, -1
bnel $3, $0, loop
addiu $2, $2, 0x20
【0034】
コード上は全ウェイ(ウェイ4本)及び 全キャッシュラインに対しライトバックのリクエストを行うが、ライトバック処理を行うプロセスID(専用レジスタ25が示すプロセスID)とタグに記録されたオーナーIDとが一致しないとライトバックは行われない。同コードは以下のケースで有効に機能する。
【0035】
ケース1) オーナー自身が上記コードを実行し、自身のオーナーIDを持つデータキャッシュをライトバックする場合。
【0036】
ケース 2) プロセスIDを持たない特権プロセス、例えば、OSの機能の一部であるローダープログラム等が専用レジスタ25にデータキャッシュからライトバックあるいは無効化すべきプロセスIDを設定し、上記コードを実行する場合。なお、ローダープログラムがOSによってプロセスIDを付与され管理される1つのプロセスであった場合には、データキャッシュの操作段階において、CPUに設定されたプロセスIDがローダープログラム自身の実行に影響しない状態、つまりローダープログラムをカーネル空間でかつカーネルモードにて実行する特権プロセスへモード遷移する必要があり、更に、キャッシュ操作の前後において専用レジスタ25に登録されている実行中のプロセスIDと操作対象のプロセスIDとを入れ替える操作も行うことになる。
【0037】
ここで、データキャッシュを無効化する際は、上記コードにおけるキャッシュ命令のパラメータを以下のように変更し、実行する。
la $2, Base_addr
li $3, Loop_max
loop:
cache D_invalidate_OwnerID, way_0($2)
cache D_invalidate _OwnerID, way_1($2)
cache D_invalidate _OwnerID, way_2($2)
cache D_invalidate _OwnerID, way_3($2)

addiu $3, $3, -1
bnel $3, $0, loop
addiu $2, $2, 0x20
【0038】
上述したように、本実施の形態では、タスク(若しくはプロセス)のプロセスIDを指定し、データキャッシュのタグに記録されたオーナーIDと、専用レジスタ25上で指定されたタスク(若しくはプロセス)のプロセスIDとが一致した場合に限りライトバック処理(或いは無効化処理)を行う選択的なキャッシュ制御手段を与える。すなわち、CPUは、専用レジスタ25内のプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理または無効化処理を行うこと指示する記述を含むキャッシュ制御命令を実行する。ライトバック処理においては、タスク(若しくはプロセス)のプロセスIDがデータキャッシュのオーナーIDに一致しており、かつそのキャッシュラインがダーティであった場合にそのキャッシュラインのライトバック処理を行うものであり、異なるオーナーを持つキャッシュラインについてはたとえそのキャッシュラインがダーティであったとしてもライトバック処理を行わない。
【0039】
図3は、本実施の形態におけるライトバック処理の流れを示すフローチャートである。
【0040】
あるタスク(若しくはプロセス)においてCPU21がキャッシュ命令を実行する(S1)。
【0041】
MMU24は、専用レジスタ25に設定されたプロセスIDに基づき、CPU21によって指定された仮想アドレスから物理アドレスを求める(S2)。
【0042】
CPU21は、求められた物理アドレスに合致するタグを検索する。ウェイが複数存在する場合は各ウェイ上を並行して検索する(S3)。
【0043】
求めた物理アドレスと一致するタグが存在しない場合は(S4のNO)処理を終了し、求めた物理アドレスと一致するタグが存在する場合は(S4のYES)、CPU21は専用レジスタ25からプロセスIDを読み出す(S5)。
【0044】
CPU21はプロセスIDとタグのオーナーIDとが一致するか否かを判断する(S6)。
【0045】
一致しない場合は(S6のNO)処理を終了し、一致した場合は(S6のYES)、該当するラインがダーティかどうかをタグ内の状態ビットから判断する(S7)。
【0046】
該当するラインがダーティである場合は(S7のYES)、そのラインのライトバック処理を行い(S8)、ダーティでない場合は(S7のNO)処理を終了する。図3において、S5、S6の処理が、従来のライトバック処理に対して、新たに追加された部分である。
【0047】
図4は、本実施の形態におけるデータキャッシュの無効化処理の流れを示すフローチャートである。
【0048】
S11〜S16は、図3のS1〜S6と同一である。S16において、プロセスIDとタグのオーナーIDとが一致した場合は(S16のYES)、次に、該当するキャッシュラインにおけるタグ内の状態ビットから、そのキャッシュラインが有効であるかどうかを判断する(S17)。キャッシュラインが有効である場合は(S17のYES)そのキャッシュラインを無効化し(S18)、有効でない場合は(S17のNO)処理を終了する。図4において、S15、S16の処理が、従来におけるデータキャッシュの無効化処理に対して、本実施の形態において新たに追加された部分である。
【0049】
ここで、ローダープログラムによりプログラムのローディング処理を行う場合を例にとってデータキャッシュのライトバック処理及び無効化処理についてさらに説明する。
【0050】
図5は、ローダープログラムによりプログラムのローディング処理を行った後に行うライトバック処理及び無効化処理を説明する図である。図5に示されるシステムは、デバイス13が存在しない点を除き、図1と同一であり、図1と同一の部分には同一の番号を付して各要素についての説明は省略する。
【0051】
この例では、ロードされるプログラムは外部記憶装置14(例えばFlush ROM)に記録されたデータであり、そのデータはローダープログラムにより主メモリ12へロードされる。しかしながら、CPU21と主メモリ12との間には命令キャッシュ22及びデータキャッシュ23が介在しており、外部記憶装置14からロードされたデータは最初データキャッシュ23へ格納される(<11>)。主メモリ12へロードされたプログラムを実行する前に、ローダープログラムが使用したデータキャッシュ23から、同ロードされたプログラムに該当するデータが確実にデータキャッシュ23から主メモリ12にライトバックされる必要がある(<12>)。
【0052】
CPU21上にはローダープログラム以外にも複数のプログラムが動作している。そこで、OSによってローダープログラムに付与されたプロセスIDを用いた選択的なライトバック処理を行うことにより、他のプロセスのパフォーマンス低下を排除することが出来る。
【0053】
同様に、無効化処理においては、対象のタスク(若しくはプロセス)の専用レジスタ25に登録されたプロセスIDがキャッシュラインのオーナーIDに一致しており、そのキャッシュラインが有効(クリーンエクスクルーシブ(clean exclusive)及びダーティを含む)であった場合にそのキャッシュラインの無効化を行うものであり、異なるオーナーIDを持つキャッシュラインについてはたとえそのキャッシュラインが有効であったとしても無効化を行わない。
【0054】
以上では、データキャッシュのライトバック処理及び無効化処理について主に説明したが、本発明は、命令キャッシュの無効化処理に適用しても有効である。
【0055】
一般に、命令キャッシュの無効化処理においても、データキャッシュの無効化処理と同様に、ソフトウェアはどのキャッシュラインに対象プロセスのコードが格納されているかを効率よく知る方法が無い。従って、システムを安全に動作させるために1つのプロセスを無効化するために、全命令キャッシュの無効化を行うのが常である。
【0056】
そこで、本実施の形態では、命令キャッシュにおけるタグを拡張して、データキャッシュの場合と同様に、タグ内にオーナーIDを含める。
【0057】
図6は、命令キャッシュ22に格納する情報を示す。
【0058】
命令キャッシュ22は複数のキャッシュラインを有する。各命令キャッシュのラインは、オーナーID(Owner-ID)、物理アドレス(Physical Address)、状態(State)ビットおよび命令列を有する。オーナーID、物理アドレス及び状態ビットはタグによって管理される。オーナーIDは、該当するキャッシュライン上の命令を実行したタスクやプロセスのプロセスIDである。命令の読み込み操作あった場合に、専用レジスタ25におけるプロセスIDが対応するキャッシュラインのタグにコピーされる。これにより、特定のタスク(或いはプロセス)の実行に使用されたキャッシュラインを識別できるため、特定のタスク(或いはプロセス)の実行に使用されたキャッシュラインのみを無効化することが可能となる。このように、本発明は、特定プロセスのコードが格納されている命令キャッシュの無効化処理にも効果的である。
【0059】
ここで、命令キャッシュの無効化処理のコーディング例を以下に示す。
la $2, Base_addr
li $3, Loop_max
loop:
cache I_invalidate_OwnerID, way_0($2)
cache I_invalidate_OwnerID, way_1($2)
cache I_invalidate_OwnerID, way_2($2)
cache I_invalidate_OwnerID, way_3($2)

addiu $3, $3, -1
bnel $3, $0, loop
addiu $2, $2, 0x20
【0060】
コード上は全ウェイ及び全キャッシュラインに対し無効化のリクエストを行うが、無効化処理を行う対象のプロセスID(専用レジスタ25に登録)と、タグに記録されたオーナーIDとが一致しないと無効化は行われない。このように、選択的に命令キャッシュのラインを無効化する機構により、安全かつ効率的に命令キャッシュの無効化処理を実現できる。
【0061】
図7は、命令キャッシュの無効化処理の流れを示すフローチャートである。
【0062】
S21からS26は、図3および図4と同様である。S26において、プロセスIDとタグのオーナーIDとが一致した場合は(S26のYES)、次に、該当するキャッシュラインにおけるタグ内の状態ビットから、そのキャッシュラインが有効であるかどうかを判断する(S27)。キャッシュラインが有効である場合は(S27のYES)そのキャッシュラインを無効化し(S28)、有効でない場合は(S27のNO)処理を終了する。図7において、S25、S26の処理が、従来における命令キャッシュの無効化処理に対して、本実施の形態において新たに追加された部分である。
【0063】
このような命令キャッシュの選択的な無効化処理は、データキャッシュの選択的なライトバック処理及び無効化処理と同様に、以下のケースで有効に機能する。
【0064】
ケース3) オーナー自身(タスク若しくはプロセス)がその終了処理或いはサスペンド(suspend)状態への移行過程において上記命令キャッシュの無効化処理のコードを間接的に実行し、自身のオーナーIDを持つ命令キャッシュを無効化する場合。ここで、間接的な実行とはOSによるサービスを想定している。
【0065】
ケース 4) プロセスIDを持たない特権プロセス、例えば、OSの機能の一部であるローダープログラム等が上記専用レジスタ25に命令キャッシュにおいて無効化すべきプロセスIDを設定し、上記命令キャッシュの無効化処理のコードを実行する場合。なお、ローダープログラムがOSによってプロセスIDを付与され管理される1つのプロセスであった場合には、キャッシュの操作段階においてCPUに設定されたプロセスIDがローダープログラム自身の実行に影響しない状態、つまりローダープログラムをカーネル空間でかつカーネルモードにて実行する特権プロセスへモード遷移する必要があり、更に、キャッシュ操作の前後において実行中のプロセスID(専用レジスタ25の設定内容)と操作対象のプロセスIDとを入れ替える操作も行うことになる。
【0066】
ところで、マルチCPUの環境において共有メモリ、及び各CPUに共通の二次キャッシュが設置される場合が存在する。対象とするシステムの構成を図8に示す。
【0067】
このシステムは、2つの情報処理装置31、41、主メモリ51、デバイス52(例えばグラフィックコントローラ)、複数のプログラムやデータを格納する外部記憶装置53、及びそれらを繋ぐバス54を備える。
【0068】
情報処理装置31は、CPU32、一次命令キャッシュ33、一次データキャッシュ34、MMU35及び専用レジスタ36を有する。情報処理装置41は、CPU42、一次命令キャッシュ43、一次データキャッシュ44、MMU45及び専用レジスタ46を有する。
【0069】
デバイス52は、CPU32上で動作するプログラムとの間で主メモリ51上の特定領域R2を共有する。また、CPU32及びCPU42は主メモリ51上の共有領域(共有メモリ)R3を共有する。
【0070】
2つのCPU32、42とバス54との間には二次キャッシュ55が介在し、二次キャッシュ55には専用のコントローラ(二次キャッシュコントローラ)56が設けられる。特殊な場合を除きプログラムの実行に伴う命令の読み出しやプログラムからのメモリ参照においては二次キャッシュ55を介した間接的なメモリアクセスが行われる(<21><22>)。
【0071】
二次キャッシュコントローラ56は、主メモリ51上のCPU間の共有メモリを定義するためのレジスタ57を有する。レジスタ57は、共有メモリの先頭物理アドレスを管理するアドレスレジスタ及び共有メモリのサイズを管理するサイズレジスタとを含む。全システムの初期化段階或いはそれ以降に二次キャッシュコントローラ56はレジスタ57に共有メモリR3の先頭物理アドレス及びサイズを登録する。レジスタ57の設定によって各CPU32、42から共有される共有メモリを定義する。
【0072】
更に、二次キャッシュコントローラ56は、各CPU32、42による二次キャッシュ55へのアクセスを管理し、CPU32、42に対し静的に付与されたCPU-ID(本例ではCPU32に対しCPU-ID としてCPU1が付与され、CPU42に対しCPU-IDとしてCPU2が付与されている)を以って二次キャッシュ55のタグに記録されるオーナーIDを拡張する。つまり、マルチCPU環境においては、各CPUに個別のCPU-IDが割り振られるべきであり、タグに書き込まれるオーナーIDはこの各CPUのCPU-IDによって拡張される。具体的には、二次キャッシュ55のタグにおけるオーナーIDは、前述したプロセスIDと、CPUに付与されたCPU-IDとからなる。これは複数のCPU上で個別に管理されるプロセスIDのコンフリクトを避けるためである。従って共有される二次キャッシュ上において、異なるCPU間で同じオーナーIDは存在しないことになる。これに対応し、CPUは、自身のCPU−ID及び専用レジスタ内のタスクID又はプロセスIDと同一のオーナーIDをもつキャッシュラインについてのみライトバック処理することを指示する記述を含むキャッシュ制御命令を実行可能である。
【0073】
以上の環境において、いまCPU32上で実行される特定のタスク(或いはプロセス)がデバイス52用のデータを主メモリ51上の特定領域R2に生成する状況を考える。つまり、本例では、CPU32上で動作するプログラムが生成したデータをデバイス52が参照する場合を想定している。この時、プログラムが生成したデータは、二次キャッシュ55に格納され(<21>)、プログラムによる強制的なライトバック(<22>)が行われ、その後にデバイス52によるデータの読み出し(<23>)が実行されることになる。一方、上述したように、CPU32及びCPU42は主メモリ51上に共有メモリR3を有する。
【0074】
デバイス52が主メモリ51上のデータを間違いなく参照する(<23>)ためには、上記特定のタスク(或いはプロセス)が生成したデータが二次キャッシュ55からライトバック(<22>)されなければなない。
【0075】
一方で、CPU32及びCPU42上で動作するプログラム間には1つのシステムを構成する上で互いに情報を共有する必要がある。この情報の共有には主メモリ51上の共有メモリR3が使用される。
【0076】
CPU32上で実行される特定のタスク(或いはプロセス)がこの共有メモリR3の参照・データ更新を行うと想定する。このような場合において、二次キャッシュ55へのデータ書き込みに関し、上記オーナーIDを無効化する機構も必要である。なぜならば、オーナープロセスがライトバック処理を行った場合、他のCPUと共有するデータまでもがライトバックされてしまうと、バスに望まないトラフィックが発生するばかりか、共有メモリ用の二次キャッシュの効率にまで影響を与え、システム全体のパフォーマンスが低下するからである。
【0077】
この目的のために、タグに共有ビット(S(shared)ビット)を追加する。二次キャッシュ55内の情報を図9に示す。上述の二次キャッシュコントローラ56におけるレジスタ57において定義された共有メモリR3へのアクセスがCPU32、42からなされる場合、CPU32、42は、バス54を介し、共有メモリアクセス信号を二次キャッシュコントローラ56へ通知する。この共有メモリアクセス信号は二次キャッシュ55におけるタグに反映される。すなわちタグにおける共有ビットがオンに設定される。また、アクセスを行ったCPUのCPU-ID及びプロセスIDもオーナーIDとしてタグに設定される。
【0078】
この機構により、たとえプロセスID及びCPU−IDがタグに設定されかつダーティなキャッシュラインであったとしても、共有ビットの寄与により、プロセスID及びCPU−IDが無効化され、共有メモリR3への選択的なライトバックは行われない。すなわち、CPUは、共有ビットがセットされたキャッシュラインについては選択的なライトバック処理(又は無効化処理)を行う旨の記述を含むキャッシュ制御命令の実行を抑制する。
【0079】
図10は、二次キャッシュのライトバック処理の流れを示すフローチャートである。
【0080】
CPU32又はCPU42がキャッシュ命令を実行する(S31)。以下ではCPU32がキャッシュ命令を実行したものとして説明を続ける。
【0081】
MMU35は、専用レジスタ36に設定されたプロセスIDに基づき、CPU32によって指定された仮想アドレスから物理アドレスを求める(S32)。
【0082】
CPU32は、求められた物理アドレスに合致するタグを検索する。ウェイが複数存在する場合は各ウェイ上を並行して検索する(S33)。
【0083】
求めた物理アドレスと一致するタグが存在しない場合は(S34のNO)処理を終了し、求めた物理アドレスと一致するタグが存在する場合は(S34のYES)、CPU32は専用レジスタ36からプロセスIDを読み出す(S35)。
【0084】
CPU32は、プロセスID及びCPU-IDと、タグのオーナーIDとが一致するか否かを判断する(S6)。
【0085】
一致しない場合は(S36のNO)処理を終了し、一致した場合は(S36のYES)、タグの共有ビットが非共有“0”であるか共有“1”であるかをチェックする(S37)。
【0086】
共有ビットが共有“1”である場合は(S37のNO)処理を終了し、非共有“0”である場合は(S37のYES)、該当するラインがダーティかどうかをタグ内の状態ビットから判断する(S38)。
【0087】
該当するラインがダーティである場合は(S38のYES)、そのラインのライトバック処理を行い(S39)、ダーティでない場合は(S38のNO)処理を終了する。図10において、S35〜S37の処理が、従来のライトバック処理に対して、新たに追加された部分である。
【0088】
図11は、二次キャッシュの無効化処理の流れを示すフローチャートである。
【0089】
S41〜S47は、図10のS31〜S37と同一である。S47において、共有ビットが非共有“0”であった場合は(S47のYES)、該当するキャッシュラインにおけるタグ内の状態ビットから、そのキャッシュラインが有効であるかどうかを判断する(S48)。キャッシュラインが有効である場合は(S48のYES)そのキャッシュラインを無効化し(S49)、有効でない場合は(S48のNO)処理を終了する。図11において、S45〜S47の処理が、従来の無効化処理に対して、本実施の形態において新たに追加された部分である。
【0090】
以上のように、本実施の形態によれば、選択的なキャッシュの無効化処理やライトバック処理を実現し、マルチマスター系におけるキャッシュの利用効率を向上し、バス負荷の軽減を実現できる。
【0091】
また、マルチCPUの環境でなくてもプログラムダウンロード時のキャッシュ処理を最適化し、プログラム動作の効率化に寄与できる。
【0092】
また、プロセスの消滅時やサスペンド時に選択的なキャッシュの無効化処理を行うことにより、キャッシュの利用効率を更に向上することが可能となる。
【0093】
本発明は、情報処理装置(マイクロプロセッサ)に実装されるキャッシュのサイズが大きくなるほど、その効果を発揮する。
【図面の簡単な説明】
【0094】
【図1】本発明に係わるマルチマスターシステムの構成を概略的に示すブロック図
【図2】データキャッシュ内の情報を示す図
【図3】本実施の形態におけるライトバック処理の流れを示すフローチャート
【図4】本実施の形態におけるデータキャッシュの無効化処理の流れを示すフローチャート
【図5】ローダープログラムによりプログラムのローディング処理を行った後に行うライトバック処理及び無効化処理を説明する図
【図6】命令キャッシュに格納する情報を示す図
【図7】命令キャッシュの無効化処理の流れを示すフローチャート
【図8】マルチCPUの環境におい共有メモリ、及び各CPUに共通の二次キャッシュが設置されたシステムの構成を示す図
【図9】二次キャッシュ内の情報を示す図
【図10】二次キャッシュのライトバック処理の流れを示すフローチャート
【図11】二次キャッシュの無効化処理の流れを示すフローチャート
【符号の説明】
【0095】
11、31、41:情報処理装置
12、51:主メモリ
13、52:デバイス
14:外部記憶装置
15、54:バス
21、32、42:CPU
22、33、43:命令キャッシュ
23、34、44:データキャッシュ
24、35、45:メモリ管理ユニット(MMU)
25、36、46:専用レジスタ
55:二次キャッシュ
56:二次キャッシュコントローラ
57:レジスタ
R1、R2:特定領域
R3:共有領域(共有メモリ)




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013