(57)【要約】【課題】プログラム可能な半導体装置において、クロック周波数を保証しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行できる。【解決手段】本開示の一実施形態は、一定のクロック信号に同期して演算を行う半導体装置であって、演算制御情報を出力する制御部１３と、データを記憶する記憶部１１と、第１のデータに対して第１の演算制御情報に従い演算を行う演算ユニット１００と、第２のデータに対して第２の演算制御情報に従い演算を行う演算ユニット１０１とを備える。演算ユニット１００は、演算回路を複数個備える。演算ユニット１０１は、論理ゲート段数ｎ（ｎ＞ｍ）の演算回路を少なくとも１個備える。【選択図】図１
2011242995.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号に同期して演算処理を実行する半導体装置であって、
各演算回路が実行する演算を制御するための第１の演算制御情報と第２の演算制御情報とを出力する制御部と、
第１のデータと第２のデータとを記憶する記憶部と、
前記クロック信号に同期して動作し、前記第１の演算制御情報に従って、前記第１のデータに対して演算処理を行い、第３のデータを出力する第１の演算ユニットと、
前記クロック信号に同期して動作し、前記第２の演算制御情報に従って、前記第２のデータに対して演算処理を行い、第４のデータを出力する第２の演算ユニットとを備え、
前記第１の演算ユニットは、直列に接続された第１乃至第Ｍ（Ｍは、２以上の整数）の演算回路を備え、
前記第ｍ＋1（ｍは、１以上Ｍ−１以下の整数）段の演算回路は、前記第ｍ段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第１乃至第Ｍの演算回路の遅延量を示す遅延指標は、それぞれ、ｍ１、・・・、ｍＭ（ｍ１、・・・、ｍＭは、自然数）であって、
前記第２の演算ユニットは、遅延量を示す遅延指標がｎ（ｎは１以上の整数）の演算回路を少なくとも備え、
前記第１の演算ユニットが備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）によって定められる遅延時間と、前記第２の演算ユニットが備える演算回路の遅延指標ｎによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下であることを特徴とする半導体装置。
【請求項２】
前記記憶部は、前記第１の演算ユニットが演算処理を行うデータを記憶する第１の記憶ユニットと、前記第２の演算ユニットが演算処理を行うデータを記憶する第２の記憶ユニットとを備え、
前記第１の演算ユニットは、前記第１の記憶ユニットに記憶されるデータを読み出し、前記第３のデータを前記第１の記憶ユニットと前記第２の記憶ユニットのどちらか一方、もしくは両方に書き込み、
前記第２の演算ユニットは、前記第２の記憶ユニットに記憶されるデータを読み出し、前記第４のデータを前記第１の記憶ユニットと前記第２の記憶ユニットのどちらか一方、もしくは両方に書き込むことを特徴とする
請求項１記載の半導体装置。
【請求項３】
前記記憶部は、前記第１の演算ユニット及び前記第２の演算ユニットが演算処理を行うデータを記憶する記憶ユニットを備えるものであり、
前記第１の演算ユニットの演算結果と前記第２の演算ユニットの演算結果との双方が入力可能であって、前記第３のデータと前記第４のデータのいずれか一方を選択するセレクタをさらに備え、
前記セレクタによって選択された一方が前記記憶部に書き込まれることを特徴とする
請求項１記載の半導体装置。
【請求項４】
前記制御部は、第３の演算制御情報と第４の演算制御情報とを出力し、
前記記憶部は、第５のデータと第６のデータとを記憶し、
前記クロック信号に同期して動作し、前記第３の演算制御情報に従い、前記第５のデータに対して演算処理を行い、第７のデータを出力する第３の演算ユニットと、
前記クロック信号に同期して動作し、前記第４の演算制御情報に従い、前記第６のデータに対して演算処理を行い、第８のデータを出力する第４の演算ユニットとをさらに備え、
前記第３の演算ユニットは、直列に接続された第１乃至第Ｒ（Ｒは、２以上の整数）の演算回路を備え、
前記第ｒ＋1（ｒは、１以上Ｒ−１以下の整数）段の演算回路は、前記第ｒ段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第１乃至第Ｒの演算回路の遅延量を示す遅延指標は、それぞれ、ｒ１、・・・、ｒＲ（ｒ１、・・・、ｒＲは、自然数）であって、
前記第４の演算ユニットは、遅延量を示す遅延指標がｓ（ｓは１以上の整数）の演算回路を少なくとも備え、
前記第３の演算ユニットが備える演算回路の遅延指標の和（ｒ１＋・・・＋ｒＲ）によって定められる遅延時間と、前記第４の演算ユニットが備える演算回路の遅延指標ｓとによって定められる遅延時間は、それぞれ、前記クロック信号の周期以下である
ことを特徴とする請求項１記載の半導体装置。
【請求項５】
前記記憶部は、第９のデータと第１０のデータとを記憶し、
各演算回路が実行する演算を制御するための第５の演算制御情報と第６の演算制御情報とを出力する第２の制御部と、
前記クロック信号に同期して動作し、前記第５の演算制御情報に従って、前記第９のデータに対して演算処理を行い、第１１のデータを出力する第５の演算ユニットと、
前記クロック信号に同期して動作し、前記第６の演算制御情報に従って、前記第１０のデータに対して演算処理を行い、第１２のデータを出力する第６の演算ユニットとをさらに備え、
前記第５の演算ユニットは、直列に接続された第１乃至第Ｔ（Ｔは、２以上の整数）の演算回路を備え、
前記第ｔ＋1（ｔは、１以上Ｔ−１以下の整数）段の演算回路は、前記第ｔ段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第１乃至第Ｔの演算回路の遅延量を示す遅延指標は、それぞれ、ｔ１、・・・、ｔＴ（ｔ１、・・・、ｔＴは、自然数）であって、
前記第６の演算ユニットは、遅延量を示す遅延指標がｕ（ｕは１以上の整数）の演算回路を少なくとも備え、
前記第５の演算ユニットが備える演算回路の遅延指標の和（ｔ１＋・・・＋ｔＴ）によって定められる遅延時間と、前記第６の演算ユニットが備える演算回路の遅延指標ｕによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下である
ことを特徴とする請求項１記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラム可能な半導体装置に関する。
【背景技術】
【０００２】
ソフトウェアによるプログラムが可能な半導体装置のうち、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのリコンフィギャラブル回路を用いた計算システムは、リコンフィギャラブル回路の回路情報をあらかじめメモリなどの記憶装置に保持し、システム初期化時に必要な情報を読み出して実行回路を構成することができる装置である。また、動的リコンフィギャラブル回路技術を用いた計算システムは、このような回路情報を複数保持し、プログラムにより規定された規則に従って、動作時に必要な回路情報を読み出して実行回路を構成することができる装置である。
【０００３】
一般的に、ＦＰＧＡは処理データの細かい（ビット数の少ない）ＬＵＴ（Ｌｏｏｋ−Ｕｐ  Ｔａｂｌｅ）を基本演算素子とし、これらの基本演算素子をプログラム可能な配線とスイッチ素子で相互接続することができる。相互接続された多数の基本演算素子を組み合わせることで、複雑な演算処理を実行することが可能である（非特許文献１）。一方、動的リコンフィギャラブル回路は処理データの粗い（ビット数の多い）演算器を基本演算素子とする装置である。これらのリコンフィギャラブル回路を用いることで、単一の半導体装置上で多様な演算処理を実現することが可能となり、専用ハードウェアの開発コストの削減が期待される。
【０００４】
また、ソフトウェアによるハードウェア構成の変更が可能な計算システムとして、特許文献１記載のアレイ型プロセッサがあげられる。このアレイ型プロセッサでは、小規模の多数のプロセッサエレメントがマトリクス状に配列された構成をもち、プログラムを変更することでハードウェアの構成を変化させることができる。プログラムにより規定された順序に従い、プロセッサエレメントごとに１つの命令コードが選択され、この命令コードに従って演算器の演算処理とプロセッサエレメントの接続関係が制御され、複雑な演算処理を多数の演算器により並列に実行することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許３５２８９２２号明細書
【非特許文献】
【０００６】
【非特許文献１】Paul Chow, Soon Ong Seo, Jonathan Rose, Kevin Chung, Gerard Paez-Monzon, and Immanuel Rahardja, "The Design of an SRAM-Based Field-Programmable Gate Array -- Part I: Architecture"IEEE Transaction on Very Large Scale Integration (VLSI) Systems, Vol.7, No.2, June 1999
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一般的に、クロックに同期したプロセッサユニットを用いて複雑な演算処理を実現する場合、単純な演算命令を実行する演算器を複数クロックサイクルにわたって実行させ、単純な演算を組み合わせることで実現する。ＣＰＵなどのプロセッサユニットの演算器が単一クロックサイクルで実行できる演算命令は通常一つであることから、処理する演算処理の複雑度に応じて複数のクロックサイクルを消費することになる。このため、ＣＰＵなどのプロセッサユニットで複雑な演算処理を高速に実行する場合には、高いクロック周波数で動作させなければならず、消費電力が大きくなってしまう問題がある。
【０００８】
また、プロセッサユニットのサポートする演算を実行する演算器のレイテンシ（回路上の遅延時間）は演算命令の種類によって異なるため、最も複雑な（レイテンシの大きい）演算回路に合わせたクロック周波数を用いて回路を動作することとなる。このような場合、単純な演算命令を実行する際には本来実行可能な演算回数よりも少ない演算処理しか行うことができず、本来の性能を発揮することができない。このため、ＣＰＵなどの高いクロック周波数で動作させるプロセッサユニットでは、複雑な演算命令は複数クロックサイクルに分割して実行するような工夫がなされている。しかしながら、この手法では性能の向上は達成できるもののクロック周波数の向上により消費電力が増大してしまう点が問題となる。
【０００９】
一方、ＦＰＧＡなどのリコンフィギャラブル回路では、プログラマブルな配線とスイッチ素子により複数の演算素子を多段で接続することで、複雑な演算処理を単一クロックサイクルで実現可能である。同様に特許文献１記載のアレイ型プロセッサでも、マトリクス状に配列された複数のプロセッサエレメントを多段で接続して複雑な演算処理をプログラムすることが可能である。このように、単一クロックサイクル中に複数の演算処理を複数の演算素子を用いて実行可能であることから、低いクロック周波数であっても高速に演算処理を行うことができる。
【００１０】
しかしながら、このようなソフトウェアにより演算素子間の接続関係もプログラムして複雑な演算処理を実現する半導体装置の場合、クロック周波数はプログラムされた最も実行時間の長い演算処理に依存することになる。
【００１１】
また、同一のソフトウェアであっても、演算命令の演算器へのマッピングや演算素子間の実際の配線結果によって実行時間が異なることとなり、プログラムごとのクロック周波数の制御が複雑になるという課題があった。
【００１２】
さらに、多数の演算素子を並列に動作させることが可能である一方で、複数クロックにわたって同一の演算素子を活用することが困難となり、回路の利用効率が低下するという課題がある。
【００１３】
本発明の一観点は、ソフトウェアによりハードウェア構成を変更可能な半導体装置において、半導体装置の動作するクロック周波数を保証しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行することが可能な半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一観点による半導体装置は、クロック信号に同期して演算処理を実行する半導体装置であって、各演算回路が実行する演算を制御するための第１の演算制御情報と第２の演算制御情報とを出力する制御部と、第１のデータと第２のデータとを記憶する記憶部と、前記クロック信号に同期して動作し、前記第１の演算制御情報に従って、前記第１のデータに対して演算処理を行い、第３のデータを出力する第１の演算ユニットと、前記クロック信号に同期して動作し、前記第２の演算制御情報に従って、前記第２のデータに対して演算処理を行い、第４のデータを出力する第２の演算ユニットとを備え、前記第１の演算ユニットは、直列に接続された第１乃至第Ｍ（Ｍは、２以上の整数）の演算回路を備え、前記第ｍ＋1（ｍは、１以上Ｍ−１以下の整数）段の演算回路は、前記第ｍ段の演算回路の演算結果に対して、演算処理を行うものであって、前記第１乃至第Ｍの演算回路の遅延量を示す遅延指標は、それぞれ、ｍ１、・・・、ｍＭ（ｍ１、・・・、ｍＭは、自然数）であって、前記第２の演算ユニットは、遅延量を示す遅延指標がｎ（ｎは１以上の整数）の演算回路を少なくとも備え、前記第１の演算ユニットが備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）によって定められる遅延時間と、前記第２の演算ユニットが備える演算回路の遅延指標ｎによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下であることを特徴とする。
【発明の効果】
【００１５】
本発明の一観点によれば、ソフトウェアによりハードウェア構成を変更可能な半導体装置において、半導体装置の動作するクロック周波数を保障しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行可能とすることができる。
【図面の簡単な説明】
【００１６】
【図１】実施例１に係る半導体装置１の全体構成を示すブロック図である。
【図２】演算ユニット１００、１０１の構成の一例を示す図である。
【図３】演算回路１０００Ａ、１０００Ｂの詳細な構成を示す図である。
【図４】演算ユニット１００、１０１の構成の一例を示す図である。
【図５】実施例１の記憶部１１の内部構成の一例を示す図である。
【図６】実施例１に係る半導体装置１の各構成の動作を示すシーケンス図である。
【図７】実施例１の記憶部１１の内部構成の変形例を示す図である。
【図８】実施例１の演算部１２の変形例を示すブロック図である。
【図９】実施例１の記憶部１１及び演算部１２の変形例を示す図である。
【図１０】実施例２に係る半導体装置の記憶部１１と演算部１２を示す図である。
【図１１】実施例３に係る半導体装置の全体構成を示すブロック図である。
【図１２】実施例４に係る半導体装置の全体構成を示すブロック図である。
【図１３】実施例５に係る半導体装置の全体構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下に、本発明の実施の形態について、図面に基づいて詳細に説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【実施例１】
【００１８】
図１は、本発明の第１の実施例の半導体装置の構成を示した図である。半導体装置１は、処理部１０と、記憶部１１とを備え、外部装置５０と接続されている。処理部１０は、演算部１２と、制御部１３とを備える。半導体装置1は、一定のクロック周波数のクロック信号に同期して演算処理を行うものとする。
【００１９】
制御部１３は、外部装置５０と接続され、外部装置５０より入力される半導体装置１の動作を制御するための制御情報を解釈し、演算部１２の動作を制御する演算制御情報と、記憶部１１の動作を制御するリード・ライト制御情報とを出力する。
【００２０】
制御情報とは、半導体装置１の動作を制御する情報であり、演算部１２と記憶部１３の動作内容や動作順序を特定する情報であれば良い。制御情報とは、例えば、演算部１２の演算処理内容や処理順序を特定する演算制御情報や、記憶部１３のアドレス情報やリードまたはライトを示すアクセス情報を含むリード・ライト制御情報である。また、制御情報は、後述する開始制御信号を含んでいても良い。
【００２１】
制御部１３は、制御情報に含まれる演算制御情報の識別子と、リード・ライト制御情報の識別子とに従い、演算制御情報の識別子が示す演算制御情報と、リード・ライト制御情報の識別子が示すリード・ライト制御情報とを読出し、演算制御情報を演算部１２へ、リード・ライト制御情報を記憶部１１へ出力する。制御部１３は、演算制御情報とリード・ライト制御情報との出力が完了すると、次の制御情報に対して、同様の処理を継続する。制御部１３は、処理完了の情報を含む制御情報を記憶装置から読み出すまで上記処理を繰り返す。演算制御情報の識別子と、リード・ライト制御情報の識別子は、それぞれ、演算制御情報、リード・ライト制御情報を特定できれば特に形態は問わない。例えば、識別子は、演算制御情報、リード・ライト制御情報を保持する記憶装置のアドレス情報であっても良い。「次」の演算制御情報、リード・ライト制御情報とは、特定の順序の情報を意図した通りに選択できれば特に形態は問わない。例えば、識別子がアドレス情報の場合は次のアドレスに保持されている情報を用いても良いし、読み出した演算制御情報、リード・ライト制御情報に、次の制御情報の識別子を埋め込むことで指定しても良い。
【００２２】
また、別の例では制御情報は制御部１３が出力する演算制御情報や、リード・ライト制御情報の識別子を含む情報でも構わないし、演算制御情報、リード・ライト制御情報の内容そのもので構成してもよい。
【００２３】
演算制御情報とは、演算部１２の動作を特定するための情報であれば良い。演算制御情報とは、例えば、演算部１２で処理される演算処理内容や、演算処理に用いるデータ選択情報である。制御部１３から演算部１２に演算制御情報が入力されると、演算部１２はデータ選択情報に従って、演算処理に必要となるデータを選択し、演算処理内容で特定される演算処理を実行する。ここで言うデータとは、演算処理で利用できるデータであればよく、実現の形態は特に問わない。例えば、記憶部１１から読み出したデータであってもよいし、演算部１２の以前の演算処理結果を内部のレジスタに保持しておき、これを利用してもよい。
【００２４】
リード・ライト制御情報とは、記憶部１１の動作を特定するための情報であれば良い。リード・ライト制御情報とは、例えば、記憶部１１にアクセスする際に使用されるアドレス情報や、記憶部１１に対するリードまたはライトを示すアクセス情報である。制御部１３から記憶部１１にリード・ライト制御情報が入力されると、記憶部１１はアドレス情報によって特定される記憶部の領域に対して、アクセス情報によって特定される動作を行う。ここでいう動作とは、アドレス情報によって特定される記憶部の領域に対するリード(読み出し)かライト(書き込み)のいずれか一方、もしくはその両方を意味する。ここで、記憶部１１が一度に可能なアクセスの数は特定しない。例えば、記憶部１１は、一度に２回のリードが可能であってもよいし、１回のリードと１回のライトが同時に可能なようにしてもよい。
【００２５】
演算部１２は、制御部１３と、記憶部１１とに接続される。演算部１２は、制御部１３からの開始制御信号を受け取ると、記憶部１１から読み出したデータに対して、演算制御情報に従った演算処理を実行し、出力データ（演算結果）を記憶部１１へと出力する。演算部１２は、演算制御情報の示す演算処理を、１クロックサイクルで実行する。
【００２６】
演算部１２は、クロック信号に同期して演算処理を行う演算ユニット１００と、クロック信号に同期して演算処理を行う演算ユニット１０１とを有する。なお、演算部１２にクロック信号が直接入力されなくても良い。例えば、記憶部１１にクロック信号が直接入力され、記憶部１１の動作に準じて、演算部１２が演算処理を行っても良い。演算ユニット１００は、遅延指標が閾値ｋ（ｋは１以上の整数）未満の演算回路を複数個備える。演算ユニット１００が実行する演算処理の複雑度は小さい。演算ユニット１０１は、遅延指標が閾値ｋよりも大きい演算回路を少なくとも１個備える。演算ユニット１０２が実行する演算処理の複雑度は大きい。この閾値ｋは、半導体装置の設計方針などに従って決定される。演算ユニット１００が備える演算回路の数は、演算ユニット１０１が備える演算回路の数よりも大きい。
【００２７】
遅延指標とは、それぞれの演算回路の遅延時間を示す指標であればよく、ここでは実際に使用する指標は特定しない。例えば、演算回路の遅延指標とは、演算回路の論理ゲート段数や、演算回路のレイテンシ(遅延時間)、あるいは、演算処理を実行する演算回路の回路面積で示しても良い。演算処理のレイテンシや演算回路の回路面積は、ある特定の半導体製造技術に基いて、演算回路（演算処理）ごとに計測する。一方で、演算回路の論理ゲート段数は、各演算処理に対応する論理回路のゲート段数の最大値を指標とすることで、特定の半導体製造技術に依存しない。実際に利用する半導体製造技術が予め特定されている場合には、演算回路のレイテンシや演算回路の回路面積の方が精度の高い指標である。一方、実際に利用する半導体製造技術が予め特定されていない場合には、演算処理のレイテンシや演算回路の回路面積に比べて精度は劣るが、演算処理の論理ゲート段数の方が汎用性の高い指標である。
【００２８】
以下では、遅延指標が演算回路の論理ゲート段数であり、演算ユニット１００が論理ゲート段数ｍ（ｍは１以上ｋ未満の自然数）の演算回路を２つ有し、演算ユニット１０１が論理ゲート段数ｎ（ｎはｋ以上の自然数であり、ｎ＞ｍ）の演算回路を１つ有する例で説明する。
【００２９】
２つの演算ユニット１００、１０１は、独立に動作可能である。２つの演算ユニット１００、１０１は、一方のみが動作しても良く、双方が動作しても良い。演算ユニット１００、１０１には、記憶部１１に記憶された異なる２つのデータがそれぞれ入力されても良く、同一のデータがそれぞれ入力されても良い。演算ユニット１００、１０１は、制御部１３からの演算制御情報と、記憶部１１から読み出すデータとを入力とし、演算制御情報に従って演算処理を実行し、その演算結果（出力データ）を記憶部１１へ書き込む。
【００３０】
図２は、演算部１２の詳細な構成例を示す図である。演算ユニット１００、１０１は、演算制御情報に従って演算処理を実際に実行する演算回路を有する。演算ユニット１００は、論理ゲート段数ｍ（ｍは１以上ｋ未満の自然数）の演算回路１０００Ａ、１０００Ｂを２つ有する。演算ユニット１０１は、論理ゲート段数ｎ（ｎはｋ以上の自然数であり、ｎ＞ｍ）の演算回路１００１を１つ有する。
【００３１】
演算回路１０００Ａ、１０００Ｂで実行可能な演算命令の例は、データに対する論理和や論理積、加減算などの基本的な算術論理演算などである。演算回路１００１で実行可能な演算命令の例は、データに対する乗除算や剰余算、データの中の０の数を数え上げる演算など、演算回路１０００Ａ、１０００Ｂで実行可能な演算命令と比較して複雑な演算である。
【００３２】
図３は、演算回路１０００Ａ、１０００Ｂの詳細な構成例を示す図である。演算回路１０００Ａ、１０００Ｂは、論理演算を行う論理演算器２０００Ａ、２０００Ｂと、シフトや加減算を行う算術演算回路２００１Ａ、２００１Ｂとを有する。演算回路１０００Ａ、１０００Ｂは、直列に接続される。論理演算器２０００Ａと算術演算器２００１Ａ、ならびに、論理演算器２０００Ｂと算術演算器２００１Ｂ、は直列に接続される。
【００３３】
演算回路１０００Ａは、記憶部１１から読み出したデータに対して、制御部１３からの演算制御情報に従って演算処理を実行し、出力データ（演算結果）を演算回路１０００Ｂへ出力する。演算回路１０００Ｂは、演算回路１０００Ａの出力データに対して、制御部１３からの演算制御情報に従って演算命令を実行し、出力データ（演算結果）を記憶部１１へ書き込む。
【００３４】
記憶部１１から読み出されるデータは、演算回路１０００Ａに入力されても良く、演算回路１０００Ｂに入力されても良い。演算回路１０００Ａに入力されるデータは、論理演算器２０００Ａに入力されても良く、算術演算器２００１Ａに入力されても良い。演算回路１０００Ｂに入力されるデータは、論理演算器２０００Ｂに入力されても良く、算術演算器２００１Ｂに入力されても良い。
【００３５】
演算回路１００１は、記憶部１１から読み出したデータに対して、制御部１３からの演算制御情報に従って演算命令を実行し、出力データ（演算結果）を記憶部１１へ書き込む。
【００３６】
演算ユニット１００の２つの演算回路１０００Ａ、１０００Ｂは、いずれの演算回路も論理ゲート段数がｍであると説明したが、異なる論理ゲート段数ｍ１、ｍ２（ただし、ｍ１、ｍ２は１以上の自然数であり、かつｍ１、ｍ２＜ｎ）であってもよい。
【００３７】
本実施形態の半導体装置１では、クロック信号の周期から定められる基準値Ｚが予め定められる。演算ユニット１００、１０１は、直接に接続される演算回路の遅延指標の和が基準値Ｚを越えない範囲で、演算回路を複数個直列に配列することができる。
【００３８】
例えば、演算ユニット１００が遅延指標ｋ未満の演算回路をＸ個（１以上の自然数）備えていて、かつ演算ユニット１０１が遅延指標ｋ以上の演算回路をＹ個（１以上の自然数）備えても良い（ただし、Ｘ≧Ｙ）。ただし、演算ユニット１００のＸ個の演算回路の遅延指標の和及び演算ユニット１０１の遅延指標の和は、基準値Ｚ以下である必要がある。
【００３９】
図４は、演算部１２の詳細な構成の１例を示す図である。図４に示すように、例えば、演算ユニット１００が、遅延指標ｍ１、・・・、ｍＭ（ｍ１、・・・、ｍＭは、１以上ｋ未満の自然数）の第１乃至第Ｍ（Ｍは、２以上の整数）の演算回路１０００Ｍ１〜ＭＭを備えていて、かつ演算ユニット１０１が、遅延指標ｎ１、・・・、ｎＮ（ｎ１、・・・、ｎＮは、ｋ以上の自然数）の第１乃至第Ｎ（Ｎは、１以上の整数であって、Ｎ＜Ｍ）の演算回路１００１Ｎ１〜ＮＮを備えていても良い。ただし、演算ユニット１００が備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）と、演算ユニット１０１が備える演算回路の遅延指標の和（ｎ１＋・・・＋ｎＮ）とは、基準値Ｚ以下である。例えば、演算ユニット１００が備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）から定められる遅延時間と、演算ユニット１０１が備える演算回路の遅延指標の和（ｎ１＋・・・＋ｎＮ）から定められる遅延時間とは、クロック信号の周期（基準値Ｚ）以下であればよい。
【００４０】
以下では、遅延指標が演算回路の論理ゲート段数である場合に、基準値Ｚが最大論理ゲート段数Ｚである例で説明する。演算部１２を実現するための演算回路の論理ゲート段数の最大値Ｚ（以下、最大論理ゲート段数Ｚと称する。）を予め定め、演算ユニット１００、１０１は、このＺを越えない範囲で、ぞれぞれの演算回路を複数個直列に配列することができる。最大論理ゲート段数Ｚは、半導体装置１のクロック周波数に応じて定められる値であって、クロック信号の周期内で処理可能な論理ゲート段数である。
【００４１】
記憶部１１は、演算部１２が演算処理に用いるデータや、演算部１２の演算処理の中間結果および演算処理の最終結果を保持する。演算部１２の演算処理に用いるデータは、外部装置５０から転送され書き込まれてもよい。演算部１２は、記憶部１１に保持された演算処理の中間結果を、再度入力として用い、複数クロックサイクルに渡って演算処理を継続してもよい。記憶部１１に保持された演算部１２の演算処理の最終結果は、外部装置５０により読み出されてもよい。
【００４２】
図５は、記憶部１１の詳細な内部構成を示す。記憶部１１は、記憶ユニット１１０、１１１を備える。リード・ライト制御情報は、記憶ユニット１１０、１１１に対するリードまたはライトを示すアクセス情報と、アドレス情報とを有する。記憶ユニット１１０、１１１において、リードを示すアクセス情報が入力されると、アドレス情報で指定される領域に保持されたデータが、読み出される。ライトを示すアクセス情報が入力されると、アドレス情報で指定される領域に、演算ユニット１００、１０１の演算結果が書き込まれる。
【００４３】
記憶部１１は、外部装置５０からの読み出し要求を受けると、クロック信号に同期して、指示されたアドレスからデータを読み出し、外部装置５０に出力する。記憶部１１は、外部装置５０からの書き込み要求を受けると、外部装置５０から送られたデータを、クロック信号に同期して、指示されたアドレスに書き込む。
【００４４】
記憶部１１は、クロック信号と、制御部１３からのリード・ライト制御情報と、演算部１２からの演算結果とを入力とし、リード・ライト制御情報がリードを示すアクセス情報を含む場合、クロック信号に同期してデータを読み出し、演算部１２に転送する。また、リード・ライト制御情報が、ライトを示すアクセス情報を含む場合、演算部１２から転送された演算結果がクロック信号に同期して書き込まれる。
【００４５】
なお、外部装置５０と、制御部１３および演算部１２とが同時に記憶部１１へアクセスした場合、記憶部１１への複数のアクセスを調停するためのハードウェアを用意し、動的に競合するアクセスを回避してもよい。また、このような機構は設けず、ソフトウェアによりアクセスの競合が起こらないように静的に制御してもよい。
【００４６】
ここで、図１に示す実施例１の半導体装置１の動作フローを、図面を用いて説明する。図６は、半導体装置１において、ある演算処理を実行する際のシーケンス図である。まず、制御部１３には、外部装置５０から演算処理を制御するための制御情報が入力され（Ｓ１）、制御情報の解釈などの制御処理を行う（Ｓ２）。そして、制御部１３は、制御処理の結果、第１の演算制御情報と第２の演算制御情報とリード・ライト制御情報とを出力する。そして、制御部１３は、第１の演算制御情報を演算ユニット１００に出力し、第２の演算制御情報を演算ユニット１０１に出力し、リード・ライト制御情報を記憶部１１に出力する（Ｓ３）。記憶部１１は、リード・ライト制御情報に従って、演算ユニット１００の演算処理に必要となる第１のデータと演算ユニット１０１の演算処理に必要となる第２のデータの読み出しを行い、第１のデータを演算ユニット１００の演算回路１０００Ａに出力し、第２のデータを演算回路１００１に出力する（Ｓ４）。演算回路１０００Ａは、第１のデータを入力として受け取り、第１の演算制御情報によって規定される演算処理を実行し（Ｓ５）、演算結果を演算回路１０００Ｂに出力する（Ｓ６）。演算回路１０００Ｂは、演算回路１０００Ａの出力を入力として受け取り、第１の演算制御情報によって規定される演算処理を実行する（Ｓ７）。同様に、演算回路１００１は、第２のデータを入力として受け取り、第２の演算制御情報により規定される演算処理を実行する（Ｓ８）。ここで、Ｓ５とＳ７で行うそれぞれの処理は、Ｓ８で行う処理と比べて簡易であり、Ｓ５とＳ７で行なう処理の処理時間の合計は、Ｓ８で行う処理の合計と比べて短い。このため、演算ユニット１０１でＳ８が行われている間に、演算ユニット１００ではＳ５とＳ７を行うことができる。演算回路１０００Ｂは、演算結果（第１の演算結果と称する。）を記憶部１１に対して出力し、演算回路１００１は、演算結果（第２の演算結果と称する。）を記憶部１１に対して出力し（Ｓ９）、リード・ライト制御情報に従って、第1の演算結果と、第２の演算結果それぞれが記憶部１１に書き込まれる。また、次に実行すべき処理が存在する場合は制御部１３は、外部装置５０より次に実行する演算処理に対する制御情報を入力として受け取り（Ｓ１０）、制御情報の解釈などの制御処理を行う（Ｓ１１）ことで処理時間を短縮することができる。なお、本実施例では、Ｓ３〜Ｓ１１は、単一のクロックサイクルの間に実行される（単一のクロックサイクルの間に実行できる処理を、図６に点線で示した。）。
【００４７】
このような構造をとることで、２つの単純な演算処理を組み合わせて実現するような演算処理を、複数のクロックサイクルに分けることなく、１クロックサイクルで実行することが可能となるため、低い消費電力で効率良く演算処理を実行することができる。また、複雑度の低い演算を処理する演算ユニットと、複雑度の高い演算を処理する演算ユニットとを設け、複雑度の低い演算を処理する演算ユニットでは、予め定める最大論理ゲート段数Ｚの範囲で、論理ゲート段数の低い演算回路を多段で接続する構成をとることにより、各種の演算処理の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、予め定める最大論理ゲート段数Ｚの範囲で演算ユニットを構成することから、半導体装置１の動作するクロック周波数を一定値に保証することが可能となる。
【００４８】
なお、前述した半導体装置１の動作フローにおいて、Ｓ３で、制御部１３は、演算制御情報として第１の演算制御情報と第２の演算制御情報とを出力すると説明した。しかしながら、制御部１３は、第１の演算制御情報、第２の演算制御情報のいずれか一方のみを出力することとしても良い。この場合、演算ユニット１００、演算ユニット１０１のいずれか一方のみが動作することとしても良い。
【００４９】
次に、記憶部１１の内部構成のより詳細な構成の例を説明する。
【００５０】
図５に示すように、記憶部１１は、演算ユニット１００が参照するデータ（第１のデータ）を保持する記憶ユニット１１０と演算ユニット１０１が参照するデータ（第２のデータ）を保持する記憶ユニット１１１を備える。
【００５１】
記憶ユニット１１０の出力は、演算ユニット１００の入力に接続され、記憶ユニット１１１の出力は、演算ユニット１０１の入力に接続されている。
【００５２】
演算ユニット１００は、制御部１３から記憶ユニット１１０に入力されるリード・ライト制御情報に従って、記憶ユニット１１０の第１のデータを参照することができる。一方、演算ユニット１０１は、制御部１３から記憶ユニット１１１に入力されるリード・ライト制御情報に従って、記憶ユニット１１１の第２のデータを参照することができる。このように、演算ユニット毎に対応する記憶ユニットを設けることにより、各演算ユニットは、独立して同時にデータを参照することができ、各演算ユニットが、並列に処理を行うことができる。
【００５３】
また、演算ユニット１００及び１０１それぞれの出力は、記憶ユニット１１０及び１１１の両方の入力に接続されている。
【００５４】
このような構成であるため、演算ユニット１００は、制御部１３から記憶部１１に入力されるリード・ライト制御情報に従って、演算ユニット１００の演算処理の結果である第１の演算結果を、記憶ユニット１１０、１１１のいずれか一方、もしくはその両方に書き込むことができる。また、演算ユニット１０１は、制御部１３から記憶部１１に入力されるリード・ライト制御情報に従って、演算ユニット１０１の演算処理の結果である第２の演算結果を、記憶ユニット１１０、１１１のいずれか一方、もしくはその両方に書き込むことができる。
【００５５】
このように、演算ユニット１００及び演算ユニット１０１の演算結果を、記憶ユニット１１０及び記憶ユニット１１１両方に書き込むことができるため、演算ユニット１００は、演算ユニット１０１の演算結果を用いた演算処理を行うことができ、演算ユニット１０１は、演算ユニット１００の演算結果を用いた演算処理を行うことができる。演算ユニット１００、１０１の間でデータの受け渡しが可能となり、より柔軟な演算処理の実現が可能となる。
【００５６】
なお、記憶ユニット１００、１０１では、同時に書き込むことのできる情報の数は限定しない。よって、入力された演算ユニット１００、１０１の演算結果の両方を、同時に書き込んでもよいし、セレクタを設けてどちらか一方を選択して書き込むようにしても構わない。
【００５７】
図７は、記憶部１１の内部構成の変形例を示す図である。図７の記憶部１１は、１つの記憶ユニット１２０を備える構成である。
【００５８】
記憶ユニット１２０は、演算ユニット１００が参照するデータ（第１のデータ）と演算ユニット１０１が参照するデータ（第２のデータ）を保持する。
【００５９】
また、演算ユニット１００及び１０１それぞれの入力及び出力は、記憶ユニット１２０に接続されている。
【００６０】
演算ユニット１００は、制御部１３から記憶ユニット１２０に入力されるリード・ライト制御情報に従って、記憶ユニット１１０の第１のデータを参照することができる。一方、演算ユニット１０１は、制御部１３から記憶ユニット１２０に入力されるリード・ライト制御情報に従って、記憶ユニット１２０の第２のデータを参照することができる。
【００６１】
また、演算ユニット１００は、制御部１３から記憶ユニット１２０に入力されるリード・ライト制御情報に従って、演算ユニット１００の演算処理の結果である第１の演算結果を、記憶ユニット１２０に書き込むことができる。また、演算ユニット１０１は、制御部１３から記憶ユニット１２０に入力されるリード・ライト制御情報に従って、演算ユニット１０１の演算処理の結果である第２の演算結果を、記憶ユニット１２０に書き込むことができる。
【００６２】
このように、記憶ユニット１２０を、演算ユニット１００、１０１で共有するため、記憶部の面積と消費電力を削減することができる。
【００６３】
また、演算ユニット１００及び演算ユニット１０１の演算結果を、１つの共有する記憶ユニット１２０に書き込むことができるため、演算ユニット１００は、演算ユニット１０１の演算結果を用いた演算処理を行うことができ、演算ユニット１０１は、演算ユニット１００の演算結果を用いた演算処理を行うことができる。演算ユニット１００、１０１の間でデータの受け渡しが可能となり、より柔軟な演算処理の実現が可能となる。
【００６４】
図８は、演算部１２の内部構成の変形例を示す図である。図８の演算部１２は、更に、演算ユニット１００、１０１の演算結果のいずれかを選択するセレクタ１０２を更に有している。
【００６５】
演算ユニット１００、１０１の出力は、セレクタ１０２と接続されている。セレクタ１０２の出力は、記憶ユニット１１０及び記憶ユニット１１１に接続されている。
【００６６】
演算ユニット１００は、制御部１３から記憶ユニット１１０に入力されるリード・ライト制御情報に従って、記憶ユニット１１０の第１のデータを参照することができる。一方、演算ユニット１０１は、制御部１３から記憶ユニット１１１に入力されるリード・ライト制御情報に従って、記憶ユニット１１１の第２のデータを参照することができる。このように、演算ユニット毎に対応する記憶ユニットを設けることにより、各演算ユニットは、独立して同時にデータを参照することができ、各演算ユニットが、並列に処理を行うことができる。
【００６７】
一方、演算ユニット１００及び１０１それぞれの出力は、セレクタ１０２に出力される。
【００６８】
セレクタ１０２は、制御部１３からの演算制御情報に含まれる演算結果選択信号と、演算ユニット１００、１０１の演算結果とを入力とし、演算結果選択信号によって指定される演算結果のいずれか一方を選択して、記憶ユニット１１０及び記憶ユニット１１１のいずれか一方、又は両方に出力する。
【００６９】
記憶ユニット１１０、１１１はそれぞれ制御部１３からのリード・ライト制御情報と、セレクタ１０２の出力とを入力とし、リード・ライト制御情報に従い、セレクタ１０２の出力を書き込む。
【００７０】
演算部１２の内部構成をこのような構成とすることで、演算部１２の演算ユニット１００、１０１のいずれか一方の演算処理のみが有効となり、有効とならない演算ユニットの信号遷移を停止させることで電力消費を低減することができる。
【００７１】
図９は、図７の記憶部１１の内部構成と図８の演算部１２の構成を組み合わせた場合の例を示す図である。
【００７２】
即ち、記憶部１１は、１つの記憶ユニット１２０を備える構成であり、演算部１２は、セレクタ１０２を備える構成である。
【００７３】
記憶ユニット１２０は、演算ユニット１００、１０１それぞれの入力に接続されている。演算ユニット１００、１０１の出力は、セレクタ１０２と接続されている。セレクタ１０２の出力は、記憶ユニット１２０に接続されている。
【００７４】
以下では、記憶部１１を図７のような内部構成とした場合の動作を説明する。
【００７５】
記憶ユニット１２０は、制御部１３からのリード・ライト制御情報に従って、データを読み出し、演算ユニット１００、演算ユニット１０１に出力する。データは、演算ユニット１００、演算ユニット１０１それぞれ毎に異なるデータを出力しても良いし、同一のデータを出力しても良い。
【００７６】
演算部１２は、演算ユニット１００、１０１の演算結果をセレクタ１０２に出力する。セレクタ１０２は、制御部１３からの制御情報に含まれる演算結果選択信号と、演算ユニット１００、１０１の演算結果とを入力とし、演算結果選択信号によって指定される演算結果のいずれか一方を選択して出力する。記憶ユニット１２０は、制御部１３からのリード・ライト制御情報と、セレクタ１０２の出力とを入力とし、リード・ライト制御情報に従い、セレクタ１０２の出力を書き込む。
【００７７】
記憶部１１及び演算部１２の内部構成をこのような構成とすることで、演算部１２の演算ユニット１００、１０１のいずれか一方の演算処理のみが有効となり、有効とならない演算ユニットの信号遷移を停止させることで電力消費を低減することができる。また、記憶ユニット１２０を、演算ユニット１００、１０１で共有するため、記憶部の面積と消費電力を削減することができる。
【００７８】
尚、実施例１で示す演算部１２ではデータや、演算の途中結果、最終結果などを、一時的に記憶するレジスタをもたない構成をとるが、クリティカルパス削減のため、前サイクルに出力した結果を保持するプリフェッチ用のレジスタを備える構成もとって良い。
【実施例２】
【００７９】
本発明の第２の実施例に係る半導体装置２は、図１の半導体装置１と同様に、処理部１０と記憶部１１とを備え、外部装置５０と接続されている。処理部１０は、演算部１２と、制御部１３とを備える。半導体装置２は、一定のクロック周波数のクロック信号と同期して演算処理を行うものとする。
【００８０】
図１０は、本発明の第２の実施例に係る半導体装置２の演算部１２と記憶部１１の詳細な構成を示す図である。
【００８１】
図１０に示すように、演算部１２は、実施例１の半導体装置１と異なり、出力生成ユニット２０を更に備える構成である。その他の構成は、実施例１の半導体装置１の構成と同様な構成である。記憶部１１は、図７及び図９の構成と同様に、記憶ユニット１２０を１つ備える構成である。
【００８２】
演算部１２は、記憶部１１からデータを受け取り、制御部１３から演算制御情報を受け取ると、演算制御情報が有効である場合に、演算制御情報に従って、データに対して演算処理を行い、演算結果（出力データ）を記憶部１１へと出力する。
【００８３】
演算部１２は演算ユニット１００と、演算ユニット１０１とを備える。演算ユニット１００は演算回路１０００Ａと、演算回路１０００Ｂとを備える。
【００８４】
演算ユニット１００と、演算ユニット１０１とはそれぞれ記憶部１１から第１のデータ、第２のデータを受け取ると、演算処理を実行し、第１の演算結果と、第２の演算結果とを出力生成ユニット２０へと出力する。
【００８５】
出力生成ユニット２０は、演算ユニット１００から入力される第１の演算結果と、演算ユニット１０１から入力される第２の演算結果とを入力とし、演算制御情報に従い、記憶部１１へ出力する演算結果（出力データ）を生成する。
【００８６】
出力生成ユニット２０は、演算ユニット１００から入力される第１の演算結果と、演算ユニット１０１から入力される第２の演算結果と、の一方のみを演算結果（出力データ）として出力しても良いし、その両方を出力しても良い。
【００８７】
出力生成ユニット２０は、例えば、一方の演算結果（例えば、第１の演算結果）が真の場合、もう一方の演算結果（例えば、第２の演算結果）を出力し、一方の演算結果（例えば、第１の演算結果）が偽の場合は、第１の演算結果と第２の演算結果の何も出力しないというように、一方の演算結果を条件として出力内容を変更しても良い。このように、一方の演算結果を条件として、出力内容を変更する処理として、条件分岐処理がある。
【００８８】
条件分岐処理として、例えば、Ｉｆ文（Ｉｆ〜ｔｈｅｎ〜Ｅｌｓｅ〜ＩｆＥｎｄ）を行う処理がある。Ｉｆ文は、分岐条件が「真」のときは「Ｔｈｅｎ」以降の処理を行い、「偽」のときは、「Ｅｌｓｅ」以降の処理を行う命令である。その書式は「Ｉｆ条件  Ｔｈｅｎ  真の時の処理  ＩｆＥｎｄ」である。このＩｆ文の終了コマンドは「ＩｆＥＮＤ」である。
【００８９】
本実施例の半導体装置２が、条件分岐処理を行う場合、例えば、第１の演算結果を分岐条件が「真」であるか「偽」であるかを判定するために用いて、第２の演算結果を、分岐条件が「真」のときの処理である「Ｔｈｅｎ」以降の処理結果として用いるものとする。そして、「偽」のときの処理である「Ｅｌｓｅ」以降の処理を「何も行わない」ものとする。この場合、出力生成ユニット２０は、第１の演算結果から分岐条件が「真」か「偽」かを判定し、分岐条件が「真」であると判定した場合は、第２の演算結果を出力し、分岐条件が「偽」であると判定した場合は、第１の演算結果と第２の演算結果いずれも出力しない。
【００９０】
このように、本実施例の半導体装置２によれば、分岐条件が「真」であるか「偽」であるかを判定するための処理と、分岐条件が「真」である場合に実行する処理とを同時に処理することにより、条件分岐処理のスピード向上を達成することができる。
【００９１】
また、以上の例では、第１の演算結果が「真」の場合、第２の演算結果を出力すると説明したが、第１の演算結果、第２の演算結果両方を出力することとしても良い。また、第２の演算結果を分岐条件の判定のために用いて、第２の演算結果から「真」と判定できた場合、第１の演算結果を出力することとしてもよい。
【００９２】
また、第１の演算結果が「偽」であると判定した場合、第１の演算結果と第２の演算結果いずれも出力しないとしたが、第１の演算結果を出力してもよい。
【００９３】
また、第１の演算結果が「偽」であると判定した場合、第２の演算結果を出力し、第１の演算結果が［真］であると判定した場合、第１の演算結果と第２の演算結果いずれも出力しないとしてもよい。
【００９４】
また、第１の演算結果が「真」である場合、第１の演算結果を出力し、第１の演算結果が「偽」である場合、第２の演算結果を出力することとしても良い。
【００９５】
尚、以上の例では、一方の演算結果を条件として、出力内容を変更する処理として、条件分岐処理を例として説明したが、条件分岐処理に限られない。例えば、複数の演算部を備える構成において、それぞれの演算部で別の条件の際の処理を実行し、条件結果に応じて一つの結果のみを記憶部へと書き戻すといった方法がある。このように、条件判定処理を複数の演算部で実行することで、条件判定に要するサイクルを削減することができる。
【００９６】
尚、演算ユニット１００と演算ユニット１０１は、出力生成ユニット２０が出力する内容に従い、いずれか一方のみが動作しても良いし、二つのユニットが同時に動作しても良い。例えば、出力生成ユニット２０が演算ユニット１００、演算ユニット１０１のどちらか一方の演算結果のみを出力する場合は、演算結果を出力しない演算ユニットに対して演算制御情報を送らず、動作を停止させてもよい。このようにすることで構成情報や、消費電力を削減することができる。
【００９７】
また、実施例２の半導体装置によれば、実施例１の半導体装置と同様な効果を達成することができる。
【実施例３】
【００９８】
図１１は、本発明の第３の実施例に係る半導体装置の構成を示す図である。
【００９９】
図１１に示すように、実施例３の半導体装置３は、実施例１の半導体装置と比べて、制御部１３の構成をより具体的に示した構成である
制御部13は、演算制御情報記憶部１４Ａとリード・ライト制御情報記憶部１４Ｂとポインタ通知部１４Ｃとを備える構成である。
【０１００】
ポインタ通知部１４Ｃは、演算制御情報記憶部１４Ａに対して第１参照ポインタを通知し、リード・ライト制御情報記憶部１４Ｂに対して第２参照ポインタを通知する。また、ポインタ通知部１４Ｃは、開始制御信号を演算部１２に通知する。演算部１２は、開始制御信号を受け取ると、演算処理の実行を開始する。
【０１０１】
リード・ライト制御情報記憶部１４Ａは、予め外部装置５０から演算制御情報を受け取り記憶しておくことができる。そして、ポインタ通知部１４Ｃが出力する第１参照ポインタを受けると、第１参照ポインタにしたがって、演算制御情報を演算部１２に通知する。
【０１０２】
リード・ライト制御情報記憶部１４Ｂは、予め外部装置５０からリード・ライト制御情報を受け取り記憶しておく。そして、ポインタ通知部１４Ｃが出力する第２参照ポインタを受け取ると、第２参照ポインタにしたがって、リード・ライト制御情報を記憶部１１に通知する。
【０１０３】
実施例３の半導体装置によれば、外部装置５０からの演算制御情報、リード・ライト制御情報を、それぞれ演算制御情報記憶部１４Ａ、リード・ライト制御情報記憶部１４Ｂに予めまとまった量の制御情報を転送しておくことができ、適当なタイミングで演算制御情報とリード・ライト制御情報を演算部１２及び記憶部１１に通知できる。
【０１０４】
また、実施例３の半導体装置によれば、実施例１の半導体装置と同様な効果を達成することができる。
【実施例４】
【０１０５】
図１２に、本発明の第４の実施例に係る半導体装置の構成を示す。実施例４の半導体装置４は、実施例１の半導体装置１と異なり、処理部１０が２つの演算部１２Ａと１２Ｂを備える。
【０１０６】
演算部１２Ａと演算部１２Ｂは、実施例１で説明した演算部１２の図４の構成と同様の構成である。演算部１２Ａと演算部１２Ｂの内部構成の図示は省略し、図４の各構成要素の符号を置き換えて説明する。
【０１０７】
演算部１２Ａは、２つの演算ユニット１００Ａ及び１０１Ａを備えている。
【０１０８】
演算ユニット１００A、１０１Aは、直接に接続される演算回路の遅延指標の和が基準値Ｚを越えない範囲で、演算回路を複数個直列に配列することができる。
【０１０９】
演算ユニット１００Ａは、遅延指標ｍ１、・・・、ｍＭ（ｍ１、・・・、ｍＭは、自然数であり、かつ１以上ｋ未満の値。）の第１乃至第Ｍ（Ｍは、２以上の整数）の演算回路を備えていて、かつ演算ユニット１０１Ａは、遅延指標ｎ１、・・・、ｎＮ（ｎ１、・・・、ｎＮは、自然数であり、かつｋ以上の値。）の第１乃至第Ｎ（Ｎは、１以上の整数であって、Ｎ＜Ｍ）の演算回路を備える構成である。
【０１１０】
ただし、演算ユニット１００Ａが備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）と、演算ユニット１０１Ａが備える演算回路の遅延指標の和（ｎ１＋・・・＋ｎＮ）とは、基準値Ｚ以下である。例えば、演算ユニット１００Ａが備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）から定められる遅延時間と、演算ユニット１０１Ａが備える演算回路の遅延指標の和（ｎ１＋・・・＋ｎＮ）から定められる遅延時間とは、クロック信号の周期（基準値Ｚ）以下であればよい。
【０１１１】
また、演算部１２Ｂは、２つの演算ユニット１００Ｂ及び１０１Ｂを備えている。
【０１１２】
演算ユニット１００Ｂ、１０１Ｂは、直接に接続される演算回路の遅延指標の和が基準値Ｚを越えない範囲で、演算回路を複数個直列に配列することができる。
【０１１３】
また、演算ユニット１００Ｂは、遅延指標ｒ１、・・・、ｒＲ（ｒ１、・・・、ｒＲは、自然数であり、かつ１以上ｊ（ｊは１以上の整数。）未満の値。）の第１乃至第Ｒ（Ｒは、２以上の整数）の演算回路を備えていて、かつ演算ユニット１０１Ｂは、遅延指標ｓ１、・・・、ｓＳ（ｓ１、・・・、ｓＳは、自然数であり、かつｊ以上の値。）の第１乃至第Ｓ（Ｓは、１以上の整数であって、Ｓ＜Ｒ）の演算回路を備える構成である。
【０１１４】
ただし、演算ユニット１００Ｂが備える演算回路の遅延指標の和（ｒ１＋・・・＋ｒＲ）と、演算ユニット１０１Ｂが備える演算回路の遅延指標の和（ｓ１＋・・・＋ｓＳ）とは、基準値Ｚ以下である。例えば、演算ユニット１００が備える演算回路の遅延指標の和（ｒ１＋・・・＋ｒＲ）から定められる遅延時間と、演算ユニット１０１が備える演算回路の遅延指標の和（ｓ１＋・・・＋ｓＳ）から定められる遅延時間とは、クロック信号の周期（基準値Ｚ）以下であればよい。
【０１１５】
本実例の半導体装置４において、制御部１３は、外部装置５０から制御情報を受け取ると、開始制御信号とともに、演算部１２Ａに対して、第１の演算制御情報と第２の演算制御情報を通知し、演算部１２Ｂに対して、第３の演算制御情報と第４の演算制御情報を通知する。演算部１２Ａは、開始制御信号を受け取ると、演算ユニット１００Ａが、記憶部１１から読み出したデータに対して、第１の演算制御情報に規定される演算処理を行い、演算ユニット１０１Ａが、記憶部１１から読み出したデータに対して、第２の演算制御情報に規定された演算処理を行う。また、演算部１２Ｂも、開始制御信号を受け取ると、演算ユニット１００Ｂが、記憶部１１から読み出したデータに対して、第３の演算制御情報に規定される演算処理を行い、演算ユニット１０１Ｂが、記憶部１１から読み出したデータに対して、第４の演算制御情報に規定された演算処理を行う。また、演算ユニット１００Ａ、演算ユニット１０１Ａ、演算ユニット１００Ｂ及び演算ユニット１０１Ｂは、それぞれ演算処理を実行した出力である演算結果を記憶部１１へと出力する。
【０１１６】
尚、半導体装置４は、処理部１０が３つ以上の演算部を備える構成としてもよい。この場合でも、各演算部が備える演算ユニットの演算回路の遅延指標の和が基準値Ｚを越えない範囲である構成とする。
【０１１７】
本実施例の半導体装置４によれば、各々の演算部が、複雑度の低い演算を処理する演算ユニットと、複雑度の高い演算を処理する演算ユニットとを備え、複雑度の高い演算を処理する演算ユニットと複雑度の高い演算を処理する演算ユニットとが、それぞれ異なる数の演算回路を備える構成とすることにより、各種の演算命令の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、各演算部は、予め定める遅延指標Ｚの範囲で演算ユニットを構成することから、半導体装置の動作するクロック周波数を保証することが可能となる。
【実施例５】
【０１１８】
図１３に、本発明の第５の実施例に係る半導体装置の構成を示す。実施例５の半導体装置５は、実施例１の半導体装置１と異なり、２つの処理部（処理部１０Ｃと１０Ｄ）を備える。
【０１１９】
処理部１０Ｃと処理部１０Ｄは、図１で示した処理部１０と同様の構成である。処理部１０Ｃと処理部１０Ｄの内部構成の図示は省略し、図１の各構成要素の符号を置き換えて説明する。
【０１２０】
処理部１０Ｃは、制御部１３Ｃと演算部１２Ｃを備える構成である。
【０１２１】
演算部１２Ｃは、２つの演算ユニット１００Ｃ及び１０１Ｃを備えている。演算部１２Ｃは、図４で示した演算部１２と同様の構成である。演算部１２Ｃの図示は省略し、図４の各構成要素の符号を置き換えて説明する。
【０１２２】
演算ユニット１００Ｃ、１０１Ｃは、直接に接続される演算回路の遅延指標の和が基準値Ｚを越えない範囲で、演算回路を複数個直列に配列することができる。
【０１２３】
演算ユニット１００Ｃは、遅延指標ｍ１、・・・、ｍＭ（ｍ１、・・・、ｍＭは、自然数であり、かつ１以上ｋ未満の値。）の第１乃至第Ｍ（Ｍは、２以上の整数）の演算回路を備えていて、かつ演算ユニット１０１Ｄは、遅延指標ｎ１、・・・、ｎＮ（ｎ１、・・・、ｎＮは、自然数であり、かつｋ以上の値。）の第１乃至第Ｎ（Ｎは、１以上の整数であって、Ｎ＜Ｍ）の演算回路を備える構成である。
【０１２４】
ただし、演算ユニット１００Ｃが備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）と、演算ユニット１０１Ｃが備える演算回路の遅延指標の和（ｎ１＋・・・＋ｎＮ）とは、基準値Ｚ以下である。例えば、演算ユニット１００Ｃが備える演算回路の遅延指標の和（ｍ１＋・・・＋ｍＭ）から定められる遅延時間と、演算ユニット１０１Ｃが備える演算回路の遅延指標の和（ｎ１＋・・・＋ｎＮ）から定められる遅延時間とは、クロック信号の周期（基準値Ｚ）以下であればよい。
【０１２５】
また、演算部１２Ｄは、２つの演算ユニット１００Ｄ及び１０１Ｄを備えている。
【０１２６】
演算ユニット１００Ｄ、１０１Ｄは、直接に接続される演算回路の遅延指標の和が基準値Ｚを越えない範囲で、演算回路を複数個直列に配列することができる。
【０１２７】
処理部１０Ｄは、制御部１３Ｄと演算部１２Ｄを備える構成である。演算部１２Ｄは、図４で示した演算部１２と同様の構成である。演算部１２Ｄの図示は省略し、図４の各構成要素の符号を置き換えて説明する。
【０１２８】
演算部１２Ｄは、２つの演算ユニット１００Ｄ及び１０１Ｄを備えている。
【０１２９】
また、演算ユニット１００Ｄは、遅延指標t１、・・・、tT（t１、・・・、tTは、自然数であり、かつ１以上h（ｈは１以上の整数。）未満の値。）の第１乃至第T（Tは、２以上の整数）の演算回路を備えていて、かつ演算ユニット１０１Ｄは、遅延指標u１、・・・、uU（u１、・・・、uUは、自然数であり、かつh以上の値。）の第１乃至第U（Uは、１以上の整数であって、U＜T）の演算回路を備える構成である。
【０１３０】
ただし、演算ユニット１００Ｄが備える演算回路の遅延指標の和（ｔ１＋・・・＋ｔＴ）と、演算ユニット１０１Ｄが備える演算回路の遅延指標の和（ｕ１＋・・・＋ｕＵ）とは、基準値Ｚ以下である。例えば、演算ユニット１００が備える演算回路の遅延指標の和（ｔ１＋・・・＋ｔＴ）から定められる遅延時間と、演算ユニット１０１が備える演算回路の遅延指標の和（ｕ１＋・・・＋ｕＵ）から定められる遅延時間とは、クロック信号の周期（基準値Ｚ）以下であればよい。
【０１３１】
本実施例の半導体装置５において、制御部１３Ｃは、外部装置５０から第１の制御情報を受け取ると、開始制御信号とともに、演算部１２Ｃに対して、第１の演算制御情報と第２の演算制御情報を通知する。制御部１３Ｄは、外部装置５０から第２の制御情報を受け取ると、開始制御信号とともに、演算部１２Ｄに対して、第５の演算制御情報と第６の演算制御情報を通知する。演算部１２Ｃは、開始制御信号を受け取ると、演算ユニット１００Ｃが、記憶部１１から読み出したデータに対して、第１の演算制御情報に規定される演算処理を行い、演算ユニット１０１Ｃが、記憶部１１から読み出したデータに対して、第２の演算制御情報に規定された演算処理を行う。また、演算部１２Ｄも、開始制御信号を受け取ると、演算ユニット１００Ｄが、記憶部１１から読み出したデータに対して、第５の演算制御情報に規定される演算処理を行い、演算ユニット１０１Ｄが、記憶部１１から読み出したデータに対して、第６の演算制御情報に規定された演算処理を行う。また、処理部１０Ｃ及び処理部１０Ｄは、演算処理を実行した出力である演算結果を記憶部１１へと出力する。
【０１３２】
尚、処理部１０Ｃ、１０Ｄはそれぞれ演算部を複数備える構成としてもよい。
【０１３３】
また、半導体装置５は、処理部を３つ以上備える構成としてもよい。この場合でも、各処理部が備える演算部の演算ユニットの演算回路の遅延指標の和が基準値Ｚを越えない範囲である構成とする。
【０１３４】
本実施例の半導体装置５によれば、各々の処理部の各演算部が、複雑度の低い演算を処理する演算ユニットと、複雑度の高い処理をする演算ユニットとを備え、複雑度の高い処理をする演算ユニットと複雑度の低い処理をする演算ユニットとが、異なる数の演算回路を備える構成とすることにより、各種の演算命令の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、各処理部の各演算部は、予め定める遅延指標Ｚの範囲で演算ユニットを構成することから、半導体装置４の動作するクロック周波数を保証することが可能となる。
【０１３５】
なお、本発明は上記実施例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施例に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施例にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１３６】
１、２、３、４、５・・・半導体装置、５０・・・外部装置、１３・・・制御部、１２、１２Ａ、１２Ｂ・・・演算部、１１・・・記憶部、１０、１０Ｃ、１０Ｄ・・・処理部、１００・・・演算ユニット、１０１・・・演算ユニット、１０２・・・セレクタ、１４Ａ・・・演算制御情報記憶部、１４Ｂ・・・リード・ライト制御情報記憶部、１４Ｃ・・・ポインタ通知部、１０００Ａ、１０００Ｂ、１００１、１０００Ｍ１〜１０００ＭＭ、１０００Ｎ１〜１０００ＮＮ・・・演算回路、２０００Ａ、２０００Ｂ・・・論理演算器、２００１Ａ、２００１Ｂ・・・算術演算器、１１０、１１１、１２０・・・記憶ユニット、２０・・・出力生成ユニット。
【図１】
2011242995.tif 000003
【図２】
2011242995.tif 000004
【図３】
2011242995.tif 000005
【図４】
2011242995.tif 000006
【図５】
2011242995.tif 000007
【図６】
2011242995.tif 000008
【図７】
2011242995.tif 000009
【図８】
2011242995.tif 000010
【図９】
2011242995.tif 000011
【図１０】
2011242995.tif 000012
【図１１】
2011242995.tif 000013
【図１２】
2011242995.tif 000014
【図１３】
2011242995.tif 000015