特開2015-219727(P2015-219727A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
<>
  • 特開2015219727-メモリアクセストレース方法 図000003
  • 特開2015219727-メモリアクセストレース方法 図000004
  • 特開2015219727-メモリアクセストレース方法 図000005
  • 特開2015219727-メモリアクセストレース方法 図000006
  • 特開2015219727-メモリアクセストレース方法 図000007
  • 特開2015219727-メモリアクセストレース方法 図000008
  • 特開2015219727-メモリアクセストレース方法 図000009
  • 特開2015219727-メモリアクセストレース方法 図000010
  • 特開2015219727-メモリアクセストレース方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2015-219727(P2015-219727A)
(43)【公開日】2015年12月7日
(54)【発明の名称】メモリアクセストレース方法
(51)【国際特許分類】
   G06F 11/30 20060101AFI20151110BHJP
【FI】
   G06F11/30 305H
   G06F11/30 320C
【審査請求】未請求
【請求項の数】7
【出願形態】OL
【全頁数】11
(21)【出願番号】特願2014-102910(P2014-102910)
(22)【出願日】2014年5月17日
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【復代理人】
【識別番号】100134740
【弁理士】
【氏名又は名称】小池 文雄
(72)【発明者】
【氏名】大庭 信之
(72)【発明者】
【氏名】岡崎 篤也
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA11
5B042GA15
5B042GA32
5B042GA33
5B042HH20
5B042JJ29
5B042JJ41
5B042MC03
5B042MC06
5B042MC35
(57)【要約】      (修正有)
【課題】相互に通信可能な少なくとも2以上の演算装置を含み、演算装置の各々は、キャッシュを備えると共に対応するメモリに接続するシステムにおいて、メモリのいずれか1つへアクセスする演算装置を特定するための方法を提供する。
【解決手段】本発明の方法は、(a)メモリのいずれか1つへのメモリアクセスをモニターするステップS11と、(b)演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップS12と、(c)メモリアクセスに関する情報とキャッシュ・コヒーレンシ・コマンドに関する情報とからメモリのいずれか1つへアクセスする演算装置を特定するステップS13と、を含む。
【選択図】図3
【特許請求の範囲】
【請求項1】
相互に通信可能な少なくとも2以上の演算装置を含み、前記演算装置の各々は、キャッシュを備えると共に対応するメモリに接続するシステムにおいて、前記メモリのいずれか1つへアクセスする演算装置を特定するための方法であって、
前記メモリのいずれか1つへのメモリアクセスをモニターするステップと、
前記演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップと、
前記メモリアクセスに関する情報と前記キャッシュ・コヒーレンシ・コマンドに関する情報とから前記メモリのいずれか1つへアクセスする演算装置を特定するステップと、を含む方法。
【請求項2】
前記メモリのいずれか1つへのメモリアクセスをモニターするステップは、前記メモリのいずれか1つに接続するメモリバスを介して前記メモリアクセスに関する情報を取得し、当該情報を保管するステップを含む、請求項1に記載の方法。
【請求項3】
前記演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップは、
前記演算装置間のインターコネクトを介して前記キャッシュ・コヒーレンシ・コマンドをモニターし、前記キャッシュ・コヒーレンシ・コマンドに関する情報を保管するステップを含む、請求項1にまたは2に記載の方法。
【請求項4】
前記メモリのいずれか1つへアクセスする演算装置を特定するステップは、
前記キャッシュ・コヒーレンシ・コマンドに関する情報の履歴の中から前記メモリアクセスに関する情報中のメモリアドレスと同じメモリアドレスを含む前記キャッシュ・コヒーレンシ・コマンドを特定するステップと、
特定された前記キャッシュ・コヒーレンシ・コマンドを前記メモリアクセスのタイミングに最も近いタイミングで出力した演算装置を前記メモリのいずれか1つへアクセスする演算装置として特定するステップと、を含む請求項3に記載の方法。
【請求項5】
前記メモリアクセスに関する情報は、アクセスタイムと、コマンドの種類と、メモリアドレスとを含み、
前記キャッシュ・コヒーレンシ・コマンドに関する情報は、コマンド発生タイムと、コマンドの種類と、メモリアドレスと、コマンドを出力した演算装置のIDとを含む、請求項1〜4のいずれか1項に記載の方法。
【請求項6】
相互にインターコネクトを介して通信可能な少なくとも2以上の演算装置を含み、前記演算装置の各々は、キャッシュを備えると共にメモリバスを介して対応するメモリに接続するシステムにおいて、前記メモリのいずれか1つである第1メモリへアクセスする演算装置を特定するための方法であって、
前記第1メモリに接続する前記メモリバスを介して前記第1メモリへのメモリアクセスをモニターするステップと、
前記演算装置間の前記インターコネクトを介してキャッシュ・コヒーレンシ・コマンドをモニターし、当該コマンドに関する情報を保管するステップと、
前記コマンドに関する情報の履歴の中から前記第1メモリへのメモリアクセスのメモリアドレスと同じメモリアドレスを含むコマンドを特定するステップと、
特定された前記コマンドを前記第1メモリへのメモリアクセスのタイミングに最も近いタイミングで出力した演算装置を前記第1メモリへアクセスする演算装置として特定するステップと、を含む方法。
【請求項7】
請求項1〜6のいずれか1項の方法の各ステップを実行するためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリアクセストレース方法に関し、より具体的には、マルチプロセッサシステムにおいて、共有されるメモリへアクセスするプロセッサを特定するための方法に関する。
【背景技術】
【0002】
キャッシュ、メモリコントローラ、CPU間インターコネクトなどのハードウェアのデザイン/チューニング、あるいはVM、OS、アプリケーションなどのソフトウェアのデザイン/チューニングを行うための方法の一つにメモリアクセストレースがある。メモリアクセストレースは、一般にメモリバスの信号をプローブし、そのコマンド、アドレス、及びデータを記録するものである。
【0003】
NUMA(Non-Uniform Memory Access)に代表されるようなアーキテクチャを採用する共有メモリ型マルチプロセッサシステムでは、メモリアクセストレースとして、例えば、CPUからなるNUMA構成のサーバが、各CPUと対応するローカルメモリ(DIMM)の間のメモリバス(MB)信号をプローブし、その動きを記録することが行われる。
【0004】
一方で、ハードウェアあるいはソフトウェアのより高度な動作解析やチューニングを行うために、メモリアクセスに注目し、そのメモリアクセスがどのCPUから発行されたものか知りたい場合がある。例えば、NUMA構成のシステムでは、ローカルメモリ及びリモートメモリに対して発生したメモリアクセスが、どのCPUによって行われたかを特定したいという要求がある。
【0005】
メモリバス上には、アドレスとリード/ライトの情報は流れているが、アクセス要求元のCPUを特定する情報は流れていない。したがって、従来のメモリアクセストレースでは、アクセス要求元のCPUを特定することはできない。そのため、例えば、CPU間のインターコネクト(CI)にプローブを接続して、流れるリード/ライトパケットをモニターする必要がある。しかし、アクセス要求元のCPUを特定するには、全てのCPU間のインターコネクトをモニターしなければならないため電気的、機械的に大きな労力が必要である。また、ローカルメモリへのアクセスは、CPU間のインターコネクトを通らないので、インターコネクトをモニターするだけでは、直接的にアクセス要求元のCPUを特定することはできない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−152665
【特許文献2】特開2006−318412
【特許文献3】特開2009−193604
【発明の概要】
【発明が解決しようとする課題】
【0007】
したがって、本発明の目的は、相互に通信可能な少なくとも2以上の演算装置の各々が、キャッシュを備えると共に対応するメモリに接続するマルチプロセッサシステムにおいて、共有されるメモリのいずれか1つへアクセスする演算装置を特定するための方法を提供することである。
【課題を解決するための手段】
【0008】
本発明は、相互に通信可能な少なくとも2以上の演算装置を含み、演算装置の各々は、キャッシュを備えると共に対応するメモリに接続するシステムにおいて、メモリのいずれか1つへアクセスする演算装置を特定するための方法を提供する。その方法は、(a)メモリのいずれか1つへのメモリアクセスをモニターするステップと、(b)演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップと、(c)メモリアクセスに関する情報とキャッシュ・コヒーレンシ・コマンドに関する情報とからメモリのいずれか1つへアクセスする演算装置を特定するステップと、を含む。
【0009】
本発明の一態様では、メモリのいずれか1つへのメモリアクセスをモニターするステップ(a)は、メモリのいずれか1つに接続するメモリバスを介してメモリアクセスに関する情報を取得し、当該情報を保管するステップを含む。
【0010】
本発明の一態様では、演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップ(b)は、演算装置間のインターコネクトを介してキャッシュ・コヒーレンシ・コマンドをモニターし、キャッシュ・コヒーレンシ・コマンドに関する情報を保管するステップを含む。
【0011】
本発明の一態様では、メモリのいずれか1つへアクセスする演算装置を特定するステップ(c)は、(c1)キャッシュ・コヒーレンシ・コマンドに関する情報の履歴の中からメモリアクセスに関する情報中のメモリアドレスと同じメモリアドレスを含むキャッシュ・コヒーレンシ・コマンドを特定するステップと、(c2)特定されたキャッシュ・コヒーレンシ・コマンドをメモリアクセスのタイミングに最も近いタイミングで出力した演算装置を前記メモリのいずれか1つへアクセスする演算装置として特定するステップと、を含む。
【0012】
本発明の一態様では、メモリアクセスに関する情報は、アクセスタイムと、コマンドの種類と、メモリアドレスとを含み、キャッシュ・コヒーレンシ・コマンドに関する情報は、コマンド発生タイムと、コマンドの種類と、メモリアドレスと、コマンドを出力した演算装置のIDとを含む。
【図面の簡単な説明】
【0013】
図1】本発明の方法を実行するマルチプロセッサシステムの構成例を示すブロック図である。
図2】本発明の方法を実行するマルチプロセッサシステムの構成例を示すブロック図である。
図3】本発明の方法の基本フローを示す図である。
図4】本発明の一実施例の構成及び信号の流れを示す図である。
図5】本発明の一実施例の構成及び信号の流れを示す図である。
図6】本発明の一実施例の構成及び信号の流れを示す図である。
図7】本発明の一実施例の構成及び信号の流れを示す図である。
図8】本発明の一実施例の構成及び信号の流れを示す図である。
図9】本発明の一実施例の構成及び信号の流れを示す図である。
【発明を実施するための形態】
【0014】
図面を参照しながら本発明の実施の形態を説明する。図1図2は、本発明の方法を実行する実行するマルチプロセッサシステムの構成例を示すブロック図である。図1図2は、NUMA(Non-Uniform Memory Access)方式の共有メモリ型マルチプロセッサシステム100の構成例である。なお、図1図2においては、NUMA方式の4つのプロセッサ(以下、「CPU」と呼ぶ)CPU1−4を含む例を示しているが、本発明を実行する構成はこれに限られず、基本的にメモリを共有する少なくとも2以上のCPUを含むマルチプロセッサシステムにおいて実行可能である
【0015】
図1において、各ノードを構成するCPU1〜4の各々とメモリM1〜M4の各々が対応するメモリバス10を介して相互に通信可能に接続されている。各CPU1〜4は、キャッシュを備え、さらにインターコネクト20を介して相互に通信可能に接続されている。メモリM1〜M4の各々は、ローカルメモリあるいはリモートメモリとして各CPUに共有される。メモリM1〜M4は、例えば複数のDRAMを含むメモリモジュール(例えば、DIMM)からなる。図1の例では、全CPUから等価にアクセス可能なグローバルなメモリとしてメモリMMも例示されている。
【0016】
図2は、図1の共有メモリ型マルチプロセッサシステム100構成例を本発明の説明のために構成し直したブロック(イメージ)図である。図2では、図1のインターコネクト20がより明確になるように、符号I1〜I6で指示されるラインによって、各CPU間のインターコネクトを示している。また、各ノードにおけるメモリバスも符号b1〜b4のラインで示している。本発明の方法では、下記に説明するように、符号30でイメージされるプローブを用いて、メモリバスb1〜b4のいずれか1つまたは2以上、及びインターコネクトI1〜I6のいずれか1つまたは2以上をモニターすることにより、より正確にはそのモニター結果(情報)を利用して、共有されるメモリM1〜M4の各々にアクセス(R/W)するCPUを特定する。
【0017】
図2及び図3を参照しながら本発明の方法のフローについて説明する。図3は、本発明の方法の基本的なフローを示す図である。図3のフローを含む本発明の方法は、例えば、上述した共有メモリ型マルチプロセッサシステム100を備えるコンピュータ(サーバ)が、メモリ(コンピュータがアクセス可能なHDD等)に格納された所定のソフトウェアを呼び出して実行することにより実施される。
【0018】
図3のステップS11において、メモリM1〜M4のいずれか1つへのメモリアクセスをモニターする。そのモニターは、プローブ30をメモリバスb1〜b4のいずれか1つまたは2以上に接続して、バス上の信号からメモリアクセスに関する情報を取得し、その情報を所定のメモリ(コンピュータがアクセス可能なHDD等)に保管することにより行う。メモリアクセスに関する情報には、例えば、アクセスタイム、コマンドの種類、及びメモリアドレスが含まれる。
【0019】
ステップS12において、CPU1〜4間のキャッシュ・コヒーレンシ・コマンドをモニターする。そのモニターは、プローブ30をインターコネクトI1〜I6のいずれか1つまたは2以上に接続して、インターコネクト上の信号からそのキャッシュ・コヒーレンシ・コマンドに関する情報(パケット情報、プロトコル)を取得し、その情報を所定のメモリ(コンピュータがアクセス可能なHDD等)に保管することにより行う。そのコマンドに関する情報には、例えば、コマンド発生タイム、コマンドの種類、メモリアドレス、及びコマンドを出力したCPUのIDが含まれる。
【0020】
ステップS13において、ステップS11で取得したメモリアクセスに関する情報とステップS12で取得したキャッシュ・コヒーレンシ・コマンドに関する情報とから、メモリM1〜M4のいずれか1つへアクセスするCPUを特定する。その特定は、コンピュータによって実行される、メモリに保管された情報の履歴を用いるオフライン解析として、以下の手順でおこなうことができる。
【0021】
(i)メモリに保管されたキャッシュ・コヒーレンシ・コマンドに関する情報の履歴の中から、メモリに保管された特定のメモリ(M1〜M4のいずれか)に対するメモリアクセスに関する情報中のメモリアドレスと同じメモリアドレスを含むキャッシュ・コヒーレンシ・コマンドを特定する。
(ii)特定されたキャッシュ・コヒーレンシ・コマンドをメモリアクセスのタイミングに最も近い(最新/最後の)タイミングで出力したCPUをそのメモリへアクセスするCPUとして特定する。
【0022】
上述したステップS13のアクセスするCPUの特定に関して、以下に述べる実施例において、図4図9を参照しながら具体的に説明する。なお、以下の実施例においては、図2のシステム100において、MESIプロトコルを用いてキャッシュ・コヒーレンシを確保するためのメモリ制御(キャッシュ・コヒーレンシ制御)を行う場合の例を示しているが、本発明はこのMESIプロトコルに限定されず他のMESIFプロトコル等のブロードキャスト(broadcast)ベースのキャッシュ・コヒーレンシ制御全般に適用可能である。
【実施例1】
【0023】
図4を参照する。CPU1のキャッシュラインがI(Invalid:無効)状態にあるとする。CPU1がローカルメモリM1にメモリアクセス(リード)A1を行い、さらに、他のCPU2〜4に対して、リードするアドレスのデータと同じデータを保有しているか否かを確認するべく、キャッシュ・コヒーレンシ・コマンドC1〜C3を送ったとする。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。メモリアクセスA1の情報には、既に上述した、例えば、アクセスタイム、コマンドの種類、及びメモリアドレスが含まれる。なお、以下の実施例においてもその情報の内容は同様である。プローブ2によりインターコネクトI1上のキャッシュ・コヒーレンシ・コマンドC1の情報が取得されて保管される。そのコマンドC1の情報には、既に上述した、例えば、コマンド発生タイム、コマンドの種類、メモリアドレス、及びコマンドを出力したCPUのIDが含まれる。なお、以下の実施例においてもその情報の内容は同様である。
【0024】
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC1をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU1がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC1の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU1がメモリM1へアクセス(リード)したCPUとして特定される。
【実施例2】
【0025】
図5を参照する。図4の場合と違って、CPU4のキャッシュラインがI(Invalid:無効)状態にあるとする。CPU4がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(リード)A1を行い、他のCPU2、3に対して、リードするアドレスのデータと同じデータを保有しているか否かを確認すべく、キャッシュ・コヒーレンシ・コマンドC1、C2を送ったとする。この場合、プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。プローブ5によりインターコネクトI6上のキャッシュ・コヒーレンシ・コマンドC2の情報が取得されて保管される。
【0026】
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC2をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU4がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC2の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU4がメモリM1へアクセス(リード)したCPUとして特定される。
【実施例3】
【0027】
再び図4を参照する。CPU1、3、4の3つのキャッシュラインがS(Shared:共有)状態にあるとする。CPU1がローカルメモリM1にメモリアクセス(ライト)A1を行い、他のCPU2〜4に対して、ライトするアドレスのデータと同じデータの無効を伝えるべく、キャッシュ・コヒーレンシ・コマンドC1〜C3を送ったとする。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。プローブ2によりインターコネクトI1上のキャッシュ・コヒーレンシ・コマンドC1の情報が取得されて保管される。
【0028】
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC1をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU1がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC1の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU1がメモリM1へアクセス(ライト)したCPUとして特定される。
【実施例4】
【0029】
再び図5を参照する。CPU2、4の2つのキャッシュラインがS(Shared:共有)状態にあるとする。CPU4がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(ライト)A1を行い、他のCPU2、3に対して、ライトするアドレスのデータと同じデータの無効を指示すべく、キャッシュ・コヒーレンシ・コマンドC1、C2を送ったとする。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。プローブ5によりインターコネクトI6上のキャッシュ・コヒーレンシ・コマンドC2の情報が取得されて保管される。
【0030】
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC2をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU4がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC2の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU4がメモリM1へアクセス(ライト)したCPUとして特定される。
【実施例5】
【0031】
図6を参照する。CPU2のキャッシュラインがM(Modified:変更)状態にあり、そのキャッシュラインが追い出される(Cast out)ケースである。CPU2がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(ライト)A1を行ったとする。プローブ1、2によりバスb1及びインターコネクトI1上のメモリアクセスA1の情報が取得されて保管される。ここで、M状態のキャッシュラインの追い出し(Cast out)であるから、CPU2はCPU3とCPU4へスヌープ(Snoop)リクエストを出さないことに留意されたい。
【0032】
保管された情報の履歴から、メモリM1へのメモリアクセスA1の情報中のアドレスと同じアドレスに最後(最新)にアクセス(ライト)したCPU2がメモリM1へアクセス(ライト)したCPUとして特定される。
【実施例6】
【0033】
図7を参照する。上述した実施例2(図5)の経過後において、CPU4のキャッシュラインがM(Modified:変更)状態にあるとする。CPU4がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(ライト)A1を行ったとする。その際、CPU4は、M状態にあるキャッシュラインの追い出し(Cast out)なので、他のCPUに対して、キャッシュ・コヒーレンシ・コマンドC1、C2は送らない。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。
【0034】
保管された情報の履歴から、メモリM1へのメモリアクセスA1の情報中のアドレスと同じアドレスに最後(最新)にアクセス(ライト)したCPU4がメモリM1へアクセス(ライト)したCPUとして特定される。
【実施例7】
【0035】
図8を参照する。上述した実施例1(図4)の経過後において、CPU1のキャッシュラインがM(Modified:変更)状態にあるとする。CPU1がローカルメモリM1にM状態のキャッシュラインを追い出す(Cast out)ため、メモリアクセス(ライト)A1を行ったとする。その際、CPU1は、他のCPUに対して、キャッシュ・コヒーレンシ・コマンドC1、C2は送らない。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。
【0036】
保管された情報の履歴から、メモリM1へのメモリアクセスA1の情報中のアドレスと同じアドレスに最後(最新)にアクセス(リードまたはライト)したCPU1がメモリM1へアクセス(リードまたはライト)したCPUとして特定される。
【実施例8】
【0037】
図9を参照する。最後の実施例として、2つのメモリアクセスが競合する場合について説明する。CPU2とCPU3が、同時にリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(リード)A1、A2を行ったとする。プローブ1によりバスb1上のメモリアクセスA1、A2の情報が取得されて保管される。
【0038】
この場合、CPU1の内部キャッシュ/メモリのハードウェア・ロジックがモニターされない限り、保管された情報の履歴からは、そのメモリアクセスA1、A2を行ったCPUがCPU2またはCPU3のいずれかであるかを厳密には決定することはできない。すなわち、そのメモリアクセスA1、A2を行ったCPUがCPU2及びCPU3であることを特定することに留まる。
【0039】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【0040】
10 メモリ
20 インターコネクト
30 プローブ
100 共有メモリ型マルチプロセッサシステム
図1
図2
図3
図4
図5
図6
図7
図8
図9