JPH10320214A - コンパイルシステム及びコンピュータプログラム製品 - Google Patents

コンパイルシステム及びコンピュータプログラム製品

Info

Publication number
JPH10320214A
JPH10320214A JP10097703A JP9770398A JPH10320214A JP H10320214 A JPH10320214 A JP H10320214A JP 10097703 A JP10097703 A JP 10097703A JP 9770398 A JP9770398 A JP 9770398A JP H10320214 A JPH10320214 A JP H10320214A
Authority
JP
Japan
Prior art keywords
instruction
subset
statement
statements
file
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
JP10097703A
Other languages
English (en)
Inventor
Greenebaum Jack
グリーンバウム ジャック
Baxter Michael
バクスター マイケル
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JPH10320214A publication Critical patent/JPH10320214A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 たとえばCまたはパスカルで書かれたソース
コードをコンパイルして、選択的に交換可能な内部ハー
ドウェア構造を有する動的に再設定可能な処理ユニット
で使用する実行ファイルを生成できるようにする。 【解決手段】 再設定指示によって指定された通りに各
種命令セット・構造を使用して実行用にソースファイル
をコンパイルする。オブジェクトファイルは前記構造で
の実行用に実行可能コードを備える命令セット・構造に
対応するハードウェア構造を指定するビットストリーム
をオプションでカプセル化する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に再設定可能
なコンピュータのためのソフトウェアに係り、特に、変
更可能な内部ハードウェア構造を有する動的に再設定可
能な処理ユニットで使用する実行ファイルを生成するた
めのコンパイルシステムに関する。
【0002】
【従来の技術】「スケーラブル・パラレル・動的再設定
可能な計算システムおよびその方法」と題する1995
年4月17日付米国特許出願第08/423,560号
関連出願では、フィールド・プログラマブル・ゲートア
レイ(FPGA)を使用するソフトウェア・プログラム
式に再設定可能な計算構造を開示している。本構造はス
ケーラブルで柔軟かつ再設定可能である。スケーラブル
パラレル相互接続能力は内蔵構造・プリミティブとして
実装される。つまり開示された実施装置は何個でもプロ
セッサを含むことが出来る。
【0003】従来技術では、再設定可能な装置を提供し
ようとする試みが行われて来た。第1のこのような従来
技術のアプローチは、ダウンロード可能なマイクロコー
ド装置によるもので、固定され再設定不可能なハードウ
ェア実行資源の動作がプログラム可能な制御記憶にロー
ドされた特定バージョンのマイクロコードを用いて選択
的に変更できる。たとえば、「J.L. Hennessy and D.A.
Paterson, ComputerArchitecture: A Quantitative A
pproach, Morgan Kaufmann, 1990」を参照のこと。この
ような幾つかのシステムでは、ユーザが製造後にマイク
ロコードを書いたりまたは変更したりできる。たとえ
ば、「W.T. Wilner, "Design of the Burroughs B170
0", in AFIPS Fall Joint Computer Conference, AFIPS
Press, 1972; W. G. Matheson, "User Microprogramma
bility in the HP-21MX Minicomputer" in Proceedings
of the Seventh Annual Microprogramming Workshop,
IEEEComputer Society Press, 1974」を参照のこと。
このような従来技術システムでの基本的計算ハードウェ
アはそれ自身が再設定可能になっていないため、これら
のシステムは広範囲の問題の種類を考察した場合に最適
な計算能力を提供しない。詳しく説明すると、このよう
なシステムは一般にデータパスを変更できず、実行ユニ
ットのサイズにより制限され、同一ハードウェアで別の
命令セットを提供することだけが出来る。このようなシ
ステムは2種類の異なる構造でコンパイルすることの出
来る単一のコンパイラを提供していない。
【0004】第2の従来技術のアプローチは計算を実行
するハードウェアがプログラマブル論理を用いて実装さ
れるようなシステムに関係する。最新のFPGA(PA
M、SPLASH、VCC)ならびにカスタム・プログ
ラマブル論理(TERAMAC)を使用する例が存在し
ている。たとえば、「P. Bertin et al., Programmabl
e Active Memories: A Performance Assessment, Tech.
Rep. 24., Digital Paris Research Laboratory, Marc
h 1993; D. A. Buell et al., Splash 2: FPGAs in a C
ustom Computing Machine, IEEE Computer Society Pre
ss 1996; S. Casselman, "Virtual Computing and the
Virtual Computer", in IEEE Symposiumon FPGAs for C
ustom Computing Machines, IEEE Computer Society Pr
ess, 1994; R. Amerson et al., "Teramac-Configurabl
e Custom Computing," in IEEESymposium on FPGAs for
Custom Computing Machines, IEEE Computer SocietyP
ress, 1995」 を参照のこと。一般に、これらの技術で
は、アプリケーションがハードウェア記述に関して指定
され、FPGAによって定義されるコンピュータのため
のソフトウェアを書くことによってではなく模式的にま
たはVHDL等のハードウェア記述言語を用いるかのど
ちらかで表現される必要がある。たとえば、PAMはゲ
ート設定と構造を記述するネットリストを生成するC+
+プログラムを書くことでプログラムされる。アプリケ
ーション・デベロッパはアプリケーション・アルゴリズ
ムの仕様をコンパイルする代わりに、アプリケーション
を実装するためのハードウェア記述を表現するデータ構
造を指定する。SPLASHは、次の3種類の方法の1
つでプログラムされる。
【0005】1)模式図に基づいてハードウェア仕様を
構築するための模式的キャプチャ・パッケージ 2)VHDLをゲートプリミティブ関数に変換する剛性
パッケージと組み合せたハードウェア記述言語(VHD
Lなど) 3)DBC、ゲート記述にコンパイルされるC言語のサ
ブセット TERAMACは模式的キャプチャ・パッケージまたは
ハードウェア記述言語を使用してプログラムする。これ
らのプログラミング技術のどれもアルゴリズム・ステッ
プについては記述していない。むしろ、これらはハード
ウェア構造を指定するためのメカニズムを提供するもの
である。
【0006】第3の従来技術のアプローチはソフトウェ
アを実行する再設定可能な計算機に関するものである。
RISC4005とHokieプロセッサはFPGA内
部に標準マイクロプロセッサを実装している。RISC
4005は基本的にはFPGAの小さな部分に中央演算
処理ユニット (CPU) を埋め込むデモンストレーシ
ョンであり、他の資源は幾つかのコプロセッサ機能に対
して専用のものになっている。Hokieはコンピュー
タエンジニアリングの実習問題として使用される。IS
Aはコンパイルと実行前に選択され、そのISAを全体
として使用する。更に、プロセッサ様のビットストリー
ムはこれの実行するソフトウェアとは別に格納される。
アドホック法を用いて正しいビットストリームがロード
されるように補償する。たとえば、「P. Athanas and
R. Hudson, "Using Rapid Prototyping to Teach the D
esign of Complete Computing Solutions' in IEEE Sym
posium on FPGAs for Custom Computing Machines, IEE
E Computer Society Press,1996.」を参照のこと。これ
らのシステムは、ランタイム時(実行中)の再設定を提
供しない。
【0007】これ以外の従来技術で再設定可能なコンピ
ュータはダイナミック命令セットコンピュータ(DIS
C)で、これは再設定可能な処理ユニットを使用してい
る。たとえば、「M. J. Wirthlin and B. L. Hutching
s, "A Dynamic Instruction Set Computer" in IEEE Sy
mposium on FPGAs for Custom Computing Machines, IE
EE Computer Society Press, 1995; D. A. Clark and
B. L. Hutchings, "TheDISC Programming Environmen
t", in IEEE Symposium on FPGAs for Custom Computin
g Machines, IEEE Computer Society Press, 1996.」を
参照のこと。DISC処理ユニットFPGAの実行と設
定はこれもFPGAに実装されるマイクロコントローラ
により制御される。マイクロコントローラはC言語の一
種の方言でプログラムされる。C言語方言のコンパイラ
は幾つかのプログラムステートメントがこれに対応する
処理ユニットのハードウェア設定で実行されるべきもの
であると認識して、正しい設定ビットストリームが実行
中に処理ユニットへロードされるようにするマイクロコ
ントローラ・コードを放出する。当業者には、マイクロ
コントローラそれ自体が固定された命令セットを有して
おり、コンパイラがこの固定命令セットにコンパイルす
ることは認識されよう。DISCで使用される構造には
幾つかの欠点がある。マイクロコントローラが固定され
ているので、異なった種類の処理ユニットを制御するよ
うに最適化することができない。設定ビットストリーム
はマイクロコントローラのメモリ空間の外にある外部ハ
ードウェアに格納されるので、システムは自己包含では
ない。さらに、前述の文書ではDISCが並列計算、大
域シグナリング、クロッキング、または割り込み処理に
どのように使用できるかを開示していない。最後に、新
規の命令がアトム実体として指定される。コンパイラは
一つの命令セットのついての命令を放出するだけだが、
個々の命令をプログラマが追加できるようにする。各処
理ユニット設定はプログラマが提供した単一のハードコ
ード命令であるから、潜在的柔軟性を減少するものであ
る。
【0008】第4の従来技術によるアプローチは混合シ
ステムに関係し、アルゴリズムの異なる部分がシステム
の別のコンポーネントにマッピングされている。従来技
術のシステムの一つでは、拡張C方言で表現されたアル
ゴリズムを混合FPGA/DSP構造にマッピングして
いる。ユーザはDSPを対象とする入力プログラムの部
分を明示的にマークし、残りのコード部分はFPGA実
装のためのゲートにコンパイルされる。このようなシス
テムではISA変更について非標準的なシンタックスを
用いているので特殊なツールを必要とする。更に、この
ようなシステムの動作はプログラムの一部のFPGA仕
様でネットリストを使用するため厄介である。このよう
なシステムは実際のハードウェア再設定を提供せず、端
に別のハードウェア部分へマッピングする能力を提供す
るだけである。
【0009】同様に、幾つかのシステムでは幾つかの設
定可能な論理資源のついた標準的マイクロプロセッサを
使用している。これらの資源は特定のプログラムの実行
を高速化する特殊な命令を実装するために使用されてい
る。たとえば、「R. Razdanand M. D. Smith, "A High-
Performance Microarchitecture with Hardware-Progra
mmable Functional Units", in Proceedings of the Tw
enty-Seventh AnnualMicroprogramming Workshop, IEEE
Computer Society Press, 1994」を参照のこと。この
ようなシステムはシリコン・ダイの一部をFPGA実装
に使用して中央演算処理ユニット(CPU)として実装
されるのが代表的である。CPUはFPGAが接続され
る固定データパスを有している。コンパイラはFPGA
で実行する単一の命令ステートメントへと選択したアセ
ンブリコードのシーケンスを組み立てる。しかしこのよ
うなシステムは一般的に既存のアセンブリ言語コードで
のみ動作し、開始点として隣接する固定ISAを必要と
する。更に、このようなシステムは一般にランタイム時
再設定を提供しない。最後に、このようなシステムは広
範な応用性がなく代表的には他の従来のシステムに対す
る有意な速度的改善を提供しない。
【0010】
【課題を解決するための手段】本発明によれば、たとえ
ばCまたはパスカルで書かれたソースコードをコンパイ
ルして、選択的に交換可能な内部ハードウェア構造を有
する動的に再設定可能な処理ユニットで使用する実行フ
ァイルを生成するためのシステムが提供される。
【0011】請求項1記載の発明は、各々が対応する命
令セットからの命令を実行するような複数のハードウェ
ア構造の中からプログラム命令のシーケンスの実行中に
選択的に変更可能な内部ハードウェア構造を有する動的
に再設定可能な処理ユニットで使用するプログラム命令
のシーケンスを生成するためのコンパイルシステムであ
って、少なくとも第1の命令ステートメントのサブセッ
トと、第2の命令ステートメントのサブセットと、各々
の命令ステートメントのサブセットについて前記ハード
ウェア構造の1つを指定する再設定指示とを含む複数の
ソースコード命令ステートメントを含むソースファイル
を入力する入力デバイスと、前記入力デバイスからの各
ソースファイルを受け入れるように結合され、各々の再
設定指示によって指定された前記ハードウェア構造に対
応する前記命令セットを指定することによって各々の入
力ソースファイルをコンパイルしてオブジェクトファイ
ルを作成し、各々の識別された命令セットを用いて実行
用に前記入力ソースファイルの少なくとも一部をコンパ
イルし、各々の再設定指示に対応する再設定コードを生
成するためのコンパイラとを含む。
【0012】請求項2記載の発明は、請求項1記載のコ
ンパイルシステムにおいて、各々のオブジェクトファイ
ルを受け入れるように結合され、前記オブジェクトファ
イルを結合して、各々の再設定指示について前記再設定
指示で指定された前記ハードウェア構造を記述するビッ
トストリームへの参照と前記記述されたハードウェア構
造についてのプログラム命令のシーケンスとを含む実行
形式ファイルを生成するためのリンカをさらに含む。
【0013】請求項3記載の発明は、請求項1記載のコ
ンパイルシステムにおいて、各々のオブジェクトファイ
ルを受け入れるように結合され、前記オブジェクトファ
イルを結合して、各々の再設定指示について前記再設定
指示によって指定された前記ハードウェア構造を記述す
るビットストリームと前記記述されたハードウェア構造
についてのプログラム命令のシーケンスとを含む実行形
式ファイルを生成するためのリンカをさらに含む。
【0014】請求項4記載の発明は、動的に再設定可能
な処理ユニットで使用するためのプログラム命令のシー
ケンスを生成するためにコンピュータで読み取り可能な
コードが表わされているコンピュータで使用可能な媒体
を含むコンピュータプログラム製品であって、少なくと
も命令ステートメントの第1のサブセットと命令ステー
トメントの第2のサブセットとを含む複数のソースコー
ド命令ステートメントを含むソースファイルを入力とし
て受け入れるように設定されたコンピュータで読み取り
可能なプログラムコード・デバイスと、前記命令ステー
トメントの第1のサブセットについて第1の命令セット
を識別するように設定されたコンピュータで読み取り可
能なプログラムコード・デバイスと、前記命令ステート
メントの第2のサブセットについて第2の命令セットを
識別するように設定されたコンピュータで読み取り可能
なプログラムコード・デバイスと、前記第1の命令セッ
トを用いて実行用に前記命令ステートメントの第1のサ
ブセットをコンパイルし、前記第2の命令セットを用い
て実行用に前記命令ステートメントの第2のサブセット
をコンパイルするように設定されたコンピュータで読み
取り可能なプログラムコード・デバイスとを含むコンピ
ュータプログラム製品。
【0015】請求項5記載の発明は、請求項4記載のコ
ンピュータプログラム製品において、前記コンパイルし
たステートメントを含み、命令ステートメントの各々の
サブセットについて前記命令ステートメントのサブセッ
トに対応する前記命令セットを識別する再設定コードを
さらに含む実行可能形式ファイルを生成するように設定
されたコンピュータで読み取り可能なプログラムコード
・デバイスをさらに含む。
【0016】請求項6記載の発明は、請求項4記載のコ
ンピュータプログラム製品において、前記コンパイルし
たステートメントを含み、命令ステートメントの各々の
サブセットについて前記命令ステートメントのサブセッ
トに対応する前記命令セットを表わすビットステートメ
ントを指定する参照をさらに含む実行可能形式ファイル
を生成するように設定されたコンピュータで読み取り可
能なプログラムコード・デバイスをさらに含む。
【0017】請求項7記載の発明は、請求項4記載のコ
ンピュータプログラム製品において、前記コンパイルし
たステートメントを含み、命令ステートメントの各々の
サブセットについて、拡張された実行形式およびリンキ
ング・フォーマットにしたがって符号化された参照をさ
らに含み、前記参照で前記命令ステートメントのサブセ
ットに対応する前記命令セットを表わすビットストリー
ムを指定する実行形式ファイルを生成するように設定さ
れたコンピュータで読み取り可能なプログラムコード・
デバイスをさらに含む。
【0018】請求項8記載の発明は、請求項4記載のコ
ンピュータプログラム製品において、前記コンパイルし
たステートメントを含み、命令ステートメントの各々の
サブセットについて、前記命令ステートメントのサブセ
ットに対応する前記命令セットを表わすビットストリー
ムをさらに含む実行形式ファイルを生成するように設定
されたコンピュータで読み取り可能なプログラムコード
・デバイスをさらに含む。
【0019】請求項9記載の発明は、請求項4記載のコ
ンピュータプログラム製品において、前記コンパイルし
たステートメントを含み、命令ステートメントの各々の
サブセットについて、前記命令ステートメントのサブセ
ットに対応する前記命令セットを識別する再設定コード
をさらに含む第1のオブジェクトファイルを生成するよ
うに設定されたコンピュータで読み取り可能なプログラ
ムコード・デバイスをさらに含む。
【0020】請求項10記載の発明は、請求項9記載の
コンピュータプログラム製品において、前記生成した実
行形式ファイルに対してアライメント条件にしたがって
メモリ・アライメントを実行するように設定されたコン
ピュータで読み取り可能なプログラムコード・デバイス
をさらに含む。
【0021】ここで、別の面から見ると、課題を解決す
るためのA手段として、各々のハードウア・構造が、対
応する命令セットからの命令を実行するような複数のハ
ードウェア構造の中からプログラム命令のシーケンスの
実行中に選択的に変更可能な内部ハードウェア構造を有
する動的に再設定可能な処理ユニットで使用するプログ
ラム命令のシーケンスを生成するためのコンパイル方法
であって、 a)少なくとも第1の命令ステートメントのサブセット
と第2の命令ステートメントのサブセットとを含む複数
のソースコード命令ステートメントを含むソースファイ
ルを入力として受け付けるステップと、 b)前記第1の命令ステートメントのサブセットについ
て第1の命令セットを識別するステップと、 c)前記第2の命令ステートメントのサブセットについ
て第2の命令セットを識別するステップと、 d)前記第1の命令セットを用いて実行する前記第1の
命令ステートメントのサブセットをコンパイルし、前記
第2の命令セットを用いて実行する前記第2の命令ステ
ートメントのサブセットをコンパイルするステップと、
を含む方法がある。
【0022】また、課題を解決するためのA手段におい
て、b)は前記ソースコードから前記第1の命令セット
を指定する再設定指示を取り出すステップを含み、c)
は前記ソースコードから前記第2の命令セットを指定す
る再設定指示を取り出すステップを含む方法がある(課
題を解決するためのB手段)。
【0023】また、課題を解決するためのB手段におい
て、各々の再設定指示はメタシンタックスを使用して提
供される方法がある。
【0024】また、課題を解決するためのB手段におい
て、各々の再設定指示は即時再設定指示、関数レベル再
設定指示、初期設定再設定指示のうちの1つを含む方法
がある。
【0025】また、課題を解決するためのA手段におい
て、e)過程として、ステップd)の結果を含み、さら
に各々の命令ステートメントのサブセットについて、前
記命令ステートメントのサブセットに対応する前記命令
セットを識別する再設定コードを含む実行形式ファイル
を生成するステップをさらに含む方法がある。
【0026】また、課題を解決するための第A手段にお
いて、e)過程として、ステップd)の結果を含み、さ
らに各々の命令ステートメントのサブセットについて、
前記命令ステートメントのサブセットに対応する前記命
令セットを表わすビットストリームを指定する参照を含
む実行形式ファイルを生成するステップをさらに含む方
法がある。
【0027】また、課題を解決するためのA手段におい
て、e)過程として、ステップd)の結果を含み、さら
に各々の命令ステートメントのサブセットについて、拡
張された実行形式およびリンキング・フォーマットにし
たがって符号化された参照を含み、前記参照が前記命令
ステートメントのサブセットに対応する前記命令セット
を表わすビットストリームを指定する実行形式ファイル
を生成するステップをさらに含む方法がある。
【0028】また、課題を解決するためのA手段におい
て、e)過程として、ステップd)の結果を含み、さら
に各々の命令ステートメントのサブセットについて、前
記命令ステートメントのサブセットに対応する前記命令
セットを表わすビットストリームを含む実行形式ファイ
ルを生成するステップをさらに含む方法がある。
【0029】また、課題を解決するためのA手段におい
て、e)過程として、ステップd)の結果を含み、さら
に各々の命令ステートメントのサブセットについて、前
記命令ステートメントのサブセットに対応する前記命令
セットを識別する再設定コードを含む第1のオブジェク
トファイルを生成するステップと、f)過程として、少
なくとも第2のソースファイルについてステップa)か
らe)までを反復して少なくとも第2のオブジェクトフ
ァイルを生成するステップと、g)過程として、ステッ
プe)とf)で生成した前記オブジェクトファイルをリ
ンクして実行形式ファイルを生成するステップとをさら
に含む方法がある(課題を解決するためのC手段)。
【0030】また、課題を解決するためのC手段におい
て、h)過程として、アライメント条件にしたがって前
記生成した実行形式ファイルに対してメモリ・アライメ
ントを実行するステップをさらに含む方法がある(課題
を解決するためのD手段)。
【0031】また、課題を解決するためのD手段におい
て、前記生成した実行形式ファイルには命令セットを表
わすビットストリームが付属し、前記h)ステップは
h.1)過程として前記ビットストリームをパディング
してメモリ・アライメントを実行するステップを含む方
法がある。
【0032】また、課題を解決するためのC手段におい
て、a)には少なくとも第1の命令ステートメントのサ
ブセットと第2の命令ステートメントのサブセットとを
含む複数のソースコード命令ステートメントを含むソー
スファイルを入力ファイルとして受け入れるステップを
含み、前記命令ステートメントの少なくとも1つが外部
参照を含み、e)にはステップd)の結果を含み、さら
に各々の命令ステートメントのサブセットについて、前
記命令ステートメントのサブセットに対応する前記命令
セットを識別する再設定コードを含む第1のオブジェク
トファイルを生成するステップを含み、前記命令ステー
トメントの少なくとも1つが外部参照を含み、さらに、
f.1)過程としてステップg)の前に、各オブジェク
トファイルの外部参照を解決するステップを含む方法が
ある。
【0033】また、課題を解決するためのA手段におい
て、前記命令ステートメントの第1のサブセットは第1
の定義された関数を含み前記命令ステートメントの第2
のサブセットは第2の定義された関数を含む方法があ
る。
【0034】また、課題を解決するためのA手段におい
て、前記命令ステートメントの第1のサブセットはステ
ートメントの第1の任意のブロックを含み、前記命令ス
テートメントの第2のサブセットはステートメントの第
2の任意のブロックを含む方法がある(課題を解決する
ためのD手段)。
【0035】また、課題を解決するためのD手段におい
て、前記ソースファイルは少なくとも1つの関数呼び出
しと関数戻りを含み、ステップb)とステップc)は各
々の関数呼び出しと関数戻りでコンテクスト内命令セッ
ト・構造を識別するために相互手順分析を選択的に実行
するステップを各々含む方法がある。
【0036】また、課題を解決するためのA手段におい
て、e)過程として前記第1の命令セットについて命令
ステートメントの第1のコンパイル済みサブセットを最
適化するステップと、f)過程として前記第2の命令セ
ットについて命令ステートメントの第2のコンパイル済
みサブセットを最適化するステップとをさらに含む方法
がある。
【0037】さらに、別の面から見ると、課題を解決す
るためのE手段として、各々のハードウェア構造が対応
する命令セットからの命令を実行するような複数のハー
ドウェア構造の中からプログラム命令のシーケンスの実
行中に選択的に変更可能な内部ハードウェア構造を有す
る動的に再設定可能な処理ユニットで使用するプログラ
ム命令のシーケンスを生成するためのコンパイル方法で
あって、 a)複数のソースコード命令ステートメントを含むソー
スファイルからソースコード命令ステートメントを選択
するステップと、 b)関数呼び出しを含む前記ステートメントに応答し
て、 b.1)コンテクスト内に現在ある第1の命令セットを
判定するステップと、 b.2)前記関数呼び出しについて第2の命令セットを
判定するステップと、 b.3)前記第2の命令セットとは異なる前記第1の命
令セットに応答して、 b.3.1)前記第2の命令セットに再設定のためのコ
ードステートメントを放出するステップと b.3.2)前記関数呼び出しについてコンパイル済み
コードステートメントを放出するステップと、 b.3.3)前記第1の命令セットに再設定のためのコ
ードステートメントを放出するステップとを実行するス
テップと、 b.4)前記第2の命令セットと同一である前記第1の
命令セット・構造に応答して、前記関数呼び出しについ
てコンパイル済みコードステートメントを放出するステ
ップと、を実行するステップと、 c)関数呼び出しを含まないステートメントに応答し
て、前記ステートメントについてコンパイル済みコード
ステートメントを放出するステップと、 d)前記ソースファイルの各々のソースコード命令ステ
ートメントについてステップa)からステップc)を反
復するステップと、を含む方法がある。
【0038】また、課題を解決するためのE手段におい
て、前記ステップb.3.1)には、b.3.1.1)
過程として有効レジスタを保存するためにコードステー
トメントを放出するステップと、b.3.1.2)過程
として再設定コードステートメントを放出するステップ
とを含む方法がある(課題を解決するためのF手段)。
【0039】また、課題を解決するためのF手段におい
て、前記コードステートメントはレジスタ転送レベルス
テートメントを含む方法がある(課題を解決するための
G手段)。
【0040】また、課題を解決するためのG手段におい
て、e)過程としてレジスタ割り当てを実行するステッ
プと、f)過程として各々のレジスタ転送レベルステー
トメントについて、 f.1)翻訳規則が前記レジスタ転送レベルステートメ
ントについて存在するかいなかを判定するステップと、 f.2)翻訳規則が存在するという判定に応答して、前
記翻訳規則にしたがって前記レジスタ転送レベルステー
トメントについてアセンブリ・コードを生成するステッ
プと、をさらに含む方法がある。
【0041】また、課題を解決するためのG手段におい
て、e)過程として各々のレジスタ転送レベルステート
メントにコメントをつけて命令セット・構造を示すステ
ップと、f)過程として前記レジスタ転送レベルステー
トメントを最適化するステップと、g)過程として前記
最適化したレジスタ転送レベルステートメントから計算
機に依存するアセンブリコードを生成するステップとを
さらに含む方法がある。
【0042】さらに、別の面から見ると、課題を解決す
るためのH手段において、プログラム命令のシーケンス
を含むプログラムの実行中に動的に再設定可能な処理ユ
ニットを再設定する方法であって、 a)新規の命令セットを指定する再設定指示を識別する
ステップと、 b)前記プログラム実行の状態を保存するステップと、 c)前記新規の命令セットをロードするステップと、 d)前記プログラム実行の前記保存した状態を取り出す
ステップと、 e)前記新規の命令セットを用いて実行を再開するステ
ップと、 を含む方法がある。
【0043】また、課題を解決するためのH手段におい
て、前記ステップb)は、 b.1)スタックポインタによって参照されるスタック
に状態変数を保存するステップと、 b.2)メモリ位置に前記スタックポインタを保存する
ステップとを含み、前記ステップd)は d.1)前記メモリ位置から前記スタックポインタを取
り出すステップと、 d.2)前記スタックから前記状態変数を取り出すステ
ップと、を含む方法がある。
【0044】
【発明の実施の形態】
<概要>本実施の形態は、動的に再設定可能な処理ユニ
ットで使用する実行ファイルを生成するためのコンパイ
ルシステムおよびその方法に関する。本実施の形態によ
れば、たとえばCまたはパスカルで書かれたソースコー
ドをコンパイルして、選択的に交換可能な内部ハードウ
ェア構造を有する動的に再設定可能な処理ユニットで使
用する実行ファイルを生成するためのシステムが提供さ
れる。
【0045】1つの実施の形態として、本実施の形態の
発明は、機械語命令を実行するのに必要なハードウェア
設定と一緒に機械語命令およびデータをカプセル化する
ことが出来る。再設定可能な構造において、個別のプロ
セッサ各々は、たとえば再設定可能なプロセッサ・ハー
ドウェア、たとえば完全にFPGAによるプロセッサ
と、データおよびプログラム・メモリと、並列相互接続
デバイスと、FPGA設定ビットについて書き換え可能
な記憶とから構成される。FPGA設定ビットストリー
ムを動的にロードすることで、本発明は特定のアプリケ
ーション実行フェーズに最適化したISAを使用するこ
とで高性能を達成するダイナミックISA計算機を実現
する。
【0046】本実施の形態の発明の構造において、アプ
リケーションはソフトウェアとして提供され、ハードウ
ェアは回路 (中央サービス・モジュール、プロセッサ
・モジュール、入出力(I/O)モジュール)とプロセ
ッサ・モジュールFPGAに常駐する命令セット構造
(ISA)のためのビットストリームのかたちで供給さ
れる。ISAは計算機をプログラムするために使用でき
るプリミティブ命令セットである。アプリケーションソ
フトウェアはプロセッサ・モジュールでISAとして設
定されたFPGAによって実行される。
【0047】本実施の形態の発明はFPGA設定ビット
ストリームとこれを実行するプログラムとをコンパイル
時に静的にリンクするように設計され、ランタイム時に
は独立したISAおよび/またはFPGAアプリケーシ
ョン・エレメント実装のための動的切り換えを行うよう
にプログラムされたシステムを説明する。
【0048】ISAはRAM133に格納されたプログ
ラム命令を実行する。これらのプログラム命令は1つま
たはそれ以上の再設定命令を選択的に含む。再設定命令
の選択時に、ハードウェアは特定ISAの最適な実装を
提供するように再設定される。つまり、各々のISA
は、これの特定の機能に加えて、別のISAを再設定可
能なプロセッサへロードさせてから、新規のISAを用
いてソフトウェア実行を継続させるような命令または指
示を含む。
【0049】メモリ内でのISAビットストリームの位
置は再設定命令への引数であるから、関数呼出し標的と
変数が決定されるのと同様にこの位置をリンクまたはロ
ード時に決定するのが望ましい。関数や変数と同様に、
ビットストリームのアドレスについてシンボリックな名
称を用いるのが望ましいと分かっている。本発明では実
行可能ソフトウェアの記述を拡張してISAビットスト
リームを含むオブジェクトファイル・フォーマットを使
用する。これにより幾つかの利点が得られる。たとえ
ば、次の利点である。
【0050】・ツール構築の簡便化 再設定は命令およびデータとしてのビットストリームと
して扱われるので、標準ソフトウェア・リンク技術を応
用して要求されたビットストリームへソフトウェア制御
ハードウェア変更をバインド出来る。データ抽象化とし
てのビットストリームを越えるような新規のソフトウェ
ア技術を作成する必要がない。
【0051】・ロードの柔軟性 再設定データを実行ファイルの1つのセクションに分離
することにより、メモリの保護領域へ設定をロードする
機能が簡略化される。メモリ・アライメントの問題は構
造的な方法で、詳細については後述するように、取り扱
いが簡単になる。
【0052】・ロードの簡略化 プログラムを実行するのに必要とされる全データが単一
のファイルに保持されるので、実行ファイルが静的にリ
ンクされた場合にロード時間認識またはビットストリー
ム位置識別を実行する必要がない。
【0053】・設定管理の簡略化 プログラムをリンクしてしまえば単一のファイルを保持
するだけで良い。これは個々の計算機やリモートサイト
への分散アプリケーション処理を簡略化する。
【0054】<再設定可能な計算システム・構造>図1
を参照すると、本実施の形態の発明にしたがって生成さ
れたオブジェクトファイルを実行するためのスケーラブ
ル、パラレル、動的再設定可能な計算機10のブロック
図が示してある。計算機10は少なくとも1台のSマシ
ン12、各々のSマシン12に対応するTマシン14、
汎用相互接続マトリクス(GPIM)16、少なくとも
1台のI/O Tマシン18、1台またはそれ以上のI
/Oデバイス20と、マスター時刻基準ユニット22を
含むが望ましい。好ましい態様において、I/Oデバイ
ス20は多数のSマシン12を含み、したがって多数の
Tマシン14,多数のI/O Tマシン18,多数のI
/Oデバイス20を含む。
【0055】Sマシン12とTマシン14とI/O T
マシン18の各々はマスター時刻基準ユニット22のタ
イミング出力に接続されたマスター・タイミング入力を
有している。各々のSマシン12はこれに対応するTマ
シン14に接続してある入力と出力を有する。対応する
Sマシン12に接続された入力および出力以外に、各々
のTマシン14はGPIM16に接続された転送入力お
よび転送出力を有している。同様に、各々のI/O T
マシン18はI/Oデバイス20に接続してある入力と
出力、およびGPIM16へ接続してある転送入力と転
送出力を有する。
【0056】各々のSマシン12は動的に再設定可能な
計算機である。GPIM16はTマシン14の間の通信
を支援するポイントツーポイント並列相互接続手段を形
成する。Tマシン14の組とGPIM16は、Sマシン
12へ接続されたメモリ間のデータ転送を行うためポイ
ントツーポイント並列相互接続手段を形成する。同様
に、GPIM16と、Tマシン14の組と、I/O T
マシン18の組がSマシン12とI/Oデバイス20の
各々の間のI/O転送のためのポイントツーポイント並
列相互接続手段を形成する。マスター時刻基準ユニット
22はSマシン12とTマシン14の各々にマスター・
タイミング信号を提供する発振回路を含む。
【0057】典型的な態様において、各々のSマシン1
2はザイリンクス社製XC4013(ザイリンクス社、
米国カリフォルニア州サンノゼ)型フィールド・プログ
ラマブル・ゲートアレイ(FPGA)を64メガバイト
のランダム・アクセス・メモリ(RAM)に接続したも
のを使用して実施する。各Tマシン14はザイリンクス
XC4013FPGAの約50%の再設定可能ハードウ
ェア資源を使用して実現され、各々のI/O Tマシン
18も同様である。GPIM16はトロイダル相互接続
メッシュとして実施する。マスター時刻基準ユニット2
2はシステム全体に周波数基準を提供するクロック分配
回路に接続されたクロック発振回路であり、「位相同期
し柔軟な周波数クロッキングおよびメッセージングのた
めのシステムおよびその方法」と題する米国特許出願第
08/501,970号に説明されている。望ましく
は、GPIM16、Tマシン14、I/O Tマシン1
8はスケーラブル・コヒーレント・インタフェース(S
CI)を形成するANSI/IEEE規格1596−1
992のポイントツーポイント・プロトコルにしたがっ
て情報を転送する。
【0058】図2を参照すると、本実施の形態の発明の
態様で使用するプロセッサ・モジュール130のブロッ
ク図が図示してある。Sマシン12FPGAは専用のビ
ットストリーム・メモリ132とプログラム/データ・
メモリ133、1つまたはそれ以上のTマシン14、タ
イミング・ジェネレータ131等のクロック生成回路に
接続されてプロセッサ・モジュール130を構成する。
プロセッサ・モジュール130は並列動作を支援するよ
うな方法でTマシン14経由で他の同様なモジュールへ
接続してある。プログラム/データ・メモリ133はプ
ログラム命令を格納し、従来のRAMとして実装され
る。ビットストリーム・メモリ132はFPGA設定を
記述したビットストリームを格納する。1つの態様にお
いて、プログラム/データ・メモリ133はダイナミッ
クラム(DRAM)として、又ビットストリーム・メモ
リ132はスタティックラム(SRAM)で実現され
る。
【0059】図3および図4を参照すると、再設定可能
な構造でISAを実現するFPGA再設定の例が図示し
てある。図面では本実施の形態の発明を実施するための
システム・構造のブロック図を図示してあり、Sマシン
FPGA12は図3の算術論理演算ユニット(ALU)
143と図4の有限インパルス応答フィルタ(FIR)
148とを含むように再プログラムされる。ビットスト
リームRAM132とプログラム/データRAM133
が提供される。メモリバス149はSマシンFPGA1
2とRAM132および133の間の通信チャンネルを
提供する。FPGA設定ハードウェア140によってビ
ットストリームRAM132からのISAビットストリ
ームにしたがったSマシンFPGA12の再設定が可能
である。SマシンFPGA12設定は、たとえば、デー
タレジスタ141、アドレスレジスタ142、レジスタ
・マルチプレクサ144、メモリデータ・レジスタ14
5を含む。ビットストリームによってはこれらの要素の
いずれか又は全部を他の設定で変更又は除外することが
出来る。たとえば、ALU143は図3に図示した設定
では現われているが、図4の設定では有限インパルス応
答フィルタ148に置き換えられている。
【0060】<再設定指示>計算機10はSマシンFP
GA12の設定を変更することにより計算機10を再設
定するための再設定指示を選択的に含むプログラム命令
をRAMに格納するのが望ましい。ここで図5を参照す
ると、外側ループ部分52、第1の内側ループ部分5
4、第2の内側ループ部分55、第3の内側ループ部分
56、第4の内側ループ部分57、第5の内側ループ部
分58からなる組を含む典型的なプログラム・リスト5
0が図示してある。術語「内側ループ」は関連演算の特
定の組を実行する責任のあるプログラムの反復部分を表
わしており、また術語「外側ループ」は汎用演算を実行
するおよび/または1つの内側ループ部分から別のルー
プへ制御を移動することに主として責任を持つプログラ
ムの部分を表わしていることが当業者には容易に理解さ
れよう。一般に、プログラムの内側ループ部分54,5
5,56,57,58は潜在的に大きなデータセットに
対して特定の演算を実行する。1つまたはそれ以上の再
設定指示を任意の内側ループ部分54,55,56,5
7,58に関連付けておき内側ループ部分を実行する際
に適切なISAがそのコンテクストにあるようにする。
一般に、何らかの任意のプログラムで、プログラム・リ
スト50の外側ループ部分52は各種の汎用命令を含む
が、一方でプログラム・リスト50の内側ループ部分5
4,56は特定の組の演算を実行するために用いられる
比較的少数の命令種から構成される。
【0061】典型的なプログラム・リスト50では、第
1の再設定指示が第1の内側ループ部分54の先頭に現
われ、第2の再設定指示が第1の内側ループ部分54の
終りに現われる。同様に、第3の再設定指示は第2の内
側ループ部分55の先頭に現われ、第4の再設定指示が
第3の内側ループ部分56の先頭に現われる、と言うよ
うに続く。各々の再設定コマンドはビットストリームで
表わされる設定データセットを参照するのが望ましい。
ビットストリームは各SマシンFPGA12の内部ハー
ドウェア構造を指定しており、これには動的再設定可能
な処理ユニット(DRPU)、アドレス演算ユニット
(AOU)、命令フェッチ・ユニット(IFU)、デー
タ演算ユニット(DOU)(図示していない)が含まれ
る。このようなハードウェア構造は特定の命令セット・
構造(ISA)の実装に専用かつ最適化されたものであ
る。ISAは計算機をプログラムするために使用できる
命令のプリミティブ又はコア・セットである。従来技術
で用いられているように、ISAは命令フォーマット、
オペコード、データ・フォーマット、アドレシング・モ
ード、実行制御フラグ、プログラムのアクセス可能なレ
ジスタを定義する。本実施の形態の発明により生成され
るオブジェクトファイルを実行するために用いられる再
設定可能な計算構造では、各Sマシンが高速でランタイ
ム設定されて、ビットストリームで指定された所望の各
ISAに対してユニークな設定データセットを使用する
ことによりISAのシーケンスを直接実行する。つま
り、各々のISAは対応する設定データセットによって
指定された通りのユニークな内部ハードウェア構造で実
現される。つまり、図5の態様では、第1から第5の内
側ループ部分54,55,56,57,58の各々がユ
ニークなISAに対応する、即ちISA1,2,3,
4,kに各々対応する。各々の連続したISAはユニー
クでなくとも良いことが当業者には認識されよう。つま
り、k番目のISAはISA1,2,3,4またはこれ
らと違う何らかのISAであり得る。外側ループ部分5
2の組もユニークなISA、即ちISA0に対応する。
プログラムの実行中に、連続した再設定指示の選択はデ
ータに依存する。任意の再設定指示の選択時に、再設定
指示によって参照されるビットストリームで指定された
通りにユニークなSマシンのハードウェア設定を介して
対応するISAに従い、プログラム命令が続けて実行さ
れる。
【0062】再設定指示の例外として、図5の典型的な
プログラム・リスト50では従来の高レベル言語ステー
トメント、たとえば、Cプログラミング言語に従って書
かれたステートメントを含むのが望ましい。
【0063】1つまたはそれ以上の再設定指示をプログ
ラム命令のシーケンス内に含めるには再設定指示を考慮
するようにコンパイラを変更する必要があることが、当
業者には理解されよう。従って、本実施の形態の発明の
コンパイルシステムおよびその方法ではハードウェア設
定を記述するビットストリームへの参照をカプセル化
し、再設定指示によって識別された特定ISAの仕様に
従いソースコードをコンパイルすることによって再設定
指示を含めている。
【0064】本実施の形態の発明の1つの態様におい
て、計算機10で利用できる全部のISAが以下をサポ
ートする。
【0065】・再設定中の情報とパラメータをスタック
式に格納するためのスタックポインタ(SP)と次命令
ポインタ・アドレスレジスタ(NIPAR)(これはプ
ログラムカウンタ(PC)としても周知である) ・たとえばサブルーチン・エントリについてjsrまた
サブルーチン戻り値についてrtsを含むフロー制御の
ための適当なアセンブリ言語命令 ・スタックに対してレジスタ値を格納しロードするため
の適当なメモリ・インタフェースユニット 再設定を実施する上でのこれらの要素の動作は図11か
ら図13(c)との関連で後述する。
【0066】<コンパイルシステムの要素>図10を参
照すると、本実施の形態の発明によるコンパイルシステ
ム400のブロック図が図示してある。本実施の形態の
発明によるコンパイルシステムおよびその方法は従来の
オペレーティング・システム、たとえばUnix等を使
用する代表的ワークステーション又はパーソナル・コン
ピュータで動作する。Unix環境はソフトウェア開発
ツールのソースコードが広く利用できるため、又ユーザ
環境の頑強さから有利である。当業者には理解されるよ
うに、本実施の形態の発明のシステムおよび方法は再設
定可能な計算機上でネイティブに実行することも出来
る。図6を参照すると、本実施の形態の発明によるコン
パイル、アセンブル、リンク、ロードの方法全体のフロ
ーチャートが図示してある。図6のコンパイル・ステッ
プのさらなる詳細は図7、図8、図9との関連で以下で
説明する。
【0067】ソースファイル401は後述するように特
別に変更したCコンパイラ402でコンパイルする。C
コンパイラ402はディスク記憶から又はその他の何ら
かの入力又は記憶デバイスからソースコード命令ステー
トメントを含むソースファイル401を読み込む(30
1)。Cコンパイラ402はソースコード命令ステート
メントのサブセットについてISAを識別する(30
2)。1つの態様において、ISAはさらに完全に後述
するように再設定指示によって識別される。Cコンパイ
ラ402は識別したISAを指定するための適当な再設
定命令を生成し(303)、識別したISAにより実行
する命令のサブセットをコンパイルして(304)アセ
ンブリ言語ステートメントを作成する。Cコンパイラ4
02は後続の命令ステートメントのサブセットが(代表
的にはソースファイル401内の別の関数である)異な
るISAでコンパイルすべきかどうか判定する(30
5)。また、1つの態様においてこのような決定は再設
定指示を調べることでも行われる。異なるISAが識別
された場合、Cコンパイラ402は302に戻る。
【0068】これ以外で、ソースファイルの最後に達し
た場合、アセンブリ言語ステートメントがアセンブラ4
09によってアセンブルされ(306)、オブジェクト
ファイル403を作成する(306)。オブジェクトフ
ァイル403は、ビットストリーム位置と64ビットビ
ット整列アドレスを扱えるように変更してあるソフトウ
ェアリンカ404を用いてリンクし(307)、実行フ
ァイル405を作成する。後述するように、実行ファイ
ル405はFPGA構造を定義するISAビットストリ
ーム406への参照の解決を含む。実行ファイル405
がソフトウェアリンカ404で作成されてから、ネット
ワーク接続408経由で、再設定可能な計算機10上で
動作するローダ407へ送信され計算機10へロードさ
れる(308)。ダイナミックリンクの場合、ISAビ
ットストリーム406もネットワーク接続408経由で
ローダ407へ送信される。
【0069】<任意のおよび構造化再設定>1つの態様
において、Cコンパイラ402では任意の再設定が許容
されており、再設定指示はソースコードのどこに配置さ
れていても良い。別の態様では、Cコンパイラ402が
構造化再設定を許容しており、再設定指示は関数呼び出
しまたは関数からの戻りの場合にだけ許容され、各々の
関数は関数の実行全体を通してコンテクストに組み込ま
れるべき単一のISAがラベル付けされる。任意の再設
定では柔軟性が追加されソースコードは小さくできる
が、構造化再設定では予測能力の改善とISAローディ
ングの判定機能が提供されるので、信頼性を高めること
が出来るようになる。機械語コードは一般にISAが異
なると異なるので、コンパイラがソースコードの特定セ
グメントについて適当な機械語コードを生成できるよう
にする判定能力が好ましいである。任意の再設定は、ソ
ースコード内の幾つかの条件文構造と組み合わされると
構造化再設定を用いて排除されるような非決定状況を発
生させることがある。
【0070】以下のコード例外は任意の再設定を用いた
場合に発生する可能性がある非決定的再設定の一例であ
る。
【0071】 #pragma reconfig ISA0 ... x = 0; if (a != o) { #pragma reconfig ISA1 } else { #pragma reconfig ISA2 } y = x + 2; ... IF文以降のコンテクストで、ランタイム時の制御フロー
について2種類のパスが可能であり各々が異なるISA
に再設定するためコンパイル時にISAを決定すること
が出来ない。したがってコンパイラはISA1とISA
2がバイナリ互換でなければ個の手順について有効な機
械語コードを放出できない。このような非決定性は、構
造化再設定を用いると1つだけのISAを関数毎に指定
できるため排除される。
【0072】上記の例では、変数xの値が再設定演算の
間保持され、新規ISAからアクセスすることが出来
る。1つの態様において、この値は従来の方法でISA
0のレジスタに格納される。しかし、ISA1またはI
SA2への再設定によってこのレジスタは存在しなくな
るか、値を失ってしまうので、レジスタに依存して再設
定後にxの値を供給することが出来ない。したがってコ
ンパイラ402は再設定後に使用される有効なレジスタ
の値を追跡し、必要な時点でそれらの値が利用できるこ
とを保証する。
【0073】任意の再設定を使用する場合、後続のIS
Aに変数へのアクセスをどのように提供するか、現在の
ISAが変数をどのように格納したかと後続のISAが
アクセスすべき機能を考慮することによってコンパイラ
402が決定する。構造化再設定では、値を呼び出しも
と関数へまたはここから渡す場合に従来行われているよ
うに、スタックを用いて値を格納する。レジスタ・構造
は再設定中に根本的に変化することがあるので、さらに
詳細には図11との関連で後述するように、有効な変数
は終了するISAによってスタックに格納され、後続の
ISAによって再ロードされる。
【0074】1つの態様において、コンパイラ402は
既知の「インライン化」最適化を実施して構造化再設定
でjsr命令のオーバヘッドを回避できるようにする。
インライン化は、呼び出された関数の演算を「インライ
ンで」コピーして、従来の方法で関数呼出しに関連する
オーバヘッドを回避する関数呼出しのコンパイルを最適
化するための周知の技術である。つまり、次のようなコ
ード・セグメント #pragma reconfig ISA1 jsr SUBROUTINE_A #pragma reconfig ISA0 #pragma reconfig ISA2 jsr SUBROUTINE_B #pragma reconfig ISA0 は、次のコードに置き換えることが出来る。
【0075】#pragma reconfig ISA1 < code from SUBROUTINE_A > #pragma reconfig ISA0 #pragma reconfig ISA2 jsr SUBROUTINE_B #pragma reconfig ISA0 つまり、ジャンプと戻りの必要性ならびに関数の呼び出
しと戻りに関係した関連スタックの書き込みを明らかに
することで性能を改善している。
【0076】さらに、1つ以上の再設定指示がシーケン
ス内に現われた場合に最後の再設定指示を除く全部を排
除することによりさらに最適化を行うことが出来る。つ
まり、3行目(#pragma reconfig ISA0)を上記のコー
ドセグメントから削除できる。
【0077】任意の再設定を使用する場合、呼び出され
た関数はプログラムのフローが呼び出した関数に戻って
からも有効なままの再設定を発生することがある。たと
えば、上記のコードリストを含む呼び出された関数は1
つのISAで始まり、2回再設定を行い、呼び出した関
数に戻る。呼び出した側の関数で後続のステートメント
は最後の再設定からISAを使用するものと考えなけれ
ばならない。1つの態様において、コンパイラ402は
相互手順分析を実行してどのISAが各々の関数呼び出
しと戻りでコンテクストに組み込まれているか判定す
る。ソースファイルが別々にオブジェクトファイルへコ
ンパイルされてから実行ファイルにリンクされるような
場合、どのISAが呼び出された関数から戻った後で状
況に組み込まれているかを判定するのは困難か、または
不可能である。このような状況ではISA情報をたとえ
ばヘッダファイルに格納しておき、モジュールから呼び
出された全ての外部関数について関数エントリ時と終了
時にどのISAがコンテクストに組み込まれているかを
指定する。これ以外に、関数間にパラメータを渡してI
SAのコンテクストを指定することも出来る。
【0078】構造化再設定を使用する場合、ISA情報
は関数の宣言に提供されるのでコンパイラ402が制御
フローに対してISA仕様を検証する必要がなく、また
呼び出された関数で予想しない再設定を行う可能性もな
い。
【0079】構造化再設定の更なる利点は、意味の観点
から再設定動作をより良く表現していることである。再
設定は一般に関数呼び出しに少なくとも匹敵するある程
度のオーバヘッドを伴うことと、たとえばスタックへの
値の格納等、同じ種類の演算の多くが関係することか
ら、関数呼出しと同様の再設定シンタックスを提供する
のが望ましい。構造化再設定は再設定の記述と関数呼出
しの記述を結合しているので、この意味上の目標を達成
することが出来る。構造化および任意の再設定について
の更なる例については後述する。
【0080】<再設定指示>好ましい態様において、再
設定指示はC言語で提供される標準のメタシンタックス
である#pragma が先行し、言語シンタックスに含まれな
い情報をコンパイラに渡している。#pragma シンタック
スを用いることで再設定指示はCプログラムのコンテク
ストで動作できるようになる。ソースコードでの再設定
指示の一例は次のようなものになるであろう。
【0081】#pragma func_isa func2 isa2 1つの態様において、3個の#pragma 指示が提供され
る。各々の指示は別個の顆粒性レベルまたはスコープで
動作するので、これによって特定のコード部分に影響を
与える。
【0082】・reconfig:新規ISAにすぐに再設定を
行う(スコープは任意のブロックのコード) ・func_isa:特定の関数でISAを指定する(スコープ
は関数)、 ・default_func_isa:初期設定ISAを指定する(スコ
ープはファイル全体) これらの再設定指示によってレジスタ転送レベル(RT
L)再設定ステートメントが得られ、これによって、詳
細については後述するようにどのISAが各々のコード
ブロックで必要とされるかを判定するための情報をコン
パイラに提供できる。
【0083】以下のコード・リストは構造化再設定環境
で前述の指示の各々の使い方の一例である。
【0084】
【表1】
【0085】コードリスト4行目はdefault_func_isa指
示の一例であり、別のISAを指定していない全ての関
数でISA0を使用すべきことを指定している。この指
示のスコープはファイル全体であるから、指示は図示し
たリスト全体に適用される。
【0086】コードリスト6行目はfunc_isa指示の一例
で、関数呼び出し build_color_mapでFIXED_POINT_ISA
が適当なISAであると指定している。個の指示のスコ
ープは指定された関数である。
【0087】コードリスト21行目はreconfig指示の一
例で、BYPTE_MAP_ISA が指示直後のコードブロックで適
当なISAであると指定している。この指示のスコープ
はコードリストの22行目から35行目に図示したコー
ドブロックである。
【0088】以下のコードリストは任意の再設定環境で
の上記指示の各々の使い方についての一例である。
【0089】
【表2】
【0090】9行目と19行目は別の再設定指示に遭遇
するまで有効になったままのreconfig指示を含んでい
る。任意の再設定では、指示はコードのどの点でも発生
することがあり、関数レベルの顆粒性に制限されない。
【0091】<コンパイルの方法>図7および図8を参
照すると、本実施の形態の発明による好ましいコンパイ
ル方法のフローチャートが図示してある。図7ではコン
パイラ・フロントエンドで実行するステップを図示して
あり、図8にはコンパイラ・バックエンドで実行するス
テップが図示してある。フロントエンドは再設定指示を
解釈してレジスタ転送レベル(RTL)ステートメント
を生成し、これをバックエンドが従来の方法で解釈す
る。従来技術で周知のように、RTLステートメントは
ISA非依存の中間レベルステートメントであり、従来
のコンパイラ、たとえばフリーソフトウェア・ファウン
デーション(Free Software Foundation:FSF, Cambridg
e, MA)で作成しているGNU・Cコンパイラ(GC
C)などで使用されている。RTLは、たとえばスタン
フォードSUIFコンパイラ・グループによる"SUIF: A
Parallelizing & Optimizing Research Compiler, Tec
h. Rep. CSL-TR-94-620, Computer Systems Lab, Stanf
ord University,May, 1994に開示されているスタンフォ
ード大学中間フォーマット(SUIF)仕様に準拠して
拡張できる。たとえば、ソースコード・ステートメン
ト: x = y+3 は次のようにRTLで表現することが出来る。
【0092】r1 <- y r0 <- r1 + 3 x <- r0 図7および図8の方法は高レベルソースコード命令ステ
ートメントのシーケンスを含み、また連続ステートメン
トを実行するISAを指定する少なくとも1つの再設定
指示を含むソースファイル401を入力として取る。図
示の目的で、再設定は関数ごとのレベルで行われる構造
化再設定環境を仮定している。コンパイラ402のフロ
ントエンドはソースファイル401から次の高レベルス
テートメントを選択し(600)、選択した高レベルス
テートメントが関数呼び出しを表わしているかどうか判
定する(601)。違う場合、コンパイラ402はその
ステートメントに対してRTLコードを放出する(60
3)。601でステートメントが関数呼び出しであると
コンパイラ402が判定した場合、コンパイラ402は
現在コンテクストにあるISAとは異なるISAで呼び
出された関数が動作するかどうか判定する(602)。
それ以外の場合、コンパイラ402は関数呼び出しに対
してと関数の戻り値を読み取る(613)ためにRTL
コードを放出する(605)。
【0093】602で別のISAで関数が動作するとコ
ンパイラ402が判定した場合、全ての有効レジスタを
保存し(607)、再設定を実行する(604)ことを
含め再設定に作用させるのに必要なRTLコードを放出
する。好ましい態様において、RTL再設定ステートメ
ントはISA識別を含む比標準のRTLステートメント
である。コンパイラ402は関数呼び出しについてのR
TLコードを放出する(606)。コンパイラ402は
この後有効レジスタを復元する(611)ためと関数戻
り値を読み取る(613)ために第1のISAに戻る再
設定についてのRTLコードを放出する(609)。
【0094】603または613が完了した時点で、別
の高レベルステートメントを考慮に入れる必要があるか
どうかコンパイラ402が判定する。必要があれば、コ
ンパイラ402は600に戻り、それ以外の場合には6
10へ進む。
【0095】図8をここで参照すると、コンパイラ40
2のバックエンドは610から622を実行してそれま
でに生成されたRTLステートメントをアセンブリ言語
に翻訳する。
【0096】次に現在考慮しているRTLステートメン
ト・グループ内部の次のRTLステートメントをコンパ
イラ402が選択する(612)。
【0097】コンパイラ402は、現在考慮しているR
TLステートメント・グループについて存在する現在の
RTLステートメント・グループを一組のアセンブリ言
語ステートメントに翻訳できる方法を指定する規則を取
り出す(618)。コンパイラ402は規則にしたがっ
て現在考慮しているRTLステートメント・グループに
対応するアセンブリ言語ステートメントの組を生成する
(620)。次のRTLステートメント・グループ内部
で別のRTLステートメントの考慮が必要かどうか、コ
ンパイラ402が判定する(622)。必要であればコ
ンパイラ402は612に戻る。それ以外では、コンパ
イラ402はレジスタ割り当て演算を実行する(61
0)。従来技術で周知のように、1つのISAから別の
ISAへと一貫したレジスタ・構造は絶対条件ではな
い。特に、幾つかの内側ループISAは標準レジスタ割
り当て演算が適用されない特別なレジスタを有すること
がある。しかし、一般に、外側ループISAは標準レジ
スタ割り当てを使用することが出来る。たとえば、上記
で示したRTLコードを以下のようなアセンブリ・コー
ドに翻訳できるが、アセンブリ・コードはISAごとに
異なる場合がある。
【0098】 ld y,r3 ld [r3], ro add 3, r0 st r0, [x] つまり、コンパイラ402はコンパイル動作中に複数の
ISAにしたがって自動的かつ選択的にアセンブリ言語
ステートメントを生成する。言い換えれば、コンパイル
処理中に、コンパイラ402は可変ISAにしたがって
ソースファイル401から単一のプログラム命令の組を
コンパイルする。コンパイラ402は図7および図8と
の関連で前述したような好ましいコンパイル動作を実行
するように変更した従来のコンパイラが好ましい。
【0099】もう一度図10を参照すると、アセンブラ
409はコンパイラ402が生成したアセンブリ言語ス
テートメントを取り出してオブジェクトファイル403
を作成するように動作する。コンパイラ402は、ビッ
トストリーム位置と64ビット、ビット整列アドレスを
取り扱えるソフトウェアリンカ404によってリンクさ
れ、実行ファイル405を作成する。ローダ407はビ
ットストリーム・セグメントを含む複数のオブジェクト
ファイル403からの同様のセグメントを、単一のメモ
リイメージに連結し、再設定可能な計算機10へ送信す
る。1つの態様において、このような連結はランタイム
時に行われている。別の態様ではオフラインで行ってい
る。ソフトウェアリンカ404が実行ファイル405に
対してメモリ整列を実行してFPGAビットストリーム
の整列要求を考慮することが出来る場合には有利であ
る。ある種のFPGAローディング・ハードウェアは一
定サイズのビットストリームを要求する。そのためリン
カはこのようなハードウェアの要求に適合させるためビ
ットストリームをパディングしてメモリ整列を実行でき
る。
【0100】スタティック・リンクを使用する場合、I
SAビットストリーム406と実行ファイル405はリ
ンク時にソフトウェアリンカ404によって連結され
る。ダイナミック・リンクを用いる場合、ISAビット
ストリーム406と実行ファイル405はロード時に結
合され、実行ファイル405とISAビットストリーム
406はネットワーク接続408経由で再設定可能な計
算機10上で実行中のローダ407へ送信されることに
なる。
【0101】図9をここで参照すると、本実施の形態の
発明の1つの態様にしたがってアセンブリ言語コードを
生成する際に実行される追加ステップのフローチャート
が図示してある。このフローチャートはRTLコードが
再設定可能な計算機について機械で読み取り可能なコー
ドに変換される場合に生成される中間ファイルを詳細に
示している。RTLコードはコード内の各RTLステー
トメントについてどのISAがコンテクストに入ってい
るかを表わすようにコメントが付けられる(331)。
RTLステートメントはこの段階では変更されない。コ
ードは最適化ユティリティによりISA依存とISA非
依存の方法で最適化される(332)。最適化ユティリ
ティはISA依存の最適化を実行するが、出力はマシン
非依存のコードを使用している。つまり出力は必ずしも
最適化されていないがどのISAでも実行できる。最後
に、マシン依存命令がアセンブラ409によって最適化
したコードから生成される(333)。このコードは抽
象化したレジスタやその他のマシン依存の特徴を使用す
る。リンクやその他のマイナーステップの追加クリーン
アップをここで実行することが出来る。
【0102】本実施の形態の発明の好ましい態様におい
て、ISAはSマシンFPGA12のFPGAに命令の
引数で参照されるビットストリームをロードさせるreco
nfig命令を含む。つまり各ISAは、ISAのreconfig
命令へ引数として使用されるビットストリーム・アドレ
スの再配置に関連した少なくとも1つの再配置型を有し
ている。オブジェクトファイルの再配置エントリはリン
カに対して、実体の実アドレスをリンク時に実行ファイ
ルのセグメントへ代入するように伝える。再配置型につ
いてはさらに詳細に後述する。
【0103】後述するように、ビットストリームは特定
の、恐らく読み取り専用のセクションに配置されたデー
タオブジェクトとして定義されるので、標準的再配置技
術が何らかのプログラム定義される読み取り専用データ
と同様の方法でISAreconfig命令で使用されるビット
ストリーム・アドレスの再配置を提供することが出来
る。
【0104】再設定可能な計算機10は「スケーラブル
・パラレル・動的再設定可能な計算システムおよびその
方法」と題する関連米国特許出願に記載されているよう
にローダからの結果を実行する。さらに詳しく説明する
と、再設定可能な計算機10はreconfig命令を認識して
当該命令への引数に指定されている通りに適切なISA
ビットストリームをロードする。
【0105】<プログラム状態の保存>新規のISAを
ロードすることによるFPGA再設定では内部ハードウ
ェア状態情報が失われることになる。結果的に、本実施
の形態の発明のシステムおよび方法は再設定中にプログ
ラム状態を保存して当該ハードウェアの移行中に実行ス
レッドの損失を回避する。
【0106】再設定中に、再設定可能な計算機10は、
新規のISAがロードされた後で必要になるあらゆるデ
ータを格納するのに呼び出しスタックを使用するのが望
ましい。このような格納は呼び出しスタックへ値をプッ
シュして再設定により影響を受けない所定のメモリ位置
にスタックポインタを格納することで実現する。再設定
に続けて、再設定可能な計算機10はスタックポインタ
を使用してあらかじめ格納してあった値を呼び出しスタ
ックからポップする。
【0107】スタックは再帰をサポートする高レベル言
語たとえばC/C++、Lisp、PASCALなどで
コンパイルした機械語プログラムを実行するランタイム
環境で周知である。スタックはメモリ領域に実現されス
タックポインタ(SP)をISAで用いることでスタッ
ク先頭のアドレスを保持する。値、たとえばプログラム
・データやアドレスは、SPをデクリメントして値をS
Pに含まれるアドレスへ書き込むことによりスタック内
に格納される(またはスタックへ「プッシュ」され
る)。値は、SPレジスタに含まれるアドレスから値を
読み出して、SPをインクリメントすることによりスタ
ックから取り出される(またはスタックから「ポップ」
される)。
【0108】本実施の形態の発明において、プログラム
の動的な状態、たとえば変数等と、代表的には次命令ポ
インタ・アドレスレジスタ(NIPAR)またはプログ
ラムカウンタ(PC)に格納されるハードウェアが実行
する次の命令の位置は、ハードウェアの再設定前にスタ
ックに格納される。SPは所定のメモリアドレスへ保存
される。つまりSPとNIPARの値はハードウェアの
再設定を通して保存され、後に実行を再開した時点で取
り出すことが出来る。
【0109】ここで図11を参照すると、本実施の形態
の発明によりプログラム状態を保存する方法のフローチ
ャートが図示してある。新規のISA設定を表わすビッ
トストリームをプロセッサ・ハードウェアにロードすべ
きであることを示すreconfig命令を受信する(65
1)。reconfig命令の引数は、ロードすべきISA設定
を保持している物理メモリのアドレスである。
【0110】SPをデクリメントし(652)、NIP
ARをSPで示されたアドレスにロードする(65
3)、つまりNIPARをスタックにプッシュする。S
Pは新規のISA設定に既知となっているメモリ内の所
定アドレスに保存する(654)。FPGA12にビッ
トストリーム・メモリ132の位置からISAビットス
トリームを読み込ませることによってハードウェアに新
規のISA設定をロードする(655)。新規設定をロ
ードしたら、分かっている所定のアドレスからSPをロ
ードして(656)次にSPに格納されているメモリ位
置からNIPARを取り出すことでスタックからロード
し(657)、SPをインクリメントする(658)。
図11の再設定動作中のスタック内容の一例を、図13
(a)、図13(b)、図13(c)との関連で後述す
る。
【0111】<構造化再設定の実装>本実施の形態の発
明の1つの態様において、構造化再設定はソースコード
からreconfigステートメントをアセンブリ言語命令のシ
ーケンスにコンパイルすることによって実現する。すで
に説明したように、構造化再設定において、再設定指示
は関数を呼び出すかまたは関数から戻る場合にだけ許容
されるので、各々の関数には関数の実行中にコンテクス
トに組み込まれるべき単一のISAをラベル付けする。
ここで図12を参照すると、本実施の形態の発明の1つ
の態様による構造化再設定を実装する方法のフローチャ
ートが図示してある。
【0112】図12の方法は呼び出し関数がISA再設
定命令を有し呼び出される側の関数を起動する場合に使
用される。SマシンFPGA12は有効レジスタ値を保
存しておき(707)、再設定の結果として失われない
ようにする。SマシンFPGA12は現在のISAを用
いて呼び出された関数へのパラメータをスタックにプッ
シュするが(701)、これはパラメータがレジスタに
常駐し得るためである。SマシンFPGA12が新規I
SAに再設定して(702)、宛先関数のISAの命令
たとえばjsrを使用する関数を表わすサブルーチンを
呼び出す(703)。呼び出された関数が実行を完了す
ると戻り命令たとえばretで呼び出し側へフローを返
す(704)。Sマシン12は呼び出した関数について
本来のISAを認識し(705)、呼び出された関数の
戻り値を読み取り(706)、有効なレジスタの値を復
旧する(708)。図12のスタックパラメータを渡し
値を返す技術はパラメータまたは戻り値をレジスタに渡
さないような再設定不可能な計算機で使用されるような
従来の方法で実現することが出来る。
【0113】以下は構造化再設定を実装するためのコー
ドの一例である。
【0114】 2つの関数が図示してある:ISA0を使用するmainは、汎
用命令セット、またfunc1はanother_isaで指定された別
の命令を使用する。#pragmaステートメントは2つの関
数についての命令セットを指定する。
【0115】構造化再設定を使用する本実施の形態の発
明の1つの態様において、コンパイラ402は上記のリ
ストの関数コールbar = func1(&foo)を次のようなアセ
ンブリコードにコンパイルする。図示の目的でコメント
を追加してある。
【0116】 1 ;SPをデクリメントして戻り値の場所を作る 2 eldi 16, aO 3 esub a0,sp 4 ;引数fooのアドレスを計算 5 emov sp, al 6 dadd a0, al 7 ;スタックにプッシュする 8 eatr al,sp 9 ;再設定 10 reconfig another_isa 11 ;サブルーチン呼び出し 12 jsr funcl 13 ;isa0再設定 14 reconfig isa0 15 ;プッシュしたパラメータをクリアする 16 eldf d0 17 ;レジスタ変数barに結果を読み込む 18 ldf d0 さらに、有効レジスタ値を保存し復元するためのアセン
ブリコードは1行目の前と18行目の後に各々追加でき
る。
【0117】図13(a)、図13(b)、図13
(c)も参照すると、このアセンブリコードの実行時の
様々な点でのスタック内容の略図が図示してある。図1
3(a)は上記のアセンブリコードの1行目から8行目
の実行後のスタック800の状態を示す。これらの行は
func1で使用するスタックフレームを構築する。第1
に、戻り値を格納するための場所を作り、次に変数foo
のアドレスをスタックにプッシュする。位置801は関
数mainのためのスタックフレームに変数fooを含む。こ
の例では、変数barがISA0レジスタに格納されるので、
スタック800には出現しない。位置802は戻り値の
ために割り当てられ、位置803は変数fooのアドレス
を含む。
【0118】図13(b)は10行目でreconfig命令の
実行途中におけるスタック800の状態を示す。図11
も参照すると、このスタック800の状態はステップ6
54の終りに相当し、新しい設定をロードする直前であ
る。次の命令の現在アドレス(NIPAR)は位置80
4でスタック800にプッシュされており、スタックポ
インタSPは所定のアドレスに(図示していない)書き
込まれている。この時点で、ステップ655から658
が実行される、即ちここで前述のように、ハードウェア
が再設定され、スタックポインタがロードされ、NIP
ARがポップされる。
【0119】図13(c)は12行目でjsr func1関数
を用いるfunc1へのエントリ時におけるスタック800
の状態を示している。位置804はここでは戻りアドレ
スを格納している。func1から戻る場合、再設定可能な
計算機10はISA0に設定を戻し、パラメータ&fooがス
タックから除去され、コンパイラ402がレジスタd0に
割り当てた変数barへ戻り値が読み込まれる。
【0120】<実行形式とリンキングのフォーマット>
本実施の形態の発明の好ましい態様は標準的なソフトウ
ェア開発パラダイムを拡張して実行形式ファイル405
からバイナリ機械語命令を実行するFPGA実装計算機
を指定するハードウェア設定を定義するビットストリー
ムを含むようにする。これは、unixワークステーション
で一般的に使用され本明細書の参照に含めてあるユニッ
クス・システムラボラトリーズ社のSystem V Applicati
on Binary Interface第3版、1993年に記載されて
いる実行形式およびリンキング・フォーマット(Execut
able and Linking Format: ELF)の拡張を含むIC
ARUS ELFと呼ばれる新規のファイルフォーマッ
トを用いて実現する。
【0121】ユニックス・システムラボラトリーズ社の
System V Application Binary Interface第3版、19
93年に記載されているように、ELFファイルはリロ
ケータブル・ファイル(オブジェクトファイル403)
または実行形式ファイル405のどちらかである。EL
Fはファイル内容の並列的なビューを提供し、これら2
種類のフォーマットの異なる必要性を反映している。こ
こで図14を参照すると、従来技術によるリンキング・
ビュー501と実行ビュー502で代表的なELFファ
イルフォーマットが図示してある。ELFヘッダ503
はファイル構造を記述した「ロードマップ」を保持して
いる。セクション505はさらに詳細には後述するよう
に命令、データ、シンボル・テーブル、再配置情報など
のリンキング・ビュー501でオブジェクトファイル情
報の本体を保持している。実行ビュー502で使用され
るセグメント507はセクション505と類似してお
り、各々のセグメント507は、1つまたはそれ以上の
セクション505と対応している。また、各々のセグメ
ント507には、セグメント507が書込可能なメモリ
にあるかといった、セクション505に適用可能もしく
は不可能な情報を含むヘッダを含むことが出来る。一般
に、セクション505はリンク中に使用される情報を含
み、セグメント507はロード中に使用される情報を含
む。
【0122】プログラムヘッダ・テーブル504は存在
する場合には再設定可能な計算機10に対してどのよう
に処理イメージを構築するかを伝える。セクションヘッ
ダ・テーブル506はセクション505を記述する情報
を含む。各セクション505はテーブル506にエント
リを有し、各々のエントリはたとえばセクション名、サ
イズ、その他の情報を付与する。図14に図示した要素
はどのような順番で提供しても良く、幾つかの要素を除
去しても良い。
【0123】図14に図示した要素に関するさらなる詳
細はユニックス・システムラボラトリーズ社System V A
pplication Binary Interface第3版、1993年に見
ることが出来る。以下の説明ではSystem V Application
Binary Interfaceに説明されているような標準的EL
Fと、本実施の形態の発明で使用されるICARUS ELFファ
イルフォーマットの相違を説明する。
【0124】ICARUS ELFファイルフォーマットはELF
のプロセッサに依存する特徴を用いてプログラム・テキ
スト内部で使用されるビットストリーム・アドレスの再
配置を提供し、また専用ビットストリーム・メモリ13
2内部にランタイム時にロードすることの出来るセグメ
ントへのビットストリーム再配置およびリンキングを提
供する。ICARUS ELFは標準ELFを拡張して、FPGA
で定義されたハードウェア状で実行する実行可能コード
と一緒に、FPGA設定を定義するビットストリームの
格納を支援する。
【0125】ICARUS ELFは新規のデータ種別、セクショ
ン、シンボル種別、およびISAビットストリームの再
配置種別を提供することにより標準ELFに追加する。
【0126】〔データ種別〕好ましい態様において、再
設定可能な計算機は64ビット幅のビット・アドレスを
使用する。アドレスはデータ項目の最下位ビットのビッ
トオフセットを指す。ICARUS ELFは64ビット・バイト
アドレス用に設計されており、アドレスは各データ項目
の第1バイトを指す(リトルエンディアン・プロセッサ
では最下位、ビッグエンディアン・プロセッサでは最上
位)。つまり、ヘッダのオフセットはバイトに関して定
義されているが、再配置すべきアドレスは64ビットの
ビット・アドレスで指定される。これによりバイト指向
計算機でリンカを使用できる。ICARUS ELFでは2種類の
新規データ種別を使用して64ビット・アドレシングを
容易にしている。
【0127】・ICARUS_ELF_Addr: サイズ8バイト、現
在のISAについてKisaでアライメントが決定され、
これでメモリのビット幅の2を底とする対数を表わす
(たとえば8ビットで3,16ビットで4) ・ICARUS_ELF_Off: ファイルへのバイト・オフセット、
サイズは4バイト、アライメント1バイト。
【0128】〔セクション〕本実施の形態の発明の1つ
の態様では名称.ICARUS.bitstreamのFPGAビットス
トリームデータを含む新規セクションを追加する。1つ
またはそれ以上のこのようなセクションを提供しても良
い。好ましい態様において、各々のこのようなセクショ
ンはELFセクション種別SHT_PROGBITSでELFセクシ
ョン属性SHF_ALLOCを有する。SHT_PROGBITSはプログラ
ムによって定義された情報を保持するセクションを表わ
し、これのフォーマットと意味はプログラムだけで決定
される。属性SHF_ALLOCは、このセクションが処理実行
中にメモリを占有することを指定し、これはローダで有
用な情報である。
【0129】ELFでは特定の名前であるセクションの
複数インスタンスが許容されるので、本実施の形態の発
明ではビットストリームごとに1つのセクションを使用
するすることができ、またはこれに代わって正確なアラ
イメントで全てのビットストリームを1つのセクション
にマージすることが出来る。
【0130】ビットストリームに対して新規のセクショ
ンを提供しハードウェアがビットストリームのための特
別なメモリ領域で構築できるようにするのが有利であ
る。別々のセクションにより、これらの特別なメモリ領
域へローダによるビットストリームの配置が容易にな
る。このようなメモリ領域が必要とされない場合、本実
施の形態の発明は、特別なビットストリーム・セクショ
ンを導入するのではなく、たとえばSystem V Applicati
on Binary Interfaceに記載されているように、.rodata
や、.rodata1等プログラムの読み取り専用データに標準
のデータセクションを使用して実施できる。
【0131】〔シンボル〕オブジェクトファイルはプロ
グラムのシンボル定義と参照を検索して再配置するため
の情報を保持するシンボル・テーブルを含む。本実施の
形態の発明の1つの態様において、.ICARUS.bitstream
セクションに含まれる各々のビットストリームはオブジ
ェクトファイルのシンボルテーブルにエントリを有して
いる。図14のリンキング・ビューにおいて、シンボル
テーブルは別個のセクション505に配置されている。
シンボルは次の属性を有する: ・st_name:シンボル名称はオブジェクトファイル用に
アセンブリ言語ソースでこれを参照するために使用され
る名称である。st_nameはシンボル名の文字表現を保持
するオブジェクトファイルのシンボル文字列テーブルへ
のインデックスを保持している。
【0132】・st_value:ビットストリーム・シンボル
について、セクション内部のビットストリームのオフセ
ットを提供する。
【0133】・st_size:ビットストリームのビットで
表わしたサイズ。
【0134】・st_info:種別とバインディング属性を
指定する。STT_BITSTREAMと標記される新規種別を用い
る。この新規種別は本実施の形態の発明に特有のもの
で、このシンボルがFPGAビットストリームであるこ
とを意味する。バインディングはリンクの視認性と動作
を決定し、STB_LOCALまたはSTB_GLOBALとすることが出
来る。STB_LOCALはシンボルがシンボルの定義を含むオ
ブジェクトファイルの外部からは見えないことを表わ
す。STB_GLOBALはシンボルが結合されるオブジェクトフ
ァイル全部に見えることを表わす。ビットストリーム・
シンボルについて、バインディングはSTB_LOCALまたはS
TB_GLOBALのどちらかである。ビットストリームは通常
1つ以上のコードセクションで使用され、そのため再利
用のためにライブラリへコンパイルされることがあるこ
とから、STB_GLOBALを使用する方が良い。
【0135】〔再配置〕再配置はシンボル参照とシンボ
ル定義とを連結する処理である。再配置可能なファイル
は特定のシンボル定義が発見できる場所を記述するデー
タである再配置を含み、リンカが定義を検索できるよう
になる。特定の再配置演算は標準ELFファイルと同様
に、ISA毎に異なる。再配置種別はICARUS_ELF_RELお
よびICARUS_ELF_RELA構造のr_INFOフィールド内部に格
納されている。このような再配置種別の例として次のよ
うなものが挙げられる: ・ICARUS_64_BIT_ADDR:アセンブリの時点で決定される
64ビット・アドレス。代表的にはeldi命令でプロセッ
サにロードされる。
【0136】・ICARUS_64_BIT_OFFSET:現在のNIPA
R位置から、代表的にはラベルであるシンボルまでの相
対アドレス・オフセット。br(分岐)命令で使用する。
【0137】以上から、本実施の形態の発明によれば、
上記のICARUS ELFオブジェクト・ファイルフォーマット
はソフトウェア・リンキング技術の新規利用によって、
前述のように再設定可能な計算機10を用いてプログラ
ムが実行されるハードウェア設定と一緒にコンピュータ
プログラムをカプセル化することが出来る。本実施の形
態の発明のシステムおよび方法は単一のソースファイル
内部で複数ISAに対してコンパイルを実行でき、1つ
の態様では、機械語命令を実行するのに必要とされるハ
ードウェア設定と一緒に、機械語命令とデータをカプセ
ル化することが出来る。
【0138】
【発明の効果】本発明は、上述のように構成したので、
各々のハードウェア構造がこれに対応する命令セットか
らの命令を実行するような複数のハードウェア構造の中
から選択的に変更可能な内部ハードウェア構造を有する
動的に再設定可能な処理ユニットで使用するプログラム
命令のシーケンスを生成することができる。たとえば、
Cまたはパスカルで書かれたソースコードをコンパイル
して、選択的に交換可能な内部ハードウェア構造を有す
る動的に再設定可能な処理ユニットで使用する実行ファ
イルを生成するためのシステムを提供することができ
る。
【図面の簡単な説明】
【図1】本発明の実施の形態を示す動的に再設定可能な
計算構造のハードウェア要素のブロック図である。
【図2】プロセッサ・モジュールのブロック図である。
【図3】FPGAの再設定の一例を示すシステム構造の
ブロック図である。
【図4】FPGAの再設定の一例を示すシステム構造の
ブロック図である。
【図5】再設定命令を含むプログラム・リストの一例を
示す模式図である。
【図6】動的に再設定可能な計算環境のためのコンパイ
ラで実行されるコンパイル方法全体のフローチャートで
ある。
【図7】動的に再設定可能な計算環境のためのコンパイ
ラで実行される好ましいコンパイル動作のフローチャー
トである。
【図8】図7のAに続くコンパイル動作のフローチャー
トである。
【図9】動的に再設定可能な計算環境のためのコンパイ
ラで実行される追加のコンパイル動作のフローチャート
である。
【図10】コンパイルシステムのブロック図である。
【図11】プログラム状態を保存する方法のフローチャ
ートである。
【図12】構造化再設定の方法のフローチャートであ
る。
【図13】構造化再設定中のスタック内容を示す模式図
である。
【図14】従来技術によるオブジェクトファイル・フォ
ーマットの模式図である。
【符号の説明】
401 ソースファイル 402 コンパイラ 403 オブジェクトファイル 404 リンカ 405 実行形式ファイル 406 ビットストリーム
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル バクスター アメリカ合衆国 カリフォルニア州 メン ロー パークスイート 115 サンド ヒ ル ロード 2882 リコー コーポレーシ ョン カリフォルニア リサーチ センタ 内

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 各々が対応する命令セットからの命令を
    実行するような複数のハードウェア構造の中からプログ
    ラム命令のシーケンスの実行中に選択的に変更可能な内
    部ハードウェア構造を有する動的に再設定可能な処理ユ
    ニットで使用するプログラム命令のシーケンスを生成す
    るためのコンパイルシステムであって、 少なくとも第1の命令ステートメントのサブセットと、
    第2の命令ステートメントのサブセットと、各々の命令
    ステートメントのサブセットについて前記ハードウェア
    構造の1つを指定する再設定指示とを含む複数のソース
    コード命令ステートメントを含むソースファイルを入力
    する入力デバイスと、 前記入力デバイスからの各ソースファイルを受け入れる
    ように結合され、各々の再設定指示によって指定された
    前記ハードウェア構造に対応する前記命令セットを指定
    することによって各々の入力ソースファイルをコンパイ
    ルしてオブジェクトファイルを作成し、各々の識別され
    た命令セットを用いて実行用に前記入力ソースファイル
    の少なくとも一部をコンパイルし、各々の再設定指示に
    対応する再設定コードを生成するためのコンパイラと、
    を含むコンパイルシステム。
  2. 【請求項2】 各々のオブジェクトファイルを受け入れ
    るように結合され、前記オブジェクトファイルを結合し
    て、各々の再設定指示について前記再設定指示で指定さ
    れた前記ハードウェア構造を記述するビットストリーム
    への参照と前記記述されたハードウェア構造についての
    プログラム命令のシーケンスとを含む実行形式ファイル
    を生成するためのリンカをさらに含む請求項1記載のコ
    ンパイルシステム。
  3. 【請求項3】 各々のオブジェクトファイルを受け入れ
    るように結合され、前記オブジェクトファイルを結合し
    て、各々の再設定指示について前記再設定指示によって
    指定された前記ハードウェア構造を記述するビットスト
    リームと前記記述されたハードウェア構造についてのプ
    ログラム命令のシーケンスとを含む実行形式ファイルを
    生成するためのリンカをさらに含む請求項1記載のコン
    パイルシステム。
  4. 【請求項4】 動的に再設定可能な処理ユニットで使用
    するためのプログラム命令のシーケンスを生成するため
    にコンピュータで読み取り可能なコードが表わされてい
    るコンピュータで使用可能な媒体を含むコンピュータプ
    ログラム製品であって、 少なくとも命令ステートメントの第1のサブセットと命
    令ステートメントの第2のサブセットとを含む複数のソ
    ースコード命令ステートメントを含むソースファイルを
    入力として受け入れるように設定されたコンピュータで
    読み取り可能なプログラムコード・デバイスと、 前記命令ステートメントの第1のサブセットについて第
    1の命令セットを識別するように設定されたコンピュー
    タで読み取り可能なプログラムコード・デバイスと、 前記命令ステートメントの第2のサブセットについて第
    2の命令セットを識別するように設定されたコンピュー
    タで読み取り可能なプログラムコード・デバイスと、 前記第1の命令セットを用いて実行用に前記命令ステー
    トメントの第1のサブセットをコンパイルし、前記第2
    の命令セットを用いて実行用に前記命令ステートメント
    の第2のサブセットをコンパイルするように設定された
    コンピュータで読み取り可能なプログラムコード・デバ
    イスと、を含むコンピュータプログラム製品。
  5. 【請求項5】 前記コンパイルしたステートメントを含
    み、命令ステートメントの各々のサブセットについて前
    記命令ステートメントのサブセットに対応する前記命令
    セットを識別する再設定コードをさらに含む実行可能形
    式ファイルを生成するように設定されたコンピュータで
    読み取り可能なプログラムコード・デバイスをさらに含
    む請求項4に記載のコンピュータプログラム製品。
  6. 【請求項6】 前記コンパイルしたステートメントを含
    み、命令ステートメントの各々のサブセットについて前
    記命令ステートメントのサブセットに対応する前記命令
    セットを表わすビットステートメントを指定する参照を
    さらに含む実行可能形式ファイルを生成するように設定
    されたコンピュータで読み取り可能なプログラムコード
    ・デバイスをさらに含む請求項4記載のコンピュータプ
    ログラム製品。
  7. 【請求項7】 前記コンパイルしたステートメントを含
    み、命令ステートメントの各々のサブセットについて、
    拡張された実行形式およびリンキング・フォーマットに
    したがって符号化された参照をさらに含み、前記参照で
    前記命令ステートメントのサブセットに対応する前記命
    令セットを表わすビットストリームを指定する実行形式
    ファイルを生成するように設定されたコンピュータで読
    み取り可能なプログラムコード・デバイスをさらに含む
    請求項4記載のコンピュータプログラム製品。
  8. 【請求項8】 前記コンパイルしたステートメントを含
    み、命令ステートメントの各々のサブセットについて、
    前記命令ステートメントのサブセットに対応する前記命
    令セットを表わすビットストリームをさらに含む実行形
    式ファイルを生成するように設定されたコンピュータで
    読み取り可能なプログラムコード・デバイスをさらに含
    む請求項4記載のコンピュータプログラム製品。
  9. 【請求項9】 前記コンパイルしたステートメントを含
    み、命令ステートメントの各々のサブセットについて、
    前記命令ステートメントのサブセットに対応する前記命
    令セットを識別する再設定コードをさらに含む第1のオ
    ブジェクトファイルを生成するように設定されたコンピ
    ュータで読み取り可能なプログラムコード・デバイスを
    さらに含む請求項4記載のコンピュータプログラム製
    品。
  10. 【請求項10】 前記生成した実行形式ファイルに対し
    てアライメント条件にしたがってメモリ・アライメント
    を実行するように設定されたコンピュータで読み取り可
    能なプログラムコード・デバイスをさらに含む請求項9
    記載のコンピュータプログラム製品。
JP10097703A 1997-04-09 1998-04-09 コンパイルシステム及びコンピュータプログラム製品 Pending JPH10320214A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/827,619 1997-04-09
US08/827,619 US5933642A (en) 1995-04-17 1997-04-09 Compiling system and method for reconfigurable computing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005365548A Division JP4050764B2 (ja) 1997-04-09 2005-12-19 コンパイルシステム

Publications (1)

Publication Number Publication Date
JPH10320214A true JPH10320214A (ja) 1998-12-04

Family

ID=25249685

Family Applications (2)

Application Number Title Priority Date Filing Date
JP10097703A Pending JPH10320214A (ja) 1997-04-09 1998-04-09 コンパイルシステム及びコンピュータプログラム製品
JP2005365548A Expired - Fee Related JP4050764B2 (ja) 1997-04-09 2005-12-19 コンパイルシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2005365548A Expired - Fee Related JP4050764B2 (ja) 1997-04-09 2005-12-19 コンパイルシステム

Country Status (3)

Country Link
US (1) US5933642A (ja)
JP (2) JPH10320214A (ja)
DE (1) DE19815865B4 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002537599A (ja) * 1999-02-15 2002-11-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 構成可能な機能ユニットを備えるデータプロセッサ及びそのようなデータプロセッサを使用する方法
JP2008052750A (ja) * 2005-04-12 2008-03-06 Matsushita Electric Ind Co Ltd プロセッサ
JP2010146577A (ja) * 2002-10-31 2010-07-01 Src Computers Inc 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス
JP2012509537A (ja) * 2008-11-21 2012-04-19 コリア ユニバーシティ インダストリアル アンド アカデミック コラボレイション ファウンデーション 高水準言語コードをhdlコードに変換する方法及びシステム
JP2013543616A (ja) * 2010-09-27 2013-12-05 サムスン エレクトロニクス カンパニー リミテッド Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置

Families Citing this family (133)

* 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.)
DE19654846A1 (de) 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (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
DE19915135A1 (de) * 1998-03-27 1999-11-04 Nec Corp Verfahren zur Erzeugung einer Verknüpfungshinweis-Datei und Tool/Instrument dafür
US6334207B1 (en) * 1998-03-30 2001-12-25 Lsi Logic Corporation Method for designing application specific integrated circuits
US6275927B2 (en) 1998-09-21 2001-08-14 Advanced Micro Devices. Compressing variable-length instruction prefix bytes
US6253309B1 (en) 1998-09-21 2001-06-26 Advanced Micro Devices, Inc. Forcing regularity into a CISC instruction set by padding instructions
EP0990985A3 (de) 1998-09-30 2005-12-28 Infineon Technologies AG Verfahren zum Betrieb eines Netzcomputers
US6339822B1 (en) 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6240506B1 (en) * 1998-10-02 2001-05-29 Advanced Micro Devices, Inc. Expanding instructions with variable-length operands to a fixed length
US6314557B1 (en) * 1998-12-14 2001-11-06 Infineon Technologies Development Center Tel Aviv Ltd Hybrid computer programming environment
US6356950B1 (en) * 1999-01-11 2002-03-12 Novilit, Inc. Method for encoding and decoding data according to a protocol specification
US7353163B2 (en) * 1999-04-27 2008-04-01 Transitive Limited Exception handling method and apparatus for use in program code conversion
EP1228440B1 (de) 1999-06-10 2017-04-05 PACT XPP Technologies AG Sequenz-partitionierung auf zellstrukturen
US6578194B1 (en) * 1999-09-08 2003-06-10 International Business Machines Corporation System and method using extended relocation types and operations in relocating operations
US6662302B1 (en) * 1999-09-29 2003-12-09 Conexant Systems, Inc. Method and apparatus of selecting one of a plurality of predetermined configurations using only necessary bus widths based on power consumption analysis for programmable logic device
US7114062B2 (en) * 1999-12-31 2006-09-26 Johnson Luther A Processor which accelerates execution of binary programs intended for execution on a conventional processor core, using a reconfigurable combinational logic array, a function lookup unit, and a compatible conventional processor core, without requiring recompilation
EP1306751A4 (en) * 2000-06-06 2009-05-06 Tadahiro Ohmi SYSTEM AND METHOD FOR MANAGING VARIABLE FUNCTION INFORMATION PROCESSING CIRCUITS
US7340596B1 (en) * 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
ATE476700T1 (de) 2000-06-13 2010-08-15 Richter Thomas Pipeline ct-protokolle und -kommunikation
US6988263B1 (en) 2000-07-10 2006-01-17 International Business Machines Corporation Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
US6708169B1 (en) * 2000-07-10 2004-03-16 International Business Machines Corporation Apparatus and method for generating a merged symbol file for verifying symbolic data
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6959378B2 (en) * 2000-11-06 2005-10-25 Broadcom Corporation Reconfigurable processing system and method
US20020083421A1 (en) * 2000-12-22 2002-06-27 Hitachi America, Ltd. Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US6725364B1 (en) * 2001-03-08 2004-04-20 Xilinx, Inc. Configurable processor system
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
JP3561506B2 (ja) * 2001-05-10 2004-09-02 東京エレクトロンデバイス株式会社 演算システム
JP2004533691A (ja) 2001-06-20 2004-11-04 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データを処理するための方法
US10031733B2 (en) * 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
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
US6941548B2 (en) * 2001-10-16 2005-09-06 Tensilica, Inc. Automatic instruction set architecture generation
KR100461535B1 (ko) * 2001-11-02 2004-12-14 한국전자통신연구원 내장형 시스템을 위한 점진적 원격 로딩 장치 및 그 방법
US20030093433A1 (en) * 2001-11-14 2003-05-15 Exegesys, Inc. Method and system for software application development and customizible runtime environment
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) * 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational 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
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
US6988192B2 (en) * 2002-02-11 2006-01-17 Hewlett-Packard Development Company, L.P. Method and apparatus for compiling source code to configure hardware
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
WO2003081454A2 (de) * 2002-03-21 2003-10-02 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7024664B2 (en) * 2002-04-22 2006-04-04 Intel Corporation Symbolic assembly language
US6732354B2 (en) * 2002-04-23 2004-05-04 Quicksilver Technology, Inc. Method, system and software for programming reconfigurable hardware
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 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
US7444495B1 (en) * 2002-08-30 2008-10-28 Hewlett-Packard Development Company, L.P. Processor and programmable logic computing arrangement
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
JP2005018626A (ja) * 2003-06-27 2005-01-20 Ip Flex Kk 並列処理システムの生成方法
KR20070097051A (ko) * 2004-11-30 2007-10-02 동경 엘렉트론 주식회사 동적으로 재구성 가능한 프로세서
DE102005010476A1 (de) * 2005-03-04 2006-09-07 Daimlerchrysler Ag Steuergerät mit konfigurierbaren Hardwaremodulen
WO2006114642A1 (en) * 2005-04-28 2006-11-02 The University Court Of The University Of Edinburgh Reconfigurable instruction cell array
DE102005044728A1 (de) * 2005-09-19 2007-03-29 Silicon Software Gmbh Programmierung und Layoutdesign von Hardware
US7926046B2 (en) * 2005-12-13 2011-04-12 Soorgoli Ashok Halambi Compiler method for extracting and accelerator template program
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US7757224B2 (en) * 2006-02-02 2010-07-13 Microsoft Corporation Software support for dynamically extensible processors
US7827537B2 (en) * 2006-05-26 2010-11-02 Oracle America, Inc Searching computer programs that use different semantics
US20070283336A1 (en) * 2006-06-01 2007-12-06 Michael Karl Gschwind System and method for just-in-time compilation in a heterogeneous processing environment
US8209662B2 (en) 2006-12-04 2012-06-26 Microsoft Corporation Application retargeting
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
JP5175524B2 (ja) * 2007-11-13 2013-04-03 株式会社日立製作所 コンパイラ
US8752056B2 (en) * 2007-12-03 2014-06-10 International Business Machines Corporation Running native code across single or multi-core hybrid processor achitecture
US8621447B1 (en) * 2009-08-25 2013-12-31 Adobe Systems Incorporated Systems and methods for dynamic struct variable creation including inline declaration with dynamic keys
CN101697131B (zh) * 2009-11-04 2013-07-03 中兴通讯股份有限公司 一种可重定位文件动态加载的方法及装置
US20110113409A1 (en) * 2009-11-10 2011-05-12 Rodrick Evans Symbol capabilities support within elf
JP5990466B2 (ja) 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US8719808B1 (en) * 2010-01-27 2014-05-06 Altera Corporation Method and apparatus for using object files to provide reliable program operation
US20110246966A1 (en) * 2010-04-06 2011-10-06 Sony Computer Entertainment America Inc. Embedding source files into program symbol files
US8473911B1 (en) 2010-07-23 2013-06-25 Xilinx, Inc. Documentation generation from a computer readable symbolic representation
US9201754B2 (en) * 2011-01-19 2015-12-01 Red Hat, Inc. Recording application consumption details
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US20150378698A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Integrated compilation modes for data flow code generation
US9183020B1 (en) 2014-11-10 2015-11-10 Xamarin Inc. Multi-sized data types for managed code
JP6313237B2 (ja) 2015-02-04 2018-04-18 東芝メモリ株式会社 ストレージシステム
US9213638B1 (en) 2015-03-24 2015-12-15 Xamarin Inc. Runtime memory management using multiple memory managers
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10409599B2 (en) * 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10169044B2 (en) * 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10713213B2 (en) * 2016-12-21 2020-07-14 Intel Corporation Systems and methods for multi-architecture computing
US10684984B2 (en) 2016-12-21 2020-06-16 Intel Corporation Computing devices and server systems with processing cores having different instruction set architectures
US10540186B1 (en) 2017-04-18 2020-01-21 Amazon Technologies, Inc. Interception of identifier from client configurable hardware logic
US11275709B2 (en) 2017-05-02 2022-03-15 Intel Corporation Systems and methods for multi-architecture computing
JP7245833B2 (ja) * 2017-08-03 2023-03-24 ネクスト シリコン リミテッド 構成可能なハードウェアの実行時の最適化
US10817344B2 (en) 2017-09-13 2020-10-27 Next Silicon Ltd Directed and interconnected grid dataflow architecture
FR3074931B1 (fr) * 2017-12-13 2020-01-03 Vsora Architectures de processeur
US10892952B2 (en) 2019-02-21 2021-01-12 Juniper Networks, Inc. Supporting compilation and extensibility on unified graph-based intent models
US10841182B2 (en) 2019-03-29 2020-11-17 Juniper Networks, Inc. Supporting near real time service level agreements
US10897396B2 (en) 2019-03-29 2021-01-19 Juniper Networks, Inc. Supporting concurrency for graph-based high level configuration models
EP3722944A1 (en) 2019-04-10 2020-10-14 Juniper Networks, Inc. Intent-based, network-aware network device software-upgrade scheduling
US11165647B2 (en) 2019-06-28 2021-11-02 Juniper Networks, Inc. Managing multiple semantic versions of device configuration schemas
US11256522B2 (en) 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects
US11467812B2 (en) * 2019-11-22 2022-10-11 Advanced Micro Devices, Inc. Compiler operations for heterogeneous code objects
US11269526B2 (en) 2020-04-23 2022-03-08 Next Silicon Ltd Interconnected memory grid with bypassable units
US11403100B2 (en) 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11231918B1 (en) * 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
US11714615B2 (en) 2020-09-18 2023-08-01 International Business Machines Corporation Application migration using cost-aware code dependency graph
JP2023088120A (ja) 2021-12-14 2023-06-26 久利寿 帝都 ソフトウェア開発装置およびソフトウェア開発プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
GB9316948D0 (en) * 1993-08-14 1993-09-29 Ibm Programming aid for distributed computing systems
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5848273A (en) * 1995-10-27 1998-12-08 Unisys Corp. Method for generating OLE automation and IDL interfaces from metadata information

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002537599A (ja) * 1999-02-15 2002-11-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 構成可能な機能ユニットを備えるデータプロセッサ及びそのようなデータプロセッサを使用する方法
JP2010146577A (ja) * 2002-10-31 2010-07-01 Src Computers Inc 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス
JP2008052750A (ja) * 2005-04-12 2008-03-06 Matsushita Electric Ind Co Ltd プロセッサ
JP2012509537A (ja) * 2008-11-21 2012-04-19 コリア ユニバーシティ インダストリアル アンド アカデミック コラボレイション ファウンデーション 高水準言語コードをhdlコードに変換する方法及びシステム
KR101481453B1 (ko) * 2008-11-21 2015-01-21 고려대학교 산학협력단 고수준 언어 코드를 hdl 코드로 변환하는 방법 및 시스템
JP2013543616A (ja) * 2010-09-27 2013-12-05 サムスン エレクトロニクス カンパニー リミテッド Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置
US9495720B2 (en) 2010-09-27 2016-11-15 Samsung Electronics Co., Ltd Method and apparatus for compiling and executing an application using virtualization in a heterogeneous system

Also Published As

Publication number Publication date
JP2006155632A (ja) 2006-06-15
DE19815865B4 (de) 2004-11-04
DE19815865A1 (de) 1998-12-10
US5933642A (en) 1999-08-03
JP4050764B2 (ja) 2008-02-20

Similar Documents

Publication Publication Date Title
JP4050764B2 (ja) コンパイルシステム
US6077315A (en) Compiling system and method for partially reconfigurable computing
US7207038B2 (en) Constructing control flows graphs of binary executable programs at post-link time
JP4640685B2 (ja) プログラムコード変換方法
JP5851396B2 (ja) 処理方法
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
JP3602857B2 (ja) 多機種対応型情報処理システム、および、方法
US7610475B2 (en) Programmable logic configuration for instruction extensions
US8423976B2 (en) Extreme pipeline and optimized reordering technology
US8453128B2 (en) Method and system for implementing a just-in-time compiler
JP2007529063A (ja) ネイティブ結合を行なうための方法および装置
Cifuentes et al. Specifying the semantics of machine instructions
EP1934782A2 (en) Apparatus, method and system for building software by composition
KR20070118663A (ko) 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스
US20040226000A1 (en) Method and apparatus for generating co-simulation and production executables from a single source
Sagonas et al. All you wanted to know about the HiPE compiler: (but might have been afraid to ask)
JPH10254712A (ja) 多機種対応型情報処理システム、および、方法
JPH02308330A (ja) 知識情報処理装置
JP2007114934A (ja) コンパイラシステム
Guerrero et al. Address-encoded byte order
Krause et al. C for a tiny system
Djordjević et al. An operating system accelerator
CN116931947A (zh) 一种优化wasm字节码的方法及执行方法、计算机设备及存储介质
Augustine et al. Generation and use of an ASIP software tool chain
Cores IAR C/C++ Compiler

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050609

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20050609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051219

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051226

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060120