(57)【特許請求の範囲】
【請求項１】
複数の処理回路と、
前記複数の処理回路の制御内容を読み出すためのアドレスを出力するプログラムカウンタと、前記処理回路の各々に対する制御内容が記憶された記憶素子とを備え、前記プログラムカウンタから出力された前記アドレスで指定される前記制御内容を読み出す複数の制御回路と、
前記処理回路と同数であり、前記処理回路と前記制御回路との間に介挿されたセレクタと、
を有し、
前記制御回路は、前記記憶素子から読み出した前記制御内容を制御信号として前記セレクタに出力し、
前記セレクタは、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する
ことを特徴とするプログラマブルデバイス。
【請求項２】
複数の処理回路と、
前記複数の処理回路の制御内容を読み出すためのアドレスを出力するプログラムカウンタを備え、前記プログラムカウンタで生成された前記アドレスを制御信号として出力する複数の制御回路と、
前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する、前記処理回路と同数であり、前記処理回路と前記制御回路との間に介挿されたセレクタと、
を有し、
前記処理回路の各々は、
自身の制御内容を記憶し、前記セレクタから出力された前記アドレスで指定される前記制御内容を読み出す
ことを特徴とするプログラマブルデバイス。
【請求項３】
前記セレクタの選択信号は、前記処理回路の出力結果であることを特徴とする請求項１又は請求項２に記載のプログラマブルデバイス。
【請求項４】
前記制御回路の各々と前記処理回路の各々との対応付けが記憶されているレジスタをさらに有し、
前記レジスタは、その対応付けに応じて選択信号を前記セレクタに送信することを特徴とする請求項１又は請求項２に記載のプログラマブルデバイス。
【請求項５】
複数の処理回路と複数の制御回路と、前記処理回路と同数であり、前記処理回路と前記制御回路との間に介挿されたセレクタとを有するプログラマブルデバイスの制御方法であって、
前記制御回路が、前記処理回路の各々に対する制御内容が記憶された記憶素子から、前記複数の処理回路の制御内容を読み出すためのアドレスで指定される前記制御内容を読み出し、読み出した前記制御内容を制御信号として前記セレクタに出力する過程と、
前記セレクタが、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する過程と
を有することを特徴とするプログラマブルデバイスの制御方法。
【請求項６】
複数の処理回路と複数の制御回路と、前記処理回路と同数であり、前記処理回路と前記制御回路との間に介挿されたセレクタとを有するプログラマブルデバイスの制御方法であって、
前記制御回路が、前記複数の処理回路の制御内容を読み出すためのアドレスを制御信号として前記セレクタに出力する過程と、
前記セレクタが、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する過程と、
前記処理回路の各々が、自身の制御内容を記憶し、前記前記セレクタから出力された前記アドレスで指定される前記制御内容を読み出す過程と、
を有する特徴とするプログラマブルデバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数制御回路と複数処理回路とを備えるプログラマブルデバイスに関する。
【背景技術】
【０００２】
組込み機器向けのＳｏＣ（System on a Chip）は、ユーザのニーズに迅速に対応するために製品化サイクルの短縮化が進められており、特にＳｏＣ開発期間の短縮が必要とされている。ＳｏＣの開発にはハードウェア開発とソフトウェア開発とが含まれる。そのため、ＳｏＣ開発期間を短縮するには、ハードウェア開発とソフトウェア開発とのいずれかの開発期間の短縮が必要である。
【０００３】
上述した観点から、近年、ハードウェアのアーキテクチャを変更することなく、ソフトウェアのアーキテクチャの変更のみでハードウェアの機能を変更可能なプログラマブルデバイスが提案されている。このプログラマブルデバイスをＳｏＣに搭載することにより、システム変更や機能拡張の要求に対して迅速に対応可能となる。プログラマブルデバイスは、例えば、シングルコアＣＰＵ（Central Processing Unit）、マルチコアＣＰＵ、ＦＰＧＡ（Field-Programmable Gate Array）、ＤＲＰ（Dynamic Reconfigurable Processor）等である。なお、これらのプログラマブルデバイスの性能としては、高速演算性、小面積、低消費電力が求められている。
【０００４】
図１１は、プログラマブルデバイスの一般的な構成を示す図である。図１１に示すように、プログラマブルデバイス１００は、複数の処理回路１１０（処理回路１１０−１、処理回路１１０−２、…、処理回路１１０−Ｒ（Ｒは２以上の整数））と制御回路１２０とを備える。処理回路１１０の各々は、制御回路１２０と配線で接続されている。処理回路１１０は、各種演算器や演算用レジスタ、データメモリ、キャッシュメモリなどの記憶素子を備え、データの演算、データの保持等を実行する。処理回路１１０の各々は、対応するそれぞれの制御回路１２０から出力された制御信号の内容により、処理回路１１０毎におけるデータの演算、データの保持等の実行される処理内容が変化する。制御回路１２０は、命令アドレスを出力するプログラムカウンタや命令を格納する命令メモリ等の記憶素子を含み、命令フェッチ、命令デコードを実行する。制御回路１２０は、処理回路１１０に対する制御内容（命令）を制御信号として処理回路１１０に出力する。プログラマブルデバイス１００は、制御回路１２０内に含まれる記憶素子のプログラムを書き換えることによって、処理回路１１０の機能（制御内容）を書き換えることが可能となる。
【０００５】
従来、プログラマブルデバイス１００を用いた回路の信号伝送の高速化をはかるために、処理回路群と制御回路との組み合わせを要素回路として、その要素回路間を相互に連携させ、パイプライン処理を行うことが知られている（特許文献１参照）。図１２は、２つの要素回路を用いて２段パイプラインを組んだ際の要素回路のパイプライン動作のタイミングチャートを示す。要素回路２００−１は、制御回路１２０とＲ個の処理回路を備える。要素回路２００−２は、制御回路１２０とＬ個の処理回路を備える。図１２に示すように、プログラマブルデバイス１００は、処理回路と制御回路とが１対１対応で構成された要素回路２００−１と要素回路２００−２とを組み合わせて２段のパイプライン動作を実現させている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−５１９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のプログラマブルデバイスの構成において、１つのパイプラインの処理回路で複数の処理を実現する場合、処理回路の利用効率の点で無駄が生じる。例えば、図１３に示すように、２つの要素回路（２００−１及び２００−２）で２段のパイプラインを組み、処理Ａと処理Ｂを実行させる場合を考える。図１３は、１つのパイプラインの処理回路で複数の処理を実現する方法を説明する図である。図１３（ａ）は、１つのパイプラインで処理Ａを実行する場合を説明する図である。図１３（ｂ）は、１つのパイプラインで処理Ｂを実行する場合を説明する図である。なお、処理Ａ又は処理Ｂを実行するために使用している処理回路を白く塗りつぶし、使用していない処理回路を斜線で塗りつぶしている。
【０００８】
図１３（ａ）に示すように、処理Ａを実行する場合、すべての処理回路１１０が使用されている。しかし、図１３（ｂ）に示すように、処理Ｂを実行する場合、すべての処理回路１１０が使用されるわけではなく、使用されない処理回路１１０が多い場合がある。上述したように、実行させる処理によって使用される処理回路の数が異なる場合、構成される処理回路の数は、複数の実行すべき処理の中で、最も多くの処理回路を使用する処理に応じで決めなければならない。このため、最も多くの処理回路を使用する処理以外の処理を実行する場合には、処理回路の利用効率が悪くなるおそれがあった。
【０００９】
本発明はこのような事情に鑑みてなされたもので、その目的は、処理回路と制御回路とが１対１対応である従来の構成方法と比較して、処理回路の利用効率が高いプログラマブルデバイスおよびその制御方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様は、複数の処理回路と、前記複数の処理回路の制御内容を読み出すためのアドレスを出力するプログラムカウンタと、前記処理回路の各々に対する制御内容が記憶された記憶素子とを備え、前記プログラムカウンタから出力された前記アドレスで指定される前記制御内容を読み出す複数の制御回路と、前記処理回路と同数以上であり、前記処理回路と前記制御回路との間に介挿されたセレクタと、を有し、前記制御回路は、前記記憶素子から読み出した前記制御内容を制御信号として前記セレクタに出力し、前記セレクタは、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力することを特徴とするプログラマブルデバイスである。
【００１１】
また、本発明の一態様は、複数の処理回路と、前記複数の処理回路の制御内容を読み出すためのアドレスを出力するプログラムカウンタを備え、前記プログラムカウンタで生成された前記アドレスを制御信号として出力する複数の制御回路と、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する、前記処理回路と同数以上であり前記処理回路と前記制御回路との間に介挿されたセレクタと、を有し、前記処理回路の各々は、自身の制御内容を記憶し、前記セレクタから出力された前記アドレスで指定される前記制御内容を読み出すことを特徴とするプログラマブルデバイスである。
【００１２】
また、本発明の一態様は、上述したプログラマブルデバイスであって、前記セレクタの選択信号は、前記処理回路の出力結果である。
【００１３】
また、本発明の一態様は、上述したプログラマブルデバイスであって、前記制御回路の各々と前記処理回路の各々との対応付けが記憶されているレジスタをさらに有し、前記レジスタは、その対応付けに応じて選択信号を前記セレクタに送信する。
【００１４】
また、本発明の一態様は、複数の処理回路と複数の制御回路と、前記処理回路と同数以上であり、前記処理回路と前記制御回路との間に介挿されたセレクタとを有するプログラマブルデバイスの制御方法であって、前記制御回路が、前記処理回路の各々に対する制御内容が記憶された記憶素子から、複数の処理回路の制御内容を読み出すためのアドレスで指定される前記制御内容を読み出し、読み出した前記制御内容を制御信号として前記セレクタに出力する過程と、前記セレクタが、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する過程と、を有することを特徴とするプログラマブルデバイスの制御方法である。
【００１５】
また、本発明の一態様は、複数の処理回路と複数の制御回路と、前記処理回路と同数以上であり、前記処理回路と前記制御回路との間に介挿されたセレクタとを有するプログラマブルデバイスの制御方法であって、前記制御回路が、前記複数の処理回路の制御内容を読み出すためのアドレスを制御信号として前記セレクタに出力する過程と、前記セレクタの各々が、前記複数の制御回路から出力される全ての制御信号を入力とし、前記全ての制御信号のうちの１つの制御信号を選択し、その選択結果を前記処理回路に出力する過程と、前記処理回路の各々が、自身の制御内容を記憶し、前記前記セレクタから出力された前記アドレスで指定される前記制御内容を読み出す過程と、を有する特徴とするプログラマブルデバイスの制御方法である。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、処理回路と制御回路とが１対１対応である従来の構成方法と比較して、処理回路の利用効率が高いプログラマブルデバイスおよびその制御方法を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態におけるプログラマブルデバイス１の構成例を示すブロック図である。
【図２】本発明の第１の実施形態における制御回路２０−１の構成例を示すブロック図である。
【図３】本発明の第１の実施形態における分岐条件テーブル及び制御内容テーブルの一例を示す図である。
【図４】本発明の第１の実施形態における第１の変形例を示す図である。
【図５】本発明の第１の実施形態における第２の変形例を示す図である。
【図６】本発明の第２の実施形態におけるプログラマブルデバイス１Ａの構成例を示すブロック図である。
【図７】本発明の第２の実施形態における処理回路１０Ａ−１の構成例を示すブロック図である。
【図８】本発明の第２の実施形態における制御内容テーブルの一例を示す図である。
【図９】本発明の第２の実施形態における制御回路２０Ａ−１の構成例を示すブロック図である。
【図１０】本発明の第２の実施形態における分岐条件テーブルの一例を示す図である。
【図１１】プログラマブルデバイスの一般的な構成を示す図である。
【図１２】従来の２段パイプラインを組んだ際の要素回路のパイプライン動作のタイミングチャートを示す図である。
【図１３】従来の１つのパイプラインの処理回路で複数の処理を実現する方法を説明する図である。
【発明を実施するための形態】
【００１８】
以下に、実施形態におけるプログラマブルデバイスを、図面を用いて説明する。
（第１の実施形態）
以下、第１の実施形態におけるプログラマブルデバイス１について、図面を用いて説明する。図１は、本発明の第１の実施形態におけるプログラマブルデバイス１の構成例を示すブロック図である。図１に示すように、プログラマブルデバイス１は、Ｍ（Ｍは２以上の整数）個の処理回路１０（処理回路１０−１、処理回路１０−２、…、処理回路１０−Ｍ）、Ｎ（Ｎは２以上の整数）個の制御回路２０（制御回路２０−１、制御回路２０−２、…、制御回路２０−Ｎ）、Ｍ個の第１のセレクタ３０（第１のセレクタ３０−１、第１のセレクタ３０−２、…、第１のセレクタ３０−Ｍ）を備えている。
【００１９】
処理回路１０は、第１のセレクタ３０の各々から出力された制御信号に基づいてデータの演算、データの保持等を実行する回路である。処理回路１０は、加算器、乗算器、論理演算等の各種演算器と演算用レジスタ、データメモリ、キャッシュメモリ等の記憶素子とを備えている。なお、制御信号は、処理回路１０が実行する処理内容（以下、「制御内容」とする。）を示す。
【００２０】
第１のセレクタ３０は、処理回路１０と制御回路２０との間に介挿されている。第１のセレクタ３０の入力端子は、制御回路２０−１、制御回路２０−２、…、制御回路２０−Ｎの各々に接続されている。また、第１のセレクタ３０の出力端子は、処理回路１０と１対１で接続されている。
第１のセレクタ３０は、選択信号に基づいて、各制御回路２０から出力される制御信号から１つの信号を選択する。第１のセレクタ３０が使用する選択信号は、例えば処理回路１０から出力される上記制御内容に対応した処理結果を示す信号である。そして、第１のセレクタ３０は、選択した制御信号を処理回路１０に出力する。これより、外部からの選択信号に応じて処理回路１０に出力する制御信号を切り替えることで、制御回路２０の制御対象とすべき処理回路１０を変更できる。すなわち、パイプラインでの処理内容によって制御対象を変更できるようになる。
【００２１】
制御回路２０は、処理回路１０に対する制御内容を示した制御信号を第１のセレクタ３０を介して処理回路１０に出力する。図２は、制御回路２０−１の構成例を示すブロック図である。なお、制御回路２０−２、…、制御回路２０−Ｎの構成は、図２に示す制御回路２０−１の構成例と同様の構成を有している。
制御回路２０−１は、プログラムカウンタ５０、記憶素子６０、分岐先判定部７０、第２のセレクタ８０を備えている。
【００２２】
プログラムカウンタ５０は、不図示のレジスタ及びインクリメンタを備えている。プログラムカウンタ５０は、第２のセレクタ８０から記憶素子６０の分岐先を示す値、すなわちプログラムカウンタ値（ＰＣ値）を取得すると、取得したプログラムカウンタ値をレジスタに設定する。そして、プログラムカウンタ５０は、設定したプログラムカウンタ値を処理回路１０の制御内容を読み出すためのアドレスとして記憶素子６０に出力する。インクリメンタは、プログラムカウンタ５０がプログラムカウンタ値を記憶素子６０に出力する毎に、レジスタに設定されているプログラムカウンタ値に１を加算し、加算したプログラムカウンタ値を第２のセレクタ８０に出力する。
【００２３】
記憶素子６０には、分岐条件テーブル及び制御内容テーブルが記憶されている。図３（ａ）は、分岐条件テーブルの一例を示す図である。分岐条件テーブルは、処理回路１０に出力する制御内容が記憶されている記憶素子６０のアドレスを決定するために用いられるテーブルである。分岐条件テーブルには、複数の分岐先ＰＣ値と、その分岐先ＰＣ値の各々に対応する分岐条件とがアドレスに対応づけられ記憶されている。分岐条件は、分岐先判定部７０へと入力される信号との比較を行う条件値であり、比較した結果、一致／不一致などの判定結果をもとに第２のセレクタ８０へと制御信号を出力する。
【００２４】
図３（ａ）に示すように、分岐条件テーブルには、例えば、第１の分岐先ＰＣ値とその第１の分岐先ＰＣ値に対応する第１の分岐条件、第２の分岐先ＰＣ値とその第２の分岐先ＰＣ値に対応する第２の分岐条件等、ａ個の分岐先ＰＣ値と分岐条件との組み合わせがｋ個のアドレス毎に記憶されている。上述したように、分岐数をａ分岐として、分岐先を示すデータをｎビット、分岐条件を示すデータをｘビットとすると、分岐条件と分岐先に関するデータは１アドレス当たり（ｎ＋ｘ）×ａビットのデータ容量になる。
【００２５】
図３（ｂ）は、制御内容テーブルの一例を示す図である。制御内容テーブルは、全ての処理回路１０の制御内容を決定するために用いられるテーブルである。制御内容テーブルには、処理回路１０の各々に対する制御内容がアドレス毎に記憶されている。例えば、図３（ｂ）に示すように、制御内容テーブルには、処理回路１０−１、処理回路１０−２、…、処理回路１０−Ｍのそれぞれの処理回路に対する制御内容がｋ個のアドレス毎に記憶されている。上述したように、処理回路１０毎に出力する制御信号のビット幅をｍビットとすると、１アドレス当たり（ｍ×Ｍ）ビットのデータ容量となる。
【００２６】
上述したように、最大分岐数をａ分岐、分岐先を示すデータをｎビット、分岐条件を示すデータをｘビットとすると、分岐条件デーブルの１アドレス当たりのデータは、（ｎ＋ｘ）×ａビットになる。また、制御内容テーブルの１アドレス当たりのデータは、（ｍ×Ｍ）ビットになる。よって、アドレスの最大値をｋとした場合、本構成の記憶素子６０の容量はｋ×（（ｍ×Ｍ）＋（（ｎ＋ｘ）×ａ））ビットとなる。
【００２７】
制御回路２０−１は、記憶素子６０においてプログラムカウンタ値を取得すると、分岐条件テーブルを読み出す。制御回路２０−１は、取得したプログラムカウンタ値をアドレスとして、そのアドレスに対応するａ個の分岐先ＰＣ値及び分岐条件を分岐条件テーブルから抽出する。制御回路２０−１は、抽出したａ個の分岐先ＰＣ値を第２のセレクタ８０に出力する。制御回路２０−１は、抽出したａ個の分岐条件を分岐先判定部７０に出力する。また、制御回路２０−１は、記憶素子６０においてプログラムカウンタ値を取得すると、制御内容テーブルを読み出す。制御回路２０−１は、取得したプログラムカウンタ値をアドレスとして、そのアドレスに対応するＭ個の処理回路の制御内容を制御内容テーブルから抽出する。制御回路２０−１は、Ｍ個の処理回路、すなわち処理回路１０の制御内容を制御信号として、第１のセレクタ３０に出力する。
【００２８】
分岐先判定部７０は、記憶素子６０からａ個の分岐条件を取得する。分岐先判定部７０は、処理回路１０から上記制御内容に対応した処理結果を取得する。分岐先判定部７０は、取得した処理結果とａ個の分岐条件とに基づいて第２のセレクタ８０に選択信号を出力する。例えば、分岐先判定部７０は、第１の分岐条件、第２の分岐条件、…、第ａの分岐条件の各々と、取得した処理結果とを比較し、その処理結果が分岐条件を満足するか否かを判定する。分岐先判定部７０は、処理結果が満足した分岐条件に対応する分岐先ＰＣ値を選ぶことを指示する選択信号を第２のセレクタ８０に出力する。ただし、処理結果がどの分岐条件にも満足しない場合、分岐先判定部７０は、プログラムカウンタ値に１を加算した値を選ぶことを指示する選択信号を第２のセレクタ８０に出力する。
【００２９】
第２のセレクタ８０は、データバスを介して記憶素子６０に接続されている。第２のセレクタ８０は、分岐先判定部７０からの選択信号に基づいて、記憶素子６０内のアドレスの分岐先ＰＣ値を選択する。第２のセレクタ８０は、選択した分岐先ＰＣ値をプログラムカウンタ５０に出力する。すなわち、第２のセレクタ８０は、分岐先判定部７０からの選択信号によって切換えられ適切なパスを選択する。
【００３０】
上述したように、プログラマブルデバイス１は、複数の処理回路１０と複数の制御回路２０と、その間を処理回路と同数の第１のセレクタ３０で接続する構成であるプログラマブルデバイスである。制御回路２０は、処理回路１０各々に対する制御内容を記憶した記憶素子６０と記憶素子６０内のアドレスを指定するプログラムカウンタ５０とを備える。第１のセレクタ３０は、制御回路２０の全ての制御信号を入力とし、そのうちの１つの制御信号を選択し、第１のセレクタ３０での選択結果を処理回路１０に出力する。これにより、多くの処理回路を必要としない処理に対しては、別の処理に対して処理回路と制御回路を使用することが可能となる。すなわち、記憶素子から出力される命令を制御信号として、任意にいずれかの処理回路へと出力できる。よって、処理回路の各々と制御回路とが配線された従来の構成方法と比較して、処理回路の利用効率が高いプログラマブルデバイスの構成方法を提供することができる。
【００３１】
また、本実施形態では、Ｍ個の処理回路がＮ個の制御回路全てに任意に接続できるため、処理回路の各々と制御回路とが固定的に配線された従来の構成方法と比較して、処理回路を削減することができる。よって、プログラマブルデバイス回路の低面積化、低電力化も可能となる。
【００３２】
以上述べた実施形態は全て本発明の実施形態を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様および変更態様で実施することができる。
【００３３】
図４は、本発明の第１の実施形態における第１の変形例である。上述した実施形態では、第１のセレクタ３０の選択信号に関して限定されないが、例えば、図４に示すように、制御回路２０の各々と処理回路１０の各々との対応付けを予め外部の選択設定レジスタ３００に記憶されており、選択設定レジスタ３００は、その対応付けに応じて選択信号を第１のセレクタ３０の各々に送信することで、第１のセレクタ３０の各々を切り替えるようにしてもよい。また、第１のセレクタ３０は、外部から選択信号を受信するようにしてもよい。
【００３４】
図５は、本発明の第１の実施形態における第２の変形例である。上述した実施形態では、第１のセレクタ３０の選択信号に関して限定されないが、図５に示すように、処理回路１０の各々からの出力に応じて、第１のセレクタ３０の各々を切り替えるような構成にしてもよい。このような構成にすることにより、処理回路１０からの出力結果に応じて、動的に処理回路１０を制御可能となる。
【００３５】
上述の実施形態では、制御回路２０において、プログラムカウンタ５０の分岐が行えるように分岐先判定部７０を含む構成として説明したが、これに限定されない。例えば、各制御回路２０は分岐先判定部７０を持たず、プログラムカウンタ５０のみで、アドレスを順番に読み出して制御するようにしても良い。
【００３６】
また、上述の実施形態では、制御回路２０の分岐先判定部７０に処理結果を入力したが、これに限定されない。例えば、制御回路２０の外部に固定的な設定レジスタを用意しておき、その設定レジスタから制御回路２０に値を出力するようにしてもよい。また、処理回路１０の処理結果及び設定レジスタから出力される値の中から選択できるようにしてもよい。
【００３７】
また、上述の実施形態では、処理回路１０の各々に出力する制御信号のビット幅をｍビットと一定として説明したが、すべての処理回路１０への制御信号のビット幅を同一にする必要はない。よって、処理回路１０の演算器の種類や規模により、制御信号線のビット幅は異なるようにしてもよい。なおその場合は、記憶素子６０の容量も変わる。
【００３８】
（第２の実施形態）
以下、第２の実施形態におけるプログラマブルデバイス１Ａについて、図面を用いて説明する。本実施形態のプログラマブルデバイス１Ａは、第１の実施形態において制御回路２０の記憶素子６０に記憶している制御内容テーブルを、各処理回路へと分散させる。なお、第１の実施形態と同じ構成には、同じ符号を付してその説明を省略する。
【００３９】
図６は、本発明の第２の実施形態におけるプログラマブルデバイス１Ａの構成例を示すブロック図である。図６に示すように、プログラマブルデバイス１Ａは、Ｍ（Ｍは２以上の整数）個の処理回路１０Ａ（処理回路１０Ａ−１、処理回路１０Ａ−２、…、処理回路１０Ａ−Ｍ）、Ｎ（Ｎは２以上の整数）個の制御回路２０Ａ（制御回路２０Ａ−１、制御回路２０Ａ−２、…、制御回路２０Ａ−Ｎ）、Ｍ個の第１のセレクタ３０Ａ（第１のセレクタ３０Ａ−１、第１のセレクタ３０Ａ−２、…、第１のセレクタ３０Ａ−Ｍ）を備えている。
【００４０】
処理回路１０Ａは、第１のセレクタ３０Ａの各々から出力された制御信号に基づいてデータの演算、データの保持等を実行する回路である。図７は、処理回路１０Ａ−１の構成例を示すブロック図である。なお、処理回路１０Ａ−２、…、処理回路１０Ａ−Ｍの構成は、図７に示す処理回路１０Ａ−１の構成例と同様の構成を有している。
【００４１】
処理回路１０Ａ−１は、記憶素子１１Ａ及び制御部１２Ａを備えている。
記憶素子１１Ａには、制御内容テーブルが記憶されている。図８は、制御内容テーブルの一例を示す図である。制御内容テーブルには、自回路の制御内容に対する制御内容がアドレス毎に記憶されている。例えば、図８に示すように、制御内容テーブルには、処理回路１０Ａ−１の処理回路に対する制御内容がｋ個のアドレス毎に記憶されている。制御内容テーブルの１アドレス当たりのデータは、ｍビットとすると、アドレスの最大値をｋとした場合、本構成の記憶素子１１Ａの容量はｋ×ｍビットとなる。
処理回路１０Ａ−１は、第１のセレクタ３０Ａ−１を介して制御回路２０Ａ−１から制御信号を取得すると、その制御信号が示すアドレスに対応する制御内容を抽出する。そして、処理回路１０Ａ−１は、抽出した制御内容を制御部１２Ａに出力する。
制御部１２Ａは、記憶素子１１Ａから制御信号を受信すると、その制御信号に基づいて、演算等の処理を実行する。
【００４２】
第１のセレクタ３０Ａは、処理回路１０Ａと制御回路２０Ａとの間に介挿されている。第１のセレクタ３０Ａの入力端子は、制御回路２０Ａ−１、制御回路２０Ａ−２、…、制御回路２０Ａ−Ｍの各々に接続されている。また、第１のセレクタ３０Ａの出力端子は、処理回路１０Ａと１対１で接続されている。
第１のセレクタ３０Ａは、外部からの選択信号に基づいて、各制御回路２０Ａから出力されるアドレスを示す制御信号から１つの信号を選択する。そして、第１のセレクタ３０Ａは、選択した制御信号を処理回路１０Ａに出力する。これより、外部からの選択信号に応じて処理回路１０Ａに出力する制御信号を切り替えることで、制御回路２０Ａの制御対象とすべき処理回路１０Ａを変更できる。すなわち、パイプラインでの処理内容によって制御対象を変更できるようになる。
【００４３】
制御回路２０Ａは、記憶素子１１Ａのアドレスを示す制御信号を第１のセレクタ３０を介して処理回路１０Ａに出力する。図９は、制御回路２０Ａ−１の構成例を示すブロック図である。なお、制御回路２０Ａ−２、…、制御回路２０Ａ−Ｎの構成は、図９に示す制御回路２０Ａ−１の構成例と同様の構成を有している。
制御回路２０Ａ−１は、プログラムカウンタ５０、記憶素子６０Ａ、分岐先判定部７０、第２のセレクタ８０Ａを備えている。
【００４４】
記憶素子６０Ａには、分岐条件テーブルが記憶されている。図１０は、分岐条件テーブルの一例を示す図である。分岐条件テーブルには、複数の分岐先ＰＣ値と、その分岐先ＰＣ値の各々に対応する分岐条件とが記憶素子１１Ａのアドレスに対応づけられ記憶されている。例えば、図１０に示すように、分岐条件テーブルには、第１の分岐先ＰＣ値とその第１の分岐先ＰＣ値に対応する第１の分岐条件、第２の分岐先ＰＣ値とその第２の分岐先ＰＣ値に対応する第２の分岐条件等、ａ個の分岐先ＰＣ値と分岐条件との組み合わせがｋ個のアドレス毎に記憶されている。上述したように、分岐数をａ分岐として、分岐先を示すデータをｎビット、分岐条件を示すデータをｘビットとすると、分岐条件と分岐先に関するデータは１アドレス当たり（ｎ＋ｘ）×ａビットのデータ容量になる。
【００４５】
制御回路２０Ａ−１は、記憶素子６０Ａにおいてプログラムカウンタ値を取得すると、分岐条件テーブルを読み出す。制御回路２０Ａ−１は、取得したプログラムカウンタ値をアドレスとして、そのアドレスに対応するａ個の分岐先ＰＣ値及び分岐条件を分岐条件テーブルから抽出する。制御回路２０Ａ−１は、抽出したａ個の分岐先ＰＣ値を第２のセレクタ８０Ａに出力する。制御回路２０Ａ−１は、抽出したａ個の分岐条件を分岐先判定部７０に出力する。
【００４６】
分岐先判定部７０Ａは、記憶素子６０からａ個の分岐条件を取得する。分岐先判定部７０Ａは、処理回路１０Ａから処理回路１０の処理結果を取得する。分岐先判定部７０Ａは、取得した処理結果とａ個の分岐条件とに基づいて第２のセレクタ８０Ａに選択信号を出力する。例えば、分岐先判定部７０Ａは、第１の分岐条件、第２の分岐条件、…、第ａの分岐条件の各々と、取得した処理結果とを比較し、その処理結果が分岐条件を満足するか否かを判定する。分岐先判定部７０Ａは、処理結果が満足した分岐条件に対応する分岐先ＰＣ値を選ぶことを指示する選択信号を第２のセレクタ８０Ａに出力する。ただし、処理結果がどの分岐条件にも満足しない場合、分岐先判定部７０Ａは、プログラムカウンタ値に１を加算した値を選ぶことを指示する選択信号を第２のセレクタ８０Ａに出力する。
【００４７】
第２のセレクタ８０Ａは、データバスを介して記憶素子６０に接続されている。第２のセレクタ８０は、分岐先判定部７０Ａからの選択信号に基づいて、記憶素子６０Ａ内のアドレスの分岐先ＰＣ値を選択する。第２のセレクタ８０Ａは、選択した分岐先ＰＣ値をアドレスとしてプログラムカウンタ５０及び第１のセレクタ３０に出力する。すなわち、第２のセレクタ８０は、分岐先判定部７０からの選択信号によって切換えられ適切なパスを選択する。
【００４８】
上述したように、プログラマブルデバイス１Ａは、複数の処理回路１０Ａと複数の制御回路２０Ａと、その間を処理回路Ａと同数の第１のセレクタ３０で接続する構成であるプログラマブルデバイスである。制御回路２０Ａは、記憶素子６０内のアドレスを指定するプログラムカウンタ５０を備える。第１のセレクタ３０は、制御回路２０の全ての制御信号を入力とし、そのうちの１つの制御信号を選択し、第１のセレクタ３０での選択結果を処理回路１０に出力する。処理回路は、処理回路１０各々に対する制御内容を全て記憶した記憶素子１１Ａを備え、その制御信号に対応する制御内容を実行する。これにより、多くの処理回路を必要としない処理に対しては、別の処理に対して処理回路と制御回路を使用することが可能となる。すなわち、記憶素子から出力される命令を制御信号として、任意にいずれかの処理回路へと出力できる。よって、処理回路の各々と制御回路とが固定的に配線された従来の構成方法と比較して、処理回路の利用効率が高いプログラマブルデバイスの構成方法を提供することができる。
【００４９】
また、本実施形態では、Ｍ個の処理回路がＮ個の制御回路全てに任意に接続できるため、処理回路の各々と制御回路とが固定的に配線された従来の構成方法と比較して、処理回路を削減することができる。よって、プログラマブルデバイス回路の低面積化、低電力化も可能となる。
【００５０】
また、第１の実施形態では、制御回路２０の記憶素子６０は、全ての処理回路１０への制御内容を示すデータ、すなわち制御内容テーブルを記憶し、その制御内容を制御信号として第１のセレクタ３０に出力する。そのため制御信号のビット幅は、制御回路２０の個数Ｍに比例して大きくなり、第１のセレクタ３０の規模も増加してしまう。本発明の第２の実施形態では、制御内容テーブルを記憶素子６０Ａではなく、処理回路１０Ａに記憶させた。そして、各制御回路の記憶素子６０Ａからの制御信号を、制御内容を示すデータではなく、各制御回路内のプログラムカウント値とした。プログラムカウント値は制御回路２０Ａの個数によらず、一定のビット幅であり、その幅も小さい。これより、制御回路２０Ａからの制御信号の出力のビット幅がｎビットになる。よって、各第１のセレクタ３０の規模が第１の実施形態の第１のセレクタ３０より小型にすることができる。また、全体の記憶素子の容量は変わらずに制御信号のビット幅と第１のセレクタの規模を小さくすることができるので、全体の回路規模を削減することができる。
【００５１】
以上述べた実施形態は全て本発明の実施形態を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様および変更態様で実施することができる。
【００５２】
上述した実施形態では、第１のセレクタ３０の選択信号に関して限定されないが、例えば、図４に示すように、制御回路２０Ａの各々と処理回路１０Ａの各々との対応付けを予め外部の選択設定レジスタ３００に記憶されており、選択設定レジスタ３００は、その対応付けに応じて選択信号を第１のセレクタ３０の各々に送信することで、第１のセレクタ３０の各々を切り替えるようにしてもよい。また、第１のセレクタ３０は、外部から選択信号を受信するようにしてもよい。
【００５３】
また、上述した実施形態では、第１のセレクタ３０の選択信号に関して限定されないが、処理回路１０の各々からの出力に応じて、第１のセレクタ３０の各々を切り替えるような構成にしてもよい。このような構成にすることにより、処理回路１０Ａからの出力結果に応じて、動的に処理回路１０Ａを制御可能となる。
【００５４】
上述の実施形態では、制御回路２０Ａにおいて、プログラムカウンタ５０の分岐が行えるように分岐先判定部７０Ａを含む構成として説明したが、これに限定されない。例えば、各制御回路２０Ａは分岐先判定部７０Ａを持たず、プログラムカウンタ５０のみで、アドレスを順番に読み出して制御するようにしてもよい。
【００５５】
また、上述の実施形態では、制御回路２０Ａの分岐先判定部７０Ａに処理結果を入力したが、これに限定されない。例えば、制御回路２０Ａの外部に固定的な設定レジスタを用意しておき、その設定レジスタから制御回路２０Ａに値を出力するようにしてもよい。また、処理回路１０Ａの処理結果及び設定レジスタから出力される値の中から選択できるようにしてもよい。
【００５６】
また、上述の実施形態では、処理回路１０Ａの各々に出力する制御信号のビット幅をｎ ビットと一定として説明したが、すべての処理回路１０への制御信号のビット幅を同一にする必要はない。よって、処理回路１０の演算器の種類や規模により、制御信号線のビット幅は異なるようにしてもよい。なおその場合は、記憶素子６０Ａの容量も変わる。
【００５７】
また、上述の実施形態では、第１のセレクタ３０は、処理回路と同数である構成としたが、これに限定されてない。例えば、第１のセレクタ３０は、処理回路と同数以上であってもよい。
【符号の説明】
【００５８】
１、１Ａ、１００  プログラマブルデバイス
１０、１０Ａ、１１０  処理回路
２０、２０Ａ、１２０  制御回路
３０、３０Ａ  第１のセレクタ
５０  プログラムカウンタ
１１Ａ、６０、６０Ａ  記憶素子
１２Ａ  制御部
７０  分岐先判定部
８０、８０Ａ  第２のセレクタ
２００−１、２００−２  要素回路
３００  選択設定レジスタ
【図１】
0006259361.tif 000002
【図２】
0006259361.tif 000003
【図３】
0006259361.tif 000004
【図４】
0006259361.tif 000005
【図５】
0006259361.tif 000006
【図６】
0006259361.tif 000007
【図７】
0006259361.tif 000008
【図８】
0006259361.tif 000009
【図９】
0006259361.tif 000010
【図１０】
0006259361.tif 000011
【図１１】
0006259361.tif 000012
【図１２】
0006259361.tif 000013
【図１３】
0006259361.tif 000014