JP2000047998A - Simd方式の演算器及び演算処理装置 - Google Patents

Simd方式の演算器及び演算処理装置

Info

Publication number
JP2000047998A
JP2000047998A JP10217027A JP21702798A JP2000047998A JP 2000047998 A JP2000047998 A JP 2000047998A JP 10217027 A JP10217027 A JP 10217027A JP 21702798 A JP21702798 A JP 21702798A JP 2000047998 A JP2000047998 A JP 2000047998A
Authority
JP
Japan
Prior art keywords
flag
data
unit
stored
arithmetic unit
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
JP10217027A
Other languages
English (en)
Other versions
JP3652518B2 (ja
Inventor
Sugitaka Otegi
杉高 樗木
Kazuhiko Hara
和彦 原
Shinichi Yamaura
慎一 山浦
Yukio Kadowaki
幸男 門脇
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP21702798A priority Critical patent/JP3652518B2/ja
Publication of JP2000047998A publication Critical patent/JP2000047998A/ja
Application granted granted Critical
Publication of JP3652518B2 publication Critical patent/JP3652518B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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

Abstract

(57)【要約】 【課題】 SIMD方式の演算器において、演算単位ご
とに異なる処理を行う。また、回路規模の有効利用を目
指す。 【解決手段】 SIMD型演算器において、各演算単位
の演算結果に対応するフラグを出力する。そのフラグ
を、演算対象データとする、条件分岐処理の判断条
件とする、後続の演算の制御条件とすることにより、
演算単位ごとに異なる処理を行う。また、上記フラグの
論理和フラグ論理積フラグを求め、条件分岐処理等の後
続処理にて利用する。ブロードキャスト方式の導入によ
り、処理命令の簡素化、処理速度の向上を目指す。さら
に、入出力手段を分割して用いて、それぞれにデータを
格納し演算に繋げる、あるいは演算後それぞれにデータ
を格納することにより、回路規模の有効利用が実現でき
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、SIMD(Sin
gle Instruction Multiple
Data)方式を用いた演算器及びこの演算器を備えた
演算処理装置(以下、CPUという。)に関する。
【0002】
【従来の技術】CPUにおいて複数のデータを並列処理
する方式としてSIMD方式がある。SIMD方式で
は、CPU中の演算器において、1つの演算命令によっ
て複数の演算が並列に制御される。また、命令供給装置
や命令制御装置の共有化や、処理実行時間短縮が図れる
という利点がある。
【0003】
【発明が解決しようとする課題】他方、SIMD方式の
演算器においては、演算単位により、演算対象データは
異なるが、それら複数の演算の処理機能は同じである。
つまり演算単位ごとに異なる処理をすることができな
い。例えば、あるデータ群に対してあるデータと比較演
算した結果から判断して、一致した演算のデータだけ
“0”に置き換えるといったことが、困難である。
【0004】また、SIMD方式では、処理に際して、
1演算単位に1演算器を割り当て全体で演算器を複数用
いることが多いが、このことが、演算データのサイズに
よっては不合理に大きな回路規模を必要とすることがあ
る。例えば、16ビットデータの演算が多く、まれに6
4ビットデータの演算処理が必要になるような場合で
も、CPUにおいては最大データ幅の演算器を最大並列
数まで備えておかねばならず、回路規模、装置規模が有
効に使われないことがある。
【0005】本発明は、演算単位の演算結果に対応する
条件フラグによって後続の処理を選択的に実行するSI
MD方式の演算器及び演算処理装置を提供することを目
的とする。
【0006】本発明はまた、演算データ単位に後続の処
理を選択的に実行するSIMD方式の演算器及び演算処
理装置において、ビット長の短いデータを多く並列演算
処理するとしても、最大データ幅を扱える演算器をデー
タの最大並列処理数まで必ずしも設けることなく、有効
に利用できる回路規模を持つことを可能とすることを別
の目的とする。
【0007】
【課題を解決するための手段】本発明の第一の形態は、
2つの入力手段と1つの出力手段をもつSIMD型演算
器であって、そこでは第1の入力手段及び第2の入力手
段はいずれも所定のビット長の長さであり、かつ格納す
るデータのビット長に応じて個数及びビット長が変化す
るデータ格納部を有し、出力手段は一方の入力手段にお
ける上記データ格納部の個数以上の個数まで長さ1ビッ
トであるフラグ格納部を有する。このSIMD型演算器
では、第1の入力手段の各データ格納部に格納されるデ
ータとこれに対応する第2の入力手段の各データ格納部
に格納されるデータとを用いて同時に各データの組に共
通の演算を行うのであるが、本発明のSIMD型演算器
では、2つの入力手段間で対応する各データ格納部に格
納される2つのデータを用いてそれぞれ演算しその演算
結果に対応する条件フラグを出力手段の対応するフラグ
格納部に格納する。
【0008】上記第一の形態の演算器において、第2の
入力手段が少なくとも第1の入力手段のデータ格納部の
ビット長以上の長さであり、かつ第1の入力手段のデー
タ格納部と長さが等しい1個のデータ格納部を有し、第
1の入力手段の各データ格納部に格納されるデータと第
2の入力手段の1個のデータ格納部に格納されるデータ
とを用いて同時に各データの組に共通の演算を行うもの
であってもよい。
【0009】上記第一の形態の演算器の出力手段上に
て、すべての条件フラグの論理和を求めて条件論理和フ
ラグとし、そのフラグを出力手段上の対応するフラグ格
納部に格納することもできる。同様に、すべての条件フ
ラグの論理積を求めて条件論理積フラグとし、そのフラ
グを出力手段上の対応するフラグ格納部に格納すること
もできる。
【0010】本発明の第二の形態は、2つの入力手段と
1つの出力手段をもつSIMD型演算器であって、そこ
では、第1の入力手段は上記第一の形態の演算器の場合
のそれと同じ構成であり、第2の入力手段では上記第一
の形態の演算器での出力手段を用いる。よって、第1の
入力手段の各データ格納部に格納されるデータとこれに
対応する第2の入力手段の各フラグ格納部に格納される
条件フラグとを用いて同時に各データと条件フラグの組
に共通の演算を行い、その演算結果を出力手段に格納す
る。
【0011】本発明の第三の形態は、少なくとも1つの
入力手段と、1つの出力手段をもつSIMD型演算器で
あって、そこでは、入力手段及び出力手段は所定のビッ
ト長の長さであり、かつ格納するデータのビット長に応
じて個数及びビット長が変化するデータ格納部を有す
る。このSIMD型演算器は、入力手段の各データ格納
部に格納されるデータを用いて同時に各データに共通の
演算を行った結果得られたデータを対応する出力手段の
データ格納部に格納するのであるが、本発明のSIMD
型演算器では、上記第一の形態の演算器で出力される条
件フラグ群を格納する出力手段の各フラグ格納部が当該
第三の形態の入力手段上の各データ格納部に対応してお
り、入力手段の各データ格納部に格納されるデータが演
算される際に、当該データ格納部に対応する各フラグ格
納部に格納される条件フラグの内容によりデータ毎に演
算に条件が与えられる。
【0012】本発明の第四の形態は、上記第一の形態の
演算器、第二の形態の演算器、第三の形態の演算器を備
えたCPUである。
【0013】本発明の第五の形態は、上記第一の形態の
演算器にて生成された複数の上記条件フラグを分岐処理
の判断条件とする条件分岐処理機能を備えたCPUであ
る。
【0014】本発明の第六の形態は、上記第一の形態の
演算器の出力手段上で最上位(あるいは最下位)に位置
する“1”(あるいは“0”)を格納したフラグ格納部
の位置を数値化する機能を備えたCPUである。
【0015】本発明の第七の形態は、上記第一の形態の
演算器にて出力手段上に格納される条件論理和フラグを
分岐処理の判断条件とする条件分岐処理機能を備えたC
PUである。同様に、条件論理積フラグを分岐処理の判
断条件とする条件分岐処理機能を備えることもできる。
【0016】
【発明の実施の形態】以下、添付図面を参照して本発明
の実施の形態を説明する。本発明の第1の実施の形態の
SIMD型演算器(以下、演算器という。)を図1に示
す。演算器1は、第1の入力レジスタ2と、第2の入力
レジスタ4と、演算部6と、出力レジスタ8を有する。
2つの入力レジスタ2、4のビット長は64ビットであ
る。
【0017】図1の演算器1では、第1と第2の入力レ
ジスタ2、4はいずれも8ビットのビット長を有する8
個のデータ格納部R10〜R17、R20〜R27で構
成されており、各データ格納部に所定の演算データA0
〜A7、B0〜B7が格納できるようにしてある。出力
レジスタ8は、1ビットのビット長を有する10個のフ
ラグ格納部F0〜F9を有し、各フラグ格納部にそれぞ
れ所定のフラグ(T0〜T7、TP、TA)が格納でき
るようにしてある。
【0018】この演算器1では、第1の入力レジスタ2
の各データ格納部R10〜R17に格納された入力デー
タA0〜A7と第2の入力レジスタ4の各データ格納部
R20〜R27に格納された入力データB0〜B7とを
それぞれ用いて演算部6において同時に各データの組に
共通の演算が行われ、その演算結果に対応したフラグT
0〜T7(0又は1)が出力レジスタ8のフラグ格納部
F0〜F7に格納される。出力レジスタ8のフラグ格納
部F8には、フラグ格納部F0〜F7に格納されている
出力フラグT0〜T7の論理和演算の結果に対応したフ
ラグTP(0又は1)が格納される。他方、出力レジス
タのデータ格納部F9には、フラグ格納部F0〜F7に
格納されている出力フラグT0〜T7の論理積演算の結
果に対応したフラグTA(0又は1)が格納される。
【0019】出力レジスタ8のフラグ格納部F0〜F7
に格納されるフラグT0〜T7について具体的に説明す
る。例えば、演算部6で2つの入力データA0、B0を
加算する場合、これらのデータを加算して得られた結果
が8ビットを超えると(すなわち、桁上がりを生じる
と)、対応する出力フラグ格納部F0にフラグ1を格納
する。逆に、加算結果が8ビット以下の場合(即ち、桁
上がりを生じない場合)、対応する出力データ格納部F
0にフラグ0を格納する。
【0020】図2は図1に示す演算器の変形例を示す。
第1と第2の入力レジスタ12、14はいずれも16ビ
ットのビット長を有する4個のデータ格納部R10〜R
13、R20〜R23で構成されており、各データ格納
部に所定の演算データA0〜A3、B0〜B3が格納で
きるようにしてある。出力レジスタ18は、1ビットの
ビット長を有する6個のフラグ格納部F0〜F5を有
し、各フラグ格納部にそれぞれ所定のフラグ(T0〜T
3、TP、TA)が格納できるようにしてある。ここ
で、出力レジスタ18のフラグ格納部F0〜F3に格納
されるフラグT0〜T3は、上記図1の実施の形態の演
算器1のフラグT0〜T7と同様に求められ格納され
る。出力レジスタ18のフラグ格納部F4にはフラグT
Pが格納されるが、上記図1の実施の形態と概略同様
で、フラグ格納部F0〜F3に格納されている出力フラ
グT0〜T3の論理和演算の結果に対応したものであ
る。同様に、出力レジスタ18のフラグ格納部F5には
フラグTAが格納され、フラグ格納部F0〜F3に格納
されている出力フラグT0〜T3の論理積演算の結果に
対応する。
【0021】図3も図1に示す演算器の変形例を示す。
第1と第2の入力レジスタ22、24はいずれも32ビ
ットのビット長を有する2個のデータ格納部R10〜R
11、R20〜R21で構成されており、各データ格納
部に所定の演算データA0〜A1、B0〜B1が格納で
きるようにしてある。出力レジスタ28は、1ビットの
ビット長を有する4個のフラグ格納部F0〜F3を有
し、各フラグ格納部にそれぞれ所定のフラグ(T0〜T
1、TP、TA)が格納できるようにしてある。ここ
で、出力レジスタ28のフラグ格納部F0〜F1に格納
されるフラグT0〜T1は、上記図1の実施の形態の演
算器1のフラグT0〜T7と同様に求められ格納され
る。出力レジスタ28のフラグ格納部F2にはフラグT
Pが格納されるが、上記図1の実施の形態と概略同様
で、フラグ格納部F0〜F1に格納されている出力フラ
グT0〜T1の論理和演算の結果に対応したものであ
る。同様に、出力レジスタ28のフラグ格納部F3には
フラグTAが格納され、フラグ格納部F0〜F1に格納
されている出力フラグT0〜T1の論理積演算の結果に
対応する。
【0022】図4もまた、図1に示す演算器の変形例を
示す。第1と第2の入力レジスタ32、34はいずれも
64ビットのビット長を有する1個のデータ格納部R1
0、R20で構成されており、各データ格納部に所定の
演算データA0、B0が格納できるようにしてある。出
力レジスタ38は、1ビットのビット長を有する1個の
フラグ格納部F0を有し、そのフラグ格納部には所定の
フラグT0が格納できるようにしてある。ここで、出力
レジスタ38のフラグ格納部F0に格納されるフラグT
0は、上記図1の実施の形態の演算器1のフラグT0〜
T7と同様に求められ格納される。
【0023】これらの演算器によって上記のようにして
出力された演算結果に対応するフラグ(以下、条件フラ
グという。)を用いると、後続処理において演算単位ご
とに異なる処理を行うことができる。また、当該条件フ
ラグによる条件分岐処理が可能になる。
【0024】また、これらの演算器によって上記のよう
にして出力された条件フラグの論理和演算の結果に対応
したフラグ(以下条件論理和フラグという。)TPを用
いると、当該条件論理和フラグによる条件分岐処理が可
能になる。同様に、条件フラグの論理積演算の結果に対
応したフラグ(以下条件論理積フラグという。)TAを
用いると、当該条件論理積フラグによる条件分岐処理が
可能になる。
【0025】図1の形態では、64ビットのビット長を
有する入力レジスタを備えた演算器を1個だけ用意し、
その1個の演算器の内部で8つの演算を並列的に行うこ
とができるので、同一ビット長の入力レジスタを有する
演算器を8個も用意する必要がない。その結果、小さい
回路規模を実現できる。図1の形態のみならず、図2及
び図3においても同様である。
【0026】図1、図2、図3及び図4では、演算の結
果に対応するフラグとして、桁上がりを示すキャリーの
場合を示したが、この他に、演算結果があふれた場合に
対応するオーバーフローフラグ、演算結果が‘0’のと
きに対応するゼロフラグ、演算結果が負のときに対応す
るネガティブフラグ等でもよい。
【0027】本発明の第2の実施の形態の演算器を図5
に示す。演算器40は、第1の入力レジスタ42と、第
2の入力レジスタ44と、演算部46と、出力レジスタ
48とを有するが、ここで、第2の入力レジスタ44は
上記第1の実施の形態での演算器1における出力レジス
タ(以下、フラグレジスタという。)8であり、フラグ
レジスタ8に格納される条件フラグT0〜T7を入力デ
ータ、つまり演算対象データとする。第1の入力レジス
タ42、出力レジスタ48のビット長は64ビットであ
る。
【0028】図5の演算器40では、第1の入力レジス
タ42は、8ビットのビット長を有する8個のデータ格
納部R10〜R17で構成されており、各データ格納部
に所定の演算データA0〜A7が格納できるようにして
ある。第2の入力レジスタ44、即ちフラグレジスタ8
は、1ビットのビット長を有する少なくとも8個のフラ
グ格納部F0〜F7で構成されており、各フラグ格納部
に上記第1の形態での演算器1における出力データたる
条件フラグT0〜T7を格納している。出力レジスタ4
8は、8ビットのビット長を有する8個のデータ格納部
R30〜R37で構成されており、各データ格納部に所
定の演算結果データZ0〜Z7が格納できるようにして
ある。
【0029】この演算器40では、第1の入力レジスタ
42の各データ格納部R10〜R17に格納された入力
データA0〜A7と第2の入力レジスタ44(即ちフラ
グレジスタ8)の各フラグ格納部F0〜F7に格納され
た条件フラグT0〜T7とをそれぞれ用いて演算部46
において同時に各データと条件フラグの組に共通の演算
が行われ、その演算結果Z0〜Z7が出力レジスタ48
のデータ格納部R30〜R37に格納される。例えば、
演算部46で2つの入力データA0、T0を加算する場
合、これらのデータを加算して得られた結果Z0が出力
データ格納部R30に格納される。
【0030】図6は図5に示す演算器の変形例を示す。
第1の入力レジスタ52は、16ビットのビット長を有
する4個のデータ格納部R10〜R13で構成されてお
り、各データ格納部に所定の演算データA0〜A3が格
納できるようにしてある。第2の入力レジスタ54、即
ちフラグレジスタ18は、1ビットのビット長を有する
少なくとも4個のフラグ格納部F0〜F3で構成されて
おり、各フラグ格納部に上記第1の形態での演算器10
における出力データたる条件フラグT0〜T3を格納し
ている。出力レジスタ58は、16ビットのビット長を
有する4個のデータ格納部R30〜R33で構成されて
おり、各データ格納部に所定の演算結果データZ0〜Z
3が格納できるようにしてある。
【0031】この演算器50では、第1の入力レジスタ
52の各データ格納部R10〜R13に格納された入力
データA0〜A3と第2の入力レジスタ54(即ちフラ
グレジスタ18)の各フラグ格納部F0〜F3に格納さ
れた条件フラグT0〜T3とをそれぞれ用いて演算部5
6において同時に各データと条件フラグの組に共通の演
算が行われ、その演算結果Z0〜Z3が出力レジスタ5
8のデータ格納部R30〜R33に格納される。例え
ば、演算部56で2つの入力データA0、T0を加算す
る場合、これらのデータを加算して得られた結果Z0が
出力データ格納部R30に格納される。
【0032】図7も図5に示す演算器の変形例を示す。
第1の入力レジスタ62は、32ビットのビット長を有
する2個のデータ格納部R10〜R11で構成されてお
り、各データ格納部に所定の演算データA0〜A1が格
納できるようにしてある。第2の入力レジスタ64、即
ちフラグレジスタ28は、1ビットのビット長を有する
少なくとも2個のフラグ格納部F0〜F1で構成されて
おり、各フラグ格納部に上記第1の形態での演算器20
における出力データたる条件フラグT0〜T1を格納し
ている。出力レジスタ68は、32ビットのビット長を
有する2個のデータ格納部R30〜R31で構成されて
おり、各データ格納部に所定の演算結果データZ0〜Z
1が格納できるようにしてある。
【0033】この演算器60では、第1の入力レジスタ
62の各データ格納部R10〜R11に格納された入力
データA0〜A1と第2の入力レジスタ64(即ちフラ
グレジスタ28)の各フラグ格納部F0〜F1に格納さ
れた条件フラグT0〜T1とをそれぞれ用いて演算部6
6において同時に各データと条件フラグの組に共通の演
算が行われ、その演算結果Z0〜Z1が出力レジスタ6
8のデータ格納部R30〜R31に格納される。例え
ば、演算部66で2つの入力データA0、T0を加算す
る場合、これらのデータを加算して得られた結果Z0が
出力データ格納部R30に格納される。
【0034】図8もまた図5に示す演算器の変形例を示
す。第1の入力レジスタ72は、64ビットのビット長
を有する1個のデータ格納部R10で構成されており、
所定の演算データA0が格納できるようにしてある。第
2の入力レジスタ74、即ちフラグレジスタ38は、1
ビットのビット長を有する少なくとも1個のフラグ格納
部F0で構成されており、上記第1の形態での演算器3
0における出力データたる条件フラグT0を格納してい
る。出力レジスタ78は、64ビットのビット長を有す
る1個のデータ格納部R30で構成されており、所定の
演算結果データZ0が格納できるようにしてある。
【0035】この演算器70では、第1の入力レジスタ
72のデータ格納部R10に格納された入力データA0
と第2の入力レジスタ74(即ちフラグレジスタ)のフ
ラグ格納部F0に格納された条件フラグT0とを用いて
演算部76において演算が行われ、その演算結果Z0が
出力レジスタ78のデータ格納部R30に格納される。
【0036】このように構成された演算器によれば、先
行して実行したSIMD型演算の結果を後続するSIM
D型演算に演算単位で反映させるのが容易になる。
【0037】図5の形態では、64ビットのビット長を
有する入力レジスタを備えた演算器を1個だけ用意し、
その1個の演算器の内部で8つの演算を並列的に行うこ
とができるので、同一ビット長の入力レジスタを有する
演算器を8個も用意する必要がない。その結果、小さい
回路規模を実現できる。図5の形態のみならず、図6及
び図7においても同様である。
【0038】本発明の第3の実施の形態の演算器を図9
に示す。演算器80は、第1の入力レジスタ82と、第
2の入力レジスタ84と、演算部86と、出力レジスタ
88とを有する。本構成は、本発明の第2の実施の形態
に、第1の実施の形態を組み合わせたものとなってい
る。つまり、第2の入力レジスタ84は、第2の実施の
形態と同一で、上記第1の実施の形態での演算器1にお
けるフラグレジスタ8であるが、出力レジスタ88は、
第1の実施の形態同様、演算結果に対応する条件フラグ
と、条件フラグの内容により決定される条件論理和フラ
グ及び条件論理積フラグとを格納する。
【0039】図9の演算器80では、第1の入力レジス
タ82は、8ビットのビット長を有する8個のデータ格
納部R11〜R17で構成されており、各データ格納部
に所定の演算データA0〜A7が格納できるようにして
ある。第2の入力レジスタ84、即ちフラグレジスタ8
は、1ビットのビット長を有する少なくとも8個のフラ
グ格納部F0〜F7で構成されており、各フラグ格納部
に上記第1の形態での演算器1における出力データたる
条件フラグT0〜T7を格納している。出力レジスタ8
8は、1ビットのビット長を有する10個のフラグ格納
部G0〜G9を有し、各フラグ格納部にそれぞれ所定の
フラグ(U0〜U7、UP、UA)が格納できるように
してある。
【0040】この演算器80では、第1の入力レジスタ
82の各データ格納部R10〜R17に格納された入力
データA0〜A7と第2の入力レジスタ84(即ちフラ
グレジスタ8)の各フラグ格納部R20〜R27に格納
された条件フラグT0〜T7とをそれぞれ用いて演算部
86において同時に各データと条件フラグの組に共通の
演算が行われ、その演算結果に対応したフラグU0〜U
7(0又は1)が出力レジスタ88のフラグ格納部G0
〜G7に格納される。出力レジスタ88のフラグ格納部
G8には、フラグ格納部G0〜G7に格納されている出
力フラグU0〜U7の論理和演算の結果に対応したフラ
グUP(0又は1)が格納される。他方、出力レジスタ
のデータ格納部G9には、フラグ格納部G0〜G7に格
納されている出力フラグU0〜U7の論理積演算の結果
に対応したフラグUA(0又は1)が格納される。
【0041】図9において、出力レジスタ88のフラグ
格納部G0〜G7に格納されるフラグU0〜U7は、上
記第1の実施の形態の演算器1の出力フラグと同様に、
桁上がりを示すキャリーフラグである。
【0042】図10は図9に示す演算器の変形例を示
す。第1の入力レジスタ92は、16ビットのビット長
を有する4個のデータ格納部R10〜R13で構成され
ており、各データ格納部に所定の演算データA0〜A3
が格納できるようにしてある。第2の入力レジスタ9
4、即ちフラグレジスタ18は、1ビットのビット長を
有する少なくとも4個のフラグ格納部F0〜F3で構成
されており、各フラグ格納部に上記第1の形態での演算
器10における出力データたる条件フラグT0〜T3を
格納している。出力レジスタ98は1ビットのビット長
を有する6個のフラグ格納部G0〜G5を有し、各フラ
グ格納部にそれぞれ所定のフラグ(U0〜U3、UP、
UA)が格納できるようにしてある。ここで、出力レジ
スタ98のフラグ格納部G0〜G3に格納されるフラグ
U0〜U3は、上記図9の実施の形態の演算器80のフ
ラグU0〜U7と同様に求められ格納される。出力レジ
スタ98のフラグ格納部G4にはフラグUPが格納され
るが、上記図9の実施の形態と概略同様で、フラグ格納
部G0〜G3に格納されている出力フラグU0〜U3の
論理和演算の結果に対応したものである。同様に、出力
レジスタ98のフラグ格納部G5にはフラグUAが格納
され、フラグ格納部G0〜G3に格納されている出力フ
ラグU0〜U3の論理積演算の結果に対応する。
【0043】図11も図9に示す演算器の変形例を示
す。第1の入力レジスタ102は、32ビットのビット
長を有する2個のデータ格納部R10〜R11で構成さ
れており、各データ格納部に所定の演算データA0〜A
1が格納できるようにしてある。第2の入力レジスタ1
04、即ちフラグレジスタ28は、1ビットのビット長
を有する少なくとも2個のフラグ格納部F0〜F1で構
成されており、各フラグ格納部に上記第1の形態での演
算器20における出力データたる条件フラグT0〜T1
を格納している。出力レジスタ108は1ビットのビッ
ト長を有する4個のフラグ格納部G0〜G3を有し、各
フラグ格納部にそれぞれ所定のフラグ(U0〜U1、U
P、UA)が格納できるようにしてある。ここで、出力
レジスタ108のフラグ格納部G0〜G1に格納される
フラグU0〜U1は、上記図9の実施の形態の演算器8
0のフラグU0〜U7と同様に求められ格納される。出
力レジスタ108のフラグ格納部G2にはフラグUPが
格納されるが、上記図9の実施の形態と概略同様で、フ
ラグ格納部G0〜G1に格納されている出力フラグU0
〜U1の論理和演算の結果に対応したものである。同様
に、出力レジスタ108のフラグ格納部G3にはフラグ
UAが格納され、フラグ格納部G0〜G1に格納されて
いる出力フラグU0〜U1の論理積演算の結果に対応す
る。
【0044】図12もまた、図9に示す演算器の変形例
を示す。第1の入力レジスタ112は、64ビットのビ
ット長を有する1個のデータ格納部R10で構成されて
おり、所定の演算データA0が格納できるようにしてあ
る。第2の入力レジスタ114、即ちフラグレジスタ3
8は、1ビットのビット長を有する少なくとも1個のフ
ラグ格納部F0で構成されており、上記第1の形態での
演算器30における出力データたる条件フラグT0を格
納している。出力レジスタ118は、1ビットのビット
長を有する1個のフラグ格納部G0を有し、そのフラグ
格納部には所定のフラグU0が格納できるようにしてあ
る。ここで、出力レジスタ118のフラグ格納部G0に
格納されるフラグU0は、上記図9の実施の形態の演算
器80のフラグU0〜U7と同様に求められ格納され
る。
【0045】このように構成された演算器によれば、先
行して実行したSIMD型演算の結果を後続するSIM
D型演算に演算単位で反映させるのが容易になる。
【0046】図9の形態では、64ビットのビット長の
入力レジスタを備えた演算器を1個だけ用意し、その1
個の演算器の内部で8つの演算を並列的に行うことがで
きるので、同一ビット長の入力レジスタを有する演算器
を8個も用意する必要がない。その結果、小さい回路規
模を実現できる。図9の形態のみならず、図10及び図
11においても同様である。
【0047】本発明の第4の実施の形態の演算器を図1
3に示す。演算器120は、入力レジスタ122と、演
算部126と、出力レジスタ128とを有する。入力レ
ジスタ122と、出力レジスタ128のビット長は64
ビットである。
【0048】図13の演算器120では、入力レジスタ
122は、16ビットのビット長を有する4個のデータ
格納部R10〜R13で構成されており、各データ格納
部に所定の演算データA0〜A3が格納できるようにし
てある。出力レジスタ128は、16ビットのビット長
を有する4個のデータ格納部R30〜R33で構成され
ており、各データ格納部に所定の演算結果データZ0〜
Z3が格納できるようにしてある。
【0049】この演算器120においては、入力レジス
タ122の各データ格納部R10〜R13に格納された
入力データA0〜A3をそれぞれ用いて演算部126の
において同時に各データに共通の演算が行われるが、そ
の際、上記第1の実施の形態での演算器10におけるフ
ラグレジスタ18に格納される条件フラグT0〜T3の
おのおのが、演算部126での各演算に条件を与える。
その演算結果Z0〜Z3が出力レジスタ128のデータ
格納部R30〜R33に格納される。
【0050】上記図13の実施の形態の演算器について
具体例を図14に示す。図14においては、入力レジス
タ132に格納されているA0〜A3の4つのデータを
条件フラグT0〜T3の値により、符号変換する様子を
示す。A0は‘12’であり、対応する条件フラグT0
が‘1’であるため符号変換を行い、演算結果データZ
0は‘−12’となる。A1は‘−56’であり、対応
する条件フラグT1が‘0’であるため符号変換を行わ
ず、演算結果データZ1はそのまま‘−56’となる。
A2及びA3についても同様の変換を行う。
【0051】このように構成された演算器によれば、先
行して実行したSIMD型演算の結果によって、条件を
満足(あるいは不満足)している演算データに対する処
理を選択的に実行できる。
【0052】図13、図14の形態では、64ビットの
ビット長を有する入力レジスタを備えた演算器を1個だ
け用意し、その1個の演算器の内部で4つの演算を並列
的に行うことができるので、同一ビット長の入力レジス
タを有する演算器を4個も用意する必要がない。その結
果、小さい回路規模を実現できる。
【0053】本発明の第5の実施の形態の演算器を図1
5に示す。演算器140は、第1の入力レジスタ142
と、第2の入力レジスタ144と、演算部146と、出
力レジスタ148とを有する。本構成は、上記の第1の
実施の形態の演算器10と概略同様の構成である。但
し、第2の入力レジスタ144がただ1個だけのデータ
格納部B0を有することが、異なる点である。
【0054】第1の入力レジスタ142は、8ビットの
ビット長を有する8個のデータ格納部R10〜R17で
構成されており、各データ格納部に所定の演算データA
0〜A7を格納できるようにしてある。第2の入力レジ
スタ144は、8ビットのビット長を有する1個のデー
タ格納部R20で構成されており、そこに所定の演算デ
ータB0を格納できるようにしてある。出力レジスタ1
48は、1ビットのビット長を有する10個のフラグ格
納部F0〜F9を有し、各フラグ格納部にそれぞれ所定
のフラグ(T0〜T7、TP、TA)が格納できるよう
にしてある。
【0055】この演算器140では、第1の入力レジス
タ142の各データ格納部R10〜R17に格納された
入力データA0〜A7と第2の入力レジスタ144の1
個のデータ格納部R20に格納された入力データB0と
をそれぞれ用いて演算部146において同時に各データ
の組に共通の演算が行われ、その演算結果に対応したフ
ラグT0〜T7(0又は1)が出力レジスタ148のフ
ラグ格納部F0〜F7に格納される。出力レジスタ14
8のフラグ格納部F8には、フラグ格納部F0〜F7に
格納されている出力フラグT0〜T7の論理和演算の結
果に対応したフラグTP(0又は1)が格納される。他
方、出力レジスタ148のデータ格納部F9には、フラ
グ格納部F0〜F7に格納されている出力フラグT0〜
T7の論理積演算の結果に対応したフラグTA(0又は
1)が格納される。
【0056】図15において、出力レジスタ148のフ
ラグ格納部F0〜F7に格納されるフラグT0〜T7
は、上記第1の実施の形態の演算器1の出力フラグと同
様に、桁上がりを示すキャリーフラグである。
【0057】このように構成された演算器によれば、上
記第1の実施の形態の演算器10の場合で得られる効果
のみならず、例えば同じデータを複数のデータに対して
加算したい場合、予め同じデータB0をB1〜B7に並
列に並べる手間が省け、高速化に寄与するという、固有
の利点がある。
【0058】第3の実施の形態の演算器に関する上記説
明においては、第1の実施の形態の演算器により予め出
力されている出力レジスタを、第2の入力レジスタとし
て用いるとしているが、この第2の入力レジスタとして
用いる手段は、第3の実施の形態の演算器により予め出
力されている出力レジスタであってもよい。同様に、第
2の実施の形態の演算器での第2の入力レジスタや、第
4の実施の形態の演算器での演算に条件を与えるレジス
タとして用いる手段も、第3の実施の形態の演算器によ
り予め出力されている出力レジスタであってもよい。
【0059】次に本発明の演算器で得られる結果を応用
した処理のプログラム例を示す。ここで示す例は、コー
ドのパターンマッチングを行うものである。表1に示す
ようなテーブルに基づいて多量のデータをコード変換に
より圧縮し、この圧縮データを蓄積あるいは通信する場
合に利用される。あるデータを圧縮する場合、そのデー
タよりも符号量の小さいコードへの変換が行われる。逆
に、圧縮されたデータは、圧縮されたコードから復号値
を得て、即ち伸張をして利用することになる。
【0060】
【表1】
【0061】表1の符号化/複合化テーブルによる圧縮
/伸張の手順を例示する。圧縮したいデータが‘V5’
であれば、これをもとに表1から圧縮された符号C5を
得る。逆に伸張する場合は、圧縮され、かつ復号値が未
知のコードを表1のC0、C1、C2、・・・・と比較
していき、一致したときの復号値をテーブルから得る。
本例の場合、コードが‘C5’に一致したとき、そのと
きの復号値V5を得る。このような圧縮/伸張方法の代
表的なものの一つとして、当業者には周知の手段である
可変長(ハフマン)符号化/復号化があり、これらはM
PEGの画像圧縮/伸張等に広く利用されている。以下
に、表1の符号化/復号化テーブルを用い、圧縮データ
から復号値を得る伸張処理の例を示す。
【0062】図16は、当該伸張処理で使用するレジス
タ群の構成を示す。レジスタR0に格納されているxが
圧縮コードであり、レジスタR1に格納するyが求める
復号値である。レジスタR2は、符号値テーブルが格納
されているメモリ上の先頭(ベース)アドレスであり、
レジスタR3は復号値テーブルが格納されているメモリ
上の先頭(ベース)アドレスである。レジスタR4とレ
ジスタR5はいずれもワーキングレジスタである。符号
値テーブルと復号値テーブルのメモリ上の格納の様子を
図17に示す。当該伸張処理例では符号値及び復号値共
に16ビット(2バイト)データである。以上のような
条件をもとに、復号値が未知である符号コードxの復号
値を得るためのフローチャートを図18に示す。
【0063】図18のフローチャートに沿って復号値を
得るためにアセンブリ言語で組まれたプログラムの例を
図19に示し、またその詳細な処理内容も図中に示す。
【0064】図19において、第2行から第5行が表1
の符号化/復号化テーブル上の最初のコードC0と符号
コードxとの比較を示す。第2行にてレジスタR4にメ
モリ上の符号値テーブルの最初の符号値C0を格納す
る。第3行にてこのコードを格納するレジスタR4と、
復号値が未知である符号コードxを格納するレジスタR
0との、比較演算を行い、その結果、一致すれば一致し
たことを示すフラグT0(条件フラグ)をT0=‘1’
として1ビット出力する。この比較の演算は、加算の例
を示した演算器の第1の実施の形態で、特に図4におい
て、加算演算と比較演算とを置き換えたものである。上
記第3行にて符号が一致し、ビットT0に‘1’が格納
された場合には、第4行にてT0の内容に従い分岐処理
を行う。分岐先は第30行からの復号値ロードシーケン
スである。符合が一致せずT0に‘0’が格納された場
合、第4行で分岐せず、以下第5行へと進む。
【0065】第5行では、上記比較演算にて一致しなか
ったことをうけて復号値テーブルアドレスR3をインク
リメントする。以後、概略、上記第2行から第5行のよ
うな比較演算のシーケンスを、比較対象コードを順に変
えつつ繰り返すことになる。ここで、復号値が未知であ
る符号コードxがC5である場合、図19の第29行で
符号C5との一致を検出し、第30行の復号値ロードシ
ーケンスに分岐する。以上の実施例では符号がC5のと
き、復号処理を終了するのに24命令を実行する必要が
あることがわかる。
【0066】上記の例においては、レジスタR0とレジ
スタR4に1個ずつコードを格納して比較演算処理を行
い、結果に対応するフラグT0を1ビット出力し、その
フラグを判断条件として分岐処理を行うが、2つの入力
レジスタにそれぞれ複数のコードを格納し、SIMD方
式で演算処理を行いフラグを複数(T0、T1、・・・
Tn)ビット出力し、それぞれのフラグを判断条件とし
て分岐処理を行うことも可能である。
【0067】図20ではさらに条件論理和フラグを利用
した復号処理のプログラム例を示す。第2行から第5行
が4つの符号コード(符号C0、C1、C2、C3)
と、復号値が未知である符号コードxとの、SIMD方
式による比較演算部分である。第2行でこれら4つの符
号コード(計64ビット)をメモリからレジスタR4に
格納し、第3行で復号値が未知である符号コードxとの
比較を行っている。この比較演算処理の演算器の様子を
図21に示す。
【0068】図21において、レジスタRs1のデータ
格納部A0〜A3に符号コードC0〜C3が格納され、
レジスタRs2のデータ格納部B0に復号値が未知であ
る符号コードxが格納される。ここでは、第5の実施の
形態の演算器140が応用されている。各比較演算の結
果が条件フラグT0〜T3に設定され、T0〜T3を元
に条件論理和フラグTPと条件論理積フラグTAの内容
が設定され、これらフラグはフラグレジスタの対応する
フラグ格納部に格納される。
【0069】図20の第4行にて、4つの比較演算のう
ちで一致が発生したかどうかを条件論理和フラグTPに
より判断し、一致があった場合は第10行以降の復号値
ロードシーケンスに分岐する。一致がなかった場合は、
次の符号コードC4、C5、C6、C7との比較を行う
ため符号テーブルのベースアドレスR2をコード4つ分
(計8バイト)インクリメントする。図19の例で示し
たように復号値が未知であるコードxがC5である場
合、図20の第9行でC4、C5、C6、C7のいずれ
かと一致したことが条件論理和フラグTPにより検出さ
れ、第10行以降の復号値ロードシーケンスに分岐す
る。
【0070】第11行の‘TSCH R5’命令は、フ
ラグレジスタ上のフラグT3、T2、T1、T0を左
(上位)側から検索し、レジスタ上の最初の‘1’の位
置をR5に格納する。本実施例では復号値は2バイトデ
ータであるため、第11行で得た一致位置の値を第12
行で2倍し、第13行にて直前に求めたアドレス増分R
5と復号テーブルベースアドレスR3との加算値をアド
レスとして、レジスタR1に復号値をロードし、復号処
理は終わりとなる。この例で、未知のコードxがC5の
場合、実行される命令数は10となり、前述の例の図1
9の24命令に比べ、半分以下に実行命令数が減少して
おり、処理が高速化されることがわかる。
【0071】前述したMPEG復号処理では、このよう
な復号化処理が大量に行われるため、本発明による高速
化の効果はかなり大きいものになる。
【0072】上記の例においては、条件論理和フラグを
判断条件として分岐処理を行うが、プログラムのロジッ
ク次第では分岐処理の判断条件として、条件論理積フラ
グを用いて分岐処理を行うこともあり得る。
【0073】
【発明の効果】以上の説明から明らかなように、本発明
のSIMD式の演算処理装置によれば、以下のような効
果が存する。
【0074】2つの入力手段間で対応する各データ格納
部に格納される2つのデータを用いてそれぞれ同時に共
通の演算をし、それぞれの演算結果に対応する条件フラ
グを出力手段の対応するフラグ格納部に格納する、本発
明のSIMD型演算器では、1ステップの命令実行であ
っても複数かつ共通の演算が同時に行われ、それら結果
から複数の条件を生成できるので、単一の演算を繰り返
して複数の条件を生成するよりも、費やす時間が少なく
て済み処理の高速化につながる。また、条件を満足する
(あるいは不満足な)演算がどれかを検索することが容
易となる。さらに、条件フラグの論理和である条件論理
和フラグを出力すれば、一度に演算した複数の演算デー
タの全てが条件に不満足なのか、それとも少なくともひ
とつ以上は条件に満足なのかが、この条件論理和フラグ
を確認するだけで判明する。同様に条件論理積フラグを
出力すれば、一度に演算した複数の演算データの全てが
条件に満足なのか、それとも少なくともひとつ以上は条
件に不満足なのかが、この条件論理積フラグを確認する
だけで判明する。
【0075】上記のSIMD演算器において、第2の入
力手段が少なくとも第1の入力手段のデータ格納部のビ
ット長以上の長さであり、かつ第1の入力手段のデータ
格納部と長さが等しい1個のデータ格納部を有し、第1
の入力手段の各データ格納部に格納されるデータと第2
の入力手段の1個のデータ格納部に格納されるデータと
を用いて同時に各データの組に共通の演算を行うもので
ある場合、特に複数データに対して一定の数値を加算す
るようなときに、処理速度、命令の指定の容易さ、の点
で有利である。
【0076】入力手段のうちの1つが上記のSIMD演
算器の出力手段、即ちフラグレジスタである、本発明の
SIMD演算器では、先行して実行した演算の結果を後
続する演算に反映することができる。
【0077】フラグレジスタに格納される条件フラグ
を、入力手段の各データ格納部に格納されるデータに対
応付けて、条件フラグの内容により演算に条件を与え
る、本発明のSIMD演算器では、先行して実行したS
IMD演算の結果によって、条件を満足(あるいは不満
足)しているデータだけに対する処理を選択的に実行す
ることができる。条件フラグに対応する演算データ単位
の実行内容の変更ができなければ、条件を満足(あるい
は不満足)しているデータだけを抽出して処理するか、
条件を満足(あるいは不満足)しないデータに対し後続
の処理の影響が与えられないような工夫が必要であり、
処理速度、処理の容易さの点で、不利である。
【0078】本発明のSIMD演算器にて生成される条
件フラグを分岐処理の判断条件とする条件分岐処理機能
を備えるCPUでは、演算は一度に実行しても結果の条
件フラグによりその後個別の処理を与えることができ
る。さらに、条件論理和フラグまたは条件論理積フラグ
を分岐処理の判断条件とする条件分岐処理機能により、
それぞれのフラグの内容による個別の処理を設定するこ
とが可能となる。
【0079】上記条件フラグを格納した出力手段上で最
上位(あるいは最下位)に位置する“1”(あるいは
“0”)を格納したフラグ格納部の位置を数値化する機
能を備えるCPUでは、条件を満足(あるいは不満足)
した演算が、どの演算であったのか容易に判明しうる。
この機能がない場合は、条件フラグの個々について
“1”(あるいは“0”)の有無を検査し、初めて見つ
かった“1”(あるいは“0”)の条件フラグが所望の
データの位置であるとするプログラムにより位置の数値
化を行わねばならず、処理速度、容易さの点で不利であ
る。
【図面の簡単な説明】
【図1】 SIMD演算器による条件フラグ生成の説明
図(1)。
【図2】 SIMD演算器による条件フラグ生成の説明
図(2)。
【図3】 SIMD演算器による条件フラグ生成の説明
図(3)。
【図4】 SIMD演算器による条件フラグ生成の説明
図(4)。
【図5】 条件フラグを用いたSIMD演算器による演
算の説明図(1)。
【図6】 条件フラグを用いたSIMD演算器による演
算の説明図(2)。
【図7】 条件フラグを用いたSIMD演算器による演
算の説明図(3)。
【図8】 条件フラグを用いたSIMD演算器による演
算の説明図(4)。
【図9】 条件フラグを用いたSIMD演算器による演
算の説明図(5)。
【図10】 条件フラグを用いたSIMD演算器による
演算の説明図(6)。
【図11】 条件フラグを用いたSIMD演算器による
演算の説明図(7)。
【図12】 条件フラグを用いたSIMD演算器による
演算の説明図(8)。
【図13】 条件フラグビットによるSIMD演算制御
の説明図。
【図14】 条件フラグビットによるSIMD演算制御
の具体的説明図。
【図15】 ブロードキャスト方式を用いた本発明の条
件フラグ生成の説明図。
【図16】 伸張処理で使用するレジスタの説明図。
【図17】 符号値と復号値のメモリ上の格納の説明
図。
【図18】 符号コードxの復号値を得るためのフロー
チャート。
【図19】 符号コードxの復号値を得るためのプログ
ラム。
【図20】 条件論理和フラグを利用した符号コードx
の復号値を得るためのプログラム。
【図21】 図20のプログラムでのブロードキャスト
方式を用いた比較演算の説明図。
【符号の説明】
1、10,20,30・・・SIMD型演算器、2、1
2、22、32・・・第1の入力レジスタ、4、14、
24、34・・・第2の入力レジスタ、6、16、2
6、36・・・演算部、8、18、28、38・・・出
力レジスタ、40、50,60,70・・・SIMD型
演算器、42、52、62、72・・・第1の入力レジ
スタ、44、54、64、74・・・第2の入力レジス
タ、46、56、66、76・・・演算部、48、5
8、68、78・・・出力レジスタ、80、90,10
0,110・・・SIMD型演算器、82、92、10
2、112・・・第1の入力レジスタ、84、94、1
04、114・・・第2の入力レジスタ、86、96、
106、116・・・演算部、88、98、108、1
18・・・出力レジスタ、120、130・・・SIM
D型演算器、122、132・・・入力レジスタ、12
6、136・・・演算部、128、138・・・出力レ
ジスタ、140・・・SIMD型演算器、142・・・
第1の入力レジスタ、144・・・第2の入力レジス
タ、146・・・演算部、148・・・出力レジスタ、
Rs1・・・レジスタ、Rs2・・・レジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山浦 慎一 東京都大田区中馬込1丁目3番6号 株式 会社リコー内 (72)発明者 門脇 幸男 東京都大田区中馬込1丁目3番6号 株式 会社リコー内

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 2つの入力手段と1つの出力手段をもつ
    演算器であって、 第1の入力手段及び第2の入力手段はいずれも所定のビ
    ット長の長さであり、かつ格納するデータのビット長に
    応じて個数及びビット長が変化するデータ格納部を有
    し、 出力手段は一方の入力手段における上記データ格納部の
    個数以上の個数まで長さ1ビットであるフラグ格納部を
    有し、 第1の入力手段の各データ格納部に格納されるデータと
    これに対応する第2の入力手段の各データ格納部に格納
    されるデータとを用いて同時に各データの組に共通の演
    算を行う演算器において、 2つの入力手段間で対応する各データ格納部に格納され
    る2つのデータを用いてそれぞれ演算した結果に対応す
    る条件フラグを出力手段の対応するフラグ格納部に格納
    する演算器。
  2. 【請求項2】 請求項1に記載の演算器において、 第2の入力手段は少なくとも第1の入力手段のデータ格
    納部のビット長以上の長さであり、かつ第1の入力手段
    のデータ格納部と長さが等しい1個のデータ格納部を有
    し、 第1の入力手段の各データ格納部に格納されるデータと
    第2の入力手段の1個のデータ格納部に格納されるデー
    タとを用いて同時に各データの組に共通の演算を行い、 第1の入力手段の各データと第2の入力手段のデータと
    を用いて演算した結果に対応する条件フラグを出力手段
    の対応するフラグ格納部に格納する演算器。
  3. 【請求項3】 2つの入力手段と1つの出力手段をもつ
    演算器であって、 第1の入力手段は所定のビット長の長さであり、かつ格
    納するデータのビット長に応じて個数及びビット長が変
    化するデータ格納部を有し、 第2の入力手段は第1の入力手段における上記データ格
    納部の個数以上の個数まで長さ1ビットであるフラグ格
    納部を有し、かつそれぞれのフラグ格納部中に先行する
    演算における演算結果に対応した条件フラグを格納し、 第1の入力手段の各データ格納部に格納されるデータと
    これに対応する第2の入力手段の各フラグ格納部に格納
    される条件フラグとを用いて同時に各データと条件フラ
    グの組に共通の演算を行い出力手段に格納する演算器。
  4. 【請求項4】 少なくとも1つの入力手段と、1つの出
    力手段をもつ演算器であって、 入力手段及び出力手段は所定のビット長の長さであり、
    かつ格納するデータのビット長に応じて個数及びビット
    長が変化するデータ格納部を有し、 入力手段の各データ格納部に格納されるデータを用いて
    同時に各データに共通の演算を行った結果得られたデー
    タを対応する出力手段のデータ格納部に格納する演算器
    において、 演算制御手段が入力手段における上記データ格納部の個
    数以上の個数まで長さ1ビットであるフラグ格納部を有
    し、かつそれぞれのフラグ格納部中に先行する演算にお
    ける演算結果に対応した条件フラグを格納し、 各フラグ格納部が入力手段の各データ格納部に対応して
    おり、入力手段の各データ格納部に格納されるデータが
    演算に用いられる際に、当該データ格納部に対応する各
    フラグ格納部に格納される条件フラグの内容によりデー
    タ毎に演算に条件が与えられる演算器。
  5. 【請求項5】 請求項1または請求項2に記載の演算器
    において、すべての条件フラグの論理和を求めて条件論
    理和フラグとし、それを出力手段の対応するフラグ格納
    部に格納する演算器。
  6. 【請求項6】 請求項1または請求項2に記載の演算器
    において、すべての条件フラグの論理積を求めて条件論
    理積フラグとし、それを出力手段の対応するフラグ格納
    部に格納する演算器。
  7. 【請求項7】 請求項1に記載の演算器を備えた中央演
    算処理装置。
  8. 【請求項8】 請求項2に記載の演算器を備えた中央演
    算処理装置。
  9. 【請求項9】 請求項1に記載の演算器と請求項3に記
    載の演算器とを備えた中央演算処理装置。
  10. 【請求項10】 請求項1に記載の演算器と請求項4に
    記載の演算器とを備えた中央演算処理装置。
  11. 【請求項11】 請求項1に記載の演算器と請求項5に
    記載の演算器と請求項6に記載の演算器とを備えた中央
    演算処理装置。
  12. 【請求項12】 請求項1に記載の演算器と請求項2に
    記載の演算器と請求項3に記載の演算器と請求項4に記
    載の演算器と請求項5に記載の演算器と請求項6に記載
    の演算器とを備えた中央演算処理装置。
  13. 【請求項13】 生成された複数の上記条件フラグを分
    岐処理の判断条件とする条件分岐処理機能を備える、請
    求項7、請求項8、請求項9、請求項10、請求項1
    1、または請求項12に記載の中央演算処理装置。
  14. 【請求項14】 請求項1または請求項2に記載の出力
    手段上で最上位(あるいは最下位)に位置する“1”を
    格納したフラグ格納部の位置を数値化する機能を備え
    る、請求項7、請求項8、請求項9、請求項10、請求
    項11、請求項12または請求項13に記載の中央演算
    処理装置。
  15. 【請求項15】 請求項1または請求項2に記載の出力
    手段上で最上位(あるいは最下位)に位置する“0”を
    格納したフラグ格納部の位置を数値化する機能を備え
    る、請求項7、請求項8、請求項9、請求項10、請求
    項11、請求項12または請求項13に記載の中央演算
    処理装置。
  16. 【請求項16】 請求項5に記載の条件論理和フラグを
    分岐処理の判断条件とする条件分岐処理機能を備える、
    請求項11または請求項12に記載の中央演算処理装
    置。
  17. 【請求項17】 請求項5に記載の条件論理積フラグを
    分岐処理の判断条件とする条件分岐処理機能を備える、
    請求項11または請求項12に記載の中央演算処理装
    置。
JP21702798A 1998-07-31 1998-07-31 Simd方式の演算器及び演算処理装置 Expired - Fee Related JP3652518B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21702798A JP3652518B2 (ja) 1998-07-31 1998-07-31 Simd方式の演算器及び演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21702798A JP3652518B2 (ja) 1998-07-31 1998-07-31 Simd方式の演算器及び演算処理装置

Publications (2)

Publication Number Publication Date
JP2000047998A true JP2000047998A (ja) 2000-02-18
JP3652518B2 JP3652518B2 (ja) 2005-05-25

Family

ID=16697697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21702798A Expired - Fee Related JP3652518B2 (ja) 1998-07-31 1998-07-31 Simd方式の演算器及び演算処理装置

Country Status (1)

Country Link
JP (1) JP3652518B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006066262A2 (en) * 2004-12-17 2006-06-22 Intel Corporation Evalutation unit for single instruction, multiple data execution engine flag registers
US7185176B2 (en) 2002-06-03 2007-02-27 Matsushita Electric Industrial Co., Ltd, Processor executing SIMD instructions
US7281117B2 (en) 2002-09-25 2007-10-09 Matsushita Electric Industrial Co., Ltd. Processor executing SIMD instructions
JP2007268156A (ja) * 2006-03-31 2007-10-18 Aloka Co Ltd 超音波診断装置用プロセッサ
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
KR100863515B1 (ko) 2006-10-13 2008-10-15 연세대학교 산학협력단 비디오 신호의 디코딩 방법 및 장치
US8086830B2 (en) 2005-03-31 2011-12-27 Panasonic Corporation Arithmetic processing apparatus
JP2014179076A (ja) * 2013-03-14 2014-09-25 Intel Corp 複数データ要素対複数データ要素比較プロセッサ、方法、システム、および命令
EP2798458A1 (en) * 2011-12-29 2014-11-05 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185176B2 (en) 2002-06-03 2007-02-27 Matsushita Electric Industrial Co., Ltd, Processor executing SIMD instructions
US7281117B2 (en) 2002-09-25 2007-10-09 Matsushita Electric Industrial Co., Ltd. Processor executing SIMD instructions
US7594099B2 (en) 2002-09-25 2009-09-22 Panasonic Corporation Processor executing SIMD instructions
GB2436499A (en) * 2004-12-17 2007-09-26 Intel Corp Evalutation unit for single instruction, multiple data execution engine flag registers
DE112005003130B4 (de) * 2004-12-17 2009-09-17 Intel Corporation, Santa Clara Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine
US7219213B2 (en) 2004-12-17 2007-05-15 Intel Corporation Flag bits evaluation for multiple vector SIMD channels execution
JP4901754B2 (ja) * 2004-12-17 2012-03-21 インテル・コーポレーション 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット
WO2006066262A2 (en) * 2004-12-17 2006-06-22 Intel Corporation Evalutation unit for single instruction, multiple data execution engine flag registers
JP2008524723A (ja) * 2004-12-17 2008-07-10 インテル・コーポレーション 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット
WO2006066262A3 (en) * 2004-12-17 2006-12-14 Intel Corp Evalutation unit for single instruction, multiple data execution engine flag registers
GB2436499B (en) * 2004-12-17 2009-07-22 Intel Corp Evalutation unit for single instruction, multiple data execution engine flag registers
US8086830B2 (en) 2005-03-31 2011-12-27 Panasonic Corporation Arithmetic processing apparatus
JP2007268156A (ja) * 2006-03-31 2007-10-18 Aloka Co Ltd 超音波診断装置用プロセッサ
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
KR100863515B1 (ko) 2006-10-13 2008-10-15 연세대학교 산학협력단 비디오 신호의 디코딩 방법 및 장치
EP2798458A1 (en) * 2011-12-29 2014-11-05 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
EP2798458A4 (en) * 2011-12-29 2017-05-17 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
JP2014179076A (ja) * 2013-03-14 2014-09-25 Intel Corp 複数データ要素対複数データ要素比較プロセッサ、方法、システム、および命令

Also Published As

Publication number Publication date
JP3652518B2 (ja) 2005-05-25

Similar Documents

Publication Publication Date Title
US5991785A (en) Determining an extremum value and its index in an array using a dual-accumulation processor
US9383999B2 (en) Conditional compare instruction
EP1859360B1 (en) Method and apparatus for producing an index vector for use in performing a vector permute operation
TWI517039B (zh) 用以對緊縮資料執行差異解碼之系統,設備,及方法
JPH10222397A (ja) シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
JPH04172533A (ja) 電子計算機
US20120072704A1 (en) "or" bit matrix multiply vector instruction
JPH096609A (ja) プログラム実行装置およびプログラム変換方法
US20080263332A1 (en) Data Processing Apparatus and Method for Accelerating Execution Subgraphs
JP2000047998A (ja) Simd方式の演算器及び演算処理装置
CN113853582A (zh) 向量索引寄存器
CN111124495B (zh) 一种数据处理方法、解码电路及处理器
JP4755129B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20080288756A1 (en) "or" bit matrix multiply vector instruction
US4384343A (en) Firmware controlled search and verify apparatus and method for a data processing system
US6209012B1 (en) System and method using mode bits to support multiple coding standards
US20100115232A1 (en) Large integer support in vector operations
JPS6314378B2 (ja)
US7647368B2 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
JP2000020486A (ja) Simd型演算器
US6848043B1 (en) Optimal redundant arithmetic for microprocessors design
US9564187B2 (en) Predicting saturation in a shift operation
CN100498727C (zh) 矩阵的解压缩方法和设备
KR100315303B1 (ko) 디지탈 신호 처리기

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050120

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: 20050215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050223

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090304

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100304

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110304

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120304

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130304

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees