JPH1097465A - マルチプロセッサシステム - Google Patents
マルチプロセッサシステムInfo
- Publication number
- JPH1097465A JPH1097465A JP8249593A JP24959396A JPH1097465A JP H1097465 A JPH1097465 A JP H1097465A JP 8249593 A JP8249593 A JP 8249593A JP 24959396 A JP24959396 A JP 24959396A JP H1097465 A JPH1097465 A JP H1097465A
- Authority
- JP
- Japan
- Prior art keywords
- mode
- instruction
- cache
- processors
- processor
- 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
プロセスの複数プロセッサによる同時実行(SMP)に
よる高速化と、1プロセスの複数プロセッサによる並列
実行(ASMP)による高速化とを両立する。 【解決手段】 SMP/ASMP実行中か、またプログ
ラムのどの部分を実行しているかを表示するモードビッ
トを設け、OSもしくはユーザプログラムにより変更可
能とし、モードビットの値に応じて異なるキャッシュコ
ヒーレント制御を行う回路を起動する。
Description
チプロセッサシステムにかかわり、特に複数プロセスの
同時実行によるスループット向上と1プロセスの並列実
行による高速化の双方の目的を達成するためのマルチプ
ロセッサシステムに関する。
ために、主記憶を共有した複数プロセッサから成るマル
チプロセッサ構成をとることが近年一般的に行なわれて
いる。
P:Symmetric Multi−Process
orと呼ぶ)の目的は、大きく分けて(1)複数プロセ
スの複数プロセッサでの同時実行によるシステムスルー
プットの向上、(2)1プロセスの複数プロセッサでの
並列実行(1プロセスを分割し、分割した各プロセスを
各プロセッサで同時に並列実行する)による高速化、の
2つである。
従来の技術では以下が行なわれている。すなわち、単体
プロセッサの実行はキャッシュを利用して高速化し、各
プロセッサキャッシュ間の一致性はハードウェアのキャ
ッシュコヒーレント機構により保証する。キャッシュコ
ヒーレント機構には、大別してスヌープ方式とディレク
トリ方式がある。いずれの方式においても、各プロセッ
サキャッシュ内の各ラインが他のラインや主記憶の内容
と一致しているのかどうかを管理し、不一致が発生する
場合は、プロセッサ間の結合網を介して一致をとるため
のキャッシュラインのコピー/更新/無効化などを行な
うことで不一致を解消し、プロセッサが誤動作するのを
防いでいる。またキャッシュを命令用とデータ用に分け
プログラム側に命令の書き換えを許さないという制限を
課して、命令キャッシュ同士のコヒーレンスはとらない
様にしたものもある。これに関しては、「情報科学コア
カリキュラム講座 コンピュータアーキテクチャI」、
167頁−177頁、富田真治著、丸善出版、に記載が
ある。
の技術では、主記憶を共有するマルチプロセッサシステ
ムに於いて、システムが複数プロセスを同時実行してい
るときも、1プロセスを並列実行しているときも、全く
同じキャッシュコヒーレント方式を利用していた。
システムが複数プロセスを同時実行している場合は、一
般に、各プロセッサは互いに異なるプロセスを実行する
ので、各プロセッサのキャッシュが同じ主記憶の内容を
指すことは少なく、キャッシュコヒーレント機構をなる
べく起動しないよう制御する方が性能が向上する。その
ため、複数プロセスを同時実行しているマルチプロセッ
サシステムのキャッシュコヒーレントは、多くの場合、
自プロセッサのキャッシュにデータがあるときは他プロ
セッサとの結合網にキャッシュの内容を送出せず、ま
た、命令キャッシュの内容を他プロセッサとの結合網に
送出しないようになっている。
プロセッサで同時実行しているマルチプロセッサシステ
ムのキャッシュコヒーレント方式は、必ずしもマルチプ
ロセッサシステムが複数のプロセッサが1プロセスを並
列実行する場合に最適な方法ではない。
ラムのDO10、DO20を添え字iについて4つのプ
ロセッサで並列実行する場合を例にとって、説明する。
図3のプログラムは以下のように実行される。310
0、3300の部分を複数のプロセッサを有するシステ
ム中の1つのプロセッサ(これを親プロセッサと呼ぶ。
仮にPE0とする)が実行し、3200、3400の部
分を複数のプロセッサ(これらを子プロセッサと呼ぶ。
仮にPE1、PE2、PE3とする)および親プロセッ
サが分担実行する。親プロセッサPE0は3100の実
行が終了すると、子プロセッサ群PE1〜3を起動し、
3200の各々添え字i=5〜8、9〜12、13〜1
6を各々実行させるとともに、自らは添え字i=1〜4
を分担する。全プロセッサの実行が終了すると、親プロ
セッサPE0は3300を実行し、それが終了すると、
再び子プロセッサ群PE1〜3を起動し、3400の各
々添え字i=5〜8、9〜12、13〜16を各々実行
させるとともに自らは添え字i=1〜4を分担する。親
プロセッサが3100、3300を実行している間、子
プロセッサ群は親プロセッサからの起動を待つ。
群は親プロセッサから起動されて初めて実行すべきプロ
グラム部分の命令アドレスを通知される。そのため、1
プロセスを複数プロセッサで並列実行する場合のキャッ
シュコヒーレント方式として、前述の複数プロセスを複
数プロセッサで同時実行する場合のキャッシュコヒーレ
ント方式を用いた場合には、命令キャッシュの内容を他
プロセッサに通知しないことから、命令キャッシュミス
を起こすことが多い。
ッサ群は親プロセッサから起動されて初めて実行すべき
データをフェッチする。そのため、1プロセスを複数プ
ロセッサで並列実行する場合のキャッシュコヒーレント
方式として、前述の複数プロセスを複数プロセッサで同
時実行する場合のキャッシュコヒーレント方式を用いた
場合、自プロセッサのキャッシュにデータがあるときは
他プロセッサとの結合網にキャッシュの内容を送出しな
いことから、上記プログラムの実行でデータキャッシュ
ミスを起こすことも多い。結果として、キャッシュミス
のペナルティが大きいため、1プロセスを並列実行して
もあまり性能が向上しない、という事態が発生する。
ロセッサによる並列実行のために要求されるコヒーレン
ト方式と、複数プロセスの複数プロセッサによる同時実
行のために要求されるコヒーレント方式が異なる性格を
持つにもかかわらず、同一の手段でコヒーレンスを保と
うとしているために発生する。
セッサシステムにおいて、システムが複数プロセスを同
時実行しているときと、1プロセスを並列実行している
ときで、異なるキャッシュコヒーレント方式を実現する
システム構成を提供することにある。
発明では、各々キャッシュを備える複数のプロセッサ
と、上記プロセッサ群を結合する接続線と、上記キャッ
シュ間の内容一致制御回路とを備えるシステムにおい
て、上記プロセッサ群の内の第1の複数のプロセッサ
が、複数のプロセスを前記第1の複数のプロセッサで同
時実行するモードか、1つのプロセスを前記第1の複数
のプロセッサで並列実行するモードかを識別する第1の
情報を具備し、前記情報に応じて前記内容一致制御回路
の動作を切り替えるようにする。
能ユニットから構成し、前記情報に応じて前記機能ユニ
ットのいずれを起動するかを選択する回路を備える。
数のプロセッサで同時実行するモードは、プロセスの並
列動作部分を実行するモードと非並列動作部分を実行す
るモードとからなり、前記並列動作部分を実行するモー
ドと非並列動作部分を実行するモードとを切り替える手
段と、前記前記並列動作部分を実行するモードと非並列
動作部分を実行するモードに応じて前記内容一致制御回
路の動作を切り替える手段とを有する。
機能ユニットから構成し、前記1つのプロセスを前記第
1の複数のプロセッサで同時実行するモードであり、か
つ、非並列動作部分を実行するモードである場合は、前
記第1の複数のプロセッサのそれぞれのキャッシュが同
じエントリで更新されるように、前記機能ユニットを選
択する回路を有するようにする。
のプロセスを前記第1の複数のプロセッサで同時実行す
るモードであり、かつ、非並列動作部分を実行するモー
ドである場合は、前記第1の複数のプロセッサのそれぞ
れのキャッシュを同じエントリで更新するようにする。
更にまた、前記内容一致制御回路を複数の機能ユニット
から構成し、前記1つのプロセスを前記第1の複数のプ
ロセッサで同時実行するモードであり、かつ、並列動作
部分を実行するモードである場合は、前記第1の複数の
プロセッサのそれぞれのキャッシュが個別のエントリで
更新されるようにする。
は、1つの親プロセッサと他の子プロセッサからなり、
前記親プロセッサか前記子プロセッサかに応じて、上記
内容一致制御回路の動作を変えるようにする。
実施形態を説明する。はじめに、本実施の形態での用語
を定義しておく。複数プロセッサから成るシステムが、
複数プロセッサにより複数プロセスを同時実行している
ことを示すモードを以下SMP(Symmetric
Multi−Processor)モードとし、複数プ
ロセッサにより1プロセスを並列実行していることを示
すモード以下ASMP(Asynchronous S
MP)モードとする。更に、ASMPモードのプロセッ
サ群が、プログラムの非並列化部分(図3の3100、
3300など。以下シングル部分と呼ぶ)を実行中の場
合をシングルモード、並列化部分(図3の3200、3
300など。以下パラレル部分と呼ぶ)を実行中の場合
をパラレルモードとする。
の全体構成である。プロセッサ群10〜13(PE0〜
PE3)および主記憶43が、アドレス/コマンドバス
41およびデータバス42を介し接続されている。プロ
セッサ群10〜13は各々命令キャッシュ(Icach
e)、データキャッシュ(Dcache)を備えてい
る。また、信号線18〜21はプロセッサ群とアドレス
/コマンドバス41を接続する。信号線22〜25はプ
ロセッサ群とデータバス42を接続する。信号線26は
主記憶43とアドレス/コマンドバス41を、信号線2
7は主記憶43とデータバス42を接続する。これら構
成要素は、従来のSMPシステム(マルチプロセッサシ
ステムが複数プロセスを同時実行しているシステム)で
も備えている。
プロセッサ群10〜13の各プロセッサ間を接続し、同
期をとる同期情報バス40、プロセッサ群と同期情報バ
スを接続する信号線14〜17を有する。この同期情報
バスは、後述するモード情報やプログラムカウンタの値
(即ち、命令アドレス)の通知に使用される。
る。他のプロセッサ11〜13の構成も同様であり説明
を省略する。プロセッサは、命令キャッシュ(Icac
he)52、命令の実行および命令キャッシュを制御す
る命令ユニット53、演算ユニット(ALU)57、ロ
ードストアユニット(LSU)56、データキャッシュ
(Dcache)51、データキャッシュを制御するデ
ータユニット50、レジスタ58からなる。また、これ
らを接続する信号線60、62、63、64、65、6
6、68、外部バスとの接続を行う信号線18−0、1
8−1、22−0、22−1を有する。これらの構成要
素は公知のSMPシステムでも備えており、本発明のS
MPモード時の動作も公知のSMPシステムの動作と同
様である。
である命令ユニット53内のモードビット、モードビッ
トの情報をデータユニットに通達する信号線67、同期
情報バス40に接続する信号線14を有する。モードビ
ットにより定まるモードについては図11で説明する。
ドビットの構成を示す。モードビットは、 (1)ASMPビット:ASMPモード(主記憶共有マ
ルチプロセッサシステムにおいて1プロセスを複数のプ
ロセッサで並列実行していることを示すモード(Asy
nchronous SMPモード))であるかSMP
モード(主記憶共有マルチプロセッサシステムにおいて
複数のプロセスを複数のプロセッサで同時実行している
ことを示すモード(SMPモード))であるかを示す
(ここではASMPビット=1の場合はASMPモー
ド、ASMPビット=0の場合はSMPモードとす
る)、 (2)parentビット:ASMPモード時に自プロ
セッサが親であるか子であるかを示す(ここでは、pa
rentビット=1の場合は親、parentビット=
0の場合は子とする)、 (3)paraビット:ASMPモード時に現在プログ
ラムのパラレル部を実行しているのかシングル部を実行
しているのかを示す(ここでは、paraビット=1の
場合はパラレル部を実行、paraビット=0の場合は
シングル部を実行とする)、 の3つからなる。
はOS(オペレーティングシステム)が変更する。pa
raビットはユーザプログラムおよびOSが変更する。
なお、ここでは各モード種別をビット情報の形で記録し
ているが、これらを識別できる情報を記録できる手段で
あればどのような形で記録されても良い。例えば、レジ
スタを設け、レジスタ内にこれらを識別できる情報を数
字やアルファベット記号の形で記憶しても良い。
る場合の動作を説明する。OSは、まずSMPモードで
動作するプロセッサのASMPビットを「0」(SMP
モードを示す)とし、各プロセッサに各々独立なプロセ
スを割り当てる。
に動作する(図2参照)。命令ユニット53は、命令キ
ャッシュ52に命令がある場合はそれを取り出し、命令
がない場合は信号線18−1を介してアドレス/コマン
ドバス41に命令フェッチのライン転送要求を送出する
とともに、命令キャッシュ52がデータバス42から命
令ラインを受け取るように制御する。命令ユニット53
はバスを介して取り出した命令をデコードし、演算命令
なら演算ユニットALU57を、ロードストア命令であ
ればロードストアユニット56を、信号線68を介して
制御する。
トアユニット56はデータユニット50に対し命令の種
別とアドレスを信号線60を介して送出する。データユ
ニット50は、データキャッシュ51にデータがある場
合はレジスタ58にデータを送出するようデータキャッ
シュ51を制御する。データがない場合は、信号線18
−0を介してアドレス/コマンドバス41にデータフェ
ッチのライン転送要求を送出するとともに、データキャ
ッシュ51がデータバス42からデータラインを受け取
るように制御する。
のデータキャッシュコヒーレンス方式を示す。本方式は
バークレイプロトコルとして知られる公知の方式である
(「情報科学コアカリキュラム講座 コンピュータアー
キテクチャI」、170頁−173頁、富田真治著、丸
善出版)。
キャッシュの各キャッシュラインの状態を示す。「I」
はInvald(自キャッシュにデータがない。)、
「V」はValid(自キャッシュにデータがあり、内
容は主記憶と一致。他キャッシュにも同一のデータがあ
る可能性がある。)、「D」はDirty(自キャッシ
ュにデータがあり、内容は主記憶と異なる。他キャッシ
ュにはない。)、「Sh.D」はShared Dir
ty(自キャッシュにデータがあり、内容は主記憶と異
なる。他キャッシュにも同一のデータがある可能性があ
る。)を示す。
クセス(L:ロード、ST:ストア、Castout:
リプレースに伴う主記憶への書き戻し)により、各キャ
ッシュラインの状態がどう遷移するか、またこのキャッ
シュライン状態の変化に伴ってトランザクションが発生
し、他プロセッサへバスを介して出力される(このバス
上へ送信されるトランザクションをバストランザクショ
ンへいう)。このバストランザクションは図6において
“四角”で囲ってある。このバストランザクションはバ
ス(アドレス/コマンドバス41、データバス42)を
介して他プロセッサへ通知される。バストランザクショ
ンには、LTreq:他プロセッサのロードに伴うライ
ン転送要求、LTreq−forST:他プロセッサの
ストアに伴うライン転送要求、Inv:他プロセッサか
ら発せられた無効化要求、Busout:自キャッシュ
の当該キャッシュラインの内容のデータバスへの出力、
がある。
してバストランザクション(LTreq、LTreq−
forST、Inv、Busout)を受けた場合、自
プロセッサの自キャッシュの状態がどう遷移するか、ま
た他プロセッサへ送信するどのようなバストランザクシ
ョンが発生するかを示している。発生するバストランザ
クションは“四角”で囲ってある。ここでは、発生する
バストランザクションとして、更に「Busout&S
h.D化指示(自キャッシュの当該キャッシュラインの
内容のデータバスへの出力および、データ取り込み先で
のSh.D化要求)」が加わる。
自プロセッサからストア命令を実行した場合、自プロセ
ッサのラインに書込むためにその状態はDirtyに移
行し、同時にバスに対しInvトランザクションを発行
する(図6(a)参照)。一方他のプロセッサにおいて
同じラインがValidだった場合、バストランザクシ
ョンInvを受け、そのラインは無効化されるとともに
状態はIに移行する(図6(b)参照)。
態遷移図を追えば明らかであるため、ここではこれ以上
説明しないが、本プロトコルにより、SMPモードにお
いて複数のプロセッサのキャッシュが同じ主記憶位置を
共有した場合も、キャッシュ内容の一致性が保証され
る。以上、SMPモードで本システムが動作する場合の
動作を説明した。
を説明する。OSは、まず並列実行されるプログラムが
要求する台数分のプロセッサ群を選択し、それらのAS
MPビットを1とする。さらにその中の1台のみpar
entビットを1とし(このプロセッサは親となる)、
他のプロセッサのparentビットは0(これらプロ
セッサ群は子となる)とする。その後選択したプロセッ
サ群に同一プロセス(ジョブに相当)の各スレッド(タ
スクに相当)を割り当てる。
り、その内いずれの部分が並列実行されるかは「発明が
解決しようとする課題」の項で述べたとおりである。
械語命令列イメージである。命令列の左側に付された数
字は機械語命令のアドレスとして便宜的に付けたもので
ある。本実施形態では、親プロセッサも子プロセッサ群
も全く同じアドレスから始まる同じ命令列を実行する。
le_mode命令、および、switch_to_p
ara_mode命令は、本実施形態において新設され
る命令である。本命令の動作は、命令を実行するプロセ
ッサが親であるか子であるか、すなわちparentビ
ットの値によって異なる。
_mode命令の実行 parentビットが1の時(親プロセッサの場合)、
switch_to_single_mode命令をデ
コードすると、プロセッサは子プロセッサ群から同期情
報バス40を介して、子プロセッサからバリア(当該複
数のプロセッサが予めプログラムで設定した同期ポイン
ト)まで処理が終了したことを示す信号(この信号をバ
リア信号と呼ぶことにする)が返ってくるのを待ち、全
ての子プロセッサから上記信号を受信することで、全て
のプロセッサ間で同期が取れたこと(バリア同期)を確
認したら(なお、親プロセッサはswitch_to_
single_mode命令をデコードするということ
が即ちバリアまで処理が終了していることを示してい
る)、同期情報バス40にモードをシングルに変更する
よう指示を出す。
サの場合)、switch_to_single_mo
de命令をデコードすると、プロセッサは同期情報バス
40に対して自プロセッサがバリアまで処理が終了した
ことを示す信号を送出後、プログラムカウンタの更新を
やめる。すなわち各子プロセッサは、命令の取り出しお
よび実行を中止した状態に入り、親プロセッサは全子プ
ロセッサがバリアに到達するのを待ってから後続の命令
を実行することになる。
ode命令の実行 parentビットが1の時(親プロセッサの場合)、
switch_to_para_mode命令をデコー
ドすると、親プロセッサは同期情報バス40にモードを
パラレルに変更するよう指示を出し、その時実行中の命
令のプログラムカウンタを同期情報バス40に送出す
る。モードをパラレルに変更されると、子プロセッサは
同期情報バス40に送出されたプログラムカウンタを受
け取り、その値からプログラムカウンタの更新を再開す
る。すなわち、親プロセッサは子プロセッサの中止した
状態(ストール状態)を解除し、その時実行中の命令か
ら再開させることになる。parentビットが0の時
(子プロセッサの場合)、switch_to_par
a_mode命令をデコードしてもプロセッサは何も行
なわない。
de命令、switch_to_para_mode命
令の動作が上記であることから、図4の機械語命令列は
以下のように実行されることになる。すなわち、命令列
1002は親プロセッサのみが実行し、命令1003に
より、子プロセッサにも命令アドレス920が伝わり、
親、子プロセッサ群が命令列1004を並列実行する。
ここで命令列1002は図3の3100に相当し、命令
列1004は3200に相当する。命令列1002中の
compute_my_addrは、各プロセッサの担
当すべきデータのアドレスをそれぞれの計算機で互いに
独立に計算する命令シーケンスを略記したものである。
命令1005により子プロセッサは実行を中止し、親プ
ロセッサはバリア同期がとれたのを確認の後、命令列1
006を実行する。さらに命令1007により再び親、
子プロセッサ群が命令列1008の並列実行を開始し、
命令1009により再び親プロセッサのみの実行に戻
る。ここで命令列1006は図3の3300に相当し、
命令列1008は3400に相当する。
最初、親プロセッサおよび子プロセッサ群により処理が
開始されるが、switch_to_single_m
ode命令により、子プロセッサ群は中止状態となり、
親プロセッサだけで処理される状態となる。その後、親
プロセッサにてswitch_to_para_mod
e命令が処理されると、子プロセッサ群へプログラムの
再開用の親プロセッサのプログラムカウンタの値が通知
され、全てのプロセッサによって、このプログラムカウ
ンタの値からプログラム処理が行われる。また、swi
tch_to_single_mode命令を実行する
と先の記述と同様の処理を繰り返す。以上の動作がモー
ドビットに基づく命令列並列実行のシーケンスである。
ーレント動作について説明する。
SMPモードかつパラレルモード時のキャッシュコヒー
レント動作は本実施形態では、SMPモード時と同じと
する。すなわちデータキャッシュのコヒーレンスは図6
に基づいて行なう。また命令キャッシュのコヒーレンス
はとらない。
親プロセッサのみが命令列を実行するが、親プロセッサ
の実行した結果を子プロセッサのデータキャッシュにも
反映するよう、コヒーレント機構は動作する。すなわ
ち、親プロセッサが書込んだキャッシュラインはSh.
D属性を持って全ての子プロセッサにブロードキャスト
され、また親プロセッサが読み込んだデータラインは、
全ての子プロセッサにV属性でブロードキャストされ
る。また命令キャッシュについては、子プロセッサは命
令の実行を中止(ストール)してはいるが、親プロセッ
サが発生した命令フェッチのためのライン転送結果を自
命令キャッシュにも取り込むように制御する。以上によ
り、パラレルモード時にはばらばらであった各プロセッ
サのキャッシュの内容が、シングルモードで実行中に徐
々に親プロセッサのキャッシュの内容に変化していく
(詳細後述)。
ュのコヒーレンスを保つ状態遷移方式を示す。図7
(a)は自プロセッサで発生するアクセスにより、各状
態がどう遷移するか、またどのようなバストランザクシ
ョンが発生するかを示している。また図7(b)はバス
から発生するトランザクションにより自キャッシュの状
態がどう遷移するか、またどのようなバストランザクシ
ョンを発生するかを示している。
ッサからストア命令を実行した場合、自プロセッサのラ
インに書込むと同時に他のプロセッサへブロードキャス
トが発生し、その状態はSh.Dに移行する(図7
(a)参照)。一方他のプロセッサにおいて同じライン
がVだった場合、バストランザクションBroadca
stを受けそのラインはキャッシュに取り込まれ、状態
はSh.Dに移行する(図7(b)参照)。本状態遷移
が正しく動作することは、後に図4の機械語命令列を用
いて説明する。
くプロセッサ動作およびキャッシュコヒーレント動作を
実現する構成を示す。
る。データキャッシュ状態記憶機構79は、データキャ
ッシュ51に保持されているデータラインのアドレスと
その状態を記憶している。信号線67には命令ユニット
53内のモードビットの値が出力されている。
き、信号線60−0および60−1を介してロードスト
アユニット56からロードストア要求が入ってくると、
組合せ回路80は図6(a)の状態遷移に従って、バス
トランザクション発生回路71〜76およびデータキャ
ッシュへのライン取込み指示回路77、キャッシュ状態
変更回路78を制御する信号を信号線101〜107、
93に送出する。
0−1を介し入力され、そのストアアドレスが信号線6
0−0に入力されたとする。データキャッシュ状態記憶
機構79は、ストアアドレスとキャッシュの状態を比較
し、アクセス要求先のラインの状態、すなわち「I」か
「V」か「D」か「Sh.D」かを信号線91に送出す
る。また信号線92にはそのストア要求によってCas
toutされるべきラインがあるかとそのアドレスが送
出される。例えば信号線91に「V」が示され、またC
astoutされるべきラインがない場合、組合せ回路
80は無効化トランザクション発生回路73を起動し、
エンコード回路81を経由してアドレス/コマンドバス
41に対し無効化トランザクションを発生させる。さら
に組合せ回路80は状態変更回路78を起動し、アクセ
ス要求先ラインの状態を「D」に変更する。
するトランザクションが入力され、組合せ回路80は図
6(b)の状態遷移にしたがってバストランザクション
発生回路71〜76およびデータキャッシュへのライン
取込み指示回路77、キャッシュ状態変更回路78を制
御する信号線を送出する。
を示しているときの動作は、本実施形態においては上記
SMPモード時の動作と同じである。
を示している場合、組み合せ回路80は図7(a)
(b)の状態遷移に従ってバストランザクション発生回
路71〜76およびデータキャッシュへのライン取込み
指示回路77、キャッシュ状態変更回路78を制御する
信号線を送出する。
−1を介し入力され、そのストアアドレスが信号線60
−0に入力されたとする。データキャッシュ状態記憶機
構79が信号線91にVを送出し、またCastout
されるべきラインが信号線92に示されない場合、組合
せ回路80はブロードキャストトランザクション発生回
路76を起動する。ブロードキャストトランザクション
発生回路76は信号線65を介してデータキャッシュ5
0に対しストア結果の反映されたラインをデータバス4
2に送出するよう指示するとともに、エンコード回路8
1を経由してアドレス/コマンドバス41に対しブロー
ドキャストトランザクションを発生させる。さらに組合
せ回路80は状態変更回路78を起動し、アクセス要求
先ラインの状態をSh.Dに変更する。
る。
令キャッシュ52に保持されている命令ラインのアドレ
スを記憶している。プログラムカウンタ131はこれか
ら実行すべき命令のアドレスを示し、命令キャッシュ状
態記憶機構153で命令アドレスを調べた結果、求める
命令が命令キャッシュ52になければ状態変更回路13
4、信号線18−1−0を経由して命令ラインのフェッ
チ要求を送出する。状態変更回路134は命令ラインの
フェッチ要求を出した場合は信号線66−1に命令キャ
ッシュに対するライン取込み指示を、信号線155に命
令キャッシュ状態変更指示を送出する。命令キャッシュ
52に求める命令がある場合は信号線66−0を介し命
令要求が命令キャッシュ52に送出され、信号線66−
2を介して命令が送られる。命令はデコード回路120
でデコードされ、通常の演算もしくはロードストア命令
であれば、デコード結果は信号線68に送出され、演算
ユニット57もしくはロードストアユニット56を制御
する。命令がASMPをモード制御する、図4のswi
tch_to_single_mode命令(100
1)およびswitch_to_para_mode命
令(1003)である場合、デコード結果は信号線15
3に送出される。プログラムカウンタ131は信号線1
58により、命令を取り出すごとに更新される。以上が
モードビットにかかわらず共通的な命令ユニット53の
動作である。
ット53の動作を示す。
ている場合、デコード120からの出力153とモード
121からの出力152の組み合わせによって動作する
組合せ回路122は何も出力しない。すなわち命令ユニ
ット53の動作は上述のとおりであり、switch_
to_single_mode命令(1001)および
switch_to_para_mode命令(100
3)は無視される。
ている場合、信号線153にswitch_to_si
ngle_mode命令(1001)およびswitc
h_to_para_mode命令(1003)を送出
されると、組合せ回路122は、PC(プログラムカウ
ンタ)取込み回路123、プログラムカウンタの更新を
抑止するPC(プログラムカウンタ)更新抑止回路12
4、I-line取込み指示回路125、自プロセッサでのプ
ログラム処理がバリア点に達したときにこれを通知する
信号を送出するバリア送出回路126、子プロセッサへ
モードが遷移したことを通知するモードBroad-Cast回路
127、全ての子プロセッサからバリア点への到達が通
知されたらモードブロードキャスト回路127を起動す
るバリア完待ち回路128、他のプロセッサへプログラ
ムカウンタ値を送出するPC送出回路129を次のよう
に制御する。
を示している場合、switch_to_single
_mode命令が信号線153に送出されると、バリア
完了待ち回路128とモードブロードキャスト回路12
7を起動する。バリア完了待ち回路128は信号線14
−0に全ての子プロセッサのバリア点への到達が通知さ
れたらモードブロードキャスト回路127を起動する。
またparent=1、para=0の時にswitc
h_to_para_mode命令が信号線153に送
出されると、モードブロードキャスト回路127と他の
プロセッサへプログラムカウンタ値を送出するプログラ
ムカウンタ送出回路129を起動する。
している場合、switch_to_single_m
ode命令が信号線153に送出されると、バリア送出
回路126とプログラムカウンタ更新抑止回路124が
起動される。またparent=0、para=0の時
に信号線14−0にモードをパラレルに切り替える指示
が入力されると、モードビット121はpara=1と
するとともに組合せ回路122を介してプログラムカウ
ンタ取込み回路123を起動し、信号線14−0に送出
されているプログラムカウンタを取り込むよう制御す
る。
ッシュの内容について図6、図7、図10(a)を用い
て説明する。なお、キャッシュは1ラインに4データ保
持できるものとする。
09を4台のプロセッサで実行したときの親プロセッサ
(PE0)および子プロセッサ(PE1〜3)の命令キ
ャッシュおよびデータキャッシュの内容を示したもので
ある。なお、図10では子プロセッサは同じ動作をする
のでPE1のキャッシュの内容のみを示している。命令
キャッシュの内容は、図4で便宜的に付した命令アドレ
スで表示した。図中、*が付いている命令もしくはデー
タはキャッシュミスもしくはブロードキャストされたデ
ータの取込みが発生したことを示している。また図中A
(1)〜のように表示した場合、A(1)から始まる4
つのデータ、すなわちA(1)、A(2)、A(3)、
A(4)がキャッシュに入っていることを意味するとす
る。
E0、PE1とも命令キャッシュミスが発生したとす
る。PE1はプログラムカウンタの更新を抑止し、中止
(ストール)状態に入る。PE0〜3はシングルモード
となり、PE0は命令列1002の実行を開始する。P
E0のデータキャッシュにはデータが入っていなかった
とすると、P、S、A(1)〜は全てライン転送され
る。この時PE1(子プロセッサ)のデータキャッシュ
は図7(b)に従い、P、S、A(1)〜を取り込む
[状態IからLTreqもしくはLTreq−forS
Tにより遷移]。PE0(親プロセッサ)のみVali
d、その他(子プロセッサ)はSh.Dとなる。またP
E1(子プロセッサは命令キャッシュにもPE0と同じ
アドレス910を取り込む。すなわち、子プロセッサは
中止状態ではあるが、子プロセッサの命令およびデータ
キャッシュの更新は親プロセッサの命令およびデータキ
ャッシュ更新と合わせて行われる。これらの取込み処理
は、PE0のライン転送のかげで行なわれるので、処理
時間の増加は起こさない。
実行すると、親プロセッサは同期情報バスのモードをパ
ラレルとするとともにプログラムカウンタを出力する。
PE1(子プロセッサ)はプログラムカウンタを取り込
み、全プロセッサが命令列1004の並列実行を開始す
る。PE1の命令キャッシュにはPE0と同じラインが
格納されているので命令キャッシュミスは発生しない。
またPE1のデータキャッシュにはSが格納されている
のでSに関してはキャッシュミスは発生しない。A
(5)〜、B(5)〜についてはキャッシュミスとな
る。命令列1004の実行は図6の状態遷移に基づき行
なわれるため、PE0とPE1のキャッシュの内容はか
なり異なってくる。PE1ではB(5)〜はDirty
の状態で保持される。
ロセッサ)は、バリア点に到達するとこのことを示すバ
リア信号を同期情報バス40に送出してストール状態に
入る。またPE0(親プロセッサ)は、命令1005を
実行すると、PE1〜3(子プロセッサ)からのバリア
信号を待ち、これらを全て受け取ると、モードをシング
ルにする。
ヒーレンス制御は図7の状態遷移に従う。よってPE1
〜3が変更したB(5)〜B(16)はPE0が参照す
るたびに、ブロードキャストされ、全PEがSh.D属
性のB(5)〜B(16)を保持することになる。例え
ば、PE0(親プロセッサ)は図7(a)の状態Iから
LによってSh.Dに移行し、PE1〜3(子プロセッ
サ)は図7(b)の状態IからLTreqによりSh.
Dに移行する。
行される。命令列1008は、全PEにより並列実行さ
れるが、PE1はB(5)〜を既にキャッシュに取り込
んでいるので、ミスを発生しない。
ラムを並列実行する場合の機械語命令列イメージを図5
に示し、また本命令列を通常のSMPモード、すなわち
図6の状態遷移に従って実行した場合のキャッシュの内
容を図10(b)に示す。
列、(b)は子プロセッサ群が実行する命令列である。
図5(a)の命令2003のstore_begin_
addr命令は、子プロセッサを起動し、子プロセッサ
に実行開始アドレスを通知するシーケンスを表してい
る。図5(a)の命令2005のloadall_en
d命令は、子プロセッサが通知してくる終了フラグを集
計するシーケンスを表している。図5(b)に示すよう
に、子プロセッサはプログラムの非並列実行部分に到達
するとスピンウェイトを行なうとする。
ではプログラムの並列化部分に入るときにPE1(子プ
ロセッサ)の命令キャッシュがミスする(2004、2
008)。また本発明の実施形態では発生しなかったデ
ータキャッシュミスが2004、2008で発生してい
る。
ュミスのペナルティが大きく、1プロセス並列実行によ
る性能向上を阻害している。
を複数のプロセッサで同時実行するモード(SMPモー
ド)か、1つのプロセスを前記第1の複数のプロセッサ
で並列実行するモード(ASMPモード)かを識別する
第1の情報を具備し、前記情報に応じて前記内容一致制
御回路の動作を切り替えるので、各モードにあったキャ
ッシュコヒーレント制御方式を選ぶことができる。例え
ば、SMPモードでは各プロセッサのキャッシュの内容
をなるべく独立に保つことにより、無駄にコヒーレント
機構を起動せずに複数プロセス実行のスループットを向
上させることができる。一方ASMPモードでは、プロ
グラムの実行部分(プロセスの並列動作部分を実行する
モードと非並列動作部分を実行するモード)に応じて適
したキャッシュコヒーレント方式をとることができ、1
プロセスの並列実行の性能を向上させることができる。
テムの全体構成図である。
列イメージである。
令列イメージである。
移図である。
移図である。
レント機構の構成図である。
ント機構の構成図である。
ある。
Claims (7)
- 【請求項1】各々キャッシュを備える複数のプロセッサ
と、上記プロセッサ群を結合する接続線と、上記キャッ
シュ間の内容一致制御回路とを備えるシステムにおい
て、 上記プロセッサ群の内の第1の複数のプロセッサが、複
数のプロセスを前記第1の複数のプロセッサで同時実行
するモードか、1つのプロセスを前記第1の複数のプロ
セッサで並列実行するモードかを識別する第1の情報を
具備し、 前記情報に応じて前記内容一致制御回路の動作を切り替
えるマルチプロセッサシステム。 - 【請求項2】前記内容一致制御回路を、複数の機能ユニ
ットから構成し、前記情報に応じて前記機能ユニットの
いずれを起動するかを選択する回路を備える請求項1の
マルチプロセッサシステム。 - 【請求項3】1つのプロセスを前記第1の複数のプロセ
ッサで同時実行するモードは、更に、プロセスの並列動
作部分を実行するモードと非並列動作部分を実行するモ
ードとを有し、 前記並列動作部分を実行するモードと非並列動作部分を
実行するモードとを切り替える手段と、 前記並列動作部分を実行するモードと非並列動作部分を
実行するモードに応じて前記内容一致制御回路の動作を
切り替える手段とを有する請求項1のマルチプロセッサ
システム。 - 【請求項4】前記内容一致制御回路を複数の機能ユニッ
トから構成し、 前記1つのプロセスを前記第1の複数のプロセッサで同
時実行するモードであり、かつ、非並列動作部分を実行
するモードである場合は、前記第1の複数のプロセッサ
のそれぞれのキャッシュが同じエントリで更新されるよ
うに、前記機能ユニットを選択する回路を有する請求項
3のマルチプロセッサシステム。 - 【請求項5】前記内容一致制御回路を複数の機能ユニッ
トから構成し、 前記1つのプロセスを前記第1の複数のプロセッサで同
時実行するモードであり、かつ、並列動作部分を実行す
るモードである場合は、前記第1の複数のプロセッサの
それぞれのキャッシュが個別のエントリで更新されるよ
うに、前記機能ユニットを選択する回路を有する請求項
3のマルチプロセッサシステム。 - 【請求項6】前記内容一致制御回路は、1つのプロセス
を前記第1の複数のプロセッサで同時実行するモードで
あり、かつ、非並列動作部分を実行するモードである場
合は、前記第1の複数のプロセッサのそれぞれのキャッ
シュを同じエントリで更新する請求項3のマルチプロセ
ッサシステム。 - 【請求項7】前記第1の複数のプロセッサは、1つの親
プロセッサと他の子プロセッサからなり、 前記親プロセッサか前記子プロセッサかに応じて、上記
内容一致制御回路の動作を変える請求項1のマルチプロ
セッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24959396A JP3820645B2 (ja) | 1996-09-20 | 1996-09-20 | マルチプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24959396A JP3820645B2 (ja) | 1996-09-20 | 1996-09-20 | マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1097465A true JPH1097465A (ja) | 1998-04-14 |
JP3820645B2 JP3820645B2 (ja) | 2006-09-13 |
Family
ID=17195332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24959396A Expired - Fee Related JP3820645B2 (ja) | 1996-09-20 | 1996-09-20 | マルチプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3820645B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549024B2 (en) | 2003-07-02 | 2009-06-16 | Arm Limited | Multi-processing system with coherent and non-coherent modes |
JP2010526483A (ja) * | 2007-05-02 | 2010-07-29 | ロヴィ・ソリューションズ・コーポレーション | 信号に対する修正の検出を介してコンテンツ制御を提供する方法および装置 |
JP2010205083A (ja) * | 2009-03-04 | 2010-09-16 | Canon Inc | 並列処理プロセッサシステム |
JPWO2009110084A1 (ja) * | 2008-03-06 | 2011-07-14 | 富士通株式会社 | プロセス制御方法 |
WO2011158320A1 (ja) | 2010-06-14 | 2011-12-22 | 富士通株式会社 | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム |
-
1996
- 1996-09-20 JP JP24959396A patent/JP3820645B2/ja not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549024B2 (en) | 2003-07-02 | 2009-06-16 | Arm Limited | Multi-processing system with coherent and non-coherent modes |
JP2010526483A (ja) * | 2007-05-02 | 2010-07-29 | ロヴィ・ソリューションズ・コーポレーション | 信号に対する修正の検出を介してコンテンツ制御を提供する方法および装置 |
US8428258B2 (en) | 2007-05-02 | 2013-04-23 | Rovi Technologies Corporation | Method and apparatus for providing content control via detection of modifications to a signal |
JPWO2009110084A1 (ja) * | 2008-03-06 | 2011-07-14 | 富士通株式会社 | プロセス制御方法 |
JP2010205083A (ja) * | 2009-03-04 | 2010-09-16 | Canon Inc | 並列処理プロセッサシステム |
WO2011158320A1 (ja) | 2010-06-14 | 2011-12-22 | 富士通株式会社 | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム |
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 |
---|---|
JP3820645B2 (ja) | 2006-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR920004402B1 (ko) | 디지탈 데이타 프로세서용 버스 인터페이스 회로 | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
CA1300280C (en) | Central processor unit for digital data processing system including write buffer management mechanism | |
US4989140A (en) | Single chip pipeline data processor using instruction and operand cache memories for parallel operation of instruction control and executions unit | |
KR19980063489A (ko) | 멀티스레드 프로세서의 명령어 및 연관된 인출 요청의 백그라운드 완료 | |
JP2000010942A (ja) | マルチプロセッサ・システム | |
JP2000029857A (ja) | 個々のプロセッサの早期リリ―スによるシステム・シリアル化方法 | |
US4831581A (en) | Central processor unit for digital data processing system including cache management mechanism | |
JP2005521924A (ja) | シングルスレッドプログラムのマルチスレッドでのインプリシットな実行を可能にするマルチスレッドプロセッサ | |
US5091845A (en) | System for controlling the storage of information in a cache memory | |
US5119484A (en) | Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction | |
US5226170A (en) | Interface between processor and special instruction processor in digital data processing system | |
JP2575219B2 (ja) | データ処理システム及びその命令実行を促進する方法 | |
US5367648A (en) | General purpose memory access scheme using register-indirect mode | |
JP3820645B2 (ja) | マルチプロセッサシステム | |
JPH0410102B2 (ja) | ||
KR920004401B1 (ko) | 디지탈 데이타 프로세싱 시스템내의 프로세서와 특수명령 프로세서간의 인터페이스 | |
JP2670397B2 (ja) | 競合最小化プロセッサおよびシステム・バス・システム | |
JP2000181891A (ja) | 共有メモリアクセス順序保証方式 | |
US5276892A (en) | Destination control logic for arithmetic and logic unit for digital data processor | |
JPS6315628B2 (ja) | ||
JP3102399B2 (ja) | データ処理装置及び方法 | |
CA1305557C (en) | Control signal generation circuit for arithmetic and logic unit for digital processor | |
JPH0769825B2 (ja) | 並列処理装置 | |
JPH04340145A (ja) | キャッシュメモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060315 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060417 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060517 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060530 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060612 |
|
LAPS | Cancellation because of no payment of annual fees |