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