JPH0850575A - プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良 - Google Patents

プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良

Info

Publication number
JPH0850575A
JPH0850575A JP7109642A JP10964295A JPH0850575A JP H0850575 A JPH0850575 A JP H0850575A JP 7109642 A JP7109642 A JP 7109642A JP 10964295 A JP10964295 A JP 10964295A JP H0850575 A JPH0850575 A JP H0850575A
Authority
JP
Japan
Prior art keywords
operand
mode
scalar
vector
instruction
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
JP7109642A
Other languages
English (en)
Other versions
JP3889069B2 (ja
Inventor
Keith M Bindloss
ケイス・エム・ビンドロス
Kenneth E Garey
ケニス・イー・ギャレイ
A Watson George
ジョージ・エイ・ワトソン
John Earle
ジョン・アール
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.)
Boeing North American Inc
Original Assignee
Rockwell International 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 Rockwell International Corp filed Critical Rockwell International Corp
Publication of JPH0850575A publication Critical patent/JPH0850575A/ja
Application granted granted Critical
Publication of JP3889069B2 publication Critical patent/JP3889069B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】 汎用プログラマブルプロセッサにSIMDス
キームを統合する空間ベクトルデータ経路を提供する。 【構成】 プログラマブルプロセッサは、命令手段に結
合され、オペランドがベクトルおよびスカラモードの1
つ処理されるか否かを各命令に対して特定するためのモ
ード手段と、モード手段に結合され、オペランドを受取
り、モード手段に特定されるような命令に応答してベク
トルおよびスカラモードの1つでオペランドを処理する
ための処理ユニット110とを含み、ベクトルモードは
オペランド内に複数の要素があることを処理ユニット1
10に示し、スカラモードはオペランド内に1つの要素
をあることを処理ユニット110に示す。

Description

【発明の詳細な説明】
【0001】
【発明の分野】この発明は信号プロセッサに関し、より
特定的には空間並列処理能力を備えたデジタル信号プロ
セッサに関する。
【0002】
【発明の背景】近年、コンピュータ技術において、単一
命令多重データ(SIMD)などの並列処理方式を備え
るコンピュータは徐々に認識される割合を獲得してきて
いる。SIMDコンピュータは概念的には図1(a)で
示すことができるものであり、ここでは複数の処理要素
(PE)が1つのメインシーケンサによって監視されて
いる。すべてのPEはメインシーケンサから通信される
同じ命令を受取るが、別々のデータストリームからの異
なったデータの組に対して動作する。図1(b)に示す
ように、各PEはそれ自身の局所メモリを備える中央処
理装置(CPU)として機能する。したがって、SIM
Dコンピュータは各PEのCPUとともに複数の同期さ
れた算述論理ユニットを用いることによって、空間的並
列性を達成することができる。一旦データが各PE内に
存在するようになれば、個々のPEがそのデータを扱う
ことは比較的容易なことであるとはいえ、相互接続(図
示せず)を介してすべてのPE間で分配および通信を行
なうことは、極めて複雑な仕事である。よって、SIM
Dマシンは、通常専用とすることを念頭において設計さ
れており、プログラミングやベクトル化の難しさのため
に、これらのマシンは汎用の用途には望ましくないもの
となっている。
【0003】一方で、SPARC(登録商標)、Pow
erPC(登録商標)、および68000ベースのマシ
ンなど現在の汎用計算機は、典型的には高性能グラフィ
ック処理に際してはそれらの持つ32ビットメモリ空間
をフルに利用してはいない。たとえば、これらのマシン
のバスが32ビットの幅であるのに、映像および画像情
報についてはデータは未だに16ビット幅または8ビッ
トピクセルで処理されるように制限されている。しかし
ながら、これらの汎用マシンは高級言語のソフトウェア
環境におけるプログラミングの便利さのため魅力的であ
る。したがって、デジタル信号処理に応用されるような
SIMDのスピードの利点と、汎用CPUにおけるプロ
グラミングの便利さとの間で、バランスをとることが望
ましい。そうすれば、低性能なSIMDマシンの実現例
であっても、汎用マシンに組込まれたならば、あたかも
複数のスカラCPUが並列に働いているかのように総合
的なスループットが激しく向上するであろう。しかしな
がら、汎用マシンにSIMDが組込まれた場合、高めら
れたスループットは、伝統的なSIMDマシンに見られ
る複数ユニットのスカラCPUと典型的にはかかわりの
ある、シリコンの使用と引替えにもたらされるものでは
ない。
【0004】したがって、コード強調応用およびスピー
ド強調計算のためのSIMD能力を備える汎用プロセッ
サを有することが望ましいだろう。
【0005】本発明の目的は、SIMD方式を汎用CP
Uアーキテクチャに組入れてスループットを高めること
である。
【0006】実質的にシリコンの使用を招くことなくス
ループットを高めることも本発明の目的である。
【0007】この発明のさらなる目的は、同じ命令実行
速度で各命令において処理されるデータ要素の数に比例
してスループットを増大させることである。
【0008】
【発明の概要】SIMD方式を汎用プログラマブルプロ
セッサに組入れるための空間ベクトルデータ経路が開示
される。プログラマブルプロセッサは、命令手段に結合
され、オペランドがベクトルおよびスカラモードの1つ
において処理されるかどうかを各命令について特定する
ためのモード手段と、モード手段に結合され、オペラン
ドを受取り、モード手段によって特定された命令に応答
して、オペランドをベクトルおよびスカラモードのうち
1つにおいて処理するための処理ユニットとを備え、ベ
クトルモードは処理ユニットに、オペランド内に複数個
の要素があることを示し、スカラモードは処理ユニット
に、オペランド内に1つの要素があることを示す。
【0009】本発明はまた、汎用コンピュータを用いて
複数のデータ経路を介しデジタル信号処理を行なう方法
をも開示するものであって、汎用コンピュータは、各オ
ペランドが少なくとも1つの要素を有する状態で複数個
のオペランドをストアするためのデータメモリと、複数
個のサブ処理ユニットを有する処理ユニットとを含む。
この方法は以下のステップを含む。a)処理ユニットに
よって実行されるべき命令の予め定められたシーケンス
の中から命令を提供する。b)命令はオペランドに対す
る処理ユニットによる処理についてスカラモードおよび
ベクトルモードのうち1つを特定する。スカラモードは
オペランド内に1つの要素があることを処理ユニットに
示し、ベクトルモードは複数個のサブ要素がオペランド
内にあることを前記処理ユニット示す。c)スカラモー
ドの場合、処理ユニットにおける各サブ処理ユニットは
命令に応答して処理すべきオペランドのそれぞれの部分
を受取り、部分的中間結果を発生する。d)各サブ処理
ユニットは複数のサブ処理ユニット間にその中間結果を
送り、その部分的結果を他のサブ処理ユニットと合せ
て、オペランドのための最終的な結果を発生する。e)
最終的結果に対応するように第1の条件コードを発生す
る。f)ベクトルモードの場合、処理ユニットにおける
各サブ処理ユニットは命令に応答してオペランド内の複
数個のサブ要素からそれぞれのサブ要素を受取りかつそ
れを処理して、部分的中間結果を発生し、各中間結果は
不能化され、各部分的結果はその対応する要素のための
最終的結果を表わす。g)複数個の第2の条件コードを
発生する。ここで第2の条件コードの各々は独立した結
果に対応する。
【0010】
【発明の詳しい説明】一般的な実現例の考察 SIMD方式を汎用マシンに組込む場合、望ましくは考
慮されるべきである問題がいくつかある。
【0011】1)スカラまたはベクトルの動作の選択
は、好ましくは、ある期間ベクトルモードに切換わるの
ではなく、命令単位で行なわれるべきである。なぜな
ら、いくつかのアルゴリズムはベクトルサイズが大きい
と容易にベクトル化されないからである。また、ベクト
ル演算が選択される場合、ベクトルの次元を特定しなけ
ればならない。
【0012】現在、本発明に従い、スカラ/ベクトルに
ついての情報はSIMD能力を有する各命令内のデータ
タイプ修飾子フィールドによって特定される。たとえ
ば、命令はワードまたはハーフワード対演算を特定する
ことのできる1ビット「経路」修飾子フィールドを特徴
としていてもよい。さらに、より大きいベクトル次元、
たとえば4、8などを選択するために、このフィールド
は好ましくはストリーマコンテキストレジスタ内のデー
タタイプ変換フィールドと組合せられるべきである。ス
トリーマの完全な説明は、「RISCデジタル信号プロ
セッサのためのストリーマ(STREAMER FOR DIGITAL SIG
NAL PROCESSOR )」と題され、その開示がここに引用に
よって援用される、1992年7月23日に提出された
関連の米国特許出願連続番号第917,872号に開示
されている。
【0013】2)マシンは、ベクトル結果に基づく条件
付実行に備えるものでなければならない。SIMD演算
の結果を、それがちょうど多重スカラ演算を用いて行な
われたかのようにテストできることが重要である。この
理由により、ステータスレジスタ内の条件コードフラグ
は、データ経路の1セグメントごとに1組が存在するよ
うに二重にされることが好ましい。たとえば、ベクトル
次元が4であれば4組の条件コードが必要であろう。
【0014】また、条件付命令は、条件コードのどの組
を使用するかを特定することを必要とする。たとえば
「1つでもけた上げフラグがセットされていれば」また
は「すべてのけた上げフラグがセットされていれば」な
どの条件の組合せをテストすることができれば有用であ
る。
【0015】3)SIMD方式は可能な限り多くの演算
に応用可能であるべきである。これから述べる本発明の
好ましい実施例は、16ビット乗算器および32ビット
入力データなどの現在の実現例におけるマシンを示して
いるが、本発明に従い他の変形が容易に構成され得ると
いうことは当業者には認識されるであろう。
【0016】次の演算は、空間ベクトル(SV)技術の
性能を高めることができる、可能な演算(図28〜36
で列挙)の例である。
【0017】ABS,NEG,NOT,PAR,RE
V,ADD,SUB,SUBR,ASC,MIN,MA
X,Tcond SBIT,CBIT,IBIT,TBZ,TBNZ ACC,ACCN,MUL,MAC,MACN,UMU
L,UMAC AND,ANDN,OR,XOR,XORC SHR,SHL,SHRA,SHRC,ROR,ROL Bcond LOAD,STORE,MOVE,Mcond ここでcondは、CC,CS,VC,VS,ZCおよ
びZSであってもよい。
【0018】4)メモリデータ帯域幅はSIMDデータ
経路の性能に適合可能であるべきである。
【0019】メモリおよびバス帯域幅をハードウェアの
複雑さを増大させることなく空間ベクトルデータ経路の
データ要求に適合させることが望ましい。現在実現され
ているマシンにおけるデュアルアクセスの32ビットメ
モリを備える2つの32ビットバスは、算述論理ユニッ
ト(ALU)およびデュアル16×16乗算/累算ユニ
ット(MAC)によく適合している。これらはまた、4
つの8×8MACにもよく適合するだろう。
【0020】5)実現されるいかなる付加および変形
も、付加的なハードウェアの複雑さは最小限で性能を最
大限にすることによって、コスト効率の良さをもたらす
べきである。
【0021】加算器/減算器は、けた上げ伝播を止め、
条件コード論理を二重にすることによって、空間ベクト
ルモードにおいて動作させることができる。
【0022】シフタは、ラップアラウンド論理をも再構
成し、条件コード論理を二重にすることによって空間ベ
クトルモードにおいて動作させることができる。
【0023】ビット論理ユニットは、条件コード論理を
二重にするだけで空間ベクトルモードにおいて動作させ
ることができる。
【0024】空間ベクトル条件付移動動作は、条件コー
ドフラグのベクトルを用いてマルチプレクサを制御し、
ベクトルの各要素が独立的に移動させられるようにする
ことによって達成され得る。
【0025】空間ベクトルの乗算は、乗算器アレイを二
重にし、部分積を組合せることを必要とする。たとえば
適切な組合せ論理を備える4つの16×8乗算器は、4
つの16×8または2つの16×16のベクトル演算、
もしくは1つの32×16スカラ演算を行なうのに用い
ることができる。空間ベクトル乗算−累算演算はまた、
けた上げ伝播を止め、条件コード論理を二重にすること
ができる累算加算器を、ベクトル化された累算器レジス
タと同様に必要とする。
【0026】6)汎用コンピュータにおける空間ベクト
ルの実現に起因するプログラミングの複雑さは、最小限
にされるべきである。空間ベクトル結果をスカラ結果に
組合せるために命令を考え出すことができる。
【0027】ACC Az,Ax,Ay 累算器を加算する。SA Ay,
Mz スケーリングされた累算器対をメモリにストアす
る。
【0028】MAR Rz,Ax スケーリングされた累算器対
をレジスタに移動させる。7)ベクトルが物理的メモリ
境界と交差するとき、ベクトルへのアクセスがそれでも
可能であるべきである。たたみ込みなどのいくつかのア
ルゴリズムは、データアレイを介しての増分を必要とす
る。アレイが長さNのベクトルとして扱われる場合、ベ
クトルが部分的に1つの物理的メモリ位置の中に存在
し、部分的に隣接する物理的メモリ位置の中に存在する
ということがあり得る。そのような空間ベクトル演算に
対する性能を維持するには、物理的境界と交差するデー
タアクセスに対処するようにメモリを設計するか、また
は前述の米国特許出願「RISCデジタル信号プロセッ
サのためのストリーマ」に記載されたようなストリーマ
を用いることが好ましい。
【0029】全体システム 図2は、本発明の空間ベクトルデータ経路を組入れても
よいプログラマブルプロセッサを一般化して表わしたも
のである。本発明に取入れられたコンセプトの1つは、
スカラオペランドまたはアレイの要素に一度に1つずつ
対処するように設計されたコンピュータを変形し、同時
に1つより多くのオペランドを処理できるようにするこ
とによって、その性能を高めることができるということ
である。
【0030】図2に示されているのは、プログラムおよ
びデータオペランドをストアするためのプログラムおよ
びデータ記憶ユニット100を有するプログラマブルプ
ロセッサ、または広い意味でいう「コンピュータ」であ
る。命令収集ユニット130が記憶ユニット100から
命令をフェッチし、これは命令フェッチ/デコード/シ
ーケンスユニット140によりデコードかつ解釈され、
処理ユニット110によって実行される。このようにし
て処理ユニット110は記憶ユニット100から供給さ
れるオペランドで命令を実行する。
【0031】性能を高めるため、オペランドがスカラで
あるかベクトルであるかを特定するためのビットが各命
令の中にある。また、それらがベクトルである場合、各
オペランド内にいくつの要素があるかが特定される。こ
の情報は典型的なデコードされた命令とともに処理ユニ
ット110に送られるので、処理ユニット110はオペ
ランドをスカラとして処理するべきがベクトルとして処
理するべきかを「知る」。
【0032】処理ユニット110はALUでもシフタで
もMACでもよい。記憶ユニット100は一般に何らか
の種類のメモリであってよく、レジスタファイルでも、
半導体メモリでも、磁気メモリでも、またはいくつかの
種類のメモリのいずれのものでもよい。処理ユニット1
10は加算、減算、論理AND、論理OR、バレルシフ
タでのようなシフト、乗算、累算、およびデジタル信号
プロセッサにおいて典型的に見られる乗算および累算の
ような、典型的な演算を行なってもよい。処理ユニット
110はオペランドを、命令において用いられる1つの
オペランド、命令において用いられる2つのオペラン
ド、またはそれ以上多くのものなどのうちいずれかとし
てとる。処理ユニット110は次にこれらのオペランド
で演算を行なって、それらの結果を得る。スカラまたは
ベクトルオペランドで開始することにより、オペランド
は演算を最後まで行なわれ、それぞれスカラまたはベク
トル結果をもたらす。
【0033】次のステップは、処理ユニット110がど
のように形成されてもよく、どのように機能するかをよ
り特定的に認識するためのものである。データおよびプ
ログラムは記憶ユニット100内で組合せられているよ
うに示されているが、それらは同じ物理的メモリ内で組
合せることもできるし、別個になった物理的メモリ内で
実現することもできるということは明らかであろう。各
オペランドは典型的な32ビットの長さを有するものと
して説明されているが、一般に、オペランドはいくつか
の長さのいずれとすることもできるだろう。16ビット
マシン、8ビットマシン、または64ビットマシン等々
とすることができる。一般的なアプローチは、Nビット
オペランドが、ともにとられて加算されるとNビットに
なる複数オペランドとして考えられ得るということであ
ると、当業者は認識するだろう。したがって、32ビッ
トワードはたとえば2つの16ビットハーフワード、も
しくは4つの8ビットクォーターワードまたはバイトで
あり得るだろう。発明者らによる現在の実現例では、1
つのオペランド中の要素は各々同じ幅のものとしてい
る。しかしながら、32ビットオペランドを、一方の要
素を24ビットとし、他方の要素を8ビットとすること
もできる。オペランド中で複数のデータ経路および複数
の要素を用いることから導き出される利点とは、すべて
の要素が独立的かつ同時に処理されており、処理のスル
ープットの増加がなし遂げられるということである。
【0034】命令はどのようなサイズであってもよい。
現在は32ビット命令が用いられている。しかしながら
当業者は、8ビット、16ビット、32ビット、および
64ビットにおいて特に有用性を見出すかもしれない。
より重要なことは、命令については固定長でさえなくと
もよいということである。同じコンセプトが、32ビッ
ト命令に拡張可能な16ビット命令を備えるものなど
の、または命令がいくつかの数の8ビットバイトで形成
されており、その数はそれがどの特定の命令であるかに
よって決まる、可変長命令マシンにおいて用いられた場
合でも、働くだろう。当業者のために、図28〜36に
例示的な命令セットのまとめを示し、本発明に従って実
現されてもよい命令を示す。
【0035】処理ユニット110は典型的にはALU1
21および/またはMAC122を含んでもよい。また
これは、シフタ123または論理ユニット124を実現
するだけのものであってもよい。
【0036】加算器 図3は処理ユニット(図2の110)のための、ALU
において実現されてもよい加算器を模式的に表わしたも
のである。図3(a)は従来の32ビット加算器を示
す。図3(b)はハーフワード対モードのために接続さ
れた2つの16ビット加算器を表わしたものである。図
3(c)はワードモードのために接続された2つの16
ビット加算器を表わしたものである。
【0037】図3(a)から(c)は、図3(a)にお
ける32ビットの従来のマシンにおける典型的なハード
ウェアが、本発明に従うハーフワード対モードまたはワ
ードモードの所望される目的を達成するためにどのよう
に変形されてもよいかということを示す役割を果たす。
ベクトルはここでは2つの要素を持つものとして示され
る。より特定的には、32ビットの従来のオペランドが
どのようにして各々16ビットの2つの要素に分割され
得るかということが示される。同じ原理を、等しい長さ
または等しくない長さのものがあるいくつかの要素に分
割するのに適用することができるだろう。
【0038】図3(a)を参照して、従来の加算器20
0はXオペランドのための入力XとYオペランドのため
の入力Yとを有する。またこれは、加算器と関連して典
型的に見出されるキャリー−イン201および条件コー
ド205のための入力をも有する。条件コード205
は、オーバフローを表わすのがV、キャリー−アウトが
C、ゼロ結果、すなわち加算器から出される結果がゼロ
である場合がZであってよい。さらにこれは加算器から
出される結果オペランドを有しており、これはSであ
る。X、Y、およびSはすべて32ビットワードで表わ
される。制御入力s/u202は符号付または符号なし
オペランドを表わし、ここで最上位ビットはその数が正
または負である場所を示し、もしくは符号なしオペラン
ドではその最上位ビットがオペランドの大きさに関与す
る。図3(b)は、典型的な32ビット加算器に類似し
てはいるが、そうではなく単なる16ビット加算器であ
る2つの加算器が、どのようにともに組合せられてハー
フワード対、すなわち1つのオペランドにつき2つのハ
ーフワード要素があるものに対してベクトル演算を行な
うことができるかということを示す。Yオペランドはこ
こでは2つのハーフワードオペランド、すなわち下半分
のY0からY15、および上半分のV0からV15とし
て分割されている。同様に、Xオペランドは2つのハー
フワードオペランド、すなわち下半分のX0からX1
5、および上半分のU0からU15として分割されてい
る。結果Sは、加算器210からくるS0からS15、
および加算器220からくる上半分のW0からW15と
して認識される。本質的には、32ビット加算器200
を中央で分割して2つの16ビット加算器210および
220を形成してもよい。しかしながら、上位ビットに
はオペランドの符号ビットの性質を決定するための論理
が必要であろう。したがって32ビット加算器200を
分割する際には、32ビット加算器から分割されて加算
器210を形成する下方の16ビットの符号制御のため
に付加的な論理が必要となるであろう。この場合これら
2つの加算器210および220は、加算器210のた
めの入力オペランドが32ビットオペランドの下半分か
らきており、16ビット加算器220のための入力オペ
ランドが32ビットオペランドの上半分からきていると
いうことを除けば、同一なものとなるであろう。
【0039】オペランド要素XおよびUが別個にそれぞ
れYおよびVと加算されて合された場合、それらはそれ
ぞれ結果SおよびWをもたらす。またそれらは加算器の
各々のために独立的な条件コードを生成する。加算器2
10は条件コード215を生成し、加算器220は条件
コード225を生成する。これらの条件コードは、それ
らが関連している特定のハーフワード加算器に適用され
る。したがって、これで独立的なハーフワード対演算を
行なうために従来の32ビット加算器がわずかに変形さ
れる様が見てとれる。
【0040】図3(c)を参照して、図3(b)におけ
る同じ加算器ユニットが、図3(a)の加算器200に
おいて行なわれた、もとのワード演算を行なうべく再接
続されてもよい。これは、オペランドが32ビットスカ
ラを表わす場合である。スカラはY0からY31および
X0からX31である。これらのオペランドの下半分は
加算器230によって処理され、上半分は加算器240
によって処理される。これを可能にするメカニズムは、
加算器230のキャリー−アウトを加算器240のキャ
リー−イン236に接続することによるものである。図
2(c)に示されるように、組合せられた2つの16ビ
ット加算器は図3(a)の1つの32ビット加算器と同
じ機能を果たす。したがって、図3(b)および3
(c)に示した実現例では、加算器210は本質的に加
算器230と同じものであってもよく、一方で加算器2
20は加算器240と同じものであってもよい。この説
明ではこれら2つの加算器がどのようにハーフワード対
モードまたはワードモードのいずれかで機能できるかが
示されているが、当業者は、拡張によってベクトルの独
立した要素を同時に扱うために従来の加算器をいくつか
の加算器に変形すること、およびこれを再結合してスカ
ラ演算をスカラオペランドで行なうことをしてもよい。
【0041】図3の加算器について、1つ注目すべきこ
とがある。図3(c)では2組の条件コード235およ
び245が示されている。一方、もとの従来の加算器で
は1組の条件コード205しかない。図3(c)の条件
コードは、本当は条件コードZを除いては245の条件
コードである。235における条件コード、すなわちオ
ーバフローVおよびキャリーCは、条件コード205に
おける条件コードおよび条件コードZが、効果的に23
5のZ条件コードとAND処理される245のZ条件コ
ードである限り、無視される。ここでは205の条件コ
ードVは245のVに対応する。205のCは245の
Cに対応し、205のZはコード235のZとAND処
理されたコード245のZに対応する。当業者は、適合
すると思われるどの特定のやり方でもこれらを組合せる
ことができるだろう。
【0042】論理ユニット 図4は本発明に従い実現されてもよい論理ユニットの模
式図である。図4(a)はビット単位の論理演算、ビッ
ト単位の補数または現在のプロセッサにおいて典型的に
見られるいくつかの組合せを行なう典型的な32ビット
論理ユニットを示すものであって、これらの演算につい
て重要かもしれないのは、それらが条件コードにおける
異なったビットのために独立的に働くということであ
る。オーバフロービットは通常、305における条件コ
ードでは全く重要性を持たない。キャリー−アウトは論
理演算においてまったく重要ではないが、ゼロには、結
果がゼロであるということを示すことにおいてまだ重要
性がある。ハーフワード対演算のために、もとの32ビ
ット加算器は「動作的」には2つの16ビット論理ユニ
ットに分割されるだろう。入力オペランドにおける上方
の16ビット320および下方の16ビット310は、
加算器のときと同じ態様で2つのハーフワードに分割さ
れるだろう。論理演算を処理するにあたっては、ビット
は一般に独立的に処理されるので、2つの論理ユニット
310および320の間には動作的な接続は全くない。
【0043】図4(c)はスカラ処理のための典型的な
論理ユニットを形成するようにもう一度再結合された論
理ユニットを示す。条件コードエリア以外ではユニット
間には接続が必要ではないということに注意されたい。
従来の論理ユニットのゼロ条件コード305はここでは
ユニット345のゼロ条件コードをユニット335のゼ
ロ条件コードとAND処理することによって表わされて
もよい。したがって当業者には、デュアルモード論理ユ
ニットが前述のようにデュアルモード加算器のコンセプ
トおよび実現例を拡張することによって構成され得ると
いうことが明らかなはずである。
【0044】シフタ 図5から8は、本発明に従い実現されてもよいバレルシ
フタを模式的に表わしたものである。いくつかのプロセ
ッサは図5(b)に示されるようにバレルシフタを有す
るが、他のものは図5(a)、図6、および図7に示さ
れる1ビットシフタを有する。バレルシフタは典型的に
はプロセッサユニット内に必要なものではないが、高性
能マシンについては、プロセッサユニットは図5(b)
に表わされるようなシフタユニットを実現してもよい。
以下の説明では、処理を高速化する、または必要なハー
ドウェアの量を最小限にするために、当業者によってシ
フタがどのように構成され実現されてもよいかを示す。
図5(a)は、左シフトまたは右シフトのどちらかであ
る1ビットシフトが典型的なプロセッサにおいてどのよ
うに実現されてもよいかを示す。シフタ415は、32
ビット入力オペランドXが、左または右へ1ビットシフ
トされる、または方向入力DIR401の制御下ではシ
フトされないようにして、Z出力を生成できる。シフト
が起こった場合、それが左へのシフトなら、選択ボック
ス416によって最下位ビットの位置にビットが入れら
れなければならない。
【0045】シフタが右へシフトされる場合、選択ボッ
クス400からのビットが最上位ビットの位置に入れら
れる。選択ボックス400および416はシフタ415
に入れるために選択され得るいくつかの入力を有する。
双方のボックスにはSELとラベル付けされる選択入力
もあり、これは命令からくるものであって、従来のマシ
ンには典型的なものである。SELはこれらの入力ビッ
トのうちどちらがシフタに入れられるために選択される
であろうかを決定する。一般に、これらの選択ボックス
があるため、シフトは、シフタの外へシフトされるビッ
トがシフタのもう一方の端で中にシフトされる回転でも
あり得るし、他のビットが右へシフトされる際に符号ビ
ットまたは最上位ビットがドラッグされる算術的右シフ
トでもあり得るし、他のビットが左へシフトされる際に
0が入れられる算術的左シフトでもあり得る。論理シフ
トについては、「0」がビットとして入れられる。ま
た、「1」は論理シフトに入れられる新しいビットとし
て、入れられる。
【0046】当業者は、加算器および論理ユニットのた
めの条件コードの説明を参照することによって、容易に
条件コードをシフタに割当て、算術的左シフト演算のた
めのオーバフロー、シフト演算の最後のビットを保持す
るためのキャリー、およびシフトの結果が0値であった
ときにそれを記録するゼロフラグを表わすことができる
だろう。
【0047】図5(a)のシフタを組合せて用いること
で、図5(b)のシフタを32ビット左/右バレルシフ
タとして形成してもよい。これは図5(a)におけるシ
フタを32個組合せ、それらを次々にカスケード接続
し、第1のものの出力が第2のものの入力に入る、とい
うふうに最後まで続いていくようにすることによって行
なわれてもよい。シフトされるべきビットの数は個々の
シフタへの方向入力DIRの1および0のパターンによ
って決定される。図5(a)ではシフタのための方向は
3値であるということに注意されたい。すなわち左、
右、またはまったくシフトがなし遂げられない真っ直ぐ
前方、である。そこで図5(b)では、個々の32ビッ
トの1ビットシフタへの方向入力は、左でも右でもシフ
トなしでもあり得る。32ビットが左へシフトすべきで
ある場合、すべての方向入力が左を示すだろう。
【0048】左へシフトすべきなのが1ビットだけの場
合、第1のボックスが左への1ビットシフトを示し、他
の31個はすべてシフトなしを示す。Nビットが左へシ
フトすべきである場合、始めのN個のボックスが左への
1ビットの方向入力を有し、残りのボックスがシフトな
しを示すだろう。同じことが右へのシフトにも適用でき
るだろう。この場合には方向は右へのシフトまたはシフ
トなしのいずれかを示し、同じように右シフトにおいて
0ビットから32ビットまでのシフトが可能であろう。
【0049】この図5(a)における典型的な1ビット
シフタは、ここで図6を参照して2つの16ビットシフ
タに分割することができる。ここではハーフワード対モ
ードのために接続された2つの16ビットL/R1ビッ
トシフタが示される。図5(a)におけるシフタ415
は、動作的には2つの16ビットの1ビットシフタ45
0および435に分割できる。これらの16ビットシフ
タの各々は、この場合特に416および400を参照す
る図5(a)に示す入力選択論理を有しており、これは
ボックス450がボックス460および445を有し、
ボックス435がボックス440および430を有する
ように二重にされる。入力論理は同じであるが、選択ボ
ックスへの入力は異なったように結線される。したがっ
て、ハーフワード対モードのために接続される図6のシ
フタとワードモードのために接続される図7のシフタと
の違いは、入力選択ボックスの結線のされ方にある。下
方のシフタ450のための図6の入力オペランド要素は
X0からX15であり、シフタ435のための入力オペ
ランド要素はY0からY15である。このようにしてX
およびYは2つのハーフワードを示す。
【0050】結果Z出力オペランドは2つのハーフワー
ドとして示される。下方の16ビットはZ0からZ15
であり、上方の16ビットはW0からW15である。入
力セレクタは、回転においてシフタから出力されるビッ
トがシフタの他方の端にフィードバックされるように結
線される。シフタ435が左シフトを行なうと、回転さ
れるビットはY15となり、右シフトを行なうと回転さ
れるビットはY0となる。同様にシフタ450につい
て、それが左回転であれば、入力ビットはX15であ
り、右回転であれば入力ビットはX0である。同様に、
選択は算術的シフトおよび論理的シフトについても図5
(a)でのように働く。
【0051】図7は、これらの同じ2つのシフタの動作
がどのようにワードモードのために接続され得るかを示
す。ここではシフトパターンは図6での2つのハーフワ
ードとは違ってオペランドにおける32ビット全体に対
して働く。左への回転については、下方のシフタ486
から外へ回転させられるビット(MSBビットX15)
は上方のシフタ475の中に回転させられる一方で、L
SBビットはシフタ475に入力される。これは上方の
1ビットシフタと下方の1ビットシフタとの間で連続的
なシフトを形成する。2つのシフタをめぐる回転につい
ては、X31がX0にシフトされるだろう。図7に示し
たようにセレクタ480のすべての入力がX15に接続
されており、セレクタ485のすべての入力がX16に
接続されていれば、図7の組合せられたシフタは図5
(a)におけるシフタとして効果的に動作する。入力セ
レクタ470は入力セレクタ400と同じパターンを有
するだろう。入力セレクタ488はセレクタ416と同
じ入力パターンを有するだろう。したがって、図7の組
合せられたシフタは図5(a)におけるシフタと同じス
カラオペランドのためのシフト動作を行なうだろう。
【0052】図6および7における1ビットシフタはさ
らに、1ビットシフタを32個カスケード接続すること
によって、図5(b)と類似の態様で、図8に示した3
2ビットバレルシフタに拡張することができる。1ビッ
トシフトが所望されるならば、方向制御信号が第1のシ
フタに対して用いられ、1ビットシフトを示す。他のカ
スケード接続された1ビットシフタに対しては、示され
るシフトはない。Nビットシフトについては、最初のN
個の1ビットシフタにおける方向入力が、1ビットだけ
シフトすることを示し、残りの1ビットシフタはシフト
せずデータを通過させる。
【0053】同様にこの図8のバレルシフタはワードま
たはハーフワード対モード演算のいずれをも行なうこと
ができる。なぜなら、個々のビットシフタはワードまた
はハーフワード対演算のどちらでも行なうことができる
からである。この図5から8の実施例はバレルシフタを
実現する1つの方法を代表するものであるが、バレルシ
フタを真中で分割して入力選択論理を提供する同じコン
セプトが、バレルシフタの多くの他の実現例にも応用で
きる。当業者は、特定のハードウェアまたはスループッ
トの要求に応じて適切な実現例を見出すことができるは
ずである。
【0054】乗算累算器 図9および10は、本発明に従い実現されてもよい乗算
および累算(MAC)ユニットの模式図である。
【0055】典型的な32ビットプロセッサは通常、高
価な32×32乗算器アレイの実現を必要とはしないだ
ろう。乗算はおそらく他の方法で確立されるだろう。し
かしながら典型的な16ビット信号プロセッサでは、1
6×16乗算器アレイが極めて普通に見られる。高速な
乗算を必要とするタイプの計算には、典型的に16ビッ
トデータが用いられるので、16×16乗算器アレイの
方が普及したものとなっており、これはいくつかの32
ビットプロセッサにおいてさえ当てはまることである。
したがって、32ビットオペランドを2つの16ビット
ハーフワード対として扱うことにより、1つのベクトル
化されたオペランド中の32ビットワードオペランド、
ハーフワードオペランド、またはハーフワード要素の空
間ベクトルの概念を利用すべく2つの16×16乗算器
アレイを実現することができる。
【0056】次の例は、どのようにして16×16乗算
器アレイを二重にして2つのハーフワード対乗算器とし
て用いることができるかを示すものであって、これらの
乗算器はともに接続されて32×16スケーラ乗算をも
たらしてもよい。この32×16スカラ乗算には、これ
らの乗数の2つを一緒に用いて32×32ビット乗算を
なすことができるという有用さがある。または、32×
16乗算をそれ自体で用いることもでき、この場合32
ビットの精度のオペランドがただ16ビットだけの精度
のオペランドによって乗算されてもよい。
【0057】MACユニットはすべてのプロセッサで典
型的に見られるわけではない。しかし信号処理の用途の
ための高性能プロセッサでは、これは典型的に実現され
ている。図9は、MACユニットの従来の実現例を示
す。MACは様々なサイズのうちどのサイズでもあり得
る。これは32ビットの積を形成する乗算器における1
6ビット×16ビットのユニットである。この32ビッ
トの積は累算加算器内で第3のオペランドと加算されて
もよく、これは「ガードビット」と呼ばれる余剰の上位
ビットがあるためその積よりも長いかもしれない。
【0058】図9に示されるように、入力オペランドは
16ビットであって、X0からX15およびY0からY
15で表わされる。これらは32ビットの積Zを発生
し、これはフィードバックオペランドFに加えられても
よい。この場合、Fは40ビットのフィードバックワー
ドまたはオペランドを表わすF0からF39として示さ
れる。これが40ビットなのは、積を保持するのに32
ビット、加えてガードビットのために付加的な8ビット
が必要とされるであろうからである。ガードビットはオ
ーバフローを扱うために含まれている。なぜなら、いく
つかの積が加算されると、オーバフローが起こる可能性
があり、ガードビットはオーバフローを累算してそれら
を保護するからである。典型的にはガードビットの数は
4または8であろう。この例では8ビットが示されてい
るが、いくつかのサイズが可能であろう。累算器の結果
は40ビットの結果A0からA39として示される。
【0059】乗算アレイは乗算器なしで用いることもで
きるし、乗算器とともに用いることもできるということ
に注意すべきである。符号付または符号なしを意味する
別の入力S/Uが、入力オペランドが符号付数として扱
われるべきか符号なし数として扱われるべきかを示すと
いうことが注意されるべきである。当業者は、乗算器の
上方のビットが、入力オペランドが符号付であるか符号
なしであるかによって異なったように扱われるというこ
とを認識するであろう。
【0060】図10は、ハーフワード対オペランドを扱
うためにどのように典型的な16×16アレイが形成さ
れるかを示す。この場合、32ビット入力オペランドX
が2つのハーフワードに分割される。乗算器520のた
めの下方のハーフワードはX0からX15であり、乗算
器515のための上方のハーフワードはX16からX3
1である。Y入力オペランドも2つのハーフワードオペ
ランドに分割される。乗算器520のための下方のハー
フワードはY0からY15であり、乗算器515のため
の上半分はY16からY31である。図10はこのよう
にしてXオペランドのハーフワードオペランドをそれぞ
れYオペランドのハーフワードオペランドと乗算するた
めの接続を表わす。Xの最下位ハーフワードは乗算器5
20においてYの最下位ハーフワードと乗算されるとい
うことに注意されたい。また乗算器515において独立
的かつ同時に、Xの上方のハーフワードがYの上方のハ
ーフワードと乗算される。これらの2つの乗算は、2つ
の積を生じる。乗算器520からの32ビットの積はZ
0からZ31で表わされ、同様に乗算器515の32ビ
ットの結果はW0からW31によって表わされる。2つ
の積はその精度を保つために各々16ビットよりも大き
い。この時点で、ハーフワードの積は独立的なオペラン
ドの表現として保存される。
【0061】乗算器520より出された下方のハーフワ
ードからの積は、累算器530に送られF0からF39
で表わされるフィードバックレジスタで加算される。こ
れにより、A0からA39で表わされる累積された積A
が形成される。同様に上方のハーフワードにおいて、積
はW0からW31によって表わされており、かつ累算器
525の中でG0からG39によって表わされるフィー
ドバックレジスタに加算されて40ビットの結果Bを形
成し、この結果はB0からB39で表わされる。これら
の累算器の結果は一般に、乗算の精度を保つためにより
大きい数またはビットで表わされるオペランドとして累
算器の中でより大きい数として保存される。
【0062】フィードバックビットは通常、メモリ(図
2の100)またはより大きい数のビットをストアする
ことのできる特殊なメモリのいずれからでももたらされ
るだろう。典型的なメモリ位置が扱えるのは32ビット
であるが、典型的には累算器ファイルと呼ばれる特殊な
メモリは、スカラ積のために40ビット、またはハーフ
ワード対の積のために80ビットをストアすることがで
きるだろう。この場合スカラオペランドを扱うことので
きる2つの累算レジスタが、ハーフワード対オペランド
のための記憶を形成するのに用いられてもよい。換言す
れば、ハーフワード対演算の2つの40ビットの結果を
ストアするのに2つの40ビット累算器を用いることが
できるだろう。
【0063】MAC相互接続 図11および図12は、スカラオペランドのための16
×32ビット乗算を形成するために、図10のアレイの
2つの16ビット乗算器がどのように相互接続され得る
かを示す。この例では、乗算器アレイは加算器列として
実現される。最下位乗算器アレイ610のキャリー−ア
ウト605は、上位乗算器アレイ600の加算器にキャ
リー入力として与えられる。さらに、上位乗算器アレイ
600の最下位端に形成される合計ビット606は、下
位乗算器アレイ610の加算器の最上位端に与えられ
る。
【0064】他の接続は、累算器615および605に
生ずる。積の下位部分を表わす累算器615は32ビッ
トに制限され、上位8ガードビットは使用されない。3
2ビットのキャリーアウトは上位40ビット累算器60
5のキャリー入力に与えられ、その結果はB39を通る
B0としてここでは示される72ビットオペランドであ
る。典型的にはこのオペランドは2つのオペランドとし
てストアされ、下位32ビットは1つの累算器615に
ストアされ、上位40ビットは第2の累算器605にス
トアされる。さらにこの演算では、符号付ビットおよび
符号なしビットのために、入力オペランドXの下位半分
は乗算器610において符号なし数として扱われ、入力
オペランドXの上位16ビットは上位乗算器アレイ60
0において符号付または符号なしオペランドとして扱わ
れる。
【0065】さらに、下位累算器615においては積は
符号なしオペランドとして扱われ、一方上位累算器60
5ではオペランドは符号付数として扱われる。40ビッ
ト累算器は図11および図12のすべての例においては
符号付数として扱われることを付け加えるべきである。
これは、符号なし数でさえも符号付数の正の部分と考え
られ得るようなビットを、累算器の拡張であるガードビ
ットが可能にするからである。ゆえに、拡張累算器にお
ける符号付数は、符号付オペランドと符号なしオペラン
ドの両方を含む。
【0066】図12は、乗算器アレイ600および61
0を構成する加算器間でキャリーおよび合計ビットがど
のように相互作用するかをより詳細に示す。たとえば、
加算器625および635は乗算器アレイ610の一部
として示され、加算器620および630は乗算器アレ
イ600の一部として示される。乗算器アレイ610お
よび600は典型的には加算器の何らかの構成でもって
実現されることが注目されるべきである。特定的な実現
例において、加算器の相互接続は様々な方法でなされる
であろう。図10は加算器の単純なカスケードを示す
が、この同じ技術を、加算器がたとえばブース乗算器ま
たはウォレス・ツリー乗算器におけるように接続される
であろうような他の方法に用いてもよい。図12に示さ
れるように、下位乗算器アレイ610の加算器625
は、上位乗算器アレイ610の対応する加算器620の
キャリー入力に与えられるキャリー−アウト621を与
える。下位乗算器アレイ610は、X−入力の入力オペ
ランドがあたかも符号なしであるかのように演算を行な
う。入力オペランドの符号は特定されて、上位乗算器6
00アレイの上位加算器620および630の符号制御
に用いられる。
【0067】さらに加算器は、それらが乗算器の最下位
ビットから乗算器の最上位ビットにオフセットされるよ
うな方法で接続されるため、それは合計ビットを再び加
算し戻す機会を与える。より特定的には、加算器625
および620は、Yiとされる、乗算器のより下位のビ
ットに対応する。加算器635および630は、Y(i
+1)とされる、乗算器の次のより上位のビットに対応
する。このオフセットは、加算器635の入力B0に与
えられる加算器625の出力S1、および加算器635
の入力B14に与えられる加算器625のS15として
見られ得る。この1ビットのオフセットは加算器620
からの入力S0を受取るよう加算器635の入力のB1
5を解放して、最上位乗算器アレイ600からの合計ビ
ットは最下位乗算器アレイ610へ入力ビットとして与
えられる。
【0068】さらに、加算器625からの合計ビットS
0は、640として示される次の部分積に直接進み、さ
らなる乗算器または加算器段を通る必要はない。したが
って、連続する加算器段625、635などからS0を
出力することは、図9の出力ビットZ0からZ15を生
じさせる。加算器635のS0からS15に対応する最
終部分積からの出力ビットは、Z16からZ31の図9
のアレイ610からの出力ビットを生じさせるであろ
う。
【0069】万一乗算器Yが負である場合に補償を与え
るために最終加算器段がどのように用いられ得るかにつ
いては、当業者ならば理解するであろう。
【0070】オペランドデータのタイプの分類 オペランドデータのタイプの分類に関してここで注目す
る。オペランドモードのタイプをスカラまたはベクトル
として特定するための1つのアプローチは命令にその情
報を含むことであるが、代替的アプローチはその情報を
オペランドの付加的なビットにおいて付け加えることで
ある。たとえば、オペランドが32ビットの場合、1つ
の付加的なビットを用いて、オペランドをスカラまたは
ベクトルのいずれかとして識別してもよい。仮にベクト
ル要素の数がはっきりと示されるか、またはベクトル要
素の数が2のような何らかの数であると仮定され得るよ
うな場合、付加的なビットがさらに用いられてもよい。
オペランド処理ユニットは、オペランドに付加される情
報に応答することによってオペランドをスカラとしてま
たはベクトルとして処理するのに適合されるであろう。
【0071】オペランドがスカラであるかまたはベクト
ルであるかは、オペランドが選択される方法によってさ
らに特定されてもよい。たとえば、オペランドのアドレ
スをさらに特定するメモリ位置にあるビットフィールド
に、情報が含まれてもよい。
【0072】2つのオペランドが処理ユニットによって
処理され、モード情報がその2つのオペランドにおいて
異なる場合には、混合されたモード演算を処理するため
に当業者によって処理ユニットに規定が設定されてもよ
い。たとえば、ベクトルオペランドおよびスカラオペラ
ンドを伴うADD演算は、処理ユニットによって、スカ
ラからベクトルを形成し、必要ならば切捨て、次いでベ
クトル演算を行なうことによって処理されてもよい。
【0073】空間ハードウェアに対する代替としてのタ
イムシェアリング 実現手段をタイムシェアリングすることは空間に分散す
る実現手段の代用にしばしばなり得ることは、当業者に
は理解されるであろう。たとえば、空間に分散されるベ
クトル処理ユニットにおいて多重加算器を効果的に実現
するのに、1つのベクトル加算器が何度も用いられても
よい。ハードウェアの多重化および非多重化を用いて、
入力オペランドおよび結果を順序づけることも可能であ
る。付加的なサポートハードウェアを有するベクトル加
算器をさらに用いて、スカラオペランドを処理するのに
分散ベクトル加算器が相互接続され得る方法と類似の態
様でスカラオペランドをばらばらに処理することも可能
である。サポートハードウェアは、ベクトル演算処理素
子間を通る中間結果を処理するのに用いられる。
【0074】この発明の上記の説明に留意して、この発
明の空間ベクトルデータ経路を組込む例示のRISC型
プロセッサがこれより説明される。以下のプロセッサシ
ステムは、当業者がこの発明を組込むであろう方法の一
例にすぎないことに注意されたい。他の例は、記載され
るこの発明に基づく、それらの有利なアプリケーション
を見出すであろう。
【0075】この発明を組込む例示的プロセッサ この発明を組込む演算処理素子の機能図を示す図13を
参照する。以下の説明は特定のビット幅を参照するが、
それらは例示のためであり、この発明の教示に従って他
の幅が容易に構成され得ることを、当業者は理解するで
あろう。
【0076】図13を参照すると、図示されるデータ処
理ユニットを制御するために、2つのソースオペランド
および1つの宛先オペランドを特定することのできる命
令が用いられる。
【0077】オペランドは典型的にはレジスタにおよび
データメモリ(200)にストアされる。演算命令、論
理命令、およびシフト命令がALU240およびMAC
230においてレジスタ空間からのオペランドを用いて
実行され、その結果はレジスタ空間に戻される。レジス
タ空間はレジスタファイル220と幾つかの他の内部レ
ジスタ(図示せず)とから構成される。レジスタ空間に
ストアされるオペランドは、32ビットワードまたはハ
ーフワード対のいずれかである。オペランドは、ロード
およびストア命令によってレジスタ空間とメモリ200
との間を、または既に記載したようにレジスタ空間と自
動メモリアクセスユニットであるストリーマ210との
間を往復する。
【0078】図14を参照すると、ALU240の機能
ブロック図が示される。ALUは加算器410、420
とバレルシフタ470とから構成される。一般に、AL
U命令は、レジスタ空間から2つのオペランドをとり、
レジスタ空間にその結果を書込む。ALU命令は、各ク
ロックサイクルを実行することができ、ALUパイプに
おいて僅か1つの命令クロックサイクルを必要とするだ
けである。
【0079】加算器410、420およびシフタ470
は、ワードまたはハーフワード対オペランドを用いて演
算を行なう。符号付オペランドは2の補数表記法で表わ
される。現在、符号付、符号なし、小数、および整数オ
ペランドが、ALU演算のための命令によって特定可能
である。
【0080】加算器 加算器(410、420)はワードおよびハーフワード
対で加算および論理演算を行なう。ハーフワード対演算
の場合、加算器410、420は半分のものが2つある
ものとして機能する。下半分420はハーフワード対の
下位オペランド460を用いて演算を実行し、上半分4
10は同じ演算をハーフワード対の上位オペランド45
0を用いて実行する。ハーフワード対モードにある場合
は、2つの加算器410、420は本質的に互いから独
立している。32ビット論理ユニット440は、下の加
算器420から上の加算器410へ情報を送り、2つの
加算器がワードモードで動作しているときには情報を逆
に送るために用いられる。
【0081】加算器演算は、2つのキャリー(CUおよ
びCL)、2つのオーバフロー(VUおよびVL)、お
よび2つのゼロ(ZUおよびZL)条件コードビットに
影響する。CUはワード演算のための桁上げフラグであ
り、CUおよびCLはハーフワード対演算のための桁上
げフラグである。同様に、VUはワード演算におけるオ
ーバフローを示し、VUおよびVLはハーフワード対演
算におけるオーバフローを示す。
【0082】オーバフローフラグに作用するオーバフロ
ーは、加算器演算命令からおよびMACスカラ命令から
結果として生じ得る。オーバフローフラグは、実行され
た命令がたとえ結果を飽和したとしてもセットされる。
一度セットされると、条件コードは、フラグをセットす
ることのできる別の命令があるまで変わらない。
【0083】飽和のない加算器演算命令がオーバフロー
し、誤り例外が可能化されると、誤り例外要求が生ず
る。飽和のあるオーバフローおよび飽和のないオーバフ
ローを示すために、別個の信号がデバッグ論理に送られ
る。
【0084】バレルシフタ 図14を参照すると、1クロックサイクルの間に、バレ
ルシフタは32ビット位置までのワードオペランドにあ
るすべてのビットを左または右のいずれにもシフトさせ
ながら、ゼロ、オペランドの符号ビット、または加算器
の上位桁上げフラグ(CU)を回転または挿入すること
ができる。ハーフワード対演算の場合には、1クロック
サイクルで、シフタは16ビット位置までの両方のハー
フワードを左または右へシフトさせながら、ゼロ、符号
ビット、または加算器の桁上げフラグ(CUおよびC
L)を回転または挿入することができる。
【0085】典型的なシフト/回転演算の場合、バレル
シフタ470は、両方のソースオペランドの位置にある
各ビットを演算によって示される方向に移動させる。各
位置のシフトに対して、バレルシフタ470は、選択さ
れる演算に依って、終わりのビットを回転させるか、ま
たは符号ビット、桁上げフラグ(CUまたはCL)、も
しくはゼロを挿入する。
【0086】たとえば、左回転の場合、ビットは左側へ
シフトされる。ビット31はワードモードではビット0
にシフトされる。ハーフワード対モードの場合には、ビ
ット31はビット16に回転させられ、ビット15はビ
ット0に回転させられる。右回転の場合は、ビットは右
側にシフトされる。ゼロはワードモードではビット31
に挿入される。ハーフワード対モードの場合には、ゼロ
はビット31およびビット15の両方に挿入される。同
様に、キャリー伝搬を伴うシフトでは、桁上げフラグ
(CU)はワードモードではビット31に挿入される。
ハーフワード対モードの場合には、各ハーフワードの桁
上げフラグ(CUおよびCL)はビット31およびビッ
ト15に挿入される。
【0087】次に図15を参照する。デュアルMACユ
ニットは、2つの16×16の積または16×32の積
のいずれをも生ずることができるよう一体的に相互接続
された、2つのMACユニット520、550、57
0、590および510、540、560、580から
構成される。各MACは、16×16乗算アレイ51
0、520と、累算加算器560、570と、累算器レ
ジスタファイル580、590と、スケーラ591とか
ら構成される。
【0088】幾つかの例示的な命令:乗算、累算、乗算
および累算、ユニバーサルハーフワード対乗算、ユニバ
ーサルハーフワード対乗算および累算、ダブル乗算ステ
ップ、ならびにダブル乗算および累算ステップが、図2
8−図36に挙げられる命令のまとめに見られる。
【0089】ワード演算はどちらかのMACユニットで
実行され得る。MACは現在16×16演算であるた
め、MACユニットで用いられる「ワード」は16ビッ
トであることは注目されるべきである。しかしながら、
より便利なアプローチは、ベクトル長1、2、4または
8を用いて演算を表わすことである。したがって、MA
Cにおけるワード演算はベクトル長1と呼ばれることが
でき、一方ハーフワード対演算はベクトル長2となるだ
ろう。宛先累算器を含むMACは、演算を行なうのに現
在用いられているものである。
【0090】ハーフワード対演算は両方のMACユニッ
トを用いる。命令は特定の累算器を宛先累算器として特
定し、これはアドレス指定される累算器となる。アドレ
ス指定される宛先累算器を含むMACは下位のハーフワ
ード対要素で演算を行ない、他方の(「対応する」)M
ACは同じ演算を上位のハーフワード対要素で行なう。
対応するMACからの結果は対応する累算器にストアさ
れ、アドレス指定される累算器と対応する累算器とはそ
れらのそれぞれのレジスタファイルにおいて同じ相対位
置に位置する。
【0091】倍精度演算はハーフワードおよびワードで
行なわれ、この演算は二重MACとして組合せられる2
つのMACによって行なわれる。「上位」MACは計算
の最上位部を行ない、「下位」MACは計算の最下位部
を行なう。
【0092】MACユニットは、整数オペランドまたは
小数オペランド、および符号付または符号なしオペラン
ドをサポートしてもよい。
【0093】累算器レジスタファイル 2つのMACユニットは上位MACおよび下位MACと
呼ばれる。各MACは4つの40ビットのガードされる
累算器レジスタから構成される累算器レジスタファイル
を有し、ALUには合計8つの累算器がある。各ガード
される累算器(AGn)は、最上位端が8ビットのガー
ドレジスタ(Gn)でもって拡張される32ビット累算
器レジスタ(An)から構成される。図16は累算器レ
ジスタファイルのレイアウトを示す。
【0094】ハーフワード対オペランドの累算器は2つ
の累算器にストアされる。ハーフワード対の下位要素
は、いずれかのMACの1つの累算器において、40ビ
ット数として累算される。ハーフワード対の上位要素
は、他方のMACにある対応する累算器において、40
ビット数として累算される(図17は対応するアドレス
を示す)。
【0095】2つの累算器は、倍精度ステップ演算の結
果をストアするためにさらに用いられる。結果の最上位
部は、上位MACのガードされる累算器AGにストアさ
れる。結果の最下位部は、下位MACの累算器Aにスト
アされる。下位MAC累算器のガードビットは使用され
ない。
【0096】各累算器は、レジスタ空間に、上位および
下位累算器アドレスまたは上位および下位冗長アドレス
と呼ばれる2つのアドレスを有する。(累算器nのため
のこれらのアドレスのアセンブリ言語名はそれぞれAn
HおよびAnLである。)どちらのアドレスが使用され
るかということの効果は、レジスタが命令においてどの
ように用いられるかに依存し、これらの効果は以下のサ
ブセクションにおいて詳細に述べられる。
【0097】命令フォーマット(およびアセンブリ言
語)はアドレス指定累算器の幾つかの方法を提供する。
【0098】・レジスタ空間の要素として。各累算器
は、111ないし127の範囲に、アセンブリ言語記号
をARnHおよびARnLとする上位アドレスおよび下
位アドレスを有する。
【0099】・累算器オペランドとして。命令フォーマ
ットは範囲0−7にある数をとり、対応するアセンブリ
言語記号はAn形式である。
【0100】・別々の上位アドレスおよび下位アドレス
を有する累算器オペランドとして。命令フィールドは範
囲0−15にある値をとり、アセンブリ言語フォーマッ
トはAnHまたはAnLである。
【0101】8つのガードレジスタの各々は拡張レジス
タ空間にアドレスを有する(160−167;アセンブ
リ言語記号はAGn形式を有する)。
【0102】このセクションの残りのサブセクション
は、累算器およびガードレジスタの、命令としての取扱
いを特定する。レジスタがソースであるかまたは宛先で
あるか、および演算の要素がワードであるかまたはハー
フワード対であるかによって、多数の特別な例がある。
【0103】1.ワードソースオペランドとしての累算
上位累算器アドレスは累算器Anの上位32ビットを小
数ワードオペランドとして特定し、下位アドレスはAn
の下位32ビットを整数ワードオペランドとして特定す
る。プロセッサの現在のバージョンでは、累算器は32
ビットの長さなので、両方のアドレスとも同じ32ビッ
トを参照する。しかしながら、一般的なプロセッサアー
キテクチャはより長い累算器を可能にする。ガードビッ
トは、累算器(アセンブリ言語An)を32ビットソー
スオペランドとして用いる命令によって無視される。命
令が、ガードされる累算器(アセンブリ言語AGn)を
用いることを、たとえば累算レジスタのためにまたはス
ケーラへの入力として特定する場合には、ガードビット
は40ビットソースオペランドに含まれる。
【0104】バス構造は、現在、各MACからの1つの
累算器レジスタが任意の所与の命令において明示される
ソースオペランドとして用いられることを可能にする。
【0105】累算器が乗算演算のためのソースオペラン
ドとして選択されると、32ビットすべてが累算器によ
って提示される。命令はさらに、整数/小数オプション
によって、乗算アレイへの入力のための下位または上位
ハーフワードを選択する。
【0106】2.ハーフワード対ソースオペランドとし
ての累算器 ハーフワード対の各要素は、累算器に、あたかもワード
オペランドであるかのように保持される。ハーフワード
対の2つの要素は、別個のMACにある対応する累算器
にストアされる。それらのそれぞれのMAC内で累算器
レジスタとしてまたはスケーラへの入力として用いられ
るときは、それらは40ビットソースオペランドとして
用いられる。
【0107】それ以外の場合には、要素はハーフワード
対オペランドで2つのハーフワードとしてアセンブルさ
れる。ハーフワード対ソースオペランドが上位累算器ア
ドレスである場合には、各要素に対し累算器の上位ハー
フワードが用いられる。下位累算器アドレスが用いられ
る場合には、下位ハーフワードが用いられる。アドレス
指定される累算器は下位ハーフワードを与え、対応する
累算器は上位ハーフワードを与える。いずれのMACも
ハーフワード対のいずれの要素をも供給することができ
る。
【0108】3.倍精度ソースオペランドとしての累算
累算器は倍精度ステップ演算においてのみ精度ソースオ
ペランドのために用いられる。アドレス指定される累算
器は最下位32ビットを与え、対応するガードされる累
算器は最上位40ビットを与える。
【0109】4.ソースオペランドとしてのガードレジ
スタ 8ビットガードレジスタ(Gx)は符号拡張整数として
拡張レジスタ空間から直接アクセスすることができる。
ガードレジスタがハーフワード対演算のソースオペラン
ドである場合、アドレス指定されるガードは最下位ハー
フワードオペランドとなり、対応するガードは最上位ハ
ーフオペランドとなる。両方の例において、ガードレジ
スタは16ビットに符号拡張される。
【0110】5.ワード宛先オペランドとしての累算器 MACを用いるワード演算では、乗算演算の32ビット
結果は、宛先累算器にストアされ、そのガードレジスタ
を介して符号拡張される。累算演算の40ビット結果は
宛先ガード累算器にストアされる。
【0111】他の、レジスタからレジスタへの命令で
は、結果は、宛先累算器に移動させられ、そのガードレ
ジスタを介して符号拡張される。
【0112】6.ワード対宛先オペランドとしての累算
ワード対のデータタイプの変換を特定する累算器を目標
とするロード命令では、下位メモリアドレスからのワー
ドはアドレス指定される累算器にロードされ、より上位
のメモリアドレスからのワードの最下位バイトは累算器
のガードレジスタにロードされる。
【0113】7.ハーフワード対宛先オペランドとして
の累算器 2つのMACユニットを用いるハーフワード対演算で
は、各MACの結果はその累算器ファイルにストアされ
る。宛先累算器を含むMACは下位のハーフワード対要
素を処理し、その40ビット結果はそのガードされる累
算器(AG)にストアされる。対応するMACは上位の
ハーフワード対要素を処理し、その40ビット結果は対
応するガードされる累算器(AGC)にストアされる。
【0114】他の、レジスタからレジスタへの命令で
は、宛先累算器のために選択される特定の累算器アドレ
スが、結果をどのようにストアするかを判断する。上位
アドレスが用いられる場合には、最下位ハーフワード
は、選択される累算器の最上位半分にロードされ、右側
へゼロ拡張され、そのガードレジスタを介して符号拡張
される。最上位ハーフワードは、対応する累算器の最上
位半分にロードされ、右側へゼロ拡張され、そのガード
レジスタを介して符号拡張される。下位アドレスが用い
られる場合には、最下位ハーフワードは、選択される累
算器の最下位半分にロードされ、選択される累算器の最
上位半分を介し、次いでそのガードレジスタを介して符
号拡張される。最上位ハーフワードは、対応する累算器
の最下位半分にロードされ、上述のように符号拡張され
る。
【0115】8.倍精度オペランドとしての累算器 倍精度乗算ステップ演算の結果の最下位32ビットは宛
先累算器にストアされ、最上位40ビットは対応するガ
ードされる累算器にストアされる。宛先累算器のガード
ビットはすべてゼロにセットされる。
【0116】9.宛先オペランドとしてのガードレジス
ガードレジスタが宛先オペランドである場合、結果の8
つの最下位ビットはアドレス指定されるガードレジスタ
にストアされる。ガードレジスタがハーフワード対演算
の宛先オペランドとしてもちいられる場合には、結果の
8つの最下位ビットはアドレス指定されるガードレジス
タにストアされ、上位ハーフワードの8つの最下位ビッ
トは対応するガードレジスタにストアされる。
【0117】乗算アレイ ここで図15を参照する。各MACのための乗算アレイ
または乗算ユニットは、2つの16ビット入力から32
ビットの積を生ずる。符号付および符号なし入力、整数
および小数入力は、任意の組合せで乗算されてもよい。
整数入力の場合、ソースオペランドの最下位ハーフワー
ドが用いられる。小数入力の場合は、最上位ハーフワー
ドが用いられる。図18は入力のスケーリングを示し、
図19は出力スケーリングを示す。
【0118】2つのワードオペランドまたは1つのワー
ドおよび1つの即値オペランドが乗算される場合には、
宛先累算器を含むMACのみが用いられる。2つのHP
オペランドまたは1つのHPおよび1つの即値オペラン
ドが乗算される場合には、両方のMACが用いられ、宛
先累算器を含むMACは下位のHP要素を乗算する。
【0119】ともに用いられる2つの乗算アレイは、図
18に従ってスケーリングされる1つの16ビット入力
と1つの32ビット入力とから48ビットの積を生ず
る。この積は、図20および図21に従ってスケーリン
グされる。
【0120】乗算飽和 −1.0が累算なしで(16ビットの符号付小数とし
て)−1.0によって乗算される場合、結果(+1.
0)は飽和して、ガードビットへのオーバフローを防
ぐ。最大の正の数は累算器(A)に置かれ、ガードビッ
トはゼロにセットされる。乗算命令が累算を含む場合に
は、結果は飽和せず、代わりに完全な結果が宛先ガード
累算器において累算されそこに置かれる。
【0121】乗算スケーリング 図18、図19、図20および図21は、乗算演算のた
めのソースオペランドおよび結果のスケーリングを示
す。表は、小数点の想定された位置および任意の符号ビ
ットの処理を示す。
【0122】図18は乗算演算のためのソースオペラン
ドのスケーリングを示す。図19は32ビットの積のた
めのスケーリングを示す。図20および図21は48ビ
ットの積のためのスケーリングを示す。(図20(a)
および(b)は、下位および上位MACにおいてそれぞ
れ右寄せされる積のスケーリングを示し、同様に図21
(a)および(b)は左寄せされた積のスケーリングを
示す。)累算加算器 図15を参照すると、各MACは、累算器に入力を加算
することのできる(または累算器から入力を減算するこ
とのできる)累算加算器を含む。考えられ得る入力は、
乗算アレイからの積、即値オペランド、いずれかのMA
Cからの累算器、またはワードもしくはハーフワード対
含むレジスタである。
【0123】累算初期化特性は、ステータスレジスタ
(ST)(図示せず)のIMAC(抑止MAC累算)ビ
ットによって制御される。乗算/累算演算を行なう命令
が実行され、IMACビットが真(=1)である場合に
は、宛先累算器は入力オペランドに初期化され、IMA
Cビットは偽(=0)にリセットされる(実際には、宛
先累算器は、入力が累算される前に0にセットされ
る)。
【0124】同様の初期化および丸め特性は、ステータ
スレジスタのIMARビットによって制御される。IM
ARビットが真である間に、累算加算器演算を行なう命
令が実行されると、累算レジスタは丸め係数によって置
き換えられ、宛先累算器は入力オペランドに切上げビッ
トを加えたものに初期化され、IMARビットは偽にリ
セットされる。丸め係数は、下位ハーフワードの最上位
ビットにある1を除き、すべて0である。
【0125】いくつかの乗算命令は、累算加算器におい
て実行される丸めオプションを含む。丸められた結果は
宛先累算器の上位ハーフワードに置かれ、ゼロは下位ハ
ーフワードに置かれる。結果は、下位ハーフワードと上
位ハーフワードとの間に小数点を有すると考えられるべ
きであり、結果は最も近い整数に丸められ、下位ハーフ
ワードが1/2である場合には(つまり上位ビットが1
である場合には)、結果は最も近い偶数の整数に丸めら
れる。
【0126】累算加算器のオーバフローはオーバフロー
フラグをセットしない。飽和オプションを有する累算命
令に対してオーバフロー生ずると、ガードされる累算器
はオーバフローの方向に従ってそれの最も大きい正の数
または最も小さい負の数にセットされる。命令が飽和を
特定せず、かつ誤り例外が可能化される場合には、オー
バフローは誤り例外要求を生ずる。飽和を有するオーバ
フローおよび飽和を有しないオーバフローのために、デ
バッグ論理に別個の信号が送られる。
【0127】図22は、累算レジスタに加算されるワー
ドまたは累算器オペランドを示す。図23は、累算レジ
スタにあるハーフワード対に加算される(レジスタまた
は累算器からの)ハーフワード対オペランドを示す。
【0128】図24は、累算レジスタに加算される積を
示す。図25は、累算レジスタにあるハーフワード対に
加算されるハーフワード対の積を示す。
【0129】図26は、右寄せオプションを用いて累算
される48ビットの積を示す。このオプションは、整数
結果が所望される16×32積、または32×32積の
第1のステップに適用できる。
【0130】図27は、左寄せオプションを用いて累算
される48ビット積を示す。このオプションは、小数結
果が所望される16×32積、または32×32積の第
2のステップに適用できる。
【0131】図28−図36は、この発明の空間ベクト
ルデータ経路に従って実現されるであろう演算の命令の
まとめである。
【0132】スケーラ 図15を参照すると、スケーラユニットは、ガードされ
る累算器の全長上で、0ないし8ビット位置の右バレル
シフトを行なうことができる。最上位ガードビットは空
いたビットに伝搬される。
【0133】ガードビットと結果の最上位ビットとがす
べて一致しない場合には、スケーラ命令の間にオーバフ
ローが生ずる。(これらのビットが一致する場合には、
それは、累算器の符号ビットがガードレジスタ全体を通
って伝搬し、累算器のオーバフローはガードビットには
生じなかったことを意味する。) スケーラ命令はオーバフローが生じた際に結果を飽和す
るオプションをサポートする。この例においては、結果
は、オーバフローの方向に依って、最も大きい正の数ま
たは最も小さい負の数に1つの最下位ビットを加えても
のにセットされる(最上位ガードビットは、元の数が正
であったかまたは負であったかを示す。) オーバフローが生じ、飽和が特定されなかったときに、
誤り例外が可能化された場合には誤り例外が生ずる。飽
和のないオーバフローおよび飽和のあるオーバフロー
は、別個の信号でデバッグ論理に報告される。
【0134】累算器を正規化するのに、レジスタへの移
動がスケーリングされる累算器(MAR)を用いてもよ
い。累算器Anを正規化するためには: MAR Rx,AnH,♯8;8ビットでAGnを
スケーリングする MEXP Rc,Rx;指数を測定する SUBRU.W.SAT Rc,Rc,♯8;正規
化に必要なシフト数を計算する MAR Rx,AnH,Rc;累算器の内容を正規
化する このシーケンスの後、Rcはガードされる累算器を正規
化するのに必要なシフト数を含み、Rxは正規化された
結果を含む。
【0135】この発明は図1−図36を参照して記載さ
れてきたが、この発明の教示は当業者によって決定され
るようなさまざまな処理スキームに適用されてもよいこ
とが理解される。
【図面の簡単な説明】
【図1】(a)は、従来の単一命令、多重データ(SI
MD)コンピュータの概念的な図である。(b)はSI
MDコンピュータに用いられる処理素子の単純な図であ
る。
【図2】この発明を組込むであろうプログラマブルプロ
セッサの一般化された図である。
【図3】(a)は、処理ユニットのためのALUに組込
まれるであろう従来の加算器の模式図である。(b)お
よび(c)は、この発明を実現するであろう加算器の模
式図である。
【図4】(a)は、処理ユニットのためのALUに組込
まれるであろう従来の論理ユニットの模式図である。
(b)および(c)は、この発明を実現するであろう論
理ユニットの模式図である。
【図5】(a)および(b)は、この発明を実連するで
あろう従来のシフタの模式図である。
【図6】この発明を組込むであろうシフタの図である。
【図7】この発明を組込むであろうシフタの図である。
【図8】この発明を組込むであろうシフタの図である。
【図9】従来の乗算累算器(MAC)の単純な図であ
る。
【図10】MACがこの発明をどのように組込み得るか
を示す図である。
【図11】MACが32×16モードでこの発明をどの
ようにして組込み得るかを示す図である。
【図12】32×16モードのためのMAC内の相互接
続を示す図である。
【図13】この発明を組込む処理素子の単純な機能図で
ある。
【図14】この発明を組込むALUおよびシフタの単純
な図である。
【図15】デュアルMAC構成を示す図である。
【図16】累算器レジスタファイルのレイアウトを示す
図である。
【図17】(a)および(b)は、対応する累算器アド
レスを示す図である。
【図18】乗算演算のためのソースオペランドおよび結
果のスケーリングを示す図である。
【図19】乗算演算のためのソースオペランドおよび結
果のスケーリングを示す図である。
【図20】(a)および(b)は、乗算演算のためのソ
ースオペランドおよび結果のスケーリングを示す図であ
る。
【図21】(a)および(b)は、乗算演算のためのソ
ースオペランドおよび結果のスケーリングを示す図であ
る。
【図22】累算器レジスタに加算されるワードまたは累
算器オペランドを示す図である。
【図23】累算レジスタでハーフワード対に加算される
ハーフワード対オペランドを示す図である。
【図24】累算レジスタに加算される積を示す図であ
る。
【図25】累算レジスタでハーフワード対に加算される
ハーフワード対の積を示す図である。
【図26】右寄せオプションを用いて累算される48ビ
ットの積を示す図である。
【図27】左寄せオプションを用いて累算される48ビ
ットの積を示す図である。
【図28】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図29】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図30】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図31】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図32】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図33】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図34】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図35】この発明に従って実現されるであろう命令の
まとめを示す図である。
【図36】この発明に従って実現されるであろう命令の
まとめを示す図である。
【符号の説明】
100 プログラムおよびデータ記憶ユニット 110 処理ユニット 121 ALU 122 MAC 123 シフタ 124 論理ユニット 130 命令収集ユニット 140 命令フェッチ/デコーダ/シーケンスユニット
フロントページの続き (72)発明者 ケニス・イー・ギャレイ アメリカ合衆国、92714 カリフォルニア 州、アーバイン、フレンズ・コート、 17531 (72)発明者 ジョージ・エイ・ワトソン アメリカ合衆国、92635 カリフォルニア 州、フラートン、ツリービュー・プレイ ス、2952 (72)発明者 ジョン・アール アメリカ合衆国、92680 カリフォルニア 州、タスティン、ウィリアムズ・ストリー ト、15512−ピー

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも1つのオペランドの複数デー
    タ経路処理のためのプログラマブルプロセッサであっ
    て、各オペランドは少なくとも1つの要素を含み、前記
    プロセッサは命令フェッチ/デコード/シーケンス手段
    によって判断される予め定められるシーケンスで命令を
    実行し、前記プログラマブルプロセッサは、 a) 前記命令手段に結合され、前記少なくとも1つの
    オペランドがベクトルおよびスカラモードのうちの1つ
    で処理されるかどうかを各命令に対して特定するための
    モード手段と、 b) 前記モード手段に結合される処理ユニットとを含
    み、前記処理ユニットは、前記少なくとも1つのオペラ
    ンドを受取り、前記モード手段によって特定される前記
    命令に応答して前記ベクトルおよびスカラモードのうち
    の1つにある前記少なくとも1つのオペランドを処理
    し、前記ベクトルモードは複数の要素が前記オペランド
    内にあることを前記処理ユニットに示し、前記スカラモ
    ードは1つの要素が前記オペランド内にあることを前記
    処理ユニットに示す、プログラマブルプロセッサ。
  2. 【請求項2】 前記処理ユニットは、 a) 前記モード手段からの命令に応答し、前記少なく
    とも1つのオペランドにある各それぞれの要素を同時並
    列処理して、前記ベクトルモードの各それぞれの要素に
    対する独立した結果を得るための第1のベクトル手段
    と、 b) 前記モード手段からの前記命令に応答し、前記少
    なくとも1つのオペランドにある第1の要素を、前記ベ
    クトルモードの前記オペランドにある少なくともひとつ
    の第2の要素との選択的組合せで処理するための第2の
    ベクトル手段と、 c) 前記モード手段からの前記命令に応答し、前記オ
    ペランドの各それぞれの部分を処理してそれぞれの部分
    的結果を得、各それぞれの部分的結果を併せて前記スカ
    ラモードでスカラ結果を引出すためのスカラ手段とを含
    む、請求項1に記載のプログラマブルプロセッサ。
  3. 【請求項3】 前記第1のベクトル手段およびスカラ手
    段は、 a) 複数の乗算累算器と、 b) 複数のシフタと、 c) 複数の算術ユニットと、 d) 論理ユニットとのうちの少なくとも1つを備え、 各々は、ベクトルオペランド内の少なくともひとつのそ
    れぞれの要素と、スカラオペランドのそれぞれの部分と
    のうちの1つを処理する、請求項2に記載のプログラマ
    ブルプロセッサ。
  4. 【請求項4】 前記スカラ手段は条件付移動を行ない、
    前記第2のベクトル手段と前記スカラ手段とは前記第2
    のベクトルモードにある前記オペランド内の前記第1お
    よび第2の要素の前記選択的組合せに基づいて条件付き
    分岐を行なう、請求項3に記載のプログラマブルプロセ
    ッサ。
  5. 【請求項5】 前記処理ユニットは、 a) 前記ベクトルおよびスカラモードのうちの1つで
    動作する複数の加算器を備え、前記複数の加算器の各加
    算器は前記モード手段によって特定されるベクトルオペ
    ランドからの要素を受取りそれを個別に処理し、前記複
    数の加算器は前記モード手段によって特定されるスカラ
    オペランドを受取ってそれをともに処理し、前記処理ユ
    ニットはさらに、 b) 前記複数の加算器に結合され、前記複数の加算器
    が1つの加算器として前記スカラオペランドを処理する
    よう、キャリーステータスを前記スカラもどで前記複数
    の加算器の各々の間で送るための加算器制御手段を備え
    る、請求項1に記載のプログラマブルプロセッサ。
  6. 【請求項6】 前記複数の加算器は1つの加算器として
    前記スカラオペランドを処理するよう、前記加算器制御
    手段は前記スカラモードで前記複数の加算器の各々の間
    でオーバフローステータスをさらに送る、請求項5に記
    載のプログラマブルプロセッサ。
  7. 【請求項7】 前記処理ユニットは、 a) 前記ベクトルおよびスカラモードのうちの1つで
    動作する複数の乗算累算器(MAC)を備え、各MAC
    は前記モード手段によって特定されるようなベクトルオ
    ペランド内の要素を受取ってそれを別個に同時並列処理
    し、前記複数のMACは前記モード手段によって特定さ
    れるスカラオペランドを受取りそれをともに処理し、前
    記処理ユニットはさらに、 b) 前記MACに結合され、前記モード手段に応答
    し、前記複数のMACを、ベクトルモードでは互いに独
    立して動作させ、スカラモードではともに動作させるた
    めのMAC制御手段を備える、請求項1に記載のプログ
    ラマブルプロセッサ。
  8. 【請求項8】 前記処理ユニットは、 a) 前記ベクトルおよびスカラモードのうちの1つで
    動作する複数の論理ユニットを備え、前記複数の論理ユ
    ニットの各論理ユニットは前記モード手段によって特定
    されるようなベクトルオペランド内の要素を受取ってそ
    れを別個に同時並列処理し、前記複数の論理ユニットは
    前記モード手段によって特定されるスカラオペランドを
    受取ってそれをともに処理し、前記処理ユニットはさら
    に、 b) 前記複数の論理ユニットに結合され、前記複数の
    論理ユニットが1つの論理ユニットとして前記スカラオ
    ペランドを処理するよう、前記スカラモードで前記複数
    の論理ユニットの各々の間でゼロステータスを送るため
    の、論理制御手段を備える、請求項1に記載のプログラ
    マブルプロセッサ。
  9. 【請求項9】 前記処理ユニットは、 a) 前記スカラモードでは1つの統合化されたシフタ
    として、および前記ベクトルモードでは複数のシフタと
    して、選択的に動作するための複数のシフタを備え、前
    記複数のシフタの各々は、演算の第1のモードにある前
    記モード手段に応答し、特定されるベクトルオペランド
    からの要素を受取ってそれを別個に同時並列処理し、前
    記複数のシフタは、第2のモードの演算にある前記モー
    ド手段に応答し、スカラオペランドを受取ってそれをと
    もに処理し、前記処理ユニットはさらに、 b) 前記シフタに結合され、前記複数のシフタが前記
    スカラオペランドを処理するよう、シフトされたオペラ
    ンドビットを前記スカラモードで前記複数のシフタの各
    々の間で送るためのシフタ制御手段を含み、前記シフタ
    制御手段は、前記ベクトルモードでは、前記複数のシフ
    タの各々からシフトされたオペランドビットを送ること
    を不能化する、請求項1に記載のプログラマブルプロセ
    ッサ。
  10. 【請求項10】 スカラおよびベクトルモードの1つで
    オペランドの条件を評価するための比較手段をさらに含
    む、請求項1に記載のプログラマブルプロセッサ。
  11. 【請求項11】 前記比較手段は命令実行のシーケンス
    を修飾するために各オペランドの条件を評価する、請求
    項10に記載のプログラマブルプロセッサ。
  12. 【請求項12】 第1のオペランドは前記比較手段に基
    づいて第1の記憶位置から第2の記憶位置へ条件付きで
    移動され、前記比較手段は、第1のオペランド内の対応
    する要素が移動されるかどうかを判断するために第2お
    よび第3のオペランド内の対応する要素を各々が比較す
    る複数のサブ比較器を含む、請求項10に記載のプログ
    ラマブルプロセッサ。
  13. 【請求項13】 前記モード手段は、各々の命令が命令
    単位でベクトルおよびスカラモードのうちの1つを特定
    するよう、各命令内にフィールドとして含まれる、請求
    項1に記載のプログラマブルプロセッサ。
  14. 【請求項14】 前記モード手段は各命令内にビットフ
    ィールドとして含まれる、請求項13に記載のプログラ
    マブルプロセッサ。
  15. 【請求項15】 各オペランド内に少なくとも1つの要
    素を有するオペランドをストアするためのデータメモリ
    と、実行のための命令をストアするための命令メモリ
    と、命令手段と、複数の算術論理ユニット(ALU)と
    に結合される汎用コンピュータにおける、複数データデ
    ジタル信号処理を行なうための構成であって、 a) 前記命令メモリと前記命令手段とに結合され、オ
    ペランドが前記処理ユニットによってベクトルモードお
    よびスカラモードのうちの1つとして処理されるかどう
    かを各命令において特定するためのモード手段と、 b) 前記モード手段に応答し、前記ALUを、スカラ
    オペランドの場合は第1のモードで1つのユニットとし
    てともに動作させ、ベクトルオペランドの場合には各ユ
    ニットが第2のモードにある状態で個々の演算ユニット
    とて独立して動作させることを選択的に行なうためのA
    LU制御手段と、 c) 前記ALU制御手段と前記ALUとに結合され、
    スカラオペランドの場合には前記ALUの各々の間でキ
    ャリー条件を選択的に送り、ベクトルオペランドの場合
    は前記ALUの各々のための前記キャリー条件を無視す
    るための、キャリー条件手段とを備える、各オペランド
    内に少なくとも1つの要素を有するオペランドをストア
    するためのデータメモリと、実行のための命令をストア
    するための命令メモリと、命令手段と、複数の演算論理
    ユニット(ALU)とに結合される汎用コンピュータに
    おける、複数データデジタル信号処理を行なうための構
    成。
  16. 【請求項16】 各々がその中に少なくとも1つの要素
    を有するオペランドをストアするためのデータメモリ
    と、実行のための命令をストアするための命令メモリ
    と、命令手段と、第1の乗算累算器(MAC)とに結合
    される汎用コンピュータにおける、複数データデジタル
    信号処理を行なうための構成であって、 a) 前記命令メモリと前記命令手段とに結合され、オ
    ペランドが前記処理ユニットによってベクトルモードお
    よびスカラモードのうちの1つとして処理されるかどう
    かを各命令において特定するためのモード手段と、 b) 複数のMACと、 c) 前記第1および複数のMACの各々に結合され、
    前記モード手段に応答し、前記第1および複数のMAC
    の各々を、ベクトルモードでは互いに独立して動作さ
    せ、スカラモードではともに動作させることを選択的に
    行なうためのMAC制御手段とを備える、複数データデ
    ジタル信号処理を行なうための構成。
  17. 【請求項17】 ALUによるオペランドの処理は、 a) 前記オペランド内の各独立した要素に結合される
    各条件コードの組と、 b) 前記オペランド内の組合せにおける選択的組合せ
    の、条件コードの複数の組と、 c) 前記スカラオペランドのための条件コードの前記
    1つの組とのうちの1つに基づいて修飾される、請求項
    15に記載の構成。
  18. 【請求項18】 前記命令の実行のシーケンスは、 a) 前記オペランド内の各独立した要素に関連する各
    条件コードの組と、 b) 選択的組合せにある条件コードの複数の組とのう
    ちの1つによって、第1の命令から第2の命令に修飾さ
    れる、請求項15に記載の構成。
  19. 【請求項19】 オペランドは、 a) 前記オペランド内の各々の独立した要素と関連す
    る各条件コードの組と、 b) 選択的組合せにある条件コードの複数の組と、 c) 前記スカラオペランドのための条件コードの前記
    1つの組とのうちの1つに基づいて、第1の記憶位置か
    ら第2の記憶位置へ選択的に移動される、請求項18に
    記載の信号プロセッサ。
  20. 【請求項20】 a) 前記スカラモードでは1つの統
    合されたシフタとして、および前記ベクトルモードでは
    複数のシフタとして、選択的に動作するための複数のシ
    フタをさらに含み、前記複数のシフタの各々は、演算の
    第1のモードにある前記モード手段に応答し、特定され
    るようなベクトルオペランドからの要素を受取ってそれ
    を独立して処理し、前記複数のシフタは、第2のモード
    演算にある前記モード手段に応答し、スカラオペランド
    を受取ってそれをともに処理し、さらに、 b) 前記シフタに結合され、前記複数のシフタが前記
    スカラオペランドを処理するよう、シフトされたオペラ
    ンドビットを前記スカラモードで前記複数のシフタの各
    々の間で送るためのシフタ制御手段を含み、前記シフタ
    制御手段は前記ベクトルモードでは前記複数のシフタの
    各々からシフトされたオペランドビットを送ることを不
    能化する、請求項15に記載の構成。
  21. 【請求項21】 汎用コンピュータを用いる複数データ
    経路計算のためのプログラマブルプロセッサであって、
    前記汎用コンピュータは、オペランドをストアするため
    のデータメモリと、データメモリからオペランドを転送
    するためのメモリアクセスバスと、実行のための命令を
    ストアするための命令メモリと、前記命令メモリに結合
    され前記命令のフェッチ、デコードおよび順序付けのた
    めの命令手段とを含み、前記プログラマブルプロセッサ
    は、 a) 前記命令手段に結合され、データメモリからのオ
    ペランドが単一データ経路モードおよび複数データ経路
    モードのうちの1つで処理されるかどうかを各命令にお
    いて特定するためのモード手段を含み、 b) 各データ経路は、 演算ユニットと、 乗算累算器(MAC)とを含み、前記プログラマブルプ
    ロセッサはさらに、 c) 前記モード手段に応答し、各データ経路にある前
    記算術ユニットを、スカラオペランドの場合は1つのモ
    ードで1つのユニットとしてともに動作させ、ベクトル
    オペランドの場合は各ユニットが別のモードにある状態
    で個々の算術ユニットとして独立して動作させることを
    選択的に行なうための演算制御手段と、 d) 前記算術制御手段と各経路にある前記算術ユニッ
    トとに結合され、スカラオペランドの場合には前記算術
    ユニットの各々の間でキャリー条件を選択的に送り、ベ
    クトルオペランドの場合には各算術ユニットに対応する
    前記キャリー条件を不能化するためのキャリー条件手段
    と、 e) 各MACに結合され、前記モード手段に応答し、
    ベクトルモードでは各MACを互いから独立させて動作
    させ、スカラモードではともに動作させることを選択的
    に行なうためのMAC制御手段とを含む、プログラマブ
    ルプロセッサ。
  22. 【請求項22】 a) 前記スカラモードでは1つの統
    合されたシフタとして、および前記ベクトルモードでは
    複数のシフタとして、選択的に動作するための複数のシ
    フタをさらに含み、前記複数のシフタの各々は、演算の
    第1のモードにある前記モード手段に応答し、特定され
    るベクトルオペランドからの要素を受取ってそれを独立
    して処理し、前記複数のシフタは、第2のモード演算に
    ある前記モード手段に応答し、スカラオペランドを受取
    ってそれをともに処理し、さらに、 b) 前記シフタに結合され、前記複数のシフタが前記
    スカラオペランドを処理するよう、シフトされたオペラ
    ンドビットを前記スカラモードで前記複数のシフタの各
    々の間で送るためのシフタ制御手段を含み、前記シフタ
    制御手段は前記ベクトルモードでは前記複数のシフタの
    各々からシフトされたオペランドビットを送ることを不
    能化する、請求項21に記載のプログラマブルプロセッ
    サ。
  23. 【請求項23】 プログラマブルプロセッサを用いて複
    数データ経路を介してデジタル信号処理を行なう方法で
    あって、前記プログラマブルプロセッサは、少なくとも
    1つの要素を各々が有する少なくとも1つのオペランド
    で動作し、前記プログラマブルプロセッサは複数のサブ
    処理ユニットを有し、前記方法は、 a) 前記プログラマブルプロセッサによって実行され
    るべき命令の予め定められるシーケンスの中から命令を
    供給するステップと、 b) 前記命令が、前記プログラマブルプロセッサによ
    る少なくとも1つのオペランド上での処理のスカラおよ
    びベクトルモードのうちの1つを生じさせるステップと
    を含み、前記スカラモードは前記少なくとも1つのオペ
    ランド内に1つの要素があることを前記プログラマブル
    プロセッサに示し、前記ベクトルモードは前記少なくと
    も1つのオペランド内に複数のサブ要素があることを前
    記プログラマブルプロセッサに示し、前記方法はさら
    に、 c) スカラモードの場合には、前記プログラマブルプ
    ロセッサの各サブ処理ユニットは、前記命令に応答し、
    前記オペランドのそれぞれの部分を受取って処理して部
    分的および中間結果を発生するステップと、 d) 各サブ処理ユニットは、その中間結果を前記複数
    のサブ処理ユニットの間で送り、その部分的結果を他の
    サブ処理ユニットと併せて前記オペランドのための最終
    結果を発生するステップと、 e) 第1の条件コードを発生して前記最終結果に対応
    するステップと、 f) ベクトルモードの場合には、前記プログラマブル
    プロセッサの各サブ処理ユニットは、前記命令に応答
    し、前記オペランド内の前記複数のサブ要素からそれぞ
    れのサブ要素を受取ってそれを処理して、各中間結果は
    不能化されかつ各部分的結果はその対応する要素のため
    の最終結果を表わす状態で部分的および中間結果を発生
    するステップと、 g) 複数の第2の条件コードを、その各々が独立した
    結果に対応する状態で発生するステップとを含む、デジ
    タル信号処理方法。
  24. 【請求項24】 汎用コンピュータを介する複数データ
    経路計算のためのプログラマブルプロセッサであって、
    前記汎用コンピュータは、オペランドをストアするため
    のデータメモリと、プログラム命令をストアするための
    命令メモリと、命令手段とを含み、前記プログラマブル
    プロセッサは、 前記命令手段に結合され、データメモリからのオペラン
    ドがベクトルおよびスカラモードのうちの1つとして処
    理されるかどうかを特定するためのモード手段を含み、
    ベクトルモードは各オペランド内の複数の要素を判断
    し、スカラモードはオペランド内の1つの要素を判断
    し、前記プログラマブルプロセッサはさらに、 モード手段とデータメモリとに結合される複数の処理ユ
    ニットを含み、各処理ユニットはオペランドのそれぞれ
    の要素を受取りそれを処理して、部分的結果および伝搬
    情報を得るために処理し、前記プログラマブルプロセッ
    サはさらに、 前記ベクトルモードで動作し、前記処理ユニットに結合
    され、各部分的結果を各要素の処理のその最終結果とし
    て送り、伝搬情報を無視するためのベクトル手段と、 前記スカラモードで動作し、前記処理ユニットに結合さ
    れ、各部分的結果と伝搬情報とを併せて各オペランドの
    処理のその最終結果を得るためのスカラ手段とを含む、
    プログラマブルプロセッサ。
  25. 【請求項25】 各処理ユニットは処理条件を保存する
    ための条件コードの組を備え、条件コードの前記組は、 a) 個々に第1のベクトルモードにある各組と、 b) 第2のベクトルモードにある別の組との選択的組
    合せにある各組と、 c) 前記スカラモードで組合されるスカラオペランド
    のすべての組とのうちの1つによって、プログラマブル
    プロセッサの処理を修飾する、請求項24に記載のプロ
    セッサ。
  26. 【請求項26】 各処理ユニットは、 a) 算術ユニットと、 b) 乗算累算器と、 c) 論理オペレータと、 d) バレルシフタとのうちの少なくとも1つを備え
    る、請求項25に記載のプロセッサ。
  27. 【請求項27】 前記モード手段は前記少なくとも1つ
    のオペランドにあるビットフィールドによって特定され
    る、請求項1に記載のプログラマブルプロセッサ。
  28. 【請求項28】 前記モード手段は、前記少なくとも1
    つのオペランドが選択される方法によって特定される、
    請求項1に記載のプログラマブルプロセッサ。
  29. 【請求項29】 前記モード手段は、前記少なくとも1
    つのオペランドのアドレスをさらに特定するメモリ位置
    にあるビットフィールドにおいて特定される、請求項2
    8に記載のプログラマブルプロセッサ。
  30. 【請求項30】 前記モード手段に応答し、第2のオペ
    ランドがスカラモードにある状態で、第1のオペランド
    の各それぞれの要素をベクトルモードで処理するための
    第3のベクトル手段をさらに含む、請求項2に記載のプ
    ログラマブルプロセッサ。
JP10964295A 1994-05-05 1995-05-08 プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良 Expired - Lifetime JP3889069B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US23855894A 1994-05-05 1994-05-05
US238558 1994-05-05

Publications (2)

Publication Number Publication Date
JPH0850575A true JPH0850575A (ja) 1996-02-20
JP3889069B2 JP3889069B2 (ja) 2007-03-07

Family

ID=22898434

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10964295A Expired - Lifetime JP3889069B2 (ja) 1994-05-05 1995-05-08 プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良

Country Status (4)

Country Link
US (1) US5778241A (ja)
EP (1) EP0681236B1 (ja)
JP (1) JP3889069B2 (ja)
DE (1) DE69519449T2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204356A (ja) * 2007-02-22 2008-09-04 Fujitsu Ltd リコンフィギャラブル回路
JP2010501937A (ja) * 2006-08-18 2010-01-21 クゥアルコム・インコーポレイテッド スカラー/ベクトル命令を使用したデータ処理システムおよび方法
US10056906B1 (en) 2017-02-06 2018-08-21 Fujitsu Limited Shift operation circuit and shift operation method
USRE48845E1 (en) 2002-04-01 2021-12-07 Broadcom Corporation Video decoding system supporting multiple standards

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5761524A (en) * 1996-03-15 1998-06-02 Renditon, Inc. Method and apparatus for performing and operation multiple times in response to a single instruction
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
KR100267089B1 (ko) * 1996-08-19 2000-11-01 윤종용 스칼라/벡터연산이조합된단일명령복수데이터처리
US6530014B2 (en) * 1997-09-08 2003-03-04 Agere Systems Inc. Near-orthogonal dual-MAC instruction set architecture with minimal encoding bits
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6760880B1 (en) * 1998-09-10 2004-07-06 Ceva D.S.P. Ltd. Scalar product and parity check
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6324638B1 (en) * 1999-03-31 2001-11-27 International Business Machines Corporation Processor having vector processing capability and method for executing a vector instruction in a processor
US6493817B1 (en) * 1999-05-21 2002-12-10 Hewlett-Packard Company Floating-point unit which utilizes standard MAC units for performing SIMD operations
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6732253B1 (en) * 2000-11-13 2004-05-04 Chipwrights Design, Inc. Loop handling for single instruction multiple datapath processor architectures
US6931518B1 (en) 2000-11-28 2005-08-16 Chipwrights Design, Inc. Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
AU2002233500A1 (en) 2001-02-14 2002-08-28 Clearspeed Technology Limited An interconnection system
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6848074B2 (en) * 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
GB2382887B (en) * 2001-10-31 2005-09-28 Alphamosaic Ltd Instruction execution in a processor
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
JP4077252B2 (ja) * 2002-06-28 2008-04-16 富士通株式会社 コンパイラプログラムおよびコンパイル処理方法
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US20040193838A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney Vector instructions composed from scalar instructions
GB0323950D0 (en) * 2003-10-13 2003-11-12 Clearspeed Technology Ltd Unified simid processor
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7586904B2 (en) * 2004-07-15 2009-09-08 Broadcom Corp. Method and system for a gigabit Ethernet IP telephone chip with no DSP core, which uses a RISC core with instruction extensions to support voice processing
US8250348B2 (en) * 2005-05-19 2012-08-21 International Business Machines Corporation Methods and apparatus for dynamically switching processor mode
US20060265555A1 (en) * 2005-05-19 2006-11-23 International Business Machines Corporation Methods and apparatus for sharing processor resources
US8307196B2 (en) * 2006-04-05 2012-11-06 Freescale Semiconductor, Inc. Data processing system having bit exact instructions and methods therefor
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US8423979B2 (en) * 2006-10-12 2013-04-16 International Business Machines Corporation Code generation for complex arithmetic reduction for architectures lacking cross data-path support
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8418154B2 (en) * 2009-02-10 2013-04-09 International Business Machines Corporation Fast vector masking algorithm for conditional data selection in SIMD architectures
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9275014B2 (en) 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US9495154B2 (en) 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9348558B2 (en) 2013-08-23 2016-05-24 Texas Instruments Deutschland Gmbh Processor with efficient arithmetic units
CN105849690B (zh) 2014-07-02 2019-03-15 上海兆芯集成电路有限公司 融合乘积-累加运算的处理器与方法
US9478312B1 (en) * 2014-12-23 2016-10-25 Amazon Technologies, Inc. Address circuit
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US11023231B2 (en) * 2016-10-01 2021-06-01 Intel Corporation Systems and methods for executing a fused multiply-add instruction for complex numbers
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US10678507B2 (en) * 2017-12-22 2020-06-09 Alibaba Group Holding Limited Programmable multiply-add array hardware

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4481580A (en) * 1979-11-19 1984-11-06 Sperry Corporation Distributed data transfer control for parallel processor architectures
JPS59160267A (ja) * 1983-03-02 1984-09-10 Hitachi Ltd ベクトル処理装置
JPS60136872A (ja) * 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
JPS6314275A (ja) * 1986-07-04 1988-01-21 Nec Corp ベクトル演算プロセツサのスカラデ−タ演算方式
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
JPH0454679A (ja) * 1990-06-25 1992-02-21 Nec Corp 演算装置
GB9017600D0 (en) * 1990-08-10 1990-09-26 British Aerospace An assembly and method for binary tree-searched vector quanisation data compression processing
US5247696A (en) * 1991-01-17 1993-09-21 Cray Research, Inc. Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE48845E1 (en) 2002-04-01 2021-12-07 Broadcom Corporation Video decoding system supporting multiple standards
JP2010501937A (ja) * 2006-08-18 2010-01-21 クゥアルコム・インコーポレイテッド スカラー/ベクトル命令を使用したデータ処理システムおよび方法
US8190854B2 (en) 2006-08-18 2012-05-29 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
JP2013175218A (ja) * 2006-08-18 2013-09-05 Qualcomm Inc スカラー/ベクトル命令を使用したデータ処理システムおよび方法
JP2015111428A (ja) * 2006-08-18 2015-06-18 クゥアルコム・インコーポレイテッドQualcomm Incorporated スカラー/ベクトル命令を使用したデータ処理システムおよび方法
JP2008204356A (ja) * 2007-02-22 2008-09-04 Fujitsu Ltd リコンフィギャラブル回路
US10056906B1 (en) 2017-02-06 2018-08-21 Fujitsu Limited Shift operation circuit and shift operation method

Also Published As

Publication number Publication date
JP3889069B2 (ja) 2007-03-07
EP0681236B1 (en) 2000-11-22
EP0681236A1 (en) 1995-11-08
DE69519449D1 (de) 2000-12-28
US5778241A (en) 1998-07-07
DE69519449T2 (de) 2001-06-21

Similar Documents

Publication Publication Date Title
JP3889069B2 (ja) プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良
US8024394B2 (en) Dual mode floating point multiply accumulate unit
KR100291383B1 (ko) 디지털신호처리를위한명령을지원하는모듈계산장치및방법
JP2835103B2 (ja) 命令指定方法及び命令実行方式
US6922716B2 (en) Method and apparatus for vector processing
US5805875A (en) Vector processing system with multi-operation, run-time configurable pipelines
US8074058B2 (en) Providing extended precision in SIMD vector arithmetic operations
JP3750820B2 (ja) パック・データの乗加算演算を実行する装置
EP1049025B1 (en) Method and apparatus for arithmetic operations
JP2683488B2 (ja) 3−1論理演算装置
JPS5811652B2 (ja) 演算ユニツト
US5583806A (en) Optimized binary adder for concurrently generating effective and intermediate addresses
US7558816B2 (en) Methods and apparatus for performing pixel average operations
US5958000A (en) Two-bit booth multiplier with reduced data path width
JP3479385B2 (ja) 情報処理装置
JPS62134763A (ja) 3アドレス・コ−ドの指標づけ装置
US7260711B2 (en) Single instruction multiple data processing allowing the combination of portions of two data words with a single pack instruction
US10042605B2 (en) Processor with efficient arithmetic units
US20090031117A1 (en) Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data
USRE41012E1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP3144859B2 (ja) 算術論理演算装置
JPH0378083A (ja) 倍精度演算方式及び積和演算装置
JP2625510B2 (ja) 計算機システム
US7580968B2 (en) Processor with scaled sum-of-product instructions
JP3547316B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060214

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060515

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061129

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20091208

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20091208

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121208

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121208

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131208

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term