(57)【要約】【課題】プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて主記憶とのトランザクションを減少させること。【解決手段】メモリシステム制御装置２００が、プロセッサ１００ａ〜１００ｄから書込みを前提としたリード要求を受け、そのデータを要求元のプロセッサに送出した場合に、スヌープキャッシュ更新部２３３は、スヌープキャッシュにそのデータが「強い更新状態」であることを記憶させる。データ取得手順選択部２３２は、「強い更新状態」でスヌープキャッシュに存在するデータをプロセッサ１００ａ〜１００ｄから要求された場合には、主記憶３００に対して投機リードをおこなわずに、プロセッサのキャッシュメモリからデータを取得する。【選択図】        図２
2006048406.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて前記キャッシュメモリと主記憶とのコヒーレンシを制御するメモリシステム制御装置であって、
前記プロセッサの有するキャッシュメモリの各エントリに格納されているデータのアドレス情報を記憶し、各エントリの利用状態を「強い更新状態」、「弱い更新状態」、「共有状態」もしくは「無効状態」のいずれかひとつの状態として保持するキャッシュ状態保持手段と、
前記プロセッサの一つからデータのリード要求を受けた場合に、前記キャッシュ状態保持手段により保持されている前記アドレス情報と前記利用状態に基づいて前記データの取得手順を少なくとも一つ選択するデータ取得手順選択手段と、
前記データ取得手順選択手段の選択した取得手順により取得されたデータから最新状態のデータを選択し、要求元のプロセッサに送出するリードデータ選択送出手段と、
前記データのアドレス情報を要求元のプロセッサに対応するキャッシュ状態保持手段のエントリの一つに登録する際に、前記リード要求の種別に応じて前記エントリの利用状態を更新するキャッシュ状態更新手段と
を備えたことを特徴とするメモリシステム制御装置。
【請求項２】
前記キャッシュ状態更新手段は、前記プロセッサの一つから書込みを前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「強い更新状態」として登録することを特徴とする請求項１に記載のメモリシステム制御装置。
【請求項３】
前記キャッシュ状態更新手段は、前記プロセッサの一つから書込む可能性のあるデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「弱い更新状態」として登録することを特徴とする請求項１または２に記載のメモリシステム制御装置。
【請求項４】
前記キャッシュ状態更新手段は、前記プロセッサの一つから「共有状態」への遷移を前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「弱い更新状態」として登録することを特徴とする請求項１、２または３に記載のメモリシステム制御装置。
【請求項５】
前記キャッシュ状態更新手段は、前記プロセッサの一つから「無効状態」への遷移を前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「弱い更新状態」として登録することを特徴とする請求項１〜４のいずれか一つに記載のメモリシステム制御装置。
【請求項６】
前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「強い更新状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得のみを該データの取得手順として選定することを特徴とする請求項１〜５のいずれか一つに記載のメモリシステム制御装置。
【請求項７】
前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「弱い更新状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得と主記憶からのデータ取得とを該データの取得手順として選定することを特徴とする請求項１〜６のいずれか一つに記載のメモリシステム制御装置。
【請求項８】
前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「共有状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得を該データの取得手順として選定することを特徴とする請求項１〜７のいずれか一つに記載のメモリシステム制御装置。
【請求項９】
前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が全て「無効状態」である場合に、主記憶からのデータ取得のみを該データの取得手順として選定することを特徴とする請求項１〜８のいずれか一つに記載のメモリシステム制御装置。
【請求項１０】
プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて前記キャッシュメモリと主記憶とのコヒーレンシを制御するメモリシステム制御方法であって、
前記プロセッサの有するキャッシュメモリの各エントリに格納されているデータのアドレス情報を記憶し、各エントリの利用状態を「強い更新状態」、「弱い更新状態」、「共有状態」もしくは「無効状態」のいずれかひとつの状態として保持するキャッシュ状態保持工程と、
前記プロセッサの一つからデータのリード要求を受けた場合に、前記キャッシュ状態保持工程により保持されている前記アドレス情報と前記利用状態に基づいて前記データの取得手順を少なくとも一つ選択するデータ取得手順選択工程と、
前記データ取得手順選択工程の選択した取得手順により取得されたデータから最新状態のデータを選択し、要求元のプロセッサに送出するリードデータ選択送出工程と、
前記データのアドレス情報を要求元のプロセッサに対応するキャッシュ状態保持工程のエントリの一つに登録する際に、前記リード要求の種別に応じて前記エントリの利用状態を更新するキャッシュ状態更新工程と
を含んだことを特徴とするメモリシステム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいてキャッシュメモリと主記憶とのコヒーレンシ（一貫性）を制御するメモリシステム制御装置およびメモリシステム制御方法に関し、特に主記憶とのトランザクションを減少させ、システムの性能低下を避けることができるメモリシステム制御装置およびメモリシステム制御方法に関するものである。
【背景技術】
【０００２】
マルチプロセッサシステムには、キャッシュをプロセッサ毎に独立して備えたものがある。たとえば、プロセッサ自身がキャッシュを内蔵している場合がこれにあたる。従来より、このようなマルチプロセッサシステムにおいては、コヒーレンシの確保を効率的におこない、システムの性能を向上させるために、ＭＥＳＩプロトコル、投機リード、スヌープキャッシュといった技術や手法が用いられている。
【０００３】
ＭＥＳＩプロトコルは、キャッシュコヒーレンシプロトコルの一種であり、キャッシュの各ラインの状態を「更新状態（Ｍｏｄｅｉｆｉｅｄ）」、「排他状態（Ｅｘｃｌｕｓｉｖｅ）」、「共有状態（Ｓｈａｒｅｄ）」および「無効状態（Ｉｎｖａｌｉｄ）」に分けて制御する。このＭＥＳＩプロトコルを利用することにより、最新のデータが存在する場所が明確になり、各キャッシュと主記憶間のコヒーレンシを効率的に確保することができる（例えば、特許文献１）。
【０００４】
投機リードは、プロセッサへの問合せと同時に主記憶へのリード要求をおこなう手法である。あるプロセサからデータの要求があった場合、データの一貫性を確保するためには、全プロセッサに対して当該のデータを保持しているか否かを問い合わせる必要があるが、プロセッサからの応答を待ってから主記憶へのリード要求をおこなったのではレイテンシ（遅延）が大きくなる。
【０００５】
そこでプロセッサへの問合せと同時に主記憶へのリード要求を投機的におこない、プロセッサから当該のデータを保持している旨の応答がなかった場合には、投機的に主記憶から読み出したデータを要求元のプロセッサに送信する。このように投機リードをおこなうことにより、データ取得に係るレイテンシを小さくすることができる。
【０００６】
ただし、全てのリード要求に対して投機リードをおこなうと、主記憶とのトランザクションが増大し、結果的にシステムの性能が悪化する恐れがある。そこで、メモリアクセスの制御をおこなうメモリシステム制御装置内に、各キャッシュメモリが保持しているラインの情報を格納するスヌープキャッシュを設ける手法がとられている。
【０００７】
メモリシステム制御装置は、スヌープキャッシュの状態を参照することで、プロセッサへの問合せをおこうことなく各プロセッサのキャッシュが保持している各ラインの状況を知ることができ、不要な投機リードの発生を避けることができる（例えば、特許文献２）。
【０００８】
【特許文献１】特開２００２−２４１９８号公報
【特許文献２】特開平８−１８５３５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、プロセッサのバス仕様によっては、プロセッサのキャッシュの状態の遷移をメモリシステム制御装置側で正確に把握できない場合がある。このような場合には、スヌープキャッシュを参照してもプロセッサのキャッシュの状態を知ることができないため、プロセッサへの問合せが必要になる。
【００１０】
ここで、プロセッサからの応答を待つことによるレイテンシの増大を避けるには主記憶の投機リードが必要となるが、前述したように、投機リードが多発すると主記憶とのトランザクションが増大し、システムの性能が悪化する恐れがある。
【００１１】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、主記憶とのトランザクションを減少させることができるメモリシステム制御装置およびメモリシステム制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて前記キャッシュメモリと主記憶とのコヒーレンシを制御するメモリシステム制御装置であって、前記プロセッサの有するキャッシュメモリの各エントリに格納されているデータのアドレス情報を記憶し、各エントリの利用状態を「強い更新状態」、「弱い更新状態」、「共有状態」もしくは「無効状態」のいずれかひとつの状態として保持するキャッシュ状態保持手段と、前記プロセッサの一つからデータのリード要求を受けた場合に、前記キャッシュ状態保持手段により保持されている前記アドレス情報と前記利用状態に基づいて前記データの取得手順を少なくとも一つ選択するデータ取得手順選択手段と、前記データ取得手順選択手段の選択した取得手順により取得されたデータから最新状態のデータを選択し、要求元のプロセッサに送出するリードデータ選択送出手段と、前記データのアドレス情報を要求元のプロセッサに対応するキャッシュ状態保持手段のエントリの一つに登録する際に、前記リード要求の種別に応じて前記エントリの利用状態を更新するキャッシュ状態更新手段とを備えたことを特徴とする。
【００１３】
また、本発明は、プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて前記キャッシュメモリと主記憶とのコヒーレンシを制御するメモリシステム制御方法であって、前記プロセッサの有するキャッシュメモリの各エントリに格納されているデータのアドレス情報を記憶し、各エントリの利用状態を「強い更新状態」、「弱い更新状態」、「共有状態」もしくは「無効状態」のいずれかひとつの状態として保持するキャッシュ状態保持工程と、前記プロセッサの一つからデータのリード要求を受けた場合に、前記キャッシュ状態保持工程により保持されている前記アドレス情報と前記利用状態に基づいて前記データの取得手順を少なくとも一つ選択するデータ取得手順選択工程と、前記データ取得手順選択工程の選択した取得手順により取得されたデータから最新状態のデータを選択し、要求元のプロセッサに送出するリードデータ選択送出工程と、前記データのアドレス情報を要求元のプロセッサに対応するキャッシュ状態保持工程のエントリの一つに登録する際に、前記リード要求の種別に応じて前記エントリの利用状態を更新するキャッシュ状態更新工程とを含んだことを特徴とする。
【００１４】
この発明によれば、「更新状態」を「強い更新状態」と「弱い更新状態」に区別して管理するように構成したので、「更新状態」にあるキャッシュの制御を精密かつ効率的におこなうことができる。
【００１５】
また、本発明は、上記の発明において、前記キャッシュ状態更新手段は、前記プロセッサの一つから書込みを前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「強い更新状態」として登録することを特徴とする。
【００１６】
この発明によれば、書込みを前提としたデータとしてリード要求を受けた場合は、そのデータを「強い更新状態」として登録するように構成したので、この場合のようにキャッシュメモリに確実に最新のデータが存在している場合を他の「更新状態」と区別することができる。
【００１７】
また、本発明は、上記の発明において、前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「強い更新状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得のみを該データの取得手順として選定することを特徴とする。
【００１８】
この発明によれば、「強い更新状態」としてキャッシュ状態保持手段に保持されているデータについてはキャッシュメモリのみにデータ要求をおこない、主記憶への投機リードをおこなわないように構成したので、主記憶とのトランザクションを減少させることができる。
【発明の効果】
【００１９】
本発明によれば、「更新状態」を「強い更新状態」と「弱い更新状態」に区別して管理するように構成したので、「更新状態」にあるキャッシュの制御を精密かつ効率的におこなうことができるという効果を奏する。
【００２０】
また、本発明によれば、書込みを前提としたデータとしてリード要求を受けた場合は、そのデータを「強い更新状態」として登録するように構成したので、この場合のようにキャッシュメモリに確実に最新のデータが存在している場合を他の「更新状態」と区別することができるという効果を奏する。
【００２１】
また、本発明によれば、「強い更新状態」としてキャッシュ状態保持手段に保持されているデータについてはキャッシュメモリのみにデータ要求をおこない、主記憶への投機リードをおこなわないように構成したので、主記憶とのトランザクションを減少させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係るメモリシステム制御装置およびメモリシステム制御方法の好適な実施の形態を詳細に説明する。なお、ここではプロセッサ自身がキャッシュを内蔵している場合を例にして説明をおこなうが、本発明は、キャッシュがプロセッサ毎に存在していることを前提にしており、必ずしもプロセッサ自身がキャッシュを内蔵している必要はない。
【実施例】
【００２３】
まず、従来のメモリシステム制御方式について説明する。図７−１は、ＭＥＳＩプロトコルによるメモリシステム制御方式について説明するための説明図である。この図は、プロセッサが複数存在するマルチプロセッサシステムにおける、キャッシュメモリ側のステータス管理とスヌープキャッシュ側のステータス管理の対応を示している。
【００２４】
キャッシュメモリとは、プロセッサと主記憶とのデータのやり取りを高速化するために両者の間に設けられる記憶装置であり、主記憶のラインの一部を保持する。この例では、プロセッサ毎に別個のキャッシュメモリが存在する。
【００２５】
スヌープキャッシュとは、プロセッサと主記憶とのデータのやり取りを制御するメモリシステム制御装置内に設けられる記憶装置であり、キャッシュメモリと対で存在し、対応するキャッシュメモリが保持している各ラインのタグ情報を保持する。
【００２６】
図７−１に示すように、キャッシュメモリに格納される各ラインは、”Ｍ（更新状態）”、”Ｅ（排他状態）”、”Ｓ（共有状態）”、”Ｉ（無効状態）”の４つのステータスに分類されて管理される。キャッシュメモリと対で存在するスヌープキャッシュの各ラインも、同じステータスに分類されて管理される。
【００２７】
このように、キャッシュメモリとスヌープキャッシュのステータスが常に一致している場合には、メモリシステム制御装置は、プロセッサにキャッシュメモリの状態を問い合わせることなく、自身が有するスヌープキャッシュを参照することでデータの取得先を決定することができる。
【００２８】
具体的には、メモリシステム制御装置は、あるプロセッサからデータのリード要求を受けたならば、各スヌープキャッシュを参照し、当該のデータを含むラインが保持されているか否かを検索する。そして、当該のデータを含むラインがいずれかのスヌープキャッシュに保持されていないならば、当該のデータを含むラインを主記憶から取得することとし、保持されていたならば、そのラインのステータスを確認してデータの取得先を決定する。
【００２９】
ラインのステータスが、”Ｍ”であった場合は、当該のラインがプロセッサにより変更された状態でキャッシュメモリに保持されていることを示しているので、そのラインを保持しているプロセッサのキャッシュメモリからデータを取得する必要がある。
【００３０】
ラインのステータスが、”Ｅ”もしくは”Ｓ”であった場合は、当該のラインがプロセッサにより変更されることなく一つもしくは複数のプロセッサに保持されていることを示しているので、そのラインを保持しているプロセッサのキャッシュメモリまたは主記憶のどちらからデータを取得しても問題ない。
【００３１】
ラインのステータスが、”Ｉ”であった場合は、当該のラインの内容が無効になっていることを示しているので、そのラインを保持している他のプロセッサのキャッシュメモリもしくは主記憶からデータを取得する必要がある。
【００３２】
このように、プロセッサのキャッシュメモリとスヌープキャッシュのステータスが常に一致している場合には、システムに負荷をかけることなく効率よくデータの取得をおこなうことができる。
【００３３】
図７−２は、ＭＳＩプロトコルによるメモリシステム制御方式について説明するための説明図である。同図に示した例では、プロセッサのバスの仕様により、プロセッサのキャッシュメモリに保持されたラインのステータスが”Ｅ”から”Ｍ”または”Ｉ”へ遷移したことをメモリシステム制御装置側で把握することができない。
【００３４】
このような場合、従来は、スヌープキャッシュ側ではＭＥＳＩプロトコルの代わりにＭＳＩプロトコルが使用され、”Ｍ”と”Ｅ”のステータスを区別せずに制御をおこなっていた。
【００３５】
この例では、キャッシュメモリ側でステータスが”Ｅ”となったラインのステータスをスヌープキャッシュ側では”Ｍ”として管理している。キャッシュメモリのラインのステータスが”Ｍ”や”Ｉ”へ遷移しても、メモリシステム制御装置側ではそれを感知できないため、スヌープキャッシュ側の”Ｍ”のステータスはそのまま保持される。このため、スヌープキャッシュ側の”Ｍ”のステータスは、キャッシュメモリ側の”Ｅ”だけでなく”Ｍ”や”Ｉ”とも対応している。
【００３６】
すなわち、この例におけるスヌープキャッシュ側の”Ｍ”のステータスは、キャッシュメモリに最新のデータが確実に存在することを示しているのではなく、プロセッサのキャッシュメモリに最新のデータが存在するその可能性もあるが、有効なデータが存在しない可能性もあることを示している。
【００３７】
したがって、メモリシステム制御装置は、プロセッサから要求されたデータを含むラインがスヌープキャッシュに存在し、そのステータスが”Ｍ”であった場合は、そのスヌープキャッシュに対応するプロセッサに当該のラインについての問合せをおこない、その応答によって有効なデータが存在しないことがわかった場合には主記憶に対して改めてデータを要求することが必要になる。
【００３８】
通常は、プロセッサの応答を待ってから主記憶にデータを要求したのではレイテンシが大きくなることから、プロセッサへの問合せと同時に主記憶に対して投機リードをおこなう。この投機リードは、キャッシュがミスしたときのレイテンシを小さくできる反面、主記憶とのトランザクションを増大させるという問題も含んでいる。
【００３９】
ここで、投機リードが発生する場合について例をあげて説明する。図８は、ＭＳＩプロトコルによるメモリシステム制御方式における「更新状態」の場合の制御手順を説明するための説明図である。
【００４０】
同図に示すように、メモリシステム制御装置２００は、いずれのキャッシュにも保持されていないデータのリード要求をプロセッサ１００ａから受け付けたならば（ステップＳ３０１）、主記憶３００に対して当該のデータを含むラインの読出しを要求する（ステップＳ３０２）。
【００４１】
主記憶３００から読み出されたラインは、リードデータ選択送出部２２０に送られ（ステップＳ３０３）、ここから要求元のプロセッサ１００ａに送信されてキャッシュメモリ１１０ａに格納される。この時点で、キャッシュメモリ１１０ａにおける当該のラインのステータスは”Ｅ”となり、スヌープキャッシュ２３１ａにおける同ラインのステータスは”Ｍ”となる。
【００４２】
その後、プロセッサ１００ａが当該のラインを更新してキャッシュメモリ１１０ａにおけるステータスが”Ｍ”に遷移したり、もしくは、プロセッサ１００ａが当該のラインを破棄してキャッシュメモリ１１０ａにおけるステータスが”Ｉ”に遷移したりしても、その遷移はメモリシステム制御装置２００からは把握できない（ステップＳ３０５）。
【００４３】
ここで、プロセッサ１００ｂから同じラインに含まれるデータの排他リード要求があったならば（ステップＳ３０６）、メモリシステム制御装置２００は、各スヌープキャッシュを検索し、プロセッサ１００ａに対応するスヌープキャッシュ２３１ａに当該のラインが”Ｍ”のステータスで保持されていることを確認する。
【００４４】
”Ｍ”のステータスは、キャッシュメモリ１１０ａに最新のデータが存在する場合とキャッシュメモリ１１０ａのラインが既に無効になっている場合のどちらもありうることを示しているため、メモリシステム制御装置２００は、プロセッサ１００ａに対して当該のラインに関する問合せをおこなう（ステップＳ３０７）。
【００４５】
また、プロセッサ１００ａからの応答を待つことによるレイテンシの増大を避けるため、メモリシステム制御装置２００は、主記憶３００に対して当該のデータを含むラインの読出しを同時に要求する（ステップＳ３０８）。
【００４６】
そして、プロセッサ１００ａからの応答が届き（ステップＳ３０９）、さらに、主記憶３００に要求していたラインが送信されてきたならば（ステップＳ３１０）、リードデータ選択送出部２２０は、プロセッサ１００ａからの応答の内容から最新のデータがどこにあるかを判断し、適切なデータを選択してプロセッサ１００ｂに送信する（ステップＳ３１１）。
【００４７】
この時点で、キャッシュメモリ１１０ａとスヌープキャッシュ２３１ａにおける当該のラインのステータスは”Ｉ”となり、キャッシュメモリ１１０ｂにおける同ラインのステータスは”Ｅ”となり、スヌープキャッシュ２３１ｂにおける同ラインのステータスは”Ｍ”となる。
【００４８】
このように、スヌープキャッシュ側でＭＥＳＩプロトコルの代わりにＭＳＩプロトコルを使用した従来の方式では、主記憶に対する投機リードが必要になり、主記憶とのトランザクションが増大する。
【００４９】
次に、本実施例に係るメモリシステム制御方式について説明する。図１は、本実施例に係るメモリシステム制御方式について説明するための説明図である。本実施例でも、プロセッサのバスの仕様により、プロセッサのキャッシュメモリに保持されたラインのステータスが”Ｅ”から”Ｍ”または”Ｉ”へ遷移したことをメモリシステム制御装置側で把握することができない。
【００５０】
同図に示すように、本実施例に係るメモリシステム制御方式では、ＭＳＩプロトコルを使用した従来の方式では”Ｍ（更新状態）”と分類していたスヌープキャッシュ側の状態を”Ｍ（強い更新状態）”と”Ｗ（Weakly Modified、弱い更新状態）”に区別している。
【００５１】
本実施例に係るメモリシステム制御方式における”Ｍ”は、ＭＥＳＩプロトコルによるメモリシステム制御方式における”Ｍ”と同様にキャッシュメモリが最新データを保持していることを保証する。”Ｗ”は、ＭＳＩプロトコルによるメモリシステム制御方式における”Ｍ”と同様にキャッシュメモリ側の状態が不明であることを示す。
【００５２】
メモリシステム制御装置は、プロセッサの要求内容から当該のラインがキャッシュメモリにおいて”Ｍ”になると判断した場合に、スヌープキャッシュにおける同ラインのステータスを”Ｍ”に設定する。例えば、プロセッサから書込みを前提としたリード要求があった場合がこれに該当する。
【００５３】
スヌープキャッシュにおいてステータスが”Ｍ”となっているラインは、キャッシュメモリに最新の状態で存在していることが保証されるため、主記憶に対する投機リードが不要になり、その分だけシステムの負荷が軽減される。
【００５４】
次に、本実施例に係るメモリシステム制御装置の構成について説明する。図２は、本実施例に係るメモリシステム制御装置の構成を示す機能ブロック図である。同図に示すように、メモリシステム制御装置２００は、プロセッサ１００ａ〜１００ｄの複数のプロセッサおよび主記憶３００と接続された構成をとる。なお、接続されるプロセッサの数はいくつであってもよい。
【００５５】
プロセッサ１００ａは、各種演算をおこなう演算装置であり、キャッシュメモリ１１０ａを有する。キャッシュメモリ１１０ａは、主記憶のラインを所定の数だけ記憶することができ、記憶している各ラインのステータスを”Ｍ”、”Ｅ”、”Ｓ”または”Ｉ”のいずれか一つのステータスとして保持する。
【００５６】
プロセッサ１００ｂ、プロセッサ１００ｃおよびプロセッサ１００ｄは、プロセッサ１００ａと同様の構成であるため説明を省略する。
【００５７】
メモリシステム制御装置２００は、プロセッサ１００ａ〜１００ｄと主記憶３００の間のデータのやり取りを制御し、コヒーレンシを確保するための装置であり、プロセッサインターフェース部２１０ａ〜２１０ｄと、リードデータ選択送出部２２０と、キャッシュ制御部２３０と、主記憶インターフェース部２４０とを有する。
【００５８】
プロセッサインターフェース部２１０ａは、プロセッサ１００ａとデータ等のやりとりをおこなう入出力部である。同様に、プロセッサインターフェース部２１０ｂ〜２１０ｄは、それぞれ、プロセッサ１００ｂ〜ｄとデータ等のやりとりをおこなう。
【００５９】
リードデータ選択送出部２２０は、プロセッサ１００ａ〜１００ｄおよび主記憶３００から送られたデータを要求元のプロセッサに送出する処理部である。メモリシステム制御装置２００が、プロセッサ１００ａ〜１００ｄのいずれか一つにデータを問い合わせると同時に主記憶３００に対して投機リードをおこなった場合には、リードデータ選択送出部２２０は、同一のラインの情報を２つ取得することになるが、プロセッサ側からの応答の内容を判断して要求元のプロセッサに送出するデータを選択する。
【００６０】
キャッシュ制御部２３０は、スヌープキャッシュの各ラインの状態を制御し、プロセッサ１００ａ〜１００ｄからデータの要求があった場合にそのデータを取得する手順を選択する処理部であり、スヌープキャッシュ２３１ａ〜２３１ｄと、データ取得手順選択部２３２と、スヌープキャッシュ更新部２３３とを有する。
【００６１】
スヌープキャッシュ２３１ａは、キャッシュメモリ１１０ａが記憶している各ラインのタグ情報を記憶し、記憶している各ラインのステータスを”Ｍ”、”Ｗ”、”Ｓ”または”Ｉ”のいずれか一つのステータスとして保持する。スヌープキャッシュ２３１ｂ〜２３１ｄは、同様にキャッシュメモリ１１０ｂ〜１１０ｄが記憶している各ラインのタグ情報と、各ラインのステータスとを記憶する。
【００６２】
データ取得手順選択部２３２は、プロセッサ１００ａ〜１００ｄからデータの取得要求があった場合に当該のデータを含むラインを取得するための手順を選択する処理部である。具体的には、まず、当該のデータを含むラインがスヌープキャッシュ２３１ａ〜２３１ｄに存在するか否かを調べ、存在しない場合は当該のデータを含むラインを主記憶から取得することとする。
【００６３】
当該のデータを含むラインがスヌープキャッシュ２３１ａ〜２３１ｄに存在する場合には、そのステータスを確認して取得手順を選択する。ステータスが”Ｍ”であれば、そのスヌープキャッシュに対応するキャッシュメモリからラインを取得することとする。ステータスが”Ｗ”であれば、そのスヌープキャッシュに対応するプロセッサに問合せをおこなうと同時に、主記憶３００に対して投機リードをおこなうこととする。
【００６４】
ステータスが”Ｓ”のものがあれば、そのスヌープキャッシュに対応するキャッシュメモリからラインを取得することとする。なお、この場合は、主記憶３００からラインを取得してもよい。そして、ステータスが”Ｉ”のものしかない場合は、主記憶３００からラインを取得することとする。
【００６５】
スヌープキャッシュ更新部２３３は、スヌープキャッシュ２３１ａ〜２３１ｄに保持されている各ラインのステータスを更新する処理部である。ステータスの更新は、プロセッサ１００ａ〜１００ｄからのリード要求やステータス変更の通知に基づいておこなう。たとえば、プロセッサ１００ａ〜１００ｄからのリード要求の種類が書込みを前提としたものである場合には、スヌープキャッシュ２３１ｂ〜２３１ｄに保持するラインのステータスを”Ｍ”に設定する。
【００６６】
主記憶インターフェース部２４０は、主記憶３００とデータ等のやりとりをおこなう入出力部である。主記憶３００は、メモリシステム制御装置２００を具備するマルチプロセッサシステムにおいて稼動する各種プログラムやそれらのプログラムが使用するデータを展開するための記憶部である。
【００６７】
次に、本実施例に係るメモリシステム制御方式における制御手順について例をあげて説明する。図３は、本実施例に係るメモリシステム制御方式における「弱い更新状態」の場合の制御手順を説明するための説明図である。
【００６８】
同図に示すように、メモリシステム制御装置２００は、いずれのキャッシュにも保持されていないデータのリード要求をプロセッサ１００ａから受け付けたならば（ステップＳ１０１）、主記憶３００に対して当該のデータを含むラインの読出しを要求する（ステップＳ１０２）。
【００６９】
主記憶３００から読み出されたラインは、リードデータ選択送出部２２０に送られ（ステップＳ１０３）、ここから要求元のプロセッサ１００ａに送信されてキャッシュメモリ１１０ａに格納される。この時点で、キャッシュメモリ１１０ａにおける当該のラインのステータスは”Ｅ”となり、スヌープキャッシュ２３１ａにおける同ラインのステータスは”Ｗ”となる。
【００７０】
その後、プロセッサ１００ａが当該のラインを更新してキャッシュメモリ１１０ａにおけるステータスが”Ｍ”に遷移したり、もしくは、プロセッサ１００ａが当該のラインを破棄してキャッシュメモリ１１０ａにおけるステータスが”Ｉ”に遷移したりしても、その遷移はメモリシステム制御装置２００からは把握できない（ステップＳ１０５）。
【００７１】
ここで、プロセッサ１００ｂから同じラインに含まれるデータの排他リード要求があったならば（ステップＳ１０６）、メモリシステム制御装置２００は、各スヌープキャッシュを検索し、プロセッサ１００ａに対応するスヌープキャッシュ２３１ａに当該のラインが”Ｗ”のステータスで保持されていることを確認する。
【００７２】
”Ｗ”のステータスは、キャッシュメモリ１１０ａに最新のデータが存在する場合とキャッシュメモリ１１０ａのラインが既に無効になっている場合のどちらもありうることを示しているため、メモリシステム制御装置２００は、プロセッサ１００ａに対して当該のラインに関する問合せをおこなう（ステップＳ１０７）。
【００７３】
また、プロセッサ１００ａからの応答を待つことによるレイテンシの増大を避けるため、メモリシステム制御装置２００は、主記憶３００に対して当該のデータを含むラインの読出しを同時に要求する（ステップＳ１０８）。
【００７４】
そして、プロセッサ１００ａからの応答が届き（ステップＳ１０９）、さらに、主記憶３００に要求していたラインが送信されてきたならば（ステップＳ１１０）、リードデータ選択送出部２２０は、プロセッサ１００ａからの応答の内容から最新のデータがどこにあるかを判断し、適切なデータを選択してプロセッサ１００ｂに送信する（ステップＳ１１１）。
【００７５】
この時点で、キャッシュメモリ１１０ａとスヌープキャッシュ２３１ａにおける当該のラインのステータスは”Ｉ”となり、キャッシュメモリ１１０ｂにおける同ラインのステータスは”Ｅ”となり、スヌープキャッシュ２３１ｂにおける同ラインのステータスは”Ｗ”となる。
【００７６】
このように、本実施例に係るメモリシステム制御方式においても、スヌープキャッシュ側のステータスが「弱い更新状態」の場合は、主記憶に対する投機リードが必要になり、主記憶とのトランザクションが増大する。
【００７７】
図４は、本実施例に係るメモリシステム制御方式における「強い更新状態」の場合の制御手順を説明するための説明図である。
【００７８】
同図に示すように、メモリシステム制御装置２００は、いずれのキャッシュにも保持されていないデータについて書込みを前提としたリード要求をプロセッサ１００ａから受け付けたならば（ステップＳ２０１）、主記憶３００に対して当該のデータを含むラインの読出しを要求する（ステップＳ２０２）。
【００７９】
主記憶３００から読み出されたラインは、リードデータ選択送出部２２０に送られ（ステップＳ２０３）、ここから要求元のプロセッサ１００ａに送信されてキャッシュメモリ１１０ａに格納される。この時点で、キャッシュメモリ１１０ａにおける当該のラインのステータスは”Ｍ”となり、スヌープキャッシュ２３１ａにおける同ラインのステータスも”Ｍ”となる。
【００８０】
その後、プロセッサ１００ａが当該のラインを更新してもキャッシュメモリ１１０ａにおけるステータスは”Ｍ”のまま保持される（ステップＳ２０５）。
【００８１】
ここで、プロセッサ１００ｂから同じラインに含まれるデータの排他リード要求があったならば（ステップＳ２０６）、メモリシステム制御装置２００は、各スヌープキャッシュを検索し、プロセッサ１００ａに対応するスヌープキャッシュ２３１ａに当該のラインが”Ｍ”のステータスで保持されていることを確認する。
【００８２】
”Ｍ”のステータスは、キャッシュメモリ１１０ａに最新のデータが存在することを示しているため、メモリシステム制御装置２００は、プロセッサ１００ａに対して当該のラインの排出を要求する（ステップＳ２０７）。
【００８３】
そして、プロセッサ１００ａからラインの排出がおこなわれたならば（ステップＳ２０８）、リードデータ選択送出部２２０が、その排出されたラインをプロセッサ１００ｂに送信する（ステップＳ２０９）。
【００８４】
この時点で、キャッシュメモリ１１０ａとスヌープキャッシュ２３１ａにおける当該のラインのステータスは”Ｉ”となり、キャッシュメモリ１１０ｂにおける同ラインのステータスは”Ｅ”となり、スヌープキャッシュ２３１ｂにおける同ラインのステータスは”Ｗ”となる。
【００８５】
このように、本実施例に係るメモリシステム制御方式においては、スヌープキャッシュ側のステータスが「強い更新状態」の場合は、主記憶に対する投機リードが不要になり、主記憶とのトランザクションの増大を避けることができる。
【００８６】
投機リードの発生の有無は、制御手順をタイムチャートで表すことにより容易に見てとることができる。図５は、本実施例に係るメモリシステム制御方式における「弱い更新状態」の場合の制御手順を示すタイムチャートである。図６は、本実施例に係るメモリシステム制御方式における「強い更新状態」の場合の制御手順を示すタイムチャートである。
【００８７】
図５と図６を比較するとわかるように、図６では主記憶に対する投機リードであるステップＳ１０８とステップＳ１０９に相当するステップが存在しておらず、その分だけ主記憶とのトランザクションが減少していることになる。
【００８８】
上述してきたように、本実施例では、プロセッサからのリード要求の種類に応じてスヌープキャッシュの「更新状態」のステータスを「強い更新状態」と「弱い更新状態」に区別し、「強い更新状態」の場合はプロセッサのキャッシュメモリに最新のデータが存在することが保証されるように構成したので、主記憶に対する投機リードの発生を減少させ、もって主記憶とのトランザクションの増大を避けることができる。
【００８９】
（付記１）プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて前記キャッシュメモリと主記憶とのコヒーレンシを制御するメモリシステム制御装置であって、
前記プロセッサの有するキャッシュメモリの各エントリに格納されているデータのアドレス情報を記憶し、各エントリの利用状態を「強い更新状態」、「弱い更新状態」、「共有状態」もしくは「無効状態」のいずれかひとつの状態として保持するキャッシュ状態保持手段と、
前記プロセッサの一つからデータのリード要求を受けた場合に、前記キャッシュ状態保持手段により保持されている前記アドレス情報と前記利用状態に基づいて前記データの取得手順を少なくとも一つ選択するデータ取得手順選択手段と、
前記データ取得手順選択手段の選択した取得手順により取得されたデータから最新状態のデータを選択し、要求元のプロセッサに送出するリードデータ選択送出手段と、
前記データのアドレス情報を要求元のプロセッサに対応するキャッシュ状態保持手段のエントリの一つに登録する際に、前記リード要求の種別に応じて前記エントリの利用状態を更新するキャッシュ状態更新手段と
を備えたことを特徴とするメモリシステム制御装置。
【００９０】
（付記２）前記キャッシュ状態更新手段は、前記プロセッサの一つから書込みを前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「強い更新状態」として登録することを特徴とする付記１に記載のメモリシステム制御装置。
【００９１】
（付記３）前記キャッシュ状態更新手段は、前記プロセッサの一つから書込む可能性のあるデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「弱い更新状態」として登録することを特徴とする付記１または２に記載のメモリシステム制御装置。
【００９２】
（付記４）前記キャッシュ状態更新手段は、前記プロセッサの一つから「共有状態」への遷移を前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「弱い更新状態」として登録することを特徴とする付記１、２または３に記載のメモリシステム制御装置。
【００９３】
（付記５）前記キャッシュ状態更新手段は、前記プロセッサの一つから「無効状態」への遷移を前提としたデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持手段に「弱い更新状態」として登録することを特徴とする付記１〜４のいずれか一つに記載のメモリシステム制御装置。
【００９４】
（付記６）前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「強い更新状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得のみを該データの取得手順として選定することを特徴とする付記１〜５のいずれか一つに記載のメモリシステム制御装置。
【００９５】
（付記７）前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「弱い更新状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得と主記憶からのデータ取得とを該データの取得手順として選定することを特徴とする付記１〜６のいずれか一つに記載のメモリシステム制御装置。
【００９６】
（付記８）前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が「共有状態」である場合に、当該のキャッシュ状態保持手段に対応するプロセッサからのデータ取得を該データの取得手順として選定することを特徴とする付記１〜７のいずれか一つに記載のメモリシステム制御装置。
【００９７】
（付記９）前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれかのエントリに存在し、そのエントリの利用状態が全て「無効状態」である場合に、主記憶からのデータ取得のみを該データの取得手順として選定することを特徴とする付記１〜８のいずれか一つに記載のメモリシステム制御装置。
【００９８】
（付記１０）前記データ取得手順選択手段は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持手段のいずれのエントリにも存在しない場合に、主記憶からのデータ取得のみを該データの取得手順として選定することを特徴とする付記１〜９のいずれか一つに記載のメモリシステム制御装置。
【００９９】
（付記１１）プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて前記キャッシュメモリと主記憶とのコヒーレンシを制御するメモリシステム制御方法であって、
前記プロセッサの有するキャッシュメモリの各エントリに格納されているデータのアドレス情報を記憶し、各エントリの利用状態を「強い更新状態」、「弱い更新状態」、「共有状態」もしくは「無効状態」のいずれかひとつの状態として保持するキャッシュ状態保持工程と、
前記プロセッサの一つからデータのリード要求を受けた場合に、前記キャッシュ状態保持工程により保持されている前記アドレス情報と前記利用状態に基づいて前記データの取得手順を少なくとも一つ選択するデータ取得手順選択工程と、
前記データ取得手順選択工程の選択した取得手順により取得されたデータから最新状態のデータを選択し、要求元のプロセッサに送出するリードデータ選択送出工程と、
前記データのアドレス情報を要求元のプロセッサに対応するキャッシュ状態保持工程のエントリの一つに登録する際に、前記リード要求の種別に応じて前記エントリの利用状態を更新するキャッシュ状態更新工程と
を含んだことを特徴とするメモリシステム制御方法。
【０１００】
（付記１２）前記キャッシュ状態更新工程は、前記プロセッサの一つから書込みを前提としたリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持工程に「強い更新状態」として登録することを特徴とする付記１１に記載のメモリシステム制御方法。
【０１０１】
（付記１３）前記キャッシュ状態更新工程は、前記プロセッサの一つから書込む可能性のあるデータとしてリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持工程に「弱い更新状態」として登録することを特徴とする付記１１または１２に記載のメモリシステム制御方法。
【０１０２】
（付記１４）前記キャッシュ状態更新工程は、前記プロセッサの一つから「共有状態」への遷移を前提としたリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持工程に「弱い更新状態」として登録することを特徴とする付記１１、１２または１３に記載のメモリシステム制御方法。
【０１０３】
（付記１５）前記キャッシュ状態更新工程は、前記プロセッサの一つから「無効状態」への遷移を前提としたリード要求を受けた場合に、該データの利用状態を前記キャッシュ状態保持工程に「弱い更新状態」として登録することを特徴とする付記１１〜１４のいずれか一つに記載のメモリシステム制御方法。
【０１０４】
（付記１６）前記データ取得手順選択工程は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持工程のいずれかのエントリに存在し、そのエントリの利用状態が「強い更新状態」である場合に、当該のキャッシュ状態保持工程に対応するプロセッサからのデータ取得のみを該データの取得手順として選定することを特徴とする付記１１〜１５のいずれか一つに記載のメモリシステム制御方法。
【０１０５】
（付記１７）前記データ取得手順選択工程は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持工程のいずれかのエントリに存在し、そのエントリの利用状態が「弱い更新状態」である場合に、当該のキャッシュ状態保持工程に対応するプロセッサからのデータ取得と主記憶からのデータ取得とを該データの取得手順として選定することを特徴とする付記１１〜１６のいずれか一つに記載のメモリシステム制御方法。
【０１０６】
（付記１８）前記データ取得手順選択工程は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持工程のいずれかのエントリに存在し、そのエントリの利用状態が「共有状態」である場合に、当該のキャッシュ状態保持工程に対応するプロセッサからのデータ取得を該データの取得手順として選定することを特徴とする付記１１〜１７のいずれか一つに記載のメモリシステム制御方法。
【０１０７】
（付記１９）前記データ取得手順選択工程は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持工程のいずれかのエントリに存在し、そのエントリの利用状態が全て「無効状態」である場合に、主記憶からのデータ取得のみを該データの取得手順として選定することを特徴とする付記１１〜１８のいずれか一つに記載のメモリシステム制御方法。
【０１０８】
（付記２０）前記データ取得手順選択工程は、前記プロセッサの一つからリード要求されたデータのアドレスが前記キャッシュ状態保持工程のいずれのエントリにも存在しない場合に、主記憶からのデータ取得のみを該データの取得手順として選定することを特徴とする付記１１〜１９のいずれか一つに記載のメモリシステム制御方法。
【産業上の利用可能性】
【０１０９】
以上のように、本発明にかかるメモリシステム制御装置およびメモリシステム制御方法は、プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおけるコヒーレンシ制御に有用であり、特に、主記憶とのトランザクションを減少させたい場合に適している。
【図面の簡単な説明】
【０１１０】
【図１】本実施例に係るメモリシステム制御方式について説明するための説明図である。
【図２】本実施例に係るメモリシステム制御装置の構成を示す機能ブロック図である。
【図３】本実施例に係るメモリシステム制御方式における「弱い更新状態」の場合の制御手順を説明するための説明図である。
【図４】本実施例に係るメモリシステム制御方式における「強い更新状態」の場合の制御手順を説明するための説明図である。
【図５】本実施例に係るメモリシステム制御方式における「弱い更新状態」の場合の制御手順を示すタイムチャートである。
【図６】本実施例に係るメモリシステム制御方式における「強い更新状態」の場合の制御手順を示すタイムチャートである。
【図７−１】ＭＥＳＩプロトコルによるメモリシステム制御方式について説明するための説明図である。
【図７−２】ＭＳＩプロトコルによるメモリシステム制御方式について説明するための説明図である。
【図８】ＭＳＩプロトコルによるメモリシステム制御方式における「更新状態」の場合の制御手順を説明するための説明図である。
【符号の説明】
【０１１１】
１００ａ，１００ｂ，１００ｃ，１００ｄ    プロセッサ
１１０ａ，１１０ｂ，１１０ｃ，１１０ｄ    キャッシュメモリ
２００    メモリシステム制御装置
２１０ａ，２１０ｂ，２１０ｃ，２１０ｄ    プロセッサインターフェース部
２２０    リードデータ選択送出部
２３０    キャッシュ制御部
２３１ａ，２３１ｂ，２３１ｃ，２３１ｄ    スヌープキャッシュ
２３２    データ取得手順選択部
２３３    スヌープキャッシュ更新部
２４０    主記憶インターフェース部
３００    主記憶
【図１】
2006048406.tif 000003
【図２】
2006048406.tif 000004
【図３】
2006048406.tif 000005
【図４】
2006048406.tif 000006
【図５】
2006048406.tif 000007
【図６】
2006048406.tif 000008
【図７−１】
2006048406.tif 000009
【図７−２】
2006048406.tif 000010
【図８】
2006048406.tif 000011