(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022121055
(43)【公開日】2022-08-19
(54)【発明の名称】演算装置及び演算回路
(51)【国際特許分類】
G06F 7/487 20060101AFI20220812BHJP
G06F 7/485 20060101ALI20220812BHJP
【FI】
G06F7/487
G06F7/485
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021018196
(22)【出願日】2021-02-08
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【弁理士】
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】白石 幹雄
(57)【要約】 (修正有)
【課題】面積の小さい演算装置及び演算回路を提供する。
【解決手段】演算装置OPは、第1論理シフタLO1と、第2論理シフタLO2と、第3論理シフタLO3と、第4論理シフタLO4と、第1アンドゲートAG1と、第2アンドゲートAG2と、第3アンドゲートAG3と、第1マルチプレクサSEL3と、第2マルチプレクサSEL4と、第3マルチプレクサSEL5と、第4マルチプレクサSEL6と、第5マルチプレクサSEL7と、第1加算器AD1と、第2加算器AD2と、第1算術シフタRF1と、第2算術シフタRO1と、第3算術シフタRO2と、を備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
入力ビット列を伝送する第1信号を受け取る第1入力端と、
第1制御信号乃至第8制御信号を含む第2信号を受け取る第2入力端と、
前記第1信号によって示される値と前記第2信号によって示される値との積を示す信号を出力する出力端と、を備える演算装置であって、
前記入力ビット列のビットの並びを1ビット左にシフトすることにより得られる第1ビット列を出力する第1論理シフタと、
前記第1ビット列のビットの並びを1ビット左にシフトすることにより得られる第2ビット列を出力する第2論理シフタと、
前記第2ビット列のビットの並びを1ビット左にシフトすることにより得られる第3ビット列を出力する第3論理シフタと、
前記入力ビット列及び前記第1制御信号の値の論理積の演算結果である第4ビット列を出力する第1アンドゲートと、
前記第1ビット列及び前記第2制御信号の値の論理積の演算結果である第5ビット列を出力する第2アンドゲートと、
前記第3制御信号に基づいて、前記第2ビット列又は前記第3ビット列のいずれかである第6ビット列を出力する第1マルチプレクサと、
前記第6ビット列及び前記第4制御信号の値の論理積の演算結果である第7ビット列を出力する第3アンドゲートと、
前記第7ビット列及び前記第5ビット列の和である第8ビット列を出力する第1加算器と、
前記第8ビット列のビットの並びを1ビット左にシフトすることにより得られる第9ビット列を出力する第4論理シフタと、
前記第5制御信号に基づいて、前記第8ビット列又は前記第9ビット列のいずれかである第10ビット列を出力する第2マルチプレクサと、
前記第4ビット列及び前記第10ビット列の和である第11ビット列を出力する第2加算器と、
前記第11ビット列のビットの並びを符号を維持したまま5ビット右にシフトすることにより得られる第12ビット列を出力する第1算術シフタと、
前記第12ビット列のビットの並びを符号を維持したまま1ビットの右にシフトすることにより得られる第13ビット列を出力する第2算術シフタと、
前記第13ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第14ビット列を出力する第3算術シフタと、
前記第6制御信号に基づいて、前記第11ビット列又は前記第12ビット列のいずれかである第15ビット列を出力する第3マルチプレクサと、
前記第7制御信号に基づいて、前記第13ビット列又は前記第14ビット列のいずれかである第16ビット列を出力する第4マルチプレクサと、
前記第8制御信号に基づいて、前記第15ビット列又は前記第16ビット列のいずれかを伝送する出力信号を、前記積を示す信号として出力する第5マルチプレクサと、
を備える演算装置。
【請求項2】
入力ビット列を伝送する第1信号を受け取る第1入力端と、
第1制御信号乃至第8制御信号を含む第2信号を受け取る第2入力端と、
前記第1信号によって示される値と前記第2信号によって示される値との積を示す信号を出力する出力端と、を備える演算装置であって、
前記入力ビット列のビットの並びを1ビット左にシフトすることにより得られる第1ビット列を出力する第1論理シフタと、
前記第1ビット列のビットの並びを1ビット左にシフトすることにより得られる第2ビット列を出力する第2論理シフタと、
前記第2ビット列のビットの並びを1ビット左にシフトすることにより得られる第3ビット列を出力する第3論理シフタと、
前記入力ビット列及び前記第1制御信号の値の論理積の演算結果である第4ビット列を出力する第1アンドゲートと、
前記第1ビット列及び前記第2制御信号の値の論理積の演算結果である第5ビット列を出力する第2アンドゲートと、
前記第3制御信号に基づいて、前記第2ビット列又は前記第3ビット列のいずれかである第6ビット列を出力する第1マルチプレクサと、
前記第6ビット列及び前記第4制御信号の値の論理積の演算結果である第7ビット列を出力する第3アンドゲートと、
前記第7ビット列及び前記第5ビット列の和である第8ビット列を出力する第1加算器と、
前記第8ビット列のビットの並びを1ビット左にシフトすることにより得られる第9ビット列を出力する第4論理シフタと、
前記第5制御信号に基づいて、前記第8ビット列又は前記第9ビット列のいずれかである第10ビット列を出力する第2マルチプレクサと、
前記第4ビット列及び前記第10ビット列の和である第11ビット列を出力する第2加算器と、
前記第11ビット列のビットの並びを符号を維持したまま5ビット右にシフトすることにより得られる第12ビット列を出力する第1算術シフタと、
前記第12ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第13ビット列を出力する第2算術シフタと、
前記第13ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第14ビット列を出力する第3算術シフタと、
前記第6制御信号に基づいて、前記第11ビット列又は前記第12ビット列のいずれかである第15ビット列を出力する第3マルチプレクサと、
前記第7制御信号に基づいて、前記第13ビット列又は前記第14ビット列のいずれかである第16ビット列を出力する第4マルチプレクサと、
前記第16ビット列のビットの並びを符号を維持したまま6ビット右にシフトすることにより得られる第17ビット列を出力する第4算術シフタと、
前記第17ビット列の各ビットが反転された値を有する第18ビット列を出力するインバータと、
前記第18ビット列及び1の和を有する第19ビット列を出力するインクリメンタと、
前記第6制御信号に基づいて、前記第17ビット列又は前記第19ビット列のいずれかである第20ビット列を出力する第5マルチプレクサと、
前記第16ビット列及び前記第20ビット列の和である第21ビット列を出力する第3加算器と、
前記第8制御信号に基づいて、前記第15ビット列又は前記第21ビット列のいずれかを伝送する出力信号を出力する第6マルチプレクサと、
を備える演算装置。
【請求項3】
入力ビット列を伝送する第1信号を受け取る第1入力端と、
第1制御信号乃至第8制御信号を含む第2信号を受け取る第2入力端と、
前記第1信号によって示される値と前記第2信号によって示される値との積を示す信号を出力する出力端と、を備える演算装置であって、
前記入力ビット列のビットの並びを1ビット左にシフトすることにより得られる第1ビット列を出力する第1論理シフタと、
前記第1ビット列のビットの並びを1ビット左にシフトすることにより得られる第2ビット列を出力する第2論理シフタと、
前記第2ビット列のビットの並びを1ビット左にシフトすることにより得られる第3ビット列を出力する第3論理シフタと、
前記入力ビット列及び前記第1制御信号の値の論理積の演算結果である第4ビット列を出力する第1アンドゲートと、
前記第1ビット列及び前記第2制御信号の値の論理積の演算結果である第5ビット列を出力する第2アンドゲートと、
前記第3制御信号に基づいて、前記第2ビット列又は前記第3ビット列のいずれかである第6ビット列を出力する第1マルチプレクサと、
前記第6ビット列及び前記第4制御信号の値の論理積の演算結果である第7ビット列を出力する第3アンドゲートと、
前記第7ビット列及び前記第5ビット列の和である第8ビット列を出力する第1加算器と、
前記第8ビット列のビットの並びを1ビット左にシフトすることにより得られる第9ビット列を出力する第4論理シフタと、
前記第5制御信号に基づいて、前記第8ビット列又は前記第9ビット列のいずれかである第10ビット列を出力する第2マルチプレクサと、
前記第4ビット列及び前記第10ビット列の和である第11ビット列を出力する第2加算器と、
前記第11ビット列のビットの並びを符号を維持したまま5ビット右にシフトすることにより得られる第12ビット列を出力する第1算術シフタと、
前記第12ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第13ビット列を出力する第2算術シフタと、
前記第13ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第14ビット列を出力する第3算術シフタと、
前記第6制御信号に基づいて、前記第11ビット列又は前記第12ビット列のいずれかである第15ビット列を出力する第3マルチプレクサと、
前記第7制御信号に基づいて、前記第13ビット列又は前記第14ビット列のいずれかである第16ビット列を出力する第4マルチプレクサと、
前記第16ビット列のビットの並びを符号を維持したまま6ビット右にシフトすることにより得られる第17ビット列を出力する第4算術シフタと、
前記第17ビット列の各ビットが反転された値を有する第18ビット列を出力するインバータと、
前記第18ビット列及び1の和を有する第19ビット列を出力するインクリメンタと、
前記第6制御信号に基づいて、前記第17ビット列又は前記第19ビット列のいずれかである第20ビット列を出力する第5マルチプレクサと、
前記第16ビット列及び前記第20ビット列の和である第21ビット列を出力する第3加算器と、
前記第21ビット列のビットの並びを符号を維持したまま12ビット右にシフトすることにより得られる第22ビット列を出力する第5算術シフタと、
前記第21ビット列及び前記第22ビット列の和である第23ビット列を出力する第4加算器と、
前記第8制御信号に基づいて、前記第15ビット列又は前記第23ビット列のいずれかを伝送する出力信号を出力する第6マルチプレクサと、
を備える演算装置。
【請求項4】
請求項1乃至請求項3のいずれか1項の演算装置と、
前記第1信号及び前記第2信号を出力する回路と、
前記演算装置の前記出力信号の値を累積的に加算する累積加算器と、
を備える演算回路。
【請求項5】
請求項1乃至請求項3のいずれか1項の演算装置と、
前記第1信号及び前記第2信号を出力する回路と、
制御回路と、
を備え、前記制御回路は、
除数と前記除数の逆数の近似値との積を第1変数に代入するとともに被除数と前記除数の逆数の近似値との積を第2変数に代入することと、
前記第1変数と前記第1変数の逆数の近似値との積を前記第1変数に代入するとともに第2変数と前記第1変数の逆数の近似値との積を前記第2変数に代入することと、
前記第1変数と1以上の第1値の第1積が1未満である場合に前記第1積を前記第1変数に代入するとともに前記第2変数と前記第1値の第2積を前記第2変数に代入し、前記第1積が1以上である場合に前記第1変数及び前記第2変数を維持することと、
を含む処理を繰り返し実行するように前記演算装置及び前記回路を制御するように構成された演算回路。
【請求項6】
第1条件が充足するときの前記第2変数を前記除数と前記被除数の商として出力する、
請求項5に記載の演算回路。
【請求項7】
請求項1乃至請求項3のいずれか1項の演算装置と、
前記第1信号及び前記第2信号を出力する回路と、
制御回路と、
を備え、前記制御回路は、
除数と前記除数の逆数の近似値との積を第1変数に代入することと、
第1処理をk回繰り返すことであって、kは自然数であって、第k回目の前記第1処理は、前記第1変数と前記第1変数の逆数の第k近似値との積を前記第1変数に代入することと、前記第1変数と1以上の第1値の第k積が1未満である場合に前記第k積を前記第1変数に代入するとともに前記第k積が1以上である場合に前記第k積を維持することとを含む、第1処理を繰り返すことと、
被除数と前記除数の逆数の近似値との積を前記第1変数に代入することと、
第2処理をk回繰り返すことであって、第k回目の前記第2処理は、前記第1変数と前記第k近似値との積を前記第1変数に代入することと、前記第k積が1未満である場合に前記第1変数と前記第1値との積を前記第1変数に代入することとを含む、第2処理を繰り返すことと、
を実行するように前記演算装置及び前記回路を制御するように構成された演算回路。
【請求項8】
前記除数の逆数の近似値は、2から前記除数が減じられた値であり
前記第1変数の逆数の近似値は、2から前記第1変数が減じられた値である、
請求項5又は請求項7に記載の演算回路。
【請求項9】
前記第1値は1と10のn乗分の1との和であり、nは自然数である、
請求項5又は請求項7に記載の演算回路。
【請求項10】
前記出力信号を第1ビット列として出力する請求項1乃至請求項3のいずれか1項の演算装置と、
前記第1信号及び前記第2信号を出力する回路と、
第3信号乃至第12信号を出力する制御回路と、
前記第1ビット列と2のべき乗との和を含んだ第2ビット列を出力する第1加算器と、
前記第2ビット列の各ビットの反転された値を有する第3ビット列を出力するインバータと、
前記第3ビット列及び1の和を有する第4ビット列を出力するインクリメンタと、
前記第3信号に基づいて、前記第2ビット列又は前記第4ビット列のいずれかである第5ビット列を出力する第1マルチプレクサと、
受け取られた値を記憶し、記憶されている値を第6ビット列として出力する第1レジスタと、
受け取られた値を記憶し、記憶されている値を第7ビット列として出力する第2レジスタと、
前記第4信号に基づいて、前記第6ビット列、第1定数、又は第2定数のいずれかである第8ビット列を出力する、第2マルチプレクサと、
前記第5ビット列及び前記第8ビット列の和である第9ビット列を出力する第2加算器と、
前記第9ビット列の整数部の最下位ビットの値に基づいて、整数値0又は整数値1のいずれかである第3定数を出力する第3マルチプレクサと、
前記第5信号の値及び前記第9ビット列の整数部の最下位ビットの論理積の演算結果である第1ビットを出力する第1アンドゲートと、
前記第1ビットの反転された値を有する第2ビットを出力するインバータと、
前記第2ビット及び前記第6信号の論理積の演算結果である第3ビットを出力する第2アンドゲートと、
前記第3ビットに基づいて、前記第9ビット列又は前記第6ビット列のいずれかである第10ビット列を前記第1レジスタに供給する第4マルチプレクサと、
前記第7信号に基づいて、前記第9ビット列又は前記第7ビット列のいずれかである第11ビット列を前記第2レジスタに供給する第5マルチプレクサと、
前記第8信号に基づいて、前記第6ビット列、前記第7ビット列、第1値、又は第2値を前記入力ビット列として出力する第6マルチプレクサと、
前記第9信号に基づいて、前記第9ビット列の整数部の最下位から連続する複数のビット又は前記第3定数のいずれかである第12ビット列を出力する第7マルチプレクサと、
先入れ先出しの原則で入力を出力し、直列接続された複数の記憶部を含み、前記直列接続された複数の記憶部は初段の記憶部と最終段の記憶部を含み、前記初段の記憶部において前記第12ビット列を受け取るメモリと、
前記第10信号に基づいて、前記初段の前記記憶部の出力又は前記最終段の前記記憶部の出力のいずれかである第13ビット列を出力する第8マルチプレクサと、
前記第11信号に基づいて、前記第13ビット列又は第14ビット列のいずれかである第15ビット列を出力する第9マルチプレクサと、
前記第12信号及び前記第15ビット列に基づく値を有する前記第1制御信号乃至前記第8制御信号を出力するデコーダと、
を備える演算回路。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、概して演算装置及び演算回路に関する。
【背景技術】
【0002】
乗算及び(又は)除算を行う演算装置が知られている。乗算及び除算は、加算又は減算の繰返しによって実現される。演算装置においては、占有面積が小さく、かつ演算速度が速いことが望まれる。ところが、演算装置の占有面積と演算速度はトレードオフの関係を有する。乗算及び除算を行う演算装置の面積を小さくするためには、加減算器と、加減算の結果を記憶するためのレジスタとを設け、加減算器及びレジスタにクロックを与えて、クロックの各エッジに基づいて行われた演算の結果をレジスタに記憶することを通じて、乗除算を行うことが有効である。演算速度を上げるためには、多数の加減算器を並べて、一度に演算を実施する方法が有効である。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Robert E. Goldschmidt, Applications of Division by Convergence, MSc dissertation, M.I.T., June 1964.
【非特許文献2】R. A. Vowels, “Divide by 10”, Australian Computer Journal, vol. 24, no. 3, pp. 81-85, Aug. 1992.
【発明の概要】
【発明が解決しようとする課題】
【0004】
面積の小さい演算装置及び演算回路を提供しようとするものである。
【課題を解決するための手段】
【0005】
一実施形態による演算装置は、入力ビット列を伝送する第1信号を受け取る第1入力端と、第1制御信号乃至第8制御信号を含む第2信号を受け取る第2入力端と、上記第1信号によって示される値と上記第2信号によって示される値との積を示す信号を出力する出力端と、第1論理シフタと、第2論理シフタと、第3論理シフタと、第4論理シフタと、第1アンドゲートと、第2アンドゲートと、第3アンドゲートと、第1マルチプレクサと、第2マルチプレクサと、第3マルチプレクサと、第4マルチプレクサと、第5マルチプレクサと、第1加算器と、第2加算器と、第1算術シフタと、第2算術シフタと、第3算術シフタと、を備える。
【0006】
上記第1論理シフタは、上記入力ビット列のビットの並びを1ビット左にシフトすることにより得られる第1ビット列を出力する。上記第2論理シフタは、上記第1ビット列のビット列を1ビット左にシフトすることにより得られる第2ビット列を出力する。上記第3論理シフタは、上記第2ビット列のビットの並びを1ビット左にシフトすることにより得られる第3ビット列を出力する。上記第1アンドゲートは、上記入力ビット列及び上記第1制御信号の値の論理積の演算結果である第4ビット列を出力する。上記第2アンドゲートは、上記第1ビット列及び上記第2制御信号の値の論理積の演算結果である第5ビット列を出力する。上記第1マルチプレクサは、上記第3制御信号に基づいて、上記第2ビット列又は上記第3ビット列のいずれかである第6ビット列を出力する。上記第3アンドゲートは、上記第6ビット列及び上記第4制御信号の値の論理積の演算結果である第7ビット列を出力する。上記第1加算器は、上記第7ビット列及び上記第5ビット列の和である第8ビット列を出力する。上記第4論理シフタは、上記第8ビット列のビットの並びを1ビット左にシフトすることにより得られる第9ビット列を出力する。上記第2マルチプレクサは、上記第5制御信号に基づいて、上記第8ビット列又は上記第9ビット列のいずれかである第10ビット列を出力する。上記第2加算器は、上記第4ビット列及び上記第10ビット列の和である第11ビット列を出力する。上記第1算術シフタは、上記第11ビット列の並びを符号を維持したまま5ビット右にシフトすることにより得られる第12ビット列を出力する。上記第2算術シフタは、上記第12ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第13ビット列を出力する。上記第3算術シフタは、上記第13ビット列のビットの並びを符号を維持したまま1ビット右にシフトすることにより得られる第14ビット列を出力する。上記第3マルチプレクサは、上記第6制御信号に基づいて、上記第11ビット列又は上記第12ビット列のいずれかである第15ビット列を出力する。上記第4マルチプレクサは、上記第7制御信号に基づいて、上記第13ビット列又は上記第14ビット列のいずれかである第16ビット列を出力する。上記第5マルチプレクサは、上記第8制御信号に基づいて、上記第15ビット列又は上記第16ビット列のいずれかを伝送する出力信号を、上記積を示す信号として出力する。
【図面の簡単な説明】
【0007】
【
図1】
図1は、第1実施形態の演算装置を含んだ演算回路中の構成要素及び構成要素の接続を示す。
【
図2】
図2は、第1実施形態の演算装置中の構成要素及び構成要素の接続を示す。
【
図3】
図3は、第1実施形態の選択変換回路及び加算器中の構成要素及び構成要素の接続を示す。
【
図4】
図4は、第1実施形態の演算装置での演算のための制御信号の値の組合せを示す。
【
図5】
図5は、第1実施形態の演算装置中で行われている演算を示す。
【
図6】
図6は、第1実施形態の演算装置及び比較例としての演算装置の構成要素の数並びに被乗数1ビット当たりの素子数を示す。
【
図7】
図7は、第2実施形態の演算回路中の構成要素及び構成要素の接続を示す。
【
図8】
図8は、第2実施形態の演算回路の動作のフローを示す。
【
図9】
図9は、第3実施形態の演算装置中の構成要素及び構成要素の接続を示す。
【
図10】
図10は、第3実施形態の演算装置での演算のための制御信号の値の組合せを示す。
【
図11】
図11は、第3実施形態の演算装置及び比較例としての演算装置の構成要素の数並びに被乗数1ビット当たりの素子数を示す。
【
図12】
図12は、第4実施形態の演算装置中の構成要素及び構成要素の接続を示す。
【
図13】
図13は、第4実施形態の演算装置及び比較例としての演算装置の構成要素の数並びに被乗数1ビット当たりの素子数を示す。
【
図14】
図14は、第5実施形態の演算回路中の構成要素及び構成要素の接続を示す。
【
図15】
図15は、第5実施形態の演算回路中の構成要素及び構成要素の接続を示す。
【
図16】
図16は、第5実施形態の演算回路の動作のフローを示す。
【
図17】
図17は、第5実施形態でのいくつかの除数の種々の値の場合についての別の除数の値を示す。
【
図19】
図19は、第5実施形態の演算回路の動作のフローを示す。
【
図20】
図20は、第6実施形態の演算回路の動作のフローの一部を示す。
【
図21】
図21は、第6実施形態の演算回路の動作のフローの別の一部を示す。
【
図22】
図22は、第7実施形態の演算回路中の構成要素及び構成要素の接続を示す。
【
図23】
図23は、第7実施形態の演算回路中の構成要素及び構成要素の接続を示す。
【
図24】
図24は、第7実施形態のFIFOメモリの構成要素及び構成要素の接続の例を示す。
【
図25】
図25は、第7実施形態のデコーダの入力と出力の組合せを示す。
【
図26】
図26は、第7実施形態の演算回路による演算の種類を示す。
【
図27】
図27は、第7実施形態の演算回路での演算のための制御信号の値の組合せを示す。
【
図28】
図28は、第7実施形態の演算回路での演算のための制御信号の値の組合せを示す。
【
図29】
図29は、第7実施形態の演算回路のいくつかの信号の状態を時間に沿って示す。
【
図30】
図30は、第7実施形態の演算回路の動作のフローの一部を示す。
【
図31】
図31は、第7実施形態の演算回路の動作のフローの別の一部を示す。
【
図32】
図32は、第7実施形態の演算回路の動作のフローのさらに別の一部を示す。
【発明を実施するための形態】
【0008】
以下に実施形態が図面を参照して記述される。以下の記述において、略同一の機能及び構成を有する構成要素は同一の参照符号を付され、繰返しの説明は省略される場合がある。略同一の機能及び構成を有する複数の構成要素が相互に区別されるために、参照符号の末尾にさらなる数字又は文字が付される場合がある。
【0009】
或る実施形態についての記述は全て、明示的に又は自明的に排除されない限り、別の実施形態の記述としても当てはまる。各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれか又は両者を組み合わせたものとして実現されることが可能である。このため、各機能ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から記述される。各機能ブロックが、以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。
【0010】
また、実施形態の方法のフローにおけるいずれのステップも、例示の順序に限定されず、そうでないと示されない限り、例示の順序とは異なる順序で及び(又は)別のステップと並行して起こることが可能である。
【0011】
本明細書及び特許請求の範囲において、或る第1要素が別の第2要素に「接続されている」とは、第1要素が直接的又は常時或いは選択的に導電性となる要素又は電波を介して第2要素に接続されていることを含む。
【0012】
1.第1実施形態
1.1.構成(構造)
図1は、第1実施形態の演算回路中の構成要素及び構成要素の接続を示す。演算回路100は、例えば、キャリブレーション回路に含まれることが可能である。
【0013】
図1に示されるように、演算回路100は、デジタルの入力信号SIN及びデジタルの入力信号Smを受け取る。演算回路100は、入力信号SINによって伝送される値と入力信号Smによって伝送される値との積を算出する。以下、或る名称を有する信号によって伝送される値は、単に「信号の値」と称される場合がある。例えば、或る信号Sによって伝送される値は、「信号Sの値」と称され得る。
【0014】
演算回路100は、算出された積をデジタルの出力信号SOUTとして出力する。入力信号SINは、複数のビットを伝送する。入力信号SINは、例えば、二進数の被乗数Yを伝送する。入力信号Smは、例えば、二進化十進数(binary coded decimal, BCD)の値を伝送し、乗数Xを伝送する。
【0015】
演算回路100は、複数の演算装置OP(OP1、OP2、OP3、…)、加算器2、及び選択変換回路4を含む。演算回路100は、信号Smによって伝送される十進数の値の桁の数と同じかそれ以上の数の演算装置OPを含む。以下、複数の演算装置OPが含まれる形態は、演算回路100が5つの演算装置OP1、OP2、OP3、OP4、及びOP5を含む例に基づく。演算回路100が、4以下又は6以上の演算装置OPを含む場合の詳細は、以下の5つの演算装置OPについての記述から類推されることが可能である。
【0016】
選択変換回路4は、入力信号Smを複数の相違する制御信号Sc(Sc1、Sc2、Sc3、Sc4、及びSc5)に変換し、変換された制御信号Scを各演算装置OPに供給する。また、選択変換回路4は、入力信号SINを複数の相違するデータ信号YIN(YIN1、YIN2、YIN3、YIN4、及びYIN5)に変換し、変換されたデータ信号YINを各演算装置OPに供給する。
【0017】
各演算装置OPは、同じ構成要素、及び構成要素の同じ接続を有する。各演算装置OPは、第1入力及び第2入力を有し、第1入力及び第2入力の各々によって入力信号を受け取り、受け取られた信号に基づく値を伝送する信号を出力する。具体的には、以下の通りである。各演算装置OPは、自身の第1入力によって制御信号Scを受け取る。より具体的には、演算装置OP1、OP2、OP3、OP4、及びOP5は、それぞれ、制御入力端子において、制御信号Sc1、Sc2、Sc3、Sc4、及びSc5を受け取る。また、各演算装置OPは、自身の第2入力によって、信号YINを受け取る。より具体的には、演算装置OP1、OP2、OP3、OP4、及びOP5は、それぞれ、データ入力端子において、データ信号YIN1、YIN2、YIN3、YIN4、及びYIN5を受け取る。
【0018】
各演算装置OPは、自身の第1入力によって受け取られた制御信号Scの値によって指定される値と、自身の第2入力によって受け取られた信号YINの値との積を伝送する信号ZOUT(ZOUT1、ZOUT2、ZOUT3、ZOUT4、及びZOUT5)を、自身の出力端子から出力する。より具体的には、以下の通りである。演算装置OP1は、制御信号Sc1によって指定される値と信号YIN1の値との積を伝送する信号ZOUT1を出力する。演算装置OP2は、制御信号Sc2によって指定される値と信号YIN2の値との積を伝送する信号ZOUT2を出力する。演算装置OP3は、制御信号Sc3によって指定される値と信号YIN3の値との積を伝送する信号ZOUT3を出力する。演算装置OP4は制御信号Sc4によって指定される値と信号YIN4の値との積を伝送する信号ZOUT4を出力する。演算装置OP5は、制御信号Sc5によって指定される値と信号YIN5の値との積を伝送する信号ZOUT5を出力する。
【0019】
加算器2は、全ての演算装置OPからの信号ZOUTを受け取る。加算器2は、受け取られた信号ZOUTに基づいて、信号SOUTを出力する。信号SOUTは、受け取られた信号ZOUTのそれぞれの値の和を伝送する。出力信号SOUTの値は、二進数である。
【0020】
1.1.1.演算装置の構成
図2は、第1実施形態の演算装置OP中の構成要素及び構成要素の接続を示す。
図2に示されるように、演算装置OPは、信号YIN、及び制御信号SEL0、SEL1、SEL2、SEL3、SEL4、SEL5、SEL6、並びにSEL7を受け取り、信号ZOUTを出力する。制御信号SEL0~SEL7の各々は、1ビットの信号である。制御信号SEL0~SEL7の組は、制御信号Scを構成する。
【0021】
演算装置OPは、ANDゲートAG1、AG2、及びAG3、加算器AD1及びAD2、マルチプレクサ(MUX)MX1、MX2、MX3、MX4、及びMX5、左1ビット論理シフタ(SFL1)LO1、LO2、LO3、及びLO4、右5ビット算術シフタ(ASFR5)RF1、並びに右1ビット算術シフタ(ASFR1)RO1及びRO2を含む。
【0022】
図2において、信号を伝送する配線を示す太線は、複数ビットを伝送する配線の組(以下、配線群と称される)を示し、各配線は1ビットの信号を伝送する。すなわち、太線は、各々が1ビットを伝送する配線の組を示す。太線により示される配線群中の各配線は、固有のビット(桁)を伝送する。太線により示される配線群は、少なくとも信号YINが有するビットと同じかそれより多い数の配線を含む。以下、信号YINはn(nは2以上の自然数)ビットの値を伝送するとともに、各配線群はn本の配線を含むものとして記述される。すなわち、太線により示される配線群のうちの第1配線~第n配線は、それぞれ、最下位の第1ビット目から、昇順に、最上位の第nビット目までの信号を伝送する。太線により示される配線群により伝送される信号は、符号付きの値を有する。
【0023】
同様に、複数ビット信号を受け取る(すなわち、太線と接続された)ANDゲートAG、左1ビット論理シフタ(SFL1)LO、右5ビット算術シフタ(ASFR5)RF、右1ビット算術シフタ(ASFR1)RO、及びマルチプレクサMXは、第1ビットを最下位ビットとし、第nビットを最上位ビットとして構成される複数ビット(nビット)信号を扱える。以下、このように構成される信号をnビット信号と称する。
【0024】
具体的には以下の通りである。各ANDゲートAGは、第1のnビット信号を受け取り、第2のnビット信号を受け取る。各ANDゲートAGは、第1のnビット信号の第1ビットから第nビットと、第2のnビット信号の第1ビットから第nビットとの同じビットに対する論理積を生成する。各ANDゲートAGは、第1ビットから第nビットのそれぞれについての論理積を、第1ビットから第nビットにおいてそれぞれ含むnビット信号を出力する。
【0025】
各左1ビット論理シフタLOは、nビット信号を受け取り、受け取られたnビット信号のビットの並び(以下、ビット列と称される)を1ビットだけ左(第nビット又は最上位ビット側)に移す(左論理シフトを行う)。各左1ビット論理シフタLOは、論理シフトされることにより得られる新たなビット列を有する信号を出力する。左シフトによって最下位ビットが左に移動した後の最下位ビットには0が詰められる。
【0026】
各算術シフタRF及びROは、nビット信号を受け取り、受け取られたnビット信号のビット列を、RFは5ビット、ROは1ビットだけ右(第1ビット又は最下位ビット側)に移す(右算術シフトを行う)。各算術シフタRF及びROは、算術シフトされることにより得られる新たなビット列を有する信号を出力する。通常、nビットデータの符号は、最上位ビット(第nビット)によって表される。右算術シフトによって最上位ビットが右に移動した後のビット(RFの出力ビット列のうち最上位ビットを含む連続した5ビットと、ROの出力ビット列の最上位ビット)には、シフト前の信号の最上位ビットと同じ値が詰められるので、シフトの前後でデータの符号は変化しない。
【0027】
各マルチプレクサMXは、第1入力によってnビット信号を受け取り、第2入力によってnビット信号を受け取る。第1入力は、図中のマルチプレクサMXのシンボルにおいて“0”を付されており、第2入力はマルチプレクサMXのシンボルにおいて“1”を付されている。各マルチプレクサMXは、選択入力によって信号(選択信号)を受け取り、第1入力で受け取られる信号と、第2入力で受け取られる信号のうち、選択信号によって指定される一方を出力する。マルチプレクサMXは、ローレベルの選択信号を受け取っている間、第1入力で受け取られている信号を出力する。マルチプレクサMXは、ハイレベルの選択信号を受け取っている間、第2入力で受け取られている信号を出力する。
【0028】
信号YINは、左1ビット論理シフタLO1によって受け取られる。左1ビット論理シフタLO1は、nビットの信号YINのビット列に対して1ビットの左論理シフトを行って、信号S1を生成する。信号S1は、nビットの値を伝送する。信号S1の値は、信号YINの値の21倍の大きさを有する。
【0029】
信号YINはまた、ANDゲートAG1の第1入力によって受け取られる。ANDゲートAG1は、第2入力によって、制御信号SEL0の値をnビットの全てにおいて有する信号を受け取る。すなわち、ANDゲートAG1の第2入力に与えられるnビット信号の全てのビットは制御信号SEL0に接続される。ANDゲートAG1は、nビットの値を伝送する信号S2を出力する。
【0030】
信号S1は、左1ビット論理シフタLO2によって受け取られる。左1ビット論理シフタLO2は、nビットの信号S1のビット列に対して1ビットの左論理シフトを行って、信号S3を生成する。信号S3は、nビットの値を伝送する。信号S3の値は、信号YINの値の22倍の大きさを有する。
【0031】
信号S1はまた、ANDゲートAG2の第1入力によって受け取られる。ANDゲートAG2は、第2入力によって、制御信号SEL1の値をnビットの全てにおいて有する信号を受け取る。すなわち、ANDゲートAG2の第2入力に与えられるnビット信号の全てのビットは制御信号SEL1に接続される。ANDゲートAG2は、nビットの値を伝送する信号S4を出力する。
【0032】
信号S3は、左1ビット論理シフタLO3によって受け取られる。左1ビット論理シフタLO3は、nビットの信号S3のビット列に対して1ビットの左論理シフトを行って、信号S5を生成する。信号S5は、nビットの値を伝送する。信号S5の値は、信号YINの値の23倍の大きさを有する。
【0033】
信号S5は、マルチプレクサMX1の第2入力によって受け取られる。マルチプレクサMX1は、第1入力によって信号S3を受け取る。マルチプレクサMX1は、選択信号として制御信号SEL3を受け取る。マルチプレクサMX1は、信号S3及び信号S5のうちの制御信号SEL3に基づいて選択される一方を信号S6として出力する。信号S6は、nビットの値を伝送する。
【0034】
信号S6は、ANDゲートAG3の第1入力によって受け取られる。ANDゲートAG3は、第2入力によって、制御信号SEL2の値をnビットの全てにおいて有する信号を受け取る。すなわち、ANDゲートAG3の第2入力に与えられるnビット信号の全てのビットは制御信号SEL2に接続される。ANDゲートAG3は、nビットの値を伝送する信号S7を出力する。
【0035】
信号S7は、加算器AD1の第1入力によって受け取られる。加算器AD1は、第2入力によって、ANDゲートAG2から信号S4を受け取る。加算器AD1は、信号S4及び信号S7に基づいて、信号S8を出力する。信号S8は、信号S7の値と信号S4の値の和を伝送する。信号S8は、nビットの値を有する。和を表現する信号のビット数として、加算前の2数よりも1ビット多いものが必要になる場合がある。ここでは、加算やシフトによるビットの増加を見込んだビット幅をnビットと定め、入力信号の上位には符号ビット、下位には0を必要な数だけ拡張して与えるものとする。
【0036】
信号S8は、左1ビット論理シフタLO4によって受け取られる。左1ビット論理シフタLO4は、nビットの信号S8のビット列に対して1ビットの左論理シフトを行って、信号S9を生成する。信号S9は、nビットの値を伝送する。信号S9の値は、信号S8の値の21倍の大きさを有する。
【0037】
信号S9は、マルチプレクサMX2の第2入力によって受け取られる。マルチプレクサMX2は、第1入力によって信号S8を受け取る。マルチプレクサMX2は、選択信号として制御信号SEL4を受け取る。マルチプレクサMX2は、信号S8及び信号S9のうちの制御信号SEL4に基づいて選択される一方を信号S10として出力する。信号S10は、nビットの値を伝送する。
【0038】
信号S10は、加算器AD2の第1入力によって受け取られる。加算器AD2は、第2入力によって、ANDゲートAG1から信号S2を受け取る。加算器AD2は、信号S2及び信号S10に基づいて、信号S14を出力する。信号S14は、信号S10の値と信号S2の値の和を伝送する。信号S14は、nビットの値を有する。
【0039】
信号S14は、右5ビット算術シフタRF1によって受け取られる。右5ビット算術シフタRF1は、信号S14のビット列に対して5ビットの右算術シフトを行って、信号S15を生成する。信号S15は、nビットの値を伝送する。信号S15の値は、信号S14の値の2-5倍の大きさを有する。
【0040】
信号S15は、マルチプレクサMX3の第2入力によって受け取られる。マルチプレクサMX3は、第1入力によって信号S14を受け取る。マルチプレクサMX3は、選択信号として制御信号SEL5を受け取る。マルチプレクサMX3は、信号S14及び信号S15のうちの制御信号SEL5に基づいて選択される一方を信号S16として出力する。信号S16は、nビットの値を伝送する。
【0041】
信号S15はまた、右1ビット算術シフタRO1によって受け取られる。右1ビット算術シフタRO1は、信号S15のビット列に対して1ビットの右算術シフトを行って、信号S17を生成する。信号S17は、nビットの値を伝送する。信号S17の値は、信号S14の値の2-6倍の大きさを有する。
【0042】
信号S17は、右1ビット算術シフタRO2によって受け取られる。右1ビット算術シフタRO2は、信号S17のビット列に対して1ビットの右算術シフトを行って、信号S18を生成する。信号S18は、nビットの値を伝送する。信号S18の値は、信号S14の値の2-7倍の大きさを有する。
【0043】
信号S18は、マルチプレクサMX4の第2入力によって受け取られる。マルチプレクサMX4は、第1入力によって信号S17を受け取る。マルチプレクサMX4は、選択信号として制御信号SEL6を受け取る。マルチプレクサMX4は、信号S17及び信号S18のうちの制御信号SEL6に基づいて選択される一方を信号S19として出力する。信号S19は、nビットの値を伝送する。
【0044】
信号S19は、マルチプレクサMX5の第2入力によって受け取られる。マルチプレクサMX5は第1入力によって信号S16を受け取る。マルチプレクサMX5は、選択信号として制御信号SEL7を受け取る。マルチプレクサMX5は、信号S16及び信号S19のうちの制御信号SEL7に基づいて選択される一方を信号ZOUTとして出力する。
【0045】
上記の説明では、演算装置OPを構成する各要素の入出力ビット幅は、すべて等しいもの(nビット)として説明しているが、左論理シフトまたは右算術シフトによって、上位側または下位側にシフトしたビット数だけビットを拡張する実現方法も可能である。この場合、ANDゲート、マルチプレクサ、及び加算器において、それぞれに入力される2つの信号のビット幅が異なる場合が生じるが、その場合はビット数が少ない入力の上位に最上位(符号)ビットを拡張するか、ビット数が少ない入力の下位に0を拡張することによって、両入力のビット幅をそろえる。また、加算によってもビット幅が1ビット増加することがあるが、その場合もビット数が少ない信号の上位に最上位(符号)ビットを拡張することによって、加算後の値と整合をとることができる。この実現方法の場合、出力ZOUTのビット幅は、入力YINのビット幅よりも大きくなる。
【0046】
1.1.2.選択変換回路の構成
図3は、第1実施形態の選択変換回路及び加算器中の構成要素及び構成要素の接続を示す。
図3に示されるように、選択変換回路4は、デコーダDC1~DC5、及び演算装置OC1~OC5を含む。デコーダDC1~DC5は、それぞれ、信号Sm1~Sm5を受け取る。信号Sm1~Sm5は、5桁の十進数を伝送する信号Smの各桁をそれぞれ伝送する。すなわち、信号Sm1~Sm5は、それぞれ、信号Smの最下位の桁、最下位から2番目、3番目、4番目、及び5番目の桁の値を伝送する。デコーダDC1~DC5は、それぞれ、信号Sm1~Sm5を、制御信号Sc1~Sc5に変換する。
【0047】
演算装置OC1~OC5は、演算装置OP(OP1~OP5)と同じ構成を有し、それらの内部構成は
図2によって示される。演算装置OC1は、制御入力端子(
図2の制御信号SEL7~SEL0が受け取られる端子)によって、制御信号ScLを受け取る。制御信号ScLは、1/10を指定する値を有する。演算装置OC1は、データ入力端子(
図2の信号YINが受け取られる端子)によって、信号YIN2を受け取る。演算装置OC1は、信号YIN1を出力する。
【0048】
演算装置OC2は、制御入力端子によって、制御信号ScLを受け取る。演算装置OC2は、データ入力端子によって、信号YIN3を受け取る。演算装置OC2は、信号YIN2を出力する。
【0049】
演算装置OC3は、制御入力端子によって、制御信号ScCを受け取る。制御信号ScCは、1を指定する値を有する。演算装置OC3は、データ入力端子によって、入力信号SINを受け取る。演算装置OC3は、信号YIN3を出力する。
【0050】
演算装置OC4は、制御入力端子によって、制御信号ScHを受け取る。制御信号ScHは、10を指定する値を有する。演算装置OC4は、データ入力端子によって、信号YIN3を受け取る。演算装置OC4は、信号YIN4を出力する。
【0051】
演算装置OC5は、制御入力端子によって、制御信号ScHを受け取る。演算装置OC5は、データ入力端子によって、信号YIN4を受け取る。演算装置OC5は、信号YIN5を出力する。
【0052】
以上のような演算装置OC1~OC5の接続、及び制御信号ScL、ScC、並びにScHの値により、信号YIN1~YIN5は以下の値を有する。
信号YIN1は、(1/10)×(1/10)×SINの値を有する。
信号YIN2は、(1/10)×SINの値を有する。
信号YIN3は、1×SINの値を有する。
信号YIN4は、10×SINの値を有する。
信号YIN5は、10×10×SINの値を有する。
【0053】
加算器2は、加算器AD21、AD22、AD23、AD24、及びAD25を含む。加算器AD21は、値0を伝送する信号及び信号ZOUT1を受け取り、0と信号ZOUT1の値との和を伝送する信号を出力する。加算器AD22は、加算器AD21の出力及び信号ZOUT2を受け取り、加算器AD21の出力と信号ZOUT2の値との和を伝送する信号を出力する。加算器AD23は、加算器AD22の出力及び信号ZOUT3を受け取り、加算器AD22の出力と信号ZOUT3の値との和を伝送する信号を出力する。加算器AD24は、加算器AD23の出力及び信号ZOUT4を受け取り、加算器AD23の出力と信号ZOUT4の値との和を伝送する信号を出力する。加算器AD25は、加算器AD24の出力及び信号ZOUT5を受け取り、信号SOUTを出力する。信号SOUTは、加算器AD24の出力と信号ZOUT5の値との和を伝送する。
【0054】
1.2.動作
1.2.1.演算器の動作
演算装置OPによる演算は、以下に記述される方法で行われる。演算装置OPは、0、1以上10以下の整数、及び1以上10以下の整数の逆数のうちの選択された1つを乗数として用いる乗算を行える。
【0055】
図4は、第1実施形態の演算装置OPでの演算のための制御信号SEL0~SEL7の値の組合せを示す。
図2を参照して記述されるとともに
図4に示されるように、制御信号SEL0~SEL7の値の或る組合せは、固有の乗数を指定する。すなわち、信号YINと、或る乗数とによる乗算の結果を信号ZOUTとして得るために、制御信号SEL0~SEL7のレベルが、以下に記述されるレベルに設定される。以下の記述において、「X:αβγδεζθι」は、乗数Xを指定するために、制御信号SEL7、SEL6、SEL5、SEL4、SEL3、SEL2、SEL1、及びSEL0のレベルが、それぞれ、α、β、γ、δ、ε、ζ、θ、及びιであることを示す。α、β、γ、δ、ε、ζ、θ、及びιの各々は、H(ハイレベル)、L(ローレベル)、又は-(ドントケア)である。Hは、二進数の1と同じであり、Lは二進数の0と同じである。
10 :L-LLHHHL
9 :L-LLHHLH
8 :L-LLHHLL
7 :L-LLLHHH
6 :L-LLLHHL
5 :L-LLLHLH
4 :L-LLLHLL
3 :L-LL-LHH
2 :L-LL-LHL
1 :L-L--LLH
1/2 :L-HHHHLL
1/3 :HL-HHHHH
1/4 :L-HLHHLL
1/5 :HL-HLHHH
1/6 :HH-HHHHH
1/7 :HL-LHHLH
1/8 :L-HLLHLL
1/9 :HL-LLHHH
1/10:HH-HLHHH
0 :L-L--LLL
計算されることを求められる乗数を指定する制御信号SEL0~SEL7の値の組合せが演算装置OPに入力されることにより、信号YINと、この乗数との積が、信号ZOUTとして出力される。
【0056】
図5は、第1実施形態の演算装置OP中で行われている演算を示す。より具体的には、
図5は、0、1以上10以下の整数、及び1以上10以下の整数の逆数のそれぞれが乗数として用いられる計算のために演算装置OP中で行われている演算を示す。乗算については、実際の値に対する信号ZOUTの値の誤差(以下、単に誤差と称される)は、0%である。しかし、除算(分数の乗数が用いられる乗算)は、以下に記述されるように、近似によって演算されるため、誤差が生じる。
【0057】
図5に示されるように、乗数10の場合、信号ZOUTの値として、
YIN×(2
3+2
1) 式(1)
が算出される。この場合の実際の値と信号ZOUTの値との誤差は、0%である。
【0058】
乗数9の場合、信号ZOUTの値として、
YIN×(23+20) 式(2)
が算出される。この場合の誤差は0%である。
【0059】
乗数8の場合、信号ZOUTの値として、
YIN×(23) 式(3)
が算出され、誤差は0%である。
【0060】
乗数7の場合、信号ZOUTの値として、
YIN×(22+21+20) 式(4)
が算出される。この場合の誤差は0%である。
【0061】
乗数6の場合、信号ZOUTの値として、
YIN×(22+21) 式(5)
が算出される。この場合の誤差は0%である。
【0062】
乗数5の場合、信号ZOUTの値として、
YIN×(21+20) 式(6)
が算出される。この場合の誤差は0%である。
【0063】
乗数4の場合、信号ZOUTの値として、
YIN×(22) 式(7)
が算出される。この場合の誤差は0%である。
【0064】
乗数3の場合、信号ZOUTの値として、
YIN×(21+20) 式(8)
が算出される。この場合の誤差は0%である。
【0065】
乗数2の場合、信号ZOUTの値として、
YIN×(21) 式(9)
が算出される。この場合の誤差は0%である。
【0066】
乗数1の場合、信号ZOUTの値として、
YIN×(20) 式(10)
が算出される。この場合の誤差は0%である。
【0067】
乗数1/2の場合、信号ZOUTの値として、
YIN×(24/25) 式(11)
が算出される。この場合の誤差は0%である。
【0068】
乗数1/3の場合、信号ZOUTの値として、
YIN×[{(23+21)×2+20}/26)] 式(12)
が算出される。この場合の誤差は-1.5625%である。
【0069】
乗数1/4の場合、信号ZOUTの値として、
YIN×(23/25) 式(13)
が算出される。この場合の誤差は0%である。
【0070】
乗数1/5の場合、信号ZOUTの値として、
YIN×[{(22+21)×2+20}/26] 式(14)
が算出される。この場合の誤差は1.5625%である。
【0071】
乗数1/6の場合、信号ZOUTの値として、
YIN×[{(23+21)×2+20}/27] 式(15)
が算出される。この場合の誤差は-1.5625%である。
【0072】
乗数1/7の場合、信号ZOUTの値として、
YIN×{(23+20)/26} 式(16)
が算出される。この場合の誤差は-1.5625%である。
【0073】
乗数1/8の場合、信号ZOUTの値として、
YIN×(22/25) 式(17)
が算出される。この場合の誤差は0%である。
【0074】
乗数1/9の場合、信号ZOUTの値として、
YIN×{(22+21+20)/26} 式(18)
が算出される。この場合の誤差は-1.5625%である。
【0075】
乗数1/10の場合、信号ZOUTの値として、
YIN×[{(22+21)×2+20}/27] 式(19)
が算出される。この場合の誤差は1.5625%である。
【0076】
乗数0の場合、信号ZOUTの値として、
YIN×0 式(20)
が算出される。この場合の誤差は0%である。
【0077】
1.2.2.演算回路の動作
1.2.2.1 乗算
以下、或る信号Sの値は、単に、値S又はSと称される場合がある。例えば、入力信号SINの値は、単に、値SIN又はSINと称され得る。
【0078】
まず、具体的な例として、Smが314.15である例が記述される。この場合、SOUT=SIN×314.15の計算は、以下の計算により置き換えられることが可能である。
【0079】
SOUT=3×10×10×SIN
+10×SIN
+4×SIN
+(1/10)×SIN
+5×(1/10)×(1/10)×SIN
すなわち、Smの各桁について、Smのその桁の値と、その桁の位に相当する10のべき乗と、SINとの積が求められ、全ての桁のそれぞれについての積が加算される。各桁についての計算が、1つの演算装置OPを使用して行われる。以下、各桁についての計算のための式は、以下のように称される。Smの100の位の値とSINとの積のための式「3×10×10×SIN」は、式(21)と称される。Smの10の位の値とSINとの積のための式「10×SIN」は、式(22)と称される。Smの1の位の値とSINとの積のための式「4×SIN」は、式(23)と称される。Smの1/10の位の値とSINとの積のための式「(1/10)×SIN」は、式(24)と称される。Smの1/100の位の値とSINとの積のための式「5×(1/10)×(1/10)×SIN」は、式(25)と称される。
【0080】
例示のSmが314.15であることに基づいて、Sm1~Sm5は、それぞれ、5、1、4、1、及び3である。このことに基づいて、
図3に示されるデコーダDC1~DC5は、
図4の表に従って、以下の制御信号Sc1~Sc5を出力する。
Sc1は、L-LLLHLH(十進数5のデコード結果)である。
Sc2は、L-L--LLH(十進数1のデコード結果)である。
Sc3は、L-LLLHLL(十進数4のデコード結果)である。
Sc4は、L-L--LLH(十進数1のデコード結果)である。
Sc5は、L-LL-LHH(十進数3のデコード結果)である。
【0081】
また、
図3を参照して記述されるように、制御信号ScL、ScC、及びScHは、それぞれ1/10、1、及び10指定するために、以下の値を有する。
ScLは、HH-HLHHH(十進数1/10のデコード結果)である。
ScCは、L-L--LLH(十進数1のデコード結果)である。
ScHは、L-LLHHHL(十進数10のデコード結果)である。
【0082】
図3を参照して説明したように、信号YIN1~YIN5は、以下の値を有する。
YIN1=(1/10)×(1/10)×SIN
YIN2=(1/10)×SIN
YIN3=1×SIN
YIN4=10×SIN
YIN5=10×10×SIN
信号YIN1~YIN5に基づいて、演算装置OP1~OP5は、YIN1~YIN5のそれぞれに対して、制御信号Sc1~Sc5によって定められる演算を実行する。Smが314.15の例では、OP5、OP4、OP3、OP2、及びOP1によって、式(21)~(25)の演算がそれぞれ実行され、演算の結果が信号ZOUT5、ZOUT4、ZOUT3、ZOUT2、及びZOUT1として出力される。
【0083】
加算器2は、値ZOUT1、ZOUT2、ZOUT3、ZOUT4、及びZOUT5を加算する。加算器2は、加算の結果を出力信号SOUTとして出力する。Smが314.15の例では、出力信号SOUTの値は、SINと314.15との積に等しい。
【0084】
同様にして、5つの桁それぞれにおいて任意の値を有する入力信号Smと入力信号SINとの積が算出されることが可能である。
【0085】
除算については、除数の逆数を小数に変換して、変換された小数を乗じることにより、任意の除数による除算が可能である。例えば、除数が12.5の場合、1/12.5=0.08である。このため、SOUTはSIN×0.08によって、算出されることが可能である。
【0086】
1.3.利点(効果)
第1実施形態によれば、以下に記述されるように、小さい面積を有するとともに、十進1桁の乗数及び十進1桁の逆数の乗算を行える演算装置OPが提供されることが可能である。
【0087】
比較例としての第1手法として、高速な乗算は、多数の加減算器を設けることによって行われることが可能である。デジタル信号処理のように乗算を頻繁に実施するような分野であれば、デジタル信号処理を行う装置への乗算器の搭載は効率的であり、そのための回路を設けることによる領域の消費は許容される。しかしながら、それ以外の分野、例えばアナログ回路のキャリブレーションをデジタル回路で制御する場合のような、動作期間中に1回しか要求されない乗算のために大きな回路面積の演算装置を使用することは非効率的である。比較例としての第2手法として、演算装置をできる限り小さい面積で構成することが考えられる。しかしながら、その場合、動作の間に必要な数のクロック・エッジが確保できないことがあり得る。
【0088】
このように、高速化のために多数の加減算器を用いる比較例としての第1手法は適用の形態によっては非効率であり得、小面積が可能な比較例としての第2手法では、制限時間内に動作が完了しないことがあり得る。これらの問題に対処するために、以下に記述されるような、これら2つの手法の中間的な手法の使用が考えられる。
【0089】
まず、乗算について記述される。以下では、記述が単純化されることを目的として、全ての数値の符号は正であると仮定される。被乗数Yと乗数Xが両方とも16ビットである場合、YとXとの積Z(Zは32ビットの値を有する)は、式(26)のように表される。
Z=Y×X 式(26)
乗数Xが、式(27)のように、隣り合う4ビットずつの互いに重なり合わない4つの部分X0、X1、X2、及びX3に分解される。
X=163×X3+162×X2+161×X1+160×X0 式(27)
この表現が使用されると、式(27)は、(28)のように変換される。
Z=Y×163×X3+Y×162×X2+Y×16×X1+Y×X0 式(28)
ある数を16倍する演算は、その数のビット列を4ビット、左シフトすることと等価である。このため、被乗数4ビットと乗数16ビットを乗算する乗算器を用いて乗算の結果がシフトされ、シフトされた値が、乗算の中でのこれまでの演算によって得られる結果に加算される演算が4回繰り返されることにより、Zが得られる。
【0090】
一方、除算の場合は、乗算と同じようにはいかない。除数Dと被除数Nが両方とも16ビットである場合、NがDで除されることにより得られる商Qは、式(29)のように表される。
Q=N/D 式(29)
除数Dが乗算の例と同様に分解されると、式(30)のように表される。
Q=N/(163×D3+162×D2+161×D1+160×D0) 式(30)
式(30)の計算は、容易ではない。そこで、除数Dに代えて、被除数Nが、式(31)のように、隣り合う4ビットずつの互いに重なり合わない4つの部分N0、N1、N2、及びN3に分解される。このことに基づく、式(29)は、式(31)のように変換される。
Q=(163×N3+162×N2+161×N1+160×N0)/D 式(31)
=163×N3/D+162×N2/D+161×N1/D+160×N0/D
式(32)
16k×Nk/D(k=0,1,2,3)の各項は、数式上は、式(33)のように表される。
16k×(Nk/D)=(16k×Nk)/D 式(33)
しかしながら、たとえば、k=3、N3=1、D=15のとき、式(33)の演算の結果の小数点以下が切り捨てられると、式(33)の左辺は0、右辺は273になる。式(33)の右辺の計算には、N/Dと同じだけ時間がかかる。このため、除数の分解によっても、除算が高速に行われることができない。このように、除算のために除数または被除数が分解されたとしても、除算のための回路の面積と演算速度のトレードオフが容易に実現されない。
【0091】
第1実施形態の演算装置OPは、
図2に示される要素及び接続を有する。制御信号SELの値の組合せによる乗数の指定により、
図4を参照して記述されるように、0、1以上10以下の整数、及び1以上10以下の整数の逆数のうちの選択された1つを乗数として用いる乗算が行われることが可能である。すなわち、SINと、0、及び1以上10以下の整数の乗数の乗算として、それぞれ、式(20)、及び式(1)~式(10)が行われる。SINと、2、4、及び8の逆数の乗数の乗算として、それぞれ、式(11)、式(13)、及び式(17)が行われる。SINと、3、5、6、7、9、及び10の逆数の乗算として、それぞれ、式(12)、式(14)、式(15)、式(16)、式(18)、及び式(19)に示される近似演算が行われる。
【0092】
このような乗算及び除算が、小さい面積を有する演算装置OPによって行われることが可能である。
図6は、比較例としての二進乗算器及び第1実施形態の演算装置OPのそれぞれの構成要素の数並びに被乗数1ビット当たりの素子数を示す。比較例としての二進乗算器は、従来の演算器であり、固定小数点型であり、乗数として0以上15以下の整数を使用でき、被乗数として任意の数のビット列を使用でき、動作にクロックを要しない並列アレイ型乗算器である。被乗数1ビット当たりの素子数の算出のために、ANDゲート、マルチプレクサ、及び加算器が、それぞれ6、14、及び56個の素子を有すると仮定されている。なお、ビット列のシフトは配線のみで行われることが可能なので、シフトに要する素子の数は0である。
【0093】
演算装置OPは、乗算のみを行える比較例としての二進乗算器の素子数より4.2%多い素子を有するのみで、乗算及び除算を行える。
【0094】
演算装置OPが、0、1桁の整数、及び1桁の整数の逆数を乗数として用いる乗算を行えることは、演算装置OPを使用して、乗数の桁ごとの乗算の実行を可能にする。このような広く汎用な乗算を実行できる演算装置OPの使用により、演算装置OPを用いる演算回路100は、任意の数(逆数を含む)の乗算を行える。このことは、演算回路100が大きな面積を要することを抑制する。また、演算回路100によって、除数または被除数の分解では実現できない演算回路の面積の抑制と高い演算速度の両立が可能である。さらに、演算回路100の動作のためにクロック信号は不要であり、比較例としての第2手法による課題は生じない。
【0095】
2.第2実施形態
第2実施形態は、演算回路100の構成及び動作の点で、第1実施形態と異なる。第2実施形態の演算回路100は、第1実施形態の演算回路100との区別のために、演算回路100bと称される場合がある。
【0096】
2.1.構成
図7は、第2実施形態の演算装置中の構成要素及び構成要素の接続を示す。
図7に示されるように、演算回路100bは、演算装置OP、制御回路3、選択変換回路4b、データ記憶回路LC1b、及び累積加算器5を含む。
【0097】
制御回路3は、選択変換回路4b、データ記憶回路LC1b、及び累積加算器5を制御する。制御回路3は、カウンタCT及びメモリMEを含む。カウンタCTは、リセット信号及びクロック信号を受け取る。カウンタCTは、クロック信号のエッジ(例えば、立上がりエッジ)を計数する。カウンタCTは、アサートされたリセット信号を受け取ると、記憶している値をリセットする。カウンタCTの出力(計数の結果)は、アドレス情報として、メモリMEに供給される。メモリMEは、アドレス情報により指定されるアドレスに記憶されているデータを出力する。
【0098】
選択変換回路4bは、入力信号Smから制御信号Scを生成し、生成された制御信号Scを演算装置OPに供給する。選択変換回路4bは、また、入力信号SINとデータ記憶回路LC1bからの出力(データ記憶回路LC1bに記憶されている値)のうちのいずれか一方を選んで、選択されたものを信号YINとして演算装置OPに供給する。
【0099】
選択変換回路4bは、n:1選択回路(マルチプレクサ)MX1b、4:1選択回路MX2b、2:1選択回路MX3b、及びデコーダDCbを含む。n:1選択回路MX1bは、信号Sm1~Smnを受け取る。信号Sm1~Smnは、n桁の十進数を伝送する信号Smの各桁をそれぞれ伝送する。n:1選択回路MX1bは、信号Sm1~Smnのうちの制御回路3の制御に基づいて選択される1つを出力する。
【0100】
デコーダDCbは、n:1選択回路MX1bからの出力を受け取る。デコーダDCbは、第1実施形態のデコーダDC1~DC5と同じく、受け取られた信号(信号Sm1~SMnのいずれか)を、制御信号ScRに変換する。
【0101】
4:1選択回路MX2bは、制御信号ScR、ScL、ScC、及びScHを受け取る。4:1選択回路MX2bは、制御信号ScR、ScL、ScC、及びScHのうちの制御回路3の制御に基づいて選択される1つを制御信号Scとして出力する。
【0102】
2:1選択回路MX3bは、入力信号SIN、及びデータ記憶回路LC1bからの出力を受け取る。2:1選択回路MX3bは、入力信号SIN及びデータ記憶回路LC1bからの出力のうちの制御回路3の制御に基づいて選択される1つを信号YINとして出力する。
【0103】
演算装置OPは、制御信号Scの値によって指定される値と、信号YINの値との積を伝送する信号ZOUTを出力する。
【0104】
データ記憶回路LC1bは、信号ZOUTを受け取り、制御回路3の制御に基づいて、受け取られた信号ZOUTの値を記憶する。データ記憶回路LC1bは、記憶されている値を、選択変換回路4bに供給する。データ記憶回路LC1bは、リセット信号及びクロック信号を受け取り、制御回路3からイネーブル信号を受け取る。データ記憶回路LC1bは、イネーブル信号に基づいて動作し、クロック信号に基づくタイミングで動作する。データ記憶回路LC1bは、アサートされているリセット信号を受け取ると、記憶している値をリセットする。
【0105】
累積加算器5は、加算器AD51及びデータ記憶回路LC2bを含む。累積加算器5は、信号ZOUTを受け取る。累積加算器5において加算器AD51は、受け取られた信号ZOUTの値を、この信号ZOUTを受け取る前にデータ記憶回路LC2bに記憶していた値に加えることで和を得る。累積加算器5においてデータ記憶回路LC2bは、得られる和を記憶し、得られた値を伝送する出力信号SOUTを出力する。データ記憶回路LC2bは、リセット信号及びクロック信号を受け取り、制御回路3からイネーブル信号を受け取る。データ記憶回路LC2bは、イネーブル信号に基づいて動作し、クロック信号に基づくタイミングで動作する。データ記憶回路LC2bは、アサートされているリセット信号を受け取ると、記憶している値をリセットする。
【0106】
2.2.動作
図8は、第2実施形態の演算回路100bの動作のフローを示す。
図8のフローは、制御回路3が入力信号SIN及び入力信号Smを受け取ると開始する。第1実施形態において記述されるように、入力信号Smは乗数Xを伝送し、入力信号SINは被乗数Yを伝送する。フローは、第1実施形態における式(21)~式(25)の和の計算と同じく、乗数Xの各桁と被乗数Yとの積を累積的に加算することに相当する。
【0107】
制御回路3は、変数I、F、k、Y0、V、及びZに以下に記述される値をセットする(ST1)。制御回路3は、変数Iに乗数Xの整数部の桁数をセットする。制御回路3は、変数Fに乗数Xの小数部の桁数をセットする。制御回路3は、変数kを0にセットする。制御回路3は、変数Y0に被乗数Yをセットする。制御回路3は、変数Vに変数Y0をセットする。制御回路3は、変数Zに0をセットする。変数I、F、及びkは制御回路3において、例えばメモリMEによって記憶される。変数Vは、例えば、データ記憶回路LC1bによって記憶される。変数Zは、例えば、累積加算器5において、データ記憶回路LC2bによって記憶される。
【0108】
乗数Xは、十進数であり、よって式(34)のように表されることが可能である。
X=10I-1×XI-1+ … +100×X0+10-1×X-1+…+10-F×X-F
式(34)
kが正の範囲において、Xkは、乗数Xの整数部のうちの最下の桁(最下位ビット)からk番目の桁の値を指す。kが負の範囲において、Xkは、乗数Xの小数のうちの、小数第k位の桁の値を指す。X0は、乗数Xの整数部の一の位の値を指す。
【0109】
制御回路3は、乗数Xの整数部の乗算と、乗数Xの小数部の乗算を、別々に行う。例えば、制御回路3は、ST3からST7の実行によって乗数Xの小数部の乗算を行い、ST11からST17の実行によって乗数Xの整数部の乗算を行う。具体的には、以下の通りである。
【0110】
制御回路3は、Fが0であるかを判断する(ST3)。
【0111】
Fが0でない場合(ST3_No)、これは、乗数Xが小数部を含むことを意味する。このことに基づいて、制御回路3は、演算装置OPを使用して(1/10)×Vを計算し、算出された値でVを更新する(ST4)。詳細は、第1実施形態において記述される方法の通りである。すなわち、制御回路3は、2:1選択回路MX3bに入力信号SINを選択するよう制御するとともに、4:1選択回路MX2bに制御信号ScL(1/10を指定する信号)を選択するように制御する。この結果、選択変換回路4bは、演算装置OPに、Vを伝送する信号YINを供給するとともに、1/10を指定する制御信号Scを供給する。以下、制御回路3による演算装置OPを使用する計算は、積を算出される対象の2つの値が第1実施形態において記述されるように供給及び指定されることにより行われる。(1/10)×Vの値は、信号ZOUTによって伝送され、信号ZOUTはデータ記憶回路LC1bにより受け取られる。データ記憶回路LC1bは、制御回路3の指示に基づいて、ST4の実行前に記憶されていたVを、信号ZOUTの値(=(1/10)×V)によって更新する。信号ZOUTの値(=(1/10)×V)は、データ記憶回路LC1bによって記憶される。
【0112】
制御回路3は、kをk-1で更新する(ST5)。
【0113】
制御回路3は、Z+Xk×Vを計算し、算出された値でZを更新する(ST6)。具体的には、以下の通りである。制御回路3は、演算装置OPを使用して、Xk×Vを算出する。すなわち、制御回路3は、データ記憶回路LC1bを制御して、データ記憶回路LC1bに記憶されている値(=(1/10)×V)を含んだ信号を出力させ、出力された信号を2:1選択回路MX3bの制御によって信号YINとして演算装置OPに供給する。また、制御回路3は、4:1選択回路MX2bに制御信号ScRを選択させることによって、Xkを指定する制御信号Scを供給する。信号ZOUTは、Xk×Vを伝送する。信号ZOUTは、累積加算器5により受け取られる。累積加算器5は、信号ZOUTの受信前に記憶していたZと信号ZOUTの値の和を記憶する。
【0114】
制御回路3は、kが-Fと等しいかを判断する(ST7)。
【0115】
kが-Fと等しくない場合(ST7_No)、これは、乗数Xの小数部の全ての桁と被乗数Yとの積の和の算出が完了していないことを意味する。このことに基づいて、制御回路3は、ST4を実行する。
【0116】
kが-Fと等しい場合(ST11_Yes)、これは、乗数Xの小数部の全ての桁と被乗数Yとの積の和の算出が完了したことを意味する。このことに基づいて、制御回路3は、乗数Xの整数部についての算出の処理に移る。その一環として、制御回路3は、Iが0であるかを判断する(ST11)。Fが0である場合(ST3_Yes)も、制御回路3は、ST11を実行する。
【0117】
Iが0である場合(ST11_Yes)、これは、乗数Xが整数部を含まないことを意味する。よって、フローは終了する。
図7のフローの終了の時点で累積加算器5(データ記憶回路LC2b)に記憶されている値(Z)が、被乗数Yと乗数Xとの積に等しい。
【0118】
Iが0でない場合(ST11_No)、これは、乗数Xが整数部を含むことを意味する。このことに基づいて、制御回路3は、kを0で更新する(ST12)。
【0119】
制御回路3は、VをY0で更新する(ST13)。
【0120】
制御回路3は、Z+Xk×Vを計算し、算出された値でZを更新する(ST14)。ST14として行われる処理は、ST6として行われる処理と同じである。
【0121】
制御回路3は、kがI-1と等しいかを判断する(ST15)。
【0122】
kがI-1と等しい場合(ST15_Yes)、これは、乗数Xの整数部の全ての桁と被乗数Yとの積の和の算出が完了したことを意味する。よって、フローは終了する。
【0123】
kがI-1と等しくない場合(ST15_No)、これは、乗数Xの整数部の全ての桁と被乗数Yとの積の和の算出が完了していないことを意味する。このことに基づいて、制御回路3は、演算装置OPを使用して10×Vを計算し、算出された値でVを更新する(ST16)。ST16として行われる処理は、値の相違を除いて、ST4として行われる処理と同じである。ST4と異なる点として、ST16として行われる処理では、制御信号ScLに代えて、制御信号ScHが使用される。
【0124】
制御回路3は、kをk+1で更新する(ST17)。ST17の後、処理はST14に継続する。
【0125】
2.3.利点
第2実施形態の演算回路100bは、第1実施形態と同じく、演算装置OPを含み、演算装置OPを使用して、乗数の各桁と被乗数との積の和の算出によって、被乗数Yと乗数Xとの積を算出できる。よって、第1実施形態と同じ利点を得られる。第2実施形態の演算回路100bは、第1実施形態の演算回路100と比較して、演算装置OPの数を少なく構成できるため回路面積をより小さくできる。
【0126】
2.4.その他及び変形例
乗数の桁数と小数点位置とが固定の場合は、制御回路3中のメモリMEとして読出し専用メモリ(Read Only Memory, ROM)が使用されることが可能である。
【0127】
又は、メモリMEは、書換え可能なフラッシュメモリで構成されることも可能である。その場合、乗数の桁数と小数点位置とが可変にできる利点が生じる。
【0128】
図8を参照して記述されるように、制御回路3の動作が条件判断を伴う場合には、制御回路3をマイクロプロセッサで構成することが、一つの方法である。
【0129】
3.第3実施形態
第3実施形態は、演算装置OP中の構成要素及び構成要素の接続の点で、第1実施形態と異なる。第3実施形態の演算装置OPは、第1実施形態の演算装置OPとの区別のために、演算装置OPcと称される場合がある。第3実施形態の演算装置OPcは、第1実施形態の演算回路100及び第2実施形態の演算回路100bのいずれにも適用されることが可能である。以下、第1実施形態と異なる点が主に記述される。少なくも記述されない点については、第1実施形態と同じである。
【0130】
3.1.構成
図9は、第3実施形態の演算装置OPc中の要素及び要素の接続を示す。
図9に示されるように、演算装置OPcは、演算装置OPが有する要素及び要素の接続に加えて、右6ビット算術シフタ(ASFR6)RS1、インバータIV1、インクリメンタINC1、マルチプレクサMX11、及び加算器AD11を含む。
【0131】
マルチプレクサMX4からの信号S19は、第1実施形態でのマルチプレクサMX5に代えて、右6ビット算術シフタRS1によって受け取られる。右6ビット算術シフタRS1は、信号S19のビット列に対して6ビットの右算術シフトを行って、信号S21を生成する。信号S21は、nビットの値を伝送する。信号S21の値は、信号S19の値の2-6倍の大きさを有する。
【0132】
信号S21は、インバータIV1によって受け取られる。インバータIV1は、信号S21に基づいて、信号S22を出力する。信号S22は、信号S21の全ビットの各々において信号S21の値から反転された値を伝送する。信号S22は、nビットの値を伝送する。
【0133】
信号S22は、インクリメンタINC1により受け取られる。インクリメンタINC1は、信号S22に基づいて、信号S23を出力する。信号S23は、信号S22によって伝送される値と1の和を伝送する。信号S23は、nビットの値を伝送する。
【0134】
信号S23は、マルチプレクサMX11の第2入力によって受け取られる。マルチプレクサMX11は、第1入力によって、信号S21を受け取る。マルチプレクサMX11は、選択信号として制御信号SEL5を受け取る。マルチプレクサMX11は、信号S21及び信号S23のうちの制御信号SEL5に基づいて選択される一方を、信号S24として出力する。信号S24は、nビットの値を伝送する。
【0135】
信号S24は、加算器AD11の第1入力によって受け取られる。加算器AD11は、第2入力によって、マルチプレクサMX4から信号S19を受け取る。加算器AD11は、信号S19と信号S24に基づいて、信号S25を出力する。信号S25は、信号S24の値と信号S19の値の和を伝送する。信号S25は、nビットの値を有する。
【0136】
マルチプレクサMX5は、第2入力によって、第1実施形態での信号S19に代えて、信号S25を受け取る。
【0137】
3.2.動作
演算装置OPcは、第1実施形態の演算装置OPと同じく、0、1以上10以下の整数、及び1以上10以下の整数の逆数のうちの選択された1つを乗数として用いる乗算を行える。
【0138】
図10は、第3実施形態の演算装置OPcでの演算のための制御信号SEL0~SEL7の値の組合せを示す。各乗数Xの指定のために、制御信号SEL7、SEL6、SEL5、SEL4、SEL3、SEL2、SEL1、及びSEL0のレベルは、
図10に示されるとともに以下に記述される組合せを有する。
10 :L-LLHHHL
9 :L-LLHHLH
8 :L-LLHHLL
7 :L-LLLHHH
6 :L-LLLHHL
5 :L-LLLHLH
4 :L-LLLHLL
3 :L-LL-LHH
2 :L-LL-LHL
1 :L-L--LLH
1/2 :L-HHHHLL
1/3 :HLLHHHHH
1/4 :L-HLHHLL
1/5 :HLHHLHHH
1/6 :HHLHHHHH
1/7 :HLLLHHLH
1/8 :L-HLLHLL
1/9 :HLLLLHHH
1/10:HHHHLHHH
0 :L-L--LLL
図10は、第1実施形態の
図3と、幾つかの乗数における制御信号SEL5のレベルにおいてのみ相違する。すなわち、
図3において乗数1/3、1/5、1/6、1/7、1/9、及び1/10でドントケアであったレベルが、それぞれ、L、H、L、L、L、及びHである。
【0139】
演算装置OPcによる0、及び1以上10以下の整数のいずれかの乗数が使用される乗算については、第1実施形態の演算装置OPでの乗算と同じである。除算(1以上10以下の整数の逆数が乗数として用いられる乗算)は、以下の原理を使用する。以下、乗算記号×は省略される場合がある。
【0140】
或る誤差を含まない数xが1の大きさを有する場合の誤差をeとすると、誤差を含む数
【0141】
【0142】
は式(35)のように表される。
【0143】
【0144】
このとき、eが定数であるとすると、式(35)の右辺に1-eが乗じられると、右辺は式(36)のように表される。
【0145】
【0146】
式(36)では、誤差を含む項は、eから-e2に補正される。
【0147】
さらに、式(36)の右辺に1+e2が乗じられると、右辺は式(37)のように表される。
【0148】
【0149】
式(37)では、誤差を含む項は、-e2から-e4に補正される。
【0150】
ここで、補正回数をNとし、N回の補正を受けた誤差を含む数を
【0151】
【0152】
とすると、それ(N回の補正を受けた誤差を含む数)は式(38)のように表される。
【0153】
【0154】
式(38)の右辺中の「,」の右側の記載は、「,」の左側に記載の値が適用される条件を示す。
【0155】
図5に示されるように、第1実施形態の演算装置OPは、乗数が1/5又は1/10である場合、乗算の結果(信号S19の値)に誤差1.5625%を生み、乗数が1/3、1/6、1/7、又は1/9である場合、乗算の結果に誤差-1.5625%を生む。これらの誤差を生じる場合というのは、それぞれ、式(38)でe=2
-6、e=-2
-6の場合に等しい。このことに基づいて、第1実施形態の演算装置OPで、1.5625%の誤差が発生する演算、すなわち乗数が1/5又は1/10である場合、乗算の結果に(1-2
-6)が乗じられることにより、誤差はe=-2
-12≒-0.0244%まで低減される。同様に、第1実施形態の演算装置OPで、-1.5625%の誤差が発生する演算、すなわち乗数が1/3、1/6、1/7、又は1/9である場合、乗算の結果に(1+2
-6)が乗じられることにより、誤差はe=-2
-12≒-0.0244%まで低減される。
【0156】
以上のような(1-2-6)又は(1+2-6)の乗算が、右6ビット算術シフタRS1、インバータIV1、インクリメンタINC1、マルチプレクサMX11、及び加算器AD11により実現されている。
【0157】
第3実施形態による誤差の低減と類似の方法が非特許文献1に開示されている。また、非特許文献2は、除数10による除算における処理方法をアルゴリズムの形で開示する。
【0158】
3.3.利点
第3実施形態の演算装置OPcは、第1実施形態の演算装置OPと同じ構成要素及び構成要素の接続を含む。このため、第1実施形態と同じ利点を得られる。
【0159】
また、演算装置OPcは、
図9に示されるように接続された右6ビット算術シフタRS1、インバータIV1、インクリメンタINC1、マルチプレクサMX11、及び加算器AD11を含む。これらは、第1実施形態の演算装置OPによる除算の結果の値を伝送する信号S19、すなわちマルチプレクサMX4からの信号S19に、(1-2
-6)又は(1+2
-6)を乗じる。この乗算は、マルチプレクサMX4からの信号S19によって伝送される除算の結果の誤差を低減する。よって、演算装置OPcは、第1実施形態の演算装置OPよりも低い誤差で除算を行える。
【0160】
このような乗算及び除算が、小さい面積を有する演算装置OPcによって行われることが可能である。
図11は、比較例としての二進乗算器及び演算装置OPcのそれぞれの構成要素の数並びに被乗数1ビット当たりの素子数を示す。比較例としての二進乗算器は、第1実施形態の
図6に示されるものと同じである。素子数の算出のための仮定は、第1実施形態において記述される通りである。加えて、インクリメンタ、及びインバータが、それぞれ22及び2個の素子を有すると仮定されている。なお、ビット列のシフトは配線のみで行われることが可能なので、シフトに要する素子数は0である。
【0161】
演算装置OPcは、乗算のみを行える比較例としての二進乗算器の素子数より53%多い素子を有するのみで、乗算、及び誤差の小さい除算を行える。
【0162】
4.第4実施形態
第4実施形態は、演算装置OP中の要素及び要素の接続の点で、第1実施形態及び第3実施形態と異なる。第4実施形態の演算装置OPは、第1実施形態の演算装置OP及び第3実施形態の演算装置OPcとの区別のために、演算装置OPdと称される場合がある。第4実施形態の演算装置OPdは、第1実施形態の演算回路100及び第2実施形態の演算回路100bのいずれにも適用されることが可能である。
【0163】
4.1.構成
図12は、第4実施形態の演算装置OPd中の構成要素及び構成要素の接続を示す。
図12に示されるように、演算装置OPdは、第3実施形態の演算装置OPcが有する要素及び要素の接続に加えて、右12ビット算術シフタ(ASFR12)RT1、及び加算器AD15を含む。
【0164】
加算器AD11からの信号S25は、第3実施形態でのマルチプレクサMX5に代えて、右12ビット算術シフタRT1によって受け取られる。右12ビット算術シフタRT1は、信号S25のビット列に対して12ビットの右算術シフトを行って、信号S28を生成する。信号S28は、nビットの値を伝送する。信号S28の値は、信号S25の値の2-12倍の大きさを有する。
【0165】
信号S28は、加算器AD15の第1入力によって受け取られる。加算器AD15は、第2入力によって、加算器AD11から信号S25を受け取る。加算器AD15は、信号S25の値と信号S28に基づいて、信号S29を出力する。信号S29は、信号S25の値と信号S28の値の和を伝送する。信号S29は、nビットの値を伝送する。
【0166】
マルチプレクサMX5は、第2入力によって、第3実施形態での信号S25に代えて、信号S29を受け取る。
【0167】
4.2.動作
演算装置OPdは、第1実施形態の演算装置OP及び第3実施形態の演算装置OPcと同じく、0、1以上10以下の整数、及び1以上10以下の整数の逆数のうちの選択された1つを乗数として用いる乗算を行える。
【0168】
第4実施形態の演算装置OPdでの演算のための制御信号SEL0~SEL7の値の組合せは、第3実施形態での組合せと同じである。
【0169】
演算装置OPdでは、第3実施形態の演算装置OPcによる除算の結果、すなわち、加算器AD11からの信号S25に(1+2-12)が乗じられる。この結果、第3実施形態において記述される誤差の低減の原理と同じ原理に基づいて、信号S25中の誤差(≒-0.0244%)は、信号S29が有する誤差の約-59.6ppb(約-0.00000596%)まで低減される。
【0170】
4.3.利点
第4実施形態の演算装置OPdは、第1実施形態の演算装置OPと同じ構成要素及び構成要素の接続を含む。このため、第1実施形態と同じ利点を得られる。
【0171】
また、演算装置OPdは、第3実施形態の演算装置OPcと同じように接続された右6ビット算術シフタRS1、インバータIV1、インクリメンタINC1、マルチプレクサMX11、及び加算器AD11を含む。さらに、演算装置OPdは、
図12に示されるように接続された右12ビット算術シフタRT1、及び加算器AD15を含む。これらは、第3実施形態の演算装置OPcによる除算の結果を示す信号S25、すなわち加算器AD11からの信号S25に、(1+2
-12)を乗じる。この乗算は、加算器AD11からの信号S25によって伝送される除算の結果の誤差を低減する。よって、演算装置OPdは、第3実施形態の演算装置OPcよりも低い誤差で除算を行える。
【0172】
このような乗算及び除算が、小さい面積を有する演算装置OPdによって行われることが可能である。
図13は、比較例としての二進乗算器及び第4実施形態の演算装置OPdのそれぞれの構成要素の数並びに被乗数1ビット当たりの素子数を示す。比較例としての二進乗算器は、第1実施形態の
図6、及び第3実施形態の
図11に示されるものと同じである。素子数の算出のための仮定は、第3実施形態において記述される通りである。
【0173】
演算装置OPdは、乗算のみを行える比較例としての二進乗算器の素子数より82%多い素子を有するのみで、乗算、及び誤差の小さい除算を行える。
【0174】
5.第5実施形態
第5実施形態は、演算回路100の構成及び動作の点で、第1~第4実施形態と異なる。第5実施形態の演算回路100は、第1実施形態の演算回路100との区別のために、演算回路100eと称される場合がある。
【0175】
5.1.構成
図14は、第5実施形態の演算回路中の構成要素及び構成要素の接続を示す。
図14に示されるように、演算回路100eは、制御回路3(3e)及び演算部9eを含む。第5実施形態の制御回路3は、第2実施形態の制御回路3との区別のために、制御回路3eと称される場合がある。第5実施形態における入力Smは、第1及び第2実施形態における入力Smとは異なり、二進数である。
【0176】
制御回路3eは、演算回路100eの全体の動作を司る。制御回路3eは、リセット信号及びクロック信号を受け取る。制御回路3eは、クロック信号に基づくタイミングで動作する。制御回路3eは、アサートされたリセット信号を受け取ると、内部の状態をリセットする。制御回路3eは、複数の制御信号を生成し、生成された制御信号を演算部9eに供給する。演算部9eは、入力信号SIN、入力信号Sm、及び制御信号を受け取り、受け取った各信号に基づく演算を行う。演算部9eは、制御回路3eの制御に基づいて、演算の結果を伝送する信号SOUTを出力する。演算部9eは、除数の整数部(小数点よりも上位のビット)を伝送する信号(除数整数部信号)を制御回路3eに出力する。
【0177】
図15は、第5実施形態の演算回路中の構成要素及び構成要素の接続のより詳細な例を示し、特に、演算部のより詳細な例を示す。
図15に示されるように、演算部9eは、選択変換回路4e、演算装置OP1e及びOP2e、加算器AD1e及びAD2e、符号反転器CM1e及びCM2e、並びにデータ記憶回路LC1e、LC2e、LC3e、及びLC4eを含む。
【0178】
制御回路3eは、選択変換回路4e、データ記憶回路LC1e~LC4e、並びに符号反転器CM1e及びCM2eそれぞれに複数の制御信号Cs1e、Cs2e、Cs3e、Cs4e、Cs5e、CsCM、CsL1、及びCsL2を供給する。データ記憶回路LC4eから出力される信号SLO4は除数を伝送する。信号SLO4から除数整数部信号SLO4Iが得られる。除数整数部信号SLO4Iは、制御回路3eと選択変換回路4eとに供給される。
【0179】
選択変換回路4eは、4:1選択回路MX1e及びMX4e、3:1選択回路MX2e及びMX5e、2:1選択回路MX3e、並びにデコーダDCeを含む。4:1選択回路MX1eは、制御回路3eから供給される制御信号Cs1eを受け取る。4:1選択回路MX1eは、整数部において1を有するとともに小数部の全てのビットにおいて0を有する固定値(1.0…0)と、整数部及び小数部の全てのビットにおいて0を有する固定値(0.0…0)を受け取る。4:1選択回路MX1eは、データ記憶回路LC1e及びLC2eから、それぞれ供給される信号SLO1及びSOUTを受け取る。4:1選択回路MX1eは、値1.0…0と、値0.0…0と、信号SLO1、信号SLOとのうちの制御信号Cs1eに基づいて選択される1つを信号SMO1として出力する。信号SMO1は、加算器AD1eの第2入力によって受け取られる。
【0180】
3:1選択回路MX2eは、制御回路3eから供給される制御信号Cs2eを受け取る。3:1選択回路MX2eは、入力信号SINと、信号SLO1と、信号SOUTとのうちの制御信号Cs2eに基づいて選択される1つを信号YIN1eとして出力する。
【0181】
2:1選択回路MX3eは、制御回路3eから供給される制御信号CS3eを受け取る。2:1選択回路MX3eは、制御回路3eから供給される信号SCCeと信号SLOI4のうち、制御信号CS3eに基づいて選択される1つをデコーダDCeに供給する。
【0182】
デコーダDCeは、2:1選択回路MX3eから供給される信号から、信号Sceを生成する。
【0183】
4:1選択回路MX4eは、制御回路3eから供給される制御信号Cs4eを受け取る。4:1選択回路MX4eは、整数部において1を有するとともに小数部の全てのビットにおいて0を有する固定値(1.0…0)と、整数部及び小数部の全てのビットにおいて0を有する固定値(0.0…0)を受け取る。4:1選択回路MX4eは、データ記憶回路LC3e及びLC4eからそれぞれ供給される信号SLO3及びSLO4を受け取る。4:1選択回路MX4eは、値1.0…0と、値0.0…0と、信号SLO3と、信号SLO4とのうちの制御信号Cs4eに基づいて選択される1つを信号SMO2として出力する。信号SMO2は、加算器AD2eの第2入力によって受け取られる。
【0184】
3:1選択回路MX5eは、制御回路3eから供給される制御信号Cs5eを受け取る。3:1選択回路MX5eは、入力信号Smと、信号SLO3と、信号SLO4とのうちの制御信号Cs5eに基づいて選択される1つを信号YIN2eとして出力する。
【0185】
演算装置OP1eは、第1実施形態において記述される演算装置OPと同じく、信号YIN1eの値と制御信号Sceの値によって指定される値との積を伝送する信号ZOUT1eを出力する。演算装置OP2eは、第1実施形態において記述される演算装置OPと同じく、信号YIN2eの値と制御信号Sceの値によって指定される値との積を伝送する信号ZOUT2eを出力する。
【0186】
符号反転器CM1eは、信号ZOUT1eを受け取るとともに、制御回路3eから供給される制御信号CsCMを受け取る。符号反転器CM1eは、制御信号CsCMに基づいて、信号ZOUT1eによって伝送される値の符号を反転し、反転された符号を有する信号ZOUT1eを加算器AD1eの第1入力に供給する。
【0187】
符号反転器CM2eは、信号ZOUT2e及び制御信号CsCMを受け取る。符号反転器CM2eは、制御信号CsCMに基づいて、信号ZOUT2eによって伝送される値の符号を反転し、反転された符号を有する信号ZOUT2eを加算器AD2eの第1入力に供給する。
【0188】
加算器AD1eは、その第1入力を介して、符号反転器CM1eから信号を受け取る。加算器AD1eは、その第2入力を介して、選択変換回路4eから信号SMO1を受け取る。加算器AD1eは、第1入力を介して受け取った信号の値と信号SMO1の値を加算する。加算器AD1eは、加算により得られた和を、データ記憶回路LC1eとLC2eとに供給する。
【0189】
加算器AD2eは、その第1入力を介して、符号反転器CM2eから信号を受け取る。加算器AD2eは、その第2入力を介して、選択変換回路4eから信号SMO2を受け取る。加算器AD2eは、第1入力を介して受け取った信号の値と信号SMO2の値を加算する。加算器AD2eは、加算により得られた和をデータ記憶回路LC3eとLC4eとに供給する。
【0190】
データ記憶回路LC1e及びLC2eは、加算器AD1eから信号を受け取り、制御回路3eの制御に基づいて、受け取られた信号の値を記憶する。データ記憶回路LC1e及びLC2eは、それぞれに記憶されている値を伝送する信号SLO1及びSOUTを選択変換回路4eに供給する。データ記憶回路LC2eは、信号SOUTを出力する。
【0191】
データ記憶回路LC3e及びLC4eは、加算器AD2eから信号を受け取り、制御回路3eの制御に基づいて、受け取られた信号の値を記憶する。データ記憶回路LC3e及びLC4eは、それぞれに記憶されている値を伝送する信号SLO3及びSLO4を選択変換回路4eに供給する。信号SLO4のうちの整数部を伝送する信号SLO4Iは、制御回路3eと選択変換回路4eにおける2:1選択回路MX3eとに供給される。
【0192】
5.2.動作
演算回路100eの動作の記述に先立ち、演算回路100eによる演算が基づく原理について記述される。
【0193】
5.2.1 演算回路による演算が基づく原理
演算回路100eによる演算は、非特許文献1に開示されているゴールドシュミット法に基づく。以下、ゴールドシュミット法の概要が記述される。
【0194】
除数をDとし、被除数をNとし、商をQとすると、被除数Nが除数Dで除されることによって得られる商Qは、式(39)のように表される。
【0195】
Q=N/D 式(39)
式(39)の右辺の分母及び分子に同じ数Wが乗じてられてもQの値は変わらないから、式(39)は、式(40)へと変形されることが可能である。
【0196】
Q=N/D=NW/DW 式(40)
式(40)において、もしも変形された分母DWが1であるならば、商Qは分子NWに等しい。このことから、次のことが言える。無限数列Wk(k=1、2、3、…)が存在し、かつ
【0197】
【0198】
であるならば、
【0199】
【0200】
である。したがって、以下のことが可能である。予め許容される誤差ea(>0)が定められる。そして、Wk(k=1、2、3、…)が順に次々と分母D及び分子Nに乗じられ、乗じられ続けている間に、
【0201】
【0202】
になったときの
【0203】
【0204】
が商Qの近似解と扱われることによって、N/Dが実行されることが可能である。このような数列Wk(k=1、2、3、…)は、式(44)によって与えられる。
【0205】
【0206】
式(44)は、
図16に示されるように、変数xの逆数を表す関数y=1/xが、x=1の近傍では、式(45)によって表される関数によってよく近似されることが可能である事実に基づいている。
【0207】
y=2-x 式(45)
分母(すなわち、除数)Dが1からあまりにも大きく離れていると、
図16に示される直線による近似が成り立たない。このことに基づいて、近似計算の開始の段階で、予め、除数Dが1≦D<2の範囲に正規化される。
【0208】
正規化は、例えば、プライオリティーエンコーダを用いて、二進数で表現された除数Dの最上位ビット(MSB)から続く0の数を数え、その数に基づく数だけ、除数Dのビット列を右又は左へシフトすることにより実行されることができる。0の数に基づく除数Dのビット列のシフトは、2、4、及び8などの2のべき乗の数を乗じるかこれらで除することによって行われることが可能である。このシフトにより、除数Dの値における小数点よりも上のビットは1になり、小数点以下のビットは、除数Dのビット列から先頭の1を除いたものになる。小数点以下のビットは任意の値をとり得るが、1以上にはならないから、整数部と小数部の和であるところの正規化された除数Dの値は、1≦D<2になる。
【0209】
N/Dが固定小数点除算である場合、除数Dに対する正規化のために除数Dに施された処理と同じ処理が、被除数Nに対して施される。例えば除数Dのビット列に対して1ビットの右シフトが行われた場合、被除数Nのビット列に対しても1ビットの右シフトが行われる。このようなシフトであるため、固定小数点除算の場合は、正規化後の被除数Nの範囲は一意には定まらない。
【0210】
一般に、浮動小数点除算では、数値は指数部と仮数部とに分けて表現される。このため、除数D及び被除数Nに対する正規化のためのシフトは、左方向を正、右方向を負として数値化されたシフト量が除数D及び被除数Nの仮数部から減じられることにより実行される。よって、除数D及び被除数Nは、それぞれ、独立に1≦D<2及び1≦N<2の範囲に正規化されることが可能である。
【0211】
以上が、ゴールドシュミット法の説明である。
【0212】
正規化のためのプライオリティーエンコーダは、例えば、制御回路3eの一部として実現されてもよいし、制御回路3eから独立して設けられてもよい。
【0213】
ゴールドシュミット法は、演算の高速化を目的に開発されたものである。高速化のために、ゴールドシュミット法の上記の説明の数式中に出現する繰返し乗算は、並列型多ビット乗算器により1サイクルで実行されることが前提である。また、hが小さいうちは、式(41)中の
【0214】
【0215】
の収束が遅い。このため、ゴールドシュミットの方の実行のために、一般に、ルックアップテーブルが用いられて、hが小さい場合の近似が高速に行われる。ルックアップテーブルは、例として浮動小数点32ビット精度の場合、少なくとも4Kバイト(1Kバイトは1024バイト)のサイズを有しなければならない。このような大きなサイズのデータを記憶しておくための資源は、ゴールドシュミット法を用いる計算機などでは、許容され得る。一方、計算機以外の、第1実施形態の効果の項において記述されるような用途では、ルックアップテーブルの使用は望まれない。
【0216】
第5実施形態では、ルックアップテーブルを使用する処理は、以下の処理により代替される。除数Dと被除数Nはともに任意の桁数の二進数であり、上のゴールドシュミット法の説明で述べられるのと同じ形で正規化された値である。以下の各手順の実行の度に、除数Dは新たな除数D0、D1、D2、D3、D4、及びD5へと順に更新されていく。同様に、以下の各手順の実行の度に、被除数Nは新たな被除数N0、N1、N2、N3、N4、及びN5へと順に更新されていく。
【0217】
(手順1)
除数D及び被除数Nに5が乗じられることにより得られる値が、それぞれ、除数D1及び被除数N1とされる。1≦D<2であるので、5≦D1<10であり、除数D1の整数部の集合は{5、6、7、8、9}である。
【0218】
(手順2)
除数D1及び被除数N1がそれぞれ除数D1の整数部で除されることにより得られる値が、それぞれ除数D2及び被除数N2とされる。除数D2の整数部は1であり、除数D2の小数部は1/5より小さいことが証明されることが可能である。このため、1≦D2<1.2である。
【0219】
(手順3)
除数D2及び被除数N2に9が乗じられることにより得られる値が、それぞれ、除数D3及び被除数N3とされる。1≦D2<1.2であるから、9≦D3<10.8である。よって、除数D3の整数部の集合は{9、10}である。
【0220】
(手順4)
除数D3及び被除数N3が除数D3の整数部で除されることにより得られる値が、それぞれ、除数D4及び被除数N4とされる。除数D4の整数部は1であり、除数D4の小数部は1/9より小さいことが証明されることが可能である。このため、1≦D4<1.111…(1が無限に循環する数)である。
【0221】
(手順5)
除数D4及び被除数N4に0.9(=9×(1/10))が乗じられることにより得られる値が、それぞれ、除数D5及び被除数N5とされる。1≦D4<1.111…=10/9であるから、除数D5は、式(46)に示される範囲に収まる。
0.9≦D5<1 式(46)
手順1から手順5の結果、除数D5の分布は、その逆数が関数y=2-xで近似されることが可能な範囲に収まる。
【0222】
この後、逆数の近似及び乗算が繰り返されることにより、最新の除数Dと最新の被除数Nの商の分母が1に近づけられることが可能である。近似は、ゴールドシュミット法と同じく、関数y=2-xを用いて行われる。乗算の乗数として、十進1桁の値又は数値10のみが使用される。
【0223】
除数D5の逆数の近似値R5は、近似の式に基づいて、式(47)のように表される。
R5=2-D5 式(47)
0.9≦D5<1であるから、R5は式(48)に表される範囲に収まる。
1<R5≦1.1 式(48)
R5は、1より大きいので、式(49)のように表されることが可能である。
R5=1+r5 式(49)
式(48)に式(49)の関係が代入されることにより、式(50)が得られる。
0.00<r5≦0.10 式(50)
よって、100×r5の整数部の集合は、{1、2、…、9、10}である。このことに基づいて、以下の手順が行われる。
【0224】
(手順6)
除数D5及び被除数N5に、式(51)により表される除数D5の逆数の近似値が乗じられることにより得られる値が、それぞれ除数D6及び被除数N6とされる。
【0225】
【0226】
【0227】
は、xの床関数を示し、xの整数部を表す。
【0228】
ここで、式(47)及び式(49)から1-D5=r5であるため、式(51)中の
【0229】
【0230】
は、上で述べたように、1から10までの整数のいずれかである。
【0231】
0.9≦D5<1であるため、乗算が誤差なく実行されることが可能であるなら、除数D5とその逆数の近似値R5=2-D5との積は、式(52)に示される範囲に収まる。
0.99≦D5R5<1 式(52)
式(52)は、以下のように証明される。D5R5=D5(2-D5)は、D5=0及びD5=2である場合に0になる上に凸の2次曲線y=D5(2-D5)のうちの、0.9≦D5<1の部分である。2次曲線y=D5(2-D5)の頂点の座標は、(1,1)である。よって、区間0.9≦D5<1で曲線y=D5(2-D5)は単調増加である。
【0232】
式(46)に示されるD5の下限(=0.9)が1-10-1と表現されると、乗算が誤差なく理想的に行われることが可能であるとするなら、ゴールドシュミット法による繰返しによって次に得られる除数の下限は、(1-10-1)[2-(1-10-1)]=(1-10-1)(1+10-1)=1-10-2である。同じ近似が繰り返されると、近似された除数の下限は1-10-4=0.9999になる。
【0233】
よって、手順5での近似が1回の近似として定義され、ゴールドシュミット法による2回目以降の近似の回数がMとされると、除数の下限は、1-(10の-2M-1乗)である。この下限は、式(38)においてe=-0.1(=-10-1)である場合に相当する。
【0234】
ところが、手順6では、除数D5の逆数が式(51)によって表されるように近似されているので、ゴールドシュミット法による逆数の近似値R5=2-D5の小数第3位以下は切り捨てられる。このため、以下に記述される問題が発生する。
【0235】
図17は、除数D
5の種々の値の場合についての除数D
6の値を示す。
図17の第1列に範囲を区切って示したD
5の値に対して、同じ行の第2列に示した式(51)の値が乗じられるので、第1列の値と第2列の値との積であるD
6は、同じ行の第3列に示した範囲に分布する。例えば、式(51)の値が1.07である第5行(最上部の項目を示す行を第1行と数える)の場合、除数D
5の下限0.92に1.07を乗じることによって、除数D
6の下限0.9844が求まり、除数D
5の上限0.93に1.07を乗じることによって除数D
6の上限0.9951が求まる。
図17の第3列に示したD
6の範囲のうち、下限が最も小さいものは、第3行の0.9810<D
6≦0.9919であり、上限が最も大きいものは、最終行の0.9900<D
6<1.0000である。したがって、除数D
5に式(51)の値を乗じることによって得られる除数D
6は0.981<D
6<1の範囲に分布する。
図17から、本来0.99以上1未満の範囲に収まるべき除数D
6の値は、式(51)に含まれる切り捨てに起因して、0.981<D
6<1であることがわかる。このことに基づいて、手順7が実行される。
【0236】
(手順7)
除数D6に数値1.01=1+1/100を乗じることにより得られる値が1未満である場合、除数D7がD6+D6/100とされ、被除数N7がN6+N6/100とされる。積が1未満でない場合、D7=D6とされ、N7=N6とされる。
【0237】
手順7により、新しい除数D7は0.99≦D7<1の範囲に収まる。これは、以下のように証明される。0<a≦x<1である場合、1<b<1/aを満たす数bが用いられて、式(53)に示される変換が行われる。
【0238】
【0239】
この様子が
図18に示される。
図18中の点Aの座標は(a,ab)であり、点Bの座標は(1/b,1/b)である。したがって、関数y=g(x)の下限は、式(54)のように表される。
【0240】
【0241】
手順7は、関数y=g(x)の式で、a=0.981、b=1.01の場合に相当する。ab=0.99081、1/b=0.9900…であるため、y=g(x)の下限は1/b=1/1.01≧0.99であることが証明される。
【0242】
この後は、手順6及び手順7に相当する2つの処理が交互に繰り返されることにより、Dkは1に近づけられることが可能であり、被除数Nkは商Qに近づけられることが可能である。この処理の一般化された形態は、以下の手順8及び手順9として行われる。
【0243】
(手順8)
除数D7及び被除数N7に、式(55)に示される除数D7の逆数の近似値が乗じられることにより、それぞれ、除数D8及び被除数N8が得られる。
【0244】
【0245】
除数D7の逆数が式(45)によって2-D7に近似され、この近似値と除数D7との乗算が誤差なく行われることが可能であるなら、除数D7は式(56)に示される範囲に収まる。
0.9999≦D7(2-D7)<1 式(56)
一方、手順6で記述される理由と同じ理由から、除数D8は式(57)の範囲に分布する。
0.99891<D8<1 式(57)
(手順9)
除数D8及び数値1.001=1+1/1000の積が1未満ならば、新しい除数D9及び被除数N9が、それぞれ、D9=D8+D8/1000とされ、N9=N8+N8/1000とされる。そうでなければ、D9=D8、N9=N8とされる。
【0246】
手順7について記述される理由と同じ理由から、除数D9は0.999≦D8<1の範囲に分布する。
【0247】
手順6及び手順8によって、式(51)は、演算前の除数Dk及び被除数Nkの添え字k(kは5以上の奇数(k=5、7、9、…))を用いて、式(58)のように一般化される。
【0248】
【0249】
手順7及び手順8で用いられる数値1.01と1.001は、1つ前の手順における演算前の除数Dk及び被除数Nkの添え字kを用いて、式(59)のように一般化される。
【0250】
1+1/10(k-1)/2 式(59)
さらに、(k-1)/2がm(mは2以上の自然数)で置換されることにより、式(58)及び式(59)は、それぞれ、式(60)及び式(61)として表される。
【0251】
【0252】
1+1/10
m 式(61)
式(60)及び式(61)に基づくと、
図18及び手順7についての記述における証明において用いられるa及びbの値は、それぞれ以下のように表される。
【0253】
【0254】
b=1+10-m 式(63)
10-mがcで置換されることにより、式(62)及び式(63)から式(64)が得られる。
ab2-1>(1+c)2(1+9c)(1-10c)-1 式(64)
式(64)は、0<c≦10-2であるため、式(65)のように変形される。
【0255】
ab2-1>c(1-91c-181c2-90c3)>0 式(65)
よって、ab>1/bが成り立つ。
【0256】
また、1/bは、以下のように変形される。
1/b=1/(1+c)
=1-c+c2-c3+c4-c5+c6-…
=1-c+c2/(1+c)>1-c(∵c>0)
このため、式(66)が成り立つ。
1/b>1-c=1-10-m=1-10-(k-1)/2 式(66)
以上より、手順5よりも後の処理は、k=5、7、9、…であるとすると、次の2つの手順の繰返しとして、一般化される。
【0257】
(手順(k+1))
除数Dk及び被除数Nkに、式(67)により示される除数Dkの逆数の近似値が乗じられることにより、それぞれ、除数Dk+1及び被除数Nk+1が得られる。
【0258】
【0259】
(手順(k+2))
Dk+1+Dk+1/10(k-1)/2<1である場合、Dk+2はDk+1+Dk+1/10(k-1)/2とされ、Nk+2はNk+1+Nk+1/10(k-1)/2とされる。Dk+1+Dk+1/10(k-1)/2<1でない場合、Dk+2はDk+1とされ、Nk+2はNk+1とされる。
【0260】
手順k+1及び手順k+2の処理の後、除数D
k+2は1-10
-(k-1)/2≦D
k+2<1の範囲に分布する。このため、商Qの演算精度が十進s桁の場合は、(k-1)/2=sであるから、k+2=2s+3までの手順が実行されるとともに商QがN
k+2とされることにより除算が完了する。
5.2.2. 演算装置の動作
図19は、第5実施形態の演算回路100eの動作のフローを示す。特に、
図19は、除算の計算のためのフローを示す。
【0261】
図19のフローは、制御回路3eが入力信号SINと入力信号Smを受け取ると開始する。入力信号SINは被除数Nを伝送し、入力信号Smは除数Dを伝送する。
【0262】
ST21、ST22、ST23、及びST24は、それぞれ、上記の手順1、手順2、手順3、及び手順4の実行に相当する。ST26及びST27の組は、手順5の実行に相当する。ST31、ST32、ST33、ST34、ST35、ST36、ST37、ST41、ST42、ST43、ST44、ST45、及びST46は、手順6、手順8、又は手順(k+1)の実行に相当する。ここで、kは5以上の奇数である。ST51、ST52、ST53、ST54、ST55、ST56、及びST57の組は、手順7、手順9、又は手順(k+2)に相当する。
【0263】
図19のフローでは、一連の手順の最後に変数QがN
k+2とされる処理を省略するため、フローの開始直後に、被乗数が変数Qに置換されている。
【0264】
制御回路3eは、変数s、M、D、及びQに、以下に記述される値をセットする(ST21)。制御回路3eは、変数sに、商の演算精度、すなわち十進の有効桁数をセットする。商の演算精度は、例えば、演算回路100eの外部から供給される。制御回路3eは、変数Mに、1をセットする。制御回路3eは、変数Dに、1以上2未満の値に正規化された除数をセットする。制御回路3eは、変数Qに、正規化された被除数Nをセットする。また、制御回路3eは、一時変数i、r、D
0、及びQ
0を準備する。Mは演算ループの繰返し回数を制御するために使用される変数である。Qは
図19のフローの終了のときに商となる値を格納している変数である。iはループの制御に使用される変数である。rは逆数の近似に用いられる変数である。D
0はDの値を一時的に維持するために使用される変数である。Q
0はQの値を一時的に維持するために使用される変数である。変数i、s、及びMは、例えば、制御回路3eにおいて記憶される。変数D、Q、D
0、Q
0、及びrは、例えば、データ記憶回路LCによって記憶される。
【0265】
制御回路3eは、演算装置OPを使用して5×Dを計算し、算出された値でDを更新するとともに、演算装置OPを使用して5×Qを計算し、算出された値でQを更新する(ST22)。
【0266】
制御回路3eは、演算装置OPを使用してDをDの整数部で除し、算出された値でDを更新するとともに、演算装置OPを使用してQをQの整数部で除し、算出された値でQを更新する(ST23)。ST23での表記を含め、図では、「の整数部」は床関数を使用して表現されている。
【0267】
制御回路3eは、演算装置OPを使用して9×Dを計算し、算出された値でDを更新するとともに、演算装置OPを使用して9×Qを計算し、算出された値でQを更新する(ST24)。
【0268】
制御回路3eは、演算装置OPを使用してDをDの整数部で除し、算出された値でDを更新するとともに、演算装置OPを使用してQをQの整数部で除し、算出された値でQを更新する(ST25)。
【0269】
制御回路3eは、演算装置OPを使用して9×Dを計算し、算出された値でDを更新するとともに、演算装置OPを使用して9×Qを計算し、算出された値でQを更新する(ST26)。
【0270】
制御回路3eは、演算装置OPを使用してD/10を計算し、算出された値でDを更新するとともに、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する (ST27)。
【0271】
制御回路3eは、sが1と等しいかを判断する(ST28)。
【0272】
sが1と等しくない場合(ST28_No)、これは、sとして設定された演算精度を満たす除算が完了していないことを意味する。このことに基づいて、制御回路3eは、データ記憶回路LCにおいて、D0をDの値で更新するとともに、Q0をQの値で更新する(ST31)。
【0273】
制御回路3eは、演算装置OP、符号反転器CM、及び加算器ADを使用して1-Dを算出し、算出された値でrを更新する(ST32)。
【0274】
制御回路3eは、MをM+1で更新する(ST33)。
【0275】
制御回路3eは、iを0で更新する(ST34)。
【0276】
制御回路3eは、演算装置OPを使用して10×rを算出し、算出された値でrを更新する(ST35)。
【0277】
制御回路3eは、iがM-1と等しいかを判断する(ST36)。
【0278】
iがM-1と等しくない場合(ST36_No)、制御回路3eは、iをi+1で更新する(ST37)。処理は、ST35に継続する。
【0279】
iがM-1と等しい場合(ST36_Yes)、制御回路3eは、演算装置OPを使用してrの整数部とDとの積を算出し、算出された積でDを更新するとともに、演算装置OPを使用してrの整数部とQとの積を算出し、算出された積でQを更新する(ST41)。
【0280】
制御回路3eは、iを0で更新する(ST42)。
【0281】
制御回路3eは、演算装置OPを使用してD/10を計算し、算出された値でDを更新するとともに、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する (ST43)。
【0282】
制御回路3eは、iがM-1と等しいかを判断する(ST44)。
【0283】
iがM-1と等しくない場合(ST44_No)、制御回路3eは、iをi+1で更新する(ST45)。処理は、ST43に継続する。
【0284】
iがM-1と等しい場合(ST44_Yes)、制御回路3eは、演算装置OP及び加算器ADを使用してD0+Dを算出し、算出された値でDを更新するとともに、演算装置OP及び加算器ADを使用してQ0+Qを算出し、算出された値でQを更新する(ST46)。
【0285】
制御回路3eは、ST51、ST52、ST53、及びST54として行われる処理を行う。ST51、ST52、ST53、及びST54として行われる処理は、それぞれ、ST31、ST42、ST43、及びST44として行われる処理と同じである。
【0286】
iがM-1と等しくない場合(ST54_No)、制御回路3eは、iをi+1で更新する(ST55)。処理は、ST53に継続する。
【0287】
iがM-1と等しい場合(ST54_Yes)、制御回路3eは、演算装置OP及び加算器ADを使用してD0+Dを算出し、算出された値が1未満であるかを判断する(ST56)。
【0288】
D0+Dが1未満である場合(ST56_YES)、制御回路3eは、演算装置OP及び加算器ADを使用してD0+Dを算出し、算出された値でDを更新するとともに、演算装置OP及び加算器ADを使用してQ0+Qを算出し、算出された値でQを更新する(ST46)。
【0289】
D0+Dが1未満でない場合(ST56_No)、制御回路3eは、DをD0で更新するとともに、QをQ0で更新する(ST58)。
【0290】
ST57及びST58の後、処理は、ST59に継続する。制御回路3eは、sをs-1で更新する(ST59)。ST59の後、処理は、ST28に継続する。
【0291】
sが1と等しい場合(ST28_Yes)、これは、sとして設定された演算精度を満たす除算が完了したことを意味する。よって、フローは終了する。
図19のフローの終了の時点のQが、被除数Nが除数Dで除されることにより得られる値である。制御回路3eは、フローが終了すると、データ記憶回路LCを制御して、商を伝送する信号SOUTを出力する。
【0292】
5.3.利点
第5実施形態の演算回路100eは、演算装置OPを含み、演算装置OPを使用して、被除数Nを除数Dで除した商を算出できる。また、演算回路100eは、十進数で指定された桁数の演算精度で演算を行える。
【0293】
6.第6実施形態
第6実施形態は、演算回路100による動作の点で、第1~第5実施形態と異なる。第6実施形態の演算回路100は、第1実施形態の演算回路100との区別のために、演算回路100fと称される場合がある。
【0294】
6.1.構成
演算回路100fは、後述の動作を実行できる限り、どのような構成を有していてもよい。演算回路100fの構成の例は、第7実施形態において記述される。演算回路100fは、第5実施形態の演算回路100eと同じ構成を有していてもよい。第6実施形態における入力Smは、第1及び第2実施形態における入力Smとは異なり、二進数である。
【0295】
6.2.動作
図20及び
図21は、第6実施形態の演算回路100fの動作のフローを示す。特に、
図20及び
図21は、除算のためのフローを示す。
図21のフローは、
図20のフローに後続する。以下、例として、演算回路100fが第5実施形態の演算回路100eの構成(
図15)と同じ構成を有するケースについて記述される。以下の記述で、第6実施形態の制御回路3は、第5実施形態の制御回路3eとの区別のために、制御回路3fと称される場合がある。
図20及び
図21のフローは、制御回路3fが、入力信号SINと入力信号Smを受け取ると開始する。
【0296】
制御回路3fは、変数s、M、j、及びQに、以下に記述される値をセットする(ST61)。制御回路3fは、変数sに商の演算精度、すなわち十進の有効桁数をセットする。制御回路3fは、変数Mに1をセットし、変数jに0をセットする。制御回路3fは、変数Qに1以上2未満の値に正規化された除数をセットする。また、制御回路3fは、一時変数i、r、及びQ
0、並びに配列Fを準備する。変数i、s、j、及びM、並びに配列Fは、例えば、制御回路3fにおいて記憶される。変数r、Q
0、及びQは、例えば、データ記憶回路LCによって記憶される。配列Fは、2s+2個の要素を有する。F[j]は配列Fの第j要素(j=0、1、…、2s+1)である。配列Fの各要素は0から9または10の整数が記憶できればよいので、配列Fは、各要素に対して少なくも4ビットの大きさを有する。配列Fは、先入れ先出し記憶の原則に則って参照され、すなわちFIFOメモリと同じ動作をするように制御される。Mは演算ループの繰返し回数を制御するために使用される変数である。Qは
図20及び
図21のフローの終了のときに商となる値を格納している変数である。iはループの制御に使用される変数である。jは配列Fの要素を指定するために使用される変数である。
【0297】
固定小数点演算の場合、扱われる数の小数点の位置が固定されている。このため、除数の正規化によるビット列の論理シフト又は算術シフトの量と、被除数の正規化によるビット列の論理シフト又は算術シフトの量が一致している必要がある。この目的で、除数の正規化によって行われた論理シフト又は算術シフトの量が、或る符号付変数によって、例えば左方向(最上位ビット側)への論理シフト又は算術シフトが正と定義された上で、記憶される。そして、被除数のビット列は、符号付変数によって記憶された値だけ、論理シフト又は算術シフトされ、論理シフト又は算術シフトされたビット列がQに代入される。又は、配列Fの各要素に割り当てられたビット幅が、除数に対する論理シフト又は算術シフトの量を記憶できるほどの大きさを有する場合、配列のFに、除数に対する論理シフト又は算術シフトの量が記憶され、これが参照されてもよい。
【0298】
制御回路3fは、演算装置OPを使用して5×Qを計算し、算出された値でQを更新する(ST62)。
【0299】
制御回路3fは、演算装置OPを使用してQをQの整数部で除し、算出された値でQを更新し、配列F[j]にQの整数部を入力し、jをj+1で更新する(ST63)。
【0300】
制御回路3fは、演算装置OPを使用して9×Qを計算し、算出された値でQを更新する(ST64)。
【0301】
制御回路3fは、演算装置OPを使用してQをQの整数部で除し、算出された値でQを更新し、配列F[j]にQの整数部を入力し、jをj+1で更新する(ST65)。
【0302】
制御回路3fは、演算装置OPを使用して9×Qを計算し、算出された値でQを更新する(ST66)。
【0303】
制御回路3fは、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する(ST67)。
【0304】
制御回路3fは、sが1と等しいかを判断する(ST68)。
【0305】
sが1と等しくない場合(ST68_No)、制御回路3fは、データ記憶回路LCにおいて、Q0をQで更新する(ST71)。
【0306】
制御回路3fは、演算装置OP、符号反転器CM、及び加算器ADを使用して1-Qを算出し、算出された値でrを更新する(ST72)。
【0307】
制御回路3fは、MをM+1で更新する(ST73)。
【0308】
制御回路3fは、iを0で更新する(ST74)。
【0309】
制御回路3fは、演算装置OPを使用して10×rを算出し、算出された値でrを更新する(ST75)。
【0310】
制御回路3fは、iがM-1と等しいかを判断する(ST76)。
【0311】
iがM-1と等しくない場合(ST76_No)、制御回路3fは、iをi+1で更新する(ST77)。処理は、ST75に継続する。
【0312】
iがM-1と等しい場合(ST76_Yes)、制御回路3fは、演算装置OPを使用してrの整数部とQとの積を算出し、算出された積でQを更新し、配列F[j]にrの整数部を入力し、jをj+1で更新する(ST81)。
【0313】
制御回路3fは、iを0で更新する(ST82)。
【0314】
制御回路3fは、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する(ST83)。
【0315】
制御回路3fは、iがM-1と等しいかを判断する(ST84)。
【0316】
iがM-1と等しくない場合(ST84_No)、制御回路3fは、iをi+1で更新する(ST85)。処理は、ST83に継続する。
【0317】
iがM-1と等しい場合(ST84_Yes)、制御回路3fは、演算装置OCを使用してQ0+Qを算出し、算出された値でQを更新する(ST86)。
【0318】
制御回路3fは、ST91、ST92、ST93、及びST94として行われる処理を行う。ST91、ST92、ST93、及びST94として行われる処理は、それぞれ、ST71、ST82、ST83、及びST84として行われる処理と同じである。
【0319】
iがM-1と等しくない場合(ST94_No)、制御回路3fは、iをi+1で更新する(ST95)。処理は、ST93に継続する。
【0320】
iがM-1と等しい場合(ST94_Yes)、制御回路3fは、演算装置OP及び加算器ADを使用してQ0+Qを算出し、算出された値が1未満であるかを判断する(ST96)。
【0321】
Q0+Qが1未満である場合(ST96_YES)、制御回路3fは、QをQ0+Qで更新し、配列F[j]に1を入力し、jをj+1で更新する(ST97)。
【0322】
Q0+Qが1未満でない場合(ST96_No)、制御回路3fは、QをQ0で更新し、配列F[j]に0を入力し、jをj+1で更新する(ST98)。
【0323】
ST97及びST98の後、処理は、ST99に継続する。制御回路3fは、sをs-1で更新する(ST99)。ST99の後、処理は、ST68に継続する。
【0324】
sが1と等しい場合(ST68_Yes)、
図21に示されるように、制御回路3fは、変数s、M、j、及びQに、以下に記述される値をセットする(ST101)。制御回路3fは、変数sに商の演算精度、すなわち十進の有効桁数をセットする。制御回路3fは、変数Mに1をセットし、変数jに0をセットする。制御回路3fは、変数Qに1以上2未満の値に正規化された被除数をセットする。
【0325】
制御回路3fは、演算装置OPを使用して5×Qを計算し、算出された値でQを更新する(ST102)。
【0326】
制御回路3fは、演算装置OPを使用してQをF[j]で除し、jをj+1で更新する(ST103)。
【0327】
制御回路3fは、演算装置OPを使用して9×Qを計算し、算出された値でQを更新する(ST104)。
【0328】
制御回路3fは、演算装置OPを使用してQをF[j]で除し、jをj+1で更新する(ST105)。
【0329】
制御回路3fは、演算装置OPを使用して9×Qを計算し、算出された値でQを更新する(ST106)。
【0330】
制御回路3fは、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する(ST107)。
【0331】
制御回路3fは、sが1と等しいかを判断する(ST108)。
【0332】
sが1と等しくない場合(ST108_No)、制御回路3fは、データ記憶回路LCにおいて、Q0をQで更新する(ST111)。
【0333】
制御回路3fは、MをM+1で更新する(ST112)。
【0334】
制御回路3fは、演算装置OPを使用してF[j]にQを乗じ、算出された値でQを更新し、jをj+1で更新する(ST113)。
【0335】
制御回路3fは、iを0で更新する(ST114)。
【0336】
制御回路3fは、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する(ST115)。
【0337】
制御回路3fは、iがM-1と等しいかを判断する(ST116)。
【0338】
iがM-1と等しくない場合(ST116_No)、制御回路3fは、iをi+1で更新する(ST117)。処理は、ST115に継続する。
【0339】
iがM-1と等しい場合(ST116_Yes)、制御回路3fは、演算装置OPを使用してQ0+Qを算出し、算出された値でQを更新する(ST121)。
【0340】
制御回路3fは、Q0をQで更新する(ST122)。
【0341】
制御回路3fは、iを0で更新する(ST123)。
【0342】
制御回路3fは、演算装置OPを使用してQ/10を計算し、算出された値でQを更新する(ST124)。
【0343】
制御回路3fは、iがM-1と等しいかを判断する(ST125)。
【0344】
iがM-1と等しくない場合(ST125_No)、制御回路3fは、iをi+1で更新する(ST126)。処理は、ST124に継続する。
【0345】
iがM-1と等しい場合(ST125_Yes)、
制御回路3fは、演算装置OPを使用してF[j]にQを乗じ、算出された値でQを更新し、jをj+1で更新する(ST127)。
【0346】
制御回路3fは、演算装置OP及び加算器ADを使用してQ0+Qを算出し、算出された値でQを更新する(ST128)。
【0347】
制御回路3fは、sをs-1で更新する(ST129)。ST129の後、処理は、ST108に継続する。
【0348】
sが1と等しい場合(ST108_Yes)、フローは終了する。
図20及び
図21のフローの終了の時点のQが、被除数Yで除数Xが除されることにより得られる結果に等しい。制御回路3fは、フローが終了すると、データ記憶回路LCを制御して、商を伝送する信号SOUTを出力する。
【0349】
6.3.利点
第6実施形態の演算回路100fは、演算装置OPを含み、演算装置OPを使用して、被除数Nを除数Dで除した商を算出できる。また、演算回路100fは、十進数で指定された桁数の演算精度で演算を行える。
【0350】
第5実施形態では、
図19の例えばST22及びST23として行われる処理から分かるように、被除数Qに対する処理と除数Dに対する処理が並行して行われる。これに対して、第6実施形態では、配列Fが使用されることによって、除数に対する処理と、被除数に対する処理が、フローのうちの互いに独立した部分で集中して行われる。すなわち、まず、
図20に示されるように、除数に対する処理が全て行われるとともに、除数に対する処理の結果の一部が配列Fに記憶される。次に、
図21に示されるように、被乗数に対する処理が、配列Fに記憶されている値が参照されながら行われる。このような処理によって、場合によっては、第5実施形態での商が得られるまでの時間よりも短い時間で商が得られる。例えば、除数が定数である場合のように、除数の値だけが決定されているが、被除数がまだ決定されておらず、決定までに時間を要する場合があり得る。このような場合に、第6実施形態によれば、除数が決定されてから被除数が決定されるまでの時間が、除数に対する処理に充てられることによって、被除数の決定と除算が部分的に並行して行われることが可能である。このため、被除数の決定まで除算の開始が待機する必要性を有さず、全体で、商が得られるまでの時間が第5実施形態での時間より短い。
【0351】
7.1.第7実施形態
第7実施形態は、第6実施形態の演算回路100fの具体的な回路の例に関する。第7実施形態の演算回路100は、第6実施形態との区別のために、演算回路100gと称される場合がある。
【0352】
7.1.構成
図22は、第7実施形態の演算回路中の構成要素及び構成要素の接続を示す。
図22に示されるように、演算回路100gは、第6実施形態(すなわち、第5実施形態)と同じ構成を有する。ただし、第7実施形態の制御回路3及び演算部9は、第6実施形態の制御回路3f及び演算部9とは異なっており、第6実施形態の制御回路3fとの区別のために、それぞれ、制御回路3g及び演算部9gと称される場合がある。第7実施形態における入力Smは、第1及び第2実施形態における入力Smとは異なり、二進数である。
【0353】
制御回路3gは、演算部9gを制御する。その目的で、制御回路3gは、制御信号として、演算部9gに種々のデジタル値を示す制御信号を供給する。制御回路3gは、演算部9gに、少なくとも2ビットの入力選択信号SRC1<1:0>、少なくとも2ビットの入力選択信号SRC2<1:0>、少なくとも5ビットの入力選択信号SRC3<4:0>、少なくとも2ビットの書込みイネーブル信号DST<1:0>、少なくとも1ビットのイネーブル信号FIFOEN、少なくとも1ビットの条件付き演算選択信号CND、クロック信号CLK、リセット信号 ̄RST、制御信号SL、少なくとも1ビットの加減算選択信号Sp1、及び少なくとも1ビットの乗除算選択信号Sp2を供給する。信号を特定する参照符号の末尾の「<>」により囲まれた値は、この信号のビットの位置を表す。例えば、「信号SRC<P>」(Pは0または正の整数)は、信号SRCのビット列のうちの最下位ビットから最上位ビットに向かってP番目のビットを伝送することを指す。「信号SRC<P:R>」(P及びRは0または正の整数)は、信号SRCのビット列のうちの最下位ビットから最上位ビットに向かってR番目のビットから、最下位ビットから最上位ビットに向かってP番目のビットの信号を指す。信号名の先頭の記号「 ̄」は、否定の論理を指す。制御信号SLは、値2-L-1を伝送する。なお、制御信号SLは、固定値であってもよい。
【0354】
図23は、第7実施形態の演算回路100g中の要素及び接続を示す。
図23に示されるように、演算回路100gは、演算装置OP、マルチプレクサMX21~24、26、27、MX31~MX34、MX43、及びMX44、インバータIV11及びIV12、インクリメンタINC11、加算器AD31及びAD32、レジスタRG1及びRG2、ANDゲートAG11及びAG12、デコーダDC、及びFIFOメモリFMを含む。
【0355】
マルチプレクサMX21は、第1入力によって入力信号Smを受け取り、第2入力によって入力信号SINを受け取る。入力信号SINは、被除数Nを伝送する。入力信号Smは、除数Dを伝送する。マルチプレクサMX21は、選択信号として入力選択信号SRC2<0>を受け取る。マルチプレクサMX21は、入力信号SIN及び入力信号Smのうちの入力選択信号SRC2<0>に基づいて選択される一方を信号S31として出力する。信号S31は、nビットの値を伝送する。
【0356】
信号S31は、マルチプレクサMX22の第2入力によって受け取られる。マルチプレクサMX22は第1入力によってマルチプレクサMX23から出力される信号S32を受け取る。マルチプレクサMX22は、選択信号として入力選択信号SRC2<1>を受け取る。マルチプレクサMX22は、信号S31及び信号S32のうちの入力選択信号SRC2<1>に基づいて選択される一方をnビットの値を伝送する信号S33として出力する。
【0357】
信号S33は、演算装置OPによって、信号YINとして受け取られる。演算装置OPは、第1実施形態、第3実施形態、及び第4実施形態のいずれの演算装置OPであってもよい。演算装置OPは、信号YINに対して、第1~第7実施形態の何れかの処理を実行し、実行結果として信号ZOUTを出力する。
【0358】
演算装置OPの信号ZOUTは、加算器AD31の第1入力によって受け取られる。加算器AD31は、第2入力によって、信号SLを受け取る。信号SLは、定数2-L-1を伝送する。Lは、演算回路100gによって得られる演算の結果が有することを要求される二進数の小数点以下のビット(桁)の数を指定する。一般に、2つの二進数の積は、2つの二進数の各々のビット数の和に等しいビット数を有する。このため、乗算が繰り返されると、積のビット数が増え続け、積のビット数が非常に大きくなる。これを制限する方法は、2-L-1の位以下のビットを切り捨てる方法と、四捨五入による丸めを行う方法を含む。丸めを行う方が、一般に、結果の誤差が小さい。丸めは、被乗数の最下位ビットの重みが2-Lの場合、信号ZOUTによって伝送される値(積)に2-L-1が足されるとともに、2-L-1の位以下のビットがすべて破棄されることにより行われることが可能である。加算器AD31は、この丸めを行うために設けられている。加算器AD31は、信号S34を出力する。信号S34は、信号ZOUTによって伝送される値に2-L-1が加えられるとともに、2-L-1の位以下のビットがすべて破棄されることにより得られる値を伝送する。信号S34は、信号ZOUTによって伝送されるビット列のうちの整数部のビット全てと小数点以下Lビット(以下、上位ビット列と称される場合がある)の組からなる値を伝送する。
【0359】
信号S34は、インバータIV11によって受け取られる。インバータIV11は、信号S35を出力する。信号S35は、複数ビットの値を伝送する。
【0360】
信号S35は、インクリメンタINC11によって受け取られる。インクリメンタINC11は、信号S36を出力する。信号S36は、信号S35によって伝送される値の最下位ビットに1が加えられることによって得られる複数ビットの値を伝送する。したがって、信号S36は、信号S34の値(上位ビット列)が2の補数形式であるとともに信号S35の符号から反転された符号を有する値を伝送する。
【0361】
信号S36は、マルチプレクサMX24の第2入力によって受け取られる。マルチプレクサMX24は、第1入力によって、信号S34の値(上位ビット列)を受け取る。マルチプレクサMX24は、選択信号として加減算選択信号Sp1を受け取る。マルチプレクサMX24は、信号S34及び信号S36のうちの加減算選択信号Sp1に基づいて選択される一方を信号S37として出力する。信号S37は、複数ビットの値を伝送する。
【0362】
信号S37は、加算器AD32の第1入力によって受け取られる。加算器AD32は、第2入力によって信号S41を受け取り、信号S42を出力する。信号S41は、後に詳述されるように、整数部において1を有するとともに小数部の全てのビットにおいて0を有する値(1.0…0)、整数部及び小数部の全てのビットにおいて0を有する値(0.0…0)、又は、レジスタRG1から出力される信号S43によって伝送される値を伝送する。より具体的には、以下の通りである。
【0363】
整数部及び小数部の全てのビットにおいて0を有する値は、マルチプレクサMX26の第1入力によって受け取られる。整数部において1を有するとともに小数部の全てのビットにおいて0を有する値は、マルチプレクサMX26の第2入力によって受け取られる。マルチプレクサMX26は、選択信号として、信号SRC1<0>を受け取る。マルチプレクサMX26は、整数部及び小数部の全てのビットにおいて0を有する値と、整数部において1を有するとともに小数部の全てのビットにおいて0を有する値のうちの信号SRC1<0>に基づいて選択される一方を信号S38として出力する。信号S38は、複数ビットの値を伝送する。
【0364】
信号S38は、マルチプレクサMX27の第2入力によって受け取られる。マルチプレクサMX27は、第1入力によって、レジスタRG1から出力される信号S43を受け取る。マルチプレクサMX27は、選択信号として、信号SRC1<1>を受け取る。マルチプレクサMX31は、信号S43及び信号S38のうちの信号SRC1<1>に基づいて選択される一方を信号S41として出力する。信号S41は、複数ビットの値を伝送する。
【0365】
信号S42は、マルチプレクサMX31の第2入力によって受け取られる。マルチプレクサMX31は、第1入力によって、レジスタRG1から出力される信号S43を受け取る。マルチプレクサMX31は、選択信号として、ANDゲートAG11から出力される信号S44を受け取る。マルチプレクサMX31は、信号S42及び信号S43のうちの信号S44に基づいて選択される一方を信号S45として出力する。信号S45は、複数ビットの値を伝送する。
【0366】
信号S45は、レジスタRG1のデータ入力によって受け取られる。レジスタRG1は、クロック入力によってクロック信号CLKを受け取り、リセット入力によってリセット信号 ̄RSTを受け取る。レジスタRG1は、データ入力によって受け取られる信号S45の値を、クロック信号CLKの立上りエッジに基づいて取り込み、記憶する。レジスタRG1は、記憶されている値を、クロック信号CLKの立上りエッジに基づいて、信号S43として出力する。信号S43は、演算回路100gによる一連の処理が完了した時点で、被除数Nと除数Dとの商Qを伝送する。
【0367】
信号S42は、マルチプレクサMX32の第2入力によって受け取られる。マルチプレクサMX32は、第1入力によって、レジスタRG2から出力される信号S47を受け取る。マルチプレクサMX32は、選択信号として、書込みイネーブル信号DST<1>を受け取る。マルチプレクサMX32は、信号S42及び信号S47のうちの書込みイネーブル信号DST<1>に基づいて選択される一方を信号S48として出力する。信号S48は、複数ビットの値を伝送する。
【0368】
信号S48は、レジスタRG2のデータ入力によって受け取られる。レジスタRG2は、クロック入力によってクロック信号CLKを受け取り、リセット入力によってリセット信号 ̄RSTを受け取る。レジスタRG2は、データ入力によって受け取られる信号S48の値を、クロック信号CLKの立上りエッジに基づいて取り込み、記憶する。レジスタRG2は、記憶されている値を、クロック信号CLKの立上りエッジに基づいて、信号S47として出力する。信号S47は、複数ビットの値Rを伝送する。
【0369】
信号S47は、マルチプレクサMX23の第2入力によって受け取られる。マルチプレクサMX23は、第1入力によって、レジスタRG1から出力される信号S43を受け取る。マルチプレクサMX23は、選択信号として、信号SRC2<0>を受け取る。マルチプレクサMX23は、信号S43及び信号S47のうちの入力選択信号SRC2<0>に基づいて選択される一方を信号S32として出力する。信号S32は、複数ビットの値を伝送する。
【0370】
加算器AD32からの信号S42によって伝送される値のうちの整数部の最下位ビットから最上位ビットに向かって4つ目までのビットの組(以下、信号U<3:0>と称される場合がある)は、マルチプレクサMX33の第1入力によって受け取られる。マルチプレクサMX33は、第2入力によって、マルチプレクサMX34から4ビットの値を伝送する信号S52を受け取る。マルチプレクサMX33、選択信号として、条件付き演算選択信号CNDを受け取る。マルチプレクサMX33は、信号U<3:0>及び信号S52のうちの条件付き演算選択信号CNDに基づいて選択される一方を信号S51として出力する。
【0371】
加算器AD32からの信号S42によって伝送される値のうちの整数部の最下位ビット(以下、信号U<0>と称される場合がある)は、マルチプレクサMX34によって、選択信号として受け取られる。マルチプレクサMX34は、第1入力によって4ビットの値“0000”を受け取り、第2入力によって4ビットの値“0001”を受け取る。マルチプレクサMX34は、値“0000”又は値“0001”のうちの信号U<0>に基づいて選択される一方を信号S52として出力する。信号S52は、4ビットの値を伝送する。
【0372】
信号U<0>は、ANDゲートAG12の第1入力によって受け取られる。ANDゲートAG12は、第2入力によって、条件付き演算選択信号CNDを受け取る。ANDゲートAG12は、信号U<0>と条件付き演算選択信号CNDとの論理積を演算し、演算結果の信号を出力する。
【0373】
ANDゲートAG12から出力される信号は、インバータIV12によって受け取られる。インバータIV12から出力される信号は、ANDゲートAG11の第1入力によって受け取られる。ANDゲートAG11は、第2入力によって、書込みイネーブル信号DST<0>を受け取る。ANDゲートAG12は、インバータIV12から出力される信号と書込みイネーブル信号DST<0>との論理積を演算する。ANDゲートAG11は、演算結果として、信号S44を出力する。
【0374】
マルチプレクサMX33からの信号S51は、FIFOメモリFMによって受け取られる。FIFOメモリFMは、先入れ先出し方式で、信号S51の値を記憶及び出力する。FIFOメモリFMは、イネーブル信号FIFOEN、クロック信号CLK、及びリセット信号 ̄RSTを受け取る。FIFOメモリFMは、ハイレベルのイネーブル信号FIFOENを受け取っている間、動作する。
【0375】
FIFOメモリFMは、2(s+1)個の記憶部MS(MS0、MS1、…MS2s+1)を有する。2(s+1)個の記憶部MSは、直列に接続されている。すなわち、qが0又は2s+1以下の正の整数の全てのケースについて、記憶部MSqは、信号FIFOqを出力する。qが0又は2s以下の正の整数の全てのケースについて、信号FIFOqは、記憶部MSq+1によって受け取られる。各記憶部MSは、イネーブル信号FIFOEN、クロック信号CLK、及びリセット信号 ̄RSTを受け取る。
【0376】
FIFOメモリFMは、クロック信号CLKの立上りエッジに基づいて、信号S51の値を取り込むとともに各記憶部MSに記憶されている値をこの記憶部MSの出力に接続された次の記憶部MSにおいて記憶する。
【0377】
記憶部MS0の出力FIFO0は、マルチプレクサMX43の第2入力によって受け取られる。マルチプレクサMX43は、第1入力によって、記憶部MS2s+1の出力FIFO2s+1を受け取る。マルチプレクサMX43は、選択信号として、入力選択信号SRC3<0>を受け取る。マルチプレクサMX43は、信号FIFO2s+1及び信号FIFO0のうちの入力選択信号SRC3<0>に基づいて選択される一方を信号S61として出力する。信号S61は、複数ビット値を伝送する。
【0378】
信号S61は、マルチプレクサMX44の第2入力によって受け取られる。マルチプレクサMX44は、第1入力によって、入力選択信号SRC3<3:0>を受け取る。マルチプレクサMX44は、選択信号として、入力選択信号SRC3<4>を受け取る。マルチプレクサMX44は、信号S61及び入力選択信号SRC3<3:0>のうちの入力選択信号SRC3<4>に基づいて選択される一方を4ビットの信号S62<3:0>として出力する。
【0379】
信号S62は、デコーダDCによって受け取られる。デコーダDCは、信号S62<3:0>及び乗除算選択信号Sp2に基づく値を有する制御信号SEL0~SEL7を出力する。制御信号SEL0~SEL7は、演算装置OPに供給される。
【0380】
図24は、第7実施形態のFIFOメモリの構成要素及び構成要素の接続の例を示す。
図24に示されるように、qが0及び2(s+1)以下の正の整数の全てのケースについて、記憶部MS
qは、マルチプレクサMX41
q、レジスタRG11
qを含む。qが0及び2(s+1)以下の正の整数の全てのケースについて、マルチプレクサMX41
qは、イネーブル信号FIFOENを選択信号として受け取り、第1入力及び第2入力で受け取られる信号のうちのイネーブル信号FIFOENに基づいて選択される一方を、レジスタRG11
qのデータ入力に供給する。各レジスタRG11
qは、クロック入力によってクロック信号CLKを受け取り、リセット入力によって信号 ̄RSTを受け取る。各レジスタRG11
qは、データ入力によって受け取られる信号の値を、クロック信号CLKの立上りエッジに基づいて取り込み、記憶する。qが0及び2(s+1)以下の正の整数の全てのケースについて、レジスタRG11
qは、記憶されている値を、クロック信号CLKの立上りエッジに基づいて、信号FIFO
qとして出力する。信号FIFO
qは、マルチプレクサMX41
qの第1入力によって受け取られる。qが0及び2s以下の正の整数の全てのケースについて、信号FIFO
qは、マルチプレクサMX
q+1の第2入力によって受け取られる。
【0381】
7.2.動作
7.2.1.デコーダの動作
図25は、第7実施形態の演算回路100g中のデコーダDCの入力と出力の組合せを示す。デコーダDCは、乗除算選択信号Sp2と信号S62の値を使用して、乗除算選択信号Sp2と信号S62<3:0>の値に基づく値を有する制御信号SEL0~SEL7を出力する。
【0382】
以下の記述において、V:κλμν:αβγδεζθιは、以下の事項を表現する。Vは、乗除算選択信号Sp2の値(レベル)を表現する。κλμνは、それぞれ、信号S62<3>、信号S62<2>、信号S62<1>、及び信号S62<0>の値を表現する。α、β、γ、δ、ε、ζ、θ、及びιは、第1実施形態と同じく、それぞれ、制御信号SEL7、SEL6、SEL5、SEL4、SEL3、SEL2、SEL1、及びSEL0のレベルを表現する。
L:1010:L-LLHHHL
L:1001:L-LLHHLH
L:1000:L-LLHHLL
L:0111:L-LLLHHH
L:0110:L-LLLHHL
L:0101:L-LLLHLH
L:0100:L-LLLHLL
L:0011:L-LL-LHH
L:0010:L-LL-LHL
L:0001:L-L--LLH
H:0010:L-HHHHLL
H:0011:HLLHHHHH
H:0100:L-HLHHLL
H:0101:HLHHLHHH
H:0110:HHLHHHHH
H:0111:HLLLHHLH
H:1000:L-HLLHLL
H:1001:HLLLLHHH
H:1010:HHHHLHHH
L:0000:L-L--LLL
加減算選択信号Sp2と信号S62の値の組合せにより、制御信号SEL0~SEL7の値が定まり、制御信号SEL0~制御信号SEL7の値によって演算装置OPの動作が指定される。よって、加減算選択信号Sp2と信号S62の値の組合せによって、演算装置OPの動作が指定される。
【0383】
7.2.2.演算装置の動作
図26は、第7実施形態の演算回路100gによる演算の種類を示す。
図26及び以下の記述での「入力」は、演算回路100gの外部からの入力と、演算回路100gの内部信号、例えばレジスタRG1又はRG2により記憶されている値を含む。「第2演算」は、演算順序において「第1演算」の優先順位よりも高い優先順位を有する。各列は、選択されることが可能な項目を含む。
【0384】
「第1入力」として、信号S43(Qを伝送する信号)、整数部及び小数部の全てのビットにおいて0を有する固定値(0.0…0)、及び整数部において1を有するとともに小数部の全てのビットにおいて0を有する固定値(1.0…0)のうちの選択された1つが使用される。
【0385】
「第1演算」として、加算及び減算のうちの選択された1つが使用される。以下、加算は記号「+」と記載される場合があり、減算は記号「-」と記載される場合がある。
【0386】
「第2入力」として、信号Sm(除数Dを伝送する信号)、信号SIN(被除数Nを伝送する信号)、信号S43(Qを伝送する信号)、又は信号S47(Rを伝送する信号)が使用される。
【0387】
「第2演算」として、乗算及び除算のうちの選択された1つが使用される。図では、乗算は記号「×」と記載される場合があり、除算は記号「/(÷)」と記載される場合がある。
【0388】
「第3入力」として、0、1以上10以下の整数、信号FIFO0の値、及び信号FIFO2s+1の値のうちの選択された1つが使用される。
【0389】
「条件」として、条件なし、及びU<0>=0のうちの選択された1つが使用される。
【0390】
「出力」として、信号S43(Q)及び信号S47(R)のうちの選択された1つが使用される。
【0391】
第1入力、第1演算、第2入力、第2演算、第3入力、及び条件のそれぞれについての選択された項目の組合せに基づいて、種々の演算が行われる。
【0392】
演算回路100gは、「第2入力」と「第3入力」とに対する「第2演算」の実行により第1演算結果を生成する。演算回路100gは、第1演算結果と「第1入力」に対する「第1演算」の実行により得られる結果を、「条件」が成立した場合に、「出力」の列に記載の信号として出力する。
【0393】
条件は、U<0>の値に対して実行される。具体的には、第1入力がQ、第1演算が+、第2入力がD、第2演算が×、第3入力が10、条件がU<0>=0、出力がQの例については以下の通りである。Q+D×10の演算の結果、U<0>=0である場合は、この演算結果がQの値として更新され、U<0>=0でない場合は、Qは更新されない。この演算は、以下、式(68)のように記載される。
Q←Q+D×10(U<1) 式(68)
一方、条件が「なし」の場合の演算は、式(69)のように記載される。
Q←Q+D×10 式(69)
さらに、同じく、第2入力がD、第2演算が×、第3入力が10、及び出力がQであるとともに、第1入力が0.0…0である場合の演算は、式(70)のように記載される。
Q←D×10 式(70)
一方、第1入力が1.0…0である場合の演算は、式(71)のように記載される。
Q←1+D×10 式(71)
図27は、第7実施形態の演算回路100gでの演算のための制御信号の値の組合せを示す。具体的には、
図27は、
図26に示される項目の選択のための入力選択信号SRC1、SRC2、及びSRC3、加減算選択信号Sp1、乗除算選択信号Sp2、条件付き演算選択信号CND、及び書込みイネーブル信号DSTのそれぞれの値を示す。
【0394】
第1入力についての選択のために、入力選択信号SRC1<1:0>が使用される。
“00”は信号S43(Q)を選択する。“10”は、0.0…0を選択する。“11”は、1.0…0を選択する。
【0395】
第1演算についての選択のために、加減算選択信号Sp1が使用される。ローレベルは、+を選択する。ハイレベルは、-を選択する。
【0396】
第2入力についての選択のために、入力選択信号SRC2<1:0>が使用される。“00”は信号S43(Q)を選択する。“01”は、信号S47(R)を選択する。“10”は、信号Sm(D)を選択する。“11”は、信号SIN(N)を選択する。
【0397】
第2演算についての選択のために、乗除算選択信号Sp2が使用される。ローレベルは、×を選択する。ハイレベルは、/(÷)を選択する。
【0398】
第3入力についての選択のために、入力選択信号SRC3<4:0>が使用される。
“00000”は、0を選択する。“00001”は、1を選択する。“00010”は、2を選択する。“00011”は、3を選択する。“00100”は、4を選択する。“00101”は、5を選択する。“00110”は、6を選択する。“00111”は、7を選択する。“01000”は、8を選択する。“01001”は、9を選択する。“01010”は、10を選択する。“10000”は、FIFO0を選択する。“10001”は、FIFO2s+1を選択する。
【0399】
条件についての選択のために、条件付き演算選択信号CNDが使用される。ローレベルは、条件なしを選択する。ハイレベルは、U<0>=0を選択する。
【0400】
出力についての選択のために、書込みイネーブル信号DST<1:0>が使用される。“00”は、出力なしを選択する。“01”は、信号S43(Q)を選択する。“10”は、信号S47(R)を選択する。
【0401】
条件付き演算選択信号CND、書込みイネーブル信号DST、イネーブル信号FIFOENの値の組合せにより、演算回路100gでは、以下に記述される動作が行われる。
【0402】
条件付き演算選択信号CNDがローレベルである場合、マルチプレクサMX31は選択信号としてANDゲートAG11を介して書込みイネーブル信号DST<0>を受け取る。また、条件付き演算選択信号CNDがローレベルである場合、FIFOメモリFMは、マルチプレクサMX33を介して加算器AD32からの信号S42の値の整数部下位4ビットU<3:0>を受け取る。このとき、FIFOメモリFM及びレジスタRG1に対して、それぞれ、イネーブル信号FIFOEN及び書込みイネーブル信号DST<0>の値に基づいて、書込みがなされ得る。
【0403】
条件付き演算選択信号CNDがハイレベルである場合、加算器AD32からの信号S42中の値U<0>の値に応じて、次の2通りの処理が実行される。
【0404】
信号S42によって伝送される値の整数部最下位ビットU<0>の値が0である場合、FIFOメモリFMはマルチプレクサMX33及びMX34を介して整数値1(“0001”)を受け取る。また、U<0>の値が0である場合、マルチプレクサMX31は選択信号として、ANDゲートAG11を介して書込みイネーブル信号DST<0>を受け取る。このとき、FIFOメモリFM及びレジスタRG1に対して、それぞれ、イネーブル信号FIFOEN及び書込みイネーブル信号DST<0>の値に基づいて、書込みがなされ得る。
【0405】
信号S42によって伝送される値の整数部最下位ビットU<0>の値が1である場合、FIFOメモリFMにはマルチプレクサMX33及びMX34を介して整数値0(“0001”)を受け取る。マルチプレクサMX31は、選択信号として、ANDゲートAG11を介してローレベルを受け取る。よって、FIFOメモリFMには書込みイネーブル信号FIFOENに基づいて書込みがなされ得るが、レジスタRG1には書込みはなされない。レジスタRG1は、マルチプレクサMX31を介して自身の出力を受け取る。
【0406】
図28は、第7実施形態の演算回路100gでの演算のための制御信号の値の組合せを示す。具体的には、
図28は、FIFOメモリFMの制御のための条件付き演算選択信号CND及びイネーブル信号FIFOENのそれぞれの値を示す。
【0407】
項目欄における「入力」は、FIFOメモリFMへの入力の選択を含む。「入力」についての選択のために、条件付き演算選択信号CNDが使用される。ローレベルは、U<3:0>をFIFOメモリFMに入力することを指定する。ハイレベルは、U<0>=0の場合に整数値1をFIFOメモリFMに入力することを指定し、U<0>≠0の場合に整数値0をFIFOメモリFMに入力することを指定する。
【0408】
項目欄における「更新」は、演算中の値に対する処理を指す。「更新」についての選択のために、イネーブル信号FIFOENが使用される。ローレベルは、FIFOメモリFMに、FIFOメモリFMへの入力(信号S51の値)に関わらず、記憶している値をそのまま記憶し続ける記憶「保持」動作を指示する。ハイレベルは、FIFOメモリFMに、信号S51の値を入力として、先入れ先出し動作を行う記憶「更新」動作を指示する。
【0409】
以下、FIFOメモリFMに対する入力の選択及び更新の有無は、式(72)及び式(73)のように記載される。
FIFO←U 式(72)
FIFO←(U<1) 式(73)
式(72)は、条件付き演算選択信号CNDがローレベルであり、このことに基づいてFIFOメモリFMにU<3:0>が無条件に入力される動作を表現する。式(73)は、条件付き演算選択信号CNDがハイレベルであり、このことに基づいてU<0>=0の場合は1が入力され、U<0>≠0場合は0が入力される動作を表現する。
【0410】
図27及び
図28から、演算回路100gに選択された動作をさせるための各種の信号の値がわかる。このため、信号の値の組合せの選択によって、式(68)~式(73)により表現される動作が実現されることが可能である。例えば、Q←R/5,FIFO←Uという演算が行われるための、信号の値の組合せは以下の通りである。
SRC1<1:0>=10
Sp1=“L”
SRC2<1:0>=01
Sp2=“H”
SRC3<4:0>=00101
CND=“L”
DST<1:0>=01
FIFOEN=“H”
式(68)~式(73)により表現される動作が各項目についての相違する値が使用されながら繰り返されることによって、第6実施形態として記述される演算が行われることが可能である。その目的で、第6実施形態として記述される演算を演算回路100gに行わせるための各ステップ(例えば、上の例のQ←R/5,FIFO←Uの演算)を指定する値を有する複数の信号が、演算回路100gに供給される。この複数の信号は、入力選択信号SRC1<1:0>、SRC2<1:0>、及びSRC3<4:0>、加減算選択信号Sp1、乗除算選択信号Sp2、条件付き演算選択信号CND、書込みイネーブル信号DST<1:0>、並びにイネーブル信号FIFOENを含む。以下、1ステップの実行のための値を有する入力選択信号SRC1<1:0>、SRC2<1:0>、及びSRC3<4:0>、加減算選択信号Sp1、乗除算選択信号Sp2、条件付き演算選択信号CND、書込みイネーブル信号DST<1:0>、及びイネーブル信号FIFOENの値は、命令と称される。複数ステップの動作をそれぞれ指定する複数の命令が、順に供給されることにより、第6実施形態として記述される演算が行われる。
図29は、そのような演算のための第7実施形態の演算回路100gのいくつかの信号(命令を含む)の状態を時間に沿って示す。
【0411】
図29に示さるように、クロック信号CLKが供給され続ける。時刻t1まで、リセット信号 ̄RSTはローレベルにとどまっており、よって、レジスタRG1、RG2、及びRG11はリセットされている。時刻t1から、リセット信号 ̄RSTはハイレベルにとどまり、よって、レジスタRG1、RG2、及びRG11は動作が可能な状態にある。
【0412】
また、時刻t1から、除数Dを伝送する入力信号SINの送信によって、除数Dが供給され続ける。同じく、被除数Nを伝送する入力信号Smの送信によって、被除数Nが供給され続ける。
【0413】
時刻t1から、リセット信号 ̄RSTがハイレベルにとどまっているとともに除数D及び被除数Nが供給され続けている間に、クロック信号CLKの複数の立上りエッジ(クロック信号CLKのサイクル)にそれぞれ合わせて、複数の相違する命令(第1命令、第2命令、…、最終命令)が順に供給される。
【0414】
各命令の供給の結果、クロック信号CLK中のこの命令が供給されるサイクルの次のサイクルにおいて、信号S43はこの命令に基づく演算の結果Qを伝送する。最終命令の供給のサイクルの次のサイクルにおける信号S43は、商Qを伝送する。最終命令の完了後に、書込みイネーブル信号DST<1:0>の値が“00”とされることにより、商Qを伝送する信号S43が出力され続ける。
【0415】
図30、
図31、及び
図32は、第7実施形態の演算回路100gによる演算のフローを示す。
図30のフローは、
図31のフローに継続する。
図31のフローは、
図32のフローに継続する。各ステップ(ST)は、クロック信号CLKの1サイクル中に行われる処理に相当する。上記のように、第7実施形態は、第6実施形態の演算回路100fの具体的な回路の例に関する。しかしながら、第6実施形態のフロー(
図20及び
図21)では、或る条件が充足するまで1又は複数の処理(ステップ)の組が繰り返される。一方、
図30~
図32のフローでは、例として、第6実施形態での処理の組に対応する処理の組が予め定められた回数だけ行われる。また、演算回路100gの回路の構成によって条件付き命令が実行されることが可能なので、
図30~
図32のフローは、条件に基づく分岐の処理を含まない。
図30~
図32のフローは、商の十進有効桁数sが3である例を示す。
【0416】
図29を参照して記述されるように、
図30~
図32のフローは、
図29の時刻t1での処理の開始により開始する。
図30に示されるように、フローの開始により、Q←D/5,FIFO←Uの演算が行われる(ST141)。制御回路3gは、Q←D/5,FIFO←Uの演算が行われるように、命令を演算部9gに供給する。以下、各ステップとして行われる演算についての記述は、この演算の実行のための制御回路3gによる命令の出力を含むものとする。
【0417】
Q←Q/FIFO0の演算が行われる(ST142)。
【0418】
Q←Q×9,FIFO←Uの演算が行われる(ST143)。
【0419】
Q←Q/FIFO0の演算が行われる(ST144)。
【0420】
Q←Q×9の演算が行われる(ST145)。
【0421】
Q←Q/10の演算が行われる(ST146)。
【0422】
R←1-Q×1の演算が行われる(ST147)。
【0423】
R←R×10の演算が行われる(ST148)。
【0424】
R←R×10,FIFO←Uの演算が行われる(ST149)。
【0425】
R←Q×FIFO0の演算が行われる(ST150)。
【0426】
R←R/10の演算が行われる(ST151)。
【0427】
Q←Q+R/10の演算が行われる(ST152)。
【0428】
R←Q/10の演算が行われる(ST153)。
【0429】
Q←Q+R/10(U<1),FIFO←(U<1)の演算が行われる(ST154)。
【0430】
R←1-Q×1の演算が行われる(ST155)。
【0431】
R←R×10の演算が行われる(ST156)。
【0432】
R←R×10の演算が行われる(ST157)。
【0433】
R←R×10,FIFO←Uの演算が行われる(ST158)。
【0434】
R←Q×FIFO0の演算が行われる(ST159)。
【0435】
引き続き、
図31に示されるように、R←R/10の演算が行われる(ST160)。
【0436】
R←R/10の演算が行われる(ST161)。
【0437】
Q←Q+R/10の演算が行われる(ST162)。
【0438】
R←Q/10の演算が行われる(ST163)。
【0439】
R←Q/10の演算が行われる(ST164)。
【0440】
Q←Q+R/10(U<1),FIFO←(U<1)の演算が行われる(ST165)。
【0441】
Q←N×5の演算が行われる(ST166)。
【0442】
Q←Q/FIFO2s+1,FIFO←Uの演算が行われる(ST167)。
【0443】
Q←Q×9の演算が行われる(ST168)。
【0444】
Q←Q/FIFO2s+1,FIFO←Uの演算が行われる(ST169)。
【0445】
Q←Q×9の演算が行われる(ST170)。
【0446】
Q←Q/10の演算が行われる(ST171)。
【0447】
R←Q×FIFO2s+1,FIFO←Uの演算が行われる(ST172)。
【0448】
R←R/10の演算が行われる(ST173)。
【0449】
Q←Q+R/10の演算が行われる(ST174)。
【0450】
R←Q×FIFO2s+1,FIFO←Uの演算が行われる(ST175)。
【0451】
R←R/10の演算が行われる(ST176)。
【0452】
Q←Q+R/10の演算が行われる(ST177)。
【0453】
R←Q×FIFO2s+1,FIFO←Uの演算が行われる(ST178)。
【0454】
引き続き、
図32に示されるように、R←R/10の演算が行われる(ST179)。
【0455】
R←R/10の演算が行われる(ST180)。
【0456】
Q←Q+R/10の演算が行われる(ST181)。
【0457】
R←Q×FIFO2s+1の演算が行われる(ST182)。
【0458】
R←R/10の演算が行われる(ST183)。
【0459】
R←R/10の演算が行われる(ST184)。
【0460】
Q←Q+R/10の演算が行われる(ST185)。ST185を以てフローは終了する。
【0461】
7.3.利点
第7実施形態の演算回路100gは、
図23に示される要素及び接続を有する。このような演算回路100gによって、第6実施形態として記述される演算が行われることが可能である。このため、第6実施形態の利点と同じ利点を得られる。
【0462】
すなわち、第7実施形態の演算回路100gは、演算装置OPを含み、演算装置OPを使用して、被除数Nを除数Dで除した商を算出できる。また、演算回路100gは、十進数で指定された桁数の演算精度で演算を行える。また、第7実施形態の制御回路3gは、条件判断を行わないので、第2実施形態の制御回路3と同様に、カウンタとメモリの組み合わせによって実現することが容易である。
【0463】
8.変形例
ここまでの記述において、乗数は0以上であるとともに除数は0より大きい正の値であると仮定されている。乗数または除数が負の場合は、予め乗数または除数の符号が反転されてから上記の実施形態による乗算又は除算が実行され、積又は商の符号が反転される。こうすることにより、乗数または除数が負の場合でも演算が実行されることが可能である。
【0464】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0465】
100…演算回路、OP…演算装置、2…加算器、3…制御回路、5…累積加算器、SIN…入力信号、Sm…入力信号、SOUT…出力信号、LC…データ記憶回路、Sc…制御信号、ZOUT…信号、YIN…信号、AG…ANDゲート、AD…加算器、MX…マルチプレクサ、LO…左1ビット論理シフタ、RF…右5ビット算術シフタ、RO…右1ビット算術シフタ、RS…右6ビット算術シフタ、RT…右12ビット算術シフタ、INC…インクリメンタ、IV…インバータ、S…信号、RG…レジスタ、DC…デコーダ、FM…FIFOメモリ。