(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023088120
(43)【公開日】2023-06-26
(54)【発明の名称】ソフトウェア開発装置およびソフトウェア開発プログラム
(51)【国際特許分類】
G06F 8/41 20180101AFI20230619BHJP
【FI】
G06F8/41 130
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021202788
(22)【出願日】2021-12-14
(71)【出願人】
【識別番号】521314127
【氏名又は名称】帝都 久利寿
(71)【出願人】
【識別番号】514318600
【氏名又は名称】コネクトフリー株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】帝都 久利寿
【テーマコード(参考)】
5B081
【Fターム(参考)】
5B081CC21
5B081CC41
(57)【要約】
【課題】プロセッサの命令セットアーキテクチャおよびプロセッサに与える命令コードの両方を考慮した新たなソフトウェア開発技術を提供する。
【解決手段】再構成可能なプロセッサで実行されるソフトウェアを生成するソフトウェア開発装置は、ソースコードを解析する解析モジュールと、プロセッサに与える命令コードを含むオブジェクトコードを生成する第1の生成モジュールと、プロセッサの命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コードを生成する第2の生成モジュールと、解析結果に基づいて、オブジェクトコードおよび命令セットアーキテクチャ設定コードの内容を決定する最適化モジュールとを含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
再構成可能なプロセッサで実行されるソフトウェアを生成するソフトウェア開発装置であって、
ソースコードを解析する解析モジュールと、
前記プロセッサに与える命令コードを含むオブジェクトコードを生成する第1の生成モジュールと、
前記プロセッサの命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コードを生成する第2の生成モジュールと、
解析結果に基づいて、前記オブジェクトコードおよび前記命令セットアーキテクチャ設定コードの内容を決定する最適化モジュールとを備える、ソフトウェア開発装置。
【請求項2】
前記命令セットアーキテクチャ設定コードは、前記プロセッサに実現されたワイヤードロジックを用いた複数の処理を単一の命令コードに対応付ける定義を含む、請求項1に記載のソフトウェア開発装置。
【請求項3】
前記命令セットアーキテクチャ設定コードは、前記プロセッサに実現すべきワイヤードロジックの定義を含む、請求項1または2に記載のソフトウェア開発装置。
【請求項4】
前記最適化モジュールは、前記ソースコードに含まれる特定の処理の繰り返し数および処理の複雑性に応じて、前記オブジェクトコードおよび前記命令セットアーキテクチャ設定コードの内容を決定する、請求項1~3のいずれか1項に記載のソフトウェア開発装置。
【請求項5】
再構成可能なプロセッサで実行されるソフトウェアを生成するソフトウェア開発プログラムであって、前記ソフトウェア開発プログラムはコンピュータに
ソースコードを解析するステップと、
前記プロセッサに与える命令コードを含むオブジェクトコードを生成するステップと、
前記プロセッサの命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コードを生成するステップと、
解析結果に基づいて、前記オブジェクトコードおよび前記命令セットアーキテクチャ設定コードの内容を決定するステップとを実行させる、ソフトウェア開発プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ソフトウェア開発装置およびソフトウェア開発プログラムに関する。
【背景技術】
【0002】
従来より、再構成可能なコンピュータあるいはプロセッサが実用化されている。このようなコンピュータあるいはプロセッサのためのソフトウェアを生成する技術が提案されている。例えば、特開2006-155632号公報(特許文献1)は、たとえばCまたはパスカルで書かれたソースコードをコンパイルして、選択的に交換可能な内部ハードウェア構造を有する動的に再設定可能な処理ユニットで使用する実行ファイルを生成するためのシステムを開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述の特許文献1に開示される構成において、動的に再設定可能な処理ユニットで使用するためのオブジェクトファイルを生成するためには、複数の命令ステートメントと、命令ステートメントのサブセットについてハードウェア構造の1つを指定する再設定指示とを含むソースファイルを入力する必要がある。そのため、予め定められたハードウェア構造を利用することができるのみであり、処理全体が最適化されているとは限らない。
【0005】
本開示は、プロセッサの命令セットアーキテクチャおよびプロセッサに与える命令コードの両方を考慮した新たなソフトウェア開発技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示のある形態に従えば、再構成可能なプロセッサで実行されるソフトウェアを生成するソフトウェア開発装置が提供される。ソフトウェア開発装置は、ソースコードを解析する解析モジュールと、プロセッサに与える命令コードを含むオブジェクトコードを生成する第1の生成モジュールと、プロセッサの命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コードを生成する第2の生成モジュールと、解析結果に基づいて、オブジェクトコードおよび命令セットアーキテクチャ設定コードの内容を決定する最適化モジュールとを含む。
【0007】
命令セットアーキテクチャ設定コードは、プロセッサに実現されたワイヤードロジックを用いた複数の処理を単一の命令コードに対応付ける定義を含んでいてもよい。
【0008】
命令セットアーキテクチャ設定コードは、プロセッサに実現すべきワイヤードロジックの定義を含んでいてもよい。
【0009】
最適化モジュールは、ソースコードに含まれる特定の処理の繰り返し数および処理の複雑性に応じて、オブジェクトコードおよび命令セットアーキテクチャ設定コードの内容を決定するようにしてもよい。
【0010】
本開示の別の形態に従えば、再構成可能なプロセッサで実行されるソフトウェアを生成するソフトウェア開発プログラムが提供される。ソフトウェア開発プログラムはコンピュータに、ソースコードを解析するステップと、プロセッサに与える命令コードを含むオブジェクトコードを生成するステップと、プロセッサの命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コードを生成するステップと、解析結果に基づいて、オブジェクトコードおよび命令セットアーキテクチャ設定コードの内容を決定するステップとを実行させる。
【発明の効果】
【0011】
本開示によれば、プロセッサの命令セットアーキテクチャおよびプロセッサに与える命令コードの両方を考慮した新たなソフトウェア開発技術を実現できる。
【図面の簡単な説明】
【0012】
【
図1】関連技術に従うソフトウェア開発装置を説明するための図である。
【
図2】本実施の形態に従うソフトウェア開発装置を説明するための図である。
【
図3】本実施の形態に従うソフトウェア開発装置のハードウェア構成例を示す模式図である。
【
図4】本実施の形態に従うソフトウェア開発装置の機能構成例を示す模式図である。
【
図5】本実施の形態に従うソフトウェア開発装置がマイクロプログラムを含む回路設計コードを生成する処理例を示す図である。
【
図6】本実施の形態に従うソフトウェア開発装置がコンフィグレーションを含む回路設計コードを生成する処理例を示す図である。
【
図7】本実施の形態に従うソフトウェア開発装置によるソースコードの処理例を示す模式図である。
【
図8】本実施の形態に従うソフトウェア開発装置におけるコード生成処理の処理例を示す模式図である。
【
図9】本実施の形態に従うソフトウェア開発装置が実行する処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
本開示に係る実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0014】
<A.概要>
まず、本開示の概要について説明する。本開示は、再構成可能なプロセッサで実行されるソフトウェアを生成するソフトウェア開発装置に向けられる。
【0015】
図1は、関連技術に従うソフトウェア開発装置を説明するための図である。
図1には、汎用的なプロセッサ20でプログラムを実行する例を示す。
【0016】
より具体的には、対象のプログラムを記述したソースコード10は、コンパイラ12により、オブジェクトコード14に変換される。プログラムが実行される際には、オブジェクトコード14に含まれる命令コード16(機械語で記述されている)がプロセッサ20に順次与えられる。
【0017】
プロセッサ20は、多数の論理回路で構成されており、入力される命令コード16に従って対象の論理回路を活性化し、命令コード16に対応する処理を順次実行する。命令コード16の各々は、命令を指令するためのオペコードと、(必要に応じて)対象を指定するためのオペランドとから構成される。
【0018】
プロセッサ20には、命令セットアーキテクチャ22が予め設計されている。そのため、ソースコード10に記述されたプログラムに従った処理をプロセッサ20に実行させるために、コンパイラ12は、命令セットアーキテクチャ22と整合するように、オブジェクトコード14を生成する。
【0019】
すなわち、オブジェクトコード14に含まれる命令コード16は、プロセッサ20に対して設定されている規則(命令セットアーキテクチャ22)に従って生成される。
【0020】
命令セットアーキテクチャとしては、CISC(Complex Instruction Set Computer:複雑命令セットコンピュータ)およびRISC(Reduce Instruction Set Computer:縮小命令セットコンピュータ)に大別される。それぞれの方式には、一長一短があるが、実行環境が定まっていれば、ユーザが命令セットアーキテクチャを自由に選択することはできない。
【0021】
本願発明者は、ソースコードに記述されたプログラムの内容などに応じて、命令セットアーキテクチャと命令コードとの組み合わせを最適化することで、処理性能をより向上できるという新たな技術思想を見出した。
【0022】
図2は、本実施の形態に従うソフトウェア開発装置を説明するための図である。
図2を参照して、本実施の形態においては、再構成可能なプロセッサ40を用いる。プロセッサ40は、命令セットアーキテクチャを任意に構成できる。
【0023】
命令セットアーキテクチャを任意に構成する仕組みとしては、例えば、(1)プロセッサ40に実装されるマイクロプログラムを任意に設定する、(2)ワイヤードロジック(論理回路)を任意に設定する、(3)(1)および(2)の組み合わせなど、が挙げられる。
【0024】
(1)プロセッサ40に実装されるマイクロプログラムを任意に設定する場合には、プロセッサ40に格納されるマイクロプロセッサを更新するためのインターフェイスがプロセッサ40に用意される。マイクロプログラムは、命令コードを解釈して、プロセッサに構成されたワイヤードロジックのうちいずれのワイヤードロジックをどのような順序で使用するかなどを決定する。
【0025】
(2)ワイヤードロジックを任意に設定する場合には、FPGA(Field-Programmable Gate Array)や公知の再構成可能デバイスを用いることができる。
【0026】
本実施の形態において、コード生成モジュール32は、コンパイラに対応する機能を有しており、ソースコード10からオブジェクトコード34および命令セットアーキテクチャ設定コード38を生成する。プログラムが実行される際には、オブジェクトコード34に含まれる命令コード36(機械語で記述されている)がプロセッサ40に順次与えられる。
【0027】
命令セットアーキテクチャ設定コード38は、プロセッサ40に命令セットアーキテクチャ42を設定するための情報を含む。上述したように、(1)プロセッサ40に実装されるマイクロプログラムを任意に設定する場合には、命令セットアーキテクチャ設定コード38は、マイクロプログラムを含む。このように、命令セットアーキテクチャ設定コード38は、プロセッサ40に実現されたワイヤードロジックを用いた複数の処理を単一の命令コードに対応付ける定義を含む。
【0028】
また、(2)ワイヤードロジックを任意に設定する場合には、命令セットアーキテクチャ設定コード38は、ワイヤードロジックを構成するための情報(以下、「コンフィグレーション」とも称す。)を含む。このように、命令セットアーキテクチャ設定コード38は、プロセッサ40に実現すべきワイヤードロジックの定義を含む。
【0029】
なお、(3)(1)および(2)の組み合わせの場合には、命令セットアーキテクチャ設定コード38は、マイクロプログラムおよびコンフィグレーションの両方を含み得る。
【0030】
コード生成モジュール32は、ソースコード10に記述されたプログラムに応じて、最適化されたオブジェクトコード34および命令セットアーキテクチャ設定コード38を生成する。
【0031】
上述したように、本実施の形態に従うソフトウェア開発装置によれば、ソースコード10に記述されたプログラムに応じて、プロセッサ40の命令セットアーキテクチャ42と、プロセッサ40に対して出力される命令コード36とを総合的に考慮して最適化できる。
【0032】
<B.ハードウェア構成例>
次に、本実施の形態に従うソフトウェア開発装置のハードウェア構成例について説明する。
【0033】
図3は、本実施の形態に従うソフトウェア開発装置100のハードウェア構成例を示す模式図である。ソフトウェア開発装置100は、典型的には汎用コンピュータで実現される。
【0034】
図3を参照して、ソフトウェア開発装置100は、主たるコンポーネントとして、プロセッサ102と、メインメモリ104と、入力部106と、ディスプレイ108と、ハードディスク110と、通信インターフェイス112とを含む。これらのコンポーネントは、内部バス114を介して接続されている。
【0035】
プロセッサ102は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。複数のプロセッサ102が配置されてもよいし、複数のコアを有するプロセッサ102を採用してもよい。
【0036】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。ハードディスク110は、プロセッサ102で実行される各種プログラムや各種データを保持する。なお、ハードディスク110に代えて、SSD(Solid State Drive)やフラッシュメモリなどの不揮発性記憶装置を採用してもよい。ハードディスク110に格納されたプログラムのうち、指定されたプログラムがメインメモリ104上に展開され、プロセッサ102は、メインメモリ104上に展開されたプログラムに含まれるコンピュータ可読命令(computer-readable instructions)を順次実行することで、後述するような各種機能を実現する。
【0037】
典型的には、ハードディスク110には、統合開発環境を実現するためのソフトウェア開発プログラム120と、ユーザが任意に作成するソースコード10と、ソースコード10から生成されるオブジェクトコード34および命令セットアーキテクチャ設定コード38とが格納される。ソフトウェア開発プログラム120は、ユーザが任意に作成するソースコード10からオブジェクトコード34および命令セットアーキテクチャ設定コード38を生成するものであり、プログラムの開発環境を提供するモジュールを含む。
【0038】
入力部106は、ソフトウェア開発装置100を操作するユーザの入力操作を受け付ける。入力部106は、例えば、キーボード、マウス、表示デバイス上に配置されたタッチパネル、ソフトウェア開発装置100の筐体に配置された操作ボタンなどであってもよい。
【0039】
ディスプレイ108は、プロセッサ102での処理結果などを表示する。ディスプレイ108は、例えば、LCD(Liquid Crystal Display)や有機EL(Electro-Luminescence)ディスプレイなどであってもよい。
【0040】
通信インターフェイス112は、プロセッサ40を含むデバイス200とのデータ交換を担当する。通信インターフェイス112は、例えば、USB(Universal Serial Bus)ポート、IEEE1394などのシリアルポート、レガシーなパラレルポートといった有線接続端子を含む。あるいは、通信インターフェイス112は、イーサネット(登録商標)ポートを含んでいてもよい。
【0041】
また、通信インターフェイス112は、プロセッサ40に対して、マイクロプログラムを書き込む機能、および/または、コンフィグレーションを書き込む機能を有していてもよい。
【0042】
ソフトウェア開発装置100は、コンピュータ可読命令を含むソフトウェア開発プログラム120を格納する非一過性(non-transitory)のメディアから、当該格納しているプログラムなどを読み出すためのコンポーネントをさらに有していてもよい。メディアは、例えば、DVD(Digital Versatile Disc)などの光学メディア、USBメモリなどの半導体メディアなどであってもよい。
【0043】
なお、ソフトウェア開発プログラム120は、メディアを介してソフトウェア開発装置100にインストールされるだけではなく、ネットワーク上の配信サーバから提供されるようにしてもよい。
【0044】
<C.機能構成例>
次に、本実施の形態に従うソフトウェア開発装置100の機能構成例について説明する。
【0045】
図4は、本実施の形態に従うソフトウェア開発装置100の機能構成例を示す模式図である。
図4に示す各モジュールは、典型的には、ソフトウェア開発装置100のプロセッサ102がソフトウェア開発プログラム120を実行することで実現されてもよい。
【0046】
図4を参照して、ソフトウェア開発装置100は、コード生成モジュール32を構成する機能構成として、字句解析モジュール121と、構文解析モジュール122と、中間コード生成モジュール123と、最適化モジュール124と、オブジェクトコード生成モジュール125と、プロセッサ構成コード生成モジュール126とを含む。
【0047】
字句解析モジュール121および構文解析モジュール122は、ソースコード10を解析する。
【0048】
より具体的には、字句解析モジュール121は、ソースコード10に含まれるキーワード、識別子、演算子、区切り文字などを解析する。構文解析モジュール122は、字句解析モジュール121により解析された字句に基づいて、ソースコード10に含まれる構文構造を決定する。
【0049】
中間コード生成モジュール123は、構文解析モジュール122により決定された構文構造に基づいて、任意の表現形式の中間コードを生成する。
【0050】
最適化モジュール124は、構文解析モジュール122により決定された構文構造および中間コード生成モジュール123により生成された中間コードに基づいて、プロセッサ40が処理を実現するための、命令セットアーキテクチャと命令コードとの組み合わせを決定する。このように、最適化モジュール124は、解析結果に基づいて、オブジェクトコード34および命令セットアーキテクチャ設定コード38の内容を決定する。
【0051】
オブジェクトコード生成モジュール125は、最適化モジュール124により決定された組み合わせに従って、中間コードから決定された命令コードを出力できるオブジェクトコード34を生成する。このように、オブジェクトコード生成モジュール125は、プロセッサ40に与える命令コードを含むオブジェクトコード34を生成する。
【0052】
プロセッサ構成コード生成モジュール126は、最適化モジュール124により決定された命令セットアーキテクチャに従って、決定された命令セットアーキテクチャを実現できる命令セットアーキテクチャ設定コード38を生成する。このように、プロセッサ構成コード生成モジュール126は、プロセッサ40の命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コード38を生成する。
【0053】
以上のような機能構成によって、コード生成モジュール32(ソフトウェア開発プログラム120)は、ソースコード10からオブジェクトコード34および命令セットアーキテクチャ設定コード38を生成する。
【0054】
<D.処理例>
次に、本実施の形態に従うソフトウェア開発装置100によるコード生成処理の一例について説明する。
【0055】
(d1:処理例1)
図5は、本実施の形態に従うソフトウェア開発装置100がマイクロプログラム48を含む命令セットアーキテクチャ設定コード38を生成する処理例を示す図である。
図5には、一例として、通信モジュールからパケットを送信する例を示す。
【0056】
より具体的には、通信モジュールのレジスタ46に送信対象のデータが順次書き込まれる例を示す。メモリ44には、アドレス001~アドレス004が付与された領域が形成されており、データ1~データ4がそれぞれ格納される。メモリ44に格納されたデータ1~データ4が順次レジスタ46へ送信される。このような一連の処理によって、通信モジュールからパケットが送信される。
【0057】
図5(A)を参照して、オブジェクトコード34A(説明の便宜上、ニーモニックの類似した表現を用いている(以下も同様である))は、データをメモリ44に順次格納するための命令群341と、メモリ44に格納されたデータをレジスタ46に順次格納するための命令群342とを含む。
図5(A)に示すように、命令セットアーキテクチャ設定コード38に実質的な情報を含めず、プロセッサ40の命令セットアーキテクチャ42に従って、オブジェクトコード34Aを生成するようにしてもよい。
【0058】
図5(B)を参照して、同一の処理を複数回繰り返す必要があるような場合には、任意の処理をマイクロプログラム48に定義してもよい。例えば、オブジェクトコード34Bには、データ格納命令343と、データ移動命令344とを含む。
【0059】
データ格納命令343は、「BST Data Addr 4」といった命令コードで記述されている。ここで、オペコードである「BST」の意味およびオペランドの形式は、マイクロプログラム48に記述されている。そのため、データ格納命令343は、マイクロプログラム48を参酌して解釈される。
【0060】
同様に、データ移動命令344は、「BMV Addr 4 Reg」といった令コードで記述されている。ここで、オペコードである「BMV」の意味およびオペランドの形式は、マイクロプログラム48に記述されている。そのため、データ移動命令344は、マイクロプログラム48を参酌して解釈される。
【0061】
すなわち、ソフトウェア開発装置100は、任意のオペコードの意味および対応するオペランドの形式を記述したマイクロプログラムを生成するとともに、生成されたマイクロプログラムに記述されたオペコードを用いたオブジェクトコード34を生成する。
【0062】
図6は、本実施の形態に従うソフトウェア開発装置100がコンフィグレーション50を含む命令セットアーキテクチャ設定コード38を生成する処理例を示す図である。
図6にも、一例として、通信モジュールからパケットを送信する例を示す。
【0063】
図6(A)には、
図5(A)と同様の構成を示す。
図6(A)に示す構成に対して、図(B)に示すように、通信モジュールからのパケットの送信に適したワイヤードロジックを採用してもよい。より具体的には、メモリ441~メモリ444をカスケード接続するとともに、メモリ441~メモリ444にデータ1~データ4をそれぞれ格納する入力経路を設けてもよい。そして、メモリ441~メモリ444に格納されているデータを順次隣接するメモリに移動する回路を設けてもよい。このように、通信モジュールからパケットを送信する処理に適したワイヤードロジックを構成することで、効率的な処理を実現できる。なお、コンフィグレーション50は、
図6(B)に示すようなワイヤードロジックを構成するための情報を含む。
【0064】
また、
図6(B)に示すようなワイヤードロジックを構成することで、併せて生成されるオブジェクトコード34Cは、通信モジュールからパケットを送信するための送信命令345を含むシンプルなコードにすることができる。なお、送信命令345は、コンフィグレーション50に従って構成されたワイヤードロジックに対応するオペコードを含む。
【0065】
このように、ワイヤードロジックおよびオブジェクトコードをトータルで最適化して、処理性能をより向上できる。
【0066】
ここで、命令セットアーキテクチャと命令コードとの組み合わせの最適化方法の一例として、ソースコード10に含まれる特定の処理の繰り返し数や処理の複雑性に応じて、命令セットアーキテクチャと命令コードとの組み合わせを決定してもよい。すなわち、最適化の手法として、ソースコード10に含まれる特定の処理の繰り返し数および処理の複雑性に応じて、オブジェクトコードおよび命令セットアーキテクチャ設定コードの内容を決定してもよい。
【0067】
あるいは、ソースコード10に含まれる記述のうち、予め定められた規則に合致する記述を抽出し、当該抽出した記述について、対応する命令セットアーキテクチャを割り当てるとともに、割り当てた命令セットアーキテクチャを参照するオペコードおよびオペランドからなる命令コード36(機械語で記述されている)を生成するようにしてもよい。
【0068】
(d2:処理例2)
図7は、本実施の形態に従うソフトウェア開発装置100によるソースコード10の処理例を示す模式図である。
図7に示すソースコード10は、例えば、入力処理コード、演算処理コード、暗号化処理コード、および、通信処理コードを含むとする。なお、実際のソースコード10においては、各処理コードが明確に区別されていないこともある。
【0069】
ソフトウェア開発装置100は、字句解析および構文解析によって、ソースコード10に含まれる処理を特定するとともに、特定した処理の繰り返し数や処理の複雑性などに基づいて、オブジェクトコード34および命令セットアーキテクチャ設定コード38(プロセッサ40に実現されるワイヤードロジック)のいずれを用いて各処理を実装するのかを決定する。
【0070】
図7(A)には、ソースコード10に記述された処理のすべてがオブジェクトコード14に実装されている例を示す。説明の便宜上、各処理を実現するための命令が個々に配置されている例を示すが、実際には、最適化されたオブジェクト形式のデータが生成される。
【0071】
図7(B)には、ソースコード10に記述された処理のうち、暗号化処理を除く処理がオブジェクトコード14に実装されている例を示す。命令セットアーキテクチャ設定コード38は、暗号化処理を実現するための暗号化処理ロジックを含んでおり、オブジェクトコード14は、命令セットアーキテクチャ設定コード38が定義する暗号化処理ロジックを参照するように構成されている。すなわち、命令セットアーキテクチャ設定コード38により、プロセッサ40には暗号化処理を実行するためのワイヤードロジックが構成される。オブジェクトコード14は、プロセッサ40に構成されたワイヤードロジックを実行できるようになっている。
【0072】
このように、ソフトウェア開発装置100は、ソースコード10の内容に応じて、オブジェクトコード14および命令セットアーキテクチャ設定コード38の内容を最適化する。
【0073】
(d3:処理例3)
図8は、本実施の形態に従うソフトウェア開発装置100におけるコード生成処理の処理例を示す模式図である。
図8には、ソースコード10から生成された中間コードの一部をグラフ化した図である。すなわち、
図8には、中間コードに対応する中間表現(IR:Intermediate Representation)の一例を示す。
【0074】
中間表現は、最終的に生成されるオブジェクトコード34および命令セットアーキテクチャ設定コード38とは独立した形式で、ソースコード10の内容を表現したものであり、例えば、
図8に示すような木構造で表現されたものであってもよいし、命令列の組み合わせで表現されたものであってもよい。
【0075】
例えば、パターンマッチングなどを用いて、繰り返し現れる部分的な木構造を抽出する。ソフトウェア開発装置100は、中間表現に含まれる構造のうち、同一または類似した部分(以下、「共通構造」とも称す。)を抽出する。
【0076】
ソフトウェア開発装置100は、検索された共通構造の処理内容および複雑性などに応じて、プロセッサ40にワイヤードロジックを構成する方が有利であると判断すると、共通記述に対応する専用ロジックを決定し、命令セットアーキテクチャ42(
図2参照)の一部として追加する。
【0077】
なお、中間表現に含まれる共通構造を抽出する方法としては、パターンマッチングに限らず、公知のAI(人工知能)を利用する方法であってもよい。また、パターンマッチングについても、任意のアルゴリズムを採用できる。
【0078】
上述したように、中間コード(中間表現)上で同一あるいは類似する部分を抽出することで、ソースコード10の記述に揺らぎが含まれる場合や、プログラム作成者間の記述のちがいなどがある場合であっても、確実に最適化できる。これによって、より効率的に、オブジェクトコード34および命令セットアーキテクチャ設定コード38を生成できる。
【0079】
<E.処理手順>
次に、本実施の形態に従うソフトウェア開発装置100が実行する処理手順の一例について説明する。
【0080】
図9は、本実施の形態に従うソフトウェア開発装置100が実行する処理手順の一例を示すフローチャートである。
図9に示す各ステップは、典型的には、ソフトウェア開発装置100のプロセッサ102がソフトウェア開発プログラム120を実行することで実現されてもよい。
【0081】
図9を参照して、ソフトウェア開発装置100は、ユーザ操作に応じて、ソースコード10を読み込み(ステップS2)、ソースコード10の字句解析を行う(ステップS4)。続いて、ソフトウェア開発装置100は、字句解析の結果に基づいて、ソースコード10に含まれる構文構造を決定し(ステップS6)、決定した構文構造に基づいて、中間コードを生成する(ステップS8)。
【0082】
ソフトウェア開発装置100は、字句解析の結果および生成された中間コードに基づいて、命令セットアーキテクチャと命令コードとの組み合わせを決定する(ステップS10)。そして、ソフトウェア開発装置100は、決定された組み合わせに従って、中間コードから決定された命令コードを出力できるオブジェクトコード34を生成する(ステップS12)。また、ソフトウェア開発装置100は、決定された組み合わせに従って、決定された命令セットアーキテクチャを実現できる命令セットアーキテクチャ設定コード38を生成する(ステップS14)。
【0083】
以上により、ソースコード10からのコード生成に係る処理は終了する。
【0084】
最終的に、ソフトウェア開発装置100は、ユーザ操作に応じて、生成したオブジェクトコード34および命令セットアーキテクチャ設定コード38を対象のデバイス200へ送信する(ステップS16)。
【0085】
<F.利点>
本実施の形態によれば、ソースコードの解析結果に基づいて、オブジェクトコードおよび命令セットアーキテクチャ設定コードの内容を最適化した上で、プロセッサに与える命令コードを含むオブジェクトコード、および、プロセッサの命令セットアーキテクチャを定義する命令セットアーキテクチャ設定コードを生成する。このような構成を採用することで、プロセッサの命令セットアーキテクチャおよびプロセッサに与える命令コードの両方を考慮した新たなソフトウェア開発技術を実現できる。
【0086】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0087】
10 ソースコード、12 コンパイラ、14,34,34A,34B,34C オブジェクトコード、16,36 命令コード、20,40 プロセッサ、22,42 命令セットアーキテクチャ、32 コード生成モジュール、38 命令セットアーキテクチャ設定コード、44,441~444 メモリ、46 レジスタ、48 マイクロプログラム、50 コンフィグレーション、100 ソフトウェア開発装置、102 プロセッサ、104 メインメモリ、106 入力部、108 ディスプレイ、110 ハードディスク、112 通信インターフェイス、114 内部バス、120 ソフトウェア開発プログラム、121 字句解析モジュール、122 構文解析モジュール、123 中間コード生成モジュール、124 最適化モジュール、125 オブジェクトコード生成モジュール、126 プロセッサ構成コード生成モジュール、200 デバイス、341,342 命令群、343 データ格納命令、344 データ移動命令、345 送信命令。