(57)【要約】【課題】ＣＰＵを異なるシステムに搭載する場合や、ＣＭＰマイクロアーキテクチャを採用する場合に、システムハードウェア、ＯＳの変更、コンピュータアーキテクチャの追加を必要とせずに、キャッシュ縮退を可能にする。【解決手段】縮退制御装置は、キャッシュ４４の劣化報告を受けてキャッシュの縮退を行うキャッシュフラッシュモード開始信号を発生する命令制御部４３と、キャッシュフラッシュモード開始信号に応答してソフトウェアからの命令供給を中断するソフトウェア中断部５２と、キャッシュフラッシュモード開始信号に応じて、キャッシュに対してキャッシュデータの掃き出しが生じるフェッチリクエストを生成する命令生成部５３−ａと、キャッシュフラッシュモード開始信号に応じてキャッシュデータを掃き出しさせるためのアドレスを生成するアドレス生成部５４とキャッシュの掃き出しを行うウェイを指定するリクエストカウンタ５８とを備える。【選択図】　　　図４
2004038798.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置が有するキャッシュの劣化報告を受けてキャッシュフラッシュ開始信号を発生させる命令制御部と、
前記キャッシュフラッシュモード開始信号に応答してソフトウェアの命令供給を中断するソフトウェア中断部と、
前記キャッシュフラッシュモード開始信号に応じて、前記キャッシュに対してキャッシュデータの掃き出しを行うためのフェッチリクエストを複数回生成する掃き出し命令生成部と、
前記キャッシュフラッシュモード開始信号に応じて前記キャッシュのデータを掃き出しさせるための掃き出しアドレス生成部と、を備えたことを特徴とする、縮退制御装置。
【請求項２】
前記掃き出し命令生成部は、前記キャッシュフラッシュモードでのキャッシュ掃き出しのためのフェッチリクエストの発行回数をカウントするリクエストカウンタを備えており、キャッシュのすべてのデータのフラッシュが完了する回数に達した時点で、掃き出し完了を前記命令制御部及び前記キャッシュに報告することを特徴とする、請求項１記載の縮退制御装置。
【請求項３】
前記掃き出しアドレス生成部は、作業用アドレスレジスタと有効アドレス演算器とを備えており、キャッシュフラッシュモード開始の信号により、キャッシュサイズを越えるメモリアクセス禁止領域のアドレスを、掃き出しアドレスの初期ベースアドレスとして前記作業用アドレスレジスタに格納することを特徴とする、請求項１記載の縮退制御装置。
【請求項４】
前記掃き出し命令生成部において、キャッシュブロックサイズ値を即値データに用い、作業用レジスタと前記即値データとを加算して得られたアドレスに対するフェッチリクエストを生成することを特徴とする、請求項１，４記載の縮退制御装置。
【請求項５】
中央演算処理装置を１つのキャッシュに対し複数のＣＰＵコアを備えているチップマルチプロセッサの構成とし、すべてのＣＰＵコアにキャッシュの劣化報告を行うことを特徴とする、請求項１に記載の縮退制御装置。
【請求項６】
キャッシュを有する中央演算処理装置において、
前記キャッシュの劣化報告を受けてキャッシュフラッシュ開始信号を発生させる命令制御と、
前記キャッシュフラッシュモード開始信号に応答してソフトウェアの命令供給を中断するソフトウェア中断制御と、
前記キャッシュフラッシュモード開始信号に応じて、前記キャッシュに対してキャッシュデータの掃き出しを行うためのフェッチリクエストを複数回生成する掃き出し命令生成制御と、
前記キャッシュフラッシュモード開始信号に応じて前記キャッシュのデータを掃き出しさせるための掃き出しアドレス生成制御と、を行うことを特徴とする、縮退制御方法。
【請求項７】
前記掃き出し命令生成制御では、前記キャッシュフラッシュモードでのキャッシュ掃き出しのためのフェッチリクエストの発行回数をカウントし、キャッシュのすべてのデータのフラッシュが完了する回数に達した時点で、掃き出し完了を前記命令制御部及び前記キャッシュに報告することを特徴とする、請求項６記載の縮退制御方法。
【請求項８】
前記掃き出しアドレス生成制御は、キャッシュフラッシュモード開始の信号により、キャッシュサイズを越えるメモリアクセス禁止領域のアドレスを、掃き出しアドレスの初期ベースアドレスとして作業用アドレスレジスタに格納することを特徴とする、請求項６記載の縮退制御方法。
【請求項９】
前記掃き出し命令生成制御において、キャッシュブロックサイズ値を即値データに用い、作業用レジスタと前記即値データとを加算して得られたアドレスに対するフェッチリクエストを生成することを特徴とする、請求項６または８記載の縮退制御方法。
【請求項１０】
中央演算処理装置を１つのキャッシュに対し複数のＣＰＵコアを備えているチップマルチプロセッサの構成とし、キャッシュの劣化報告をすべてのＣＰＵコアに行うことを特徴とする、請求項６に記載の縮退制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュを有する情報処理装置において、ハードウェアによりキャッシュを縮退する縮退制御装置及び方法に関する。
【０００２】
【従来の技術】
従来のキャッシュ縮退方式にはハードウェアで行う方法と、ソフトウェアのオペレーションシステム（ＯＳ）で行う方法がある。
【０００３】
図１はハードウェア制御の例である従来のメインフレームの構成を示すブロック図である。図において、このメインフレームは中央演算処理装置（以下、ＣＰＵと称する）１１とメモリシステム１２を備えている。ＣＰＵ１１は命令制御部であるＣＰＵコア１３とキャッシュ１４を含んでいる。キャッシュ１４は例えば４ウェイ１４１〜１４４からなるセット・アソシアティブ方式で設計されている。メモリシステム１２はメモリ・コントロール・ユニット（ＭＣＵ）１５とメモリ１６を備えている。
【０００４】
キャッシュ１４は高集積の記憶装置なのでアルファー線によりビットエラーを起こし易い。１ビットエラーの回数が一定値を超えると、多ビットエラーが起る前にそのビットエラーを起こした部分を含むウェイ又はキャッシュ１４を切り離そうとする。しかし、ストアイン方式をとるキャッシュにおいてはまずキャッシュのデータをメモリに掃き出さなければならない。その後キャッシュ部はそのエラー箇所を含むウェイに新たにデータを格納しないようにする。その一連の動作をキャッシュ縮退という。
【０００５】
メインフレームの構成では、キャッシュ１４から縮退制御の要求がＭＣＵ１５に報告され、ＭＣＵ１５　がキャッシュ１４からのデータをメモリ１６に掃き出している。キャッシュ１４を含むＣＰＵ１１　とメモリシステム１２の設計開発を基本的に同時に行うメインフレームではキャッシュ１４とメモリシステム１２の動作仕様を同時に決定でき、縮退制御をＭＣＵ１５から行うことも可能である。
【０００６】
図２はソフトウェア制御の例である従来のオープン系システムにおけるキャッシュ縮退を説明するブロック図である。この例は、キャッシュ縮退動作がソフトウェア又はファームウェアで動作するオペレーティング・システム（ＯＳ）により行われる場合である。
【０００７】
具体的には、１ビットエラーが生じると、ソフトウェアにその旨が報告され、それに応じてソフトウェアは縮退制御を開始する。例えばこのソフトウェア制御でキャッシュ内の全ウェイのデータを掃き出しさせる場合は、まず、ＯＳはキャッシュ内に存在しないデータの読み出しアドレスを発行してキャッシュミスを起こさせる。その結果、ＯＳはメモリ２６をアクセスしてその中のデータを読みに行くがストアイン方式のキャッシュではメモリ２６の内容をキャッシュ内のデータに更新するためその読み出しデータをキャッシュに書き込む前に、キャッシュ２４に存在する最も古く使われた（ＬＲＵ）のデータを含むウェイからデータをメモリ２６に掃き出させる。例え１ビットエラーが発生している場合でもキャッシュから読み出されるデータはＥＣＣ回路により正しいデータに修正される。このようにしてキャッシュ縮退前にキャッシュ内のデータをメモリに掃き出してメモリの内容を最新のものにしている。
【０００８】
図３はひとつのキャッシュ３５に対し複数のＣＰＵコア３３と３４を有するチップマルチプロセッサシステムにおけるキャッシュ縮退を説明するブロック図である。同図において、チップマルチプロセッサシステムはチップマルチプロセッサ３１とメモリシステム３２を備えている。
【０００９】
キャッシュの縮退動作をする場合は、一方のＣＰＵコア３３からソフトウェアによりキャッシュ縮退要求を発行し、他方のＣＰＵコア３４からはキャッシュアクセスをしてはならないため、そのＣＰＵコアを停止状態にしなければならない。しかし、ソフトウェアでそれを行うにはＣＰＵコアをキャッシュアクセスしないように停止させるソフトウェア命令が必要となってしまい、そのような命令がない場合のキャッシュデータの完全な掃き出しは難しい。つまり実現のためにはソフトウェアによりそのようなストップ状態になるような命令を追加する必要があった。
【００１０】
【発明が解決しようとする課題】
メインフレームのようなＣＰＵ１１とメモリシステム１２を同時に開発する場合は、キャッシュ１４とメモリシステム１６との動作仕様の一致をとることに問題はなく、システム側（ＭＣＵ）からキャッシュ掃き出しを行うことができる。
【００１１】
しかし、オープン系システムでは、ＣＰＵ２１とメモリシステム２２とは設計開発が別に行われるので、同一のメモリシステムに異なるＣＰＵを搭載したり、逆に同一のＣＰＵを異なるメモリシステムに搭載する場合がある。近年、ＣＰＵの動作周波数はますます高くなる傾向にあり、メモリシステムやＩ／Ｏの動作周波数との差がますます開いており、ＣＰＵをより高速のものに交換することもしばしば行われる。
【００１２】
様々な規模のメモリシステムにのることが考えられるオープンシステムではメモリシステムでキャッシュの掃き出し制御は行わずに、ソフトウェアのＯＳにより行う場合が多い。
【００１３】
ただ、上記のＯＳによる縮退動作を行うためには、ソフトウェア又はファームウェアがキャッシュサイズ及びウェイ数といったキャッシュ構成を把握していなければならない。またソフトウェアでキャッシュの掃き出しを行うには、キャッシュ制御部がどのようなアルゴリズムでキャッシュのデータを掃き出すウェイを選択するのかを知らなければならない。
【００１４】
つまり、前述のように、メモリシステム２２は変更せずにＣＰＵ２１のみを変更する場合にも、ＣＰＵのキャッシュサイズ、ウェイ数もしくはキャッシュ制御アルゴリズムが変更となるたびにソフトウェア又はファームウェアを変更する必要が生じ、煩雑であるという問題がある。
【００１５】
さらに、図３に示したチップマルチプロセッサシステムのように複数のＣＰＵコアが１つのキャッシュを共有する構成の場合は、ソフトウェア又はファームウェアによりキャッシュ３５内のデータのメモリシステム３２への掃き出しを行うには、一方のＣＰＵコア３３からの命令によりキャッシュ３５からのデータの掃き出しを行っている間は、他方のＣＰＵコア３４がキャッシュ３５に有効なデータを持ってこないように命令投入を抑止しなければならない。
【００１６】
しかし、ソフトウェア又はファームウェアにより、ＣＰＵコアが命令投入を抑止するようなウェイトステートへの遷移を指示できないアーキテクチャの場合には、この命令抑止制御は不可能であるので、結果的に完全なキャッシュデータの掃き出しが難しく、キャッシュの縮退ができないという問題がある。
【００１７】
即ち、ＣＰＵコアが命令投入を抑止するようなウェイトステートへの遷移を指示できないアーキテクチャの場合に、一方のＣＰＵコア３３がソフトウェアによるキャッシュ３５の縮退制御をしている途中で、他方のＣＰＵコア３４がメモリにアクセスすることが考えられる。すると、メモリへの掃き出しが終わってから今後の使用を禁止する縮退を行う際に、別のＣＰＵコアからのリクエストのデータがその縮退されるべき箇所に格納されてしまうことも考えられる。
【００１８】
本発明の一つの目的は、上記従来技術における問題に鑑み、キャッシュの縮退制御をＣＰＵのハードウェアにより行うことで、ソフトウェア又はファームウェアを変更することなくメモリシステムとＣＰＵとの組み合わせによらない縮退制御装置を提供することにある。
【００１９】
本発明の他の目的は、ソフトウェア又はファームウェアにより、ＣＰＵが命令投入を抑止するようなウェイトステートへの遷移を指示できないアーキテクチャの場合であっても、チップマルチプロセッサにおいてキャッシュの縮退が可能な縮退制御装置を提供することにある。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、本発明の一態様により提供されるものは、命令制御部から出力されるキャッシュフラッシュモード開始信号に応答してソフトウェアからの命令供給を中断するソフトウェア中断部と、キャッシュフラッシュモード開始信号に応じて、キャッシュに対してキャッシュデータの掃き出しを行うフェッチリクエストを生成する命令生成部と、キャッシュすべてに対しそのフェッチリクエストを発行するためのリクエストカウンタと、キャッシュフラッシュモード開始信号に応じてキャッシュデータを掃き出しさせるためのアドレスを生成する掃き出しアドレス生成部とを備えたことを特徴とする縮退制御装置である。
【００２１】
これにより、キャッシュフラッシュモード開始信号に応答してソフトウェア命令供給が中断し、ハードウェアにてメモリアクセス及びキャッシュの掃き出しウェイの指定が行われて、キャッシュデータの掃き出しが行われるので、ソフトウェア又はファームウェアを変更することなくメモリシステムとＣＰＵとの組み合わせによらない縮退制御が可能になる。
【００２２】
本発明の他の態様により、第１の態様において、中央演算処理装置はひとつのキャッシュに対し複数のＣＰＵコアを備えているチップマルチプロセッサであり、該複数のＣＰＵコアの一つが、命令制御部と、ソフトウェア中断部と、キャッシュ掃き出しリクエスト生成部と、掃き出しアドレス生成部とを備えた縮退制御装置が提供される。
【００２３】
これにより、ソフトウェア又はファームウェアにより、ＣＰＵコアが命令投入を抑止するようなウェイトステートへの遷移を指示できないアーキテクチャのチップマルチプロセッサであっても、確実にキャッシュの縮退を行うことが可能になる。
【００２４】
【発明の実施の形態】
以下、本発明の実施の形態を図面によって説明する。
【００２５】
図４は本発明の第１の実施の形態による縮退制御装置の概略構成を示すブロック図である。同図において、この縮退制御装置は中央演算処理装置（以下、ＣＰＵと称する）４１とメモリシステム４２を含む情報処理装置の一部である。
【００２６】
ＣＰＵ４１は命令制御部であるＣＰＵコア４３とキャッシュ４４を含んでいる。キャッシュ４４は例えば４ウェイ４４１〜４４４からなるセット・アソシアティブ方式で設計されている。メモリシステム４２はメモリ・コントロール・ユニット（ＭＣＵ）４５とメモリ４６を備えている。
【００２７】
本実施の形態においては、キャッシュ４４の縮退制御をソフトウェア又はファームウェアにて行うことに替えてハードウェアにて行う。
【００２８】
次にその動作の概略を説明する。
【００２９】
キャッシュエラーの頻度カウンタ（図示せず）のカウント値が一定数を超えると、キャッシュの縮退要求がＣＰＵコア４３に報告される。
【００３０】
キャッシュ４４の縮退要求が報告されると、ソフトウェア命令のフェッチを止めＣＰＵコア４３がソフトウェア命令の実行をしないストップ状態となる。次いで、ＣＰＵコア４３からハードウェアにより、キャッシュミスを起こし、且つメモリ４６のアクセス禁止領域を指定する初期アドレスに対して複数回フェッチリクエストが生成される。フェッチリクエストがキャッシュ全体に対して発行されるようにアドレスを変化させる。またフェッチリクエストの回数を数えるリクエストカウンタを用意している。キャッシュミスを起こすアドレスとはキャッシュ４４に存在しないアドレスである。キャッシュミスが生じると上記ハードウェア・フェッチ・リクエストはメモリシステム４２内のＭＣＵ４５を経由してメモリ４６に与えられる。しかし、上記初期アドレスはメモリ４６のアクセス禁止領域を指定するアドレスなので、メモリからはデータが読み出されない。その時に検出されるアクセス禁止例外のエラー報告をＣＰＵコア４３は無視する。
【００３１】
通常では、キャッシュ４４のＬＲＵ（最古）のウェイからＭＣＵ４５を介してメモリにデータの掃き出しが行われ、メモリ４６にライトバックされる。キャッシュ縮退の際には、キャッシュの掃き出しがすべてのウェイで必らず行われるように、フェッチリクエストカウンタの上位２ビットをキャッシュ部に送り、その２ビットで掃き出し対象のウェイを決定している。こうして、キャッシュ４４のデータ掃き出しを行う。
【００３２】
細かい制御回路の追加を省くために、本実施の形態においては掃き出しリクエストはキャッシュ４４のエラー個所だけでなく、すべての領域の一様に発行する。このことをキャッシュフラッシュという。
【００３３】
図５は図４に示したよる縮退制御装置におけるＣＰＵコア４３の詳細な構成を示すブロック図である。同図において、ＣＰＵコア４３は、キャッシュの劣化報告を受けてキャッシュ４４の全ての領域の縮退を行うキャッシュフラッシュモード開始信号を発生する命令制御部５１と、キャッシュフラッシュモード開始信号に応答してソフトウェアからの命令供給を中断するソフトウェア中断部５２と、キャッシュフラッシュモード開始信号に応じて、キャッシュに対してフエッチリクエストを複数回生成する命令生成部５３−ａと、キャッシュフラッシュモード開始信号に応じて前記キャッシュのデータを掃き出しさせるためのアドレスを生成する掃き出しアドレス生成部５４と、キャッシュすべてに対しそのフェッチリクエストを発行し且つ、掃き出しするウェイを指示するリクエストカウンタ５８とを備えている。
【００３４】
掃き出しアドレス生成部５４は、作業用アドレスレジスタ（ＷＡＲ）５５と有効アドレス演算器（ＥＡＧ）５６とを備えている。
【００３５】
作業用アドレスレジスタ５５は、命令制御部５１が、キャッシュ４４（図４）からのキャッシュ劣化報告に応答して生成するキャッシュミスを起こし、且つメモリ４６のアクセス禁止領域を指定する初期アドレスを格納する。
【００３６】
有効アドレス演算器５６は、作業用アドレスレジスタ５５の内容に基づいてメモリアクセス禁止領域のアドレスを生成すると共に、生成したアドレスで作業用アドレスレジスタ５５の内容を更新する。
【００３７】
掃き出しリクエスト命令生成部は、作業用アドレスレジスタ５５の出力を有効アドレス演算器５４に入力させるか否かを決定するフラグＷＡＲ−ＵＳＥと、キャッシュ４４に対する１回のフェッチで掃き出されるデータ量（ブロックのバイト数）を即値データで指定し、オペランドコードＯＰＣＯＤＥ等を含む命令５７をリザベーションステーション５３にキューイングして格納する。命令５７にはその命令５７が未実行の場合は有効を示す“１”を、実行後の場合は無効を示す“０”になるバリッドビットＶが含まれている。
【００３８】
有効アドレスレジスタ５４は、フラグＷＡＲ−ＵＳＥが作業用アドレスレジスタ５５の出力を有効アドレス演算器５４に入力させることを示している場合は、汎用レジスタのデータでなく作業用レジスタのデータと、命令生成部で生成された即値データを加算して、キャッシュ４４のデータを掃き出しさせるためのフェッチ要求アドレス（禁止領域のアドレス）を生成する。
【００３９】
命令生成部によりキャッシュの掃き出しが生じるようなフェッチリクエストが、アドレス生成部５４が生成したフェッチ要求アドレスのメモリ４６にアクセスされるが、禁止領域のアドレスであるので、メモリ４６からはデータに読み出されない。この時検出されるエラー信号はエラー検出部で縮退処理中無視する。
【００４０】
さらに、掃き出しを起こすフェッチリクエストの発行回数をカウントするリクエストカウンタ５７が設けられている。キャッシュ４４の縮退のためのデータの掃き出し時には、リクエストカウンタ５８のカウント値の一部を掃き出しを起こすウェイ番号として指示する。指示されたウェイから掃き出されたデータはＭＣＵ４５を介してメモリ４６に格納される。キャッシュ４４は図示例では４つのウェイ（ウェイ４４２〜４４４）からなっており、リクエストカウンタ５７の出力の上位２ビットを用いてキャッシュ４４内の縮退対象ウェイを指定する。
【００４１】
図６は図４及び図５に示した縮退制御装置の状態の遷移を説明する流れ図である。同図において、メモリシステム４２と、キャッシュ４４と、命令制御部５１との動作が図の左から右に向かって示されている。図の左に示すように、キャッシュ４４の縮退動作のないノーマルモードにおいて、キャッシュ４４の一部に劣化が生じると、劣化報告が命令制御部５１内のマシンチェックユニット６１に通知される。すると、命令制御部５１はソフトウェア命令のフェッチをストップするストップ状態６２に遷移する。これにより、命令制御部５１はソフトウェアの命令供給、実行をストップする状態６３になる。
【００４２】
その後命令制御部５１はキャッシュフラッシュコマンドモード６５に移行する。
【００４３】
次いで命令制御部５１はキャッシュフラッシュのためのハードウェア命令生成部５３−ａでフェッチ命令生成状態６６になり、リザベーション・ステーション５３にハードウェアにより生成されたキャッシュフラッシュ用の命令が格納される。本実施形態では簡単化のため、キャッシュフラッシュの場合はキャッシュ内の全てのデータの掃き出しを行う。
【００４４】
そして、このリザベーション・ステーション５３からキャッシュ４４に向けてフェッチリクエストが出力される。メモリ４６のアクセス禁止領域をアクセスさせ、キャッシュミス、及びキャッシュ掃き出しを生じさせる。また、禁止領域なのでメモリ４６からはデータのムーブインは行われない。キャッシュ４４においては生成されたアドレス、及び掃き出しのためのフェッチリクエストの回数を数えるリクエストカウンタの上位２ビットを用いて指定されたウェイからデータがメモリ４６に掃き出される。
【００４５】
命令デコードユニット６４はキャッシュの掃き出しの完了に応じて完了報告をマシンチェックユニット６１及びキャッシュ４４に通知する。これを受けてキャッシュ部はエラーを検出した箇所を含むウェイを、以後データを格納しないように切り離し、またマシンチェックユニット６１では命令制御部５１のソフトウェア命令フェッチストップ状態を解放して、ソフトウェア命令を実行するノーマルモードに移行させる。
【００４６】
図７は図４及び図５に示した縮退制御装置におけるリクエストカウンタ５７のカウント値によって指定されるキャッシュのウェイ番号を示す図である。前述のように、キャッシュ劣化報告が発生すると、メモリ４６のアクセス禁止領域のアドレスが生成されてキャッシュフラッシュモード開始信号が命令制御部５１により生成される。リクエストカウンタ５７はこのキャッシュフラッシュモード開始のあと、キャッシュデータを掃き出すためのフェッチリクエストの発行回数をカウントする。図において、そのカウント値は１６進表示で表されている。本実施の形態ではキャッシュは４ウェイ・セットアソシアティブ方式でこのカウント値の２進数で上位２ビットを掃き出しするウェイの番号としている。またキャッシュ４４の全容量は２Ｍバイトで、一つのブロックの容量は６４バイトであり、フェッチリクエストは３２Ｋ回発行する。ハードウェアで作成された命令５７（図５）がキャッシュに発行されたとき、リクエストカウンタ５７の出力の上位２ビットが００のときはウェイ１が掃き出され、上位２ビットが０１のときはウェイ２が掃き出され、上位２ビットが１０のときはウェイ３が掃き出され、上位２ビットが１１のときはウェイ４が掃き出し対象になる。
【００４７】
以上説明した第１の実施の形態における縮退制御装置の動作をまとめると次のようになる。
【００４８】
キャッシュエラーの頻度カウンタの値が一定数を超えたときにキャッシュ４４のウェイの一部もしくは全ての縮退要求をＣＰＵコア４３内の命令制御部５１に報告する。これをトリガーにソフトウェア側からの命令供給を中断するＣＰＵストップ状態に遷移させる。その後ハードウェアデコーダで複数回メモリフェッチリクエストを発行する。この時、現在キャッシュ上にあるデータがメモリ４６にライトバックされるようにキャッシュ縮退ミスすることと、キャッシュに新たなデータがムーブインしないようにするため、メモリアクセス禁止領域のアドレスにフェッチリクエストを発行する。そのとき検出されるアクセス禁止例外は無視する。細かい制御回路の追加を省くために、掃き出しリクエストはエラー箇所だけでなく、すべての領域に一様に発行する。
【００４９】
キャッシュサイズをすべて網羅するメモリアドレスは、まずＣＰＵコア４３内の命令制御部５１が要求を受けたときに、作業用アドレスレジスタ（ＷＡＲ）５５にメモリアクセス禁止領域のアドレスを初期ベースアドレスとして用意し、即値データにはブロックサイズ（図７の例では６４バイト）を指定して、作業用アドレスレジスタ（ＷＡＲ）５５の内容と即値データとの和を有効アドレス演算器（ＥＡＧ）５６で生成する。発行するフェッチ要求アドレスは次のベースアドレスとして有効アドレス演算器（ＥＡＧ）５６にセットし直し、ウェイのブロックサイズを示す即値データに加算して次のアドレスを生成する。この動作を（キャッシュの容量÷キャッシュのウェイのブロックサイズ）回だけ繰り返す。
【００５０】
この回数を数えるリクエストカウンタを用いて、掃き出し対象になるウェイを指定する。
【００５１】
図８は本発明の第２の実施の形態による縮退制御装置の構成を示すブロック図である。同図において、この縮退制御装置もＣＰＵ８１とメモリシステム８２を含む情報処理装置の一部である。
【００５２】
ＣＰＵ８１は命令制御部である２つのＣＰＵコア８３及び８４とキャッシュ８５を含んでいるチップマルチプロセッサであり、これら２つのＣＰＵコアの一つであるＣＰＵ８３のみが、図５に示した命令制御部５１と、ソフトウェア中断部５２と、キャッシュデータの掃き出しを行うためのフェッチリクエストを生成する命令生成部５３−ａと、縮退掃き出しアドレス生成部５４と、掃き出し対象のウェイを指定するリクエストカウンタ５８とを備えている。
【００５３】
このようなチップマルチプロセッサ（ＣＭＰ）の構成を有するシステムにおいて、キャッシュ縮退をＣＰＵで行う場合、キャッシュ８５からの縮退要求をすべてのＣＰＵコア８３及び８４に報告し、ＣＰＵコア８３及び８４はストップステートに遷移する。そして、一方のＣＰＵコア８３のみが第１の実施の形態で説明した制御を行ってキャッシュの掃き出しを行ってからキャッシュを縮退し、終了通知を他方のＣＰＵコア８４に報告して、ソフトウェアにより命令投入を再開する。本発明では縮退するまでのすべての作業をソフトウェアが介在することなくハードウェア制御のみで行っている。ハードウェア制御でＣＰＵコアからの命令供給を抑止、再開することで、ソフトウェアのウェイトステートが用意されていないアーキテクチャでもチップマルチプロセッサ（ＣＭＰ）のキャッシュの掃き出しが可能となる。
【００５４】
本実施形態例では縮退制御装置をＣＰＵコア内に設けているが、ＣＰＵコア外に設けて、キャッシュに対する縮退制御を行うことも可能である。
（付記１）中央演算処理装置が有するキャッシュの劣化報告を受けてキャッシュフラッシュ開始信号を発生させる命令制御部と、
前記キャッシュフラッシュモード開始信号に応答してソフトウェアの命令供給を中断するソフトウェア中断部と、
前記キャッシュフラッシュモード開始信号に応じて、前記キャッシュに対してキャッシュデータの掃き出しを行うためのフェッチリクエストを複数回生成する掃き出し命令生成部と、
前記キャッシュフラッシュモード開始信号に応じて前記キャッシュのデータを掃き出しさせるための掃き出しアドレス生成部と、を備えたことを特徴とする、縮退制御装置。
（付記２）前記掃き出し命令生成部は、前記キャッシュフラッシュモードでのキャッシュ掃き出しのためのフェッチリクエストの発行回数をカウントするリクエストカウンタを備えており、キャッシュのすべてのデータのフラッシュが完了する回数に達した時点で、掃き出し完了を前記命令制御部及び前記キャッシュに報告することを特徴とする、付記１記載の縮退制御装置。
（付記３）前記キャッシュは複数のウェイからなっており、前記リクエストカウンタの出力の一部を用いて前記キャッシュ内の掃き出し対象ウェイを指定することを特徴とする、付記２記載の縮退制御装置。
（付記４）前記掃き出しアドレス生成部は、作業用アドレスレジスタと有効アドレス演算器とを備えており、キャッシュフラッシュモード開始の信号により、キャッシュサイズを越えるメモリアクセス禁止領域のアドレスと、掃き出しアドレスの初期ベースアドレスとして前記作業用アドレスレジスタに格納することを特徴とする、付記１記載の縮退制御装置。
（付記５）前記掃き出し命令生成部において、キャッシュブロックサイズ値を即値データに用い、作業用レジスタと前記即値データとの加算して得られたアドレスに対するフェッチリクエストを生成することを特徴とする、請求項１，４記載の縮退制御装置。
（付記６）前記フェッチリクエストをメモリシステムに発行すると同時に、
そのアドレスで作業用アドレスレジスタを更新し、その次のフェッチリクエストのアドレス生成に用いることを特徴とする、付記５記載の縮退制御装置。
（付記７）中央演算処理装置を１つのキャッシュに対し複数のＣＰＵコアを備えているチップマルチプロセッサの構成とし、すべてのＣＰＵコアにキャッシュの劣化報告を行うことを特徴とする、付記１に記載の縮退制御装置。
（付記８）前記チップマルチプロセッサにおいて、ＣＰＵコアの１つのみが前記キャッシュ掃き出し命令生成部と前記掃き出しアドレス生成部によりキャッシュデータの掃き出しを行い、他のＣＰＵコアはソフトウェア命令の実行を中断することを特徴とする、付記７記載の縮退制御装置。
（付記９）前記チップマルチプロセッサにおいて、１つのＣＰＵコアによりキャッシュデータの掃き出しが完了したとき、他のＣＰＵコアに完了報告を行い、それぞれのＣＰＵコアがソフトウェア命令の実行を再開することを特徴とする、付記７又は８記載の縮退制御装置。
（付記１０）キャッシュを有する中央演算処理装置において、
前記キャッシュの劣化報告を受けてキャッシュフラッシュ開始信号を発生させる命令制御と、
前記キャッシュフラッシュモード開始信号に応答してソフトウェアの命令供給を中断するソフトウェア中断制御と、
前記キャッシュフラッシュモード開始信号に応じて、前記キャッシュに対してキャッシュデータの掃き出しを行うためのフェッチリクエストを複数回生成する掃き出し命令生成制御と、
前記キャッシュフラッシュモード開始信号に応じて前記キャッシュのデータを掃き出しさせるための掃き出しアドレス生成制御と、を特徴とする、縮退制御方法。
（付記１１）前記掃き出し命令生成制御では、前記キャッシュフラッシュモードでのキャッシュ掃き出しのためのフェッチリクエストの発行回数をカウントし、キャッシュのすべてのデータのフラッシュが完了する回数に達した時点で、掃き出し完了を前記命令制御部及び前記キャッシュに報告することを特徴とする、付記１０記載の縮退制御方法。
（付記１２）前記キャッシュは複数のウェイからなっており、前記発行回数をカウントするリクエストカウンタの出力の一部を用いて前記キャッシュ内の掃き出し対象ウェイを指定することを特徴とする、付記１１記載の縮退制御方法。
（付記１３）前記掃き出しアドレス生成制御は、キャッシュフラッシュモード開始の信号により、キャッシュサイズを越えるメモリアクセス禁止領域のアドレスを、掃き出しアドレスの初期ベースアドレスとして作業用アドレスレジスタに格納することを特徴とする、付記１２記載の縮退制御方法。
（付記１４）前記掃き出し命令生成制御において、キャッシュブロックサイズ値を即値データに用い、作業用レジスタと前記即値データとの加算して得られたアドレスに対するフェッチリクエストを生成することを特徴とする、付記１０または１３記載の縮退制御方法。
（付記１５）前記フェッチリクエストをメモリシステムに発行すると同時に、そのアドレスで作業用アドレスレジスタを更新し、その次のフェッチリクエストのアドレス生成に用いることを特徴とする、付記１４記載の縮退制御方法。
（付記１６）前記中央演算処理装置を１つのキャッシュに対し複数のＣＰＵコアを備えているチップマルチプロセッサの構成とし、キャッシュの劣化報告をすべてのＣＰＵコアに行うことを特徴とする、付記１０に記載の縮退制御方法。
（付記１７）前記チップマルチプロセッサにおいて、前記ＣＰＵコアの１つのみが前記キャッシュ掃き出し命令生成制御と前記掃き出しアドレス生成制御によりキャッシュデータの掃き出しを行い、他のＣＰＵコアはソフトウェア命令の実行を中断することを特徴とする、付記１６記載の縮退制御方法。
（付記１８）前記チップマルチプロセッサにおいて、１つのＣＰＵコアによりキャッシュデータの掃き出しが完了したとき、他のＣＰＵコアに完了報告を行い、それぞれのＣＰＵコアがソフトウェア命令の実行を再開することを特徴とする付記１０，１６又は１７記載の縮退制御方法。
【００５５】
【発明の効果】
以上説明したように、本発明によれば、ＣＰＵ命令解読部及び命令発行部のわずかなハードウェアの資源の追加で、ＣＰＵを異なるシステムに搭載する場合や、ＣＭＰマイクロアーキテクチャを採用する場合に、システムハードウェア、ＯＳの変更、コンピュータアーキテクチャの追加を全く必要とせずに、キャッシュ縮退が可能になる。
【図面の簡単な説明】
【図１】ハードウェア制御の例である従来のメインフレームの構成を示すブロック図である。
【図２】ソフトウェア制御の例である従来のオープン系システムにおけるキャッシュ縮退を説明するブロック図である。
【図３】従来のオープン系システムのマルチプロセッサシステムにおけるキャッシュ縮退を説明するブロック図である。
【図４】本発明の第１の実施の形態による縮退制御装置の概略構成を示すブロック図である。
【図５】図４に示したよる縮退制御装置におけるＣＰＵコア４３の詳細な構成を示すブロック図である。
【図６】図４及び図５に示した縮退制御装置の状態の遷移を説明する流れ図である。
【図７】図４及び図５に示した縮退制御装置におけるリクエストカウンタ５７のカウント値によって指定されるキャッシュのウェイ番号を示す図である。
【図８】本発明の第２の実施の形態による縮退制御装置の構成を示すブロック図である。
【符号の説明】
４１…中央演算処理装置
４２…メモリシステム
４３…ＣＰＵコア
４４…キャッシュ
４４１〜４４４…ウェイ
４５…ＭＣＵ
４６…メモリ
５１…命令制御部
５２…ソフトウェア中断部
５３…リザベーション・ステーション
５４…縮退アドレス生成部
５５…作業用アドレスレジスタ
５６…有効アドレス演算器
５７…リクエストカウンタ
【図１】
2004038798.tif 000003
【図２】
2004038798.tif 000004
【図３】
2004038798.tif 000005
【図４】
2004038798.tif 000006
【図５】
2004038798.tif 000007
【図６】
2004038798.tif 000008
【図７】
2004038798.tif 000009
【図８】
2004038798.tif 000010