(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023129271
(43)【公開日】2023-09-14
(54)【発明の名称】部分和に基づいた低減した読取エネルギーの使用
(51)【国際特許分類】
G06F 7/50 20060101AFI20230907BHJP
G06F 1/3206 20190101ALI20230907BHJP
G06F 7/523 20060101ALI20230907BHJP
G06G 7/60 20060101ALI20230907BHJP
G06F 1/3296 20190101ALI20230907BHJP
【FI】
G06F7/50
G06F1/3206
G06F7/523
G06G7/60
G06F1/3296
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023013281
(22)【出願日】2023-01-31
(31)【優先権主張番号】63/268,830
(32)【優先日】2022-03-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/269,899
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/860,228
(32)【優先日】2022-07-08
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】500262038
【氏名又は名称】台湾積體電路製造股▲ふん▼有限公司
【氏名又は名称原語表記】Taiwan Semiconductor Manufacturing Company,Ltd.
【住所又は居所原語表記】No.8, Li-Hsin Rd.6, Hsinchu Science Park, Hsinchu, TAIWAN
(74)【代理人】
【識別番号】100165157
【弁理士】
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100182143
【弁理士】
【氏名又は名称】赤川 誠一
(72)【発明者】
【氏名】柯 文昇
(72)【発明者】
【氏名】呉 秉駿
(72)【発明者】
【氏名】呂 易倫
(72)【発明者】
【氏名】呉 瑞仁
(72)【発明者】
【氏名】張 孟凡
【テーマコード(参考)】
5B011
【Fターム(参考)】
5B011DA00
5B011EA09
5B011EB01
5B011LL00
(57)【要約】
【課題】部分和に基づいた低減した読取エネルギーの使用である。
【解決手段】実施例は、特定の条件に対して積和演算の部分和を監視することを含む。特定の条件が満たされる場合、通常の読取エネルギーの代わりに、低減した読取エネルギーによってメモリの内容を読み取る。プリチャージ電圧の低下、プリチャージ電圧の保有や接地信号の提供、及び/又は電圧保持時間の短縮(即ち、プリチャージ電圧を提供及び/又は放電する時間の短縮)により、低減した読取エネルギーを取得することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
メモリ演算操作の部分和が正であるかを判定して、第1の結果を取得する工程と、
前記部分和の選択されたビットが0から1に変わったかを判定して、第2の結果を取得する工程と、
前記第1の結果及び前記第2の結果が両方とも真であることに応じて、前記メモリ演算操作のメモリユニットの読取操作の読取配置を調整する工程と、
を備えるメモリの読取方法。
【請求項2】
第1の読取エネルギーによってメモリの1組の重み付けベクトルから第1組のビットを読み取る工程と、
1組の入力を前記第1組のビットに乗算して、第1の積を取得する工程と、
前記第1の積を累積積和に追加する工程と、
前記累積積和が正で且つ前記累積積和のビット条件が0から1に変わると、読取エネルギー低減信号を有効にする工程と、
前記第1の読取エネルギーより小さい第2の読取エネルギーによって前記メモリから前記組の重み付けベクトルにおける第2組のビットを読み取る工程と、
を備えるメモリの読取方法。
【請求項3】
前記第1の積を前記累積積和に追加する前に、前記累積積和に対してビットシフトを行う工程を更に備える請求項2に記載の方法。
【請求項4】
前記第2組のビットを読み取るためには、前記第1組のビットを読み取るための時間帯より短い時間帯を使用する請求項2又は3に記載の方法。
【請求項5】
前記第2組のビットを読み取るためには、前記第1組のビットを読み取るための第1のプリチャージ電圧より低い、アンプを読み取るための第2のプリチャージ電圧を利用する請求項2又は3に記載の方法。
【請求項6】
前記ビット条件は、第1の指数、第2の指数、第3の指数又は第4の指数の前記累積積和を有する選択されたビットに対応し、前記第1の指数は、この組の入力の第1の入力のビット長にこの組の入力内の複数の入力の2を底とする対数を足したものであり、前記対数は次の整数に丸められ、前記第2の指数は、前記第1の指数に1を足したものであり、前記第3の指数は、前記第1の指数に2を足したものであり、前記第4の指数は、前記第1の指数に3を足したものである請求項2又は3に記載の方法。
【請求項7】
1組の入力及び対応する1組の重み付けベクトルが記憶されるコンピュータ可読メモリと、
加算器と、乗算器と、前記組の入力及び対応する前記組の重み付けベクトルの反復積及び演算の累積結果を記憶するための部分和レジスタと、を含む乗算累積装置と、
前記重み付けベクトルを読み取るために、バイアス電圧をセンスアンプに供給するためのマルチプレクサと、
部分和を評価し、前記マルチプレクサに供給される読取エネルギー低減信号を有効にするかを判定して、且つ前記読取エネルギー低減信号を有効にするための動的読取論理と、
を備えるメモリ装置。
【請求項8】
前記読取エネルギー低減信号が更に提供される制御ブロックを更に備え、
前記制御ブロックは、メモリアクセスタイミングを提供し、前記読取エネルギー低減信号が有効にされる場合に、前記コンピュータ可読メモリを読み取る読取遅延を減少することに用いられる請求項7に記載のメモリ装置。
【請求項9】
前記動的読取論理は、前記部分和の符号ビット及び前記部分和の選択されたビットを検査することで、前記部分和を評価することに用いられる請求項7又は8に記載のメモリ装置。
【請求項10】
前記マルチプレクサは、前記読取エネルギー低減信号に基づいて前記バイアス電圧を選択することに用いられるが、前記読取エネルギー低減信号が有効にされる場合、前記読取エネルギー低減信号が有効にされていない場合よりも小さいバイアス電圧を提供することに用いられる請求項7又は8に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【0001】
部分和に基づいた低減した読取エネルギーの使用に関する。
【背景技術】
【0002】
乗算アキュムレータは、入力データを逐語的にビットごとに、対応する重み付けデータに乗算することに使用されることができる。入力データをメモリから読み取って重みが乗算された結果は、乗算累積レジスタに記憶される。結果は、例えば、人工知能演算等の様々な用途に使用されることができる。
【発明の概要】
【0003】
本開示の一実施例は、メモリ演算操作の部分和が正であるかを判定して、第1の結果を取得する工程と、部分和の選択されたビットが0から1に変わったかを判定して、第2の結果を取得する工程と、第1の結果及び第2の結果が両方とも真であることに応じて、メモリ演算操作のメモリユニットの読取操作の読取配置を調整する工程と、を備えるメモリの読取方法を提供する。
【0004】
本開示の別の実施例は、第1の読取エネルギーによってメモリの1組の重み付けベクトルから第1組のビットを読み取る工程と、1組の入力を第1組のビットに乗算して、第1の積を取得する工程と、第1の積を累積積和に追加する工程と、累積積和が正で且つ累積積和のビット条件が0から1に変わると、読取エネルギー低減信号を有効にする工程と、第1の読取エネルギーより小さい第2の読取エネルギーによってメモリから前記組の重み付けベクトルにおける第2組のビットを読み取る工程と、を備えるメモリの読取方法を提供する。
【0005】
本開示の別の実施例は、1組の入力及び対応する1組の重み付けベクトルが記憶されるコンピュータ可読メモリと、加算器と、乗算器と、前記組の入力及び対応する前記組の重み付けベクトルの反復積及び演算の累積結果を記憶するための部分和レジスタと、を含む乗算累積装置と、重み付けベクトルを読み取るために、バイアス電圧をセンスアンプに供給するためのマルチプレクサと、部分和を評価し、マルチプレクサに供給される読取エネルギー低減信号を有効にするかを判定して、且つ読取エネルギー低減信号を有効にするための動的読取論理と、を備えるメモリ装置を提供する。
【図面の簡単な説明】
【0006】
添付図面に合わせて読む場合、以下の詳細な説明によって、本開示の態様を好適に理解することができる。なお、作業における標準実務によると、各特徴は、比例して描かれていない。実際に、説明を明確にするために、各特徴の次元は、任意に増減することができる。
【
図1】幾つかの実施例による使用できる入力ノード、重み付けベクトル及び合計を示す。
【
図2】幾つかの実施例による使用できる入力ノード、重み付けベクトル及び合計を示す。
【
図3】幾つかの実施例による積和演算(multiply accumulate computation;MAC)の1つの段階を示す。
【
図4】幾つかの実施例による積和演算(multiply accumulate computation;MAC)の1つの段階を示す。
【
図5】幾つかの実施例による積和演算(multiply accumulate computation;MAC)の1つの段階を示す。
【
図6】幾つかの実施例による積和演算(multiply accumulate computation;MAC)の1つの段階を示す。
【
図7】幾つかの実施例によるMAC演算を提供するためのメモリ演算(compute-in-memory;CIM)システム図を示す。
【
図8】幾つかの実施例による動的読取操作の高度なブロック
図100を示す。
【
図9】MACブロック160の例示的な実施形態を示す。
【
図10】幾つかの実施例によるMAC操作を実行するためのフロー200を提供するフローチャートを示す。
【
図11】幾つかの実施例による、部分和PSが動的読取条件を満たすかを評価するためのフロー240を提供するフローチャートを示す。
【
図12】幾つかの実施例による、部分和PSが動的読取条件を満たすかを評価するためのフロー240を提供するフローチャートを示す。
【
図13】幾つかの実施例による低減した読取エネルギー(reduced read energy;RRE)信号が有効にされるかを評価及び判定するための動的読取(dynamic read;DYNR)ブロックの例示的な実施を示す。
【
図14】幾つかの実施例による、部分和PSの選択ビットの1対1の入力ではなく、イネーブル可能な例示的な論理条件セットを示す。
【
図15】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図16】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図17】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図18】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図19】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図20】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図21】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図22】幾つかの実施例によるDYNRブロック操作のサンプリング演算及び表示を示す。
【
図23】幾つかの実施例による、低減した読取エネルギーがイネーブルされる場合に取得できる低減した読取エネルギーを示すグラフを提供する。
【
図24】幾つかの実施例による読取電圧とセンシング良率との間の関係を示す。
【
図25】幾つかの実施例による、アレイに関連する1つの入力/出力(input/output;IO)の読取パスを説明する概略図を示す。
【
図27】幾つかの実施例によるタイミングチャート及びセンスアンプの図を示す。
【
図28】論理回路図の図を示し、低減した読取エネルギーがイネーブルされると、プリチャージは行われない。
【発明を実施するための形態】
【0007】
理解すべきなのは、以下で、本開示は、本開示の異なる特徴を実現するために、数多くの異なる実施例又は実例を提供することである。以下、本開示を簡素化するために、具体的な部材、配置の実例を説明する。勿論、これらは、実例に過ぎず、制限するためのものではない。例えば、後述では、第2の特徴への第1の特徴の形成は、第1及び第2の特徴が直接接触する実施例を含んでよいが、第1及び第2の特徴が直接接触できないように、第1と第2の特徴との間に追加の特徴が形成されてよい実施例を含んでもよい。また、本開示は、各実例において、素子(要素)符号及び/又は英字を繰り返すことができる。この繰り返しは、単純で明確な目的のために行われ、且つそれ自体が議論された各実施例及び/又は配置の間の関係を示すものではない。なお、信号は、高1又は低0に有効にされることができ、且つ文脈又は規則に別段の定めがない限り、本明細書で使用される「1」は、「有効にされた」ことを意味するものとして理解され、文脈又は規則に別段の定めがない限り、本明細書で使用される「0」は、「有効にされていない」ことを意味するものとして理解される。当業者は、装置及び設計によって、必要に応じていつでもこれらの信号を反転させることができる。
【0008】
人工ニューラルネットワークの分野では、機械学習によって入力データを取得し、入力データに対して演算を行い、その後、起動関数を適用してデータを処理する。起動関数の出力は、本質的に、入力データの簡略化された表現である。入力データは、ノード層におけるデータノードであってよい。
図1は、3x3畳み込みの実例を示し、この畳み込みは機械学習における画像データ処理に使用されることができる。画像10は、各画素11からなる。画像は、RGB(赤-緑-青)やHSL(色調-飽和-発光)等の色空間で表現することができ、各画素の各色空間変数に1つの値を割り当てる。画像のノード12は、3x3画素ブロックであり、ノード12における各画素11は、ノード12の画素11の各色空間変数に対する入力値I
1~9を有する。3x3畳み込みにおける可能な演算の1つに積和演算が使用され、各入力値I
1~9にそれぞれ重み付け行列14の重み付け値W
1~9が乗算される。乗算するたびに、各積の累積合計を保持することができる。このような積和演算は、積和演算/演算(multiply accumulate computation/calculation;MAC)16と呼ばれることができる。演算中に、中間値は、累積積和(Accumulated Product Sum;APS)と呼ばれることができる。演算フローが終了すると、APSをMAC16の出力とする。その後、この出力を起動関数に提供して評価することができる。
【0009】
図2は、
図1に示す概念、つまり任意の長さのN個の入力ノードに対して、より一般的な形態で説明する。各入力I
0~I
N-1に重み付けベクトルW
0~W
N-1をそれぞれ乗算する。その後、積和演算(MAC)で、これらの値を合計する。その後、MACを出力Oとして使用し、選択可能に起動関数に提供されるか、他のある形態で使用されることができる。
【0010】
汎用プロセッサで実行されるコンピュータプログラムを作成することができ、例えば、以下の擬似コード(pseudocode)には、入力(INPUT)アレイ及び重み(WEIGHT)アレイでMACのループを実行することを含み、
Initialize a counter integer to 0.Initialize a storing variable(e.g.,APS)to 0.
Provide an INPUT array having the length n with input values.
Provide a WEIGHT array having the length n with signed weight values.
For counter=0,counter<n,counter++{
APS=APS+(INPUT[counter]*WEIGHT[counter]).
}
MAC=APS.
Provide MAC as output.
【0011】
効率を向上させるために、このアルゴリズムは、例えば、特殊アプリケーション集積回路(application specific integrated circuit;ASIC)又はフィールドプログラマブルゲートアレイ(field programmable gate array;FPGA)等の特殊なハードウェアで実施されることができる。しかしながら、特殊なハードウェア(例えば、特殊アプリケーション集積回路(ASIC))にこの論理を実施するには、デジタル論理ブロックで二項数学を使用することに関わる。このようなハードウェアの実施は、メモリ演算(compute-in-memory;CIM)実施と呼ばれることができる。CIM実施は、メモリからの入力データ及び重み付けデータを含むデータの読取、及びMAC操作等の簡単な操作の実行に関わる。本明細書に記載のハードウェアでは、CIM実施として二項数学によってMACを演算する。
【0012】
図4は、入力データ、重み付けベクトル及びMACのバイナリ表現を示し、ハードウェアにアルゴリズムでMACを実施することに用いられる。以下、動的読取モジュールに合わせて、ハードウェアの実施をより詳しく説明する。入力データは、振幅値等、ノードにおけるデータポイントの符号なし値ノードである。入力データの長さはNビットである。例えば、Nは、4ビット、8ビット、16ビット等であってよい。例えば、Nが8であると、各入力値は、何れも0~255にある。重み付けベクトルは、2の補数形態の符号付き重み付け値である。そのため、負数は、最上位有効ビット(most significant bit;MSB)において1で始まる。各重み付けベクトルの長さは、Kビットである。Nは、Kと同じでも、異なる値でもよい。例えば、Kが8ビットであると、各重み付け値は、-128~127にある可能性がある。符号では、入力値の場合、i番目の入力は、ノードにおける入力データポイントの入力指数に対応する。各重みは、重み付けベクトルの対応するi番目の重み指数を有することになる。つまり、i番目の入力とi番目の重み付けベクトルとの間に1対1の関連性が存在する。
【0013】
各i番目の入力の長さは、各i番目の重み付けベクトルと異なる可能性がある。入力は、最下位有効ビット(least significant bit;LSB)からMSBまで配列する。例えば、i番目の入力のr番目の値は、Ii,rx2rに等しい。重み付けベクトルの順序は、入力と逆であり、即ちMSBからLSBまで配列する。例えば、i番目の重み付けベクトルのj番目の値は、Wi,jx2K-j-1に等しい。入力では、k=0ビットは、最下位有効ビット(least significant bit;LSB)であり、且つi番目の入力は値Ii,0x20を有する。
【0014】
図3に示すように、MACによって生成されるビットの総数は、N+K+Mの対数(2を底とする)に等しく、最も近い整数に丸められる。例えば、ノードにおける入力数が9(例えば、9ポイント畳み込みに対応する)で、且つN及びKがそれぞれ8であると、MACの出力におけるビット数は、8+8+Roundup(log
29)=20である。この値は、Roundup(N+K+log
2M)に等価的に表されることができる。
【0015】
これらの関係に鑑みて、
図4は、入力値及び重み付けベクトルをビットごとで処理する数式を示す。ビットごとの形態によって、各入力値に重み付けベクトルの各ビットを乗算し、各回の反復後に合計する。式の左側は、i個の入力及び対応するi個の重み付けベクトルの和積の一般式である。この合計は、等式の右側に分解でき、重み付けベクトルの符号ビットを処理するための第1の項及び残りのビットを処理するための第2の項を含む。
【0016】
第1の項は、Nビットの符号なし入力と各符号付きKビットの重み付けベクトルの符号ビットの積の和を示す。
図3に示すように、重み付けベクトルのMSBは、符号ビットを保有し、符号で重み付けベクトルの0番目のビットとして示され、ビットj=0のためである。第1の項は、入力に重み付けベクトルの0番目のビット(符号ビットを示す)を乗算し、且つ結果に0番目のビット値を乗算し、この値が2
K-1に等しい。その後、この結果を負値として記録する。本質的に、入力と符号ビットとの間の乗算は、重み付けベクトルの最大負性を確立する。例えば、重み付けベクトルが8ビットで且つ負で、即ちW
i,0=1であると、符号ビットは、2
7ビット値のうちの「1」を示す。二項数学において、これは、入力された2s補数を7回左にシフトすることに相当する。各入力I
iに対してこの工程を反復して実行し、第1の項は、全てのこれらの積の合計を示す。対応する重み付けベクトルが負ではなく、即ちW
i,0=0であると、ゼロを追加する。
【0017】
第2の項は、2つの実施オプションを含む。1番目のオプションでは、第2の項は、2つのネストされた合計演算を含む。内部合計は、重み付けベクトルWiに残っているj個のビットのそれぞれの合計を示し、入力Iiを乗算し、更に、重み付けベクトルWiにおけるj番目のビットに対応するビット値を乗算する。つまり、特定の入力Iiの場合、入力Ii全体は、各jビット及びその重み付けベクトルのjビットの対応するjビット値(2K-j-1)をそれぞれ乗算して加算する。外部合計は、各入力Ii及び重み付けベクトルWiに対して内部合計を繰り返し、且つ全てのこれらの合計を加算する。
【0018】
2番目のオプションでは、第2の項は、2つのネストされた合計演算を含むが、その1番目のオプションに使用される順序と逆である。内部合計は、各入力Iiの合計にK個の重み付けベクトル内の各特定の重み付けベクトルのビット値を乗算する値を示す。これらの値を加算する。その後、各入力IiにK個の重み付けベクトル内のそれぞれの次の重み付けベクトルビットを乗算する。このように、各ビット値に対して全ての重み付けビットを処理してから、次のビット値に移動する。
【0019】
図5は、
図4に示す合計式の例示的な実施を示す。単一の入力I及び単一の重み付けベクトルWを使用し、ただし、M=1、N=8及びK=8である。I
0=77(0100 1101)及びW
0=116(0111 0100)である。合計
【数1】
では、第1の項は-(77 ・ 0 ・ 2
7)=0000 0000に調整されることができる。第2の項は、77・(1・2
6)+77 ・ (1・2
5)+77・(1・2
4)+77・(0・2
3)+77・(1・2
2)+77 ・ (0・2
1)+77・(0・2)=77 ・ 2
6+77 ・ 2
5+77 ・ 2
4+77 ・ 2
2=4928(1 0011 0100 0000)+2464(1001 1010 0000)+1232(100 1101 0000)+308(1 0011 0100)=8932(0010 0010 1110 0100)に調整されることができる。第1の項(0)を第2の項に追加して、合計8932(0010 0010 1110 0100)を取得する。
【0020】
逆に、重み付けベクトルが負で、即ち、-116(1000 1100)であると、結果は、-(77 ・ 1 ・ 27)=-(0100 1101)・ 27=1011 0011 ・ 27=101 1001 1000 0000である。第2の項は77・(0・26)+77・(0・25)+77・(0・24)+77・(1・23)+77・(1・22)+77・(0・21)+77・(0・20)=77 ・ 23+77 ・ 22=616(0010 0110 1000)+308(0001 0011 0100)=924(0011 1001 1100)に調整されることができる。第1の項と第2の項を加算し、合計-8932(1101 1101 0001 1100)を取得する。
【0021】
本実例から分かるように、重み付けベクトルが負である場合、ビットごとの数学では、重み付けベクトルを入力の-128倍に設定し、その後、最終的な結果に達するまで、後のビットは、正数の部分を負数までにする(負数を小さくする)。重み付けベクトルが正である場合、第1の項は「0」になり、第2の項は重み付けベクトルの残りのビットのビットごとの合計になる。
【0022】
図6は、例えば、重み付けベクトルWのn個のビットを処理した後、所定のポイントの演算状態を示すように、
図4の右側項を2つの部分に分解する。第1の部分(
【数2】
)は、重み付けベクトルWのn番目のビットによってMAC操作に部分和を提供する。第2の部分(
【数3】
)は、重み付けベクトルWのn+1ビットからK-1ビットまでの残った未知の部分和を示す。任意の所定のn箇所で、既知の部分和を累積部分和として収集して、未知の残りの和はまだ演算されていない。
【0023】
実施例では、既知の部分和を評価して、低減した読取エネルギーによって残りの演算を実行できるかを判定して、メモリから後の演算に使用される重み付けビットを読み取るようにする。低減した読取エネルギーを使用すると、間違ったメモリ読取の可能性が高くなり、或いは、以下の幾つかの実施例のように、残りの未読ビットを「0」に強制する。この許容誤差は、効果的に未知の余剰和の配列推定に繋がる。以下の幾つかの理由により、誤差が許容されることがある。まず、MSBからLSBに重み付けベクトルを処理するため、未知の余剰和は、通常、既知の部分和よりはるかに小さく、且つ最終的なMAC値への貢献は既知の部分和で示される初期評価ビットよりはるかに小さい。例えば、
図15~
図22の例示的な演算では、MAC出力は、完全に演算されると、38865になる。この値のうち、重み付けベクトルの最後のビットはこの値に253をのみ貢献 し、最後の2つのビットはこの値に1317をのみ貢献し、最後の3つのビットはこの値に2641をのみ貢献し、最後の4つのビットはこの値に6017を貢献し、且つ、最後の5つのビットはこの値に15601を貢献する。上記の各々は、MAC出力値38865の0.7%、3.4%、6.8%、15.5%及び40.1%をそれぞれ示す。これらのパーセンテージ及び値は、以下に示すようなこれらの入力及び重み付けベクトルに固有であるが、(本発明者の期待どおり)重み付けベクトルの下位有効ビットの貢献は最終的なMAC値に与える影響が小さいことを示す。次に、MACの出力が入力データの何らかの表現(実際のデータ自体ではない)として理解されるため、幾つかのエラーが許容され、最終的に表現自体は入力データの派生表示になるためである。そのため、実施例は、累積積和をテストする能力を提供して、低減した読取エネルギーによって未知の余剰和を演算するためのビットを読み取ることができるかを判定する。
【0024】
低減した読取エネルギー(reduced read energy;RRE)信号を使用することで、実施例は、部分和累積を監視することで乗算累積関数の演算エネルギーを減少する方法を提供し、且つ部分和累積が一定の条件を満たすと、残りの演算のためにメモリから入力値を読み取るためのメモリ読取エネルギーを低減する。メモリ読取エネルギーの低減によりエラー値を読み取るリスクは高くなるが、エネルギーコストを削減する。上記のように、これは、効果的に推定又は近似の最終累積値に繋がる。条件を監視するために、正確値を必要としないので、推定値は、入力処理に十分であると見なされる。部分和の条件は読取エネルギーを低減する条件が満たされる場合、実施例は、読取電圧の低減、読取の遅延の短縮、又は読取操作のスキップによって、読取エネルギー消費を低減するための動的読取操作を実施することができる。以下、これらの実施例について詳しく説明する。
【0025】
例えば、0.2Vの公称電圧がメモリ位置を読み取るための読取電圧(又はバイアス電圧)であると仮定する。部分和が下記のような条件が満たされる場合、読取電圧が0.1Vに下がることができると、乗算累積演算の実行に必要な総エネルギーは、顕著に低減することができる。例えば、平均読取エネルギーは、以下の式によって特徴付けることができる。
REavg=P1×E1+P2×E2
【0026】
ここで、P1は読取電圧が公称読取電圧V1(例えば、0.2V)である確率であり、E1は読取電圧が公称読取電圧V1である場合のエネルギー消費であり、P2は読取電圧が低減した読取電圧V2(例えば、0.1V)の確率であり、E2は読取電圧が低減した読取電圧V2である場合のエネルギー消費である。エネルギー消費の実例として、磁気抵抗ランダムアクセスメモリ(Magnetoresistive Random Access Memory;MRAM)装置に対して、E1は約256フライジュール(fJ)/ビットであってもよく、E2は約144fJ/ビットであってもよい。P1=P2=50%であると、平均読取エネルギーは0.5×256+0.5×144=200fJ/ビットである。この場合、省エネは、256-200)/256=22%となる。勿論、これらの値は実例に過ぎず、メモリのタイプ、読取電圧及び他の読取電圧でのエネルギー消費に応じて、他の値を使用してもよいことを理解できる。
【0027】
図7は、幾つかの実施例によるMAC演算を提供するCIMシステム図を示す。このシステムは、MACシステム100と呼ばれることができる。MACシステム100は、複数のブロックを含む。メモリアレイ110(又はメモリ110又はメモリ装置110)は、入力値及び重み付けベクトルを保つ。メモリアレイ110は、任意の適切なメモリ装置の任意の適切なアレイであってよい。例えば、メモリアレイ110は、抵抗ランダムアクセスメモリ(resistive RAM;RRAM)、MRAM、動的ランダムアクセスメモリ(dynamic RAM;DRAM)、同期DRAM(synchronous DRAM;SDRAM)、相転移ランダムアクセスメモリ(phase change RAM;PCRAM)等、又はそれらの組み合わせを含んでよい。ワード線ドライバ(word line driver;WLDR)120は、メモリアレイ110からビットにアクセスするためのワード線を駆動することに用いられることができる。制御ブロック130は、ワード線用のxデコーダ及びビット線及びセンシング線用のyデコーダを含む。制御ブロックは、読み書き操作のタイミング制御をまた含む。マルチプレクサ(multiplexer;MUX)140は、制御からのデコード信号に基づいてビット線及びセンシング線を選択する。入力/出力(input/output;IO)ブロックは、メモリアレイ110からの入力/出力操作のためにセンスアンプを提供する。乗算累積ユニット(multiply accumulate unit;MAC)ブロック160は、MAC操作を実行するための、例えば加算器、乗算器、レジスタ等機能ユニットを提供する。動的読取(dynamic read;DYNR)ブロック170は、低減した読取エネルギー条件を満たすかを演算し、低減した読取エネルギー条件を満たすかに基づいてRRE信号を有効にする。
【0028】
図8は、幾つかの実施例による動的読取操作の高度なブロック
図100を示す。動的読取操作では、幾つかのシステムブロックが連携して動作して、MACブロック160に提供されるデータは低減した読取エネルギーによって読み取られるか、公称読取エネルギーによって読み取られるかを判定する。動的読取(dynamic read;DYNR)ブロック170は、マルチプレクサ(multiplexer;MUX)ブロック140に低減した読取エネルギー(reduced read energy;RRE)信号を提供する。入力された初期条件は、読取配置がより省エネ又はより信頼性があるかによって決められる。幾つかの実施例によれば、入力に応じて、マルチプレクサブロック140は、入力/出力(input/output、IO)ブロック150のビット線センスアンプにプリチャージを入力するための動的読取バイアス電圧V
1又はV
2を提供する。IOブロック150は、乗算アキュムレータ演算(multiply accumulator compute;MAC)ブロック160に提供されたメモリ装置から重み付けベクトルWビットを読み取ることに用いられる。入力IもMACブロック160に提供される。入力ベクトルI及び重み付けベクトルWが1対1の対応関係を有するので、入力ベクトルの数Mは、重み付けベクトルの数Mに等しくなる。部分和PS(一部(即ち、選択されたビット)又は全体の部分和)はDYNRブロック170に提供され、DYNRブロック170は部分和PSを使用して1組の条件での部分和をテストすることができ、この組の条件は後の処理のためにDYNRブロック170からMUX140へのRRE信号の返信を有効にするかを判定する。幾つかの実施例において、各重み付けベクトルは1回で1つの完全な重み付けベクトルを処理し、且つこの和は部分和PSとして累積される。このような実施例では、MACの出力は、別のMACレジスタに累積された別の部分和である。他の実施例において、詳細に後述するように、各入力に対して各重み付けベクトルの全てのj個のビットを処理するように、各重み付けベクトルを部分的に処理し、その後、各重み付けベクトルのj+1個のビットを処理し、これに従って類推する。
【0029】
図9は、MACブロック160の例示的な実施を示す。W
0~W
M-1のうちのそれぞれのW
j個のビットを重みレジスタ161に提供する。入力I
0~I
M-1は、1組の入力レジスタ162に提供される。乗算ブロック163に、これらの入力のうちのそれぞれに各重み付けベクトルのW
j個のビットを乗算する。結果を加算器ブロック164に提供し、加算器ブロックは乗算結果をシフトした後、以前に記憶された部分和に追加する。その後、結果を部分和レジスタ165に記憶して戻す。部分和PSをDYNRブロック170に提供することができる。
【0030】
理解すべきなのは、MACブロック160のサブブロックは様々な方法で配置可能であることである。幾つかの実施例において、入力レジスタ162は、1回で1つの入力ベクトルを保存するが、他の実施例においては、データノードの全ての入力ベクトルを保存することができる。幾つかの実施例において、重みレジスタ161は、各重み付けベクトルからの1つの符号付き重み付けベクトル又は対応するビットを保存するが、他の実施例においては、1回で重み付けベクトルからの1つのビットを保存する。乗算ブロック163は、シフトレジスタを利用して、重み付けベクトルの最上位有効ビットから最下位有効ビットまで、ビットごとの形態で入力ベクトルと重み付けベクトルを乗算することができる。その後、入力ベクトルと重み付けベクトルを乗算した後、結果を加算器ブロック164に提供し、その後、部分和ブロック165に提供することができる。
【0031】
図10は、幾つかの実施例によるMAC操作を実行するためのフロー200を提供するフローチャートを示す。フロー要素210で、低減した読取エネルギー(reduced read energy;RRE)信号がアクティブ状態にあると、エネルギー低減フローを使用して後の重み付けビットを読み取り、RRE信号が有効にされていないと、公称フローを使用して後の重み付けビットを読み取る。上記のように、エネルギー低減のフローは、低減したバイアス電圧、短縮したタイミング、及び/又は読取のスキップ(例えば、バイアス電圧を0に下げ、残りのビットが「0」に読み取られる)を使用することを含む。フロー要素220では、MACと積累積の一部として、部分和累積フローが逐語的に入力され、ビットごとに重み付けされて実行される。フロー要素230では、RREがアクティブ状態にあるかを評価する。アクティブ状態でないと、フロー要素240で動的読取条件に対して部分和(partial-sum;PS)を評価する。RREがアクティブ状態にあると、幾つかの実施例において、RRE信号は、RREがアクティブ状態になり、リセットしなければ、非アクティブ状態に戻さないまで、アクティブに保つ。そのため、RREがアクティブ状態にあると、フローがフロー要素270にスキップして全ての重み付けビットを処理したかを評価する。また、フロー要素250では、PSが動的読取操作をイネーブルする条件を満たすと、フロー要素260で、RREはアクティブに設定され、そうでないと、フローがフロー要素270に移行して全ての重み付けビットを処理したかを評価する。全ての重み付けビットを処理したと、フロー要素280で、PSをMACとして出力する。全ての重み付けビットが処理されていないと、フロー要素290では、システムが重み付けベクトルの次の重み付けビットに進む。
【0032】
図11は、PSが動的読取条件を満たすかを評価するためのフロー240(
図10参照)を提供するフローチャートを示す。フロー要素241では、PSからデータを受信する。受信したデータは、APS全体でも、PSからの選択ビットでもよい。フロー要素242では、PS(PS
19)の19番目のビット(又は符号ビット)を検査して、PSの値が正であるか、負であるかを判定する。PSが負であると、フローはフロー要素247にスキップして、PSが動的読取条件を満たさないと判定することができる。PSが正であると、更に評価する。PSが20ビットの長さではないと、選択されたビットは符号ビットがこのPSである任意のビットであってもよい。例えば、PSが24ビットの長さであると、符号ビットはPS
23となる。フロー要素243、244、245及び246は、それぞれPSの特定ビットをテストして、0から1に移動したかを判定する。特に、フロー要素243はPS
11、フロー要素244はテストPS
12、フロー要素245はPS
13、及びフロー要素246はPS
14をテストする。これらのビット値は、実例に過ぎない。4つのPSビットより大きい又は小さいものを提供してテストすることができる。なお、テストしたビット指数は、ビット11、12、13及び14と異なる可能性がある。このフローの実例を探索した後、以下、テストビットの選択について更に詳しく説明する。
【0033】
幾つかの実施例において、
図11に示すように、示されたビット11、12、13及び/又は14のうちの1つ又は複数は、テストするためにイネーブルされることができる。幾つかの実施例において、必要に応じて、各ビットにテスト要素をイネーブルするか、無効にすることができる。初期ビットをテストすると、PSは、フローの初期段階でフロー要素248での動的読取条件を満たすことになる。一旦、以前のビット(例えば、ビット11)をテストして条件を満たすと、後のビットをテストする必要がないため、フローは、直ちにフロー要素248に移行することができ、即ちPSは動的読取条件を満たす。
【0034】
図12では、他の実施例において、ビットの論理的な組み合わせを使用することができる。示された論理的な組み合わせは、実例に過ぎず、必要に応じて任意の論理的な組み合わせを使用することができる。同様な要素に対して同様な素子符号で付記される。しかしながら、フロー要素244では、PS
11ビット及びPS
12ビットの両方を検査し、両者が0から1に移動したかを判定する。フロー要素245では、PS
11ビット、PS
12ビット及びPS
13ビットを全て検査し、全部が0から1に移動したかを判定する。フロー要素246では、PS
11ビット、PS
12ビット、PS
13ビット及びPS
14ビットを検査し、全部が0から1に移動したかを判定する。これらの条件の一つを満たす場合、フローは、フロー要素248に移行し、且つPSが動的読取条件を満たすと判定する。
【0035】
図13は、RRE信号が有効にされるかを評価及び判定するためのDYNRブロック170の例示的な実施を示す。DYNRブロック170は、RSTのリセット入力を含む入力を受信し、有効にされる場合、RSTのリセット入力はMACフローがリセットされるのを示す。例えば、MACフローが完了した後、制御ブロック130によりRST信号を有効にすることができる。RST信号が一である場合、MACフローは、リセットされるべきである。RST信号がゼロである場合、MACフローは、続けることができる。DYNRブロック170は、また、入力がゼロではない入力NZを受信する。NZが0であると、出力が常にゼロであり、入力が重み付けベクトルに乗算されるため、演算を実行すべきではない。NZが1であると、入力はゼロではなく、MACフローは続けることができる。PS
19ビットは、20ビット部分和165(
図9参照)であると仮定される。部分和165は、別のビット長bを有すると、符号ビットがPS
b-1になり、且つこのビットが検査されるビットであり、PS
19ビットではない。PS
19ビットを検査して部分和165が負、即ち「1」であるかを判定する。部分和165が負であると、RRE信号を有効にしない。部分和165が正であると、部分和165の他のビット値に応じてRRE信号を有効にする。
【0036】
図13は、また、幾つかの実施例によるDYNRブロック170がPS
11、PS
12、PS
13及びPS
14ビットを受信できる場合を示す。これらのビットのうちのそれぞれは、制御ブロック130からの対応するイネーブルビット信号を有してもよく、この制御ブロックは、各ビット信号の転送ゲートをイネーブルする。例えば、転送ゲートTPS
11は、転送ゲートに入力PS
11から出力PS
Xまで伝送するようにイネーブルするイネーブル入力を有してもよい。TPS
11のイネーブル入力の初期時に入力としてもよいが、簡単にするために、それについて説明しない。このイネーブル入力は、制御ブロック130からのもの、又はその内部で発生するものであってよい。イネーブル入力は、PS
11、PS
12、PS
13及びPS
14の信号を選択的に出力信号PS
Xに伝送するのを許容する。例えば、DYNRブロック170は、j=0の最下位ビットPS
11、j=1の次のビット(PS
12)、j=2の次のビット(PS
13)及びj≧3の次のビット(PS
14)をテストすることができる。或いは、別の実例では、DYNRブロック170は、j=≦ 1の最下位ビットPS
11、j=2の次のビット(PS
12)、j=3の次のビット(PS
13)、j≧4の次のビット(PS
14)をテストすることができる。他の配置でも可能である。例えば、幾つかの実施例において、選択されたビットは、入力の合計値に基づくことができる。最大合計は(N
8-1)×Mであり、ただし、Nは入力のビット長であり、Mは入力の数である。N=8及びM=9である場合、最大入力及びISは2295である。一実施例において、例えば、合計入力が下四分位(1≦IS≦573)にあると、最下位ビットPS
11をイネーブルして出力信号PS
Xに選択することができる。総入力和ISが2番目の四分位(574≦IS≦1147)にあると、次のビットPS
12をイネーブルすることができる。総入力和ISが3番目の四分位(1148≦IS≦1721)にあると、次のビットPS
13をイネーブルすることができる。総入力和ISが4番目の四分位(1722≦IS≦2295)にあると、次のビットPS
14をイネーブルすることができる。
【0037】
理解すべきなのは、上記テスト用のビット(PS11、PS12、PS13及びPS14)は、仮定された20ビット部分和165に基づくことである。入力の数Mが大きく又は小さく、或いは入力したビット長Nが大きく又は小さいと、テスト部分和165の他のビットに適する可能性がある。例えば、テストの最下位ビットの指数は、ビット数N+仕上げ(log2M)-1に等しくなれる。次の3ビットは、このビットから要素を検索し始める。説明される実例では、これは、8+4-1=11、及び次の3つの指数12、13及び14に繋がる。部分和PS165が反復して構築されたものであるため、PSは、重み付けベクトルの各重み付けビットを処理する時に反復して左にシフトする値を記憶する。これは、テストされるビットは、入力のビット長、重み付けベクトルのビット長及び入力ノードにおける入力の数に基づくべきである。部分和もこれらの要素に基づいて大きさを判定すると、部分和の長さに基づいてテストビットを近似できる。幾つかの実施例において、他のビットも使用できるが、テストビットは、部分和の上半部分に位置してよい。
【0038】
また、
図13を参照すると、出力PS
Xは、反転したPS
19信号と共にNANDゲートに提供される。両方とも1であると、NANDゲートの出力が0になり、そうでないと、1である。この出力はSRラッチのS側に供給され、SRラッチのR側は逆方向のRST信号を受信する。SRラッチの出力Q及びQ’は、RST信号及びNZ信号と共にそれぞれのNORゲートに提供される。NORゲートの出力は、それぞれRRE<1>又はRRE<0>信号を提供する。即ち、NORゲート信号の逆方向の出力は、RRE<1>及びRRE<0>の値である。RST信号が0であって且つNZ信号が1である場合、SRラッチからの逆の信号Q及びQ’に基づいたものであるため、一度に1つの出力しか「1」にならない。以下でRRE<0>=0を説明する場合、Vread偏差の仕様条件を使用する。RRE<1>=0である場合、Vread偏差のリスク読み取りを使用する。RRE<0>=0及びRRE<1>=0である場合、これは優先度の高い読取であり、より高いVreadを使用すると考えられる。特に明記されていない限り、RRE<1>を引用すると、RRE<1>=0で、且つRRE<0>=1であることを示し、これにより、低減したバイアス電圧、即ちリスク読み取りをイネーブルすることになる。同様に、RRE<0>を引用すると、RRE<0>=0及びRRE<1>=1であることを示し、仕様バイアス電圧、即ち安全読み取りをイネーブルすることになる。
図13に提供された論理は一実例だけであり、他の実施も可能であることは理解される。
【0039】
以下で提供された真値表は、信号RST、NZ、PS19、PSX、S、R、Q、Q’、RRE<1>及びRRE<0>の間の関係を説明する。英字Xは出力が信号に関係しないことを示し、英字NCは変化しないことを示す。
【表1】
【0040】
表1の1列目では、RST信号が起動され、SRラッチがリセットされる。RRE<0>及びRRE<1>が何れも0に等しいため、より高い電圧はVreadバイアスに用いられる。表1の2列目では、入力が0であるため、NZは0に等しくなる。RRE<0>及びRRE<1>が何れも0に等しいため、より高い電圧は、Vreadバイアスに用いられる。表1の3列目では、部分和PSは負である。RRE<0>を使用するため、Vreadバイアスでは安全読み取りを使用する。表1の4列目では、部分和PSは正であるが、選定された部分和ビットPSXは0である。RRE<0>を使用するため、Vreadバイアスでは安全読み取りを使用することになる。表1の5列目では、部分和PSは正であり、選定された部分和ビットPSXは1である。RRE<1>を使用するため、リスク読取はVreadバイアスに用いられる。
【0041】
図14は、部分和165の選択ビットの1対1の入力ではなく、イネーブル可能 な例示的な論理条件セットを示す。
図12のフロー要素243、244、245及び246からのフローは論理的に実施される。他の論理条件を使用することができ、且つ示された論理条件は、論理的な組み合わせを使用してPS
X信号を判定する一実例としてのみ使用される。
【0042】
図15~
図22は、DYNRブロック170操作のサンプリング演算及び表示を示す。これらの図の頂部には、1組の長さがN=8のM=9入力I及び1組の長さがK=8のM重み付けベクトルWである。1行目内の各図の底部には入力値が再度示され、2行目で処理中のW
i,jの重み付けベクトルの対応するビット重みを乗算する。瞬時和は、3行目の値では提供される。4行目の値は、処理中の重み付けベクトルWのj番目のビットのビット値乗数、つまり、2
K-1-jを表示する。5行目は、i番目の入力にi番目の重み付けベクトルのj番目の重み付けビットを乗算してビット値乗数を乗算した積である。3行目及び5行目の底部には瞬時和及び合計値の合計がそれぞれ示される。瞬時和は、部分和と累積する。部分和レジスタ165は、現在の部分和PS値を表示するように示される。以前の部分和PSpも提供され、以前の値から繰り越され、シフトの直前の部分和PSを示す。PS
19、PS
14、PS
13、PS
12及びPS
11は、それぞれ部分和PSから呼び出されて提供される。
図16~
図22は、各図の底部には現在の瞬時和と以前の瞬時和(シフト後)の演算、及び以前の合計値と現在の合計値の演算も提供される。以下、これらの態様をより詳細に説明する。
【0043】
図15では、演算30の第1の項32を提供する。この演算では、入力Iに重み付けベクトルWの符号ビットを乗算する。何れかの重み付けベクトルが負の場合、結果は負になり、そうでない場合、結果はゼロになる。重み付けベクトルWが符号付き2の補数形態を採用するため、負の重み付けベクトルのMSBは「1」になり、正の重み付けベクトルのMSBは「0」になる。従って、入力Iに負の重み付けベクトルWを乗算した最終値は最も負の値である可能性がある。符号ビットを演算した後の合計値は、重み付けベクトルの値が-128(1000 0000)である場合と同様である。重み付けベクトル内の何れかの他のビット(即ち、「0」ではなく、「1」である)は、最終的に、最終積和が小さい負数になる。
図15に示すように、入力I
0にビットW
0,0を乗算し、入力I
1にビットW
1,0を乗算し、入力I
2にビットW
2,0を乗算し、これに従って類推し、入力I
8に重みW
8,0を乗算するまでである。「1」である唯一の重み付けベクトルビットは、W
5,0、W
7,0及びW
8,0に対応する。各入力とこれらの重みの積は、それぞれ-21、-98及び-108である。その合計を求めて-227の部分和を提供し、部分和(1111 1111 1111 0001 1101)として部分和PSレジスタ165に記憶される。この合計のビット値、即ち-29056も提供される。PS
19、PS
14、PS
13、PS
12及びPS
11は、それぞれ1に等しい。PS
19ビットが負数を示すため、RRE<0>信号は0に保持され、低減した読取エネルギーを使用すべきではないことが判明される。
【0044】
図16~
図22では、演算30の第2の項34は、既に処理を開始し、例えば、重み付けベクトルの値に対して、j≧1である。
図16では、j=1及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。
図16に示すように、入力I
0にビットW
0,1を乗算し、入力I
1にビットW
1,1を乗算し、入力I
2にビットW
2,1を乗算し、これに従って類推し、入力I
8に重みW
8,1を乗算するまでである。「1」である唯一の重み付けベクトルビットは、W
0,1、W
1,1、W
2,1、W
5,1、W
6,1及びW
8,1に対応する。各入力とこれらの重みとの積は、それぞれ164、137、43、21、110、及び108である。その合計を求めて、583の中間和を提供する。以前の部分和PSp-227を-454に左にシフトし、中間和583に追加して新しい部分和PS129を提供し、部分和(0000 0000 0000 1000 0001)として部分和PSレジスタ165に記憶される。更に、この和のビット値、即ち8256(例えば、ビット-ビット値も乗算する場合)も提供される。PS
19ビットは、現在0に等しく、PSが正であるのを示す。しかしながら、PS
14、PS
13、PS
12及びPS
11ビットも、現在、0に等しい。PS
19ビットは正の数を示すが、RRE<0>信号はまた0のままであり、PS
14、PS
13、PS
12及びPS
11ビットはPSXを1にトリガーしないためである。従って、低減した読取エネルギーは、次回の読取に適用されない。
【0045】
図17では、j=2及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。
図17に示すように、入力I
0にビットW
0,2を乗算し、入力I
1にビットW
1,2を乗算し、入力I
2にビットW
2,2を乗算し、これに従って類推し、入力I
8に重みW
8,2を乗算するまでである。「1」である唯一の重み付けベクトルビットは、W
0,2、W
2,2、W
3,2、W
5,2、W
7,2、及びW
8,2に対応する。各入力とこれらの重み付けとの積は、それぞれ164、43、35、21、98及び108である。その合計を求めて、469の中間和を提供する。以前の部分和PSp129を258に左にシフトし、中間和469に追加して新しい部分和PS727を提供し、部分和(0000 0000 0010 1101 0111)として部分和PSレジスタ165に記憶される。この和のビット値、即ち8256+15008=23264(例えば、ビット-ビット値も乗算して以前の部分和に追加する場合)も提供される。PS
19ビットが0であるのは、PSが正であるのを示す。しかし、PS
14、PS
13、PS
12及びPS
11ビットは0のままである。PS
19ビットが正の数を示すが、RRE<0>信号は0のままであり、PS
14、PS
13、PS
12及びPS
11ビットの何れもPS
Xを1にトリガーしないからである。従って、低減した読取エネルギーは、次回の読取に適用されない。
【0046】
図18では、j=3及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。
図18に示すように、入力I
0にビットW
0,3を乗算し、入力I
1にビットW
1,3を乗算し、入力I
2にビットW
2,3を乗算し、これに従って類推し、入力I
8に重みW
8,3を乗算するまである。「1」である唯一の重み付けベクトルビットはW
1,3、W
3,3、W
4,3、W
6,3、W
7,3、及びW
8,3に対応する。各入力とこれらの重み付けとの積は、それぞれ137、35、111、110、98、及び108である。その合計を求めて599の中間和を提供する。以前の部分和PSp727を1454に左にシフトし、中間和599に追加して新しい部分和PS2053を提供し、部分和(0000 0000 1000 000 0101)として部分和PSレジスタ165に記憶される。この和のビット値、即ち23264+9584=32848(例えば、ビット-ビット値も乗算して以前の部分和に追加する場合)も提供する。PS
19ビットが0であるのは、PSが正であるのを示す。PS
14、PS
13及びPS
12ビットは0のままであるが、PS
11ビットが1にトリガーされた。PS11ビットの転送ゲートがイネーブルされると、PS11ビットがPSXビットに転送され、RRE<1>信号(RRE<1>=0)が提供され、これにより、次の読取の読取エネルギーを低減する。この説明を容易にするために、転送ゲートTPS11がイネーブルされていないと仮定できるため、PS
Xは0のままである。従って、低減した読取エネルギーは、次の読取に使用されない。
【0047】
図19では、j=4及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。
図19に示すように、入力I
0にビットW
0,4を乗算し、入力I
1にビットW
1,4を乗算し、入力I
2にビットW
2,4を乗算し、これに従って類推し、入力I
8に重みW
8,4を乗算するまでである。「1」である唯一の重み付けベクトルビットはW
1,4、W
2,4、W
4,4、W
5,4、及びW
6,4に対応する。各入力とこれらの重み付けとの積は、それぞれ137、43、111、21及び110である。その合計を求めて、422の中間和を提供する。以前の部分和PSp2053を4106に左にシフトし、中間和422に追加して新しい部分和PS4528を提供し、部分和(0000 0001 0001 1011 0000)として部分和PSレジスタ165に記憶される。この和のビット値、即ち32848+3376=36224(例えば、ビット-ビット値も乗算して以前の部分和に追加する場合)も提供する。PS
19ビットが0であるのは、PSが正であるのを示す。PS
14、PS
13及び(現在)PS
11ビットは0であるが、PS
12ビットが1にトリガーされた。PS
12ビットの転送ゲートにイネーブルされると、PS
12ビットがPS
Xビットに転送され、RRE<1>信号が提供され、これにより、次の読取の読取エネルギーを低減する。この説明を容易にするために、PS
12ビットの転送ゲートがイネーブルされていないと仮定できるため、PS
Xは0のままである。従って、低減した読取エネルギーは、次の読取に使用されない。
【0048】
図20では、j=5及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。
図20に示すように、入力I
0にビットW
0,5を乗算し、入力I
1にビットW
1,5を乗算し、入力I
2にビットW
2,5を乗算し、これに従って類推し、入力I
8に重みW
8,5を乗算するまでである。「1」である唯一の重み付けベクトルビットはW
0,5、W
3,5、W
4,5、及びW
6,5に対応する。各入力とこれらの重み付けとの積は、それぞれ164、35、111及び21である。その合計を求めて331の中間和を提供する。以前の部分和PSp4528を9056に左にシフトし、中間和331に追加して新しい部分和PS9387を提供し、部分和(0000 0010 0100 1010 1011)として部分和PSレジスタ165に記憶される。この和のビット値、即ち36224+1324=37548(例えば、ビット-ビット値も乗算して以前の部分和に追加する場合)も提供する。PS
19ビットが0であるのは、PSが正であるのを示す。PS
14及び(現在)PS
12及びPS
11ビットは0であるが、PS
13ビットが1にトリガーされた。PS
13ビットの転送ゲートがイネーブルされると、PS
13ビットがPS
Xビットに転送され、且つRRE<1>信号が提供され、これにより、次の読取の読取エネルギーを低減する。この説明を容易にするために、PS
13ビットの転送ゲートがイネーブルされていないと仮定でき、従って、PS
Xは0のままである。従って、低減した読取エネルギーは、次の読取に使用されない。
【0049】
図21では、j=6及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。
図21に示すように、入力I
0にビットW
0,6を乗算し、入力I
1にビットW
1,6を乗算し、入力I
2にビットW
2,6を乗算し、これに従って類推し、入力I
8に重みW
8,6を乗算するまでである。「1」である唯一の重み付けベクトルビットはW
1,6、W
2,6、W
3,6、W
4,6、W
7,6及びW
8,6に対応する。各入力とこれらの重み付けとの積は、それぞれ137、43、35、111、98及び108である。その合計を求めて532の中間和を提供する。以前の部分和PSp9387を18774に左にシフトし、中間和532に追加して新しい部分和PS19306を提供し、部分和(0000 0100 100 1011 1010)として部分和PSレジスタ165に記憶される。この和のビット値、即ち37548+532=38612(例えば、ビット-ビット値も乗算して以前の部分和に追加する場合)も提供する。PS
19ビットが0であるのは、PSが正であるのを示す。PS
14は現在1にトリガーされた。PS
14ビットの転送ゲートがイネーブルされたが、PS
14ビットがPS
Xビットに転送され、且つRRE<1>信号が提供され、これにより、次の読取の読取エネルギーを低減する。この説明を容易にするために、PS
14ビットの転送ゲートがイネーブルされたと仮定できるため、PS
Xは現在1に変わる。従って、低減した読取エネルギーRRE<1>は、次の読取に使用される。
【0050】
図22では、j=7及び重み付けベクトルWの対応するビットにそれぞれの入力を乗算する。しかしながら、RRE<1>信号がイネーブルされたため、低減した読取エネルギーによってW
i,7の重み付けベクトルWビット値を読み取り、これにより、総エネルギー消費が低減される。
図22は、W
i,7値の全ての重み付けベクトルが0として読み取られる場合である。幾つかの実施例において、これは、意図的に読取条件をスキップするようにイネーブルされるかもしれない。このような実施例では、メモリ位置は実際に読み取られなく、且つ0と仮定される。
図22では、MACフローが完了するまで実行されると、演算のPSと実のMAC値との間の差は253であるため、0.65%の誤差に繋がる。
図22は最大値(全てのW
i,7=1)を見る場合の値も提供され、中間値827、及びそれと実のMAC値に存在する差574に繋がり、1.48%の誤差に繋がる。これは、この組の特定の演算の最も悪い場合と見なされ、実のMAC値と存在する可能性のある最大偏差を提供するためである。
【0051】
以上の演算から分かるように、初期演算と比べて、PSに対する後期演算の貢献率がはるかに小さい。初期演算が左にシフトするため、反復ごとにより大きな意味を持つ。そのため、読取エネルギーの低減により読取エラー値のリスクがより高くなる可能性があるが、節約の点からトレードオフをする価値があるかもしれないことが分かる。実際に、導入された読取リスクは
図22に述べた最悪の状況よりはるかに低く、以下、より詳細に述べる。
【0052】
上記実例では、PS14ビットがRRE<1>信号をトリガーすることを見ることで、この時、演算された部分和PSは総MAC値の99.35%を占める。PS13ビットがRRE<1>信号をトリガーすると、ここで演算された部分和は総MAC値の96.61%を示すことになる。PS12ビットがRRE<1>信号をトリガーすると、ここで演算された部分和は総MAC値の93.2%を示す。PS11ビットがRRE<1>信号をトリガーすると、ここで演算された部分和は総MAC値の84.52%を示す。
【0053】
図23は、RRE<1>=0の場合に取得する可能性がある低減した読取エネルギーを示すグラフを提供する。幾つかの実施例において、Vread=0.2Vは、公称読取電圧と見なされることができ、即ちRRE<0>=0の場合に使用される。Vread電圧を0.15V、0.1V又はより低く下げる場合、エネルギーを節約することができる。メモリ信号を読み取るためのプリチャージ、形成及び回復フローのエネルギーは、低減されることができる。例えば、プリチャージ電圧を0.2Vから0.15Vに下げることで、エネルギー使用量を約15262フライジュール(fJ)から約6783fJに下げることができる。別の例では、プリチャージ電圧を0.2Vから0.1Vに下げることで、エネルギー使用量を約15262fJから約4016fJに下げる。形成及び回復フローでは、省エネも見られる。エネルギー使用量の和を統計した後、255.5fJの各ビットの総エネルギーが0.15Vである場合に174.1fJに減少することができ、0.1Vである場合に144.2fJに減少することができる。これは、エネルギー節約がそれぞれ31.9%及び43.6%であることを意味する。理解すべきなのは、これらの値は実例に過ぎず、エネルギー消費はメモリのタイプ及び処理条件(例えば、動作温度等)によって変化することできる。幾つかの実施例において、プリチャージ、形成及び回復電圧を25%変えると、約25%~約35%の省エネに繋がるが、プリチャージ、現像及び回復電圧を50%変えると、約38%~48%の省エネに繋がる。
図23のグラフによると、一部のエネルギー消費がVread電圧値によって変化しないため、Vreadの値に関係なく、ベースラインエネルギー消費が発生することを示す。
【0054】
図24は、幾つかの実施例による読取電圧とセンシング良率との間の関係を示す。Vreadが0.2Vである場合、センシング良率は、基本的に誤差がない。Vreadが0.15Vである場合、センシング良率は、99.6%±0.3%まで下がる。Vreadが0.1Vである場合、センシング良率は、約98.3%±0.4%まで下がる。本質的に、例えば、これは、Vreadが99.6%である場合、1000ビットの読取値のうちの約4つのビットは正確ではないが、Vreadが0.1Vである場合、1000ビットの読取値のうちの約17つのビットは正確ではないことを意味する。なお、
図24に示すように、Vreadの低下に伴い、読取エネルギーも低減し、しかしながら、エネルギー低減は、Vreadの低下に比例しない。同様に、Vreadの増加に伴い、センシング良率も増加するが、センシング良率はVreadに比例しない。従って、設計者のフォールトトレランス及び省エネ目標に応じて、Vreadを選択して省エネとセンシング良率(信頼性)とのバランスをとることができる。
【0055】
図25は、簡素化された模式図であり、1本のワード線WL、32本のビット線BL及び8本の共通ソース線のアレイサイズに関連する1つのIOの読取パスを示す。この模式図は、実例に過ぎず、他の実施形態を使用することができると理解されるべきである。ソース線MUX140は、グローバルソース線GSLに接続されたグローバルソース線プルダウンGSL_PDトランジスターを含む。グローバルソース線GSLは、1組の第1のソース線選択SLSEL1線によって制御される1組のソース線転送ゲートに入る。MUX140の出力は、メモリ110の共通ソース線CSLを制御することに用いられる。この実例では、メモリ110は、1トランジスター1磁気トンネル接合面(1T1MTJ)MRAM装置として示されるが、上記のように、他のメモリ装置を使用してもよい。ワード線WL信号は、ワード線ドライバWLDR120からメモリ110までの入力である。ビット線MUX140は、第1のビット線選択BLSEL1からの信号及び第2のビット線選択BLSEL2からの信号の1組の転送ゲート入力を提供し、メモリ110のBLがまずBLSEL1信号を使用してローカルビット線LBLに流れ、その後、BLSEL2信号を使用してグローバルビット線GBLに流れ、どのビット線BLをIO150に出力するかを選択するようにイネーブルする。DYNRブロック170は、選択されたVreadバイアス電圧(
図26参照)に接続するように、RRE<0:1>信号出力を提供する。READゲート制御信号は、グローバルビット線GBLがビット線SA_BLのセンスアンプに流れるようにイネーブルする。電圧式センスアンプ(voltage type sensing amplifier;VSA)が示され、基準電圧を利用してBL値とグローバルビット線GBLを比較し、且つグローバルビット線GBLを増幅して出力を提供する。PRECHARGEゲート制御信号は、Vreadバイアス電圧VBL_RDによってIO150の電圧センスアンプにプリチャージするようにイネーブルする。
図26は、閉鎖領域F26の展開図を提供する。
【0056】
図26は、
図25の破線枠F26の展開図を示す。
図26では、幾つかの実施例によれば、DYNRブロック170の出力は、ビット線BLのバイアスを提供するように、MUX140に結合される。PRECHARGE信号は、Vreadバイアス電圧をイネーブルするためのゲート制御信号である。しかしながら、DYNRブロック170は、RRE<1>及びRRE<0>信号を提供して異なるVreadバイアス電圧を提供し、これは、RRE<1>信号がイネーブルされる(即ち、1である)か、無効にされる(即ち、0である)ことによって決められる。従って、
図26の論理は、PRECHARGE信号とRRE<1>及びRRE<0>信号を接続する方法を提供し、どのVreadバイアス電圧を使用するかを制御するようにする。注意すべきなのは、代替実施例を使用してもよいことである。例えば、代替論理を使用してよい。幾つかの実施例において、RRE信号は値1又は0の単線であり、これは、低減した読取エネルギーを使用すべきであるかによって決められる。
図26では、PRECHARGE信号が0である場合、何れのゲートもオンにならない。PRECHARGE信号が1である場合、RRE<0>=0であると、安全読み取りを使用し、ビット線バイアスBLバイアスはVread安全バイアス電圧でバイアスする。RRE<1>=0である場合、リスク読み取りを使用し、BLバイアスはVread安全バイアス電圧でバイアスする。ある理由(例えば、MACをリセットした後)により、RRE<0>及びRRE<1>=0であると、より高い電圧を使用し、即ちVread安全である。
【0057】
図27は、幾つかの実施例によるタイミングチャート及びセンスアンプ図である。幾つかの実施例において、RRE<1>信号は、制御ブロック130が読取操作を変えるタイミングをイネーブルして、読取の実行にかかる時間を短縮させることで、エネルギー使用量を減少させることができる。幾つかの実施例において、プリチャージ電圧を提供する時間長さを短縮して、プリチャージ時間中に提供される総電力を低減することができる。他の実施例において、ビット線電圧の放電に使用される時間長さが減少することができるので、読取時間中に放電される総電力の減少に繋がる。読取操作の遅延時間を短縮するリスクは、時間の短縮のため、幾つかの値は正確に読み取れないことにある。VSAセンシングの前に、データの論理「0」及び論理「1」に関連する電圧(例えば、ビット線BLで)はプリチャージ及び放電され、基準電圧と比較するようにする。例えば、MRAMメモリ装置110の場合、逆並列高抵抗状態は「0」、並列低抵抗状態は論理「1」を示すことができる。他のメモリタイプに対しても、同様に設定されてよい。反並列及び並列状態と基準電圧を比較して、メモリ装置110に記憶されたデータを取得する。読取遅延の短縮により、エネルギー消費を減少することができる。
図27では、示されるタイミングチャートは、Vreadの準備及びビット線プリチャージのための時間帯1 P1、メモリ装置110のメモリ構造によるビット線電圧の放電の時間帯2 P2、及びセンスアンプをイネーブルしてセンスアンプのQ/QBを出力するための時間帯3 P3という3つの時間帯を含む。幾つかの実施例において、ビット線をプリチャージするための時間を短縮することで、周期P1を短縮することができる。リスクは、ビット線が十分に充電されていない可能性があり、値と基準電圧を比較して、信頼できる読取値を受信することができないことにある。幾つかの実施例において、ビット線を放電するための時間を短縮することで、周期P2を短縮することができる。リスクは、ビット線が十分に放電されていない可能性があり、この値と基準電圧を比較して、信頼できる読取値を受信することができないことにある。
【0058】
図28は論理回路図の図を示し、RRE<1>=0の場合、プリチャージを提供しない。幾つかの実施例において、RRE<1>を満たす場合、残りの重み付けベクトルWビットは0として読み取られることができる。これは、プリチャージを強制的にバイパスすることで実現されることができる。プリチャージをバイパスする場合、全て(又はほとんど)の残りの重み付けベクトルビットは0として読み取られることになる。
図22では、一実例を提供し、追加の重み付けビットが使用可能であるが、残りのビットは0として処理される。注意すべきなのは、ある場合、プリチャージ電圧が付加されなくても、1が読み取られることがあるが、プリチャージ電圧はエネルギーを提供しないことである。プリチャージがイネーブルされて且つRRE<1>=1である場合、プリチャージ読取値は正常になる。プリチャージを無効に設定することは、Vread危険電圧を
図26の接地に設定することで実現されることもできる。理解すべきなのは、他の論理によってプリチャージのバイパスを実現することもできることである。ここで提供される論理は、他の論理を除外するとは見なされない。
【0059】
実施例は、利点を達成する。動的読取電圧条件は、メモリ演算MAC操作の部分和を監視することで設定されることができる。部分和の特定の条件が満たされる場合、残りのMAC操作のメモリ読取エネルギーを減少することができる。電圧センスアンプに低い(リスクが高い)プリチャージバイアス電圧の提供、センシング操作を実行する遅延時間帯の短縮、或いは残りの重み付けベクトル(残りが0であると仮定する)の読取のスキップにより、エネルギー低減を実現することができる。これらの操作の組み合わせを使用してもよい。例えば、短縮した遅延は、任意の他の策略と組み合わせてもよい。スキップは、低いプリチャージバイアス電圧とも組み合わせてもよく、危険電圧バイアスのビット上でスキップを実施することではなく、部分和PSの異なるビット上での条件を監視した後でスキップを実施することで実現される。例えば、PS11ビットは、Vreadの危険読取条件をトリガーする可能性がある。危険な電圧バイアス以外、PS12ビットは、低い遅延をトリガーする可能性もある。また、PS13又はPS14ビットは、スキップする残りのビットをトリガーすることができる。
【0060】
一実施例は一方法であり、メモリ演算(compute-in-memory;CIM)操作の部分和は正であるかを判定して、第1の結果を取得する工程を備える。方法は、0から1に変わる部分和の選択されたビットを判定して、第2の結果を取得する工程を更に備える。方法は、第1の結果及び第2の結果が両方とも真であることに応じて、CIMのメモリユニットの読取操作の読取配置を調整する工程を更に備える。一実施例において、読取配置を調整してメモリユニットの読み取りを待つ時間遅延を減少する。一実施例において、読取配置を調整してメモリユニットを読み取るためのバイアス電圧を減少する。一実施例において、読取配置を調整してメモリユニットを読み取るためのバイアス電圧を除去する。一実施例において、選択されたビットは、部分和の上半部分にある。
【0061】
幾つかの実施例において、読取配置を調整して、メモリユニットの読み取りを待つ時間遅延を減少する。
【0062】
幾つかの実施例において、読取配置を調整して、メモリユニットを読み取るためのバイアス電圧を減少する。
【0063】
幾つかの実施例において、読取配置を調整して、メモリユニットを読み取るためのバイアス電圧を除去する。
【0064】
幾つかの実施例において、選択されたビットは部分和の上半部分にある。
【0065】
別の実施例は一方法であり、第1の読取エネルギーによってメモリの1組の重み付けベクトルから第1組のビットを読み取る工程を備える。方法は、1組の入力を第1組のビットに乗算して、第1の積を取得する工程を更に備える。方法は、第1の積を累積積和に追加する工程を更に備える。方法は、累積積和が正で且つ累積積和のビット条件の1つが0から1に変わる場合、低減した読取エネルギー信号を有効にする工程を更に備える。方法は、第1の読取エネルギーより小さい第2の読取エネルギーによってメモリから重み付けベクトル組の第2組のビットを読み取る工程を更に備える。一実施例において、方法は、第1の積を累積積和に追加する前に、累積積和に対してビットシフトを行う工程を含んでもよい。一実施例において、第2組のビットを読み取って第1組のビットを読み取るためのタイミング周期より短いタイミング周期を利用する。一実施例において、第2組のビットを読み取るためには、第1組のビットを読み取るための第1のプリチャージ電圧より低い、アンプを読み取るための第2のプリチャージ電圧を利用する。一実施例において、読取アンプに正のプリチャージ電圧を提供しない場合に第2組のビットを読み取る。一実施例において、ビット条件は、第1の指数、第2の指数、第3の指数又は第4の指数の累積積和を有する選択されたビットに対応し、第1の指数は、組の入力の第1の入力のビット長に組の入力内の複数の入力の2を底とする対数(次の整数に丸める)を足したものであり、第2の指数は、第1の指数に1を足したものであり、第3の指数は、第1の指数に2を足したものであり、第4の指数は、第1の指数に3を足したものである。一実施例において、ビット条件は累積積和の2つ又は複数の選択されたビットの論理的な組み合わせに対応する。一実施例において、重み付けベクトルから第2組のビットを読み取ると、第2組のビット内の1つ又は複数の値を誤って判定する。
【0066】
幾つかの実施例において、方法は、第1の積を累積積和に追加する前に、累積積和に対してビットシフトを行う工程を更に備える。
【0067】
幾つかの実施例において、第2組のビットを読み取るためには、第1組のビットを読み取るための時間帯より短い時間帯を使用する。
【0068】
幾つかの実施例において、第2組のビットを読み取って読取アンプの第2のプリチャージ電圧を利用し、プリチャージ電圧は第1組のビットを読み取るための第1のプリチャージ電圧より低い。
【0069】
幾つかの実施例において、第2組のビットの読み取りを実行する場合に、アンプを読み取るための正のプリチャージ電圧を提供しない。
【0070】
幾つかの実施例において、ビット条件は、第1の指数、第2の指数、第3の指数又は第4の指数の累積積和を有する選択されたビットに対応し、第1の指数は、この組の入力の第1の入力のビット長にこの組の入力内の複数の入力の2を底とする対数を足したものであり、対数は次の整数に丸め、第2の指数は、第1の指数に1を足したものであり、第3の指数は、第1の指数に2を足したものであり、第4の指数は、第1の指数に3を足したものである。
【0071】
幾つかの実施例において、ビット条件は、累積積和の2つ又は複数の選択されたビットの論理的な組み合わせに対応する。
【0072】
幾つかの実施例において、重み付けベクトルから第2組のビットを読み取ると、第2組のビット内の1つ又は複数の値を誤って判定する。
【0073】
別の実施例は、1組の入力及び1組の対応する重み付けベクトルを記憶するコンピュータ可読メモリを備える装置である。装置は、加算器と、乗算器と、組の入力及び対応する重み付けベクトル組の反復積和演算の累積結果を記憶するための部分和(partial-sum;PS)レジスタと、を含む乗算-累積装置を更に備える。この装置は、センスアンプにバイアス電圧を提供して重み付けベクトルを読み取るためのマルチプレクサを更に備える。装置は、PSを評価し、低減した読取エネルギー(reduced read energy;RRE)信号を有効にするかを判定して、RRE信号、即ちマルチプレクサに提供されるRRE信号を有効にするための動的読取論理を更に備える。一実施例において、装置は、RRE信号が更に提供される制御ブロックを備えてもよく、制御ブロックは、メモリアクセスタイミングを提供し、RRE信号が有効にされる場合に、メモリを読み取る読取遅延を減少することに用いられる。一実施例において、動的読取論理は、PSの符号ビット及びPSの選択されたビットを検査することで、PSを評価することに用いられる。一実施例において、選択されたビットは、PSのビット指数、ビット指数に1を足したもの、ビット指数に2を足したもの、又はビット指数に3を足したものに対応し、ビット指数は、組の入力の1番目の入力のビット長に組の入力の複数の入力の丸められた2を底とする対数を足して1を引くものである。一実施例において、マルチプレクサは、RRE信号に基づいてバイアス電圧を選択することに用いられるが、RRE信号が有効にされる場合、RRE信号が有効にされていない場合よりも小さいバイアス電圧を提供することに用いられる。一実施例において、RRE信号が有効にされる場合、マルチプレクサは、センスアンプが0を出力させるためのバイアス電圧を提供することに用いられる。一実施例において、動的読取論理は、PSの符号ビット及びPSの2つ又は複数の選択されたビットの論理的な組み合わせを検査することで、PSを評価することに用いられる。
【0074】
幾つかの実施例において、メモリ装置は、制御ブロックを更に備える。読取エネルギー低減信号は、制御ブロックに更に提供され、制御ブロックは、メモリアクセスタイミングを提供し、読取エネルギー低減信号が有効にされる場合に、コンピュータ可読メモリを読み取る読取遅延を減少することに用いられる。
【0075】
幾つかの実施例において、動的読取論理は、部分和の符号ビット及び部分和の選択されたビットを検査することで、部分和を評価することに用いられる。
【0076】
幾つかの実施例において、選択されたビットは、部分和のビット指数、ビット指数に1を足したもの、ビット指数に2を足したもの、又はビット指数に3を足したものに対応し、ビット指数はこの組の入力の第1の入力のビット長にこの組の入力の複数の入力の2を底とする仕上げられた対数を足して1を引くものである。
【0077】
幾つかの実施例において、マルチプレクサは、読取エネルギー低減信号に基づいてバイアス電圧を選択することに用いられるが、読取エネルギー低減信号が有効にされる場合、読取エネルギー低減信号が有効にされていない場合よりも小さいバイアス電圧を提供することに用いられる。
【0078】
幾つかの実施例において、読取エネルギー低減信号が有効にされる場合、マルチプレクサは、センスアンプが0を出力させるバイアス電圧を提供することに用いられる。
【0079】
幾つかの実施例において、動的読取論理は、部分和の符号ビット及び部分和の2つ又は複数の選択されたビットの論理的な組み合わせを検査することで、部分和を評価することに用いられる。
【0080】
以上、当業者に本開示の態様をよりよく理解できるように、幾つかの実施例の特徴を概説した。当業者であれば、本明細書で説明された実施例と同じ目的を達成し、及び/又は同じ利点を実現するために、本開示が他のプロセス及び構造を設計又は修正するための基礎として容易に使用されることは、理解すべきである。また、当業者であれば、このような等価構造が本開示の精神や範囲から逸脱しなく、且つ本開示の精神や範囲から逸脱せずに、本明細書に様々な変化、代替及び変更を加えてもよいことは、認識すべきである。
【符号の説明】
【0081】
10 画像
11 画素
12 ノード
14 重み付け行列
16 積和演算/演算
20 ビット数
30 演算
34 第2の項
100 ブロック図
110 メモリアレイ
120 ワード線ドライバ
130 制御ブロック
140 マルチプレクサ
150 入力/出力(IO)ブロック
160 MACブロック
161 重みレジスタ
162 入力レジスタ
163 乗算ブロック
164 加算器ブロック
165 部分和レジスタ
170 DYNRブロック
200 フローチャート
210 フロー要素
220 フロー要素
230 フロー要素
240 フロー
241 フロー要素
242 フロー要素
243 フロー要素
244 フロー要素
245 フロー要素
246 フロー要素
247 フロー要素
248 フロー要素
250 フロー要素
260 フロー要素
270 フロー要素
280 フロー要素
290 フロー要素
AP 累積積
BL ビット線
BL/BLB ビット線/ビット線ビット
F26 閉鎖領域
GBL グローバルビット線
GSL グローバルソース線
I 入力
I1 入力
I2 入力
I3 入力
I4 入力
I5 入力
I6 入力
I7 入力
I8 入力
I9 入力
IM-1 入力
IN-1 入力
N 長さ
NZ 入力
O 出力
P 確率
P1 確率
P2 確率
P3 確率
P5 確率
PRE プリ
PS 部分和
PS11 部分和
PS12 部分和
PS13 部分和
PS14 部分和
PS19 部分和
PSP 部分和
PSX 出力信号
Q 出力
Q’ 出力
R 信号
RRE 低減した読取エネルギー
RRE<0> 信号
RRE<1> 信号
RST リセット入力
S 信号
SA_BL ビット線
SAEN センスアンプイネーブル
TPS 11 転送ゲート
VBL_RD バイアス電圧
VDD 電圧
VREF 基準電圧
VSA 電圧型センスアンプ
W 重み付けベクトル
W1 重み付けベクトル
W2 重み付けベクトル
W3 重み付けベクトル
W4 重み付けベクトル
W5 重み付けベクトル
W6 重み付けベクトル
W7 重み付けベクトル
W8 重み付けベクトル
W9 重み付けベクトル
WM-1 重み付けベクトル
WN-1 重み付けベクトル
WL ワード線