(57)【要約】【課題】  論理ブロックの配置や配線の制約が少なく、集積度の向上が可能なプロセッサエレメント及びプログラマブルデバイスを提供する。【解決手段】  プロセッサエレメント１は、プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行う演算器１１と、関数の引数を記憶するレジスタ１２と、演算器１１のバイパススイッチ１３と、レジスタ１２のバイパススイッチ１４と、関数部２０の接続を切り替える接続設定部１６と、接続設定部１６への入力を切り替えるマルチプレクサ１７と、接続設定部１６からの出力の出力先を切り替えるデマルチプレクサ１８と、状態に応じてバイパススイッチ１３、１４、接続設定部１６、マルチプレクサ１７及びデマルチプレクサ１８の切り替えを行う選択部１５と、を有する。【選択図】      図１
2019061347.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行う演算器と、
前記関数の引数を記憶するレジスタと、
前記演算器をバイパスするか否かを切り替える第１のバイパススイッチと、
前記レジスタをバイパスするか否かを切り替える第２のバイパススイッチと、
前記レジスタと前記演算器の組である関数部の接続を切り替える接続設定部と、
前記接続設定部への入力を切り替えるマルチプレクサと、
前記接続設定部からの出力の出力先を切り替えるデマルチプレクサと、
状態に応じて前記第１のバイパススイッチ、前記第２のバイパススイッチ、前記接続設定部、マルチプレクサ及びデマルチプレクサの切り替えを行う選択部と、
を有するプロセッサエレメント。
【請求項２】
前記選択部は、高位合成によってアプリケーションに応じて生成される状態遷移コントローラである、請求項１に記載のプロセッサエレメント。
【請求項３】
前記接続設定部は、
前記選択部から出力される選択信号に基づいて前記演算器に入力する信号を選択するマルチプレクサと、
前記選択部から出力される選択信号に基づいて前記レジスタからの信号の出力先を選択するデマルチプレクサと、
前記選択部から出力される選択信号に基づいて前記接続設定部に入力された信号の出力先を選択するデマルチプレクサと、
前記選択部から出力される選択信号に基づいて前記接続設定部から出力する信号を選択するマルチプレクサと、
を有する、請求項１又は２に記載のプロセッサエレメント。
【請求項４】
前記演算器と、前記レジスタと、前記第１のバイパススイッチと、前記第２のバイパススイッチと、前記接続設定部と、前記選択部とを、ルックアップテーブルに内蔵する請求項１から３のいずれか１項に記載のプロセッサエレメント。
【請求項５】
前記ルックアップテーブルをバイパスする線路を有し、その線路と前記ルックアップテーブルの出力を選択するマルチプレクサを備える請求項４に記載のプロセッサエレメント。
【請求項６】
高位合成により生成されるＡＬＵ及びレジスタをさらに備え、前記マルチプレクサは、前記ルックアップテーブルの出力と、前記ルックアップテーブルをバイパスする線路と、前記ＡＬＵの出力が接続される、請求項５に記載のプロセッサエレメント。
【請求項７】
請求項１から６のいずれか１項に記載のプロセッサエレメントを複数、隣接させて配置したプログラマブルデバイスにおいて、隣接していないプロセッサエレメント同士は直接には接続せず、隣接するプロセッサエレメント同士を接続させるプログラマブルデバイス。
【請求項８】
プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行い、
前記関数の引数の記憶処理を行い、
状態に応じて前記演算処理をバイパスするか否かの切り替え、前記記憶処理をバイパスするか否かの切り替え、前記演算処理と前記記憶処理の組である関数処理の順序の切り替え、前記関数処理への入力及び前記関数処理の出力先の切り替えを行う、
プロセッサエレメントの制御方法。
【請求項９】
プロセッサエレメントのコンピュータに、
プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理と、
前記関数の引数の記憶処理と、
状態に応じて前記演算処理をバイパスするか否かの切り替え、前記記憶処理をバイパスするか否かの切り替え、前記演算処理と前記記憶処理の組である関数処理の順序の切り替え、前記関数処理への入力及び前記関数処理の出力先の切り替えを行う処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサエレメント、プログラマブルデバイス及びプロセッサエレメントの制御方法に関する。
【背景技術】
【０００２】
近年、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、およびＤＲＰ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）などのプログラマブルデバイスが利用されている。
【０００３】
例えば特許文献１にプログラマブルデバイスが開示されている。特許文献１に開示されているプログラマブルデバイスは、実行するタスク毎に、それぞれ異なる特徴を持つ複数の回路を実現するためのコンフィグレーションコードを生成してメモリへ格納しておく。プログラマブルデバイスの動作時、異なる特徴を持つ複数の回路のなかからシステムの動作状態に応じてプログラマブルデバイスに実行させる適切な回路が選択され、該選択した回路に対応するコンフィグレーションコードがメモリからプログラマブルデバイスへロードされる。
プログラマブルデバイスは、コンフィグレーションコードのロードが完了した段階で、選択された回路による入力データへの処理を開始する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７９３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プログラマブルデバイスは、各論理ブロックが、図１２に示すようにメッシュ状のデータパスによって規則的に配置配線される。このような配置は論理ブロックの自在な配置や配線を行う上での制約となる。またこのような論理ブロックの配置は、演算素子よりも、信号を伝達するための配線やスイッチ領域の面積が多く、集積度の向上の面でも制約となる。特許文献１にはこのような課題を解決する構成は開示されていない。
【０００６】
本発明の目的は、論理ブロックの配置や配線の制約が少なく、集積度の向上が可能なプロセッサエレメント及びプログラマブルデバイスを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の１側面によるプロセッサエレメントは、プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行う演算器と、前記関数の引数を記憶するレジスタと、前記演算器をバイパスするか否かを切り替える第１のバイパススイッチと、前記レジスタをバイパスするか否かを切り替える第２のバイパススイッチと、前記レジスタと前記演算器の組である関数部の接続を切り替える接続設定部と、前記接続設定部への入力を切り替えるマルチプレクサと、前記接続設定部からの出力の出力先を切り替えるデマルチプレクサと、状態に応じて前記第１のバイパススイッチ、前記第２のバイパススイッチ、前記接続設定部、マルチプレクサ及びデマルチプレクサの切り替えを行う選択部と、を有する。
【０００８】
本発明の１側面によるプログラマブルデバイスは、上記プロセッサエレメントを複数、隣接させて配置したプログラマブルデバイスにおいて、隣接していないプロセッサエレメント同士は直接には接続せず、隣接するプロセッサエレメント同士を接続させる。
【０００９】
本発明の１側面によるプロセッサエレメントの制御方法は、プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行い、前記関数の引数の記憶処理を行い、状態に応じて前記演算処理をバイパスするか否か、前記記憶処理をバイパスするか否か、前記演算処理と前記記憶処理の組である関数処理の順序、前記慣習処理への入力及び前記関数処理の出力先の切り替えを行う。
【発明の効果】
【００１０】
本発明によれば、プロセッサエレメント及びプログラマブルデバイスにおいて論理ブロックの配置や配線の制約が少なく、集積度の向上が可能となる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態のプロセッサエレメントの構成を示すブロック図である。
【図２】図２は、第１の実施形態のプロセッサエレメントの隣接プロセッサとの接続部分の構成の一例を示すブロック図である。
【図３】図３は、第１の実施形態のプロセッサエレメントの接続切り替え機能の概要を示す図である。
【図４】図４は、第１の実施形態のプロセッサエレメントを接続して構成されたプログラマブルデバイスの構成の例を示す図である。
【図５】図５は、図４のプログラマブルデバイスを接続して構成されたプログラマブルデバイスの構成の例を示す図である。
【図６】図６は、第１の実施形態の接続設定部の構成の一例を示すブロック図である。
【図７】図７は、第２の実施形態のプロセッサエレメントの構成を示す図である。
【図８】図８は、第３の実施形態のプロセッサエレメントの構成を示す図である。
【図９】図９は、第４の実施形態のプロセッサエレメントの構成を示す図である。
【図１０】図１０は、第５の実施形態のプロセッサエレメントの構成を示す図である。
【図１１】図１１は、各実施形態の各部を実現するコンピュータの構成の一例を示す図である。
【図１２】図１２は、プログラマブルデバイス内の配線配置の例を示す図である。
【図１３】図１３は、図１２の詳細を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の第１の実施形態について説明する。まず、本発明の背景について説明する。
【００１３】
有限オートマトンに基づくストアードプログラム方式のコンピュータアーキテクチャを有するＭＣＵ（Ｍｉｃｒｏ−Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）には、２つの解決すべき課題がある。１つは、外付けメモリ素子内に格納されたアプリケーションに内在する状態遷移コントローラを、有限状態制御部内（すなわちＭＣＵの演算器内）の状態遷移コントローラでシミュレーションするオーバーヘッドの解消である。もう１つは、演算器の定義に対する高位合成技術および動作合成技術の活用である。
【００１４】
これらについて対策を講じると共に、更にプログラマブルデバイスであるＭＣＵ、ＦＰＧＡ、およびＤＲＰの利点を取り込んだプロセッサエレメントを提案する必要がある。これは設計上の工夫として実装することも可能であるが、開発ツールに組み込むことができれば、センシングデバイスにプロセッサを埋め込むプロセッサエレメントを設計するための汎用的な設計手法として活用することができる。
【００１５】
このためにはプロセッサエレメントの基本的なアーキテクチャを定義し、その定義内容を高級プログラミング言語で指定できるようにする必要がある。
【００１６】
プロセッサエレメントのアーキテクチャを策定するに当たっては、Ｃ言語などの関数型言語で全体を設計できるプログラミング環境を維持することを目標とした。また、ソースコードのデバッグを行うに当たっては、デバッグツールはアプリケーションプログラムから抽出されたコンテキストに沿ってプログラムを実行することができる必要がある。すなわち、関数型言語で記述された一連の操作のコンテキストをトレースできる必要がある。
【００１７】
本実施形態のプロセッサエレメントのアーキテクチャは、意味論ないしラムダ計算に基づいて高級プログラミング言語のコンテキストを表現し、２つのタイプのコンテキストを表現できることとした。１つは、ファイルに格納された情報として言及されることの多い、置き換え可能な静的コンテキストであり、もう１つは、ヒープレジスタに格納された情報として表わされる動的コンテキストである。これらは関数記述として表現できるようにした。
【００１８】
アプリケーションプログラムの動的コンテキストは、以下のように関数で表現される。
ｆ（Ａ），ｆ（Ｂ），．．．                          （1）
静的コンテキストには、引数はレジスタとして実装され、関数本体はアプリケーションプログラムに応じて生成されたインストラクションセットを有する演算器として実装される。またアプリケーションプログラムの要求に沿って、レジスタと演算器の組である関数部が静的コンテキストに定義される。またレジスタ及び演算器をバイパスするか否かを切り替えるバイパススイッチが定義される。静的コンテキストは、状態に応じて必要なレジスタと演算器とバイパススイッチがグルーピングされて定義される。
【００１９】
なおグループの接続は以下のように関数で記述できることとする。
ｆ（ｇ（・）），ｆ（ｇ（・），ｈ（・）），．．．            （2）
次に第１の実施形態の構成について説明する。図１は本実施形態に係るプロセッサエレメントの構成を示すブロック図である。
【００２０】
アプリケーションプログラムの要求に基づいてインストラクションセットが生成されてｎ個の演算器１１ａ、１１ｂ、１１ｎ（ｎは１以上の整数）として実装される。すなわち演算器１１ａ、１１ｂ、１１ｎは、それぞれアプリケーションプログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行う。
【００２１】
レジスタ１２ａ、１２ｂ、１２ｎは、対応する演算器１１ａ、１１ｂ、１１ｎに実装されるインストラクションセットの引数に対応してプロセッサエレメント１に備えられる。すなわちレジスタ１２ａ、１２ｂ、１２ｎは、それぞれ演算器１１ａ、１１ｂ、１１ｎの関数で使用される引数を記憶する。
【００２２】
以下、この演算器１１ａ、１１ｂ、１１ｎと、演算器に対応するレジスタ１２ａ、１２ｂ、１２ｎの組は関数部２０ａ、２０ｂ、２０ｎという。
【００２３】
なお以下の説明では特定の演算器を指定して説明する必要がない場合、演算器１１と記載する。同様に、特定のレジスタを指定して説明する費用がない場合、レジスタ１２と記載し、特定の関数部を指定して説明する費用がない場合、関数部２０と記載する。
【００２４】
本実施形態のプロセッサエレメント１ではアプリケーションの静的コンテキストは、選択した関数部２０を接続したものとして表現される。静的コンテキストは、状態に応じて必要なレジスタ１２と演算器１１とがグルーピングされて定義される。プロセッサエレメント１は、プロセッサエレメント１内の各状態にそれぞれの静的コンテキストを対応付けるため、それぞれの静的コンテキストに応じて関数部２０ａ、２０ｂ、２０ｎのうちから必要な関数部２０を選択する選択部１５を備える。選択部１５は、選択した関数部の接続順序も指示する。選択部１５は、例えば高位合成でアプリケーションに応じて生成された状態遷移コントローラ（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ：ＦＳＭ）で実現される。
【００２５】
またプロセッサエレメント１は、選択部１５の指示に基づいて関数部２０の接続を設定する接続設定部１６を備えている。またプロセッサエレメント１は、選択部１５の指示に基づいて演算器１１ａ、１１ｂ、１１ｎをバイパスするか否かをそれぞれ切り替えるバイパススイッチ１３ａ、１３ｂ、１３ｎと、選択部１５の指示に基づいてレジスタ１２ａ、１２ｂ、１２ｎをバイパスするか否かをそれぞれ切り替え選択するバイパススイッチ１４ａ、１４ｂ、１４ｎを備える。なお以下の説明では、演算器１１ａ、１１ｂ、１１ｎをバイパスするか否かをそれぞれ切り替えるバイパススイッチのうち特定のものを指定して説明する必要がない場合、バイパススイッチ１３ａ、１３ｂ、１３ｎはバイパススイッチ１３と記載される。同様に、レジスタ１２ａ、１２ｂ、１２ｎをバイパスするか否かを切り替えるバイパススイッチのうち特定のものを指定して説明する必要がない場合、バイパススイッチ１４ａ、１４ｂ、１４ｎは、バイパススイッチ１４と記載される。
【００２６】
またプロセッサエレメント１は、接続設定部１６への入力を切り替えるマルチプレクサ１７と、接続設定部１６からの出力の出力先を切り替えるデマルチプレクサ１８を備えている。
【００２７】
選択部１５は、プロセッサエレメント１内の状態に応じて、バイパススイッチ１３、バイパススイッチ１４、接続設定部１６、マルチプレクサ１７及びデマルチプレクサ１８に、切り替えを指示する選択信号を出力する。これにより、各状態に対応した関数部の選択及びその処理順序の選択を行い、選択部１５は、必要でない関数部をバイパスし、また関数部２０の接続順序を切り替えて、各状態に対応した関数の選択を行う。また選択部１５は、各状態に対応した関数部への入力及び出力先を切り替える。
【００２８】
なお選択信号は、静的コンテキストのための選択信号である静的コンテキスト選択信号と、動的コンテキストのための選択信号である動的コンテキスト選択信号を含む。
【００２９】
このようにして本実施形態では、状態遷移コントローラ（ＦＳＭ）である選択部１５が、プロセッサエレメント１内の各状態に、静的コンテキストを対応付け、状態が進むにつれて関数部２０内部のバイパススイッチ１３、バイパススイッチ１４及び接続設定部１６の設定を切り替える。
【００３０】
またプロセッサエレメント１は、４辺においてそれぞれ隣接する４つのプロセッサエレメント１に接続される。隣接する４つのプロセッサエレメント１から出力された信号は、マルチプレクサ１７に入力される。マルチプレクサ１７は、選択部１５から出力される選択信号に応じて隣接する複数のプロセッサエレメント１からの入力の１つを選択し、選択したプロセッサエレメント１の出力を接続設定部１６に入力する。
【００３１】
接続設定部１６は、マルチプレクサ１７からの信号を、選択部１５からの選択信号に基づいて１番目の処理を行う関数部の演算器に出力する。演算器の出力は同じ関数部のレジスタに出力される。なお選択部１５からの選択信号によりバイパススイッチが演算器をバイパスするよう指示されていれば演算器に入力された信号は演算器をバイパスしてレジスタに出力される。
【００３２】
レジスタ１２の出力は接続設定部１６に出力される。なお選択部１５からの選択信号によりバイパススイッチがレジスタをバイパスするよう指示されていればレジスタに入力された信号はレジスタをバイパスして接続設定部１６に出力される。
【００３３】
接続設定部１６は、選択部１５の指示に基づいて１番目の処理を行う関数部の出力を次の処理を行う関数部の演算器に出力する。もし最後の処理を行う関数部のレジスタ１２からの出力であれば、接続設定部１６は、選択部１５の指示に基づいてレジスタ１２からの信号をデマルチプレクサ１８に出力する。
【００３４】
デマルチプレクサ１８は、最後の処理を行う関数部からの出力である接続設定部からの出力を、選択部１５から出力される選択信号に応じて隣接する複数のプロセッサエレメント１の１つを選択して出力する。
【００３５】
この動きはＤＲＰにおけるコンテキスト切替えと似ている。これはすなわち、本実施形態のプロセッサエレメントではアプリケーションに応じて最適なＤＲＰを都度生成していることに相当する。
【００３６】
上述の有限オートマトンに基づくストアードプログラム方式のコンピュータアーキテクチャを有するＭＣＵでは、アプリケーションに固有のＦＳＭはプロセッサエレメントの外に実装されているメモリ素子上に実装されている。この点で本実施形態は上記のＭＣＵとは異なる。上記のＭＣＵでは外付メモリ素子のアドレッシング機能によってメモリの読み書きをすることによってアプリケーションに応じたＦＳＭをシミュレートするため、そのオーバーヘッドが余分に掛かる。本実施形態のプロセッサエレメント１は、アプリケーションに応じたＦＳＭがプロセッサエレメント１のハードウェア上で直接動作するため、上記のＭＣＵと比較して消費電力が改善される。
【００３７】
なお図１に示す第１の実施形態及び後述の他の実施形態の移動目標探知システムの各構成要素は、機能単位のブロックを示している。各実施形態の移動目標探知システムの各構成要素の一部又は全部は、例えば図１１に示すようなコンピュータ６０とプログラムとの任意の組み合わせにより実現されてもよい。コンピュータ６０は、一例として、以下のような構成を含む。
【００３８】
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６１
・ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６３
・ＲＡＭ６３にロードされるプログラム６４
・プログラム６４を格納する記憶装置６５
・記録媒体６６の読み書きを行うドライブ装置６７
・通信ネットワーク６９と接続する通信インタフェース６８
・データの入出力を行う入出力インタフェース７０
・各構成要素を接続するバス７１
各実施形態の各構成要素は、これらの機能を実現するプログラム６４をＣＰＵ６１が取得して実行することで実現される。例えば、図１のプロセッサエレメント１の例では、演算器１１は、プログラム６４を取得したＣＰＵ６１が、プログラム６４に基づき関数に基づく演算処理を行うことで機能が実現されてもよい。レジスタ１２は、プログラム６４を取得したＣＰＵ６１が、記憶装置６５に上記関数の引数を記憶する記憶処理を行うことで機能が実現されてもよい。バイパススイッチ１３、１４はプログラム６４を取得したＣＰＵ６１が、プログラム６４に基づき上記演算処理や上記記憶処理をバイパスすることで機能が実現されてもよい。接続設定部１６は、プログラム６４を取得したＣＰＵ６１が、プログラム６４に基づき関数を実現する演算処理や記憶処理の順序を切り替えることで機能が実現されてもよい。選択部１５は、プログラム６４を取得したＣＰＵ６１が、プログラム６４に基づき上記演算処理をバイパスするか否かの切り替え、上記記憶処理をバイパスするか否かの切り替え及び演算処理や記憶処理の順序の切り替えを行うことで機能が実現されてもよい。マルチプレクサ１７は、プログラム６４を取得したＣＰＵ６１が、プログラム６４に基づき隣接するプロセッサエレメントのいずれかの出力を選択して入力することで機能が実現されてもよい。デマルチプレクサ１８は、プログラム６４を取得したＣＰＵ６１が、プログラム６４に基づき隣接するプロセッサエレメントのいずれかを出力先として選択することで機能が実現されてもよい。
【００３９】
各実施形態の各構成要素の機能を実現するプログラム６４は、例えば、予め記憶装置６５やＲＯＭ６２やＲＡＭ６３に格納されており、必要に応じてＣＰＵ６１が読み出すように構成されてもよい。
【００４０】
なお、プログラム６４は、通信ネットワーク６９を介してＣＰＵ６１に供給されてもよいし、予め記録媒体６６に格納されており、ドライブ装置６７が当該プログラムを読み出してＣＰＵ６１に供給してもよい。
【００４１】
次に本実施形態のプログラマブルデバイス上でのプロセッサエレメントの配置及びプロセッサエレメント間の配線について説明する。上述した一般的なＭＣＵやＦＰＧＡやＤＲＰには、図１１に示すように各論理ブロックがメッシュ状のデータパスによって規則的に上記のＭＣＵやＦＰＧＡ上に配置され配線されているという制約がある。このような配置及び配線は高位合成ツールが自在な配置配線を行う上での制約となる。
【００４２】
図１２は、図１１の詳細を示す図である。図１２に示すように上記のＭＣＵやＦＰＧＡは、論理ブロック、配線接続スイッチ、入出力スイッチ、およびワイヤトラックから構成される。論理ブロックは可変論理であるＬＵＴ（Ｌｏｏｋ−Ｕｐ  Ｔａｂｌｅ）と順序回路であるフリップフロップから構成され、配線接続スイッチは縦横の配線接続の切り替え、入出力スイッチは論理ブロックと配線の接続、およびワイヤトラックは配線接続スイッチ間の配線に用いられる。
【００４３】
これに対して、本実施形態では、プロセッサエレメント間に図１２で示すようなデータパスを固定的に配置せず、プロセッサエレメント間の接続は隣接プロセッサエレメント間とする。本実施形態のプログラマブルデバイス上では、関数として表現された論理ブロックは自在に接続可能である。また本実施形態のプロセッサエレメント１は、バイパスのみの関数も定義可能とすることにより、高位合成ツールに対する制約を回避している。また本実施形態のプロセッサエレメント１は、予め汎用の演算器を用意せず、高位合成ツールにより実装時に確定することにより、演算器のビット幅も任意としている本実施形態のプロセッサエレメント１では、この構成により実装効率を高めることが可能となる。
【００４４】
図２は、本実施形態のプロセッサエレメントの隣接プロセッサとの接続部分の構成の一例を示すブロック図である。プロセッサエレメント１は、図２に示すようにプロセッサエレメント１は、隣接する４つのプロセッサエレメント１と接続するための４つの端子１９を備え、４つの端子１９はそれぞれマルチプレクサ１７の入力端子のいずれかに接続され、またデマルチプレクサ１８の出力端子のいずれかに接続されている。隣接する４つのプロセッサエレメント１から出力された信号は４つの端子１９を経由してマルチプレクサ１７に入力される。またデマルチプレクサ１８から出力された信号は４つの端子１９のいずれかを経由して対応するプロセッサエレメント１に出力される。
【００４５】
図３は、本実施形態のプロセッサエレメントの接続切り替え機能の概要を示す図である。本実施形態のプロセッサエレメント１は、デマルチプレクサ１８の出力を切り替えることにより、図３に示すようにプロセッサエレメント１の出力を、入力として選択した隣接するプロセッサエレメント以外のプロセッサエレメントのうちのどれにするかを選択することができる。なお図３に示していないが、本実施形態のプロセッサエレメント１は、図１のマルチプレクサ１７を切り替えることで、プロセッサエレメント１の入力を、隣接するプロセッサエレメントの出力のうちどれにするか選択することができる。さらに本実施系他のプロセッサエレメント１は、プロセッサエレメント１内のバイパススイッチ１３ａ、１３ｂ、１３ｎ及び１４ａ、１４ｂ、１４ｎを切り替えることで、演算器１１ａ、１１ｂ、１１ｎ及びレジスタ１２ａ、１２ｂ、１２ｎをバイパスするか選択することができる。
【００４６】
これらにより、通常のＦＰＧＡ等に用いられている配置配線スイッチ（Ｓｗｉｔｃｈ  Ｂｌｏｃｋ）、入出力スイッチ（Ｃｏｎｎｅｃｔｉｏｎ  Ｂｌｏｃｋ）、およびワイヤトラックが不要となり、プログラマブルデバイスのチップ全面を演算リソースで埋め尽くすことも可能となる。
【００４７】
図４は、プロセッサエレメントを接続して構成されたプログラマブルデバイスの構成の例を示す図である。プログラマブルデバイス１００には、図４に示すようにプロセッサエレメントが複数、隣接させて配置される。またプログラマブルデバイス１００上では、隣接していないプロセッサエレメント同士は直接には接続せず、隣接するプロセッサエレメント同士を接続させる。このような配置としても上述のように本実施形態のプロセッサエレメント１は、デマルチプレクサ１８の出力を切り替えることにより、図３に示すようにプロセッサエレメント１の出力を、入力として選択した隣接するプロセッサエレメント以外のプロセッサエレメントのうちのどれにするかを選択することができる。さらにプロセッサエレメント１内のバイパススイッチ１３ａ、１３ｂ、１３ｎ及び１４ａ、１４ｂ、１４ｎを切り替えることで、プロセッサエレメント１は、演算器１１ａ、１１ｂ、１１ｎ及びレジスタ１２ａ、１２ｂ、１２ｎをバイパスするか選択することができる。このような構成により、プロセッサエレメント１の関数部２０と選択部１５と接続設定部１６から構成される複数の論理ブロックを離れたプロセッサエレメント上の論理ブロックと自在に接続してプログラマブルデバイス１００を構成することが可能である。また図５は、図４のプログラマブルデバイス１００を接続して構成されたプログラマブルデバイス１１０の構成の例を示す図である。図５に示すように、図４のプログラマブルデバイス１００間の接続は隣接するプログラマブルデバイス間のみとしてもよい。
【００４８】
図６は、本実施形態の接続設定部の構成の一例を示すブロック図である。図６に示すように、接続設定部１６は、演算器１１ａ、１１ｂ、１１ｃに入力する信号を選択するマルチプレクサ１６１ａ、１６１ｂ、１６１ｃと、レジスタ１２ａ、１２ｂ、１２ｃからの信号の出力先を選択するデマルチプレクサ１６２ａ、１６２ｂ、１６２ｃを備えている。また接続設定部１６は、接続設定部１６に入力された信号を選択するデマルチプレクサ１６３と、接続設定部１６から出力する信号の出力先を選択するマルチプレクサ１６４を備えている。これらには選択部１５から出力される選択信号が入力される。
【００４９】
デマルチプレクサ１６３の出力には、演算器１１ａ、１１ｂ、１１ｃに接続されているマルチプレクサ１６１ａ、１６１ｂ、１６１ｃが接続されている。デマルチプレクサ１６３は、選択部１５からの選択信号に基づいてマルチプレクサ１６１ａ、１６１ｂ、１６１ｃのいずれかを選択し、接続設定部１６に入力された信号を出力する。
【００５０】
マルチプレクサ１６１ａ、１６１ｂ、１６１ｃへの入力には、接続されている演算器の関数部以外の、他の関数部のレジスタに接続されるデマルチプレクサと、デマルチプレクサ１６３が接続されている。マルチプレクサ１６１ａ、１６１ｂ、１６１ｃは、選択部１５からの選択信号に基づいて、他の関数部のレジスタに接続されるデマルチプレクサ及びデマルチプレクサ１６３からの信号から、接続されている演算器に入力する信号を選択する。
【００５１】
デマルチプレクサ１６２ａ、１６２ｂ、１６２ｃからの出力には、接続されているレジスタの関数部以外の、他の関数部の演算器に接続されたマルチプレクサと、マルチプレクサ１６４が接続されている。デマルチプレクサ１６２ａ、１６２ｂ、１６２ｃは選択部１５からの選択信号に基づいて、他の関数部の演算器に接続されたマルチプレクサ及びマルチプレクサ１６４のいずれかを選択し、接続されているレジスタからの信号を出力する。
【００５２】
またマルチプレクサ１６４の入力には、レジスタ１２ａ、１２ｂ、１２ｃに接続されているデマルチプレクサ１６２ａ、１６２ｂ、１６２ｃが接続されている。マルチプレクサ１６４は、選択部１５からの選択信号に基づいて、デマルチプレクサ１６２ａ、１６２ｂ、１６２ｃのいずれかから入力された信号を選択して接続設定部１６から出力する。
【００５３】
例えば、図６に示す静的コンテキスト１０ａを実現する場合、デマルチプレクサ１６３は、選択部１５からの選択信号に基づいて接続設定部１６に入力された信号の出力先としてマルチプレクサ１６１ａを選択し、マルチプレクサ１６１ａは、選択部１５からの選択信号に基づいて、デマルチプレクサ１６３からの信号を選択する。そしてデマルチプレクサ１６２ａは選択部１５からの選択信号に基づいて、接続されているレジスタ１２ａからの信号の出力先としてマルチプレクサ１６４を選択し、マルチプレクサ１６４は、選択部１５からの選択信号に基づいて、デマルチプレクサ１６２ａからの信号を選択して接続設定部１６から出力する。
【００５４】
また例えば、図６に示す静的コンテキスト１０ｂを実現する場合、デマルチプレクサ１６３は、選択部１５からの選択信号に基づいて接続設定部１６に入力された信号の出力先としてマルチプレクサ１６１ｂを選択し、マルチプレクサ１６１ｂは、選択部１５からの選択信号に基づいてデマルチプレクサ１６３からの信号を選択する。そしてデマルチプレクサ１６２ｂは、選択部１５からの選択信号に基づいて、接続されているレジスタ１２ｂからの信号の出力先としてマルチプレクサ１６１ｃを選択し、マルチプレクサ１６１ｃは、選択部１５からの選択信号に基づいて、接続される演算器１１ｃに入力する信号としてデマルチプレクサ１６２ｂからの信号を選択する。そしてデマルチプレクサ１６２ｃは選択部１５からの選択信号に基づいて、接続されているレジスタ１２ｃからの信号の出力先としてマルチプレクサ１６４を選択し、マルチプレクサ１６４は、選択部１５からの選択信号に基づいて、デマルチプレクサ１６２ｃからの信号を選択して接続設定部１６から出力する。
【００５５】
また例えば、図６に示す静的コンテキスト１０ｃを実現する場合、デマルチプレクサ１６３は、選択部１５からの選択信号に基づいて接続設定部１６に入力された信号の出力先としてマルチプレクサ１６１ａを選択する。マルチプレクサ１６１ａは、選択部１５からの選択信号に基づいて接続される演算器１１ａに入力する信号としてデマルチプレクサ１６３からの信号を選択する。そしてデマルチプレクサ１６２ａは、選択部１５からの選択信号に基づいて、接続されているレジスタ１２ａからの信号の出力先としてマルチプレクサ１６１ｂを選択する。マルチプレクサ１６１ｂは、選択部１５からの選択信号に基づいて、接続される演算器１１ｂに入力する信号としてデマルチプレクサ１６２ａからの信号を選択する。そしてデマルチプレクサ１６２ｂは選択部１５からの選択信号に基づいて、接続されているレジスタ１２ｂからの信号の出力先としてマルチプレクサ１６４を選択する。マルチプレクサ１６４は、選択部１５からの選択信号に基づいて、デマルチプレクサ１６２ｂからの信号を選択して接続設定部１６から出力する。
【００５６】
このように本実施形態によれば、選択部１５からの選択信号に基づいて、接続設定部１６に入力された信号を少なくとも１つの関数部の演算器に出力して、必要な関数部を任意の順番で接続し、最後の関数部のレジスタからの出力を接続設定部１６から出力することが可能となる。また演算器１１ａ、１１ｂ、１１ｃは静的コンテキスト間で共有することができる。
【００５７】
以上説明したように、本実施形態の構成によれば、プログラマブルデバイスにおいて論理ブロックの配置や配線の制約が少なく、集積度の向上が可能となる。
【００５８】
次に第２の実施形態について説明する。本実施形態は本発明をＦＰＧＡに適用した場合の実施形態である。図７は、第２の実施形態のプロセッサエレメントの構成を示すブロック図である。図７に示すように、本実施形態のプロセッサエレメント２は、ルックアップテーブル（ＬＵＴ：Ｌｏｏｋ−Ｕｐ  Ｔａｂｌｅ）２１を備え、ＬＵＴ２１に第１の実施形態と同様な演算器１１、レジスタ１２、バイパススイッチ１３，１４、接続設定部１６が実装されている。またプロセッサエレメント２は、第１の実施形態と同様に、隣接するプロセッサエレメント１に接続されるマルチプレクサ１７及びデマルチプレクサ１８を備えている。
【００５９】
本実施形態のプロセッサエレメント２は、ＬＵＴ２１をバイパスする線路２２を有し、その線路２２とＬＵＴ２１の出力を選択するマルチプレクサ２３を備える。さらに、プロセッサエレメント２は、クロック及びマルチプレクサ２３の出力が入力されるフリップフロップ２４と、フリップフロップ２４をバイパスする線路２５を有し、その線路２５とフリップフロップ２４の出力を選択するマルチプレクサ２６を備えている。またＬＵＴ２１には、マルチプレクサ１７、２３、２６及びデマルチプレクサ１８と、関数部２０a、２０ｂ、２０ｎの演算器及びレジスタのバイパススイッチ、接続設定部１６の選択を行う選択部２１１が備えられている。
【００６０】
本実施形態の構成によれば、ＦＰＧＡであるプロセッサエレメントにおいて第１の実施形態と同様の効果が得られる。
【００６１】
次に第３の実施形態について説明する。図８は第３の実施形態のプロセッサエレメントの構成を示す図である。図８に示すように、本実施形態のプロセッサエレメント３は、第２の実施形態に加え、高位合成により生成されるＡＬＵ３１及びレジスタ３２をさらに備えている。ＡＬＵ３１は、マルチプレクサ１７の出力が分岐されて入力され、ＡＬＵ３１の出力がマルチプレクサ３３に接続される。マルチプレクサ３３には、ＬＵＴ３４の出力と、ＬＵＴ３４をバイパスする線路２２と、ＡＬＵ３１の出力が接続される。マルチプレクサ３３は、ＬＵＴ３４の選択部３４１からの指示に基づいて、これらのいずれかを選択してフリップフロップ２４及びマルチプレクサ２６に出力する。
【００６２】
本実施形態の構成によれば、ＦＰＧＡとＡＬＵを混載したプロセッサエレメントにおいて第１の実施形態と同様の効果が得られる。
【００６３】
次に第４の実施形態について説明する。図９は第４の実施形態のプロセッサエレメントの構成を示す図である。図９に示すように、本実施形態のプロセッサエレメント４は、第２の実施形態に加え、ＤＲＰのＰＥマトリックス４１及びコンフィグレーションメモリ４２をさらに備えている。ＰＥマトリックス４１は、マルチプレクサ１７の出力が分岐されて入力され、ＰＥマトリックス４１の出力がマルチプレクサ４３に接続される。マルチプレクサ４３には、ＬＵＴ４４の出力と、ＬＵＴ４４をバイパスする線路２２と、ＰＥマトリックス４１の出力が接続される。マルチプレクサ４３は、ＬＵＴ４４の選択部４４１からの指示に基づいて、これらのいずれかを選択してフリップフロップ２４及びマルチプレクサ２６に出力する。
【００６４】
本実施形態の構成によれば、ＦＰＧＡとＤＲＰを混載したプロセッサエレメントにおいて第１の実施形態と同様の効果が得られる。
【００６５】
次に第５の実施形態について説明する。図１０は第５の実施形態のプロセッサエレメントの構成を示す図である。図１０に示すように、本実施形態のプロセッサエレメント５は、第２の実施形態に加え、ＧＰＧＰＵのストリーミングマイクロプロセッサ５１及びエグゼキューションキュー５２をさらに備えている。ストリーミングマイクロプロセッサ５１は、マルチプレクサ１７の出力が分岐されて入力され、ストリーミングマイクロプロセッサ５１の出力がマルチプレクサ５３に接続される。マルチプレクサ５３には、ＬＵＴ５４の出力と、ＬＵＴ５４をバイパスする線路２２と、ストリーミングマイクロプロセッサ５１の出力が接続される。マルチプレクサ５３は、ＬＵＴ５４の選択部５４１からの指示に基づいて、これらのいずれかを選択してフリップフロップ２４及びマルチプレクサ２６に出力する。
【００６６】
本実施形態の構成によれば、ＦＰＧＡとＧＰＧＰＵを混載したプロセッサエレメントにおいて第１の実施形態と同様の効果が得られる。
【００６７】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６８】
１、２、３、４、５    プロセッサエレメント
１１、１１ａ、１１ｂ、１１ｃ、１１ｎ    演算器
１２、１２ａ、１２ｂ、１２ｃ、１２ｎ    レジスタ
１３、１３ａ、１３ｂ、１３ｎ    バイパススイッチ
１４、１４ａ、１４ｂ、１４ｎ    バイパススイッチ
１５    選択部
１６    接続設定部
１６１ａ、１６１ｂ、１６１ｃ、１６４    マルチプレクサ
１６２ａ、１６２ｂ、１６２ｃ、１６３    デマルチプレクサ
１７    マルチプレクサ
１８    デマルチプレクサ
１９    端子
２０、２０ａ、２０ｂ、２０ｎ    関数部
２１、３４、４４、５４    ＬＵＴ
２１１、３４１、４４１、５４１    選択部
２２、２５    線路
２４  フリップフロップ
２３、２６、３３、４３、５３    マルチプレクサ
３１    ＡＬＵ
３２    レジスタ
４１    ＰＥマトリックス
４２    コンフィグレーションメモリ
５１    ストリーミングマイクロプロセッサ
５２    エグゼキューションキュー
６０    コンピュータ
６１    ＣＰＵ
６２    ＲＯＭ
６３    ＲＡＭ
６４    プログラム
６５    記憶装置
６６    記録媒体
６７    ドライブ装置
６８    通信インタフェース
６９    通信ネットワーク
７０    入出力インタフェース
７１    バス
１００、１１０    プログラマブルデバイス
【図１】
2019061347.tif 000003
【図２】
2019061347.tif 000004
【図３】
2019061347.tif 000005
【図４】
2019061347.tif 000006
【図５】
2019061347.tif 000007
【図６】
2019061347.tif 000008
【図７】
2019061347.tif 000009
【図８】
2019061347.tif 000010
【図９】
2019061347.tif 000011
【図１０】
2019061347.tif 000012
【図１１】
2019061347.tif 000013
【図１２】
2019061347.tif 000014
【図１３】
2019061347.tif 000015
【手続補正書】
【提出日】平成31年1月10日(2019.1.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムに応じて生成されたインストラクションセットを実装した関数に基づく演算処理を行う演算器と、
前記関数の引数を記憶するレジスタと、
前記演算器をバイパスするか否かを切り替える第１のバイパススイッチと、
前記レジスタをバイパスするか否かを切り替える第２のバイパススイッチと、
前記レジスタと前記演算器の組である関数部の接続を切り替える接続設定部と、
前記接続設定部への入力を切り替えるマルチプレクサと、
前記接続設定部からの出力の出力先を切り替えるデマルチプレクサと、
状態に応じて前記第１のバイパススイッチ、前記第２のバイパススイッチ、前記接続設定部、マルチプレクサ及びデマルチプレクサの切り替えを行う選択部と、
を有するプロセッサエレメント。
【請求項２】
前記選択部は、高位合成によってアプリケーションに応じて生成される状態遷移コントローラである、請求項１に記載のプロセッサエレメント。
【請求項３】
前記接続設定部は、
前記選択部から出力される選択信号に基づいて前記演算器に入力する信号を選択するマルチプレクサと、
前記選択部から出力される選択信号に基づいて前記レジスタからの信号の出力先を選択するデマルチプレクサと、
前記選択部から出力される選択信号に基づいて前記接続設定部に入力された信号の出力先を選択するデマルチプレクサと、
前記選択部から出力される選択信号に基づいて前記接続設定部から出力する信号を選択するマルチプレクサと、
を有する、請求項１又は２に記載のプロセッサエレメント。
【請求項４】
前記演算器と、前記レジスタと、前記第１のバイパススイッチと、前記第２のバイパススイッチと、前記接続設定部と、前記選択部とを、ルックアップテーブルに内蔵する請求項１から３のいずれか１項に記載のプロセッサエレメント。
【請求項５】
前記ルックアップテーブルをバイパスする線路を有し、その線路と前記ルックアップテーブルの出力を選択するマルチプレクサを備える請求項４に記載のプロセッサエレメント。
【請求項６】
高位合成により生成されるＡＬＵ及びレジスタをさらに備え、前記マルチプレクサは、前記ルックアップテーブルの出力と、前記ルックアップテーブルをバイパスする線路と、前記ＡＬＵの出力が接続される、請求項５に記載のプロセッサエレメント。
【請求項７】
請求項１から６のいずれか１項に記載のプロセッサエレメントを複数、隣接させて配置したプログラマブルデバイスにおいて、隣接していないプロセッサエレメント同士は直接には接続せず、隣接するプロセッサエレメント同士を接続させるプログラマブルデバイス。
【請求項８】
関数を、プログラムに応じて生成されたインストラクションセットを有する演算器として実装し、
前記関数の引数をレジスタとして実装し、
状態に応じて前記演算器をバイパスするか否かの切り替え、前記レジスタをバイパスするか否かの切り替え、前記演算器と前記レジスタの組である関数部の順序の切り替え、前記関数部への入力及び前記関数部の出力先の切り替えを行う、
プロセッサエレメントの制御方法。
【請求項９】
プロセッサエレメントのコンピュータに、
関数を、プログラムに応じて生成されたインストラクションセットを有する演算器として実装する処理と、
前記関数の引数をレジスタとして実装する処理と、
状態に応じて前記演算器をバイパスするか否かの切り替え、前記レジスタをバイパスするか否かの切り替え、前記演算器と前記レジスタの組である関数部の順序の切り替え、前記関数部への入力及び前記関数部の出力先の切り替えを行う処理と、
を実行させるプログラム。