JPH0877068A - Multiprocessor system and memory allocation optimizing method - Google Patents

Multiprocessor system and memory allocation optimizing method

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
Japanese (ja)
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/en
Publication of JPH0877068A publication Critical patent/JPH0877068A/en
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

PURPOSE: To enable memory allocation which makes the most of the capability of a cache. CONSTITUTION: The multiprocessor system which operates data on a memory in specific cache line units is equipped with a data recognition means 12 which recognizes data only to be written when a program analysis part 11 which takes an analysis for generating an executable object program for a source program, a cache size recognition means 14 which recognizes the size of a cache line of its system, and a data arranging means 15 which arranges data only to be read on the same cache line where read and write data accessed at the same time with the data only to be read so that plural data accessed by the program at the same time are stored in the cache from the memory at the same time when a code generation part 13 performs code generation according to the result of the analysis.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、キャッシュを持った複
数のプロセッサが接続されたマルチプロセッサシステム
及びメモリアロケーションの最適化方法に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a multiprocessor system to which a plurality of processors each having a cache are connected and a method for optimizing memory allocation.

【0002】[0002]

【従来の技術】近年、プロセッサの演算処理の高速化の
割合に比べると、メモリのアクセス処理の高速化の割合
は極めて低く、プロセッサの演算処理が速くなっても、
メモリに対するアクセス処理が速くならないため、シス
テム全体の性能が上がらないという問題があった。
2. Description of the Related Art In recent years, the rate of memory access processing is extremely low compared to the rate of processor arithmetic processing, and even if processor arithmetic processing is faster,
There is a problem that the performance of the entire system does not improve because the access processing to the memory does not become faster.

【0003】この問題を解決するために、キャッシュと
いう技術が存在する。キャッシュはプロセッサ内、ある
いはプロセッサの近くに配置した小容量の高速メモリ
で、プロセッサがアクセスするメモリ上のデータの高速
なバッファとしての役割を果たしている。
In order to solve this problem, there is a technique called cache. The cache is a small-capacity high-speed memory arranged in or near the processor, and plays a role as a high-speed buffer for data on the memory accessed by the processor.

【0004】また、一方でマルチプロセッサ技術が発展
し、キャッシュを持った多数のプロセッサが相互に接続
されるようになってきた。マルチプロセッサシステムに
おいては、多数のプロセッサが各々メモリのコピーをそ
のキャッシュに保持してしまうため、キャッシュ間のデ
ータの整合性をとる必要が出てくる。このデータの整合
性をとる技術がスヌープという機能である。
On the other hand, the multiprocessor technology has been developed and many processors each having a cache have been connected to each other. In a multiprocessor system, a large number of processors each hold a copy of memory in its cache, so that it becomes necessary to maintain data consistency between the caches. A technology called "snoop" is a technique for ensuring the consistency of this data.

【0005】スヌープ機能としては、様々な方式がある
が、何れの方式においても、例えばキャッシュをもつ複
数のプロセッサがメモリ上の共通するデータを順番に更
新すると、対象とするデータを各プロセッサのキャッシ
ュの間で順番に受け渡すことによって一貫性を保つ。
There are various methods for the snoop function. In any of the methods, for example, when a plurality of processors having a cache sequentially update common data in a memory, the target data is cached by each processor. Be consistent by passing between in turn.

【0006】しかし、多数のプロセッサの間でデータを
共有すると、キャッシュ間でのスヌープによりデータの
整合性をとるための操作(データの受け渡し)が増加し
てしまい、スヌープの操作によってプロセッサ間を接続
するバスが飽和してしまい、マルチプロセッサシステム
性能が向上しないという問題があった。
However, when data is shared among a large number of processors, snooping between caches increases the number of operations for data consistency (data passing), and the snooping operation connects the processors. However, there was a problem that the multi-processor system performance was not improved due to the saturation of the bus.

【0007】[0007]

【発明が解決しようとする課題】このように従来のキャ
ッシュを持った複数のプロセッサが接続されたコンピュ
ータシステムにおいては、各プロセッサが持つキャッシ
ュのデータの整合性をとるために、バスのトラフィック
が増大し、マルチプロセッサシステム性能を低下させて
しまう場合があった。
In a computer system in which a plurality of processors each having a cache are connected as described above, bus traffic increases in order to ensure consistency of cache data of each processor. However, the multiprocessor system performance may be degraded.

【0008】本発明は前記のような事情を考慮してなさ
れたもので、キャッシュの能力を活かしたマルチプロセ
ッサシステム及びメモリアロケーションの最適化方法を
提供することを目的とする。
The present invention has been made in consideration of the above circumstances, and an object of the present invention is to provide a multiprocessor system and a method for optimizing memory allocation, which make the most of the cache capability.

【0009】[0009]

【課題を解決するための手段】本発明は、キャッシュを
持った複数のプロセッサが接続されたマルチプロセッサ
システムであって、メモリ上のデータが所定のキャッシ
ュライン単位で操作されるマルチプロセッサシステムに
おいて、原始プログラムに対して実行可能な目的プログ
ラムを作成するための解析を行なう際に読み込みのみの
対象となるデータを認識するデータ認識手段と、自シス
テムにおけるキャッシュラインのサイズを認識するキャ
ッシュサイズ認識手段と、解析の結果に応じてコード生
成を行なう際に、前記データ認識手段及び前記キャッシ
ュサイズ認識手段による認識結果に基づいて、プログラ
ムが同時にアクセスする複数のデータが同時にメモリか
らキャッシュに格納されるように、読み込みのみのデー
タを前記読み込みのみのデータと同時にアクセスされる
読み書きデータが配置される同じキャッシュライン上に
配置するデータ配置手段とを具備したことを特徴とす
る。
SUMMARY OF THE INVENTION The present invention is a multiprocessor system in which a plurality of processors each having a cache are connected, in which data on a memory is operated in predetermined cache line units. A data recognizing means for recognizing read-only data when performing an analysis to create an executable target program for the source program, and a cache size recognizing means for recognizing the size of a cache line in the own system. When performing code generation according to the result of analysis, based on the recognition results by the data recognizing means and the cache size recognizing means, a plurality of data accessed by a program at the same time are stored in a cache from a memory , Read only data read above Wherein the Mino write data data to be accessed at the same time is provided with the data arrangement means for arranging the same cache line on which is arranged.

【0010】また、前記データ配置手段によってデータ
を配置する際に、前記読み込みのみのデータを配置すべ
きキャッシュラインが複数存在する場合に、前記読み込
みのみのデータを複数のキャッシュライン中にコピーし
て配置するコピーデータ配置手段をさらに具備したこと
を特徴とする。
Further, when arranging the data by the data arranging means and there are a plurality of cache lines in which the read-only data should be arranged, the read-only data is copied into a plurality of cache lines. It is characterized by further comprising copy data arranging means for arranging.

【0011】また本発明は、データ構造にロック変数を
付加し、データ構造にアクセスする場合にはロック変数
をセットしてからデータ構造にアクセスし、データ構造
へのアクセスが終わった後にロック変数をリセットする
ことにより、マルチプロセッサ間で共有するデータ構造
を排他制御するマルチプロセッサシステムにおいて、原
始プログラムに対して実行可能な目的プログラムを作成
するための解析を行なう際に、プログラム中で使用され
ているデータ構造を排他制御するロック変数を検索する
ためのロック変数検索手段と、前記ロック変数検索手段
によって検索されたロック変数によって保護されるデー
タ構造を検索するためのデータ構造検索手段と、解析結
果に応じてコード生成を行なう際に、前記ロック変数検
索手段及び前記データ構造検索手段による検索結果に基
づいて、1つのキャッシュライン中にロック変数によっ
て保護されたデータ構造を1個以下しかアロケーション
しないようにするデータ構造アロケーション手段とを具
備したことを特徴とする。
According to the present invention, a lock variable is added to a data structure, and when the data structure is accessed, the lock variable is set before the data structure is accessed, and the lock variable is added after the access to the data structure is completed. In a multiprocessor system in which a data structure shared by multiple processors is exclusively controlled by resetting, it is used in a program when performing an analysis to create an executable target program for a source program. A lock variable searching means for searching a lock variable for exclusively controlling a data structure, a data structure searching means for searching a data structure protected by the lock variable searched by the lock variable searching means, and an analysis result. In response to the code generation, the lock variable search means and the data Based on the search result by data structure retrieving means, characterized in that below one of the protected data structure by lock variable only equipped with a data structure allocation means to avoid the allocation in one cache line.

【0012】また、キャッシュライン中のアロケーショ
ンされたデータ構造以外の部分に、前記データ構造を保
護するロックをセットしてからリセットするまでの間に
アクセスする読み込みのデータのコピーをアロケーショ
ンするコピーデータ配置手段をさらに具備したことを特
徴とする。
A copy data arrangement for allocating a copy of read data to be accessed in a portion other than the allocated data structure in the cache line between setting and resetting a lock for protecting the data structure. It is characterized by further comprising means.

【0013】また、原始プログラムに対して実行可能な
目的プログラムを作成するための解析を行なう際に入出
力処理のバッファを認識するバッファ確認手段と、解析
結果に応じてコード生成を行なう際に、前記バッファ認
識手段による認識結果に基づいて、入出力処理のバッフ
ァを1つのキャッシュライン中に1個以下しかアロケー
ションしないようにするアロケーション手段とを具備し
たことを特徴とする。
Further, a buffer confirmation means for recognizing a buffer for input / output processing when performing analysis for creating an executable target program for the source program, and code generation according to the analysis result, And an allocation unit for allocating no more than one buffer for input / output processing in one cache line based on the recognition result by the buffer recognition unit.

【0014】[0014]

【作用】このような構成によれば、キャッシュを持った
複数のプロセッサが接続されたマルチプロセッサシステ
ムにおいて、そのキャッシュの能力を活かして性能を上
げることが可能となる。
With such a configuration, in a multiprocessor system in which a plurality of processors each having a cache are connected, it is possible to improve the performance by utilizing the capacity of the cache.

【0015】すなわち、読み込みのみのデータを、読み
込みのみのデータと同時にアクセスされる読み書きデー
タが配置されるのと同じキャッシュライン上に配置する
ことにより、一方のデータに対する処理を実行する際に
他方のデータもキャッシュに存在することになるので、
メモリからのデータ転送の必要回数が削減される。
That is, by arranging read-only data on the same cache line where read / write data that is accessed at the same time as read-only data is arranged, when executing processing for one data, Since the data will also exist in the cache,
The required number of data transfers from memory is reduced.

【0016】さらに、読み込みのみのデータを配置すべ
きキャッシュラインが複数存在する場合には、読み書き
データが配置されるキャッシュラインのそれぞれに読み
込みのみのデータをコピーして配置することにより、キ
ャッシュ間でのデータの受け渡し等の処理を低減させる
ことができる。
Further, when there are a plurality of cache lines in which the read-only data should be arranged, the read-only data is copied and arranged in each of the cache lines in which the read / write data is arranged, so that the caches are cached. It is possible to reduce the processing such as the delivery of the data.

【0017】また、マルチプロセッサ間で共有されるデ
ータ構造が排他制御される場合に、ロック変数によって
保護されたデータ構造を1つのキャッシュライン中に1
個以下しかアロケーションしないようにすることで、ロ
ック制御に伴って本来ロックの不要なデータ構造に対す
るアクセスができなくなってしまうことが回避される。
Further, when the data structure shared by the multiprocessors is exclusively controlled, the data structure protected by the lock variable is set to 1 in one cache line.
By allocating less than this number, it is possible to prevent the lock control from making it impossible to access a data structure that originally does not require a lock.

【0018】[0018]

【実施例】以下、図面を参照して本発明の実施例を説明
する。図1は本発明の実施例に係わるコンピュータシス
テムの概略構成を示すブロック図である。図1に示すよ
うに、第1実施例におけるコンピュータシステムは、複
数のプロセッサ1a,1b,…と、プロセッサ1a,1
b,…に共有される共有メモリ2が、バス3によって接
続されたマルチプロセッサシステム構成となっている。
Embodiments of the present invention will be described below with reference to the drawings. FIG. 1 is a block diagram showing a schematic configuration of a computer system according to an embodiment of the present invention. As shown in FIG. 1, the computer system according to the first embodiment includes a plurality of processors 1a, 1b, ...
The shared memory 2 shared by b, ... Has a multiprocessor system configuration connected by a bus 3.

【0019】本発明が対象とするマルチプロセッサシス
テムは、キャッシュメモリと、プロセッサや共有メモリ
2との間のデータ転送は、所定の単位毎、すなわちキャ
ッシュライン毎に行なう。
In the multiprocessor system to which the present invention is applied, data transfer between the cache memory and the processor or the shared memory 2 is performed for each predetermined unit, that is, for each cache line.

【0020】プロセッサ1aには、キャッシュ4a、最
適化手段5aが設けられている。最適化手段5aは、共
有メモリ2に格納された最適化プログラム(コンパイ
ラ)を、プロセッサ1a上で実行することによって機能
が実現される。なお、他のプロセッサ1b,…にも、同
様にして、最適化手段5b,…を設けて実行させること
ができる。
The processor 1a is provided with a cache 4a and an optimizing means 5a. The function of the optimizing means 5a is realized by executing the optimizing program (compiler) stored in the shared memory 2 on the processor 1a. The other processors 1b, ... Can be similarly provided with the optimizing means 5b ,.

【0021】最適化手段5aは、図2に示すような機能
によって構成されている。図2に示すように、最適化手
段5aは、プログラム解析部11、データ認識手段1
2、コード生成部13、キャッシュラインサイズ認識手
段14、及びデータ配置手段15によって構成されてい
る。
The optimizing means 5a has a function as shown in FIG. As shown in FIG. 2, the optimizing means 5a includes a program analyzing section 11 and a data recognizing means 1.
2, a code generation unit 13, a cache line size recognition unit 14, and a data arrangement unit 15.

【0022】プログラム解析部11は、所定のプログラ
ム言語を用いて記述された原始プログラムに対して、コ
ンピュータで実行可能な目的プログラムを作成するため
の解析を行なうものである。プログラム解析部11は、
原始プログラムに対する字句解析、構文解析、意味解析
等を実行する。
The program analysis unit 11 analyzes a source program written in a predetermined programming language to create a computer-executable target program. The program analysis unit 11
Performs lexical analysis, syntactic analysis, semantic analysis, etc. on the source program.

【0023】データ認識手段12は、プログラム解析部
11によって解析された結果に基づいて、プログラム中
で使用されるデータのうち読み込みのみの対象となるデ
ータの存在を認識するものである。
The data recognizing means 12 recognizes the existence of the data to be read only among the data used in the program, based on the result analyzed by the program analysis section 11.

【0024】コード生成部13は、プログラム解析部1
1における解析結果、及びデータ認識手段12による認
識結果に応じて、目的プログラムとなるコードを生成す
るものである。
The code generation unit 13 includes the program analysis unit 1
A code serving as a target program is generated according to the analysis result in 1 and the recognition result by the data recognition means 12.

【0025】キャッシュラインサイズ認識手段14は、
プログラムが動作する自システムのキャッシュラインサ
イズを認識するものである。データ配置手段15は、コ
ード生成部13によって生成されるコードのうち、デー
タに関して共有メモリ2への配置を決定するものであ
る。データ配置手段15は、データ認識手段12によっ
て認識された読み込みのみの対象とするデータを、その
読み込みのみのデータと同時にアクセスされる読み書き
が行われるデータが配置されるキャッシュラインと同じ
キャッシュラインに配置する。これにより、同時にアク
セスされるデータが、同時に共有メモリ2からキャッシ
ュに持ってこられるようになる。
The cache line size recognizing means 14 is
It recognizes the cache line size of the local system where the program operates. The data arranging unit 15 determines the arrangement of the data in the shared memory 2 among the codes generated by the code generating unit 13. The data arranging means 15 arranges the read-only data recognized by the data recognizing means 12 in the same cache line as the cache line in which the read / write data accessed simultaneously with the read-only data is arranged. To do. As a result, simultaneously accessed data can be simultaneously brought from the shared memory 2 to the cache.

【0026】図2に示す構成において、プログラム解析
部11及びコード生成部13は、コンパイラを構成す
る。さらに、コンパイラには、データ認識手段12及び
データ配置手段15による機能が付加されている。ま
た、キャッシュラインサイズ認識手段14は、例えばコ
ンピュータシステムにおけるOS(オペレーティングシ
ステム)の機能によって実現されるものとする。
In the configuration shown in FIG. 2, the program analysis section 11 and the code generation section 13 constitute a compiler. Further, the compiler is provided with the functions of the data recognizing means 12 and the data arranging means 15. Further, the cache line size recognition means 14 is realized by the function of the OS (operating system) in the computer system, for example.

【0027】次に、第1実施例の動作について説明す
る。最適化手段5aは、原始プログラムに対してコンパ
イルを行なう際、システムに実装されたキャッシュを有
効に利用できるように最適化を行なう。まず、プログラ
ム解析部11は、図示せぬ記憶装置に格納されているコ
ンパイルの対象とする原始プログラムについて解析を行
なう。この際、データ認識手段12は、読み込みのみに
使用されるデータを識別している。データ認識手段12
によって認識されたデータは、データ配置手段15によ
るデータ配置の際に考慮される。
Next, the operation of the first embodiment will be described. The optimizer 5a optimizes the cache implemented in the system when the source program is compiled. First, the program analysis unit 11 analyzes a source program stored in a storage device (not shown) to be compiled. At this time, the data recognition means 12 identifies the data used only for reading. Data recognition means 12
The data recognized by is considered in the data arrangement by the data arrangement means 15.

【0028】コード生成部13は、プログラム解析部1
1による解析結果に基づいてコードを生成する。この
際、コード生成部13は、キャッシュラインサイズ認識
手段14により識別される自システムのキャッシュライ
ンサイズを考慮して、データに関するコード生成を行な
う。
The code generation unit 13 includes the program analysis unit 1
A code is generated based on the analysis result of 1. At this time, the code generation unit 13 generates a code relating to data in consideration of the cache line size of its own system identified by the cache line size recognition unit 14.

【0029】図3は本発明の第1実施例の最適化手段5
aにおけるデータ配置手段15の処理の流れを示すフロ
ーチャートである。データ配置手段15は、コード生成
部13によって生成されたデータに関するコードを、キ
ャッシュを有効に利用できるようにキャッシュラインを
考慮してデータを配置する。
FIG. 3 shows the optimizing means 5 of the first embodiment of the present invention.
It is a flow chart which shows a flow of processing of data arrangement means 15 in a. The data arranging unit 15 arranges the code relating to the data generated by the code generation unit 13 in consideration of the cache line so that the cache can be effectively used.

【0030】まず、データ配置手段15は、読み書きデ
ータをキャッシュライン中に配置する(ステップA
1)。その後、データ配置手段15は、ステップA1に
おいて配置が完了した読み書きデータの周辺(プログラ
ム実行過程の前後近く)でアクセスする読み込みのみの
データ(データ認識手段12によって認識されたデー
タ)が存在するか否かを調べる(ステップA2)。
First, the data arranging means 15 arranges the read / write data in the cache line (step A).
1). After that, the data arranging means 15 determines whether or not there is read-only data (data recognized by the data recognizing means 12) to be accessed around the read / write data that has been arranged in step A1 (near before and after the program execution process). Is checked (step A2).

【0031】ここで、対象とするデータが存在する場合
には、データ配置手段15は、その読み込みのみのデー
タがまだ配置されているか否かを調べる(ステップA
3)。まだ配置されていない場合には、データ配置手段
15は、その読み込みのみのデータを、ステップA1で
配置された読み書きデータ(現在対象としている読み込
みのみのデータの周辺にあるもの)と同じキャッシュラ
イン中に配置する(ステップA4)。
If the target data exists, the data arranging means 15 checks whether or not the read-only data is still arranged (step A).
3). If it is not arranged yet, the data arranging means 15 arranges the read-only data in the same cache line as the read / write data arranged in step A1 (those around the currently read-only data). (Step A4).

【0032】なお、ステップA3において、既に読み込
みのみのデータが何れかのキャッシュラインに配置され
ていると判別された場合には、データ配置手段15は、
その読み込みのみのデータの配置を行なわない。
If it is determined in step A3 that read-only data has already been placed in any of the cache lines, the data placement means 15
Do not arrange the read-only data.

【0033】こうして、全ての読み書きデータについ
て、それぞれの周辺に読み込みのみのデータがあれば、
このデータを読み書きのデータと同じキャッシュライン
中に配置する。
Thus, for all the read / write data, if there is read-only data in the vicinity of each,
This data is placed in the same cache line as the read / write data.

【0034】図4は共有メモリ2のキャッシュラインに
データが配置される様子を具体的に説明するための図で
ある。なお、図4(a)に示すプログラムは、便宜上、
原始プログラムの形式によって示している。
FIG. 4 is a diagram for specifically explaining how data is arranged in the cache line of the shared memory 2. Note that the program shown in FIG.
It is shown by the format of the source program.

【0035】図3(a)に示すプログラム中の関数1
は、まず「データAを参照」して、続いて「データBを
更新」するものである。ここでデータAは読み込みのみ
に使用されるものとする。
Function 1 in the program shown in FIG.
First refers to "reference data A" and then "updates data B". Here, the data A is used only for reading.

【0036】この場合、読み書きされるデータBについ
ては、ステップA1において所定のキャッシュラインに
配置される。データAは、ステップA2において、「デ
ータBを更新」する処理の周辺に存在するものとして識
別され、ステップA4において、図3(b)に示すよう
に、データBが配置されたキャッシュラインの残りの部
分に配置される。
In this case, the data B to be read / written is placed in a predetermined cache line in step A1. The data A is identified as existing around the process of "updating the data B" in step A2, and in step A4, as shown in FIG. 3 (b), the rest of the cache line in which the data B is arranged. Is placed in the part.

【0037】データAとデータBを同じキャッシュライ
ン中に配置することにより、プログラムを実行した際
(図4(a)に示す処理)、「データAを参照」した時
にデータAが共有メモリ2からキャッシュに転送され
て、同時に同一のキャッシュライン中に配置されている
データBもキャッシュに転送されて格納される。従っ
て、「データBを更新」する処理を実行する際、キャッ
シュには既にデータBが存在するので、共有メモリ2か
ら改めてデータを転送する必要がない。すなわち、キャ
ッシュを有効に利用することができる。
By arranging the data A and the data B in the same cache line, when the program is executed (the process shown in FIG. 4A), the data A is transferred from the shared memory 2 when the "reference to the data A" is made. The data B transferred to the cache and simultaneously arranged in the same cache line is also transferred to and stored in the cache. Therefore, when executing the process of “updating the data B”, since the data B already exists in the cache, it is not necessary to transfer the data from the shared memory 2 again. That is, the cache can be effectively used.

【0038】次に、本発明の第2実施例について説明す
る。第2実施例においては、第1実施例と同様に図1に
示すコンピュータシステム上で、第2実施例による最適
化手段40a,40b,…が設けられている。
Next, a second embodiment of the present invention will be described. In the second embodiment, as in the first embodiment, the optimizing means 40a, 40b, ... According to the second embodiment are provided on the computer system shown in FIG.

【0039】最適化手段40aは、図5に示すような機
能によって構成されている。図5に示すように、最適化
手段40aは、プログラム解析部41、データ認識手段
42、コード生成部43、キャッシュラインサイズ認識
手段44、データ配置手段45、及びコピーデータ配置
手段46によって構成されている。
The optimizing means 40a has a function as shown in FIG. As shown in FIG. 5, the optimizing unit 40a includes a program analyzing unit 41, a data recognizing unit 42, a code generating unit 43, a cache line size recognizing unit 44, a data arranging unit 45, and a copy data arranging unit 46. There is.

【0040】プログラム解析部41は、所定のプログラ
ム言語を用いて記述された原始プログラムに対して、コ
ンピュータで実行可能な目的プログラムを作成するため
の解析を行なうものである。プログラム解析部41は、
原始プログラムに対する字句解析、構文解析、意味解析
等を実行する。
The program analysis unit 41 analyzes a source program written in a predetermined programming language to create a computer-executable target program. The program analysis unit 41
Performs lexical analysis, syntactic analysis, semantic analysis, etc. on the source program.

【0041】データ認識手段42は、プログラム解析部
41によって解析された結果に基づいて、プログラム中
で使用されるデータのうち読み込みのみの対象となるデ
ータの存在を認識するものである。
The data recognizing means 42 recognizes the presence of the data to be read only among the data used in the program, based on the result analyzed by the program analysis unit 41.

【0042】コード生成部43は、プログラム解析部4
1における解析結果、及びデータ認識手段42による認
識結果に応じて、目的プログラムとなるコードを生成す
るものである。
The code generation section 43 includes a program analysis section 4
A code serving as a target program is generated according to the analysis result in 1 and the recognition result by the data recognition means 42.

【0043】キャッシュラインサイズ認識手段44は、
プログラムが動作する自システムのキャッシュラインサ
イズを認識するものである。データ配置手段45は、コ
ード生成部43によって生成されるコードのうち、デー
タに関して共有メモリ2への配置を決定するものであ
る。データ配置手段45は、データ認識手段42によっ
て認識された読み込みのみの対象とするデータを、その
読み込みのみのデータと同時にアクセスされる読み書き
が行われるデータが配置されるキャッシュラインと同じ
キャッシュラインに配置する。これにより、同時にアク
セスされるデータが、同時に共有メモリ2からキャッシ
ュに持ってこられるようになる。
The cache line size recognition means 44 is
It recognizes the cache line size of the local system where the program operates. The data placement means 45 determines the placement of the data in the shared memory 2 among the codes generated by the code generation unit 43. The data arranging unit 45 arranges the read-only data recognized by the data recognizing unit 42 on the same cache line as the cache line on which the read / write data that is accessed simultaneously with the read-only data is arranged. To do. As a result, simultaneously accessed data can be simultaneously brought from the shared memory 2 to the cache.

【0044】コピーデータ配置手段46は、データ配置
手段45によって、ある読み込みのみの対象となるデー
タが既に他のキャッシュラインに配置されている場合
に、その読み込みのみのデータのコピーを作成して、そ
のデータと同時にアクセスされる読み書きが行なわれる
データが配置された同じキャッシュライン中に配置され
るようにするものである。
The copy data arranging means 46 makes a copy of the read only data when the data arranging means 45 has already arranged the data to be read only in another cache line, The data is arranged in the same cache line in which data to be read / written which is accessed simultaneously with the data is arranged.

【0045】次に、第2実施例の動作について説明す
る。最適化手段40aは、原始プログラムに対してコン
パイルを行なう際、システムに実装されたキャッシュを
有効に利用できるように最適化を行なう。まず、プログ
ラム解析部41は、図示せぬ記憶装置に格納されている
コンパイルの対象とする原始プログラムについて解析を
行なう。この際、データ認識手段42は、読み込みのみ
に使用されるデータを識別している。データ認識手段4
2によって認識されたデータは、データ配置手段15及
びコピーデータ配置手段46によるデータ配置の際に考
慮される。
Next, the operation of the second embodiment will be described. The optimizer 40a optimizes the cache implemented in the system when the source program is compiled. First, the program analysis unit 41 analyzes a source program to be compiled, which is stored in a storage device (not shown). At this time, the data recognition unit 42 identifies the data used only for reading. Data recognition means 4
The data recognized by 2 is taken into consideration in the data arrangement by the data arrangement unit 15 and the copy data arrangement unit 46.

【0046】コード生成部43は、プログラム解析部4
1による解析結果に基づいてコードを生成する。この
際、コード生成部43は、キャッシュラインサイズ認識
手段44により識別された自システムのキャッシュライ
ンサイズを考慮して、データに関するコード生成を行な
う。
The code generation section 43 includes a program analysis section 4
A code is generated based on the analysis result of 1. At this time, the code generation unit 43 takes into consideration the cache line size of the own system identified by the cache line size recognition unit 44, and performs code generation regarding data.

【0047】図6は本発明の第2実施例の最適化手段4
0aにおけるデータ配置手段45及びコピーデータ配置
手段46の処理の流れを示すフローチャートである。デ
ータ配置手段45は、コード生成部43によって生成さ
れたデータに関するコードを、キャッシュを有効に利用
できるようにキャッシュラインを考慮してデータを配置
する。
FIG. 6 shows the optimizing means 4 of the second embodiment of the present invention.
It is a flow chart which shows a flow of processing of data arrangement means 45 and copy data arrangement means 46 in 0a. The data arranging unit 45 arranges the code relating to the data generated by the code generating unit 43 in consideration of the cache line so that the cache can be effectively used.

【0048】まず、データ配置手段45は、読み書きデ
ータをキャッシュライン中に配置する(ステップB)。
その後、データ配置手段45は、ステップB1において
配置が完了した読み書きデータの周辺(プログラム実行
過程の前後近く)でアクセスする読み込みのみのデータ
(データ認識手段42によって認識されたデータ)が存
在するか否かを調べる(ステップB2)。
First, the data placement means 45 places the read / write data in the cache line (step B).
After that, the data arranging unit 45 determines whether or not there is read-only data (data recognized by the data recognizing unit 42) to be accessed around the read / write data that has been arranged in step B1 (near the front and rear of the program execution process). Is checked (step B2).

【0049】ここで、対象とするデータが存在する場合
には、データ配置手段45は、その読み込みのみのデー
タが、他のキャッシュラインにまだ配置されているか否
かを調べる(ステップB3)。
Here, if the target data exists, the data arranging means 45 checks whether or not the read-only data is still arranged in another cache line (step B3).

【0050】まだ配置されていない場合には、データ配
置手段45は、その読み込みのみのデータを、ステップ
B1で配置された読み書きデータ(現在対象としている
読み込みのみのデータの周辺にあるもの)と同じキャッ
シュライン中に配置する(ステップB4)。
If the data is not arranged yet, the data arrangement means 45 makes the read-only data the same as the read / write data arranged in step B1 (the data present in the periphery of the currently read-only data). It is placed in the cache line (step B4).

【0051】なお、ステップB3において、既に読み込
みのみのデータが何れかのキャッシュラインに配置され
ていると判別された場合には、コピーデータ配置手段4
6は、その読み込みのみのデータのコピーを作成する
(ステップB5)。
If it is determined in step B3 that read-only data has already been placed in any of the cache lines, copy data placement means 4
6 makes a copy of the read-only data (step B5).

【0052】そして、コピーデータ配置手段46は、コ
ピーによって作成したデータを、そのデータと同時にア
クセスされる読み書きが行なわれるデータが配置される
のと同じキャッシュライン中に配置する(ステップB
6)。
Then, the copy data arranging means 46 arranges the data created by copying in the same cache line where the data to be read / written which is accessed simultaneously with the data is arranged (step B).
6).

【0053】図7は共有メモリ2のキャッシュラインに
データが配置される様子を具体的に説明するための図で
ある。なお、図7(a)に示すプログラムは、便宜上、
原始プログラムの形式によって示している。
FIG. 7 is a diagram for specifically explaining how data is arranged in the cache line of the shared memory 2. Note that the program shown in FIG.
It is shown by the format of the source program.

【0054】図7(a)に示すプログラム中の関数1
は、まず「データAを参照」して、続いて「データBを
更新」するもので、関数2は、まず「データAを参照」
して、続いて「データCを更新」するものである。ここ
でデータAは読み込みのみに使用されるものとする。
Function 1 in the program shown in FIG. 7 (a)
First refers to “data A” and then “updates data B”. Function 2 first refers to “data A”
Then, "data C is updated" subsequently. Here, the data A is used only for reading.

【0055】この場合、読み書きされるデータB及びデ
ータCについては、ステップB1において、それぞれ所
定のキャッシュラインに配置される。関数1のデータA
は、ステップB2において、「データBを更新」する処
理の周辺に存在するものとして識別され、ステップB4
において、図7(b)に示すように、データBが配置さ
れたキャッシュラインの残りの部分に配置される。
In this case, the data B and the data C to be read / written are placed in the predetermined cache lines in step B1. Function 1 data A
Are identified in step B2 as being in the vicinity of the "update data B" process, and step B4
In FIG. 7, as shown in FIG. 7B, the data B is placed in the remaining portion of the cache line.

【0056】さらに、ステップB3において、データA
が既に他のキャッシュラインに配置されていると判別さ
れるので、データAのコピーを作成して、データAと同
時にアクセスされる読み書きが行なわれるデータ、すな
わちデータCが配置されたキャッシュラインの残りの部
分に配置する。
Further, in step B3, the data A
Is determined to have already been placed in another cache line, a copy of data A is made and the data read / written that is accessed simultaneously with data A, that is, the rest of the cache line in which data C is placed. Place in the part of.

【0057】データAとデータBを同じキャッシュライ
ン中に配置することにより、プログラムを実行した際
(図7(a)に示す関数1の処理)、「データAを参
照」した時にデータAが共有メモリ2からキャッシュに
転送されて、同時に同一のキャッシュライン中に配置さ
れているデータBもキャッシュに転送されて格納され
る。また、関数2の処理でデータAのコピーを参照した
時に、データAのコピーと同一キャッシュライン中に配
置されているデータCも、キャッシュに転送されて格納
される。従って、「データCを更新」する処理を実行す
る際、キャッシュには既にデータCが存在するので、共
有メモリ2から改めてデータを転送する必要がない。ま
た、読み込みのみのデータがコピーされて異なるキャッ
シュラインのそれぞれに配置されているので、データB
が配置されたキャッシュラインが、あるプロセッサのキ
ャッシュに存在しても、このデータを別のプロセッサの
キャッシュに転送する等の処理が不要となる。すなわ
ち、キャッシュを有効に利用することができる。
By arranging the data A and the data B in the same cache line, when the program is executed (the processing of the function 1 shown in FIG. 7A), the data A is shared when the "reference to the data A" is made. The data B transferred from the memory 2 to the cache and simultaneously arranged in the same cache line are also transferred to the cache and stored. Further, when the copy of the data A is referred to in the processing of the function 2, the data C arranged in the same cache line as the copy of the data A is also transferred and stored in the cache. Therefore, when the process of “updating the data C” is executed, the data C already exists in the cache, and it is not necessary to transfer the data from the shared memory 2 again. Also, since the read-only data is copied and placed in different cache lines, the data B
Even if the cache line in which is arranged exists in the cache of a certain processor, the processing of transferring this data to the cache of another processor becomes unnecessary. That is, the cache can be effectively used.

【0058】次に、本発明の第3実施例について説明す
る。第3実施例においては、第1実施例と同様に図1に
示すコンピュータシステム上で、第3実施例による最適
化手段70a,70b,…が設けられている。
Next, a third embodiment of the present invention will be described. In the third embodiment, the optimizing means 70a, 70b, ... According to the third embodiment are provided on the computer system shown in FIG. 1 as in the first embodiment.

【0059】一般に、マルチプロセッサシステムでは、
共有メモリ2中の共用データの排他制御の方法としてロ
ック操作がある。ロック操作では、ある共有データに対
して共有メモリ2上にロック変数を用意し、共有データ
を処理する前にロック変数を確保し、共有データをアク
セスした後でロック変数をクリアする。
Generally, in a multiprocessor system,
There is a lock operation as a method of exclusive control of shared data in the shared memory 2. In the lock operation, a lock variable is prepared on the shared memory 2 for a certain shared data, the lock variable is secured before the shared data is processed, and the lock variable is cleared after the shared data is accessed.

【0060】プロセッサ上で実行されるプロセスは、ロ
ック変数を確保しようとする際に、既に他のプロセス
が、そのロック変数を確保している場合には、そのロッ
ク変数がクリアされるまで待ち状態となり、クリアされ
ると直ちにロック変数を確保する。こうして、複数のプ
ロセッサが同時に同じデータにアクセスして、データが
不整合になることを防いでいる。第3実施例におけるコ
ンピュータシステムは、このような排他制御を行なうも
のとする。
When the process executed on the processor tries to secure the lock variable, if another process has already secured the lock variable, the process waits until the lock variable is cleared. , And the lock variable is secured as soon as it is cleared. This prevents multiple processors from accessing the same data at the same time, resulting in inconsistent data. The computer system of the third embodiment performs such exclusive control.

【0061】最適化手段70aは、図7に示すような機
能によって構成されている。図7に示すように、最適化
手段70aは、プログラム解析部71、ロック変数検索
手段72、データ構造検索手段73、コード生成部7
4、及びデータ構造アロケーション手段75によって構
成されている。
The optimizing means 70a has a function as shown in FIG. As shown in FIG. 7, the optimizing unit 70a includes a program analyzing unit 71, a lock variable searching unit 72, a data structure searching unit 73, and a code generating unit 7.
4 and data structure allocation means 75.

【0062】プログラム解析部71は、所定のプログラ
ム言語を用いて記述された原始プログラムに対して、コ
ンピュータで実行可能な目的プログラムを作成するため
の解析を行なうものである。プログラム解析部71は、
原始プログラムに対する字句解析、構文解析、意味解析
等を実行する。
The program analysis unit 71 analyzes a source program written in a predetermined programming language to create a computer-executable target program. The program analysis unit 71
Performs lexical analysis, syntactic analysis, semantic analysis, etc. on the source program.

【0063】ロック変数検索手段72は、プログラム解
析部71によって解析された結果に基づいて、プログラ
ム中で使用されているロック変数を検索する。データ構
造検索手段73は、プログラム解析部71によって解析
されるプログラム中で、ロック変数検索手段72によっ
て検索されたロック変数によって保護されるデータ構造
を検索するものである。
The lock variable retrieval means 72 retrieves the lock variable used in the program based on the result analyzed by the program analysis section 71. The data structure retrieving unit 73 retrieves a data structure protected by the lock variable retrieved by the lock variable retrieving unit 72 in the program analyzed by the program analysis unit 71.

【0064】コード生成部74は、プログラム解析部7
1における解析結果に応じて、目的プログラムとなるコ
ードを生成するものである。データ構造アロケーション
手段75は、プログラム解析部71(ロック変数検索手
段72、データ構造検索手段73)で解析されたプログ
ラムをもとに、1つのキャッシュライン中に、ロック変
数で保護されたデータ構造が1個以下しか配置されない
ようにアロケーションを行なうものである。
The code generating section 74 includes a program analyzing section 7
A code to be a target program is generated according to the analysis result in 1. Based on the program analyzed by the program analysis unit 71 (lock variable search unit 72, data structure search unit 73), the data structure allocation unit 75 stores the data structure protected by the lock variable in one cache line. The allocation is performed so that only one or less is arranged.

【0065】図8に示す構成において、プログラム解析
部71及びコード生成部74は、コンパイラを構成す
る。プログラム解析部71には、さらにロック変数検索
手段72及びデータ構造検索手段73による機能が付加
されている。
In the configuration shown in FIG. 8, the program analysis unit 71 and the code generation unit 74 form a compiler. The program analysis unit 71 is further provided with the functions of the lock variable search means 72 and the data structure search means 73.

【0066】次に、第3実施例の動作について、図9に
示すフローチャートを参照しながら説明する。まず、プ
ログラム解析部71は、コンパイルされる原始プログラ
ムについて解析を行なう。この際、ロック変数検索手段
72は、プログラム中で使用されているロック変数を検
索する(ステップC1)。また、データ構造検索手段7
3は、ロック変数検索手段72によって検索されたロッ
ク変数によって保護されるデータ構造を検索する(ステ
ップC2)。
Next, the operation of the third embodiment will be described with reference to the flow chart shown in FIG. First, the program analysis unit 71 analyzes a source program to be compiled. At this time, the lock variable retrieval means 72 retrieves the lock variable used in the program (step C1). Also, the data structure search means 7
3 retrieves the data structure protected by the lock variable retrieved by the lock variable retrieval means 72 (step C2).

【0067】コード生成部74は、プログラム解析部7
1による解析結果に基づいてコードを生成する。データ
構造アロケーション手段75は、コード生成部74によ
って生成されたデータに関するコードに対して、ステッ
プC2において検索されたデータ構造を、1つのキャッ
シュライン中にロック変数で保護されたデータ構造が1
個以下しか配置されないようにアロケーションを行なう
(ステップC3)。
The code generator 74 is connected to the program analyzer 7
A code is generated based on the analysis result of 1. The data structure allocating means 75 sets the data structure searched in step C2 for the code relating to the data generated by the code generation unit 74 to the data structure protected by the lock variable in one cache line.
Allocation is performed so that only less than or equal to the number is arranged (step C3).

【0068】図10は共有メモリ2のキャッシュライン
にデータが配置される様子を具体的に説明するための図
である。なお、図10(a)に示すプログラムは、便宜
上、原始プログラムの形式によって示している。
FIG. 10 is a diagram for specifically explaining how data is arranged in the cache line of the shared memory 2. Note that the program shown in FIG. 10A is shown in the format of a source program for convenience.

【0069】図10(a)に示すプログラム中の関数1
は、まず「ロック変数Aをロック」して、「データ構造
Bを更新」し、「ロック変数Aをアンロック」する。続
いて「ロック変数Cをロック」して、「データ構造Dを
更新」し、「ロック変数Cをアンロック」するものであ
る。
Function 1 in the program shown in FIG.
First "locks the lock variable A", "updates the data structure B", and "unlocks the lock variable A". Subsequently, the "lock variable C is locked", the "data structure D is updated", and the "lock variable C is unlocked".

【0070】この場合、ステップC1においてロック変
数A及びロック変数Cが検索され、ステップC2におい
て、異なるロック変数A,Cでそれぞれ保護されたデー
タ構造B及びDが検索される。データ構造アロケーショ
ン手段75は、ステップC3において、図9(b)に示
すように、データ構造B及びDを各々異なるキャッシュ
ライン中に配置される。
In this case, the lock variable A and the lock variable C are retrieved in step C1, and the data structures B and D protected by different lock variables A and C are retrieved in step C2. In step C3, the data structure allocation means 75 arranges the data structures B and D in different cache lines, as shown in FIG. 9B.

【0071】データ構造Bとデータ構造Dを異なるキャ
ッシュラインに強制的に配置することにより、一方のデ
ータ構造がロックされたために、他方のデータ構造も使
用できなくことがなくなり、各キャッシュラインに配置
されたデータ構造を有効に利用することができる。
By forcibly allocating the data structure B and the data structure D to different cache lines, it is possible to prevent the other data structure from becoming unusable because one data structure is locked and the other data structure is allocated to each cache line. The created data structure can be effectively used.

【0072】次に、本発明の第4実施例について説明す
る。第4実施例においては、第1実施例と同様に図1に
示すコンピュータシステム上で、第4実施例による最適
化手段100a,100b,…が設けられている。第4
実施例におけるコンピュータシステムも、第3実施例と
同様な排他制御を行なうものとする。
Next, a fourth embodiment of the present invention will be described. In the fourth embodiment, as in the first embodiment, the optimizing means 100a, 100b, ... According to the fourth embodiment are provided on the computer system shown in FIG. Fourth
The computer system in the embodiment also performs exclusive control similar to that in the third embodiment.

【0073】最適化手段100aは、図11に示すよう
な機能によって構成されている。図11に示すように、
最適化手段100aは、プログラム解析部101、ロッ
ク変数検索手段102、データ構造検索手段103、コ
ード生成部104、データ構造アロケーション手段10
5、及びコピーデータ配置手段106によって構成され
ている。
The optimizing means 100a has a function as shown in FIG. As shown in FIG.
The optimization means 100a includes a program analysis unit 101, a lock variable search unit 102, a data structure search unit 103, a code generation unit 104, and a data structure allocation unit 10.
5 and the copy data arranging means 106.

【0074】プログラム解析部101は、所定のプログ
ラム言語を用いて記述された原始プログラムに対して、
コンピュータで実行可能な目的プログラムを作成するた
めの解析を行なうものである。プログラム解析部101
は、原始プログラムに対する字句解析、構文解析、意味
解析等を実行する。
The program analysis unit 101, for a source program written using a predetermined programming language,
This is an analysis for creating a target program that can be executed by a computer. Program analysis unit 101
Performs lexical analysis, syntactic analysis, semantic analysis, etc. on the source program.

【0075】ロック変数検索手段102は、プログラム
解析部101によって解析された結果に基づいて、プロ
グラム中で使用されているロック変数を検索する。デー
タ構造検索手段103は、プログラム解析部101によ
って解析されるプログラム中で、ロック変数検索手段1
02によって検索されたロック変数によって保護される
データ構造を検索するものである。
The lock variable retrieval means 102 retrieves the lock variable used in the program based on the result analyzed by the program analysis unit 101. The data structure search means 103 is a lock variable search means 1 in the program analyzed by the program analysis unit 101.
To retrieve the data structure protected by the lock variable retrieved by 02.

【0076】コード生成部104は、プログラム解析部
101における解析結果に応じて、目的プログラムとな
るコードを生成するものである。データ構造アロケーシ
ョン手段105は、プログラム解析部101(ロック変
数検索手段102、データ構造検索手段103)で解析
されたプログラムをもとに、1つのキャッシュライン中
に、ロック変数で保護されたデータ構造が1個以下しか
配置されないようにアロケーションを行なうものであ
る。また、データ構造アロケーション手段105は、キ
ャッシュライン中のデータ構造が配置された部分以外の
領域に、そのデータ構造を保護するロック変数を獲得し
てから解放するまでの間に参照されるデータを配置す
る。
The code generator 104 is for generating a code to be a target program according to the analysis result of the program analyzer 101. The data structure allocation means 105, based on the program analyzed by the program analysis unit 101 (lock variable search means 102, data structure search means 103), stores the data structure protected by the lock variable in one cache line. The allocation is performed so that only one or less is arranged. Further, the data structure allocation means 105 arranges the data referred to from the acquisition to the release of the lock variable for protecting the data structure in the area other than the portion where the data structure is arranged in the cache line. To do.

【0077】コピーデータ配置手段106は、データ構
造アロケーション手段105によって配置された、デー
タ構造を保護するロック変数を獲得してから解放するま
での間に参照されるデータが既に他のキャッシュライン
に配置されている場合に、そのデータが参照のみの対象
となる場合に限って、そのデータのコピーを配置するも
のである。
The copy data arranging means 106 arranges the data, which is arranged by the data structure allocating means 105 and is referred to during the period from the acquisition to the release of the lock variable for protecting the data structure, to another cache line. If so, a copy of the data is placed only if the data is for reference only.

【0078】図11に示す構成において、プログラム解
析部101及びコード生成部104は、コンパイラを構
成する。プログラム解析部101には、さらにロック変
数検索手段102及びデータ構造検索手段103による
機能が付加され、コード生成部104には、さらにコピ
ーデータ配置手段106及びデータ構造アロケーション
手段105による機能が付加されている。102は、ロ
ック変数検索手段であり、プログラム中で使用されてい
るロック変数を検索する。104はロック変数によって
保護されたデータ構造を検索する手段である。本発明の
最適化コンパイラではプログラム解析部で解析されたプ
ログラムを基に、1つのキャッシュライン中に、ロック
で保護されたデータ構造が1個以下しか配置されないよ
うにする。そしてキャッシュライン中の、データ構造が
配置された部分以外の場所に、そのデータ構造を保護す
るロックを獲得してから解放するまでの間に参照するデ
ータを配置する。またもしそのデータが既に他のキャッ
シュライン中に配置されている場合には、そのデータが
参照のみの場合に限って、そのデータのコピーを配置す
る。
In the configuration shown in FIG. 11, the program analysis unit 101 and the code generation unit 104 constitute a compiler. The program analysis unit 101 is further provided with the functions of the lock variable search unit 102 and the data structure search unit 103, and the code generation unit 104 is further provided with the functions of the copy data arrangement unit 106 and the data structure allocation unit 105. There is. Reference numeral 102 denotes a lock variable search means, which searches for a lock variable used in the program. Reference numeral 104 is a means for searching a data structure protected by a lock variable. In the optimizing compiler of the present invention, only one data structure protected by a lock is arranged in one cache line based on the program analyzed by the program analysis unit. Then, in the cache line, the data to be referenced is arranged at a place other than the portion where the data structure is arranged, from the time the lock protecting the data structure is acquired to the time it is released. Also, if the data has already been placed in another cache line, a copy of the data is placed only if the data is referenced only.

【0079】次に、第4実施例の動作について、図12
に示すフローチャートを参照しながら説明する。まず、
プログラム解析部101は、コンパイルされる原始プロ
グラムについて解析を行なう。この際、ロック変数検索
手段102は、プログラム中で使用されているロック変
数を検索する(ステップD1)。また、データ構造検索
手段103は、ロック変数検索手段102によって検索
されたロック変数によって保護されるデータ構造を検索
する(ステップD2)。
Next, the operation of the fourth embodiment will be described with reference to FIG.
This will be described with reference to the flowchart shown in FIG. First,
The program analysis unit 101 analyzes a source program to be compiled. At this time, the lock variable search means 102 searches for the lock variable used in the program (step D1). Further, the data structure search means 103 searches for a data structure protected by the lock variable searched by the lock variable search means 102 (step D2).

【0080】コード生成部104は、プログラム解析部
101による解析結果に基づいてコードを生成する。デ
ータ構造アロケーション手段105は、コード生成部1
04によって生成されたデータに関するコードに対し
て、ステップD2において検索されたデータ構造を、1
つのキャッシュライン中にロック変数で保護されたデー
タ構造が1個以下しか配置されないようにアロケーショ
ンを行なう(ステップD3)。
The code generator 104 generates a code based on the analysis result of the program analyzer 101. The data structure allocation unit 105 is the code generation unit 1
For the code relating to the data generated by 04, set the data structure searched in step D2 to 1
Allocation is performed so that no more than one data structure protected by a lock variable is arranged in one cache line (step D3).

【0081】その後、データ構造アロケーション手段1
05は、ステップD3において配置が完了したデータ構
造について、そのデータ構造を保護するロック変数を獲
得してから解放するまでの間に参照するデータが存在す
るか否かを調べる(ステップD4)。
After that, the data structure allocation means 1
The step 05 examines whether or not there is data to be referred to from the acquisition of the lock variable that protects the data structure to the release of the data structure that has been arranged in step D3 (step D4).

【0082】ここで、対象とするデータが存在する場合
には、データ構造アロケーション手段105は、そのデ
ータがまだ他のキャッシュラインに配置されていないか
否かを調べる(ステップD5)。
Here, if the target data exists, the data structure allocation means 105 checks whether or not the data has not been placed in another cache line (step D5).

【0083】まだ配置されていない場合には、データ構
造アロケーション手段105は、そのデータを、ステッ
プD3で配置されたデータ構造が配置された部分以外の
領域に配置する(ステップD6)。
If not already arranged, the data structure allocation means 105 arranges the data in an area other than the portion where the data structure arranged in step D3 is arranged (step D6).

【0084】なお、ステップD5において、既に対象と
するデータ(ロック中に参照されるデータ)が何れかの
キャッシュラインに配置されていると判別された場合に
は、コピーデータ配置手段106は、そのデータのコピ
ーを作成する(ステップB5)。
If it is determined in step D5 that the target data (data referred to during lock) has already been placed in any cache line, the copy data placement means 106 determines that A copy of the data is created (step B5).

【0085】そして、コピーデータ配置手段106は、
コピーによって作成したデータを、そのデータが参照の
みの場合に限って、データ構造が配置された同じキャッ
シュライン中に配置する(ステップD8)。
Then, the copy data placement means 106
The data created by copying is arranged in the same cache line in which the data structure is arranged only when the data is reference only (step D8).

【0086】図13は共有メモリ2のキャッシュライン
にデータが配置される様子を具体的に説明するための図
である。なお、図13(a)に示すプログラムは、便宜
上、原始プログラムの形式によって示している。
FIG. 13 is a diagram for specifically explaining how data is arranged in the cache line of shared memory 2. Note that the program shown in FIG. 13A is shown in the format of a source program for convenience.

【0087】図13(a)に示すプログラム中の関数1
は、まず「ロック変数A」をロックし、「データBを参
照」し、「データ構造Cを更新」し、「ロック変数Aを
アンロック」する。続いて「ロック変数Dをロック」し
て、「データBを参照」し、「データ構造Eを更新」
し、「ロック変数Dをアンロック」するものである。
Function 1 in the program shown in FIG. 13 (a)
First locks "lock variable A", "references data B", "updates data structure C", and "unlocks lock variable A". Then, "lock lock variable D", "reference data B", and "update data structure E"
Then, the “lock variable D is unlocked”.

【0088】この場合、ステップD3において異なるロ
ック変数A及びCでそれぞれ保護されたデータ構造C及
びEは、各々異なるキャッシュライン中に配置される。
また、図13(b)に示すように、データ構造C及びE
を保護するロック変数A及びDを獲得してから解放する
までの間に参照される読み込みのみの対象となるデータ
Bを、データ構造Cが配置されているキャッシュライン
の残りの部分に配置し、またデータBのコピーをデータ
構造Eが配置されているキャッシュラインの残りの部分
にそれぞれ配置する。
In this case, the data structures C and E protected by different lock variables A and C in step D3 are arranged in different cache lines.
Further, as shown in FIG. 13B, the data structures C and E
The data B, which is a read-only target that is referenced between the acquisition and release of the lock variables A and D that protect the data, is arranged in the remaining portion of the cache line in which the data structure C is arranged, Also, a copy of the data B is placed in each of the remaining portions of the cache line where the data structure E is placed.

【0089】データ構造Cとデータ構造Eを異なるキャ
ッシュラインに強制的に配置することにより、一方のデ
ータ構造がロックされたために、他方のデータ構造も使
用できなくことがなくなり、さらにデータ構造を保護す
るロック変数を獲得してから解放するまでの間に参照さ
れるデータも同じキャッシュラインに配置されることか
ら、データ構造をキャッシュに格納した際に、既に参照
されるデータがキャッシュ中に存在するので共有メモリ
2から改めてデータを転送する必要がない。さらに、デ
ータ構造がロックされたとしても、参照されるデータ自
身はデータ構造毎にキャッシュに存在しているので、参
照することができる。
By forcibly arranging the data structure C and the data structure E in different cache lines, it is possible to prevent the other data structure from becoming unavailable because one data structure is locked, and the data structure is further protected. The data that is referenced from the time the lock variable is acquired to the time it is released is also placed in the same cache line, so when the data structure is stored in the cache, the data that is already referenced already exists in the cache. Therefore, there is no need to transfer the data from the shared memory 2 again. Further, even if the data structure is locked, the referenced data itself exists in the cache for each data structure, and therefore can be referenced.

【0090】なお、前述した第1〜第4実施例において
は、データあるいはデータ構造をキャッシュラインに配
置する場合について説明したが、入出力処理用のバッフ
ァとして用いる領域についても同様にして配置すること
ができる。
In the above-mentioned first to fourth embodiments, the case where the data or data structure is arranged in the cache line has been described, but the areas used as the buffers for input / output processing should be arranged in the same manner. You can

【0091】図14はプログラム解析部及びコード生成
部から構成されるコンパイラによって行われるデータ配
置の様子を示す図である。図14(a)に示すプログラ
ムは、「buffer1」及び「buffer2」を入
出力処理のバッファとして使用するものである。プログ
ラム解析部は、コンパイルの対象とするプログラムを解
析して、バッファの定義を検索し、コード生成部は、検
索された各バッファについて、図14(b)に示すよう
に、1つのキャッシュライン中に1個以下の入出力バッ
ファしか配置されないようにする。すなわち、あるキャ
ッシュラインを配置した後、キャッシュライン中に空き
の領域があっても他のキャッシュラインの配置を行わな
いようにする。
FIG. 14 is a diagram showing how data is arranged by a compiler composed of a program analysis section and a code generation section. The program shown in FIG. 14A uses "buffer1" and "buffer2" as buffers for input / output processing. The program analysis unit analyzes the program to be compiled and retrieves the definition of the buffer, and the code generation unit, for each retrieved buffer, as shown in FIG. Make sure that no more than one I / O buffer is allocated to each. That is, after a certain cache line is arranged, another cache line is not arranged even if there is an empty area in the cache line.

【0092】入出力処理用のバッファを1つのキャッシ
ュライン中に1個以下しかアロケーションしないように
することにより、例えば異なるバッファを用いるたびに
キャッシュラインのデータがキャッシュメモリ間で転送
されるようなことが発生しない。
By allocating no more than one buffer for input / output processing in one cache line, data in the cache line is transferred between cache memories each time a different buffer is used. Does not occur.

【0093】[0093]

【発明の効果】以上詳述したように本発明によれば、そ
れぞれのプロセッサに対応してキャッシュが設けられた
マルチプロセッサシステムにおいて、キャッシュの能力
を活かして性能を上げることが可能となるものである。
As described in detail above, according to the present invention, in a multiprocessor system in which a cache is provided for each processor, it is possible to improve the performance by utilizing the capacity of the cache. is there.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の一実施例に係わるコンピュータシステ
ムの概略構成を示すブロック図。
FIG. 1 is a block diagram showing a schematic configuration of a computer system according to an embodiment of the present invention.

【図2】本発明の第1実施例における最適化手段の機能
構成を示すブロック図。
FIG. 2 is a block diagram showing a functional configuration of an optimizing unit according to the first exemplary embodiment of the present invention.

【図3】本発明の第1実施例の最適化手段5aにおける
データ配置手段15の処理の流れを示すフローチャー
ト。
FIG. 3 is a flowchart showing a processing flow of a data arranging means 15 in the optimizing means 5a according to the first embodiment of the present invention.

【図4】本発明の第1実施例におけるキャッシュライン
にデータが配置される様子を具体的に説明するための
図。
FIG. 4 is a diagram for specifically explaining how data is arranged in a cache line in the first embodiment of the present invention.

【図5】本発明の第2実施例における最適化手段の機能
構成を示すブロック図。
FIG. 5 is a block diagram showing a functional configuration of an optimizing unit according to a second exemplary embodiment of the present invention.

【図6】本発明の第2実施例の最適化手段40aにおけ
るデータ配置手段45及びコピーデータ配置手段46の
処理の流れを示すフローチャート。
FIG. 6 is a flowchart showing a processing flow of a data arranging unit 45 and a copy data arranging unit 46 in the optimizing unit 40a according to the second embodiment of the present invention.

【図7】本発明の第2実施例におけるキャッシュライン
にデータが配置される様子を具体的に説明するための
図。
FIG. 7 is a diagram for specifically explaining how data is arranged in a cache line according to the second embodiment of the present invention.

【図8】本発明の第3実施例における最適化手段の機能
構成を示すブロック図。
FIG. 8 is a block diagram showing a functional configuration of an optimizing unit according to a third exemplary embodiment of the present invention.

【図9】本発明の第3実施例の動作を説明するためのフ
ローチャート。
FIG. 9 is a flowchart for explaining the operation of the third embodiment of the present invention.

【図10】本発明の第3実施例におけるキャッシュライ
ンにデータが配置される様子を具体的に説明するための
図。
FIG. 10 is a diagram for specifically explaining how data is arranged in a cache line according to the third embodiment of the present invention.

【図11】本発明の第4実施例における最適化手段の機
能構成を示すブロック図。
FIG. 11 is a block diagram showing a functional configuration of an optimizing unit according to a fourth exemplary embodiment of the present invention.

【図12】本発明の第4実施例の動作を説明するための
フローチャート。
FIG. 12 is a flowchart for explaining the operation of the fourth embodiment of the present invention.

【図13】本発明の第4実施例におけるキャッシュライ
ンにデータが配置される様子を具体的に説明するための
図。
FIG. 13 is a diagram for specifically explaining how data is arranged in a cache line according to the fourth embodiment of the present invention.

【図14】本発明における入出力処理用のバッファとし
て用いる領域がキャッシュラインに配置される様子を具
体的に説明するための図。
FIG. 14 is a diagram for specifically explaining how an area used as a buffer for input / output processing according to the present invention is arranged in a cache line.

【符号の説明】[Explanation of symbols]

11,41,71,101…プログラム解析部、12,
42…データ認識手段、13,43,74,104…コ
ード生成部、14,44…キャッシュラインサイズ認識
手段、15,45…データ配置手段、46,106…コ
ピーデータ配置手段、72,,102…ロック変数検索
手段、73,103…データ構造検索手段、75,10
5…データ構造アロケーション手段。
11, 41, 71, 101 ... Program analysis unit 12,
42 ... Data recognition means, 13, 43, 74, 104 ... Code generation section, 14, 44 ... Cache line size recognition means, 15, 45 ... Data placement means, 46, 106 ... Copy data placement means, 72, 102 ... Lock variable search means, 73, 103 ... Data structure search means, 75, 10
5 ... Data structure allocation means.

Claims (10)

【特許請求の範囲】[Claims] 【請求項1】 キャッシュを持った複数のプロセッサが
接続されたマルチプロセッサシステムであって、メモリ
上のデータが所定のキャッシュライン単位で操作される
マルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
成するための解析を行なう際に読み込みのみの対象とな
るデータを認識するデータ認識手段と、 自システムにおけるキャッシュラインのサイズを認識す
るキャッシュサイズ認識手段と、 解析の結果に応じてコード生成を行なう際に、前記デー
タ認識手段及び前記キャッシュサイズ認識手段による認
識結果に基づいて、プログラムが同時にアクセスする複
数のデータが同時にメモリからキャッシュに格納される
ように、読み込みのみのデータを前記読み込みのみのデ
ータと同時にアクセスされる読み書きデータが配置され
るのと同じキャッシュライン上に配置するデータ配置手
段と、 を具備したことを特徴とするマルチプロセッサシステ
ム。
1. A multiprocessor system in which a plurality of processors each having a cache are connected, and data in a memory is operated in a predetermined cache line unit, which is executable for a source program. Data recognition means that recognizes the data to be read only when performing analysis to create the target program, cache size recognition means that recognizes the size of the cache line in the local system, and code depending on the analysis result. At the time of generation, based on the recognition result by the data recognizing means and the cache size recognizing means, the read-only data is read so that a plurality of data accessed simultaneously by the program are simultaneously stored in the cache from the memory. At the same time as the A multiprocessor system comprising: a data arranging unit arranged on the same cache line where the read / write data to be accessed is arranged.
【請求項2】 前記データ配置手段によってデータを配
置する際に、前記読み込みのみのデータを配置すべきキ
ャッシュラインが複数存在する場合に、前記読み込みの
みのデータを複数のキャッシュライン中にコピーして配
置するコピーデータ配置手段をさらに具備したことを特
徴とする請求項1記載のマルチプロセッサシステム。
2. When arranging the data by the data arranging means, when there are a plurality of cache lines in which the read-only data should be arranged, the read-only data is copied into a plurality of cache lines. 2. The multiprocessor system according to claim 1, further comprising copy data arranging means for arranging.
【請求項3】 データ構造にロック変数を付加し、デー
タ構造にアクセスする場合にはロック変数をセットして
からデータ構造にアクセスし、データ構造へのアクセス
が終わった後にロック変数をリセットすることにより、
マルチプロセッサ間で共有するデータ構造を排他制御す
るマルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
成するための解析を行なう際に、プログラム中で使用さ
れているデータ構造を排他制御するロック変数を検索す
るためのロック変数検索手段と、 前記ロック変数検索手段によって検索されたロック変数
によって保護されるデータ構造を検索するためのデータ
構造検索手段と、 解析結果に応じてコード生成を行なう際に、前記ロック
変数検索手段及び前記データ構造検索手段による検索結
果に基づいて、1つのキャッシュライン中にロック変数
によって保護されたデータ構造を1個以下しかアロケー
ションしないようにするデータ構造アロケーション手段
と、 を具備したことを特徴とするマルチプロセッサシステ
ム。
3. When a lock variable is added to a data structure and the data structure is accessed, the lock variable is set, the data structure is accessed, and the lock variable is reset after the access to the data structure is completed. Due to
In a multiprocessor system that exclusively controls the data structure shared by multiple processors, the data structure used in the program is exclusively controlled when performing analysis to create an executable target program for the source program. Lock variable searching means for searching a lock variable, a data structure searching means for searching a data structure protected by the lock variable searched by the lock variable searching means, and code generation according to an analysis result. At the time of execution, a data structure allocation means for allocating no more than one data structure protected by a lock variable in one cache line based on the search results by the lock variable search means and the data structure search means. And a machine characterized by Multiprocessor system.
【請求項4】 キャッシュライン中のアロケーションさ
れたデータ構造以外の部分に、前記データ構造を保護す
るロックをセットしてからリセットするまでの間にアク
セスする読み込みのみのデータのコピーをアロケーショ
ンするコピーデータ配置手段をさらに具備したことを特
徴とする請求項3記載のマルチプロセッサシステム。
4. Copy data allocating a copy of read-only data to be accessed in a portion other than an allocated data structure in a cache line between setting and resetting a lock for protecting the data structure. 4. The multiprocessor system according to claim 3, further comprising arranging means.
【請求項5】 キャッシュを持った複数のプロセッサが
接続されたマルチプロセッサシステムであって、メモリ
上のデータが所定のキャッシュライン単位で操作される
マルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
成するための解析を行なう際に入出力処理のバッファを
認識するバッファ確認手段と、 解析結果に応じてコード生成を行なう際に、前記バッフ
ァ認識手段による認識結果に基づいて、入出力処理のバ
ッファを1つのキャッシュライン中に1個以下しかアロ
ケーションしないようにするアロケーション手段と、 を具備したことを特徴とするマルチプロセッサシステ
ム。
5. A multiprocessor system in which a plurality of processors each having a cache are connected, and data in a memory is operated in a predetermined cache line unit, which is executable for a source program. Buffer confirmation means for recognizing an input / output processing buffer when performing analysis for creating an object program, and input / output based on the recognition result by the buffer recognizing means when code generation is performed according to the analysis result. A multiprocessor system comprising: allocation means for allocating no more than one processing buffer in one cache line.
【請求項6】 キャッシュを持った複数のプロセッサが
接続されたマルチプロセッサシステムであって、メモリ
上のデータが所定のキャッシュライン単位で操作される
マルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
成するための解析を行なう際に読み込みのみの対象とな
るデータを認識し、 自システムにおけるキャッシュラインのサイズを認識
し、 解析の結果に応じてコード生成を行なう際に、認識され
たキャッシュラインのサイズに応じて、プログラムが同
時にアクセスする複数のデータが同時にメモリからキャ
ッシュに格納されるように、先に認識された読み込みの
みのデータを前記読み込みのみのデータと同時にアクセ
スされる読み書きデータが配置される同じキャッシュラ
イン上に配置することを特徴とするメモリアロケーショ
ン最適化方法。
6. A multiprocessor system in which a plurality of processors each having a cache are connected, and data in a memory is operated in a predetermined cache line unit, which can be executed for a source program. Recognized when the data to be read is recognized when performing the analysis for creating the target program, the size of the cache line in the local system is recognized, and when the code is generated according to the analysis result. Depending on the size of the cache line, read-only data that is recognized at the same time as read-only data can be accessed at the same time as the read-only data that was previously recognized so that multiple data that the program accesses simultaneously can be stored in the cache from memory at the same time. Placed on the same cache line where is placed A method for optimizing memory allocation, comprising:
【請求項7】 読み込みのみのデータを前記読み込みの
みのデータと同時にアクセスされる読み書きデータが配
置されるのと同じキャッシュライン上に配置する場合
に、前記読み込みのみのデータを配置すべきキャッシュ
ラインが複数存在する場合には、前記読み込みのみのデ
ータを複数のキャッシュライン中にコピーして配置する
ことを特徴とする請求項6記載のメモリアロケーション
最適化方法。
7. When the read-only data is arranged on the same cache line where the read / write data accessed at the same time as the read-only data is arranged, the cache line to which the read-only data should be arranged is 7. The memory allocation optimizing method according to claim 6, wherein when there are a plurality of data, the read-only data is copied and arranged in a plurality of cache lines.
【請求項8】 データ構造にロック変数を付加し、デー
タ構造にアクセスする場合にはロック変数をセットして
からデータ構造にアクセスし、データ構造へのアクセス
が終わった後にロック変数をリセットすることにより、
マルチプロセッサ間で共有するデータ構造を排他制御す
るマルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
成するための解析を行なう際に、プログラム中で使用さ
れているデータ構造を排他制御するロック変数を検索
し、 検索されたロック変数によって保護されるデータ構造を
検索し、 解析結果に応じてコード生成を行なう際に、検索された
ロック変数によって保護されたデータ構造を1つのキャ
ッシュライン中に1個以下しかアロケーションしないよ
うにすることを特徴とするメモリアロケーション最適化
方法。
8. When a lock variable is added to the data structure and the data structure is accessed, the lock variable is set, the data structure is accessed, and the lock variable is reset after the access to the data structure is completed. Due to
In a multiprocessor system that exclusively controls the data structure shared by multiple processors, the data structure used in the program is exclusively controlled when performing analysis to create an executable target program for the source program. Search the lock variable to be searched, search the data structure protected by the searched lock variable, and generate the code according to the analysis result. A method for optimizing memory allocation, characterized in that only one or less is allocated in the memory.
【請求項9】 キャッシュライン中のアロケーションさ
れたデータ構造以外の部分に、前記データ構造を保護す
るロックをセットしてからリセットするまでの間にアク
セスする読み込みのみのデータのコピーをアロケーショ
ンすることを特徴とする請求項8記載のメモリアロケー
ション最適化方法。
9. Allocating a copy of read-only data that is accessed between setting and resetting a lock protecting the data structure in a portion of the cache line other than the allocated data structure. 9. The method of optimizing memory allocation according to claim 8.
【請求項10】 キャッシュを持った複数のプロセッサ
が接続されたマルチプロセッサシステムであって、メモ
リ上のデータが所定のキャッシュライン単位で操作され
るマルチプロセッサシステムにおいて、 原始プログラムに対して実行可能な目的プログラムを作
成するための解析を行なう際に入出力処理のバッファを
認識し、 解析結果に応じてコード生成を行なう際に、認識された
入出力処理のバッファを1つのキャッシュライン中に1
個以下しかアロケーションしないようにすることを特徴
とするメモリアロケーション最適化方法。
10. A multiprocessor system in which a plurality of processors each having a cache are connected, and data in a memory is operated in a predetermined cache line unit, which can be executed for a source program. Recognize the I / O processing buffer when performing analysis to create the target program, and recognize the I / O processing buffer in one cache line when generating code according to the analysis result.
A method for optimizing memory allocation, characterized in that only less than or equal to each number is allocated.
JP6212665A 1994-09-06 1994-09-06 Multiprocessor system and memory allocation optimizing method Pending JPH0877068A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6212665A JPH0877068A (en) 1994-09-06 1994-09-06 Multiprocessor system and memory allocation optimizing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6212665A JPH0877068A (en) 1994-09-06 1994-09-06 Multiprocessor system and memory allocation optimizing method

Publications (1)

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

Family

ID=16626381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6212665A Pending JPH0877068A (en) 1994-09-06 1994-09-06 Multiprocessor system and memory allocation optimizing method

Country Status (1)

Country Link
JP (1) JPH0877068A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007048285A (en) * 2005-08-05 2007-02-22 Fujitsu Ltd Power consumption reducing method and logical device and system in cache
JP2007048286A (en) * 2005-08-05 2007-02-22 Fujitsu Ltd Power consumption reduction method in cache, logical unit, and system
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
JP2007048285A (en) * 2005-08-05 2007-02-22 Fujitsu Ltd Power consumption reducing method and logical device and system in cache
JP2007048286A (en) * 2005-08-05 2007-02-22 Fujitsu Ltd Power consumption reduction method in cache, logical unit, and system
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 (en) Optimization of software transactional memory operations
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 (en) Program conversion method and program conversion device
JP2004326758A (en) Local cache block flash command
US6829760B1 (en) Runtime symbol table for computer programs
JPH09204403A (en) Parallel computer
JP2002251321A (en) Cache memory system device
US20080235460A1 (en) Apparatus and method for information processing enabling fast access to program
EP0609051A1 (en) Method and system for data coherency in a multiprocessor system
KR20060102565A (en) System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
JP3973129B2 (en) Cache memory device and central processing unit using the same
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 (en) File sharing method
JP3814521B2 (en) Data processing method and apparatus
Frank et al. A hybrid shared memory/message passing parallel machine
JPH0877068A (en) Multiprocessor system and memory allocation optimizing method
JP3093609B2 (en) Apparatus and method for controlling storage consistency of cache memory