(57)【要約】【課題】  本発明は、複数のスレッドを実行しうるマルチスレッドプロセサにおいて、複数のスレッドを効率的に切り替えうるマルチスレッド制御装置及び制御方法を提供すること。【解決手段】  本発明は、複数のスレッド処理手段を有し、あるスレッド処理手段の実行中にキャッシュ中の特定ブロックに対して、他のプロセサ又は他のスレッド処理手段による更新がなされた場合には、当該スレッド処理手段に対する排他権が開放されたとみなす同期ロック制御を実行するプロセサにおいて、複数のスレッドを効率的に切り替えうるマルチスレッド制御装置及び制御方法を提供することを目的とする。【選択図】図１１
2006155204.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサ。
【請求項２】
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサを有する情報処理装置。
【請求項３】
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持手段をリセットすることを特徴とする請求項１又は２記載のプロセサ。
【請求項４】
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサ。
【請求項５】
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサを有する情報処理装置。
【請求項６】
前記キャッシュメモリは１つのＷＡＹにまで縮退可能であり、
前記キャッシュメモリが１つのＷＡＹに縮退した場合には、
前記縮退したキャッシュメモリのＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする請求項４又は５記載のプロセサ。
【請求項７】
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するアクセスが発生したときには、
前記アクセスの完了後にラインアドレス及びＷＡＹ番号を前記監視アドレス保持部に保持し、
他のプロセサ又は他のスレッド処理部によるライト要求が発行されたときには、
前記監視アドレス保持部に保持されたラインアドレス及びＷＡＹ番号を当該キャッシュアクセスのものと比較を行い、
前記ラインアドレス及びＷＡＹ番号が一致したときには、前記特定ブロックの更新を検出することを特徴とするキャッシュメモリの制御方法。
【請求項８】
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持部をリセットすることを特徴とする請求項７記載のキャッシュメモリの制御方法。
【請求項９】
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するキャッシュミスが発生したときには、
前記監視アドレス保持部に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするキャッシュメモリの制御方法。
【請求項１０】
前記キャッシュメモリは１つのＷＡＹにまで縮退可能であり、
前記キャッシュメモリが１つのＷＡＹに縮退した場合には、
前記縮退したキャッシュメモリのＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする請求項９記載のキャッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドを実行しうるマルチスレッドプロセサにおいて、複数のスレッドを効率的に切り替えうるマルチスレッド制御装置及び制御方法に関するものである。
【背景技術】
【０００２】
近年、コンピュータアーキテクチャの代表的なものとしては、複雑な処理を一命令で行うＣＩＳＣ（Complex Instruction Set Computer）アーキテクチャの他、一命令中に実行する処理を簡素化したＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャ、複数の同時処理可能な命令をソフトウェアで１つの長い命令にまとめたＶＬＩＷ（Very Long Instruction Word）アーキテクチャ等が知られている。
【０００３】
また、これらのアーキテクチャを実現するコンピュータの中央演算処理装置（ＣＰＵ：Central Processing Unit）における処理手法は、インオーダ実行型とアウトオブオーダ実行型との２つに大別することができる。インオーダ実行型は、プログラム順に沿って命令列の逐次的な処理を行う手法であり、アウトオブオーダ実行型は、命令間の依存関係を見て、依存関係のない命令ならばプログラム順に関係なく、先行命令を追い越して処理を行う手法である。
【０００４】
そして、近年においては、一のプロセサにおいて一のプログラム（スレッド）を実行するシングルスレッド処理の他に、物理的に一のプロセサにおいて複数のスレッドを並列的に実行するマルチスレッドプロセサ方式が注目されている。
【０００５】
一般にＣＰＵは、ソフトウェアから可視なレジスタや状態レジスタ（ＣＰＵ状態レジスタ）に加え、加減算や乗算，除算、またメモリデータをレジスタに読み出すロード処理や、レジスタのデータをメモリに書き込むストア処理を実行する資源を有する。
【０００６】
マルチスレッドプロセサとは、１つのＣＰＵ内にソフトウェアから可視なレジスタを多重化し、別々なプログラムを実行するようにしながら、加減算などの命令実行資源を複数のプログラムで共有するものである。
【０００７】
上述の如きマルチスレッド処理を実現するための方式としては、複数のスレッドを同時に実行する、fine grained multithreading方式やSimultaneous multithreading（ＳＭＴ；同時マルチスレッディング）方式（図１参照）の他、複数のスレッドを同時には実行せず、キャッシュミスのような事象が起きたときに別のスレッドに切り替えて実行する、coarse grained multithreading方式やVertical multithreading（ＶＭＴ；時分割型マルチスレッディング）方式（図２参照）がある（特許文献１参照）。
【０００８】
図１はＳＭＴ方式を説明するための図、図２はＶＭＴ方式を説明するための図である。
【０００９】
ＶＭＴ方式は、処理に長時間かかるキャッシュミスした命令処理を隠蔽することを狙い、キャッシュミスを検出したときに、メモリからキャッシュまでデータを持ってくる処理をキャッシュ制御部（図示省略）が実行している間に、メモリアクセス以外の処理について、実行部や制御部（ともに図示省略）において他のスレッドに切り替え、実行するというものである。又、このＶＭＴ方式においては、キャッシュミスが発生しにくいスレッドに関しては、一定時間経過した時点で他のスレッドに切り替えるようになっている。
【００１０】
図３はインオーダ方式におけるキャッシュミス時の処理を説明するための図、図４はアウトオブオーダ方式におけるキャッシュミス時の処理を説明するための図、図５はアウトオブオーダ方式における従来のスレッド切り替え手法を説明するための図である。従来において、ＶＭＴ方式は、前述したインオーダ型プロセサ上でのみ実装されている。
【００１１】
インオーダ実行するプロセサでは、キャッシュミスの事象はプログラム順に起こり、又、キャッシュミスしたデータがメモリから応答するのも、プログラム順に行なわれる（図３参照）。一方、アウトオブオーダで実行をするプロセサでは、メモリアクセスがプログラム内の命令順序に生じるわけではなく、図４に示すように、キャッシュミスの事象は、必ずしもプログラム順では起こらない。
【００１２】
例えば、図５に示すように、それぞれキャッシュミスが生じるスレッドＸ上の２つの命令Ａ，Ｂがあり、スレッドＸ上の順番では命令Ａ，命令Ｂの順であった場合において、命令Ｂの実行を命令Ａよりも先に実行できる場合には、命令Ａがキャッシュミスしたことを検出する前に、命令Ｂがキャッシュミスしたことを検出することになる。
【００１３】
例えば、図５に示す例において、命令Ｂのキャッシュミスを検出して、命令Ａがキャッシュミスをする前にスレッドＸから別のスレッドＹに切り替えてしまうと、スレッドＸの実行を再開してから命令Ａのキャッシュミスが発生する。
【００１４】
なお、インオーダ実行型のプロセサでは、命令Ｂの実行開始が命令Ａの実行開始を待って行なわれるので、キャッシュミスは命令Ａ，命令Ｂの順番で生じる。
【００１５】
また、マルチプロセサによる共有メモリのシステムでは、排他権を確保するために、ｍｕｔｅｘ−ｌｏｃｋなどのロックによる手法が知られている。ロックを獲得するための代表的な方法の一つにスピンループがある。これは、主記憶上に「ロック変数」を設け、個々のプロセサはロック確保のための「ロック変数」の参照／更新試行とスピンループ（空転待機）を反復し、ロックを取った場合にはロック表示をロック期間中だけ表示し、ロックを解除する場合にはロック解除を表示することで、複数のプロセサ間にて排他権を確保する手法である。
【００１６】
ところが、このような構成でもループをまわって常時チェックすることになるが、近年のプロセサの高速化は、メモリシステムの高速化よりも激しく、相対的な速度はどんどん乖離する傾向にある。
【００１７】
このような状況では、スピンループによる空転回数が非常に多くなるにもかかわらず、そのあいだはスピンループ命令列を解釈して実行するものの、実質的には何も仕事をしておらず、システム性能に与える影響が問題になっている。特に大規模なＳＭＰシステムでは、ある一つのロック変数を集中して取り合う事象は少なくなく、この場合、ある一つのＣＰＵ以外は全くの無駄なことをしていることになり、システム運用に掛る性能コストが大きな問題となる。
【００１８】
また、マルチスレッド処理方式を採用したプロセサコアでは、あるスレッド処理部分でこのスピンループが発生していると、実質の仕事のないスピンループ処理による空転がプロセサコアの他のスレッド処理の進行を阻害するという悪影響を与えてしまう。
【００１９】
同様の問題はロック変数を用いる他の処理、たとえばバリア同期などのプロセサ間同期処理（同期待ち）など一般的なプロセサ間同期やＩ／Ｏ同期や、アイドルループなどでも生じる。
【００２０】
なお、マルチプロセサシステムにおける従来の排他制御や同期制御技術としては、特許文献２、特許文献３および特許文献４が知られている。
【００２１】
すなわち、特許文献２では、主記憶上に共有変数を格納して当該主記憶上で集中監視することで排他制御を実現する機構が開示されている。近年のようなキャッシュメモリを持つプロセサでは、キャッシュ内での書き換えが主記憶上に即座に反映されるわけではない。特にライトバックキャッシュ方式においては、書き換え事象が反映されるにはかなりの時間が掛るのが普通である。また、ライトスルーキャッシュであっても現代のプロセサではメモリレイテンシが非常に長く、反映ロスが長くなり性能が低下する。
【００２２】
したがって、特許文献２のように主記憶メモリを集中監視するだけでは、上述のようなスピンループの諸問題は解消されず、メモリレイテンシが影響しないキャッシュメモリ内での解決方法が望まれている。
【００２３】
特許文献３では、複数のＣＰＵで共有されるシステムバスの他に、ＣＰＵ間の排他制御のためのアクセス制御信号線（ピン）を設けてＣＰＵ間の共有メモリに対する排他制御を実現しようとする技術が開示されている。近年ではプロセサ間接続（たとえばＬＳＩの入出力ピン数）はコストが高く、１ピンを排他制御専用に使うよりも、むしろデータ線として利用したほうが性能向上に有効な状況であり、さもなければ、１ピンでも削減したほうがＣＰＵの製作費の削減に寄与することができる。したがってピン増加なしにＣＰＵ間の排他制御を実現する方法が求められる。
【００２４】
特許文献４では、主従関係があるプロセサとコプロセサとの間での同期制御を行うための同期制御回路が開示されているが、ＳＭＰ（対称型マルチプロセサ）やｃｃ−ＮＵＭＡのように、個々のプロセサが対等に共有メモリを扱うシステムには適用が困難である。
【００２５】
すなわち、プロセサは、コプロセサに対して命令を発動する立場にある関係上、コプロセサの動作状況を自発的に把握可能であるが、ＳＭＰシステムでは個々のプロセサが他のプロセサの動作状況に関する情報を原理的に保持していないため特許文献４の技術をスピンループの上述の問題に適用することは困難である。
【００２６】
また、上記スピンループの問題を解決するために、解放待ちのためにスピンループになる特定のイベントを検出した場合に、その要因となったプロセサまたはスレッドを停止し、メモリに停止したスレッドのコンテキストを退避し、メモリから新たなコンテキストを格納して実行を開始する方法が提案されている（特許文献５参照）。しかし、特許文献５ではスピンループになる特定のイベントは，キャッシュアクセス時のミスヒットであるために、スピンループの時間短縮による性能向上効果よりも、余計なスレッド切り替え及びコンテキスト退避が発生することにより、総合的に性能が劣化するおそれがあった。
【００２７】
そこで、上記スピンループの問題を解決するために、メモリアクセスの排他制御のためのロック変数の書き換え事象の可能性を予見し、従来では解放待ちのためにスピンループになる部分でプロセサまたはスレッドを停止させることで、上記課題を解決する方法が提案されている。
【００２８】
すなわち、ロック変数の書き換え事象の可能性予見を実現するために、ロード対象メモリブロックを含む範囲のメモリブロックの監視開始契機を設定する機能を持つ新規なロード命令（以下、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令と記す）と、メモリブロックの監視を行う書き込み事象検出機能とを設け、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令と書き込み事象検出機能の検出結果に連動してＳＵＳＰＥＮＤ命令等の休止命令を実行／解除することでプロセサの停止および再開を実現する。
【００２９】
すなわち、図６（ａ）のように、従来では、記憶装置上のロック変数［Ａ］のロック獲得に際して、ＣＡＳ［Ａ］による獲得失敗後にＬＤ［Ａ］を繰り返してロック変数［Ａ］の変化（他のプロセサからの解放）を確認するための無駄なスピンループが実行される。
【００３０】
これに対して、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術の場合には,図６（ｂ）のように、ＣＰＵ１では、ＣＡＳ［Ａ］による獲得失敗後にＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を発行して、ロック変数［Ａ］へのストア事象（他のＣＰＵ２からの解放の可能性）を監視するとともにＳＵＰＥＮＤにて休止状態に移行し、他のＣＰＵ２からのロック変数［Ａ］に対するストア可能性の検出を契機としてＣＰＵ１を復帰させてロック変数［Ａ］の再獲得を試行させることが可能になり、無駄なスピンループを行わせる必要がなくなる。
【００３１】
すなわち、一般的には、図７のように、ＣＰＵ１で、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令にて、目的のロック変数［Ａ］の監視を開始させた後、ＳＵＳＰＥＮＤ（休止状態）に移行し、他のＣＰＵ２からのロック変数［Ａ］の解放のためのアクセスを検出したら、ＣＰＵ１は休止状態から復帰して後続の命令実行を開始する。
【００３２】
また、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術では、既存のプログラムの命令列を解析してスピンループの発生部位の予見、プロセサの停止／再開を実現する。すなわち、既存の命令列からロック変数の書き換え事象の可能性を見つけるためのスピンループとなる命令列を見いだすステップと、従来のスピンループの代わりに当該プロセサあるいは当該ハードウェアスレッドを停止させるステップとを実行する。
【００３３】
ただし、近年のプロセサはキャッシュを構成することが当然のようになっており、そのまま主記憶を監視するのは非常に困難を伴う。従って、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術では、キャッシュメモリ内にロック変数の書き換え事象の可能性を監視して検出する書き込み事象検出機能を備える。
【００３４】
すなわち、図８に示されるように、ロック変数［Ａ］の書き換え事象の可能性を見いだす方法としては、ロック中のＣＰＵ２側からのロック変数［Ａ］のキャッシュメモリ上における無効化を検出契機とし、ＣＰＵ１側を休止状態から復帰させる。
【００３５】
なお、図９に示されるように、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令から休止状態に移行するまでの間に、ロック変数［Ａ］のキャッシュメモリ上での無効化（解放）が検出される可能性もある。その場合には、休止状態には移行せず、そのまま、ロック変数［Ａ］へのアクセスを続行する。
【００３６】
ロック変数の書き換え可能性の検出精度が高ければ高いほど、プロセサの使用効率が高くなる。また、不当なハングアップに陥らないよう、実際に書き換えが起こっているにもかかわらず検出できないような事態を回避するよう構成する。
【００３７】
また、アドレス監視をせずに従来の割り込みでの再開のみを許すサスペンド手法を使いたい状況は当然ある。したがって、サスペンド命令を使用する際にこれを選択できるように構成すると利便が良い。
【００３８】
既存の命令セットに対し追加命令を作成できない場合や、旧命令コードから改版することが出来ない（あるいは困難な）プログラムが存在する場合が、当然存在する。このような場合、上記命令の追加では何の恩恵を預かることもできない。したがって、これらに対しても恩恵があるべく、命令の追加をせずに解決する方法が希望される。
【００３９】
真に改善されるためにはＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を追加し、その追加した命令を用いて明示的に指示される方がより望ましいと言える。つまり、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を追加する方式と、既存の命令列を解析する方式はどちらも従来手法からは明確に改善されるが、組み合わせられるのが最も良い。
【００４０】
このＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を実装するにあたり、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令により指定された主記憶装置のメモリ番地が、他のスレッド又は他のプロセサにより更新されたかどうかを監視する必要があり、以下の実装案が従来技術として提案されている。
【００４１】
第一の実装案として、専用のレジスタである監視対象管理レジスタに監視対象となるキャッシュラインの物理アドレスを全ビット保持し、物理アドレスの比較によって監視対象となる物理アドレスへのアクセスの有無を検出する方法が考えられる（特許文献６及び特許文献７参照）。
【００４２】
この場合、監視対象とする物理アドレスと監視中であることを示すビットおよび監視対象とするスレッド番号を示す情報を監視対象管理レジスタに保持する必要がある。例えば、他のスレッドからのキャッシュメモリ又は主記憶へのＷＲＩＴＥアクセスが発生した場合において、その物理アドレスが監視対象の物理アドレスと一致した場合に、監視対象のアドレスが更新されたことを検出するものである。又、監視対象のアドレスを含むキャッシュラインが、キャッシュメモリのリプレースや他のプロセサからのパージ要求（吐き出し要求）又は無効化要求によって当該キャッシュラインが失われる場合には、他のプロセサにより監視対象のアドレスが更新される可能性があるとして、監視対象のアドレスが更新されたことの報告を行う。
【００４３】
次に、第二の実装案として、キャッシュタグに監視対象であることを示すビットを保持し、監視対象であることを示すビットがセットされているキャッシュラインへの更新及び参照の監視を行うことで、監視対象となるメモリ位置へのアクセスの有無を検出する方法が考えられる。
【００４４】
この場合、監視対象であることを示すビット及び監視対象とするスレッド番号を示すビットをキャッシュタグのエントリとして追加する必要がある。例えば、キャッシュメモリまたは主記憶へのＷＲＩＴＥアクセス要求、又は、リプレースによるキャッシュラインの無効化及び吐き出し要求、並びに、他のプロセサからの要求によるキャッシュラインの無効化要求及び吐き出し要求を処理する際に、アクセスしたキャッシュタグに登録されている監視対象であることを示すビット及び監視対象とするスレッド番号を示すビットにより、監視対象のアドレスが更新されたことの報告を行う。
【００４５】
図１６は従来技術におけるアドレスコンパレータの構成を示す図であり、第一の実装案に対応するものである。アドレス監視レジスタ１６０１に保持されているラインアドレス及びキャッシュアクセスの際の更新アクセスアドレスを保持する更新アクセスアドレスレジスタ１６０２に保持されているラインアドレスの比較を行うものである。Ｅｘ−ＮＯＲ論理ゲート１６１１〜１５１８により、各アドレスビット同士の排他的論理和の否定を出力し、それらをＡＮＤゲート１６１９により論理積を出力することにより、ラインアドレスの一致を検出するものである。従来技術の方法では、物理アドレス（図１６においてはビット［４６：６］の４１ビット）を全て比較しなければならないため、このように論理回路の物量が大きくなってしまう。
【００４６】
図１７は従来技術におけるキャッシュタグに監視アドレスを保持する方法を示す図であり、第二の実装案に対応するものである。タグＲＡＭ１７０１は複数のエントリを含み、各エントリはＶＡＬＩＤフラグ１７０２、キャッシュステータス１７０３、監視フラグ１７０４、物理アドレス１７０５から構成される。従来技術の方法では、当該タグＲＡＭの全エントリにＶＡＬＩＤフラグ及び監視フラグを具備しなければならないため、このようにＲＡＭの物量が大きくなってしまう。
【００４７】
図１８に監視対象ブロックの更新制御を行うハードウェア構成の従来例を示すものであり、第二の実装案に対応するものである。
【００４８】
ＲＥＡＤ／ＷＲＩＴＥ制御部１８１１は、キャッシュアクセス発生時において当該キャッシュアクセスがＲＥＡＤアクセスかＷＲＩＴＥアクセスかを判断し、マルチプレクサ１８１２及び１８１３のセレクト信号の制御を行う。例えば、当該キャッシュアクセスがＲＥＡＤアクセスである場合は、ＲＥＡＤアドレス１８０１をマルチプレクサ１８１２及び１８１３が出力するようにセレクト信号の制御を行い、ＷＲＩＴＥアクセスである場合には、ＷＲＩＴＥアドレス１８０２をマルチプレクサ１８１２及び１８１３が出力するようにセレクト信号の制御を行う。
【００４９】
ＷＡＹ０用タグＲＡＭ１８１５及びＷＡＹ１用タグＲＡＭ１８１６は、ライトイネーブル（ＷＥ）端子付のＲＡＭであり、当該ライトイネーブルに１が入力された場合に、ＲＡＭに対するＷＲＩＴＥを行う。
【００５０】
キャッシュＬＲＵ制御ＲＡＭ１８１７は、図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２に該当するものであり、キャッシュのＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）制御に使用され、ＬＲＵ情報に基づいたリプレースＷＡＹ−ＩＤ１８０３を出力する。インバータ論理ゲート１８１４は、入力の否定を出力とする論理ゲートである。
【００５１】
本従来例では、キャッシュアクセスであるＲＥＡＤアクセス１８０１が発生した場合には、ＲＥＡＤ／ＷＲＩＴＥ制御部１８１１によりマルチプレクサ１８１２及び１８１３の選択制御を行い、ＷＡＹ０用タグＲＡＭ１８１５及びＷＡＹ１用タグＲＡＭ１８１６の該当ラインアドレスの検索を行い、かつ、キャッシュＬＲＵ制御ＲＡＭ１８１７の検索も行う。ＷＡＹ０用タグＲＡＭ１８１５及びＷＡＹ１用タグＲＡＭ１８１６に対する検索の結果においてキャッシュミスが発生した場合には、キャッシュＬＲＵ制御ＲＡＭ１８１７のＬＲＵ情報に基づいたリプレースＷＡＹ−ＩＤ１８０３に従って、ＷＡＹ０又はＷＡＹ１用タグＲＡＭの該当ラインアドレスのリプレースによるキャッシュの登録を行う。
【００５２】
従って、キャッシュアクセス発生時のラインアドレスが監視対象ブロックのラインアドレスと同一であり、さらに登録されているタグＲＡＭのＷＡＹ−ＩＤが同一である場合には、当該監視対象ブロックがリプレースされてしまうことにより、無駄なスレッド切り替えが発生してしまうことになる。
【特許文献１】特開２００２−１６３１２１号公報
【特許文献２】特開平３−１６４９６４号公報
【特許文献３】特開昭６１−２２９１５０号公報
【特許文献４】特開２００２−４１４８９号公報
【特許文献５】特開平６−４４０８９号公報
【特許文献６】米国特許ＵＳＰ６４９３７４１号公報
【特許文献７】米国特許ＵＳＰ６６７４１９２号公報
【発明の開示】
【発明が解決しようとする課題】
【００５３】
従来の技術における第一の実装案では、スレッド毎に全物理アドレスを監視対象管理レジスタに保持することなり、監視対象管理レジスタの物量が大きくなる。将来の動向として、企業の基幹業務処理など特に高い処理能力を要求されるハイエンドサーバの分野においては、大規模ＣＭＰ（Chip Multi-Processor）等による高マルチスレッド化が図られる傾向にあるため、単純にスレッド数だけ全物理アドレスを保持して監視対象とする方式は、将来の高マルチスレッドプロセサへの拡張性に乏しいといえる。
【００５４】
又、従来の技術における第二の実装案では、キャッシュタグの全キャッシュラインに監視用のエントリを追加する必要が有るが，監視対象となるキャッシュラインが自身のキャッシュリプレースの際に吐き出されてしまう可能性が高く、不用意に監視対象のアドレスの更新を報告してしまうことにより、不測のスレッド切り替えが発生してしまうという問題がある。
【００５５】
従って、上記に挙げた従来技術における第一の実装案及び第二の実装案は、複数のスレッドの切り替え方法に関しては、効率的なアドレスの監視方法を何ら開示していないため、従来技術の域を出ていない。
【００５６】
本発明は、マルチスレッドを実行しうるマルチスレッドプロセサにおいて、物理アドレスの監視をすることなく、キャッシュラインのインデックスに使用されるキャッシュラインアドレス及びキャッシュ上に登録されているＷＡＹ−ＩＤを用いることにより、論理量及び物理量の増加によるチップサイズ及び消費電力の増大を招くことなく、複数のスレッドを効率的に切り替えうる制御装置及び制御方法を提供する。
【課題を解決するための手段】
【００５７】
上記目的を達成するために本発明は、
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサであることを特徴とする。
【００５８】
本発明はさらに、
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサを有する情報処理装置であることを特徴とする。
【００５９】
本発明はさらに、
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持手段をリセットすることを特徴とする。
【００６０】
本発明はさらに、
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサであることを特徴とする。
【００６１】
本発明はさらに、
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサを有する情報処理装置であることを特徴とするプロセサを有する情報処理装置であることを特徴とする。
【００６２】
本発明はさらに、
前記キャッシュメモリは１つのＷＡＹにまで縮退可能であり、
前記キャッシュメモリが１つのＷＡＹに縮退した場合には、
前記縮退したキャッシュメモリのＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする。
【００６３】
本発明はさらに、
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するアクセスが発生したときには、
前記アクセスの完了後にラインアドレス及びＷＡＹ番号を前記監視アドレス保持部に保持し、
他のプロセサ又は他のスレッド処理部によるライト要求が発行されたときには、
前記監視アドレス保持部に保持されたラインアドレス及びＷＡＹ番号を当該キャッシュアクセスのものと比較を行い、
前記ラインアドレス及びＷＡＹ番号が一致したときには、前記特定ブロックの更新を検出することを特徴とするキャッシュメモリの制御方法であるということを特徴とする。
【００６４】
本発明はさらに、
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持部をリセットすることを特徴とする。
【００６５】
本発明はさらに、
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するキャッシュミスが発生したときには、
前記監視アドレス保持部に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするキャッシュメモリの制御方法であることを特徴とする。
【００６６】
本発明はさらに、
前記キャッシュメモリは１つのＷＡＹにまで縮退可能であり、
前記キャッシュメモリが１つのＷＡＹに縮退した場合には、
前記縮退したキャッシュメモリのＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする請求項９記載のキャッシュメモリの制御方法であることを特徴とする。
【発明の効果】
【００６７】
以上説明したように、本発明によれば、複数のスレッドを実行しうるマルチスレッドプロセサにおける同期ロック制御において、他系プロセサ若しくは他系スレッドによる特定のデータ域を監視する命令が実行された場合に、当該監視対象データ域の更新の検出をキャッシュのインデックスアドレス及びＷＡＹ−ＩＤで行うことにより、ロックが開放されたものとみなして、論理量及び物理量の増加によるチップサイズ及び消費電力の増大を招くことなく、複数のスレッドを効率的に切り替えうる制御装置及び制御方法に関するものである。
【発明を実施するための最良の形態】
【００６８】
以下、図面を参照しつつ本発明にかかる実施の形態について、詳細に説明する。
【００６９】
図１０は本発明の一実施形態としてのマルチスレッドプロセッサの構成を示すブロック図である。
【００７０】
本発明の一実施形態としてのマルチスレッドプロセッサであるＣＰＵ（Central Processing Unit）１００１は、例えば複数のスレッド（プログラム）を１以上の実行部（演算器）により並列的に実行可能なマルチスレッドプロセッサとして構成されている。
【００７１】
本ＣＰＵ１００１は、図１０に示すように、マルチスレッド制御部１００２、レジスタファイル１００４、実行部（演算器）１００３、命令制御部１００５、ＴＬＢ（論理アドレス・物理アドレス変換部）１００６、Ｌ１命令キャッシュ１０１１、Ｌ１データキャッシュ１０１４，Ｌ２キャッシュ１０１５，Ｌ１命令キャッシュ制御部１０１２、Ｌ１データキャッシュ制御部１０１３及びＬ２キャッシュ制御部１０１６をそなえて構成され、又、バス１０２１を介してメインメモリ１０２３と通信可能に接続されている。
【００７２】
命令制御部１００５は、１次命令キャッシュ１００１やＬ２キャッシュ１０１６、メインメモリ１０２３から命令を取得して実行部１００３により実行させるための制御を行うものである。
【００７３】
また、Ｌ１データキャッシュ制御部１０１３は、フェッチにかかる要求の命令完了予定順序を管理する。
【００７４】
さらに、命令制御部１００５は、ストア命令に対して、ストア対象のアドレスにかかるデータ応答を待たずにストア命令を完了したものとして扱う突き放し制御を行うようになっている。
【００７５】
ＴＬＢ（Translation Look-aside Buffer；論理アドレス・物理アドレス変換部）１００６は、論理アドレスから物理アドレスへの変換で発生するページテーブル参照のペナルティを小さくするために設けられた一種のキャッシュであり、参照されたアドレスと変換情報の履歴を保存しておき、アドレス変換の高速化を実現するものである。
【００７６】
実行部（演算器）１００３は、レジスタファイル１００４等を用いて演算等の種々の処理（命令処理）を行うものであり、例えば種々の演算処理を実行する演算器（実行演算器）として機能するようになっている。
【００７７】
メインメモリ１０２３は、ＣＰＵ１００１の外部にそなえられたメモリであって、種々の命令やデータを格納するものであり、バス１０２１を介してＣＰＵ１００１と通信可能に接続され、実行部１００３による処理・実行に必要とされる命令やデータがＬ１命令キャッシ１０１１、Ｌ１データキャッシュ１０１４およびＬ２キャッシュ１０１５に格納されていない場合（キャッシュミス時）には、ＣＰＵ１００１はバス１０２１等を介してこのメインメモリ１０２３から命令やデータを読み出すようになっている。
【００７８】
Ｌ１命令キャッシュ１０１１は、実行部１００３が実行する命令を格納するための１次キャッシュであり、Ｌ１データキャッシュ１０１４は、実行部１００３が命令の実行に際して使用された各種データを格納するための１次キャッシュである。Ｌ２キャッシュ１０１５は、各種命令やデータを格納するための２次キャッシュである。すなわち、本ＣＰＵ１においては、複数のキャッシュ（Ｌ１命令キャッシュ１０１１、Ｌ１データキャッシュ１０１４、Ｌ２キャッシュ１０１５）が階層的にそなえられている。
【００７９】
そして、本実施形態においては、ＣＰＵ１００１にそなえられた複数のキャッシュのうち、ＣＰＵ１００１の外部にそなえられるメインメモリ１０２３に最も近い位置にそなえられたＬ２キャッシュ１０１５が最下位階層のキャッシュであり、このＬ２キャッシュ１０１５に対してＬ１命令キャッシュ１０１１やＬ１データキャッシュ１０１４が上位階層（上位側）のキャッシュである。
【００８０】
以下、本ＣＰＵ１００１におけるスレッド切り替え手法を、Ｌ１データキャッシュ１０１４およびＬ２キャッシュ１０１６におけるキャッシュミスに着目して説明する。
【００８１】
なお、以下、Ｌ１データキャッシュ１０１４を単にＬ１キャッシュという場合があり、又、Ｌ１データキャッシュ制御部１０１３を単にＬ１キャッシュ制御部という場合がある。
【００８２】
Ｌ１データキャッシュ制御部１０１３は、Ｌ１データキャッシュ１０１４に対応してそなえられており、Ｌ１データキャッシュ１０１４へのデータの書き込み・読み出しを管理・制御するものである。又、Ｌ１命令キャッシュ制御部１０１２は、Ｌ１命令キャッシュ１０１１に対応してそなえられており、Ｌ１命令キャッシュ１０１１へのデータ（命令データ）の書き込み・読み出しを管理・制御するものである。Ｌ２キャッシュ制御部１０１６は、Ｌ２キャッシュ１０１５に対応してそなえられており、Ｌ２キャッシュ１０１５へのデータ（命令データ，データ）の書き込み・読み出しを管理・制御するものである。
【００８３】
また、Ｌ１データキャッシュ制御部１０１３は、Ｌ２キャッシュ１０１５（Ｌ２キャッシュ制御部１０１６）に出した要求に対する応答データを一時的に格納するバッファ（Ｌ１ＭＩＢ：Ｌ１ ムーブ・イン・バッファ）をそれぞれ複数個そなえており、同様に、Ｌ２キャッシュ制御部１０１６も、Ｌ２キャッシュミスによりメインメモリ１０２３に出した要求に対する応答データを一時的に格納するバッファ（L２ＭＩＢ：L２ ムーブ・イン・バッファ）を複数個そなえている。
【００８４】
Ｌ２キャッシュ制御部１０１６は、Ｌ２キャッシュ１０１５においてキャッシュミスが生じた場合には、メインメモリ１０２３に出した要求に対する応答データを一旦格納するバッファ（Ｌ２ＭＩＢ：Ｌ２  ムーブ・イン・バッファ）を確保してからメインメモリへの要求を発行するようになっている。
【００８５】
マルチスレッド制御部１００２は、実行部１００３による処理対象のスレッドを選択的に切り替えるものである。なお、このマルチスレッド制御部１００２は、実行部１００３（演算器）により処理を実行するスレッドを識別するための識別子（実行スレッド識別子）に基づいて、レジスタ（レジスタウィンドウ）１００４と実行部１００３との間におけるデータ転送を制御するようになっている。
【００８６】
また、マルチスレッド制御部１００２は、本ＣＰＵ１００１において並列的に実行される複数のスレッドをそれぞれ識別するための識別子（スレッド識別子）を設定するようになっており、これらのスレッド上の各命令に対して、その命令がどのスレッドに属するものであるかを示す識別子（スレッド識別子）を設定するようになっている。
【００８７】
そして、マルチスレッド制御部１００２は、Ｌ１命令キャッシュ制御部１０１２やＬ１データキャッシュ制御部１０１３から通知された命令識別子やスレッド識別子に基づいて、次に命令完了すべき命令にキャッシュミスが生じた場合に、スレッドを切り替えるよう制御するようになっている。
【００８８】
図１１に本発明の適用分野となるマルチスレッドプロセサにおけるキャッシュリプレース制御部のハードウェア構成の一例を示す。
【００８９】
キャッシュＷＡＹ縮退ステータスレジスタ１１１１は、キャッシュのリプレース制御等に用いるキャッシュのＷＡＹ縮退情報の保持を行う。
【００９０】
キャッシュＬＲＵ制御ＲＡＭ１１１２は、キャッシュのＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）制御、つまり、よく使われるデータや最近使われたデータの優先順位を高めるアルゴリズムにより、リプレース対象となるキャッシュのＷＡＹ−ＩＤを決定するために用いる。
【００９１】
キャッシュＲＡＭ及びタグＲＡＭ１１１３は、メモリ階層の一部を構成する。なお、本発明はキャッシュ階層に関わらず適用が可能であるため、説明の簡単化のためにキャッシュの階層は意識せずに説明を行う。従って、本発明はキャッシュの構造によって、適用を妨げられるものではない。
【００９２】
スレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８は、それぞれのスレッド毎に監視対象となる特定アドレス域のうちラインアドレスフィールドを保持するものである。説明の簡単化のために、スレッド０及びスレッド１の２スレッドによるマルチスレッドプロセサの場合の構成を示しているが、アドレス監視レジスタの増設により、より高マルチスレッドのＣＰＵにも対応が可能である。
【００９３】
アドレスコンパレータ１１１５及び１１１６は、キャッシュアクセス時のラインアドレス１１０３を、それぞれスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８に保持されているラインアドレスと比較することにより、監視対象アドレスに対するアクセスの検出を行う。当該アドレスコンパレータは、ラインアドレスの比較のみを行うため、１０ビット幅のコンパレータにより構成される。
【００９４】
リプレースキャッシュＷＡＹ制御部１１１４は、キャッシュＷＡＹ縮退ステータスレジスタ１１１１からのキャッシュＷＡＹ縮退情報及びキャッシュＬＲＵ制御ＲＡＭ１１１２からのリプレースＷＡＹ−ＩＤ情報に基づいて、リプレースを行うキャッシュＷＡＹの制御を行う。
【００９５】
リプレース監視制御部１１１９は、ＷＲＩＴＥアクセス要求１１２２及びリプレース要求１１２３並びにパージ要求１１２４等を契機として、スレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８に保持されているラインアドレスに対する更新の監視を行い、監視対象であるラインアドレスに対する更新が発生した場合には、命令制御部（図１０の命令制御部１００５参照）の対象スレッドに対して監視対象アドレスの更新報告１１２５を行うとともにスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８に対するリセット１１２１を発行する。
【００９６】
なお、メモリアクセスに用いる仮想アドレス又は物理アドレス１１０１のうち、キャッシュＲＡＭ及びタグＲＡＭ１１１３及びキャッシュＬＲＵ制御ＲＡＭ１１１２に対するキャッシュアクセスに用いられるのは、キャッシュラインアドレス１１０２及び１１０３である。
【００９７】
図１９に本発明の適用分野となるキャッシュリプレース制御部における更新監視制御部（図１１の更新監視制御部１１１９参照）のハードウェア構成の一例を示す。
【００９８】
キャッシュアクセスが発生した場合のラインアドレス１９１１（図１１のラインアドレス１１０３参照）は、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令発行１９０１による特定のアドレス域に対するアドレス監視リクエストを契機として、ＡＮＤ論理ゲート１９１２によりアドレス監視レジスタ１９１４に監視対象として登録される。
【００９９】
また、キャッシュに対するＷＲＩＴＥアクセス１９０２が発生した場合には、ＡＮＤ論理ゲート１９１３により、既に監視対象であるラインアドレスが設定されているアドレス監視レジスタ１９１４の出力と当該ＷＲＩＴＥアクセスのラインアドレスの比較がアドレスコンパレータ１９１５によって行われる。当該アドレスコンパレータは、ラインアドレスの比較のみを行うため、１０ビット幅のコンパレータにより構成される。また、当該ＷＲＩＴＥアクセス１９０２には、自ＣＰＵの他スレッドからのストアリクエスト及び他ＣＰＵからのムーブアウトリクエスト並びに無効化リクエストが含まれる。
【０１００】
アドレスコンパレータ１９１５により、アドレス一致１９０３が検出された場合には、監視対象のアドレスに対する更新があったことを命令制御部（図１０の命令制御部１００５参照）の対象スレッドに対して更新報告１９０４を通知する。
【０１０１】
図１２に本発明におけるアドレス監視レジスタの構成の一例を示す。アドレス監視レジスタ１２０１は、ＶＡＬＩＤフラグ１２０２及びＷＡＹ−ＩＤフィールド１２０３並びにラインアドレスフィールド１２０４から構成される。ＶＡＬＩＤフラグ１２０２は、アドレス監視レジスタに保持されている情報の有効／無効に関する情報を示す。無効なラインアドレスを監視対象とすることを防止するためである。ＷＡＹ−ＩＤフィールドは、複数に分割されたキャッシュの領域を指定するフィールドである。ラインアドレス１２０４は、メモリアクセスに用いる仮想アドレス又は物理アドレス１１０１のうち、キャッシュＲＡＭ及びタグＲＡＭ１１１３及びキャッシュＬＲＵ制御ＲＡＭ１１１２に対するキャッシュアクセスに用いられるラインアドレスを保持するものである。
【０１０２】
図１３に監視対象ブロックの更新制御の方法を示すフローチャートを示す。
【０１０３】
以下、図１３の処理手順を説明する。まず、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令等の発行による特定のアドレス域に対するアドレス監視リクエストを実行する（ステップＳ１３０２）。
【０１０４】
次に当該アドレス監視リクエストに対して、ラインアドレス（図１１のラインアドレス１１０３）でキャッシュ（図１１のキャッシュＲＡＭ及びタグＲＡＭ１１１３参照）を引くことにより、キャッシュにヒットしたかどうかについて判定を行う。ヒットした場合には、リクエスト処理完了ステップ（ステップＳ１３０５）へ進み、ヒットしなかった場合には、下位のキャッシュへＲＥＡＤ要求の発行を行う。下位のキャッシュにもヒットしない場合には、さらに下位のキャッシュへＲＥＡＤ要求の発行を行う。最終的にどのキャッシュ階層にもヒットしない場合には、メモリに対してＲＥＡＤ要求を発行することにより、リクエスト処理完了ステップ（ステップＳ１３０５）へ進む。
【０１０５】
監視レジスタ設定ステップ（ステップＳ１３０６）では、各スレッド用のアドレス監視レジスタ（図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８参照）に対して、ＶＡＬＩＤフラグ（図１２のＶＡＬＩＤフラグ１２０２参照）及びＷＡＹ−ＩＤ（図１２のＷＡＹ−ＩＤフィールド１２０３参照）並びにラインアドレス（図１２のラインアドレスフィールド１２０４参照）の設定を行い、ＷＲＩＴＥアクセス発生時のＷＡＹ−ＩＤ及びラインアドレスに対する監視を開始する。当該ＷＲＩＴＥアクセスには、自ＣＰＵの他スレッドからのストアリクエスト及び他ＣＰＵからのムーブアウトリクエスト並びに無効化リクエストが含まれる。
【０１０６】
ＷＲＩＴＥアクセスが発生すると（ステップＳ１３０７）、ＷＡＹ−ＩＤ及びラインアドレス監視ステップ（ステップＳ１３０８）において、更新監視制御部（図１１の更新監視制御部１１１９参照）が全てのスレッド番号に対応するＷＡＹ−ＩＤ及びラインアドレスの監視を行い、いずれかのアドレス監視レジスタ（図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８参照）の値と一致した場合には、更新対象更新報告ステップ（ステップＳ１３０９）にて監視対象のアドレスに対する更新があったことを命令制御部（図１０の命令制御部１００５参照）の対象スレッドに対して監視対象更新報告１１２５を通知する。
【０１０７】
さらに、監視対象であるアドレスに対する更新が報告された場合には、更新レジスタリセットステップ（ステップＳ１３１０）にて、対応するスレッド用のアドレス監視レジスタ（図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８参照）のリセットを行う。アドレス監視レジスタのリセットの方法としては、ＶＡＬＩＤフラグ（図１２のＶＡＬＩＤフラグ１２０２参照）を０に落とす方法が考えられる。
【０１０８】
また、対応するスレッド用のアドレス監視レジスタ（図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８参照）の値と一致しない場合には、何もせずに次のＷＲＩＴＥアクセスが発生するまで待つ（ステップＳ１３０８）。
【０１０９】
図１４に監視対象ブロックの更新制御の方法を示すフローチャートを示す。
【０１１０】
以下、図１４の処理手順を説明する。まず、キャッシュアクセス（ステップＳ１４０２）が発生した場合に、キャッシュにヒットした場合にはリプレースキャッシュＷＡＹ制御部（図１１のリプレースキャッシュＷＡＹ制御部１１１４参照）が、通常どおりＬＲＵ（図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２参照）の更新を行う（ステップＳ１４０８）。
【０１１１】
また、キャッシュミスが発生した場合には、ＬＲＵ（図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２参照）の登録情報に基づいて空きキャッシュＷＡＹの検索を行い（ステップＳ１４０４）、空きキャッシュＷＡＹがある場合にはリプレースキャッシュＷＡＹ制御部（図１１のリプレースキャッシュＷＡＹ制御部１１１４参照）が空きキャッシュＷＡＹに登録を行い、ＬＲＵの更新も行う（ステップＳ１４０９）。
【０１１２】
さらに、空きＷＡＹがない場合には、対応するスレッド用のアドレス監視レジスタ（図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８参照）とのラインアドレスの比較を行い（ステップＳ１４０５参照）、ラインアドレスが一致した場合には、アドレスが一致したアドレス監視レジスタのＷＡＹとは異なるＷＡＹに登録を行い、ＬＲＵの更新も行う（ステップＳ１４１０）。従って、監視対象ブロックのラインアドレスと一致した場合においても、当該監視対象ブロックがリプレース対象になることを防ぐことができる。
【０１１３】
なお、ラインアドレスが一致しない場合には、ＬＲＵ（図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２参照）に従い登録を行う（ステップ１４０６）。この場合には最も古いキャッシュラインのリプレースが発生することになる。
【０１１４】
図１５に１ＷＡＹ動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートを示す。上記、図１４で説明した監視対象ブロックの更新制御の方法では、キャッシュの縮退によりキャッシュＷＡＹが１ＷＡＹのみとなった場合には、監視対象ブロックがリプレースされないために、当該キャッシュアクセスがキャッシュに登録されない場合が発生する。このような場合には、動作停止の原因となる場合があるため、キャッシュアクセスによる当該監視対象ブロックのリプレースを行いたい場合がある。
【０１１５】
以下、図１５の処理手順を説明する。まず、キャッシュアクセス（ステップＳ１５０２）が発生した場合に、キャッシュにヒットした場合にはリプレースキャッシュＷＡＹ制御部（図１１のリプレースキャッシュＷＡＹ制御部１１１４参照）が、通常どおりＬＲＵ（図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２参照）の更新を行う（ステップＳ１５０９）。
【０１１６】
また、キャッシュミスが発生した場合には、ＬＲＵ（図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２参照）の登録情報に基づいて空きキャッシュＷＡＹの検索を行い（ステップＳ１５０４）、空きキャッシュＷＡＹがある場合にはリプレースキャッシュＷＡＹ制御部（図１１のリプレースキャッシュＷＡＹ制御部１１１４参照）が空きキャッシュＷＡＹに登録を行い、ＬＲＵの更新も行う（ステップＳ１５１０）。
【０１１７】
さらに、空きＷＡＹがない場合には、キャッシュＷＡＹ縮退ステータスレジスタ（図１１のキャッシュＷＡＹ縮退ステータスレジスタ１１１１参照）のキャッシュＷＡＹ縮退情報に基づいて縮退されていないキャッシュＷＡＹの検索を行い（ステップＳ１５０５）、キャッシュＷＡＹが１ＷＡＹのみである場合には、当該監視対象ブロックに当該キャッシュアクセスを登録することによりリプレースを行う（ステップ１５１１）。従って、キャッシュ縮退によりキャッシュが１ＷＡＹのみで動作している場合においても、キャッシュに登録を行うことができる。
【０１１８】
また、縮退されていないキャッシュＷＡＹが２ＷＡＹ以上ある場合には、対応するスレッド用のアドレス監視レジスタ（図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８参照）とのラインアドレスの比較を行い（ステップＳ１５０６参照）、ラインアドレスが一致した場合には、アドレスが一致したアドレス監視レジスタのＷＡＹとは異なるＷＡＹに登録を行い、ＬＲＵの更新も行う（ステップＳ１５１２）。従って、監視対象ブロックのラインアドレスと一致した場合においても、当該監視対象ブロックがリプレース対象になることを防ぐことができる。
【０１１９】
なお、ラインアドレスが一致しない場合には、ＬＲＵ（図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２参照）に従い登録を行う（ステップ１５０７）。この場合には最も古いキャッシュラインのリプレースが発生することになる。
【０１２０】
図２０は監視対象のリプレースを行わない書き込みＷＡＹ決定制御回路の構成を示す図であり、図１４における監視対象ブロックの更新制御の方法を示すフローチャート及び図１５の１ＷＡＹ動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートに対応するものである。
【０１２１】
ＲＥＡＤ／ＷＲＩＴＥ制御部２０１１は、キャッシュアクセス発生時において当該キャッシュアクセスがＲＥＡＤアクセスかＷＲＩＴＥアクセスかを判断し、マルチプレクサ２０１２及び２０１３のセレクト信号の制御を行う。例えば、当該キャッシュアクセスがＲＥＡＤアクセスである場合は、ＲＥＡＤアドレス２００１をマルチプレクサ２０１２及び２０１３が出力するようにセレクト信号の制御を行い、ＷＲＩＴＥアクセスである場合には、ＷＲＩＴＥアドレス２００２をマルチプレクサ２０１２及び２０１３が出力するようにセレクト信号の制御を行う。
【０１２２】
ＷＡＹ０用タグＲＡＭ２０２１及びＷＡＹ１用タグＲＡＭ２０２２は、ライトイネーブル（ＷＥ）端子付のＲＡＭであり、当該ライトイネーブルに１が入力された場合に、ＲＡＭに対するＷＲＩＴＥを行う。
【０１２３】
キャッシュＬＲＵ制御ＲＡＭ２０２３は、図１１のキャッシュＬＲＵ制御ＲＡＭ１１１２に該当するものであり、キャッシュのＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）制御に使用され、ＬＲＵ情報に基づいたリプレースＷＡＹ−ＩＤ２００３を出力する。インバータ論理ゲート２０１４、２０１５、２０１６、２０１７は、入力の否定を出力とする論理ゲートである。また、３入力ＡＮＤ−ＯＲ論理ゲート２０１８及び２０１９は、ＡＮＤ論理ゲートに入力された信号の論理積の結果とＯＲ論理ゲートに入力された信号との論理和を出力するものである。さらに、ＡＮＤ論理ゲート２０１８及び２０１９は、入力された信号の論理積を出力する。
【０１２４】
アドレス監視レジスタ２０２４は、図１１のスレッド０用アドレス監視レジスタ１１１７及びスレッド１用アドレス監視レジスタ１１１８に相当するものである（ここでは、簡単化のためにスレッド毎のアドレス監視レジスタは省略している）。アドレスコンパレータ２０２５は、アドレス監視レジスタ２０２４に保持されているラインアドレス及びリードアクセスのＲＥＡＤアドレス２００１との比較を行うものである。
【０１２５】
キャッシュＷＡＹ縮退ステータスレジスタ２０２５は、図１１のキャッシュＷＡＹ縮退ステータスレジスタ１１１１に相当し、キャッシュのリプレース制御等に用いるキャッシュのＷＡＹ縮退情報の保持を行う。また、モード設定レジスタ２０２６により、図１４における監視対象ブロックの更新制御の方法を示すフローチャートの動作、または、図１５の１ＷＡＹ動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートの動作を選択的に行わせることができる。
【０１２６】
本従来例では、キャッシュアクセスであるＲＥＡＤアクセス２００１が発生した場合には、ＲＥＡＤ／ＷＲＩＴＥ制御部２０１１によりマルチプレクサ２０１２及び２０１３の選択制御を行い、ＷＡＹ０用タグＲＡＭ２０２１及びＷＡＹ１用タグＲＡＭ２０２２の該当ラインアドレスの検索を行い、かつ、キャッシュＬＲＵ制御ＲＡＭ２０２３の検索も行う。
【０１２７】
ＷＡＹ０用タグＲＡＭ２０２１及びＷＡＹ１用タグＲＡＭ２０２２に対する検索の結果においてキャッシュミスが発生した場合には、まずアドレス監視レジスタ２０２４のラインアドレス及びＲＥＡＤアドレス２００１をアドレスコンパレータ２０２５で比較を行い、アドレス一致２００４が検出されない場合にはキャッシュＬＲＵ制御ＲＡＭ２０２３のＬＲＵ情報２００３に基づいたリプレースＷＡＹ−ＩＤ２０２３に従って、空きＷＡＹに登録を行う。
【０１２８】
また、アドレス一致２００４が検出された場合にはアドレス監視レジスタ２０２４に保持しているＷＡＹ−ＩＤに基づいて、ＷＡＹ０又はＷＡＹ１用タグＲＡＭの該当ラインアドレスのリプレースによるキャッシュの登録を行う。また、アドレス一致２００４が検出されない場合には、キャッシュＬＲＵ制御ＲＡＭ２０２３のＬＲＵ情報に基づいたリプレースＷＡＹ−ＩＤ２０２３に従って、ＷＡＹ０又はＷＡＹ１用タグＲＡＭの該当ラインアドレスのリプレースによるキャッシュの登録を行う。
【０１２９】
ここで、キャッシュＷＡＹ縮退ステータスレジスタ２０２５（図１１のキャッシュＷＡＹ縮退ステータスレジスタ１１１１参照）の情報により、キャッシュＷＡＹが１ＷＡＹのみである場合には、アドレスコンパレータ２０２５におけるアドレス比較をディセーブルにする。従って、キャッシュＷＡＹが１ＷＡＹのみである場合には、監視対象ブロックのリプレースを抑止しないことになる。
【０１３０】
さらに、当該キャッシュＷＡＹ縮退ステータスレジスタ２０２５は、モード設定レジスタにより出力をディセーブルにすることもできるので、図１４における監視対象ブロックの更新制御の方法を示すフローチャートの動作、または、図１５の１ＷＡＹ動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートの動作を選択的に行わせることができる。
【０１３１】
以上、本発明にかかる実施の形態について図面を参照して説明して詳述してきたが、具体的な構成例はこれら実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【０１３２】
以下に本発明を付記する。
【０１３３】
（付記１）
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサ。
【０１３４】
（付記２）
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサを有する情報処理装置。
【０１３５】
（付記３）
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持手段をリセットすることを特徴とする付記１又は２記載のプロセサ。
【０１３６】
（付記４）
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサ。
【０１３７】
（付記５）
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサを有する情報処理装置。
【０１３８】
（付記６）
前記キャッシュメモリは１つのＷＡＹにまで縮退可能であり、
前記キャッシュメモリが１つのＷＡＹに縮退した場合には、
前記縮退したキャッシュメモリのＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする付記４又は５記載のプロセサ。
【０１３９】
（付記７）
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するアクセスが発生したときには、
前記アクセスの完了後にラインアドレス及びＷＡＹ番号を前記監視アドレス保持部に保持し、
他のプロセサ又は他のスレッド処理部によるライト要求が発行されたときには、
前記監視アドレス保持部に保持されたラインアドレス及びＷＡＹ番号を当該キャッシュアクセスのものと比較を行い、
前記ラインアドレス及びＷＡＹ番号が一致したときには、前記特定ブロックの更新を検出することを特徴とするキャッシュメモリの制御方法。
【０１４０】
（付記８）
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持部をリセットすることを特徴とする付記７記載のキャッシュメモリの制御方法。
【０１４１】
（付記９）
少なくとも２つ以上の分割された格納領域であるＷＡＹを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するＷＡＹ番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのＷＡＹ番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのＷＡＹ番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するキャッシュミスが発生したときには、
前記監視アドレス保持部に保持されたＷＡＹ番号とは異なるＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするキャッシュメモリの制御方法。
【０１４２】
（付記１０）
前記キャッシュメモリは１つのＷＡＹにまで縮退可能であり、
前記キャッシュメモリが１つのＷＡＹに縮退した場合には、
前記縮退したキャッシュメモリのＷＡＹに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする付記９記載のキャッシュメモリの制御方法。
【図面の簡単な説明】
【０１４３】
【図１】図１は、ＳＭＴ方式を説明するための図である。
【図２】図２は、ＶＭＴ方式を説明するための図である。
【図３】図３は、インオーダ方式におけるキャッシュミス時の処理を説明するための図である。
【図４】図４は、アウトオブオーダ方式におけるキャッシュミス時の処理を説明するための図である。
【図５】図５は、アウトオブオーダ方式におけるスレッド切り替え手法を説明するための図である。
【図６】図６（ａ）は、従来技術におけるロック解除の手法を説明するための図である。図６（ｂ）はＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術（１）の手法を説明するための図である。
【図７】図７は、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術（２）の手法を説明するための図である。
【図８】図８は、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術（３）の手法を説明するための図である。
【図９】図９は、ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令を使用する技術（４）の手法を説明するための図である。
【図１０】図１０は、マルチスレッドプロセサの構成を示すブロック図である。
【図１１】図１１は、本発明の一実施形態としてのマルチスレッドプロセサにおけるキャッシュリプレース制御部のハードウェア構成を示すブロック図である。
【図１２】図１２は、本発明の一実施形態としての監視レジスタの構成を示す図である。
【図１３】図１３は、本発明の一実施形態としての監視対象ブロックの更新制御の方法を示すフローチャートである。
【図１４】図１４は、本発明の一実施形態としての監視対象ブロックをリプレース対象から外す方法を示すフローチャートである。
【図１５】図１５は、本発明の一実施形態としての１ＷＡＹ動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートである。
【図１６】図１６は、従来技術としてのアドレスコンパレータの構成を示す図である。
【図１７】図１７は、従来技術としての監視フラグを保持するＲＡＭの構成を示す図である。
【図１８】図１８は、従来技術としての書き込みＷＡＹ決定制御回路の構成を示す図である。
【図１９】図１９は、本発明の一実施形態としての監視レジスタ制御回路の構成を示す図である。
【図２０】図２０は、本発明の一実施形態としての監視対象のリプレースを行わない書き込みＷＡＹ決定制御回路の構成を示す図である。
【符号の説明】
【０１４４】
６０１  ＬＯＡＤ−ＷＩＴＨ−ＬＯＯＫＵＰ命令
６０２  ＳＵＳＰＥＮＤ命令
６０３  ＳＴＯＲＥ命令
１００１  ＣＰＵ（マルチスレッドプロセサ）
１００２  マルチスレッド制御部
１１０１  キャッシュアクセスの仮想アドレス又は物理アドレス
１１０２  ラインアドレスフィールド
１１１４  キャッシュＷＡＹリプレース制御部
１１１７  スレッド０用アドレス監視レジスタ
１１１８  スレッド１用アドレス監視レジスタ
１１１９  更新監視制御部
１２０１  監視レジスタ
１２０２  ＶＡＬＩＤフラグ
１２０３  ＷＡＹ−ＩＤフィールド
１２０４  ラインアドレスフィールド
１６０１  アドレス監視レジスタ
１６０２  更新アクセスアドレスレジスタ
１６１１  Ｅｘ−ＮＯＲ論理ゲート
１６１９  ＡＮＤ論理ゲート
１７０１  ＴＡＧ−ＲＡＭ
１８１１  ＲＥＡＤ／ＷＲＩＴＥ制御部
１８１５  ＷＡＹ０用ＴＡＧ−ＲＡＭ
１８１６  ＷＡＹ１用ＴＡＧ−ＲＡＭ
１８１７  ＬＲＵ−ＲＡＭ
１９１１  ＲＥＡＤサイクル用アドレスレジスタ
１９１４  アドレス監視レジスタ
２０１１  ＲＥＡＤ／ＷＲＩＴＥ制御部
２０２１  ＷＡＹ０用ＴＡＧ−ＲＡＭ
２０２２  ＷＡＹ１用ＴＡＧ−ＲＡＭ
２０２３  ＬＲＵ−ＲＡＭ
２０２４  アドレス監視レジスタ
２０２５  ＷＡＹ縮退ステータスレジスタ
【図１】
2006155204.tif 000003
【図２】
2006155204.tif 000004
【図３】
2006155204.tif 000005
【図４】
2006155204.tif 000006
【図５】
2006155204.tif 000007
【図６】
2006155204.tif 000008
【図７】
2006155204.tif 000009
【図８】
2006155204.tif 000010
【図９】
2006155204.tif 000011
【図１０】
2006155204.tif 000012
【図１１】
2006155204.tif 000013
【図１２】
2006155204.tif 000014
【図１３】
2006155204.tif 000015
【図１４】
2006155204.tif 000016
【図１５】
2006155204.tif 000017
【図１６】
2006155204.tif 000018
【図１７】
2006155204.tif 000019
【図１８】
2006155204.tif 000020
【図１９】
2006155204.tif 000021
【図２０】
2006155204.tif 000022