(57)【要約】【課題】演算処理能力を向上したデータ処理装置を提供する。【解決手段】データ処理装置は、演算器（２１ａ）と、データ特徴判定回路（２１ｂ）とを具備する。演算器（２１ａ）は、複数のブロック（４１２／４１４、４２２／４２４）に分割された演算データ（４１、４２）を、ブロックの各々に含まれるサブブロック毎に所定の演算を行う。データ特徴判定回路（２１ｂ）は、ブロック（４１２／４１４、４２２／４２４）の各々に付加される特徴情報（４１１／４１３、４２１／４２３）に基づいて、演算されるブロック毎に演算器（２１ａ）の動作を制御する。【選択図】図４
2008003663.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックに分割された演算データに対し、前記複数のブロックの各々に含まれるサブブロック毎に所定の演算を前記サブブロックの並びの順に行う演算器と、
前記複数のブロックの各々に付加され、前記ブロックの特徴を示す特徴情報に基づいて、前記ブロック毎に前記演算器の動作を制御するデータ特徴判定回路と
を具備する
データ処理装置。
【請求項２】
前記演算器は、
前記演算データを前記演算器からバイパスして出力するバイパス回路と、
前記特徴情報に基づいて、前記演算器の出力または前記バイパス回路の出力の一方を選択して出力する選択回路と
を備える
請求項１に記載のデータ処理装置。
【請求項３】
前記サブブロックは、１ビットのデータを含み、
請求項１または請求項２に記載のデータ処理装置。
【請求項４】
前記サブブロックは、複数ビットのデータを含み、
請求項１または請求項２に記載のデータ処理装置。
【請求項５】
前記演算データを演算した結果を示す結果データに基づいて、前記結果データの前記ブロックに前記特徴情報を付加する第１データ特徴情報生成回路をさらに具備する
請求項１から請求項４のいずれかに記載のデータ処理装置。
【請求項６】
前記演算器に供給するデータを格納するレジスタと、
データバスを介して前記レジスタに格納データを格納するとき、前記格納データに基づいて、前記格納データの前記ブロックに前記特徴情報を付加する第２データ特徴情報生成回路と
をさらに具備する
請求項１から請求項５のいずれかに記載のデータ処理装置。
【請求項７】
主記憶部と、
前記主記憶部に格納されるデータの前記ブロックに前記特徴情報を付加する第３データ特徴情報生成回路と
をさらに具備する
請求項１から請求項５のいずれかに記載のデータ処理装置。
【請求項８】
前記演算器回路に供給するデータを格納するレジスタと、
データバスを介して前記レジスタに格納データを格納するとき、予め定められた前記特徴情報を固定的に付加する固定情報付加回路と
をさらに具備する
請求項１から請求項５のいずれかに記載のデータ処理装置。
【請求項９】
前記特徴情報は、前記ブロックに含まれる前記サブブロックが全て０であるか否かを示す
請求項１から請求項８のいずれかに記載のデータ処理装置。
【請求項１０】
前記特徴情報は、前記ブロックに含まれる前記サブブロックが全て１であるか否かを示す
請求項１から請求項８のいずれに記載のデータ処理装置。
【請求項１１】
前記特徴情報は、前記ブロックの最下位ビットのみ１であるか否かを示す
請求項１から請求項８のいずれかに記載のデータ処理装置。
【請求項１２】
前記特徴情報は、複数のビットを含み、
前記ブロックの特徴を示す
請求項１から請求項１１のいずれかに記載のデータ処理装置。
【請求項１３】
レジスタ書き込みバスを介して複数の演算データを格納するレジスタファイルと、
前記レジスタファイルから供給される第１演算データおよび第２演算データに基づいて指定された演算を行い、演算結果を前記レジスタ書き込みバスに出力する演算器と、前記第１演算データおよび第２演算データは、複数のブロックに分割され、前記複数のブロックの各々は、前記複数のブロックの各々の特徴を示すデータ特徴情報が付加され、
主記憶部から入力されるデータをデータバスに乗せるバスインタフェース部と、
前記データバスに乗せられたデータに前記データ特徴情報を付加して前記レジスタ書き込みバスに乗せるデータ特徴情報付加回路と、
を具備し、
前記演算器は、
前記第１演算データおよび前記第２演算データの前記データ特徴情報に基づいて、前記演算器の演算処理を制御するデータ特徴判定回路と、
前記指定された演算処理の結果を示す演算結果を前記複数のブロックに分割して前記データ特徴情報を付加するデータ特徴情報生成回路と
を備える
データ処理装置。
【請求項１４】
複数のブロックに分割された演算データに対し、前記複数のブロックの各々に含まれるサブブロック毎に所定の演算を前記サブブロックの並びの順に行う演算ステップと、
前記複数のブロックの各々に付加され、前記ブロックの特徴を示す特徴情報に基づいて、前記ブロック毎に前記演算ステップの動作を制御するデータ特徴判定ステップと
を具備する
データ処理方法。
【請求項１５】
前記演算データを前記演算ステップからバイパスして出力するバイパスステップと、
前記特徴情報に基づいて、前記演算ステップにより出力されるデータまたは前記バイパスステップにより出力されるデータの一方を選択して出力する選択ステップと
をさらに具備する
請求項１４に記載のデータ処理方法。
【請求項１６】
前記演算ステップは、前記演算データを演算した結果を示す結果データに基づいて、前記結果データの前記ブロックに前記特徴情報を付加するデータ特徴情報生成ステップを具備する
請求項１４または請求項１５に記載のデータ処理方法。
【請求項１７】
前記演算データを格納するレジスタに前記特徴情報を付加したデータを格納するステップをさらに具備する
請求項１４から請求項１６のいずれかに記載のデータ処理方法。
【請求項１８】
前記演算データおよび前記結果データを格納する主記憶に、前記特徴情報を付加したデータを格納するステップをさらに具備する
請求項１４から請求項１６のいずれかに記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法に関し、特に、処理するデータを分割して処理するデータ処理装置、データ処理方法に関する。
【背景技術】
【０００２】
近年、大量の情報を処理する必要性に応え、情報処理の高速化が進展している。処理速度を向上させるために、データ処理の演算をシリアルに行って処理時間の短縮が図られることがある。すなわち、回路構成を単純化しサイクルタイムを短縮することがある。
【０００３】
そのようなシリアル演算する演算装置は、例えば、特開２００４−３１８６７０号公報に開示されている。この演算装置は、第１のパラレル・シリアル変換回路と、第２のパラレル・シリアル変換回路と、シリアル演算器と、シリアル・パラレル変換回路を含む。第１のパラレル・シリアル変換回路は、第１のパラレルデータを各々が所定のビット数からなる所定数の第１の部分データに分解して、所定数の第１の部分データを１つずつ順次供給する。第２のパラレル・シリアル変換回路は、第２のパラレルデータを各々が所定のビット数からなる所定数の第２の部分データに分解して該所定数の第２の部分データを１つずつ順次供給する。シリアル演算器は、順次供給される所定数の第１の部分データと、順次供給される所定数の第２の部分データとに対する演算を部分データ毎に所定数分順次実行する。シリアル・パラレル変換回路は、演算器の演算結果を所定数分順次受け取り、１つに纏めて第３のパラレルデータとして出力する。
【０００４】
【特許文献１】特開２００４−３１８６７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この演算装置では、演算ソースデータおよび演算ターゲットデータは、パラレル−シリアル変換されて全て演算され、結果が出力される。したがって、演算されるデータのワード長に応じた演算時間が必要になる。演算を高速化するために演算処理の単位を小さくしていくと、ワード長のデータに対し全ての演算処理が終了するまで演算を繰り返すため、演算器で処理する回数が増大し、それに対応して演算装置の占有時間およびレイテンシが増大する。すなわち、演算器で処理する情報量が、常にワード長で決定される最大情報量であるため、ワード長のデータのうち実際に演算器で処理する情報として有効な情報量（有効データのビット数）を処理するのに比べ、処理能力の低下および消費電力の増大を招く。
【０００６】
本発明は、演算処理能力を向上したデータ処理装置を提供する。
【課題を解決するための手段】
【０００７】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００８】
本発明の観点では、データ処理装置は、演算器（２１ａ）と、データ特徴判定回路（２１ｂ）とを具備する。演算器（２１ａ）は、複数のブロック（４１２、４１４、４２２、４２４）に分割された演算データ（４１、４２）を、複数のブロックの各々に含まれるサブブロック毎に所定の演算をシリアルに行う。複数のブロックの各々（４１２、４１４、４２２、４２４）には、各ブロックの特徴を示す特徴情報（４１１、４１３、４２１、４２３）が付加される。データ特徴判定回路（２１ｂ）は、その特徴情報（４１１、４１３、４２１、４２３）に基づいて、演算されるブロック毎に演算器（２１ａ）の動作を制御する。
【０００９】
本発明の他の観点では、データ処理方法は、演算ステップと、データ特徴判定ステップとを具備する。演算ステップは、複数のブロックに分割された演算データを、各ブロックに含まれるサブブロック毎に所定の演算をシリアルに行う。複数のブロックの各々には、各ブロックの特徴を示す特徴情報が付加される。データ特徴判定ステップは、その特徴情報に基づいて、演算されるブロック毎に演算ステップの動作を制御する。
【発明の効果】
【００１０】
本発明によれば、演算処理能力を向上したデータ処理装置を提供することができる。また、本発明によれば、シリアル演算処理または分割演算処理に要する平均的な演算器占有時間およびレイテンシを短縮するデータ処理装置を提供することが可能となる。したがって、処理能力の向上および消費電力の低減が可能となる。
【発明を実施するための最良の形態】
【００１１】
図を参照して本発明を実施するための最良の形態を説明する。本発明では、演算の対象となるデータの特徴に応じて演算器が制御される。
【００１２】
図１に本発明に係るデータ処理装置の概略構成を示す。データ処理装置は、データ処理部１０、主記憶部１２の他に、割り込みコントローラ１５、タイマ１６、シリアルインタフェース１７、ＤＭＡコントローラ１８等の周辺装置を具備し、システムバス１１を介して接続される。データ処理部１０は、主記憶部１２に格納されるプログラムコードに基づいて、主記憶部１２に格納されるデータやシリアルインタフェース１７等から取り込まれるデータを処理し、主記憶部１２あるいはシリアルインタフェース１７等に出力する。ＤＭＡコントローラ１８は、データ処理部１０に代わってシリアルインタフェース１７などの入出力部と主記憶部１２との間のデータ転送、あるいは、主記憶部１２内のデータ転送を制御する。タイマ１６は、所定のクロックに基づいて計時し、割り込みコントローラ１５を介してデータ処理装置１０に時間経過を通知する。割り込みコントローラ１５は、タイマ１６、シリアルインタフェース１７、ＤＭＡコントローラ１８等が発する割り込みを制御し、データ処理装置１０に通知する。データ処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を有する。なお、周辺装置は上記に限らず、外部装置との入出力インタフェースなど、様々な周辺装置を具備してもよい。
【００１３】
図２は、データ処理部（ＣＰＵ）１０の構成を示すブロック図である。データ処理部１０は、実行ユニット２１、レジスタファイル２２、命令デコーダ２３、命令レジスタ２４、プログラムカウンタ２５、バスインタフェース２７を具備する。バスインタフェース２７は、システムバス１１と、アドレスバス３２およびデータバス３３とを接続する。アドレスバス３２は、プログラムカウンタ２５、実行ユニット２１に接続される。アドレスバス３２により示されるプログラムカウンタ２５により示されるプログラムアドレス、あるいは、実行ユニット２１によって計算されたデータアドレスは、バスインタフェース２７を介してシステムバス１１に出力される。
【００１４】
システムバス１１からバスインタフェース２７を介して供給される命令コードは、データバス３３を経由して命令レジスタ２４に格納される。命令レジスタ２４に格納された命令コードは、命令デコーダ２３によってデコードされ、実行ユニット２１、レジスタファイル２２を制御する信号が生成される。命令レジスタ２４は、命令コードに含まれる例えば、飛び先アドレスをプログラムカウンタ２５に出力する。プログラムカウンタ２５は、実行されるプログラムのアドレスを歩進して保持し、あるいは、命令レジスタ２４から供給される飛び先アドレスを保持する。
【００１５】
命令デコーダ２３は、命令レジスタ２４に格納される命令コードに基づいて、演算の種類を指示する演算種別指示信号３８を実行ユニット２１に出力し、書き込みレジスタ指示信号３５、読み出しレジスタ指示信号３６、３７をレジスタファイル２２に出力する。レジスタファイル２２は、読み出しレジスタ指示信号３６、３７に基づいて、指示されたレジスタのデータを実行ユニット２１に出力する。また、レジスタファイル２２は、実行ユニット２１から出力される演算結果を、レジスタ書き込みバス３１を介して、書き込みレジスタ指示信号３５で指示されたレジスタに格納する。実行ユニット２１は、レジスタファイル２２から入力されるデータに演算種別指示信号３８により指示される加減算等の演算を実行し、演算結果をレジスタ書き込みバス３１、アドレスバス３２、データバス３３に出力する。
【００１６】
実行ユニット２１で扱うデータは、図３に示されるように、いくつかのブロックに分割され、各ブロックには、データ特徴情報が付加されている。一般的に、演算の対象となるデータは、ある特徴的な値を示す場合や、一定の規則（特徴）で配列される場合がある。したがって、データを複数のブロックに分割して、ブロック毎の特徴を付加することで、各ブロックの特徴に応じて演算処理を行うことにより、通常の演算処理に比べ、演算の不要なブロックに対する演算を省略することが可能になる。すなわち、局所的に演算処理の最適化を行うことができる。
【００１７】
例えば、ブロックの各ビットが、全て“０”、全て“１”である場合、ブロックが“１”（４ビットのブロックであれば２進数表記で“０００１”）である場合などにデータが特徴的であるとされる。ブロックの各ビットが全て“０”である場合に加算演算を行っても演算結果は変化しない。すなわち、桁上げ（キャリー）が発生しないため、演算速度を上げることが可能である。また、乗算であれば、演算結果は全て“０”になり、乗算演算するまでもなく結果が判明する。このように、実行ユニットで演算する処理量が、ワード長で決定される最大処理量に比べ、実際の演算に必要な処理量に削減される。
【００１８】
図３には、１６ビットデータを４ビット毎に４ブロックに分割した例が示される。最下位ビットデータＢ０から最上位ビットデータＢ１５までの１６ビットのデータは、Ｂ０〜Ｂ３をブロック５０、Ｂ４〜Ｂ７をブロック５１、Ｂ８〜Ｂ１１をブロック５２、Ｂ１２〜Ｂ１５をブロック５３の４ブロックに分割される。ブロック５０にはデータ特徴情報６０（データＡ０）が、ブロック５１にはデータ特徴情報６１（データＡ１）が、ブロック５２にはデータ特徴情報６２（データＡ２）が、ブロック５３にはデータ特徴情報６３（データＡ３）が、それぞれ付加される。図３では、実行ユニット２１に向けてシリアルに供給されることを示すように、ブロックとデータ特徴情報とが一列に並べて示されている。レジスタファイル２２には、データ特徴情報６０〜６３を集中して格納してもよい。各ブロックに含まれるデータは、４ビットに限定されることはない。また、ブロック数も４に限定されることはなく、６４ビットデータであれば、８ビット×８ブロック、４ビット×１６ブロック等に分割されてもよい。ブロックに分割されたデータは、１ビット毎にあるいは複数ビット毎にシリアル演算される。この演算する単位をサブブロックと呼ぶことにする。サブブロックは、１ビットであってもよいし、複数ビットであってもよい。
【００１９】
実行ユニット２１は、図４に示されるように、演算器２１ａと、データ特徴判定回路２１ｂと、データ特徴情報生成回路２１ｃとを具備する。演算器２１ａには、データ特徴情報が付加されたシリアルデータである演算ターゲットデータ４１および演算ソースデータ４２が、レジスタファイル２２から供給される。演算種別指示信号３８が、命令デコーダ２３から演算器２１ａとデータ特徴判定回路２１ｂとに供給される。演算器２１ａは、演算種別指示信号３８に基づいて、演算ターゲットデータ４１と演算ソースデータ４２との間の指定の演算をシリアルに実行する。データ特徴判定回路２１ｂは、演算ターゲットデータ４１および演算ソースデータ４２のデータ特徴情報に基づいて、演算種別指示信号３８により指示される演算において特徴のあるデータであるか否かを判定し、判定結果を演算器２１ａに出力する。演算器２１ａは、その結果に基づいて、演算ターゲットデータ４１と演算ソースデータ４２とに対して指定された演算をシリアルに行う。演算器２１ａから出力される演算結果は、データ特徴情報生成回路２１ｃによりデータ特徴情報が付加され、演算結果データ４３が実行ユニット２１から出力される。
【００２０】
データ特徴情報生成回路２１ｃは、たとえば、全てのビットが“０”であることを示すデータ特徴情報を生成する場合、図８（ａ）に示されるように、否定回路７１、論理和回路７２、論理積回路７３、フリップフロップ７４を備える。対象データが入力されると、否定回路７１により論理反転し、論理積回路７３により過去の特徴情報の状態と論理積が求められ、現在の特徴情報の状態がフリップフロップ７４に設定される。シリアルに入力されるデータに対して繰り返し、最終的にブロックのデータ特徴情報がフリップフロップ７４から出力される。なお、論理和回路７２は、初期値を与える回路である。また、全てのビットが“１”であることを示すデータ特徴情報を生成する場合、データ特徴情報生成回路２１ｃは、図８（ｂ）に示されるように、論理和回路７２、論理積回路７３、フリップフロップ７４を備える。データの特徴が“０”から“１”に変わるだけであり、図８（ａ）に示される否定回路７１がない回路によりデータ特徴情報が生成できる。ここで、データ特徴情報６０は１ビット構成で、ブロック５０の全てのビットが“０”である場合に特徴有りを示す“１”となり、それ以外の場合は“０”となることで特徴の有無が識別される。尚、ブロック５０の全てのビットが“１”である場合に特徴有りを示す“１”となり、それ以外の場合は“０”となることで特徴の有無が識別されるようにしてもよい。また、特徴有りを“１”とすることに限定されることはなく、特徴有りを“０”としてもよい。データ特徴情報６０は１ビット構成に限定されることはなく、２ビット以上の複数ビットの構成として、ブロック５０の全てのビットが“０”である場合のほか、全てのビットが“１”である場合も識別できるようにしてもよく、更に他の特徴情報を識別できるようにしてもよい。ブロック５０以外のデータ特徴情報もデータ特徴情報６０と同様な構成とすることができる。
【００２１】
実行ユニット２１の動作を説明する。図４に示されるように、演算ターゲットデータ４１は、たとえば、データ特徴情報４１１、ブロック４１２、データ特徴情報４１３、ブロック４１４を備える２ブロックのデータとする。同様に、演算ソースデータ４２は、データ特徴情報４２１、ブロック４２２、データ特徴情報４２３、ブロック４２４を備える２ブロックのデータとする。ブロック４１２、４２２の一方あるいは両方は全てのビットが“０”で、データ特徴情報４１１、４２１の一方あるいは両方が“１”すなわち特徴有りの状態を示しているものとする。他のブロックは、“０”および“１”を示すビットが混在している。このような演算ターゲットデータ４１と演算ソースデータ４２とを加算する。
【００２２】
図５は、ブロックが４ビットで構成される場合の実行ユニット２１の動作を示すタイムチャートである。図５（ａ）に実行ユニット２１の基本動作時間を示すクロック信号のタイミングが示され、各クロックサイクルに符号が付される（Ｔ１〜Ｔ１２）。この符号を用いて各信号の時間関係を説明する。
【００２３】
実行ユニット２１のターゲットデータ入力には、データ特徴情報４１１、ブロック４１２、データ特徴情報４１３、ブロック４１４の順に、ソースデータ入力には、データ特徴情報４２１、ブロック４２２、データ特徴情報４２３、ブロック４２４の順に入力データが供給される。
【００２４】
図５に示されるように、ブロック４１２の特徴を示すデータ特徴情報４１１およびブロック４２２の特徴を示すデータ特徴情報４２１（図５（ｂ）：Ａ０）は、ブロック４１２およびブロック４２２が演算器２１ａに入力される前にデータ特徴判定回路２１ｂに入力され、データの特徴の有無が判定される（図５：クロックサイクルＴ１）。
【００２５】
特徴の有無が演算器２１ａに入力されると、特徴の有無に応じて演算器２１ａの動作が制御される。データ特徴情報Ａ０は“１”すなわち特徴有りを示しているため、加算結果に桁上げの可能性はなく、桁上げ演算が省略され、演算時間は短縮される。クロックサイクルＴ１において判定した結果は、クロックサイクルＴ２〜Ｔ５に反映される。クロックサイクルＴ２において入力されるビットデータ（図５（ｂ）：Ｂ０）が加算され、クロックサイクルＴ３において加算結果（図５（ｃ）：Ｃ０）が演算器２１ａから出力される。加算結果（図５（ｃ）：Ｃ０）は、演算結果を格納するレジスタの所定のビット位置に格納される（図５（ｅ）：１）。加算結果（図５（ｃ）：Ｃ０）に基づいて、データ特徴情報生成部２１ｃはデータ特徴情報を演算し、クロックサイクルＴ４において、途中結果（図５（ｄ）：Ｄ０）が生成される。
【００２６】
クロックサイクルＴ３にブロック４１２、４２２の２ビット目のデータ（図５（ｂ）：Ｂ１）が演算器２１ａに入力され、加算演算される。加算結果（図５（ｃ）：Ｃ１）は、クロックサイクルＴ４に出力される。この加算結果（図５（ｃ）：Ｃ１）と保存されているデータ特徴情報の途中結果（図５（ｄ）：Ｄ０）とに基づいてデータ特徴情報の演算が行われ、クロックサイクルＴ５において途中結果（図５（ｄ）：Ｄ１）が得られる。
【００２７】
同じように、クロックサイクルＴ４にブロック４１２、４２２の３ビット目のデータ（図５（ｂ）：Ｂ２）が演算器２１ａに入力され、クロックサイクルＴ５にブロック４１２、４２２の最後のビット（図５（ｂ）：Ｂ３）が入力されて加算演算される。演算結果（図５（ｃ）：Ｃ２、Ｃ３）は、それぞれクロックサイクルＴ５、Ｔ６に出力される。
【００２８】
最初のブロックの最後のビットの加算演算が終了した後のクロックサイクルＴ７において、データ特徴情報の演算結果（図５（ｄ）：Ｄ３）が出力され、演算結果を格納するレジスタの所定のビット位置に格納される（図５（ｅ）：０）。したがって、クロックサイクルＴ７において、最初のブロックの演算結果が揃う。
【００２９】
このとき、既に次のブロックの演算が開始されている。クロックサイクルＴ６において、２ブロック目のデータ特徴情報４１３、４２３（図５（ｂ）：Ａ１）がデータ特徴判定回路２１ｂに入力される。２ブロック目のデータは、“０”すなわち特徴無しのデータであり、通常の加算が行われる。したがって、桁上げの可能性があるため、クロックサイクルＴ７〜Ｔ１０の演算時間は“特徴有り”の場合に比べて長くなる。
【００３０】
クロックサイクルＴ７において、２ブロック目の最初のビットのデータ（図５（ｂ）：Ｂ４）が入力され、加算演算される。加算結果（図５（ｃ）：Ｃ４）は、クロックサイクルＴ８に出力され、演算結果を格納するレジスタの所定のビット位置に格納される（図５（ｅ）：６）。データ特徴情報生成部２１ｃは、この加算結果（図５（ｃ）：Ｃ４）に基づいてデータ特徴情報の途中結果を初期設定し、クロックサイクルＴ９において途中結果Ｄ４が生成される（図５（ｄ）：Ｄ４）。
【００３１】
クロックサイクルＴ８〜Ｔ１０においても同じように、各ビットのデータ（図５（ｂ）：Ｂ５〜Ｂ７）が順次演算器２１ａに入力され、シリアルに加算が行われる。クロックサイクルＴ９〜Ｔ１１に加算結果（図５（ｃ）：Ｃ５〜Ｃ７）が出力され、その加算結果に基づいてデータ特徴情報が生成される（図５（ｄ））。したがって、クロックサイクルＴ１２において２ブロック目の演算結果に対するデータ特徴情報（図５（ｄ）：Ｄ７）が生成されて、所定のビット位置に設定される（図５（ｅ）：４）。すなわち、クロックサイクルＴ１２において、図４に示されるように、データ特徴情報４３１、ブロック４３２、データ特徴情報４３３、ブロック４３４を備える演算結果データ４３が、実行ユニット２１から出力されたことになる。
【００３２】
このように、データ特徴情報を各ブロックに備えることにより、演算時間を短縮することが可能となる。ここでは、１ビット毎にシリアル加算する実行ユニットを例に説明した。実行ユニットは、たとえば、４ビット毎に演算する実行ユニットであってもよい。上記の１ビットは４ビットのデータに対応し、１ブロックは１６ビットのデータとなる。１ワード４ブロックの構成とすれば、ワード長６４ビットのデータを同じように演算することが可能である。データを分割するブロック数は４に限定されることはない。また、ここでは下位ビットから演算する実行ユニットを説明したが、演算の種類によっては上位ビットから演算してもよい。また、演算時間の変更をクロックサイクルの時間によって示したが、演算に費やすクロック数を変更してもよいし、それらを組み合わせてもよい。
【００３３】
次に、さらに演算時間を短縮する演算バイパス回路を備える実行ユニットを説明する。図６は、演算バイパス回路を備える実行ユニット２１の構成を示すブロック図である。実行ユニット２１は、演算器２１ａ、データ特徴判定回路２１ｂ、データ特徴情報生成回路２１ｃ、バイパス回路２１ｄ、選択回路２１ｅを具備する。演算器２１ａには、データ特徴情報が付加されたシリアルデータである演算ターゲットデータ４１および演算ソースデータ４２が、レジスタファイル２２から供給される。演算種別指示信号３８が、命令デコーダ２３から演算器２１ａとデータ特徴判定回路２１ｂとに供給される。
【００３４】
演算器２１ａは、演算種別指示信号３８に基づいて、演算ターゲットデータ４１と演算ソースデータ４２との間の指定の演算をシリアルに実行し、演算結果を選択回路２１ｅに出力する。データ特徴判定回路２１ｂは、演算ターゲットデータ４１および演算ソースデータ４２のデータ特徴情報に基づいて、演算種別指示信号３８により指示される演算において特徴のあるデータであるか否かを判定し、判定結果を演算器２１ａと選択回路２１ｅとに出力する。一方、バイパス回路２１ｄは、演算ターゲットデータ４１および演算ソースデータ４２を入力し、演算をバイパスして選択回路２１ｅに出力する。選択回路２１ｅは、演算器２１ａの出力またはバイパス回路２１ｄの出力の一方を選択してデータ特徴情報生成回路２１ｃに出力する。データ特徴情報生成回路２１ｃは、入力されたデータの特徴を判定し、データ特徴情報を付加する。したがって、実行ユニット２１からデータ特徴情報が付加された演算結果データ４３が出力される。
【００３５】
バイパス回路２１ｄにより、演算を省略するために演算器２１ａとは別の経路が設けられたことになる。バイパス回路２１ｄが演算器２１ａと同期してバイパスデータを出力する場合、図４および図５により説明された実行ユニット２１と同じタイミングで同じ動作をすることになる。バイパス回路２１ｄは、入力データを素通りさせる回路であるから、バイパス回路２１ｄがブロックデータをパラレルに入出力する場合、演算器２１ａを通す場合より速く処理することが可能となる。そのタイミングが図７に示される。
【００３６】
演算ターゲットデータ４１は、たとえば、図６に示されるように、データ特徴情報４１１、ブロック４１２、データ特徴情報４１３、ブロック４１４を備える２ブロックのデータとする。同様に、演算ソースデータ４２は、データ特徴情報４２１、ブロック４２２、データ特徴情報４２３、ブロック４２４を備える２ブロックのデータとする。ブロック４１２、４２２の一方あるいは両方は全てのビットが“０”で、データ特徴情報４１１、４２１の一方あるいは両方が“１”すなわち特徴有りの状態を示しているものとする。さらに、ブロック４１４、４２４の一方あるいは両方は全てのビットが“０”で、データ特徴情報４１３、４２３の一方あるいは両方が“１”すなわち特徴有りの状態を示しているものとする。このような演算ターゲットデータ４１と演算ソースデータ４２とを加算する。この場合、演算は加算であるが、一方のデータが“０”であるから、ブロック４１２、４２２のうちのどちらかのブロックと、ブロック４１４、４２４のうちのどちらかのブロックとが選択されてそのまま出力され、実質的には演算されずに結果が得られる。
【００３７】
図７（ａ）に実行ユニット２１の基本動作時間を示すクロック信号のタイミングが示され、各クロックサイクルに符号が付される（Ｔ１〜Ｔ６）。この符号を用いて各信号の時間関係が説明される。
【００３８】
クロックサイクルＴ１に演算ターゲットデータ４１のデータ特徴情報４１１と、演算ソースデータ４２のデータ特徴情報４２１とがデータ特徴判定回路２１ｂに入力される（図７（ｂ）：Ａ０）。データ特徴情報４１１、４２１の少なくとも一方が、ブロックデータが“０”であることを示しているため、データ特徴判定回路２１ｂは、演算器２１ａに演算を省略可能であることを通知する。
【００３９】
クロックサイクルＴ２において、バイパス回路２１ｄにはブロック４１２、４２２のデータがパラレルに供給される（図７（ｂ）：Ｂ０−Ｂ３）。演算が加算であるから、バイパス回路２１ｄは、クロックサイクルＴ３において“０”ではないブロックデータを出力する（図７（ｃ）：Ｃ０−３）。但し、両ブロックとも“０”の場合は、どちらかのブロックのデータが出力される。選択回路２１ｅは、データ特徴判定回路２１ｂから出力される判定結果に基づいて、バイパス回路２１ｄから出力されるブロックデータを選択して出力する。クロックサイクルＴ３において、演算結果（図７（ｃ）：Ｃ０−３）は、演算結果を格納するレジスタの所定のビット位置に設定される（図７（ｅ）：１〜４）。
【００４０】
データ特徴情報生成回路２１ｃは、選択回路２１ｅが出力するデータにデータ特徴情報を付加してクロックサイクルＴ４に出力し（図７（ｄ）：Ｄ０）、演算結果を格納するレジスタの所定のビット位置に格納される（図７（ｅ）：０）。データ特徴情報生成回路２１ｃは、パラレルデータの全ビットが０であることを判定する場合、図８（ｃ）に示されるように、多ビットの否定論理和（ＮＯＲ）回路７７を具備していればよく、クロックサイクルＴ３において出力することも可能である。また、演算結果（Ｃ０−Ｃ３）を所定のビット位置に格納するタイミングをクロックサイクルＴ４にしてもよい。また、パラレルデータの全ビットが１であることは、図８（ｄ）に示されるように、多ビットの論理積（ＡＮＤ）回路７８により判定できる。
【００４１】
同じように、クロックサイクルＴ３に演算ターゲットデータ４１の２ブロック目のデータ特徴情報４１３と、演算ソースデータ４２の２ブロック目のデータ特徴情報４２３とがデータ特徴判定回路２１ｂに入力される（図７（ｂ）：Ａ１）。データ特徴情報４１３、４２３の少なくとも一方が、ブロックデータが“０”であることを示しているため、データ特徴判定回路２１ｂは、演算器２１ａに演算を省略可能であることを通知する。
【００４２】
クロックサイクルＴ４において、バイパス回路２１ｄにはブロック４１４、４２４のデータがパラレルに供給される（図７（ｂ）：Ｂ４−Ｂ７）。バイパス回路２１ｄは、クロックサイクルＴ５において“０”ではないブロックデータを出力する（図７（ｃ）：Ｃ４−７）。但し、両ブロックとも“０”の場合は、どちらかのブロックのデータが出力される。選択回路２１ｅは、データ特徴判定回路２１ｂから出力される判定結果に基づいて、バイパス回路２１ｄから出力されるブロックデータを選択して出力する。クロックサイクルＴ５において、演算結果（図７（ｃ）：Ｃ４−７）は、演算結果を格納するレジスタの所定のビット位置に設定される（図７（ｅ）：６〜９）。
【００４３】
データ特徴情報生成回路２１ｃは、選択回路２１ｅが出力するデータにデータ特徴情報を付加してクロックサイクルＴ６に出力し（図７（ｄ）：Ｄ１）、演算結果を格納するレジスタの所定のビット位置に格納される（図７（ｅ）：５）。このように、バイパス回路２１ｄを設けることにより、演算器２１ａを介さずに直接演算結果データ４３をえることが可能であり、大幅に演算時間を短縮することが可能となる。
【００４４】
ここでは、加算の場合を示したが、データの特徴により、他の演算でも同じように演算を省略可能である。たとえば、データが“０”で乗算を行う場合、演算結果は全て“０”になるため、演算を省略することが可能となる。この場合、演算結果は、“０”に固定であるから、“０”データを生成して出力するように構成することもできる。
【００４５】
上述のように、演算データを複数のブロックに分割してそれぞれのブロックに含まれるデータの特徴を示す情報を付加し、実行ユニットはそのデータの特徴に基づいて演算を一部、あるいは、全部を省略することが可能となる。したがって、シリアル演算処理または分割演算処理に要する平均的な演算器占有時間およびレイテンシを減少させることが可能となり、処理能力の向上および消費電力の低減が実現できる。
【００４６】
このように、演算結果データには、データ特徴情報が付加される。演算結果データがレジスタファイル２２に格納される場合、データ特徴情報が付加されている。主記憶部１２などから外部からレジスタファイル２２に入力されるデータにデータ特徴情報を付加する位置について、図を参照して説明する。
【００４７】
データ特徴情報は、たとえば、ブロック内の全ビットが“０”であることを示す場合、シリアルデータのときは図８（ａ）、パラレルデータのときは図８（ｃ）に示されるように、簡単な回路により生成することができる。また、ブロック内の全ビットが“１”であることを示す場合、シリアルデータのときは図８（ｂ）、パラレルデータのときは図８（ｄ）にそれぞれ示されるように、簡単な回路により生成することができる。データ特徴情報生成回路は、位置に応じてこれらの回路が適切に配置される。
【００４８】
図９に、主記憶部１２に格納されるデータに対してデータ特徴情報が付加される場合の構成が示される。データ特徴情報生成部８１は、システムバス１１に接続される。データ特徴情報生成部８１は、システムバス１１を監視して、タイマ１６、シリアルインタフェース１７などの入出力部から主記憶部１２あるいはデータ処理部１０に転送されるデータに、データ特徴情報を生成して付加する。データ処理部１０は、データ特徴情報が付加されたデータを入力し、レジスタファイル２２に格納する。データ処理部１０の実行ユニット２１のデータ特徴生成回路２１ｃで生成されたデータ特徴情報は、システムバス１１にも転送される。したがって、主記憶部１２に格納されるデータにもデータ特徴情報が付加されている。主記憶部１２の記憶容量は、データ特徴情報を格納する分増加する。しかし、比較的速度の制約の少ないシステムバス１１においてデータ特徴情報が付加されるため、データ特徴情報の付加処理がデータ処理部１０に与える影響は少ない。また、システム全体でこのデータ特徴情報を利用することが可能になる。
【００４９】
図１０に示されるデータ処理部１０の構成例では、データ特徴情報は、データ処理部１０内でのみ有効になる。バスインタフェース２７を介して入力されるデータは、データバス３３からデータ特徴情報生成回路８２に入力される。データ特徴情報生成回路８２でデータ特徴情報が付加されたデータは、レジスタ書き込みバス３１を介してレジスタファイル２２に格納される。データバス３３は、パラレルデータを扱うため、データがデータ処理部１０に入力されると同時にデータ特徴情報が付加され、レジスタファイル２２に格納されることになる。したがって、データ処理部１０の処理速度に影響しない。データ処理部１０内で処理される時のみ、データ特徴情報が参照される。バスインタフェース２７からシステムバス１１に出力されるときにデータ特徴情報が削除され、主記憶部には、通常のデータが格納される。
【００５０】
図１１に示されるデータ処理部１０の構成例では、図１０に示される構成例とほぼ同じであるが、バスインタフェース２７を介して入力されるデータには、特徴がないことを示すデータ特徴情報が固定的に付加される。すなわち、データバス３３からレジスタ書き込みバス３１に転送されるデータに、特徴の有無に係わらず“特徴なし”が固定的に付加される。したがって、入力されるデータの内容を判定する必要がなく、固定情報付加回路８３は、簡単であり、かつ高速に処理できる。なお、演算器は、一般的な例としては四則演算や論理演算を実行するＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）があるが、これに限定されず、例えば浮動小数点演算（ＦＰＵ）やその他のデータ演算処理を行う演算器であってもよい。
【００５１】
このように、データ特徴情報を利用した演算器により、データ処理装置の演算処理能力を向上することが可能となる。また、シリアル演算処理または分割演算処理に要する平均的な演算器占有時間およびレイテンシを短縮することが可能となる。したがって、データ処理装置の処理能力の向上および消費電力の低減が可能となる。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施の形態に係るデータ処理装置の構成を示すブロック図である。
【図２】同データ処理部の構成を示すブロック図である。
【図３】同データフォーマットの一例を示す図である。
【図４】同実行ユニットの構成を示す図である。
【図５】同実行ユニットの動作を示すタイムチャートである。
【図６】同実行ユニットの他の構成を示す図である。
【図７】同実行ユニットの他の動作を示すタイムチャートである。
【図８】同データ特徴情報生成回路の構成例を示す図である。
【図９】同データ特徴情報生成回路の位置を説明する図である。
【図１０】同データ特徴情報生成回路の他の位置を説明する図である。
【図１１】同固定情報付加回路の位置を説明する図である。
【符号の説明】
【００５３】
１０  データ処理部（ＣＰＵ）
１１  システムバス
１２  主記憶部
１５  割り込みコントローラ
１６  タイマ
１７  シリアルインタフェース
１８  ＤＭＡコントローラ
２１  実行ユニット
２１ａ  演算器
２１ｂ  データ特徴判定回路
２１ｃ  データ特徴情報生成回路
２１ｄ  バイパス回路
２１ｅ  選択回路
２２  レジスタファイル
２３  命令デコーダ
２４  命令レジスタ
２５  プログラムカウンタ
２７  バスインタフェース
３１  レジスタ書き込みバス
３２  アドレスバス
３３  データバス
３５  書き込みレジスタ指示信号
３６、３７  読み出しレジスタ指示信号
３８  演算種別指示信号
５０、５１、５２、５３  ブロック
６０、６１、６２、６３  データ特徴情報
４１  演算ターゲットデータ
４１１、４１３  データ特徴情報
４１２、４１４  ブロック
４２  演算ソースデータ
４２１、４２３  データ特徴情報
４２２、４２４  ブロック
４３  演算結果データ
４３１、４３３  データ特徴情報
４３２、４３４  ブロック
７１  否定回路（ＮＯＴ）
７２  論理和回路（ＯＲ）
７３  論理積回路（ＡＮＤ）
７４  フリップフロップ
７７  否定論理和回路（ＮＯＲ）
７８  論理積回路（ＡＮＤ）
８１、８２  データ特徴情報生成回路
８３  固定情報付加回路
【図１】
2008003663.tif 000003
【図２】
2008003663.tif 000004
【図３】
2008003663.tif 000005
【図４】
2008003663.tif 000006
【図５】
2008003663.tif 000007
【図６】
2008003663.tif 000008
【図７】
2008003663.tif 000009
【図８】
2008003663.tif 000010
【図９】
2008003663.tif 000011
【図１０】
2008003663.tif 000012
【図１１】
2008003663.tif 000013