IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザ、トラスティーズ オブ プリンストン ユニバーシティの特許一覧

特許7587823構成可能なイン・メモリ・コンピューティング・エンジン、プラットフォーム、ビット・セル、及びそのためのレイアウト
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-13
(45)【発行日】2024-11-21
(54)【発明の名称】構成可能なイン・メモリ・コンピューティング・エンジン、プラットフォーム、ビット・セル、及びそのためのレイアウト
(51)【国際特許分類】
   G06G 7/60 20060101AFI20241114BHJP
   G06F 17/16 20060101ALI20241114BHJP
   G11C 11/54 20060101ALI20241114BHJP
   G11C 11/412 20060101ALI20241114BHJP
【FI】
G06G7/60
G06F17/16 B
G11C11/54
G11C11/412
【請求項の数】 29
(21)【出願番号】P 2020570472
(86)(22)【出願日】2019-06-18
(65)【公表番号】
(43)【公表日】2021-10-14
(86)【国際出願番号】 US2019037686
(87)【国際公開番号】W WO2019246064
(87)【国際公開日】2019-12-26
【審査請求日】2022-04-21
(31)【優先権主張番号】62/686,296
(32)【優先日】2018-06-18
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/754,805
(32)【優先日】2018-11-02
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/756,951
(32)【優先日】2018-11-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/702,629
(32)【優先日】2018-07-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003552
【氏名又は名称】ザ、トラスティーズ オブ プリンストン ユニバーシティ
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ヴァ―マ、ネイヴェーン
(72)【発明者】
【氏名】ヴァラヴィ、フセイン
(72)【発明者】
【氏名】ジア、ホンギャン
【審査官】征矢 崇
(56)【参考文献】
【文献】米国特許出願公開第2005/0125477(US,A1)
【文献】特開2005-122466(JP,A)
【文献】国際公開第2015/001697(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06G7/60
G06N3/063
G06F17/16
G11C11/412;11/54
(57)【特許請求の範囲】
【請求項1】
入力行列Xに入力ベクトルAを乗算して出力行列Yを生成するように構成されたイン・メモリ・コンピューティング・アーキテクチャであって、
ビット・セル行を介して複数の並列のビット単位の入力信号として入力行列Xの少なくとも一部を受信し、それぞれのビット・セル列を介して複数のビット単位の入力信号として前記入力ベクトルAを受信するように構成されるビット・セルのCIMアレイであって、各ビット・セル列内の複数のビット・セルの各々は共通の蓄積信号と関連付けられ、各ビット・セル列はそれぞれの出力信号を供給するように構成されるそれぞれのCIMチャンネルを形成する、CIMアレイと、
前記CIMアレイに、シングル・ビットの内部回路及び信号を用いて前記入力行列X、前記入力ベクトルA、及び前記蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成される制御回路と
備え、
前記ビット・セルのCIMアレイにおける各ビット・セルは、
少なくとも1つのビット・セル演算装置に結合されるビット・セル格納回路と、
前記ビット・セル演算装置に結合されるビット・セル・コンデンサであって、ビット・セル列内の他のビット・セル・コンデンサに対応する1つ以上の追加のコンデンサにさらに結合されるビット・セル・コンデンサと
を備えるビット・セル回路構成を有する、イン・メモリ・コンピューティング・アーキテクチャ。
【請求項2】
前記並列のビット単位の入力信号を形成するために受信データ・ワードのシーケンスを再シェーピングするように構成される再シェーピング・バッファをさらに備える、請求項1に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項3】
前記複数のCIMチャンネル出力信号を処理することによって、前記マルチ・ビットの出力ワードのシーケンスを供給するように構成されるアナログ・デジタル変換器(ADC)回路をさらに備える、請求項1に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項4】
前記アナログ・デジタル変換器(ADC)回路は、CIMチャンネル毎に、前記CIMチャンネル出力信号をデジタル化するように構成されるそれぞれのADCと、前記デジタル化されたCIMチャンネル出力信号に対してそれぞれのバイナリ重み付けをかけることによって、マルチ・ビットの出力ワードのそれぞれの部分を形成するように構成されるそれぞれのシフト・レジスタとを含む、請求項3に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項5】
前記アナログ・デジタル変換器(ADC)回路は、前記CIMチャンネルの複数のサブセット毎に、CIMチャンネルのそれぞれのサブセットの前記CIMチャンネル出力信号の重み付けされたアナログ加算をデジタル化することによって、マルチ・ビットの出力ワードのそれぞれの部分を形成するように構成されるそれぞれのADCを含む、請求項3に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項6】
前記マルチ・ビット・コンピューティング動作が前記並列のビット単位の入力信号のゼロ値化要素を処理することを回避するように、前記並列のビット単位の入力信号のゼロ値化要素をマスクするように構成されるスパーシティ・コントローラをさらに備える、請求項1に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項7】
前記入力信号及び前記蓄積信号は、前記メモリ内でワードラインやビットライン等の他の既存の信号と結合される、請求項1に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項8】
前記入力信号及び前記蓄積信号は、前記メモリ内でワードラインやビットライン等の他の既存の信号から分離される、請求項1に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項9】
各ADC及びそれぞれの蓄積信号は、イン・メモリ・コンピューティング・チャンネルを形成する、請求項3に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項10】
マルチ・ビットの出力ワードのシーケンスをコンピューティング結果として供給するように構成されたニア・メモリ・コンピューティング・パスを含む、請求項1に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項11】
前記CIMアレイの前記マルチ・ビット・コンピューティング動作は、ビット・パラレル/ビット・シリアル(BPBS)コンピューティングを含み、
前記ビット・パラレル・コンピューティングは、
それぞれのイン・メモリ・コンピューティング・チャンネルに異なる行列要素ビットをロードし、
それぞれのバレル・シフタを使用して、前記コンピューティング・チャンネルからのデジタル化出力をバレル・シフトすることによって、対応するビット重み付けを実装し、
それぞれのアキュムレータを使用して、マルチ・ビットの行列要素演算結果を生成するために前記コンピューティング・チャンネルの全てに対してデジタル蓄積を実行すること
を含み、
前記ビット・シリアル・コンピューティングは、
前記ロードされた行列要素ビットに対してベクトル要素の各ビットを個別に適用し、各結果として得られたデジタル化出力を格納し、
それぞれのバレル・シフタを使用して、後続の入力ベクトル・ビットに対応する格納デジタル化出力によるデジタル蓄積の前に、各ベクトル要素ビットと関連付けられた前記格納デジタル化出力をバレル・シフトすること
を含む、請求項9に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項12】
1つ以上の構成可能な有限状態機械(FSM)をさらに備え、各FSMは、それぞれの複数のCIMチャネルADCのビット・サイクリングを制御するように構成される、請求項4に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項13】
前記FSMは、複数のイン・メモリ・コンピューティング・チャンネルのうちのいくつか又は全てによって使用される並列のコンピューティング・ハードウェアを制御するように構成される、請求項12に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項14】
前記FSMは、ローカル・メモリにロードされたソフトウェア命令に従って演算を制御する、請求項12に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項15】
前記再シェーピング・バッファは、第1の精度の外部デジタル・ワードを高次元入力ベクトルに変換するように構成される、請求項2に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項16】
前記再シェーピング・バッファは、前記CIMアレイに対して、前記入力ベクトルの要素のビットを順序立って並列に供給するように構成される、請求項15に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項17】
前記再シェーピング・バッファは、整列入力データ(alignment input data)がイン・メモリ・コンピューティング動作の所望の利用及びスループットを確実にするように構成される、請求項2に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項18】
前記再シェーピング・バッファは、畳み込みニューラル・ネットワーク動作に従って入力データの再利用及びシフトを可能にするように構成される、請求項2に記載のイン・メモリ・アーキテクチャ。
【請求項19】
各ビット・セルコンデンサは、陰極プレートと陽極プレートとを備え、前記陰極プレートは前記ビット・セル演算装置に結合され、前記陽極プレートは少なくとも1つの他のビット・セルのビット・セル・コンデンサに結合されている、請求項に記載のイン・メモリ・アーキテクチャ。
【請求項20】
前記ビット・セルは、2つのオペランドによって演算動作を実行するように構成される、請求項に記載のイン・メモリ・アーキテクチャ。
【請求項21】
前記ビット・セルは、格納データと入力データとの間のXNOR演算又はAND演算の実装を可能とする、請求項に記載のイン・メモリ・アーキテクチャ。
【請求項22】
前記ビット・セルは、それぞれのビット・セルコンデンサが少なくとも2つの個別セットになるように共に結合されることによって、対応する個別の演算を可能にする少なくとも2つのビット・セルのためのインターリーブ・レイアウトを含む、請求項1に記載のイン・メモリ・アーキテクチャ。
【請求項23】
結合されたビット・セル・コンデンサの前記セットは、1つ以上のビット・セル・トランジスタの上に配置される、請求項22に記載のイン・メモリ・アーキテクチャ。
【請求項24】
前記ビット・セルは、それぞれのローカル・ビット・セル・コンデンサの1つのプレートを駆動するチャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルを含み、他のビット・セル・コンデンサとの結合は、前記それぞれのローカル・ビット・セル・コンデンサの他のプレートにおいて実現される、請求項22に記載のイン・メモリ・アーキテクチャ。
【請求項25】
チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルは、格納データと入力データとの間でXNOR演算又はAND演算を実装するように構成される、請求項24に記載のイン・メモリ・アーキテクチャ。
【請求項26】
ビット・セル・コンデンサが1つ以上の周辺スイッチを介して選択的に結合されるように構成される複数の異なるセットになるように結合されるように、チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルのインターリーブ・レイアウトが提供される、請求項22に記載のイン・メモリ・アーキテクチャ。
【請求項27】
ビット・セル・コンデンサが複数の異なるセットとなるように結合されることによって、X方向インターリーブに対してXセットが存在し、Xは1より大きい整数であるように、チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルのインターリーブ・レイアウトが提供される、請求項22に記載のイン・メモリ・アーキテクチャ。
【請求項28】
結合されたコンデンサの異なるセットが前記ビット・セル・トランジスタの上に配置されるように、チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルのレイアウトが提供される、請求項23に記載のイン・メモリ・アーキテクチャ。
【請求項29】
前記ニア・メモリ・コンピューティング・パスは、デジタル・バレル・シフタ、乗算器、アキュムレータ、ルック・アップ・テーブル、及び非線形関数要素のうちの1つ以上を含む、請求項10に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年6月18日に出願された米国仮特許出願第62/686,296号、2018年7月24日に出願された米国仮特許出願第62/702,629号、2018年11月2日に出願された米国仮特許出願第62/754,805号、及び2018年11月7日に出願された米国仮特許出願第62/756,951号の利益を主張し、これらの米国仮特許出願は、その全体が参照により本明細書に組み込まれる。
【0002】
本発明は、イン・メモリ・コンピューティング(in-memory computing)及び行列ベクトル積(matrix-vector multiplication)の分野に関する。
【背景技術】
【0003】
近年、チャージ・ドメイン・イン・メモリ・コンピューティング(Charge-domain in-memory computing)が、イン・メモリ・コンピューティングを実行する強固かつスケーラブルな方法として出現してきた。ここで、メモリ・ビット・セル内の演算動作は、典型的にはコンデンサを介した電圧電荷変換を用いて電荷としてその結果を供給する。したがって、ビット・セル回路は、所与のビット・セルにおけるローカル・コンデンサの適切な切換を含み、そのローカル・コンデンサは、他のビット・セル・コンデンサとも適切に結合されて、結合されたビット・セルの全体における集約された演算結果を生成する。イン・メモリ・コンピューティングは、行列ベクトル積を実装するのによく適しており、行列要素はメモリ・アレイに格納され、ベクトル要素はメモリ・アレイ全体において並列してブロードキャストされる。
【先行技術文献】
【特許文献】
【0004】
【文献】仮特許出願第62/555,959号、「Analog Switched-Capacitor Neural Network」、2017年9月8日出願
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来技術における様々な欠点が、プログラミング可能な又は事前にプログラミングされたイン・メモリ・コンピューティング動作を提供するシステム、方法、アーキテクチャ、機構、又は装置によって対処される。
【課題を解決するための手段】
【0006】
一実施例は、超並列のビット単位の入力信号を形成するために受信データ・ワードのシーケンスを再シェーピングするように構成される再シェーピング・バッファ(reshaping buffer)と、第1のコンピュート・イン・メモリ(CIM)アレイ次元を介して上記の超並列のビット単位の入力信号を受信し、第2のCIMアレイ次元を介して1つ以上の蓄積信号を受信するように構成されるビット・セルのCIMアレイであって、共通の蓄積信号と関連付けられた複数のビット・セルの各々は、それぞれの出力信号を供給するように構成されるそれぞれのCIMチャンネルを形成する、CIMアレイと、複数のCIMチャンネル出力信号を処理することによってマルチ・ビットの出力ワードのシーケンスを供給するように構成されるアナログ・デジタル変換器(ADC)回路と、CIMアレイに、シングル・ビットの内部回路及び信号を用いて上記入力及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成される制御回路と、マルチ・ビットの出力ワードのシーケンスをコンピューティング結果として供給するように構成されるニア・メモリ・コンピューティング・パスと、を備える、イン・メモリ・コンピューティング・アーキテクチャを提供する。
【0007】
本発明のさらなる目的、利点及び新規の特徴は、以下の説明において部分的に記載され、部分的には以下の説明の検討時に当業者にとって明らかとなり、又は本発明の実行によって学習され得る。本発明の目的及び利点は、添付の特許請求の範囲において特に示された手段及び組み合わせによって実現及び達成され得る。
【0008】
本明細書に組み込まれ、本明細書の一部を構成する添付図面は、本発明の実施例を図示し、上記の本発明の全体的な説明とともに、さらに下記の実施例の詳細な説明とともに、本発明の原理を説明する役割を果たす。
【図面の簡単な説明】
【0009】
図1】イン・メモリ・コンピューティング・アーキテクチャの典型的な構造を図示する図である。
図2】一実施例による例示のアーキテクチャの高レベル・ブロック図である。
図3図2のアーキテクチャにおける使用に適した例示のコンピュート・イン・メモリ・ユニット(CIMU)の高レベル・ブロック図である。
図4】一実施例による、図2のアーキテクチャにおける使用に適した入力活性化ベクトル再シェーピング・バッファ(IA BUFF:Input-Activation Vector Reshaping Buffer)の高レベル・ブロック図を図示する。
図5】一実施例による、図2のアーキテクチャにおける使用に適したCIMA読出/書込バッファの高レベル・ブロック図である。
図6】一実施例による、図2のアーキテクチャにおける使用に適したニア・メモリ・データパス(NMD:Near-Memory Datapath)モジュールの高レベル・ブロック図である。
図7】一実施例による、図2のアーキテクチャにおける使用に適した直接記憶アクセス(DMA:direct memory access)モジュールの高レベル・ブロック図である。
図8A図2のアーキテクチャにおける使用に適したCIMAチャンネルのデジタル化/重み付けの異なる実施例の高レベル・ブロック図である。
図8B図2のアーキテクチャにおける使用に適したCIMAチャンネルのデジタル化/重み付けの異なる実施例の高レベル・ブロック図である。
図9】一実施例による方法のフロー図である。
図10】乗算ビット・セル(multiplying bit-cell)の回路図である。
図11】XNOR関数を実行するように構成された3つのM-BCの回路図である。
図12】一実施例によるM-BCの回路図である。
図13図13のM-BCの例示のICを図示する図である。
図14A】スイッチ型結合構造を有するビット・セルのブロック図である。
図14B】非スイッチ型結合構造を有するビット・セルのブロック図である。
図15】一実施例による非スイッチ型結合構造を有するビット・セル回路の回路図である。
図16】一実施例によるビット・セルのレイアウトの二方向インターリーブの回路図である。
【発明を実施するための形態】
【0010】
添付図面は、必ずしも一定の縮尺で図示したものではなく、本発明の基本原理を説明する様々な特徴の何らかの簡略化された表現を示すことを理解されたい。例えば、様々な図示構成要素の特定の寸法、方向、配置、及び形状を含む、本明細書において開示されるような一連の動作の特定の設計上の特徴は、特定の意図された適用及び使用環境によって部分的に判断されるであろう。記載の実施例の特定の特徴は、可視化及び明確な理解を容易にするために、他の特徴と比較して拡大又は歪曲されている。特に、明確化及び説明のために、薄い特徴が濃く示されている場合がある。
【0011】
本発明をさらに詳細に説明する前に、本発明は記載の特定の実施例に限定されるものではなく、したがって、当然ながら、変化し得ることを理解されたい。また、本発明の範囲は、添付の特許請求の範囲によってのみ限定されるものであるため、本明細書において使用される用語は、特定の実施例を説明することのみを目的としており、限定を意図するものではないことを理解されたい。
【0012】
値の範囲が与えられている場合、その範囲の上限と下限との間の、その文脈が明確に指示しない限り最小目盛りの10分の1までの各介在値及び定められる範囲における他の定められる値又は介在値は本発明内に包含されることが理解される。これらのより小さな範囲の上限及び下限はその小さな範囲に独立して含まれ得るものであり、定められた範囲の具体的に除外される限度に従って、同様に本発明内に包含されるものである。定められた範囲が、上記の限度の一方又は両方を含む場合、それらの含まれる限度の一方又は両方を除く範囲も同様に本発明に含まれる。
【0013】
定義されない限り、本明細書において使用される全ての技術用語及び科学用語は、本発明が属する当業者によって一般的に理解されるのと同様の意味を有する。本明細書に記載のものと同様又は同等のあらゆる方法及び材料が本発明の実施又は試験においても使用可能であるが、本明細書では限定数の例示の方法及び材料が記載される。なお、本明細書及び添付の特許請求の範囲において使用されるように、文脈が明確に指示しない限り、単数形の「ある(a)」、「1つの(an)」、及び「その(the)」は複数形の参照語を含む。
【0014】
開示の実施例は、最新VLSI実装のための高効率の線形代数コンピューティング・アーキテクチャのプログラミング性を可能とするシステム及び方法を含む。本明細書で開示するコンピューティング・アーキテクチャは「イン・メモリ・コンピューティング」と呼ばれ、このアーキテクチャのプログラミング性によって、特に機械学習及び人工知能のための適用の範囲にわたって広く使用されることが可能となる。開示のアプローチはイン・メモリ・コンピューティング・アレイに関する構成可能性の特徴の範囲を取り入れており、それによって、同様に、現在では機械学習及び人工知能の適用の広い範囲に対するエネルギー及びスループットを扱うために、プログラミング可能なプラットフォームにおいて統合されることが可能となる。
【0015】
線形代数演算、特に行列ベクトル積は、特に機械学習(ML:machine learning)及び人工知能(AI:artificial intelligence)からの新しい作業負荷において非常に顕著となってきた。その行列とベクトルとの次元は非常に大きく成り得ることが多い(通常、>100)。上記の演算で要素が再利用される方法に起因して、要素は埋込型又はオフチップのメモリ(格納されなければならない要素の数に依存する)に通常格納される。最新VLSI技術における実装は、事実上、そのようなメモリからのデータへのアクセスのエネルギー及び遅延がデータに対する実際の演算を実質的に上回るということを示してきた。これは、従来のアクセラレータによって達成可能であったエネルギー/遅延の削減を制限しており、それによってメモリと演算を分離し、イン・メモリ・コンピューティングのパラダイムの動機付けとなってきた。イン・メモリ・コンピューティング・システムの文脈内において、生データはメモリからアクセスされないが、生データの多くのビット上での演算結果はアクセスされ、それによってアクセスのエネルギー及び遅延を償却する。
【0016】
開示のシステム、方法、及びその一部によって、最新VLSI実装等のための、さらには集積回路実装につながる高効率の線形代数コンピューティング・アーキテクチャの構成可能性及びプログラミング性が可能となる。本明細書において開示されるコンピューティング・アーキテクチャは、広くは「イン・メモリ・コンピューティング」と呼ばれる場合があり、このアーキテクチャのプログラミング性によって、機械学習、人工知能、及びその他の適用において使用されるような行列ベクトル演算等を含む適用範囲にわたる幅広い使用が可能になる。様々な実施例において、本開示のシステム、方法、及びその一部は、並列及び直列動作を用いるハイブリッド・アナログ/デジタル・コンピューティング方法を使用してイン・メモリ・コンピューティング・アーキテクチャの構成可能性及びプログラミング性を可能とする。
【0017】
開示のアプローチは演算実行の途中で特定の形状の量子化ノイズは発生させ得るが、これは本明細書で開示の数多くのアーキテクチャに関する特徴によって制御され、場合によっては、標準的な固定小数点精度のコンピューティングにあるような量子化ノイズを示す動作が可能である。
【0018】
開示のシステム及びその一部は集積回路として実装され、その様々な特徴は、Verilog/トランジスタ・レベルのシミュレーションを用いてシミュレーションされるのと同様に、フィールド・プログラマブル・ゲート・アレイ(FPGA)として実装された。
【0019】
開示のアプローチは、本明細書において完全に記載されているかのようにその全体が参照により組み込まれる、2017年9月8日に出願された仮特許出願第62/555,959号、「Analog Switched-Capacitor Neural Network」において開示されるアーキテクチャを含むイン・メモリ・コンピューティング・アーキテクチャの範囲に対して適用され得る。
【0020】
開示のアプローチは、線形代数演算に対する高エネルギー効率のアプローチであるとされているイン・メモリ・コンピューティングの構成可能性及びプログラミング性を可能とする。そのような構成及びプログラミング性は、開示のアーキテクチャの幅広い適用範囲における使用を可能とする。
【0021】
さらなる開示の実施例は、マルチ・ビット・イン・メモリ・コンピューティングに対してビット・パラレル/ビット・シリアル・アプローチを提供する。特に、メモリ・ビット・セルが1-bオペランドに対して演算を実行するイン・メモリ・コンピューティング・アーキテクチャが本明細書で開示され、一方のオペランドの複数のビットが並列ビット・セルにマッピングされるビット・パラレル/ビット・シリアル(BP/BS:bit-parallel/bit-serial)法を使用してマルチ・ビットのオペランドに対する動作を可能とするようにハードウェアが拡張され、他方のオペランドの複数のビットが連続して入力される。開示のアプローチは、時間及び空間において異なるビット・セル出力演算にわたって可能な、演算出力ビット・セルがデジタル化された後にさらなる演算へ供給されるイン・メモリ・コンピューティングと、デジタル化された出力に対してビット・パラレル/ビット・シリアル(BP/BS)法でマルチ・ビット・オペランド演算が実行されるイン・メモリ・コンピューティングと、BP/BSアプローチが例えばビット・セルによるビット単位のAND演算を用いることによって2の補数表現を使用するイン・メモリ・コンピューティングと、BP/BSアプローチがビット・セルによるXNOR演算の使用を可能にするために、例えば1/0ビットが数学的に+1/-1の値を有するようにとられる異なる数表現を使用するイン・メモリ・コンピューティングとを考慮する。
【0022】
構成可能なイン・メモリ・コンピューティング・エンジン及びプラットフォーム
様々な実施例は、実行可能な適用への拡大のために必要とされるプログラミング性と仮想化とを可能にするために、イン・メモリ・コンピューティング・アクセラレータに関する構成可能性及びハードウェア・サポートを統合することに関する。一般に、イン・メモリ・コンピューティングは行列ベクトル積を実装し、行列要素はメモリ・アレイに格納され、ベクトル要素はメモリ・アレイ上に並列にブロードキャストされる。実施例のいくつかの態様は、そのようなアーキテクチャのプログラミング性と構成可能性とを可能にすることに関する。
【0023】
イン・メモリ・コンピューティングは、通常、行列要素、ベクトル要素、又はその両方のための1-b表現を含む。これは、マルチ・ビット演算に必要とされるビット間の異なるバイナリ重み付け結合を提供することなく、メモリが、並列で均質な方法でブロードキャストが行われる独立したビット・セルにデータを格納するためである。本発明において、マルチ・ビット行列及びベクトル要素への拡張は、ビット・パラレル/ビット・シリアル(BPBS)法で実現される。
【0024】
行列-ベクトル積に関わることが多い一般的な演算を可能にするために、高構成可能/プログラミング可能なニア・メモリ・コンピューティング・データ・パスが含まれる。この両方は、イン・メモリ・コンピューティングのビット単位の演算からマルチ・ビット演算に拡張するために必要とされる演算を可能とし、汎用性のため、これはマルチ・ビット動作をサポートし、イン・メモリ・コンピューティング固有の1-b表現に制約されなくなる。プログラミング可能/構成可能でマルチ・ビットのコンピューティングはデジタル・ドメインではより効率的であるため、本発明においてアナログ・デジタル変換はイン・メモリ・コンピューティングの後に実行され、特定の実施例において、他の多重化の比率も使用可能であるが、構成可能なデータ・パスは8のADC/イン・メモリ・コンピューティング・チャンネル間で多重化される。これは、本実施例において8-bオペランドまでのサポートが提供される場合に、マルチ・ビットの行列要素サポートに対して用いられたBPBS法とも協調する。
【0025】
入力ベクトルのスパーシティは多くの線形代数適用において一般的であるため、本発明は、エネルギーに比例したスパーシティ制御を可能とするためのサポートを取り込む。これは、ゼロ値化要素に相当する、入力ベクトルからのビットのブロードキャストをマスキングすることによって実現される(そのようなマスキングはビット・シリアル・プロセスにおいて全ビットに対して行われる)。これは、ブロードキャスト・エネルギーとともに、メモリ・アレイ内の演算エネルギーも節約する。
【0026】
イン・メモリ・コンピューティングに対して内部のビット単位の演算アーキテクチャ及び典型的なマイクロプロセッサの外部のデジタル・ワード・アーキテクチャを想定すると、データ再シェーピング・ハードウェアが、入力ベクトルが供給される際に使用される演算インタフェースと、行列要素が書き込まれ読み出される際に使用されるメモリ・インタフェースとの両方のために使用される。
【0027】
図1は、イン・メモリ・コンピューティング・アーキテクチャの典型的な構造を図示する。メモリ・アレイ(標準的なビット・セル又は変形のビット・セルに基づく場合がある)から構成されるとすると、イン・メモリ・コンピューティングは、信号の2つの追加の「直交」セット、すなわち(1)入力ライン及び(2)蓄積ラインを含む。図1を参照すると、ビット・セルの二次元のアレイが図示され、複数のイン・メモリ・コンピューティング・チャンネル110のそれぞれは、ビット・セルのそれぞれの列を含み、チャンネル毎のビット・セルのそれぞれは共通の蓄積ライン及びビット・ライン(列)と、それぞれの入力ライン及びワードライン(行)と関連付けられる。なお、本明細書において、信号の列及び行は、図1に図示されるビット・セルの二次元アレイなどのビット・セルのアレイの文脈内の行/列関係を単純に示すために互いに対して「直交」していると記載される。本明細書で使用される「直交」という用語は、特定の幾何学的な関係を伝えることを意図したものではない。
【0028】
信号の入力/ビット及び蓄積/ビットのセットはメモリ内の既存の信号(例えばワードライン、ビット・ライン)と物理的に結合されてもよく、分離される場合もある。行列ベクトル積を実装するために、行列要素はまずメモリ・セルにロードされる。その後、複数の入力ベクトル要素(全ての可能性もある)は入力ラインを介して一度に適用される。これによって、典型的に何らかの形態の乗算であるローカルな演算動作をメモリ・ビット・セルのそれぞれにおいて発生させる。その後、この演算動作の結果は、共有される蓄積ライン上に駆動される。このように、蓄積ラインは、入力ベクトル要素によって活性化される複数のビット・セル上の演算結果を表す。これは、ビット・セルが一度に1つずつビット・ラインを介してアクセスされ、単一のワードラインによって活性化される標準的なメモリ・アクセスとは対照的である。
【0029】
上述したようなイン・メモリ・コンピューティングは、数多くの重要な属性を有する。第1に、演算は通常アナログである。これは、メモリ及びビット・セルの制約された構造は、単純なデジタルのスイッチ型抽象によって実現するよりもリッチな演算モデルを必要とするためである。第2に、ビット・セルにおけるローカルな動作は、通常、ビット・セルに格納される1-b表現を用いた演算を含む。これは、標準的なメモリ・アレイにおけるビット・セルは、あらゆるバイナリ重み付けの方法によって互いに結合せず、そのような結合は末端からのビット・セルのアクセス/読出しの方法によって実現される必要があるためである。以下において、本発明において提案されるイン・メモリ・コンピューティングに関する拡張を説明する。
【0030】
ニア・メモリ及びマルチ・ビット演算への拡張
イン・メモリ・コンピューティングは従来のデジタル・アクセラレーションでは対応できない方法で行列ベクトル積を扱う可能性を有する一方、通常の演算パイプラインは、行列ベクトル積に関わる他の動作の範囲を含み得る。通常、そのような動作は従来のデジタル・アクセラレーションによって良好に扱われるが、それにも関わらず、適切なアーキテクチャにおいて、並列性、高スループット(したがって高通信帯域幅への必要性)、及びイン・メモリ・コンピューティングに関連した一般的な演算パターンを扱うために、そのようなアクセラレーション・ハードウェアをイン・メモリ・コンピューティング・ハードウェアの近くに配置することは高い価値を有する場合がある。関連する動作の大部分をデジタル・ドメインで実行されることが好ましいため、ADCによるアナログ・デジタル変換はイン・メモリ・コンピューティング蓄積ラインのそれぞれの後に含まれ、したがってイン・メモリ・コンピューティング・チャンネルと呼ぶ。最重要課題は、ADCハードウェアを各イン・メモリ・コンピューティング・チャンネルのピッチに組み込むことであるが、本発明でとられる適切なレイアウトのアプローチはこれを可能にする。
【0031】
各演算チャンネルの後にADCを組み込むことによって、それぞれビット・パラレル/ビット・シリアル(BPBS)演算を介した、マルチ・ビット行列及びベクトル要素をサポートするためのイン・メモリ・コンピューティングを拡張する効率的な方法が可能となる。ビット・パラレル演算は、異なるイン・メモリ・コンピューティング列において異なる行列要素ビットをロードすることを含む。その異なる列からのADC出力は、その後、対応するビット重み付けを表すように適切にビット・シフトされ、マルチ・ビット行列要素演算結果を得るように列の全てにおけるデジタル蓄積が実行される。一方、ビット・シリアル演算は、後続の入力ベクトル・ビットに対応する次の出力によるデジタル蓄積の前に、一度に1つずつベクトル要素の各ビットを適用し、その都度ADC出力を格納し、格納された出力を適切にビット・シフトすることを含む。そのようなアナログとデジタルの演算の混合を可能とするBPBSアプローチは、従来のメモリ動作に関連するアクセス・コストを克服しながら、デジタル(マルチ・ビット)の高効率高精度の方式とともにアナログ(1-b)の高効率低精度の方式を活用するため、高効率となっている。
【0032】
ニア・メモリ・コンピューティング・ハードウェアの範囲も考えられるが、本発明の本実施例に組み込まれたハードウェアの詳細を以下に説明する。上記のマルチ・ビット・デジタル・ハードウェアの物理的レイアウトを容易にするため、各ニア・メモリ・コンピューティング・チャンネルに8つのイン・メモリ・コンピューティング・チャンネルが多重化される。我々は、これによってイン・メモリ・コンピューティングの高並列動作がデジタルのニア・メモリ・コンピューティングの高周波数動作とスループットを一致させることができる(高並列アナログ・イン・メモリ・コンピューティングは、デジタル・ニア・メモリ・コンピューティングよりも低いクロック周波数で動作する)ことに着目した。したがって、各ニア・メモリ・コンピューティング・チャンネルは、デジタル・バレル・シフタ、乗算器、アキュムレータとともに、ルック・アップ・テーブル(LUT)、固定非線形関数実装を含む。さらに、ニア・メモリ・コンピューティング・ハードウェアに関連する構成可能な有限状態機械(FSM:finite-state machine)は、ハードウェア全体の演算を制御するために組み込まれる。
【0033】
入力インターフェーシング及びビット・スケーラビリティ制御
イン・メモリ・コンピューティングをプログラミング可能なマイクロプロセッサと統合するために、内部のビット単位の動作及び表現は、典型的なマイクロプロセッサのアーキテクチャで用いられる外部のマルチ・ビット表現と適切にインタフェース接続される必要がある。したがって、データ再シェーピング・バッファは入力ベクトル・インタフェースとメモリ読出/書込インタフェースとの両方に含まれ、それを介して行列要素がメモリ・アレイに格納される。本発明の実施例のために用いられる設計の詳細を以下に説明する。データ再シェーピング・バッファは、入力ベクトル要素のビット幅スケーラビリティを可能としながら、イン・メモリ・コンピューティング・ハードウェア、それと外部メモリとの間、さらに他のアーキテクチャ・ブロックへのデータ転送の最大帯域幅を維持する。このデータ再シェーピング・バッファは、入力ベクトルに対して入並列マルチ・ビット・データを要素毎に受信し全ベクトル要素に対して出並列シングル・ビット・データを供給するライン・バッファとしての役割を果たすレジスタ・ファイルからなる。
【0034】
ワード単位/ビット単位のインターフェーシングに加えて、入力ベクトルに印加される畳み込み動作のためのハードウェア・サポートも含まれる。そのような動作は、畳み込みニューラル・ネットワーク(CNN:convolutional-neural network)において顕著である。この場合、行列ベクトル積は、供給される必要のある新規のベクトル要素のサブセットのみとともに実行される(他の入力ベクトル要素はバッファに格納され、適切に単純にシフトされる)。これは、高スループットのイン・メモリ・コンピューティング・ハードウェアに対するデータを得るための帯域幅制約を軽減する。本発明の実施例において、マルチ・ビットの入力ベクトル要素の適切なビット・シリアル順序付けを実行しなければならない畳み込みサポート・ハードウェアは、その適切に読み出された出力が構成可能な畳み込みストライドのためのデータをシフトする特化バッファ内に実装される。
【0035】
次元及びスパーシティ制御
プログラミング性のため、(1)行列/ベクトル次元は適用毎に可変であり得る、(2)多くの適用においてベクトルはスパースとなる、という2つのさらなる考慮すべき事項をハードウェアによって対応しなければならない。
【0036】
次元について、適用において所望される次元レベルに対してのみエネルギーを消費するため、イン・メモリ・コンピューティング・ハードウェアはアレイのタイル部分をイネーブル/ディセーブルとする制御を組み入れることが多い。しかしながら、用いられるBPBSアプローチでは、入力ベクトル次元は演算エネルギー及びSNRに対する重要な示唆を有する。SNRについて、各イン・メモリ・コンピューティング・チャンネルにおけるビット単位の演算を行う場合、各入力(入力ライン上で供給される)とビット・セルに格納されるデータとの間の演算が1ビット出力を生成すると想定すると、蓄積ライン上で可能な個別レベルの数はN+1に等しい。ただしNは入力ベクトル次元である。これは、log2(N+1)ビットADCが必要であることを示唆する。しかしながら、ADCはビット数によって強く拡大又は縮小するエネルギー・コストを有する。したがって、ADCエネルギーの相対的な寄与を削減するために、非常に大きいがADCにおいてlog2(N+1)ビットよりも小さなNをサポートすることが有利である。これを行った結果は、演算動作の信号対量子化ノイズ比(SQNR:signal-to-quantization-noise ratio)が標準的な固定精度演算とは異なり、ADCビットの数に伴って低減されることである。したがって、変化する適用レベルの次元及びSQNRの要件をサポートするために、対応するエネルギー消費に伴って、構成可能な入力ベクトル次元に対するハードウェアのサポートが不可欠である。例えば、低減したSQNRが許容可能であれば、大次元の入力ベクトル・セグメントをサポートしなければならない。一方、高いSQNRを維持しなければならない場合、低次元の入力ベクトル・セグメントがサポートされなければならず、異なるイン・メモリ・コンピューティング・バンクから結合可能な複数の入力ベクトル・セグメントから内積結果が得られる(したがって、特に、標準的な固定精度動作と理想的に一致した演算を確実にするために、入力ベクトル次元はADCビットの数によって設定されたレベルまで減少され得る)。本発明において行われる混合のアナログ/デジタルのアプローチはこれを可能にする。すなわち、入力ベクトル要素は、所望の次元に対してのみのブロードキャストをフィルタリングするためにマスキングされることができる。これは、入力ベクトル次元に比例して、ブロードキャスト・エネルギー、及びビット・セル演算エネルギーを節約する。
【0037】
スパーシティについて、ゼロ値化要素に対応する全ての入力ベクトル要素ビットのブロードキャストを防ぐために、同様のマスキング・アプローチがビット・シリアル動作全体に対して適用されることが可能である。我々は、用いられたBPBSアプローチが特にこれを実現する上で助けになる点に着目した。これは、非ゼロ要素の予測数はスパース線形代数適用においては既知であることが多い一方、入力ベクトル次元は大きくなり得るためである。したがってBPBSアプローチによって、我々は入力ベクトル次元を増加させることができるとともに、蓄積ライン上でサポートされる必要があるレベルの数がADC分解能内にあることを依然として確実にし、それによって高い演算SQNRを確実とする。非ゼロ要素の予測数が既知である一方、実際の非ゼロ要素の可変数をサポートすることが依然として不可欠であり、これは入力ベクトル毎に異なり得る。マスキング・ハードウェアは所与のベクトルに対するゼロ値要素の数を単純に数えた後、BPBS動作後のデジタル・ドメインにおいて最終的な内積結果に対して対応するオフセットを印加すればよいため、混合のアナログ/デジタルアプローチにおいて容易に達成される。
【0038】
例示の集積回路アーキテクチャ
図2は、一実施例による例示のアーキテクチャの高レベル・ブロック図を図示する。特に、図2の例示のアーキテクチャは、本明細書における様々な実施例を試験するために特定の構成要素及び機能要素を使用したVLSI組立技術を使用した集積回路として実装された。異なる構成要素(例えばより大きい、又はよりパワフルなCPU、メモリ要素、処理要素など)を有する別の実施例が本開示の範囲内にあることが発明者によって企図されることが理解される。
【0039】
図2に図示するように、アーキテクチャ200は、中央処理装置(CPU:central processing unit)210(例えば32ビットRISC-V CPU)と、プログラム・メモリ(PMEM)220(例えば128KBプログラム・メモリ)と、データ・メモリ(DMEM)230(例えば128KBデータ・メモリ)と、外部メモリ・インタフェース235(例えば、説明上、1つ以上に32ビット外部メモリ装置(不図示)にアクセスすることによってアクセス可能メモリを拡張するように構成される)と、ブートローダー・モジュール240(例えば、8KBオフチップEEPROM(不図示)にアクセスするように構成される)と、様々な構成レジスタ255を含み本明細書に記載の実施例に従ってイン・メモリ・コンピューティング及び様々な他の機能を実行するように構成されたコンピュート・イン・メモリ・ユニット(CIMU)300と、様々な構成レジスタ265を含む直接記憶アクセス(DMA:direct memory access)モジュール260と、データの送受信のための万能非同期同受信機(UART:Universal Asynchronous Receiver/Transmitter)モジュール271、汎用入力/出力(GPIO:general purpose input/output)モジュール273、様々なタイマ274等の様々な支援/周辺モジュールとを含む。SoC構成モジュール(不図示)など、ここで図示されていない他の要素も図2のアーキテクチャ200に含まれ得る。
【0040】
CIMU300は行列ベクトル積などに非常に良好に適しているが、他の種類の演算/計算が非CIMU演算装置によってより適して実行され得る。したがって、様々な実施例において、特定の演算及び/又は機能が割り当てられた演算装置の選択がより効率的な演算機能を提供するように制御され得るように、CIMU300とニア・メモリとの間の近接結合が提供される。
【0041】
図3は、図2のアーキテクチャにおける使用に適した例示のコンピュート・イン・メモリ・ユニット(CIMU)300の高レベル・ブロック図を図示する。以下の説明は、図2のアーキテクチャ200とともに、そのアーキテクチャ200のコンテクスト内での使用に適した例示のCIMU300に関する。
【0042】
一般的に言えば、CIMU300は、例えば、様々な構成レジスタを介して構成されるビット・セルのコンピュテーション・イン・メモリ・アレイ(CIMA:computation-in-memory array)を含む様々な構造要素を含むことによって、行列ベクトル積などのプログラミング可能なイン・メモリ演算機能を提供する。特に、例示のCIMU300は、入力行列Xに入力ベクトルAを乗算して出力行列Yを得るように割り当てられた590kb、16バンクのCIMUとして構成される。
【0043】
図3を参照すると、CIMU300はコンピュテーション・イン・メモリ・アレイ(CIMA)310と、入力活性化ベクトル再シェーピング・バッファ(IA BUFF)320と、スパーシティ/AND論理コントローラ330と、メモリ読出/書込インタフェース340と、行デコーダ/WLドライバ350と、複数のAD変換器360と、ニア・メモリ・コンピューティングの乗算-シフト-蓄積データ・パス(NMD)370とを含むとして図示される。
【0044】
図示するコンピュテーション・イン・メモリ・アレイ(CIMA)310は、4×4クロック・ゲート方式の64×(3×3×64)イン・メモリ・コンピューティング・アレイとして配置され、したがって合計256のイン・メモリ・コンピューティング・チャンネル(例えばメモリ列)を有し、そのイン・メモリ・コンピューティング・チャンネルをサポートするために256のADC360が含まれる256×(3×3×256)コンピュテーション・イン・メモリ・アレイを含む。
【0045】
IA BUFF320は、例えば、32ビットのデータ・ワードのシーケンスを受信するように動作し、それらの32ビットのデータ・ワードを、CIMA310による処理に適した高次元のベクトルのシーケンスに再シェーピングする。なお、32ビット、64ビット、又は他のあらゆる幅のデータ・ワードが、コンピュート・イン・メモリ・アレイ310の利用可能なサイズ又は選択されたサイズに合致するように再シェーピングされてもよく、この場合、コンピュート・イン・メモリ・アレイ310自体が高次元ベクトルに対して動作するように構成され、2-8ビット、1-8ビット又は他のサイズを有する場合がありアレイ全体において並列してそれらを適用する要素を含む。また、本明細書で説明する行列ベクトル積演算はCIMA310の全体を利用するとして図示されているが、様々な実施例において、CIMA310の一部のみが使用される。さらに、様々な他の実施例において、CIMA310と関連論理回路は、インターリーブされた行列ベクトル積演算を実現するように適応され、行列の並列部分はCIMA310のそれぞれの部分によって同時に処理される。
【0046】
特に、IA BUFF320は、32ビットのデータ・ワードのシーケンスを、CIMA310に一度に(又は少なくとも大きいチャンク単位で)加えられてもよくビット・シリアル方式で適切に順序付けされる高並列データ構造に再シェーピングする。例えば、8つのベクトル要素を有する4ビット演算は、2000nビット以上のデータ要素の高次元ベクトルと関連付けられてもよい。IA BUFF320は、このデータ構造を形成する。
【0047】
図示されるように、IA BUFF320は、例えば32ビットのデータ・ワードのシーケンスとして入力行列Xを受信してCIMA310のサイズに応じて受信したデータ・ワードのシーケンスのサイズ変更/再配置を行って、例えば2303nビットのデータ要素を含むデータ構造を供給するように構成される。それぞれのマスキング・ビットとともに、それらの2303nビットのデータ要素のそれぞれは、IA BUFF320からスパーシティ/AND論理コントローラ330へ送信される。
【0048】
スパーシティ/AND論理コントローラ330は、例えば2303nビットのデータ要素とそれぞれのマスキング・ビットとを受信し、それに応じてスパーシティ機能を呼び出すように構成され、この場合、ゼロ値データ要素(それぞれのマスキング・ビットによって示されるものなど)は処理のためにCIMA310に伝搬されない。このようにして、CIMA310によるそのようなビットの処理のために特別に必要なエネルギーが節約される。
【0049】
動作において、CPU210は標準的な方法で実装される直接データ・パスを介してPMEM220とブートローダー240を読み込む。CPU210は標準的な方法で実装される直接データ・パスを介してDMEM230、IA BUFF320、及びメモリ読出/書込バッファ340にアクセスしてもよい。これらのメモリ・モジュール/バッファ、CPU210及びDMAモジュール260の全ては、AXIバス281によって接続される。チップ構成モジュール及び他の周辺モジュールは、APBバス282によってグループ化され、スレーブとしてAXIバス281に取り付けられる。CPU210は、AXIバス281を介してPMEM220に書き込むように構成される。DMAモジュール260は、専用データ・パスを介して、DMEM230、IA BUFF320、メモリ読出/書込バッファ340、及びNMD370にアクセスして、例えばDMAコントローラ265に従って、AXI/APBバスを介して他のアクセス可能なメモリ空間の全てにアクセスするように構成される。CIMU300は、上述のBPBS行列ベクトル積を実行する。上記及び他の実施例のさらなる詳細は以下で説明する。
【0050】
このように、様々な実施例において、CIMAは、ベクトル情報を受信し、行列ベクトル積を実行し、複合行列ベクトル積機能を提供するために必要に応じて別の演算機能によってさらに処理される場合のあるデジタル化出力信号(すなわち、Y=AX)を提供するように、ビット・シリアル・ビット・パラレル(BPBS)方式で動作する。一般的に言えば、本明細書で説明する実施例は、超並列のビット単位の入力信号を形成するために受信データ・ワードのシーケンスを再シェーピングするように構成された再シェーピング・バッファと、第1のCIMアレイ次元を介して上記の超並列のビット単位の入力信号を受信し、第2のCIMアレイ次元を介して1つ以上の蓄積信号を受信するように構成されるビット・セルのコンピュート・イン・メモリ(CIM)アレイであって、共通の蓄積信号と関連付けられた複数のビット・セルのそれぞれは、それぞれの出力信号を供給するように構成されるそれぞれのCIMチャンネルを形成するCIMアレイと、複数のCIMチャンネル出力信号を処理することによってマルチ・ビットの出力ワードのシーケンスを供給するように構成されたアナログ・デジタル変換器(ADC)回路と、CIMアレイに、シングル・ビットの内部回路及び信号を用いて上記入力及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成された制御回路と、コンピューティング結果としてマルチ・ビットの出力ワードのシーケンスを供給するように構成されたニア・メモリ・コンピューティング・パスと、を含むイン・メモリ・コンピューティング・アーキテクチャを提供する。
【0051】
メモリ・マップ及びプログラミング・モデル
CPU210はIA BUFF320及びメモリ読出/書込バッファ340に直接アクセスするように構成されるため、これらの2つのメモリ空間は、特にアレイ/行列データなどの構造化データに対して、ユーザ・プログラムの観点から、レイテンシ及びエネルギーに関してDMEM230にとって類似して見える。様々な実施例において、イン・メモリ・コンピューティングの特徴が活性化されていない、若しくは部分的に活性化されている場合、メモリ読出/書込バッファ340及びCIMA310は、通常のデータ・メモリとして使用されてもよい。
【0052】
図4は、一実施例による、図2のアーキテクチャにおける使用に適した入力活性化ベクトル再シェーピング・バッファ(IA BUFF)320の高レベル・ブロック図を図示する。図示するIA BUFF320は、1ビットから8ビットの要素精度を有する入力活性化ベクトルをサポートし、他の精度も様々な実施例において考慮されてもよい。本明細書で説明するビット・シリアル・フロー機構によれば、入力活性化ベクトルにおける全ての要素の特定のビットは、行列ベクトル積演算のためにCIMA310に対して一度にブロードキャストされる。ただし、この動作の高パラレル性は、高次元入力活性化ベクトルの要素が最大帯域幅及び最小エネルギーで提供されることを必要とし、さもなければ、イン・メモリ・コンピューティングのスループット及びエネルギー効率の利点が利用されないであろう。これを達成するためには、入力活性化再シェーピング・バッファ(IA BUFF)320は以下のように構成されてもよく、それによってイン・メモリ・コンピューティングがマイクロプロセッサの32ビット(又は他のビット幅)のアーキテクチャに組み込まれることができ、それによって対応する32ビットのデータ転送のためのハードウェアがイン・メモリ・コンピューティングの高パラレル内部組織のために最大限に活用される。
【0053】
図4を参照すると、IA BUFF320は、1から8ビットのビット精度の入力ベクトル要素を含む場合のある32ビット入力信号を受信する。それによって、32ビットの入力信号が、合計24(ここではレジスタ410-0から410-23で示される)となる4×8-bレジスタ410にまず格納される。これらのレジスタ410は、自身のコンテンツを、それぞれ96列を有する8レジスタ・ファイル(レジスタ・ファイル420-0から420-8として示される)に供給し、3×3×256=2304までの次元を有する入力ベクトルは並列の列にその要素とともに配置される。これは、8-b入力要素の場合に行われ、24の4×8-bレジスタ410はレジスタ・ファイル420の1つに対して96の並列出力を供給し、1-b入力要素の場合は、24の4×8-bレジスタ410は8つのレジスタ・ファイル420の全部に対して1536の並列出力を供給する(又は他のビット精度に対しては中間の構成)。各レジスタ・ファイル列の高さは2×4×8-bであり、各入力ベクトル(8ビットまでの要素精度)が4セグメントに格納可能とし、全入力ベクトル要素がロードされる場合にダブル・バッファリングを可能とする。一方、入力ベクトル要素の1/3程度がロードされる場合(すなわち、1のストライドを有するCNN)、各4つのレジスタ・ファイル列のうちの1つがバッファの役割を果たし、3つの列からのデータが演算のためにCIMUに対して順伝搬可能とする。
【0054】
それによって、各レジスタ・ファイル420によって出力される96列のうち、72のみがそれぞれの円形のバレル・シフト・インタフェース430によって選択され、一度に8つのレジスタ・ファイル420に対して合計576の出力を与える。これらの出力は、そのレジスタ・ファイルに格納された4つの入力ベクトル・セグメントの1つに対応する。したがって、1-bレジスタ内において、入力ベクトル要素の全てをスパーシティ/AND論理コントローラ330にロードするためには4つの周期が必要とされる。
【0055】
入力活性化ベクトルにおいてスパーシティを活用するために、CPU210又はDMA260が再シェーピング・バッファ320に書き込む一方で、データ要素毎にマスク・ビットが生成される。マスキングされた入力活性化は、CIMA310における電荷に基づく演算動作を防ぎ、それによって演算エネルギーを節約する。このマスク・ベクトルは、SRAMブロックにも格納され、入力活性化ベクトルと同様だが1ビット表現を有して組織される。
【0056】
4対3バレル・シフタ430は、VGGスタイル(3×3フィルタ)CNN演算をサポートするために使用される。次のフィルタリング動作(畳み込み再利用)に移行する際に、入力活性化ベクトルの3つのうちの1つのみが更新を必要とし、それによってエネルギーを節約し、スループットを向上させる。
【0057】
図5は、一実施例による、図2のアーキテクチャにおける使用に適したCIMA読出/書込バッファ340の高レベル・ブロック図を図示する。図示されたCIMA読出/書込バッファ340は、例えば768ビット幅のスタティック・ランダム・アクセスメモリ(SRAM:static random access memory)ブロック510として組織される一方、図示されるCPUのワード幅はこの例では32ビットであり、読出/書込バッファ340はその間をインタフェース接続するために使用される。
【0058】
図示されるような読出/書込バッファ340は、768ビット書込レジスタ511及び768ビット読出レジスタ512を含む。読出/書込バッファ340は、通常、CIMA310において幅広いSRAMブロックに対してキャッシュのように動作するが、いくつかの詳細が異なる。例えば、読出/書込バッファ340は、CPU210が異なる行に書き込む場合のみCIMA310に書き戻すが、異なる行の読出しは書き戻しをトリガしない。読出しアドレスが書込レジスタのタグと一致する場合、CIMA310から読み出すかわりに、書込レジスタ511における修正バイト(汚染ビットとして示す)は読出レジスタ512にバイパスされる。
【0059】
蓄積ライン・アナログ・デジタル変換器(ADC)。CIMA310からの蓄積ラインはそれぞれ8ビットのSAR ADCを有し、イン・メモリ・コンピューティング・チャンネルのピッチに適合する。領域を節約するため、SAR ADCのビット・サイクリングを制御する有限状態機械(FSM:finite-state machine)は各イン・メモリ・コンピューティング・タイルにおいて必要とされる64ADC間で共有される。FSM制御論理は、8+2シフト・レジスタからなり、リセット、サンプリング、そして8ビット決定段階を繰り返すためのパルスを生成する。シフト・レジスタ・パルスは、64ADCに対してブロードキャストされ、それらはローカルでバッファに入れられ、ローカルの比較器決定をトリガし、ローカルのADCコード・レジスタに対応するビット決定を格納し、その後、次のコンデンサ-DAC構成をトリガするように使用される。高精度metal-oxide-metal(MOM)容量は、各ADCのコンデンサ・アレイの小型化を可能とするために使用してもよい。
【0060】
図6は、一実施例による、図2のアーキテクチャにおける使用に適したニア・メモリ・データ・パス(NMD)モジュール600の高レベル・ブロック図を図示するが、他の特徴を有するデジタル・ニア・メモリ・コンピューティングも使用可能である。図6に図示するNMDモジュール600は、BPBS方式によるマルチ・ビット行列積をサポートするADC出力後のデジタル演算データ・パスを示す。
【0061】
特定の実施例において、256ADC出力はデジタル演算フローのために8のグループに組織される。これによって、8ビットまでの行列要素構成のサポートが可能となる。したがって、NMDモジュール600は、32の同一NMDユニットを含む。各NMDユニットは、8ADC出力610及び対応バイアス621、被乗数622/623、シフト数624及び蓄積レジスタのうちから選択するためのマルチプレクサ610/620と、グローバル・バイアス及びマスク・カウントを減算するために8ビットの無符号入力及び9ビットの符号付き入力を有する加算器631と、ニューラル・ネットワーク・タスクのためのローカル・バイアスを演算するための符号付き加算器632と、スケーリングを実行するための固定点マルチプレクサ633と、被乗数の指数を演算して重み要素における異なるビットのためのシフトを実行するためのバレル・シフタ634と、蓄積を実行するための32ビット符号付き加算器635と、1、2、4、及び8ビット構成を有する重みをサポートするための8つの32ビット蓄積レジスタ640と、ニューラル・ネットワーク適用のためのReLUユニット650とからなる。
【0062】
図7は、一実施例による、図2のアーキテクチャにおける使用に適した直接記憶アクセス(DMA)モジュール700の高レベル・ブロック図を図示する。図示するDMAモジュール700は、例えば、異なるハードウェア・リソースとの同時のデータ転送をサポートする2つのチャンネルと、DMEM、IA BUFF、CIMU R/W BUFF、NMD結果及びAXI4バスのそれぞれとの5つの独立したデータ・パスとを含む。
【0063】
ビット・パラレル/ビット・シリアル(BPBS)行列ベクトル積
マルチ・ビットMVM

のためのBPBS方式を図8に示す。ただし、Bは行列要素am,nのために使用されるビット数に相当し、Bは入力ベクトル要素xのために使用されるビット数に相当し、Nは入力ベクトルの次元に相当し、これは本実施例のハードウェアにおいて2304までとなり得る(Mはスパーシティ及び次元制御のために使用されるマスク・ビットである)。am,nの複数のビットは並列CIMA列にマッピングされ、xの複数のビットは直列で入力される。したがって、マルチ・ビット乗算及び蓄積は、両方が本実施例の乗算ビット・セル(M-BC)によってサポートされるビット単位のXNOR又はビット単位のANDのいずれかによってイン・メモリ・コンピューティングを介して達成可能である。特に、ビット単位のANDは、入力ベクトル要素ビットが低いときにその出力が低いままでなければならないという点でビット単位のXNORとは異なる。本実施例のM-BCは、差分信号として入力ベクトル要素ビットを(一度に1つ)入力することを含む。M-BCはXNORを実装する。ただし真理表における各論理「1」出力は、入力ベクトル要素ビットの真の信号と補数信号とをそれぞれ介してVDDに駆動することによって達成される。したがって、ANDは補数信号を単にマスキングすることによって容易に達成されるため、出力が低いままとなり、ANDに対応する真理表を生成する。
【0064】
ビット単位のANDは、マルチ・ビット行列及び入力ベクトル要素のための標準的な2の補数表現をサポートすることができる。これは、ADCの後で、デジタル化された出力を他の列の演算の出力に追加する前にデジタル・ドメインにおいて最上位ビット(MSB:most significant bit)に相当する列演算に対して負号を適切に印加することを含む。
【0065】
ビット単位のXNORは、数字表現のわずかな修正を必要とする。すなわち、要素ビットは1/0ではなく+1/-1にマッピングし、適切にゼロを表現するために同等のLSB重み付けを有する2つのビットを必要とする。これは以下のように行われる。まず、各Bビット・オペランド(標準的な2の補数表現)はB+1ビット符号付き整数に分解される。例えばyはB+1正/負の1ビット

に分解して、

を得る。
【0066】
+1/-1の数学的値に対して1/0値のビットをマッピングすることによって、ビット単位のイン・メモリ・コンピューティング乗算は論理XNOR動作を介して実現されてもよい。したがって、入力ベクトル要素のために差分信号を使用して論理XNORを実行するM-BCは、列演算からのデジタル化された出力をビット重み付け及び加算を行うことによって符号付きのマルチ・ビット乗算を可能とすることができる。
【0067】
ANDに基づくM-BC乗算及びXNORに基づくM-BC乗算が2つのオプションを表しているが、M-BCで可能な論理動作を有する適切な数の表現を使用することによって他のオプションも可能である。そのような代替案は有益である。例えば、XNORに基づくM-BC乗算は、2値化された(1-b)演算に対して好適である一方、ANDに基づくM-BC乗算はデジタル・アーキテクチャ内での統合を容易化するためのより標準的な数の表現を可能とする。さらに、この2つのアプローチは、わずかに異なる信号対量子化ノイズ比(SQNR)を発生させるため、適用の必要性に基づいて選択されることが可能である。
【0068】
異種コンピューティング・アーキテクチャ及びインタフェース
本明細書において説明する様々な実施例は、ビット・セル(又は乗算ビット・セル:M-BC)が演算結果に相当する出力電圧をローカル・コンデンサに駆動する場合のチャージ・ドメインのイン・メモリ・コンピューティングの様々な態様を企図する。イン・メモリ・コンピューティング・チャンネル(列)からのコンデンサは、その後、電荷の再配分を介した蓄積を実現するために結合される。上述したように、そのようなコンデンサは、単純に互いに近接しているため電界を介して結合される配線を介して等、VLSI等処理において複製が非常に容易である特定の形状を使用して形成されてもよい。それによって、コンデンサとして形成されたローカル・ビット・セルは1又はゼロを表す電荷を格納する一方、ローカルで多数のコンデンサ又はビット・セルの電荷の全てを足し上げることによって、行列ベクトル積において基礎の動作となる乗算及び蓄積/加算の関数の実装を可能とする。
【0069】
上述した様々な実施例は、改良されたビット・セルに基づくアーキテクチャ、コンピューティング・エンジン、及びプラットフォームを提供しており、有益である。行列ベクトル積は、標準的なデジタル処理又はデジタル・アクセラレーションによって効率的に実行されない1つの動作である。したがって、この一種類のコンピュテーション・イン・メモリの演算を実行することは既存のデジタル設計を上回る大きな利点を提供することになる。ただし、デジタル設計を使用して他の様々な種類の動作が実行される。
【0070】
様々な実施例は、例えば異種コンピューティング・アーキテクチャを形成するために、上記のビット・セルに基づくアーキテクチャ、コンピューティング・エンジン、プラットフォーム等を従来のデジタル・コンピューティング・アーキテクチャ及びプラットフォームに接続/インタフェース接続するための機構を企図する。このようにして、伝統的なコンピュータ処理によく適した他の演算動作は伝統的なコンピュータ・アーキテクチャを介して処理される一方、ビット・セル・アーキテクチャ処理(例えば行列ベクトル処理)によく適した演算動作は上述したように処理される。すなわち、様々な実施例は、本明細書で説明する高パラレル処理機構を含むコンピューティング・アーキテクチャを提供し、この機構が複数のインタフェースに接続されることによって、より従来のデジタル・コンピューティング・アーキテクチャに外部結合されることが可能となる。これによって、デジタル・コンピューティング・アーキテクチャはイン・メモリ・コンピューティング・アーキテクチャと直接的及び効率的に並ぶことができ、その2つの間でのデータ移行のオーバーヘッドを最小限にするために2つが近接して配置されることを可能とする。例えば、機械学習適用は80%から90%の行列ベクトル演算を含む一方、依然として10%から20%の他の種類の演算/動作が実行される。本明細書で説明するイン・メモリ・コンピューティングをアーキテクチャにおいてより従来型であるニア・メモリ・コンピューティングと組み合わせることによって、その結果得られるシステムは多くの種類の処理を実行するための格段の構成可能性を実現する。したがって、様々な実施例は、本明細書で説明するイン・メモリ・コンピューティングと組み合わせたニア・メモリ・デジタル演算を企図する。
【0071】
本明細書で説明するイン・メモリ演算は超並列であるが単一ビットの動作である。例えば、1ビットのみがビット・セルに格納される場合が多い。1か0である。ビット・セルに駆動される信号は、通常、入力ベクトルである(すなわち、各行列要素は2Dベクトル乗算動作において各ベクトル要素が乗算される)。このベクトル要素は、同様にデジタルである信号に置かれ、ベクトル要素が同様に1ビットとなるように1ビットのみである。
【0072】
様々な実施例は、ビット・パラレル/ビット・シリアルのアプローチを使用して1ビット要素から複数ビット要素へ行列/ベクトルを拡張する。
【0073】
図8A及び8Bは、図2のアーキテクチャにおける使用に適したCIMAチャンネル・デジタル化/重み付けの様々な実施例の高レベル・ブロック図を図示する。特に、図8Aは、様々な他の図に関して上述したものと同様のデジタル・バイナリ重み付け及び加算実施例を図示する。図8Bは、図8Aの実施例及び/又は本明細書で説明する他の実施例よりも少ない数のアナログ・デジタル変換器の使用を可能とするために様々な回路要素に対して修正を加えたアナログ・バイナリ重み付け及び加算実施例を図示する。
【0074】
上述したように、様々な実施例は、ビット・セルのコンピュート・イン・メモリ(CIM)アレイが、第1のCIMアレイ次元(例えば2D CIMアレイの行)を介して超並列のビット単位の入力信号を受信し、第2のCIMアレイ次元(例えば2D CIMアレイの列)を介して1つ以上の蓄積信号を受信するように構成されることを企図しており、この場合、共通の蓄積信号(例えばビット・セルの列として図示)と関連付けられた複数のビット・セルのそれぞれが、それぞれの出力信号を供給するように構成されたそれぞれのCIMチャンネルを形成する。アナログ・デジタル変換器(ADC)回路は、複数のCIMチャンネル出力信号を処理することによってマルチ・ビットの出力ワードのシーケンスを供給するように構成される。制御回路は、CIMアレイに、シングル・ビット内部回路及び信号を使用して入力及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成され、それによって動作上係合するニア・メモリ・コンピューティング・パスが演算結果としてマルチ・ビットの出力ワードのシーケンスを提供するように構成され得るようにする。
【0075】
図8Aを参照すると、ADC回路機能を実行するデジタル・バイナリ重み付け及び加算実施例が図示される。特に、二次元CIMA810Aは第1の(行)次元(すなわち、複数のバッファ805を介する)において行列入力値を受信し、第2の(列)次元においてベクトル入力値を受信し、CIMA810Aは、様々なチャンネル出力信号CH-OUTを供給するように制御回路等(不図示)に従って動作する。
【0076】
図8AのADC回路は、CIMチャンネル毎に、CIMチャンネル出力信号CH-OUTをデジタル化するように構成されたそれぞれのADC760と、デジタル化されたCIMチャンネル出力信号CH-OUTに対してそれぞれのバイナリ重み付けを付与することによって、マルチ・ビットの出力ワード870のそれぞれの部分を形成するように構成されたそれぞれのシフト・レジスタ865とを提供する。
【0077】
図8Bを参照すると、ADC回路機能を実行するアナログ・バイナリ重み付け及び加算実施例が図示されている。特に、二次元CIMA810Bは第1の(行)次元で(すなわち、複数のバッファ805を介して)行列入力値を受信し、第2の(列)次元でベクトル入力値を受信し、CIMA810Bは様々なチャンネル出力信号CH-OUTを供給するように制御回路等(不図示)に従って動作する。
【0078】
図8BのADC回路は、CIMA810B内にスイッチ815-1、815-2等の4つの制御可能な(又は事前に設定された)バンクを提供し、これらのバンクは、そこに形成されているコンデンサを結合及び/又は分離するように動作することによってチャンネルの1つ以上のサブグループのそれぞれに対してアナログ・バイナリ重み付け法を実装し、チャンネル・サブグループのそれぞれは単一の出力信号を供給して、CIMチャンネルのそれぞれのサブセットのCIMチャンネル出力信号の重み付けされたアナログ加算をデジタル化することによってマルチ・ビットの出力ワードのそれぞれの部分を形成するために1つのADC860Bのみが必要とされるようにする。
【0079】
図9は、一実施例による方法のフロー図を図示する。特に、図9の方法900は、本明細書において説明するようにアーキテクチャ、システム等によって実装される様々な処理動作に関し、この場合、入力行列/ベクトルはビット・パラレル/ビット・シリアル・アプローチにおいて演算されるように拡張される。
【0080】
ステップ910において、行列及びベクトルのデータは、適切なメモリ位置にロードされる。
【0081】
ステップ920において、ベクトル・ビット(MSBからLSB)のそれぞれは順次処理される。特に、ベクトルのMSBは行列のMSBによって乗算され、ベクトルのMSBは行列のMSB-1によって乗算され、ベクトルのMSBは行列のMSB-2によって乗算される等が行われて、最終的にベクトルのMSBは行列のLSBによって乗算される。結果として得られるアナログ電荷結果は、その後、MSBからLSBのベクトル積毎にデジタル化され、得られた結果はラッチされる。このプロセスは、ベクトルMSB-LSBのそれぞれが行列のMSB-LSB要素のそれぞれによって乗算されるまで、ベクトルMSB-1、ベクトルMSB-2等からベクトルLSBまで反復される。
【0082】
ステップ930において、ビットは適切な重み付けを印加するようにシフトされ、その結果はともに加算される。なお、アナログ重み付けが使用される実施例のいくつかにおいて、ステップ930のシフト動作は不要である。
【0083】
様々な実施例は、高密度のメモリにデータを格納するために使用される回路内において非常に安定及び強固な演算を実行可能とする。さらに、メモリ・ビット・セル回路のために高密度を可能にすることによって、様々な実施例は本明細書で説明するコンピューティング・エンジン及びプラットフォームを進歩させる。密度は、よりコンパクトなレイアウトに起因して、さらにメモリ回路に対して使用される非常に積極的な設計ルール(すなわち、プッシュ・ルール)とのレイアウトの向上した適合性を理由として高めることが可能である。様々な実施例は、機械学習及び他の線形代数のためのプロセッサの性能を実質的に向上させる。
【0084】
イン・メモリ・コンピューティング・アーキテクチャ内で使用可能なビット・セル回路が開示される。開示されるアプローチによって、高密度のメモリにデータを格納するために使用される回路内において非常に安定/強固な演算が実行可能となる。強固なイン・メモリ・コンピューティングのための開示アプローチは、既知のアプローチと比較してメモリ・ビット・セル回路に対して高密度を可能とする。密度は、よりコンパクトなレイアウトに起因して、さらにメモリ回路に対して使用される非常に積極的な設計ルール(すなわち、プッシュ・ルール)とのレイアウトの向上した適合性を理由として高められる。開示の装置は、標準的なCMOS集積回路処理を使用して組み立てられることが可能である。
【0085】
メモリ・アクセスは、多くの演算作業負荷においてエネルギー及び遅延の主要部分を占めている。標準的なメモリでは、生データが行毎にアクセスされ、格納点からメモリ・アレイ外の演算点へデータを動かす際に通信コストを発生させるため、メモリのエネルギー及び遅延が発生する。一方、イン・メモリ・コンピューティング・アーキテクチャは行にわたって格納されたデータの多くのビット上の演算結果にアクセスすることによって、一度に多くの行にアクセスし、通信コストを償却する。
【0086】
そのような償却が乗数(すなわち、大まかには同時にアクセスされる行の数)によるエネルギー及び遅延を削減する一方、最重要課題は、演算上の信号対ノイズ比(SNR)も対応する因数によって低減されることである。これは、一般的に多数のビットに対する演算が必要とされるダイナミック・レンジを増加させるが、これに伴って、メモリの既存のビット・ラインの限定スイング内においてSNR抑制するためである。特にイン・メモリ・アーキテクチャの演算ノイズの大部分は、ビット・セルによって実行される演算動作の変形と非線形によるものである。標準的なメモリにおいて、ビット・セルは出力電流を供給する。これは、標準的に使用される高密度のビット・セルに対する変化を最小限にすることを目的として、電流ドメインの演算をイン・メモリ・コンピューティング・アーキテクチャに対する自然な選択としてきた。
【0087】
しかしながら、ビット・セル電流は、ビット・セル・トランジスタに影響する変化及び非線形の高レベルの影響を受けやすい。これはイン・メモリ・コンピューティングのSNRを限定し、したがってスケーラビリティを限定する。チャージ・ドメインの演算を使用する様々な実施例に従って改良が得られる。ここでは、ビット・セルからの演算出力は、コンデンサ上に電荷として記憶される。例えば、様々な実施例はビット・セル・トランジスタの上でのメタル・フィンガ・コンデンサの使用を企図しており、そのようなコンデンサは追加の領域を発生させず、したがってビット・セルが高密度の構造を維持することができる。演算上のSNRのために重要なことは、そのようなコンデンサも非常に良好な線形を示すとともに、処理と温度の変化が存在するときに高い安定性を示すことである。これは、実質的に、イン・メモリ・コンピューティングのスケーラビリティを高めてきた。
【0088】
メタル・フィンガ・コンデンサはビット・セル上に配置されることが可能である一方、スイッチト・キャパシタのチャージ・ドメイン演算のために、ビット・セル内でいくつかの回路変更が必要である。本発明は、スタティック・ランダム・アクセス・メモリ(SRAM)におけるチャージ・ドメインのビット・セル演算の高密度を可能とするために回路及びレイアウトに着目する。特に、SRAMビット・セルのために使用される積極的なプッシュ設計ルールとの適合性を向上させる回路及びレイアウトを説明する。
【0089】
図10は、乗算ビット・セルの回路図を図示する。図9のビット・セル900は、1-bデータの格納、書込み、読出しなどの動作を実行し、さらに格納された1-bデータと1-b IA/IAb信号(差分)間の乗算を可能にする。したがって、この構造を乗算ビット・セル(M-BC)と呼ぶ。なお、1-b乗算は、論理XNOR演算に相当する。これを実装するため、図10に図示するように、PMOSトランジスタが追加され、ビット・セル格納ノードに結合され、IA/IAb信号によって駆動される。
【0090】
図11は、XNOR関数を実行するように構成された3つのM-BCの回路図を図示する。特に、図10の回路の動作は、3つのM-BCに対して、(1)コンデンサ短絡スイッチ(TSHORT/TSHORTb)及び放電NMOSトランジスタ(PRE)をアサートすることによってM-BCコンデンサが無条件で放電され、(2)TSHORT/TSHORTbがディアサートされ、IA/IAbが駆動され、ローカルM-BCコンデンサ上にM-BC XNOR出力を格納し、(3)IA/IAbがディアサートされ、TSHORTがアサートされ、全てのXNOR結果からの電荷を蓄積して、乗算-蓄積演算を与えることを含む。なお、8つのM-BCトランジスタに加えて、TSHORT/TSHORTb実装のためのM-BC毎に2つの追加のNMOS/PMOSトランジスタが必要である。以前の設計においては、ノードの効率的な共有を可能とするため、3つのM-BCとともに、上記のNMOS/PMOSトランジスタは各M-BCの外側に配置された。
【0091】
図11A図11Bは標準的なSRAMビット・セル(図11B)の8トランジスタM-BCの次段の8トランジスタM-BC(図11A)上の例示の集積回路(IC)のレイアウトを図示する。2種類のビット・セル間のPCBサイズ及び複雑性の差は検査によってわかり得る。
【0092】
図12は、3つのM-BCからなるグループ(その上に配置されたメタル・フィンガ・コンデンサも図示)及びTSHORT NMOS/PMOSの例示のICレイアウトを図示する。なお、ビット・セル演算のためのPMOSトランジスタは、M-BC内のNMOS及びPMOSトランジスタのバランスがとれた使用につながり、それによって結果的に標準的な6トランジスタ(6T)SRAMビット・セルのものとは大きく異なるICレイアウトとなる。これは、プッシュ・ルール適合性の可能性に影響する。
【0093】
様々な実施例は、ビット・セル演算のためにNMOSトランジスタを追加する新規のM-BC回路を企図する。これによって、実施例は、標準的な6Tビット・セルと比べて高密度及び近接の両方を実現しプッシュ・ルール適合性も向上させるICレイアウトを提供する。
【0094】
図13は、一実施例によるM-BCの回路図を図示する。特に、図13のM-BC1300は、NMOSトランジスタを使用した1-bチャージ・ドメイン乗算(XNOR)を実装する。ここで、NMOS入力IA/IAbはローカル・コンデンサの無条件の放電の間は低く、その後演算のために差分駆動される。
【0095】
図14は、図13のM-BCの例示のレイアウトを図示する。特に、図14のレイアウトは、単一のM-BC内にコンパクトにNMOS/PMOS TSHORTスイッチを含むこと(メタル・フィンガ・コンデンサはビット・セル上に配置される)を企図する。図14のレイアウト1400において、信号WL、IA/IAbは水平に走る一方、信号BL、Blab、PA、VDD、GNDは垂直に走る。このレイアウトは、標準的な6Tセルの面積のおよそ2倍を有しており、周辺のM-BCといくつかのノードを共有する機会を利用する。
【0096】
開示のアプローチは、標準的なメモリ・ビット・セル回路よりも多くの面積を使用する一方、ビット・セルの大部分はプッシュ・ルールによって実証されたものであり、これへの拡張は、プッシュ・ルールの使用に成功した他の構造と同様である。開示のアプローチは、機械学習及び他の線形代数のためのプロセッサの性能を実質的に向上させる。そのような改善は従来のアーキテクチャに対して実験的に証明されており、開示のアプローチはそのアーキテクチャを実質的に進歩させるものである。
【0097】
上述したように、メモリ・ビット・セル内の演算動作は、通常コンデンサを介した電圧電荷変換を使用してその結果を電荷として供給する。したがって、ビット・セル回路は、所与のビット・セルのローカル・コンデンサの適切な切換を含み、この場合、ローカル・コンデンサは他のビット・セル・コンデンサにも適切に結合されて、結合されたビット・セルにわたる集約演算結果を生成する。
【0098】
再構成可能なチャージ・ドメインのイン・メモリ・コンピューティングのためのチャージ・インジェクションの強固なビット・セル及びビット・セル・レイアウトが本明細書において開示される。開示の装置、特にビット・セル回路は、イン・メモリ・コンピューティング・アーキテクチャ内で使用可能である。開示のアプローチによって、高密度メモリにデータを格納するために使用される回路内において、非常に安定/強固な演算とともに再構成可能な演算が実行可能となる。開示のアプローチによって、従来のアプローチよりもイン・メモリ・コンピューティングのための高い強固性及び再構成可能性が可能となる。開示の装置は、標準的なCMOS集積回路処理を使用して組み立てられてもよい。開示のアプローチは、機械学習及び他の線形代数のためのプロセッサの性能を実質的に向上させることができるため、半導体業界に対して顕著な有用性を有すると考えられる。
【0099】
本明細書で開示されるアプローチは、(1)明示的なスイッチを必要とせずに、ビット・セル・コンデンサ間の結合が達成可能である構成(非スイッチ型結合構造)、(2)結合されたビット・セルが他の結合ビット・セルとインターリーブされる物理的レイアウト(インターリーブ・レイアウト)のビット・セル回路の2つの新規の態様に関する。
【0100】
非スイッチ型結合構造は、コンデンサ・プレートの1つに関する演算結果を供給するビット・セルに関し、この場合、コンデンサ間の結合は、他のコンデンサ・プレートを介して実現される。これは、ビット・セル回路が通常スイッチを介して最終的に他のコンデンサに対して結合される同一のコンデンサ・プレートに関する演算結果を供給するスイッチ型結合構造と対照的である。
【0101】
図15Aはスイッチ型結合構造によるビット・セルのブロック図を図示する一方、図15Bは非スイッチ型結合構造によるビット・セルのブロック図を図示する。両方の場合において、結合コンデンサは、まず、コンデンサが結合される出力ノードを短絡するなどしてリセットされる必要がある(コンデンサ上の電荷を除去する)。その後、演算動作f(.)がビット・セルにおいてローカルに実行される。これは2つのオペランドa及びbに対して例示されており、一方のオペランドはビット・セルに格納され、他方はビット・セル周辺から外部に供給される。ただし、一般的に、より多くのオペランドを有する構造が可能である。その後、演算動作は、サンプル・プレート上のスイッチを介して(スイッチ型結合構造)又は他のプレート上のスイッチを用いないで(非スイッチ型結合構造)のいずれかによって他のコンデンサと結合されるローカル・コンデンサのプレートを駆動する。有益なことに、図15Bの非スイッチ型結合構造は、ビット・セルにおける結合スイッチの必要性を回避し、さらに、MOSFETによって実装される場合に、スイッチがMOSFETによって可変量の電荷が吸収/解放されるようにでき(電圧レベルに依存)、それによってチャージ・ドメインの演算がわずかに損なわれるなどのチャージ・インジェクション・エラーの影響を低減する可能性を有する。
【0102】
図16は一実施例による非スイッチ型結合構造を有するビット・セル回路の回路図を図示する。なお、この回路の他の変形も本開示の実施例の文脈内において可能である。図16のビット・セル1600は、格納データW/Wb(MN1-3/MP1-2によって形成される6トランジスタ交差結合回路内)と入力データIA/IAbとの間のXNOR又はAND演算のいずれかの実装を可能とする。例えば、XNOR演算の場合、リセット後に、IA/IAbは相補的に駆動されることが可能であり、結果としてローカル・コンデンサの下方プレートがIA XNOR Wに従ってプル・アップ/ダウンされる。一方、AND演算の場合、リセット後にIAのみが駆動され(IAbは低いままとなる)、結果としてローカル・コンデンサの下方プレートがIA AND Wに従ってプル・アップ/ダウンされる。有益なことに、この構造は、結合コンデンサの全ての間で結果的に得られる直列プル・アップ/プル・ダウン充電構造に起因してコンデンサの合計の切換エネルギーが削減可能となるとともに、出力ノードにおける結合スイッチの削除に起因してスイッチ・チャージ・インジェクション・エラーの影響が低減可能となる。
【0103】
図17は、一実施例によるビット・セルのレイアウトの二方向インターリーブの回路図を図示する。特に、ビット・セルのインターリーブされたレイアウトは、コンデンサが2つ以上のセットに共に結合される場合のあるレイアウトに関する。図17は二方向のインターリーブの場合の例示を示すが、様々な実施例においてより高いインターリーブも企図される。さらに、コンデンサは列の側方に配置され、実際にはビット・セル・トランジスタ上に配置されてもよく、及び/又はビット・セル・トランジスタに隣接した他の場所に配置されてもよい。この構造の利点は、特に、向上した構成可能性である。すなわち、出力は2つの異なるノード上で供給されるため、結合A及びBは個別の演算を実装するために使用可能である。又は、結合A及びBは、例えば適切な周辺回路を介して異なるノード上の出力を適切に組み合わせることによって統合演算(joint computation)を実装するために使用可能である。
【0104】
なお、図示され本明細書において説明される機能は、例えば汎用コンピュータ、1つ以上の特定用途向け集積回路(ASIC:application specific integrated circuit)、又は他のあらゆる同等のハードウェアを使用してハードウェア又はソフトウェア及びハードウェアの組み合わせによって実装されてもよい。本明細書で説明するステップのいくつかは、例えば様々な方法ステップを実行するプロセッサと協働する回路として、ハードウェア内で実装されてもよいことが企図される。本明細書で説明される機能/要素の一部は、コンピュータ・プログラム製品として実装されてもよく、コンピュータ命令は、演算装置によって処理されたとき、本明細書で説明される方法又は技術が呼び出されるか、さもなければ提供されるように、演算装置の動作を適応する。本発明の方法を呼び出すための命令は、固定又は取り外し可能な媒体又はメモリなどの有形及び非一時的なコンピュータ判読可能な媒体に格納されてもよく、又は命令に従って動作する演算装置内のメモリ内に格納されてもよい。
【0105】
様々な図面に関して本明細書において説明されたシステム、方法、装置、機構、技術、及びその一部に対して様々な変形が行われてもよく、そのような変形は、本発明の範囲内にあると企図される。例えば、ステップの特定の順序又は機能要素の配置が、本明細書で説明される様々な実施例において提示されるが、様々な実施例の文脈内においてステップ又は機能要素の様々な他の順序/配置が利用されてもよい。さらに、実施例に対する変形が個別に説明される場合があるが、様々な実施例は、同時又は順番に複数の変形を使用してもよく、複合した変形等も使用してもよい。
【0106】
特定のシステム、装置、方法論、機構等が上記で説明するように開示したが、当業者には、上述した以外のより多くの変形が本明細書に記載の新規の概念から逸脱することなく可能であることが明らかであろう。したがって、新規の主題は本開示の要旨を除いて限定されるものではない。さらに、本開示を解釈する際に、全ての用語は、文脈と一致する最も広い可能な方法で解釈されるべきである。特に、「含む(comprise、comprising)」なる用語は、非排他的な方法で要素、構成要素、又はステップを言及するとして解釈されるべきであり、言及された要素、構成要素、又はステップは、明示的に言及されていない他の要素、構成要素、又はステップと共に存在、利用、又は結合されてもよいことを示す。さらに、本明細書に記載した参考文献は、本願の一部をなすものでもあり、完全に記載されているかのようにその全体が援用されている。
【0107】
様々な実施例の態様は、特許請求の範囲及び/又は以下の番号付きの項において特定される。
【0108】
1.少なくとも1つのビット・セル演算装置に結合されるビット・セル格納回路と、上記ビット・セル演算装置に結合されるビット・セル・コンデンサとを備え、上記ビット・セル・コンデンサは、上記ビット・セル・コンデンサと追加のコンデンサとの間にスイッチを設けることなく、1つ以上の追加のコンデンサにさらに結合されるビット・セル回路構成。
【0109】
2.上記ビット・セル・コンデンサの陰極プレートは、上記ビット・セル演算装置に結合される、第1項に記載のビット・セル回路構成。
【0110】
3.上記ビット・セル・コンデンサの陽極プレートは、上記追加のコンデンサに結合される、第1項に記載のビット・セル回路構成。
【0111】
4.上記ビット・セル演算装置は、2つのオペランドによって演算動作を実行するように構成される、第1項に記載のビット・セル回路構成。
【0112】
5.図11によって図示されるようなビット・セル回路構成。
【0113】
6.上記構成によって、格納データと入力データとの間でXNOR又はAND演算の実装が可能となる、第5項に記載のビット・セル回路構成。
【0114】
7.上記ビット・セル・コンデンサは、ともに少なくとも2セットになるように結合される、第1項の少なくとも2つのビット・セル構成のためのインターリーブ・レイアウト。
【0115】
8.上記結合されたビット・セル・コンデンサのセットは、1つ以上のビット・セル・トランジスタの上に配置される、第7項に記載のインターリーブ・レイアウト。
【0116】
9.ローカル・コンデンサの1つのプレートを駆動し、他のビット・セル・コンデンサへの結合は他方のプレートで実現される、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セル。
【0117】
10.格納データと入力データとの間でXNOR演算又はAND演算を実装できるチャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セル。
【0118】
11.ビット・セル・コンデンサは、複数の異なるセットになるように結合される、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セルのためのインターリーブ・レイアウト。
【0119】
12.ビット・セル・コンデンサが複数の異なるセットになるように結合されることによって、X方向のインターリーブに対してXセット存在し、ただし、Xは1より大きい整数である、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セルのためのインターリーブ・レイアウト。
【0120】
13.上記結合されたコンデンサの異なるセットは、上記ビット・セル・トランジスタの上に配置される、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セルのためのレイアウト。
【0121】
14.ビット・セルの格納データと1-b入力信号との間でチャージ・ドメイン演算を実行するように構成された乗算ビット・セル(M-BC)。
【0122】
15.上記チャージ・ドメイン演算を実行するために1つ以上のNMOSトランジスタが利用される、第14項に記載のM-BC。
【0123】
16.上記ビット・セルの上に配置された金属構造であるコンデンサをさらに備える、第14項に記載のM-BC。
【0124】
17.上記M-BCは論理演算を実装するように構成される、第14項に記載のM-BC。
【0125】
18.上記論理演算は、XNOR演算、NAND演算、AND演算、及び他の論理演算を含む、第17項に記載のM-BC。
【0126】
19.図12に図示されるようなレイアウトをさらに備える、第14項に記載のM-BC。
【0127】
20.6Tセルの拡張レイアウトをさらに備える、第14項に記載のM-BC。
【0128】
21.正規のポリ構造を有するトランジスタをさらに備える、第20項に記載のM-BC。
【0129】
22.図13に図示するようなレイアウトをさらに備える、第14項に記載のM-BC。
【0130】
本発明の教示を組み込んだ様々な実施例を本明細書に詳細に図示及び説明したが、当業者は、これらの教示を依然として組み込んだ多くの他の変形実施例を容易に考え出すことが可能である。したがって、上記は本発明の様々な実施例に関するが、本発明の他及びさらなる実施例は、その基本的な範囲から逸脱することなく考え出され得る。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10
図11
図12
図13
図14A
図14B
図15
図16