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

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

▶ インフィニオン テクノロジーズ エルエルシーの特許一覧

特許7542638MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法
<>
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図1A
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図1B
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図2
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図3
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図4A
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図4B
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図4C
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図4D
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図5
  • 特許-MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-22
(45)【発行日】2024-08-30
(54)【発明の名称】MAC演算を実行するためのインメモリコンピューティングアーキテクチャおよび方法
(51)【国際特許分類】
   G06G 7/60 20060101AFI20240823BHJP
   G06F 12/00 20060101ALI20240823BHJP
   G06G 7/184 20060101ALI20240823BHJP
   G06G 7/16 20060101ALI20240823BHJP
   G06G 7/14 20060101ALI20240823BHJP
【FI】
G06G7/60
G06F12/00 560F
G06G7/184
G06G7/16 510
G06G7/14
【請求項の数】 20
(21)【出願番号】P 2022552684
(86)(22)【出願日】2021-02-26
(65)【公表番号】
(43)【公表日】2023-04-19
(86)【国際出願番号】 US2021019760
(87)【国際公開番号】W WO2021178225
(87)【国際公開日】2021-09-10
【審査請求日】2024-02-26
(31)【優先権主張番号】62/983,866
(32)【優先日】2020-03-02
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/908,210
(32)【優先日】2020-06-22
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】522029730
【氏名又は名称】インフィニオン テクノロジーズ エルエルシー
【氏名又は名称原語表記】Infineon Technologies LLC
【住所又は居所原語表記】198 Champion Court, San Jose, CA 95134, United States of America
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ラメシュ チェトゥヴェッティ
(72)【発明者】
【氏名】ヴィジェイ ラグハヴァン
(72)【発明者】
【氏名】ハンス ファン アントウェルペン
【審査官】征矢 崇
(56)【参考文献】
【文献】国際公開第2018/062021(WO,A1)
【文献】特開平09-198365(JP,A)
【文献】特開2005-122466(JP,A)
【文献】特許第6521207(JP,B1)
【文献】特許第6540931(JP,B1)
【文献】米国特許第06868009(US,B1)
【文献】米国特許第06859872(US,B1)
【文献】米国特許出願公開第2009/0207642(US,A1)
【文献】米国特許出願公開第2010/0172180(US,A1)
【文献】特開2020-035502(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06G7/14;7/16;7/60;7/184
G06N3/063
G06F12/00
G06F17/00-17/18
(57)【特許請求の範囲】
【請求項1】
乗累(MAC)コアにより実施される方法であって、前記方法は、
前記MACコアが、複数の第1の入力バイトのそれぞれを行および列に配置されたメモリセルのアレイにおける複数の行のうちの1つの行に結合するステップであって、1つの列内の各メモリセルは、共有ビット線に結合されているステップと、
前記MACコアが、複数の第1の入力バイトのビットを各行の各メモリセルに順次シフトするステップと、
を含み、ビットごとに、
前記MACコアが、各メモリセルに蓄積された重みを各ビットに乗算し、前記ビットの状態に基づいて各メモリセルを活性化することにより、ビットと内部に蓄積された重みとの積に比例する、活性化された各メモリセルからの重み付けビット線電流が形成され、
前記MACコアが、それぞれ前記列のうちの1つの列の共有ビット線に結合された第1の電荷蓄積バンクに、前記列の各活性化メモリセルからの重み付けビット線電流の和によって形成された電荷を累積し
記シフト、前記乗算および前記累積と同時に、前記MACコアが、第2の電荷蓄積バンクに先行して累積された複数の第2の入力バイトから、結合された複数のアナログ/デジタル変換器(ADC)を用いて、重み付けビット線電流の和によって形成された電荷出力バイト変換する
方法。
【請求項2】
前記シフト、前記乗算および前記累積は、デジタル/アナログ変換器を用いて複数の第1の入力バイトのビットを変換することなく達成される、
請求項1記載の方法。
【請求項3】
前記方法は、前記複数の第1の入力バイトのビットがシフトされて電荷が前記第1の電荷蓄積バンクに累積され、かつ前記第2の電荷蓄積バンク電荷が変換された後に、前記MACコアが、前記第1の電荷蓄積バンクを前記第2の電荷蓄積バンクと交換するステップをさらに含む、
請求項1記載の方法。
【請求項4】
前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクのそれぞれは、異なるキャパシタンスを有する複数のビット線キャパシタを備え、
電荷の累積は、前記複数の第1の入力バイトにおけるビットの重要度に関連して選択されたキャパシタンスを有する、前記複数のビット線キャパシタのうちの1つのビット線キャパシタのビットをそれぞれ順次シフトすることによって、形成された電荷を1つの列に累積することを含む、
請求項1記載の方法。
【請求項5】
前記各行にシフトされた第1のビットは、前記行に結合された前記第1の入力バイトの最上位ビット(MSB)であり、
1つの列の前記第1のビットからの重み付けビット線電流の和によって形成された電荷を累積することは、最大のキャパシタンスを有する前記第1の電荷蓄積バンク内のビット線キャパシタに電荷を累積することを含む、
請求項4記載の方法。
【請求項6】
前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクのそれぞれは、その出力ノードに結合されたダミーキャパシタをさらに備え、
前記第2の電荷蓄積バンクに先行して累積された電荷を変換することは、前記複数のビット線キャパシタに蓄積された電荷を前記ダミーキャパシタに再分配して、前記複数のビット線キャパシタのそれぞれに蓄積された電荷に関連する電圧をスケーリングするための等価電圧を提供することを含む、
請求項4記載の方法。
【請求項7】
各メモリセルは、マルチレベル不揮発性メモリ(NVM)デバイスを含み、
前記方法は、前記複数の第1の入力バイトのビットを各メモリセルに順次シフトする前に、前記MACコアが、各NVMデバイスに重みを蓄積するステップをさらに含む、
請求項1記載の方法。
【請求項8】
各メモリセルは、前記共有ビット線に結合された第1のNVMデバイスと、前記列のメモリセル内の第2のNVMデバイスにより共有される第2の共有ビット線に結合された第2のNVMデバイスと、を含む、2つのマルチレベル不揮発性メモリ(NVM)デバイスを含み、
前記方法は、前記複数の第1の入力バイトのビットを各メモリセルに順次シフトする前に、前記MACコアが、前記メモリセル内の前記第1のNVMデバイスおよび前記第2のNVMデバイスのそれぞれに異なる重みを蓄積するステップをさらに含む、
請求項1記載の方法。
【請求項9】
前記第1のNVMデバイスおよび前記第2のNVMデバイスのそれぞれに蓄積される前記異なる重みは、反対極性を有する、
請求項8記載の方法。
【請求項10】
乗累(MAC)コアであって、前記乗累(MAC)コアは、
行および列に配置されたメモリセルのアレイであって、1つの列内の各メモリセルが共有ビット線に結合されているアレイと、
それぞれ前記アレイの1つの行に結合されており、第1の入力バイトのビットを前記行に順次シフトし、前記ビットの状態に基づいて前記メモリセルを活性化し、ビットと内部に蓄積された重みとの積に比例する、活性化された各メモリセルからの重み付けビット線電流を形成する複数のレジスタと、
それぞれ前記列のうちの1つの列において前記共有ビット線に結合されており、重み付けビット線電流の和を受け取って、前記重み付けビット線電流の和によって形成された電荷を前記入力バイトのビットごとに累積するように構成されている複数の第1の電荷蓄積バンクと、
複数のアナログ/デジタル変換器(ADC)に結合されており、それぞれが前記シフトおよび前記累積と同時に、先行して受け取られた第2の入力バイトのビットごとにスケーリングされた電圧を、出力バイトへの変換のために前記複数のADCに供給するように構成されている複数の第2の電荷蓄積バンクと、
前記第1の入力バイトの各ビットが前記第1の電荷蓄積バンクに累積されて前記第2の電荷蓄積バンクの電荷が変換された後に前記第1の電荷蓄積バンクが前記第2の電荷蓄積バンクに切り替えられるように、複数の前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクに結合されているコントローラと、
を備える乗累(MAC)コア。
【請求項11】
前記MACコアは、前記複数のレジスタと前記アレイとの間にデジタル/アナログ変換器を含まない、
請求項10記載のMACコア。
【請求項12】
前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクのそれぞれは、複数のビット線キャパシタを備え、前記複数のビット線キャパシタは、前記第1の入力バイトにおけるビットの重要度に関して選択されたキャパシタンスを有する前記複数のビット線キャパシタのうちの1つのビット線キャパシタのビットをそれぞれ順次シフトすることによって1つの列に形成された電を累積するために異なるキャパシタンスを有する、
請求項10記載のMACコア。
【請求項13】
前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクのそれぞれは、その出力ノードに結合されたダミーキャパシタをさらに備え、前記ダミーキャパシタは、前記複数のビット線キャパシタに蓄積された電荷を前記ダミーキャパシタに再分配して、前記複数のビット線キャパシタのそれぞれに蓄積された電荷に関連するスケーリングされた電圧と等価の電圧を提供する、
請求項12記載のMACコア。
【請求項14】
各メモリセルは、各メモリセルに重みが蓄積されたマルチレベル不揮発性メモリ(NVM)デバイスを含む、
請求項10記載のMACコア。
【請求項15】
各メモリセルは、前記共有ビット線に結合された第1のNVMデバイスと、前記列のメモリセル内の第2のNVMデバイスにより共有される第2の共有ビット線に結合された第2のNVMデバイスと、を含む、2つのマルチレベル不揮発性メモリ(NVM)デバイスを含み、前記第1のNVMデバイスと前記第2のNVMデバイスとは、異なる重みを蓄積する、
請求項14記載のMACコア。
【請求項16】
前記第1の入力バイトの各ビットから生成されたスケーリングされた電荷を前記第1の電荷蓄積バンクに累積する時間は、前記第2の電荷蓄積バンクの電荷を変換する時間よりも長く、前記複数のADCは、複数の前記第2の電荷蓄積バンクの電荷の変換を行うために時間多重される、
請求項10記載のMACコア。
【請求項17】
人工知能(AI)システムであって、前記人工知能(AI)システムは、
マイクロコントローラと、
複数の乗累(MAC)コアと、
を備え、各MACコアは、
行および列に配置されたメモリセルアレイであって、各メモリセルが不揮発性メモリ(NVM)デバイスを含み、各列が列内のNVMデバイスを接続するビット線を含むアレイと、
それぞれ前記アレイの1つの行に結合されており、第1の入力バイトのビットを前記行に順次シフトして、前記ビットの状態に基づいて前記NVMデバイスを活性化し、ビットと内部に蓄積された重みとの積に比例する、活性化された各NVMデバイスからの重み付けビット線電流を形成する複数のレジスタと、
それぞれ前記列のうちの1つの列のビット線に結合されており、重み付けビット線電流の和を受け取って、前記重み付けビット線電流の和によって形成された電荷を前記入力バイトのビットごとに累積するように構成されている複数の第1の電荷蓄積バンクと、
複数のアナログ/デジタル変換器(ADC)に結合されており、それぞれ前記シフトおよび前記累積と同時に、先行して受け取られた第2の入力バイトのビットごとにスケーリングされた電圧を、出力バイトへの変換のために前記複数のADCに供給するように構成されている複数の第2の電荷蓄積バンクと、
前記第1の入力バイトの各ビットが前記第1の電荷蓄積バンクに累積されて前記第2の電荷蓄積バンクの電荷が変換された後に前記第1の電荷蓄積バンクが前記第2の電荷蓄積バンクに切り替えられるように複数の前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクに結合されているコントローラと、
を含むシステム。
【請求項18】
前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクのそれぞれは、複数のビット線キャパシタを備え、前記複数のビット線キャパシタは、前記第1の入力バイトにおけるビットの重要度に関して選択されたキャパシタンスを有する前記複数のビット線キャパシタのうちの1つのビット線キャパシタのビットをそれぞれ順次シフトすることによって1つの列に形成された電を累積するために異なるキャパシタンスを有する、
請求項17記載のシステム。
【請求項19】
前記第1の電荷蓄積バンクおよび前記第2の電荷蓄積バンクのそれぞれは、その出力ノードに結合されたダミーキャパシタをさらに備え、前記ダミーキャパシタは、前記複数のビット線キャパシタに蓄積された電荷を前記ダミーキャパシタに再分配して、前記複数のビット線キャパシタのそれぞれに蓄積された電荷に関連するスケーリングされた電圧と等価の電圧を提供する、
請求項18記載のシステム。
【請求項20】
各NVMデバイスは、各メモリセルにおける重みが蓄積されたマルチレベルNVMデバイスを備える、
請求項17記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、米国特許法第119条(e)に基づき、2020年3月2日付にて出願された米国仮特許出願第62/983866号の優先権の利益を主張する、2020年6月22日に出願された米国非仮出願第16/908210号の国際出願であり、その全内容が参照により本明細書に援用される。
【0002】
技術分野
本開示は、概して、インメモリコンピューティング(IMC)、より具体的には、IMCアーキテクチャおよび乗累(MAC)演算を実行するためにIMCアーキテクチャを動作させる方法に関する。
【背景技術】
【0003】
インメモリコンピューティング(IMC)またはインメモリ処理は、メモリからデータをフェッチしてプロセッサ内の別個の計算素子において計算を実行するのではなく、メモリ内のデータの計算を実行するための開発技術である。人工知能(AI)に対するフォンノイマン計算アーキテクチャのアプローチは、ニューラルネットワークにおいて使用される蓄積された重みおよびデータをフェッチし、中間結果を計算要素に蓄積するために、連続的な外部メモリアクセスを必要とする。当該外部メモリと処理構造との間のデータ移動によって、システム電力効率が制限されている。IMCでは、メモリ内に蓄積されたデータをメモリ外の処理要素とやり取りすることがないため、データ処理速度および計算の電力効率が大幅に向上する。IMCは、電力に感受性の高いAI用途のための高速ニューラルネットワークアーキテクチャに特に有用であることが判明している。
【0004】
現在のIMC技術は主にデジタルインプリメンテーションを使用しており、これはデータ処理速度の幾つかの改善を提供するが、電力効率の重大な問題から悪影響を受ける可能性がある。特に、AI用途で使用されるIMCインプリメンテーションは、アナログでの乗累(MAC)演算のためにメモリ行にアクセスする前に、入力デジタルバイトストリームのアナログ等価表現への変換に関連するレイテンシに起因して、電力効率を失う。アナログIMCのソリューションを提供する従来の試みは、入力データバイトストリームをメモリアレイまたはマトリクス内の行ごとにアナログ変換するデジタル/アナログ変換器(DAC)に依拠しており、またDAC出力を使用して、データマトリクスの重みを蓄積するメモリセルが駆動される。したがって、現在のアナログIMCインプリメンテーションは、入力データバイトストリームをアナログに変換するために使用されるDACに起因して、また入力データバイトストリームから出力アナログ電圧を生成する際に生じるレイテンシに起因して、大きな電力オーバーヘッドを有する。
【0005】
したがって、入力デジタルバイトストリームを高速にかつ高い電力効率でアナログ変換することができる乗累(MAC)演算を実行するための、アナログIMCアーキテクチャおよびその動作方法が必要とされている。
【発明の概要】
【課題を解決するための手段】
【0006】
インメモリコンピューティング(IMC)アーキテクチャおよび乗累(MAC)演算を実行するための方法が提供される。MAC演算を実行するためのIMCアーキテクチャおよびIMCアーキテクチャを動作させる方法は、人工知能(AI)装置で使用されるようなハードウェアアクセラレータ内でまたはこれと共に使用される際に、特に有用である。
【0007】
IMCアーキテクチャは行および列として配置されたメモリセルのアレイを含むMACコアを含み、各メモリセルはマルチレベル不揮発性メモリ(NVM)デバイスを含み、各列は列内のNVMデバイスを接続する共有ビット線を含む。それぞれアレイの1つの行に結合された複数のレジスタは、第1の入力バイトのビットをこの行に順次シフトし、このビットの状態に基づいてNVMデバイスを活性化し、ビットと内部に蓄積された重みとの積に比例して、活性化された各NVMデバイスから重み付けビット線電流を形成するように構成されている。複数の第1の電荷蓄積バンクは、それぞれ複数の列のうちの1つの列の共有ビット線に結合されており、重み付けビット線電流の和を受け取って、この重み付けビット線電流の和によって形成される電荷を入力バイトのビットごとに累積するように構成されている。MACコアは、複数のアナログ/デジタル変換器(ADC)に結合された複数の第2の電荷蓄積バンクをさらに含み、第2の電荷蓄積バンクのそれぞれは、シフトおよび累積と同時に、先行して受け取られた第2の入力バイトのビットごとにスケーリングされた電圧をADCに供給して出力バイトへ変換させるように構成されている。複数の第1の電荷蓄積バンクおよび第2の電荷蓄積バンクに結合されたコントローラは、複数の第1の入力バイトの各ビットが第1の電荷蓄積バンクに累積されて第2の電荷蓄積バンクの電荷が変換された後に第1の電荷蓄積バンクが第2の電荷蓄積バンクに切り替えられるかまたはこれらが交換されるように構成されている。
【0008】
上記のアーキテクチャを使用してMAC演算を実行する方法は、レジスタに蓄積された複数の第1の入力バイトのそれぞれをアレイ内の複数の行のうちの1つの行に結合させ、第1の入力バイトのビットを各行の各メモリセルに順次シフトすることと、ビットの状態に基づいて各メモリセルを活性化することにより、ビットごとにビットと各メモリセル内に蓄積された重みとを乗算して、ビットと内部に蓄積された重みとの積に比例する、活性化された各メモリセルからの重み付けビット線電流を形成することと、を含む。当該列内の各活性化メモリセルからの重み付けビット線電流の和によって形成された電荷は、それぞれ列のうちの1つの列における共有ビット線に結合された第1の電荷蓄積バンクに累積される。一般的に、方法では、第1の電荷蓄積バンクにおいてシフト、乗算および累積が行われ、第2の電荷蓄積バンクに先行して累積された複数の第2の入力バイトから、複数のADCを用いて、重み付けビット線電流の和によって形成された電荷の出力バイトへの変換が行われ、第1の入力バイトの各ビットが累積されて第2の電荷蓄積バンクの電荷が変換された後、第1の電荷蓄積バンクと第2の電荷蓄積バンクとが交換される。
【0009】
発明の実施形態のさらなる特徴および利点、ならびに発明の種々の実施形態の構造および動作を、添付の図面を参照しながら詳細に説明する。発明は本明細書に記載する特定の実施形態に限定されるものでないことに留意されたい。これらの実施形態は例示のみを目的として本明細書に提示されている。付加的な実施形態は、本明細書に含まれる教説に基づいて当業者に明らかとなるであろう。
【0010】
発明の実施形態を、単に例示としてであるが添付の概略的な図面に関連して以下に説明し、図中、対応する参照符号は対応する部材を示す。さらに、本明細書に組み込まれてその一部を成す添付の図面は本発明の実施形態を示すものであり、説明と共に用いることで本発明の基本方式を説明し、関連分野の当業者が本発明を製造かつ使用できるようにすることにも役立つ。
【図面の簡単な説明】
【0011】
図1A】レイテンシを削減してMAC演算の実行における効率を改善するための、メモリアレイ、複数の電荷蓄積バンクおよびアナログ/デジタル変換器(ADC)を含む、アナログの乗累(MAC)コアの一実施形態の概略的なブロック図である。
図1B】メモリアレイ内の各メモリセルが2つの不揮発性メモリ(NVM)セルを含み、各NVMセルが1つもしくは複数のNVMデバイスを含む、MACコアの別の実施形態の概略的なブロック図である。
図2】SONOS NVMトランジスタの側断面図を示すブロック図である。
図3図1Aまたは図1BのMACコアを使用してMAC演算を実行するための方法のフローチャートである。
図4A図1Aおよび図1BのMACコアにおいて使用される電荷蓄積バンクであって、入力データバイトの第1のビットが各行にシフトされて得られた列内の電流をサンプリングし、生じた電荷を電荷蓄積バンク内の電荷蓄積素子に蓄積するように構成された電荷蓄積バンクの一実施形態の概略的なブロック図である。
図4B】入力データバイトの第2のビットから得られた列内の電流をサンプリングし、生じた電荷を電荷蓄積バンクの第2の電荷蓄積素子に蓄積するように構成された、図4Aの電荷蓄積バンクの概略的なブロック図である。
図4C】入力データバイトの全てのビットから得られる電荷を保持し、各入力ビットに関連付けられた電圧のスケーリングに必要な等価電圧をノードNに供給するように構成された、図4Aの電荷蓄積バンクの概略ブロック図である。
図4D】逐次比較レジスタアナログ/デジタル変換器(SAR ADC)を使用して、入力データバイトの全ビットについてのMAC演算から得られる電荷を出力データバイトaに変換するように構成された、図4Aの電荷蓄積バンクの概略的なブロック図である。
図5】単一のビット線に結合された単一の電荷蓄積バンクを動作させて、入力データバイトの各行へのシフトから生じる電流を累積し、入力データバイトの全てのビットについてのMAC演算を実行し、入力データバイトの全ビットについてのMAC演算から生じる電荷を出力データバイトに変換する方法のフローチャートである。
図6】本開示に従って動作するMACコアを備えた複数のニューラルエンジンを含むハードウェアアクセラレータを備えた人工知能(AI)システムの一実施形態の概略的なブロック図である。
【発明を実施するための形態】
【0012】
インメモリコンピューティング(IMC)アーキテクチャおよびこれを用いて乗累演算を迅速かつ効率的に行うための動作方法を提供する。本開示のIMCアーキテクチャおよび方法は、人工知能(AI)装置において使用されるような複数のニューラルエンジンコアを含むハードウェアアクセラレータ内でまたはハードウェアアクセラレータと共に使用される際に、特に有用である。
【0013】
以下の説明では、説明の目的で、本発明の完全な理解を提供するために、多数の特定の詳細を記載する。ただし、本発明がこれらの具体的な詳細を伴わずに実施可能であることは当業者には明らかであろう。他の例では、本明細書の理解を不必要に曖昧にすることを避けるため、周知の構造および技術は詳細には示されていないかまたはブロック図の形態で示されている。
【0014】
本明細書において「一実施形態」または「ある実施形態」とは、実施形態に関連して記載される特定の特徴、構造または特性が、発明の少なくとも1つの実施形態に含まれることを意味する。本明細書中の様々な箇所における「一実施形態では」なる文言の出現は、必ずしも全てが同じ実施形態を指すとは限らない。本明細書で使用される「接続する」なる用語は、2つ以上の要素または素子を電気的に直接に接続することと1つもしくは複数の介在要素を介して間接的に接続することとの双方を含みうる。
【0015】
図1Aおよび図1Bは、レイテンシを削減してMAC演算を実行する際の効率を改善するための、人工知能(AI)装置またはシステムにおけるハードウェアアクセラレータでの使用に適した、アナログの乗累(MAC)エンジンまたはコア100の実施形態を示す概略的なブロック図である。
【0016】
図1Aを参照すると、一実施形態では、MACコア100は、それぞれ(図1Aでは楕円W00,W01,W10,…などによって示されている)プログラミングされた値または重みを内部に蓄積して複数(m)個の行および複数(n)個の列として配置された、メモリユニットまたはセル104のメモリアレイまたはアレイ102を含み、ここで、列内の各メモリセルは共有ビット線106に結合されており、行内の各メモリセルは共有ワード線108に結合されている。図示の実施形態では、メモリアレイ102は4行8列を有する4×8列のアレイであるが、代替的に、図示の行または列よりも少ない行または列を有する実施形態を含む任意の数の行および列を有しうることが理解されるであろう。MACコア100はさらに、マルチビット入力データワードまたはマルチビット入力データバイトを蓄積することができる複数のレジスタ110、一般的にはメモリアレイ102の各行に対する少なくとも1つのレジスタを含む。各レジスタ110は、共有ワード線を介してメモリアレイ102の1つの行に結合されており、第1の入力データバイトのビットすなわち図示の実施形態ではD0~D7をクロック信号に応答して行に順次シフトし、シフトされたビットの状態に基づいて行内のメモリセル104を活性化し、ビットと内部に蓄積された重みとの積に比例する、列内の活性化された各メモリセルからの当該列の共有ビット線上の重み付けビット線電流を形成する。
【0017】
MACコア100はさらに、それぞれ列のうちの1つの列の共有ビット線に接続された複数の累算器112を含み、当該複数の累算器112は、それぞれ切り替え可能に共有ビット線106に接続されており、かつ列内の活性化されたメモリセル104から重み付けビット線電流の和を受け取って、この重み付けビット線電流の和によって形成されたスケーリングされた電荷を第1の入力データバイトのビットごとに累積するように構成された第1の電荷蓄積バンク114aを含む。累算器112のそれぞれは、複数のアナログ/デジタル変換器(ADC116)に結合された第2の電荷蓄積バンク114bをさらに含み、第2の電荷蓄積バンクのそれぞれは、クロック信号に応答して、各行へのビットのシフトし、かつ第1の電荷蓄積バンク114aにスケーリングされた電荷を累積すると同時に、累積した電圧を先行して受け取られた第2の入力データバイトのビット線ごとにADC116へ供給し、マルチビット出力レジスタ118に蓄積される出力バイトのデジタルビットへ変換させるように構成されている。例示的な一実施形態では、当該演算は、1ビットを第1の電荷蓄積バンクにシフトさせる時間が、先行して受け取られた第2の入力データバイトの1ビット線を変換する時間に実質的に等しくなるようにタイミング制御される。
【0018】
MACコア100は、第1の電荷蓄積バンク114aおよび第2の電荷蓄積バンク114bに結合されたコントローラ120をさらに含み、累算器112のそれぞれにおいて、当該コントローラは、複数の第1の入力データバイトの全ビットが第1の電荷蓄積バンクに累積されて第2の電荷蓄積バンクの電荷が変換された後に第1の電荷蓄積バンク114aが第2の電荷蓄積バンク114bに切り替えられるかまたはこれらが交換されるように構成されている。切り替えまたは交換とは、メモリアレイ102の列内の共有ビット線106に結合された各累算器112内の第1の電荷蓄積バンク114aが共有ビット線またはメモリアレイから切り離され、電荷‐電圧変換のために複数のADC116に結合される一方、第2の電荷蓄積バンク114bが複数のADCから実質的に同時に切り離されて、電荷累積のためにメモリアレイ102内の共有ビット線に結合されることを意味する。図示されている幾つかの実施形態では、コントローラ120はMACコア100に含まれており、MACコアの他の要素と共通のもしくは共有の基板上に一体的に作製されているか、または共有の集積回路パッケージにパッケージングされているか、またはMACコアの他の要素と共通のもしくは共有の回路基板に取り付けられていてよい。代替的に、コントローラ120は、ADC116のうちの1つのADCにおけるコントローラ、またはマイクロコントロールユニット(MCU)、またはMACコア100を含むハードウェアアクセラレータ内のプロセッサ、またはハードウェアアクセラレータが使用されるシステム内のプロセッサであってもよい。
【0019】
一般的に、MACコア100内の複数のADC116は、第1の入力データバイトの時間ビットがメモリアレイ102の各行にシフトされている間、第2の各電荷蓄積バンク114bのそれぞれに蓄積された全ての電荷の変換をADCが完了し、ビットごとにスケーリングされた電荷が第1の電荷蓄積バンク114aに累積されるように選択される。複数の第2の電荷蓄積バンク114bに蓄積された累積電荷の変換は、入力データバイトのビットのシフトおよび第1の電荷蓄積バンク114aへのスケーリングされた電荷の累積が行われるときと実質的に同じ第1のクロックサイクルで開始されるが、共有ビット線106の読み出しに必要な時間またはクロックサイクル数は、第2の電荷蓄積バンク114bのそれぞれに蓄積された全電荷の変換と同じである必要はないことに留意されたい。1つのビット線電流の読み出しに要する時間がADC変換時間に等しい場合、共有ビット線106ごとに8ビットのスケーリングされた電流が第1の電荷蓄積バンク114aに累積される一方、第2の電荷蓄積バンク114bに蓄積された先行の入力データバイトからの電荷の変換には単一の8ビットADC116で足りることとなり、ADC116の数は最も近い整数に丸められたn/b以上となるが、ここでnはメモリアレイ102内の列であり、bは入力データバイトのビット数である。なお、第1の電荷蓄積バンク114aにおいて各ビット読み出しにつきスケーリングされた電荷のシフトおよび累積により多くの時間が必要とされる場合、例えば、共有のビット線当たりの電荷蓄積時間がADC変換に必要な時間またはクロックサイクル数の2倍量となる場合、1つのADCを時間多重化してビット線106の数または列数の2倍で変換を行うことができるので、ADC116の数を半減して、これにより、ADC面積を低減しつつ、効率的な使用およびADCの100%スループットを維持することができる。
【0020】
ここで、入力データバイトのシフトおよび累積に必要とされるクロックサイクル数は、電圧を変換するためのクロックサイクル数よりも数(x)倍大きく、MACコア100は、図示のような、第1の電荷蓄積バンク114aおよび第2の電荷蓄積バンク114bに供給されるクロック信号の周波数を増大させるクロックバッファ122と、複数のADC116と、を含む。
【0021】
一般に、図1Aに示されている実施形態のごとく、メモリアレイ102内の各メモリセル104は、各メモリセル内に重み(アナログ、NVMセルに蓄積可能な複数の値レベルに相当する)が蓄積された、マルチレベル不揮発性メモリ(NVM)デバイスまたはトランジスタを含む。図1Bに示されている別の実施形態では、メモリアレイ102内の各メモリユニット104は、サブ列Pで表現された第1のビット線106aに結合された第1のNVMセルとサブ列Nで表現された第2のビット線106bに結合された第2のNVMセルとを含む、2つのNVMデバイスまたはNVMトランジスタを有することができる。当該実施形態では、メモリアレイ102内の各メモリセル104内へ値または重みをプログラミングすることは、サブ列Pの第1のNVMデバイスとサブ列Nの第2のNVMセルとを、反対極性NおよびPを有する第1のNVMデバイスおよび第2のNVMデバイスのそれぞれに蓄積された異なる値または異なる重みでプログラミングすることを含む。また、当該実施形態において図1Bに示されているように、複数のADC116は、第1のビット線106aおよび第2のビット線106bに結合された差動入力を有する差動ADCを含みうる。
【0022】
いずれの実施形態においても、マルチレベルNVMデバイスは、1つもしくは複数の窒化物または酸窒化物の電荷トラップ層を含むマルチレベルのシリコン-酸化物-窒化物-酸化物-シリコン(SONOS)NVMトランジスタを含むことができ、ONO型NVMトランジスタのゲートに結合されたワード線に印加されるべき閾値電圧(VTH)をシフトさせるために複数の電荷レベルを蓄積もしくはトラップし、トランジスタをターンオンさせてメモリセル104にプログラミング値または重みをプログラミングもしくは蓄積させることができる。図2はSONOS NVMトランジスタの側断面図を示すブロック図である。図2を参照すると、SONOS NVMトランジスタ200は、基板204を覆うように形成されたゲートスタック202を含む。NVMトランジスタ200はさらに、ゲートスタック202の両側の基板204内のウェル210に形成されたソース/ドレイン領域206/208と、ゲートスタックの下方のチャネル領域212と、ウェル210とのオーミックコンタクトを形成するためのウェル端子またはバルク端子とも称されるボディバイアス端子214と、を含む。ソース領域206、ドレイン領域208、チャネル領域212およびボディバイアス端子214は、NVMトランジスタがp型またはn型のいずれであるかに応じて、ウェル210内へのイオン注入または拡散によって適切なタイプのドーパントを注入することで形成される。ウェル210は、イオン注入または拡散によって形成することもできる。ソース領域206、ドレイン領域208およびボディバイアス端子214はさらに、基板204内の領域とのオーミックコンタクトを形成するために、図示していないシリサイドの薄層を含むことができる。
【0023】
ゲートスタック202は、酸化物トンネル誘電層216と、1つもしくは複数の窒化物または酸窒化物の電荷トラップ層218と、上部の阻止酸化物層220と、制御ゲート222として機能するポリシリコン(ポリ)、シリサイド化ポリシリコンまたは金属の層と、を含む。
【0024】
制御ゲート222、ソース領域206、ドレイン領域208およびボディバイアス端子214が適切にバイアスされていれば、ソース/ドレイン/チャネル領域からの電子がトンネル誘電層216を通って注入またはトンネリングされ、電荷トラップ層218に捕捉される。電荷が注入されるメカニズムは、ファウラー‐ノルドハイム(FN)トンネリングおよびホットキャリア注入の双方を含むことができる。電荷トラップ層218にトラップされた電荷は、ドレインとソースとの間にエネルギバリアを生じさせ、NVMトランジスタ200のターンオフに必要な閾値電圧Vを上昇させ、トランジスタを「プログラミングされた」状態にする。NVMトランジスタ200が「消去」可能となり、またはトラップされた電荷を除去して、制御ゲート222に逆バイアスを印加することによって正孔に置き換えることができる。ソース領域206、ドレイン領域208およびボディバイアス端子214は、マルチレベル閾値電圧(VTH)またはセル電流を変化させて(NVMトランジスタ200を部分的にプログラミングするかまたは部分的に消去して)アナログで蓄積された重み値が表されるように、バイアスされる。
【0025】
マルチレベルSONOS型NVMトランジスタは、例えば共通に割り当てられた同時係属中の2020年3月24日に出願された米国特許出願第16/827948号明細書に記載されており、この文献の開示内容はその全体が参照により本明細書に援用されるものとする。
【0026】
図1Aまたは図1Bに示されているMACコア100の動作時には、レジスタ110に蓄積された入力データバイトが、最上位ビット(MSB)から始まって、ビットごとにメモリアレイ102内へシフトされる。メモリアレイ102の各行には、異なるまたは同一の入力データバイトが供給される。これらの入力データバイトは、例えば、現実の畳み込みニューラルネットワーク(CNN)アプリケーションにおける入力画像ピクセルまたは活性化を表現することができる。シフトされたビットが1である場合には、行における対応するメモリセル104がターンオンされるかまたは読み出し動作のために選択されて、対応するメモリセルのプログラミング値と等価のセル電流またはこれを表現するセル電流が供給され、ビットが0である場合には、メモリセルはターンオンされないかまたは読み出し動作のために選択されず、関連する共有ビット線106には電流が流されない。1つの列の複数の行のメモリセル104が上述したように同時に活性化される場合、当該列に関連する共有ビット線106が同じ列のメモリセルからのセル電流の総和を搬送する。共有ビット線に結合された第1の電荷蓄積バンク114aまたは第2の電荷蓄積バンク114bに累積されたビット線電流は、入力データバイトのビットに関連する重みに基づいて、以下に説明する構造および方法を使用して、電荷蓄積バンク内でスケーリングされる。
【0027】
図1Aを参照して、4×4メモリアレイを形成するために、行数(m)および列数(n)が双方とも4である場合を考察する。第1行に蓄積されるプログラミングされた値または重みは、W00,W01,W02およびW03である。第2行に蓄積される重みは、W10,W11,W12およびW13である。第3行に蓄積される重みはW20,W21,W22およびW23であり、第4行に蓄積される重みはW30,W31,W32およびW33である。
【0028】
上述した手順に従って、8ビット入力データバイトP0<D7:D0>をアレイ102の第1行に順次シフトすると共に、第2の8ビット入力データバイトP1<D7:D0>を第2行に、第3の8ビット入力データバイトP2<D7:D0>を第3行に、第4の8ビット入力データバイトP3<D7:D0>を第4行にそれぞれ順次シフトする。したがって、8つのクロックサイクルの終了時、ビット入力データバイトのそれぞれが各入力データバイトのMSBで始まって順次シフトされた第1列の共有ビット線106は、
【数1】
の有効電流を有する。
【0029】
同様に、ビット入力データバイトのそれぞれが同時に各入力データバイトのMSBで始まって順次シフトされた第2列は、
【数2】
の有効電流を有する。
【0030】
第3列の有効電流および第4列の有効電流も類似であって、各列についての異なる重みまたはプログラミング値、すなわち第3列についてはW02,W12,W22およびW32の重み、第4列についてはW03,W13,W23およびW33の重みのみが異なるはずである。
【0031】
これらのビット線電流をそれぞれ等価のデジタル値に変換することによって、第1列についてはP0W00+P1W10+P2W20+P3W30、第2列についてはP0W01+P1W11+P2W21+P3W31、第3列についてはP0W02+P1W12+P2W22+P3W32、第4列についてはP0W03+P1W13+P2W23+P3W33の有効MAC値が得られる。
【0032】
図3のフローチャートを参照して、次に、図1Aのものと同様のMACコアを使用してMAC演算を実行するための方法について説明する。なお、この図の右側および左側に示されている全体的な順序は同時にまたはほぼ同時に行われるが、右側に示されている別個の離散的な各ステップを左側の各ステップと実質的に並行して行う必要はない。例えば、第2の電荷蓄積バンクに結合されたADCによる変換は第1の電荷蓄積バンク上のビットの累積よりも高速または低速となりうるので、第2の電荷蓄積バンクに蓄積された第1のビット線電荷の変換は、第1の電荷蓄積バンクでの第1のビットの累積と必ずしも正確に重ならない。このため、第1の電荷蓄積バンクの最上位ビット(MSB)による電荷の累積が完了する前に、第2の電荷蓄積バンクからの第1のビット線電荷の変換を完了して、第2のビット線電荷または次のビット線電荷の変換を開始することができる。
【0033】
第1のフェーズでは、bビット(この実施例ではb=8)の複数の入力データバイトの各ビットの電荷が、bまたは8のクロックサイクルにて最上位ビット(MSB)から最下位ビット(LSB)まで第1の電荷蓄積バンクに累積もしくは蓄積される。図3を参照すると、方法は、第1のクロックサイクルにおいて、入力データバイトのそれぞれのMSBをメモリアレイの各行にシフトさせ、得られたMSBデータを第1の電荷蓄積バンクに蓄積させる(301)ことで開始する。入力データバイトのそれぞれのMSBをメモリアレイの各行にシフトすることにより、ビットの状態に基づいて行内の各メモリセルが活性化され、すなわちシフトされたビットが「1」であるときメモリセルが活性化され、各メモリセルの活性化によってビットと内部に蓄積された重みとの積に比例する重み付けビット線電流が生成されることにより、ビットと各メモリセルに蓄積された重みとが乗算される。各列における各活性化メモリセルからの重み付けビット線電流は、列ごとの重み付けビット線電流の和を形成する列内の共有ビット線に結合され、次いで、スケーリングされた電荷へ変換されて、図4および図5を参照して以下で説明するように、第1の電荷蓄積バンクにおける電荷蓄積素子またはキャパシタに累積される。一般に、第1の電荷蓄積バンクおよび第2の電荷蓄積バンクは、入力データバイトのビット数以上の数のサンプリングキャパシタまたはビット線キャパシタを含み、各ビットからのデータまたは電荷はビット線キャパシタの個別の1つに累積される。ビット線キャパシタのそれぞれは異なるキャパシタンスを有し、各ビットから得られるデータは、入力データバイトにおけるビットの重要度に関して選択されるビット線キャパシタに累積される。したがって、各行にシフトされた第1のビットが当該行に結合された第1の入力データバイトのMSBである場合、MSBビットからの重み付けビット線電流の和によって形成された電荷が、最大のキャパシタンスを有する第1の電荷蓄積バンク内のビット線キャパシタに累積される。
【0034】
第2のクロックサイクルでは、入力データバイトのそれぞれの次の最上位ビット(MSB-1)がメモリアレイの各行にシフトされ、結果のMSB-1データが第1の電荷蓄積バンクに蓄積される(302)。この場合も、MSBのアレイへのシフトおよび得られたMSBデータの累積と同様に、行内の各メモリセルはビットの状態に基づいて活性化され、ビットと各メモリセル内に蓄積された重みとが効果的に乗算されて、ビットと内部に蓄積された重みとの積に比例する重み付けビット線電流が形成され、次いでこれが電荷へ変換されて、次に大きなキャパシタンスを有する第1の電荷蓄積バンク内の電荷蓄積素子またはキャパシタに累積される。当該プロセスでは、続いて、連続するクロックサイクルごとにアレイ内の各行に第1の入力バイトのそれぞれの1ビットが順次シフトされ、その後、第1の入力バイトのそれぞれの最下位ビットがメモリアレイの各行にシフトされ、結果のLSBデータが、第1の電荷蓄積バンクの最小のキャパシタンスを有する電荷蓄積素子またはキャパシタに蓄積される(303)。
【0035】
第1の入力データバイトのビットのシフトおよび結果のデータの蓄積もしくは累積と同時にまたはほぼ同時に、複数の第2の電荷蓄積バンクに蓄積された先行の第2の入力データバイトからの累積電荷が、第2の電荷蓄積バンクに結合された複数のADCを使用して、アナログ値からマルチビットのデジタル出力データバイトへ変換される。
【0036】
図3を再び参照すると、ステップ301の同じ第1のクロックサイクルに続く第1の変換ステップにおいて、先行して受け取られた第2の入力データバイトから累積され、アレイの第1列の第1のビット線に結合された第2の電荷蓄積バンクに蓄積された電荷が変換される(304)。当該変換は複数のADCを使用して達成され、図4および図5を参照して以下で詳細に説明するように、第2の電荷蓄積バンク内のビット線キャパシタのそれぞれが第2の電荷蓄積バンクの出力ノードに順次に結合される。次に、第2の入力データバイトから累積され、アレイの第2のビット線に結合された第2の電荷蓄積バンクに蓄積された電荷が変換される(305)。当該変換に続いて、全てのビット線から累積されたデータが変換されるまで、第2の入力データバイトから累積された電荷が変換され、アレイの順次のビット線に結合された複数の第2の電荷蓄積バンクのそれぞれに蓄積される(306)。上記の例では、第1の電荷蓄積バンクおよび第2の電荷蓄積バンクに累積および蓄積されている各入力データバイトのビット数(b)は8である。したがって、累積電荷が変換される複数の第2の電荷蓄積バンクのうちの最後の電荷蓄積バンクは、アレイの第8列のビット線8に結合された第2の電荷蓄積バンクであり、8つのビット線全てに対して変換を実行するために1つのADCがあれば十分でありうる。
【0037】
最後に、第2のフェーズで、電荷蓄積バンクの結合がスワップまたは交換され(307)、ADCが第1のフェーズ中に第1の電荷蓄積バンクに蓄積された電荷の変換を開始する一方、第2の電荷蓄積バンクは次の入力データバイトに対する電荷の累積および蓄積を開始する。スワップまたは交換とは、第1の電荷蓄積バンクがメモリアレイから切り離されて複数のADCに結合され、かつ第2の電荷蓄積バンクが複数のADCから切り離されてメモリアレイに結合されることを意味する。
【0038】
この場合にも、ステップ304~306において説明した複数の第2の電荷貯蔵バンクに蓄積された累積電荷の変換は、ステップ301におけるMSB入力データのシフトおよび累積と実質的に同じ第1のクロックサイクルで開始されるが、上記のステップ301~303において説明したメモリセルの読み出しに必要とされる時間(クロックサイクル数)は同じでなくてよいことに留意されたい。図3に示されている例示的な方法において仮定されているのは、入力バイトの1ビット当たりの電荷蓄積時間とビット線当たりのADC変換時間とが実質的に等しいことである。入力バイトの1ビットのシフトにかかる時間が1つのビット線のADC変換時間に等しい場合、8ビットのスケーリングされた電流がビット線ごとに第1の電荷蓄積バンクに累積される間に、単一のADCがそれぞれアレイの8ビット線の1つに結合された複数の第2の電荷蓄積バンクに蓄積された先行の入力データバイトからの電荷の変換を完了することになる。なお、1ビット当たりの電荷蓄積時間につきさらなる時間が必要な場合、例えば1ビット線のADC変換に必要な時間またはクロックサイクル数の2倍量の時間がかかる場合、1つのADCを多重化してビット線数または列数の2倍の変換を実行することができるので、ADC数を半分に低減して、これにより、ADC面積を低減しつつ、ADCの効率的な使用および100%のスループットを維持することができる。
【0039】
図4Aの概略的なブロック図を参照しながら、MACコア100、例えば図1Aおよび図1Bに示されているMACコア100における使用に適した電荷蓄積バンクを、以下に説明する。図4Aを参照すると、電荷蓄積バンク400は、一般に、電荷蓄積バンクが結合されたアレイ内の1つの列における活性化メモリセルからの複数のビット線電流の和を変換する電流‐電圧(I/V)変換器402、例えばフィードバック抵抗406を含むオペアンプ404と、ビット線電流の和によって生成もしくは形成された電荷のサンプリングまたは累積のための複数の電荷蓄積素子、例えばサンプリングキャパシタまたはビット線キャパシタ408a~408eと、を含む。一般に、サンプリングキャパシタ408a~408eの数は、マルチビット入力バイトにおいて予想されるビット数(b)以上である。したがって、図4Aに示されている実施形態では、電荷蓄積バンク400は、5つのビット入力バイトの累積および変換に特に適しており、5つのサンプリングキャパシタ408a~408eを含む。また、電荷蓄積バンク400は、電荷蓄積バンクの出力ノードNに結合されたダミーキャパシタ(Cdummy410)も含み、このダミーキャパシタには、ADC(この図には図示せず)の素子または回路によるアナログ/デジタル変換の前に各サンプリングキャパシタに蓄積された電荷の電圧をスケーリングするための電圧を導出または形成するために、サンプリングキャパシタ408a~408eに蓄積された全ての電荷を再分配することができる。
【0040】
上記のように、各サンプリングキャパシタ408a~408eは、入力データバイトの各ビットに関連する電圧をスケーリングするために選択された異なるキャパシタンスを有している。例えば、図示の実施形態では、入力データバイトの最上位ビット(MSB)がシフトされた列からのビット線電流(IMSB)が電圧(VMSB)に変換され、キャパシタンス16Cを有するサンプリングキャパシタ408eに電荷として蓄積もしくは累積される。電圧が蓄積もしくは累積された次の上位ビット(VMSB-1)は、キャパシタンス8Cを有するサンプリングキャパシタ408dに蓄積され、VMSB-2はキャパシタンス4Cを有するサンプリングキャパシタ408cに蓄積され、VMSB-3はキャパシタンス2Cを有するサンプリングキャパシタ408bに蓄積され、VLSBはキャパシタンスCを有するサンプリングキャパシタ408aに蓄積される。
【0041】
上記に加えて、電荷蓄積バンク400はさらに、第1のバスもしくは入力バス414をI/V変換器402の出力側または基準電圧(VREF)に結合する第1のスイッチ412と、サンプリングキャパシタ408a~408eのそれぞれに蓄積されたビット線電流の和によって生成された累積電荷を、第2のバスもしくは出力バス418をグラウンドに結合することができる、第2のスイッチ416と、を含む。サンプリングキャパシタ408a~408eそれぞれの第1のプレートまたは上部プレートは、独立したスイッチ420a~420eを介して入力バス414に個別に結合されており、これにより、入力データバイトにおける各ビットのための電荷は、従来のSAR ADCにおいてと同様に全てのサンプリングキャパシタに同時に蓄積されるのではなく、サンプリングキャパシタ408a~408eの1つに個別に累積される。サンプリングキャパシタ408a~408eそれぞれ第2のプレート以降のプレートは互いに並列に結合され、ダミーキャパシタ410以降のプレートは出力バス418に結合される。ダミーキャパシタ410の上部プレートは、スイッチ422を介して入力バスに結合される。I/V変換器402への入力が入力データバイトストリームの特定のビットに対応するビット線からの電流を受け取るメモリアレイの列内の共有ビット線424に結合されると、スイッチ420a~420eが順次ターンオンされ、サンプリングキャパシタ408a~408eのそれぞれを充電する。スイッチ412,416,420a~420eおよび422は、MACコア内のまたはMACコアに結合されたコントローラ(図示せず)によって制御もしくは操作される。
【0042】
図5は、単一のビット線に結合された1つの電荷蓄積バンクを動作させて、入力データバイトの各行へのシフトから得られる電流を累積し、入力データバイトの全てのビットに対してMAC演算を行い、入力データバイトの全てのビットに対するMAC演算から得られた電荷を出力データバイトに変換する方法のフローチャートである。以下の方法は単一のビット線に結合された単一の電荷蓄積バンクについて説明するが、複数の列を含むアレイの列の各ビット線に結合された第1の電荷蓄積バンクおよび第2の電荷蓄積バンクを含むMACコアの実際の動作では、アレイの各ビット線に結合された複数の第1の電荷蓄積バンクおよび第2の電荷蓄積バンクのそれぞれにおいてこれらのステップが同時もしくはほぼ同時に実行されることが理解されよう。
【0043】
図5を参照すると、方法は、第1のフェーズでは、第1のクロックサイクルにおいて、アレイ内の行にシフトされて電荷蓄積バンクに結合された第1の入力データバイトのMSBによって活性化される、第1列における全てのメモリセルからの重み付けビット線電流の和である、第1列のビット線電流(IMSB)を受け取る(502)。次に、重み付けビット線電流の和が電圧(VMSB)に変換され、電荷蓄積バンク内の第1の電荷蓄積素子に電荷として蓄積される(504)。図4Aを参照すると、これは、I/V変換器402を用いて電流を電圧へ変換し、スイッチ412を閉成して入力バス414をI/V変換器402の出力側へ結合し、スイッチ416を閉成して出力バス418をグラウンドへ結合し、スイッチ420eを閉成して第1のキャパシタ408eに累積された電荷を結合することによって達成される。第2のクロックサイクルでは、第1の入力データバイトの次のMSB(MSB-1)がアレイ内の行にシフトされ、電荷蓄積バンクに結合された列内の全ての活性化されたメモリセルからの重み付けビット線電流の和(IMSB-1)が受け取られる(506)。次のMSBから形成された重み付けビット線電流の和は電圧(VMSB-1)に変換され、電荷蓄積バンク内の第2の電荷蓄積素子に電荷として蓄積される(508)。図4Bを参照すると、これは、スイッチ420eを開放し、スイッチ420dを閉成することによって達成され、第2のキャパシタ408dに電荷が累積される。プロセスは、第1の入力データバイトの全てのビットによって形成される重み付けビット線電流が受け取られて電荷蓄積バンク400の個々のキャパシタ408a~408eに蓄積されるまで、同様に順に続く。図4Cを参照すると、入力データバイトの全てのビットによって得られた累積電荷は、この場合、第1のスイッチ412を介して入力バス414を基準電圧(VREF)に接続し、スイッチ416を開放して全スイッチ420a~420eをグラウンドへ接続することにより、電荷蓄積バンクに保持可能となる。代替的な一実施形態では、MSBの第1のアプローチの代わりに、第1のクロックサイクルにおいてLSBをシフトし、第1の入力データバイトの全てのビットによって形成された重み付けビット線電流が受け取られて電荷蓄積バンク400内の個々のキャパシタ408e~408aに蓄積されるまで、LSB+1と続ける。
【0044】
5つのクロックサイクルの終了時に、電荷蓄積バンクは、列内の共有ビット線から切り離され、ノードNでまたはノードNを介してADCへ結合される(510)。次に、各入力ビットに関連する電圧のスケーリングに必要な等価電圧がノードNに供給される(512)。図4Cを参照すると、これは、全てのスイッチ420a~420eおよびスイッチ422を閉成して、全てのサンプリングキャパシタ408a~408eの上部プレートをダミーキャパシタ410ひいてはグラウンドへ結合し、そこで電荷を再分配することによって達成することができる。次に、各サンプリングキャパシタ408b~408fに蓄積された、各入力ビットに関連する電圧の標準SAR ADC変換が順次に実行される(514)。図4Dを参照すると、これは、スイッチ420eをVREFに切り替えることによりキャパシタ408eの上部プレートにVREF電圧を強制的に印加することで達成することができ、VREF/2-Vinの電圧がノードN上に生成される(ここでのVinは、入力バイトにおける全ての入力ビットにわたる全てのサンプリングフェーズにおいてキャパシタ408a~408eに蓄積された全ての電荷のスケーリングされた等価電圧である)。ADCは、ノードNで見られる電圧に基づいてMSBのビットを判別する。その後、通常のSARコントローラ動作は次のようになる。すなわち、MSBのビット決定に基づいて、SARコントローラがノードNへのサンプルVREF/4または3VREF/4を決定し、以降同様に続く。
【0045】
図6は、本開示に従って動作するIMCアーキテクチャを有するMACコア606をそれぞれ含む複数のニューラルエンジンまたはコア604を含むハードウェアアクセラレータ602を備えた人工知能(AI)システム600の一実施形態の概略的なブロック図である。図6を参照すると、システムは、ハードウェアアクセラレータ602に加えてマイクロコントローラまたはプロセッサ608を含む。プロセッサ608は、システムオンチップ(SOC)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、またはマイクロコントロールユニット(MCU)を含むことができるかまたはこれらとして実装可能であり、AIシステム600の複雑性、特にプロセッサの複雑性に依存して、ハードウェアアクセラレータ602またはその要素と共通のもしくは共有の基板上に一体化可能であるか、または共有の集積回路パッケージにパッケージング可能であるか、またはハードウェアアクセラレータを備えた共通のもしくは共有の基板に取り付け可能である。
【0046】
MACコア606に加えて、各ニューラルコア604は、一般に、MAC出力側で非線形の活性化機能を行うためのプログラマブル非線形エンジン(NLE)610と、ランダムアクセスメモリ(RAM)またはスタティックランダムアクセスメモリ(SRAM)を含むキャッシュ612と、をさらに含む。
【0047】
ニューラルコア604に加えて、ハードウェアアクセラレータ602は、一般に、AIコプロセッサ614、例えば中央処理ユニット(CPU)サブシステム、RAMまたはSRAMを含むバッファ616、入出力サブシステム(IOSS618)およびシステムリソースサブシステム(SRSS620)をさらに含み、これらは全て、AIコプロセッサ内のペリフェラルインタコネクト622および/またはシステムインタコネクト624を介して電気的に結合されている。
【0048】
AIコプロセッサ614は一般に、読み出し専用メモリ(ROM)626に記憶されたファームウェアと、RAM628またはSRAMと、縮小命令セットコンピューティング(RISC)アーキテクチャを有するプロセッサ630、またはARM Holdings Plc社から市販入手可能なCortexMシリーズを含むプロセッサと、を含む。
【0049】
NVMメモリアレイおよびデュアル電荷蓄積バンクを備えたMACコアを含むインメモリコンピューティング(IMC)アーキテクチャ、ならびにMAC演算の速度および効率を改善するために当該アーキテクチャを動作させるための方法を開示してきた。MACコアおよびMAC演算方法の利点は、入力ビットの重みに従って入力電流をスケーリングする際に付加的な出力を消費する必要がなくなり、また、スケーリングされた電圧が電荷蓄積バンクの同じキャパシタから形成されるため、電荷蓄積バンクでのいずれの電荷のリークもシステムレベルで考慮できる利得エラーとなることである。したがって、本明細書に開示しているMACコアおよびMAC演算方法では、同様の先行技術のIMCアーキテクチャで達成されうるよりもより良好な電力効率が提供され、向上した毎秒あたりの総演算(TOPS)およびTOPS/Wattが提供されることが理解されるであろう。
【0050】
本発明の実施形態を、特定の機能およびその関係の実現を示す機能的かつ概略的なブロック図を使用して上述してきた。これらの機能的構成ブロックの境界は、説明の便宜上、本明細書では任意に定義されている。特定の機能およびその関係が適切に実行される限り、代替的な境界を定義することができる。
【0051】
特定の実施形態の上記の説明は、発明の全体的な性質を十分に明らかにするので、当業者に属する知識を適用することによって、不要な実験なくかつ本発明の全体的な概念から逸脱することなく、このような特定の実施形態を様々な用途のために容易に修正および/または適応化することができる。したがって、このような適応化および修正は、本明細書に提示している教示および指示に基づいて、開示した実施形態の等価物の意味内および範囲内にあることが意図されている。本明細書の語句または用語は説明を目的とするものであって限定を目的とするものではなく、このため、本明細書の語句または用語は、教説および指示に照らして当業者によって解釈されるべきであることを理解されたい。
【0052】
発明の概要および要約のセクションではなく詳細な説明のセクションが特許請求の範囲の解釈に使用されることが意図されていると理解されたい。発明の概要および要約のセクションは、発明者らによって意図された本発明の1つもしくは複数の実施形態を記載しており、ただし全ての典型的な実施形態を記載してはおらず、したがって、いかなる意味においても、本発明および添付の特許請求の範囲を限定することを意図するものではない。
【0053】
本発明の広がりおよび範囲は、上述の典型的な実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲およびその等価物によってのみ定義されるべきである。
図1A
図1B
図2
図3
図4A
図4B
図4C
図4D
図5
図6