JP3436994B2 - シフト装置 - Google Patents
シフト装置Info
- Publication number
- JP3436994B2 JP3436994B2 JP30072894A JP30072894A JP3436994B2 JP 3436994 B2 JP3436994 B2 JP 3436994B2 JP 30072894 A JP30072894 A JP 30072894A JP 30072894 A JP30072894 A JP 30072894A JP 3436994 B2 JP3436994 B2 JP 3436994B2
- Authority
- JP
- Japan
- Prior art keywords
- shift
- input
- numbers
- digit
- shifting
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Description
て2数の差の値に基づいて他の数のシフト動作を行なう
シフト装置に関し、特に2つの浮動小数点数の加算を行
なう際の桁合せの高速化に関するものである。
いては、浮動小数点による様々な計算が実行される。そ
の中でも最も頻繁に行なわれるものの1つが浮動小数点
数加算である。
化を図る場合に、この浮動小数点数加算を高速化するこ
とが極めて有効である。
2のようなブロック図で示される回路によって実行され
ている。これは、岡本他著「200MFLOPS 10
0MHz 64ビット BiCMOS ベクターパイプ
ラインプロセッサ ULSI」ジャーナルオブソリッド
ステートサーキット26巻ナンバー12、12月号19
91年(F.Okamoto et al.“ 200-MFLOPS 100MHz 64-b
BidCMOS Vector-Pipelined Processor (VPP) ULSI,”Jo
urnal of Solid-State Circuits, Vol. 26, No. 12, De
cember 1991 )の1887頁Fig.2と同じものであ
る。
明するために、まず浮動小数点のデータ構造を図13で
説明する。
号、指数部および仮数部からなり、たとえばIEEEの
規格ではそのデータ構造は、以下のように取決められて
いる。つまり、データが32ビット幅を持つ単精度の場
合は上位から、符号ビットが1ビット、指数部が8ビッ
ト、仮数部が23ビットであり、データが64ビット幅
を持つ倍精度の場合は上位から、符号ビットが1ビッ
ト、指数部が11ビット、仮数部が52ビットという構
造となっている。
E、仮数部をKとすると、値Vは、 V=(−1)S ×(1.K)×2(E-n) …(1) となる。ここでnは、指数部に便宜的に加算されている
バイアス値で、単精度では2進数で1111111、倍
精度では2進法で1111111111である。
る。入力となる浮動小数点数1および2は、式(1)の
ように表現されているため、加算を行なうためにはまず
指数の値を比較してこれに応じて仮数部の桁合せを行な
う必要がある。
101は、浮動小数点数1および2の指数部の減算結果
を用いて桁合せシフト制御信号を発生する。
1および2それぞれの指数部のデータ7および9を入力
し、指数部データ7から指数部データ9を減算し、その
差の絶対値を示す絶対値信号11aと結果の正負に対応
するキャリー出力信号11cを出力する。
それぞれの仮数部のデータ8および10を入力し、キャ
リー出力信号11cの値に応じて、指数部データ7また
は9のうち、値の小さい方に対応する仮数部データ8ま
たは10を、後述の右方向バレルシフタ5に対して出力
し、指数部データ値の大きい方に対応する仮数部データ
を後述の仮数部加算器6に対して出力する。
択された仮数部データ8または10を入力し、前記指数
部データの差の絶対値信号11aの値によってシフト量
が制御される。
の出力と、スワッパ4によって選択された仮数部データ
8または10とを入力し、これのデータに対して加算を
行なう。
場合は、演算対象となる2つのデータの指数部の値を大
きい方に揃えて演算を行なうため、指数部同士の差をと
ってこの差の分だけ指数部が小さい方の仮数部をシフト
する必要がある。
のシフトのための制御信号を得るために指数部の差を絶
対値として得る必要があったわけである。
らに詳しく説明する。指数部データ7、9は、減算器3
に入力され指数部データ7から指数部データ9が減算さ
れる。ここで、指数部データ7の値が指数部データ9の
値より大きいときは、キャリー出力信号11cはHレベ
ルとなり、指数部データ9の値が指数部データ7の値に
等しいか、または大きいときは、キャリー出力信号11
cはLレベルになる。
ベルのときは、減算結果は正の値であり、キャリー出力
信号11cがLレベルのときは、減算結果は負の値であ
る。
結果が負のときは、2の補数演算を行なう回路が存在
し、この回路によりキャリー出力信号11cがLレベル
のときでも、絶対値信号11aが出力される。
を反転し、1を加えることであって演算回路中にあって
は2進数で表現された数の符号を反転させることに相当
する。
絶対値信号11aとして出力される。この絶対値信号1
1aは、仮数部の桁合せのためのシフト量であり、この
値が右方向バレルシフタ5に入力され、桁合せシフトが
実行される。
は、キャリー出力信号11cの値がLレベルのときは、
仮数部データ8が右方向バレルシフタ5に入力され、キ
ャリー出力信号11cの値がHレベルのときは、仮数部
データ10が右方向バレルシフタ5に入力される。
い方の仮数部データ8または10が、右方向バレルシフ
タ5に入力される。右方向バレルシフタ5は、指数部デ
ータの7と9の差の絶対値信号11aが示すシフト量に
基づき、桁合せシフトを行なう。以上の処理によって桁
合せが完了した後、仮数部データが加算器6に入力され
演算が実行される。
器は、以上のように構成を有していたため、次のような
問題点があった。
えおよび右方向バレルシフタ5によるシフトは、いずれ
も指数部減算器3の出力11の値が決まるまで待たなけ
ればならないという点である。
に詳しく説明する。なお、2進数の減算には被減数およ
び1つ上位の桁からの借りから減数を減算する減算回路
を使用する方法と、補数の加算を使用する方法がある。
できる等の理由で、ほとんどの計算機では補数の加算を
使用しているので、後者について述べる。
す概略ブロック図である。簡単のために5ビットのデー
タの加算(すなわち、補数の加算であれば減算を意味す
る。)について説明する。
び加数B(=B4 B3 B2 B1 B0)の各ビットデータ
は、それぞれの桁が対応する全加算器FAi (i=4、
3、2、1、0)に入力される。まず、最下位ビットの
加算では、桁上げ信号(以下キャリー信号と呼ぶ)の初
期値として0が、被加算、加算データとしてデータA 0
およびB0 が入力され、加算結果S0 およびキャリー信
号C1 が出力される。
入力として、加算結果S1およびキャリー信号C2 が出
力される。
が、キャリー信号が最上位ビットまでで伝搬し終るまで
は、演算結果が確定しない。
のために、前記スワッパ4および右方向バレルシフタ5
に対する制御信号の確定も遅延するという問題があっ
た。
リー−ルック−アヘッド回路が提案されている。
今、被加数および加数の2i 桁ビットをAi 、Bi とす
ると、 Ai ・Bi =1 …(2) ならば、2i 桁ビットから桁上がり(キャリー信号)C
i+1 =1が出る。また、 Ai ・/Bi +/Ai ・Bi =1 …(3) (/Ai 、/Bi 等は、それぞれの論理値の否定を表わ
す。)ならば、2i-1 桁ビットの加算による桁上がりC
i =1があるときに限り桁上がりCi+1 =1が生じる。
したがって、下位からの桁上がり信号Ci を上位の桁に
伝搬させるには、式(3)の条件が満足されればよい。
式(2)が満足されても発生し、その両者を区別する必
要はないので、 Ai ・Bi +(Ai ・/Bi +/Ai ・Bi )=Ai +
Bi =1 ならば下位からの桁上がりCi を伝搬させればよい。
成関数Gi およびキャリー伝搬関数Pi を次式で定義す
る。
リー信号Ci+1 は次式で与えられる。
は0とすればよい。
Ci+1 は、 Gk (k=0〜i) …(8) Pk (k=0〜i) …(9) により計算され、Gk (k=0〜i)およびPk (k=
0〜i)は、式(4)、(5)により、2i 桁ビットま
での入力により計算される。
リー−ルック−アヘッド型)加算器のブロック図を図1
5に示す。
A2 A1 A0 )とB(=B3 B2 B 1 B0 )とが加算器
に入力され、それぞれ対応するビットデータごとに、論
理積と論理和を計算することにより、各桁のキャリー生
成関数Gi とキャリー伝搬関数Pi が同時に確定する。
の演算を全く並行に行なうことで、各桁の加算結果が得
られることになる。
数とが入力されて、既に確定されているC0 、P0 、G
0 およびA1 、B1 から加算結果S1 が確定される。し
たがって、下位桁の演算結果を待たずに各桁の加算結果
が確定する。
は高速化されることになる。しかし、いずれにしても指
数部減算器3(補数を生成するための回路を含む。)や
スワッパ4と、それに伴う遅延時間が必要となるばかり
でなく、ハードウェアの増加とそれに伴うスピードの低
下を招く要因となる。
るためになされたもので、その目的とするところは、減
算演算を削減ないしは高速化し、構成を簡素化して高速
に処理できる桁合せシフト装置を得ることである。
で表わされた第1から第4の数に対し、第1の数から第
2の数を引いた差の値に基づき、第3または第4の数の
一方の桁をシフトする機能を備えたシフト装置は、第1
から第4の数を各々記憶・保持する手段と、第3または
第4の数の一方を入力とし、順次シフトされる、直列に
接続された2以上のシフト手段を備え、上記シフト手段
は各々、シフトされる数値が入力される第1の入力端
と、第1および第2の数の対応する各桁のビットデータ
の対が、少なくとも1対入力される第2の入力端と、ビ
ットデータの各々の対において、その差を冗長2進数と
みなした場合に、第2の入力端に入力された少なくとも
1対のビットデータの差で表現され得るシフト量をそれ
ぞれ有し、第2の入力端の入力データによって選択され
る、複数の固定ビット量シフト手段と、上記選択された
固定ビット量シフト手段の1つによる、第1の入力から
の入力数値のシフト結果を出力する出力端とを含む。
載のシフト装置の構成において第1および第2の数は、
n桁の2進数であり、直列に接続されたシフト手段もn
個からなる。そのシフト手段の第i番目のものは、シフ
トする数値が入力される第1の入力端と、第1の数およ
び第2の数のビットデータai およびbi の対(ai、
bi )が入力する第2の入力端と、固定ビット量シフト
手段とを備え、各固定ビット量シフト手段は、入力した
数値を2i-1 ビット分第1の方向へシフトする第1の固
定ビット量シフト手段と、シフトを行なわない第2の固
定ビット量シフト手段と、2i-1 分第2の方向へシフト
する第3の固定ビット量シフト手段とを含み、さらに各
シフト手段はシフト結果を出力する出力端を備える。
ら第4の数を各々記憶・保持する手段と、第3あるいは
第4の数の一方を入力とし、順次シフトさせる直列に接
続された2以上のシフト手段を備え、各シフト手段はシ
フトする数値が入力される第1の入力端と、シフト量に
対応する数値が入力される第2の入力端と、第1および
第2の数の対応する各桁のビットデータの対が、少なく
とも2対入力され、この各ビットデータの対において、
その差を冗長2進数とみなした場合に表現され得るシフ
ト量をエンコードする手段と、上記エンコード手段によ
り生じ得るシフト量にそれぞれ対応する固定ビット量シ
フト手段と、エンコード手段のエンコード結果に対応す
る固定ビット量シフト手段による、第1の入力端からの
入力数値のシフト手段を出力する出力端とを含む。
4の数を各々記憶・保持する手段と、第1および第2の
数の対応する各桁のビットデータの対を第1および第2
のグループに分配する手段と、第3の数を入力とし、順
次シフトさせる直列に接続された2以上のシフト手段の
第1のグループを備え、第1のグループのシフト手段の
各々は、シフトする数値が入力される第1の入力端と、
第1および第2の数の対応する各桁のビットデータの対
の第1のグループのうちの少なくとも1つの対が入力さ
れる第2の入力端と、第2の入力端に入力するビットデ
ータの各々の対において、その差を冗長2進数とみなし
た場合に、各々の対で表現され得るシフト量にそれぞれ
対応し、シフト量が正のとき第1の方向へ、シフト量が
負のとき第2の方向へ、桁シフトを行なう固定ビット量
シフト手段と、第2の入力の入力データに対応して選択
された固定ビット量シフト手段の1つによる、第1の入
力からの入力数値のシフト結果を出力する出力端とを含
み、第4の数を入力とし、順次シフトさせる直列に接続
された2以上のシフト手段の第2のグループをさらに備
え、第2のグループのシフト手段の各々は、第1のグル
ープのシフト手段とは、シフト量の正負とシフト方向の
対応が逆となっている。
ら4までのいずれかに記載のシフト装置の構成におい
て、第1の数は、第1の浮動小数点数の指数部であり、
第2の数は、第2の浮動小数点数の指数部であり、第3
の数は、第1の浮動小数点数の仮数部であり、第4の数
は、第2の浮動小数点数の仮数部である。
量のもととなる第1および第2の数の差を冗長2進数で
表現することとしたので、演算中に桁上げが発生せず、
各桁ごとに独立かつ並列に演算を行なうことが可能であ
る。
のビットデータの対のそれぞれのグループに対して、1
つのシフト手段が対応する構成とした。
れるビットデータの対のグループにより表現され得るシ
フト量にそれぞれ応じた固定ビット量シフト手段を予め
備えている。したがって、上記ビットデータの対のグル
ープが入力すると、そのシフト手段中の1つの固定ビッ
ト量シフト手段が選択され、入力数値のシフトが実行さ
れる。上記のような構成のシフト手段が、直列に接続し
て、最初に入力された第3あるいは第4の数を、順次シ
フトすることで全体として所定のシフト量だけシフトさ
れた結果を出力する。
第2の数はn桁の2進数であるので、シフト手段はそれ
ぞれの桁に対応してn個存在する。
のものは、第1の入力端から入力した数値を、第1およ
び第2の数の第i桁目のビットデータの対(ai 、
bi )に応じて、選択される固定ビット量シフト手段に
よりシフトさせる。
(ai 、bi )の差が、冗長2進数として−1、0、1
のいずれかであることにそれぞれ対応して、2i-1 ビッ
ト分第1の方向へシフトする第1の固定ビット量シフト
手段か、シフトを行なわない第2の固定ビット量シフト
手段か、2i-1 ビット分第2の方向へシフトする第3の
固定ビット量シフト手段かのいずれかが選択される。各
桁ごとに対応する上記シフト手段が直列に接続して、最
初に入力された第3あるいは第4の数を順次シフトされ
ることで、全体として所定のシフト量だけシフトされた
結果を出力する。
フト量のもととなる第1および第2の数の差が冗長2進
数として表現され、この冗長2進数は少なくとも2つ以
上のグループに分配される。
桁のビットデータの対を2つ以上のグループに分配す
る。その各々の対に属するビットデータの差を冗長2進
数とみなし、そのグループで表現され得る数値をエンコ
ードする手段を備える。
エンコード手段の出力により制御されるシフト手段が対
応する。
ループで表現され得るシフト量にそれぞれ対応する、固
定ビット量シフト手段を有している。
すると、そのうちの1つが選択され、入力数値のシフト
が実行される。上記のような構成のシフト手段が、直列
に接続して最初に入力された第3あるいは第4の数を、
順次シフトすることで全体として所定のシフト量だけシ
フトされた結果を出力する。
フト量のもととなる第1および第2の数の差が冗長2進
数として表現され、まず、この冗長2進数を第1および
第2の冗長2進数に分配する。
れぞれ第1および第2の数の対応する桁のビットデータ
の対の差として表わされる。
タの対を、さらにグループに分配し、それぞれのグルー
プに対しては1つのシフト手段が対応している。そし
て、その各々のシフト手段は、入力されるビットデータ
の対のグループにより表現されるシフト量に、それぞれ
応じた固定ビット量シフト手段を予め備えている。
プが入力すると、そのシフト手段中の1つの固定ビット
量シフト手段が選択され、入力数値のシフトが実行され
る。上記のような構成のシフト手段が、直列に接続して
最初に入力された第3の数を、上記第1の冗長2進数に
属するビットデータの対による、それぞれのグループで
表現されるシフト量の正負に応じて、第1あるいは第2
の方向へ順次シフトしていく。
ータの対も、さらにグループに分配され、それぞれのグ
ループに対しては、上記第1の冗長2進数の場合と同様
に、1つのシフト手段が対応している。
続して、最初に入力された第4の数を、上記第2の冗長
2進数に属するビットデータの対による、それぞれのグ
ループで表現されるシフト量の正負に応じて、第1の冗
長2進数の場合とは逆の方向へ順次シフトしていく。
が相互にシフトすることで、全体のシフト量が2つに分
けられ、同時に実行されることになる。
指数部とし、第3の数を加数部とする第1の浮動小数点
数と、第2の数を指数部とし、第4の数を加数部とする
第2の浮動小数点数の間の加算を行なう際の桁合せシフ
トを行なう。
ロック図である。
は、浮動小数点数1の仮数部8に対し、浮動小数点数1
および2の指数部7および9の2つの入力に基づいて左
右両方向にシフトを行なう両方向バレルシフタである。
その他の部分は従来例における該当箇所と同じである。
て説明する。以下では、まず、上記両方向バレルシフタ
15の動作の根拠となる数学上の原理である、冗長2進
数演算について述べる。その後、その原理をもとに実際
に桁シフトを行なうハードウェアの構成について述べ
る。以下の説明で明らかになるように、2つの2進数の
差を冗長2進数で表現することにより、差を求める演算
は通常の減算から、むしろ、各桁のビットデータの大小
の比較演算に還元される。
ェアも大幅に単純化されることになる。
9を、それぞれ8ビットのデータE A およびEB とし、
以下のように表わす。
なわれ、この値が負のときは浮動小数点数1の方が浮動
小数点数2よりも小さいため、浮動小数点数1の加数部
である8は右方向にシフトし、逆EA −EB が正のとき
は左方向にシフトしなければならない。また、シフト量
はEA −EB の絶対値である。このシフトは各桁を−
1、0、1の3通りの値で表現するいわゆる冗長2進数
表現を用いると極めて容易に表わすことができる。
EB =01111011とすると、図2に示すようにE
A −EB は対応する桁のビット同士を引算することによ
り1−10−1−100−1と簡単に表わされる。すな
わち、それぞれを10進数で表わすと、 EA =1・27 +0・26 +1・25 +0・24 +0・
23 +0・22 +1・21 +0・20 =162 EB =0.27 +1・26 +1・25 +1・24 +1・
23 +0・22 +1・21 +1・20 =123 EA −EB =1・27 +(−1)・26 +0・25 +
(−1)・24 +(−1)・23 +0・22 +0・21
+(−1)・20 =39 となり、冗長2進数表示が正しい値を示していることが
わかる。そしてこのEA−EB がシフト量となる。
ャリー信号の伝搬は起こらない。この考え基づいた両方
向バレルシフタ15の構成の一例を図3に示す。図中2
1〜28は、それぞれ128、64、32、16、8、
4、2、1ビット両方向シフタである。また、29〜3
6は、EA およびEB の対応する各ビットの組である。
下のように定義する。 (ai 、bi )=ai −bi …(13) ここでたとえば128ビット両方向シフタ21について
考えると、(a7 、b 7 )=(1、0)の場合は、式
(13)よりこの値は1となるので、入力8は128ビ
ット左方向へシフトする。(a7 、b7 )=(0、1)
の場合は、式(13)よりこの値は−1となるので12
8ビット右方向へシフトする。また、(a 7 、b7 )=
(1、1)あるいは(a7 、b7 )=(0、0)の場合
は式(13)よりこの値は0となるので、入力8のシフ
トは行なわない。他の7つの両方行シフタ22〜28に
ついても同様である。
A およびEB に対してその差の値に応じたシフトを実現
することができる。上の例の場合、最終的に39ビット
の左方向シフトが実現される。なお、冗長2進数表現で
は、たとえば10進数の方を4桁で表わすのに“010
1”、“011−1”、“1−101”、“1−11−
1”の4通りが可能であるように1つの値に対して複数
の表現方法があるが、本構成の両方向シフタを用いる
と、いずれの表現に対しても最終的に一通りの出力を得
ることができる。
の構成について詳しく説明する。図4は、図3の両方向
バレルシフタのうち、両方向シフタ21〜24の構成を
示したものである。ここで仮に可動小数点数の仮数部の
ビット幅を16ビットとする。図中データ8は、この仮
数部m15…m0 を示す。
信号29〜32の対応する値によって1つを選択して出
力するマルチプレクサで、冗長2進数の値が−1のとき
は左側、0のときは真中、1のときは右側の信号を選択
して次段に出力する。
長2進数29の値が−1のとき、入力8を右方向に12
8ビットシフトしてC-113〜C-128として出力する。こ
こで添字は桁の位置を示すもので左側を上位桁とし、0
桁よりも右側のものに対しては便宜上負の値で表わすこ
とにする。
ときは、入力8はシフトされずC15〜C0 として出力さ
れる。冗長2進数のビットデータの組29が1のとき
は、入力8は128ビット左方向にシフトされてC143
〜C128 として出力される。なお、C127 〜C16やC-1
〜C-112は仮想的には存在するが実際にはこれらの桁が
使われることはないのでハードウェアとして存在する必
要はなく、この例では無視している。
長2進数入力30が−1のとき、入力された数値を右方
向へ64ビットシフトして出力する。すなわち、C143
〜C 128 はd79〜d64に、C15〜C0 はd-49 〜d-64
にそれぞれシフトされる。
れてd-177〜d-192に出力されることになるが、これは
以下の理由で無視できる。すなわち、仮数部加算器6で
加算が必要なのは、桁合せされた2つの仮数部14と1
0に、桁の重なりがある場合であり、重なりがなければ
加算する必要はなく、いずれか大きい方の仮数部を選択
するだけでよい。
桁の場合、桁合せの後の仮数部14の最下位ビットは、
−15桁から+15桁の間にある場合のみ考慮すればよ
い。そこで、d-177〜d-192について考えると、これよ
り以後のシフト量は冗長2進数31〜36の値の合計で
あり、これらは6桁の冗長2進数の値となり、−63〜
63の値となる。したがって、最大限左側にシフトして
も63ビットであり、そのとき最下位ビットは−129
桁目となり、−15桁から+15桁の間には入らない。
すなわちこの場合は考慮する必要がなく、d-177〜d
-192は出力しなくてよい。
ずに出力され、冗長2進数入力30が1のときには左方
向に64ビットシフトされて出力される。これらの場合
も最終の出力14の最下位桁が−15桁から+15桁の
間に入る可能性のあるものだけを取出して、結局d79〜
d64、d15〜d0 、d-49 〜d-64 が出力される。
両方向シフタ24は、いずれも64ビット両方向シフタ
22とシフト量が異なるだけで同様の動作をする。その
結果出力としてf31〜f-16 が得られる。
ち、両方向シフタ25〜28の構成を示したものであ
る。
33が−1のときは入力数f31〜f -16 を右方向へ8ビ
ットシフト、0のときはシフトなし、1のときは左方向
へ8ビットシフトしたものをg31〜g-16 に出力する。
34が−1のときは入力g31〜g-1 6 を右方向へ4ビッ
トシフト、0のときはシフトなし、1のときは左方向へ
4ビットシフトしたものをh31〜h-16 に出力する。
35が−1のときは入力h31〜h-1 6 を右方向に2ビッ
トシフト、0のときはシフトなし、1のときは左方向へ
2ビットシフトしたものをi31〜i-16 に出力する。
36が−1のときは入力i31〜i-1 6 を右方向へ1ビッ
トシフト、0のときはシフトなし、1のときは左方向へ
1ビットシフトしたものをj31〜j-16 に出力する。
図5中のマルチプレクサ(MUX)の回路構成の一例を
図6に示す。
図7中に示されているCMOSトランスミッションゲー
トを基本構成要素とする4チャネル・マルチプレクサで
ある。トランスミッションゲートは、PチャネルMOS
トランジスタとNチャネルMOSトランジスタとを並列
に接続して構成されている。NチャネルMOSトランジ
スタのゲートへの入力信号INの反転信号/INが、P
チャネルMOSトランジスタのゲートに入力される。し
たがって、信号INがHレベルのときは、入力端と出力
端とが導通し、Lレベルのときは入力端と出力端とは電
気的に分離される。
号(ai 、bi )=(1、0)が入力した場合について
以下説明する。
号がインバータ211と212とで反転されて、トラン
スミッションゲート221〜224に入力されると、ト
ランスミッションゲート221および223はオン状態
に、トランスミッションゲート222および224はオ
フ状態になる。
号がインバータ213と214とで反転されて、トラン
スミッションゲート225および226に入力される
と、トランスミッションゲート226はオン状態に、ト
ランスミッションゲート225はオフ状態となる。
うち、出力端205と導通するのは、入力端202のみ
である。
0)、すなわち対応する冗長2進数が1の場合は、右側
の経路202が選択される。
1)のときは、左側の経路204が、(ai 、bi )=
(0、0)または(ai 、bi )=(1、1)のとき
は、真中の経路203が選択される。つまり、それぞれ
対応する冗長2進数−1または0に対応する経路が選択
されることになる。
プレクサを図4中に示すように128ビット両方向シフ
タ21内に配置した場合、入力信号(a7 、b7 )によ
り、直接、特に減算処理を行なわなくても、入力信号m
15…m0 が+128ビットシフト、0ビットシフト、−
128ビットシフトのいずれかを実行されたものとし
て、出力される。
も同様である。つまり、浮動小数点数1および2の指数
データ7および9のそれぞれの桁のビットデータの組
{(a7 、b7 )、(a6 、b6 )、…、(a0 、
b0 )}が両方向バレルシフタ15に入力した時点で、
両方向シフタ21〜28の各々について信号の伝達経路
が決定される。
4とをつなぐ経路が、並列に入力されたデータの組
{(a7 、b7 )、(a6 、b6 )、…、(a0 、
b0 )}により一時に決定されることになる。
れるまでの遅延時間は、各々の両方向シフタにおいてマ
ルチプレクサが初期状態から入力ビットデータの組によ
り選択された状態に遷移する時間(各桁、並行して同時
に行なわれる。)と入力信号が各シフタを伝搬していく
遅延時間のみである。
処理を行ない、その結果に基づいて仮数部データ8およ
び10の入換えを行なった後、右方向バレルシフタで桁
合せシフトを行なうという従来の構成に比べると、第1
の実施例の構成では各段に高速に桁合せシフトを行なう
ことが可能である。
部減算を実行することなく指数部の値から直接桁合せを
行なうことができ、また従来必要であったスワッパを省
略することができるため、簡素化された回路構成で極め
て高速な浮動小数点加算を実現することができる。
の段数を削減した場合を示す。以下、動作について説明
する。エンコーダ38には指数部の入力29〜36のう
ち上位4ビット分が入力し、この4ビットの値に応じた
信号をエンコーダ出力信号39として出力する。
4ビットは(1、0)(0、1)(1、1)(0、1)
=1−10−1=3となる。ただし、この上位5ビット
の最下位は24 を表わす桁となるので、24 を掛けて3
×24 =48となる。したがって、エンコーダ出力信号
39には左方向へ48ビットシフトさせる信号が出力さ
れる。
9〜36のうち下位4ビット分が入力し、この4ビット
の値に応じたシフト信号をエンコーダ出力信号43とし
て出力する。実施例1に挙げた例の場合、下位4ビット
は(0、1)(0、0)(1、1)(0、1)=−10
0−1=−9となるので、エンコーダ出力信号43には
−9ビットすなわち右方向へ9ビットシフトさせる信号
が出力される。
ら生成されるシフト信号に従って仮数部の入力8をシフ
トさせ、出力データ40を出力する。さらに両方向バレ
ルシフタ41は、下位4ビットから生成されるシフト信
号に従って入力40をシフトさせ、出力データ14を出
力する。実施例1に挙げた例の場合、出力データ40と
しては入力データ8を左方向へ48ビットシフトしたも
のが出力され、さらに出力データ14としては、データ
40を右方向に9ビットシフトしたものが出力される。
入力データ8を48−9=39ビット左方向にシフトし
たものが出力され、所望のシフトが達成される。
について、さらに詳しく説明する。図9は、実施例2に
おける上位側の行方向バレルシフタ37の構成を示す図
である。上位4桁の冗長2進数29〜32は、エンコー
ダ38によって数値化され、信号39は−15〜+15
の値を持つ。ここで、冗長2進数は、さらに下位に4桁
の値33〜36を持つので、信号39の1の値は、16
桁のシフトを表わすことになる。
は−2以下のときは、下位のシフト量がいくつであって
もシフト後の最下位桁が−15桁から+15桁の間に入
る可能性がないので、信号39は、1、0、−1の場合
だけを考えればよい。
向に16ビットシフトされ、0のときはシフトされず、
−1のときは右方向に16ビットシフトされてf31〜f
-16に出力される。
バレルシフタ41の構成を示す図である。下位4桁の冗
長2進数33〜36はエンコーダ42によって数値化さ
れ、エンコーダ信号43は−15〜+15の値を持つ。
の各値に応じて31入力のうちから1つを選択するマル
チプレクサ回路である。この例では、31桁目から−1
6桁目までの48個のマルチプレクサが配置され、各々
にエンコード信号43が入力する構成となっている。こ
れによって入力信号f31〜f-16 にエンコード信号43
のシフト量に応じたシフトが行なわれて、出力信号j31
〜j-16 として出力される。
ットと下位4ビットとに分割した場合を示したが、その
他の分割方法でもよい。
シフタの段数を削減することができるので、シフト動作
のさらなる高速化を実現することができる。
ルシフタ16を追加した場合を示す。この例では、指数
部7および9はそれぞれ2つの部分に分けられる。すな
わち指数部7は一部17と他の部分18とに分けられ、
指数部9は指数部7と対応するように一部19と他の部
分20とに分けられる。
17および19が上位4桁、18および19は各々下位
4桁とする。両方向バレルシフタ15はここでは17お
よび19から作られる4桁の冗長2進数の値によってシ
フトを行なう。実施例2で述べたようにこの値は48で
あるので左方向へ48ビットのシフトを行なう。またこ
の値が負ならば右方向へシフトとなる。
2の浮動小数点数2の仮数部に対して、18および20
から作られる冗長2進数が正ならば右方向、負ならば左
方向のシフトを行なう。実施例1での例に従うと17お
よび19は各々下位4桁で値は実施例で述べたように−
9となるので両方向バレルシフタ16は左に9ビットシ
フトを行なう。この結果両方向バレルシフタ15の出力
14はシフト結果6に対しては相対的に39ビット右方
向にシフトされたことになり、所望のシフトが実現され
る。
上位4ビットと下位4ビットとに分割した場合を示した
が、その他の分割方法でもよい。
はそれぞれ図3に示したような1ビットごとにシフトす
るタイプでもよいし、図8に示したようなエンコードを
用いるタイプでもよい。
に削減でき、より一層の高速の桁合せが可能となる。
シフト量のもととなる第1および第2の数の差を冗長2
進数とみなしたので、各桁ごとに独立に演算を行なえば
よく、キャリー信号の伝搬遅延なくシフト量の制御信号
が確定する。しかも、複数の直列に接続されたシフト手
段の各々が、入力されるビットデータの組のグループに
より表現されるシフト量にそれぞれ応じた固定ビット量
シフト手段を予め備えている。その結果、入力された数
値が各々のシフト手段により順次シフトされていく経路
は、第1および第2の数のビットデータが入力された時
点で、一時に決定される。
を実行することなく、第1および第2の数の値から直接
桁合せを行なうことができ、極めて高速なシフト動作を
実現できる。
求項1記載のシフト装置の構成で、特に複数の直列に接
続されたシフト手段は、第1および第2の数の差のそれ
ぞれに桁に対応している。
同様の効果を奏する。請求項3記載のシフト装置におい
ては、第1および第2の数の差は、少なくとも2つのグ
ループに分配されている。その各々のグループに属する
第1および第2の数の各ビットデータの組は、エンコー
ドされた後、それぞれのグループに対応しているシフト
手段に入力される。したがって、両方向シフタの段数を
削減することができ、シフト動作の高速化を実現でき
る。
第2の数の差は冗長2進数とみなされ、まず2つに分配
される。分配された第1の冗長2進数の各桁のビットデ
ータのグループにそれぞれ対応し、直列に接続された、
シフト手段の第1のグループにより順次第3の数がシフ
トされる。
のビットデータのグループにそれぞれ対応し、直列に接
続されたシフト手段であって、冗長2進数の正負とシフ
ト方向の対応が第1のグループのシフト手段とは逆であ
る、シフト手段の第2のグループにより順次第4の数が
シフトされる。したがって、以上の構成で第3および第
4の数が相互にシフトすることで全体のシフト量を2つ
に分けて同時に実行することになり、両方向シフタの段
数をさらに削減でき、より一層の桁シフトの高速化が図
れる。
求項1から4記載のいずれかのシフト装置を浮動小数点
加算時の桁合せシフトに応用したので、極めて高速な浮
動小数点加算を実現することができる。
示す図である。
る。
示す第1の図である。
示す第2の図である。
示す第3の図である。
成を示す図である。
ある。
の構成を示す第1の図である。
示す第2の図である。
を示す第3の図である。
を示す図である。
る。
ある。
成を示す概略ブロック図である。
指数部減算器、4スワッパ、5 右方向バレルシフ
タ、6 仮数部加算器、7 第1の浮動小数点数の指数
部データ、8 第1の浮動小数点数の仮数部データ、9
第2の浮動小数点数の指数部データ、10 第2の浮
動小数点数の仮数部データ、11 指数部減算器の演算
結果、11a 減算結果の絶対値、11c キャリー出
力信号、12 スワッパの第1の出力、13 スワッパ
の第2の出力、14 バレルシフタの出力、15、16
両方向バレルシフタ、17 第1の浮動小数点数の指
数部の第1の分配数、18 第1の浮動小数点数の指数
部の第2の分配数、19第2の浮動小数点数の指数部の
第1の分配数、20 第2の浮動小数点数の指数部の第
2の分配数、21 128ビット両方向シフタ、22
64ビット両方向シフタ、23 32ビット両方向シフ
タ、24 16ビット両方向シフタ、258ビット両方
向シフタ、26 4ビット両方向シフタ、27 2ビッ
ト両方向シフタ、28 1ビット両方向シフタ、29、
30、31、32、33、34、35、36 第1およ
び第2の浮動小数点数の指数部の桁のビットデータの
組、37 第1の両方向バレルシフタ、38 エンコー
ダ、39 エンコーダの出力、40 第1の行方向バレ
ルシフタの出力、41 第2の両方向バレルシフタ、4
2 エンコーダ、43 エンコーダの出力、201 マ
ルチプレクサ、202マルチプレクサの第1の入力、2
03 マルチプレクサの第2の入力、204マルチプレ
クサの第3の入力、205 マルチプレクサの出力、2
11、212、213、214 インバータ、221、
222、223、224、225、226 トランスミ
ッションゲート。
Claims (5)
- 【請求項1】 2進数で表わされた第1から第4の数に
対し、第1の数から第2の数を引いた差の値に基づき、
第3または第4の数の一方の桁をシフトする機能を備え
たシフト装置であって、 前記第1から第4の数を各々記憶・保持する手段と、 前記第3または第4の数の一方を入力として受取って、
順次シフトさせる、直列に接続された2以上のシフト手
段を備え、 前記シフト手段は各々、 シフトされる数値が入力される第1の入力端と、 前記第1および第2の数の対応する各桁のビットデータ
の対が、少なくとも1対入力される第2の入力端と、 前記ビットデータの各々の対において、その差を冗長2
進数とみなした場合に、前記第2の入力端に入力された
少なくとも1対のビットデータの差で表現され得るシフ
ト量をそれぞれ有し、前記第2の入力端の入力データに
よって選択される、複数の固定ビット量シフト手段と、 前記選択された固定ビット量シフト手段の1つによる、
前記第1の入力からの入力数値のシフト結果を出力する
出力端とを含む、シフト装置。 - 【請求項2】 前記第1および第2の数は、n桁の2進
数であり、 前記シフト手段は、n個が直列に接続したものであっ
て、 前記シフト手段の第i番目のものは、 シフトする数値が入力される第1の入力端と、 前記第1の数の第i桁目のビットデータai および前記
第2の数の第i桁目のビットデータbi の対(ai 、b
i )が入力する第2の入力端と、 前記固定ビット量シフト手段とを備え、 前記固定ビット量シフト手段は、入力した数値を2i-1
ビット分第1の方向へシフトする第1の固定ビット量シ
フト手段と、 シフトを行なわない第2の固定ビット量シフト手段と、 2i-1 ビット分第2の方向へシフトする第3の固定ビッ
ト量シフト手段とを含み、 前記出力端とをさらに備える、請求項1記載のシフト装
置。 - 【請求項3】 2進数で表わされた第1から第4の数に
対し、第1の数から第2の数を引いた差の値に基づき、
第3あるいは第4の数の一方の桁をシフトする機能を備
えたシフト装置であって、 前記第1から第4の数を各々記憶・保持する手段と、 前記第3あるいは第4の数の一方を入力とし、順次シフ
トさせる直列に接続された2以上のシフト手段を備え、 前記シフト手段は各々、 シフトする数値が入力される第1の入力端と、 シフト量に対応する数値が入力される第2の入力端と、 前記第1および第2の数の対応する各桁のビットデータ
の対が、少なくとも2対入力され、この各ビットデータ
の対において、その差を冗長2進数とみなした場合に表
現され得るシフト量をエンコードする手段と、 前記エンコード手段により生じ得るシフト量にそれぞれ
対応する固定ビット量シフト手段と、 前記エンコード手段のエンコード結果に対応する固定ビ
ット量シフト手段による前記第1の入力端からの入力数
値のシフト結果を出力する出力端とを含む、シフト装
置。 - 【請求項4】 2進数で表わされた第1から第4の数に
対し、第1の数から第2の数を引いた差の値に基づき、
第3および第4の数の桁をシフトする機能を備えたシフ
ト装置であって、 前記第1から第4の数を各々記憶・保持する手段と、 前記第1および第2の数の対応する各桁のビットデータ
の対を第1および第2のグループに分配する手段と、 前記第3の数を入力とし、直列に接続して順次シフトさ
せる2以上のシフト手段の第1のグループを備え、 前記第1のグループのシフト手段の各々は、 シフトする数値が入力される第1の入力端と、 前記第1および第2の数の対応する各桁のビットデータ
の対の第1のグループのうちの少なくとも1つの対が入
力される第2の入力端と、 前記第2の入力端に入力するビットデータの各々の対に
おいて、その差を冗長2進数とみなした場合に各々の対
で表現され得るシフト量にそれぞれ対応し、 前記シフト量が正のとき、第1の方向へ 前記シフト量が負のとき、第2の方向へ 桁シフトを行なう固定ビット量シフト手段と、 前記第2の入力の入力データに対応して選択された前記
固定ビット量シフト手段の1つによる、前記第1の入力
からの入力数値のシフト結果を出力する出力端とを含
み、 前記第4の数を入力とし、直列に接続して順次シフトさ
せる2以上のシフト手段の第2のグループをさらに備
え、 前記第2のグループのシフト手段の各々は、前記第1の
グループのシフト手段とは、シフト量の正負とシフト方
向の対応が逆となっている、シフト装置。 - 【請求項5】 前記第1の数は、第1の浮動小数点数の
指数部であり、前記第2の数は、第2の浮動小数点数の
指数部であり、前記第3の数は、第1の浮動小数点数の
仮数部であり、前記第4の数は、第2の浮動小数点数の
仮数部である、請求項1から4までのいずれかに記載の
シフト装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30072894A JP3436994B2 (ja) | 1994-12-05 | 1994-12-05 | シフト装置 |
US08/548,117 US5726926A (en) | 1994-12-05 | 1995-10-25 | Shifter for shifting floating point number utilizing arithmetic operation of redundant binary number, and adder containing the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30072894A JP3436994B2 (ja) | 1994-12-05 | 1994-12-05 | シフト装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08161149A JPH08161149A (ja) | 1996-06-21 |
JP3436994B2 true JP3436994B2 (ja) | 2003-08-18 |
Family
ID=17888390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30072894A Expired - Fee Related JP3436994B2 (ja) | 1994-12-05 | 1994-12-05 | シフト装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5726926A (ja) |
JP (1) | JP3436994B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100265358B1 (ko) * | 1997-05-22 | 2000-09-15 | 김영환 | 고속의쉬프팅장치 |
US6006244A (en) * | 1997-12-19 | 1999-12-21 | Advanced Micro Devices, Inc. | Circuit for shifting or rotating operands of multiple size |
US6035310A (en) * | 1997-12-19 | 2000-03-07 | Advanced Micro Devices, Inc. | Method and circuit for performing a shift arithmetic right operation |
US6122651A (en) * | 1998-04-08 | 2000-09-19 | Advanced Micro Devices, Inc. | Method and apparatus for performing overshifted rotate through carry instructions by shifting in opposite directions |
US6148315A (en) * | 1998-04-30 | 2000-11-14 | Mentor Graphics Corporation | Floating point unit having a unified adder-shifter design |
US6327651B1 (en) * | 1998-09-08 | 2001-12-04 | International Business Machines Corporation | Wide shifting in the vector permute unit |
EP1122637A3 (de) * | 2000-01-31 | 2005-10-12 | Micronas GmbH | Recheneinheit für eingeschränkte Signalverarbeitung |
US6675182B1 (en) * | 2000-08-25 | 2004-01-06 | International Business Machines Corporation | Method and apparatus for performing rotate operations using cascaded multiplexers |
US6983297B2 (en) * | 2001-08-16 | 2006-01-03 | Texas Instruments Incorporated | Shifting an operand left or right while minimizing the number of multiplexor stages |
US7320013B2 (en) * | 2002-12-12 | 2008-01-15 | Adaptec, Inc. | Method and apparatus for aligning operands for a processor |
US6853699B1 (en) * | 2004-02-27 | 2005-02-08 | Qualcomm, Incorporated | High speed shifter circuit |
US9021000B2 (en) | 2012-06-29 | 2015-04-28 | International Business Machines Corporation | High speed and low power circuit structure for barrel shifter |
CN113131948B (zh) * | 2020-01-10 | 2024-07-16 | 瑞昱半导体股份有限公司 | 具有多模式的数据移位运算装置及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4999800A (en) * | 1989-11-13 | 1991-03-12 | Motorola, Inc. | Floating point adder with pre-shifter |
US5166898A (en) * | 1990-09-07 | 1992-11-24 | Nec Corporation | Shift amount floating-point calculating circuit with a small amount of hardware and rapidly operable |
KR100262438B1 (ko) * | 1991-05-08 | 2000-08-01 | 가나이 쓰도무 | 연산장치 및 이것을 사용한 비트필드조작 연산방법 |
US5408426A (en) * | 1992-03-17 | 1995-04-18 | Hitachi, Ltd. | Arithmetic unit capable of performing concurrent operations for high speed operation |
-
1994
- 1994-12-05 JP JP30072894A patent/JP3436994B2/ja not_active Expired - Fee Related
-
1995
- 1995-10-25 US US08/548,117 patent/US5726926A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08161149A (ja) | 1996-06-21 |
US5726926A (en) | 1998-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7395304B2 (en) | Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic | |
US5053631A (en) | Pipelined floating point processing unit | |
JP3436994B2 (ja) | シフト装置 | |
JPH02196328A (ja) | 浮動小数点演算装置 | |
JPS6347874A (ja) | 算術演算装置 | |
US6754689B2 (en) | Method and apparatus for performing subtraction in redundant form arithmetic | |
KR100203468B1 (ko) | 부동소수점수를 위한 산술연산장치 | |
US4878192A (en) | Arithmetic processor and divider using redundant signed digit arithmetic | |
US5144576A (en) | Signed digit multiplier | |
WO1999040508A1 (en) | Fast adder/subtractor for signed floating point numbers | |
KR20020063058A (ko) | 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치 | |
JPH057737B2 (ja) | ||
JPS584369B2 (ja) | デイジツトの有効性追跡装置 | |
US4866655A (en) | Arithmetic processor and divider using redundant signed digit | |
US4873660A (en) | Arithmetic processor using redundant signed digit arithmetic | |
US6813628B2 (en) | Method and apparatus for performing equality comparison in redundant form arithmetic | |
US4866657A (en) | Adder circuitry utilizing redundant signed digit operands | |
US6826588B2 (en) | Method and apparatus for a fast comparison in redundant form arithmetic | |
Neto et al. | Decimal addition on FPGA based on a mixed BCD/excess-6 representation | |
US7240085B2 (en) | Faster shift value calculation using modified carry-lookahead adder | |
JPH0251732A (ja) | 浮動小数点演算器 | |
JPH0667852A (ja) | 除算器 | |
JP2931632B2 (ja) | 桁移動装置及び浮動小数点演算装置 | |
Veeramachaneni et al. | A novel carry-look ahead approach to a unified bcd and binary adder/subtractor | |
JPH1115641A (ja) | 冗長2進加算器を用いた乗算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20030520 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
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: 20080606 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080606 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090606 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |