JP2000347873A - マルチプラットフォーム環境における命令選択 - Google Patents

マルチプラットフォーム環境における命令選択

Info

Publication number
JP2000347873A
JP2000347873A JP2000122840A JP2000122840A JP2000347873A JP 2000347873 A JP2000347873 A JP 2000347873A JP 2000122840 A JP2000122840 A JP 2000122840A JP 2000122840 A JP2000122840 A JP 2000122840A JP 2000347873 A JP2000347873 A JP 2000347873A
Authority
JP
Japan
Prior art keywords
platform
compiler
instruction
dependent
object code
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
JP2000122840A
Other languages
English (en)
Inventor
Jr Clifford N Click
エヌ. クリック, ジュニア クリフォード
Christopher A Vick
エー. ヴィック クリストファー
Michael H Paleczny
エイチ. パレッツィニィ マイケル
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000347873A publication Critical patent/JP2000347873A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers

Abstract

(57)【要約】 【課題】 マルチプラットフォーム環境において、埋込
命令セレクタを有するプラットフォーム指定コンパイラ
を構築するシステム及び方法が提供される。 【解決手段】 対応するアーキテクチャ特徴を記述する
一組のユーザ定義によるプラットフォーム依存コンパイ
ラアーキテクチャ記述子、選択すべき命令を定義する一
組の命令述語が、それぞれプラットフォーム依存コンパ
イラのオブジェクトコード、命令セレクタのオブジェク
トコードに変換される。埋込命令セレクタを有するプラ
ットフォーム指定コンパイラは、プラットフォーム依存
コンパイラのオブジェクトコード、命令セレクタのオブ
ジェクトコード、及びプラットフォーム独立コンパイラ
のオブジェクトコードから形成される。

Description

