JP2001202252A - プログラム処理方法および記録媒体 - Google Patents
プログラム処理方法および記録媒体Info
- Publication number
- JP2001202252A JP2001202252A JP2000014517A JP2000014517A JP2001202252A JP 2001202252 A JP2001202252 A JP 2001202252A JP 2000014517 A JP2000014517 A JP 2000014517A JP 2000014517 A JP2000014517 A JP 2000014517A JP 2001202252 A JP2001202252 A JP 2001202252A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- instruction
- attribute
- code
- access
- 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.)
- Granted
Links
Landscapes
- Power Sources (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
機械を想定するステップが存在しておらず、また様々な
構成の目的機械の違いを目的機械モデルで吸収すること
にしているため、目的機械の違いを考慮した最適化を行
うことができないことが課題である。 【解決手段】 本発明のプログラム処理方法は、最適化
情報を用いて最適化する命令スケジューリング処理10
2を備え、命令スケジューリング処理102が実行形式
コードを実行する目的機械の構成情報を抽出するハード
ウェア情報抽出ステップと、ハードウェア情報抽出ステ
ップにより得られたハードウェア情報を用いて命令を目
的機械における実行に好適になるように最適化するステ
ップを備える。これにより、目的機械のハードウェア資
源を最大限に使ったより実行時間の短いアセンブラコー
ドを得ることができるという有利な効果が得られる。
Description
ジェクトコードを生成するコンパイラ、複数のオブジェ
クトコードを連結編集し、実行形式コードを生成するリ
ンカを含むプログラム処理方法、処理装置および記録媒
体に関するものであり、特に、並列プロセッサ向けの最
適化技術に関する。
イラが高級言語で記述されたソースコードを解析し、目
的機械向けに最適化を行い、オブジェクトコードとして
生成し、リンカが複数のオブジェクトコードを連結編集
して実行形式コードを生成していた。
機械の具体的構成を想定して記述するのではなく図12
に示す計算機モデルを想定していた。このモデルはプロ
セッサ1つに対し、メモリバスが1つ接続され主記憶と
しての記憶装置が接続されている。このモデルにおける
主記憶やメモリバスは概念上の構成であり、実際の構成
は例えば図13に示す構成をとることもできる。図13
では、プロセッサに3つのメモリバスが接続され、それ
ぞれのメモリバスには記憶装置が接続されているという
構成をとっている。
て、図10に示すC言語で記述されたソースコードの具
体例を用いて簡単に説明する。図10のソースコードの
場合、従来のプログラム処理方法では、図7に示すアセ
ンブリコードを生成する。すなわち、目的機械が図13
のようにメモリアクセス命令(”ld”や”st”命
令)を並列実行可能な場合があっても、図12の目的機
械モデルを想定するのでメモリアクセス命令の並列実行
の可否を判定できない。
ラム処理方法では、具体的目的機械を想定するステップ
が存在しておらず、また様々な構成の目的機械の違いを
目的機械モデルで吸収することにしているため、目的機
械の違いを考慮した最適化を行うことができないことが
課題である。
れぞれ特性の異なるアプリケーションの特性を十分に用
いた最適化ができない。すなわち、従来のプログラム処
理装置では様々なアプリケーションの特性を目的機械モ
デルの構成の範囲内で表せる特性のみを用いて最適化し
ており、実際の目的機械の構成を活用するためのアプリ
ケーション情報を用いた最適化を行うことができないこ
とが課題である。
のであり、ソースコードを記述するユーザがアプリケー
ションの特性と目的機械の構成をプログラム処理におけ
る最適化に用いるステップが備わったプログラム処理方
法を提供することを目的とする。
に請求項1記載のプログラム処理方法は、高級言語で記
述された複数のソースコードからなるプログラムを実行
形式コードに変換する方法であって、前記ソースコード
を中間コード1に変換する変換ステップ1と、最適化情
報を用いて前記中間コード1を中間コード2に最適化す
る最適化ステップと、前記中間コード2を前記実行形式
コードに変換する変換ステップ2とを備える。
は、最適化ステップが実行形式コードを実行する目的機
械の構成情報を抽出するハードウェア情報抽出ステップ
と、ハードウェア情報抽出ステップにより得られたハー
ドウェア情報を用いて中間コード1の命令あるいは命令
列を目的機械における実行に好適になるように命令ある
いは命令列を置き換えあるいは並び替える命令最適化ス
テップを備える。
は、最適化ステップがソースコードからなるプログラム
で実現されるアプリケーションの特性情報を抽出するア
プリケーション情報抽出ステップと、アプリケーション
情報抽出ステップにより得られたアプリケーション情報
を用いて中間コード1の命令あるいは命令列を目的機械
における実行に好適になるように命令あるいは命令列を
置き換えあるいは並び替える命令最適化ステップを備え
る。
は、高級言語で記述された複数のソースコードからなる
プログラムを実行形式コードに変換する方法であって、
ソースコードを中間コード1に変換する変換ステップ1
と、最適化情報を用いて前記中間コード1を中間コード
2に最適化する最適化ステップと、中間コード2を実行
形式コードに変換する変換ステップ2とを備え、最適化
ステップが、実行形式コードを実行する目的機械の並列
アクセス可能なメモリの構成情報を抽出するハードウェ
ア情報抽出ステップと、ソースコードからプログラムで
実現されるアプリケーションのメモリ使用の特性情報を
抽出するアプリケーション情報と、命令間の並列実行可
否を判定におけるメモリ資源競合を判定するときハード
ウェア情報とアプリケーション情報の参照により互いに
並列アクセス可能なメモリへのアクセス命令であると判
明した場合はメモリ資源の競合がないと判定し、そうで
ない場合はメモリ資源の競合があると判定するメモリ資
源競合判定ステップを備える。
は、変換ステップ2により得られた実行形式コードが目
的機械の構成である複数のメモリのうち少なくとも一つ
が使用されていないことを検出するメモリ未使用検出ス
テップと、前記実行形式コードの実行時に未使用である
と検出された目的機械のメモリを低消費電力状態に設定
するステップを備える。
て、図1から図13を参照しながら説明する。
ラム処理方法の処理の流れとファイルの入出力関係を示
すフローチャートである。
式で保存されている高級言語ソースコード200を読み
込み、構文解析および意味解析などを行って内部形式コ
ードを生成する。さらに必要に応じて、最終的に生成さ
れる実行形式コードの実行時間やコードサイズが短くな
るように内部形式コードを最適化する。なお、ソースコ
ード200に後述する本発明特有のアプリケーション情
報が含まれる場合は読み飛ばされる。
パイラ上流処理100で生成、最適化された内部形式コ
ードからアセンブラコードを生成する。
ラコード生成処理101は、本発明の主眼ではなく、ま
た、前記したアプリケーション情報を読み飛ばすことを
除いて、従来のプログラム処理方法と同一であるので、
詳細は省略する。
ンブラコード生成処理101で生成されたアセンブラコ
ードに対し命令間の依存関係の解析、資源競合の解析に
基づき命令スケジューリング(命令順の並び替え)を行う
ことで、アセンブラコードを目的機械向けに並列化す
る。
アプリケーション情報をアプリケーション情報ファイル
201から読み取る。アプリケーション情報ファイル2
01はソースコードあるいはソースコードとは異なるフ
ァイルのどちらの形式でも良い。本実施の形態では、ソ
ースコードにアプリケーション情報が記述されているも
のとする。図4にアプリケーション情報が含まれたソー
スコードの例を示す。
ン情報が含まれる。1行目の”m0::int G0
[2];”は2要素の整数配列G0を論理メモリm0に
割り当てることを示している。2行目も同様に配列G1
を論理メモリ間m1に割り当てることを示している。論
理メモリについては後述する。
はハードウェア情報をハードウェア情報ファイル202
から読み取る。ハードウェア情報ファイル202はソー
スコードあるいはソースコードとは異なるファイルのど
ちらの形式でもよい。本実施の形態では、ソースコード
とは異なるファイルにハードウェア情報が記述されてい
るものとする。図8にハードウェア情報ファイル202
の内容を示す。
すフォーマットで、目的機械ごとに用意される。本実施
の形態の図8のハードウェア情報は図13に示した目的
機械に対応したものである。以下、ハードウェア情報内
の各要素について説明する。
を示す名称であり、図4に示すように、ソースコードに
おける静的変数(メモリへの割当が決まる変数)に付与さ
れる。なお、論理メモリstackは、自動変数アクセ
スなどのスタック操作の場合に自動的に付与され、論理
メモリmainは上記以外のメモリアクセスの場合に自
動的に付与される。
メモリを示しており、異なる名称はそれぞれ互いに並列
にアクセス可能であることを示している。本実施の形態
では図10に示すようにプロセッサはXメモリ(主記
憶)、Yメモリ、Zメモリの3つのメモリが接続されて
いる。これらのメモリは並列アクセスが可能なメモリで
あり、アクセスするための命令はそれぞれ異なるものと
する。なお、本実施の形態では命令によりどのメモリを
アクセスするかを命令で選択しているが、アドレスや並
列実行する際の命令位置により選択しても良い。
ュを搭載する。周辺機器のレジスタはXメモリにマッピ
ングされている。YメモリはROMで実装されており書
き込むことはできない。ZメモリはRAMで実装されて
いるが容量が小さいものとする。それぞれのメモリは独
立したアドレス空間を有するとしているが、他の方法と
して、一つのアドレス空間の一部をそれぞれのメモリに
割り当てても良い。
てられた変数が利用可能なアドレスの範囲を示してお
り、物理メモリで利用できるアドレス範囲を越えること
はない。アドレス範囲属性は、変数割り当て時のサイズ
チェックを行いコンパイル時にソースコードの誤りを検
出するのに用いる。
ス可能な単位を示しており、物理メモリのアクセス可能
なアクセス単位より小さくなることはない。一般に、あ
る単位のアクセスに限定したメモリは、複数のアクセス
単位をサポートするメモリより高速にアクセスできるか
あるいは低コストで実現できる。このようなアクセス単
位の限定されたメモリをサポートする目的機械向けに最
適化する場合に指定することができる。具体的には、変
数割り当て時のアラインやメモリアクセス命令のサイズ
指定に用いる。
てられた変数が物理メモリをアクセスするときのアクセ
ス方法を示しており、cache,uncache,s
treamがある。物理メモリのサポートするアクセス
方法以外を指定することはできない。cacheはキャ
ッシュが利用可能な場合はキャッシュに格納することを
命令中に指定し、uncacheはキャッシュが利用可
能であってもキャッシュに格納することはないように命
令中に指定する。streamはシーケンシャルなアク
セスを行う場合に効率が良くなるようにプリフェッチな
どを行うように命令中に指定する。
てられた変数がリードおよびライト可能(rw)、リー
ドのみ可能(ro)、ライトのみ可能(wo)であるか
を指定する。物理メモリがROMの場合roを指定する
ことで、ROM領域への書き込みをするソースコードの
誤りをコンパイル時に検出するのに用いる。
ついて図2、図3を参照しながら説明する。説明の簡単
化のために命令スケジューリングは基本ブロックを処理
単位とする。したがって、命令シーケンスは1パスのみ
存在する。図2は命令スケジューリング処理102の詳
細なフローチャートである。図2の各ステップについて
説明する。
その時点での先頭の命令を選択し空の状態にある命令群
Aに加えることで最初の要素とする。以降のステップ
で、命令群Aに含まれる各命令と並列実行可能な命令を
残りの未処理命令から検索し命令群Aに加える処理を行
う。
令を並列実行可能なスーパスカラ構成のプロセッサシス
テムを想定しており、3命令のうち最大2つのメモリア
クセス命令を並列に実行可能であるとする。その際メモ
リアクセス命令はそれぞれ異なる物理メモリでなければ
ならないという制約がある。
令群Aの各命令と並列実行するために、命令実行順を変
更可能な命令を複数選択し、候補とする。ステップ11
2は候補の中から先頭の命令を選択し命令Bとする。
Bの並列実行可否を判定する処理である。図3に並列実
行可否判定処理の詳細なフローチャートを示す。以降、
図3を参照しながら説明する。
Bの間のデータ依存関係の有無を判定する。データ依存
関係とはある結果を定義する命令とその結果を参照する
命令間の関係であり、この関係にある命令は互いに並列
実行できない。データ依存関係にあると判定された場合
は、並列実行不可として並列実行可否判定処理を終了す
る。
Bの間に目的機械の演算器資源に競合があるかを判定す
る。演算器資源に競合があると判定された場合は、並列
実行不可として並列実行可否判定処理を終了する。
令Bの間に目的機械の物理メモリに競合があるかを判定
する。命令群Aの各命令あるいは命令Bがメモリアクセ
ス命令の場合、その命令が生成された要因により処理が
異なる。
スにより生成された場合は、静的変数に付与された論理
メモリ(変数に付与したm0、m1、ioなど)を図4
に示したソースコードに含まれるアプリケーション情報
から読み取り、論理メモリに対応する物理メモリを図8
に示したハードウェア情報から読み取る。
退避、復帰から生成された場合は、論理メモリをsta
ckとし、対応する物理メモリを図8に示したハードウ
ェア情報から読み取る。上記に属さないケースにより生
成された場合は、論理メモリをmainとし、対応する
物理メモリを図8に示したハードウェア情報から読み取
る。
リを命令Bが使用する場合は、並列実行不可として並列
実行可否判定処理を終了する。
ップ131で演算器資源競合がなく、ステップ132で
物理メモリの競合がないと判定された場合は並列実行可
として並列実行可否判定処理を終了する。
列実行不可の場合はステップ114へ、並列実行可の場
合はステップ115へそれぞれ進む。ステップ114は
命令Bが命令群Aの各命令と並列実行できないと判定さ
れたため、命令Bを候補から外す。そして、ステップ1
17に進む。
令Bが並列実行可能と判定されたので命令Bを命令群A
に加え、候補から外す。
令数が目的機械が並列実行できる最大の命令数に到達し
たことを判定し、到達した場合は、命令群Aと並列実行
可能な命令の検索を終了するためステップ118に進
む。命令群Aの命令数が最大命令数に到達していなけれ
ばステップ117に進む。
判定する。存在する場合はステップ112に戻り次の候
補の並列実行可否判定を行う。候補が存在しない場合は
ステップ118に進む。
を処理済とし、命令スケジューリング処理後のアセンブ
ラコードを生成する。なお、その際メモリアクセス命令
については、使用する物理メモリをアクセスする命令に
置き換える。同時に前記したアクセス方法属性すなわ
ち、cache、uncache、streamを命令
中に指定する。
定できる場合は前記したアドレス範囲属性を超えていな
いことを確認し、超えている場合はエラー処理を行う。
さらに、メモリアクセス命令のアクセス単位が前記した
物理メモリのアクセス単位属性より小さかったり、2の
べき乗倍になっていない場合は、物理メモリのサポート
しないアクセスサイズなのでエラー処理を行う。前記リ
ードライト属性についてもメモリアクセス命令のアクセ
ス方向についてのエラー検出を行う。すなわち、物理メ
モリのリードライト属性が”ro”の物理メモリを使用
する命令がストア命令であったり、”wo”の物理メモ
リを使用する命令がロード命令である場合にエラー処理
を行う。
場合、ステップ110に戻り新たな命令群Aについて並
列実行可能な命令の検索を行う。未処理命令が存在しな
い場合は命令スケジューリング処理を終了する。
理103は、命令スケジューリング処理102で生成し
たアセンブラコードをオブジェクトコードに変換し、オ
ブジェクトコードファイル203として出力する。連結
編集処理104は、複数のオブジェクトコードファイル
203を読み込み編集連結を行って実行形式コードファ
イル204を生成する。オブジェクトコード生成処理1
03および連結編集処理104は本発明の主眼でなく、
また、従来のプログラム処理方法と同一であるので詳細
は省略する。
処理方法の特徴的な構成要素の動作について具体的なプ
ログラムを用いて説明する。図4は、本発明用に記述さ
れたソースコードであり、従来のC言語の仕様にアプリ
ケーション情報を追加した形になっている。
0::”、”m1::”がアプリケーション情報であ
り、整数配列G0,G1の論理メモリへの割り当てを表
している。アプリケーション情報はプログラマがアプリ
ケーションの特性を考慮して記述する。この場合、G0
とG1は異なる論理メモリに割り当てており、プログラ
マはG0とG1のアクセスを並列に行うことのできるア
プリケーションの特性を利用して、そのように動作する
ことを期待している。
リへの割り当てされた例を示しているが、整数以外の型
であっても同様であることは言うまでもない。また、配
列でない通常変数やポインタであっても同様である。た
だし、ポインタの場合、ある論理メモリに割り当てられ
たポインタに他の論理メモリに割り当てられた変数のア
ドレスを代入すると論理メモリの参照先を間違えるの
で、エラーとすべきである。
り、グローバル整数配列G0のインデックス0の値と引
数aの値を乗算し、グローバル整数配列G1のインデッ
クス0に格納し、グローバル整数配列G0のインデック
ス1の値と引数bの値を乗算し、グローバル整数配列G
1のインデックス1に格納するものである。図4のソー
スコードはソースコード200にファイルとして格納さ
れている。
4のソースコードをコンパイラ上流処理100およびア
センブラコード生成処理101の処理を終えた後のアセ
ンブラコードである。以下簡単に説明する。
ルである。
r0に格納する。
r1に格納する。
データをアドレスとしてメモリに格納されているデータ
を読み出しレジスタr2に格納する(G0[0]の
値)。
ット8を加えたデータをアドレスとしてメモリから読み
出しレジスタr3に格納する。図9にスタックフレーム
の構成図を示す。図9において関数funcの処理中は
spは図の位置を示しており、引数a,bはそれぞれオ
フセット4、8の位置に格納されている。したがって、
5行目は引数aの値をレジスタr3に格納していること
になる。
値を乗算しレジスタr4に格納する。
データをアドレスとして、レジスタr4に格納されてい
るデータをメモリに格納する(G1[0]に格納)。
データにオフセット4を加えた値をアドレスとしてメモ
リに格納されているデータを読み出しレジスタr2に格
納する(G0[1]の値)。
ット4を加えたデータをアドレスとしてメモリから読み
出しレジスタr3に格納する(引数bの値)。
の値を乗算しレジスタr4に格納する。
るデータにオフセット4を加えたデータをアドレスとし
て、レジスタr4に格納されているデータをメモリに格
納する(G1[1]に格納)。
ログラムに復帰する。
リング処理102で最適化(並列化)され、図6のアセ
ンブラコードとなる。命令スケジューリング処理102
は図4のソースコードに含まれるアプリケーション情報
と図8のハードウェア情報を読み取り以下の最適化に用
いる。
プ110ではまず”2:mov G0,r0”が空の状
態の命令群Aに加えられる。ここで、”2:”とは図5
の行番号を示している。以下も同様の表記をする。
1,r1”、”5:ld (8,sp),r3”が候補
として登録される。ステップ112では、まず”3:m
ov G1,r1”が命令Bとされ、ステップ113で
並列実行可否判定処理が行われる。”2:mov G
0,r0”と”3:mov G1,r1”はデータ依存
関係、演算器資源競合、物理メモリ資源競合はないので
並列実行可と判定される。ステップ115で”3:mo
v G1,r1”が命令群Aに加えられ候補から外され
る。ステップ116では目的機械の最大並列実行数の3
に到達しておらず、ステップ117では候補がまだ存在
するのでステップ112に戻る。”5:ld (8,s
p),r3”も同様に並列実行可能と判定され命令群A
に加えられる。
ステップ118で命令群Aに含まれる命令をすべて処理
済とし、図6の2行目のアセンブラコードを生成する。
このとき”5:ld (8,sp),r3”はメモリア
クセス命令であるので命令の置き換えがなされる。すな
わち、当該命令の生成要因は自動変数アクセスであるの
で論理メモリとしてstackが割り当てられているこ
とがわかる。論理メモリstackは図8のハードウェ
ア情報によると物理メモリとしてXメモリを使用するの
で、Xメモリをアクセスするための命令を生成する。同
時に論理メモリstackにはアクセス方法属性として
cacheが指定されているのでキャッシュをアクセス
するための属性を命令に付与する。すなわち、”ld
c,X(8,sp),r3”が生成される。
ることができないためアドレス範囲のエラー検出は行わ
れない。
る。論理メモリstackは1バイト単位のアクセスが
可能であることが図8のハードウェア情報からわかり、
4バイトは1バイトの2のべき乗倍であるのでエラーと
はならない。
w”(リードライト可能)であるので同様にエラーとな
らない。
するので、ステップ110に戻る。
0),r2”が空の状態の命令群Aに加えられる。ステ
ップ111では、候補を得るが、この場合候補がないの
でステップ118に進み、”4:ld (r0),r
2”を処理済とし、図6の3行目のアセンブラコードを
生成する。この場合、並列実行可能な命令は存在しな
い。このとき”4:ld (r0),r2”はメモリア
クセス命令であるので命令の置き換えがなされる。すな
わち、当該命令の生成要因は静的変数G0のアクセスで
あり、図4のアプリケーション情報からG0は論理メモ
リm0に割り当てられていることがわかる。論理メモリ
m0は図8のハードウェア情報によると物理メモリとし
てYメモリを使用するので、Yメモリをアクセスするた
めの命令を生成する。同時に論理メモリm0にはアクセ
ス方法属性としてstreamが指定されているのでス
トリームをアクセスするための属性を命令に付与する。
すなわち、”ld s,Y(r0),r2”が生成され
る。
あるレジスタr0の内容はプログラムの流れからアドレ
スG0であることがわかる。図8において論理メモリY
のアドレス範囲属性は0x000〜0xFFF(0xは
16進数を表す接頭辞)であり、アドレスG0はこの範
囲に置かれるのでエラーとならない。
る。論理メモリm0は4バイト単位のアクセスが可能で
あることが図8のハードウェア情報からわかり、サイズ
は同じなのでエラーとはならない。
(リードオンリ)であるので同様にエラーとならない。
するので、ステップ110に戻る。
2,r3,r4”を空の状態の命令群Aに加える。ステ
ップ111で”8:ld (4,r0),r2”、”
9:ld(4,sp),r3”を候補とする。ステップ
112で”8:ld (4,r0),r2”が命令Bと
され、ステップ113で並列実行可否判定処理が行われ
る。”6:mul r2,r3,r4”と”8:ld
(4,r0),r2”はデータ依存関係、演算器資源競
合、物理メモリ資源競合は存在しないので並列実行可能
と判定される。ステップ115で”8:ld (4,r
0),r2”が命令群Aに加えられ候補から外される。
ステップ116では目的機械の最大並列実行数の3に到
達しておらず、ステップ117では候補がまだ存在する
のでステップ112に戻る。
(4,sp),r3”が命令Bとされ、ステップ113
で並列実行可否判定処理が行われる。”6:mul r
2,r3,r4”と”9:ld (4,sp),r3”
データ依存関係、演算器資源競合、物理メモリ資源競合
は存在しない。次に”8:ld (4,r0),r2”
と”9:ld (4,sp),r3”ではデータ依存関
係、演算器資源競合は存在しないが、物理メモリの競合
の可能性がある。
のソースコードにおける整数配列G0のインデックス1
のデータを読み出す命令である。配列G0は論理メモリ
m0に割り当てられていることが図4のアプリケーショ
ン情報から知ることができる。図8のハードウェア情報
を参照すると論理メモリm0は物理メモリYと対応付け
がなされている。一方、”9:ld (4,sp),r
3”はスタックフレームアクセス命令であり、自動的に
論理メモリstackに割り当てられ、論理メモリst
ackは物理メモリXへ対応付けられている。したがっ
て、それぞれ使用する物理メモリが異なるので、物理メ
モリの競合を起しておらず並列実行可能であると判定さ
れる。
が同時にアクセス可能なメモリを使用していることを判
定する手段がないため、メモリ資源の競合を起している
と判定され、並列実行可能とされない。
p),r3”が命令群Aに加えられ候補から外される。
ステップ116では目的機械の最大並列実行数の3に到
達したのでステップ118に進み、命令群Aに含まれる
命令を処理済とし、図6の4行目のコードを生成する。
このとき”8:ld (4,r0),r2”、”9:l
d (4,sp),r3”はメモリアクセス命令である
ので命令の置き換えがなされる。
の生成要因は静的変数G0のアクセスであり、図4のア
プリケーション情報からG0は論理メモリm0に割り当
てられていることがわかる。論理メモリm0は図8のハ
ードウェア情報によると物理メモリとしてYメモリを使
用するので、Yメモリをアクセスするための命令を生成
する。同時に論理メモリm0にはアクセス方法属性とし
てstreamが指定されているのでストリームをアク
セスするための属性を命令に付与する。すなわち、”l
d s,Y(4,r0),r2”が生成される。
あるレジスタr0の内容はプログラムの流れからアドレ
スG0+4であることがわかる。図8において論理メモ
リYのアドレス範囲属性は0x000〜0xFFF(0
xは16進数を表す接頭辞)であり、アドレスG0はこ
の範囲に置かれるのでエラーとならない。
る。論理メモリm0は4バイト単位のアクセスが可能で
あることが図8のハードウェア情報からわかり、サイズ
は同じなのでエラーとはならない。
(リードオンリ)であるので同様にエラーとならない。
の生成要因は自動変数アクセスであるので論理メモリと
してstackが割り当てられていることがわかる。論
理メモリstackは図8のハードウェア情報によると
物理メモリとしてXメモリを使用するので、Xメモリを
アクセスするための命令を生成する。同時に論理メモリ
stackにはアクセス方法属性としてcacheが指
定されているのでキャッシュをアクセスするための属性
を命令に付与する。すなわち、”ld c,X(4,s
p),r3”が生成される。
ることができないためアドレス範囲のエラー検出は行わ
れない。
る。論理メモリstackは1バイト単位のアクセスが
可能であることが図8のハードウェア情報からわかり、
4バイトは1バイトの2のべき乗倍であるのでエラーと
はならない。
w”(リードライト可能)であるので同様にエラーとな
らない。
される。
ケジューリング処理した場合のアセンブラコードを示
す。図6のコードは図7のコードに対して3行少ない、
すなわち、より実行時間が短いことを示している。
モリを有し、論理メモリの定義とともにハードウェア情
報として提供され、また、プログラマがアプリケーショ
ンの特性と論理メモリを用いて適切にアプリケーション
情報を提供することで、プログラム処理方法における命
令スケジューリング処理でこれらを用いることで目的機
械のハードウェア資源を最大限に使ったより実行時間の
短いアセンブラコードを得ることができる。
スサイズ、リードライトなどの属性を与えることで、ソ
ースコードのエラーチェックを容易にすることができ、
ソフトウェアの生産性を向上することができる。さら
に、物理メモリにアクセス方法などの属性を与えること
で、ソフトウェアによるより細かいメモリアクセス方法
の指定ができ、目的機械をメモリ機能を最大限に活用し
たプログラミングができる。
Xメモリ、Yメモリ、Zメモリを搭載した目的機械を想
定したが、より多くのメモリを搭載した目的機械におい
ても同様に効果を出すことができる。
ドではXメモリ、Yメモリ、Zメモリの3つのメモリを
使用しているが、それ以上のメモリを使うことはないこ
とがわかる。したがって、4つ以上のメモリを搭載した
目的機械で使用しないメモリは電源供給やクロック供給
を止めることで低消費電力状態にすることで目的機械シ
ステムの低消費電力化にもなる。
的機械が並列実行可能な物理メモリを有し、論理メモリ
の定義とともにハードウェア情報として提供され、ま
た、プログラマがアプリケーションの特性と論理メモリ
を用いて適切にアプリケーション情報を提供すること
で、プログラム処理方法における命令スケジューリング
処理にこれらを用いることで目的機械のハードウェア資
源を最大限に使ったより実行時間の短いアセンブラコー
ドを得ることができるという有利な効果が得られる。
スサイズ、リードライトなどの属性を与えることで、ソ
ースコードのエラーチェックを容易にすることができ、
ソフトウェアの生産性を向上することができ、さらに、
物理メモリにアクセス方法などの属性を与えることで、
ソフトウェアによるより細かいメモリアクセス方法の指
定ができ、目的機械をメモリ機能を最大限に活用したプ
ログラミングができるという有利な効果が得られる。
行形式コードを実行する際、使用しないメモリがあれば
電力供給やクロック供給を停止することで目的機械シス
テムにおける低電力化ができるという有利な効果が得ら
れる。
法の処理の流れとファイルの入出力関係を示すフローチ
ャート
ケジューリング処理102の処理の流れを示すフローチ
ャート
行可否判定処理113の処理の流れを示すフローチャー
ト
ーション情報を含んだC言語ソースコードを示す図
ング処理を行う前のアセンブラコードを示す図
ング処理後のアセンブラコードを示す図
スケジューリング処理後のアセンブラコードを示す図
した説明用のハードウェア情報を示す図
ム構成図
処理方法における説明用のアプリケーション情報を含ま
ないC言語ソースコードを示す図
ォーマットを示す図
械モデルを示す図
す図
Claims (23)
- 【請求項1】 高級言語で記述された複数のソースコー
ドからなるプログラムを実行形式コードに変換する方法
であって、前記ソースコードを中間コード1に変換する
変換ステップ1と、最適化情報を用いて前記中間コード
1を中間コード2に最適化する最適化ステップと、前記
中間コード2を前記実行形式コードに変換する変換ステ
ップ2とを備えることを特徴とするプログラム処理方
法。 - 【請求項2】 前記最適化ステップは、前記実行形式コ
ードを実行する目的機械の構成情報を抽出するハードウ
ェア情報抽出ステップと、前記ハードウェア情報抽出ス
テップにより得られたハードウェア情報を用いて中間コ
ード1の命令あるいは命令列を目的機械における実行に
好適になるように命令あるいは命令列を置き換えあるい
は並び替える命令最適化ステップを備えることを特徴と
する請求項1記載のプログラム処理方法。 - 【請求項3】 前記最適化ステップは、前記ソースコー
ドからなるプログラムで実現されるアプリケーションの
特性情報を抽出するアプリケーション情報抽出ステップ
と、前記アプリケーション情報抽出ステップにより得ら
れたアプリケーション情報を用いて中間コード1の命令
あるいは命令列を目的機械における実行に好適になるよ
うに命令あるいは命令列を置き換えあるいは並び替える
命令最適化ステップを備えることを特徴とする請求項1
記載のプログラム処理方法。 - 【請求項4】 前記ハードウェア情報抽出ステップは前
記ソースコードから抽出するステップを含むことを特徴
とする請求項2記載のプログラム処理方法。 - 【請求項5】 前記ハードウェア情報抽出ステップは前
記ソースコードとは異なるファイルから抽出するステッ
プを含むことを特徴とする請求項2記載のプログラム処
理方法。 - 【請求項6】 前記アプリケーション情報抽出ステップ
は前記ソースコードから抽出するステップを含むことを
特徴とする請求項3記載のプログラム処理方法。 - 【請求項7】 前記アプリケーション情報抽出ステップ
は前記ソースコードとは異なるファイルから抽出するス
テップを含むことを特徴とする請求項3記載のプログラ
ム処理方法。 - 【請求項8】 高級言語で記述された複数のソースコー
ドからなるプログラムを実行形式コードに変換する方法
であって、前記ソースコードを中間コード1に変換する
変換ステップ1と、最適化情報を用いて前記中間コード
1を中間コード2に最適化する最適化ステップと、前記
中間コード2を前記実行形式コードに変換する変換ステ
ップ2とを備え、前記最適化ステップが、前記実行形式
コードを実行する目的機械の並列アクセス可能なメモリ
の構成情報を抽出するハードウェア情報抽出ステップ
と、前記ソースコードからプログラムで実現されるアプ
リケーションのメモリ使用の特性情報を抽出するアプリ
ケーション情報と、命令間の並列実行可否を判定におけ
るメモリ資源競合を判定するとき前記ハードウェア情報
と前記アプリケーション情報の参照により互いに並列ア
クセス可能なメモリへのアクセス命令であると判明した
場合はメモリ資源の競合がないと判定し、そうでない場
合はメモリ資源の競合があると判定するメモリ資源競合
判定ステップを備えたことを特徴とするプログラム処理
方法。 - 【請求項9】 前記ハードウェア情報が、並列アクセス
可能なメモリを識別するメモリ名であり、前記メモリ資
源競合判定ステップが前記メモリ名の一致/不一致で判
定するステップであることを特徴とする請求項8記載の
プログラム処理方法。 - 【請求項10】 前記ハードウェア情報に目的機械の構
成であるメモリの指定可能なアドレス範囲属性を含み、
前記最適化ステップにメモリアクセス命令のアドレスが
前記メモリアクセス命令のアクセスするメモリの前記ア
ドレス範囲属性で示されたアドレス範囲外にあるエラー
を検出するアドレス範囲エラー検出ステップと、前記ア
ドレス範囲エラー検出ステップでメモリアクセス命令の
アドレスが前記アドレス範囲外にある場合はエラー処理
を行うアドレス範囲エラー処理ステップを含むことを特
徴とする請求項8記載のプログラム処理方法。 - 【請求項11】 前記ハードウェア情報に目的機械の構
成であるメモリのアクセス可能なアクセス単位属性を含
み、前記最適化ステップにメモリアクセス命令のアクセ
ス単位が前記メモリアクセス命令のアクセスするメモリ
の前記アクセス単位属性で示されたアクセス単位より小
さいかあるいは2のベキ乗倍でないというエラーを検出
するアクセス単位エラー検出ステップと、前記アクセス
単位エラー検出ステップでエラー検出された場合はエラ
ー処理を行うアクセス単位エラー処理ステップを含むこ
とを特徴とする請求項8記載のプログラム処理方法。 - 【請求項12】 前記ハードウェア情報に目的機械の構
成であるメモリのアクセス可能なリードライト属性を含
み、前記最適化ステップに前記リードライト属性でリー
ド不可と示されたメモリに対するメモリアクセス命令が
リード命令であるか、前記リードライト属性でライト不
可と示されたメモリに対するメモリアクセス命令がライ
ト命令であるというエラーを検出するリードライト属性
エラー検出ステップと、前記リードライト属性エラー検
出ステップでエラーが検出された場合はエラー処理を行
うリードライト属性エラー検出ステップを含むことを特
徴とする請求項8記載のプログラム処理方法。 - 【請求項13】 前記ハードウェア情報に目的機械の構
成であるメモリのアクセス方法属性を含み、前記最適化
ステップに前記アクセス方法属性の示されたメモリをア
クセスするメモリアクセス命令を前記アクセス方法属性
で示すアクセス方法を指定したメモリアクセス命令に置
き換えるアクセス方法属性命令置換ステップを含むこと
を特徴とする請求項8記載のプログラム処理方法。 - 【請求項14】 前記ハードウェア情報に前記メモリ名
と前記アドレス範囲属性、前記アクセス単位属性、前記
リードライト属性、アクセス方法属性のいずれかを含ん
だ集合情報を識別する論理メモリ名を含み、前記メモリ
資源競合判定ステップに前記論理メモリ名からメモリ名
を検索し一致/不一致の判定に用いるステップを含み、
前記アドレス範囲エラー検出ステップ、前記アクセス単
位エラー検出ステップ、前記リードライト属性エラー検
出ステップ、前記アクセス方法属性命令置換ステップの
いずれかのステップに前記論理メモリ名からアドレス範
囲属性、アクセス単位属性、リードライト属性、アクセ
ス方法属性のいずれかを検索し使用するステップを含む
ことを特徴とする請求項8〜13のいずれか1項に記載
のプログラム処理方法。 - 【請求項15】 前記変換ステップ2により得られた実
行形式コードが目的機械の構成である複数のメモリのう
ち少なくとも一つが使用されていないことを検出するメ
モリ未使用検出ステップと、前記実行形式コードの実行
時に未使用であると検出された目的機械のメモリを低消
費電力状態に設定するステップを備えることを特徴とす
る請求項8記載のプログラム処理方法。 - 【請求項16】 高級言語で記述された複数のソースコ
ードからなるプログラムを実行形式コードに変換する方
法であって、前記ソースコードを中間コード1に変換す
る変換ステップ1と、最適化情報を用いて前記中間コー
ド1を中間コード2に最適化する最適化ステップと、前
記中間コード2を前記実行形式コードに変換する変換ス
テップ2とを備えることを特徴とする請求項1記載のプ
ログラムを記録したコンピュータ読み取り可能な記録媒
体。 - 【請求項17】 前記最適化ステップは、前記実行形式
コードを実行する目的機械の構成情報を抽出するハード
ウェア情報抽出ステップと、前記ハードウェア情報抽出
ステップにより得られたハードウェア情報を用いて中間
コード1の命令あるいは命令列を目的機械における実行
に好適になるように命令あるいは命令列を置き換えある
いは並び替える命令最適化ステップを備えることを特徴
とする請求項16記載のプログラムを記録したコンピュ
ータ読み取り可能な記録媒体。 - 【請求項18】 前記最適化ステップは、前記ソースコ
ードからなるプログラムで実現されるアプリケーション
の特性情報を抽出するアプリケーション情報抽出ステッ
プと、前記アプリケーション情報抽出ステップにより得
られたアプリケーション情報を用いて中間コード1の命
令あるいは命令列を目的機械における実行に好適になる
ように命令あるいは命令列を置き換えあるいは並び替え
る命令最適化ステップを備えることを特徴とする請求項
16記載のプログラムを記録したコンピュータ読み取り
可能な記録媒体。 - 【請求項19】 高級言語で記述された複数のソースコ
ードからなるプログラムを実行形式コードに変換する方
法であって、前記ソースコードを中間コード1に変換す
る変換ステップ1と、最適化情報を用いて前記中間コー
ド1を中間コード2に最適化する最適化ステップと、前
記中間コード2を前記実行形式コードに変換する変換ス
テップ2とを備え、前記最適化ステップが、前記実行形
式コードを実行する目的機械の並列アクセス可能なメモ
リの構成情報を抽出するハードウェア情報抽出ステップ
と、前記ソースコードからプログラムで実現されるアプ
リケーションのメモリ使用の特性情報を抽出するアプリ
ケーション情報と、命令間の並列実行可否を判定におけ
るメモリ資源競合を判定するとき前記ハードウェア情報
と前記アプリケーション情報の参照により互いに並列ア
クセス可能なメモリへのアクセス命令であると判明した
場合はメモリ資源の競合がないと判定し、そうでない場
合はメモリ資源の競合があると判定するメモリ資源競合
判定ステップを備えたことを特徴とするプログラムを記
録したコンピュータ読み取り可能な記録媒体。 - 【請求項20】 前記ハードウェア情報に前記メモリ名
と前記アドレス範囲属性、前記アクセス単位属性、前記
リードライト属性、アクセス方法属性のいずれかを含ん
だ集合情報を識別する論理メモリ名を含み、前記メモリ
資源競合判定ステップに前記論理メモリ名からメモリ名
を検索し一致/不一致の判定に用いるステップを含み、
前記アドレス範囲エラー検出ステップ、前記アクセス単
位エラー検出ステップ、前記リードライト属性エラー検
出ステップ、前記アクセス方法属性命令置換ステップの
いずれかのステップに前記論理メモリ名からアドレス範
囲属性、アクセス単位属性、リードライト属性、アクセ
ス方法属性のいずれかを検索し使用するステップを含む
ことを特徴とする請求項8〜13のいずれか1項に記載
のプログラムを記録したコンピュータ読み取り可能な記
録媒体。 - 【請求項21】 前記変換ステップ2により得られた実
行形式コードが目的機械の構成である複数のメモリのう
ち少なくとも一つが使用されていないことを検出するメ
モリ未使用検出ステップと前記実行形式コードの実行時
に未使用であると検出された目的機械のメモリを低消費
電力状態に設定するステップを有することを特徴とする
請求項8記載のプログラムを記録したコンピュータ読み
取り可能な記録媒体。 - 【請求項22】 前記請求項2、4〜5、8〜15のい
ずれか1項に記載のハードウェア情報を記録したコンピ
ュータ読み取り可能な記録媒体。 - 【請求項23】 前記請求項3、6〜7、8〜15のい
ずれか1項に記載のアプリケーション情報を記録したコ
ンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000014517A JP3692884B2 (ja) | 2000-01-24 | 2000-01-24 | プログラム処理方法および記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000014517A JP3692884B2 (ja) | 2000-01-24 | 2000-01-24 | プログラム処理方法および記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001202252A true JP2001202252A (ja) | 2001-07-27 |
JP3692884B2 JP3692884B2 (ja) | 2005-09-07 |
Family
ID=18541967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000014517A Expired - Lifetime JP3692884B2 (ja) | 2000-01-24 | 2000-01-24 | プログラム処理方法および記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3692884B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429634B2 (en) | 2006-07-26 | 2013-04-23 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit |
JP2022052542A (ja) * | 2020-09-23 | 2022-04-04 | 東芝情報システム株式会社 | Ffu検査装置及びffu検査用プログラム |
-
2000
- 2000-01-24 JP JP2000014517A patent/JP3692884B2/ja not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429634B2 (en) | 2006-07-26 | 2013-04-23 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit |
JP2022052542A (ja) * | 2020-09-23 | 2022-04-04 | 東芝情報システム株式会社 | Ffu検査装置及びffu検査用プログラム |
JP7436848B2 (ja) | 2020-09-23 | 2024-02-22 | 東芝情報システム株式会社 | Ffu検査装置及びffu検査用プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP3692884B2 (ja) | 2005-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3220055B2 (ja) | 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。 | |
US11449355B2 (en) | Non-volatile memory (NVM) based method for performance acceleration of containers | |
US7861222B2 (en) | Discoscript: a simplified distributed computing scripting language | |
US6877150B1 (en) | Method of transforming software language constructs to functional hardware equivalents | |
JP5118745B2 (ja) | メモリアクセス命令のベクトル化 | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
JP6236093B2 (ja) | 並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
JP2000347876A (ja) | スタック・スロット割当て方法および装置 | |
US8266416B2 (en) | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system | |
CN100362474C (zh) | 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备 | |
JPH09212369A (ja) | 記憶域割り付け装置 | |
US7299460B2 (en) | Method and computer program for converting an assembly language program for one processor to another | |
JP3692884B2 (ja) | プログラム処理方法および記録媒体 | |
US11635947B2 (en) | Instruction translation support method and information processing apparatus | |
KR20150051083A (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
JP2013235474A (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
Thorelli | The EDA multiprocessing model | |
JP3473391B2 (ja) | プログラム処理方法、プログラム処理装置及び記録媒体 | |
JP7026563B2 (ja) | 高位合成方法、高位合成プログラム、高位合成装置 | |
CN116775127B (zh) | 一种基于RetroWrite框架的静态符号执行插桩方法 | |
US11734003B2 (en) | Non-transitory computer-readable recording medium, compilation method, and compiler device | |
JP2014507734A (ja) | 分散計算方法及び分散計算システム | |
JP4298868B2 (ja) | ペアレジスタ割当て処理方法,コンパイル処理装置およびコンパイラのプログラム記録媒体 | |
JP4032822B2 (ja) | アセンブラプログラムのためのアドレス記述変換システム及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050318 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050531 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050613 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3692884 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090701 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100701 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110701 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110701 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120701 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120701 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130701 Year of fee payment: 8 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |