JPH0877068A - マルチプロセッサシステム及びメモリアロケーション最適化方法 - Google Patents

マルチプロセッサシステム及びメモリアロケーション最適化方法

Info

Publication number
JPH0877068A
JPH0877068A JP6212665A JP21266594A JPH0877068A JP H0877068 A JPH0877068 A JP H0877068A JP 6212665 A JP6212665 A JP 6212665A JP 21266594 A JP21266594 A JP 21266594A JP H0877068 A JPH0877068 A JP H0877068A
Authority
JP
Japan
Prior art keywords
data
read
data structure
cache
cache line
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.)
Pending
Application number
JP6212665A
Other languages
English (en)
Inventor
Hideaki Hirayama
秀昭 平山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP6212665A priority Critical patent/JPH0877068A/ja
Publication of JPH0877068A publication Critical patent/JPH0877068A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】キャッシュの能力を活かしたメモリアロケーシ
ョンを可能にする。 【構成】メモリ上のデータが所定のキャッシュライン単
位で操作されるマルチプロセッサシステムにおいて、原
始プログラムに対して実行可能な目的プログラムを作成
するための解析をプログラム解析部11によって行なう
際に読み込みのみの対象となるデータを認識するデータ
認識手段12と、自システムにおけるキャッシュライン
のサイズを認識するキャッシュサイズ認識手段14と、
解析の結果に応じてコード生成部13によってコード生
成を行なう際に、プログラムが同時にアクセスする複数
のデータが同時にメモリからキャッシュに格納されるよ
うに、読み込みのみのデータを読み込みのみのデータと
同時にアクセスされる読み書きデータが配置される同じ
キャッシュライン上に配置するデータ配置手段15とを
具備して構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、キャッシュを持った複
数のプロセッサが接続されたマルチプロセッサシステム
及びメモリアロケーションの最適化方法に関する。
【0002】
【従来の技術】近年、プロセッサの演算処理の高速化の
割合に比べると、メモリのアクセス処理の高速化の割合
は極めて低く、プロセッサの演算処理が速くなっても、
メモリに対するアクセス処理が速くならないため、シス
テム全体の性能が上がらないという問題があった。
【0003】この問題を解決するために、キャッシュと
いう技術が存在する。キャッシュはプロセッサ内、ある
いはプロセッサの近くに配置した小容量の高速メモリ
で、プロセッサがアクセスするメモリ上のデータの高速
なバッファとしての役割を果たしている。
【0004】また、一方でマルチプロセッサ技術が発展
し、キャッシュを持った多数のプロセッサが相互に接続
されるようになってきた。マルチプロセッサシステムに
おいては、多数のプロセッサが各々メモリのコピーをそ
のキャッシュに保持してしまうため、キャッシュ間のデ
ータの整合性をとる必要が出てくる。このデータの整合
性をとる技術がスヌープという機能である。
【0005】スヌープ機能としては、様々な方式がある
が、何れの方式においても、例えばキャッシュをもつ複
数のプロセッサがメモリ上の共通するデータを順番に更
新すると、対象とするデータを各プロセッサのキャッシ
ュの間で順番に受け渡すことによって一貫性を保つ。
【0006】しかし、多数のプロセッサの間でデータを
共有すると、キャッシュ間でのスヌープによりデータの
整合性をとるための操作(データの受け渡し)が増加し
てしまい、スヌープの操作によってプロセッサ間を接続
するバスが飽和してしまい、マルチプロセッサシステム
性能が向上しないという問題があった。
【0007】
【発明が解決しようとする課題】このように従来のキャ
ッシュを持った複数のプロセッサが接続されたコンピュ
ータシステムにおいては、各プロセッサが持つキャッシ
ュのデータの整合性をとるために、バスのトラフィック
が増大し、マルチプロセッサシステム性能を低下させて
しまう場合があった。
【0008】本発明は前記のような事情を考慮してなさ
れたもので、キャッシュの能力を活かしたマルチプロセ
ッサシステム及びメモリアロケーションの最適化方法を
提供することを目的とする。
【0009】
【課題を解決するための手段】本発明は、キャッシュを
持った複数のプロセッサが接続されたマルチプロセッサ
システムであって、メモリ上のデータが所定のキャッシ
ュライン単位で操作されるマルチプロセッサシステムに
おいて、原始プログラムに対して実行可能な目的プログ
ラムを作成するための解析を行なう際に読み込みのみの
対象となるデータを認識するデータ認識手段と、自シス
テムにおけるキャッシュラインのサイズを認識するキャ
ッシュサイズ認識手段と、解析の結果に応じてコード生
成を行なう際に、前記データ認識手段及び前記キャッシ
ュサイズ認識手段による認識結果に基づいて、プログラ
ムが同時にアクセスする複数のデータが同時にメモリか
らキャッシュに格納されるように、読み込みのみのデー
タを前記読み込みのみのデータと同時にアクセスされる
読み書きデータが配置される同じキャッシュライン上に
配置するデータ配置手段とを具備したことを特徴とす
る。
【0010】また、前記データ配置手段によってデータ
を配置する際に、前記読み込みのみのデータを配置すべ
きキャッシュラインが複数存在する場合に、前記読み込
みのみのデータを複数のキャッシュライン中にコピーし
て配置するコピーデータ配置手段をさらに具備したこと
を特徴とする。
【0011】また本発明は、データ構造にロック変数を
付加し、データ構造にアクセスする場合にはロック変数
をセットしてからデータ構造にアクセスし、データ構造
へのアクセスが終わった後にロック変数をリセットする
ことにより、マルチプロセッサ間で共有するデータ構造
を排他制御するマルチプロセッサシステムにおいて、原
始プログラムに対して実行可能な目的プログラムを作成
するための解析を行なう際に、プログラム中で使用され
ているデータ構造を排他制御するロック変数を検索する
ためのロック変数検索手段と、前記ロック変数検索手段
によって検索されたロック変数によって保護されるデー
タ構造を検索するためのデータ構造検索手段と、解析結
果に応じてコード生成を行なう際に、前記ロック変数検
索手段及び前記データ構造検索手段による検索結果に基
づいて、1つのキャッシュライン中にロック変数によっ
て保護されたデータ構造を1個以下しかアロケーション
しないようにするデータ構造アロケーション手段とを具
備したことを特徴とする。
【0012】また、キャッシュライン中のアロケーショ
ンされたデータ構造以外の部分に、前記データ構造を保
護するロックをセットしてからリセットするまでの間に
アクセスする読み込みのデータのコピーをアロケーショ
ンするコピーデータ配置手段をさらに具備したことを特
徴とする。
【0013】また、原始プログラムに対して実行可能な
目的プログラムを作成するための解析を行なう際に入出
力処理のバッファを認識するバッファ確認手段と、解析
結果に応じてコード生成を行なう際に、前記バッファ認
識手段による認識結果に基づいて、入出力処理のバッフ
ァを1つのキャッシュライン中に1個以下しかアロケー
ションしないようにするアロケーション手段とを具備し
たことを特徴とする。
【0014】
【作用】このような構成によれば、キャッシュを持った
複数のプロセッサが接続されたマルチプロセッサシステ
ムにおいて、そのキャッシュの能力を活かして性能を上
げることが可能となる。
【0015】すなわち、読み込みのみのデータを、読み
込みのみのデータと同時にアクセスされる読み書きデー
タが配置されるのと同じキャッシュライン上に配置する
ことにより、一方のデータに対する処理を実行する際に
他方のデータもキャッシュに存在することになるので、
メモリからのデータ転送の必要回数が削減される。
【0016】さらに、読み込みのみのデータを配置すべ
きキャッシュラインが複数存在する場合には、読み書き
データが配置されるキャッシュラインのそれぞれに読み
込みのみのデータをコピーして配置することにより、キ
ャッシュ間でのデータの受け渡し等の処理を低減させる
ことができる。
【0017】また、マルチプロセッサ間で共有されるデ
ータ構造が排他制御される場合に、ロック変数によって
保護されたデータ構造を1つのキャッシュライン中に1
個以下しかアロケーションしないようにすることで、ロ
ック制御に伴って本来ロックの不要なデータ構造に対す
るアクセスができなくなってしまうことが回避される。
【0018】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図1は本発明の実施例に係わるコンピュータシス
テムの概略構成を示すブロック図である。図1に示すよ
うに、第1実施例におけるコンピュータシステムは、複
数のプロセッサ1a,1b,…と、プロセッサ1a,1
b,…に共有される共有メモリ2が、バス3によって接
続されたマルチプロセッサシステム構成となっている。
【0019】本発明が対象とするマルチプロセッサシス
テムは、キャッシュメモリと、プロセッサや共有メモリ
2との間のデータ転送は、所定の単位毎、すなわちキャ
ッシュライン毎に行なう。
【0020】プロセッサ1aには、キャッシュ4a、最
適化手段5aが設けられている。最適化手段5aは、共
有メモリ2に格納された最適化プログラム(コンパイ
ラ)を、プロセッサ1a上で実行することによって機能
が実現される。なお、他のプロセッサ1b,…にも、同
様にして、最適化手段5b,…を設けて実行させること
ができる。
【0021】最適化手段5aは、図2に示すような機能
によって構成されている。図2に示すように、最適化手
段5aは、プログラム解析部11、データ認識手段1
2、コード生成部13、キャッシュラインサイズ認識手
段14、及びデータ配置手段15によって構成されてい
る。
【0022】プログラム解析部11は、所定のプログラ
ム言語を用いて記述された原始プログラムに対して、コ
ンピュータで実行可能な目的プログラムを作成するため
の解析を行なうものである。プログラム解析部11は、
原始プログラムに対する字句解析、構文解析、意味解析
等を実行する。
【0023】データ認識手段12は、プログラム解析部
11によって解析された結果に基づいて、プログラム中
で使用されるデータのうち読み込みのみの対象となるデ
ータの存在を認識するものである。
【0024】コード生成部13は、プログラム解析部1
1における解析結果、及びデータ認識手段12による認
識結果に応じて、目的プログラムとなるコードを生成す
るものである。
【0025】キャッシュラインサイズ認識手段14は、
プログラムが動作する自システムのキャッシュラインサ
イズを認識するものである。データ配置手段15は、コ
ード生成部13によって生成されるコードのうち、デー
タに関して共有メモリ2への配置を決定するものであ
る。データ配置手段15は、データ認識手段12によっ
て認識された読み込みのみの対象とするデータを、その
読み込みのみのデータと同時にアクセスされる読み書き
が行われるデータが配置されるキャッシュラインと同じ
キャッシュラインに配置する。これにより、同時にアク
セスされるデータが、同時に共有メモリ2からキャッシ
ュに持ってこられるようになる。
【0026】図2に示す構成において、プログラム解析
部11及びコード生成部13は、コンパイラを構成す
る。さらに、コンパイラには、データ認識手段12及び
データ配置手段15による機能が付加されている。ま
た、キャッシュラインサイズ認識手段14は、例えばコ
ンピュータシステムにおけるOS(オペレーティングシ
ステム)の機能によって実現されるものとする。
【0027】次に、第1実施例の動作について説明す
る。最適化手段5aは、原始プログラムに対してコンパ
イルを行なう際、システムに実装されたキャッシュを有
効に利用できるように最適化を行なう。まず、プログラ
ム解析部11は、図示せぬ記憶装置に格納されているコ
ンパイルの対象とする原始プログラムについて解析を行
なう。この際、データ認識手段12は、読み込みのみに
使用されるデータを識別している。データ認識手段12
によって認識されたデータは、データ配置手段15によ
るデータ配置の際に考慮される。
【0028】コード生成部13は、プログラム解析部1
1による解析結果に基づいてコードを生成する。この
際、コード生成部13は、キャッシュラインサイズ認識
手段14により識別される自システムのキャッシュライ
ンサイズを考慮して、データに関するコード生成を行な
う。
【0029】図3は本発明の第1実施例の最適化手段5
aにおけるデータ配置手段15の処理の流れを示すフロ
ーチャートである。データ配置手段15は、コード生成
部13によって生成されたデータに関するコードを、キ
ャッシュを有効に利用できるようにキャッシュラインを
考慮してデータを配置する。
【0030】まず、データ配置手段15は、読み書きデ
ータをキャッシュライン中に配置する(ステップA
1)。その後、データ配置手段15は、ステップA1に
おいて配置が完了した読み書きデータの周辺(プログラ
ム実行過程の前後近く)でアクセスする読み込みのみの
データ(データ認識手段12によって認識されたデー
タ)が存在するか否かを調べる(ステップA2)。
【0031】ここで、対象とするデータが存在する場合
には、データ配置手段15は、その読み込みのみのデー
タがまだ配置されているか否かを調べる(ステップA
3)。まだ配置されていない場合には、データ配置手段
15は、その読み込みのみのデータを、ステップA1で
配置された読み書きデータ(現在対象としている読み込
みのみのデータの周辺にあるもの)と同じキャッシュラ
イン中に配置する(ステップA4)。
【0032】なお、ステップA3において、既に読み込
みのみのデータが何れかのキャッシュラインに配置され
ていると判別された場合には、データ配置手段15は、
その読み込みのみのデータの配置を行なわない。
【0033】こうして、全ての読み書きデータについ
て、それぞれの周辺に読み込みのみのデータがあれば、
このデータを読み書きのデータと同じキャッシュライン
中に配置する。
【0034】図4は共有メモリ2のキャッシュラインに
データが配置される様子を具体的に説明するための図で
ある。なお、図4(a)に示すプログラムは、便宜上、
原始プログラムの形式によって示している。
【0035】図3(a)に示すプログラム中の関数1
は、まず「データAを参照」して、続いて「データBを
更新」するものである。ここでデータAは読み込みのみ
に使用されるものとする。
【0036】この場合、読み書きされるデータBについ
ては、ステップA1において所定のキャッシュラインに
配置される。データAは、ステップA2において、「デ
ータBを更新」する処理の周辺に存在するものとして識
別され、ステップA4において、図3(b)に示すよう
に、データBが配置されたキャッシュラインの残りの部
分に配置される。
【0037】データAとデータBを同じキャッシュライ
ン中に配置することにより、プログラムを実行した際
(図4(a)に示す処理)、「データAを参照」した時
にデータAが共有メモリ2からキャッシュに転送され
て、同時に同一のキャッシュライン中に配置されている
データBもキャッシュに転送されて格納される。従っ
て、「データBを更新」する処理を実行する際、キャッ
シュには既にデータBが存在するので、共有メモリ2か
ら改めてデータを転送する必要がない。すなわち、キャ
ッシュを有効に利用することができる。
【0038】次に、本発明の第2実施例について説明す
る。第2実施例においては、第1実施例と同様に図1に
示すコンピュータシステム上で、第2実施例による最適
化手段40a,40b,…が設けられている。
【0039】最適化手段40aは、図5に示すような機
能によって構成されている。図5に示すように、最適化
手段40aは、プログラム解析部41、データ認識手段
42、コード生成部43、キャッシュラインサイズ認識
手段44、データ配置手段45、及びコピーデータ配置
手段46によって構成されている。
【0040】プログラム解析部41は、所定のプログラ
ム言語を用いて記述された原始プログラムに対して、コ
ンピュータで実行可能な目的プログラムを作成するため
の解析を行なうものである。プログラム解析部41は、
原始プログラムに対する字句解析、構文解析、意味解析
等を実行する。
【0041】データ認識手段42は、プログラム解析部
41によって解析された結果に基づいて、プログラム中
で使用されるデータのうち読み込みのみの対象となるデ
ータの存在を認識するものである。
【0042】コード生成部43は、プログラム解析部4
1における解析結果、及びデータ認識手段42による認
識結果に応じて、目的プログラムとなるコードを生成す
るものである。
【0043】キャッシュラインサイズ認識手段44は、
プログラムが動作する自システムのキャッシュラインサ
イズを認識するものである。データ配置手段45は、コ
ード生成部43によって生成されるコードのうち、デー
タに関して共有メモリ2への配置を決定するものであ
る。データ配置手段45は、データ認識手段42によっ
て認識された読み込みのみの対象とするデータを、その
読み込みのみのデータと同時にアクセスされる読み書き
が行われるデータが配置されるキャッシュラインと同じ
キャッシュラインに配置する。これにより、同時にアク
セスされるデータが、同時に共有メモリ2からキャッシ
ュに持ってこられるようになる。
【0044】コピーデータ配置手段46は、データ配置
手段45によって、ある読み込みのみの対象となるデー
タが既に他のキャッシュラインに配置されている場合
に、その読み込みのみのデータのコピーを作成して、そ
のデータと同時にアクセスされる読み書きが行なわれる
データが配置された同じキャッシュライン中に配置され
るようにするものである。
【0045】次に、第2実施例の動作について説明す
る。最適化手段40aは、原始プログラムに対してコン
パイルを行なう際、システムに実装されたキャッシュを
有効に利用できるように最適化を行なう。まず、プログ
ラム解析部41は、図示せぬ記憶装置に格納されている
コンパイルの対象とする原始プログラムについて解析を
行なう。この際、データ認識手段42は、読み込みのみ
に使用されるデータを識別している。データ認識手段4
2によって認識されたデータは、データ配置手段15及
びコピーデータ配置手段46によるデータ配置の際に考
慮される。
【0046】コード生成部43は、プログラム解析部4
1による解析結果に基づいてコードを生成する。この
際、コード生成部43は、キャッシュラインサイズ認識
手段44により識別された自システムのキャッシュライ
ンサイズを考慮して、データに関するコード生成を行な
う。
【0047】図6は本発明の第2実施例の最適化手段4
0aにおけるデータ配置手段45及びコピーデータ配置
手段46の処理の流れを示すフローチャートである。デ
ータ配置手段45は、コード生成部43によって生成さ
れたデータに関するコードを、キャッシュを有効に利用
できるようにキャッシュラインを考慮してデータを配置
する。
【0048】まず、データ配置手段45は、読み書きデ
ータをキャッシュライン中に配置する(ステップB)。
その後、データ配置手段45は、ステップB1において
配置が完了した読み書きデータの周辺(プログラム実行
過程の前後近く)でアクセスする読み込みのみのデータ
(データ認識手段42によって認識されたデータ)が存
在するか否かを調べる(ステップB2)。
【0049】ここで、対象とするデータが存在する場合
には、データ配置手段45は、その読み込みのみのデー
タが、他のキャッシュラインにまだ配置されているか否
かを調べる(ステップB3)。
【0050】まだ配置されていない場合には、データ配
置手段45は、その読み込みのみのデータを、ステップ
B1で配置された読み書きデータ(現在対象としている
読み込みのみのデータの周辺にあるもの)と同じキャッ
シュライン中に配置する(ステップB4)。
【0051】なお、ステップB3において、既に読み込
みのみのデータが何れかのキャッシュラインに配置され
ていると判別された場合には、コピーデータ配置手段4
6は、その読み込みのみのデータのコピーを作成する
(ステップB5)。
【0052】そして、コピーデータ配置手段46は、コ
ピーによって作成したデータを、そのデータと同時にア
クセスされる読み書きが行なわれるデータが配置される
のと同じキャッシュライン中に配置する(ステップB
6)。
【0053】図7は共有メモリ2のキャッシュラインに
データが配置される様子を具体的に説明するための図で
ある。なお、図7(a)に示すプログラムは、便宜上、
原始プログラムの形式によって示している。
【0054】図7(a)に示すプログラム中の関数1
は、まず「データAを参照」して、続いて「データBを
更新」するもので、関数2は、まず「データAを参照」
して、続いて「データCを更新」するものである。ここ
でデータAは読み込みのみに使用されるものとする。
【0055】この場合、読み書きされるデータB及びデ
ータCについては、ステップB1において、それぞれ所
定のキャッシュラインに配置される。関数1のデータA
は、ステップB2において、「データBを更新」する処
理の周辺に存在するものとして識別され、ステップB4
において、図7(b)に示すように、データBが配置さ
れたキャッシュラインの残りの部分に配置される。
【0056】さらに、ステップB3において、データA
が既に他のキャッシュラインに配置されていると判別さ
れるので、データAのコピーを作成して、データAと同
時にアクセスされる読み書きが行なわれるデータ、すな
わちデータCが配置されたキャッシュラインの残りの部
分に配置する。
【0057】データAとデータBを同じキャッシュライ
ン中に配置することにより、プログラムを実行した際
(図7(a)に示す関数1の処理)、「データAを参
照」した時にデータAが共有メモリ2からキャッシュに
転送されて、同時に同一のキャッシュライン中に配置さ
れているデータBもキャッシュに転送されて格納され
る。また、関数2の処理でデータAのコピーを参照した
時に、データAのコピーと同一キャッシュライン中に配
置されているデータCも、キャッシュに転送されて格納
される。従って、「データCを更新」する処理を実行す
る際、キャッシュには既にデータCが存在するので、共
有メモリ2から改めてデータを転送する必要がない。ま
た、読み込みのみのデータがコピーされて異なるキャッ
シュラインのそれぞれに配置されているので、データB
が配置されたキャッシュラインが、あるプロセッサのキ
ャッシュに存在しても、このデータを別のプロセッサの
キャッシュに転送する等の処理が不要となる。すなわ
ち、キャッシュを有効に利用することができる。
【0058】次に、本発明の第3実施例について説明す
る。第3実施例においては、第1実施例と同様に図1に
示すコンピュータシステム上で、第3実施例による最適
化手段70a,70b,…が設けられている。
【0059】一般に、マルチプロセッサシステムでは、
共有メモリ2中の共用データの排他制御の方法としてロ
ック操作がある。ロック操作では、ある共有データに対
して共有メモリ2上にロック変数を用意し、共有データ
を処理する前にロック変数を確保し、共有データをアク
セスした後でロック変数をクリアする。
【0060】プロセッサ上で実行されるプロセスは、ロ
ック変数を確保しようとする際に、既に他のプロセス
が、そのロック変数を確保している場合には、そのロッ
ク変数がクリアされるまで待ち状態となり、クリアされ
ると直ちにロック変数を確保する。こうして、複数のプ
ロセッサが同時に同じデータにアクセスして、データが
不整合になることを防いでいる。第3実施例におけるコ
ンピュータシステムは、このような排他制御を行なうも
のとする。
【0061】最適化手段70aは、図7に示すような機
能によって構成されている。図7に示すように、最適化
手段70aは、プログラム解析部71、ロック変数検索
手段72、データ構造検索手段73、コード生成部7
4、及びデータ構造アロケーション手段75によって構
成されている。
【0062】プログラム解析部71は、所定のプログラ
ム言語を用いて記述された原始プログラムに対して、コ
ンピュータで実行可能な目的プログラムを作成するため
の解析を行なうものである。プログラム解析部71は、
原始プログラムに対する字句解析、構文解析、意味解析
等を実行する。
【0063】ロック変数検索手段72は、プログラム解
析部71によって解析された結果に基づいて、プログラ
ム中で使用されているロック変数を検索する。データ構
造検索手段73は、プログラム解析部71によって解析
されるプログラム中で、ロック変数検索手段72によっ
て検索されたロック変数によって保護されるデータ構造
を検索するものである。
【0064】コード生成部74は、プログラム解析部7
1における解析結果に応じて、目的プログラムとなるコ
ードを生成するものである。データ構造アロケーション
手段75は、プログラム解析部71(ロック変数検索手
段72、データ構造検索手段73)で解析されたプログ
ラムをもとに、1つのキャッシュライン中に、ロック変
数で保護されたデータ構造が1個以下しか配置されない
ようにアロケーションを行なうものである。
【0065】図8に示す構成において、プログラム解析
部71及びコード生成部74は、コンパイラを構成す
る。プログラム解析部71には、さらにロック変数検索
手段72及びデータ構造検索手段73による機能が付加
されている。
【0066】次に、第3実施例の動作について、図9に
示すフローチャートを参照しながら説明する。まず、プ
ログラム解析部71は、コンパイルされる原始プログラ
ムについて解析を行なう。この際、ロック変数検索手段
72は、プログラム中で使用されているロック変数を検
索する(ステップC1)。また、データ構造検索手段7
3は、ロック変数検索手段72によって検索されたロッ
ク変数によって保護されるデータ構造を検索する(ステ
ップC2)。
【0067】コード生成部74は、プログラム解析部7
1による解析結果に基づいてコードを生成する。データ
構造アロケーション手段75は、コード生成部74によ
って生成されたデータに関するコードに対して、ステッ
プC2において検索されたデータ構造を、1つのキャッ
シュライン中にロック変数で保護されたデータ構造が1
個以下しか配置されないようにアロケーションを行なう
(ステップC3)。
【0068】図10は共有メモリ2のキャッシュライン
にデータが配置される様子を具体的に説明するための図
である。なお、図10(a)に示すプログラムは、便宜
上、原始プログラムの形式によって示している。
【0069】図10(a)に示すプログラム中の関数1
は、まず「ロック変数Aをロック」して、「データ構造
Bを更新」し、「ロック変数Aをアンロック」する。続
いて「ロック変数Cをロック」して、「データ構造Dを
更新」し、「ロック変数Cをアンロック」するものであ
る。
【0070】この場合、ステップC1においてロック変
数A及びロック変数Cが検索され、ステップC2におい
て、異なるロック変数A,Cでそれぞれ保護されたデー
タ構造B及びDが検索される。データ構造アロケーショ
ン手段75は、ステップC3において、図9(b)に示
すように、データ構造B及びDを各々異なるキャッシュ
ライン中に配置される。
【0071】データ構造Bとデータ構造Dを異なるキャ
ッシュラインに強制的に配置することにより、一方のデ
ータ構造がロックされたために、他方のデータ構造も使
用できなくことがなくなり、各キャッシュラインに配置
されたデータ構造を有効に利用することができる。
【0072】次に、本発明の第4実施例について説明す
る。第4実施例においては、第1実施例と同様に図1に
示すコンピュータシステム上で、第4実施例による最適
化手段100a,100b,…が設けられている。第4
実施例におけるコンピュータシステムも、第3実施例と
同様な排他制御を行なうものとする。
【0073】最適化手段100aは、図11に示すよう
な機能によって構成されている。図11に示すように、
最適化手段100aは、プログラム解析部101、ロッ
ク変数検索手段102、データ構造検索手段103、コ
ード生成部104、データ構造アロケーション手段10
5、及びコピーデータ配置手段106によって構成され
ている。
【0074】プログラム解析部101は、所定のプログ
ラム言語を用いて記述された原始プログラムに対して、
コンピュータで実行可能な目的プログラムを作成するた
めの解析を行なうものである。プログラム解析部101
は、原始プログラムに対する字句解析、構文解析、意味
解析等を実行する。
【0075】ロック変数検索手段102は、プログラム
解析部101によって解析された結果に基づいて、プロ
グラム中で使用されているロック変数を検索する。デー
タ構造検索手段103は、プログラム解析部101によ
って解析されるプログラム中で、ロック変数検索手段1
02によって検索されたロック変数によって保護される
データ構造を検索するものである。
【0076】コード生成部104は、プログラム解析部
101における解析結果に応じて、目的プログラムとな
るコードを生成するものである。データ構造アロケーシ
ョン手段105は、プログラム解析部101(ロック変
数検索手段102、データ構造検索手段103)で解析
されたプログラムをもとに、1つのキャッシュライン中
に、ロック変数で保護されたデータ構造が1個以下しか
配置されないようにアロケーションを行なうものであ
る。また、データ構造アロケーション手段105は、キ
ャッシュライン中のデータ構造が配置された部分以外の
領域に、そのデータ構造を保護するロック変数を獲得し
てから解放するまでの間に参照されるデータを配置す
る。
【0077】コピーデータ配置手段106は、データ構
造アロケーション手段105によって配置された、デー
タ構造を保護するロック変数を獲得してから解放するま
での間に参照されるデータが既に他のキャッシュライン
に配置されている場合に、そのデータが参照のみの対象
となる場合に限って、そのデータのコピーを配置するも
のである。
【0078】図11に示す構成において、プログラム解
析部101及びコード生成部104は、コンパイラを構
成する。プログラム解析部101には、さらにロック変
数検索手段102及びデータ構造検索手段103による
機能が付加され、コード生成部104には、さらにコピ
ーデータ配置手段106及びデータ構造アロケーション
手段105による機能が付加されている。102は、ロ
ック変数検索手段であり、プログラム中で使用されてい
るロック変数を検索する。104はロック変数によって
保護されたデータ構造を検索する手段である。本発明の
最適化コンパイラではプログラム解析部で解析されたプ
ログラムを基に、1つのキャッシュライン中に、ロック
で保護されたデータ構造が1個以下しか配置されないよ
うにする。そしてキャッシュライン中の、データ構造が
配置された部分以外の場所に、そのデータ構造を保護す
るロックを獲得してから解放するまでの間に参照するデ
ータを配置する。またもしそのデータが既に他のキャッ
シュライン中に配置されている場合には、そのデータが
参照のみの場合に限って、そのデータのコピーを配置す
る。
【0079】次に、第4実施例の動作について、図12
に示すフローチャートを参照しながら説明する。まず、
プログラム解析部101は、コンパイルされる原始プロ
グラムについて解析を行なう。この際、ロック変数検索
手段102は、プログラム中で使用されているロック変
数を検索する(ステップD1)。また、データ構造検索
手段103は、ロック変数検索手段102によって検索
されたロック変数によって保護されるデータ構造を検索
する(ステップD2)。
【0080】コード生成部104は、プログラム解析部
101による解析結果に基づいてコードを生成する。デ
ータ構造アロケーション手段105は、コード生成部1
04によって生成されたデータに関するコードに対し
て、ステップD2において検索されたデータ構造を、1
つのキャッシュライン中にロック変数で保護されたデー
タ構造が1個以下しか配置されないようにアロケーショ
ンを行なう(ステップD3)。
【0081】その後、データ構造アロケーション手段1
05は、ステップD3において配置が完了したデータ構
造について、そのデータ構造を保護するロック変数を獲
得してから解放するまでの間に参照するデータが存在す
るか否かを調べる(ステップD4)。
【0082】ここで、対象とするデータが存在する場合
には、データ構造アロケーション手段105は、そのデ
ータがまだ他のキャッシュラインに配置されていないか
否かを調べる(ステップD5)。
【0083】まだ配置されていない場合には、データ構
造アロケーション手段105は、そのデータを、ステッ
プD3で配置されたデータ構造が配置された部分以外の
領域に配置する(ステップD6)。
【0084】なお、ステップD5において、既に対象と
するデータ(ロック中に参照されるデータ)が何れかの
キャッシュラインに配置されていると判別された場合に
は、コピーデータ配置手段106は、そのデータのコピ
ーを作成する(ステップB5)。
【0085】そして、コピーデータ配置手段106は、
コピーによって作成したデータを、そのデータが参照の
みの場合に限って、データ構造が配置された同じキャッ
シュライン中に配置する(ステップD8)。
【0086】図13は共有メモリ2のキャッシュライン
にデータが配置される様子を具体的に説明するための図
である。なお、図13(a)に示すプログラムは、便宜
上、原始プログラムの形式によって示している。
【0087】図13(a)に示すプログラム中の関数1
は、まず「ロック変数A」をロックし、「データBを参
照」し、「データ構造Cを更新」し、「ロック変数Aを
アンロック」する。続いて「ロック変数Dをロック」し
て、「データBを参照」し、「データ構造Eを更新」
し、「ロック変数Dをアンロック」するものである。
【0088】この場合、ステップD3において異なるロ
ック変数A及びCでそれぞれ保護されたデータ構造C及
びEは、各々異なるキャッシュライン中に配置される。
また、図13(b)に示すように、データ構造C及びE
を保護するロック変数A及びDを獲得してから解放する
までの間に参照される読み込みのみの対象となるデータ
Bを、データ構造Cが配置されているキャッシュライン
の残りの部分に配置し、またデータBのコピーをデータ
構造Eが配置されているキャッシュラインの残りの部分
にそれぞれ配置する。
【0089】データ構造Cとデータ構造Eを異なるキャ
ッシュラインに強制的に配置することにより、一方のデ
ータ構造がロックされたために、他方のデータ構造も使
用できなくことがなくなり、さらにデータ構造を保護す
るロック変数を獲得してから解放するまでの間に参照さ
れるデータも同じキャッシュラインに配置されることか
ら、データ構造をキャッシュに格納した際に、既に参照
されるデータがキャッシュ中に存在するので共有メモリ
2から改めてデータを転送する必要がない。さらに、デ
ータ構造がロックされたとしても、参照されるデータ自
身はデータ構造毎にキャッシュに存在しているので、参
照することができる。
【0090】なお、前述した第1〜第4実施例において
は、データあるいはデータ構造をキャッシュラインに配
置する場合について説明したが、入出力処理用のバッフ
ァとして用いる領域についても同様にして配置すること
ができる。
【0091】図14はプログラム解析部及びコード生成
部から構成されるコンパイラによって行われるデータ配
置の様子を示す図である。図14(a)に示すプログラ
ムは、「buffer1」及び「buffer2」を入
出力処理のバッファとして使用するものである。プログ
ラム解析部は、コンパイルの対象とするプログラムを解
析して、バッファの定義を検索し、コード生成部は、検
索された各バッファについて、図14(b)に示すよう
に、1つのキャッシュライン中に1個以下の入出力バッ
ファしか配置されないようにする。すなわち、あるキャ
ッシュラインを配置した後、キャッシュライン中に空き
の領域があっても他のキャッシュラインの配置を行わな
いようにする。
【0092】入出力処理用のバッファを1つのキャッシ
ュライン中に1個以下しかアロケーションしないように
することにより、例えば異なるバッファを用いるたびに
キャッシュラインのデータがキャッシュメモリ間で転送
されるようなことが発生しない。
【0093】
【発明の効果】以上詳述したように本発明によれば、そ
れぞれのプロセッサに対応してキャッシュが設けられた
マルチプロセッサシステムにおいて、キャッシュの能力
を活かして性能を上げることが可能となるものである。
【図面の簡単な説明】
【図1】本発明の一実施例に係わるコンピュータシステ
ムの概略構成を示すブロック図。
【図2】本発明の第1実施例における最適化手段の機能
構成を示すブロック図。
【図3】本発明の第1実施例の最適化手段5aにおける
データ配置手段15の処理の流れを示すフローチャー
ト。
【図4】本発明の第1実施例におけるキャッシュライン
にデータが配置される様子を具体的に説明するための
図。
【図5】本発明の第2実施例における最適化手段の機能
構成を示すブロック図。
【図6】本発明の第2実施例の最適化手段40aにおけ
るデータ配置手段45及びコピーデータ配置手段46の
処理の流れを示すフローチャート。
【図7】本発明の第2実施例におけるキャッシュライン
にデータが配置される様子を具体的に説明するための
図。
【図8】本発明の第3実施例における最適化手段の機能
構成を示すブロック図。
【図9】本発明の第3実施例の動作を説明するためのフ
ローチャート。
【図10】本発明の第3実施例におけるキャッシュライ
ンにデータが配置される様子を具体的に説明するための
図。
【図11】本発明の第4実施例における最適化手段の機
能構成を示すブロック図。
【図12】本発明の第4実施例の動作を説明するための
フローチャート。
【図13】本発明の第4実施例におけるキャッシュライ
ンにデータが配置される様子を具体的に説明するための
図。
【図14】本発明における入出力処理用のバッファとし
て用いる領域がキャッシュラインに配置される様子を具
体的に説明するための図。
【符号の説明】
11,41,71,101…プログラム解析部、12,
42…データ認識手段、13,43,74,104…コ
ード生成部、14,44…キャッシュラインサイズ認識
手段、15,45…データ配置手段、46,106…コ
ピーデータ配置手段、72,,102…ロック変数検索
手段、73,103…データ構造検索手段、75,10
5…データ構造アロケーション手段。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュを持った複数のプロセッサが
    接続されたマルチプロセッサシステムであって、メモリ
    上のデータが所定のキャッシュライン単位で操作される
    マルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
    成するための解析を行なう際に読み込みのみの対象とな
    るデータを認識するデータ認識手段と、 自システムにおけるキャッシュラインのサイズを認識す
    るキャッシュサイズ認識手段と、 解析の結果に応じてコード生成を行なう際に、前記デー
    タ認識手段及び前記キャッシュサイズ認識手段による認
    識結果に基づいて、プログラムが同時にアクセスする複
    数のデータが同時にメモリからキャッシュに格納される
    ように、読み込みのみのデータを前記読み込みのみのデ
    ータと同時にアクセスされる読み書きデータが配置され
    るのと同じキャッシュライン上に配置するデータ配置手
    段と、 を具備したことを特徴とするマルチプロセッサシステ
    ム。
  2. 【請求項2】 前記データ配置手段によってデータを配
    置する際に、前記読み込みのみのデータを配置すべきキ
    ャッシュラインが複数存在する場合に、前記読み込みの
    みのデータを複数のキャッシュライン中にコピーして配
    置するコピーデータ配置手段をさらに具備したことを特
    徴とする請求項1記載のマルチプロセッサシステム。
  3. 【請求項3】 データ構造にロック変数を付加し、デー
    タ構造にアクセスする場合にはロック変数をセットして
    からデータ構造にアクセスし、データ構造へのアクセス
    が終わった後にロック変数をリセットすることにより、
    マルチプロセッサ間で共有するデータ構造を排他制御す
    るマルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
    成するための解析を行なう際に、プログラム中で使用さ
    れているデータ構造を排他制御するロック変数を検索す
    るためのロック変数検索手段と、 前記ロック変数検索手段によって検索されたロック変数
    によって保護されるデータ構造を検索するためのデータ
    構造検索手段と、 解析結果に応じてコード生成を行なう際に、前記ロック
    変数検索手段及び前記データ構造検索手段による検索結
    果に基づいて、1つのキャッシュライン中にロック変数
    によって保護されたデータ構造を1個以下しかアロケー
    ションしないようにするデータ構造アロケーション手段
    と、 を具備したことを特徴とするマルチプロセッサシステ
    ム。
  4. 【請求項4】 キャッシュライン中のアロケーションさ
    れたデータ構造以外の部分に、前記データ構造を保護す
    るロックをセットしてからリセットするまでの間にアク
    セスする読み込みのみのデータのコピーをアロケーショ
    ンするコピーデータ配置手段をさらに具備したことを特
    徴とする請求項3記載のマルチプロセッサシステム。
  5. 【請求項5】 キャッシュを持った複数のプロセッサが
    接続されたマルチプロセッサシステムであって、メモリ
    上のデータが所定のキャッシュライン単位で操作される
    マルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
    成するための解析を行なう際に入出力処理のバッファを
    認識するバッファ確認手段と、 解析結果に応じてコード生成を行なう際に、前記バッフ
    ァ認識手段による認識結果に基づいて、入出力処理のバ
    ッファを1つのキャッシュライン中に1個以下しかアロ
    ケーションしないようにするアロケーション手段と、 を具備したことを特徴とするマルチプロセッサシステ
    ム。
  6. 【請求項6】 キャッシュを持った複数のプロセッサが
    接続されたマルチプロセッサシステムであって、メモリ
    上のデータが所定のキャッシュライン単位で操作される
    マルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
    成するための解析を行なう際に読み込みのみの対象とな
    るデータを認識し、 自システムにおけるキャッシュラインのサイズを認識
    し、 解析の結果に応じてコード生成を行なう際に、認識され
    たキャッシュラインのサイズに応じて、プログラムが同
    時にアクセスする複数のデータが同時にメモリからキャ
    ッシュに格納されるように、先に認識された読み込みの
    みのデータを前記読み込みのみのデータと同時にアクセ
    スされる読み書きデータが配置される同じキャッシュラ
    イン上に配置することを特徴とするメモリアロケーショ
    ン最適化方法。
  7. 【請求項7】 読み込みのみのデータを前記読み込みの
    みのデータと同時にアクセスされる読み書きデータが配
    置されるのと同じキャッシュライン上に配置する場合
    に、前記読み込みのみのデータを配置すべきキャッシュ
    ラインが複数存在する場合には、前記読み込みのみのデ
    ータを複数のキャッシュライン中にコピーして配置する
    ことを特徴とする請求項6記載のメモリアロケーション
    最適化方法。
  8. 【請求項8】 データ構造にロック変数を付加し、デー
    タ構造にアクセスする場合にはロック変数をセットして
    からデータ構造にアクセスし、データ構造へのアクセス
    が終わった後にロック変数をリセットすることにより、
    マルチプロセッサ間で共有するデータ構造を排他制御す
    るマルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
    成するための解析を行なう際に、プログラム中で使用さ
    れているデータ構造を排他制御するロック変数を検索
    し、 検索されたロック変数によって保護されるデータ構造を
    検索し、 解析結果に応じてコード生成を行なう際に、検索された
    ロック変数によって保護されたデータ構造を1つのキャ
    ッシュライン中に1個以下しかアロケーションしないよ
    うにすることを特徴とするメモリアロケーション最適化
    方法。
  9. 【請求項9】 キャッシュライン中のアロケーションさ
    れたデータ構造以外の部分に、前記データ構造を保護す
    るロックをセットしてからリセットするまでの間にアク
    セスする読み込みのみのデータのコピーをアロケーショ
    ンすることを特徴とする請求項8記載のメモリアロケー
    ション最適化方法。
  10. 【請求項10】 キャッシュを持った複数のプロセッサ
    が接続されたマルチプロセッサシステムであって、メモ
    リ上のデータが所定のキャッシュライン単位で操作され
    るマルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
    成するための解析を行なう際に入出力処理のバッファを
    認識し、 解析結果に応じてコード生成を行なう際に、認識された
    入出力処理のバッファを1つのキャッシュライン中に1
    個以下しかアロケーションしないようにすることを特徴
    とするメモリアロケーション最適化方法。
