JPH11353154A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JPH11353154A
JPH11353154A JP10158887A JP15888798A JPH11353154A JP H11353154 A JPH11353154 A JP H11353154A JP 10158887 A JP10158887 A JP 10158887A JP 15888798 A JP15888798 A JP 15888798A JP H11353154 A JPH11353154 A JP H11353154A
Authority
JP
Japan
Prior art keywords
data
carry signal
arithmetic unit
circuit
register
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.)
Granted
Application number
JP10158887A
Other languages
English (en)
Other versions
JP3547316B2 (ja
Inventor
Hiroaki Isono
広明 磯野
Junichi Kimura
淳一 木村
Yoshinori Suzuki
芳典 鈴木
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP15888798A priority Critical patent/JP3547316B2/ja
Publication of JPH11353154A publication Critical patent/JPH11353154A/ja
Application granted granted Critical
Publication of JP3547316B2 publication Critical patent/JP3547316B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】符号なしデータの加算により発生する桁上がり
を処理する回路を簡単にする。 【解決手段】符号なしデータの平均値を求めるときに、
まずそれらの総和が求められた後に、データ数で総和を
割る除算が実行される。この総和を演算器130内の加
算器により求めて得られる総和データの下位側の8ビッ
トのデータは、パックトデータレジスタ群120ないの
一つに保持される。この加算により発生した桁上げは、
その演算器に対応する桁上げ信号累積回路140に累積
させる。この回路により与えられる桁上げの総数を表す
累積データは、総和データの上位側のデータとなる。総
和データをデータ数で除算するときに、上記累積データ
と上記レジスタ内の下位側のデータとの組を、演算器1
30内のシフターにより下位側にシフトさせる。このプ
ロセッサはSIMD型である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演算器が加算を行
ったときに生じる桁上げ信号を無視しないで処理できる
プロセッサに係り、特に画像処理に好適なプロセッサに
関する。
【0002】
【従来の技術】デジタル画像処理を高速に行うのに適し
たプロセッサとして、複数のデータを同一の命令で並列
に処理するSIMD型プロセッサがある。そのようなS
IMD型プロセッサの中には、SIMD演算用のレジス
タの内部を論理的に区切り、区切られたレジスタ内のデ
ータをそれぞれ独立に扱うことを可能としたものがあ
る。たとえば「MMXテクノロジ最適化テクニック」
(小鷲英一著、アスキー発行)に記載のプロセッサで
は、64ビットの長さのレジスタに、8ビットからなる
8個のデータを保持し、それぞれ8ビットのデータを処
理できる8個の演算器からなる並列演算器により、同一
のレジスタ内の8個のデータに対して同一の演算を並列
に実行することができる。区切られた個々のデータはエ
レメントと呼ばれ、このような複数のエレメントからな
るデータは、パックトデータと呼ばれ、このデータを保
持するレジスタは、パックトデータレジスタと呼ばれて
いる。
【0003】一般に画素データは値0−255を有し、
8ビットで表されるので、連続した8つの画素データを
一つのパックトデータレジスタに格納することができ、
そのレジスタ内の8個の画素データそれぞれに対する同
じ演算を並列に行うことができる。
【0004】上記プロセッサでは、加算の結果、桁上が
り(キャリー)が生じた場合あるいは減算の結果、桁下
げ(ボロー)が生じることがある。桁上げあるいは桁下
げを無視するラップアラウンドモードで演算を行うと、
演算結果は正しくなくなる。このため、上記プロセッサ
では、飽和演算が使用可能になっている。つまり、演算
結果が桁上げあるいは桁下げが生じた場合には、それら
が生じない前の最大値あるいは最小値に固定する演算で
ある。たとえば、ある画素データ値254にたとえば5
を加算する場合、その結果としてデータ値255を出力
する。このような単純な加算では、飽和演算でも誤差が
小さく、無視できる場合がある。しかし、加算によって
はこの飽和演算での誤差が無視できないことがある。た
とえば、複数(n)の画素データa,b,c,d...
の平均を求める演算“x=(a+b+c+d...)/
n”では、複数の画素データの総和を求めてから、その
総和をデータ数nで割る処理を行う。この総和を求める
ために加算を繰り返し行う。得られた総和をデータ数n
で割る処理は、このデータ数nが2のm乗(mは正の整
数)であるとき、この除算は、総和データをmビット下
位側にシフトすることにより実現される。このように繰
り返し加算を実行の間に桁上げが生じた場合、飽和演算
により加算結果を最大値に固定すると、総和データの誤
差が大きくなり、最終的に得られる平均値の誤差も大き
くなる。
【0005】上記誤差を防ぐには、次のように、画素デ
ータの有効ビット数を増大して演算する方法が採ること
ができる。各画素のデータを16ビットして扱い、各エ
レメントのサイズを16ビットにし、一つのレジスタに
は4つのエレメントを保持させ、これらの4つエレメン
トに対する演算を並列に実行する。最終的な演算の結果
は、8ビットに戻してメモリに保存される。このプロセ
ッサは、このように有効ビット幅を広げたデータに対す
る演算も実行可能になっている。すなわち、各レジスタ
には、4個の16ビットのエレメントまたは2個の32
ビットのエレメントを保持させることもできる。このと
きには、上記8個の8ビットの演算器は、このエレメン
トのサイズに合わせて、4個の16ビットの演算器ある
いは2個の32ビットの演算器に再構成される。
【0006】
【発明が解決しようとする課題】上記のように一つのエ
レメントの長さを16ビットする方法では、演算精度は
保証されるが、並列に実行できる演算数、言い換えると
並列に演算を施すことができるエレメントの数あるいは
並列処理する画素データの数が半減する。そのためにこ
のプロセッサの処理速度が大幅に低下する。
【0007】このような問題を防ぐには、各レジスタの
サイズを予め大きくすることが考えられる。たとえば、
各レジスタに保持される最小エレメントのサイズを12
ビットにするかあるいは16ビットにすることができ
る。この場合、各レジスタには従来と同様に8個のエレ
メントを保持させるとすると、レジスタのサイズは、9
6ビットあるいは128ビットになる。さらに、エレメ
ントのサイズをこのように増大するには、各エレメント
用の演算器が処理できるビット幅も増大しなければなら
ない。すなわち、各演算器を、16ビットあるいは12
ビットのデータに対する演算を行い、演算結果データと
して、16ビットあるいは12ビットのデータを出力す
るように構成する必要がある。このような演算器は、上
のプロセッサでは8個もあるため、これらの演算器のサ
イズの総量はかなり増大する。
【0008】このように、従来の方法では、桁上げ信号
の処理を正確にしようとすると、レジスタおよび演算器
の回路規模が増大する。しかも、上記のプロセッサのよ
うなSIMD型のプロセッサは、各レジスタが複数のエ
レメントを保持し、これらの複数のエレメント同数の演
算器を有するため、エレメントサイズを増大すると、演
算器とレジスタの回路規模が大きくなる。
【0009】したがって、本発明の目的は、複数の符号
なしデータの平均値を求める処理の実行時のように、繰
り返し加算が実行されるときに発生する桁上がりを比較
的簡単な回路により正しく処理するのに適したプロセッ
サが得られる。
【0010】
【課題を解決するための手段】画像データ処理では、画
像データは符号なしデータであり、複数の符号なしデー
タの平均値処理で必要となる総和データの算出処理で
は、演算器での加算により桁上げ信号は生じるが、桁下
げ信号はでない。したがって、これらのデータの総和デ
ータを算出する処理では、複数のデータの加算により生
じた複数の桁上げ信号の累積値を算出する必要がある
が、その累積値は、総和データを算出処理の中では使用
されない。その累積値が必要となるのは、後に総和デー
タをデータ数で割る除算処理においてである。したがっ
て、このようなデータの加算の途中に生じる桁上げの累
積値を保存し、後に総和データに対する除算を実行する
ときにその累積値と総和データとの組データに対して除
算を実行できれば、桁上げを正しく処理できることにな
る。この方法を採ると、加算されるデータのビット幅も
演算器のビット数も広げる必要はない。求められた総和
データに対する除算は、上記組データをシフターにより
下位側にシフトすることにより実行できる。
【0011】上記組データのビット数は、総和データの
ビット数と桁上げ信号の累積値のビット数の合計にな
る。したがって、上記シフターとしてはこの拡張された
ビット数のデータをシフト可能なように構成する必要が
ある。しかし、このための必要なシフターの回路規模の
増大は、このような拡張されたビット数のデータを各レ
ジスタに保持させ、かつその拡張されたビット数のデー
タを演算器により処理させるときに必要となる回路規模
の増大よりも小さくて済むと予想される。したがって、
総和演算の間に生じる桁上げ信号を累積し、後に除算を
するときに、その累積値を使用する方法では、総和を算
出する演算の間に生じた桁上げを正しく処理できるとと
もに、平均値処理に必要となる回路規模が少なくて済む
ことになる。
【0012】以上のことは、平均値処理に限らず、他の
処理にも言えることである。すなわち、一般に、ある符
号なしデータの加算により生じた桁上げ信号をその後そ
の加算の結果データが使用されるときまで保存し、その
加算結果データが使用されるときに、その加算結果デー
タと一緒に処理されればよいことになる。
【0013】本発明は、符号なしデータの処理に関する
上述の特徴に注目してなされたもので、本発明によるプ
ロセッサには、演算器が加算を実行したときに出力する
桁上げ信号の累積値を生成する回路が設けられ、この累
積値に対する演算を実行する他の演算器が設けられる。
【0014】より詳細には、上記目的を達成するため
に、本発明によるプロセッサでは、演算器が処理するデ
ータのビット幅および演算器が出力するデータのビット
幅は、桁上げ信号部分を含まないままとする。
【0015】上記演算器が複数の加算を実行する間に発
生した複数の桁上げ信号の累積値を表す桁上げ信号累積
データを生成する桁上げ信号累積回路が設けられる。こ
の桁上げ信号累積データは、複数ビットからなる。
【0016】さらに、上記桁上げ信号累積回路により生
成された桁上げ信号累積データに対する演算を実行する
他の演算器が設けられる。
【0017】本発明の望ましい態様では、上記桁上げ信
号累積回路はカウンタにより構成される。
【0018】本発明の具体的な態様では、上記他の演算
器は、上記桁上げ信号累積回路により生成された桁上げ
信号累積データとその下位側に付加された、上記複数回
の加算の結果得られた加算結果データとの組を下位側に
シフトするシフターを含む。当該他の演算器は、加算命
令とは異なる他の特定の命令、具体的にはシフト命令に
応答して動作する。
【0019】本発明のより具体的な態様では、一つまた
は複数の桁上げ信号累積回路が、プロセッサ内の複数の
レジスタに共通に設けられる。
【0020】本発明の望ましい態様では、上記複数の桁
上げ信号累積回路の数は、プロセッサ内の複数のレジス
タの数より少ない。
【0021】本発明の望ましい態様では、各桁上げ信号
累積回路に保持される桁上げ信号累積データのビット数
は、上記所定のビット数より小さくされる。
【0022】本発明のさらに具体的な態様では、少なく
とも一つの桁上げ信号累積回路が、SIMD型のプロセ
ッサ内の複数のパックトデータレジスタに共通に一つま
たは複数設けられる。
【0023】
【発明の実施の形態】以下、本発明に係るプロセッサを
図面に示したいくつかの実施の形態を参照してさらに詳
細に説明する。なお、以下においては、同じ参照番号は
同じものもしくは類似のものを表すものとする。また、
第2の実施の形態以降では、第1の実施の形態との相違
点を主に説明するに止める。
【0024】<発明の実施の形態1>図1は本発明に係
るSIMD型プロセッサのブロック図である。図1にお
いて、パックトデータレジスタ群120は、たとえば8
つの64ビットのレジスタからなり、各レジスタはたと
えば8個の8ビットのエレメントデータを保持すること
ができる8個のフィールドを含むと仮定する。演算ユニ
ット100,100’,, 100”は、同一のレ
ジスタに保持された8個のエレメントを保持する8個の
フィールドに対応して設けられ、同一のレジスタに保持
された8個のエレメントをそれぞれ処理するための回路
である。これらの演算ユニットは、たとえば合計8個用
いられるが、図1では、簡略化のため3つのみ図示し、
他は省略してある。これらの演算ユニットは同じ構成の
回路からなり、演算ユニット100,100’,,,1
00”は、演算器130,130’,,または130”
と、桁上げ信号累積回路140,140’,,または1
40”とマルチプレクサ150,150’,,,15
0”とよりなる。
【0025】桁上げ信号累積回路140は、本実施の形
態で新たに設けられたもので、演算器130内の算術論
理演算器(ALU)320(図2)が加算を繰り返し実
行する間に出力する複数の桁上げ信号を累積する回路で
ある。具体的には、この回路140は、カウンタ410
(図3)からなる。他の桁上げ信号累積回路14
0’,,,140”についても同様である。後に説明す
る特定の命令に応答して、その回路140により生成さ
れた桁上げ信号の累積値を使用する他の演算器として、
演算器130内にシフター330(図2)が設けられて
いる。他の演算器130’,,,130”についても同
様である。本実施の形態では、これらの信号累積回路1
40およびこのシフター330によりALU320が符
号なしデータに対して加算を繰り返し実行するときに発
生する桁上げ信号を正しく処理することを可能にする。
【0026】命令フェッチ回路162は、メモリ163
から順次命令をフェッチし、命令デコーダ161はフェ
ッチされた命令を解読し、制御回路160は解読された
命令を実行するための制御信号を生成し、それぞれの装
置を制御信号170によって制御する。命令デコーダ1
61により解読された命令がメモリ163からデータを
パックトデータレジスタ群120内のいずれかにロード
する命令であるかあるいはパックトデータレジスタ群1
20内のいずれかのレジスタ内のデータをメモリ163
にストアする命令であるときには、メモリアクセス回路
164によりデータのロードあるいはストアが行われ
る。メモリ163からパックトデータレジスタ群120
へのデータの移動は、データバス114,110,11
3を介して行われる。このデータは64ビットを含み、
このデータには通常8個の8ビットのエレメントが含ま
れている。この64ビットのデータには4個の16ビッ
トのエレメントが含まれている場合もある。パックトデ
ータレジスタ群120からメモリ163へのデータの移
動は、データバス112,115を介して行われる。
【0027】命令デコーダ161により解読された命令
がパックトデータレジスタ群120を使用する演算命令
であるときには、その命令が指定する一対のパックトデ
ータレジスタ内の一方から8個のエレメントが読み出さ
れ、8個の演算ユニット100,100’,,,10
0”にバス、112,101を介して転送される。同様
に、上記一対のパックトデータレジスタ内の他方からも
8個のエレメントが読み出され、8個の演算ユニット1
00,100’,,,100”にバス111,102を
介して転送される。それらの演算器は、それぞれに転送
されたエレメントに対して演算を実行し、その結果、8
ビットの演算結果データを、バス114を介してパック
トデータレジスタ群120内の命令で指定された一つの
レジスタにバス109,109’,,,109”と共通
のデータバス110,113を介して転送する。このよ
うに、本実施の形態は、単一命令により複数のエレメン
トを並列に処理するSIMD型のプロセッサである。
【0028】データバス101,102,110,11
1,112,113,114はそれぞれ64ビット幅と
する。データバス101,102を介して供給される6
4ビットデータは、それぞれデータバス103”〜10
3,104”〜104によりそれぞれ8ビットずつ、上
位ビットから順に演算器130”〜130に並列に供給
され、演算結果はデータバス109”〜109を介し
て、データバス109”が最上位ビットとなるようにデ
ータバス110に整列し、64ビットデータとしてデー
タバス113を介してパックトデータレジスタ群に格納
される。
【0029】図4に示すように、パックトデータレジス
タ群120は、8個の64ビットのパックトデータレジ
スタ200〜207と、書き込みレジスタ選択回路21
0と、読み出しレジスタ選択回路220とから構成され
る。以下ではパックトデータレジスタ200〜200”
は、簡単化のために単にレジスタと呼ぶことがある。ま
た、それぞれのレジスタは、以下に述べる命令ではR0
〜R7と表記する。
【0030】演算ユニット100においては、パックト
データレジスタ群120内の二つのレジスタから読み出
され、データバス101,102を介して1パックトデ
ータレジスタ群120から供給される二つの64ビット
データのそれぞれの最下位8ビットからなる二つのデー
タは、8ビットデータバス103,104を介して演算
器130に供給される。演算器130は、それらのデー
タに対して演算を行い、8ビットの演算結果データを出
力する8ビット演算器により構成される。演算器130
は、8ビットデータの演算結果を8ビットデータバス1
09に出力する。
【0031】演算器130において桁上がりが発生した
場合、桁上がりビットデータは1ビットバス105を介
してマルチプレクサ150に送られる。このマルチプレ
クサ150は、本実施の形態で新たに設置されたもので
ある。実行中の命令が16ビット以上のエレメントを処
理することを要求する加算命令であるときには、バス1
05上の桁上がりビットデータをデータバス106を介
して次の上位ビット演算器130’に送る。実行中の命
令が8ビットのエレメントを桁上げを無視しないで処理
することを要求する加算命令であるときには、バス10
5上の桁上がりビットデータをデータバス108を介し
て桁上げ信号累積回路140に送る。この命令は本実施
の形態により新設された命令であり、その使用方法は後
に説明する。マルチプレクサ150は、実行中の命令
が、上記2種類の加算命令であるとき以外には、バス1
05をデータバス106,108のどちらにも接続しな
い。
【0032】桁上げ信号累積回路140に保持された桁
上げ信号の累積データは、特定の命令が実行されたとき
に利用される。本実施の形態では、後に説明する特定の
種類のシフト命令が実行されたときには、そこに蓄えら
れたビットが演算器130へ4ビットデータバス107
を介して供給される。演算器130,桁上げ信号累積回
路140とマルチプレクサ150は、制御回路160に
よって制御される。
【0033】図2は演算器130の詳細を示し、この演
算器は、加減算と論理演算等を行う算術論理演算器(A
LU)320と、8ビット入力8ビット出力の従来と同
じくシフト演算を行うシフター331の他に12ビット
入力8ビット出力の本実施の形態で新たに設置したシフ
ター330とマルチプレクサ310と、マルチプレクサ
311から構成されている。演算器130内には、乗算
器等の図示しない他の演算器も設けられていて、その乗
算器は、桁上がりを無視して乗算を実行できる。しか
し、それらの演算器の存在は本発明の特徴に関連がない
ので、本実施の形態では、このような他の演算器は図示
されず、その説明も省略する。マルチプレクサ310
は、データバス104により供給されるデータを、デー
タバス300を介してALU320に供給するか、もし
くはデータバス301を介してシフター330に下位8
ビットデータとして供給するか、もしくはシフター33
1に供給するかを選択する。
【0034】ALU320は、実行中の命令が加減算命
令であるときには、データバス103と300により供
給される2つのデータに対して加減算を行い、演算結果
をデータバス313に出力する。実行中の命令が桁上が
りを正しく処理することを要求する加算命令であり、加
算の結果桁上がりが発生した場合、ALU320は、桁
上がりビットをバス105に出力する。ALU320
は、実行中の命令が論理演算命令であるときには、デー
タバス103と300により供給される2つのデータに
対して論理演算を行い、演算結果をデータバス303に
出力する。なお、実行中の命令が16ビット以上のエレ
メントに対する加減算を要求する命令であるときには、
最下位の演算器130以外の演算器130’等には、デ
ータバス106’を介して下位側の演算器から桁上げビ
ットデータが供給され、ALU320により加減算に使
用される。
【0035】シフター331は、実行中の命令が、パッ
クトデータレジスタ群120内のいずれかのレジスタに
保持された8ビットのデータに対するシフトを要求する
命令であるときに、マルチプレクサ310を介してその
レジスタから供給されるデータをその命令の指定に従っ
て上位側あるいは下位側にその命令が指定するビット数
だけシフトし、8ビットのシフト結果データをデータバ
ス305に出力する。
【0036】このシフターは、シリアルシフターあるい
はバレルシフターのいずれでもよいが、速度の点では後
者の方が望ましい。シフター331は、シフト方向が下
位側であるときには、シフトされるデータの元の最上位
ビットを新たな最上位ビットとして繰り返し供給する。
シフター331は、シフト方向が上位側であるときに
は、シフトされるデータの最下位ビットとして値‘0’
を繰り返し供給する。
【0037】また演算ユニット100〜100”のそれ
ぞれにおけるシフター331とそれに対応するシフター
(図示せず)は、つながっているものとする。例えば1
6ビットのシフト命令では、演算ユニット100’の内
部のシフター(図示せず)の下位ビットと演算ユニット
100の内部のシフター331の上位ビットがつなが
り、シフト方向が下位側であるときは、演算ユニット1
00’の内部の上記図示しないシフターにおいては、シ
フトされるデータの元の最上位ビットを新たな最上位ビ
ットとして繰り返し供給するが、演算ユニット100の
内部の上記シフター331における最上位ビットは、演
算ユニット100’の内部の上記図示しないシフターの
最下位ビットが繰り返し供給される。逆にシフト方向が
上位側であるときには、演算ユニット100’の内部の
上記図示しないシフターの最下位ビットは、演算ユニッ
ト100の内部の上記シフター331の最上位ビットが
繰り返し供給される。同様にしてさらに上位の演算ユニ
ット内の対応するシフター(図示せず)も2つずつつな
がる。32ビットシフト命令においてはシフターが4つ
ずつつながる。
【0038】シフター330は、桁上げ信号累積回路1
40に保持された累積データを利用する演算器として本
実施の形態で新たに設けられたものである。このシフタ
ー330は、実行中の命令が、パックトデータレジスタ
群120内のいずれかのレジスタに保持された8ビット
のデータと桁上げ信号累積回路140により累積された
データとの組データを下位側にシフトすることを要求す
る後述する特定のシフト命令であるときには、データバ
ス301を介してそのレジスタから供給される8ビット
のデータを下位ビットとして、データバス107を介し
て供給される4ビットの桁上がり累積データを上位ビッ
トとする組データに対して、その命令が指定するビット
数だけ下位側にシフトし、シフト後のデータの上位8ビ
ットからなるシフト結果データをデータバス304に出
力する。このシフターも、シリアルシフターあるいはバ
レルシフターのいずれでもよいが、速度の点では後者の
方が望ましい。
【0039】また、シフター330もシフター331と
同様に8ビット命令だけではなく、16ビット命令32
ビット命令にも対応し、例えば後述の、シフター330
を使用する16ビットシフト命令では、演算ユニット1
00’内の対応するシフター(図示せず)は、演算ユニ
ット100内のシフター331とつながり、シフト方向
が下位側であるときは、演算ユニット100内のシフタ
ー331における最上位ビットは、演算ユニット10
0’内の上記図示しないシフターの最下位ビットが繰り
返し供給される。逆にシフト方向が上位側であるときに
は、演算ユニット100’内の上記図示しないシフター
の最下位ビットは、演算ユニット100内のシフター3
31の最上位ビットが繰り返し供給される。同様にして
上位の演算ユニット内の対応するシフター(図示せず)
も2つずつつながる。32ビットシフト命令においては
シフターが4つずつつながる。
【0040】マルチプレクサ311は、データバス30
3,304,305のいずれか1つ上の演算結果データ
を選択してデータバス109へ出力する。
【0041】図3は示すように、本実施の形態では、桁
上げ信号累積回路140はビットカウンタ410により
構成される。カウンタ410は、データバス108より
桁上げビットデータが供給されると、カウンタ値を1つ
上げ、1上げたカウンタ値をデータバス107に出力
し、線170にクリア信号が与えられたときにカウンタ
値を0にするクリアする。
【0042】演算器130と他の演算器130’,13
0”,,,は互いに同じ回路構成であり、かつ並列に動
作し、これらの演算器に設けられた桁上げ信号累積回路
140,140’,140”,,,は全て同じ回路構成
であり、かつ並列に動作する。以上のことにより、演算
ユニット100,100’,100”,,,は全て同じ
構成であり、かつ並列に動作することが分かる。
【0043】本実施の形態では、新たに設置した装置を
動作させるため、従来の命令に加えて新たに加算命令、
シフト命令、カウンタクリア命令を新設する。以下で
は、命令はオペコードと、オペランドをニモニックで表
示する。また以下で用いるニモニックは、説明の便宜上
定めたものであり、本実施の形態では従来からある命令
に対して使用されているニモニックと異なるニモニック
が使用されることがある。
【0044】従来の加算命令、例えば“ADD8 R
x,Ry”(x,y=0〜8)は、パックトデータレジ
スタRxとRyの内部を論理的に8ビットに区切り、そ
れらのレジスタ内の対応する一対のエレメントを符号な
しデータと見なして他のエレメントと独立に加算し、結
果をパックトデータレジスタRyに格納するという命令
である。この加算命令は桁上げ信号を無視する加算命令
とする。この加算命令は飽和演算をする命令であっても
よい。
【0045】この命令が命令フェッチ回路162により
フェッチされて、命令デコーダ161において解読さ
れ、解読された命令から制御回路160は制御信号17
0を生成し、読み出しレジスタ選択回路220,書き込
みレジスタ選択回路210とマルチプレクサ312,3
13,150をそれぞれ制御信号170によって制御す
る。制御信号170によって制御された読み出しレジス
タ選択回路220は、レジスタRxとRyのそれぞれか
ら8個のエレメントを並列に読み出し、データバス11
1と112に出力する。同様に制御されたマルチプレク
サ310はそこに供給されたエレメントをデータバス3
00を介してALU320に供給し、同様に制御された
マルチプレクサ311は、ALU320から与えられる
加算結果データをバス109に出力する。同じく制御信
号170によって制御されたマルチプレクサ150(図
1)は、入力105をどこにも接続せずにoffとな
る。従って、ALU320において発生した桁上がりの
ビットは無視される。
【0046】これに対して新規加算命令、例えば“AD
D8C Rx,Ry”が上記従来加算命令と異なる点
は、マルチプレクサ311がデータバス108に接続す
るように制御されることであり、その他は上記従来加算
命令と同様に制御される。従って、新規加算命令を実行
した結果、ALU320において桁上がりが発生した場
合、ALU320は、発生した桁上がりビットを桁上げ
信号累積回路140内のカウンタ410(図3)に供給
し、カウンタ410のカウンタ値が1つ上がる。
【0047】この新規の加算命令は、桁上げ信号を正し
く処理することを要求するときに従来の加算命令に代っ
て使用される。たとえば、複数のデータの平均値を求め
るときに、それらのデータの総和を求めるために実行す
る複数の加算にはこの新規加算命令が称される。その場
合、それらの複数の加算を実行する間に生じた桁上げ信
号の総数がカウンタ410に保持されることになる。
【0048】従来のシフト命令、例えば“SH8Rn
Rx”は、パックトデータレジスタRxの内部を論理的
に8ビットに区切り、それぞれ独立にnビット右シフト
し、シフト後の8ビットデータをパックトデータレジス
タRxに格納するという命令である。この命令が命令フ
ェッチ回路162によりフェッチされて、命令デコーダ
161によって解読され、解読された命令から制御回路
160は制御信号170を生成し、読み出しレジスタ選
択回路220,書き込みレジスタ選択回路210とマル
チプレクサ310,311,150が制御される。制御
信号170によって制御された読み出しレジスタ選択回
路220はRxをデータバス112に出力する。同様に
制御されたマルチプレクサ310は、そこに供給された
エレメントをデータバス302を介してシフター331
に供給する。同様に制御されたマルチプレクサ311
は、このシフターの出力をバス305を介してバス10
9に購求する。同様に制御されたマルチプレクサ150
は、それへの入力105をどこにも接続されずにoff
となる。
【0049】これに対して新規シフト命令、例えば“S
H8RnC Rx”の上記従来シフト命令と異なる点
は、マルチプレクサ310がレジスタRxよりバス10
4を介して読み出された一つのエレメントをバス301
を介してシフター330の下位側の位置に入力し、マル
チプレクサ311がこのシフター330からバス304
に出力されるシフト後のデータをバス109に転送する
ことであり、その他は上記従来シフト命令と同様に制御
される。カウンタ410に保持された累積データを構成
する4ビットはシフター330の上位側に並列に入力さ
れているので、このシフター330は、この累積データ
とレジスタRx内のエレメントデータとの組をnビット
下位側にシフトすることになる。
【0050】この新規シフト命令は、桁上げ信号累積回
路140に保持された桁上げ信号の累積値を利用すると
きに従来のシフト命令に代って使用される。上述の平均
値処理においては、複数のデータの総和を求めて後に、
その総和データをデータ数でもって割る除算を実行する
ときに使用される。上記の総和データがレジスタRxに
保持されていると仮定すると、上記総和データの上位側
にその総和データの算出時に発生した複数の桁上げ信号
の累積値が付加されたデータがシフトされる。したがっ
て、このシフト後の結果データは、上記総和データの算
出中に発生した桁上げ信号を考慮した正しい結果とな
る。
【0051】新設のカウンタクリア命令、例えば“CL
RC”は、カウンタ410のカウンタ値を0に設定す
る。この命令が命令フェッチ回路162でフェッチされ
ると、命令デコーダ161で解読し、解読された命令か
ら制御回路160は制御信号170を生成し、制御信号
170によりカウンタ410はクリアされる。
【0052】以下に本実施の形態のプロセッサでの平均
値算出処理の詳細を説明する。8個のソースデータAi
(i=0〜7)はそれぞれ8ビットのデータであり、図
4のパックトデータレジスタ200内に記載したよう
に、同一のレジスタ200内の8つのフィールドにロー
ドされるエレメントであるとする。したがって、iはエ
レメント番号と呼ぶことができる。図において、各ソー
スデータの最上位ビットは、そのデータを保持するフィ
ールドの最左端に位置するとする。他のソースデータB
i,Ci,Di(i=0〜7)も同様に8ビットのデー
タであり、8個のソースデータBi(i=0〜7)、C
i(i=0〜7)、Di(i=0〜7)はそれぞれレジ
スタ201,202,203に保持されているとする。
これらのデータは全て符号なしデータであると仮定す
る。以上のデータを用いて、同じエレメント番号iを有
する4つのデータの平均値Xi=(Ai+Bi+Ci+
Di)/4”(i=0〜7)を求めるとする。
【0053】平均値Xi(i=0〜7)を求めるための
命令列は、本実施の形態では以下の通りとなる。
【0054】 #1 CRLC #2 LOAD (ma),R0 #3 LOAD (mb),R1 #4 LOAD (mc),R2 #6 ADD8C R1, R0 #5 LOAD (md),R3 #7 ADD8C R2, R0 #8 ADD8C R3, R0 #9 SH8RC2 R0 #10 STORE R0,(md) まず、最初のクリア命令によりカウンタ410がクリア
される。次の4つの命令はロード命令である。すなわ
ち、LOAD (ma),R0等は、メモリアドレスm
aにある64ビットデータをレジスタR0にロードする
命令である。ここでは、メモリアドレスmaの記憶位置
に画像データ群A0〜A7が記憶され、これらのデータ
が一つのロード命令によりレジスタR0にロードされ
る。同様に、画像データ群B0〜B7、C0〜C7、D
0〜D7が第2,第3,第4のロード命令によりメモリ
163からレジスタR1,R2,R3にそれぞれロード
される。次の加算命令により、レジスタR0内のデータ
群はA0+B0,A1+B1,,,A7+B7という加
算がなされ、これにより得られる8個の総和データ群X
0〜X7がレジスタR0に格納される。さらに第2の加
算命令により、レジスタR0内の総和データ群X0〜X
7とレジスタR2内のデータC0〜C7とが加算され、
その結果、A0+B0+C0,A1+B1+C1,,,
A7+B7+C7という総和データ群が得られ、レジス
タR0に格納される。これらの総和データ群もここでは
X0〜X7で表す。最後の加算命令により、A0+B0
+C0+D0,A1+B1+C1+D1,,,A7+B
7+C7+D7という最終的な総和を表すデータ群が得
られ、レジスタR0に格納される。これらの総和データ
群もここではX0〜X7で表す。
【0055】これらの4つの加算命令の実行中に桁上げ
がいずれかの演算ユニット、たとえば100内の演算器
320により発生された場合には、その演算ユニット内
のカウンタ410がカウントアップをする。このことは
他の演算ユニット100’,100”でも同様である。
こうして、各演算ユニット内のカウンタ410は、対応
する演算器130内のALU320により発生された桁
上げビットの総数を保持することになる。上記4つの加
算命令に続くシフト命令が、実行されると、その演算ユ
ニット内のシフター330は、レジスタR0に保持され
た各総和データXi(i=0,1,,または7)は、対
応する演算ユニット内のカウンタ410内の累積データ
の下位側にその総和データXiとを付加して得られる1
2ビットのデータを、2ビット下位側にシフトする。こ
の結果、シフター330により出力されるデータは、そ
の累積データを正しく反映して算出された、データA
i,Bi,Ci,Diの平均値を表す。なお、命令ST
ORE R0,(md)は、レジスタR0内の平均値デ
ータをメモリアドレスmdの位置にストアする命令であ
る。
【0056】こうして、本実施の形態では、8つの平均
値Xiを並列に求めることができる。以上から分かるよ
うに、本実施の形態では従来の演算器に簡単な回路を付
加することによって、桁上がりのビットをカウンタ41
0によって保持し、また新規シフター330によって参
照できるので、“x=(a+b+c+d)/4”等の複
数の8ビットソースデータの平均を求める演算で発生す
る桁上げ信号を無視することなく実行できる。この際、
エレメントサイズを拡張する必要はなく、また演算器の
扱うビット幅を拡大する必要はない。このため、本実施
の形態において新たに追加した回路の規模は少なくて済
む。
【0057】<発明の実施の形態1の変形例> (1)実施の形態1ではデータバス107、シフター3
30の入力をそれぞれ4ビットとしているが、回路規
模、性能に応じて任意とする。またカウンタ410の最
大値もこのビットに合わせて任意とする。上記4つの8
ビットデータの平均を求める演算では、カウンタ410
が採り得る最大値は2ビットであるので、この種の用途
のみならば、データバス107、シフター330ともに
2ビットで十分である。この変形は以下に示す他の実施
の形態にも適用できる。
【0058】(2)実施の形態1ではパックトデータレ
ジスタ群を64ビットで8つとしたが、回路規模に応じ
て任意とし、それに応じデータバス101,102,1
10,111,112,113も任意とする。この変形
は以下に示す他の実施の形態にも適用できる。
【0059】(3)上記変形例(2)において、100
〜100”の回路の数は任意とする。例えばパックトデ
ータレジスタ群120が128ビットの場合、100〜
100”の数を16とすることで、16回の8ビット演
算が並列に行われる。この変形は以下に示す他の実施の
形態にも適用できる。
【0060】(4)実施の形態1では主にエレメントサ
イズが8ビットでの説明であったが、エレメントサイズ
16ビットまたは32ビットにおいても適応する。実施
の形態1で示した動作とエレメントサイズ16ビットで
の動作の違いは、マルチプレクサ150が常にデータバ
ス106に接続している点で、その他は実施の形態1と
同じ動作である。従って、新規命令“ADD16C R
x,Ry”,“SH16RnC Rx”を新設すること
で、エレメントサイズ16ビットにおいても同様に動作
する。これらの命令が命令デコーダ161で解読され、
解読された命令から制御回路160は制御信号170を
生成する。ここでエレメントサイズが16の命令では、
マルチプレクサ150を常にデータバス106に接続さ
せ、マルチプレクサ150’は任意とする制御信号17
0を生成する。なお省略してあるが、マルチプレクサ1
50〜150”の1つおきに上記制御させる。32ビッ
トにおいても同様であり、こちらは3つおきに上記制御
させる。この変形は以下に示す他の実施の形態にも適用
できる。
【0061】(5)実施の形態1では演算器130を2
入力としたが、3入力または4入力にも適応するものと
し、これに応じて並列に処理を行うため、データバス1
01,102,111,112,103,104の数も
任意とする。このことは、以下に示す他の実施形態にも
適用される。
【0062】(6)実施の形態1において新設したシフ
ト命令“SH8RnC Rx”において、シフトすると
同時にカウンタ410をクリアするようにすると、実施
の形態1において新設したクリア命令“CLRC”は省
略でき、結果として実行すべき命令数を減らすことがで
き、処理の高速化に役立つ。
【0063】(7)実施の形態1では本発明を適用した
SIMD型のプロセッサを示したが、本発明はSIMD
型のプロセッサに限定されるのではなく、演算器が一つ
しかない、SISD型のプロセッサにも適用可能である
のは言うまでもない。但し、SIMD型のプロセッサで
は演算器の数が多いので、本発明により演算回路の回路
規模を増大することなく、桁上げ信号を正しく処理でき
ることの利点は大きい。
【0064】<発明の実施の形態2>本実施の形態で
は、桁上げ信号累積回路140が複数個設けられている
点で主として実施の形態1と異なる。すなわち、桁上げ
信号累積回路140内に複数のカウンタを設け、桁上げ
信号を累積するカウンタをそれらの中から命令により選
択できるようになっている すなわち、図5に示すように、桁上げ信号累積回路14
0は、桁上げビットデータが供給されるとカウンタ値を
1つ上げ、カウンタ値を出力する機能を備えたカウンタ
410〜413と、カウンタ410〜413の内、桁上
げビットデータを供給すべきいずれか1つを選択するマ
ルチプレクサ421と、カウンタ410〜413の内、
データバス107に出力を供給すべきいずれかのカウン
タを選択するマルチプレクサ422から成る。カウンタ
410〜413は、実施の形態1と同様にカウンタクリ
ア機能を持つ。
【0065】ここで、カウンタ410〜413に個別に
アクセスするために、実施の形態1で新設した命令をさ
らに拡張する。まず実施の形態1で新設した加算命令
“ADD8C“に代えて、桁上がりのビットをどのカウ
ンタ410〜413に供給するかを選択可能にするため
に、加算命令“ADD8Cn Rx,Ry”(n=0〜
3)を新設する。n=0〜3はそれぞれカウンタ410
〜413に対応している。
【0066】命令“ADD8C0 Rx,Ry”と実施
の形態1で新設した“ADD8CRx,Ry”との相違
点はマルチプレクサ421を制御することにより、カウ
ンタ410を指定する点であり、この命令が命令デコー
ダ161で解読され、解読した命令から制御回路160
が制御信号170を生成すると、実施の形態1で新設し
た“ADD8C Rx,Ry”における制御に加えて、
新たにマルチプレクサ421を制御する。これにより、
マルチプレクサ421はこの命令で指定されるカウンタ
410につながり、データバス108上の桁上げビット
データはカウンタ410に加えられる。またカウンタの
出力には影響がないため、マルチプレクサ422は動作
させる必要はない。同様に、加算命令ADD8C1,A
DD8C2,ADD8C3は、カウンタ410〜413
を選択する。
【0067】実施の形態1において新設したシフト命令
に代えて、どのカウンタ410〜413からの出力をデ
ータバス107に出力するかを指定可能にするために、
シフト命令、“SH8RmGn Rx”(m:シフトビ
ット数、n:カウンタ選択値、x:パックトデータ選択
値)を新設する。たとえば、命令“SH8RnC0R
x”と実施の形態1で新設した“SH8RnC Rx”
との相違点はマルチプレクサ422において、どのカウ
ンタ410〜413の出力をデータバス107に出力す
るかを選択する点であり、この命令が命令デコーダ16
1で解読され、解読された命令から、制御回路160が
制御信号170を生成し、実施の形態1で新設した“S
H8RmC Rx”における制御に、新たにマルチプレ
クサ422の制御と、カウンタ410を出力する制御が
加わる。これによりマルチプレクサ422はカウンタ4
10に接続し、カウンタ410の出力をデータバス10
7に出力する。そのほかは“SH8RnC Rx”と同
様の動作をする。また、シフト命令においてはデータバ
ス108からの入力がないため、マルチプレクサ421
は動作させる必要がない。同様に、シフト命令SH8R
mC1,SH8RmC2,SH8RmC3はカウンタ4
10〜413を選択する。
【0068】さらに、カウンタ410〜413を個別に
指定してクリア可能とするためにクリア命令“CRLC
n”(n=0〜3)を新設し、この命令が命令デコーダ
161で解読され、解読された命令から制御回路160
が制御信号170を生成し、カウンタ410〜413の
一つを個別に指定しクリアする。
【0069】このように、桁上げ信号を保持する複数の
カウンタが設けると、より多くのデータを処理するとき
に、桁上げ信号を累積するカウンタを選択でき、処理が
高速化できるあるいはプログラムが容易となる。たとえ
ば、本プロセッサが、複数、たとえば二つのスカラー命
令を並列に実行するスーパースカラー方式のプロセッサ
とすることができる。そのようなプロセッサでは、各命
令は複数のステージに分けてパイプライン的に実行され
るとともに、二つの命令の同じステージが並行して実行
される。たとえば、各命令は、フェッチ、デコード、演
算という三つのステージでもって実行される。
【0070】このようなプロセッサを実現するために
は、デコード回路、演算回路を二組設ける必要がある。
フェッチ回路もできれば二つ設けることが望ましい。こ
のようなプロセッサでの処理速度を増大するには、並列
に実行できる命令の組み合わせが多いことが望ましい。
二つの命令が並列に実行するためには二つの命令の間に
競合がないことが望ましい。スーパースカラー方式のプ
ロセッサにおいて、本実施の形態のように、複数のカウ
ンタが桁上げ信号累積回路140内に設けられると、並
列に実行できる二つの命令の組を増大することができ、
処理速度を向上できる。たとえば、実施の形態1で示し
たプログラムを上記スーパースカラー方式で実行させる
場合、命令列を以下のように並べることが望ましい。
【0071】 #1 CRLC #2 LOAD (ma),R0 #3 LOAD (mb),R1 #4 LOAD (mc),R2 #5 ADD8C R1, R0 #6 LOAD (md),R3 #7 ADD8C R2, R0 #8 ADD8C R3, R0 #9 SH8RC2 R0 #10 STORE R0,(md) この場合、命令#4と#5は並列に実行でき、命令#6
と#7は並列に実行できる。なお、命令#2と#3が並
列に実行できるか否かは、フェッチ回路が二つあるか否
かにより変わる。
【0072】本実施の形態において8個のソースデータ
を二組に分け、各組の4つのソースデータの平均値を求
める二つの処理を並列に実行させるプログラムの例は以
下の通りである。このプログラムは、二つのカウンタ4
10,411を使用する。第1の平均値はレジスタR0
〜R3を使用し、第2の平均値はR4〜R7を使用す
る。なお、maからmjはメモリアドレスである。
【0073】 # 1 CRLC0 # 2 CRLC1 # 3 LOAD (ma),R0 # 4 LOAD (mb),R1 # 5 LOAD (me),R4 # 6 ADD8C0 R1, R0 # 7 LOAD (mf),R5 # 8 LOAD (mc),R2 # 9 ADD8C1 R5, R4 #10 LOAD (mg),R6 #11 ADD8C0 R2, R0 #12 LOAD (md),R3 #13 ADD8C1 R6, R4 #14 LOAD (mh),R7 #15 ADD8C0 R3, R0 #16 ADD8C1 R7, R4 #17 SH8R2C0 R0 #18 SH8R2C0 R4 #19 STORE R0,(mh) #20 STORE R1,(mi) このプログラムでは、並列に実行できる命令の組は次の
通りである。命令#5と#6,#8と#9、#10#1
1,#12と#13,#14#15,#16と#17、
#18と#19。よってカウンタが一つの場合よりも並
列に実行できる命令が増大する。
【0074】<発明の実施の形態2の変形例> (1)実施の形態2において、カウンタ410〜413
の数は任意とし、それに伴い実施の形態2で新設した命
令のカウンタ選択値nも任意とする。
【0075】(2)実施の形態2において、カウンタ4
10〜413を個別に出力するように制御することによ
り、マルチプレクサ422は省略できる。
【0076】(3)実施の形態2の変形例(2)におい
て、逆にカウンタ410〜413を全て出力させ、マル
チプレクサ422で出力値を選択することにより、カウ
ンタを指定する制御信号は省略できる。
【0077】<発明の実施の形態3>本実施の形態で
は、実施の形態2で使用した複数のカウンタを有する桁
上げ信号累積回路140に代えて複数のレジスタと演算
器を有する回路を使用する。
【0078】図6において、桁上げ信号累積回路140
には、実施の形態2におけるカウンタ410〜413の
代わりにレジスタ430〜433が使用される。ここで
はレジスタ430〜433がそれぞれ4ビットと仮定
し、レジスタ430から順に0〜3と番号をつける。演
算器440は、データバス108から供給される桁上が
りビットとデータバス403から供給されるデータを演
算し、演算結果をデータバス401に出力する。この演
算器は、少なくとも加算を実行できる。もちろん他の演
算を実行できるようにしてもよい。書き込みレジスタ選
択回路423は、データバス401からの入力をどのレ
ジスタに格納するか選択する。読み出しレジスタ選択回
路424は、どのレジスタ430〜433からデータを
データバス402に読み出すか選択する。マルチプレク
サ425は、読み出されたデータをデータバス107を
介してALU320に送るか、データバス403を通じ
て演算器440に送るかを選択する。
【0079】演算器440を単体の加算器とした場合に
ついて説明する。ここで実施の形態2と同様に、レジス
タ430〜433の個々について参照できるように命令
を新設する。実施の形態2と同様の書式で、新規加算命
令“ADD8Gn Rx,Ry”(n=0〜3)を新設
し、nはレジスタ430〜433の番号に対応する。こ
こでまず“ADD8G0 Rx,Ry”をとりあげる。
“ADD8G0 Rx,Ry”は桁上げ信号累積回路1
40以外では、実施の形態2で新設した加算命令と同じ
動作をするものとし、桁上げ信号累積回路140内の動
作の説明にとどめる。この命令が命令デコーダ161で
解読されると、解読された命令から制御回路160は制
御信号170を生成し、読み出しレジスタ選択回路42
4と書き込みレジスタ選択回路423とマルチプレクサ
425を制御する。制御された書き込みレジスタ選択回
路423と読み出しレジスタ選択回路424はそれぞれ
レジスタ430を選択し、マルチプレクサ425はデー
タバス403と接続することで、レジスタ430から参
照されたデータは演算器440に供給され、データバス
108から供給されるデータと演算を行い、演算結果が
レジスタ430に格納される。以下同様にn=0〜3ま
で新設する。
【0080】次に実施の形態2で新設したシフト命令
“SH8RmGn Rx”を本実施の形態でも新設す
る。この命令は上記新規加算命令と同様に、桁上げ信号
累積回路140以外では、実施の形態2で新設したシフ
ト命令と同じ動作をする。以下の説明は桁上げ信号累積
回路140内の動作の説明にとどめる。ここでまず“S
H8RmG0 Rx”とりあげる。この命令が命令デコ
ーダ161で解読されると、解読した命令から制御回路
160は制御信号170を生成し、読み出しレジスタ選
択回路424とマルチプレクサ425を制御する。制御
された読み出しレジスタ選択回路424はレジスタ43
0を選択し、制御されたマルチプレクサ425はデータ
バス107と接続することにより、レジスタ430内の
データはデータバス107を介して演算器440に供給
される。以下同様にn=0〜3まで新設する。上記のよ
うに演算器440が加算器の場合、実施の形態2とほぼ
同じ動作をする。
【0081】もし、本実施の形態に依らないで、加算用
のALU320が桁上げを処理可能なようにするには、
パックトデータレジスタ群120内の各レジスタの一つ
のエレメントを保持するフィールドをたとえば8ビット
から12ビットあるいは16ビットに変更し、ALU3
20の内、二つのデータを加算する回路部分を、二つの
12ビットのデータの加算を行うように変更することが
考えられる。
【0082】本実施の形態では、演算器440を設ける
ために、実施の形態2よりは回路規模が増大する。しか
し、本実施の形態が必要とする回路の規模は、上記のよ
うに変更した場合よりも小さくて済む。すなわち、演算
器440の加算の対象は、レジスタ430〜433内の
4ビットのデータと線108から与えられる1ビットの
桁上げビットである。したがって、この演算器は4ビッ
トの二つのデータを加算する加算器より簡単な構成でよ
い。したがって、本実施の形態での演算器440とAL
U320の内の加算を実行する部分の回路規模の合計
は、そのように変更したときにALU320内の加算器
部分が必要とする回路規模よりは小さくできる。さら
に、本実施の形態で使用するレジスタ430〜433の
数は、パックトデータレジスタ群120内のレジスタの
数より少なくてよい。したがって、本実施の形態では、
パックトデータレジスタ群120とレジスタ430〜4
33の回路規模の合計は、パックトデータレジスタ群1
20の全レジスタのビット幅を上記のように変更した場
合より少なくて済む。
【0083】なお、レジスタ430〜433の数を、全
パックトデータレジスタの数と等しくした場合にも、前
述のように、本実施の形態では、演算器440の回路規
模は、通常の4ビット加算器より簡単であるので、依然
として本実施の形態によるプロセッサの回路規模は、上
記のように本実施の形態に依らないでプロセッサを変更
した場合より小さくできる。しかし、回路規模の縮小と
いう観点では、レジスタ430〜433の数を、全パッ
クトデータレジスタの数より少ない方が望ましい。実施
の形態2で使用したカウンタが複数ある場合と同じ理由
により、スーパスカラー方式のプロセッサにおいては、
レジスタ430〜433の数が複数あることが望まし
い。その数は、全パックトデータレジスタの数にも依存
するが、通常はその数の半分以下、1/4以上であるこ
とが望ましい。
【0084】また本実施の形態により、桁上げ信号累積
回路内での演算を独立に実行できる。例えばレジスタ4
30内のデータと、レジスタ431内のデータを加算し
てレジスタ431に再び格納する新規命令を設定する。
これによりパックトデータレジスタ120内の2つのデ
ータを加算する際、両方に桁上がりデータがある場合も
正しく演算される。例えば平均値演算“y=((a+
b)+(c+d))/4”を行う際、a+b、c+dの
両方に桁上がりビットが発生しても、その両方の桁上が
りビットを加算しておくことで平均値yは正しく求める
ことができる。
【0085】<発明の実施の形態3の変形例> (1)実施の形態1におけるカウンタが一つであるよう
に、実施の形態4におけるレジスタ430〜433の数
を一つとすることもできる。
【0086】(2)演算器440は、基本的には、レジ
スタ430〜433のいずれかの内容を桁上げ信号によ
り1だけ増大するインクリメンタとして使用される。し
たがって、そのようなインクリメンタを、加算器でない
構造を有する回路により実現できるときには、そのよう
なインクリメンタは、演算器440の代わりに使用でき
る。本明細書ではそのようなインクリメンタも加算のた
めの演算器と見なす。
【0087】(3)実施の形態3において、レジスタ4
30〜433は4ビットと仮定したが、レジスタの大き
さは任意とする。またレジスタ430〜433の数も任
意とする。従ってレジスタの大きさにより変化する、デ
ータバス402,403,401,また107の大きさ
も任意とする。
【0088】(4)実施の形態3において1ビットデー
タバスとした105,108は1〜8ビットまで任意の
値を持つことができる。例えばALU320を3入力1
出力等の加算を行う演算器に変更すると、複数例えば2
つの桁上がりビットが発生しうる。この場合には、デー
タバス105と108を2ビットとし、データバス10
5,108を介して桁上げ信号累積回路140に2ビッ
トの桁上げデータを並列に供給できる。実施の形態1と
2では桁上げ信号累積回路内にカウンタを用いていた
が、実施の形態3では演算器とレジスタという構成であ
るので、本変更により複数の桁上がりビットに対応する
ことが可能となる。なお、このような変形例において
も、レジスタ430〜433の総数が全パックトデータ
レジスタの数より少ないときには、本変形例の回路規模
は依然として小さいという利点がある。
【0089】(5)実施の形態3の上記変形例3におけ
るデータバス401〜403と、レジスタ430〜43
3と、実施の形態3の上記変形例4におけるデータバス
105と108と、実施の形態1の変形例1におけるデ
ータバス107とシフター330の入力部の全てを8ビ
ットとすることで、ALU320における積においても
桁上げ信号累積回路140を使用可能とする。そこで、
新たに積算命令を新設する。動作は実施の形態3で新設
した加算命令と、ALU320以外の動作は同じ為省略
する。
【0090】(6)実施の形態3において、演算器44
0は加算器以外に、減算器、論理演算器、シフター等を
追加することができる。
【0091】(7)この変形例6の場合、レジスタ43
0〜433内の累積データに対して演算を実行する命令
を新設することが有益である。このような命令を使用す
れば、レジスタ430〜433内の累積データだけに対
する演算を、パックトデータレジスタ内のデータとは独
立に実行するようにできる。
【0092】<発明の実施の形態4>本実施の形態で
は、実施の形態1で使用した二つのシフター330,3
31の動作を一つのシフターにて実現する。それによ
り、プロセッサの回路を実施の形態1よりも簡単にす
る。なお、本実施の形態の技術は、実施の形態2と3に
も適用できる。
【0093】図7は本実施の形態における演算器130
の構成を示し、マルチプレクサ312は、データバス1
04からのデータを、データバス306を介してALU
320に供給するかあるいはデータバス307を介して
シフター332に供給するかを選択する。マルチプレク
サ314は、データバス107上の4ビットの桁上げ信
号の累積データかもしくは4ビットの固定データ‘0’
を選択する。シフター332は、データバス307を介
してマルチプレクサ312から供給される8ビットデー
タを下位ビットとして、またデータバス500を介して
マルチプレクサ314から供給される4ビットデータを
上位ビットとする組み合わせデータに対してしてシフト
を行い、シフト結果の下位8ビットをデータバス309
に出力する。マルチプレクサ313データバス308、
309どちらかに選択する実施の形態1〜3で新設した
命令は、本実施においても同様に扱うことができる。マ
ルチプレクサ314は、実施の形態1〜3において新設
した、シフト命令の実行においてデータバス107を選
択し、そのほかの命令では固定データ‘0’を選択す
る。従ってシフター332の上位4ビットの入力は、新
設のシフト命令以外のシフト命令では0であり、新設シ
フト命令が実行されたときのみバス107上の桁上げ信
号の累積データが入力される。以上から、本実施の形態
のプロセッサは実施の形態1に比べて回路が簡単である
ことが分かる。
【0094】<発明の実施の形態4の変形例> (1)本実施の形態と実施の形態2あるいはその変形例
との組み合わせ、また本実施の形態と実施の形態x4あ
るいはその変形例との組み合わせも可能とする。
【0095】(2)実施の形態4において、シフターの
入力部を4ビットとしているが任意とする。
【0096】(3)実施の形態4においてマルチプレク
サ314は、桁上げ信号累積回路140においてデータ
バス107への入力が制御されている場合は省略でき
る。
【0097】なお、本発明は以上の実施の形態あるいは
その変形例に限定されるのではない。以上の実施の形態
あるいはその変形例の組み合わせによっても実現でき
る。また、他の実施の形態よっても実現できることは言
うまでもない。
【0098】
【発明の効果】以上説明したことから明らかなよう、本
発明によれば、複数の符号なしデータの平均値を求める
処理の実行時のように、繰り返し加算が実行されるとき
に発生する桁上がりを比較的簡単な回路により正しく処
理するのに適したプロセッサが得られる。
【図面の簡単な説明】
【図1】本発明に係るプロセッサの概略ブロック図。
【図2】図1の装置に使用される演算器の概略ブロック
図。
【図3】図1の装置に使用される桁上げ信号累積回路の
概略ブロック図。
【図4】図1の装置に使用されるパックトデータレジス
タ群の概略ブロック図。
【図5】本発明に係る他のプロセッサで使用される桁上
げ信号累積回路の概略ブロック図。
【図6】本発明に係るさらに他のプロセッサで使用され
演算器の概略ブロック図。
【図7】本発明に係るさらに他のプロセッサで使用され
る桁上げ信号累積回路の概略ブロック図。
【符号の説明】
100,100’,100”・・・演算ユニット 210・・・書き込みレジスタ選択回路 220・・・読み出しレジスタ選択回路 310〜314・・・マルチプレクサ 423・・・書き込みレジスタ選択回路 424・・・読み出しレジスタ選択回路

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】所定のビット幅の少なくとも二つのデータ
    に対する加算を行う演算器と、 上記演算器が桁上げ信号を発生する毎にその桁上げ信号
    が入力され、上記演算器が複数の加算を実行する間に発
    生した複数の桁上げ信号の累積値を表す、複数ビットか
    らなる桁上げ信号累積データを生成する桁上げ信号累積
    回路と、 上記桁上げ信号累積データに対する演算を実行する他の
    演算器とを有するプロセッサ。
  2. 【請求項2】上記他の演算器は、上記演算器が実行した
    複数回の加算に対して上記桁上げ信号累積回路により生
    成された桁上げ信号累積データと、そのデータの下位側
    に付加された、上記複数回の加算の結果得られた加算結
    果データとの組を下位側へシフトし、上記ビット数のデ
    ータを出力するためのシフターを有する請求項1記載の
    プロセッサ。
  3. 【請求項3】上記演算器から供給された、上記ビット数
    の加算結果データを保持し、保持された加算結果データ
    を上記演算器に次の加算のためのデータとして供給でき
    るデータ保持回路をさらに有し、 上記シフターは、上記演算器が実行した複数回の加算に
    対して上記桁上げ信号累積回路により生成された桁上げ
    信号累積データと、そのデータの下位側に付加された、
    上記複数回の加算の結果得られた、上記データ保持回路
    に保持された加算結果データとの組を下位側へシフト
    し、上記ビット数のデータを出力するためのシフターで
    ある請求項1記載のプロセッサ。
  4. 【請求項4】上記桁上げ信号累積回路に保持される上記
    桁上げ信号累積データは、上記所定のビット数より少な
    いビット数を有する請求項3記載のプロセッサ。
  5. 【請求項5】上記桁上げ信号累積回路は、カウンタによ
    り構成されている請求項3記載のプロセッサ。
  6. 【請求項6】演算器と、 少なくとも一つの他の演算器と、 上記演算器に接続され、それぞれ少なくとも所定のビッ
    ト数のデータを保持することができる複数のレジスタ
    と、 上記演算器に接続された少なくとも一つの桁上げ信号累
    積回路と、 選択回路とを有し、 上記選択回路は、上記複数のレジスタの内の複数のレジ
    スタに保持されたデータを上記演算器に供給し、上記演
    算器から供給される加算結果データを一つのレジスタに
    転送し、一つのレジスタに保持したデータを上記他の演
    算器に供給し、上記他の演算器から供給される演算結果
    データを一つのレジスタに転送する回路を有し、 上記演算器は、上記選択回路により選択された複数のレ
    ジスタに保持された、それぞれ上記所定のビット数の複
    数のデータに対する加算を行うための演算器であり、 上記桁上げ信号累積回路は、上記演算器が桁上げ信号を
    発生する毎にその桁上げ信号が入力され、その演算器に
    より発生された桁上げ信号の累積値を表す、複数ビット
    からなる桁上げ信号累積データを生成し、 上記他の演算器は、上記生成された桁上げ信号累積デー
    タと、そのデータの下位側に付加された、上記複数のレ
    ジスタの内、上記選択回路により選択された一つのレジ
    スタに保持された加算結果データとの組に対して演算を
    行うための演算器であるプロセッサ。
  7. 【請求項7】上記他の演算器は、上記桁上げ信号累積回
    路により生成された上記桁上げ信号累積データと、その
    データの下位側に付加された、上記複数のレジスタの
    内、上記選択回路により選択された一つのレジスタに保
    持された加算結果データとの組を、下位側へシフトし、
    上記ビット数を有するシフト結果データを出力するため
    のシフターを有する請求項6記載のプロセッサ。
  8. 【請求項8】上記桁上げ信号累積回路に保持される上記
    桁上げ信号累積データは、上記所定のビット数より少な
    いビット数を有する請求項7記載のプロセッサ。
  9. 【請求項9】上記桁上げ信号累積回路は、カウンタによ
    り構成されている請求項7記載のプロセッサ。
  10. 【請求項10】上記プロセッサは、上記演算器が発生す
    る桁上げ信号と、上記桁上げ信号累積回路内の桁上げ信
    号累積データとを演算し、上記桁上げ信号累積回路に出
    力する、桁上げ信号演算器をさらに有する請求項7記載
    のプロセッサ。
  11. 【請求項11】上記桁上げ信号累積回路は、レジスタに
    より構成されている請求項10記載のプロセッサ。
  12. 【請求項12】上記演算器は、複数のデータに対する四
    則演算と論理演算を行うための演算器である請求項11
    記載のプロセッサ。
  13. 【請求項13】上記プロセッサは、 複数の桁上げ信号累積回路と、 複数の桁上げ信号累積回路の内、上記演算器から出力さ
    れる桁上げ信号が入力されるべき一つの桁上げ信号累積
    回路を選択する他の選択回路をさらに有する請求項7記
    載のプロセッサ。
  14. 【請求項14】各桁上げ信号累積回路は、カウンタによ
    り構成されている請求項13記載のプロセッサ。
  15. 【請求項15】上記複数の桁上げ信号累積回路の数は、
    上記複数のレジスタの数より少ない請求項13記載のプ
    ロセッサ。
  16. 【請求項16】上記プロセッサは、上記演算器が発生す
    る桁上げ信号と上記桁上げ信号累積回路内の桁上げ信号
    累積データとを演算し、上記桁上げ信号累積回路に出力
    する、桁上げ信号演算器をさらに有する請求項13記載
    のプロセッサ。
  17. 【請求項17】上記桁上げ信号累積回路は、レジスタに
    より構成されている請求項16記載のプロセッサ。
  18. 【請求項18】上記演算器は、複数のデータに対する四
    則演算と論理演算を行うための演算器である請求項17
    記載のプロセッサ。
  19. 【請求項19】上記選択回路は、加算を要求する命令に
    応答して、上記演算器にデータを供給すべき複数のレジ
    スタと、その演算器より供給される加算結果データを格
    納すべき一つのレジスタを選択し、上記他の演算器によ
    る演算を要求する命令に応答して、上記他の演算器にデ
    ータを供給すべき一つのレジスタを選択し、 上記他の選択回路は、上記加算を要求する命令に応答し
    て、上記演算器より供給される桁上げ信号を供給すべき
    一つの桁上げ累積回路を選択し、上記他の演算器による
    演算を要求する命令に応答して、上記他の演算器にデー
    タを供給すべき一つの桁上げ信号累積回路を選択する回
    路を有する請求項13記載のプロセッサ。
  20. 【請求項20】複数(N)個の演算器と、 それぞれそれらの演算器の一つに対応するN個の、互い
    に同一の演算を行う他の演算器と、 それぞれ上記N個の演算器と上記N個の他の演算器に接
    続された複数のレジスタと、 上記N個の演算器の一つと上記N個の他の演算器の一つ
    との組にそれぞれ対応して設けられたN個の桁上げ信号
    累積回路と、 選択回路とを有し、 各レジスタは、それぞれ所定のビット数を有するN個の
    データを保持するためのN個のフィールドを有し、各フ
    ィールドは、上記N個の演算器の一つと上記N個の他の
    演算器の一つと、当該一つの演算器に対応する一つの桁
    上げ信号累積回路とにそれぞれ対応して設けられ、 上記選択回路は、上記複数のレジスタの内の複数のレジ
    スタのそれぞれに保持されたN個のデータを上記N個の
    演算器に並列に供給し、上記N個の演算器から並列に供
    給されるN個の加算結果データを一つのレジスタに並列
    に供給し、一つのレジスタに保持されたN個のデータを
    上記N個の他の演算器に並列に供給し、上記N個の他の
    演算器から供給されるN個の演算結果データを一つのレ
    ジスタに並列の供給するための回路を有し、 各演算器は、上記選択回路により選択された複数のレジ
    スタのそれぞれ内の、その演算器に対応するフィールド
    に保持された、上記所定のビット数の複数のデータに対
    する加算を行うための演算器であり、 各桁上げ信号累積回路は、対応する演算器が桁上げ信号
    を発生する毎にその桁上げ信号が入力され、その演算器
    により発生された桁上げ信号の累積値を表す、複数ビッ
    トからなる桁上げ信号累積データを生成し、 各他の演算器は、当該他の演算器に対応する桁上げ信号
    累積回路により生成された上記桁上げ信号累積データ
    と、そのデータの下位側に付加された、上記複数のレジ
    スタの一つに保持されたN個のデータの内の、当該他の
    演算器に対応するフィールドに保持された一つのデータ
    との組に対して演算を行うための演算器であるプロセッ
    サ。
  21. 【請求項21】各他の演算器は、当該他の演算器に対応
    する桁上げ信号累積回路により生成された上記桁上げ信
    号累積データと、そのデータの下位側に付加された、上
    記複数のレジスタの一つに保持されたN個のデータの内
    の、当該他の演算器に対応するフィールドに保持された
    一つのデータとの組を下位側へシフトし、上記ビット数
    のシフト結果データを出力するためのシフターを有する
    請求項20記載のプロセッサ。
  22. 【請求項22】各桁上げ信号累積回路に保持される上記
    桁上げ信号累積データは、上記所定のビット数より少な
    いビット数を有する請求項20記載のプロセッサ。
  23. 【請求項23】各桁上げ信号累積回路は、カウンタによ
    り構成されている請求項20記載のプロセッサ。
  24. 【請求項24】上記プロセッサは、上記各演算器に対応
    して、その演算器が発生する桁上げ信号と上記各桁上げ
    信号累積回路内の各桁上げ信号累積データとを演算し、
    上記各桁上げ信号累積回路に出力する桁上げ信号演算器
    をさらに有する請求項20記載のプロセッサ。
  25. 【請求項25】上記各桁上げ信号累積回路は、レジスタ
    により構成されている請求項24記載のプロセッサ。
  26. 【請求項26】上記各演算器は、複数のデータに対する
    四則演算と論理演算を行うための演算器である請求項2
    5記載のプロセッサ。
  27. 【請求項27】上記プロセッサは、 上記N個の演算器の一つと上記N個のシフターの一つと
    の組にそれぞれ対応して設けられ、それぞれ複数個の桁
    上げ信号累積回路からなるN群の桁上げ信号累積回路
    と、 各桁上げ信号累積回路群に属するM個の桁上げ信号累積
    回路の内、対応する演算器から出力される桁上げ信号が
    入力されるべき一つの桁上げ信号累積回路を選択し、さ
    らに上記シフターにデータを供給すべき一つの桁上げ信
    号累積回路を選択する他の選択回路をさらに有する請求
    項20記載のプロセッサ。
  28. 【請求項28】各桁上げ信号累積回路は、カウンタによ
    り構成されている請求項27記載のプロセッサ。
  29. 【請求項29】各桁上げ信号累積回路群に属する桁上げ
    信号累積回路の数は、上記複数のレジスタの数より少な
    い請求項27記載のプロセッサ。
  30. 【請求項30】上記プロセッサは、上記各演算器に対応
    して、その演算器が発生する桁上げ信号と上記各桁上げ
    信号累積回路内の各桁上げ信号累積データとを演算し、
    上記各桁上げ信号累積回路に出力する上げ信号演算器を
    さらに有する請求項27記載のプロセッサ。
  31. 【請求項31】上記各桁上げ信号累積回路は、レジスタ
    により構成されている請求項30記載のプロセッサ。
  32. 【請求項32】上記各演算器は、複数のデータに対する
    四則演算と論理演算を行うための演算器である請求項3
    1記載のプロセッサ。
  33. 【請求項33】上記選択回路は、加算を要求する命令に
    応答して、上記N個の演算器にN個のデータをそれぞれ
    供給すべき複数のレジスタと、上記N個の演算器より供
    給されるN個の加算結果データを格納すべき一つのレジ
    スタを選択し、上記他の演算を要求する命令に応答し
    て、上記N個のシフターにN個のデータを供給すべき一
    つのレジスタを選択し、 上記他の選択回路は、上記加算を要求する命令に応答し
    て、上記N個の演算器より供給される桁上げ信号を供給
    すべき、それぞれ異なる桁上げ信号累積回路群に属する
    N個の桁上げ信号累積回路を選択し、上記他の演算を要
    求する命令に応答して、上記N個のシフターにN個のデ
    ータを供給すべき、それぞれ異なる桁上げ信号累積回路
    群に属するN個の桁上げ信号累積回路を選択する請求項
    27記載のプロセッサ。
JP15888798A 1998-06-08 1998-06-08 プロセッサ Expired - Fee Related JP3547316B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15888798A JP3547316B2 (ja) 1998-06-08 1998-06-08 プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15888798A JP3547316B2 (ja) 1998-06-08 1998-06-08 プロセッサ

Publications (2)

Publication Number Publication Date
JPH11353154A true JPH11353154A (ja) 1999-12-24
JP3547316B2 JP3547316B2 (ja) 2004-07-28

Family

ID=15681561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15888798A Expired - Fee Related JP3547316B2 (ja) 1998-06-08 1998-06-08 プロセッサ

Country Status (1)

Country Link
JP (1) JP3547316B2 (ja)

Also Published As

Publication number Publication date
JP3547316B2 (ja) 2004-07-28

Similar Documents

Publication Publication Date Title
US11188330B2 (en) Vector multiply-add instruction
US8074058B2 (en) Providing extended precision in SIMD vector arithmetic operations
JP3790307B2 (ja) データプロセッサ及びデータ処理システム
US5859789A (en) Arithmetic unit
EP0681236A1 (en) Space vector data path
US20030014457A1 (en) Method and apparatus for vector processing
JPH02300983A (ja) 中央処理装置における高速演算処理の方法
JP2001516916A (ja) デジタル信号処理能力を有するデータ処理装置
JP2008071130A (ja) Simd型マイクロプロセッサ
US7013321B2 (en) Methods and apparatus for performing parallel integer multiply accumulate operations
JPH07168697A (ja) 倍精度除算回路および方法
JP2001027945A (ja) Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット
US6560624B1 (en) Method of executing each of division and remainder instructions and data processing device using the method
US5757685A (en) Data processing system capable of processing long word data
US5958000A (en) Two-bit booth multiplier with reduced data path width
US20020065860A1 (en) Data processing apparatus and method for saturating data values
JPH0850578A (ja) 算術論理演算装置及び制御方法
JP3479385B2 (ja) 情報処理装置
US5546551A (en) Method and circuitry for saving and restoring status information in a pipelined computer
CN111814093A (zh) 一种乘累加指令的处理方法和处理装置
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
EP1936492A1 (en) SIMD processor with reduction unit
JP3547316B2 (ja) プロセッサ
JP3332606B2 (ja) マイクロプロセッサ
WO2008077803A1 (en) Simd processor with reduction unit

Legal Events

Date Code Title Description
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: 20040406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040413

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120423

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees