JP3820645B2 - マルチプロセッサシステム - Google Patents
マルチプロセッサシステム Download PDFInfo
- Publication number
- JP3820645B2 JP3820645B2 JP24959396A JP24959396A JP3820645B2 JP 3820645 B2 JP3820645 B2 JP 3820645B2 JP 24959396 A JP24959396 A JP 24959396A JP 24959396 A JP24959396 A JP 24959396A JP 3820645 B2 JP3820645 B2 JP 3820645B2
- Authority
- JP
- Japan
- Prior art keywords
- mode
- processor
- instruction
- cache
- processors
- 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
Images
Landscapes
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、主記憶共有のマルチプロセッサシステムにかかわり、特に複数プロセスの同時実行によるスループット向上と1プロセスの並列実行による高速化の双方の目的を達成するためのマルチプロセッサシステムに関する。
【0002】
【従来の技術】
プロセッサシステムの性能を向上させるために、主記憶を共有した複数プロセッサから成るマルチプロセッサ構成をとることが近年一般的に行なわれている。
【0003】
主記憶共有マルチプロセッサ(以下SMP:Symmetric Multi−Processorと呼ぶ)の目的は、大きく分けて(1)複数プロセスの複数プロセッサでの同時実行によるシステムスループットの向上、(2)1プロセスの複数プロセッサでの並列実行(1プロセスを分割し、分割した各プロセスを各プロセッサで同時に並列実行する)による高速化、の2つである。
【0004】
上記双方の目的を達成するために、一般に従来の技術では以下が行なわれている。すなわち、単体プロセッサの実行はキャッシュを利用して高速化し、各プロセッサキャッシュ間の一致性はハードウェアのキャッシュコヒーレント機構により保証する。キャッシュコヒーレント機構には、大別してスヌープ方式とディレクトリ方式がある。いずれの方式においても、各プロセッサキャッシュ内の各ラインが他のラインや主記憶の内容と一致しているのかどうかを管理し、不一致が発生する場合は、プロセッサ間の結合網を介して一致をとるためのキャッシュラインのコピー/更新/無効化などを行なうことで不一致を解消し、プロセッサが誤動作するのを防いでいる。またキャッシュを命令用とデータ用に分けプログラム側に命令の書き換えを許さないという制限を課して、命令キャッシュ同士のコヒーレンスはとらない様にしたものもある。これに関しては、「情報科学コアカリキュラム講座 コンピュータアーキテクチャI」、167頁−177頁、富田真治著、丸善出版、に記載がある。
【0005】
【発明が解決しようとする課題】
しかしながら上記従来の技術では、主記憶を共有するマルチプロセッサシステムに於いて、システムが複数プロセスを同時実行しているときも、1プロセスを並列実行しているときも、全く同じキャッシュコヒーレント方式を利用していた。
【0006】
複数プロセッサから成るマルチプロセッサシステムが複数プロセスを同時実行している場合は、一般に、各プロセッサは互いに異なるプロセスを実行するので、各プロセッサのキャッシュが同じ主記憶の内容を指すことは少なく、キャッシュコヒーレント機構をなるべく起動しないよう制御する方が性能が向上する。そのため、複数プロセスを同時実行しているマルチプロセッサシステムのキャッシュコヒーレントは、多くの場合、自プロセッサのキャッシュにデータがあるときは他プロセッサとの結合網にキャッシュの内容を送出せず、また、命令キャッシュの内容を他プロセッサとの結合網に送出しないようになっている。
【0007】
しかしながら上記の複数プロセスを複数のプロセッサで同時実行しているマルチプロセッサシステムのキャッシュコヒーレント方式は、必ずしもマルチプロセッサシステムが複数のプロセッサが1プロセスを並列実行する場合に最適な方法ではない。
【0008】
このことを、図3のFORTRANプログラムのDO10、DO20を添え字iについて4つのプロセッサで並列実行する場合を例にとって、説明する。図3のプログラムは以下のように実行される。3100、3300の部分を複数のプロセッサを有するシステム中の1つのプロセッサ(これを親プロセッサと呼ぶ。仮にPE0とする)が実行し、3200、3400の部分を複数のプロセッサ(これらを子プロセッサと呼ぶ。仮にPE1、PE2、PE3とする)および親プロセッサが分担実行する。親プロセッサPE0は3100の実行が終了すると、子プロセッサ群PE1〜3を起動し、3200の各々添え字i=5〜8、9〜12、13〜16を各々実行させるとともに、自らは添え字i=1〜4を分担する。全プロセッサの実行が終了すると、親プロセッサPE0は3300を実行し、それが終了すると、再び子プロセッサ群PE1〜3を起動し、3400の各々添え字i=5〜8、9〜12、13〜16を各々実行させるとともに自らは添え字i=1〜4を分担する。親プロセッサが3100、3300を実行している間、子プロセッサ群は親プロセッサからの起動を待つ。
【0009】
このプログラムの実行では、子プロセッサ群は親プロセッサから起動されて初めて実行すべきプログラム部分の命令アドレスを通知される。そのため、1プロセスを複数プロセッサで並列実行する場合のキャッシュコヒーレント方式として、前述の複数プロセスを複数プロセッサで同時実行する場合のキャッシュコヒーレント方式を用いた場合には、命令キャッシュの内容を他プロセッサに通知しないことから、命令キャッシュミスを起こすことが多い。
【0010】
また上記プログラムの実行では、子プロセッサ群は親プロセッサから起動されて初めて実行すべきデータをフェッチする。そのため、1プロセスを複数プロセッサで並列実行する場合のキャッシュコヒーレント方式として、前述の複数プロセスを複数プロセッサで同時実行する場合のキャッシュコヒーレント方式を用いた場合、自プロセッサのキャッシュにデータがあるときは他プロセッサとの結合網にキャッシュの内容を送出しないことから、上記プログラムの実行でデータキャッシュミスを起こすことも多い。結果として、キャッシュミスのペナルティが大きいため、1プロセスを並列実行してもあまり性能が向上しない、という事態が発生する。
【0011】
上記の状況は、本来、1プロセスの複数プロセッサによる並列実行のために要求されるコヒーレント方式と、複数プロセスの複数プロセッサによる同時実行のために要求されるコヒーレント方式が異なる性格を持つにもかかわらず、同一の手段でコヒーレンスを保とうとしているために発生する。
【0012】
本発明の目的は、主記憶共有型マルチプロセッサシステムにおいて、システムが複数プロセスを同時実行しているときと、1プロセスを並列実行しているときで、異なるキャッシュコヒーレント方式を実現するシステム構成を提供することにある。
【0013】
【課題を解決するための手段】
上記を解決するために本発明では、各々キャッシュを備える複数のプロセッサと、上記プロセッサ群を結合する接続線と、上記キャッシュ間の内容一致制御回路とを備えるシステムにおいて、上記プロセッサ群の内の第1の複数のプロセッサが、複数のプロセスを前記第1の複数のプロセッサで同時実行するモードか、1つのプロセスを前記第1の複数のプロセッサで並列実行するモードかを識別する第1の情報を具備し、前記情報に応じて前記内容一致制御回路の動作を切り替えるようにする。
【0014】
また、前記内容一致制御回路を、複数の機能ユニットから構成し、前記情報に応じて前記機能ユニットのいずれを起動するかを選択する回路を備える。
【0015】
更にまた、1つのプロセスを前記第1の複数のプロセッサで同時実行するモードは、プロセスの並列動作部分を実行するモードと非並列動作部分を実行するモードとからなり、前記並列動作部分を実行するモードと非並列動作部分を実行するモードとを切り替える手段と、前記前記並列動作部分を実行するモードと非並列動作部分を実行するモードに応じて前記内容一致制御回路の動作を切り替える手段とを有する。
【0016】
更にまた、前記内容一致制御回路を複数の機能ユニットから構成し、前記1つのプロセスを前記第1の複数のプロセッサで同時実行するモードであり、かつ、非並列動作部分を実行するモードである場合は、前記第1の複数のプロセッサのそれぞれのキャッシュが同じエントリで更新されるように、前記機能ユニットを選択する回路を有するようにする。
【0017】
更にまた、前記内容一致制御回路は、1つのプロセスを前記第1の複数のプロセッサで同時実行するモードであり、かつ、非並列動作部分を実行するモードである場合は、前記第1の複数のプロセッサのそれぞれのキャッシュを同じエントリで更新するようにする。更にまた、前記内容一致制御回路を複数の機能ユニットから構成し、前記1つのプロセスを前記第1の複数のプロセッサで同時実行するモードであり、かつ、並列動作部分を実行するモードである場合は、前記第1の複数のプロセッサのそれぞれのキャッシュが個別のエントリで更新されるようにする。
【0018】
更にまた、前記第1の複数のプロセッサは、1つの親プロセッサと他の子プロセッサからなり、前記親プロセッサか前記子プロセッサかに応じて、上記内容一致制御回路の動作を変えるようにする。
【0019】
【発明の実施の形態】
以下、図面を参照しつつ本発明の実施形態を説明する。
はじめに、本実施の形態での用語を定義しておく。複数プロセッサから成るシステムが、複数プロセッサにより複数プロセスを同時実行していることを示すモードを以下SMP(Symmetric Multi−Processor)モードとし、複数プロセッサにより1プロセスを並列実行していることを示すモード以下ASMP(Asynchronous SMP)モードとする。更に、ASMPモードのプロセッサ群が、プログラムの非並列化部分(図3の3100、3300など。以下シングル部分と呼ぶ)を実行中の場合をシングルモード、並列化部分(図3の3200、3300など。以下パラレル部分と呼ぶ)を実行中の場合をパラレルモードとする。
【0020】
図1は本発明の1実施形態であるシステムの全体構成である。プロセッサ群10〜13(PE0〜PE3)および主記憶43が、アドレス/コマンドバス41およびデータバス42を介し接続されている。プロセッサ群10〜13は各々命令キャッシュ(Icache)、データキャッシュ(Dcache)を備えている。また、信号線18〜21はプロセッサ群とアドレス/コマンドバス41を接続する。信号線22〜25はプロセッサ群とデータバス42を接続する。信号線26は主記憶43とアドレス/コマンドバス41を、信号線27は主記憶43とデータバス42を接続する。これら構成要素は、従来のSMPシステム(マルチプロセッサシステムが複数プロセスを同時実行しているシステム)でも備えている。
【0021】
更に、本実施形態特有の構成要素である、プロセッサ群10〜13の各プロセッサ間を接続し、同期をとる同期情報バス40、プロセッサ群と同期情報バスを接続する信号線14〜17を有する。この同期情報バスは、後述するモード情報やプログラムカウンタの値(即ち、命令アドレス)の通知に使用される。
【0022】
図2は、プロセッサ10の内部構成である。他のプロセッサ11〜13の構成も同様であり説明を省略する。プロセッサは、命令キャッシュ(Icache)52、命令の実行および命令キャッシュを制御する命令ユニット53、演算ユニット(ALU)57、ロードストアユニット(LSU)56、データキャッシュ(Dcache)51、データキャッシュを制御するデータユニット50、レジスタ58からなる。また、これらを接続する信号線60、62、63、64、65、66、68、外部バスとの接続を行う信号線18−0、18−1、22−0、22−1を有する。これらの構成要素は公知のSMPシステムでも備えており、本発明のSMPモード時の動作も公知のSMPシステムの動作と同様である。
【0023】
更に、図2は、本実施形態特有の構成要素である命令ユニット53内のモードビット、モードビットの情報をデータユニットに通達する信号線67、同期情報バス40に接続する信号線14を有する。モードビットにより定まるモードについては図11で説明する。
【0024】
図11は、上記の本実施形態におけるモードビットの構成を示す。モードビットは、
(1)ASMPビット:ASMPモード(主記憶共有マルチプロセッサシステムにおいて1プロセスを複数のプロセッサで並列実行していることを示すモード(Asynchronous SMPモード))であるかSMPモード(主記憶共有マルチプロセッサシステムにおいて複数のプロセスを複数のプロセッサで同時実行していることを示すモード(SMPモード))であるかを示す(ここではASMPビット=1の場合はASMPモード、ASMPビット=0の場合はSMPモードとする)、
(2)parentビット:ASMPモード時に自プロセッサが親であるか子であるかを示す(ここでは、parentビット=1の場合は親、parentビット=0の場合は子とする)、
(3)paraビット:ASMPモード時に現在プログラムのパラレル部を実行しているのかシングル部を実行しているのかを示す(ここでは、paraビット=1の場合はパラレル部を実行、paraビット=0の場合はシングル部を実行とする)、
の3つからなる。
【0025】
ASMPビットおよびparentビットはOS(オペレーティングシステム)が変更する。paraビットはユーザプログラムおよびOSが変更する。なお、ここでは各モード種別をビット情報の形で記録しているが、これらを識別できる情報を記録できる手段であればどのような形で記録されても良い。例えば、レジスタを設け、レジスタ内にこれらを識別できる情報を数字やアルファベット記号の形で記憶しても良い。
【0026】
以下、SMPモードで本システムが動作する場合の動作を説明する。
OSは、まずSMPモードで動作するプロセッサのASMPビットを「0」(SMPモードを示す)とし、各プロセッサに各々独立なプロセスを割り当てる。
【0027】
SMPモード時、プロセッサは以下のように動作する(図2参照)。
命令ユニット53は、命令キャッシュ52に命令がある場合はそれを取り出し、命令がない場合は信号線18−1を介してアドレス/コマンドバス41に命令フェッチのライン転送要求を送出するとともに、命令キャッシュ52がデータバス42から命令ラインを受け取るように制御する。命令ユニット53はバスを介して取り出した命令をデコードし、演算命令なら演算ユニットALU57を、ロードストア命令であればロードストアユニット56を、信号線68を介して制御する。
【0028】
命令がロードストア命令の場合、ロードストアユニット56はデータユニット50に対し命令の種別とアドレスを信号線60を介して送出する。データユニット50は、データキャッシュ51にデータがある場合はレジスタ58にデータを送出するようデータキャッシュ51を制御する。データがない場合は、信号線18−0を介してアドレス/コマンドバス41にデータフェッチのライン転送要求を送出するとともに、データキャッシュ51がデータバス42からデータラインを受け取るように制御する。
【0029】
図6は、本実施形態で行うSMPモード時のデータキャッシュコヒーレンス方式を示す。本方式はバークレイプロトコルとして知られる公知の方式である(「情報科学コアカリキュラム講座 コンピュータアーキテクチャI」、170頁−173頁、富田真治著、丸善出版)。
【0030】
図6に於いて、“丸”で囲ってあるのが、キャッシュの各キャッシュラインの状態を示す。「I」はInvald(自キャッシュにデータがない。)、「V」はValid(自キャッシュにデータがあり、内容は主記憶と一致。他キャッシュにも同一のデータがある可能性がある。)、「D」はDirty(自キャッシュにデータがあり、内容は主記憶と異なる。他キャッシュにはない。)、「Sh.D」はShared Dirty(自キャッシュにデータがあり、内容は主記憶と異なる。他キャッシュにも同一のデータがある可能性がある。)を示す。
【0031】
図6(a)は、自プロセッサで発生するアクセス(L:ロード、ST:ストア、Castout:リプレースに伴う主記憶への書き戻し)により、各キャッシュラインの状態がどう遷移するか、またこのキャッシュライン状態の変化に伴ってトランザクションが発生し、他プロセッサへバスを介して出力される(このバス上へ送信されるトランザクションをバストランザクションへいう)。このバストランザクションは図6において“四角”で囲ってある。このバストランザクションはバス(アドレス/コマンドバス41、データバス42)を介して他プロセッサへ通知される。バストランザクションには、LTreq:他プロセッサのロードに伴うライン転送要求、LTreq−forST:他プロセッサのストアに伴うライン転送要求、Inv:他プロセッサから発せられた無効化要求、Busout:自キャッシュの当該キャッシュラインの内容のデータバスへの出力、がある。
【0032】
図6(b)は、他プロセッサからバスを介してバストランザクション(LTreq、LTreq−forST、Inv、Busout)を受けた場合、自プロセッサの自キャッシュの状態がどう遷移するか、また他プロセッサへ送信するどのようなバストランザクションが発生するかを示している。発生するバストランザクションは“四角”で囲ってある。ここでは、発生するバストランザクションとして、更に「Busout&Sh.D化指示(自キャッシュの当該キャッシュラインの内容のデータバスへの出力および、データ取り込み先でのSh.D化要求)」が加わる。
【0033】
例えば、Validであるラインに対して自プロセッサからストア命令を実行した場合、自プロセッサのラインに書込むためにその状態はDirtyに移行し、同時にバスに対しInvトランザクションを発行する(図6(a)参照)。一方他のプロセッサにおいて同じラインがValidだった場合、バストランザクションInvを受け、そのラインは無効化されるとともに状態はIに移行する(図6(b)参照)。
【0034】
本プロトコルは公知であり、その動作は状態遷移図を追えば明らかであるため、ここではこれ以上説明しないが、本プロトコルにより、SMPモードにおいて複数のプロセッサのキャッシュが同じ主記憶位置を共有した場合も、キャッシュ内容の一致性が保証される。
以上、SMPモードで本システムが動作する場合の動作を説明した。
【0035】
次にASMPモード時の本システムの動作を説明する。
OSは、まず並列実行されるプログラムが要求する台数分のプロセッサ群を選択し、それらのASMPビットを1とする。さらにその中の1台のみparentビットを1とし(このプロセッサは親となる)、他のプロセッサのparentビットは0(これらプロセッサ群は子となる)とする。その後選択したプロセッサ群に同一プロセス(ジョブに相当)の各スレッド(タスクに相当)を割り当てる。
【0036】
図3は並列実行されるプログラムの例であり、その内いずれの部分が並列実行されるかは「発明が解決しようとする課題」の項で述べたとおりである。
【0037】
図4は図3のプログラムを並列実行する機械語命令列イメージである。命令列の左側に付された数字は機械語命令のアドレスとして便宜的に付けたものである。本実施形態では、親プロセッサも子プロセッサ群も全く同じアドレスから始まる同じ命令列を実行する。
【0038】
命令列中、switch_to_single_mode命令、および、switch_to_para_mode命令は、本実施形態において新設される命令である。本命令の動作は、命令を実行するプロセッサが親であるか子であるか、すなわちparentビットの値によって異なる。
【0039】
(1)switch_to_single_mode命令の実行
parentビットが1の時(親プロセッサの場合)、switch_to_single_mode命令をデコードすると、プロセッサは子プロセッサ群から同期情報バス40を介して、子プロセッサからバリア(当該複数のプロセッサが予めプログラムで設定した同期ポイント)まで処理が終了したことを示す信号(この信号をバリア信号と呼ぶことにする)が返ってくるのを待ち、全ての子プロセッサから上記信号を受信することで、全てのプロセッサ間で同期が取れたこと(バリア同期)を確認したら(なお、親プロセッサはswitch_to_single_mode命令をデコードするということが即ちバリアまで処理が終了していることを示している)、同期情報バス40にモードをシングルに変更するよう指示を出す。
【0040】
parentビットが0の時(子プロセッサの場合)、switch_to_single_mode命令をデコードすると、プロセッサは同期情報バス40に対して自プロセッサがバリアまで処理が終了したことを示す信号を送出後、プログラムカウンタの更新をやめる。すなわち各子プロセッサは、命令の取り出しおよび実行を中止した状態に入り、親プロセッサは全子プロセッサがバリアに到達するのを待ってから後続の命令を実行することになる。
【0041】
(2)switch_to_para_mode命令の実行
parentビットが1の時(親プロセッサの場合)、switch_to_para_mode命令をデコードすると、親プロセッサは同期情報バス40にモードをパラレルに変更するよう指示を出し、その時実行中の命令のプログラムカウンタを同期情報バス40に送出する。モードをパラレルに変更されると、子プロセッサは同期情報バス40に送出されたプログラムカウンタを受け取り、その値からプログラムカウンタの更新を再開する。すなわち、親プロセッサは子プロセッサの中止した状態(ストール状態)を解除し、その時実行中の命令から再開させることになる。
parentビットが0の時(子プロセッサの場合)、switch_to_para_mode命令をデコードしてもプロセッサは何も行なわない。
【0042】
switch_to_single_mode命令、switch_to_para_mode命令の動作が上記であることから、図4の機械語命令列は以下のように実行されることになる。すなわち、命令列1002は親プロセッサのみが実行し、命令1003により、子プロセッサにも命令アドレス920が伝わり、親、子プロセッサ群が命令列1004を並列実行する。ここで命令列1002は図3の3100に相当し、命令列1004は3200に相当する。命令列1002中のcompute_my_addrは、各プロセッサの担当すべきデータのアドレスをそれぞれの計算機で互いに独立に計算する命令シーケンスを略記したものである。命令1005により子プロセッサは実行を中止し、親プロセッサはバリア同期がとれたのを確認の後、命令列1006を実行する。さらに命令1007により再び親、子プロセッサ群が命令列1008の並列実行を開始し、命令1009により再び親プロセッサのみの実行に戻る。ここで命令列1006は図3の3300に相当し、命令列1008は3400に相当する。
【0043】
すなわち、図4に示されるプログラムは、最初、親プロセッサおよび子プロセッサ群により処理が開始されるが、switch_to_single_mode命令により、子プロセッサ群は中止状態となり、親プロセッサだけで処理される状態となる。その後、親プロセッサにてswitch_to_para_mode命令が処理されると、子プロセッサ群へプログラムの再開用の親プロセッサのプログラムカウンタの値が通知され、全てのプロセッサによって、このプログラムカウンタの値からプログラム処理が行われる。また、switch_to_single_mode命令を実行すると先の記述と同様の処理を繰り返す。
以上の動作がモードビットに基づく命令列並列実行のシーケンスである。
【0044】
以下モードビットに基づくキャッシュコヒーレント動作について説明する。
【0045】
まず図2を用いて動作概要を説明する。
ASMPモードかつパラレルモード時のキャッシュコヒーレント動作は本実施形態では、SMPモード時と同じとする。すなわちデータキャッシュのコヒーレンスは図6に基づいて行なう。また命令キャッシュのコヒーレンスはとらない。
【0046】
ASMPモードかつシングルモード時は、親プロセッサのみが命令列を実行するが、親プロセッサの実行した結果を子プロセッサのデータキャッシュにも反映するよう、コヒーレント機構は動作する。すなわち、親プロセッサが書込んだキャッシュラインはSh.D属性を持って全ての子プロセッサにブロードキャストされ、また親プロセッサが読み込んだデータラインは、全ての子プロセッサにV属性でブロードキャストされる。また命令キャッシュについては、子プロセッサは命令の実行を中止(ストール)してはいるが、親プロセッサが発生した命令フェッチのためのライン転送結果を自命令キャッシュにも取り込むように制御する。以上により、パラレルモード時にはばらばらであった各プロセッサのキャッシュの内容が、シングルモードで実行中に徐々に親プロセッサのキャッシュの内容に変化していく(詳細後述)。
【0047】
図7は、上記を実現しつつデータキャッシュのコヒーレンスを保つ状態遷移方式を示す。図7(a)は自プロセッサで発生するアクセスにより、各状態がどう遷移するか、またどのようなバストランザクションが発生するかを示している。また図7(b)はバスから発生するトランザクションにより自キャッシュの状態がどう遷移するか、またどのようなバストランザクションを発生するかを示している。
【0048】
例えば、Vであるラインに対して自プロセッサからストア命令を実行した場合、自プロセッサのラインに書込むと同時に他のプロセッサへブロードキャストが発生し、その状態はSh.Dに移行する(図7(a)参照)。一方他のプロセッサにおいて同じラインがVだった場合、バストランザクションBroadcastを受けそのラインはキャッシュに取り込まれ、状態はSh.Dに移行する(図7(b)参照)。本状態遷移が正しく動作することは、後に図4の機械語命令列を用いて説明する。
【0049】
図8、図9は、以上のモードビットに基づくプロセッサ動作およびキャッシュコヒーレント動作を実現する構成を示す。
【0050】
図8は、データユニット50の構成図である。データキャッシュ状態記憶機構79は、データキャッシュ51に保持されているデータラインのアドレスとその状態を記憶している。信号線67には命令ユニット53内のモードビットの値が出力されている。
【0051】
信号線67がSMPモードを示しているとき、信号線60−0および60−1を介してロードストアユニット56からロードストア要求が入ってくると、組合せ回路80は図6(a)の状態遷移に従って、バストランザクション発生回路71〜76およびデータキャッシュへのライン取込み指示回路77、キャッシュ状態変更回路78を制御する信号を信号線101〜107、93に送出する。
【0052】
具体的には、例えばストア要求が信号線60−1を介し入力され、そのストアアドレスが信号線60−0に入力されたとする。データキャッシュ状態記憶機構79は、ストアアドレスとキャッシュの状態を比較し、アクセス要求先のラインの状態、すなわち「I」か「V」か「D」か「Sh.D」かを信号線91に送出する。また信号線92にはそのストア要求によってCastoutされるべきラインがあるかとそのアドレスが送出される。例えば信号線91に「V」が示され、またCastoutされるべきラインがない場合、組合せ回路80は無効化トランザクション発生回路73を起動し、エンコード回路81を経由してアドレス/コマンドバス41に対し無効化トランザクションを発生させる。さらに組合せ回路80は状態変更回路78を起動し、アクセス要求先ラインの状態を「D」に変更する。
【0053】
また信号線18−0−1にはバスから発生するトランザクションが入力され、組合せ回路80は図6(b)の状態遷移にしたがってバストランザクション発生回路71〜76およびデータキャッシュへのライン取込み指示回路77、キャッシュ状態変更回路78を制御する信号線を送出する。
【0054】
信号線67がASMPかつパラレルモードを示しているときの動作は、本実施形態においては上記SMPモード時の動作と同じである。
【0055】
信号線67がASMPかつシングルモードを示している場合、組み合せ回路80は図7(a)(b)の状態遷移に従ってバストランザクション発生回路71〜76およびデータキャッシュへのライン取込み指示回路77、キャッシュ状態変更回路78を制御する信号線を送出する。
【0056】
具体的には例えばストア要求が信号線60−1を介し入力され、そのストアアドレスが信号線60−0に入力されたとする。データキャッシュ状態記憶機構79が信号線91にVを送出し、またCastoutされるべきラインが信号線92に示されない場合、組合せ回路80はブロードキャストトランザクション発生回路76を起動する。ブロードキャストトランザクション発生回路76は信号線65を介してデータキャッシュ50に対しストア結果の反映されたラインをデータバス42に送出するよう指示するとともに、エンコード回路81を経由してアドレス/コマンドバス41に対しブロードキャストトランザクションを発生させる。さらに組合せ回路80は状態変更回路78を起動し、アクセス要求先ラインの状態をSh.Dに変更する。
【0057】
図9は、命令ユニット53の構成図である。
【0058】
命令キャッシュ状態記憶機構153は、命令キャッシュ52に保持されている命令ラインのアドレスを記憶している。プログラムカウンタ131はこれから実行すべき命令のアドレスを示し、命令キャッシュ状態記憶機構153で命令アドレスを調べた結果、求める命令が命令キャッシュ52になければ状態変更回路134、信号線18−1−0を経由して命令ラインのフェッチ要求を送出する。状態変更回路134は命令ラインのフェッチ要求を出した場合は信号線66−1に命令キャッシュに対するライン取込み指示を、信号線155に命令キャッシュ状態変更指示を送出する。命令キャッシュ52に求める命令がある場合は信号線66−0を介し命令要求が命令キャッシュ52に送出され、信号線66−2を介して命令が送られる。命令はデコード回路120でデコードされ、通常の演算もしくはロードストア命令であれば、デコード結果は信号線68に送出され、演算ユニット57もしくはロードストアユニット56を制御する。命令がASMPをモード制御する、図4のswitch_to_single_mode命令(1001)およびswitch_to_para_mode命令(1003)である場合、デコード結果は信号線153に送出される。プログラムカウンタ131は信号線158により、命令を取り出すごとに更新される。以上がモードビットにかかわらず共通的な命令ユニット53の動作である。
【0059】
次に、モードビットにかかわった命令ユニット53の動作を示す。
【0060】
モードビット152がSMPモードを示している場合、デコード120からの出力153とモード121からの出力152の組み合わせによって動作する組合せ回路122は何も出力しない。すなわち命令ユニット53の動作は上述のとおりであり、switch_to_single_mode命令(1001)およびswitch_to_para_mode命令(1003)は無視される。
【0061】
モードビット152がASMPモード示している場合、信号線153にswitch_to_single_mode命令(1001)およびswitch_to_para_mode命令(1003)を送出されると、組合せ回路122は、PC(プログラムカウンタ)取込み回路123、プログラムカウンタの更新を抑止するPC(プログラムカウンタ)更新抑止回路124、I-line取込み指示回路125、自プロセッサでのプログラム処理がバリア点に達したときにこれを通知する信号を送出するバリア送出回路126、子プロセッサへモードが遷移したことを通知するモードBroad-Cast回路127、全ての子プロセッサからバリア点への到達が通知されたらモードブロードキャスト回路127を起動するバリア完待ち回路128、他のプロセッサへプログラムカウンタ値を送出するPC送出回路129を次のように制御する。
【0062】
すなわちparent=1、para=1を示している場合、switch_to_single_mode命令が信号線153に送出されると、バリア完了待ち回路128とモードブロードキャスト回路127を起動する。バリア完了待ち回路128は信号線14−0に全ての子プロセッサのバリア点への到達が通知されたらモードブロードキャスト回路127を起動する。またparent=1、para=0の時にswitch_to_para_mode命令が信号線153に送出されると、モードブロードキャスト回路127と他のプロセッサへプログラムカウンタ値を送出するプログラムカウンタ送出回路129を起動する。
【0063】
一方parent=0、para=1を示している場合、switch_to_single_mode命令が信号線153に送出されると、バリア送出回路126とプログラムカウンタ更新抑止回路124が起動される。またparent=0、para=0の時に信号線14−0にモードをパラレルに切り替える指示が入力されると、モードビット121はpara=1とするとともに組合せ回路122を介してプログラムカウンタ取込み回路123を起動し、信号線14−0に送出されているプログラムカウンタを取り込むよう制御する。
【0064】
図4の機械語命令列を実行したときのキャッシュの内容について図6、図7、図10(a)を用いて説明する。なお、キャッシュは1ラインに4データ保持できるものとする。
【0065】
図10は、図4の各命令列1001〜1009を4台のプロセッサで実行したときの親プロセッサ(PE0)および子プロセッサ(PE1〜3)の命令キャッシュおよびデータキャッシュの内容を示したものである。なお、図10では子プロセッサは同じ動作をするのでPE1のキャッシュの内容のみを示している。命令キャッシュの内容は、図4で便宜的に付した命令アドレスで表示した。図中、*が付いている命令もしくはデータはキャッシュミスもしくはブロードキャストされたデータの取込みが発生したことを示している。また図中A(1)〜のように表示した場合、A(1)から始まる4つのデータ、すなわちA(1)、A(2)、A(3)、A(4)がキャッシュに入っていることを意味するとする。
【0066】
図4の命令1001を実施したときは、PE0、PE1とも命令キャッシュミスが発生したとする。PE1はプログラムカウンタの更新を抑止し、中止(ストール)状態に入る。PE0〜3はシングルモードとなり、PE0は命令列1002の実行を開始する。PE0のデータキャッシュにはデータが入っていなかったとすると、P、S、A(1)〜は全てライン転送される。この時PE1(子プロセッサ)のデータキャッシュは図7(b)に従い、P、S、A(1)〜を取り込む[状態IからLTreqもしくはLTreq−forSTにより遷移]。PE0(親プロセッサ)のみValid、その他(子プロセッサ)はSh.Dとなる。またPE1(子プロセッサは命令キャッシュにもPE0と同じアドレス910を取り込む。すなわち、子プロセッサは中止状態ではあるが、子プロセッサの命令およびデータキャッシュの更新は親プロセッサの命令およびデータキャッシュ更新と合わせて行われる。これらの取込み処理は、PE0のライン転送のかげで行なわれるので、処理時間の増加は起こさない。
【0067】
PE0(親プロセッサ)が命令1003を実行すると、親プロセッサは同期情報バスのモードをパラレルとするとともにプログラムカウンタを出力する。PE1(子プロセッサ)はプログラムカウンタを取り込み、全プロセッサが命令列1004の並列実行を開始する。PE1の命令キャッシュにはPE0と同じラインが格納されているので命令キャッシュミスは発生しない。またPE1のデータキャッシュにはSが格納されているのでSに関してはキャッシュミスは発生しない。A(5)〜、B(5)〜についてはキャッシュミスとなる。命令列1004の実行は図6の状態遷移に基づき行なわれるため、PE0とPE1のキャッシュの内容はかなり異なってくる。PE1ではB(5)〜はDirtyの状態で保持される。
【0068】
命令1005を実行すると、PE1(子プロセッサ)は、バリア点に到達するとこのことを示すバリア信号を同期情報バス40に送出してストール状態に入る。またPE0(親プロセッサ)は、命令1005を実行すると、PE1〜3(子プロセッサ)からのバリア信号を待ち、これらを全て受け取ると、モードをシングルにする。
【0069】
命令列1006の実行では、キャッシュコヒーレンス制御は図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に移行する。
【0070】
命令1007は、命令1003と同様に実行される。命令列1008は、全PEにより並列実行されるが、PE1はB(5)〜を既にキャッシュに取り込んでいるので、ミスを発生しない。
【0071】
比較のため、従来方式により図3のプログラムを並列実行する場合の機械語命令列イメージを図5に示し、また本命令列を通常のSMPモード、すなわち図6の状態遷移に従って実行した場合のキャッシュの内容を図10(b)に示す。
【0072】
図5(a)は親プロセッサが実行する命令列、(b)は子プロセッサ群が実行する命令列である。図5(a)の命令2003のstore_begin_addr命令は、子プロセッサを起動し、子プロセッサに実行開始アドレスを通知するシーケンスを表している。図5(a)の命令2005のloadall_end命令は、子プロセッサが通知してくる終了フラグを集計するシーケンスを表している。図5(b)に示すように、子プロセッサはプログラムの非並列実行部分に到達するとスピンウェイトを行なうとする。
【0073】
図10(b)に明らかなように、従来方式ではプログラムの並列化部分に入るときにPE1(子プロセッサ)の命令キャッシュがミスする(2004、2008)。また本発明の実施形態では発生しなかったデータキャッシュミスが2004、2008で発生している。
【0074】
以上より明らかに従来方式の方がキャッシュミスのペナルティが大きく、1プロセス並列実行による性能向上を阻害している。
【0075】
【発明の効果】
以上により本発明では、複数のプロセスを複数のプロセッサで同時実行するモード(SMPモード)か、1つのプロセスを前記第1の複数のプロセッサで並列実行するモード(ASMPモード)かを識別する第1の情報を具備し、前記情報に応じて前記内容一致制御回路の動作を切り替えるので、各モードにあったキャッシュコヒーレント制御方式を選ぶことができる。例えば、SMPモードでは各プロセッサのキャッシュの内容をなるべく独立に保つことにより、無駄にコヒーレント機構を起動せずに複数プロセス実行のスループットを向上させることができる。一方ASMPモードでは、プログラムの実行部分(プロセスの並列動作部分を実行するモードと非並列動作部分を実行するモード)に応じて適したキャッシュコヒーレント方式をとることができ、1プロセスの並列実行の性能を向上させることができる。
【図面の簡単な説明】
【図1】本発明の実施形態の1つであるプロセッサシステムの全体構成図である。
【図2】本発明のプロセッサの構成図である。
【図3】例題プログラムである。
【図4】図3のプログラムの本発明における機械語命令列イメージである。
【図5】図3のプログラムの従来技術における機械語命令列イメージである。
【図6】キャッシュコヒーレンス方式を説明する状態遷移図である。
【図7】キャッシュコヒーレンス方式を説明する状態遷移図である。
【図8】本発明のプロセッサのデータキャッシュコヒーレント機構の構成図である。
【図9】本発明のプロセッサの命令キャッシュコヒーレント機構の構成図である。
【図10】本発明と従来技術のキャッシュ内容である。
【図11】本発明の動作切り替えモードビットの構成である。
【符号の説明】
51 データキャッシュ、
52 命令キャッシュ、
50 データユニット、
53 命令ユニット、
121 モードビット、
40 同期情報バス、
71〜77 データキャッシュコヒーレント回路、
123〜129 命令キャッシュコヒーレント回路。
Claims (7)
- 各々キャッシュを備える複数のプロセッサと、該プロセッサ群を結合する接続線と、前記キャッシュ間の内容一致制御回路とを備えるシステムにおいて、
前記プロセッサ群の内の第1の複数のプロセッサが、複数のプロセスを前記第1の複数のプロセッサで同時実行するモードか、1つのプロセスを前記第1の複数のプロセッサで並列実行するモードかを識別する第1の情報を具備し、
前記情報に応じて前記内容一致制御回路の動作を切り替えるマルチプロセッサシステム。 - 前記内容一致制御回路を、複数の機能ユニットから構成し、前記情報に応じて前記機能ユニットのいずれを起動するかを選択する回路を備える請求項1のマルチプロセッサシステム。
- 1つのプロセスを前記第1の複数のプロセッサで並列実行するモードは、更に、プロセスの並列動作部分を実行するモードと非並列動作部分を実行するモードとを有し、
前記並列動作部分を実行するモードと非並列動作部分を実行するモードとを切り替える手段と、
前記並列動作部分を実行するモードと非並列動作部分を実行するモードに応じて前記内容一致制御回路の動作を切り替える手段とを有する請求項1のマルチプロセッサシステム。 - 前記内容一致制御回路を複数の機能ユニットから構成し、
該機能ユニットは、他のプロセッサのキャッシュ更新内容を取り込む回路を含み、
前記1つのプロセスを前記第1の複数のプロセッサで並列実行するモードであり、かつ、非並列動作部分を実行するモードである場合は、前記キャッシュ更新内容取り込み回路を起動する請求項3のマルチプロセッサシステム。 - 前記内容一致制御回路を複数の機能ユニットから構成し、
該機能ユニットは、他のプロセッサのキャッシュ更新内容を取り込む回路を含み、
前記1つのプロセスを前記第1の複数のプロセッサで並列実行するモードであり、かつ、並列動作部分を実行するモードである場合は、前記キャッシュ更新内容取り込み回路を抑止する請求項3のマルチプロセッサシステム。 - 前記内容一致制御回路は、他のプロセッサのキャッシュ更新内容を取り込む機能を有し、1つのプロセスを前記第1の複数のプロセッサで並列実行するモードであり、かつ、非並列動作部分を実行するモードである場合は、前記キャッシュ更新内容取り込み機能を起動する請求項3のマルチプロセッサシステム。
- 前記第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 JPH1097465A (ja) | 1998-04-14 |
JP3820645B2 true 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) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0315504D0 (en) | 2003-07-02 | 2003-08-06 | Advanced Risc Mach Ltd | Coherent multi-processing system |
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 |
WO2009110084A1 (ja) * | 2008-03-06 | 2009-09-11 | 富士通株式会社 | プロセス制御方法 |
JP5411530B2 (ja) * | 2009-03-04 | 2014-02-12 | キヤノン株式会社 | 並列処理プロセッサシステム |
WO2011158320A1 (ja) | 2010-06-14 | 2011-12-22 | 富士通株式会社 | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム |
-
1996
- 1996-09-20 JP JP24959396A patent/JP3820645B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1097465A (ja) | 1998-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3927556B2 (ja) | マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ | |
KR100308677B1 (ko) | 복수l1캐쉬라인의파이프라인형스누핑 | |
US6636949B2 (en) | System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing | |
US5796977A (en) | Highly pipelined bus architecture | |
US8321634B2 (en) | System and method for performing memory operations in a computing system | |
KR19980063489A (ko) | 멀티스레드 프로세서의 명령어 및 연관된 인출 요청의 백그라운드 완료 | |
JP2000010942A (ja) | マルチプロセッサ・システム | |
JPH0775010B2 (ja) | 多重処理システムのコヒーレンス手段 | |
JPH0648479B2 (ja) | 多重プロセッサ計算機システムのための記憶サブシステム | |
JP2000029857A (ja) | 個々のプロセッサの早期リリ―スによるシステム・シリアル化方法 | |
GB2412204A (en) | Method of operating multi-threading apparatus to execute single-thread program | |
JP2020523674A (ja) | システム内のキャッシュ転送のオーバーヘッドの削減 | |
EP0669579B1 (en) | Coherence index generation for use by an input/output adapter | |
JPH0950400A (ja) | マルチプロセッサシステム | |
JP4507563B2 (ja) | マルチプロセッサシステム | |
CN106201939B (zh) | 面向gpdsp架构的多核目录一致性装置 | |
US5875468A (en) | Method to pipeline write misses in shared cache multiprocessor systems | |
JP3820645B2 (ja) | マルチプロセッサシステム | |
WO1997004392A1 (en) | Shared cache memory device | |
CN113900968B (zh) | 多副本非原子写的存储序同步操作实现方法与实现装置 | |
JP2000330791A (ja) | コンピュータシステムおよびその動作方法 | |
JP5549694B2 (ja) | 超並列計算機、同期方法、同期プログラム | |
JPH0816475A (ja) | マルチプロセッサシステム | |
JPH04340145A (ja) | キャッシュメモリ装置 | |
JP4948141B2 (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 |