JP4665760B2 - 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム - Google Patents

電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム Download PDF

Info

Publication number
JP4665760B2
JP4665760B2 JP2005511009A JP2005511009A JP4665760B2 JP 4665760 B2 JP4665760 B2 JP 4665760B2 JP 2005511009 A JP2005511009 A JP 2005511009A JP 2005511009 A JP2005511009 A JP 2005511009A JP 4665760 B2 JP4665760 B2 JP 4665760B2
Authority
JP
Japan
Prior art keywords
command
processing
program
processing device
program data
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
JP2005511009A
Other languages
English (en)
Other versions
JPWO2005001689A1 (ja
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2005001689A1 publication Critical patent/JPWO2005001689A1/ja
Application granted granted Critical
Publication of JP4665760B2 publication Critical patent/JP4665760B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Description

本発明は、電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラムに関し、アプリケーションプログラムによる処理の一部分もしくはすべてを再構成可能なハードウェアを使用して高速に実行させるための技術に関する。
従来、CPUの処理能力を越えるようなアプリケーションプログラムを実行するために、専用ハードウェアを用いる手法が提案/開発されている。図30はアプリケーションプログラムの全てを専用ハードウェア化する手法である。図31はアプリケーションプログラムの一部を専用ハードウェア化し、汎用CPUとネットワークを介して接続して処理し、処理の一部を専用ハードウェアにより高速化する手法である。図32はアプリケーションプログラムの一部を専用ハードウェア化し、CPUの内部に専用ハードウェアで処理を実行する新たな命令セットを追加することで追加した命令で処理する部分を高速化する手法である。
このように、ハードウェアにアプリケーション全体もしくは一部を実装する手法は、処理能力を大幅に向上する反面、アプリケーション毎に新規にハードウェアを開発/製造する必要があるため、膨大な費用を必要としている。
一方、FPGA(field programmable gate array)やPLD(programmable logic device)に代表されるような論理回路をプログラムにより形成可能な再構成可能ハードウェアはプログラムを変更して論理回路を再構成することで、デバイスを取り替えることなくプログラムで指定した特定の処理を実行することができ、注目されている。
近年では、専用ハードウェアの代わりとしてこの再構成可能ハードウェアを用いることで、ハードウェアを新規に製造することなく、つまり低コストで、高い処理能力を必要とするアプリケーションプログラムを再構成可能ハードウェアで実現する方法及びその装置が提案されている。
例えば、特開平08−316329や特開平11−184718号公報では専用ハードウェアの代わりに再構成可能ハードウェアを用いている。また、特許3099889号公報ではCPUに付加する拡張命令を再構成可能ハードウェアで実現している。
特開平08−316329号公報 特開平11−184718号公報 特許3099889号公報 特開2001−147802号公報 特表平11−507478号公報
上記、従来の手法では、再構成可能ハードウェアに形成する論理回路の容量を考慮していないため、再構成可能ハードウェアの容量を越えるようなアプリケーションプログラムを実装することができない。従って、アプリケーションプログラムの規模が大きくなればなるほどそれを実装するための再構成可能ハードウェアの規模も大きくなり高コストとなる。
一方、低コスト化のために、容量の小さい再構成可能ハードウェアにアプリケーションプログラムを実装する場合には、ハードウェアリソースに実装できる論理回路のサイズを意識してアプリケーションプログラムを分割する必要がある。
しかしながら、分割したプログラムやそのプログラム間の制御は実装するアーキテクチャに強く依存するという問題を持つ。従って、分割したプログラムやそのプログラム間の制御はアーキテクチャが変わると再利用することができなくなり、プログラムの設計効率を著しく低下させる。
さらに、アプリケーションプログラムの分割の妥当性(再構成可能ハードウェアに実装可能かどうか)は再構成可能ハードウェアとして実現する機能の最終段階、すなわち再構成可能ハードウェアへの論理回路のマッピングの段階で判明するため、例えば実装可能なサイズを越えてしまうような、不具合のある分割は大幅な設計の後戻りとなり、設計効率が著しく低下する。
また、特開2001−147802号公報や特表平11−507478号公報のように、分割した処理の間の制御を再構成可能ハードウェアの外部のCPUで制御する場合では、分割した処理間の制御はCPUのプログラムデータとして再利用可能であるが、分割した処理自体は、実装した再構成可能ハードウェアのアーキテクチャや実装可能な容量に依存してしまうため、再利用できない。さらに、処理間の制御をCPUで行なうため、CPUと再構成可能ハードウェアとの間でシステムコールのオーバヘッドなどの待ち時間が生じてしまい、性能が低下する。これらの問題はアプリケーションプログラムの規模が大きくなるほど顕著に現れてくる。
本発明の目的は、アプリケーションプログラムを処理単位に分割して処理単位毎に切り換えて再構成可能ハードウェアに論理回路を構築して実行させることにより低コストで処理速度を向上させ、アプリケーションプログラムを容易に再利用可能とした電子計算機、制御方法、プログラムの生成方法、及びプログラムを提供することにある。
本発明の第1の電子計算機は、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから1つを選択して有効とする有効バンク選択部とを有し、前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメモリを指定し、指定した前記処理要素の動作を開始するactivateコマンドと、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンドと、load_prg命令を中止するcancel_prgコマンドと、load_prg命令の終了まで待機するwait_prgコマンドとを解釈実行する
本発明の第2の電子計算機は、本発明の第1の電子計算機において、前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから1つを選択して有効とする有効バンク選択部とを有することを特徴とする。
本発明の第3の電子計算機は、本発明の第1の電子計算機において、前記バンクは、再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから1つを選択して有効とする有効ブロック選択部とを含むか、または再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する一つのプログラムデータメモリとを含むことを特徴とする。
本発明の第4の電子計算機は、本発明の第又は第3の電子計算機において、前記処理装置は、少なくとも1つの処理要素は再構成可能ハードウェアで構成され、残りの処理要素は再構成可能ハードウェア又は汎用CPUで構成されることを特徴とする。
本発明の第5の電子計算機は、本発明の第2、第3、又は第4の電子計算機において、前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメモリを指定し指定した前記処理要素の動作を開始するactivateコマンドと、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンドと、load_prg命令を中止するcancel_prgコマンドと、load_prg命令の終了まで待機するwait_prgコマンドとを解釈実行することを特徴とする。
本発明の第6の電子計算機は、本発明の第1、第2、第3、第4、又は第5の電子計算機において、前記制御装置が実行するコマンドを保持するコマンドコードメモリを有し、前記制御装置は前記処理装置から指示されたアドレスに従ってコマンドコードメモリからコマンドを読み出して解釈実行するコマンドコード参照装置を有することを特徴とする。
本発明の第7の電子計算機は、本発明の第6の電子計算機において、前記コマンドコード参照装置は前記コマンドコードメモリのアドレスを保持するアドレスカウンタを有し、前記処理装置と制御装置間のコマンドの受渡しにおいて、前記処理装置が出力したアドレス信号線が有効であることを示す第1のアドレス制御線と、第1の制御線が有効の場合アドレス信号線の値をそのままアドレスカウンタに格納するか或いはアドレス信号線の値をアドレスカウンタの値に加算してアドレスカウンタに格納するかを指示する第2のアドレスカウンタ制御線を備えることを特徴とする。
本発明の第8の電子計算機は、本発明の第7の電子計算機において、前記コマンドはコマンドを分類するコマンドコードとアドレスカウンタ制御コードと後続のコマンドを実行するかどうかを示すフラグとからなるフォーマットで前記コマンドコードメモリに格納され、前記アドレスカウンタ制御コードは、アドレスカウンタに値を設定するload_adrコマンドと、アドレスカウンタに指定した値を加算するadd_adrコマンドとを含むこと特徴とする。
本発明の第9の電子計算機は、本発明の第8の電子計算機において、前記アドレスカウンタ制御コードは、アドレスカウンタを前記制御装置に設けたアドレスカウンタスタックに退避するとともに新たな値をアドレスカウンタに設定するpush_adrコマンドと、アドレスカウンタスタックの値をアドレスカウンタに戻すpop_adrコマンドとを含むこと特徴とする。
本発明の第10の電子計算機は、本発明の第1乃至第9のいずれかの電子計算機において、前記処理装置に転送するデータを一時的に保持するキャッシュメモリとキャッシュメモリを制御するキャッシュコントローラを含むキャッシュ装置を有し、前記処理装置が発行するコマンドによってキャッシュコントローラの制御を行なうことを特徴とする。
本発明の第11の電子計算機は、本発明の第10の電子計算機において、前記キャッシュ装置は前記処理装置の外部で定義するアドレスを処理装置の内部で定義されるアドレスに変換するアドレス変換装置を有し、前記処理装置が発行するコマンドによってアドレス変換装置の制御を行なうことを特徴とする。
本発明の第12の電子計算機は、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから1つを選択して有効とする有効バンク選択部とを有し、前記処理装置は、少なくとも1つの処理要素が論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む第2の処理装置と第2の処理装置の指定したコマンドを実行する再構成可能な第2の制御装置とから構成されることを特徴とする。
本発明の半導体集積回路は、本発明の第1乃至第11のいずれかの電子計算機を実装したことを特徴とする。
本発明の第1の制御方法は、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が再構成可能ハードウェアを論理形成するプログラムの切り換えを実行することを特徴とする。
本発明の第2の制御方法は、本発明の第1の制御方法において、前記切り換えの後、前記処理装置内の一のプログラムデータメモリ上のプログラムの実行中にのプログラムを前記処理装置内の別のプログラムデータメモリに読み出すことを特徴とする。
本発明の第3の制御方法は、再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから1つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続するactivateコマンドを実行し、再構成可能ハードウェアが実行する論理回路の内容を切り換え、前記制御装置は、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンドと、load_prg命令を中止するcancel_prgコマンドと、load_prg命令の終了まで待機するwait_prgコマンドとを実行することを特徴とする。
本発明の第4の制御方法は、本発明の第2の制御方法において、前記制御装置は、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンドと、load_prg命令を中止するcancel_prgコマンドと、load_prg命令の終了まで待機するwait_prgコマンドとを実行することを特徴とする。
本発明の第1のプログラムの生成方法は、本発明の1乃至12の電子計算機がプログラムを生成する方法であって、アプリケーションプログラムの制御フローを解析して、アプリケーションプログラムを処理単位に分割するとともに分割した処理単位を電子計算機内で実行する再構成可能ハードウェアが制御するコマンドを組み合わせたコマンドシーケンス中間コードを生成する制御フロー解析手順と、コマンドシーケンス中間コードを電子計算機で実行可能な形式に変換してコマンドシーケンスを生成するコマンドシーケンス実装手順と、処理単位の動作内容を電子計算機で実行可能な形式に変換するプログラムデータ生成手順とを有することを特徴とする。
本発明の第2のプログラムの生成方法は、本発明の第1のプログラムの生成方法において、前記制御フロー解析手順は、アプリケーションプログラムの制御フローを解析して処理単位に分割する際に、各処理単位を前記再構成可能ハードウェアの論理を形成するプログラムを保持するプログラムデータメモリに格納可能なように分割することを特徴とする。
本発明の第1のプログラムは、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が再構成可能ハードウェアを論理形成するプログラムの切り換えを実行する手順をコンピュータに実行させる。
本発明の第2のプログラムは、再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから1つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続を切り換えるactivateコマンドを実行する手順をコンピュータに実行させ、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンド、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンド、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンド、load_prg命令を中止するcancel_prgコマンド、或いはload_prgコマンドの終了まで待機するwait_prgコマンドを実行する手順をコンピュータに実行させる
本発明の第3のプログラムは、本発明の第2のプログラムにおいて、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンド、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンド、指定した
記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンド、load_prg命令を中止するcancel_prgコマンド、或いはload_prgコマンドの終了まで待機するwait_prgコマンドを実行する手順をコンピュータに実行させる。
[図1]本発明の実施形態の構成を示すブロック図である。
[図2]本発明の実施形態の処理装置の一例を示すブロック図である。
[図3]本発明の実施形態の処理要素の一例を示した図である。
[図4]本発明の実施形態の処理要素の一例を示した図である。
[図5]本発明の実施形態の処理要素の一例を示した図である。
[図6]本発明の実施形態の制御装置と処理要素の接続例を示した図である。
[図7]本発明の実施形態の制御装置に実装するコマンドコードの構成を示した図である。
[図8]本発明の実施形態の制御装置に実装するコマンドコードの機能を示した図である。
[図9]本発明の実施形態の制御装置と処理要素の接続例を示した図である。
[図10]本発明の実施形態のコマンドの格納例を示した図である。
[図11]本発明の実施形態の制御装置と処理要素の接続例を示した図である。
[図12]本発明の実施形態のコマンドの格納例を示した図である。
[図13]本発明の実施形態のアドレスカウンタ制御コードの構成例を示した図である。
[図14]本発明の実施形態のアドレスカウンタ制御コードの機能例を示した図である。
[図15]本発明の実施形態のコマンドシーケンスを示した図である。
[図16]本発明の実施形態のキャッシュを付加した構成のブロック図である。
[図17]本発明の実施形態の動作説明で参照する構成例を示すブロック図である。
[図18]本発明の実施形態の実装するアプリケーションを示した図である。
[図19]本発明の実施形態のプログラムデータの生成フロー図である。
[図20]本発明の実施形態のコマンドシーケンス中間コードを示した図である。
[図21]本発明の実施形態の処理の制御フロー図である。
[図22]本発明の実施形態のコマンドコードメモリに割り当てたコマンドシーケンスの図である。
[図23]本発明の実施形態のメモリに割り当てたプログラムデータの図である。
[図24]本発明の実施形態の電源投入時の電子計算機の状態を示した図である。
[図25]本発明の実施形態の動作を示したタイミングチャートである。
[図26]本発明の実施形態の2つの処理装置で構成するブロック図である。
[図27]本発明の実施形態のメモリに割り当てたコマンドシーケンスの図である。
[図28]本発明の実施形態の2つの処理装置が動作するタイミングチャートである。
[図29]本発明の実施形態のプログラムデータの生成フロー図である。
[図30]従来技術においてアプリケーションプログラムの全てを専用ハードウェアとして実装する手法例を示した図である。
[図31]従来技術においてアプリケーションプログラムの一部を専用ハードウェアとして実装する手法例を示した図である。
[図32]従来技術においてアプリケーションプログラムの一部を専用ハードウェアとして実装する手法例を示した図である。
本発明の実施の形態について図面を参照して詳細に説明する。図1は本発明の実施の形態の電子計算機の基本的な構成を示すブロック図である。本発明の第1の実施形態の電子計算機30は、外部とのインタフェースを制御しデータを転送するインタフェース装置40と、アプリケーションプログラムの全部又は一部の処理を実行する処理装置70と、処理装置70から指示されたコマンドを実行する制御装置60とを含み、接続網20を介して外部記憶装置10と接続する。図1の電子計算機30は、処理装置70を2つ含んでいるが、1つでもよく、3つ以上でもよい。
処理装置70は、メモリ部80と処理部90からなる。図2は処理装置70の構成の一例を示した図であり、1つの処理要素91と1つのプログラムデータメモリ81からなるバンク101と、1つの処理要素91に対して複数のプログラムデータメモリ81を設けて選択できるようになっているバンク102と、選択メモリ83と、複数の処理要素91から1つを選択して出力する有効バンク選択部92を構成要素とする。
図2では処理装置70はバンク101とバンク102をそれぞれ2つずつ含んでいるが、バンク101又はバンク102のいずれかを1つ以上含めばよい。また、バンクが1つの構成であれば有効バンク選択部92は省略でき、バンクもプログラムデータメモリ81も1つの構成であれば選択メモリ83を省略できる。
処理装置70に入力されるプログラムデータ信号S80は、プログラムデータメモリ81及び選択メモリ83に接続される。プログラムデータメモリ81は処理要素91の処理内容を決定するためのプログラムを保持するメモリである。プログラムデータメモリ81に保持されるプログラムは通常外部記憶装置10に格納されており、必要に応じて接続網20、インタフェース装置40、プログラムデータ信号S80を介して転送されプログラムデータメモリ81に書き込まれる。なお、処理要素91がFPGAのような再構成可能ハードウェアである場合、プログラムデータメモリ81へ保持するプログラムは処理要素91の論理回路の形成を行うためのプログラムとなる。
処理要素91は接続するプログラムデータメモリ81に保持されるプログラムの内容に従った処理を実行する。例えば図3のように再構成可能ハードウェアで実現されるが、図4に示すようにCPUにて実現してもよい。
選択メモリ83は、有効バンク選択部92及び有効ブロック選択部82に接続され、処理装置70の中で有効にするバンクを選択したり、バンク102のように複数のプログラムデータメモリ81で構成されたバンクの中で有効にするプログラムデータメモリ81を選択したりする情報を保持する。なお、プログラムデータメモリ81への切り換えは瞬時に終わるので、切り換えられたプログラムデータメモリ81へのプログラムの格納が終了していれば瞬時に新たなプログラムに対応した処理を処理要素91は開始することができる。ただし、プログラムの格納が終わっていなければ、データ転送が終了しプログラムが格納されるまで待つ必要がある。
処理装置70から出力されるコマンド信号S91は処理装置70の処理要素91から生成される。処理装置70に入力される割り込み信号S92は処理装置70の処理要素91に入力され、その処理の過程で使用される。処理装置70に入出力される処理データ信号S93は、処理部90に接続され、処理に必要なデータや、処理を終えたデータの入出力線として使用される。
コマンド信号S91、割り込み信号S92及び処理データ信号S93は処理装置70が複数のバンクを含む場合選択メモリ83によって有効になっているバンクの処理要素91に入出力される。図2では、処理装置70へ入力したデータはすべての処理90に接続しているが、有効ではないバンクに入力しないように、選択メモリ83等から制御してそれらの入力データを切断するようにしてもよい。
次に、各処理要素91について詳細に説明する。処理要素91は図3に示すように、従来のFPGAやPLDに代表されるような再構成可能ハードウェアで構成される。ただし、処理要素91が複数ある場合に、その中の1つ又は複数を図4に示すように、CPU120で構成してもよい。CPU120で構成した処理要素91はアプリケーションプログラムの処理を高級言語で処理する部分を割り当てて処理したり、処理装置70内を制御したりすることを主な用途とする。なお、処理要素91をCPU120で構成した場合には、処理データ信号S93を介してプログラムを読み込めるため、図4におけるプログラムデータ接続線S101はなくてもよい。
また、処理要素91は、図5に示すように、本電子計算機30における制御装置60を再構成可能なハードウェアで実現し、再構成可能制御装置R60を構成してもよい。図5に示したように、再構成可能制御装置R60はプログラムデータ接続線S101を用いて設定され、設定される内容に従って処理内容を変えることができる。またコマンド信号S91や割り込み信号S92及び処理データ信号S93はインタフェース装置40を介して入出力される。
インタフェース装置40は処理装置70や制御装置60と電子計算機30の外部の接続網20とを接続し、接続網20側から電子計算機30に制御に関する通信が発生した場合には、接続網20の適切なプロトコルに基づいて制御装置60にコマンド信号S41を出力する。制御装置60からインタフェース装置40に割り込み信号S42等の制御に関する通信が発生した場合には、同様に適切なプロトコルを用いて接続網20を介して指定された接続先に伝える。
電子計算機30の内部から外部へのアクセスが発生した場合は、インタフェース装置40が適切なプロトコルに基づいて外部にアクセスを行なう。電子計算機30の外部から処理装置70に対するアクセスが発生した場合には、インタフェース装置40が適切なプロトコルに基づいてアクセスする。制御装置60は、インタフェース装置40を介して電子計算機30の外部の装置から伝えられたコマンド信号S41や処理装置70から出力されたコマンド信号S91を受けとり、受け取ったコマンドを解釈実行する。処理装置70が制御装置60へコマンド信号S91を発行する際のプロトコルの例を図6に示す。このプロトコルはインタフェース装置40と制御装置60の間のプロトコルに適用してもよい。
図6は、処理装置70がリクエスト信号S911と共に直接コマンドコード信号S912を渡す方式を示す図である。コマンドコード信号S912を受けとった制御装置60はコマンドコードの内容に従って処理を行ない、処理終了時に応答信号S921を返す。
制御装置60が解釈実行するコマンドコードの一例を図7及び図8に示す。図7はコマンドコードの構成を示した図であり、コマンドコードA10はコマンドコード名A11とコマンドコードパラメータA12で構成される。図8はコマンドの実行内容を一覧にした図であり以下に説明する6つのコマンドを示している。
activateは、選択メモリ83に、コマンドコードパラメータA12で指示されるコードを書き込むことで、有効バンク選択部92及び有効ブロック選択部82を制御し、選択したプログラムデータメモリ81を同じバンクの処理要素91に接続する。例えば図3に示したように、再構成可能ハードウェアで処理要素91が構成されている場合にactivateすることは、再構成可能ハードウェアにそのプログラムデータを設定することを意味し、activateされた再構成ハードウェアはすぐにそのプログラムデータメモリ81の内容に従って処理を開始する。
haltは、コマンドコードパラメータA12によって指定した処理装置70の動作を停止させる。
interruptは、コマンドコードパラメータA12によって指定した処理装置70に対して、指定した割り込みベクタ信号S922を発行する。
load_prgは、コマンドコードパラメータA12によって指定したプログラムデータメモリ81の領域へ、外部記憶装置10やその他任意の記憶装置に格納されているプログラムデータを転送する。
cancel_prgは、load_prgによって開始した転送を中止する。
wait_prgは、load_prgによって開始した転送が終了するまで待機する。
制御装置60は、図8に示したコマンドの任意の組合せ(コマンドセット)を解釈し、それぞれのコマンドに対して適切な処理を行ない、応答信号を含む割り込みを処理装置70や、インタフェース装置40を介して電子計算機30の外部に出力する。コマンドの解析や処理、割り込みは、処理装置70毎に並列に行なってもよい。
処理装置70が制御装置60へコマンド信号S91を発行する際の別のプロトコルの例を図9及び図11に示す。このプロトコルはインタフェース装置40と制御装置60の間のプロトコルに適用してもよい。
図9は、制御装置60がコマンドコード参照装置61とコマンドコードメモリ63を有し、処理装置70がリクエスト信号S911と共にアドレス信号S913を渡す方式を示す図である。図10はコマンドコードメモリ63に格納されるコマンドコードの一例を示す図である。アドレス信号S913は、制御装置60に実行させたいコマンドが格納されたコマンドコードメモリ63のアドレスを指す。
アドレス信号S913を受けとった制御装置60は、コマンドコード参照装置61を用いて、コマンドコードメモリ63を参照し、アドレス信号S913に対応するコマンドを実行後、処理終了時に応答信号S921を返す。
コマンドコードメモリ63は、制御装置60から参照可能な、制御装置60外部のメモリや外部記憶装置10等の任意のメモリでもよい。また、処理装置70が複数ある場合は制御装置60内にコマンドコード参照装置61を複数持ってコマンドを並列処理するようにしてもよいし、処理装置70に対応してコマンドコード参照装置61を設けるように構成してもよい。
図9のプロトコルは、制御装置60にコマンドコード参照装置61とコマンドコードメモリ63を設ける必要があるが、一般に、メモリのアドレスのビット数はデータのビット数より少なくすることができるため、図6のプロトコルに比べて、制御装置60と処理装置70との接続信号線数を少なくすることができる。
図11は、制御装置60がコマンドコード参照装置61及びそのアドレスカウンタ62を有し、処理装置70がリクエスト信号S911と共にアドレス操作信号S914及びS915を用いてアドレスカウンタ62の制御を行ない、必要ならばアドレス信号S913を用いてアドレスを制御装置60に渡す方式を示した図である。コマンドコード参照装置61及びそのアドレスカウンタ62は接続する処理装置70毎に設けてもよい。
adr_enaアドレスカウンタ操作信号S914が有効でかつdirect/offsetアドレスカウンタ操作信号S915がdirectを示す場合には、処理装置70から渡されるアドレス信号S913をアドレスカウンタ62に格納する。adr_enaアドレスカウンタ操作信号S914が有効でかつアドレスカウンタ操作信号S915がoffsetを示す場合には、処理装置70から渡されるアドレス信号S913の値をアドレスカウンタ62に加算する。adr_enaアドレスカウンタ操作信号S914が無効の場合には、処理装置70から渡されるアドレス信号S913は無視し、アドレスカウンタ62の値は保持する。
処理装置70によるアドレスカウンタ62の制御が終ると、制御装置60はアドレスカウンタ62の値とコマンドコード参照装置61を用いてコマンドが格納されたコマンドコードメモリ63を参照して格納されているコマンドの処理を行ない、終了後に応答信号S921を返す。
図12は図11の構成におけるコマンドコードメモリ63に格納されるコマンドコードの一例を示した図である。図12に示すように、コマンドコードメモリ63には、コマンドコードA10以外にアドレスカウンタ制御コードA20及びフラグA30を格納しているが、含まないようにしてもよい。図12のようなフォーマットを用いた場合、制御装置60は、コマンドコードA10に記された処理の終了後、処理装置70に応答信号S921を返す前にアドレスカウンタ制御コードA20に指定されている処理を行なう。
図13にアドレスカウンタ制御コードA20の詳細を示す。アドレスカウンタ制御コードA20はアドレスカウンタ制御コード名A21、そのパラメータであるアドレスカウンタ制御コードパラメータA22から構成される。図14にアドレスカウンタ制御コードの例を示す。load_adrはアドレスカウンタ制御コードパラメータA22の値を新しいアドレスカウンタ62の値として設定する。add_adrはアドレスカウンタ制御コードパラメータA22の値をアドレスカウンタ62の値に加算する。push_adrは現在のアドレスカウンタ62の値を図示しないがアドレスカウンタスタックに保存し、アドレスカウンタ制御コードパラメータA22の値を新しいアドレスカウンタ62の値として設定する。pop_adr命令はアドレスカウンタスタックから値を取り出して、その値を新しいアドレスカウンタ62の値として設定する。アドレスカウンタスタックはコマンドコード参照装置61に設ければよい。
また、フラグA30は、アドレスカウンタ制御コードA20を実行後の新しいアドレスカウンタ62の値を用いて、引続きコマンドの参照及び実行を行なうかどうかのフラグとして用いる。以後、引続きコマンドを実行する場合のフラグをcont、実行しない場合のフラグをstopと記す。
例えば、図11に示した構成において、コマンドコードメモリ63が図15のようなコマンドシーケンスを格納し、処理装置70がアドレス信号S913を100に、アドレスカウンタ操作信号S914を無効にしてコマンドを発行すると制御装置60はコマンドコードをY100、Y101、Y200の順に実行する。
従って、コマンドコード参照装置61がアドレスカウンタ62を内蔵し、アドレスカウンタ制御コードA20でアドレスカウンタ62の制御を行なう方式では、処理装置70はコマンド発行の際に必要な場合にだけアドレス信号S913を出力するだけで済むため、処理装置70内の処理部90は少ないハードウェアリソースでアドレス信号S913を生成できるようになる。
なお、処理装置70と制御装置60間のプロトコルに関しては、図6、図9、図14の中から1つを選択するか、或いはこれらを任意に組み合わせて構成してもよい。また、複数の構成を組み込んで必要に応じて制御線を追加してプロトコルを切替えるようにしてもよい。例えば、制御線を追加し、図6のプロトコルか図11のプロトコルかを選択できるようにしてもよい。
次に、電子計算機30と外部とのデータ転送を高速化するため、図16に示すように、図1の電子計算機30にキャッシュコントローラ130を含むキャッシュ装置50を追加して、そのキャッシュコントローラ130の制御をコマンドで行なうように構成してもよい。図16ではキャッシュ装置50はキャッシュコントローラ130を3つ設けそれぞれ制御装置60、メモリ部80、処理部90に接続しているが、1つのキャッシュコントローラ130でこれらと接続する構成でもよい。また、キャッシュコントローラ130内にキャッシュメモリ140を複数ポート持ってもよい。また、複数のキャッシュコントローラ間でアドレス変換装置150を共有してもよい。
キャッシュコントローラ130は、例えば外部記憶装置10等に記憶され処理装置70がアクセスするデータを一時的に保持するキャッシュメモリ140とアドレス変換装置150を含んでいる。キャッシュコントローラ130は、コマンドによって制御され、主にキャッシュメモリ140と外部記憶装置10との間のデータ転送と、キャッシュメモリ140と制御装置60や処理装置70との間のデータ転送を行ない、処理装置70や制御装置60と並列に動作する。
アドレス変換装置150は、処理装置70のアドレス空間とインタフェース装置40のアドレス空間との間のアドレスを互いに変換する装置であり、処理装置70内で独立したアドレス空間を持つことができる。また、処理装置70毎にアドレス変換装置150を設けることにより処理装置70毎に独立したアドレス空間を定義することもできる。
また、インタフェース装置40に設けられたアドレス変換装置151は、電子計算機30と、電子計算機30と接続網20を介して接続する外部記憶装置10や他の装置との間のアドレス空間の差分に対してアドレス変換する。処理装置70は制御装置60でコマンドを実行してアドレス変換装置150の制御を行なう。
なお、キャッシュコントローラを制御するためのコマンドについては図8に記載していないが、例えばアドレス変換装置150が被変換アドレスと変換アドレスとを対にして記憶する変換用バッファを備える場合はバッファへの登録、消去、置換等の制御を行うコマンド等を設ければよく、
また、キャッシュメモリ140内の特定の領域を処理装置70の専用のローカルメモリ領域として設定するようなコマンドを追加してもよい。
また、データフローを解析してスケジューリングを行ない、使用するキャッシュやそのキャッシュの制御を予めコマンドシーケンスとして記述しておくことで、処理装置70による処理と、制御装置60によるデータフローの制御を並列に行なうことができ、処理装置70の処理能力が向上する。また、処理装置70が必要なタイミングでコマンドを発行するため、無駄なオーバヘッドも発生しない。
例えば、キャッシュコントローラ130をコマンドで制御して、各装置がキャッシュメモリ140にアクセスするより前に、前もってデータをキャッシュメモリ140にロードしておくことが可能になり、効率の良いデータ転送が可能になる。
なお、本電子計算機30を接続網20に多数接続しても互いに通信および制御が可能であることは、上記説明から明白であり、本電子計算機30は任意に拡張が可能である。また、本電子計算機30は、本電子計算機30を1つ以上含むLSIや、本電子計算機30の一部分をLSIとして実現してもよい。さらに、本電子計算機30を論理的にFPGAやPLD等の再構成可能ハードウェア上に論理的に実装してもよい。
次に、本発明の実施形態の電子計算機30の動作を図面を参照して説明する。なお、電子計算機30の構成については様々な構成について説明してきたが、動作の説明では図17に示す構成を例として説明する。動作説明は電子計算機で処理する対象となるアプリケーションプログラムをプログラムデータメモリ811〜813へ格納する処理単位へと分割し制御装置60で実行するコマンドを生成するプログラムの生成方法を説明し、その次に図17の構成における電子計算機30での動作・制御方法について説明する。
図17を参照すると、3つのプログラムデータメモリ811,812,813に、有効ブロック選択82を介して接続され再構成可能ハードウェアで実現された処理要素110を1バンク有する1つの処理装置71があり、図11からdirect/offsetを指定するアドレスカウンタ制御S915を省略したプロトコルで制御装置60と処理装置71を接続し、制御装置60とインタフェース装置40との間のコマンド信号S41及び割り込み信号S42を省略した構成となっている。図17の制御装置60に実装されているコマンドセットは図8の通りとし、同制御装置60に実装されているアドレスカウンタ制御コードは図13及び図14の通りとする。なお、キャッシュ装置50は省略した構成としている。
図18は図17の処理要素110で実行するアプリケーションの処理内容の流れの一例を示した制御フロー図である。図18に示しているように、アプリケーションは初期状態C0を経て、制御フローで示している処理を動的に切り換えながら実行し、全ての処理が終ると終了状態C9となる。初期状態C0は処理P1を開始できる直前の状態とする。終了状態C9は、一例として図17における処理装置71がすべて停止した状態とする。
図18に示したアプリケーションの処理内容は、5つの状態(C1,C2,C3,C4,C5)と4種類の処理内容(P1,P2,P3,P4)を持つものとし初期状態C0から状態C1には無条件で遷移する。状態C1では処理P1を行ない、条件F1で状態2に遷移する。状態C2では処理P2を行ない、条件F2aで状態3に、条件F2bで状態4に遷移する。状態C3では処理P1を行ない、条件F3で状態5に遷移する。状態C4では処理P3を行ない、条件F4で状態5に遷移する。状態C5では処理P4を行ない、条件F5で終了状態C9に遷移する。
図19はアプリケーションを実行するプログラムを生成するフローである。図19に示すフローは、各処理後に実行するコマンドシーケンスを生成する制御フロー解析手順M1、コマンドシーケンスをデータ列に変換するコマンドシーケンス実装手順M2、プログラムデータを生成するためのプログラムデータ生成手順M3から成り、アプリケーション全体の制御フロー、終了、電子計算機30の構成情報及びそのコマンドセット等を入力とし、本電子計算機の初期状態C0を示すコマンドシーケンスコード、各処理装置内で使用する全てのプログラムデータ、及びそれらから参照されるコマンドシーケンスコードを出力する。制御フロー解析手順M1、コマンドシーケンス実装手順M2、プログラムデータ生成手順M3はそれぞれプログラムで実現される。
制御フロー解析手順M1は、各処理(P1〜P4)とそれに対応する状態(C1〜C5)、各状態に対応した遷移条件(F1〜F5)と遷移先を解析する。そして、各処理をプログラムデータメモリ811〜プログラムデータメモリ813のいずれかに割り当て、有効ブロック選択部82を切り換えて各処理を続けて実行することで次状態に遷移できるようなコマンドシーケンスの中間コードを生成する。
図18のアプリケーションを制御フロー解析手順M1によって解析した結果として生成されるコマンドシーケンスの中間コードの一例を図20に示す。ここで、電源投入時には、有効ブロック選択部82はプログラムデータメモリ811を選択しているものとする。図20において、コマンドシーケンスSQ0のコマンド″load_prg 812、PM1″のパラメータである812は処理要素110において処理P1を実行するように生成されたプログラムデータのロード先がプログラムメモリデータメモリ812であることを示し、PM1は同プログラムデータが格納されているメモリの領域を示す。PM1で指定されるプログラムデータPM1は外部記憶装置10を含む任意のメモリに格納されていてよい。現段階では、プログラムデータPM1自体は生成されていないので空のメモリ領域を指している。プログラムデータPM2、PM3、PM4もそれぞれ処理P2、処理P3、処理P4を実行するように生成されたプログラムデータが格納されているメモリの領域を指定するものである。
図20において、例えば、状態C4は処理P3を実行している状態であり、この状態で条件F4が成立した時点でコマンドシーケンスSQ4を開始する。コマンドシーケンスSQ4の処理内容は、″wait_prg 813、PM4″によりプログラムデータメモリ813にプログラムデータPM4が全て転送されるまで待機し、″activate″によりプログラムデータメモリ813を選択して開始することとなる。プログラムデータメモリ813が″activate″されると、処理要素110はプログラムデータメモリ813に保持されているプログラムで決められた処理を開始する。この時点では、プログラムデータメモリ813には、処理PM4を実行するプログラムデータが保持されているため、処理要素110は処理PM4を開始する。これは、すなわち、状態C5に移行することを意味する。
このように、処理内容にコマンドシーケンスの実行手順を追加することで次の状態に遷移することができるようになる。しかも、処理装置(処理要素)自身が決められた条件を検出したタイミングでコマンドを出すことができるため、遷移のタイミングを処理内容に含めることができ、処理効率を向上させる。また、図20において、処理P1を行なっている際には、状態がC1もしくはC3であるかを識別する必要があるため、処理P1を行なうプログラムデータメモリを″activate″する前に、処理P1を行なう処理装置71に割り込みベクタを設定し、その値を用いた遷移条件に修正している。例えば、状態C1の割り込みベクタの設定はSQ0の″interupt 71、C1″にて実行する。
コマンドシーケンス実装手順M2を用いて、図20のコマンドシーケンスをメモリに割り当てた様子を図22に、各処理におけるコマンドシーケンスの呼び出しを図17の構成における制御装置60と処理装置71との間のインタフェースのプロトコルに変換した、各処理毎の制御フローを図21にそれぞれ示す。
図21及び図22では、電源投入後最初に実行するコマンドシーケンスSQ0Aも含めて示している。コマンドシーケンスSQ0Aを実行することにより初期状態C0へ遷移する。状態C0では有効ブロック選択部82はプログラムデータメモリ811を選択しているため、処理要素110はプログラムデータメモリ811に格納されているプログラムの動作を電源投入後に開始する。
図21に示したように、個々の処理は電源投入時及びオリジナルの処理(P1,P2,P3,P4)に各コマンドシーケンス発行処理を追加した制御フローとなる。例えば、図21の処理P2において条件F2aが成立した際にはコマンド発行処理SQ2bAを実行し、条件F2bが成立した際にはコマンド発行処理SQ2bAを実行する。処理装置71がコマンド発行処理SQ2aAを実行する際には、リクエスト信号S911と、adr_enaアドレスカウンタ操作信号S914及びADR002を示すアドレス信号S913が出力される。図22より、アドレスADR002はコマンドシーケンスSQ2aを指すため、制御装置60はSQ2aの内容を実行する。
また、図20から分かるように、コマンドシーケンスSQ3とコマンドシーケンスSQ4は全く同じ動作をするため、図22に示したように、ベースアドレス値をADR004として1つに集約することができる。また、図18から分かるように、状態C3もしくは状態C4の後には状態C5となるため、図22では、コマンドシーケンスSQ3及びSQ4を指すアドレスADR004のオフセット+1のアドレスカウンタ制御コードにおいて、″load_adr″を使わずに″add_adr″を使用して次のアドレスカウンタ62の値(ADR004オフセット+2)を設定している。このように設計することで、処理装置71は余分なアドレスを出力する必要がなくなる。
最後に、図21で示した個々の処理を、プログラムデータ生成手順M3を用いて、それぞれの処理を実行するプログラムデータを生成する。生成した各プログラムデータをメモリに格納した例を図23に示す。生成したプログラムデータPM1、PM2、PM3、PM4が格納されたメモリ領域は、図22の各コマンドシーケンスのパラメータに反映させる。
なお、図16に示したように、電子計算機にアドレス変換装置を備えることで、個々の処理でアクセスするメモリアドレスやコマンドが格納されたメモリを指すアドレスは独立したアドレス空間で設計することもできる。また、プログラムデータPM0に関しては、図17の構成例の電子計算機の電源投入直後に実行する必要があるため、このプログラムデータPM0は、あらかじめプログラムデータメモリ811に格納されている必要がある。従って、本実装例における、電源投入時の電子計算機の初期状態は図24のリストのようになる。
次に電子計算機30の動作・制御方法について説明する。図25は上記説明した動作をタイミングチャートとしてまとめて示した図25である。図25と図17、図18、図21、図22、図23、図24を用いて説明する。
図25は横軸に、制御装置60内のアドレスカウンタ62の値、制御装置60の動作内容、処理要素110の動作内容、処理要素110に入力される割り込みベクタ信号S922の内容、各プログラムデータメモリ811、812、813が保持しているプログラムデータの内容、プログラムデータの転送状態を示し、縦軸は下向きに経過時間をT101から順に表している。なお、プログラムデータメモリ811、812、813の部分を編み目で表示している部分は実行中であることを示している。
T101のタイミングは図24に示した電源投入時の電子計算機30の状態であり、プログラムデータメモリ811にコマンド発行処理SQ0Aを行なうプログラムデータPM0が格納されている。
T102で処理要素110はPM0の動作を開始し、コマンド発行処理SQ0Aを実行する。制御装置60のコマンド参照装置61は、コマンド発行処理SQ0Aを受けとると、アドレスカウンタ62にアドレス値ADR000を設定し、図22のコマンドシーケンスが格納されたコマンドコードメモリ63のADR000に格納されたコマンドを読み出して、T103で″load_prg″を実行する。T103で制御装置60は、″load_prg″を実行し、プログラムデータメモリ812へプログラムデータPM1を転送し始める。プログラムデータPM1の格納場所の情報は″load_prg″のパラメータのPM1に含まれるものとし、ここでは外部記憶装置10に図23のように格納されているものとするが、外部記憶装置10以外のメモリに格納しておいてもよい。
図22を参照すると、ADR000のアドレスカウンタ制御コードは次のコマンドも実行するように設定されているため、制御装置60はアドレスカウンタ62に1を加え、T104で次の命令を実行する。T104で制御装置60は、プログラムデータメモリ812にプログラムデータPM1がすべて転送されるのを待ち、T105でその転送が終了すると、制御装置60は引続きT106で次の命令を実行する。
以下、同様に実行され、T107で″activate 812″を制御装置60が実行すると、選択メモリ83がプログラムデータメモリ812を選択する情報に更新され、有効ブロック選択82は選択メモリ83の指示によりプログラムデータメモリ812に切り換え、処理要素110は動作が切替えられてプログラムデータメモリ812に格納されているPM1の処理を開始する。T108で、制御装置60はアドレスカウンタ制御コード″add_adr 0/stop″によりT102から開始した一連のコマンドシーケンスの処理を終了する。
以下、同様に実行され、T110において、処理要素110が処理P1を実行中に条件F1を検出し、割り込みベクタ信号S922がC1であることを確認するとコマンド発行処理SQ1Aを実行する。
T110でコマンド発行処理SQ1Aを受けた制御装置60はアドレスカウンタ62の値をADR001の値に更新する。
T112で、制御装置60はコマンドコードメモリ63を読み出して″activate 813″を実行して、処理要素110の処理内容をプログラムデータメモリ813に格納されるPM2の処理に切り換える。
以下同様に実行され、T123において、処理要素110が処理P4を実行中に条件F5を検出するとコマンド発行処理SQ5Aを実行する。T123でコマンド発行処理SQ5Aを受けた制御装置60はコマンドコードメモリ63を参照し、T124で処理装置71対する″halt″を実行する。″halt″による停止指示を受けると処理装置71は動作を終了し、″halt″を実行した制御装置60もコマンドシーケンスの解釈実行を終了する。
このように、生成されたプログラムデータはPM0、PM1、PM2、PM3、PM4の5つであるが、使用するプログラムデータメモリは811、812、813の3つである。これは、ハードウェアリソースを越えるようなアプリケーションが本電子計算機30に実装できることを示している。
また、図17の構成では処理装置71はバンクを1つしか含まない構成となっているが、2つ以上のバンクを有する場合はプログラムデータPM0〜PM4を複数のバンクのプログラムデータメモリに格納しそれぞれの再構成可能ハードウェアで構成された処理要素で実行させるようにしてもよい。この場合、処理装置の出力は有効バンク選択部92で選択された処理要素のコマンドや出力データとなり、有効バンク選択部92で選択された処理要素が有効に動作し、プログラムデータメモリと処理要素を切り換えながら処理を進めることになる。
次に処理装置70が複数ある場合の動作について、図26の構成を例に説明する。図26は図17の処理装置71を1つ含む構成に処理装置72を追加して処理装置70が2つ存在する構成としている。さらに、動作開始のトリガとなるコマンドSQ0Aの発行を処理装置71ではなく処理装置72から実行するようにしている。また、図22に示した処理装置71のコマンドシーケンスSQ5を図27に示すようなコマンドシーケンスSQ5Bに変更し、″halt″の後に″interrupt 72,END71″を実行するように追加し、処理装置71の終了を処理装置72へ割り込みで知らせるようにしている。
図28は、コマンドSQ0Aの発行を処理装置72が実行し処理装置71が自己の終了を″interrupt″で処理装置72へ通知する上記の動作を示したタイミングチャートである。
図28を参照すると、T201において、処理装置72は処理P5の中で、処理装置71の初期化のためのコマンド発行処理SQ0Aを実行する。T201でコマンド発行処理SQ0Aを受けた制御装置60はコマンドシーケンスSQ0を実行する。T202で初期化された処理装置71は図25で示したような一連の処理を行い、T203でコマンド発行処理SQ5Aを実行する。T203で制御装置60はコマンドシーケンスSQ5Bを実行し、″halt″の実行によりT204で処理装置71を停止させ、″interrupt″の実行によりT205で処理装置72に割り込みを出力する。
処理装置72は処理P5を実行中に、T201においてコマンド発行処理SQ0Aを実行した後、すぐに別の処理P6を実行することができる。そして、処理P6において処理装置71からの割り込みを待って、後続の処理P7に遷移することもできる。もちろん、処理装置72は処理P6を実行せずに、単に処理装置71からの割り込みを待つだけでもよい。
また、図26の構成の場合には、処理装置71で"halt"が実行された後の終了状態を処理装置71の初期状態として、同じ処理を何度でも処理装置72から実行することができる。また、処理装置72中の処理要素は図2、図3、図4、図5で示した構成が可能であり、特にCPU120が処理装置72の処理要素として入っていた場合には、そのソフトウェアプログラムの中の1つの関数呼び出しやシステムコール、もしくはそれらを含むスレッドやオブジェクト、あるいはCPU120のインストラクションの拡張として処理要素71を使用してもよい。
このように複数の処理装置を並列に動作させる際に、″interrupt″コマンドを利用して処理装置間で同期をとれるので、処理能力を向上させとともに全体の処理の前後関係を順序立てて実行することができる。
また、電子計算機30は図1に示したように、接続網20を介した外部からコマンドを受けとることができるため、電子計算機30の外部からコマンド発行処理SQ0Aを実行させるようにしてもよい。さらに、図5に示したように、処理装置70の処理要素を電子計算機30で実現することもできるため、処理を階層化・細分化して実装してもよい。
なお、上記動作説明では、本電子計算機の構成を固定した場合の実装例を示したが、例えば、図5のように制御装置60が再構成可能な制御装置R60であった場合には、図29のような生成フローにおいて、コマンドシーケンス中間コードで使用しているコマンドのみをコマンドセットとして使用するようにし、そのコマンドサブセットのみを実装した制御装置R60を構成してもよい。このように構成することで、制御装置60を簡略化することができる。
以上の説明では図16に示したキャッシュ装置50を除いた構成で説明したが、図17や図26の構成にキャッシュ装置50を挿入する構成にすることもできることは明瞭であり、キャッシュ装置50を挿入することにより、電子計算機30の外部との間のデータ転送時間を短縮することができ、さらにアドレス変換装置150を有することのより、処理装置に固有のアドレス空間を持たせることが可能になる。
また、実装フローによる解析結果に基づいて、制御装置60や処理装置70も含めた全ての構成要素を新規に設計および製造してもよい。
なお、本発明が上記各実施例に限定されず、本発明の技術思想の範囲内において、各実施例は適宜変更され得ることは明らかである。
以上説明したように本発明によれば、アプリケーションプログラムの処理を分割して複数の処理単位とし処理単位毎に論理回路を形成するプログラムを切り換えながら再構成可能ハードウェアで実行させることにより大きなアプリケーションプログラムでも小さな再構成可能ハードウェアで実行可能となるため、アプリケーションプログラムを安価な構成で高速に実行でき、さらに、処理単位のコマンドシーケンスを変更することにより処理単位のプログラムを容易に応用することができるので、新たなアプリケーションプログラムへの応用や、新たな電子計算機の構築を低コストで実現できるという効果がある。
さらに、論理回路を形成するプログラムを保持するプログラムデータメモリを複数有して処理単位の実行中に次の処理単位のプログラムを別のプログラムデータメモリに読み出すことにより、切り換えの際のプログラムの読み出し時間を短縮して切り換え時間を短縮し処理速度を向上することができる。

Claims (13)

  1. 論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、
    前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから1つを選択して有効とする有効バンク選択部とを有し、
    前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメモリを指定し、指定した前記処理要素の動作を開始するactivateコマンドと、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンドと、load_prg命令を中止するcancel_prgコマンドと、load_prg命令の終了まで待機するwait_prgコマンドとを解釈実行することを特徴とする電子計算機。
  2. 前記バンクは、再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから1つを選択して有効とする有効ブロック選択部とを含むか、または再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する一つのプログラムデータメモリとを含むことを特徴とする請求項記載の電子計算機。
  3. 前記処理装置は、少なくとも1つの処理要素は再構成可能ハードウェアで構成され、残りの処理要素は再構成可能ハードウェア又は汎用CPUで構成されることを特徴とする請求項又は記載の電子計算機。
  4. 前記制御装置が実行するコマンドを保持するコマンドコードメモリを有し、前記制御装置は前記処理装置から指示されたアドレスに従ってコマンドコードメモリからコマンドを読み出して解釈実行するコマンドコード参照装置を有することを特徴とする請求項1、2、3の何れかに記載の電子計算機。
  5. 前記コマンドコード参照装置は前記コマンドコードメモリのアドレスを保持するアドレスカウンタを有し、前記処理装置と制御装置間のコマンドの受渡しにおいて、前記処理装置が出力したアドレス信号線が有効であることを示す第1のアドレス制御線と、第1の制御線が有効の場合アドレス信号線の値をそのままアドレスカウンタに格納するか或いはアドレス信号線の値をアドレスカウンタの値に加算してアドレスカウンタに格納するかを指示する第2のアドレスカウンタ制御線を備えることを特徴とする請求項記載の電子計算機。
  6. 前記コマンドは、コマンドを分類するコマンドコードとアドレスカウンタ制御コードと後続のコマンドを実行するかどうかを示すフラグとからなるフォーマットで前記コマンドコードメモリに格納され、前記アドレスカウンタ制御コードは、アドレスカウンタに値を設定するload_adrコマンドと、アドレスカウンタに指定した値を加算するadd_adrコマンドとを含むこと特徴とする請求項記載の電子計算機。
  7. 前記アドレスカウンタ制御コードは、アドレスカウンタを前記制御装置に設けたアドレスカウンタスタックに退避するとともに新たな値をアドレスカウンタに設定するpush_adrコマンドと、アドレスカウンタスタックの値をアドレスカウンタに戻すpop_adrコマンドとを含むこと特徴とする請求項記載の電子計算機。
  8. 前記処理装置に対して転送するデータを一時的に保持するキャッシュメモリとキャッシュメモリを制御するキャッシュコントローラを含むキャッシュ装置を有し、前記処理装置が発行するコマンドによってキャッシュコントローラの制御を行なうことを特徴とする請求項1乃至のいずれかに記載の電子計算機。
  9. 前記キャッシュ装置は前記処理装置の外部で定義するアドレスを処理装置の内部で定義されるアドレスに変換するアドレス変換装置を有し、前記処理装置が発行するコマンドによってアドレス変換装置の制御を行なうことを特徴とする請求項記載の電子計算機。
  10. 論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、
    前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから1つを選択して有効とする有効バンク選択部とを有し、
    前記処理装置は、少なくとも1つの処理要素が論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む第2の処理装置と第2の処理装置の指定したコマンドを実行する再構成可能な第2の制御装置とから構成されることを特徴とする電子計算機。
  11. 請求項1乃至10のいずれかに記載の電子計算機を実装した半導体集積回路。
  12. 再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから1つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続するactivateコマンドを実行し、再構成可能ハードウェアが実行する論理回路の内容を切り換え
    前記制御装置は、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンドと、load_prg命令を中止するcancel_prgコマンドと、load_prg命令の終了まで待機するwait_prgコマンドとを実行することを特徴とする制御方法。
  13. 再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから1つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続を切り換えるactivateコマンドを実行する手順をコンピュータに実行させ
    前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するhaltコマンド、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するinterruptコマンド、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するload_prgコマンド、load_prg命令を中止するcancel_prgコマンド、或いはload_prgコマンドの終了まで待機するwait_prgコマンドを実行する手順をコンピュータに実行させるプログラム。
JP2005511009A 2003-06-25 2004-06-21 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム Expired - Fee Related JP4665760B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003180659 2003-06-25
JP2003180659 2003-06-25
PCT/JP2004/008709 WO2005001689A1 (ja) 2003-06-25 2004-06-21 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2005001689A1 JPWO2005001689A1 (ja) 2006-08-10
JP4665760B2 true JP4665760B2 (ja) 2011-04-06

Family

ID=33549505

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005511009A Expired - Fee Related JP4665760B2 (ja) 2003-06-25 2004-06-21 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム

Country Status (3)

Country Link
US (1) US7603542B2 (ja)
JP (1) JP4665760B2 (ja)
WO (1) WO2005001689A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024548B2 (en) * 2003-02-18 2011-09-20 Christopher Joseph Daffron Integrated circuit microprocessor that constructs, at run time, integrated reconfigurable logic into persistent finite state machines from pre-compiled machine code instruction sequences
JP2007133456A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 半導体装置
JP2008097498A (ja) * 2006-10-16 2008-04-24 Olympus Corp プロセッシング・エレメント、コントロール・ユニット、及びこれらを備える処理システム、分散処理方法
JP5478897B2 (ja) 2007-01-24 2014-04-23 株式会社日本触媒 粒子状吸水性ポリマーおよびその製造方法
CN102675522B (zh) 2007-02-05 2014-11-19 株式会社日本触媒 粒子状吸水剂的制造方法
JP2010033555A (ja) * 2008-06-30 2010-02-12 Olympus Corp コントロール・ユニット、分散処理システム及び分散処理方法
ES2635504T3 (es) 2009-01-21 2017-10-04 Rigel Pharmaceuticals, Inc. Derivados de N2-(3-piridilo o fenil)-N4-(4-piperidil)-2,4-pirimidinadiamina útiles en el tratamiento de enfermedades inflamatorias, toimmunitarias o proliferativas
JP5541437B2 (ja) * 2009-09-16 2014-07-09 日本電気株式会社 並列処理システム制御装置、その方法及びそのプログラム
WO2014112082A1 (ja) * 2013-01-17 2014-07-24 富士通株式会社 プログラマブルロジック装置
US11423953B2 (en) * 2020-05-28 2022-08-23 Micron Technology, Inc. Command triggered power gating for a memory device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218781A (ja) * 1996-02-13 1997-08-19 Nec Corp 遠隔保守システム
JPH1195994A (ja) * 1997-09-18 1999-04-09 Fujitsu Ltd プログラマブル・ゲートアレイのコンフィグレーション方法及びプログラマブル・ゲートアレイ装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
JP3099889B2 (ja) 1990-06-29 2000-10-16 株式会社東芝 電子計算機、プログラマブル論理回路及びプログラム処理方法
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5473763A (en) * 1993-08-02 1995-12-05 Advanced Micro Devices, Inc. Interrupt vector method and apparatus
US5426378A (en) * 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations
KR960706125A (ko) * 1994-09-19 1996-11-08 요트.게.아. 롤페즈 다수의 마이크로 콘트롤러의 동작을 실행하기 위한 마이크로 콘트롤러 시스템(A microcontroller system for performing operations of multiple microcontrollers)
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
JPH08316329A (ja) 1995-05-24 1996-11-29 Nec Eng Ltd 情報処理装置
US5760602A (en) * 1996-01-17 1998-06-02 Hewlett-Packard Company Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
KR19990071991A (ko) 1996-10-10 1999-09-27 파레 호세 마리아 인센서 혼합-신호응용의프로토타이핑을위한공정및상기공정의응용을위한칩상에필드프로그램할수있는시스템
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
JP3878307B2 (ja) 1997-12-19 2007-02-07 松下電器産業株式会社 プログラマブルなデータ処理装置
US6034538A (en) 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
DE19807872A1 (de) * 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
EP1351153A3 (en) * 1998-11-20 2008-11-05 Altera Corporation Reconfigurable programmable logic device computer system
JP2000181566A (ja) * 1998-12-14 2000-06-30 Mitsubishi Electric Corp マルチクロック並列処理装置
US6288566B1 (en) * 1999-09-23 2001-09-11 Chameleon Systems, Inc. Configuration state memory for functional blocks on a reconfigurable chip
JP2001147802A (ja) 1999-11-19 2001-05-29 Minolta Co Ltd 画像処理装置
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6326806B1 (en) * 2000-03-29 2001-12-04 Xilinx, Inc. FPGA-based communications access point and system for reconfiguration
JP2001331767A (ja) 2000-05-22 2001-11-30 Sharp Corp アダプタカードシステム
US6836839B2 (en) * 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
EP1436692A2 (en) * 2001-10-16 2004-07-14 Leopard Logic, Inc. Interface architecture for embedded field programmable gate array cores
US6573748B1 (en) * 2001-11-06 2003-06-03 Xilinx, Inc. Programmable logic device with output register for specifying memory space during reconfiguration
JP2006018413A (ja) * 2004-06-30 2006-01-19 Fujitsu Ltd プロセッサおよびパイプライン再構成制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218781A (ja) * 1996-02-13 1997-08-19 Nec Corp 遠隔保守システム
JPH1195994A (ja) * 1997-09-18 1999-04-09 Fujitsu Ltd プログラマブル・ゲートアレイのコンフィグレーション方法及びプログラマブル・ゲートアレイ装置

Also Published As

Publication number Publication date
JPWO2005001689A1 (ja) 2006-08-10
WO2005001689A1 (ja) 2005-01-06
US20060155968A1 (en) 2006-07-13
US7603542B2 (en) 2009-10-13

Similar Documents

Publication Publication Date Title
US9141571B2 (en) PCI express switch with logical device capability
US8494833B2 (en) Emulating a computer run time environment
US7926061B2 (en) iMEM ASCII index registers
CN103678201B (zh) 具有逻辑设备能力的pci express切换器
US8365111B2 (en) Data driven logic simulation
KR102187912B1 (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
JP5131188B2 (ja) データ処理装置
US7594046B2 (en) Data processing in which concurrently executed processes communicate via a FIFO buffer
JP4665760B2 (ja) 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム
KR20170141205A (ko) Dsp 엔진 및 향상된 컨텍스트 스위치 기능부를 구비한 중앙 처리 유닛
JP2003296191A (ja) 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
JP2007133456A (ja) 半導体装置
WO2006134804A1 (ja) 外部デバイスアクセス装置
US8732441B2 (en) Multiprocessing system
JP2003196246A (ja) データ処理システム、アレイ型プロセッサ、データ処理装置、コンピュータプログラム、情報記憶媒体
JP7093979B2 (ja) デバイスプロキシ装置及びそれを含む計算機システム
WO2011024504A1 (ja) データ処理装置
JP4090669B2 (ja) 演算処理装置、情報処理装置及びそれらの制御方法
JP2003202999A (ja) 仮想計算機システム
JP6739689B1 (ja) プログラマブルコントローラ
JP2001255902A (ja) デュアルポートメモリ、そのデータ転送方法、及びデュアルポートメモリを用いる制御システム
JP2011118744A (ja) 情報処理装置
JPH0687221B2 (ja) 情報処理装置
WO2010087098A1 (ja) 並列演算装置、情報処理システム、並列演算方法、および情報処理装置
US20080307208A1 (en) Application specific processor having multiple contexts

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100308

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101110

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101116

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: 20101214

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: 20101227

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

Free format text: PAYMENT UNTIL: 20140121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4665760

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees