JPH0962574A - メモリ・アドレス割り付け方法 - Google Patents

メモリ・アドレス割り付け方法

Info

Publication number
JPH0962574A
JPH0962574A JP7218643A JP21864395A JPH0962574A JP H0962574 A JPH0962574 A JP H0962574A JP 7218643 A JP7218643 A JP 7218643A JP 21864395 A JP21864395 A JP 21864395A JP H0962574 A JPH0962574 A JP H0962574A
Authority
JP
Japan
Prior art keywords
address
block
program
segment
correlation
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
JP7218643A
Other languages
English (en)
Inventor
Mitsunori Kori
光則 郡
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP7218643A priority Critical patent/JPH0962574A/ja
Publication of JPH0962574A publication Critical patent/JPH0962574A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 従来のメモリ・アドレス割り付け方法では、
ヒットミスの回数は、アドレス毎の参照回数だけでな
く、参照の順序に依存しているため、アドレスの再配置
によりヒットミス回数がかえって増加することがあると
いう課題があった。 【解決手段】 予めプログラムを実行させて、ブロック
毎に参照された回数を記録し、参照相関関数を設定して
アソシァティブメモリの同一セットにブロックを割り付
けた場合のヒットミス回数の期待値をブロック間で相関
値として表したアドレス参照パラメータを得る抽出ステ
ップと、アドレス参照パラメータを使用してプログラム
中のセグメントについてその構成ブロックと構成ブロッ
クとの相関値を積算してセグメント相関値を求めるアド
レス再配置初期化ステップと、セグメント間の相関値の
中でヒット率が高い組み合わせのセグメントの組を選ん
で固定してアドレス再配置するブロッククラスタリング
・ステップとを備えた。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、情報処理等にお
ける主記憶アドレス割り付け方法に関するものである。
【0002】
【従来の技術】図19は、従来の主記憶アドレス割り付
け方法を説明する図である。図において、201はソー
スプログラム、202aはコンパイラ、1aはコンパイ
ラ202aの生成するオブジェクトプログラム、3aは
プログラムローダ、4aは主記憶装置である。203は
プログラムの参照するアドレスを記録するプログラム、
即ちプロファイラである。204はプロファイル情報、
202bはアドレス再配置機能を備えるコンパイラ、1
bはコンパイラ202bによって再配置されたオブジェ
クトファイル、4bは主記憶装置である。
【0003】次に、上記説明図に基づき動作について説
明する。ソースプログラム201は、コンパイラ202
aによってコンパイルされ、オブジェクトプログラム1
aが生成される。オブジェクトプログラム1aは、プロ
グラムローダ3aによって主記憶装置4aにロードされ
実行される。主記憶装置4a上でプログラムがその実行
を通じて参照した命令及びデータのアドレスは、プロフ
ァイラ203によって記録され、各アドレスごとの参照
回数を示すプロファイル情報204に記憶される。アド
レス再配置機能を持つコンパイラ202bは、ソースプ
ログラム201及び、プロファイル情報204に従っ
て、参照頻度の高いアドレスがセットアソシァティブメ
モリ(連想メモリ)の異なるセットに対応するように、
プログラムのアドレス配置を決定し、オブジェクトファ
イル1bを生成する。アドレス再配置機能を持つコンパ
イラ202bによって生成されたオブジェクトファイル
1bは、プログラムローダによって主記憶装置にロード
され実行される。
【0004】アドレス配置再機能を持つコンパイラ20
2bの動作の一例を図20に示す。図20において、2
04aは再配置される前のオブジェクトファイル1に対
するプロファイル情報の一例であり、204aには各ア
ドレスごとの参照回数が含まれている。プログラムロー
ダ3aによって主記憶装置4aに配置されるとすると、
ブロックサイズ16、セット数4のセットアソシァティ
ブメモリの場合、各セットに対応するアドレス参照回数
は、例えば、205aで示される数になったとする。ア
ドレス再配置機能を持つコンパイラは、アドレスの参照
がセット0に偏るため、セット0においてミスが発生す
る可能性が高いことから、例えば、アドレス20〜2F
(16進)と、アドレス30〜3F(16進)の内容を
入れ替える。このアドレス再配置の結果により、プロフ
ァイル情報は204bのようになり、アドレス参照回数
は、例えば、205bのようになる。こうして、205
aの例と比べて、205bにおいては、アドレスの参照
の偏りが減少する。
【0005】アドレス再配置により、アソシァティブメ
モリのヒットミスが減少する一例を図21に示す。図2
1において、206aはアドレス参照列の一例である。
アドレス参照列206aに対応するプロファイル情報
は、204aと同一である。図19と同一条件、即ち、
ブロックサイズ16、セット数4のセットアソシァティ
ブメモリに対して、図20に示したアドレス再配置機能
を持つコンパイラ202bによってアドレス再配置が行
われた結果、アドレス参照列206aは、206bのよ
うに変換される。連想度1のセットアソシァティブメモ
リの場合、アドレス参照列206aに対して、ヒットミ
ス回数は2001回となる。一方、アドレス参照列20
6bに対するミスは3回に減少するため、プログラムの
実行性能が向上する。
【0006】次に、アドレス再配置によってミスが増加
する例を図22に示す。図22において、207aはア
ドレス参照列の一例である。アドレス参照列207aに
対応するプロファイル情報は、204aと同一である。
図21と同一条件、即ち、ブロックサイズ16、セット
数4のセットアソシァティブメモリに対して、図20に
示したアドレス再配置機能を持つコンパイラ202bに
よってアドレス再配置が行われた結果、アドレス参照列
207aは、207bのように変換される。連想度1の
セットアソシァティブメモリの場合、アドレス参照列2
07aに対するミスは3回であるが、アドレス参照列2
07bに対するミス回数は202回である。従って、ア
ドレス再配置によってミスはかえって増加し、プログラ
ムの実行性能は低下する。従来の主記憶アドレス配置方
式では、メモリ参照の順序に関する情報を利用していな
いため、図21の例と図22の例を区別することができ
ず、従って、図22のような場合に対して最適なアドレ
ス配置を行うことができない。
【0007】
【発明が解決しようとする課題】従来のメモリ・アドレ
ス割り付け方法は、以上のように構成されていたので、
アドレス参照の順序に関する情報を利用していない。一
方、キャッシュメモリ、TLB(Translatio
n Lookaside Buffer)等のセットア
ソシァティブメモリにおけるヒットミスの回数は、アド
レス毎の参照回数だけでなく、参照の順序に依存してい
るため、アドレスの再配置により、ヒットミス回数がか
えって増加する場合が存在するなど、必ずしも最適な主
記憶アドレスを割り付けることが出来ないという課題が
あった。
【0008】
【課題を解決するための手段】上記課題を解決し、実際
のプログラム実行時のヒットミスが少なくなるメモリ・
アドレスの割り付け方法を得るため、以下の構成をと
る。本発明に係るメモリ・アドレス割り付け方法は、予
めプログラムを実行させて、書き換えの単位であるブロ
ック毎に参照された回数を記録し、更に後述の相関値を
求める際の基準となる参照相関関数を設定して、この参
照相関関数に基づいて記録された参照回数からアソシァ
ティブメモリの書き換え可能区分であるセットの同一セ
ットに上記ブロックを割り付けた場合のヒットミス回数
の期待値をブロック間で相関値として表したアドレス参
照パラメータを得るアドレス参照パラメータ抽出ステッ
プと、上記抽出されたアドレス参照パラメータを使用し
て、プログラム中の再配置可能単位であるセグメントに
ついてその構成ブロックと他のセグメントの構成ブロッ
クとの相関値を積算してセグメント間のヒットミスの期
待値であるセグメント相関値を求めるアドレス再配置初
期化ステップと、上記得られたセグメント間の相関値の
中でヒット率が高い組み合わせのセグメントの組を選ん
で固定してメモリ・アドレスを定めていくアドレス再配
置ブロッククラスタリング・ステップとを備えた。
【0009】また更に、参照相関関数は、セット数と、
アソシァティブメモリ中で同時に参照できる領域の数で
ある連想度と、ブロック間の距離である参照距離で定ま
るようにした。または、予め複数のプログラムを実行さ
せてアドレス参照パラメータを得て、必要に応じて重み
付け加算して複合アドレス参照パラメータを定め、この
定めた複合アドレス参照パラメータを用いてセグメント
相関値を求め、メモリ・アドレスを定めるようにした。
または、複数の異なるアソシァティブメモリに対してそ
れぞれ異なる参照相関関数を設定して対応するアドレス
参照パラメータを得て、各対応するアドレス参照パラメ
ータの値を重み付け加算して重み付け加算アドレス参照
パラメータを定め、この重み付け加算アドレス参照パラ
メータを用いてセグメント相関値を求め、メモリ・アド
レスを定めるようにした。
【0010】
【発明の実施の形態】
実施の形態1.以下、この発明の実施の形態を図につい
て説明する。図1は、本発明におけるアドレス割り付け
方法の手順の一例を説明する図である。図において、1
は2次記憶装置に格納されたオブジェクトプログラム、
2は初期配置アドレス表、3a及び3bはプログラムロ
ーダ、4aは主記憶装置、5はアドレス参照履歴採取機
構、6はアドレス参照履歴を記憶するアドレス参照履歴
記憶である。8はアドレス参照パラメータを記憶するア
ドレス参照パラメータ記憶、9は再配置アドレス決定プ
ログラム、10はアドレス再配置表である。210はセ
ットアソシァティブメモリ構成パラメータを記憶するア
ソシァティブメモリ構成パラメータ記憶である。
【0011】図2は、本発明に係るアドレス参照パラメ
ータ抽出プログラム7におけるブロックスタックの構成
の一例を示す図である。図において、11はブロックス
タック、12,13,14はブロックスタック上に積ま
れたアソシァティブメモリでの書き換えの単位としての
ブロックである。図3は、本発明に係るアドレス参照パ
ラメータ抽出プログラム7におけるスタックのpush
動作を示す図である。図において、15で示されるbは
push動作によってブロックスタックに新たに積まれ
るブロックである。図4は、本発明に係るアドレス参照
パラメータ抽出プログラム7におけるスタックのrem
ove動作を示す図であり、図において16,17,1
8はブロックスタック上に積まれたブロックであり、1
9で示されるbd はブロックスタック上に積まれたブロ
ックであって、remove動作によって取り除かれる
ものである。
【0012】図5は、本発明に係るアドレス参照パラメ
ータの一例を示す図であり、図において、20,21,
22,23はブロックである。24,25,26,2
7,28,29はブロック相関値である。30はブロッ
ク相関値行列である。ブロック相関値は、アソシァティ
ブメモリの書き換え区分であるセットに対し、同一セッ
ト毎にアドレス参照パラメータ表を作り、同一セットで
の割り付けたブロック間のヒットミス回数の期待値を示
す。図6は、本発明に係るアドレス参照パラメータ抽出
プログラム7で用いる参照相関値関数の一例を示す図で
ある。図において、31は後に説明する参照距離、32
は参照相関値、33a,33b,33cは参照相関値関
数である。図7は、本発明に係る上記図5のブロック相
関値を求めるためのアドレス参照パラメータ抽出プログ
ラム7の動作の例を示す図である。図において、34〜
41はアドレス参照パラメータ抽出プログラムの動作ス
テップである。ステップ38において、図6に示すre
l(d,w,s)の式を用いる。
【0013】図8は、本発明に係るアドレス再配置プロ
グラム9が使用する対象プログラムの再配置可能単位で
あるセグメントと、その細分化された書き換え単位とし
てのブロックの集合であるブロック集合の構成を示す図
である。図において、50はセグメント、51,52,
53,59はブロック集合、61,62,63,69,
71,72,73,79,81,82,83,89はブ
ロックである。図9は、アドレス再配置プログラム9に
おけるadd操作の一例を示す図であり、図において、
100はadd操作によって生成されたセグメント、1
01はブロックである。図10は、アドレス再配置プロ
グラム9におけるshift操作の一例を示す図であ
り、図において、102はshift操作によって生成
されたセグメントである。図11は、アドレス再配置プ
ログラム9におけるmerge操作の一例を示す図であ
り、図において、50a,50bはセグメント、103
はmerge操作によって生成されたセグメントであ
る。図12は、アドレス再配置プログラム9のセグメン
ト集合の一例を示す図であり、図において、50a,5
0b,50cはセグメント、104はセグメント集合で
ある。
【0014】図13は、本発明に係るオブジェクトプロ
グラム1が主記憶装置の設定アドレスにロードされる位
置関係の一例を示す図である。図において、1はオブジ
ェクトプログラム、4は主記憶装置、105a,105
b,105cはオブジェクトプログラムに含まれる再配
置可能モジュールのセグメントである。
【0015】図14は、本発明に係るアドレス再配置プ
ログラム9の動作の大きな流れを示す図である。図にお
いて、111は初期化手続き、112はブロッククラス
タリング手続き、113はアドレス割り付け手続きであ
る。図15は、アドレス再配置プログラム9の初期化手
続きの動作の一例を示す図であり、図において、121
〜143は初期化手続き111の動作ステップである。
図16は、アドレス再配置プログラム9のブロッククラ
スタリング手続きの動作の一例を示す図であり、図にお
いて、151〜171はブロッククラスタリング手続き
112の動作ステップである。図17は、本発明に係る
アドレス再配置プログラム9のアドレス割り付け手続き
の動作の一例を示す図であり、図において、181〜1
87はアドレス割り付け手続き113の動作ステップで
ある。
【0016】次に、大略の動作について説明する。対象
となるオブジェクトプログラム1は、1回目の実行にお
いて、初期アドレス配置表2に従ってプログラムローダ
3aによって、主記憶装置4aにロードされ実行され
る。主記憶装置4aを使って実行されたオブジェクトプ
ログラムが参照したアドレスは、アドレス参照履歴採取
機構5によって記録され、時系列的に参照されたアドレ
ス履歴を記録したアドレス参照履歴6が先ず得られる。
アドレス参照パラメータ抽出プログラム7は、アドレス
参照履歴6からアドレス参照パラメータ8を生成し、ア
ドレス再配置プログラム9は、アドレス参照パラメータ
8と初期アドレス表2及びセットアソシァティブメモリ
構成パラメータ210からアドレス再配置表10を生成
する。
【0017】2回目の実行においては、プログラムロー
ダ3bは、アドレス再配置表10に基づいてオブジェク
トプログラム1を、主記憶装置4aにロードし実行す
る。
【0018】次に、各部の詳細な動作について説明す
る。アドレス参照パラメータ抽出プログラム7の動作
は、以下の通りになる。なお、図4でブロックスタック
11は、ブロック12,13,14等から成るスタック
構造となっており、該当ブロックのブロックスタックの
先頭からの深さを距離と呼ぶ。例えば、ブロック12の
距離は0、ブロック13の距離は1、ブロック14の距
離は2となる。図3に示すブロックスタック11に対す
るブロック15のpush操作によって、ブロック15
はブロックスタック11の先頭におかれ、ブロック1
2,13,14等はスタックの先頭からの距離を1ずつ
増す。図4に示すブロックスタック11におけるブロッ
ク19のremove操作によって、ブロック19はス
タックから取り除かれ、ブロック19が取り除かれる以
前にブロック19より大きい距離を持っていたブロック
17、ブロック18等の距離は1ずつ減少する。
【0019】アドレス参照パラメータは、例えば、同一
セットに対して図5に示すブロック相関値行列30の形
式をとる。ブロック相関値行列30は、対応するブロッ
クの組間のヒットミス回数の期待値である相関値を、パ
ラメータとして保持する下三角行列である。参照相関値
関数は、例えば、図6に示す2項確率分布の形式をと
り、セットアソシァティブメモリ構成パラメータ210
に保持されているセットアソシァティブメモリのセット
数、アソシァティブメモリ中で同時に参照できる領域の
数を表す連想度、ブロックサイズ(ラインサイズ)によ
って、33a,33b,33c等のような値をとる。
【0020】アドレス参照パラメータ抽出プログラム7
は、アドレス参照履歴6を入力とし、図7に示すアルゴ
リズムに従って、セットアソシァティブメモリの各ブロ
ックに対応する相関値Rの行列である相関値行列を抽出
する。ステップ34において、スタックは空に初期化さ
れる。ステップ35において、アドレス参照パラメータ
抽出プログラム7は、アドレス参照履歴6に含まれる参
照ブロックを参照された順序に従って、1ブロックずつ
順次読み出し、bにそのブロックを格納する。ステップ
36において、stackの中からブロックbを探し、
見つかった場合にはステップ37を実行し、見つからな
かった場合にはステップ40に進む。ステップ37で
は、スタック内のb(b0 〜)の参照したブロック間の
距離である参照距離dを調べ、d>Wの時、ステップ3
8に進んでブロック相関値行列30のエントリR[b,
stack[b]]に対して、ブロック相関値関数33
を加えステップ39に進み、d≦Wの時は、ステップ3
8を実行せずにステップ39に進む。ステップ39で
は、スタック中のブロックstack[d]に対してr
emove操作を行う。ステップ40では、スタックに
対してブロックbのpush操作を行う。ステップ41
では、アドレス履歴に処理されていないブロックが残っ
ているかどうかを調べ、残っている場合はステップ35
へ進み、残っていない場合は終了する。こうして、図5
の参照パラメータが得られる。
【0021】次に、アドレス再配置プログラム9の動作
は、以下の通りとなる。なお、図8でセグメント50
は、ブロック集合51,52,53,59等の集合であ
る。ブロック集合51は、ブロック61,71,81等
の集合であり、ブロック集合52は、ブロック62,7
2,82等の集合であり、ブロック集合53は、ブロッ
ク63,73,83等の集合であり、ブロック集合59
は、ブロック69,79,89等の集合であり、各々リ
スト構造によって実現される。図9に示すセグメント5
0のn番目のブロック集合に対するブロック101のa
dd操作によって、ブロック101はブロック集合53
の終端に追加され、セグメント100が構成される。ま
た、図10に示すセグメント50のシフト値sftに関
するshift操作によって、それぞれ図10の61〜
69の位置にシフトする。sft(0≦sft<S)番
目のノードは、shift操作以前に0番目のノードの
指していたブロック集合を指し、同様に、sft+1番
目のノードは、shift操作以前に1番目のノードの
指していたブロック集合を、sft+2番目のノード
は、shift操作以前に2番目のノードの指していた
ブロック集合を指す。一般に、sft+n(−sft≦
n<S−sft)番目のノードは、sfit操作以前に
(n mod S)番目のノードの指していたブロック
集合を指す。また、図11に示すセグメント50aとセ
グメント50bのmerge操作により、セグメント5
0bに含まれる各ブロック集合はマージされて、セグメ
ント50aの対応するブロック集合を示すリスト構造の
末端に追加され、セグメント103を構成する。図12
でセグメント集合104は、セグメント50a,50
b,50c等から成るセグメントの集合である。
【0022】オブジェクトプログラム1は、再配置可能
モジュールであるセグメント105a,105b,10
5c等から成る。オブジェクトプログラム1は、主記憶
装置4の適当なアドレス、例えば、図13に示す105
a,105b,105cの位置にロードし、実行するこ
とができる。
【0023】アドレス再配置プログラム9は、初期化手
続き111、ブロッククラスタリング手続き112、ア
ドレス割り付け手続き113を順に実行することによ
り、すべてのセグメントの組み合わせに対して、mer
ge操作によって利得の最大となるセグメントの組み合
わせを選択する。
【0024】まず、手続き1の初期化手続き111で
は、すべての2つのセグメントの組み合わせに対して、
それらを最適なshift値を使ってmergeした場
合の利得の期待値を求める。即ち、ある2つのセグメン
トの間の相対アドレス関係を、ある最適な値に固定化し
た場合の総ミス回数の減少分の期待値を求める。これ
は、各構成ブロックに細分して、ブロック間の期待値を
積算することで得られる。初期化手続き111の動作を
説明する。図15において、最初にステップ121〜1
29で、すべての再配置可能モジュールに対して、それ
に対応するセグメントを生成し、それらの集合であるセ
グメント集合SEGを生成する。即ち、ステップ121
において、セグメント集合SEGを空に初期化し、ステ
ップ122〜129において、個々の再配置可能モジュ
ールに対してステップ122〜129を実行し、対応す
るセグメントを生成する。ステップ124〜ステップ1
26では、再配置可能モジュールに含まれるすべてのブ
ロックに対して、そのブロックに対応するセット番号に
関してそのブロックのadd操作を行う、即ち、各ブロ
ックを該当するセットに割り当てる。ステップ127で
は、各再配置可能モジュールに対して生成されたセグメ
ントをセグメント集合SEGに加える。
【0025】次いで、生成されたセグメント集合SEG
に含まれるすべてのセグメントの組み合わせについて、
ステップ132〜ステップ141において利得を計算す
る。ステップ132〜ステップ141では、すべての可
能なシフト値、即ち、再配置可能モジュールの相対アド
レス関係に対して、第2のセグメントに対してshif
t操作を行って生成されるセグメントと、第1のセグメ
ントの間の相関値を計算する。この相関値の最小となる
シフト値を最適シフト値として選択し、該シフト値にお
けるセグメント間の相関値r_minを求める。この相
関値は最適シフト値、即ち注目する2つのセグメントに
対応する再配置可能モジュールを最適な相対アドレス配
置においた場合のミス回数の期待値に相当する。一方、
このセグメントの組み合わせに対するすべてのシフト値
に対するセグメント間の相関値の平均値r_total
/Sを求める。最適シフト値における相関値r_min
と相関値の平均値r_total/Sの差をそのセグメ
ントの組み合わせに対する利得gainとする。ただ
し、セグメント間の相関値とは、セグメント間のヒット
ミスの期待値であり、対応するブロック集合に含まれる
すべてのブロックの組に対するブロックの相関値の総和
である。
【0026】次いで、手続き2のブロッククラスタリン
グにおいては、すべてのセグメントの組み合わせのう
ち、最適なshift値によってmergeした場合の
利得の期待値が最大になる組みを選択し、それらをme
rgeする。mergeの結果、選択された2つのセグ
メントの間のshift値、即ち、相対アドレス関係
は、固定化されるため、2つのセグメントをあわせて1
つのセグメントとして扱うことができる。即ち、1回の
merge操作の結果、セグメントの総数が1だけ減
る。ブロッククラスタリングにおいては、この操作をセ
グメントの総数が1になるまで、即ち、当初存在したす
べてのセグメントの間のshift値、即ち、相対アド
レス関係が固定化されるまで繰り返す。すべてのセグメ
ントに対する真に最適なシフト値の組み合わせの厳密解
を求めるには、一般に、膨大な計算量が必要になる。し
かし、実用上は、総衝突ミス回数においては、少数のセ
グメントの間の衝突回数が支配的になることが多く、こ
れらの少数のセグメントに注目して配置を決定すれば、
十分精度が高いことが多い。ブロッククラスタリングで
は、ミス回数の削減に影響の大きいセグメントの組みか
ら、順次相対アドレス関係を固定化することにより、計
算の精度をほとんど損ねることなく、厳密解を求めた場
合に比べて大幅に計算量を削減する。
【0027】ブロッククラスタリング112の動作を説
明する。ステップ151〜ステップ170において、m
ergeの対象となるセグメントが選択され、merg
e操作が行われる。ステップ151〜170は、セグメ
ント集合SEGに含まれるセグメントの数が1になるま
で繰り返される。ステップ151〜159では、すべて
のセグメントの組を調べ、利得の最大となるものを選択
する、即ち、アドレス再配置の効果の最も大きい再配置
可能モジュールを選択する。次いで、ステップ160に
おいて、選択されたセグメントのうち、第2のセグメン
トにその組における最適シフト値によってshift操
作を行い、得られたセグメントと第1のセグメントに対
してmerge操作を行う。ただし、セグメントのme
rgeとは、セグメントに含まれるブロック集合の対応
するもの同士にmerge操作を行い、得られたブロッ
ク集合を要素とするセグメントを構成することをいう。
この操作は、2つの再配置可能モジュールの間の相対ア
ドレス配置を最適shift値によって固定することに
より、1つの再配置可能モジュールに併合、再編成する
ことに相当する。ステップ159では、このmerge
操作に用いるシフト値を、第2のセグメントに関するシ
フト値に加え、セット数に関して剰余をとった値を、第
2のセグメントに関するシフト値とする。
【0028】ステップ161〜ステップ171において
は、merge操作によって生成された新しいセグメン
トと、セグメント集合中の他のセグメントに対して、最
適シフト値とセグメント間の利得を再計算する。mer
ge操作されなかったセグメントの組みあわせに対する
利得は変化しないため、再計算の必要はない。ステップ
164〜168において、最適なshift値を再計算
する。ステップ172において、mergeの結果セグ
メント集合に含まれるセグメントの個数が1になる、即
ち、すべての再配置可能モジュールの相対アドレス配置
が固定されたら、ブロッククラスタリング手続きを終え
る。
【0029】アドレス割り付け113の動作を説明す
る。すべての再配置可能モジュールに対してステップ1
83〜ステップ187を行い、再配置可能モジュールの
先頭アドレスが、対応するセグメントの最適シフト値に
ラインサイズを乗じた値に、セットアソシァティブメモ
リの1ウェイあたりの容量の倍数を加えた値となるよう
に配置する。
【0030】実施の形態2.上記実施の形態1の構成に
換えてアドレス履歴を採取する計算機、パラメータ抽出
を行う計算機、プログラム再配置を行う計算機を、それ
ぞれ別個の計算機としてもよい。また、上記実施の形態
1では、アドレス履歴を採取してからその後に、パラメ
ータ抽出及びプログラム再配置を行うとしたが、パラメ
ータ抽出とプログラム再配置は、並行して実行してもよ
い。更に、上記実施の形態1では、単一のオブジェクト
プログラムに対してアドレス再配置を行うとしたが、複
数のオブジェクトプログラムの実行によって得られたア
ドレス参照パラメータを、重みづけしてアドレス参照パ
ラメータを生成し、これによって複数のオブジェクトプ
ログラムの再配置を行ってもよい。
【0031】実施の形態3.上記実施の形態では、単一
のセットアソシァティブメモリに対するアドレス参照パ
ラメータを用いるとしたが、異なる複数のセットアソシ
ァティブメモリ、例えば、命令用キャッシュとデータキ
ャッシュ、又は、一次キャッシュと二次キャッシュの各
メモリに対するアドレス参照パラメータを、重みづけし
て加えて用いてもよい。図18は、実施の形態3におけ
る複数のセットアソシァティブメモリに対するアドレス
参照パラメータの重みづけ加算の例を説明する図であ
る。図において、6はアドレス参照履歴、7はアドレス
参照パラメータ抽出プログラムである。この例では、対
象計算機システムは、3種類のセットアソシァティブメ
モリを備えており、それぞれのセットアソシァティブメ
モリに対応する構成パラメータが、210a,210
b,210cであり、8a,8b,8cは、それぞれ2
10a,210b,210cに対応してアドレス参照パ
ラメータ抽出プログラム7によって生成されたアドレス
参照パラメータである。211はアドレス参照パラメー
タ重みづけ加算プログラム、8dは211によって生成
されたアドレス参照パラメータである。
【0032】次に、動作について説明する。下三角行列
で構成されるアドレス参照パラメータの8a,8b,8
cの各要素を、それぞれRa[bi,bj],Rb[b
i,bj],Rc[bi,bj]と表記し、各セットア
ソシァティブメモリのミスペナルティサイクル数を、そ
れぞれWa,Wb,Wcとする。アドレス参照パラメー
タ8a,8b,8cは、それぞれ実施の形態1と同様の
手段で、アドレス参照パラメータ抽出プログラムによっ
て生成される。アドレス参照パラメータ重みづけ加算プ
ログラム211は、 R[bi,bj]=Ra[bi,bj]・Wa+Rb
[bi,bj]・Wb+Rc[bi,bj]・Wc を各要素とする下三角行列で構成されるアドレス参照パ
ラメータ8dを生成する。アドレス参照パラメータ8d
は、実施の形態1と同様に、アドレス再配置プログラム
9の入力となり、以下、実施の形態1と同様に動作す
る。
【0033】実施の形態4.上記実施の形態1では、2
項確率分布に基づくアドレス参照パラメータ抽出プログ
ラム7を用いるとしたが、2項確率分布の近似式によっ
て計算を行っても、また、その結果を記録した換算表又
は簡易表に基づいて計算を行ってもよい。上記実施の形
態1では、クラスタ分析によるアルゴリズムによってメ
モリ・アドレス配置を決定するとしたが、全数探索に基
づくアルゴリズムであってもよい。上記実施の形態1で
は、1回の実行によるアドレス履歴を使用してアドレス
配置を決定するとしたが、複数回の実行結果に対して重
みづけした和を使用してもよい。上記実施の形態1で
は、1個のアドレス配置を選択するとしたが、複数の候
補を選択し、その中から別の方法によって1個を選択し
てもよい。
【0034】実施の形態5.上記実施の形態1では、ア
ドレス参照パラメータをすべて利用するとしたが、参照
頻度などに応じてパラメータの一部の情報だけを利用し
てもよい。例えば、ブロック間の相関値の下三角行列に
よって構成されるアドレス参照パラメータの各要素のう
ち、あるしきい値よりも小さい相関値を持つ要素を0と
見なして近似計算を行ってもよい。こうすることで、計
算が簡単になる。上記実施の形態1では、プログラムの
動的な実行履歴によってアドレス参照履歴を採取すると
したが、フローグラフなどの静的な情報からアドレス参
照履歴を推定して構成してもよい。上記実施の形態1で
は、アドレス参照パラメータは、下三角行列の形で保持
するとしたが、論理的に等価ないかなるデータ構造によ
って実現してもよい。上記実施の形態1では、ブロック
集合は、リスト構造の形で保持するとしたが、論理的に
等価ないかなるデータ構造によって実現してもよい。上
記実施の形態1では、セグメントは、リスト構造の形で
保持するとしたが、論理的に等価ないかなるデータ構造
によって実現してもよい。上記実施の形態1では、セグ
メント集合は、リスト構造の形で保持するとしたが、論
理的に等価ないかなるデータ構造によって実現してもよ
い。上記実施の形態1では、アドレス割り付けの一例を
示したが、これと異なるアルゴリズムであっても、再配
置可能モジュールを適正なアドレス境界に配置すること
ができるどのようなアルゴリズムを用いてもよい。
【0035】
【発明の効果】以上のように、この発明によれば、プロ
グラムの実行アドレス履歴から抽出した情報を利用した
主記憶アドレス割り付けを行うため、本方法に従ってメ
モリ・アドレスを割り付ければ、セットアソシァティブ
メモリの衝突ミスを削減し、プログラムの実行を高速化
できるという効果がある。
【図面の簡単な説明】
【図1】 本発明のプログラムアドレス割り付け方法の
手順の一例を示す図である。
【図2】 本発明のアドレス参照パラメータ抽出プログ
ラムにおけるブロックスタックの構成の一例を示す図で
ある。
【図3】 本発明のアドレス参照パラメータ抽出プログ
ラムでのスタックのpush動作を示す図である。
【図4】 同じくアドレス参照パラメータ抽出プログラ
ムでのスタックのremove動作を示す図である。
【図5】 本発明のアドレス参照パラメータの一例を示
す図である。
【図6】 本発明のアドレス参照パラメータプログラム
で用いる参照相関値関数の一例を示す図である。
【図7】 本発明のアドレス参照パラメータ抽出プログ
ラムの動作の一例を示す図である。
【図8】 本発明のアドレス再配置プログラムが使用す
るセグメント及びブロック集合の構成例を示す図であ
る。
【図9】 本発明のアドレス再配置プログラムにおける
add操作の一例を示す図である。
【図10】 同じくアドレス再配置プログラムにおける
shift操作の一例を示す図である。
【図11】 同じくアドレス再配置プログラムにおける
merge操作の一例を示す図である。
【図12】 同じくアドレス再配置プログラムのセグメ
ント集合の一例を示す図である。
【図13】 本発明のオブジェクトプログラムが主記憶
装置の設定アドレスにロードされる位置関係の一例を示
す図である。
【図14】 本発明のアドレス再配置プログラムの動作
の大きな流れを示す図である。
【図15】 図14のアドレス再配置プログラムの初期
化手続きの動作の一例を示す図である。
【図16】 図14のアドレス再配置プログラムのブロ
ッククラスタリング手続きの動作の一例を示す図であ
る。
【図17】 図14のドレス再配置プログラムのアドレ
ス割り付け手続きの動作の一例を示す図である。
【図18】 実施の形態3での異なるセットアソシァテ
ィブメモリに対するアドレス参照パラメータの重みづけ
加算の例を説明する図である。
【図19】 従来の主記憶アドレス割り付け方法を示す
図である。
【図20】 従来のアドレス再配置機能を持つコンパイ
ラの動作を示す図である。
【図21】 従来の主記憶アドレス割り付け方法が効果
を示す例を示す図である。
【図22】 従来の主記憶アドレス割り付け方法が効果
を示さない例を示す図である。
【符号の説明】
1 オブジェクトプログラム、2 初期アドレス表、3
プログラムローダ、4 主記憶装置、5 アドレス参
照履歴採取機構、6 アドレス参照履歴、7アドレス参
照パラメータ抽出プログラム、8 アドレス参照パラメ
ータ、9 再配置アドレス決定プログラム、10 アド
レス再配置表、11 ブロックスタック、12〜23
ブロック、24〜29 ブロック相関値、30 ブロッ
ク相関値行列、31 参照距離、32 参照相関値、3
3 参照相関値関数、34〜41 アドレス再配置プロ
グラムの動作ステップ、50 セグメント、51〜5
3,59 ブロック集合、61〜63,69,71〜7
3,79,81〜83,89 ブロック、91〜93,
99 ノード、100 セグメント、101 ブロッ
ク、102,103 セグメント、104 セグメント
集合、105 再配置可能モジュール、111 初期化
手続き、112 ブロッククラスタリング手続き、11
3 アドレス割り付け手続き、121〜143 初期化
手続きの動作ステップ、151〜171 ブロッククラ
スタリング手続きの動作ステップ、181〜187 ア
ドレス割り付け手続きの動作ステップ、201 ソース
プログラム、202 コンパイラ、203 プロファイ
ラ、204 プロファイル情報、205 セットアソシ
ァティブメモリのセットあたりの参照回数、206 ア
ドレス参照列の一例、207 アドレス参照列の一例、
210 セットアソシァティブメモリ構成パラメータ、
211 アドレス参照パラメータ重みづけ加算プログラ
ム。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 予めプログラムを実行させて、書き換え
    の単位であるブロック毎に参照された回数を記録し、更
    に後述の相関値を求める際の基準となる参照相関関数を
    設定して、該参照相関関数に基づいて上記記録された参
    照回数からアソシァティブメモリの書き換え可能区分で
    あるセットの同一セットに上記ブロックを割り付けた場
    合のヒットミス回数の期待値をブロック間で相関値とし
    て表したアドレス参照パラメータを得るアドレス参照パ
    ラメータ抽出ステップと、 上記抽出されたアドレス参照パラメータを使用して、プ
    ログラム中の再配置可能単位であるセグメントについて
    その構成ブロックと他のセグメントの構成ブロックとの
    相関値を積算してセグメント間のヒットミスの期待値で
    あるセグメント相関値を求めるアドレス再配置初期化ス
    テップと、 上記得られたセグメント間の相関値の中でヒット率が高
    い組み合わせのセグメントの組を選んで固定してメモリ
    ・アドレスを定めていくアドレス再配置ブロッククラス
    タリング・ステップとを備えたメモリ・アドレス割り付
    け方法。
  2. 【請求項2】 参照相関関数は、セット数と、アソシァ
    ティブメモリ中で同時に参照できる領域の数である連想
    度と、ブロック間の距離である参照距離で定まるように
    したことを特徴とする請求項1記載のメモリ・アドレス
    割り付け方法。
  3. 【請求項3】 参照相関関数は、セット数と、アソシァ
    ティブメモリ中で同時に参照できる領域の数である連想
    度と、ブロック間の距離である参照距離との2項確率分
    布相当で定まるようにしたことを特徴とする請求項2記
    載のメモリ・アドレス割り付け方法。
  4. 【請求項4】 参照相関関数は、ブロック間の距離であ
    る参照距離がある値以上の場合は所定値であるとして参
    照相関関数を求めるようにしたことを特徴とする請求項
    2記載のメモリ・アドレス割り付け方法。
  5. 【請求項5】 予め複数のプログラムを実行させてアド
    レス参照パラメータを得て、必要に応じて重み付け加算
    して複合アドレス参照パラメータを定め、上記定めた複
    合アドレス参照パラメータを用いてセグメント相関値を
    求め、メモリ・アドレスを定めるようにしたことを特徴
    とする請求項1記載のメモリ・アドレス割り付け方法。
  6. 【請求項6】 複数の異なるアソシァティブメモリに対
    してそれぞれ異なる参照相関関数を設定して対応するア
    ドレス参照パラメータを得て、上記各対応するアドレス
    参照パラメータの値を重み付け加算して重み付け加算ア
    ドレス参照パラメータを定め、上記重み付け加算アドレ
    ス参照パラメータを用いてセグメント相関値を求め、メ
    モリ・アドレスを定めるようにしたことを特徴とする請
    求項1記載のメモリ・アドレス割り付け方法。
  7. 【請求項7】 参照回数が一定値より少ないブロックに
    対しては他ブロックとの相関が無いとしてパラメータを
    定めることを特徴とする請求項1記載のメモリ・アドレ
    ス割り付け方法。
JP7218643A 1995-08-28 1995-08-28 メモリ・アドレス割り付け方法 Pending JPH0962574A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7218643A JPH0962574A (ja) 1995-08-28 1995-08-28 メモリ・アドレス割り付け方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7218643A JPH0962574A (ja) 1995-08-28 1995-08-28 メモリ・アドレス割り付け方法

Publications (1)

Publication Number Publication Date
JPH0962574A true JPH0962574A (ja) 1997-03-07

Family

ID=16723171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7218643A Pending JPH0962574A (ja) 1995-08-28 1995-08-28 メモリ・アドレス割り付け方法

Country Status (1)

Country Link
JP (1) JPH0962574A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322315A (ja) * 1999-04-23 2000-11-24 Internatl Business Mach Corp <Ibm> データを管理する方法及び装置
WO2012095901A1 (ja) * 2011-01-12 2012-07-19 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
JP2015075776A (ja) * 2013-10-04 2015-04-20 富士通株式会社 データ管理プログラム、データ管理装置およびデータ管理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322315A (ja) * 1999-04-23 2000-11-24 Internatl Business Mach Corp <Ibm> データを管理する方法及び装置
WO2012095901A1 (ja) * 2011-01-12 2012-07-19 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
JP5702808B2 (ja) * 2011-01-12 2015-04-15 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
US9501423B2 (en) 2011-01-12 2016-11-22 Socionext Inc. Program execution device and compiler system
JP2015075776A (ja) * 2013-10-04 2015-04-20 富士通株式会社 データ管理プログラム、データ管理装置およびデータ管理方法

Similar Documents

Publication Publication Date Title
US6823351B1 (en) Work-stealing queues for parallel garbage collection
US7953773B2 (en) System and method for deterministic garbage collection in a virtual machine environment
US7500077B2 (en) Use of region-oriented memory profiling to detect heap fragmentation and sparse memory utilization
US6826583B1 (en) Local allocation buffers for parallel garbage collection
EP1702269B1 (en) Dynamic performance monitoring-based approach to memory management
US6560619B1 (en) Using atomic compare-and-swap operations for forwarding-pointer installation
US7716448B2 (en) Page oriented memory management
US7930491B1 (en) Memory corruption detection system and method using contingency analysis regulation
US20050033781A1 (en) Method and system for multiprocessor garbage collection
CN106843756A (zh) 基于页面分类的内存页面回收方法及系统
CN1993683A (zh) 体系结构事件期间维持处理器资源
CN1996258A (zh) 一种动态内存池的实现方法
US9280350B2 (en) Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments
US6801990B2 (en) Demand-based memory-block splitting
US6971102B2 (en) Computer system, memory management method, storage medium and program transmission apparatus
US7676511B2 (en) Method and apparatus for reducing object pre-tenuring overhead in a generational garbage collector
US6002875A (en) Method for the reduction of instruction cache miss rate using optimization data from trace data profiles
US6609249B2 (en) Determining maximum number of live registers by recording relevant events of the execution of a computer program
US8335806B2 (en) Marking algorithm for garbage collection using a rescan map
US7308683B2 (en) Ordering of high use program code segments using simulated annealing
US8176286B2 (en) Memory recycling in computer systems
US20080209153A1 (en) Page oriented memory management
JPH0962574A (ja) メモリ・アドレス割り付け方法
US6839822B2 (en) Memory-block coalescing based on run-time demand monitoring
CN105988823A (zh) 终端中应用启动时的内存分配方法及其系统