半導体装置
【課題】プログラム可能な半導体装置において、クロック周波数を保証しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行できる。
【解決手段】本開示の一実施形態は、一定のクロック信号に同期して演算を行う半導体装置であって、演算制御情報を出力する制御部13と、データを記憶する記憶部11と、第1のデータに対して第1の演算制御情報に従い演算を行う演算ユニット100と、第2のデータに対して第2の演算制御情報に従い演算を行う演算ユニット101とを備える。演算ユニット100は、演算回路を複数個備える。演算ユニット101は、論理ゲート段数n(n>m)の演算回路を少なくとも1個備える。
【解決手段】本開示の一実施形態は、一定のクロック信号に同期して演算を行う半導体装置であって、演算制御情報を出力する制御部13と、データを記憶する記憶部11と、第1のデータに対して第1の演算制御情報に従い演算を行う演算ユニット100と、第2のデータに対して第2の演算制御情報に従い演算を行う演算ユニット101とを備える。演算ユニット100は、演算回路を複数個備える。演算ユニット101は、論理ゲート段数n(n>m)の演算回路を少なくとも1個備える。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム可能な半導体装置に関する。
【背景技術】
【0002】
ソフトウェアによるプログラムが可能な半導体装置のうち、FPGA(Field Programmable Gate Array)などのリコンフィギャラブル回路を用いた計算システムは、リコンフィギャラブル回路の回路情報をあらかじめメモリなどの記憶装置に保持し、システム初期化時に必要な情報を読み出して実行回路を構成することができる装置である。また、動的リコンフィギャラブル回路技術を用いた計算システムは、このような回路情報を複数保持し、プログラムにより規定された規則に従って、動作時に必要な回路情報を読み出して実行回路を構成することができる装置である。
【0003】
一般的に、FPGAは処理データの細かい(ビット数の少ない)LUT(Look−Up Table)を基本演算素子とし、これらの基本演算素子をプログラム可能な配線とスイッチ素子で相互接続することができる。相互接続された多数の基本演算素子を組み合わせることで、複雑な演算処理を実行することが可能である(非特許文献1)。一方、動的リコンフィギャラブル回路は処理データの粗い(ビット数の多い)演算器を基本演算素子とする装置である。これらのリコンフィギャラブル回路を用いることで、単一の半導体装置上で多様な演算処理を実現することが可能となり、専用ハードウェアの開発コストの削減が期待される。
【0004】
また、ソフトウェアによるハードウェア構成の変更が可能な計算システムとして、特許文献1記載のアレイ型プロセッサがあげられる。このアレイ型プロセッサでは、小規模の多数のプロセッサエレメントがマトリクス状に配列された構成をもち、プログラムを変更することでハードウェアの構成を変化させることができる。プログラムにより規定された順序に従い、プロセッサエレメントごとに1つの命令コードが選択され、この命令コードに従って演算器の演算処理とプロセッサエレメントの接続関係が制御され、複雑な演算処理を多数の演算器により並列に実行することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許3528922号明細書
【非特許文献】
【0006】
【非特許文献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
【発明の概要】
【発明が解決しようとする課題】
【0007】
一般的に、クロックに同期したプロセッサユニットを用いて複雑な演算処理を実現する場合、単純な演算命令を実行する演算器を複数クロックサイクルにわたって実行させ、単純な演算を組み合わせることで実現する。CPUなどのプロセッサユニットの演算器が単一クロックサイクルで実行できる演算命令は通常一つであることから、処理する演算処理の複雑度に応じて複数のクロックサイクルを消費することになる。このため、CPUなどのプロセッサユニットで複雑な演算処理を高速に実行する場合には、高いクロック周波数で動作させなければならず、消費電力が大きくなってしまう問題がある。
【0008】
また、プロセッサユニットのサポートする演算を実行する演算器のレイテンシ(回路上の遅延時間)は演算命令の種類によって異なるため、最も複雑な(レイテンシの大きい)演算回路に合わせたクロック周波数を用いて回路を動作することとなる。このような場合、単純な演算命令を実行する際には本来実行可能な演算回数よりも少ない演算処理しか行うことができず、本来の性能を発揮することができない。このため、CPUなどの高いクロック周波数で動作させるプロセッサユニットでは、複雑な演算命令は複数クロックサイクルに分割して実行するような工夫がなされている。しかしながら、この手法では性能の向上は達成できるもののクロック周波数の向上により消費電力が増大してしまう点が問題となる。
【0009】
一方、FPGAなどのリコンフィギャラブル回路では、プログラマブルな配線とスイッチ素子により複数の演算素子を多段で接続することで、複雑な演算処理を単一クロックサイクルで実現可能である。同様に特許文献1記載のアレイ型プロセッサでも、マトリクス状に配列された複数のプロセッサエレメントを多段で接続して複雑な演算処理をプログラムすることが可能である。このように、単一クロックサイクル中に複数の演算処理を複数の演算素子を用いて実行可能であることから、低いクロック周波数であっても高速に演算処理を行うことができる。
【0010】
しかしながら、このようなソフトウェアにより演算素子間の接続関係もプログラムして複雑な演算処理を実現する半導体装置の場合、クロック周波数はプログラムされた最も実行時間の長い演算処理に依存することになる。
【0011】
また、同一のソフトウェアであっても、演算命令の演算器へのマッピングや演算素子間の実際の配線結果によって実行時間が異なることとなり、プログラムごとのクロック周波数の制御が複雑になるという課題があった。
【0012】
さらに、多数の演算素子を並列に動作させることが可能である一方で、複数クロックにわたって同一の演算素子を活用することが困難となり、回路の利用効率が低下するという課題がある。
【0013】
本発明の一観点は、ソフトウェアによりハードウェア構成を変更可能な半導体装置において、半導体装置の動作するクロック周波数を保証しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行することが可能な半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一観点による半導体装置は、クロック信号に同期して演算処理を実行する半導体装置であって、各演算回路が実行する演算を制御するための第1の演算制御情報と第2の演算制御情報とを出力する制御部と、第1のデータと第2のデータとを記憶する記憶部と、前記クロック信号に同期して動作し、前記第1の演算制御情報に従って、前記第1のデータに対して演算処理を行い、第3のデータを出力する第1の演算ユニットと、前記クロック信号に同期して動作し、前記第2の演算制御情報に従って、前記第2のデータに対して演算処理を行い、第4のデータを出力する第2の演算ユニットとを備え、前記第1の演算ユニットは、直列に接続された第1乃至第M(Mは、2以上の整数)の演算回路を備え、前記第m+1(mは、1以上M−1以下の整数)段の演算回路は、前記第m段の演算回路の演算結果に対して、演算処理を行うものであって、前記第1乃至第Mの演算回路の遅延量を示す遅延指標は、それぞれ、m1、・・・、mM(m1、・・・、mMは、自然数)であって、前記第2の演算ユニットは、遅延量を示す遅延指標がn(nは1以上の整数)の演算回路を少なくとも備え、前記第1の演算ユニットが備える演算回路の遅延指標の和(m1+・・・+mM)によって定められる遅延時間と、前記第2の演算ユニットが備える演算回路の遅延指標nによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下であることを特徴とする。
【発明の効果】
【0015】
本発明の一観点によれば、ソフトウェアによりハードウェア構成を変更可能な半導体装置において、半導体装置の動作するクロック周波数を保障しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行可能とすることができる。
【図面の簡単な説明】
【0016】
【図1】実施例1に係る半導体装置1の全体構成を示すブロック図である。
【図2】演算ユニット100、101の構成の一例を示す図である。
【図3】演算回路1000A、1000Bの詳細な構成を示す図である。
【図4】演算ユニット100、101の構成の一例を示す図である。
【図5】実施例1の記憶部11の内部構成の一例を示す図である。
【図6】実施例1に係る半導体装置1の各構成の動作を示すシーケンス図である。
【図7】実施例1の記憶部11の内部構成の変形例を示す図である。
【図8】実施例1の演算部12の変形例を示すブロック図である。
【図9】実施例1の記憶部11及び演算部12の変形例を示す図である。
【図10】実施例2に係る半導体装置の記憶部11と演算部12を示す図である。
【図11】実施例3に係る半導体装置の全体構成を示すブロック図である。
【図12】実施例4に係る半導体装置の全体構成を示すブロック図である。
【図13】実施例5に係る半導体装置の全体構成を示すブロック図である。
【発明を実施するための形態】
【0017】
以下に、本発明の実施の形態について、図面に基づいて詳細に説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【実施例1】
【0018】
図1は、本発明の第1の実施例の半導体装置の構成を示した図である。半導体装置1は、処理部10と、記憶部11とを備え、外部装置50と接続されている。処理部10は、演算部12と、制御部13とを備える。半導体装置1は、一定のクロック周波数のクロック信号に同期して演算処理を行うものとする。
【0019】
制御部13は、外部装置50と接続され、外部装置50より入力される半導体装置1の動作を制御するための制御情報を解釈し、演算部12の動作を制御する演算制御情報と、記憶部11の動作を制御するリード・ライト制御情報とを出力する。
【0020】
制御情報とは、半導体装置1の動作を制御する情報であり、演算部12と記憶部13の動作内容や動作順序を特定する情報であれば良い。制御情報とは、例えば、演算部12の演算処理内容や処理順序を特定する演算制御情報や、記憶部13のアドレス情報やリードまたはライトを示すアクセス情報を含むリード・ライト制御情報である。また、制御情報は、後述する開始制御信号を含んでいても良い。
【0021】
制御部13は、制御情報に含まれる演算制御情報の識別子と、リード・ライト制御情報の識別子とに従い、演算制御情報の識別子が示す演算制御情報と、リード・ライト制御情報の識別子が示すリード・ライト制御情報とを読出し、演算制御情報を演算部12へ、リード・ライト制御情報を記憶部11へ出力する。制御部13は、演算制御情報とリード・ライト制御情報との出力が完了すると、次の制御情報に対して、同様の処理を継続する。制御部13は、処理完了の情報を含む制御情報を記憶装置から読み出すまで上記処理を繰り返す。演算制御情報の識別子と、リード・ライト制御情報の識別子は、それぞれ、演算制御情報、リード・ライト制御情報を特定できれば特に形態は問わない。例えば、識別子は、演算制御情報、リード・ライト制御情報を保持する記憶装置のアドレス情報であっても良い。「次」の演算制御情報、リード・ライト制御情報とは、特定の順序の情報を意図した通りに選択できれば特に形態は問わない。例えば、識別子がアドレス情報の場合は次のアドレスに保持されている情報を用いても良いし、読み出した演算制御情報、リード・ライト制御情報に、次の制御情報の識別子を埋め込むことで指定しても良い。
【0022】
また、別の例では制御情報は制御部13が出力する演算制御情報や、リード・ライト制御情報の識別子を含む情報でも構わないし、演算制御情報、リード・ライト制御情報の内容そのもので構成してもよい。
【0023】
演算制御情報とは、演算部12の動作を特定するための情報であれば良い。演算制御情報とは、例えば、演算部12で処理される演算処理内容や、演算処理に用いるデータ選択情報である。制御部13から演算部12に演算制御情報が入力されると、演算部12はデータ選択情報に従って、演算処理に必要となるデータを選択し、演算処理内容で特定される演算処理を実行する。ここで言うデータとは、演算処理で利用できるデータであればよく、実現の形態は特に問わない。例えば、記憶部11から読み出したデータであってもよいし、演算部12の以前の演算処理結果を内部のレジスタに保持しておき、これを利用してもよい。
【0024】
リード・ライト制御情報とは、記憶部11の動作を特定するための情報であれば良い。リード・ライト制御情報とは、例えば、記憶部11にアクセスする際に使用されるアドレス情報や、記憶部11に対するリードまたはライトを示すアクセス情報である。制御部13から記憶部11にリード・ライト制御情報が入力されると、記憶部11はアドレス情報によって特定される記憶部の領域に対して、アクセス情報によって特定される動作を行う。ここでいう動作とは、アドレス情報によって特定される記憶部の領域に対するリード(読み出し)かライト(書き込み)のいずれか一方、もしくはその両方を意味する。ここで、記憶部11が一度に可能なアクセスの数は特定しない。例えば、記憶部11は、一度に2回のリードが可能であってもよいし、1回のリードと1回のライトが同時に可能なようにしてもよい。
【0025】
演算部12は、制御部13と、記憶部11とに接続される。演算部12は、制御部13からの開始制御信号を受け取ると、記憶部11から読み出したデータに対して、演算制御情報に従った演算処理を実行し、出力データ(演算結果)を記憶部11へと出力する。演算部12は、演算制御情報の示す演算処理を、1クロックサイクルで実行する。
【0026】
演算部12は、クロック信号に同期して演算処理を行う演算ユニット100と、クロック信号に同期して演算処理を行う演算ユニット101とを有する。なお、演算部12にクロック信号が直接入力されなくても良い。例えば、記憶部11にクロック信号が直接入力され、記憶部11の動作に準じて、演算部12が演算処理を行っても良い。演算ユニット100は、遅延指標が閾値k(kは1以上の整数)未満の演算回路を複数個備える。演算ユニット100が実行する演算処理の複雑度は小さい。演算ユニット101は、遅延指標が閾値kよりも大きい演算回路を少なくとも1個備える。演算ユニット102が実行する演算処理の複雑度は大きい。この閾値kは、半導体装置の設計方針などに従って決定される。演算ユニット100が備える演算回路の数は、演算ユニット101が備える演算回路の数よりも大きい。
【0027】
遅延指標とは、それぞれの演算回路の遅延時間を示す指標であればよく、ここでは実際に使用する指標は特定しない。例えば、演算回路の遅延指標とは、演算回路の論理ゲート段数や、演算回路のレイテンシ(遅延時間)、あるいは、演算処理を実行する演算回路の回路面積で示しても良い。演算処理のレイテンシや演算回路の回路面積は、ある特定の半導体製造技術に基いて、演算回路(演算処理)ごとに計測する。一方で、演算回路の論理ゲート段数は、各演算処理に対応する論理回路のゲート段数の最大値を指標とすることで、特定の半導体製造技術に依存しない。実際に利用する半導体製造技術が予め特定されている場合には、演算回路のレイテンシや演算回路の回路面積の方が精度の高い指標である。一方、実際に利用する半導体製造技術が予め特定されていない場合には、演算処理のレイテンシや演算回路の回路面積に比べて精度は劣るが、演算処理の論理ゲート段数の方が汎用性の高い指標である。
【0028】
以下では、遅延指標が演算回路の論理ゲート段数であり、演算ユニット100が論理ゲート段数m(mは1以上k未満の自然数)の演算回路を2つ有し、演算ユニット101が論理ゲート段数n(nはk以上の自然数であり、n>m)の演算回路を1つ有する例で説明する。
【0029】
2つの演算ユニット100、101は、独立に動作可能である。2つの演算ユニット100、101は、一方のみが動作しても良く、双方が動作しても良い。演算ユニット100、101には、記憶部11に記憶された異なる2つのデータがそれぞれ入力されても良く、同一のデータがそれぞれ入力されても良い。演算ユニット100、101は、制御部13からの演算制御情報と、記憶部11から読み出すデータとを入力とし、演算制御情報に従って演算処理を実行し、その演算結果(出力データ)を記憶部11へ書き込む。
【0030】
図2は、演算部12の詳細な構成例を示す図である。演算ユニット100、101は、演算制御情報に従って演算処理を実際に実行する演算回路を有する。演算ユニット100は、論理ゲート段数m(mは1以上k未満の自然数)の演算回路1000A、1000Bを2つ有する。演算ユニット101は、論理ゲート段数n(nはk以上の自然数であり、n>m)の演算回路1001を1つ有する。
【0031】
演算回路1000A、1000Bで実行可能な演算命令の例は、データに対する論理和や論理積、加減算などの基本的な算術論理演算などである。演算回路1001で実行可能な演算命令の例は、データに対する乗除算や剰余算、データの中の0の数を数え上げる演算など、演算回路1000A、1000Bで実行可能な演算命令と比較して複雑な演算である。
【0032】
図3は、演算回路1000A、1000Bの詳細な構成例を示す図である。演算回路1000A、1000Bは、論理演算を行う論理演算器2000A、2000Bと、シフトや加減算を行う算術演算回路2001A、2001Bとを有する。演算回路1000A、1000Bは、直列に接続される。論理演算器2000Aと算術演算器2001A、ならびに、論理演算器2000Bと算術演算器2001B、は直列に接続される。
【0033】
演算回路1000Aは、記憶部11から読み出したデータに対して、制御部13からの演算制御情報に従って演算処理を実行し、出力データ(演算結果)を演算回路1000Bへ出力する。演算回路1000Bは、演算回路1000Aの出力データに対して、制御部13からの演算制御情報に従って演算命令を実行し、出力データ(演算結果)を記憶部11へ書き込む。
【0034】
記憶部11から読み出されるデータは、演算回路1000Aに入力されても良く、演算回路1000Bに入力されても良い。演算回路1000Aに入力されるデータは、論理演算器2000Aに入力されても良く、算術演算器2001Aに入力されても良い。演算回路1000Bに入力されるデータは、論理演算器2000Bに入力されても良く、算術演算器2001Bに入力されても良い。
【0035】
演算回路1001は、記憶部11から読み出したデータに対して、制御部13からの演算制御情報に従って演算命令を実行し、出力データ(演算結果)を記憶部11へ書き込む。
【0036】
演算ユニット100の2つの演算回路1000A、1000Bは、いずれの演算回路も論理ゲート段数がmであると説明したが、異なる論理ゲート段数m1、m2(ただし、m1、m2は1以上の自然数であり、かつm1、m2<n)であってもよい。
【0037】
本実施形態の半導体装置1では、クロック信号の周期から定められる基準値Zが予め定められる。演算ユニット100、101は、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0038】
例えば、演算ユニット100が遅延指標k未満の演算回路をX個(1以上の自然数)備えていて、かつ演算ユニット101が遅延指標k以上の演算回路をY個(1以上の自然数)備えても良い(ただし、X≧Y)。ただし、演算ユニット100のX個の演算回路の遅延指標の和及び演算ユニット101の遅延指標の和は、基準値Z以下である必要がある。
【0039】
図4は、演算部12の詳細な構成の1例を示す図である。図4に示すように、例えば、演算ユニット100が、遅延指標m1、・・・、mM(m1、・・・、mMは、1以上k未満の自然数)の第1乃至第M(Mは、2以上の整数)の演算回路1000M1〜MMを備えていて、かつ演算ユニット101が、遅延指標n1、・・・、nN(n1、・・・、nNは、k以上の自然数)の第1乃至第N(Nは、1以上の整数であって、N<M)の演算回路1001N1〜NNを備えていても良い。ただし、演算ユニット100が備える演算回路の遅延指標の和(m1+・・・+mM)と、演算ユニット101が備える演算回路の遅延指標の和(n1+・・・+nN)とは、基準値Z以下である。例えば、演算ユニット100が備える演算回路の遅延指標の和(m1+・・・+mM)から定められる遅延時間と、演算ユニット101が備える演算回路の遅延指標の和(n1+・・・+nN)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0040】
以下では、遅延指標が演算回路の論理ゲート段数である場合に、基準値Zが最大論理ゲート段数Zである例で説明する。演算部12を実現するための演算回路の論理ゲート段数の最大値Z(以下、最大論理ゲート段数Zと称する。)を予め定め、演算ユニット100、101は、このZを越えない範囲で、ぞれぞれの演算回路を複数個直列に配列することができる。最大論理ゲート段数Zは、半導体装置1のクロック周波数に応じて定められる値であって、クロック信号の周期内で処理可能な論理ゲート段数である。
【0041】
記憶部11は、演算部12が演算処理に用いるデータや、演算部12の演算処理の中間結果および演算処理の最終結果を保持する。演算部12の演算処理に用いるデータは、外部装置50から転送され書き込まれてもよい。演算部12は、記憶部11に保持された演算処理の中間結果を、再度入力として用い、複数クロックサイクルに渡って演算処理を継続してもよい。記憶部11に保持された演算部12の演算処理の最終結果は、外部装置50により読み出されてもよい。
【0042】
図5は、記憶部11の詳細な内部構成を示す。記憶部11は、記憶ユニット110、111を備える。リード・ライト制御情報は、記憶ユニット110、111に対するリードまたはライトを示すアクセス情報と、アドレス情報とを有する。記憶ユニット110、111において、リードを示すアクセス情報が入力されると、アドレス情報で指定される領域に保持されたデータが、読み出される。ライトを示すアクセス情報が入力されると、アドレス情報で指定される領域に、演算ユニット100、101の演算結果が書き込まれる。
【0043】
記憶部11は、外部装置50からの読み出し要求を受けると、クロック信号に同期して、指示されたアドレスからデータを読み出し、外部装置50に出力する。記憶部11は、外部装置50からの書き込み要求を受けると、外部装置50から送られたデータを、クロック信号に同期して、指示されたアドレスに書き込む。
【0044】
記憶部11は、クロック信号と、制御部13からのリード・ライト制御情報と、演算部12からの演算結果とを入力とし、リード・ライト制御情報がリードを示すアクセス情報を含む場合、クロック信号に同期してデータを読み出し、演算部12に転送する。また、リード・ライト制御情報が、ライトを示すアクセス情報を含む場合、演算部12から転送された演算結果がクロック信号に同期して書き込まれる。
【0045】
なお、外部装置50と、制御部13および演算部12とが同時に記憶部11へアクセスした場合、記憶部11への複数のアクセスを調停するためのハードウェアを用意し、動的に競合するアクセスを回避してもよい。また、このような機構は設けず、ソフトウェアによりアクセスの競合が起こらないように静的に制御してもよい。
【0046】
ここで、図1に示す実施例1の半導体装置1の動作フローを、図面を用いて説明する。図6は、半導体装置1において、ある演算処理を実行する際のシーケンス図である。まず、制御部13には、外部装置50から演算処理を制御するための制御情報が入力され(S1)、制御情報の解釈などの制御処理を行う(S2)。そして、制御部13は、制御処理の結果、第1の演算制御情報と第2の演算制御情報とリード・ライト制御情報とを出力する。そして、制御部13は、第1の演算制御情報を演算ユニット100に出力し、第2の演算制御情報を演算ユニット101に出力し、リード・ライト制御情報を記憶部11に出力する(S3)。記憶部11は、リード・ライト制御情報に従って、演算ユニット100の演算処理に必要となる第1のデータと演算ユニット101の演算処理に必要となる第2のデータの読み出しを行い、第1のデータを演算ユニット100の演算回路1000Aに出力し、第2のデータを演算回路1001に出力する(S4)。演算回路1000Aは、第1のデータを入力として受け取り、第1の演算制御情報によって規定される演算処理を実行し(S5)、演算結果を演算回路1000Bに出力する(S6)。演算回路1000Bは、演算回路1000Aの出力を入力として受け取り、第1の演算制御情報によって規定される演算処理を実行する(S7)。同様に、演算回路1001は、第2のデータを入力として受け取り、第2の演算制御情報により規定される演算処理を実行する(S8)。ここで、S5とS7で行うそれぞれの処理は、S8で行う処理と比べて簡易であり、S5とS7で行なう処理の処理時間の合計は、S8で行う処理の合計と比べて短い。このため、演算ユニット101でS8が行われている間に、演算ユニット100ではS5とS7を行うことができる。演算回路1000Bは、演算結果(第1の演算結果と称する。)を記憶部11に対して出力し、演算回路1001は、演算結果(第2の演算結果と称する。)を記憶部11に対して出力し(S9)、リード・ライト制御情報に従って、第1の演算結果と、第2の演算結果それぞれが記憶部11に書き込まれる。また、次に実行すべき処理が存在する場合は制御部13は、外部装置50より次に実行する演算処理に対する制御情報を入力として受け取り(S10)、制御情報の解釈などの制御処理を行う(S11)ことで処理時間を短縮することができる。なお、本実施例では、S3〜S11は、単一のクロックサイクルの間に実行される(単一のクロックサイクルの間に実行できる処理を、図6に点線で示した。)。
【0047】
このような構造をとることで、2つの単純な演算処理を組み合わせて実現するような演算処理を、複数のクロックサイクルに分けることなく、1クロックサイクルで実行することが可能となるため、低い消費電力で効率良く演算処理を実行することができる。また、複雑度の低い演算を処理する演算ユニットと、複雑度の高い演算を処理する演算ユニットとを設け、複雑度の低い演算を処理する演算ユニットでは、予め定める最大論理ゲート段数Zの範囲で、論理ゲート段数の低い演算回路を多段で接続する構成をとることにより、各種の演算処理の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、予め定める最大論理ゲート段数Zの範囲で演算ユニットを構成することから、半導体装置1の動作するクロック周波数を一定値に保証することが可能となる。
【0048】
なお、前述した半導体装置1の動作フローにおいて、S3で、制御部13は、演算制御情報として第1の演算制御情報と第2の演算制御情報とを出力すると説明した。しかしながら、制御部13は、第1の演算制御情報、第2の演算制御情報のいずれか一方のみを出力することとしても良い。この場合、演算ユニット100、演算ユニット101のいずれか一方のみが動作することとしても良い。
【0049】
次に、記憶部11の内部構成のより詳細な構成の例を説明する。
【0050】
図5に示すように、記憶部11は、演算ユニット100が参照するデータ(第1のデータ)を保持する記憶ユニット110と演算ユニット101が参照するデータ(第2のデータ)を保持する記憶ユニット111を備える。
【0051】
記憶ユニット110の出力は、演算ユニット100の入力に接続され、記憶ユニット111の出力は、演算ユニット101の入力に接続されている。
【0052】
演算ユニット100は、制御部13から記憶ユニット110に入力されるリード・ライト制御情報に従って、記憶ユニット110の第1のデータを参照することができる。一方、演算ユニット101は、制御部13から記憶ユニット111に入力されるリード・ライト制御情報に従って、記憶ユニット111の第2のデータを参照することができる。このように、演算ユニット毎に対応する記憶ユニットを設けることにより、各演算ユニットは、独立して同時にデータを参照することができ、各演算ユニットが、並列に処理を行うことができる。
【0053】
また、演算ユニット100及び101それぞれの出力は、記憶ユニット110及び111の両方の入力に接続されている。
【0054】
このような構成であるため、演算ユニット100は、制御部13から記憶部11に入力されるリード・ライト制御情報に従って、演算ユニット100の演算処理の結果である第1の演算結果を、記憶ユニット110、111のいずれか一方、もしくはその両方に書き込むことができる。また、演算ユニット101は、制御部13から記憶部11に入力されるリード・ライト制御情報に従って、演算ユニット101の演算処理の結果である第2の演算結果を、記憶ユニット110、111のいずれか一方、もしくはその両方に書き込むことができる。
【0055】
このように、演算ユニット100及び演算ユニット101の演算結果を、記憶ユニット110及び記憶ユニット111両方に書き込むことができるため、演算ユニット100は、演算ユニット101の演算結果を用いた演算処理を行うことができ、演算ユニット101は、演算ユニット100の演算結果を用いた演算処理を行うことができる。演算ユニット100、101の間でデータの受け渡しが可能となり、より柔軟な演算処理の実現が可能となる。
【0056】
なお、記憶ユニット100、101では、同時に書き込むことのできる情報の数は限定しない。よって、入力された演算ユニット100、101の演算結果の両方を、同時に書き込んでもよいし、セレクタを設けてどちらか一方を選択して書き込むようにしても構わない。
【0057】
図7は、記憶部11の内部構成の変形例を示す図である。図7の記憶部11は、1つの記憶ユニット120を備える構成である。
【0058】
記憶ユニット120は、演算ユニット100が参照するデータ(第1のデータ)と演算ユニット101が参照するデータ(第2のデータ)を保持する。
【0059】
また、演算ユニット100及び101それぞれの入力及び出力は、記憶ユニット120に接続されている。
【0060】
演算ユニット100は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、記憶ユニット110の第1のデータを参照することができる。一方、演算ユニット101は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、記憶ユニット120の第2のデータを参照することができる。
【0061】
また、演算ユニット100は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、演算ユニット100の演算処理の結果である第1の演算結果を、記憶ユニット120に書き込むことができる。また、演算ユニット101は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、演算ユニット101の演算処理の結果である第2の演算結果を、記憶ユニット120に書き込むことができる。
【0062】
このように、記憶ユニット120を、演算ユニット100、101で共有するため、記憶部の面積と消費電力を削減することができる。
【0063】
また、演算ユニット100及び演算ユニット101の演算結果を、1つの共有する記憶ユニット120に書き込むことができるため、演算ユニット100は、演算ユニット101の演算結果を用いた演算処理を行うことができ、演算ユニット101は、演算ユニット100の演算結果を用いた演算処理を行うことができる。演算ユニット100、101の間でデータの受け渡しが可能となり、より柔軟な演算処理の実現が可能となる。
【0064】
図8は、演算部12の内部構成の変形例を示す図である。図8の演算部12は、更に、演算ユニット100、101の演算結果のいずれかを選択するセレクタ102を更に有している。
【0065】
演算ユニット100、101の出力は、セレクタ102と接続されている。セレクタ102の出力は、記憶ユニット110及び記憶ユニット111に接続されている。
【0066】
演算ユニット100は、制御部13から記憶ユニット110に入力されるリード・ライト制御情報に従って、記憶ユニット110の第1のデータを参照することができる。一方、演算ユニット101は、制御部13から記憶ユニット111に入力されるリード・ライト制御情報に従って、記憶ユニット111の第2のデータを参照することができる。このように、演算ユニット毎に対応する記憶ユニットを設けることにより、各演算ユニットは、独立して同時にデータを参照することができ、各演算ユニットが、並列に処理を行うことができる。
【0067】
一方、演算ユニット100及び101それぞれの出力は、セレクタ102に出力される。
【0068】
セレクタ102は、制御部13からの演算制御情報に含まれる演算結果選択信号と、演算ユニット100、101の演算結果とを入力とし、演算結果選択信号によって指定される演算結果のいずれか一方を選択して、記憶ユニット110及び記憶ユニット111のいずれか一方、又は両方に出力する。
【0069】
記憶ユニット110、111はそれぞれ制御部13からのリード・ライト制御情報と、セレクタ102の出力とを入力とし、リード・ライト制御情報に従い、セレクタ102の出力を書き込む。
【0070】
演算部12の内部構成をこのような構成とすることで、演算部12の演算ユニット100、101のいずれか一方の演算処理のみが有効となり、有効とならない演算ユニットの信号遷移を停止させることで電力消費を低減することができる。
【0071】
図9は、図7の記憶部11の内部構成と図8の演算部12の構成を組み合わせた場合の例を示す図である。
【0072】
即ち、記憶部11は、1つの記憶ユニット120を備える構成であり、演算部12は、セレクタ102を備える構成である。
【0073】
記憶ユニット120は、演算ユニット100、101それぞれの入力に接続されている。演算ユニット100、101の出力は、セレクタ102と接続されている。セレクタ102の出力は、記憶ユニット120に接続されている。
【0074】
以下では、記憶部11を図7のような内部構成とした場合の動作を説明する。
【0075】
記憶ユニット120は、制御部13からのリード・ライト制御情報に従って、データを読み出し、演算ユニット100、演算ユニット101に出力する。データは、演算ユニット100、演算ユニット101それぞれ毎に異なるデータを出力しても良いし、同一のデータを出力しても良い。
【0076】
演算部12は、演算ユニット100、101の演算結果をセレクタ102に出力する。セレクタ102は、制御部13からの制御情報に含まれる演算結果選択信号と、演算ユニット100、101の演算結果とを入力とし、演算結果選択信号によって指定される演算結果のいずれか一方を選択して出力する。記憶ユニット120は、制御部13からのリード・ライト制御情報と、セレクタ102の出力とを入力とし、リード・ライト制御情報に従い、セレクタ102の出力を書き込む。
【0077】
記憶部11及び演算部12の内部構成をこのような構成とすることで、演算部12の演算ユニット100、101のいずれか一方の演算処理のみが有効となり、有効とならない演算ユニットの信号遷移を停止させることで電力消費を低減することができる。また、記憶ユニット120を、演算ユニット100、101で共有するため、記憶部の面積と消費電力を削減することができる。
【0078】
尚、実施例1で示す演算部12ではデータや、演算の途中結果、最終結果などを、一時的に記憶するレジスタをもたない構成をとるが、クリティカルパス削減のため、前サイクルに出力した結果を保持するプリフェッチ用のレジスタを備える構成もとって良い。
【実施例2】
【0079】
本発明の第2の実施例に係る半導体装置2は、図1の半導体装置1と同様に、処理部10と記憶部11とを備え、外部装置50と接続されている。処理部10は、演算部12と、制御部13とを備える。半導体装置2は、一定のクロック周波数のクロック信号と同期して演算処理を行うものとする。
【0080】
図10は、本発明の第2の実施例に係る半導体装置2の演算部12と記憶部11の詳細な構成を示す図である。
【0081】
図10に示すように、演算部12は、実施例1の半導体装置1と異なり、出力生成ユニット20を更に備える構成である。その他の構成は、実施例1の半導体装置1の構成と同様な構成である。記憶部11は、図7及び図9の構成と同様に、記憶ユニット120を1つ備える構成である。
【0082】
演算部12は、記憶部11からデータを受け取り、制御部13から演算制御情報を受け取ると、演算制御情報が有効である場合に、演算制御情報に従って、データに対して演算処理を行い、演算結果(出力データ)を記憶部11へと出力する。
【0083】
演算部12は演算ユニット100と、演算ユニット101とを備える。演算ユニット100は演算回路1000Aと、演算回路1000Bとを備える。
【0084】
演算ユニット100と、演算ユニット101とはそれぞれ記憶部11から第1のデータ、第2のデータを受け取ると、演算処理を実行し、第1の演算結果と、第2の演算結果とを出力生成ユニット20へと出力する。
【0085】
出力生成ユニット20は、演算ユニット100から入力される第1の演算結果と、演算ユニット101から入力される第2の演算結果とを入力とし、演算制御情報に従い、記憶部11へ出力する演算結果(出力データ)を生成する。
【0086】
出力生成ユニット20は、演算ユニット100から入力される第1の演算結果と、演算ユニット101から入力される第2の演算結果と、の一方のみを演算結果(出力データ)として出力しても良いし、その両方を出力しても良い。
【0087】
出力生成ユニット20は、例えば、一方の演算結果(例えば、第1の演算結果)が真の場合、もう一方の演算結果(例えば、第2の演算結果)を出力し、一方の演算結果(例えば、第1の演算結果)が偽の場合は、第1の演算結果と第2の演算結果の何も出力しないというように、一方の演算結果を条件として出力内容を変更しても良い。このように、一方の演算結果を条件として、出力内容を変更する処理として、条件分岐処理がある。
【0088】
条件分岐処理として、例えば、If文(If〜then〜Else〜IfEnd)を行う処理がある。If文は、分岐条件が「真」のときは「Then」以降の処理を行い、「偽」のときは、「Else」以降の処理を行う命令である。その書式は「If条件 Then 真の時の処理 IfEnd」である。このIf文の終了コマンドは「IfEND」である。
【0089】
本実施例の半導体装置2が、条件分岐処理を行う場合、例えば、第1の演算結果を分岐条件が「真」であるか「偽」であるかを判定するために用いて、第2の演算結果を、分岐条件が「真」のときの処理である「Then」以降の処理結果として用いるものとする。そして、「偽」のときの処理である「Else」以降の処理を「何も行わない」ものとする。この場合、出力生成ユニット20は、第1の演算結果から分岐条件が「真」か「偽」かを判定し、分岐条件が「真」であると判定した場合は、第2の演算結果を出力し、分岐条件が「偽」であると判定した場合は、第1の演算結果と第2の演算結果いずれも出力しない。
【0090】
このように、本実施例の半導体装置2によれば、分岐条件が「真」であるか「偽」であるかを判定するための処理と、分岐条件が「真」である場合に実行する処理とを同時に処理することにより、条件分岐処理のスピード向上を達成することができる。
【0091】
また、以上の例では、第1の演算結果が「真」の場合、第2の演算結果を出力すると説明したが、第1の演算結果、第2の演算結果両方を出力することとしても良い。また、第2の演算結果を分岐条件の判定のために用いて、第2の演算結果から「真」と判定できた場合、第1の演算結果を出力することとしてもよい。
【0092】
また、第1の演算結果が「偽」であると判定した場合、第1の演算結果と第2の演算結果いずれも出力しないとしたが、第1の演算結果を出力してもよい。
【0093】
また、第1の演算結果が「偽」であると判定した場合、第2の演算結果を出力し、第1の演算結果が[真]であると判定した場合、第1の演算結果と第2の演算結果いずれも出力しないとしてもよい。
【0094】
また、第1の演算結果が「真」である場合、第1の演算結果を出力し、第1の演算結果が「偽」である場合、第2の演算結果を出力することとしても良い。
【0095】
尚、以上の例では、一方の演算結果を条件として、出力内容を変更する処理として、条件分岐処理を例として説明したが、条件分岐処理に限られない。例えば、複数の演算部を備える構成において、それぞれの演算部で別の条件の際の処理を実行し、条件結果に応じて一つの結果のみを記憶部へと書き戻すといった方法がある。このように、条件判定処理を複数の演算部で実行することで、条件判定に要するサイクルを削減することができる。
【0096】
尚、演算ユニット100と演算ユニット101は、出力生成ユニット20が出力する内容に従い、いずれか一方のみが動作しても良いし、二つのユニットが同時に動作しても良い。例えば、出力生成ユニット20が演算ユニット100、演算ユニット101のどちらか一方の演算結果のみを出力する場合は、演算結果を出力しない演算ユニットに対して演算制御情報を送らず、動作を停止させてもよい。このようにすることで構成情報や、消費電力を削減することができる。
【0097】
また、実施例2の半導体装置によれば、実施例1の半導体装置と同様な効果を達成することができる。
【実施例3】
【0098】
図11は、本発明の第3の実施例に係る半導体装置の構成を示す図である。
【0099】
図11に示すように、実施例3の半導体装置3は、実施例1の半導体装置と比べて、制御部13の構成をより具体的に示した構成である
制御部13は、演算制御情報記憶部14Aとリード・ライト制御情報記憶部14Bとポインタ通知部14Cとを備える構成である。
【0100】
ポインタ通知部14Cは、演算制御情報記憶部14Aに対して第1参照ポインタを通知し、リード・ライト制御情報記憶部14Bに対して第2参照ポインタを通知する。また、ポインタ通知部14Cは、開始制御信号を演算部12に通知する。演算部12は、開始制御信号を受け取ると、演算処理の実行を開始する。
【0101】
リード・ライト制御情報記憶部14Aは、予め外部装置50から演算制御情報を受け取り記憶しておくことができる。そして、ポインタ通知部14Cが出力する第1参照ポインタを受けると、第1参照ポインタにしたがって、演算制御情報を演算部12に通知する。
【0102】
リード・ライト制御情報記憶部14Bは、予め外部装置50からリード・ライト制御情報を受け取り記憶しておく。そして、ポインタ通知部14Cが出力する第2参照ポインタを受け取ると、第2参照ポインタにしたがって、リード・ライト制御情報を記憶部11に通知する。
【0103】
実施例3の半導体装置によれば、外部装置50からの演算制御情報、リード・ライト制御情報を、それぞれ演算制御情報記憶部14A、リード・ライト制御情報記憶部14Bに予めまとまった量の制御情報を転送しておくことができ、適当なタイミングで演算制御情報とリード・ライト制御情報を演算部12及び記憶部11に通知できる。
【0104】
また、実施例3の半導体装置によれば、実施例1の半導体装置と同様な効果を達成することができる。
【実施例4】
【0105】
図12に、本発明の第4の実施例に係る半導体装置の構成を示す。実施例4の半導体装置4は、実施例1の半導体装置1と異なり、処理部10が2つの演算部12Aと12Bを備える。
【0106】
演算部12Aと演算部12Bは、実施例1で説明した演算部12の図4の構成と同様の構成である。演算部12Aと演算部12Bの内部構成の図示は省略し、図4の各構成要素の符号を置き換えて説明する。
【0107】
演算部12Aは、2つの演算ユニット100A及び101Aを備えている。
【0108】
演算ユニット100A、101Aは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0109】
演算ユニット100Aは、遅延指標m1、・・・、mM(m1、・・・、mMは、自然数であり、かつ1以上k未満の値。)の第1乃至第M(Mは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Aは、遅延指標n1、・・・、nN(n1、・・・、nNは、自然数であり、かつk以上の値。)の第1乃至第N(Nは、1以上の整数であって、N<M)の演算回路を備える構成である。
【0110】
ただし、演算ユニット100Aが備える演算回路の遅延指標の和(m1+・・・+mM)と、演算ユニット101Aが備える演算回路の遅延指標の和(n1+・・・+nN)とは、基準値Z以下である。例えば、演算ユニット100Aが備える演算回路の遅延指標の和(m1+・・・+mM)から定められる遅延時間と、演算ユニット101Aが備える演算回路の遅延指標の和(n1+・・・+nN)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0111】
また、演算部12Bは、2つの演算ユニット100B及び101Bを備えている。
【0112】
演算ユニット100B、101Bは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0113】
また、演算ユニット100Bは、遅延指標r1、・・・、rR(r1、・・・、rRは、自然数であり、かつ1以上j(jは1以上の整数。)未満の値。)の第1乃至第R(Rは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Bは、遅延指標s1、・・・、sS(s1、・・・、sSは、自然数であり、かつj以上の値。)の第1乃至第S(Sは、1以上の整数であって、S<R)の演算回路を備える構成である。
【0114】
ただし、演算ユニット100Bが備える演算回路の遅延指標の和(r1+・・・+rR)と、演算ユニット101Bが備える演算回路の遅延指標の和(s1+・・・+sS)とは、基準値Z以下である。例えば、演算ユニット100が備える演算回路の遅延指標の和(r1+・・・+rR)から定められる遅延時間と、演算ユニット101が備える演算回路の遅延指標の和(s1+・・・+sS)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0115】
本実例の半導体装置4において、制御部13は、外部装置50から制御情報を受け取ると、開始制御信号とともに、演算部12Aに対して、第1の演算制御情報と第2の演算制御情報を通知し、演算部12Bに対して、第3の演算制御情報と第4の演算制御情報を通知する。演算部12Aは、開始制御信号を受け取ると、演算ユニット100Aが、記憶部11から読み出したデータに対して、第1の演算制御情報に規定される演算処理を行い、演算ユニット101Aが、記憶部11から読み出したデータに対して、第2の演算制御情報に規定された演算処理を行う。また、演算部12Bも、開始制御信号を受け取ると、演算ユニット100Bが、記憶部11から読み出したデータに対して、第3の演算制御情報に規定される演算処理を行い、演算ユニット101Bが、記憶部11から読み出したデータに対して、第4の演算制御情報に規定された演算処理を行う。また、演算ユニット100A、演算ユニット101A、演算ユニット100B及び演算ユニット101Bは、それぞれ演算処理を実行した出力である演算結果を記憶部11へと出力する。
【0116】
尚、半導体装置4は、処理部10が3つ以上の演算部を備える構成としてもよい。この場合でも、各演算部が備える演算ユニットの演算回路の遅延指標の和が基準値Zを越えない範囲である構成とする。
【0117】
本実施例の半導体装置4によれば、各々の演算部が、複雑度の低い演算を処理する演算ユニットと、複雑度の高い演算を処理する演算ユニットとを備え、複雑度の高い演算を処理する演算ユニットと複雑度の高い演算を処理する演算ユニットとが、それぞれ異なる数の演算回路を備える構成とすることにより、各種の演算命令の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、各演算部は、予め定める遅延指標Zの範囲で演算ユニットを構成することから、半導体装置の動作するクロック周波数を保証することが可能となる。
【実施例5】
【0118】
図13に、本発明の第5の実施例に係る半導体装置の構成を示す。実施例5の半導体装置5は、実施例1の半導体装置1と異なり、2つの処理部(処理部10Cと10D)を備える。
【0119】
処理部10Cと処理部10Dは、図1で示した処理部10と同様の構成である。処理部10Cと処理部10Dの内部構成の図示は省略し、図1の各構成要素の符号を置き換えて説明する。
【0120】
処理部10Cは、制御部13Cと演算部12Cを備える構成である。
【0121】
演算部12Cは、2つの演算ユニット100C及び101Cを備えている。演算部12Cは、図4で示した演算部12と同様の構成である。演算部12Cの図示は省略し、図4の各構成要素の符号を置き換えて説明する。
【0122】
演算ユニット100C、101Cは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0123】
演算ユニット100Cは、遅延指標m1、・・・、mM(m1、・・・、mMは、自然数であり、かつ1以上k未満の値。)の第1乃至第M(Mは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Dは、遅延指標n1、・・・、nN(n1、・・・、nNは、自然数であり、かつk以上の値。)の第1乃至第N(Nは、1以上の整数であって、N<M)の演算回路を備える構成である。
【0124】
ただし、演算ユニット100Cが備える演算回路の遅延指標の和(m1+・・・+mM)と、演算ユニット101Cが備える演算回路の遅延指標の和(n1+・・・+nN)とは、基準値Z以下である。例えば、演算ユニット100Cが備える演算回路の遅延指標の和(m1+・・・+mM)から定められる遅延時間と、演算ユニット101Cが備える演算回路の遅延指標の和(n1+・・・+nN)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0125】
また、演算部12Dは、2つの演算ユニット100D及び101Dを備えている。
【0126】
演算ユニット100D、101Dは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0127】
処理部10Dは、制御部13Dと演算部12Dを備える構成である。演算部12Dは、図4で示した演算部12と同様の構成である。演算部12Dの図示は省略し、図4の各構成要素の符号を置き換えて説明する。
【0128】
演算部12Dは、2つの演算ユニット100D及び101Dを備えている。
【0129】
また、演算ユニット100Dは、遅延指標t1、・・・、tT(t1、・・・、tTは、自然数であり、かつ1以上h(hは1以上の整数。)未満の値。)の第1乃至第T(Tは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Dは、遅延指標u1、・・・、uU(u1、・・・、uUは、自然数であり、かつh以上の値。)の第1乃至第U(Uは、1以上の整数であって、U<T)の演算回路を備える構成である。
【0130】
ただし、演算ユニット100Dが備える演算回路の遅延指標の和(t1+・・・+tT)と、演算ユニット101Dが備える演算回路の遅延指標の和(u1+・・・+uU)とは、基準値Z以下である。例えば、演算ユニット100が備える演算回路の遅延指標の和(t1+・・・+tT)から定められる遅延時間と、演算ユニット101が備える演算回路の遅延指標の和(u1+・・・+uU)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0131】
本実施例の半導体装置5において、制御部13Cは、外部装置50から第1の制御情報を受け取ると、開始制御信号とともに、演算部12Cに対して、第1の演算制御情報と第2の演算制御情報を通知する。制御部13Dは、外部装置50から第2の制御情報を受け取ると、開始制御信号とともに、演算部12Dに対して、第5の演算制御情報と第6の演算制御情報を通知する。演算部12Cは、開始制御信号を受け取ると、演算ユニット100Cが、記憶部11から読み出したデータに対して、第1の演算制御情報に規定される演算処理を行い、演算ユニット101Cが、記憶部11から読み出したデータに対して、第2の演算制御情報に規定された演算処理を行う。また、演算部12Dも、開始制御信号を受け取ると、演算ユニット100Dが、記憶部11から読み出したデータに対して、第5の演算制御情報に規定される演算処理を行い、演算ユニット101Dが、記憶部11から読み出したデータに対して、第6の演算制御情報に規定された演算処理を行う。また、処理部10C及び処理部10Dは、演算処理を実行した出力である演算結果を記憶部11へと出力する。
【0132】
尚、処理部10C、10Dはそれぞれ演算部を複数備える構成としてもよい。
【0133】
また、半導体装置5は、処理部を3つ以上備える構成としてもよい。この場合でも、各処理部が備える演算部の演算ユニットの演算回路の遅延指標の和が基準値Zを越えない範囲である構成とする。
【0134】
本実施例の半導体装置5によれば、各々の処理部の各演算部が、複雑度の低い演算を処理する演算ユニットと、複雑度の高い処理をする演算ユニットとを備え、複雑度の高い処理をする演算ユニットと複雑度の低い処理をする演算ユニットとが、異なる数の演算回路を備える構成とすることにより、各種の演算命令の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、各処理部の各演算部は、予め定める遅延指標Zの範囲で演算ユニットを構成することから、半導体装置4の動作するクロック周波数を保証することが可能となる。
【0135】
なお、本発明は上記実施例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施例に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施例にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0136】
1、2、3、4、5・・・半導体装置、50・・・外部装置、13・・・制御部、12、12A、12B・・・演算部、11・・・記憶部、10、10C、10D・・・処理部、100・・・演算ユニット、101・・・演算ユニット、102・・・セレクタ、14A・・・演算制御情報記憶部、14B・・・リード・ライト制御情報記憶部、14C・・・ポインタ通知部、1000A、1000B、1001、1000M1〜1000MM、1000N1〜1000NN・・・演算回路、2000A、2000B・・・論理演算器、2001A、2001B・・・算術演算器、110、111、120・・・記憶ユニット、20・・・出力生成ユニット。
【技術分野】
【0001】
本開示は、プログラム可能な半導体装置に関する。
【背景技術】
【0002】
ソフトウェアによるプログラムが可能な半導体装置のうち、FPGA(Field Programmable Gate Array)などのリコンフィギャラブル回路を用いた計算システムは、リコンフィギャラブル回路の回路情報をあらかじめメモリなどの記憶装置に保持し、システム初期化時に必要な情報を読み出して実行回路を構成することができる装置である。また、動的リコンフィギャラブル回路技術を用いた計算システムは、このような回路情報を複数保持し、プログラムにより規定された規則に従って、動作時に必要な回路情報を読み出して実行回路を構成することができる装置である。
【0003】
一般的に、FPGAは処理データの細かい(ビット数の少ない)LUT(Look−Up Table)を基本演算素子とし、これらの基本演算素子をプログラム可能な配線とスイッチ素子で相互接続することができる。相互接続された多数の基本演算素子を組み合わせることで、複雑な演算処理を実行することが可能である(非特許文献1)。一方、動的リコンフィギャラブル回路は処理データの粗い(ビット数の多い)演算器を基本演算素子とする装置である。これらのリコンフィギャラブル回路を用いることで、単一の半導体装置上で多様な演算処理を実現することが可能となり、専用ハードウェアの開発コストの削減が期待される。
【0004】
また、ソフトウェアによるハードウェア構成の変更が可能な計算システムとして、特許文献1記載のアレイ型プロセッサがあげられる。このアレイ型プロセッサでは、小規模の多数のプロセッサエレメントがマトリクス状に配列された構成をもち、プログラムを変更することでハードウェアの構成を変化させることができる。プログラムにより規定された順序に従い、プロセッサエレメントごとに1つの命令コードが選択され、この命令コードに従って演算器の演算処理とプロセッサエレメントの接続関係が制御され、複雑な演算処理を多数の演算器により並列に実行することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許3528922号明細書
【非特許文献】
【0006】
【非特許文献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
【発明の概要】
【発明が解決しようとする課題】
【0007】
一般的に、クロックに同期したプロセッサユニットを用いて複雑な演算処理を実現する場合、単純な演算命令を実行する演算器を複数クロックサイクルにわたって実行させ、単純な演算を組み合わせることで実現する。CPUなどのプロセッサユニットの演算器が単一クロックサイクルで実行できる演算命令は通常一つであることから、処理する演算処理の複雑度に応じて複数のクロックサイクルを消費することになる。このため、CPUなどのプロセッサユニットで複雑な演算処理を高速に実行する場合には、高いクロック周波数で動作させなければならず、消費電力が大きくなってしまう問題がある。
【0008】
また、プロセッサユニットのサポートする演算を実行する演算器のレイテンシ(回路上の遅延時間)は演算命令の種類によって異なるため、最も複雑な(レイテンシの大きい)演算回路に合わせたクロック周波数を用いて回路を動作することとなる。このような場合、単純な演算命令を実行する際には本来実行可能な演算回数よりも少ない演算処理しか行うことができず、本来の性能を発揮することができない。このため、CPUなどの高いクロック周波数で動作させるプロセッサユニットでは、複雑な演算命令は複数クロックサイクルに分割して実行するような工夫がなされている。しかしながら、この手法では性能の向上は達成できるもののクロック周波数の向上により消費電力が増大してしまう点が問題となる。
【0009】
一方、FPGAなどのリコンフィギャラブル回路では、プログラマブルな配線とスイッチ素子により複数の演算素子を多段で接続することで、複雑な演算処理を単一クロックサイクルで実現可能である。同様に特許文献1記載のアレイ型プロセッサでも、マトリクス状に配列された複数のプロセッサエレメントを多段で接続して複雑な演算処理をプログラムすることが可能である。このように、単一クロックサイクル中に複数の演算処理を複数の演算素子を用いて実行可能であることから、低いクロック周波数であっても高速に演算処理を行うことができる。
【0010】
しかしながら、このようなソフトウェアにより演算素子間の接続関係もプログラムして複雑な演算処理を実現する半導体装置の場合、クロック周波数はプログラムされた最も実行時間の長い演算処理に依存することになる。
【0011】
また、同一のソフトウェアであっても、演算命令の演算器へのマッピングや演算素子間の実際の配線結果によって実行時間が異なることとなり、プログラムごとのクロック周波数の制御が複雑になるという課題があった。
【0012】
さらに、多数の演算素子を並列に動作させることが可能である一方で、複数クロックにわたって同一の演算素子を活用することが困難となり、回路の利用効率が低下するという課題がある。
【0013】
本発明の一観点は、ソフトウェアによりハードウェア構成を変更可能な半導体装置において、半導体装置の動作するクロック周波数を保証しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行することが可能な半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一観点による半導体装置は、クロック信号に同期して演算処理を実行する半導体装置であって、各演算回路が実行する演算を制御するための第1の演算制御情報と第2の演算制御情報とを出力する制御部と、第1のデータと第2のデータとを記憶する記憶部と、前記クロック信号に同期して動作し、前記第1の演算制御情報に従って、前記第1のデータに対して演算処理を行い、第3のデータを出力する第1の演算ユニットと、前記クロック信号に同期して動作し、前記第2の演算制御情報に従って、前記第2のデータに対して演算処理を行い、第4のデータを出力する第2の演算ユニットとを備え、前記第1の演算ユニットは、直列に接続された第1乃至第M(Mは、2以上の整数)の演算回路を備え、前記第m+1(mは、1以上M−1以下の整数)段の演算回路は、前記第m段の演算回路の演算結果に対して、演算処理を行うものであって、前記第1乃至第Mの演算回路の遅延量を示す遅延指標は、それぞれ、m1、・・・、mM(m1、・・・、mMは、自然数)であって、前記第2の演算ユニットは、遅延量を示す遅延指標がn(nは1以上の整数)の演算回路を少なくとも備え、前記第1の演算ユニットが備える演算回路の遅延指標の和(m1+・・・+mM)によって定められる遅延時間と、前記第2の演算ユニットが備える演算回路の遅延指標nによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下であることを特徴とする。
【発明の効果】
【0015】
本発明の一観点によれば、ソフトウェアによりハードウェア構成を変更可能な半導体装置において、半導体装置の動作するクロック周波数を保障しつつ、複数の演算命令の組み合わせで形成される演算処理を効率的に実行可能とすることができる。
【図面の簡単な説明】
【0016】
【図1】実施例1に係る半導体装置1の全体構成を示すブロック図である。
【図2】演算ユニット100、101の構成の一例を示す図である。
【図3】演算回路1000A、1000Bの詳細な構成を示す図である。
【図4】演算ユニット100、101の構成の一例を示す図である。
【図5】実施例1の記憶部11の内部構成の一例を示す図である。
【図6】実施例1に係る半導体装置1の各構成の動作を示すシーケンス図である。
【図7】実施例1の記憶部11の内部構成の変形例を示す図である。
【図8】実施例1の演算部12の変形例を示すブロック図である。
【図9】実施例1の記憶部11及び演算部12の変形例を示す図である。
【図10】実施例2に係る半導体装置の記憶部11と演算部12を示す図である。
【図11】実施例3に係る半導体装置の全体構成を示すブロック図である。
【図12】実施例4に係る半導体装置の全体構成を示すブロック図である。
【図13】実施例5に係る半導体装置の全体構成を示すブロック図である。
【発明を実施するための形態】
【0017】
以下に、本発明の実施の形態について、図面に基づいて詳細に説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【実施例1】
【0018】
図1は、本発明の第1の実施例の半導体装置の構成を示した図である。半導体装置1は、処理部10と、記憶部11とを備え、外部装置50と接続されている。処理部10は、演算部12と、制御部13とを備える。半導体装置1は、一定のクロック周波数のクロック信号に同期して演算処理を行うものとする。
【0019】
制御部13は、外部装置50と接続され、外部装置50より入力される半導体装置1の動作を制御するための制御情報を解釈し、演算部12の動作を制御する演算制御情報と、記憶部11の動作を制御するリード・ライト制御情報とを出力する。
【0020】
制御情報とは、半導体装置1の動作を制御する情報であり、演算部12と記憶部13の動作内容や動作順序を特定する情報であれば良い。制御情報とは、例えば、演算部12の演算処理内容や処理順序を特定する演算制御情報や、記憶部13のアドレス情報やリードまたはライトを示すアクセス情報を含むリード・ライト制御情報である。また、制御情報は、後述する開始制御信号を含んでいても良い。
【0021】
制御部13は、制御情報に含まれる演算制御情報の識別子と、リード・ライト制御情報の識別子とに従い、演算制御情報の識別子が示す演算制御情報と、リード・ライト制御情報の識別子が示すリード・ライト制御情報とを読出し、演算制御情報を演算部12へ、リード・ライト制御情報を記憶部11へ出力する。制御部13は、演算制御情報とリード・ライト制御情報との出力が完了すると、次の制御情報に対して、同様の処理を継続する。制御部13は、処理完了の情報を含む制御情報を記憶装置から読み出すまで上記処理を繰り返す。演算制御情報の識別子と、リード・ライト制御情報の識別子は、それぞれ、演算制御情報、リード・ライト制御情報を特定できれば特に形態は問わない。例えば、識別子は、演算制御情報、リード・ライト制御情報を保持する記憶装置のアドレス情報であっても良い。「次」の演算制御情報、リード・ライト制御情報とは、特定の順序の情報を意図した通りに選択できれば特に形態は問わない。例えば、識別子がアドレス情報の場合は次のアドレスに保持されている情報を用いても良いし、読み出した演算制御情報、リード・ライト制御情報に、次の制御情報の識別子を埋め込むことで指定しても良い。
【0022】
また、別の例では制御情報は制御部13が出力する演算制御情報や、リード・ライト制御情報の識別子を含む情報でも構わないし、演算制御情報、リード・ライト制御情報の内容そのもので構成してもよい。
【0023】
演算制御情報とは、演算部12の動作を特定するための情報であれば良い。演算制御情報とは、例えば、演算部12で処理される演算処理内容や、演算処理に用いるデータ選択情報である。制御部13から演算部12に演算制御情報が入力されると、演算部12はデータ選択情報に従って、演算処理に必要となるデータを選択し、演算処理内容で特定される演算処理を実行する。ここで言うデータとは、演算処理で利用できるデータであればよく、実現の形態は特に問わない。例えば、記憶部11から読み出したデータであってもよいし、演算部12の以前の演算処理結果を内部のレジスタに保持しておき、これを利用してもよい。
【0024】
リード・ライト制御情報とは、記憶部11の動作を特定するための情報であれば良い。リード・ライト制御情報とは、例えば、記憶部11にアクセスする際に使用されるアドレス情報や、記憶部11に対するリードまたはライトを示すアクセス情報である。制御部13から記憶部11にリード・ライト制御情報が入力されると、記憶部11はアドレス情報によって特定される記憶部の領域に対して、アクセス情報によって特定される動作を行う。ここでいう動作とは、アドレス情報によって特定される記憶部の領域に対するリード(読み出し)かライト(書き込み)のいずれか一方、もしくはその両方を意味する。ここで、記憶部11が一度に可能なアクセスの数は特定しない。例えば、記憶部11は、一度に2回のリードが可能であってもよいし、1回のリードと1回のライトが同時に可能なようにしてもよい。
【0025】
演算部12は、制御部13と、記憶部11とに接続される。演算部12は、制御部13からの開始制御信号を受け取ると、記憶部11から読み出したデータに対して、演算制御情報に従った演算処理を実行し、出力データ(演算結果)を記憶部11へと出力する。演算部12は、演算制御情報の示す演算処理を、1クロックサイクルで実行する。
【0026】
演算部12は、クロック信号に同期して演算処理を行う演算ユニット100と、クロック信号に同期して演算処理を行う演算ユニット101とを有する。なお、演算部12にクロック信号が直接入力されなくても良い。例えば、記憶部11にクロック信号が直接入力され、記憶部11の動作に準じて、演算部12が演算処理を行っても良い。演算ユニット100は、遅延指標が閾値k(kは1以上の整数)未満の演算回路を複数個備える。演算ユニット100が実行する演算処理の複雑度は小さい。演算ユニット101は、遅延指標が閾値kよりも大きい演算回路を少なくとも1個備える。演算ユニット102が実行する演算処理の複雑度は大きい。この閾値kは、半導体装置の設計方針などに従って決定される。演算ユニット100が備える演算回路の数は、演算ユニット101が備える演算回路の数よりも大きい。
【0027】
遅延指標とは、それぞれの演算回路の遅延時間を示す指標であればよく、ここでは実際に使用する指標は特定しない。例えば、演算回路の遅延指標とは、演算回路の論理ゲート段数や、演算回路のレイテンシ(遅延時間)、あるいは、演算処理を実行する演算回路の回路面積で示しても良い。演算処理のレイテンシや演算回路の回路面積は、ある特定の半導体製造技術に基いて、演算回路(演算処理)ごとに計測する。一方で、演算回路の論理ゲート段数は、各演算処理に対応する論理回路のゲート段数の最大値を指標とすることで、特定の半導体製造技術に依存しない。実際に利用する半導体製造技術が予め特定されている場合には、演算回路のレイテンシや演算回路の回路面積の方が精度の高い指標である。一方、実際に利用する半導体製造技術が予め特定されていない場合には、演算処理のレイテンシや演算回路の回路面積に比べて精度は劣るが、演算処理の論理ゲート段数の方が汎用性の高い指標である。
【0028】
以下では、遅延指標が演算回路の論理ゲート段数であり、演算ユニット100が論理ゲート段数m(mは1以上k未満の自然数)の演算回路を2つ有し、演算ユニット101が論理ゲート段数n(nはk以上の自然数であり、n>m)の演算回路を1つ有する例で説明する。
【0029】
2つの演算ユニット100、101は、独立に動作可能である。2つの演算ユニット100、101は、一方のみが動作しても良く、双方が動作しても良い。演算ユニット100、101には、記憶部11に記憶された異なる2つのデータがそれぞれ入力されても良く、同一のデータがそれぞれ入力されても良い。演算ユニット100、101は、制御部13からの演算制御情報と、記憶部11から読み出すデータとを入力とし、演算制御情報に従って演算処理を実行し、その演算結果(出力データ)を記憶部11へ書き込む。
【0030】
図2は、演算部12の詳細な構成例を示す図である。演算ユニット100、101は、演算制御情報に従って演算処理を実際に実行する演算回路を有する。演算ユニット100は、論理ゲート段数m(mは1以上k未満の自然数)の演算回路1000A、1000Bを2つ有する。演算ユニット101は、論理ゲート段数n(nはk以上の自然数であり、n>m)の演算回路1001を1つ有する。
【0031】
演算回路1000A、1000Bで実行可能な演算命令の例は、データに対する論理和や論理積、加減算などの基本的な算術論理演算などである。演算回路1001で実行可能な演算命令の例は、データに対する乗除算や剰余算、データの中の0の数を数え上げる演算など、演算回路1000A、1000Bで実行可能な演算命令と比較して複雑な演算である。
【0032】
図3は、演算回路1000A、1000Bの詳細な構成例を示す図である。演算回路1000A、1000Bは、論理演算を行う論理演算器2000A、2000Bと、シフトや加減算を行う算術演算回路2001A、2001Bとを有する。演算回路1000A、1000Bは、直列に接続される。論理演算器2000Aと算術演算器2001A、ならびに、論理演算器2000Bと算術演算器2001B、は直列に接続される。
【0033】
演算回路1000Aは、記憶部11から読み出したデータに対して、制御部13からの演算制御情報に従って演算処理を実行し、出力データ(演算結果)を演算回路1000Bへ出力する。演算回路1000Bは、演算回路1000Aの出力データに対して、制御部13からの演算制御情報に従って演算命令を実行し、出力データ(演算結果)を記憶部11へ書き込む。
【0034】
記憶部11から読み出されるデータは、演算回路1000Aに入力されても良く、演算回路1000Bに入力されても良い。演算回路1000Aに入力されるデータは、論理演算器2000Aに入力されても良く、算術演算器2001Aに入力されても良い。演算回路1000Bに入力されるデータは、論理演算器2000Bに入力されても良く、算術演算器2001Bに入力されても良い。
【0035】
演算回路1001は、記憶部11から読み出したデータに対して、制御部13からの演算制御情報に従って演算命令を実行し、出力データ(演算結果)を記憶部11へ書き込む。
【0036】
演算ユニット100の2つの演算回路1000A、1000Bは、いずれの演算回路も論理ゲート段数がmであると説明したが、異なる論理ゲート段数m1、m2(ただし、m1、m2は1以上の自然数であり、かつm1、m2<n)であってもよい。
【0037】
本実施形態の半導体装置1では、クロック信号の周期から定められる基準値Zが予め定められる。演算ユニット100、101は、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0038】
例えば、演算ユニット100が遅延指標k未満の演算回路をX個(1以上の自然数)備えていて、かつ演算ユニット101が遅延指標k以上の演算回路をY個(1以上の自然数)備えても良い(ただし、X≧Y)。ただし、演算ユニット100のX個の演算回路の遅延指標の和及び演算ユニット101の遅延指標の和は、基準値Z以下である必要がある。
【0039】
図4は、演算部12の詳細な構成の1例を示す図である。図4に示すように、例えば、演算ユニット100が、遅延指標m1、・・・、mM(m1、・・・、mMは、1以上k未満の自然数)の第1乃至第M(Mは、2以上の整数)の演算回路1000M1〜MMを備えていて、かつ演算ユニット101が、遅延指標n1、・・・、nN(n1、・・・、nNは、k以上の自然数)の第1乃至第N(Nは、1以上の整数であって、N<M)の演算回路1001N1〜NNを備えていても良い。ただし、演算ユニット100が備える演算回路の遅延指標の和(m1+・・・+mM)と、演算ユニット101が備える演算回路の遅延指標の和(n1+・・・+nN)とは、基準値Z以下である。例えば、演算ユニット100が備える演算回路の遅延指標の和(m1+・・・+mM)から定められる遅延時間と、演算ユニット101が備える演算回路の遅延指標の和(n1+・・・+nN)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0040】
以下では、遅延指標が演算回路の論理ゲート段数である場合に、基準値Zが最大論理ゲート段数Zである例で説明する。演算部12を実現するための演算回路の論理ゲート段数の最大値Z(以下、最大論理ゲート段数Zと称する。)を予め定め、演算ユニット100、101は、このZを越えない範囲で、ぞれぞれの演算回路を複数個直列に配列することができる。最大論理ゲート段数Zは、半導体装置1のクロック周波数に応じて定められる値であって、クロック信号の周期内で処理可能な論理ゲート段数である。
【0041】
記憶部11は、演算部12が演算処理に用いるデータや、演算部12の演算処理の中間結果および演算処理の最終結果を保持する。演算部12の演算処理に用いるデータは、外部装置50から転送され書き込まれてもよい。演算部12は、記憶部11に保持された演算処理の中間結果を、再度入力として用い、複数クロックサイクルに渡って演算処理を継続してもよい。記憶部11に保持された演算部12の演算処理の最終結果は、外部装置50により読み出されてもよい。
【0042】
図5は、記憶部11の詳細な内部構成を示す。記憶部11は、記憶ユニット110、111を備える。リード・ライト制御情報は、記憶ユニット110、111に対するリードまたはライトを示すアクセス情報と、アドレス情報とを有する。記憶ユニット110、111において、リードを示すアクセス情報が入力されると、アドレス情報で指定される領域に保持されたデータが、読み出される。ライトを示すアクセス情報が入力されると、アドレス情報で指定される領域に、演算ユニット100、101の演算結果が書き込まれる。
【0043】
記憶部11は、外部装置50からの読み出し要求を受けると、クロック信号に同期して、指示されたアドレスからデータを読み出し、外部装置50に出力する。記憶部11は、外部装置50からの書き込み要求を受けると、外部装置50から送られたデータを、クロック信号に同期して、指示されたアドレスに書き込む。
【0044】
記憶部11は、クロック信号と、制御部13からのリード・ライト制御情報と、演算部12からの演算結果とを入力とし、リード・ライト制御情報がリードを示すアクセス情報を含む場合、クロック信号に同期してデータを読み出し、演算部12に転送する。また、リード・ライト制御情報が、ライトを示すアクセス情報を含む場合、演算部12から転送された演算結果がクロック信号に同期して書き込まれる。
【0045】
なお、外部装置50と、制御部13および演算部12とが同時に記憶部11へアクセスした場合、記憶部11への複数のアクセスを調停するためのハードウェアを用意し、動的に競合するアクセスを回避してもよい。また、このような機構は設けず、ソフトウェアによりアクセスの競合が起こらないように静的に制御してもよい。
【0046】
ここで、図1に示す実施例1の半導体装置1の動作フローを、図面を用いて説明する。図6は、半導体装置1において、ある演算処理を実行する際のシーケンス図である。まず、制御部13には、外部装置50から演算処理を制御するための制御情報が入力され(S1)、制御情報の解釈などの制御処理を行う(S2)。そして、制御部13は、制御処理の結果、第1の演算制御情報と第2の演算制御情報とリード・ライト制御情報とを出力する。そして、制御部13は、第1の演算制御情報を演算ユニット100に出力し、第2の演算制御情報を演算ユニット101に出力し、リード・ライト制御情報を記憶部11に出力する(S3)。記憶部11は、リード・ライト制御情報に従って、演算ユニット100の演算処理に必要となる第1のデータと演算ユニット101の演算処理に必要となる第2のデータの読み出しを行い、第1のデータを演算ユニット100の演算回路1000Aに出力し、第2のデータを演算回路1001に出力する(S4)。演算回路1000Aは、第1のデータを入力として受け取り、第1の演算制御情報によって規定される演算処理を実行し(S5)、演算結果を演算回路1000Bに出力する(S6)。演算回路1000Bは、演算回路1000Aの出力を入力として受け取り、第1の演算制御情報によって規定される演算処理を実行する(S7)。同様に、演算回路1001は、第2のデータを入力として受け取り、第2の演算制御情報により規定される演算処理を実行する(S8)。ここで、S5とS7で行うそれぞれの処理は、S8で行う処理と比べて簡易であり、S5とS7で行なう処理の処理時間の合計は、S8で行う処理の合計と比べて短い。このため、演算ユニット101でS8が行われている間に、演算ユニット100ではS5とS7を行うことができる。演算回路1000Bは、演算結果(第1の演算結果と称する。)を記憶部11に対して出力し、演算回路1001は、演算結果(第2の演算結果と称する。)を記憶部11に対して出力し(S9)、リード・ライト制御情報に従って、第1の演算結果と、第2の演算結果それぞれが記憶部11に書き込まれる。また、次に実行すべき処理が存在する場合は制御部13は、外部装置50より次に実行する演算処理に対する制御情報を入力として受け取り(S10)、制御情報の解釈などの制御処理を行う(S11)ことで処理時間を短縮することができる。なお、本実施例では、S3〜S11は、単一のクロックサイクルの間に実行される(単一のクロックサイクルの間に実行できる処理を、図6に点線で示した。)。
【0047】
このような構造をとることで、2つの単純な演算処理を組み合わせて実現するような演算処理を、複数のクロックサイクルに分けることなく、1クロックサイクルで実行することが可能となるため、低い消費電力で効率良く演算処理を実行することができる。また、複雑度の低い演算を処理する演算ユニットと、複雑度の高い演算を処理する演算ユニットとを設け、複雑度の低い演算を処理する演算ユニットでは、予め定める最大論理ゲート段数Zの範囲で、論理ゲート段数の低い演算回路を多段で接続する構成をとることにより、各種の演算処理の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、予め定める最大論理ゲート段数Zの範囲で演算ユニットを構成することから、半導体装置1の動作するクロック周波数を一定値に保証することが可能となる。
【0048】
なお、前述した半導体装置1の動作フローにおいて、S3で、制御部13は、演算制御情報として第1の演算制御情報と第2の演算制御情報とを出力すると説明した。しかしながら、制御部13は、第1の演算制御情報、第2の演算制御情報のいずれか一方のみを出力することとしても良い。この場合、演算ユニット100、演算ユニット101のいずれか一方のみが動作することとしても良い。
【0049】
次に、記憶部11の内部構成のより詳細な構成の例を説明する。
【0050】
図5に示すように、記憶部11は、演算ユニット100が参照するデータ(第1のデータ)を保持する記憶ユニット110と演算ユニット101が参照するデータ(第2のデータ)を保持する記憶ユニット111を備える。
【0051】
記憶ユニット110の出力は、演算ユニット100の入力に接続され、記憶ユニット111の出力は、演算ユニット101の入力に接続されている。
【0052】
演算ユニット100は、制御部13から記憶ユニット110に入力されるリード・ライト制御情報に従って、記憶ユニット110の第1のデータを参照することができる。一方、演算ユニット101は、制御部13から記憶ユニット111に入力されるリード・ライト制御情報に従って、記憶ユニット111の第2のデータを参照することができる。このように、演算ユニット毎に対応する記憶ユニットを設けることにより、各演算ユニットは、独立して同時にデータを参照することができ、各演算ユニットが、並列に処理を行うことができる。
【0053】
また、演算ユニット100及び101それぞれの出力は、記憶ユニット110及び111の両方の入力に接続されている。
【0054】
このような構成であるため、演算ユニット100は、制御部13から記憶部11に入力されるリード・ライト制御情報に従って、演算ユニット100の演算処理の結果である第1の演算結果を、記憶ユニット110、111のいずれか一方、もしくはその両方に書き込むことができる。また、演算ユニット101は、制御部13から記憶部11に入力されるリード・ライト制御情報に従って、演算ユニット101の演算処理の結果である第2の演算結果を、記憶ユニット110、111のいずれか一方、もしくはその両方に書き込むことができる。
【0055】
このように、演算ユニット100及び演算ユニット101の演算結果を、記憶ユニット110及び記憶ユニット111両方に書き込むことができるため、演算ユニット100は、演算ユニット101の演算結果を用いた演算処理を行うことができ、演算ユニット101は、演算ユニット100の演算結果を用いた演算処理を行うことができる。演算ユニット100、101の間でデータの受け渡しが可能となり、より柔軟な演算処理の実現が可能となる。
【0056】
なお、記憶ユニット100、101では、同時に書き込むことのできる情報の数は限定しない。よって、入力された演算ユニット100、101の演算結果の両方を、同時に書き込んでもよいし、セレクタを設けてどちらか一方を選択して書き込むようにしても構わない。
【0057】
図7は、記憶部11の内部構成の変形例を示す図である。図7の記憶部11は、1つの記憶ユニット120を備える構成である。
【0058】
記憶ユニット120は、演算ユニット100が参照するデータ(第1のデータ)と演算ユニット101が参照するデータ(第2のデータ)を保持する。
【0059】
また、演算ユニット100及び101それぞれの入力及び出力は、記憶ユニット120に接続されている。
【0060】
演算ユニット100は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、記憶ユニット110の第1のデータを参照することができる。一方、演算ユニット101は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、記憶ユニット120の第2のデータを参照することができる。
【0061】
また、演算ユニット100は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、演算ユニット100の演算処理の結果である第1の演算結果を、記憶ユニット120に書き込むことができる。また、演算ユニット101は、制御部13から記憶ユニット120に入力されるリード・ライト制御情報に従って、演算ユニット101の演算処理の結果である第2の演算結果を、記憶ユニット120に書き込むことができる。
【0062】
このように、記憶ユニット120を、演算ユニット100、101で共有するため、記憶部の面積と消費電力を削減することができる。
【0063】
また、演算ユニット100及び演算ユニット101の演算結果を、1つの共有する記憶ユニット120に書き込むことができるため、演算ユニット100は、演算ユニット101の演算結果を用いた演算処理を行うことができ、演算ユニット101は、演算ユニット100の演算結果を用いた演算処理を行うことができる。演算ユニット100、101の間でデータの受け渡しが可能となり、より柔軟な演算処理の実現が可能となる。
【0064】
図8は、演算部12の内部構成の変形例を示す図である。図8の演算部12は、更に、演算ユニット100、101の演算結果のいずれかを選択するセレクタ102を更に有している。
【0065】
演算ユニット100、101の出力は、セレクタ102と接続されている。セレクタ102の出力は、記憶ユニット110及び記憶ユニット111に接続されている。
【0066】
演算ユニット100は、制御部13から記憶ユニット110に入力されるリード・ライト制御情報に従って、記憶ユニット110の第1のデータを参照することができる。一方、演算ユニット101は、制御部13から記憶ユニット111に入力されるリード・ライト制御情報に従って、記憶ユニット111の第2のデータを参照することができる。このように、演算ユニット毎に対応する記憶ユニットを設けることにより、各演算ユニットは、独立して同時にデータを参照することができ、各演算ユニットが、並列に処理を行うことができる。
【0067】
一方、演算ユニット100及び101それぞれの出力は、セレクタ102に出力される。
【0068】
セレクタ102は、制御部13からの演算制御情報に含まれる演算結果選択信号と、演算ユニット100、101の演算結果とを入力とし、演算結果選択信号によって指定される演算結果のいずれか一方を選択して、記憶ユニット110及び記憶ユニット111のいずれか一方、又は両方に出力する。
【0069】
記憶ユニット110、111はそれぞれ制御部13からのリード・ライト制御情報と、セレクタ102の出力とを入力とし、リード・ライト制御情報に従い、セレクタ102の出力を書き込む。
【0070】
演算部12の内部構成をこのような構成とすることで、演算部12の演算ユニット100、101のいずれか一方の演算処理のみが有効となり、有効とならない演算ユニットの信号遷移を停止させることで電力消費を低減することができる。
【0071】
図9は、図7の記憶部11の内部構成と図8の演算部12の構成を組み合わせた場合の例を示す図である。
【0072】
即ち、記憶部11は、1つの記憶ユニット120を備える構成であり、演算部12は、セレクタ102を備える構成である。
【0073】
記憶ユニット120は、演算ユニット100、101それぞれの入力に接続されている。演算ユニット100、101の出力は、セレクタ102と接続されている。セレクタ102の出力は、記憶ユニット120に接続されている。
【0074】
以下では、記憶部11を図7のような内部構成とした場合の動作を説明する。
【0075】
記憶ユニット120は、制御部13からのリード・ライト制御情報に従って、データを読み出し、演算ユニット100、演算ユニット101に出力する。データは、演算ユニット100、演算ユニット101それぞれ毎に異なるデータを出力しても良いし、同一のデータを出力しても良い。
【0076】
演算部12は、演算ユニット100、101の演算結果をセレクタ102に出力する。セレクタ102は、制御部13からの制御情報に含まれる演算結果選択信号と、演算ユニット100、101の演算結果とを入力とし、演算結果選択信号によって指定される演算結果のいずれか一方を選択して出力する。記憶ユニット120は、制御部13からのリード・ライト制御情報と、セレクタ102の出力とを入力とし、リード・ライト制御情報に従い、セレクタ102の出力を書き込む。
【0077】
記憶部11及び演算部12の内部構成をこのような構成とすることで、演算部12の演算ユニット100、101のいずれか一方の演算処理のみが有効となり、有効とならない演算ユニットの信号遷移を停止させることで電力消費を低減することができる。また、記憶ユニット120を、演算ユニット100、101で共有するため、記憶部の面積と消費電力を削減することができる。
【0078】
尚、実施例1で示す演算部12ではデータや、演算の途中結果、最終結果などを、一時的に記憶するレジスタをもたない構成をとるが、クリティカルパス削減のため、前サイクルに出力した結果を保持するプリフェッチ用のレジスタを備える構成もとって良い。
【実施例2】
【0079】
本発明の第2の実施例に係る半導体装置2は、図1の半導体装置1と同様に、処理部10と記憶部11とを備え、外部装置50と接続されている。処理部10は、演算部12と、制御部13とを備える。半導体装置2は、一定のクロック周波数のクロック信号と同期して演算処理を行うものとする。
【0080】
図10は、本発明の第2の実施例に係る半導体装置2の演算部12と記憶部11の詳細な構成を示す図である。
【0081】
図10に示すように、演算部12は、実施例1の半導体装置1と異なり、出力生成ユニット20を更に備える構成である。その他の構成は、実施例1の半導体装置1の構成と同様な構成である。記憶部11は、図7及び図9の構成と同様に、記憶ユニット120を1つ備える構成である。
【0082】
演算部12は、記憶部11からデータを受け取り、制御部13から演算制御情報を受け取ると、演算制御情報が有効である場合に、演算制御情報に従って、データに対して演算処理を行い、演算結果(出力データ)を記憶部11へと出力する。
【0083】
演算部12は演算ユニット100と、演算ユニット101とを備える。演算ユニット100は演算回路1000Aと、演算回路1000Bとを備える。
【0084】
演算ユニット100と、演算ユニット101とはそれぞれ記憶部11から第1のデータ、第2のデータを受け取ると、演算処理を実行し、第1の演算結果と、第2の演算結果とを出力生成ユニット20へと出力する。
【0085】
出力生成ユニット20は、演算ユニット100から入力される第1の演算結果と、演算ユニット101から入力される第2の演算結果とを入力とし、演算制御情報に従い、記憶部11へ出力する演算結果(出力データ)を生成する。
【0086】
出力生成ユニット20は、演算ユニット100から入力される第1の演算結果と、演算ユニット101から入力される第2の演算結果と、の一方のみを演算結果(出力データ)として出力しても良いし、その両方を出力しても良い。
【0087】
出力生成ユニット20は、例えば、一方の演算結果(例えば、第1の演算結果)が真の場合、もう一方の演算結果(例えば、第2の演算結果)を出力し、一方の演算結果(例えば、第1の演算結果)が偽の場合は、第1の演算結果と第2の演算結果の何も出力しないというように、一方の演算結果を条件として出力内容を変更しても良い。このように、一方の演算結果を条件として、出力内容を変更する処理として、条件分岐処理がある。
【0088】
条件分岐処理として、例えば、If文(If〜then〜Else〜IfEnd)を行う処理がある。If文は、分岐条件が「真」のときは「Then」以降の処理を行い、「偽」のときは、「Else」以降の処理を行う命令である。その書式は「If条件 Then 真の時の処理 IfEnd」である。このIf文の終了コマンドは「IfEND」である。
【0089】
本実施例の半導体装置2が、条件分岐処理を行う場合、例えば、第1の演算結果を分岐条件が「真」であるか「偽」であるかを判定するために用いて、第2の演算結果を、分岐条件が「真」のときの処理である「Then」以降の処理結果として用いるものとする。そして、「偽」のときの処理である「Else」以降の処理を「何も行わない」ものとする。この場合、出力生成ユニット20は、第1の演算結果から分岐条件が「真」か「偽」かを判定し、分岐条件が「真」であると判定した場合は、第2の演算結果を出力し、分岐条件が「偽」であると判定した場合は、第1の演算結果と第2の演算結果いずれも出力しない。
【0090】
このように、本実施例の半導体装置2によれば、分岐条件が「真」であるか「偽」であるかを判定するための処理と、分岐条件が「真」である場合に実行する処理とを同時に処理することにより、条件分岐処理のスピード向上を達成することができる。
【0091】
また、以上の例では、第1の演算結果が「真」の場合、第2の演算結果を出力すると説明したが、第1の演算結果、第2の演算結果両方を出力することとしても良い。また、第2の演算結果を分岐条件の判定のために用いて、第2の演算結果から「真」と判定できた場合、第1の演算結果を出力することとしてもよい。
【0092】
また、第1の演算結果が「偽」であると判定した場合、第1の演算結果と第2の演算結果いずれも出力しないとしたが、第1の演算結果を出力してもよい。
【0093】
また、第1の演算結果が「偽」であると判定した場合、第2の演算結果を出力し、第1の演算結果が[真]であると判定した場合、第1の演算結果と第2の演算結果いずれも出力しないとしてもよい。
【0094】
また、第1の演算結果が「真」である場合、第1の演算結果を出力し、第1の演算結果が「偽」である場合、第2の演算結果を出力することとしても良い。
【0095】
尚、以上の例では、一方の演算結果を条件として、出力内容を変更する処理として、条件分岐処理を例として説明したが、条件分岐処理に限られない。例えば、複数の演算部を備える構成において、それぞれの演算部で別の条件の際の処理を実行し、条件結果に応じて一つの結果のみを記憶部へと書き戻すといった方法がある。このように、条件判定処理を複数の演算部で実行することで、条件判定に要するサイクルを削減することができる。
【0096】
尚、演算ユニット100と演算ユニット101は、出力生成ユニット20が出力する内容に従い、いずれか一方のみが動作しても良いし、二つのユニットが同時に動作しても良い。例えば、出力生成ユニット20が演算ユニット100、演算ユニット101のどちらか一方の演算結果のみを出力する場合は、演算結果を出力しない演算ユニットに対して演算制御情報を送らず、動作を停止させてもよい。このようにすることで構成情報や、消費電力を削減することができる。
【0097】
また、実施例2の半導体装置によれば、実施例1の半導体装置と同様な効果を達成することができる。
【実施例3】
【0098】
図11は、本発明の第3の実施例に係る半導体装置の構成を示す図である。
【0099】
図11に示すように、実施例3の半導体装置3は、実施例1の半導体装置と比べて、制御部13の構成をより具体的に示した構成である
制御部13は、演算制御情報記憶部14Aとリード・ライト制御情報記憶部14Bとポインタ通知部14Cとを備える構成である。
【0100】
ポインタ通知部14Cは、演算制御情報記憶部14Aに対して第1参照ポインタを通知し、リード・ライト制御情報記憶部14Bに対して第2参照ポインタを通知する。また、ポインタ通知部14Cは、開始制御信号を演算部12に通知する。演算部12は、開始制御信号を受け取ると、演算処理の実行を開始する。
【0101】
リード・ライト制御情報記憶部14Aは、予め外部装置50から演算制御情報を受け取り記憶しておくことができる。そして、ポインタ通知部14Cが出力する第1参照ポインタを受けると、第1参照ポインタにしたがって、演算制御情報を演算部12に通知する。
【0102】
リード・ライト制御情報記憶部14Bは、予め外部装置50からリード・ライト制御情報を受け取り記憶しておく。そして、ポインタ通知部14Cが出力する第2参照ポインタを受け取ると、第2参照ポインタにしたがって、リード・ライト制御情報を記憶部11に通知する。
【0103】
実施例3の半導体装置によれば、外部装置50からの演算制御情報、リード・ライト制御情報を、それぞれ演算制御情報記憶部14A、リード・ライト制御情報記憶部14Bに予めまとまった量の制御情報を転送しておくことができ、適当なタイミングで演算制御情報とリード・ライト制御情報を演算部12及び記憶部11に通知できる。
【0104】
また、実施例3の半導体装置によれば、実施例1の半導体装置と同様な効果を達成することができる。
【実施例4】
【0105】
図12に、本発明の第4の実施例に係る半導体装置の構成を示す。実施例4の半導体装置4は、実施例1の半導体装置1と異なり、処理部10が2つの演算部12Aと12Bを備える。
【0106】
演算部12Aと演算部12Bは、実施例1で説明した演算部12の図4の構成と同様の構成である。演算部12Aと演算部12Bの内部構成の図示は省略し、図4の各構成要素の符号を置き換えて説明する。
【0107】
演算部12Aは、2つの演算ユニット100A及び101Aを備えている。
【0108】
演算ユニット100A、101Aは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0109】
演算ユニット100Aは、遅延指標m1、・・・、mM(m1、・・・、mMは、自然数であり、かつ1以上k未満の値。)の第1乃至第M(Mは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Aは、遅延指標n1、・・・、nN(n1、・・・、nNは、自然数であり、かつk以上の値。)の第1乃至第N(Nは、1以上の整数であって、N<M)の演算回路を備える構成である。
【0110】
ただし、演算ユニット100Aが備える演算回路の遅延指標の和(m1+・・・+mM)と、演算ユニット101Aが備える演算回路の遅延指標の和(n1+・・・+nN)とは、基準値Z以下である。例えば、演算ユニット100Aが備える演算回路の遅延指標の和(m1+・・・+mM)から定められる遅延時間と、演算ユニット101Aが備える演算回路の遅延指標の和(n1+・・・+nN)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0111】
また、演算部12Bは、2つの演算ユニット100B及び101Bを備えている。
【0112】
演算ユニット100B、101Bは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0113】
また、演算ユニット100Bは、遅延指標r1、・・・、rR(r1、・・・、rRは、自然数であり、かつ1以上j(jは1以上の整数。)未満の値。)の第1乃至第R(Rは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Bは、遅延指標s1、・・・、sS(s1、・・・、sSは、自然数であり、かつj以上の値。)の第1乃至第S(Sは、1以上の整数であって、S<R)の演算回路を備える構成である。
【0114】
ただし、演算ユニット100Bが備える演算回路の遅延指標の和(r1+・・・+rR)と、演算ユニット101Bが備える演算回路の遅延指標の和(s1+・・・+sS)とは、基準値Z以下である。例えば、演算ユニット100が備える演算回路の遅延指標の和(r1+・・・+rR)から定められる遅延時間と、演算ユニット101が備える演算回路の遅延指標の和(s1+・・・+sS)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0115】
本実例の半導体装置4において、制御部13は、外部装置50から制御情報を受け取ると、開始制御信号とともに、演算部12Aに対して、第1の演算制御情報と第2の演算制御情報を通知し、演算部12Bに対して、第3の演算制御情報と第4の演算制御情報を通知する。演算部12Aは、開始制御信号を受け取ると、演算ユニット100Aが、記憶部11から読み出したデータに対して、第1の演算制御情報に規定される演算処理を行い、演算ユニット101Aが、記憶部11から読み出したデータに対して、第2の演算制御情報に規定された演算処理を行う。また、演算部12Bも、開始制御信号を受け取ると、演算ユニット100Bが、記憶部11から読み出したデータに対して、第3の演算制御情報に規定される演算処理を行い、演算ユニット101Bが、記憶部11から読み出したデータに対して、第4の演算制御情報に規定された演算処理を行う。また、演算ユニット100A、演算ユニット101A、演算ユニット100B及び演算ユニット101Bは、それぞれ演算処理を実行した出力である演算結果を記憶部11へと出力する。
【0116】
尚、半導体装置4は、処理部10が3つ以上の演算部を備える構成としてもよい。この場合でも、各演算部が備える演算ユニットの演算回路の遅延指標の和が基準値Zを越えない範囲である構成とする。
【0117】
本実施例の半導体装置4によれば、各々の演算部が、複雑度の低い演算を処理する演算ユニットと、複雑度の高い演算を処理する演算ユニットとを備え、複雑度の高い演算を処理する演算ユニットと複雑度の高い演算を処理する演算ユニットとが、それぞれ異なる数の演算回路を備える構成とすることにより、各種の演算命令の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、各演算部は、予め定める遅延指標Zの範囲で演算ユニットを構成することから、半導体装置の動作するクロック周波数を保証することが可能となる。
【実施例5】
【0118】
図13に、本発明の第5の実施例に係る半導体装置の構成を示す。実施例5の半導体装置5は、実施例1の半導体装置1と異なり、2つの処理部(処理部10Cと10D)を備える。
【0119】
処理部10Cと処理部10Dは、図1で示した処理部10と同様の構成である。処理部10Cと処理部10Dの内部構成の図示は省略し、図1の各構成要素の符号を置き換えて説明する。
【0120】
処理部10Cは、制御部13Cと演算部12Cを備える構成である。
【0121】
演算部12Cは、2つの演算ユニット100C及び101Cを備えている。演算部12Cは、図4で示した演算部12と同様の構成である。演算部12Cの図示は省略し、図4の各構成要素の符号を置き換えて説明する。
【0122】
演算ユニット100C、101Cは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0123】
演算ユニット100Cは、遅延指標m1、・・・、mM(m1、・・・、mMは、自然数であり、かつ1以上k未満の値。)の第1乃至第M(Mは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Dは、遅延指標n1、・・・、nN(n1、・・・、nNは、自然数であり、かつk以上の値。)の第1乃至第N(Nは、1以上の整数であって、N<M)の演算回路を備える構成である。
【0124】
ただし、演算ユニット100Cが備える演算回路の遅延指標の和(m1+・・・+mM)と、演算ユニット101Cが備える演算回路の遅延指標の和(n1+・・・+nN)とは、基準値Z以下である。例えば、演算ユニット100Cが備える演算回路の遅延指標の和(m1+・・・+mM)から定められる遅延時間と、演算ユニット101Cが備える演算回路の遅延指標の和(n1+・・・+nN)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0125】
また、演算部12Dは、2つの演算ユニット100D及び101Dを備えている。
【0126】
演算ユニット100D、101Dは、直接に接続される演算回路の遅延指標の和が基準値Zを越えない範囲で、演算回路を複数個直列に配列することができる。
【0127】
処理部10Dは、制御部13Dと演算部12Dを備える構成である。演算部12Dは、図4で示した演算部12と同様の構成である。演算部12Dの図示は省略し、図4の各構成要素の符号を置き換えて説明する。
【0128】
演算部12Dは、2つの演算ユニット100D及び101Dを備えている。
【0129】
また、演算ユニット100Dは、遅延指標t1、・・・、tT(t1、・・・、tTは、自然数であり、かつ1以上h(hは1以上の整数。)未満の値。)の第1乃至第T(Tは、2以上の整数)の演算回路を備えていて、かつ演算ユニット101Dは、遅延指標u1、・・・、uU(u1、・・・、uUは、自然数であり、かつh以上の値。)の第1乃至第U(Uは、1以上の整数であって、U<T)の演算回路を備える構成である。
【0130】
ただし、演算ユニット100Dが備える演算回路の遅延指標の和(t1+・・・+tT)と、演算ユニット101Dが備える演算回路の遅延指標の和(u1+・・・+uU)とは、基準値Z以下である。例えば、演算ユニット100が備える演算回路の遅延指標の和(t1+・・・+tT)から定められる遅延時間と、演算ユニット101が備える演算回路の遅延指標の和(u1+・・・+uU)から定められる遅延時間とは、クロック信号の周期(基準値Z)以下であればよい。
【0131】
本実施例の半導体装置5において、制御部13Cは、外部装置50から第1の制御情報を受け取ると、開始制御信号とともに、演算部12Cに対して、第1の演算制御情報と第2の演算制御情報を通知する。制御部13Dは、外部装置50から第2の制御情報を受け取ると、開始制御信号とともに、演算部12Dに対して、第5の演算制御情報と第6の演算制御情報を通知する。演算部12Cは、開始制御信号を受け取ると、演算ユニット100Cが、記憶部11から読み出したデータに対して、第1の演算制御情報に規定される演算処理を行い、演算ユニット101Cが、記憶部11から読み出したデータに対して、第2の演算制御情報に規定された演算処理を行う。また、演算部12Dも、開始制御信号を受け取ると、演算ユニット100Dが、記憶部11から読み出したデータに対して、第5の演算制御情報に規定される演算処理を行い、演算ユニット101Dが、記憶部11から読み出したデータに対して、第6の演算制御情報に規定された演算処理を行う。また、処理部10C及び処理部10Dは、演算処理を実行した出力である演算結果を記憶部11へと出力する。
【0132】
尚、処理部10C、10Dはそれぞれ演算部を複数備える構成としてもよい。
【0133】
また、半導体装置5は、処理部を3つ以上備える構成としてもよい。この場合でも、各処理部が備える演算部の演算ユニットの演算回路の遅延指標の和が基準値Zを越えない範囲である構成とする。
【0134】
本実施例の半導体装置5によれば、各々の処理部の各演算部が、複雑度の低い演算を処理する演算ユニットと、複雑度の高い処理をする演算ユニットとを備え、複雑度の高い処理をする演算ユニットと複雑度の低い処理をする演算ユニットとが、異なる数の演算回路を備える構成とすることにより、各種の演算命令の実行時間のバランスをとり、演算器の利用効率を向上することができる。また、各処理部の各演算部は、予め定める遅延指標Zの範囲で演算ユニットを構成することから、半導体装置4の動作するクロック周波数を保証することが可能となる。
【0135】
なお、本発明は上記実施例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施例に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施例にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0136】
1、2、3、4、5・・・半導体装置、50・・・外部装置、13・・・制御部、12、12A、12B・・・演算部、11・・・記憶部、10、10C、10D・・・処理部、100・・・演算ユニット、101・・・演算ユニット、102・・・セレクタ、14A・・・演算制御情報記憶部、14B・・・リード・ライト制御情報記憶部、14C・・・ポインタ通知部、1000A、1000B、1001、1000M1〜1000MM、1000N1〜1000NN・・・演算回路、2000A、2000B・・・論理演算器、2001A、2001B・・・算術演算器、110、111、120・・・記憶ユニット、20・・・出力生成ユニット。
【特許請求の範囲】
【請求項1】
クロック信号に同期して演算処理を実行する半導体装置であって、
各演算回路が実行する演算を制御するための第1の演算制御情報と第2の演算制御情報とを出力する制御部と、
第1のデータと第2のデータとを記憶する記憶部と、
前記クロック信号に同期して動作し、前記第1の演算制御情報に従って、前記第1のデータに対して演算処理を行い、第3のデータを出力する第1の演算ユニットと、
前記クロック信号に同期して動作し、前記第2の演算制御情報に従って、前記第2のデータに対して演算処理を行い、第4のデータを出力する第2の演算ユニットとを備え、
前記第1の演算ユニットは、直列に接続された第1乃至第M(Mは、2以上の整数)の演算回路を備え、
前記第m+1(mは、1以上M−1以下の整数)段の演算回路は、前記第m段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第1乃至第Mの演算回路の遅延量を示す遅延指標は、それぞれ、m1、・・・、mM(m1、・・・、mMは、自然数)であって、
前記第2の演算ユニットは、遅延量を示す遅延指標がn(nは1以上の整数)の演算回路を少なくとも備え、
前記第1の演算ユニットが備える演算回路の遅延指標の和(m1+・・・+mM)によって定められる遅延時間と、前記第2の演算ユニットが備える演算回路の遅延指標nによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下であることを特徴とする半導体装置。
【請求項2】
前記記憶部は、前記第1の演算ユニットが演算処理を行うデータを記憶する第1の記憶ユニットと、前記第2の演算ユニットが演算処理を行うデータを記憶する第2の記憶ユニットとを備え、
前記第1の演算ユニットは、前記第1の記憶ユニットに記憶されるデータを読み出し、前記第3のデータを前記第1の記憶ユニットと前記第2の記憶ユニットのどちらか一方、もしくは両方に書き込み、
前記第2の演算ユニットは、前記第2の記憶ユニットに記憶されるデータを読み出し、前記第4のデータを前記第1の記憶ユニットと前記第2の記憶ユニットのどちらか一方、もしくは両方に書き込むことを特徴とする
請求項1記載の半導体装置。
【請求項3】
前記記憶部は、前記第1の演算ユニット及び前記第2の演算ユニットが演算処理を行うデータを記憶する記憶ユニットを備えるものであり、
前記第1の演算ユニットの演算結果と前記第2の演算ユニットの演算結果との双方が入力可能であって、前記第3のデータと前記第4のデータのいずれか一方を選択するセレクタをさらに備え、
前記セレクタによって選択された一方が前記記憶部に書き込まれることを特徴とする
請求項1記載の半導体装置。
【請求項4】
前記制御部は、第3の演算制御情報と第4の演算制御情報とを出力し、
前記記憶部は、第5のデータと第6のデータとを記憶し、
前記クロック信号に同期して動作し、前記第3の演算制御情報に従い、前記第5のデータに対して演算処理を行い、第7のデータを出力する第3の演算ユニットと、
前記クロック信号に同期して動作し、前記第4の演算制御情報に従い、前記第6のデータに対して演算処理を行い、第8のデータを出力する第4の演算ユニットとをさらに備え、
前記第3の演算ユニットは、直列に接続された第1乃至第R(Rは、2以上の整数)の演算回路を備え、
前記第r+1(rは、1以上R−1以下の整数)段の演算回路は、前記第r段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第1乃至第Rの演算回路の遅延量を示す遅延指標は、それぞれ、r1、・・・、rR(r1、・・・、rRは、自然数)であって、
前記第4の演算ユニットは、遅延量を示す遅延指標がs(sは1以上の整数)の演算回路を少なくとも備え、
前記第3の演算ユニットが備える演算回路の遅延指標の和(r1+・・・+rR)によって定められる遅延時間と、前記第4の演算ユニットが備える演算回路の遅延指標sとによって定められる遅延時間は、それぞれ、前記クロック信号の周期以下である
ことを特徴とする請求項1記載の半導体装置。
【請求項5】
前記記憶部は、第9のデータと第10のデータとを記憶し、
各演算回路が実行する演算を制御するための第5の演算制御情報と第6の演算制御情報とを出力する第2の制御部と、
前記クロック信号に同期して動作し、前記第5の演算制御情報に従って、前記第9のデータに対して演算処理を行い、第11のデータを出力する第5の演算ユニットと、
前記クロック信号に同期して動作し、前記第6の演算制御情報に従って、前記第10のデータに対して演算処理を行い、第12のデータを出力する第6の演算ユニットとをさらに備え、
前記第5の演算ユニットは、直列に接続された第1乃至第T(Tは、2以上の整数)の演算回路を備え、
前記第t+1(tは、1以上T−1以下の整数)段の演算回路は、前記第t段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第1乃至第Tの演算回路の遅延量を示す遅延指標は、それぞれ、t1、・・・、tT(t1、・・・、tTは、自然数)であって、
前記第6の演算ユニットは、遅延量を示す遅延指標がu(uは1以上の整数)の演算回路を少なくとも備え、
前記第5の演算ユニットが備える演算回路の遅延指標の和(t1+・・・+tT)によって定められる遅延時間と、前記第6の演算ユニットが備える演算回路の遅延指標uによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下である
ことを特徴とする請求項1記載の半導体装置。
【請求項1】
クロック信号に同期して演算処理を実行する半導体装置であって、
各演算回路が実行する演算を制御するための第1の演算制御情報と第2の演算制御情報とを出力する制御部と、
第1のデータと第2のデータとを記憶する記憶部と、
前記クロック信号に同期して動作し、前記第1の演算制御情報に従って、前記第1のデータに対して演算処理を行い、第3のデータを出力する第1の演算ユニットと、
前記クロック信号に同期して動作し、前記第2の演算制御情報に従って、前記第2のデータに対して演算処理を行い、第4のデータを出力する第2の演算ユニットとを備え、
前記第1の演算ユニットは、直列に接続された第1乃至第M(Mは、2以上の整数)の演算回路を備え、
前記第m+1(mは、1以上M−1以下の整数)段の演算回路は、前記第m段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第1乃至第Mの演算回路の遅延量を示す遅延指標は、それぞれ、m1、・・・、mM(m1、・・・、mMは、自然数)であって、
前記第2の演算ユニットは、遅延量を示す遅延指標がn(nは1以上の整数)の演算回路を少なくとも備え、
前記第1の演算ユニットが備える演算回路の遅延指標の和(m1+・・・+mM)によって定められる遅延時間と、前記第2の演算ユニットが備える演算回路の遅延指標nによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下であることを特徴とする半導体装置。
【請求項2】
前記記憶部は、前記第1の演算ユニットが演算処理を行うデータを記憶する第1の記憶ユニットと、前記第2の演算ユニットが演算処理を行うデータを記憶する第2の記憶ユニットとを備え、
前記第1の演算ユニットは、前記第1の記憶ユニットに記憶されるデータを読み出し、前記第3のデータを前記第1の記憶ユニットと前記第2の記憶ユニットのどちらか一方、もしくは両方に書き込み、
前記第2の演算ユニットは、前記第2の記憶ユニットに記憶されるデータを読み出し、前記第4のデータを前記第1の記憶ユニットと前記第2の記憶ユニットのどちらか一方、もしくは両方に書き込むことを特徴とする
請求項1記載の半導体装置。
【請求項3】
前記記憶部は、前記第1の演算ユニット及び前記第2の演算ユニットが演算処理を行うデータを記憶する記憶ユニットを備えるものであり、
前記第1の演算ユニットの演算結果と前記第2の演算ユニットの演算結果との双方が入力可能であって、前記第3のデータと前記第4のデータのいずれか一方を選択するセレクタをさらに備え、
前記セレクタによって選択された一方が前記記憶部に書き込まれることを特徴とする
請求項1記載の半導体装置。
【請求項4】
前記制御部は、第3の演算制御情報と第4の演算制御情報とを出力し、
前記記憶部は、第5のデータと第6のデータとを記憶し、
前記クロック信号に同期して動作し、前記第3の演算制御情報に従い、前記第5のデータに対して演算処理を行い、第7のデータを出力する第3の演算ユニットと、
前記クロック信号に同期して動作し、前記第4の演算制御情報に従い、前記第6のデータに対して演算処理を行い、第8のデータを出力する第4の演算ユニットとをさらに備え、
前記第3の演算ユニットは、直列に接続された第1乃至第R(Rは、2以上の整数)の演算回路を備え、
前記第r+1(rは、1以上R−1以下の整数)段の演算回路は、前記第r段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第1乃至第Rの演算回路の遅延量を示す遅延指標は、それぞれ、r1、・・・、rR(r1、・・・、rRは、自然数)であって、
前記第4の演算ユニットは、遅延量を示す遅延指標がs(sは1以上の整数)の演算回路を少なくとも備え、
前記第3の演算ユニットが備える演算回路の遅延指標の和(r1+・・・+rR)によって定められる遅延時間と、前記第4の演算ユニットが備える演算回路の遅延指標sとによって定められる遅延時間は、それぞれ、前記クロック信号の周期以下である
ことを特徴とする請求項1記載の半導体装置。
【請求項5】
前記記憶部は、第9のデータと第10のデータとを記憶し、
各演算回路が実行する演算を制御するための第5の演算制御情報と第6の演算制御情報とを出力する第2の制御部と、
前記クロック信号に同期して動作し、前記第5の演算制御情報に従って、前記第9のデータに対して演算処理を行い、第11のデータを出力する第5の演算ユニットと、
前記クロック信号に同期して動作し、前記第6の演算制御情報に従って、前記第10のデータに対して演算処理を行い、第12のデータを出力する第6の演算ユニットとをさらに備え、
前記第5の演算ユニットは、直列に接続された第1乃至第T(Tは、2以上の整数)の演算回路を備え、
前記第t+1(tは、1以上T−1以下の整数)段の演算回路は、前記第t段の演算回路の演算結果に対して、演算処理を行うものであって、
前記第1乃至第Tの演算回路の遅延量を示す遅延指標は、それぞれ、t1、・・・、tT(t1、・・・、tTは、自然数)であって、
前記第6の演算ユニットは、遅延量を示す遅延指標がu(uは1以上の整数)の演算回路を少なくとも備え、
前記第5の演算ユニットが備える演算回路の遅延指標の和(t1+・・・+tT)によって定められる遅延時間と、前記第6の演算ユニットが備える演算回路の遅延指標uによって定められる遅延時間とは、それぞれ、前記クロック信号の周期以下である
ことを特徴とする請求項1記載の半導体装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−242995(P2011−242995A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−114441(P2010−114441)
【出願日】平成22年5月18日(2010.5.18)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願日】平成22年5月18日(2010.5.18)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]