JP4873546B2 - データ処理装置、データ処理方法 - Google Patents

データ処理装置、データ処理方法 Download PDF

Info

Publication number
JP4873546B2
JP4873546B2 JP2006169736A JP2006169736A JP4873546B2 JP 4873546 B2 JP4873546 B2 JP 4873546B2 JP 2006169736 A JP2006169736 A JP 2006169736A JP 2006169736 A JP2006169736 A JP 2006169736A JP 4873546 B2 JP4873546 B2 JP 4873546B2
Authority
JP
Japan
Prior art keywords
data
calculation
feature information
block
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006169736A
Other languages
English (en)
Other versions
JP2008003663A (ja
Inventor
英樹 杉本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2006169736A priority Critical patent/JP4873546B2/ja
Priority to US11/812,187 priority patent/US7849295B2/en
Publication of JP2008003663A publication Critical patent/JP2008003663A/ja
Application granted granted Critical
Publication of JP4873546B2 publication Critical patent/JP4873546B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Description

本発明は、データ処理装置、データ処理方法に関し、特に、処理するデータを分割して処理するデータ処理装置、データ処理方法に関する。
近年、大量の情報を処理する必要性に応え、情報処理の高速化が進展している。処理速度を向上させるために、データ処理の演算をシリアルに行って処理時間の短縮が図られることがある。すなわち、回路構成を単純化しサイクルタイムを短縮することがある。
そのようなシリアル演算する演算装置は、例えば、特開2004−318670号公報に開示されている。この演算装置は、第1のパラレル・シリアル変換回路と、第2のパラレル・シリアル変換回路と、シリアル演算器と、シリアル・パラレル変換回路を含む。第1のパラレル・シリアル変換回路は、第1のパラレルデータを各々が所定のビット数からなる所定数の第1の部分データに分解して、所定数の第1の部分データを1つずつ順次供給する。第2のパラレル・シリアル変換回路は、第2のパラレルデータを各々が所定のビット数からなる所定数の第2の部分データに分解して該所定数の第2の部分データを1つずつ順次供給する。シリアル演算器は、順次供給される所定数の第1の部分データと、順次供給される所定数の第2の部分データとに対する演算を部分データ毎に所定数分順次実行する。シリアル・パラレル変換回路は、演算器の演算結果を所定数分順次受け取り、1つに纏めて第3のパラレルデータとして出力する。
特開2004−318670号公報
この演算装置では、演算ソースデータおよび演算ターゲットデータは、パラレル−シリアル変換されて全て演算され、結果が出力される。したがって、演算されるデータのワード長に応じた演算時間が必要になる。演算を高速化するために演算処理の単位を小さくしていくと、ワード長のデータに対し全ての演算処理が終了するまで演算を繰り返すため、演算器で処理する回数が増大し、それに対応して演算装置の占有時間およびレイテンシが増大する。すなわち、演算器で処理する情報量が、常にワード長で決定される最大情報量であるため、ワード長のデータのうち実際に演算器で処理する情報として有効な情報量(有効データのビット数)を処理するのに比べ、処理能力の低下および消費電力の増大を招く。
本発明は、演算処理能力を向上したデータ処理装置を提供する。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明の観点では、データ処理装置は、演算器(21a)と、データ特徴判定回路(21b)とを具備する。演算器(21a)は、複数のブロック(412、414、422、424)に分割された演算データ(41、42)を、複数のブロックの各々に含まれるサブブロック毎に所定の演算をシリアルに行う。複数のブロックの各々(412、414、422、424)には、各ブロックの特徴を示す特徴情報(411、413、421、423)が付加される。データ特徴判定回路(21b)は、その特徴情報(411、413、421、423)に基づいて、演算されるブロック毎に演算器(21a)の動作を制御する。
本発明の他の観点では、データ処理方法は、演算ステップと、データ特徴判定ステップとを具備する。演算ステップは、複数のブロックに分割された演算データを、各ブロックに含まれるサブブロック毎に所定の演算をシリアルに行う。複数のブロックの各々には、各ブロックの特徴を示す特徴情報が付加される。データ特徴判定ステップは、その特徴情報に基づいて、演算されるブロック毎に演算ステップの動作を制御する。
本発明によれば、演算処理能力を向上したデータ処理装置を提供することができる。また、本発明によれば、シリアル演算処理または分割演算処理に要する平均的な演算器占有時間およびレイテンシを短縮するデータ処理装置を提供することが可能となる。したがって、処理能力の向上および消費電力の低減が可能となる。
図を参照して本発明を実施するための最良の形態を説明する。本発明では、演算の対象となるデータの特徴に応じて演算器が制御される。
図1に本発明に係るデータ処理装置の概略構成を示す。データ処理装置は、データ処理部10、主記憶部12の他に、割り込みコントローラ15、タイマ16、シリアルインタフェース17、DMAコントローラ18等の周辺装置を具備し、システムバス11を介して接続される。データ処理部10は、主記憶部12に格納されるプログラムコードに基づいて、主記憶部12に格納されるデータやシリアルインタフェース17等から取り込まれるデータを処理し、主記憶部12あるいはシリアルインタフェース17等に出力する。DMAコントローラ18は、データ処理部10に代わってシリアルインタフェース17などの入出力部と主記憶部12との間のデータ転送、あるいは、主記憶部12内のデータ転送を制御する。タイマ16は、所定のクロックに基づいて計時し、割り込みコントローラ15を介してデータ処理装置10に時間経過を通知する。割り込みコントローラ15は、タイマ16、シリアルインタフェース17、DMAコントローラ18等が発する割り込みを制御し、データ処理装置10に通知する。データ処理装置10は、CPU(Central Processing Unit)を有する。なお、周辺装置は上記に限らず、外部装置との入出力インタフェースなど、様々な周辺装置を具備してもよい。
図2は、データ処理部(CPU)10の構成を示すブロック図である。データ処理部10は、実行ユニット21、レジスタファイル22、命令デコーダ23、命令レジスタ24、プログラムカウンタ25、バスインタフェース27を具備する。バスインタフェース27は、システムバス11と、アドレスバス32およびデータバス33とを接続する。アドレスバス32は、プログラムカウンタ25、実行ユニット21に接続される。アドレスバス32により示されるプログラムカウンタ25により示されるプログラムアドレス、あるいは、実行ユニット21によって計算されたデータアドレスは、バスインタフェース27を介してシステムバス11に出力される。
システムバス11からバスインタフェース27を介して供給される命令コードは、データバス33を経由して命令レジスタ24に格納される。命令レジスタ24に格納された命令コードは、命令デコーダ23によってデコードされ、実行ユニット21、レジスタファイル22を制御する信号が生成される。命令レジスタ24は、命令コードに含まれる例えば、飛び先アドレスをプログラムカウンタ25に出力する。プログラムカウンタ25は、実行されるプログラムのアドレスを歩進して保持し、あるいは、命令レジスタ24から供給される飛び先アドレスを保持する。
命令デコーダ23は、命令レジスタ24に格納される命令コードに基づいて、演算の種類を指示する演算種別指示信号38を実行ユニット21に出力し、書き込みレジスタ指示信号35、読み出しレジスタ指示信号36、37をレジスタファイル22に出力する。レジスタファイル22は、読み出しレジスタ指示信号36、37に基づいて、指示されたレジスタのデータを実行ユニット21に出力する。また、レジスタファイル22は、実行ユニット21から出力される演算結果を、レジスタ書き込みバス31を介して、書き込みレジスタ指示信号35で指示されたレジスタに格納する。実行ユニット21は、レジスタファイル22から入力されるデータに演算種別指示信号38により指示される加減算等の演算を実行し、演算結果をレジスタ書き込みバス31、アドレスバス32、データバス33に出力する。
実行ユニット21で扱うデータは、図3に示されるように、いくつかのブロックに分割され、各ブロックには、データ特徴情報が付加されている。一般的に、演算の対象となるデータは、ある特徴的な値を示す場合や、一定の規則(特徴)で配列される場合がある。したがって、データを複数のブロックに分割して、ブロック毎の特徴を付加することで、各ブロックの特徴に応じて演算処理を行うことにより、通常の演算処理に比べ、演算の不要なブロックに対する演算を省略することが可能になる。すなわち、局所的に演算処理の最適化を行うことができる。
例えば、ブロックの各ビットが、全て“0”、全て“1”である場合、ブロックが“1”(4ビットのブロックであれば2進数表記で“0001”)である場合などにデータが特徴的であるとされる。ブロックの各ビットが全て“0”である場合に加算演算を行っても演算結果は変化しない。すなわち、桁上げ(キャリー)が発生しないため、演算速度を上げることが可能である。また、乗算であれば、演算結果は全て“0”になり、乗算演算するまでもなく結果が判明する。このように、実行ユニットで演算する処理量が、ワード長で決定される最大処理量に比べ、実際の演算に必要な処理量に削減される。
図3には、16ビットデータを4ビット毎に4ブロックに分割した例が示される。最下位ビットデータB0から最上位ビットデータB15までの16ビットのデータは、B0〜B3をブロック50、B4〜B7をブロック51、B8〜B11をブロック52、B12〜B15をブロック53の4ブロックに分割される。ブロック50にはデータ特徴情報60(データA0)が、ブロック51にはデータ特徴情報61(データA1)が、ブロック52にはデータ特徴情報62(データA2)が、ブロック53にはデータ特徴情報63(データA3)が、それぞれ付加される。図3では、実行ユニット21に向けてシリアルに供給されることを示すように、ブロックとデータ特徴情報とが一列に並べて示されている。レジスタファイル22には、データ特徴情報60〜63を集中して格納してもよい。各ブロックに含まれるデータは、4ビットに限定されることはない。また、ブロック数も4に限定されることはなく、64ビットデータであれば、8ビット×8ブロック、4ビット×16ブロック等に分割されてもよい。ブロックに分割されたデータは、1ビット毎にあるいは複数ビット毎にシリアル演算される。この演算する単位をサブブロックと呼ぶことにする。サブブロックは、1ビットであってもよいし、複数ビットであってもよい。
実行ユニット21は、図4に示されるように、演算器21aと、データ特徴判定回路21bと、データ特徴情報生成回路21cとを具備する。演算器21aには、データ特徴情報が付加されたシリアルデータである演算ターゲットデータ41および演算ソースデータ42が、レジスタファイル22から供給される。演算種別指示信号38が、命令デコーダ23から演算器21aとデータ特徴判定回路21bとに供給される。演算器21aは、演算種別指示信号38に基づいて、演算ターゲットデータ41と演算ソースデータ42との間の指定の演算をシリアルに実行する。データ特徴判定回路21bは、演算ターゲットデータ41および演算ソースデータ42のデータ特徴情報に基づいて、演算種別指示信号38により指示される演算において特徴のあるデータであるか否かを判定し、判定結果を演算器21aに出力する。演算器21aは、その結果に基づいて、演算ターゲットデータ41と演算ソースデータ42とに対して指定された演算をシリアルに行う。演算器21aから出力される演算結果は、データ特徴情報生成回路21cによりデータ特徴情報が付加され、演算結果データ43が実行ユニット21から出力される。
データ特徴情報生成回路21cは、たとえば、全てのビットが“0”であることを示すデータ特徴情報を生成する場合、図8(a)に示されるように、否定回路71、論理和回路72、論理積回路73、フリップフロップ74を備える。対象データが入力されると、否定回路71により論理反転し、論理積回路73により過去の特徴情報の状態と論理積が求められ、現在の特徴情報の状態がフリップフロップ74に設定される。シリアルに入力されるデータに対して繰り返し、最終的にブロックのデータ特徴情報がフリップフロップ74から出力される。なお、論理和回路72は、初期値を与える回路である。また、全てのビットが“1”であることを示すデータ特徴情報を生成する場合、データ特徴情報生成回路21cは、図8(b)に示されるように、論理和回路72、論理積回路73、フリップフロップ74を備える。データの特徴が“0”から“1”に変わるだけであり、図8(a)に示される否定回路71がない回路によりデータ特徴情報が生成できる。ここで、データ特徴情報60は1ビット構成で、ブロック50の全てのビットが“0”である場合に特徴有りを示す“1”となり、それ以外の場合は“0”となることで特徴の有無が識別される。尚、ブロック50の全てのビットが“1”である場合に特徴有りを示す“1”となり、それ以外の場合は“0”となることで特徴の有無が識別されるようにしてもよい。また、特徴有りを“1”とすることに限定されることはなく、特徴有りを“0”としてもよい。データ特徴情報60は1ビット構成に限定されることはなく、2ビット以上の複数ビットの構成として、ブロック50の全てのビットが“0”である場合のほか、全てのビットが“1”である場合も識別できるようにしてもよく、更に他の特徴情報を識別できるようにしてもよい。ブロック50以外のデータ特徴情報もデータ特徴情報60と同様な構成とすることができる。
実行ユニット21の動作を説明する。図4に示されるように、演算ターゲットデータ41は、たとえば、データ特徴情報411、ブロック412、データ特徴情報413、ブロック414を備える2ブロックのデータとする。同様に、演算ソースデータ42は、データ特徴情報421、ブロック422、データ特徴情報423、ブロック424を備える2ブロックのデータとする。ブロック412、422の一方あるいは両方は全てのビットが“0”で、データ特徴情報411、421の一方あるいは両方が“1”すなわち特徴有りの状態を示しているものとする。他のブロックは、“0”および“1”を示すビットが混在している。このような演算ターゲットデータ41と演算ソースデータ42とを加算する。
図5は、ブロックが4ビットで構成される場合の実行ユニット21の動作を示すタイムチャートである。図5(a)に実行ユニット21の基本動作時間を示すクロック信号のタイミングが示され、各クロックサイクルに符号が付される(T1〜T12)。この符号を用いて各信号の時間関係を説明する。
実行ユニット21のターゲットデータ入力には、データ特徴情報411、ブロック412、データ特徴情報413、ブロック414の順に、ソースデータ入力には、データ特徴情報421、ブロック422、データ特徴情報423、ブロック424の順に入力データが供給される。
図5に示されるように、ブロック412の特徴を示すデータ特徴情報411およびブロック422の特徴を示すデータ特徴情報421(図5(b):A0)は、ブロック412およびブロック422が演算器21aに入力される前にデータ特徴判定回路21bに入力され、データの特徴の有無が判定される(図5:クロックサイクルT1)。
特徴の有無が演算器21aに入力されると、特徴の有無に応じて演算器21aの動作が制御される。データ特徴情報A0は“1”すなわち特徴有りを示しているため、加算結果に桁上げの可能性はなく、桁上げ演算が省略され、演算時間は短縮される。クロックサイクルT1において判定した結果は、クロックサイクルT2〜T5に反映される。クロックサイクルT2において入力されるビットデータ(図5(b):B0)が加算され、クロックサイクルT3において加算結果(図5(c):C0)が演算器21aから出力される。加算結果(図5(c):C0)は、演算結果を格納するレジスタの所定のビット位置に格納される(図5(e):1)。加算結果(図5(c):C0)に基づいて、データ特徴情報生成部21cはデータ特徴情報を演算し、クロックサイクルT4において、途中結果(図5(d):D0)が生成される。
クロックサイクルT3にブロック412、422の2ビット目のデータ(図5(b):B1)が演算器21aに入力され、加算演算される。加算結果(図5(c):C1)は、クロックサイクルT4に出力される。この加算結果(図5(c):C1)と保存されているデータ特徴情報の途中結果(図5(d):D0)とに基づいてデータ特徴情報の演算が行われ、クロックサイクルT5において途中結果(図5(d):D1)が得られる。
同じように、クロックサイクルT4にブロック412、422の3ビット目のデータ(図5(b):B2)が演算器21aに入力され、クロックサイクルT5にブロック412、422の最後のビット(図5(b):B3)が入力されて加算演算される。演算結果(図5(c):C2、C3)は、それぞれクロックサイクルT5、T6に出力される。
最初のブロックの最後のビットの加算演算が終了した後のクロックサイクルT7において、データ特徴情報の演算結果(図5(d):D3)が出力され、演算結果を格納するレジスタの所定のビット位置に格納される(図5(e):0)。したがって、クロックサイクルT7において、最初のブロックの演算結果が揃う。
このとき、既に次のブロックの演算が開始されている。クロックサイクルT6において、2ブロック目のデータ特徴情報413、423(図5(b):A1)がデータ特徴判定回路21bに入力される。2ブロック目のデータは、“0”すなわち特徴無しのデータであり、通常の加算が行われる。したがって、桁上げの可能性があるため、クロックサイクルT7〜T10の演算時間は“特徴有り”の場合に比べて長くなる。
クロックサイクルT7において、2ブロック目の最初のビットのデータ(図5(b):B4)が入力され、加算演算される。加算結果(図5(c):C4)は、クロックサイクルT8に出力され、演算結果を格納するレジスタの所定のビット位置に格納される(図5(e):6)。データ特徴情報生成部21cは、この加算結果(図5(c):C4)に基づいてデータ特徴情報の途中結果を初期設定し、クロックサイクルT9において途中結果D4が生成される(図5(d):D4)。
クロックサイクルT8〜T10においても同じように、各ビットのデータ(図5(b):B5〜B7)が順次演算器21aに入力され、シリアルに加算が行われる。クロックサイクルT9〜T11に加算結果(図5(c):C5〜C7)が出力され、その加算結果に基づいてデータ特徴情報が生成される(図5(d))。したがって、クロックサイクルT12において2ブロック目の演算結果に対するデータ特徴情報(図5(d):D7)が生成されて、所定のビット位置に設定される(図5(e):4)。すなわち、クロックサイクルT12において、図4に示されるように、データ特徴情報431、ブロック432、データ特徴情報433、ブロック434を備える演算結果データ43が、実行ユニット21から出力されたことになる。
このように、データ特徴情報を各ブロックに備えることにより、演算時間を短縮することが可能となる。ここでは、1ビット毎にシリアル加算する実行ユニットを例に説明した。実行ユニットは、たとえば、4ビット毎に演算する実行ユニットであってもよい。上記の1ビットは4ビットのデータに対応し、1ブロックは16ビットのデータとなる。1ワード4ブロックの構成とすれば、ワード長64ビットのデータを同じように演算することが可能である。データを分割するブロック数は4に限定されることはない。また、ここでは下位ビットから演算する実行ユニットを説明したが、演算の種類によっては上位ビットから演算してもよい。また、演算時間の変更をクロックサイクルの時間によって示したが、演算に費やすクロック数を変更してもよいし、それらを組み合わせてもよい。
次に、さらに演算時間を短縮する演算バイパス回路を備える実行ユニットを説明する。図6は、演算バイパス回路を備える実行ユニット21の構成を示すブロック図である。実行ユニット21は、演算器21a、データ特徴判定回路21b、データ特徴情報生成回路21c、バイパス回路21d、選択回路21eを具備する。演算器21aには、データ特徴情報が付加されたシリアルデータである演算ターゲットデータ41および演算ソースデータ42が、レジスタファイル22から供給される。演算種別指示信号38が、命令デコーダ23から演算器21aとデータ特徴判定回路21bとに供給される。
演算器21aは、演算種別指示信号38に基づいて、演算ターゲットデータ41と演算ソースデータ42との間の指定の演算をシリアルに実行し、演算結果を選択回路21eに出力する。データ特徴判定回路21bは、演算ターゲットデータ41および演算ソースデータ42のデータ特徴情報に基づいて、演算種別指示信号38により指示される演算において特徴のあるデータであるか否かを判定し、判定結果を演算器21aと選択回路21eとに出力する。一方、バイパス回路21dは、演算ターゲットデータ41および演算ソースデータ42を入力し、演算をバイパスして選択回路21eに出力する。選択回路21eは、演算器21aの出力またはバイパス回路21dの出力の一方を選択してデータ特徴情報生成回路21cに出力する。データ特徴情報生成回路21cは、入力されたデータの特徴を判定し、データ特徴情報を付加する。したがって、実行ユニット21からデータ特徴情報が付加された演算結果データ43が出力される。
バイパス回路21dにより、演算を省略するために演算器21aとは別の経路が設けられたことになる。バイパス回路21dが演算器21aと同期してバイパスデータを出力する場合、図4および図5により説明された実行ユニット21と同じタイミングで同じ動作をすることになる。バイパス回路21dは、入力データを素通りさせる回路であるから、バイパス回路21dがブロックデータをパラレルに入出力する場合、演算器21aを通す場合より速く処理することが可能となる。そのタイミングが図7に示される。
演算ターゲットデータ41は、たとえば、図6に示されるように、データ特徴情報411、ブロック412、データ特徴情報413、ブロック414を備える2ブロックのデータとする。同様に、演算ソースデータ42は、データ特徴情報421、ブロック422、データ特徴情報423、ブロック424を備える2ブロックのデータとする。ブロック412、422の一方あるいは両方は全てのビットが“0”で、データ特徴情報411、421の一方あるいは両方が“1”すなわち特徴有りの状態を示しているものとする。さらに、ブロック414、424の一方あるいは両方は全てのビットが“0”で、データ特徴情報413、423の一方あるいは両方が“1”すなわち特徴有りの状態を示しているものとする。このような演算ターゲットデータ41と演算ソースデータ42とを加算する。この場合、演算は加算であるが、一方のデータが“0”であるから、ブロック412、422のうちのどちらかのブロックと、ブロック414、424のうちのどちらかのブロックとが選択されてそのまま出力され、実質的には演算されずに結果が得られる。
図7(a)に実行ユニット21の基本動作時間を示すクロック信号のタイミングが示され、各クロックサイクルに符号が付される(T1〜T6)。この符号を用いて各信号の時間関係が説明される。
クロックサイクルT1に演算ターゲットデータ41のデータ特徴情報411と、演算ソースデータ42のデータ特徴情報421とがデータ特徴判定回路21bに入力される(図7(b):A0)。データ特徴情報411、421の少なくとも一方が、ブロックデータが“0”であることを示しているため、データ特徴判定回路21bは、演算器21aに演算を省略可能であることを通知する。
クロックサイクルT2において、バイパス回路21dにはブロック412、422のデータがパラレルに供給される(図7(b):B0−B3)。演算が加算であるから、バイパス回路21dは、クロックサイクルT3において“0”ではないブロックデータを出力する(図7(c):C0−3)。但し、両ブロックとも“0”の場合は、どちらかのブロックのデータが出力される。選択回路21eは、データ特徴判定回路21bから出力される判定結果に基づいて、バイパス回路21dから出力されるブロックデータを選択して出力する。クロックサイクルT3において、演算結果(図7(c):C0−3)は、演算結果を格納するレジスタの所定のビット位置に設定される(図7(e):1〜4)。
データ特徴情報生成回路21cは、選択回路21eが出力するデータにデータ特徴情報を付加してクロックサイクルT4に出力し(図7(d):D0)、演算結果を格納するレジスタの所定のビット位置に格納される(図7(e):0)。データ特徴情報生成回路21cは、パラレルデータの全ビットが0であることを判定する場合、図8(c)に示されるように、多ビットの否定論理和(NOR)回路77を具備していればよく、クロックサイクルT3において出力することも可能である。また、演算結果(C0−C3)を所定のビット位置に格納するタイミングをクロックサイクルT4にしてもよい。また、パラレルデータの全ビットが1であることは、図8(d)に示されるように、多ビットの論理積(AND)回路78により判定できる。
同じように、クロックサイクルT3に演算ターゲットデータ41の2ブロック目のデータ特徴情報413と、演算ソースデータ42の2ブロック目のデータ特徴情報423とがデータ特徴判定回路21bに入力される(図7(b):A1)。データ特徴情報413、423の少なくとも一方が、ブロックデータが“0”であることを示しているため、データ特徴判定回路21bは、演算器21aに演算を省略可能であることを通知する。
クロックサイクルT4において、バイパス回路21dにはブロック414、424のデータがパラレルに供給される(図7(b):B4−B7)。バイパス回路21dは、クロックサイクルT5において“0”ではないブロックデータを出力する(図7(c):C4−7)。但し、両ブロックとも“0”の場合は、どちらかのブロックのデータが出力される。選択回路21eは、データ特徴判定回路21bから出力される判定結果に基づいて、バイパス回路21dから出力されるブロックデータを選択して出力する。クロックサイクルT5において、演算結果(図7(c):C4−7)は、演算結果を格納するレジスタの所定のビット位置に設定される(図7(e):6〜9)。
データ特徴情報生成回路21cは、選択回路21eが出力するデータにデータ特徴情報を付加してクロックサイクルT6に出力し(図7(d):D1)、演算結果を格納するレジスタの所定のビット位置に格納される(図7(e):5)。このように、バイパス回路21dを設けることにより、演算器21aを介さずに直接演算結果データ43をえることが可能であり、大幅に演算時間を短縮することが可能となる。
ここでは、加算の場合を示したが、データの特徴により、他の演算でも同じように演算を省略可能である。たとえば、データが“0”で乗算を行う場合、演算結果は全て“0”になるため、演算を省略することが可能となる。この場合、演算結果は、“0”に固定であるから、“0”データを生成して出力するように構成することもできる。
上述のように、演算データを複数のブロックに分割してそれぞれのブロックに含まれるデータの特徴を示す情報を付加し、実行ユニットはそのデータの特徴に基づいて演算を一部、あるいは、全部を省略することが可能となる。したがって、シリアル演算処理または分割演算処理に要する平均的な演算器占有時間およびレイテンシを減少させることが可能となり、処理能力の向上および消費電力の低減が実現できる。
このように、演算結果データには、データ特徴情報が付加される。演算結果データがレジスタファイル22に格納される場合、データ特徴情報が付加されている。主記憶部12などから外部からレジスタファイル22に入力されるデータにデータ特徴情報を付加する位置について、図を参照して説明する。
データ特徴情報は、たとえば、ブロック内の全ビットが“0”であることを示す場合、シリアルデータのときは図8(a)、パラレルデータのときは図8(c)に示されるように、簡単な回路により生成することができる。また、ブロック内の全ビットが“1”であることを示す場合、シリアルデータのときは図8(b)、パラレルデータのときは図8(d)にそれぞれ示されるように、簡単な回路により生成することができる。データ特徴情報生成回路は、位置に応じてこれらの回路が適切に配置される。
図9に、主記憶部12に格納されるデータに対してデータ特徴情報が付加される場合の構成が示される。データ特徴情報生成部81は、システムバス11に接続される。データ特徴情報生成部81は、システムバス11を監視して、タイマ16、シリアルインタフェース17などの入出力部から主記憶部12あるいはデータ処理部10に転送されるデータに、データ特徴情報を生成して付加する。データ処理部10は、データ特徴情報が付加されたデータを入力し、レジスタファイル22に格納する。データ処理部10の実行ユニット21のデータ特徴生成回路21cで生成されたデータ特徴情報は、システムバス11にも転送される。したがって、主記憶部12に格納されるデータにもデータ特徴情報が付加されている。主記憶部12の記憶容量は、データ特徴情報を格納する分増加する。しかし、比較的速度の制約の少ないシステムバス11においてデータ特徴情報が付加されるため、データ特徴情報の付加処理がデータ処理部10に与える影響は少ない。また、システム全体でこのデータ特徴情報を利用することが可能になる。
図10に示されるデータ処理部10の構成例では、データ特徴情報は、データ処理部10内でのみ有効になる。バスインタフェース27を介して入力されるデータは、データバス33からデータ特徴情報生成回路82に入力される。データ特徴情報生成回路82でデータ特徴情報が付加されたデータは、レジスタ書き込みバス31を介してレジスタファイル22に格納される。データバス33は、パラレルデータを扱うため、データがデータ処理部10に入力されると同時にデータ特徴情報が付加され、レジスタファイル22に格納されることになる。したがって、データ処理部10の処理速度に影響しない。データ処理部10内で処理される時のみ、データ特徴情報が参照される。バスインタフェース27からシステムバス11に出力されるときにデータ特徴情報が削除され、主記憶部には、通常のデータが格納される。
図11に示されるデータ処理部10の構成例では、図10に示される構成例とほぼ同じであるが、バスインタフェース27を介して入力されるデータには、特徴がないことを示すデータ特徴情報が固定的に付加される。すなわち、データバス33からレジスタ書き込みバス31に転送されるデータに、特徴の有無に係わらず“特徴なし”が固定的に付加される。したがって、入力されるデータの内容を判定する必要がなく、固定情報付加回路83は、簡単であり、かつ高速に処理できる。なお、演算器は、一般的な例としては四則演算や論理演算を実行するALU(Arithmetic Logical Unit)があるが、これに限定されず、例えば浮動小数点演算(FPU)やその他のデータ演算処理を行う演算器であってもよい。
このように、データ特徴情報を利用した演算器により、データ処理装置の演算処理能力を向上することが可能となる。また、シリアル演算処理または分割演算処理に要する平均的な演算器占有時間およびレイテンシを短縮することが可能となる。したがって、データ処理装置の処理能力の向上および消費電力の低減が可能となる。
本発明の実施の形態に係るデータ処理装置の構成を示すブロック図である。 同データ処理部の構成を示すブロック図である。 同データフォーマットの一例を示す図である。 同実行ユニットの構成を示す図である。 同実行ユニットの動作を示すタイムチャートである。 同実行ユニットの他の構成を示す図である。 同実行ユニットの他の動作を示すタイムチャートである。 同データ特徴情報生成回路の構成例を示す図である。 同データ特徴情報生成回路の位置を説明する図である。 同データ特徴情報生成回路の他の位置を説明する図である。 同固定情報付加回路の位置を説明する図である。
符号の説明
10 データ処理部(CPU)
11 システムバス
12 主記憶部
15 割り込みコントローラ
16 タイマ
17 シリアルインタフェース
18 DMAコントローラ
21 実行ユニット
21a 演算器
21b データ特徴判定回路
21c データ特徴情報生成回路
21d バイパス回路
21e 選択回路
22 レジスタファイル
23 命令デコーダ
24 命令レジスタ
25 プログラムカウンタ
27 バスインタフェース
31 レジスタ書き込みバス
32 アドレスバス
33 データバス
35 書き込みレジスタ指示信号
36、37 読み出しレジスタ指示信号
38 演算種別指示信号
50、51、52、53 ブロック
60、61、62、63 データ特徴情報
41 演算ターゲットデータ
411、413 データ特徴情報
412、414 ブロック
42 演算ソースデータ
421、423 データ特徴情報
422、424 ブロック
43 演算結果データ
431、433 データ特徴情報
432、434 ブロック
71 否定回路(NOT)
72 論理和回路(OR)
73 論理積回路(AND)
74 フリップフロップ
77 否定論理和回路(NOR)
78 論理積回路(AND)
81、82 データ特徴情報生成回路
83 固定情報付加回路

Claims (21)

  1. 複数のブロックに分割された演算データに対し、前記複数のブロックの各々に含まれるサブブロック毎に所定の演算を前記サブブロックの並びの順に行う演算器と、
    前記複数のブロックの各々に基づいて生成されて付加され、前記ブロックの特徴を示す特徴情報に基づいて、前記ブロック毎に前記演算器の動作を制御するデータ特徴判定回路と
    を具備する
    データ処理装置。
  2. 前記データ特徴判定回路は、演算種を示す信号を受信するとともに、前記演算種を示す信号により指示される演算において、前記ブロックが特徴ある演算データか否かを前記特徴情報に基づいて判定する
    請求項1に記載のデータ処理装置。
  3. 前記演算器は、
    前記演算データを前記演算器からバイパスして出力するバイパス回路と、
    前記特徴情報に基づいて、前記演算器の出力または前記バイパス回路の出力の一方を選択して出力する選択回路と
    を備える
    請求項1に記載のデータ処理装置。
  4. 前記演算データを演算した結果を示す結果データに基づいて、前記結果データの前記ブロックに前記特徴情報を付加する第1データ特徴情報生成回路をさらに具備する
    請求項1から請求項のいずれかに記載のデータ処理装置。
  5. 前記データ特徴判定回路は、前記第1データ特徴情報生成回路により付加された前記特徴情報に基づいて、前記結果データに対する前記演算器の演算を制御する
    請求項4に記載のデータ処理装置。
  6. 前記演算器に供給するデータを格納するレジスタと、
    データバスを介して前記レジスタに格納データを格納するとき、前記格納データに基づいて、前記格納データの前記ブロックに前記特徴情報を付加する第2データ特徴情報生成回路と
    をさらに具備する
    請求項1から請求項5のいずれかに記載のデータ処理装置。
  7. 主記憶部と、
    前記主記憶部に格納されるデータの前記ブロックに前記特徴情報を付加する第3データ特徴情報生成回路と
    をさらに具備する
    請求項1から請求項5のいずれかに記載のデータ処理装置。
  8. 前記演算器回路に供給するデータを格納するレジスタと、
    データバスを介して前記レジスタに格納データを格納するとき、予め定められた前記特徴情報を固定的に付加する固定情報付加回路と
    をさらに具備する
    請求項1から請求項5のいずれかに記載のデータ処理装置。
  9. 前記特徴情報は、前記ブロックに含まれる前記サブブロックが全て0であるか否かを示す
    請求項1から請求項8のいずれかに記載のデータ処理装置。
  10. 前記特徴情報は、前記ブロックに含まれる前記サブブロックが全て1であるか否かを示す
    請求項1から請求項8のいずれに記載のデータ処理装置。
  11. 前記特徴情報は、前記ブロックの最下位ビットのみ1であるか否かを示す
    請求項1から請求項8のいずれかに記載のデータ処理装置。
  12. レジスタ書き込みバスを介して複数の演算データを格納するレジスタファイルと、
    前記レジスタファイルから供給される第1演算データおよび第2演算データに基づいて指定された演算を行い、演算結果を前記レジスタ書き込みバスに出力する演算器と、前記第1演算データおよび第2演算データは、複数のブロックに分割され、前記複数のブロックの各々は、前記複数のブロックの各々の特徴を示すデータ特徴情報が付加され、
    主記憶部から入力されるデータをデータバスに乗せるバスインタフェース部と、
    前記データバスに乗せられたデータから前記データ特徴情報を生成するとともに前記データに付加して前記レジスタ書き込みバスに乗せるデータ特徴情報付加回路と、
    を具備し、
    前記演算器は、
    前記第1演算データおよび前記第2演算データの前記データ特徴情報に基づいて、前記演算器の演算処理を制御するデータ特徴判定回路と、
    前記指定された演算処理の結果を示す演算結果を前記複数のブロックに分割するとともに、前記複数のブロックの各々から生成した前記データ特徴情報を付加するデータ特徴情報生成回路と
    を備える
    データ処理装置。
  13. 前記データ特徴判定回路は、演算種を示す信号を受信するとともに、前記第1演算データおよび前記第2演算データの前記特徴情報に基づいて、前記演算種を示す信号により指示される演算において、前記第1演算データおよび前記第2演算データに特徴があるか否かを判定する
    請求項12に記載のデータ処理装置。
  14. 前記演算器は、前記演算結果を第3演算データとして受信し、
    前記データ特徴判定回路は、前記データ特徴生成回路により生成された前記データ特徴情報に基づいて、前記第3演算データに対する前記演算器の演算処理を制御する
    請求項13に記載のデータ処理装置。
  15. 複数のブロックに分割された演算データに対し、前記複数のブロックの各々に含まれるサブブロック毎に所定の演算を前記サブブロックの並びの順に行う演算ステップと、
    前記複数のブロックの各々から生成されて付加され、前記ブロックの特徴を示す特徴情報に基づいて、前記ブロック毎に前記演算ステップの動作を制御するデータ特徴判定ステップと
    を具備する
    データ処理方法。
  16. 前記データ特徴判定ステップは、前記演算ステップで行う演算において、前記特徴情報に対応する前記ブロックが特徴ある演算データか否かを前記特徴情報に基づいて判定するステップを具備する
    請求項15に記載のデータ処理方法。
  17. 前記演算データを前記演算ステップからバイパスして出力するバイパスステップと、
    前記特徴情報に基づいて、前記演算ステップにより出力されるデータまたは前記バイパスステップにより出力されるデータの一方を選択して出力する選択ステップと
    をさらに具備する
    請求項15に記載のデータ処理方法。
  18. 前記演算ステップは、前記演算データを演算した結果を示す結果データに基づいて、前記結果データの前記ブロックに前記特徴情報を付加するデータ特徴情報生成ステップを具備する
    請求項15または請求項17に記載のデータ処理方法。
  19. 前記演算ステップは、前記結果データの前記ブロックに所定の演算を行うステップをさらに具備し、
    前記データ特徴判定ステップは、前記データ特徴情報生成ステップで付加された前記特徴情報に基づいて、前記結果データに対する前記演算ステップを制御するステップをさらに具備する
    請求項18に記載のデータ処理方法。
  20. 前記演算データを格納するレジスタに前記特徴情報を付加したデータを格納するステップをさらに具備する
    請求項15から請求項19のいずれかに記載のデータ処理方法。
  21. 前記演算データおよび前記結果データを格納する主記憶に、前記特徴情報を付加したデータを格納するステップをさらに具備する
    請求項15から請求項19のいずれかに記載のデータ処理方法。
JP2006169736A 2006-06-20 2006-06-20 データ処理装置、データ処理方法 Expired - Fee Related JP4873546B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006169736A JP4873546B2 (ja) 2006-06-20 2006-06-20 データ処理装置、データ処理方法
US11/812,187 US7849295B2 (en) 2006-06-20 2007-06-15 Data processing apparatus and data processing method including dividing data to be processed

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006169736A JP4873546B2 (ja) 2006-06-20 2006-06-20 データ処理装置、データ処理方法

Publications (2)

Publication Number Publication Date
JP2008003663A JP2008003663A (ja) 2008-01-10
JP4873546B2 true JP4873546B2 (ja) 2012-02-08

Family

ID=39008013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006169736A Expired - Fee Related JP4873546B2 (ja) 2006-06-20 2006-06-20 データ処理装置、データ処理方法

Country Status (2)

Country Link
US (1) US7849295B2 (ja)
JP (1) JP4873546B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152382B2 (en) * 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values
US11042637B1 (en) * 2018-02-01 2021-06-22 EMC IP Holding Company LLC Measuring code sharing of software modules based on fingerprinting of assembly code

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5871846A (ja) * 1981-10-27 1983-04-28 Lotte Co Ltd 香味持続性チユ−インガム
JPH04294420A (ja) * 1991-03-22 1992-10-19 Ricoh Co Ltd 除算器
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6463453B1 (en) * 1998-01-12 2002-10-08 Motorola, Inc. Low power pipelined multiply/accumulator with modified booth's recoder
US6178484B1 (en) * 1998-02-17 2001-01-23 International Business Machines Corporation DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
US6427206B1 (en) * 1999-05-03 2002-07-30 Intel Corporation Optimized branch predictions for strongly predicted compiler branches
US6662294B1 (en) * 2000-09-28 2003-12-09 International Business Machines Corporation Converting short branches to predicated instructions
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
JP3661944B2 (ja) * 2002-05-15 2005-06-22 株式会社日立製作所 演算エンジン、マイクロプロセッサ、および、その演算制御方法
US6957321B2 (en) * 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
JP2004318670A (ja) 2003-04-18 2004-11-11 Fujitsu Ltd 演算装置及び演算器
JP2005115410A (ja) * 2003-10-02 2005-04-28 Sony Corp 演算装置
US7412591B2 (en) * 2005-06-18 2008-08-12 Industrial Technology Research Institute Apparatus and method for switchable conditional execution in a VLIW processor

Also Published As

Publication number Publication date
US7849295B2 (en) 2010-12-07
US20080126756A1 (en) 2008-05-29
JP2008003663A (ja) 2008-01-10

Similar Documents

Publication Publication Date Title
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
TW202209157A (zh) 向量處理器架構
JP2008071130A (ja) Simd型マイクロプロセッサ
CN107851013B (zh) 数据处理装置和方法
US9740488B2 (en) Processors operable to allow flexible instruction alignment
JP2006018413A (ja) プロセッサおよびパイプライン再構成制御方法
US5742621A (en) Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor
JP2001027945A (ja) Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット
JP4873546B2 (ja) データ処理装置、データ処理方法
JP2007334563A (ja) マスク付きベクトル演算処理装置
US11175957B1 (en) Hardware accelerator for executing a computation task
JP2006072961A (ja) 演算処理装置のメモリ回路
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
TWI506637B (zh) 用於運用位址移位技術之部分位址選擇信號產生器的方法及裝置
JP3693556B2 (ja) 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置
US20050251658A1 (en) Processing unit
JP2885197B2 (ja) 演算処理装置及び演算処理方法
JP3776652B2 (ja) ベクトル演算装置
JPWO2002029546A1 (ja) 演算器及びそれを用いた電子回路装置
JP2006092158A (ja) デジタル信号処理回路
JP2010033452A (ja) レジスタ制御回路およびレジスタ制御方法
JP4258350B2 (ja) 演算処理装置
JP3894135B2 (ja) 情報処理装置
KR19990021768A (ko) 디지탈신호처리기
JPH0750596A (ja) 符号化装置及び符号化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110331

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111117

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4873546

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees