JPH07200260A - 単一プロセッサにおける並列データ処理 - Google Patents

単一プロセッサにおける並列データ処理

Info

Publication number
JPH07200260A
JPH07200260A JP6312671A JP31267194A JPH07200260A JP H07200260 A JPH07200260 A JP H07200260A JP 6312671 A JP6312671 A JP 6312671A JP 31267194 A JP31267194 A JP 31267194A JP H07200260 A JPH07200260 A JP H07200260A
Authority
JP
Japan
Prior art keywords
bit
partition
operand
parallel
circuit element
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
JP6312671A
Other languages
English (en)
Other versions
JP3578502B2 (ja
Inventor
Ruby Bei-Loh Lee
ルビー・ベイ−ロー・リー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH07200260A publication Critical patent/JPH07200260A/ja
Application granted granted Critical
Publication of JP3578502B2 publication Critical patent/JP3578502B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/508Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using carry look-ahead circuits
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 本発明は、単一のプロセッサにおいて並列デ
−タ処理ができるシステムを提供する。 【構成】 複数のオペランドからなる第1のパ−テショ
ンと、第2のパ−テションから構成し、フル・ワ−ド長
のオペランドに演算を施す場合には、第1のパ−テショ
ンから第2のパ−テションへのデ−タ伝搬を可能にし、
フル・ワ−ド長よりも短いビット長の場合には第1のパ
−テションから第2のパ−テションへのデ−タ伝搬を阻
止するようにする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、単一プロセッサにおけ
る並列データ処理に関するものである。
【0002】
【従来の技術】一般に、単一プロセッサ・システムは、
2つのオペランドに順次演算を施す。例えば、32ビッ
トコンピュータの場合、各整数オペランドは、32ビッ
トである。64ビット・コンピュータの場合、各整数オ
ペランドは、64ビットである。従って、64ビット・
コンピュータにおける整数「加算」命令では、2つの6
4ビット整数オペランドを加算して、64ビットの整数
結果が得られる。ほとんどのパイプラインで形成された
64ビット・プロセッサでは、64ビット加算命令に、
1サイクルの実行時間を要する。
【0003】多くの例において、オペランドの直接関連
する範囲は16ビット又はそれ以下である。しかし、現
在の32ビットまたは64ビット・コンピュータにおい
て、1対の16ビット・オペランドの演算を施すには今
まで通り完全な命令が必要になる。従って、16ビット
・オペランドに演算を施すのに必要な実行サイクル数
は、32ビット・コンピュータにおける2つの32ビッ
ト・オペランド、または64ビット・コンピュータにお
ける2つの64ビット・オペランドに演算を施すのに必
要な実行サイクル数と同じになる。
【0004】先行技術の場合、並列データ処理には、そ
れぞれ、フル・ワード長のデータを取り扱うことが可能
な機能毎のユニットからなる、機能毎のユニットの複製
品を作ることが必要とされた。例えば、1966年12
月の、Proceedings of IEEE、第5
4巻、1901〜1909ページにおける、Micha
el FlynnによるVery High−Spee
d Computing Systemsを参照された
い。
【0005】
【発明が解決しようとする課題】しかし、こうした並列
処理の実施は、必要なハードウェア及び設計の複雑さの
両方に関連して、コストが高くつく。
【0006】
【課題を解決するための手段】本発明の望ましい実施例
によれば、単一プロセッサ内における並列データ処理を
可能にするシステムが提供される。データの並列処理を
可能にするため、シフタのような処理システム内におけ
る論理演算装置または他の演算実行エンティティが区分
化される。各パーティション内で、演算が実施される。
フル・ワード長のオペランドに対する演算を実施すべき
場合には、並列処理は行われない。従って、パーティシ
ョン間における境界を越えてデータを自由に伝搬させる
ことが可能である。1フル・ワード長未満の複数のオペ
ランドを利用して、並列に演算を実施する場合には、パ
ーティション間における少なくとも1つの境界を越えて
データが伝搬しないようにする。
【0007】例えば、演算が加算演算(例えば、2の補
数加算)の場合、複数のパーティションが、それぞれ、
加算演算を実施する。フル・ワード長のオペランドに加
算を施すべき場合には、パーティション間における桁上
げの伝播が可能になる。1フル・ワード長より短い複数
のオペランド集合に並列加算演算を施す場合には、パー
ティション間における少なくとも1つの境界を越える桁
上げの伝播が阻止される。
【0008】同様に、演算がシフトの場合、複数のパー
ティションが、それぞれ、シフト演算を実施する。フル
・ワード長のオペランドにシフトを施すべき場合には、
パーティション間におけるシフトが可能になる。1フル
・ワード長より短い複数のオペランドを利用して、並列
に演算を施す場合には、パーティション間における少な
くとも1つの境界を越えるシフトが阻止される。
【0009】また、本発明の望ましい実施例によれば、
乗算器は、全ワード被乗数の乗算とサブ・ワード被乗数
の並列乗算の両方を実施する。例えば、論理ANDゲー
ト(またはその同等物)のアレイといった回路要素が、
部分積を発生する。部分積和回路要素が、部分積を合計
することによって、結果が得られる。部分積ゲート手段
が、サブ・ワード被乗数の並列乗算の選択に応答して、
選択された部分積の値を強制的にゼロにし、この結果、
サブ・ワード被乗数の並列乗算が実施される。乗算器が
全ワード乗算を実施している間、部分積の値が強制的に
ゼロにされることはない。部分積ゲート手段は、例え
ば、論理ANDゲートの少なくとも一部に対する第3の
入力を利用して実施することが可能である。
【0010】本発明によれば、オペランドがフル・ワー
ド長より短い場合における並列処理演算を容易化するこ
とによって、単一プロセッサ・システムの性能を大幅に
高めることが可能になる。並列処理のこの低コストの利
用によって、プロセッサ・チップにおけるシリコン・ス
ペースまたは設計の複雑さにあまりコストを費やすこと
なく、このタイプのデータ並列処理を利用可能な計算に
関する性能が大幅に向上する。
【0011】
【実施例】図1には、本発明の望ましい実施例による、
プロセッサ内における演算実行データ経路の略ブロック
図が示されている。近く行われることになる演算のオペ
ランド及び実施済みの演算の結果は、汎用レジスタ25
に記憶される。演算が実施される際には、汎用レジスタ
25内の第1のレジスタに記憶された第1のオペランド
が、第1のソース・バス21に送り出される。演算に別
のオペランドが必要な場合には、汎用レジスタ25内の
第2のレジスタに記憶されている第2のオペランドが、
第2のソース・バス22に送り出される。
【0012】演算の実施後、結果は、結果バス23に送
り出され、汎用レジスタ25内のレジスタにロードされ
る。演算は、論理演算装置(ALU)26またはシフタ
29によって実施される。プリ・シフタ27及び補数回
路要素28のそれぞれを利用して、ALU26が受信す
る前に、オペランドに修正を加えることが可能である。
本発明と同様に構成された、単一プロセッサ・システム
のアーキテクチャに関する一般的背景については、19
89年1月の、IEEE Computer、第22
巻、第1号、78〜91ページにおける、Ruby
B.LeeよるPrecision Architec
tureを参照されたい。
【0013】本発明の望ましい実施例によれば、ALU
を区分化して、並列データ処理を行うことが可能であ
る。例えば、図2には、2つのパーティションに分割さ
れたALU26が示されている。第1のパーティション
41は、第1のオペランドの下位ビット42、及び、第
2のオペランドの下位ビット43に演算を施して、下位
ビットの結果44を求める。第2のパーティション51
は、第1のオペランドの上位ビット52、及び、第2の
オペランドの上位ビット53に演算を施して、上位ビッ
トの結果54を求める。
【0014】セレクタ50を利用することによって、制
御入力49に応答して、データ経路45の情報を第1の
パーティション41から第2のパーティション51に伝
搬できるようにするか、あるいは、第1のパーティショ
ン41から第2のパーティション51への伝搬前に、デ
ータ経路45の情報を遮断することが可能になる。すな
わち、フル・ワード・オペランドに対して実施される算
術演算の場合、情報は、セレクタ50を介して第1のパ
ーティション41から第2のパーティション51に伝搬
させることが可能である。ハーフ・ワード・オペランド
に対して並列算術演算が実施される場合には、セレクタ
50によって、第1のパーティション41から第2のパ
ーティション51への情報の伝搬が阻止される。一般
に、論理演算の場合、第1のパーティション41から第
2のパーティション51への情報の伝搬は生じない。
【0015】例えば、32ビット幅のデータ経路を備え
たコンピュータの場合、各フル・ワード・オペランド
は、32ビットである。従って、32ビットのフル・ワ
ード・オペランドを利用して演算を行う場合、セレクタ
50は、セレクタ50を介した、第1のパーティション
41から第2のパーティション51への情報伝搬を可能
にする。16ビットのハーフ・ワード・オペランドを利
用して2つの並列演算を行う場合、セレクタ50は、セ
レクタ50を介した、第1のパーティション41から第
2のパーティション51への情報伝搬を阻止する。代わ
りに、ライン59の値がパーティション51に送られ
る。「加算」の実施時には、論理0が、入力ライン59
におきかわる。「減算」の実施時には、論理1が、入力
ライン59におきかわる。
【0016】本発明の望ましい実施例の場合、図1に示
すALUによって実施される一般的な算術演算は、2の
補数加算である。当該技術の熟練者には明らかなよう
に、ALUにおいて2の補数加算演算を実施する前に、
2の補数回路要素28を利用して、あるオペランドに対
する2の補数演算を実施することによって、2の補数減
算が実施される。また、ALUにおいて2の補数加算演
算を実施する前に、プリ・シフタ27を利用して、オペ
ランドのプリ・シフトを行うことによって、シフト及び
加算演算が実施される。
【0017】図3には、本発明の望ましい実施例によ
る、ALU26内における桁上げ伝播加算を行う2の補
数加算器の実施例が示されている。代替案では、ALU
26に、桁上げ先見加算を行う2の補数加算器が含まれ
る。ハーフ加算器60は、第1のオペランドの単一ビッ
トX0及び第2のオペランドの単一ビットY0を受信す
る。ハーフ加算器60は、和ビットZ0及び桁上げビッ
トC0を送り出す。フル加算器61は、第1のオペラン
ドの単一ビットX1、第2のオペランドの単一ビットY
1、及び、桁上げビットC0を受け取る。フル加算器6
1は、和ビットZ1及び桁上げビットC1を送り出す。
フル加算器65は、第1のオペランドの単一ビットXi
ー1、第2のオペランドの単一ビットYiー1、及び、
先行加算器(すなわち、不図示のCiー2)からの桁上
げビットを受け取る。フル加算器65は、和ビットZi
ー1及び桁上げビットCiー1を送り出す。フル加算器
66は、第1のオペランドの単一ビットXi及び第2の
オペランドの単一ビットYiを受け取る。許可ビット4
9の値によって、フル加算器66は、セレクタ50(ま
たは、当該技術の通常の技術者であれば理解し得る同等
の論理回路要素)を介して桁上げビットCiを受信す
る。フル加算器69は、第1のオペランドの単一ビット
Xjー1、第2のオペランドの単一ビットYjー1、及
び、先行加算器(不図示)からの桁上げビットを受信す
る。フル加算器69は、和ビットZj−1及び桁上げビ
ットCj−1を送り出す。
【0018】図3に示す加算器の実施例の場合、「j」
は、データ経路のサイズ、及び、フル・ワード演算のビ
ット長である。また、「i」は、「j」を2で割った値
に等しい。例えば、「j」が32に等しければ、「i」
は16に等しい。
【0019】セレクタ50は、図3にも示されている。
「j」ビットのフル・ワード・オペランドを利用して演
算を行う場合、許可ビット49は、論理1に等しく、桁
上げがセレクタ50を介してフル加算器66に伝播する
のを可能にする。「i」ビットのハーフ・ワード・オペ
ランドを利用して2つの並列演算を実施する場合、許可
ビット49は論理ゼロに等しく、桁上げがセレクタ50
を介してフル加算器66に伝播するのを阻止する。代わ
りに、ライン59の値が、フル加算器66に送られる。
「加算」の実施時には、論理0が入力ライン59におき
かわる。「減算」の実施時には、論理1が入力ライン5
9におきかわる。
【0020】図2及び図3には、2つのパーティション
を備えたALU26の実施例が示されているが、本発明
の他の望ましい実施例に基づいて設計されたALUの場
合、ALUをさまざまに区分化することが可能である。
例えば、図4には、本発明の望ましい代替実施例に基づ
くALU26の代替略ブロック図が示されている。図4
では、ALU6は、4つのパーティションに分割されて
いる。第1のパーティション71は、第1のオペランド
の下位ビット72及び第2のオペランドの下位ビット7
3に演算を施し、下位ビットの結果74を求める。第2
のパーティション81は、第1のオペランドのビット8
2及び第2のオペランドのビット83に演算を施し、結
果ビット84を求める。第3のパーティション91は、
第1のオペランドのビット92及び第2のオペランドの
ビット93に演算を施し、結果ビット94を求める。第
4のパーティション101は、第1のオペランドの上位
ビット102及び第2のオペランドの上位ビット103
に演算を施し、上位ビットの結果104を求める。
【0021】セレクタ80を利用して、制御入力79に
応答し、第1のパーティション71から第2のパーティ
ション81へのデータ経路75における情報の伝搬を可
能にするか、あるいは、第1のパーティション71から
第2のパーティション81へ伝搬する前に、データ経路
75の情報を遮断する。すなわち、フル・ワード・オペ
ランドまたはハーフ・ワード・オペランドに対して実施
される算術演算の場合、セレクタ80を介した、第1の
パーティション71から第2のパーティション81への
情報伝搬が可能になる。クォータ・ワード・オペランド
に対する並列算術演算を実施する場合、セレクタ80
は、第1のパーティション71から第2のパーティショ
ン81への情報の伝搬を阻止する。代わりに、ライン8
8の値がパーティション81に送られる。「加算」の実
施時には、ライン88で論理0が伝送される。「減算」
の実施時には、ライン88で論理1が伝送される。一般
に、論理演算の場合、パーティション間における情報の
伝搬は生じない。
【0022】セレクタ90を利用して、制御入力89に
応答し、第2のパーティション81から第3のパーティ
ション91へのデータ経路85における情報の伝搬を可
能にするか、あるいは、第2のパーティション81から
第3のパーティション91へ伝搬する前に、データ経路
75の情報を遮断する。すなわち、フル・ワード・オペ
ランドに対して実施される算術演算の場合、セレクタ9
0を介した、第2のパーティション81から第3のパー
ティション91への情報伝搬が可能になる。クォータ・
ワード・オペランドまたはハーフ・ワード・オペランド
に対する並列算術演算を実施する場合、セレクタ90
は、第2のパーティション81から第3のパーティショ
ン91への情報の伝搬を阻止する。代わりに、ライン9
8の値がパーティション91に送られる。「加算」の実
施時には、ライン98で論理0が伝送される。「減算」
の実施時には、ライン98で論理1が伝送される。
【0023】セレクタ100を利用して、制御入力99
に応答し、第3のパーティション91から第4のパーテ
ィション101へのデータ経路95における情報の伝搬
を可能にするか、あるいは、第3のパーティション91
から第4のパーティション101へ伝搬する前に、デー
タ経路75の情報を遮断する。すなわち、フル・ワード
・オペランド及びハーフ・ワード・オペランドに対して
実施される算術演算の場合、セレクタ100を介した、
第3のパーティション91から第4のパーティション1
01への情報伝搬が可能になる。クォータ・ワード・オ
ペランドに対する並列算術演算を実施する場合、セレク
タ100は、第3のパーティション91から第4のパー
ティション101への情報の伝搬を阻止する。代わり
に、ライン108の値がパーティション101に送られ
る。「加算」の実施時には、ライン108で論理0が伝
送される。「減算」の実施時には、ライン108で論理
1が伝送される。
【0024】例えば、64ビット幅のデータ経路を備え
るコンピュータの場合、各フル・ワード・オペランドは
64ビットである。従って、64ビットのフル・ワード
・オペランドを利用して演算を実施する場合、セレクタ
80は、セレクタ80を介した、第1のパーティション
71から第2のパーティション81への情報の伝搬を可
能にし、セレクタ90は、セレクタ90を介した、第2
のパーティション81から第3のパーティション91へ
の情報の伝搬を可能にし、セレクタ100は、セレクタ
100を介した、第3のパーティション91から第4の
パーティション101への情報の伝搬を可能にする。3
2ビットのハーフ・ワード・オペランドを利用して2つ
の並列演算を実施する場合、セレクタ80は、セレクタ
80を介した、第1のパーティション71から第2のパ
ーティション81への情報の伝搬を可能にし、セレクタ
90は、セレクタ90を介した、第2のパーティション
81から第3のパーティション91への情報の伝搬を阻
止し、セレクタ100は、セレクタ100を介した、第
3のパーティション91から第4のパーティション10
1への情報の伝搬を可能にする。16ビットのクォータ
・ワード・オペランドを利用して4つの並列演算を実施
する場合、セレクタ80は、セレクタ80を介した、第
1のパーティション71から第2のパーティション81
への情報の伝搬を阻止し、セレクタ90は、セレクタ9
0を介した、第2のパーティション81から第3のパー
ティション91への情報の伝搬を阻止し、セレクタ10
0は、セレクタ100を介した、第3のパーティション
91から第4のパーティション101への情報の伝搬を
阻止する。
【0025】図5には、本発明のもう1つの望ましい代
替実施例に基づく、ALU26のもう1つの代替略ブロ
ック図が示されている。図5の場合、ALU26は、そ
れぞれ、1ビット幅のパーティションに分割される。第
1のパーティション111は、第1のオペランドの下位
ビット112及び第2のオペランドの下位ビット113
に演算を施し、下位結果ビット114を求める。第2の
パーティション121は、第1のオペランドのビット1
22及び第2のオペランドのビット123に演算を施
し、結果ビット124を求める。パーティション131
は、第1のオペランドのビット132及び第2のオペラ
ンドのビット133に演算を施し、結果ビット134を
求める。パーティション141は、第1のオペランドの
ビット142及び第2のオペランドのビット143に演
算を施し、結果ビット144を求める。パーティション
151は、第1のオペランドの上位ビット152及び第
2のオペランドの上位ビット153に演算を施し、上位
結果ビット154を求める。
【0026】セレクタ120を利用して、制御入力11
9に応答し、第1のパーティション111から第2のパ
ーティション121へのデータ経路115における情報
の伝搬を可能にするか、あるいは、第1のパーティショ
ン111から第2のパーティション121へ伝搬する前
に、データ経路115の情報を遮断する。データが遮断
されると、ライン128の値がパーティション121に
送られる。「加算」の実施時には、ライン128で論理
0が伝送される。「減算」の実施時には、ライン128
で論理1が伝送される。
【0027】セレクタ130を利用して、制御入力12
9に応答し、あるデータ経路におけるすぐ前のパーティ
ション(不図示)からパーティション131への、前記
すぐ前のパーティションからの情報の伝搬を可能にする
か、あるいは、パーティション131に伝搬する前に、
該データ経路における前記すぐ前のパーティションから
の情報を遮断する。データが遮断されると、ライン13
8の値がパーティション131に送られる。「加算」の
実施時には、ライン138で論理0が伝送される。「減
算」の実施時には、ライン138で論理1が伝送され
る。
【0028】セレクタ140を利用して、制御入力13
9に応答し、パーティション131からパーティション
141へのデータ・ライン135における情報の伝搬を
可能にするか、あるいは、パーティション131からパ
ーティション141へ伝搬する前に、データ経路135
の情報を遮断する。データが遮断されると、ライン14
8の値がパーティション141に送られる。「加算」の
実施時には、ライン148で論理0が伝送される。「減
算」の実施時には、ライン148で論理1が伝送され
る。
【0029】セレクタ150を利用して、制御入力14
9に応答し、あるデータ経路におけるすぐ前のパーティ
ション(不図示)からパーティション151への、前記
すぐ前のパーティションからの情報の伝搬を可能にする
か、あるいは、パーティション151に伝搬する前に、
該データ経路における前記すぐ前のパーティションから
の情報を遮断する。データが遮断されると、ライン15
8の値がパーティション151に送られる。「加算」の
実施時には、ライン158で論理0が伝送される。「減
算」の実施時には、ライン158で論理1が伝送され
る。
【0030】セレクタに対する制御入力を利用すること
によって、可変長オペランドの並列処理を可能にするこ
とができる。例えば、64ビット幅のデータ経路を備え
た処理システムの場合、制御入力は、2つの16ビット
算術演算及び4つの8ビット算術演算の並列処理が、全
て、同時に実施されるように選択することが可能であ
る。さらに、合計しても、そのワード・サイズまでにし
かならない任意のビット組み合わせを利用することも可
能である。例えば、17ビット、3ビット、16ビッ
ト、12ビット、5ビット、及び、11ビットの算術演
算を同時に実施することも可能である。
【0031】上述の原理は、桁上げ先見加算器にも当て
はまる。例えば、図10には、本発明の別の望ましい実
施例に基づく、ALU26内の桁上げ先見を伴う、2の
補数加算器の実施例が示されている。桁上げ先見回路4
70によって、加算器の桁上げが生じる。ハーフ加算器
460は、第1のオペランドの単一ビットX0及び第2
のオペランドの単一ビットY0を受信する。ハーフ加算
器460は、和ビットZ0を送り出す。フル加算器46
1は、第1のオペランドの単一ビットX1、第2のオペ
ランドの単一ビットY1、及び、桁上げビットC0を受
信する。フル加算器461は、和ビットZ1を送り出
す。フル加算器465は、第1のオペランドの単一ビッ
トXi−1、第2のオペランドの単一ビットYi−1、
及び、桁上げビットCi−2を受信する。フル加算器4
65は、和ビットZi−1を送り出す。フル加算器46
6は、第1のオペランドの単一ビットXi、第2のオペ
ランドの単一ビットYi、及び、桁上げビットCi−1
を受信する。フル加算器466は、和ビットZiを送り
出す。フル加算器469は、第1のオペランドの単一ビ
ットXj− 1、第2のオペランドの単一ビットYj−
1、及び、桁上げビットCj−2を受信する。フル加算
器469は、和ビットZj−1を送り出す。
【0032】図10に示す加算器の実施例の場合、
「j」は、データ経路のサイズ及びフル・ワード演算の
ビット長である。また、「i」は、「j」を2で割った
値に等しい。例えば、「j」が32に等しいと、「i」
は16に等しい。代わりに、jが32に等しい場合、i
を32未満の任意の整数に等しくなるようにすることも
可能である。
【0033】「j」ビットのフル・ワード・オペランド
を利用して演算を実施する場合、許可ビット452は、
論理1に等しく、全ての桁上げの伝播を可能にする。ビ
ットiとi+1の間で区分された「i」ビットのサブ・
ワード・オペランドを利用して2つの並列演算を実施す
る場合、許可ビット452は、論理0に等しく、パーテ
ィション境界を越える桁上げの伝播を阻止する。代わり
に、ライン451の値が、フル加算器466に送られる
値として利用される。「加算」の実施時には、入力ライ
ン451で論理0が伝送される。「減算」の実施時に
は、入力ライン451で論理1が伝送される。
【0034】桁上げ先見加算器の働きは、当該技術にお
いて周知のところである。例えば、A[i]が入力の1
ビットであり、B[i]が他の入力の1ビットであり、
S[i]が加算器からの和の1ビットであると仮定す
る。加算器からの和の1ビットは、下記の式1によって
示される。
【0035】
【数1】
【0036】式1において、C[i−1]は、桁上げ先
見加算器の先行ビットからの桁上げである。桁上げ先見
加算器は、これらの桁上げビットを素早く発生するのに
有効である。
【0037】G[i]が、このビットによって桁上げを
発生させるべきであることを示す信号であり、P[i]
が、先行ビットからこのビットの出力に桁上げが伝播す
る可能性のあることを示す信号であると仮定する。これ
らは、下記の式2によって決まる。
【0038】
【数2】
【0039】従って、桁上げ先見加算器内における4ビ
ットの場合、桁上げビットは、下記の式3のように発生
させることが可能である。
【0040】
【数3】
【0041】上記式3において、「*」は、論理AND
演算に相当し、「+」は、論理OR演算に相当する。
【0042】本発明の望ましい実施例を実行する場合、
発生G[i]及び伝播P[i]が強制的に偽にされる
と、桁上げは、特定のビットで停止する。例えば、上記
式3の場合、G[i−3]及びP[i−3]が偽の場
合、C[i−3]は偽になり、C[i−4]は、C[i
−2]、C[i−1]、及び、C[i]の値に影響を及
ぼすことはできない。同様に、G[i−2]及びP[i
−2]が偽の場合、C[i−2]は偽になり、G[i−
3]及びP[i−3]及びC[i−4]は、C[i−
1]及びC[i]の値に影響を及ぼすことはできない。
【0043】M[i]が、1の場合、ビット[i]とビ
ット[i+1]との桁上げ連鎖をブレークするマスク・
ビットであると仮定すると、新しい式4は、下記のよう
に生成することが可能である。
【0044】
【数4】
【0045】M[i]が1の場合、桁上げは、ビット
[i]から発生することができないか、あるいは、ビッ
ト[i]を介して伝播することができない。
【0046】キャリ・インに関して、オペランドの一方
の1の補数を生成し、もう一方のオペランドに加算する
ことによる減算(2の補数演算)の場合、M[i]が1
であれば、あるビットにおいて強制的に桁上げを発生し
なければならない。
【0047】Fが、真の場合、M[i]が1であれば、
あるビットにおいて強制的に桁上げを発生させる信号で
あると仮定する。Gs[i]及びPs[i]に関する式
は、下記の式5に示すようになる。
【0048】
【数5】
【0049】M[i]が1の場合、Gs[i]の値はF
によって決まる。M[i]が1の場合、Gs[i]の値
は、前述のように、A[i]及びB[i]によって決ま
る。この伝播は、F信号によって強制する必要はない。
【0050】キャリ・アウトの式は、下記の式6によっ
て示される。
【0051】
【数6】
【0052】当該技術の熟練者には明らかなように、本
発明の原理は、コンピュータ・システムALU内の算術
演算に限定されるものではない。例えば、ALUに示さ
れる区分化は、データに基づいて機能するコンピュータ
・システム内の他のエンティティにも拡張することが可
能である。例えば、図6には、プリ・シフタ27におい
て具現化された本発明が示されている。本発明の同じ実
施例は、シフタ29の実施にも利用することが可能であ
る。プリ・シフタ27及びシフタ29を区分化すること
によって、例えば、並列シフト・加算演算、及び、並列
シフト演算の実施が可能になる。
【0053】プリ・シフタ27には、図示のように、シ
フト・レジスタ・1ビット・スライス160、シフト・
レジスタ・1ビット・スライス161、シフト・レジス
タ・1ビット・スライス165、シフト・レジスタ・1
ビット・スライス166、及び、シフト・レジスタ・1
ビット・スライス169が含まれている。
【0054】データを左にシフトする場合には、一般
に、論理値が0の、入力171におけるデータが、シフ
ト・レジスタ・1ビット・スライス160に対する入力
として利用される。データを右にシフトする場合には、
セレクタ175が、制御入力182に応答し、入力18
1におけるデータ(論理値0または論理値1)を選択す
るか、あるいは、シフト・レジスタ・1ビット・スライ
ス169によって現在記憶されている値を選択して、シ
フト・レジスタ・1ビット・スライス169に対する入
力とする。
【0055】シフタを区分化すべき場所がどこであれ、
シフタには、追加セレクタが追加される。例えば、図6
には、シフト・レジスタ・1ビット・スライス165と
シフト・レジスタ・1ビット・スライス166の間で区
分化されたシフタが示されている。そこには、セレクタ
174及びセレクタ173が追加されている。区分化オ
ペランドに対するシフト演算に関して、データが左にシ
フトされる場合には、セレクタ173は、制御入力18
5に応答して、一般には論理値0の、入力172のデー
タを選択し、シフト・レジスタ・1ビット・スライス1
66として利用する。フル・ワード・オペランドに対す
るシフト演算に関して、データが左にシフトされる場合
には、セレクタ173は、シフト・レジスタ・1ビット
・スライス165からの出力を選択し、シフト・レジス
タ・1ビット・スライス166に対する入力として利用
する。
【0056】区分化オペランドに対するシフト演算に関
して、データが右にシフトされる場合には、セレクタ1
74は、制御入力184に応答し、入力183における
データ(論理値0または論理値1)を選択するか、ある
いは、シフト・レジスタ・1ビット・スライス166に
よって現在記憶されている値を選択して、シフト・レジ
スタ・1ビット・スライス165に対する入力とする。
フル・ワード・オペランドに対するシフト演算に関し
て、データが右にシフトされる場合には、セレクタ17
4は、シフト・レジスタ・1ビット・スライス166か
らの出力を選択し、シフト・レジスタ・1ビット・スラ
イス165に対する入力として利用する。
【0057】図6には、パーティションが2つだけのシ
フタが示されている。ALUにおけるパーティションに
関する以上の説明から明らかなように、シフタは、さま
ざまなやり方で区分化することが可能である。例えば、
64ビットのシフタは、2、4、8、16、32、また
は、64ビットの等サイズのパーティションに区分化す
ることが可能である。さらに、パーティションが、それ
ぞれ、等しいビット数で動作するのは、本発明の要件で
はない。
【0058】上記実施例では、一連の1ビット・スライ
スから構成されるシフト・レジスタとして実施された、
プリ・シフタ27及びシフタ29が示されているが、望
ましい代替実施例には、マルチプレクサで実施されるプ
リ・シフタ及びシフタがある。一般に、プリ・シフタ2
7は、通常、例えば、せいぜい、0、1、2、3、また
は、4ビットといった小ビット数ずつしかシフトするこ
とができないので、1レベルのマルチプレクサによって
実施される。シフタ29は、一般に、各レベルが4対1
マルチプレクサである、3レベルのマルチプレクサによ
って実施される。例えば、64ビット・シフタ29の場
合、第1レベルのマルチプレクサは、0、16、32、
または、48ビットのシフトを行う。第2レベルのマル
チプレクサは、0、4、8、または、12ビットのシフ
トを行うことができる。第3レベルのマルチプレクサ
は、0、1、2、または、3ビットのシフトを行うこと
ができる。これによって、0〜63の任意のビット数の
シフトが行えることになる。3段のマルチプレクサから
構成されるこうしたシフタの場合、1ビット・スライス
を識別することも可能である。しかし、当該技術の熟練
者には明らかなように、3つのマルチプレクサ段の1つ
以上において、任意の2ビット間におけるシフトをブロ
ックすることが必要になる可能性がある。
【0059】本発明の原理は、コンピュータ・システム
における他の構成要素にも拡張することが可能である。
例えば、乗算器は、本発明の望ましい実施例に従い、全
ワード乗算以外に、部分ワード並列乗算も行えるように
実施することが可能である。
【0060】例えば、図7には、先行技術による4ビッ
ト乗算器が示されている。乗算器が、4ビットの最初の
被乗数X3X2X1X0(基数2)と4ビットの第2の
被乗数Y3Y2Y1Y0(基数2)を掛け合わせること
によって、8ビットの結果Z7Z6Z5Z4Z3Z2Z
1Z0(基数2)が得られる。当該技術の熟練者には明
らかなように、論理ANDゲート201、202、20
3、204、205、206、207、208、20
9、210、211、212、213、214、21
5、及び216を利用して、乗算に関する部分積を発生
することが可能である。部分積和回路220が、論理A
NDゲート201〜216によって発生する部分積の和
を求めることによって、結果が得られる。
【0061】2つの被乗数X3X2X1X0及びY3Y
2Y1Y0、論理ANDゲート201〜216によって
発生する部分積、及び、部分積和回路220によって生
じる結果は、乗算器の働きを要約するやり方で、表に組
み入れることが可能である。例えば、こうした表は、下
記の表1のように示される。
【0062】
【表1】
【0063】上記表1に示す表記法によれば、両方の被
乗数及び結果における各ビットのビット位置が、明確に
識別される。さらに、各部分積の形成に利用される被乗
数のビットが、明確に示されている。当該技術の熟練者
には明らかなように、上記表1に示す情報は、下記の表
2に示すように、省略または単純化した表記法を用い
て、表すことも可能である。
【0064】
【表2】
【0065】上記表2において、第1の被乗数の各ビッ
トは、「X」で表され、第2の被乗数の各ビットは、
「Y」で表され、部分積の各ビットは、「z」で表さ
れ、結果の各ビットは、「Z」で表されている。表2の
さらに単純な表記法を利用すると、8ビットの乗算器に
ついて、下記の表3に示すように、解説することが可能
である。
【0066】
【表3】
【0067】表3に示すように、乗算器が、8ビットの
第1の被乗数XXXXXXXX(基数2)と8ビットの
第2の被乗数YYYYYYYY(基数2)を掛け合わせ
ることによって、16ビットの結果ZZZZZZZZZ
ZZZZZZZ(基数2)が得られる。
【0068】同様に、表2及び表3のより単純な表記法
を利用すると(ただし、ビット位置間のスペースは考慮
外とする)、16ビットの乗算器について、下記の表4
に示すように、解説することができる。
【0069】
【表4】
【0070】表4に示すように、乗算器が、16ビット
の第1の被乗数XXXXXXXXXXXXXXXX(基
数2)と16ビットの第2の被乗数YYYYYYYYY
YYYYYYY(基数2)を掛け合わせることによっ
て、32ビットの結果ZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZ(基数2)が得ら
れる。
【0071】本発明の望ましい実施例によれば、標準的
な乗算器に修正を加えることによって、全ワードの乗算
以外に、部分ワードの並列乗算を可能にする乗算器を実
現することができる。例えば、図8には、本発明の望ま
しい実施例による4ビット乗算器が示されている。論理
ANDゲート301、302、303、304、30
5、306、307、308、309、310、31
1、312、313、314、315、及び、316
は、乗算に関して、部分積を発生する。部分積和回路3
20が、論理ANDゲート301〜316によって発生
する部分積の和を求めることによって結果が得られる。
【0072】図8に示す乗算器の場合、部分積和回路3
20は、図7に示す部分積和回路220と全く同じよう
に実施することが可能である。図8に示す乗算器と図7
に示す乗算器との差は、論理ANDゲート303、30
4、307、308、309、310、313、及び3
14のそれぞれに含まれる追加入力に接続された、制御
ライン321の追加である。
【0073】図8に示すように、制御ライン321が論
理1にセットされると、乗算器が、4ビットの第1の被
乗数X3X2X1X0(基数2)及び4ビットの第2の
被乗数Y3Y2Y1Y0(基数2)に対して全ワード乗
算を実施し、8ビットの結果Z7Z6Z5Z4Z3Z2
Z1Z0(基数2)が得られる。2つの被乗数X3X2
X1X0及びY3Y2Y1Y0、論理ANDゲート30
1〜316によって発生する部分積、及び、部分積和回
路320によって発生する結果は、下記の表5に示すよ
うに、表の形に表すことが可能である。
【0074】
【表5】
【0075】表5と上記表1との比較を行うことによっ
て、ライン321が論理1にセットされると、図8に示
す乗算器の働きが、図7に示す乗算器の働きと同じにな
ることが確認される。従って、上記表2と同様、単純化
した表記法を利用して、下記表6に示すように、図8に
示す乗算器の働きを解説することが可能である。
【0076】
【表6】
【0077】図9には、図8に示す乗算器が示されてい
るが、制御ライン321が0にセットされている点だけ
は異なっている。この結果、部分積の半分がゼロにな
り、乗算器は、部分(2ビット)ワードの並列処理が可
能になる。すなわち、第1の乗算において、2ビット被
乗数A1A0(基数2)と2ビット被乗数C1C0(基
数2)を掛けることによって、4ビットの結果E3E2
E1E0(基数2)が得られる。第2の乗算において、
2ビットの被乗数B1B0(基数2)と2ビットの被乗
数D1D0を掛けることによって、4ビットの結果F3
F2F1F0(基数2)が得られる。並列乗算に利用さ
れない部分積は、強制的に論理ゼロにされる。この並列
乗算は、下記の表7に示すように、表の形で表すことが
可能である。
【0078】
【表7】
【0079】
【表8】
【0080】表7及び8に示すように、部分ワードの並
列乗算は、乗算器において選択された部分積を強制的に
ゼロにすることによって、乗算器で実施される。一般
に、利用されない部分積を強制的にゼロにすることによ
って、任意のサイズの標準的な乗算器を利用して、並列
乗算を行うことが可能である。部分積は、例えば、1つ
以上の制御入力及び3つの入力論理ANDゲート(また
はその同等物)を用いて、強制的に論理0にされる。
【0081】例えば、上述のように、8ビット乗算器
は、表3に示すように実施することが可能である。本発
明の教示に従い、図8及び図9に示すような回路要素を
設けて、部分積を強制的にゼロにすることによって、こ
の同じ乗算器を利用して、部分ワード被乗数の並列乗算
を実施することが可能である。部分積和回路要素に対す
る修正は不必要である。従って、本発明の教示に基づい
て表3に示す乗算器に修正を施すことによって、例え
ば、下記の表9によって実施されるように、4ビット被
乗数を利用し、2つの並列乗算を実施することが可能に
なる。
【0082】
【表9】
【0083】上記表9から明らかなように、部分ワード
被乗数の第1の並列乗算において、4ビット被乗数AA
AA(基数2)と4ビット被乗数CCCC(基数2)を
掛けることによって、8ビットの結果EEEEEEEE
(基数2)が得られる。部分ワード被乗数の第2の並列
乗算において、4ビット被乗数BBBB(基数2)と4
ビット被乗数DDDD(基数2)を掛けることによっ
て、8ビットの結果FFFFFFFF(基数2)が得ら
れる。部分席を強制的にゼロにせずに、乗算器によっ
て、2つの全ワード(8ビット)被乗数の乗算が実施さ
れる。
【0084】同様に、上述のように、16ビット乗算器
は、表4に示すようにして実施することが可能である。
本発明の教示に従い、図8及び図9に示すような回路要
素を設けて、部分積を強制的にゼロにすることによっ
て、この同じ乗算器を利用して、部分ワード被乗算器の
並列乗算を実施することが可能である。部分積和回路要
素に対する修正は必要はない。従って、本発明の教示に
基づき、表4に解説の乗算器に修正を加えることによっ
て、例えば、下記の表10によって実施されるように、
8ビット(部分ワード)被乗数を利用して、2つの並列
乗算を実施することが可能になる。
【0085】
【表10】
【0086】上記表10から分かるように、第1の並列
乗算において、8ビット被乗数AAAAAAAA(基数
2)と8ビット被乗数CCCCCCCC(基数2)を掛
けることによって、16ビットの結果EEEEEEEE
EEEEEEEE(基数2)が得られる。部分ワード被
乗数の第2の並列乗算において、8ビット被乗数BBB
BBBBB(基数2)と8ビット被乗数DDDDDDD
D(基数2)を掛けることによって、16ビットの結果
FFFFFFFFFFFFFFFF(基数2)が得られ
る。部分積を強制的にゼロにせずに、乗算器によって、
2つの全ワード(16ビット)被乗数の乗算が実施され
る。
【0087】上記説明においては、ハーフ・ワードの並
列乗算が示されているが、当該技術の通常の技術者であ
れば明らかなように、適合する部分積を選択して、強制
的にゼロにすることによって、実施される並列乗算の数
ち部分ワード・サイズの両方を変更することが可能であ
る。
【0088】例えば、本発明の教示に従い、図8及び図
9に示すような回路要素を設けて、部分積を強制的にゼ
ロにすることによって、表4(及び表10の両方又は一
方)に解説のように実施される16ビット乗算器を利用
して、3つの同時並列乗算を実施することが可能であ
る。従って、本発明の教示に基づき、表4に解説の乗算
器に修正を加えることによって、例えば、下記の表11
によって実施されるように、8ビット被乗数を利用し
て、1つの並列乗算を実施し、4ビット被乗数を利用し
て、2つの並列乗算を実施する事が可能になる。
【0089】
【表11】
【0090】上記表11から分かるように、第1の並列
乗算において、8ビット被乗数AAAAAAAA(基数
2)と8ビット被乗数DDDDDDDD(基数2)を掛
けることによって、16ビットの結果GGGGGGGG
GGGGGGGG(基数2)が得られる。第2の並列乗
算において、4ビット被乗数BBBB(基数2)と4ビ
ット被乗数EEEE(基数2)を掛けることによって、
8ビットの結果HHHHHHHH(基数2)が得られ
る。第3の並列乗算において、4ビット被乗数CCCC
(基数2)と4ビット被乗数FFFF(基数2)を掛け
ることによって、8ビットの結果IIIIIIII(基
数2)が得られる。当該技術の熟練者には明らかなよう
に、表11に示す、値がゼロの、全ての部分積につい
て、3つの入力論理ANDゲートまたはその論理同等物
を設けて、並列乗算演算の実施時に、部分積を強制的に
ゼロにすることができるようにしなければならない。し
かし、表11に示すように、サイズの異なるパーティシ
ョンの混合が行われると、当該技術の熟練者には明らか
なように、実施例によっては、異なる部分積の項を強制
的にゼロにするために、異なる制御入力が必要とされる
可能性がある。
【0091】上記解説から明らかなように、乗算器の部
分積を選択的かつ強制的にゼロにすることによって、乗
算器において、部分ワードの並列乗算を十分に実施する
ことが可能になる。ワード・サイズ、同時に実施される
並列乗算の数、及び、部分ワールド・サイズは、本発明
の教示に従って自由に変更することが可能である。
【0092】図11には、本発明の望ましい実施例に従
って実行可能な命令の一例が示されている。例えば、命
令500には、フィールド501、サブ・フィールド5
02、フィールド503、フィールド504、及び、フ
ィールド505が含まれている。フィールド501は、
演算コードについて記述する。フィールド501は、例
えば、加算、シフト及び加算、減算、シフト及び減算、
左シフト、右シフト、乗算、または、任意の数の他の演
算を示している。フイ −ルド501のサブ・フィールド
502は、その演算を並列演算として実施すべきか否か
を指示するものであり、並列演算する場合には、オペラ
ンドのサイズを指示する。フィールド503は、第1の
送信元レジスタを指示する。フィールド504は、第2
の送信元レジスタを指示する。フィールド505は、宛
先レジスタを指示する。
【0093】当該技術において周知のように、命令50
0は、命令の編成を可能にする、見込みのある多くの方
法のうちの1つが示されている。例えば、命令510に
は、並列演算指示が別個のフィールドに含まれる、代替
実施例が示されている。例えば、命令510には、フィ
ールド511、フィールド512、フィールド513、
フィードフィールド514、及び、フィールド515が
含まれている。フィールド511は、演算コードについ
て記述する。フィールド511は、例えば、加算、シフ
ト及び加算、減算、シフト及び減算、左シフト、右シフ
ト、乗算、または、任意の数の他の演算を示している。
フィールド512は、その演算を並列演算として実施す
べきか否かを指示するものであり、並列演算する場合に
は、オペランドのサイズを指示する。フィールド513
は、第1の送信元レジスタを指示する。フィールド51
4は、第2の送信元レジスタを指示する。フィールド5
15は、宛先レジスタを指示する。
【0094】当該技術において明らかなように、本発明
は、部分積を発生する他の乗算器にも有効である。例え
ば、本発明は、Booth符号化乗算器において利用す
ることも可能である。Booth符号化乗算器の場合、
部分積の項の各行毎に2ビット以上の乗数(y被乗数)
を考慮することによって、発生する部分積の項の行数が
少なくなる。例えば、1990年にMorgan Ka
ufmannから刊行された、John Hennes
sy & David PattaesonによるCo
mpyuter Architecture、A Qu
antitative Approachの付録pp.
A−39〜A−49を参照されたい。上記乗算器の場
合、当該技術の熟練者には明らかなように、Booth
符号化乗算器によって発生する部分積の項の値は、並列
処理を考慮して変更される。
【0095】すなわち、Booth符号化乗算器の場
合、図8及び図9に示すANDゲート301〜316の
代わりにマルチプレクサが用いられる。例えば、「オー
バーラッピング・トリプレット」法を利用したBoot
h符号化乗算器は、いつも1ビットではなく、いつも乗
数(すなわち、y被乗数)の3ビットを検査して、図8
及び図9に示す乗算器のように、常に+xまたは0にな
る部分積の行ではなく、+x、+2x、−x、及び、0
のうちの1つになる部分積の行を発生する。これは、5
対1乗算器として実施する事が可能である。「オーバー
ラッピング・トリプレット」という名称は、この方法
が、乗数(y被乗数)の3ビットを検査して、各行毎に
乗数(y被乗数)の2ビットを廃棄するという事実によ
るものである。次の行に関して、この次の行に用いられ
る乗数(y被乗数)の3ビットのうち最下位ビットが、
先行行から用いられる乗数の3ビットのうちの最上位ビ
ットである場合に、オーバーラップが生じる。
【0096】並列サブ・ワード乗算を実施するため、そ
の部分積の行が形成中のサブ・ワードの積に対応しない
x被乗数のビットは、ゼロにセットされる。これは、無
修正のBooth符号化乗算器の場合と同様、マルチプ
レクサに対する制御信号を修正することによって、マル
チプレクサを用いて実施することが可能である。部分積
の行の符号、マルチプレクサに対する追加入力として用
いられることも可能である。
【0097】以上の解説には、本発明の典型的な方法及
び実施例が開示され、説明されているだけである。当該
技術の熟練者には明らかなように、本発明は、その精神
または本質的な特徴を逸脱することなく、他の特定の形
態において具現化することが可能である。従って、本発
明の開示は、本発明の範囲を例示することを意図したも
のであって、それを制限するものではなく、該範囲につ
いては、下記に示す実施例に記載されている。
【0098】即ち、上記説明した単一プロセッサにおけ
る並列データ処理は下記に示すようにして具現化でき
る。
【0099】[1]複数のオペランドからの第1のビッ
ト集合に演算を施す第1のパーティション回路要素と、
複数のオペランドからの第2のビット集合に演算を施す
第2のパーティション回路要素と、第1のパーティショ
ン回路要素と第2のパーティション回路要素の間に結合
されて、フル・ワード長のオペランドに演算を施す場合
には、第1のパーティション回路要素から第2のパーテ
ィション回路要素へのデータ伝搬を可能にし、フル・ワ
ード長オペランドのビット長より短いビット長のオペラ
ンドに並列演算を施す場合には、第1のパーティション
回路要素から第2のパーティション回路要素へのデータ
伝搬を阻止できるようにする第1の選択手段から構成さ
れる、処理システム内の機能単位である。
【0100】[2]第1のパーティション回路要素が、
複数のオペランドの下位ビットに加算演算を実施するこ
とと、第2のパーティション回路要素が、複数のオペラ
ンドの上位ビットに加算演算を実施することと、第1の
選択手段が、フル・ワード長のオペランドに加算を施す
場合には、第1のパーティション回路要素から第2のパ
ーティション回路要素への桁上げ伝播を可能にし、サブ
・ワード長オペランドに並列加算を施す場合には、第1
のパーティション回路要素から第2のパーティション回
路要素への桁上げ伝播を阻止できるようにするセレクタ
である上記[1]に記載の機能単位である。
【0101】[3]複数のオペランドからの第3のビッ
ト集合に演算を施す第3のパーティション回路要素と、
複数のオペランドからの第4のビット集合に演算を施す
第4のパーティション回路要素と、第2のパーティショ
ン回路要素と第3のパーティション回路要素の間に結合
されて、フル・ワード長のオペランドに演算を施す場合
には、第2のパーティション回路要素から第3のパーテ
ィション回路要素へのデータ伝搬を可能にし、オペラン
ドに並列演算を施す場合には、第2のパーティション回
路要素から第3のパーティション回路要素へのデータ伝
搬を阻止できるようにする第2の選択手段と、第3のパ
ーティション回路要素と第4のパーティション回路要素
の間に結合されて、フル・ワード長のオペランドに演算
を施す場合には、第3のパーティション回路要素から第
4のパーティション回路要素へのデータ伝搬を可能に
し、オペランドに並列演算を施す場合には、第3のパー
ティション回路要素から第4のパーティション回路要素
へのデータ伝搬を阻止できるようにする第3の選択手段
が設けられている上記[1]に記載の機能単位である。
【0102】[4]第1の選択手段に、フル・ワード長
オペランドのビット長より短いビット長のオペランドに
並列加算を施す場合には、第2のパーティション回路要
素に論理0を送り、フル・ワード長オペランドのビット
長より短いビット長のオペランドに並列減算を施す場合
には、第2のパーティション回路要素に論理1を送る手
段が設けられている上記[1]に記載の機能単位であ
る。
【0103】[5]機能単位が、桁上げ先見加算器から
構成される上記[1]に記載の機能単位である。
【0104】[6]機能単位が、単一命令に応答して、
オペランドに並列演算を実施する上記[1]に記載の機
能単位である。
【0105】[7]機能単位が、減算を実施する上記
[1]に記載の機能単位である。
【0106】[8]それぞれ、少なくとも1つのオペラ
ンドからのビット集合に演算を施す、ハードウェアで実
施される複数のパーティションと、それぞれ、複数のパ
ーティションからの2つのパーティション間に結合され
て、オペランド・サイズの選択に応答し、2つのパーテ
ィション間におけるデータ転送を可能にしたり、阻止で
きるようにする少なくとも1つの選択手段が設けられ
た、演算を実行するための第1の演算実施手段から構成
される、並列データ処理を可能にするプロセッサであ
る。
【0107】[9]複数のパーティションが、それぞ
れ、1クォータ・ワード幅である上記[8]に記載のプ
ロセッサである。
【0108】[10]複数のパーティションが、それぞ
れ、1ビット幅であることと、プロセッサに、さらに、
どの選択手段によって、パーティション間におけるデー
タ転送を可能にし、また、どの選択手段によって、パー
ティション間におけるデータ転送を阻止するかを選択す
るための手段が設けられている上記[8]に記載のプロ
セッサである。
【0109】[11]各パーティションに、1ビット加
算器が設けられていることと、各選択手段が、2つの1
ビット加算器間における桁上げの伝播を促進するか、ま
たは、中断するセレクタである上記[10]に記載のプ
ロセッサである。
【0110】[12]複数のパーティションが、それぞ
れ、1ハーフ・ワード幅である上記[8]に記載のプロ
セッサである。
【0111】[13]第1の演算実施手段が、シフタで
ある上記[8]に記載のプロセッサである。
【0112】[14]第1の演算実施手段が、論理演算
装置である上記[8]に記載のプロセッサである。
【0113】[15]さらに、それぞれ、オペランドか
らのビット集合をシフトする、複数のシフト・レジスタ
・パーティションと、それぞれ、複数のシフト・レジス
タ・パーティションからの2つのシフト・レジスタ・パ
ーティション間に結合されて、オペランド・サイズの選
択に応答し、2つのシフト・レジスタ・パーティション
間におけるデータ・ビットのシフトを可能にしたり、阻
止したりする、少なくとも1つの選択手段からなる、論
理演算装置の入力に結合されたプリ・シフタが設けられ
ている上記[14]に記載のプロセッサである。
【0114】[16]各パーティションが、桁上げ先見
加算を実施する上記[8]に記載のプロセッサである。
【0115】[17]各パーティションが、減算を実施
する上記[8]に記載のプロセッサである。
【0116】[18](a)第1のパーティション回路
要素において、少なくとも1つのオペランドからの第1
のビット集合に演算を施すステップと、(b)第2のパ
ーティション回路要素において、少なくとも1つのオペ
ランドからの第2のビット集合に演算を施すステップ
と、(c)フル・ワード長オペランドに演算を施す場
合、第1のパーティション回路要素からのデータが、第
2のパーティション回路要素による結果の計算に影響を
及ぼすことを可能にするステップと、(d)オペランド
に並列演算を施す場合、第1のパーティション回路要素
からのデータが、第2のパーティション回路要素による
結果の計算に影響を及ぼさないようにするステップから
構成される、単一プロセッサ内における並列データ処理
を可能にするための方法である。
【0117】[19]ステップ(a)に、複数のオペラ
ンドの下位ビットに加算演算を施すステップが含まれる
ことと、ステップ(b)に、複数のオペランドの上位ビ
ットに加算演算を施すステップが含まれることと、ステ
ップ(c)に、フル・ワード長オペランドに加算を施す
場合、第1のパーティション回路要素からの桁上げが、
第2のパーティション回路要素による結果の計算に影響
を及ぼすことを可能にするステップが含まれることと、
ステップ(d)に、オペランドに並列加算を施す場合、
第1のパーティション回路要素からの桁上げが、第2の
パーティション回路要素による結果の計算に影響を及ぼ
さないようにするステップが含まれ上記[18]に記載
の方法である。
【0118】[20]ステップ(a)に、複数のオペラ
ンドの下位ビットに桁上げ先見加算演算を施すステップ
が含まれることと、ステップ(b)に、複数のオペラン
ドの上位ビットに桁上げ先見加算演算を施すステップが
含まれる上記[18]に記載の方法である。
【0119】[21]ステップ(a)に、複数のオペラ
ンドの下位ビットに減算演算を施すステップが含まれる
ことと、ステップ(b)に、複数のオペランドの上位ビ
ットに減算演算を施すステップが含まれる上記[18]
に記載の方法。
【0120】[22]ステップ(a)に、複数のオペラ
ンドの下位ビットに桁上げ伝播加算演算を施すステップ
が含まれることと、ステップ(b)に、複数のオペラン
ドの上位ビットに桁上げ伝播加算演算を施すステップが
含まれることと、ステップ(c)に、フル・ワード長オ
ペランドに加算を実施する場合には、第2のパーティシ
ョン回路要素への桁上げの伝播を可能にするステップが
含まれることと、ステップ(d)に、オペランドに並列
加算を実施する場合には、第2のパーティション回路要
素への桁上げの伝播を阻止するステップが含まれる上記
[18]に記載の方法である。
【0121】[23](a)ハードウェアによって実施
される複数のパーティションのそれぞれにおいて、少な
くとも1つのオペランドからのビット集合に演算を施す
ステップと、(b)少なくとも1つのフル・ワード長オ
ペランドに演算を施す場合には、データが、複数のパー
ティション間における境界を越えて、計算に影響を及ぼ
すことを可能にするステップと、(c)複数のフル・ワ
ード長より短いオペランドを用いて、並列演算を実施す
る場合には、データが、複数のパーティション間におけ
る少なくとも1つの境界を越えて、計算に影響を及ぼさ
ないようにするステップから構成される、単一プロセッ
サ内における並列データ処理を可能にするための方法で
ある。
【0122】[24]上記[23]のステップ(a)
に、複数のパーティションのそれぞれにおいて、ビット
集合に加算演算を施すステップが含まれることと、上記
[23]のステップ(b)に、パーティション間におけ
る桁上げの伝播を可能にするステップが含まれること
と、上記[23]のステップ(c)に、並列演算を実施
する場合には、複数のパーティション間における少なく
とも1つの境界を越えて、桁上げが伝播しないようにす
るステップが含まれる上記[23]に記載の方法であ
る。
【0123】[25]上記[23]のステップ(a)、
(b)、及び、(c)の前に、さらに、(d)複数のシ
フト・レジスタ・パーティションのそれぞれにおいて、
ビット集合をシフトするステップと、(e)フル・ワー
ド長より短い複数のオペランドを用いて、並列演算を実
施する場合には、データが、複数のシフト・レジスタ・
パーティション間における少なくとも1つの境界を越え
てシフトしないようにするステップが実施される上記
[23]に記載の方法である。
【0124】[26]各パーティションに、1ビット加
算器が含まれている上記[23]に記載の方法である。
【0125】[27]複数のパーティションのそれぞれ
が、1ハーフ・ワード幅である上記[23]に記載の方
法である。
【0126】[28]複数のパーティションが、マルチ
プレクサを利用して実施されるシフタから構成される上
記[23]に記載の方法である。
【0127】[29]上記[23]のステップ(a)
に、複数のパーティションのそれぞれにおいて、ビット
集合にシフト演算を施すステップが含まれることと、上
記[23]のステップ(b)に、パーティション間にお
けるシフトの伝播を可能にするステップが含まれること
と、上記[23]のステップ(c)に、並列演算を実施
する場合には、複数のパーティション間における少なく
とも1つの境界を越えて、シフトが伝播しないようにす
るステップが含まれ上記[23]に記載の方法。
【0128】[30]部分積を発生するための部分積発
生手段と、部分積発生手段に結合されて、部分積を合計
し、結果を求めるための部分積和回路要素と、全ワード
乗算とサブ・ワード被乗数の並列乗算の一方を選択する
ための選択手段と、部分積発生手段及び選択手段に結合
されて、選択手段がサブ・ワード被乗数の並列乗算を選
択するのに応答し、選択された部分積を強制的に新しい
値にして、サブ・ワード被乗数の並列乗算が実施される
ようにするための部分積選択手段から構成される、全ワ
ード乗算及びサブ・ワード被乗数の並列乗算の両方を実
施する乗算器である。
【0129】[31]選択手段がサブ・ワード被乗数の
並列乗算を選択するのに応答して、部分積選択手段が、
選択された部分積の値を強制的にゼロにする上記[3
0]に記載の乗算器。
【0130】[32]部分積発生手段が、論理ANDゲ
ート・アレイから構成され、論理ANDゲート・アレイ
における各論理ANDゲート毎に、部分積を発生する上
記[31]に記載の乗算器。
【0131】[33]部分積選択手段が、論理ANDゲ
ートの少なくとも一部に対する第3の入力から構成され
る上記[32]に記載の乗算器。
【0132】[34]乗算器が全ワード乗算を実施する
場合には、部分積選択手段が、部分積の値を強制的にゼ
ロにすることはないという上記[31]に記載の乗算器
である。
【0133】[35]乗算器が、Booth符号化乗算
器である上記[30]に記載の乗算器である。
【0134】[36]単一のハードウェア乗算器を利用
して、全ワード被乗数の乗算及びサブ・ワード被乗数の
並列乗算の両方を実施するための方法において、(a)
部分積を発生するステップと、(b)サブ・ワード被乗
数の並列乗算を実施する選択に応答し、選択された部分
積を強制的に新しい値にするステップと、(c)部分積
和回路要素を利用して、部分積を合計し、結果を求める
ステップから構成される、単一のハードウェア乗算器を
利用して、全ワード被乗数の乗算及びサブ・ワード被乗
数の並列乗算の両方を実施するための方法である。
【0135】[37]上記[36]のステップ(b)
に、サブ・ワード被乗数の並列乗算を行う選択に応答
し、選択された部分積の値を強制的にゼロにするステッ
プが含まれる上記[36]に記載の乗算方法である。
【0136】[38]上記[36]のステップ(a)
が、論理ANDゲート・アレイを利用して、実施される
ことと、論理ANDゲートにおける各論理ANDゲート
毎に、部分積を発生する上記[37]に記載の乗算方法
である。
【0137】[39]上記[36]のステップ(b)に
おいて、選択された部分積の値を強制的にゼロにするス
テップが、論理ANDゲートの一部に対する入力に論理
0を配置することによって実施される上記[38]に記
載の乗算方法である。
【0138】[40]上記[36]のステップ(b)に
おいて、乗算器が全ワード乗算を実施している間、部分
積の値を強制的にゼロにすることはないという上記[3
7]に記載の乗算方法である。
【0139】
【発明の効果】上記説明したように本発明に係る単一プ
ロセッサにおける並列デ−タ処理は、第1のパーティシ
ョン回路要素と、第2のパーティション回路要素と、第
1のパーティション回路要素と第2のパーティション回
路要素の間に結合されて、フル・ワード長のオペランド
に演算を施す場合には、第1のパーティション回路要素
から第2のパーティション回路要素へのデータ伝搬を可
能にし、フル・ワード長オペランドのビット長より短い
ビット長のオペランドに並列演算を施す場合には、第1
のパーティション回路要素から第2のパーティション回
路要素へのデータ伝搬を阻止できるようにする第1の選
択手段から構成したことにより、オペランドがフル・ワ
−ド長より短い場合における並列処理演算を容易化する
ことができ、単一プロセッサ・システムの性能を大幅に
高めることができると共に、並列処理の低コスト化を図
り、プロセッサ・チップにおけるシリコン・スペ−スま
たは設計の複雑さにコストを費やすことなく、デ−タ並
列処理を利用可能な計算に関する性能を大幅に向上させ
るとができると云う極めて優れた効果を奏する。
【図面の簡単な説明】
【図1】本発明の望ましい実施例に基づく、プロセッサ
内における演算実行データ経路の略ブロック図である。
【図2】本発明の望ましい実施例に基づく、図1に示す
論理演算装置(ALU)の略ブロック図である。
【図3】本発明の望ましい実施例に基づく、図2に示す
ALU内における2の歩数加算機の実施例を示す図であ
る。
【図4】本発明の望ましい代替実施例に基づく、図1に
示す論理演算装置(ALU)の代替略ブロック図であ
る。
【図5】本発明の望ましい代替実施例に基づく、図1に
示す論理演算装置(ALU)のもう1つの代替略ブロッ
ク図である。
【図6】本発明の望ましい代替実施例に基づく、図1に
シフタの実施例を示す図である。
【図7】先行技術による乗算器を示す図である。
【図8】本発明の望ましい実施例に基づいて実施される
乗算器を示す図である。
【図9】本発明の望ましい実施例に基づいて実施される
乗算器を示す図である。
【図10】本発明の望ましい代替実施例に基づく、図1
に示すALU内における桁上げ先見加算機の実施例を示
す図である。
【図11】本発明の望ましい代替実施例に基づく、命令
のレイアウトの一例を示す図である。
【符号の説明】
21 ソース・バス 23 結果バス 25 汎用レジスタ 26 ALU 27 プリ・シフタ 28 補数回路要素 29 シフタ 50、80、90、100、120、130、140、
150、173、174 セレクタ 60460 ハーフ加算器 61、65、66、69、465、466、469
フル加算器 220、320 部分積和回路 301〜316 論理ANDゲート 470 桁上げ先見回路

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数のオペランドからの第1のビット集
    合に演算を施す第1のパーティション回路要素と、複数
    のオペランドからの第2のビット集合に演算を施す第2
    のパーティション回路要素とからなり、 前記第1のパーティション回路要素と前記第2のパーテ
    ィション回路要素の間に結合されて、フル・ワード長の
    オペランドに演算を施す場合には、前記第1のパーティ
    ション回路要素から前記第2のパーティション回路要素
    へのデータ伝搬を可能にし、フル・ワード長オペランド
    のビット長より短いビット長のオペランドに並列演算を
    施す場合には、前記第1のパーティション回路要素から
    前記第2のパーティション回路要素へのデータ伝搬を阻
    止できるようにする第1の選択手段を構成したことを特
    徴とする単一プロセッサにおける並列データ処理。
JP31267194A 1993-11-23 1994-11-22 単一プロセッサにおいて並列データ処理を実行する方法 Expired - Fee Related JP3578502B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15734693A 1993-11-23 1993-11-23
US157,346 1993-11-23

Publications (2)

Publication Number Publication Date
JPH07200260A true JPH07200260A (ja) 1995-08-04
JP3578502B2 JP3578502B2 (ja) 2004-10-20

Family

ID=22563337

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31267194A Expired - Fee Related JP3578502B2 (ja) 1993-11-23 1994-11-22 単一プロセッサにおいて並列データ処理を実行する方法

Country Status (4)

Country Link
US (1) US5636351A (ja)
EP (2) EP0654733B1 (ja)
JP (1) JP3578502B2 (ja)
DE (2) DE69424626T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006320014A (ja) * 1998-02-27 2006-11-24 Mosaid Technologies Inc 共用メモリ配線を有する暗号化プロセッサ

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3479385B2 (ja) * 1995-06-29 2003-12-15 東芝マイクロエレクトロニクス株式会社 情報処理装置
US5734599A (en) * 1995-07-07 1998-03-31 Hewlett-Packard Company Performing a population count using multiplication
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7483935B2 (en) * 1995-08-16 2009-01-27 Microunity Systems Engineering, Inc. System and method to implement a matrix multiply unit of a broadband processor
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
JP3711147B2 (ja) * 1995-08-31 2005-10-26 インテル・コーポレーション パック・データを処理する1組の命令
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US6092094A (en) * 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
GB2317469B (en) * 1996-09-23 2001-02-21 Advanced Risc Mach Ltd Data processing system register control
GB2317465B (en) * 1996-09-23 2000-11-15 Advanced Risc Mach Ltd Data processing apparatus registers.
TW325552B (en) * 1996-09-23 1998-01-21 Advanced Risc Mach Ltd Data processing condition code flags
GB2317464A (en) * 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
GB2317466B (en) * 1996-09-23 2000-11-08 Advanced Risc Mach Ltd Data processing condition code flags
GB2317467B (en) * 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
US5793654A (en) * 1996-09-30 1998-08-11 Intel Corporation Saturating alignment shifter
US5784602A (en) * 1996-10-08 1998-07-21 Advanced Risc Machines Limited Method and apparatus for digital signal processing for integrated circuit architecture
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6003125A (en) * 1997-01-24 1999-12-14 Texas Instruments Incorporated High performance adder for multiple parallel add operations
US6223198B1 (en) * 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
GB2381913B (en) * 1998-02-27 2003-06-25 Mosaid Technologies Inc A multiplier circuit
JP4158864B2 (ja) 1998-03-18 2008-10-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
US6282633B1 (en) 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US6397241B1 (en) 1998-12-18 2002-05-28 Motorola, Inc. Multiplier cell and method of computing
WO2000049494A1 (en) * 1999-02-17 2000-08-24 Analog Devices, Inc. Fast multi-format adder
WO2000057270A1 (en) * 1999-03-23 2000-09-28 Sony Electronics, Inc. Adder circuit
US6449629B1 (en) * 1999-05-12 2002-09-10 Agere Systems Guardian Corp. Three input split-adder
US6654870B1 (en) * 1999-06-21 2003-11-25 Pts Corporation Methods and apparatus for establishing port priority functions in a VLIW processor
US6725360B1 (en) * 2000-03-31 2004-04-20 Intel Corporation Selectively processing different size data in multiplier and ALU paths in parallel
US6748411B1 (en) 2000-11-20 2004-06-08 Agere Systems Inc. Hierarchical carry-select multiple-input split adder
FR2818145B1 (fr) * 2000-12-18 2003-11-28 Oreal Compositions cosmetiques antisolaires a base d'un melange synergetique de filtres et utilisations
AU2002339867A1 (en) 2001-09-04 2003-03-18 Microunity Systems Engineering, Inc. System and method for performing multiplication
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
FR2853425B1 (fr) * 2003-04-07 2006-01-13 Atmel Corp Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
US7099910B2 (en) * 2003-04-07 2006-08-29 Sun Microsystems, Inc. Partitioned shifter for single instruction stream multiple data stream (SIMD) operations
US7668897B2 (en) * 2003-06-16 2010-02-23 Arm Limited Result partitioning within SIMD data processing systems
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
US7433912B1 (en) 2004-02-19 2008-10-07 Sun Microsystems, Inc. Multiplier structure supporting different precision multiplication operations
DE102004013484B3 (de) * 2004-03-18 2005-08-11 Infineon Technologies Ag Rechenwerk
DE102004051251B3 (de) 2004-10-21 2006-03-02 Thomas, Götz, Dipl.-Ing. Sternförmiger Dekorationsartikel sowie Zuschnitte und Verfahren zu seiner Herstellung
TWI307874B (en) * 2005-04-06 2009-03-21 Himax Tech Inc Shift register circuit
US7716264B2 (en) * 2005-08-16 2010-05-11 International Business Machines Corporation Method and apparatus for performing alignment shifting in a floating-point unit
US20080282052A1 (en) * 2005-11-18 2008-11-13 Xiang Ma Operating Media Devices in Pre-Os Environment
US20080229058A1 (en) * 2007-03-13 2008-09-18 Hung Qui Le Configurable Microprocessor
US20080229065A1 (en) * 2007-03-13 2008-09-18 Hung Qui Le Configurable Microprocessor
US11317202B2 (en) 2007-04-13 2022-04-26 Staton Techiya, Llc Method and device for voice operated control
US10009677B2 (en) 2007-07-09 2018-06-26 Staton Techiya, Llc Methods and mechanisms for inflation
US9129291B2 (en) 2008-09-22 2015-09-08 Personics Holdings, Llc Personalized sound management and method
MY177563A (en) * 2010-04-15 2020-09-20 Univ Malaya Parallel self-timed adder (pasta)
JP5664039B2 (ja) 2010-09-08 2015-02-04 富士通株式会社 リダクション演算装置、処理装置及びコンピュータシステム
US12349097B2 (en) 2010-12-30 2025-07-01 St Famtech, Llc Information processing using a population of data acquisition devices
US9329835B1 (en) * 2011-10-19 2016-05-03 Marvell International Ltd. Systems and methods for performing mathematical functions
US9167082B2 (en) 2013-09-22 2015-10-20 Steven Wayne Goldstein Methods and systems for voice augmented caller ID / ring tone alias
US10747534B1 (en) * 2018-11-26 2020-08-18 Xilinx, Inc. Vectorization of wide integer data paths into parallel operations with value extraction for maintaining valid guard bands
CN115390924B (zh) * 2022-08-16 2026-02-03 海光信息技术股份有限公司 指令执行方法、执行引擎、处理器、芯片及电子设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2222195A1 (de) * 1972-05-05 1973-11-22 Siemens Ag Anordnung zur verarbeitung von operanden von programmen
US4128872A (en) * 1977-06-20 1978-12-05 Motorola, Inc. High speed data shifter array
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
US4418383A (en) * 1980-06-30 1983-11-29 International Business Machines Corporation Data flow component for processor and microprocessor systems
US4707800A (en) * 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
US4754412A (en) * 1985-10-07 1988-06-28 Schlumberger Systems & Services, Inc. Arithmetic logic system using the output of a first alu to control the operation of a second alu
JPS62229440A (ja) * 1986-03-31 1987-10-08 Toshiba Corp 配列乗算器
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
JPS63253433A (ja) * 1987-04-10 1988-10-20 Hitachi Ltd 演算処理装置
US5189636A (en) * 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
US5047975A (en) * 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
KR920003908B1 (ko) * 1987-11-19 1992-05-18 미쓰비시뎅끼 가부시끼가이샤 승산기(乘算器)
GB2215496A (en) * 1988-02-25 1989-09-20 Texas Instruments Ltd Multi-stage parallel binary adders and/or subtractors
DE3850096D1 (de) * 1988-03-19 1994-07-14 Itt Ind Gmbh Deutsche CMOS-Parallel-Serien-Multiplizierschaltung sowie deren Multiplizier- und Addierstufen.
US5126964A (en) * 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
US4901268A (en) * 1988-08-19 1990-02-13 General Electric Company Multiple function data processor
US4953119A (en) * 1989-01-27 1990-08-28 Hughes Aircraft Company Multiplier circuit with selectively interconnected pipelined multipliers for selectively multiplication of fixed and floating point numbers
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5020013A (en) * 1989-09-29 1991-05-28 Cyrix Corporation Bidirectional variable bit shifter
US5038314A (en) * 1989-11-17 1991-08-06 Digital Equipment Corporation Method and apparatus for correction of underflow and overflow
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
JP2523962B2 (ja) * 1990-08-20 1996-08-14 松下電器産業株式会社 浮動小数点演算装置
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5247471A (en) * 1991-12-13 1993-09-21 International Business Machines Corporation Radix aligner for floating point addition and subtraction
US5257218A (en) * 1992-01-06 1993-10-26 Intel Corporation Parallel carry and carry propagation generator apparatus for use with carry-look-ahead adders
FR2693287B1 (fr) * 1992-07-03 1994-09-09 Sgs Thomson Microelectronics Sa Procédé pour effectuer des calculs numériques, et unité arithmétique pour la mise en Óoeuvre de ce procédé.
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
US5327369A (en) * 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006320014A (ja) * 1998-02-27 2006-11-24 Mosaid Technologies Inc 共用メモリ配線を有する暗号化プロセッサ
JP2011008285A (ja) * 1998-02-27 2011-01-13 Mosaid Technologies Inc 共用メモリ配線を有する暗号化プロセッサ
USRE44697E1 (en) 1998-02-27 2014-01-07 Mosaid Technologies Incorporated Encryption processor with shared memory interconnect

Also Published As

Publication number Publication date
EP0654733B1 (en) 2000-05-24
DE69424626T2 (de) 2001-01-25
EP0924601A3 (en) 1999-07-21
EP0654733A1 (en) 1995-05-24
US5636351A (en) 1997-06-03
DE69428466T2 (de) 2002-05-23
JP3578502B2 (ja) 2004-10-20
DE69424626D1 (de) 2000-06-29
EP0924601A2 (en) 1999-06-23
EP0924601B1 (en) 2001-09-26
DE69428466D1 (de) 2001-10-31

Similar Documents

Publication Publication Date Title
JPH07200260A (ja) 単一プロセッサにおける並列データ処理
JP3589719B2 (ja) 算術演算の結果として生じる正および負のオーバーフローのハードウェアによる効率的な取り扱い方法
US5844830A (en) Executing computer instrucrions by circuits having different latencies
JP3573808B2 (ja) 論理演算装置
US3993891A (en) High speed parallel digital adder employing conditional and look-ahead approaches
JP3729881B2 (ja) 並列加算および平均演算を行うための回路およびその方法
US5953241A (en) Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
EP0018519B1 (en) Multiplier apparatus having a carry-save/propagate adder
US6647404B2 (en) Double precision floating point multiplier having a 32-bit booth-encoded array multiplier
US3752971A (en) Expandable sum of cross product multiplier/adder module
JPH02196328A (ja) 浮動小数点演算装置
JPH0368413B2 (ja)
EP0040279B1 (en) Binary divider
US3814925A (en) Dual output adder and method of addition for concurrently forming the differences a{31 b and b{31 a
JPH08212058A (ja) 加算オーバフロ検出回路
US5721697A (en) Performing tree additions via multiplication
GB2262637A (en) Padding scheme for optimized multiplication.
US3840727A (en) Binary multiplication by addition with non-verlapping multiplier recording
US4099248A (en) One's complement subtractive arithmetic unit utilizing two's complement arithmetic circuits
US6684236B1 (en) System of and method for efficiently performing computations through extended booth encoding of the operands thereto
JPH04172526A (ja) 浮動小数点除算器
EP0508627B1 (en) Method and apparatus for generating carry out signals
EP0438962A2 (en) Method and apparatus for exponent adder
US20070011222A1 (en) Floating-point processor for processing single-precision numbers
US5051943A (en) Adder circuit with an encoded carry

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040512

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040713

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080723

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090723

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100723

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees