(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023073196
(43)【公開日】2023-05-25
(54)【発明の名称】デジタルパルス基盤クロスバー演算を行う演算装置及びその動作方法
(51)【国際特許分類】
G06G 7/60 20060101AFI20230518BHJP
G06F 17/10 20060101ALI20230518BHJP
G06G 7/16 20060101ALI20230518BHJP
G06G 7/14 20060101ALI20230518BHJP
G06N 3/063 20230101ALN20230518BHJP
【FI】
G06G7/60
G06F17/10 S
G06G7/16 510
G06G7/14
G06N3/063
【審査請求】未請求
【請求項の数】24
【出願形態】OL
(21)【出願番号】P 2022114655
(22)【出願日】2022-07-19
(31)【優先権主張番号】10-2021-0156660
(32)【優先日】2021-11-15
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】鄭 丞哲
(72)【発明者】
【氏名】金 尚駿
(72)【発明者】
【氏名】明 成▲みん▼
(72)【発明者】
【氏名】尹 石柱
(72)【発明者】
【氏名】尹 勝槿
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA05
5B056BB71
(57)【要約】
【課題】デジタルパルス基盤クロスバー演算を行う演算装置及びその動作方法を提供する。
【解決手段】演算装置は、対応する入力信号により順次パルスが選択的に入力される複数の入力ラインと、複数の入力ラインに交差する複数の出力ラインと、対応する入力ラインと対応する出力ラインとの交差点に配置され、対応する加重値が第1値である場合に応答して、対応する入力ラインに入力されたパルスを対応する出力ラインに伝達する複数の素子と、対応する出力ラインから出力されるパルスの個数をカウントする複数のパルスカウンタを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
対応する入力信号により順次パルスが選択的に入力される複数の入力ラインと、
前記複数の入力ラインに交差する複数の出力ラインと、
対応する入力ラインと、対応する出力ラインとの交差点に配置され、対応する加重値が第1値である場合に応答して、前記対応する入力ラインに入力されたパルスを前記対応する出力ラインに伝達する複数の素子と、
対応する出力ラインから出力されるパルスの個数をカウントする複数のパルスカウンタと、
を含む、演算装置。
【請求項2】
前記対応する入力信号が第1値である場合に応答して、前記パルスが対応する1つ以上の入力ラインに入力され、
前記対応する入力信号が第2値である場合に応答して、前記パルスが前記対応する1つ以上の入力ラインに入力されない、請求項1に記載の演算装置。
【請求項3】
前記素子のそれぞれはダイオードである、請求項1に記載の演算装置。
【請求項4】
前記対応する出力ラインに伝達されたパルスをグラウンドに伝達する複数の第2素子をさらに含む、請求項3に記載の演算装置。
【請求項5】
前記素子のそれぞれはトランジスタであり、
各トランジスタの一端は前記対応する入力ラインに接続され、他端は前記対応する出力ラインに接続され、ゲート端は、前記対応する入力ラインに対応する選択ラインに接続され、
前記対応する入力信号によりパルスが選択的に入力されるとき、選択信号が前記対応する選択ラインに入力される、請求項1に記載の演算装置。
【請求項6】
前記選択信号は、前記対応する入力ラインに入力されるパルスよりも長い幅を有する第2パルスである、請求項5に記載の演算装置。
【請求項7】
前記パルスカウンタのそれぞれは、前記複数の入力ラインに任意にパルスが入力される全体サイクルの間に、前記対応する出力ラインから伝達されたパルスの個数をカウントする、請求項1に記載の演算装置。
【請求項8】
前記複数の入力ラインに入力される入力信号と前記素子の加重値との間のバイナリAND演算に基づいたMAC演算結果は、前記パルスカウンタから出力される値に基づいて決定される、請求項1に記載の演算装置。
【請求項9】
前記素子のそれぞれは、
第1一端が前記対応する入力ラインに接続され、第1他端が第2トランジスタの第2一端に接続され、第1ゲート端が前記対応する入力ラインに対応する選択ラインに接続される第1トランジスタと、
前記第2一端が前記第1トランジスタの前記第1他端に接続され、第2他端が前記対応する出力ラインに接続され、第2ゲート端が対応する第1メモリ素子に接続される第2トランジスタと、
を含み、
前記第1メモリ素子は、対応する加重値を格納し、
前記第2トランジスタは、対応する第1メモリ素子に格納された加重値が第1値である場合に応答して前記第2一端と前記第2他端を短絡させ、前記加重値が第2値である場合に応答して前記第2一端と前記第2他端を開放させる、請求項1に記載の演算装置。
【請求項10】
前記素子のそれぞれは、
一端が前記対応する入力ラインに接続され、他端が前記対応する出力ラインに接続され、コントロールゲート端が前記対応する入力ラインに対応する選択ラインに接続され、フローティングゲート端が前記対応する加重値を格納する第2メモリ素子であり、
前記第2メモリ素子は、前記対応する加重値が第1値である場合に応答して、前記一端と前記他端を短絡させ、前記対応する加重値が第2値である場合に応答して、前記一端と前記他端を開放させる、請求項1に記載の演算装置。
【請求項11】
前記素子のそれぞれは、
第1一端が前記対応する入力ラインに接続され、第1他端が抵抗性メモリの第2一端に接続され、第1ゲート端が前記対応する入力ラインに対応する選択ラインに接続されるトランジスタと、
第2一端が前記トランジスタの前記第1他端に接続され、第2他端が前記対応する出力ラインに接続され、前記対応する加重値による抵抗値を有する抵抗性メモリと、
を含み、
前記抵抗性メモリは、前記対応する加重値が第1値である場合に応答して第1抵抗値を有し、前記対応する加重値が第2値である場合に応答して前記第1抵抗値よりも大きい第2抵抗値を有し、
前記対応する出力ラインとグラウンドとの間に配置される基準抵抗のそれぞれは、前記第1抵抗値と前記第2抵抗値との間の基準抵抗値を有する、請求項1に記載の演算装置。
【請求項12】
前記対応する入力信号の反対信号により順次パルスが選択的に入力される複数の第2入力ラインと、
前記対応する加重値の反対値が第1値である場合に応答して、対応する第2入力ラインと、対応する出力ラインとの交差点に配置され、前記対応する第2入力ラインに入力されたパルスを前記対応する出力ラインに伝達する補完素子と、
をさらに含み、
前記素子のそれぞれ及び前記補完素子のそれぞれは、
対応するゲート端に前記対応する入力ラインに対応する選択ラインに接続され、
前記対応する入力信号によりパルスが選択的に入力されるとき、選択信号が前記対応する選択ラインに入力される、請求項1に記載の演算装置。
【請求項13】
前記複数の入力ラインに入力される入力信号と前記素子の加重値との間のバイナリXNOR演算に基づいたMAC演算結果は、前記パルスカウンタから出力される値に基づいて決定される、請求項12に記載の演算装置。
【請求項14】
前記複数の入力ラインのそれぞれは、前記対応する入力信号がnビットである場合に応答して、2n個のサイクルの間に前記対応する入力信号に応じて1つ以上のパルスを選択的に受信する、請求項1に記載の演算装置。
【請求項15】
前記複数の入力ラインのそれぞれは、前記対応する入力信号がマルチ-ビットである場合に応答して、前記対応する入力信号で同じ桁数に該当する値に応じて順次パルスを選択的に受信し、
前記パルスカウンタのそれぞれは、前記対応する出力ラインから出力されるパルスが前記対応する入力信号において、何番目の桁数に対応するか否かに応じて前記対応する出力ラインから伝達されたパルスをマルチビットである出力信号において対応する桁数に反映する、請求項1に記載の演算装置。
【請求項16】
前記素子は、
前記対応する加重値がnビットである場合に応答して、前記対応する加重値に対応するn個の出力ラインと前記対応する入力ラインに配置され、前記対応する加重値に基づいて、前記対応する入力ラインに入力されたパルスを前記n個の出力ラインのうちの1つ以上に選択的に伝達し、
前記n個の出力ラインのそれぞれに配置されたパルスカウンタから出力された値に前記n個の出力ラインの位置による異なる加重値を適用して出力信号が決定される、請求項1に記載の演算装置。
【請求項17】
入力信号が第2値である場合に応答して、前記入力信号によるパルスが対応する入力ラインに入力されていないサイクルが省略される、請求項1に記載の演算装置。
【請求項18】
前記複数の入力ラインに入力される入力信号のうち、前記素子のうち1つ以上によってパルスが伝達される出力ラインが重ならない2以上の入力信号は、同時に対応する入力ラインに入力される、請求項1乃至17のいずれか一項に記載の演算装置。
【請求項19】
演算装置の動作方法であって、
複数の入力ラインに、対応する入力信号により順次パルスを選択的に入力するステップと、
対応する出力ラインに配置された複数のパルスカウンタを介して、対応する入力ラインと対応する出力ラインとの交差点に配置されている複数の素子により、対応する出力ラインに伝達されたパルスの個数をカウントするステップと、
を含み、
前記複数の入力ラインは、複数の出力ラインに交差し、
前記素子は、対応する加重値が第1値である場合に応答して、前記対応する入力ラインに入力されたパルスを前記対応する出力ラインに伝達する、演算装置の動作方法。
【請求項20】
前記パルスを選択的に入力するステップは、
前記対応する入力信号が第1値である場合に応答して、前記パルスを対応する入力ラインに入力し、
前記対応する入力信号が第2値である場合に応答して、前記パルスを前記対応する入力ラインに入力しない、請求項19に記載の演算装置の動作方法。
【請求項21】
入力ライン及び複数の交差点で前記入力ラインと交差する出力ラインを含むクロスバーアレイと、
前記交差点のいずれか1つに配置され、
各交差点に関する加重値が第1値である場合、前記各交差点に対応する入力ラインに入力されたパルスを前記各交差点に対応する出力ラインに伝達する複数の素子と、
を含む、コンピューティング装置。
【請求項22】
共通入力ラインにより配置された素子は、入力信号に基づいて入力パルスを選択的に受信する、請求項21に記載のコンピューティング装置。
【請求項23】
前記入力信号は2進信号であり、
前記共通入力ラインにより配置された前記素子は、前記2進信号が1である場合に前記入力信号を受信する、請求項22に記載のコンピューティング装置。
【請求項24】
対応する出力ラインに接続され、前記対応する出力ラインから出力されるパルスの個数をカウントする複数のパルスカウンタをさらに含む、請求項21乃至23のいずれか一項に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の開示は、デジタルパルス基盤クロスバー演算を行う演算装置及びその動作方法に関する。
【背景技術】
【0002】
MAC(multiply accumulate:積和)演算とも知られているベクトルマトリックス乗算演算は、様々な分野でアプリケーションの性能を左右する。例えば、多重レイヤを含むニューラルネットワーク(neural network)の機械学習(machine learning)及び認証動作において、MAC演算が行われることができる。入力信号は、入力ベクトルを形成するものと見なされ、イメージ、バイトストリーム、又はその他のデータセットに対するデータであってもよい。入力信号にウェイト(weight:重み)を乗算して累積されたMAC演算の結果から出力ベクトルが求められ、この出力ベクトルは、次のレイヤに対する入力ベクトルに提供されることができる。このようなMAC演算は、複数のレイヤに対して繰り返し行うため、ニューラルネットワーク処理性能はMAC演算の性能に依存的になる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
アナログイン-メモリクロスバー(analog in-memory crossbar)は、アナログ方式で乗算/たし算演算を行って、デジタル形式の最終出力を取得するためにはADC(analog-digital converter)が必要であるが、クロスバー演算器において、ADCは電力消費が大きく、大きい面積を占めているため、イン-メモリコンピューティングの長所を半減させることがある。
【0004】
本文書に開示される様々な実施形態によれば、ADCが必要のないデジタルパルス基盤クロスバーMAC演算器を提供することにある。
【課題を解決するための手段】
【0005】
一実施形態に係る演算装置は、対応する入力信号により順次パルスが選択的に入力される複数の入力ラインと、前記複数の入力ラインに交差する複数の出力ラインと、対応する入力ラインと、対応する出力ラインとの交差点に配置され、対応する加重値が第1値である場合に応答して、前記対応する入力ラインに入力されたパルスを前記対応する出力ラインに伝達する複数の素子と、対応する出力ラインから出力されるパルスの個数をカウントする複数のパルスカウンタとを含む。
【0006】
前記対応する入力信号が第1値である場合に応答して、前記パルスが対応する1つ以上の入力ラインに入力され、前記対応する入力信号が第2値である場合に応答して、前記パルスが前記対応する1つ以上の入力ラインに入力されなくてもよい。
【0007】
前記素子のそれぞれはダイオードであり得る。
【0008】
一実施形態に係る演算装置は、前記対応する出力ラインに伝達されたパルスをグラウンド(ground)に伝達する複数の第2素子をさらに含むことができる。
【0009】
前記素子のそれぞれはトランジスタであり、各トランジスタの一端は前記対応する入力ラインに接続され、他端は前記対応する出力ラインに接続され、ゲート端は、前記対応する入力ラインに対応する選択ラインに接続され、前記対応する入力信号によりパルスが選択的に入力されるとき、選択信号が前記対応する選択ラインに入力されることができる。
【0010】
前記選択信号は、前記対応する入力ラインに入力されるパルスよりも長い幅を有する第2パルスであり得る。
【0011】
前記パルスカウンタのそれぞれは、前記複数の入力ラインに任意にパルスが入力される全体サイクルの間に、前記対応する出力ラインから伝達されたパルスの個数をカウントすることができる。
【0012】
前記複数の入力ラインに入力される入力信号と前記素子の加重値との間のバイナリAND演算に基づいたMAC演算結果は、前記パルスカウンタから出力される値に基づいて決定されることができる。
【0013】
前記素子のそれぞれは、第1一端が前記対応する入力ラインに接続され、第1他端が第2トランジスタの第2一端に接続され、第1ゲート端が前記対応する入力ラインに対応する選択ラインに接続される第1トランジスタと、前記第2一端が前記第1トランジスタの前記第1他端に接続され、第2他端が前記対応する出力ラインに接続され、第2ゲート端が対応する第1メモリ素子に接続される第2トランジスタとを含み、前記第1メモリ素子は、対応する加重値を格納し、前記第2トランジスタは、対応する第1メモリ素子に格納された加重値が第1値である場合に応答して前記第2一端と前記第2他端を短絡させ、前記加重値が第2値である場合に応答して前記第2一端と前記第2他端を開放させることができる。
【0014】
前記素子のそれぞれは、一端が前記対応する入力ラインに接続され、他端が前記対応する出力ラインに接続され、コントロールゲート端が前記対応する入力ラインに対応する選択ラインに接続され、フローティングゲート端が前記対応する加重値を格納する第2メモリ素子であり、前記第2メモリ素子は、前記対応する加重値が第1値である場合に応答して、前記一端と前記他端を短絡させ、前記対応する加重値が第2値である場合に応答して、前記一端と前記他端を開放させることができる。
【0015】
前記素子のそれぞれは、第1一端が前記対応する入力ラインに接続され、第1他端が抵抗性メモリの第2一端に接続され、第1ゲート端が前記対応する入力ラインに対応する選択ラインに接続されるトランジスタと、第2一端が前記トランジスタの前記第1他端に接続され、第2他端が前記対応する出力ラインに接続され、前記対応する加重値による抵抗値を有する抵抗性メモリとを含み、前記抵抗性メモリは、前記対応する加重値が第1値である場合に応答して第1抵抗値を有し、前記対応する加重値が第2値である場合に応答して前記第1抵抗値よりも大きい第2抵抗値を有し、前記対応する出力ラインとグラウンドとの間に配置される基準抵抗のそれぞれは、前記第1抵抗値と前記第2抵抗値との間の基準抵抗値を有することができる。
【0016】
一実施形態に係る演算装置は、前記対応する入力信号の反対信号により順次パルスが選択的に入力される複数の第2入力ラインと、前記対応する加重値の反対値が第1値である場合に応答して、対応する第2入力ラインと、対応する出力ラインとの交差点に配置され、前記対応する第2入力ラインに入力されたパルスを前記対応する出力ラインに伝達する補完素子とをさらに含み、前記素子のそれぞれ及び前記補完素子のそれぞれは、対応するゲート端に前記対応する入力ラインに対応する選択ラインに接続され、前記対応する入力信号によりパルスが選択的に入力されるとき、選択信号が前記対応する選択ラインに入力されることができる。
【0017】
前記複数の入力ラインに入力される入力信号と前記素子の加重値との間のバイナリXNOR演算に基づいたMAC演算結果は、前記パルスカウンタから出力される値に基づいて決定されることができる。
【0018】
前記複数の入力ラインのそれぞれは、前記対応する入力信号がnビットである場合に応答して、2n個のサイクルの間に前記対応する入力信号に応じて1つ以上のパルスを選択的に受信することができる。
【0019】
前記複数の入力ラインのそれぞれは、前記対応する入力信号がマルチ-ビットである場合に応答して、前記対応する入力信号で同じ桁数に該当する値に応じて順次パルスを選択的に受信し、前記パルスカウンタのそれぞれは、前記対応する出力ラインから出力されるパルスが前記対応する入力信号において、何番目の桁数に対応するか否かに応じて前記対応する出力ラインから伝達されたパルスをマルチビットである出力信号において対応する桁数に反映することができる。
【0020】
前記素子は、前記対応する加重値がnビットである場合に応答して、前記対応する加重値に対応するn個の出力ラインと前記対応する入力ラインに配置され、前記対応する加重値に基づいて、前記対応する入力ラインに入力されたパルスを前記n個の出力ラインのうちの1つ以上に選択的に伝達し、前記n個の出力ラインのそれぞれに配置されたパルスカウンタから出力された値に前記n個の出力ラインの位置による異なる加重値を適用して出力信号が決定されることができる。
【0021】
入力信号が第2値である場合に応答して、前記入力信号によるパルスが対応する入力ラインに入力されていないサイクルが省略されることができる。
【0022】
前記複数の入力ラインに入力される入力信号のうち、前記素子のうち1つ以上によってパルスが伝達される出力ラインが重ならない2以上の入力信号は、同時に対応する入力ラインに入力されることができる。
【0023】
一実施形態に係る演算装置の動作方法は、複数の入力ラインに、対応する入力信号により順次パルスを選択的に入力するステップと、対応する出力ラインに配置された複数のパルスカウンタを介して、対応する入力ラインと対応する出力ラインとの交差点に配置されている複数の素子により、対応する出力ラインに伝達されたパルスの個数をカウントするステップとを含み、前記複数の入力ラインは、複数の出力ラインに交差し、前記素子は、対応する加重値が第1値である場合に応答して、前記対応する入力ラインに入力されたパルスを前記対応する出力ラインに伝達する。
【0024】
前記パルスを選択的に入力するステップは、前記対応する入力信号が第1値である場合に応答して、前記パルスを対応する入力ラインに入力し、前記対応する入力信号が第2値である場合に応答して、前記パルスを前記対応する入力ラインに入力しなくてもよい。
【0025】
一実施形態に係るコンピューティング装置は、入力ライン及び複数の交差点で前記入力ラインと交差する出力ラインを含むクロスバーアレイと、前記交差点のいずれか1つに配置され、各交差点に関する加重値が第1値である場合、前記各交差点に対応する入力ラインに入力されたパルスを前記各交差点に対応する出力ラインに伝達する複数の素子とを含む。
【0026】
共通入力ラインにより配置された素子は、入力信号に基づいて入力パルスを選択的に受信することができる。
【0027】
前記入力信号は2進信号であり、前記共通入力ラインにより配置された前記素子は、前記2進信号が1である場合に前記入力信号を受信することができる。
【0028】
一実施形態に係るコンピューティング装置は、対応する出力ラインに接続され、前記対応する出力ラインから出力されるパルスの個数をカウントする複数のパルスカウンタをさらに含むことができる。
【発明の効果】
【0029】
様々な実施形態によれば、出力端にADCがなくても単純なアップ-カウンタ(up-counter)を用いてイン-メモリコンピューティングを実現することで面積を減らすことができ、アナログ-デジタルの変換過程がなくアナログノイズに強靭(robust)であるため、正確性を向上させることができる。また、入力を同時に印加する代わりに順次入力することによって、入力ルーティング(routing)を単純化することができる。
【図面の簡単な説明】
【0030】
【
図1】一実施形態に係るインメモリコンピューティング回路を説明するための図である。
【
図2】一実施形態によりダイオードを含む演算装置の動作を説明するための図である。
【
図3】一実施形態によりトランジスタを含む演算装置の動作を説明するための図である。
【
図4】一実施形態に係るパルスカウンタを説明するための図である。
【
図5】一実施形態に係る演算装置の動作方法を説明するための図である。
【
図6】一実施形態により各素子が2つのトランジスタとメモリ素子を含む演算装置の動作を説明するための図である。
【
図7】一実施形態によりフラッシュメモリを含む演算装置の動作を説明するための図である。
【
図8】一実施形態により各素子がトランジスタと抵抗性メモリを含む演算装置の動作を説明するための図である。
【
図9】一実施形態によりXNOR(Exclusive NOR)ビット演算を行う演算装置の動作を説明するための図である。
【
図10】一実施形態によりマルチビット演算を行う演算装置の動作を説明するための図である。
【
図11】一実施形態によりマルチビット演算を行う演算装置の動作を説明するための図である。
【
図12】一実施形態によりマルチビット演算を行う演算装置の動作を説明するための図である。
【
図13】一実施形態によりマルチビット演算を行う演算装置の動作を説明するための図である。
【
図14】一実施形態に係る演算装置の動作方法を示す図である。
【発明を実施するための形態】
【0031】
実施形態に対する特定な構造的又は機能的な説明は単なる例示のための目的として開示されたものであって、様々な形態に変更されることができる。したがって、実施形態は特定な開示形態に限定されるものではなく、本明細書の範囲は技術的な思想に含まれる変更、均等物ないし代替物を含む。
【0032】
第1又は第2などの用語を複数の構成要素を説明するために用いることがあるが、このような用語は1つの構成要素を他の構成要素から区別する目的としてのみ解釈されなければならない。例えば、第1構成要素は第2構成要素と命名することができ、同様に、第2構成要素は第1構成要素にも命名することができる。
【0033】
いずれかの構成要素が他の構成要素に「連結」されているか「接続」されていると言及されたときには、その他の構成要素に直接的に連結されているか又は接続されているが、中間に他の構成要素が存在し得るものと理解されなければならない。
【0034】
単数の表現は、文脈上、明白に異なる意味をもたない限り複数の表現を含む。本明細書において、「含む」又は「有する」等の用語は、明細書上に記載した特徴、数字、ステップ、動作、構成要素、部品又はこれらを組み合わせたものが存在することを示すものであって、1つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、又はこれを組み合わせたものなどの存在又は付加の可能性を予め排除しないものとして理解しなければならない。
【0035】
異なるように定義さがれない限り、技術的又は科学的な用語を含んで、ここで用いる全ての用語は、本実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義された用語は、関連技術の文脈上で有する意味と一致する意味を有するものと解釈されなければならず、本明細書で明白に定義しない限り、理想的又は過度に形式的な意味として解釈されることはない。
【0036】
以下、添付する図面を参照しながら実施形態を詳細に説明する。図面を参照して説明する際に、図面符号に拘わらず同じ構成要素は同じ参照符号を付与し、これに対する重複する説明は省略する。
【0037】
図1は、一実施形態に係るインメモリコンピューティング回路を説明するための図である。
【0038】
図1を参照すると、ニューラルネットワーク110と、インメモリコンピューティング回路(IMCcircuit,In-memorycomputingcircuit)120が図示されている。
【0039】
一実施形態に係るコンピューティング装置は、インメモリコンピューティングを介してニューラルネットワーク110を処理することができる。インメモリコンピューティングは、演算機能が追加されたメモリを用いた演算を示す。コンピューティング装置は、インメモリコンピューティングを用いたハードウェア加速器を含んでもよい。ニューラルネットワーク110は、1つ以上のレイヤを含み、各レイヤは複数のノードを含んでもよい。複数のノードは、他のレイヤのノードと連結線を介して接続し、連結線には加重値が設定されることができる。例えば、いずれかのノードの出力olは、該当ノードに接続された以前レイヤの他のノードから伝播される入力値i1、i2、i3、i4及び該当ノードの連結線の加重値w11、w21、w31、w41に基づいて決定され得る。L個の出力値のうちl番目の出力olは、下記の数式(1)のように表現されることができる。ここで、Lは1以上の整数であり、lは、1以上L以下の整数である。
【0040】
【数1】
数式(1)において、i
kは、P個の入力のうちk番目の入力、w
klは、k番目の入力とl番目の出力との間に設定された加重値を示す。ここで、Pは1以上の整数であり、kは1以上P以下の整数を示す。言い換えれば、ニューラルネットワーク110において、ノード間の入出力は、入力と加重値との間の加重和を示す。加重和は、複数の入力と複数の加重値との間の乗算演算及び反復的なたし算演算として、乗算累積(積和)演算(MAC operation、multiply and accumulate operation)のように示してもよい。乗算累積演算を行うコンピューティング装置を乗算累積器に示してもよく、乗算累積が実行される回路を乗算累積器回路に示してもよい。また、先に説明した乗算累積が演算機能の追加されたメモリを用いて実行される点で、乗算累積が実行される回路をインメモリコンピューティング回路120と称してもよい。また、乗算累積を行う装置又は回路を簡単に演算装置と称してもよい。
【0041】
図1に示されたインメモリコンピューティング回路120は、先に説明した乗算累積演算をデジタルパルス基盤で行うクロスバーMAC演算器である。インメモリコンピューティング回路120は、複数のローライン(plurality of row lines)121、素子123及び複数のカラムライン(plurality of column lines)125を含む。
【0042】
複数のローライン121は、入力信号を順次に受信することができる。入力信号は、0又は1を有するバイナリ信号であってもよい。例えば、入力信号IN_1が1(又は、ハイ(high))である場合、入力信号IN_1に対応する1番目のサイクルに1番目のローラインにパルスが入力され得る。入力信号IN_2が0(又は、ロー(low))である場合、入力信号IN_2に対応する2番目のサイクルに2番目のローラインにパルスが入力されなくてもよい。本明細書において、複数のローライン121は、説明の便宜のために複数の入力ラインと称されてもよい。
【0043】
一実施形態において、入力信号が順次に複数のローライン121から入力されることは、2以上の入力信号によるパルスが同じカラムラインで衝突することを避けるためである。もし、同じカラムラインで衝突が発生しなければ、2以上の入力信号によるパルスを同時にローラインに入力することができる。
図1の例示において、入力信号IN_2と入力信号IN_3がそれぞれ1であり、それによるパルスがそれぞれ2番目のローラインと3番目のローラインに入力されても、各ローラインに配置されても素子が互いにずれるため、カラムラインに2以上のパルスが入力される衝突が発生しないことから、入力信号IN_2と入力信号IN_3は同時に対応するローラインに入力されることができる。ニューラルネットワーク110のサイズが減少すれば、このようにカラムラインでパルスが衝突しない場合をより多く利用して、演算に行われるサイクルを減少させることができる。
【0044】
他の一実施形態において、n番目の入力信号が0であり、n+1番目の入力信号が1である場合、n番目の入力信号に対応するn番目のサイクルにおいて、パルスがn番目のローラインに入力されない代わりにn番目の入力信号がスキップされ、n+1番目の入力信号に該当するパルスがn+1番目のローラインに入力されることができる。このように、0である入力信号をスキップして次の入力信号を入力し、演算を行う全体サイクルを減少することができる。
【0045】
素子123は、対応するローラインと対応するカラムラインとの交差点に配置され得る。加重値は0又は1を有するバイナリ信号であってもよい。例えば、素子123は、対応する加重値により対応するローラインと、対応するカラムラインとの交差点に配置されたり、配置されなくてもよい。対応する加重値が1である素子は、対応するローラインと、対応するカラムラインとの交差点に配置され、対応するローラインに入力されるパルスを、対応するカラムラインに伝達することができる。反対に、対応する加重値が0である素子は、対応するローラインと、対応するカラムラインとの交差点に配置されていないため、対応するローラインにパルスが入力されても、対応するカラムラインに該当パルスが伝達されないことがある。
【0046】
図1に示された例示において、1番目のローラインと1番目のカラムラインに対応する加重値(1,1)が1であるため、1番目のローラインと1番目のカラムラインとの交差点に素子が配置され、入力信号IN_1により、1番目のローラインに入力されるパルスが1番目のカラムラインへ伝達され得る。反対に、1番目のローラインと3番目のカラムラインに対応する加重値(1,3)が0であるため、1番目のローラインと3番目のカラムラインとの交差点に素子が配置されず、入力信号IN_1により1番目のローラインに入力されるパルスが3番目のカラムラインへ伝達されない。
【0047】
素子123は、乗算演算機能を含むメモリセル(memory cell)又はビットセル(bit-cell)のように称されてもよく、例えば、ダイオード、トランジスタ(例えば、MOSFET(metal oxide semiconductor field-effect transistor)、メモリ素子(例えば、SRAM(static random access memory))、抵抗性メモリのうち少なくとも1つを含み、これについては、以下の図面を参照して詳細に説明する。
【0048】
複数のカラムライン125は複数のローライン121に交差し、各カラムラインは、対応する素子を介して対応する入力ラインから伝達されたパルスを出力することができる。本明細書における複数のカラムライン125は、説明の便宜のために複数の出力ラインと称されてもよい。複数の素子123のうち、同じローラインに沿って配置された素子は同じ入力信号を受信し、同じカラムラインに沿って配置されている素子は同じ出力のためのパルスを伝達することができる。
【0049】
読み出し(read out)127は、複数のカラムライン125それぞれから出力されるパルスの個数をカウントすることによって、乗算累積演算の結果を決定できる。複数のカラムライン125それぞれから出力されるパルスは、各カラムラインに接続されているパルスカウンタに伝達され、該当カラムラインから出力されるパルスの個数がカウントされる。
【0050】
図1において例示的に示したインメモリコンピューティング回路120は、配置された素子123を考慮するとき、下記の乗算累積演算を行うことができる。
【0051】
【数2】
先に説明したインメモリコンピューティング回路120に含まれている各素子において、ビットの桁ごとの乗算演算が行われることで、デジタルパルス基盤クロスバーバイナリMAC演算器が実現されることができる。パルスカウンタを介して各カラムラインから出力されるパルスの個数をカウントすることで、読み出し127の面積及び電力消費を減少させ、さらに、インメモリコンピューティング回路120の面積も最小化できる。アナログに変換する動作がないため、アナログからデジタルに再変換する動作もないため、相当な面積及び電力が求められるADC(analog-digital converter)が必要なく、アナログ演算で必然的に発生するノイズから自由になる。クロスバーアレイが複数のローライン121、素子123、及び複数のカラムライン125を含んでいるためアレイの面積を最小化でき、対応する入力信号が複数のローライン121に順次印加されるため、入力信号を同時に入力されなくてもよいことから、入力信号に対するルーティングが簡素化し、入力信号のための追加的な格納空間を必要としない。
【0052】
図2は、一実施形態によりダイオードを含む演算装置の動作を説明するための図である。
【0053】
図2を参照すると、
図1に示す素子123のそれぞれがダイオードを含み、各ダイオードは、対応する入力ラインに印加されたパルスを対応する出力ラインに伝達することができる。
【0054】
ニューラルネットワークが固定された場合、素子のそれぞれがダイオードで実現されることができる。ダイオードの有無は、それぞれ対応する加重値の値の1又は0を示し、ダイオードの有無を介して対応する入力ラインに入力された入力信号と、該当ダイオードの有無に対応する加重値との間のAND演算が行われることができる。各ダイオードが対応する入力ラインと、対応する出力ラインが物理的に接続し、ダイオードが配置されていない交差点では、対応する入力ラインと出力ラインとが物理的に接続していないことで、ニューラルネットワークがハードウェア(例えば、ダイオード)によって物理的に固定され得る。
【0055】
図2に例示的に示したクロスバーアレイで実行される演算は、上記の数式(2)に表現され、ここで、バイナリ入力信号{1、0、1、1、1}210が入力されれば、下記のような演算が
図2に示されたクロスバーアレイで実行される。
【0056】
【数3】
入力信号{1、0、1、1、1}210は、出力ラインにおける衝突を防止するために、入力ラインに順次に入力され得る。例えば、1番目の入力信号1によるパルスは、1番目のサイクルで1番目の入力ラインに入力され、2番目の入力信号0によるパルスは、2番目のサイクルで2番目の入力ラインに入力されない。
【0057】
先に説明したように、演算が行われる全体サイクルを減少するために、0である2番目の入力信号をスキップし、2番目のサイクルで3番目の入力信号1によるパルスが3番目の入力ラインに入力され得るが、実施形態がこれに制限されることはない。また、ダイオードの配置を考慮するとき、3番目の入力信号1と4番目の入力信号1によるパルスが、それぞれ3番目の入力ラインと4番目の入力ラインに同時に入力されても出力ラインでパルスが衝突しないため、3番目の入力信号1と4番目の入力信号1によるパルスが同時に対応する入力ラインに入力されることによって全体の演算サイクルを減少させ得るが、実施形態がこれに制限されることはない。
【0058】
全体サイクルの間に入力信号{1、0、1、1、1}210により順次にパルスが対応する入力ラインに入力されたり入力されないことによって、1番目の出力ラインから出力されたパルスは3個であってもよく、これに基づいて出力信号220の1番目の要素が3に決定されることができる。同様に、残りの出力ラインのそれぞれから出力されるパルスの個数に基づいて、出力信号220の残りの要素を決定することができる。入力信号と加重値との間のAND乗算演算結果が出力ラインに出力されるパルスの個数に示される。
【0059】
ダイオードの接続は、ロー(low)からハイ(high)へのプルアップ(pull-up)が可能であるが、入力がローである場合、出力がフローティング(floating)される。これを防止するために、プルダウン抵抗(pull-down resistor)230が各出力ラインに接続されてもよい。例えば、1番目のサイクルの初めに1番目の入力ラインにパルスが入力されれば、ダイオード素子の特性に応じて出力ラインがローからハイにプルアップできる。1番目のサイクルの後半に入力ラインがハイからローに変更されても、ダイオード素子の特性上、出力ラインがハイからローに変わらない。ここで、出力ラインにあるハイは、プルダウン抵抗230を介してグラウンドに伝達されることで、出力ラインがハイからローにプルダウンされる。プルダウン抵抗230を介して、次のサイクルが始まる前(例えば、サイクルの後半)に出力ラインの状態をローに設定することで、クロスバーアレイの動作安定性を確保することができる。
【0060】
他の実施形態において、プルダウン抵抗230は、プルダウントランジスタに代替されもよい。各プルダウントランジスタの一端(例えば、ソース端)と他端(例えば、ドレーン端)のいずれか1つが対応する出力ラインに接続し、他の1つがグラウンドに接続してもよい。対応する入力ラインにパルスが入力されたり、入力されない該当サイクルの後半にハイを有するパルスがプルダウントランジスタのゲート端に入力されてもよい。該当サイクルの後半にゲート端にパルスが入力され、プルダウントランジスタが該当サイクルの後半に出力ラインとグラウンドを接続させることで、出力ラインがハイからローにプルダウンすることができる。
【0061】
図3は、一実施形態によりトランジスタを含む演算装置の動作を説明するための図である。
【0062】
図3を参照すると、
図1の素子123のそれぞれがトランジスタ(例えば、MOSFET)を含み、各トランジスタは、対応する入力ラインに印加されたパルスを対応する出力ラインに伝達することができる。
図2を参照して説明したダイオードの代わりにトランジスタを用いてもよい。
【0063】
ニューラルネットワークが固定された場合、素子のそれぞれがトランジスタとして具現化されてもよい。トランジスタの有無は、それぞれ対応する加重値の値の1又は0を示し、トランジスタの有無を介して、対応する入力ラインに入力された入力信号と、該当トランジスタの有無に対応する加重値との間のAND演算を行うことができる。各トランジスタが対応する入力ラインと、対応する出力ラインを物理的に連結し、トランジスタが配置されていない交差点では、対応する入力ラインと出力ラインが物理的に連結されないことによって、ニューラルネットワークがハードウェア(例えば、トランジスタ)により物理的に固定されることができる。
【0064】
各トランジスタのゲート端に入力される選択信号が活用されてもよい。各選択信号は、入力信号が入力される方向に入力され、同じ入力ラインに配置されている1つ以上のトランジスタのゲート端に入力され得る。各トランジスタはソース端に入力ラインが接続され、ドレーン端に出力ラインが接続されてもよい。
【0065】
選択信号は、対応する入力信号が入力される同じサイクルに印加されることがでいる。選択信号がハイである幅は、入力信号がハイである幅よりも広い。また、選択信号がハイからローに変化する時点は、入力信号がハイからローに変化する時点よりも遅延される。言い換えれば、入力信号がハイからローにプルダウンする時点でもトランジスタが入力ラインと出力ラインとを連結させているため、入力ラインがグラウンドとして作用して出力ラインがハイからローにプルダウンすることができる。そのため、出力ラインのプルダウンのために別途の抵抗やトランジスタが不要になる。
【0066】
図4は、一実施形態に係るパルスカウンタを説明するための図である。
【0067】
図4を参照すると、対応する出力ラインから出力されるパルスをカウントする非同期式(asynchronous)パルスカウンタ400を示している。パルスカウンタ400は、出力ラインごとに配置されてもよい。
【0068】
n-ビットパルスカウンタ400は、n個のT-フリップフロップ(T-flipflop)を含む。
図4では、説明の便宜のために4つのT-フリップフロップを含むパルスカウンタ400が示されているが、前述した例に限定されない。
【0069】
対応する出力ラインは、1番目のT-フリップフロップ410に接続され、出力されるパルスが1番目のT-フリップフロップ410のck端に入力されることができる。各T-フリップフロップのQ端から出力されるバイナリ数字に対応する出力ラインから出力されたパルスの個数が表現され得る。例えば、Q0=1、Q1=0、Q2=1、Q3=0であれば、バイナリ数字0101が対応する出力ラインから出力されたパルス個数5を示す。
【0070】
図5は、一実施形態に係る演算装置の動作方法を説明するための図である。
【0071】
以下、実施形態において各動作は順次実行され得るが、必ず順次実行されなくてもよい。例えば、各動作の順序が変更されてもよく、少なくとも2つの動作が並列的に実行されてもよい。動作S510~S530は、演算装置の少なくとも1つの構成要素により実行されることができる。
【0072】
動作S510において、演算装置は、n番目の入力ラインに入力信号によるパルスを入力したり、入力しない。例えば、演算装置は入力信号が1である場合、n番目の入力ラインにパルスを入力し、入力信号が0である場合、n番目の入力ラインにパルスを入力しなくてもよい。ここで、nは整数であって、1から始まる。
【0073】
動作S520において、演算装置は、nがkよりも大きいか否かを判断する。ここで、kは入力信号の総個数を示すものとして、入力ラインの個数と同一であってもよい。nがkよりも大きくなければ、nが1だけ増加する。そして、動作S510が再び実行される。このような動作を介して入力ラインに順次に対応する入力信号によるパルスが入力されたり、入力されなくてもよい。
【0074】
動作S530において、演算装置は、各出力ラインから出力されたパルスの個数を決定する。入力ラインに印加されたパルスは、該当入力ラインと対応する出力ラインとの交差点に配置された素子により対応する出力ラインに伝達され、出力ラインに伝達されたパルスは、出力ラインに接続されたパルスカウンタによってカウントされることができる。素子は、対応する加重値が第1値(例えば、1)の場合に応答して、対応する入力ラインに入力されたパルスを、対応する出力ラインに伝達することができる。
【0075】
図6は、一実施形態により各素子が2つのトランジスタ及びメモリ素子を含む演算装置の動作を説明するための図である。
【0076】
図6を参照すると、
図1に示す素子123のそれぞれが2つのトランジスタ(例えば、MOSFET)610,620と、メモリ素子(例えば、SRAM)630を含む。先に説明したダイオードやトランジスタの代わりに、2つのトランジスタ610,620とメモリ素子630に対応する入力ラインと対応する出力ラインとの交差点に配置されている素子を構成することができる。
【0077】
各素子に含まれている2つのトランジスタ610,620は直列に接続され、第1トランジスタ610は、一端(例えば、ソース端)が対応する入力ラインに接続され、他端(例えば、ドレーン端)が第2トランジスタ620の一端(例えば、ソース端)に接続されてもよい。第1トランジスタ610のゲート端は、対応する選択ラインに接続されてもよい。各選択ラインは、対応する入力ラインに入力信号によるパルスが入力されたり、入力されない同じサイクルに選択信号が入力され得る。選択信号は、同じ入力ラインに配置されている複数の第1トランジスタのゲート端に入力されることができる。選択信号がハイである幅は、入力信号がハイである幅よりも広い。また、選択信号がハイからローに変化する時点は、入力信号がハイからローに変化する時点よりも遅延される。このようなパルス幅差によって、別途のプルダウン抵抗やトランジスタなくとも、出力ラインがハイからローにプルダウンすることができる。
【0078】
第1トランジスタ610は、選択信号に基づいて入力信号によるパルスが入力されたり、入力されないサイクルに両端(例えば、ソース端及びドレーン端)が互いに短絡されることができる。第1トランジスタ610の動作は、対応する入力信号や対応する加重値に関わっていない。
【0079】
第2トランジスタ620は、一端(例えば、ソース端)が第1トランジスタ610の他端(例えば、ドレーン端)に接続され、他端(例えば、ドレーン端)が対応する出力ラインに接続されてもよい。第2トランジスタ620のゲート端は、対応するメモリ素子630に接続される。メモリ素子630は、対応する加重値を格納することができる。メモリ素子630が第1値(例えば、1)の加重値を格納すれば、第2トランジスタ620は一端と他端を短絡させ、対応する入力ラインに印加されたパルスを、対応する出力ラインに伝達することができる。反対に、メモリ素子630が第2値(例えば、0)の加重値を格納すれば、第2トランジスタ620は一端と他端を開放させ、対応する入力ラインに印加されたパルスが、対応する出力ラインに伝達されることを防止できる。
【0080】
図2及び
図3を参照して説明した例示とは異なり、入力ラインと出力ラインとの全ての交差点に素子が配置されてもよく、各メモリ素子が対応する加重値を格納してもよい。従って、ニューラルネットワークが固定される必要がなく、ニューラルネットワークによる加重値を各メモリ素子に格納することで、様々なニューラルネットワークを実行させることができる。
【0081】
入力ラインと出力ラインに配置されている素子の他に、他の事項(例えば、複数の入力ラインに順次に入力信号によるパルスが入力されたり入力されない、パルスカウンタを介して出力ラインから出力されるパルスの個数をカウントして出力信号を決定するなど)は、
図2及び
図3を参照して説明した事項がそのまま適用され得るため、より詳細な説明は省略する。
【0082】
図6では、説明の便宜のために各メモリ素子がSRAMのように図示されているが、その他にも、トランジスタのゲート端に接続され得るメモリ素子であれば、制限されることなく適用できる。
【0083】
図7は、一実施形態によりフラッシュメモリを含む演算装置の動作を説明するための図である。
【0084】
図7を参照すると、
図1に示す素子123のそれぞれが第2メモリ素子に代替されることができる。例えば、第2メモリ素子は、不揮発性のフラッシュメモリを含んでもよい。先に説明したダイオードやトランジスタの代わりに、第2メモリ素子を用いてもよい。第2メモリ素子は、入力ライン及び出力ラインの全ての交差点に配置され、格納された加重値に応じて両端を短絡させたり開放させたりすることができる。従って、ニューラルネットワークが固定される必要なく、ニューラルネットワークによる加重値を各第2メモリ素子に格納することで、様々なニューラルネットワークを実行させることができる。
【0085】
第2メモリ素子は、一端(例えば、ソース端)が対応する入力ラインに接続され、他端(例えば、ドレーン端)が対応する出力ラインに接続され、コントロールゲート端が対応する選択ラインに接続され、フローティングゲート端が対応する加重値を格納することができる。
【0086】
各選択ラインは、対応する入力ラインに入力信号によるパルスが入力されたり入力されない同じサイクルに選択信号が入力され得る。選択信号は、同じ入力ラインに配置されている複数の第2メモリ素子のコントロールゲート端に入力され得る。選択信号がハイである幅は、入力信号がハイである幅よりも広くてもよい。また、選択信号がハイからローに変化する時点は、入力信号がハイからローに変化する時点よりも遅延される。このようなパルス幅差により、別途のプルダウン抵抗やトランジスタなくても、出力ラインがハイからローにプルダウンできる。
【0087】
コントロールゲート端が第1値(例えば、1)を格納すれば、第2メモリ素子は一端と他端を短絡させ、対応する入力ラインに印加されたパルスを対応する出力ラインに伝達することができる。反対に、コントロールゲート端が第2値(例えば、0)を格納すれば、第2メモリ素子は、一端と他端を開放させ、対応する入力ラインに印加されたパルスが対応する出力ラインに伝達されることを防止できる。
【0088】
入力ライン及び出力ラインに配置されている素子の他に、他の事項(例えば、複数の入力ラインに順次に入力信号によるパルスが入力されたり入力されない、パルスカウンタを介して出力ラインから出力されるパルスの個数をカウントして出力信号を決定するなど)は、先に説明した事項がそのまま適用されるため、より詳細な説明は省略する。
【0089】
図7では、説明の便宜のために第2メモリ素子がフラッシュメモリとして図示されているが、その他にも、類似の特性を有するFeFET(ferroelectric field-effect transistor)がフラッシュメモリの代わりに用いられてもよい。
【0090】
図8は、一実施形態により各素子がトランジスタと抵抗性メモリを含む演算装置の動作を説明するための図である。
【0091】
図8を参照すると、
図1の素子123のそれぞれがトランジスタ(例えば、MOSFET)810と抵抗性メモリ(例えば、RRAM(resistive random access memory))820に代替されてもよい。先に説明したダイオードやトランジスタの代わりに、トランジスタ810と抵抗性メモリ820に対応する入力ラインと、対応する出力ラインとの交差点に配置されている素子を構成することができる。
【0092】
各素子に含まれているトランジスタ810及び抵抗性メモリ820は直列に接続されてもよい。トランジスタ810は、一端(例えば、ソース端)が対応する入力ラインに接続され、他端(例えば、ドレーン端)が抵抗性メモリ820の一端に接続され、ゲート端が対応する選択ラインに接続されてもよい。各選択ラインは、対応する入力ラインに入力信号によるパルスが入力されたり入力されない同じサイクルに選択信号が入力され得る。選択信号は、同じ入力ラインに配置されている複数のトランジスタのゲート端に入力されることができる。選択信号がハイである幅は、入力信号がハイである幅よりも広てくてもよい。また、選択信号がハイからローに変化する時点は、入力信号がハイからローに変化する時点よりも遅延されてもよい。入力信号は、ハイからローに変わった選択信号がハイに保持される間に、出力ラインが抵抗性メモリ820を介してハイからローにプルダウンできる。また、出力ラインのプルダウンは、基準抵抗830を介して実行されてもよい。
【0093】
抵抗性メモリ820は、メモリ状態に応じて抵抗値が変わり、このような特性を用いて対応する加重値が表現される。例えば、対応する加重値が第1値(例えば、1)であれば、抵抗性メモリ820は第1抵抗値を有し、対応する加重値が第2値(例えば、0)であれば、抵抗性メモリ820は第2抵抗値を有することができる。第2抵抗値は、第1抵抗値よりも大きくてもよく、例えば、第1抵抗値より100倍以上大きくてもよいが、前述した例に限定されない。
【0094】
各出力ラインには、基準抵抗830が接続され得る。基準抵抗830は、一端が対応する出力ラインに接続され、他端がグラウンドに接続されている。基準抵抗830は、固定された抵抗値を有し、固定された抵抗値は、第1抵抗値よりも大きく第2抵抗値よりも小さくてもよい。例えば、固定された抵抗値は、第1抵抗値よりも10倍以上大きく、第2抵抗値よりも1/10倍以下に小さくてもよいが、前述した例に限定されない。
【0095】
抵抗性メモリ820と基準抵抗830との間の抵抗比
【0096】
【数4】
によって、対応する入力ラインに印加されたパルスが対応する出力ラインに伝達されたり、伝達されなくてもよい。例えば、抵抗性メモリ820が第1抵抗値R
Lを有する場合(言い換えれば、対応する加重値が第1値である場合)、下記の数式のように抵抗比が1に近似し、対応する入力ラインに印加されたパルスが出力ラインに伝達され得る。
【0097】
【数5】
反対に、抵抗性メモリ820が第2抵抗値R
Hを有する場合(言い換えれば、対応する加重値が第2値である場合)、下記の数式のように抵抗比が0に近似し、対応する入力ラインに印加されたパルスが出力ラインに伝達されない。
【0098】
【数6】
抵抗性メモリ820と基準抵抗830との間の抵抗比を介して、入力信号と加重値との間のバイナリAND演算を容易に実現することができる。
【0099】
図9は、一実施形態によりXNOR(Exclusive NOR)ビット演算を行う演算装置の動作を説明するための図である。
【0100】
図9を参照すると、XNOR演算を実現するためのクロスバーアレイが示されている。
【0101】
一実施形態に係る演算装置は、正数及び負数を範囲に有する入力、及び加重値に対する乗算累積演算を行うことができる。例えば、クロスバーアレイに含まれている素子でXNOR演算が行われ、これに対する真理表(truth table)は、下記の表1のように示される。
【0102】
【表1】
表1において、-1のビット値を0の論理値、1のビット値を1の論理値に表現することができる。ビット値は実際に算出される数値的値を示し、論理値は各ビット値に割り当てられたビットシンボルを示す。0の論理値はL、1の論理値はHで表現されてもよい。表1に示すように、論理値の間のXNOR演算結果は、対応するビット値の間の乗算結果に対応する。クロスバーアレイは、素子に基づいた乗算演算を介して正数及び負数範囲の入力と出力との間の乗算を処理することができる。
【0103】
参考として、本明細書では、説明の便宜のために前述した表1のように、0の論理値が-1のビット値、1の論理値が1のビット値であると説明するが、これに限定されることなく、設計に応じて反対に割り当てられてもよい。例えば、1の論理値が-1のビット値、0の論理値が1のビット値に割り当てられてもよい。
【0104】
XNOR演算のために、入力信号(例えば、IN_1)によるパルスが入力ライン930に入力されたり、入力されない同じサイクルで入力信号の反対信号(例えば、IN_1b)が第2入力ライン940に入力されてもよい。先に説明した例示とは異なって、XNOR演算を実現するために、いずれかのサイクルに入力信号と、これに対応する反対信号がそれぞれ入力ライン930と第2入力ライン940に入力されてもよい。入力信号と反対信号がそれぞれ入力ライン930と第2入力ライン940に入力されることで、パルスが入力ライン930及び第2入力ライン940のいずれか1つにのみ印加されることができる。例えば、入力信号が第1値(例えば、1)であれば、反対信号は、第2値(例えば、0)を有し、入力ライン930にのみパルスが印加される。反対に、入力信号が第2値(例えば、0)であれば、反対信号は、第1値(例えば、1)を有し、第2入力ライン940にのみパルスが印加される。
【0105】
図1における素子123のそれぞれは、トランジスタ(例えば、MOSFET)に代替されてもよい。ただし、対応する加重値によってトランジスタが配置される位置が変わり得る。例えば、対応する加重値が第1値(例えば、1)であれば、対応する入力ライン930と、対応する出力ラインとの交差点にトランジスタが配置され、選択信号によってトランジスタの両端が短絡され、対応する入力ライン930に印加されたパルスを出力ラインに伝達することができる。逆に、対応する加重値が第2値(例えば、0)であれば、対応する第2入力ライン940と、対応する出力ラインとの交差点にトランジスタが配置され、第2選択信号によってトランジスタの両端が短絡され、対応する第2入力ライン940に印加されたパルスを出力ラインに伝達することができる。このように、トランジスタは、対応する加重値によって相互補完的(complementary)に構成することができる。
図9に示す例として、ビットセル910は、対応する加重値が1である場合(ビット値1)を示し、ビットセル920は、対応する加重値が0である場合(ビット値-1)を示す。
【0106】
各出力ラインに接続されたパルスカウンタによって、対応する出力ラインから出力されるパルスの個数がカウントされることができる。複数の入力ラインに入力される入力信号と素子の加重値との間バイナリXNOR演算に基づいたMAC演算結果は、パルスカウンタから出力される値に基づいて決定され得る。出力ラインにパルスが出力されれば1を意味し、パルスが出力されなければ、-1を意味する。まとめると、各出力ラインに対するMAC演算結果は、該当出力ラインから出力されたパルス個数に2を乗算し、その結果にアレイサイズを引いた値、言い換えれば、「2×OUT-array size」に決定され得る。例えば、OUTは、パルスカウンタの出力を示す。
図9に例示的に示された1番目の出力ラインでは4個のパルスが出力され、アレイサイズが5であるため、「2×4-5=3」がバイナリXNOR演算に基づいたMAC演算結果として決定されることができる。
図9の例示として実行される全体演算は、下記のとおりである。
【0107】
【数7】
バイナリXNOR演算に基づいたMAC演算結果を求めるためには、入力信号に対応する反対信号がクロスバーアレイに入力されなければならないため、アレイの面積が2倍増加する。
【0108】
図10~
図13は、一実施形態によりマルチビット演算を行う演算装置の動作を説明するための図である。
【0109】
前述した例示は、入力信号と加重値が単一ビットであったが、
図10~
図13を参照して入力信号及び加重値のマルチビットの実現について説明する。説明の便宜のために、
図10~
図12を参照して入力信号のマルチビットの実現について説明し、
図13を参照して加重値のマルチビットの実現について説明するが、実施形態によって入力信号及び加重値の全てがマルチビットで実現されてもよい。
【0110】
図10を参照すると、サーモメータコード(thermometer code)の形態にパルスが対応する入力ラインに入力される例示を示している。入力信号が3ビットである場合、000~111の間のいずれか1つを示す。
図10の例示において、1番目の入力信号が110である場合、1番目の入力信号110がサーモメータコードの形態に表現された6個のパルスが順次に対応する入力ラインに入力されることができる。もし、クロスバーアレイ内の素子にトランジスタが使用されれば、該当トランジスタのゲート端に入力される選択信号は、3ビットの全体が入力され得る7サイクルの間にハイを保持することができる。選択信号がnビットである場合、選択信号は2
n-1サイクルの間にハイを保持することができる。また、2番目の入力信号が011である場合、2番目の入力信号011がサーモメータコードの形態に表現された3つのパルスが順次に対応する入力ラインに入力されることができる。
図10において、説明の便宜のために入力信号が3ビットである場合を示したが、その他にも、様々な実施形態が制限されることなく適用できる。
【0111】
図10を参照して説明したnビット入力信号の例示において、クロスバーアレイの面積の増減はないものの、演算サイクルが2
n-1だけ増加する(nは、自然数)。
【0112】
図11を参照すると、入力バイナリ加重値マルチ-ビット(input binary weighted multi-bit)が適用された例示を示している。
図11において、説明の便宜のために、4ビットに表現される3つの入力信号が入力ラインに入力される動作について説明するが、前述した例に限定されない。また、
図11において、説明の便宜のために1番目の出力ラインのみが図示され、残りの出力ラインは省略され、1番目の出力ラインに対する説明が残りの出力ラインに対しても同様に適用されてもよい。また、
図11において、素子が
図3を参照して説明したトランジスタを含むものとして図示されているが、前述した例に限定されない。
【0113】
複数の入力ラインのそれぞれは、対応する入力信号で同じ桁数に該当する値に応じて順次パルスを受信したり、受信しなくてもよい。例えば、1番目~3番目のサイクル1110で各入力信号の最上位の桁数(MSD;most significant digit)が順次に対応する入力ラインに入力されてもよい。1番目のサイクルでは、1番目の入力信号の最上位の桁数1によりパルスが1番目の入力ラインに入力される。2番目のサイクルでは、2番目の入力信号の最上位の桁数0によりパルスが2番目の入力ラインに入力されなくてもよい。3番目のサイクルでは、3番目の入力信号の最上位の桁数1によりパルスが3番目の入力ラインに入力される。4番目~6番目のサイクル1120では、各入力信号の次に上位の桁が順次に対応する入力ラインに入力される。7番目~9番目のサイクル1130では、各入力信号の次に上位の桁が順次に対応する入力ラインに入力される。10番目~12番目のサイクル1140では、各入力信号の最下位の桁数(LSD;least significant digit)が順次に対応する入力ラインに入力される。
【0114】
先に説明した実施形態とは異なり、各入力信号において同じ桁数に該当する値が順次に対応する入力ラインに入力されることにより、各出力ラインから出力されるパルス個数が出力信号に反映されることも変わり、これについては
図12を参照して詳細に説明する。
【0115】
図12を参照すると、1番目~3番目のサイクル1210において、1番目の出力ラインのパルスは1番目と3番目のサイクルから出力される。該当パルスは、出力信号の最上位の桁数に反映するために、パルスカウンタの4番目のT-フリップフロップ1240のck端に入力される。10番目~12番目のサイクル1220において、1番目の出力ラインのパルスは12番目のサイクルから出力される。該当パルスは、出力信号の最下位の桁数に反映するため、パルスカウンタの1番目のT-フリップフロップ1230のck端に入力される。同様に、残りのサイクルで出力されたパルスは、対応するT-フリップフロップに伝達され、これによってマルチ-ビットの入力信号に対するマルチ-ビットの出力信号が決定されることができる。
【0116】
図11及び
図12を参照して説明したnビット入力信号の例示において、クロスバーアレイの面積の増減はないものの、演算サイクルがn倍だけ増加する。
【0117】
図13を参照すると、加重値バイナリ加重値マルチ-ビット(weight binary weighted multi-bit)が適用された例示が示されている。
図13では、説明の便宜のために、加重値が4ビットである例示を示しているが、前述した例に限定されない。また、
図13では、説明の便宜のために1番目の出力信号に対応する出力ラインのみが図示され、残りの出力信号に対応する出力ラインが省略されてもよい。また、
図13に示された素子に実施形態が制限されない。
【0118】
加重値がnビットである場合、いずれかの加重値は、1つの入力ラインとn個の出力ラインとの交差点の素子のように表現される。例えば、1番目の入力信号と1番目の出力信号との間4ビット加重値が1010である場合、1番目及び3番目の出力ラインの交差点に素子が配置され、1番目の入力ラインに印加されたパルスを対応する出力ラインに伝達することができる。1番目の出力信号に対応する1番目~4番目の出力ラインのそれぞれは、対応するパルスカウンタに接続され、各パルスカウンタの出力は、シフト加算(shift adding)される。シフト加算を介して、1番目の出力ラインに接続された1番目パルスカウンタの出力は、1番目の出力信号の最上位の桁数に反映され、4番目の出力ラインに接続された4番目パルスカウンタの出力は、1番目の出力信号の最下位の桁数に反映され得る。同様に、残りのパルスカウンタの出力についても対応する桁数に反映されてもよい。そのため、各出力ラインに加重値を付与し、マルチ-ビットの加重値が適用されたマルチ-ビットの出力信号を決定することができる。
【0119】
図13を参照して説明したnビット加重値の例示において、演算サイクルの増減はないものの、クロスバーアレイの面積がn倍だけ増加する。
【0120】
図14は、一実施形態に係る演算装置の動作方法を示す図である。
【0121】
以下、実施形態における各動作は順次実行されるが、必ず順次に実行されなくてもよい。例えば、各動作の順序が変更されてもよく、少なくとも2つの動作が並列的に実行されてもよい。動作S140~S1420は、演算装置の少なくとも1つの構成要素によって実行されることができる。
【0122】
演算装置は、携帯電話、スマートフォン、タブレット、電子ブック装置、ラップトップ、パーソナルコンピュータ、又は、サーバのような様々なコンピューティング装置、スマートウォッチ、スマートメガネ、HMD(Head-Mounted Display)、又は、スマート衣類のような様々なウェアラブル機器、スマートスピーカ、スマートTV、又は、スマート冷蔵庫のような様々な家電装置、スマート自動車、スマートキオスク、IoT(Internet of Things)機器、WAD(Walking Assist Device)、ドローン、又は、ロボットを含む様々な装置又はその一部として実現することができる。
【0123】
動作S1410において、演算装置は、複数の入力ラインに、対応する入力信号により順次にパルスを入力したり、入力しない。
【0124】
動作S1420において、演算装置は、対応する出力ラインに配置された複数のパルスカウンタを介して、対応する入力ラインと対応する出力ラインとの交差点に配置されている複数の素子によって、対応する出力ラインに伝達されたパルスの個数をカウントする。
【0125】
複数の入力ラインは、複数の出力ラインに交差することができる。素子は、対応する加重値が第1値である場合に応答して、対応する入力ラインに入力されたパルスを対応する出力ラインに伝達することができる。
【0126】
図14に示された各動作には、
図1~
図13を参照して前述した事項がそのまま適用されているため、より詳細な説明は省略する。
【0127】
以上で説明された実施形態は、ハードウェア構成要素、ソフトウェア構成要素、又はハードウェア構成要素及びソフトウェア構成要素の組み合せで具現化される。例えば、本実施形態で説明した装置及び構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサー、又は命令(instruction)を実行して応答する異なる装置のように、1つ以上の汎用コンピュータ又は特殊目的コンピュータを用いて具現化される。処理装置は、オペレーティングシステム(OS)及びオペレーティングシステム上で実行される1つ以上のソフトウェアアプリケーションを実行する。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理、及び生成する。理解の便宜のために、処理装置は1つが使用されるものとして説明する場合もあるが、当技術分野で通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び/又は複数類型の処理要素を含むことが把握する。例えば、処理装置は、複数のプロセッサ又は1つのプロセッサ及び1つのコントローラを含む。また、並列プロセッサ(parallel processor)のような、他の処理構成も可能である。
【0128】
ソフトウェアは、コンピュータプログラム、コード、命令、又はそのうちの一つ以上の組合せを含み、希望の通りに動作するよう処理装置を構成したり、独立的又は結合的に処理装置を命令することができる。ソフトウェア及び/又はデータは、処理装置によって解釈されたり処理装置に命令又はデータを提供するために、いずれかの類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体又は装置、又は送信される信号波に永久的又は一時的に具体化することができる。ソフトウェアはネットワークに連結されたコンピュータシステム上に分散され、分散した方法で格納されたり実行され得る。ソフトウェア及びデータは一つ以上のコンピュータで読出し可能な記録媒体に格納され得る。
【0129】
本実施形態による方法は、様々なコンピュータ手段を介して実施されるプログラム命令の形態で具現化され、コンピュータ読み取り可能な記録媒体に記録される。記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合せて含む。記録媒体及びプログラム命令は、本発明の目的のために特別に設計して構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例として、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気-光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置を含む。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
【0130】
上記で説明したハードウェア装置は、本発明に示す動作を実行するために1つ以上のソフトウェアモジュールとして作動するように構成してもよく、その逆も同様である。
【0131】
上述したように実施形態をたとえ限定された図面によって説明したが、当技術分野で通常の知識を有する者であれば、上記の説明に基づいて様々な技術的な修正及び変形を適用することができる。例えば、説明された技術が説明された方法と異なる順に実行され、及び/又は説明されたシステム、構造、装置、回路などの構成要素が説明された方法とは異なる形態に結合又は組み合わせられてもよく、他の構成要素又は均等物によって置き換え又は置換されたとしても適切な結果を達成することができる。
【0132】
したがって、他の具現化、他の実施形態および特許請求の範囲と均等なものも後述する特許請求範囲の範囲に属する。