説明

演算処理装置及び並列演算装置

【課題】ALUアレイ回路における電力消費を低減する。
【解決手段】ALUアレイ回路は、ALU12を内包する単位回路10cを複数個備え、複数のALU12を並列動作させる。各単位回路10cでは、命令コードをデコードすることで演算制御信号OpCを生成し、これによってALU12での演算処理の内容を制御する。ALU12の前段にはラッチ素子21及び22が設けられる。ALUアレイ回路に設けられた複数の単位回路10cの内、幾つかの単位回路10c中のALU12の演算動作は時として不要である。或るALU12の演算動作が不要であるとき、命令コードによって生成された演算休止信号(nop)をラッチ素子21及び22に与えて、そのALU12にデータ入力信号AIN及びBINの変化が伝播することを阻止する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、所望の演算を実行する演算処理装置及び並列演算装置に関する。
【背景技術】
【0002】
図20に、ALUアレイ回路902を備えた演算コア901の内部構成図を示す。ALUアレイ回路902は、四則演算や論理演算などを行う、複数段に分けて配列された複数のALU(Arithmetic and Logic Unit)と、各ALUの出力データを保持する保持回路(D型フリップフロップ等)と、前段のALUと後段のALUを接続することで前段のALUの出力データを後段のALUに入力する接続部と、を備える。各ALUは、命令メモリ903から与えられた命令データに応じた演算処理を実行する。ALUアレイ回路902には、ALUを含む単位回路910が複数個備えられている。ALUアレイ回路902に設けられた複数の単位回路910は、互いに同じ構造を有している。
【0003】
図21に、単位回路910の内部構成図の例を示す。図21の単位回路910は、命令メモリ903からの命令データの一種である命令コードを演算制御信号に変換する命令デコーダ911と、演算制御信号に応じた演算処理をデータ入力信号AIN及びBINを用いて行って演算結果データを出力するALU912と、クロック信号に同期してALU912からの演算結果データを保持し、保持データをデータ出力信号Yとして出力するDFF(D型フリップフロップ)913を備える。DFF913は、クロック信号により常時駆動されており、ALU912の演算結果は、1クロック周期分だけ遅れて常にデータ出力信号Yに反映されている。図22は、単位回路910のタイミングチャートである。
【0004】
通常、多数のALUを備えた演算装置において、全てのALUを常時有効に使って意味のある処理を行わせることは困難であり、演算装置内の幾つかのALUの演算動作は時として不要である。或る単位回路910におけるALU912の演算動作が不要な場合、その単位回路910に対して“nop命令”と呼ばれる命令コードが発行される。nop命令に対応するALU912の出力信号は意味のある信号ではない。従って、その出力信号に基づく不用な信号Yは何れの回路にも入力されないように、命令メモリ903内のプログラムは設計される。故に、不用な信号Yが発生したとしても機能上の問題はない。
【0005】
しかしながら、単位回路910では、演算処理が不要な場合においても、データ入力信号AIN及びBINの変化に応じてALU912内の信号も変化するため、電力が無駄に消費される。即ち、nop命令が発行されている期間において、不定な入力信号である“invalid”が信号AIN及びBINとしてALU912に入力されているため、この期間において信号AIN及びBINが変化すれば、その変化に応じてALU912内の組み合わせ回路網の入出力信号が変化する。ALU912内の回路における信号変化は、当然に電力(スイッチングパワー)を消費する。nop命令に対応するデータ出力信号Yは、不要なデータ信号“invalid”として、どこにも利用されることなく捨てられるのであるから、nop命令の発行時における上記の電力消費は無駄である。図22において、中段付近に示された4つの太矢印(入力AIN及びBINの欄部分に付された4つの太矢印)は、ALU912に対するデータ入力信号AIN及びBINの変化部分を表している。
【0006】
また、図22において、下方側に示された4つの太矢印(出力Yの欄部分に付された4つの太矢印)は、データ出力信号Yにおける不必要な変化を表している。この変化を抑制することも電力削減に寄与する。
【0007】
尚、特許文献1には、並列動作可能であって夫々に演算器を内蔵した複数の実行部を備えたデータ処理装置において、並列実行すべき演算処理の個数が実行部の個数よりも少ないとき、動作しない実行部の動作クロック信号を停止する方法が提案されている。この方法では、演算器(特許文献1の図2における演算器10)内の各回路ブロックに対するクロック信号のタイミングを、ANDゲートを用いて調整することで消費電力の抑制を図っている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2001−92661号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述したように、従来の演算装置には電力削減の余地がある。演算装置において、消費電力の抑制が重要であることは言うまでもない。
【0010】
尚、特許文献1の方法によれば、動作しない実行部における2段目以降の回路ブロック(特許文献1の図2におけるブロック12及び13)の入力データ変化が抑止されうるが、初段の回路ブロック(特許文献1の図2におけるブロック11)の入力データ変化を抑止することはできない。また、たとえ2段目以降の回路ブロックであっても、前段の回路ブロック以外から到来する信号の変化に対しては何ら対策が成されない。従って、特許文献1の方法では、各回路ブロック内部の組み合わせ回路部分の消費電力(スイッチングパワー)を十分に抑制することができない。
【0011】
そこで本発明は、消費電力の抑制に寄与する演算処理装置及び並列演算装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明に係る演算処理装置は、演算命令に基づき演算制御信号を生成して出力する信号生成回路と、当該演算処理装置に供給されるデータ入力信号を用いて前記演算制御信号に応じた演算処理を行う演算回路とを備えて、前記演算処理の結果を表すデータ出力信号を出力する演算処理装置において、前記信号生成回路は、前記演算命令に基づき、前記演算回路における前記演算処理の実行を休止させるための演算休止信号をも間欠的に生成して出力し、前記信号生成回路から前記演算休止信号が出力される演算休止期間中において、当該演算処理装置に供給されるデータ入力信号の変化が前記演算回路へ伝達されることを阻止するデータ入力信号保持回路を、当該演算処理装置は更に備えたことを特徴とする。
【0013】
演算休止期間中においてデータ入力信号の変化が演算回路に伝達されると、演算処理の実行が不要であるにも関わらず、演算回路内で信号変化が生じ、その信号変化分の電力が無駄に消費される。上記演算処理装置によれば上記伝達が阻止されるため、電力消費の軽減が図られる。
【0014】
また例えば、前記演算回路から順次出力される信号を順次更新しながら保持する出力保持回路と、前記演算休止期間中において、前記出力保持回路による保持の更新動作の実行を阻止する出力変化阻止回路と、を当該演算処理装置は更に備え、当該演算処理装置から出力される前記データ出力信号は前記出力保持回路より出力される。
【0015】
出力変化素子回路により、演算休止期間中における不要な保持更新動作の実行が抑制され、電力消費の更なる軽減が期待される。
【0016】
具体的には例えば、前記出力変化阻止回路は、当該当該演算処理装置に入力されるクロック信号と前記信号生成回路からの前記演算休止信号に基づきゲーテッドクロック信号を生成し、該ゲーテッドクロック信号を前記出力保持回路に入力することで、前記演算休止期間中において前記出力保持回路による保持の更新動作の実行を阻止する。
【0017】
また具体的には例えば、当該演算処理装置に供給されるデータ入力信号は、前記データ入力信号保持回路を介して前記演算回路に供給され、前記データ入力信号保持回路は、前記演算休止期間の開始時点において当該演算処理装置に供給されたデータ入力信号を保持し、保持したデータ入力信号を、前記演算休止期間中において前記演算回路に供給する。
【0018】
より具体的には例えば、前記信号生成回路からの前記演算休止信号が前記データ入力信号保持回路に入力され、前記データ入力信号保持回路は、入力された前記演算休止信号に基づき、前記演算休止期間の開始時点において当該演算処理装置に供給されたデータ入力信号を保持する。
【0019】
本発明に係る並列演算装置は、上記の演算処理装置を複数備え、前記複数の演算処理装置を並列動作させることを特徴とする。
【発明の効果】
【0020】
本発明によれば、消費電力の抑制に寄与する演算処理装置及び並列演算装置を提供することが可能である。
【0021】
本発明の意義ないし効果は、以下に示す実施の形態の説明により更に明らかとなろう。ただし、以下の実施の形態は、あくまでも本発明の一つの実施形態であって、本発明ないし各構成要件の用語の意義は、以下の実施の形態に記載されたものに制限されるものではない。
【図面の簡単な説明】
【0022】
【図1】本発明の実施形態に係る演算コアの内部ブロック図である。
【図2】図1のALUアレイ回路に設けられる1つの単位回路の基本構成図(a)と、ALUの入出力端子を説明するための図(b)と、クロック信号を説明するための図(c)と、DFFの入出力端子を説明するための図(d)である。
【図3】本発明の実施形態の第1構成例に係る単位回路の内部回路図である。
【図4】マルチプレクサの入出力端子を説明するための図である。
【図5】図3の単位回路におけるタイミングチャート図である。
【図6】本発明の実施形態の第2構成例に係る単位回路の内部回路図である。
【図7】クロックゲートセルの入出力端子を説明するための図(a)と、クロックゲートセルの入出力信号のタイミングチャート図である。
【図8】図6の単位回路におけるタイミングチャート図である。
【図9】本発明の実施形態の第3構成例に係る単位回路の内部回路図である。
【図10】ラッチ素子の入出力信号のタイミングチャート図である。
【図11】図9の単位回路におけるタイミングチャート図である。
【図12】本発明の実施形態の第4構成例に係る単位回路の内部回路図である。
【図13】本発明の実施形態の第5構成例に係る単位回路の内部回路図である。
【図14】命令デコーダの内部構成の第1例を示す図(a)と、それに対応する命令コードの構成、nop用コード及び演算用コードを示す図(b)及び(c)と、第1例の命令デコーダにおけるタイミングチャート図(d)である。
【図15】命令デコーダの内部構成の第2例を示す図(a)と、それに対応する命令コードの構成及び演算用コードを示す図(b)及び(c)と、第2例の命令デコーダにおけるタイミングチャート図(d)である。
【図16】命令デコーダの内部構成の第3例を示す図(a)と、それに対応する命令コードの構成、nop用コード、SEL用コード及び演算用コードを示す図(b)及び(c)と、第3例の命令デコーダにおけるタイミングチャート図(d)である。
【図17】命令デコーダの内部構成の第4例を示す図(a)と、それに対応する命令コードの構成、SEL用コード及び演算用コードを示す図(b)及び(c)と、第4例の命令デコーダにおけるタイミングチャート図(d)である。
【図18】クロックゲートセルの回路図の例を示す図(a)と、そのクロックゲートセルの入出力信号のタイミングチャート図(b)である。
【図19】クロックゲートセルの回路図の他の例を示す図(a)と、そのクロックゲートセルの入出力信号及び内部信号のタイミングチャート図(b)である。
【図20】従来の演算コアの内部ブロック図である。
【図21】図20のALUアレイ回路に設けられる1つの単位回路の回路図である。
【図22】図21の単位回路におけるタイミングチャート図である。
【発明を実施するための形態】
【0023】
以下、本発明の一実施形態につき、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、符号又は記号を付記することによって該符号又は記号に対応する名称を省略又は略記することがある。例えば、データ入力信号が記号AINによって表される場合(図2参照)、データ入力信号AINを、入力信号AIN、信号AIN又はAINと表記することがある。
【0024】
図1は、本発明の実施形態に係る演算コア(並列演算装置)1の内部ブロック図である。演算コア1は、ALUアレイ回路2、命令メモリ3、シーケンサ4及びデータメモリ5を備える。演算コア1を複数個備えた演算装置(並列演算装置)を形成するようにしても良い。
【0025】
ALUアレイ回路2は、図1に示されるようなリコンフィギャラブル回路であり、論理回路の再構成を可能とする機能を備える。ALUアレイ回路2は、四則演算や論理演算などを行う、複数段に分けて配列された複数のALU(Arithmetic and Logic Unit)と、各ALUの出力データを保持する保持回路(D型フリップフロップ等)と、前段のALUと後段のALUを接続することで前段のALUの出力データを後段のALUに入力する接続部と、を備える。
【0026】
命令メモリ3は、ALUアレイ回路2に提供すべき命令を表す命令データを格納している。ユーザは、命令メモリ3に所望の命令データを格納しておくことで、所望の演算処理をALUアレイ回路2内の各ALUに実行させることができると共に、上記接続部を用いたALU間の接続関係を所望の接続関係に設定することができる。尚、ここにおけるユーザとは、例えば、演算コア1の利用者である電機製品メーカーの開発者である。
【0027】
シーケンサ4は、ALUアレイ回路2から出力されるシーケンサ制御データに従って、命令メモリ3のアドレスを指定するアドレスデータを命令メモリ3に出力する。アドレスデータが命令メモリ3に与えられた時、命令メモリ3は、そのアドレスデータに指定されたアドレスに格納されている命令データをALUアレイ回路2に出力する。
【0028】
データメモリ5は、必要に応じて、ALUアレイ回路2の演算によって得られたALUアレイ回路2の出力データを記憶すると共にデータメモリ5に記憶されたデータをALUアレイ回路2に与える。また、必要に応じて、ALUアレイ回路2の出力データは演算コア1に接続された出力ポート(不図示)に出力される。また、演算コア1に接続された入力ポート(不図示)からALUアレイ回路2に対してデータが供給される場合もある。
【0029】
ALUアレイ回路2には、ALUを含む単位回路10が複数個備えられている。ALUアレイ回路2に設けられた複数の単位回路10は、互いに同じ構造を有している(但し、ALUアレイ回路2に設けられた幾つかの単位回路10は、他の単位回路10と構造が異なっていても構わない)。演算コア1では、複数の単位回路10を並列動作させることができる(即ち、複数の単位回路10を同時に動作させることができる)。
【0030】
図2(a)を参照して、1つの単位回路10の基本構成を説明する。単位回路10には、命令デコーダ11、演算回路としてのALU12及び出力保持回路としてのDFF13が備えられている。
【0031】
命令デコーダ11は、演算命令を表す命令コードをデコードすることによって演算制御信号OpC及び信号nopを生成する。命令コードは、図1の命令メモリ3に格納されている命令データの一種である。命令コードは、図1の命令メモリ3から命令デコーダ11に供給される。
【0032】
信号nopは論理値0又は1をとる。論理値1を有する信号nopは、ALU12における演算動作(換言すれば、演算処理の実行)を休止させるための演算休止信号としての機能を持ち、論理値0を有する信号nopはそのような機能を持たない。従って、信号nopを、演算休止制御用信号と呼ぶこともできる。本実施形態では、信号nopを含む各信号において、信号のレベルがハイレベルである状態を論理値1の状態に割り当て、信号のレベルがハイレベルよりも低いローレベルである状態を論理値0の状態に割り当てるものとする(勿論、それらの関係を逆にすることも可能である)。
【0033】
上述したように、通常、多数のALUを備えた演算装置において、全てのALUを常時有効に使って意味のある処理を行わせることは困難であり、演算装置内の幾つかのALUの演算動作は時として不要である。或る単位回路10におけるALU12の演算動作が不要であるとき、その単位回路10内の命令デコーダ11が演算休止信号(即ち、ハイレベルの信号nop)を生成及び出力するように命令デコーダ11が形成されている。演算休止信号は常に生成及び出力されるものではなく、演算休止信号の生成及び出力は間欠的に成される。演算休止信号の詳細な利用方法については後述される。
【0034】
単位回路10には、ALU12に供給されるべき1又は複数のデータ入力信号が入力され、ALU12は、1又は複数のデータ入力信号に対して演算処理を実行する。ALU12は、複数種類の演算処理を実行することが可能であり、実際に実行される演算処理は、ALU12に供給された演算制御信号OpCに従って決定される。本実施形態では、ALU12に供給されるべきデータ入力信号が2つのデータ入力信号AIN及びBINから成るものとする。
【0035】
従って、図2(b)に示す如く、ALU12には、2つのデータ入力端子ALUINA及びALUINBが備えられる。信号AIN及びBINは、夫々、直接或いは何らかの回路を介してALU12のデータ入力端子ALUINA及びALUINBに供給される(詳細は後述;図3及び図9等参照)。ALU12には、更に制御端子ALUCNT及び出力端子ALUOUTも備えられる。命令デコーダ11にて生成された演算制御信号OpCは、直接或いは何らかの回路を介してALU12の制御端子ALUCNTに供給される(詳細は後述;図3及び図9等参照)。ALU12は、制御端子ALUCNTに供給された演算制御信号OpCに応じた演算処理を、データ入力端子ALUINA及びALUINBに供給された信号AIN及びBINを用いて実行し、その演算処理の結果を表すデータ信号を出力端子ALUOUTから出力する。
【0036】
図1の演算コア1にはクロック信号が供給されており、該クロック信号は、各単位回路10に供給される。図2(c)に示す如く、クロック信号は、一定のクロック周期で、比較的高い電圧値であるハイレベルの電圧値と比較的低い電圧値であるローレベルの電圧値をとる電圧信号である。クロック周期に相当する1つの単位期間内に、クロック信号の電圧値がハイレベルになる期間とローレベルになる期間が1つずつ存在する。
【0037】
DFF13として用いられるDFFは、図2(d)に示す如く、データ入力端子DIN、データ出力端子DOUT及びクロック入力端子CLKINを備えたD型フリップフロップである。ALU12から出力されるデータ信号は、直接或いは何らかの回路を介してDFF13のデータ入力端子DINに供給され、単位回路10に供給されるクロック信号は、直接或いは何らかの回路を介してDFF13のクロック入力端子CLKINに供給される(詳細は後述;;図3及び図9等参照)。DFF13として用いられるDFFは、クロック入力端子CLKINに供給されたクロック信号の電圧値が第1レベルから第2レベルへと切り替わるタイミングにおいてデータ入力端子DINに供給されているデータ信号を保持し、保持したデータ信号をデータ出力端子DOUTから出力する。この保持は、端子CLKINに供給されたクロック信号の電圧値が次回に第1レベルから第2レベルへと切り替わるタイミングまで継続される。以下、第1及び第2レベルは夫々ローレベル及びハイレベルであるとする。但し、第1及び第2レベルの高低関係を逆にすることも可能である。DFF13の端子DOUTから出力されるデータ信号を、データ出力信号Yとして単位回路10から出力することができる。
【0038】
尚、データ入力信号AIN及びBINの夫々は、例えば、図1のALUアレイ回路2の外部(例えば、入力ポート又はデータメモリ5)から単位回路10に供給される。また、或る1つの単位回路10に対するデータ入力信号AIN及びBINは、他の単位回路10から供給されるものであっても良い。或いは、或る1つの単位回路10に対するデータ入力信号AIN及びBINは、自身のデータ出力信号Y、又は、自身のデータ出力信号Yに基づく信号であっても良い。
【0039】
以下、1つの単位回路10に注目し、単位回路10の構成例として第1〜第5構成例を説明する。矛盾なき限り、或る構成例の説明に記載された事項を他の構成例にも適用することが可能である。尚、本発明が実現しようとする消費電力抑制効果は第3〜第5構成例において強く発揮される。第1及び第2構成例は、第3〜第5構成例の回路を形成する過程において考慮された参考構成例である、と考えることもできる。
【0040】
[第1構成例]
単位回路10の第1構成例を説明する。図3は、単位回路10として利用可能な単位回路10aの内部回路図である。単位回路10aは、符号11〜14によって参照される各部位を備える。
【0041】
単位回路10aにおいて、単位回路10aに供給されるデータ入力信号AIN及びBINはALU12のデータ入力端子ALUINA及びALUINBに直接供給され、且つ、命令デコーダ11から出力される演算制御信号OpCはALU12の制御端子ALUCNTに直接供給され、且つ、単位回路10aに供給されるクロック信号は、DFF13のクロック入力端子CLKINに直接供給されている(図2(b)及び(d)も参照)。DFF13が出力するデータ信号は、単位回路10aのデータ出力信号Yである。
【0042】
MUX14はマルチプレクサである。図4に示す如く、MUX14としてのマルチプレクサは、第1入力端子MUXINA、第2入力端子MUXINB、選択制御端子MUXCNT及び出力端子MUXOUTを備え、端子MUXCNTに供給されている信号に基づいて端子MUXINA及びMUXINBに供給されている信号の何れか一方を選択し、選択した信号を端子MUXOUTから出力する。
【0043】
MUX14において、第1入力端子にはALU12出力端子からのデータ信号が供給され、第2入力端子にはDFF13のデータ出力端子からのデータ信号(即ち信号Y)が供給され、選択制御端子には命令デコーダ11からの信号nopが供給され、MUX14の出力端子から出力されるデータ信号がDFF13のデータ入力端子に供給される。
【0044】
MUX14は、命令デコーダ11から演算休止信号が選択制御端子に供給されている期間(即ち命令デコーダ11からハイレベルの信号nopが選択制御端子に供給されている期間)においては、第2入力端子に供給されている信号Yを選択してDFF13のデータ入力端子に出力し、命令デコーダ11から演算休止信号が選択制御端子に供給されていない期間(即ち命令デコーダ11からローレベルの信号nopが選択制御端子に供給されている期間)においては、第1入力端子に供給されている信号(即ち、ALU12の出力信号)を選択してDFF13のデータ入力端子に出力する。
【0045】
図5は、単位回路10aにおけるタイミングチャートである。図5において、右方向は時間の進行方向に対応している(後述の他のタイミングチャートにおいても同様)。図5のタイミングチャートにおいて、311〜316は、夫々、クロック信号の波形、命令コードの内容、信号nopの波形、データ入力信号AIN及びBINの内容、ALU12の動作、データ出力信号Yの内容を示している。
【0046】
第1、第2、第3、・・・の単位期間が、この順番で順次訪れるものとし(図2(c)参照)、第iの単位期間に第i番目の命令コードが命令デコーダ11に与えられるものとする。iは整数である。第iの単位期間において演算休止信号の出力を指示する命令コードが命令デコーダ11に供給された場合、時刻(ti+Δt)及び(ti+1+Δt)間において、命令デコーダ11から演算休止信号(即ちハイレベルの信号nop)が出力される。時刻tiは、第iの単位期間の開始時刻を表す。時刻(ti+Δt)は、第iの単位期間の開始時刻tiから所定の遅延時間Δtだけ経過した時刻を表す。同様に、時刻(ti+1+Δt)は、第(i+1)の単位期間の開始時刻ti+1から遅延時間Δtだけ経過した時刻を表す。ここで、Δtは、時刻ti及びti+1間の時間長さよりも小さい(但し、Δt>0)。
【0047】
命令コード312における“#i”は、第i番目の命令コードを表しており、命令コード312における“nop”は、命令コードが演算休止信号の生成を指示していることを示している。図5の例では、第2番目の命令コードである命令コード“#2”が“nop”となっており、結果、時刻(t2+Δt)及び(t3+Δt)間において、命令デコーダ11から演算休止信号(即ちハイレベルの信号nop)が出力される。
【0048】
データ入力信号AIN及びBINの内容314における“#i”は、命令コード“#i”に応じた演算動作が成されるべきデータ入力信号AIN及びBINを表している。内容314における“invalid”は、信号AIN及びBINが任意であることを示している。
ALU12の動作315における“#i”は、命令コード“#i”に応じて成されるALU12の演算動作を表している。ALU12の動作315における“nop”は、ALU12の演算動作が不要であることを示している。
データ出力信号Yの内容316における“#i”は、“#i”によって表されるALU12の動作315の結果に基づくデータ出力信号Yを表している。データ出力信号Yの内容316において、“#i stable”は、データ出力信号Yが“#i”に保持されていることを示している。
【0049】
図5のタイミングチャートから分かるように、演算休止信号(即ち、ハイレベルの信号nop)が出力された後、MUX14の働きにより、1単位期間分、信号Yは変化しない。図5において、中段付近に示された4つの太矢印(入力AIN及びBINの欄部分に付された4つの太矢印)は、ALU12に対するデータ入力信号AIN及びBINの変化部分を表している(後述の図8においても同様)。一方、図22において下方側に示された4つの太矢印(出力Yの欄部分に付された4つの太矢印)は、データ出力信号Yにおける不必要な変化を表していたが、これに対し、図5において下方側に示された4つの太矢印(出力Yの欄部分に付された4つの太矢印)は、信号AIN及びBINの変化の如何に関わらずデータ出力信号Yが変化していない箇所を表している(後述の図8においても同様)。
【0050】
従って、図3の単位回路10aによれば、データ出力信号Yが不必要に変化することが抑制され、データ出力信号Yの不必要な変化に起因するDFF13の不必要な電力消費が抑制される。
【0051】
しかしながら、単位回路10aでは、クロック信号がDFF13に直接供給されているため、演算休止信号が出力されている期間においても、クロック信号の立ち上がりに応じてDFF13への入力信号を再度保持する動作が実行される。つまり、DFF13のデータ入力端子に対する入力信号が変化していなくても、DFF13のクロック入力端子に供給されるクロック信号が変化しておれば、クロック信号の立ち上がりに応じた再度の保持動作により、電力(セル内インターナルパワー)が無駄に消費される。この無駄な電力消費は、第2構成例の採用によって抑制される。
【0052】
[第2構成例]
単位回路10の第2構成例を説明する。図6は、単位回路10として利用可能な単位回路10bの内部回路図である。単位回路10bは、符号11〜13及び15によって参照される各部位を備える。
【0053】
単位回路10bにおいて、単位回路10bに供給されるデータ入力信号AIN及びBINはALU12のデータ入力端子ALUINA及びALUINBに直接供給され、且つ、命令デコーダ11から出力される演算制御信号OpCはALU12の制御端子ALUCNTに直接供給され、且つ、ALU12の出力端子ALUOUTから出力されるデータ信号はDFF13のデータ入力端子DINに直接供給されている(図2(b)及び(d)も参照)。DFF13が出力するデータ信号は、単位回路10bのデータ出力信号Yである。
【0054】
単位回路10bにおいて、15はクロックゲートセルである。図7(a)に示す如く、クロックゲートセル15は、クロック入力端子15IN、クロック出力端子15OUT及びディセーブル端子15DENを備える。クロック入力端子15INには、単位回路10b(又は後述の単位回路10c等)に供給されるクロック信号が入力され、クロック出力端子15OUTからは、端子15INに入力されるクロック信号に基づくクロック信号が出力される。端子15OUTから出力されるクロック信号を、特にゲーテッドクロック信号と呼ぶ。また、ゲーテッドクロック信号が生成される単位回路の説明においては、端子15INに入力されるクロック信号を、特に原クロック信号と呼ぶことがある。
【0055】
図7(b)に示す如く、クロックゲートセル15は、ディセーブル端子15DENに供給される信号のレベルがローレベルであるとき、原クロック信号をそのままゲーテッドクロック信号として端子15OUTから出力するが、ディセーブル端子15DENに供給される信号のレベルがハイレベルであるときには、原クロック信号の変化をゲーテッドクロック信号に反映させない。つまり例えば、図7(b)に示す如く、ディセーブル端子15DENへ入力される信号のレベルが時刻ta及びtb間の期間においてハイレベルであって且つそれ以外の期間においてローレベルであるとき、時刻ta及びtb間の期間におけるゲーテッドクロック信号のレベルは時刻taにおける原クロック信号のレベルに維持され、それ以外の期間におけるゲーテッドクロック信号のレベルは原クロック信号のレベルと同じとなる。ここで、時刻tbは時刻taよりも後の時刻である。
【0056】
単位回路10bにおいては、現クロック信号ではなく、クロックゲートセル15からのゲーテッドクロック信号がDFF13のクロック入力端子に供給され、命令デコーダ11からの信号nopがディセーブル端子15DENへ入力される。命令デコーダ11によって演算休止信号(即ちハイレベルの信号nop)が生成されているとき、ディセーブル端子15DENに供給される信号のレベルがハイレベルになっているため、DFF13のクロック入力端子へのクロック信号(即ち、ゲーテッドクロック信号)は変化しないことになる。
【0057】
図8は、単位回路10bにおけるタイミングチャートである。図8のタイミングチャートにおいて、321〜327は、夫々、現クロック信号であるクロック信号の波形、命令コードの内容、信号nopの波形、データ入力信号AIN及びBINの内容、ゲーテッドクロック信号の波形、ALU12の動作、データ出力信号Yの内容を示している。
【0058】
図8におけるクロック信号の波形321、命令コード322、信号nopの波形323、データ入力信号AIN及びBINの内容324、ALU12の動作326は、夫々、図5におけるクロック信号の波形311、命令コード312、信号nopの波形313、データ入力信号AIN及びBINの内容314、ALU12の動作315と同じである。また、ゲーテッドクロック信号の存在に関わらず、結果的に、図8におけるデータ出力信号Yの内容327は、図5のデータ出力信号Yの内容316と同じとなっている。
【0059】
しかしながら、単位回路10bでは、演算休止信号が出力されている期間において(即ち信号nopのレベルがハイレベルである期間において)、クロックゲートセル15が、ゲーテッドクロック信号のレベルを固定することでDFF13による保持信号の更新動作の実行を阻止する。即ち、DFF13は、自身のクロック入力端子CLKINに供給された信号の立ち上がりタイミングにおいて、データ入力端子DINへの入力信号を再度保持する動作を実行するが、演算休止信号が出力されている期間において、この動作の実行が阻止される。このため、図3の単位回路10aと比べて、図6の単位回路10bでの消費電力は更に少なくなる。更に、演算休止信号の出力期間中におけるALU12の出力を信号Yに反映させないという機能の実現に当たり、図3の単位回路10aでは信号Yのデータのビット幅と同数のマルチプレクサをMUX14として設ける必要があるが、図6の単位回路10bでは該ビット幅に関係なく1個のクロックゲートセルで該機能を実現できるため、回路規模の削減にも貢献できる。
【0060】
しかしながら、ALU12が動作する必要のない期間(即ち、演算休止信号の出力期間)においても、ALU12への入力信号が変化すれば該入力信号の変化がALU12の内部回路へ伝播してALU12の内部回路においても信号変化が発生するため、この信号変化に対応した電力(スイッチングパワー)は消費されてしまう。これは、図6の構成だけでなく、図3及び図21の構成についても当てはまる。ALU12の内部回路には、データ入力端子ALUINA及びALUINB(図2(b)参照)への入力信号に基づいて動作する組み合わせ回路などが含まれる。後述の第3〜第5構成例において、このような電力消費を抑制する方法を説明する。
【0061】
[第3構成例]
単位回路10の第3構成例を説明する。図9は、単位回路10として利用可能な単位回路10cの内部回路図である。単位回路10cは、符号11〜13及び15によって参照される各部位に加えて、Dラッチであるラッチ素子21〜23及びDFF(D型フリップフロップ)であるDFF24を備える。
【0062】
Dラッチには、入力端子であるD端子、出力端子であるQ端子及び制御端子であるLE端子(ラッチイネーブル端子)が備えられている。図10に示す如く、LE端子への入力信号のレベルがローレベルであるとき、D端子及びQ端子が直接接続されたときと同じ状態となり、この状態では、D端子における信号変化がそのままQ端子における信号にも反映される。LE端子への入力信号のレベルがローレベルからハイレベルに切り替わると、Dラッチは、その切り替わりのタイミングにおけるD端子への入力信号を保持し、LE端子への入力信号のレベルがハイレベルに保たれている期間中においては、D端子への入力信号がどのように変化しても、保持した信号をQ端子から出力し続ける(図10参照)。
【0063】
単位回路10cでは、ALU12の前段にラッチ素子21及び22が設けられており、単位回路10cに供給されるデータ入力信号AIN及びBINは、夫々、ラッチ素子21及び22を介してALU12に供給される。より具体的には、単位回路10cに供給されるデータ入力信号AIN及びBINは、夫々、ラッチ素子21のD端子及びラッチ素子22のD端子に供給され、ラッチ素子21のQ端子から出力されるデータ入力信号AIN及びラッチ素子22のQ端子から出力されるデータ入力信号BINが、夫々、ALU12のデータ入力端子ALUINA及びALUINBに供給される。ALU12の出力端子ALUOUTから出力されるデータ信号はDFF13のデータ入力端子DINに直接供給されている(図2(b)及び(d)も参照)。DFF13が出力するデータ信号は、単位回路10cのデータ出力信号Yである。
【0064】
単位回路10cでは、命令デコーダ11から出力される演算制御信号OpCはラッチ素子23を介してALU12に供給される。より具体的には、命令デコーダ11からの演算制御信号OpCはラッチ素子23のD端子に供給され、ラッチ素子23のQ端子から出力される演算制御信号OpCがALU12の制御端子ALUCNTに供給される。ラッチ素子23のQ端子から出力される演算制御信号OpCを、命令デコーダ11から出力される演算制御信号OpCと区別するべく、OpC_ltで表す。
【0065】
単位回路10cでは、命令デコーダ11からの信号nopがDFF24を介してクロックゲートセル15等に供給される。DFF24のクロック入力端子には原クロック信号が供給されている。より具体的には、命令デコーダ11からの信号nopはDFF24のデータ入力端子に供給され、1単位期間分(1クロック分)だけ遅れてからDFF24のデータ出力端子より出力される。DFF24のデータ出力端子からの信号nopを、命令デコーダ11からの信号nopと区別するべく、nop_ldにて表す。DFF24からの遅延された信号nop_ldは、クロックゲートセル15のディセーブル端子及びラッチ素子21〜23の各LE端子に供給される。
【0066】
第2構成例と同様、クロックゲートセル15のクロック入力端子には原クロック信号が供給され、クロックゲートセル15のクロック出力端子からゲーテッドクロック信号が出力される。ゲーテッドクロック信号は、DFF13のクロック入力端子に供給される。
【0067】
図11は、単位回路10cにおけるタイミングチャートである。図11のタイミングチャートにおいて、331〜341は、夫々、現クロック信号であるクロック信号の波形、命令コードの内容、信号nopの波形、遅延した信号nop_ldの波形、演算制御信号OpCの内容、ラッチされた演算制御信号OpC_ltの内容、ラッチ素子21及び22のD端子の入力信号の内容、ラッチ素子21及び22のQ端子の出力信号の内容、ゲーテッドクロック信号の波形、ALU12の動作、データ出力信号Yの内容を示している。
【0068】
命令コード332における“#i”は第i番目の命令コードを表しており、命令コード332における“invalid”は、ALU12にて演算動作の実行が不要なことを示している。
【0069】
第3構成例においては、第(i+1)の単位期間においてALU12が演算動作を実行する必要がない場合、第iの単位期間に対する命令コード“#i”の中に演算休止信号の出力を指示する命令が含められる。命令コード“#i”の中に演算休止信号の出力を指示する命令が含められている場合、時刻(ti+Δt)及び(ti+1+Δt)間において、命令デコーダ11から演算休止信号(即ちハイレベルの信号nop)が出力され、これに伴って、時刻(ti+1+Δt)及び(ti+2+Δt)間において、DFF24から演算休止信号(即ちハイレベルの信号nop_ld)が出力される。尚、本実施形態では、説明の簡略上、各DFF及び各ラッチ素子での信号遅延を無視する。
【0070】
図11の例では、命令コード“#1”の中に演算休止信号の出力を指示する命令が含められている。このため、時刻(t1+Δt)及び(t2+Δt)間において、命令デコーダ11から演算休止信号(即ちハイレベルの信号nop)が出力され、これに伴って、時刻(t2+Δt)及び(t3+Δt)間において、DFF24から演算休止信号(即ちハイレベルの信号nop_ld)が出力される。命令コード“#4”等についても同様である。
【0071】
演算制御信号OpCの内容335における“#i”は、第i番目の命令コードに対応する命令デコーダ11からの演算制御信号OpCを表している。演算制御信号OpCの内容335における“invalid”は、ALU12の演算動作が不要であることを示している。
演算制御信号OpC_ltの内容336における“#i”は、第i番目の命令コードに対応するラッチ素子23からの演算制御信号OpC_ltを表している。内容336における“#i stable”は、演算制御信号OpC_ltが“#i”に保持されていることを示している。
【0072】
ラッチ素子21及び22のD端子の入力信号の内容337における“#i”は、第iの単位区間に対応するラッチ素子21及び22のD端子への入力信号を表している。内容337における“invalid”は、第iの単位区間に対応するラッチ素子21及び22のD端子への入力信号が任意であることを示している。
ラッチ素子21及び22のQ端子の出力信号の内容338における“#i”は、第iの単位区間に対応するラッチ素子21及び22のQ端子の出力信号を表している。内容338における“#i stable”は、ラッチ素子21及び22のQ端子の出力信号が“#i”に保持されていることを示している。
図11の例では、時刻(t2+Δt)及び(t3+Δt)間においてDFF24から演算休止信号(即ちハイレベルの信号nop_ld)が出力されているため、時刻(t2+Δt)及び(t3+Δt)間におけるラッチ素子21及び22の入力信号(AIN及びBIN)が不定であっても、ラッチ素子21及び22のQ端子からの出力信号は変化しない。つまり、単位回路10cに供給されるデータ入力信号AIN及びBINの変化がALU12に伝達されない。
【0073】
ゲーテッドクロック信号の波形339は、図8の波形325と同じである。
ALU12の動作340における“#i”は、第i番目の単位区間におけるALU12の演算動作を表している。ALU12の動作340における“nop”は、ALU12の演算動作が不要であることを示している。図11の例の場合、時刻(t1+Δt)及び(t3+Δt)間において、信号OpC_ltが“#i”に保持されるため、時刻(t1+Δt)及び(t3+Δt)間におけるALU12の演算動作も“#i”となる。しかしながら、時刻(t2+Δt)及び(t3+Δt)間におけるALU12の演算動作の結果は、クロックゲートセル15の働きにより、どこにも利用されることなく捨てられるため、時刻(t2+Δt)及び(t3+Δt)間におけるALU12の演算動作は不要(即ち、nop)であると言える。
【0074】
データ出力信号Yの内容341における“#i”は、“#i”によって表されるALU12の動作340の結果に基づくデータ出力信号Yを表している。データ出力信号Yの内容341において、“#i stable”は、データ出力信号Yが“#i”に保持されていることを示している。内容341は、図8の内容327と同じである。
【0075】
単位回路10cにおいて、信号nopは一旦遅延素子であるDFF24を経由してからALU12に供給される。クロック同期式の設計手法で設計された命令デコーダの出力する信号nopには、一般に、グリッチと呼ばれるインパルス状の不要な信号変化が含まれることがあり、単位回路10cは、このグリッチの存在を考慮して形成されている。グリッチが現れる信号をラッチ素子のLE端子に直接供給すると、グリッチの発生時点で不要な記憶動作を誘発し、誤動作が発生しうる。この誤動作の発生を回避するべく、単位回路10cにはDFF24が設けられている。尚、信号nopにグリッチが含まれないように命令デコーダ11が形成されているならば、単位回路10cからDFF24を削除して、信号nopを伝播する配線と信号nop_ldを伝播する配線とを直結することも可能である(後述の他の構成例においても同様)。この場合、信号nopそのものが、クロックゲートセル15のディセーブル端子及びラッチ素子21〜23のLE端子に供給される。
【0076】
ALU12による演算動作が不要な期間を演算休止期間とも呼ぶ。演算休止期間は、DFF24から演算休止信号が出力されている期間(即ち信号nop_ldのレベルがハイレベルである期間)に相当する。後述の第4及び第5構成例においても同様である。単位回路10cからDFF24が削除されている場合には、命令デコーダ11から演算休止信号が出力されている期間(即ち信号nopのレベルがハイレベルである期間)が、演算休止期間に相当する。後述の第4及び第5構成例においても同様である。
【0077】
単位回路10cでは、信号nop_ldとラッチ素子21及び22により、単位回路10cへのデータ入力信号AIN及びBINにおける信号変化(ラッチ素子21及び22のD端子における信号変化)が、演算休止期間においてALU12のデータ入力端子に伝達されないようになっている。このため、演算休止期間においてALU12の内部回路の信号変化が抑制され、図3、図6及び図21の構成と比べて、演算休止期間におけるALU12の電力消費が抑制される。
【0078】
また、DFF24から演算休止信号が出力されている期間において(即ち信号nop_ldのレベルがハイレベルである期間において)、クロックゲートセル15が、ゲーテッドクロック信号のレベルを固定することでDFF13による保持信号の更新動作の実行を阻止する。即ち、DFF13は、自身のクロック入力端子に供給されたクロック信号の立ち上がりタイミングにおいて、データ入力端子への入力信号を再度保持する動作を実行するが、単位回路10cでは、演算休止期間においてこの動作の実行が阻止されるため、その分だけ電力消費が抑制される。
【0079】
[第4構成例]
単位回路10の第4構成例を説明する。第4構成例は、第3構成例を変形したものである。図12は、単位回路10として利用可能な単位回路10dの内部回路図である。単位回路10dは、符号11〜13、15、23、24及び31〜37によって参照される各部位を備える。31〜35は、ラッチ素子23と同じ構造を有するラッチ素子であり、36及び37はMUX14(図3参照)と同じ構造を有するMUX(マルチプレクサ)である。
【0080】
ALU12に対するデータ入力信号が2つであっても、実際には、単位回路には3以上のデータ入力信号が与えられ、3以上のデータ入力信号の中からALU12に与えられるべきデータ入力信号が選択されることが多い。ここでは、合計4つのデータ入力信号AIN0、AIN1、BIN0及びBIN1が単位回路10dに与えられることを想定する(後述の第5構成例においても同様)。
【0081】
単位回路10dにおいて、命令デコーダ11、ラッチ素子23、DFF24、ALU12、クロックゲートセル15及びDFF13の接続関係及び入出力信号は、図9の単位回路10cのそれらと同じである(但し、単位回路10dでは、MUX36及び37からALU12にデータ入力信号が供給されている)。
即ち、ALU12の出力端子から出力されるデータ信号はDFF13のデータ入力端子に直接供給されている。DFF13が出力するデータ信号は、単位回路10dのデータ出力信号Yである。
命令デコーダ11からの演算制御信号OpCはラッチ素子23のD端子に供給され、ラッチ素子23のQ端子から出力される演算制御信号OpC_ltがALU12の制御端子に供給されている。
DFF24のクロック入力端子には原クロック信号が供給されている。クロックゲートセル15のクロック入力端子には原クロック信号が供給され、クロックゲートセル15のクロック出力端子からゲーテッドクロック信号が出力される。ゲーテッドクロック信号は、DFF13のクロック入力端子に供給される。
命令デコーダ11からの信号nopをDFF24のデータ入力端子に与えることでDFF24から出力される信号nop_ldがクロックゲートセル15のディセーブル端子及びラッチ素子23のLE端子に供給される。
【0082】
単位回路10dでは、DFF24から出力される信号nop_ldが、更に、ラッチ素子31〜35の各LE端子にも供給される。単位回路10dに供給されるデータ入力信号AIN0、AIN1、BIN0及びBIN1は、夫々、ラッチ素子31〜34のD端子に入力される。ラッチ素子31及び32のQ端子は、夫々、MUX36の第1及び第2入力端子に接続され、ラッチ素子33及び34のQ端子は、夫々、MUX37の第1及び第2入力端子に接続される。MUX36及び37の出力端子は、夫々、ALU12のデータ入力端子ALUINA及びALUINBに接続される。命令デコーダ11は、命令コードに基づいて演算制御信号OpC及び信号nopと共に選択信号SELを生成して出力する。命令デコーダ11から出力された選択信号SELはラッチ素子35のD端子に供給され、ラッチ素子35のQ端子から出力される選択信号SELがMUX36及び37の選択制御端子に供給される。選択信号SELによって、MUX36にて第1及び第2入力端子の入力信号のどちらを出力端子から出力するかが指定され、且つ、MUX37にて第1及び第2入力端子の入力信号のどちらを出力端子から出力するかが指定される。ラッチ素子35のQ端子から出力される選択信号SELを、命令デコーダ11から出力される選択信号SELと区別するべく、SEL_ltで表す。
【0083】
単位回路10dでは、信号nop_ldとラッチ素子31〜34により、単位回路10dへのデータ入力信号(AIN0、AIN1、BIN0及びBIN1)における信号変化が、演算休止期間においてALU12のデータ入力端子に伝達されないようになっている。このため、演算休止期間においてALU12の内部回路の信号変化が抑制され、図3、図6及び図21の構成と比べて、演算休止期間におけるALU12の電力消費が抑制される。第3構成例と同様、クロックゲートセル15によりDFF13における不要な保持動作も抑制されるため、更なる電力消費の抑制が図られる。
【0084】
演算休止期間において、消費電力を抑制するためには、入力選択回路(MUX36及び37に相当)も含めた回路全体での信号変化をできるだけ抑制する必要があり、このため極力前の段階で信号の変化を抑制することが望まれる。このため、単位回路10dでは、入力選択回路としてのMUX36及び37の前段に、信号変化抑制用のラッチ素子31〜34を配置している。更に、演算休止期間において、MUX36及び37の選択制御端子への入力信号が変化すれば、MUX36及び37の内部において不要な電力が消費される。しかしながら、単位回路10dでは、選択信号SELがラッチ素子35を介してMUX36及び37に供給されるため、そのような不要な電力消費も抑制される。
【0085】
[第5構成例]
但し、単位回路へのデータ入力信号の数が非常に多い場合、全てのデータ入力信号に対してラッチ素子を用意すると回路規模が大きくなりすぎると判断されることもある。このため、図13に示す如く、ALU12の前段のラッチ素子を、あえて入力選択回路の後段に設けるようにしてもよい。これにより、回路規模を抑えながら、ある程度まで電力消費の抑制効果を得ることが可能となる。
【0086】
図13は、単位回路10として利用可能な第5構成例に係る単位回路10eの内部回路図である。単位回路10eは、符号11〜13、15、23、24及び35〜37、41及び42によって参照される各部位を備える。41及び42は、ラッチ素子23と同じ構造を有するラッチ素子である。
【0087】
単位回路10eにおいて、命令デコーダ11、ラッチ素子35、ラッチ素子23、DFF24、ALU12、クロックゲートセル15及びDFF13の接続関係及び入出力信号は、図12の単位回路10dのそれらと同じである(但し、単位回路10eでは、ラッチ素子41及び42からALU12にデータ入力信号が供給されている)。
【0088】
単位回路10eでは、単位回路10eに供給されるデータ入力信号AIN0及びAIN1が、それぞれMUX36の第1及び第2入力端子に入力され、単位回路10eに供給されるデータ入力信号BIN0及びBIN1が、それぞれMUX37の第1及び第2入力端子に入力され、MUX36及び37の出力端子がそれぞれラッチ素子41及び42のD端子に接続され、ラッチ素子41及び42のQ端子が夫々ALU12のデータ入力端子ALUINA及びALUINBに接続され、ラッチ素子35からの選択信号SEL_ltがMUX36及び37の選択制御端子に供給され、DFF24からの信号nop_ldがラッチ素子41及び42のLE端子に供給される。このため、機能上は、単位回路10eは図12の単位回路10dと同じとなる。但し、図12の単位回路10dと異なり、演算休止期間においてMUX36及び37へのデータ入力信号(AIN0、AIN1、BIN0及びBIN1)が変化すれば、それに合わせてMUX36及び37内の信号も変化することとなる。
【0089】
図12の単位回路10dと同様、単位回路10eにおいてもラッチ素子35を設けることで、演算休止期間中の選択制御信号SELの変化による無駄な信号変化(例えば、MUX36及び37の内部の信号変化)が抑制される。但し、単位回路10eからラッチ素子35を削除し、命令デコーダ11からの選択制御信号SELを直接MUX36及び37の選択制御端子に入力することも可能である(図12の単位回路10dについても同様)。この場合、演算休止期間中の選択制御信号SELの変化による無駄な信号変化(例えば、MUX36及び37の内部の信号変化)が発生するが、回路規模をより小さくすることもできる。
【0090】
[命令コード及び命令デコーダの構成例]
ところで、図5及び図8に対応する第1及び第2構成例においては、命令コードに含まれる所謂nop(no operation)命令をデコードすることによって演算休止信号(ハイレベルの信号nop)が生成されていたが、単位回路10c、10d及び10eにおいては、上述したようにグリッチによる誤動作を避けるために、命令デコーダ11にて演算休止信号が実際の演算動作不要のタイミングよりも1クロック分先行して生成されている。このため、実行すべき命令が存在するタイミングで演算休止信号を発生させる必要があり、命令コード中の演算用コードとしてnop命令を定義することができない。
【0091】
これを考慮し、図14(a)及び(b)に示すような命令デコーダ及び命令コードを図9の単位回路10cに適用するとよい。図14(a)は、単位回路10cの命令デコーダ11として用いることのできる命令デコーダ11aの構成図であり、図14(b)は命令デコーダ11aに供給される命令コード411の構成図である。1つの命令コード411のビット数は任意であるが、今、そのビット数が6ビットである場合を考える。この場合、命令コード411は、5ビット分の演算用フィールド412と1ビット分のnop用フィールド413に分解される。演算用フィールド412に、ALU12にて実行されるべき演算処理を指定する演算用コードが書き込まれ、nop用フィールド413に、演算休止信号(即ち、ハイレベルのnop信号)を発生させるか否かを指定するnop用コードが書き込まれる。図14(a)に示す如く、命令デコーダ11aに設けられた演算用フィールドデコーダによって演算用フィールド412内の演算用コードがデコードされることで演算制御信号OpCが生成され、nop用フィールド413内のnop用コードから信号nopのレベルが決定される(即ち、演算休止信号が発生されるか否かが決定される)。
【0092】
図14(c)には、nop用フィールド413に対するnop用コードの例と、演算用フィールド412に対する演算用コードの例が示されている。図14(d)には、命令デコーダ11aにおけるタイミングチャート例が示されている。図14(d)には、演算休止期間(例えば、第2の単位期間)の手前のタイミングで演算休止信号の生成を指示するnop用コード(図14(d)中の文言“nop”に対応)が配置されることが示されている。
【0093】
或いは、図15(a)及び(b)に示すような命令デコーダ及び命令コードを図9の単位回路10cに適用するようにしてもよい。図15(a)は、単位回路10cの命令デコーダ11として用いることのできる命令デコーダ11bの構成図であり、図15(b)は命令デコーダ11bに供給される命令コード421の構成図である。1つの命令コード421のビット数は任意であるが、今、そのビット数が5ビットである場合を考える。この場合、命令コード421には、5ビット分の演算用フィールド422のみが設けられる。演算用フィールド422に、ALU12にて実行されるべき演算処理を指定する第1演算用コード又はALU12における演算動作が不要であることを示すnop命令としての第2演算用コードが書き込まれる。
【0094】
命令デコーダ11bには、デコーダ111b及びDFF(D型フリップフロップ)112bが設けられている。デコーダ111bは、第1演算用コードが演算用フィールド422に書き込まれている場合、その第1演算用コードをデコードすることで演算制御信号pre_OpCを生成する。DFF112bは、この演算制御信号pre_OpCを1単位時間分だけ遅延させた信号を、演算制御信号OpCとして命令デコーダ11bの外部回路へ出力する。一方、演算用フィールド422に第2演算用コード(nop命令)が書き込まれている場合、デコーダ111bは、演算休止信号(即ち、ハイレベルの信号nop)を生成して命令デコーダ11bの外部回路へ出力する。
【0095】
図15(c)には、演算用フィールド422に対する演算用コードの例が示されている。図15(d)には、命令デコーダ11bにおけるタイミングチャート例が示されている。第iの単位期間の命令コード(例えば、第1の単位期間の命令コード“#1”)に第1演算用コードが記述されている場合、その第1演算用コードに対応する演算制御信号OpCが第(i+1)の単位期間において命令デコーダ11bから出力され、且つ、第(i+1)の単位期間の命令コード(例えば、第2の単位期間の命令コード)に第2演算用コードが記述されている場合、その第2演算用コードに対応する演算休止信号(即ち、ハイレベルの信号nop)が第(i+1)の単位期間において命令デコーダ11bから出力される様子が、図15(d)に示されている。このように、命令デコーダ11bによっても演算制御信号OpCと同時に演算休止信号を出力することが可能となる。
【0096】
また、図16(a)及び(b)に示すような命令デコーダ及び命令コードを図12及び図13の単位回路10d及び10eに適用することができる。図16(a)は、単位回路10d及び10eの命令デコーダ11として用いることのできる命令デコーダ11cの構成図であり、図16(b)は命令デコーダ11cに供給される命令コード431の構成図である。1つの命令コード431のビット数は任意であるが、今、そのビット数が8ビットである場合を考える。この場合、命令コード431は、5ビット分の演算用フィールド432と、2ビット分のSEL用フィールド433と、1ビット分のnop用フィールド434に分解される。演算用フィールド432に、ALU12にて実行されるべき演算処理を指定する演算用コードが書き込まれ、SEL用フィールド433に、選択信号SELの内容を指定するSEL用コードが書き込まれ、nop用フィールド434に、演算休止信号(即ち、ハイレベルのnop信号)を発生させるか否かを指定するnop用コードが書き込まれる。図16(a)に示す如く、命令デコーダ11cに設けられた演算用フィールドデコーダによって演算用フィールド432内の演算用コードがデコードされることで演算制御信号OpCが生成され、SEL用フィールド433内のSEL用コードから選択信号SELが生成され、nop用フィールド434内のnop用コードから信号nopのレベルが決定される(即ち、演算休止信号が発生されるか否かが決定される)。
【0097】
図16(c)には、nop用フィールド434に対するnop用コードの例と、SEL用フィールド433に対するSEL用コードの例と、演算用フィールド432に対する演算用コードの例が示されている。図16(d)には、命令デコーダ11cにおけるタイミングチャート例が示されている。図16(d)には、演算休止期間(例えば、第2の単位期間)の手前のタイミングで演算休止信号の生成を指示するnop用コード(図16(d)中の文言“nop”に対応)が配置されることが示されている。
【0098】
或いは、図17(a)及び(b)に示すような命令デコーダ及び命令コードを図12及び図13の単位回路10d及び10eに適用するようにしてもよい。図17(a)は、単位回路10d及び10eの命令デコーダ11として用いることのできる命令デコーダ11dの構成図であり、図17(b)は命令デコーダ11bに供給される命令コード441の構成図である。図14(a)及び(b)の命令デコーダ11a及び命令コード411を図15(a)及び(b)の命令デコーダ11b及び命令コード421へと変更したように、図16(a)及び(b)の命令デコーダ11c及び命令コード431を変形したものが、図17(a)及び(b)の命令デコーダ11d及び命令コード441である。1つの命令コード441のビット数は任意であるが、今、そのビット数が7ビットである場合を考える。この場合、命令コード441には、5ビット分の演算用フィールド442と2ビット分のSEL用フィールド443とが設けられる。演算用フィールド442には、ALU12にて実行されるべき演算処理を指定する第1演算用コード又はALU12における演算動作が不要であることを示すnop命令としての第2演算用コードが書き込まれる。SEL用フィールド443には、選択信号SELの内容を指定するSEL用コードが書き込まれる。
【0099】
命令デコーダ11dには、デコーダ111d及びDFF(D型フリップフロップ)112d及び113dが設けられている。デコーダ111dは、第1演算用コードが演算用フィールド442に書き込まれている場合、その第1演算用コードをデコードすることで演算制御信号pre_OpCを生成する。DFF112dは、この演算制御信号pre_OpCを1単位時間分だけ遅延させた信号を、演算制御信号OpCとして命令デコーダ11dの外部回路へ出力する。一方、演算用フィールド442に第2演算用コード(nop命令)が書き込まれている場合、デコーダ111dは、演算休止信号(即ち、ハイレベルの信号nop)を生成して命令デコーダ11dの外部回路へ出力する。DFF113dは、SEL用フィールド443に書き込まれたSEL用コードを信号pre_SELとして受け、信号pre_SELを1単位時間分だけ遅延させた信号を選択信号SELとして命令デコーダ11dの外部回路へ出力する。
【0100】
図17(c)には、SEL用フィールド443に対するSEL用コードの例と、演算用フィールド442に対する演算用コードの例が示されている。図17(d)には、命令デコーダ11dにおけるタイミングチャート例が示されている。選択信号SELに関する項目が図17(d)に追加された点を除き、図17(d)のタイミングチャートは図15(d)のそれと同様である。演算用コードとは別個に設けられたSEL用コードにより、命令デコーダ11dは、信号OpC及びnopとは独立して所望の選択信号SELを生成することができる。
【0101】
[クロックゲートセルについての補足説明]
上述の説明ではディセーブル端子を備えたクロックゲートセルをクロックゲートセル15として用いているが(図7(a)参照)、ディセーブル端子の代わりにイネーブル端子を備えたクロックゲートセルをクロックゲートセル15として用いることもできる。この場合には、ディセーブル端子に供給されていた信号を反転してからクロックゲートセル15のイネーブル端子に入力すればよく、それによって上述してきたものと同様の機能が実現される。
【0102】
クロックゲートセル15の構成を幾つか例示する。ここでは、ディセーブル端子を備えたクロックゲートセル15の構成例を説明する。
【0103】
図18(a)は、クロックゲートセル15として利用可能なクロックゲートセル15aの回路図であり、図18(b)は、クロックゲートセル15aの入出力信号のタイミングチャート図である。クロックゲートセル15aはアンドゲート(論理積回路)のみから形成されており、クロック入力端子15INへの入力信号とディセーブル端子15DENへの入力信号の反転信号との論理積が、クロック出力端子15OUTから出力される。尚、図18(a)では、端子15IN、15DEN及び15OUTを黒丸にて表している(後述の図19(a)においても同様)。クロック入力端子15INに入力されるクロック信号のエッジ(信号の変化タイミング)と、ディセーブル端子15DENの入力信号レベルの変化タイミングとの時間差が十分に大きいことが予め分かっている場合にのみ、クロックゲートセル15aを使用することができる。クロックゲートセル15aを用いると、後述のクロックゲートセル15bよりも素子面積を小さくすることができる。
【0104】
図19(a)は、クロックゲートセル15として利用可能なクロックゲートセル15bの回路図であり、図19(b)は、クロックゲートセル15bの入出力信号及び内部信号のタイミングチャート図である。クロックゲートセル15bには、ラッチ素子21等(図9参照)と同等のラッチ素子51とアンドゲート(論理積回路)52とが備えられている。ラッチ素子51のD端子には、ディセーブル端子15DENへの入力信号の反転信号が入力され、ラッチ素子51のLE端子には、クロック入力端子15INへの入力信号の反転信号が入力される。アンドゲート52は、ラッチ素子51のQ端子の出力信号とクロック入力端子15INへの入力信号との論理積信号を、ゲーテッドクロック信号として出力する。
【0105】
ディセーブル端子15DENの入力信号における遅延(クロックゲートセルの前段にて生じる遅延)が大きくなりうる場合にもクロックゲートセル15bは利用可能であるが、素子面積はクロックゲートセル15aよりも大きくなる。上記遅延の量とクロック信号の周期との関係及び回路面積の制約等を考慮して、設計者は、任意のタイプのクロックゲートセル(本例においてクロックゲートセル15a又は15b)をクロックゲートセル15として利用することができる。実現される機能は、クロックゲートセル15a及び15b間で変わりはない。
【0106】
<<変形等>>
上述の実施形態に適用可能な注釈事項として、以下に、注釈1〜注釈3を記す。各注釈に記載した内容は、矛盾なき限り、任意に組み合わせることが可能である。
【0107】
[注釈1]
上述の説明文中に示した具体的な数値や回路素子の個数は、単なる例示であって、当然の如く、それらを様々に変更することができる。例えば、上述の実施形態では、ALU12に対して入力されるデータ入力信号の個数が2である場合を例示したが、ALU12に供給されるデータ入力信号の個数は1であっても良いし、3以上であっても良い。ALU12に供給されるデータ入力信号の個数が2以外であるならば、それに対応して、ALU12の前段に設けられるラッチ素子(図9のラッチ素子21等に対応)及びマルチプレクサ(図12のMUX36等に対応)の個数も上述したものから適宜変更される。
【0108】
[注釈2]
図1のALUアレイ回路2に限らず、単位回路10を任意の回路又は装置に搭載することができる。また、演算コア1を、任意の装置(例えば、パーソナルコンピュータ、放送受信装置など)に搭載することができる。
【0109】
[注釈3]
例えば、以下のように考えることができる。
図9、図12又は図13の単位回路10c、10d又は10eは演算処理装置として機能する。この演算処理装置は、演算命令としての命令コードに基づき演算制御信号(OpC又はOpC_lt)を生成して出力する信号生成回路と、当該演算処理装置に供給されるデータ入力信号(AIN及びBIN、又は、AIN0、AIN1、BIN0及びBIN1)を用いて演算制御信号に応じた演算処理を行う演算回路(ALU12)を備えて、その演算処理の結果を表すデータ出力信号(Y)を出力する。
【0110】
上記信号生成回路の構成要素には命令デコーダ11が少なくとも含まれ、ラッチ素子23及びDFF24の少なくとも一方が更に含まれうる。上記信号生成回路は、演算命令としての命令コードに基づき、演算回路(ALU12)における演算処理の実行を休止させるための演算休止信号(ハイレベルの信号nop又は又はnop_ld)をも間欠的に生成して出力する。
【0111】
当該演算処理装置には更にデータ入力信号保持回路が備えられている。データ入力信号保持回路は、信号生成回路から演算休止信号が出力される演算休止期間中において、当該演算処理装置に供給されるデータ入力信号の変化が演算回路(ALU12)へ伝達されることを阻止する。図9の単位回路10cにおいて、データ入力信号保持回路の構成要素にはラッチ素子21及び22が含まれる。図12の単位回路10dにおいて、データ入力信号保持回路の構成要素にはラッチ素子31〜34が含まれる。図13の単位回路10eにおいて、データ入力信号保持回路の構成要素にはラッチ素子41及び42が含まれる。
【0112】
具体的には例えば、図9の単位回路10cではグリッチ対策のためにDFF24が設けられているため、信号nop_ldによって演算休止期間が設定される。従って、単位回路10cにおけるラッチ素子21及び22は、信号nop_ldの立ち上がりタイミングである演算休止期間の開始時点(例えば、図11の時刻(t2+Δt))において当該演算処理装置へ供給されたデータ入力信号AIN及びBINを保持し、保持したデータ入力信号AIN及びBINを演算休止期間(例えば、図11の時刻(t2+Δt)及び(t3+Δt)間)中においてALU12に供給する。既に述べたように、グリッチ対策が不要であってDFF24が単位回路10cから削除される場合には、信号nopによって演算休止期間が設定される。単位回路10d及び10eについても同様である。
【0113】
また、演算処理装置としての単位回路10c、10d又は10eには、演算回路(ALU12)から順次出力される信号を順次更新しながら保持する出力保持回路(DFF13)と、上記演算休止期間中において、出力保持回路による保持の更新動作の実行を阻止する出力変化阻止回路(クロックゲートセル15)と、が備えられている。
【符号の説明】
【0114】
1 演算コア
2 ALUアレイ回路
3 命令メモリ
4 シーケンサ
5 データメモリ
10、10a、10b、10c、10d、10e 単位回路
11、11a、11b、11c、11d 命令デコーダ
12 ALU
13、24 DFF(D型フリップフフロップ)
14、36、37 MUX(マルチプレクサ)
15 クロックゲートセル
21〜23、31〜35 41、42 ラッチ素子

【特許請求の範囲】
【請求項1】
演算命令に基づき演算制御信号を生成して出力する信号生成回路と、
当該演算処理装置に供給されるデータ入力信号を用いて前記演算制御信号に応じた演算処理を行う演算回路とを備えて、前記演算処理の結果を表すデータ出力信号を出力する演算処理装置において、
前記信号生成回路は、前記演算命令に基づき、前記演算回路における前記演算処理の実行を休止させるための演算休止信号をも間欠的に生成して出力し、
前記信号生成回路から前記演算休止信号が出力される演算休止期間中において、当該演算処理装置に供給されるデータ入力信号の変化が前記演算回路へ伝達されることを阻止するデータ入力信号保持回路を、当該演算処理装置は更に備えた
ことを特徴とする演算処理装置。
【請求項2】
前記演算回路から順次出力される信号を順次更新しながら保持する出力保持回路と、
前記演算休止期間中において、前記出力保持回路による保持の更新動作の実行を阻止する出力変化阻止回路と、を当該演算処理装置は更に備え、
当該演算処理装置から出力される前記データ出力信号は前記出力保持回路より出力される
ことを特徴とする請求項1に記載の演算処理装置。
【請求項3】
前記出力変化阻止回路は、当該当該演算処理装置に入力されるクロック信号と前記信号生成回路からの前記演算休止信号に基づきゲーテッドクロック信号を生成し、該ゲーテッドクロック信号を前記出力保持回路に入力することで、前記演算休止期間中において前記出力保持回路による保持の更新動作の実行を阻止する
ことを特徴とする請求項2に記載の演算処理装置。
【請求項4】
当該演算処理装置に供給されるデータ入力信号は、前記データ入力信号保持回路を介して前記演算回路に供給され、
前記データ入力信号保持回路は、前記演算休止期間の開始時点において当該演算処理装置に供給されたデータ入力信号を保持し、保持したデータ入力信号を、前記演算休止期間中において前記演算回路に供給する
ことを特徴とする請求項1〜請求項3の何れかに記載の演算処理装置。
【請求項5】
前記信号生成回路からの前記演算休止信号が前記データ入力信号保持回路に入力され、
前記データ入力信号保持回路は、入力された前記演算休止信号に基づき、前記演算休止期間の開始時点において当該演算処理装置に供給されたデータ入力信号を保持する
ことを特徴とする請求項4に記載の演算処理装置。
【請求項6】
請求項1〜請求項5の何れかに記載の演算処理装置を複数備え、
前記複数の演算処理装置を並列動作させる
ことを特徴とする並列演算装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2011−237920(P2011−237920A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2010−107266(P2010−107266)
【出願日】平成22年5月7日(2010.5.7)
【出願人】(000001889)三洋電機株式会社 (18,308)
【Fターム(参考)】