【発明の詳細な説明】
【0001】
【発明の分野】本発明は、一般に、コンピュータシステ
ムに関する。より詳細には、マルチプラットフォーム計
算環境における実行可能な命令を選択するための方法及
び装置が開示される。
【0002】
【従来の技術】ソフトウェアプラットフォーム、及びハ
ードウェアアーキテクチャの絶え間ない増加により、コ
ンピュータユーザ、コンピュータプログラム開発者は、
その職業過程で、多くの異なる計算環境に遭遇すること
は確実である。本明細書の文脈では、環境という語は、
移植ソフトウェアと相互作用を行う計算システム内にお
けるすべての種類の要素を指すことに留意する必要があ
る。これらの要素には、通常、プロセッサ、オペレーテ
ィングシステム、入出力装置、ライブラリ、ネットワー
クが含まれ、或いは大型のヒューマンシステム、又は物
理システムが含まれる場合がある。準標準プラットフォ
ーム(例、IBM−PC、UNIX(登録商標))とし
ては、2、3種広く使用されるようになってはいるが、
いまのところ一般的な計算環境ではない。従って、その
実行可能性を維持、拡大するためには、既存バージョン
に基づくソフトウェアプログラムの実行可能形態が、新
しい計算環境で作成されるよう、ほとんどのソフトウェ
アプログラムが移植の必要性に直面する。その結果、移
植性、即ち所定環境(つまり、ターゲット)に対するソ
フトウェアプログラムの移植能力が、ほとんどのソフト
ウェアプログラムで所望される属性として一般に認識さ
れつつある。異なる計算プラットフォーム間において移
植が可能であると、ソフトウェアプログラムの耐用ライ
フサイクルが延長し、またプログラムをすぐに使用でき
るようなプログラムの導入範囲が拡大されるため、その
ソフトウェアプログラムの価値が向上することは明らか
である。従来技術でよく知られているように、ソフトウ
ェアプログラムには、アプリケーションプログラム、シ
ステムプログラム、又はプログラム構成要素を含むこと
ができる。一方、ソフトウェアシステムは、ソフトウェ
アプログラムの集合である。
【0003】ソフトウェアプログラムは、移植のコスト
が、新しいターゲット環境におけるプログラム書換えコ
ストより低く、またその限りにおいて、移植可能であ
る。ソフトウェアプログラムは、ゼロコストで移植が可
能であれば、その移植性は完全であるが、実際上不可能
である。実際には、2つの基本的移植可能性プロトコル
がある。第1は、二進移植性(つまり、ソフトウェアプ
ログラムの実行可能性形態を移植)であり、第2は、ソ
ース移植性(つまり、ソフトウェアプログラムのソース
言語表現を移植)である。二進移植性プロトコルは、一
般に、いくつかの利点(主に移植の容易性に関する)を
有するが、このプロトコルは類似性の強い環境間でのソ
フトウェアプログラム移植のみに使用可能であり、これ
によりその有効性が厳しく制限される。対照的に、ソー
ス移植可能性プロトコルは、ソースコードの利用可能性
を前提とするため、通常、特定ソフトウェアプログラム
を、より広範な計算環境に適合させる能力が大きくな
る。
【0004】残念ながら、移植プロセスのほとんどは、
いまだその場限りの方法で行われているのが現状であ
り、結果的に、一方から別のプラットフォームへのソフ
トウェアの移植コストを大幅に上げてしまう非効率な技
術となっている。例えば、コンパイラは、一方から別の
言語にコンピュータプログラムを翻訳するが、その間に
どのような構文的エラーでも捕捉される。最も一般的に
は、コンパイラは、C++、COBOL等のある高級言
語を、コンピュータが、翻訳なしに理解可能な機械語に
翻訳する。従って、完全にコンパイラを移植するには、
いくつか課題を達成する必要がある。この課題が達成さ
れて初めて、移植コンパイラは、元々意図されたのとは
全く異なるプラットフォームで動作する一方、その意図
された機能を信頼性高く、また成功裡に実行可能とな
る。
【0005】コンパイラを完全に移植するため達成する
必要のある前記いくつかの課題には、一般に多くの命令
形態が、同じ機械独立意味論に一致可能であることか
ら、適当な命令を選択することが含まれる。簡単な例と
して、値に定数「1」を加える演算が上げられる。そこ
では、値「1」を、8ビット、又は32ビットの精度整
数のどちらかで表すことができる。別の例として、ペン
ティアム(商標)、ペンティアム(商標)系マイクロプ
ロセッサ内にあるX86プロセッサでは、浮動少数点単
位(FPU)が、加算、減算等、様々な演算を実行でき
る3種の精度モードを有する。意味論上、例えば24ビ
ット精度への四捨五入が要求され、FPU制御語によ
り、FPU精度が、例えば53ビットに設定されている
場合、X86コンパイラが、追加の四捨五入を導入する
ことなく、53ビット精度を生成するアーキテクチャ記
述で定義される命令を選ぶことは非効率的であり、不正
確でもある。
【0006】他の例には、V8、又はV9プロセッサと
して構成されるSPARCマイクロプロセッサ等、多重
ハードウェアプラットフォームが含まれる。V8システ
ムとして構成されると、V8形態の命令のみ実行可能と
なるが、V9システムとして構成されると、V8、V9
形態のどちらか一方の命令が実行可能となる。従って、
V8システムが作動中の場合、V9命令は、V8システ
ム上では実行できないため、V8形態の命令のみ選ぶこ
とが重要である。
【0007】また好ましくは、特定プラットフォーム上
で適切に実行される命令だけでなく、実行「コスト」を
削減することにより、プロセッサの全体的性能を向上さ
せる命令も選ぶべきである。例えば、減算等、特定演算
結果を、メモリ位置に記憶することは、一般にデータレ
ジスタに同じ結果を記憶すること以上にコンピュータ資
源集約的(つまり、よりコスト高)である。従って、可
能であれば、使用可能性のある全ての命令の中で、最も
コストの低い命令を選ぶことがコスト的に最も効果的で
ある。前記例から、コスト効率の見地からすれば、メモ
リ内の位置に各結果を記憶させる命令ではなく、レジス
タにその結果を記憶させる命令を選ぶほうが適当であ
る。
【0008】従って、所望されるのは、マルチプラット
フォーム計算環境で実行される適当な命令の選択だけで
なく、これら選択命令の実行コストも削減されるよう
な、選択プロトコルを定義する能力である。
【0009】
【発明の概要】本発明は、概括的に言えば、マルチプラ
ットフォーム環境において、命令セレクタを有するコン
パイラを構築する改良方法及び装置、コンピュータシス
テムに関する。本発明は、方法、コンピュータシステ
ム、装置を含め、多くの方法で実施可能である。以下、
本発明実施例のいくつかに関し、その概要を記載する。
【0010】本発明の一つの特徴によれば、埋込命令セ
レクタを有するプラットフォーム指定コンパイラをコン
パイルする装置が開示される。この装置は、特定ハード
ウェアプラットフォームの対応アーキテクチャ特徴を記
述する一組のユーザ定義によるプラットフォーム依存コ
ンパイラアーキテクチャ記述子、及び命令セレクタが使
用する命令述語を含む。アーキテクチャ記述子コンパイ
ラは、ユーザ定義のプラットフォーム依存コンパイラア
ーキテクチャ記述子を、プラットフォーム依存コンパイ
ラのソースコード、及び命令セレクタのソースコードに
変換する。命令セレクタのソースコードは、ホストコン
ピュータにより、プラットフォーム依存オブジェクトコ
ード、及び命令セレクタのオブジェクトコードに変換さ
れる。コンパイラは、命令セレクタのオブジェクトコー
ドと組み合わせ、プラットフォーム独立コンパイラのオ
ブジェクトコード、及びプラットフォーム依存コンパイ
ラのオブジェクトコードから形成される。
【0011】プラットフォーム指定コンパイラを構築す
る方法として、特定ハードウェアプラットフォーム依存
コンパイラの対応アーキテクチャ特徴を記述する一組の
ユーザ指定プラットフォーム依存コンパイラアーキテク
チャ記述子、及び命令述語が提供される。記述子、命令
述語は、アーキテクチャ記述子コンパイラにより、プラ
ットフォーム依存コンパイラのソースコード、及び命令
セレクタのソースコードに変換される。プラットフォー
ム依存コンパイラのソースコードと命令セレクタのソー
スコードは、プラットフォーム依存オブジェクトコード
及び命令セレクタのオブジェクトコードにコンパイルさ
れる。埋込命令セレクタを有するプラットフォーム指定
コンパイラは、プラットフォーム依存オブジェクトコー
ド、命令セレクタのオブジェクトコード、及びプラット
フォーム独立コンパイラのオブジェクトコードから形成
される。
【0012】別の実施例において、プラットフォーム指
定コンパイラが開示される。このコンパイラには、特定
ハードウェアプラットフォーム上での実行に適した埋込
命令セレクタのオブジェクトコード、及びプラットフォ
ーム独立コンパイラのオブジェクトコードを有するプラ
ットフォーム依存コンパイラのオブジェクトコードが含
まれる。プラットフォーム独立コード及びプラットフォ
ーム依存オブジェクトコードに、一部埋め込まれるイン
タフェースが、プラットフォーム指定コンパイラ実行時
間中、プラットフォーム独立コンパイラコードとプラッ
トフォーム依存コンパイラコード間における情報フロー
の媒介をする。
【0013】本発明の上記、及び他利点は、以下実施例
の詳細な説明を読み、添付の様々な図を検討することに
より明白となる。
【0014】
【実施形態の詳細な説明】次に、マルチプラットフォー
ム計算環境における、命令選択の構成、及びその方法を
以下に説明する。まず、Java仮想計算機に常駐する
マルチプラットフォームコンパイラに関して、本発明を
説明する。一般に、埋込命令選択コードを有するプラッ
トフォーム指定コンパイラを構築するために、アーキテ
クチャ記述言語(ADL)ファイルの形式による一組の
ユーザ定義によるプラットフォーム指定アーキテクチャ
記述子、一組のユーザ定義による命令述語が提供され
る。ここで、当業者であれば分かるように、ADLは、
C++、属性文法、カスタム記述言語等、又はこれら形
態の組み合わせ等、多くの形態を取ることができる。実
施例において、命令述語は、ブール式の形態を取り、プ
ラットフォーム指定コンパイラに埋め込まれる命令選択
コードと共に、実行すべき命令のみ可能とするものであ
る。本発明の一実施例では、ブール式値の判定は、命令
選択中のみ可能である。
【0015】ADファイルには、マルチプラットフォー
ムコンパイラ構築器への入力を形成するユーザ定義命令
述語が含まれ、構築器には、アーキテクチャデザイン言
語コンパイラ(ADLC)が含まれる。一実施例におい
て、ADLCを使い、目標の所定コンパイラ構築に使わ
れる特定ターゲットプラットフォーム依存コンパイラの
ソースコードが生成される。ADLCにより、ターゲッ
トプラットフォーム命令選択のソースコード、ターゲッ
トプラットフォーム命令述語のソースコードもまた生成
される。埋込命令セレクタを有するプラットフォーム指
定コンパイラは、プラットフォーム依存コンパイラのソ
ースコード、命令選択のソースコード、及び命令述語の
ソースコードを使用し構築されるが、これらソースコー
ドは、別途提供されるプラットフォーム独立コンパイラ
のオブジェクトコードと共に、ADLCにより提供され
る。
【0016】このようにして、プラットフォーム指定コ
ンパイラでは、ユーザがターゲットプラットフォーム上
での実行に適当と考える命令ばかりでなく、命令実行コ
ストを削減することにより、プロセッサの性能を向上さ
せる命令も選ばれる。従って、マルチプラットフォーム
環境におけるプロセッサの信頼性、性能が大幅に向上す
る。
【0017】図1は、本発明の実施例による、マルチプ
ラットフォームコンパイラシステム100を示す代表的
ブロック図である。マルチプラットフォームコンパイラ
システム100は、ターゲットプラットフォームに適し
た命令を選ぶことができるプラットフォーム指定コンパ
イラに対して、その構築、又はコンパイルを行うことが
可能である。また、該コンパイラは、命令実行コストを
削減し、プロセッサの全体的性能を向上させる命令の選
択も可能である。
【0018】本実施例において、プラットフォーム指定
コンパイラは、プラットフォーム独立ソースコード、及
びプラットフォーム依存ソースコードをコンパイルする
ことにより構築される。ここで、プラットフォーム独立
ソースコードは、どのような特定プラットフォームから
も独立しているプラットフォーム指定コンパイラ部分を
表し、プラットフォーム依存ソースコードは、プラット
フォーム指定であるコンパイラ特徴を表す。ユーザ定義
(明示的な)の命令述語が提供される場合、或いはユー
ザ提供(暗黙)かどうかにかかわらず、特定命令が命令
述語を要求することが判定される場合、コンパイラは、
プラットフォーム指定コンパイラに前記選択能力を提供
する命令述語ソースコードを使用し、構築される。
【0019】より詳細には、本実施例において、マルチ
プラットフォームコンパイラシステム100には、プラ
ットフォーム指定アーキテクチャ記述子と命令述語を使
い、プラットフォーム依存コンパイラを構築するよう配
置されるコンパイラ構築器102が含まれる。本実施例
では、プラットフォーム指定アーキテクチャ記述子は、
アーキテクチャ記述言語(ADL)の形態を取る。この
ADLを使い、ターゲットプラットフォームコンパイラ
のプラットフォーム依存部分が表される。一方、命令述
語は、ブール式の形態を取る。ADLは、C++、Ja
vaソースコード、Pascal等、当業者によく知ら
れた多くの形態を取ることができる。通常、マルチプラ
ットフォームコンパイラシステム100のユーザがコー
ド化するのはADファイルである。しかし、ADファイ
ルは、「ターンキー」システムと称する状況で、元の機
器製造業者により提供される場合もある。このような状
況では、エンドユーザが、有効と考えるターゲットプラ
ットフォームを選んでおり、供給者が、必要なコード化
方法を提供している。
【0020】多くの場合、ADファイルは、ADファイ
ル104、ADファイル106等、コンパイラ構築器1
02外部の、例えばメモリシステムに位置付けられる。
それぞれ特定プラットフォームに特有の、どのような数
のADファイルも設置できるが、コンパイラ構築器10
2により一度に処理されるADファイルは一つに限られ
る。このように、例えば、プラットフォームタイプ1に
特有のプラットフォーム依存ソースコードが提供される
と、カスタマイズされたコンパイラ構築器102は、プ
ラットフォームタイプ1のオブジェクトコードへのソー
スコードのコンパイルができるようになる。例えば、A
Dファイル104には、命令述語を有するADLコード
を含むことができる。この命令述語は、コンパイラ構築
器102により使用され、ユーザ定義の命令述語が可能
とする命令を優先的に選ぶことが可能なX86コンパイ
ラが構築される。従来からよく知られているように、X
86オブジェクトコードは、カリフォルニア州サンタク
ララ、インテル社製造のX86マイクロプロセッサで実
行可能な命令である。
【0021】同様に、ADファイル106には、命令述
語を有するADLコードを含むことができる。この命令
述語は、コンパイラ構築器102により使用され、ユー
ザ定義の命令述語が可能とする命令を優先的に選ぶこと
が可能な、例えばSPARCコンパイラが構築される。
【0022】上述の場合、両方とも、選択とほぼ同時に
コスト分析も行われるため、プロセッサ全体の性能が向
上される。このように、コンパイラ構築器102は、利
用可能なADファイル、及び対応するユーザ定義命令述
語と同じくらい多く、適切な命令選択コードを有するプ
ラットフォーム指定コンパイラを自動的に提供すること
が可能である。
【0023】図2は、図1に示すマルチプラットフォー
ムコンパイラ構築器102の特定実施例を示す図であ
る。図示実施例では、コンパイラ構築器102に、アー
キテクチャ記述言語コンパイラ202(ADLC)が含
まれ、このADLC202は、ユーザ定義の命令述語フ
ァイル201を有するADファイル204に接続され
る。ADLC202は、ADファイル204に含まれる
プラットフォーム指定ADLコード、及びファイル20
1に含まれる命令述語を、それぞれプラットフォーム依
存コンパイラのソースコード、命令セレクタのソースコ
ード、及び命令述語ソースコードにコンパイルするよう
配置される。更に、ADL202は、正しい、又は効率
的な命令選択を保証するため、ADファイル204に明
示的に書き込まれない命令述語(以下暗黙命令述語と称
する)の生成が可能である。
【0024】プラットフォーム依存コンパイラのソース
コード、命令セレクタのソースコード、及び命令述語ソ
ースコードは、次にADLC202に接続されたホスト
コンパイラ203に提供される。本実施例では、ホスト
コンパイラ203は、当業者によく知られたC++コン
パイラである。しかし、目標所定コンパイラのオブジェ
クトコードにソースコードを適切にコンパイルするもの
であれば、どのようなコンパイラでも使用できる。
【0025】コンパイル時間中に、ADLC202接続
のホストコンパイラ203は、プラットフォーム依存命
令述語ソースコード、及び命令セレクタのソースコード
と組み合わせて、プラットフォーム依存ソースコードの
コンパイルを行い、埋込命令セレクタのオブジェクトコ
ードを有するプラットフォーム依存コンパイラのオブジ
ェクトコードを形成する。本実施例では、プラットフォ
ーム依存コンパイラのオブジェクトコードは、コードブ
ロック206により表される。このコードブロック20
6には、ホストコンパイラ203接続のコンパイラユニ
ット208に含まれるコードブロック216が表す埋込
命令セレクタのオブジェクトコードが含まれる。カスタ
マイズされたコンパイラユニット208には、埋込命令
セレクタのオブジェクトコードにより、ユーザが適当と
考える命令を選択する能力が与えられる。更に、コスト
分析を行うことにより、命令実行コストを削減する命令
が優先的に選ばれ、それにより全体的命令実行コストが
削減され、プロセッサ性能が向上する。
【0026】プラットフォーム独立コンパイラのオブジ
ェクトコードが、ホストコンパイラ203によりコンパ
イルされたプラットフォーム独立コンパイラのソースコ
ードから導出される場合もある。また、本発明のよう
に、プラットフォーム独立コンパイラのオブジェクトコ
ードが既に提供されている場合もある。本実施例では、
プラットフォーム独立オブジェクトコードは、コードブ
ロック210により表される。このコードブロック21
0には、一実施例において、プラットフォーム独立イン
タフェース214に接続されるコンパイルエンジン21
2が含まれる。特定実施例において、実行時間中、イン
タフェース214は、プラットフォーム依存オブジェク
トコード及び命令選択オブジェクトコードの、選択部分
間の情報を、コンパイルエンジン212に転送する媒介
の役割を果たす。
【0027】例えば、X86マイクロプロセッサが要求
されると、ユーザは、この例では、中にX86プラット
フォーム指定の適当なADLコードが記憶されたADフ
ァイル204、適当な命令述語を有するファイル201
を提供する。コンパイラ構築器102により直接指示さ
れるように、X86指定のADLコード及び命令述語の
両方がADLC202に供給される。ADLC202
は、次に、ADLコードを、X86指定のコンパイラソ
ースコードにコンパイルし、また命令述語を、対応する
プラットフォーム指定命令述語のソースコード、及び命
令セレクタのソースコードにコンパイルする。ここで、
ADLC202は、どのような適当に構成されたADフ
ァイルでも、対応するプラットフォーム指定コンパイラ
のソースコードに変換し、必要であればプラットフォー
ム依存命令述語のソースコードに変換することができる
汎用コンパイラである。このように、ユーザが、ADL
C202、又はそのどの部分でもコード化、或いはどの
ような方法でも修正するという要求もほぼ排除される。
従って、ユーザに要求されるのは、必要であれば命令述
語も含むことができる適当に構成され、確認されたAD
ファイルのコード化のみである。
【0028】ADLC202が、X86指定ADLコー
ドをX86コンパイラのソースコードにコンパイルし、
また命令述語を命令セレクタのソースコードにコンパイ
ルした後、これらは、ホストコンパイラ203を使い、
それぞれブロック206、216で表されるオブジェク
トコードにコンパイルされる。
【0029】複数プラットフォーム依存コンパイラのソ
ースコードファイルが、図3に示すコンパイラユニット
300に利用可能とされる場合がある。コンパイラユニ
ット300は、図2に示すコンパイラユニット208の
一実施例であり、そのため性質上例としてのみ考えるべ
きである。本実施例では、様々なプラットフォーム依存
ADファイルは、ファイルスタック301に記憶され
る。ファイルスタック301は、コンパイラユニット3
00にのみ配置され、或いは例えばデータベース、遠隔
サービス等、遠隔配置できる場合もある。このような構
成は、インターネット、ローカルエリアネットワーク
(LAN)等、接続されたコンピュータネットワーク上
でのデータ転送を含むアプリケーションに特に好適であ
る。このような複数ADファイルの使用により、コンパ
イラユニット300に、対応するADファイルが表すど
のようなプラットフォーム指定コンパイラと同様、必要
な操作能力が与えられる点でとりわけ有利である。例え
ば、ファイルスタック301には、ADファイル302
のプラットフォームが含まれる。このADファイル30
2は、例えばSPARC指定記述を、対応するプラット
フォーム依存ソースコード304及び命令セレクタ30
6に変換されるその対応命令述語と共に表す。このよう
な構成では、ファイルスタック301にその対応ADフ
ァイルを含むどのようなプラットフォームでも、その選
択が可能となり、コンパイラユニット300がカスタマ
イズされる。図示されていないが、セレクタは、通常、
ADLC202に入力すべきADファイルを選ぶのに利
用される。
【0030】上述のように、コンパイラ構築器102
は、一実施例において、図4フローチャートに詳細に示
すプロセス400で、命令セレクタを有する特定コンパ
イラを構築する。プロセス400は、ステップ402で
開始され、そこで例えばADファイルにADLコードの
形態で記憶された、プラットフォーム指定アーキテクチ
ャ記述子が提供される。ステップ404において、AD
ファイルに、ユーザ定義の命令述語(明示)が含まれる
かどうか、或いは暗黙命令述語が要求されるかどうかの
判定が行われる。暗黙命令述語が必要となるのは、例え
ば、適当な命令実行において、所定データが特定位置に
存在することが基本要件であるときである。このような
状況は、特定オペランドが多重に起こる命令で起こるも
のであり、そこでは、処理エラーが起きないよう各オペ
ランドが同一であることが必須の要件である。エラーの
危険性は、プラットフォーム毎に変化する可能性がある
ため(つまり、3アドレスプラットフォーム上での2ア
ドレス命令実行に対して、2アドレスプラットフォーム
上で3アドレス命令を実行)、ユーザが、この事実を理
解することに頼ることは危険である。更に、命令述語で
は、ADファイルのライターには有効でないかもしれな
い、コンパイラユニットの実施詳細を要求することもあ
る。従って、暗黙命令述語は、特別な配慮が必要な特定
命令に、ADLCにより適当な命令述語が提供される点
において、命令選択プロセスの一部である。
【0031】明示的な、及び/又は暗黙の命令述語が要
求されると、ステップ406において、命令セレクタの
ソースコードが、ADLCにより提供される。ステップ
406とほぼ同時に、ステップ408で、ADLCによ
り、ADファイル入力に基づきプラットフォーム指定コ
ンパイラのソースコードが提供され、一方ステップ41
0で、プラットフォーム独立コンパイラのソースコード
が提供される。次に、ホストコンパイラが、命令選択、
及び実行コスト分析能力を有するプラットフォーム指定
コンパイラを構築する。この処理は、ステップ412に
おいて、プラットフォーム独立ソースコード、プラット
フォーム依存コンパイラのソースコード、及び命令述語
ソースコードを同時にコンパイルすることにより行われ
る。
【0032】ステップ414でプラットフォーム指定コ
ンパイラが構築されると、プラットフォーム指定コンパ
イラが実行時間中に利用可能となり、必要なプラットフ
ォーム指定オブジェクトコードにコンパイルされるコス
ト効率のよい命令が選択される。特定実施例において、
実行時間中、コンパイルエンジン、プラットフォーム依
存コンパイラのソースコード及び命令述語ソースコード
間での情報フローが、プラットフォーム独立インタフェ
ースにより媒介される。
【0033】最近では、Javaプログラミング言語、
オブジェクト指向言語により、Java仮想計算機(又
はバイトコードインタプリタ)が提供されるものであれ
ば、どのようなコンピュータシステムでも実行可能なコ
ンパイル出力(バイトコードと呼ばれる)の可能性が紹
介されている。Java仮想計算機は、バイトコード
を、実際のハードウェアプロセッサが実行できる命令に
変換するものである。この仮想計算機を使い、バイトコ
ードは、一度に一命令での翻訳ではなく、ときにはジャ
ストインタイム(JIT)コンパイラにより、各特定シ
ステムのプラットフォームで再コンパイルすることが可
能である。
【0034】図5は、本発明の実施例による、コンパイ
ラユニット208を内蔵する仮想計算機(JVM)50
0を含む装置を示す。本実施例では、ADLC202接
続のプラットフォーム指定ADファイルスタック502
に、ADファイルのグループが含まれる。各ADファイ
ルは、特定プラットフォーム依存コンパイラ特徴を表
す。本実施例では、ADファイルスタック502に、そ
れぞれX86、SPARCアーキテクチャを表すADフ
ァイル104、106が含まれる。ADファイルスタッ
ク502に、多くの異なるADファイルが含まれる場
合、通常、セレクタユニット(図示せず)を使い、所望
のオペレーティングシステムに対応して、ADファイル
スタック502から特定ADファイルが選ばれる。適当
なADファイルが選ばれると、ADLC202によっ
て、選択されたADファイルに含まれるADLコード
が、上述のように、適当なプラットフォーム依存コンパ
イラのソースコードに変換される。
【0035】Javaプログラミング言語、及びその環
境において、ジャストインタイム(JIT)コンパイラ
は、Javaバイトコードを、プロセッサに直接送るこ
とのできる命令に変えるプログラムである。Javaプ
ログラムの書込み後、Javaコンパイラにより、Ja
vaソース言語文が、特定ハードウェアプラットフォー
ムのプロセッサ(例、インテル社製ペンティアムマイク
ロプロセッサ、又はIBMシステム390プロセッサ)
に合致する命令を含むコードではなく、Javaコード
にコンパイルされる。Javaバイトコードは、どのよ
うなプラットフォームにも送ることができ、実行も可能
なプラットフォーム依存コードである。
【0036】より詳細には、バイトコードが、コンパイ
ラユニット208が提供するJITコンパイラに提供さ
れると、バイトコード504に含まれる方法のコンパイ
ルが、その方法の実行直前まで延期される。バイトコー
ド504がインタプリタ506に提供されると、バイト
コード504は、一度に1バイトコードずつインタプリ
タ506に読み込まれる。次に、インタプリタ506
は、各バイトコードのインタプリタ506への読込み毎
に、各バイトコードが定める操作を実行する。即ち、当
業者であれば分かるように、インタプリタ506は、バ
イトコード504を「翻訳」する。一般に、インタプリ
タ506は、ほぼ継続的に、バイトコード504の処
理、バイトコード504関連の操作を実行する。
【0037】方法がコンパイルされると、コンパイラユ
ニット208は、命令セレクタ508が選ぶ機械命令を
生成する。次に、コンパイラユニット208は、選択さ
れたバイトコード504から機械命令を生成し、その結
果生成される機械言語命令が、ターゲットプラットフォ
ームのオペレーティングシステム510によって直接実
行可能となる。一般に、機械言語命令は、仮想計算機5
00が終了すると廃棄される。
【0038】図6は、本発明の実施例による、ADファ
イル600の構成を示す図である。ここで、図示の構成
は、ADファイル104が採用することのできる多くの
構成の一つである。本実施例では、ADファイル600
は、一組の階層構成の相異なるプラットフォームアーキ
テクチャ記述子データフィールドである。例えば、AD
LCによりレジスタ定義データフィールドが使用され、
個々のレジスタ、ターゲットアーキテクチャを有するレ
ジスタ類が記述される。コード化ブロックのデータフィ
ールド604により、バイトストリームを出力するた
め、ターゲットコンパイラが使うコード化クラスが指定
される。フレーム管理ブロックのデータフィールド60
6には、フレーム構造及び管理プロトコルを定義する情
報が含まれる。このような情報は、特に、例えば、フレ
ームスタックが増える方向、モニタ入力操作が消費する
スタックスロット数、スタック整合要件、「スタック頂
部」のためのスタックスロット数を定義する。
【0039】オペランドのデータフィールド608では
オペランド定義が提供され、それはADLCにおける正
確なコンパイル用命令定義に先立って行われなければな
らない。なぜなら、オペランドが、命令定義で使用され
るユーザ定義の形態を構成するからである。ターゲット
アーキテクチャパイプラインの動作を定義するため、パ
イプラインルールのデータフィールド610が提供され
る。命令定義データフィールド612により、ターゲッ
トアーキテクチャ、及び対応する命令述語の命令フォー
マットが提供される。ピープホールのデータフィールド
614では、ADLCにより使用されるターゲットアー
キテクチャ指定最適化ルールが提供される。
【0040】ADファイル600の階層構成は、様々な
AD入力データフィールド間での相互関係の基礎となる
ものである。図6Bは、そのような関係の一つ、具体的
には、命令定義データフィールド612に含まれる様々
なオペランド間の関係を示すグラフである。ルートとし
ての命令定義データフィールド612の使用と逆の探索
を実行することにより、AD入力データフィールドへの
入力で必要な様々なオペランドの関係依存性が、判定可
能となる。例えば、命令定義データフィールド612を
ルートとして開始する上方探索を実行し、様々な分岐に
沿って上方に探索を広げることにより、パイプラインル
ールのデータフィールド610及びオペランド定義デー
タフィールド608に遭遇する。パイプラインルールの
データフィールド612からの上方探索の実行は、レジ
スタ定義データフィールド602となり、一方、レジス
タ定義データフィールド602及びコード化クラスデー
タフィールド608は、オペランド定義データフィール
ド608からの上方探索の実行により遭遇する。このよ
うにして、完全に特定命令定義を定めるために要する様
々なオペランドが提供される。
【0041】図7は、本発明の実施例による、プラット
フォーム依存コンパイラにより使用されるインタフェー
スの例を示す。インタフェース700は、ブロック20
6において、コンパイラエンジン212(又はプラット
フォーム独立オブジェクトコード)とプラットフォーム
依存オブジェクトコード間の通信を媒介する。図示実施
例では、ADLC出力に、理想的操作から機械命令への
マッピングを指定する決定性有限オートマトン(DF
A)用オブジェクトコードが含まれる。ADLC出力に
は、また、例えば、法的レジスタマスク、コード化方
法、分岐オフセットの振る舞いなどの定義に使用され
る、一組の命令クラス704を定義するオブジェクトコ
ードも含まれる。ピープホールルールのオラクル706
のオブジェクトコードも、ADLCにより出力される。
オラクル706とは、最適化が合法な機械指定ツリー、
これらツリーに正確に代わるものを指定するものであ
る。このようにして、プラットフォーム指定アーキテク
チャ特性が、コンパイルエンジン212に適したフォー
マットで自動的に提供され、ソースコードをプラットフ
ォーム依存オブジェクトコードにコンパイルするのに使
われる。
【0042】インタフェース700のターゲット独立部
は、整合器708に接続される。整合器708では、D
FA702により処理される入力ツリーが生成され、D
FA702では、中間表現での理想的操作用に機械命令
を選ぶため、ボトムアップ式書換えルールシステム(B
URS)スタイルのツリーパターン整合が実行される。
【0043】インタフェース700には、ピープホール
DFAの役割を果たすオブジェクトコードも含まれる。
ピープホールDFAは、最適化候補を見つけ出すため、
ツリーパターン整合を実行し、機械命令の整合化ツリー
を、機械命令の最適化ツリーで入れ替える。整合器70
8は、整合器DFAを使い命令選択を実行し、機械指定
中間表現を構成する。スケジューラ710が、機械所定
中間表現の順序付けを行い、一方レジスタ割当器712
が、機械指定表現内のオペランドに割り当てる合法レジ
スタの選択を行う。これには、値の適当な位置への再配
置(呼出し規約指定の適当な位置への引数の移動等)に
必要などのような命令の挿入も含まれる。ピープホール
最適化装置714パターンは、機械指定表現内の小ツリ
ーと整合し、それらをより最適な機械指定ツリーで入れ
替える。オブジェクトコード出力716では、仮想呼出
しが使われ、バッファ内の機械オブジェクトコードとし
て、機械指定表現がコード化され、仮想計算器でそのバ
ッファが利用可能になる。
【0044】図8は、本発明の実施例による、コンパイ
ルエンジン212による実行時間中に実行される命令コ
ンパイルのプロセス例を示す。実行時間中、必要であれ
ば、コンパイルエンジン212は、情報要求を生成し
(特定実施例では、出力機能呼出しと称する)、プラッ
トフォーム依存コンパイラのオブジェクトコード、及び
必要であれば命令セレクタオブジェクトコードから所定
の情報を得る。例えば、埋込命令セレクタを使い命令を
選択するため、プラットフォーム指定情報を要求する
と、コンパイルエンジン212は、情報要求器802に
対する機能呼出しを実行する。次に、情報要求器802
は、インタフェース700に接続され、そこで機能呼出
しは、必要な命令述語を有するDFAに接続される情報
検索器804に向けられる。本実施例では、次に、DF
Aによって、対応する命令述語に基づいた命令が選択さ
れる。次に、情報検索器804が、要求の情報を検索す
ることにより、機能呼出しに応答する。ここで、検索情
報は、コンパイルエンジン212によって容易に使用で
きるよう構成される。
【0045】図9は、本発明の実施例による、オペラン
ドが多重反復される命令の機械独立グラフ900の例を
示す。機械独立グラフ900は、同じ意味論に従う機械
依存命令にマッピングされる。例えば、グラフ900の
ノード902は、最も基本的なレベルにおいて、減算を
表し、この減算は、減算対応の同じ意味論に従う機械依
存減算(減算A、B、C)であれば、その数にかかわら
ずマッピングされる。しかし、上述のように、いくつか
は結果的に処理エラーとなるため、可能性のあるマッピ
ングが全て望まれるわけではない。このことが起きる状
況としては、例えば、ターゲットプラットフォームが2
アドレスプロセッサ(X86等)であり、かつ減算結果
を、入力(SPARCアーキテクチャにおける3アドレ
ス命令により可能)位置と異なる位置に記憶する必要が
ある場合である。通常、ボトムアップ式整合プロセスを
使い、機械命令の二進ツリーを、ターゲットプラットフ
ォームによって理解及び実行可能な意味に分解する。こ
の例では、ツリー各ノードは、ADLC生成の命令選択
コードを使って、命令述語により選ばれるターゲット依
存命令にマッピングされる。
【0046】ルート命令ノード902は、命令900
が、入力としてノード904、906の結果を有する整
数減算であることを示す。減算の結果は、908でレジ
スタに記憶される。この例では、命令セレクタにより、
実行すべき全整合命令の中から、最もコスト効率のよい
命令、又はコスト効率の良い一連の命令が選ばれる。
【0047】図10は、本発明の実施例による、命令選
択プロセス1000を詳細に示すフローチャートであ
る。プロセス1000は、ステップ1002で開始さ
れ、そこであるノードが、命令を表す機械独立二進ツリ
ーに位置付けられる。ステップ1004において、イ配
置されたノード対応の命令選択コードが、得られ、実行
される。次に、ステップ1006において、配置ノード
に整合可能なユーザ定義命令として可能性のある次の命
令がチェックされる。この整合は、各ノードの機械独立
表現と、同ノードのターゲットプラットフォーム表現間
で意味を比較整合することに基づき行われる。ステップ
1008において、ユーザ定義命令の入力位置が、配置
ノードの入力位置と整合するかどうかの判定が行われ
る。整合が判定されると、次に、ステップ1010で、
命令述語が満足されるかどうかの判定が行われる。命令
が整合しない、或いは命令述語が満足されない場合は、
制御がステップ1006に進み、そこでノードに整合す
る次の可能性あるユーザ定義命令が選ばれる。
【0048】ステップ1010に戻り、命令述語が満足
される場合は、ステップ1012で、ユーザ定義命令に
対して、実行コストの見積りが行われる。ステップ10
14において、コスト見積りが、以前のコスト見積り以
下かどうかの判定が行われる。コスト見積りがそれ以下
の場合、ステップ1016でコスト見積り変数が更新さ
れ、ステップ1018で最良命令が更新される。その
後、ステップ1020において、更にユーザ定義整合命
令があるかどうかの判定が行われる。これ以上整合命令
がない場合、プロセスは停止する。更に整合命令がある
場合は、制御はステップ1006に戻る。
【0049】ステップ1014に戻り、コスト見積りが
以前のもの以下でないことが判定され、その後追加の整
合命令がある場合、制御はステップ1006に戻り、そ
うでない場合は、プロセスは停止する。
【0050】図11は、本発明を実施するため採用され
るコンピュータシステム1100を示す。このコンピュ
ータシステム1100は、より詳細にはCPU1102
は、当業者であれば分かるように、仮想計算機を指示す
るよう構成できる。従来からよく知られているように、
ROMは、CPU1102に対して一方向にデータ及び
命令を転送する役割を果たす。一方、RAMは、通常双
方向のデータ、命令転送で使用される。CPU1102
には、一般に任意の数のプロセッサが含まれる。主記憶
装置1104、1106には、両方とも適当であればど
のようなコンピュータ読出し可能媒体も含まれる。二次
記憶媒体1108は、通常大容量メモリ装置であり、こ
れも双方向でCPU1102に接続され、追加の記憶容
量を提供する。大容量メモリ装置1108は、コンピュ
ータ読出し可能媒体であり、コンピュータコード、デー
タ等を含むプログラムの記憶の際使用可能である。通
常、大容量メモリ装置1108は、一般に主記憶装置1
104、1106より遅いハードディスク、テープ等の
記憶媒体である。大容量メモリ装置1108は、磁気、
又は紙テープリーダ、他よく知られた装置の形態を取る
ことができる。ここで、大容量メモリ装置1108内に
保持される情報は、適当であれば、仮想計算機としての
RAM1106の一部として標準的に内蔵可能である。
CD−ROM等、特定の主記憶装置1104も、CPU
1102に対して一方向にデータを渡すことができる。
【0051】CPU1102も、一つ以上の入出力装置
1110に接続される。入出力装置1110には、限定
するわけではないが、ビデオモニタ、トラックボール、
マウス、キーボード、マイクロフォン、タッチセンシテ
ィブディスプレイ、変換器カードリーダ、磁気、又は紙
テープリーダ、タブレット、スタイラス、音声、又は手
書き認識器等の装置、当然ながら他コンピュータ等のよ
く知られる入力装置が含まれる。最後に、CPU110
2は、ネットワーク接続1112を使用し、コンピュー
タ、又は電気通信ネットワーク、例えば、インターネッ
ト、イントラネット等、に任意に接続可能である。この
ようなネットワーク接続で、CPU1102は、前記方
法ステップの実行中に、ネットワークから情報を受信し
たり、そこに送信したりすることが可能となることが考
えられる。このような情報は、CPU1102を使い実
行される一連の命令として表されることが多く、例え
ば、搬送波内のコンピュータデータ信号の形態で、ネッ
トワークに対して受信、送信したりすることができる。
前記装置、材料は、コンピュータハードウェア、ソフト
ウェア技術において、当業者にはよく知られたものであ
る。
【0052】以上、本発明の実施例を2、3説明した
が、本発明の精神、範囲を超えることなく、他多くの具
体的形態が可能である。例えば、マルチプラットフォー
ムコンパイラは、どのような計算システムでも使用可能
である。
【0053】本発明による、一つのオペレーティングシ
ステムから別の異なるオぺレーティングシステムへの移
植方法は、特にJava(商標)に基づく環境に対して
の実施に適しており、該方法は、一般に適切であればど
のようなオブジェクトベース環境でも適用できる。特
に、この方法は、プラットフォーム独立のオブジェクト
ベース環境に適している。更に、この方法は、ある分散
オブジェクトベースシステムでも実施可能である。
【0054】本発明を、分散オブジェクトベースのコン
ピュータシステムでの使用を基に説明したが、本発明
は、一般に、適当であれば、コンパイラを有するどのよ
うな計算システムでも実施可能である。従って、本例
は、例示的なものであり、何ら限定を加えるものでもな
い。また、本発明は、ここでの詳細な説明に限定される
わけではなく、前記特許請求の範囲内での修正が可能で
ある。
【図面の簡単な説明】
本発明、及びその利点は、添付図面に基づく以上の説明
で明白であるが、ここで各図は次のとおりである。
【図1】本発明の実施例による、マルチプラットフォー
ムのコンパイラシステムを示すブロック図である。
【図2】図1に示すマルチプラットフォームコンパイラ
の特定実施形態を示す図である。
【図3】図2に示すコンパイラの別の実施形態を示す図
である。
【図4】本発明の実施例による、コンパイラ構築プロセ
スを詳細に示すフローチャートである。
【図5】本発明の実施例による、プラットフォーム指定
コンパイラを有するJava仮想計算機(JVM)を示
す図である。
【図6】(a)は 本発明の実施例による、ADファイ
ル編成の例を示す図であり、(b)は(a)に示すAD
ファイルに含まれる様々なデータフィールド間の特定の
関係を示す図である。
【図7】本発明の実施例による、プラットフォーム依存
ソースコードと、プラットフォーム独立ソースコードと
を結合するインタフェースの例を示す図である。
【図8】本発明の実施例による、コンパイルエンジンに
よる実行時間プロセスの例を示す図である。
【図9】機械依存命令を示す図である。
【図10】本発明の実施例による、命令選択プロセスを
詳細に示すフローチャートである。
【図11】本発明を実施するために採用するコンピュー
タシステムを示す図である。
フロントページの続き (72)発明者 クリフォード エヌ. クリック, ジュ ニア アメリカ合衆国, カリフォルニア州, サン ノゼ, ウォーレイス ドライヴ 955 (72)発明者 クリストファー エー. ヴィック アメリカ合衆国, カリフォルニア州, サン ノゼ, リオ グランデ ドライヴ 5290 (72)発明者 マイケル エイチ. パレッツィニィ アメリカ合衆国, カリフォルニア州, サニーヴェイル, アリバ ドライヴ 241 ナンバー 10

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 埋込命令セレクタを有するプラットフォ
    ーム指定コンパイラを生成する装置において、 特定ハードウェアプラットフォーム依存コンパイラの対
    応アーキテクチャ特徴を記述する、一組のユーザ定義に
    よるプラットフォーム依存コンパイラアーキテクチャ記
    述子と、 前記命令セレクタにより選択されるプラットフォーム指
    定命令の識別に使用される、一組の命令述語と、 前記ユーザ定義によるプラットフォーム依存コンパイラ
    アーキテクチャ記述子を、プラットフォーム依存コンパ
    イラのソースコードに変換し、また前記一組の命令述語
    を、プラットフォーム指定命令セレクタのソースコード
    に変換するよう配置されるアーキテクチャ記述子コンパ
    イラと、 前記プラットフォーム依存コンパイラのソースコード
    を、プラットフォーム依存コンパイラのオブジェクトコ
    ードにコンパイルし、前記プラットフォーム指定命令セ
    レクタのソースコードを、埋込命令セレクタのオブジェ
    クトコードにコンパイルするよう配置されるホストコン
    パイラと、 プラットフォーム独立コンパイラのオブジェクトコード
    と、前記プラットフォーム指定コンパイラの実行時間中
    に、前記プラットフォーム独立コンパイラのオブジェク
    トコードと、前記プラットフォーム独立コンパイラのオ
    ブジェクトコード間における情報フローを媒介するよう
    配置されるインタフェースとを備え、 プラットフォーム指定コンパイラの実行時間中に、前記
    埋込命令セレクタにより、選択された命令の実行コスト
    に基づき、コンパイルすべき命令が選択され、また前記
    埋込命令セレクタにより、前記選択命令をコンパイルす
    るため、前記プラットフォーム指定コンパイラが使用す
    る暗黙命令述語が提供される装置。
  2. 【請求項2】 前記プラットフォーム指定コンパイラ
    に、前記特定ハードウェアプラットフォームの実行に適
    切な、プラットフォーム独立コンパイラのオブジェクト
    コードと、プラットフォーム依存コンパイラのオブジェ
    クトコードが含まれる請求項1に記載の装置。
  3. 【請求項3】 前記プラットフォーム指定コンパイラの
    実行時間中に、前記プラットフォーム独立コンパイラの
    オブジェクトコードが、前記インタフェースに情報要求
    を行うことにより、所定プラットフォーム独立オブジェ
    クトコードが要求され、前記インタフェースでは、前記
    情報要求が、前もって定められたプラットフォーム依存
    コンパイラのオブジェクトコードの情報検索器に向けら
    れる請求項2に記載の装置。
  4. 【請求項4】 前記プラットフォーム依存コンパイラの
    オブジェクトコード情報検索器が、前記情報要求を満足
    させる所定プラットフォーム依存コンパイラのオブジェ
    クトコード情報を検索することにより、前記情報要求に
    応答する請求項3に記載の装置。
  5. 【請求項5】 前記検索情報が前記インタフェースに提
    供され、前記インタフェースが前記情報を順に情報要求
    器に向ける請求項4に記載の装置。
  6. 【請求項6】 複数組のユーザ定義プラットフォーム依
    存アーキテクチャ記述子を更に備え、前記各記述子が、
    異なるハードウェアプラットフォームに対応する請求項
    1に記載の装置。
  7. 【請求項7】 埋込命令セレクタを有するプラットフォ
    ーム指定コンパイラを構築する方法において、 特定ハードウェアプラットフォーム依存コンパイラの対
    応特徴を記述する、一組のユーザ定義によるプラットフ
    ォーム依存コンパイラアーキテクチャ記述子を提供する
    ステップと、 実行時間中に、前記プラットフォーム指定コンパイラが
    コンパイルすべき命令を選択する前記埋込命令セレクタ
    により使用される、一組のユーザ定義命令述語を提供す
    るステップと、 アーキテクチャ記述子コンパイラにより、前記一組のユ
    ーザ定義プラットフォーム依存コンパイラアーキテクチ
    ャ記述子を、プラットフォーム依存コンパイラのソース
    コードに変換するステップと、 アーキテクチャ記述子コンパイラにより、前記一組のユ
    ーザ定義命令述語を、プラットフォーム命令セレクタの
    ソースコードに変換するステップと、 前記アーキテクチャ記述子コンパイラに接続されるホス
    トコンパイラにより、前記プラットフォーム依存コンパ
    イラのソースコードを、プラットフォーム依存オブジェ
    クトコードにコンパイルするステップと、前記アーキテ
    クチャ記述子コンパイラに接続されるホストコンパイラ
    により、前記命令セレクタのソースコードを、命令セレ
    クタのオブジェクトコードにコンパイルするステップ
    と、 前記プラットフォーム依存コンパイラのオブジェクトコ
    ードと共に、前記特定ハードウェアプラットフォーム上
    での実行に適するプラットフォーム独立コンパイラのオ
    ブジェクトコードを提供するステップと、前記プラット
    フォーム依存コンパイラのオブジェクトコード、前記命
    令セレクタのオブジェクトコード、及び前記プラットフ
    ォーム独立コンパイラのオブジェクトコードから、前記
    埋込命令セレクタを形成するステップを備える方法。
  8. 【請求項8】 プラットフォーム指定コンパイラ実行時
    間中に、前記プラットフォーム独立コンパイラのオブジ
    ェクトコード、前記プラットフォーム独立のオブジェク
    トコードにより、所定プラットフォーム依存オブジェク
    トコード情報を要求するステップと、 インタフェースに情報要求を提供するステップと、前記
    インタフェースにより、前記情報要求を、前もって定め
    られたプラットフォーム依存コンパイラのオブジェクト
    コードに向けるステップとを更に備える請求項7に記載
    の方法。
  9. 【請求項9】 情報検索器により、前記要求に応じ、前
    記情報要求を満足させる所定プラットフォーム依存コン
    パイラのオブジェクトコードを検索するステップを更に
    備える請求項8に記載の方法。
  10. 【請求項10】 前記インタフェースにより、前記検索
    情報を、情報要求器に向けるステップを更に備える請求
    項9に記載の方法。
  11. 【請求項11】 前記インタフェースにより、前記検索
    情報を、前記情報要求器に向けるステップを更に備える
    請求項10に記載の方法。
  12. 【請求項12】 埋込命令セレクタを有するプラットフ
    ォーム指定コンパイラにおいて、 プラットフォーム依存コンパイラのオブジェクトコード
    と、前記プラットフォーム依存コンパイラのオブジェク
    トコードと共に、特定ハードウェアプラットフォーム上
    での実行に適する、プラットフォーム独立コンパイラの
    オブジェクトコードと、 前記プラットフォーム独立コード及び前記プラットフォ
    ーム依存のオブジェクトコードに一部埋め込まれ、プラ
    ットフォーム指定コンパイラの実行時間中に、前記プラ
    ットフォーム独立コンパイラコードと前記プラットフォ
    ーム依存コンパイラコードとの間で情報フローを媒介す
    るインタフェースとを備えるプラットフォーム指定コン
    パイラ。
  13. 【請求項13】 プラットフォーム指定コンパイラの実
    行時間中に、前記プラットフォーム独立コンパイラのオ
    ブジェクトコードにより、前記インタフェースに情報要
    求を提供することにより、所定プラットフォーム依存オ
    ブジェクトコード情報の要求が行われ、前記インタフェ
    ースでは、前記情報要求が、前もって定められたプラッ
    トフォーム依存コンパイラのオブジェクトコード情報検
    索器に向けられる請求項12に記載のコンパイラ。
  14. 【請求項14】 前記プラットフォーム依存コンパイラ
    のオブジェクトコード情報検索器が、前記情報要求を満
    足させる所定プラットフォーム依存コンパイラのオブジ
    ェクトコード情報を検索することにより、前記情報要求
    に応答する請求項13に記載のコンパイラ。
  15. 【請求項15】 前記検索情報が前記インタフェースに
    提供され、前記インタフェースでは、前記情報が前記情
    報検索器に向けられる請求項14に記載のコンパイラ。
  16. 【請求項16】 複数組のユーザ定義プラットフォーム
    依存アーキテクチャ記述子を更に備え、各前記記述子
    が、異なるハードウェアプラットフォームに対応する請
    求項12に記載のコンパイラ。
JP2000122840A 1999-04-23 2000-04-24 マルチプラットフォーム環境における命令選択 Pending JP2000347873A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/298251 1999-04-23
US09/298,251 US6286134B1 (en) 1999-04-23 1999-04-23 Instruction selection in a multi-platform environment

Publications (1)

Publication Number Publication Date
JP2000347873A true JP2000347873A (ja) 2000-12-15

Family

ID=23149706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000122840A Pending JP2000347873A (ja) 1999-04-23 2000-04-24 マルチプラットフォーム環境における命令選択

Country Status (6)

Country Link
US (1) US6286134B1 (ja)
EP (1) EP1049010A3 (ja)
JP (1) JP2000347873A (ja)
CN (1) CN1146788C (ja)
AU (1) AU773319B2 (ja)
CA (1) CA2306542A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6526570B1 (en) * 1999-04-23 2003-02-25 Sun Microsystems, Inc. File portability techniques
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US7010784B1 (en) * 1999-09-03 2006-03-07 Cadence Design Systems, Inc. Method and system for split-compiling a hybrid language program
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
EP1211598A1 (en) * 2000-11-29 2002-06-05 Texas Instruments Incorporated Data processing apparatus, system and method
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
WO2002103532A2 (de) 2001-06-20 2002-12-27 Pact Xpp Technologies Ag Verfahren zur bearbeitung von daten
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US20030108012A1 (en) * 2001-12-12 2003-06-12 Quicksilver Technology, Inc. Method and system for detecting and identifying scrambling codes
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US6922827B2 (en) * 2002-02-22 2005-07-26 Bea Systems, Inc. Iterative software development environment with prioritized build rules
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20030182273A1 (en) * 2002-03-22 2003-09-25 Goldberg Robert N. Method and apparatus for generating a query object
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
WO2004038599A1 (de) 2002-09-06 2004-05-06 Pact Xpp Technologies Ag Rekonfigurierbare sequenzerstruktur
US20040068716A1 (en) * 2002-10-04 2004-04-08 Quicksilver Technology, Inc. Retargetable compiler for multiple and different hardware platforms
US8276135B2 (en) * 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7600096B2 (en) * 2002-11-19 2009-10-06 Stmicroelectronics, Inc. Coprocessor extension architecture built using a novel split-instruction transaction model
US7707563B2 (en) * 2003-01-10 2010-04-27 Nexaweb Technologies Inc System and method for network-based computing
US7197743B2 (en) * 2003-03-04 2007-03-27 Hitachi, Ltd. Method for generating computer software for embedded systems
US7689975B2 (en) * 2003-04-16 2010-03-30 Nxp B.V. Processing of a compileable computer program
GB0315165D0 (en) * 2003-05-02 2003-08-06 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7788652B2 (en) 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US8595688B1 (en) 2003-09-08 2013-11-26 Synopsys, Inc. Generation of instruction set from architecture description
DE10344847A1 (de) * 2003-09-26 2005-04-14 Philips Intellectual Property & Standards Gmbh Verfahren zum Compilieren eines Quellcode-Programms in ein maschinenlesbares Zielobjekt-Programm in einer Netzwerkumgebung
US7457936B2 (en) * 2003-11-19 2008-11-25 Intel Corporation Memory access instruction vectorization
US7665070B2 (en) * 2004-04-23 2010-02-16 International Business Machines Corporation Method and apparatus for a computing system using meta program representation
US7610577B1 (en) * 2004-05-29 2009-10-27 Sun Microsystems, Inc. Method for developing platform independent launchable applications
US7356808B2 (en) * 2004-09-23 2008-04-08 International Business Machines Corporation Method, system and program product for porting code utilizing a portable execution environment
US7530059B2 (en) * 2005-02-18 2009-05-05 International Business Machines Corporation Method for inlining native functions into compiled java code
US9075596B2 (en) 2005-06-24 2015-07-07 Oracle International Corporation Deployment
US9542175B2 (en) 2005-06-24 2017-01-10 Oracle International Corporation Continuous deployment
US9063725B2 (en) 2005-06-24 2015-06-23 Oracle International Corporation Portable management
US20070169010A1 (en) * 2005-10-31 2007-07-19 Dhi Technologies, Inc. Multiplatform programming environment
US20070250828A1 (en) * 2005-11-16 2007-10-25 Tseitlin Ariel D Portable libraries
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
US20070234285A1 (en) * 2006-02-28 2007-10-04 Mendoza Alfredo V Determining the portability of an application program from a source platform to a target platform
US8751946B2 (en) * 2006-04-05 2014-06-10 International Business Machines Corporation Enhanced display of properties for a program object
US8812556B2 (en) * 2006-04-06 2014-08-19 International Business Machines Corporation Storing modification data for recreating modifications
US7716653B2 (en) * 2006-04-06 2010-05-11 International Business Machines Corporation Configurable importers and resource writers for converting data into another format
US7693257B2 (en) * 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization
US8301870B2 (en) * 2006-07-27 2012-10-30 International Business Machines Corporation Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US8359585B1 (en) * 2007-01-18 2013-01-22 Advanced Testing Technologies, Inc. Instrumentation ATS/TPS mitigation utilizing I/O data stream
US20080182021A1 (en) * 2007-01-31 2008-07-31 Simka Harsono S Continuous ultra-thin copper film formed using a low thermal budget
US8389203B2 (en) 2007-05-08 2013-03-05 Esko-Graphics Imaging Gmbh Exposing printing plates using light emitting diodes
US20120185820A1 (en) * 2011-01-19 2012-07-19 Suresh Kadiyala Tool generator
CN106802788B (zh) * 2012-03-30 2019-11-08 英特尔公司 用于处理sha-2安全散列算法的方法和设备
US20150156057A1 (en) * 2013-12-02 2015-06-04 John C. Leung Executable-Based Platform Selection
US9836441B2 (en) * 2014-09-04 2017-12-05 Home Box Office, Inc. Platform abstraction of graphics
US10579354B2 (en) * 2015-03-10 2020-03-03 Kordata, Llc Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms
CN107851002A (zh) * 2015-08-31 2018-03-27 华为技术有限公司 一种代码编译方法及代码编译器
US11640284B2 (en) 2015-11-30 2023-05-02 Oracle International Corporation Multi-platform compiling
US20170168792A1 (en) * 2015-12-15 2017-06-15 Futurewei Technologies, Inc. Space and time aware organization and isolation of components in real time systems
CN105867992A (zh) * 2016-03-28 2016-08-17 乐视控股(北京)有限公司 代码编译方法和装置
US10289394B2 (en) 2016-10-11 2019-05-14 Oracle International Corporation Selective generation of multiple versions of machine code for source code functions for execution on different processor versions and/or architectures
CN111124423B (zh) * 2019-12-25 2023-06-13 上海米哈游天命科技有限公司 一种基于多平台的编译检测方法、装置、服务器及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1248238A (en) * 1985-10-17 1989-01-03 Francis D. Lawlor Compiler including retargetable data generation
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5812854A (en) * 1996-03-18 1998-09-22 International Business Machines Corporation Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US5835773A (en) * 1996-04-17 1998-11-10 Hewlett-Packard, Co. Method for achieving native performance across a set of incompatible architectures using a single binary file
US6021275A (en) * 1996-08-05 2000-02-01 General Magic, Inc. Object code structure and method for translation of architecture independent program implementations
US5920721A (en) * 1997-06-11 1999-07-06 Digital Equipment Corporation Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
US7921413B2 (en) 2003-05-02 2011-04-05 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion
US8104027B2 (en) 2003-05-02 2012-01-24 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion

Also Published As

Publication number Publication date
CN1271891A (zh) 2000-11-01
CN1146788C (zh) 2004-04-21
EP1049010A2 (en) 2000-11-02
EP1049010A3 (en) 2004-01-02
US6286134B1 (en) 2001-09-04
AU773319B2 (en) 2004-05-20
CA2306542A1 (en) 2000-10-23
AU2892100A (en) 2000-10-26

Similar Documents

Publication Publication Date Title
JP2000347873A (ja) マルチプラットフォーム環境における命令選択
US6526570B1 (en) File portability techniques
US11385872B2 (en) Extending a virtual machine instruction set architecture
US7707566B2 (en) Software development infrastructure
US6502237B1 (en) Method and apparatus for performing binary translation method and apparatus for performing binary translation
US6748588B1 (en) One-pass greedy-pattern-matching finite-state-machine code generation
US6535903B2 (en) Method and apparatus for maintaining translated routine stack in a binary translation environment
US7913240B2 (en) Method and apparatus for transforming java native interface function calls into simpler operations during just-in-time compilation
EP0997816B1 (en) Method and apparatus for selecting ways to compile at runtime
CN101233488B (zh) 通过编译器来编译程序的方法和设备
JP4699580B2 (ja) データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体
US7530061B2 (en) Programmatic access to the widest mode floating-point arithmetic supported by a processor
US20040205740A1 (en) Method for collection of memory reference information and memory disambiguation
US6895580B2 (en) Expression reduction during compilation through routine cloning
JPH0769833B2 (ja) 多言語最適化コンパイラ内のシンボル テーブル構成用インタフェイス
KR100461535B1 (ko) 내장형 시스템을 위한 점진적 원격 로딩 장치 및 그 방법
EP1046985A2 (en) File portability techniques
US20040045018A1 (en) Using address space bridge in postoptimizer to route indirect calls at runtime
Gough Multi-language, multi-target compiler development: Evolution of the Gardens Point compiler project
JP2004139369A (ja) 定数アドレス領域を指示するポインタ解析方法
Guyer et al. Optimizing high performance software libraries
Arnold et al. Macro Assembler AS V1. 42 User’s Manual
To Fictitious imperative language system
Ganapathi et al. COMPUTER SYSTEMS LABORATORY I I