(57)【要約】【課題】動作周波数を高くすることなく、低い動作周波数でも演算性能を向上することができる、リアルタイム制御演算処理に最適な演算処理装置を提供する。【解決手段】複数の入力データを保持するための入力メモリ２と、加減乗除、論理演算および数値比較を行うための複数の算術演算ユニット１と、前記算術演算ユニットにて実行する機能を決定するための複数のオペコード設定メモリ４と、前記算術演算ユニットからの演算結果を保持する出力メモリ３とを備えた数値の演算処理を行う演算処理装置において、算術演算ユニット１にて実行された演算結果を用いてシフト処理する複数のバレルシフタ回路５と、該演算結果のシフト量を決定する設定メモ９と、バレルシフタ回路５で得られた複数の演算結果を切替えて出力するマルチプレクサ７と、マルチプレクサ７からの出力値を選択する演算機能コード設定メモリ８を備えたものである。【選択図】　　　図１
2004054335.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力データを保持するための入力メモリ（２）と、加減乗除、論理演算および数値比較を行うための複数の算術演算ユニット（１）と、前記算術演算ユニットにて実行する機能を決定するための複数のオペコード設定メモリ（４）と、前記算術演算ユニットからの演算結果を保持する出力メモリ（３）とを備えた数値の演算処理を行う演算処理装置において、
前記算術演算ユニット（１）にて実行された演算結果を用いてシフト処理する複数のバレルシフタ回路（５）と、
該演算結果のシフト量を決定する設定メモリ（９）と、
前記バレルシフタ回路（５）で得られた複数の演算結果を切替えて出力するマルチプレクサ（７）と、
前記マルチプレクサからの出力値を選択する演算機能コード設定メモリ（８）と、備えたことを特徴とする演算処理装置。
【請求項２】
リミット演算処理を行うためのコンパレータ（１０）と、
上限および下限リミット設定値を保存するためのメモリ（１１）と、前記コンパレータ機能を有効とするフラグメモリ（１２）を備えたことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記算術演算ユニット（１）は、加算結果にキャリーが発生する場合には１を出力し、ボローが発生する場合には−１を出力する加算器（１３）と、この加算器の機能を有効とするためのフラグメモリ（１４）を内蔵することを特徴とする請求項１または２に記載の演算処理装置。
【請求項４】
前記演算処理装置を、複数個並列に配置したことを特徴とする請求項１〜３に記載の演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサやディジタルシグナルプロセッサ（ＤＳＰ）を利用した数値の演算処理を行う演算処理装置に関するものである。
【０００２】
【従来の技術】
従来のマイクロプロセッサやディジタルシグナルプロセッサ（ＤＳＰ）を利用した数値の演算処理を行う演算処理装置は図６に示すようになっている。図６は従来例を示す演算処理装置のブロック図である。
図６において、１は加減乗除、論理演算および数値比較などを行う算術演算ユニット、２は算術演算ユニット１へ入力される値を保持する入力メモリで、ＡとＢの二つで構成される。３は演算結果を保持する出力メモリＲ、４は算術演算ユニット１にて処理される機能を切りかえるためのオペコード設定メモリである。
ここで、加算処理を行う際を考えてみると、まず、加算を実行するためのオペコードをセットし、入力値としてメモリＡに１０、メモリＢに２０の数値をセットした場合、算術演算ユニット１からの出力値としては、（１０＋２０＝）３０を得ることになる。
この例は、簡単な演算処理であるが、一般的な演算処理を行うシステムでは、複雑な演算が数多く処理されており、算術演算ユニット１にて演算した結果を入力メモリ２にフィードバックし、１つの算術演算ユニットを何度も利用してシステム全体の演算処理を行っている。
また、最近では画像処理のように複雑な演算を行うために、画像処理プロセッサとして算術演算ユニットの中に複数の機能モジュールを配置したものが提案されている（例えば，特表２０００−５０３４２７号）。
【０００３】
【発明が解決しようとする課題】
ところが、従来技術のような算術演算ユニットを利用して演算処理を行う場合、演算の高速化を実現するためには、マイクロプロセッサやＤＳＰの動作周波数を高くして対応することが一般的である。これは、チップの発熱や放射ノイズの原因となり、製品の信頼性を低減させる要因となる。
また、算術演算ユニットを並列に配置することで、高速化を実現する手段もある。特表２０００−５０３４２７号の画像処理プロセッサでは、並列演算により最終的には１つの演算処理結果を出力することが可能となっているが、複数の演算処理結果を出力できないため並列演算性を生かした処理が実現できていない。
さらに、従来技術のマイクロプロセッサやＤＳＰを、複数のタスクからなるリアルタイム処理システムに使用した場合、１つの算術演算ユニットを複数の異なる処理のために切り替えて演算を行うため、一定時間ごとに演算結果を出力することが困難となっている（演算処理時間は一定ではない）。つまり、現状ではリアルタイム処理専用の演算ユニットは存在していない。
【０００４】
本発明は上記課題を解決するためになされたものであり、動作周波数を高くすることなく、低い動作周波数でも演算性能を向上することができる、リアルタイム制御演算処理に最適な演算処理装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記問題を解決するため、請求項１記載の本発明は，、複数の入力データを保持するための入力メモリ（２）と、加減乗除、論理演算および数値比較を行うための複数の算術演算ユニット（１）と、前記算術演算ユニットにて実行する機能を決定するための複数のオペコード設定メモリ（４）と、前記算術演算ユニットからの演算結果を保持する出力メモリ（３）とを備えた数値の演算処理を行う演算処理装置において、前記算術演算ユニット（１）にて実行された演算結果を用いてシフト処理する複数のバレルシフタ回路（５）と、該演算結果のシフト量を決定する設定メモリ（９）と、
前記バレルシフタ回路（５）で得られた複数の演算結果を切替えて出力するマルチプレクサ（７）と、前記マルチプレクサからの出力値を選択する演算機能コード設定メモリ（８）と、備えたものである。
請求項１記載の演算処理装置によれば、内蔵する各算術演算ユニットのオペコード設定および、マルチプレクサ出力値を選択する演算機能コードを利用することで、本演算ユニットにて処理できる演算機能を数多く実現でき、一度に複雑な演算処理も可能となる。特に、モータ制御システムのような演算処理にて、頻繁に利用される演算パターンを本演算ユニットとして構成することで、従来実現が困難であった高度な演算処理も可能となる。また、演算ユニットの内部構成を並列して演算処理できるようにすることで、更なる処理性能の向上につながる。さらに、本演算ユニットでは、演算処理に要するクロック数が毎回同一クロック数であるため、処理時間の予測が可能となり、決められた時間内に演算処理を完了しなければならないリアルタイム制御に最適となる。すなわち、演算ユニットの動作周波数を高くしなくても、演算処理性能の向上とリアルタイム性を実現し、チップの発熱の抑制および放射ノイズの防止につながることができる。
【０００６】
請求項２記載の本発明は，請求項１記載の演算処理装置において、リミット演算処理を行うためのコンパレータ（１０）と、上限および下限リミット設定値を保存するためのメモリ（１１）と、前記コンパレータ機能を有効とするフラグメモリ（１２）を備えたものである。
請求項２記載の演算処理装置によれば、最終的な演算結果の値にリミット処理を行いたい場合、上限と下限のリミット処理を一度に実行できるため、処理の高速化につながる。また、リミット処理を行わない場合は、有効フラグを無効にしておくことで、コンパレータへの入力データをスルー状態とする。これにより、リミット処理の演算実行あり／なしに関わらず、一定の演算クロック数にて処理を完了させることができ、リアルタイム性も維持できることになる。
【０００７】
請求項３記載の本発明は，　請求項１または２に記載の演算処理装置において、前記算術演算ユニット（１）は、加算結果にキャリーが発生する場合には１を出力し、ボローが発生する場合には−１を出力する加算器（１３）と、この加算器の機能を有効とするためのフラグメモリ（１４）を内蔵することを特徴とする。
請求項３記載の演算処理装置によれば、従来では条件判断（ｉｆ文などによる処理）が必要であった、キャリーとボローを利用した演算処理において、本加算器のキャリーおよびボロー処理回路を有効にフラグ設定するのみで演算を実行できることになる。つまり、数クロックを要する条件判断処理が１クロックで実現可能となり、演算処理性能を向上させることができる。
【０００８】
請求項４記載の本発明は、請求項１〜３に記載の演算処理装置において、前記演算処理装置を複数個並列に配置したものである。
請求項４記載の演算処理装置によれば、請求項１から３記載の演算ユニットにて処理される演算を、複数の演算ユニットにて並列処理させることで、更なる演算の高速化を実現できる。また、多軸モータ制御システムのように、同様の演算処理を並行して実行する場合、複数個並列に配置した演算ユニットの効果が顕著となる。すなわち、本特許の目的とする演算ユニットの動作周波数を高くしなくても、演算処理性能の向上とリアルタイム性を実現し、チップの発熱の抑制および放射ノイズの防止につなげることができる。
【０００９】
【発明の実施の形態】
以下、本発明の実施例を図に基づいて説明する。
図１は本発明の第１実施例を示す演算処理装置のブロック図である。
１は算術演算ユニット、２は入力メモリ、３は出力メモリ、４はオペコード設定メモリ、５はバレルシフタ回路、６は回路接続網、７はマルチプレクサ、８は演算機能コード設定メモリ、９はシフト量設定メモリである。なお、構成要素のうち、算術演算ユニット１と、入力メモリ２と、出力メモリ３と、オペコード設定メモリ４については本装置に複数設けた構成以外は従来と同じであるため、その説明を省略する。
【００１０】
本発明の特徴は以下のとおりである。
すなわち、演算処理装置は、算術演算ユニット１にて実行された演算結果を用いてシフト処理する複数のバレルシフタ回路５と、該演算結果のシフト量を決定する設定メモ９と、バレルシフタ回路５で得られた複数の演算結果を切替えて出力するマルチプレクサ７と、マルチプレクサ７からの出力値を選択する演算機能コード設定メモリ８を備えた点である。
【００１１】
次に動作について説明する。
演算処理措置は、複数の入力データを保持するための入力メモリ２として、ＩＮ１、ＩＮ２‥ＩＮｍが配置されており、加減乗除、論理演算および数値比較を行うための複数の算術演算ユニット１（ＡＬＵ１、ＡＬＵ２、‥ＡＬＵｎ）に接続されている。算術演算ユニットＡＬＵ１には、ＩＮ１とＩＮ２のデータが入力され、算術演算ユニットＡＬＵ２には、ＩＮ３とＩＮ４のデータが入力されている。各算術演算ユニットにて実行する機能を決定するオペコード設定メモリ４は、算術演算ユニットの数だけ配置されており、前記ＡＬＵ１とＡＬＵ２にはオペコード１とオペコード２が対応する。各算術演算ユニット１にて実行された演算結果は、左右にシフト処理するバレルシフタ回路５に接続され、シフト量を決定する設定メモリ９に格納された数値によりシフト処理される。図ではＡＬＵ１の演算結果はＢＲＬ１に、ＡＬＵ２の演算結果はＢＲＬ２に接続されており、シフト量はＳｈｉｆｔ１とＳｈｉｆｔ２のメモリ値により決定される。ＢＲＬ１とＢＲＬ２からの出力値は、ＡＬＵ３に入力され、オペコード３に対応する演算処理が実行され、その演算結果はＢＲＬ３へ入力される。一方、ＢＲＬ１とＢＲＬ２およびＢＲＬ３の出力値、さらにＩＮｍの入力データは、算術演算ユニット１とバレルシフタ回路５を複数含む回路接続網６に接続され、その他の演算処理が可能となっている。回路接続網６からの出力値は、複数の演算結果を切り替えて出力するマルチプレクサ７に接続される場合もあれば、また更なる算術演算ユニットＡＬＵｎに入力され、オペコードｎに対応する演算処理を実行し、その演算結果がＢＲＬｎへ入力されシフト処理を行い、最終的にマルチプレクサに入力される場合もある。前記マルチプレクサには、出力値を選択する演算機能コード設定メモリ（８）からのデータが入力され、演算出力値を保持する出力メモリ（３）にデータが格納される。
【００１２】
上記算術演算ユニットにて実行可能な処理例として、以下のようなものがある。ここでは、入力されるデータをＡとＢとした場合について記述する。
・Ａ　＋　Ｂ　（加算）
・Ａ　−　Ｂ　（減算）
・Ａ　×　Ｂ　（乗算）
・Ａ　÷　Ｂ　（除算）
・｜Ａ　＋　Ｂ｜　（加算絶対値）
・Ａ　＆　Ｂ　（論理ＡＮＤ）
・Ａ　｜　Ｂ　（論理ＯＲ）
・Ａ　＾　Ｂ　（論理ＥＸ−ＯＲ）
・Ａ　＜　Ｂ，Ａ　＞　Ｂ　（数値の大小比較）
・Ａ　＝　Ｂ，Ａ　！＝　Ｂ　（数値の一致，不一致）
などが、各算術演算ユニットにて実行できる。
【００１３】
よって、上記演算処理装置によれば、次のような演算処理を一度に実行可能とすることができる。説明を簡略化するため、この演算例ではＢＲＬ３の演算結果が回路接続網６にて何も処理されずスルーしてＡＬＵｎに接続され、シフト処理は乗算を実行する場合のみ行っているものとする。
【００１４】
Ｒ１＝（ＩＮ１＋ＩＮ２）
Ｒ２＝（ＩＮ３−ＩＮ４）
Ｒ３＝（（ＩＮ１＋ＩＮ２）×（ＩＮ３−ＩＮ４））＞＞Ｓｈｉｆｔ３
・
・
Ｒｎ＝（（（ＩＮ１＋ＩＮ２）×（ＩＮ３−ＩＮ４））＞＞Ｓｈｉｆｔ３）＋Ｉ　Ｎｍ
【００１５】
本発明の第１実施例は上記に述べた構成にしたので、内蔵する各算術演算ユニットのオペコード設定、およびマルチプレクサ出力値を選択する演算機能コードを利用することで、本演算処理装置にて処理できる演算機能を数多く実現でき、一度に複雑な演算処理も可能となり、演算性能を向上させることできる。
【００１６】
図２は、本発明の演算処理装置におけるタイミングチャートを示す図であり、図１と合わせて以下に説明する。
図２において、１６はクロック、１７はＳｔａｒｔ信号、１８は演算機能コードデータ、１９はオペコードデータ、２０はシフトデータである。
図２のように、本発明の演算処理装置はクロック１６に同期して動作し、演算ユニットの処理はＳｔａｒｔ信号１７が有効となっている期間に行われる。データ処理の流れに沿って説明すると、まず演算処理装置にて演算を開始する前に、演算機能コードデータを演算機能コード設定メモリ８に、オペコードデータをオペコード設定メモリ４に、シフトデータをシフト量設定メモリ９に設定する。
次に、Ｓｔａｒｔ信号１７を有効とすることで、前記のメモリに設定した演算機能コードデータ１８（ＭＵＸ　Ｃｏｄｅ）と、オペコードデータ１９（ＯＰ１〜ＯＰｎ）と、シフトデータ２０（Ｓｈｉｆｔ１〜Ｓｈｉｆｔｎ）が演算ユニットに入力される。
これにより、演算処理装置内部の処理が開始されることになり、最初のクロックサイクルでは、入力メモリ２（ＩＮ１〜ＩＮｍ）に演算を行うためのデータがセットされる。次のクロックサイクルでは、ＡＬＵ１とＢＲＬ１およびＡＬＵ２とＢＲＬ２の演算処理が並行して実行される。引き続くクロックサイクルでは、ＡＬＵ３とＢＲＬ３の演算処理が実行され、その後のクロックサイクルでは算術演算ユニット１とバレルシフタ回路５を複数含む回路接続網６における演算処理、ＡＬＵｎとＢＲＬｎの演算処理が実行されることになる。ここで、回路接続網６に内蔵される算術演算ユニット１とバレルシフタ回路５の個数によって演算処理に必要とされるクロック数は異なることになる。
以上の各算術演算ユニット１とバレルシフタ回路５による演算処理が完了した後、最後のクロックサイクルにて演算機能コードデータの設定値によりマルチプレクサ７から必要な演算結果データを出力メモリにセットすることになる。この出力メモリへのデータセットが完了すると共に、Ｓｔａｒｔ信号は無効となり演算処理装置での処理が完了する。ここで、本演算処理装置による演算処理を複数回実行する場合は、図２による動作を繰り返して行うことになる。
【００１７】
よって、図２に示されているように、１回の演算処理装置での処理に要するクロック数は一定であることから、処理時間の予測が可能となり、決められた時間内に演算処理を完了しなければならないリアルタイム処理システムに最適であるといえる。
【００１８】
次に本発明の第２実施例を説明する。
図３は本発明の第２実施例を示す演算処理装置のブロック図である。
図３において、１０はコンパレータ、１１は上限／下限リミット設定メモリ、１２はコンパレータ機能有効フラグメモリ、２１はコンパレータ入力データＬＩＮである。
第２実施例が第１実施例と異なる点は、リミット演算処理を行うためのコンパレータ１０と、上限および下限リミット設定値を保存するためのメモリ１１と、コンパレータ機能を有効とするフラグメモリ１２を備えたことである。
次に動作説明を簡略化するため、図１との相違点についてのみ説明するものとする。
演算処理装置に設けた回路接続網から出力されるデータは、コンパレータ１０（ＣＭＰ）への入力データ２１（ＬＩＮ）となる。予め、上限／下限リミット設定メモリ１１にセットされたデータにより、ＬＩＮはリミット処理されることになる。コンパレータ１０では、ＬＩＮが上限リミット設定値から下限リミット設定値の範囲内である場合、ＬＩＮをそのまま出力する。しかし、ＬＩＮが上限リミット設定値以上の場合は、上限リミット設定値を出力し、ＬＩＮが下限リミット設定値以下の場合は、下限リミット設定値を出力する。また、このコンパレータ１０でのリミット処理が実行されるのは、コンパレータ機能を有効とするフラグメモリ１２が有効にセットされている場合のみである。コンパレータ機能が無効の場合は、入力データＬＩＮはコンパレータ１０をスルーして出力されることになる。
【００１９】
本発明の第２実施例は上記に述べた構成にしたので、本演算処理装置では、リミット処理を算術演算ユニットの大小比較（＜，＞など）にて実行する場合と異なり、上限と下限のリミット処理を一度に１クロックで実行可能なため、処理の高速化を実現できる。また、リミット処理の演算実行ありなしに関わらず、一定の演算クロック数にて処理を完了させるため、リアルタイム性を維持することができる。
【００２０】
次に本発明の第３実施例を説明する。
図４は本発明の第３実施例を示す算術演算ユニットに内蔵する加算器の構成図である。
図４において、１３は加算器、１４は加算器機能有効フラグメモリ、
第３実施例が第１、第２実施例と異なる点は，算術演算ユニット１が、加算結果にキャリーが発生する場合には１を出力し、ボローが発生する場合には−１を出力する加算器１３と、この加算器の機能を有効とするためのフラグメモリ１４を備えたものである。この有効フラグが無効の場合は、通常の加算器として機能するものである。
【００２１】
次に動作を説明する。
この加算器１３を内蔵する算術演算ユニット１を使用することで、従来の加算器にて加算結果にキャリーまたはボローが発生した場合、各状態を示すフラグを利用し、ソフトウェアにより一致／不一致の演算（＝，！＝など）にて条件判断を行い、キャリーの場合は上位ワードに１を加算し、ボローの場合は１を減算していた処理が削減可能となる。つまり、加算器機能フラグメモリ１４を有効とし、キャリー／ボローどちらの処理でも加算結果と上位ワードを加算すれば良いことになる。
本発明の第３実施例は上記に述べた構成にしたので、数クロックを要していた条件判断処理が１クロックで実現可能となり、演算処理性能を向上させることができる。
【００２２】
次に本発明の第４実施例を説明する。
図５は本発明の第４実施例を示す演算処理装置のブロック図である。
第４実施例が第１、第２実施例と異なる点は第１、第２実施例で示した演算処理装置を複数並列に配置した点である。各演算ユニット内部での処理内容は、既に実施例として記載しているとおりである。しかし、これら演算処理装置を並列に配置することで、本発明の演算ユニットを１個利用した場合、数回に分けて演算を行っていた処理を、並列演算することが可能となる。
【００２３】
本発明の第４実施例は上記に述べた構成にしたので、並列した演算処理を実行するシステムでは、本演算ユニットの並列演算機能を活用することで、大幅な演算性能を向上させることができる。
【００２４】
【発明の効果】
請求項１記載の演算処理装置によれば、内蔵する各算術演算ユニットのオペコード設定および、マルチプレクサ出力値を選択する演算機能コードを利用することで、本演算ユニットにて処理できる演算機能を数多く実現でき、一度に複雑な演算処理も可能となる。特に、モータ制御システムのような演算処理にて、頻繁に利用される演算パターンを本演算ユニットとして構成することで、従来実現が困難であった高度な演算処理も可能となる。また、演算ユニットの内部構成を並列して演算処理できるようにすることで、更なる処理性能の向上につながる。さらに、本演算ユニットでは、演算処理に要するクロック数が毎回同一クロック数であるため、処理時間の予測が可能となり、決められた時間内に演算処理を完了しなければならないリアルタイム制御に最適となる。すなわち、演算ユニットの動作周波数を高くしなくても、演算処理性能の向上とリアルタイム性を実現し、チップの発熱の抑制および放射ノイズの防止につなげることができる。
【００２５】
請求項２記載の演算処理装置によれば、最終的な演算結果の値にリミット処理を行う場合、上限と下限のリミット処理を一度に実行できるため、処理の高速化につながる。また、リミット処理を行わない場合は、有効フラグを無効にしておくことで、コンパレータへの入力データをスルー状態とする。これにより、リミット処理の演算実行ありなしに関わらず、一定の演算クロック数にて処理を完了させることができ、リアルタイム性が維持されることになる。
【００２６】
請求項３記載の演算処理装置によれば、従来では条件判断（ｉｆ文などによる処理）が必要であった、キャリーとボローを利用した演算処理において、本発明の加算器のキャリーおよびボロー処理回路を有効にフラグ設定するのみで演算を実行できることになる。つまり、数クロックを要する条件判断処理が１クロックで実現可能となり、演算処理性能を向上させることができる。
【００２７】
請求項４記載の演算処理装置によれば、請求項１から３記載の演算ユニットにて処理される演算を別の演算ユニットに処理させることで、更なる演算の高速化を実現できる。また、多軸モータ制御のように、同様の演算処理を並行して複数実行する場合、複数個並列に配置した演算ユニットの効果が顕著となる。すなわち、本特許の目的とする演算ユニットの動作周波数を高くしなくても、演算処理性能の向上とリアルタイム性を実現し、チップの発熱の抑制および放射ノイズの防止につなげることができる。
【図面の簡単な説明】
【図１】本発明の第１実施例を示す演算処理装置のブロック図である。
【図２】本発明のタイミングチャートを示す図である。
【図３】本発明の第２実施例を示す演算処理装置のブロック図である。
【図４】本発明の第３実施例を示す算術演算ユニットに内蔵する加算器の構成図である。
【図５】本発明の第４実施例を示す演算処理装置のブロック図である。
【図６】従来例を示す演算処理装置のブロック図である。
【符号の説明】
１：算術演算ユニット
２：入力メモリ
３：出力メモリ
４：オペコード設定メモリ
５：バレルシフタ回路
６：回路接続網
７：マルチプレクサ
８：演算機能コード設定メモリ
９：シフト量設定メモリ
１０：コンパレータ
１１：上限／下限リミット設定メモリ
１２：コンパレータ機能有効フラグメモリ
１３：加算器
１４：加算器機能有効フラグメモリ
１５：演算処理装置
１６：クロック
１７：Ｓｔａｒｔ信号
１８：演算機能コードデータ
１９：オペコードデータ
２０：シフトデータ
２１：コンパレータ入力データＬＩＮ
【図１】
2004054335.tif 000003
【図２】
2004054335.tif 000004
【図３】
2004054335.tif 000005
【図４】
2004054335.tif 000006
【図５】
2004054335.tif 000007
【図６】
2004054335.tif 000008