JP4767361B2 - キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム - Google Patents

キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム Download PDF

Info

Publication number
JP4767361B2
JP4767361B2 JP2010505371A JP2010505371A JP4767361B2 JP 4767361 B2 JP4767361 B2 JP 4767361B2 JP 2010505371 A JP2010505371 A JP 2010505371A JP 2010505371 A JP2010505371 A JP 2010505371A JP 4767361 B2 JP4767361 B2 JP 4767361B2
Authority
JP
Japan
Prior art keywords
data
cache memory
synchronization primitive
instruction
memory device
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
JP2010505371A
Other languages
English (en)
Other versions
JPWO2009122694A1 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2010505371A priority Critical patent/JP4767361B2/ja
Publication of JPWO2009122694A1 publication Critical patent/JPWO2009122694A1/ja
Application granted granted Critical
Publication of JP4767361B2 publication Critical patent/JP4767361B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、キャッシュメモリ装置などに関し、特に同期プリミティブとして用いられるデータのアクセスを効率化する技術に関する。
昨今、高い性能が要求されるコンピュータシステムには、さまざまな粒度レベルで並列処理機構が導入されている。例えば、命令レベルの並列性を得るためSIMD(Single Instruction Multiple Data)、VLIW(Very Long Instruction Word)、superscalarなどが広く実用化され、命令流レベルの並列性を得るためマルチスレッド処理やマルチタスク処理などが広く実用化され、また、LSIレベルの並列性を得るためマルチプロセッサ構成、マルチコア構成などが広く実用化されている。
コンピュータシステムにおいて、1つ以上のプロセッサが複数の処理(プロセス)を並列に実行し、複数のプロセスで一つの資源を共有する場合に、プロセス間の同期を取るための種々の技術が用いられる。
ここで、プロセス間の同期を取るとは、所望の処理結果を得るために、複数のプロセスから共有資源に対して行われるアクセスの順序を保証することをいう。
例えば、特許文献1には、複数プロセスを並列に実行する1つ以上のプロセッサが、各プロセッサに個別に接続されるローカルキャッシュを利用することによって、共有メモリへのアクセスを減少させながら、プロセス間の同期を取る技術が開示されている。
この技術では、プロセス間の同期を取るためにバリア命令が使われる。バリア命令は、必要に応じてプロセッサの実行を停止させることで、アクセスの順序を保証する。
プロセス間の同期を取るための技術として、共有資源に対応する同期プリミティブを設け、複数プロセスのうち同期プリミティブの更新に成功した1つが共有資源を排他的にアクセスする技術も、広く実用化されている。
この技術では、同期プリミティブが未使用を示す状態にあることを確認後、使用中を示す状態に更新できたプロセスのみが、対応する共有資源を排他的に使用する処理区間であるクリティカルセクションに入ることができる。セマフォやミューテックスは、同期プリミティブの一例である。
複数のプロセスが同期プリミティブを矛盾なく更新するために、同期プリミティブのリード・モディファイ・ライト操作はアトミック(不可分)に行われる必要がある。
アトミックな操作の不可分性から、複数のプロセスによるアトミックな操作は並列実行することはできないから、同期プリミティブをアトミックに操作する期間が長くなるほど、プロセスの並列性が損なわれ、システムのスループットに悪影響が出る。
そこで、特許文献2には、並列動作する複数のプロセッサのそれぞれに対応してセマフォバッファを設け、それぞれのセマフォバッファにおいて、セマフォの更新を並行して実行する技術が開示されている。
また、非特許文献1には、セマフォの更新権としてのリザベーションの取得を伴ったメモリ参照命令lwarx、およびリザベーションが取得されている場合にのみセマフォを更新する条件付きメモリ更新命令stwcx.を設けたコンピュータアーキテクチャが開示されている。
このコンピュータアーキテクチャによれば、stwcx.命令が成功するまで、lwarx命令とstwcx.命令とを繰り返すことで、等価的にアトミックなリード・モディファイ・ライト操作が可能となる。アトミックな操作の期間は細分され、システムのスループットに対する悪影響は緩和される。
以下、lwarx命令およびstwcx.命令で定義されたリザベーションの操作が可能なマルチプロセッサシステムの一具体例を説明する。なお、lwarx命令およびstwcx.命令は、データのキャッシュ操作を具体的に定義しないため、データキャッシュは周知慣用の一般的な構成を示している。
図13は、マルチプロセッサシステムの機能的な構成を示すブロック図である。図13に示されるマルチプロセッサシステムは、例えば半導体システムLSI(SoC)または情報機器セットとして実現される。
図13において、CPU(中央処理装置)111およびCPU121は、ICACHE(命令キャッシュメモリ装置)112およびICACHE122から、命令の集合体であるプログラムをそれぞれ読み込んで命令を実行する情報処理回路であり、マイクロプロセッサまたは単にプロセッサとも呼ばれる。
CPU111は、一例として、ICACHE112から命令を読み込んでデコードするFETCH/DEC(フェッチおよびデコード部)114、デコードされた命令を実行するEXEC(実行部)115、および複数のレジスタからなるREG(レジスタ部)116から構成される。
CPU121も同様に、ICACHE122から命令を読み込んでデコードするFETCH/DEC124、EXEC125、およびREG126から構成される。
ICACHE112は、MEM(主記憶装置)106に格納されるプログラムを先読みして一時的に保持し、命令信号線117を通してCPU111に高速に命令流を供給するバッファである。
ICACHE122も同様に、MEM106に格納されるプログラムを先読みして一時的に保持し、命令信号線127を通してCPU121に高速に命令流を供給するバッファである。
DCACHE(データキャッシュメモリ装置)113は、MEM106に格納されるデータを先読みして一時的に保持し、CPU111に高速にデータを供給するバッファである。また、DCACHE113は、CPU111がMEM106に書き込むべきデータを一時的に保持し、後で時期を見計らってMEM106に書き込む。DCACHE113は、このような動作を、CPU111のEXEC115から要求信号線118を通して与えられるアクセス要求信号に従って実行する。
DCACHE123も、DCACHE113と同様の動作を、CPU121のEXEC125から要求信号線128を通して与えられるアクセス要求信号に従って実行する。
DCACHE113およびDCACHE123は、例えば4ウェイセットアソシアティブといった周知慣用の構成(図示せず)で実現される。
図13において、CPU111とCPU121とは、機能的に異種のヘテロジニアスであってもよく、同種のホモジニアスであってもよい。また、ICACHE112とICACHE122とは、容量や構成、性能が異なってもよく、DCACHE113とDCACHE123とは、容量や内部的な構成、性能が異なってもよい。
BCU(バス制御装置)101は、共有バス104に接続される複数のブロック間のデータ転送を制御するバス制御装置である。
共有バス104は、複数のブロックに接続され複数のブロック間でデータを転送するための、アドレス、データ線、制御信号などから構成されるバスであり、時分割して利用される。ある瞬間に接続されたいずれかのブロックがマスタとなり、スレーブとなる他のブロックとの間でデータが転送される。
MCU(メモリ制御装置)105は、CPU111、CPU121、およびその他のマスタがMEM106へデータを読み書きするためのインターフェイスである。
MEM106は、DRAM(Dynamic Random Access Memory)、FeRAM(Ferroelectric RAM)、ReRAM(Resistive RAM)、フラッシュメモリなどの半導体メモリであり、CPU111およびCPU121が処理するデータやプログラムを格納する。
MEM106は、CPU111およびCPU121と比べて動作速度が遅く、この動作速度の差を埋めるために、MEM106と比べて高速小容量のICACHE112、DCACHE113、ICACHE122、およびDCACHE123が設けられる。
近年、CPU111およびCPU121の動作速度とMEM106の動作速度の差が開いており、MEM106のアクセスがシステム性能上のボトルネックとなっている。
PERIPHERAL(周辺回路)107およびPERIPHERAL108は、共有バス104に接続されCPU111の補助機能の一部を担うブロックであり、割込み制御、DMAC(Direct Memory Access Controller)、外部インターフェイス、タイマー、カウンター、リセット制御、A/D変換器、D/A変換器、シリアルIOなど様々な機能が実装され得る。
スヌープバス103は、DCACHE113、DCACHE123、およびSNPC(スヌープ制御装置)102を接続し、DCACHE113とDCACHE123との間のデータ転送のために使われる。
SNPC102は、スヌープバス103と共有バス104に接続され、DCACHE113およびDCACHE123に与えられるアクセス要求に応じて、DCACHE113、DCACHE123、およびMEM106の間のデータ転送を制御することにより、DCACHE113およびDCACHE123のデータの一貫性を維持する。SNPC102は、DCACHE113およびDCACHE123に対するキャッシュコントローラの機能を含む。
このように構成されるマルチプロセッサシステムにおいて、CPU111およびCPU121が同じ共有資源に対応する同期プリミティブに対して競合する更新処理を行った場合の具体的動作の一例を説明する。以下、同期プリミティブをセマフォとして説明する。
CPU111は、所定のアドレス(セマフォアドレスという)に配置されるデータ(セマフォ)をロードするためのlwarx命令を実行する。MEM106のセマフォの複製が、共有バス104を通して、DCACHE113に格納され、DCACHE113に格納されたセマフォがCPU111に供給される。
CPU111にてリザベーションが取得されたことを表すため、REG116に設けられるRESERVEビットがセットされる。
SNPC102は、CPU111およびCPU121がセマフォアドレスに対して行う更新操作を監視し始める。
CPU121は、同じセマフォアドレスに配置されるセマフォをロードするためのlwarx命令を実行する。MEM106のセマフォが共有バス104を通してDCACHE123に格納されるか、または、DCACHE113のセマフォが、SNPC102により、スヌープバス103を通してDCACHE123へ格納される。
CPU121にてリザベーションが取得されたことを表すため、REG126に設けられるRESERVEビットがセットされる。
SNPC102は、CPU111およびCPU121がセマフォアドレスに対して行う更新操作の監視を続行する。
CPU111およびCPU121は、セマフォを更新するための第1の値および第2の値をそれぞれ計算する。
CPU111は、セマフォアドレスに第1の値をストアするためのstwcx.命令を実行する。REG116のRESERVEビットがセットされているので、DCACHE113のセマフォは第1の値に書き換えられる。
DCACHE113からセマフォがパージされている場合、MEM106のセマフォが共有バス104を通してDCACHE113に格納されるか、または、DCACHE123のセマフォが、SNPC102により、スヌープバス103を通してDCACHE113へ格納されてから、第1の値に書き換えられる。これによりCPU111は、共有資源のアクセス権を取得する。
DCACHE113がライトスルー方式であれば、第1の値は直ちにMEM106へ書き込まれる。DCACHE113がライトバック方式であれば、第1の値は後で必要に応じてMEM106へ書き込まれる。
CPU111にてリザベーションが破棄されたことを表すため、REG116のRESERVEビットはクリアされる。
SNPC102は、CPU111がDCACHE113のセマフォを第1の値に更新したことを検知し、スヌープバス103を通して、DCACHE123のセマフォを無効化するか、またはDCACHE123のセマフォを第1の値に更新する。
SNPC102は、さらに、CPU121にてリザベーションが破棄されたことを表すため、信号線129を介して、CPU121におけるREG126のRESERVEビットをクリアする。
CPU121は、CPU111よりも遅れて、第2の値をセマフォアドレスにストアするためのstwcx.命令を実行する。REG126のRESERVEビットがクリアされているので、第2の値の実効的なストア動作は行われず、CPU121は、共有資源のアクセス権を取得しない。
以上説明したように、CPU111およびCPU121の一方がセマフォを更新したときに、SNPC102の制御によって、信号線119または信号線129を介して、他方のRESERVEビットがクリアされるので、遅れて実行されたstwcx.命令ではセマフォは更新されない。
これにより、CPU111およびCPU121のうち、先にstwcx.命令を実行した一方のみが、共有資源のアクセス権を取得し、共有資源を排他的にアクセス可能となることによって、プロセス間の同期が取られる。
特開平4−279960号公報 特開平9−138778号公報
32ビットPowerPC アーキテクチャプログラミング環境、Freescale Semiconductor,Reference Manual,MPCFPE32BJ Rev.1,12/2005(原本MPCFPE32B Rev.3)
前述のマルチプロセッサシステムによれば、DCACHE113、DCACHE123からセマフォがパージされる際に、セマフォのMEM106へのライトバック動作が発生する。また、パージ後、再びセマフォがアクセスされる場合、MEM106からDCACHE113およびDCACHE123へセマフォの読み出し動作が発生する。
これらの動作は、マルチプロセッサシステムに限らず、シングルプロセッサシステムにおいても、同期プリミティブ(セマフォ)をキャッシュに保持するシステムにおいてオーバーヘッドとなる。
しかしながら、従来、これらの動作の発生頻度を削減するための効果的な対策が取られたキャッシュメモリ装置は知られていない。
本発明は、このような背景に鑑みてなされたものであり、同期プリミティブを格納し、かつ前述したオーバーヘッドの軽減を図るキャッシュメモリ装置の提供を目的とする。
上記問題を解決するために、本発明のキャッシュメモリ装置は、主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、データと属性情報とを対応付けて格納することができる記憶手段と、データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであり、かつパージが禁止されることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段とを備える。
また、前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止してもよい。
また、前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納してもよい。
本発明は、前記のキャッシュメモリ装置と、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置とを備えるプロセッサシステムとしても実現できる。
本発明は、前記2つのキャッシュメモリ装置と、それぞれのキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置とを備えるキャッシュメモリシステムとしても実現できる。
また、前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整してもよい。
本発明は、前記キャッシュメモリシステムと、前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置とを備えるプロセッサシステムとしても実現できる。
本発明の効果は、従来技術に比べ、マルチプロセッサ間やマルチスレッド間の相互排他制御のための、同期プリミティブの操作に係るオーバーヘッドを低減することである。データのアクセスを要求する特定の命令をCPUが実行するときに、CPUから与えられる指示信号に応じて同期プリミティブ属性情報をキャッシュメモリ装置に保持することにより、同期プリミティブをキャッシュメモリ装置に常駐させるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
図1は、第1実施形態に係るシングルプロセッサシステムの機能的な構成の一例を示すブロック図である。 図2は、同期プリミティブ操作命令の一例を示す図である。 図3は、CPUおよびキャッシュメモリの詳細な構成の一例を示すブロック図である。 図4は、キャッシュ制御信号の一例を示す図である。 図5は、CPUおよびキャッシュメモリの動作の一例を示す図である。 図6は、キャッシュメモリの機能的な構成の他の一例を示すブロック図である。 図7は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。 図8は、第2実施形態に係るマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。 図9は、CPU、キャッシュメモリ、およびSNPCの動作の一例を示す図である。 図10は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。 図11は、CPU、キャッシュメモリ、およびSNPCの動作の他の一例を示す図である。 図12は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。 図13は、従来のマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。
以下の説明において、本発明のプロセッサシステムは、広く普及する汎用的な情報処理システムとして例示される。以下の実施形態において、シングルプロセッサ構成では、マルチスレッド処理が、マルチプロセッサ(マルチコア)構成ではマルチプロセッサ処理またはマルチプロセッサ処理およびマルチスレッド処理が、命令流レベルの並列処理として利用される。
(第1実施形態)
まず、第1実施形態に係るプロセッサシステムについて説明する。
図1は、第1実施形態に係るプロセッサシステムの機能的な構成の一例を示すブロック図である。このプロセッサシステムは、1つの並列処理プロセッサを含んで構成される。図1のプロセッサシステムは、半導体システムLSI(SoC)または情報機器セットとして実現される。
図1のプロセッサシステムは、図13の従来のマルチプロセッサシステムと比べて、第2のプロセッサに関係するCPU121、ICACHE122、DCACHE123、ならびに、スヌープ機能に関係するSNPC102、スヌープバス103、信号線119、および信号線129が省略され、制御信号線118Aが追加される。また、CPU111およびDCACHE113は、CPU111AおよびDCACHE113Aで置き換えられる。
CPU111Aは、いくつかの特定の命令を実行するときに、通常の命令を実行するときと同様の、命令に応じたデータのアクセスを要求する要求信号を要求信号線118に出力するのに加えて、要求されるデータが同期プリミティブであることを示す指示信号を、制御信号線118Aに出力する。これらの特定の命令を、同期プリミティブ操作命令と総称する。
図2は、同期プリミティブ操作命令の一例を説明する図である。
図2に示されるように、lwarx2命令、stwcx2命令、allocsem命令、およびrelsem命令が、同期プリミティブ操作命令として設けられる。
lwarx2命令およびstwcx2命令は、それぞれ従来技術の項で説明したlwarx命令およびstwcx.命令に対して、キャッシュ上の同期プリミティブ(セマフォ)、および後述する同期プリミティブ属性情報を明示的に操作する機能を追加した命令である。
allocsem命令およびrelsem命令は、本発明が新たに提案する命令である。
それぞれの命令の概要と効果は、図2に示すとおりである。
DCACHE113Aは、例えば4ウェイセットアソシアティブといった周知の構成の上に、データが有効な同期プリミティブであることを示す同期プリミティブ属性情報を保持し、かつ制御信号線118Aから取得される制御信号に応じて同期プリミティブ属性情報を操作する機能が追加されたキャッシュメモリ装置である。
図3は、DCACHE113Aの機能的な構成の一例を示すブロック図である。
図3に示されるように、DCACHE113Aは、記憶部1131Aおよびキャッシュコントローラ1132Aからなる。
記憶部1131Aは、各ラインに同期プリミティブ属性情報を格納する同期プリミティブビットSPを有している。同期プリミティブビットSPは、セットされている場合に、ラインのデータの一部または全部に有効な同期プリミティブが保持されていることを表す。有効ビットV、タグTAG、ダーティビットD、およびデータは、キャッシュメモリ装置に保持される周知の情報であるため、説明を省略する。
キャッシュコントローラ1132Aは、同期プリミティブビットSPがセットされたラインを、例えばリプレースの候補から除外するなどして、DCACHE113Aからパージされることを禁止する。
キャッシュコントローラ1132Aは、要求信号線118を通して、要求信号を取得する。要求信号は、例えば、Address信号、Data信号、およびデータの参照および更新のいずれかを示すR/W信号からなる。
また、キャッシュコントローラ1132Aは、制御信号線118Aを通して、要求信号で要求されるデータが同期プリミティブであることを示す指示信号を取得する。指示信号は、例えば、SPREQ信号およびSPCTL信号からなる。
SPREQ信号は、要求信号が同期プリミティブのロードおよびストア操作を要求していることを示す。SPCTL信号は、要求信号が同期プリミティブのアロケートおよび開放操作を要求していることを示す。
図4は、命令に対応する要求信号および制御信号を説明する図である。
lwarx2 rD,rA命令は、アドレスrAに配置されるデータをrDレジスタにロードしてリザベーションを取得することを意味する。
stwcx2 rS,rA命令は、rSレジスタのデータをアドレスrAにストアしてリザベーションを破棄することを意味する。この命令は、リザベーションが取得されているときのみ実行される条件命令である。
allocsem rS,rA命令は、アドレスrAに配置されるデータをDCACHE113Aに確保し、rSレジスタの値をアドレスrAにストアすることを意味する。
relsem rA命令は、アドレスrAに配置されるデータをDCACHE113Aから開放することを意味する。
その他の命令は、同期プリミティブ操作命令以外の一般の命令である。
図4には、CPU111Aがそれぞれの命令を実行するときに、要求信号線118にて伝送される要求信号Address、Data、R/W、および制御信号線118Aにて伝送される指示信号SPREQ、RPCTLの内容が示される。
図5は、命令ごとに、CPU111AおよびDCACHE113Aが行う動作を示す図である。DCACHE113Aは、CPU111Aがこれらの命令を実行するときに出力する要求信号および指示信号(図4を参照)に従って動作する。
以下、それぞれの命令に対応する動作を詳しく説明する。なお、lwarx2命令およびstwcx2命令について、それぞれlwarx命令およびstwcx.命令と共通する動作についても、必要に応じて説明する。
lwarx2 rD,rA命令が実行されるとき、まず、S11、S12で示されるキャッシュフィル動作が行われる。すなわち、DCACHE113AにアドレスrAに配置されるデータが格納されていない場合、およびそのようなデータが格納されていても対応する同期プリミティブビットSPがクリアされている場合にミスと判断し(S11で真)、キャッシュコントローラ1132Aは、共有バス104を通して、MEM106からアドレスrAを包含するアラインメントされたライン長のデータを読み出し、DCACHE113Aの記憶部1131Aの1つのラインに書き込む(S12)。
CPU111Aは、DCACHE113AのアドレスrAの対応部分に格納されたデータをrDにロードする(S13)。キャッシュコントローラ1132Aは、対応する同期プリミティブビットSPをセットする(S14)。CPU111Aは、RESERVEビットをセットする(S15)。
stwcx2 rS,rA命令が実行されるとき、RESERVEビットがセットされていれば(S21で真)、CPU111Aは要求信号および指示信号を出力する。キャッシュコントローラ1132Aは、前述のS11、S12と同じキャッシュフィル動作を行う(S22)。
キャッシュコントローラ1132Aは、DCACHE113AのアドレスrAの対応部分に、CPU111Aから与えられるrSレジスタの値をストアし(S23)、対応する同期プリミティブビットSPをセットする(S24)。CPU111Aは、RESERVEビットをクリアする(S25)。
allocsem rS,rA命令が実行されるとき、キャッシュコントローラ1132Aは、前述のS11、S12と同じキャッシュフィル動作を行う(S31)。キャッシュコントローラ1132Aは、DCACHE113AのアドレスrAの対応部分にCPU111Aから与えられるrSレジスタの値をストアし(S32)、対応する同期プリミティブビットSPをセットする(S33)。
relsem rA命令が実行されるとき、キャッシュコントローラ1132Aは、アドレスrAの対応部分を含むラインをDCACHE113AからMEM106へライトバックし(S41)、対応する同期プリミティブビットSPをクリアする(S42)。
なお、アドレスrAの対応部分を含むラインに、セマフォ以外の有効なデータが載っていない場合、S41でライトバックを省略する実装も採用し得る。具体的に、有効ビットVがクリアされている場合、および有効ビットVはセットされていてもダーティビットDがクリアされている場合にライトバックを省略できる。
なお、DCACHE113Aにおいて、データおよび属性情報をライン単位で管理するように説明したが、1つのTAGに対応して複数のサブラインを設け、サブラインごとにデータおよび属性情報を管理してもよい。
図6は、サブラインごとにデータおよび属性情報を管理するDCACHE113Bの機能的な構成の一例を示すブロック図である。
DCACHE113Bでは、記憶部1131Bにおいて、1つのタグに対して4つのサブラインが設けられ、同期プリミティブビットSPを含む属性ビットは、それぞれのサブラインに対応して設けられる。キャッシュコントローラ1132Bは、サブラインの単位で、データおよび属性情報を更新する。
ラインごとにデータおよび属性情報を管理するDCACHE113A(図2)、および、サブラインごとにデータおよび属性情報を管理するDCACHE113B(図6)は、いずれも本発明のキャッシュメモリ装置の一例である。
また、記憶部1131Aおよび記憶部1131Bは、本発明の記憶手段の一例であり、キャッシュコントローラ1132Aおよびキャッシュコントローラ1132Bは、本発明の取得手段および制御手段の一例である。
このように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。
図7は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
CPU111Aはマルチスレッド型プロセッサであり、複数のスレッドを並列に実行することができる。以下では、同期プリミティブをセマフォであるとして説明する。
(S101)スレッド1でallocsem命令を実行し、MEM106からセマフォアドレスを包含するアラインメントされたライン長データをDCACHE113A中のラインにロードしておく。対応ラインの同期プリミティブビットSPはセットされる。
以下、ロードおよびストアされるデータの移動を実線矢印で示し、ロードおよびストアに付随するRESERVEビットおよび同期プリミティブビットSPの参照および更新を点線矢印で示す。また、RESERVEビットがセットされている期間および同期プリミティブビットSPがセットされている期間を、理解のため太線で示す。この表記は、図7、図10、および図12で共通に用いられる。
スレッド2は、スレッド1により、セマフォがDCACHE113Aのライン中に確保されていることを前提として、allocsem命令を実行しない。
(S102)スレッド2でlwarx2命令を実行し、同じセマフォアドレスからセマフォを読み出す。この場合、既にセマフォはDCACHE113Aに格納されているので、セマフォはDCACHE113Aから読み出されCPU111Aのレジスタへロードされる。CPU111AはRESERVEビットをセットする。
(S103)スレッド1でlwarx2命令を実行し、同じセマフォアドレスからセマフォをロードする。この場合、既にセマフォはDCACHE113Aに格納されているので、セマフォはDCACHE113Aから読み出されCPU111Aのレジスタへロードされる。CPU111AはRESERVEビットをセット状態に維持する。
スレッド1およびスレッド2で、セマフォを更新するための第1の値および第2の値がそれぞれ計算される。
(S104)スレッド1でstwcx2命令を実行すると、RESERVEビットがセットされているので、第1の値はDCACHE113Aのセマフォアドレスに対応する部分にストアされる。stwcx2命令の実行によりCPU111AのRESERVEビットはクリアされる。
(S105)スレッド1よりも遅れて、スレッド2でstwcx2命令を実行すると、既にRESERVEビットがクリアされているので、セマフォは更新されない。
(S106、S107)スレッド2で、改めてlwarx2命令とstwcx2命令とを行うことによって、セマフォを更新することができる。
(S108)スレッド1で、relsem命令を実行し、プロセス実行完了などにより不要となったセマフォを開放する。
以上説明したように、第1実施形態に係るプロセッサシステムによれば、DCACHE113Aは、CPU111Aが同期プリミティブ操作命令を実行するときに、CPU111Aから与えられる制御信号に応じて同期プリミティブビットをセットする。同期プリミティブビットがセットされたデータはパージを禁止され、DCACHE113Aに常駐する。
その結果、DCACHE113AとMEM106との間で同期プリミティブを移動(例えば、ライトバック動作やキャッシュフィル動作)する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
同期プリミティブがDCACHE113Aに常駐することを保証するため、キャッシュコントローラ1132Aは、同期プリミティブ操作命令に応じて与えられる要求信号に対する不可分操作により、データと同期プリミティブ属性情報とをDCACHE113Aへ格納する。
つまり、キャッシュコントローラ1132Aは、データが同期プリミティブであることを示す指示信号が与えられた場合、要求信号に応じて、データと同期プリミティブ属性情報とをDCACHE113Aに格納し終えるまで、後続の要求信号に対する処理を開始しない。
なお、前述の同期プリミティブ操作命令の代わりに、同期プリミティブ属性情報を操作するだけの専用の命令を設けて、その専用の命令で同期プリミティブ属性情報を操作するとともに、一般的なデータのロードおよびストア命令で同期プリミティブデータを操作する構成も考えられる。
しかしながら、本発明の構成は、そのような構成と比べて、同じ結果を得るために必要な命令数を削減できる点、および同期プリミティブデータの格納と同期プリミティブ属性情報の格納とが不可分に実行されることで、同期プリミティブデータと同期プリミティブ属性情報との整合性を保証できる点で優れている。
(第2実施形態)
次に、第2実施形態に係るプロセッサシステムについて説明する。
図8は、第2実施形態に係るプロセッサシステムの機能的な構成の一例を示すブロック図である。このプロセッサシステムは、2つのプロセッサを含むプロセッサシステム(マルチコアプロセッサ)である。図8のプロセッサシステムは、半導体システムLSI(SoC)または情報機器セットとして実現される。
図8のプロセッサシステムは、図13の従来のマルチプロセッサシステムと比べて、制御信号線118Aおよび制御信号線128Aが追加される。また、CPU111、CPU121、DCACHE113、DCACHE123、SNPC102が、それぞれCPU111A、CPU121A、DCACHE113A、DCACHE123A、SNPC102Aで置き換えられる。
CPU111A、DCACHE113A、および制御信号線118Aの詳細は、第1実施形態で述べたとおりである(図3、図4を参照)。CPU121A、DCACHE123A、および制御信号線128Aは、CPU111A、DCACHE113A、および制御信号線118Aと同様に構成される。
SNPC102Aは、従来のSNPC102と比べて、制御信号線118Aおよび制御信号線128Aを監視して指示信号を検知することにより、DCACHE113AおよびDCACHE123Aのデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する機能が追加される。
図9は、命令ごとに、CPU111A、CPU121A、DCACHE113A、DCACHE123A、およびSNPC102Aが行う動作を示す図である。DCACHE113A、DCACHE123A、およびSNPC102Aは、CPU111Aが命令を実行するときに出力する要求信号および指示信号に従って動作する。
なお、図9で、CPU111A、CPU121A、DCACHE113A、DCACHE123Aのうち、命令を実行したプロセッサに関係する構成要素に「自」を付して示し、命令を実行していないプロセッサに関係する構成要素に「他」を付して示している。この表記は、図9および図11で共通に用いられる。
以下、それぞれの命令に対応する動作を詳しく説明する。なお、lwarx2命令およびstwcx2命令について、それぞれlwarx命令およびstwcx.命令と共通する動作についても、必要に応じて説明する。
以下の説明は、命令がCPU111Aによって実行される場合に適用される。命令がCPU121Aによって実行される場合は、以下の説明のCPU111AとCPU121Aとが入れ替わり、かつDCACHE113AとDCACHE123Aとが入れ替わる。
lwarx2 rD,rA命令が実行されるとき、まずS51からS56までに示されるキャッシュフィル動作が行われる。すなわち、DCACHE113AでアドレスrAがミスした場合(S51で真)、SNPC102Aは、DCACHE123Aをスヌープする(S52)。
DCACHE123AでアドレスrAがヒットした場合(S53で真)、SNPC102Aは、スヌープバス103を通して、DCACHE123AからアドレスrAを包含するラインのデータを読み出し、DCACHE113Aの1つのラインに書き込む(S54)。
他方、DCACHE123AでアドレスrAがヒットしない場合(S53で偽)、キャッシュコントローラ1132Aは、共有バス104を通して、MEM106からアドレスrAを包含するアラインメントされたライン長のデータを読み出し、1つのラインに書き込む(S56)。
CPU111Aは、DCACHE113AのアドレスrAの対応部分に格納されたデータをrDにロードする(S57)。キャッシュコントローラ1132Aは、対応する同期プリミティブビットSPをセットする(S58)。CPU111Aは、RESERVEビットをセットする(S59)。
stwcx2 rS,rA命令が実行されるとき、RESERVEビットがセットされていれば(S61で真)、CPU111Aは要求信号および指示信号を出力する。SNPC102Aおよびキャッシュコントローラ1132Aは、前述のS51からS56までと同一のキャッシュフィル動作を行う(S62)。
キャッシュコントローラ1132Aは、DCACHE113AのアドレスrAの対応部分に、CPU111Aから与えられるrSレジスタの値をストアし(S63)、対応する同期プリミティブビットSPをセットする(S64)。SNPC102Aは、DCACHE123AにアドレスrAに対応する同期プリミティブビットSPがあればクリアする(S65)。
CPU111Aは、RESERVEビットをクリアする(S66)。SNPC102Aは、CPU121AのRESERVEビットをクリアする(S67)。
allocsem rS,rA命令が実行されるとき、SNPC102Aおよびキャッシュコントローラ1132Aは、前述のS51からS56までと同一のキャッシュフィル動作を行う(S71)。キャッシュコントローラ1132Aは、DCACHE113AのアドレスrAの対応部分にCPU111AのrSレジスタの値をストアし(S72)、対応する同期プリミティブビットSPをセットする(S73)。SNPC102Aは、DCACHE123AにアドレスrAに対応する同期プリミティブビットSPがあればクリアする(S74)。
relsem rA命令が実行されるとき、キャッシュコントローラ1132Aは、アドレスrAの対応部分を含むラインをDCACHE113AからMEM106へライトバックし(S81)、対応する同期プリミティブビットSPをクリアする(S82)。SNPC102Aは、DCACHE123AにアドレスrAに対応する同期プリミティブビットSPがあればクリアする(S83)。
なお、アドレスrAの対応部分を含むラインに、セマフォ以外の有効なデータが載っていない場合、S81のライトバックを省略する実装も採用し得る。具体的に、有効ビットVがクリアされている場合、および有効ビットVはセットされていてもダーティビットDがクリアされている場合にライトバックを省略できる。
ここまでに、DCACHE113AおよびDCACHE123Aにおいて、データおよび属性情報をライン単位で管理するように説明したが、1つのTAGに対応して複数のサブラインを設け、サブラインごとにデータおよび属性情報を管理してもよい。
以上のように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。
図10は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。
(S201)CPU111Aはallocsem命令を実行し、MEM106からセマフォアドレスを包含するアラインメントされたライン長データをDCACHE113A中のラインにロードしておく。対応ラインの同期プリミティブビットSPはセットされる。CPU121Aは、CPU111Aにより、同期プリミティブがDCACHE113Aのライン中に確保されていることを前提として、allocsem命令を実行しない。
(S202)CPU121Aはlwarx2命令を実行し、同じセマフォアドレスで指定されるセマフォをロードしようとする。セマフォアドレスは、DCACHE123Aでミスする。
SNPC102は、セマフォがDCACHE113Aに含まれていることを検知し、DCACHE113中の対応ラインをDCACHE123Aの一つのラインへスヌープバス103を経由してコピーし、DCACHE123Aのセマフォを含むラインの同期プリミティブ属性情報をセットする。
CPU121Aは、DCACHE123Aの対応ラインからセマフォを読み出し、レジスタへロードする。CPU121AはRESERVEビットをセットする。
(S203)CPU111Aはlwarx2命令を実行し、同じセマフォアドレスで指定されるセマフォをロードしようとする。セマフォアドレスは、DCACHE113Aでヒットする。
CPU111Aは、DCACHE113Aの対応ラインからセマフォを読み出し、レジスタへロードする。CPU111AはRESERVEビットをセットする。
CPU111AおよびCPU121Aは、セマフォを更新するための第1の値および第2の値をそれぞれ計算する。
(S204)CPU111Aがstwcx2命令を実行すると、RESERVEビットがセットされているので、第1の値はDCACHE113Aの対応ラインへストアされる。CPU111Aは、RESERVEビットをクリアする。
SNPC102Aは、セマフォがDCACHE123Aに含まれていることを検知し、DCACHE123Aの対応ラインの同期プリミティブ属性情報をクリアする。SNPC102Aは、CPU121AのRESERVEビットをクリアする。
(S205)CPU121Aが、CPU111Aよりも遅れてstwcx2命令を実行すると既にRESERVEビットがクリアされているので、セマフォは更新されない。
(S206)CPU121Aは、改めてlwarx2命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。S204で、DCACHE123Aの対応ラインの同期プリミティブ属性情報がクリアされているため、セマフォアドレスは、DCACHE123Aでミスする。そして、S202と同様の処理が行われる。
(S207)CPU121Aがstwcx2命令を実行すると、RESERVEビットがセットされているので、第2の値はDCACHE113Aの対応ラインへストアされる。CPU121Aは、RESERVEビットをクリアする。
SNPC102Aは、セマフォがDCACHE113Aに含まれていることを検知し、DCACHE113Aの対応ラインの同期プリミティブ属性情報をクリアする。SNPC102Aは、CPU111AのRESERVEビットをクリアする。
(S208)CPU111Aはlwarx2命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。S207で、DCACHE123Aの対応ラインの同期プリミティブビットSPがクリアされているため、セマフォアドレスは、DCACHE113Aでミスする。
SNPC102は、セマフォがDCACHE123Aに含まれていることを検知し、DCACHE113中の対応ラインをDCACHE113Aの一つのラインへスヌープバス103を経由してコピーし、DCACHE113Aのセマフォを含むラインの同期プリミティブ属性情報をセットする。
CPU111Aは、DCACHE113Aの対応ラインからセマフォを読み出し、レジスタへロードする。CPU111AはRESERVEビットをセットする。
(S209)CPU111Aがstwcx2命令を実行すると、RESERVEビットがセットされているので、第1の値はDCACHE113Aの対応ラインへストアされる。CPU111Aは、RESERVEビットをクリアする。
SNPC102Aは、セマフォがDCACHE123Aに含まれていることを検知し、DCACHE123Aの対応ラインの同期プリミティブ属性情報をクリアする。SNPC102Aは、CPU121AのRESERVEビットをクリアする。
(S210)CPU111Aは、relsem命令を実行し、プロセス実行完了などにより不要となったセマフォを開放する。
以上説明したように、第2実施形態に係るプロセッサシステムによれば、DCACHE113AおよびDCACHE123Aは、CPU111AおよびCPU121Aが同期プリミティブ操作命令を実行するときに、CPU111AおよびCPU121Aから与えられる制御信号に応じて同期プリミティブ属性情報をセットする。また、SNPC102Aは、DCACHE113AおよびDCACHE123Aのうち一方の同期プリミティブが更新されるときに、他方の同期プリミティブ属性情報をクリアする。
これにより、同期プリミティブ属性情報がセットされた最新の値を持つ同期プリミティブはパージされず、DCACHE113AおよびDCACHE123Aのうち少なくとも一方に常駐する。同期プリミティブの最新の値は、必要に応じて、スヌープバス103を通して、他方の同期プリミティブ属性情報がクリアされた(値が古い)同期プリミティブのフィル動作に用いられる。
その結果、DCACHE113AとMEM106との間、およびDCACHE123AとMEM106との間で同期プリミティブを移動(例えば、ライトバックやフィル)する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
同期プリミティブがDCACHE113AおよびDCACHE123Aのうち少なくとも一方に常駐することを保証するため、SNPC102Aは、同期プリミティブ操作命令に応じて与えられる要求信号に対する不可分操作により、DCACHE113AおよびDCACHE123Aにおいてデータと同期プリミティブ属性情報とを調整する。
つまり、SNPC102Aは、データが同期プリミティブであることを示す指示信号が与えられた場合、要求信号に応じてDCACHE113AおよびDCACHE123Aのデータと同期プリミティブ属性情報とを調整し終えるまで、後続の要求信号に対する処理を開始しない。このような制御は、一般にSNPC102Aにバッファ(キュー)を設け、後続の要求信号をバッファにて待ち合わせることで実現される。
なお、前述の同期プリミティブ操作命令の代わりに、同期プリミティブ属性情報を操作するだけの専用の命令を設けて、その専用の命令で同期プリミティブ属性情報を操作するとともに、一般的なデータのロードおよびストア命令で同期プリミティブデータを操作する構成も考えられる。
しかしながら、本発明の構成は、そのような構成と比べて、同じ結果を得るために必要な命令数を削減できる点、および同期プリミティブデータの調整と同期プリミティブ属性情報の調整とが不可分に実行されることで、同期プリミティブデータと同期プリミティブ属性情報との整合性を保証できる点で優れている。
なお、ここまで、SNPC102Aは、DCACHE113AおよびDCACHE123Aのうち一方の同期プリミティブが更新されるときに、他方の同期プリミティブ属性情報をクリアするとして説明した(例えば、S204、S207、S209)。
しかしながら、SNPC102Aは、DCACHE113AおよびDCACHE123Aのうち一方にある同期プリミティブが更新されるときに、更新後の値で他方にある同期プリミティブを更新し、かつ他方の同期プリミティブ属性情報をセットしてもよい。
この構成によれば、最新の同期プリミティブがDCACHE113AおよびDCACHE123Aの両方に常駐するので、CPU111AおよびCPU121Aは、DCACHE113AおよびDCACHE123Aから、同期プリミティブ操作命令に対して早い応答を受け取ることができる。
(第3実施形態)
次に、第3実施形態に係るプロセッサシステムについて説明する。
第3実施形態に係るプロセッサシステムでは、第2実施形態で説明したプロセッサシステムと比べて、同期プリミティブをDCACHE113Aのみに常駐させる点が異なる。そのために、CPU121Aが同期プリミティブ操作命令を実行するときに行われる動作が変更される。
この構成では、DCACHE123Aは、同期プリミティブ以外のデータ専用のキャッシュメモリ装置として設けられ、データが同期プリミティブであることを示す指示信号が与えられた場合に要求信号を無視する。DCACHE123Aを省略することも可能である。
図11は、命令ごとに、CPU121A、DCACHE113A、およびSNPC102Aが行う動作を示す図である。DCACHE113AおよびSNPC102Aは、CPU121Aが命令を実行するときに出力する要求信号および指示信号に従って動作する。
以下、それぞれの命令に対応する動作を詳しく説明する。なお、lwarx2命令およびstwcx2命令について、それぞれlwarx命令およびstwcx.命令と共通する動作についても、必要に応じて説明する。
以下の説明は、命令がCPU121Aによって実行される場合に適用される。命令がCPU111Aによって実行される場合は、第2実施形態で説明した動作(図9を参照)から、他キャッシュ(つまり、DCACHE123A)に対する動作を除いた動作が行われる。
lwarx2 rD,rA命令が実行されるとき、SNPC102Aは、DCACHE113Aをスヌープすることにより、DCACHE113AのアドレスrAの対応部分に格納されたデータを取得し(S91)、CPU121Aは、SNPC102Aによって取得されたデータをrDにロードする(S92)。CPU121Aは、RESERVEビットをセットする(S93)。
stwcx2 rS,rA命令が実行されるとき、RESERVEビットがセットされていれば(S94で真)、CPU121Aは要求信号および指示信号を出力する。SNPC102Aは、DCACHE113Aをスヌープして(S95)、DCACHE113AのアドレスrAの対応部分に、CPU121Aから与えられるrSレジスタの値をストアする(S96)。
CPU121Aは、RESERVEビットをクリアする(S97)。SNPC102Aは、CPU111AのRESERVEビットをクリアする(S98)。
以上のように構成されるプロセッサシステムにおける、同期プリミティブ操作命令の一使用例を説明する。
図12は、同期プリミティブ操作命令の一使用例を説明するシーケンスチャートである。図10のシーケンスチャートの説明と重複する事項については適宜説明を省略し、主として異なる点を説明する。
(S301)S201と同様。
(S302)CPU121Aはlwarx2命令を実行し、セマフォアドレスで指定されるセマフォをロードしようとする。DCACHE123AはCPU121Aからの要求信号を無視する。SNPC102は、セマフォをDCACHE113Aからスヌープバス103を通して取得し、CPU121Aは、SNPC102からセマフォを読み出し、レジスタへロードする。CPU121AはRESERVEビットをセットする。
(S303〜S305)S203〜S205と同様。
(S306〜S307)CPU121Aは、改めてlwarx2命令およびstwcx2命令を実行する。DCACHE123AはCPU121Aからの要求信号を無視する。セマフォアドレスで指定されるセマフォは、SNPC102Aによって、スヌープバス103を通して、DCACHE113Aから取得され、DCACHE113Aへ書き込まれる。
(S308〜S310)S208〜S210と同様。
以上説明したように、第3実施形態に係るプロセッサシステムによれば、同期プリミティブはDCACHE113Aに常駐し、CPU121Aが同期プリミティブ操作命令を実行するときは、データおよび同期プリミティブ属性情報は、SNPC102Aによりスヌープバス103を通して、DCACHE113Aにある同期プリミティブが操作される。
その結果、DCACHE113AとMEM106との間、およびDCACHE123AとMEM106との間で同期プリミティブを移動(例えば、ライトバック動作やフィル動作)する必要がなくなるので、汎用的なプロセッサアーキテクチャにおいてプロセス間の同期処理の性能を向上することが可能になる。
なお、頻繁にプロセス間の同期処理が発生しない場合など、同期プリミティブをキャッシュメモリ装置に常駐させることが性能上不利と判断される場合があり得る。その場合、前述したlwarx2命令とstwcx2命令の代わりに、従来のlwarx命令とstwcx.命令を用いてもよい。
そうすれば、同期プリミティブはキャッシュメモリ装置に常駐せず、キャッシュメモリ装置を、同期プリミティブ以外のデータのアクセス性能を向上するためにも利用することができる。
本発明に係るキャッシュメモリ装置、およびキャッシュメモリ装置を含むプロセッサシステムは、例えば、デジタル情報機器や携帯通信装置などに組み込まれ、電池で駆動される制御用マイクロプロセッサやマイクロコントローラとして有用である。また組み込み向けDMA制御用LSIやDSPなどの用途にも応用できる。
101 BCU(バス制御装置)
102、102A SNPC(スヌープ制御装置)
103 スヌープバス
104 共有バス
105 MCU(メモリ制御装置)
106 MEM(主記憶装置)
107、108 PERIPHERAL(周辺回路)
111、121、111A、121A CPU(中央処理装置)
112、122 ICACHE(命令キャッシュメモリ装置)
113、123、113A、113B、123A DCACHE(データキャッシュメモリ装置)
114、124 FETCH/DEC(フェッチおよびデコード部)
115、125 EXEC(実行部)
116、126 REG(レジスタ部)
117、127 命令信号線
118、128 要求信号線
119、129 信号線
118A、128A 制御信号線
1131A、1131B 記憶部
1132A、1132B キャッシュコントローラ

