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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
Description
し、特に複数のスレッドを同時に実行する高性能マイク
ロプロセッサのキャッシュメモリの制御装置に関する。
より詳細には、本発明は、逐次実行の際の実行順序が定
まっているような複数スレッドを並列実行するようなシ
ステムのキャッシュメモリの制御装置に関する。
ログラムを複数の命令流(「スレッド」という)群に分
割して、これらを並列に実行することによって、性能を
向上させるプログラム実行方法として、マルチスレッド
実行方法が数多く提案されている。
レッドはスレッド生成を意味するフォーク動作によって
生成される。ここでは、フォーク動作を行なったスレッ
ドを「親スレッド」、生成された新しいスレッドを「子
スレッド」と呼ぶ。
グラムにおいて、ある規定された動作を行なった後に消
滅する。すなわち、プログラム実行過程において、数々
のスレッドの生成と終了が繰り返されることになる。
などのスレッド実行部に割り当てられる。そして、スレ
ッド実行部が物理的に複数存在するシステムにおいて
は、複数のスレッドを同時に実行することが可能とな
り、逐次処理からの性能向上が期待できる。
ッドを割り当てることによって、同期ミスや、資源競
合、キャッシュミスが生じた際に、現在実行しているス
レッドを待機状態にして、別のスレッドを起動すること
によって、これらの要因による遅延を見かけ上隠蔽し、
資源の利用効率をあげることが可能になる。
した、代表的な文献としては、例えば、文献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)などがあげられる。
法では、並列性が限られる問題については、効率的に、
並列実行することはできなかった。
細粒度スレッドを効率的に実行するスレッド実行方法と
実行装置が提案されている。例えば、細粒度スレッドの
並列処理プロセッサの例として、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」
という)があげられる。
Processor”(マルチスカラプロセッサ)では、単一の
プログラムをいくつかの基本ブロックの集合である「タ
スク」に分割し、これを並列に実行処理できるプロセッ
サで処理する。
構成例を示す図である。
ロセッサは、シーケンサ67、プロセッシングユニット
68、結合ネットワーク69、及びデータバンク70を
備えて構成されている。
ッシュ71、実行ユニット72、及びレジスタファイル
73を備えて構成され、プロセッシングユニット68は
システムに複数存在する。また、プロセッシングユニッ
ト68に対応してデータバンク70も複数存在し、デー
タバンク70は、ARB(Address Resolution Buff
er;アドレスレゾルーションバッファ)74、データキ
ャッシュ75を備える。
ロー情報が記載されたタスク記述子(task descripto
r;タスクデスクリプタ)を用いて、シーケンサ67に
よって動的/静的に行なわれ、各プロセッシングユニッ
ト68にタスクを割り付ける。シーケンサ67は、タス
クをプロセッシングユニットに割り付けると、次のタス
クの割り付けを行なうべく、タスク記述子を調べる。
は、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」という)の
記載が参照される。
SMアーキテクチャにおける、スレッド実行方法の概念
を説明するための図である。
中に、スレッド生成命令78とスレッド待ち合わせ命令
79が組み込まれている。スレッド生成命令78を実行
すると、実行を先回りするフューチャースレッド77を
生成する。フューチャースレッド77はスレッド待ち合
わせ命令79まで実行して、本来の実行が追いつくのを
待ち合わせて結果をマージする。このフューチャースレ
ッド77は本来の実行と並列に動作することによって、
速度向上を図るというものである。
開平5−282264号公報、及び特開平5−2822
66号公報においてそれぞれ提案されている自己並列化
式のコンピュータシステムにおけるMSIS(単一命令
シーケンスの多重ストリーム化)は、動的に並列化を行
うことが大きな特徴として挙げられるが、逐次ストリー
ムの並列処理と云う観点では、ほぼ同様の処理方式であ
ると言える。
ッド間に逐次的な時間順序関係が存在することがあげら
れる。従って、先行するスレッドがデータを読み出す前
に、後続のスレッドが同一アドレスに対して将来の値を
書き込んだ場合、先行スレッドは誤った値を読んでしま
うという問題が生じる。これを「データの逆依存関係」
と呼ぶ。
Processor)の手法ではARB、また上記MSISでは
OSC制御部(オペランド記憶比較制御部)によって、
全てのロード、ストアについての情報を記憶しておき、
後続スレッドのストアデータが先行スレッドのロードに
対して働かないような制御を行い、誤った値が読み込ま
れるのを防いでいる。
タバンクにおけるARBの構成をブロック図にて示した
ものである。図25を参照すると、ARBエントリ80
は、アドレス格納部80と、各ステージ85毎のロード
ビット82、ストアビット83、ストア値格納部84
と、から構成されている。
に、ヘッド(Head)/テイル(Tail)ポインタが設け
られ、このポインタ間で示されるステージ85がアクテ
ィブARBウインドウ(Active ARB Window)86
として、有効に扱われる。
リの読み出しや書き込みを行った場合には、それぞれの
実行ユニット72に対応するステージ85のロードビッ
ト82をセット、もしくはストアビット83をセット
し、ストア値格納部84にストアした値を書き込む。読
み出しの際には、対応するステージ85よりも前のステ
ージ85にストアビット83がセットされているステー
ジ85があれば、そのステージ85のストア値格納部8
4の値を供給する。また、ストアを行った場合に後続ス
レッドのステージ85にロードビット82がセットされ
ている場合には、後続スレッドはそのロード命令以降の
実行を取り消して再実行するという投機的実行をサポー
トしている。
の構成を示すブロック図である。図26を参照すると、
MSISにおいても、複数の処理要素87が存在し、メ
モリ階層90に対するロードは、フェッチテーブル9
3、ストアは記憶テーブル94にそれぞれ記憶をしてお
き、比較機構92を用いることによって、ARBと同様
の機能を実現している。
たARB、OSC制御部はともに、後続スレッドの書き
込みアドレスを記憶し比較を行う必要が有るため、専用
でかつ複雑なハードウェアを用意することが必要である
という問題を有している。
は、実行する問題の性質によって、異なるため、メイン
メモリに対してのアクセスが少ないような問題では、ハ
ードウェアが無駄となったり、一方、メインメモリに対
してのアクセスが多い問題では、アドレス/データを登
録するエントリ数が足りなくなって並列度が制限される
という問題が有った。
に、並列度が潤沢に存在する場合には、時間的な順序関
係の存在しない従来スレッド間で、並列処理を行った方
が有利であるが、そのような処理を行う際には、AR
B、OSC制御部共に用いられないものとなり、逐次的
な時間順序関係を持つスレッド並列実行システムとの共
用は、コスト的に不利になると言う問題があった。
なされたものであって、その目的は、このような並列処
理システム上における逐次的な時間順序関係を持った複
数スレッドが、同一のメモリ空間を用いて同時に実行す
る際に、問題となるデータの逆依存関係を、キャッシュ
メモリを用いて自動的に解消する、ことを可能としたキ
ャッシュメモリの制御装置を提供することにある。
め、本発明は、その概略として、並列処理システム上に
おける逐次的な時間順序関係を持った複数のスレッド
が、同一のメモリ空間を用いて同時に実行する際に、問
題となるデータの逆依存関係を解消するために、キャッ
シュメモリに対して、整合性維持手段を付加してなるも
のである。
においてスレッド間は逐次的な実行順序関係を規定する
ことによって、依存関係が先行スレッドから後続スレッ
ドの単一方向に規定されるようなスレッド実行モデルで
あって、前記スレッドを複数同時に実行するために複数
のスレッド実行部を備え、前記複数のスレッド実行部は
それぞれ、スレッド実行に伴うデータの読み書きを高速
に行うためのキャッシュメモリと、前記キャッシュメモ
リの整合性を制御する整合性維持手段と、スレッド間の
順序関係を伝達する手段と、を備え、前記複数のスレッ
ド実行部間で共有する共有メモリを、具備してなる並列
システムであって、前記各整合性維持手段の間をバスに
よって接続し、前記スレッド実行部が書き込み要求を行
った際には、前記バスに書き込みアドレスとスレッド識
別の信号を放送し、前記各整合性維持手段は前記バスを
監視することによって、先行するスレッドの書き込みが
生じ、同一アドレスのラインを保持しているキャッシュ
メモリは、前記先行スレッドが書き込んだデータを取り
込んで、対応するキャッシュメモリに対して書き込み動
作を行い、後続スレッド実行部のキャッシュメモリがミ
スを起こした場合には、先行スレッド実行部からデータ
の供給を受ける動作を行うように制御し、逐次順序関係
上、先行するスレッドを実行するスレッド実行部が書き
込んだデータは後続のスレッドを実行するスレッド実行
部が読み出し可能とし、後続のスレッドを実行するスレ
ッド実行部が書き込んだデータは先行のスレッドを実行
するスレッド実行部に対しては書き込みを行う前のデー
タを読み出す制御を行い、後続スレッドを実行するスレ
ッド実行部が書き込んだデータは、先行スレッドが終了
するまでは、共有メモリに書き戻さないように制御し
て、データの整合性制御を行う、ことを特徴とする。
に説明する。
する。本発明は、図1において、スレッド1に後続する
スレッド2が物理的な時刻で先行してライト(write)
オペレーション(例えば100番地への書き込み)を実
行した場合でも、先行スレッドであるスレッド1のリー
ド(read)オペレーション(100番地の読み出し)で
は、スレッド2のライトオペレーション実行前の値が読
み出されることを、キャッシュメモリによって保証する
ように構成したものである。本発明においては、従来方
式との親和性の大きいキャッシュメモリを用いることに
よって、時間的な順序関係の存在しない従来方式のスレ
ッド間の並列処理と、の共用を容易に実現したものであ
る。
て、スレッドを複数同時に実行するために複数のスレッ
ド実行部(図2の2)を備え、複数のスレッド実行部は
それぞれ、スレッド実行に伴うデータの読み書きを高速
に行うためのキャッシュメモリ(図2の3)と、このキ
ャッシュメモリの整合性を制御する整合性維持手段(図
2の4)と、スレッド間の順序関係情報を伝達する手段
(図2の10等)と、を備え、複数のスレッド実行部間
で共有する共有メモリを、供え、各整合性維持手段の間
を共有バス(図2の6)によって接続する。
には、バス(図2の6)に書き込みアドレスとスレッド
識別の信号を放送し、各整合性維持手段は、このバスを
監視することによって、先行するスレッドの書き込みが
生じ、同一アドレスのラインを保持しているキャッシュ
メモリは、先行スレッドが書き込んだデータを取り込ん
で、対応するキャッシュメモリに対して書き込み動作を
行い、後続スレッド実行部のキャッシュメモリがミスを
起こした場合には、先行スレッド実行部からデータの供
給を受ける動作を行うように制御し、逐次順序関係上、
先行するスレッドを実行するスレッド実行部が書き込ん
だデータについては後続のスレッドを実行するスレッド
実行部が読み出し可能とし、後続のスレッドを実行する
スレッド実行部が書き込んだデータについては、先行の
スレッドを実行するスレッド実行部に対しては、後続ス
レッドが書き込みを行う前のデータを読み出すように制
御し、後続スレッドを実行するスレッド実行部が書き込
んだデータは、先行スレッドが終了するまでは、共有メ
モリに書き戻さないように制御して、データの整合性制
御を行う。
は、スレッド間に実行の逐次的な時間順序関係を持つ複
数スレッド間で並列実行を行う並列処理システム上にお
ける、複数スレッドが同一のメモリ空間を用いて並列に
実行する際に問題になるデータの逆依存関係を、キャッ
シュメモリを用いて自動的に解消する。
手段は、複数スレッド間の逐次順序と当該キャッシュエ
ントリの実行順序上の位置を把握することによって、逐
次順序関係上、先行するスレッドを実行するスレッド実
行部が書き込んだデータは後続のスレッドを実行するス
レッド実行部のキャッシュメモリに対して反映させ、後
続のスレッドを実行するスレッド実行部が書き込んだデ
ータは先行のスレッドを実行するスレッド実行部のバッ
ファメモリに対して反映させないという、データの整合
性制御を行う。
リから必要なデータを取得するがあるため、後続スレッ
ドの書き込みはキャッシュメモリから書き戻すことを禁
止し、先行スレッドが終了後に書き戻しが許可される。
毎に分散している場合でも、スレッド実行部間で共有し
ている場合でも実現可能である。但し、共有している場
合には、単一アドレスに対して複数のラインを持つこと
が可能なマルチウェイのキャッシュメモリシステムにす
る必要が有る。
いて、複数のスレッド実行部(図7の20)と、複数の
スレッド実行部にそれぞれ付随して設けられたキャッシ
ュメモリ(図7の21)と、複数のスレッド実行部間で
共有する共有メインメモリ(図7の28)と、を備え、
その間がネットワークによって結合され、共有メインメ
モリ(図7の26)に付随して、前記キャッシュメモリ
間の整合性維持のためのディレクトリ(図7の27)
と、整合性維持手段(図7の26)と、を備えて構成さ
れている。
報を得ることによって逐次順序関係上、先行するスレッ
ドを実行するスレッド実行部が書き込んだデータは、後
続のスレッドを実行するスレッド実行部が読み出し可能
とし、後続のスレッドを実行するスレッド実行部が書き
込んだデータは先行のスレッドを実行するスレッド実行
部に対しては書き込みを行う前のデータを読み出すよう
に制御し、後続スレッドを実行するスレッド実行部が書
き込んだデータは、先行スレッドが終了するまでは、前
記共有メモリに書き戻さないように制御することによっ
て、データの整合性制御を行う。
において、複数のスレッドを同時ないし時分割で実行す
るスレッド実行部(図11の34)を備え、スレッド実
行部には、スレッド実行に伴うデータの読み書きを高速
に行うための複数のスレッド間で共有されるキャッシュ
メモリ(図11の35)と、キャッシュメモリを制御す
るキャッシュ制御手段(図11の36)と、を備え、キ
ャッシュメモリには、同一のアドレスに対するデータを
複数のエントリで保持可能とし、各エントリ毎にスレッ
ドの順序関係を示す識別の情報を格納し、キャッシュ制
御手段(図11の36)によって、逐次順序関係上、先
行するスレッドを実行するスレッド実行部が書き込んだ
データについては、後続のスレッドを実行するスレッド
実行部が読み出し可能とし、後続のスレッドを実行する
スレッド実行部が書き込んだデータについては先行のス
レッドを実行するスレッド実行部に対しては書き込みを
行う前のデータを読み出す制御を行うようにして、デー
タの整合性制御を行う。
細に説明すべく、本発明の実施例を以下に図面を参照し
て説明する。なお、以下に例示する実施例は、あくまで
本発明を説明するためのものであり、本発明を限定する
ためのものではないことは勿論である。
処理システムの構成を示すブロック図である。図2を参
照すると、本実施例に係る並列処理システムは、4スレ
ッド並列実行型の並列処理システムとして構成され、第
1〜第4のスレッド実行部#0(2a)、#1(2
b)、#2(2c)、#3(2d)は、スレッド管理部
1と接続されている。なお、図2は、本発明の一実施例
を例示したものであり、本発明において、スレッド実行
部の個数が4個に限定されるものでないことは勿論であ
る。
するキャッシュメモリ#0(3a)〜#3(3d)と接
続され、キャッシュメモリ3a〜3dは、それぞれ整合
性維持部#0(4a)〜#3(4d)を介して共有バス
6と接続される。
ス8、及び制御信号バス9から構成されており、制御信
号バス9はデータバス7やアドレスバス8上の信号の意
味等を示す信号を伝達する用途に用いられる。
ッド順序情報伝達バス10、及び対向して設けられたス
レッド識別子格納部#0(5a)〜#3(5d)とも接
続されている。
ド管理部1とも接続され、スレッド管理部1からのスレ
ッドの先行/後続関係の情報を、各整合性維持部4a〜
4dに伝える。また、メインメモリ11は、各スレッド
実行部2a〜2dにて共有され、共有バス6を介して接
続されている。
了を管理する。スレッド管理部1は、スレッドの生成順
にスレッドIDが割り付け、このスレッドIDを、スレ
ッド識別子格納部5に通知する。なお、スレッド実行
部、スレッド識別子格納部、整合性維持部について個々
を特定しない場合、符号2、3、4で参照する。
1から通知されたスレッドIDをスレッド終了まで保持
する。
部2の要求や、共有バス6上に放送される信号に基づい
て、キャッシュメモリ3の整合性の維持を行う。
の構成をブロック図にて示す。なお、整合性維持部4a
〜4dはいずれも同一構成とされるため、図3には、そ
の一つの構成が示されている。
レッド順序情報テーブル12と、比較器13a、13
b、13cと、整合性維持プロトコルシーケンサ14
と、を備えて構成される。
ド順序情報伝達バス10によって伝えられるスレッド順
序情報を受け取り、各スレッドIDがどの順序に位置す
るかを保持しておく。すなわち、スレッドIDに対して
対応する順序が格納保持される。
12を、スレッド実行部2と、共有バス6上に放送され
る信号を発したスレッドの順序と、比較し、どちらか先
行するものと比較した結果を整合性維持プロトコルシー
ケンサ14に伝達する。
リ3の1エントリ(キャッシュライン)の構成を示した
ものである。
ャッシュライン18は、状態ビット15、アドレスタグ
16、及びデータアレイ17を含んで構成され、キャッ
シュライン18が複数集まってキャッシュメモリ3を構
成する。
効で有るか否かという情報と、メインメモリとキャッシ
ュメモリの内容が一致しているか否かとい情報と、更
に、不一致の場合には、このキャッシュメモリに対応す
るスレッド実行部が書き込みを行うことによって不一致
となったものを区別することによって、表1に示す、4
状態を表す。
維持部4は複数キャッシュ間の時間順序関係を保ちなが
ら整合性を維持する。
性維持部4における整合性維持プロトコルシーケンサ1
4の整合性維持のアルゴリズムを説明するためのフロー
チャートであり、図5は、リードミスが生じた時の動作
アルゴリズムを示し、図6は、他のスレッド実行部2が
書き込み動作を起こした時の動作アルゴリズムを示して
いる。なお、リードヒット時には、対応するキャッシュ
メモリ3がデータを供給するのみの動作であり、また、
ライトミス時にはリードミス動作とライトヒットの動作
が続けて行われるものとする。
を順を追って具体的に説明する。以下の例では、スレッ
ド実行部2aがメモリに対する動作を起こした場合につ
いて説明する。
レスのデータがキャッシュメモリ3aに存在しない場
合、すなわちキャッシュミスが生じた際に(図5の50
1参照)、整合性維持部4aは、共有バス6の使用権を
確保する。
dに属するキャッシュメモリ3b、3c、3dのキャッ
シュライン18中に、当該アドレスのエントリを保持し
ているか否かを調べる。これは、共有バス6のアドレス
バス8に対して要求アドレスを、制御信号バス9に対し
て、アクセスの種類として、リードミスによるデータ要
求であるという情報とスレッドIDを放送することによ
って行われる(図5のステップ502)。
持部4b、4c、4dは、バスの信号を監視することに
より、アクセスの種類(リード/ライト)とアドレスを
得る。このアドレスを対応するキャッシュメモリ3b、
3c、3dのキャッシュライン18中に同一アドレスの
ラインが存在するか否か調べる。もし、同一アドレスの
ラインが存在し、複数存在した場合に、それが「C状態
(Clean)」のみであれば、そのいずれかがデータ
をデータバスに放送する。
fied)状態」のラインが存在した場合(図5のステップ
505のYes)でも、要求を行ったスレッドIDより
も、当該キャッシュメモリ3に対応するスレッドIDが
先行する場合(図5のステップ506のYes)には、
そのアドレスに対応するデータを、データバス7に放送
する。この場合、この条件内に、複数のラインが存在す
る場合には、先行スレッドで、かつ、要求スレッドID
に最も近い整合性維持部4からデータを供給するよう
に、バスの調停を行う。
に対応するキャッシュライン18に、同一アドレスライ
ンが存在しない場合には、メインメモリ11からデータ
をデータバス7に放送する(図5のステップ504)。
の放送されたデータを受け取ることによって、所望デー
タをキャッシュライン18に取り込むことができる。
dから供給され、そのラインが「D状態」もしくは「D
SM状態」の場合には、要求を行ったキャッシュメモリ
3aの状態ビット15は「D状態」にセットされ(図5
のステップ508)、それ以外の場合には「C状態」に
セットされる。
メモリでは、リードミス時のデータ供給先が任意の他の
キャッシュ、あるいはメインメモリであるのに対して、
本実施例においては、スレッドIDによる順序関係によ
って、データの供給方法に制約を設けることによって、
後続スレッドが書き込んだデータが、先行スレッドに
は、供給されないようにして、スレッド間の時間順序関
係を保つ。
明する。キャッシュメモリ3aへの書き込みが生じた場
合には、整合性維持手段4aは、共有バス6のアクセス
権を確保して、書き込みを行うアドレスを他のキャッシ
ュメモリ3b、3c、3dに伝達する必要が有る。
スバス8にアドレスを、制御信号バス9に対しては、
「書き込みである」という情報とスレッドIDを放送す
る。また、データバス7に対して書き込んだデータを同
時に放送する。
送された場合、共有バス6のアクセス権を持っていない
整合性維持部4b、4c、4dは、図6に示すアルゴリ
ズムによって、整合性の維持を行う。
レスバス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状態」にセットされる。
は、後続スレッドのキャッシュメモリ3にも自動的に反
映されるが、後続スレッドの書き込みは先行スレッドの
キャッシュメモリ3には反映されないため、スレッド間
の時間順序関係が保たれる。
ドのDSM状態のキャッシュライン18は、メインメモ
リ11に対して書き戻しは禁止される。これは、同一ア
ドレスを先行スレッドが要求した場合に、メインメモリ
11から、後続スレッドが書き込みを行う前の値として
供給するためである。他のアドレスのデータをキャッシ
ュメモリ3に格納するために、後続スレッドのメインメ
モリと不一致状態のキャッシュエントリ18を書き戻す
必要が生じた場合には、後続スレッドは実行を中断し、
先行スレッドが終了するのを待つ必要が有る。また、先
行スレッドが終了する際には、「DSM状態」のキャッ
シュライン18のデータアレイ17の内容をメインメモ
リ11に書き戻す必要が生じる。
は、同一アドレスを持ち「DSM状態」であるキャッシ
ュライン18が他のスレッド実行部2に属するキャッシ
ュに存在するので、メインメモリへの書き戻しは行う必
要がない。また、「D状態」のまま、先行するスレッド
が全て終了した場合には、「C状態」に変更される。
ッシュ制御を行うことによって、スレッド間の時間順序
関係は保ち、データの逆依存関係を、キャッシュメモリ
を用いて自動的に解消することが実現される。但し、後
続スレッドが既に書き込んだり読み出したりするアドレ
スに対して、先行スレッドが、後に、同一アドレスに書
き込みを起こした場合には、スレッド間の時間順序関係
をこのままでは保つことはできない。この場合には、ス
レッド間にソフトウェアによって同期を取る必要が生じ
る。
処理システムの構成を示すブロック図である。図7を参
照すると、本実施例に係る並列処理システムは、4スレ
ッド並列実行型の並列処理システムとして構成されてい
る。なお、以下では図2に示した前記第1の実施例と本
実施例との相違点を主に説明し、重複を回避するため同
一部分の説明は省略する。
た前記第1の実施例における共有バス6に代えて、ネッ
トワーク23によって、キャッシュメモリ21と、メイ
ンメモリ28を接続している。このため、本実施例にお
いては、ネットワークインタフェース22が新たに追加
され、整合性維持部26は共有として、メインメモリ1
1に直結されている。また、メインメモリ11に付随し
て、ディレクトリテーブル27が接続されている。
1とディレクトリテーブル27の構成の一例を示したも
のであり、各スレッド実行部20に対応した状態ビット
29によって、ディレクトリテーブル27が構築され、
メインメモリ28におけるメモリライン32との対応が
とられている。
7の状態ビット29は、スレッド実行部19に付随する
キャッシュメモリ21にコピーが存在するか否かを示す
有効ビット30と、そのコピーが所属するスレッド実行
部20によって書き込みが行われたか否かを示す不一致
ビット31と、から構成されている。
ここでは「D状態」と呼ぶ。また、スレッド管理部19
からは、整合性維持部26にスレッドの実行状態が変わ
る毎に対してスレッド順序情報をスレッド情報伝達バス
25が伝えられる。
0からのメインメモリ28アクセス要求に対して、図
9、及び図10に示すアルゴリズムによってキャッシュ
間の整合性を維持する。
モリに対する動作を起こした場合について説明する。は
じめに読み出し時の動作について説明する。
ドレスのデータがキャッシュメモリ21aに存在しない
場合、すなわちキャッシュミスが生じると(図9の90
1)、ネットワーク23を介して、データの読み出し要
求を整合性維持部26に対して行う。
ル27を調べ(図9のステップ902)、「D状態」の
エントリが存在し(図9のステップ903でYes)、
且つその「D状態」のエントリが先行スレッドのエント
リであれば(図9のステップ904でYes)、「D状
態の」エントリを持つキャッシュメモリ21に対してデ
ータの転送を要求する。要求されたキャッシュメモリ2
1は、要求ラインのデータを要求したスレッド実行部2
0aのキャッシュメモリ21aに対して転送する(図9
のステップ907)。
ら、所望データを要求したスレッド実行部20aのキャ
ッシュメモリ21aに対してデータ転送する(図9のス
テップ904、906参照)。
0aに対応するディレクトリテーブル27の状態ビット
29aの有効ビット(Valid ビット)30をセッ
トする。
と、書き込み時は、キャッシュのヒット/ミスに拘らず
ネットワーク23を介してデータの書き込み要求を、整
合性維持部26に対して行う。
作を、またキャッシュミス時の書き込みは、キャッシュ
ミス時の読みだし動作後に、以下の動作を行う。
ル27を調べ、有効ビット30がセットされたエントリ
のうち、後続スレッドのエントリに対して、書き込みデ
ータを送信する(図10のステップ1006)。また、要求
スレッド実行部20に対応するディレクトリテーブル2
7の不一致ビット31をセットする。
施例と同様に、先行スレッドが存在する場合、後続スレ
ッドの「D状態」のキャッシュメモリ21のエントリ
は、メインメモリ28に対して書き戻しは禁止され、メ
インメモリ28には、最先行スレッド以外のスレッドの
書き込み結果が反映されることを抑止し、最先行スレッ
ドの読み出し要求の正当性を維持するこれによって、先
行スレッドの書き込みは、後続スレッドのキャッシュメ
モリ21にも自動的に反映されるが、後続スレッドの書
き込みは先行スレッドのキャッシュメモリ21には反映
されないため、スレッド間の時間順序関係が保たれる。
列処理システムの構成を示すブロック図である。本実施
例に係る並列処理システムは、4スレッド並列実行型の
並列処理システムである。
シュメモリ35を、各スレッド実行部#0(34a)、
#1(34b)、#2(34c)、#3(34d)で共
有する構成としたものである。
モリ35の1エントリ44の構成を示したものである。
は、特定のアドレスのデータが複数のキャッシュライン
43に格納されることができる構造(マルチウェイキャ
ッシュ)として構成され、図12を参照すると、4ウェ
イ(way)構造とされている。
は、通常のマルチウェイキャッシュに比して、各ライン
には、スレッドIDタグ39を格納するように拡張され
ている。また、キャッシュの状態ビット40は、表2に
示す状態を表す。
モリ35と付随する整合性維持部36について、その構
成の詳細を示したブロック図である。
ャッシュメモリ35を共有するために、各スレッド実行
部#0(34a)〜#3(34d)からの要求を調停す
る役割を担う。
レス比較器50、プロトコルシーケンサ51によって、
キャッシュのヒット/ミスを判定し、さらに、読み出し
時には、キャッシュの各ライン43(図12参照)から
供給されたデータの選択、書き込み時には書き込むライ
ン43を決定する。ライトバッファ47は、データアレ
イ42の一部に対して書き込みを行うために、以前のデ
ータアレイ42の値を読み込んでおいて、必要な部分を
修正し、再びデータアレイ42に書き戻すためのバッフ
ァである。
の動作を順を追って具体的に説明する。まず、本実施例
における、キャッシュヒットの状態は、表3に示す3種
類が存在する。以下、自スレッドよりも先行するスレッ
ドを「親スレッド」、後続のスレッドを「子スレッド」
と呼ぶことにする。
へのアクセス要求があった場合、与えられた要求アドレ
ス信号55の一部によって、キャッシュエントリ44を
選択する。
レッドIDタグ39、状態ビット40、アドレスタグ4
1、データアレイ42が全てのキャッシュライン43す
なわち図13では、way0からway3まですべてを
出力する。
1から出力されたアドレスと、要求アドレス信号55
と、を比較し、各キャッシュライン43毎に一致/不一
致の情報を、プロトコルシーケンサ51に対して送出す
る。
スレッド実行手段2のスレッドID、およびスレッド順
序情報信号53から、キャッシュライン43のスレッド
IDタグ39が、自ID、親ID、子IDのいずれに相
当するかを判断した情報を、プロトコルシーケンサ51
に対して送出する。
51は、図14、及び図15に示すアルゴリズムで、デ
ータの供給/蓄積と整合性を維持する。
行い(図14の1401参照)、その要求が要求アービタ4
5によって調停され選択された場合の動作について説明
する。
43に存在するか否かを調べる(図14のステップ140
2)。存在しない場合には、無条件にキャッシュミスと
なり、リプレイスするキャッシュライン43を決定し
て、メインメモリからデータをフェッチする(図14の
ステップ1402)。
43が存在した場合には(図14のステップ1402でYe
s)、さらに、スレッドIDタグ39と要求したスレッ
ド実行部34の実行スレッドIDとを比較し(図4のス
テップ1404)、同一IDであれば、すなわち自IDヒッ
トであれば、そのキャッシュライン43(自IDライ
ン)からのデータアレイ42のデータを供給する(図1
4のステップ1407参照)。
ップ1404のNo)、まず親IDと一致しているものの存
在を調べ(図14のステップ1405)、親IDのキャッシ
ュライン43があれば、そのキャッシュライン43のデ
ータアレイ42のデータを供給する(図14のステップ
1408)。親IDと一致するキャッシュライン43が複数
ある場合には、自IDに最も近いIDを保持するキャッ
シュライン43のデータを優先する。
Dと一致しているものの存在を調べる(図14のステッ
プ1406)。子IDで一致するものが存在し、「C状態」
であれば、当該キャッシュライン43のデータライン4
2のデータを供給し、さらに、子IDを自IDに変更す
る(図14のステップ1409)。
存在しない場合には、メインメモリ38からデータをフ
ェッチすることになる(図14のステップ1402)。
16に示すような状態において、スレッドIDが「2」
であるスレッド実行部34において、キャッシュメモリ
35のアドレスタグ41が、0x100、0x200、
0x300、0x400番地のデータを要求した場合、
0x100番地のデータは、親IDヒットとなり、先行
スレッドIDすなわちスレッドIDが「1」のウェイ
(way)0のデータアレイ42から供給される。
ット(キャッシュエントリのスレッドIDタグ39が
「2」)となり、way1のデータアレイ42から供給
される。
y)2に存在するが、way2はスレッドIDタグ39
が「3」で、後続スレッド、且つ「D状態」であるた
め、メモリからデータをフェッチすることになる。
在し、スレッドIDタグ39が「3」で後続スレッドで
あるが。「C状態」であるため、子IDヒットとなり、
way3のデータアレイ42から供給される。さらに、
way3のスレッドIDタグ39は「2」に変更され
る。
34がライト要求を行い(図15の1501)、その要求が
要求アービタ45(図13参照)によって調停され選択
された場合の動作について説明する。
43に存在するか否かを調べる(図15のステップ150
2)。存在しない場合には、無条件にキャッシュミスと
なり、リプレイスするキャッシュライン43を決定し
て、メモリからデータをフェッチ後、ライトバッファ4
7で書き込みデータをマージして、キャッシュライン4
3に書き込みを行う(図15のステップ1503)。
43が存在した場合には(図15のステップ1502で
Yes)、さらに、スレッドIDタグ39と、要求した
スレッド実行部34の実行スレッドIDと、を比較し
(図15のステップ1504)、これらが同一IDであれ
ば、すなわち自IDヒットであれば、そのキャッシュラ
イン43のデータアレイ42にデータを書き込む(図1
5のステップ1507)。後続の子スレッドIDを持ち「D
状態」のキャッシュライン43が存在する場合、そのキ
ャッシュライン43にも。同様のデータを書き込む。こ
れらの処理は、ライトバッファ47を用いて行われる。
のステップ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のデータを優先してライ
ン間コピーのソースとする。
Dと一致しているものの存在を調べる(図15のステッ
プ1506)。子IDで一致するものが存在し「C状態」で
あれば、そのキャッシュライン43のデータに対してラ
イトバッファ47を介して書き込みを行う。さらに、子
IDを自IDに変更する(図15のステップ1509)。
存在しない場合には、キャッシュミスの動作となる(図
15のステップ1502)。
図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に設定される。
には、自ヒットのため、ライトバッファ47を介してデ
ータアレイ42に書き込みを行い、キャッシュエントリ
44の状態ビット40を「D状態」に設定する。
が、0x300番地のデータはway2に存在するが、
way2はスレッドIDタグ39が「3」で後続スレッ
ド、且つ「D状態」であるため、キャッシュミスとな
る。
在し、スレッドIDタグ39が「3」で後続スレッドで
あるが、「C状態」であるため、子IDヒットとなり、
way3のキャッシュライン43のデータに対してライ
トバッファ47を介して書き込みを行う。さらに、子I
Dを自IDに変更する。
シュエントリ44の状態で、スレッドIDが2のスレッ
ド実行部34がキャッシュメモリ35のアドレスタグ4
10x200番地のデータにライトを要求した場合、親
IDヒットとなり、way1のデータはway0もしく
はway3にコピーされる。ここでは、way0にコピ
ーされるものとする。
グ39が「2」に設定され、アドレスタグ41は0x2
00、状態ビット40は「D状態」に設定され、way
1のデータアレイ42の内容をway0にコピーしたも
のに対して書き込みを行った結果が、way0のデータ
アレイ42に、ライトバッファ47を介して、行われ
る。
しても、同じデータがライトバッファ47を介して行わ
れる。図17(B)には、これらが行われたあとの状態
が示されている。
たなアドレスのデータをメインメモリ38からフェッチ
する場合には、その時点で存在するキャッシュライン4
3のデータを置き換える必要が生じる。従来のキャッシ
ュメモリでは、この時点でランダムもしくは過去の参照
履歴に基づいて置き換えるキャッシュライン43を決定
する。
メモリでは、後続スレッドが修正する前のデータを先行
スレッドが参照する必要が有るので、システム中の最先
行スレッドでなければ、「D状態」のデータアレイ42
のメインメモリ38への書き戻し動作を禁止する必要が
有る。
シュライン43を確保できなくなることによるデッドロ
ックの発生を回避するため、1エントリ内で、最先行ス
レッドは、必ず1つのキャッシュライン43を確保でき
るようにする。このため、後続スレッドがキャッシュラ
イン43を確保できない場合には、先行スレッドの終了
を待つことになる。
ドから先行スレッドへの依存関係は定義しないモデルを
用いることによって、このような置き換えるキャッシュ
ライン43に対して制約を付した場合においても、デッ
トロックを回避することが可能である。
によって、本実施例においては、スレッド間の時間順序
関係を保ち、データの逆依存関係を、スレッド実行部3
4間で共有のキャッシュメモリを用いた場合にも、自動
的に解消することが実現される。但し、後続スレッドが
既に書き込んだり読み出したりするアドレスに対して、
先行スレッドが後に同一アドレスに書き込みを起こした
場合には、スレッド間の時間順序関係をこのままでは保
つことはできない。この場合には、スレッド間にソフト
ウェアによって同期をとる必要性が生じる。
書き込みを行ったアドレスに対して、先行スレッドが書
き込みを行うような場合にも、後続スレッド側のキャッ
シュメモリには反映されない保証をハードウェアによっ
て行う拡張を、前記第1〜第3の実施例に対して行った
ものである。
シュラインの一例を、図18に示す。図18を参照し
て、このキャッシュラインは、図4に示したキャッシュ
に対して、ライトマスク62が追加されている。
ワード単位か最小書き込み単位毎に設けられる。ライト
マスク62は、キャッシュライン63に新たにメモリも
しくは他のキャッシュからデータが格納された時にクリ
アされ、キャッシュライン63が属するスレッドが書き
込みを行った場合には、好き込みを行ったワードもしく
は最小書き込み単位毎にセットされる。
施例から第3の実施例で説明したように、スレッドの時
間順序関係を保つために、先行スレッドにおける書き込
みは、同一アドレスタグ60の後続スレッドに属するキ
ャッシュライン63のデータアレイ61に対して反映さ
せる必要があり、そのための制御を行っている。
続スレッドが書き込みを行ったアドレスに対して、先行
スレッドが書き込みを行うような場合にも、後続スレッ
ド側のキャッシュメモリには反映されないという保証、
すなわち、複数スレッド間の書き込みの順序関係までは
保証していなかった。これらは、先行スレッドの書き込
みのデータを後続スレッドが読み出す時と同様にスレッ
ド間でソフトウェアを介在させた同期をとることが要求
される。
されている、ワードもしくは最小書き込み単位には、先
行スレッドからの書き込みを反映させない処理を、後続
スレッド側のキャッシュメモリによって行うことによっ
て、複数スレッド間の同一アドレスへの書き込みの時間
順序関係をキャッシュメモリの制御によって維持するこ
とが実現される。
〜図22に示すキャッシュライン63のデータアレイ6
1の状態の時の動作を説明する。なお、図19、図2
0、図21及び図22は図面作成の都合で分図されたも
のである。
4)では、キャッシュラインが属するスレッド実行部に
よる書き込みで、0x30000番地に0xfffff
fffが書き込まれる。
の0x30000番地の位置に、0xffffffff
というデータが書き込まれると同時に、対応するライト
マスク62がセットされる(図20参照)。
0008番地に0x01234567というデータを先
行するスレッドが書き込んだ場合に、時間順序関係を保
つために行う動作を示す。
ライトマスク62はセットされていないので、先行スレ
ッドの書き込み動作を反映し、データアレイ61の0x
30008番地の位置に、0x01234567という
データが書き込まれる(図21参照)。
30000番地に0x00000000というデータを
先行するスレッドが書き込んだ場合に、時間順序関係を
保つために行う動作を示す。この場合、0x30000
番地に対応するライトマスク62はセットされているの
で、先行スレッドの書き込み動作を反映し、データアレ
イ61の0x30000番地の位置には、先行スレッド
の書き込みは反映されない(図22参照)。これは、ス
レッド間の時間順序関係の規定では、書き込み動作3
(66)よりも、書き込み動作1(64)のほうが、後
から起きる事象と規定されているためである。
システムの動作モードを複数種類定義し切り替えること
を可能としている。本実施例に係るキャッシュの構成
は、前記第1〜第4の実施例のすべてのキャッシュメモ
リに対して適応可能である。
ッシュメモリでは、整合性維持機構が、スレッド管理ユ
ニットから受け取ったスレッド順序情報に基づいて、後
続スレッドのキャッシュに対してのみ書き込みを伝搬さ
せる制御を行う。
保持するすべてのキャッシュメモリに対して行うよう
に、切り替えられるように拡張することによって、従来
のスレッド実行モデル、すなわちスレッド間の順序関係
はすべてソフトウェアによって保証して、複数スレッド
を実行するモデルの実行が可能になる。
でスレッド実行部毎に分散型の整合性維持部を持ち、バ
ス結合された構成の並列システムについて説明する。
1から、整合性維持部4に対して、スレッドの順序を指
定しないという信号を、スレッド順序情報伝達バス10
を介して伝える。このような情報が伝えられた場合に
は、整合性維持部4は、先行/後続スレッドによる制御
を行わない。すなわち、リードミス時には、図5のフロ
ーチャートにおいて先行スレッド判断は行わず(図5の
ステップ506の判断は行わない)、常に、D/DSM
状態のキャッシュからデータの供給を受ける。
合にも、図6に示す先行/後続の判断は行わず、自スレ
ッドのキャッシュに他のスレッド書き込みを反映させ
る。これらのモードの切り替えは、整合性維持機構4の
判断論理を各々1つを有効か無効かを切り替えるのみで
あり、ハードウェア的な拡張は最小規模に抑えられる。
明する。前記第2の実施例(図7参照)においては、整
合性維持機構26はシステム中に共有で1つのみ存在す
る。バス結合方式と同様、従来スレッドモデルによる並
列処理を行う際には、スレッド管理部19から、整合性
維持部26に対して、スレッドの順序を指定しないとい
う信号を、スレッド順序情報伝達バス25を介して伝え
る。この場合は、図9、図10に示す先行スレッド/後
続スレッド判断を行わず、リード時にD状態のキャッシ
ュメモリ21が存在すれば、そのキャッシュメモリ21
からデータ転送を要求し、書き込みの際には共有するラ
インに書き込みデータを送信する。これらのモードの切
り替えも、バス結合の場合と同様、整合性維持機構4の
判断論理を各々1つを有効か無効かを切り替えるのみで
あり、ハードウェア的な拡張は最小規模に抑えることが
可能である。
ドモデルによる並列処理を行う場合には、キャッシュは
全て共有として扱われる。すなわち、図13で示したキ
ャッシュエントリ44の、スレッドIDタグ39の値を
比較する処理ステップを、図14、図15に示したフロ
ーチャートから外す。すなわち、要求アドレスとアドレ
スタグ41の比較のみで、ヒット/ミスを判定する。
を各々1つを有効か無効かを切り替えるのみであり、ハ
ードウェア的な拡張は最小規模に抑えることが可能であ
る。また、この動作の場合、複数キャッシュライン43
が同一アドレスのデータを持つことはなくなる。
要求するアドレスによって、前記第5の実施例を切り替
えることを行う。参照アドレスによってキャッシュのア
ルゴリズムを変えることは、TLB(Translation Lo
okaside Buffer)のエントリ毎に属性をつけることに
よって行う。これらは、例えば米MIPS Technology
INC.社製のR4000シリーズなどのプロセッサ
で公知の技術であり、これらの技術と、前記第5の実施
例を組み合わせることによって、この第6の実施例を実
現することが可能である。
上記実施例は、本発明を限定するためのものでなく、本
発明は本発明の原理に準ずる各種実施形態及び変形を含
むこは勿論である。
イクロプロセッサで幅広く用いられているキャッシュメ
モリの整合性維持機能を拡張することによって、逐次的
な時間順序関係を持った複数スレッドが、同一のメモリ
空間を用いて、同時に実行するようなスレッド実行モデ
ルで、メモリ上のデータ逆依存関係をソフトウェア上か
らは隠蔽することを可能とし、これにより効率的な並列
実行を可能とする、という効果を奏する。
うとした場合、専用のハードウェアが必要になり、ハー
ドウェアコストがかかるという問題があったが、本発明
によれば、キャッシュメモリを用いることによって、こ
の問題を解消している。
を用いることによって、アドレスを示すビットのすべて
を比較する必要がなくなるという効果もあげられる。さ
らに、本発明においては、従来方式のスレッド並列実行
モデルとの共存が容易に行うことが可能になる。なお、
本発明では、データの正依存関係については、ハードウ
ェアによる解消を試みていないが、これは、並列処理本
質の問題点であり、ソフトウェアを含めた同期機構によ
って解消することとしてハードウェアの簡易化を実現し
いる。
図である。
る。
の詳細を示すブロック図である。
ライン構成を示すブロック図である。
ドミス時の処理フローを説明するためのフローチャート
である。
ト時の処理フローを説明するためのフローチャートであ
る。
である。
ーブル/メインメモリを示すブロック図である。
リードミス時の処理フローを説明するためのフローチャ
ートである。
のライト時の処理フローを説明するためのフローチャー
トである。
図である。
ントリの構造を示すブロック図である。
詳細構造を示すブロック図である。
ーケンサのリード時の処理フローを説明するためのフロ
ーチャートである。
ーケンサのライト時の処理フローを説明するためのフロ
ーチャートである。
ントリの状態例(1)を示す図である。
ントリの状態例(2)を示す図である。
モリのライン構成を示すブロック図である。
モリの動作例を示す図である。
モリの動作例を示す図である。
モリの動作例を示す図である。
モリの動作例を示す図である。
ar Processor)の構成を示すブロック図である。
ッド実行方法の概念図である。
alar Processor)におけるARBの構成を示すブロッ
ク図である。
を示すブロック図である。
Claims (7)
- 【請求項1】それぞれが固有のキャッシュメモリを有す
る複数のスレッド実行部と、前記複数のスレッド実行部
におけるスレッド実行を管理するスレッド管理手段と、
前記キャッシュメモリにおけるデータの整合性を維持す
る手段である整合性維持手段とを有する並列処理システ
ムであって、 前記 スレッド管理手段は、スレッドの時間順序関係に関
する情報を、前記整合性維持手段に対して送出するもの
であり、 前記整合性維持手段は、あるスレッド実行部においてキ
ャッシュミス発生時に所望するデータを読み出す際に、
時間順序関係上、先行するスレッドを実行しているスレ
ッド実行部が有するキャッシュメモリにメインメモリと
不一致のデータがあれば、該不一致のデータを前記ある
スレッド実行部に転送し、一方、あるスレッド実行部が
データの書き込みを行う際に、時間順序関係上、後続す
るスレッドを実行しているスレッド実行部が有するキャ
ッシュメモリに同一アドレスのデータが保持されていれ
ば、該書き込みデータを、書き込みを行ったスレッド実
行部が有するキャッシュメモリと共に、前記後続するス
レッドを実行しているスレッド実行部が有するキャッシ
ュメモリにも書き込むことにより、データの整合性制御
を行うものである、 ことを特徴とする、並列処理システム。 - 【請求項2】複数のスレッドにおいてスレッド間は逐次
的な実行順序関係を規定することによって、依存関係が
先行スレッドから後続スレッドの単一方向に規定される
ようなスレッド実行モデルを実行する並列処理システム
であって、 前記スレッドを複数同時に実行するための複数のスレッ
ド実行部と前記複数のスレッド実行部間で共有される共
有メモリとを備え、 前記スレッド実行部はそれぞれ、スレッド実行に伴うデ
ータの読み書きを高速に行うためのキャッシュメモリ
と、前記キャッシュメモリの整合性を制御する整合性維
持手段と、スレッド間の順序関係を伝達する手段とを備
えるものであり、 前記各整合性維持手段の間はバスによって接続され、前記整合性維持手段は、自らに対応する 前記スレッド実
行部が書き込み要求を行った際には、前記バスに書き込
みアドレスとスレッド識別の信号を放送するものであ
り、 前記整合性維持手段は、前記バスを監視することによっ
て、先行するスレツドの書き込みが生じ、かつ、自らに
対応するキャッシュメモリが先行するスレッドの該書き
込みのアドレスと同一アドレスのラインを保持している
ことを検知した場合には、前記先行スレッドが書き込ん
だデータを取り込んで、自らに対応するキャッシュメモ
リに対して書き込み動作を行うものであり、前記各整合性維持手段は、 後続するスレッドを実行して
いるスレッド実行部のキャッシュメモリがミスを起こし
た場合には、先行するスレッドを実行するスレッド実行
部からデータの供給を受ける動作を行うように制御し、 逐次順序関係上、先行するスレッドを実行するスレッド
実行部が書き込んだデータは後続のスレッドを実行する
スレッド実行部が読み出し可能とし、 後続のスレッドを実行するスレッド実行部が書き込んだ
データは先行のスレッドを実行するスレッド実行部に対
しては書き込みを行う前のデータを続み出す制御を行
い、 後続スレッドを実行するスレッド実行部が書き込んだデ
ータは、先行スレッドが終了するまでは、前記共有メモ
リに書き戻さないように制御して、データの整合性制御
を行うものである、 ことを特徴とする、並列処理システム。 - 【請求項3】複数のスレッドにおいてスレッド間は逐次
的な実行順序関係を規定することによって、依存関係が
先行スレッドから後続スレッドの単一方向に規定される
ようなスレッド実行モデルを実行する並列処理システム
であって、 前記スレッドを複数同時に実行するための複数のスレッ
ド実行部と、前記複数のスレッド実行部間で共有される
共有メモリとを備え、前記複数のスレッド実行部と共有メモリとの間はネット
ワークにより結合されており、 前記スレッド実行部は、それぞれ関連して設けられたキ
ャッシュメモリを備えるものであり、 前記共有メモリに付随して、前記キャッシュメモリ間の
整合性維持のためのディレクトリと、整合性維持手段と
を備え、 前記整合性維持手段は、スレッドの順序情報を得ること
によって逐次順序関係上、先行するスレッドを実行する
スレッド実行部が書き込んだデータは、後続のスレッド
を実行するスレッド実行部が読み出し可能とし、 後続のスレッドを実行するスレッド実行部が書き込んだ
データは先行のスレッドを実行するスレッド実行部に対
しては書き込みを行う前のデータを読み出すように制御
し、 後続スレッドを実行するスレッド実行部が書き込んだデ
ータは、先行スレッドが終了するまでは、前記共有メモ
リに書き戻さないように制御することによって、データ
の整合性制御を行うものである、 ことを特徴とする並列処理システム。 - 【請求項4】複数のスレッドを同時ないし時分割で実行
する複数のスレッド実行部と、 スレッド実行に伴うデータの読み書きを高速に行うため
の前記複数のスレッドで共有されるキャッシュメモリ
と、 キャッシュメモリを制御する整合性維持手段と、を備え
た並列処理システムであって、 前記キャッシュメモリには、同一のアドレスに対するデ
ータを複数のエントリで保持可能とし、各エントリ毎に
スレッドの順序関係を示す識別の情報を格納し、前記整合性維持手段は 、逐次順序関係上、先行するスレ
ッドを実行するスレッド実行部が書き込んだデータにつ
いては後続のスレッドを実行するスレッド実行部が読み
出し可能となるように制御し、 後続のスレッドを実行するスレッド実行部が書き込んだ
データについては先行のスレッドを実行するスレッド実
行部に対しては書き込みを行う前のデータを読み出す制
御を行うようにして、データの整合性制御を行うもので
ある、 ことを特徴とする並列処理システム。 - 【請求項5】前記キャッシュメモリへの最小書き込み単
位毎に書き込み事象の発生を指示するフラグを備え、 前記フラグは、対応するスレッド実行部が書き込みを行
った部分に対してセットされ、データを置き換えた時に
はリセットされ、 先行スレッドが書き込み動作を行った際に、キャッシュ
メモリに格納された後続スレッドに関連するデータに対
して、その書き込み内容を反映させる動作を、前記フラ
グがセットされていない部分のみに対して行い、データ
の整合性制御を行う、請求項2〜4のいずれか一に記載
の並列処理システム。 - 【請求項6】請求項2〜4のいずれかひとつに記載され
た並列処理システムであって、 実行中の複数スレッド間に逐次的な実行順序関係を規定
することによって、依存関係が先行スレッドから後続ス
レッドの単一方向に限定されるようなスレッド実行モデ
ルと、複数スレッド間で、共有メモリ上におけるデータ
依存関係を単一方向へ限定せずに、並列時に実行するス
レッド実行モデルとのいずれを並列処理システム上で実
行するかに応じて、前 記整合性維持手段によりデータの整合性制御を行う
か、または、メモリへの書き込みを該書き込み対象のア
ドレスと同一アドレスのデータを保持するすべてのキャ
ッシュメモリに反映させることによりデータの整合性制
御を行うか、 を切り替えることを特徴とする並列処理システム。 - 【請求項7】アドレス空間毎に前記整合性維持手段によ
りデータの整合性制御を行うか否かを指定するテーブル
を備え、 登録したアドレス空間毎に、前記整合性維持手段により
データの整合性制御を行うか、または、メモリへの書き
込みを該書き込み対象のアドレスと同一アドレスのデー
タを保持するすべてのキャッシュメモリに反映させるこ
とによりデータの整合性制御を行うか、を切り替えるこ
とを特徴とする請求項6記載の並列処理システム。
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)
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)
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)
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 |
-
1996
- 1996-10-11 JP JP08289179A patent/JP3139392B2/ja not_active Expired - Fee Related
-
1997
- 1997-10-07 US US08/946,061 patent/US6122712A/en not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
Manoj Franklin,"Multi−Version Caches for Multiscalar Processors",Proceedings of 1st International Conference on High Performance Computing,1995年 |
Cited By (6)
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 |