JP4474570B2 - キャッシュコヒーレンシ制御方法 - Google Patents

キャッシュコヒーレンシ制御方法 Download PDF

Info

Publication number
JP4474570B2
JP4474570B2 JP2008015828A JP2008015828A JP4474570B2 JP 4474570 B2 JP4474570 B2 JP 4474570B2 JP 2008015828 A JP2008015828 A JP 2008015828A JP 2008015828 A JP2008015828 A JP 2008015828A JP 4474570 B2 JP4474570 B2 JP 4474570B2
Authority
JP
Japan
Prior art keywords
request
cache
read
data
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008015828A
Other languages
English (en)
Other versions
JP2009176179A (ja
Inventor
佳晃 渡邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2008015828A priority Critical patent/JP4474570B2/ja
Priority to US12/314,492 priority patent/US8397031B2/en
Publication of JP2009176179A publication Critical patent/JP2009176179A/ja
Application granted granted Critical
Publication of JP4474570B2 publication Critical patent/JP4474570B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Description

本発明は、複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおけるキャッシュコヒーレンシ制御技術に関する。
複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおいて、キャッシュのコヒーレンシ(一貫性)を保証する手法として、スヌープ方式が知られている。スヌープ方式では、プロセッサのキャッシュ間でハンドシェイクを行うことで、各プロセッサのキャッシュは自身や他のプロセッサのキャッシュのライン更新状態を把握し、どのキャッシュに最新のデータが存在するかを知り、必要なときに最新のデータを取得できるようにラインのパージなどを行う。
通常のプロセッサでは、メインメモリへのアクセスとしてキャッシュ経由のアクセスとメインメモリへのダイレクトアクセスの両方がサポートされている。キャッシュ経由の場合は、プロセッサに実装されたキャッシュがライトスルー方式で動作するか、ライトバック方式で動作するかによって処理は異なる。
ライトスルー方式は、CPU(Central Processing Unit)がメモリ書込みを行ったら、更新データはキャッシュにストアされると同時にメインメモリに書き戻される方式である。
ライトバック方式は、CPUがメモリ書込を行っても、条件が整わない限り更新データはキャッシュに留まり、メインメモリへの書戻しがなされない方式である。書き戻す条件は、例えば対象エントリにウェイ数以上のフレームアドレスのリード/ライトが行われる、他のプロセッサが対象エントリに対してアクセス要求があったなどである。
ライトバック方式のキャッシュが実装されたプロセッサにより構成されたマルチプロセッサシステムにおいて、スヌープ方式では無効型プロトコルが用いられる。無効型プロトコルでは、複数のキャッシュから参照があるアドレスに対してあるキャッシュが更新を行う場合、そのアドレスがダーティであるとして参照中の全キャッシュの当該ラインを無効化する。これにより、更新されたラインがありながら他のキャッシュで古いデータをキャッシングしている状態が無くなり、キャッシュコヒーレンシが保たれる。無効型プロトコルには、MESIプロトコルや、MOSIプロトコルなどがある。
例えばMESIプロトコルの場合、各プロセッサ内は、キャッシュを下記4つの状態に定義して管理する。
状態1:対象データは無い状態。この状態は、以下I(Invalid)状態ともいう。
状態2:対象データはあり、メインメモリ内のデータと同一である。さらに、他のプロセッサのキャッシュにも登録されている。この状態は、以下S(Shared−Unmodified)状態ともいう。
状態3:対象データは、自身のキャッシュにのみ登録されており、メインメモリ内のデータと同一である。この状態は、以下E(Exclusive−Modified)状態ともいう。
状態4:対象データは、自身のキャッシュにのみ登録されており、メインメモリ内のデータと異なる。この状態では、キャッシュに登録されたデータは、メインメモリにライトバックされていない最新データとなる。なお、この状態を、以下M(Exclusive−Modified)状態ともいう。
このようなマルチプロセッサシステムにおいて、同一のキャッシュラインアドレス(以下単にアドレスともいう)のデータに対して複数のプロセッサが近接したタイミングでリードする場合、キャッシュコヒーレンシに問題が生じる可能性がある。図9に示すマルチプロセッサシステム1を例に説明する。
図9に示すマルチプロセッサシステム1は、複数(図示の例では4つ)のCPU10〜40と、共有バス50と、メインメモリ70を備える。
CPU10〜40は、共有バス50に接続され、共有バス50を介して互いに通信することや、メインメモリ70へアクセスすることができる。また、CPU10〜40には、キャッシュ12、キャッシュ22、キャッシュ32、キャッシュ42がそれぞれ実装されており、これらのキャッシュは、ライトバック方式のものである。
例えば、CPU10がメインメモリ70のアドレス(アドレスAとする)のデータをリードするときに、自身のキャッシュ12にそのデータが無ければキャッシュミスとなる。この場合、CPU10は、メインメモリ70にリードリクエストを出力すると共に、アドレスAについてのスヌープリクエストを出力する。このスヌープリクエストは、共有バス50に接続されたすべての他のCPUに受信される。スヌープリクエストを受信したCPUは、自身のキャッシュの状態を参照し、アドレスAのデータが自身のキャッシュにありすなわちキャッシュヒットすれば、CPU10に当該データを転送する。なお、キャッシュヒットしたCPUのキャッシュの状態が上記状態4(M状態)であれば、当該CPUは、このデータをメインメモリ70へのライトバックも実施する。
上記状態3(E状態)とM状態のキャッシュがデータを他のCPUに出力した、当該CPUのキャッシュは、上記状態1(I状態)と状態2(S状態)のいずれに遷移するかは、システムの設計によって異なる。
通常、CPUがデータをリードするのは、このデータを更新するためである。E状態とM状態のキャッシュがデータを他のプロセッサに出力した後にS状態に遷移するのでは、該データを受け取ったCPUが更新を行ってキャッシュにストアするときに、他のCPUの当該キャッシュラインを無効にするためのリクエストを出す必要がある。そのため、バス上のトラフィックが多く、システムの効率が低下する。したがって、通常のマルチプロセッサシステムにおいて、E状態およびM状態のキャッシュがデータを出力した後にI状態に遷移するようになっている。
また、CPU10は、キャッシュミスをし、当該アドレス(アドレスBとする)のリードリクエストをメインメモリ70に出力すると共に、スヌープリクエストを出力した際に、CPU10以外の各CPUもキャッシュミスした場合、CPU10は、メインメモリ70から当該データを読み出す処理を実行する。この処理の実行中に、CPU20がアドレスBのデータをリードしようとして、キャッシュミスした場合を考える。
この場合、CPU20は、メインメモリ70にアドレスBのリードリクエストを出力すると共に、スヌープリクエストを出力する。CPU10は、CPU20からのスヌープリクエストを受信すると、自身のキャッシュに当該データがまだ無いため、キャッシュミスし、その旨を示すメッセージをCPU20に出力する。また、CPU30とCPU40もキャッシュミスし、CPU20にその旨を通知したとする。
CPU10はリード動作を続き、メインメモリ70からアドレスBのデータを受信する。また、リード中に、CPU20、CPU30、CPU40が共にアドレスBについてキャッシュミスしているので、CPU10は、アドレスBのデータをE状態でキャッシュに登録する。
ところで、CPU20もリード動作を続き、メインメモリ70からアドレスBのデータを受信する。また、CPU20のスヌープリクエストについて、CPU10、CPU30、CPU40が共にキャッシュミスし、その旨を示すメッセージをCPU20に出しているので、CPU20も、アドレスBのデータをE状態で登録する。
その結果、マルチプロセッサシステム1において、2つのプロセッサのキャッシュが同一のアドレスBについてデータをE状態で保持してしまう。これでは、アドレスBについて、キャッシュコヒーレンシは破綻することになる。
これは、CPU10がメインメモリからデータを読み出している最中に他のCPUからのスヌープリクエストに「キャッシュミス」の応答をすることに起因する。特許文献1には、この問題を解決するための手法が開示されている(特許文献1における「0062」〜「0066」)。
この手法では、各プロセッサを接続する相互結合網(特許文献1における相互結合網B)にキャッシュコヒーレンシの制御機能が設けられていると共に、各プロセッサは、あるアドレスのデータをメインメモリからリードしている最中に他のプロセッサから当該アドレスのデータのスヌープリクエストを受信した際に、リクエストの中止と再実行を要求する「RTY」を相互結合網に出力するようになっている。そして、相互結合網が受信した「RTY」をブロードキャストすることにより、リクエスト元のプロセッサは「RTY」を受取り、リードリクエストおよびスヌープリクエストをリトライする。
こうすることにより、メインメモリからデータを読み出している最中のプロセッサが「キャッシュミス」の返答をすることを防ぐことができ、キャッシュコヒーレンシは保たれる。
特開2003−150573号公報
ここで、図9に示すマルチプロセッサシステム1に特許文献1の手法を適用した際に、同一のアドレスに複数のプロセッサが近接したタイミングでリードした場合の問題点について考える。
図10は、この場合のタイミングチャートの例を示す。図10において、SR、RR、RD、RTYは、それぞれ「スヌープリクエスト」、「リードリクエスト」、「リードデータ」、「リトライ要求」を示す。T1、T2、・・・は、タイミングを示す。なお、分かりやすいように、スヌープリクエストについて、CPU10と関係するもののみを示している。同様に、CPU10がメインメモリ70からデータをリードいる最中に他のCPUからスヌープリクエストを受信した際に、相互結合網に出力するRTYも省略している。
図10に示す例では、T0において、CPU10は、対象アドレス(アドレスCとする)についてキャッシュミスしたため、メインメモリ70にリードリクエストRR10を出力すると共に、スヌープリクエストを出力する(SR102、SR103、SR104)。CPU20〜40も、キャッシュミスし、スヌープリクエストに返答しないとする。
T1において、CPU10からのリードリクエストRR10は、相互結合網によりメインメモリ70に発行される。
T2において、CPU20も、アドレスCについてキャッシュミスし、メインメモリ70にリードリクエストRR20を出力すると共に、スヌープリクエストを出力する。これにより、T3において、CPU10は、スヌープリクエストSR201を受信し、相互結合網は、リードリクエストRR20を受信する。
CPU10がアドレスCのデータをメインメモリ70からリードする処理中であるので、T4において、相互結合網は、CPU20に対してリトライ要求RTY20を出力する。
その後、アドレスCについてキャッシュミスしたCPU30とCPU40も、相互結合網からリトライ要求RTY30(T8)とRTY40(T12)をそれぞれ出される。
T14において、メインメモリ70は、相互結合網を介してアドレスCのデータ(リードデータRD10)をCPU10に出力する。このデータは、相互結合網によりT15においてCPU10に発行される。
T16において、CPU10は、リードデータRD10を受信し、それをキャッシュ12に登録する。これにより、CPU10のキャッシュ12は、状態Iから状態Eに遷移する。
CPU20は、T5で受信したリトライ要求RTY20に応じて、T17で再度アドレスCについてリードリクエストRR20とスヌープリクエストを発行する。このとき、CPU10は、キャッシュヒットするため、当該データ(RD10)をリードデータRD20AとしてCPU20に出力する(T19)。このとき、CPU10のキャッシュ12は、状態Eから状態Iに戻る。
T20において、CPU20は、CPU10からのリードデータRD20Aを受信すると、それをキャッシュ22に登録する。
なお、T21において、リードリクエストRR20に応じてメインメモリ70からもリードデータRD20BがCPU20に出力されるが、CPU20のキャッシュに既に最新のデータが登録されているため、CPU20は、リードデータ20Bを破棄する。
図10のタイミングチャートから分かるように、CPU10のキャッシュ12には、リードデータRD10はT16〜T18の期間にのみ登録されている。
ところで、CPU10がデータをリードしたのも、通常、このデータを更新するためである。CPU10がリードしたデータを更新してキャッシュにストアする前に他のプロセッサに出力してしまったのでは、ストア時にキャッシュの状態がI状態に戻っているため、再びキャッシュミスが生じる。そのため、データの更新を完結させるためには、他のCPUとのハンドシェイクが必要になり、レイテンシが長くなる。その結果、システムの処理効率が悪化する。
本発明は、上記事情に鑑みてなされたものであり、データのリード、更新、ストアの一連の処理をCPU内部において完結させ、システムの処理効率を向上させる技術を提案する。
本発明の1つの態様は、ライトバック型キャッシュが実装された複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおけるキャッシュコヒーレンシ制御装置である。このキャッシュコヒーレンシ制御装置は、リード管理部と、キャッシュラインアドレス情報保持部と、ペンディング指示部を備える。
リード管理部は、上記複数のプロセッサのうちのいずれかのプロセッサからメインメモリに対するリードリクエストを受信した際に、該リードリクエストにより要求されるキャッシュラインアドレスのデータが他のプロセッサによりリードが実行されていないことを条件に、該リードリクエストに要求されたリードを許可する。
キャッシュラインアドレス情報保持部は、上記複数のプロセッサのうちのいずれかのプロセッサによりメインメモリからデータのリードが実行されている際に、このデータが当該プロセッサに出力されるまで該データのキャッシュラインアドレスを保持してリード管理部に供する。
ペンディング指示部は、キャッシュラインアドレス情報保持部に保持されたキャッシュラインアドレスのデータが当該プロセッサへ出力されることに同期して、データのリードに関連するリクエストの発行を一時停止させるペンディング指示を該プロセッサ以外のプロセッサに行う。
本発明の別の態様は、複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおけるプロセッサである。このプロセッサは、ライトバック型キャッシュと、キャッシュミスしたときに対象データのリードに関連するリクエストを発行するリクエスト発行部と、リードに関連するリクエストの発行の一時停止を要求するペンディング指示を受信した際に、リクエスト発行部がリードに関連するリクエストの発行を所定期間停止するように制御を行うリクエスト制御部を備える。
本発明のさらなる別の態様は、ライトバック型キャッシュが実装された複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおけるキャッシュコヒーレンシ制御方法である。この方法は、上記複数のプロセッサのうちのいずれかのプロセッサによりメインメモリからデータのリードが実行されている際に、このデータが当該プロセッサに出力されるまでそのキャッシュラインアドレスを保持する工程と、上記複数のプロセッサのうちのいずれかのプロセッサからメインメモリに対するリードリクエストを受信した際に、該リードリクエストにより要求されるキャッシュラインアドレスのデータが保持されていないことを条件に、該リードリクエストに要求されたリードを許可する工程と、保持されたキャッシュラインアドレスのデータが当該プロセッサへ出力されることに同期して、データのリードに関連するリクエストの発行を一時停止させるペンディング指示を該プロセッサ以外のプロセッサに行う工程を有する。
本発明のさらなる別の態様は、情報処理装置である。この情報処理装置は、ライトバック型キャッシュが実装された複数のプロセッサと、該複数のプロセッサにより共有されるメインメモリと、該複数のプロセッサのキャッシュコヒーレンシを制御するキャッシュコヒーレンシ制御装置を備える。キャッシュコヒーレンシ制御装置は、上記態様のキャッシュコヒーレンシ制御装置が適用され、プロセッサは、上記態様のプロセッサが適用される。
なお、上記態様のキャッシュコヒーレンシ制御装置を回路や方法並びにプログラムに置き換えて表現したもの、上記態様のキャッシュコヒーレンシ制御方法を装置や回路並びにプログラムに置き換えて表現したもの、上記態様のプロセッサを装置や回路並びに方法に置き換えて表現したものも、上記各態様の構成要素の組合せも、本発明の態様として有効である。
本発明によれば、マルチプロセッサシステムにおいて、キャッシュコヒーレンシを保証すると共に、システムの処理効率の悪化を防ぐことができる。
本発明の具体的な実施例を説明する前に、まず、本発明にかかるキャッシュコヒーレンシ制御技術の原理を説明する。
図1は、本発明にかかるキャッシュコヒーレンシ制御技術を適用したマルチプロセッサシステム80を示す。マルチプロセッサシステム80は、複数(図示の例では4つ)のプロセッサ(CPU)81〜84と、共有バス85と、キャッシュコヒーレンシ制御装置90と、メインメモリ86を備える。例として、マルチプロセッサシステム80は、キャッシュコヒーレンシを保証する方式としてスヌープ方式が用いられ、具体的なプロトコルはMESIである。なお、分かりやすいように、図1においてリードに関連する構成要素のみを示し、マルチプロセッサシステムに通常備えられる他の構成要素については、図示および説明を省略する。
CPU81〜84は、共有バス85に接続され、共有バス85を介して互いに通信することや、メインメモリ86へアクセスすることができる。CPU81には、ライトバック型のキャッシュ81Aと、リクエスト発行部81Bと、リクエスト制御部81Cを備える。CPU82〜84にも、CPU81と同様の構成を有する。
各CPUに備えられる各々の構成要素の詳細について、CPU81を例にして説明する。
CPU81において、図示しないCPUコアの要求などにより、メインメモリ70中のデータに対してリードする必要が生じたときに、キャッシュ81Aは、当該データの最新データが自身に登録されているか否かを確認する。登録されているときには、キャッシュ81Aは、キャッシュヒットしたとして当該データをCPUコアに供する。一方、登録されていないときには、キャッシュ81Aは、キャッシュミスしたとして、その旨をリクエスト発行部81Bに通知する。
リクエスト発行部81Bは、キャッシュミスの通知を受信すると、共有バス85を介して、リードに関連するリクエスト(以下単にリクエストともいう)を出力する。具体的には、マルチプロセッサシステム80に対してリードリクエストを出力し、スヌープ処理すなわちスヌープリクエストの出力をする。なお、リクエスト発行部81Bは、リクエスト制御部81Cにより、リードに関連するリクエストの発行が一時停止するように制御されている場合には、上記リクエストの発行を停止し、該所定期間後にリクエストを発行する。
リクエスト発行部81Bが発行したスヌープリクエストについて、CPU82〜84のうちのいずれかにおいてキャッシュヒットがすると、該CPUは当該データをCPU81に転送する。CPU81は、受信したこのデータをキャッシュ81Aに登録する。この場合、キャッシュヒットしたCPU内の最新データがメインメモリ86に書き戻されていないものであれば、当該CPUは、ライトバックを実行する。また、データを出力したCPUのキャッシュは、I状態に遷移する。
リクエスト制御部81Cは、キャッシュコヒーレンシ制御装置90からペンディング指示を受信した際に、リクエスト発行部81Bがリードに関連するリクエストの発行が一時停止するように制御する。
キャッシュコヒーレンシ制御装置90は、リード管理部92と、キャッシュラインアドレス情報保持部94と、ペンディング指示部96を備える。
リード管理部92は、CPU81〜84のうちのいずれかのCPUからメインメモリ86に対するリードリクエストを受信した際に、該リードリクエストにより要求されるキャッシュラインアドレスがキャッシュラインアドレス情報保持部94に保持されていないことを条件にリードを許可する。リードの許可/拒否は、例えばリードリクエストをメインメモリ86に転送する/しないことにより実行される。
メインメモリ86は、共有バス85を介して、リード管理部92によりリードが許可されたデータをリクエスト元のCPUに送信すると共に、その旨をキャッシュコヒーレンシ制御装置90に通知する。通知に際しては、その旨を示す信号をキャッシュコヒーレンシ制御装置90に出力するようにしてもよく、リクエスト元のCPUに送信するデータをキャッシュコヒーレンシ制御装置90にも送信するようにしてもよい。なお、図1において、メインメモリ86は、直接共有バス85にデータを出力しているが、キャッシュコヒーレンシ制御装置90を介してデータを出力するようにしてもよい。
リクエスト元のCPUは、メインメモリ86からのデータを受信すると、当該データを自身のキャッシュに登録する。
キャッシュラインアドレス情報保持部94は、いずれかのCPUによりメインメモリ86からデータのリードが実行されているときに、該データのキャッシュラインアドレスを、該データがリクエスト元のCPUに出力されるまで保持する。リード管理部92は、キャッシュラインアドレス情報保持部94に保持されたキャッシュラインアドレス情報を参照して、他のCPUからのリードリクエストに対する許可/拒否を決定する。
ペンディング指示部96は、キャッシュラインアドレス情報保持部94に保持されたキャッシュラインアドレスのデータがリクエスト元のCPUに出力されることに同期して、データのリードに関連するリクエストの発行を一時停止するペンディング指示を、該リクエスト元のCPU以外の他の各CPUに出力する。
マルチプロセッサシステム80によれば、キャッシュコヒーレンシ制御装置90は、複数のCPUが近接したタイミングで同一のキャッシュラインアドレスのリードに関連するリクエストをし、先にリードが実行されるCPUによりメインメモリ86からデータを読み出している最中に後続のCPUからリードリクエストが到達した場合に、後続のリードリクエストを拒否する。こうすることにより、同一のキャッシュラインアドレスについて、複数のCPUが近接したタイミングでリードリクエストをした場合にも、該キャッシュラインアドレスのデータが2つ以上のCPUのキャッシュにE状態で登録されることを防ぐことができ、キャッシュコヒーレンシが保たれる。
また、キャッシュコヒーレンシ制御装置90は、リードが実行されたCPU(例えばCPU81)に対象データ(たとえばキャッシュラインアドレスAのデータ)が出力されるときに、CPU81以外の各CPUにペンディング指示をし、データのリードに関連するリクエストの発行を一時停止させる。こうすることにより、ペンディング指示を受信したCPU82〜84は、リードリクエストおよびスヌープリクエストを一定期間停止するので、これらのCPUからのスヌープリクエストによりCPU81のキャッシュ81Aにデータが登録された直後に無効にされてしまうことを防ぐことができる。そのため、CPU81は、該一定期間において、キャッシュラインアドレスAのデータを更新してストアするときにキャッシュヒットできる。したがって、データのリード、更新、ストアをCPU81内部で完結させることができ、短レイテンシのアクセスを実現する。
マルチプロセッサシステム80において、キャッシュラインアドレス情報保持部94に保持されたキャッシュラインアドレスについてリードに関連するリクエストを発行したCPUは、リードが拒否された後、リードのリトライを行う必要がある。リードが拒否されたCPU自身によりリードリクエストの履歴を記憶し、拒否される度にリトライをしてもよいし、メインメモリ86からデータの読出しを実行しているCPUが、当該データのキャッシュラインアドレスについて他のCPUからスヌープリクエストを受信した際に、キャッシュミスを返答する代わりにリトライを指示するリトライ指示を返答することによりリトライを実行させるようにしてもよい。
これについて、本発明にかかるキャッシュコヒーレンシ制御技術では、図1に示すキャッシュコヒーレンシ制御装置90にリトライ指示部を設け、該リトライ指示部により、リード管理部92がリードを拒否したCPUにリトライ指示をすることが好ましい。こうすることにより、各CPUの負担を減らすことができると共に、特許文献1(「0060」〜「0061」)に記載された沈込み(スターべーション)の問題も防ぐことができる。
また、例えば、リードが実行されたCPU81にキャッシュラインアドレスAのデータが出力され、該データがCPU81のキャッシュ81Aに登録された直後は、必ずしも他のCPUからキャッシュラインアドレスAに対するスヌープリクエストがあるとは限らない。他のCPUからキャッシュラインアドレスAに対するスヌープリクエストが無い場合に、他のCPUにペンディング指示をしてリクエストを一時停止させると、システムの処理効率が低下する恐れがある。一方、CPU81によりキャッシュラインアドレスAのデータの読出し中に、他のCPUはキャッシュラインアドレスAに対するリードリクエストが拒否され、リトライを行っている場合には、該データがCPU81のキャッシュ81Aに登録された直後は、他のCPUからキャッシュラインアドレスAに対するスヌープリクエストの発生可能性が大きい。そのため、キャッシュコヒーレンシ制御装置90は、リードのリトライを行うCPUがあるときにのみペンディング指示を行うことが好ましい。こうすることによって、システムの処理効率の最適化を図ることができる。
さらに、例えば、CPU81によりキャッシュラインアドレスAのデータの読出し中にリトライを実行していないCPUは、リトライを実行しているCPUと比べ、キャッシュラインアドレスAのデータがCPU81のキャッシュ81Aに登録された直後に該キャッシュラインアドレスAについてスヌープリクエストを出力する可能性が低い。そのため、キャッシュコヒーレンシ制御装置90は、リトライを行うプロセッサに対してのみペンディング指示を行うことが好ましい。こうすることにより、システムの処理効率を一層向上させることが可能である。
また、例えば、CPU81によりキャッシュラインアドレスAのデータの読出し中にリトライを実行するCPUの数が多いほど、キャッシュラインアドレスAのデータがCPU81のキャッシュ81Aに登録された直後に該キャッシュラインアドレスAについてスヌープリクエストが出力される可能性が高い。そのため、キャッシュコヒーレンシ制御装置90に、リトライを行うCPUの数をカウントするリトライ数カウンタを設け、該リトライ数カウンタのカウント値が所定の閾値を超えたことを条件にペンディング指示を行うことが好ましい。これも、システムの処理効率の向上に功を奏することができる。
また、ペンディング指示部96は、ペンディング指示として、キャッシュラインアドレス情報保持部94に保持されたキャッシュラインアドレスが含まれたものを出力することが好ましい。こうすることにより、当該キャッシュラインアドレスのデータをリードすることに関連するリクエストの発行のみを一時停止させることになるので、システムの処理効率をより向上させることが可能である。
上記に説明した本発明のキャッシュコヒーレンシ制御技術は、同一のプロセッサにより同一のキャッシュラインアドレスに連続してアクセスすることが頻発するマルチプロセッサシステムに特に有利である。ここで、このようなマルチプロセッサシステムの一例を説明する。
マルチプロセッサシステムにおいて、メインメモリにおける共有領域のデータの更新に関して、一般的に、プロセッサ間でロックシーケンスと呼ばれる同期処理が実行される。図2は、このロックシーケンスを示す。図示のように、プロセッサは、共有領域を更新する際に、まず、共有領域に対して設けられた、該共有領域がロックされているか否かを示すロック変数をリードする(S10)。ロック変数が、共有領域がロックされていることを示す場合に、該プロセッサは共有領域のロックが解除されるまでリトライを試みるが(S12:No、S10〜)、共有領域がロックされていないことを示すときに、該プロセッサはロック変数を更新して共有領域をロックすると共に、そのデータの更新および更新後のストアをする(S12:Yes、S14)。その後、該プロセッサは、ロック変数を更新して共有領域のロックを解除する(S16)。
この際、ロック変数と共有領域が図3に示すように同一のキャッシュラインアドレスである場合には、共有領域に対するアクセスはプロセッサに備えられたキャッシュ上で行うことができるため、短レイテンシでアクセスを実行できる。
図3に示すようにロック変数と共有領域が同一のキャッシュラインアドレスに設けられたマルチプロセッサシステムにおいて、プロセッサが共有領域の更新を行うために、まずロック変数をリードする。ロック変数をリードした後に必ずロック変数の更新を行う。さらに、ロック変数の更新後、共有領域を更新するために再度同じキャッシュラインアドレスをリードする。また、共有領域の更新後には更新されたデータをストアするためにも同じキャッシュラインアドレスにアクセスする。そのため、このようなマルチプロセッサシステムにおいては、プロセッサが共有領域の更新に際して、必ず同一のキャッシュラインアドレスに対して連続してアクセスする。さらに、無効型プロトコルに準じて、ロック変数の更新に同期して、他のプロセッサのキャッシュにおける、該ロック変数が含まれるキャッシュラインは無効にされる。
すなわち、あるプロセッサ(プロセッサAとする)のキャッシュに登録された、ロック変数と共有領域が含まれる同一のキャッシュラインのデータが、他のプロセッサのスヌープリクエストに応じて転送された際に、プロセッサAの当該キャッシュラインは無効にされる。従って、プロセッサAのリードに続き、他のプロセッサが近接したタイミングで同一のキャッシュラインアドレスをリードしようとしてキャッシュミスした場合には、スヌープリクエストのタイミングが、プロセッサAが更新したデータをストアする前になる可能性が大きい。これでは、プロセッサAがストアする際に、キャッシュミスしてしまうため、システムの処理効率が低下する。
そこで、このようなマルチプロセッサシステムに、本発明にかかるキャッシュコヒーレンシ制御技術を適用すれば、複数のプロセッサが近接したタイミングで同一のキャッシュアドレスラインにリードリクエストをした場合にも、ロックシーケンスの処理効率低下を防ぐことができるため、ロック変数と共有領域を同一のキャッシュラインアドレスに設けることの利点を最大に生かすことができる。
例えば、キャッシュヒット時のレイテンシを1ns、キャッシュミス時のレイテンシをTns、プロセッサの数をn個、一度のロックシーケンスにつき共有領域へのアクセス回数をM回とする。この場合、本発明にかかるキャッシュコヒーレンシ制御技術を適用しない場合には、ロックシーケンスの処理時間は、「M×T×(n−1)」nsである。一方、本発明の技術を適用すれば、ロックシーケンスの処理時間は、「M×1」nsになり、大幅に減少される。また、nが大きいほどすなわちプロセッサが多いほど、本発明により処理時間の短縮効果が顕著である。近年、マルチプロセッサシステムについて、CPUの数は年々増加する傾向にある。本発明にかかるキャッシュコヒーレンシ制御技術は、CPUの数が増加する一方のマルチプロセッサシステムにとって処理効率を向上させるための有効な技術である。
以上の説明を踏まえて、本発明の原理を具現化した実施例を説明する。
図4は、本発明の実施例にかかるマルチプロセッサシステム100を示す。マルチプロセッサシステム100は、複数(図示の例では4つ)のCPU110〜140と、共有バス150と、キャッシュコヒーレンシ制御回路160と、メインメモリ70を備える。
CPU110〜140は、共有バス150に接続され、共有バス50を介して互いに通信することや、メインメモリ170へアクセスすることができる。また、CPU110〜140には、キャッシュ112、キャッシュ122、キャッシュ132、キャッシュ142がそれぞれ実装されており、これらのキャッシュは、ライトバック方式のものである。なお、各CPUの他の構成要素について、図1に示すCPU10らのものと同一であるので、図示を省略する。
キャッシュコヒーレンシ制御回路160は、キャッシュコヒーレンシを制御するものであり、共有バス150とメインメモリ170間に接続される。なお、本実施例のマルチプロセッサシステム100において、キャッシュコヒーレンシを保証するプロトコルとして、スヌープ方式のMESIプロトコルが用いられている。
図5は、マルチプロセッサシステム100におけるキャッシュコヒーレンシ制御回路160を示す。キャッシュコヒーレンシ制御回路160は、リクエスト受信回路161と、リクエスト送信回路162と、リトライ送信回路163と、ペンディング指示生成回路164と、リプライ受信回路165と、リプライ送信回路166と、排他制御管理テーブル200を備える。
リクエスト受信回路161は、各CPUからメインメモリ170へのリードリクエストを受信し、受信したリードリクエストを排他制御管理テーブル200とリクエスト送信回路162に転送する。また、リクエスト受信回路161は、複数のCPUから同時にリードリクエストを受信した際に、CPU間で調停を行うと共に、調停を獲得したCPUのリードリクエストを排他制御管理テーブル200とリクエスト送信回路162に転送する。
排他制御管理テーブル200は、リクエスト受信回路161から受信したリードリクエストを登録し、当該リードリクエストに対応するデータ(リードデータ)がリプライ受信回路165によりメインメモリ170から受信されるまで、このリードリクエストを保持する。排他制御管理テーブル200は、複数のCPUから同一のキャッシュラインアドレスに対するメインメモリ170へのリードリクエストを受信した場合に、最新のデータがこれらの複数のCPUにキャッシュに登録されることが無いように排他制御を行う機能を有する。排他制御管理テーブル200の詳細については、後に詳細に説明する。
リクエスト送信回路162は、リクエスト受信回路161から受信したリードリクエストをメインメモリ170に転送する。但し、既に同一のキャッシュラインアドレスに対するリードリクエストが排他制御管理テーブル200に登録されている場合、リクエスト送信回路162は、受信したリードリクエストを破棄する。
リトライ送信回路163は、リクエスト受信回路161が受信したリードリクエストが要求するキャッシュラインアドレスに対するリードリクエストが既に排他制御管理テーブル200にある場合、リクエスト受信回路161が受信したリードリクエストの発行元CPUに対してリトライ要求を送信する。
なお、リクエスト受信回路161が受信したリードリクエストが要求するキャッシュラインアドレスに対するリードリクエストが既に排他制御管理テーブル200にあるか否かについて、リクエスト送信回路162とリトライ送信回路163は、排他制御管理テーブル200から通知される。
リプライ受信回路165は、メインメモリ170がリクエスト送信回路162からのリードリクエストに応じて発行したリードデータを受信して、排他制御管理テーブル200とリプライ送信回路166に転送する。
リプライ送信回路166は、リプライ受信回路165から受信したリードデータを、リクエストの発行元のCPUに送信する。
ペンディング指示生成回路164は、リクエストの発行元のCPUに対するリードデータが送信されると同時に、該CPU以外のCPUに対して、リードに関するリクエスト(リードリクエストとスヌープリクエスト)の新規発行を抑制するペンディング指示を送信する機能を有し、これは、排他制御管理テーブル200により制御される。
図6は、排他制御管理テーブル200を示す。排他制御管理テーブル200は、複数のエントリを有し、各エントリには、該エントリの有効/無効を判別する判別ビット201と、メインメモリ170へのデータリクエストが実行されているキャッシュラインアドレスを示すキャッシュラインアドレス情報202と、キャッシュラインアドレス情報202に記憶されたキャッシュラインアドレスと同一のキャッシュラインアドレスに対するリードリクエストを受信した際に、リクエスト元のCPUにリトライ要求を送信したことを示すリトライ検出フラグ213が設けられている。
上記各構成要素以外に、排他制御管理テーブル200は、さらに、アドレス比較回路203と、無効エントリ判断回路204と、一致エントリ判断回路205と、エントリ判断回路211と、リクエスト元CPU判断回路212と、リトライ数カウンタ214を備える。
アドレス比較回路203は、リクエスト受信回路161がリードリクエストを受信すると、判別ビット201とキャッシュラインアドレス情報202を参照し、エントリの判別ビット201が有効を示す「1」にセットされているエントリのキャッシュラインアドレスと、受信したリードリクエストにより要求されるキャッシュラインアドレスと比較する。比較の結果は、無効エントリ判断回路204、一致エントリ判断回路205、リクエスト送信回路162、リトライ送信回路163に出力される。
アドレス比較回路203による比較の結果、受信したリードリクエストにより要求されるキャッシュラインアドレスに一致するものが無ければ、無効エントリ判断回路204は、有効ビットが設定されていない空きエントリの判別ビット201を「1」にセットすると共に、キャッシュラインアドレス情報202に該キャッシュラインアドレスを登録する。また、無効エントリ判断回路204は、該リードリクエストが登録されたエントリを示すエントリ情報をリクエスト送信回路162に出力する。
この場合、一致エントリ判断回路205とリトライ送信回路163は、何もしない。リクエスト送信回路162は、当該リードリクエストをエントリ情報と共にメインメモリ170に送信すると共に、そのエントリ情報を保持する。
一方、アドレス比較回路203による比較の結果、受信したリードリクエストにより要求されるキャッシュラインアドレスに一致するものがあれば、一致エントリ判断回路205は、一致したキャッシュラインアドレスのエントリ番号を取得して、該エントリのリトライ検出フラグ213をセットする。リトライ検出フラグ213は、マルチプロセッサシステム100におけるCPU毎に、該CPUを識別する情報例えばCPU番号とフラグとが対応付けて設けられており、それぞれのCPUに対してリトライ要求を送信したか否かを示すことができる。リクエスト元CPU判断回路212は、一致エントリ判断回路205からの情報に基づいて、リクエスト発行元のCPUを判断してリトライ検出フラグ213に供する。
この場合、無効エントリ判断回路204は何もしない。リクエスト送信回路162は、当該リードリクエストを破棄する。リトライ送信回路163は、リクエスト元CPUにリトライ要求を送信する。
メインメモリ170は、リクエスト送信回路162からのリードリクエストに要求されたデータをリプライ受信回路165に出力する。リプライ受信回路165は、そのデータをエントリ判断回路211に送信する。なお、このデータにはエントリ情報が付属されている。
エントリ判断回路211は、データに付属されたエントリ情報に基づいて、当該データのリクエストが登録されているエントリを判断する共に、このエントリの判別ビット201を、無効を示す「0」にリセットする。また、エントリ判断回路211は、リトライ検出フラグ213を索引し、フラグがセットされたCPUの数すなわちリトライ要求が送信されたCPUの数をリトライ数として取得する。このリトライ数は、リトライ数カウンタ214に出力される。リトライ数カウンタ214はそれをカウントし、ペンディング指示生成回路164に出力する。
リトライ数カウンタ214のカウント値が所定の閾値(たとえば2)を超えたときに、ペンディング指示生成回路164は、メインメモリ170へのリードに関する新規のリクエスト(リードリクエストとスヌープリクエスト)を一時停止させるペンディング指示を、リプライ受信回路165が受信したリードデータのリクエスト元CPU以外のCPUに送信する。
なお、キャッシュコヒーレンシ制御回路160において、判別ビット201とキャッシュラインアドレス情報202は、図1に示すマルチプロセッサシステム80のキャッシュラインアドレス情報保持部94に保持されたキャッシュラインアドレス情報に該当し、ペンディング指示生成回路164は、マルチプロセッサシステム80のペンディング指示部96として機能する。また、リクエスト送信回路162は、マルチプロセッサシステム80のリード管理部92の機能を備える。
図7は、マルチプロセッサシステム100において、同一のキャッシュラインアドレスに対して、複数のプロセッサが近接したタイミングでリードした場合のタイミングチャートの例を示す。図7において、SR、RR、RD、RTY、PDは、それぞれ「スヌープリクエスト」、「リードリクエスト」、「リードデータ」、「リトライ要求」、「ペンディング指示」を示す。T1、T2、・・・は、タイミングを示す。なお、分かりやすいように、スヌープリクエストについて、CPU110と関係するもののみを示している。
図7に示す例では、T0において、CPU110は、対象アドレス(アドレスCとする)についてキャッシュミスしたため、メインメモリ170にリードリクエストRR110を出力すると共に、スヌープ処理をする(SR1102、SR1103、SR1104)。CPU120〜140も、キャッシュミスし、スヌープリクエストに返答しないとする。
T1において、CPU110からのリードリクエストRR110は、キャッシュコヒーレンシ制御回路160によりメインメモリ170に発行される。
T2において、CPU120も、アドレスCについてキャッシュミスし、メインメモリ170にリードリクエストRR120を出力すると共に、スヌープ処理をする。これにより、T3において、CPU110は、スヌープリクエストSR1201を受信し、キャッシュコヒーレンシ制御回路160は、リードリクエストRR120を受信する。
CPU110がアドレスCのデータをメインメモリ170からリードする処理中であるので、T4において、キャッシュコヒーレンシ制御回路160は、CPU120に対してリトライ要求RTY120を出力する。
その後、アドレスCについてキャッシュミスしたCPU130とCPU140も、キャッシュコヒーレンシ制御回路160からリトライ要求RTY130(T8)とRTY140(T12)をそれぞれ出される。
T14において、メインメモリ170は、キャッシュコヒーレンシ制御回路160を介してアドレスCのデータ(リードデータRD110)をCPU110に出力する。このデータは、キャッシュコヒーレンシ制御回路160によりCPU110に発行される(T15)。
T17において、CPU110は、リードデータRD110を受信し、それをキャッシュ112に登録する。
ここで、リトライを行うCPUの数が3つであり、閾値の2を超えたとして、キャッシュコヒーレンシ制御回路160は、CPU120、CPU130、CPU140に対して、ペンディング指示PD120、ペンディング指示PD130、ペンシング指示PD140をそれぞれ発行する(T17)。
これにより、CPU120〜140は、T17〜T18間にリードに関連するリクエストの発行を一時停止する。そのため、CPU110は、T17〜T19間に、再度アドレスCについてリードを行うと、キャッシュヒットする。
CPU120は、T5で受信したリトライ要求RTY120に応じて、T18でリクエストを再開し、アドレスCについてリードリクエストRR120とスヌープリクエストを発行する。このとき、CPU110は、キャッシュヒットするため、当該データ(RD110)をリードデータRD120AとしてCPU120に出力する(T20)。
T21において、CPU120は、CPU110からのリードデータRD120Aを受信すると、それをキャッシュ122に登録する。
なお、T22において、リードリクエストRR120に応じてメインメモリ170からもリードデータRD120BがCPU120に出力されるが、CPU120のキャッシュに既に最新のデータが登録されているため、CPU120は、リードデータ120Bを破棄する。
図7のタイミングチャートから分かるように、CPU120がCPU110から受信したCPU120Aに対して更新をし、CPU110内の当該キャッシュラインが無効になったとしても、CPU110は、T17においてアドレスCのデータをキャッシュ112に登録した後、他のCPUのリクエスト停止期間が終わるまで、アドレスCへのアクセスは、キャッシュヒットすることができ、短レイテンシのアクセスを実現可能である。
マルチプロセッサシステム100は、マルチプロセッサシステム80の具体例であり、マルチプロセッサシステム80について説明した効果を得ることができる。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、マルチプロセッサシステム80およびマルチプロセッサシステム100において、メインメモリは1つしかないが、本発明にかかるキャッシュコヒーレンシ制御技術は、複数のメインメモリを有するマルチプロセッサシステムに適用できる共に、適用によりシステムのキャッシュコヒーレンシを保証すると共に、処理効率を向上させることができる。
また、上記説明において、各プロセッサおよびメインメモリが共有バスを介して接続されたマルチプロセッサシステムを例としているが、本発明にかかる技術は、複数のプロセッサがメインメモリを共有するいかなるマルチプロセッサシステムにも適用することができると共に、適用することによりその効果を発揮することができる。例えば、図8に示すように、複数のプロセッサとメインメモリがネットワークを介して接続されたマルチプロセッサシステムにも本発明の技術を適用することができる。
本発明の技術の原理を説明するためのマルチプロセッサシステムの模式図である。 本発明の技術を適用するシステム例を説明するための図である(その1)。 本発明の技術を適用するシステム例を説明するための図である(その2)。 本発明の実施例にかかるマルチプロセッサシステムを示す図である。 図4に示すマルチプロセッサにおけるキャッシュコヒーレンシ制御回路を示す図である。 図6に示すキャッシュコヒーレンシ制御回路における排他制御管理テーブルを示す図である。 図4に示すマルチプロセッサシステムのタイミングチャートの例である。 本発明の技術を適用可能な他のマルチプロセッサシステムの例を示す図である。 通常のマルチプロセッサシステムの例を示す図である。 図9に示すマルチプロセッサシステムに特許文献1の手法を適用した場合のタイミングチャートの例である。
符号の説明
1 マルチプロセッサシステム 10 CPU
12 キャッシュ 20 CPU
22 キャッシュ 30 CPU
32 キャッシュ 40 CPU
42 キャッシュ 50 共有バス
70 メインメモリ 80 マルチプロセッサシステム
81 CPU 81A キャッシュ
81B リクエスト発行部 81C リクエスト制御部
82 CPU 82A キャッシュ
82B リクエスト発行部 82C リクエスト制御部
83 CPU 83A キャッシュ
83B リクエスト発行部 83C リクエスト制御部
84 CPU 84A キャッシュ
84B リクエスト発行部 84C リクエスト制御部
85 共有バス 86 メインメモリ
90 キャッシュコヒーレンシ制御装置 92 リード管理部
94 キャッシュラインアドレス情報保持部 96 ペンディング指示部
100 マルチプロセッサシステム 110 CPU
112 キャッシュ 120 CPU
122 キャッシュ 130 CPU
132 キャッシュ 140 CPU
142 キャッシュ 150 共有バス
160 キャッシュコヒーレンシ制御回路 161 リクエスト受信回路
162 リクエスト送信回路 163 リトライ送信回路
164 ペンディング指示生成回路 165 リプライ受信回路
166 リプライ送信回路 170 メインメモリ
200 排他制御管理テーブル 201 判別ビット
202 キャッシュラインアドレス情報 203 アドレス比較回路
204 無効エントリ判断回路 205 一致エントリ判断回路
211 エントリ判断回路 212 リクエスト元CPU判断回路
213 リトライ検出フラグ 214 リトライ数カウンタ

Claims (20)

  1. ライトバック型キャッシュが実装された複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおけるキャッシュコヒーレンシ制御装置であって、
    前記複数のプロセッサのうちのいずれかのプロセッサからメインメモリに対するリードリクエストを受信した際に、該リードリクエストにより要求されるキャッシュラインアドレスのデータに対して他のプロセッサによりリードが実行されていないことを条件に、該リードリクエストに要求されたリードを許可するリード管理部と、
    前記複数のプロセッサのうちのいずれかのプロセッサによりメインメモリからデータのリードが実行されている際に、前記データが前記プロセッサに出力されるまで該データのキャッシュラインアドレスを保持して前記リード管理部に供するキャッシュラインアドレス情報保持部と、
    前記キャッシュラインアドレス情報保持部に保持されたキャッシュラインアドレスのデータが当該プロセッサへ出力されることに同期して、データのリードに関連するリクエストの発行を一時停止させるペンディング指示を前記プロセッサ以外のプロセッサに行うペンディング指示部とを備えることを特徴とするキャッシュコヒーレンシ制御装置。
  2. データのリードに関連するリクエストは、メインメモリへのリードリクエストと他のプロセッサへのスヌープリクエストを含むことを特徴とする請求項1に記載のキャッシュコヒーレンシ制御装置。
  3. 前記ペンディング指示部は、前記キャッシュラインアドレス情報保持部に保持されたキャッシュラインアドレスについてリードのリトライを行うプロセッサがあるときに前記ペンディング指示を行うことを特徴とする請求項1または2に記載のキャッシュコヒーレンシ制御装置。
  4. 前記リトライを行うプロセッサの数をカウントするリトライ数カウンタをさらに備え、
    前記ペンディング指示部は、前記リトライ数カウンタのカウント値が所定の閾値を超えたことを条件に前記ペンディング指示を行うことを特徴とする請求項3に記載のキャッシュコヒーレンシ制御装置。
  5. 前記ペンディング指示部は、前記リトライを行うプロセッサに対して前記ペンディング指示を行うことを特徴とする請求項3または4に記載のキャッシュコヒーレンシ制御装置。
  6. 前記キャッシュラインアドレス情報保持部が保持する前記キャッシュラインアドレスについてメインメモリに対するリードリクエストを受信したとき、リクエスト元のプロセッサに対して該リードのリトライを指示するリトライ指示部をさらに備えることを特徴とする請求項1から5のいずれか1項に記載のキャッシュコヒーレンシ制御装置。
  7. 前記ペンディング指示部は、前記キャッシュラインアドレスが含まれるペンディング指示をし、該キャッシュラインアドレスのデータのリードに関連するリクエストの発行を一時停止させることを特徴とする請求項1から6のいずれか1項に記載のキャッシュコヒーレンシ制御装置。
  8. 複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおける前記プロセッサであって、
    ライトバック型キャッシュと、
    キャッシュミスしたときに対象データのリードに関連するリクエストを発行するリクエスト発行部と、
    リードに関連するリクエストの発行の一時停止を要求するペンディング指示を受信した際に、前記リクエスト発行部がリードに関連するリクエストの発行を所定期間停止するように制御を行うリクエスト制御部とを備えることを特徴とするプロセッサ。
  9. リードに関連するリクエストは、メインメモリへのリードリクエストと他のプロセッサへのスヌープリクエストを含むことを特徴とする請求項8に記載のプロセッサ。
  10. 前記リクエスト発行部は、前記メインメモリへのリードリクエストが拒否されたときに、該リードのリトライを行い、
    前記リクエスト制御部は、前記リトライ中に前記ペンディング指示を受信した際に前記制御を行うことを特徴とする請求項8または9に記載のプロセッサ。
  11. 前記ペンディング指示は、リードに関連するリクエストの発行の一時停止が要求されるキャッシュラインアドレスが含まれており、
    前記リクエスト制御部は、該キャッシュラインアドレスに対するリードに関連するリクエストの発行について前記制御を行うことを特徴とする請求項8から10のいずれか1項に記載のプロセッサ。
  12. ライトバック型キャッシュが実装された複数のプロセッサがメインメモリを共有するマルチプロセッサシステムにおけるキャッシュコヒーレンシ制御方法であって、
    前記複数のプロセッサのうちのいずれかのプロセッサによりメインメモリからデータのリードが実行されている際に、前記データが前記プロセッサに出力されるまで該データのキャッシュラインアドレスを保持し、
    前記複数のプロセッサのうちのいずれかのプロセッサからメインメモリに対するリードリクエストを受信した際に、該リードリクエストにより要求されるキャッシュラインアドレスが保持されていないことを条件に、該リードリクエストに要求されたリードを許可し、
    保持されたキャッシュラインアドレスのデータが当該プロセッサへ出力されることに同期して、データのリードに関連するリクエストの発行を一時停止させるペンディング指示を前記プロセッサ以外のプロセッサに行うことを特徴とするキャッシュコヒーレンシ制御方法。
  13. データのリードに関連するリクエストは、メインメモリへのリードリクエストと他のプロセッサへのスヌープリクエストを含むことを特徴とする請求項12に記載のキャッシュコヒーレンシ制御方法。
  14. 保持中の前記キャッシュラインアドレスについてリードのリトライを行うプロセッサがあるときに前記ペンディング指示を行うことを特徴とする請求項12または13に記載のキャッシュコヒーレンシ制御方法。
  15. 前記リトライを行うプロセッサの数をリトライ数としてカウントし、
    前記リトライ数が所定の閾値を超えたことを条件に前記ペンディング指示を行うことを特徴とする請求項14に記載のキャッシュコヒーレンシ制御方法。
  16. 前記リトライを行うプロセッサに対して前記ペンディング指示を行うことを特徴とする請求項14または15に記載のキャッシュコヒーレンシ制御方法。
  17. 保持中の前記キャッシュラインアドレスについてメインメモリに対するリードリクエストを受信したとき、リクエスト元のプロセッサに対して該リードのリトライを指示するリトライ指示をさらに行うことを特徴とする請求項12から16のいずれか1項に記載のキャッシュコヒーレンシ制御方法。
  18. 前記キャッシュラインアドレスが含まれる前記ペンディング指示を行い、該キャッシュラインアドレスのデータのリードに関連するリクエストの発行を一時停止させることを特徴とする請求項12から17のいずれか1項に記載のキャッシュコヒーレンシ制御方法。
  19. ライトバック型キャッシュが実装された複数のプロセッサと、
    前記複数のプロセッサにより共有されるメインメモリと、
    前記複数のプロセッサのキャッシュコヒーレンシを制御するキャッシュコヒーレンシ制御装置とを備え、
    前記キャッシュコヒーレンシ制御装置は、
    前記複数のプロセッサのうちのいずれかのプロセッサからメインメモリに対するリードリクエストを受信した際に、該リードリクエストにより要求されるキャッシュラインアドレスのデータに対して他のプロセッサによりリードが実行されていないことを条件に、該リードリクエストに要求されたリードを許可するリード管理部と、
    前記複数のプロセッサのうちのいずれかのプロセッサによりメインメモリからデータのリードが実行されている際に、前記データが前記プロセッサに出力されるまで該データのキャッシュラインアドレスを保持して前記リード管理部に供するキャッシュラインアドレス情報保持部と、
    前記キャッシュラインアドレス情報保持部に保持されたキャッシュラインアドレスのデータが当該プロセッサへ出力されることに同期して、データのリードに関連するリクエストの発行を一時停止させるペンディング指示を前記プロセッサ以外のプロセッサに行うペンディング指示部とを有し、
    前記複数のプロセッサは、前記ペンディング指示を受信した際に、データのリードに関連するリクエストの発行を所定期間停止することを特徴とする情報処理装置。
  20. データのリードに関連するリクエストは、メインメモリへのリードリクエストと他のプロセッサへのスヌープリクエストを含むことを特徴とする請求項19に記載の情報処理装置。
JP2008015828A 2008-01-28 2008-01-28 キャッシュコヒーレンシ制御方法 Active JP4474570B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008015828A JP4474570B2 (ja) 2008-01-28 2008-01-28 キャッシュコヒーレンシ制御方法
US12/314,492 US8397031B2 (en) 2008-01-28 2008-12-11 Apparatus, processor and method of cache coherency control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008015828A JP4474570B2 (ja) 2008-01-28 2008-01-28 キャッシュコヒーレンシ制御方法

Publications (2)

Publication Number Publication Date
JP2009176179A JP2009176179A (ja) 2009-08-06
JP4474570B2 true JP4474570B2 (ja) 2010-06-09

Family

ID=40900414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008015828A Active JP4474570B2 (ja) 2008-01-28 2008-01-28 キャッシュコヒーレンシ制御方法

Country Status (2)

Country Link
US (1) US8397031B2 (ja)
JP (1) JP4474570B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558119B2 (en) * 2010-06-23 2017-01-31 International Business Machines Corporation Main memory operations in a symmetric multiprocessing computer
US9015415B2 (en) * 2010-09-24 2015-04-21 Intel Corporation Multi-processor computing system having fast processor response to cache agent request capacity limit warning
GB2484088B (en) 2010-09-28 2019-08-07 Advanced Risc Mach Ltd Coherency control with writeback ordering
WO2012077400A1 (ja) 2010-12-09 2012-06-14 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチコアシステム、及びそのコアのデータ読み出し方法
WO2013084314A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN103150267B (zh) * 2013-02-21 2017-02-08 郑州云海信息技术有限公司 一种多控制器间的缓存同步方法
US10229043B2 (en) 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9710381B2 (en) * 2014-06-18 2017-07-18 International Business Machines Corporation Method and apparatus for cache memory data processing
JP6432450B2 (ja) * 2015-06-04 2018-12-05 富士通株式会社 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
US9703711B2 (en) * 2015-08-19 2017-07-11 International Business Machines Corporation Managing cache coherence for memory caches
US10474601B2 (en) * 2017-02-06 2019-11-12 Oracle International Corporation Distributed fairness protocol for interconnect networks
US10621103B2 (en) * 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2820752B2 (ja) 1990-01-19 1998-11-05 日本電信電話株式会社 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法
US5487022A (en) * 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5742831A (en) * 1994-06-30 1998-04-21 Intel Corporation Methods and apparatus for maintaining cache coherency during copendency of load and store operations
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
JP3676934B2 (ja) * 1998-12-15 2005-07-27 株式会社日立製作所 プロセッサおよびマルチプロセッサシステム
US6557084B2 (en) * 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US6901485B2 (en) * 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
JP2003150073A (ja) 2001-08-27 2003-05-21 Omron Corp 画像表示装置及びフロントライト
JP3714235B2 (ja) 2001-11-12 2005-11-09 株式会社日立製作所 マルチプロセッサシステム
JP2003150444A (ja) 2001-11-19 2003-05-23 Fujitsu Ltd キャッシュメモリシステム
AU2003286131A1 (en) * 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US7543116B2 (en) * 2006-01-30 2009-06-02 International Business Machines Corporation Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
EP1988465B1 (en) * 2006-02-24 2011-11-23 Fujitsu Limited Processor, and cache control method
US7917700B2 (en) * 2007-10-25 2011-03-29 International Business Machines Corporation Method and cache control circuit for replacing cache lines using alternate PLRU algorithm and victim cache coherency state

Also Published As

Publication number Publication date
US8397031B2 (en) 2013-03-12
JP2009176179A (ja) 2009-08-06
US20090193232A1 (en) 2009-07-30

Similar Documents

Publication Publication Date Title
JP4474570B2 (ja) キャッシュコヒーレンシ制御方法
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US7360031B2 (en) Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
JP4119380B2 (ja) マルチプロセッサシステム
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US20070150665A1 (en) Propagating data using mirrored lock caches
US10949292B1 (en) Memory interface having data signal path and tag signal path
US7912998B2 (en) DMA access systems and methods
JP5163220B2 (ja) キャッシュ制御装置、情報処理装置
US10970213B2 (en) Selective disabling of hardware-based cache coherency and enforcement of software-based cache coherency
JP3550092B2 (ja) キャッシュ装置及び制御方法
US10775870B2 (en) System and method for maintaining cache coherency
CN110083548B (zh) 数据处理方法及相关网元、设备、系统
JP4335298B2 (ja) スヌープ制御方法および情報処理装置
JP4295815B2 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法
KR100900012B1 (ko) 정보 처리 시스템, 정보 처리 기판, 및 캐시 태그 및스누프 태그의 갱신 방법
EP3332329B1 (en) Device and method for prefetching content to a cache memory
JPH03230238A (ja) キャッシュメモリ制御方式
US9009412B2 (en) Information processing apparatus and control method of information processing apparatus
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
JP7238262B2 (ja) 計算機、半導体装置、及び制御方法
US11182294B2 (en) Apparatus and method for providing an atomic set of data accesses
JP6613874B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100209

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100216

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4474570

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350