JPH0850575A - Programmable processor,method for execution of digital signal processing by using said programmable processor and its improvement - Google Patents

Programmable processor,method for execution of digital signal processing by using said programmable processor and its improvement

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
Japanese (ja)
Other versions
JP3889069B2 (en
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/en
Application granted granted Critical
Publication of JP3889069B2 publication Critical patent/JP3889069B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or 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)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

PURPOSE: To provide a space vector data path which integrates SIMD schemes to a general purpose programmable processor. CONSTITUTION: A programmable processor includes a mode means which is connected to an instruction means and specifies whether or not an operand is processed for each instruction in one of vector and scalar modes and a processing unit 110 which is connected to the mode means, receives the operand and processes the operand in one of the vector and scalar modes in response to an instruction such that is specified by the mode means. The vector mode shows the processing unit 110 that plural elements exist in the operand and the scalar mode shows the processing unit 110 that a single element exists in the operand.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の分野】この発明は信号プロセッサに関し、より
特定的には空間並列処理能力を備えたデジタル信号プロ
セッサに関する。
FIELD OF THE INVENTION The present invention relates to signal processors, and more particularly to digital signal processors with spatial parallel processing capability.

【0002】[0002]

【発明の背景】近年、コンピュータ技術において、単一
命令多重データ(SIMD)などの並列処理方式を備え
るコンピュータは徐々に認識される割合を獲得してきて
いる。SIMDコンピュータは概念的には図1(a)で
示すことができるものであり、ここでは複数の処理要素
(PE)が1つのメインシーケンサによって監視されて
いる。すべてのPEはメインシーケンサから通信される
同じ命令を受取るが、別々のデータストリームからの異
なったデータの組に対して動作する。図1(b)に示す
ように、各PEはそれ自身の局所メモリを備える中央処
理装置(CPU)として機能する。したがって、SIM
Dコンピュータは各PEのCPUとともに複数の同期さ
れた算述論理ユニットを用いることによって、空間的並
列性を達成することができる。一旦データが各PE内に
存在するようになれば、個々のPEがそのデータを扱う
ことは比較的容易なことであるとはいえ、相互接続(図
示せず)を介してすべてのPE間で分配および通信を行
なうことは、極めて複雑な仕事である。よって、SIM
Dマシンは、通常専用とすることを念頭において設計さ
れており、プログラミングやベクトル化の難しさのため
に、これらのマシンは汎用の用途には望ましくないもの
となっている。
In recent years, in computer technology, computers having parallel processing schemes such as single instruction multiple data (SIMD) have been gradually gaining recognition. The SIMD computer can be conceptually shown in FIG. 1 (a), where a plurality of processing elements (PEs) are monitored by one main sequencer. All PEs receive the same instructions communicated from the main sequencer, but operate on different sets of data from separate data streams. As shown in FIG. 1 (b), each PE functions as a central processing unit (CPU) having its own local memory. Therefore, SIM
The D-computer can achieve spatial parallelism by using multiple synchronized arithmetic logic units with each PE's CPU. Once the data is within each PE, it is relatively easy for an individual PE to handle the data, but across all PEs via interconnections (not shown). Distributing and communicating is a highly complex task. Therefore, SIM
D-machines are usually designed to be dedicated, and programming and vectorization difficulties make these machines undesirable for general purpose applications.

【0003】一方で、SPARC(登録商標)、Pow
erPC(登録商標)、および68000ベースのマシ
ンなど現在の汎用計算機は、典型的には高性能グラフィ
ック処理に際してはそれらの持つ32ビットメモリ空間
をフルに利用してはいない。たとえば、これらのマシン
のバスが32ビットの幅であるのに、映像および画像情
報についてはデータは未だに16ビット幅または8ビッ
トピクセルで処理されるように制限されている。しかし
ながら、これらの汎用マシンは高級言語のソフトウェア
環境におけるプログラミングの便利さのため魅力的であ
る。したがって、デジタル信号処理に応用されるような
SIMDのスピードの利点と、汎用CPUにおけるプロ
グラミングの便利さとの間で、バランスをとることが望
ましい。そうすれば、低性能なSIMDマシンの実現例
であっても、汎用マシンに組込まれたならば、あたかも
複数のスカラCPUが並列に働いているかのように総合
的なスループットが激しく向上するであろう。しかしな
がら、汎用マシンにSIMDが組込まれた場合、高めら
れたスループットは、伝統的なSIMDマシンに見られ
る複数ユニットのスカラCPUと典型的にはかかわりの
ある、シリコンの使用と引替えにもたらされるものでは
ない。
On the other hand, SPARC (registered trademark), Pow
Current general purpose computers such as erPC® and 68000 based machines typically do not fully utilize their 32-bit memory space for high performance graphics processing. For example, while the buses of these machines are 32 bits wide, for video and image information the data is still limited to being processed at 16 bit widths or 8 bit pixels. However, these general purpose machines are attractive because of the convenience of programming in a high level language software environment. Therefore, it is desirable to balance the speed advantages of SIMD as applied to digital signal processing with the programming convenience of general purpose CPUs. Then, even if a low-performance SIMD machine is implemented, if it is incorporated into a general-purpose machine, the overall throughput will be significantly improved as if a plurality of scalar CPUs are working in parallel. Let's do it. However, when SIMD is integrated into a general-purpose machine, the increased throughput comes at the expense of using silicon, typically associated with the multi-unit scalar CPU found in traditional SIMD machines. Absent.

【0004】したがって、コード強調応用およびスピー
ド強調計算のためのSIMD能力を備える汎用プロセッ
サを有することが望ましいだろう。
Therefore, it would be desirable to have a general purpose processor with SIMD capabilities for code enhancement applications and speed enhancement computations.

【0005】本発明の目的は、SIMD方式を汎用CP
Uアーキテクチャに組入れてスループットを高めること
である。
An object of the present invention is to use the SIMD system as a general purpose CP.
Incorporation into the U architecture to increase throughput.

【0006】実質的にシリコンの使用を招くことなくス
ループットを高めることも本発明の目的である。
It is also an object of the present invention to increase throughput without substantially incurring the use of silicon.

【0007】この発明のさらなる目的は、同じ命令実行
速度で各命令において処理されるデータ要素の数に比例
してスループットを増大させることである。
A further object of the invention is to increase throughput in proportion to the number of data elements processed in each instruction at the same instruction execution speed.

【0008】[0008]

【発明の概要】SIMD方式を汎用プログラマブルプロ
セッサに組入れるための空間ベクトルデータ経路が開示
される。プログラマブルプロセッサは、命令手段に結合
され、オペランドがベクトルおよびスカラモードの1つ
において処理されるかどうかを各命令について特定する
ためのモード手段と、モード手段に結合され、オペラン
ドを受取り、モード手段によって特定された命令に応答
して、オペランドをベクトルおよびスカラモードのうち
1つにおいて処理するための処理ユニットとを備え、ベ
クトルモードは処理ユニットに、オペランド内に複数個
の要素があることを示し、スカラモードは処理ユニット
に、オペランド内に1つの要素があることを示す。
SUMMARY OF THE INVENTION A space vector data path for incorporating a SIMD scheme into a general purpose programmable processor is disclosed. The programmable processor is coupled to the instruction means and is coupled to the mode means for identifying for each instruction whether the operand is processed in one of the vector and scalar modes, and coupled to the mode means for receiving the operands and by the mode means. A processing unit for processing the operand in one of a vector and a scalar mode in response to the identified instruction, the vector mode indicating that the processing unit has multiple elements in the operand, Scalar mode indicates to the processing unit that there is one element in the operand.

【0009】本発明はまた、汎用コンピュータを用いて
複数のデータ経路を介しデジタル信号処理を行なう方法
をも開示するものであって、汎用コンピュータは、各オ
ペランドが少なくとも1つの要素を有する状態で複数個
のオペランドをストアするためのデータメモリと、複数
個のサブ処理ユニットを有する処理ユニットとを含む。
この方法は以下のステップを含む。a)処理ユニットに
よって実行されるべき命令の予め定められたシーケンス
の中から命令を提供する。b)命令はオペランドに対す
る処理ユニットによる処理についてスカラモードおよび
ベクトルモードのうち1つを特定する。スカラモードは
オペランド内に1つの要素があることを処理ユニットに
示し、ベクトルモードは複数個のサブ要素がオペランド
内にあることを前記処理ユニット示す。c)スカラモー
ドの場合、処理ユニットにおける各サブ処理ユニットは
命令に応答して処理すべきオペランドのそれぞれの部分
を受取り、部分的中間結果を発生する。d)各サブ処理
ユニットは複数のサブ処理ユニット間にその中間結果を
送り、その部分的結果を他のサブ処理ユニットと合せ
て、オペランドのための最終的な結果を発生する。e)
最終的結果に対応するように第1の条件コードを発生す
る。f)ベクトルモードの場合、処理ユニットにおける
各サブ処理ユニットは命令に応答してオペランド内の複
数個のサブ要素からそれぞれのサブ要素を受取りかつそ
れを処理して、部分的中間結果を発生し、各中間結果は
不能化され、各部分的結果はその対応する要素のための
最終的結果を表わす。g)複数個の第2の条件コードを
発生する。ここで第2の条件コードの各々は独立した結
果に対応する。
The present invention also discloses a method for performing digital signal processing using a general purpose computer via a plurality of data paths, the general purpose computer comprising a plurality of operands, each operand having at least one element. A data memory for storing one operand and a processing unit having a plurality of sub-processing units are included.
The method includes the following steps. a) Providing instructions from among a predetermined sequence of instructions to be executed by the processing unit. b) The instruction specifies one of scalar mode and vector mode for processing by the processing unit for the operand. Scalar mode indicates to the processing unit that there is one element in the operand, and vector mode indicates to the processing unit that there are multiple sub-elements in the operand. c) In scalar mode, each sub-processing unit in the processing unit receives a respective portion of an operand to be processed in response to an instruction and produces a partial intermediate result. d) Each sub-processing unit sends its intermediate result between multiple sub-processing units and combines its partial results with other sub-processing units to generate the final result for the operand. e)
Generate a first condition code to correspond to the final result. f) in vector mode, each sub-processing unit in the processing unit receives and processes each sub-element from a plurality of sub-elements in an operand in response to an instruction to produce a partial intermediate result, Each intermediate result is disabled and each partial result represents the final result for its corresponding element. g) Generate a plurality of second condition codes. Here, each of the second condition codes corresponds to an independent result.

【0010】[0010]

【発明の詳しい説明】一般的な実現例の考察 SIMD方式を汎用マシンに組込む場合、望ましくは考
慮されるべきである問題がいくつかある。
DETAILED DESCRIPTION General Implementation Considerations When incorporating the SIMD scheme into a general purpose machine, there are some issues that should preferably be considered.

【0011】1)スカラまたはベクトルの動作の選択
は、好ましくは、ある期間ベクトルモードに切換わるの
ではなく、命令単位で行なわれるべきである。なぜな
ら、いくつかのアルゴリズムはベクトルサイズが大きい
と容易にベクトル化されないからである。また、ベクト
ル演算が選択される場合、ベクトルの次元を特定しなけ
ればならない。
1) The selection of scalar or vector operation should preferably be done on an instruction-by-instruction basis, rather than switching to vector mode for a period of time. This is because some algorithms are not easily vectorized with large vector sizes. Also, if vector operations are selected, the dimensions of the vector must be specified.

【0012】現在、本発明に従い、スカラ/ベクトルに
ついての情報はSIMD能力を有する各命令内のデータ
タイプ修飾子フィールドによって特定される。たとえ
ば、命令はワードまたはハーフワード対演算を特定する
ことのできる1ビット「経路」修飾子フィールドを特徴
としていてもよい。さらに、より大きいベクトル次元、
たとえば4、8などを選択するために、このフィールド
は好ましくはストリーマコンテキストレジスタ内のデー
タタイプ変換フィールドと組合せられるべきである。ス
トリーマの完全な説明は、「RISCデジタル信号プロ
セッサのためのストリーマ(STREAMER FOR DIGITAL SIG
NAL PROCESSOR )」と題され、その開示がここに引用に
よって援用される、1992年7月23日に提出された
関連の米国特許出願連続番号第917,872号に開示
されている。
Currently, in accordance with the present invention, information about scalars / vectors is specified by a data type modifier field in each instruction that has SIMD capability. For example, an instruction may feature a 1-bit "path" modifier field that can specify a word or halfword pair operation. Furthermore, a larger vector dimension,
This field should preferably be combined with the data type conversion field in the streamer context register, for example to select 4, 8, etc. For a complete description of Streamers, see "STREAMER FOR DIGITAL SIG for RISC Digital Signal Processors".
NAL PROCESSOR) ", the disclosure of which is disclosed in related U.S. Patent Application Serial No. 917,872, filed July 23, 1992, the disclosure of which is incorporated herein by reference.

【0013】2)マシンは、ベクトル結果に基づく条件
付実行に備えるものでなければならない。SIMD演算
の結果を、それがちょうど多重スカラ演算を用いて行な
われたかのようにテストできることが重要である。この
理由により、ステータスレジスタ内の条件コードフラグ
は、データ経路の1セグメントごとに1組が存在するよ
うに二重にされることが好ましい。たとえば、ベクトル
次元が4であれば4組の条件コードが必要であろう。
2) The machine must be prepared for conditional execution based on vector results. It is important to be able to test the result of a SIMD operation as if it were done using multiple scalar operations. For this reason, the condition code flags in the status register are preferably duplicated such that there is one set for each segment of the data path. For example, a vector dimension of 4 would require 4 sets of condition codes.

【0014】また、条件付命令は、条件コードのどの組
を使用するかを特定することを必要とする。たとえば
「1つでもけた上げフラグがセットされていれば」また
は「すべてのけた上げフラグがセットされていれば」な
どの条件の組合せをテストすることができれば有用であ
る。
Conditional instructions also need to specify which set of condition codes to use. It would be useful to be able to test a combination of conditions, such as "if any carry flags are set" or "all carry flags are set".

【0015】3)SIMD方式は可能な限り多くの演算
に応用可能であるべきである。これから述べる本発明の
好ましい実施例は、16ビット乗算器および32ビット
入力データなどの現在の実現例におけるマシンを示して
いるが、本発明に従い他の変形が容易に構成され得ると
いうことは当業者には認識されるであろう。
3) The SIMD method should be applicable to as many operations as possible. Although the preferred embodiment of the invention described below illustrates the machine in its current implementation, such as a 16-bit multiplier and 32-bit input data, it will be appreciated by those skilled in the art that other variations can be readily constructed in accordance with the invention. Will be recognized by.

【0016】次の演算は、空間ベクトル(SV)技術の
性能を高めることができる、可能な演算(図28〜36
で列挙)の例である。
The following operations are possible operations (FIGS. 28-36) that can enhance the performance of space vector (SV) techniques.
Enumerated in) is an example.

【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であってもよい。
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 where cond is CC, CS, VC, VS, ZC and ZS. Good.

【0018】4)メモリデータ帯域幅はSIMDデータ
経路の性能に適合可能であるべきである。
4) The memory data bandwidth should be compatible with the SIMD data path performance.

【0019】メモリおよびバス帯域幅をハードウェアの
複雑さを増大させることなく空間ベクトルデータ経路の
データ要求に適合させることが望ましい。現在実現され
ているマシンにおけるデュアルアクセスの32ビットメ
モリを備える2つの32ビットバスは、算述論理ユニッ
ト(ALU)およびデュアル16×16乗算/累算ユニ
ット(MAC)によく適合している。これらはまた、4
つの8×8MACにもよく適合するだろう。
It is desirable to adapt memory and bus bandwidth to the data requirements of the space vector data path without increasing hardware complexity. Two 32-bit buses with dual-access 32-bit memory in currently implemented machines are well suited for arithmetic logic units (ALUs) and dual 16x16 multiply / accumulate units (MACs). These are also 4
It will also fit well in one 8x8 MAC.

【0020】5)実現されるいかなる付加および変形
も、付加的なハードウェアの複雑さは最小限で性能を最
大限にすることによって、コスト効率の良さをもたらす
べきである。
5) Any additions or modifications implemented should be cost-effective by maximizing performance with minimal additional hardware complexity.

【0021】加算器/減算器は、けた上げ伝播を止め、
条件コード論理を二重にすることによって、空間ベクト
ルモードにおいて動作させることができる。
The adder / subtractor stops carry propagation,
It is possible to operate in space vector mode by duplicating the condition code logic.

【0022】シフタは、ラップアラウンド論理をも再構
成し、条件コード論理を二重にすることによって空間ベ
クトルモードにおいて動作させることができる。
The shifter can also be operated in space vector mode by reconfiguring the wraparound logic and duplicating the condition code logic.

【0023】ビット論理ユニットは、条件コード論理を
二重にするだけで空間ベクトルモードにおいて動作させ
ることができる。
The bit logic unit can be operated in space vector mode simply by duplicating the condition code logic.

【0024】空間ベクトル条件付移動動作は、条件コー
ドフラグのベクトルを用いてマルチプレクサを制御し、
ベクトルの各要素が独立的に移動させられるようにする
ことによって達成され得る。
The space vector conditional move operation controls the multiplexer using a vector of condition code flags,
This can be achieved by allowing each element of the vector to be moved independently.

【0025】空間ベクトルの乗算は、乗算器アレイを二
重にし、部分積を組合せることを必要とする。たとえば
適切な組合せ論理を備える4つの16×8乗算器は、4
つの16×8または2つの16×16のベクトル演算、
もしくは1つの32×16スカラ演算を行なうのに用い
ることができる。空間ベクトル乗算−累算演算はまた、
けた上げ伝播を止め、条件コード論理を二重にすること
ができる累算加算器を、ベクトル化された累算器レジス
タと同様に必要とする。
Space vector multiplication requires doubling the multiplier array and combining partial products. For example, four 16x8 multipliers with appropriate combinational logic
16x8 or 2 16x16 vector operations,
Alternatively it can be used to perform one 32x16 scalar operation. The space vector multiplication-accumulation operation also
We need an accumulator adder that can stop carry propagation and duplicate the condition code logic, as well as a vectorized accumulator register.

【0026】6)汎用コンピュータにおける空間ベクト
ルの実現に起因するプログラミングの複雑さは、最小限
にされるべきである。空間ベクトル結果をスカラ結果に
組合せるために命令を考え出すことができる。
6) The programming complexity due to the realization of space vectors in general purpose computers should be minimized. Instructions can be devised to combine the space vector result with the scalar result.

【0027】ACC Az,Ax,Ay 累算器を加算する。SA Ay,
Mz スケーリングされた累算器対をメモリにストアす
る。
ACC Az, Ax, Ay Accumulators are added. SA Ay,
Mz Store scaled accumulator pair in memory.

【0028】MAR Rz,Ax スケーリングされた累算器対
をレジスタに移動させる。7)ベクトルが物理的メモリ
境界と交差するとき、ベクトルへのアクセスがそれでも
可能であるべきである。たたみ込みなどのいくつかのア
ルゴリズムは、データアレイを介しての増分を必要とす
る。アレイが長さNのベクトルとして扱われる場合、ベ
クトルが部分的に1つの物理的メモリ位置の中に存在
し、部分的に隣接する物理的メモリ位置の中に存在する
ということがあり得る。そのような空間ベクトル演算に
対する性能を維持するには、物理的境界と交差するデー
タアクセスに対処するようにメモリを設計するか、また
は前述の米国特許出願「RISCデジタル信号プロセッ
サのためのストリーマ」に記載されたようなストリーマ
を用いることが好ましい。
MAR Rz, Ax Move scaled accumulator pair to register. 7) When a vector crosses a physical memory boundary, it should still be accessible. Some algorithms, such as convolution, require increments through the data array. If the array is treated as a vector of length N, it is possible that the vectors are partially in one physical memory location and partially in adjacent physical memory locations. To maintain performance for such space vector operations, either design the memory to handle data accesses that cross physical boundaries, or refer to the aforementioned US patent application "Streamer for RISC Digital Signal Processors". Preference is given to using a streamer as described.

【0029】全体システム 図2は、本発明の空間ベクトルデータ経路を組入れても
よいプログラマブルプロセッサを一般化して表わしたも
のである。本発明に取入れられたコンセプトの1つは、
スカラオペランドまたはアレイの要素に一度に1つずつ
対処するように設計されたコンピュータを変形し、同時
に1つより多くのオペランドを処理できるようにするこ
とによって、その性能を高めることができるということ
である。
Overall System FIG. 2 is a generalized representation of a programmable processor which may incorporate the space vector data paths of the present invention. One of the concepts incorporated into the present invention is
By modifying a computer designed to deal with scalar operands or elements of an array one at a time, it is possible to increase its performance by allowing more than one operand to be processed at a time. is there.

【0030】図2に示されているのは、プログラムおよ
びデータオペランドをストアするためのプログラムおよ
びデータ記憶ユニット100を有するプログラマブルプ
ロセッサ、または広い意味でいう「コンピュータ」であ
る。命令収集ユニット130が記憶ユニット100から
命令をフェッチし、これは命令フェッチ/デコード/シ
ーケンスユニット140によりデコードかつ解釈され、
処理ユニット110によって実行される。このようにし
て処理ユニット110は記憶ユニット100から供給さ
れるオペランドで命令を実行する。
Shown in FIG. 2 is a programmable processor, or broadly "computer" having a program and data storage unit 100 for storing program and data operands. The instruction collection unit 130 fetches an instruction from the storage unit 100, which is decoded and interpreted by the instruction fetch / decode / sequence unit 140,
It is executed by the processing unit 110. In this way, the processing unit 110 executes the instruction with the operand supplied from the storage unit 100.

【0031】性能を高めるため、オペランドがスカラで
あるかベクトルであるかを特定するためのビットが各命
令の中にある。また、それらがベクトルである場合、各
オペランド内にいくつの要素があるかが特定される。こ
の情報は典型的なデコードされた命令とともに処理ユニ
ット110に送られるので、処理ユニット110はオペ
ランドをスカラとして処理するべきがベクトルとして処
理するべきかを「知る」。
To improve performance, there is a bit in each instruction to specify whether the operand is a scalar or a vector. Also, if they are vectors, it is specified how many elements are in each operand. This information is sent to the processing unit 110 along with the typical decoded instruction so that the processing unit 110 "knows" whether to process the operands as scalars but as vectors.

【0032】処理ユニット110はALUでもシフタで
もMACでもよい。記憶ユニット100は一般に何らか
の種類のメモリであってよく、レジスタファイルでも、
半導体メモリでも、磁気メモリでも、またはいくつかの
種類のメモリのいずれのものでもよい。処理ユニット1
10は加算、減算、論理AND、論理OR、バレルシフ
タでのようなシフト、乗算、累算、およびデジタル信号
プロセッサにおいて典型的に見られる乗算および累算の
ような、典型的な演算を行なってもよい。処理ユニット
110はオペランドを、命令において用いられる1つの
オペランド、命令において用いられる2つのオペラン
ド、またはそれ以上多くのものなどのうちいずれかとし
てとる。処理ユニット110は次にこれらのオペランド
で演算を行なって、それらの結果を得る。スカラまたは
ベクトルオペランドで開始することにより、オペランド
は演算を最後まで行なわれ、それぞれスカラまたはベク
トル結果をもたらす。
The processing unit 110 may be an ALU, shifter or MAC. The storage unit 100 may generally be some kind of memory, even a register file,
It may be semiconductor memory, magnetic memory, or any of several types of memory. Processing unit 1
10 is also capable of performing typical operations such as addition, subtraction, logical AND, logical OR, shifts such as in barrel shifters, multiplications, accumulations, and multiplications and accumulations typically found in digital signal processors. Good. The processing unit 110 takes an operand as either one operand used in an instruction, two operands used in an instruction, or many more. Processing unit 110 then performs operations on these operands to obtain their results. By starting with a scalar or vector operand, the operand completes the operation, yielding a scalar or vector result, respectively.

【0033】次のステップは、処理ユニット110がど
のように形成されてもよく、どのように機能するかをよ
り特定的に認識するためのものである。データおよびプ
ログラムは記憶ユニット100内で組合せられているよ
うに示されているが、それらは同じ物理的メモリ内で組
合せることもできるし、別個になった物理的メモリ内で
実現することもできるということは明らかであろう。各
オペランドは典型的な32ビットの長さを有するものと
して説明されているが、一般に、オペランドはいくつか
の長さのいずれとすることもできるだろう。16ビット
マシン、8ビットマシン、または64ビットマシン等々
とすることができる。一般的なアプローチは、Nビット
オペランドが、ともにとられて加算されるとNビットに
なる複数オペランドとして考えられ得るということであ
ると、当業者は認識するだろう。したがって、32ビッ
トワードはたとえば2つの16ビットハーフワード、も
しくは4つの8ビットクォーターワードまたはバイトで
あり得るだろう。発明者らによる現在の実現例では、1
つのオペランド中の要素は各々同じ幅のものとしてい
る。しかしながら、32ビットオペランドを、一方の要
素を24ビットとし、他方の要素を8ビットとすること
もできる。オペランド中で複数のデータ経路および複数
の要素を用いることから導き出される利点とは、すべて
の要素が独立的かつ同時に処理されており、処理のスル
ープットの増加がなし遂げられるということである。
The next step is to more specifically recognize how the processing unit 110 may be formed and how it functions. Although data and programs are shown as being combined in storage unit 100, they can be combined in the same physical memory or implemented in separate physical memories. That would be clear. Each operand is described as having a typical length of 32 bits, but in general the operands could be any of several lengths. It can be a 16-bit machine, an 8-bit machine, a 64-bit machine, and so on. One of ordinary skill in the art will recognize that the general approach is that N-bit operands can be thought of as multiple operands taken together and N-bits added. Thus, a 32-bit word could be, for example, two 16-bit halfwords, or four 8-bit quarter words or bytes. In the current implementation by the inventors, 1
The elements in the two operands have the same width. However, a 32-bit operand can be 24 bits for one element and 8 bits for the other element. An advantage derived from using multiple data paths and multiple elements in the operands is that all elements are processed independently and simultaneously, and an increase in processing throughput is achieved.

【0034】命令はどのようなサイズであってもよい。
現在は32ビット命令が用いられている。しかしながら
当業者は、8ビット、16ビット、32ビット、および
64ビットにおいて特に有用性を見出すかもしれない。
より重要なことは、命令については固定長でさえなくと
もよいということである。同じコンセプトが、32ビッ
ト命令に拡張可能な16ビット命令を備えるものなど
の、または命令がいくつかの数の8ビットバイトで形成
されており、その数はそれがどの特定の命令であるかに
よって決まる、可変長命令マシンにおいて用いられた場
合でも、働くだろう。当業者のために、図28〜36に
例示的な命令セットのまとめを示し、本発明に従って実
現されてもよい命令を示す。
The instructions can be of any size.
Currently, 32-bit instructions are used. However, one of ordinary skill in the art may find particular utility in 8-bit, 16-bit, 32-bit, and 64-bit.
More importantly, the instructions do not have to be even fixed length. The same concept, such as those with 16-bit instructions expandable to 32-bit instructions, or instructions are formed by some number of 8-bit bytes, which depends on which particular instruction it is Definitely, it will work even if used in a variable length instruction machine. For those skilled in the art, a summary of an exemplary instruction set is shown in Figures 28-36 to illustrate the instructions that may be implemented in accordance with the present invention.

【0035】処理ユニット110は典型的にはALU1
21および/またはMAC122を含んでもよい。また
これは、シフタ123または論理ユニット124を実現
するだけのものであってもよい。
The processing unit 110 is typically ALU1.
21 and / or MAC 122. It may also only implement the shifter 123 or the logic unit 124.

【0036】加算器 図3は処理ユニット(図2の110)のための、ALU
において実現されてもよい加算器を模式的に表わしたも
のである。図3(a)は従来の32ビット加算器を示
す。図3(b)はハーフワード対モードのために接続さ
れた2つの16ビット加算器を表わしたものである。図
3(c)はワードモードのために接続された2つの16
ビット加算器を表わしたものである。
Adder FIG. 3 shows an ALU for the processing unit (110 in FIG. 2).
Is a schematic representation of an adder that may be implemented in. FIG. 3A shows a conventional 32-bit adder. FIG. 3 (b) shows two 16-bit adders connected for the halfword pair mode. FIG. 3 (c) shows two 16 connected for word mode.
It represents a bit adder.

【0037】図3(a)から(c)は、図3(a)にお
ける32ビットの従来のマシンにおける典型的なハード
ウェアが、本発明に従うハーフワード対モードまたはワ
ードモードの所望される目的を達成するためにどのよう
に変形されてもよいかということを示す役割を果たす。
ベクトルはここでは2つの要素を持つものとして示され
る。より特定的には、32ビットの従来のオペランドが
どのようにして各々16ビットの2つの要素に分割され
得るかということが示される。同じ原理を、等しい長さ
または等しくない長さのものがあるいくつかの要素に分
割するのに適用することができるだろう。
FIGS. 3 (a) to 3 (c) show that the typical hardware in the 32-bit conventional machine in FIG. It serves to show how it may be modified to achieve.
Vectors are shown here as having two elements. More specifically, it is shown how a 32-bit conventional operand can be split into two elements, each 16 bits. The same principle could be applied to break up into several elements, some of equal length or unequal length.

【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ビットオペランドの上半分からきていると
いうことを除けば、同一なものとなるであろう。
Referring to FIG. 3A, the conventional adder 20
0 has an input X for the X operand and an input Y for the Y operand. It also has inputs for carry-in 201 and condition code 205, which are typically found in association with adders. Condition code 205
May be V for overflow, C for carry-out, and Z for zero result, i.e. the result from the adder is zero. In addition, it has the result operand output from the adder, which is S. X, Y, and S are all represented by 32-bit words. The control input s / u 202 represents a signed or unsigned operand, where the most significant bit indicates where the number is positive or negative, or in an unsigned operand the most significant bit contributes to the size of the operand. . FIG. 3 (b) is similar to a typical 32-bit adder, but instead is simply a 16-bit adder, where two adders are combined together to form a halfword pair, ie Indicates whether vector operations can be performed on what has two halfword elements per operand. The Y operand is split here as two halfword operands: the lower half Y0 to Y15 and the upper half V0 to V15. Similarly, the X operand is two halfword operands, namely X0 through X1 in the lower half.
5, and the upper half U0 to U15. The result S is S0 to S15 coming from the adder 210,
And the upper half W0 to W15 coming from the adder 220 are recognized. Essentially, the 32-bit adder 200
May be split in the middle to form two 16-bit adders 210 and 220. However, the upper bits will need logic to determine the nature of the sign bit of the operand. Therefore, dividing the 32-bit adder 200 will require additional logic for the lower 16-bit sign control that is divided from the 32-bit adder to form adder 210. In this case, these two adders 210 and 220 have input operands for adder 210 coming from the lower half of the 32-bit operand and input operands for 16-bit adder 220 coming from the upper half of the 32-bit operand. It will be the same, except that it is present.

【0039】オペランド要素XおよびUが別個にそれぞ
れYおよびVと加算されて合された場合、それらはそれ
ぞれ結果SおよびWをもたらす。またそれらは加算器の
各々のために独立的な条件コードを生成する。加算器2
10は条件コード215を生成し、加算器220は条件
コード225を生成する。これらの条件コードは、それ
らが関連している特定のハーフワード加算器に適用され
る。したがって、これで独立的なハーフワード対演算を
行なうために従来の32ビット加算器がわずかに変形さ
れる様が見てとれる。
When the operand elements X and U are separately added and combined with Y and V, respectively, they yield the results S and W, respectively. They also generate independent condition codes for each of the adders. Adder 2
10 generates the condition code 215, and the adder 220 generates the condition code 225. These condition codes apply to the particular halfword adder with which they are associated. Therefore, it can be seen that the conventional 32-bit adder is slightly modified to perform independent halfword pair operations.

【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つの加算器がどのようにハーフワード対
モードまたはワードモードのいずれかで機能できるかが
示されているが、当業者は、拡張によってベクトルの独
立した要素を同時に扱うために従来の加算器をいくつか
の加算器に変形すること、およびこれを再結合してスカ
ラ演算をスカラオペランドで行なうことをしてもよい。
Referring to FIG. 3 (c), the same adder unit in FIG. 3 (b) is reconnected to perform the original word operation performed in adder 200 of FIG. 3 (a). May be. This is the case when the operand represents a 32-bit scalar. The scalars are Y0 to Y31 and X0 to X31. The lower half of these operands is processed by adder 230 and the upper half is processed by adder 240.
Processed by. The mechanism that enables this is
By connecting the carry-out of adder 230 to the carry-in 236 of adder 240. As shown in FIG. 2 (c), the two combined 16-bit adders perform the same function as the single 32-bit adder of FIG. 3 (a). Therefore, as shown in FIGS.
In the implementation shown in (c), adder 210 may be essentially the same as adder 230, while adder 2
20 may be the same as the adder 240. Although this description shows how these two adders can work in either half-word pair mode or word mode, those skilled in the art have traditionally used extensions to handle the independent elements of a vector simultaneously. May be transformed into several adders, and may be recombined to perform scalar operations with scalar operands.

【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に対応する。当業者は、適合
すると思われるどの特定のやり方でもこれらを組合せる
ことができるだろう。
One thing to note about the adder of FIG. In FIG. 3C, two sets of condition codes 235 and 245 are shown. On the other hand, the original conventional adder has only one set of condition codes 205. The condition code of FIG. 3C is actually a condition code of 245 except for the condition code Z. The condition code in 235, that is, the overflow V and the carry C is effectively 23 when the condition code in the condition code 205 and the condition code Z are 23.
As long as it is the 245 Z condition code ANDed with the 5 Z condition code, it is ignored. Here, the condition code V of 205 corresponds to the V of 245. The C of 205 corresponds to the C of 245, and the Z of 205 corresponds to the Z of code 245 ANDed with the Z of code 235. The person skilled in the art will be able to combine these in any particular way which seems to fit.

【0042】論理ユニット 図4は本発明に従い実現されてもよい論理ユニットの模
式図である。図4(a)はビット単位の論理演算、ビッ
ト単位の補数または現在のプロセッサにおいて典型的に
見られるいくつかの組合せを行なう典型的な32ビット
論理ユニットを示すものであって、これらの演算につい
て重要かもしれないのは、それらが条件コードにおける
異なったビットのために独立的に働くということであ
る。オーバフロービットは通常、305における条件コ
ードでは全く重要性を持たない。キャリー−アウトは論
理演算においてまったく重要ではないが、ゼロには、結
果がゼロであるということを示すことにおいてまだ重要
性がある。ハーフワード対演算のために、もとの32ビ
ット加算器は「動作的」には2つの16ビット論理ユニ
ットに分割されるだろう。入力オペランドにおける上方
の16ビット320および下方の16ビット310は、
加算器のときと同じ態様で2つのハーフワードに分割さ
れるだろう。論理演算を処理するにあたっては、ビット
は一般に独立的に処理されるので、2つの論理ユニット
310および320の間には動作的な接続は全くない。
Logical Unit FIG. 4 is a schematic diagram of a logical unit that may be implemented in accordance with the present invention. FIG. 4 (a) illustrates a typical 32-bit logical unit that performs bitwise logical operations, bitwise complements, or some combination typically found in current processors. What may be important is that they work independently for different bits in the condition code. Overflow bits are usually of no significance in the condition code at 305. Carry-out is not significant at all in logic operations, but zero is still significant in indicating that the result is zero. For halfword pair operations, the original 32-bit adder would be "operationally" split into two 16-bit logical units. The upper 16 bits 320 and the lower 16 bits 310 in the input operand are
It will be split into two halfwords in the same manner as for the adder. In processing logical operations, bits are generally processed independently, so there is no operational connection between the two logical units 310 and 320.

【0043】図4(c)はスカラ処理のための典型的な
論理ユニットを形成するようにもう一度再結合された論
理ユニットを示す。条件コードエリア以外ではユニット
間には接続が必要ではないということに注意されたい。
従来の論理ユニットのゼロ条件コード305はここでは
ユニット345のゼロ条件コードをユニット335のゼ
ロ条件コードとAND処理することによって表わされて
もよい。したがって当業者には、デュアルモード論理ユ
ニットが前述のようにデュアルモード加算器のコンセプ
トおよび実現例を拡張することによって構成され得ると
いうことが明らかなはずである。
FIG. 4 (c) shows the logic units recombined to form a typical logic unit for scalar processing. Please note that no connection is required between units except in the condition code area.
The conventional logic unit zero condition code 305 may be represented herein by ANDing the unit 345 zero condition code with the unit 335 zero condition code. It should therefore be apparent to a person skilled in the art that the dual mode logic unit can be constructed by extending the concept and implementation of the dual mode adder as described above.

【0044】シフタ 図5から8は、本発明に従い実現されてもよいバレルシ
フタを模式的に表わしたものである。いくつかのプロセ
ッサは図5(b)に示されるようにバレルシフタを有す
るが、他のものは図5(a)、図6、および図7に示さ
れる1ビットシフタを有する。バレルシフタは典型的に
はプロセッサユニット内に必要なものではないが、高性
能マシンについては、プロセッサユニットは図5(b)
に表わされるようなシフタユニットを実現してもよい。
以下の説明では、処理を高速化する、または必要なハー
ドウェアの量を最小限にするために、当業者によってシ
フタがどのように構成され実現されてもよいかを示す。
図5(a)は、左シフトまたは右シフトのどちらかであ
る1ビットシフトが典型的なプロセッサにおいてどのよ
うに実現されてもよいかを示す。シフタ415は、32
ビット入力オペランドXが、左または右へ1ビットシフ
トされる、または方向入力DIR401の制御下ではシ
フトされないようにして、Z出力を生成できる。シフト
が起こった場合、それが左へのシフトなら、選択ボック
ス416によって最下位ビットの位置にビットが入れら
れなければならない。
Shifters FIGS. 5-8 are schematic representations of barrel shifters that may be implemented in accordance with the present invention. Some processors have barrel shifters as shown in Figure 5 (b), while others have 1-bit shifters as shown in Figures 5 (a), 6 and 7. Barrel shifters are not typically required within the processor unit, but for high performance machines, the processor unit is shown in FIG.
You may implement | achieve the shifter unit as represented by.
The following description shows how shifters may be configured and implemented by those skilled in the art to speed up the process or minimize the amount of hardware required.
FIG. 5 (a) shows how a 1-bit shift, either a left shift or a right shift, may be implemented in a typical processor. The shifter 415 has 32
The bit input operand X can be shifted one bit to the left or right, or not shifted under the control of the direction input DIR 401 to produce the Z output. If a shift occurs, if it is a shift to the left, then the selection box 416 must place the bit in the least significant bit position.

【0045】シフタが右へシフトされる場合、選択ボッ
クス400からのビットが最上位ビットの位置に入れら
れる。選択ボックス400および416はシフタ415
に入れるために選択され得るいくつかの入力を有する。
双方のボックスにはSELとラベル付けされる選択入力
もあり、これは命令からくるものであって、従来のマシ
ンには典型的なものである。SELはこれらの入力ビッ
トのうちどちらがシフタに入れられるために選択される
であろうかを決定する。一般に、これらの選択ボックス
があるため、シフトは、シフタの外へシフトされるビッ
トがシフタのもう一方の端で中にシフトされる回転でも
あり得るし、他のビットが右へシフトされる際に符号ビ
ットまたは最上位ビットがドラッグされる算術的右シフ
トでもあり得るし、他のビットが左へシフトされる際に
0が入れられる算術的左シフトでもあり得る。論理シフ
トについては、「0」がビットとして入れられる。ま
た、「1」は論理シフトに入れられる新しいビットとし
て、入れられる。
When the shifter is shifted to the right, the bits from select box 400 are placed in the most significant bit position. Selection boxes 400 and 416 are shifters 415
It has several inputs that can be selected to enter.
Both boxes also have a select input labeled SEL, which comes from the instruction and is typical of conventional machines. SEL determines which of these input bits will be selected for entry into the shifter. In general, because of these select boxes, the shift can be a rotation in which the bits shifted out of the shifter are shifted in at the other end of the shifter, and when other bits are shifted right. Can be an arithmetic right shift in which the sign bit or the most significant bit is dragged, or an arithmetic left shift in which a 0 is placed when the other bits are shifted to the left. For logical shifts, "0" is entered as a bit. Also, a "1" is entered as a new bit that is placed in the logical shift.

【0046】当業者は、加算器および論理ユニットのた
めの条件コードの説明を参照することによって、容易に
条件コードをシフタに割当て、算術的左シフト演算のた
めのオーバフロー、シフト演算の最後のビットを保持す
るためのキャリー、およびシフトの結果が0値であった
ときにそれを記録するゼロフラグを表わすことができる
だろう。
Those skilled in the art can easily assign the condition code to the shifter by referring to the description of the condition code for adder and logic unit, overflow for arithmetic left shift operation, the last bit of shift operation. Could hold a carry, and a zero flag to record it when the result of the shift was a zero value.

【0047】図5(a)のシフタを組合せて用いること
で、図5(b)のシフタを32ビット左/右バレルシフ
タとして形成してもよい。これは図5(a)におけるシ
フタを32個組合せ、それらを次々にカスケード接続
し、第1のものの出力が第2のものの入力に入る、とい
うふうに最後まで続いていくようにすることによって行
なわれてもよい。シフトされるべきビットの数は個々の
シフタへの方向入力DIRの1および0のパターンによ
って決定される。図5(a)ではシフタのための方向は
3値であるということに注意されたい。すなわち左、
右、またはまったくシフトがなし遂げられない真っ直ぐ
前方、である。そこで図5(b)では、個々の32ビッ
トの1ビットシフタへの方向入力は、左でも右でもシフ
トなしでもあり得る。32ビットが左へシフトすべきで
ある場合、すべての方向入力が左を示すだろう。
By using the shifters of FIG. 5 (a) in combination, the shifters of FIG. 5 (b) may be formed as a 32-bit left / right barrel shifter. This is done by combining 32 shifters in FIG. 5 (a), cascaded them one after the other, so that the output of the first one enters the input of the second one, and so on. You may The number of bits to be shifted is determined by the pattern of 1's and 0's of the directional inputs DIR to the individual shifters. Note that in FIG. 5 (a) the orientation for the shifter is ternary. Ie left,
Right, or straight ahead, where no shift can be accomplished. Thus, in FIG. 5 (b), the directional input to each 32-bit 1-bit shifter can be left, right, or unshifted. If 32 bits should be shifted to the left, all directional inputs will point to the left.

【0048】左へシフトすべきなのが1ビットだけの場
合、第1のボックスが左への1ビットシフトを示し、他
の31個はすべてシフトなしを示す。Nビットが左へシ
フトすべきである場合、始めのN個のボックスが左への
1ビットの方向入力を有し、残りのボックスがシフトな
しを示すだろう。同じことが右へのシフトにも適用でき
るだろう。この場合には方向は右へのシフトまたはシフ
トなしのいずれかを示し、同じように右シフトにおいて
0ビットから32ビットまでのシフトが可能であろう。
If only one bit should be shifted to the left, the first box indicates a 1-bit shift to the left, the other 31 all indicate no shift. If N bits should be shifted to the left, the first N boxes would have a 1-bit directional input to the left and the remaining boxes would indicate no shift. The same would apply to a shift to the right. In this case the direction indicates either a shift to the right or no shift, and a shift from 0 to 32 bits would be possible in the right shift as well.

【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つのハーフワードを示す。
The typical 1-bit shifter in FIG. 5 (a) can now be divided into two 16-bit shifters with reference to FIG. Shown here are two 16-bit L / R 1-bit shifters connected for halfword pair mode. The shifter 415 in FIG.
Operationally, two 16-bit 1-bit shifters 45
It can be divided into 0 and 435. Each of these 16-bit shifters has the input selection logic shown in FIG. 5 (a), which in this case specifically refers to 416 and 400, which includes box 450 having boxes 460 and 445,
Box 435 is duplicated to have boxes 440 and 430. The input logic is the same, but the inputs to the select boxes are wired differently. Therefore, the difference between the shifter of FIG. 6 connected for the half word pair mode and the shifter of FIG. 7 connected for the word mode is in how the input selection boxes are wired. The input operand elements of FIG. 6 for the lower shifter 450 are X0 to X15, and the input operand elements for the shifter 435 are Y0 to Y15. In this way X
And Y indicate two halfwords.

【0050】結果Z出力オペランドは2つのハーフワー
ドとして示される。下方の16ビットはZ0からZ15
であり、上方の16ビットはW0からW15である。入
力セレクタは、回転においてシフタから出力されるビッ
トがシフタの他方の端にフィードバックされるように結
線される。シフタ435が左シフトを行なうと、回転さ
れるビットはY15となり、右シフトを行なうと回転さ
れるビットはY0となる。同様にシフタ450につい
て、それが左回転であれば、入力ビットはX15であ
り、右回転であれば入力ビットはX0である。同様に、
選択は算術的シフトおよび論理的シフトについても図5
(a)でのように働く。
Result The Z output operand is shown as two halfwords. Lower 16 bits are Z0 to Z15
And the upper 16 bits are W0 to W15. The input selector is wired so that the bits output from the shifter during rotation are fed back to the other end of the shifter. When the shifter 435 shifts left, the rotated bit becomes Y15, and when it shifts right, the rotated bit becomes Y0. Similarly, for shifter 450, if it is a left rotation, the input bit is X15, and if it is a right rotation, the input bit is X0. Similarly,
The choice is also made for arithmetic and logical shifts in FIG.
Works as in (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)におけるシフタと同じス
カラオペランドのためのシフト動作を行なうだろう。
FIG. 7 shows how the operation of these same two shifters can be connected for word mode. Here, the shift pattern works for the entire 32 bits in the operand, unlike the two halfwords in FIG. For leftward rotation, lower shifter 486
Bit rotated from the outside (MSB bit x15)
Is rotated into the upper shifter 475, while L
The SB bit is input to the shifter 475. This forms a continuous shift between the upper 1-bit shifter and the lower 1-bit shifter. For rotations around the two shifters, X31 will be shifted to X0. If all the inputs of the selector 480 are connected to X15 and all the inputs of the selector 485 are connected to X16 as shown in FIG. 7, then the combined shifter of FIG.
It effectively operates as the shifter in (a). The input selector 470 will have the same pattern as the input selector 400. Input selector 488 will have the same input pattern as selector 416. Therefore, the combined shifter of FIG. 7 will perform the same shift operation for scalar operands as the shifter in FIG. 5 (a).

【0052】図6および7における1ビットシフタはさ
らに、1ビットシフタを32個カスケード接続すること
によって、図5(b)と類似の態様で、図8に示した3
2ビットバレルシフタに拡張することができる。1ビッ
トシフトが所望されるならば、方向制御信号が第1のシ
フタに対して用いられ、1ビットシフトを示す。他のカ
スケード接続された1ビットシフタに対しては、示され
るシフトはない。Nビットシフトについては、最初のN
個の1ビットシフタにおける方向入力が、1ビットだけ
シフトすることを示し、残りの1ビットシフタはシフト
せずデータを通過させる。
The 1-bit shifter in FIGS. 6 and 7 is further connected to the 3-bit shifter shown in FIG. 8 in a manner similar to FIG. 5B by cascade-connecting 32 1-bit shifters.
It can be extended to a 2-bit barrel shifter. If a 1 bit shift is desired, the direction control signal is used for the first shifter to indicate a 1 bit shift. There is no shift shown for the other cascaded 1-bit shifters. For N-bit shift, the first N
The direction input in each 1-bit shifter indicates that it shifts by 1 bit, and the remaining 1-bit shifters pass the data without shifting.

【0053】同様にこの図8のバレルシフタはワードま
たはハーフワード対モード演算のいずれをも行なうこと
ができる。なぜなら、個々のビットシフタはワードまた
はハーフワード対演算のどちらでも行なうことができる
からである。この図5から8の実施例はバレルシフタを
実現する1つの方法を代表するものであるが、バレルシ
フタを真中で分割して入力選択論理を提供する同じコン
セプトが、バレルシフタの多くの他の実現例にも応用で
きる。当業者は、特定のハードウェアまたはスループッ
トの要求に応じて適切な実現例を見出すことができるは
ずである。
Similarly, the barrel shifter of FIG. 8 can perform either word or halfword pair mode operations. This is because the individual bit shifters can perform either word or halfword pair operations. Although the embodiments of FIGS. 5-8 are representative of one method of implementing a barrel shifter, the same concept of splitting the barrel shifter in the middle to provide the input selection logic applies to many other implementations of the barrel shifter. Can also be applied. One of ordinary skill in the art will be able to find suitable implementations depending on the particular hardware or throughput requirements.

【0054】乗算累算器 図9および10は、本発明に従い実現されてもよい乗算
および累算(MAC)ユニットの模式図である。
Multiply Accumulator FIGS. 9 and 10 are schematic diagrams of a multiply and accumulate (MAC) unit that may be implemented in accordance with the present invention.

【0055】典型的な32ビットプロセッサは通常、高
価な32×32乗算器アレイの実現を必要とはしないだ
ろう。乗算はおそらく他の方法で確立されるだろう。し
かしながら典型的な16ビット信号プロセッサでは、1
6×16乗算器アレイが極めて普通に見られる。高速な
乗算を必要とするタイプの計算には、典型的に16ビッ
トデータが用いられるので、16×16乗算器アレイの
方が普及したものとなっており、これはいくつかの32
ビットプロセッサにおいてさえ当てはまることである。
したがって、32ビットオペランドを2つの16ビット
ハーフワード対として扱うことにより、1つのベクトル
化されたオペランド中の32ビットワードオペランド、
ハーフワードオペランド、またはハーフワード要素の空
間ベクトルの概念を利用すべく2つの16×16乗算器
アレイを実現することができる。
A typical 32-bit processor will usually not require an expensive 32x32 multiplier array implementation. Multiplication will probably be established in other ways. However, in a typical 16-bit signal processor, 1
A 6x16 multiplier array is quite common. Since 16-bit data is typically used for types of computations that require fast multiplication, 16 × 16 multiplier arrays have become more prevalent, which is a few
This is true even in bit processors.
Therefore, by treating a 32-bit operand as two 16-bit halfword pairs, a 32-bit word operand in one vectorized operand,
Two 16x16 multiplier arrays can be implemented to take advantage of the concept of halfword operands, or spatial vectors of halfword elements.

【0056】次の例は、どのようにして16×16乗算
器アレイを二重にして2つのハーフワード対乗算器とし
て用いることができるかを示すものであって、これらの
乗算器はともに接続されて32×16スケーラ乗算をも
たらしてもよい。この32×16スカラ乗算には、これ
らの乗数の2つを一緒に用いて32×32ビット乗算を
なすことができるという有用さがある。または、32×
16乗算をそれ自体で用いることもでき、この場合32
ビットの精度のオペランドがただ16ビットだけの精度
のオペランドによって乗算されてもよい。
The following example shows how a 16 × 16 multiplier array can be duplicated and used as two halfword pair multipliers, which are connected together. May result in a 32 × 16 scaler multiplication. This 32 × 16 scalar multiplication has the usefulness that two of these multipliers can be used together to make a 32 × 32 bit multiplication. Or 32x
16 multiplications can also be used on their own, in this case 32
Bit precision operands may be multiplied by only 16 bit precision operands.

【0057】MACユニットはすべてのプロセッサで典
型的に見られるわけではない。しかし信号処理の用途の
ための高性能プロセッサでは、これは典型的に実現され
ている。図9は、MACユニットの従来の実現例を示
す。MACは様々なサイズのうちどのサイズでもあり得
る。これは32ビットの積を形成する乗算器における1
6ビット×16ビットのユニットである。この32ビッ
トの積は累算加算器内で第3のオペランドと加算されて
もよく、これは「ガードビット」と呼ばれる余剰の上位
ビットがあるためその積よりも長いかもしれない。
MAC units are not typically found on all processors. However, this is typically implemented in high performance processors for signal processing applications. FIG. 9 shows a conventional implementation example of a MAC unit. The MAC can be any of various sizes. This is a 1 in the multiplier that forms the 32-bit product.
It is a unit of 6 bits × 16 bits. This 32-bit product may be added with the third operand in the accumulator adder, which may be longer than the product due to the extra high order bits called "guard bits".

【0058】図9に示されるように、入力オペランドは
16ビットであって、X0からX15およびY0からY
15で表わされる。これらは32ビットの積Zを発生
し、これはフィードバックオペランドFに加えられても
よい。この場合、Fは40ビットのフィードバックワー
ドまたはオペランドを表わすF0からF39として示さ
れる。これが40ビットなのは、積を保持するのに32
ビット、加えてガードビットのために付加的な8ビット
が必要とされるであろうからである。ガードビットはオ
ーバフローを扱うために含まれている。なぜなら、いく
つかの積が加算されると、オーバフローが起こる可能性
があり、ガードビットはオーバフローを累算してそれら
を保護するからである。典型的にはガードビットの数は
4または8であろう。この例では8ビットが示されてい
るが、いくつかのサイズが可能であろう。累算器の結果
は40ビットの結果A0からA39として示される。
As shown in FIG. 9, the input operand is 16 bits and contains X0 to X15 and Y0 to Y.
It is represented by 15. These produce a 32-bit product Z, which may be added to the feedback operand F. In this case, F is designated as F0 through F39, which represents a 40-bit feedback word or operand. This is 40 bits because 32 holds the product.
This is because an additional 8 bits would be needed for the bits plus the guard bits. Guard bits are included to handle overflow. This is because overflow can occur when several products are added and the guard bits accumulate overflows to protect them. Typically the number of guard bits will be 4 or 8. Although eight bits are shown in this example, several sizes are possible. The accumulator results are presented as 40-bit results A0 through A39.

【0059】乗算アレイは乗算器なしで用いることもで
きるし、乗算器とともに用いることもできるということ
に注意すべきである。符号付または符号なしを意味する
別の入力S/Uが、入力オペランドが符号付数として扱
われるべきか符号なし数として扱われるべきかを示すと
いうことが注意されるべきである。当業者は、乗算器の
上方のビットが、入力オペランドが符号付であるか符号
なしであるかによって異なったように扱われるというこ
とを認識するであろう。
It should be noted that the multiplier array can be used without a multiplier or with a multiplier. It should be noted that another input S / U, which means signed or unsigned, indicates whether the input operand should be treated as a signed or unsigned number. Those skilled in the art will recognize that the upper bits of the multiplier are treated differently depending on whether the input operand is signed or unsigned.

【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ビットよりも大き
い。この時点で、ハーフワードの積は独立的なオペラン
ドの表現として保存される。
FIG. 10 shows how a typical 16 × 16 array is formed to handle halfword pair operands. In this case, the 32-bit input operand X
Is divided into two halfwords. The lower halfwords for multiplier 520 are X0 to X15 and the upper halfwords for multiplier 515 are X16 to X3.
It is 1. The Y input operand is also split into two halfword operands. The lower halfwords for multiplier 520 are Y0 to Y15, and the upper half for multiplier 515 is Y16 to Y31. FIG. 10 thus represents a connection for multiplying each halfword operand of the X operand with each halfword operand of the Y operand. The lowest halfword of X is multiplier 5
Note that at 20 is multiplied with the least significant halfword of Y. Also, in the multiplier 515 independently and simultaneously, the upper halfword of X is multiplied with the upper halfword of Y. These two multiplications yield two products. The 32-bit product from multiplier 520 is Z
0 to Z31, and similarly the 32-bit result of multiplier 515 is represented by W0 to W31. The two products are each larger than 16 bits to preserve their precision. At this point, the halfword product is saved as a representation of the independent operands.

【0061】乗算器520より出された下方のハーフワ
ードからの積は、累算器530に送られF0からF39
で表わされるフィードバックレジスタで加算される。こ
れにより、A0からA39で表わされる累積された積A
が形成される。同様に上方のハーフワードにおいて、積
はW0からW31によって表わされており、かつ累算器
525の中でG0からG39によって表わされるフィー
ドバックレジスタに加算されて40ビットの結果Bを形
成し、この結果はB0からB39で表わされる。これら
の累算器の結果は一般に、乗算の精度を保つためにより
大きい数またはビットで表わされるオペランドとして累
算器の中でより大きい数として保存される。
The product from the lower halfword output from multiplier 520 is sent to accumulator 530, which is F0 through F39.
It is added in the feedback register represented by. This gives the accumulated product A represented by A0 to A39.
Is formed. Similarly, in the upper halfword, the product is represented by W0 through W31 and is added in accumulator 525 to the feedback register represented by G0 through G39 to form the 40 bit result B, which The results are represented by B0 to B39. The results of these accumulators are generally stored as larger numbers in the accumulator as operands represented by larger numbers or bits to preserve the precision of the multiplication.

【0062】フィードバックビットは通常、メモリ(図
2の100)またはより大きい数のビットをストアする
ことのできる特殊なメモリのいずれからでももたらされ
るだろう。典型的なメモリ位置が扱えるのは32ビット
であるが、典型的には累算器ファイルと呼ばれる特殊な
メモリは、スカラ積のために40ビット、またはハーフ
ワード対の積のために80ビットをストアすることがで
きるだろう。この場合スカラオペランドを扱うことので
きる2つの累算レジスタが、ハーフワード対オペランド
のための記憶を形成するのに用いられてもよい。換言す
れば、ハーフワード対演算の2つの40ビットの結果を
ストアするのに2つの40ビット累算器を用いることが
できるだろう。
The feedback bits will typically come from either memory (100 in FIG. 2) or a specialized memory capable of storing a larger number of bits. A typical memory location can handle 32 bits, but a special memory, typically called an accumulator file, can store 40 bits for a scalar product or 80 bits for a halfword pair product. Could be stored. In this case, two accumulation registers capable of handling scalar operands may be used to form the storage for the halfword pair operands. In other words, two 40-bit accumulators could be used to store the two 40-bit results of a halfword pair operation.

【0063】MAC相互接続 図11および図12は、スカラオペランドのための16
×32ビット乗算を形成するために、図10のアレイの
2つの16ビット乗算器がどのように相互接続され得る
かを示す。この例では、乗算器アレイは加算器列として
実現される。最下位乗算器アレイ610のキャリー−ア
ウト605は、上位乗算器アレイ600の加算器にキャ
リー入力として与えられる。さらに、上位乗算器アレイ
600の最下位端に形成される合計ビット606は、下
位乗算器アレイ610の加算器の最上位端に与えられ
る。
MAC Interconnect FIGS. 11 and 12 show 16 for scalar operands.
11 illustrates how two 16-bit multipliers of the array of FIG. 10 can be interconnected to form a x32-bit multiplication. In this example, the multiplier array is implemented as an adder train. Carry-out 605 of lowest multiplier array 610 is provided as a carry input to the adder of upper multiplier array 600. Further, the sum bit 606 formed at the bottom end of the upper multiplier array 600 is provided at the top end of the adder of the lower multiplier array 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において符号付または符号なしオペランドとして扱わ
れる。
Other connections occur to accumulators 615 and 605. The accumulator 615, which represents the lower part of the product, is limited to 32 bits and the upper 8 guard bits are unused. Three
2-bit carry out is the upper 40-bit accumulator 60
The carry input of 5 and the result is a 72 bit operand, shown here as B0 through B39. This operand is typically stored as two operands with the lower 32 bits stored in one accumulator 615 and the upper 40 bits stored in a second accumulator 605. Further, in this operation, the lower half of the input operand X is treated as an unsigned number in the multiplier 610 because of the signed and unsigned bits, and the upper 16 bits of the input operand X are in the upper multiplier array 60.
At 0, it is treated as a signed or unsigned operand.

【0065】さらに、下位累算器615においては積は
符号なしオペランドとして扱われ、一方上位累算器60
5ではオペランドは符号付数として扱われる。40ビッ
ト累算器は図11および図12のすべての例においては
符号付数として扱われることを付け加えるべきである。
これは、符号なし数でさえも符号付数の正の部分と考え
られ得るようなビットを、累算器の拡張であるガードビ
ットが可能にするからである。ゆえに、拡張累算器にお
ける符号付数は、符号付オペランドと符号なしオペラン
ドの両方を含む。
Further, in the lower accumulator 615 the product is treated as an unsigned operand while the upper accumulator 60
In 5, the operand is treated as a signed number. It should be added that the 40-bit accumulator is treated as a signed number in all the examples of FIGS.
This is because the guard bit, an extension of the accumulator, allows bits that even an unsigned number could be considered the positive part of a signed number. Therefore, the signed number in the extended accumulator includes both signed and unsigned operands.

【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の符号制御
に用いられる。
FIG. 12 illustrates multiplier arrays 600 and 61.
It shows in more detail how the carry and sum bits interact between the adders that make up 0. For example,
Adders 625 and 635 are shown as part of multiplier array 610 and adders 620 and 630 are shown as part of multiplier array 600. It should be noted that multiplier arrays 610 and 600 are typically implemented with some form of adder. Depending on the particular implementation, the interconnection of the adders may be done in various ways. Although FIG. 10 shows a simple cascade of adders, this same technique may be used in other ways where the adders would be connected as in, for example, a Booth multiplier or a Wallace tree multiplier. . As shown in FIG. 12, the adder 625 of the lower multiplier array 610 is
Provides a carry-out 621 provided to the carry input of the corresponding adder 620 of the upper multiplier array 610. Lower multiplier array 610 operates as if the input operands of the X-input were unsigned. The sign of the input operand is specified, and the upper multiplier 6
00 is used for sign control of the upper adders 620 and 630 of the array.

【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へ入力ビットとして与
えられる。
Furthermore, the adders are connected in such a way that they are offset from the least significant bit of the multiplier to the most significant bit of the multiplier, which gives the opportunity to add back the total bits back. More specifically, adder 625
And 620 correspond to the lower bits of the multiplier, designated Yi. Adders 635 and 630 have Y (i
+1) corresponding to the next higher bit of the multiplier. This offset is the output S1 of the adder 625 given to the input B0 of the adder 635 and the adder 635.
Can be seen as S15 of the adder 625 fed to the input B14 of This 1-bit offset is added by the adder 620.
B1 of input of adder 635 to receive input S0 from
5, the sum bits from the most significant multiplier array 600 are provided as input bits to the least significant multiplier array 610.

【0068】さらに、加算器625からの合計ビットS
0は、640として示される次の部分積に直接進み、さ
らなる乗算器または加算器段を通る必要はない。したが
って、連続する加算器段625、635などからS0を
出力することは、図9の出力ビットZ0からZ15を生
じさせる。加算器635のS0からS15に対応する最
終部分積からの出力ビットは、Z16からZ31の図9
のアレイ610からの出力ビットを生じさせるであろ
う。
Furthermore, the total bit S from the adder 625
The 0 goes directly to the next partial product, shown as 640, and does not have to go through an additional multiplier or adder stage. Therefore, outputting S0 from successive adder stages 625, 635, etc., produces output bits Z0 through Z15 of FIG. The output bits from the final partial product corresponding to S0 to S15 of adder 635 are shown in FIG.
Will produce output bits from array 610 of.

【0069】万一乗算器Yが負である場合に補償を与え
るために最終加算器段がどのように用いられ得るかにつ
いては、当業者ならば理解するであろう。
Those skilled in the art will understand how the final adder stage could be used to provide compensation should multiplier Y be negative.

【0070】オペランドデータのタイプの分類 オペランドデータのタイプの分類に関してここで注目す
る。オペランドモードのタイプをスカラまたはベクトル
として特定するための1つのアプローチは命令にその情
報を含むことであるが、代替的アプローチはその情報を
オペランドの付加的なビットにおいて付け加えることで
ある。たとえば、オペランドが32ビットの場合、1つ
の付加的なビットを用いて、オペランドをスカラまたは
ベクトルのいずれかとして識別してもよい。仮にベクト
ル要素の数がはっきりと示されるか、またはベクトル要
素の数が2のような何らかの数であると仮定され得るよ
うな場合、付加的なビットがさらに用いられてもよい。
オペランド処理ユニットは、オペランドに付加される情
報に応答することによってオペランドをスカラとしてま
たはベクトルとして処理するのに適合されるであろう。
Classification of Operand Data Types Attention is now paid to the classification of operand data types. One approach to specifying the type of operand mode as a scalar or vector is to include that information in the instruction, but an alternative approach is to add that information in additional bits of the operand. For example, if the operand is 32 bits, one additional bit may be used to identify the operand as either a scalar or a vector. Additional bits may also be used if the number of vector elements is explicitly indicated or may be assumed to be some number such as two.
The operand processing unit will be adapted to process the operand as a scalar or as a vector by responding to the information added to the operand.

【0071】オペランドがスカラであるかまたはベクト
ルであるかは、オペランドが選択される方法によってさ
らに特定されてもよい。たとえば、オペランドのアドレ
スをさらに特定するメモリ位置にあるビットフィールド
に、情報が含まれてもよい。
Whether the operand is a scalar or a vector may be further specified by the way the operand is selected. For example, the information may be contained in a bit field at a memory location that further identifies the address of the operand.

【0072】2つのオペランドが処理ユニットによって
処理され、モード情報がその2つのオペランドにおいて
異なる場合には、混合されたモード演算を処理するため
に当業者によって処理ユニットに規定が設定されてもよ
い。たとえば、ベクトルオペランドおよびスカラオペラ
ンドを伴うADD演算は、処理ユニットによって、スカ
ラからベクトルを形成し、必要ならば切捨て、次いでベ
クトル演算を行なうことによって処理されてもよい。
If two operands are processed by a processing unit and the mode information is different in the two operands, the processing unit may be prescribed by a person skilled in the art to handle mixed mode operations. For example, an ADD operation with a vector operand and a scalar operand may be processed by the processing unit by forming a vector from the scalar, truncating if necessary, and then performing the vector operation.

【0073】空間ハードウェアに対する代替としてのタ
イムシェアリング 実現手段をタイムシェアリングすることは空間に分散す
る実現手段の代用にしばしばなり得ることは、当業者に
は理解されるであろう。たとえば、空間に分散されるベ
クトル処理ユニットにおいて多重加算器を効果的に実現
するのに、1つのベクトル加算器が何度も用いられても
よい。ハードウェアの多重化および非多重化を用いて、
入力オペランドおよび結果を順序づけることも可能であ
る。付加的なサポートハードウェアを有するベクトル加
算器をさらに用いて、スカラオペランドを処理するのに
分散ベクトル加算器が相互接続され得る方法と類似の態
様でスカラオペランドをばらばらに処理することも可能
である。サポートハードウェアは、ベクトル演算処理素
子間を通る中間結果を処理するのに用いられる。
An alternative to spatial hardware
It will be appreciated by those skilled in the art that time-sharing an im-sharing implementation can often be a substitute for a spatially-distributed implementation. For example, one vector adder may be used multiple times to effectively implement multiple adders in a spatially distributed vector processing unit. With hardware multiplexing and demultiplexing,
It is also possible to order the input operands and the result. A vector adder with additional support hardware may also be used to handle the scalar operands in a manner similar to how distributed vector adders may be interconnected to handle the scalar operands. . Support hardware is used to process intermediate results that pass between vector processing elements.

【0074】この発明の上記の説明に留意して、この発
明の空間ベクトルデータ経路を組込む例示のRISC型
プロセッサがこれより説明される。以下のプロセッサシ
ステムは、当業者がこの発明を組込むであろう方法の一
例にすぎないことに注意されたい。他の例は、記載され
るこの発明に基づく、それらの有利なアプリケーション
を見出すであろう。
With the above description of the invention in mind, an exemplary RISC-type processor incorporating the space vector data path of the present invention will now be described. Note that the processor system below is but one example of how a person of ordinary skill in the art would incorporate the present invention. Other examples will find their advantageous application according to the invention described.

【0075】この発明を組込む例示的プロセッサ この発明を組込む演算処理素子の機能図を示す図13を
参照する。以下の説明は特定のビット幅を参照するが、
それらは例示のためであり、この発明の教示に従って他
の幅が容易に構成され得ることを、当業者は理解するで
あろう。
Exemplary Processor Incorporating the Invention Reference is made to FIG. 13 which shows a functional diagram of a processing element incorporating the invention. The following description refers to specific bit widths,
Those skilled in the art will appreciate that they are for illustration only and that other widths can be readily constructed in accordance with the teachings of the present invention.

【0076】図13を参照すると、図示されるデータ処
理ユニットを制御するために、2つのソースオペランド
および1つの宛先オペランドを特定することのできる命
令が用いられる。
Referring to FIG. 13, an instruction capable of specifying two source operands and one destination operand is used to control the illustrated data processing unit.

【0077】オペランドは典型的にはレジスタにおよび
データメモリ(200)にストアされる。演算命令、論
理命令、およびシフト命令がALU240およびMAC
230においてレジスタ空間からのオペランドを用いて
実行され、その結果はレジスタ空間に戻される。レジス
タ空間はレジスタファイル220と幾つかの他の内部レ
ジスタ(図示せず)とから構成される。レジスタ空間に
ストアされるオペランドは、32ビットワードまたはハ
ーフワード対のいずれかである。オペランドは、ロード
およびストア命令によってレジスタ空間とメモリ200
との間を、または既に記載したようにレジスタ空間と自
動メモリアクセスユニットであるストリーマ210との
間を往復する。
Operands are typically stored in registers and in data memory (200). Arithmetic, logical, and shift instructions are ALU240 and MAC
At 230, the operand is executed from the register space and the result is returned to the register space. The register space consists of register file 220 and some other internal registers (not shown). Operands stored in register space are either 32-bit words or halfword pairs. Operands are loaded and stored in register space and memory 200.
To or from the register space and the streamer 210, which is an automatic memory access unit, as described above.

【0078】図14を参照すると、ALU240の機能
ブロック図が示される。ALUは加算器410、420
とバレルシフタ470とから構成される。一般に、AL
U命令は、レジスタ空間から2つのオペランドをとり、
レジスタ空間にその結果を書込む。ALU命令は、各ク
ロックサイクルを実行することができ、ALUパイプに
おいて僅か1つの命令クロックサイクルを必要とするだ
けである。
Referring to FIG. 14, a functional block diagram of ALU 240 is shown. ALU is an adder 410, 420
And barrel shifter 470. Generally, AL
The U instruction takes two operands from the register space,
Write the result to the register space. The ALU instruction can execute each clock cycle, requiring only one instruction clock cycle in the ALU pipe.

【0079】加算器410、420およびシフタ470
は、ワードまたはハーフワード対オペランドを用いて演
算を行なう。符号付オペランドは2の補数表記法で表わ
される。現在、符号付、符号なし、小数、および整数オ
ペランドが、ALU演算のための命令によって特定可能
である。
Adders 410 and 420 and shifter 470
Performs an operation using a word or halfword pair operand. Signed operands are represented in two's complement notation. Currently, signed, unsigned, decimal, and integer operands can be specified by instructions for ALU operations.

【0080】加算器 加算器(410、420)はワードおよびハーフワード
対で加算および論理演算を行なう。ハーフワード対演算
の場合、加算器410、420は半分のものが2つある
ものとして機能する。下半分420はハーフワード対の
下位オペランド460を用いて演算を実行し、上半分4
10は同じ演算をハーフワード対の上位オペランド45
0を用いて実行する。ハーフワード対モードにある場合
は、2つの加算器410、420は本質的に互いから独
立している。32ビット論理ユニット440は、下の加
算器420から上の加算器410へ情報を送り、2つの
加算器がワードモードで動作しているときには情報を逆
に送るために用いられる。
Adder Adders (410, 420) perform addition and logical operations on word and halfword pairs. For halfword pair operations, adders 410, 420 function as if there were two halves. The lower half 420 uses the lower operand 460 of the halfword pair to perform the operation and the upper half 4
10 is the same operation as the upper operand 45 of a halfword pair
Run with 0. When in halfword pair mode, the two adders 410, 420 are essentially independent of each other. The 32-bit logic unit 440 is used to send information from the lower adder 420 to the upper adder 410 and vice versa when the two adders are operating in word mode.

【0081】加算器演算は、2つのキャリー(CUおよ
びCL)、2つのオーバフロー(VUおよびVL)、お
よび2つのゼロ(ZUおよびZL)条件コードビットに
影響する。CUはワード演算のための桁上げフラグであ
り、CUおよびCLはハーフワード対演算のための桁上
げフラグである。同様に、VUはワード演算におけるオ
ーバフローを示し、VUおよびVLはハーフワード対演
算におけるオーバフローを示す。
The adder operation affects two carry (CU and CL), two overflow (VU and VL), and two zero (ZU and ZL) condition code bits. CU is a carry flag for word operation, and CU and CL are carry flags for halfword pair operation. Similarly, VU indicates overflow in word operation, and VU and VL indicate overflow in halfword pair operation.

【0082】オーバフローフラグに作用するオーバフロ
ーは、加算器演算命令からおよびMACスカラ命令から
結果として生じ得る。オーバフローフラグは、実行され
た命令がたとえ結果を飽和したとしてもセットされる。
一度セットされると、条件コードは、フラグをセットす
ることのできる別の命令があるまで変わらない。
Overflow affecting the overflow flags can result from adder arithmetic instructions and from MAC scalar instructions. The overflow flag is set even if the executed instruction saturates the result.
Once set, the condition code does not change until there is another instruction that can set the flag.

【0083】飽和のない加算器演算命令がオーバフロー
し、誤り例外が可能化されると、誤り例外要求が生ず
る。飽和のあるオーバフローおよび飽和のないオーバフ
ローを示すために、別個の信号がデバッグ論理に送られ
る。
An error exception request occurs when an adder operation instruction without saturation overflows and error exceptions are enabled. Separate signals are sent to the debug logic to indicate saturated and unsaturated overflows.

【0084】バレルシフタ 図14を参照すると、1クロックサイクルの間に、バレ
ルシフタは32ビット位置までのワードオペランドにあ
るすべてのビットを左または右のいずれにもシフトさせ
ながら、ゼロ、オペランドの符号ビット、または加算器
の上位桁上げフラグ(CU)を回転または挿入すること
ができる。ハーフワード対演算の場合には、1クロック
サイクルで、シフタは16ビット位置までの両方のハー
フワードを左または右へシフトさせながら、ゼロ、符号
ビット、または加算器の桁上げフラグ(CUおよびC
L)を回転または挿入することができる。
Barrel Shifter Referring to FIG. 14, during one clock cycle, the barrel shifter shifts all bits in the word operand up to a 32-bit position to either the left or the right, while zero, the sign bit of the operand, Alternatively, the upper carry flag (CU) of the adder can be rotated or inserted. For halfword pair operations, in one clock cycle, the shifter shifts both halfwords up to the 16-bit position to the left or right, while zero, sign bit, or adder carry flags (CU and C).
L) can be rotated or inserted.

【0085】典型的なシフト/回転演算の場合、バレル
シフタ470は、両方のソースオペランドの位置にある
各ビットを演算によって示される方向に移動させる。各
位置のシフトに対して、バレルシフタ470は、選択さ
れる演算に依って、終わりのビットを回転させるか、ま
たは符号ビット、桁上げフラグ(CUまたはCL)、も
しくはゼロを挿入する。
For a typical shift / rotate operation, barrel shifter 470 moves each bit in both source operand positions in the direction indicated by the operation. For each position shift, barrel shifter 470 either rotates the last bit or inserts a sign bit, carry flag (CU or CL), or zero, depending on the operation selected.

【0086】たとえば、左回転の場合、ビットは左側へ
シフトされる。ビット31はワードモードではビット0
にシフトされる。ハーフワード対モードの場合には、ビ
ット31はビット16に回転させられ、ビット15はビ
ット0に回転させられる。右回転の場合は、ビットは右
側にシフトされる。ゼロはワードモードではビット31
に挿入される。ハーフワード対モードの場合には、ゼロ
はビット31およびビット15の両方に挿入される。同
様に、キャリー伝搬を伴うシフトでは、桁上げフラグ
(CU)はワードモードではビット31に挿入される。
ハーフワード対モードの場合には、各ハーフワードの桁
上げフラグ(CUおよびCL)はビット31およびビッ
ト15に挿入される。
For example, for left rotation, the bits are shifted to the left. Bit 31 is bit 0 in word mode
Is shifted to. For halfword pair mode, bit 31 is rotated to bit 16 and bit 15 is rotated to bit 0. For right rotation, the bits are shifted to the right. Zero is bit 31 in word mode
Is inserted into. For halfword pair mode, zeros are inserted in both bit 31 and bit 15. Similarly, for shifts with carry propagation, the carry flag (CU) is inserted in bit 31 in word mode.
In the halfword pair mode, carry flags (CU and CL) of each halfword are inserted in bit 31 and bit 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とか
ら構成される。
Next, referring to FIG. The dual MAC units are two MAC units 520, 550, 57 that are interconnected together to produce either two 16x16 or 16x32 products.
0, 590 and 510, 540, 560, 580. Each MAC has a 16 × 16 multiplication array 51
0 and 520, accumulators and adders 560 and 570, accumulator register files 580 and 590, and a scaler 591.

【0088】幾つかの例示的な命令:乗算、累算、乗算
および累算、ユニバーサルハーフワード対乗算、ユニバ
ーサルハーフワード対乗算および累算、ダブル乗算ステ
ップ、ならびにダブル乗算および累算ステップが、図2
8−図36に挙げられる命令のまとめに見られる。
Some exemplary instructions are: multiplication, accumulation, multiplication and accumulation, universal halfword pair multiplication, universal halfword pair multiplication and accumulation, double multiplication step, and double multiplication and accumulation step. Two
8--See the summary of instructions listed in FIG.

【0089】ワード演算はどちらかのMACユニットで
実行され得る。MACは現在16×16演算であるた
め、MACユニットで用いられる「ワード」は16ビッ
トであることは注目されるべきである。しかしながら、
より便利なアプローチは、ベクトル長1、2、4または
8を用いて演算を表わすことである。したがって、MA
Cにおけるワード演算はベクトル長1と呼ばれることが
でき、一方ハーフワード対演算はベクトル長2となるだ
ろう。宛先累算器を含むMACは、演算を行なうのに現
在用いられているものである。
Word operations can be performed on either MAC unit. It should be noted that the "word" used in the MAC unit is 16 bits, as the MAC is currently a 16x16 operation. However,
A more convenient approach is to represent the operation with a vector length of 1, 2, 4 or 8. Therefore, MA
Word operations in C can be called vector length one, while halfword pair operations will be vector length two. The MAC, including the destination accumulator, is the one currently used to perform operations.

【0090】ハーフワード対演算は両方のMACユニッ
トを用いる。命令は特定の累算器を宛先累算器として特
定し、これはアドレス指定される累算器となる。アドレ
ス指定される宛先累算器を含むMACは下位のハーフワ
ード対要素で演算を行ない、他方の(「対応する」)M
ACは同じ演算を上位のハーフワード対要素で行なう。
対応するMACからの結果は対応する累算器にストアさ
れ、アドレス指定される累算器と対応する累算器とはそ
れらのそれぞれのレジスタファイルにおいて同じ相対位
置に位置する。
Halfword pair operations use both MAC units. The instruction identifies the particular accumulator as the destination accumulator, which becomes the addressed accumulator. A MAC that includes an addressed accumulator that is addressed operates on the lower halfword pair element and the other ("corresponding") M
AC performs the same operation on the upper halfword pair element.
The result from the corresponding MAC is stored in the corresponding accumulator, and the addressed accumulator and the corresponding accumulator are located at the same relative position in their respective register files.

【0091】倍精度演算はハーフワードおよびワードで
行なわれ、この演算は二重MACとして組合せられる2
つのMACによって行なわれる。「上位」MACは計算
の最上位部を行ない、「下位」MACは計算の最下位部
を行なう。
Double precision operations are performed on halfwords and words, and this operation is combined as a dual MAC.
One MAC. The "upper" MAC does the top part of the calculation and the "lower" MAC does the bottom part of the calculation.

【0092】MACユニットは、整数オペランドまたは
小数オペランド、および符号付または符号なしオペラン
ドをサポートしてもよい。
The MAC unit may support integer or fractional operands and signed or unsigned operands.

【0093】累算器レジスタファイル 2つのMACユニットは上位MACおよび下位MACと
呼ばれる。各MACは4つの40ビットのガードされる
累算器レジスタから構成される累算器レジスタファイル
を有し、ALUには合計8つの累算器がある。各ガード
される累算器(AGn)は、最上位端が8ビットのガー
ドレジスタ(Gn)でもって拡張される32ビット累算
器レジスタ(An)から構成される。図16は累算器レ
ジスタファイルのレイアウトを示す。
Accumulator Register File The two MAC units are called upper MAC and lower MAC. Each MAC has an accumulator register file consisting of four 40-bit guarded accumulator registers, for a total of eight accumulators in the ALU. Each guarded accumulator (AGn) consists of a 32-bit accumulator register (An) that is extended with an 8-bit guard register (Gn) at the most significant end. FIG. 16 shows the layout of the accumulator register file.

【0094】ハーフワード対オペランドの累算器は2つ
の累算器にストアされる。ハーフワード対の下位要素
は、いずれかのMACの1つの累算器において、40ビ
ット数として累算される。ハーフワード対の上位要素
は、他方のMACにある対応する累算器において、40
ビット数として累算される(図17は対応するアドレス
を示す)。
The halfword pair operand accumulator is stored in two accumulators. The subelements of a halfword pair are accumulated as a 40-bit number in one accumulator of either MAC. The upper element of the halfword pair is 40 in the corresponding accumulator in the other MAC.
It is accumulated as the number of bits (FIG. 17 shows the corresponding address).

【0095】2つの累算器は、倍精度ステップ演算の結
果をストアするためにさらに用いられる。結果の最上位
部は、上位MACのガードされる累算器AGにストアさ
れる。結果の最下位部は、下位MACの累算器Aにスト
アされる。下位MAC累算器のガードビットは使用され
ない。
The two accumulators are further used to store the results of double precision step operations. The most significant part of the result is stored in the guarded accumulator AG of the upper MAC. The least significant part of the result is stored in the accumulator A of the lower MAC. The lower MAC accumulator guard bits are not used.

【0096】各累算器は、レジスタ空間に、上位および
下位累算器アドレスまたは上位および下位冗長アドレス
と呼ばれる2つのアドレスを有する。(累算器nのため
のこれらのアドレスのアセンブリ言語名はそれぞれAn
HおよびAnLである。)どちらのアドレスが使用され
るかということの効果は、レジスタが命令においてどの
ように用いられるかに依存し、これらの効果は以下のサ
ブセクションにおいて詳細に述べられる。
Each accumulator has two addresses in the register space called the upper and lower accumulator addresses or the upper and lower redundant addresses. (The assembly language name of these addresses for accumulator n is An respectively
H and AnL. The effect of which address is used depends on how the register is used in the instruction, and these effects are discussed in detail in the subsections below.

【0097】命令フォーマット(およびアセンブリ言
語)はアドレス指定累算器の幾つかの方法を提供する。
The instruction format (and assembly language) provides several ways of addressing accumulators.

【0098】・レジスタ空間の要素として。各累算器
は、111ないし127の範囲に、アセンブリ言語記号
をARnHおよびARnLとする上位アドレスおよび下
位アドレスを有する。
As an element of register space. Each accumulator has a high and low address in the range 111 to 127 with assembly language symbols ARnH and ARnL.

【0099】・累算器オペランドとして。命令フォーマ
ットは範囲0−7にある数をとり、対応するアセンブリ
言語記号はAn形式である。
As an accumulator operand. The instruction format takes a number in the range 0-7 and the corresponding assembly language symbol is the An format.

【0100】・別々の上位アドレスおよび下位アドレス
を有する累算器オペランドとして。命令フィールドは範
囲0−15にある値をとり、アセンブリ言語フォーマッ
トはAnHまたはAnLである。
As an accumulator operand with separate upper and lower addresses. The instruction field takes values in the range 0-15 and the assembly language format is AnH or AnL.

【0101】8つのガードレジスタの各々は拡張レジス
タ空間にアドレスを有する(160−167;アセンブ
リ言語記号はAGn形式を有する)。
Each of the eight guard registers has an address in the extended register space (160-167; assembly language symbols have the AGn format).

【0102】このセクションの残りのサブセクション
は、累算器およびガードレジスタの、命令としての取扱
いを特定する。レジスタがソースであるかまたは宛先で
あるか、および演算の要素がワードであるかまたはハー
フワード対であるかによって、多数の特別な例がある。
The remaining subsections of this section specify the treatment of accumulators and guard registers as instructions. There are many special examples, depending on whether the register is the source or the destination and the element of the operation is a word or a halfword pair.

【0103】1.ワードソースオペランドとしての累算
上位累算器アドレスは累算器Anの上位32ビットを小
数ワードオペランドとして特定し、下位アドレスはAn
の下位32ビットを整数ワードオペランドとして特定す
る。プロセッサの現在のバージョンでは、累算器は32
ビットの長さなので、両方のアドレスとも同じ32ビッ
トを参照する。しかしながら、一般的なプロセッサアー
キテクチャはより長い累算器を可能にする。ガードビッ
トは、累算器(アセンブリ言語An)を32ビットソー
スオペランドとして用いる命令によって無視される。命
令が、ガードされる累算器(アセンブリ言語AGn)を
用いることを、たとえば累算レジスタのためにまたはス
ケーラへの入力として特定する場合には、ガードビット
は40ビットソースオペランドに含まれる。
1. Accumulation as word source operand
The upper-order accumulator address specifies the upper 32 bits of the accumulator An as a decimal word operand, and the lower-order address is An.
The lower 32 bits of are specified as an integer word operand. In the current version of the processor, the accumulator is 32
Because of the length of the bits, both addresses refer to the same 32 bits. However, common processor architectures allow longer accumulators. Guard bits are ignored by instructions that use accumulators (assembly language An) as 32-bit source operands. If the instruction specifies to use a guarded accumulator (assembly language AGn), for example for an accumulator register or as input to the scaler, the guard bit is included in the 40-bit source operand.

【0104】バス構造は、現在、各MACからの1つの
累算器レジスタが任意の所与の命令において明示される
ソースオペランドとして用いられることを可能にする。
The bus structure currently allows one accumulator register from each MAC to be used as the source operand specified in any given instruction.

【0105】累算器が乗算演算のためのソースオペラン
ドとして選択されると、32ビットすべてが累算器によ
って提示される。命令はさらに、整数/小数オプション
によって、乗算アレイへの入力のための下位または上位
ハーフワードを選択する。
When the accumulator is selected as the source operand for the multiply operation, all 32 bits are presented by the accumulator. The instruction further selects the lower or upper halfword for input to the multiply array with an integer / fraction option.

【0106】2.ハーフワード対ソースオペランドとし
ての累算器 ハーフワード対の各要素は、累算器に、あたかもワード
オペランドであるかのように保持される。ハーフワード
対の2つの要素は、別個のMACにある対応する累算器
にストアされる。それらのそれぞれのMAC内で累算器
レジスタとしてまたはスケーラへの入力として用いられ
るときは、それらは40ビットソースオペランドとして
用いられる。
2. Halfword vs source operand
Each element of every accumulator halfword pair is held in the accumulator as if it were a word operand. The two elements of the halfword pair are stored in corresponding accumulators on separate MACs. When used as accumulator registers in their respective MACs or as inputs to the scaler, they are used as 40-bit source operands.

【0107】それ以外の場合には、要素はハーフワード
対オペランドで2つのハーフワードとしてアセンブルさ
れる。ハーフワード対ソースオペランドが上位累算器ア
ドレスである場合には、各要素に対し累算器の上位ハー
フワードが用いられる。下位累算器アドレスが用いられ
る場合には、下位ハーフワードが用いられる。アドレス
指定される累算器は下位ハーフワードを与え、対応する
累算器は上位ハーフワードを与える。いずれのMACも
ハーフワード対のいずれの要素をも供給することができ
る。
Otherwise, the elements are assembled as two halfwords in a halfword pair operand. If the halfword-to-source operand is the upper accumulator address, the upper halfword of the accumulator is used for each element. If the lower accumulator address is used, the lower halfword is used. The addressed accumulator provides the lower halfword and the corresponding accumulator provides the upper halfword. Any MAC can supply any element of a halfword pair.

【0108】3.倍精度ソースオペランドとしての累算
累算器は倍精度ステップ演算においてのみ精度ソースオ
ペランドのために用いられる。アドレス指定される累算
器は最下位32ビットを与え、対応するガードされる累
算器は最上位40ビットを与える。
3. Accumulate as double precision source operand
The accumulator is used for precision source operands only in double precision step operations. The addressed accumulator provides the least significant 32 bits and the corresponding guarded accumulator provides the most significant 40 bits.

【0109】4.ソースオペランドとしてのガードレジ
スタ 8ビットガードレジスタ(Gx)は符号拡張整数として
拡張レジスタ空間から直接アクセスすることができる。
ガードレジスタがハーフワード対演算のソースオペラン
ドである場合、アドレス指定されるガードは最下位ハー
フワードオペランドとなり、対応するガードは最上位ハ
ーフオペランドとなる。両方の例において、ガードレジ
スタは16ビットに符号拡張される。
4. Guard register as source operand
The star 8-bit guard register (Gx) can be directly accessed from the extension register space as a sign extension integer.
If the guard register is the source operand of a halfword pair operation, the guard addressed is the lowest halfword operand and the corresponding guard is the highest half operand. In both examples, the guard register is sign extended to 16 bits.

【0110】5.ワード宛先オペランドとしての累算器 MACを用いるワード演算では、乗算演算の32ビット
結果は、宛先累算器にストアされ、そのガードレジスタ
を介して符号拡張される。累算演算の40ビット結果は
宛先ガード累算器にストアされる。
5. For word operations with accumulator MAC as the word destination operand, the 32-bit result of the multiply operation is stored in the destination accumulator and sign extended via its guard register. The 40-bit result of the accumulate operation is stored in the destination guard accumulator.

【0111】他の、レジスタからレジスタへの命令で
は、結果は、宛先累算器に移動させられ、そのガードレ
ジスタを介して符号拡張される。
In another register-to-register instruction, the result is moved to the destination accumulator and sign-extended through its guard register.

【0112】6.ワード対宛先オペランドとしての累算
ワード対のデータタイプの変換を特定する累算器を目標
とするロード命令では、下位メモリアドレスからのワー
ドはアドレス指定される累算器にロードされ、より上位
のメモリアドレスからのワードの最下位バイトは累算器
のガードレジスタにロードされる。
6. Accumulate as word versus destination operand
In a load instruction that targets an accumulator that specifies the conversion of the data type of an instrument word pair, the word from the lower memory address is loaded into the addressed accumulator, and the highest word from the higher memory address is loaded. The low byte is loaded into the accumulator guard register.

【0113】7.ハーフワード対宛先オペランドとして
の累算器 2つのMACユニットを用いるハーフワード対演算で
は、各MACの結果はその累算器ファイルにストアされ
る。宛先累算器を含むMACは下位のハーフワード対要
素を処理し、その40ビット結果はそのガードされる累
算器(AG)にストアされる。対応するMACは上位の
ハーフワード対要素を処理し、その40ビット結果は対
応するガードされる累算器(AGC)にストアされる。
7. Halfword vs as destination operand
Accumulator In a halfword pair operation using two MAC units, the result of each MAC is stored in its accumulator file. The MAC containing the destination accumulator processes the lower halfword pair element and its 40-bit result is stored in its guarded accumulator (AG). The corresponding MAC processes the upper halfword pair element and its 40-bit result is stored in the corresponding guarded accumulator (AGC).

【0114】他の、レジスタからレジスタへの命令で
は、宛先累算器のために選択される特定の累算器アドレ
スが、結果をどのようにストアするかを判断する。上位
アドレスが用いられる場合には、最下位ハーフワード
は、選択される累算器の最上位半分にロードされ、右側
へゼロ拡張され、そのガードレジスタを介して符号拡張
される。最上位ハーフワードは、対応する累算器の最上
位半分にロードされ、右側へゼロ拡張され、そのガード
レジスタを介して符号拡張される。下位アドレスが用い
られる場合には、最下位ハーフワードは、選択される累
算器の最下位半分にロードされ、選択される累算器の最
上位半分を介し、次いでそのガードレジスタを介して符
号拡張される。最上位ハーフワードは、対応する累算器
の最下位半分にロードされ、上述のように符号拡張され
る。
In another register-to-register instruction, the particular accumulator address selected for the destination accumulator determines how the result is stored. If the high address is used, the lowest halfword is loaded into the highest half of the selected accumulator, zero-extended to the right, and sign-extended through its guard register. The most significant halfword is loaded into the most significant half of the corresponding accumulator, zero-extended to the right, and sign-extended through its guard register. If the lower address is used, the least significant halfword is loaded into the least significant half of the selected accumulator and coded through the most significant half of the selected accumulator and then through its guard register. To be extended. The most significant halfword is loaded into the least significant half of the corresponding accumulator and sign extended as described above.

【0115】8.倍精度オペランドとしての累算器 倍精度乗算ステップ演算の結果の最下位32ビットは宛
先累算器にストアされ、最上位40ビットは対応するガ
ードされる累算器にストアされる。宛先累算器のガード
ビットはすべてゼロにセットされる。
8. Accumulator as Double Precision Operand The least significant 32 bits of the result of the double precision multiply step operation are stored in the destination accumulator and the most significant 40 bits are stored in the corresponding guarded accumulator. The destination accumulator guard bits are all set to zero.

【0116】9.宛先オペランドとしてのガードレジス
ガードレジスタが宛先オペランドである場合、結果の8
つの最下位ビットはアドレス指定されるガードレジスタ
にストアされる。ガードレジスタがハーフワード対演算
の宛先オペランドとしてもちいられる場合には、結果の
8つの最下位ビットはアドレス指定されるガードレジス
タにストアされ、上位ハーフワードの8つの最下位ビッ
トは対応するガードレジスタにストアされる。
9. Guard register as destination operand
If data guard register is the destination operand, the result 8
The two least significant bits are stored in the addressed guard register. If the guard register is used as the destination operand of a halfword pair operation, the 8 least significant bits of the result are stored in the addressed guard register and the 8 least significant bits of the upper halfword are stored in the corresponding guard register. Stored.

【0117】乗算アレイ ここで図15を参照する。各MACのための乗算アレイ
または乗算ユニットは、2つの16ビット入力から32
ビットの積を生ずる。符号付および符号なし入力、整数
および小数入力は、任意の組合せで乗算されてもよい。
整数入力の場合、ソースオペランドの最下位ハーフワー
ドが用いられる。小数入力の場合は、最上位ハーフワー
ドが用いられる。図18は入力のスケーリングを示し、
図19は出力スケーリングを示す。
Multiplication Array Reference is now made to FIG. The multiplication array or unit for each MAC is 32 from the two 16-bit inputs.
Produces a product of bits. Signed and unsigned inputs, integer and decimal inputs may be multiplied in any combination.
For integer inputs, the least significant halfword of the source operand is used. For decimal input, the most significant halfword is used. Figure 18 shows the input scaling,
FIG. 19 shows output scaling.

【0118】2つのワードオペランドまたは1つのワー
ドおよび1つの即値オペランドが乗算される場合には、
宛先累算器を含むMACのみが用いられる。2つのHP
オペランドまたは1つのHPおよび1つの即値オペラン
ドが乗算される場合には、両方のMACが用いられ、宛
先累算器を含むMACは下位のHP要素を乗算する。
If two word operands or one word and one immediate operand are to be multiplied,
Only the MAC containing the destination accumulator is used. 2 HP
If the operands or one HP and one immediate operand are multiplied, both MACs are used and the MAC containing the destination accumulator multiplies the lower HP elements.

【0119】ともに用いられる2つの乗算アレイは、図
18に従ってスケーリングされる1つの16ビット入力
と1つの32ビット入力とから48ビットの積を生ず
る。この積は、図20および図21に従ってスケーリン
グされる。
The two multiply arrays used together yield a 48-bit product from one 16-bit input and one 32-bit input scaled according to FIG. This product is scaled according to FIGS. 20 and 21.

【0120】乗算飽和 −1.0が累算なしで(16ビットの符号付小数とし
て)−1.0によって乗算される場合、結果(+1.
0)は飽和して、ガードビットへのオーバフローを防
ぐ。最大の正の数は累算器(A)に置かれ、ガードビッ
トはゼロにセットされる。乗算命令が累算を含む場合に
は、結果は飽和せず、代わりに完全な結果が宛先ガード
累算器において累算されそこに置かれる。
Multiply Saturation If -1.0 is multiplied by -1.0 (as a 16-bit signed fraction) without accumulation, the result (+1.
0) saturates to prevent overflow to guard bits. The largest positive number is placed in the accumulator (A) and the guard bit is set to zero. If the multiply instruction involves an accumulate, the result will not saturate and instead the complete result will be accumulated and placed in the destination guard accumulator.

【0121】乗算スケーリング 図18、図19、図20および図21は、乗算演算のた
めのソースオペランドおよび結果のスケーリングを示
す。表は、小数点の想定された位置および任意の符号ビ
ットの処理を示す。
Multiply Scaling FIGS. 18, 19, 20 and 21 show the scaling of source operands and results for multiply operations. The table shows the assumed position of the decimal point and the treatment of any sign bit.

【0122】図18は乗算演算のためのソースオペラン
ドのスケーリングを示す。図19は32ビットの積のた
めのスケーリングを示す。図20および図21は48ビ
ットの積のためのスケーリングを示す。(図20(a)
および(b)は、下位および上位MACにおいてそれぞ
れ右寄せされる積のスケーリングを示し、同様に図21
(a)および(b)は左寄せされた積のスケーリングを
示す。)累算加算器 図15を参照すると、各MACは、累算器に入力を加算
することのできる(または累算器から入力を減算するこ
とのできる)累算加算器を含む。考えられ得る入力は、
乗算アレイからの積、即値オペランド、いずれかのMA
Cからの累算器、またはワードもしくはハーフワード対
含むレジスタである。
FIG. 18 illustrates the scaling of source operands for multiply operations. FIG. 19 shows the scaling for a 32-bit product. 20 and 21 show scaling for a 48-bit product. (Fig. 20 (a)
And (b) show scaling of right-justified products in lower and upper MAC, respectively, also in FIG.
(A) and (b) show scaling of left-justified products. ) Accumulating Adder Referring to FIG. 15, each MAC includes an accumulating adder capable of adding inputs to (or subtracting inputs from) an accumulator. Possible inputs are:
Product from multiplication array, immediate operand, either MA
Accumulator from C, or register containing word or halfword pairs.

【0123】累算初期化特性は、ステータスレジスタ
(ST)(図示せず)のIMAC(抑止MAC累算)ビ
ットによって制御される。乗算/累算演算を行なう命令
が実行され、IMACビットが真(=1)である場合に
は、宛先累算器は入力オペランドに初期化され、IMA
Cビットは偽(=0)にリセットされる(実際には、宛
先累算器は、入力が累算される前に0にセットされ
る)。
The accumulation initialization characteristics are controlled by the IMAC (inhibit MAC accumulation) bit of the status register (ST) (not shown). If the instruction performing the multiply / accumulate operation is executed and the IMAC bit is true (= 1), the destination accumulator is initialized to the input operand and the IMA
The C bit is reset to false (= 0) (actually the destination accumulator is set to 0 before the inputs are accumulated).

【0124】同様の初期化および丸め特性は、ステータ
スレジスタのIMARビットによって制御される。IM
ARビットが真である間に、累算加算器演算を行なう命
令が実行されると、累算レジスタは丸め係数によって置
き換えられ、宛先累算器は入力オペランドに切上げビッ
トを加えたものに初期化され、IMARビットは偽にリ
セットされる。丸め係数は、下位ハーフワードの最上位
ビットにある1を除き、すべて0である。
Similar initialization and rounding characteristics are controlled by the IMAR bit in the status register. IM
When an instruction that performs a cumulative adder operation is executed while the AR bit is true, the accumulate register is replaced by the rounding factor and the destination accumulator is initialized to the input operand plus the rounding bit. And the IMAR bit is reset to false. The rounding factors are all 0s, except for the 1s in the most significant bit of the lower halfword.

【0125】いくつかの乗算命令は、累算加算器におい
て実行される丸めオプションを含む。丸められた結果は
宛先累算器の上位ハーフワードに置かれ、ゼロは下位ハ
ーフワードに置かれる。結果は、下位ハーフワードと上
位ハーフワードとの間に小数点を有すると考えられるべ
きであり、結果は最も近い整数に丸められ、下位ハーフ
ワードが1/2である場合には(つまり上位ビットが1
である場合には)、結果は最も近い偶数の整数に丸めら
れる。
Some multiply instructions include a rounding option implemented in the accumulator adder. The rounded result is placed in the upper halfword of the destination accumulator and zero is placed in the lower halfword. The result should be considered to have a decimal point between the lower halfword and the upper halfword, the result is rounded to the nearest integer, and if the lower halfword is ½ (ie the upper bits are 1
, The result is rounded to the nearest even integer.

【0126】累算加算器のオーバフローはオーバフロー
フラグをセットしない。飽和オプションを有する累算命
令に対してオーバフロー生ずると、ガードされる累算器
はオーバフローの方向に従ってそれの最も大きい正の数
または最も小さい負の数にセットされる。命令が飽和を
特定せず、かつ誤り例外が可能化される場合には、オー
バフローは誤り例外要求を生ずる。飽和を有するオーバ
フローおよび飽和を有しないオーバフローのために、デ
バッグ論理に別個の信号が送られる。
Overflow of the accumulator does not set the overflow flag. When an overflow occurs for an accumulate instruction with the saturation option, the guarded accumulator is set to its largest positive or smallest negative number depending on the direction of overflow. If the instruction does not specify saturation and error exceptions are enabled, overflow results in an error exception request. Separate signals are sent to the debug logic for overflow with saturation and overflow without saturation.

【0127】図22は、累算レジスタに加算されるワー
ドまたは累算器オペランドを示す。図23は、累算レジ
スタにあるハーフワード対に加算される(レジスタまた
は累算器からの)ハーフワード対オペランドを示す。
FIG. 22 shows a word or accumulator operand that is added to the accumulate register. FIG. 23 shows a halfword pair operand (from a register or accumulator) that is added to a halfword pair in an accumulation register.

【0128】図24は、累算レジスタに加算される積を
示す。図25は、累算レジスタにあるハーフワード対に
加算されるハーフワード対の積を示す。
FIG. 24 shows the products added to the accumulation register. FIG. 25 shows the product of halfword pairs that are added to the halfword pairs in the accumulation register.

【0129】図26は、右寄せオプションを用いて累算
される48ビットの積を示す。このオプションは、整数
結果が所望される16×32積、または32×32積の
第1のステップに適用できる。
FIG. 26 shows a 48-bit product accumulated using the right justify option. This option is applicable to the first step of a 16x32 product, or a 32x32 product, where an integer result is desired.

【0130】図27は、左寄せオプションを用いて累算
される48ビット積を示す。このオプションは、小数結
果が所望される16×32積、または32×32積の第
2のステップに適用できる。
FIG. 27 shows a 48-bit product accumulated using the left justification option. This option is applicable to the second step of a 16x32 product, or a 32x32 product, where a fractional result is desired.

【0131】図28−図36は、この発明の空間ベクト
ルデータ経路に従って実現されるであろう演算の命令の
まとめである。
28-36 are a summary of the operational instructions that would be implemented according to the space vector data path of the present invention.

【0132】スケーラ 図15を参照すると、スケーラユニットは、ガードされ
る累算器の全長上で、0ないし8ビット位置の右バレル
シフトを行なうことができる。最上位ガードビットは空
いたビットに伝搬される。
Scaler Referring to FIG. 15, the scaler unit can perform a right barrel shift of 0 to 8 bit positions over the length of the guarded accumulator. The most significant guard bit is propagated to the vacant bit.

【0133】ガードビットと結果の最上位ビットとがす
べて一致しない場合には、スケーラ命令の間にオーバフ
ローが生ずる。(これらのビットが一致する場合には、
それは、累算器の符号ビットがガードレジスタ全体を通
って伝搬し、累算器のオーバフローはガードビットには
生じなかったことを意味する。) スケーラ命令はオーバフローが生じた際に結果を飽和す
るオプションをサポートする。この例においては、結果
は、オーバフローの方向に依って、最も大きい正の数ま
たは最も小さい負の数に1つの最下位ビットを加えても
のにセットされる(最上位ガードビットは、元の数が正
であったかまたは負であったかを示す。) オーバフローが生じ、飽和が特定されなかったときに、
誤り例外が可能化された場合には誤り例外が生ずる。飽
和のないオーバフローおよび飽和のあるオーバフロー
は、別個の信号でデバッグ論理に報告される。
If the guard bits and the most significant bit of the result do not all match, an overflow occurs during the scaler instruction. (If these bits match,
That means the sign bit of the accumulator propagates through the entire guard register and no overflow of the accumulator occurred in the guard bit. The scaler instruction supports an option to saturate the result when an overflow occurs. In this example, the result is set to the largest positive or smallest negative number plus one least significant bit, depending on the direction of the overflow (the most significant guard bit is the original number). Was positive or negative.) When overflow occurred and saturation was not specified,
An error exception occurs if the error exception is enabled. Unsaturated and saturated overflows are reported to the debug logic in separate signals.

【0134】累算器を正規化するのに、レジスタへの移
動がスケーリングされる累算器(MAR)を用いてもよ
い。累算器Anを正規化するためには: MAR Rx,AnH,♯8;8ビットでAGnを
スケーリングする MEXP Rc,Rx;指数を測定する SUBRU.W.SAT Rc,Rc,♯8;正規
化に必要なシフト数を計算する MAR Rx,AnH,Rc;累算器の内容を正規
化する このシーケンスの後、Rcはガードされる累算器を正規
化するのに必要なシフト数を含み、Rxは正規化された
結果を含む。
To normalize the accumulator, a move to register scaled accumulator (MAR) may be used. To normalize the accumulator An: MAR Rx, AnH, # 8; Scale AGn with 8 bits MEXP Rc, Rx; Measure exponent SUBRU. W. SAT Rc, Rc, # 8; Calculate the number of shifts required for normalization MAR Rx, AnH, Rc; Normalize the contents of the accumulator After this sequence, Rc normalizes the guarded accumulator Rx contains the normalized result.

【0135】この発明は図1−図36を参照して記載さ
れてきたが、この発明の教示は当業者によって決定され
るようなさまざまな処理スキームに適用されてもよいこ
とが理解される。
Although the present invention has been described with reference to FIGS. 1-36, it is understood that the teachings of the present invention may be applied to various processing schemes as determined by those skilled in the art.

【図面の簡単な説明】[Brief description of drawings]

【図1】(a)は、従来の単一命令、多重データ(SI
MD)コンピュータの概念的な図である。(b)はSI
MDコンピュータに用いられる処理素子の単純な図であ
る。
FIG. 1A shows a conventional single instruction, multiple data (SI).
MD) is a conceptual diagram of a computer. (B) is SI
FIG. 3 is a simple diagram of a processing element used in an MD computer.

【図2】この発明を組込むであろうプログラマブルプロ
セッサの一般化された図である。
FIG. 2 is a generalized diagram of a programmable processor that will incorporate the present invention.

【図3】(a)は、処理ユニットのためのALUに組込
まれるであろう従来の加算器の模式図である。(b)お
よび(c)は、この発明を実現するであろう加算器の模
式図である。
FIG. 3 (a) is a schematic diagram of a conventional adder that would be incorporated into an ALU for a processing unit. (B) and (c) are schematic diagrams of an adder that will implement the present invention.

【図4】(a)は、処理ユニットのためのALUに組込
まれるであろう従来の論理ユニットの模式図である。
(b)および(c)は、この発明を実現するであろう論
理ユニットの模式図である。
FIG. 4 (a) is a schematic diagram of a conventional logic unit that would be incorporated into an ALU for a processing unit.
(B) and (c) are schematic diagrams of logic units that will implement the present invention.

【図5】(a)および(b)は、この発明を実連するで
あろう従来のシフタの模式図である。
5 (a) and 5 (b) are schematic views of a conventional shifter that will actually implement the present invention.

【図6】この発明を組込むであろうシフタの図である。FIG. 6 is a diagram of a shifter that may incorporate the present invention.

【図7】この発明を組込むであろうシフタの図である。FIG. 7 is a diagram of a shifter that may incorporate the present invention.

【図8】この発明を組込むであろうシフタの図である。FIG. 8 is a diagram of a shifter that may incorporate the present invention.

【図9】従来の乗算累算器(MAC)の単純な図であ
る。
FIG. 9 is a simple diagram of a conventional Multiply Accumulator (MAC).

【図10】MACがこの発明をどのように組込み得るか
を示す図である。
FIG. 10 is a diagram showing how a MAC may incorporate the present invention.

【図11】MACが32×16モードでこの発明をどの
ようにして組込み得るかを示す図である。
FIG. 11 is a diagram showing how a MAC may incorporate the present invention in a 32 × 16 mode.

【図12】32×16モードのためのMAC内の相互接
続を示す図である。
FIG. 12 shows the intra-MAC interconnection for 32 × 16 mode.

【図13】この発明を組込む処理素子の単純な機能図で
ある。
FIG. 13 is a simple functional diagram of a processing element incorporating the present invention.

【図14】この発明を組込むALUおよびシフタの単純
な図である。
FIG. 14 is a simple diagram of an ALU and shifter incorporating the present invention.

【図15】デュアルMAC構成を示す図である。FIG. 15 is a diagram showing a dual MAC configuration.

【図16】累算器レジスタファイルのレイアウトを示す
図である。
FIG. 16 is a diagram showing a layout of an accumulator register file.

【図17】(a)および(b)は、対応する累算器アド
レスを示す図である。
17 (a) and (b) are diagrams showing corresponding accumulator addresses.

【図18】乗算演算のためのソースオペランドおよび結
果のスケーリングを示す図である。
FIG. 18 is a diagram showing source operands for multiplication operations and scaling of results.

【図19】乗算演算のためのソースオペランドおよび結
果のスケーリングを示す図である。
FIG. 19 is a diagram showing source operands for multiplication operations and scaling of results.

【図20】(a)および(b)は、乗算演算のためのソ
ースオペランドおよび結果のスケーリングを示す図であ
る。
20 (a) and (b) are diagrams showing source operand and result scaling for multiplication operations.

【図21】(a)および(b)は、乗算演算のためのソ
ースオペランドおよび結果のスケーリングを示す図であ
る。
21 (a) and (b) are diagrams showing source operand and result scaling for multiplication operations.

【図22】累算器レジスタに加算されるワードまたは累
算器オペランドを示す図である。
FIG. 22 illustrates a word or accumulator operand added to an accumulator register.

【図23】累算レジスタでハーフワード対に加算される
ハーフワード対オペランドを示す図である。
FIG. 23 illustrates a halfword pair operand that is added to a halfword pair in an accumulation register.

【図24】累算レジスタに加算される積を示す図であ
る。
FIG. 24 is a diagram showing products added to an accumulation register.

【図25】累算レジスタでハーフワード対に加算される
ハーフワード対の積を示す図である。
FIG. 25 is a diagram showing a product of a halfword pair added to a halfword pair in an accumulation register.

【図26】右寄せオプションを用いて累算される48ビ
ットの積を示す図である。
FIG. 26 is a diagram illustrating a 48-bit product accumulated using the right justification option.

【図27】左寄せオプションを用いて累算される48ビ
ットの積を示す図である。
FIG. 27 shows a 48-bit product accumulated using the left justification option.

【図28】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 28 is a diagram showing a summary of instructions that may be implemented in accordance with the present invention.

【図29】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 29 shows a summary of instructions that may be implemented in accordance with the present invention.

【図30】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 30 shows a summary of instructions that may be implemented in accordance with the present invention.

【図31】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 31 is a diagram showing a summary of instructions that may be implemented in accordance with the present invention.

【図32】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 32 is a diagram showing a summary of instructions that may be implemented in accordance with the present invention.

【図33】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 33 is a diagram showing a summary of instructions that may be implemented in accordance with the present invention.

【図34】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 34 shows a summary of instructions that may be implemented in accordance with the present invention.

【図35】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 35 is a diagram showing a summary of instructions that may be implemented in accordance with the present invention.

【図36】この発明に従って実現されるであろう命令の
まとめを示す図である。
FIG. 36 illustrates a summary of instructions that may be implemented in accordance with the present invention.

【符号の説明】[Explanation of symbols]

100 プログラムおよびデータ記憶ユニット 110 処理ユニット 121 ALU 122 MAC 123 シフタ 124 論理ユニット 130 命令収集ユニット 140 命令フェッチ/デコーダ/シーケンスユニット 100 program and data storage unit 110 processing unit 121 ALU 122 MAC 123 shifter 124 logic unit 130 instruction collection unit 140 instruction fetch / decoder / sequence unit

フロントページの続き (72)発明者 ケニス・イー・ギャレイ アメリカ合衆国、92714 カリフォルニア 州、アーバイン、フレンズ・コート、 17531 (72)発明者 ジョージ・エイ・ワトソン アメリカ合衆国、92635 カリフォルニア 州、フラートン、ツリービュー・プレイ ス、2952 (72)発明者 ジョン・アール アメリカ合衆国、92680 カリフォルニア 州、タスティン、ウィリアムズ・ストリー ト、15512−ピーFront Page Continuation (72) Inventor Kennis E. Galley United States, 92714 California, Irvine, Friends Court, 17531 (72) Inventor George A. Watson United States, 92635 Fullerton, California, Treeview Place , 2952 (72) Inventor John Earl, United States, 92680 Williams Street, Tustin, California, 15512-pea

Claims (30)

【特許請求の範囲】[Claims] 【請求項1】 少なくとも1つのオペランドの複数デー
タ経路処理のためのプログラマブルプロセッサであっ
て、各オペランドは少なくとも1つの要素を含み、前記
プロセッサは命令フェッチ/デコード/シーケンス手段
によって判断される予め定められるシーケンスで命令を
実行し、前記プログラマブルプロセッサは、 a) 前記命令手段に結合され、前記少なくとも1つの
オペランドがベクトルおよびスカラモードのうちの1つ
で処理されるかどうかを各命令に対して特定するための
モード手段と、 b) 前記モード手段に結合される処理ユニットとを含
み、前記処理ユニットは、前記少なくとも1つのオペラ
ンドを受取り、前記モード手段によって特定される前記
命令に応答して前記ベクトルおよびスカラモードのうち
の1つにある前記少なくとも1つのオペランドを処理
し、前記ベクトルモードは複数の要素が前記オペランド
内にあることを前記処理ユニットに示し、前記スカラモ
ードは1つの要素が前記オペランド内にあることを前記
処理ユニットに示す、プログラマブルプロセッサ。
1. A programmable processor for multiple data path processing of at least one operand, each operand comprising at least one element, said processor being predetermined as determined by instruction fetch / decode / sequence means. Executing instructions in sequence, the programmable processor a) coupled to the instruction means to identify for each instruction whether the at least one operand is processed in one of a vector and a scalar mode B) a processing unit coupled to said mode means, said processing unit receiving said at least one operand and responsive to said vector identified by said mode means and said vector and In one of the scalar modes Process at least one operand, the vector mode indicates to the processing unit that there are multiple elements in the operand, and the scalar mode indicates to the processing unit that one element is in the operand. , Programmable processors.
【請求項2】 前記処理ユニットは、 a) 前記モード手段からの命令に応答し、前記少なく
とも1つのオペランドにある各それぞれの要素を同時並
列処理して、前記ベクトルモードの各それぞれの要素に
対する独立した結果を得るための第1のベクトル手段
と、 b) 前記モード手段からの前記命令に応答し、前記少
なくとも1つのオペランドにある第1の要素を、前記ベ
クトルモードの前記オペランドにある少なくともひとつ
の第2の要素との選択的組合せで処理するための第2の
ベクトル手段と、 c) 前記モード手段からの前記命令に応答し、前記オ
ペランドの各それぞれの部分を処理してそれぞれの部分
的結果を得、各それぞれの部分的結果を併せて前記スカ
ラモードでスカラ結果を引出すためのスカラ手段とを含
む、請求項1に記載のプログラマブルプロセッサ。
2. The processing unit is a) responsive to an instruction from the mode means to concurrently parallel process each respective element in the at least one operand to provide an independent operation for each respective element in the vector mode. B) responsive to the instruction from the mode means, a first element in the at least one operand is associated with at least one of the operands in the vector mode. Second vector means for processing in selective combination with a second element, and c) processing each respective part of said operand in response to said instruction from said mode means to produce a respective partial result. And scalar means for deriving a scalar result in said scalar mode by combining each respective partial result. Programmable processor.
【請求項3】 前記第1のベクトル手段およびスカラ手
段は、 a) 複数の乗算累算器と、 b) 複数のシフタと、 c) 複数の算術ユニットと、 d) 論理ユニットとのうちの少なくとも1つを備え、 各々は、ベクトルオペランド内の少なくともひとつのそ
れぞれの要素と、スカラオペランドのそれぞれの部分と
のうちの1つを処理する、請求項2に記載のプログラマ
ブルプロセッサ。
3. The first vector means and the scalar means are at least one of a) a plurality of multiply-accumulators, b) a plurality of shifters, c) a plurality of arithmetic units, and d) a logic unit. The programmable processor of claim 2, comprising one, each processing one of at least one respective element in the vector operand and each portion of the scalar operand.
【請求項4】 前記スカラ手段は条件付移動を行ない、
前記第2のベクトル手段と前記スカラ手段とは前記第2
のベクトルモードにある前記オペランド内の前記第1お
よび第2の要素の前記選択的組合せに基づいて条件付き
分岐を行なう、請求項3に記載のプログラマブルプロセ
ッサ。
4. The scalar means performs conditional movement,
The second vector means and the scalar means are the second
4. The programmable processor of claim 3, wherein conditional branching is performed based on said selective combination of said first and second elements in said operand in said vector mode.
【請求項5】 前記処理ユニットは、 a) 前記ベクトルおよびスカラモードのうちの1つで
動作する複数の加算器を備え、前記複数の加算器の各加
算器は前記モード手段によって特定されるベクトルオペ
ランドからの要素を受取りそれを個別に処理し、前記複
数の加算器は前記モード手段によって特定されるスカラ
オペランドを受取ってそれをともに処理し、前記処理ユ
ニットはさらに、 b) 前記複数の加算器に結合され、前記複数の加算器
が1つの加算器として前記スカラオペランドを処理する
よう、キャリーステータスを前記スカラもどで前記複数
の加算器の各々の間で送るための加算器制御手段を備え
る、請求項1に記載のプログラマブルプロセッサ。
5. The processing unit comprises: a) a plurality of adders operating in one of the vector and scalar modes, each adder of the plurality of adders being a vector specified by the mode means. The elements from the operands are received and processed individually, the adders receive a scalar operand specified by the mode means and process it together, the processing unit further comprising: b) the adders. And adder control means for sending a carry status between each of the plurality of adders in the scalar mode so that the plurality of adders treat the scalar operand as one adder. The programmable processor according to claim 1.
【請求項6】 前記複数の加算器は1つの加算器として
前記スカラオペランドを処理するよう、前記加算器制御
手段は前記スカラモードで前記複数の加算器の各々の間
でオーバフローステータスをさらに送る、請求項5に記
載のプログラマブルプロセッサ。
6. The adder control means further sends an overflow status between each of the plurality of adders in the scalar mode so that the plurality of adders processes the scalar operand as one adder. The programmable processor according to claim 5.
【請求項7】 前記処理ユニットは、 a) 前記ベクトルおよびスカラモードのうちの1つで
動作する複数の乗算累算器(MAC)を備え、各MAC
は前記モード手段によって特定されるようなベクトルオ
ペランド内の要素を受取ってそれを別個に同時並列処理
し、前記複数のMACは前記モード手段によって特定さ
れるスカラオペランドを受取りそれをともに処理し、前
記処理ユニットはさらに、 b) 前記MACに結合され、前記モード手段に応答
し、前記複数のMACを、ベクトルモードでは互いに独
立して動作させ、スカラモードではともに動作させるた
めのMAC制御手段を備える、請求項1に記載のプログ
ラマブルプロセッサ。
7. The processing unit comprises: a) a plurality of Multiplier Accumulators (MACs) operating in one of the vector and scalar modes, each MAC
Receives the elements in the vector operand as specified by the mode means and concurrently processes them separately in parallel, the plurality of MACs receives the scalar operand specified by the mode means and processes them together, The processing unit further comprises: b) MAC control means coupled to the MAC and responsive to the mode means for operating the plurality of MACs independently of each other in the vector mode and together in the scalar mode. The programmable processor according to claim 1.
【請求項8】 前記処理ユニットは、 a) 前記ベクトルおよびスカラモードのうちの1つで
動作する複数の論理ユニットを備え、前記複数の論理ユ
ニットの各論理ユニットは前記モード手段によって特定
されるようなベクトルオペランド内の要素を受取ってそ
れを別個に同時並列処理し、前記複数の論理ユニットは
前記モード手段によって特定されるスカラオペランドを
受取ってそれをともに処理し、前記処理ユニットはさら
に、 b) 前記複数の論理ユニットに結合され、前記複数の
論理ユニットが1つの論理ユニットとして前記スカラオ
ペランドを処理するよう、前記スカラモードで前記複数
の論理ユニットの各々の間でゼロステータスを送るため
の、論理制御手段を備える、請求項1に記載のプログラ
マブルプロセッサ。
8. The processing unit comprises: a) a plurality of logic units operating in one of the vector and scalar modes, each logic unit of the plurality of logic units being identified by the mode means. An element in a different vector operand and concurrently processing them separately in parallel, the plurality of logical units receiving a scalar operand specified by the mode means and processing it together, the processing unit further comprising: b) A logic coupled to the plurality of logical units for sending a zero status between each of the plurality of logical units in the scalar mode so that the plurality of logical units treat the scalar operand as one logical unit. The programmable processor according to claim 1, comprising control means.
【請求項9】 前記処理ユニットは、 a) 前記スカラモードでは1つの統合化されたシフタ
として、および前記ベクトルモードでは複数のシフタと
して、選択的に動作するための複数のシフタを備え、前
記複数のシフタの各々は、演算の第1のモードにある前
記モード手段に応答し、特定されるベクトルオペランド
からの要素を受取ってそれを別個に同時並列処理し、前
記複数のシフタは、第2のモードの演算にある前記モー
ド手段に応答し、スカラオペランドを受取ってそれをと
もに処理し、前記処理ユニットはさらに、 b) 前記シフタに結合され、前記複数のシフタが前記
スカラオペランドを処理するよう、シフトされたオペラ
ンドビットを前記スカラモードで前記複数のシフタの各
々の間で送るためのシフタ制御手段を含み、前記シフタ
制御手段は、前記ベクトルモードでは、前記複数のシフ
タの各々からシフトされたオペランドビットを送ること
を不能化する、請求項1に記載のプログラマブルプロセ
ッサ。
9. The processing unit comprises: a) a plurality of shifters for selectively operating as one integrated shifter in the scalar mode and as a plurality of shifters in the vector mode, Each of the shifters is responsive to the mode means in the first mode of operation and receives an element from the identified vector operand for parallel processing separately and the plurality of shifters are Responsive to the mode means in operation of a mode, receiving a scalar operand and processing it together, the processing unit further comprising: b) being coupled to the shifter, the plurality of shifters processing the scalar operand, A shifter control means for sending a shifted operand bit between each of the plurality of shifters in the scalar mode; Motor control means, in the vector mode, disabling the sending shifted operand bits from each of said plurality of shifters, programmable processor of claim 1.
【請求項10】 スカラおよびベクトルモードの1つで
オペランドの条件を評価するための比較手段をさらに含
む、請求項1に記載のプログラマブルプロセッサ。
10. The programmable processor of claim 1, further comprising comparison means for evaluating the condition of the operand in one of scalar and vector modes.
【請求項11】 前記比較手段は命令実行のシーケンス
を修飾するために各オペランドの条件を評価する、請求
項10に記載のプログラマブルプロセッサ。
11. A programmable processor according to claim 10, wherein said comparing means evaluates the condition of each operand to modify the sequence of instruction execution.
【請求項12】 第1のオペランドは前記比較手段に基
づいて第1の記憶位置から第2の記憶位置へ条件付きで
移動され、前記比較手段は、第1のオペランド内の対応
する要素が移動されるかどうかを判断するために第2お
よび第3のオペランド内の対応する要素を各々が比較す
る複数のサブ比較器を含む、請求項10に記載のプログ
ラマブルプロセッサ。
12. A first operand is conditionally moved from a first storage location to a second storage location based on said comparison means, said comparison means being such that the corresponding element in the first operand is moved. The programmable processor of claim 10, including a plurality of sub-comparators each comparing corresponding elements in the second and third operands to determine if they are done.
【請求項13】 前記モード手段は、各々の命令が命令
単位でベクトルおよびスカラモードのうちの1つを特定
するよう、各命令内にフィールドとして含まれる、請求
項1に記載のプログラマブルプロセッサ。
13. The programmable processor of claim 1, wherein the mode means is included as a field within each instruction so that each instruction specifies one of a vector and a scalar mode on an instruction-by-instruction basis.
【請求項14】 前記モード手段は各命令内にビットフ
ィールドとして含まれる、請求項13に記載のプログラ
マブルプロセッサ。
14. The programmable processor of claim 13, wherein the mode means is included as a bit field within each instruction.
【請求項15】 各オペランド内に少なくとも1つの要
素を有するオペランドをストアするためのデータメモリ
と、実行のための命令をストアするための命令メモリ
と、命令手段と、複数の算術論理ユニット(ALU)と
に結合される汎用コンピュータにおける、複数データデ
ジタル信号処理を行なうための構成であって、 a) 前記命令メモリと前記命令手段とに結合され、オ
ペランドが前記処理ユニットによってベクトルモードお
よびスカラモードのうちの1つとして処理されるかどう
かを各命令において特定するためのモード手段と、 b) 前記モード手段に応答し、前記ALUを、スカラ
オペランドの場合は第1のモードで1つのユニットとし
てともに動作させ、ベクトルオペランドの場合には各ユ
ニットが第2のモードにある状態で個々の演算ユニット
とて独立して動作させることを選択的に行なうためのA
LU制御手段と、 c) 前記ALU制御手段と前記ALUとに結合され、
スカラオペランドの場合には前記ALUの各々の間でキ
ャリー条件を選択的に送り、ベクトルオペランドの場合
は前記ALUの各々のための前記キャリー条件を無視す
るための、キャリー条件手段とを備える、各オペランド
内に少なくとも1つの要素を有するオペランドをストア
するためのデータメモリと、実行のための命令をストア
するための命令メモリと、命令手段と、複数の演算論理
ユニット(ALU)とに結合される汎用コンピュータに
おける、複数データデジタル信号処理を行なうための構
成。
15. A data memory for storing an operand having at least one element in each operand, an instruction memory for storing an instruction for execution, an instruction means, and a plurality of arithmetic logic units (ALUs). ) Is a structure for performing a multi-data digital signal processing in a general-purpose computer coupled to a), and a) is coupled to the instruction memory and the instruction means, and the operand is in a vector mode or a scalar mode by the processing unit. Mode means for specifying in each instruction whether or not to process as one of: b) in response to said mode means, said ALU together with said ALU in the first mode as one unit And in the case of vector operands with each unit in the second mode A for selectively performing be operated independently 's operation unit and by
LU control means, c) coupled to the ALU control means and the ALU,
Carry condition means for selectively sending a carry condition between each of the ALUs for a scalar operand and ignoring the carry condition for each of the ALUs for a vector operand. A data memory for storing an operand having at least one element in the operand, an instruction memory for storing an instruction for execution, an instruction means, and a plurality of arithmetic logic units (ALUs). A configuration for performing multi-data digital signal processing in a general-purpose computer.
【請求項16】 各々がその中に少なくとも1つの要素
を有するオペランドをストアするためのデータメモリ
と、実行のための命令をストアするための命令メモリ
と、命令手段と、第1の乗算累算器(MAC)とに結合
される汎用コンピュータにおける、複数データデジタル
信号処理を行なうための構成であって、 a) 前記命令メモリと前記命令手段とに結合され、オ
ペランドが前記処理ユニットによってベクトルモードお
よびスカラモードのうちの1つとして処理されるかどう
かを各命令において特定するためのモード手段と、 b) 複数のMACと、 c) 前記第1および複数のMACの各々に結合され、
前記モード手段に応答し、前記第1および複数のMAC
の各々を、ベクトルモードでは互いに独立して動作さ
せ、スカラモードではともに動作させることを選択的に
行なうためのMAC制御手段とを備える、複数データデ
ジタル信号処理を行なうための構成。
16. A data memory for storing an operand, each having at least one element therein, an instruction memory for storing an instruction for execution, an instruction means, and a first multiply accumulate. A structure for performing multiple data digital signal processing in a general-purpose computer coupled to a processor (MAC), comprising: a) being coupled to the instruction memory and the instruction means, the operands being in vector mode by the processing unit; Mode means for specifying in each instruction whether to be processed as one of the scalar modes, b) a plurality of MACs, c) coupled to each of the first and a plurality of MACs,
Responsive to said mode means, said first and plurality of MACs
For operating a plurality of data digital signals, each of which is operated independently of each other in the vector mode, and selectively operated together in the scalar mode.
【請求項17】 ALUによるオペランドの処理は、 a) 前記オペランド内の各独立した要素に結合される
各条件コードの組と、 b) 前記オペランド内の組合せにおける選択的組合せ
の、条件コードの複数の組と、 c) 前記スカラオペランドのための条件コードの前記
1つの組とのうちの1つに基づいて修飾される、請求項
15に記載の構成。
17. Processing of operands by an ALU includes: a) a plurality of condition codes, each set of condition codes being combined with each independent element in the operand; and b) a selective combination of combinations in the operands. 16. The arrangement of claim 15, modified based on one of: c) and c) the one set of condition codes for the scalar operand.
【請求項18】 前記命令の実行のシーケンスは、 a) 前記オペランド内の各独立した要素に関連する各
条件コードの組と、 b) 選択的組合せにある条件コードの複数の組とのう
ちの1つによって、第1の命令から第2の命令に修飾さ
れる、請求項15に記載の構成。
18. The sequence of execution of the instructions comprises: a) each set of condition codes associated with each independent element in the operand; and b) multiple sets of condition codes in selective combinations. 16. The arrangement of claim 15, wherein one modifies the first instruction to a second instruction.
【請求項19】 オペランドは、 a) 前記オペランド内の各々の独立した要素と関連す
る各条件コードの組と、 b) 選択的組合せにある条件コードの複数の組と、 c) 前記スカラオペランドのための条件コードの前記
1つの組とのうちの1つに基づいて、第1の記憶位置か
ら第2の記憶位置へ選択的に移動される、請求項18に
記載の信号プロセッサ。
19. The operands are: a) each set of condition codes associated with each independent element in the operand, b) multiple sets of condition codes in selective combinations, and c) of the scalar operands. 19. The signal processor of claim 18, wherein the signal processor is selectively moved from a first storage location to a second storage location based on one of the set of condition codes for and.
【請求項20】 a) 前記スカラモードでは1つの統
合されたシフタとして、および前記ベクトルモードでは
複数のシフタとして、選択的に動作するための複数のシ
フタをさらに含み、前記複数のシフタの各々は、演算の
第1のモードにある前記モード手段に応答し、特定され
るようなベクトルオペランドからの要素を受取ってそれ
を独立して処理し、前記複数のシフタは、第2のモード
演算にある前記モード手段に応答し、スカラオペランド
を受取ってそれをともに処理し、さらに、 b) 前記シフタに結合され、前記複数のシフタが前記
スカラオペランドを処理するよう、シフトされたオペラ
ンドビットを前記スカラモードで前記複数のシフタの各
々の間で送るためのシフタ制御手段を含み、前記シフタ
制御手段は前記ベクトルモードでは前記複数のシフタの
各々からシフトされたオペランドビットを送ることを不
能化する、請求項15に記載の構成。
20. a) further comprising a plurality of shifters for selectively operating as one integrated shifter in the scalar mode and as a plurality of shifters in the vector mode, each of the plurality of shifters , Responsive to said mode means in a first mode of operation, receiving an element from a vector operand as specified and processing it independently, said plurality of shifters being in a second mode of operation Responsive to the mode means, receiving a scalar operand and processing it together, and b) coupling the operand bits shifted to the scalar mode so that the plurality of shifters process the scalar operand. And including shifter control means for sending between each of the plurality of shifters in the vector mode. 16. The arrangement of claim 15, disabling sending shifted operand bits from each of the plurality of shifters.
【請求項21】 汎用コンピュータを用いる複数データ
経路計算のためのプログラマブルプロセッサであって、
前記汎用コンピュータは、オペランドをストアするため
のデータメモリと、データメモリからオペランドを転送
するためのメモリアクセスバスと、実行のための命令を
ストアするための命令メモリと、前記命令メモリに結合
され前記命令のフェッチ、デコードおよび順序付けのた
めの命令手段とを含み、前記プログラマブルプロセッサ
は、 a) 前記命令手段に結合され、データメモリからのオ
ペランドが単一データ経路モードおよび複数データ経路
モードのうちの1つで処理されるかどうかを各命令にお
いて特定するためのモード手段を含み、 b) 各データ経路は、 演算ユニットと、 乗算累算器(MAC)とを含み、前記プログラマブルプ
ロセッサはさらに、 c) 前記モード手段に応答し、各データ経路にある前
記算術ユニットを、スカラオペランドの場合は1つのモ
ードで1つのユニットとしてともに動作させ、ベクトル
オペランドの場合は各ユニットが別のモードにある状態
で個々の算術ユニットとして独立して動作させることを
選択的に行なうための演算制御手段と、 d) 前記算術制御手段と各経路にある前記算術ユニッ
トとに結合され、スカラオペランドの場合には前記算術
ユニットの各々の間でキャリー条件を選択的に送り、ベ
クトルオペランドの場合には各算術ユニットに対応する
前記キャリー条件を不能化するためのキャリー条件手段
と、 e) 各MACに結合され、前記モード手段に応答し、
ベクトルモードでは各MACを互いから独立させて動作
させ、スカラモードではともに動作させることを選択的
に行なうためのMAC制御手段とを含む、プログラマブ
ルプロセッサ。
21. A programmable processor for computing multiple data paths using a general purpose computer, comprising:
The general-purpose computer is coupled to the instruction memory, a data memory for storing an operand, a memory access bus for transferring an operand from the data memory, an instruction memory for storing an instruction for execution. Instruction means for fetching, decoding and ordering instructions, the programmable processor a) being coupled to the instruction means, wherein an operand from a data memory is one of a single data path mode and a multiple data path mode. Mode means for specifying in each instruction whether to be processed in one instruction, b) each data path includes an arithmetic unit, a multiply accumulator (MAC), and the programmable processor further comprises: c) In response to the mode means, the arithmetic unit in each data path is In order to selectively operate as a single unit in one mode in the case of a operand, and independently as an arithmetic unit in the case of a vector operand as each unit is in a different mode. Arithmetic control means, d) coupled to the arithmetic control means and the arithmetic units on each path, selectively sending a carry condition between each of the arithmetic units in the case of scalar operands, and vector operands And carry condition means for disabling the carry condition corresponding to each arithmetic unit, e) coupled to each MAC and responsive to the mode means,
A programmable processor including MAC control means for selectively operating each MAC independently of each other in the vector mode and operating them together in the scalar mode.
【請求項22】 a) 前記スカラモードでは1つの統
合されたシフタとして、および前記ベクトルモードでは
複数のシフタとして、選択的に動作するための複数のシ
フタをさらに含み、前記複数のシフタの各々は、演算の
第1のモードにある前記モード手段に応答し、特定され
るベクトルオペランドからの要素を受取ってそれを独立
して処理し、前記複数のシフタは、第2のモード演算に
ある前記モード手段に応答し、スカラオペランドを受取
ってそれをともに処理し、さらに、 b) 前記シフタに結合され、前記複数のシフタが前記
スカラオペランドを処理するよう、シフトされたオペラ
ンドビットを前記スカラモードで前記複数のシフタの各
々の間で送るためのシフタ制御手段を含み、前記シフタ
制御手段は前記ベクトルモードでは前記複数のシフタの
各々からシフトされたオペランドビットを送ることを不
能化する、請求項21に記載のプログラマブルプロセッ
サ。
22. a) further comprising a plurality of shifters for selectively operating as one integrated shifter in the scalar mode and as a plurality of shifters in the vector mode, each of the plurality of shifters Responsive to said mode means in a first mode of operation, receiving an element from a specified vector operand and processing it independently, said plurality of shifters being in said second mode of operation Responsive to the means for receiving a scalar operand and processing it together, and b) coupling the operand bits shifted in the scalar mode to the shifter such that the plurality of shifters process the scalar operand. A shifter control means for transmitting between each of the plurality of shifters, the shifter control means comprising: 22. The programmable processor of claim 21, which disables sending shifted operand bits from each of the number shifters.
【請求項23】 プログラマブルプロセッサを用いて複
数データ経路を介してデジタル信号処理を行なう方法で
あって、前記プログラマブルプロセッサは、少なくとも
1つの要素を各々が有する少なくとも1つのオペランド
で動作し、前記プログラマブルプロセッサは複数のサブ
処理ユニットを有し、前記方法は、 a) 前記プログラマブルプロセッサによって実行され
るべき命令の予め定められるシーケンスの中から命令を
供給するステップと、 b) 前記命令が、前記プログラマブルプロセッサによ
る少なくとも1つのオペランド上での処理のスカラおよ
びベクトルモードのうちの1つを生じさせるステップと
を含み、前記スカラモードは前記少なくとも1つのオペ
ランド内に1つの要素があることを前記プログラマブル
プロセッサに示し、前記ベクトルモードは前記少なくと
も1つのオペランド内に複数のサブ要素があることを前
記プログラマブルプロセッサに示し、前記方法はさら
に、 c) スカラモードの場合には、前記プログラマブルプ
ロセッサの各サブ処理ユニットは、前記命令に応答し、
前記オペランドのそれぞれの部分を受取って処理して部
分的および中間結果を発生するステップと、 d) 各サブ処理ユニットは、その中間結果を前記複数
のサブ処理ユニットの間で送り、その部分的結果を他の
サブ処理ユニットと併せて前記オペランドのための最終
結果を発生するステップと、 e) 第1の条件コードを発生して前記最終結果に対応
するステップと、 f) ベクトルモードの場合には、前記プログラマブル
プロセッサの各サブ処理ユニットは、前記命令に応答
し、前記オペランド内の前記複数のサブ要素からそれぞ
れのサブ要素を受取ってそれを処理して、各中間結果は
不能化されかつ各部分的結果はその対応する要素のため
の最終結果を表わす状態で部分的および中間結果を発生
するステップと、 g) 複数の第2の条件コードを、その各々が独立した
結果に対応する状態で発生するステップとを含む、デジ
タル信号処理方法。
23. A method of digital signal processing using a programmable processor via multiple data paths, wherein the programmable processor operates on at least one operand, each having at least one element, the programmable processor comprising: Has a plurality of sub-processing units, the method comprising: a) supplying instructions from a predetermined sequence of instructions to be executed by the programmable processor; and b) the instructions by the programmable processor. Causing one of a scalar and a vector mode of processing on at least one operand, the scalar mode indicating to the programmable processor that there is one element in the at least one operand. The vector mode indicates to the programmable processor that there are multiple sub-elements in the at least one operand, the method further comprising: c) in scalar mode, each sub-processing unit of the programmable processor is Responding to commands,
Receiving and processing respective portions of said operands to produce partial and intermediate results, and d) each sub-processing unit sending its intermediate results among said plurality of sub-processing units and its partial results. Together with other sub-processing units to generate a final result for the operands; e) generate a first condition code to correspond to the final result; and f) in vector mode. , Each sub-processing unit of the programmable processor is responsive to the instruction, receives each sub-element from the plurality of sub-elements in the operand and processes it, each intermediate result being disabled and each part Generating partial and intermediate results with the explicit result representing the final result for its corresponding element, and g) a plurality of second conditions. The over-de, and a step of generating in a state corresponding to the result of each of independent, digital signal processing method.
【請求項24】 汎用コンピュータを介する複数データ
経路計算のためのプログラマブルプロセッサであって、
前記汎用コンピュータは、オペランドをストアするため
のデータメモリと、プログラム命令をストアするための
命令メモリと、命令手段とを含み、前記プログラマブル
プロセッサは、 前記命令手段に結合され、データメモリからのオペラン
ドがベクトルおよびスカラモードのうちの1つとして処
理されるかどうかを特定するためのモード手段を含み、
ベクトルモードは各オペランド内の複数の要素を判断
し、スカラモードはオペランド内の1つの要素を判断
し、前記プログラマブルプロセッサはさらに、 モード手段とデータメモリとに結合される複数の処理ユ
ニットを含み、各処理ユニットはオペランドのそれぞれ
の要素を受取りそれを処理して、部分的結果および伝搬
情報を得るために処理し、前記プログラマブルプロセッ
サはさらに、 前記ベクトルモードで動作し、前記処理ユニットに結合
され、各部分的結果を各要素の処理のその最終結果とし
て送り、伝搬情報を無視するためのベクトル手段と、 前記スカラモードで動作し、前記処理ユニットに結合さ
れ、各部分的結果と伝搬情報とを併せて各オペランドの
処理のその最終結果を得るためのスカラ手段とを含む、
プログラマブルプロセッサ。
24. A programmable processor for computing multiple data paths via a general purpose computer, comprising:
The general-purpose computer includes a data memory for storing operands, an instruction memory for storing program instructions, and instruction means, the programmable processor is coupled to the instruction means, and the operands from the data memory are Mode means for identifying whether to be treated as one of vector and scalar modes,
The vector mode determines a plurality of elements in each operand, the scalar mode determines a single element in the operands, and the programmable processor further includes a plurality of processing units coupled to the mode means and the data memory, Each processing unit receives a respective element of an operand and processes it to obtain partial result and propagation information, the programmable processor further operating in the vector mode and coupled to the processing unit, Sending each partial result as its final result of the processing of each element, vector means for ignoring propagation information, operating in said scalar mode and coupled to said processing unit, for each partial result and propagation information Together with scalar means for obtaining its final result of processing each operand,
Programmable processor.
【請求項25】 各処理ユニットは処理条件を保存する
ための条件コードの組を備え、条件コードの前記組は、 a) 個々に第1のベクトルモードにある各組と、 b) 第2のベクトルモードにある別の組との選択的組
合せにある各組と、 c) 前記スカラモードで組合されるスカラオペランド
のすべての組とのうちの1つによって、プログラマブル
プロセッサの処理を修飾する、請求項24に記載のプロ
セッサ。
25. Each processing unit comprises a set of condition codes for storing a processing condition, said set of condition codes comprising: a) each set individually in a first vector mode; and b) a second set. Modifying the processing of the programmable processor by one of each set in selective combination with another set in vector mode, and c) all sets of scalar operands combined in said scalar mode. Item 24. The processor according to Item 24.
【請求項26】 各処理ユニットは、 a) 算術ユニットと、 b) 乗算累算器と、 c) 論理オペレータと、 d) バレルシフタとのうちの少なくとも1つを備え
る、請求項25に記載のプロセッサ。
26. The processor of claim 25, wherein each processing unit comprises at least one of: a) an arithmetic unit; b) a multiplication accumulator; c) a logical operator; and d) a barrel shifter. .
【請求項27】 前記モード手段は前記少なくとも1つ
のオペランドにあるビットフィールドによって特定され
る、請求項1に記載のプログラマブルプロセッサ。
27. The programmable processor of claim 1, wherein the mode means is specified by a bit field in the at least one operand.
【請求項28】 前記モード手段は、前記少なくとも1
つのオペランドが選択される方法によって特定される、
請求項1に記載のプログラマブルプロセッサ。
28. The at least one mode means comprises:
Specified by the way the two operands are selected,
The programmable processor according to claim 1.
【請求項29】 前記モード手段は、前記少なくとも1
つのオペランドのアドレスをさらに特定するメモリ位置
にあるビットフィールドにおいて特定される、請求項2
8に記載のプログラマブルプロセッサ。
29. The mode means comprises the at least one
3. A bit field located in a memory location that further specifies the address of one operand.
8. The programmable processor according to item 8.
【請求項30】 前記モード手段に応答し、第2のオペ
ランドがスカラモードにある状態で、第1のオペランド
の各それぞれの要素をベクトルモードで処理するための
第3のベクトル手段をさらに含む、請求項2に記載のプ
ログラマブルプロセッサ。
30. Responsive to the mode means, further comprising third vector means for processing each respective element of the first operand in vector mode with the second operand in scalar mode. The programmable processor according to claim 2.
JP10964295A 1994-05-05 1995-05-08 Programmable processor, method for performing digital signal processing using the programmable processor, and improvements thereof Expired - Lifetime JP3889069B2 (en)

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 (en) 1996-02-20
JP3889069B2 JP3889069B2 (en) 2007-03-07

Family

ID=22898434

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10964295A Expired - Lifetime JP3889069B2 (en) 1994-05-05 1995-05-08 Programmable processor, method for performing digital signal processing using the programmable processor, and improvements thereof

Country Status (4)

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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204356A (en) * 2007-02-22 2008-09-04 Fujitsu Ltd Reconfigurable circuit
JP2010501937A (en) * 2006-08-18 2010-01-21 クゥアルコム・インコーポレイテッド Data processing system and method using scalar / vector instructions
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 (58)

* 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 (en) * 1996-08-19 2000-11-01 윤종용 Single Instruction Multiple Data Processing Combining Scalar / Vector Operations
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
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
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
JP2004525449A (en) * 2001-02-14 2004-08-19 クリアスピード・テクノロジー・リミテッド Interconnect system
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
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
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 (en) 2002-06-03 2006-12-13 松下電器産業株式会社 Processor
JP4077252B2 (en) * 2002-06-28 2008-04-16 富士通株式会社 Compiler program and compile processing method
US7493607B2 (en) 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
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
US20060265555A1 (en) * 2005-05-19 2006-11-23 International Business Machines Corporation Methods and apparatus for sharing processor resources
US8250348B2 (en) * 2005-05-19 2012-08-21 International Business Machines Corporation Methods and apparatus for dynamically switching processor mode
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
CN106126189B (en) 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 method in a microprocessor
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
US20250130798A1 (en) * 2023-10-19 2025-04-24 Ampere Computing Llc Providing additional operations for a functional unit of a processor core

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 (en) * 1983-03-02 1984-09-10 Hitachi Ltd Vector processing device
JPS60136872A (en) * 1983-12-26 1985-07-20 Hitachi Ltd Vector processing device
JPS6314275A (en) * 1986-07-04 1988-01-21 Nec Corp Scalar data operating system of vector operating processor
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
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
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
JPH0454679A (en) * 1990-06-25 1992-02-21 Nec Corp Arithmetic unit
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 (en) * 2006-08-18 2010-01-21 クゥアルコム・インコーポレイテッド Data processing system and method using scalar / vector instructions
US8190854B2 (en) 2006-08-18 2012-05-29 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
JP2013175218A (en) * 2006-08-18 2013-09-05 Qualcomm Inc System and method of processing data using scalar/vector instructions
JP2015111428A (en) * 2006-08-18 2015-06-18 クゥアルコム・インコーポレイテッドQualcomm Incorporated Data processing system and method using scalar / vector instructions
JP2008204356A (en) * 2007-02-22 2008-09-04 Fujitsu Ltd Reconfigurable circuit
US10056906B1 (en) 2017-02-06 2018-08-21 Fujitsu Limited Shift operation circuit and shift operation method

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3889069B2 (en) Programmable processor, method for performing digital signal processing using the programmable processor, and improvements thereof
US8024394B2 (en) Dual mode floating point multiply accumulate unit
KR100291383B1 (en) Module calculation device and method supporting command for processing digital signal
JP2835103B2 (en) Instruction designation method and instruction execution method
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
JP4584580B2 (en) Multiply-and-accumulate (MAC) unit for single instruction multiple data (SIMD) instructions
JP3750820B2 (en) Device for performing multiplication and addition of packed data
CN111353126A (en) Block matrix multiplication system
EP1049025B1 (en) Method and apparatus for arithmetic operations
JPS5811652B2 (en) Arithmetic unit
US5583806A (en) Optimized binary adder for concurrently generating effective and intermediate addresses
US5958000A (en) Two-bit booth multiplier with reduced data path width
US7558816B2 (en) Methods and apparatus for performing pixel average operations
JP3479385B2 (en) Information processing device
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
JPS62134763A (en) Index applicator for 3 address code
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 (en) Arithmetic logic unit
JP2625510B2 (en) Computer system
US7580968B2 (en) Processor with scaled sum-of-product instructions
JP3547316B2 (en) Processor

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 Request for written amendment filed

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