(57)【要約】  様々な実施例は、プログラミング可能又は事前にプログラミングされたイン・メモリ・コンピューティング動作を提供するためのシステム、方法、アーキテクチャ、機構又は装置を含む。イン・メモリ・コンピューティング・アーキテクチャは、超並列のビット単位の入力信号、複数のＣＩＭチャンネル出力信号を形成するために受信データ・ワードのシーケンスを再シェーピングし、それによってマルチ・ビットの出力ワードのシーケンスを供給し、それによってマルチ・ビットの出力ワードのシーケンスを供給するように構成される再シェーピング・バッファと、ＣＩＭアレイに、シングル・ビットの内部回路と信号とを使用して入力信号及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成される制御回路と、マルチ・ビットの出力ワードのシーケンスをコンピューティング結果として供給するように構成されるニア・メモリ・コンピューティング・パスとを備える。
2021527886.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュート・イン・メモリ（ＣＩＭ）アレイ次元を介して超並列のビット単位の入力信号を受信し、第２のＣＩＭアレイ次元を介して１つ以上の蓄積信号を受信するように構成されるビット・セルのＣＩＭアレイであって、共通の蓄積信号と関連付けられた複数のビット・セルの各々は、それぞれの出力信号を供給するように構成されるそれぞれのＣＩＭチャンネルを形成する、ＣＩＭアレイと、
前記ＣＩＭアレイに、シングル・ビットの内部回路及び信号を用いて前記入力信号及び前記蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成される制御回路と
を備える、イン・メモリ・コンピューティング・アーキテクチャ。
【請求項２】
前記超並列のビット単位の入力信号を形成するために受信データ・ワードのシーケンスを再シェーピングするように構成される再シェーピング・バッファをさらに備える、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項３】
前記複数のＣＩＭチャンネル出力信号を処理することによって、マルチ・ビットの出力ワードのシーケンスを供給するように構成されるアナログ・デジタル変換器（ＡＤＣ）回路をさらに備える、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項４】
前記マルチ・ビットの出力ワードのシーケンスをコンピューティング結果として供給するように構成されるニア・メモリ・コンピューティング・パスをさらに備える、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項５】
前記ＡＤＣ回路は、ＣＩＭチャンネル毎に、前記ＣＩＭチャンネル出力信号をデジタル化するように構成されるそれぞれのＡＤＣと、前記デジタル化されたＣＩＭチャンネル出力信号に対してそれぞれのバイナリ重み付けをかけることによって、マルチ・ビットの出力ワードのそれぞれの部分を形成するように構成されるそれぞれのシフト・レジスタとを含む、請求項３に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項６】
前記ＡＤＣ回路は、前記ＣＩＭチャンネルの複数のサブセット毎に、ＣＩＭチャンネルのそれぞれのサブセットの前記ＣＩＭチャンネル出力信号の重み付けされたアナログ加算をデジタル化することによって、マルチ・ビットの出力ワードのそれぞれの部分を形成するように構成されるそれぞれのＡＤＣを含む、請求項３に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項７】
前記マルチ・ビット・コンピューティング動作が前記超並列のビット単位の入力信号のゼロ値化要素を処理することを回避するように、前記超並列のビット単位の入力信号のゼロ値化要素をマスクするように構成されるスパーシティ・コントローラをさらに備える、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項８】
前記入力信号及び前記蓄積信号は、前記メモリ内で既存の信号と結合される、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項９】
前記入力信号及び前記蓄積信号は、前記メモリ内で既存の信号から分離される、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１０】
各ＡＤＣ及びそれぞれの蓄積信号は、イン・メモリ・コンピューティング・チャンネルを形成する、請求項３に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１１】
前記ニア・メモリ・コンピューティング・パスは、デジタル・バレル・シフタと、マルチプレクサと、アキュムレータと、ルック・アップ・テーブルと、非線形関数要素とのうちの１つ以上を含む、請求項４に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１２】
前記ＣＩＭＡの前記マルチ・ビット・コンピューティング動作は、ビット・パラレル／ビット・シリアル（ＢＰＢＳ）コンピューティングを含み、
前記ビット・パラレル・コンピューティングは、
それぞれのイン・メモリ・コンピューティング・チャンネルに異なる行列要素ビットをロードし、
それぞれのバレル・シフタを使用して、前記コンピューティング・チャンネルからのデジタル化出力をバレル・シフトすることによって、対応するビット重み付けを実装し、
それぞれのアキュムレータを使用して、マルチ・ビットの行列要素演算結果を生成するために前記コンピューティング・チャンネルの全てに対してデジタル蓄積を実行すること
を含み、
前記ビット・シリアル・コンピューティングは、
前記格納された行列要素ビットに対してベクトル要素の各ビットを個別に適用し、各結果として得られたデジタル化出力を格納し、
それぞれのバレル・シフタを使用して、後続の入力ベクトル・ビットに対応する格納デジタル化出力によるデジタル蓄積の前に、各ベクトル要素ビットと関連付けられた前記格納デジタル化出力をバレル・シフトすること
を含む、請求項１０に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１３】
前記ニア・メモリ・コンピューティング・パスは、前記イン・メモリ・コンピューティング・アーキテクチャと物理的に並べられて、前記イン・メモリ・コンピューティング・アーキテクチャを介したスループットを高める、請求項４に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１４】
前記イン・メモリ・コンピューティング・アーキテクチャの演算動作を制御するように構成される１つ以上の構成可能な有限状態機械（ＦＳＭ）をさらに備える、請求項１に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１５】
前記演算動作を制御する前記ＦＳＭは、複数のイン・メモリ・コンピューティング・チャンネルのうちのいくつか又は全てによって使用される高並列のコンピューティング・ハードウェアを制御するように構成される、請求項１４に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１６】
前記ＦＳＭは、ローカル・メモリにロードされたソフトウェア命令に従って演算を制御する、請求項１４に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１７】
前記再シェーピング・バッファは、第１の精度の外部デジタル・ワードを高次元入力ベクトルに変換するように構成される、請求項２に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１８】
前記再シェーピング・バッファは、前記ＣＩＭＡに対して、前記入力ベクトル要素のビットを順序立って並列に供給するように構成される、請求項２に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項１９】
前記再シェーピング・バッファは、整列入力データ（ａｌｉｇｎｍｅｎｔ  ｉｎｐｕｔ  ｄａｔａ）がイン・メモリ・コンピューティング動作の所望の利用及びスループットを確実にするように構成される、請求項２に記載のイン・メモリ・コンピューティング・アーキテクチャ。
【請求項２０】
前記再シェーピング・バッファは、畳み込みニューラル・ネットワーク動作に従って入力データの再利用及びシフトを可能にするように構成される、請求項２に記載のイン・メモリ・アーキテクチャ。
【請求項２１】
ビット・セルの前記（ＣＩＭ）アレイにおける各ビット・セルは、
少なくとも１つのビット・セル演算装置に結合されたビット・セル格納回路と、
前記ビット・セル演算装置に結合されたビット・セル・コンデンサであって、前記ビット・セル・コンデンサは、前記ビット・セル・コンデンサ間にスイッチを設けることなく、他のビット・セル・コンデンサに対応する１つ以上の追加コンデンサにさらに結合される、ビット・セル・コンデンサと
を含むビット・セル回路構成を有する、請求項１に記載のアーキテクチャ。
【請求項２２】
前記ビット・セル回路構成は、前記ビット・セル演算装置に結合された前記ビット・セル・コンデンサの陰極プレートをさらに含む、請求項２１に記載のイン・メモリ・アーキテクチャ。
【請求項２３】
前記ビット・セル回路構成は、前記追加コンデンサに結合された前記ビット・セル・コンデンサの陽極プレートをさらに含む、請求項２１に記載のイン・メモリ・アーキテクチャ。
【請求項２４】
前記ビット・セル回路構成は、２つのオペランドによって演算動作を実行するように構成される前記ビット・セル演算装置をさらに含む、請求項２１に記載のイン・メモリ・アーキテクチャ。
【請求項２５】
前記ビット・セル回路構成は、格納データと入力データとの間のＸＮＯＲ演算又はＡＮＤ演算の実装を可能とする、請求項２１に記載のイン・メモリ・アーキテクチャ。
【請求項２６】
ビット・セル回路構成は、それぞれのビット・セル・コンデンサが少なくとも２つの個別セットになるように共に結合されることによって、対応する個別の演算を可能にする少なくとも２つのビット・セルのためのインターリーブ・レイアウトを含む、請求項２１に記載のイン・メモリ・アーキテクチャ。
【請求項２７】
結合されたビット・セル・コンデンサの前記セットは、１つ以上のビット・セル・トランジスタの上に配置される、請求項２４に記載のイン・メモリ・アーキテクチャ。
【請求項２８】
前記ビット・セルは、それぞれのローカル・コンデンサの１つのプレートを駆動するチャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルを含み、他のビット・セル・コンデンサとの結合は、前記それぞれのローカル・コンデンサの他のプレートにおいて実現される、請求項２６に記載のイン・メモリ・アーキテクチャ。
【請求項２９】
前記チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルは、格納データと入力データとの間でＸＮＯＲ演算又はＡＮＤ演算を実装するように構成される、請求項２６に記載のイン・メモリ・アーキテクチャ。
【請求項３０】
ビット・セル・コンデンサが１つ以上の周辺スイッチを介して選択的に結合されるように構成される複数の異なるセットになるように結合されるように、チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルのインターリーブ・レイアウトが提供される、請求項２６に記載のイン・メモリ・アーキテクチャ。
【請求項３１】
ビット・セル・コンデンサが複数の異なるセットとなるように結合されることによって、Ｘ方向インターリーブに対してＸセットが存在し、Ｘは１より大きい整数であるように、チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルのインターリーブ・レイアウトが提供される、請求項２６に記載のイン・メモリ・アーキテクチャ。
【請求項３２】
結合されたコンデンサの異なるセットが前記ビット・セル・トランジスタの上に配置されるように、チャージ・ドメインのイン・メモリ・コンピューティング・ビット・セルのレイアウトが提供される、請求項２６に記載のイン・メモリ・アーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１８年６月１８日に出願された米国仮特許出願第６２／６８６，２９６号、２０１８年７月２４日に出願された米国仮特許出願第６２／７０２，６２９号、２０１８年１１月２日に出願された米国仮特許出願第６２／７５４，８０５号、及び２０１８年１１月７日に出願された米国仮特許出願第６２／７５６，９５１号の利益を主張し、これらの米国仮特許出願は、その全体が参照により本明細書に組み込まれる。
【０００２】
本発明は、イン・メモリ・コンピューティング（in-memory computing）及び行列ベクトル積（matrix-vector multiplication）の分野に関する。
【背景技術】
【０００３】
近年、チャージ・ドメイン・イン・メモリ・コンピューティング（Charge-domain in-memory computing）が、イン・メモリ・コンピューティングを実行する強固かつスケーラブルな方法として出現してきた。ここで、メモリ・ビット・セル内の演算動作は、典型的にはコンデンサを介した電圧電荷変換を用いて電荷としてその結果を供給する。したがって、ビット・セル回路は、所与のビット・セルにおけるローカル・コンデンサの適切な切換を含み、そのローカル・コンデンサは、他のビット・セル・コンデンサとも適切に結合されて、結合されたビット・セルの全体における集約された演算結果を生成する。イン・メモリ・コンピューティングは、行列ベクトル積を実装するのによく適しており、行列要素はメモリ・アレイに格納され、ベクトル要素はメモリ・アレイ全体において並列してブロードキャストされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】仮特許出願第６２／５５５，９５９号、「Ａｎａｌｏｇ  Ｓｗｉｔｃｈｅｄ−Ｃａｐａｃｉｔｏｒ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ」、２０１７年９月８日出願
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術における様々な欠点が、プログラミング可能な又は事前にプログラミングされたイン・メモリ・コンピューティング動作を提供するシステム、方法、アーキテクチャ、機構、又は装置によって対処される。
【課題を解決するための手段】
【０００６】
一実施例は、超並列のビット単位の入力信号を形成するために受信データ・ワードのシーケンスを再シェーピングするように構成される再シェーピング・バッファ（ｒｅｓｈａｐｉｎｇ  ｂｕｆｆｅｒ）と、第１のコンピュート・イン・メモリ（ＣＩＭ）アレイ次元を介して上記の超並列のビット単位の入力信号を受信し、第２のＣＩＭアレイ次元を介して１つ以上の蓄積信号を受信するように構成されるビット・セルのＣＩＭアレイであって、共通の蓄積信号と関連付けられた複数のビット・セルの各々は、それぞれの出力信号を供給するように構成されるそれぞれのＣＩＭチャンネルを形成する、ＣＩＭアレイと、複数のＣＩＭチャンネル出力信号を処理することによってマルチ・ビットの出力ワードのシーケンスを供給するように構成されるアナログ・デジタル変換器（ＡＤＣ）回路と、ＣＩＭアレイに、シングル・ビットの内部回路及び信号を用いて上記入力及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成される制御回路と、マルチ・ビットの出力ワードのシーケンスをコンピューティング結果として供給するように構成されるニア・メモリ・コンピューティング・パスと、を備える、イン・メモリ・コンピューティング・アーキテクチャを提供する。
【０００７】
本発明のさらなる目的、利点及び新規の特徴は、以下の説明において部分的に記載され、部分的には以下の説明の検討時に当業者にとって明らかとなり、又は本発明の実行によって学習され得る。本発明の目的及び利点は、添付の特許請求の範囲において特に示された手段及び組み合わせによって実現及び達成され得る。
【０００８】
本明細書に組み込まれ、本明細書の一部を構成する添付図面は、本発明の実施例を図示し、上記の本発明の全体的な説明とともに、さらに下記の実施例の詳細な説明とともに、本発明の原理を説明する役割を果たす。
【図面の簡単な説明】
【０００９】
【図１】イン・メモリ・コンピューティング・アーキテクチャの典型的な構造を図示する図である。
【図２】一実施例による例示のアーキテクチャの高レベル・ブロック図である。
【図３】図２のアーキテクチャにおける使用に適した例示のコンピュート・イン・メモリ・ユニット（ＣＩＭＵ）の高レベル・ブロック図である。
【図４】一実施例による、図２のアーキテクチャにおける使用に適した入力活性化ベクトル再シェーピング・バッファ（ＩＡ  ＢＵＦＦ：Ｉｎｐｕｔ−Ａｃｔｉｖａｔｉｏｎ  Ｖｅｃｔｏｒ  Ｒｅｓｈａｐｉｎｇ  Ｂｕｆｆｅｒ）の高レベル・ブロック図を図示する。
【図５】一実施例による、図２のアーキテクチャにおける使用に適したＣＩＭＡ読出／書込バッファの高レベル・ブロック図である。
【図６】一実施例による、図２のアーキテクチャにおける使用に適したニア・メモリ・データパス（ＮＭＤ：Ｎｅａｒ−Ｍｅｍｏｒｙ  Ｄａｔａｐａｔｈ）モジュールの高レベル・ブロック図である。
【図７】一実施例による、図２のアーキテクチャにおける使用に適した直接記憶アクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）モジュールの高レベル・ブロック図である。
【図８Ａ】図２のアーキテクチャにおける使用に適したＣＩＭＡチャンネルのデジタル化／重み付けの異なる実施例の高レベル・ブロック図である。
【図８Ｂ】図２のアーキテクチャにおける使用に適したＣＩＭＡチャンネルのデジタル化／重み付けの異なる実施例の高レベル・ブロック図である。
【図９】一実施例による方法のフロー図である。
【図１０】乗算ビット・セル（ｍｕｌｔｉｐｌｙｉｎｇ  ｂｉｔ−ｃｅｌｌ）の回路図である。
【図１１】ＸＮＯＲ関数を実行するように構成された３つのＭ−ＢＣの回路図である。
【図１２】一実施例によるＭ−ＢＣの回路図である。
【図１３】図１３のＭ−ＢＣの例示のＩＣを図示する図である。
【図１４Ａ】スイッチ型結合構造を有するビット・セルのブロック図である。
【図１４Ｂ】非スイッチ型結合構造を有するビット・セルのブロック図である。
【図１５】一実施例による非スイッチ型結合構造を有するビット・セル回路の回路図である。
【図１６】一実施例によるビット・セルのレイアウトの二方向インターリーブの回路図である。
【発明を実施するための形態】
【００１０】
添付図面は、必ずしも一定の縮尺で図示したものではなく、本発明の基本原理を説明する様々な特徴の何らかの簡略化された表現を示すことを理解されたい。例えば、様々な図示構成要素の特定の寸法、方向、配置、及び形状を含む、本明細書において開示されるような一連の動作の特定の設計上の特徴は、特定の意図された適用及び使用環境によって部分的に判断されるであろう。記載の実施例の特定の特徴は、可視化及び明確な理解を容易にするために、他の特徴と比較して拡大又は歪曲されている。特に、明確化及び説明のために、薄い特徴が濃く示されている場合がある。
【００１１】
本発明をさらに詳細に説明する前に、本発明は記載の特定の実施例に限定されるものではなく、したがって、当然ながら、変化し得ることを理解されたい。また、本発明の範囲は、添付の特許請求の範囲によってのみ限定されるものであるため、本明細書において使用される用語は、特定の実施例を説明することのみを目的としており、限定を意図するものではないことを理解されたい。
【００１２】
値の範囲が与えられている場合、その範囲の上限と下限との間の、その文脈が明確に指示しない限り最小目盛りの１０分の１までの各介在値及び定められる範囲における他の定められる値又は介在値は本発明内に包含されることが理解される。これらのより小さな範囲の上限及び下限はその小さな範囲に独立して含まれ得るものであり、定められた範囲の具体的に除外される限度に従って、同様に本発明内に包含されるものである。定められた範囲が、上記の限度の一方又は両方を含む場合、それらの含まれる限度の一方又は両方を除く範囲も同様に本発明に含まれる。
【００１３】
定義されない限り、本明細書において使用される全ての技術用語及び科学用語は、本発明が属する当業者によって一般的に理解されるのと同様の意味を有する。本明細書に記載のものと同様又は同等のあらゆる方法及び材料が本発明の実施又は試験においても使用可能であるが、本明細書では限定数の例示の方法及び材料が記載される。なお、本明細書及び添付の特許請求の範囲において使用されるように、文脈が明確に指示しない限り、単数形の「ある（ａ）」、「１つの（ａｎ）」、及び「その（ｔｈｅ）」は複数形の参照語を含む。
【００１４】
開示の実施例は、最新ＶＬＳＩ実装のための高効率の線形代数コンピューティング・アーキテクチャのプログラミング性を可能とするシステム及び方法を含む。本明細書で開示するコンピューティング・アーキテクチャは「イン・メモリ・コンピューティング」と呼ばれ、このアーキテクチャのプログラミング性によって、特に機械学習及び人工知能のための適用の範囲にわたって広く使用されることが可能となる。開示のアプローチはイン・メモリ・コンピューティング・アレイに関する構成可能性の特徴の範囲を取り入れており、それによって、同様に、現在では機械学習及び人工知能の適用の広い範囲に対するエネルギー及びスループットを扱うために、プログラミング可能なプラットフォームにおいて統合されることが可能となる。
【００１５】
線形代数演算、特に行列ベクトル積は、特に機械学習（ＭＬ：ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ）及び人工知能（ＡＩ：ａｒｔｉｆｉｃｉａｌ  ｉｎｔｅｌｌｉｇｅｎｃｅ）からの新しい作業負荷において非常に顕著となってきた。その行列とベクトルとの次元は非常に大きく成り得ることが多い（通常、＞１００）。上記の演算で要素が再利用される方法に起因して、要素は埋込型又はオフチップのメモリ（格納されなければならない要素の数に依存する）に通常格納される。最新ＶＬＳＩ技術における実装は、事実上、そのようなメモリからのデータへのアクセスのエネルギー及び遅延がデータに対する実際の演算を実質的に上回るということを示してきた。これは、従来のアクセラレータによって達成可能であったエネルギー／遅延の削減を制限しており、それによってメモリと演算を分離し、イン・メモリ・コンピューティングのパラダイムの動機付けとなってきた。イン・メモリ・コンピューティング・システムの文脈内において、生データはメモリからアクセスされないが、生データの多くのビット上での演算結果はアクセスされ、それによってアクセスのエネルギー及び遅延を償却する。
【００１６】
開示のシステム、方法、及びその一部によって、最新ＶＬＳＩ実装等のための、さらには集積回路実装につながる高効率の線形代数コンピューティング・アーキテクチャの構成可能性及びプログラミング性が可能となる。本明細書において開示されるコンピューティング・アーキテクチャは、広くは「イン・メモリ・コンピューティング」と呼ばれる場合があり、このアーキテクチャのプログラミング性によって、機械学習、人工知能、及びその他の適用において使用されるような行列ベクトル演算等を含む適用範囲にわたる幅広い使用が可能になる。様々な実施例において、本開示のシステム、方法、及びその一部は、並列及び直列動作を用いるハイブリッド・アナログ／デジタル・コンピューティング方法を使用してイン・メモリ・コンピューティング・アーキテクチャの構成可能性及びプログラミング性を可能とする。
【００１７】
開示のアプローチは演算実行の途中で特定の形状の量子化ノイズは発生させ得るが、これは本明細書で開示の数多くのアーキテクチャに関する特徴によって制御され、場合によっては、標準的な固定小数点精度のコンピューティングにあるような量子化ノイズを示す動作が可能である。
【００１８】
開示のシステム及びその一部は集積回路として実装され、その様々な特徴は、Ｖｅｒｉｌｏｇ／トランジスタ・レベルのシミュレーションを用いてシミュレーションされるのと同様に、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）として実装された。
【００１９】
開示のアプローチは、本明細書において完全に記載されているかのようにその全体が参照により組み込まれる、２０１７年９月８日に出願された仮特許出願第６２／５５５，９５９号、「Ａｎａｌｏｇ  Ｓｗｉｔｃｈｅｄ−Ｃａｐａｃｉｔｏｒ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ」において開示されるアーキテクチャを含むイン・メモリ・コンピューティング・アーキテクチャの範囲に対して適用され得る。
【００２０】
開示のアプローチは、線形代数演算に対する高エネルギー効率のアプローチであるとされているイン・メモリ・コンピューティングの構成可能性及びプログラミング性を可能とする。そのような構成及びプログラミング性は、開示のアーキテクチャの幅広い適用範囲における使用を可能とする。
【００２１】
さらなる開示の実施例は、マルチ・ビット・イン・メモリ・コンピューティングに対してビット・パラレル／ビット・シリアル・アプローチを提供する。特に、メモリ・ビット・セルが１−ｂオペランドに対して演算を実行するイン・メモリ・コンピューティング・アーキテクチャが本明細書で開示され、一方のオペランドの複数のビットが並列ビット・セルにマッピングされるビット・パラレル／ビット・シリアル（ＢＰ／ＢＳ：ｂｉｔ−ｐａｒａｌｌｅｌ／ｂｉｔ−ｓｅｒｉａｌ）法を使用してマルチ・ビットのオペランドに対する動作を可能とするようにハードウェアが拡張され、他方のオペランドの複数のビットが連続して入力される。開示のアプローチは、時間及び空間において異なるビット・セル出力演算にわたって可能な、演算出力ビット・セルがデジタル化された後にさらなる演算へ供給されるイン・メモリ・コンピューティングと、デジタル化された出力に対してビット・パラレル／ビット・シリアル（ＢＰ／ＢＳ）法でマルチ・ビット・オペランド演算が実行されるイン・メモリ・コンピューティングと、ＢＰ／ＢＳアプローチが例えばビット・セルによるビット単位のＡＮＤ演算を用いることによって２の補数表現を使用するイン・メモリ・コンピューティングと、ＢＰ／ＢＳアプローチがビット・セルによるＸＮＯＲ演算の使用を可能にするために、例えば１／０ビットが数学的に＋１／−１の値を有するようにとられる異なる数表現を使用するイン・メモリ・コンピューティングとを考慮する。
【００２２】
構成可能なイン・メモリ・コンピューティング・エンジン及びプラットフォーム
様々な実施例は、実行可能な適用への拡大のために必要とされるプログラミング性と仮想化とを可能にするために、イン・メモリ・コンピューティング・アクセラレータに関する構成可能性及びハードウェア・サポートを統合することに関する。一般に、イン・メモリ・コンピューティングは行列ベクトル積を実装し、行列要素はメモリ・アレイに格納され、ベクトル要素はメモリ・アレイ上に並列にブロードキャストされる。実施例のいくつかの態様は、そのようなアーキテクチャのプログラミング性と構成可能性とを可能にすることに関する。
【００２３】
イン・メモリ・コンピューティングは、通常、行列要素、ベクトル要素、又はその両方のための１−ｂ表現を含む。これは、マルチ・ビット演算に必要とされるビット間の異なるバイナリ重み付け結合を提供することなく、メモリが、並列で均質な方法でブロードキャストが行われる独立したビット・セルにデータを格納するためである。本発明において、マルチ・ビット行列及びベクトル要素への拡張は、ビット・パラレル／ビット・シリアル（ＢＰＢＳ）法で実現される。
【００２４】
行列−ベクトル積に関わることが多い一般的な演算を可能にするために、高構成可能／プログラミング可能なニア・メモリ・コンピューティング・データ・パスが含まれる。この両方は、イン・メモリ・コンピューティングのビット単位の演算からマルチ・ビット演算に拡張するために必要とされる演算を可能とし、汎用性のため、これはマルチ・ビット動作をサポートし、イン・メモリ・コンピューティング固有の１−ｂ表現に制約されなくなる。プログラミング可能／構成可能でマルチ・ビットのコンピューティングはデジタル・ドメインではより効率的であるため、本発明においてアナログ・デジタル変換はイン・メモリ・コンピューティングの後に実行され、特定の実施例において、他の多重化の比率も使用可能であるが、構成可能なデータ・パスは８のＡＤＣ／イン・メモリ・コンピューティング・チャンネル間で多重化される。これは、本実施例において８−ｂオペランドまでのサポートが提供される場合に、マルチ・ビットの行列要素サポートに対して用いられたＢＰＢＳ法とも協調する。
【００２５】
入力ベクトルのスパーシティは多くの線形代数適用において一般的であるため、本発明は、エネルギーに比例したスパーシティ制御を可能とするためのサポートを取り込む。これは、ゼロ値化要素に相当する、入力ベクトルからのビットのブロードキャストをマスキングすることによって実現される（そのようなマスキングはビット・シリアル・プロセスにおいて全ビットに対して行われる）。これは、ブロードキャスト・エネルギーとともに、メモリ・アレイ内の演算エネルギーも節約する。
【００２６】
イン・メモリ・コンピューティングに対して内部のビット単位の演算アーキテクチャ及び典型的なマイクロプロセッサの外部のデジタル・ワード・アーキテクチャを想定すると、データ再シェーピング・ハードウェアが、入力ベクトルが供給される際に使用される演算インタフェースと、行列要素が書き込まれ読み出される際に使用されるメモリ・インタフェースとの両方のために使用される。
【００２７】
図１は、イン・メモリ・コンピューティング・アーキテクチャの典型的な構造を図示する。メモリ・アレイ（標準的なビット・セル又は変形のビット・セルに基づく場合がある）から構成されるとすると、イン・メモリ・コンピューティングは、信号の２つの追加の「直交」セット、すなわち（１）入力ライン及び（２）蓄積ラインを含む。図１を参照すると、ビット・セルの二次元のアレイが図示され、複数のイン・メモリ・コンピューティング・チャンネル１１０のそれぞれは、ビット・セルのそれぞれの列を含み、チャンネル毎のビット・セルのそれぞれは共通の蓄積ライン及びビット・ライン（列）と、それぞれの入力ライン及びワードライン（行）と関連付けられる。なお、本明細書において、信号の列及び行は、図１に図示されるビット・セルの二次元アレイなどのビット・セルのアレイの文脈内の行／列関係を単純に示すために互いに対して「直交」していると記載される。本明細書で使用される「直交」という用語は、特定の幾何学的な関係を伝えることを意図したものではない。
【００２８】
信号の入力／ビット及び蓄積／ビットのセットはメモリ内の既存の信号（例えばワードライン、ビット・ライン）と物理的に結合されてもよく、分離される場合もある。行列ベクトル積を実装するために、行列要素はまずメモリ・セルにロードされる。その後、複数の入力ベクトル要素（全ての可能性もある）は入力ラインを介して一度に適用される。これによって、典型的に何らかの形態の乗算であるローカルな演算動作をメモリ・ビット・セルのそれぞれにおいて発生させる。その後、この演算動作の結果は、共有される蓄積ライン上に駆動される。このように、蓄積ラインは、入力ベクトル要素によって活性化される複数のビット・セル上の演算結果を表す。これは、ビット・セルが一度に１つずつビット・ラインを介してアクセスされ、単一のワードラインによって活性化される標準的なメモリ・アクセスとは対照的である。
【００２９】
上述したようなイン・メモリ・コンピューティングは、数多くの重要な属性を有する。第１に、演算は通常アナログである。これは、メモリ及びビット・セルの制約された構造は、単純なデジタルのスイッチ型抽象によって実現するよりもリッチな演算モデルを必要とするためである。第２に、ビット・セルにおけるローカルな動作は、通常、ビット・セルに格納される１−ｂ表現を用いた演算を含む。これは、標準的なメモリ・アレイにおけるビット・セルは、あらゆるバイナリ重み付けの方法によって互いに結合せず、そのような結合は末端からのビット・セルのアクセス／読出しの方法によって実現される必要があるためである。以下において、本発明において提案されるイン・メモリ・コンピューティングに関する拡張を説明する。
【００３０】
ニア・メモリ及びマルチ・ビット演算への拡張
イン・メモリ・コンピューティングは従来のデジタル・アクセラレーションでは対応できない方法で行列ベクトル積を扱う可能性を有する一方、通常の演算パイプラインは、行列ベクトル積に関わる他の動作の範囲を含み得る。通常、そのような動作は従来のデジタル・アクセラレーションによって良好に扱われるが、それにも関わらず、適切なアーキテクチャにおいて、並列性、高スループット（したがって高通信帯域幅への必要性）、及びイン・メモリ・コンピューティングに関連した一般的な演算パターンを扱うために、そのようなアクセラレーション・ハードウェアをイン・メモリ・コンピューティング・ハードウェアの近くに配置することは高い価値を有する場合がある。関連する動作の大部分をデジタル・ドメインで実行されることが好ましいため、ＡＤＣによるアナログ・デジタル変換はイン・メモリ・コンピューティング蓄積ラインのそれぞれの後に含まれ、したがってイン・メモリ・コンピューティング・チャンネルと呼ぶ。最重要課題は、ＡＤＣハードウェアを各イン・メモリ・コンピューティング・チャンネルのピッチに組み込むことであるが、本発明でとられる適切なレイアウトのアプローチはこれを可能にする。
【００３１】
各演算チャンネルの後にＡＤＣを組み込むことによって、それぞれビット・パラレル／ビット・シリアル（ＢＰＢＳ）演算を介した、マルチ・ビット行列及びベクトル要素をサポートするためのイン・メモリ・コンピューティングを拡張する効率的な方法が可能となる。ビット・パラレル演算は、異なるイン・メモリ・コンピューティング列において異なる行列要素ビットをロードすることを含む。その異なる列からのＡＤＣ出力は、その後、対応するビット重み付けを表すように適切にビット・シフトされ、マルチ・ビット行列要素演算結果を得るように列の全てにおけるデジタル蓄積が実行される。一方、ビット・シリアル演算は、後続の入力ベクトル・ビットに対応する次の出力によるデジタル蓄積の前に、一度に１つずつベクトル要素の各ビットを適用し、その都度ＡＤＣ出力を格納し、格納された出力を適切にビット・シフトすることを含む。そのようなアナログとデジタルの演算の混合を可能とするＢＰＢＳアプローチは、従来のメモリ動作に関連するアクセス・コストを克服しながら、デジタル（マルチ・ビット）の高効率高精度の方式とともにアナログ（１−ｂ）の高効率低精度の方式を活用するため、高効率となっている。
【００３２】
ニア・メモリ・コンピューティング・ハードウェアの範囲も考えられるが、本発明の本実施例に組み込まれたハードウェアの詳細を以下に説明する。上記のマルチ・ビット・デジタル・ハードウェアの物理的レイアウトを容易にするため、各ニア・メモリ・コンピューティング・チャンネルに８つのイン・メモリ・コンピューティング・チャンネルが多重化される。我々は、これによってイン・メモリ・コンピューティングの高並列動作がデジタルのニア・メモリ・コンピューティングの高周波数動作とスループットを一致させることができる（高並列アナログ・イン・メモリ・コンピューティングは、デジタル・ニア・メモリ・コンピューティングよりも低いクロック周波数で動作する）ことに着目した。したがって、各ニア・メモリ・コンピューティング・チャンネルは、デジタル・バレル・シフタ、乗算器、アキュムレータとともに、ルック・アップ・テーブル（ＬＵＴ）、固定非線形関数実装を含む。さらに、ニア・メモリ・コンピューティング・ハードウェアに関連する構成可能な有限状態機械（ＦＳＭ：ｆｉｎｉｔｅ−ｓｔａｔｅ  ｍａｃｈｉｎｅ）は、ハードウェア全体の演算を制御するために組み込まれる。
【００３３】
入力インターフェーシング及びビット・スケーラビリティ制御
イン・メモリ・コンピューティングをプログラミング可能なマイクロプロセッサと統合するために、内部のビット単位の動作及び表現は、典型的なマイクロプロセッサのアーキテクチャで用いられる外部のマルチ・ビット表現と適切にインタフェース接続される必要がある。したがって、データ再シェーピング・バッファは入力ベクトル・インタフェースとメモリ読出／書込インタフェースとの両方に含まれ、それを介して行列要素がメモリ・アレイに格納される。本発明の実施例のために用いられる設計の詳細を以下に説明する。データ再シェーピング・バッファは、入力ベクトル要素のビット幅スケーラビリティを可能としながら、イン・メモリ・コンピューティング・ハードウェア、それと外部メモリとの間、さらに他のアーキテクチャ・ブロックへのデータ転送の最大帯域幅を維持する。このデータ再シェーピング・バッファは、入力ベクトルに対して入並列マルチ・ビット・データを要素毎に受信し全ベクトル要素に対して出並列シングル・ビット・データを供給するライン・バッファとしての役割を果たすレジスタ・ファイルからなる。
【００３４】
ワード単位／ビット単位のインターフェーシングに加えて、入力ベクトルに印加される畳み込み動作のためのハードウェア・サポートも含まれる。そのような動作は、畳み込みニューラル・ネットワーク（ＣＮＮ：ｃｏｎｖｏｌｕｔｉｏｎａｌ−ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）において顕著である。この場合、行列ベクトル積は、供給される必要のある新規のベクトル要素のサブセットのみとともに実行される（他の入力ベクトル要素はバッファに格納され、適切に単純にシフトされる）。これは、高スループットのイン・メモリ・コンピューティング・ハードウェアに対するデータを得るための帯域幅制約を軽減する。本発明の実施例において、マルチ・ビットの入力ベクトル要素の適切なビット・シリアル順序付けを実行しなければならない畳み込みサポート・ハードウェアは、その適切に読み出された出力が構成可能な畳み込みストライドのためのデータをシフトする特化バッファ内に実装される。
【００３５】
次元及びスパーシティ制御
プログラミング性のため、（１）行列／ベクトル次元は適用毎に可変であり得る、（２）多くの適用においてベクトルはスパースとなる、という２つのさらなる考慮すべき事項をハードウェアによって対応しなければならない。
【００３６】
次元について、適用において所望される次元レベルに対してのみエネルギーを消費するため、イン・メモリ・コンピューティング・ハードウェアはアレイのタイル部分をイネーブル／ディセーブルとする制御を組み入れることが多い。しかしながら、用いられるＢＰＢＳアプローチでは、入力ベクトル次元は演算エネルギー及びＳＮＲに対する重要な示唆を有する。ＳＮＲについて、各イン・メモリ・コンピューティング・チャンネルにおけるビット単位の演算を行う場合、各入力（入力ライン上で供給される）とビット・セルに格納されるデータとの間の演算が１ビット出力を生成すると想定すると、蓄積ライン上で可能な個別レベルの数はＮ＋１に等しい。ただしＮは入力ベクトル次元である。これは、ｌｏｇ２（Ｎ＋１）ビットＡＤＣが必要であることを示唆する。しかしながら、ＡＤＣはビット数によって強く拡大又は縮小するエネルギー・コストを有する。したがって、ＡＤＣエネルギーの相対的な寄与を削減するために、非常に大きいがＡＤＣにおいてｌｏｇ２（Ｎ＋１）ビットよりも小さなＮをサポートすることが有利である。これを行った結果は、演算動作の信号対量子化ノイズ比（ＳＱＮＲ：ｓｉｇｎａｌ−ｔｏ−ｑｕａｎｔｉｚａｔｉｏｎ−ｎｏｉｓｅ  ｒａｔｉｏ）が標準的な固定精度演算とは異なり、ＡＤＣビットの数に伴って低減されることである。したがって、変化する適用レベルの次元及びＳＱＮＲの要件をサポートするために、対応するエネルギー消費に伴って、構成可能な入力ベクトル次元に対するハードウェアのサポートが不可欠である。例えば、低減したＳＱＮＲが許容可能であれば、大次元の入力ベクトル・セグメントをサポートしなければならない。一方、高いＳＱＮＲを維持しなければならない場合、低次元の入力ベクトル・セグメントがサポートされなければならず、異なるイン・メモリ・コンピューティング・バンクから結合可能な複数の入力ベクトル・セグメントから内積結果が得られる（したがって、特に、標準的な固定精度動作と理想的に一致した演算を確実にするために、入力ベクトル次元はＡＤＣビットの数によって設定されたレベルまで減少され得る）。本発明において行われる混合のアナログ／デジタルのアプローチはこれを可能にする。すなわち、入力ベクトル要素は、所望の次元に対してのみのブロードキャストをフィルタリングするためにマスキングされることができる。これは、入力ベクトル次元に比例して、ブロードキャスト・エネルギー、及びビット・セル演算エネルギーを節約する。
【００３７】
スパーシティについて、ゼロ値化要素に対応する全ての入力ベクトル要素ビットのブロードキャストを防ぐために、同様のマスキング・アプローチがビット・シリアル動作全体に対して適用されることが可能である。我々は、用いられたＢＰＢＳアプローチが特にこれを実現する上で助けになる点に着目した。これは、非ゼロ要素の予測数はスパース線形代数適用においては既知であることが多い一方、入力ベクトル次元は大きくなり得るためである。したがってＢＰＢＳアプローチによって、我々は入力ベクトル次元を増加させることができるとともに、蓄積ライン上でサポートされる必要があるレベルの数がＡＤＣ分解能内にあることを依然として確実にし、それによって高い演算ＳＱＮＲを確実とする。非ゼロ要素の予測数が既知である一方、実際の非ゼロ要素の可変数をサポートすることが依然として不可欠であり、これは入力ベクトル毎に異なり得る。マスキング・ハードウェアは所与のベクトルに対するゼロ値要素の数を単純に数えた後、ＢＰＢＳ動作後のデジタル・ドメインにおいて最終的な内積結果に対して対応するオフセットを印加すればよいため、混合のアナログ／デジタルアプローチにおいて容易に達成される。
【００３８】
例示の集積回路アーキテクチャ
図２は、一実施例による例示のアーキテクチャの高レベル・ブロック図を図示する。特に、図２の例示のアーキテクチャは、本明細書における様々な実施例を試験するために特定の構成要素及び機能要素を使用したＶＬＳＩ組立技術を使用した集積回路として実装された。異なる構成要素（例えばより大きい、又はよりパワフルなＣＰＵ、メモリ要素、処理要素など）を有する別の実施例が本開示の範囲内にあることが発明者によって企図されることが理解される。
【００３９】
図２に図示するように、アーキテクチャ２００は、中央処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）２１０（例えば３２ビットＲＩＳＣ−Ｖ  ＣＰＵ）と、プログラム・メモリ（ＰＭＥＭ）２２０（例えば１２８ＫＢプログラム・メモリ）と、データ・メモリ（ＤＭＥＭ）２３０（例えば１２８ＫＢデータ・メモリ）と、外部メモリ・インタフェース２３５（例えば、説明上、１つ以上に３２ビット外部メモリ装置（不図示）にアクセスすることによってアクセス可能メモリを拡張するように構成される）と、ブートローダー・モジュール２４０（例えば、８ＫＢオフチップＥＥＰＲＯＭ（不図示）にアクセスするように構成される）と、様々な構成レジスタ２５５を含み本明細書に記載の実施例に従ってイン・メモリ・コンピューティング及び様々な他の機能を実行するように構成されたコンピュート・イン・メモリ・ユニット（ＣＩＭＵ）３００と、様々な構成レジスタ２６５を含む直接記憶アクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）モジュール２６０と、データの送受信のための万能非同期同受信機（ＵＡＲＴ：Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）モジュール２７１、汎用入力／出力（ＧＰＩＯ：ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）モジュール２７３、様々なタイマ２７４等の様々な支援／周辺モジュールとを含む。ＳｏＣ構成モジュール（不図示）など、ここで図示されていない他の要素も図２のアーキテクチャ２００に含まれ得る。
【００４０】
ＣＩＭＵ３００は行列ベクトル積などに非常に良好に適しているが、他の種類の演算／計算が非ＣＩＭＵ演算装置によってより適して実行され得る。したがって、様々な実施例において、特定の演算及び／又は機能が割り当てられた演算装置の選択がより効率的な演算機能を提供するように制御され得るように、ＣＩＭＵ３００とニア・メモリとの間の近接結合が提供される。
【００４１】
図３は、図２のアーキテクチャにおける使用に適した例示のコンピュート・イン・メモリ・ユニット（ＣＩＭＵ）３００の高レベル・ブロック図を図示する。以下の説明は、図２のアーキテクチャ２００とともに、そのアーキテクチャ２００のコンテクスト内での使用に適した例示のＣＩＭＵ３００に関する。
【００４２】
一般的に言えば、ＣＩＭＵ３００は、例えば、様々な構成レジスタを介して構成されるビット・セルのコンピュテーション・イン・メモリ・アレイ（ＣＩＭＡ：ｃｏｍｐｕｔａｔｉｏｎ−ｉｎ−ｍｅｍｏｒｙ  ａｒｒａｙ）を含む様々な構造要素を含むことによって、行列ベクトル積などのプログラミング可能なイン・メモリ演算機能を提供する。特に、例示のＣＩＭＵ３００は、入力行列Ｘに入力ベクトルＡを乗算して出力行列Ｙを得るように割り当てられた５９０ｋｂ、１６バンクのＣＩＭＵとして構成される。
【００４３】
図３を参照すると、ＣＩＭＵ３００はコンピュテーション・イン・メモリ・アレイ（ＣＩＭＡ）３１０と、入力活性化ベクトル再シェーピング・バッファ（ＩＡ  ＢＵＦＦ）３２０と、スパーシティ／ＡＮＤ論理コントローラ３３０と、メモリ読出／書込インタフェース３４０と、行デコーダ／ＷＬドライバ３５０と、複数のＡＤ変換器３６０と、ニア・メモリ・コンピューティングの乗算−シフト−蓄積データ・パス（ＮＭＤ）３７０とを含むとして図示される。
【００４４】
図示するコンピュテーション・イン・メモリ・アレイ（ＣＩＭＡ）３１０は、４×４クロック・ゲート方式の６４×（３×３×６４）イン・メモリ・コンピューティング・アレイとして配置され、したがって合計２５６のイン・メモリ・コンピューティング・チャンネル（例えばメモリ列）を有し、そのイン・メモリ・コンピューティング・チャンネルをサポートするために２５６のＡＤＣ３６０が含まれる２５６×（３×３×２５６）コンピュテーション・イン・メモリ・アレイを含む。
【００４５】
ＩＡ  ＢＵＦＦ３２０は、例えば、３２ビットのデータ・ワードのシーケンスを受信するように動作し、それらの３２ビットのデータ・ワードを、ＣＩＭＡ３１０による処理に適した高次元のベクトルのシーケンスに再シェーピングする。なお、３２ビット、６４ビット、又は他のあらゆる幅のデータ・ワードが、コンピュート・イン・メモリ・アレイ３１０の利用可能なサイズ又は選択されたサイズに合致するように再シェーピングされてもよく、この場合、コンピュート・イン・メモリ・アレイ３１０自体が高次元ベクトルに対して動作するように構成され、２−８ビット、１−８ビット又は他のサイズを有する場合がありアレイ全体において並列してそれらを適用する要素を含む。また、本明細書で説明する行列ベクトル積演算はＣＩＭＡ３１０の全体を利用するとして図示されているが、様々な実施例において、ＣＩＭＡ３１０の一部のみが使用される。さらに、様々な他の実施例において、ＣＩＭＡ３１０と関連論理回路は、インターリーブされた行列ベクトル積演算を実現するように適応され、行列の並列部分はＣＩＭＡ３１０のそれぞれの部分によって同時に処理される。
【００４６】
特に、ＩＡ  ＢＵＦＦ３２０は、３２ビットのデータ・ワードのシーケンスを、ＣＩＭＡ３１０に一度に（又は少なくとも大きいチャンク単位で）加えられてもよくビット・シリアル方式で適切に順序付けされる高並列データ構造に再シェーピングする。例えば、８つのベクトル要素を有する４ビット演算は、２０００ｎビット以上のデータ要素の高次元ベクトルと関連付けられてもよい。ＩＡ  ＢＵＦＦ３２０は、このデータ構造を形成する。
【００４７】
図示されるように、ＩＡ  ＢＵＦＦ３２０は、例えば３２ビットのデータ・ワードのシーケンスとして入力行列Ｘを受信してＣＩＭＡ３１０のサイズに応じて受信したデータ・ワードのシーケンスのサイズ変更／再配置を行って、例えば２３０３ｎビットのデータ要素を含むデータ構造を供給するように構成される。それぞれのマスキング・ビットとともに、それらの２３０３ｎビットのデータ要素のそれぞれは、ＩＡ  ＢＵＦＦ３２０からスパーシティ／ＡＮＤ論理コントローラ３３０へ送信される。
【００４８】
スパーシティ／ＡＮＤ論理コントローラ３３０は、例えば２３０３ｎビットのデータ要素とそれぞれのマスキング・ビットとを受信し、それに応じてスパーシティ機能を呼び出すように構成され、この場合、ゼロ値データ要素（それぞれのマスキング・ビットによって示されるものなど）は処理のためにＣＩＭＡ３１０に伝搬されない。このようにして、ＣＩＭＡ３１０によるそのようなビットの処理のために特別に必要なエネルギーが節約される。
【００４９】
動作において、ＣＰＵ２１０は標準的な方法で実装される直接データ・パスを介してＰＭＥＭ２２０とブートローダー２４０を読み込む。ＣＰＵ２１０は標準的な方法で実装される直接データ・パスを介してＤＭＥＭ２３０、ＩＡ  ＢＵＦＦ３２０、及びメモリ読出／書込バッファ３４０にアクセスしてもよい。これらのメモリ・モジュール／バッファ、ＣＰＵ２１０及びＤＭＡモジュール２６０の全ては、ＡＸＩバス２８１によって接続される。チップ構成モジュール及び他の周辺モジュールは、ＡＰＢバス２８２によってグループ化され、スレーブとしてＡＸＩバス２８１に取り付けられる。ＣＰＵ２１０は、ＡＸＩバス２８１を介してＰＭＥＭ２２０に書き込むように構成される。ＤＭＡモジュール２６０は、専用データ・パスを介して、ＤＭＥＭ２３０、ＩＡ  ＢＵＦＦ３２０、メモリ読出／書込バッファ３４０、及びＮＭＤ３７０にアクセスして、例えばＤＭＡコントローラ２６５に従って、ＡＸＩ／ＡＰＢバスを介して他のアクセス可能なメモリ空間の全てにアクセスするように構成される。ＣＩＭＵ３００は、上述のＢＰＢＳ行列ベクトル積を実行する。上記及び他の実施例のさらなる詳細は以下で説明する。
【００５０】
このように、様々な実施例において、ＣＩＭＡは、ベクトル情報を受信し、行列ベクトル積を実行し、複合行列ベクトル積機能を提供するために必要に応じて別の演算機能によってさらに処理される場合のあるデジタル化出力信号（すなわち、Ｙ＝ＡＸ）を提供するように、ビット・シリアル・ビット・パラレル（ＢＰＢＳ）方式で動作する。一般的に言えば、本明細書で説明する実施例は、超並列のビット単位の入力信号を形成するために受信データ・ワードのシーケンスを再シェーピングするように構成された再シェーピング・バッファと、第１のＣＩＭアレイ次元を介して上記の超並列のビット単位の入力信号を受信し、第２のＣＩＭアレイ次元を介して１つ以上の蓄積信号を受信するように構成されるビット・セルのコンピュート・イン・メモリ（ＣＩＭ）アレイであって、共通の蓄積信号と関連付けられた複数のビット・セルのそれぞれは、それぞれの出力信号を供給するように構成されるそれぞれのＣＩＭチャンネルを形成するＣＩＭアレイと、複数のＣＩＭチャンネル出力信号を処理することによってマルチ・ビットの出力ワードのシーケンスを供給するように構成されたアナログ・デジタル変換器（ＡＤＣ）回路と、ＣＩＭアレイに、シングル・ビットの内部回路及び信号を用いて上記入力及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成された制御回路と、コンピューティング結果としてマルチ・ビットの出力ワードのシーケンスを供給するように構成されたニア・メモリ・コンピューティング・パスと、を含むイン・メモリ・コンピューティング・アーキテクチャを提供する。
【００５１】
メモリ・マップ及びプログラミング・モデル
ＣＰＵ２１０はＩＡ  ＢＵＦＦ３２０及びメモリ読出／書込バッファ３４０に直接アクセスするように構成されるため、これらの２つのメモリ空間は、特にアレイ／行列データなどの構造化データに対して、ユーザ・プログラムの観点から、レイテンシ及びエネルギーに関してＤＭＥＭ２３０にとって類似して見える。様々な実施例において、イン・メモリ・コンピューティングの特徴が活性化されていない、若しくは部分的に活性化されている場合、メモリ読出／書込バッファ３４０及びＣＩＭＡ３１０は、通常のデータ・メモリとして使用されてもよい。
【００５２】
図４は、一実施例による、図２のアーキテクチャにおける使用に適した入力活性化ベクトル再シェーピング・バッファ（ＩＡ  ＢＵＦＦ）３２０の高レベル・ブロック図を図示する。図示するＩＡ  ＢＵＦＦ３２０は、１ビットから８ビットの要素精度を有する入力活性化ベクトルをサポートし、他の精度も様々な実施例において考慮されてもよい。本明細書で説明するビット・シリアル・フロー機構によれば、入力活性化ベクトルにおける全ての要素の特定のビットは、行列ベクトル積演算のためにＣＩＭＡ３１０に対して一度にブロードキャストされる。ただし、この動作の高パラレル性は、高次元入力活性化ベクトルの要素が最大帯域幅及び最小エネルギーで提供されることを必要とし、さもなければ、イン・メモリ・コンピューティングのスループット及びエネルギー効率の利点が利用されないであろう。これを達成するためには、入力活性化再シェーピング・バッファ（ＩＡ  ＢＵＦＦ）３２０は以下のように構成されてもよく、それによってイン・メモリ・コンピューティングがマイクロプロセッサの３２ビット（又は他のビット幅）のアーキテクチャに組み込まれることができ、それによって対応する３２ビットのデータ転送のためのハードウェアがイン・メモリ・コンピューティングの高パラレル内部組織のために最大限に活用される。
【００５３】
図４を参照すると、ＩＡ  ＢＵＦＦ３２０は、１から８ビットのビット精度の入力ベクトル要素を含む場合のある３２ビット入力信号を受信する。それによって、３２ビットの入力信号が、合計２４（ここではレジスタ４１０−０から４１０−２３で示される）となる４×８−ｂレジスタ４１０にまず格納される。これらのレジスタ４１０は、自身のコンテンツを、それぞれ９６列を有する８レジスタ・ファイル（レジスタ・ファイル４２０−０から４２０−８として示される）に供給し、３×３×２５６＝２３０４までの次元を有する入力ベクトルは並列の列にその要素とともに配置される。これは、８−ｂ入力要素の場合に行われ、２４の４×８−ｂレジスタ４１０はレジスタ・ファイル４２０の１つに対して９６の並列出力を供給し、１−ｂ入力要素の場合は、２４の４×８−ｂレジスタ４１０は８つのレジスタ・ファイル４２０の全部に対して１５３６の並列出力を供給する（又は他のビット精度に対しては中間の構成）。各レジスタ・ファイル列の高さは２×４×８−ｂであり、各入力ベクトル（８ビットまでの要素精度）が４セグメントに格納可能とし、全入力ベクトル要素がロードされる場合にダブル・バッファリングを可能とする。一方、入力ベクトル要素の１／３程度がロードされる場合（すなわち、１のストライドを有するＣＮＮ）、各４つのレジスタ・ファイル列のうちの１つがバッファの役割を果たし、３つの列からのデータが演算のためにＣＩＭＵに対して順伝搬可能とする。
【００５４】
それによって、各レジスタ・ファイル４２０によって出力される９６列のうち、７２のみがそれぞれの円形のバレル・シフト・インタフェース４３０によって選択され、一度に８つのレジスタ・ファイル４２０に対して合計５７６の出力を与える。これらの出力は、そのレジスタ・ファイルに格納された４つの入力ベクトル・セグメントの１つに対応する。したがって、１−ｂレジスタ内において、入力ベクトル要素の全てをスパーシティ／ＡＮＤ論理コントローラ３３０にロードするためには４つの周期が必要とされる。
【００５５】
入力活性化ベクトルにおいてスパーシティを活用するために、ＣＰＵ２１０又はＤＭＡ２６０が再シェーピング・バッファ３２０に書き込む一方で、データ要素毎にマスク・ビットが生成される。マスキングされた入力活性化は、ＣＩＭＡ３１０における電荷に基づく演算動作を防ぎ、それによって演算エネルギーを節約する。このマスク・ベクトルは、ＳＲＡＭブロックにも格納され、入力活性化ベクトルと同様だが１ビット表現を有して組織される。
【００５６】
４対３バレル・シフタ４３０は、ＶＧＧスタイル（３×３フィルタ）ＣＮＮ演算をサポートするために使用される。次のフィルタリング動作（畳み込み再利用）に移行する際に、入力活性化ベクトルの３つのうちの１つのみが更新を必要とし、それによってエネルギーを節約し、スループットを向上させる。
【００５７】
図５は、一実施例による、図２のアーキテクチャにおける使用に適したＣＩＭＡ読出／書込バッファ３４０の高レベル・ブロック図を図示する。図示されたＣＩＭＡ読出／書込バッファ３４０は、例えば７６８ビット幅のスタティック・ランダム・アクセスメモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）ブロック５１０として組織される一方、図示されるＣＰＵのワード幅はこの例では３２ビットであり、読出／書込バッファ３４０はその間をインタフェース接続するために使用される。
【００５８】
図示されるような読出／書込バッファ３４０は、７６８ビット書込レジスタ５１１及び７６８ビット読出レジスタ５１２を含む。読出／書込バッファ３４０は、通常、ＣＩＭＡ３１０において幅広いＳＲＡＭブロックに対してキャッシュのように動作するが、いくつかの詳細が異なる。例えば、読出／書込バッファ３４０は、ＣＰＵ２１０が異なる行に書き込む場合のみＣＩＭＡ３１０に書き戻すが、異なる行の読出しは書き戻しをトリガしない。読出しアドレスが書込レジスタのタグと一致する場合、ＣＩＭＡ３１０から読み出すかわりに、書込レジスタ５１１における修正バイト（汚染ビットとして示す）は読出レジスタ５１２にバイパスされる。
【００５９】
蓄積ライン・アナログ・デジタル変換器（ＡＤＣ）。ＣＩＭＡ３１０からの蓄積ラインはそれぞれ８ビットのＳＡＲ  ＡＤＣを有し、イン・メモリ・コンピューティング・チャンネルのピッチに適合する。領域を節約するため、ＳＡＲ  ＡＤＣのビット・サイクリングを制御する有限状態機械（ＦＳＭ：ｆｉｎｉｔｅ−ｓｔａｔｅ  ｍａｃｈｉｎｅ）は各イン・メモリ・コンピューティング・タイルにおいて必要とされる６４ＡＤＣ間で共有される。ＦＳＭ制御論理は、８＋２シフト・レジスタからなり、リセット、サンプリング、そして８ビット決定段階を繰り返すためのパルスを生成する。シフト・レジスタ・パルスは、６４ＡＤＣに対してブロードキャストされ、それらはローカルでバッファに入れられ、ローカルの比較器決定をトリガし、ローカルのＡＤＣコード・レジスタに対応するビット決定を格納し、その後、次のコンデンサ−ＤＡＣ構成をトリガするように使用される。高精度ｍｅｔａｌ−ｏｘｉｄｅ−ｍｅｔａｌ（ＭＯＭ）容量は、各ＡＤＣのコンデンサ・アレイの小型化を可能とするために使用してもよい。
【００６０】
図６は、一実施例による、図２のアーキテクチャにおける使用に適したニア・メモリ・データ・パス（ＮＭＤ）モジュール６００の高レベル・ブロック図を図示するが、他の特徴を有するデジタル・ニア・メモリ・コンピューティングも使用可能である。図６に図示するＮＭＤモジュール６００は、ＢＰＢＳ方式によるマルチ・ビット行列積をサポートするＡＤＣ出力後のデジタル演算データ・パスを示す。
【００６１】
特定の実施例において、２５６ＡＤＣ出力はデジタル演算フローのために８のグループに組織される。これによって、８ビットまでの行列要素構成のサポートが可能となる。したがって、ＮＭＤモジュール６００は、３２の同一ＮＭＤユニットを含む。各ＮＭＤユニットは、８ＡＤＣ出力６１０及び対応バイアス６２１、被乗数６２２／６２３、シフト数６２４及び蓄積レジスタのうちから選択するためのマルチプレクサ６１０／６２０と、グローバル・バイアス及びマスク・カウントを減算するために８ビットの無符号入力及び９ビットの符号付き入力を有する加算器６３１と、ニューラル・ネットワーク・タスクのためのローカル・バイアスを演算するための符号付き加算器６３２と、スケーリングを実行するための固定点マルチプレクサ６３３と、被乗数の指数を演算して重み要素における異なるビットのためのシフトを実行するためのバレル・シフタ６３４と、蓄積を実行するための３２ビット符号付き加算器６３５と、１、２、４、及び８ビット構成を有する重みをサポートするための８つの３２ビット蓄積レジスタ６４０と、ニューラル・ネットワーク適用のためのＲｅＬＵユニット６５０とからなる。
【００６２】
図７は、一実施例による、図２のアーキテクチャにおける使用に適した直接記憶アクセス（ＤＭＡ）モジュール７００の高レベル・ブロック図を図示する。図示するＤＭＡモジュール７００は、例えば、異なるハードウェア・リソースとの同時のデータ転送をサポートする２つのチャンネルと、ＤＭＥＭ、ＩＡ  ＢＵＦＦ、ＣＩＭＵ  Ｒ／Ｗ  ＢＵＦＦ、ＮＭＤ結果及びＡＸＩ４バスのそれぞれとの５つの独立したデータ・パスとを含む。
【００６３】
ビット・パラレル／ビット・シリアル（ＢＰＢＳ）行列ベクトル積
マルチ・ビットＭＶＭ
2021527886.tif 000003
のためのＢＰＢＳ方式を図８に示す。ただし、ＢＡは行列要素ａｍ，ｎのために使用されるビット数に相当し、Ｂｘは入力ベクトル要素ｘｎのために使用されるビット数に相当し、Ｎは入力ベクトルの次元に相当し、これは本実施例のハードウェアにおいて２３０４までとなり得る（Ｍｎはスパーシティ及び次元制御のために使用されるマスク・ビットである）。ａｍ，ｎの複数のビットは並列ＣＩＭＡ列にマッピングされ、ｘｎの複数のビットは直列で入力される。したがって、マルチ・ビット乗算及び蓄積は、両方が本実施例の乗算ビット・セル（Ｍ−ＢＣ）によってサポートされるビット単位のＸＮＯＲ又はビット単位のＡＮＤのいずれかによってイン・メモリ・コンピューティングを介して達成可能である。特に、ビット単位のＡＮＤは、入力ベクトル要素ビットが低いときにその出力が低いままでなければならないという点でビット単位のＸＮＯＲとは異なる。本実施例のＭ−ＢＣは、差分信号として入力ベクトル要素ビットを（一度に１つ）入力することを含む。Ｍ−ＢＣはＸＮＯＲを実装する。ただし真理表における各論理「１」出力は、入力ベクトル要素ビットの真の信号と補数信号とをそれぞれ介してＶＤＤに駆動することによって達成される。したがって、ＡＮＤは補数信号を単にマスキングすることによって容易に達成されるため、出力が低いままとなり、ＡＮＤに対応する真理表を生成する。
【００６４】
ビット単位のＡＮＤは、マルチ・ビット行列及び入力ベクトル要素のための標準的な２の補数表現をサポートすることができる。これは、ＡＤＣの後で、デジタル化された出力を他の列の演算の出力に追加する前にデジタル・ドメインにおいて最上位ビット（ＭＳＢ：ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ）に相当する列演算に対して負号を適切に印加することを含む。
【００６５】
ビット単位のＸＮＯＲは、数字表現のわずかな修正を必要とする。すなわち、要素ビットは１／０ではなく＋１／−１にマッピングし、適切にゼロを表現するために同等のＬＳＢ重み付けを有する２つのビットを必要とする。これは以下のように行われる。まず、各Ｂビット・オペランド（標準的な２の補数表現）はＢ＋１ビット符号付き整数に分解される。例えばｙはＢ＋１正／負の１ビット
2021527886.tif 000004
に分解して、
2021527886.tif 000005
を得る。
【００６６】
＋１／−１の数学的値に対して１／０値のビットをマッピングすることによって、ビット単位のイン・メモリ・コンピューティング乗算は論理ＸＮＯＲ動作を介して実現されてもよい。したがって、入力ベクトル要素のために差分信号を使用して論理ＸＮＯＲを実行するＭ−ＢＣは、列演算からのデジタル化された出力をビット重み付け及び加算を行うことによって符号付きのマルチ・ビット乗算を可能とすることができる。
【００６７】
ＡＮＤに基づくＭ−ＢＣ乗算及びＸＮＯＲに基づくＭ−ＢＣ乗算が２つのオプションを表しているが、Ｍ−ＢＣで可能な論理動作を有する適切な数の表現を使用することによって他のオプションも可能である。そのような代替案は有益である。例えば、ＸＮＯＲに基づくＭ−ＢＣ乗算は、２値化された（１−ｂ）演算に対して好適である一方、ＡＮＤに基づくＭ−ＢＣ乗算はデジタル・アーキテクチャ内での統合を容易化するためのより標準的な数の表現を可能とする。さらに、この２つのアプローチは、わずかに異なる信号対量子化ノイズ比（ＳＱＮＲ）を発生させるため、適用の必要性に基づいて選択されることが可能である。
【００６８】
異種コンピューティング・アーキテクチャ及びインタフェース
本明細書において説明する様々な実施例は、ビット・セル（又は乗算ビット・セル：Ｍ−ＢＣ）が演算結果に相当する出力電圧をローカル・コンデンサに駆動する場合のチャージ・ドメインのイン・メモリ・コンピューティングの様々な態様を企図する。イン・メモリ・コンピューティング・チャンネル（列）からのコンデンサは、その後、電荷の再配分を介した蓄積を実現するために結合される。上述したように、そのようなコンデンサは、単純に互いに近接しているため電界を介して結合される配線を介して等、ＶＬＳＩ等処理において複製が非常に容易である特定の形状を使用して形成されてもよい。それによって、コンデンサとして形成されたローカル・ビット・セルは１又はゼロを表す電荷を格納する一方、ローカルで多数のコンデンサ又はビット・セルの電荷の全てを足し上げることによって、行列ベクトル積において基礎の動作となる乗算及び蓄積／加算の関数の実装を可能とする。
【００６９】
上述した様々な実施例は、改良されたビット・セルに基づくアーキテクチャ、コンピューティング・エンジン、及びプラットフォームを提供しており、有益である。行列ベクトル積は、標準的なデジタル処理又はデジタル・アクセラレーションによって効率的に実行されない１つの動作である。したがって、この一種類のコンピュテーション・イン・メモリの演算を実行することは既存のデジタル設計を上回る大きな利点を提供することになる。ただし、デジタル設計を使用して他の様々な種類の動作が実行される。
【００７０】
様々な実施例は、例えば異種コンピューティング・アーキテクチャを形成するために、上記のビット・セルに基づくアーキテクチャ、コンピューティング・エンジン、プラットフォーム等を従来のデジタル・コンピューティング・アーキテクチャ及びプラットフォームに接続／インタフェース接続するための機構を企図する。このようにして、伝統的なコンピュータ処理によく適した他の演算動作は伝統的なコンピュータ・アーキテクチャを介して処理される一方、ビット・セル・アーキテクチャ処理（例えば行列ベクトル処理）によく適した演算動作は上述したように処理される。すなわち、様々な実施例は、本明細書で説明する高パラレル処理機構を含むコンピューティング・アーキテクチャを提供し、この機構が複数のインタフェースに接続されることによって、より従来のデジタル・コンピューティング・アーキテクチャに外部結合されることが可能となる。これによって、デジタル・コンピューティング・アーキテクチャはイン・メモリ・コンピューティング・アーキテクチャと直接的及び効率的に並ぶことができ、その２つの間でのデータ移行のオーバーヘッドを最小限にするために２つが近接して配置されることを可能とする。例えば、機械学習適用は８０％から９０％の行列ベクトル演算を含む一方、依然として１０％から２０％の他の種類の演算／動作が実行される。本明細書で説明するイン・メモリ・コンピューティングをアーキテクチャにおいてより従来型であるニア・メモリ・コンピューティングと組み合わせることによって、その結果得られるシステムは多くの種類の処理を実行するための格段の構成可能性を実現する。したがって、様々な実施例は、本明細書で説明するイン・メモリ・コンピューティングと組み合わせたニア・メモリ・デジタル演算を企図する。
【００７１】
本明細書で説明するイン・メモリ演算は超並列であるが単一ビットの動作である。例えば、１ビットのみがビット・セルに格納される場合が多い。１か０である。ビット・セルに駆動される信号は、通常、入力ベクトルである（すなわち、各行列要素は２Ｄベクトル乗算動作において各ベクトル要素が乗算される）。このベクトル要素は、同様にデジタルである信号に置かれ、ベクトル要素が同様に１ビットとなるように１ビットのみである。
【００７２】
様々な実施例は、ビット・パラレル／ビット・シリアルのアプローチを使用して１ビット要素から複数ビット要素へ行列／ベクトルを拡張する。
【００７３】
図８Ａ及び８Ｂは、図２のアーキテクチャにおける使用に適したＣＩＭＡチャンネル・デジタル化／重み付けの様々な実施例の高レベル・ブロック図を図示する。特に、図８Ａは、様々な他の図に関して上述したものと同様のデジタル・バイナリ重み付け及び加算実施例を図示する。図８Ｂは、図８Ａの実施例及び／又は本明細書で説明する他の実施例よりも少ない数のアナログ・デジタル変換器の使用を可能とするために様々な回路要素に対して修正を加えたアナログ・バイナリ重み付け及び加算実施例を図示する。
【００７４】
上述したように、様々な実施例は、ビット・セルのコンピュート・イン・メモリ（ＣＩＭ）アレイが、第１のＣＩＭアレイ次元（例えば２Ｄ  ＣＩＭアレイの行）を介して超並列のビット単位の入力信号を受信し、第２のＣＩＭアレイ次元（例えば２Ｄ  ＣＩＭアレイの列）を介して１つ以上の蓄積信号を受信するように構成されることを企図しており、この場合、共通の蓄積信号（例えばビット・セルの列として図示）と関連付けられた複数のビット・セルのそれぞれが、それぞれの出力信号を供給するように構成されたそれぞれのＣＩＭチャンネルを形成する。アナログ・デジタル変換器（ＡＤＣ）回路は、複数のＣＩＭチャンネル出力信号を処理することによってマルチ・ビットの出力ワードのシーケンスを供給するように構成される。制御回路は、ＣＩＭアレイに、シングル・ビット内部回路及び信号を使用して入力及び蓄積信号に対してマルチ・ビット・コンピューティング動作を実行させるように構成され、それによって動作上係合するニア・メモリ・コンピューティング・パスが演算結果としてマルチ・ビットの出力ワードのシーケンスを提供するように構成され得るようにする。
【００７５】
図８Ａを参照すると、ＡＤＣ回路機能を実行するデジタル・バイナリ重み付け及び加算実施例が図示される。特に、二次元ＣＩＭＡ８１０Ａは第１の（行）次元（すなわち、複数のバッファ８０５を介する）において行列入力値を受信し、第２の（列）次元においてベクトル入力値を受信し、ＣＩＭＡ８１０Ａは、様々なチャンネル出力信号ＣＨ−ＯＵＴを供給するように制御回路等（不図示）に従って動作する。
【００７６】
図８ＡのＡＤＣ回路は、ＣＩＭチャンネル毎に、ＣＩＭチャンネル出力信号ＣＨ−ＯＵＴをデジタル化するように構成されたそれぞれのＡＤＣ７６０と、デジタル化されたＣＩＭチャンネル出力信号ＣＨ−ＯＵＴに対してそれぞれのバイナリ重み付けを付与することによって、マルチ・ビットの出力ワード８７０のそれぞれの部分を形成するように構成されたそれぞれのシフト・レジスタ８６５とを提供する。
【００７７】
図８Ｂを参照すると、ＡＤＣ回路機能を実行するアナログ・バイナリ重み付け及び加算実施例が図示されている。特に、二次元ＣＩＭＡ８１０Ｂは第１の（行）次元で（すなわち、複数のバッファ８０５を介して）行列入力値を受信し、第２の（列）次元でベクトル入力値を受信し、ＣＩＭＡ８１０Ｂは様々なチャンネル出力信号ＣＨ−ＯＵＴを供給するように制御回路等（不図示）に従って動作する。
【００７８】
図８ＢのＡＤＣ回路は、ＣＩＭＡ８１０Ｂ内にスイッチ８１５−１、８１５−２等の４つの制御可能な（又は事前に設定された）バンクを提供し、これらのバンクは、そこに形成されているコンデンサを結合及び／又は分離するように動作することによってチャンネルの１つ以上のサブグループのそれぞれに対してアナログ・バイナリ重み付け法を実装し、チャンネル・サブグループのそれぞれは単一の出力信号を供給して、ＣＩＭチャンネルのそれぞれのサブセットのＣＩＭチャンネル出力信号の重み付けされたアナログ加算をデジタル化することによってマルチ・ビットの出力ワードのそれぞれの部分を形成するために１つのＡＤＣ８６０Ｂのみが必要とされるようにする。
【００７９】
図９は、一実施例による方法のフロー図を図示する。特に、図９の方法９００は、本明細書において説明するようにアーキテクチャ、システム等によって実装される様々な処理動作に関し、この場合、入力行列／ベクトルはビット・パラレル／ビット・シリアル・アプローチにおいて演算されるように拡張される。
【００８０】
ステップ９１０において、行列及びベクトルのデータは、適切なメモリ位置にロードされる。
【００８１】
ステップ９２０において、ベクトル・ビット（ＭＳＢからＬＳＢ）のそれぞれは順次処理される。特に、ベクトルのＭＳＢは行列のＭＳＢによって乗算され、ベクトルのＭＳＢは行列のＭＳＢ−１によって乗算され、ベクトルのＭＳＢは行列のＭＳＢ−２によって乗算される等が行われて、最終的にベクトルのＭＳＢは行列のＬＳＢによって乗算される。結果として得られるアナログ電荷結果は、その後、ＭＳＢからＬＳＢのベクトル積毎にデジタル化され、得られた結果はラッチされる。このプロセスは、ベクトルＭＳＢ−ＬＳＢのそれぞれが行列のＭＳＢ−ＬＳＢ要素のそれぞれによって乗算されるまで、ベクトルＭＳＢ−１、ベクトルＭＳＢ−２等からベクトルＬＳＢまで反復される。
【００８２】
ステップ９３０において、ビットは適切な重み付けを印加するようにシフトされ、その結果はともに加算される。なお、アナログ重み付けが使用される実施例のいくつかにおいて、ステップ９３０のシフト動作は不要である。
【００８３】
様々な実施例は、高密度のメモリにデータを格納するために使用される回路内において非常に安定及び強固な演算を実行可能とする。さらに、メモリ・ビット・セル回路のために高密度を可能にすることによって、様々な実施例は本明細書で説明するコンピューティング・エンジン及びプラットフォームを進歩させる。密度は、よりコンパクトなレイアウトに起因して、さらにメモリ回路に対して使用される非常に積極的な設計ルール（すなわち、プッシュ・ルール）とのレイアウトの向上した適合性を理由として高めることが可能である。様々な実施例は、機械学習及び他の線形代数のためのプロセッサの性能を実質的に向上させる。
【００８４】
イン・メモリ・コンピューティング・アーキテクチャ内で使用可能なビット・セル回路が開示される。開示されるアプローチによって、高密度のメモリにデータを格納するために使用される回路内において非常に安定／強固な演算が実行可能となる。強固なイン・メモリ・コンピューティングのための開示アプローチは、既知のアプローチと比較してメモリ・ビット・セル回路に対して高密度を可能とする。密度は、よりコンパクトなレイアウトに起因して、さらにメモリ回路に対して使用される非常に積極的な設計ルール（すなわち、プッシュ・ルール）とのレイアウトの向上した適合性を理由として高められる。開示の装置は、標準的なＣＭＯＳ集積回路処理を使用して組み立てられることが可能である。
【００８５】
メモリ・アクセスは、多くの演算作業負荷においてエネルギー及び遅延の主要部分を占めている。標準的なメモリでは、生データが行毎にアクセスされ、格納点からメモリ・アレイ外の演算点へデータを動かす際に通信コストを発生させるため、メモリのエネルギー及び遅延が発生する。一方、イン・メモリ・コンピューティング・アーキテクチャは行にわたって格納されたデータの多くのビット上の演算結果にアクセスすることによって、一度に多くの行にアクセスし、通信コストを償却する。
【００８６】
そのような償却が乗数（すなわち、大まかには同時にアクセスされる行の数）によるエネルギー及び遅延を削減する一方、最重要課題は、演算上の信号対ノイズ比（ＳＮＲ）も対応する因数によって低減されることである。これは、一般的に多数のビットに対する演算が必要とされるダイナミック・レンジを増加させるが、これに伴って、メモリの既存のビット・ラインの限定スイング内においてＳＮＲ抑制するためである。特にイン・メモリ・アーキテクチャの演算ノイズの大部分は、ビット・セルによって実行される演算動作の変形と非線形によるものである。標準的なメモリにおいて、ビット・セルは出力電流を供給する。これは、標準的に使用される高密度のビット・セルに対する変化を最小限にすることを目的として、電流ドメインの演算をイン・メモリ・コンピューティング・アーキテクチャに対する自然な選択としてきた。
【００８７】
しかしながら、ビット・セル電流は、ビット・セル・トランジスタに影響する変化及び非線形の高レベルの影響を受けやすい。これはイン・メモリ・コンピューティングのＳＮＲを限定し、したがってスケーラビリティを限定する。チャージ・ドメインの演算を使用する様々な実施例に従って改良が得られる。ここでは、ビット・セルからの演算出力は、コンデンサ上に電荷として記憶される。例えば、様々な実施例はビット・セル・トランジスタの上でのメタル・フィンガ・コンデンサの使用を企図しており、そのようなコンデンサは追加の領域を発生させず、したがってビット・セルが高密度の構造を維持することができる。演算上のＳＮＲのために重要なことは、そのようなコンデンサも非常に良好な線形を示すとともに、処理と温度の変化が存在するときに高い安定性を示すことである。これは、実質的に、イン・メモリ・コンピューティングのスケーラビリティを高めてきた。
【００８８】
メタル・フィンガ・コンデンサはビット・セル上に配置されることが可能である一方、スイッチト・キャパシタのチャージ・ドメイン演算のために、ビット・セル内でいくつかの回路変更が必要である。本発明は、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）におけるチャージ・ドメインのビット・セル演算の高密度を可能とするために回路及びレイアウトに着目する。特に、ＳＲＡＭビット・セルのために使用される積極的なプッシュ設計ルールとの適合性を向上させる回路及びレイアウトを説明する。
【００８９】
図１０は、乗算ビット・セルの回路図を図示する。図９のビット・セル９００は、１−ｂデータの格納、書込み、読出しなどの動作を実行し、さらに格納された１−ｂデータと１−ｂ  ＩＡ／ＩＡｂ信号（差分）間の乗算を可能にする。したがって、この構造を乗算ビット・セル（Ｍ−ＢＣ）と呼ぶ。なお、１−ｂ乗算は、論理ＸＮＯＲ演算に相当する。これを実装するため、図１０に図示するように、ＰＭＯＳトランジスタが追加され、ビット・セル格納ノードに結合され、ＩＡ／ＩＡｂ信号によって駆動される。
【００９０】
図１１は、ＸＮＯＲ関数を実行するように構成された３つのＭ−ＢＣの回路図を図示する。特に、図１０の回路の動作は、３つのＭ−ＢＣに対して、（１）コンデンサ短絡スイッチ（ＴＳＨＯＲＴ／ＴＳＨＯＲＴｂ）及び放電ＮＭＯＳトランジスタ（ＰＲＥ）をアサートすることによってＭ−ＢＣコンデンサが無条件で放電され、（２）ＴＳＨＯＲＴ／ＴＳＨＯＲＴｂがディアサートされ、ＩＡ／ＩＡｂが駆動され、ローカルＭ−ＢＣコンデンサ上にＭ−ＢＣ  ＸＮＯＲ出力を格納し、（３）ＩＡ／ＩＡｂがディアサートされ、ＴＳＨＯＲＴがアサートされ、全てのＸＮＯＲ結果からの電荷を蓄積して、乗算−蓄積演算を与えることを含む。なお、８つのＭ−ＢＣトランジスタに加えて、ＴＳＨＯＲＴ／ＴＳＨＯＲＴｂ実装のためのＭ−ＢＣ毎に２つの追加のＮＭＯＳ／ＰＭＯＳトランジスタが必要である。以前の設計においては、ノードの効率的な共有を可能とするため、３つのＭ−ＢＣとともに、上記のＮＭＯＳ／ＰＭＯＳトランジスタは各Ｍ−ＢＣの外側に配置された。
【００９１】
図１１Ａ、図１１Ｂは標準的なＳＲＡＭビット・セル（図１１Ｂ）の８トランジスタＭ−ＢＣの次段の８トランジスタＭ−ＢＣ（図１１Ａ）上の例示の集積回路（ＩＣ）のレイアウトを図示する。２種類のビット・セル間のＰＣＢサイズ及び複雑性の差は検査によってわかり得る。
【００９２】
図１２は、３つのＭ−ＢＣからなるグループ（その上に配置されたメタル・フィンガ・コンデンサも図示）及びＴＳＨＯＲＴ  ＮＭＯＳ／ＰＭＯＳの例示のＩＣレイアウトを図示する。なお、ビット・セル演算のためのＰＭＯＳトランジスタは、Ｍ−ＢＣ内のＮＭＯＳ及びＰＭＯＳトランジスタのバランスがとれた使用につながり、それによって結果的に標準的な６トランジスタ（６Ｔ）ＳＲＡＭビット・セルのものとは大きく異なるＩＣレイアウトとなる。これは、プッシュ・ルール適合性の可能性に影響する。
【００９３】
様々な実施例は、ビット・セル演算のためにＮＭＯＳトランジスタを追加する新規のＭ−ＢＣ回路を企図する。これによって、実施例は、標準的な６Ｔビット・セルと比べて高密度及び近接の両方を実現しプッシュ・ルール適合性も向上させるＩＣレイアウトを提供する。
【００９４】
図１３は、一実施例によるＭ−ＢＣの回路図を図示する。特に、図１３のＭ−ＢＣ１３００は、ＮＭＯＳトランジスタを使用した１−ｂチャージ・ドメイン乗算（ＸＮＯＲ）を実装する。ここで、ＮＭＯＳ入力ＩＡ／ＩＡｂはローカル・コンデンサの無条件の放電の間は低く、その後演算のために差分駆動される。
【００９５】
図１４は、図１３のＭ−ＢＣの例示のレイアウトを図示する。特に、図１４のレイアウトは、単一のＭ−ＢＣ内にコンパクトにＮＭＯＳ／ＰＭＯＳ  ＴＳＨＯＲＴスイッチを含むこと（メタル・フィンガ・コンデンサはビット・セル上に配置される）を企図する。図１４のレイアウト１４００において、信号ＷＬ、ＩＡ／ＩＡｂは水平に走る一方、信号ＢＬ、Ｂｌａｂ、ＰＡ、ＶＤＤ、ＧＮＤは垂直に走る。このレイアウトは、標準的な６Ｔセルの面積のおよそ２倍を有しており、周辺のＭ−ＢＣといくつかのノードを共有する機会を利用する。
【００９６】
開示のアプローチは、標準的なメモリ・ビット・セル回路よりも多くの面積を使用する一方、ビット・セルの大部分はプッシュ・ルールによって実証されたものであり、これへの拡張は、プッシュ・ルールの使用に成功した他の構造と同様である。開示のアプローチは、機械学習及び他の線形代数のためのプロセッサの性能を実質的に向上させる。そのような改善は従来のアーキテクチャに対して実験的に証明されており、開示のアプローチはそのアーキテクチャを実質的に進歩させるものである。
【００９７】
上述したように、メモリ・ビット・セル内の演算動作は、通常コンデンサを介した電圧電荷変換を使用してその結果を電荷として供給する。したがって、ビット・セル回路は、所与のビット・セルのローカル・コンデンサの適切な切換を含み、この場合、ローカル・コンデンサは他のビット・セル・コンデンサにも適切に結合されて、結合されたビット・セルにわたる集約演算結果を生成する。
【００９８】
再構成可能なチャージ・ドメインのイン・メモリ・コンピューティングのためのチャージ・インジェクションの強固なビット・セル及びビット・セル・レイアウトが本明細書において開示される。開示の装置、特にビット・セル回路は、イン・メモリ・コンピューティング・アーキテクチャ内で使用可能である。開示のアプローチによって、高密度メモリにデータを格納するために使用される回路内において、非常に安定／強固な演算とともに再構成可能な演算が実行可能となる。開示のアプローチによって、従来のアプローチよりもイン・メモリ・コンピューティングのための高い強固性及び再構成可能性が可能となる。開示の装置は、標準的なＣＭＯＳ集積回路処理を使用して組み立てられてもよい。開示のアプローチは、機械学習及び他の線形代数のためのプロセッサの性能を実質的に向上させることができるため、半導体業界に対して顕著な有用性を有すると考えられる。
【００９９】
本明細書で開示されるアプローチは、（１）明示的なスイッチを必要とせずに、ビット・セル・コンデンサ間の結合が達成可能である構成（非スイッチ型結合構造）、（２）結合されたビット・セルが他の結合ビット・セルとインターリーブされる物理的レイアウト（インターリーブ・レイアウト）のビット・セル回路の２つの新規の態様に関する。
【０１００】
非スイッチ型結合構造は、コンデンサ・プレートの１つに関する演算結果を供給するビット・セルに関し、この場合、コンデンサ間の結合は、他のコンデンサ・プレートを介して実現される。これは、ビット・セル回路が通常スイッチを介して最終的に他のコンデンサに対して結合される同一のコンデンサ・プレートに関する演算結果を供給するスイッチ型結合構造と対照的である。
【０１０１】
図１５Ａはスイッチ型結合構造によるビット・セルのブロック図を図示する一方、図１５Ｂは非スイッチ型結合構造によるビット・セルのブロック図を図示する。両方の場合において、結合コンデンサは、まず、コンデンサが結合される出力ノードを短絡するなどしてリセットされる必要がある（コンデンサ上の電荷を除去する）。その後、演算動作ｆ（．）がビット・セルにおいてローカルに実行される。これは２つのオペランドａ及びｂに対して例示されており、一方のオペランドはビット・セルに格納され、他方はビット・セル周辺から外部に供給される。ただし、一般的に、より多くのオペランドを有する構造が可能である。その後、演算動作は、サンプル・プレート上のスイッチを介して（スイッチ型結合構造）又は他のプレート上のスイッチを用いないで（非スイッチ型結合構造）のいずれかによって他のコンデンサと結合されるローカル・コンデンサのプレートを駆動する。有益なことに、図１５Ｂの非スイッチ型結合構造は、ビット・セルにおける結合スイッチの必要性を回避し、さらに、ＭＯＳＦＥＴによって実装される場合に、スイッチがＭＯＳＦＥＴによって可変量の電荷が吸収／解放されるようにでき（電圧レベルに依存）、それによってチャージ・ドメインの演算がわずかに損なわれるなどのチャージ・インジェクション・エラーの影響を低減する可能性を有する。
【０１０２】
図１６は一実施例による非スイッチ型結合構造を有するビット・セル回路の回路図を図示する。なお、この回路の他の変形も本開示の実施例の文脈内において可能である。図１６のビット・セル１６００は、格納データＷ／Ｗｂ（ＭＮ１−３／ＭＰ１−２によって形成される６トランジスタ交差結合回路内）と入力データＩＡ／ＩＡｂとの間のＸＮＯＲ又はＡＮＤ演算のいずれかの実装を可能とする。例えば、ＸＮＯＲ演算の場合、リセット後に、ＩＡ／ＩＡｂは相補的に駆動されることが可能であり、結果としてローカル・コンデンサの下方プレートがＩＡ  ＸＮＯＲ  Ｗに従ってプル・アップ／ダウンされる。一方、ＡＮＤ演算の場合、リセット後にＩＡのみが駆動され（ＩＡｂは低いままとなる）、結果としてローカル・コンデンサの下方プレートがＩＡ  ＡＮＤ  Ｗに従ってプル・アップ／ダウンされる。有益なことに、この構造は、結合コンデンサの全ての間で結果的に得られる直列プル・アップ／プル・ダウン充電構造に起因してコンデンサの合計の切換エネルギーが削減可能となるとともに、出力ノードにおける結合スイッチの削除に起因してスイッチ・チャージ・インジェクション・エラーの影響が低減可能となる。
【０１０３】
図１７は、一実施例によるビット・セルのレイアウトの二方向インターリーブの回路図を図示する。特に、ビット・セルのインターリーブされたレイアウトは、コンデンサが２つ以上のセットに共に結合される場合のあるレイアウトに関する。図１７は二方向のインターリーブの場合の例示を示すが、様々な実施例においてより高いインターリーブも企図される。さらに、コンデンサは列の側方に配置され、実際にはビット・セル・トランジスタ上に配置されてもよく、及び／又はビット・セル・トランジスタに隣接した他の場所に配置されてもよい。この構造の利点は、特に、向上した構成可能性である。すなわち、出力は２つの異なるノード上で供給されるため、結合Ａ及びＢは個別の演算を実装するために使用可能である。又は、結合Ａ及びＢは、例えば適切な周辺回路を介して異なるノード上の出力を適切に組み合わせることによって統合演算（ｊｏｉｎｔ  ｃｏｍｐｕｔａｔｉｏｎ）を実装するために使用可能である。
【０１０４】
なお、図示され本明細書において説明される機能は、例えば汎用コンピュータ、１つ以上の特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、又は他のあらゆる同等のハードウェアを使用してハードウェア又はソフトウェア及びハードウェアの組み合わせによって実装されてもよい。本明細書で説明するステップのいくつかは、例えば様々な方法ステップを実行するプロセッサと協働する回路として、ハードウェア内で実装されてもよいことが企図される。本明細書で説明される機能／要素の一部は、コンピュータ・プログラム製品として実装されてもよく、コンピュータ命令は、演算装置によって処理されたとき、本明細書で説明される方法又は技術が呼び出されるか、さもなければ提供されるように、演算装置の動作を適応する。本発明の方法を呼び出すための命令は、固定又は取り外し可能な媒体又はメモリなどの有形及び非一時的なコンピュータ判読可能な媒体に格納されてもよく、又は命令に従って動作する演算装置内のメモリ内に格納されてもよい。
【０１０５】
様々な図面に関して本明細書において説明されたシステム、方法、装置、機構、技術、及びその一部に対して様々な変形が行われてもよく、そのような変形は、本発明の範囲内にあると企図される。例えば、ステップの特定の順序又は機能要素の配置が、本明細書で説明される様々な実施例において提示されるが、様々な実施例の文脈内においてステップ又は機能要素の様々な他の順序／配置が利用されてもよい。さらに、実施例に対する変形が個別に説明される場合があるが、様々な実施例は、同時又は順番に複数の変形を使用してもよく、複合した変形等も使用してもよい。
【０１０６】
特定のシステム、装置、方法論、機構等が上記で説明するように開示したが、当業者には、上述した以外のより多くの変形が本明細書に記載の新規の概念から逸脱することなく可能であることが明らかであろう。したがって、新規の主題は本開示の要旨を除いて限定されるものではない。さらに、本開示を解釈する際に、全ての用語は、文脈と一致する最も広い可能な方法で解釈されるべきである。特に、「含む（ｃｏｍｐｒｉｓｅ、ｃｏｍｐｒｉｓｉｎｇ）」なる用語は、非排他的な方法で要素、構成要素、又はステップを言及するとして解釈されるべきであり、言及された要素、構成要素、又はステップは、明示的に言及されていない他の要素、構成要素、又はステップと共に存在、利用、又は結合されてもよいことを示す。さらに、本明細書に記載した参考文献は、本願の一部をなすものでもあり、完全に記載されているかのようにその全体が援用されている。
【０１０７】
様々な実施例の態様は、特許請求の範囲及び／又は以下の番号付きの項において特定される。
【０１０８】
１．少なくとも１つのビット・セル演算装置に結合されるビット・セル格納回路と、上記ビット・セル演算装置に結合されるビット・セル・コンデンサとを備え、上記ビット・セル・コンデンサは、上記ビット・セル・コンデンサと追加のコンデンサとの間にスイッチを設けることなく、１つ以上の追加のコンデンサにさらに結合されるビット・セル回路構成。
【０１０９】
２．上記ビット・セル・コンデンサの陰極プレートは、上記ビット・セル演算装置に結合される、第１項に記載のビット・セル回路構成。
【０１１０】
３．上記ビット・セル・コンデンサの陽極プレートは、上記追加のコンデンサに結合される、第１項に記載のビット・セル回路構成。
【０１１１】
４．上記ビット・セル演算装置は、２つのオペランドによって演算動作を実行するように構成される、第１項に記載のビット・セル回路構成。
【０１１２】
５．図１１によって図示されるようなビット・セル回路構成。
【０１１３】
６．上記構成によって、格納データと入力データとの間でＸＮＯＲ又はＡＮＤ演算の実装が可能となる、第５項に記載のビット・セル回路構成。
【０１１４】
７．上記ビット・セル・コンデンサは、ともに少なくとも２セットになるように結合される、第１項の少なくとも２つのビット・セル構成のためのインターリーブ・レイアウト。
【０１１５】
８．上記結合されたビット・セル・コンデンサのセットは、１つ以上のビット・セル・トランジスタの上に配置される、第７項に記載のインターリーブ・レイアウト。
【０１１６】
９．ローカル・コンデンサの１つのプレートを駆動し、他のビット・セル・コンデンサへの結合は他方のプレートで実現される、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セル。
【０１１７】
１０．格納データと入力データとの間でＸＮＯＲ演算又はＡＮＤ演算を実装できるチャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セル。
【０１１８】
１１．ビット・セル・コンデンサは、複数の異なるセットになるように結合される、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セルのためのインターリーブ・レイアウト。
【０１１９】
１２．ビット・セル・コンデンサが複数の異なるセットになるように結合されることによって、Ｘ方向のインターリーブに対してＸセット存在し、ただし、Ｘは１より大きい整数である、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セルのためのインターリーブ・レイアウト。
【０１２０】
１３．上記結合されたコンデンサの異なるセットは、上記ビット・セル・トランジスタの上に配置される、チャージ・ドメイン・イン・メモリ・コンピューティング・ビット・セルのためのレイアウト。
【０１２１】
１４．ビット・セルの格納データと１−ｂ入力信号との間でチャージ・ドメイン演算を実行するように構成された乗算ビット・セル（Ｍ−ＢＣ）。
【０１２２】
１５．上記チャージ・ドメイン演算を実行するために１つ以上のＮＭＯＳトランジスタが利用される、第１４項に記載のＭ−ＢＣ。
【０１２３】
１６．上記ビット・セルの上に配置された金属構造であるコンデンサをさらに備える、第１４項に記載のＭ−ＢＣ。
【０１２４】
１７．上記Ｍ−ＢＣは論理演算を実装するように構成される、第１４項に記載のＭ−ＢＣ。
【０１２５】
１８．上記論理演算は、ＸＮＯＲ演算、ＮＡＮＤ演算、ＡＮＤ演算、及び他の論理演算を含む、第１７項に記載のＭ−ＢＣ。
【０１２６】
１９．図１２に図示されるようなレイアウトをさらに備える、第１４項に記載のＭ−ＢＣ。
【０１２７】
２０．６Ｔセルの拡張レイアウトをさらに備える、第１４項に記載のＭ−ＢＣ。
【０１２８】
２１．正規のポリ構造を有するトランジスタをさらに備える、第２０項に記載のＭ−ＢＣ。
【０１２９】
２２．図１３に図示するようなレイアウトをさらに備える、第１４項に記載のＭ−ＢＣ。
【０１３０】
本発明の教示を組み込んだ様々な実施例を本明細書に詳細に図示及び説明したが、当業者は、これらの教示を依然として組み込んだ多くの他の変形実施例を容易に考え出すことが可能である。したがって、上記は本発明の様々な実施例に関するが、本発明の他及びさらなる実施例は、その基本的な範囲から逸脱することなく考え出され得る。
【図１】
2021527886.tif 000006
【図２】
2021527886.tif 000007
【図３】
2021527886.tif 000008
【図４】
2021527886.tif 000009
【図５】
2021527886.tif 000010
【図６】
2021527886.tif 000011
【図７】
2021527886.tif 000012
【図８Ａ】
2021527886.tif 000013
【図８Ｂ】
2021527886.tif 000014
【図９】
2021527886.tif 000015
【図１０】
2021527886.tif 000016
【図１１】
2021527886.tif 000017
【図１２】
2021527886.tif 000018
【図１３】
2021527886.tif 000019
【図１４Ａ】
2021527886.tif 000020
【図１４Ｂ】
2021527886.tif 000021
【図１５】
2021527886.tif 000022
【図１６】
2021527886.tif 000023
【国際調査報告】
2021527886.tif 000024