JP4390211B2 - Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program - Google Patents

Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program Download PDF

Info

Publication number
JP4390211B2
JP4390211B2 JP2005338457A JP2005338457A JP4390211B2 JP 4390211 B2 JP4390211 B2 JP 4390211B2 JP 2005338457 A JP2005338457 A JP 2005338457A JP 2005338457 A JP2005338457 A JP 2005338457A JP 4390211 B2 JP4390211 B2 JP 4390211B2
Authority
JP
Japan
Prior art keywords
logic circuit
instruction
custom
object code
program
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.)
Expired - Fee Related
Application number
JP2005338457A
Other languages
Japanese (ja)
Other versions
JP2006185423A (en
Inventor
和彰 村上
真 首藤
ゴーチェ ロヴィック
拓真 松尾
鉄也 長谷部
修一 菊地
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.)
INSTITUTE OF SYSTEMS, INFORMATION TECHNOLOGIES AND NANOTECHNOLOGIES
Kyushu University NUC
Fukuoka Industry Science and Technology Foundation
Original Assignee
INSTITUTE OF SYSTEMS, INFORMATION TECHNOLOGIES AND NANOTECHNOLOGIES
Kyushu University NUC
Fukuoka Industry Science and Technology Foundation
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 INSTITUTE OF SYSTEMS, INFORMATION TECHNOLOGIES AND NANOTECHNOLOGIES, Kyushu University NUC, Fukuoka Industry Science and Technology Foundation filed Critical INSTITUTE OF SYSTEMS, INFORMATION TECHNOLOGIES AND NANOTECHNOLOGIES
Priority to JP2005338457A priority Critical patent/JP4390211B2/en
Priority to PCT/JP2005/022401 priority patent/WO2006059775A2/en
Priority to EP05814535A priority patent/EP1836601A2/en
Priority to KR1020077014815A priority patent/KR20070097051A/en
Publication of JP2006185423A publication Critical patent/JP2006185423A/en
Application granted granted Critical
Publication of JP4390211B2 publication Critical patent/JP4390211B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、特定用途向けのカスタムLSIを設計、開発及び製造する技術に関し、特に、高級言語で記述されたアプリケーション・プログラムから命令セット・アーキテクチャ(Instruction Set Architecture、以下、ISAという。)と、かかるアプリケーション・プログラムを実行するプロセッサの一連の論理回路構成情報を生成する技術に関する。また、生成したISAと論理回路構成情報とを動的に再構成可能プロセッサに適用することにより、短期間に特定用途向けカスタムLSIを設計、開発及び製造可能ならしめるカスタムLSI開発プラットフォーム技術に関する。   The present invention relates to a technology for designing, developing, and manufacturing a custom LSI for a specific application, and in particular, an application program written in a high-level language and an instruction set architecture (hereinafter referred to as ISA). The present invention relates to a technique for generating a series of logic circuit configuration information of a processor that executes an application program. The present invention also relates to a custom LSI development platform technology that makes it possible to design, develop, and manufacture a custom LSI for a specific application in a short time by applying the generated ISA and logic circuit configuration information to a dynamically reconfigurable processor.

特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)を含むカスタムLSIを使用する分野においては、仕様変更や製品の開発期間を短縮するため、プロセッサ内部の論理回路の構成を自由に変更できる、フィールド・プログラマブル・ゲート・アレイ(Field Programmable Gate Array:FPGA)や、プログラマブル・ロジック・デバイス(Programmable Logic Device:PLD)などのプログラマブル論理回路が広く用いられている。   In the field of using custom LSIs including application specific integrated circuits (ASICs), a field in which the configuration of the logic circuit inside the processor can be freely changed in order to shorten specification changes and product development periods. Programmable logic circuits such as a programmable gate array (FPGA) and a programmable logic device (PLD) are widely used.

しかし、カスタムLSIに要求される論理回路構成は複雑となり、規模も増大しているため、多数の算術論理ユニット(Arithmetic and Logic Unit:ALU)をFPGAやPLDに組み込まなくてはならないという問題がある。   However, since the logic circuit configuration required for a custom LSI has become complicated and the scale has increased, there is a problem that a large number of arithmetic logic units (ALU) must be incorporated into an FPGA or PLD. .

規模が増大した論理回路においても、その全てが常に動作している訳ではないことに着目し、動的にプロセッサの論理回路を再構成する、動的再構成可能プロセッサが、例えば下記の特許文献1、特許文献2において提案されている。   A logic reconfigurable processor that dynamically reconfigures a logic circuit of a processor, paying attention to the fact that not all logic circuits with increased scales are always operating, for example, the following patent document 1 and proposed in Patent Document 2.

カスタムLSIのシステム設計・開発を行う際、どこまでをハードウェアで実現し、どこまでをソフトウェアで実現するかという機能分割は大きな問題である。アプリケーションの全てをハードウェアで実現できれば、動作速度、低消費電力性を実現できる。しかし、設計・開発にかかる、1)チップ製造費、2)設計期間、3)ハードウェア設計者の確保等のコストは大きくなる。   When designing and developing a custom LSI system, the functional division of how much is realized by hardware and how much is realized by software is a big problem. If all of the applications can be realized by hardware, it is possible to realize operation speed and low power consumption. However, 1) chip manufacturing cost, 2) design period, 3) securing of hardware designers, etc. related to design / development increase.

逆に全てを汎用プロセッサ上で動作するソフトウェアで実現すると、要求されるシステム性能を満たすことは難しいが、設計・開発コストは小さくて済むという利点がある。   On the other hand, if all are realized by software operating on a general-purpose processor, it is difficult to satisfy the required system performance, but there is an advantage that design and development costs can be reduced.

ソフトウェア開発者がカスタムLSIを開発する上での課題として、カスタムLSIの仕様を記述するのに「Verilog-HDL」や「VHDL」といったソフトウェア開発者にはなじみ
の薄いハードウェア記述言語(HDL)を利用しなければならないという問題がある。かかるHDLのコードは記述量が多いことから作成に時間がかかる上、コンパイルやシミュレーションにかかる時間も長いという問題がある。
As a challenge for software developers to develop custom LSIs, hardware description languages (HDL) that are not familiar to software developers such as “Verilog-HDL” and “VHDL” are used to describe the specifications of custom LSIs. There is a problem that it must be used. Since such HDL code has a large amount of description, it takes a long time to create, and it also takes a long time to compile and simulate.

LSIに実装するアルゴリズムの検討には、C言語のように抽象度の高い高級言語や、モデリング・ツールを使うことが多い。しかし、高級言語で作成したアルゴリズムを使って論理回路を作成するには、検討したアルゴリズムをHDLで書き直す必要があり、これには多くの時間がかかるという問題がある。しかも、いったんHDLで論理回路構成を記述するとアルゴリズムを変更しにくいという問題もある。   In studying algorithms to be mounted on LSI, a high-level language with a high degree of abstraction such as C language or a modeling tool is often used. However, in order to create a logic circuit using an algorithm created in a high-level language, it is necessary to rewrite the studied algorithm in HDL, which has a problem that it takes a lot of time. Moreover, once the logic circuit configuration is described in HDL, there is a problem that it is difficult to change the algorithm.

更に、動作合成の段階でハードウェア特有の制限を考慮しなければならないことも、ソフトウェア開発者にとっては大きな障壁となっている。
特開2003−198362号公報 特開2003−029969号公報
In addition, it is a great barrier for software developers to consider hardware-specific restrictions in the behavioral synthesis stage.
JP 2003-198362 A JP 2003-029969 A

そこで、本発明の課題は、ソフトウェア開発者が高級記述言語、例えばC言語でアプリケーション・プログラムを作成すれば、これに基づいてISA及び論理回路構成情報が自動的に生成され、生成されたISA及び論理回路構成情報が再構成可能プロセッサに自動的に反映され、これにより準汎用的に製造する再構成可能プロセッサをカスタムLSIとして作成可能なカスタムLSI開発プラットフォームを提供することにある。   Therefore, the problem of the present invention is that if a software developer creates an application program in a high-level description language such as C language, the ISA and logic circuit configuration information are automatically generated based on the application program, and the generated ISA and An object of the present invention is to provide a custom LSI development platform in which logic circuit configuration information is automatically reflected in a reconfigurable processor, and thereby a reconfigurable processor manufactured semi-generally can be created as a custom LSI.

また、本発明の他の課題は、高級記述言語、例えばC言語で作成されたアプリケーション・プログラムから、ISA及び論理回路構成情報を生成するソフトウェアプログラム、及び生成されたISAと論理回路構成情報とが自動的に反映される再構成可能プロセッサを提供することにある。   Another object of the present invention is to provide a software program that generates ISA and logic circuit configuration information from an application program created in a high-level description language, for example, C language, and the generated ISA and logic circuit configuration information. It is to provide a reconfigurable processor that is automatically reflected.

また、本発明の他の課題は、高級記述言語、例えばC言語で作成されたアプリケーション・プログラムから、ISA及び論理回路構成情報を生成するプログラムを提供することにある。   Another object of the present invention is to provide a program for generating ISA and logic circuit configuration information from an application program created in a high-level description language such as C language.

(1)本発明は、ソースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、前記変換手段は、ISAジェネレータと論理回路構成ジェネレータとコンパイラとアセンブラとを有し、前記ISAジェネレータは、前記ソースプログラムの命令のパターンを抽出する手段と、前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、前記論理回路構成ジェネレータは、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成する手段を有し、前記コンパイラは、前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換し、前記アセンブラは、前記アセンブラコードをプログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換することを特徴とする。 (1) The present invention includes converting means for converting the source over scan program in the program object code and logic circuitry object code, the program object code and logic circuits for each step on the basis of the logic circuitry object code a custom LSI development platform that includes a dynamically reconfigurable processor including means for re-setting the configuration, the dynamically reconfigurable processors have a controller and reconfigurable logic circuit for performing overall management And the controller determines whether the instruction of the program object code is an instruction using the reconfigurable logic circuit, and the instruction of the program object code is an instruction using the reconfigurable logic circuit. A configuration to the reconfigurable logic circuit When the data is loaded and the reconfigurable logic circuit determines the logic circuit configuration, the reconfigurable logic circuit processes the input data. The converting means includes an ISA generator, a logic circuit configuration generator, a compiler, and an assembler. And the ISA generator compares the extracted instruction pattern with the custom instruction pattern stored in the library, and extracts the instruction pattern of the source program and the custom instruction pattern stored in the library. Means for generating intermediate code by replacing with instructions and / or combinations of custom instructions, and generating an instruction set architecture comprising custom instructions and logic element connection information , wherein the logic circuit configuration generator comprises: , Logic element connection information and logic circuit of the dynamically reconfigurable processor Means for generating logic circuit configuration information of the dynamically reconfigurable processor from arrangement arrangement information of programmable elements to be configured, and the compiler compiles the intermediate code and the custom instruction and converts them into assembler code The assembler uses the assembler code as a program / object code, and converts the logic circuit configuration information into a logic circuit configuration / object code .

(2)前記中間コードは、前記ライブラリに格納されているカスタム命令を呼び出すファンクションコールと、前記プロセッサの制御命令を含むことは好ましい。 (2) It is preferable that the intermediate code includes a function call for calling a custom instruction stored in the library and a control instruction for the processor .

(3)前記プログラム・オブジェクトコードと前記論理回路再構成・オブジェクトコードに基づいて、前記動的再構成可能プロセッサが前記ソースプログラムを実行するパフォーマンスをシミュレートする手段を備えることは好ましい。 (3) Preferably, the dynamically reconfigurable processor includes means for simulating performance of executing the source program based on the program object code and the logic circuit reconfiguration / object code .

(4)カスタム命令に置き換えられなかった命令が既存のカスタム命令に合成可能である場合は、新たなカスタム命令のパターンとして定義して、前記ライブラリ中のカスタム命令を更新する手段を備えることは好ましい。 (4) When an instruction that has not been replaced with a custom instruction can be synthesized with an existing custom instruction, it is preferable to provide means for defining a new custom instruction pattern and updating the custom instruction in the library .

(5)本発明は、ソースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、前記変換手段は、ISAジェネレータとオブジェクトコードを生成する手段とを有し、前記ISAジェネレータは、前記ソースプログラムの命令のパターンを抽出する手段と、前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、前記オブジェクトコードを生成する手段は、前記中間コード及び前記カスタム命令からプログラム・オブジェクトコードを生成し、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から論理回路構成・オブジェクトコードを生成することを特徴とする(5) The present invention provides a conversion means for converting a source program into a program / object code and a logic circuit configuration / object code, and a logic circuit for each step based on the program / object code and the logic circuit configuration / object code. A custom LSI development platform comprising a dynamically reconfigurable processor including means for resetting the configuration, wherein the dynamic reconfigurable processor has a controller for overall management and a reconfigurable logic circuit. And the controller determines whether the instruction of the program object code is an instruction using the reconfigurable logic circuit, and the instruction of the program object code is an instruction using the reconfigurable logic circuit. A configuration to the reconfigurable logic circuit When the data is loaded and the logic circuit configuration is determined, the reconfigurable logic circuit performs processing on the input data, and the conversion means includes an ISA generator and an object code generating means. The ISA generator compares the extracted instruction pattern with a custom instruction pattern stored in a library by means for extracting the instruction pattern of the source program, and compares the extracted instruction with the custom instruction, And / or means for generating an intermediate code by replacing with a combination of custom instructions and generating an instruction set architecture comprising the custom instructions and logic element connection information, and means for generating the object code , Program object code from the intermediate code and the custom instruction Form, and generates a logic circuitry object code from the arrangement sequence information of the programmable elements constituting a logic circuit of the logic element connection information and the dynamically reconfigurable processors.

(6)本発明は、ソースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、前記変換手段は、ISAジェネレータとオブジェクトコードを生成する手段とを有し、前記ISAジェネレータは、前記ソースプログラムの命令構造を解析して、データ依存関係のある処理を抽出する手段と、前記抽出したデータ依存関係のある処理とライブラリに格納されているカスタム命令のパターンとを比較し、前記データ依存関係のある複数の処理を合成してカスタム命令で置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、前記オブジェクトコードを生成する手段は、前記中間コード及び前記カスタム命令からプログラム・オブジェクトコードを生成し、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から論理回路構成・オブジェクトコードを生成することを特徴とする(6) The present invention provides a conversion means for converting a source program into a program / object code and a logic circuit configuration / object code, and a logic circuit for each step based on the program / object code and the logic circuit configuration / object code. A custom LSI development platform comprising a dynamically reconfigurable processor including means for resetting the configuration, wherein the dynamic reconfigurable processor has a controller for overall management and a reconfigurable logic circuit. And the controller determines whether the instruction of the program object code is an instruction using the reconfigurable logic circuit, and the instruction of the program object code is an instruction using the reconfigurable logic circuit. A configuration to the reconfigurable logic circuit When the data is loaded and the logic circuit configuration is determined, the reconfigurable logic circuit performs processing on the input data, and the conversion means includes an ISA generator and an object code generating means. The ISA generator analyzes the instruction structure of the source program and extracts a process having a data dependency relationship, a process having the extracted data dependency relationship, and a pattern of custom instructions stored in a library, Means for synthesizing a plurality of processes having data dependencies and replacing with a custom instruction to generate an intermediate code, and generating an instruction set architecture comprising the custom instruction and logic element connection information; And the means for generating the object code is programmed from the intermediate code and the custom instruction. It generates a beam object code, and generates a logic circuitry object code from the arrangement sequence information of the programmable elements constituting a logic circuit of the logic element connection information and the dynamically reconfigurable processors.

(7)本発明は、ソースプログラムを、1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサにおいて実行するために用いられるプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段を備えたカスタムLSI開発プラットフォームであって、前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、前記変換手段は、ISAジェネレータとコンパイラと論理回路構成ジェネレータとアセンブラを有し、前記ISAジェネレータは、前記ソースプログラムの命令のパターンを抽出する手段と、前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、前記コンパイラは、前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換し、前記論理回路構成ジェネレータは、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成する手段を有し、前記アセンブラは、前記アセンブラコードをプログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換することを特徴とする(7) The present invention provides a program / object code and a logic circuit configuration / object code used for executing a source program in a dynamically reconfigurable processor including means for resetting a logic circuit configuration for each step. A custom LSI development platform having conversion means for converting into a dynamic LSI, wherein the dynamically reconfigurable processor includes a controller that performs overall management and a reconfigurable logic circuit, and the controller includes the program object code If the instruction of the program object code is an instruction using the reconfigurable logic circuit, it is determined whether the instruction of the program object code is an instruction using the reconfigurable logic circuit. The data is loaded and the reconfigurable logic circuit is Is determined, the input data is processed, and the conversion means includes an ISA generator, a compiler, a logic circuit configuration generator, and an assembler, and the ISA generator extracts an instruction pattern of the source program. And the extracted instruction pattern and the custom instruction pattern stored in the library are compared, and the extracted instruction is replaced with the custom instruction and / or a combination of custom instructions to generate an intermediate code. And means for generating an instruction set architecture comprising custom instructions and logic element connection information, wherein the compiler compiles the intermediate code and the custom instructions and converts them into assembler code, The circuit configuration generator includes the logic element connection information and the previous Means for generating logic circuit configuration information of the dynamically reconfigurable processor from arrangement arrangement information of programmable elements constituting the logic circuit of the dynamically reconfigurable processor, wherein the assembler programs the assembler code; An object code is used, and the logic circuit configuration information is converted into a logic circuit configuration / object code .

(8)本発明は、カスタムLSI開発プラットフォームにおいて、ソースプログラムを変換して、1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサにおいて実行するために用いられるプログラム・オブジェクトコードを生成する生成方法であって、前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路を有し、前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、前記カスタムLSI開発プラットフォームは、ISAジェネレータと論理回路構成ジェネレータとコンパイラとアセンブラを有する変換手段を備えるものであり、前記ISAジェネレータが備える手段が、前記ソースプログラムの命令のパターンを抽出するステップと前記ISAジェネレータが備える手段が、前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成するステップと、前記論理回路構成ジェネレータが備える手段が前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成し、前記コンパイラが前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換するステップと、前記アセンブラが、前記アセンブラコードを前記プログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換することにより、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードを生成するステップを含むことを特徴とする。 (8) The present invention relates to a program used to execute a dynamically reconfigurable processor including means for converting a source program and resetting a logic circuit configuration for each step in a custom LSI development platform. A generation method for generating an object code , wherein the dynamically reconfigurable processor includes a controller that performs overall management and a reconfigurable logic circuit, and the controller includes instructions for the program object code to be reconfigured. Determining whether or not the instruction uses a reconfigurable logic circuit, and if the instruction of the program object code is an instruction using the reconfigurable logic circuit, load configuration data into the reconfigurable logic circuit; The reconfigurable logic circuit outputs input data when the logic circuit configuration is determined. Are those to perform processing, the custom LSI development platform, which comprises converting means having ISA generator and logic circuitry generator and compiler and assembler, the means for ISA generator comprises, in the source program The step of extracting an instruction pattern and the means provided in the ISA generator compare the extracted instruction pattern with a custom instruction pattern stored in a library, and use the extracted instruction as the custom instruction and / or Or generating an intermediate code by replacing with a combination of custom instructions and generating an instruction set architecture comprising custom instructions and logic element connection information; and means provided in the logic circuit configuration generator includes the logic element connection Information and said dynamic The logic circuit configuration information of the dynamically reconfigurable processor is generated from the arrangement / arrangement information of the programmable elements constituting the logic circuit of the configurable processor, and the compiler compiles the intermediate code and the custom instruction to assembler code And the assembler uses the assembler code as the program object code and converts the logic circuit configuration information into a logic circuit configuration / object code, whereby the program object code and the logic circuit configuration / The method includes generating an object code .

前記ISAジェネレータが備える手段が、前記カスタム命令として抽出されなかった命令が既存のカスタム命令に合成可能である場合は、新たなカスタム命令のパターンとして定義して、前記ライブラリ中のカスタム命令を更新するステップを含むことは好ましい。 (9) said means provided in the ISA generator, wherein when the custom instruction has not been extracted as an instruction can be combined into an existing custom instruction is defined as a pattern of a new custom instruction, the custom instruction in said library Preferably includes a step of updating .

10)本発明は、コンピュータを、ソースプログラムを1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサにおいて実行するために用いられるプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段として機能させるためのプログラムであって、前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、前記変換手段は、ISAジェネレータとコンパイラと論理回路構成ジェネレータとアセンブラとを有し、前記ISAジェネレータは、記ソースプログラムの命令パターンを抽出する手段と、前記抽出した命令パターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを備え、前記コンパイラは、前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換し、前記論理回路構成ジェネレータは、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成する手段を有し、前記アセンブラは、前記アセンブラコードをプログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換するものであることを特徴とする( 10 ) The present invention relates to a program, object code, and logic circuit configuration, used for executing a computer in a dynamically reconfigurable processor including means for resetting a logic circuit configuration for each step. A program for functioning as a conversion means for converting into object code , wherein the dynamically reconfigurable processor includes a controller that performs overall management and a reconfigurable logic circuit, and the controller includes the program object It is determined whether the instruction of the code is an instruction using the reconfigurable logic circuit, and when the instruction of the program object code is an instruction using the reconfigurable logic circuit, the reconfigurable logic circuit is configured. Load reconfiguration data and the reconfigurable logic circuit When the circuit arrangement is fixed, which processing is performed on input data, said conversion means, and a ISA generator and compiler and logic circuitry generator and assembler, the ISA generator, before Kiso Supurogura arm means for extracting a pattern of instructions, compares the pattern of the custom instruction stored in the pattern and library instruction that the extracted, replacing the instruction that the extraction with the combination of the custom instruction, and / or custom instructions Generating an intermediate code and generating an instruction set architecture including custom instructions and logic element connection information, and the compiler compiles the intermediate codes and the custom instructions and converts them into assembler code. And the logic circuit configuration generator includes the logic element connection information. Means for generating logic circuit configuration information of the dynamically reconfigurable processor from information and arrangement information of programmable elements constituting the logic circuit of the dynamically reconfigurable processor, and the assembler includes the assembler The code is a program / object code, and the logic circuit configuration information is converted into a logic circuit configuration / object code .

本発明によれば、ソフトウェア開発者は、ハードウェアの特徴に関する部分を意識することなく、アプリケーション(コンピュータプログラム)を開発できる。その結果、開発に要する全体的な実行サイクル数を減らすことができ、所望の用途に特化したLSIを短期間に開発できる。   According to the present invention, a software developer can develop an application (computer program) without being conscious of the part related to the characteristics of hardware. As a result, the total number of execution cycles required for development can be reduced, and an LSI specialized for a desired application can be developed in a short time.

また、カスタムLSIを開発する資産の共通化(プラットフォーム化)が可能となり、設計・開発資産の標準化を図ることができる。   In addition, assets for developing custom LSIs can be shared (platformed), and design and development assets can be standardized.

[用語の定義]
本明細書において、動的論理回路再構成可能プロセッサとは、動的にプロセッサ内部の論理回路を命令に従い、再構成しながら処理を行う機能を備えたプロセッサをいう。
[Definition of terms]
In this specification, a dynamic logic circuit reconfigurable processor refers to a processor having a function of performing processing while dynamically reconfiguring a logic circuit in the processor according to an instruction.

カスタムLSIとは、ニーズに合わせて設計、製造された特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)を含むLSIをいう。   The custom LSI refers to an LSI including an application specific integrated circuit (ASIC) designed and manufactured according to needs.

カスタム命令とは、プロセッサが実行する命令であって、ユーザが定義した命令である。   A custom instruction is an instruction executed by a processor and defined by a user.

命令セットとは、インストラクションセット (Instruction Set:IS)ともいい、プロセッサが備えるカスタム命令の集合である。   The instruction set is also called an instruction set (IS) and is a set of custom instructions provided in the processor.

命令セット・アーキテクチャ (Instruction Set Architecture:ISA)は、命令セットとプロセッサの論理回路構成情報を生成するのに必要な論理素子接続情報とからなる。   The instruction set architecture (ISA) includes an instruction set and logic element connection information necessary for generating logic circuit configuration information of the processor.

論理素子接続情報とは、例えば、AND回路の次にOR回路、その次にXOR回路といった情報が定義されている情報である。従って、再構成可能プロセッサの論理回路上で、AND回路をどこに配置し、OR回路やXOR回路をどこに配置し、それらをどの配線を使って接続するのかという情報は含まれない。   The logic element connection information is, for example, information in which information such as an OR circuit is next to an AND circuit and then an XOR circuit is defined. Therefore, information on where to place the AND circuit, where to place the OR circuit or XOR circuit, and which wiring to connect them is not included on the logic circuit of the reconfigurable processor.

カスタム論理回路とは、カスタム命令を実現する論理回路をいい、汎用プロセッサ上では性能上の理由等で実現しない、あるいは実現することができない回路や機能のことである。   A custom logic circuit refers to a logic circuit that implements a custom instruction, and is a circuit or function that cannot be implemented or cannot be implemented on a general-purpose processor for performance reasons.

プラットフォームとは、異なるカスタム論理回路を実現するために利用可能な共通のハードウェア(再構成可能プロセッサ)とソフトウェアプログラムとで構成されるシステムである。   A platform is a system composed of common hardware (reconfigurable processor) and software programs that can be used to implement different custom logic circuits.

データ・パスとは、カスタム命令を実行するプロセッサの論理回路である。   A data path is a logic circuit of a processor that executes a custom instruction.

プログラマブル・エレメント(Programmable Element)とは、AND回路、OR回路、XOR回路、あるいはALU等の論理回路を構成する素子である。   A programmable element is an element that constitutes a logic circuit such as an AND circuit, an OR circuit, an XOR circuit, or an ALU.

図1は本発明のカスタムLSI開発プラットフォーム1の全体構成ブロック図を示したものである。カスタムLSI開発プラットフォーム1は、再構成可能プロセッサ20と、ソフトウェアプログラム10とで構成される。   FIG. 1 is a block diagram showing the overall configuration of a custom LSI development platform 1 according to the present invention. The custom LSI development platform 1 includes a reconfigurable processor 20 and a software program 10.

ソフトウェアプログラム10は、再構成可能プロセッサ20のISA、及び再構成可能プロセッサ20内の再構成可能論理回路24(リコンフィギュラブル・データ・パス)をカスタム命令毎に動的に変更させるための論理回路構成情報等を生成する一連のプログラムから構成されている。   The software program 10 is a logic circuit for dynamically changing the ISA of the reconfigurable processor 20 and the reconfigurable logic circuit 24 (reconfigurable data path) in the reconfigurable processor 20 for each custom instruction. It consists of a series of programs that generate configuration information and the like.

ソフトウェア開発者がC言語でソースプログラム100を記述すると、ISAジェネレータ110は、中間コード111とISA112とを生成し、これらをコンパイル等することにより、プログラム・オブジェクトコード141と論理回路構成・オブジェクトコード142とを生成する。   When the software developer describes the source program 100 in the C language, the ISA generator 110 generates the intermediate code 111 and the ISA 112, and compiles them to thereby generate the program object code 141 and the logic circuit configuration / object code 142. And generate

再構成可能プロセッサ20は、プログラム・オブジェクトコード141及び論理回路構成・オブジェクトコード142に基づいて、再構成可能論理回路24をカスタム命令毎に変化させながら入力データ27を演算処理し、最終的な結果としてデータ28を出力する。   Based on the program / object code 141 and the logic circuit configuration / object code 142, the reconfigurable processor 20 operates the input data 27 while changing the reconfigurable logic circuit 24 for each custom instruction, and obtains a final result. As a result, data 28 is output.

図2は、ソフトウェアプログラム10の詳細ブロック図を示したものである。Cソースプログラム100が与えられると、ISAジェネレータ110が起動し、Cソースプログラム100の命令構造を解析する。なお、ライブラリ160には、事前に定義された複数のカスタム命令が格納されている。   FIG. 2 shows a detailed block diagram of the software program 10. When the C source program 100 is given, the ISA generator 110 is activated and analyzes the instruction structure of the C source program 100. The library 160 stores a plurality of custom instructions defined in advance.

ISAジェネレータ110は、Cソースプログラム100中で使われている命令のパターン、あるいは繰り返し使われている命令のパターンを抽出し、ライブラリ160内のカスタム命令のパターンと比較し、Cソースプログラム100内の命令をカスタム命令に置換し、中間コード111とISA112とを生成する。   The ISA generator 110 extracts the pattern of instructions used in the C source program 100 or the pattern of instructions used repeatedly, compares it with the pattern of custom instructions in the library 160, and stores the pattern in the C source program 100. The instructions are replaced with custom instructions to generate intermediate code 111 and ISA 112.

中間コード111は、カスタム命令のファンクションコールと制御命令とから成り、ISA112は、カスタム命令と論理素子接続情報とから成る。   The intermediate code 111 is composed of a function call of a custom instruction and a control instruction, and the ISA 112 is composed of a custom instruction and logic element connection information.

中間コード111は、コンパイラ120によりアセンブラコード121にコンパイルされた後、アセンブラ140によりプログラム・オブジェクトコード141となる。なお、コンパイラ120は、中間コード111と、ISA112のカスタム命令、例えば乗算は“×”で定義されているといったカスタム命令を、アセンブラコード121にコンパイルするものである。   The intermediate code 111 is compiled into an assembler code 121 by the compiler 120, and then becomes a program object code 141 by the assembler 140. The compiler 120 compiles the intermediate code 111 and a custom instruction of the ISA 112, for example, a custom instruction in which multiplication is defined by “x” into the assembler code 121.

ISA112のカスタム命令は、コンパイラ120により中間コード111とともにアセンブラコード121に変換された後、アセンブラ140によりプログラム・オブジェクトコード141となる。   The custom instruction of the ISA 112 is converted into the assembler code 121 together with the intermediate code 111 by the compiler 120 and then becomes the program object code 141 by the assembler 140.

論理回路構成ジェネレータ130は、ISA112の論理素子接続情報と、再構成可能論理回路24のプログラマブル・エレメント(PE)の配置配列情報1310とから、論理回路構成情報1311を生成し、これをアセンブラ140により論理回路構成・オブジェクトコード142に変換する。   The logic circuit configuration generator 130 generates logic circuit configuration information 1311 from the logic element connection information of the ISA 112 and the arrangement / arrangement information 1310 of the programmable elements (PE) of the reconfigurable logic circuit 24, and this is generated by the assembler 140. The logic circuit configuration / object code 142 is converted.

図3はISAジェネレータ110の詳細ブロック図を示したものである。図3に示すパターニング・モジュール1110は、ライブラリ160を参照しながら、Cソースプログラム100中に使われている命令、あるいは繰り返し使われている命令を抽出し、抽出した命令のパターンとライブラリ160に格納されているカスタム命令のパターンとを比較し、一致する命令をカスタム命令で置換する。   FIG. 3 shows a detailed block diagram of the ISA generator 110. The patterning module 1110 shown in FIG. 3 extracts an instruction used in the C source program 100 or an instruction used repeatedly while referring to the library 160 and stores the extracted instruction pattern and the library 160 in the library 160. Is compared with the pattern of the custom instruction being used, and the matching instruction is replaced with the custom instruction.

パターニング・モジュール1110によりカスタム命令として抽出されなかった(事前にカスタム命令として用意されていなかった)雑多な命令は、クリエータ150により新たに定義し作成するか、既存のカスタム命令に合成可能であれば合成し、新たなカスタム命令として定義する。ライブラリ160中のカスタム命令は、カスタム命令の追加、合成により常に更新される。   Miscellaneous instructions that were not extracted as custom instructions by the patterning module 1110 (not previously prepared as custom instructions) can be newly defined and created by the creator 150 or can be synthesized into existing custom instructions. Synthesize and define as a new custom instruction. The custom instructions in the library 160 are constantly updated by adding and synthesizing custom instructions.

パターンニング・モジュール1110は、Cソースプログラム全体が実行可能になるまで、Cソースプログラムの命令をカスタム命令に置き換える。また、パターンニング・モジュール1110は論理素子接続情報(カスタム命令と関連付けられてライブラリ160に格納されている。)と、PEの配置配列情報とを参照して、カスタム命令毎に再構成可能論理回路24の論理回路構成情報を生成する。   The patterning module 1110 replaces instructions in the C source program with custom instructions until the entire C source program is executable. The patterning module 1110 refers to logic element connection information (stored in the library 160 in association with a custom instruction) and PE arrangement array information, and can be reconfigured for each custom instruction. 24 pieces of logic circuit configuration information are generated.

図4は本発明の一実施の形態である再構成可能プロセッサ20のブロック図を示したものである。動的再構成可能プロセッサ20は、リコンフィギュラブル・データ・パス(再構成可能論理回路)24を備え、順序制御によりプログラムを実行するプロセッサである。この再構成可能プロセッサ20は、1ステップ毎に論理回路構成の再設定を行いながら、Cソースプログラム100の処理内容を実行する。なお、ステップとは、論理回路構成の設定と演算の実行を合わせた、一命令の実行にかかる期間である。また、論理回路構成情報とは、カスタム命令を実行するための再構成可能な論理回路の構成情報である。   FIG. 4 is a block diagram of the reconfigurable processor 20 according to the embodiment of the present invention. The dynamically reconfigurable processor 20 includes a reconfigurable data path (reconfigurable logic circuit) 24 and executes a program by order control. The reconfigurable processor 20 executes the processing contents of the C source program 100 while resetting the logic circuit configuration for each step. Note that a step is a period required to execute one instruction, which is a combination of setting of a logic circuit configuration and execution of an operation. The logic circuit configuration information is configuration information of a reconfigurable logic circuit for executing a custom instruction.

再構成可能プロセッサ20は、コントローラ21、スタック22、コンフィギュレーション・メモリ23、リコンフィギュラブル・データ・パス24、レジスタ・ファイル25、及びメモリ26を備える。   The reconfigurable processor 20 includes a controller 21, a stack 22, a configuration memory 23, a reconfigurable data path 24, a register file 25, and a memory 26.

コントローラ21は、コンフィギュレーション・データのロード、メモリ26内のデータのロードなど、再構成可能プロセッサ20の全体管理を行う。内部には22ビットのインデックス・レジスタ211を7つ備え、インデックス・レジスタ211内の値を用いてメモリ26にアクセスすることができる。また、インデックス・レジスタ211内の値を格納するスタック22と接続している。   The controller 21 performs overall management of the reconfigurable processor 20 such as loading configuration data and loading data in the memory 26. There are seven 22-bit index registers 211 inside, and the memory 26 can be accessed using the values in the index registers 211. Further, it is connected to the stack 22 that stores the value in the index register 211.

メモリ26は、再構成可能プロセッサ20の命令を保持する記憶装置である。   The memory 26 is a storage device that holds instructions of the reconfigurable processor 20.

図5は、メモリ26が保持する命令フォーマットの構成を示した図である。   FIG. 5 is a diagram showing a configuration of an instruction format held in the memory 26. As shown in FIG.

図5中、Exe_Non欄では、命令をリコンフィギュラブル・データ・パス24により演算
を行う場合、あるいはリコンフィギュラブル・データ・パス24によらずにインデックス・レジスタ211内の値の操作のみを行う場合のどちらを選択するかを指示するものである。
In FIG. 5, in the Exe_Non column, when an instruction is operated by the reconfigurable data path 24, or only the value in the index register 211 is manipulated without using the reconfigurable data path 24. Which of these is to be selected.

リコンフィギュラブル・データ・パス24で演算を行う命令の場合は、適切なコンフィギュレーション・データが格納されているコンフィギュレーション・メモリ23のアドレスと演算に用いるレジスタ・ファイル25とを指定する。インデックス・レジスタ211内の値を操作する命令の場合は、操作内容と操作に用いるインデックス・レジスタ211とを指定する。   In the case of an instruction that performs an operation in the reconfigurable data path 24, an address of the configuration memory 23 in which appropriate configuration data is stored and a register file 25 used for the operation are specified. In the case of an instruction for manipulating a value in the index register 211, an operation content and an index register 211 used for the operation are designated.

Dt_Adr欄に例えばメモリアドレスを指定すれば、メモリ26とインデックス・レジスタ211間のデータのやり取りを行わせることができる。   For example, if a memory address is designated in the Dt_Adr column, data can be exchanged between the memory 26 and the index register 211.

Flow_Code欄では、プログラムの実行順序制御を指定することができ、ここで、分岐条
件の指定を行えば、リコンフィギュラブル・データ・パス24での演算結果を用いて処理を分岐させることも可能である。
In the Flow_Code column, the execution order control of the program can be specified. If the branch condition is specified here, the processing can be branched using the operation result in the reconfigurable data path 24. is there.

Dt_Adrは絶対アドレスの指定に用い、Rel_Adr欄は相対アドレスの指定に用いる。   Dt_Adr is used to specify an absolute address, and the Rel_Adr column is used to specify a relative address.

Work_Rateは、リコンフィギュラブル・データ・パス24での処理を行う際のクロック
・サイクル数を処理内容によって、1,2,4,8クロック・サイクルに指定することに用いることができる。
Work_Rate can be used to designate the number of clock cycles when performing processing in the reconfigurable data path 24 as 1, 2, 4, 8 clock cycles depending on the processing content.

コンフィギュレーション・メモリ23は、コンフィギュレーション・データを格納するメモリである。カスタム命令のコンフィギュレーションを128個まで保持することができる。   The configuration memory 23 is a memory that stores configuration data. Up to 128 custom instruction configurations can be retained.

レジスタ・ファイル25は、リコンフィギュラブル・データ・パス24の各PEでの演算結果を保存し、異なるファンクションに引き渡すレジスタである。1ワードは256ビット幅である。レジスタ・ファイル25は、リコンフィギュラブル・データ・パス24のPEに接続されており、データが出力されるPEの位置によって、格納されるレジスタ・ファイル25中のビット位置が決定される。   The register file 25 is a register that stores an operation result in each PE of the reconfigurable data path 24 and passes it to a different function. One word is 256 bits wide. The register file 25 is connected to the PE of the reconfigurable data path 24, and the bit position in the register file 25 to be stored is determined by the position of the PE from which data is output.

図6は、リコンフィギュラブル・データ・パス24の構成の一実施形態を示したものである。リコンフィギュラブル・データ・パス24は、PEが16行8列で配置されている。PEは6入力2出力であり、入力に対して任意の論理関数を割り当てることができる。各PE間は、垂直ライン(VL:Vertical Line)と水平ライン(HL:Horizontal Line)で接続されている。   FIG. 6 shows an embodiment of the configuration of the reconfigurable data path 24. In the reconfigurable data path 24, PEs are arranged in 16 rows and 8 columns. PE has 6 inputs and 2 outputs, and an arbitrary logical function can be assigned to the inputs. Each PE is connected by a vertical line (VL) and a horizontal line (HL).

VLが一列の各PEに接続しており、各VLはHLで接続されている。VLからHL、あるいはHLからVLへの信号受け渡しはスイッチ部(SW)が制御している。VLは64ビット幅で8本、HLは64ビット幅で7本である。また、メモリからコンフィギュラブル・データ・パス24へは一度に64ビットのデータをロードすることができる。   A VL is connected to each PE in a row, and each VL is connected by HL. The switch (SW) controls the signal transfer from VL to HL or from HL to VL. There are 8 VLs with a 64-bit width, and 7 HLs with a 64-bit width. Also, 64-bit data can be loaded from the memory to the configurable data path 24 at a time.

この再構成可能プロセッサ20は、まずコントローラ21がメモリ26からプログラムを読み出し、リコンフィギュラブル・データ・パス24を使う命令か、それともインデックス・レジスタ211内の値のみを操作する命令かの判断をする。   In the reconfigurable processor 20, first, the controller 21 reads a program from the memory 26, and determines whether the instruction uses the reconfigurable data path 24 or the instruction operates only on the value in the index register 211. .

リコンフィギュラブル・データ・パス24を使う場合、コントローラ21がプログラム中に指定されたコンフィギュレーション・メモリ23のアドレスから適切なコンフィギュレーション・データを読み出し、このデータをリコンフィギュラブル・データ・パス24にロードする。   When using the reconfigurable data path 24, the controller 21 reads the appropriate configuration data from the address of the configuration memory 23 specified in the program, and this data is transferred to the reconfigurable data path 24. Load it.

リコンフィギュラブル・データ・パス24は、コンフィギュレーション(論理回路構成)が確定すると、入力データに対して処理を行う。各PEで実行された演算結果はVLに出力されるとともにレジスタ・ファイル25に書き込むことができる。中間結果として別のファンクションにデータを引き渡して使うことができる。レジスタ・ファイル25を用いることで大きな処理を複数ファンクションに分割して実行することができる。   When the configuration (logic circuit configuration) is determined, the reconfigurable data path 24 processes the input data. The operation result executed by each PE is output to VL and can be written to the register file 25. Data can be passed to another function for use as an intermediate result. By using the register file 25, a large process can be divided into a plurality of functions and executed.

インデックス・レジスタ211内の値を用いる場合は、インデックス・レジスタ211内に演算回路が用意されているので、プログラム中に指定された操作を演算回路で行い、次の命令に遷移する。   When using the value in the index register 211, since an arithmetic circuit is prepared in the index register 211, an operation designated in the program is performed by the arithmetic circuit, and the process proceeds to the next instruction.

本発明の一実施の形態であるソフトウェアプログラム10と、再構成可能プロセッサ20とを用いて、AES(Advanced Encryption Standard)の暗号化用カスタムLSIを開発した。   An AES (Advanced Encryption Standard) encryption custom LSI has been developed using the software program 10 and the reconfigurable processor 20 according to an embodiment of the present invention.

AESはDES(Data Encryption Standard)に代わる標準暗号化方式として選定されているものである。C言語で作成したAESのプログラムからISAを生成するとともに、AES暗号化処理を再構成可能プロセッサ20に実装し性能評価を行った。   AES is selected as a standard encryption method to replace DES (Data Encryption Standard). An ISA was generated from an AES program created in C language, and an AES encryption process was mounted on the reconfigurable processor 20 for performance evaluation.

AESでは、平文のビット数や鍵のビット数を選択可能であるが、この実施例では両者とも128ビットとした。   In AES, the number of bits in plain text and the number of bits in the key can be selected. In this embodiment, both are set to 128 bits.

図7にAES暗号化の処理の流れを示す。先ず、Stateと呼ばれる、2次元配列のデータ形式平文を配置する。ラウンド鍵を生成し(S1)、Stateとラウンド鍵とで排他的論理和をとる(S2)。ラウンド関数を規定回数実行する。この実施例においては次の条件で9回実行した。ラウンド関数は次の4つの変換で実行する。まず、8ビット入力8ビット出力のいわゆるs-box変換処理(バイト・サブ(Byte-Sub))を実行する(S3)。   FIG. 7 shows the flow of AES encryption processing. First, a two-dimensional array data format plaintext called State is arranged. A round key is generated (S1), and exclusive OR is performed between State and the round key (S2). Execute the round function a specified number of times. In this example, the test was performed nine times under the following conditions. The round function is executed by the following four transformations. First, so-called s-box conversion processing (byte-sub) of 8-bit input and 8-bit output is executed (S3).

次に、行に対してバイト単位の周期的シフトを施すシフト・ロウ(Shift-Row)を実行する(S4)。次に、列ごとの行列演算の実行であるミックス・コラム(Mix-Column)を行う(S5)。そして、そのStateとラウンド鍵とで排他的論理(Add-Round-key)を実行する(S6)。S3からS6のステップを9回繰り返し実行する。   Next, a shift row (Shift-Row) for performing a periodic shift in units of bytes on the row is executed (S4). Next, a mix column (Mix-Column), which is the execution of matrix operation for each column, is performed (S5). Then, exclusive logic (Add-Round-key) is executed with the State and the round key (S6). Steps S3 to S6 are repeated 9 times.

そして、最後にバイト・サブ(Byte-Sub)(S7)、シフト・ロウ(Shift-Row)(S8)、ラウンド鍵処理(Add-Round-Key)(S9)を実行し、暗号文(Encrypted)を得る(S10)。   Finally, byte-sub (S7), shift-row (S8), round key processing (Add-Round-Key) (S9) is executed, and the encrypted text (Encrypted) Is obtained (S10).

暗号化処理の中心となるのは、バイト・サブ(Byte-sub)やシフト・ロウ(Shift-Row)、ミックス・コラム(Mix-Column)、ラウンド鍵処理(Add-Round-Key)の4つの変換処理である。これら4つの変換処理を実現するにあたり、各変換処理を実現するためのカスタム命令を作成した。     There are four main encryption processes: Byte-sub, Shift-Row, Mix-Column, and Round-Key processing (Add-Round-Key). It is a conversion process. In realizing these four conversion processes, a custom instruction for realizing each conversion process was created.

この実施例においては、バイト・サブ(Byte-Sub)は32ビット、シフト・ロウ(Shift-Row)は128ビット、ミックス・コラム(Mix-Column)は64ビット、ラウンド鍵処理(Add-Round-Key)は128ビットずつの単位に分けて処理を行う実装をした。このため、それらの前後でデータの分割、結合などを行うための命令も追加した。   In this embodiment, Byte-Sub is 32 bits, Shift-Row is 128 bits, Mix-Column is 64 bits, and round key processing (Add-Round- Key) is implemented by processing in units of 128 bits. For this reason, instructions for splitting and combining data before and after them have also been added.

図8、図9はバイト・サブ(Byte-sub)、シフト・ロウ(Shift-Row)、ミックス・コラム(Mix-Column)、ラウンド鍵処理(Add-Round-Key)を含むC言語で記述したAESの暗号化処理の中間コード111の記述例である。   8 and 9 are described in C language including Byte-sub, Shift-Row, Mix-Column, and Round-Key processing (Add-Round-Key). It is an example of description of the intermediate code 111 of the encryption process of AES.

図8、図9に示すように、AES暗号化のメインルーチンは、「Encrypt」関数である。図8の中間コード中、カスタム命令は、先頭に「vu1_」がつている箇所である。   As shown in FIGS. 8 and 9, the main routine of AES encryption is the “Encrypt” function. In the intermediate code in FIG. 8, the custom instruction is a portion having “vu1_” at the head.

これにより、全体処理で309サイクル、暗号化の処理部分で79サイクルの結果が得られた。   As a result, 309 cycles were obtained for the entire processing, and 79 cycles were obtained for the encryption processing portion.

DESは米国商務省標準局で標準化されている暗号規格である。暗号化と復号化に同じ鍵を使用する共通鍵暗号で、64ビットの平文と56ビットの鍵を入力することによって、暗号文64ビットを出力する。   DES is an encryption standard standardized by the US Bureau of Commerce Standards Bureau. In common key cryptography that uses the same key for encryption and decryption, 64 bits of plaintext and 56 bits of key are input to output 64 bits of ciphertext.

DESの暗号化処理では、まず64ビットのビット列を入力し、それに対して、転置表を元に初期転置を行う。転置したビット列を32ビットずつ分割する。分割したビット列をそれぞれ鍵と暗号化関数Fで暗号化する。鍵は入力した56ビット鍵から生成された48ビットのラウンド鍵を使用する。   In the DES encryption process, a 64-bit bit string is first input, and initial transposition is performed based on the transposition table. The transposed bit string is divided by 32 bits. The divided bit strings are encrypted with the key and the encryption function F, respectively. The key uses a 48-bit round key generated from the input 56-bit key.

この処理を16回行い、作成した左右ビット列を結合して最終転置を行い、その結果が暗号文として出力される。   This process is performed 16 times, and the created left and right bit strings are combined to perform final transposition, and the result is output as ciphertext.

図10はDES暗号化処理のフローチャートを示したものである。動的論理回路再構成可能プロセッサ20上でのDES暗号化処理には、カスタム命令を6つ必要とした。   FIG. 10 shows a flowchart of the DES encryption process. The DES encryption processing on the dynamic logic circuit reconfigurable processor 20 required six custom instructions.

表1は、DES暗号化処理に用いたカスタム命令とその内容を示したものである。   Table 1 shows the custom instructions used for DES encryption processing and their contents.

Figure 0004390211
Figure 0004390211

先ず、命令0で鍵56ビットをメモリからリコンフィギュラブル・データ・パス24に入力し同時に転置を行う。同様に命令1で平文64ビットを入力し、同時に初期転置を行う。次にラウンド回数によって、命令2、あるいは命令3で鍵の循環シフトを行う。命令4では鍵の縮約転置および暗号化F関数を一命令で行う。     First, 56 bits of the key is input from the memory to the reconfigurable data path 24 by the instruction 0 and transposed at the same time. Similarly, the plaintext 64 bits are input by the instruction 1 and the initial transposition is performed at the same time. Next, depending on the number of rounds, the key is cyclically shifted by the instruction 2 or the instruction 3. Command 4 performs key contraction transposition and encryption F function with one command.

各命令間のデータの授受は全てレジスタ・ファイル25を介して行っている。このラウンドを16回繰り返す。図10では繰り返しが条件分岐処理になっているが、本実施例では繰り返しは展開して逐次処理を行った。これは条件分岐処理で実行するにはラウンド回数を判定するための回路を余分につくる必要があり、設計する回路規模を縮小するためである。最後に初期転置の逆の転置を行い、暗号文64ビットをメモリに出力する。   All data exchange between instructions is performed via the register file 25. Repeat this round 16 times. In FIG. 10, the iteration is a conditional branch process, but in this embodiment, the iteration is expanded and the sequential processing is performed. This is because it is necessary to create an extra circuit for determining the number of rounds for execution by conditional branch processing, and to reduce the circuit scale to be designed. Finally, the reverse transposition of the initial transposition is performed to output 64 bits of ciphertext to the memory.

表2は、再構成可能プロセッサ20でDES暗号化処理を行った際の動作周波数とスループットを示したものである。   Table 2 shows the operating frequency and throughput when the reconfigurable processor 20 performs DES encryption processing.

Figure 0004390211
Figure 0004390211

この実施例ではDES暗号化処理の動作周波数は6.25MHZであった。比較対象として、Intel Pentium(登録商標)4上でDES暗号化処理を行った際の結果も表2に示す。Intel Pentium(登録商標)4上へのDES暗号化処理の実装は、C言語によってDES暗号
化処理の仕様を忠実に記述したものをコンパイルすることによって行った。コンパイルオプションには−O2を用いた。
The operating frequency of the DES encryption process in this example was 6.25MH Z. As a comparison target, Table 2 also shows the results when DES encryption processing is performed on Intel Pentium (registered trademark) 4. Implementation of the DES encryption processing on the Intel Pentium (registered trademark) 4 was performed by compiling a DES encryption processing specification faithfully written in C language. -O2 was used as a compile option.

表2から再構成可能プロセッサ20上でのDES暗号化処理は、Intel Pentium(登録商標)4上でのDES暗号化処理よりも3.8倍高い性能を示した。これは、動的再構成可能プロセッサ20の構成要素であるPEが入力に対して1ビット単位で任意の論理関数を割り当てることが可能であるとう特徴をDES暗号化処理に生かすことができたためである。   From Table 2, the DES encryption processing on the reconfigurable processor 20 showed 3.8 times higher performance than the DES encryption processing on the Intel Pentium® 4. This is because the PE, which is a component of the dynamically reconfigurable processor 20, can make use of the characteristic that an arbitrary logical function can be assigned to the input in units of 1 bit in the DES encryption processing. is there.

DES暗号化処理では、1ビット単位での転置や換字を繰り返す。Intel Pentium(登録商標)4などの32ビットマイクロプロセッサでは、1ビット単位で処理を行う際には、1ビットを取り出す処理が必要となる。動的再構成可能プロセッサ20のPEは1ビット単位の転置処理では、データをレジスタ・ファイル25からリコンフィギュラブル・データ・パス24に取り込み、指定のビット位置に移動させて再びレジスタ・ファイル25に格納する。これによって、大量のデータの転置処理が一命令で可能となった。   In the DES encryption process, transposition and substitution in units of 1 bit are repeated. In a 32-bit microprocessor such as Intel Pentium (registered trademark) 4, when processing is performed in units of 1 bit, processing for extracting 1 bit is required. The PE of the dynamically reconfigurable processor 20 fetches data from the register file 25 to the reconfigurable data path 24, moves it to a specified bit position and transfers it again to the register file 25 in the 1-bit transposition processing. Store. This makes it possible to transpose a large amount of data with a single instruction.

また、PEでは入力に対して任意の論理関数を割り当てることができるので、データ依存関係のある複数の処理を合成し、一命令で実行することによって、実行クロック・サイクル数を削減することが可能であった。リコンフィギュラブル・データ・パス24上でのDES暗号化処理において、平文64ビットの暗号化に要したクロック・サイクル数は70サイクルであった。   In addition, since any logical function can be assigned to the input in PE, it is possible to reduce the number of execution clock cycles by synthesizing multiple data-dependent processes and executing them with a single instruction. Met. In the DES encryption processing on the reconfigurable data path 24, the number of clock cycles required for encryption of 64-bit plaintext was 70 cycles.

本発明は、カスタムLSIの設計及び開発を行う場合のプラットフォームとして利用することができる。また、アプリケーションに特化したカスタムLSIの製造に利用することもでき、産業上の利用可能性がある。   The present invention can be used as a platform when designing and developing a custom LSI. Further, it can be used for manufacturing custom LSIs specialized for applications, and has industrial applicability.

本発明のカスタムLSI開発プラットフォーム1の全体構成ブロック図である。1 is an overall configuration block diagram of a custom LSI development platform 1 of the present invention. FIG. ソフトウェアプログラム10の詳細ブロック図を示したものである。1 shows a detailed block diagram of a software program 10. FIG. ISAジェネレータ110の詳細ブロック図を示したものである。A detailed block diagram of the ISA generator 110 is shown. 本発明の一実施の形態である再構成可能プロセッサ20のブロック図を示したものである。1 is a block diagram of a reconfigurable processor 20 according to an embodiment of the present invention. 命令フォーマットの構成を示した図である。It is the figure which showed the structure of the instruction format. リコンフィギュラブル・データ・パス24の構成の一実施形態を示したものである。An embodiment of the configuration of the reconfigurable data path 24 is shown. AES暗号化の処理の流れを示した図である。It is the figure which showed the flow of the process of AES encryption. AESの暗号化処理の中間コードの記述例である。It is an example of description of the intermediate code of the encryption process of AES. AESの暗号化処理の中間コードの記述例である。It is an example of description of the intermediate code of the encryption process of AES. DES暗号化処理のフローチャートを示したものである。6 is a flowchart of DES encryption processing.

符号の説明Explanation of symbols

1 カスタムLSI開発プラットフォーム
10 ソフトウェアプログラム
20 再構成可能プロセッサ
21 コントローラ
22 スタック
23 コンフィギュレーション・メモリ
24 再構成可能論理回路(リコンフィギュラブル・データ・パス)
25 レジスタ・ファイル
26 メモリ
100 Cソースプログラム
110 ISAジェネレータ
111 中間コード
112 命令セット・アーキテクチャ(ISA)
130 論理回路構成ジェネレータ
131 論理回路構成情報
141 プログラム・オブジェクトコード
142 論理回路構成・オブジェクトコード
160 ライブラリ
1 Custom LSI development platform
10 Software programs
20 Reconfigurable processors
21 Controller 22 Stack 23 Configuration Memory 24 Reconfigurable Logic Circuit (Reconfigurable Data Path)
25 Register file 26 Memory 100 C source program
110 ISA Generator 111 Intermediate Code 112 Instruction Set Architecture (ISA)
130 Logic Circuit Configuration Generator 131 Logic Circuit Configuration Information 141 Program Object Code 142 Logic Circuit Configuration Object Code 160 Library

Claims (10)

ースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、
前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、
前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、
前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、
前記変換手段は、ISAジェネレータと論理回路構成ジェネレータとコンパイラとアセンブラとを有し、
前記ISAジェネレータは、
前記ソースプログラムの命令のパターンを抽出する手段と、
前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、
前記論理回路構成ジェネレータは、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成する手段を有し、
前記コンパイラは、前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換し、
前記アセンブラは、前記アセンブラコードをプログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換する
ことを特徴とするカスタムLSI開発プラットフォーム。
Means for performing conversion means, the resetting of logic circuitry for each step on the basis of the program object code and the logic circuitry object code that converts source over scan program in the program object code and logic circuitry object code A custom LSI development platform with a dynamically reconfigurable processor including
The dynamically reconfigurable processor has a controller that performs overall management and a reconfigurable logic circuit;
The controller determines whether the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, and when the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, Load configuration data into the reconfigurable logic circuit;
The reconfigurable logic circuit performs processing on input data when the logic circuit configuration is determined,
The converting means includes an ISA generator, a logic circuit configuration generator, a compiler, and an assembler.
The ISA generator
Means for extracting a pattern of instructions of the source program;
Comparing the extracted instruction pattern with a custom instruction pattern stored in a library, replacing the extracted instruction with the custom instruction and / or a combination of custom instructions to generate intermediate code; and Generating an instruction set architecture comprising custom instructions and logic element connection information ;
The logic circuit configuration generator generates logic circuit configuration information of the dynamically reconfigurable processor from the logic element connection information and arrangement / arrangement information of programmable elements that configure the logic circuit of the dynamically reconfigurable processor. Having means,
The compiler compiles the intermediate code and the custom instruction into an assembler code,
The custom LSI development platform , wherein the assembler uses the assembler code as a program / object code and converts the logic circuit configuration information into a logic circuit configuration / object code .
前記中間コードは、前記ライブラリに格納されているカスタム命令を呼び出すファンクションコールと、前記プロセッサの制御命令を含
求項に記載のカスタムLSI開発プラットフォーム。
The intermediate code, and function calls that call custom instructions stored in the library, including the control commands of the processor
Custom LSI development platform according to Motomeko 1.
前記プログラム・オブジェクトコードと前記論理回路再構成・オブジェクトコードに基づいて、前記動的再構成可能プロセッサが前記ソースプログラムを実行するパフォーマンスをシミュレートする手段を備えたことを特徴とする
請求項1又は2に記載のカスタムLSI開発プラットフォーム。
Wherein said program object code based on the logic circuit reconfiguration object code, according to claim 1 wherein the dynamically reconfigurable processor, comprising the means for simulating the performance of executing the source program or 2. Custom LSI development platform described in 2 .
前記ISAジェネレータは、
記カスタム命令に置き換えられなかった命令が既存のカスタム命令に合成可能である場合は、新たなカスタム命令のパターンとして定義して、前記ライブラリ中のカスタム命令を更新する手段を備えたことを特徴とする
請求項1から3のいずれかに記載のカスタムLSI開発プラットフォーム。
The ISA generator
If the instruction has not been replaced previously asked custom instruction can be combined into an existing custom instruction, that defines as a pattern of a new custom instruction, comprising means for updating the custom instruction in said library The custom LSI development platform according to claim 1, wherein the platform is a custom LSI development platform.
ースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、
前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、
前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、
前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、
前記変換手段は、ISAジェネレータとオブジェクトコードを生成する手段とを有し、
前記ISAジェネレータは、
前記ソースプログラムの命令のパターンを抽出する手段と、
前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、
前記オブジェクトコードを生成する手段は、前記中間コード及び前記カスタム命令からプログラム・オブジェクトコードを生成し、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から論理回路構成・オブジェクトコードを生成する
ことを特徴とするカスタムLSI開発プラットフォーム。
Means for performing a converting means, the resetting of logic circuitry for each step on the basis of the program object code and the logic circuitry object code that converts source over scan program in the program object code and logic circuitry object code A custom LSI development platform with a dynamically reconfigurable processor including
The dynamically reconfigurable processor has a controller that performs overall management and a reconfigurable logic circuit;
The controller determines whether the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, and when the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, Load configuration data into the reconfigurable logic circuit;
The reconfigurable logic circuit performs processing on input data when the logic circuit configuration is determined,
The converting means includes an ISA generator and means for generating an object code,
The ISA generator
Means for extracting a pattern of instructions of the source program;
Comparing the extracted instruction pattern with a custom instruction pattern stored in a library, replacing the extracted instruction with the custom instruction and / or a combination of custom instructions to generate intermediate code; and Generating an instruction set architecture comprising custom instructions and logic element connection information ;
The means for generating the object code generates a program object code from the intermediate code and the custom instruction, and an arrangement array of programmable elements constituting the logic element connection information and the logic circuit of the dynamically reconfigurable processor A custom LSI development platform characterized by generating logic circuit configuration and object code from information .
ースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、
前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、
前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、
前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、
前記変換手段は、ISAジェネレータとオブジェクトコードを生成する手段とを有し、
前記ISAジェネレータは、
前記ソースプログラムの命令構造を解析して、データ依存関係のある処理を抽出する手段と、
前記抽出したデータ依存関係のある処理とライブラリに格納されているカスタム命令のパターンとを比較し、前記データ依存関係のある複数の処理を合成してカスタム命令で置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、
前記オブジェクトコードを生成する手段は、前記中間コード及び前記カスタム命令からプログラム・オブジェクトコードを生成し、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から論理回路構成・オブジェクトコードを生成する
ことを特徴とするカスタムLSI開発プラットフォーム。
Means for performing a converting means, the resetting of logic circuitry for each step on the basis of the program object code and the logic circuitry object code that converts source over scan program in the program object code and logic circuitry object code A custom LSI development platform with a dynamically reconfigurable processor including
The dynamically reconfigurable processor has a controller that performs overall management and a reconfigurable logic circuit;
The controller determines whether the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, and when the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, Load configuration data into the reconfigurable logic circuit;
The reconfigurable logic circuit performs processing on input data when the logic circuit configuration is determined,
The converting means includes an ISA generator and means for generating an object code,
The ISA generator
It analyzes the command structure of the source program, means for extracting the processing that data dependencies,
Comparing the pattern of custom instructions stored in the processing and libraries of the extracted data dependence, it generates an intermediate code and substituting custom instruction by combining a plurality of processes of the data dependence And a means for generating an instruction set architecture comprising custom instructions and logic element connection information ,
The means for generating the object code generates a program object code from the intermediate code and the custom instruction, and an arrangement array of programmable elements constituting the logic element connection information and the logic circuit of the dynamically reconfigurable processor A custom LSI development platform characterized by generating logic circuit configuration and object code from information .
ースプログラムをプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段と、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードに基づいて1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサとを備えたカスタムLSI開発プラットフォームであって、
前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、
前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、
前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、
前記変換手段は、ISAジェネレータと論理回路構成ジェネレータとコンパイラとアセンブラとを有し、
前記ISAジェネレータは、
前記ソースプログラムの命令構造を解析して、データ依存関係のある処理を抽出する手段と、
前記抽出したデータ依存関係のある処理とライブラリに格納されているカスタム命令のパターンとを比較し、前記データ依存関係のある複数の処理を合成してカスタム命令で置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを有し、
前記論理回路構成ジェネレータは、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成する手段を有し、
前記コンパイラは、前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換し、
前記アセンブラは、前記アセンブラコードをプログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換する
ことを特徴とするカスタムLSI開発プラットフォーム。
Means for performing a converting means, the resetting of logic circuitry for each step on the basis of the program object code and the logic circuitry object code that converts source over scan program in the program object code and logic circuitry object code A custom LSI development platform with a dynamically reconfigurable processor including
The dynamically reconfigurable processor has a controller that performs overall management and a reconfigurable logic circuit;
The controller determines whether the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, and when the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, Load configuration data into the reconfigurable logic circuit;
The reconfigurable logic circuit performs processing on input data when the logic circuit configuration is determined,
The converting means includes an ISA generator, a logic circuit configuration generator, a compiler, and an assembler.
The ISA generator
It analyzes the command structure of the source program, means for extracting the processing that data dependencies,
Comparing the pattern of custom instructions stored in the processing and libraries of the extracted data dependence, it generates an intermediate code and substituting custom instruction by combining a plurality of processes of the data dependence And a means for generating an instruction set architecture comprising custom instructions and logic element connection information ,
The logic circuit configuration generator generates logic circuit configuration information of the dynamically reconfigurable processor from the logic element connection information and arrangement / arrangement information of programmable elements that configure the logic circuit of the dynamically reconfigurable processor. Having means,
The compiler compiles the intermediate code and the custom instruction into an assembler code,
The custom LSI development platform , wherein the assembler uses the assembler code as a program / object code and converts the logic circuit configuration information into a logic circuit configuration / object code .
カスタムLSI開発プラットフォームにおいて、ソースプログラムを変換して、1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサにおいて実行するために用いられるプログラム・オブジェクトコードを生成する生成方法であって、
前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路を有し、
前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、
前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、
前記カスタムLSI開発プラットフォームは、ISAジェネレータとコンパイラと論理回路構成ジェネレータとアセンブラを有する変換手段を備えるものであり、
前記ISAジェネレータが備える手段が、前記ソースプログラムの命令のパターンを抽出するステップと
前記ISAジェネレータが備える手段が、前記抽出した命令のパターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成するステップと、
前記論理回路構成ジェネレータが備える手段が前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成し、前記コンパイラが前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換するステップと、
前記アセンブラが、前記アセンブラコードを前記プログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換することにより、前記プログラム・オブジェクトコード及び前記論理回路構成・オブジェクトコードを生成するステップ
を含むことを特徴とする生成方法。
Generating method for generating a program / object code used in a dynamically reconfigurable processor including means for converting a source program and resetting a logic circuit configuration for each step in a custom LSI development platform Because
The dynamically reconfigurable processor has a controller that performs overall management and a reconfigurable logic circuit;
The controller determines whether the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, and when the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, Load configuration data into the reconfigurable logic circuit;
The reconfigurable logic circuit performs processing on input data when the logic circuit configuration is determined,
The custom LSI development platform includes a conversion means having an ISA generator, a compiler, a logic circuit configuration generator, and an assembler.
A step wherein the means provided in the ISA generator, which extracts the patterns of instructions of the source program,
The ISA generator means provided in, compared with the pattern of the custom instruction stored in the pattern and library instruction that the extracted, the custom instruction instruction that the extraction, and / or substituted with a combination of custom instructions Generating intermediate code and generating an instruction set architecture comprising custom instructions and logic element connection information ;
The means included in the logic circuit configuration generator is configured to obtain logic circuit configuration information of the dynamically reconfigurable processor from the logic element connection information and arrangement information of programmable elements constituting the logic circuit of the dynamically reconfigurable processor. Generating and compiling the intermediate code and the custom instructions into assembler code;
The assembler generates the program / object code and the logic circuit configuration / object code by using the assembler code as the program / object code and converting the logic circuit configuration information into a logic circuit configuration / object code.
Generating how to characterized in that it comprises a.
前記ISAジェネレータが備える手段が、前記カスタム命令として抽出されなかった命令が既存のカスタム命令に合成可能である場合は、新たなカスタム命令のパターンとして定義して、前記ライブラリ中のカスタム命令を更新するステップを含むWhen an instruction that is not extracted as the custom instruction can be synthesized into an existing custom instruction, the means included in the ISA generator defines a new custom instruction pattern and updates the custom instruction in the library. Including steps
請求項8に記載の生成方法。The generation method according to claim 8.
コンピュータを、ソースプログラムを1ステップ毎に論理回路構成の再設定を行う手段を含む動的再構成可能プロセッサにおいて実行するために用いられるプログラム・オブジェクトコード及び論理回路構成・オブジェクトコードに変換する変換手段として機能させるためのプログラムであって、
前記動的再構成可能プロセッサは、全体管理を行うコントローラと再構成可能論理回路とを有し、
前記コントローラは、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令か否かを判断し、前記プログラム・オブジェクトコードの命令が前記再構成可能論理回路を使う命令である場合に、前記再構成可能論理回路にコンフィギュレーション・データをロードし、
前記再構成可能論理回路は、論理回路構成が確定すると、入力データに対して処理を行うものであり、
前記変換手段は、ISAジェネレータとコンパイラと論理回路構成ジェネレータとアセンブラとを有し、
前記ISAジェネレータは、
記ソースプログラムの命令パターンを抽出する手段と、
前記抽出した命令パターンとライブラリに格納されているカスタム命令のパターンとを比較し、前記抽出した命令を前記カスタム命令、及び/又はカスタム命令の組み合わせで置換して中間コードを生成し、かつ、カスタム命令及び論理素子接続情報とから成る命令セット・アーキテクチャを生成する手段とを備え、
前記コンパイラは、前記中間コード及び前記カスタム命令をコンパイルしてアセンブラコードに変換し、
前記論理回路構成ジェネレータは、前記論理素子接続情報及び前記動的再構成可能プロセッサの論理回路を構成するプログラマブル・エレメントの配置配列情報から、前記動的再構成可能プロセッサの論理回路構成情報を生成する手段を有し、
前記アセンブラは、前記アセンブラコードをプログラム・オブジェクトコードとし、前記論理回路構成情報を論理回路構成・オブジェクトコードに変換するものである
ことを特徴とするプログラム。
Conversion means for converting a computer into a program, object code, and logic circuit configuration / object code used to execute a source program in a dynamically reconfigurable processor including means for resetting a logic circuit configuration step by step Is a program for functioning as
The dynamically reconfigurable processor has a controller that performs overall management and a reconfigurable logic circuit;
The controller determines whether the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, and when the instruction of the program object code is an instruction that uses the reconfigurable logic circuit, Load configuration data into the reconfigurable logic circuit;
The reconfigurable logic circuit performs processing on input data when the logic circuit configuration is determined,
The converting means includes an ISA generator, a compiler, a logic circuit configuration generator, and an assembler.
The ISA generator
It means for extracting a pattern of instructions before Kiso Supurogura arm,
Comparing the pattern of the custom instruction stored in the pattern and library instruction that the extracted, the custom instruction instruction that the extraction, and / or substituted with a combination of custom instructions to generate an intermediate code, and, Means for generating an instruction set architecture comprising custom instructions and logic element connection information;
The compiler compiles the intermediate code and the custom instruction into an assembler code,
The logic circuit configuration generator generates logic circuit configuration information of the dynamically reconfigurable processor from the logic element connection information and arrangement / arrangement information of programmable elements that configure the logic circuit of the dynamically reconfigurable processor. Having means,
The assembler uses the assembler code as a program / object code and converts the logic circuit configuration information into a logic circuit configuration / object code.
A program characterized by that .
JP2005338457A 2004-11-30 2005-11-24 Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program Expired - Fee Related JP4390211B2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005338457A JP4390211B2 (en) 2004-11-30 2005-11-24 Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program
PCT/JP2005/022401 WO2006059775A2 (en) 2004-11-30 2005-11-30 Dynamically reconfigurable processor
EP05814535A EP1836601A2 (en) 2004-11-30 2005-11-30 Dynamically reconfigurable processor
KR1020077014815A KR20070097051A (en) 2004-11-30 2005-11-30 Dynamically reconfigurable processor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004345400 2004-11-30
JP2005338457A JP4390211B2 (en) 2004-11-30 2005-11-24 Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program

Publications (2)

Publication Number Publication Date
JP2006185423A JP2006185423A (en) 2006-07-13
JP4390211B2 true JP4390211B2 (en) 2009-12-24

Family

ID=36738456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005338457A Expired - Fee Related JP4390211B2 (en) 2004-11-30 2005-11-24 Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program

Country Status (1)

Country Link
JP (1) JP4390211B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009205264A (en) * 2008-02-26 2009-09-10 Nippon Telegr & Teleph Corp <Ntt> Web service request processing apparatus, web service request processing method, and web service request processing system
JP5163332B2 (en) * 2008-07-15 2013-03-13 富士通セミコンダクター株式会社 Design program, design apparatus, and design method
US20130212366A1 (en) * 2012-02-09 2013-08-15 Altera Corporation Configuring a programmable device using high-level language
US8959469B2 (en) * 2012-02-09 2015-02-17 Altera Corporation Configuring a programmable device using high-level language
US11093682B2 (en) 2019-01-14 2021-08-17 Microsoft Technology Licensing, Llc Language and compiler that generate synchronous digital circuits that maintain thread execution order

Also Published As

Publication number Publication date
JP2006185423A (en) 2006-07-13

Similar Documents

Publication Publication Date Title
US20060242385A1 (en) Dynamically reconfigurable processor
US7610475B2 (en) Programmable logic configuration for instruction extensions
Goldstein et al. PipeRench: A reconfigurable architecture and compiler
Ansaloni et al. EGRA: A coarse grained reconfigurable architectural template
JP4893309B2 (en) Data processing apparatus having reconfigurable logic circuit
Zhao et al. Performance modeling and directives optimization for high-level synthesis on FPGA
US7484186B2 (en) Method for designing a system LSI
Yu et al. Vector processing as a soft-core CPU accelerator
JP4390211B2 (en) Custom LSI development platform, instruction set architecture, logic circuit configuration information generation method, and program
JP2003196333A (en) Method for designing system lsi (large scale integration) and recording medium in which the same in stored
Gokhale et al. High level compilation for fine grained fpgas
WO2006059775A2 (en) Dynamically reconfigurable processor
JP2793342B2 (en) Arithmetic processing unit
Sun et al. Designing high-quality hardware on a development effort budget: A study of the current state of high-level synthesis
Chiu et al. A multi-streaming SIMD multimedia computing engine
JP2006202330A (en) Method for designing system lsi and recording medium storing the same
JP4787711B2 (en) Data processing apparatus and method, computer program, information storage medium, and data processing system
JP4531715B2 (en) System LSI design method and recording medium storing the same
Sklyarov et al. Design of Digital Circuits on the Basis of Hardware Templates.
JP4208919B2 (en) Activation code generation method
JP2024024312A (en) Processor and compiler
Verdoscia Codacs project: A development tool for embedded system prototyping
Gokhale et al. An Introduction to Reconfigurable Computing
Kavvadias et al. Design space exploration tools for the ByoRISC configurable processor family
Oppold et al. Design and validation of execution schemes for dynamically reconfigurable architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090527

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090716

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090724

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090716

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091002

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131016

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees