JP3139392B2 - 並列処理システム - Google Patents

並列処理システム

Info

Publication number
JP3139392B2
JP3139392B2 JP08289179A JP28917996A JP3139392B2 JP 3139392 B2 JP3139392 B2 JP 3139392B2 JP 08289179 A JP08289179 A JP 08289179A JP 28917996 A JP28917996 A JP 28917996A JP 3139392 B2 JP3139392 B2 JP 3139392B2
Authority
JP
Japan
Prior art keywords
thread
data
execution unit
cache
thread execution
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
JP08289179A
Other languages
English (en)
Other versions
JPH10116192A (ja
Inventor
淳 鳥居
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP08289179A priority Critical patent/JP3139392B2/ja
Priority to US08/946,061 priority patent/US6122712A/en
Publication of JPH10116192A publication Critical patent/JPH10116192A/ja
Application granted granted Critical
Publication of JP3139392B2 publication Critical patent/JP3139392B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報処理装置に関
し、特に複数のスレッドを同時に実行する高性能マイク
ロプロセッサのキャッシュメモリの制御装置に関する。
より詳細には、本発明は、逐次実行の際の実行順序が定
まっているような複数スレッドを並列実行するようなシ
ステムのキャッシュメモリの制御装置に関する。
【0002】
【従来の技術】問題が有する並列性を活用し、単一のプ
ログラムを複数の命令流(「スレッド」という)群に分
割して、これらを並列に実行することによって、性能を
向上させるプログラム実行方法として、マルチスレッド
実行方法が数多く提案されている。
【0003】このマルチスレッド実行方法によれば、ス
レッドはスレッド生成を意味するフォーク動作によって
生成される。ここでは、フォーク動作を行なったスレッ
ドを「親スレッド」、生成された新しいスレッドを「子
スレッド」と呼ぶ。
【0004】スレッドは、マルチスレッド化されたプロ
グラムにおいて、ある規定された動作を行なった後に消
滅する。すなわち、プログラム実行過程において、数々
のスレッドの生成と終了が繰り返されることになる。
【0005】このスレッドは、プロセッシングユニット
などのスレッド実行部に割り当てられる。そして、スレ
ッド実行部が物理的に複数存在するシステムにおいて
は、複数のスレッドを同時に実行することが可能とな
り、逐次処理からの性能向上が期待できる。
【0006】また、個々のスレッド実行部に複数のスレ
ッドを割り当てることによって、同期ミスや、資源競
合、キャッシュミスが生じた際に、現在実行しているス
レッドを待機状態にして、別のスレッドを起動すること
によって、これらの要因による遅延を見かけ上隠蔽し、
資源の利用効率をあげることが可能になる。
【0007】このようなマルチスレッド実行方法を説明
した、代表的な文献としては、例えば、文献1(R.S.
Nikhil, G.M.Papadopoulos and Arvind, *T: A
Multithreaded Massively Parallel Architecture.
In Proceedings of the 19th Annual Internation
al Symposium on Computer Architecture, pages156
-167, May 1992)、文献2(D.E.Culler, A.Sah,
K.E.Schauser,T.v.Eichen and J.Wawrzynek.
Fine-grain Parallelism with MinimalHardware S
upport: A Compiler-Controlled Threaded Abstra
ct Machine. Proceedings of the Fourth Internat
ional Conference on Architectural Support for
Programming Languages and Operating Systems, p
ages164-175, April 1991)などがあげられる。
【0008】しかしながら、このようなスレッド実行方
法では、並列性が限られる問題については、効率的に、
並列実行することはできなかった。
【0009】これらの問題に対して、処理量の小さな、
細粒度スレッドを効率的に実行するスレッド実行方法と
実行装置が提案されている。例えば、細粒度スレッドの
並列処理プロセッサの例として、Gurinder S.Sohi氏
らが1995年に発表した論文(Gurinder S.Sohi,
Scott E.Breach and T.N.Vijaykumar, “Multis
calar Processor”, The 22nd International Symp
osium on ComputerArchitecture, IEEE Compute
r Society Press, 1995, pp.414-425)(「文献3」
という)があげられる。
【0010】上記文献等で提案される“Multiscalar
Processor”(マルチスカラプロセッサ)では、単一の
プログラムをいくつかの基本ブロックの集合である「タ
スク」に分割し、これを並列に実行処理できるプロセッ
サで処理する。
【0011】図23は、このマルチスカラプロセッサの
構成例を示す図である。
【0012】図23で参照すると、このマルチスカラプ
ロセッサは、シーケンサ67、プロセッシングユニット
68、結合ネットワーク69、及びデータバンク70を
備えて構成されている。
【0013】プロセッシングユニット68は、命令キャ
ッシュ71、実行ユニット72、及びレジスタファイル
73を備えて構成され、プロセッシングユニット68は
システムに複数存在する。また、プロセッシングユニッ
ト68に対応してデータバンク70も複数存在し、デー
タバンク70は、ARB(Address Resolution Buff
er;アドレスレゾルーションバッファ)74、データキ
ャッシュ75を備える。
【0014】複数のタスクの同時実行の管理は、制御フ
ロー情報が記載されたタスク記述子(task descripto
r;タスクデスクリプタ)を用いて、シーケンサ67に
よって動的/静的に行なわれ、各プロセッシングユニッ
ト68にタスクを割り付ける。シーケンサ67は、タス
クをプロセッシングユニットに割り付けると、次のタス
クの割り付けを行なうべく、タスク記述子を調べる。
【0015】また、似たようなスレッド実行方法として
は、Pradeep K.Dubey氏らが1995年に発表した論
文(Pradeep K.Dubey, Kevin O'Brien, Kathryn
O'Brien, Charles Barton, “Single-Program
Speculative Multithreading(SPSM)Architect
ure: Compiler-assisted Fine-Grained Multithrea
ding”, Parallel Architectures and Compilation
Techniques, IFIP1995)(「文献4」という)の
記載が参照される。
【0016】図24は、上記文献4に提案される、SP
SMアーキテクチャにおける、スレッド実行方法の概念
を説明するための図である。
【0017】図24において、シングルプログラム76
中に、スレッド生成命令78とスレッド待ち合わせ命令
79が組み込まれている。スレッド生成命令78を実行
すると、実行を先回りするフューチャースレッド77を
生成する。フューチャースレッド77はスレッド待ち合
わせ命令79まで実行して、本来の実行が追いつくのを
待ち合わせて結果をマージする。このフューチャースレ
ッド77は本来の実行と並列に動作することによって、
速度向上を図るというものである。
【0018】また、特開平5−282264号公報、特
開平5−282264号公報、及び特開平5−2822
66号公報においてそれぞれ提案されている自己並列化
式のコンピュータシステムにおけるMSIS(単一命令
シーケンスの多重ストリーム化)は、動的に並列化を行
うことが大きな特徴として挙げられるが、逐次ストリー
ムの並列処理と云う観点では、ほぼ同様の処理方式であ
ると言える。
【0019】これらの方法に共通するのは、複数のスレ
ッド間に逐次的な時間順序関係が存在することがあげら
れる。従って、先行するスレッドがデータを読み出す前
に、後続のスレッドが同一アドレスに対して将来の値を
書き込んだ場合、先行スレッドは誤った値を読んでしま
うという問題が生じる。これを「データの逆依存関係」
と呼ぶ。
【0020】マルチスカラプロセッサ(Multiscalar
Processor)の手法ではARB、また上記MSISでは
OSC制御部(オペランド記憶比較制御部)によって、
全てのロード、ストアについての情報を記憶しておき、
後続スレッドのストアデータが先行スレッドのロードに
対して働かないような制御を行い、誤った値が読み込ま
れるのを防いでいる。
【0021】図25は、マルチスカラプロセッサのデー
タバンクにおけるARBの構成をブロック図にて示した
ものである。図25を参照すると、ARBエントリ80
は、アドレス格納部80と、各ステージ85毎のロード
ビット82、ストアビット83、ストア値格納部84
と、から構成されている。
【0022】スレッドの実行状況に応じてステージ85
に、ヘッド(Head)/テイル(Tail)ポインタが設け
られ、このポインタ間で示されるステージ85がアクテ
ィブARBウインドウ(Active ARB Window)86
として、有効に扱われる。
【0023】各実行ユニット72(図23参照)がメモ
リの読み出しや書き込みを行った場合には、それぞれの
実行ユニット72に対応するステージ85のロードビッ
ト82をセット、もしくはストアビット83をセット
し、ストア値格納部84にストアした値を書き込む。読
み出しの際には、対応するステージ85よりも前のステ
ージ85にストアビット83がセットされているステー
ジ85があれば、そのステージ85のストア値格納部8
4の値を供給する。また、ストアを行った場合に後続ス
レッドのステージ85にロードビット82がセットされ
ている場合には、後続スレッドはそのロード命令以降の
実行を取り消して再実行するという投機的実行をサポー
トしている。
【0024】また、図26は、MSISのOSC制御部
の構成を示すブロック図である。図26を参照すると、
MSISにおいても、複数の処理要素87が存在し、メ
モリ階層90に対するロードは、フェッチテーブル9
3、ストアは記憶テーブル94にそれぞれ記憶をしてお
き、比較機構92を用いることによって、ARBと同様
の機能を実現している。
【0025】
【発明が解決しようとする課題】しかしながら、上記し
たARB、OSC制御部はともに、後続スレッドの書き
込みアドレスを記憶し比較を行う必要が有るため、専用
でかつ複雑なハードウェアを用意することが必要である
という問題を有している。
【0026】また、記憶すべきアドレスやデータの数
は、実行する問題の性質によって、異なるため、メイン
メモリに対してのアクセスが少ないような問題では、ハ
ードウェアが無駄となったり、一方、メインメモリに対
してのアクセスが多い問題では、アドレス/データを登
録するエントリ数が足りなくなって並列度が制限される
という問題が有った。
【0027】また、問題(システムで実行される問題)
に、並列度が潤沢に存在する場合には、時間的な順序関
係の存在しない従来スレッド間で、並列処理を行った方
が有利であるが、そのような処理を行う際には、AR
B、OSC制御部共に用いられないものとなり、逐次的
な時間順序関係を持つスレッド並列実行システムとの共
用は、コスト的に不利になると言う問題があった。
【0028】したがって、本発明は、上記事情に鑑みて
なされたものであって、その目的は、このような並列処
理システム上における逐次的な時間順序関係を持った複
数スレッドが、同一のメモリ空間を用いて同時に実行す
る際に、問題となるデータの逆依存関係を、キャッシュ
メモリを用いて自動的に解消する、ことを可能としたキ
ャッシュメモリの制御装置を提供することにある。
【0029】
【課題を解決するための手段】前記目的を達成するた
め、本発明は、その概略として、並列処理システム上に
おける逐次的な時間順序関係を持った複数のスレッド
が、同一のメモリ空間を用いて同時に実行する際に、問
題となるデータの逆依存関係を解消するために、キャッ
シュメモリに対して、整合性維持手段を付加してなるも
のである。
【0030】より詳細には、本発明は、複数のスレッド
においてスレッド間は逐次的な実行順序関係を規定する
ことによって、依存関係が先行スレッドから後続スレッ
ドの単一方向に規定されるようなスレッド実行モデルで
あって、前記スレッドを複数同時に実行するために複数
のスレッド実行部を備え、前記複数のスレッド実行部は
それぞれ、スレッド実行に伴うデータの読み書きを高速
に行うためのキャッシュメモリと、前記キャッシュメモ
リの整合性を制御する整合性維持手段と、スレッド間の
順序関係を伝達する手段と、を備え、前記複数のスレッ
ド実行部間で共有する共有メモリを、具備してなる並列
システムであって、前記各整合性維持手段の間をバスに
よって接続し、前記スレッド実行部が書き込み要求を行
った際には、前記バスに書き込みアドレスとスレッド識
別の信号を放送し、前記各整合性維持手段は前記バスを
監視することによって、先行するスレッドの書き込みが
生じ、同一アドレスのラインを保持しているキャッシュ
メモリは、前記先行スレッドが書き込んだデータを取り
込んで、対応するキャッシュメモリに対して書き込み動
作を行い、後続スレッド実行部のキャッシュメモリがミ
スを起こした場合には、先行スレッド実行部からデータ
の供給を受ける動作を行うように制御し、逐次順序関係
上、先行するスレッドを実行するスレッド実行部が書き
込んだデータは後続のスレッドを実行するスレッド実行
部が読み出し可能とし、後続のスレッドを実行するスレ
ッド実行部が書き込んだデータは先行のスレッドを実行
するスレッド実行部に対しては書き込みを行う前のデー
タを読み出す制御を行い、後続スレッドを実行するスレ
ッド実行部が書き込んだデータは、先行スレッドが終了
するまでは、共有メモリに書き戻さないように制御し
て、データの整合性制御を行う、ことを特徴とする。
【0031】
【発明の実施の形態】本発明の実施の形態について以下
に説明する。
【0032】まず、本発明の原理を図1を参照して説明
する。本発明は、図1において、スレッド1に後続する
スレッド2が物理的な時刻で先行してライト(write)
オペレーション(例えば100番地への書き込み)を実
行した場合でも、先行スレッドであるスレッド1のリー
ド(read)オペレーション(100番地の読み出し)で
は、スレッド2のライトオペレーション実行前の値が読
み出されることを、キャッシュメモリによって保証する
ように構成したものである。本発明においては、従来方
式との親和性の大きいキャッシュメモリを用いることに
よって、時間的な順序関係の存在しない従来方式のスレ
ッド間の並列処理と、の共用を容易に実現したものであ
る。
【0033】本発明は、その好ましい実施の形態におい
て、スレッドを複数同時に実行するために複数のスレッ
ド実行部(図2の2)を備え、複数のスレッド実行部は
それぞれ、スレッド実行に伴うデータの読み書きを高速
に行うためのキャッシュメモリ(図2の3)と、このキ
ャッシュメモリの整合性を制御する整合性維持手段(図
2の4)と、スレッド間の順序関係情報を伝達する手段
(図2の10等)と、を備え、複数のスレッド実行部間
で共有する共有メモリを、供え、各整合性維持手段の間
を共有バス(図2の6)によって接続する。
【0034】スレッド実行部が書き込み要求を行った際
には、バス(図2の6)に書き込みアドレスとスレッド
識別の信号を放送し、各整合性維持手段は、このバスを
監視することによって、先行するスレッドの書き込みが
生じ、同一アドレスのラインを保持しているキャッシュ
メモリは、先行スレッドが書き込んだデータを取り込ん
で、対応するキャッシュメモリに対して書き込み動作を
行い、後続スレッド実行部のキャッシュメモリがミスを
起こした場合には、先行スレッド実行部からデータの供
給を受ける動作を行うように制御し、逐次順序関係上、
先行するスレッドを実行するスレッド実行部が書き込ん
だデータについては後続のスレッドを実行するスレッド
実行部が読み出し可能とし、後続のスレッドを実行する
スレッド実行部が書き込んだデータについては、先行の
スレッドを実行するスレッド実行部に対しては、後続ス
レッドが書き込みを行う前のデータを読み出すように制
御し、後続スレッドを実行するスレッド実行部が書き込
んだデータは、先行スレッドが終了するまでは、共有メ
モリに書き戻さないように制御して、データの整合性制
御を行う。
【0035】このように、本発明の実施の形態において
は、スレッド間に実行の逐次的な時間順序関係を持つ複
数スレッド間で並列実行を行う並列処理システム上にお
ける、複数スレッドが同一のメモリ空間を用いて並列に
実行する際に問題になるデータの逆依存関係を、キャッ
シュメモリを用いて自動的に解消する。
【0036】本発明の実施の形態において、整合性維持
手段は、複数スレッド間の逐次順序と当該キャッシュエ
ントリの実行順序上の位置を把握することによって、逐
次順序関係上、先行するスレッドを実行するスレッド実
行部が書き込んだデータは後続のスレッドを実行するス
レッド実行部のキャッシュメモリに対して反映させ、後
続のスレッドを実行するスレッド実行部が書き込んだデ
ータは先行のスレッドを実行するスレッド実行部のバッ
ファメモリに対して反映させないという、データの整合
性制御を行う。
【0037】更に、常に、最先行スレッドがメインメモ
リから必要なデータを取得するがあるため、後続スレッ
ドの書き込みはキャッシュメモリから書き戻すことを禁
止し、先行スレッドが終了後に書き戻しが許可される。
【0038】このキャッシュメモリは、スレッド実行部
毎に分散している場合でも、スレッド実行部間で共有し
ている場合でも実現可能である。但し、共有している場
合には、単一アドレスに対して複数のラインを持つこと
が可能なマルチウェイのキャッシュメモリシステムにす
る必要が有る。
【0039】すなわち、本発明は、その実施の形態にお
いて、複数のスレッド実行部(図7の20)と、複数の
スレッド実行部にそれぞれ付随して設けられたキャッシ
ュメモリ(図7の21)と、複数のスレッド実行部間で
共有する共有メインメモリ(図7の28)と、を備え、
その間がネットワークによって結合され、共有メインメ
モリ(図7の26)に付随して、前記キャッシュメモリ
間の整合性維持のためのディレクトリ(図7の27)
と、整合性維持手段(図7の26)と、を備えて構成さ
れている。
【0040】この整合性維持手段は、スレッドの順序情
報を得ることによって逐次順序関係上、先行するスレッ
ドを実行するスレッド実行部が書き込んだデータは、後
続のスレッドを実行するスレッド実行部が読み出し可能
とし、後続のスレッドを実行するスレッド実行部が書き
込んだデータは先行のスレッドを実行するスレッド実行
部に対しては書き込みを行う前のデータを読み出すよう
に制御し、後続スレッドを実行するスレッド実行部が書
き込んだデータは、先行スレッドが終了するまでは、前
記共有メモリに書き戻さないように制御することによっ
て、データの整合性制御を行う。
【0041】また、本発明は、その好ましい実施の形態
において、複数のスレッドを同時ないし時分割で実行す
るスレッド実行部(図11の34)を備え、スレッド実
行部には、スレッド実行に伴うデータの読み書きを高速
に行うための複数のスレッド間で共有されるキャッシュ
メモリ(図11の35)と、キャッシュメモリを制御す
るキャッシュ制御手段(図11の36)と、を備え、キ
ャッシュメモリには、同一のアドレスに対するデータを
複数のエントリで保持可能とし、各エントリ毎にスレッ
ドの順序関係を示す識別の情報を格納し、キャッシュ制
御手段(図11の36)によって、逐次順序関係上、先
行するスレッドを実行するスレッド実行部が書き込んだ
データについては、後続のスレッドを実行するスレッド
実行部が読み出し可能とし、後続のスレッドを実行する
スレッド実行部が書き込んだデータについては先行のス
レッドを実行するスレッド実行部に対しては書き込みを
行う前のデータを読み出す制御を行うようにして、デー
タの整合性制御を行う。
【0042】
【実施例】上記した本発明の実施の形態について更に詳
細に説明すべく、本発明の実施例を以下に図面を参照し
て説明する。なお、以下に例示する実施例は、あくまで
本発明を説明するためのものであり、本発明を限定する
ためのものではないことは勿論である。
【0043】
【実施例1】図2は、本発明の第1の実施例に係る並列
処理システムの構成を示すブロック図である。図2を参
照すると、本実施例に係る並列処理システムは、4スレ
ッド並列実行型の並列処理システムとして構成され、第
1〜第4のスレッド実行部#0(2a)、#1(2
b)、#2(2c)、#3(2d)は、スレッド管理部
1と接続されている。なお、図2は、本発明の一実施例
を例示したものであり、本発明において、スレッド実行
部の個数が4個に限定されるものでないことは勿論であ
る。
【0044】各々のスレッド実行部2a〜2dは、対応
するキャッシュメモリ#0(3a)〜#3(3d)と接
続され、キャッシュメモリ3a〜3dは、それぞれ整合
性維持部#0(4a)〜#3(4d)を介して共有バス
6と接続される。
【0045】共有バス6は、データバス7、アドレスバ
ス8、及び制御信号バス9から構成されており、制御信
号バス9はデータバス7やアドレスバス8上の信号の意
味等を示す信号を伝達する用途に用いられる。
【0046】また、各整合性維持部4a〜4dは、スレ
ッド順序情報伝達バス10、及び対向して設けられたス
レッド識別子格納部#0(5a)〜#3(5d)とも接
続されている。
【0047】スレッド順序情報伝達バス10は、スレッ
ド管理部1とも接続され、スレッド管理部1からのスレ
ッドの先行/後続関係の情報を、各整合性維持部4a〜
4dに伝える。また、メインメモリ11は、各スレッド
実行部2a〜2dにて共有され、共有バス6を介して接
続されている。
【0048】スレッド管理部1は、スレッドの生成/終
了を管理する。スレッド管理部1は、スレッドの生成順
にスレッドIDが割り付け、このスレッドIDを、スレ
ッド識別子格納部5に通知する。なお、スレッド実行
部、スレッド識別子格納部、整合性維持部について個々
を特定しない場合、符号2、3、4で参照する。
【0049】スレッド識別子格納部5はスレッド管理部
1から通知されたスレッドIDをスレッド終了まで保持
する。
【0050】整合性維持部4は、対応するスレッド実行
部2の要求や、共有バス6上に放送される信号に基づい
て、キャッシュメモリ3の整合性の維持を行う。
【0051】図3に、本実施例における整合性維持部4
の構成をブロック図にて示す。なお、整合性維持部4a
〜4dはいずれも同一構成とされるため、図3には、そ
の一つの構成が示されている。
【0052】図3を参照すると、整合性維持部4は、ス
レッド順序情報テーブル12と、比較器13a、13
b、13cと、整合性維持プロトコルシーケンサ14
と、を備えて構成される。
【0053】スレッド順序情報テーブル12は、スレッ
ド順序情報伝達バス10によって伝えられるスレッド順
序情報を受け取り、各スレッドIDがどの順序に位置す
るかを保持しておく。すなわち、スレッドIDに対して
対応する順序が格納保持される。
【0054】比較器13は、スレッド順序情報テーブル
12を、スレッド実行部2と、共有バス6上に放送され
る信号を発したスレッドの順序と、比較し、どちらか先
行するものと比較した結果を整合性維持プロトコルシー
ケンサ14に伝達する。
【0055】図4は、本実施例におけるキャッシュメモ
リ3の1エントリ(キャッシュライン)の構成を示した
ものである。
【0056】図4を参照すると、本実施例において、キ
ャッシュライン18は、状態ビット15、アドレスタグ
16、及びデータアレイ17を含んで構成され、キャッ
シュライン18が複数集まってキャッシュメモリ3を構
成する。
【0057】状態ビット15は、キャッシュの内容が有
効で有るか否かという情報と、メインメモリとキャッシ
ュメモリの内容が一致しているか否かとい情報と、更
に、不一致の場合には、このキャッシュメモリに対応す
るスレッド実行部が書き込みを行うことによって不一致
となったものを区別することによって、表1に示す、4
状態を表す。
【0058】
【表1】
【0059】このキャッシュの状態に基づいて、整合性
維持部4は複数キャッシュ間の時間順序関係を保ちなが
ら整合性を維持する。
【0060】図5、及び図6は、本実施例における整合
性維持部4における整合性維持プロトコルシーケンサ1
4の整合性維持のアルゴリズムを説明するためのフロー
チャートであり、図5は、リードミスが生じた時の動作
アルゴリズムを示し、図6は、他のスレッド実行部2が
書き込み動作を起こした時の動作アルゴリズムを示して
いる。なお、リードヒット時には、対応するキャッシュ
メモリ3がデータを供給するのみの動作であり、また、
ライトミス時にはリードミス動作とライトヒットの動作
が続けて行われるものとする。
【0061】本実施例によるキャッシュメモリ3の動作
を順を追って具体的に説明する。以下の例では、スレッ
ド実行部2aがメモリに対する動作を起こした場合につ
いて説明する。
【0062】まず、スレッド実行部2aが要求するアド
レスのデータがキャッシュメモリ3aに存在しない場
合、すなわちキャッシュミスが生じた際に(図5の50
1参照)、整合性維持部4aは、共有バス6の使用権を
確保する。
【0063】まず、他のスレッド実行部2b、2c、2
dに属するキャッシュメモリ3b、3c、3dのキャッ
シュライン18中に、当該アドレスのエントリを保持し
ているか否かを調べる。これは、共有バス6のアドレス
バス8に対して要求アドレスを、制御信号バス9に対し
て、アクセスの種類として、リードミスによるデータ要
求であるという情報とスレッドIDを放送することによ
って行われる(図5のステップ502)。
【0064】共有バス6の使用権を得ていない整合性維
持部4b、4c、4dは、バスの信号を監視することに
より、アクセスの種類(リード/ライト)とアドレスを
得る。このアドレスを対応するキャッシュメモリ3b、
3c、3dのキャッシュライン18中に同一アドレスの
ラインが存在するか否か調べる。もし、同一アドレスの
ラインが存在し、複数存在した場合に、それが「C状態
(Clean)」のみであれば、そのいずれかがデータ
をデータバスに放送する。
【0065】また、「D/DSM(Dirty Self-Modi
fied)状態」のラインが存在した場合(図5のステップ
505のYes)でも、要求を行ったスレッドIDより
も、当該キャッシュメモリ3に対応するスレッドIDが
先行する場合(図5のステップ506のYes)には、
そのアドレスに対応するデータを、データバス7に放送
する。この場合、この条件内に、複数のラインが存在す
る場合には、先行スレッドで、かつ、要求スレッドID
に最も近い整合性維持部4からデータを供給するよう
に、バスの調停を行う。
【0066】また、どの整合性維持部4b、4c、4d
に対応するキャッシュライン18に、同一アドレスライ
ンが存在しない場合には、メインメモリ11からデータ
をデータバス7に放送する(図5のステップ504)。
【0067】データを要求した整合性維持部4aは、そ
の放送されたデータを受け取ることによって、所望デー
タをキャッシュライン18に取り込むことができる。
【0068】この時、キャッシュメモリ3b、3c、3
dから供給され、そのラインが「D状態」もしくは「D
SM状態」の場合には、要求を行ったキャッシュメモリ
3aの状態ビット15は「D状態」にセットされ(図5
のステップ508)、それ以外の場合には「C状態」に
セットされる。
【0069】従来方式のマルチプロセッサのキャッシュ
メモリでは、リードミス時のデータ供給先が任意の他の
キャッシュ、あるいはメインメモリであるのに対して、
本実施例においては、スレッドIDによる順序関係によ
って、データの供給方法に制約を設けることによって、
後続スレッドが書き込んだデータが、先行スレッドに
は、供給されないようにして、スレッド間の時間順序関
係を保つ。
【0070】次に、書き込みが発生した場合について説
明する。キャッシュメモリ3aへの書き込みが生じた場
合には、整合性維持手段4aは、共有バス6のアクセス
権を確保して、書き込みを行うアドレスを他のキャッシ
ュメモリ3b、3c、3dに伝達する必要が有る。
【0071】整合性維持部4aは、共有バス6のアドレ
スバス8にアドレスを、制御信号バス9に対しては、
「書き込みである」という情報とスレッドIDを放送す
る。また、データバス7に対して書き込んだデータを同
時に放送する。
【0072】共有バス6上に書き込みに関する信号が放
送された場合、共有バス6のアクセス権を持っていない
整合性維持部4b、4c、4dは、図6に示すアルゴリ
ズムによって、整合性の維持を行う。
【0073】具体的には、キャッシュライン18がアド
レスバス8に放送されているアドレスと同一アドレスの
データを保持しており(図6のステップ602でYe
s)、保持しているキャッシュ3が属するスレッド実行
部2のスレッドIDが制御バス9上のスレッドIDより
も後続のものであれば(図6のステップ604でYe
s)、書き込み内容を対応するキャッシュライン18に
反映させる。さらに、そのキャッシュライン18の状態
ビット15が「C状態」である場合は、「D状態」に変
更する(図6のステップ606)。また、書き込みを行
ったスレッド実行部2aに対応するキャッシュメモリ3
aの該当キャッシュライン18の状態ビット15は「D
SM状態」にセットされる。
【0074】これによって、先行スレッドの書き込み
は、後続スレッドのキャッシュメモリ3にも自動的に反
映されるが、後続スレッドの書き込みは先行スレッドの
キャッシュメモリ3には反映されないため、スレッド間
の時間順序関係が保たれる。
【0075】先行スレッドが存在する場合、後続スレッ
ドのDSM状態のキャッシュライン18は、メインメモ
リ11に対して書き戻しは禁止される。これは、同一ア
ドレスを先行スレッドが要求した場合に、メインメモリ
11から、後続スレッドが書き込みを行う前の値として
供給するためである。他のアドレスのデータをキャッシ
ュメモリ3に格納するために、後続スレッドのメインメ
モリと不一致状態のキャッシュエントリ18を書き戻す
必要が生じた場合には、後続スレッドは実行を中断し、
先行スレッドが終了するのを待つ必要が有る。また、先
行スレッドが終了する際には、「DSM状態」のキャッ
シュライン18のデータアレイ17の内容をメインメモ
リ11に書き戻す必要が生じる。
【0076】一方、「D状態」のキャッシュライン18
は、同一アドレスを持ち「DSM状態」であるキャッシ
ュライン18が他のスレッド実行部2に属するキャッシ
ュに存在するので、メインメモリへの書き戻しは行う必
要がない。また、「D状態」のまま、先行するスレッド
が全て終了した場合には、「C状態」に変更される。
【0077】本実施例においては、上記したようなキャ
ッシュ制御を行うことによって、スレッド間の時間順序
関係は保ち、データの逆依存関係を、キャッシュメモリ
を用いて自動的に解消することが実現される。但し、後
続スレッドが既に書き込んだり読み出したりするアドレ
スに対して、先行スレッドが、後に、同一アドレスに書
き込みを起こした場合には、スレッド間の時間順序関係
をこのままでは保つことはできない。この場合には、ス
レッド間にソフトウェアによって同期を取る必要が生じ
る。
【0078】
【実施例2】図7は、本発明の第2の実施例に係る並列
処理システムの構成を示すブロック図である。図7を参
照すると、本実施例に係る並列処理システムは、4スレ
ッド並列実行型の並列処理システムとして構成されてい
る。なお、以下では図2に示した前記第1の実施例と本
実施例との相違点を主に説明し、重複を回避するため同
一部分の説明は省略する。
【0079】本実施例に係るシステムでは、図2に示し
た前記第1の実施例における共有バス6に代えて、ネッ
トワーク23によって、キャッシュメモリ21と、メイ
ンメモリ28を接続している。このため、本実施例にお
いては、ネットワークインタフェース22が新たに追加
され、整合性維持部26は共有として、メインメモリ1
1に直結されている。また、メインメモリ11に付随し
て、ディレクトリテーブル27が接続されている。
【0080】図8は、本実施例におけるメインメモリ1
1とディレクトリテーブル27の構成の一例を示したも
のであり、各スレッド実行部20に対応した状態ビット
29によって、ディレクトリテーブル27が構築され、
メインメモリ28におけるメモリライン32との対応が
とられている。
【0081】図8を参照して、ディレクトリテーブル2
7の状態ビット29は、スレッド実行部19に付随する
キャッシュメモリ21にコピーが存在するか否かを示す
有効ビット30と、そのコピーが所属するスレッド実行
部20によって書き込みが行われたか否かを示す不一致
ビット31と、から構成されている。
【0082】不一致ビット31がセットされた状態を、
ここでは「D状態」と呼ぶ。また、スレッド管理部19
からは、整合性維持部26にスレッドの実行状態が変わ
る毎に対してスレッド順序情報をスレッド情報伝達バス
25が伝えられる。
【0083】整合性維持部26は、各スレッド実行部2
0からのメインメモリ28アクセス要求に対して、図
9、及び図10に示すアルゴリズムによってキャッシュ
間の整合性を維持する。
【0084】以下の例では、スレッド実行部20aがメ
モリに対する動作を起こした場合について説明する。は
じめに読み出し時の動作について説明する。
【0085】まず、スレッド実行部20aが要求するア
ドレスのデータがキャッシュメモリ21aに存在しない
場合、すなわちキャッシュミスが生じると(図9の90
1)、ネットワーク23を介して、データの読み出し要
求を整合性維持部26に対して行う。
【0086】整合性維持部26は、ディレクトリテーブ
ル27を調べ(図9のステップ902)、「D状態」の
エントリが存在し(図9のステップ903でYes)、
且つその「D状態」のエントリが先行スレッドのエント
リであれば(図9のステップ904でYes)、「D状
態の」エントリを持つキャッシュメモリ21に対してデ
ータの転送を要求する。要求されたキャッシュメモリ2
1は、要求ラインのデータを要求したスレッド実行部2
0aのキャッシュメモリ21aに対して転送する(図9
のステップ907)。
【0087】それ以外の場合は、メインメモリ28か
ら、所望データを要求したスレッド実行部20aのキャ
ッシュメモリ21aに対してデータ転送する(図9のス
テップ904、906参照)。
【0088】いずれの場合でも、要求スレッド実行部2
0aに対応するディレクトリテーブル27の状態ビット
29aの有効ビット(Valid ビット)30をセッ
トする。
【0089】次に、書き込みの場合について説明する
と、書き込み時は、キャッシュのヒット/ミスに拘らず
ネットワーク23を介してデータの書き込み要求を、整
合性維持部26に対して行う。
【0090】キャッシュヒット時は、その後、以下の動
作を、またキャッシュミス時の書き込みは、キャッシュ
ミス時の読みだし動作後に、以下の動作を行う。
【0091】整合性維持部26は、ディレクトリテーブ
ル27を調べ、有効ビット30がセットされたエントリ
のうち、後続スレッドのエントリに対して、書き込みデ
ータを送信する(図10のステップ1006)。また、要求
スレッド実行部20に対応するディレクトリテーブル2
7の不一致ビット31をセットする。
【0092】また、本実施例においては、前記第1の実
施例と同様に、先行スレッドが存在する場合、後続スレ
ッドの「D状態」のキャッシュメモリ21のエントリ
は、メインメモリ28に対して書き戻しは禁止され、メ
インメモリ28には、最先行スレッド以外のスレッドの
書き込み結果が反映されることを抑止し、最先行スレッ
ドの読み出し要求の正当性を維持するこれによって、先
行スレッドの書き込みは、後続スレッドのキャッシュメ
モリ21にも自動的に反映されるが、後続スレッドの書
き込みは先行スレッドのキャッシュメモリ21には反映
されないため、スレッド間の時間順序関係が保たれる。
【0093】
【実施例3】図11は、本発明の第3の実施例に係る並
列処理システムの構成を示すブロック図である。本実施
例に係る並列処理システムは、4スレッド並列実行型の
並列処理システムである。
【0094】図11を参照すると、本実施例は、キャッ
シュメモリ35を、各スレッド実行部#0(34a)、
#1(34b)、#2(34c)、#3(34d)で共
有する構成としたものである。
【0095】図12は、本実施例におけるキャッシュメ
モリ35の1エントリ44の構成を示したものである。
【0096】本実施例において、キャッシュメモリ35
は、特定のアドレスのデータが複数のキャッシュライン
43に格納されることができる構造(マルチウェイキャ
ッシュ)として構成され、図12を参照すると、4ウェ
イ(way)構造とされている。
【0097】図12に示すように、本実施例において
は、通常のマルチウェイキャッシュに比して、各ライン
には、スレッドIDタグ39を格納するように拡張され
ている。また、キャッシュの状態ビット40は、表2に
示す状態を表す。
【0098】
【表2】
【0099】図13は、本実施例におけるキャッシュメ
モリ35と付随する整合性維持部36について、その構
成の詳細を示したブロック図である。
【0100】図13において、要求アービタ45は、キ
ャッシュメモリ35を共有するために、各スレッド実行
部#0(34a)〜#3(34d)からの要求を調停す
る役割を担う。
【0101】図13を参照して、状態比較器49、アド
レス比較器50、プロトコルシーケンサ51によって、
キャッシュのヒット/ミスを判定し、さらに、読み出し
時には、キャッシュの各ライン43(図12参照)から
供給されたデータの選択、書き込み時には書き込むライ
ン43を決定する。ライトバッファ47は、データアレ
イ42の一部に対して書き込みを行うために、以前のデ
ータアレイ42の値を読み込んでおいて、必要な部分を
修正し、再びデータアレイ42に書き戻すためのバッフ
ァである。
【0102】以下、本実施例におけるキャッシュメモリ
の動作を順を追って具体的に説明する。まず、本実施例
における、キャッシュヒットの状態は、表3に示す3種
類が存在する。以下、自スレッドよりも先行するスレッ
ドを「親スレッド」、後続のスレッドを「子スレッド」
と呼ぶことにする。
【0103】
【表3】
【0104】スレッド実行部34から、キャッシュ35
へのアクセス要求があった場合、与えられた要求アドレ
ス信号55の一部によって、キャッシュエントリ44を
選択する。
【0105】選択されたキャッシュエントリからは、ス
レッドIDタグ39、状態ビット40、アドレスタグ4
1、データアレイ42が全てのキャッシュライン43す
なわち図13では、way0からway3まですべてを
出力する。
【0106】アドレス比較器50では、アドレスタグ4
1から出力されたアドレスと、要求アドレス信号55
と、を比較し、各キャッシュライン43毎に一致/不一
致の情報を、プロトコルシーケンサ51に対して送出す
る。
【0107】また、状態比較器49では、要求を行った
スレッド実行手段2のスレッドID、およびスレッド順
序情報信号53から、キャッシュライン43のスレッド
IDタグ39が、自ID、親ID、子IDのいずれに相
当するかを判断した情報を、プロトコルシーケンサ51
に対して送出する。
【0108】これらの情報から、プロトコルシーケンサ
51は、図14、及び図15に示すアルゴリズムで、デ
ータの供給/蓄積と整合性を維持する。
【0109】まず、スレッド実行部34がリード要求を
行い(図14の1401参照)、その要求が要求アービタ4
5によって調停され選択された場合の動作について説明
する。
【0110】最初に、要求アドレスがキャッシュライン
43に存在するか否かを調べる(図14のステップ140
2)。存在しない場合には、無条件にキャッシュミスと
なり、リプレイスするキャッシュライン43を決定し
て、メインメモリからデータをフェッチする(図14の
ステップ1402)。
【0111】要求アドレスと一致するキャッシュライン
43が存在した場合には(図14のステップ1402でYe
s)、さらに、スレッドIDタグ39と要求したスレッ
ド実行部34の実行スレッドIDとを比較し(図4のス
テップ1404)、同一IDであれば、すなわち自IDヒッ
トであれば、そのキャッシュライン43(自IDライ
ン)からのデータアレイ42のデータを供給する(図1
4のステップ1407参照)。
【0112】同一IDが存在しない場合(図14のステ
ップ1404のNo)、まず親IDと一致しているものの存
在を調べ(図14のステップ1405)、親IDのキャッシ
ュライン43があれば、そのキャッシュライン43のデ
ータアレイ42のデータを供給する(図14のステップ
1408)。親IDと一致するキャッシュライン43が複数
ある場合には、自IDに最も近いIDを保持するキャッ
シュライン43のデータを優先する。
【0113】親IDとヒットしなかった場合には、子I
Dと一致しているものの存在を調べる(図14のステッ
プ1406)。子IDで一致するものが存在し、「C状態」
であれば、当該キャッシュライン43のデータライン4
2のデータを供給し、さらに、子IDを自IDに変更す
る(図14のステップ1409)。
【0114】子IDと一致するキャッシュライン43が
存在しない場合には、メインメモリ38からデータをフ
ェッチすることになる(図14のステップ1402)。
【0115】例えば、あるキャッシュエントリ44が図
16に示すような状態において、スレッドIDが「2」
であるスレッド実行部34において、キャッシュメモリ
35のアドレスタグ41が、0x100、0x200、
0x300、0x400番地のデータを要求した場合、
0x100番地のデータは、親IDヒットとなり、先行
スレッドIDすなわちスレッドIDが「1」のウェイ
(way)0のデータアレイ42から供給される。
【0116】また0x200番地のデータは、自IDヒ
ット(キャッシュエントリのスレッドIDタグ39が
「2」)となり、way1のデータアレイ42から供給
される。
【0117】0x300番地のデータは、ウェイ(wa
y)2に存在するが、way2はスレッドIDタグ39
が「3」で、後続スレッド、且つ「D状態」であるた
め、メモリからデータをフェッチすることになる。
【0118】0x400番地のデータは、way3に存
在し、スレッドIDタグ39が「3」で後続スレッドで
あるが。「C状態」であるため、子IDヒットとなり、
way3のデータアレイ42から供給される。さらに、
way3のスレッドIDタグ39は「2」に変更され
る。
【0119】次に、図15を参照して、スレッド実行部
34がライト要求を行い(図15の1501)、その要求が
要求アービタ45(図13参照)によって調停され選択
された場合の動作について説明する。
【0120】最初に、要求アドレスがキャッシュライン
43に存在するか否かを調べる(図15のステップ150
2)。存在しない場合には、無条件にキャッシュミスと
なり、リプレイスするキャッシュライン43を決定し
て、メモリからデータをフェッチ後、ライトバッファ4
7で書き込みデータをマージして、キャッシュライン4
3に書き込みを行う(図15のステップ1503)。
【0121】要求アドレスと一致するキャッシュライン
43が存在した場合には(図15のステップ1502で
Yes)、さらに、スレッドIDタグ39と、要求した
スレッド実行部34の実行スレッドIDと、を比較し
(図15のステップ1504)、これらが同一IDであれ
ば、すなわち自IDヒットであれば、そのキャッシュラ
イン43のデータアレイ42にデータを書き込む(図1
5のステップ1507)。後続の子スレッドIDを持ち「D
状態」のキャッシュライン43が存在する場合、そのキ
ャッシュライン43にも。同様のデータを書き込む。こ
れらの処理は、ライトバッファ47を用いて行われる。
【0122】一方、同一IDが存在しない場合(図15
のステップ1504でNo)、まず親IDと一致してい
るものの存在を調べ、親IDのキャッシュライン43が
存在する場合(図15のステップ1505でYes)、
他にリプレイスするキャッシュライン43を決定して、
親IDのキャッシュライン43を、自IDのキャッシュ
ラインとして、ライン間コピー部46によって別にコピ
ーし、その自IDのキャッシュライン43に対して書き
込みを行う(図15のステップ1508)。親IDのキャッ
シュライン43には、書き込みは行わないが、後続の子
スレッドIDを持ちD状態のキャッシュライン43が存
在する場合、当該キャッシュライン43にも同様のデー
タを書き込む。そして、親IDと一致するキャッシュラ
イン43が複数ある場合には、自IDに最も近いIDを
保持するキャッシュライン43のデータを優先してライ
ン間コピーのソースとする。
【0123】親IDとヒットしなかった場合には、子I
Dと一致しているものの存在を調べる(図15のステッ
プ1506)。子IDで一致するものが存在し「C状態」で
あれば、そのキャッシュライン43のデータに対してラ
イトバッファ47を介して書き込みを行う。さらに、子
IDを自IDに変更する(図15のステップ1509)。
【0124】子IDと一致するキャッシュライン43が
存在しない場合には、キャッシュミスの動作となる(図
15のステップ1502)。
【0125】例えば、あるキャッシュエントリ44が、
図16に示すような状態において、スレッドIDが
「2」であるスレッド実行部34において、キャッシュ
メモリ35のアドレスタグ41が0x100番地のデー
タにライトを要求した場合、親IDヒットとなり、wa
y1もしくはway3に対してway0のデータを自I
Dとしてコピーし、コピーを行ったデータアレイ42、
すなわちway1かway3のデータアレイ42に対し
て書き込みを行い、スレッドIDタグ39は「2」に、
状態ビット40は「D状態」に、アドレスタグ41は0
x100に設定される。
【0126】また、0x200番地へのアクセスの場合
には、自ヒットのため、ライトバッファ47を介してデ
ータアレイ42に書き込みを行い、キャッシュエントリ
44の状態ビット40を「D状態」に設定する。
【0127】次に0x300番地へのアクセスである
が、0x300番地のデータはway2に存在するが、
way2はスレッドIDタグ39が「3」で後続スレッ
ド、且つ「D状態」であるため、キャッシュミスとな
る。
【0128】0x400番地のデータは、way3に存
在し、スレッドIDタグ39が「3」で後続スレッドで
あるが、「C状態」であるため、子IDヒットとなり、
way3のキャッシュライン43のデータに対してライ
トバッファ47を介して書き込みを行う。さらに、子I
Dを自IDに変更する。
【0129】また、図17(A)に示すような、キャッ
シュエントリ44の状態で、スレッドIDが2のスレッ
ド実行部34がキャッシュメモリ35のアドレスタグ4
10x200番地のデータにライトを要求した場合、親
IDヒットとなり、way1のデータはway0もしく
はway3にコピーされる。ここでは、way0にコピ
ーされるものとする。
【0130】したがって、way0は、スレッドIDタ
グ39が「2」に設定され、アドレスタグ41は0x2
00、状態ビット40は「D状態」に設定され、way
1のデータアレイ42の内容をway0にコピーしたも
のに対して書き込みを行った結果が、way0のデータ
アレイ42に、ライトバッファ47を介して、行われ
る。
【0131】同時に、way2のデータアレイ42に対
しても、同じデータがライトバッファ47を介して行わ
れる。図17(B)には、これらが行われたあとの状態
が示されている。
【0132】さて、キャッシュライン43のコピーや新
たなアドレスのデータをメインメモリ38からフェッチ
する場合には、その時点で存在するキャッシュライン4
3のデータを置き換える必要が生じる。従来のキャッシ
ュメモリでは、この時点でランダムもしくは過去の参照
履歴に基づいて置き換えるキャッシュライン43を決定
する。
【0133】これに対して、本実施例によるキャッシュ
メモリでは、後続スレッドが修正する前のデータを先行
スレッドが参照する必要が有るので、システム中の最先
行スレッドでなければ、「D状態」のデータアレイ42
のメインメモリ38への書き戻し動作を禁止する必要が
有る。
【0134】書き戻し禁止に伴い先行スレッドがキャッ
シュライン43を確保できなくなることによるデッドロ
ックの発生を回避するため、1エントリ内で、最先行ス
レッドは、必ず1つのキャッシュライン43を確保でき
るようにする。このため、後続スレッドがキャッシュラ
イン43を確保できない場合には、先行スレッドの終了
を待つことになる。
【0135】スレッドの実行モデルとして、後続スレッ
ドから先行スレッドへの依存関係は定義しないモデルを
用いることによって、このような置き換えるキャッシュ
ライン43に対して制約を付した場合においても、デッ
トロックを回避することが可能である。
【0136】上記したようなキャッシュ制御を行うこと
によって、本実施例においては、スレッド間の時間順序
関係を保ち、データの逆依存関係を、スレッド実行部3
4間で共有のキャッシュメモリを用いた場合にも、自動
的に解消することが実現される。但し、後続スレッドが
既に書き込んだり読み出したりするアドレスに対して、
先行スレッドが後に同一アドレスに書き込みを起こした
場合には、スレッド間の時間順序関係をこのままでは保
つことはできない。この場合には、スレッド間にソフト
ウェアによって同期をとる必要性が生じる。
【0137】
【実施例4】本発明の第4の実施例は、後続スレッドが
書き込みを行ったアドレスに対して、先行スレッドが書
き込みを行うような場合にも、後続スレッド側のキャッ
シュメモリには反映されない保証をハードウェアによっ
て行う拡張を、前記第1〜第3の実施例に対して行った
ものである。
【0138】本実施例に係るキャッシュメモリのキャッ
シュラインの一例を、図18に示す。図18を参照し
て、このキャッシュラインは、図4に示したキャッシュ
に対して、ライトマスク62が追加されている。
【0139】ライトマスク62は、データアレイ61の
ワード単位か最小書き込み単位毎に設けられる。ライト
マスク62は、キャッシュライン63に新たにメモリも
しくは他のキャッシュからデータが格納された時にクリ
アされ、キャッシュライン63が属するスレッドが書き
込みを行った場合には、好き込みを行ったワードもしく
は最小書き込み単位毎にセットされる。
【0140】さて、本実施例においても、前記第1の実
施例から第3の実施例で説明したように、スレッドの時
間順序関係を保つために、先行スレッドにおける書き込
みは、同一アドレスタグ60の後続スレッドに属するキ
ャッシュライン63のデータアレイ61に対して反映さ
せる必要があり、そのための制御を行っている。
【0141】しかしながら、上記実施例においては、後
続スレッドが書き込みを行ったアドレスに対して、先行
スレッドが書き込みを行うような場合にも、後続スレッ
ド側のキャッシュメモリには反映されないという保証、
すなわち、複数スレッド間の書き込みの順序関係までは
保証していなかった。これらは、先行スレッドの書き込
みのデータを後続スレッドが読み出す時と同様にスレッ
ド間でソフトウェアを介在させた同期をとることが要求
される。
【0142】本実施例では、ライトマスク62がセット
されている、ワードもしくは最小書き込み単位には、先
行スレッドからの書き込みを反映させない処理を、後続
スレッド側のキャッシュメモリによって行うことによっ
て、複数スレッド間の同一アドレスへの書き込みの時間
順序関係をキャッシュメモリの制御によって維持するこ
とが実現される。
【0143】以下、本実施例の動作の例として、図19
〜図22に示すキャッシュライン63のデータアレイ6
1の状態の時の動作を説明する。なお、図19、図2
0、図21及び図22は図面作成の都合で分図されたも
のである。
【0144】図19を参照して、書き込み動作1(6
4)では、キャッシュラインが属するスレッド実行部に
よる書き込みで、0x30000番地に0xfffff
fffが書き込まれる。
【0145】この動作が行われると、データアレイ61
の0x30000番地の位置に、0xffffffff
というデータが書き込まれると同時に、対応するライト
マスク62がセットされる(図20参照)。
【0146】次に、書き込み動作2(65)は、0x3
0008番地に0x01234567というデータを先
行するスレッドが書き込んだ場合に、時間順序関係を保
つために行う動作を示す。
【0147】この場合、0x30008番地に対応する
ライトマスク62はセットされていないので、先行スレ
ッドの書き込み動作を反映し、データアレイ61の0x
30008番地の位置に、0x01234567という
データが書き込まれる(図21参照)。
【0148】最後に書き込み動作3(66)では、0x
30000番地に0x00000000というデータを
先行するスレッドが書き込んだ場合に、時間順序関係を
保つために行う動作を示す。この場合、0x30000
番地に対応するライトマスク62はセットされているの
で、先行スレッドの書き込み動作を反映し、データアレ
イ61の0x30000番地の位置には、先行スレッド
の書き込みは反映されない(図22参照)。これは、ス
レッド間の時間順序関係の規定では、書き込み動作3
(66)よりも、書き込み動作1(64)のほうが、後
から起きる事象と規定されているためである。
【0149】
【実施例5】さらに本発明の第5の実施例として、並列
システムの動作モードを複数種類定義し切り替えること
を可能としている。本実施例に係るキャッシュの構成
は、前記第1〜第4の実施例のすべてのキャッシュメモ
リに対して適応可能である。
【0150】また前記第1〜第4の実施例におけるキャ
ッシュメモリでは、整合性維持機構が、スレッド管理ユ
ニットから受け取ったスレッド順序情報に基づいて、後
続スレッドのキャッシュに対してのみ書き込みを伝搬さ
せる制御を行う。
【0151】この書き込み伝搬制御を、同一アドレスを
保持するすべてのキャッシュメモリに対して行うよう
に、切り替えられるように拡張することによって、従来
のスレッド実行モデル、すなわちスレッド間の順序関係
はすべてソフトウェアによって保証して、複数スレッド
を実行するモデルの実行が可能になる。
【0152】以下、具体的に拡張方法を説明する。
【0153】まず、前記第1の実施例で示したバス結合
でスレッド実行部毎に分散型の整合性維持部を持ち、バ
ス結合された構成の並列システムについて説明する。
【0154】この場合、図2で示されるスレッド管理部
1から、整合性維持部4に対して、スレッドの順序を指
定しないという信号を、スレッド順序情報伝達バス10
を介して伝える。このような情報が伝えられた場合に
は、整合性維持部4は、先行/後続スレッドによる制御
を行わない。すなわち、リードミス時には、図5のフロ
ーチャートにおいて先行スレッド判断は行わず(図5の
ステップ506の判断は行わない)、常に、D/DSM
状態のキャッシュからデータの供給を受ける。
【0155】また、他のスレッドで書き込みが生じた場
合にも、図6に示す先行/後続の判断は行わず、自スレ
ッドのキャッシュに他のスレッド書き込みを反映させ
る。これらのモードの切り替えは、整合性維持機構4の
判断論理を各々1つを有効か無効かを切り替えるのみで
あり、ハードウェア的な拡張は最小規模に抑えられる。
【0156】次に、前記第2の実施例の拡張について説
明する。前記第2の実施例(図7参照)においては、整
合性維持機構26はシステム中に共有で1つのみ存在す
る。バス結合方式と同様、従来スレッドモデルによる並
列処理を行う際には、スレッド管理部19から、整合性
維持部26に対して、スレッドの順序を指定しないとい
う信号を、スレッド順序情報伝達バス25を介して伝え
る。この場合は、図9、図10に示す先行スレッド/後
続スレッド判断を行わず、リード時にD状態のキャッシ
ュメモリ21が存在すれば、そのキャッシュメモリ21
からデータ転送を要求し、書き込みの際には共有するラ
インに書き込みデータを送信する。これらのモードの切
り替えも、バス結合の場合と同様、整合性維持機構4の
判断論理を各々1つを有効か無効かを切り替えるのみで
あり、ハードウェア的な拡張は最小規模に抑えることが
可能である。
【0157】前記第1の実施例については、従来スレッ
ドモデルによる並列処理を行う場合には、キャッシュは
全て共有として扱われる。すなわち、図13で示したキ
ャッシュエントリ44の、スレッドIDタグ39の値を
比較する処理ステップを、図14、図15に示したフロ
ーチャートから外す。すなわち、要求アドレスとアドレ
スタグ41の比較のみで、ヒット/ミスを判定する。
【0158】したがって、整合性維持部36の判断論理
を各々1つを有効か無効かを切り替えるのみであり、ハ
ードウェア的な拡張は最小規模に抑えることが可能であ
る。また、この動作の場合、複数キャッシュライン43
が同一アドレスのデータを持つことはなくなる。
【0159】
【実施例6】さらに本発明の第6の実施例においては、
要求するアドレスによって、前記第5の実施例を切り替
えることを行う。参照アドレスによってキャッシュのア
ルゴリズムを変えることは、TLB(Translation Lo
okaside Buffer)のエントリ毎に属性をつけることに
よって行う。これらは、例えば米MIPS Technology
INC.社製のR4000シリーズなどのプロセッサ
で公知の技術であり、これらの技術と、前記第5の実施
例を組み合わせることによって、この第6の実施例を実
現することが可能である。
【0160】以上、本発明の各種実施例を説明したが、
上記実施例は、本発明を限定するためのものでなく、本
発明は本発明の原理に準ずる各種実施形態及び変形を含
むこは勿論である。
【0161】
【発明の効果】以上説明したように本発明によれば、マ
イクロプロセッサで幅広く用いられているキャッシュメ
モリの整合性維持機能を拡張することによって、逐次的
な時間順序関係を持った複数スレッドが、同一のメモリ
空間を用いて、同時に実行するようなスレッド実行モデ
ルで、メモリ上のデータ逆依存関係をソフトウェア上か
らは隠蔽することを可能とし、これにより効率的な並列
実行を可能とする、という効果を奏する。
【0162】従来方式を拡張して同様の効果を達成しよ
うとした場合、専用のハードウェアが必要になり、ハー
ドウェアコストがかかるという問題があったが、本発明
によれば、キャッシュメモリを用いることによって、こ
の問題を解消している。
【0163】また、本発明によれば、キャッシュメモリ
を用いることによって、アドレスを示すビットのすべて
を比較する必要がなくなるという効果もあげられる。さ
らに、本発明においては、従来方式のスレッド並列実行
モデルとの共存が容易に行うことが可能になる。なお、
本発明では、データの正依存関係については、ハードウ
ェアによる解消を試みていないが、これは、並列処理本
質の問題点であり、ソフトウェアを含めた同期機構によ
って解消することとしてハードウェアの簡易化を実現し
いる。
【図面の簡単な説明】
【図1】本発明の原理を説明するスレッドの実行モデル
図である。
【図2】本発明の一実施例の構成を示すブロック図であ
る。
【図3】本発明の一実施例における整合性維持部の構成
の詳細を示すブロック図である。
【図4】本発明の一実施例におけるキャッシュメモリの
ライン構成を示すブロック図である。
【図5】本発明の一実施例における整合性維持部のリー
ドミス時の処理フローを説明するためのフローチャート
である。
【図6】本発明の一実施例における整合性維持部のライ
ト時の処理フローを説明するためのフローチャートであ
る。
【図7】本発明の第2の実施例の構成を示すブロック図
である。
【図8】本発明の第2の実施例におけるディレクトリテ
ーブル/メインメモリを示すブロック図である。
【図9】本発明の第2の実施例における整合性維持部の
リードミス時の処理フローを説明するためのフローチャ
ートである。
【図10】本発明の第2の実施例における整合性維持部
のライト時の処理フローを説明するためのフローチャー
トである。
【図11】本発明の第3の実施例の構成を示すブロック
図である。
【図12】本発明の第3の実施例におけるキャッシュエ
ントリの構造を示すブロック図である。
【図13】本発明の第3の実施例におけるキャッシュの
詳細構造を示すブロック図である。
【図14】本発明の第3の実施例におけるプロトコルシ
ーケンサのリード時の処理フローを説明するためのフロ
ーチャートである。
【図15】本発明の第3の実施例におけるプロトコルシ
ーケンサのライト時の処理フローを説明するためのフロ
ーチャートである。
【図16】本発明の第3の実施例におけるキャッシュエ
ントリの状態例(1)を示す図である。
【図17】本発明の第3の実施例におけるキャッシュエ
ントリの状態例(2)を示す図である。
【図18】本発明の第4の実施例におけるキャッシュメ
モリのライン構成を示すブロック図である。
【図19】本発明の第4の実施例におけるキャッシュメ
モリの動作例を示す図である。
【図20】本発明の第4の実施例におけるキャッシュメ
モリの動作例を示す図である。
【図21】本発明の第4の実施例におけるキャッシュメ
モリの動作例を示す図である。
【図22】本発明の第4の実施例におけるキャッシュメ
モリの動作例を示す図である。
【図23】従来のマルチスカラプロセッサ(Multiscal
ar Processor)の構成を示すブロック図である。
【図24】従来のSPSMアーキテクチャにおけるスレ
ッド実行方法の概念図である。
【図25】従来のマルチスケーラプロセッサ(Multisc
alar Processor)におけるARBの構成を示すブロッ
ク図である。
【図26】従来のMSISにおけるOSC制御部の構成
を示すブロック図である。
【符号の説明】
1 スレッド管理部 2 スレッド実行部 3 キャッシュメモリ 4 整合性維持部 5 スレッド識別子格納部 6 共有バス 7 データバス 8 アドレスバス 9 制御信号バス 10 スレッド順序情報伝達バス 11 メインメモリ 12 スレッド順序情報テーブル 13 比較器 14 整合性維持プロトコルシーケンサ 15 状態ビット 16 アドレスタグ 17 データアレイ 18 キャッシュライン 19 スレッド管理部 20 スレッド実行部 21 キャッシュメモリ 22 ネットワークインタフェース 23 ネットワーク 24 スレッド識別子格納部 25 スレッド順序情報伝達バス 26 整合性維持部 27 ディレクトリテーブル 28 メインメモリ 29 状態ビット 30 有効ビット 31 不一致ビット 32 メモリライン 33 スレッド管理部 34 スレッド実行部 35 キャッシュメモリ 36 整合性維持部 37 スレッド順序情報伝達バス 38 メインメモリ 39 スレッドIDタグ 40 状態ビット 41 アドレスタグ 42 データアレイ 43 キャッシュライン 44 キャッシュエントリ 45 要求アービタ 46 ライン間コピー部 47 ライトバッファ 48 ライトセレクタ 49 状態比較器 50 アドレス比較器 51 プロトコルシーケンサ 52 データセレクタ 53 スレッド順序情報信号 54 アクセス要求種別信号 55 要求アドレス信号 56 書き込みデータ 57 読み出しデータ 58 Hit/Miss信号 59 状態ビット 60 アドレスタグ 61 データアレイ 62 ライトマスク 63 キャッシュライン 64 書き込み動作1 65 書き込み動作2 66 書き込み動作3 67 シーケンサ 68 プロセッシングユニット 69 結合ネットワーク 70 データバンク 71 命令キャッシュ 72 実行ユニット 73 レジスタファイル 74 ARB(Address Resolution Buffer) 75 データキャッシュ 76 シングルプログラム 77 フューチャースレッド 78 スレッド生成命令 79 スレッド待ち合わせ命令 80 ARBエントリ 81 アドレス格納部 82 ロードビット 83 ストアビット 84 ストア値格納部 85 ステージ 86 Active ARB Window 87 処理要素 88 Zキャッシュ 89 デコーダ 90 メモリ階層 91 プルーニング・モニタ 92 比較機構 93 フェッチテーブル 97 記憶テーブル 95 エントリ 96 記憶コミット機構
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 Manoj Franklin,”M ulti−Version Cache s for Multiscalar Processors”,Procee dings of 1st Inter national Conferenc e on High Performa nce Computing,1995年 (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 - 12/12 G06F 9/46 G06F 15/16 - 15/173

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】それぞれが固有のキャッシュメモリを有す
    る複数のスレッド実行部と、前記複数のスレッド実行部
    におけるスレッド実行を管理するスレッド管理手段と、
    前記キャッシュメモリにおけるデータの整合性を維持す
    る手段である整合性維持手段とを有する並列処理システ
    ムであって、 前記 スレッド管理手段、スレッドの時間順序関係に関
    する情報を、前記整合性維持手段に対して送出するもの
    であり、 前記整合性維持手段は、あるスレッド実行部においてキ
    ャッシュミス発生時に所望するデータを読み出す際に、
    時間順序関係上、先行するスレッドを実行しているスレ
    ッド実行部が有するキャッシュメモリにメインメモリと
    不一致のデータがあれば、該不一致のデータを前記ある
    スレッド実行部に転送し、一方、あるスレッド実行部が
    データの書き込みを行うに、時間順序関係上、後続
    るスレッドを実行しているスレッド実行部が有するキャ
    ッシュメモリに同一アドレスのデータが保持されてい
    、該書き込みデータ、書き込みを行ったスレッド実
    行部が有するキャッシュメモリと共に、前記後続するス
    レッドを実行しているスレッド実行部が有するキャッシ
    ュメモリにも書き込むことにより、データの整合性制御
    を行うものである、 ことを特徴とする、並列処理システム。
  2. 【請求項2】複数のスレッドにおいてスレッド間は逐次
    的な実行順序関係を規定することによって、依存関係が
    先行スレッドから後続スレッドの単一方向に規定される
    ようなスレッド実行モデルを実行する並列処理システム
    であって、 前記スレッドを複数同時に実行するための複数のスレッ
    ド実行部と前記複数のスレッド実行部間で共有される共
    有メモリとを備え、 前記スレッド実行部はそれぞれ、スレッド実行に伴うデ
    ータの読み書きを高速に行うためのキャッシュメモリ
    と、前記キャッシュメモリの整合性を制御する整合性維
    持手段と、スレッド間の順序関係を伝達する手段とを
    るものであり、 前記各整合性維持手段の間バスによって接続され前記整合性維持手段は、自らに対応する 前記スレッド実
    行部が書き込み要求を行った際には、前記バスに書き込
    みアドレスとスレッド識別の信号を放送するものであ
    、 前記整合性維持手段は、前記バスを監視することによっ
    て、先行するスレツドの書き込みが生じ、かつ、自らに
    対応するキャッシュメモリが先行するスレッドの該書き
    込みのアドレスと同一アドレスのラインを保持している
    ことを検知した場合には、前記先行スレッドが書き込ん
    だデータを取り込んで、自らに対応するキャッシュメモ
    リに対して書き込み動作を行うものであり前記各整合性維持手段は、 後続するスレッドを実行して
    いるスレッド実行部のキャッシュメモリがミスを起こし
    た場合には、先行するスレッドを実行するスレッド実行
    部からデータの供給を受ける動作を行うように制御し、 逐次順序関係上、先行するスレッドを実行するスレッド
    実行部が書き込んだデータは後続のスレッドを実行する
    スレッド実行部が読み出し可能とし、 後続のスレッドを実行するスレッド実行部が書き込んだ
    データは先行のスレッドを実行するスレッド実行部に対
    しては書き込みを行う前のデータを続み出す制御を行
    い、 後続スレッドを実行するスレッド実行部が書き込んだデ
    ータは、先行スレッドが終了するまでは、前記共有メモ
    リに書き戻さないように制御して、データの整合性制御
    を行うものである、 ことを特徴とする、並列処理システム。
  3. 【請求項3】複数のスレッドにおいてスレッド間は逐次
    的な実行順序関係を規定することによって、依存関係が
    先行スレッドから後続スレッドの単一方向に規定される
    ようなスレッド実行モデルを実行する並列処理システム
    であって、 前記スレッドを複数同時に実行するための複数のスレッ
    ド実行部と、前記複数のスレッド実行部間で共有される
    共有メモリとを備え、前記複数のスレッド実行部と共有メモリとの間はネット
    ワークにより結合されており、記スレッド実行部は、それぞれ関連して設けられたキ
    ャッシュメモリを備えるものであり、 前記共有メモリに付随して、前記キャッシュメモリ間の
    整合性維持のためのディレクトリと、整合性維持手段
    備え、 前記整合性維持手段は、スレッドの順序情報を得ること
    によって逐次順序関係上、先行するスレッドを実行する
    スレッド実行部が書き込んだデータは、後続のスレッド
    を実行するスレッド実行部が読み出し可能とし、 後続のスレッドを実行するスレッド実行部が書き込んだ
    データは先行のスレッドを実行するスレッド実行部に対
    しては書き込みを行う前のデータを読み出すように制御
    し、 後続スレッドを実行するスレッド実行部が書き込んだデ
    ータは、先行スレッドが終了するまでは、前記共有メモ
    リに書き戻さないように制御することによって、データ
    の整合性制御を行うものである、 ことを特徴とする並列処理システム。
  4. 【請求項4】複数のスレッドを同時ないし時分割で実行
    する複数のスレッド実行部と、 スレッド実行に伴うデータの読み書きを高速に行うため
    前記複数のスレッドで共有されるキャッシュメモリ
    と、 キャッシュメモリを制御する整合性維持手段と、を備え
    た並列処理システムであって、 前記キャッシュメモリには、同一のアドレスに対するデ
    ータを複数のエントリで保持可能とし、各エントリ毎に
    スレッドの順序関係を示す識別の情報を格納し、前記整合性維持手段は 、逐次順序関係上、先行するスレ
    ッドを実行するスレッド実行部が書き込んだデータにつ
    いては後続のスレッドを実行するスレッド実行部が読み
    出し可能となるように制御し、 後続のスレッドを実行するスレッド実行部が書き込んだ
    データについては先行のスレッドを実行するスレッド実
    行部に対しては書き込みを行う前のデータを読み出す制
    御を行うようにして、データの整合性制御を行うもので
    ある、 ことを特徴とする並列処理システム。
  5. 【請求項5】前記キャッシュメモリへの最小書き込み単
    位毎に書き込み事象の発生を指示するフラグを備え、 前記フラグは、対応するスレッド実行部が書き込みを行
    った部分に対してセットされ、データを置き換えた時に
    はリセットされ、 先行スレッドが書き込み動作を行った際に、キャッシュ
    メモリに格納された後続スレッドに関連するデータに対
    して、その書き込み内容を反映させる動作を、前記フラ
    グがセットされていない部分のみに対して行い、データ
    の整合性制御を行う、請求項2〜4のいずれか一に記載
    の並列処理システム。
  6. 【請求項6】請求項2〜4のいずれかひとつに記載され
    た並列処理システムであって、 実行中の複数スレッド間に逐次的な実行順序関係を規定
    することによって、依存関係が先行スレッドから後続ス
    レッドの単一方向に限定されるようなスレッド実行モデ
    ルと、複数スレッド間で、共有メモリ上におけるデータ
    依存関係を単一方向へ限定せずに、並列時に実行するス
    レッド実行モデルとのいずれを並列処理システム上で実
    行するかに応じて 記整合性維持手段によりデータの整合性制御を行う
    、または、メモリへの書き込みを該書き込み対象のア
    ドレスと同一アドレスのデータを保持するすべてのキャ
    ッシュメモリに反映させることによりデータの整合性制
    御を行うか、 を切り替えることを特徴とする並列処理システム。
  7. 【請求項7】アドレス空間毎に前記整合性維持手段によ
    りデータの整合性制御を行うか否かを指定するテーブル
    を備え、 登録したアドレス空間毎に、前記整合性維持手段により
    データの整合性制御を行うか、または、メモリへの書き
    込みを該書き込み対象のアドレスと同一アドレスのデー
    タを保持するすべてのキャッシュメモリに反映させるこ
    とによりデータの整合性制御を行うか、を切り替える
    とを特徴とする請求項記載の並列処理システム。
JP08289179A 1996-10-11 1996-10-11 並列処理システム Expired - Fee Related JP3139392B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP08289179A JP3139392B2 (ja) 1996-10-11 1996-10-11 並列処理システム
US08/946,061 US6122712A (en) 1996-10-11 1997-10-07 Cache coherency controller of cache memory for maintaining data anti-dependence when threads are executed in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08289179A JP3139392B2 (ja) 1996-10-11 1996-10-11 並列処理システム

Publications (2)

Publication Number Publication Date
JPH10116192A JPH10116192A (ja) 1998-05-06
JP3139392B2 true JP3139392B2 (ja) 2001-02-26

Family

ID=17739800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08289179A Expired - Fee Related JP3139392B2 (ja) 1996-10-11 1996-10-11 並列処理システム

Country Status (2)

Country Link
US (1) US6122712A (ja)
JP (1) JP3139392B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6950908B2 (en) 2001-07-12 2005-09-27 Nec Corporation Speculative cache memory control method and multi-processor system
JP2007519101A (ja) * 2003-12-30 2007-07-12 インテル コーポレイション 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理
WO2011158320A1 (ja) * 2010-06-14 2011-12-22 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
US6298411B1 (en) * 1999-01-05 2001-10-02 Compaq Computer Corporation Method and apparatus to share instruction images in a virtual cache
US6314491B1 (en) * 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
WO2001053951A1 (fr) * 2000-01-19 2001-07-26 Fujitsu Limited Dispositif et procede de commande de memoire
DE10061001B4 (de) * 2000-12-08 2005-05-04 Robert Bosch Gmbh Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug, sowie Speicherelement und Steuerprogramm hierfür
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
JP2002197073A (ja) * 2000-12-25 2002-07-12 Hitachi Ltd キャッシュ一致制御装置
US20030041215A1 (en) * 2001-08-27 2003-02-27 George Robert T. Method and apparatus for the utilization of distributed caches
US20050210204A1 (en) * 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
WO2004068361A1 (ja) * 2003-01-27 2004-08-12 Fujitsu Limited 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US8266379B2 (en) * 2003-06-02 2012-09-11 Infineon Technologies Ag Multithreaded processor with multiple caches
JP3981070B2 (ja) * 2003-12-26 2007-09-26 株式会社東芝 キャッシュリプレース装置及びキャッシュリプレース方法
US7363427B2 (en) * 2004-01-12 2008-04-22 Hewlett-Packard Development Company, L.P. Memory controller connection to RAM using buffer interface
US7574439B2 (en) * 2004-05-20 2009-08-11 International Business Machines Corporation Managing a nested request
JP4803983B2 (ja) * 2004-09-14 2011-10-26 パナソニック株式会社 演算処理装置
US7664127B1 (en) * 2005-04-05 2010-02-16 Sun Microsystems, Inc. Method for resolving mutex contention in a network system
US20060259701A1 (en) * 2005-05-16 2006-11-16 Texas Instruments Incorporated Providing cache status information across multiple cache levels
US7779206B2 (en) * 2005-05-16 2010-08-17 Texas Instruments Incorporated Cache inspection with inspection bypass feature
US7603521B2 (en) * 2005-05-16 2009-10-13 Texas Instruments Incorporated Prioritizing caches having a common cache level
US20060259696A1 (en) * 2005-05-16 2006-11-16 Texas Instruments Incorporated Determining differences between cached copies of an address
US7991959B2 (en) * 2005-05-16 2011-08-02 Texas Instruments Incorporated Visualizing contents and states of hierarchical storage systems
US7739453B2 (en) * 2005-05-16 2010-06-15 Texas Instruments Incorporated Providing information associated with a cache
JP4723313B2 (ja) * 2005-08-24 2011-07-13 パナソニック株式会社 画像処理装置
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
CN101449250B (zh) * 2006-05-30 2011-11-16 英特尔公司 用于高速缓存一致性协议的方法、装置及系统
US20080046684A1 (en) * 2006-08-17 2008-02-21 International Business Machines Corporation Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
US7502893B2 (en) * 2006-10-26 2009-03-10 Freescale Semiconductor, Inc. System and method for reporting cache coherency state retained within a cache hierarchy of a processing node
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US9026742B2 (en) * 2007-12-21 2015-05-05 Freescale Semiconductor, Inc. System and method for processing potentially self-inconsistent memory transactions
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
CN102171650B (zh) * 2008-11-24 2014-09-17 英特尔公司 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置
US9189233B2 (en) 2008-11-24 2015-11-17 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US20110119469A1 (en) * 2009-11-13 2011-05-19 International Business Machines Corporation Balancing workload in a multiprocessor system responsive to programmable adjustments in a syncronization instruction
JP5429396B2 (ja) 2010-10-05 2014-02-26 富士通株式会社 情報処理装置、情報処理プログラム、および情報処理方法
US9069876B2 (en) * 2011-05-25 2015-06-30 Nokia Corporation Memory caching for browser processes
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US20150058529A1 (en) * 2013-08-21 2015-02-26 Sandisk Technologies Inc. Systems and methods of processing access requests at a data storage device
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
JP5776810B2 (ja) * 2014-03-20 2015-09-09 富士通株式会社 マルチプロセッサシステム、制御プログラム、および制御方法
CN105868123B (zh) * 2016-04-07 2018-10-09 武汉数字派特科技有限公司 一种并发数据的缓存装置及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724549A (en) * 1992-04-06 1998-03-03 Cyrix Corporation Cache coherency without bus master arbitration signals
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
KR100295074B1 (ko) * 1992-12-22 2001-09-17 리패치 응용주문형집적회로인에러정정코드메모리제어기
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5740448A (en) * 1995-07-07 1998-04-14 Sun Microsystems, Inc. Method and apparatus for exclusive access to shared data structures through index referenced buffers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Manoj Franklin,"Multi−Version Caches for Multiscalar Processors",Proceedings of 1st International Conference on High Performance Computing,1995年

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6950908B2 (en) 2001-07-12 2005-09-27 Nec Corporation Speculative cache memory control method and multi-processor system
JP2007519101A (ja) * 2003-12-30 2007-07-12 インテル コーポレイション 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理
WO2011158320A1 (ja) * 2010-06-14 2011-12-22 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
JP5360299B2 (ja) * 2010-06-14 2013-12-04 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
US8996820B2 (en) 2010-06-14 2015-03-31 Fujitsu Limited Multi-core processor system, cache coherency control method, and computer product
US9390012B2 (en) 2010-06-14 2016-07-12 Fujitsu Limited Multi-core processor system, cache coherency control method, and computer product

Also Published As

Publication number Publication date
US6122712A (en) 2000-09-19
JPH10116192A (ja) 1998-05-06

Similar Documents

Publication Publication Date Title
JP3139392B2 (ja) 並列処理システム
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
US7082601B2 (en) Multi-thread execution method and parallel processor system
US5408629A (en) Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system
US6606704B1 (en) Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6694412B2 (en) Multiprocessor digital data processing system
US5692149A (en) Block replacement method in cache only memory architecture multiprocessor
US20040073755A1 (en) Broadcast invalidate scheme
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
US20040073738A1 (en) Scalable efficient I/O port protocol
JPH0775010B2 (ja) 多重処理システムのコヒーレンス手段
EP0372201B1 (en) Method for fetching potentially dirty data in multiprocessor systems
JP2002182976A (ja) マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化
JP4767361B2 (ja) キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
JP2005234854A (ja) マルチプロセッサシステム
JP2000047887A (ja) 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
US5875468A (en) Method to pipeline write misses in shared cache multiprocessor systems
JPH0567976B2 (ja)
CA2019300C (en) Multiprocessor system with shared memory
EP1131702B1 (en) Improved handling of the results of speculatively executed jobs in a multiprocessing system
JP2002163121A (ja) 仮想マルチスレッドプロセッサ及びスレッド実行方法
JP2602241B2 (ja) 並列計算機
JPH10187464A (ja) マルチスカラ・プログラムを作成する方法およびシステム
JP3925854B2 (ja) マルチ・プロセッサ・システムにおけるプログラム
JP2002229780A (ja) 大規模データパス・アーキテクチャの実行機構

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20001114

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

Free format text: PAYMENT UNTIL: 20071215

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20081215

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20091215

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20091215

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20101215

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20101215

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20111215

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20111215

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20121215

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20121215

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20131215

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees