JP3418460B2 - 倍精度除算回路および方法 - Google Patents

倍精度除算回路および方法

Info

Publication number
JP3418460B2
JP3418460B2 JP22377994A JP22377994A JP3418460B2 JP 3418460 B2 JP3418460 B2 JP 3418460B2 JP 22377994 A JP22377994 A JP 22377994A JP 22377994 A JP22377994 A JP 22377994A JP 3418460 B2 JP3418460 B2 JP 3418460B2
Authority
JP
Japan
Prior art keywords
bit
value
quotient
register
dividend
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
Application number
JP22377994A
Other languages
English (en)
Other versions
JPH07168697A (ja
Inventor
哲也 中川
淳 木内
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPH07168697A publication Critical patent/JPH07168697A/ja
Application granted granted Critical
Publication of JP3418460B2 publication Critical patent/JP3418460B2/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
    • 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/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5352Non-restoring division not covered by G06F7/5375

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般に、マイクロプロセ
ッサおよびディジタル信号処理プロセッサのための演算
実行回路に関し、より詳細には、倍精度除算を効率的に
実行するための特別な回路に関する。
【0002】
【従来の技術】Nビットワード長を持つ通常のディジタ
ル信号処理プロセッサ(DSP)においては、Nビット
除数による2Nビット被除数の単精度除数は、各命令サ
イクルの間、1商ビットを計算する計算ハードウェアに
よって支援されている。多くのDSPにおいて利用され
る代表的ワード長は16、24および32ビットであ
る。
【0003】
【発明が解決しようとする課題】一般に、2Nビット除
数による4Nビット被除数の倍精度除算は、計算ハード
ウェアによっては直接に支援されず、従って、倍精度除
算は、ソフトウェア制御技術を利用して、実行されなけ
ればならないが、それらのソフトウェア制御技術は各1
商ビットの計算のために数多くの計算サイクルを必要と
するので、非常に低速なものとなっている。
【0004】本発明の目的は、倍精度除算のための直接
ハードウェア支援を提供し、そして各商ビットの計算に
2命令サイクルの速度で倍精度除算を実行することを可
能にする技術を提供することにある。好ましい実施例に
おいて、4Nビット被除数を2Nビット除数で除算する
ことによって生じる2N商結果を計算するためには、ち
ょうど4N+4命令サイクルを必要とする。
【0005】
【課題を解決するための手段】要約すると、本発明は、
単精度および倍精度除算計算を効率的に実行する算術演
算実行回路(本明細書では実行装置と称する)である。
この実行装置は、各々が2Nデータビットを持つ値を格
納する複数のデータレジスタと、2入力ポートとその2
入力ポートで受信したデータをシフトするシフト回路を
持つ算術論理演算装置(ALU)とを含む。実行装置
は、2Nビット以上のデータ経路幅を持つ少なくとも1
つのデータバスに結合され、実行装置のデータレジスタ
との間で相互にデータを転送する。
【0006】実行装置はさらに、1商ビットQBおよび
次のALU操作指令ビットQOPを計算する排他的OR
(XOR)ゲートおよびインバータゲートと、除算計算
の各命令サイクルの間に生成されたQOPとQBビット
を格納するQBビットレジスタおよびQOPビットレジ
スタと、そして先行の命令サイクル中に生成されたQB
ビットを各命令サイクル中に出力レジスタにシフトする
ビット処理装置(BPU)とを含む。除数および、各命
令サイクル中にALUによって生成された部分剰余値の
符号ビットからXORゲートによって計算されたQOP
ビットは、ALUが次の命令サイクル中に加算を実行す
るか、あるいは減算を実行するかを決定するためにAL
Uによって利用される。
【0007】
【作用】実行装置は、ALU、BPUおよびXORゲー
トを構成して3つの別個の機能を実行することによっ
て、本明細書ではDIV_A、DIV_BおよびDIV
_Cと称される3つの所定の除算命令に、応答する。D
IV_A命令は、各固定小数点除算のために実行される
第1命令であり、そしてそれによって実行装置は初期Q
B値とQOP値を計算するように構成される。DIV_
B命令は複数回、実行されて、商の値および、適用でき
れば、剰余値を計算する。DIV_B命令を実行するた
びに1商ビットQBを計算し、そして特定のディスティ
ネーション(宛先)レジスタに、以前の除算命令サイク
ルにおいて計算された商ビットを格納する。DIV_B
命令を実行するたびにまた、QOP値が計算され、その
QOP値は、実行装置によって実行される次の命令サイ
クルにおいて実行しようとするALU演算を決定する。
【0008】より特定すれば、DIV_B命令の各実行
中に、ALUは、以前の命令サイクルにおいて計算され
たQOPビット値が第1の値(例えば、1)を持つ場
合、特定の除数レジスタの値を特定の被除数レジスタに
加算し、そうでなければ、特定の被除数レジスタから特
定の除数レジスタを減算する。ALUによって計算され
た値は特定の被除数レジスタに戻され、計算値と除数の
符号ビットは排他的ORされて、新たなQOP値を生成
し、そして新たなQB値は、排他的OR操作により生成
された値を反転することによって生成される。生成され
たQOP値とQB値は各自のビットレジスタに格納され
て、次の命令サイクルで利用される。DIV_B命令の
各実行中、BPUはディスティネーションレジスタの値
を、左へ1ビット、シフトし、そして先行の命令サイク
ルで計算したQB値を、ディスティネーションレジスタ
の最下位ビット位置に挿入する。
【0009】計算中の商がNビットである場合、DIV
_B命令はN−1回実行され、そして計算中の商が2N
ビットである場合、それは2N−1回実行される。DI
V_C命令は除算を完了するために実行される最終命令
である。DIV_C命令によって、BPUはディスティ
ネーションレジスタの内容を1ビットだけシフトさせ、
そして先行の命令サイクルで計算された最後の商ビット
を、商の最下位ビットに格納させる。DIV_C命令に
よってまた、以前のDIV_B命令サイクルで計算され
たQOP値が「1」の値を持つ場合、ALUは除数を被
除数レジスタに加算する。Nビット除数によって2Nビ
ット被除数を除算して、Nビット商およびNビット剰余
を生成するために要する命令サイクルの数はN+4であ
って、1個のDIV_A命令、N−1個のDIV_B命
令、1個のDIV_C命令および、DIV_B命令が繰
返されるべき回数を特定する1個の「繰返し」命令、で
ある。ただし、この「「繰返し」命令には、普通、3命
令サイクルを要する。
【0010】倍精度除算のため、被除数は4Nビットで
あり、かつ2つのデータレジスタに格納されており、除
数は2Nビットであり、計算中の商は2Nビットであ
り、そして計算中の剰余は2Nビットである。倍精度除
算のため、各DIV_AとDIV_B命令の後に「桁上
げ付き循環」命令が続き、それによって被除数の下位の
2Nビットのうちの1ビットを、キャリビットレジスタ
へとシフトする。次いで、そのビットは、キャリビット
レジスタから、実行される次のDIV_BまたはDIV
_C命令によって、上位の被除数レジスタへとシフトさ
れる。すべての他の点に関しては、倍精度除算手順は単
精度除算手順と同じである。4Nビット被除数を2Nビ
ット除算で割って、2Nビット商と2Nビット剰余を生
成するのに要する計算命令サイクルの数は、4N+4で
ある。すなわち、1DIV_Aと1初期循環命令、繰返
したDIV_Bと循環命令のために4N−2、1DIV
_C命令、そしてDIV_Bおよび循環命令を繰返すた
めの回数を特定する1「繰返し」命令である。ただし、
この「繰返し」命令には、普通、3命令サイクルを要す
る。
【0011】本発明のその他の目的および特徴は、以下
の詳細な説明および添付の特許請求の範囲を図面に関連
して読むことにより、一層容易に明らかになるであろ
う。
【0012】
【実施例】
実行装置のアーキテクチャ 図1は、除算を支援する特定回路を除いた、本発明の好
ましい実施例において利用される演算実行装置1700
を示す。好ましい実施例の演算実行装置1700は、平
行なXとYデータバス1102、1104を持つディジ
タル信号処理プロセッサで実現されている。好ましい実
施例において、XとYのデータバスはそれぞれ、24ビ
ット幅であり、従って”N”は24である。2つの他の
好ましい実施例では、Nはそれぞれ16と32である。
【0013】1セットを構成する8個のレジスタ170
2〜1709は、算術計算のソースとディスティネーシ
ョン(宛先)として利用される。8レジスタは分割さ
れ、かつxd0、xd1、yd0、yd1、a0、a
1、m0およびm1と表記されている。各レジスタは5
6ビット幅であり、24下位ビット、24上位ビットお
よび8ガードビットを含む。XバスとYバス間のデータ
転送に対して、8個のレジスタはそれぞれ、3個のサブ
レジスタとしてアクセスされる。例えば、xd0レジス
タ1702はレジスタxd0g1702(a)、xd0
h1702(b)およびxd011702(c)から成
っている。
【0014】シフト値レジスタ1720と1722は、
ALUの入力シフタ1752および出力シフタ1753
と関連して利用されるべきシフト制御値を格納するため
の5ビットレジスタである。条件コードレジスタ(cc
r)1674は、所定のALUとBPU操作が実行され
た後に存在する種々の条件を表す8条件コード値(C、
V、N、Z、GC、VR、QBおよびQOP)を格納す
る。条件コードレジスタ1674は8つの個別ビットレ
ジスタ1674−0から1674−7を含んでいる。
C、QB、およびQOP条件コード値の利用法は、以下
に、より詳細に説明する。
【0015】実行装置1700の主要機能要素は算術論
理演算装置(ALU)1712、ビット処理装置(BP
U)1714、および乗算装置(MU)1716であ
る。
【0016】ローカル実行装置(EXU)コントローラ
1750はソース制御信号を生成し、それは、ALUS
RCA、ALUSRCB、MU/BPUSRCAおよび
MU/BPUSRCB信号に応答して、セレクタ173
0〜1732に与えられる。
【0017】ALUSRCA信号に対して、ローカル実
行装置(EXU)コントローラ1750によって生成し
たソース制御信号はセレクタ1730〜1732を制御
して、56ビット内部バス1734上に、ALUSRC
A信号によって指定された1セットのレジスタ1702
〜1709(xd0−m1)のいずれかによって格納さ
れた56ビットのデータを出力させる。
【0018】ALUSRCB信号に対して、これらの制
御信号はセレクタ1730〜1732を制御して、56
ビット内部バス1735上に、ALUSRCB信号によ
って指定された1セットのレジスタ1702〜1709
(xd0−m1)のいずれかによって格納された56ビ
ットのデータを出力させる。
【0019】MU/BPUSRCA信号に対して、これ
らの制御信号はセレクタ1730〜1732を制御し
て、56ビット内部バス1736上に、MU/BPUS
RCA信号によって指定された1セットのレジスタ17
02〜1709(xd0−m1)のいずれかによって格
納された56ビットのデータを出力させる。そして最後
に、MU/BPUSRCB信号に対して、これらの制御
信号はセレクタ1730〜1732を制御して、56ビ
ット内部バス1737上に、MU/BPUSRCB信号
によって指定された1セットのレジスタ1702〜17
09(xd0−m1)のいずれかによって格納された5
6ビットのデータを出力させる。
【0020】ローカル実行装置(EXU)コントローラ
1750はまた、ディスティネーション制御信号を生成
し、それは、ALUDSTおよびMU/BPUDST信
号に応答して、セレクタ1738〜1740に与えられ
る。ALUDST信号に対して、ローカル実行装置(E
XU)コントローラ1750によって生成された制御信
号はセレクタ1738〜1740を制御して、56ビッ
トデータを、56ビットALUDSTバス1742か
ら、ALUDST信号によって指定された1セットのレ
ジスタ1702〜1709(xd0−m1)のいずれか
に入力させる。MU/BPUDST信号に対して、ロー
カル実行装置(EXU)コントローラ1750によって
生成された制御信号はセレクタ1738〜1740を制
御して、56ビットデータを、56ビットMU/BPU
DSTバス1744から、MU/BPUDST信号によ
って指定された1セットのレジスタ1702〜1709
(xd0−m1)のいずれかに入力させる。
【0021】実行装置(EXU)1700は、単一AL
U、BPUあるいはMU操作、並列ALUおよびBPU
操作(たとえば除算操作)、および並列ALUおよびM
U操作を実行するように設計されている。さらに、この
構造は、各ALU、BPUあるいはMU操作に対して2
つまでのソースレジスタと個別ディスティネーションレ
ジスタを与えるように設計されている。その上、8個の
レジスタ1702〜1709(xd0−md1)の各々
は、ALU1712、BPU1714あるいはMU17
16による操作に対する第1ソース(A)、第2ソース
(B)あるいはディスティネーションになることができ
る。
【0022】各命令サイクル中、実行装置1700によ
って実行されることになっている操作は、ここでは図示
されていないDSPの命令デコーダとプログラム制御論
理およびデコーダ回路1600(図2参照)から受信し
た信号によって特定される。受信した制御信号には次の
ものが含まれる。すなわち、(a)5ビットALUおよ
びBPU操作(ALU/BPUOP)信号、(b)3ビ
ットALUシフト機能(ALUSHFT)信号、(c)
1ビット桁上げ付き加算または借り付き減算(ADDW
C/SUBWB)信号、(d)1ビット即値データ許可
あるいはALUソースB許可(IMMDE/SRCB
E)信号、(e)1ビット整数または固定小数点数算術
演算(INTEG/FRAC)信号、および(f)1ビ
ットALU/BPUディスティネーション更新許可およ
び抑止(DSTE/DSTD)信号である。
【0023】ALU/BPUOP信号は、ALU171
2およびBPU1714によって実行しようとする操作
を特定する。ALUSHFT信号は、ALUの入力シフ
タ1752および出力シフタ1753によって実行しよ
うとするシフト機能を特定する。ADDWC/SUBW
B信号は、使用可能(イネーブル)になると、ALU1
712に対し、桁上げまたは借りの付いた、ALU/B
PUOP信号によって定義された加算または減算を実行
するように命令する。IMMDE/SRCBE信号は、
ALU1712がバス1698からの即値データをオペ
ランドソースとして利用するよう制御するためのもので
ある。INTEG/FRAC信号は、ALU1712が
ALU/BPUOP信号によって定義されたALU操作
に対して整数または固定小数点数算術を利用するよう制
御するためである。DSTE/DSTD信号は、ALU
DST信号によって指定されたディスティネーションレ
ジスタが、操作のためにALU1712によって生成さ
れた結果を格納する(DSTE)あるいは格納しない
(DSTD)よう制御するためである。
【0024】ローカル実行装置(EXU)コントローラ
1750は、シフト制御信号を生成し、それはALUS
HFT信号に応答して、ALU1712およびセレクタ
1746に与えられる。セレクタ1746によって受信
されたシフト制御信号はセレクタ1746を制御して、
シフトレジスタ1720または1722(shaとsh
b)の1つによって格納されるシフトコードを、ALU
1712のソースBの入力シフタ1752またはALU
1712の出力シフタ1753に与える。
【0025】ローカル実行装置(EXU)コントローラ
1750はデータ転送制御信号を生成し、それはXRS
EL、YRSEL、XDBUSOPおよびYDBUSO
P信号に応答して、セレクタ1730〜1732および
1738〜1740に与えられる。XDBUSOP信号
は、データがデータメモリ(図示されていない)に格納
されるあるいは押込まれることになることを表示するこ
とができる。この場合、そしてXRSEL信号が、デー
タレジスタ1702(a)−1709(c)(xd0g
−m1I)の1つを、データメモリに格納しようとする
データのソースとして特定する場合には、ローカル実行
装置(EXU)コントローラ1750は制御信号を生成
し、それは適切なセレクタ1730、1731、173
2、または1746に送信されて、そのセレクタを制御
して、Xデータバス1102上に、XRSEL信号によ
って指定されたレジスタのいずれかによって格納された
データを出力させる。
【0026】XDBUSOP信号はまた、データがデー
タメモリからレジスタにロードされることになるのか、
あるいは即値データがレジスタにロードされることにな
るのかを表示することができる。その場合、XRSEL
信号は、レジスタ1702(a)−1709(xd0g
−m1I)の1つ、あるいはレジスタ1720と172
2(shaとshb)の1つを、データ転送のディステ
ィネーションとして特定し、そしてローカル実行装置
(EXU)コントローラ1750は制御信号を生成し、
それは適切なセレクタ1738、1739、1740あ
るいは1748に送信されて、そのセレクタを制御し
て、データを、Xデータバス1102から、XRSEL
信号によって指定されたレジスタのいずれかに入力させ
る。
【0027】YDBUSOP信号およびYRSEL信号
はデコードされ、そして、YDBUSOP信号とYRS
EL信号によって制御されたデータ転送がYデータバス
1104を介して送信されることを除いて、XDBUS
OPおよびXRSEL信号に対して上で述べたとほぼ同
じように、ローカル実行装置(EXU)コントローラ1
750によって利用される。
【0028】XDBUSOP信号が、データが1つのレ
ジスタから他のレジスタへ移動しようとしていることを
表示し、またXRSEL信号がデータレジスタ1702
(a)〜1709(c)(xd0g−m1I)の1つを
特定する場合には、ローカル実行装置(EXU)コント
ローラ1750は制御信号を生成し、それは適切なセレ
クタ1730、1731あるいは1732に送信され
て、そのセレクタを制御してデータを、XRSEL信号
によって指定されたデータレジスタ1702(a)〜1
709(c)(xd0g−m1I)のいずれかからXデ
ータバス1102上に出力させる。さらに、この場合、
YRSEL信号がデータレジスタ1702(a)〜17
09(c)(xd0g−m1I)の1つを特定する場合
には、ローカル実行装置(EXU)コントローラ175
0は制御信号を生成し、それは適切なセレクタ173
8、1739あるいは1740に送信されて、そのセレ
クタを制御して、データをXデータバス1102から、
YRSEL信号によって指定されたレジスタのいずれか
に入力させる。
【0029】ローカル実行装置(EXU)コントローラ
1750はまた、クロック信号CK0とCK1を受信す
る。これらの信号はローカル実行装置(EXU)コント
ローラ1750によって、上述の制御信号を生成する際
のタイミング適正化に利用される。
【0030】ローカル実行装置(EXU)コントローラ
1750はまた、CANCEL信号を受信することがで
きる。この信号に応答して、コントローラ1750は、
データレジスタ1702(a)−1709(c)および
シフト制御レジスタ1720と1722(shaとsh
b)を、セレクタ1738−1740または1748を
介して、Xデータバス1102、Yデータバス110
4、内部ALUDSTバス1742、または内部MU/
BPUDSTバス1744から受信したいずれのデータ
も格納しないように制御する制御信号を生成する。
【0031】さらに、ローカル実行装置(EXU)コン
トローラ1750はSTALL信号を受信することがで
きる。この信号を受信する場合、コントローラ1750
はデータレジスタ1702(a)−1709(c)およ
びシフト制御レジスタ1720と1722(shaとs
hb)を、セレクタ1738〜1740または1748
を介して、Xデータバス1102、Yデータバス110
4、内部ALUDSTバス1742または内部MU/B
PUDSTバス1744から受信したいずれのデータも
格納しないように制御する制御信号を生成する。
【0032】MUOP信号は、もしあれば、乗算装置
(MU)1716によって実行しようとする操作を特定
するためのものである。MU/BPUSRCA、MU/
BPUSRCB、およびMU/BPUDST信号は、デ
ータレジスタ1702〜1709の選択された1つを、
MUあるいはBPU操作に対するソースまたはディステ
ィネーションとして動作するよう制御するためのもので
ある。
【0033】除算実行論理 図2は、除算を実行するために利用される、実行装置1
700の部分を示す図である。各除算操作に対するソー
スおよびディスティネーションレジスタ1702〜17
09は除算操作に対して56ビット値としてアクセスさ
れる。データレジスタに対する3つの入力セレクタ17
38、1739および1740は、図2では入力セレク
タ1738’として示され、そしてデータレジスタに対
する3つの出力セレクタ1730、1731および17
32は、図2では、出力セレクタ1730’として示さ
れている。
【0034】除算用に構成される場合、ALU1712
はAとBの両入力シフタ1752と1960を有してい
て、出力シフタは使用しない。A入力シフタは、除算操
作では、「桁上げ付き左シフト」操作を実行するのに利
用される。キャリ(c)条件コードレジスタ1674−
0はA入力シフタ1960に結合されており、従ってレ
ジスタ1674−0のキャリ(c)ビット値は、ローカ
ル実行装置(EXU)コントローラ1750の制御によ
って、ALUのA入力値の最下位ビット位置にシフトす
ることができる。
【0035】QBおよびQOPレジスタ1674−6お
よび1674−7に格納しようとするビット値を生成す
るのに利用される回路は、次の通りである。排他的OR
(XOR)ゲート1961は、内部バス1734と17
35からALUへのAとB入力の符号ビットを、それぞ
れ、排他的ORする。XORゲート1961からの出力
は、ANDゲート1962によって第1ALU制御信号
DIV_AとANDされるが、それは所定の”DIV_
A”命令が実行されている場合にのみ、イネーブル(可
能)である。第2XORゲート1963は、ALUのB
入力(データバス1735上の)およびALUの出力
(データバス1742上の)の符号ビットを排他的OR
し、そしてXORゲート1963の出力は、ANDゲー
ト1964によって第2ALU制御信号DIV_BとA
NDされるが、それは所定の”DIV_B”命令が実行
されている場合にのみ、イネーブル(可能)である。イ
ンバータ1965は、XORゲート1963およびAN
Dゲート1964によって生成された信号を反転する。
各56ビット値の「符号ビット」は、ここでは、その値
のビット47であると定義されており、ビット0は最下
位ビットであり、そしてビット55は最上位ビットであ
る。
【0036】第1マルチプレクサ1966はA、B、C
と表記される3入力ポートを持っている。第1マルチプ
レクサ1966のA、BおよびC入力ポートは、それぞ
れ、”0”ビット信号、XORゲート1961出力およ
び反転XORゲート1963出力に結合されている。第
2マチルプレクサ1967のA、BおよびC入力ポート
は、それぞれ、”0”ビット信号、XORゲート196
1出力およびXORゲート1963出力に結合してい
る。
【0037】ローカル実行装置(EXU)コントローラ
1750からの制御信号によって、第1と第2のマチル
プレクサ1966と1967は、(A)実行装置170
0がDIV_A命令を実行する場合にそのA入力ポート
上の信号を、(B)実行装置がDIV_B命令を実行す
る場合にそのB入力ポート上の信号を、そして(C)実
行装置がDIV_C命令を実行する場合にそのC入力ポ
ート上の信号を、通過させることができる。第1マルチ
プレクサ1966の出力はQBレジスタ1674−6に
格納され、そして第2マルチプレクサ1967の出力は
QOPレジスタ1674−7に格納される。
【0038】QOPレジスタ1674−7に格納された
値は、ALUが所定の除算操作、ここではDIV_B命
令あるいは操作と称される、を実行する場合に、ALU
は加算操作をするかあるいは減算操作をするかを決定す
るのに利用される。より特定すれば、QOP値が真であ
る場合、ALUのB入力はALUのA入力に加算されて
出力値を生成し、QOP値が偽である場合、ALUのB
入力はALUのA入力から減算されて出力値を生成す
る。ALUがDIV_C操作を実行する場合、QOPレ
ジスタ値は、ALUが、(1)ALUのB入力を1ビッ
トだけシフトして、それをA入力に加算して出力値を生
成する(QOPが真である場合)か、あるいは(2)A
入力を出力する(QOPが偽である場合)かを判定す
る。
【0039】QBレジスタ1674−6はBPU171
4に結合され、そしてBPUがALUと連絡して、DI
V_BおよびDIV_C命令を実行する場合、BPU1
714によってBPUの出力の最下位ビット位置にシフ
トされる。
【0040】操作の理論 正の数に対する除算操作 この好ましい実施例の除算機能は非回復型技術を利用し
ており、それは本節の説明では、除算操作の実行前に被
除数値が中に格納されているソースレジスタの内容が、
除算操作によって変更されることを意味する。本発明の
除算技術について、先ず、被除数、除数、商および剰余
がすべて正である場合を説明する。次に、正および負の
数を利用する場合の除算技術について説明する。
【0041】図3は、正の被除数が正の除数で除算され
る単純な例を示す。この実施例において、両方の数は2
進表現フォーマットで示されており、そして被除数は6
ビット、除数は3ビット長である。従って、この実施例
の目的に対して、3ビットのワード長、Nが使用され、
そして除算の結果は3ビットの商および3ビットの剰余
になるであろう。被除数および除数が小数値を表す正規
化された固定小数点数であると想定する場合、この実施
例の被除数値は、0.6875であり、そして除数は
0.75である。従って、除数手順によって生成した商
および剰余は、それぞれ、0.75および0.125に
なるはずである。
【0042】第1命令サイクルでは、3ビットの除数が
6ビットの被除数の3最上位ビットから減算される。こ
の減算は、除数の2の補数を被除数に加算することによ
って実行される。部分剰余と称され、ここではPR
(1)と表記される結果は、”111110”であり、
これは負である。このことは、除数(0.75)が被除
数(0.6875)より大きく、そして商は1より小さ
いので、商Qの最上位ビットは”0”であることを意味
する。次の命令サイクルでは、部分剰余の符号ビットは
反転され、そして結果のゼロビットは、ここではQと称
されるディスティネーションレジスタに格納される。
【0043】次に、第2命令サイクルでは、先行の命令
サイクルからの部分剰余PR(1)が1ビット左方にシ
フトされ、そしてこのシフトされた部分剰余の3最上位
ビットに除数が加算される。この操作は、1ビット右シ
フト除数(除数値の半分、0.375)を、シフトして
ない剰余(−0.0625)に加算することと同等であ
るのに注目されたい。すなわち、結果の次の部分剰余
は、被除数(0.6875)から除数の半分(0.37
5)を減算することによって得た量に等しい。これは正
の値(0.3125)であるので、商Qの次のビット
は”1”である。次の命令サイクルでは、部分剰余の符
号ビットが反転され、そして結果の”1”ビットがディ
スティネーションレジスタQに格納される。
【0044】第3命令サイクルでは、先の命令サイクル
からの部分剰余PR(2)は左に1ビットシフトされ、
そしてこのシフトされた部分剰余の3最上位ビットから
除数が減算される。結果の部分剰余は正(0.125)
であるので、商の最下位ビットは”1”である。次の命
令サイクルでは、部分剰余の符号ビットが反転され、そ
して結果の”1”ビットがディスティネーションレジス
タQに格納される。
【0045】このように、期待商011(0.75)が
得られ、そして期待剰余100は最終計算剰余値を左へ
1ビットシフトすることによって得られる。
【0046】2Nビットの被除数をNビットの除数で除
算することに関して上述した手順は、次の疑似コード手
順によって表すことができる。
【0047】2N/N正数除算手順のための疑似コード 1) 2Nビット被除数のN最上位ビットからNビット
除数を減算して、第1部分剰余PR(1)を生成する。
【0048】PR(1)>0であれば{商Qの最上位ビ
ットを1にセット} そうでなければ{商Qの最上位ビットを0にセット} 2) 下記をi=1からN−1までの間についてN−1
回繰返す: PR(i)≧0であれば{PR(i)を左に1ビットシ
フトし、シフトされた部分剰余のN最上位ビットからN
ビット除数を減算してPR(i+1)を生成する。
【0049】PR(i+1)>0であれば{Qの次の最
上位ビット=1にセット} そうでなければ{Qの次の最上位ビット=0にセッ
ト}} そうでなければ{ /*PR(i)<0*/PR(i)
を左に1ビットシフトし、シフトされた部分剰余のN最
上位ビットにNビット除数を加算してPR(i+1)を
生成する。
【0050】PR(i+1)>0であれば{Qの次の最
上位ビット=1にセット} そうでなければ{Qの次の最上位ビット=0にセッ
ト}} 3) PR(N)≧0であれば{PR(N)を左に1ビ
ットシフト。除算操作の剰余値はシフトされたPR
(N)のN最上位ビットと等しい。
【0051】} そうでなければ{ /*PR(N)<0*/PR(N)
を左に1ビットシフトし、除数を左に1ビットシフト
し、そして1ビット左シフトNビット除数をシフト部分
剰余のN最上位ビットに加算。結果値のN最上位ビット
は除算操作の剰余値として出力される。
【0052】} 符号付き数に対する除算操作 上述の除算手順を拡張して符号付き数を取扱うことは、
比較的容易である。拡張除算手順は、部分剰余の絶対値
が除数の絶対値より小さくなるまで、手順の各段階で部
分剰余の絶対値を低減する。下記の説明では、すべての
被除数、除数、商および剰余は、2の補数になってい
る。被除数と除数の両者は正あるいは負であり得るの
で、除算に対して符号付き値の4つの可能な組合わせが
ある。
【0053】除数が正である場合を考えてみる。部分剰
余PR(i+1)は、除算手順の各段階で、先行部分剰
余PR(i)に除数を加算する、あるいは先行部分剰余
PR(i)から除数を減算することによって生成され
る。決定すべきことは、(1)この段階から得られる商
ビットQ(i+1)は何か、および(2)PR(i+
2)を生成するための次の操作は何か、ということであ
る。被除数が正である場合、これら2質問に対する答え
は、本明細書の前節で解答されている。すなわち、PR
(i+1)が正であれば、Q(i+1)=1であり、ま
た次の操作は減算である;そしてPR(i+1)が負で
あれば、Q(i+1)=0であり、また次の操作は加算
である。
【0054】被除数が負で、除数が正である場合、生成
される商ビットおよび次のALU操作は下記のように決
定される。部分剰余PR(i+1)が負であれば、Q
(i+1)=0、そして次の操作は加算であって、正の
除数を加算することによって負の部分剰余PR(i+
1)の絶対値を低減する。部分剰余PR(i+1)が正
であれば、Q(i+1)=1、そして次の操作は減算で
あって、正の除数を減算することによって負の部分剰余
PR(i+1)の絶対値を低減する。
【0055】次に、除数が負で、被除数が正である場合
を考えてみる。部分剰余PR(i+1)が正であれば、
部分剰余の絶対値を低減するための次の操作は加算であ
り、なぜならば、負の数を正の剰余に加算することによ
って部分剰余の絶対値を低減するからで、そして次の商
ビットQ(i+1)=0である。部分剰余PR(i+
1)が負であれば、部分剰余の絶対値を低減するための
次の操作は減算であり、なぜならば、負の剰余から負の
数を減算することによって部分剰余の絶対値を低減する
からで、そして次の商ビットQ(i+1)=1である。
【0056】除数および被除数の両者が負である場合、
部分剰余PR(i+1)が正であれば、部分剰余の絶対
値を低減するための次の操作は加算であり、なぜなら
ば、負の数を正の剰余に加算することによって部分剰余
の絶対値を低減するからで、そして次の商ビットQ(i
+1)=0である。部分剰余PR(i+1)が負であれ
ば、部分剰余の絶対値を低減するための次の操作は減算
であり、なぜならば、負の剰余から負の数を減算するこ
とによって部分剰余の絶対値を低減するからで、そして
次の商ビットQ(i+1)=1である。
【0057】
【表1】
【0058】表1は上記の説明を要約している。表1を
詳細に見ると、商ビットQ(i+1)および次の操作
は、除数の符号ビットおよび部分剰余PR(i+1)の
符号ビットによってのみ決定されており、そして被除数
の符号ビットはこれらの決定には無関係であることが理
解される。
【0059】
【表2】
【0060】表2は、被除数符号ビット欄を取除き、そ
して減算を”0”で、加算を”1”で表すことによっ
て、表1から得られる。表2は、除数および部分剰余P
R(i+1)の符号ビットに対して排他的−NORを実
行することによって、Q(i+1)が得られることを示
す。実行しようとする次の操作はQ(i+1)の反転に
よって特定される。
【0061】2Nビットの符号付き被除数をNビットの
符号付き除数で除算する上述の手順は、次の疑似コード
手順によって表すことができる。
【0062】2N/N符号付き数の除算手順のための疑
似コード 1) 除数の符号ビットおよび被除数の符号ビットの排
他的ORを計算し、そして結果値を商の最上位ビットお
よびここではQOPと称するフラグに割当てる。
【0063】QOP(1)=Q(1)=XOR (除数の符号ビット、被除数の符号ビット) PR(1)=被除数 2) i=1からN−1の間について、N−1回、下記
を繰返す: QOP(i)=0であれば{PR(i)を左に1ビット
シフトし、そしてシフトされた部分剰余のN最上位ビッ
トからNビット除数を減算してPR(i+1)を生成す
る。
【0064】} そうでなければ{ /*QOP(i)=1*/PR
(i)を左に1ビットシフトし、そしてシフトされた部
分剰余のN最上位ビットにNビット除数を加算して、P
R(i+1)を生成する。
【0065】} Q(i+1)=XOR(除数の符号ビット、PR(i+
1)の符号ビット) QOP=〜Q(i+1) 3) QOP(N)=0であれば{PR(N)を左に1
ビットシフト。除算操作の剰余値はシフトPR(N)の
N最上位ビットである。
【0066】} そうでなければ{ /*QOP(N)=1*/PR
(N)を左に1ビットシフトし、除数を左に1ビットシ
フトし、そしてシフトされた部分剰余のN最上位ビット
に1ビットシフトNビット除数を加算。結果値のN最上
位ビットは除算操作の剰余値として出力される。
【0067】} 図4は、6ビットの負の被除数が正の3ビット除数によ
って除算される実施例を示す。上述の除算手順がこの実
施例でも利用されている。この実施例での被除数は−
0.6875(101010)であり、そして0.75
(011)で除算される。従って、除算手順によって生
じる商および剰余は、それぞれ、−1(100)および
0.0625(000010)になるはずである。
【0068】第1命令サイクルでは、被除数と除数の符
号ビットの排他的ORが計算される。結果は値1であっ
て、商は負であることを表す。この結果はQOPフラグ
レジスタに格納されて、正の除数を加算することによっ
て除算された負の絶対値を低減するため、次の操作は加
算であることを表す。XOR計算(1)の結果もまた、
次の命令サイクルの開始時に、商の最上位ビットQ
(1)に格納される。
【0069】第2命令サイクルでは、被除数PR(1)
は左に1ビットシフトされる。QOPは1であるので、
除数はシフトPR(1)値の3最上位ビットに加算され
る。結果のPR(2)は負(101100)である。次
に、PR(2)と除数の符号ビットの排他的ORが計算
される。結果は値1であり、これは次の操作は加算であ
ることを表す。従って、XOR計算の結果はQOPフラ
グレジスタに格納されて、次の計算サイクルで実行され
る操作は加算になることを表示し、そしてXOR例算結
果の逆が商の次のビットQ(2)に格納される。
【0070】第3命令サイクルでは、部分剰余PR
(2)は左へ1ビットシフトされる。QOPは1である
ので、除数はシフトPR(2)値の3最上位ビットに加
算される。結果のPR(3)は110000の値を持っ
ており、これは負である。次に、PR(3)と除数の符
号ビットの排他的ORが計算される。結果は値1であ
り、これは次の操作は加算であることを表す。XOR計
算の結果はQOPフラグレジスタに格納されて、最後の
計算サイクルで実行しようとする操作は加算になること
を表示し、そしてXOR例算結果の逆は商の次のビット
Q(3)に格納される。生成される3ビットの商は、期
待通り、−1(100)である。
【0071】第4命令サイクルでは、部分剰余PR
(3)が左へ1ビットシフトされる。QOPは1である
ので、1ビット左シフト除数はシフトPR(3)値の2
最上位ビットに加算される。結果(010000)の3
最上位ビットは期待剰余(010)であり、それは00
0010の最下位ビットである(それは0.0625で
ある)。
【0072】符号付き2Nビット被除数、除数および商
に対する除算操作 これまでの説明で、被除数が2Nビット長であり、かつ
除数、商および剰余がすべてNビット長である除算を実
行する方法を述べてきた。
【0073】被除数、除数および商がすべて2Nビット
長である除算は、被除数と除数の精度と同じ精度が商に
とって必要とされる場合に、有用である。この除算中、
被除数は、最下位2Nビットがすべて0である4Nビッ
ト値として扱われる。これは、各DIV_BおよびDI
V_C操作中、0ビットをキャリ(桁上げ)レジスタか
ら被除数の最下位ビット位置にシフトすることによって
達成される。被除数レジスタにおける結果の2Nビット
剰余値は実際は4Nビット値であり、そこでは上位の2
Nビットは0であり、そして下位の2Nビットは被除数
レジスタに残された剰余値である。多くのディジタル信
号処理の利用例において、2N/2N除算手順によって
生成された剰余値は、非常に小さいので無意味であると
考えられ、従って切捨てられるであろう。
【0074】2Nビットの符号付き被除数を2Nビット
の符号付き除数で除算する上述の手順は、下記の擬似コ
ード手順によって表すことができる。
【0075】2N/2N符号付き数除算手順のための擬
似コード 1) 除数の符号ビットおよび被除数の符号ビットの排
他的ORを計算し、そして結果値を商の最上位ビットお
よびここではQOPと称するフラグに割当てる。
【0076】QOP(1)=Q(1)=XOR(除数の
符号ビット、被除数の符号ビット) PR(1)=被除数 2) 下記をi=1から2N−1までの間、2N−1回
繰返す: QOP(i)=0であれば{PR(i)を左へ1ビット
シフトし、そして2Nビット長シフト部分剰余から2N
ビット除数を減算してPR(i+1)を生成。
【0077】} そうでなければ{ /*QOP(i)=1*/PR
(i)を左へ1ビットシフトし、そして2Nビット除数
を2Nビット長シフト部分剰余に加算して、PR(i+
1)を生成。
【0078】} Q(i+1)=XOR(除数の符号ビット、PR(i+
1)の符号ビット) QOP(i+1)=〜Q(i) 除算手順のハードウェア構成 図2および図5、6そして7では、本発明のDSPは3
除算基本命令、及び標準「桁上げ付き循環」基本命令
(ここでは”<<RC”命令」と称される)を与えて、
ALU1712およびBPU1714の全必要操作を制
御し、上述の除算手順を実現すると共に、4Nビット被
除数を2Nビット除数で除算して2Nビット商と2Nビ
ット剰余を生成するハードウェアに基づく手順を実現す
る。ここではDIV_A、DIV_BおよびDIV_C
と称される3基本命令の各々は、1命令サイクルでその
操作を完了し、そして命令サイクルにつき1商ビットを
計算する(4Nビット被除数を2Nビット除数で除算す
る場合を除く、この場合、各商ビットを計算するために
2命令サイクルが必要とされる)。3基本除算命令(お
よび倍精度除算のためには桁上げ付き循環命令)を、D
SPのプログラムメモリ1400に格納された命令プロ
グラムにおいて適切に組合わせることによって、異なる
ビット精度を有する3種類の除算機能を実行することが
できる。
【0079】1.2Nビット被除数をNビット除数で除
算して、Nビット商とNビット剰余を生成する。
【0080】2.2Nビット被除数を2Nビット除数で
除算して、2Nビット商を生成し、剰余はない。
【0081】3.4Nビット被除数を2Nビット除数で
除算して、2Nビット商と2Nビット剰余を生成する。
【0082】図2および5では、DIV_A命令によっ
て実行装置1700が以下のように構成される(ローカ
ル実行装置(EXU)コントローラ1750からの制御
信号によって)。
【0083】(A) DIV_A指令によってパラメー
タとして特定された、レジスタ1702−1709の2
つの別個のもの、SRC1およびSRC2は、内部デー
タバス1734および1735に現れる、そして(B)
SRC1およびSRC2値の符号ビット(すなわち、
ビット47、但し、ビット0およびビット55はそれぞ
れ両データ56ビットワードの最下位ビットおよび最上
位ビットである)は、XORゲート1961によって排
他的ORされ、そしてXORゲート1961によって生
成された1ビット結果は、QBおよびQOP条件コード
ビットレジスタ1674−6および1674−7の両方
に格納される。
【0084】図2および6では、DIV_B命令によっ
て実行装置1700が以下のように構成される(ローカ
ル実行装置(EXU)コントローラ1750からの制御
信号によって)。
【0085】(A) DIV_B指令によってパラメー
タとして特定された、レジスタ1702〜1709の2
つの別個のもの(ここではSRC1およびSRC2と称
される)は、内部データバス1734および1735に
現れる; (B) レジスタ1702〜1709の第3の別個のも
の(ここではDSTと称される)は、内部データバス1
737に現れる; (C) ALU1712のAポートシフタ1960はS
RC1を左へ1ビットシフトし、C(桁上げ)条件コー
ドビットレジスタ1674−0の内容を、ALUのAポ
ートによって受け入れられたデータ値の最下位ビットに
入れる。ALUのBポートはSRC2値を受け入れる; (D) QOPが1である場合、ALUはSRC2値を
左シフトSRC1値に加算し、そうでなければ、SRC
2値を左シフトSRC1値から減算する。ALUによっ
て生成された出力値(すなわち、結果)はSRC1デー
タレジスタに戻される; (E) BPU1714はDST値を左へ1ビットシフ
トし、そしてQB条件コードビットレジスタ1674−
6の内容(すなわち、前の命令サイクルで生成されたQ
B値)をBPUによって出力されたデータ値の最下位ビ
ットに入れる。BPUによって生成された出力値はまた
DSTレジスタに戻される;そして (F) ALUによって生成された出力値およびSRC
2値(バス1735上)の符号ビットはXORゲート1
963によって排他的ORされる。XORゲート196
3によって生成された1ビット結果は、QOP条件コー
ドビットレジスタ1674−7に格納され、そしてXO
Rゲート出力の逆はQB条件コードビットレジスタ16
74−6に格納される。
【0086】図2および7では、DIV_C命令によっ
て実行装置1700が以下のように構成される(ローカ
ル実行装置(EXU)コントローラ1750からの制御
信号によって)。
【0087】(A) DIV_C指令によってパラメー
タとして特定された、レジスタ1702〜1709の2
つの別個のもの(ここではSRC1およびSRC2と称
される)は、内部データバス1734および1735に
現れる; (B) レジスタ1702〜1709の第3の別個のも
の(ここではDSTと称される)は、内部データバス1
737に現れる; (C) ALU1712のAポートシフタ1960はS
RC1を左へ1ビットシフトし、C(桁上げ)条件コー
ドビットレジスタ1674−0の内容を、ALUのAポ
ートによって受け入れられデータ値の最下位ビットに入
れる。ALUのBポートシフタはSRC2を左へ1ビッ
トシフトし、そしてBポートは左シフトSRC2値を受
け入れる、 (D) QOPが1である場合、ALUは左シフトSR
C2値を左シフトSRC1値に加算し、そうでなけれ
ば、左シフトSRC1値を出力する。ALUによって生
成された出力値(すなわち、結果)はまたSRC1デー
タレジスタに戻される、 (E) BPU1714はDST値を左へ1ビットシフ
トし、そしてQB条件コードビットレジスタ1674−
6の内容(すなわち、前の命令サイクルで生成されたQ
B値)を、BPUによって出力されたデータ値の最下位
ビットに入れる。BPUによって生成された出力値はま
たDSTレジスタに戻される;そして (F) ”0”値はQBおよびQOP条件コードビット
レジスタ1674−6および1674−7に格納され
る。
【0088】図2および8では、<<RC命令(桁上げ
付き循環)によって実行装置1700が以下のように構
成される(ローカル実行装置(EXU)コントローラ1
750からの制御信号によって)。
【0089】(A) <<RC指令によってパラメータ
と特定された、レジスタ1702〜1709のレジスタ
の1つ(ここではSRC1Xと称される)は、内部デー
タバス1737に現れる;そして (B) BPU1714はSRC1X値を左に循環さ
せ、C(桁上げ)条件コードビットレジスタ1674−
0に格納しようとする入力SRC1X値の符号データビ
ット(すなわち、レジスタxd1 1703のようなデ
ータレジスタのビット47)を格納し、そして循環され
たSRC1X値をまたSRC1Xレジスタの最下位に戻
す。
【0090】符号付き固定小数点数に対するアセンブリ
ー言語除算ルーチン 次に、符号付き固定小数点数に対する3種類の除算計算
を実行するためのアセンブリー言語除算ルーチンを説明
する。好ましい実施例のDSPのユーザが符号付き固定
小数点数について除算を実行するためには、ユーザは、
DSPのプログラムメモリ1400(または外部命令メ
モリ)に、DIV_A、DIV_B、DIV_Cおよび
<<RC命令を有効に利用して除算を実行するための適
切な命令シーケンスを格納しなければならない。
【0091】下記の全部の例において、被除数と除数
は、被除数の絶対値が除数の絶対値より小さくなるよう
に正規化されていると想定される。代表的には、正規化
は以下のような短いルーチンを利用して達成される。
【0092】 dmsb xd0、a0 /*被除数xd0のMSBを検出*/ dmsb yd0、a1 /*除数yd0のMSBを検出*/ xd0=xd0<<| a0 /*被除数を正規化*/ yd0=yd0<<| a1 /*除数を正規化*/ a1=a1−a0 /*非正規化量を計算*/ xd0=xd0<<a −1 /*算術右シフトで被除数を調整*/ /*|xd0|<|yd0|を保証するために / a1=a1−1 /*非正規化量を調整*/ 但し、”dmsb”は「MSBを検出」命令、”<<
|”は左循環命令、および”<<a”は算術循環命令、
そして算術循環命令に対する負のパラメータは右シフト
操作を表す。
【0093】このルーチンによって被除数と除数の最上
位ビットの位置を検出し、被除数と除数を各々の最上位
ビットが同じビット位置になるようにシフトし、被除数
が除数より小さいことを保証するために、被除数を1位
置だけシフトバックし、そして被除数と除数の正規化を
補償するために、商がシフトされねばならないビット位
置の数を計算する。
【0094】被除数と除数の正規化を補償する、(除算
が完了してから実行される)対応後処理ルーチンは、下
記の通りである。
【0095】a0=a0<<l a1 2Nビット被除数およびNビット除算に対する除算ルー
チン 2Nビット符号付き被除数をNビット符号付き除数で除
算するための除算ルーチンは下記の通りである。
【0096】 clear xd1 /*条件コードレジスタのCフラグを クリヤ*/ DIV_A(xd0、yd0) /*初期QBとQOP値を計算*/ Repeat L1 N−1 /*DIV_B命令に対する繰返し値 を格納*/ /*Nは代表的には16、24または 32の値である*/ DIV_B(xd0、yd0、a0) /*この命令はN−1回繰返される* / L1:DIV_C(xd0、yd0、a0) xd0レジスタは先ず最初は、被除数を格納し、そして
除算ルーチンの完了時に、剰余値をそのN最上位ビット
に格納する。aOレジスタは商をそのN最下位ビットに
格納する。8個のデータレジスタ1702〜1709の
うちのいずれの3つでも、3つの異なるレジスタが利用
されるなら、被除数、除数および商に対して利用するこ
とができる。
【0097】図9、10、11および12は上記除算ル
ーチンの数値的な実行例を示し、ここでは、簡単にする
ためにN=3の値が使用されている。図9では、正の2
Nビット被除数が正のNビット除数で除算される。図1
0では、負の2Nビット被除数が正のNビット除数で除
算される。図11では、正の2Nビット被除数が負のN
ビット除数で除算される。図12では、負の2Nビット
被除数が負のNビット除数で除算される。
【0098】2Nビット被除数と2Nビット除数に対す
る除算ルーチン 2Nビット符号付き被除数を2Nビット符号付き除数で
除算するための除算ルーチンは下記の通りである。
【0099】 clear xdl /*条件コードレジスタのCフラグを クリヤ*/ DIV_A(xd0、yd0) /*初期QBとQOP値を計算*/ Repeat L2 2N−1 /*DIV_B命令に対する繰返し値 を格納*/ DIV_B(xd0、yd0、a0) /*この命令はN−1回繰返される* / L2:DIV_C(xd0、yd0、a0) xd0レジスタは先ず最初は被除数を格納する。除算ル
ーチン後のxd0レジスタに残された値は、4Nビット
剰余値の下位2Nビットである(その上位2Nビットは
すべて0である)が、その剰余値は通常、ディジタル信
号処理の利用例では使用されない。A0レジスタは2N
ビット商を格納する。3つの異なるレジスタが利用され
るならば、8個のデータレジスタ1702〜1709の
いずれの3つでも、被除数、除数および商のために利用
することができる。
【0100】図13Aおよび13Bは上記除算ルーチン
の数値的な実施例を示し、ここでは、簡単にするため
に、N=3の値が使用される。被除数と除数は共に6ビ
ット長であるので、DIV_B命令は5回実行され、そ
の後にDIV_C命令が1回実行される。剰余値が生じ
なくても、DIV_C命令は実行されねばならないが、
それはDIV_C命令がディスティネーションレジスタ
に(最後のDIV_B命令によって計算された)最後の
商ビットを格納するからである。
【0101】4Nビット被除数と2Nビット除数に対す
る除算ルーチン 符号付き4Nビット被除数を符号付き2Nビット符号付
き除数で除算するための除算ルーチンは下記の通りであ
る。
【0102】 DIV_A(xd0、yd0) /*初期QBとQOP値を計算*/ xd1=xd1<<RC1 /*1ビット位置だけ桁上げしてxd 1を循環*/ Repeat L3 2N−1 /*DIV_B命令に対する繰返し値 を格納*/ DIV_B(xd0、yd0、a0) xd1=xd1<<RC1 L3:DIV_C(xd0、yd0、a0) xd0とxd1レジスタは先ず最初は、倍精度被除数を
格納する。yd0レジスタは除数を格納する。除算ルー
チン後にxd0レジスタに残された値は2Nビット剰余
値である。a0レジスタは2Nビット商を格納する。4
つの異なるレジスタが利用されるならば、8個のデータ
レジスタ1702〜1709のうちのいずれの4つで
も、被除数、除数および商のために利用することができ
る。
【0103】<<RC桁上げ付き循環命令の目的は、D
IV_BおよびDIV_C命令の各実行ごとに、C条件
コードビットレジスタを介して、拡張被除数値の最上位
ビット(すなわちビット47)を、xd1からxd0レ
ジスタの最下位ビット(すなわちビット0)にシフトす
ることである。
【0104】図14A、14B、14Cは、上記除算ル
ーチンの数値的な実施例を示し、ここでは、簡単にする
ために、N=3の値が利用される。被除数は12ビット
長であり、除数は6ビット長であるので、DIV_Bと
<<RC命令が連続して5回実行され(すなわち、繰返
しループにおいて合計10命令サイクルの間)、その後
にDIV_C命令が1回実行される。第1桁上げ付き循
環命令によって、C条件コードビットレジスタに格納さ
れた先在ビット値を、xdlの最下位ビットに格納させ
る間、そのビットはxd0被除数レジスタにシフトされ
ることはなく、従って計算に影響を与えることはない、
ということに注目されたい。
【0105】他の実施例 以上、本発明を幾つかの特定的な実施例に関して述べて
きたが、上記説明は本発明の例示であって、本発明を限
定しようとするものではない。添付の特許請求の範囲に
よって定義されるように、本発明の真の精神および範囲
から逸脱することなく、種々の変形例を当業者は想到す
ることができる。
【0106】例えば、好ましい実施例では、桁上げ付き
循環命令はBPUによって実行されるが、他の実施例で
は、キャリビットフラグレジスタに、被除数の下位2N
ビットの最上位ビットを供給する「算術1ビット左シフ
ト」命令を利用して、ALUによって実行することがで
きる。4Nビット被除数による除算操作に対して、専用
レジスタを利用して(キャリビットレジスタ1674−
0の代わりに)、下位被除数レジスタから上位被除数レ
ジスタへ、ビットを移送することができる。他の実施例
では、QOPとQBの値は、ALU入力値SRC1とS
RC2から生成することができるし、QOPとQBの値
をビットレジスタに格納する必要もなく、また、DIV
_A命令を使用することもなく、直ちに利用することが
できる。さらに、単精度数におけるビット数、N、は好
ましい実施例では16、24および32であるが、他の
実施例では、Nは代表的には、16あるいはそれより大
きい数になるであろう。
【0107】
【発明の効果】本発明によれば、倍精度除算を効率的に
高速で実行できる。
【0108】また、本発明によれば、倍精度除算のため
の直接ハードウェア支援が提供され、そして各商ビット
の計算に2命令サイクルの速度で倍精度除算を実行する
ことが可能になる。
【図面の簡単な説明】
【図1】ディジタル信号処理プロセッサでの利用に適し
た演算実行装置のブロック図である。
【図2】単精度および倍精度除算を支援する追加回路を
有する、図1の演算実行装置のブロック図である。
【図3】特定正除数により特定正被除数を除算するため
に、本発明によって実行される操作シーケンスに対応す
るフロー図である。
【図4】特定正除数により特定負被除数を除算するため
に、本発明によって実行される操作シーケンスに対応す
るフロー図である。
【図5】第1の所定の除算命令を実行するよう構成され
た本発明の実行装置の概略図である。
【図6】第2の所定の除算命令を実行するよう構成され
た本発明の実行装置の概略図である。
【図7】第3の所定の除算命令を実行するよう構成され
た本発明の実行装置の概略図である。
【図8】桁上げ付き循環命令を実行するよう構成された
本発明の実行装置の概略図である。
【図9】特定正Nビット除数により特定正2Nビット被
除数を除算するために、本発明によって実行される操作
のフロー図である。
【図10】特定正Nビット除数により特定負2Nビット
被除数を除算するために、本発明によって実行される操
作のフロー図である。
【図11】特定負Nビット除数により特定正2Nビット
被除数を除算するために、本発明によって実行される操
作のフロー図である。
【図12】特定負Nビット除数により特定負2Nビット
被除数を除算するために、本発明によって実行される操
作のフロー図である。
【図13A】特定符号付き2Nビット除数により特定の
符号付き2Nビット被除数を除算するために、本発明に
よって実行される操作のフロー図である。
【図13B】特定符号付き2Nビット除数により特定の
符号付き2Nビット被除数を除算するために、本発明に
よって実行される操作の図13Aに続くフロー図であ
る。
【図14A】特定符号付き2Nビット除数により特定符
号付き4Nビット被除数を除算するために、本発明によ
って実行される操作のフロー図である。
【図14B】特定符号付き2Nビット除数により特定符
号付き4Nビット被除数を除算するために、本発明によ
って実行される操作の図14Aに続くフロー図である。
【図14C】特定符号付き2Nビット除数により特定符
号付き4Nビット被除数を除算するために、本発明によ
って実行される操作の図14Bに続くフロー図である。
【符号の説明】
1700 演算実行装置 1102 Xデータバス 1104 Yデータバス 1600 デコーダ回路 1674 条件コードレジスタ(ccr) 1700 実行装置 1702〜1709 レジスタ 1712 算術論理演算装置(ALU) 1714 ビット処理装置(BPU) 1716 乗算装置(MU) 1720,1722 シフト側レジスタ 1730〜1732 セレクタ 1734〜1737 56ビット内部バス 1738〜1740 セレクタ 1742 56ビットALUDSバス 1744 56ビットMU/BPUDSTバス 1750 ローカル実行装置(EXU)コントローラ 1752 入力シフタ 1753 出力シフタ 1961 排他的OR(XOR)ゲート 1962 ANDゲート 1963 XORゲート 1964 ANDゲート 1966 第1マルチプレクサ 1967 第2マルチプレクサ

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 符号付き4N(Nは正の整数)ビット被
    除数の第1部分と第2部分、符号付き2Nビット除数、
    および符号付き2Nビット商を格納するデータレジスタ
    であって、前記被除数、除数および商はそれぞれ符号ビ
    ットを含んでいるデータレジスタと、 前記データレジスタに結合され、前記データレジスタか
    ら前記符号付き4Nビット被除数の前記第1部分および
    前記符号付き2Nビット除数を受信し、特定の算術演算
    を実行して符号ビットを持つ出力値を生成し、そして前
    記データレジスタに格納された前記符号付き4Nビット
    被除数の前記第1部分を前記出力値と置換する算術論理
    演算装置(ALU)と、 前記ALUに結合され、前記符号付き2Nビット除数の
    前記符号ビットおよび前記出力値と前記符号付き4Nビ
    ット被除数の前記第1部分とのうちの1つの前記符号ビ
    ットに従って、操作ビット値QOPと商ビットQBを生
    成する論理回路と、 前記データレジスタから前記符号付き2Nビット商を受
    信し、前記商ビットQBを前記受信値にシフトして更新
    した商値を生成し、前記更新した商値を前記データレジ
    スタに格納するシフト回路と、 前記ALU、シフト回路および論理回路に結合され、一
    連の命令サイクルで、一連の所定の命令を実行して前記
    商値を生成し、かつ前記データレジスタに格納する実行
    コントローラであって、前記ALUと論理回路により前
    記操作ビット値QOPと商ビットQBを生成させ、前記
    操作ビット値QOPに従って前記被除数の前記第1部分
    を更新させ、前記商ビットQBを前記商値にシフトさせ
    て前記更新した商値を生成し、かつ前記更新した商値を
    前記データレジスタに格納し、そして前記被除数値の前
    記第2部分から1ビットを前記被除数値の前記第1部分
    に転送させる所定の命令セットを繰返し実行することを
    含む、実行コントローラとを備えており、 それによって前記命令セットを実行するたびに商ビット
    を生成し、そして前記被除数の1ビットを前記被除数の
    第2部分から前記第1部分へ転送することを特徴とする
    倍精度除算回路。
  2. 【請求項2】 データ経路Nビット以上の幅を持つデー
    タバスと、各々が2Nビット値を格納するデータレジス
    タであって、このデータレジスタの第1と第2のものは
    それぞれ、符号付き倍精度4Nビット被除数の上半分と
    下半分を格納し、前記データレジスタの第3のものは符
    号付き2Nビット除数を格納し、そして前記データレジ
    スタの第4のものは符号付き2Nビット商を格納し、前
    記データレジスタは前記データバスに結合されてデータ
    値を前記データレジスタへ、およびそこから転送し、そ
    して各データレジスタによって格納された前記2Nビッ
    ト値は符号ビットを含んでいる、データレジスタと、 前記データレジスタに結合され、前記第1および第3デ
    ータレジスタからソース値を受信し、そして特定算術演
    算を実行して符号ビットを持つ出力値を生成する算術論
    理演算装置(ALU)と、 前記ALUに結合され、前記ALUで受信した除数値の
    符号ビットおよび前記ALUによって生成された出力値
    の符号ビットを受信し、そして所定の基準に従って前記
    符号ビットから操作ビット値QOPと商ビットQBを生
    成する論理回路と、 前記操作ビット値QOP、商ビットQBおよびデータビ
    ットをそれぞれ格納する第1、第2および第3ビットレ
    ジスタと、 前記第4データレジスタに格納された値を受信し、前記
    受信値をシフトし、かつ前記第2ビットレジスタに格納
    された前記商ビットQBを前記受信値に挿入して更新し
    た商値を生成し、そして前記更新した商値を前記第4レ
    ジスタに格納するビット処理装置(BPU)と、 前記ALU、BPUおよび論理回路に結合され、一連の
    命令サイクルで一連の所定の命令を実行して前記商値を
    生成し、かつそれを前記第4データレジスタに格納し、
    除算命令と循環命令を複数回交互に実行することを含む
    実行コントローラであって、前記除算命令によって前記
    ALUと論理回路に前記操作ビット値QOPと商ビット
    QBを生成させ、前記QOPとQB値を前記第1と第2
    ビットレジスタに格納させ、そして前記第3ビットレジ
    スタに格納された前記データビットを前記第1データレ
    ジスタに格納された前記2Nビット値にシフトさせ、そ
    して前記BPUにより、先行する前記除算命令の実行中
    に前記第2ビットレジスタに格納された前記商ビットQ
    Bを前記更新した商値に挿入し、かつ前記更新した商値
    を前記第4レジスタに格納させ、さらに前記循環命令に
    よって前記ALUとBPUとのうちの1つが前記第2デ
    ータレジスタに格納された前記2Nビット値を循環さ
    せ、かつ前記第2レジスタに格納された前記2Nビット
    値の所定のビットを前記第3ビットレジスタに格納させ
    る、実行コントローラとを備え、 それによって交互の命令サイクルにおいて、商ビットが
    生成され、そして前記被除数の1ビットは前記第2デー
    タレジスタから前記第1データレジスタに転送されるこ
    とを特徴とする倍精度除算回路。
  3. 【請求項3】 倍精度除算を実行する方法であって、 第1と第2のデータレジスタのそれぞれに符号付き4N
    ビット被除数の第1部分と第2部分を格納し、符号付き
    2Nビット除数を第3データレジスタに格納し、そして
    符号付き2Nビット商を格納するために第4データレジ
    スタを与え、前記被除数、除数および商はそれぞれ符号
    ビットを含んでいる段階と、 前記データレジスタに結合され、前記データレジスタか
    ら前記符号付き4Nビット被除数の前記第1部分と前記
    符号付き2Nビット除数を受信し、特定の算術演算を実
    行して符号ビットを持つ出力値を生成し、そして前記デ
    ータレジスタに格納された前記符号付き4Nビット被除
    数の前記第1部分を前記出力値と置換する算術論理演算
    装置(ALU)を与える段階と、 前記ALUに結合され、前記符号付き2Nビット除数の
    前記符号ビットおよび前記出力値と前記符号付き4Nビ
    ット被除数の前記第1部分とのうちの1つの前記符号ビ
    ットに従って、操作ビット値QOPと商ビットQBを生
    成する論理回路を与える段階と、 一連の命令サイクルで一連の所定の命令を実行して商値
    を生成し、かつその商値を前記データレジスタに格納す
    る段階であって、前記ALUと論理回路により、前記操
    作ビット値QOPと商ビットQBを生成させ、前記操作
    ビット値QOPに従って前記被除数の前記第1部分を更
    新させ、前記商ビットQBを前記商値にシフトさせて更
    新した商値を生成し、かつ前記更新した商値を前記デー
    タレジスタに格納し、そして前記被除数値の前記第2部
    分から前記被除数の前記第1部分に1ビットを転送させ
    る所定の命令セットを繰返し実行することを含む段階と
    から成り、 それによって前記命令セットの実行のたびに商ビットを
    生成し、かつ前記被除数の1ビットを前記被除数の前記
    第2部分から前記第1部分へ転送することを特徴とする
    倍精度除算方法。
  4. 【請求項4】 倍精度除算を実行する方法であって、 符号付き倍精度4Nビット被除数を第1と第2のデータ
    レジスタに格納し、符号付き2Nビット除数を第3デー
    タレジスタに格納し、そして符号付き2Nビット商を格
    納するために第4データレジスタを与える段階と、 前記データレジスタに結合され、前記第1と第3のデー
    タレジスタからソース値を受信し、そして特定の算術演
    算を実行して符号ビットを持つ出力値を生成する算術論
    理演算装置(ALU)を与える段階と、 前記ALUに結合され、前記ALUで受信した除数値の
    符号ビットと前記ALUによって生成された出力値の符
    号ビットを受信し、そして所定の基準に従って前記符号
    ビットから次の操作ビット値QOPおよび商ビットQB
    を生成する論理回路を与える段階と、 一連の命令サイクルで一連の所定の命令を実行して前記
    商値を生成し、かつその商値を前記第4データレジスタ
    に格納し、そして除算命令と循環命令を複数回、交互に
    実行することを含む段階とから成り、 前記除算命令を実行する段階は、第1ビットレジスタに
    格納されたデータビットを前記第1データレジスタに格
    納された前記2Nビット値にシフトする段階と、前記A
    LUと論理回路によって前記次の操作ビット値QOPと
    商ビットQBを生成する段階と、前記QOPとQB値を
    それぞれ、第2ビットレジスタと第3ビットレジスタに
    格納する段階と、前記QOPとQB値を格納する前に、
    先行の前記除算命令の実行中に前記第3ビットレジスタ
    に格納された前記商ビットQBを前記更新した商値に挿
    入する段階と、前記更新した商値を前記第4レジスタに
    格納する段階とを含んでおり、 前記循環命令を実行する段階は、前記第2データレジス
    タに格納された前記2Nビット値を循環する段階と、前
    記第2データレジスタに格納された前記2Nビット値の
    所定のビットを前記第1ビットレジスタに格納する段階
    を含んでおり、従って前記被除数の異なるビットは、前
    記循環命令の連続実行の各々の間に、前記第2データレ
    ジスタから前記第1データレジスタに転送されることを
    特徴とする倍精度除算方法。
JP22377994A 1993-09-27 1994-09-19 倍精度除算回路および方法 Expired - Fee Related JP3418460B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/127,660 1993-09-27
US08/127,660 US5426600A (en) 1993-09-27 1993-09-27 Double precision division circuit and method for digital signal processor

Publications (2)

Publication Number Publication Date
JPH07168697A JPH07168697A (ja) 1995-07-04
JP3418460B2 true JP3418460B2 (ja) 2003-06-23

Family

ID=22431239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22377994A Expired - Fee Related JP3418460B2 (ja) 1993-09-27 1994-09-19 倍精度除算回路および方法

Country Status (2)

Country Link
US (1) US5426600A (ja)
JP (1) JP3418460B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574677A (en) * 1994-11-23 1996-11-12 Exponential Technology, Inc. Adaptive non-restoring integer divide apparatus with integrated overflow detect
US6643677B2 (en) * 1995-06-05 2003-11-04 Kabushiki Kaisha Toshiba Digital arithmetic integrated circuit
US6070180A (en) * 1995-06-05 2000-05-30 Kabushiki Kaisha Toshiba Digital arithmetic integrated circuit
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6006318A (en) * 1995-08-16 1999-12-21 Microunity Systems Engineering, Inc. General purpose, dynamic partitioning, programmable media processor
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
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US6125380A (en) * 1998-04-13 2000-09-26 Winbond Electronics Corporation Dividing method
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US7062657B2 (en) * 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization
US20020061107A1 (en) * 2000-09-25 2002-05-23 Tham Terry K. Methods and apparatus for implementing a cryptography engine
US6711633B2 (en) * 2002-01-30 2004-03-23 International Business Machines Corporation 4:2 compressor circuit for use in an arithmetic unit
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7523152B2 (en) * 2002-12-26 2009-04-21 Intel Corporation Methods for supporting extended precision integer divide macroinstructions in a processor
NZ524378A (en) * 2003-02-24 2004-12-24 Tait Electronics Ltd Binary shift and subtract divider for phase lock loops
US9830150B2 (en) * 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10127015B2 (en) 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction
US10241757B2 (en) * 2016-09-30 2019-03-26 International Business Machines Corporation Decimal shift and divide instruction
JP7036075B2 (ja) * 2019-03-26 2022-03-15 日本電産株式会社 整数除算装置およびモータ制御装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503500A (en) * 1982-02-11 1985-03-05 Texas Instruments Incorporated Microcomputer with bus interchange module
US4498135A (en) * 1982-02-22 1985-02-05 Texas Instruments Incorporated Microcomputer with accumulator addressing
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
US4935867A (en) * 1986-03-04 1990-06-19 Advanced Micro Devices, Inc. Signal processor memory management unit with indirect addressing using selectable offsets and modulo values for indexed address calculations
DE3782819D1 (de) * 1987-06-02 1993-01-07 Itt Ind Gmbh Deutsche Steuerprozessor.
JP3098242B2 (ja) * 1988-07-13 2000-10-16 日本電気株式会社 データ処理装置
JPH0786826B2 (ja) * 1988-07-19 1995-09-20 日本電気株式会社 整数除算回路
US5097435A (en) * 1988-12-24 1992-03-17 Kabushiki Kaisha Toshiba High speed dividing apparatus
US5016210A (en) * 1989-11-15 1991-05-14 United Technologies Corporation Binary division of signed operands

Also Published As

Publication number Publication date
US5426600A (en) 1995-06-20
JPH07168697A (ja) 1995-07-04

Similar Documents

Publication Publication Date Title
JP3418460B2 (ja) 倍精度除算回路および方法
US6564239B2 (en) Computer method and apparatus for division and square root operations using signed digit
US6099158A (en) Apparatus and methods for execution of computer instructions
JP3589719B2 (ja) 算術演算の結果として生じる正および負のオーバーフローのハードウェアによる効率的な取り扱い方法
US4941120A (en) Floating point normalization and rounding prediction circuit
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
JPH04227535A (ja) 除算を行なう装置
JPH0969040A (ja) 推測的演算を有する3つのオーバーラップしたステージにより基数2の平方根演算/除算を行う回路
JPH06202850A (ja) データ処理装置
US6941334B2 (en) Higher precision divide and square root approximations
US5195051A (en) Computation of sign bit and sign extension in the partial products in a floating point multiplier unit
JPH05250146A (ja) 整数累乗処理を行なうための回路及び方法
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
US7016930B2 (en) Apparatus and method for performing operations implemented by iterative execution of a recurrence equation
US5574677A (en) Adaptive non-restoring integer divide apparatus with integrated overflow detect
JPH0250492B2 (ja)
US5867413A (en) Fast method of floating-point multiplication and accumulation
GB2549153B (en) Apparatus and method for supporting a conversion instruction
JPS63123125A (ja) 浮動小数点数の加算装置
US5317531A (en) Apparatus for reducing the size of an arithmetic and logic unit necessary to practice non-restore division
US5576982A (en) Fast significant bit calculator and its application to integer multiplication and division
US5386534A (en) Data processing system for generating symmetrical range of addresses of instructing-address-value with the use of inverting sign value
US6963895B1 (en) Floating point pipeline method and circuit for fast inverse square root calculations
US7237000B2 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
US5208769A (en) Unsigned integer multiply/divide circuit

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080411

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090411

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees