JP7802253B1 - 双方向論理素子、演算装置、及び演算方法 - Google Patents

双方向論理素子、演算装置、及び演算方法

Info

Publication number
JP7802253B1
JP7802253B1 JP2025556015A JP2025556015A JP7802253B1 JP 7802253 B1 JP7802253 B1 JP 7802253B1 JP 2025556015 A JP2025556015 A JP 2025556015A JP 2025556015 A JP2025556015 A JP 2025556015A JP 7802253 B1 JP7802253 B1 JP 7802253B1
Authority
JP
Japan
Prior art keywords
bidirectional
function
input
unit
output
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.)
Active
Application number
JP2025556015A
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Application granted granted Critical
Publication of JP7802253B1 publication Critical patent/JP7802253B1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本発明の双方向論理素子は、関数/逆関数制御部と、順方向入力部と、順方向情報伝達部と、逆方向入力部と、逆方向情報伝達部と、順方向の論理演算を行い且つ逆方向の演算も行う双方向関数演算部と、順方向関数伝達部と、逆方向関数伝達部と、を備える。本発明の演算装置及び演算方法は、上記の双方向論理素子を用いたものである。

Description

本発明は、双方向論理素子、演算装置、及び演算方法に関するものである。
従来、論理演算には、Bool代数を具体化したスイッチ素子が用いられ、該スイッチ素子には、ブランチタイプ(Branch Type)の論理素子と、ゲートタイプ(Gate Type)の論理素子とがあった。電気/電子部品を用いたブランチタイプの論理素子には、例えば、リレーがあり、ゲートタイプの論理素子には、例えば、DTL、TTL、ECL、MOS等の素子があった(非特許文献1、2)。
また、ブランチタイプの双方向論理素子には、エサキダイオードを用いた双方向論理素子があった。この素子は、エサキダイオード対と遅延素子とを用いた2端子論理素子であった。その特徴は、構成要素が少なく、励振により情報を適切な遅延動作条件に設定することで高速で双方向に演算するというものであった。この素子は、条件設定が繊細であり、これまでは広く普及するには至らなかったが、現在の集積化技術で十分普及する可能性がある(非特許文献3、4)。また、それらの演算に応じた入力の組み合わせで記憶素子の表を引く方法もある。さらに、強誘電体キャパシタを用いた双方向素子もある。この方法は、Jopsephson効果素子に置き換えても実現できる(特許文献2、3)。近年では、ブランチタイプのスイッチ素子として、HEMT、スピンエサキダイオード、超伝導素子、量子ビット素子等があり、これらを用いても双方向論理素子を構成することができる(特許文献4、5、6、非特許文献5、6、7)。
しかし、現在、一般に広く普及している半導体を利用したゲートタイプの論理素子は、その性質上、情報処理が入力から出力へ一方向に進行するように構成されていた。
一方で、MOSトランジスタは、これを用いたブランチタイプのスイッチ素子として、情報を双方向に伝達できる通過制御トランジスタ(Pass Transistor)が考案された(特許文献1、非特許文献8)。それは、これまで順方向ゲートタイプ論理素子の内部で信号の流れを変える等に用いられていた(非特許文献9)。しかし、論理関数の双方向の演算を可能にするものではなかった。
通過制御トランジスタ(Pass Transistor)には、p-MOSトランジスタとn-MOSトランジスタとの2種類がある。それらの電気的特性を補完して高速に動作させる方法として、p-MOSトランジスタとn-MOSトランジスタとを並列に接続した伝達ゲート(Transmission Gate)がある(特許文献1)。また、ゲートタイプのMOSトランジスタと伝達ゲートとを組み合わせたゲートタイプの複合論理素子もある(非特許文献9、10、11)。
しかし、集積化された論理素子には、情報や演算を双方向に行う双方向論理素子はなかった。また、それらから構成された装置の代表である加/減算器や乗/除算器もなかった。
上記の乗/除算には、AND素子を用いるが、数学的にも乗/除算は、完全逆関数ではない。乗/除算に用いるAND素子は、被乗数/乗数又は被除数/除数に零が割り当てられておらず、演算結果は「0」となる。これらは数学的にも「0」デバイドとして定義されている。例えば、AND素子の2入力変数(0,1)の組み合わせ演算結果は、「0」であり、その1変数「1」の情報が損失し、「0×1=0」の逆関数「0÷1=0」の組み合わせの除数値「1」の演算結果は得られない。
従って、配列乗/除算器では、その実現の矛盾に対しては、数学の定義により、上記の組み合わせは「0」とする。ただし、各行の多桁の被乗数の1つでも「0」でない場合には、「1」とする。これにより、算術演算上の矛盾は解消される(非特許文献12)。
また、従来の算術演算は、加/減算及び乗/除算がゲートタイプの技術で構成されている。このことから、演算、制御又は情報処理が入力から出力へと一方向に進むように構成されていた。従って、乗/除算の逆関数は成り立たず、原則としては、加算、乗算、減算、及び除算器等をそれぞれ別々に構成して配置する必要があった。そのため、多くの構成素子数、面積、及び消費電力等がそれぞれ必要であった。ただし、加/減算については、補数を加える加算器によって加算/減算を1つに構成する方法が実現されている。また、補数を利用した減算や除算セルも実現されている(非特許文献13)。
汎用コンピュータの分野では、集積化技術の発展により、算術演算装置は32ビット(単精度)、64ビット(倍精度)等の高精度の高速浮動小数点演算装置が求められるようになった。また、高速化、高集積化のために様々な構成やアルゴリズムが考案されている(非特許文献13、14、15)。さらに、高速算術演算アルゴリズムとして冗長2進演算アルゴリズムが提案された(特許文献5、非特許文献16)。また、それに基づく64ビット浮動小数点演算装置が実用化された(非特許文献17、18)。
その後、標準化された標準算術演算処理の方法としてIEEE754_2008 IEEE Standard for Floating-Point Arithmetic がある。特に、除算には試行錯誤的なアプローチが必要であり、この標準方法にも、このアプローチが記載されていて、現在の代表的なCPUはIEEE754の標準化方式を採用している(非特許文献20)。
除算は商、余りがでるが、デジタル除算ではその誤差は2で丸めが必要になる。その誤差を収束させるロバートソン図で示されているような試行錯誤的な選択が必要となる(非特許文献19)。
本願方式もIEEE754フォーマットに対応でき、AI等で四則演算を多用する場合、例えば、乗/除算の場合、浮動小数点演算の乗/除算では仮数部の乗/除算部を本願の双方向乗/除算器、指数部を本願の双方向加/減算器が適用できる。また、乗算を繰り返して、試行錯誤的に商に収束させる方法もある。本願方式では除算に試行錯誤的な選択は必要ない。
米国特許第3457435号 国際公開第2006/115062号パンフレット 米国特許第3953749号 特開2003-69418号公報 特開昭63-25729号公報 米国特許第4097765号
M.A. HARRISON introduction to switching and automata theory 1965年 D.L.Dietmeyer:Logic Degign of Digital System 1978年 久保田、矢島:エサキダイオードを用いた双方向論理回路、電子通信学会電子計算機研究会資料 1967年 矢島、上林:「双方向論理回路の合成」、電子通信学会論文誌 1986年 三村高志:高電子移動度トランジスタ(HEMT)、テレビジョン学会誌 1982年 L. D. Anh, P. N. Hai, and M. Tanaka :Electrical tuning of the band alignment and magnetoconductance in an n-type ferromagnetic semiconductor (In, Fe) As based spin-Esaki diode,Applied Physics Letters 2018年 M. TANAKA, K. TAKAGI, N.TAKAGI:High-Throughput Rapid Single-Flux-Quantum Circuit Implementations for Exponential and Logarithm Computation Using the Radix-2 Signed Digit Representation,IEICE TRANS. ELECTRON. 2016年 RCA: CMOS/MOS Integrated Circuits Manual 1972年 MOTOROLA: McMOS HANDBOOK 1974年 C. Mead L. Conway: INTRODUCTION TO VLSI SYSTEMS ADDISON-WESLEY 1980年 Neil H.E. Weste K. Eshrghian: PRINCIPLES OF CMOS VSLI DESIGN A Systems Perspective ADDISON-WESLEY 1985年 S. MacLANE G. BIRKHOFF: ALGEBRA Macmillan 1967年 Kay Hwang: Computer Arithmetic PRINCIPLES、 ARCHITECTURE, AND DESIGN JOHN Wiley & Sons 1979年 Israei Koren:Computer Arithmetic Algorithms A K Peters 2002年 M.J.Flynn:Advanced Computer Arithmetic Design JOHN WILEY &SONS,INC. 2001年 高木、安浦、矢島:冗長2進加算器を用いたVLSI向き高速乗算器、電子通信学会論文誌 1983年 國信:冗長2進演算アルゴリズムと高速プロセッサの実現に関する研究、京都大学博士学位論文 1993年 N.Takagi: 算術演算のVLSIアルゴリズム 昭晃堂 2007年 Robertson,J.E.:A New Class of Digital Divison Methods IRE Transaction of Electoric Computer 1953年 IEEE IEEE754_1985 IEEE Standard for Floating-Point Arithmetic, 1985年 N.Whitehead,A.Fit-Florea:Precision & Performance:Floating Point and IEEE754 Compliance for NVIDIA GPUs, NVIDIA 2011年
本発明は、演算を双方向に行うことのできる双方向論理素子、並びに、該双方向論理素子を用いた演算装置及び演算方法を提供することを目的とする。
本発明の要旨構成は、以下の通りである。
(1)論理素子の演算の方向を制御して、順方向の演算である関数と逆方向の演算である逆関数とを切り替えるように制御する、関数/逆関数制御部と、
順方向の演算の場合の入力を行う、順方向入力部と、
前記順方向入力部からの入力を伝達する、順方向情報伝達部と、
逆方向の演算の場合の入力を行う、逆方向入力部と、
前記逆方向入力部からの入力を伝達する、逆方向情報伝達部と、
順方向の演算の場合に前記順方向情報伝達部からの入力を入力信号とした順方向の論理演算を行い、且つ、逆方向の演算の場合に前記逆方向情報伝達部からの入力を入力信号とした逆方向の論理演算を行う、双方向関数演算部と、
順方向の演算の場合の前記双方向関数演算部からの出力を順方向の出力として伝達する順方向関数伝達部と、
逆方向の演算の場合の前記双方向関数演算部からの出力を逆方向の出力として伝達する逆方向関数伝達部と、を備えることを特徴とする、双方向論理素子。
なお、発明の詳細な説明においては、主に算術演算に用いるものについて説明している。
(2)前記双方向関数演算部は、ブランチタイプの論理素子で構成された、前記(1)に記載の双方向論理素子。
(3)前記双方向関数演算部は、伝達ゲートを用いて構成された、前記(1)又は(2)に記載の双方向論理素子。
(4)前記双方向関数演算部は、2線式論理を用いたものである、前記(3)に記載の双方向論理素子。
(5)前記双方向関数演算部は、1線式論理を用いたものである、前記(3)に記載の双方向論理素子。
(6)前記双方向関数演算部を2つ以上有し、
2つ以上の前記双方向関数演算部が、並列又は直列に接続されて、双方向演算を行う1つ又は複数の演算部として機能する、前記(1)又は(2)に記載の双方向論理素子。
(7)前記(1)又は(2)に記載の双方向論理素子を並列又は直列に接続した、加算及び減算器、及び/又は、乗算及び除算器を含む、演算装置。
(8)前記乗算及び除算器を含み、
除算において、被除数のうちいずれかが1である場合を1とし、前記被除数のうち全てが0である場合を0とし、前記被除数が1である場合は除数を1として、0デバイド処理を行う、0デバイド処理部をさらに備える、前記(7)に記載の演算装置。
(9)前記(1)又は(2)に記載の双方向論理素子を用いて双方向の演算を行う、演算方法。
本発明によれば、演算を双方向に行うことのできる双方向論理素子、並びに、該双方向論理素子を用いた演算装置及び演算方法を提供することができる。
本発明の一実施形態にかかる双方向論理素子について説明するための代表的な構成図である。 図1Aの構成にプルダウン素子を追加した例を示す構成図である。 双方向関数演算部の代表的な演算一覧を示す図である。 双方向関数演算部の代表的な演算一覧を示す図である。 双方向スイッチを実現する伝達ゲートの構成例を示す図である。 Exclusive-OR(XOR)論理素子のシンボル図である。 Exclusive-OR(XOR)論理素子の回路図である。 Exclusive-OR(XOR)論理素子のより詳細な回路図である。 図3B、図3Cにプルダウン素子を追加した例を示す図である。 AND論理素子のシンボル図である。 AND論理素子の回路図である。 半加/減算器のシンボル図である。 半加/減算器の回路図である。 全加/減算器のシンボル図である。 全加/減算器の回路図である。 n桁加/減算器のシンボル図である。 n桁加/減算器の回路図である。 乗/除算器のシンボル図である。 乗/除算器の回路図である。 n桁乗/除算器の構成概念を示す図である。 乗/除算器の状態割り当てのフロー図である。 図8Aで示した乗/除算器で構成したn桁剰/除算器の部分積の一例を示す図である。 n桁並列乗/除算器の概念図である。 冗長2進加/減算器のシンボル図である。 双方向XORの真理値表を示す図である。 双方向ANDの真理値表を示す図である。 双方向半加/減算器の真理値表を示す図である。 双方向全加/減算器の真理値表を示す図である。 乗/除算器の真理値表を示す図である。 3状態バッファの真理値表を示す図である。
以下、本発明の実施形態について図面を参照して主に算術演算に必要な素子について詳細に例示説明する。
<双方向論理素子>
図1Aは、本発明の一実施形態にかかる双方向論理素子について説明するための代表的な構成図である。図1Aに示すように、本実施形態の双方向論理素子は、関数/逆関数制御部1、1´と、順方向入力部2と、順方向情報伝達部3と、逆方向入力部5と、逆方向情報伝達部3´と、双方向関数演算部4と、順方向関数伝達部7と、逆方向関数伝達部6と、を備えている。
関数/逆関数制御部1、1´は、論理素子の演算の方向を制御して、順方向の演算である関数と逆方向の演算である逆関数とを切り替えるように制御するように構成されている。
順方向入力部2は、順方向の演算の場合の入力を行うように構成されている。
順方向情報伝達部3は、順方向入力部2からの入力を(図1Aの例では、双方向関数演算部4に)伝達するように構成されている。
双方向関数演算部4は、順方向の演算の場合に順方向情報伝達部3からの入力を入力信号とした順方向の論理演算を行うように構成されている。
順方向関数伝達部7は、順方向の場合の双方向関数演算部4からの出力を順方向の出力として伝達するように構成されている。
逆方向入力部5は、逆方向の演算の場合の入力を行うように構成されている。
逆方向情報伝達部3´は、逆方向入力部5からの入力を双方向関数演算部4に伝達するように構成されている。
双方向関数演算部4は、逆方向の演算の場合に逆方向情報伝達部3´からの入力を入力信号とした逆方向の論理演算も行うように構成されている。
逆方向関数伝達部6は、逆方向の場合の双方向関数演算部4からの出力を逆方向の出力として伝達するように構成されている。
図1Bは、図1Aの構成にプルダウン素子を追加した例を示す構成図である。図示例では、プルダウン(pull down)素子31、31´は、順方向情報伝達部3と双方向関数演算部4との間、及び、逆方向情報伝達部3´と双方向関数演算部4との間にそれぞれ配置されている。このプルダウン素子31、31´によれば、双方向関数演算部4で生じたオープン・パスを出力部で接地し浮遊容量を減少させることができる。
図1Bに示す例では、双方向関数演算部4は、0デバイド処理部41、41´をさらに備えている。0デバイド処理部については後述する。
図2A、Bは、双方向関数演算部の代表的な演算一覧を示す図である。図2A、Bの第1列目に示すように、双方向関数演算部4の論理演算は、例えば、AND、NAND、OR、NOR、XOR、XNOR、及びNOTのいずれかとすることができるが、これらの例には限定されない。図2A、Bの第2列目のシンボル図において「In/Out」と示すように、双方向関数演算部4は、順方向の演算である関数と逆方向の演算である逆関数とを切り替えるように制御される。シンボルは、「In/Out」を除いては一般的なもので示している。図2A、Bの第3列目には、真理値表を示しているが、関数である場合、逆関数である場合、いずれも通常の真理値表の通りである。図2A、Bの第4列目には、関数(又は逆関数)の場合の各論理を実行可能な回路図の一例を示している。図2A、Bの第5列目には、第4列目の回路図について、双方向機能を有するように拡張した回路図を示している。本願では、双方向論理素子で構成したが、単方向論理素子を双方向に選択できるように構成して実施することもできる。
ところで、第3~第5列目において1点鎖線で示すように、演算項である入力Bが「0」値の場合、被演算項であるAの経路がオープンになることがある。オープンになれば経路の浮遊容量により出力が十分に「0」値にならない可能性があり、あるいは、遅延時間が長くなる可能性が残る。このような場合は、図1Bに示したように、プルダウン素子としてプルダウン抵抗、又はプルダウントランジスタを、双方向関数演算部4を構成するトランスファーゲートの両端に接続することが望ましい。
図2Cは、双方向スイッチを実現する伝達ゲート(Transmission Gate)の構成例を示す図である。双方向スイッチは、pMOSエンハンスメントトランジスタ及びnMOSエンハンスメントトランジスタを用いて構成される。図示のように、pMOSエンハンスメントトランジスタ及びnMOSエンハンスメントトランジスタのゲートには、制御信号が入力される。pMOSエンハンスメントトランジスタ及びnMOSエンハンスメントトランジスタのソース同士及びドレイン同士が接続されている。これにより、真理値表に示すような論理演算が可能となる。
図3Aは、Exclusive-OR(XOR)論理素子のシンボル図である。通常のXORのシンボルに加え、順方向及び逆方向の演算の切り替えを示す「N/R」が追加されている(「N」は順方向を示す「Normal」の略、「R」は逆方向を示す「Reverse」の略)。順方向の場合の入力は、「A」、「B」、出力は「S」で表され、逆方向の場合の入力は、「S」、「B」、出力は「A」で表されている。
図3Bは、Exclusive-OR(XOR)論理素子の回路図である。図3Cは、Exclusive-OR(XOR)論理素子のより詳細な回路図である。
図3B、図3Cに示すように、この論理素子は、関数/逆関数制御部1、1´、順方向入力部2、順方向(逆方向)論理情報伝達部3(3´)、双方向関数演算部4、順方向関数伝達部7、逆方向入力部5、及び逆方向関数伝達部6を備えている。
<関数/逆関数制御部>
関数/逆関数制御部1、1´は、前述のように、論理素子の演算の方向を制御して関数機能と逆関数機能とを切り替えるものである。
関数/逆関数制御部1は、(図示左下側の)順方向を制御する3状態バッファと(図示左上側の)逆方向を制御する3状態バッファとを有している。制御信号がNormal(High)である場合、順方向を制御する3状態バッファがオン(信号伝達状態)となり、逆方向を制御する3状態バッファがオフ(切り離し状態Z:High Impedance)となることで、信号Aが順方向入力部2に入力されるようになる。一方で、制御信号がReverse(Low)である場合、順方向3状態バッファがオフとなり、逆方向3状態バッファがオンとなることで、信号がAとして図面左へ出力されるようになる。
同様に、関数/逆関数制御部1´は、(図示右上側の)順方向3状態バッファと(図示右下側の)逆方向3状態バッファとを有している。制御信号がNormal(High)である場合、順方向3状態バッファがオンとなり、逆方向3状態バッファがオフとなることで、信号が順方向関数伝達部7から信号Sとして図面右へ出力されるようになる。一方で、制御信号がR(Low)である場合、順方向3状態バッファがオフとなり、逆方向3状態バッファがオンとなることで、信号Sが逆方向入力部5に入力されるようになる。
このようにして、制御信号を切り替えることにより、論理素子の演算の方向を切り替えることができる。
なお、関数/逆関数制御部1、1´は順方向と逆方向の出力を制御するためバス結合として出力しない場合は、ハイインピーダンスで結合し、関数/逆関数の選択の影響を避けている。
<順方向関数伝達部>
順方向関数伝達部7は、関数逆関数制御部1、1´にNormal(High)の制御信号が入力され、論理素子の演算の方向が順方向である場合に、双方向関数演算部4からの出力S、Sを(本例では2線を1線にまとめて)順方向の出力Sとして伝達するものである。その真理値表は、図10に示している。順方向関数伝達部7は、図3Bに示すように、本例ではOR回路で構成されている。図3Cには、二線式論理を単線式論理に変換するためのOR回路の詳細が示されており、一例としては図示のような回路によりOR回路を構成することができる。
<逆方向関数伝達部>
逆方向関数伝達部6は、関数/逆関数制御部1、1´にReverse(Low)の制御信号が入力され、論理素子の演算の方向が逆方向である場合に、双方向関数演算部4からの出力A1、A2を(本例では2線を1線にまとめて)逆方向の出力Aとして伝達するものである。その真理値表は、図10に示したものの入力のAをSと読み替え、出力のSをAと読み替えればよい。逆方向関数伝達部6は、図3Bに示すように、本例ではOR回路で構成されている。図3Cには、二線式論理を単線式論理に変換するためのOR回路の詳細が示されており、一例としては図示のような回路によりOR回路を構成することができる。
図3B~図3Dに示した論理素子によれば、双方向関数演算部4により、順方向の演算と逆方向の演算を切り替えて行わせることができるため、所定の演算(XOR)を双方向に行うことができる。
図3Eは、AND論理素子のシンボル図である。通常のANDのシンボルに加え、順方向及び逆方向の演算の切り替えを示す「N/R」が追加されている(「N」は順方向を示す「Normal」の略、「R」は逆方向を示す「Reverse」の略)。順方向の場合の入力は、「A」、「B」、出力は「P」で表され、逆方向の場合の入力は、「P」、「B」、出力は「A」で表されている。
図3Fは、AND論理素子の回路図である。図3Fに示すように、この論理素子は、関数/逆関数制御部1、1´、順方向入力部2、情報伝達部3、3´、双方向関数演算部4、順方向関数伝達部7、逆方向入力部5、及び逆方向関数伝達部6を備えている。
関数/逆関数制御部1、1´、順方向入力部2、順方向関数伝達部7、逆方向入力部5、及び逆方向関数伝達部6については、XORの例と同様であるため、再度の説明を省略し、情報伝達部3、3´及び双方向関数演算部4について説明する。
図11には、双方向関数演算部4のANDの真理値表を示している。
入力Aが0であり、且つ、入力Bが0である場合、第1の伝達ゲートのゲートはオフとなり、また、第2の伝達ゲートのゲートもオフとなるため、その出力Sは「0」となる。
入力Aが1であり、且つ、入力Bが0である場合、第1の伝達ゲートのゲートはオフとなり、また、第2の伝達ゲートのゲートはオンとなるため、その出力Sは「0」となる。
入力Aが0であり、且つ、入力Bが1である場合、第1の伝達ゲートのゲートはオンし、また、第2の伝達ゲートのゲートはオフとなるため、その出力Sは「0」となる。
入力Aが1であり、且つ、入力Bが1である場合、第1の伝達ゲートのゲートはオンし、また、第2の伝達ゲートのゲートもオンとなるため、その出力Sは「1」となる。
このように、まず、順方向の場合に、双方向関数演算部4は、ANDの論理演算機能を有する。
入力Sが0であり、且つ、入力Bが0である場合、第1の伝達ゲートのゲートはオフとなり、また、第2の伝達ゲートのゲートもオフとなるため、その出力Aは「0」となる。
入力Sが1であり、且つ、入力Bが0である場合、第1の伝達ゲートのゲートはオフとなり、また、第2の伝達ゲートのゲートはオンとなるため、その出力Aは「0」となる。
入力Sが0であり、且つ、入力Bが1である場合、第1の伝達ゲートのゲートはオンし、また、第2の伝達ゲートのゲートはオフとなるため、その出力Aは「0」となる。
入力Sが1であり、且つ、入力Bが1である場合、第1の伝達ゲートのゲートはオンし、また、第2の伝達ゲートのゲートもオンとなるため、その出力Aは「1」となる。
このように、逆方向の場合にも、双方向関数演算部4は、ANDの論理演算機能を有する。
図3E、図3Fに示した論理素子によれば、双方向関数演算部4により、順方向の演算と逆方向の演算を切り替えて行わせることができるため、所定の演算(AND)を双方向に行うことができる。
上記の例では、XORとANDについて例示したが、図2A、Bに示した他の論理素子や、他の様々な論理素子に応用することができる。
双方向関数演算部4は、ブランチタイプの論理素子で構成されたていることが好ましい。特に、双方向関数演算部4は、伝達ゲートを用いて構成されていることが好ましい。
上記の例のように、双方向関数演算部4は、2線式論理を用いたものであることが好ましい。一方で、本開示では、双方向関数演算部4は、1線式論理を用いたものとすることもできる。
本開示において、双方向論理素子は、双方向関数演算部4を2つ以上有し、2つ以上の双方向関数演算部4が、並列又は直列に接続されて、双方向演算を行う1つ又は複数の演算部として機能することも好ましい。
<演算装置>
図4Aは、半加/減算器(半加算及び減算器)のシンボル図である。通常の半加/減算器と同様に、2入力A、Bが入力され、出力S(和)を出力するXORと、2入力A、Bが入力され、出力Cout(桁上げ)を出力するAND回路が並列接続された構成を基本とする。XORには前述の双方向XOR論理素子を用いているため、順方向及び逆方向の演算の切り替えを示す「N/R」が追加されている。ここで、「N」は順方向を示す「Normal」の略、「R」は逆方向を示す「Reverse」の略である。ここでは、順方向が加算、逆方向が減算を表す。順方向の場合の入力は、「A」、「B」、出力は「S」、「Cout」で表されている。また、逆方向の場合の入力は、「S」、「B」、出力は「A」、「Cout」で表されている。
図4Bは、半加/減算器の回路図である。図4Bに示す半加/減算器は、図3Aと図4Aとのシンボルの違いの通り、図3Bに示した双方向XOR回路に、さらにAND回路が並列に設けられている点で異なっている。例えば順方向の場合、入力A、Bは、それぞれ、AND回路にも入力される。AND回路の出力はCoutであり、桁上げ出力に該当する。図3Bの回路との共通部分については、既に説明しているので、再度の説明を省略する。
図12には、双方向半加/減算器の真理値表が示されている。
(順方向の場合)
入力Aが0であり、且つ、入力Bが0である場合、XOR回路の出力Sは、図3Bと同様に0となる。また、AND回路の出力Coutは0となる。
入力Aが0であり、且つ、入力Bが1である場合、XOR回路の出力Sは、図3Bと同様に1となる。また、AND回路の出力Coutは0となる。
入力Aが1であり、且つ、入力Bが0である場合、XOR回路の出力Sは、図3Bと同様に1となる。また、AND回路の出力Coutは0となる。
入力Aが1であり、且つ、入力Bが1である場合、XOR回路の出力Sは、図3Bと同様に0となる。また、AND回路の出力Coutは1となる。
このように、先ず、順方向の場合に、双方向半加/減算器は、半加/減算器の論理演算機能を有する。
(逆方向の場合)
入力Sが0であり、且つ、入力Bが0である場合、XOR回路の出力Aは、図3Bと同様に0となる。また、AND回路の出力Coutは0となる。
入力Sが0であり、且つ、入力Bが1である場合、XOR回路の出力Aは、図3Bと同様に1となる。また、AND回路の出力Coutは0となる。
入力Sが1であり、且つ、入力Bが0である場合、XOR回路の出力Aは、図3Bと同様に1となる。また、AND回路の出力Coutは0となる。
入力Sが1であり、且つ、入力Bが1である場合、XOR回路の出力Aは、図3Bと同様に0となる。また、AND回路の出力Coutは1となる。
このように、逆方向の場合にも、双方向半加/減算器は、半加/減算器の論理演算機能を有する。
図4Bに示した論理素子によれば、双方向関数演算部を用いて、順方向の演算と逆方向の演算を切り替えて行わせることができるため、所定の演算(半加/減算)を双方向に行うことができる。
図5Aは、全加/減算器(全加算及び減算器)のシンボル図である。通常の全加/減算器と同様に、2つの半加/減算器とOR回路とを用いて(通常これらを用いて全加/減算器を構成する接続により)構成することができる。2つの半加/減算器がそれぞれ前述の双方向XORを用いた前述の双方向半加/減算器である点で通常のものと異なっている。このため、順方向及び逆方向の演算の切り替えを示す「N/R」が追加されている。ここで、「N」は順方向を示す「Normal」の略、「R」は逆方向を示す「Reverse」の略である。ここでは、順方向が加算、逆方向が減算を表す。順方向の場合の入力は、「A」、「B」、出力は和「S」、桁上げ「Cout」で表されている。また、逆方向の場合の入力は、「S」、「B」、出力は「A」、「Cout」で表されている。
図13には、双方向全加/減算器の真理値表が示されている。
(順方向の場合)
入力Aが0であり、且つ、入力Bが0であり、且つ、入力Ciが0である場合、前段のXOR回路の出力及び後段のXOR回路の出力が0となるため、Sは0となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力も0となるため、Coutは0となる。
入力Aが0であり、且つ、入力Bが0であり、且つ、入力Ciが1である場合、前段のXOR回路の出力が0、後段のXOR回路の出力が1となるため、Sは1となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力も0となるため、Coutは0となる。
入力Aが0であり、且つ、入力Bが1であり、且つ、入力Ciが0である場合、前段のXOR回路の出力が1、後段のXOR回路の出力が1となるため、Sは1となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力も0となるため、Coutは0となる。
入力Aが0であり、且つ、入力Bが1であり、且つ、入力Ciが1である場合、前段のXOR回路の出力が1、後段のXOR回路の出力が0となるため、Sは0となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力は1となるため、Coutは1となる。
入力Aが1であり、且つ、入力Bが0であり、且つ、入力Ciが0である場合、前段のXOR回路の出力が1、後段のXOR回路の出力が1となるため、Sは1となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力も0となるため、Coutは0となる。
入力Aが1であり、且つ、入力Bが0であり、且つ、入力Ciが1である場合、前段のXOR回路の出力が1、後段のXOR回路の出力が0となるため、Sは0となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力が1となるため、Coutは1となる。
入力Aが1であり、且つ、入力Bが1であり、且つ、入力Ciが0である場合、前段のXOR回路の出力が0、後段のXOR回路の出力が0となるため、Sは0となる。また、前段のAND回路の出力は1となり、後段のAND回路の出力は0となるため、Coutは1となる。
入力Aが1であり、且つ、入力Bが1であり、且つ、入力Ciが1である場合、前段のXOR回路の出力が0、後段のXOR回路の出力が1となるため、Sは1となる。また、前段のAND回路の出力は1となり、後段のAND回路の出力は0となるため、Coutは1となる
このように、まず、順方向の場合に、双方向全/減加算器は、全加/減算器の論理演算機能を有する。
次に逆方向の場合について説明する。
(逆方向の場合)
入力Sが0であり、且つ、入力Ciが0であり、且つ、入力Bが0である場合、前段(逆方向の場合の前段(以下本段落及び次段落において同様))のXOR回路の出力及び後段のXOR回路の出力が0となるため、Aは0となる。また、順方向と同様(以下同じ)、前段のAND回路の出力は0、後段のAND回路の出力も0となるため、Coutは0となる。
入力Sが1であり、且つ、入力Ciが1であり、且つ、入力Bが0である場合、前段のXOR回路の出力が0、後段のXOR回路の出力が0となるため、Aは0となる。また、前段AND回路の出力は0、後段のAND回路の出力も0となるため、Coutは0となる。
入力Sが1であり、且つ、入力Ciが0であり、且つ、入力Bが1である場合、前段のXOR回路の出力が1、後段のXORの出力が0となるため、Aが0となる。また、前段AND出力は0、後段AND回路の出力は0となるため、Coutは0となる。
入力Sが0であり、且つ、入力Ciが1であり、且つ、入力Bが1場合、前段のXOR回路の出力が1、後段のXOR回路の出力が0となるため、Aは0となる。また、前段のAND回路の出力は0、後段のAND回路の出力は1となるため、Coutは1となる。
入力Sが1であり、且つ、入力Ciが0であり、且つ、入力Bが0場合、前段XORの出力は1となり、後段のXORの出力は1となるため、Aは1となる。また、前段のAND回路の出力は0、後段のAND回路の出力は0となるため、Coutは0となる。
入力Sが0であり、且つ、入力Ciが1であり、且つ、入力Bが0場合、前段のXOR回路の出力が1、後段のXOR回路の出力が1となるため、Aは1となる。また、前段のAND回路の出力は0となり、後段のAND回路の出力が1となるため、Coutは1となる。
入力Sが0であり、且つ、入力Ciが0であり、且つ、入力Bが1場合、前段のXOR回路の出力が0、後段のXOR回路の出力が1となるため、Aは1となる。また、前段のAND回路の出力は1となり、後段のAND回路の出力は0となるため、Coutは1となる。
入力Sが1であり、且つ、入力Ciが1であり、且つ、入力Bが1場合、前段のXOR回路の出力が0、後段のXOR回路の出力が1となるため、Aは1となる。また、前段のAND回路の出力は1となり、後段のAND回路の出力は0となるため、Coutは1となる。
このように、逆方向の場合にも、双方向全加/減算器は、全加/減算器の論理演算機能を有する。
図5Bに示した論理素子によれば、双方向関数演算部を用いて、順方向の演算と逆方向の演算を切り替えて行わせることができるため、所定の演算(全加/減算)を双方向に行うことができる。
図6Aは、n桁加/減算器のシンボル図である。図6Bは、n桁加/減算器の回路図である。加(Add)/減(Subtract)算の制御は、全加算器と同様に図1Aの順方向(N)/逆方向(R)制御と関係づけて切り替えることができる。本開示の双方向論理素子を用いたn桁加/減算器の構成例としては、通常全加/減算器をn桁に実装する場合と同様の接続を行えば良い。桁上げを高速に実施するためには、例えば先見桁上げ方法等、様々な桁上げ方法があるのでそれを適用することができる。
図7Aは、乗/除算器(乗算及び除算器)のシンボル図である。図7Bは、乗/除算器の回路図である。図7Aに示すように、乗/除算器は、前述の双方向AND素子を用いて実装することができる。図14に乗/除算器の真理値表を示している。AND回路の情報損失は、図8Aのプリチャージで「1」として補正する。
図8Aは、n桁乗/除算器の構成概念を示す図である。図中「M/D」は、乗算(Mulptiplication)と除算(Devision)との切り替えを示す。図中「M/D」の部分は、図1Bの0デバイド処理部41、41’の切り替えに対応し、その制御は、図1Bの順方向(N)/逆方向制御(R)と関係づけて切り替えることができる。最下位桁は桁上げがないので、乗算がAND素子のみで計算できる。除算は、これから被演算数aが得られ、これを基に、算術演算処理をし、上位桁を並列に演算して商bからbを得る。ただし、数学的定義により被除数a又は除数bが「0」である場合の0デバイド処理が必要になる。さらに、乗算の桁上げ、除算の桁上げが同じことを確認することも考えられる。
図8Bは、乗/除算器の状態割り当てのフロー図である。本開示においては、図8Bに示すフローにより逆関数を定義することができる。すなわち、n桁の被乗数をa、a、・・・・とし、乗数をb、b・・・とするとき、まず、被乗数のうち1桁でも「1」であるかどうかを判定する。
(1)被乗数が全ての桁で0である場合(図8Bの「状態A000」)
数学的定義により、乗数は「0」であると判定する。
(2)被乗数のうち1桁でも「1」である場合
(2-1)積が「0」であり、被乗数が「1」である場合(図8Bの「状態D010」)
算術的に、乗数は「0」であると判定する。
(2-2)積が「0」であり、被乗数が「0」である場合
(2-2-1)(「1/0=0の場合」(図8Bの「状態C110」))
算術的に、乗数は「0」であると判定する。
(2-2-2)(「1/0=0の場合」(図8Bの「状態B111」))
算術的に、乗数は「1」であると判定する。
図8Cは、図8Aで示した乗/除算器で構成したn桁剰/除算器の部分積の一例を示す図である。図8Dは、n桁並列乗/除算器の概念図である。図示2点鎖線で囲った箇所において、前述の0デバイド処理を行う。
図9は、冗長2進加/減算器(冗長2進加算及び減算器)のシンボル図である。冗長2進は、被演算数が符号化されているので逆演算は複雑になる。しかし、2変数の入力のうち被演算が確定すれば、一般の双方向演算素子と同様に容易に計算できる。ここでは、加減算の素子の構成を記号で示しているが、乗/除算はAND素子と半加算器とで構成できるので、前記の双方向加/減算又は乗除算の手法これらの素子で置き換えることで同様に実施できる。
本開示の演算装置は、一実施形態において、前述の双方向論理素子を並列又は直列に接続した、加算及び減算器、及び/又は、乗算及び除算器を含むものであり得る。
本開示の演算装置は、一実施形態において、前述の乗算及び除算器を含み、除算において、被除数のうちいずれかが0である場合を0とし、前記被除数のうち全てが1である場合を1とし、前記被除数が1である場合は除数を1として、0デバイド処理を行う、0デバイド処理部をさらに備えることが好ましい。
<演算方法>
本開示の演算方法は、一実施形態において、前述の双方向論理素子を用いて双方向の演算を行うものである。
一実施形態では、双方向論理素子は、双方向関数演算部を伝達ゲートと2線式論理で構成する。本開示の手法は、一実施形態において、2変数の関数/逆関数を実現するのに現実的で最適で有効な手法である。また、それらを多変数又は多段組み合わせる等により、広く普及しているゲートタイプ論理素子と同等の関数が合成でき、それに加えて逆関数演算が実現できる。
また、本開示において、2線式論理で双方向関数演算部を、例えば全加算器は半加算器を2つ連結して構成することができる。並列乗/除算器は2桁目を乗/除算部と全加算器とを結合することにより集積化する場合、面積を節約できる。さらに、それにより演算又は逆演算の誤りも検出できる。
なお、本開示は、浮動小数点演算や冗長2進演算にも適用でき、より少ない面積で高速に演算できる。また、本開示の方法は、一般の双方向関数演算に加え、特に、関数/逆関数の関係を利用して、加/減算及び乗/除算をそれぞれ1つにして実現できる。特に高速化のため並列処理を必要とする乗/除算等では集積面積、素子数、及び消費電力を大きく減らし、高速に実現することができる。
また、本開示では双方向論理素子で実現した部分関数を用いているが、必要な変数を双方向にする演算に必要な情報を含めた演算結果を符号化して伝えて処理することで、情報損失を防ぎ完全逆関数の実現も可能である。
さらに、本開示の双方向論算素子は、算術演算に好適である。一般に算術演算は、被演算数と演算数の二つの値から演算結果を得るものである。特に1変数の場合、双方向論理素子と整合性があり効率よく、高速、単純に実現できる。さらに、すでに実用化されている高速桁上げ等、高速化アルゴリズム又は冗長2進にも適用できる。
計算機演算処理に用いられる数表現には固定小数点、浮動小数点表現があり、浮動小数点形式、の演算は、仮数部と指数部から構成されていて、仮数部は乗/除算、指数部は加/減算で演算する。本開示も同様の演算を組み合わせることで演算できる。また、符号付数値表現など様々な方法があるが、本開示はこれら全てに適用できる。
本開示によれば、双方向論理素子は、一般の論理関数の演算ができ、それに加えて1変数の逆演算ができる。特に加/減算又は乗/除算の四則演算は、それぞれ演算/逆演算の関係にあり、集積面積、消費電力が約半分で実現できる。また、直接逆関数が得られることから複雑なハードウェア・アルゴリズムが必要なく簡単に演算する方法を提供することができる。さらに、本方法は従来のハードウェア・アルゴリズムにも適用できる。
本開示の双方向論理素子の構成方法では、各単位で双方向に構成し、それらを単数又は複数組み合わせて、装置全体で双方向演算する。また、複数並列又は直列に組み合わせた構成ではそれらを組み合わせた双方向演算部以外の各部を装置全体で1つに構成することもできる。
また、本開示の手法は、2組の従来素子を用いて双方向にすることによっても実現することができる。
また、本開示の手法では、乗算の部分積が無いものについては、除算の試行錯誤的なアプローチは必要ない。
1,1´:関数/逆関数制御部、
2:順方向入力部
3:順方向情報伝達部、
4:双方向関数演算部、
5:逆方向入力部、
3´:逆方向情報伝達部、
6:逆方向関数伝達部、
7:順方向関数伝達部、
31、31´:プルダウン素子、
41、41´:0デバイド処理部

Claims (9)

  1. 論理素子の演算の方向を制御して、順方向の演算である関数と逆方向の演算である逆関数とを切り替えるように制御する、関数/逆関数制御部と、
    順方向の演算の場合の入力を行う、順方向入力部と、
    前記順方向入力部からの入力を伝達する、順方向情報伝達部と、
    逆方向の演算の場合の入力を行う、逆方向入力部と、
    前記逆方向入力部からの入力を伝達する、逆方向情報伝達部と、
    順方向の演算の場合に前記順方向情報伝達部からの入力を入力信号とした順方向の論理演算を行い、且つ、逆方向の演算の場合に前記逆方向情報伝達部からの入力を入力信号とした逆方向の論理演算を行う、双方向関数演算部と、
    順方向の演算の場合の前記双方向関数演算部からの出力を順方向の出力として伝達する順方向関数伝達部と、
    逆方向の演算の場合の前記双方向関数演算部からの出力を逆方向の出力として伝達する逆方向関数伝達部と、を備えることを特徴とする、双方向論理素子。
  2. 前記双方向関数演算部は、ブランチタイプの論理素子で構成された、請求項1に記載の双方向論理素子。
  3. 前記双方向関数演算部は、伝達ゲートを用いて構成された、請求項1又は2に記載の双方向論理素子。
  4. 前記双方向関数演算部は、2線式論理を用いたものである、請求項3に記載の双方向論理素子。
  5. 前記双方向関数演算部は、1線式論理を用いたものである、請求項3に記載の双方向論理素子。
  6. 前記双方向関数演算部を2つ以上有し、
    2つ以上の前記双方向関数演算部が、並列又は直列に接続されて、双方向演算を行う1つ又は複数の演算部として機能する、請求項1又は2に記載の双方向論理素子。
  7. 請求項1又は2に記載の双方向論理素子を並列又は直列に接続した、加算及び減算器、及び/又は、乗算及び除算器を含む、演算装置。
  8. 前記乗算及び除算器を含み、
    除算において、被除数のうちいずれかが1である場合を1とし、前記被除数のうち全てが0である場合を0とし、前記被除数が1である場合は除数を1として、0デバイド処理を行う、0デバイド処理部をさらに備える、請求項7に記載の演算装置。
  9. 請求項1又は2に記載の双方向論理素子を用いて双方向の演算を行う、演算方法。
JP2025556015A 2024-02-27 2024-11-06 双方向論理素子、演算装置、及び演算方法 Active JP7802253B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2024027754 2024-02-27

Publications (1)

Publication Number Publication Date
JP7802253B1 true JP7802253B1 (ja) 2026-01-19

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006303857A (ja) 2005-04-20 2006-11-02 Kyoto Univ 汎用論理モジュール及びそれを有する回路
JP2013179547A (ja) 2012-02-29 2013-09-09 Hitachi Information & Telecommunication Engineering Ltd 論理モジュール

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006303857A (ja) 2005-04-20 2006-11-02 Kyoto Univ 汎用論理モジュール及びそれを有する回路
JP2013179547A (ja) 2012-02-29 2013-09-09 Hitachi Information & Telecommunication Engineering Ltd 論理モジュール

Similar Documents

Publication Publication Date Title
US7971172B1 (en) IC that efficiently replicates a function to save logic and routing resources
US5151875A (en) MOS array multiplier cell
Saxena et al. Analysis of low power, area-efficient and high speed fast adder
CN102819520A (zh) 具有嵌入式浮点结构的数字信号处理模块
US7230451B1 (en) Programmable logic device with routing channels
Sarkar et al. Comparison of various adders and their VLSI implementation
US4878192A (en) Arithmetic processor and divider using redundant signed digit arithmetic
US5010511A (en) Digit-serial linear combining apparatus useful in dividers
US20220236950A1 (en) Full adder integrated circuit and 4-2 compressor integrated circuit based on the full adder integrated circuit
JP3225043B2 (ja) 絶対値算術演算ユニット及び差動マルチプレクサ
Ganguly et al. A unified flagged prefix constant addition-subtraction scheme for design of area and power efficient binary floating-point and constant integer arithmetic circuits
JP7802253B1 (ja) 双方向論理素子、演算装置、及び演算方法
JP3604518B2 (ja) 除算装置
US8589464B1 (en) Arithmetic logic unit
Swettha et al. Area and power efficient MAC unit
WO2025182149A1 (ja) 双方向論理素子、演算装置、及び演算方法
US8463836B1 (en) Performing mathematical and logical operations in multiple sub-cycles
US5084834A (en) Digit-serial linear combining apparatus
US6484193B1 (en) Fully pipelined parallel multiplier with a fast clock cycle
US4866657A (en) Adder circuitry utilizing redundant signed digit operands
Ercegovac et al. Digit-recurrence algorithms for division and square root with limited precision primitives
US7818361B1 (en) Method and apparatus for performing two's complement multiplication
US5978826A (en) Adder with even/odd 1-bit adder cells
Hema et al. Low Power and Area Efficient Carry Save Adder Based on Static 125nm CMOS Technology
US7240085B2 (en) Faster shift value calculation using modified carry-lookahead adder