(57)【要約】  同期プリミティブを格納しかつ同期プリミティブの操作に係るオーバーヘッドの軽減を図るキャッシュメモリ装置を提供する。  データと属性情報とを対応付けて格納することができる記憶部（１１３１Ａ）と、データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、ＣＰＵ（１１１Ａ）から取得し、前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであることを示す同期プリミティブ属性情報を、対応付けて記憶部（１１３１Ａ）に格納するキャッシュコントローラ（１１３２Ａ）とを備える。キャッシュコントローラ（１１３２Ａ）は、同期プリミティブ属性情報に対応して記憶部（１１３１Ａ）に格納されたデータのパージを禁止する。
2009122694.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、
データと属性情報とを対応付けて格納することができる記憶手段と、
データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、
前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段と
を備えることを特徴とするキャッシュメモリ装置。
【請求項２】
前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止する
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納する
ことを特徴とする請求項１または請求項２に記載のキャッシュメモリ装置。
【請求項４】
請求項１から請求項３のいずれか１項に記載のキャッシュメモリ装置と、
特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置と
を備えることを特徴とするプロセッサシステム。
【請求項５】
請求項１から請求項３のいずれか１項に記載の第１のキャッシュメモリ装置と、
請求項１から請求項３のいずれか１項に記載の第２のキャッシュメモリ装置と、
前記第１のキャッシュメモリ装置および前記第２のキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置と
を備えることを特徴とするキャッシュメモリシステム。
【請求項６】
前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する
ことを特徴とする請求項５に記載のキャッシュメモリシステム。
【請求項７】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置に格納されている前記同期プリミティブ属性情報を削除する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項８】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置に格納されている前記第１のデータを、前記第２のデータに更新する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項９】
前記第２のキャッシュメモリ装置に、第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記第２のキャッシュメモリ装置は、前記第２のデータおよび前記第２のデータに対応する同期プリミティブ属性情報を格納することをやめて、
前記スヌープ装置は、前記第２のデータと前記第２のデータに対応する同期プリミティブ属性情報とを、前記第１のキャッシュメモリ装置に格納する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項１０】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置から前記第１のデータを取得し、前記取得された第１のデータと前記第１のデータに対応する同期プリミティブ属性情報とを、前記第２のキャッシュメモリ装置に格納し、
前記第２のキャッシュメモリ装置は、前記格納された第１のデータを前記要求信号に対して応答する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項１１】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置から前記第１のデータを取得し、前記取得された第１のデータを前記要求信号に対して応答する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項１２】
請求項５から請求項１１のいずれか１項に記載のキャッシュメモリシステムと、
前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置と
を備えることを特徴とするプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置などに関し、特に同期プリミティブとして用いられるデータのアクセスを効率化する技術に関する。
【背景技術】
【０００２】
昨今、高い性能が要求されるコンピュータシステムには、さまざまな粒度レベルで並列処理機構が導入されている。例えば、命令レベルの並列性を得るためＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）、ｓｕｐｅｒｓｃａｌａｒなどが広く実用化され、命令流レベルの並列性を得るためマルチスレッド処理やマルチタスク処理などが広く実用化され、また、ＬＳＩレベルの並列性を得るためマルチプロセッサ構成、マルチコア構成などが広く実用化されている。【０００３】
コンピュータシステムにおいて、１つ以上のプロセッサが複数の処理（プロセス）を並列に実行し、複数のプロセスで一つの資源を共有する場合に、プロセス間の同期を取るための種々の技術が用いられる。【０００４】
ここで、プロセス間の同期を取るとは、所望の処理結果を得るために、複数のプロセスから共有資源に対して行われるアクセスの順序を保証することをいう。【０００５】
例えば、特許文献１には、複数プロセスを並列に実行する１つ以上のプロセッサが、各プロセッサに個別に接続されるローカルキャッシュを利用することによって、共有メモリへのアクセスを減少させながら、プロセス間の同期を取る技術が開示されている。【０００６】
この技術では、プロセス間の同期を取るためにバリア命令が使われる。バリア命令は、必要に応じてプロセッサの実行を停止させることで、アクセスの順序を保証する。【０００７】
プロセス間の同期を取るための技術として、共有資源に対応する同期プリミティブを設け、複数プロセスのうち同期プリミティブの更新に成功した１つが共有資源を排他的にアクセスする技術も、広く実用化されている。【０００８】
この技術では、同期プリミティブが未使用を示す状態にあることを確認後、使用中を示す状態に更新できたプロセスのみが、対応する共有資源を排他的に使用する処理区間であるクリティカルセクションに入ることができる。セマフォやミューテックスは、同期プリミティブの一例である。【０００９】
複数のプロセスが同期プリミティブを矛盾なく更新するために、同期プリミティブのリード・モディファイ・ライト操作はアトミック（不可分）に行われる必要がある。【００１０】
アトミックな操作の不可分性から、複数のプロセスによるアトミックな操作は並列実行することはできないから、同期プリミティブをアトミックに操作する期間が長くなるほど、プロセスの並列性が損なわれ、システムのスループットに悪影響が出る。【００１１】
そこで、特許文献２には、並列動作する複数のプロセッサのそれぞれに対応してセマフォバッファを設け、それぞれのセマフォバッファにおいて、セマフォの更新を並行して実行する技術が開示されている。【００１２】
また、非特許文献１には、セマフォの更新権としてのリザベーションの取得を伴ったメモリ参照命令ｌｗａｒｘ、およびリザベーションが取得されている場合にのみセマフォを更新する条件付きメモリ更新命令ｓｔｗｃｘ．を設けたコンピュータアーキテクチャが開示されている。【００１３】
このコンピュータアーキテクチャによれば、ｓｔｗｃｘ．命令が成功するまで、ｌｗａｒｘ命令とｓｔｗｃｘ．命令とを繰り返すことで、等価的にアトミックなリード・モディファイ・ライト操作が可能となる。アトミックな操作の期間は細分され、システムのスループットに対する悪影響は緩和される。【００１４】
以下、ｌｗａｒｘ命令およびｓｔｗｃｘ．命令で定義されたリザベーションの操作が可能なマルチプロセッサシステムの一具体例を説明する。なお、ｌｗａｒｘ命令およびｓｔｗｃｘ．命令は、データのキャッシュ操作を具体的に定義しないため、データキャッシュは周知慣用の一般的な構成を示している。【００１５】
図１３は、マルチプロセッサシステムの機能的な構成を示すブロック図である。図１３に示されるマルチプロセッサシステムは、例えば半導体システムＬＳＩ（ＳｏＣ）または情報機器セットとして実現される。【００１６】
図１３において、ＣＰＵ（中央処理装置）１１１およびＣＰＵ１２１は、ＩＣＡＣＨＥ（命令キャッシュメモリ装置）１１２およびＩＣＡＣＨＥ１２２から、命令の集合体であるプログラムをそれぞれ読み込んで命令を実行する情報処理回路であり、マイクロプロセッサまたは単にプロセッサとも呼ばれる。【００１７】
ＣＰＵ１１１は、一例として、ＩＣＡＣＨＥ１１２から命令を読み込んでデコードするＦＥＴＣＨ／ＤＥＣ（フェッチおよびデコード部）１１４、デコードされた命令を実行するＥＸＥＣ（実行部）１１５、および複数のレジスタからなるＲＥＧ（レジスタ部）１１６から構成される。【００１８】
ＣＰＵ１２１も同様に、ＩＣＡＣＨＥ１２２から命令を読み込んでデコードするＦＥＴＣＨ／ＤＥＣ１２４、ＥＸＥＣ１２５、およびＲＥＧ１２６から構成される。【００１９】
ＩＣＡＣＨＥ１１２は、ＭＥＭ（主記憶装置）１０６に格納されるプログラムを先読みして一時的に保持し、命令信号線１１７を通してＣＰＵ１１１に高速に命令流を供給するバッファである。【００２０】
ＩＣＡＣＨＥ１２２も同様に、ＭＥＭ１０６に格納されるプログラムを先読みして一時的に保持し、命令信号線１２７を通してＣＰＵ１２１に高速に命令流を供給するバッファである。【００２１】
ＤＣＡＣＨＥ（データキャッシュメモリ装置）１１３は、ＭＥＭ１０６に格納されるデータを先読みして一時的に保持し、ＣＰＵ１１１に高速にデータを供給するバッファである。また、ＤＣＡＣＨＥ１１３は、ＣＰＵ１１１がＭＥＭ１０６に書き込むべきデータを一時的に保持し、後で時期を見計らってＭＥＭ１０６に書き込む。ＤＣＡＣＨＥ１１３は、このような動作を、ＣＰＵ１１１のＥＸＥＣ１１５から要求信号線１１８を通して与えられるアクセス要求信号に従って実行する。【００２２】
ＤＣＡＣＨＥ１２３も、ＤＣＡＣＨＥ１１３と同様の動作を、ＣＰＵ１２１のＥＸＥＣ１２５から要求信号線１２８を通して与えられるアクセス要求信号に従って実行する。【００２３】
ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３は、例えば４ウェイセットアソシアティブといった周知慣用の構成（図示せず）で実現される。【００２４】
図１３において、ＣＰＵ１１１とＣＰＵ１２１とは、機能的に異種のヘテロジニアスであってもよく、同種のホモジニアスであってもよい。また、ＩＣＡＣＨＥ１１２とＩＣＡＣＨＥ１２２とは、容量や構成、性能が異なってもよく、ＤＣＡＣＨＥ１１３とＤＣＡＣＨＥ１２３とは、容量や内部的な構成、性能が異なってもよい。【００２５】
ＢＣＵ（バス制御装置）１０１は、共有バス１０４に接続される複数のブロック間のデータ転送を制御するバス制御装置である。【００２６】
共有バス１０４は、複数のブロックに接続され複数のブロック間でデータを転送するための、アドレス、データ線、制御信号などから構成されるバスであり、時分割して利用される。ある瞬間に接続されたいずれかのブロックがマスタとなり、スレーブとなる他のブロックとの間でデータが転送される。【００２７】
ＭＣＵ（メモリ制御装置）１０５は、ＣＰＵ１１１、ＣＰＵ１２１、およびその他のマスタがＭＥＭ１０６へデータを読み書きするためのインターフェイスである。【００２８】
ＭＥＭ１０６は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、フラッシュメモリなどの半導体メモリであり、ＣＰＵ１１１およびＣＰＵ１２１が処理するデータやプログラムを格納する。【００２９】
ＭＥＭ１０６は、ＣＰＵ１１１およびＣＰＵ１２１と比べて動作速度が遅く、この動作速度の差を埋めるために、ＭＥＭ１０６と比べて高速小容量のＩＣＡＣＨＥ１１２、ＤＣＡＣＨＥ１１３、ＩＣＡＣＨＥ１２２、およびＤＣＡＣＨＥ１２３が設けられる。【００３０】
近年、ＣＰＵ１１１およびＣＰＵ１２１の動作速度とＭＥＭ１０６の動作速度の差が開いており、ＭＥＭ１０６のアクセスがシステム性能上のボトルネックとなっている。【００３１】
ＰＥＲＩＰＨＥＲＡＬ（周辺回路）１０７およびＰＥＲＩＰＨＥＲＡＬ１０８は、共有バス１０４に接続されＣＰＵ１１１の補助機能の一部を担うブロックであり、割込み制御、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）、外部インターフェイス、タイマー、カウンター、リセット制御、Ａ／Ｄ変換器、Ｄ／Ａ変換器、シリアルＩＯなど様々な機能が実装され得る。【００３２】
スヌープバス１０３は、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３、およびＳＮＰＣ（スヌープ制御装置）１０２を接続し、ＤＣＡＣＨＥ１１３とＤＣＡＣＨＥ１２３との間のデータ転送のために使われる。【００３３】
ＳＮＰＣ１０２は、スヌープバス１０３と共有バス１０４に接続され、ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３に与えられるアクセス要求に応じて、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３、およびＭＥＭ１０６の間のデータ転送を制御することにより、ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３のデータの一貫性を維持する。ＳＮＰＣ１０２は、ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３に対するキャッシュコントローラの機能を含む。【００３４】
このように構成されるマルチプロセッサシステムにおいて、ＣＰＵ１１１およびＣＰＵ１２１が同じ共有資源に対応する同期プリミティブに対して競合する更新処理を行った場合の具体的動作の一例を説明する。以下、同期プリミティブをセマフォとして説明する。【００３５】
ＣＰＵ１１１は、所定のアドレス（セマフォアドレスという）に配置されるデータ（セマフォ）をロードするためのｌｗａｒｘ命令を実行する。ＭＥＭ１０６のセマフォの複製が、共有バス１０４を通して、ＤＣＡＣＨＥ１１３に格納され、ＤＣＡＣＨＥ１１３に格納されたセマフォがＣＰＵ１１１に供給される。【００３６】
ＣＰＵ１１１にてリザベーションが取得されたことを表すため、ＲＥＧ１１６に設けられるＲＥＳＥＲＶＥビットがセットされる。【００３７】
ＳＮＰＣ１０２は、ＣＰＵ１１１およびＣＰＵ１２１がセマフォアドレスに対して行う更新操作を監視し始める。【００３８】
ＣＰＵ１２１は、同じセマフォアドレスに配置されるセマフォをロードするためのｌｗａｒｘ命令を実行する。ＭＥＭ１０６のセマフォが共有バス１０４を通してＤＣＡＣＨＥ１２３に格納されるか、または、ＤＣＡＣＨＥ１１３のセマフォが、ＳＮＰＣ１０２により、スヌープバス１０３を通してＤＣＡＣＨＥ１２３へ格納される。【００３９】
ＣＰＵ１２１にてリザベーションが取得されたことを表すため、ＲＥＧ１２６に設けられるＲＥＳＥＲＶＥビットがセットされる。【００４０】
ＳＮＰＣ１０２は、ＣＰＵ１１１およびＣＰＵ１２１がセマフォアドレスに対して行う更新操作の監視を続行する。【００４１】
ＣＰＵ１１１およびＣＰＵ１２１は、セマフォを更新するための第１の値および第２の値をそれぞれ計算する。【００４２】
ＣＰＵ１１１は、セマフォアドレスに第１の値をストアするためのｓｔｗｃｘ．命令を実行する。ＲＥＧ１１６のＲＥＳＥＲＶＥビットがセットされているので、ＤＣＡＣＨＥ１１３のセマフォは第１の値に書き換えられる。【００４３】
ＤＣＡＣＨＥ１１３からセマフォがパージされている場合、ＭＥＭ１０６のセマフォが共有バス１０４を通してＤＣＡＣＨＥ１１３に格納されるか、または、ＤＣＡＣＨＥ１２３のセマフォが、ＳＮＰＣ１０２により、スヌープバス１０３を通してＤＣＡＣＨＥ１１３へ格納されてから、第１の値に書き換えられる。これによりＣＰＵ１１１は、共有資源のアクセス権を取得する。【００４４】
ＤＣＡＣＨＥ１１３がライトスルー方式であれば、第１の値は直ちにＭＥＭ１０６へ書き込まれる。ＤＣＡＣＨＥ１１３がライトバック方式であれば、第１の値は後で必要に応じてＭＥＭ１０６へ書き込まれる。【００４５】
ＣＰＵ１１１にてリザベーションが破棄されたことを表すため、ＲＥＧ１１６のＲＥＳＥＲＶＥビットはクリアされる。【００４６】
ＳＮＰＣ１０２は、ＣＰＵ１１１がＤＣＡＣＨＥ１１３のセマフォを第１の値に更新したことを検知し、スヌープバス１０３を通して、ＤＣＡＣＨＥ１２３のセマフォを無効化するか、またはＤＣＡＣＨＥ１２３のセマフォを第１の値に更新する。【００４７】
ＳＮＰＣ１０２は、さらに、ＣＰＵ１２１にてリザベーションが破棄されたことを表すため、信号線１２９を介して、ＣＰＵ１２１におけるＲＥＧ１２６のＲＥＳＥＲＶＥビットをクリアする。【００４８】
ＣＰＵ１２１は、ＣＰＵ１１１よりも遅れて、第２の値をセマフォアドレスにストアするためのｓｔｗｃｘ．命令を実行する。ＲＥＧ１２６のＲＥＳＥＲＶＥビットがクリアされているので、第２の値の実効的なストア動作は行われず、ＣＰＵ１２１は、共有資源のアクセス権を取得しない。【００４９】
以上説明したように、ＣＰＵ１１１およびＣＰＵ１２１の一方がセマフォを更新したときに、ＳＮＰＣ１０２の制御によって、信号線１１９または信号線１２９を介して、他方のＲＥＳＥＲＶＥビットがクリアされるので、遅れて実行されたｓｔｗｃｘ．命令ではセマフォは更新されない。【００５０】
これにより、ＣＰＵ１１１およびＣＰＵ１２１のうち、先にｓｔｗｃｘ．命令を実行した一方のみが、共有資源のアクセス権を取得し、共有資源を排他的にアクセス可能となることによって、プロセス間の同期が取られる。
【特許文献１】特開平４−２７９９６０号公報
【特許文献２】特開平９−１３８７７８号公報
【非特許文献１】３２ビットＰｏｗｅｒＰＣ  アーキテクチャプログラミング環境、Ｆｒｅｅｓｃａｌｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ，Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ，ＭＰＣＦＰＥ３２ＢＪ  Ｒｅｖ．１，１２／２００５（原本ＭＰＣＦＰＥ３２Ｂ  Ｒｅｖ．３）
【発明の開示】
【発明が解決しようとする課題】
【００５１】
前述のマルチプロセッサシステムによれば、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３からセマフォがパージされる際に、セマフォのＭＥＭ１０６へのライトバック動作が発生する。また、パージ後、再びセマフォがアクセスされる場合、ＭＥＭ１０６からＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３へセマフォの読み出し動作が発生する。【００５２】
これらの動作は、マルチプロセッサシステムに限らず、シングルプロセッサシステムにおいても、同期プリミティブ（セマフォ）をキャッシュに保持するシステムにおいてオーバーヘッドとなる。【００５３】
しかしながら、従来、これらの動作の発生頻度を削減するための効果的な対策が取られたキャッシュメモリ装置は知られていない。【００５４】
本発明は、このような背景に鑑みてなされたものであり、同期プリミティブを格納し、かつ前述したオーバーヘッドの軽減を図るキャッシュメモリ装置の提供を目的とする。
【課題を解決するための手段】
【００５５】
上記問題を解決するために、本発明のキャッシュメモリ装置は、主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、データと属性情報とを対応付けて格納することができる記憶手段と、データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであり、かつパージが禁止されることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段とを備える。【００５６】
また、前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止してもよい。【００５７】
また、前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納してもよい。【００５８】
本発明は、前記のキャッシュメモリ装置と、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置とを備えるプロセッサシステムとしても実現できる。【００５９】
本発明は、前記２つのキャッシュメモリ装置と、それぞれのキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置とを備えるキャッシュメモリシステムとしても実現できる。【００６０】
また、前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整してもよい。【００６１】
本発明は、前記キャッシュメモリシステムと、前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置とを備えるプロセッサシステムとしても実現できる。
【発明の効果】
【００６２】
本発明の効果は、従来技術に比べ、マルチプロセッサ間やマルチスレッド間の相互排他制御のための、同期プリミティブの操作に係るオーバーヘッドを低減することである。データのアクセスを要求する特定の命令をＣＰＵが実行するときに、ＣＰＵから与えられる指示信号に応じて同期プリミティブ属性情報をキャッシュメモリ装置に保持することにより、同期プリミティブをキャッシュメモリ装置に常駐させるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
【図面の簡単な説明】
【００６３】
【図１】図１は、第１実施形態に係るシングルプロセッサシステムの機能的な構成の一例を示すブロック図である。
【図２】図２は、同期プリミティブ操作命令の一例を示す図である。
【図３】図３は、ＣＰＵおよびキャッシュメモリの詳細な構成の一例を示すブロック図である。
【図４】図４は、キャッシュ制御信号の一例を示す図である。
【図５】図５は、ＣＰＵおよびキャッシュメモリの動作の一例を示す図である。
【図６】図６は、キャッシュメモリの機能的な構成の他の一例を示すブロック図である。
【図７】図７は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【図８】図８は、第２実施形態に係るマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。
【図９】図９は、ＣＰＵ、キャッシュメモリ、およびＳＮＰＣの動作の一例を示す図である。
【図１０】図１０は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【図１１】図１１は、ＣＰＵ、キャッシュメモリ、およびＳＮＰＣの動作の他の一例を示す図である。
【図１２】図１２は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【図１３】図１３は、従来のマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。
【符号の説明】
【００６４】
１０１  ＢＣＵ（バス制御装置）
１０２、１０２Ａ  ＳＮＰＣ（スヌープ制御装置）
１０３  スヌープバス
１０４  共有バス
１０５  ＭＣＵ（メモリ制御装置）
１０６  ＭＥＭ（主記憶装置）
１０７、１０８  ＰＥＲＩＰＨＥＲＡＬ（周辺回路）
１１１、１２１、１１１Ａ、１２１Ａ  ＣＰＵ（中央処理装置）
１１２、１２２  ＩＣＡＣＨＥ（命令キャッシュメモリ装置）
１１３、１２３、１１３Ａ、１１３Ｂ、１２３Ａ  ＤＣＡＣＨＥ（データキャッシュメモリ装置）
１１４、１２４  ＦＥＴＣＨ／ＤＥＣ（フェッチおよびデコード部）
１１５、１２５  ＥＸＥＣ（実行部）
１１６、１２６  ＲＥＧ（レジスタ部）
１１７、１２７  命令信号線
１１８、１２８  要求信号線
１１９、１２９  信号線
１１８Ａ、１２８Ａ  制御信号線
１１３１Ａ、１１３１Ｂ  記憶部
１１３２Ａ、１１３２Ｂ  キャッシュコントローラ
【発明を実施するための最良の形態】
【００６５】
以下の説明において、本発明のプロセッサシステムは、広く普及する汎用的な情報処理システムとして例示される。以下の実施形態において、シングルプロセッサ構成では、マルチスレッド処理が、マルチプロセッサ（マルチコア）構成ではマルチプロセッサ処理またはマルチプロセッサ処理およびマルチスレッド処理が、命令流レベルの並列処理として利用される。【００６６】
（第１実施形態）
まず、第１実施形態に係るプロセッサシステムについて説明する。【００６７】
図１は、第１実施形態に係るプロセッサシステムの機能的な構成の一例を示すブロック図である。このプロセッサシステムは、１つの並列処理プロセッサを含んで構成される。図１のプロセッサシステムは、半導体システムＬＳＩ（ＳｏＣ）または情報機器セットとして実現される。【００６８】
図１のプロセッサシステムは、図１３の従来のマルチプロセッサシステムと比べて、第２のプロセッサに関係するＣＰＵ１２１、ＩＣＡＣＨＥ１２２、ＤＣＡＣＨＥ１２３、ならびに、スヌープ機能に関係するＳＮＰＣ１０２、スヌープバス１０３、信号線１１９、および信号線１２９が省略され、制御信号線１１８Ａが追加される。また、ＣＰＵ１１１およびＤＣＡＣＨＥ１１３は、ＣＰＵ１１１ＡおよびＤＣＡＣＨＥ１１３Ａで置き換えられる。【００６９】
ＣＰＵ１１１Ａは、いくつかの特定の命令を実行するときに、通常の命令を実行するときと同様の、命令に応じたデータのアクセスを要求する要求信号を要求信号線１１８に出力するのに加えて、要求されるデータが同期プリミティブであることを示す指示信号を、制御信号線１１８Ａに出力する。これらの特定の命令を、同期プリミティブ操作命令と総称する。【００７０】
図２は、同期プリミティブ操作命令の一例を説明する図である。【００７１】
図２に示されるように、ｌｗａｒｘ２命令、ｓｔｗｃｘ２命令、ａｌｌｏｃｓｅｍ命令、およびｒｅｌｓｅｍ命令が、同期プリミティブ操作命令として設けられる。【００７２】
ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令は、それぞれ従来技術の項で説明したｌｗａｒｘ命令およびｓｔｗｃｘ．命令に対して、キャッシュ上の同期プリミティブ（セマフォ）、および後述する同期プリミティブ属性情報を明示的に操作する機能を追加した命令である。【００７３】
ａｌｌｏｃｓｅｍ命令およびｒｅｌｓｅｍ命令は、本発明が新たに提案する命令である。【００７４】
それぞれの命令の概要と効果は、図２に示すとおりである。【００７５】
ＤＣＡＣＨＥ１１３Ａは、例えば４ウェイセットアソシアティブといった周知の構成の上に、データが有効な同期プリミティブであることを示す同期プリミティブ属性情報を保持し、かつ制御信号線１１８Ａから取得される制御信号に応じて同期プリミティブ属性情報を操作する機能が追加されたキャッシュメモリ装置である。【００７６】
図３は、ＤＣＡＣＨＥ１１３Ａの機能的な構成の一例を示すブロック図である。【００７７】
図３に示されるように、ＤＣＡＣＨＥ１１３Ａは、記憶部１１３１Ａおよびキャッシュコントローラ１１３２Ａからなる。【００７８】
記憶部１１３１Ａは、各ラインに同期プリミティブ属性情報を格納する同期プリミティブビットＳＰを有している。同期プリミティブビットＳＰは、セットされている場合に、ラインのデータの一部または全部に有効な同期プリミティブが保持されていることを表す。有効ビットＶ、タグＴＡＧ、ダーティビットＤ、およびデータは、キャッシュメモリ装置に保持される周知の情報であるため、説明を省略する。【００７９】
キャッシュコントローラ１１３２Ａは、同期プリミティブビットＳＰがセットされたラインを、例えばリプレースの候補から除外するなどして、ＤＣＡＣＨＥ１１３Ａからパージされることを禁止する。【００８０】
キャッシュコントローラ１１３２Ａは、要求信号線１１８を通して、要求信号を取得する。要求信号は、例えば、Ａｄｄｒｅｓｓ信号、Ｄａｔａ信号、およびデータの参照および更新のいずれかを示すＲ／Ｗ信号からなる。【００８１】
また、キャッシュコントローラ１１３２Ａは、制御信号線１１８Ａを通して、要求信号で要求されるデータが同期プリミティブであることを示す指示信号を取得する。指示信号は、例えば、ＳＰＲＥＱ信号およびＳＰＣＴＬ信号からなる。【００８２】
ＳＰＲＥＱ信号は、要求信号が同期プリミティブのロードおよびストア操作を要求していることを示す。ＳＰＣＴＬ信号は、要求信号が同期プリミティブのアロケートおよび開放操作を要求していることを示す。【００８３】
図４は、命令に対応する要求信号および制御信号を説明する図である。【００８４】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令は、アドレスｒＡに配置されるデータをｒＤレジスタにロードしてリザベーションを取得することを意味する。【００８５】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令は、ｒＳレジスタのデータをアドレスｒＡにストアしてリザベーションを破棄することを意味する。この命令は、リザベーションが取得されているときのみ実行される条件命令である。【００８６】
ａｌｌｏｃｓｅｍ  ｒＳ，ｒＡ命令は、アドレスｒＡに配置されるデータをＤＣＡＣＨＥ１１３Ａに確保し、ｒＳレジスタの値をアドレスｒＡにストアすることを意味する。【００８７】
ｒｅｌｓｅｍ  ｒＡ命令は、アドレスｒＡに配置されるデータをＤＣＡＣＨＥ１１３Ａから開放することを意味する。【００８８】
その他の命令は、同期プリミティブ操作命令以外の一般の命令である。【００８９】
図４には、ＣＰＵ１１１Ａがそれぞれの命令を実行するときに、要求信号線１１８にて伝送される要求信号Ａｄｄｒｅｓｓ、Ｄａｔａ、Ｒ／Ｗ、および制御信号線１１８Ａにて伝送される指示信号ＳＰＲＥＱ、ＲＰＣＴＬの内容が示される。【００９０】
図５は、命令ごとに、ＣＰＵ１１１ＡおよびＤＣＡＣＨＥ１１３Ａが行う動作を示す図である。ＤＣＡＣＨＥ１１３Ａは、ＣＰＵ１１１Ａがこれらの命令を実行するときに出力する要求信号および指示信号（図４を参照）に従って動作する。【００９１】
以下、それぞれの命令に対応する動作を詳しく説明する。なお、ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令について、それぞれｌｗａｒｘ命令およびｓｔｗｃｘ．命令と共通する動作についても、必要に応じて説明する。【００９２】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令が実行されるとき、まず、Ｓ１１、Ｓ１２で示されるキャッシュフィル動作が行われる。すなわち、ＤＣＡＣＨＥ１１３ＡにアドレスｒＡに配置されるデータが格納されていない場合、およびそのようなデータが格納されていても対応する同期プリミティブビットＳＰがクリアされている場合にミスと判断し（Ｓ１１で真）、キャッシュコントローラ１１３２Ａは、共有バス１０４を通して、ＭＥＭ１０６からアドレスｒＡを包含するアラインメントされたライン長のデータを読み出し、ＤＣＡＣＨＥ１１３Ａの記憶部１１３１Ａの１つのラインに書き込む（Ｓ１２）。【００９３】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に格納されたデータをｒＤにロードする（Ｓ１３）。キャッシュコントローラ１１３２Ａは、対応する同期プリミティブビットＳＰをセットする（Ｓ１４）。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをセットする（Ｓ１５）。【００９４】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令が実行されるとき、ＲＥＳＥＲＶＥビットがセットされていれば（Ｓ２１で真）、ＣＰＵ１１１Ａは要求信号および指示信号を出力する。キャッシュコントローラ１１３２Ａは、前述のＳ１１、Ｓ１２と同じキャッシュフィル動作を行う（Ｓ２２）。【００９５】
キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に、ＣＰＵ１１１Ａから与えられるｒＳレジスタの値をストアし（Ｓ２３）、対応する同期プリミティブビットＳＰをセットする（Ｓ２４）。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする（Ｓ２５）。【００９６】
ａｌｌｏｃｓｅｍ  ｒＳ，ｒＡ命令が実行されるとき、キャッシュコントローラ１１３２Ａは、前述のＳ１１、Ｓ１２と同じキャッシュフィル動作を行う（Ｓ３１）。キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分にＣＰＵ１１１Ａから与えられるｒＳレジスタの値をストアし（Ｓ３２）、対応する同期プリミティブビットＳＰをセットする（Ｓ３３）。【００９７】
ｒｅｌｓｅｍ  ｒＡ命令が実行されるとき、キャッシュコントローラ１１３２Ａは、アドレスｒＡの対応部分を含むラインをＤＣＡＣＨＥ１１３ＡからＭＥＭ１０６へライトバックし（Ｓ４１）、対応する同期プリミティブビットＳＰをクリアする（Ｓ４２）。【００９８】
なお、アドレスｒＡの対応部分を含むラインに、セマフォ以外の有効なデータが載っていない場合、Ｓ４１でライトバックを省略する実装も採用し得る。具体的に、有効ビットＶがクリアされている場合、および有効ビットＶはセットされていてもダーティビットＤがクリアされている場合にライトバックを省略できる。【００９９】
なお、ＤＣＡＣＨＥ１１３Ａにおいて、データおよび属性情報をライン単位で管理するように説明したが、１つのＴＡＧに対応して複数のサブラインを設け、サブラインごとにデータおよび属性情報を管理してもよい。【０１００】
図６は、サブラインごとにデータおよび属性情報を管理するＤＣＡＣＨＥ１１３Ｂの機能的な構成の一例を示すブロック図である。【０１０１】
ＤＣＡＣＨＥ１１３Ｂでは、記憶部１１３１Ｂにおいて、１つのタグに対して４つのサブラインが設けられ、同期プリミティブビットＳＰを含む属性ビットは、それぞれのサブラインに対応して設けられる。キャッシュコントローラ１１３２Ｂは、サブラインの単位で、データおよび属性情報を更新する。【０１０２】
ラインごとにデータおよび属性情報を管理するＤＣＡＣＨＥ１１３Ａ（図２）、および、サブラインごとにデータおよび属性情報を管理するＤＣＡＣＨＥ１１３Ｂ（図６）は、いずれも本発明のキャッシュメモリ装置の一例である。【０１０３】
また、記憶部１１３１Ａおよび記憶部１１３１Ｂは、本発明の記憶手段の一例であり、キャッシュコントローラ１１３２Ａおよびキャッシュコントローラ１１３２Ｂは、本発明の取得手段および制御手段の一例である。【０１０４】
このように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。【０１０５】
図７は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。【０１０６】
ＣＰＵ１１１Ａはマルチスレッド型プロセッサであり、複数のスレッドを並列に実行することができる。以下では、同期プリミティブをセマフォであるとして説明する。【０１０７】
（Ｓ１０１）スレッド１でａｌｌｏｃｓｅｍ命令を実行し、ＭＥＭ１０６からセマフォアドレスを包含するアラインメントされたライン長データをＤＣＡＣＨＥ１１３Ａ中のラインにロードしておく。対応ラインの同期プリミティブビットＳＰはセットされる。【０１０８】
以下、ロードおよびストアされるデータの移動を実線矢印で示し、ロードおよびストアに付随するＲＥＳＥＲＶＥビットおよび同期プリミティブビットＳＰの参照および更新を点線矢印で示す。また、ＲＥＳＥＲＶＥビットがセットされている期間および同期プリミティブビットＳＰがセットされている期間を、理解のため太線で示す。この表記は、図７、図１０、および図１２で共通に用いられる。【０１０９】
スレッド２は、スレッド１により、セマフォがＤＣＡＣＨＥ１１３Ａのライン中に確保されていることを前提として、ａｌｌｏｃｓｅｍ命令を実行しない。【０１１０】
（Ｓ１０２）スレッド２でｌｗａｒｘ２命令を実行し、同じセマフォアドレスからセマフォを読み出す。この場合、既にセマフォはＤＣＡＣＨＥ１１３Ａに格納されているので、セマフォはＤＣＡＣＨＥ１１３Ａから読み出されＣＰＵ１１１Ａのレジスタへロードされる。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセットする。【０１１１】
（Ｓ１０３）スレッド１でｌｗａｒｘ２命令を実行し、同じセマフォアドレスからセマフォをロードする。この場合、既にセマフォはＤＣＡＣＨＥ１１３Ａに格納されているので、セマフォはＤＣＡＣＨＥ１１３Ａから読み出されＣＰＵ１１１Ａのレジスタへロードされる。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセット状態に維持する。【０１１２】
スレッド１およびスレッド２で、セマフォを更新するための第１の値および第２の値がそれぞれ計算される。【０１１３】
（Ｓ１０４）スレッド１でｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第１の値はＤＣＡＣＨＥ１１３Ａのセマフォアドレスに対応する部分にストアされる。ｓｔｗｃｘ２命令の実行によりＣＰＵ１１１ＡのＲＥＳＥＲＶＥビットはクリアされる。【０１１４】
（Ｓ１０５）スレッド１よりも遅れて、スレッド２でｓｔｗｃｘ２命令を実行すると、既にＲＥＳＥＲＶＥビットがクリアされているので、セマフォは更新されない。【０１１５】
（Ｓ１０６、Ｓ１０７）スレッド２で、改めてｌｗａｒｘ２命令とｓｔｗｃｘ２命令とを行うことによって、セマフォを更新することができる。【０１１６】
（Ｓ１０８）スレッド１で、ｒｅｌｓｅｍ命令を実行し、プロセス実行完了などにより不要となったセマフォを開放する。【０１１７】
以上説明したように、第１実施形態に係るプロセッサシステムによれば、ＤＣＡＣＨＥ１１３Ａは、ＣＰＵ１１１Ａが同期プリミティブ操作命令を実行するときに、ＣＰＵ１１１Ａから与えられる制御信号に応じて同期プリミティブビットをセットする。同期プリミティブビットがセットされたデータはパージを禁止され、ＤＣＡＣＨＥ１１３Ａに常駐する。【０１１８】
その結果、ＤＣＡＣＨＥ１１３ＡとＭＥＭ１０６との間で同期プリミティブを移動（例えば、ライトバック動作やキャッシュフィル動作）する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。【０１１９】
同期プリミティブがＤＣＡＣＨＥ１１３Ａに常駐することを保証するため、キャッシュコントローラ１１３２Ａは、同期プリミティブ操作命令に応じて与えられる要求信号に対する不可分操作により、データと同期プリミティブ属性情報とをＤＣＡＣＨＥ１１３Ａへ格納する。【０１２０】
つまり、キャッシュコントローラ１１３２Ａは、データが同期プリミティブであることを示す指示信号が与えられた場合、要求信号に応じて、データと同期プリミティブ属性情報とをＤＣＡＣＨＥ１１３Ａに格納し終えるまで、後続の要求信号に対する処理を開始しない。【０１２１】
なお、前述の同期プリミティブ操作命令の代わりに、同期プリミティブ属性情報を操作するだけの専用の命令を設けて、その専用の命令で同期プリミティブ属性情報を操作するとともに、一般的なデータのロードおよびストア命令で同期プリミティブデータを操作する構成も考えられる。【０１２２】
しかしながら、本発明の構成は、そのような構成と比べて、同じ結果を得るために必要な命令数を削減できる点、および同期プリミティブデータの格納と同期プリミティブ属性情報の格納とが不可分に実行されることで、同期プリミティブデータと同期プリミティブ属性情報との整合性を保証できる点で優れている。【０１２３】
（第２実施形態）
次に、第２実施形態に係るプロセッサシステムについて説明する。【０１２４】
図８は、第２実施形態に係るプロセッサシステムの機能的な構成の一例を示すブロック図である。このプロセッサシステムは、２つのプロセッサを含むプロセッサシステム（マルチコアプロセッサ）である。図８のプロセッサシステムは、半導体システムＬＳＩ（ＳｏＣ）または情報機器セットとして実現される。【０１２５】
図８のプロセッサシステムは、図１３の従来のマルチプロセッサシステムと比べて、制御信号線１１８Ａおよび制御信号線１２８Ａが追加される。また、ＣＰＵ１１１、ＣＰＵ１２１、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３、ＳＮＰＣ１０２が、それぞれＣＰＵ１１１Ａ、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａ、ＳＮＰＣ１０２Ａで置き換えられる。【０１２６】
ＣＰＵ１１１Ａ、ＤＣＡＣＨＥ１１３Ａ、および制御信号線１１８Ａの詳細は、第１実施形態で述べたとおりである（図３、図４を参照）。ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１２３Ａ、および制御信号線１２８Ａは、ＣＰＵ１１１Ａ、ＤＣＡＣＨＥ１１３Ａ、および制御信号線１１８Ａと同様に構成される。【０１２７】
ＳＮＰＣ１０２Ａは、従来のＳＮＰＣ１０２と比べて、制御信号線１１８Ａおよび制御信号線１２８Ａを監視して指示信号を検知することにより、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する機能が追加される。【０１２８】
図９は、命令ごとに、ＣＰＵ１１１Ａ、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａ、およびＳＮＰＣ１０２Ａが行う動作を示す図である。ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａ、およびＳＮＰＣ１０２Ａは、ＣＰＵ１１１Ａが命令を実行するときに出力する要求信号および指示信号に従って動作する。【０１２９】
なお、図９で、ＣＰＵ１１１Ａ、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａのうち、命令を実行したプロセッサに関係する構成要素に「自」を付して示し、命令を実行していないプロセッサに関係する構成要素に「他」を付して示している。この表記は、図９および図１１で共通に用いられる。【０１３０】
以下、それぞれの命令に対応する動作を詳しく説明する。なお、ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令について、それぞれｌｗａｒｘ命令およびｓｔｗｃｘ．命令と共通する動作についても、必要に応じて説明する。【０１３１】
以下の説明は、命令がＣＰＵ１１１Ａによって実行される場合に適用される。命令がＣＰＵ１２１Ａによって実行される場合は、以下の説明のＣＰＵ１１１ＡとＣＰＵ１２１Ａとが入れ替わり、かつＤＣＡＣＨＥ１１３ＡとＤＣＡＣＨＥ１２３Ａとが入れ替わる。【０１３２】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令が実行されるとき、まずＳ５１からＳ５６までに示されるキャッシュフィル動作が行われる。すなわち、ＤＣＡＣＨＥ１１３ＡでアドレスｒＡがミスした場合（Ｓ５１で真）、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３Ａをスヌープする（Ｓ５２）。【０１３３】
ＤＣＡＣＨＥ１２３ＡでアドレスｒＡがヒットした場合（Ｓ５３で真）、ＳＮＰＣ１０２Ａは、スヌープバス１０３を通して、ＤＣＡＣＨＥ１２３ＡからアドレスｒＡを包含するラインのデータを読み出し、ＤＣＡＣＨＥ１１３Ａの１つのラインに書き込む（Ｓ５４）。【０１３４】
他方、ＤＣＡＣＨＥ１２３ＡでアドレスｒＡがヒットしない場合（Ｓ５３で偽）、キャッシュコントローラ１１３２Ａは、共有バス１０４を通して、ＭＥＭ１０６からアドレスｒＡを包含するアラインメントされたライン長のデータを読み出し、１つのラインに書き込む（Ｓ５６）。【０１３５】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に格納されたデータをｒＤにロードする（Ｓ５７）。キャッシュコントローラ１１３２Ａは、対応する同期プリミティブビットＳＰをセットする（Ｓ５８）。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをセットする（Ｓ５９）。【０１３６】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令が実行されるとき、ＲＥＳＥＲＶＥビットがセットされていれば（Ｓ６１で真）、ＣＰＵ１１１Ａは要求信号および指示信号を出力する。ＳＮＰＣ１０２Ａおよびキャッシュコントローラ１１３２Ａは、前述のＳ５１からＳ５６までと同一のキャッシュフィル動作を行う（Ｓ６２）。【０１３７】
キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に、ＣＰＵ１１１Ａから与えられるｒＳレジスタの値をストアし（Ｓ６３）、対応する同期プリミティブビットＳＰをセットする（Ｓ６４）。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３ＡにアドレスｒＡに対応する同期プリミティブビットＳＰがあればクリアする（Ｓ６５）。【０１３８】
ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする（Ｓ６６）。ＳＮＰＣ１０２Ａは、ＣＰＵ１２１ＡのＲＥＳＥＲＶＥビットをクリアする（Ｓ６７）。【０１３９】
ａｌｌｏｃｓｅｍ  ｒＳ，ｒＡ命令が実行されるとき、ＳＮＰＣ１０２Ａおよびキャッシュコントローラ１１３２Ａは、前述のＳ５１からＳ５６までと同一のキャッシュフィル動作を行う（Ｓ７１）。キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分にＣＰＵ１１１ＡのｒＳレジスタの値をストアし（Ｓ７２）、対応する同期プリミティブビットＳＰをセットする（Ｓ７３）。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３ＡにアドレスｒＡに対応する同期プリミティブビットＳＰがあればクリアする（Ｓ７４）。【０１４０】
ｒｅｌｓｅｍ  ｒＡ命令が実行されるとき、キャッシュコントローラ１１３２Ａは、アドレスｒＡの対応部分を含むラインをＤＣＡＣＨＥ１１３ＡからＭＥＭ１０６へライトバックし（Ｓ８１）、対応する同期プリミティブビットＳＰをクリアする（Ｓ８２）。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３ＡにアドレスｒＡに対応する同期プリミティブビットＳＰがあればクリアする（Ｓ８３）。【０１４１】
なお、アドレスｒＡの対応部分を含むラインに、セマフォ以外の有効なデータが載っていない場合、Ｓ８１のライトバックを省略する実装も採用し得る。具体的に、有効ビットＶがクリアされている場合、および有効ビットＶはセットされていてもダーティビットＤがクリアされている場合にライトバックを省略できる。【０１４２】
ここまでに、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａにおいて、データおよび属性情報をライン単位で管理するように説明したが、１つのＴＡＧに対応して複数のサブラインを設け、サブラインごとにデータおよび属性情報を管理してもよい。【０１４３】
以上のように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。【０１４４】
図１０は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。【０１４５】
（Ｓ２０１）ＣＰＵ１１１Ａはａｌｌｏｃｓｅｍ命令を実行し、ＭＥＭ１０６からセマフォアドレスを包含するアラインメントされたライン長データをＤＣＡＣＨＥ１１３Ａ中のラインにロードしておく。対応ラインの同期プリミティブビットＳＰはセットされる。ＣＰＵ１２１Ａは、ＣＰＵ１１１Ａにより、同期プリミティブがＤＣＡＣＨＥ１１３Ａのライン中に確保されていることを前提として、ａｌｌｏｃｓｅｍ命令を実行しない。【０１４６】
（Ｓ２０２）ＣＰＵ１２１Ａはｌｗａｒｘ２命令を実行し、同じセマフォアドレスで指定されるセマフォをロードしようとする。セマフォアドレスは、ＤＣＡＣＨＥ１２３Ａでミスする。【０１４７】
ＳＮＰＣ１０２は、セマフォがＤＣＡＣＨＥ１１３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１１３中の対応ラインをＤＣＡＣＨＥ１２３Ａの一つのラインへスヌープバス１０３を経由してコピーし、ＤＣＡＣＨＥ１２３Ａのセマフォを含むラインの同期プリミティブ属性情報をセットする。【０１４８】
ＣＰＵ１２１Ａは、ＤＣＡＣＨＥ１２３Ａの対応ラインからセマフォを読み出し、レジスタへロードする。ＣＰＵ１２１ＡはＲＥＳＥＲＶＥビットをセットする。【０１４９】
（Ｓ２０３）ＣＰＵ１１１Ａはｌｗａｒｘ２命令を実行し、同じセマフォアドレスで指定されるセマフォをロードしようとする。セマフォアドレスは、ＤＣＡＣＨＥ１１３Ａでヒットする。【０１５０】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３Ａの対応ラインからセマフォを読み出し、レジスタへロードする。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセットする。【０１５１】
ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａは、セマフォを更新するための第１の値および第２の値をそれぞれ計算する。【０１５２】
（Ｓ２０４）ＣＰＵ１１１Ａがｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第１の値はＤＣＡＣＨＥ１１３Ａの対応ラインへストアされる。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする。【０１５３】
ＳＮＰＣ１０２Ａは、セマフォがＤＣＡＣＨＥ１２３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブ属性情報をクリアする。ＳＮＰＣ１０２Ａは、ＣＰＵ１２１ＡのＲＥＳＥＲＶＥビットをクリアする。【０１５４】
（Ｓ２０５）ＣＰＵ１２１Ａが、ＣＰＵ１１１Ａよりも遅れてｓｔｗｃｘ２命令を実行すると既にＲＥＳＥＲＶＥビットがクリアされているので、セマフォは更新されない。【０１５５】
（Ｓ２０６）ＣＰＵ１２１Ａは、改めてｌｗａｒｘ２命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。Ｓ２０４で、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブ属性情報がクリアされているため、セマフォアドレスは、ＤＣＡＣＨＥ１２３Ａでミスする。そして、Ｓ２０２と同様の処理が行われる。【０１５６】
（Ｓ２０７）ＣＰＵ１２１Ａがｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第２の値はＤＣＡＣＨＥ１１３Ａの対応ラインへストアされる。ＣＰＵ１２１Ａは、ＲＥＳＥＲＶＥビットをクリアする。【０１５７】
ＳＮＰＣ１０２Ａは、セマフォがＤＣＡＣＨＥ１１３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１１３Ａの対応ラインの同期プリミティブ属性情報をクリアする。ＳＮＰＣ１０２Ａは、ＣＰＵ１１１ＡのＲＥＳＥＲＶＥビットをクリアする。【０１５８】
（Ｓ２０８）ＣＰＵ１１１Ａはｌｗａｒｘ２命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。Ｓ２０７で、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブビットＳＰがクリアされているため、セマフォアドレスは、ＤＣＡＣＨＥ１１３Ａでミスする。【０１５９】
ＳＮＰＣ１０２は、セマフォがＤＣＡＣＨＥ１２３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１１３中の対応ラインをＤＣＡＣＨＥ１１３Ａの一つのラインへスヌープバス１０３を経由してコピーし、ＤＣＡＣＨＥ１１３Ａのセマフォを含むラインの同期プリミティブ属性情報をセットする。【０１６０】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３Ａの対応ラインからセマフォを読み出し、レジスタへロードする。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセットする。【０１６１】
（Ｓ２０９）ＣＰＵ１１１Ａがｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第１の値はＤＣＡＣＨＥ１１３Ａの対応ラインへストアされる。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする。【０１６２】
ＳＮＰＣ１０２Ａは、セマフォがＤＣＡＣＨＥ１２３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブ属性情報をクリアする。ＳＮＰＣ１０２Ａは、ＣＰＵ１２１ＡのＲＥＳＥＲＶＥビットをクリアする。【０１６３】
（Ｓ２１０）ＣＰＵ１１１Ａは、ｒｅｌｓｅｍ命令を実行し、プロセス実行完了などにより不要となったセマフォを開放する。【０１６４】
以上説明したように、第２実施形態に係るプロセッサシステムによれば、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａは、ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａが同期プリミティブ操作命令を実行するときに、ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａから与えられる制御信号に応じて同期プリミティブ属性情報をセットする。また、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち一方の同期プリミティブが更新されるときに、他方の同期プリミティブ属性情報をクリアする。【０１６５】
これにより、同期プリミティブ属性情報がセットされた最新の値を持つ同期プリミティブはパージされず、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち少なくとも一方に常駐する。同期プリミティブの最新の値は、必要に応じて、スヌープバス１０３を通して、他方の同期プリミティブ属性情報がクリアされた（値が古い）同期プリミティブのフィル動作に用いられる。【０１６６】
その結果、ＤＣＡＣＨＥ１１３ＡとＭＥＭ１０６との間、およびＤＣＡＣＨＥ１２３ＡとＭＥＭ１０６との間で同期プリミティブを移動（例えば、ライトバックやフィル）する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。【０１６７】
同期プリミティブがＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち少なくとも一方に常駐することを保証するため、ＳＮＰＣ１０２Ａは、同期プリミティブ操作命令に応じて与えられる要求信号に対する不可分操作により、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａにおいてデータと同期プリミティブ属性情報とを調整する。【０１６８】
つまり、ＳＮＰＣ１０２Ａは、データが同期プリミティブであることを示す指示信号が与えられた場合、要求信号に応じてＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのデータと同期プリミティブ属性情報とを調整し終えるまで、後続の要求信号に対する処理を開始しない。このような制御は、一般にＳＮＰＣ１０２Ａにバッファ（キュー）を設け、後続の要求信号をバッファにて待ち合わせることで実現される。【０１６９】
なお、前述の同期プリミティブ操作命令の代わりに、同期プリミティブ属性情報を操作するだけの専用の命令を設けて、その専用の命令で同期プリミティブ属性情報を操作するとともに、一般的なデータのロードおよびストア命令で同期プリミティブデータを操作する構成も考えられる。【０１７０】
しかしながら、本発明の構成は、そのような構成と比べて、同じ結果を得るために必要な命令数を削減できる点、および同期プリミティブデータの調整と同期プリミティブ属性情報の調整とが不可分に実行されることで、同期プリミティブデータと同期プリミティブ属性情報との整合性を保証できる点で優れている。【０１７１】
なお、ここまで、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち一方の同期プリミティブが更新されるときに、他方の同期プリミティブ属性情報をクリアするとして説明した（例えば、Ｓ２０４、Ｓ２０７、Ｓ２０９）。【０１７２】
しかしながら、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち一方にある同期プリミティブが更新されるときに、更新後の値で他方にある同期プリミティブを更新し、かつ他方の同期プリミティブ属性情報をセットしてもよい。【０１７３】
この構成によれば、最新の同期プリミティブがＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａの両方に常駐するので、ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａから、同期プリミティブ操作命令に対して早い応答を受け取ることができる。【０１７４】
（第３実施形態）
次に、第３実施形態に係るプロセッサシステムについて説明する。【０１７５】
第３実施形態に係るプロセッサシステムでは、第２実施形態で説明したプロセッサシステムと比べて、同期プリミティブをＤＣＡＣＨＥ１１３Ａのみに常駐させる点が異なる。そのために、ＣＰＵ１２１Ａが同期プリミティブ操作命令を実行するときに行われる動作が変更される。【０１７６】
この構成では、ＤＣＡＣＨＥ１２３Ａは、同期プリミティブ以外のデータ専用のキャッシュメモリ装置として設けられ、データが同期プリミティブであることを示す指示信号が与えられた場合に要求信号を無視する。ＤＣＡＣＨＥ１２３Ａを省略することも可能である。【０１７７】
図１１は、命令ごとに、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、およびＳＮＰＣ１０２Ａが行う動作を示す図である。ＤＣＡＣＨＥ１１３ＡおよびＳＮＰＣ１０２Ａは、ＣＰＵ１２１Ａが命令を実行するときに出力する要求信号および指示信号に従って動作する。【０１７８】
以下、それぞれの命令に対応する動作を詳しく説明する。なお、ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令について、それぞれｌｗａｒｘ命令およびｓｔｗｃｘ．命令と共通する動作についても、必要に応じて説明する。【０１７９】
以下の説明は、命令がＣＰＵ１２１Ａによって実行される場合に適用される。命令がＣＰＵ１１１Ａによって実行される場合は、第２実施形態で説明した動作（図９を参照）から、他キャッシュ（つまり、ＤＣＡＣＨＥ１２３Ａ）に対する動作を除いた動作が行われる。【０１８０】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令が実行されるとき、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３Ａをスヌープすることにより、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に格納されたデータを取得し（Ｓ９１）、ＣＰＵ１２１Ａは、ＳＮＰＣ１０２Ａによって取得されたデータをｒＤにロードする（Ｓ９２）。ＣＰＵ１２１Ａは、ＲＥＳＥＲＶＥビットをセットする（Ｓ９３）。【０１８１】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令が実行されるとき、ＲＥＳＥＲＶＥビットがセットされていれば（Ｓ９４で真）、ＣＰＵ１２１Ａは要求信号および指示信号を出力する。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３Ａをスヌープして（Ｓ９５）、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に、ＣＰＵ１２１Ａから与えられるｒＳレジスタの値をストアする（Ｓ９６）。【０１８２】
ＣＰＵ１２１Ａは、ＲＥＳＥＲＶＥビットをクリアする（Ｓ９７）。ＳＮＰＣ１０２Ａは、ＣＰＵ１１１ＡのＲＥＳＥＲＶＥビットをクリアする（Ｓ９８）。【０１８３】
以上のように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。【０１８４】
図１２は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。図１０のシーケンスチャートの説明と重複する事項については適宜説明を省略し、主として異なる点を説明する。【０１８５】
（Ｓ３０１）Ｓ２０１と同様。【０１８６】
（Ｓ３０２）ＣＰＵ１２１Ａはｌｗａｒｘ２命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。ＤＣＡＣＨＥ１２３ＡはＣＰＵ１２１Ａからの要求信号を無視する。ＳＮＰＣ１０２は、セマフォをＤＣＡＣＨＥ１１３Ａからスヌープバス１０３を通して取得し、ＣＰＵ１２１Ａは、ＳＮＰＣ１０２からセマフォを読み出し、レジスタへロードする。ＣＰＵ１２１ＡはＲＥＳＥＲＶＥビットをセットする。【０１８７】
（Ｓ３０３〜Ｓ３０５）Ｓ２０３〜Ｓ２０５と同様。【０１８８】
（Ｓ３０６〜Ｓ３０７）ＣＰＵ１２１Ａは、改めてｌｗａｒｘ２命令およびｓｔｗｃｘ２命令を実行する。ＤＣＡＣＨＥ１２３ＡはＣＰＵ１２１Ａからの要求信号を無視する。セマフォアドレスで指定されるセマフォは、ＳＮＰＣ１０２Ａによって、スヌープバス１０３を通して、ＤＣＡＣＨＥ１１３Ａから取得され、ＤＣＡＣＨＥ１１３Ａへ書き込まれる。【０１８９】
（Ｓ３０８〜Ｓ３１０）Ｓ２０８〜Ｓ２１０と同様。【０１９０】
以上説明したように、第３実施形態に係るプロセッサシステムによれば、同期プリミティブはＤＣＡＣＨＥ１１３Ａに常駐し、ＣＰＵ１２１Ａが同期プリミティブ操作命令を実行するときは、データおよび同期プリミティブ属性情報は、ＳＮＰＣ１０２Ａによりスヌープバス１０３を通して、ＤＣＡＣＨＥ１１３Ａにある同期プリミティブが操作される。【０１９１】
その結果、ＤＣＡＣＨＥ１１３ＡとＭＥＭ１０６との間、およびＤＣＡＣＨＥ１２３ＡとＭＥＭ１０６との間で同期プリミティブを移動（例えば、ライトバック動作やフィル動作）する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。【０１９２】
なお、頻繁にプロセス間の同期処理が発生しない場合など、同期プリミティブをキャッシュメモリ装置に常駐させることが性能上不利と判断される場合があり得る。その場合、前述したｌｗａｒｘ２命令とｓｔｗｃｘ２命令の代わりに、従来のｌｗａｒｘ命令とｓｔｗｃｘ．命令を用いてもよい。【０１９３】
そうすれば、同期プリミティブはキャッシュメモリ装置に常駐せず、キャッシュメモリ装置を、同期プリミティブ以外のデータのアクセス性能を向上するためにも利用することができる。
【産業上の利用可能性】
【０１９４】
本発明に係るキャッシュメモリ装置、およびキャッシュメモリ装置を含むプロセッサシステムは、例えば、デジタル情報機器や携帯通信装置などに組み込まれ、電池で駆動される制御用マイクロプロセッサやマイクロコントローラとして有用である。また組み込み向けＤＭＡ制御用ＬＳＩやＤＳＰなどの用途にも応用できる。
【図１】
2009122694.tif 000003
【図２】
2009122694.tif 000004
【図３】
2009122694.tif 000005
【図４】
2009122694.tif 000006
【図５】
2009122694.tif 000007
【図６】
2009122694.tif 000008
【図７】
2009122694.tif 000009
【図８】
2009122694.tif 000010
【図９】
2009122694.tif 000011
【図１０】
2009122694.tif 000012
【図１１】
2009122694.tif 000013
【図１２】
2009122694.tif 000014
【図１３】
2009122694.tif 000015
【手続補正書】
【提出日】平成22年8月12日(2010.8.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置などに関し、特に同期プリミティブとして用いられるデータのアクセスを効率化する技術に関する。
【背景技術】
【０００２】
昨今、高い性能が要求されるコンピュータシステムには、さまざまな粒度レベルで並列処理機構が導入されている。例えば、命令レベルの並列性を得るためＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）、ｓｕｐｅｒｓｃａｌａｒなどが広く実用化され、命令流レベルの並列性を得るためマルチスレッド処理やマルチタスク処理などが広く実用化され、また、ＬＳＩレベルの並列性を得るためマルチプロセッサ構成、マルチコア構成などが広く実用化されている。
【０００３】
コンピュータシステムにおいて、１つ以上のプロセッサが複数の処理（プロセス）を並列に実行し、複数のプロセスで一つの資源を共有する場合に、プロセス間の同期を取るための種々の技術が用いられる。
【０００４】
ここで、プロセス間の同期を取るとは、所望の処理結果を得るために、複数のプロセスから共有資源に対して行われるアクセスの順序を保証することをいう。
【０００５】
例えば、特許文献１には、複数プロセスを並列に実行する１つ以上のプロセッサが、各プロセッサに個別に接続されるローカルキャッシュを利用することによって、共有メモリへのアクセスを減少させながら、プロセス間の同期を取る技術が開示されている。
【０００６】
この技術では、プロセス間の同期を取るためにバリア命令が使われる。バリア命令は、必要に応じてプロセッサの実行を停止させることで、アクセスの順序を保証する。
【０００７】
プロセス間の同期を取るための技術として、共有資源に対応する同期プリミティブを設け、複数プロセスのうち同期プリミティブの更新に成功した１つが共有資源を排他的にアクセスする技術も、広く実用化されている。
【０００８】
この技術では、同期プリミティブが未使用を示す状態にあることを確認後、使用中を示す状態に更新できたプロセスのみが、対応する共有資源を排他的に使用する処理区間であるクリティカルセクションに入ることができる。セマフォやミューテックスは、同期プリミティブの一例である。
【０００９】
複数のプロセスが同期プリミティブを矛盾なく更新するために、同期プリミティブのリード・モディファイ・ライト操作はアトミック（不可分）に行われる必要がある。
【００１０】
アトミックな操作の不可分性から、複数のプロセスによるアトミックな操作は並列実行することはできないから、同期プリミティブをアトミックに操作する期間が長くなるほど、プロセスの並列性が損なわれ、システムのスループットに悪影響が出る。
【００１１】
そこで、特許文献２には、並列動作する複数のプロセッサのそれぞれに対応してセマフォバッファを設け、それぞれのセマフォバッファにおいて、セマフォの更新を並行して実行する技術が開示されている。
【００１２】
また、非特許文献１には、セマフォの更新権としてのリザベーションの取得を伴ったメモリ参照命令ｌｗａｒｘ、およびリザベーションが取得されている場合にのみセマフォを更新する条件付きメモリ更新命令ｓｔｗｃｘ．を設けたコンピュータアーキテクチャが開示されている。
【００１３】
このコンピュータアーキテクチャによれば、ｓｔｗｃｘ．命令が成功するまで、ｌｗａｒｘ命令とｓｔｗｃｘ．命令とを繰り返すことで、等価的にアトミックなリード・モディファイ・ライト操作が可能となる。アトミックな操作の期間は細分され、システムのスループットに対する悪影響は緩和される。
【００１４】
以下、ｌｗａｒｘ命令およびｓｔｗｃｘ．命令で定義されたリザベーションの操作が可能なマルチプロセッサシステムの一具体例を説明する。なお、ｌｗａｒｘ命令およびｓｔｗｃｘ．命令は、データのキャッシュ操作を具体的に定義しないため、データキャッシュは周知慣用の一般的な構成を示している。
【００１５】
図１３は、マルチプロセッサシステムの機能的な構成を示すブロック図である。図１３に示されるマルチプロセッサシステムは、例えば半導体システムＬＳＩ（ＳｏＣ）または情報機器セットとして実現される。
【００１６】
図１３において、ＣＰＵ（中央処理装置）１１１およびＣＰＵ１２１は、ＩＣＡＣＨＥ（命令キャッシュメモリ装置）１１２およびＩＣＡＣＨＥ１２２から、命令の集合体であるプログラムをそれぞれ読み込んで命令を実行する情報処理回路であり、マイクロプロセッサまたは単にプロセッサとも呼ばれる。
【００１７】
ＣＰＵ１１１は、一例として、ＩＣＡＣＨＥ１１２から命令を読み込んでデコードするＦＥＴＣＨ／ＤＥＣ（フェッチおよびデコード部）１１４、デコードされた命令を実行するＥＸＥＣ（実行部）１１５、および複数のレジスタからなるＲＥＧ（レジスタ部）１１６から構成される。
【００１８】
ＣＰＵ１２１も同様に、ＩＣＡＣＨＥ１２２から命令を読み込んでデコードするＦＥＴＣＨ／ＤＥＣ１２４、ＥＸＥＣ１２５、およびＲＥＧ１２６から構成される。
【００１９】
ＩＣＡＣＨＥ１１２は、ＭＥＭ（主記憶装置）１０６に格納されるプログラムを先読みして一時的に保持し、命令信号線１１７を通してＣＰＵ１１１に高速に命令流を供給するバッファである。
【００２０】
ＩＣＡＣＨＥ１２２も同様に、ＭＥＭ１０６に格納されるプログラムを先読みして一時的に保持し、命令信号線１２７を通してＣＰＵ１２１に高速に命令流を供給するバッファである。
【００２１】
ＤＣＡＣＨＥ（データキャッシュメモリ装置）１１３は、ＭＥＭ１０６に格納されるデータを先読みして一時的に保持し、ＣＰＵ１１１に高速にデータを供給するバッファである。また、ＤＣＡＣＨＥ１１３は、ＣＰＵ１１１がＭＥＭ１０６に書き込むべきデータを一時的に保持し、後で時期を見計らってＭＥＭ１０６に書き込む。ＤＣＡＣＨＥ１１３は、このような動作を、ＣＰＵ１１１のＥＸＥＣ１１５から要求信号線１１８を通して与えられるアクセス要求信号に従って実行する。
【００２２】
ＤＣＡＣＨＥ１２３も、ＤＣＡＣＨＥ１１３と同様の動作を、ＣＰＵ１２１のＥＸＥＣ１２５から要求信号線１２８を通して与えられるアクセス要求信号に従って実行する。
【００２３】
ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３は、例えば４ウェイセットアソシアティブといった周知慣用の構成（図示せず）で実現される。
【００２４】
図１３において、ＣＰＵ１１１とＣＰＵ１２１とは、機能的に異種のヘテロジニアスであってもよく、同種のホモジニアスであってもよい。また、ＩＣＡＣＨＥ１１２とＩＣＡＣＨＥ１２２とは、容量や構成、性能が異なってもよく、ＤＣＡＣＨＥ１１３とＤＣＡＣＨＥ１２３とは、容量や内部的な構成、性能が異なってもよい。
【００２５】
ＢＣＵ（バス制御装置）１０１は、共有バス１０４に接続される複数のブロック間のデータ転送を制御するバス制御装置である。
【００２６】
共有バス１０４は、複数のブロックに接続され複数のブロック間でデータを転送するための、アドレス、データ線、制御信号などから構成されるバスであり、時分割して利用される。ある瞬間に接続されたいずれかのブロックがマスタとなり、スレーブとなる他のブロックとの間でデータが転送される。
【００２７】
ＭＣＵ（メモリ制御装置）１０５は、ＣＰＵ１１１、ＣＰＵ１２１、およびその他のマスタがＭＥＭ１０６へデータを読み書きするためのインターフェイスである。
【００２８】
ＭＥＭ１０６は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、フラッシュメモリなどの半導体メモリであり、ＣＰＵ１１１およびＣＰＵ１２１が処理するデータやプログラムを格納する。
【００２９】
ＭＥＭ１０６は、ＣＰＵ１１１およびＣＰＵ１２１と比べて動作速度が遅く、この動作速度の差を埋めるために、ＭＥＭ１０６と比べて高速小容量のＩＣＡＣＨＥ１１２、ＤＣＡＣＨＥ１１３、ＩＣＡＣＨＥ１２２、およびＤＣＡＣＨＥ１２３が設けられる。
【００３０】
近年、ＣＰＵ１１１およびＣＰＵ１２１の動作速度とＭＥＭ１０６の動作速度の差が開いており、ＭＥＭ１０６のアクセスがシステム性能上のボトルネックとなっている。
【００３１】
ＰＥＲＩＰＨＥＲＡＬ（周辺回路）１０７およびＰＥＲＩＰＨＥＲＡＬ１０８は、共有バス１０４に接続されＣＰＵ１１１の補助機能の一部を担うブロックであり、割込み制御、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）、外部インターフェイス、タイマー、カウンター、リセット制御、Ａ／Ｄ変換器、Ｄ／Ａ変換器、シリアルＩＯなど様々な機能が実装され得る。
【００３２】
スヌープバス１０３は、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３、およびＳＮＰＣ（スヌープ制御装置）１０２を接続し、ＤＣＡＣＨＥ１１３とＤＣＡＣＨＥ１２３との間のデータ転送のために使われる。
【００３３】
ＳＮＰＣ１０２は、スヌープバス１０３と共有バス１０４に接続され、ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３に与えられるアクセス要求に応じて、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３、およびＭＥＭ１０６の間のデータ転送を制御することにより、ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３のデータの一貫性を維持する。ＳＮＰＣ１０２は、ＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３に対するキャッシュコントローラの機能を含む。
【００３４】
このように構成されるマルチプロセッサシステムにおいて、ＣＰＵ１１１およびＣＰＵ１２１が同じ共有資源に対応する同期プリミティブに対して競合する更新処理を行った場合の具体的動作の一例を説明する。以下、同期プリミティブをセマフォとして説明する。
【００３５】
ＣＰＵ１１１は、所定のアドレス（セマフォアドレスという）に配置されるデータ（セマフォ）をロードするためのｌｗａｒｘ命令を実行する。ＭＥＭ１０６のセマフォの複製が、共有バス１０４を通して、ＤＣＡＣＨＥ１１３に格納され、ＤＣＡＣＨＥ１１３に格納されたセマフォがＣＰＵ１１１に供給される。
【００３６】
ＣＰＵ１１１にてリザベーションが取得されたことを表すため、ＲＥＧ１１６に設けられるＲＥＳＥＲＶＥビットがセットされる。
【００３７】
ＳＮＰＣ１０２は、ＣＰＵ１１１およびＣＰＵ１２１がセマフォアドレスに対して行う更新操作を監視し始める。
【００３８】
ＣＰＵ１２１は、同じセマフォアドレスに配置されるセマフォをロードするためのｌｗａｒｘ命令を実行する。ＭＥＭ１０６のセマフォが共有バス１０４を通してＤＣＡＣＨＥ１２３に格納されるか、または、ＤＣＡＣＨＥ１１３のセマフォが、ＳＮＰＣ１０２により、スヌープバス１０３を通してＤＣＡＣＨＥ１２３へ格納される。
【００３９】
ＣＰＵ１２１にてリザベーションが取得されたことを表すため、ＲＥＧ１２６に設けられるＲＥＳＥＲＶＥビットがセットされる。
【００４０】
ＳＮＰＣ１０２は、ＣＰＵ１１１およびＣＰＵ１２１がセマフォアドレスに対して行う更新操作の監視を続行する。
【００４１】
ＣＰＵ１１１およびＣＰＵ１２１は、セマフォを更新するための第１の値および第２の値をそれぞれ計算する。
【００４２】
ＣＰＵ１１１は、セマフォアドレスに第１の値をストアするためのｓｔｗｃｘ．命令を実行する。ＲＥＧ１１６のＲＥＳＥＲＶＥビットがセットされているので、ＤＣＡＣＨＥ１１３のセマフォは第１の値に書き換えられる。
【００４３】
ＤＣＡＣＨＥ１１３からセマフォがパージされている場合、ＭＥＭ１０６のセマフォが共有バス１０４を通してＤＣＡＣＨＥ１１３に格納されるか、または、ＤＣＡＣＨＥ１２３のセマフォが、ＳＮＰＣ１０２により、スヌープバス１０３を通してＤＣＡＣＨＥ１１３へ格納されてから、第１の値に書き換えられる。これによりＣＰＵ１１１は、共有資源のアクセス権を取得する。
【００４４】
ＤＣＡＣＨＥ１１３がライトスルー方式であれば、第１の値は直ちにＭＥＭ１０６へ書き込まれる。ＤＣＡＣＨＥ１１３がライトバック方式であれば、第１の値は後で必要に応じてＭＥＭ１０６へ書き込まれる。
【００４５】
ＣＰＵ１１１にてリザベーションが破棄されたことを表すため、ＲＥＧ１１６のＲＥＳＥＲＶＥビットはクリアされる。
【００４６】
ＳＮＰＣ１０２は、ＣＰＵ１１１がＤＣＡＣＨＥ１１３のセマフォを第１の値に更新したことを検知し、スヌープバス１０３を通して、ＤＣＡＣＨＥ１２３のセマフォを無効化するか、またはＤＣＡＣＨＥ１２３のセマフォを第１の値に更新する。
【００４７】
ＳＮＰＣ１０２は、さらに、ＣＰＵ１２１にてリザベーションが破棄されたことを表すため、信号線１２９を介して、ＣＰＵ１２１におけるＲＥＧ１２６のＲＥＳＥＲＶＥビットをクリアする。
【００４８】
ＣＰＵ１２１は、ＣＰＵ１１１よりも遅れて、第２の値をセマフォアドレスにストアするためのｓｔｗｃｘ．命令を実行する。ＲＥＧ１２６のＲＥＳＥＲＶＥビットがクリアされているので、第２の値の実効的なストア動作は行われず、ＣＰＵ１２１は、共有資源のアクセス権を取得しない。
【００４９】
以上説明したように、ＣＰＵ１１１およびＣＰＵ１２１の一方がセマフォを更新したときに、ＳＮＰＣ１０２の制御によって、信号線１１９または信号線１２９を介して、他方のＲＥＳＥＲＶＥビットがクリアされるので、遅れて実行されたｓｔｗｃｘ．命令ではセマフォは更新されない。
【００５０】
これにより、ＣＰＵ１１１およびＣＰＵ１２１のうち、先にｓｔｗｃｘ．命令を実行した一方のみが、共有資源のアクセス権を取得し、共有資源を排他的にアクセス可能となることによって、プロセス間の同期が取られる。
【先行技術文献】
【特許文献】
【００５１】
【特許文献１】特開平４−２７９９６０号公報
【特許文献２】特開平９−１３８７７８号公報
【非特許文献】
【００５２】
【非特許文献１】３２ビットＰｏｗｅｒＰＣ  アーキテクチャプログラミング環境、Ｆｒｅｅｓｃａｌｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ，Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ，ＭＰＣＦＰＥ３２ＢＪ  Ｒｅｖ．１，１２／２００５（原本ＭＰＣＦＰＥ３２Ｂ  Ｒｅｖ．３）
【発明の概要】
【発明が解決しようとする課題】
【００５３】
前述のマルチプロセッサシステムによれば、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３からセマフォがパージされる際に、セマフォのＭＥＭ１０６へのライトバック動作が発生する。また、パージ後、再びセマフォがアクセスされる場合、ＭＥＭ１０６からＤＣＡＣＨＥ１１３およびＤＣＡＣＨＥ１２３へセマフォの読み出し動作が発生する。
【００５４】
これらの動作は、マルチプロセッサシステムに限らず、シングルプロセッサシステムにおいても、同期プリミティブ（セマフォ）をキャッシュに保持するシステムにおいてオーバーヘッドとなる。
【００５５】
しかしながら、従来、これらの動作の発生頻度を削減するための効果的な対策が取られたキャッシュメモリ装置は知られていない。
【００５６】
本発明は、このような背景に鑑みてなされたものであり、同期プリミティブを格納し、かつ前述したオーバーヘッドの軽減を図るキャッシュメモリ装置の提供を目的とする。
【課題を解決するための手段】
【００５７】
上記問題を解決するために、本発明のキャッシュメモリ装置は、主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、データと属性情報とを対応付けて格納することができる記憶手段と、データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであり、かつパージが禁止されることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段とを備える。
【００５８】
また、前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止してもよい。
【００５９】
また、前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納してもよい。
【００６０】
本発明は、前記のキャッシュメモリ装置と、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置とを備えるプロセッサシステムとしても実現できる。
【００６１】
本発明は、前記２つのキャッシュメモリ装置と、それぞれのキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置とを備えるキャッシュメモリシステムとしても実現できる。
【００６２】
また、前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整してもよい。
【００６３】
本発明は、前記キャッシュメモリシステムと、前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置とを備えるプロセッサシステムとしても実現できる。
【発明の効果】
【００６４】
本発明の効果は、従来技術に比べ、マルチプロセッサ間やマルチスレッド間の相互排他制御のための、同期プリミティブの操作に係るオーバーヘッドを低減することである。データのアクセスを要求する特定の命令をＣＰＵが実行するときに、ＣＰＵから与えられる指示信号に応じて同期プリミティブ属性情報をキャッシュメモリ装置に保持することにより、同期プリミティブをキャッシュメモリ装置に常駐させるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
【図面の簡単な説明】
【００６５】
【図１】図１は、第１実施形態に係るシングルプロセッサシステムの機能的な構成の一例を示すブロック図である。
【図２】図２は、同期プリミティブ操作命令の一例を示す図である。
【図３】図３は、ＣＰＵおよびキャッシュメモリの詳細な構成の一例を示すブロック図である。
【図４】図４は、キャッシュ制御信号の一例を示す図である。
【図５】図５は、ＣＰＵおよびキャッシュメモリの動作の一例を示す図である。
【図６】図６は、キャッシュメモリの機能的な構成の他の一例を示すブロック図である。
【図７】図７は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【図８】図８は、第２実施形態に係るマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。
【図９】図９は、ＣＰＵ、キャッシュメモリ、およびＳＮＰＣの動作の一例を示す図である。
【図１０】図１０は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【図１１】図１１は、ＣＰＵ、キャッシュメモリ、およびＳＮＰＣの動作の他の一例を示す図である。
【図１２】図１２は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【図１３】図１３は、従来のマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。
【発明を実施するための形態】
【００６６】
以下の説明において、本発明のプロセッサシステムは、広く普及する汎用的な情報処理システムとして例示される。以下の実施形態において、シングルプロセッサ構成では、マルチスレッド処理が、マルチプロセッサ（マルチコア）構成ではマルチプロセッサ処理またはマルチプロセッサ処理およびマルチスレッド処理が、命令流レベルの並列処理として利用される。
【００６７】
（第１実施形態）
まず、第１実施形態に係るプロセッサシステムについて説明する。
【００６８】
図１は、第１実施形態に係るプロセッサシステムの機能的な構成の一例を示すブロック図である。このプロセッサシステムは、１つの並列処理プロセッサを含んで構成される。図１のプロセッサシステムは、半導体システムＬＳＩ（ＳｏＣ）または情報機器セットとして実現される。
【００６９】
図１のプロセッサシステムは、図１３の従来のマルチプロセッサシステムと比べて、第２のプロセッサに関係するＣＰＵ１２１、ＩＣＡＣＨＥ１２２、ＤＣＡＣＨＥ１２３、ならびに、スヌープ機能に関係するＳＮＰＣ１０２、スヌープバス１０３、信号線１１９、および信号線１２９が省略され、制御信号線１１８Ａが追加される。また、ＣＰＵ１１１およびＤＣＡＣＨＥ１１３は、ＣＰＵ１１１ＡおよびＤＣＡＣＨＥ１１３Ａで置き換えられる。
【００７０】
ＣＰＵ１１１Ａは、いくつかの特定の命令を実行するときに、通常の命令を実行するときと同様の、命令に応じたデータのアクセスを要求する要求信号を要求信号線１１８に出力するのに加えて、要求されるデータが同期プリミティブであることを示す指示信号を、制御信号線１１８Ａに出力する。これらの特定の命令を、同期プリミティブ操作命令と総称する。
【００７１】
図２は、同期プリミティブ操作命令の一例を説明する図である。
【００７２】
図２に示されるように、ｌｗａｒｘ２命令、ｓｔｗｃｘ２命令、ａｌｌｏｃｓｅｍ命令、およびｒｅｌｓｅｍ命令が、同期プリミティブ操作命令として設けられる。
【００７３】
ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令は、それぞれ従来技術の項で説明したｌｗａｒｘ命令およびｓｔｗｃｘ．命令に対して、キャッシュ上の同期プリミティブ（セマフォ）、および後述する同期プリミティブ属性情報を明示的に操作する機能を追加した命令である。
【００７４】
ａｌｌｏｃｓｅｍ命令およびｒｅｌｓｅｍ命令は、本発明が新たに提案する命令である。
【００７５】
それぞれの命令の概要と効果は、図２に示すとおりである。
【００７６】
ＤＣＡＣＨＥ１１３Ａは、例えば４ウェイセットアソシアティブといった周知の構成の上に、データが有効な同期プリミティブであることを示す同期プリミティブ属性情報を保持し、かつ制御信号線１１８Ａから取得される制御信号に応じて同期プリミティブ属性情報を操作する機能が追加されたキャッシュメモリ装置である。
【００７７】
図３は、ＤＣＡＣＨＥ１１３Ａの機能的な構成の一例を示すブロック図である。
【００７８】
図３に示されるように、ＤＣＡＣＨＥ１１３Ａは、記憶部１１３１Ａおよびキャッシュコントローラ１１３２Ａからなる。
【００７９】
記憶部１１３１Ａは、各ラインに同期プリミティブ属性情報を格納する同期プリミティブビットＳＰを有している。同期プリミティブビットＳＰは、セットされている場合に、ラインのデータの一部または全部に有効な同期プリミティブが保持されていることを表す。有効ビットＶ、タグＴＡＧ、ダーティビットＤ、およびデータは、キャッシュメモリ装置に保持される周知の情報であるため、説明を省略する。
【００８０】
キャッシュコントローラ１１３２Ａは、同期プリミティブビットＳＰがセットされたラインを、例えばリプレースの候補から除外するなどして、ＤＣＡＣＨＥ１１３Ａからパージされることを禁止する。
【００８１】
キャッシュコントローラ１１３２Ａは、要求信号線１１８を通して、要求信号を取得する。要求信号は、例えば、Ａｄｄｒｅｓｓ信号、Ｄａｔａ信号、およびデータの参照および更新のいずれかを示すＲ／Ｗ信号からなる。
【００８２】
また、キャッシュコントローラ１１３２Ａは、制御信号線１１８Ａを通して、要求信号で要求されるデータが同期プリミティブであることを示す指示信号を取得する。指示信号は、例えば、ＳＰＲＥＱ信号およびＳＰＣＴＬ信号からなる。
【００８３】
ＳＰＲＥＱ信号は、要求信号が同期プリミティブのロードおよびストア操作を要求していることを示す。ＳＰＣＴＬ信号は、要求信号が同期プリミティブのアロケートおよび開放操作を要求していることを示す。
【００８４】
図４は、命令に対応する要求信号および制御信号を説明する図である。
【００８５】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令は、アドレスｒＡに配置されるデータをｒＤレジスタにロードしてリザベーションを取得することを意味する。
【００８６】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令は、ｒＳレジスタのデータをアドレスｒＡにストアしてリザベーションを破棄することを意味する。この命令は、リザベーションが取得されているときのみ実行される条件命令である。
【００８７】
ａｌｌｏｃｓｅｍ  ｒＳ，ｒＡ命令は、アドレスｒＡに配置されるデータをＤＣＡＣＨＥ１１３Ａに確保し、ｒＳレジスタの値をアドレスｒＡにストアすることを意味する。
【００８８】
ｒｅｌｓｅｍ  ｒＡ命令は、アドレスｒＡに配置されるデータをＤＣＡＣＨＥ１１３Ａから開放することを意味する。
【００８９】
その他の命令は、同期プリミティブ操作命令以外の一般の命令である。
【００９０】
図４には、ＣＰＵ１１１Ａがそれぞれの命令を実行するときに、要求信号線１１８にて伝送される要求信号Ａｄｄｒｅｓｓ、Ｄａｔａ、Ｒ／Ｗ、および制御信号線１１８Ａにて伝送される指示信号ＳＰＲＥＱ、ＲＰＣＴＬの内容が示される。
【００９１】
図５は、命令ごとに、ＣＰＵ１１１ＡおよびＤＣＡＣＨＥ１１３Ａが行う動作を示す図である。ＤＣＡＣＨＥ１１３Ａは、ＣＰＵ１１１Ａがこれらの命令を実行するときに出力する要求信号および指示信号（図４を参照）に従って動作する。
【００９２】
以下、それぞれの命令に対応する動作を詳しく説明する。なお、ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令について、それぞれｌｗａｒｘ命令およびｓｔｗｃｘ．命令と共通する動作についても、必要に応じて説明する。
【００９３】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令が実行されるとき、まず、Ｓ１１、Ｓ１２で示されるキャッシュフィル動作が行われる。すなわち、ＤＣＡＣＨＥ１１３ＡにアドレスｒＡに配置されるデータが格納されていない場合、およびそのようなデータが格納されていても対応する同期プリミティブビットＳＰがクリアされている場合にミスと判断し（Ｓ１１で真）、キャッシュコントローラ１１３２Ａは、共有バス１０４を通して、ＭＥＭ１０６からアドレスｒＡを包含するアラインメントされたライン長のデータを読み出し、ＤＣＡＣＨＥ１１３Ａの記憶部１１３１Ａの１つのラインに書き込む（Ｓ１２）。
【００９４】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に格納されたデータをｒＤにロードする（Ｓ１３）。キャッシュコントローラ１１３２Ａは、対応する同期プリミティブビットＳＰをセットする（Ｓ１４）。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをセットする（Ｓ１５）。
【００９５】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令が実行されるとき、ＲＥＳＥＲＶＥビットがセットされていれば（Ｓ２１で真）、ＣＰＵ１１１Ａは要求信号および指示信号を出力する。キャッシュコントローラ１１３２Ａは、前述のＳ１１、Ｓ１２と同じキャッシュフィル動作を行う（Ｓ２２）。
【００９６】
キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に、ＣＰＵ１１１Ａから与えられるｒＳレジスタの値をストアし（Ｓ２３）、対応する同期プリミティブビットＳＰをセットする（Ｓ２４）。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする（Ｓ２５）。
【００９７】
ａｌｌｏｃｓｅｍ  ｒＳ，ｒＡ命令が実行されるとき、キャッシュコントローラ１１３２Ａは、前述のＳ１１、Ｓ１２と同じキャッシュフィル動作を行う（Ｓ３１）。キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分にＣＰＵ１１１Ａから与えられるｒＳレジスタの値をストアし（Ｓ３２）、対応する同期プリミティブビットＳＰをセットする（Ｓ３３）。
【００９８】
ｒｅｌｓｅｍ  ｒＡ命令が実行されるとき、キャッシュコントローラ１１３２Ａは、アドレスｒＡの対応部分を含むラインをＤＣＡＣＨＥ１１３ＡからＭＥＭ１０６へライトバックし（Ｓ４１）、対応する同期プリミティブビットＳＰをクリアする（Ｓ４２）。
【００９９】
なお、アドレスｒＡの対応部分を含むラインに、セマフォ以外の有効なデータが載っていない場合、Ｓ４１でライトバックを省略する実装も採用し得る。具体的に、有効ビットＶがクリアされている場合、および有効ビットＶはセットされていてもダーティビットＤがクリアされている場合にライトバックを省略できる。
【０１００】
なお、ＤＣＡＣＨＥ１１３Ａにおいて、データおよび属性情報をライン単位で管理するように説明したが、１つのＴＡＧに対応して複数のサブラインを設け、サブラインごとにデータおよび属性情報を管理してもよい。
【０１０１】
図６は、サブラインごとにデータおよび属性情報を管理するＤＣＡＣＨＥ１１３Ｂの機能的な構成の一例を示すブロック図である。
【０１０２】
ＤＣＡＣＨＥ１１３Ｂでは、記憶部１１３１Ｂにおいて、１つのタグに対して４つのサブラインが設けられ、同期プリミティブビットＳＰを含む属性ビットは、それぞれのサブラインに対応して設けられる。キャッシュコントローラ１１３２Ｂは、サブラインの単位で、データおよび属性情報を更新する。
【０１０３】
ラインごとにデータおよび属性情報を管理するＤＣＡＣＨＥ１１３Ａ（図２）、および、サブラインごとにデータおよび属性情報を管理するＤＣＡＣＨＥ１１３Ｂ（図６）は、いずれも本発明のキャッシュメモリ装置の一例である。
【０１０４】
また、記憶部１１３１Ａおよび記憶部１１３１Ｂは、本発明の記憶手段の一例であり、キャッシュコントローラ１１３２Ａおよびキャッシュコントローラ１１３２Ｂは、本発明の取得手段および制御手段の一例である。
【０１０５】
このように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。
【０１０６】
図７は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【０１０７】
ＣＰＵ１１１Ａはマルチスレッド型プロセッサであり、複数のスレッドを並列に実行することができる。以下では、同期プリミティブをセマフォであるとして説明する。
【０１０８】
（Ｓ１０１）スレッド１でａｌｌｏｃｓｅｍ命令を実行し、ＭＥＭ１０６からセマフォアドレスを包含するアラインメントされたライン長データをＤＣＡＣＨＥ１１３Ａ中のラインにロードしておく。対応ラインの同期プリミティブビットＳＰはセットされる。
【０１０９】
以下、ロードおよびストアされるデータの移動を実線矢印で示し、ロードおよびストアに付随するＲＥＳＥＲＶＥビットおよび同期プリミティブビットＳＰの参照および更新を点線矢印で示す。また、ＲＥＳＥＲＶＥビットがセットされている期間および同期プリミティブビットＳＰがセットされている期間を、理解のため太線で示す。この表記は、図７、図１０、および図１２で共通に用いられる。
【０１１０】
スレッド２は、スレッド１により、セマフォがＤＣＡＣＨＥ１１３Ａのライン中に確保されていることを前提として、ａｌｌｏｃｓｅｍ命令を実行しない。
【０１１１】
（Ｓ１０２）スレッド２でｌｗａｒｘ２命令を実行し、同じセマフォアドレスからセマフォを読み出す。この場合、既にセマフォはＤＣＡＣＨＥ１１３Ａに格納されているので、セマフォはＤＣＡＣＨＥ１１３Ａから読み出されＣＰＵ１１１Ａのレジスタへロードされる。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセットする。
【０１１２】
（Ｓ１０３）スレッド１でｌｗａｒｘ２命令を実行し、同じセマフォアドレスからセマフォをロードする。この場合、既にセマフォはＤＣＡＣＨＥ１１３Ａに格納されているので、セマフォはＤＣＡＣＨＥ１１３Ａから読み出されＣＰＵ１１１Ａのレジスタへロードされる。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセット状態に維持する。
【０１１３】
スレッド１およびスレッド２で、セマフォを更新するための第１の値および第２の値がそれぞれ計算される。
【０１１４】
（Ｓ１０４）スレッド１でｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第１の値はＤＣＡＣＨＥ１１３Ａのセマフォアドレスに対応する部分にストアされる。ｓｔｗｃｘ２命令の実行によりＣＰＵ１１１ＡのＲＥＳＥＲＶＥビットはクリアされる。
【０１１５】
（Ｓ１０５）スレッド１よりも遅れて、スレッド２でｓｔｗｃｘ２命令を実行すると、既にＲＥＳＥＲＶＥビットがクリアされているので、セマフォは更新されない。
【０１１６】
（Ｓ１０６、Ｓ１０７）スレッド２で、改めてｌｗａｒｘ２命令とｓｔｗｃｘ２命令とを行うことによって、セマフォを更新することができる。
【０１１７】
（Ｓ１０８）スレッド１で、ｒｅｌｓｅｍ命令を実行し、プロセス実行完了などにより不要となったセマフォを開放する。
【０１１８】
以上説明したように、第１実施形態に係るプロセッサシステムによれば、ＤＣＡＣＨＥ１１３Ａは、ＣＰＵ１１１Ａが同期プリミティブ操作命令を実行するときに、ＣＰＵ１１１Ａから与えられる制御信号に応じて同期プリミティブビットをセットする。同期プリミティブビットがセットされたデータはパージを禁止され、ＤＣＡＣＨＥ１１３Ａに常駐する。
【０１１９】
その結果、ＤＣＡＣＨＥ１１３ＡとＭＥＭ１０６との間で同期プリミティブを移動（例えば、ライトバック動作やキャッシュフィル動作）する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
【０１２０】
同期プリミティブがＤＣＡＣＨＥ１１３Ａに常駐することを保証するため、キャッシュコントローラ１１３２Ａは、同期プリミティブ操作命令に応じて与えられる要求信号に対する不可分操作により、データと同期プリミティブ属性情報とをＤＣＡＣＨＥ１１３Ａへ格納する。
【０１２１】
つまり、キャッシュコントローラ１１３２Ａは、データが同期プリミティブであることを示す指示信号が与えられた場合、要求信号に応じて、データと同期プリミティブ属性情報とをＤＣＡＣＨＥ１１３Ａに格納し終えるまで、後続の要求信号に対する処理を開始しない。
【０１２２】
なお、前述の同期プリミティブ操作命令の代わりに、同期プリミティブ属性情報を操作するだけの専用の命令を設けて、その専用の命令で同期プリミティブ属性情報を操作するとともに、一般的なデータのロードおよびストア命令で同期プリミティブデータを操作する構成も考えられる。
【０１２３】
しかしながら、本発明の構成は、そのような構成と比べて、同じ結果を得るために必要な命令数を削減できる点、および同期プリミティブデータの格納と同期プリミティブ属性情報の格納とが不可分に実行されることで、同期プリミティブデータと同期プリミティブ属性情報との整合性を保証できる点で優れている。
【０１２４】
（第２実施形態）
次に、第２実施形態に係るプロセッサシステムについて説明する。
【０１２５】
図８は、第２実施形態に係るプロセッサシステムの機能的な構成の一例を示すブロック図である。このプロセッサシステムは、２つのプロセッサを含むプロセッサシステム（マルチコアプロセッサ）である。図８のプロセッサシステムは、半導体システムＬＳＩ（ＳｏＣ）または情報機器セットとして実現される。
【０１２６】
図８のプロセッサシステムは、図１３の従来のマルチプロセッサシステムと比べて、制御信号線１１８Ａおよび制御信号線１２８Ａが追加される。また、ＣＰＵ１１１、ＣＰＵ１２１、ＤＣＡＣＨＥ１１３、ＤＣＡＣＨＥ１２３、ＳＮＰＣ１０２が、それぞれＣＰＵ１１１Ａ、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａ、ＳＮＰＣ１０２Ａで置き換えられる。
【０１２７】
ＣＰＵ１１１Ａ、ＤＣＡＣＨＥ１１３Ａ、および制御信号線１１８Ａの詳細は、第１実施形態で述べたとおりである（図３、図４を参照）。ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１２３Ａ、および制御信号線１２８Ａは、ＣＰＵ１１１Ａ、ＤＣＡＣＨＥ１１３Ａ、および制御信号線１１８Ａと同様に構成される。
【０１２８】
ＳＮＰＣ１０２Ａは、従来のＳＮＰＣ１０２と比べて、制御信号線１１８Ａおよび制御信号線１２８Ａを監視して指示信号を検知することにより、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する機能が追加される。
【０１２９】
図９は、命令ごとに、ＣＰＵ１１１Ａ、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａ、およびＳＮＰＣ１０２Ａが行う動作を示す図である。ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａ、およびＳＮＰＣ１０２Ａは、ＣＰＵ１１１Ａが命令を実行するときに出力する要求信号および指示信号に従って動作する。
【０１３０】
なお、図９で、ＣＰＵ１１１Ａ、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、ＤＣＡＣＨＥ１２３Ａのうち、命令を実行したプロセッサに関係する構成要素に「自」を付して示し、命令を実行していないプロセッサに関係する構成要素に「他」を付して示している。この表記は、図９および図１１で共通に用いられる。
【０１３１】
以下、それぞれの命令に対応する動作を詳しく説明する。なお、ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令について、それぞれｌｗａｒｘ命令およびｓｔｗｃｘ．命令と共通する動作についても、必要に応じて説明する。
【０１３２】
以下の説明は、命令がＣＰＵ１１１Ａによって実行される場合に適用される。命令がＣＰＵ１２１Ａによって実行される場合は、以下の説明のＣＰＵ１１１ＡとＣＰＵ１２１Ａとが入れ替わり、かつＤＣＡＣＨＥ１１３ＡとＤＣＡＣＨＥ１２３Ａとが入れ替わる。
【０１３３】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令が実行されるとき、まずＳ５１からＳ５６までに示されるキャッシュフィル動作が行われる。すなわち、ＤＣＡＣＨＥ１１３ＡでアドレスｒＡがミスした場合（Ｓ５１で真）、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３Ａをスヌープする（Ｓ５２）。
【０１３４】
ＤＣＡＣＨＥ１２３ＡでアドレスｒＡがヒットした場合（Ｓ５３で真）、ＳＮＰＣ１０２Ａは、スヌープバス１０３を通して、ＤＣＡＣＨＥ１２３ＡからアドレスｒＡを包含するラインのデータを読み出し、ＤＣＡＣＨＥ１１３Ａの１つのラインに書き込む（Ｓ５４）。
【０１３５】
他方、ＤＣＡＣＨＥ１２３ＡでアドレスｒＡがヒットしない場合（Ｓ５３で偽）、キャッシュコントローラ１１３２Ａは、共有バス１０４を通して、ＭＥＭ１０６からアドレスｒＡを包含するアラインメントされたライン長のデータを読み出し、１つのラインに書き込む（Ｓ５６）。
【０１３６】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に格納されたデータをｒＤにロードする（Ｓ５７）。キャッシュコントローラ１１３２Ａは、対応する同期プリミティブビットＳＰをセットする（Ｓ５８）。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをセットする（Ｓ５９）。
【０１３７】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令が実行されるとき、ＲＥＳＥＲＶＥビットがセットされていれば（Ｓ６１で真）、ＣＰＵ１１１Ａは要求信号および指示信号を出力する。ＳＮＰＣ１０２Ａおよびキャッシュコントローラ１１３２Ａは、前述のＳ５１からＳ５６までと同一のキャッシュフィル動作を行う（Ｓ６２）。
【０１３８】
キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に、ＣＰＵ１１１Ａから与えられるｒＳレジスタの値をストアし（Ｓ６３）、対応する同期プリミティブビットＳＰをセットする（Ｓ６４）。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３ＡにアドレスｒＡに対応する同期プリミティブビットＳＰがあればクリアする（Ｓ６５）。
【０１３９】
ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする（Ｓ６６）。ＳＮＰＣ１０２Ａは、ＣＰＵ１２１ＡのＲＥＳＥＲＶＥビットをクリアする（Ｓ６７）。
【０１４０】
ａｌｌｏｃｓｅｍ  ｒＳ，ｒＡ命令が実行されるとき、ＳＮＰＣ１０２Ａおよびキャッシュコントローラ１１３２Ａは、前述のＳ５１からＳ５６までと同一のキャッシュフィル動作を行う（Ｓ７１）。キャッシュコントローラ１１３２Ａは、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分にＣＰＵ１１１ＡのｒＳレジスタの値をストアし（Ｓ７２）、対応する同期プリミティブビットＳＰをセットする（Ｓ７３）。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３ＡにアドレスｒＡに対応する同期プリミティブビットＳＰがあればクリアする（Ｓ７４）。
【０１４１】
ｒｅｌｓｅｍ  ｒＡ命令が実行されるとき、キャッシュコントローラ１１３２Ａは、アドレスｒＡの対応部分を含むラインをＤＣＡＣＨＥ１１３ＡからＭＥＭ１０６へライトバックし（Ｓ８１）、対応する同期プリミティブビットＳＰをクリアする（Ｓ８２）。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１２３ＡにアドレスｒＡに対応する同期プリミティブビットＳＰがあればクリアする（Ｓ８３）。
【０１４２】
なお、アドレスｒＡの対応部分を含むラインに、セマフォ以外の有効なデータが載っていない場合、Ｓ８１のライトバックを省略する実装も採用し得る。具体的に、有効ビットＶがクリアされている場合、および有効ビットＶはセットされていてもダーティビットＤがクリアされている場合にライトバックを省略できる。
【０１４３】
ここまでに、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａにおいて、データおよび属性情報をライン単位で管理するように説明したが、１つのＴＡＧに対応して複数のサブラインを設け、サブラインごとにデータおよび属性情報を管理してもよい。
【０１４４】
以上のように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。
【０１４５】
図１０は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
【０１４６】
（Ｓ２０１）ＣＰＵ１１１Ａはａｌｌｏｃｓｅｍ命令を実行し、ＭＥＭ１０６からセマフォアドレスを包含するアラインメントされたライン長データをＤＣＡＣＨＥ１１３Ａ中のラインにロードしておく。対応ラインの同期プリミティブビットＳＰはセットされる。ＣＰＵ１２１Ａは、ＣＰＵ１１１Ａにより、同期プリミティブがＤＣＡＣＨＥ１１３Ａのライン中に確保されていることを前提として、ａｌｌｏｃｓｅｍ命令を実行しない。
【０１４７】
（Ｓ２０２）ＣＰＵ１２１Ａはｌｗａｒｘ２命令を実行し、同じセマフォアドレスで指定されるセマフォをロードしようとする。セマフォアドレスは、ＤＣＡＣＨＥ１２３Ａでミスする。
【０１４８】
ＳＮＰＣ１０２は、セマフォがＤＣＡＣＨＥ１１３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１１３中の対応ラインをＤＣＡＣＨＥ１２３Ａの一つのラインへスヌープバス１０３を経由してコピーし、ＤＣＡＣＨＥ１２３Ａのセマフォを含むラインの同期プリミティブ属性情報をセットする。
【０１４９】
ＣＰＵ１２１Ａは、ＤＣＡＣＨＥ１２３Ａの対応ラインからセマフォを読み出し、レジスタへロードする。ＣＰＵ１２１ＡはＲＥＳＥＲＶＥビットをセットする。
【０１５０】
（Ｓ２０３）ＣＰＵ１１１Ａはｌｗａｒｘ２命令を実行し、同じセマフォアドレスで指定されるセマフォをロードしようとする。セマフォアドレスは、ＤＣＡＣＨＥ１１３Ａでヒットする。
【０１５１】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３Ａの対応ラインからセマフォを読み出し、レジスタへロードする。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセットする。
【０１５２】
ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａは、セマフォを更新するための第１の値および第２の値をそれぞれ計算する。
【０１５３】
（Ｓ２０４）ＣＰＵ１１１Ａがｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第１の値はＤＣＡＣＨＥ１１３Ａの対応ラインへストアされる。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする。
【０１５４】
ＳＮＰＣ１０２Ａは、セマフォがＤＣＡＣＨＥ１２３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブ属性情報をクリアする。ＳＮＰＣ１０２Ａは、ＣＰＵ１２１ＡのＲＥＳＥＲＶＥビットをクリアする。
【０１５５】
（Ｓ２０５）ＣＰＵ１２１Ａが、ＣＰＵ１１１Ａよりも遅れてｓｔｗｃｘ２命令を実行すると既にＲＥＳＥＲＶＥビットがクリアされているので、セマフォは更新されない。
【０１５６】
（Ｓ２０６）ＣＰＵ１２１Ａは、改めてｌｗａｒｘ２命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。Ｓ２０４で、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブ属性情報がクリアされているため、セマフォアドレスは、ＤＣＡＣＨＥ１２３Ａでミスする。そして、Ｓ２０２と同様の処理が行われる。
【０１５７】
（Ｓ２０７）ＣＰＵ１２１Ａがｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第２の値はＤＣＡＣＨＥ１１３Ａの対応ラインへストアされる。ＣＰＵ１２１Ａは、ＲＥＳＥＲＶＥビットをクリアする。
【０１５８】
ＳＮＰＣ１０２Ａは、セマフォがＤＣＡＣＨＥ１１３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１１３Ａの対応ラインの同期プリミティブ属性情報をクリアする。ＳＮＰＣ１０２Ａは、ＣＰＵ１１１ＡのＲＥＳＥＲＶＥビットをクリアする。
【０１５９】
（Ｓ２０８）ＣＰＵ１１１Ａはｌｗａｒｘ２命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。Ｓ２０７で、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブビットＳＰがクリアされているため、セマフォアドレスは、ＤＣＡＣＨＥ１１３Ａでミスする。
【０１６０】
ＳＮＰＣ１０２は、セマフォがＤＣＡＣＨＥ１２３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１１３中の対応ラインをＤＣＡＣＨＥ１１３Ａの一つのラインへスヌープバス１０３を経由してコピーし、ＤＣＡＣＨＥ１１３Ａのセマフォを含むラインの同期プリミティブ属性情報をセットする。
【０１６１】
ＣＰＵ１１１Ａは、ＤＣＡＣＨＥ１１３Ａの対応ラインからセマフォを読み出し、レジスタへロードする。ＣＰＵ１１１ＡはＲＥＳＥＲＶＥビットをセットする。
【０１６２】
（Ｓ２０９）ＣＰＵ１１１Ａがｓｔｗｃｘ２命令を実行すると、ＲＥＳＥＲＶＥビットがセットされているので、第１の値はＤＣＡＣＨＥ１１３Ａの対応ラインへストアされる。ＣＰＵ１１１Ａは、ＲＥＳＥＲＶＥビットをクリアする。
【０１６３】
ＳＮＰＣ１０２Ａは、セマフォがＤＣＡＣＨＥ１２３Ａに含まれていることを検知し、ＤＣＡＣＨＥ１２３Ａの対応ラインの同期プリミティブ属性情報をクリアする。ＳＮＰＣ１０２Ａは、ＣＰＵ１２１ＡのＲＥＳＥＲＶＥビットをクリアする。
【０１６４】
（Ｓ２１０）ＣＰＵ１１１Ａは、ｒｅｌｓｅｍ命令を実行し、プロセス実行完了などにより不要となったセマフォを開放する。
【０１６５】
以上説明したように、第２実施形態に係るプロセッサシステムによれば、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａは、ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａが同期プリミティブ操作命令を実行するときに、ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａから与えられる制御信号に応じて同期プリミティブ属性情報をセットする。また、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち一方の同期プリミティブが更新されるときに、他方の同期プリミティブ属性情報をクリアする。
【０１６６】
これにより、同期プリミティブ属性情報がセットされた最新の値を持つ同期プリミティブはパージされず、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち少なくとも一方に常駐する。同期プリミティブの最新の値は、必要に応じて、スヌープバス１０３を通して、他方の同期プリミティブ属性情報がクリアされた（値が古い）同期プリミティブのフィル動作に用いられる。
【０１６７】
その結果、ＤＣＡＣＨＥ１１３ＡとＭＥＭ１０６との間、およびＤＣＡＣＨＥ１２３ＡとＭＥＭ１０６との間で同期プリミティブを移動（例えば、ライトバックやフィル）する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
【０１６８】
同期プリミティブがＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち少なくとも一方に常駐することを保証するため、ＳＮＰＣ１０２Ａは、同期プリミティブ操作命令に応じて与えられる要求信号に対する不可分操作により、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａにおいてデータと同期プリミティブ属性情報とを調整する。
【０１６９】
つまり、ＳＮＰＣ１０２Ａは、データが同期プリミティブであることを示す指示信号が与えられた場合、要求信号に応じてＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのデータと同期プリミティブ属性情報とを調整し終えるまで、後続の要求信号に対する処理を開始しない。このような制御は、一般にＳＮＰＣ１０２Ａにバッファ（キュー）を設け、後続の要求信号をバッファにて待ち合わせることで実現される。
【０１７０】
なお、前述の同期プリミティブ操作命令の代わりに、同期プリミティブ属性情報を操作するだけの専用の命令を設けて、その専用の命令で同期プリミティブ属性情報を操作するとともに、一般的なデータのロードおよびストア命令で同期プリミティブデータを操作する構成も考えられる。
【０１７１】
しかしながら、本発明の構成は、そのような構成と比べて、同じ結果を得るために必要な命令数を削減できる点、および同期プリミティブデータの調整と同期プリミティブ属性情報の調整とが不可分に実行されることで、同期プリミティブデータと同期プリミティブ属性情報との整合性を保証できる点で優れている。
【０１７２】
なお、ここまで、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち一方の同期プリミティブが更新されるときに、他方の同期プリミティブ属性情報をクリアするとして説明した（例えば、Ｓ２０４、Ｓ２０７、Ｓ２０９）。
【０１７３】
しかしながら、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａのうち一方にある同期プリミティブが更新されるときに、更新後の値で他方にある同期プリミティブを更新し、かつ他方の同期プリミティブ属性情報をセットしてもよい。
【０１７４】
この構成によれば、最新の同期プリミティブがＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａの両方に常駐するので、ＣＰＵ１１１ＡおよびＣＰＵ１２１Ａは、ＤＣＡＣＨＥ１１３ＡおよびＤＣＡＣＨＥ１２３Ａから、同期プリミティブ操作命令に対して早い応答を受け取ることができる。
【０１７５】
（第３実施形態）
次に、第３実施形態に係るプロセッサシステムについて説明する。
【０１７６】
第３実施形態に係るプロセッサシステムでは、第２実施形態で説明したプロセッサシステムと比べて、同期プリミティブをＤＣＡＣＨＥ１１３Ａのみに常駐させる点が異なる。そのために、ＣＰＵ１２１Ａが同期プリミティブ操作命令を実行するときに行われる動作が変更される。
【０１７７】
この構成では、ＤＣＡＣＨＥ１２３Ａは、同期プリミティブ以外のデータ専用のキャッシュメモリ装置として設けられ、データが同期プリミティブであることを示す指示信号が与えられた場合に要求信号を無視する。ＤＣＡＣＨＥ１２３Ａを省略することも可能である。
【０１７８】
図１１は、命令ごとに、ＣＰＵ１２１Ａ、ＤＣＡＣＨＥ１１３Ａ、およびＳＮＰＣ１０２Ａが行う動作を示す図である。ＤＣＡＣＨＥ１１３ＡおよびＳＮＰＣ１０２Ａは、ＣＰＵ１２１Ａが命令を実行するときに出力する要求信号および指示信号に従って動作する。
【０１７９】
以下、それぞれの命令に対応する動作を詳しく説明する。なお、ｌｗａｒｘ２命令およびｓｔｗｃｘ２命令について、それぞれｌｗａｒｘ命令およびｓｔｗｃｘ．命令と共通する動作についても、必要に応じて説明する。
【０１８０】
以下の説明は、命令がＣＰＵ１２１Ａによって実行される場合に適用される。命令がＣＰＵ１１１Ａによって実行される場合は、第２実施形態で説明した動作（図９を参照）から、他キャッシュ（つまり、ＤＣＡＣＨＥ１２３Ａ）に対する動作を除いた動作が行われる。
【０１８１】
ｌｗａｒｘ２  ｒＤ，ｒＡ命令が実行されるとき、ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３Ａをスヌープすることにより、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に格納されたデータを取得し（Ｓ９１）、ＣＰＵ１２１Ａは、ＳＮＰＣ１０２Ａによって取得されたデータをｒＤにロードする（Ｓ９２）。ＣＰＵ１２１Ａは、ＲＥＳＥＲＶＥビットをセットする（Ｓ９３）。
【０１８２】
ｓｔｗｃｘ２  ｒＳ，ｒＡ命令が実行されるとき、ＲＥＳＥＲＶＥビットがセットされていれば（Ｓ９４で真）、ＣＰＵ１２１Ａは要求信号および指示信号を出力する。ＳＮＰＣ１０２Ａは、ＤＣＡＣＨＥ１１３Ａをスヌープして（Ｓ９５）、ＤＣＡＣＨＥ１１３ＡのアドレスｒＡの対応部分に、ＣＰＵ１２１Ａから与えられるｒＳレジスタの値をストアする（Ｓ９６）。
【０１８３】
ＣＰＵ１２１Ａは、ＲＥＳＥＲＶＥビットをクリアする（Ｓ９７）。ＳＮＰＣ１０２Ａは、ＣＰＵ１１１ＡのＲＥＳＥＲＶＥビットをクリアする（Ｓ９８）。
【０１８４】
以上のように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。
【０１８５】
図１２は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。図１０のシーケンスチャートの説明と重複する事項については適宜説明を省略し、主として異なる点を説明する。
【０１８６】
（Ｓ３０１）Ｓ２０１と同様。
【０１８７】
（Ｓ３０２）ＣＰＵ１２１Ａはｌｗａｒｘ２命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。ＤＣＡＣＨＥ１２３ＡはＣＰＵ１２１Ａからの要求信号を無視する。ＳＮＰＣ１０２は、セマフォをＤＣＡＣＨＥ１１３Ａからスヌープバス１０３を通して取得し、ＣＰＵ１２１Ａは、ＳＮＰＣ１０２からセマフォを読み出し、レジスタへロードする。ＣＰＵ１２１ＡはＲＥＳＥＲＶＥビットをセットする。
【０１８８】
（Ｓ３０３〜Ｓ３０５）Ｓ２０３〜Ｓ２０５と同様。
【０１８９】
（Ｓ３０６〜Ｓ３０７）ＣＰＵ１２１Ａは、改めてｌｗａｒｘ２命令およびｓｔｗｃｘ２命令を実行する。ＤＣＡＣＨＥ１２３ＡはＣＰＵ１２１Ａからの要求信号を無視する。セマフォアドレスで指定されるセマフォは、ＳＮＰＣ１０２Ａによって、スヌープバス１０３を通して、ＤＣＡＣＨＥ１１３Ａから取得され、ＤＣＡＣＨＥ１１３Ａへ書き込まれる。
【０１９０】
（Ｓ３０８〜Ｓ３１０）Ｓ２０８〜Ｓ２１０と同様。
【０１９１】
以上説明したように、第３実施形態に係るプロセッサシステムによれば、同期プリミティブはＤＣＡＣＨＥ１１３Ａに常駐し、ＣＰＵ１２１Ａが同期プリミティブ操作命令を実行するときは、データおよび同期プリミティブ属性情報は、ＳＮＰＣ１０２Ａによりスヌープバス１０３を通して、ＤＣＡＣＨＥ１１３Ａにある同期プリミティブが操作される。
【０１９２】
その結果、ＤＣＡＣＨＥ１１３ＡとＭＥＭ１０６との間、およびＤＣＡＣＨＥ１２３ＡとＭＥＭ１０６との間で同期プリミティブを移動（例えば、ライトバック動作やフィル動作）する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
【０１９３】
なお、頻繁にプロセス間の同期処理が発生しない場合など、同期プリミティブをキャッシュメモリ装置に常駐させることが性能上不利と判断される場合があり得る。その場合、前述したｌｗａｒｘ２命令とｓｔｗｃｘ２命令の代わりに、従来のｌｗａｒｘ命令とｓｔｗｃｘ．命令を用いてもよい。
【０１９４】
そうすれば、同期プリミティブはキャッシュメモリ装置に常駐せず、キャッシュメモリ装置を、同期プリミティブ以外のデータのアクセス性能を向上するためにも利用することができる。
【産業上の利用可能性】
【０１９５】
本発明に係るキャッシュメモリ装置、およびキャッシュメモリ装置を含むプロセッサシステムは、例えば、デジタル情報機器や携帯通信装置などに組み込まれ、電池で駆動される制御用マイクロプロセッサやマイクロコントローラとして有用である。また組み込み向けＤＭＡ制御用ＬＳＩやＤＳＰなどの用途にも応用できる。
【符号の説明】
【０１９６】
１０１  ＢＣＵ（バス制御装置）
１０２、１０２Ａ  ＳＮＰＣ（スヌープ制御装置）
１０３  スヌープバス
１０４  共有バス
１０５  ＭＣＵ（メモリ制御装置）
１０６  ＭＥＭ（主記憶装置）
１０７、１０８  ＰＥＲＩＰＨＥＲＡＬ（周辺回路）
１１１、１２１、１１１Ａ、１２１Ａ  ＣＰＵ（中央処理装置）
１１２、１２２  ＩＣＡＣＨＥ（命令キャッシュメモリ装置）
１１３、１２３、１１３Ａ、１１３Ｂ、１２３Ａ  ＤＣＡＣＨＥ（データキャッシュメモリ装置）
１１４、１２４  ＦＥＴＣＨ／ＤＥＣ（フェッチおよびデコード部）
１１５、１２５  ＥＸＥＣ（実行部）
１１６、１２６  ＲＥＧ（レジスタ部）
１１７、１２７  命令信号線
１１８、１２８  要求信号線
１１９、１２９  信号線
１１８Ａ、１２８Ａ  制御信号線
１１３１Ａ、１１３１Ｂ  記憶部
１１３２Ａ、１１３２Ｂ  キャッシュコントローラ
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、
データと属性情報とを対応付けて格納することができる記憶手段と、
データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、
前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段と
を備えることを特徴とするキャッシュメモリ装置。
【請求項２】
前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止する
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納する
ことを特徴とする請求項１または請求項２に記載のキャッシュメモリ装置。
【請求項４】
請求項１から請求項３のいずれか１項に記載のキャッシュメモリ装置と、
特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置と
を備えることを特徴とするプロセッサシステム。
【請求項５】
請求項１から請求項３のいずれか１項に記載の第１のキャッシュメモリ装置と、
請求項１から請求項３のいずれか１項に記載の第２のキャッシュメモリ装置と、
前記第１のキャッシュメモリ装置および前記第２のキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置と
を備えることを特徴とするキャッシュメモリシステム。
【請求項６】
前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する
ことを特徴とする請求項５に記載のキャッシュメモリシステム。
【請求項７】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置に格納されている前記同期プリミティブ属性情報を削除する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項８】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置に格納されている前記第１のデータを、前記第２のデータに更新する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項９】
前記第２のキャッシュメモリ装置に、第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記第２のキャッシュメモリ装置は、前記第２のデータおよび前記第２のデータに対応する同期プリミティブ属性情報を格納することをやめて、
前記スヌープ装置は、前記第２のデータと前記第２のデータに対応する同期プリミティブ属性情報とを、前記第１のキャッシュメモリ装置に格納する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項１０】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置から前記第１のデータを取得し、前記取得された第１のデータと前記第１のデータに対応する同期プリミティブ属性情報とを、前記第２のキャッシュメモリ装置に格納し、
前記第２のキャッシュメモリ装置は、前記格納された第１のデータを前記要求信号に対して応答する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項１１】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置から前記第１のデータを取得し、前記取得された第１のデータを前記要求信号に対して応答する
ことを特徴とする請求項５または請求項６に記載のキャッシュメモリシステム。
【請求項１２】
請求項５から請求項１１のいずれか１項に記載のキャッシュメモリシステムと、
前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置と
を備えることを特徴とするプロセッサシステム。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009122694.tif 000016
【図２】
2009122694.tif 000017
【図３】
2009122694.tif 000018
【図４】
2009122694.tif 000019
【図５】
2009122694.tif 000020
【図６】
2009122694.tif 000021
【図７】
2009122694.tif 000022
【図８】
2009122694.tif 000023
【図９】
2009122694.tif 000024
【図１０】
2009122694.tif 000025
【図１１】
2009122694.tif 000026
【図１２】
2009122694.tif 000027
【図１３】
2009122694.tif 000028
【手続補正書】
【提出日】平成23年5月10日(2011.5.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、
データと属性情報とを対応付けて格納することができる記憶手段と、
データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、
前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段と
を備え、
前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止する
ことを特徴とするキャッシュメモリ装置。
【請求項２】
前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納する
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
請求項１または請求項２に記載のキャッシュメモリ装置と、
特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置と
を備えることを特徴とするプロセッサシステム。
【請求項４】
請求項１に記載の第１のキャッシュメモリ装置と、
請求項１に記載の第２のキャッシュメモリ装置と、
前記第１のキャッシュメモリ装置および前記第２のキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置と
を備えることを特徴とするキャッシュメモリシステム。
【請求項５】
前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する
ことを特徴とする請求項４に記載のキャッシュメモリシステム。
【請求項６】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置に格納されている前記同期プリミティブ属性情報を削除する
ことを特徴とする請求項４または請求項５に記載のキャッシュメモリシステム。
【請求項７】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置に格納されている前記第１のデータを、前記第２のデータに更新する
ことを特徴とする請求項４または請求項５に記載のキャッシュメモリシステム。
【請求項８】
前記第２のキャッシュメモリ装置に、第１のアドレスに配置されるデータを第２のデータに更新することを要求する要求信号と、前記第２のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
前記第２のキャッシュメモリ装置は、前記第２のデータおよび前記第２のデータに対応する同期プリミティブ属性情報を格納することをやめて、
前記スヌープ装置は、前記第２のデータと前記第２のデータに対応する同期プリミティブ属性情報とを、前記第１のキャッシュメモリ装置に格納する
ことを特徴とする請求項４または請求項５に記載のキャッシュメモリシステム。
【請求項９】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置から前記第１のデータを取得し、前記取得された第１のデータと前記第１のデータに対応する同期プリミティブ属性情報とを、前記第２のキャッシュメモリ装置に格納し、
前記第２のキャッシュメモリ装置は、前記格納された第１のデータを前記要求信号に対して応答する
ことを特徴とする請求項４または請求項５に記載のキャッシュメモリシステム。
【請求項１０】
前記第１のキャッシュメモリ装置に、第１のアドレスに配置される第１のデータと、前記第１のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第２のキャッシュメモリ装置に、前記第１のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
前記スヌープ装置は、前記第１のキャッシュメモリ装置から前記第１のデータを取得し、前記取得された第１のデータを前記要求信号に対して応答する
ことを特徴とする請求項４または請求項５に記載のキャッシュメモリシステム。
【請求項１１】
請求項４から請求項１０のいずれか１項に記載のキャッシュメモリシステムと、
前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置と
を備えることを特徴とするプロセッサシステム。
【国際調査報告】
2009122694.tif 000029
2009122694.tif 000030
2009122694.tif 000031