JP6212665A 1994-09-06 1994-09-06 マルチプロセッサシステム及びメモリアロケーション最適化方法 Pending JPH0877068A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6212665A JPH0877068A (ja) 1994-09-06 1994-09-06 マルチプロセッサシステム及びメモリアロケーション最適化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6212665A JPH0877068A (ja) 1994-09-06 1994-09-06 マルチプロセッサシステム及びメモリアロケーション最適化方法

Publications (1)

Publication Number Publication Date
JPH0877068A true JPH0877068A (ja) 1996-03-22

Family

ID=16626381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6212665A Pending JPH0877068A (ja) 1994-09-06 1994-09-06 マルチプロセッサシステム及びメモリアロケーション最適化方法

Country Status (1)

Country Link
JP (1) JPH0877068A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007048286A (ja) * 2005-08-05 2007-02-22 Fujitsu Ltd キャッシュにおける電力消費削減方法、論理装置及びシステム
JP2007048285A (ja) * 2005-08-05 2007-02-22 Fujitsu Ltd キャッシュにおける電力消費削減方法、論理装置及びシステム
EP3101548A1 (en) 2015-06-03 2016-12-07 Fujitsu Limited Parallel computer, migration program and migration method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007048286A (ja) * 2005-08-05 2007-02-22 Fujitsu Ltd キャッシュにおける電力消費削減方法、論理装置及びシステム
JP2007048285A (ja) * 2005-08-05 2007-02-22 Fujitsu Ltd キャッシュにおける電力消費削減方法、論理装置及びシステム
EP3101548A1 (en) 2015-06-03 2016-12-07 Fujitsu Limited Parallel computer, migration program and migration method
US10019164B2 (en) 2015-06-03 2018-07-10 Fujitsu Limited Parallel computer, migration program and migration method

Similar Documents

Publication Publication Date Title
US7392352B2 (en) Computer architecture for shared memory access
US6757787B2 (en) Adaptive cache coherence protocols
CN101542437B (zh) 软件事务性存储器操作的优化
CA1277425C (en) System and method for parallel processing with mostly functional languages
US6631447B1 (en) Multiprocessor system having controller for controlling the number of processors for which cache coherency must be guaranteed
Bik et al. Compilation techniques for sparse matrix computations
EP0514024B1 (en) Method and apparatus for an improved memory architecture
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
JP2006260096A (ja) プログラム変換方法およびプログラム変換装置
JP2004326758A (ja) 局所的なキャッシュ・ブロック・フラッシュ命令
US6829760B1 (en) Runtime symbol table for computer programs
JPH09204403A (ja) 並列計算機
JP2002251321A (ja) キャッシュメモリシステム装置
US20080235460A1 (en) Apparatus and method for information processing enabling fast access to program
KR20060102565A (ko) 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법
JP3973129B2 (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
Scheurich et al. Lockup-free caches in high-performance multiprocessors
US10853247B2 (en) Device for maintaining data consistency between hardware accelerator and host system and method thereof
JP2829115B2 (ja) ファイル共用方法
JP3814521B2 (ja) データ処理方法および装置
Frank et al. A hybrid shared memory/message passing parallel machine
JPH0877068A (ja) マルチプロセッサシステム及びメモリアロケーション最適化方法
JP3093609B2 (ja) キャッシュメモリの記憶一致制御装置及び方法
JP2005352711A (ja) キャッシュ制御方法およびデータ処理システム並びにその処理プログラム