(57)【要約】【課題】キャッシュラインの転送時の消費電力を低減したマルチプロセッサを提供する。【解決手段】メインメモリ２と、その記憶データを一時記憶するＬ１キャッシュメモリ１１ａ〜１１ｄを備える複数のプロセッサユニット１ａ〜１ｄと、Ｌ１キャッシュメモリ１１ａ〜１１ｄのコヒーレンシを管理するＣＭＵ３とを備え、ＣＭＵ３は、Ｌ１キャッシュメモリに格納されたキャッシュラインのタグを格納するＬ１タグキャッシュ３３ａ〜３３ｄと、プロセッサユニット１ａ〜１ｄからのリフィル要求に応じてインターベンション転送を行うＣＭＵコントローラ３１と、インターベンション転送を監視することによって、転送先別に転送元を予測するＰＩＵ３２とを有し、ＣＭＵコントローラ３１は、ＰＩＵ３２の予測結果が得られた後は、予測された転送元に対応するタグキャッシュのみを活性化して、リフィル要求に対応するキャッシュラインがキャッシュされているかを判別する。【選択図】図１
2011054077.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置と、
前記主記憶装置の記憶データを一時記憶するキャッシュメモリを夫々備え、前記主記憶装置を共有する複数のプロセッサと、
前記複数のプロセッサのキャッシュメモリのコヒーレンシを管理するコヒーレンシ管理ユニットと、
を備え、
前記コヒーレンシ管理ユニットは、
前記キャッシュメモリの各々に対応して設けられ、対応するキャッシュメモリにキャッシュされたキャッシュデータのタグを格納する複数のタグキャッシュと、
前記プロセッサからのリフィル要求に応じて、前記複数のタグキャッシュを参照して前記リフィル要求に対応するキャッシュデータがキャッシュされたキャッシュメモリを判別し、判別したキャッシュメモリを転送元としリフィル要求元のキャッシュメモリを転送先として前記リフィル要求に対応するキャッシュデータの転送を行うデータ転送手段と、
前記キャッシュメモリ間のキャッシュデータの転送の監視に基づく所定の予測処理を行うことで、転送先別に一つの転送元を仮決定する仮決定手段とを有し、
前記データ転送手段は、前記仮決定手段の仮決定結果が得られた後は、前記キャッシュデータの転送を行う際、前記仮決定した一つの転送元に対応するタグキャッシュのみを活性化し、活性化されたタグキャッシュのみを参照してリフィル要求に対応するキャッシュデータがキャッシュされているか否かを判別することを特徴とするマルチプロセッサ。
【請求項２】
前記仮決定手段は、転送先別に、所定の転送回数に最も早く到達した転送元を判別し、判別した転送元を転送先別の一つの転送元として仮決定することを特徴とする請求項１記載のマルチプロセッサ。
【請求項３】
前記仮決定手段は、同じキャッシュラインについての連続的な２回以上の転送を含む複数の転送パターンのうちで、所定の実行回数に最も早く到達した転送パターンを判別し、判別した転送パターン中に含まれる転送元、転送先の関係から、転送先別の一つの転送元を仮決定することを特徴とする請求項１記載のマルチプロセッサ。
【請求項４】
前記データ転送手段は、前記リフィル要求に対応するキャッシュデータがキャッシュされたキャッシュメモリが複数個判別された場合は、キャッシュデータの転送の際のデータ転送経路が短いキャッシュメモリを優先的に選択することを特徴とする請求項１から３のいずれか１項記載のマルチプロセッサ。
【請求項５】
前記仮決定手段は、当該キャッシュメモリを転送先とした前記仮決定結果を得た後に、該仮決定結果とは転送元が相違し転送先が一致するキャッシュデータの転送が前記データ転送手段によって所定回数行われた場合には、当該キャッシュメモリを転送先とする転送元の仮決定を取り消すことを特徴とする請求項１から４のいずれか１項記載のマルチプロセッサ。
【請求項６】
前記仮決定手段は、所定時間が経過するごとに、前記仮決定結果とは転送元が相違し転送先が一致するキャッシュデータの転送が１回行われたとみなすことを特徴とする請求項５記載のマルチプロセッサ。
【請求項７】
前記仮決定手段は、前記複数のプロセッサが前記主記憶装置上のメモリ空間を共有してプログラム処理を行う際に、いずれかのプロセッサが排他制御の下に管理していたメモリ空間を他のプロセッサが継承した場合に、該他のプロセッサが備えるキャッシュメモリを転送先とするキャッシュデータの転送における転送元を前記メモリ空間の継承元のプロセッサが備えるキャッシュメモリと仮決定することを特徴とする請求項１記載のマルチプロセッサ。
【請求項８】
前記仮決定手段は、前記他のプロセッサが前記メモリ空間を解放した場合には、前記他のプロセッサが備えるキャッシュメモリを転送先とするキャッシュデータの転送における転送元を、前記メモリ空間の継承元のプロセッサが備えるキャッシュメモリとする仮決定を取り消すことを特徴とする請求項７記載のマルチプロセッサ。
【請求項９】
前記複数のプロセッサ間で共有される共有キャッシュメモリを有し、
該共有キャッシュメモリが、前記仮決定手段によるキャッシュデータの転送元の仮決定の対象に含まれることを特徴とする請求項１から８のいずれか１項記載のマルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを備えたプロセッサを複数備え、各プロセッサのキャッシュメモリ間でキャッシュコヒーレンシを保つマルチプロセッサに関する。
【背景技術】
【０００２】
従来、キャッシュメモリを備えたプロセッサを複数有するマルチプロセッサにおいて、任意のプロセッサでキャッシュミスが発生した場合、マルチプロセッサ内でキャッシュコヒーレンシを管理するコヒーレンシ管理ユニットは、各プロセッサのキャッシュメモリに対応して設けられた全てのタグメモリを活性化し、リフィル対象となるキャッシュラインの有無を確認していた。
【０００３】
また、リフィル対象となるキャッシュラインの有無を確認した結果、リフィル対象となるキャッシュラインが複数のキャッシュメモリ内に存在した場合、コヒーレンシ管理ユニットは、キャッシュミスしたキャッシュメモリへキャッシュラインを転送する際にマルチプロセッサ内（キャッシュメモリ、共有バス、調停回路等）で消費される消費電力を考慮に入れずにキャッシュラインの転送を行っていた。
【０００４】
しかしながら、従来技術では、リフィル対象となるキャッシュラインの有無の確認や、キャッシュラインの転送は、消費電力の観点からは非効率的であるという問題があった。
【０００５】
共有メモリマルチプロセッサにおいて、コヒーレンシを維持するデータブロックに対してライト動作を行う際に、データを共有化していたため無効化されるプロセッサをシフトレジスタに格納し、ライト結果を予測先のプロセッサに転送して性能の向上を図る技術が特許文献１に開示されているが、あるデータブロックにライトが発生したタイミングで投機的に予測を行い、実際に必要とされる前に転送するため、予測の精度が低く、必ずしも性能向上に繋がらないという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−４９６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、キャッシュメモリ間でのキャッシュラインの転送時の消費電力を低減したマルチプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願発明の一態様によれば、主記憶装置と、主記憶装置の記憶データを一時記憶するキャッシュメモリを夫々備え、主記憶装置を共有する複数のプロセッサと、複数のプロセッサのキャッシュメモリのコヒーレンシを管理するコヒーレンシ管理ユニットと、を備え、コヒーレンシ管理ユニットは、キャッシュメモリの各々に対応して設けられ、対応するキャッシュメモリにキャッシュされたキャッシュデータのタグを格納する複数のタグキャッシュと、プロセッサからのリフィル要求に応じて、複数のタグキャッシュを参照してリフィル要求に対応するキャッシュデータがキャッシュされたキャッシュメモリを判別し、判別したキャッシュメモリを転送元としリフィル要求元のキャッシュメモリを転送先としてリフィル要求に対応するキャッシュデータの転送を行うデータ転送手段と、キャッシュメモリ間のキャッシュデータの転送の監視に基づく所定の予測処理を行うことで、転送先別に一つの転送元を仮決定する仮決定手段とを有し、データ転送手段は、仮決定手段の仮決定結果が得られた後は、キャッシュデータの転送を行う際、仮決定した一つの転送元に対応するタグキャッシュのみを活性化し、活性化されたタグキャッシュのみを参照してリフィル要求に対応するキャッシュデータがキャッシュされているか否かを判別することを特徴とするマルチプロセッサが提供される。
【発明の効果】
【０００９】
本発明によれば、キャッシュメモリ間でのキャッシュラインの転送時の消費電力を低減したマルチプロセッサを提供できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の第１の実施の形態にかかるマルチプロセッサの構成を示す図。
【図２】図２は、第１の実施の形態にかかるマルチプロセッサが四つのプロセッサユニットでプログラムを並列実行する場合の動作の流れを示す図。
【図３】図３は、プロセッサユニットが、処理対象となるデータへアクセスし、キャッシュミスを起こした状態を示す図。
【図４】図４は、キャッシュメモリラインをリフィル要求元であるプロセッサユニットへとインターベンション転送する状態を示す図。
【図５】図５は、ＰＩＵがインターベンション予測モードへ切り替わった後でのインターベンション転送時の動作を示す図。
【図６】図６は、２段階閾値方式によるインターベンション予測モードの解除方式を示す図。
【図７】図７は、インターバルカウンタを用いたインターベンション予測モードの解除方式を示す図。
【図８】図８は、各プロセッサユニットにインターベンション予測ユニットを分散配置したマルチプロセッサの構成の一例を示す図。
【図９】図９は、本発明の第２の実施の形態にかかるマルチプロセッサの構成を示す図。
【図１０】図１０は、第２の実施の形態にかかるマルチプロセッサが二つのプロセッサユニットでプログラムを並列実行する場合の動作の流れを示す図。
【図１１】図１１は、キャッシュメモリラインをリフィル要求元であるプロセッサユニットへとインターベンション転送する状態を示す図。
【図１２】図１２は、プロセッサユニットが、処理対象となるデータへアクセスし、キャッシュミスを起こした状態を示す図。
【図１３】図１３は、キャッシュメモリラインをリフィル要求元であるプロセッサユニットへとインターベンション転送する状態を示す図。
【図１４】図１４は、ＰＩＵがインターベンション予測モードへ切り替わった後でのインターベンション転送時の動作を示す図。
【図１５】図１５は、本発明の第３の実施の形態にかかるマルチプロセッサの構成を示す図。
【図１６】図１６は、インターベンション転送が行われ、ＰＩカウンタの対応するプロセッサペアのカウンタがインクリメントされる状態を示す図。
【図１７】図１７は、インターベンション転送が行われ、ＰＩカウンタの対応するプロセッサペアのカウンタがインクリメントされる状態を示す図。
【図１８】図１８は、インターベンション予測モードが有効になった状態においては、一つのＬ１タグキャッシュのみを引くことでヒットを得た状態を示す図。
【図１９】図１９は、各プロセッサユニット、ＣＭＵ、メインメモリをリングバスによって接続したマルチプロセッサの構成の一例を示す図。
【図２０】図２０は、リングバス形態のマルチプロセッサにおけるインターベンション転送の様子を示す図。
【図２１】図２１は、リングバス形態のマルチプロセッサにおけるインターベンション転送の様子を示す図。
【図２２】図２２は、本発明の第４の実施の形態にかかるマルチプロセッサの構成を示す図。
【図２３】図２３は、プロセッサユニットが同じメモリ領域に対して、「ｓｃ」によってメモリ領域へのロック変数を書き込む際の様子を示す図。
【図２４】図２４は、インターベンション予測モードがオンした後に、Ｌ１キャッシュメモリでキャッシュミスが発生した様子を示す図。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明の実施の形態にかかるマルチプロセッサを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるマルチプロセッサの構成を示す図である。
マルチプロセッサは、プロセッサユニット１（１ａ〜１ｄ）、メインメモリ２、及びコヒーレンシマネージメントユニット３（ＣＭＵ：Coherency Management Unit）を有する。なお、以下の説明においては、必要に応じてプロセッサユニット１ａ、１ｂ、１ｃ、１ｄをそれぞれＰＵ−Ａ、ＰＵ−Ｂ、ＰＵ−Ｃ、ＰＵ−Ｄと省略して表記する。
【００１３】
プロセッサユニット１ａ〜１ｄは、演算処理及び命令実行を司っており、内部にはＬ１キャッシュメモリ（１次キャッシュメモリ）１１ａ〜１１ｄを備えている。Ｌ１キャッシュメモリ１１ａ〜１１ｄは、データフィールド及びタグフィールドを含んだキャッシュラインを格納している。プロセッサユニット１ａ〜１ｄは、自身が内包するＬ１キャッシュメモリ１１ａ〜１１ｄに対するアクセス時には、キャッシュライン中に含まれるタグに基づいてキャッシュヒット／キャッシュミスを判断し、キャッシュヒットの場合にはヒットしたキャッシュライン中のデータに対してアクセスし、キャッシュミスの場合にはリフィル要求をＣＭＵ３へ出力する。なお、プロセッサユニット１ａ〜１ｄが仮想アドレスを使用する場合、Ｌ１キャッシュメモリ１１ａ〜１１ｄ内のタグは仮想アドレスで表されることとなる。
【００１４】
ＣＭＵ３は、マルチプロセッサ内部のキャッシュコヒーレンシを管理する。ＣＭＵ３は、ＣＭＵコントローラ３１、インターベンション予測ユニット（ＰＩＵ：Predicting Intervention Unit ）３２、Ｌ１タグキャッシュ３３（３３ａ〜３３ｄ）、Ｌ２キャッシュメモリ（２次キャッシュメモリ）３４、Ｌ２タグキャッシュ３５を有する。
【００１５】
Ｌ１タグキャッシュ３３ａ〜３３ｄは、Ｌ１キャッシュメモリ１１ａ〜１１ｄのそれぞれに対応して設けられており、Ｌ１キャッシュメモリ１１ａ〜１１ｄにおけるタグ（アドレス）を記憶する。また、Ｌ２キャッシュメモリ３４は、データを記憶し、Ｌ２タグキャッシュ３５は、そのタグ（Ｌ２キャッシュメモリ３４におけるアドレス）を記憶する。なお、プロセッサユニット１ａ〜１ｄが仮想アドレスを使用する場合でも、Ｌ１タグキャッシュ３３ａ〜３３ｄ内のタグは実アドレスで表されるため、ＣＭＵ３はメモリ管理ユニット（ＭＭＵ：Memory Management Unit）を備えた構成となり、ＭＭＵにおいて仮想アドレスと実アドレスとの変換を行うこととなる。
ＣＭＵコントローラ３１は、ＣＭＵ３の制御系統を担う。具体的には、プロセッサユニット１ａ〜１ｄからのリフィル要求に応じてタグキャッシュ（Ｌ１タグキャッシュ３３ａ〜３３ｄ、Ｌ２タグキャッシュ３５）を参照して、キャッシュヒット／キャッシュミスを得る。そして、キャッシュヒット時には、ヒットしたキャッシュメモリを転送元として、リフィル要求元のプロセッサユニットへのキャッシュラインの転送を行う。一方、キャッシュミス発生時にはメインメモリ２を転送元として、リフィル要求元のプロセッサユニットへのキャッシュラインの転送を行う。また、ＣＭＵコントローラ３１は、プロセッサユニット１ａ〜１ｄによるライト動作が行われた場合やキャッシュライン転送を行った場合にＬ１タグキャッシュ３３ａ〜３３ｄを最新のタグ情報に更新する処理や、スヌープ制御（複数のキャッシュメモリによって共有されているアドレスに対して任意のキャッシュメモリが更新を行う場合、そのアドレスはダーティであるとして共有している他のキャッシュメモリの該当ラインを無効化する処理等）なども行う。ＰＩＵ３２は、スヌープ制御に伴うＬ１キャッシュメモリ１１ａ〜１１ｄ間でのキャッシュラインの転送（以下、インターベンション転送という。）の傾向を予測する。
【００１６】
なお、Ｌ１キャッシュメモリ１１ａ〜１１ｄについても、Ｌ２キャッシュメモリ３４と同様に、データだけ記憶する構成とすることも可能である。ただし、この場合には、プロセッサユニット１ａ〜１ｄが内包するＬ１キャッシュメモリ１１ａ〜１１ｄに対してアクセスする場合にも、ＣＭＵコントローラ３１においてキャッシュヒット／キャッシュミスを判断する必要があるため、ＣＭＵ３の負荷が増大してしまう。このため、Ｌ１キャッシュメモリ１１ａ〜１１ｄには、データとともにタグを記憶させておき、プロセッサユニット１ａ〜１ｄでキャッシュミスが発生した場合にのみＣＭＵ３へリフィル要求を出力することが好ましい。
【００１７】
ＰＩＵ３２は、内部にインターベンション予測用カウンタ（ＰＩカウンタ）３２１を有する。ＰＩカウンタ３２１の内部には、各プロセッサユニット間のインターベンション転送に対応したカウンタや、予測モードオンに切り替わる閾値を記憶する記憶装置が存在しており、プロセッサ間転送の組ごとにカウントが可能である。四つのプロセッサユニット１ａ〜１ｄを備えたシステムにおいては、プロセッサユニット１ａ〜１ｄのいずれに関してもインターベンション転送元となりうるのは、Ｌ１キャッシュメモリ１１ａ〜１１ｄ及びＬ２キャッシュメモリ３４の五つであるから、ＰＩカウンタ３２１は、５×４＝２０通りの転送を個別にカウントする。すなわち、ＰＩカウンタ３２１は、ＰＵ−Ａ←ＰＵ−Ａ、ＰＵ−Ａ←ＰＵ−Ｂ、ＰＵ−Ａ←ＰＵ−Ｃ、ＰＵ−Ａ←ＰＵ−Ｄ、ＰＵ−Ａ←Ｌ２、ＰＵ−Ｂ←ＰＵ−Ａ、ＰＵ−Ｂ←ＰＵ−Ｂ、ＰＵ−Ｂ←ＰＵ−Ｃ、ＰＵ−Ｂ←ＰＵ−Ｄ、ＰＵ−Ｂ←Ｌ２、ＰＵ−Ｃ←ＰＵ−Ａ、ＰＵ−Ｃ←ＰＵ−Ｂ、ＰＵ−Ｃ←ＰＵ−Ｃ、ＰＵ−Ｃ←ＰＵ−Ｄ、ＰＵ−Ｃ←Ｌ２、ＰＵ−Ｄ←ＰＵ−Ａ、ＰＵ−Ｄ←ＰＵ−Ｂ、ＰＵ−Ｄ←ＰＵ−Ｃ、ＰＵ−Ｄ←ＰＵ−Ｄ、ＰＵ−Ｄ←Ｌ２の２０通りのインターベンション転送を個別にカウントする。
【００１８】
なお、マルチプロセッサの構成の一般性を鑑み、ＣＭＵ３内部にＬ２キャッシュメモリ３４及びＬ２タグキャッシュ３５を配置したが、これらが存在していなくても良く、必要に応じて省略することも可能である。
【００１９】
さらに、ＣＭＵ３と各プロセッサ１やメインメモリ２との接続方法は、図１とは異なる方式、例えばバス接続であっても良い。
【００２０】
また、図１においては、マルチプロセッサ内にプロセッサが四つ（１ａ〜１ｄ）配置された構成を示したが、プロセッサの数は２以上であれば任意である。これは、キャッシュラインの転送は、異なるＬ１キャッシュメモリ間での転送に限定される訳ではなく、同一のＬ１キャッシュメモリ内で行われる可能性があるためである。すなわち、プロセッサ数が２のマルチプロセッサであっても、リフィル対象となるキャッシュラインの有無を確認するためには、マルチプロセッサ内の複数のキャッシュメモリのタグメモリを活性化する必要があるためである。
具体例を挙げてより詳しく説明すると、プロセッサが仮想アドレスを使用する場合、Ｌ１キャッシュメモリでキャッシュミスが発生した際にプロセッサユニットから送出されるリフィル要求は、キャッシュラインが仮想アドレスで指定されることとなる。そして、ＭＭＵにおいて仮想アドレスを実アドレスに変換した結果、所望のメモリラインがリフィル要求の送出元のプロセッサのＬ１キャッシュメモリに存在することが判明する場合もある。この場合には、同一のプロセッサユニットのＬ１キャッシュメモリ内でキャッシュラインの転送が行われる。
従って、プロセッサ数が２、且つ二次キャッシュを省略した構成であっても、インターベンション転送の転送元は一義に定まらず、リフィル対象となるキャッシュラインの有無を確認するためには、マルチプロセッサ内の全キャッシュメモリのタグメモリを活性化する必要がある。
【００２１】
続いて、ＰＩＵ３２の予測方式について、説明する。
図２に、本実施形態にかかるマルチプロセッサが四つのプロセッサユニット１ａ〜１ｄでプログラムを並列実行する場合の動作の流れを示す。ここで、プログラム内にオペレーション０〜３の処理が存在し、それぞれをプロセッサユニット１ａ〜１ｄが処理を担当するものとする。この場合、各プロセッサユニット１は、処理対象となるデータや、処理を行うための命令コードをメインメモリ２から自己の内部に存在するＬ１キャッシュメモリ１１ａ〜１１ｄに取り込むことで処理の高速化を図る。
【００２２】
図２の処理フローからも明らかなように、プロセッサユニット１ａ〜１ｃで処理を終えたキャッシュデータは、次の処理を行うプロセッサユニット１ｂ〜１ｄに転送され、次のプロセッサユニット１ｂ〜１ｄで後続の処理を行う。なお、実際には、キャッシュデータは、次のプロセッサユニット１ｂ〜１ｄにおけるキャッシュミスとインターベンション転送を伴うリフィル動作とによって転送される。
【００２３】
ここでは、プロセッサユニット１ａでオペレーション０の処理を終えたデータを含むキャッシュラインが、後続のオペレーション１の処理を行うプロセッサユニット１ｂに転送され、処理を続けるという動作を説明する。
【００２４】
図３は、プロセッサユニット１ｂが、処理対象となるデータへアクセスし（実際には、プロセッサユニット１ｂ内のＬ１キャッシュメモリ１１ｂへアクセスし）、キャッシュミスを起こした状態を示している。ここで、Ｌ１キャッシュメモリ１１ｂのリフィルを行うため、プロセッサユニット１ｂからのリフィル要求がＣＭＵ３に通達される。ＣＭＵコントローラ３１は、ＣＭＵ３内部に存在するタグキャッシュメモリへアクセスし、要求されたキャッシュラインがマルチプロセッサ内に存在するか否かを判断する。この時点では、ＰＩＵ３２による転送の予測はされていないため、ＣＭＵコントローラ３１は全てのタグキャッシュメモリ（Ｌ１タグキャッシュ３３ａ〜３３ｄ、Ｌ２タグキャッシュ３５）にアクセスする必要がある。図中に網掛けで示す部分が、ハードウェア（ロジック・メモリなど、以下、ＨＷ（HardWare）と略記する。）が駆動されて電力を消費している部分である。全タグキャッシュへのアクセスとアドレス比較との結果、要求されたキャッシュラインがプロセッサユニット１ａ内のＬ１キャッシュメモリ１１ａに存在することが判明する。プロセッサユニット１ｂの前段の処理を行うプロセッサユニット１ａ内のＬ１キャッシュ１１ａに存在する可能性が高いことは、プログラム実行フローからも明らかである。
【００２５】
続いて、ＣＭＵコントローラ３１は、図４に示すように、Ｌ１キャッシュメモリ１１ａ内のキャッシュメモリラインをリフィル要求元であるプロセッサユニット１ｂへとインターベンション転送する。この際に、ＰＩカウンタ３２１の値をインクリメントする。図４においては、プロセッサユニット１ａからプロセッサユニット１ｂへとキャッシュラインのインターベンション転送が発生したため、２０個のカウンタのうちのＰＵ−ＡからＰＵ−Ｂへのインターベンション転送に対応する「ＰＵｂ←ＰＵａ予測用カウンタ」がインクリメントされる。
【００２６】
ＰＩＵ３２は、ＰＩカウンタ３２１の値に基づいて、アクセス先となるキャッシュメモリを限定する「インターベンション予測モード」へ切り替わることで、特定プロセッサ（Ｌ１キャッシュメモリ）ペア間のインターベンション転送時におけるＨＷ駆動率を低下させ、マルチプロセッサの消費電力を低減させる。なお、以下の説明では、「インターベンション予測モード」へ切り替わった後の状態のことを、「インターベンション予測モードが有効である。」という。
【００２７】
ここで、ＰＩＵ３２がインターベンション予測モードへ切り替わるためには、ＰＩカウンタ３２１のカウンタ値が「インターベンション予測モードオン閾値（以下、予測モードオン閾値）」を超える必要がある。図２に示す処理フローのように、プロセッサユニット１ａからプロセッサユニット１ｂへ処理とともにキャッシュデータが受け継がれて処理が行われる場合、プロセッサユニット１ａからプロセッサユニット１ｂへのインターベンション転送が多発するため、カウンタ値が予測モードオン閾値を超えることが想定される。
【００２８】
図５は、過去に行われたインターベンション転送によってＰＩカウンタ３２１のＰＵｂ←ＰＵａ予測用カウンタ値が予測モードオン閾値を超え、ＰＩＵ３２がインターベンション予測モードへ切り替わった後の動作（換言すると、インターベンション予測モードが有効である場合の動作）を示している。図５において、プロセッサユニット１ｂのＬ１キャッシュメモリ１１ｂでキャッシュミスが発生し、ＣＭＵ３にリフィル要求が届いている。この時、ＰＩＵ３２はインターベンション予測モードにあり、Ｌ１キャッシュメモリ１１ｂが要求するキャッシュラインは、Ｌ１キャッシュメモリ１１ａに存在すると予測する。予測の無い状態では全てのタグキャッシュを読み出す必要があるが、ＰＩＵ３２の予測に従ってＬ１キャッシュメモリ１１ａに関連したＬ１タグキャッシュ３３ａのみを読み出すことで、消費電力の低減が達成されている。
【００２９】
図２に示すような処理フローにおいては、高い確率で予測が当たり、Ｌ１タグキャッシュ３３ａからヒットが得られる。ＣＭＵコントローラ３１によってヒットが確認できた後、Ｌ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂへとキャッシュラインのインターベンション転送が行われる。
【００３０】
次に、有効になったインターベンション予測モードを解除する方式について説明する。
インターベンション予測モードの解除方式の例としては、
・２段階閾値による解除方式。
・インターバルカウンタによる解除方式。
・予測失敗による解除方式。
が挙げられる。
【００３１】
まず、２段階閾値による解除方式について説明する。この場合には、図６に示すように、ＰＩカウンタ３２１は、２段階の閾値を設定可能に構成する。ＰＩＵ３２内のＰＩカウンタ３２１が予測モードオン閾値「Mode_on_Th」を超える（又は同値に達する）ことでＰＩＵ３２のインターベンション予測モードが有効に変わり、逆にインターベンション予測モードオフ閾値（以下、予測モードオフ閾値。）「Mode_off_Th」を下回る（又は同値に達する）ことで、インターベンション予測モードが無効に変わる。ＰＩカウンタ３２１は、測定対象となるプロセッサユニットから特定ペア間のプロセッサユニットでインターベンション転送が行われる際にインクリメントされ、測定対象となるプロセッサユニットから異なるプロセッサユニットへインターベンション転送が行われるとデクリメントされる。例えば、ＰＵｂ←ＰＵａ予測用カウンタは、プロセッサユニット１ｂからキャッシュミスによるリフィル要求がＣＭＵ３に届いた際にインターベンション転送元がプロセッサユニット１ａであればインクリメントされ、プロセッサユニット１ａ以外であればデクリメントされる。ここで、予測モードオフ閾値「Mode_off_Th」は、予測モードオン閾値「Mode_on_Th」と同値又は小さい値であるならばその値は任意である。
【００３２】
次に、インターバルカウンタによる解除方式について説明する。この解除方式を採用する場合には、図７に示すように、ＰＩカウンタ３２１は２段階の閾値を設定可能に構成するとともに、ＰＩＵ３２内部にインターバルカウンタ３２４を設けておく。インターバルカウンタ３２４は、一定時間の経過とともにＰＩカウンタ３２１のカウンタ値をデクリメントする。
特定ペア間でインターベンション転送が起こり、ＰＩカウンタ３２１がインクリメントされる点は上記同様であるが、時間の経過とともにＰＩカウンタ３２１のカウンタ値をインターバルカウンタ３２４によってデクリメントすることで、時間的局所性を鑑みる。すなわち、実行後長時間が経過したインターベンション転送に基づいた予測は精度が低い可能性があるため、インターバルカウンタ３２４によって時間経過とともにＰＩカウンタ３２１を無効化の方向にバイアスすることで、予測の精度を担保する。
【００３３】
次に、予測失敗による解除方式について説明する。この解除方式は、インターベンション予測モードが有効になった後、一度でも予測が失敗したらインターベンション予測モードを無効にする（及びＰＩカウンタ３２１を０クリアする）コンサバティブな方式である。
インターベンション転送の予測に失敗した場合には、全キャッシュメモリのタグメモリを活性化した上で転送対象となるキャッシュラインの存在を確認し直さなければならないため、消費電力及び処理時間が増加してしまう。本解除方式では、一度でも予測が失敗したらインターベンション予測モードを無効にするため、繰り返し予測が外れることがない。これにより、消費電力及び処理時間の増加を防止できる。
【００３４】
なお、上記のように、インターベンション転送の回数を複数のプロセッサペア間で個別に計測し、インターベンション予測モードのＯＮ／ＯＦＦを切り替える場合、転送元が異なる複数のプロセッサペアに関してインターベンション転送予測カウンタのカウンタ値が予測モードオン閾値を越える可能性がある。例えば、ＰＵｂ←ＰＵａ予測用カウンタ及びＰＵｂ←Ｐｕｃ予測用カウンタの両方が予測モードオン閾値を超えた状態となる可能性がある。このような状態においてＣＭＵ３がどのプロセッサペアに関するインターベンション予測モードを採用するかの選択方式の一例について具体例を五つ挙げて説明する。ただし、下記の方式に限るものではない。
・あるプロセッサペアに関してインターベンション予測モードがオンとなった場合には、ＰＩＵ３２が他のプロセッサペアに関するＰＩカウンタ３２１を停止させる。
・あるプロセッサペアに関してインターベンション予測モードがオンになった場合、ＰＩＵ３２は、それ以降にＰＩカウンタ３２１のカウンタ値が予測モードオン閾値を超えた（又は同値に達した）プロセッサペアについては、予測モードオン閾値を超えた（同値に達した）時間が早い順に高い優先度を設定し、現在オンとなっているインターベンション予測モードが解除された時点で、最も優先度が高いプロセッサペアのインターベンション予測モードをオンにする。
・プロセッサペアの優先度を予め設定しておき、ＰＩカウンタ３２１のカウンタ値が予測モードオン閾値を超えた（又は同値に達した）プロセッサペアの中で最も優先度の高いプロセッサペアのインターベンション予測モードをオンとする。（例：「ＰＵｂ←ＰＵａ」＞「ＰＵｂ←ＰＵｃ」＞「ＰＵｂ＞ＰＵｄ」）
・ＰＩカウンタ３２１のカウンタ値の予測モードオン閾値に対する超過分が大きいほど高い優先度をプロセッサペアに設定し、最も優先度が高いプロセッサペアのインターベンション予測モードをオンとする。
・時間的に直近で予測が当たったプロセッサペアのインターベンション予測モードをオンとする。
【００３５】
このように、本実施形態にかかるマルチプロセッサは、プロセッサ間のインターベンション転送の傾向を予測し、転送対象のキャッシュラインが存在すると予測されるキャッシュメモリに関するタグメモリのみを起動してキャッシュラインの有無を確認する。よって、特定のプロセッサ（Ｌ１キャッシュメモリ）ペア間のインターベンション転送時におけるＨＷ駆動率を低下させ、マルチプロセッサの消費電力を低減できる。
しかも、実際にキャッシュミスが発生して、プロセッサがキャッシュラインを要求するタイミングに予測を立てるため、予測の精度が高く、予測の外れに伴う消費電力の増加や処理時間の増大を招きにくい。
【００３６】
なお、上記の説明においては、ＰＩＵ３２がＣＭＵ３内に集約された構成を例としたが、図８に示すように、各プロセッサユニット１にＤＰＩＵ（Distributed Predicting Intervention Uint）１３ａ〜１３ｄとしてインターベンション予測ユニットを分散配置し、各ＤＰＩＵ１３ａ〜１３ｄには、各プロセッサユニット１ａ〜１ｄに関連したカウンタ（プロセッサユニット１ｂなら、ＰＵ−Ｂ←ＰＵ−Ａ、ＰＵ−Ｂ←ＰＵ−Ｂ、ＰＵ−Ｂ←ＰＵ−Ｃ、ＰＵ−Ｂ←ＰＵ−Ｄ、ＰＵ−Ｂ←Ｌ２のインターベンション転送に関連する五つ）を配備することで、上記同様の予測アルゴリズムを実現可能である。
【００３７】
図８は、プロセッサユニット１ｂのＬ１キャッシュメモリ１１ｂでキャッシュミスが発生し、ＤＰＩＵ１３ｂの予測により「ＰＵｂ←ＰＵａ」のカウンタが予測モードオン閾値を超えているため、プロセッサユニット１ａからのインターベンション転送を予測し、プロセッサユニット１ａ内のＬ１タグキャッシュ１２ａを引くことによってキャッシュヒットを得て、キャッシュラインをＬ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂにリフィルしている。
このように、インターベンション予測ユニットを各プロセッサユニットに分散配置した場合でも、ＣＭＵ３内に集約して配置した場合と同様の効果が得られる。これは、他の実施の形態に関しても同様である。
【００３８】
（第２の実施の形態）
図９は、本発明の第２の実施の形態にかかるマルチプロセッサの構成を示す図である。第１の実施の形態のマルチプロセッサとほぼ同様の構成であるが、インターベンションパターン格納部３２５をさらに有する点で相違する。
また、ＰＩカウンタ３２１内の各カウンタは、プロセッサペアではなく、インターベンション転送パターン（２回以上のインターベンション転送からなるパターン）に対応したパターンカウンタとなっている。
【００３９】
インターベンションパターン格納部３２５には、特定のインターベンション転送パターンが格納されている。一例として、特定のプロセッサユニットを巡回するようにインターベンション転送が行われるパターンや、特定のプロセッサユニット間を往復するようにインターベンション転送が行われるパターンがある。
前者の具体例としては、
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｃ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｄ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｃ→ＰＵ−Ｄ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｄ→ＰＵ−Ｃ→ＰＵ−Ａ
などが挙げられる。
一方、後者の具体例としては、
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｃ→ＰＵ−Ｂ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｄ→ＰＵ−Ｂ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｃ→ＰＵ−Ｄ→ＰＵ−Ｃ→ＰＵ−Ｂ→ＰＵ−Ａ
・ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｄ→ＰＵ−Ｃ→ＰＵ−Ｄ→ＰＵ−Ｂ→ＰＵ−Ａ
などが挙げられる。
【００４０】
インターベンションパターン格納部３２５には、上記のようなインターベンション転送パターンが格納されており、格納されているパターンと一致するインターベンション転送が発生すると、ＰＩカウンタ３２１の各エントリに対応したパターンカウンタをインクリメントする。なお、インターベンション転送パターンをパターンカウンタと一対一で対応させても良いし、複数のパターンを一つのカウンタに割り当てて（例えば、ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｃ→ＰＵ−ＡとＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｄ→ＰＵ−Ａのような類似するパターンを一つのカウンタを割り当てて）カウントしても良い。
【００４１】
ＰＩＵ３２は、ＰＩカウンタ３２１のパターンカウンタが予測モードオン閾値を超える（又は同値に達する）とインターベンション予測モードをオンし、予測モードオフ閾値を下回る（又は同値に達する）とインターベンション予測モードをオフする。なお、インターベンション予測モードの解除については、上記第１の実施の形態と同様に、インターバルカウンタを用いる方式や、予測失敗による即解除方式をとることも可能である。
【００４２】
インターベンション転送パターンとのマッチングを取る方式としては、アドレスを比較せずに単にインターベンション転送の順番を追ってパターンのマッチングを取る方式と、同じアドレスに対するインターベンション転送の順番を追ってパターンとのマッチングを取る方式とのいずれも適用可能である。同じアドレスに対するインターベンション転送の順番を追う場合は、同じアドレスに対してパターン順序のインターベンション転送が発生して初めてパターン発生とみなす。
【００４３】
図１０に、本実施の形態にかかるマルチプロセッサの動作の一例として、二つのプロセッサユニット１ａ、１ｂでプログラムを並列実行する場合の動作の流れを示す。ここで、プログラム内にオペレーション０〜３の処理が存在し、オペレーション０、２の処理はプロセッサユニット１ａが、オペレーション１、３の処理はプロセッサユニット１ｂが担当するものとする。この場合、プロセッサユニット１ａ、１ｂは、処理対象となるデータや、処理を行うための命令コードをメインメモリ２から自己の内部に存在するＬ１キャッシュメモリ１１ａ、１１ｂに取り込むことで処理の高速化を図る。
【００４４】
ここでは、プロセッサユニット１ａでオペレーション０の処理を終えたデータを含むキャッシュラインが、後続のオペレーション１の処理を行うプロセッサユニット１ｂに転送され、オペレーション１の処理を終えたキャッシュラインが再びプロセッサユニット１ａに転送されて、オペレーション２以降の処理を続ける動作を説明する。ここで、インターベンションパターン格納部３２５には、Ｌ１キャッシュメモリ１１ａ→Ｌ１キャッシュメモリ１１ｂ→Ｌ１キャッシュメモリ１１ａのパターンが格納されているものとする。
【００４５】
プロセッサユニット１ａによるオペレーション０を終えたキャッシュラインを、プロセッサユニット１ｂが読み込もうとする際、キャッシュラインはＬ１キャッシュメモリ１１ａに存在するため、Ｌ１キャッシュメモリ１１ｂではキャッシュミスが発生する。そこで、プロセッサユニット１ｂは、ＣＭＵ３へリフィル要求を発行し、ＣＭＵコントローラ３１は、ＣＭＵ３の内部にある全てのタグキャッシュ（Ｌ１タグキャッシュ３３ａ〜３３ｄ、Ｌ２タグキャッシュ３５）にアクセスすることで、所望のキャッシュラインがＬ１キャッシュメモリ１１ａに存在することを認識する（図３と同様）。
【００４６】
その後、図１１に示すように、Ｌ１キャッシュメモリ１１ａからキャッシュラインがＬ１キャッシュメモリ１１ｂへインターベンション転送される。第１の実施の形態の場合は、Ｌ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂへのインターベンション転送が行われた段階でＰＩカウンタ３２１のＰＵｂ←ＰＵａ予測用カウンタがインクリメントされていたが、本実施の形態の場合は、この段階ではＰＩカウンタ３２１のパターンカウンタをインクリメントしない。
【００４７】
その後、プロセッサユニット１ｂ（Ｌ１キャッシュメモリ１１ｂ）でオペレーション１の処理を終えたキャッシュラインは、オペレーション２の処理を行うべくプロセッサユニット１ａ（Ｌ１キャッシュメモリ１１ａ）からアクセスされる。この時点で、キャッシュラインはＬ１キャッシュメモリ１１ｂに存在するため、図１２に示すように、Ｌ１キャッシュメモリ１１ａではキャッシュミスが発生する。プロセッサユニット１ａからのリフィル要求は、ＣＭＵ３に達するが、この時点でＰＩＵ３２の予測モードはオフ状態であるため、ＣＭＵ３は全てのタグキャッシュ（Ｌ１タグキャッシュ３３ａ〜３３ｄ、Ｌ２タグキャッシュ３５）を読み込み、要求対象のキャッシュラインが存在するＬ１タグキャッシュ３３ｂにヒットを得る。その後、図１３に示すように、Ｌ１キャッシュメモリ１１ｂから要求元のＬ１キャッシュメモリ１１ａへインターベンション転送によってキャッシュラインが送られる。
【００４８】
キャッシュラインがＬ１キャッシュメモリ１１ａ→Ｌ１キャッシュメモリ１１ｂ→Ｌ１キャッシュメモリ１１ａと往来した時点で、インターベンションパターン格納部３２５に格納されているパターンと一致するため、ＰＩカウンタ３２１の「ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ａ」のパターンカウンタがインクリメントされる。
【００４９】
図１０に示したプログラム処理フローのように、プロセッサユニット１ａとプロセッサユニット１ｂとで交互にプログラム処理を行う場合、プロセッサユニット１ａとプロセッサユニット１ｂとの間のインターベンション転送の往来が多発するため、ＰＩカウンタ３２１の「ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ａ」のパターンカウンタのカウンタ値が予測モードオン閾値を超えることが想定される。
【００５０】
図１４は、過去に行われたインターベンション転送の往来によってカウンタ値が閾値を超え、ＰＩＵ３２がインターベンション予測モードに切り替わった後の動作（換言すると、インターベンション予測モードが有効である場合の動作）を示している。この時、ＰＩＵ３２はインターベンション予測モードにあり、Ｌ１キャッシュメモリ１１ｂが要求するキャッシュラインはＬ１キャッシュメモリ１１ａにあると予測する。予測の無い状態では全てのタグキャッシュを読み出す必要があるが、ＰＩＵ３２の予測に従ってＬ１キャッシュメモリ１１ａに関連したＬ１タグキャッシュ３３ａのみを読み出すことで、消費電力の低減が達成されている。
【００５１】
図１０に示すようなプログラム処理フローにおいては、高い確率で予測が当たり、Ｌ１タグキャッシュ３３ａからキャッシュヒットが得られる。ＣＭＵコントローラ３１によりヒットが確認できた後、Ｌ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂへとキャッシュラインのインターベンション転送が行われる。複数のパターンカウンタのカウンタ値が予測モードオン閾値を越えた場合に、どのパターンに関するインターベンション予測モードを採用するかは、第１の実施の形態と同様の動作によって選択可能である。
【００５２】
なお、インターベンション転送パターンによっては、インターベンション転送の転送元の候補となるキャッシュメモリが複数存在することも考えられる。具体例を挙げると、「ＰＵ−Ａ→ＰＵ−Ｂ→ＰＵ−Ｄ→ＰＵ−Ｂ→ＰＵ−Ａ」という転送パターンの場合には、パターンの最初のＰＵ−Ａ→ＰＵ−Ｂというインターベンション転送と、三番目のＰＵ−Ｄ→ＰＵ−Ｂというインターベンション転送とは、いずれもＬ１キャッシュメモリ１１ｂを転送先とするインターベンション転送である。したがって、ＣＭＵコントローラ３１は、プロセッサユニット１ｂからリフィル要求を受けた場合に、パターンの１番目のインターベンション転送に対応するリフィル要求であるか、３番目のインターベンション転送に対応するリフィル要求であるかを判別する必要がある。換言すると、ＣＭＵコントローラ３１は、プロセッサユニット１ｂからリフィル要求を受けた場合、インターベンション転送の転送元を、Ｌ１キャッシュメモリ１１ｂと予測するべきか、Ｌ１キャッシュメモリ１１ｄと予測するべきかを判断する必要がある。
【００５３】
インターベンション転送の転送元を特定する方法の一例を挙げるとＣＭＵコントローラ３１が、パターンの最初のインターベンション転送に該当するリフィル要求を受けた時点からパターン終了までの間、リフィル要求によって指定されたアドレスについて何回インターベンション転送を行ったかを記憶してもよい。具体例として挙げた転送パターンでは、パターン中の１回目のインターベンション転送であるか、３回目のインターベンション転送であるかを判別することで、転送元となるキャッシュメモリを特定できる。
【００５４】
また、ＣＭＵコントローラ３１が、パターンの最初のインターベンション転送に該当するリフィル要求を受けた時点からパターン終了までの間、リフィル要求によって指定されたアドレスについての各々のキャッシュメモリからのリフィル要求の数を記憶しても良い。具体例に挙げた転送パターンでは、あるアドレスに対するプロセッサユニット１ｂによる最初のリフィル要求であるか２回目のリフィル要求であるかを判別することで、転送元となるキャッシュメモリを特定できる。
【００５５】
なお、ＣＭＵコントローラ３１が転送元の候補となる複数のキャッシュメモリに対応する各タグを活性化してもよい。具体例として挙げた転送パターンでは、プロセッサユニット１ｂからのリフィル要求を受けた場合に、ＣＭＵコントローラ３１はＬ１タグキャッシュ３３ａ、３３ｄを活性化して読み出しても良い。この場合には、ＣＭＵ３がプロセッサユニット１ｂからリフィル要求を受けた場合に、パターンの１番目のインターベンション転送のものであるか、パターンの３番目のインターベンション転送のものであるかをＣＭＵコントローラ３１が判別する必要はなくなる。
【００５６】
本実施の形態においては、特定のプロセッサペアでのインターベンション転送の回数ではなく、所定のインターベンション転送パターンとの一致回数に基づいてインターベンション予測モードのＯＮ／ＯＦＦを切り替えるため、第１の実施の形態と比較してより厳しい条件で予測を行うこととなる。したがって、インターベンション転送の予測の精度が高まるため、予測が外れることによって消費電力や処理時間が増大することを抑えることができる。
【００５７】
（第３の実施の形態）
図１５は、本発明の第３の実施の形態にかかるマルチプロセッサの構成を示す図である。
上記第１、第２の実施の形態においては、マルチプロセッサ内のキャッシュラインやデータの流れに基づいてインターベンション転送の予測を行っていたが、本実施形態においては、マルチプロセッサ内のハードウェア構成や消費電力を考慮してインターベンション転送を予測する。
マルチプロセッサの構成は第１の実施形態とほぼ同様であるが、予測ユニットであるＰＩＵ３２が、内部にバイアスユニット３２３をさらに有する点で相違する。なお、ＰＩカウンタ３２１については、第１の実施の形態と同様であり、プロセッサペアに対応するカウンタを備えている。
【００５８】
バイアスユニット３２３は、ＰＩカウンタ３２１の各プロセッサペアに対応するカウンタが予測モードオン閾値を超えるか否かの判定を行う論理への一定のバイアスをかける働きをする。
例を挙げると、過去にプロセッサユニット１ａからプロセッサユニット１ｂに５回のインターベンション転送が行われており、「ＰＵｂ←ＰＵａ」のカウンタ値として記憶されているとする。また一方で、過去にプロセッサユニット１ｃからプロセッサユニット１ｂに６回のインターベンション転送が行われており、「ＰＵｂ←ＰＵｃ」のカウンタ値として記憶されているとする。ここで、両者の予測モードオン閾値（Ｔｈ）が共に８だったとする。この時のバイアスユニット３２３が「ＰＵｂ←ＰＵａ」に「×２倍」のバイアスを、「ＰＵｂ←ＰＵｃ」に「×１倍」のバイアス（実質の無バイアス）をかけたとする。この場合、プロセッサユニット１ａからプロセッサユニット１ｂへのインターベンション転送は、過去のインターベンション転送の回数はプロセッサユニット１ｃに比べて少ないが、ＰＵｂ←ＰＵａのカウンタのカウンタ値が予測モードオンの閾値を超えるため、（５回×２倍＝１０回＞閾値（８回））、プロセッサユニット１ｂを転送先とするインターベンション転送予測としてプロセッサユニット１ａが転送元として予測される。
【００５９】
図１５のように両者へのバイアスが無い状態では、両者とも閾値を超えていないため、プロセッサユニット１ｂからキャッシュミスのリフィル要求が届いた際に、ＣＭＵコントローラ３１は全てのタグキャッシュ（Ｌ１タグキャッシュ３３ａ〜３３ｄ、Ｌ２タグキャッシュ３５）を読み、Ｌ１タグキャッシュ３３ａとＬ１タグキャッシュ３３ｃとにキャッシュヒットを得る（既に、同じキャッシュラインをＬ１キャッシュメモリ１１ａとＬ１キャッシュメモリ１１ｃとでシェアしている状況）。ここで、Ｌ１キャッシュメモリ１１ａからインターベンション転送するか、Ｌ１キャッシュメモリ１１ｃからインターベンション転送するかは、プロセッサユニット１の実装状態に依存する。
【００６０】
Ｌ１キャッシュメモリ１１ａが選択されれば、図１６に示すように、Ｌ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂへインターベンション転送が行われ、ＰＩＵ３２内のＰＩカウンタ３２１の対応するプロセッサペアのカウンタがインクリメントされる。一方、Ｌ１キャッシュメモリ１１ｃが選択されれば、図１７に示すように、Ｌ１キャッシュメモリ１１ｃからＬ１キャッシュメモリ１１ｂへインターベンション転送が行われ、ＰＩＵ３２内のＰＩカウンタの対応するプロセッサペアのカウンタがインクリメントされる。この場合、Ｌ１キャッシュメモリ１１ａの持つキャッシュラインとＬ１キャッシュメモリ１１ｃの持つキャッシュラインとは同じであるため、Ｌ１キャッシュメモリ１１ｂに達するキャッシュライン情報は同じであり、キャッシュのコヒーレンシは保たれる。しかし、インターベンション転送に伴う消費電力は、Ｌ１キャッシュメモリ１１ｃからＬ１キャッシュメモリ１１ｂへの転送を行った方が大きくなる（システム上におけるプロセッサ間の距離が遠く、転送時に駆動を要する不図示のハードウェア数も増加するため。）。そこで、バイアスユニット３２３によって、Ｌ１キャッシュメモリ１１ａ側に一定のバイアスをかけることで、ＰＩＵ３２がＬ１キャッシュメモリ１１ａからのインターベンション予測モードへ切り替わることを容易にし、消費電力の少ないＬ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂへのインターベンション転送を促すことができる。
【００６１】
図１８に、バイアスユニット３２３によってＬ１キャッシュメモリ１１ａに関するインターベンション予測モードが有効になった状態を示す。インターベンション予測モードが有効になった状態においては、ＰＩＵ３２に従いＬ１タグキャッシュ３３ａのみを引くことでヒットを得て、インターベンション転送に伴う消費電力が少ないＬ１キャッシュメモリ１１ａからＬ１キャッシュメモリ１１ｂへの転送を行うことができる。
【００６２】
このように、より消費電力の少ないインターベンション転送の予測モードへの切り替えに対して、バイアスユニット３２３によって一定の優先度を与えることで、マルチプロセッサ全体としての消費電力を低減できる。また、バイアスユニット３２３が無い構成であっても、ＰＩＵ３２内のＰＩカウンタ３２１の予測モードオン閾値を、転送に伴う消費電力の少ないプロセッサユニット間では低く設定することで、消費電力の少ないインターベンション転送への切り替えの優先度を高めることができる。
【００６３】
以上の説明においては、複数のプロセッサユニット１がＣＭＵ３を介して連結されたマルチプロセッサを例としたが、その接続形態は任意である。他の接続方法の一形態として、図１９に、各プロセッサユニット１、ＣＭＵ３、メインメモリ２をリングバスによって接続する構成を示す。また、図２０、図２１に、リングバス形態のマルチプロセッサにおけるインターベンション転送の様子を示す。図示するように、プロセッサユニット１ａからプロセッサユニット１ｂへのインターベンション転送に比べ、プロセッサユニット１ｃからプロセッサユニット１ｂへのインターベンション転送は、リングバス上の距離も遠く、同時に消費電力も高いことがうかがえる。このようなリングバス形態のマルチプロセッサに対しても、上記のバイアスユニット３２３を設けたり、予測モードオン閾値を個別に設定するなどすることにより、消費電力が少ないインターベンション転送に対して優先度を持たせることが可能となる。
【００６４】
（第４の実施の形態）
図２２は、本発明の第４の実施の形態にかかるマルチプロセッサの構成を示す図である。第１〜第３の実施の形態のマルチプロセッサとの構成の相違は、ＰＩＵ３２がＰＩカウンタ３２１の代わりにLocked Adder記憶装置３２２（３２２ａ〜３２２ｄ）を備える点である。Locked Adder記憶装置３２２ａ〜３２２ｄは、各プロセッサユニットからのｌｌ命令によってロックを試みたアドレスを格納する。各プロセッサユニットに対応するLocked Adder記憶装置３２２ａ〜３２２ｄが記憶するアドレスの数は任意であり、一つに限られない（実装では、ハードウェアコストとのトレードオフによって記憶数が決まる。）。
【００６５】
複数のプロセッサユニットがメモリ空間を共有してプログラム処理を行う場合、ある一定の処理区間において、他のプロセッサユニットの介入を許容できない「排他的処理実行」が必要なケースが存在する。この場合、プロセッサユニットは、以下のようなシーケンスを行うことで一定のメモリ領域を扱うためのロック変数（１：ロック、０：アンロック）を獲得した後に排他制御を行い、処理後にロック変数とともにメモリ領域を解放する。
＝＝＜排他制御の実行フロー＞＝＝＝＝＝＝＝＝＝＝
[Retry]
ld R0,RA
bnez R0 [Retry]
movi R0,1
ll R1,RA
sc R0,RA
beqz R0 [Retry]
〜〜排他処理〜〜
movi R0,0
suc R0,RA
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
【００６６】
ここで、上記フローにおける各実行命令について説明する。「ld(Load)」は、メモリ領域から値を読み込む命令であり、上記フローではロック変数を格納するメモリアドレスＲＡから、現状のロック変数の値をレジスタＲ０に読み込んでいる。「bnez(Branch Not Equal Zero)」は、レジスタの値が０と一致しない場合に、指定先のラベルに分岐する命令であり、上記フローにおいては読み出したロック変数が０（アンロック）でない場合は、[Retry]ラベルまで戻ってフローをやり直す。「movi(Move Immediately)」は、即値を指定のアドレスに格納する命令であり、上記フローではレジスタＲ０に値１を格納している。「ll(Load Locked)」は、指定されたメモリアドレスから値を読み込むと同時に、「自プロセッサがこの領域をロックするべくアクセス中である」というロック指示子（及びアドレス）を登録する命令であり、上記フローでは、レジスタＲＡで指定されたメモリアドレスからＲ１へ値を読み出すとともに、指示子（及びアドレス）を登録している。llに続く「sc(Store Conditional)」は、「ロック指示子を登録後に他のプロセッサが同じ領域にアクセスを行っていない」ことを条件に、指定されたメモリ領域に値を書き込む命令であり、上記フローでは、レジスタＲＡで指定されたメモリアドレスへＲ０（値は１）の格納を試み、成功（１）又は失敗（０）として結果をＲ０に格納している。「beqz(Branch Equal Zero)」は、レジスタの値が０と一致する場合に指定先のラベルに分岐する命令であり、上記フローではｓｃ命令の成功・失敗の結果が０（失敗）の場合は[Retry]ラベルに戻ってフローをやり直す。
ここまでの処理を終えた時点で、上記のフローを行ったプロセッサユニットは、排他的にロック変数とそれに対応したメモリ領域とを獲得しているため、一連の排他処理を行う。排他処理を行った後は、ロック変数を解放すべく値０を「suc(Store Unconditional)」によって無条件に書き込み、ロック変数をアンロック（値０）に戻して領域を解放している。
【００６７】
なお、上記のフローは、“COMPUTER ARCHITECTURE A QUANTITATIVE APPROACH 2nd Edition”、John L Hennessy & David A Patterson著に説明されているように公知のものである。
【００６８】
以下、排他処理のフローにリンクしたインターベンション予測方式について説明する。排他制御を伴うプログラム実行は、さらに下記の三つに分類される。
（１）「ｓｃ」に連動したインターベンション予測方式
（２）「ｌｌ」に連動したインターベンション予測方式
（３）「ｌｄ」に連動したインターベンション予測方式
【００６９】
（１）の「ｓｃ」に連動したインターベンション予測方式について説明する。
プロセッサユニット１ａが上記フローによってあるメモリ領域を確保して排他処理を行い、解放したとする。その後、プロセッサユニット１ｂが同じメモリ領域に対して上記フローを実行し、「ｓｃ」によってメモリ領域へのロック変数を書き込む際の様子を図２３に示す。
図２３において、プロセッサユニット１ｂがｓｃ命令を実行し、ＰＩＵ３２内のLocked Adder記憶装置３２２ａ〜３２２ｄを確認している。プロセッサＢのロック指示子（及びアドレス）を確認し、プロセッサユニット１ｂがｌｌ命令を発行した以降に、他のプロセッサユニットが同じアドレスに配置されたロック変数を同時に確保していないことを確認する。また、同時に、他のプロセッサユニットによって現在確保されているロック変数又は過去に確保されたロック変数のアドレスと、現在プロセッサユニット１ｂが確保するロック変数のアドレスとが一致するか否かを判定する。このケースでは、プロセッサユニット１ａが確保したロック変数を、プロセッサユニット１ａでの使用後にプロセッサユニット１ｂが使用するために確保するため、図２３に示したように、ＰＵ−Ａ  Locked Adder記憶装置３２２ａに記憶されているアドレスとプロセッサユニット１ｂがｓｃによって確保しようとするロック変数のアドレスとが一致（ヒット）する。
【００７０】
この時点で、ＰＩＵ３２は、「プロセッサユニット１ｂは、プロセッサユニット１ａが排他的に使用していたメモリ領域を継承して使用する」ことを検知できたため、以降のプロセッサユニット１ｂ（Ｌ１キャッシュメモリ１１ｂ）からのキャッシュミスによって要求されるキャッシュラインは、同じ領域を使用していたプロセッサユニット１ａ内のＬ１キャッシュメモリ１１ａに存在すると予測し、インターベンション予測モードをオンにする。
【００７１】
インターベンション予測モードがオンした後に、Ｌ１キャッシュメモリ１１ｂでキャッシュミスが発生した様子を図２４に示す。インターベンション予測モードがオンした状態では、ＰＩＵ３２は、Ｌ１キャッシュメモリ１１ｂから要求されるキャッシュラインがＬ１キャッシュメモリ１１ａに存在すると予測し、ＣＭＵ３内のＬ１キャッシュメモリ１１ａに関するＬ１タグキャッシュ３３ａにのみアクセスし、キャッシュヒットを得ている。このように、排他制御のために用いる命令とアドレスの一致とによりプロセッサ間のインターベンション転送を予測できる。
【００７２】
次に、上記（２）の「ｌｌ」に連動したインターベンション予測方式について説明する。
上記（１）の「ｓｃ」に連動したインターベンション予測方式では、排他制御フローのｓｃ命令に連動してロック変数を確保するアドレスの比較を行っていたが、本方式ではフローの前半にｌｌ命令でロック変数へのアクセスを試行した段階で、他のプロセッサユニットが確保したロック変数のアドレスとの比較を行う。これは、ｓｃによって最終的にロック変数を確保したプロセッサユニットに対してのみならず、ｌｌ命令によってロック変数の確保を試みたものの、ｓｃ命令の段階でロック変数を確保できなかったプロセッサユニットに対しても有効にインターベンション転送の予測を行う方式である。
【００７３】
次に、上記（３）の「ｌｄ」に連動したインターベンション予測方式について説明する。
本方式では、フローの始めにｌｄ命令でロック変数の値を確認するためにアクセスした段階で、他のプロセッサユニットが確保したロック変数のアドレスとの比較を行う。これは、まだロック変数の確保を試みてはいないが、今後試みるであろうプロセッサユニットに対してもインターベンション転送の予測を行う方式である。また、本方式のようにｌｄ命令に限らず、単に他のプロセッサユニットが確保したロック変数のアドレスに対して、何らかのメモリアクセスを行った段階で、インターベンション予測に反映する（制限を緩める）方式も考えられる。
【００７４】
排他制御フローの領域解放にリンクした解除方式について説明する。上記のように、インターベンション予測モードへの切り替えは、排他制御実行フローにおいて、排他処理に移る複数の段階で（ｌｄ、ｌｌ、ｓｃにリンクした形で）各命令にリンクさせることが可能であるが、インターベンション予測モードの解除は、「排他処理」後にロック変数を解放する「ｓｕｃ」命令にリンクさせる。すなわち、あるプロセッサユニットが他のプロセッサユニットが用いていたロック変数とメモリ領域とを継承して排他処理を行っている間は、インターベンション予測モードを有効に保ち、その領域を解放する手順（ここではｓｕｃ命令によるロック変数の解除）とともにインターベンション予測モードを無効化する。
【００７５】
このように、本実施の形態においては、排他制御フローの命令にリンクさせてインターベンション予測モードのオン・オフを切り替え、転送対象のキャッシュラインが存在すると予測されるキャッシュメモリに関するタグメモリのみを起動してキャッシュラインの有無を確認する。よって、特定のプロセッサ（Ｌ１キャッシュメモリ）ペア間のインターベンション転送時におけるＨＷ駆動率を低下させ、マルチプロセッサの消費電力を低減できる。
【００７６】
なお、上記各実施の形態は本発明の好適な実施の一例であり、本発明はこれらに限定されることなく、様々な変形が可能である。すなわち、上記の各実施の形態は、当該分野の技術者によって、上記説明の要綱に基づき多様なマルチプロセッサに対して修正可能であり、上記の説明は当該分野に対する開示内容として広く理解されるべきであり、本発明を限定するものではない。
【符号の説明】
【００７７】
１  プロセッサユニット、２  メインメモリ、３  ＣＭＵ、１１  Ｌ１キャッシュメモリ、３２  ＰＩＵ、３３  Ｌ１タグキャッシュ、３４  Ｌ２キャッシュメモリ、３５  Ｌ２タグキャッシュ、３２１  ＰＩカウンタ、３２３  バイアスユニット、３２４  インターバルカウンタ、３２５  インターベンションパターン格納部。
【図１】
2011054077.tif 000003
【図２】
2011054077.tif 000004
【図３】
2011054077.tif 000005
【図４】
2011054077.tif 000006
【図５】
2011054077.tif 000007
【図６】
2011054077.tif 000008
【図７】
2011054077.tif 000009
【図８】
2011054077.tif 000010
【図９】
2011054077.tif 000011
【図１０】
2011054077.tif 000012
【図１１】
2011054077.tif 000013
【図１２】
2011054077.tif 000014
【図１３】
2011054077.tif 000015
【図１４】
2011054077.tif 000016
【図１５】
2011054077.tif 000017
【図１６】
2011054077.tif 000018
【図１７】
2011054077.tif 000019
【図１８】
2011054077.tif 000020
【図１９】
2011054077.tif 000021
【図２０】
2011054077.tif 000022
【図２１】
2011054077.tif 000023
【図２２】
2011054077.tif 000024
【図２３】
2011054077.tif 000025
【図２４】
2011054077.tif 000026