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

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

Info

Publication number
WO2009122694A1
WO2009122694A1 PCT/JP2009/001406 JP2009001406W WO2009122694A1 WO 2009122694 A1 WO2009122694 A1 WO 2009122694A1 JP 2009001406 W JP2009001406 W JP 2009001406W WO 2009122694 A1 WO2009122694 A1 WO 2009122694A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
cache memory
synchronization primitive
instruction
memory device
Prior art date
Application number
PCT/JP2009/001406
Other languages
English (en)
French (fr)
Inventor
鶴田英世
Original Assignee
パナソニック株式会社
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 パナソニック株式会社 filed Critical パナソニック株式会社
Priority to JP2010505371A priority Critical patent/JP4767361B2/ja
Publication of WO2009122694A1 publication Critical patent/WO2009122694A1/ja
Priority to US12/883,320 priority patent/US20110004731A1/en

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

Definitions

  • barrier instructions are used to synchronize between processes.
  • the barrier instruction guarantees the access order by stopping the execution of the processor as necessary.
  • Non-Patent Document 1 includes a memory reference instruction lwarx with acquisition of reservation as a semaphore update right, and a conditional memory update instruction stwcx.1 that updates a semaphore only when the reservation has been acquired.
  • a computer architecture is disclosed.
  • the ICACHE 112 is a buffer that pre-reads and temporarily stores a program stored in the MEM (main storage device) 106 and supplies a command stream to the CPU 111 at high speed through the command signal line 117.
  • the ICACHE 122 is a buffer that pre-reads and temporarily holds a program stored in the MEM 106 and supplies a command stream to the CPU 121 through the command signal line 127 at high speed.
  • the MEM 106 is a semiconductor memory such as a DRAM (Dynamic Random Access Memory), FeRAM (Ferroelectric RAM), ReRAM (Resistive RAM), and flash memory, and stores data and programs processed by the CPU 111 and the CPU 121.
  • DRAM Dynamic Random Access Memory
  • FeRAM Feroelectric RAM
  • ReRAM Resistive RAM
  • flash memory stores data and programs processed by the CPU 111 and the CPU 121.
  • PERIPHERAL (peripheral circuit) 107 and PERIPHERAL 108 are blocks connected to the shared bus 104 and responsible for some of the auxiliary functions of the CPU 111. Interrupt control, DMAC (Direct Memory Access Controller), external interface, timer, counter, reset control, Various functions such as an A / D converter, a D / A converter, and a serial IO can be implemented.
  • DMAC Direct Memory Access Controller
  • Various functions such as an A / D converter, a D / A converter, and a serial IO can be implemented.
  • the CPU 111 executes an lwarx instruction for loading data (semaphore) arranged at a predetermined address (referred to as a semaphore address).
  • a semaphore address A copy of the semaphore of the MEM 106 is stored in the DCACHE 113 through the shared bus 104, and the semaphore stored in the DCACHE 113 is supplied to the CPU 111.
  • a RESERVE bit provided in the REG 116 is set.
  • the RESERVE bit provided in the REG 126 is set.
  • SNPC 102 continues to monitor the update operation performed by CPU 111 and CPU 121 on the semaphore address.
  • the CPU 111 and the CPU 121 calculate a first value and a second value for updating the semaphore, respectively.
  • CPU 111 stores stwcx. For storing the first value in the semaphore address. Execute the instruction. Since the RESERVE bit of REG 116 is set, the semaphore of DCACHE 113 is rewritten to the first value.
  • the semaphore of the MEM 106 is stored in the DCACHE 113 through the shared bus 104, or the semaphore of the DCACHE 123 is stored in the DCACHE 113 through the snoop bus 103 by the SNPC 102, and then the first value. To be rewritten. As a result, the CPU 111 acquires the access right of the shared resource.
  • the present invention when the cache memory device and a specific instruction requesting data access are executed, a request signal for requesting access to data indicated by the specific instruction and the requested data are synchronized.
  • the present invention can also be realized as a processor system including a central processing unit that outputs an instruction signal indicating a primitive to the cache memory device.
  • the present invention is provided corresponding to the cache memory system and each cache memory device included in the cache memory system, and is indicated by the specific instruction when executing a specific instruction that requests data access. It can also be realized as a processor system comprising a plurality of central processing units for outputting a request signal for requesting access to data to be received and an instruction signal indicating that the requested data is a synchronization primitive to a corresponding cache memory device. .
  • FIG. 1 is a block diagram illustrating an example of a functional configuration of a single processor system according to the first embodiment.
  • FIG. 2 is a diagram illustrating an example of a synchronization primitive operation instruction.
  • FIG. 3 is a block diagram illustrating an example of a detailed configuration of the CPU and the cache memory.
  • FIG. 4 is a diagram illustrating an example of the cache control signal.
  • FIG. 5 is a diagram illustrating an example of operations of the CPU and the cache memory.
  • FIG. 6 is a block diagram illustrating another example of the functional configuration of the cache memory.
  • FIG. 7 is a sequence chart for explaining an example of use of the synchronization primitive operation instruction.
  • FIG. 8 is a block diagram illustrating an example of a functional configuration of the multiprocessor system according to the second embodiment.
  • FIG. 8 is a block diagram illustrating an example of a functional configuration of the multiprocessor system according to the second embodiment.
  • multi-thread processing is used as instruction stream level parallel processing in a single processor configuration, and multi-processor processing or multi-processor processing and multi-thread processing in a multi-processor (multi-core) configuration.
  • FIG. 1 is a block diagram showing an example of a functional configuration of the processor system according to the first embodiment.
  • This processor system is configured to include one parallel processing processor.
  • the processor system of FIG. 1 is realized as a semiconductor system LSI (SoC) or an information device set.
  • the processor system of FIG. 1 includes a CPU 121 related to the second processor, ICACHE 122, DCACHE 123, and SNPC 102 related to the snoop function, snoop bus 103, signal line 119, and The signal line 129 is omitted, and a control signal line 118A is added.
  • CPU 111 and DCACHE 113 are replaced with CPU 111A and DCACHE 113A.
  • FIG. 2 is a diagram for explaining an example of a synchronous primitive operation instruction.
  • an lwarx2 instruction, a stwcx2 instruction, an allocsem instruction, and a relsem instruction are provided as synchronization primitive operation instructions.
  • Lwarx2 instruction and stwcx2 instruction are respectively the lwarx instruction and stwcx.
  • This is an instruction in which a synchronization primitive (semaphore) on a cache and a function to explicitly operate synchronization primitive attribute information described later are added to the instruction.
  • the allocsem instruction and the relsem instruction are instructions newly proposed by the present invention.
  • the DCACHE 113A holds synchronization primitive attribute information indicating that the data is a valid synchronization primitive on a known configuration such as a 4-way set associative, and is synchronized according to a control signal acquired from the control signal line 118A.
  • This is a cache memory device to which a function for manipulating primitive attribute information is added.
  • FIG. 3 is a block diagram illustrating an example of a functional configuration of the DCACHE 113A.
  • the DCACHE 113A includes a storage unit 1131A and a cache controller 1132A.
  • the storage unit 1131A has a synchronization primitive bit SP for storing synchronization primitive attribute information in each line.
  • the synchronization primitive bit SP when set, indicates that a valid synchronization primitive is held in a part or all of the data of the line. Since the valid bit V, the tag TAG, the dirty bit D, and the data are well-known information held in the cache memory device, description thereof is omitted.
  • the cache controller 1132A prohibits purging from the DCACHE 113A by, for example, excluding a line in which the synchronization primitive bit SP is set from a replacement candidate.
  • the cache controller 1132A acquires the request signal through the request signal line 118.
  • the request signal includes, for example, an Address signal, a Data signal, and an R / W signal indicating either data reference or update.
  • the cache controller 1132A acquires an instruction signal indicating that the data requested by the request signal is a synchronization primitive through the control signal line 118A.
  • the instruction signal includes, for example, an SPREQ signal and an SPCTL signal.
  • the SPREQ signal indicates that the request signal is requesting load and store operations for synchronization primitives.
  • the SPCTL signal indicates that the request signal is requesting an allocation and release operation of the synchronization primitive.
  • FIG. 4 is a diagram illustrating request signals and control signals corresponding to commands.
  • the stwcx2 rS, rA instruction means that the data in the rS register is stored in the address rA and the reservation is discarded.
  • This instruction is a conditional instruction that is executed only when the reservation is acquired.
  • the cache controller 1132A When the allocsem rS, rA instruction is executed, the cache controller 1132A performs the same cache fill operation as S11 and S12 described above (S31). The cache controller 1132A stores the value of the rS register given from the CPU 111A in the corresponding part of the address rA of the DCACHE 113A (S32), and sets the corresponding synchronization primitive bit SP (S33).
  • FIG. 7 is a sequence chart for explaining an example of use of a synchronous primitive operation instruction.
  • Thread 2 does not execute the allocsem instruction on the assumption that the semaphore is secured in the line of DCACHE 113A by thread 1.
  • FIG. 9 is a diagram illustrating operations performed by the CPU 111A, the CPU 121A, the DCACHE 113A, the DCACHE 123A, and the SNPC 102A for each instruction.
  • DCACHE 113A, DCACHE 123A, and SNPC 102A operate according to a request signal and an instruction signal output when CPU 111A executes an instruction.
  • SNPC 102A performs data and synchronization primitive attribute information in DCACHE 113A and DCACHE 123A by an inseparable operation on a request signal given in response to the synchronization primitive operation instruction. adjust.
  • a dedicated instruction for only operating the synchronization primitive attribute information is provided, the synchronization primitive attribute information is operated with the dedicated instruction, and general data loading and storing are performed.
  • a configuration in which synchronous primitive data is manipulated by an instruction is also conceivable.
  • the SNPC 102A has been described as clearing the other synchronization primitive attribute information when one of the synchronization primitives of the DCACHE 113A and the DCACHE 123A is updated (for example, S204, S207, and S209).
  • SNPC 102A may update the synchronization primitive in the other with the updated value and set the other synchronization primitive attribute information.
  • the processor system according to the third embodiment is different from the processor system described in the second embodiment in that the synchronization primitive is resident only in the DCACHE 113A. Therefore, the operation performed when the CPU 121A executes the synchronous primitive operation instruction is changed.
  • the DCACHE 123A is provided as a cache memory device dedicated to data other than the synchronization primitive, and ignores the request signal when an instruction signal indicating that the data is a synchronization primitive is given.
  • the DCACHE 123A can be omitted.
  • FIG. 11 is a diagram illustrating operations performed by the CPU 121A, the DCACHE 113A, and the SNPC 102A for each instruction.
  • DCACHE 113A and SNPC 102A operate according to a request signal and an instruction signal output when CPU 121A executes an instruction.
  • the SNPC 102A When the lwarx2 rD, rA instruction is executed, the SNPC 102A snoops the DCACHE 113A to obtain data stored in the corresponding part of the address rA of the DCACHE 113A (S91), and the CPU 121A obtains the data obtained by the SNPC 102A. Load to rD (S92). The CPU 121A sets the RESERVE bit (S93).
  • the CPU 121A executes the lwarx2 instruction and tries to load the semaphore specified by the semaphore address.
  • the DCACHE 123A ignores the request signal from the CPU 121A.
  • the SNPC 102 acquires the semaphore from the DCACHE 113A through the snoop bus 103, and the CPU 121A reads the semaphore from the SNPC 102 and loads it into the register.
  • the CPU 121A sets the RESERVE bit.
  • the synchronization primitive resides in the DCACHE 113A, and when the CPU 121A executes the synchronization primitive operation instruction, the data and the synchronization primitive attribute information are transmitted by the SNPC 102A to the snoop bus. Through 103, the synchronization primitives in DCACHE 113A are manipulated.
  • the cache memory device and the processor system including the cache memory device according to the present invention are incorporated as, for example, a digital information device or a portable communication device, and are useful as a control microprocessor or a microcontroller driven by a battery. It can also be applied to uses such as an embedded DMA control LSI and DSP.

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)

Abstract

 同期プリミティブを格納しかつ同期プリミティブの操作に係るオーバーヘッドの軽減を図るキャッシュメモリ装置を提供する。  データと属性情報とを対応付けて格納することができる記憶部(1131A)と、データのアクセスを要求する要求信号と、前記要求されるデータが同期プリミティブであるか否かを示す指示信号とを、CPU(111A)から取得し、前記要求信号にて要求されるデータが、前記指示信号にて同期プリミティブであると示されるとき、前記要求されるデータ、および前記要求されるデータが有効な同期プリミティブであることを示す同期プリミティブ属性情報を、対応付けて記憶部(1131A)に格納するキャッシュコントローラ(1132A)とを備える。キャッシュコントローラ(1132A)は、同期プリミティブ属性情報に対応して記憶部(1131A)に格納されたデータのパージを禁止する。

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は、従来のマルチプロセッサシステムの機能的な構成の一例を示すブロック図である。
符号の説明
 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 キャッシュコントローラ
 以下の説明において、本発明のプロセッサシステムは、広く普及する汎用的な情報処理システムとして例示される。以下の実施形態において、シングルプロセッサ構成では、マルチスレッド処理が、マルチプロセッサ(マルチコア)構成ではマルチプロセッサ処理またはマルチプロセッサ処理およびマルチスレッド処理が、命令流レベルの並列処理として利用される。
 (第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などの用途にも応用できる。

Claims (12)

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

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010505371A JP4767361B2 (ja) 2008-03-31 2009-03-27 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
US12/883,320 US20110004731A1 (en) 2008-03-31 2010-09-16 Cache memory device, cache memory system and processor system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008092472 2008-03-31
JP2008-092472 2008-03-31

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/883,320 Continuation US20110004731A1 (en) 2008-03-31 2010-09-16 Cache memory device, cache memory system and processor system

Publications (1)

Publication Number Publication Date
WO2009122694A1 true WO2009122694A1 (ja) 2009-10-08

Family

ID=41135102

Family Applications (1)

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

Country Status (3)

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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012074036A (ja) * 2010-09-28 2012-04-12 Arm Ltd ライトバック順序付けによるコヒーレンス制御
WO2012098812A1 (ja) * 2011-01-18 2012-07-26 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
KR20140113605A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
JP5737290B2 (ja) * 2010-06-17 2015-06-17 日本電気株式会社 データ処理装置および方法、そのプロセッサユニット

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2015080717A1 (en) * 2013-11-27 2015-06-04 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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143454A (ja) * 1991-11-07 1993-06-11 Fujitsu Ltd キヤツシユ制御方式
JPH10283261A (ja) * 1997-03-31 1998-10-23 Internatl Business Mach Corp <Ibm> キャッシュ・エントリの予約処理方法及び装置
JP2008503821A (ja) * 2004-06-24 2008-02-07 株式会社ソニー・コンピュータエンタテインメント 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム

Family Cites Families (16)

* 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> 情報処理装置における排他制御方式
JPH0810448B2 (ja) * 1990-02-08 1996-01-31 富士通株式会社 セマフォアクセス制御方法
JPH03271859A (ja) * 1990-03-20 1991-12-03 Fujitsu Ltd 情報処理装置
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
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
JPH06208547A (ja) * 1993-01-08 1994-07-26 Sony Corp 通信制御装置
JP2541771B2 (ja) * 1993-01-29 1996-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 原子的メモリ参照方法及びシステム
US5696939A (en) * 1995-09-29 1997-12-09 Hewlett-Packard Co. Apparatus and method using a semaphore buffer for semaphore instructions
US5895495A (en) * 1997-03-13 1999-04-20 International Business Machines Corporation Demand-based larx-reserve protocol for SMP system buses
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
JP4170080B2 (ja) * 2002-11-28 2008-10-22 富士通株式会社 マルチプロセッサシステム
WO2005048112A1 (ja) * 2003-11-12 2005-05-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP4199746B2 (ja) * 2005-03-25 2008-12-17 エヌイーシーコンピュータテクノ株式会社 計算機システム、排他制御方法、およびプログラム
JPWO2006109421A1 (ja) * 2005-04-08 2008-10-16 松下電器産業株式会社 キャッシュメモリ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143454A (ja) * 1991-11-07 1993-06-11 Fujitsu Ltd キヤツシユ制御方式
JPH10283261A (ja) * 1997-03-31 1998-10-23 Internatl Business Mach Corp <Ibm> キャッシュ・エントリの予約処理方法及び装置
JP2008503821A (ja) * 2004-06-24 2008-02-07 株式会社ソニー・コンピュータエンタテインメント 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5737290B2 (ja) * 2010-06-17 2015-06-17 日本電気株式会社 データ処理装置および方法、そのプロセッサユニット
JP2015158936A (ja) * 2010-06-17 2015-09-03 日本電気株式会社 データ処理装置
US9389864B2 (en) 2010-06-17 2016-07-12 Nec Corporation Data processing device and method, and processor unit of same
JP2012074036A (ja) * 2010-09-28 2012-04-12 Arm Ltd ライトバック順序付けによるコヒーレンス制御
WO2012098812A1 (ja) * 2011-01-18 2012-07-26 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
KR20140113605A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
JP2014182836A (ja) * 2013-03-15 2014-09-29 Intel Corp 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
JP2016129041A (ja) * 2013-03-15 2016-07-14 インテル・コーポレーション 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
KR101673280B1 (ko) 2013-03-15 2016-11-07 인텔 코포레이션 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
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
JP2017130229A (ja) * 2013-03-15 2017-07-27 インテル・コーポレーション 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
US9817758B2 (en) 2013-03-15 2017-11-14 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage

Also Published As

Publication number Publication date
US20110004731A1 (en) 2011-01-06
JPWO2009122694A1 (ja) 2011-07-28
JP4767361B2 (ja) 2011-09-07

Similar Documents

Publication Publication Date Title
JP4767361B2 (ja) キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
JP3974597B2 (ja) 非対称型異種マルチプロセッサ環境でアトミック更新プリミティブを提供するための方法
TWI529620B (zh) 推理執行和回復
US8732711B2 (en) Two-level scheduler for multi-threaded processing
US7350034B2 (en) Architecture support of best-effort atomic transactions for multiprocessor systems
US8539485B2 (en) Polling using reservation mechanism
US6370625B1 (en) Method and apparatus for lock synchronization in a microprocessor system
JP3139392B2 (ja) 並列処理システム
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
US20070143550A1 (en) Per-set relaxation of cache inclusion
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
JP4376692B2 (ja) 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US20130198760A1 (en) Automatic dependent task launch
US20120110303A1 (en) Method for Process Synchronization of Embedded Applications in Multi-Core Systems
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
JP4803983B2 (ja) 演算処理装置
JP4566264B2 (ja) 格納および予約命令を利用して関連アプリケーションと相互参照してキャッシュライン・ポーリングを行う方法、システム、装置、およびプログラム
JP2012104140A (ja) 待機状態にあるプロセッサ実行リソースの共有
US6915395B1 (en) Active address content addressable memory
GB2532545A (en) Processors and methods for cache sparing stores
JP2001195242A (ja) データ処理システム
JP4388557B2 (ja) 画像処理システム
JP5828324B2 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
Ophelders et al. A tuneable software cache coherence protocol for heterogeneous MPSoCs
CN116680229A (zh) 一种分布式共享内存协议的操作方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09727431

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010505371

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09727431

Country of ref document: EP

Kind code of ref document: A1