(57)【要約】【課題】プロセッサ間でデータのコヒーレンシーを動作効率よく保つことができるキャッシュメモリ及びこのキャッシュメモリを備えたプロセッサを提供する。【解決手段】複数のプロセッサによってキャッシュされたデータが保存されるデータメモリ２０７、データメモリ２０７におけるデータのアドレスを一括して管理するタグメモリ２０６、プロセッサによって供給を要求されたデータのアドレスをタグメモリ２０６によって管理されているアドレスと照合し、供給を要求されたデータがデータメモリ２０７から読出し可能であるか否か検出するヒット検出部２０８、ヒット検出部２０８によってデータが読出し可能であることが検出された場合、検出されたデータをプロセッサに供給するキャッシュ制御部１０３を備える。【選択図】図３
2006244460.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサによって記憶装置から読み出されたデータの少なくとも一部をキャッシュしておき、キャッシュされたデータの少なくとも一部を前記プロセッサに供給するキャッシュメモリであって、
複数のプロセッサによってキャッシュされたデータが保存されるデータ保存手段と、
前記データ保存手段におけるデータのアドレスを一括して管理するアドレス管理手段と、
前記プロセッサによって供給を要求されたデータのアドレスを前記アドレス管理手段によって管理されているアドレスと照合し、供給を要求されたデータが前記データ保存手段から読出し可能であるか否か検出するヒット検出手段と、
前記ヒット検出手段によってデータが読出し可能であることが検出された場合、検出されたデータを前記プロセッサに供給するデータ供給手段と、
を備えることを特徴とするキャッシュメモリ。
【請求項２】
前記データ保存手段から読み出されたデータ、前記データ保存手段に書き込まれるデータの少なくとも一方を一時的に保存するバッファ手段をさらに備えることを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記データ供給手段は、前記ヒット検出手段によってデータが読出し可能であることが検出された場合、検出されたデータを前記プロセッサに供給すると共に、前記プロセッサに供給されたデータと連続するデータを含むデータを、前記データ保存手段から読み出されたデータを一時的に保存する前記バッファ手段にも供給することを特徴とする請求項２に記載のキャッシュメモリ。
【請求項４】
前記プロセッサによって供給が要求されることが予想されるデータをキャッシュしておく先読みデータ保存手段をさらに備えることを特徴とする請求項１に記載のキャッシュメモリ。
【請求項５】
前記データ管理手段は、前記データ保存手段のアドレスを複数のウェイとして管理すると共に、データ保存手段に保存されているデータを前記データ保存手段に保持する際の優先度である保存優先度を前記ウェイごとに付し、かつ、各ウェイに付される保存優先度を該ウェイで管理されているデータに対するアクセスの状態に基づいて決定することを特徴とする請求項１から４のいずれかに記載のキャッシュメモリ。
【請求項６】
前記データ保存手段、前記データ管理手段の少なくとも一方がマルチポートメモリであることを特徴とする請求項１から５のいずれか１項に記載のキャッシュメモリ。
【請求項７】
複数のプロセッサによって記憶装置から読み出されたデータの少なくとも一部をキャッシュしておき、キャッシュされたデータの少なくとも一部を前記プロセッサに供給するキャッシュメモリを備えたプロセッサであって、
前記キャッシュメモリは、
複数のプロセッサによってキャッシュされたデータが保存されるデータ保存手段と、
データの前記データ保存手段におけるアドレスを一括して管理するアドレス管理手段と、
前記プロセッサによって供給を要求されたデータのアドレスを前記アドレス管理手段によって管理されているアドレスと照合し、供給を要求されたデータが前記データ保存手段から読出し可能か否かを検出するヒット検出手段と、
前記ヒット検出手段によってデータが読出し可能であることが検出された場合、検出されたデータを前記プロセッサに供給するデータ供給手段と、を備えることを特徴とするプロセッサ。
【請求項８】
複数の前記プロセッサの各々が、スレッドごとに処理を実行すると共に、処理の実行中に実行されているスレッドを他のスレッドと変更し得ることを特徴とする請求項７に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ及びプロセッサに係り、特にマルチスレッドプロセッサ等の複数の処理を並列に実行するプロセッサに備えられるキャッシュメモリ及びこのようなキャッシュメモリを備えたプロセッサに関する。
【背景技術】
【０００２】
近年、複数のスレッドやタスク（実施形態１ではスレッドに統一して記す）を並列に実行するマルチプロセッサ（マルチコア）、あるいはマルチスレッドプロセッサが注目されている。このようなプロセッサは、総称してマルチプロセッサシステムとも呼ばれる。マルチプロセッサシステムでは、データ等が蓄積されている外部メモリへのアクセスを効率化するため、外部メモリからいったん読み出されたデータのうちの処理に使用される可能性のあるデータを保存しておくキャッシュメモリを備えるマルチプロセッサシステムがある。このような構成の従来技術として、例えば、特許文献１が掲げられる。
【０００３】
また、特許文献１に示したようなキャッシュメモリを備えたマルチプロセッサでは、複数のプロセッサ間で処理に使用されるデータの一致性（コヒーレンシー）を保つことが必要である。従来のプロセッサでは、データのコヒーレンシーを保つためにバス・スヌープが多く採用されている。バス・スヌープとは、各プロセッサ間で共有されるメモリインターフェイスバス上のトランザクションを観察し、自身に割り当てられているキャッシュメモリ上にあるデータにかかるトランザクションが発生したか否かを検出する機能である。
【０００４】
自身に割り当てられたキャッシュメモリ上にあるデータのトランザクションが発生した場合、プロセッサは、キャッシュメモリの該当するエントリを更新し、マルチプロセッサシステムにおける各プロセッサのキャッシュメモリ領域等に保存されているデータの内容を統一する。バス・スヌープには多くの実装法があり、例えばライトワンスやバークレイプロトコルがある。
【特許文献１】特開２００４−１７８５７１
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記した特許文献１の発明は、キャッシュメモリの記憶領域を独立の領域に分割し、マルチプロセッサシステムで同時に実行されるスレッドごとに割り当てている。このような特許文献１によれば、キャッシュメモリに必要とされるデータが保存されていて、このデータに対するアクセスの成功（ヒット）の割合（ヒット率）が低下するという不具合がある。
【０００６】
さらに、特許文献１に記した構成でバス・スヌープの機能を用いコヒーレンシーを保持する場合、バスをモニタする回路によってマルチプロセッサシステムのハードウェア構成が大規模化する。また、バスを常時モニタするために消費電力が高まり、キャッシュメモリの独立した各領域に各々アクセスしてデータを書き換えるため、コヒーレンシー保持の動作効率が低いという課題が生じる。
【０００７】
本発明は、上記した点に鑑みてなされたものであって、マルチプロセッサシステムにあって装置構成を大きくする、あるいは消費電力を高めることがなく、プロセッサ間でデータのコヒーレンシーを動作効率よく保つことができるキャッシュメモリ及びこのキャッシュメモリを備えたプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明のキャッシュメモリは、複数のプロセッサによって記憶装置から読み出されたデータの少なくとも一部をキャッシュしておき、キャッシュされたデータの少なくとも一部を前記プロセッサに供給するキャッシュメモリであって、前記記憶装置から読み出されたデータが保存されるデータ保存手段と、前記記憶装置から読み出されたデータの前記データ保存手段におけるアドレスを一括して管理するアドレス管理手段と、前記プロセッサによって供給を要求されたデータのアドレスを前記アドレス管理手段によって管理されているアドレスと照合し、供給を要求されたデータが前記データ保存手段から読出し可能であるか否か検出するヒット検出手段と、前記ヒット検出手段によってデータが読出し可能であることが検出された場合、検出されたデータを前記プロセッサに供給するデータ供給手段と、を備えることを特徴とする。
【０００９】
このような発明によれば、複数のプロセッサによってキャッシュされたデータのデータ保存手段におけるアドレスを一括して管理することができるので、複数のプロセッサでキャッシュされたデータを実質的に１つのデータ保存手段に保存することになり、データ保存手段内におけるデータの不統一をなくすことができる。このため、プロセッサ間でデータのコヒーレンシーを動作効率よく保つことができるキャッシュメモリを提供することができる。さらに、データのコヒーレンシーを保つにあたり、別途回路等を追加する必要がないため、キャッシュメモリの装置構成を大きくする、あるいは消費電力を高めることがない。
【００１０】
また、本発明のキャッシュメモリは、前記データ保存手段から読み出されたデータ、前記データ保存手段に書き込まれるデータの少なくとも一方を一時的に保存するバッファ手段をさらに備えることを特徴とする。
このような発明によれば、データ管理手段及びデータ保存手段に対するアクセス回数が低減し、キャッシュメモリへのアクセス速度を高め、キャッシュメモリを採用したプロセッサの処理速度を向上することができる。
【００１１】
また、本発明のキャッシュメモリは、前記データ供給手段が、前記ヒット検出手段によってデータが読出し可能であることが検出された場合、検出されたデータを前記プロセッサに供給すると共に、前記プロセッサに供給されたデータと連続するデータを含むデータを、前記データ保存手段から読み出されたデータを一時的に保存する前記バッファ手段にも供給することを特徴とする。
【００１２】
このような発明によれば、プロセッサに供給されたデータに続くデータを予めバッファに保存することができ、次回にこのデータが要求されたときデータ管理手段及びデータ保存手段にアクセスする必要がなくなる。このため、データ管理手段及びデータ保存手段に対するアクセス回数が低減し、キャッシュメモリへのアクセス速度を高め、キャッシュメモリを採用したプロセッサの処理速度を向上することができる。
【００１３】
また、本発明のキャッシュメモリは、前記プロセッサによって供給が要求されることが予想されるデータをキャッシュしておく先読みデータ保存手段をさらに備えることを特徴とする。
このような発明によれば、データ管理手段及びデータ保存手段に対するアクセス回数が低減し、キャッシュメモリへのアクセス速度を高め、キャッシュメモリを採用したプロセッサの処理速度を向上することができる。
【００１４】
また、本発明のキャッシュメモリは、前記データ管理手段が、前記データ保存手段のアドレスを複数のウェイとして管理すると共に、データ保存手段に保存されているデータを前記データ保存手段にデータを保持する際の優先度である保存優先度を前記ウェイごとに付し、かつ、各ウェイに付される保存優先度を該ウェイで管理されているデータに対するアクセスの状態に基づいて決定することを特徴とする。
【００１５】
このような発明によれば、データを複数のウェイで管理する場合にもＬＲＵ方式を採用してキャッシュのヒット率を高めることができる。
また、本発明のキャッシュメモリは、前記データ保存手段、前記データ管理手段の少なくとも一方がマルチポートメモリであることを特徴とする。
このような発明によれば、複数のプロセッサがデータメモリ、タグメモリに高速にアクセスすることが可能になってマルチプロセッサの処理能力を向上させることができる。
【００１６】
また、本発明のプロセッサは、複数のプロセッサによって記憶装置から読み出されたデータの少なくとも一部をキャッシュしておき、キャッシュされたデータの少なくとも一部を前記プロセッサに供給するキャッシュメモリを備えたプロセッサであって、前記キャッシュメモリは、前記記憶装置から読み出されたデータが保存されるデータ保存手段と、前記記憶装置から読み出されたデータの前記データ保存手段におけるアドレスを一括して管理するアドレス管理手段と、前記プロセッサによって供給を要求されたデータのアドレスを前記アドレス管理手段によって管理されているアドレスと照合し、供給を要求されたデータが前記データ保存手段から読出し可能か否かを検出するヒット検出手段と、
前記ヒット検出手段によってデータが読出し可能であることが検出された場合、検出されたデータを前記プロセッサに供給するデータ供給手段と、を備えることを特徴とする。
【００１７】
このような発明によれば、複数のプロセッサによってキャッシュされたデータのデータ保存手段におけるアドレスを一括して管理することができるので、複数のプロセッサでキャッシュされたデータを実質的に１つのデータ保存手段に保存することになり、データ保存手段内におけるデータの不統一をなくすことができる。このため、プロセッサ間でデータのコヒーレンシーを動作効率よく保つことができるプロセッサを提供することができる。さらに、データのコヒーレンシーを保つにあたり、別途回路等を追加する必要がないため、プロセッサにあって装置構成を大きくする、あるいは消費電力を高めることがない。
【００１８】
また、本発明のキャッシュメモリは、複数の前記プロセッサの各々が、スレッドごとに処理を実行すると共に、処理の実行中に実行されているスレッドを他のスレッドと変更し得ることを特徴とする。
このような発明によれば、１つのプロセッサが共通するデータにアクセスする可能性が高いマルチスレッドプロセッサにあってもプロセッサ間でデータのコヒーレンシーを動作効率よく保つことができる。
【発明を実施するための最良の形態】
【００１９】
以下、図を参照して本発明に係るキャッシュメモリ及びこのキャッシュメモリを備えたプロセッサの実施の形態１、実施形態２を説明する。
【００２０】
（実施形態１）
図１は、本発明の実施形態１、実施形態２に共通のキャッシュメモリを備えたマルチスレッドプロセッサ１０１を示した図である。マルチスレッドプロセッサ１０１は、外部メモリ１０５からデータを読み出す、あるいは実行されたスレッドの結果等を外部メモリ１０５に書込んでいる。
【００２１】
また、マルチスレッドプロセッサ１０１は、キャッシュメモリ１０９を備え、外部メモリ１０５に対し、キャッシュメモリ１０９を介してデータを読み出す、あるいは書込んでいる。キャッシュメモリ１０９は、マルチスレッドプロセッサ１０１に含まれる複数のプロセッサによってキャッシュされたデータを保存しておき、キャッシュされたデータの少なくとも一部を複数のプロセッサのいずれかに供給する。このため、マルチスレッドプロセッサ１０１は、外部メモリ１０５にアクセスすることなくデータの多くの供給を受けることができる。
【００２２】
キャッシュメモリ１０９は、一般的に外部メモリ１０５よりもプロセッサが高速にアクセス可能な構成を有している。このため、キャッシュメモリ１０９にアクセスしてデータを取得する構成は、マルチスレッドプロセッサ１０１のデータの読出し及び書込みを高速化すると共に外部メモリ１０５に対するアクセス回数を低減し、マルチスレッドプロセッサ１０１の処理速度及び処理効率を高めることができる。
【００２３】
また、マルチスレッドプロセッサ１０１は、複数のスレッドと、スレッドの実行に使用されるプロセッサとを一対一に割り付けるものでなく、複数のプロセッサの各々が、スレッドごとに処理を実行すると共に、処理の実行中に実行されているスレッドを他のスレッドと変更し得る。このようなマルチスレッドプロセッサ１０１は、マルチスレッドＯＳによって動作するものである。
【００２４】
すなわち、マルチスレッドプロセッサ１０１では、複数のプロセッサが、スレッドの優先順位に応じて実行されるスレッドを動的に変更する。このような動作を図２に例示する。図２に示した例では、マルチスレッドプロセッサ１０１がプロセッサ０からプロセッサ３の４つのプロセッサを備えている。そして、いずれのプロセッサもスレッドの実行中により優先度の高いスレッドの割込みが入り、割り込んだスレッドに処理を切り換えている。
【００２５】
スレッドが切り替えられる場合、マルチスレッドプロセッサ１０１は、切り替え直前のスレッドの状態や結果（コンテキスト）を退避させると共に、次に実行されるスレッドのコンテキストをプロセッサ設定する。
マルチスレッドプロセッサ１０１では、プロセッサ０からプロセッサ３のいずれでもＯＳが動作し、他のプロセッサを制御し得る。このようなマルチスレッドプロセッサは、複数のプロセッサが同等な立場で処理を分担するものであって、対称型マルチプロセッサ（ＳＭＰ：Symmetric Multi Processor）とも呼ばれている。
【００２６】
また、キャッシュメモリ１０９は、データの保存に使用されるキャッシュメモリ部１０７と、キャッシュメモリ部１０７に対するデータの保存を制御するキャッシュ制御部１０３とを備えている。キャッシュメモリ部１０７は、後に図示するように、データに付されたアドレスや状態を管理するタグメモリと、データ本体を保存するためのデータメモリとを含んでいる。
【００２７】
図３は、キャッシュメモリ１０９の構成をより詳細に示した図である。なお、実施形態１では、キャッシュメモリ１０９がプロセッサ０からプロセッサ３までの４つのプロセッサと接続し、４つのプロセッサからデータの要求を受けると共に、４つのプロセッサから受け取ったデータを書き込むことが可能である。なお、各プロセッサがキャッシュメモリ１０９に対して行うデータの要求を、実施形態１では以降読出し命令と記す。
【００２８】
キャッシュメモリ１０９は、図１に示したように、キャッシュ制御部１０３と、キャッシュメモリ部１０７と、ヒット検出部２０８とを備えている。キャッシュメモリ部１０７は、タグメモリ２０６とデータメモリ２０７とを有し、データメモリ２０７は、外部メモリ１０５から読み出されたデータが保存される構成である。また、タグメモリ２０６は、外部メモリ１０５から読み出されたデータを保存するデータメモリ２０７や後述するリード・バッファにおけるアドレスを一括して管理する構成である。
【００２９】
タグメモリ２０６は、データの外部メモリ１０５におけるデータと、このデータが現在保存されているアドレスとを対応付けるデータを例えばテーブル等によって保存するメモリである。データは、外部メモリ１０５の他、データメモリ２０７にも保存されている可能性があるから、データが現在保存されているアドレスは、データメモリ２０７のアドレスをもとり得るものである。
【００３０】
なお、実施形態１では、タグメモリ２０６が、データのアドレスの他、状態（ステータス）をも管理する。ここでいうステータスとは、データの有効、無効やダーティ（外部メモリ１０５から読み出された後に変更された）であるか否か等を示す情報である。
また、キャッシュ制御部１０３は、アドレス制御部２０１、バッファ管理部２０２、ライト・バッファ２０３、リード・バッファ２０５を備えている。
【００３１】
アドレス制御部２０１は、プロセッサから入力された読出し命令から要求されたデータのアドレスを取得し、タグメモリ２０６及びデータメモリ２０７をアクセスする際のアドレスに変換してタグメモリ２０６に出力する。あるいは、データメモリ２０７にキャッシュされているデータを読み出す際、タグメモリ２０６およびデータメモリ２０７に読み出されるデータのアドレスを出力する。さらに、データメモリ２０７にキャッシュされていないデータを外部メモリ１０５から読み出す際、外部メモリ１０５のアドレスを生成し、外部メモリ１０５に出力する。
【００３２】
キャッシュ制御部１０３は、アドレス制御部２０１で生成されたアドレスに基づいてタグメモリ２０６とデータメモリ２０７とに対するアクセスを制御する。また、キャッシュ制御部１０３は、タグメモリ２０６およびデータメモリ２０７へのアクセスが実際に生じるときだけ、メモリアクセスのクロックを供給するなどの方法によって消費電力を低減することも可能である。
【００３３】
ライト・バッファ２０３は、データメモリ２０７に書き込まれるデータを一時的に保存（バッファリング）するバッファであって、プロセッサ０からプロセッサ３の各々に対応するバッファ２０３ａ、２０３ｂ、２０３ｃ、２０３ｄを備えている。また、リード・バッファ２０５は、データメモリ２０７から読み出されたデータをバッファリングするバッファであって、ライト・バッファ２０３と同様に、プロセッサ０からプロセッサ３の各々に対応するバッファ２０５ａ、２０５ｂ、２０５ｃ、２０５ｄを備えている。ライト・バッファ２０３、リード・バッファ２０５は、データメモリ２０７に対する書込みあるいは読出しのタイミングを調整するために設けられた構成である。
【００３４】
さらに、キャッシュ制御部１０３は、バッファ管理部２０２を備えている。バッファ管理部２０２は、ライト・バッファ２０３とリード・バッファ２０５との間のデータの整合性をとるための構成である。すなわち、バッファ管理部２０２は、ライト・バッファ２０３に保存されているデータとリード・バッファ２０５に保存されているデータとを比較し、本来同じデータであるべきデータの不一致が検出された場合には、例えばリード・バッファ２０５に保存されている側のデータを更新、あるいは削除することによって両者を一致させている。
【００３５】
ヒット検出部２０８は、プロセッサによって供給を要求されたデータのアドレスをタグメモリ２０６で管理されているアドレスと照合し、データメモリ２０７に対して供給を要求されたデータがあるか否か検出する。さらに、実施形態１では、供給を要求されたデータが検出された場合、ヒット検出部２０８が検出されたデータをマルチスレッドプロセッサ１０１に供給している。
【００３６】
次に、以上述べた構成の動作を、キャッシュメモリ１０９に対するリードとライトとについて説明する。
【００３７】
（リード動作）
マルチスレッドプロセッサ１０１は、複数のプロセッサのうちの例えばプロセッサ０から読出し命令を出力する。読出し命令は、供給が要求されるデータの外部メモリ１０５におけるアドレス（読出しアドレス）と、読出しを指示する信号（読出し制御信号）とを含んでいる。アドレス制御部２０１は、リード・バッファ２０５のプロセッサ０に対応するバッファ２０５ａに保存されているデータを検出する。
【００３８】
そして、バッファ２０５ａにデータが保存されている場合、保存されているデータに付されたタグアドレスと、読出しアドレスとを照合する。そして、読出しアドレスがリード・バッファ２０５のバッファ２０５ａに保存されているデータのタグアドレスと一致した場合、バッファ２０５ａに保存されているデータをプロセッサ０に出力し、読出し処理を完了させる。
【００３９】
読出しアドレスに対応するタグアドレスが付されたデータがリード・バッファ２０５に保存されていない場合、アドレス制御部２０１は、タグメモリ２０６にアクセスして読出しアドレスを照合する。なお、プロセッサは、読出しアドレスとして、外部メモリ１０５におけるアドレスを使用する。実施形態１では、アドレス制御部２０１が外部メモリ１０５におけるアドレスをデータメモリ２０７にアクセスする際のアドレスに変換する。
【００４０】
タグメモリ２０６は、読出しの対象となるデータのデータメモリ２０７におけるアドレスとステータスとを対応付けて保存している。タグメモリ２０６における照合の結果、読出しアドレスによって指定されたデータがデータメモリ２０７にあった場合、タグメモリ２０６は、ヒット検出部２０８にデータのステータスを出力する。また、タグメモリ２０６における照合結果はデータメモリ２０７にも出力され、データメモリ２０７からヒット検出部２０８へプロセッサ０によって読出されるデータが出力される。ヒット検出部２０８は、データのステータスに基づいてデータが読出し可能である、つまりキャッシュヒットしたと判断した場合、ヒットしたデータをプロセッサ０へ出力する。
【００４１】
また、ヒット検出部２０８は、データの出力と同時に出力されたデータにかかる１エントリ分のデータをリード・バッファ２０５に転送する。このような処理により、次回のアクセス時に転送されたデータが読み出される場合、キャッシュ制御部１０３がタグメモリ２０６とデータメモリ２０７とにアクセスすることなくデータの読出しが可能になる。
一方、読出しアドレスに対応するデータがタグメモリにない、あるいはデータのステータスが無効である等の理由によってデータが読み出せない（キャッシュミスヒットした）場合、キャッシュ制御部１０３は、外部メモリ１０５からデータメモリに読み込むと共にリード・バッファ２０５に転送した後にプロセッサ０へ出力する。また、キャッシュヒットした場合と同様に１エントリ分のデータをリード・バッファ２０５に転送する。
【００４２】
なお、以上述べた実施形態１では、リード・バッファ２０５が複数のプロセッサの各々に対応するバッファ２０５ａ〜２０５ｄを備えている。しかし、実施形態１は、このような構成に限定されるものでなく、プロセッサ０による読出し命令の読出しアドレスと一致するタグアドレスが付されたデータがバッファ２０５ａ以外のバッファに保存されていた場合にもバッファ２０５ａ以外のバッファに保存されているデータを読み出す機能を追加することもできる。
【００４３】
複数のプロセッサが動的にスレッドを切り換えて処理を実行するマルチスレッドプロセッサは、複数の異なるプロセッサによって同一のデータが繰り返し使用される可能性がある。このため、上記したように、読出し命令を出力したプロセッサがリード・バッファ２０５にあるバッファ２０５ａ〜２０５ｄのいずれにもアクセス可能とすれば、例えばプロセッサ０が他のプロセッサの処理時にリード・バッファ２０５に転送されたデータを読み出すことができる。
【００４４】
このような処理によれば、キャッシュ制御部１０３がタグメモリ２０６、データメモリ２０７にアクセスする回数が低減し、マルチスレッドプロセッサ１０１のデータ読出しに係る処理効率が向上する。
また、以上述べた実施形態１は、プロセッサ間でデータのコヒーレンシーを動作効率よく保つことができる。すなわち、例えばプロセッサごとにタグメモリやデータメモリを備える構成では、同じタグアドレスを持つデータが複数の異なるデータメモリに保存されることになる。そして、複数のデータメモリに存在するデータのうちの一部だけが更新される等の理由によってプロセッサ間におけるデータの不一致が発生する。
【００４５】
しかし、実施形態１によれば、外部メモリ１０５から読み出されたデータのデータメモリ２０７におけるアドレスをタグメモリ２０６が一括して管理するため、実質的に唯一のデータメモリによって読出されたデータを保存することになり、キャッシュメモリにおけるデータの不一致をなくすことができる。また、このために実施形態１は、バスを監視する必要がなく、バスを監視するための回路や消費電量が不要である。したがって、プロセッサ間でデータのコヒーレンシーを保つためにマルチプロセッサシステムの装置構成を大きくする、あるいは消費電力を高めることがない。
【００４６】
さらに、実施形態１のマルチスレッドプロセッサは、図２に示したように、１つのプロセッサが複数のスレッドを動的に切り替えて実行するマルチスレッドＯＳのように、データの不一致が生じやすい構成に適用した場合に特に有利である。
また、実施形態１は、ヒットしたデータの読出しと共に、このデータにかかる１エントリ分のデータをリード・バッファ２０５に転送しておく。このため、プロセッサがタグメモリ２０６やデータメモリ２０７にアクセスする回数を低減し、データの読出しにかかるマルチスレッドプロセッサの負荷を軽減することができる。
【００４７】
つまり、読出しの対象となるデータを保存するデータメモリは、一般にバッファに比べてアクセスタイムが遅く、プロセッサのパフォーマンス向上のボトルネックになりやすい。データメモリの前段にリード・バッファやライト・バッファを設けることによってメモリアクセスの遅延を見かけ上隠すことが可能になり、結果としてプロセッサの性能向上を図ることができる。
【００４８】
（ライト動作）
次に、実施形態１のマルチスレッドプロセッサによるライト動作について説明する。なお、以下に述べるライト動作は、ライトバックを例にしているが、ライトスルーにも適用することができる。
マルチスレッドプロセッサ１０１は、複数のプロセッサのうちの例えばプロセッサ０からデータを書き込むよう指示する命令（書込み命令）を出力する。書込み命令は、書込みが要求されるデータの外部メモリ１０５におけるアドレス（書込みアドレス）と、書込みを指示する信号（書込み制御信号）とを含んでいる。また、書込み動作にあっては、書込み命令と共に書込まれるデータ（書込みデータ）もがプロセッサから送出される。
【００４９】
書込みデータは、キャッシュメモリ１０９において、先ず、書込みアドレスと共にライト・バッファ２０３に保存される。ライト・バッファ２０３は、ＦＩＦＯメモリ（First In First Out memory）でなり、書込まれたデータを書込みの順にデータメモリ２０７に書き込んでいる。
キャッシュ制御部１０３は、データをデータメモリ２０７に書き込むため、先ず、タグメモリ２０６のタグアドレスに書込みアドレスを照合すると共に、データのステータスを検出する。この結果、データメモリ２０７にデータの書込みが可能である、つまりキャッシュヒットしたと判断された場合、書込みデータをデータメモリ２０７に書込む。また、タグメモリに保存されているデータのステータスを示すフラグを「ダーティ」にする。
【００５０】
また、キャッシュ制御部１０３は、データメモリ２０７にデータの書込みが不可能である、つまりキャッシュミスヒットしたと判断した場合、外部メモリ１０５から書込みデータに該当するデータをデータメモリ２０７に読み出す。そして、ライト・バッファ２０３に書き込む、タグメモリ２０６を更新する。
実施形態１ではライト・バッファ２０３にＦＩＦＯメモリを採用したため、プロセッサによるライト・バッファ２０３への書込みが、ライト・バッファ２０３が一杯になるまで次々と行われる。また、ライト・バッファ２０３に書き込まれたデータは、タグメモリ２０６、データメモリ２０７に対するアクセス状況に応じ、他の処理と調停しながら空き時間を利用して書き込まれる。
【００５１】
なお、バッファ管理部２０２は、上記のリード動作におけるリード・バッファ２０５への書込み、ライト動作におけるライト・バッファ２０３への書込みや読出しを調停する。また、ライト・バッファ２０３、リード・バッファ２０５間でデータ一致性（コヒーレンシー）を保障する。
ライト・バッファ２０３、リード・バッファ２０５間のデータ一致性は、ライト・バッファ２０３に書込まれたデータがデータメモリ２０７書き込まれる前、同一のデータであってリード・バッファ２０５にあるものにリードアクセスが生じたときに問題となる。このような場合、バッファ管理部２０２は、リード・バッファ２０５の内容をライトされたデータに更新する。あるいは、いったんリード・バッファ２０５のデータを無効にし、書き込みデータをライト・バッファ２０３からデータメモリ２０７に書込んだ後、書込まれたデータをリードすることも考えられる。
【００５２】
なお、処理効率の観点からは、リード・バッファ２０５の内容をライトされたデータに更新することが望ましい。
また、このようなリード・バッファ２０５の更新にあたっては、プロセッサ０がリード・バッファ２０５の対応するリード・バッファ部分にアクセスした場合にも、他のプロセッサに対応するリード・バッファ２０５も更新対象にする必要がある。すなわち、同一のデータが複数のスレッドで使用されることも考えられるので、プロセッサ０による書込み
に対して、プロセッサ０以外のプロセッサによる読出しと書込みとのデータ一致性を保証する必要がある。
【００５３】
以上述べた実施形態１によれば、書込みデータが、タグメモリ２０６によってアドレスが一括して管理されるデータメモリ２０７に書き込まれるため実質的に唯一のデータメモリによって読出されたデータを保存することになり、キャッシュメモリにおけるデータの不一致をなくすことができる。また、このために実施形態１は、バスを監視する必要がなく、バスを監視するための回路や消費電量が不要である。したがって、プロセッサ間でデータのコヒーレンシーを保つためにマルチプロセッサシステムの装置構成を大きくする、あるいは消費電力を高めることがない。
【００５４】
図４は、以上述べた実施形態１のキャッシュメモリにおいて実行されるデータの読出しあるいは書込みの動作を説明するためのフローチャートである。また、図５は、図４と比較するため、従来のキャッシュメモリで実行されるデータの読出しの動作を説明するためのフローチャートである。
図４に示したように、実施形態１のキャッシュメモリは、複数のプロセッサのうちの1つ（プロセッサｋとする）が、キャッシュメモリ１０９にアクセスを要求した場合、タグメモリ２０６においてキャッシュヒットを検出する処理を行う（Ｓ４０１）。この結果、キャッシュヒットが検出された場合（Ｓ４０２：Ｙｅｓ）、データメモリ２０７にアクセスし、読出しの対象となるデータを読み出す（Ｓ４０６）。また、タグメモリ２０６におけるデータのステータスを更新する（Ｓ４０７）。
【００５５】
また、キャッシュメモリ１０９は、ステップＳ４０２において、キャッシュミスヒットを検出した場合（Ｓ４０２：Ｎｏ）、データメモリ２０７に保存されているデータのうち入れ替えられるデータを決定する（Ｓ４０３）。そして、データメモリ２０７からダーティ・データを書き出し（Ｓ４０４）、外部メモリ１０５に保存されている新規なデータをデータメモリ２０７に読み出す（Ｓ４０５）。
【００５６】
図５に処理を示した従来のキャッシュメモリは、ｋ個のプロセッサの各々が独立したタグメモリ及びデータメモリを備える点で実施形態１のキャッシュメモリと相違する。このため、ステップＳ５０２の判断において、従来のキャッシュメモリは、アクセスを要求したプロセッサｋに対応するデータメモリに対してアクセスし（Ｓ５０６）、プロセッサｋに対応するタグメモリを更新する（Ｓ５０７）。
【００５７】
さらに、プロセッサｋのアクセスが書込みであるか否か判断し（Ｓ５０８）、書込であった場合には（Ｓ５０８：Ｙｅｓ）、プロセッサｋ以外のプロセッサに対応するデータメモリ及びタグメモリのデータをも更新し、データメモリ間におけるデータのコヒーレンシーを調整している。
また、以上述べた本実施形のキャッシュメモリは、以上述べた構成に限定されるものでなく、データの先読み機能を付加した構成とすることも可能である。図６は、実施形態１のキャッシュメモリを命令キャッシュにも適用し、先読みキャッシュとして構成したものである。
【００５８】
図６に示した構成は、プロセッサによって供給が要求されることが予想されるデータ（命令）をキャッシュしておく先読みデータ保存手段である先読みバッファをさらに備えている。キャッシュメモリと接続する複数のプロセッサは、各々独立に別のプログラムにアクセスするため、先読みバッファは、プロセッサの個数に対応した数必要になる。先読みキャッシュのアドレス制御部６０１は、先読みのためアドレスの連続性を検出するため、あるいはタグメモリおよびデータメモリをキャッシュのエントリ単位で行うためにエントリの境界をまたがる度に次のタグメモリのアドレスを生成する。
【００５９】
なお、先読みバッファの機能は、従来はタグメモリおよびデータメモリに対するアクセス回数を低減して低消費電力化することを目的にしていた。しかし、先読みの機能をマルチスレッドプロセッサに適用する場合、図３に示したリード・バッファ２０５、ライト・バッファ２０３と同様に、メモリデータにクセス回数を低減してメモリアクセスのボトルネックを解消し、処理速度の向上を図ることができる。
【００６０】
（実施形態２）
次に、本発明の実施形態２について説明する。
実施形態２のキャッシュメモリは、実施形態１で説明した図３の構成を有している。このため、実施形態２では、キャッシュメモリの構成の図示及び説明の一部を省くものとする。実施形態２のキャッシュメモリは、データメモリ２０７、タグメモリ２０６少なくとも一方がマルチポートメモリである。データメモリ２０７をマルチポートメモリとする場合、このマルチポートメモリは、プロセッサの数にウェイの数を乗じた数のポートが必要になる。また、タグメモリ２０６をマルチポートメモリとする場合、このマルチポートメモリは、プロセッサの数のポートが必要になる。
【００６１】
実施形態２のプロセッサは、実施形態２で説明したキャッシュメモリのデータ書出し（データをデータメモリ２０７から外部メモリ１０５に書き出す動作）に関する構成を説明するものである。
実施形態２では、読み込み及び書き出しの操作に対し、いわゆるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ  ａｌｇｏｒｉｔｈｍ）方式を採用している。ＬＲＵとは、キャッシュされているデータのうち、プロセッサがアクセスした後最も長い時間が経過したものをキャッシュメモリから取り除く方法によりデータに対するプロセッサの供給要求の状態に基づいて決定している。このような方式によれば、常にプロセッサの要求頻度が多いデータをデータメモリ２０７にキャッシュしておくことができ、キャッシュメモリを採用した構成の処理効率を高めることができる。
【００６２】
また、キャッシュメモリの方式には種々のものがあるが、実施形態２では、キャッシュメモリ１０９が、２ウェイ（ウェイＡ，Ｂ）のセット・アソシアティブ方式のキャッシュメモリであるものとする。なお、セット・アソシアティブ方式とは、キャッシュメモリを複数の領域（ウェイ）に分割し、それぞれのウェイに、メモリデバイス上の異なるアドレスのデータを格納しておくことにより、ヒット率を向上させることができる方式である。
【００６３】
実施形態２のキャッシュメモリは、タグメモリ２０６が、データメモリ２０７のアドレスを複数のウェイとして管理する。そして、データメモリ２０７に保存されているデータを前記データ保存手段にデータを保持する際の優先度である保存優先度を前記ウェイごとに付し、かつ、各ウェイに付される保存優先度を該ウェイで管理されているデータに対す
なお、実施形態２では、保存優先度を決定する基となるアクセスの状態を、現在に比較的近い所定の期間のアクセス回数とする。このような実施形態２によれば、
先ず、実施形態２のタグメモリ２０６及びデータメモリ２０７の構成を詳細に説明する。図７（ａ）、（ｂ）、（ｃ）は、タグメモリ２０６、データメモリ２０７に記憶されるデータの構造を説明するための図である。（ａ）は、タグメモリ２０６によって管理されるステータスのフラグを示している。
【００６４】
フラグは、プロセッサ０〜３の各々ごとにタグメモリ２０６に保存されていて、実施形態２では、データのステータスをＶａｌｉｄ  ｆｌａｇ、Ｄｉｒｔｙ  ｆｌａｇ、Ｕｓｅｄ  ｆｌａｇの３つのフラグによって示している。Ｖａｌｉｄ  ｆｌａｇは、データの有効性を示すフラグである。Ｄｉｒｔｙ  ｆｌａｇは、キャッシュされているデータが読み込んだ値から交信されている状態（ダーティデータ）であることを示し、Ｕｓｅｄ  ｆｌａｇは、書出しの優先度（書出し優先度）を示している。
なお、実施形態２では、各ウェイの書出し優先度をＵｓｅｄフラグに基づいてテーブル（Ｕｓｅｄテーブル）で管理する。Ｕｓｅｄテーブルについては、図８に示して説明する。
【００６５】
図７（ｂ）は、タグメモリ２０６のデータ構造を説明するための図である。また、図７（ｃ）は、データメモリ２０７のデータ構造を説明するための図である。２ウェイのセット・アソシアティブ方式を採用した実施形態２では、プロセッサ０〜プロセッサ３の各々について２つのウェイを持っていて、タグメモリ２０６は、データメモリ２０７を合計８個のウェイ（Ｗ０〜Ｕ７）として管理している。
【００６６】
タグメモリ２０６に保存されるデータ（タグ情報）は、データのヒット、ミスヒットを検出するためのデータであって、アクセスされるデータのアドレスの１６ビット分が保存されている。また、タグ情報に基づいて読み出されるデータは、１ワードが３２ビットのデータとしてデータメモリにキャッシュされている。
図８（ａ）、（ｂ）は、実施形態２のＬＲＵの処理を説明するための図であって、データの読出しの前後のＵｓｅｄテーブルを示している。実施形態２では、Ｕｓｅｄテーブルをタグメモリ２０６に保存し、キャッシュ制御部１０３によって更新するものとした。
【００６７】
プロセッサ０〜３によって読み出されたデータは、データメモリ２０７のウェイＵ０〜Ｕ７のいずれかにおいてキャッシュされる。ウェイＵ０〜Ｕ７においてキャッシュ可能な数のデータがキャッシュされた後、さらに他のデータをキャッシュする必要がある場合、キャッシュ制御部１０３は、現在ウェイＵ０〜Ｕ７にキャッシュされているデータの１つを外部メモリ１０５に書き出す。そして、新たにキャッシュされた他のデータを書き出されたデータがキャッシュされていた領域に保存する。
【００６８】
合計８つのウェイのキャッシュメモリを持つ実施形態２では、ウェイＵ０〜Ｕ７にキャッシュされているデータのいずれを書き出すかを、ウェイに対するプロセッサの供給要求の状態に基づいて決定している。そして、決定したウェイにあって最もアクセス回数が少なかったデータを書き出すものとする。
このような実施形態２において、アクセス回数の判断を短い時間に限定すれば、直前のデータアクセスの有無によってデータ書出しの対象となるウェイを決定することも可能である。
【００６９】
書出し優先順位は、図８（ａ）、（ｂ）の表中にＬＲＵ順位としてＵｓｅｄテーブルに記録されている。実施形態２でいうＬＲＵ順位は、０〜７の数値によって表されていて、０は最高のＬＲＵ順位を示し、１は最低のＬＲＵ順位を示す。そして、ＬＲＵ順位７が付されたウェイのデータは、次に起こるキャッシュミスヒット時に他のウェイのデータに優先して外部メモリ１０５に書き出される。
【００７０】
図８（ａ）は、プロセッサによって要求されたデータがデータメモリ２０７にミスヒットした場合のＬＲＵ順位の決定について説明するための図である。プロセッサが要求したデータがタグメモリ２０６に管理されるデータにないため、プロセッサは、外部メモリ１０５にアクセスしてデータを読み出し、データメモリ２０７にキャッシュする。この際、キャッシュ制御部１０３は、Ｕｓｅｄテーブルを参照し、ウェイＵ０〜Ｕ７のＬＲＵ順位を参照する。
【００７１】
図８（ａ）の場合、ウェイＵ６のＬＲＵ順位が最低の７であるから、キャッシュ制御部１０３は、ウェイＵ６にキャッシュされていて、キャッシュされたウェイ６のＬＲＵ順位を０にし、他のウェイＵのＬＲＵデータに対するプロセッサの供給要求の状態に基づいて決定している。プロセッサがアクセスした後最も長い時間が経過したものをキャッシュメモリから取り除く方法によりデータを書き出す。そして、最新のデータが順位をそれぞれ１つずつ低下させる。
【００７２】
また、図８（ｂ）は、プロセッサが要求したデータがデータメモリ２０７で管理されているデータにヒットした場合のＬＲＵ順位の決定について説明するための図である。プロセッサが要求したデータがウェイＵ４のデータにヒットした場合、キャッシュ制御部１０３は、このデータを読み出してプロセッサに供給する。このとき、データの書出しは必要ないが、直前にヒットしたウェイＵ４のＬＲＵ順位を０に更新し、この更新に伴ってヒット前のウェイＵ４のＬＲＵ順位（４）より高位のＬＲＵ順位を更新する。
【００７３】
図９は、以上述べた実施形態２のうち、キャッシュの制御を説明するためのフローチャートである。キャッシュ制御部１０３は、プロセッサからデータアクセスの要求を受け、タグメモリ２０６に要求されたデータがヒットするか否かを検出する（Ｓ７０１）。プロセッサに対応して管理されているデータにヒットしたか否か判断し（Ｓ７０２）、ヒットが検出された場合には（Ｓ７０２：Ｙｅｓ）、アクセスがデータの書出しを要求するものか否か判断する（Ｓ７０７）。データの書出しが要求された場合（Ｓ７０７：Ｙｅｓ）、データメモリのタグに対応するウェイ（Ｗａｙ（ｎ））へデータを書き込む（Ｓ７１０）。
【００７４】
また、ステップＳ７０７において、アクセスがデータの書出しを目的とするものでないと判断された場合（Ｓ７０７：Ｎｏ）、Ｗａｙ（ｎ）にキャッシュされているデータを読み出し、アクセスしたプロセッサに供給する（Ｓ７０８）。そして、キャッシュ制御部１０３は、ＬＲＵにしたがってこのデータのアクセス履歴等を示す情報をタグメモリ２０６において更新する（Ｓ７０９）。
【００７５】
一方、ステップＳ７０２において、データがヒットしないと判断された場合（Ｓ７０２：Ｎｏ）、キャッシュ制御部１０３は、アクセス回数が最も少ないウェイ（Ｗａｙ（ｎ））を検出し、さらにウェイ（Ｗａｙ（ｎ））においてプロセッサがアクセスした後最も長い時間が経過したデータをＬＲＵのアルゴリズムによって検出する（Ｓ７０３）。そして、検出されたデータがダーティデータであるか否か判断する（Ｓ７０４）。データがダーティデータである場合（Ｓ７０４：Ｙｅｓ）、このデータをデータメモリ２０７から書出し（Ｓ７０５）、書き出された領域に外部メモリ１０５からデータを読み出す（Ｓ７０６）。
【００７６】
図１０は、図９に示した処理のうち、ＵｓｅｄテーブルのＬＲＵ順位を変更するための処理を説明するためのフローチャートである。キャッシュ制御部１０３は、プロセッサによって要求されたデータをタグメモリ２０６に照会し、要求されたデータがいずれかのウェイにヒットしたか否か判断する（Ｓ８０１）。ヒットしたと判断された場合（Ｓ８０１：Ｙｅｓ）、ヒットしたウェイのＬＲＵ順位を０に更新する（Ｓ８０６）。
【００７７】
次に、キャッシュ制御部１０３は、変数ｓを０に設定し（Ｓ８０７）、複数のプロセッサの各ウェイのＬＲＵ順位ｓを順次ｓ+１に更新する（Ｓ８０８）。この更新は、更新後のＬＲＵ順位が、ヒットしたプロセッサのウェイのヒット直前のＬＲＵ順位に達するまで行われる（Ｓ８０９）。
一方、プロセッサｋが要求したデータがキャッシュにヒットしないとき（Ｓ８０１：Ｎｏ）、キャッシュ制御部１０３は、ＬＲＵ順位が最も低いウェイを検出する。そして、このウェイのＬＲＵ順位を０に更新する（Ｓ８０２）。なお、この際、外部メモリ１０５から読み出されたデータは、今回ＬＲＵ順位が０に更新されたウェイにキャッシュされる。
【００７８】
そして、キャッシュ制御部１０３は、変数ｓを０に設定し（Ｓ８０８）、複数のプロセッサの各ウェイのＬＲＵ順位ｓを順次ｓ+１に更新する（Ｓ８０９）。この更新は、全てのウェイについて行われる。
以上述べた実施形態２によれば、ウェイを複数備えたマルチプロセッサに適したＬＲＵ方式を実現し、キャッシュヒット率を高めることができる。また、データメモリやタグメモリをマルチポートメモリとしたことによって複数のプロセッサがキャッシュメモリに同時にアクセスすることができる。このため、実施形態２は、マルチプロセッサの処理能力を向上させることができる。
【００７９】
なお、複数のプロセッサが同時にキャッシュメモリにアクセスした場合のＬＲＵ順位の更新は、例えば、プロセッサに対して予め優先順位を付しておき、この優先順位にしたがう順序で更新するようにすることも可能である。
【図面の簡単な説明】
【００８０】
【図１】本発明の実施形態１、実施形態２のキャッシュメモリを備えたマルチスレッドプロセッサを示した図である。
【図２】複数のプロセッサが優先順位に応じて実行されるスレッドを動的に変更する動作を説明するための図である。
【図３】図１に示したキャッシュメモリの構成をより詳細に示した図である。
【図４】実施形態１のキャッシュメモリにおいて実行されるデータの読出しあるいは書込みの動作を説明するためのフローチャートである。
【図５】図４と比較するため、従来のキャッシュメモリで実行されるデータの読出しの動作を説明するためのフローチャートである。
【図６】実施形態１のキャッシュメモリを命令キャッシュにも適用し、先読みキャッシュとして構成したものである。
【図７】本発明の実施形態２において、タグメモリ、データメモリに記憶されるデータの構造を説明するための図である。
【図８】実施形態２のＬＲＵの処理を説明するための図である。
【図９】実施形態２のうちキャッシュの制御を説明するためのフローチャートである。
【図１０】実施形態２のうちキャッシュの制御のうちＬＲＵの更新を説明するためのフローチャートである。
【符号の説明】
【００８１】
１０１  マルチスレッドプロセッサ、１０３  キャッシュ制御部、１０５  外部メモリ、１０７  キャッシュメモリ部、１０９  キャッシュメモリ、２０１  アドレス制御部、２０２  バッファ管理部、２０３  ライト・バッファ、２０５  リード・バッファ、２０６  タグメモリ、２０７  データメモリ、２０８  ヒット検出部
【図１】
2006244460.tif 000003
【図２】
2006244460.tif 000004
【図３】
2006244460.tif 000005
【図４】
2006244460.tif 000006
【図５】
2006244460.tif 000007
【図６】
2006244460.tif 000008
【図７】
2006244460.tif 000009
【図８】
2006244460.tif 000010
【図９】
2006244460.tif 000011
【図１０】
2006244460.tif 000012