Claims (11)

  1. 主記憶装置に格納されるべきデータの複製を格納して中央処理装置からのアクセスに供するキャッシュメモリ装置であって、
    データと属性情報とを対応付けて格納することができる記憶手段と、
    データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、前記中央処理装置から取得する取得手段と、
    前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであることを示す同期プリミティブ属性情報を、対応付けて前記記憶手段に格納する制御手段と
    を備え
    前記制御手段は、前記同期プリミティブ属性情報に対応して前記記憶手段に格納された前記データのパージを禁止する
    ことを特徴とするキャッシュメモリ装置。
  2. 前記制御手段は、前記要求信号に対する不可分操作により、前記要求されるデータ、および前記同期プリミティブ属性情報を対応付けて前記記憶手段に格納する
    ことを特徴とする請求項1に記載のキャッシュメモリ装置。
  3. 請求項1または請求項2に記載のキャッシュメモリ装置と、
    特定の命令を実行するときに、前記特定の命令によって示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを前記キャッシュメモリ装置へ出力する中央処理装置と
    を備えることを特徴とするプロセッサシステム。
  4. 請求項1に記載の第1のキャッシュメモリ装置と、
    請求項1に記載の第2のキャッシュメモリ装置と、
    前記第1のキャッシュメモリ装置および前記第2のキャッシュメモリ装置に接続され、それぞれのキャッシュメモリ装置に与えられる要求信号および指示信号を監視し、要求信号および指示信号が検知されると、前記検知された要求信号および指示信号に従って、それぞれのキャッシュメモリ装置のデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整するスヌープ装置と
    を備えることを特徴とするキャッシュメモリシステム。
  5. 前記スヌープ装置は、前記検知された要求信号に対する不可分操作により、それぞれのキャッシュメモリ装置に格納されているデータおよび同期プリミティブ属性情報を、一貫性が維持されるように調整する
    ことを特徴とする請求項に記載のキャッシュメモリシステム。
  6. 前記第1のキャッシュメモリ装置に、第1のアドレスに配置される第1のデータと、前記第1のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第2のキャッシュメモリ装置に、前記第1のアドレスに配置されるデータを第2のデータに更新することを要求する要求信号と、前記第2のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
    前記スヌープ装置は、前記第1のキャッシュメモリ装置に格納されている前記同期プリミティブ属性情報を削除する
    ことを特徴とする請求項または請求項に記載のキャッシュメモリシステム。
  7. 前記第1のキャッシュメモリ装置に、第1のアドレスに配置される第1のデータと、前記第1のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第2のキャッシュメモリ装置に、前記第1のアドレスに配置されるデータを第2のデータに更新することを要求する要求信号と、前記第2のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
    前記スヌープ装置は、前記第1のキャッシュメモリ装置に格納されている前記第1のデータを、前記第2のデータに更新する
    ことを特徴とする請求項または請求項に記載のキャッシュメモリシステム。
  8. 前記第2のキャッシュメモリ装置に、第1のアドレスに配置されるデータを第2のデータに更新することを要求する要求信号と、前記第2のデータが同期プリミティブであることを示す指示信号とが与えられた場合、
    前記第2のキャッシュメモリ装置は、前記第2のデータおよび前記第2のデータに対応する同期プリミティブ属性情報を格納することをやめて、
    前記スヌープ装置は、前記第2のデータと前記第2のデータに対応する同期プリミティブ属性情報とを、前記第1のキャッシュメモリ装置に格納する
    ことを特徴とする請求項または請求項に記載のキャッシュメモリシステム。
  9. 前記第1のキャッシュメモリ装置に、第1のアドレスに配置される第1のデータと、前記第1のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第2のキャッシュメモリ装置に、前記第1のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
    前記スヌープ装置は、前記第1のキャッシュメモリ装置から前記第1のデータを取得し、前記取得された第1のデータと前記第1のデータに対応する同期プリミティブ属性情報とを、前記第2のキャッシュメモリ装置に格納し、
    前記第2のキャッシュメモリ装置は、前記格納された第1のデータを前記要求信号に対して応答する
    ことを特徴とする請求項または請求項に記載のキャッシュメモリシステム。
  10. 前記第1のキャッシュメモリ装置に、第1のアドレスに配置される第1のデータと、前記第1のデータに対応する同期プリミティブ属性情報とが格納されているときに、前記第2のキャッシュメモリ装置に、前記第1のアドレスに配置されるデータの参照を要求する要求信号と、前記データが同期プリミティブであることを示す指示信号とが与えられた場合、
    前記スヌープ装置は、前記第1のキャッシュメモリ装置から前記第1のデータを取得し、前記取得された第1のデータを前記要求信号に対して応答する
    ことを特徴とする請求項または請求項に記載のキャッシュメモリシステム。
  11. 請求項から請求項10のいずれか1項に記載のキャッシュメモリシステムと、
    前記キャッシュメモリシステムに含まれるそれぞれのキャッシュメモリ装置に対応して設けられ、データのアクセスを要求する特定の命令を実行するときに、前記特定の命令で示されるデータのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであることを示す指示信号とを対応するキャッシュメモリ装置へ出力する複数の中央処理装置と
    を備えることを特徴とするプロセッサシステム。
JP2010505371A 2008-03-31 2009-03-27 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム Expired - Fee Related JP4767361B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010505371A JP4767361B2 (ja) 2008-03-31 2009-03-27 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008092472 2008-03-31
JP2008092472 2008-03-31
JP2010505371A JP4767361B2 (ja) 2008-03-31 2009-03-27 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
PCT/JP2009/001406 WO2009122694A1 (ja) 2008-03-31 2009-03-27 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム

Publications (2)

Publication Number Publication Date
JPWO2009122694A1 JPWO2009122694A1 (ja) 2011-07-28
JP4767361B2 true JP4767361B2 (ja) 2011-09-07

Family

ID=41135102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010505371A Expired - Fee Related JP4767361B2 (ja) 2008-03-31 2009-03-27 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム

Country Status (3)

Country Link
US (1) US20110004731A1 (ja)
JP (1) JP4767361B2 (ja)
WO (1) WO2009122694A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158542B2 (en) 2010-06-17 2015-10-13 Nec Corporation Data processing device and method, and processor unit of same
GB2484088B (en) * 2010-09-28 2019-08-07 Advanced Risc Mach Ltd Coherency control with writeback ordering
JP5828324B2 (ja) * 2011-01-18 2015-12-02 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
US20120297147A1 (en) * 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
US20130326155A1 (en) * 2012-05-30 2013-12-05 Texas Instruments Incorporated System and method of optimized user coherence for a cache block with sparse dirty lines
US9268722B1 (en) * 2012-05-31 2016-02-23 Marvell International Ltd. Sharing memory using processor wait states
US9547594B2 (en) 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US10331614B2 (en) * 2013-11-27 2019-06-25 Intel Corporation Method and apparatus for server platform architectures that enable serviceable nonvolatile memory modules
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03164963A (ja) * 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御方式
JPH03232051A (ja) * 1990-02-08 1991-10-16 Fujitsu Ltd セマフォアクセス制御方法
JPH03271859A (ja) * 1990-03-20 1991-12-03 Fujitsu Ltd 情報処理装置
JPH05143454A (ja) * 1991-11-07 1993-06-11 Fujitsu Ltd キヤツシユ制御方式
JPH06208547A (ja) * 1993-01-08 1994-07-26 Sony Corp 通信制御装置
JPH06222936A (ja) * 1992-12-18 1994-08-12 Internatl Business Mach Corp <Ibm> 共用変数の値を更新する方法
JPH06243107A (ja) * 1993-01-29 1994-09-02 Internatl Business Mach Corp <Ibm> 原子的メモリ参照方法及びシステム
JPH09138778A (ja) * 1995-09-29 1997-05-27 Hewlett Packard Co <Hp> セマフォ命令用のセマフォ・バッファを用いた装置と方法
JPH10254773A (ja) * 1997-03-13 1998-09-25 Internatl Business Mach Corp <Ibm> アクセス方法、処理装置およびコンピュータ・システム
JPH10283261A (ja) * 1997-03-31 1998-10-23 Internatl Business Mach Corp <Ibm> キャッシュ・エントリの予約処理方法及び装置
JP2004178374A (ja) * 2002-11-28 2004-06-24 Fujitsu Ltd マルチプロセッサシステム
JP2006268781A (ja) * 2005-03-25 2006-10-05 Nec Computertechno Ltd 計算機システム、排他制御方法、およびプログラム
JP2008503821A (ja) * 2004-06-24 2008-02-07 株式会社ソニー・コンピュータエンタテインメント 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261067A (en) * 1990-04-17 1993-11-09 North American Philips Corp. Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
JP3628265B2 (ja) * 2001-02-21 2005-03-09 株式会社半導体理工学研究センター マルチプロセッサシステム装置
US6745294B1 (en) * 2001-06-08 2004-06-01 Hewlett-Packard Development Company, L.P. Multi-processor computer system with lock driven cache-flushing system
JP4044585B2 (ja) * 2003-11-12 2008-02-06 松下電器産業株式会社 キャッシュメモリおよびその制御方法
US7970998B2 (en) * 2005-04-08 2011-06-28 Panasonic Corporation Parallel caches operating in exclusive address ranges

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03164963A (ja) * 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御方式
JPH03232051A (ja) * 1990-02-08 1991-10-16 Fujitsu Ltd セマフォアクセス制御方法
JPH03271859A (ja) * 1990-03-20 1991-12-03 Fujitsu Ltd 情報処理装置
JPH05143454A (ja) * 1991-11-07 1993-06-11 Fujitsu Ltd キヤツシユ制御方式
JPH06222936A (ja) * 1992-12-18 1994-08-12 Internatl Business Mach Corp <Ibm> 共用変数の値を更新する方法
JPH06208547A (ja) * 1993-01-08 1994-07-26 Sony Corp 通信制御装置
JPH06243107A (ja) * 1993-01-29 1994-09-02 Internatl Business Mach Corp <Ibm> 原子的メモリ参照方法及びシステム
JPH09138778A (ja) * 1995-09-29 1997-05-27 Hewlett Packard Co <Hp> セマフォ命令用のセマフォ・バッファを用いた装置と方法
JPH10254773A (ja) * 1997-03-13 1998-09-25 Internatl Business Mach Corp <Ibm> アクセス方法、処理装置およびコンピュータ・システム
JPH10283261A (ja) * 1997-03-31 1998-10-23 Internatl Business Mach Corp <Ibm> キャッシュ・エントリの予約処理方法及び装置
JP2004178374A (ja) * 2002-11-28 2004-06-24 Fujitsu Ltd マルチプロセッサシステム
JP2008503821A (ja) * 2004-06-24 2008-02-07 株式会社ソニー・コンピュータエンタテインメント 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム
JP2006268781A (ja) * 2005-03-25 2006-10-05 Nec Computertechno Ltd 計算機システム、排他制御方法、およびプログラム

Also Published As

Publication number Publication date
WO2009122694A1 (ja) 2009-10-08
US20110004731A1 (en) 2011-01-06
JPWO2009122694A1 (ja) 2011-07-28

Similar Documents

Publication Publication Date Title
JP4767361B2 (ja) キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
US8732711B2 (en) Two-level scheduler for multi-threaded processing
TWI529620B (zh) 推理執行和回復
US7350034B2 (en) Architecture support of best-effort atomic transactions for multiprocessor systems
JP3974597B2 (ja) 非対称型異種マルチプロセッサ環境でアトミック更新プリミティブを提供するための方法
US7657710B2 (en) Cache coherence protocol with write-only permission
US20080005504A1 (en) Global overflow method for virtualized transactional memory
US20060059317A1 (en) Multiprocessing apparatus
US20070143550A1 (en) Per-set relaxation of cache inclusion
JP4376692B2 (ja) 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
US20120110303A1 (en) Method for Process Synchronization of Embedded Applications in Multi-Core Systems
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
JP6451538B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP4566264B2 (ja) 格納および予約命令を利用して関連アプリケーションと相互参照してキャッシュライン・ポーリングを行う方法、システム、装置、およびプログラム
GB2532545A (en) Processors and methods for cache sparing stores
US8788761B2 (en) System and method for explicitly managing cache coherence
WO2001084304A2 (en) Active address content addressable memory
JP2009223759A (ja) 情報処理装置,メモリ制御方法およびメモリ制御装置
JP5828324B2 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
JP4388557B2 (ja) 画像処理システム
Ophelders et al. A tuneable software cache coherence protocol for heterogeneous MPSoCs
JP2005293609A (ja) 初期化方法
Shankar Lock Prediction to Reduce the Overhead of Synchronization Primitives

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110510

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110531

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

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees