JPH07325704A - 多重ビット・シフト装置,それを用いるデータ・プロセッサおよびその方法 - Google Patents

多重ビット・シフト装置,それを用いるデータ・プロセッサおよびその方法

Info

Publication number
JPH07325704A
JPH07325704A JP7148358A JP14835895A JPH07325704A JP H07325704 A JPH07325704 A JP H07325704A JP 7148358 A JP7148358 A JP 7148358A JP 14835895 A JP14835895 A JP 14835895A JP H07325704 A JPH07325704 A JP H07325704A
Authority
JP
Japan
Prior art keywords
shift
signal
input
multiplier
operand
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
JP7148358A
Other languages
English (en)
Other versions
JP3756967B2 (ja
Inventor
Joseph P Gergen
ジョセフ・ピー・ガーゲン
Kin K Chau-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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of JPH07325704A publication Critical patent/JPH07325704A/ja
Application granted granted Critical
Publication of JP3756967B2 publication Critical patent/JP3756967B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 桁送り機能を有する演算回路が提供される。 【構成】 データ・プロセッサの多重ビット・シフト装
置50は通常の掛算演算に用いる改良形ブースの再符号
化掛算器などの掛算器55を有する。多重ビット・シフ
ト装置50は、また、掛算器55を用いてプログラミン
グ可能な左および右シフトを実行して回路面積を節約す
る。シフト演算中は、リマッピング回路54がシフト回
数を受信し、シフト方向に従ってシフト回数をリマップ
して、リマップ済み信号を提供する。掛算器55は、そ
の入力においてシフト・オペランドとリマップ済み信号
の両方を受信する。掛算器55は、その出力に第1シフ
ト結果を提供する。ある実施例においては、出力シフタ
57がシフト方向により選択的に一定量だけ第1シフト
結果をシフトさせ、第2シフト結果を提供する。第2シ
フト結果には、共通ビット位置に左シフトと右シフトの
両方の出力が含まれる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般にデータ処理シス
テムに関し、さらに詳しくは、シフト(桁送り)機能を
もつ演算回路に関する。
【0002】
【従来の技術および発明が解決しようとする課題】デー
タ・プロセッサは、その命令セットを実行するために種
々のシフト演算を必要とする。シフト演算には、左シフ
ト,右シフトおよび回転がある。シフトは、算術的な場
合と論理的な場合とがあり、それによってオペランドの
いずれかの端にあるビットがどのように処理されるかが
決まる。各シフトまたは回転演算は、可変シフト量を有
する。どのビットが特定のビット位置にシフトするか
は、シフト演算の種類によって決まる。あるオペランド
にシフトと回転演算を組み込むために回路構成を設計す
る際には、どちらかを妥協しなければならないのが普通
である。演算を実行するために回路構成に用いられる集
積回路の面積が、演算性能に影響を及ぼし、性能は演算
を完了するためのクロック数で測る。
【0003】ある例では、バレル・シフタ(barrel shi
fter)が、あるオペランドについて全マトリクスの演算
を実行する。たとえば、このバレル・シフタが32ビッ
ト幅であるとすると、32ビットのそれぞれが他の31
ビットのそれぞれに選択的に直接結合される。ある演算
に関してどのビット群が結合するかは、実行される演算
のシフト量と方向によって決まる。バレル・シフタは、
シフタの性能を最大にするが、消費スペースも最大であ
る。別の極端な例では、簡単なシフタが、一度に1つの
ビットしかシフトしない。より多くの量のシフトを実行
するには、指定された量に達するまで制御部が連続して
1ビットのシフト演算を用いなければならない。このよ
うなシフタは、バレル・シフタよりはるかに少ない面積
しかとらないが、性能は大幅に劣る。米国特許第5,0
99,445号においてChas F.StudorおよびRobert Sk
ruhakが中間的なシフタを開示している。このシフタ
は、左シフトおよび右シフトを1ビットずつ行うだけで
なく、任意の数、たとえば4ビットずつ行って、寸法と
速度との折り合いをつけている。しかし、面積と速度が
両立しないことは、データ・プロセッサ設計の大きな問
題として残っている。G. Wolrich他は、「Apparatus an
d Method for Performing a Shift Operation in a Mul
tiplier Array Circuit 」と題した米国特許第4,88
7,232号において、加算または減算前に浮動小数点
システムのオペランドを調整するシフト装置を開示して
いる。Wolrich 他は、既存のアレイ掛算器を利用して、
バレル・シフタなどの追加のシフタを用いずに浮動小数
点演算に必要とされる速度で、このデノーマリゼーショ
ン・シフトを実行する。Wolrich 他により開示された装
置は、デノーマリゼーション・シフトにしか用いられな
いので、右シフトをプログラミング可能に実行するに過
ぎない。しかし、消費する回路面積が非常に小さく、し
かも必要とされるすべての演算を実行することのできる
シフト装置が必要とされる。
【0004】
【発明を解決する方法】従って、本発明は、1つの形態
では第1および第2レジスタ,リマッピング(再配置)
回路および掛算器によって構成される多重ビット・シフ
ト装置を提供する。第1レジスタは第1オペランドを受
信し、第2レジスタが第2オペランドを受信する。リマ
ッピング回路は、第2レジスタに結合された入力と、シ
フト方向信号を受信する第1制御入力と、モード信号を
受信する第2制御入力と、出力とを有する。リマッピン
グ回路は、掛算演算またはシフト演算を示すモード信号
に応答して、その出力にそれぞれ第2オペランドまたは
リマップ済み信号のいずれかを選択的に提供する。リマ
ップ済み信号は、シフト方向信号の決定に従って第2オ
ペランドから解読される。掛算器は、第1レジスタに結
合された第1入力と、リマッピング回路の出力に結合さ
れた第2入力と、その第1および第2入力の積を提供す
る出力とを有する。この積は、掛算演算中の第1および
第2オペランドの積、またはシフト演算中の第1オペラ
ンドとリマップ済み信号の積に等しい第1シフト結果の
いずれかである。
【0005】本発明は、別の形態で、多重ビット・シフ
ト装置を有するデータ・プロセッサを提供する。このデ
ータ・プロセッサは、アドレスおよびデータ経路と、命
令デコーダと、演算論理ユニットとを有する。命令デコ
ーダは、命令を取り込むためのアドレスおよびデータ経
路に結合され、シフトおよび掛算命令を含む複数の命令
に応答して複数の制御信号を提供する。命令デコーダ
は、シフト命令に応答して実行するシフト演算か、また
は掛算命令に応答して実行する掛算演算のいずれかを示
すモード信号を提供する。命令デコーダは、また、シフ
ト命令に応答してシフト方向信号も提供する。演算論理
ユニットは、命令デコーダに結合され、第1および第2
レジスタと、リマッピング回路と、掛算器とを有する。
第1レジスタは第1オペランドを受信し、第2レジスタ
が第2オペランドを受信する。リマッピング回路は、第
2レジスタに結合された入力と、シフト方向信号を受信
する第1制御入力と、モード信号を受信する第2制御入
力と、出力とを有する。リマッピング回路は、掛算演算
またはシフト演算を示すモード信号に応答して、その出
力にそれぞれ第2オペランドまたはリマップ済み信号の
いずれかを選択的に提供する。リマップ済み信号は、シ
フト方向信号の決定に従って第2オペランドから解読さ
れる。掛算器は、第1レジスタに結合された第1入力
と、リマッピング回路の出力に結合された第2入力と、
その第1および第2入力の積を提供する出力とを有す
る。この積は、掛算演算中の第1および第2オペランド
の積、またはシフト演算中の第1オペランドとリマップ
済み信号の積に等しい第1シフト結果のいずれかであ
る。
【0006】さらに別の形態で、本発明は多重ビット・
シフト方法を提供する。シフトされるオペランドが第1
オペランドとして受信され、シフト回数が第2オペラン
ドとして受信される。シフト回数は、シフト方向信号の
決定に従ってリマップされて、リマップ済み信号とな
る。リマップ済み信号は、シフト方向信号の決定に従っ
てシフト回数から解読される。シフトされるオペランド
が掛算器の第1入力に送られる。リマップ済み信号は掛
算器の第2入力に送られる。掛算器の出力は、第1シフ
ト結果として提供される。
【0007】これらとその他の特徴および利点は、以下
の詳細な説明と添付の図面とによって、さらに明確に理
解頂けるだろう。
【0008】
【実施例】図1は、従来の技術による演算論理ユニット
(ALU)20のブロック図である。ALU20は、オ
ペランドを格納するレジスタ21,22を有する。AL
U20は、掛算命令中にこの2つのオペランドを受信す
るアレイ掛算器23を有する。この2つのオペランドが
掛算器23に提示されると、それぞれ「乗数(MULTIPLI
ER)」と「被乗数(MULTIPLICAND)」と標識が付けられ
る。アレイ掛算器23は、改良形ブースの掛算器(modi
fied Booth's multiplier ),ウォレス・ツリー(Wall
ace Tree)などの従来のアレイ掛算器である。改良形ブ
ースの掛算器の場合には、一連の改良形ブースの再符号
化装置(recoder )(図示せず)が対応する3個の乗数
ビットのグループを受信し、それを再符号化してアレイ
掛算器23のアレイに信号を提供する。次に被乗数信号
がアレイ内のマルチプレクサに送られて、従来の改良型
ブースの再符号化による部分積、すなわち被乗数の0
倍,±1倍および±2倍を選択する。次にマルチプレク
サの出力が総計されて最終和となる。これは乗数と被乗
数との積である。
【0009】アレイ掛算器23は、この積を出力信号と
して累積加算器(accumulation adder)24に送る。累
積加算器24は、前の和を受け取り、それを積に加算し
て、その和を出力としてレジスタ25に送る。レジスタ
25は読み書きレジスタで、累積加算器24の入力に接
続される出力を有する。これによりALU20は、掛算
および累積(MAC:multiply and accumulate )命令
を行うことができる。ALU20には、シフト命令を実
行するためのバレル・シフタ26も含まれる。バレル・
シフタ26は、レジスタ21の出力に接続され、「シフ
ト・オペランド(SHIFT OPERAND )」と標識がついた数
量を受信する第1入力と、レジスタ22の出力に接続さ
れ、「シフト回数(SHIFT COUNT )」と標識がついた数
量を受信する第2入力と、その出力として「シフト済み
出力(SHIFTED OUTPUT)」と標識のついた数量を提供す
る出力とを有する。バレル・シフタ26は、シフト演算
の種類を決定する他の制御信号(図示せず)も受信す
る。
【0010】バレル・シフタ26は、シフト・オペラン
ド内の任意のビットをシフト演算の種類とシフト回数と
によって決定される他の任意のビット位置にシフトする
ことができる。バレル・シフタ26は小さい伝播遅延し
か必要とせず、これはデータ・プロセッサの1クロック
・サイクル以内であるのが普通である。しかし、このよ
うな汎用性を得るために、バレル・シフタ26には各ビ
ット位置と1つおきのビット位置との間に選択的接続を
形成するトランジスタの大きなアレイが含まれる。これ
は多数のトランジスタを必要とするので、バレル・シフ
タ26は大量の集積回路面積と、かなりの量の電力とを
消費する。余分な回路面積と電力の経費をかけずにバレ
ル・シフタ26の高速を実現することが望ましい。
【0011】図2は、本発明によるデータ・プロセッサ
40を有するデータ処理システム30を示す。データ処
理システム30は、プログラムおよびデータ要素を格納
するメモリ31を有し、ランダム・アクセス・メモリ
(RAM)と不揮発性メモリの両方を有することがあ
る。メモリ31には、適宜にアドレス,制御およびデー
タ信号をメモリ31内外に伝える汎用バス32を通じて
アクセスする。
【0012】データ・プロセッサ40は、バス32を介
してメモリ31に接続され、一般に命令ラッチ・デコー
ダ41と、制御レジスタ・ブロック42と、バス・コン
トローラ43と、ALUおよびレジスタ・ブロック50
−−以下単にALU50と呼ぶ−−とを有する。アドレ
ス発生ユニット(AGU),周辺機器などのその他の従
来のデータ・プロセッサ・ブロックは、本発明の理解に
は必要ではなく、当技術では周知のものであるので、図
2では省略されている。バス・コントローラ43は、制
御信号44をバス32に送ることによりメモリ31に格
納されているプログラムにアクセスする。命令を取り出
す間、制御レジスタ42が命令取り出しのためのプログ
ラム・カウンタ・アドレスなどのアドレスを双方向信号
線46を介して提供する。これに応答して、メモリ31
は、アクセスされたアドレスに格納されているデータ要
素を提供する。命令ラッチ・デコーダ41は、入力デー
タ経路45を介してこのデータ要素を受信する。次に命
令ラッチ・デコーダ41は、この命令を解読して、対応
する制御信号をデータ・プロセッサ40の他のブロック
に送る。図示される実施例においては、命令ラッチ・デ
コーダ41は、命令の種類,関与するレジスタ,メモリ
・アドレス・モードなどを決定する選択されたビット・
フィールドを直接的に解読することによって、データ・
プロセッサ40の命令セットに対応する。他の実施例で
は、命令ラッチ・デコーダ41は、命令を実行する内部
マイクロコード・ルーチンの開始アドレスを含む命令を
受信することもある。
【0013】命令ラッチ・デコーダ41は、受信された
命令を実行するために適切な制御信号を提供する。制御
レジスタ・ブロック42は、これらの制御信号の1セッ
トを受信する。このブロックには、プログラム・カウン
タなど、データ・プロセッサ40の制御に用いられるレ
ジスタが含まれる。制御レジスタ・ブロック42は、バ
ス32との間にアドレス信号を提供しデータを伝える、
バス32に対する双方向接続46を有する。制御レジス
タ・ブロック42は、制御信号もバス32に提供する。
バス・コントローラ43は、命令ラッチ・デコーダ41
から別のセットの制御信号を受信し、命令の流れにより
命令の取り出し,データの格納および検索などを行うた
めの制御信号44をバス32に提供する。ALU50
は、命令ラッチ・デコーダ41からさらに別のセットの
制御信号を受信し、命令実行のためのレジスタ・セット
を有する。ALU50は、バス32との間にデータを伝
え、バス32にアドレスを提供するための、バス32に
対する接続47を有する。ALU50は、データ・プロ
セッサ40の命令セットに対応するために複数の演算を
実行するが、これには加算と、減算と、掛算と、掛算お
よび累積(MAC)と、左右のシフト命令が含まれる。
ここでは、左シフトはビットをより上位のビット位置に
移動する演算を意味し、右シフトは、ビットをより下位
のビット位置に移動することを意味する。
【0014】一般に、データ・プロセッサ40は、その
命令セットを実行するために必要な回路面積を最小限に
抑えることが望ましい。データ・プロセッサ40の最大
のブロックの1つはALU50であり、これは命令セッ
トに対応する命令に応答して演算を実行するための専用
ハードウェアを有する。しかし、ALU50は、バレル
・シフタ26などの専用シフト回路の必要をなくするこ
とによって、図1のALU20よりも小さい面積しか必
要としない。専用シフト回路の必要をなくするために、
命令ラッチ・デコーダ41は、ALU50内の他の既存
のハードウェア内にある、プログラミング可能な多重ビ
ットの左右シフトを実行するための制御信号をALU5
0に提供する。
【0015】この機能は、図2のALU50の1つの実
施例をブロック図に示す図3を参照すると、さらによく
判る。ALUおよびレジスタ・ブロック50には、入力
データを受信する2つの入力レジスタ51,52が含ま
れる。入力レジスタ51は、掛算演算中は「被乗数」と
呼ばれるデータ要素を格納し、シフト演算中は「シフト
・オペランド」と呼ばれるデータ要素を格納する。入力
レジスタ52は、掛算演算中は「乗数」と呼ばれるデー
タ要素を格納し、シフト演算中は「シフト回数」と呼ば
れるデータ要素を格納する。図示される実施例において
は、ALU50は16ビットのデータ語で動作するの
で、レジスタ51,52はそれぞれ16ビットのレジス
タである。
【0016】レジスタ52の16ビット出力は、リマッ
ピング回路54の入力に送られる。リマッピング回路5
4は、「左(LEFT)」,「右(RIGHT )」,「迂回(BY
PASS)」および「シフト(SHIFT )」と標識がついた制
御信号に応答して選択的に動作状態になる。信号左,右
は共にシフト方向を示し、ただ1つの信号により表現す
ることもできる。シフト命令に応答して、図2の命令ラ
ッチ・デコーダ41は、信号左を高論理に能動化して左
シフトを示し、信号右を高論理に能動化して右シフトを
示す。シフト以外の命令では、命令ラッチ・デコーダ4
1は信号迂回を高論理に能動化して、リマッピング回路
54にリマッピングなしに入力を出力に伝えさせる、す
なわちリマッピング機能を迂回させる。シフト命令中
は、信号迂回は低論理で非能動になる。このように、信
号迂回はALU50の動作モードを示す。リマッピング
回路54は、シフト命令中にシフト回数がゼロに等しく
なる条件の検出も行い、この条件を検出するとそれに応
答して「シフト0」と標識のついた出力信号を提供す
る。
【0017】掛算器55は、16x16アレイ掛算器で
ある。特に、掛算器55は改良形ブースの掛算器で、桁
上げ/セーブ(carry/save)加算器ツリーを通じて部分
積を総計する。しかし、ウォレス・ツリーを通じて部分
積を総計する掛算器など、他の種類のアレイ掛算器も可
能である。重要なことは、掛算器55が相対的に高速で
あることである。図示される例では、掛算器55はデー
タ処理システム30の1クロック・サイクル内で、第1
入力と第2入力の積を提供する。掛算器55は、レジス
タ51の出力端子に結合された16ビット被乗数入力端
子と、リマッピング回路54の出力端子に結合された1
6ビット乗数入力端子と、信号シフト0のための制御入
力端子と、乗数および被乗数入力の積を提供する32ビ
ット出力端子とを有する。
【0018】信号シフト0は、次のようにして、掛算器
55に被乗数入力を32ビット出力端子に伝えさせる。
2個の16ビットの2の補数を掛算するとその直接的な
結果は、2個の符号ビットと30個の仮数ビットをもつ
32ビットの数である。しかし、掛算器55は、最上位
ビット位置に1つの符号ビットしかもたず、その後に3
0個の仮数ビットが続き、最下位ビット位置にゼロをも
つ。そのため、信号シフト0に応答して、被乗数入力の
16個のビットは、ビット0がゼロに設定されてビット
位置16:1に整合される。
【0019】図示されるデータ・プロセッサは、デジタ
ル信号プロセッサ(DSP:digital signal processo
r)である。有限衝撃応答(FIR:finite impulse re
sponse )フィルタ,無限衝撃応答(IIR:infinite
impulse response )フィルタ,高速フーリエ変換(F
FT:fast Fourier Transform)などの信号処理アルゴ
リズムにおいては、ハードウェアを用いて掛算および累
積(MAC)を実行する機能をもつことが有用である。
この目的のために、ALU50には、このような命令の
積の総計を効率的に累積する累積加算器56が含まれ
る。累積加算器56は、掛算器55の出力端子に接続さ
れ、第1加算オペランドを受信する32ビット入力端子
と、第2加算オペランドを受信する第2の40ビット入
力端子と、加算器の40ビットの総計を提供する出力端
子とを有する。この総計は、シフト・モードでは第1シ
フト結果を表し、掛算モードでは累積された積(被累積
積)を表す。32ビットで表すことのできない累積に対
応するために、累積加算器56は、オーバーフロー(あ
ふれ)に対する保護ビットとして機能する8個の追加ビ
ットを最上位ビット位置に配している。
【0020】出力シフタ57は、累積加算器56の出力
端子に接続された40ビット入力端子と、信号左,シフ
トおよびシフト0を受信する制御入力端子と、掛算また
はMAC演算の場合は「被累積積(ACCUMULATED PRODUC
T )」と標識のついたデータ要素を提供するか、あるい
はシフト演算中は「シフト結果(SHIFT RESULT)」と標
識のついた第2シフト結果を提供する40ビット出力端
子とを有する。レジスタ58は、出力シフタ57の出力
端子に接続された入力端子と、累積加算器56の第2入
力端子に接続された出力端子とを有する。図3では、図
2のバス32に対するその他の接続部を省いてある。本
発明によるシフト演算中は、累積加算器56の出力のビ
ット31〜16が右シフトの結果を格納し、ビット15
〜0が左シフトの結果を格納する。出力シフタ57は、
さらに、固定15ビットの左シフトを実行して、シフト
結果を通常の位置、すなわちレジスタ58のビット3
1:16に整合する。しかし、他の実施例においては、
出力シフタ57を省いてもよい。
【0021】ALU50は、アレイ掛算器55を用いて
完全にプログラミング可能な左および右のシフト演算を
実行する。これらのシフト演算は、掛算と同じ速度で実
行されるので、バレル・シフタとほぼ同じ速度で実行さ
れる。しかし、アレイ掛算器55は、掛算命令を実行す
るためにすでに存在するので、ALU50には専用バレ
ル・シフタの必要がない。そのため、データ・プロセッ
サ40はバレル・シフタをもつ既知のデータ・プロセッ
サよりも小さい回路面積しか必要としない。あるいは、
逆に、データ・プロセッサ40は、高速シフト回路構成
をもたない他のデータ・プロセッサよりも高速でシフト
演算を実行する。
【0022】図4は、図3のリマッピング回路54をブ
ロック図に示す。リマッピング回路54には、一般に4
ビットの排他的OR(排他的論理和)ブロック60と、
4対16デコーダ61と、3対1マルチプレクサ62
と、ゼロ検出回路63とが含まれる。排他的ORブロッ
ク60は、図3の乗数レジスタ52の出力の4個の最下
位ビット位置に対応する4個の排他的ORゲートを有す
る。シフト演算の場合は、これらの4個の最下位ビット
位置がシフト演算のシフト回数を形成する。4個の排他
的ORゲートのそれぞれは、これらの4個の最下位ビッ
トのうちの対応する1つのビットを乗数レジスタ52か
ら受信する第1入力と、制御信号右を受信する第2入力
と、出力端子とを有する。排他的ORの機能は、信号右
の値に基づく制御反転と等しい。右が高論理で能動化さ
れると(右シフト)、4ビットの排他的ORブロック6
0が乗数ビットを反転する。信号右が低論理で非能動化
されると(左シフト)、4ビットの排他的ORブロック
60は、シフト回数ビットを反転させずに伝える。
【0023】デコーダ61は、4ビットの被修正シフト
回数(CORRECTED SHIFT COUNT )を解読して16ビット
の「被解読信号(DECODED SIGNAL)」とする。被解読信
号は、被修正シフト回数の値に対応する二進数1である
1ビット位置しかもたない。その他のすべてのビットは
二進数0である。マルチプレクサ62は、16ビットの
被解読信号を受信する第1入力と、1ビット位置だけ右
にシフトされた被解読信号を受信する第2入力と、レジ
スタ52の出力に結合された第3入力と、制御信号右,
左,迂回を受信する制御入力と、16ビットの「リマッ
プ済み信号(REMAPPED SIGNAL )」を提供する出力とを
有する。信号右,左,迂回は、それぞれマルチプレクサ
62の第1,第2または第3入力を選択する。16ビッ
トの数量を1ビットだけ右にシフトするということは、
15個の最上位ビットを隣接する下位ビット位置にずら
して、符号ビットを最上位ビット位置にコピーすること
を意味する。このようにして、図3のALU50は演算
シフト命令を支援する。他の実施例においては、本発明
によるALUで、空になったビット位置に右シフトのゼ
ロを埋めることにより論理シフトに対応することもでき
る。算術左シフトの場合も、論理左シフトの場合も、空
になったビット位置はゼロで埋められることに留意され
たい。ゼロ検出回路63は、信号シフトに応答して動作
し、4ビットのシフト回数内のすべてのゼロを検出し
て、それに応答して信号シフト0を能動化する。
【0024】図2の命令ラッチ・デコーダ41は、シフ
ト命令に応答して低論理で信号迂回を非能動化させ、そ
の他の場合には信号迂回を高論理で能動化する。命令ラ
ッチ・デコーダ41は、右シフト命令に応答して信号右
を高論理で能動化し、その他の場合には信号右を低論理
で非能動状態のままにする。命令ラッチ・デコーダ41
は、左シフト命令に応答して信号左を高論理で能動化
し、その他の場合には信号左を低論理で非能動状態のま
まにする。
【0025】リマッピング回路54を用いて入力シフト
回数をリマップすることにより、ALU50はバレル・
シフタなどの専用シフト回路を用いずに左シフトにも右
シフトにも掛算器55を用いることができるようにす
る。このように、ALU50は回路面積をほとんど追加
せずに、必要なすべてのシフトを実行する。
【0026】右シフトおよび左シフトに関するリマッピ
ング回路54の動作を、それぞれ表1と2に説明する。
ただし$符号は、十六進数の数を表す。
【0027】
【表1】 右シフト回数 XOR60出力 デコーダ61出力 MUX62出力 0 15 $8000 $8000 1 14 $4000 $4000 2 13 $2000 $2000 3 12 $1000 $1000 4 11 $0800 $0800 5 10 $0400 $0400 6 9 $0200 $0200 7 8 $0100 $0100 8 7 $0080 $0080 9 6 $0040 $0040 10 5 $0020 $0020 11 4 $0010 $0010 12 3 $0008 $0008 13 2 $0004 $0004 14 1 $0002 $0002 15 0 $0001 $0001
【0028】
【表2】 左シフト回数 XOR60出力 デコーダ61出力 MUX62出力 0 0 $0001 $0000 1 1 $0002 $0001 2 2 $0004 $0002 3 3 $0008 $0004 4 4 $0010 $0008 5 5 $0020 $0010 6 6 $0040 $0020 7 7 $0080 $0040 8 8 $0100 $0080 9 9 $0200 $0100 10 10 $0400 $0200 11 11 $0800 $0400 12 12 $1000 $0800 13 13 $2000 $1000 14 14 $4000 $2000 15 15 $8000 $4000 左および右シフトに関する数値の例は、リマッピング回
路54の動作を理解するために有用である。図3,4を
参照して、$8421のシフト・オペランド上で2の右
シフト(シフト回数=2)を行う場合を考える。正しい
シフト結果は、$E108である。レジスタ51は、そ
の出力において$8421をシフト・オペランドとして
掛算器55の被乗数入力に送る。レジスタ52は、レジ
スタ52の出力の4個のLSBについて符号化されたシ
フト回数2を二進数0010としてリマッピング回路5
4の入力に送る。これは右シフトであるので、信号右が
能動になり、信号左と迂回は非能動である。4ビット排
他的OR回路60が各ビットを反転させ、被修正シフト
回数13または二進数1101をデコーダ61の入力に
送る。次にデコーダ61が、被解読信号として二進数0
010000000000000($2000)の値を
提供する。信号右の能動化に応答して、マルチプレクサ
62がその第2入力を選択し、$4000の値をリマッ
プ済み信号として掛算器55の乗数入力に送る。掛算器
55は、$8421に$4000を掛けて、$E108
0000の32ビット出力を提供し、これは累積加算器
56で$FFE1080000の40ビット値になる。
出力シフタ57は、信号シフトが能動であり信号シフト
0と左が非能動であるのに応答して、変更しないで入力
を出力に伝える。このようにして、$E108の値はレ
ジスタ58のビット31:16に整合され、これが予想
されるシフト結果となる。
【0029】次に、$8421のシフト・オペランドに
関する2の左シフト(シフト回数=2)の場合を考え
る。正しいシフト結果は、$1084である。レジスタ
51は、その出力にシフト・オペランドとして$842
1を掛算器55の被乗数入力に送る。レジスタ52は、
レジスタ52の出力の4個のLSBについて符号化され
たシフト回数2を二進数0010としてリマッピング回
路54の入力に送る。これは左シフトであるので、信号
左が能動になり、信号右と迂回は非能動である。4ビッ
ト排他的OR回路60が各ビットを改変せずに伝えて、
被修正シフト回数2または二進数0010をデコーダ6
1の入力に送る。次にデコーダ61が、被解読信号とし
て二進数0000000000000100($000
4)の値を提供する。信号左の能動化に応答して、マル
チプレクサ62がその第2入力を選択し、$0002の
値をリマップ済み信号として掛算器55の乗数入力に送
る。掛算器55は、$8421に$0002を掛けて、
$00021084の32ビット出力を提供し、これは
累積加算器56で$0000021084の40ビット
値になる。出力シフタ57は、信号シフトと左が能動で
あり信号シフト0が非能動であるのに応答して、この値
を15ビット左にずらす。このようにして、$1084
の値は、レジスタ58のビット31:16に整合され、
これが予想されるシフト結果となる。
【0030】最後に、$8421のシフト・オペランド
に関して0の左シフト(シフト回数=0)の場合を考え
る。正しいシフト結果は、$8421である。レジスタ
51は、その出力にシフト・オペランドとして$842
1を掛算器55の被乗数入力に送る。レジスタ52は、
レジスタ52の出力の4個のLSBについて符号化され
たシフト回数0を二進数0000としてリマッピング回
路54の入力に送る。これは左シフトであるので、信号
左が能動になり、信号右と迂回は非能動である。4ビッ
ト排他的OR回路60が各ビットを改変せずに伝えて、
被修正シフト回数値0または二進数0000をデコーダ
61の入力に送る。次にデコーダ61が、被解読信号と
して二進数0000000000000001($00
01)の値を提供する。信号左の能動化に応答して、マ
ルチプレクサ62がその第2入力を選択し、$0000
の値をリマップ済み信号として掛算器55の乗数入力に
送る。掛算器55は、信号シフト0に応答して$842
1の値を出力に伝え、$FFFF0842の値を提供
し、これが累積加算器56で$FFFFFF0842の
40ビット値になる。出力シフタ57は、信号シフト0
が能動であるのに応答して、この値を1ビット左にずら
す。このようにして、$8421の値は、レジスタ58
のビット31:16に整合され、これが予想されるシフ
ト結果となる。図5は、本発明の第2実施例によるAL
U150のブロック図である。ALU150は、入力デ
ータを受信する2個の入力レジスタ151,152を有
する。入力レジスタ151は、掛算演算中は「被乗数」
と呼ばれるデータ要素を受信し、シフト演算中は「シフ
ト・オペランド」と呼ばれるデータ要素を受信する。入
力レジスタ152は、掛算演算中は「乗数」と呼ばれる
データ要素を受信し、シフト演算中は「シフト回数」と
呼ばれるデータ要素を受信する。図示される実施例にお
いては、ALU150は16ビットのデータ語で動作す
るので、レジスタ151,152はそれぞれ16ビット
のレジスタである。掛算器155は、レジスタ151の
出力に接続された第1(被乗数)入力と、レジスタ15
2の出力に接続された第2(乗数)入力と、32ビット
の積を提供する出力とを有する。
【0031】掛算器155は、16x16アレイ掛算器
である。特に、掛算器155は改良形ブースの掛算器
で、桁上げ/セーブ加算器ツリーを通じて部分積を総計
する。しかし、ウォレス・ツリーを通じて部分積を総計
する掛算器など、他の種類のアレイ掛算器も可能であ
る。重要なことは、掛算器155が相対的に高速である
ことである。図示される例では、掛算器155は、図2
のデータ・プロセッサ40の1クロック・サイクル内
で、第1入力と第2入力の積を提供する。たとえば、デ
ータ・プロセッサ40が60メガヘルツ(MHz)クロ
ックを用いるとすると、掛算器155は16ナノ秒(n
s)以内に積を出す。掛算器155は、レジスタ151
の出力端子に結合された16ビット被乗数入力端子と、
レジスタ152の出力端子に結合された16ビットの乗
数入力端子と、乗数および被乗数入力の積を提供する3
2ビットの出力端子とを有する。乗数入力と被乗数入力
との差異は、乗数入力端子が改良形ブースの再符号化を
行うオペランドを受信することである。
【0032】掛算器155は、一般に、シフト・デコー
ダ160,改良形ブースの再符号化装置161,マルチ
プレクサ(MUX)162および掛算器アレイ163を
有する。シフト・デコーダ160は、レジスタ152の
出力の4個の最下位ビット(LSB:least significan
t bit )を受信する入力と、「シフト」と標識のついた
制御信号を受信する第1制御入力と、「左」と標識のつ
いた制御信号を受信する第2制御入力と、「右」と標識
のついた制御信号を受信する第3制御入力と、16ビッ
ト出力とを有する。信号シフトが能動のときはシフト演
算が実行されることを示す。信号左が能動のときは、実
行されるシフトは左シフトであることを示す。信号右が
能動のときは、実行されるシフトは右シフトであること
を示す。ある実施例においては、信号左,右は1つの信
号「左/反転右」に合成されることもある。この信号
は、高論理で能動となり、左シフトを示し、低論理で非
能動となって右シフトを示す。
【0033】信号シフトが能動になるとそれに応答し
て、シフト・デコーダ160は2回の平進(translatio
n )を実行する。まず、シフト・デコーダ160は、レ
ジスタ152内に格納されるシフト回数の4個のLSB
を16ビットのデマルチプレクス済みの値にデマルチプ
レクスする。16ビットのデマルチプレクス済みの値に
は、二進数1で表されるただ1つの能動ビットと、二進
数0で表される15個の非能動ビットが含まれる。能動
ビットは、シフト回数とシフト方向の両方に対応するビ
ット位置にある。これについては、下記にさらに詳しく
説明する。
【0034】第2に、シフト・デコーダ160は、3個
のデマルチプレクス済みのビットの重複するグループを
改良形ブースの再符号化を示す被再符号化信号に再符号
化する。シフト・デコーダ160は、デマルチプレクス
済みの値には1つの能動ビットしか含まれない性質を利
用して、通常の改良形ブースの再符号化のサブセットで
ある再符号化を行う。図示される実施例においては、A
LU150は16ビットのデータ語で動作する。そのた
め0ビットと15ビットとの間のシフトが許される。次
にシフト・デコーダ160は、3ビットからなる8個の
重複するグループのそれぞれを再符号化する。5種類の
改良形ブースの再符号化状態(0,+1,−1,+2,
−2)を表す信号を設ける代わりに、シフト・デコーダ
160は、単に3種類の状態0,+1,+2を表す信号
を設ける。この3つの状態が2つの信号に符号化され、
R1(i),R2(i)と記される。ただし文字iは、
重複するグループの数を示す。16ビット掛算の場合
は、掛算器アレイ163内には8個の重複グループ(i
=1〜8)に対応する8行があり、そのためシフト・デ
コーダ160は合計で16個の信号を提供する。可能な
シフト回数に対応する出力を、以下の表3に示す:
【0035】
【表3】 シフト回数 MULTI値 能動信号 MULTI値 能動信号 右シフト 右シフト 左シフト 左シフト $0 $0000 R2(8) $0001 R1(1) $1 $4000 R1(8) $0002 R2(1) $2 $2000 R2(7) $0004 R1(2) $3 $1000 R1(7) $0008 R2(2) $4 $0800 R2(6) $0010 R1(3) $5 $0400 R1(6) $0020 R2(3) $6 $0200 R2(5) $0040 R1(4) $7 $0100 R1(5) $0080 R2(4) $8 $0080 R2(4) $0100 R1(5) $9 $0040 R1(4) $0200 R2(5) $A $0020 R2(3) $0400 R1(6) $B $0010 R1(3) $0800 R2(6) $C $0008 R2(2) $1000 R1(7) $D $0004 R1(2) $2000 R2(7) $E $0002 R2(1) $4000 R1(8) $F $0001 R1(1) $0000 R2(8) シフト・デコーダ160と平行して、改良形ブースの再
符号化装置161は、レジスタ152に格納されている
オペランドの3つの信号の重複するグループについて標
準的な改良形ブースの再符号化(すなわち0,+1,−
1,+2,−2の状態を示す信号)を行う。レジスタ1
52に格納されているオペランドは16ビットであるの
で、シフト・デコーダ160と改良形ブースの再符号化
装置161は、第1入力を(二進数「0」,ビット0お
よびビット1に対応する)低論理レベルに強制する第1
グループを再符号化する。次のグループがビット1,
2,3を再符号化し、ビット13,14,15を再符号
化する最後のグループまで同様のことが行われる。
【0036】次に、マルチプレクサ(MUX)162
は、演算の種類に応じて信号のこれらのグループの1つ
を、「ディスエーブル(DISABLE )」と標識がついた制
御信号を用いて選択する。掛算モードの間は、信号ディ
スエーブルは低論理で非能動であり、MUX162は改
良形ブースの再符号化装置161の出力を選択して、掛
算器アレイ163に送る。シフト・モードの間は、信号
ディスエーブルは高論理で能動になり、シフト・デコー
ダ160の出力を選択して掛算器アレイ163に送る。
信号ディスエーブルは、改良形ブースの再符号化装置1
61を動作不能にしてさらに電力を節約するその他の条
件も示す。
【0037】掛算器アレイ163は、レジスタ151の
出力に接続された乗数入力と、MUX162の出力に接
続された被再符号化信号入力と、32ビット出力とを有
する。掛算器アレイ163は、MUX162によって提
供された被再符号化信号を用いて被乗数をマルチプレク
スすることで導かれた8行の部分和をもつ。次にこの部
分和が高速の桁上げセーブ加算器で総計されて、32ビ
ットの積となる。
【0038】図2のデータ・プロセッサ40は、デジタ
ル信号プロセッサ(DSP)である。有限衝撃応答(F
IR)フィルタ,無限衝撃応答(IIR)フィルタ,高
速フーリエ変換(FFT)などの信号処理アルゴリズム
においては、ハードウェアを用いて掛算および累積(M
AC)を実行する機能をもつことが有用である。この目
的のために、ALU150には、このような命令の積の
総計を効率的に累積する累積装置156が含まれる。累
積装置156は、掛算器155の出力端子に接続された
32ビット入力端子と、第2の40ビット入力端子と、
40ビットの被累積出力を提供する出力端子とを有す
る。32ビットで表すことのできない累積に対応するた
めに、累積装置156は、保護ビットとして8個の最上
位ビット(MSB:most siginificant bit )を有す
る。
【0039】累積装置156の40ビット出力は、出力
シフタ157に送られ、このシフタが40ビット出力を
レジスタ158に提供する。出力シフタ157は、累積
装置156の出力に接続された40ビット入力と、制御
信号シフトを受信する第1制御入力と、制御信号左を受
信する第2制御入力と、40ビット出力とを有する。シ
フト演算中は、レジスタ158のビット31:16が最
終のシフト結果を保持する。出力シフタ157には、制
御信号シフトおよび左に応答して動作する15回シフト
機能を持ち、この結果をビット31:16に整合する。
出力シフタ157は、ビット15:0をゼロにセットす
る。右シフトについては、累積装置156の40ビット
出力が直接レジスタ158内に書き込まれ、符号が自動
的に延長される。ビット31における結果の最上位ビッ
ト(MSB)は、出力シフタ157の上位8ビットの位
置に符号延長される。
【0040】レジスタ158は、「D2」と標識のつい
たビット40〜32を含む上位の8ビット・フィールド
と、「D1」と標識のついたビット31〜16を含むよ
り上位の16ビット・フィールドと、「D0」と標識の
ついたビット15〜0を含むより下位の16ビット・フ
ィールドの3つのフィールドを有する。D1フィールド
には、左シフトの間も右シフトの間も16ビットのシフ
ト結果が含まれる。D2:D1:D0は、掛算演算中の
「被累積積」を表す。レジスタ158は、出力シフタ1
57の出力端子に接続された40ビット入力と、累積装
置156の第2の40ビット入力端子に接続された40
ビット出力端子とを有する。レジスタ158には、さら
に、レジスタ151,152の入力に対する接続部も含
まれるが、図3では省略されている。
【0041】ALU150は、高速掛算器155内の既
存の回路構成を用いて0ないし15のシフト値に関して
左シフトと右シフトの両方を実行する。このため、AL
U150は高速バレル・シフタなどの専用シフタを必要
としない。ALU150には別の利点もある。第1に、
シフト・デコーダ160が改良形ブースの再符号化装置
161と平行にその機能を果たすために、ALU150
はシフト命令を迅速に実行する。この平行動作により、
充分に遅延が小さくなり、シフト演算をデータ・プロセ
ッサ40の1クロック期間以内、たとえば60MHzク
ロック信号については16ns以内に実行することがで
きる。第2に、シフト・デコーダ160が従来の改良形
ブースの再符号化のサブセットである被再符号化信号を
提供するので、ALU150は少ない電力で動作する。
シフト・デコーダ160は、1つの被再符号化信号しか
能動化しないので、能動化される掛算器アレイ163の
行が少なくなり、電力の節約につながる。また、信号デ
ィスエーブルが改良形ブースの再符号化装置161を非
能動化し、シフト・モード中の電力をさらに節約する。
【0042】一般に、シフト・デコーダ160には、全
体として2回の平進を行う合成論理が含まれる。シフト
・デコーダ160は、これら2回の平進を1段階の解読
と平行に実行するので、この2回の平進を区別すること
はできない。この2回の平進を合成することによって、
シフト・デコーダ160は、伝播遅延とこのような平進
を別々に実行する回路下のゲート数とを小さくすること
ができる。
【0043】しかし、シフト・デコーダ160の機能の
理解を助けるために、この2回の平進が別々に実行され
るかのように分析することも有用である。第1の平進は
4ビットの被符号化シフト回数をデマルチプレクス(リ
マップ)済みの値に解読することである。これを以下の
表4に示す:
【0044】
【表4】 シフト回数 デマルチプレクス デマルチプレクス 済みの値右シフト 済みの値左シフト 0 $0000 $0001 1 $4000 $0002 2 $2000 $0004 3 $1000 $0008 4 $0800 $0010 5 $0400 $0020 6 $0200 $0040 7 $0100 $0080 8 $0080 $0100 9 $0040 $0200 10 $0020 $0400 11 $0010 $0800 12 $0008 $1000 13 $0004 $2000 14 $0002 $4000 15 $0001 $0000 第2の平進は、デマルチプレクス(リマップ)済みの値
を用いて、3ビットの重複グループについて改良形ブー
スの再符号化のサブセットを実行する。これを以下の表
5に示す:
【0045】
【表5】 ビットの配列 改良形ブース値 シフト・デコーダ160の値 000 0 0 001 1 0 010 1 1 100 −2 2 この平進は、従来の改良形ブースの再符号化とは異なっ
ている。シフト演算については、通常の掛算とは異なっ
て、解読されたシフト回数には「1」が1つしか含まれ
ない。これはシフトされる量を示す。この特性を利用し
て、シフト・デコーダ160は、配列001と100と
を従来の改良形ブースの再符号化とは異なる方法で再符
号化する。異なる方法を用いる理由は、3ビットの配列
の中でMSB位置に「1」があり、その後に2個の
「0」が続く場合は、既知の改良形ブースの再符号化装
置ではその前に「1」がいくつあるか判らない。そのた
め、既知の改良形ブースの再符号化装置は001,01
1配列に関して1と2の値をそれぞれ割り当てる。しか
し、シフト・デコーダ160においては、「1」の数列
の長さが判っており、これは1であるので、配列のLS
B位置に(前のグループに重複して)「1」があり、2
の値としてその前の行により解読されているので無視さ
れるために、2個の被再符号化信号を能動化する必要が
ない。デマルチプレクサ180と再符号化装置181の
合成論理機能は、従来の論理単純化法を用いて合成され
た回路構成内で実行することが好ましい。
【0046】図6は、図5の改良形ブースの再符号化装
置161の部分190と、図5のMUX162の部分1
91とを、一部論理図に一部概略図に示す。部分19
0,191を実現するために用いられる追加の信号とし
ては、「CAR」と標識のついた桁上げ入力信号と、
「CO」と標識のついた桁上げ出力信号と、掛算の結果
が負の値である(すなわち乗数と被乗数の片方だけが負
である)ことを示す「NEG」と標識のついた制御入力
信号と、その補数である「NEGZ」と標識のついた信
号がある。
【0047】部分190は従来の改良形ブースの再符号
化を実行することにも留意されたい。しかし、本発明に
よる多重ビット・シフタは他の再符号化法を用いても構
築できることを理解されたい。部分191は、掛算モー
ドでは部分190からの被再符号化信号を、シフト・モ
ードではシフト・デコーダ160の出力を提供する。こ
れは信号ディスエーブルが掛算演算を示すかシフト演算
を示すかによって決まる。図6に図示される回路構成
は、被再符号化信号の8つのグループのそれぞれについ
て反復される。図6は、掛算器155のこの部分の回路
を実現する可能性のある回路の1つに過ぎず、異なる能
動レベル制御信号を用いるもの、異なる再符号化法を用
いるもの、異なる種類のトランジスタを用いるものなど
他の回路も可能であることに留意されたい。
【0048】本発明は、好適な実施例に関して説明され
てきたが、本発明は多くの方法で改良することができ、
上記に特に設定および説明されたもの以外に多くの実施
例が可能であることは当業者には明かであろう。たとえ
ば、多重ビット・シフト装置は、複合命令セット・コン
ピュータ(CISC:complex instruction set comput
er)マイクロプロセッサ,削減命令セット・コンピュー
タ(RISC:reduced instruction set computer)マ
イクロプロセッサ,DSP,マイクロコントローラ,そ
の他の任意の種類のデータ・プロセッサなどのALUに
入れることができる。またシフト装置は集積回路データ
・プロセッサの一部としても、分離して実現してもよ
い。シフト結果は掛算器の出力から得ることも、あるい
は出力シフタ内でシフトさせて左シフトについても右シ
フトについてもその結果を整合することもできる。さら
に、シフト回数は第2オペランドのどこかのビットで符
号化しても、すでに解読された入力レジスタにより受信
してもよく、あるいは命令オペランド・コード(オプコ
ード)のフィールド内の4ビットの直接値であってリマ
ッピング回路の入力に直接送ってもよい。シフト回数
は、被乗数レジスタに格納することもできる。この場
合、リマッピング回路は乗数レジスタではなく被乗数レ
ジスタに接続されることになる。従って、添付の請求項
は本発明の精神と範囲に入るすべての修正を包含するも
のである。
【図面の簡単な説明】
【図1】従来の技術による演算論理ユニット(ALU)
のブロック図である。
【図2】本発明によるデータ・プロセッサを有するデー
タ処理システムを示す。
【図3】本発明の1つの実施例によるALUのブロック
図である。
【図4】図3のリマッピング回路をブロック図に示す。
【図5】本発明の第2実施例によるALUのブロック図
である。
【図6】図5の改良形ブースの再符号化装置とMUXを
一部論理図に一部回路図に示す。
【符号の説明】
30 データ処理システム 31 メモリ 32 アドレス,データおよび制御バス 40 データ・プロセッサ 41 命令ラッチ・デコーダ 42 制御レジスタ 43 バス・コントローラ 45 入力データ経路 46 双方向接続 47 接続部 50 ALUおよびレジスタ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 シフトおよび掛算演算を実行する装置
    (50)であって:第1オペランドを受信する第1レジ
    スタ(51);第2オペランドを受信する第2レジスタ
    (52);前記第2レジスタ(52)に結合された入力
    と、シフト方向信号を受信する第1制御入力と、モード
    信号を受信する第2制御入力と、出力とを有するリマッ
    ピング回路(54)であって、前記モード信号が掛算演
    算またはシフト演算を示すと、それぞれ、それに応答し
    てその出力に前記第2オペランドまたはリマップ済み信
    号のいずれかを選択的に提供するリマッピング回路(5
    4);前記シフト方向信号の決定に従って前記第2オペ
    ランドから解読される前記リマップ済み信号;および前
    記第1レジスタ(51)に結合された第1入力と、前記
    リマッピング回路(54)の前記出力に結合された第2
    入力と、前記第1および第2入力の積を提供する出力と
    を有する掛算器(55)であって、前記積が、前記掛算
    演算中の前記第1および第2オペランドの積、または、
    前記シフト演算中の前記第1オペランドと前記リマップ
    済み信号との積に等しい第1シフト結果のいずれか一方
    である掛算器(55);によって構成されることを特徴
    とする装置(50)。
  2. 【請求項2】 多重ビット・シフト装置(50)を有す
    るデータ・プロセッサ(40)であって:命令を取り出
    すアドレス(46)およびデータ(45)経路;前記デ
    ータ経路(45)に結合され、前記データ経路(45)
    を介してシフトおよび掛算命令を含む複数の命令を受信
    し、前記複数の命令に応答して複数の制御信号を提供す
    る命令デコーダ(41)であって、シフト命令に応答し
    てシフト演算を実行することか、または掛算命令に応答
    して掛算演算を実行することのいずれかを示し、前記シ
    フト命令に応答してシフト方向信号を提供する前記命令
    デコーダ(41);および前記命令デコーダ(41)に
    結合された演算論理ユニット(50)であって:第1オ
    ペランドを受信する第1レジスタ(51);第2オペラ
    ンドを受信する第2レジスタ(52);前記第2レジス
    タ(52)に結合された入力と、シフト方向信号を受信
    する第1制御入力と、前記モード信号を受信する第2制
    御入力と、出力とを有するリマッピング回路(54)で
    あって、前記モード信号が前記掛算命令または前記シフ
    ト命令を示すと、それぞれ、それに応答してその出力に
    前記第2オペランドまたはリマップ済み信号のいずれか
    を選択的に提供するリマッピング回路(54);前記シ
    フト方向信号の決定に従って前記第2オペランドから解
    読される前記リマップ済み信号;および前記第1レジス
    タ(51)に結合された第1入力と、前記リマッピング
    回路(54)の前記出力に結合された第2入力と、前記
    第1および第2入力の積を提供する出力とを有する掛算
    器(55)であって、前記積が、前記掛算演算中の前記
    第1および第2オペランドの積、または、前記シフト演
    算中の第1シフト結果のいずれか一方である掛算器(5
    5);によって構成される演算論理ユニット(50);
    によって構成されることを特徴とするデータ・プロセッ
    サ(40)。
  3. 【請求項3】 シフト・オペランドを第1入力として受
    信する段階;シフト回数を第2入力として受信する段
    階;シフト方向信号の決定により前記シフト回数をリマ
    ップしてリマップ済み信号を提供し、前記リマップ済み
    信号は前記シフト方向信号の決定により前記シフト回数
    から解読される段階;前記シフト・オペランドを掛算器
    回路(55)の第1入力に提供する段階;前記リマップ
    済み信号を前記掛算器回路(55)の第2入力に提供す
    る段階;および前記掛算器回路(55)の出力をシフト
    結果として提供する段階;によって構成されることを特
    徴とする多重ビット・シフト方法。
  4. 【請求項4】 シフト・オペランドを受信する段階;シ
    フト回数nを受信する段階;シフト方向信号を受信する
    段階;前記シフト方向信号が第1方向を示す場合に、前
    記シフト回数nを2k-n に等しい第1リマップ済み信号
    にリマップする段階で、このときkは前記シフト・オペ
    ランドのビット数から1を減じた値である段階;前記シ
    フト方向信号が第2方向を示す場合に、前記シフト回数
    nをnがゼロでない場合には2n-1 に等しく、nがゼロ
    の場合にはゼロに等しい第2リマップ済み信号にリマッ
    プする段階;前記シフト・オペランドを掛算器回路(5
    5)の第1入力に提供する段階;前記シフト方向信号が
    前記第1方向を示す場合には前記第1リマップ済み信号
    を、前記シフト方向信号が前記第2方向を示す場合には
    前記第2リマップ済み信号を、前記掛算器回路(55)
    の第2入力に提供する段階;および前記掛算器回路(5
    5)の出力を第1シフト結果として提供し、それによっ
    て、専用シフト回路構成を必要とせずに前記掛算器回路
    (55)を通じて遅延時間より多少長い時間量内に前記
    シフト・オペランドのシフトが行われる段階;によって
    構成されることを特徴とする多重ビット・シフト方法。
JP14835895A 1994-05-26 1995-05-24 多重ビット・シフト装置,それを用いるデータ・プロセッサおよびその方法 Expired - Fee Related JP3756967B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/249,505 US5442576A (en) 1994-05-26 1994-05-26 Multibit shifting apparatus, data processor using same, and method therefor
US249505 1994-05-26

Publications (2)

Publication Number Publication Date
JPH07325704A true JPH07325704A (ja) 1995-12-12
JP3756967B2 JP3756967B2 (ja) 2006-03-22

Family

ID=22943742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14835895A Expired - Fee Related JP3756967B2 (ja) 1994-05-26 1995-05-24 多重ビット・シフト装置,それを用いるデータ・プロセッサおよびその方法

Country Status (5)

Country Link
US (1) US5442576A (ja)
EP (1) EP0685787A1 (ja)
JP (1) JP3756967B2 (ja)
KR (1) KR100365059B1 (ja)
CN (1) CN1145877C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266239A (ja) * 2001-02-21 2009-11-12 Mips Technologies Inc 拡張精度アキュムレータ

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US5751614A (en) * 1994-03-08 1998-05-12 Exponential Technology, Inc. Sign-extension merge/mask, rotate/shift, and boolean operations executed in a vectored mux on an ALU
NL9400607A (nl) * 1994-04-15 1995-11-01 Arcobel Graphics Bv Dataverwerkingscircuit, vermenigvuldigingseenheid met pijplijn, ALU en schuifregistereenheid ten gebruike bij een dataverwerkingscircuit.
US5687102A (en) * 1995-05-26 1997-11-11 National Semiconductor Corp. Double precision (64 bit) shift operations using a 32 bit data path
US5978822A (en) * 1995-12-29 1999-11-02 Atmel Corporation Circuit for rotating, left shifting, or right shifting bits
US5844827A (en) * 1996-10-17 1998-12-01 Samsung Electronics Co., Ltd. Arithmetic shifter that performs multiply/divide by two to the nth power for positive and negative N
US6219779B1 (en) * 1997-06-16 2001-04-17 Matsushita Electric Industrial Co., Ltd. Constant reconstructing processor which supports reductions in code size
US6185670B1 (en) * 1998-10-12 2001-02-06 Intel Corporation System for reducing number of opcodes required in a processor using an instruction format including operation class code and operation selector code fields
US6345286B1 (en) * 1998-10-30 2002-02-05 International Business Machines Corporation 6-to-3 carry-save adder
US6336113B1 (en) * 1998-12-30 2002-01-01 Kawasaki Steel Corporation Data management method and data management apparatus
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
US6529924B1 (en) * 2000-03-27 2003-03-04 International Business Machines Corporation Method and apparatus for generating shift amount signals for an alignment shifter
US7315879B2 (en) * 2001-02-16 2008-01-01 Texas Instruments Incorporated Multiply-accumulate modules and parallel multipliers and methods of designing multiply-accumulate modules and parallel multipliers
US6877022B1 (en) * 2001-02-16 2005-04-05 Texas Instruments Incorporated Booth encoding circuit for a multiplier of a multiply-accumulate module
US7296049B2 (en) * 2002-03-22 2007-11-13 Intel Corporation Fast multiplication circuits
US7441104B2 (en) * 2002-03-30 2008-10-21 Hewlett-Packard Development Company, L.P. Parallel subword instructions with distributed results
EP1387257B1 (en) * 2002-07-31 2017-08-23 Texas Instruments Inc. System to dispatch multiple instructions to available hardware resources
JP2004258141A (ja) * 2003-02-24 2004-09-16 Fujitsu Ltd モンゴメリ乗算剰余の多倍長演算のための演算装置
US7343388B1 (en) * 2003-03-05 2008-03-11 Altera Corporation Implementing crossbars and barrel shifters using multiplier-accumulator blocks
US7277990B2 (en) 2004-09-30 2007-10-02 Sanjeev Jain Method and apparatus providing efficient queue descriptor memory access
US7418543B2 (en) * 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7555630B2 (en) 2004-12-21 2009-06-30 Intel Corporation Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US7797364B2 (en) * 2006-06-27 2010-09-14 International Business Machines Corporation Booth decoder apparatus and method
US7797365B2 (en) * 2006-06-27 2010-09-14 International Business Machines Corporation Design structure for a booth decoder
US7877430B2 (en) * 2007-03-26 2011-01-25 Analog Devices, Inc. Method and apparatus for accelerating processing of adaptive finite impulse response filtering
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US9612795B2 (en) 2013-03-14 2017-04-04 Semiconductor Energy Laboratory Co., Ltd. Data processing device, data processing method, and computer program
CN106197295B (zh) * 2016-07-20 2017-10-24 华中科技大学 一种激光测厚仪
US10409592B2 (en) * 2017-04-24 2019-09-10 Arm Limited Multiply-and-accumulate-products instructions
US10409604B2 (en) 2017-04-24 2019-09-10 Arm Limited Apparatus and method for performing multiply-and-accumulate-products operations
US20190196820A1 (en) * 2017-12-21 2019-06-27 Intel Corporation Apparatus and method for right shifting packed quadwords and extracting packed doublewords
CN108255463B (zh) * 2017-12-28 2020-12-22 深圳市紫光同创电子有限公司 一种数字逻辑运算方法、电路和fpga芯片
KR102182299B1 (ko) * 2019-07-24 2020-11-24 에스케이텔레콤 주식회사 시프트 연산 장치 및 그의 동작 방법
CN112422979B (zh) * 2019-08-23 2022-12-13 瑞昱半导体股份有限公司 应用于离散及逆离散正弦余弦变换的运算电路
CN111694544B (zh) * 2020-06-02 2022-03-15 杭州知存智能科技有限公司 多位复用乘加运算装置、神经网络运算系统以及电子设备
US11789701B2 (en) 2020-08-05 2023-10-17 Arm Limited Controlling carry-save adders in multiplication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5668833A (en) * 1979-11-09 1981-06-09 Fujitsu Ltd Shift process system by multiplier
US4396994A (en) * 1980-12-31 1983-08-02 Bell Telephone Laboratories, Incorporated Data shifting and rotating apparatus
US4575812A (en) * 1984-05-31 1986-03-11 Motorola, Inc. X×Y Bit array multiplier/accumulator circuit
JPS6152741A (ja) * 1984-08-22 1986-03-15 Nec Corp シフト機能付乗算回路
JPS6297062A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
JPS62127941A (ja) * 1985-11-29 1987-06-10 Fujitsu Ltd 乗算装置におけるシフト方式
JPH0650462B2 (ja) * 1986-02-18 1994-06-29 日本電気株式会社 シフト数制御回路
US4887232A (en) * 1987-05-15 1989-12-12 Digital Equipment Corporation Apparatus and method for performing a shift operation in a multiplier array circuit
US4884232A (en) * 1987-12-14 1989-11-28 General Dynamics Corp., Pomona Div. Parallel processing circuits for high speed calculation of the dot product of large dimensional vectors
US5099445A (en) * 1989-12-26 1992-03-24 Motorola, Inc. Variable length shifter for performing multiple shift and select functions
US5128890A (en) * 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5309382A (en) * 1992-10-01 1994-05-03 Silicon Graphics, Inc. Binary shifter

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266239A (ja) * 2001-02-21 2009-11-12 Mips Technologies Inc 拡張精度アキュムレータ
JP2013080487A (ja) * 2001-02-21 2013-05-02 Mips Technologies Inc 拡張精度アキュムレータ

Also Published As

Publication number Publication date
US5442576A (en) 1995-08-15
KR100365059B1 (ko) 2003-03-06
KR950033803A (ko) 1995-12-26
JP3756967B2 (ja) 2006-03-22
CN1120696A (zh) 1996-04-17
EP0685787A1 (en) 1995-12-06
CN1145877C (zh) 2004-04-14

Similar Documents

Publication Publication Date Title
JPH07325704A (ja) 多重ビット・シフト装置,それを用いるデータ・プロセッサおよびその方法
US5436860A (en) Combined multiplier/shifter and method therefor
US10515302B2 (en) Neural network unit with mixed data and weight size computation capability
US10474628B2 (en) Processor with variable rate execution unit
US6009451A (en) Method for generating barrel shifter result flags directly from input data
US5311458A (en) CPU with integrated multiply/accumulate unit
US6038583A (en) Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6430677B2 (en) Methods and apparatus for dynamic instruction controlled reconfigurable register file with extended precision
EP1047989B1 (en) Digital signal processor having data alignment buffer for performing unaligned data accesses
EP4066101A1 (en) Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range
EP1124181B1 (en) Data processing apparatus
US6085213A (en) Method and apparatus for simultaneously multiplying two or more independent pairs of operands and summing the products
RU98110876A (ru) Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
US5253195A (en) High speed multiplier
EP0823083A1 (en) System for performing arithmetic operations with single or double precision
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
US7412476B2 (en) Decimal multiplication for superscaler processors
US5961575A (en) Microprocessor having combined shift and rotate circuit
US6263424B1 (en) Execution of data dependent arithmetic instructions in multi-pipeline processors
EP1031073B1 (en) A method and apparatus for multi-function arithmetic
US6393554B1 (en) Method and apparatus for performing vector and scalar multiplication and calculating rounded products
WO1996038780A2 (en) Method for performing signed division
US7191432B2 (en) High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit
US6792442B1 (en) Signal processor and product-sum operating device for use therein with rounding function
Solutions Exercises 4 Processor Design

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040810

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20041109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041115

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050210

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051005

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051011

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051226

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110106

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120106

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130106

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130106

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees