(57)【特許請求の範囲】
【請求項１】
最終段の出力が初段側へフィードバックされてループを形成している複数個の初期化が必要な演算ブロックと、
前記各演算ブロックでの演算の完了を検出して、ブロック演算完了信号を出力するブロック演算完了検出回路と、
１つの入力オペランドに対する演算の完了を検出して、演算完了信号を出力する演算完了検出回路と、
外部から与えられる信号又は前記ブロック演算完了検出回路から出力されるブロック演算完了信号にしたがって前記演算ブロックの初期化を行なう初期化回路と、
入力オペランド又は最終段の前記演算ブロックの出力のうちいずれか一方を選択して初段の前記演算ブロックの入力とするループセレクタを有する非同期式演算器において、
前記演算ブロックで行われる演算ループが最終ループにあることを検出し最終ループ検出信号を出力する最終ループ検出回路と、
前記演算完了信号と、前記最終ループ検出信号と、前記演算ブロックが行う演算の演算内容を規定する演算情報を入力保持し、前記ループセレクタの選択を切り替えるセレクト信号と、前記演算ブロックに演算の再開を指示する演算再開信号を出力し、前記最終ループ検出信号が出力された後前記セレクト信号により前記ループセレクタを入力オペランド側に切り替えて演算ループを遮断し、前記最終ループ検出回路により最終ループが検出された時に初期化が終了している前記演算ブロックの初期化状態を保持するコントロール回路を具備し、
先行する演算が完了した後次の演算を再開するまでの期間に入力オペランドならびに前記演算情報からなる入力データを変更し、前記コントロール回路のセレクト信号に基づいて前記ループセレクタにより新たな入力オペランドを選択して前記演算再開信号により演算を開始し、異なる入力データに関する演算を先行する演算と次の演算との間に前記各演算ブロックの初期化を行なうことなく連続して実行する
ことを特徴とする非同期式演算器。
【請求項２】
先行する演算が完了してから次の演算を再開するまでの期間に、入力オペランドを変更することにより異なるオペランドに対する演算を先行する演算と次の演算との間に各演算ブロックの初期化を行なうことなく連続して実行する
ことを特徴とする請求項１記載の非同期式演算器。
【請求項３】
先行する演算が完了してから次の演算を再開するまでの期間に、演算情報を変更することにより異なる種類の演算を先行する演算と次の演算との間に各演算ブロックの初期化を行なうことなく連続して実行する
ことを特徴とする請求項１記載の非同期式演算器。
【請求項４】
入力セレクタセレクト信号に従って外部から与えられる入力オペランド又は先行する演算の演算結果のいずれか一方を選択して前記ループセレクタヘ出力する入力データセレクタを具備し、
前記コントロール回路は前記入力セレクタセレクト信号を生成して前記入力データセレクタに出力し、先行する演算の演算結果を次の演算のオペランドとして使用した演算を演算間に前記各演算ブロックの初期化を行なうことなく連続して実行する
ことを特徴とする請求項１記載の非同期式演算器。
【請求項５】
先行する演算が完了してから次の演算を再開するまでの期間に、演算情報を変更することにより先行する演算の演算結果を次の演算のオペランドとした異なる種類の演算を演算間に前記各演算ブロックの初期化を行なうことなく連続して実行する
ことを特徴とする請求項１記載の非同期式演算器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ループ状に縦続接続された複数の演算器を非同期で動作させて演算を連続して実行する際の回路初期化によるオーバーヘッドを改善した非同期式演算器に関する。
【０００２】
【従来の技術】
従来、この種の非同期式演算器の構成例を図３に示す。
【０００３】
図３において、１０１〜１０５は演算ブロックであり、これらの演算ブロック１０１〜１０５はデータ線１４０〜１４５と後述するループセレクタ１３２により接続されてループを形成している。１１１〜１１５は各演算ブロック１０１〜１０５の演算出力からその演算ブロックの演算が完了したことを検出するブロック演算完了検出回路である。１２１〜１２５は各演算ブロック１０１〜１０５を初期化するための初期化回路であり、ＯＮ端子もしくはＲＥＳＥＴ端子に信号が入力されるとそれぞれ対応する演算ブロック１０１〜１０５の初期化を行ない、ＯＦＦ端子もしくはＳＥＴ端子に信号が入力されるとそれぞれ対応する演算ブロック１０１〜１０５の初期化を終了する。
【０００４】
１３３は入力データラッチで、外部から入力データラッチイネーブル信号線１６０を介して与えられる入力データラッチイネーブル信号をトリガとして入力データ線１６２より与えられる入力データをラッチする。１３０は出力データラッチで、後述する演算完了検出回路１１０が出力データラッチイネーブル信号線１５７を介して出力する出力データラッチイネーブル信号をトリガとしてデータ線１４５から与えられる演算結果をラッチし、データ線１４６を介して演算結果を外部に出力する。１１０は指定ビット数の演算が完了したことを検出して演算完了信号と出力データラッチイネーブル信号を生成する演算完了検出回路である。１３２は入力データラッチ１３３から入力データラッチ出力線１６３を介して出力される入力データラッチ出力と最終段の演算ブロック１０５からデータ線１４５を介して出力される演算結果のいずれか一方をセレクト信号線１６１を介して出力されるセレクト信号に従ってデータ線１４０に出力するループセレクタである。
【０００５】
１３１は初段の演算ブロックのブロック演算完了信号線１５２を介して出力されるブロック演算完了信号と演算完了信号線１５７を介して出力される演算完了信号とリセット信号線１５８を介して外部から与えられるリセット信号を入力とし、ループセレクタ１３２のセレクト信号を出力するコントロール回路である。リセット信号もしくは演算完了信号が入力された場合には入力データラッチ１３３側に、ブロック演算完了信号が入力された場合にはループ側すなわち演算ブロック１０５の出力にそれぞれループセレクタ１３２を切替える。ブロック演算完了検出回路１１１〜１１５からブロック演算完了信号線１５２〜１５６を介して出力されるブロック演算完了信号は、それぞれ演算の完了を検出した演算ブロックの２つ前段の演算ブロックの初期化回路のＯＦＦ端子と、１つ前段の演算ブロックの初期化回路のＯＮ端子に与えられている。リセット信号が初期化回路１２１〜１２５に入力されると、プリチャージ信号線１４７〜１５１を介して出力されるプリチャージ信号が活性化され、演算ブロック１０１〜１０５のプリチャージが行なわれる。
【０００６】
次に、このように構成された非同期式演算器の動作を説明する。
【０００７】
まず始めに、リセット信号がリセット信号線１５８を介して入力されると、初期化回路１２１〜１２５が演算ブロック１０１〜１０５の初期化を開始する。また、このリセット信号により、ループセレクタ１３２が入力データラッチ１３３側に切替えられる。次に、演算に必要な入力データがデータ線１６２から、入力データラッチイネーブル信号が信号線１６０から入力され、入力データが入力データラッチ１３３にラッチされる。その後、演算開始信号が信号線１５９より入力されると、各演算ブロック１０１〜１０５の初期化が終了し、演算が開始される。
【０００８】
演算が開始された後の動作を、図４を参照して説明する。
【０００９】
図４は一例として演算ブロック１０３での演算が終了し、演算が演算ブロック１０４に移った状態を示している。ここでは、ブロック演算完了検出回路１１３が演算ブロック１０３での演算の完了を検出してデータ線１５４にブロック演算完了信号を出力し、この信号によって演算ブロック１０１の初期化が終了し、演算ブロック１０３での演算に使用するための演算結果を保持していた演算ブロック１０２の初期化が開始される。さらに演算が進み、演算ブロック１０４での演算が完了して演算結果がデータ線１４４に出力されると、同様にブロック演算完了検出回路１１４が演算の完了を検出してブロック演算完了信号を信号線１５５に出力し、それにより演算ブロック１０２の初期化が終了し、演算ブロック１０３の初期化が開始される。
【００１０】
このようにして、各々の演算ブロック１０１〜１０５は、初期化が済み入力待ちの状態→演算を行なっている状態→演算結果が確定しその出力を保持している状態→初期化が行なわれている状態、の順で状態遷移を繰り返す。以後、同様の動作が入力データの指定ビット数の演算が完了するまで繰り返され、演算完了検出回路１１０が演算の完了を検出し演算完了信号と出力データラッチネーブル信号を出力する。演算完了信号はコントロール回路１３１に入力され、ループセレクタ１３２を入力データラッチ１３３側に切替える。また、出力データラッチイネーブル信号は、出力データラッチ１３０に入力され、演算結果が出力データラッチ１３０にラッチされ、データ線１４６を介して外部に出力される。
【００１１】
【発明が解決しようとする課題】
以上説明したような複数の演算器がループ状に接続されてなる従来の非同期式演算器において、先行する演算が終了した後、後続の演算を連続して行なおうとした場合には、先行する演算が終了した後、全ての演算ブロック１０１〜１０５をそれぞれ対応した初期化回路１２１〜１２５により初期化して、演算器全体を一度初期化する必要があった。これは、先行する演算が終了した時点で、初期化が終了している演算ブロックが存在するにもかかわらず、それぞれの演算ブロック１０１〜１０５が上記した４つの状態のどの状態にあるかが演算器自身で判別できないためである。このため、連続して演算を行おうとすると、それぞれの演算が終了する毎に、演算器全体を初期化するための時間が費やされ、スループットが著しく悪化するといたった不具体を招いていた。
【００１２】
そこで、本発明は、上記に鑑みてなされたものであり、その目的とするところは、連続演算における演算器の初期化動作を不要化して、演算効率を向上させた非同期式演算器を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するために、請求項１記載の発明は、最終段の出力が初段側へフィードバックされてループを形成している複数個の初期化が必要な演算ブロックと、前記各演算ブロックでの演算の完了を検出して、ブロック演算完了信号を出力するブロック演算完了検出回路と、１つの入力オペランドに対する演算の完了を検出して、演算完了信号を出力する演算完了検出回路と、外部から与えられる信号又は前記ブロック演算完了検出回路から出力されるブロック演算完了信号にしたがって前記演算ブロックの初期化を行なう初期化回路と、入力オペランド又は最終段の前記演算ブロックの出力のうちいずれか一方を選択して初段の前記演算ブロックの入力とするループセレクタを有する非同期式演算器において、前記演算ブロックで行われる演算ループが最終ループにあることを検出し最終ループ検出信号を出力する最終ループ検出回路と、前記演算完了信号と、前記最終ループ検出信号と、前記演算ブロックが行う演算の演算内容を規定する演算情報を入力保持し、前記ループセレクタの選択を切り替えるセレクト信号と、前記演算ブロックに演算の再開を指示する演算再開信号を出力し、前記最終ループ検出信号が出力された後前記セレクト信号により前記ループセレクタを入力オペランド側に切り替えて演算ループを遮断し、前記最終ループ検出回路により最終ループが検出された時に初期化が終了している前記演算ブロックの初期化状態を保持するコントロール回路を具備し、先行する演算が完了した後次の演算を再開するまでの期間に入力オペランドならびに前記演算情報からなる入力データを変更し、前記コントロール回路のセレクト信号に基づいて前記ループセレクタにより新たな入力オペランドを選択して前記演算再開信号により演算を開始し、異なる入力データに関する演算を先行する演算と次の演算との間に前記各演算ブロックの初期化を行なうことなく連続して実行することを特徴とする。
【００１４】
請求項２記載の発明は、請求項１記載の非同期式演算器において、先行する演算が完了してから次の演算を再開するまでの期間に、入力オペランドを変更することにより異なるオペランドに対する演算を先行する演算と次の演算との間に各演算ブロックの初期化を行なうことなく連続して実行することを特徴とする。
【００１５】
請求項３記載の発明は、請求項１記載の非同期式演算器において、先行する演算が完了してから次の演算を再開するまでの期間に、演算情報を変更することにより異なる種類の演算を先行する演算と次の演算との間に各演算ブロックの初期化を行なうことなく連続して実行することを特徴とする。
【００１６】
請求項４記載の発明は、請求項１記載の非同期式演算器において、入力セレクタセレクト信号に従って外部から与えられる入力オペランド又は先行する演算の演算結果のいずれか一方を選択して前記ループセレクタヘ出力する入力データセレクタを具備し、前記コントロール回路は前記入力セレクタセレクト信号を生成して前記入力データセレクタに出力し、先行する演算の演算結果を次の演算のオペランドとして使用した演算を演算間に前記各演算ブロックの初期化を行なうことなく連続して実行することを特徴とする。
【００１７】
請求項５記載の発明は、請求項１記載の非同期式演算器において、先行する演算が完了してから次の演算を再開するまでの期間に、演算情報を変更することにより先行する演算の演算結果を次の演算のオペランドとした異なる種類の演算を演算間に前記各演算ブロックの初期化を行なうことなく連続して実行することを特徴とする。
【００１８】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態を説明する。
【００１９】
図１は請求項１、２又は３記載の発明の一実施形態に係る非同期式演算器の構成を示す図である。
【００２０】
図１において、１〜５は演算ブロック、１０は演算完了検出回路、１１〜１５はブロック演算完了検出回路、２１〜２５は初期化回路、３０は出力データラッチ、３２はループセレクタ、３３は入力データラッチであり、これらは図３に示す従来の演算器と同様の機能を有するものであり、この実施形態の構成に新たに加えられた構成として、３５は最終ループ検出回路、３１はコントロール回路、３６は演算再開信号と外部からの演算開始信号を入力とするＯＲ回路である。また、信号線５８はリセット信号、信号線６４は演算再開信号、信号線６７は最終ループ検出信号、信号線６９は演算情報信号を転送する信号線である。
【００２１】
最終ループ検出回路３５は、入力データの演算が演算ブロック１〜５における最終のループになったことを検出し、演算ブロック２の演算結果が確定した時に、その確定した演算結果を受けて、最終ループ検出信号を信号線６７を介してコントロール回路３１に出力する。演算が最終ループに入ったか否かの検出は、様々な方法が考えられるが、例えば演算ブロック２の出力によりシフトレジスタの内容をシフトすることにより演算の回数をカウントし検出するようにしてもよい。
【００２２】
コントロール回路３１は、演算ブロック１の演算が完了したことを検出するブロック演算完了検出回路１１のブロック演算完了信号と、最終ループ検出回路３５の最終ループ検出信号と、演算完了検出回路１０の演算完了検出信号と、リセット信号と、演算の種類や演算回数等の演算を規定する演算情報を受けて、入力データラッチイネーブル信号線６０を介して入力データラッチイネーブル信号を入力データラッチ３３に出力し、演算再開信号線６４を介して演算再開信号をＯＲゲート３６に出力し、セレクト信号線６１を介してセレクト信号をループセレクタ３２に出力する。また、コントロール回路３１は、図１に図示されていないが、外部から与えられる情報情報に基づいて四則演算等の演算の種類をそれぞれの演算ブロック１〜５に指示する。
【００２３】
このような構成において、演算開始からループ演算中の動作は図３に示す従来例と同様なので説明は省略する。
【００２４】
演算が開始されて演算が進み、演算が最終ループに入り演算ブロック２の出力が確定した時点で、最終ループ検出回路３５が最終ループ検出信号を出力しコントロール回路３１に入力される。これにより、コントロール回路３１は、ループセレクタ３２を入力ラッチ３３側に切替えるループセレクト信号を出力しループを切断する。また、同じ演算ブロック２の出力から、ブロック演算完了回路１２がブロック演算完了信号を出力する。このブロック演算完了信号により、演算ブロック５の初期化が終了し、演算ブロック１の初期化が開始される。さらに、演算が進み、演算ブロック５の出力が確定すると、演算完了検出回路１０が演算完了検出信号を出力する。この演算完了検出信号によって、演算ブロック５の出力が出力データラッチ３０にラッチされる。この時に、ループセレクタ３２は入力データラッチ３３側になっているので、演算はここで一時停止する。
【００２５】
このような状態では、最終段の演算ブロック５を除いた各演算ブロック１〜４は全て初期化が完了して入力を待っている状態、もしくは初期化を行なっている状態となっている。この状態において、外部入力から次の演算で使用するデータが入力されて、演算完了検出信号がコントロール回路３１に入力されると、入力データラッチイネーブル信号がコントロール回路３１から入力データラッチ３３に出力され、新たな演算の入力データが入力データラッチ３３にラッチされ、演算再開信号がコントロール回路３１からＯＲゲート３６に出力され、ＯＲゲート３６の出力により初段の演算ブロック１から新たな入力データによる演算が再開される。この時に、先行する演算が終了した時点で初期化が行われていなかった最終段の演算ブロック５の初期化は、演算ブロック１の演算が完了した時に開始され演算ブロック２の演算が完了した時に終了するので、連続して演算を行う場合に、演算間で再初期化を行なう必要はなくなり、連続して新たな演算を行なうことが可能となる。
【００２６】
この結果、連続演算を行なう場合に各演算の間の演算ブロックの初期化が不要となり、従来よりも効率的に演算を行なうことが可能となり、演算時間が短縮され、かつ消費電力を低減することができる。
【００２７】
なお、上記実施形態では、５個の演算ブロックが用意されているが、演算ブロックの個数は限定されるものではなく、演算ループで行われる演算の回数等により任意に設定されるものである。
【００２８】
図２は請求項４又は５記載の発明の一実施形態に係る非同期式演算器の構成を示す図である。
【００２９】
図２において、この実施形態の特徴とするところは、図１に示す実施形態に比べて、出力データラッチ３０にラッチされた出力データを入力側にフィードバックさせ、入力データ又は出力データラッチ３０からのフィードバックデータのいずれかを選択して入力データラッチ３３に出力する入力データセレクタ３４を設け、コントロール回路３１に入力データセレクタ３４を切り替えるセレクト信号を出力する機能を付加することにより、先行する演算の結果を次の演算の入力とする演算を連続して実行できるようにしたことにある。このような構成においては、例えば演算ブロック１〜５は、演算情報により除算もしくは開平の二種類の演算を行ない、先行する除算もしくは開平の演算結果を次の入力オペランドとして用いた除算もしくは開平演算を演算間に連続して実行することもできる。
【００３０】
また、このような実施形態において、演算完了検出回路１０から演算完了信号がコントロール回路３１に入力されてから、演算を再開させるまでの時間はコントロール回路３１内に適切な遅延回路を設けることにより容易に調整可能であるため、出力データラッチ３０にラッチされたデータの入力側へのフィードバック経路において先行する演算の結果に正規化等の処理を加えた後、入力とすることも可能である。これにより、出力データを一旦演算器の外部に出すことなく演算器と同様に非同期で出力データに様々な処理を施すことが可能となり、出力データを一旦外部に出力して外部の同期タイミングに基づいて一旦保持した後演算器の入力側に供給する場合に比べて、連続演算を速く実行することが可能となる。
【００３１】
【発明の効果】
以上説明したように、本発明によれば、演算の最終ループを検出した後演算ループを遮断し、演算が終了した時点で最終段の演算ブロックを除く演算ブロックの初期化が終了又は開始されている状態とすることにより、、連続演算を行なう場合に各演算の間の演算ブロックの初期化が不要となり、従来よりも効率的に演算を行なうことが可能となり、演算時間が短縮され、消費電力を低減することができる。
【図面の簡単な説明】
【図１】請求項１，２又は３記載の発明の一実施形態に係る非同期式演算器の構成を示す図である。
【図２】請求項４又は５記載の発明の一実施形態に係る非同期式演算器の構成を示す図である。
【図３】従来の非同期式演算器の構成を示す図である。
【図４】図３の演算器において演算が開始された後の動作を説明するための図である。
【符号の説明】
１〜５  演算ブロック
１０  演算完了検出回路
１１〜１５  ブロック演算完了検出回路
２１〜２５  初期化回路
３０  出力データラッチ
３１  コントロール回路
３２  ループセレクタ
３３  入力データラッチ
３４  入力データセレクタ
３５  最終ループ検出回路
【図１】
0003544841.tif 000002
【図２】
0003544841.tif 000003
【図３】
0003544841.tif 000004
【図４】
0003544841.tif 000005