JP5019222B2 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP5019222B2
JP5019222B2 JP2007293830A JP2007293830A JP5019222B2 JP 5019222 B2 JP5019222 B2 JP 5019222B2 JP 2007293830 A JP2007293830 A JP 2007293830A JP 2007293830 A JP2007293830 A JP 2007293830A JP 5019222 B2 JP5019222 B2 JP 5019222B2
Authority
JP
Japan
Prior art keywords
invalidation
control unit
data
cache memory
swap
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.)
Expired - Fee Related
Application number
JP2007293830A
Other languages
English (en)
Other versions
JP2009122787A (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 JP2007293830A priority Critical patent/JP5019222B2/ja
Publication of JP2009122787A publication Critical patent/JP2009122787A/ja
Application granted granted Critical
Publication of JP5019222B2 publication Critical patent/JP5019222B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、マルチプロセッサシステムにかかり、特に、共有メモリ型のマルチプロセッサシステムに関する。
共有メモリ型マルチプロセッサシステムは、それぞれキャッシュメモリを有する複数個のプロセッサを備えている。そして、各プロセッサ間のコヒーレンシを保障するためのコヒーレンシ制御回路を備えている。さらに、このコヒーレンシ制御回路は、各プロセッサのキャッシュメモリに格納されたデータのアドレス情報を管理する機能、つまり、各プロセッサのキャッシュ保有状態を保持するディレクトリやコピーキャッシュ等を備えている。
そして、上記ディレクトリやコピーキャッシュは、複数ウェイのセットアソシアティブ方式やフルアソシアティブ方式といった、1つの命令に対して複数のスワップ候補が存在する構造である。ここで、スワップとは、セットアソシアティブ方式やフルアソシアティブ方式を採用するディレクトリあるいはコピーキャッシュにおいて生じる処理である。例えば、ディレクトリ、コピーキャッシュに対して新たなアドレス情報を登録する必要が生じたが、これを格納する領域がディレクトリ、コピーキャッシュに存在しない場合に、ディレクトリ、コピーキャッシュに既に登録されているアドレス情報のいずれかを排除し、新たなアドレス情報を登録するための空き領域を生成する。この既に登録されている情報を排除する処理をスワップと呼ぶ。
そして、複数ウェイのセットアソシアティブ方式や、フルアソシアティブ方式等のディレクトリ、コピーキャッシュでは、スワップ対象とするアドレス情報の数は複数個あることになるが、この複数個の中からどのアドレス情報をスワップ対象とするかを選択する手段としては、ランダム方式やラウンドロビン方式、LRU方式などがある。なお、複数のスワップ候補が存在する構造とは、nウェイセットアソシアティブ方式ではnが複数である構造を指し、フルアソシアティブ方式では複数のキャッシュラインを管理できる構造であることを示す。そして、スワップ時には、ディレクトリからスワップしたアドレスのデータを保有していたプロセッサについても、コヒーレンシを保つために、そのデータを無効化する必要が生じる。
ここで、具体例として、nウェイセットアソシアティブ方式のディレクトリで、ディレクトリの同一エントリのnレベル全てに空きがなくなった状態を考える。このときに、そのエントリで管理されるべきアドレスを持った命令がプロセッサから発行され、そのアドレスがディレクトリに管理されていなかった場合には、そのアドレスをディレクトリに登録するために、ディレクトリの同一エントリからスワップするレベルを選択してスワップを行う必要がある。このスワップ時に、コヒーレンシ制御回路では、選択したレベルで管理していたアドレスのデータをキャッシュメモリ内に持つプロセッサに対して、キャッシュ無効化命令を発行する。そして、プロセッサのキャッシュメモリのデータを無効化することによってコヒーレンシを保つ。
特開平7−281957号公報 特開2006−330948号公報
しかしながら、プロセッサが無効化したアドレスのデータを使っていた場合は、キャッシュの無効化によって必要なデータがキャッシュメモリから失われたことになる。従って、その後、プロセッサがそのアドレスのデータを使う際にキャッシュメモリにアクセスすると、キャッシュミスが発生する。すると、プロセッサはデータを主メモリに取りに行って再びキャッシュメモリに格納しなければならず、プロセッサ処理が遅くなる場合が生じる。その結果、上述したスワップによるキャッシュミスは、システム性能の向上のためには、減らす必要がある。
ここで、スワップ時のレベル選択方法には、ランダムアクセス法や、ラウンドロビン法、LRU(Leas Recently Used)法などがある。ところが、コヒーレンシ制御回路では、スワップ時におけるプロセッサのデータの使用状況はわからない。つまり、スワップレベルの選択はプロセッサのデータの使用状況とは無関係に行われている。このため、どの選択方法を使用しても、スワップによるキャッシュミスの発生は避けられない。例えば、LRU法は最も更新されなかったレベルを選択する方式で、ヒット率を高める方法として使用されている。そして、LRU法を使用したコヒーレンシ制御回路の制御においては、プロセッサがメモリにアクセスした時にディレクトリを更新し、スワップは最も長い間更新されなかったディレクトリのレベルを選択する。しかし、プロセッサがメモリのデータをキャッシュメモリに格納した後、そのデータをプロセッサ内で使用する期間はアドレスによって異なるため、メモリへのアクセス順序とプロセッサでのデータの使用状況とが一致するとは限らない。このため、LRU法に従ってコヒーレンシ制御部内のディレクトリ等で最も長い間更新されなかったレベルをスワップ対象に選択しても、プロセッサではデータを使用している場合があるため、プロセッサではスワップ直後にキャッシュミスが発生することがある。
ここで、特許文献1では、プロセッサ内のキャッシュメモリに対して、プロセッサが発行するアクセス履歴情報の更新を抑止する命令に従ってLRUの更新を行わないことで、使用中のキャッシュメモリの追い出しを抑止することを実現している。ところが、コヒーレンシ制御回路のスワップによるキャッシュ無効化命令への対処法は触れられていない。
また、特許文献2では、スワップによるキャッシュ掃き出し命令に関して、レベル選択を工夫することで掃き出し命令数を減らすことを実現している。但し、プロセッサのデータの使用状況は分からないため、プロセッサが使用中のデータに対しても掃き出し命令は発行される可能性がある。その結果、上述同様に、スワップ処理によってプロセッサにてキャッシュミスが発生する場合が生じ、当該プロセッサに処理遅延が生じる、という問題があった。
このため、本発明の目的は、上述した課題である、ディレクトリのスワップに起因したプロセッサのキャッシュミスを抑制し、処理遅延を軽減する、ことにある。
そこで、本発明の一形態であるマルチプロセッサシステムは、
それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、プロセッサと主メモリとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部と、を備えると共に、
コヒーレンシ制御部は、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリと、当該ディレクトリ内のアドレス情報を掃き出す際にこのアドレス情報に対応するキャッシュメモリ内のデータの無効化をプロセッサに要求するスワップ制御部と、を備え、
プロセッサは、スワップ制御部から無効化を要求されたアドレス情報に対応するキャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知をスワップ制御部に対して行う無効化判定部を備えた、
という構成を採る。
本発明は、以上のように構成されるため、これによると、プロセッサにてスワップに起因したキャッシュミスの発生を抑制することができ、処理遅延を軽減することができる。
本発明は、共有メモリ型のマルチプロセッサシステムにおいて、コヒーレンシ制御回路内にディレクトリを持ち、スワップが発生し得るシステムにおいて適用可能な構成となっている。
そして、本発明では、コヒーレンシ制御回路が、スワップするアドレスのデータを保持しているプロセッサに当該アドレスのデータをキャッシュメモリから無効化するように命令を発行したとき、プロセッサがそのアドレスのキャッシュメモリ内のデータの無効化を拒否してリトライ信号を返信することを可能としている。そして、リトライを受けたコヒーレンシ制御回路は、ディレクトリやコピーキャッシュの別のアドレスをスワップ対象として選択しなおして、そのアドレスをキャッシングしているプロセッサに対してキャッシュ無効化命令を再び発行することを可能としている。
例えば、本発明の一形態であるマルチプロセッサシステムは、
それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、プロセッサと主メモリとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部と、を備えると共に、
コヒーレンシ制御部は、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリと、当該ディレクトリ内のアドレス情報を掃き出す際にこのアドレス情報に対応するキャッシュメモリ内のデータの無効化をプロセッサに要求するスワップ制御部と、を備え、
プロセッサは、スワップ制御部から無効化を要求されたアドレス情報に対応するキャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知をスワップ制御部に対して行う無効化判定部を備えた、
という構成を採る。
上記発明によると、まず、コヒーレンシ制御部は、ディレクトリ内のアドレス情報をスワップする(掃き出す)際に、当該スワップするアドレス情報に対応するキャッシュメモリ内のデータの無効化要求を、プロセッサに対して行う。これを受けたプロセッサは、無効化要求を受けたアドレス情報に対応するキャッシュメモリ内のデータの無効化を行うか否かを判定する。そして、判定結果に応じて、無効化を行う、あるいは、無効化を行わずに、その判定結果に応じた通知をスワップ制御部に対して行う。従って、プロセッサは、必ずしもキャッシュメモリ内のデータの無効化を行う必要は無く、無効化によって後にキャッシュミスが生じることを抑制することができる。また、無効化を行ったか否かをスワップ制御部に通知するため、スワップ対象のアドレス情報を変更するなどの対応を取ることができる。従って、コヒーレンシ制御部による処理の停滞を抑制でき、その結果、プロセッサによる処理遅延を軽減することができる。
また、上記マルチプロセッサシステムでは、上述無効化判定部は、スワップ制御部から無効化を要求されたキャッシュメモリに格納されたデータの無効化を、当該データのプロセッサにおける使用状況に基づいて判定する、という構成を採る。例えば、無効化判定部は、予め設定された基準と比較して、あるいは、他のデータと比較して、使用頻度が高いデータを無効化しないと判定する、という構成を採る。
これにより、プロセッサは、無効化を要求されたデータであっても、現在使用していたり、あるいは、使用頻度が高いデータは、無効化しないと判定する。従って、後に処理される可能性が高いデータを無効化することを抑制でき、キャッシュミスが生じることを有効に抑制することができる。その結果、プロセッサによる処理遅延をより軽減することができる。
また、上記マルチプロセッサシステムでは、上述した無効化判定部は、スワップ制御部からの無効化要求の内容に応じて、キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、という構成を採る。例えば、無効化判定部は、スワップ制御部からの無効化要求が強制的な無効化要求である場合に、キャッシュメモリに格納されたデータを無効化すると判定する、という構成を採る。
これにより、スワップ制御部から強制的な無効化を要求された場合など、無効化要求の内容に応じて、無効化判定部がデータを無効化すると判定する。その結果、スワップ対象となったアドレス情報に対応するキャッシュメモリ内のデータを確実に無効化でき、コヒーレンシ制御部における処理の停滞を抑制できる。その結果、プロセッサの処理遅延を抑制できる。
また、上記マルチプロセッサシステムでは、上述したスワップ制御部は、プロセッサから無効化を行っていない通知を受けた場合に、ディレクトリ内から掃き出すアドレス情報を変更し、当該変更したアドレス情報に対応するキャッシュメモリ内のデータの無効化要求をプロセッサに対して行う、という構成を採る。
これにより、プロセッサから無効化を行わない旨の通知を受けたスワップ制御部は、ディレクトリ内のスワップ対象となるアドレス情報を変更する。そして、この変更したアドレス情報に対するキャッシュメモリ内のデータの無効化を、再度プロセッサに要求する。その結果、プロセッサが無効化を行わないと判定した同一のデータに対する無効化要求を再発行することを抑制でき、コヒーレンシ制御部による処理の停滞を抑制できる。その結果、プロセッサによる処理遅延を軽減することができる。
また、上記マルチプロセッサシステムでは、上述したスワップ制御部は、同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するようプロセッサに対する要求を行う、という構成を採る。例えば、スワップ制御部は、カウントした無効化要求回数が予め設定された閾値を超えた場合に強制的に無効化するようプロセッサに対する要求を行う、という構成を採る。なお、上記閾値は、設定変更可能な値である。
これにより、プロセッサによって所定回数無効化が行われなかったデータに対して、強制的な無効化要求を行う。すると、プロセッサの無効化判定部は、強制的に無効化要求されたデータを、当該データの処理状況に関わらず無効化すると判定し、無効化する。その結果、コヒーレンシ制御部における処理の停滞を抑制でき、プロセッサの処理遅延を抑制できる。
また、本発明の他の形態であるキャッシュメモリを備えたプロセッサは、キャッシュメモリを備えた他のプロセッサと共有する主メモリと複数のプロセッサとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部から、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報の掃き出しの際に当該アドレス情報に対応するデータの無効化の要求を受け付けて、当該アドレス情報に対応するキャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知をスワップ制御部に対して行う無効化判定部を備えた、という構成を採る。
そして、上記プロセッサでは、上述した無効化判定部は、スワップ制御部から無効化を要求されたキャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、という構成を採る。また、上記無効化判定部は、スワップ制御部からの無効化要求の内容に応じて、キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、という構成を採る。
また、本発明の他の形態であるプログラムは、キャッシュメモリを備えたプロセッサに、キャッシュメモリを備えた他のプロセッサと共有する主メモリと複数のプロセッサとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部から、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報の掃き出しの際に当該アドレス情報に対応するデータの無効化の要求を受け付けて、当該アドレス情報に対応するキャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知をスワップ制御部に対して行う無効化判定部、を実現させる、という構成を採る。
そして、上記プログラムでは、上述した無効化判定部は、スワップ制御部から無効化を要求されたキャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、という構成を採る。また、上記無効化判定部は、スワップ制御部からの無効化要求の内容に応じて、キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、という構成を採る。
また、本発明の他の形態であるコヒーレンシ制御装置は、それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、の間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御装置であって、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリと、当該ディレクトリ内のアドレス情報を掃き出す際にこのアドレス情報に対応する主メモリに格納されたデータの無効化をプロセッサに要求するスワップ制御部と、を備え、スワップ制御部は、プロセッサから無効化を要求したデータの無効化を行っていない通知を受けた場合に、ディレクトリ内から掃き出すアドレス情報を変更し、当該変更したアドレス情報に対応するキャッシュメモリ内のデータの無効化要求をプロセッサに対して行う、という構成を採る。そして、上記スワップ制御部は、同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するようプロセッサに対する要求を行う、という構成を採る。
また、本発明の他の形態であるプログラムは、それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、の間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御装置に、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報を掃き出す際に当該アドレス情報に対応する主メモリに格納されたデータの無効化をプロセッサに要求するスワップ制御部を実現させると共に、スワップ制御部は、プロセッサから無効化を要求したデータの無効化を行っていない通知を受けた場合に、ディレクトリ内から掃き出すアドレス情報を変更し、当該変更したアドレス情報に対応するキャッシュメモリ内のデータの無効化要求をプロセッサに対して行う、という構成を採る。そして、上記スワップ制御部は、同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するようプロセッサに対する要求を行う、という構成を採る。
また、本発明の他の形態であるスワップ方法は、それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、プロセッサと主メモリとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部と、を備えたマルチプロセッサシステムによるスワップ方法であって、キャッシュメモリに格納されたデータのアドレス情報を管理するコヒーレンシ制御部に装備されたディレクトリ内のアドレス情報を掃き出す際に当該アドレス情報に対応するキャッシュメモリ内のデータの無効化をプロセッサに要求する無効化要求工程と、スワップ制御部から無効化を要求されたアドレス情報に対応するキャッシュメモリに格納されたデータを無効化するか否か判定して当該判定結果に応じた通知をスワップ制御部に対して行う無効化判定工程と、を有する、という構成を採る。
そして、上記無効化判定工程は、スワップ制御部から無効化を要求されたキャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、という構成を採る。また、上記無効化判定工程は、スワップ制御部からの無効化要求の内容に応じて、キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、という構成を採る。また、上記無効化判定工程は、スワップ制御部からの無効化要求が強制的な無効化要求である場合に、キャッシュメモリに格納されたデータを無効化すると判定する、という構成を採る。
さらに、上記スワップ方法では、無効化判定工程にてプロセッサから無効化を行っていない通知を受けた場合に、ディレクトリ内から掃き出すアドレス情報を変更し、当該変更したアドレス情報に対応するキャッシュメモリ内のデータの無効化要求をプロセッサに対して行う再無効化要求工程を有する、という構成を採る。また、上記スワップ方法では、プロセッサへの同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するようプロセッサに対する要求を行う強制無効化要求工程を有する、という構成を採る。
また、本発明の他の形態は、キャッシュメモリを備えたプロセッサによるキャッシュ無効化方法であって、キャッシュメモリを備えた他のプロセッサと共有する主メモリと複数のプロセッサとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部から、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報の掃き出しの際に当該アドレス情報に対応するデータの無効化の要求を受け付けて、当該アドレス情報に対応するキャッシュメモリに格納されたデータを無効化するか否か判定する無効化判定工程と、この判定結果に応じた通知をスワップ制御部に対して行う無効化判定通知工程と、を有する、という構成を採る。
また、上記キャッシュ無効化方法では、上述した無効化判定工程は、スワップ制御部から無効化を要求されたキャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、という構成を採る。また、上記無効化判定工程は、スワップ制御部からの無効化要求の内容に応じて、キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、という構成を採る。
また、本発明の他の形態は、それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、の間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部によるスワップ方法であって、キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報を掃き出す際に当該アドレス情報に対応するデータの無効化をキャッシュメモリに要求する無効化要求工程と、プロセッサから無効化を要求したデータの無効化を行っていない通知を受けた場合にディレクトリ内から掃き出すアドレス情報を変更して当該変更したアドレス情報に対応するキャッシュメモリ内のデータの無効化要求をプロセッサに対して行う無効化変更要求工程と、を有する、という構成を採る。
そして、上記スワップ方法では、同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するようプロセッサに対する要求を行う強制無効化要求工程、を有する、という構成を採る。
上述した構成のプロセッサ、コヒーレンシ制御装置、プログラム、方法の発明であっても、上記マルチプロセッサシステムと同様に作用するため、上述した本発明の目的を達成することができる。
<実施形態1>
本発明の第1の実施形態を、図1乃至図10を参照して説明する。図1は、マルチプロセッサシステムの構成を示すブロック図である。図2は、スワップ制御部の構成を示すブロック図である。図3は、管理テーブルのデータ構造を示す図である。図4は、ディレクトリのデータ構造を示す図である。図5は、プロセッサの構成を示すブロック図である。図6乃至図10は、マルチプロセッサシステムの動作を示すフローチャートである。
[概要]
本実施形態では、コヒーレンシ制御回路にnウェイセットアソシアティブ方式のディレクトリを搭載したシステムを一例に挙げて説明する。そして、本システムでは、コヒーレンシ制御回路(図1の符号51,52)が、スワップ処理に応じて、プロセッサ(図1の符号21,22,23,24)に対する命令として、リトライすることが可能なキャッシュ無効化命令を発する構成を採る。これに応じて、プロセッサは、コヒーレンシ制御回路から受け取ったキャッシュ無効化命令を受けて、キャッシュメモリ(図1の符号31,33,35,37)のデータの無効化を行うか行わないかを判定する無効化判定機能(図1の32,34,36,38)を備えている。この無効化判定機能は、キャッシュメモリのデータを保持し続けたい場合にはリトライを、無効化が可能な場合にはデータや通常のリプライを、コヒーレンシ制御回路に送出する制御を行う。また、コヒーレンシ制御回路は、スワップ制御部(図1の符号62,64)の中にリトライ管理部(図2の符号131)を備えている。そして、コヒーレンシ制御回路は、プロセッサへのキャッシュ無効化命令のリプライ結果がリトライの場合は、別のレベルをスワップ対象としてディレクトリから選択して、プロセッサにキャッシュ無効化命令を再度発行する機能を持つ。
以上の機能により、プロセッサは、コヒーレンシ制御回路からキャッシュ無効化命令を受信しても、データの使用を継続したい場合にはキャッシュメモリのデータの無効化を拒否することができるため、キャッシュミスの低減につながる。
[構成]
図1に示すように、本実施形態におけるマルチプロセッサシステムは、コヒーレンシ制御回路51,52が相互に接続された(符号81)、2つのセル11,12から構成されている。例えば、一方のセル11は、キャッシュメモリ31,33を各々有するプロセッサ21,22と、プロセッサ21,22,23,24で共有可能なメモリ71(主メモリ)と、プロセッサ21,22やメモリ71と相互接続41,42,43されプロセッサ間のコヒーレンシを保証するための制御を行うコヒーレンシ制御回路51と、を備えている。また、他方のセル12も同様に、キャッシュメモリ35,37を各々有するプロセッサ23,24と、プロセッサ21,22,23,24で共有可能なメモリ72と、プロセッサ23,24やメモリ72と相互接続44,45,46されプロセッサ間のコヒーレンシを保証するための制御を行うコヒーレンシ制御回路52と、を備えている。以下、主に一方のセル11の構成について説明する。なお、他方のセル12もほぼ同一構造である。
上記コヒーレンシ制御回路51(コヒーレンシ制御装置、コヒーレンシ制御部)は、プロセッサ21,22,23,24がそれぞれ有するキャッシュメモリ31,33,35,37のうち、メモリ71に関するキャッシング情報を、キャッシュラインサイズのアドレス毎に保持するディレクトリ61と、当該ディレクトリ61のスワップ処理を行うためのスワップ制御部62と、を有する。そして、コヒーレンシ制御回路51は、他方のセル12のコヒーレンシ制御回路52と相互接続81することで、他方のセル12のプロセッサ23,24とメモリ72へのアクセスが可能である。
また、各コヒーレンシ制御回路51,52に設けられたディレクトリ61,63は、複数レベルからなるセットアソシアティブ方式を使用しているため、コヒーレンシ制御回路51,52は、ディレクトリ61またはディレクトリ63に空きがない場合は、スワップ処理(掃き出し処理)を行う必要がある。例えば、スワップ処理では、ディレクトリ61またはディレクトリ63からスワップするレベルを選択してスワップし、スワップしたレベルには新規登録を行う。そして、このスワップ処理の際には、コヒーレンシを保障するために、プロセッサ21,22,23,24のキャッシュメモリ31,33,35,37にあるスワップ対象と同一アドレスのデータの無効化を行う。なお、コヒーレンシ制御回路51,52の構成については、後述する。
また、本実施形態におけるプロセッサ21,22,23,24は、コヒーレンシ制御回路51,52からの無効化命令(無効化要求)に応じて無効化を行うか否かを判定し、無効化を実行あるいは実行せず、判定結果に応じた通知を返送する無効化判定機能32,34,36,38を備えている。ここで、プロセッサ21の詳細な構成を図5に示す。この図に示すように、本実施形態におけるプロセッサ21は、所定のプログラムが組み込まれることで実現される、上記無効化判定機能32を実現するための構成である、無効化命令受付部81と、無効化判定部82と、無効化処理部83と、リプライ部84と、を備えている。
上記無効化命令受付部81は、上述したコヒーレンシ制御回路51,52からキャッシュ無効化命令を受信する。そして、無効化判定部82は、無効化を命令されたアドレスに対応するキャッシュメモリ31内のデータの無効化を行うか否か、判定する。このとき、そのデータのプロセッサ21における使用状況に基づいて、キャッシュメモリ31から対象データを無効化するか、無効化しないか、判定する。例えば、LRU法を用いて、対象データを現在使用している場合や、予め設定された基準と比較して、あるいは、他のデータと比較して、使用頻度が高いデータを、無効化しないと判定する。但し、無効化判定部82は、無効化要求の内容に応じて、無効化を拒否せずに無効化を実行するよう判定も行う。例えば、コヒーレンシ制御回路51からの無効化命令が、リトライ不可能な無効化を強制する無効化命令である場合には、必ず無効化を行うよう判定する。そして、無効化を行うと判定した場合には、無効化処理部83に通知し、無効化を行わない場合には、リプライ部84に通知する。
そして、上記無効化処理部83は、無効化を行うと判定したアドレスのキャッシュメモリ内のデータを無効化し、リプライ部84に通知する。また、リプライ部84は、無効化判定部82による判定結果に応じた通知を、コヒーレンシ制御回路51のスワップ制御部62に行う。例えば、無効化を実行した場合には、その旨のリプライを行い、無効化を行わなかった場合には、リトライ信号を送信する。
次に、コヒーレンシ制御回路51の構成について、さらに詳述する。図2は、スワップ制御部62の詳細な構成を示すブロック図である。この図に示すように、スワップ制御部62は、所定のプログラムが組み込まれることによって実現される、スワップ管理部121と、スワップ生成部141と、リトライ管理部131と、閾値調整部101と、を備えている。
上記スワップ管理部121は、ディレクトリ61のスワップ対象として選択したレベルの情報を受け取ってから、該当するプロセッサ21,22,23,24に発行したキャッシュ無効化命令のリプライを受け取るまでの間、その情報を保持して管理する機能を有する。そして、受け取ったスワップレベル情報についてはスワップ生成部141にも送出する。また、スワップ管理部121は、キャッシュ無効化命令のリプライ結果とそのアドレスをリトライ管理部131に送出したり、リプライ結果がリトライの場合には、キャッシュ無効化命令の元となったスワップレベル情報からディレクトリ登録命令を作成し、ディレクトリ61に登録の指示を行う機能を追加する。このディレクトリ登録命令により、次のスワップレベルが選択される。
上記スワップ生成部141は、スワップ管理部121から受け取ったスワップレベル情報を元に、プロセッサ21,22,23,24へのキャッシュ無効化命令を作成して送出する機能である。このスワップ生成部141では、生成する命令に関し、通常はリトライ可能なキャッシュ無効化命令を生成する。但し、リトライ管理部131からリトライ不可命令を発行するように指示された場合は、リトライ不可能なキャッシュ無効化命令に変更する機能が追加される。
上記リトライ管理部131は、キャッシュ無効化命令がリトライされた場合に、そのセットアドレスにおいてリトライがあった回数をカウントするための管理テーブル132を持つ。そして、リトライ回数と閾値制御部101の値を比較して、リトライ不可能なキャッシュ無効化命令を発行する必要があるか否かを判定する。このとき、リトライ回数が閾値に到達した場合は、スワップ生成部141にリトライ不可能なキャッシュ無効化命令を生成するよう指示を行う機能を持つ。
上記閾値制御部101は、リトライ可能なキャッシュ無効化命令を発行出来る回数の閾値を決定する。これは、同じセットアドレスのキャッシュ無効化命令がリトライから開放されない状態に陥ることを防いだり、リトライの増大によりシステム上で処理する命令数が膨大になることを防ぐためである。なお、閾値制御部101では、閾値の設定変更を可能にしており、システムの構成に沿った閾値を設定することができる。
ここで、図3に、管理テーブル132の構成の一例を示す。管理テーブル132は、管理テーブル132のエントリが有効であるか否かを示すバリッド133と、ディレクトリ61,63のセットアドレス134と、そのセットアドレス134においてキャッシュ無効化命令のリトライが発生した回数を示すリトライカウンタ135と、で構成される。そして、キャッシュ無効化命令のリトライが最初に発生したときに、バリッド133とセットアドレス134を登録する。バリッド133が有効なセットアドレス134でリトライが発生した場合は、そのリトライカウンタ135をカウントアップする。また、バリッド133とリトライカウンタ135は、キャッシュ無効化命令が成功するとリセットする。
また、図4は、ディレクトリ61,63の構成の一例を示している。この図に示すように、ディレクトリ61,63は、メモリ71,72のプロセッサキャッシュラインサイズごとの情報を保持するnレベルのセットアソシアティブ方式をとる。セットアドレス202は、アドレスの一部のビットをディレクトリのエントリとして用いるが、そのエントリに相当するビットをセットアドレス202と呼び、セットアドレス202でディレクトリ61,63の索引や更新を行う。セットアドレス202を除くアドレスは、キーアドレス201としてディレクトリ61,63に保持する。ステータス情報203は当該アドレスのキャッシング状況を示す。空いているレベルとは、このステータス情報203がどのプロセッサからもキャッシングされていない値を示している場合を指す。エージェント情報204はキャッシングしているプロセッサの位置情報を示す。
[動作]
次に、上記構成のマルチプロセッサシステムにおけるスワップ時の動作を、図6乃至図10のフローチャートを参照して説明する。なお、図6は、コヒーレンシ制御回路51のディレクトリの制御に関する動作を示しており、図7乃至図9は、コヒーレンシ制御回路中のスワップ制御部の動作を示している。また、図10はプロセッサの動作を示している。
まず、図6は、プロセッサ21がディレクトリ61の登録および更新を伴う命令を発行し、その命令をコヒーレンシ制御回路51で受信してディレクトリ61に登録および更新するまでの動作を示している。また、図6は、スワップ制御部62がディレクトリ61への登録命令を発行してから、ディレクトリ61に登録するまでのコヒーレンシ制御回路51のディレクトリ周辺の動作を示している。
はじめに、プロセッサが発行した命令を受信したときの動作を説明する。コヒーレンシ制御回路51は、プロセッサ21が発行した命令を接続線41から受信すると、その命令のアドレス中のセットアドレス202でディレクトリ61を索引する(ステップS01)。そして、セットアドレス202が示すディレクトリ61の全レベルの内容を読みだし、読みだした全レベルのキーアドレス201の中から命令のキーアドレスと一致するレベルがあるかを調べる(ステップS02)。読みだしたキーアドレス201の中に命令のキーアドレスと一致するレベルが存在した場合は、一致したレベルのディレクトリ61のステータス情報203とエージェント情報204を更新して(ステップS03)、処理を終了する。
一方、キーアドレス201の一致するレベルがない場合は(ステップS02でNO)、読みだした全レベルのステータス情報203を調べて空きレベルを探す(ステップS04)。そして、空きレベルが存在する場合は(ステップS04でYES)、選択したディレクトリ61の空きレベルに、キーアドレス201、ステータス情報203、エージェント情報204を登録する(ステップS05)。このとき、命令がプロセッサ発行であるか、スワップ制御部62の発行であるかを確認し(ステップS07)、プロセッサ発行の場合は(ステップS07でYES)、ディレクトリ処理を終了する。
また、上記ステップS04で、ディレクトリに空きレベルが無い場合には(ステップS04でNO)、全レベルが使用中の場合でスワップが必要になるため、読み出した全レベルの情報を調べてスワップするレベルを選択する(ステップS06)。そして、選択したレベルのデータであるキーアドレス201とステータス情報203、エージェント情報204および索引に使用したセットアドレス202を、スワップ制御部62に送出する(ステップS08)。その後、スワップによって空いたディレクトリ61のレベルには、索引に使用した命令のキーアドレス201、ステータス情報203、エージェント情報204を登録して(ステップS10)、ディレクトリ61の索引および登録処理を終了する。なお、スワップレベルの選択については、例えばLRU法を使用する。また、その後は、図7に進む。
ここで、スワップ制御部62からディレクトリ登録命令を受信した場合の動作についてさらに説明する。図6の動作フローにおいて、スワップ中のアドレスはディレクトリ61には存在しないので、ステップS02では必ずアドレス一致しないことと、ステップS08ではプロセッサ発行命令ではないことを除けば、プロセッサ発行時の動作フローと同じであるため、ステップS07以降について説明する。ステップS07の確認の結果、スワップ制御部62が発行した命令である場合は(ステップS07でNO)、既にスワップ制御部62の管理テーブル132に登録済みであることを示すため、スワップ制御部62に管理テーブル132の解除指示を送信して(ステップS09)、ディレクトリ61の索引および登録処理を終了する。なお、上述したように、ステップS08でスワップレベル情報をスワップ制御部62に送った場合は、図7の動作に進み、ステップS09により管理テーブル132の解除指示を送った場合は図9の動作に進む。
続いて、図7のフローチャートを参照して説明する。図7は、例として、スワップ制御部62でスワップレベル情報を受け取ってから、プロセッサにキャッシュ無効化命令を発行するまでのスワップ制御部62の動作を示している。スワップ制御部62では、コヒーレンシ制御回路51のディレクトリ制御により受け取ったスワップレベル情報をスワップ管理部121に登録し(ステップS21)、その情報をスワップ生成部141に送信する。また、スワップ管理部121は、そのスワップレベル情報のセットアドレス202をリトライ管理部131に送出し、管理テーブル132のバリッド133が有効なエントリのセットアドレス134を調べて、スワップレベル情報のセットアドレス202が登録されているかを確認する(ステップS22)。この管理テーブル132に登録済みであるということは、同一セットアドレスのプロセッサへのキャッシュ無効化命令のリトライが先に発生していたことを示している。ステップS22で管理テーブル132にスワップレベル情報が登録されていない場合は、1回目のスワップを意味するので、スワップ生成部141では、キーアドレス201とセットアドレス202からアドレスを生成する。そして、ステータス情報203とエージェント情報204からキャッシングしているプロセッサを探して、そのプロセッサ例えばプロセッサ22に送出するリトライ可能なキャッシュ無効化命令を生成する(ステップS25)。生成した命令は接続線42を通してプロセッサ22に発行し(ステップS26、無効化要求工程)、キャッシュ無効化命令発行処理を終了する。なお、後述するように、一旦、無効化要求を出した後にプロセッサからリトライが返送された場合には、図6のステップS06で選択された異なるスワップレベルの無効化要求命令を、プロセッサに発行することが可能となる(再無効化要求工程)。
ここで、ステップS22で管理テーブル132にセットアドレス134が登録されていた場合は、そのエントリにあるリトライカウンタ135と閾値調整部101の閾値を比較する(ステップS23)。なお、閾値は構成や使用形態により設定が可変である。つまり、構成等に応じて、メーカー等が設定変更することが可能である。そして、リトライカウンタ135が閾値に到達していない場合は、管理テーブル132に未登録の場合と同様に、スワップ生成部141で、ステータス情報をみて、リトライ可能なキャッシュ無効化命令を生成して(ステップS25)、接続線42を通って対象のプロセッサに発行し(ステップS26)、キャッシュ無効化命令発行処理を終了する。一方、ステップS23でリトライカウンタ135が閾値に達していた場合は、リトライ管理部131からスワップ生成部141にリトライ不可能な命令を生成するように指示を送り、スワップ生成部141では、キーアドレス201とセットアドレス202からアドレスを生成して、ステータス情報203とエージェント情報204からキャッシングしているプロセッサを探す。そして、そのプロセッサ例えばプロセッサ23に送出するリトライ不可能なキャッシュ無効化命令を生成し(ステップS24)、生成した命令をプロセッサ23に発行して(ステップS26、強制無効化要求工程)、キャッシュ無効化命令発行処理を終了する。
スワップ制御部62からプロセッサ23にキャッシュ無効化命令を発行する場合は、コヒーレンシ制御回路51とプロセッサ23は異なるセル11,12に属するため、プロセッサ23への発行はセル間相互接続81を通ってコヒーレンシ制御回路52を経由して接続線44から発行する。なお、スワップ制御部62は、ステップS26のキャッシュ無効化命令の発行処理を終了するとリプライ待ちに入り、図8の動作に進む。また、キャッシュ無効化命令を受け取ったプロセッサは、図10の動作を行う。
次に、図8のフローチャートを参照して、キャッシュ無効化命令に対するリプライをプロセッサ22から受けとった後、スワップ処理を終了するまでのスワップ制御部62の動作を説明する。まず、スワップ制御部62は、キャッシュ無効化命令のリプライをプロセッサから接続線42を経由して受信する(ステップS31)。ここで、プロセッサ23が送信したリプライをスワップ制御部62で受信する場合は、接続線44を通ってコヒーレンシ制御回路52を経由して、セル間相互接続81からコヒーレンシ制御部51に到着する。
そして、スワップ制御部62でプロセッサ22からのリプライを受け取ると、プロセッサ22がキャッシュ無効化命令を実行したのか、リトライしたのかを確認する(ステップS32)。キャッシュ無効化命令を実行していた場合は(ステップS32でNO)、スワップ処理を完了出来ることを意味するので、そのセットアドレスが管理テーブル132に登録されているかを確認する(ステップS33)。このとき、未登録の場合は(ステップS33でNO)、スワップ管理部121で保持していた該当スワップ情報を解除して(ステップS40)、スワップ処理が終了する。ステップS33で管理テーブル132に登録されていた場合は(ステップS33でYES)、管理テーブル132の対象セットアドレス134が格納されたエントリのバリッド133とリトライカウンタ135をリセットして登録を解除し(ステップS34)、スワップ管理部121で保持していた該当スワップ情報を解除して(ステップS40)、一連のスワップ処理を終了する。
また、ステップS32で、プロセッサ22からのリプライがリトライだった場合は(ステップS32でYES)、そのセットアドレスが管理テーブル132に登録されているかを確認する(ステップS35)。そして、未登録の場合は(ステップS35でNO)、管理テーブル132からバリッド133が無いエントリを探して、そのエントリにバリッド133とセットアドレス134を登録(ステップS37)する。一方、登録済みの場合は(ステップS35でYES)、管理テーブル132の対象セットアドレス134と同一エントリにあるリトライカウンタ135の値をカウントアップする(ステップS36)。
そして、管理テーブル132への登録またはカウントアップを終えると、スワップ管理部121に保持していた対象スワップ情報をディレクトリ61に書き戻すために、スワップ情報をディレクトリ登録命令として作成して、コヒーレンシ制御回路51に送出し(ステップS38)、スワップ管理部121で保持していた該当スワップ情報を解除して(ステップS39)、リトライ処理を終了する。なお、ステップS39の終了後、ディレクトリ登録命令を受け取ったコヒーレンシ制御回路51のディレクトリ制御では、上述した図6の動作を行う。
続いて、図9を参照して、コヒーレンシ制御回路51のディレクトリ制御により管理テーブル132解除指示を受け取ったときのスワップ制御部62の動作を説明する。スワップ制御部62のリトライ管理部では、コヒーレンシ制御回路51から管理テーブル132の解除指示を受け取ると、受け取った解除指示のセットアドレスを管理テーブル132から探し、そのセットアドレス134が格納されたエントリのバリッド133とリトライカウンタ135をリセットして登録を解除し(ステップS51)、一連のスワップ処理を終了する。
次に、図10を参照して、コヒーレンシ制御回路51からキャッシュ無効化命令を受信したプロセッサ22の動作を説明する。プロセッサ22は、コヒーレンシ制御回路51からキャッシュ無効化命令を受信すると(ステップS61)、キャッシュメモリ33にキャッシュ無効化対象のアドレスが含まれているかを調べる(ステップS62)。アドレス不一致の場合は(ステップS62でNO)、処理が完了したことを示すリプライをコヒーレンシ制御回路51に送信して(ステップS67)、命令処理を終了する。
一方、アドレスが一致した場合は(ステップS62でYES)、無効化判定機能34で、受信したキャッシュ無効化命令がリトライ可能な命令か否かを確認する(ステップS63、無効化判定工程)。そして、リトライが不可能な命令の場合は(ステップS63でNO)、対象アドレスのキャッシュ無効化を実行する(ステップS66)。このとき、メモリ71に書き戻しが必要な場合は、メモリ71への書き込み命令を並行して実施し、キャッシュ無効化命令処理が完了したことを示すリプライをコヒーレンシ制御回路51に送信して(ステップS67)、処理を終了する。
また、ステップS63で、キャッシュ無効化命令がリトライ可能な場合は(ステップS63でYES)、キャッシュメモリ33内における対象アドレスのデータの使用優先度を確認する(ステップS64)。このとき、優先度が低い場合は(ステップS64でNO)、キャッシュの無効化を実行する(ステップS66)。このとき、必要に応じてメモリ71書き戻しを実施し、処理が完了したことを示すリプライをコヒーレンシ制御回路51に送信して(ステップS67)、処理を終了する。一方、ステップS64で、使用優先度が高い場合は(ステップS64でYES)、キャッシュ無効化制御を行わずにリトライを表すリプライを、コヒーレンシ制御回路51に送信する(ステップS65,S67)。そして、処理を終了する。
ここで、上記ステップS64におけるキャッシュメモリ33の使用優先度の判定には、LRU法等を使用する。なお、ステップS67によってリプライを受け取ったコヒーレンシ制御回路51は、上述した図8の動作を行う。
以上説明したように、スワップ処理の全体動作としては、まず、コヒーレンシ制御回路がプロセッサからの命令を受け付けると、図6の動作を実行する。そして、スワップを行う場合は、コヒーレンシ制御回路が続いて図7の動作を行い、スワップ対象のデータの無効化をプロセッサに要求する。そして、プロセッサが図10の動作を行い、無効化要求に応じて無効化を行う、あるいは、無効化を行わずに、リプライを送信する。そして、プロセッサからのリプライを受けて、コヒーレンシ制御回路は、図8の動作を行う。なお、コヒーレンシ制御回路は、リトライ時には、図8の後に図6に戻って、上述した図7,図10の順に動作を繰り返す。なお、最終的には、図8でリトライ無しの動作、もしくは、図6でディレクトリに空きレベルが生じて、図9の動作に至ってスワップのリトライ処理を終了する。
以上のように、本実施形態によると、コヒーレンシ制御回路にあるディレクトリをスワップする際、リトライ可能なキャッシュメモリの無効化命令を発行すると共に、プロセッサはキャッシュメモリに一致したアドレスがあっても、使用優先度が高い場合はキャッシュメモリを無効化しないでリトライすることが可能である。従って、ディレクトリのスワップに起因したプロセッサのキャッシュミスでの処理遅延を軽減することができる。また、スワップがリトライされた場合には、コヒーレンシ制御回路ではそのスワップを再発行するのではなく、代替として異なるレベルを探してスワップ処理を継続するため、コヒーレンシ制御回路での処理の停滞の発生を抑制できる。なお、上記では、複数セル構成について記述しているが、複数プロセッサを搭載し、共有メモリを持った1セルの構成であってもよい。
本発明は、共有メモリ型マルチプロセッサシステムにおいてコヒーレンシ制御回路内ディレクトリやコピーキャッシュを持ち、スワップが発生し得るシステムにおいて適用でき、産業上の利用可能性を有する。
マルチプロセッサシステムの構成を示すブロック図である。 スワップ制御部の構成を示すブロック図である。 管理テーブルのデータ構造を示す図である。 ディレクトリのデータ構造を示す図である。 プロセッサの構成を示すブロック図である。 マルチプロセッサシステムの動作を示すフローチャートである。 マルチプロセッサシステムの動作を示すフローチャートである。 マルチプロセッサシステムの動作を示すフローチャートである。 マルチプロセッサシステムの動作を示すフローチャートである。 マルチプロセッサシステムの動作を示すフローチャートである。
符号の説明
11,12 セル
21,22,23,24 プロセッサ
31,33,35,37 キャッシュメモリ
32,34,36,38 無効化判定機能
51,52 コヒーレンシ制御回路
61,63 ディレクトリ
62,64 スワップ制御部
71,72 メモリ
81 無効化命令受付部
82 無効化判定部
83 無効化処理部
84 リプライ部
101 閾値調整部
121 スワップ管理部
131 リトライ管理部
132 管理テーブル
141 スワップ生成部

Claims (18)

  1. それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部と、を備えると共に、
    前記コヒーレンシ制御部は、前記キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリと、当該ディレクトリ内のアドレス情報を掃き出す際にこのアドレス情報に対応する前記キャッシュメモリ内のデータの無効化を前記プロセッサに要求するスワップ制御部と、を備え、
    前記プロセッサは、前記スワップ制御部から無効化を要求されたアドレス情報に対応する前記キャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知を前記スワップ制御部に対して行う無効化判定部を備え、
    前記無効化判定部は、予め設定された基準と比較して、あるいは、他のデータと比較して、無効化を要求された前記アドレス情報に対応する前記キャッシュメモリに格納された前記データの使用頻度が高い場合に、前記データを無効化しないと判定すると共に、前記データを無効化しない通知を前記スワップ制御部に送信し、
    前記スワップ制御部は、前記プロセッサから前記データを無効化しない通知を受けた場合に、前記ディレクトリ内から掃き出すアドレス情報を変更し、当該変更したアドレス情報に対応する前記キャッシュメモリ内のデータの無効化要求を前記プロセッサに対して行う、
    ことを特徴とするマルチプロセッサシステム。
  2. 前記無効化判定部は、前記スワップ制御部から無効化を要求された前記キャッシュメモリに格納されたデータの無効化を、当該データの前記プロセッサにおける使用状況に基づいて判定する、
    ことを特徴とする請求項1記載のマルチプロセッサシステム。
  3. 前記無効化判定部は、前記スワップ制御部からの無効化要求の内容に応じて、前記キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、
    ことを特徴とする請求項又は記載のマルチプロセッサシステム。
  4. 前記無効化判定部は、前記スワップ制御部からの無効化要求が強制的な無効化要求である場合に、前記キャッシュメモリに格納されたデータを無効化すると判定する、
    ことを特徴とする請求項記載のマルチプロセッサシステム。
  5. 前記スワップ制御部は、同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するよう前記プロセッサに対する要求を行う、
    ことを特徴とする請求項又は記載のマルチプロセッサシステム。
  6. 前記スワップ制御部は、前記カウントした無効化要求回数が予め設定された閾値を超えた場合に強制的に無効化するよう前記プロセッサに対する要求を行う、
    ことを特徴とする請求項記載のマルチプロセッサシステム。
  7. 前記閾値は、設定変更可能な値である、
    ことを特徴とする請求項記載のマルチプロセッサシステム。
  8. キャッシュメモリを備えたプロセッサであって、
    キャッシュメモリを備えた他のプロセッサと共有する主メモリと複数のプロセッサとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部から、前記キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報の掃き出しの際に当該アドレス情報に対応するデータの無効化の要求を受け付けて、当該アドレス情報に対応する前記キャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知を前記コヒーレンシ制御部に対して行う無効化判定部を備え
    前記無効化判定部は、予め設定された基準と比較して、あるいは、他のデータと比較して、無効化を要求された前記アドレス情報に対応する前記キャッシュメモリに格納された前記データの使用頻度が高い場合に、前記データを無効化しないと判定すると共に、前記データを無効化しない通知を前記コヒーレンシ制御部に送信し、さらに、前記データを無効化しない通知を受け付けた前記コヒーレンシ制御部にて前記ディレクトリ内から掃き出すアドレス情報が変更され、前記コヒーレンシ制御部から送信された、変更された前記アドレス情報に対応する前記キャッシュメモリ内のデータの無効化の要求を受け付ける、
    ことを特徴とするプロセッサ。
  9. 前記無効化判定部は、前記スワップ制御部から無効化を要求された前記キャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、
    ことを特徴とする請求項記載のプロセッサ。
  10. 前記無効化判定部は、前記スワップ制御部からの無効化要求の内容に応じて、前記キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、
    ことを特徴とする請求項又は記載のプロセッサ。
  11. キャッシュメモリを備えたプロセッサに、
    キャッシュメモリを備えた他のプロセッサと共有する主メモリと複数のプロセッサとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部から、前記キャッシュメモリに格納されたデータのアドレス情報を管理するディレクトリ内のアドレス情報の掃き出しの際に当該アドレス情報に対応するデータの無効化の要求を受け付けて、当該アドレス情報に対応する前記キャッシュメモリに格納されたデータを無効化するか否か判定して、この判定結果に応じた通知を前記コヒーレンシ制御部に対して行う無効化判定部、を実現させるためのプログラムであって、
    前記無効化判定部は、予め設定された基準と比較して、あるいは、他のデータと比較して、無効化を要求された前記アドレス情報に対応する前記キャッシュメモリに格納された前記データの使用頻度が高い場合に、前記データを無効化しないと判定すると共に、前記データを無効化しない通知を前記コヒーレンシ制御部に送信し、さらに、前記データを無効化しない通知を受け付けた前記コヒーレンシ制御部にて前記ディレクトリ内から掃き出すアドレス情報が変更され、前記コヒーレンシ制御部から送信された、変更された前記アドレス情報に対応する前記キャッシュメモリ内のデータの無効化の要求を受け付ける、
    プログラム
  12. 前記無効化判定部は、前記スワップ制御部から無効化を要求された前記キャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、
    ことを特徴とする請求項11記載のプログラム。
  13. 前記無効化判定部は、前記スワップ制御部からの無効化要求の内容に応じて、前記キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、
    ことを特徴とする請求項11又は12記載のプログラム。
  14. それぞれキャッシュメモリを備えた複数のプロセッサと、当該複数のプロセッサで共有する主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保障するよう制御するコヒーレンシ制御部と、を備えたマルチプロセッサシステムによるスワップ方法であって、
    前記キャッシュメモリに格納されたデータのアドレス情報を管理する前記コヒーレンシ制御部に装備されたディレクトリ内のアドレス情報を掃き出す際に当該アドレス情報に対応する前記キャッシュメモリ内のデータの無効化を前記プロセッサに要求する無効化要求工程と、前記無効化要求工程にて無効化を要求されたアドレス情報に対応する前記キャッシュメモリに格納されたデータを無効化するか否か判定して当該判定結果に応じた通知を前記コヒーレンシ制御部に対して行う無効化判定工程と、
    を有し、
    前記無効化判定工程は、予め設定された基準と比較して、あるいは、他のデータと比較して、無効化を要求された前記アドレス情報に対応する前記キャッシュメモリに格納された前記データの使用頻度が高い場合に、前記データを無効化しないと判定すると共に、前記データを無効化しない通知を前記コヒーレンシ制御部に送信し、
    前記無効化要求工程は、前記無効化判定工程にて前記コヒーレンシ制御部が前記プロセッサから前記データを無効化しない通知を受けた場合に、前記ディレクトリ内から掃き出すアドレス情報を変更し、当該変更したアドレス情報に対応する前記キャッシュメモリ内のデータの無効化要求を前記プロセッサに対して行う、
    ことを特徴とするスワップ方法。
  15. 前記無効化判定工程は、前記スワップ制御部から無効化を要求された前記キャッシュメモリに格納されたデータの無効化を、当該データの使用状況に基づいて判定する、
    ことを特徴とする請求項14記載のスワップ方法。
  16. 前記無効化判定工程は、前記スワップ制御部からの無効化要求の内容に応じて、前記キャッシュメモリに格納されたデータの無効化を行うか否かを判定する、
    ことを特徴とする請求項14又は15記載のスワップ方法。
  17. 前記無効化判定工程は、前記スワップ制御部からの無効化要求が強制的な無効化要求である場合に、前記キャッシュメモリに格納されたデータを無効化すると判定する、
    ことを特徴とする請求項16記載のスワップ方法。
  18. 前記プロセッサへの同一データに対する無効化要求の回数をカウントし、当該回数に応じて強制的に無効化するよう前記プロセッサに対する要求を行う強制無効化要求工程を有する、
    ことを特徴とする請求項141516又は17記載のスワップ方法。
JP2007293830A 2007-11-13 2007-11-13 マルチプロセッサシステム Expired - Fee Related JP5019222B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007293830A JP5019222B2 (ja) 2007-11-13 2007-11-13 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007293830A JP5019222B2 (ja) 2007-11-13 2007-11-13 マルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2009122787A JP2009122787A (ja) 2009-06-04
JP5019222B2 true JP5019222B2 (ja) 2012-09-05

Family

ID=40814901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007293830A Expired - Fee Related JP5019222B2 (ja) 2007-11-13 2007-11-13 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP5019222B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11163688B2 (en) 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04111031A (ja) * 1990-08-30 1992-04-13 Fujitsu Ltd 一次メモリ情報実装処理方式
JPH04191946A (ja) * 1990-11-27 1992-07-10 Agency Of Ind Science & Technol スヌープキャッシュメモリ制御方式
JPH0612331A (ja) * 1992-06-25 1994-01-21 Mitsubishi Electric Corp キャッシュメモリ制御装置
JPH06266623A (ja) * 1993-03-12 1994-09-22 Toshiba Corp キャッシュメモリ及びキャッシュメモリ制御方法
JP2002007371A (ja) * 2000-06-23 2002-01-11 Hitachi Ltd L1キャッシュフォールスシェア緩和制御方式
US6662275B2 (en) * 2001-02-12 2003-12-09 International Business Machines Corporation Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with store-through data cache
JP3678715B2 (ja) * 2002-04-24 2005-08-03 エヌイーシーコンピュータテクノ株式会社 分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法
JP2005301387A (ja) * 2004-04-07 2005-10-27 Matsushita Electric Ind Co Ltd キャッシュメモリ制御装置およびキャッシュメモリ制御方法
JP4463152B2 (ja) * 2005-05-25 2010-05-12 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びそれに用いるコピーキャッシュ情報掃き出しレベル選択方法

Also Published As

Publication number Publication date
JP2009122787A (ja) 2009-06-04

Similar Documents

Publication Publication Date Title
US9535848B2 (en) Using cuckoo movement for improved cache coherency
US8606997B2 (en) Cache hierarchy with bounds on levels accessed
US7698508B2 (en) System and method for reducing unnecessary cache operations
US7305522B2 (en) Victim cache using direct intervention
US8171223B2 (en) Method and system to increase concurrency and control replication in a multi-core cache hierarchy
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US7827360B2 (en) Cache locking device and methods thereof
US10725923B1 (en) Cache access detection and prediction
US8990506B2 (en) Replacing cache lines in a cache memory based at least in part on cache coherency state information
US9176876B2 (en) Selective cache-to-cache lateral castouts
CA1238984A (en) Cooperative memory hierarchy
US8499124B2 (en) Handling castout cache lines in a victim cache
US8489819B2 (en) Victim cache lateral castout targeting
US8347036B2 (en) Empirically based dynamic control of transmission of victim cache lateral castouts
US10402327B2 (en) Network-aware cache coherence protocol enhancement
US7281092B2 (en) System and method of managing cache hierarchies with adaptive mechanisms
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US20100262784A1 (en) Empirically Based Dynamic Control of Acceptance of Victim Cache Lateral Castouts
US20100235584A1 (en) Lateral Castout (LCO) Of Victim Cache Line In Data-Invalid State
US20100262783A1 (en) Mode-Based Castout Destination Selection
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
US20100217939A1 (en) Data processing system
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
CN110554975A (zh) 提供死块预测以用于确定是否在cache设备中对数据高速缓存
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100617

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120118

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: 20120515

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: 20120601

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees