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

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

▶ アクセレラ エーアイ ビーヴィの特許一覧

特表2025-501627複数の重み集合に基づくメモリ内処理
<>
  • 特表-複数の重み集合に基づくメモリ内処理 図1
  • 特表-複数の重み集合に基づくメモリ内処理 図2
  • 特表-複数の重み集合に基づくメモリ内処理 図3A
  • 特表-複数の重み集合に基づくメモリ内処理 図3B
  • 特表-複数の重み集合に基づくメモリ内処理 図3C
  • 特表-複数の重み集合に基づくメモリ内処理 図4A
  • 特表-複数の重み集合に基づくメモリ内処理 図4B
  • 特表-複数の重み集合に基づくメモリ内処理 図5A
  • 特表-複数の重み集合に基づくメモリ内処理 図5B
  • 特表-複数の重み集合に基づくメモリ内処理 図6
  • 特表-複数の重み集合に基づくメモリ内処理 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-22
(54)【発明の名称】複数の重み集合に基づくメモリ内処理
(51)【国際特許分類】
   G06F 17/10 20060101AFI20250115BHJP
   G06F 12/00 20060101ALI20250115BHJP
   G11C 7/16 20060101ALI20250115BHJP
   G11C 8/04 20060101ALI20250115BHJP
   G11C 14/00 20060101ALN20250115BHJP
【FI】
G06F17/10 S
G06F12/00 560F
G11C7/16
G11C8/04
G11C14/00 200
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024538653
(86)(22)【出願日】2021-12-22
(85)【翻訳文提出日】2024-08-07
(86)【国際出願番号】 EP2021087303
(87)【国際公開番号】W WO2023117081
(87)【国際公開日】2023-06-29
(81)【指定国・地域】
(71)【出願人】
【識別番号】524237995
【氏名又は名称】アクセレラ エーアイ ビーヴィ
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ハダム-アルジャメ, リデュアン
(72)【発明者】
【氏名】エレフセリウー, エヴァンゲロス
(72)【発明者】
【氏名】パピスト, イオアニス
(72)【発明者】
【氏名】カトセラス, レオニダス
(72)【発明者】
【氏名】ハーガー, パスカル
(72)【発明者】
【氏名】ロースレアー, ブラム
(72)【発明者】
【氏名】ムーンズ, バート
(72)【発明者】
【氏名】コスマンズ, ステファン
(72)【発明者】
【氏名】ユイッテルヘーベン, ロエル
(72)【発明者】
【氏名】ガルセア, ジュゼッペ
(72)【発明者】
【氏名】ポリアコフ, ドミトリ
(72)【発明者】
【氏名】イー, ルー
(72)【発明者】
【氏名】ヴァン ルーン, ヨルン
(72)【発明者】
【氏名】マチエルズ, ブレヒト
【テーマコード(参考)】
5B056
5B160
【Fターム(参考)】
5B056AA05
5B056BB71
5B056FF05
5B160AC15
5B160MM20
(57)【要約】
本発明は、特に、メモリ内処理方法を対象とし、この目的は行列-ベクトル算出を実行することである。方法は、クロスバー配列構造(15)を有するデバイスに依存するものになる。後者は、N×Mのセル(155)を定めるクロスポイントで相互接続されるN個の入力線(152)とM個の出力線(153)とを含み、ここで、N≧2およびM≧2である。セルは各々のメモリシステムを含み、それぞれはK個の重みWi、j、kを格納するように設計され、ここでK≧2である。よって、クロスバー配列構造は、N×Mの重み集合K個を格納することが可能であるN×Mのメモリシステムを含む。乗累算(MAC)演算を実行するために、方法は、最初に、メモリシステムのそれぞれに対して、このK個の重みからある重みを選択し、かつ選択された重みをアクティブな重みとして設定することによって、N×Mのセルに対してN×Mのアクティブな重みを有効にする。次に、N成分のベクトルを符号化する信号がクロスバー配列構造のN個の入力線に適用される。これによって、後者は、ベクトルおよびN×Mのアクティブな重みに基づいてMAC演算を実行する。最後に、M個の出力線の出力で得られた出力信号が読み出されて、対応する値を得る。このことは、異なった重み集合をクロスバー配列で局所的に有効にすることを可能にし、これによって、重みの回転を局所的に実行し、それに応じて、記憶装置によるデータ交換の頻度を低減することができる。この結果として、クロスバー配列構造のアイドル時間が短縮される。よって、提案されたアプローチによって、実質的に、データ転送の頻度を低減することができ、これによって計算の高速化がもたらされる。さらに、現在アクティブな重みに従ってMAC演算を実行している間に、重みが場合により先読みされ得る。特定の利点の中に、先読みするステップはパイプライン方式により少なくとも部分的に隠されることがある。本発明はさらに、関連するデバイス、システム、およびコンピュータプログラム製品を対象とする。
【選択図】図2A
【特許請求の範囲】
【請求項1】
メモリ内処理方法であって、
N≧2およびM≧2である場合、N×Mのセル(155)を定めるクロスポイントで相互接続されるN個の入力線(152)およびM個の出力線(153)を含むクロスバー配列構造(15)を提供する(S10)ことであって、前記セル(155)は、K≧2であるK個の重みをそれぞれが格納するように設計される各々のメモリシステム(157)を含み、それによって、前記クロスバー配列構造(15)は、N×Mの重み集合K個を格納するN×Mのメモリシステムを含む、クロスバー配列構造(15)を提供する(S10)ことと、
前記メモリシステム(157)のそれぞれに対して、このK個の重みからある重みを選択し、かつ選択された前記重みをアクティブな重みとして設定することによって、前記N×Mのセル(155)に対してN×Mのアクティブな重みを有効にする(S70)ことと、
N成分のベクトルを符号化する信号を前記クロスバー配列構造(15)の前記N個の入力線(152)に適用して(S82)、後者に、前記ベクトルおよび前記N×Mのアクティブな重みに基づいて乗累算演算またはMAC演算を実行させる(S84)ことと、
前記M個の出力線(153)の出力で得られた出力信号を読み出して(S86、S90)対応する値を得ることと
を含む、メモリ内処理方法。
【請求項2】
現在アクティブな重みとして有効にされているN×Mの重みに従ってMAC演算を実行している間に、1≦q≦K-1の場合、以前にアクティブであったN×Mの重み集合q個の代わりに、次に使用されるN×Mの重み集合q個を先読みし(S115)、かつ先読みされた前記重みを前記N×Mのメモリシステム(157)において格納することをさらに含む、請求項1に記載の方法。
【請求項3】
前記N×Mのアクティブな重みは、1≦k≦Kの場合、少なくとも前記N×Mのメモリシステム(157)の部分集合のそれぞれのメモリシステム(157)の前記K個の重みの第kの重みを付随して選択すること、およびそれに応じて選択されたそれぞれの重みを、現在アクティブな重みとして設定することによって、有効にされる(S70)、請求項1または2に記載の方法。
【請求項4】
前記方法はいくつかの行列-ベクトル算出サイクルを実行する(S58~S110)ことを含み、前記サイクルのそれぞれは、
前記メモリシステム(157)のそれぞれについて、そのK個の重みからある重みを選択し、かつ選択された前記重みをアクティブな重みとして設定することによって、新たなN×Mのアクティブな重み集合を前記N×Mのセル(155)に対して有効にする(S70)ことと、
N成分のベクトルを符号化する信号を前記クロスバー配列構造(15)の前記N個の入力線(152)に適用して(S82)、後者に、前記ベクトルおよび前記新たなN×Mのアクティブな重み集合に基づいてMAC演算を実行させる(S84)ことと、
前記M個の出力線(153)の出力で得られた出力信号を読み出して(S86、S90)対応する値を得ることと
を含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記サイクルのそれぞれは、読み出された前記出力信号に対応する部分積の結果を累積すること(S90)によって、累積が連続して実行されることをさらに含む、請求項4に記載の方法。
【請求項6】
前記いくつかの行列-ベクトル算出サイクルのうちのK個のサイクルを完了するより前に、1≦q≦K-1の場合、N×Mの重み集合q個を先読みし(S115)、かつ後者を、アクティブな重みとして以前に有効にされたN×Mの集合q個の代わりに前記N×Mのメモリシステム(157)に格納することをさらに含む、請求項5に記載の方法。
【請求項7】
前記いくつかの行列-ベクトル算出サイクルを完了する(S110:はい)と、連続した前記累積に基づいて得られた結果を外部記憶装置(2)に返す(S120)ことをさらに含む、請求項5または6に記載の方法。
【請求項8】
前記方法はK×Tの行列-ベクトル算出サイクルを実行する(S50~S110)ことを含み、ここでTは入力ベクトルの数に対応し、前記入力ベクトルのそれぞれは、N成分のK個の副ベクトルに分解され、かつK個の各々のブロック行列に関連付けられ、後者はN×Mの重み集合K個に対応し、それによって、前記K×Tの行列-ベクトル算出サイクルは、
前記K個の各々のブロック行列に対応するN×Mの重み集合K個をロードし(S55)、それに応じて、前記メモリシステム(157)を、前記N×Mの重み集合K個を格納するようにプログラムすること、ならびに、
前記T個の入力ベクトルのそれぞれの前記K個の副ベクトルのそれぞれの副ベクトル(S60)に対して、
前記K個の各々のブロック行列のうちの関連付けられたものに対応するN×Mのアクティブな重みを現在アクティブな重みとして有効にする(S70)こと、
前記それぞれの副ベクトルに対応するベクトルを符号化する信号を前記N個の入力線(152)に適用して(S82)、前記クロスバー配列構造(15)に、前記それぞれの副ベクトルおよび前記現在アクティブな重みに基づいてMAC演算を実行させる(S84)こと、および、
前記M個の出力線(153)の出力で得られた出力信号を読み出して、対応する部分値を得ることによって、実行される、請求項7に記載の方法。
【請求項9】
前記出力信号を読み出すことは、もしあれば、前記K個の副ベクトルのうちの以前のものに対して以前に得た部分値と共に前記それぞれの副ベクトルに対して得られた前記部分値を累積して(S90)、更新された結果を得ることを含み、
前記方法は、最後に得た前記更新された結果に基づいて得られた結果を返す(S120)ことをさらに含む、請求項8に記載の方法。
【請求項10】
外部処理装置において、
N×Mの重み集合K個に従って前記N×Mのメモリシステム(157)をプログラムし(S55)、かつ一定数の副ベクトルを入力信号に、そのような入力信号を前記N個の入力線(152)に適用して(S82)前記いくつかの行列-ベクトル算出サイクルを実行することを目的として符号化するより前に、
所与の課題を前記副ベクトルおよび前記N×Mの重み集合K個にマッピングする(S30)ことをさらに含む、請求項4から9のいずれか一項に記載の方法。
【請求項11】
前記N×Mのメモリシステム(157)はデジタルメモリシステムであり、
前記N×Mのセル(155)のそれぞれは、前記N×Mのメモリシステム(157)のうちの対応するものに接続された演算装置(156)をさらに含み、
前記MAC演算は、好ましくは、P≧2であるP個のサイクルでビット直列に実行され(S84)、Pは、入力で使用される前記ベクトルのそれぞれの前記N成分のそれぞれのビット幅に対応し、それによって、部分積値は、前記P個のサイクルのそれぞれを完了すると累積される(S86)、請求項1から10のいずれか一項に記載の方法。
【請求項12】
メモリ内処理のためのコンピュータプログラムであって、前記コンピュータプログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を含み、前記プログラム命令は、メモリ内処理ハードウェアデバイス(10)の処理手段によって、後者に、請求項1から11のいずれか一項のステップを実行させるように実行可能である、コンピュータプログラム。
【請求項13】
メモリ内処理ハードウェアデバイス(10)であって、
N≧2およびM≧2である場合、N×Mのセル(155)を定めるクロスポイントで相互接続されるN個の入力線(152)およびM個の出力線(153)を含むクロスバー配列構造(15)であって、前記セル(155)は、K≧2であるK個の重みを格納するようにそれぞれが設計される各々のメモリシステム(157)を含み、それによって、前記クロスバー配列構造は、乗累算演算またはMAC演算を実行するためにN×Mの重み集合K個を格納するように適応されるN×Mのメモリシステム(157)を含む、クロスバー配列構造(15)と、
前記N×Mのメモリシステム(157)に接続された選択回路(159)であって、前記選択回路(159)は、前記メモリシステムのそれぞれの前記K個の重みからある重みを選択し、かつ選択された前記重みをアクティブな重みとして設定して、前記N×Mのセル(155)に対してN×Mのアクティブな重みを有効にするように構成される、選択回路(159)と、
N成分のベクトルを符号化する信号を前記クロスバー配列構造(15)の前記N個の入力線(152)に適用して、後者に、前記ベクトル、および前記選択回路(159)によって有効にされた前記N×Mのアクティブな重みに基づいて、MAC演算を実行させるように構成される入力装置(151)と、
前記M個の出力線(153)の出力で得られた出力信号を読み出すように構成される読み出し装置(154)と
を備える、メモリ内処理ハードウェアデバイス(10)。
【請求項14】
前記N×Mのメモリシステム(157)のそれぞれは、このK個の重みが独立してプログラム可能であるように設計され、
前記デバイス(10)は、前記それぞれのメモリシステム(157)に接続されるプログラム回路(158)をさらに含み、前記プログラム回路(158)は、前記N×Mのメモリシステムの前記K個の重みをプログラムするように構成される、請求項13に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項15】
前記プログラム回路(158)は、
アクティブな重みとして現在設定されていないN×Mの重み集合q個を先読みし、
それに応じて、前記N×Mのメモリシステム(157)をプログラムして、後者が、先読みされた前記重みをN×Mの重み集合q個の代わりに格納するように構成され、ここで1≦q≦K-1である、請求項14に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項16】
前記N×Mのメモリシステム(157)のそれぞれは、それぞれが前記K個の重みの対応する重みを格納するように適応されたK個のメモリエレメントを含み、
前記選択回路(159)は、それぞれが前記N×Mのメモリシステム(157)の対応するものの前記K個のメモリエレメントのそれぞれに接続されるN×Mのマルチプレクサと、前記メモリシステム(157)のそれぞれの前記K個の重みのいずれか1つが演算時にアクティブな重みとして選択かつ設定可能であるように、前記マルチプレクサのそれぞれに接続される選択制御線とを含む、請求項13から15のいずれか一項に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項17】
前記選択回路(159)は、前記N×Mのメモリシステムのn×mのメモリシステム(157)の部分集合のそれぞれのメモリシステム(157)の前記K個の重みの第kの重みを付随して選択することによって、前記N×Mの重み集合K個のうちの1つからn×mの重みの部分集合を選択するようにさらに構成され、ここで、2≦n≦N、2≦m≦M、および1≦k≦Kである、請求項13から16のいずれか一項に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項18】
前記メモリ内処理ハードウェアデバイス(10)は、シーケンサ回路およびアキュームレータ回路(154)をさらに備え、
前記シーケンサ回路は、1つまたは複数のベクトル集合に基づいて行列-ベクトル算出のいくつかのサイクルを連続して実行するように、前記入力装置(151)および前記選択回路(159)に接続され、前記入力装置(151)および前記選択回路(159)の演算を編成し、演算時に、前記行列-ベクトル算出のサイクルのそれぞれは、MAC演算の1つまたは複数のサイクルを含んでおり、異なったN×Mの重み集合が、前記N×Mの重み集合K個から選択され、かつ前記行列-ベクトル算出のサイクルのそれぞれにおいてN×Mのアクティブな重みとして設定され、
前記アキュームレータ回路(154)は、それぞれのMAC演算サイクルを完了すると得られる部分積値を累積するように構成される、請求項13から17のいずれか一項に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項19】
前記アキュームレータ回路(154)は、前記出力線(153)の出力において配置される、請求項18に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項20】
前記N×Mのメモリシステム(157)のそれぞれは、それぞれが前記K個の重みの対応する重みを格納するように適応されたK個のメモリエレメントを含む、請求項13から18のいずれか一項に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項21】
前記N×Mのメモリシステム(157)のそれぞれの前記K個のメモリエレメントのそれぞれはデジタルメモリエレメントであり、
前記N×Mのセル(155)のそれぞれは、前記選択回路(159)の対応する部分を介して前記N×Mのメモリシステム(157)の対応するものの前記K個のメモリエレメントのそれぞれに接続される演算装置(156)をさらに含む、請求項20に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項22】
前記N×Mのメモリシステム(157)のそれぞれの前記K個のメモリエレメントのそれぞれは、Pビットの重みを格納するように設計され、
前記入力装置(151)は、前記信号を適用することで、N成分のベクトルをP個のサイクルにおける前記入力線(152)にビット直列に供給するように構成され、前記N成分のそれぞれはPビット入力ワードに対応し、ここでP≧2であり、
前記N×Mのセル(155)は、前記P個のサイクルでMAC演算をビット直列に実行するように構成され、
前記ハードウェアデバイス(10)は、前記P個のサイクルのそれぞれにおいて得られる部分的なビット直列積値に対応する値を累積するように構成されるアキュームレータ回路(154)をさらに含み、
前記選択回路(159)は、前記P個のサイクルのそれぞれの間のアクティブな重みと同じN×Mの重み集合を維持するように構成される、請求項21に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項23】
前記メモリ内処理ハードウェアデバイス(10)は、
前記入力装置(151)および前記選択回路(159)のそれぞれに接続される構成および制御論理部(12)と、
前記構成および制御論理部(12)に接続される事前データ処理装置(13)と、
前記出力線(153)の出力において接続される事後データ処理装置(14)と
をさらに備える、請求項13から22のいずれか一項に記載のメモリ内処理ハードウェアデバイス(10)。
【請求項24】
請求項13から23のいずれか一項にそれぞれが記載された1つまたは複数のメモリ内処理ハードウェアデバイス(10)を備える、コンピューティングシステム(1)。
【請求項25】
記憶装置(2)と、前記記憶装置に接続されて、前記記憶装置(2)に対するデータの読み書きを行う汎用処理装置(2)とをさらに備え、
前記メモリ内処理ハードウェアデバイス(10)のそれぞれは、前記記憶装置(2)に対するデータの読み書きを行うように構成され、
前記汎用処理装置(2)は、所与の計算タスクを、前記1つまたは複数のメモリ内処理ハードウェアデバイス(10)のメモリシステム(157)に対するベクトルおよび重みにマッピングするように構成される、請求項24に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、一般に、メモリ内処理技術(すなわち、方法、デバイス、およびシステム)および関連の加速技術に関する。とりわけ、本発明は、メモリ内の連続した部分積累積および係数の先読みによる行列-ベクトル乗算を実行するためのクロスバー配列構造を含んでいるメモリ内処理デバイスに関する。
【0002】
行列-ベクトル乗算は、技術計算タスクおよび認知的タスクなど、多数の応用で必要とされることが多い。そのような認知的タスクの例には、コンピュータビジョンおよび自然言語処理のためのニューラルネットワークなどの認知モデルの訓練およびこれによって実行される推測、ならびに天気予報および財務予測などに使用される他の機械学習モデルがある。
【0003】
そのような演算は、それらの再帰、普遍性、ならびにサイズおよびメモリ要件により、複数の課題をもたらす。一方で、特に、高性能コンピューティングアプリケーションにおいて、これらの演算を加速させる必要がある。他方では、それらを実行するエネルギー効率の良いやり方を実現する必要がある。
【0004】
従来のコンピュータアーキテクチャは、ノイマン型計算概念に基づいており、この概念では、処理機能およびデータ記憶は別々の物理装置に分けられる。そのようなアーキテクチャには、物理的な制約があり費用が掛かるインターフェースを通してメモリ装置から制御装置および演算装置までデータを継続的に転送しなければならないため、混雑や高消費電力という難点がある。
【0005】
行列-ベクトル乗算を加速させる1つの可能性として、クロスバー配列構成を有する専用回路などの専用ハードウェア加速デバイスを使用することがある。この回路は、入力線および出力線を含み、これらは、セルを定めるクロスポイントで相互接続される。セルは、各々の行列係数を格納するように設計される各々のメモリデバイスを含む。ベクトルは、クロスバー配列の入力線に適用される信号として符号化されて、後者の入力線に乗累算(MAC)演算を行わせる。いくつかの考えられる実装形態がある。例えば、行列(「重み」)の係数は、セルの列に格納可能である。セルの各列に隣接して演算装置の列があり、この演算装置は、(部分積を生じさせる)入力ベクトル値で重みを乗算し、最後に全ての部分積を累積して完全内積の結果を出すことができる。そのようなアーキテクチャは、行列-ベクトル乗算を簡略化しかつ効率的にマッピングすることができる。必要に応じて行列-ベクトル乗算を実行するために、メモリエレメントを再プログラムすることによって重みを更新することができる。そのような解決策によって、「記憶の壁」が破壊されて、演算装置および記憶装置が単一のメモリ内計算(IMC)装置に融合されることによって、メモリ内のまたはメモリ近くの処理がさらに一層効率的に行われる。
【0006】
そのようなクロスバー配列構造を有するデバイスは、日常的に使用されている。ここで、本発明者は自身で、そのようなデバイスを改善して、それらのエネルギー効率の向上および計算の高速化をなすという課題を設定している。
【発明の概要】
【0007】
第1の態様によると、本発明は、行列-ベクトル算出を実行することを目的とする、メモリ内処理方法として具現化される。該方法は、クロスバー配列構造を有するデバイスに依存している。後者は、N個の入力線およびM個の出力線を含み、これらは、N×Mのセルを定めるクロスポイントで相互接続され、ここで、N≧2およびM≧2である。セルは、K≧2であるK個の重みをそれぞれが格納するように設計される各々のメモリシステムを含む。よって、クロスバー配列構造は、N×Mの重み集合K個を格納することが可能であるN×Mのメモリシステムを含む。乗累算(MAC)演算を実行するために、方法は、最初に、メモリシステムのそれぞれに対して、このK個の重みからある重みを選択し、かつ選択された重みをアクティブな重みとして設定することによって、N×Mのセルに対してN×Mのアクティブな重みを有効にする。次に、N成分のベクトルを符号化する信号がクロスバー配列構造のN個の入力線に適用される。これによって、後者は、このベクトルおよびN×Mのアクティブな重みに基づいてMAC演算を実行する。最後に、M個の出力線の出力で得られた出力信号が読み出されて、対応する値を得る。
【0008】
上記のスキームは、異なった重み集合をクロスバー配列で局所的に有効にすることを可能にし、これによって、アクティブな重み間で局所的に切り替え、それに応じて、記憶装置によるデータ交換の頻度を低減することができる。この結果として、コアコンピュータデバイス、すなわち、クロスバー配列構造のアイドル時間が短縮される。すなわち、いくつかの中間の重みの更新が回避可能であるが、これは、最高でK個の連続した計算サイクルが新たな重み集合を転送する必要なく実行できるからである。むしろ、該当する重み集合を、それぞれの算出サイクルにおけるアクティブな重みとして局所的に有効にすることができる。さらに、部分結果を局所的に累積して、中間結果の転送を回避することができる。よって、提案されたアプローチによって、実質的に、データ転送の頻度を低減することができ、これによって、行列-ベクトル算出を実行するために必要とされる、計算の高速化および消費電力の低減がもたらされる。
【0009】
とりわけ有利な実施形態では、方法は、現在アクティブな重みとして有効にされているN×Mの重みに従ってMAC演算を実行している間に、重みを先読みすることをさらに含む。すなわち、1≦q≦K-1の場合、以前にアクティブであったN×Mの重み集合q個の代わりに、N×Mの重み集合q個(すなわち、次に使用される重み)がN×Mのメモリシステムにおいて先読みされかつ格納される。換言すれば、重みは、必要に応じて、クロスバー構造のアイドル時間をさらに短縮するために、先を見越してロード(すなわち、一定の計算サイクルの間に先読み)可能である。特定の利点の中に、先読みするステップではパイプライン方式により少なくとも部分的に隠されることがある。
【0010】
好ましくは、N×Mのアクティブな重みは、1≦k≦Kの場合、少なくともN×Mのメモリシステムの部分集合のそれぞれのメモリシステムのK個の重みの第kの重みを付随して選択すること、およびそれに応じて選択されたそれぞれの重みを、現在アクティブな重みとして設定することによって、有効にされる。その結果、配列構造はコンテキストをほとんど一瞬で変更可能である。
【0011】
典型的な実施形態では、いくつかの行列-ベクトル算出サイクルが連続して実行される。それぞれのサイクルは上記のような演算を含む。すなわち、最初に、メモリシステムのそれぞれについて、そのK個の重みからある重みを選択し、かつ選択された重みをアクティブな重みとして設定することによって、新たなN×Mのアクティブな重み集合がN×Mのセルに対して有効にされる。次に、N成分のベクトルを符号化する信号がクロスバー配列構造のN個の入力線に適用されて、後者に、現在のベクトルおよび新たなN×Mのアクティブな重み集合に基づいてMAC演算を実行させる。最後に、M個の出力線の出力で得られた出力信号が読み出されて、対応する値を得る。新たな重みを配列のメモリシステムに転送する必要なく、最高でK個のそのようなサイクルが実行可能である。
【0012】
好ましくは、サイクルのそれぞれは、読み出された出力信号に対応する部分積の結果を累積することによって、累積が連続して実行されることをさらに含む。いくつかの行列-ベクトル算出サイクルを完了すると、方法は、例えば、連続した累積に基づいて得られた結果を外部の(すなわち、配列の外部の)記憶装置に返してよい。よって、中間結果を転送する必要はない。
【0013】
必要に応じて、いくつかの行列-ベクトル算出サイクルのうちのK個のサイクルを完了するより前に、新たな重みが先読みされてよい。すなわち、方法は、1≦q≦K-1の場合、N×Mの重み集合q個を先読みし、かつ後者を、アクティブな重みとして以前に有効にされたN×Mの集合q個の代わりにN×Mのメモリシステムに格納してよい。興味深いことに、新たな重み値は場合により中間に先読みされる場合があるため、部分結果を累積し続けながら、さらなる行列-ベクトル算出サイクルが(K個のサイクルを超えて)途切れることなく実行可能である。また、先読みするステップはパイプライン方式により隠される。中間のデータ転送によるアイドル時間に煩わされることなく、行列-ベクトル算出全体の一番最後に最終結果が返され得る。
【0014】
大きなオペランドは例えば、必要とされる演算をK×Tの行列-ベクトル算出に分解することによって対処され得る。すなわち、方法では、K×Tの行列-ベクトル算出サイクルを実行してよく、ここで、Tは入力ベクトルの数に対応する。それぞれの入力ベクトルは、N成分のK個の副ベクトルに分解され、かつK個の各々のブロック行列に関連付けられ、後者はN×Mの重み集合K個に対応する。副ベクトルが実際には、上で取り入れたベクトルに対応し、それぞれの副ベクトルが入力ベクトルの一部分であることに留意されたい。その場合、以下のように、K×Tの行列-ベクトル算出サイクルが実行される。初めに、N×Mの重み集合K個がロードされる。N×Mの重み集合K個は、K個のブロック行列に対応する。それに応じて、メモリシステムは、N×Mの重み集合K個を格納するようにプログラムされる。次に、いくつかの演算が実行され、これは、T個の入力ベクトルのそれぞれのK個の副ベクトルのそれぞれに対するものである。最初に、K個の各々のブロック行列のうちの1つ、すなわち、現在の副ベクトルに関連付けられたブロック行列に対応する重みであるN×Mの重みが(現在アクティブな重みとして)有効にされる。第二に、それぞれの副ベクトルに対応するベクトルを符号化する信号がN個の入力線に適用され、これによって、クロスバー配列構造では、それぞれの副ベクトルおよび現在アクティブな重みに基づいてMAC演算を実行する。第三に、方法では、M個の出力線の出力で得られる出力信号を読み出して、対応する部分値を得る。
【0015】
読み出しは好ましくは、もしあれば、K個の副ベクトルのうちの以前のものに対して以前に得た部分値と共にそれぞれの副ベクトルに対して得られた部分値を累積して、更新された結果を得ることを含む。最後に、方法では、最後に得た更新された結果に基づいて得られた結果を返す。
【0016】
実施形態では、N×Mの重み集合K個に従ってN×Mのメモリシステムをプログラムし、かつ副ベクトルを入力信号に、その後そのような入力信号をN個の入力線に適用していくつかの行列-ベクトル算出サイクルを実行することを目的として符号化するより前に、外部の(すなわち、配列の外部の)処理装置を使用して、所与の課題を一定数の副ベクトルおよび一連のN×Mの重み集合K個にマッピングする。外部の処理装置は、場合により、クロスバー配列構造と共に集積され得ることに留意されたい。別形では、該装置は別個のデバイスまたは機械の一部を形成する。
【0017】
N×Mのメモリシステムは、デジタルメモリシステムまたはアナログメモリシステムのどちらかであり得る。どちらの場合でも、MAC演算を並列にまたはビット直列演算として実行され得る。
【0018】
N×Mのメモリシステムがデジタルメモリシステムである実施形態では、N×Mのセルのそれぞれは、N×Mのメモリシステムのうちの対応するものに接続された演算装置をさらに含む。
【0019】
例えば、MAC演算は、P≧2であるP個のサイクルでビット直列に実行され得、ここで、Pは、入力で使用されるベクトル(または副ベクトル)のそれぞれのN成分のそれぞれのビット幅に対応する。その場合、部分積値が得られ、これは、P個のサイクルのそれぞれを完了すると(クロスバー配列で)局所的に累積される。しかしながら、この累積は、いくつかのベクトル(または副ベクトル)を連続して処理しているとき、ベクトルレベルの演算、すなわち、ベクトル(または副ベクトル)に関係がある演算を完了すると実行される累積と区別されるべきである。
【0020】
別の態様によると、本発明は、メモリ内処理のためのコンピュータプログラムとして具現化される。コンピュータプログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を含む。プログラム命令は、メモリ内処理ハードウェアデバイスの処理手段によって、後者に、上述される方法のいずれかのステップを実行させるように実行可能である。
【0021】
さらなる態様によると、本発明は、メモリ内処理ハードウェアデバイスとして具現化される。本方法に適合するように、デバイスは、N×Mのセルを定めるクロスポイントで相互接続されるN個の入力線およびM個の出力線を含むクロスバー配列構造を備え、ここで、N≧2およびM≧2である。セルは、それぞれがK個の重みを格納するように設計された各々のメモリシステムを含み、ここでK≧2である。すなわち、クロスバー配列構造は、N×Mのメモリシステムを含み、これらは、全体として、MAC演算を実行するためにN×Mの重み集合K個を格納するように適応される。デバイスは、N×Mのメモリシステムに接続された選択回路をさらに含む。選択回路は、メモリシステムのそれぞれのK個の重みからある重みを選択し、かつ選択された重みをアクティブな重みとして設定して、N×Mのセルに対してN×Mのアクティブな重みを有効にするように構成される。加えて、デバイスは、N成分のベクトルを符号化する信号をクロスバー配列構造のN個の入力線に適用して、後者に、演算時に選択回路によって有効にされるようにこのベクトルおよびN×Mのアクティブな重みに基づいてMAC演算を実行させるように構成される入力装置を含む。該デバイスは、M個の出力線で得られた出力信号を読み出すように構成される読み出し装置をさらに含む。
【0022】
実施形態では、N×Mのメモリシステムのそれぞれは、このK個の重みが独立してプログラム可能であるように設計される。デバイスは、それぞれのメモリシステムに接続されるプログラム回路をさらに含んでよい。プログラム回路は、N×MのメモリシステムのK個の重みをプログラムするように構成される。プログラム回路は有利には、1≦q≦K-1である場合、アクティブな重みとして現在設定されていないN×Mの重み集合q個を先読みし、それに応じて、N×Mのメモリシステムをプログラムして、後者が先読みされた重みをN×Mの重み集合q個の代わりに格納するように構成され得る。
【0023】
好ましい実施形態では、N×Mのメモリシステムのそれぞれは、K個のメモリエレメントを含み、このそれぞれは、K個の重みの対応する重みを格納するように適応され、選択回路は、それぞれがN×Mのメモリシステムの対応するもののK個のメモリエレメントのそれぞれに接続されるN×Mのマルチプレクサと、メモリシステムのそれぞれのK個の重みのいずれか1つが演算時にアクティブな重みとして選択かつ設定可能であるように、マルチプレクサのそれぞれに接続される選択制御線とを含む。
【0024】
好ましくは、選択回路は、N×Mのメモリシステムのn×mのメモリシステムの部分集合のそれぞれのメモリシステムのK個の重みの第kの重みを付随して選択することによって、N×Mの重み集合K個のうちの1つからn×mの重みの部分集合を選択するようにさらに構成され、ここで、2≦n≦N、2≦m≦M、および1≦k≦Kである。
【0025】
実施形態では、メモリ内処理ハードウェアデバイスは、シーケンサ回路およびアキュームレータ回路をさらに備える。シーケンサ回路は、1つまたは複数のベクトル集合に基づいて行列-ベクトル算出のいくつかのサイクルを連続して実行するように、入力装置および選択回路に接続され、入力装置および選択回路の演算を編成する。演算時に、行列-ベクトル算出のサイクルのそれぞれは、MAC演算の1つまたは複数のサイクルを含んでいる。異なったN×Mの重み集合が、N×Mの重み集合K個から選択され、行列-ベクトル算出のサイクルのそれぞれにおいてN×Mのアクティブな重みとして設定される。アキュームレータ回路は、それぞれのMAC演算サイクルを完了すると得られる部分積値を累積するように構成される。好ましくは、アキュームレータ回路は、出力線の出力において配置される。
【0026】
好ましい実施形態では、N×Mのメモリシステムのそれぞれは、それぞれがK個の重みの対応する重みを格納するように適応されたK個のメモリエレメントを含む。N×MのメモリシステムのそれぞれのK個のメモリエレメントのそれぞれは、例えば、デジタルメモリエレメントであり得る。その場合、N×Mのセルのそれぞれは演算装置をさらに含み、これは、選択回路の対応する部分を介してN×Mのメモリシステムの対応するもののK個のメモリエレメントのそれぞれに接続される。
【0027】
実施形態では、N×MのメモリシステムのそれぞれのK個のメモリエレメントのそれぞれは、Pビットの重みを格納するように設計される。入力装置は、上記の信号を適用することで、N成分のベクトルをP個のサイクルにおける入力線にビット直列に供給するように構成され、ここで、N成分のそれぞれはPビット入力ワードに対応し、P≧2である。N×Mのセルは、P個のサイクルでMAC演算をビット直列に実行するように構成される。加えて、ハードウェアデバイスは、P個のサイクルのそれぞれにおいて得られる部分的なビット直列積値に対応する値を累積するように構成されるアキュームレータ回路をさらに含む。また、選択回路は、P個のサイクルのそれぞれの間のアクティブな重みと同じN×Mの重み集合を維持するように構成される。
【0028】
好ましくは、メモリ内処理ハードウェアデバイスは、入力装置および選択回路のそれぞれに接続される構成および制御論理部と、構成および制御論理部に接続される事前データ処理装置と、出力線の出力において接続される事後データ処理装置とをさらに備える。
【0029】
別の態様によると、本発明は、上述されるような1つまたは複数のメモリ内処理ハードウェアデバイスを備えるコンピューティングシステムとして具現化される。好ましくは、コンピューティングシステムは、記憶装置と、記憶装置に接続されて、記憶装置に対するデータの読み書きを行う汎用処理装置とをさらに備える。メモリ内処理ハードウェアデバイスのそれぞれは、記憶装置に対するデータの読み書きを行うように構成される。汎用処理装置は、所与の計算タスクを、1つまたは複数のメモリ内処理ハードウェアデバイスのメモリシステムに対するベクトルおよび重みにマッピングするように構成される。
【0030】
本発明のこれらのならびに他の目的、特徴、および利点は、添付の図面と関連付けて読まれるべきである本発明の例示的な実施形態の以下の詳細な説明から明らかになるであろう。例示は、当業者が、詳細な説明と併せて本発明を容易に理解するように明確にするためのものである。
【図面の簡単な説明】
【0031】
図1】本発明の実施形態にあるように、行列-ベクトル算出を専用のハードウェアアクセラレータにオフロードするためにパーソナルコンピュータを介してユーザがサーバと対話するコンピュータ化システムを概略的に表す図である。
図2】実施形態に含まれているように、メモリ内コンピューティング(IMC)行列-ベクトル乗算を実行するために最適化されるハードウェアアクセラレータの選択されたコンポーネントを概略的に表す図であり、図2Aはハードウェアアクセラレータのクロスバー配列構造を示し、図2Bはハードウェアアクセラレータのさらなるコンポーネントを示す図である。
図3A】実施形態にあるように、メモリエレメントの各々の列に接続された演算装置の列(乗算器および加算木)を含んでいるIMC配列の図であって、それぞれのメモリセルはいくつかのメモリエレメントのメモリシステムを含み、全体として、クロスバー配列構造は、N×Mの重み集合K個を格納することが可能なN×Mのメモリシステムを含む図である。
図3B】実施形態に含まれているように、メモリセルの所与の行、ならびに、プログラム回路および選択回路の一部分を概略的に示し、プログラム回路および選択回路の示された部分は、単一のメモリセルに接続され、描写のために他の部分は示されていないが、実際には、プログラム回路および選択回路はそれぞれのメモリセルに接続される、図である。
図3C】実施形態に含まれているように、対応するメモリセルに接続される選択回路のコンポーネントの簡略化された回路図である。
図4A】実施形態によるIMCチップ構成の2つの例であり、いずれの場合にもIMC配列がアキュームレータに接続されることを示す図であり、図4Aは行列-ベクトル乗算に対するベクトル成分のビット直列注入を仮定することを示す。
図4B】実施形態によるIMCチップ構成の2つの例であり、いずれの場合にもIMC配列がアキュームレータに接続されることを示す図であり、図4Bは並列演算を仮定することを示す。
図5A】実施形態にあるように、大きなオペランド(行列)を含んでいる行列-行列乗算がより小さいサイズのIMC配列によってどのように対処され得るのかを示し、それによって、入力行列は入力ベクトルに分解され、これら自体は、各々の行列係数配列を局所的に有効にし、かつ最終結果を返すより前に部分結果を累積することによって、異なったブロック行列が連続した行列-ベクトル乗算を実行するために割り当てられる副ベクトルにパーティション分割されることを示す図である。
図5B】実施形態にあるように、最初にK個の重み集合をロードした後の、K個の係数(重み)の集合の対応する回転を示す図である。
図6】実施形態にあるように、計算を加速させるために、(次に使用される)行列係数がどのように先読み可能であるかを示す図である。
図7】実施形態にあるように、図5Aに示される乗算と同様の行列-行列乗算を実行する方法の高水準ステップを示すフローチャートである。
【発明を実施するための形態】
【0032】
添付の図面は、実施形態に含まれているような、デバイスまたはこの部分の簡略化された表現を示す。図における同様のまたは機能的に同様の要素は、別段指示されていない限り、同じ参照数字が割り当てられている。
【0033】
本発明を具現化する、コンピュータ化デバイス、システム、方法、およびコンピュータプログラムについて、ここで、非限定的な例によって説明する。
【0034】
下記の記載は、以下のように系統立てられる。一般的な実施形態および高水準の別形について、第1節において説明し、第2節では、特に好ましい実施形態について対処する。第3節では最終的な見解をまとめる。本方法およびこの別形は「本方法」と総称されることに留意されたい。全ての参照符号Snは、図7のフローチャートの方法ステップを指し、参照数字は、本発明の実施形態に含まれているデバイス、コンポーネント、および概念に関連している。
【0035】
1.一般的な実施形態および高水準の別形
本発明の第1の態様について、ここで、図2A図4B、および図7を参照して説明する。この態様は、メモリ内処理の方法に関し、この目的は、乗累算演算またはMAC演算を加速させることである。
【0036】
方法は、クロスバー配列構造15、15aを有するデバイス10、10aに依存するものになる。クロスバー配列は図2Aに明示されている。この構造15、15aは、N個の入力線152とM個の出力線153とを含み、ここで、N≧2およびM≧2である。入力線152および出力線153は、クロスポイント(接合点)で相互接続される。クロスポイントはそれに応じて、N×Mのセル155を定める。セル155は各々のメモリシステム157を含む。注目すべきことには、それぞれのメモリシステム157はK個の重みを格納するように設計され、ここでK≧2である。実際には、Kは典型的には、(図3A図3B、および図5A図5Bで仮定されているように)4、8、16、または32に等しいものであってよい。全体的に、クロスバー配列構造15は、N×Mの重み集合K個、すなわち、合計でK×N×Mの重みを格納することが可能であるN×Mのメモリシステムを含む。
【0037】
換言すれば、クロスバー配列構造15は、クロスバー構成においてN×Mのセル155を含み、この場合、クロスバー構成のそれぞれのクロスポイントはあるセルに対応し、それぞれのセルは、K個の重みを格納することが可能なメモリシステム157を含んでいる。そのような重みは図2AではWi、j、kと記されており、ここで、iは1からNに及び、jは1からMに及び、kは1からKに及ぶ。実際には、入力線152および出力線153の数は、典型的には、ほぼ数百から数千の線になる。例えば、256×256、(図4Aおよび図4Bにあるような)512×512、または1024×1024の配列が考えられ得るが、Nは必ずしもMに等しいものである必要はない。入力線および出力線の概念について、以下にさらに説明する。
【0038】
提案された方法は、基本的には、有効にされた重みに対応する所与のベクトルおよび行列係数に基づいてMAC演算を実行するより前に、ある特定の重みを有効にすることを中心に展開する。すなわち、N×Mの重みは、N×Mのセル155に対してステップS70(図7のフローチャートを参照)で有効にされる。これは、それぞれのメモリシステムについて、このK個の可能性がある重みからある重みを選択後、選択された重みをアクティブな重みとして設定することによって実現される。重みの選択および設定は、図3Cを参照して以下に論じられる実施形態にあるように、実際、特に、各々のメモリシステムに接続されたマルチプレクサに依存する選択回路159を使用するときに、単一演算で実行され得ることに留意されたい。
【0039】
重み集合が有効にされると、ベクトル成分はクロスバー配列構造15に注入される(ステップS82)。より正確には、N成分のベクトル(以降、Nベクトルと称される)を符号化する信号は、クロスバー配列構造15のN個の入力線152に適用されるS82。これによって、クロスバー配列構造15は、Nベクトル、および現在有効にされているN×Mのアクティブな重みに基づいて、MAC演算を実行するS84。MAC演算は、その結果、N個の入力線に供給された信号によって符号化された値にはそれぞれ、メモリシステム157に格納されたK個の重み集合から有効にされる現在アクティブな重み値が乗じられることになる。
【0040】
クロスバー構成に関して、それぞれの算出サイクル中にMのMAC演算が並列に実行されている。セルごとに実行される演算は、2つのスカラー演算、すなわち、1つの乗算および1つの加算に対応することに留意されたい。よって、MのMAC演算は、N×Mの乗算およびN×Mの加算を含意し、これは、合計で2×N×Mのスカラー演算を意味する。
【0041】
M個の出力線153で得られる出力信号は、その後、ステップS90で読み出されて、対応する値を得る。実際には、いくつかの算出サイクルは連続して実行される必要があることが多く、それによって、Nベクトルの成分を供給して、MAC演算を実行しかつ出力値を読み取るより前に、サイクルごとに重みが局所的に有効(すなわち、アクティブな重みとして選択かつ設定)される。そのような出力値は、有利にはデバイス10、10aにおいて局所的に累積され得る部分値に対応し得る。その点において、実行される読み出し動作は、要するに、広い意味で理解されるべきである。読み出し動作は、出力値を抽出することだけでなく、これらを(必要に応じて)以前の出力値と共に累積すること、および/またはそのような値を格納することを目的とする場合がある。
【0042】
注目すべきことには、提案されたスキームによって異なった重み集合をクロスバー配列15において局所的に有効にすることができ、これによって、重みの回転を局所的に実行し、それに応じて、デバイス10、10aに外付けされたまたは組み込まれた記憶装置によってデータ交換の頻度を低減することができる。これによってまた、デバイス10、10aのアイドル時間が短縮される。すなわち、一部の中間の重みの更新が回避されるが、これは、最高でKの連続した計算サイクルが新たな重み集合を転送する必要なく実行できるからである。むしろ、該当する重み集合は、それぞれの算出サイクルにおいてアクティブな重みとして局所的に有効にされる。さらに、重みは、場合により、必要に応じて、クロスバー構造15のアイドル時間をさらに短縮するために、先を見越してロード(すなわち、計算サイクル中に先読み)され得る。よって、提案されたアプローチは、重みデータの転送の頻度の実質的な短縮を可能にし、それによって計算の高速化がもたらされる。また、部分結果が局所的に累積可能であるため、そのような結果も転送の必要がなく、これによってデバイス10、10aの消費電力が低減される。
【0043】
順序立てて見解を述べる。それぞれのメモリシステム157は好ましくは、簡潔にするために、K個の異なったメモリエレメントを含む。そのようなエレメントは、独立してプログラム可能であるように接続可能である。これによって、以下に論じられる好ましい実施形態にあるように、(次に使用される)重みを先読みすることができる。メモリエレメントは例えば、シナプスクロスバー配列構造のシナプス重みと同様に、バイナリデータまたはマルチビットデータを格納するようにプログラム可能である。
【0044】
重みは数値に関連し、行列係数を表す。そのような重みは、解決されるべき課題(の一部分)を克服し、それに応じてメモリシステム157にプログラムされる必要がある。その点において、ハードウェアデバイス10は、有利には、N×Mのメモリシステム157をプログラムして、後者が各々のK個の重み集合を格納するように構成されるプログラム回路158(図3B)を含み得る。プログラム回路は、例えば、デバイス10、10aにおいて論理装置12によって制御され得る。別形では、プログラム回路は外付けされてよく、その場合、デバイスは、メモリエレメントのプログラミング専用のパッドおよびトレースを含むことになる可能性がある。
【0045】
IMCデバイスのメモリエレメントをプログラムすることはそれ自体が既知である。しかしながら、本文脈では、必要とされることは、それぞれのセルに対していくつかのメモリエレメント(またはメモリシステムのいくつかのメモリ値)を適切に適時プログラムすることである。さらに必要とされることは、アクティブな重みを適当に選択することである。その目的のために、選択回路159(図3B図3C)を使用して、必要とされる重みの選択を実行し、かつ選択された重みをアクティブな重みとして有効にすることができる。
【0046】
入力で使用される(上でNベクトルとも称される)ベクトルは、入力線の数Nに従って、それぞれN成分を有する。そのようなベクトルは、実際、より大きい入力ベクトルの部分に対応し得る。すなわち、解決されるべき課題(例えば、行列-行列乗算)は典型的には、大きなオペランドを含んでいる場合がある。よって、最初の課題では、配列15のサイズに従ってパーティション分割された入力ベクトルおよび行列の部分を含んでいるより小さい行列-ベクトル演算に分解されなければならない場合がある。例えば、入力行列は入力ベクトルに分解され得、この入力ベクトル自体は副ベクトル(すなわち、Nベクトル)に分解され、これらは各々のブロック行列が割り当てられ、複数の演算を実行することを目的として、これらの出力は最後に最終結果を形成するために再構成可能である。
【0047】
よって、実際には、基本的な演算原理は、Nベクトルを配列15に供給して、行列-ベクトル演算を、一方では供給されるベクトル成分に、他方では現在アクティブな重みに基づいて実行することになり、後者は現在のNベクトルに従って適正に有効にされる。
【0048】
MAC演算を実行するために、入力信号がN個の入力線に適用され、この信号によってNベクトルの成分が符号化される。すなわち、それぞれの入力信号は、異なったベクトル成分を符号化し、対応する入力線に適用される。入力信号は、シナプスクロスバー構造におけるいわゆるデータチャネルに対応する。それぞれのベクトル成分およびそれぞれの行列係数は例えば、Pビット値として符号化可能である。すなわち、MAC演算は、(図4Aまたは図7において仮定されるように)ビット直列に、または(図4Bにあるように)並列に実施可能である。ビット直列の実装形態では、好ましい実施形態を参照して詳細に後に論じられるように、それぞれの乗算演算がPビット直列サイクル(例えば、P=8または16)で実行される。別形では、それぞれのPビットワード(ベクトル成分)が、対応する入力線のM個のセルに並列に注入される。
【0049】
本アプローチは、アナログメモリエレメントおよびアナログ演算に対応している。アナログ電気実装形態では、デジタル入力は、デジタルアナログ変換器(DAC)またはパルス幅変調器(PWM)によってアナログ表現に変換後、入力線に適用される。それぞれのセル演算は典型的には、その場合、単一のアナログ演算に対応し、それによって、入力信号にはメモリコンポーネントによって伝達される重み値が乗じられ、その結果、その成分との電気的相互作用が生じて、ある列への出力に分岐されることで、アナログ加算演算が効率的にもたらされる。同様の原理が光入力信号により利用可能である。デジタル実装形態はデジタルメモリシステムに依存している。すなわち、N×Mのメモリシステム157はデジタルメモリシステムである(例えば、それぞれがK個のデジタルメモリエレメントを含む)。その場合、N×Mのセル155のそれぞれは、図2A図3A、および図3Bにおいて仮定されるように、対応するメモリシステム157に接続された(乗算器および加算木を含む)演算装置156を含む。
【0050】
完全を期すために、入力線152は、信号によってデータがM個のセルに通信されるチャネルを指すことに留意されたい。しかしながら、そのような入力線は、必ずしも、実際にセルに達するのに必要とされる物理的導体または論理チャネルの数に対応するわけではない。ビット直列の実装形態では、それぞれの入力線は単一の物理的線を含み得、これは、Nベクトル成分データを伝達する入力信号を供給するに十分である。しかしながら、並列データ収集のアプローチでは、それぞれの入力線は、それぞれが対応する入力線のM個のセルに接続される、最高でP個の並列導体を含み得る。そのような場合、P個のビットは、並列導体を介してM個の対応するセルのそれぞれに並列に注入される。依然として、データの並列供給およびビット直列供給の両方を含んでいる様々な中間構成が考えられ得る。
【0051】
ハードウェアデバイス10、10aは、好ましくは、コア計算ステップを実行するのに必要な全てのコンポーネントを組みこむ集積構造、例えば、マイクロチップとして製作される。そのようなコンポーネントは、注目すべきことには、入力信号をN個の入力線152に適用するための入力装置151、151a(図4A図4B)と、プログラム回路158(図3B)と、選択回路159(図3B図3C)と、アキュームレータを含み得る読み出し装置154、154a(図4A図4B)とを含み得る。選択回路159および入力装置151は、例えば、実施形態にあるように、同じ構成および制御論理回路の一部を形成し、かつ同じ論理装置12(図2B)によって制御され得る。デバイス10、10a自体は、後に詳細に説明される、本発明の別の態様に関係する。
【0052】
本方法の特定の実施形態について、ここで論じる。初めに、重みは、必要に応じて、クロスバー構造のアイドル時間をさらに短縮するために、先を見越してロードする(すなわち、計算サイクル中に先読みする)ことができる。先読み機構は図6に示されている。極めて大きな利点として、先読みするステップがパイプライン方式により(少なくとも部分的に)隠され得ることがある。
【0053】
詳細には、現在の計算サイクル中に、すなわち、アクティブな重みとして現在有効にされているN×Mの重みに従ってMAC演算を実行している間に、新たな重みを先読みすることができる。1≦q≦K-1である場合、以前アクティブであったN×Mの重み集合q個の代わりに、最高でq個のN×Mの重み(すなわち、次に使用される重み)集合が、N×Mのメモリシステム157において先読みS115かつ格納可能である。
【0054】
行列-ベクトル算出のサイクルを開始する前に、N×Mの重み集合K個が最初に配列においてロードされ得る。よって、その後の先読みするステップは、典型的には、反復的に実行される。重み集合を先読みすることによって、先を見越したアプローチが可能になり、これによって、図6に示されるように、計算のさらなる高速化が可能になる。
【0055】
例えば、1つまたは複数の行列-行列乗算が実行されなければならないと仮定する。図6における例では、それぞれが単一の重み集合のみを使用しT個の計算サイクルを必要とする4つの連続した異なる行列-行列乗算が実行される。この場合、例えば、外部メモリから、次の行列-行列に対する重みを先読みするS115ために重み集合を反復的にロードすることが可能である。別の例として、第1の行列乗算は2つの重み集合を使用するが、第3および第4の行列乗算では1つの重み集合のみを必要とする。その場合、第3および第4の行列乗算のための重み集合は、第1の行列乗算のための2つの重み集合が計算のために使用されている間に先読み可能である。そのような先読みストラテジは、単一の重み集合のみを利用する以前のクロスバー配列構造とは対照的に、(図6に示されるように)その場合、重みをロードする時間をパイプライン方式により部分的に隠すことができるため、大幅な高速化につながる可能性がある。
【0056】
その点において、図6の上部に示されるサイクルは通常のクロスバー配列で実行されるサイクルに対応し、この場合、それぞれのセルは単一の重み値を格納することに留意されたい。(重みをこの配列にロードするための)ロードするステップおよび処理するステップはインターリーブされなければならず、それによって、パイプライン方式によりロード時間を隠すことができなくなる。対照的に、複数の重み集合を格納する配列において、行列係数は場合により、他の重み集合は現在アクティブである間に未使用のメモリエレメントにあらかじめロード可能である。これによって、単一の重み集合に依存するシステムと比較して、処理時間のさらなる大幅な高速化がもたらされ得る。
【0057】
図3B図3C、および図7を参照すると、必要とされる重みを、有利には、一度にほぼ一瞬で全てを有効にするS70ことができることが好ましい。例えば、N×Mの重みは、1≦k≦Kである場合、それぞれのメモリシステム157のK個の重みの第kの重みを付随して選択すること、およびそれに応じて選択されたそれぞれの重みを現在アクティブな重みとして設定することによって、有効S70にされ得る。状況に応じて、N×Mのメモリシステム157全体、またはこの部分集合のみ、例えば、部分配列に対する重みの選択が行われてよい。例えば、L成分の標準より小さいベクトル(L<N)をL×Lの行列で乗じる場合、対応する重み配列は、残りの重みを有効にする必要なく選択かつ設定可能であるが、これは、標準より小さいベクトルの残りの成分がゼロに設定(ゼロパディング)可能であるからである。全ての場合において、いくつかの重みは、場合により、付随して選択および設定され得る。その結果、コンテキストの変更はほぼ一瞬である。すなわち、1つの重み集合から別の重み集合への切り替えはいずれの実質的なダウンタイムも取り込まない。これは、例えば、図3Bおよび図3Cに示されるようなマルチプレクサ159を含んでいる選択回路によって実現可能である。
【0058】
実際には、図5A図5B、および図7において仮定されるように、いくつかの計算サイクルは連続して実行されなければならなくなる可能性がある。最高でK個のサイクルが、重みを局所的に切り替えることによって連続して実行可能である。すなわち、本方法は、いくつかの行列-ベクトル算出サイクルを実行するS60~S100ことになる可能性があり、この場合、それぞれのサイクルは、(i)新たなN×Mのアクティブな重み集合を有効にするS70こと、(ii)有効にされた重みおよび関連のNベクトルに基づいてMAC演算を実行するS84こと、および、(iii)対応する値を得るためにM個の出力線153の出力で得られた出力信号を読み出すS90ことを含む。毎回、新たなN×Mの重み集合は、それぞれのメモリシステム157について、そのK個の重みからある重みを選択すること、および選択された重みをアクティブな重みとして設定することによって、N×Mのセル155に対して有効にされるS70。MAC演算を実行するS84ために、Nベクトルを符号化する信号がクロスバー配列構造15のN個の入力線152に適用されS82、それによって、後者は、このNベクトル、および新たなN×Mのアクティブな重み集合に基づいて、MAC演算を実行するS84。
【0059】
すなわち、入力信号はN個の入力線152に繰り返し適用されて、Nベクトルを連続して供給しかつMAC演算をそれに応じて実行させる。先に述べたように、それぞれのNベクトルは、実際、(例えば、所与の入力行列からの)より大きい入力ベクトルの一部分に対応し得、この部分には、図5Aに示されるように、対応するブロック行列が割り当てられる。その場合、それぞれの行列-ベクトル算出サイクルでクロスバー配列に供給されたNベクトルは異なっている。その他の場合、同じNベクトルが場合により数回連続して適用され得るが、これは、ステップS30の上流で決定された演算分解スキームに左右される(図7)。
【0060】
全ての場合において、新たなアクティブな重み集合は、重みを変更するための中間のプログラムするステップを受けることなく、実行される行列-ベクトル算出サイクルでこのそれぞれに対して局所的に有効にされ得る。先に述べたように、これには、当然ながら、考えられる先読み演算が行われ得、この演算は、それにもかかわらず、パイプライン方式により隠される。すなわち、N×Mの重み集合q個は、場合により、K個の行列-ベクトル算出サイクルを完了するより前に、(以前の重み集合q個の代わりに)先読みされS115かつ格納され得る。例えば、単一のN×Mの重み集合は、それぞれの反復において先読みされ得る(q=1)。別形では、2つのN×Mの重み集合は、各第2の反復を完了後に先読みされ得る。様々な他の先読みスキームが考えられ得る。そのような先読みスキームは場合により、作業負荷に応じて動的に適用され得ることに留意されたい。
【0061】
また、大きなオペランドを含んでいる演算について、それぞれの中間サイクルの終わりに得られた部分結果は有利には、局所的に累積され得る。すなわち、計算サイクルの一部の後に、部分積の結果が、(クロスバー配列構造15の出力において)デバイス10、10aにおいて累積S90され得る。すなわち、後に最終結果を再構成することを目的として、累積は連続して実行される。最終結果は連続した累積に基づいて得られる。最終結果は例えば、一定数の計算サイクルを完了すると、外部記憶装置2に返されてよい。興味深いことに、新たな重み値が場合により、中間で先読みされるS115場合があるため、さらなる行列-ベクトル算出サイクルは、部分結果を累積し続けながら途切れることなく実行可能である。
【0062】
部分累積のおかげで、更新された重みおよび部分結果の中間の転送によるアイドル時間を伴うことなく、行列-ベクトル算出の最終結果のみが外部メモリに転送かつ書き込まれることを必要とする。行列-行列乗算が実行される場合、それぞれの行列-ベクトル積の最終結果は、場合により、デバイス10でも局所的に格納され得る。行列-行列乗算ではその後、結果のみを、外部メモリ装置2に返さなければならなくなる。両方の場合、外部エンティティに最終結果を転送するより前に、連続した累積に基づいて、一部の結果が局所的に得られる。部分結果は外部エンティティに転送される必要はなく、連続した累積により、格納される必要さえなく実際には削除される。
【0063】
図7の流れを考慮して、図5Aの例を考察する。ここでは、行列-行列乗算を実行することを目的とする。これは、先に述べたように、K×Tの行列-ベクトル算出サイクルに分解可能であり、ここで、Tは入力行列のうちの1つの列数に対応し、それに応じて、T個の入力ベクトルに分解される。そしてまた、それぞれの入力ベクトルは、K個の副ベクトル、すなわち、それぞれN成分のNベクトルに分解可能であり、この場合、それぞれのNベクトルは各々のブロック行列に関連付けられる。すなわち、K×Nの成分のそれぞれの入力ベクトルは、K個のブロック行列に関連付けられ、後者はN×Mの重み集合K個に対応する。次いで、K×Tの行列-ベクトル算出サイクルが以下のように実行可能であるS50~S110。最初、(K個のブロック行列に対応する)N×Mの重み集合K個はロードされS55、それに応じて、メモリシステム157においてプログラムされて、後者はN×Mの重み集合K個を格納する必要がある。次に、T個の入力ベクトルのそれぞれの、それぞれのNベクトル(すなわち、K個の副ベクトルのそれぞれ、ステップS60~S100を参照)に対して、算出サイクルが実行される(ステップS58~S110を参照)。すなわち、Nベクトルに関するループは、入力ベクトルのためのループにネストされ得、これら入力ベクトル自体は、必要に応じて、入力行列のためのループにネストされ得る(ステップS50~S120)。
【0064】
(Nベクトルに関する)最も内側のループは、先に記載したのと同じ原理に従う。すなわち、N×Mのアクティブな重みは、現在アクティブな重みとして有効にされS70、この重みは、以前に割り当てられたように、現在のNベクトルに関連付けられたブロック行列に対応する。次いで、現在のNベクトルを符号化する信号がN個の入力線152に適用されてS82、クロスバー配列構造15は、このNベクトルおよび現在アクティブな重みに基づいてMAC演算を実行するS84。M個の出力線153の出力で得られた出力信号は、さらにまた、対応する部分値を得るために読み出され、これは有利には、デバイス10において累積可能であるS90。すなわち、それぞれのNベクトルに対して得られた部分値(しかしながら一番最初のもの)は、以前のNベクトルに対して以前に得られた部分値と共に局所的に累積可能であるS90。このように、それぞれのサイクルにおいて更新された結果が得られる。最後に得られた更新された結果は、最終的に、外部メモリに返されるS120。
【0065】
そのような演算は図5Aに視覚的に示されており、ここで、Kはこの例では4に等しいと仮定される。すなわち、行列-行列乗算は、Tの算出サイクル4つにおいて計算されることになり、T個の入力ベクトルのそれぞれは、図5Aに見られるように、4×N成分を有する。さらに、演算のシーケンスは、この例ではT=4の入力ベクトルと仮定する。各ブロック行列は、単一のN×Mの重み集合として格納される。IMC配列における演算装置では、Nベクトルおよび関連の重み集合の各対に対して部分内積を計算する。図5Aは、配列では各算出サイクルにおいてコンテキスト(すなわち、重み集合)をどのように切り替え、かつアキュームレータにおいて局所的に完全な結果をどのように計算するのかを示している。最後の反復後でしか、最終結果は外部メモリにライトバックされない。すなわち、アキュームレータは、4つの部分積を連続して累積し、最後に、結果を外部メモリにライトバックする。このプロセスはT回、すなわち、入力ベクトルごとに1回繰り返される。
【0066】
図5Bはタイミングを示す。最初に、全ての重み集合(WS0~WS3)はIMCに連続してロードされ、このことは図7におけるステップS55に対応する。次いで、計算サイクルがインターリーブ式に開始される。4つの入力ベクトルのみが含まれており(T=4)、それぞれはN成分のK=4の副ベクトルに分解される。重み集合WS0~WS3は、T個の入力ベクトルのそれぞれのK個の部分のそれぞれに従って、連続して有効にされる(すなわち、回転する)。
【0067】
この例では利用可能な4つの重み集合が使用されているため、必要とされる重み集合全てが、いずれの先読みも必要とすることなく前もって配列15においてあらかじめロード可能であるS55。すなわち、図7のフローで仮定された分解は、推測的に、重みの先読みを必要としないが、これは、行列-ベクトル演算が既に、この例において全てのK個の重み集合の回転を利用することで、先を見越して次の重み集合を先読みする余地がない(また、実際その必要がない)からである。
【0068】
しかしながら、先読みすることは、入力ベクトルがK個以上の部分に分解されなければならないとすれば、有利となり得る。それに加えて、図5Aおよび図7の文脈においても、新たな重みは、場合により、一番最後の入力ベクトルに対応する最後のK個の副ベクトルを処理する間に先読みされ得る。すなわち、これらのK個の副ベクトルのいずれかに対する演算サイクルを完了すると、新たな重み集合を先読みし、かつそれを以前にアクティブであったN×Mの重みの代わりに書き込む命令が与えられ得る。これによって、別の行列-行列乗算に関連している計算を開始するS50より前に、(ステップS55に対応する)アイドル期間が短縮される。
【0069】
当然ながら、図5Aおよび図7は、演算の1つの考えられるマッピングを反映する。演算の種々のシーケンスにつながるさまざまな他の計算ストラテジがステップS30において考えられ得る。さらに、注目すべき点は、実行時間で採用された分解スキームにかかわらず、コアコンピュータデバイス10は全般的に、必要に応じて重みの先読みを可能にするように設計され得ることである。
【0070】
最適な演算のマッピングは、外部処理装置2、13、すなわち、コアコンピュータ配列15とは別の装置によって判断されるS30。依然として、この外部処理装置13は、場合により、図2Bで仮定されるように、デバイス10、10aにおいてコアIMC配列15と共に集積され得る。全ての場合において、処理装置2、13を使用して、計算ストラテジを判断し(すなわち、副ベクトルおよびブロック行列を識別しかつそれらを関連付けし)、この演算は条件付き演算とも称され得る。実際には、この演算は、所与の課題を、一定数の副ベクトルおよびN×Mの重み集合K個にマッピングするS30ことになる。このステップは、それに応じて、MAC演算をその後実行することを目的として、N×Mのメモリシステム157をプログラムしS55、かつ計算されたベクトルを入力信号に符号化するより前に実行される。処理装置2、13は、場合により、後に論じられるように、その他のタスクを実行してよい。
【0071】
実施形態では、MAC演算は、ビット直列に、すなわち、P個の直列サイクルで実行されS84、ここでP≧2である。実際には、Pは典型的には2に等しく、ここで3≦r≦6である。Pは図4Aの例において8に等しいと仮定される。値Pは、入力時に使用されるNベクトルのそれぞれのビット幅に対応する。P個のサイクルのそれぞれを完了すると、部分積値がその場合に局所的に累積されるS86必要があることに留意されたい。計算サイクルS82~S88は、行列-ベクトル算出サイクル(S50~S100)と区別される必要がある副サイクルであり、これら自体は部分累積S90から利益を得る場合がある。すなわち、それぞれの内部計算サイクルS80はP個のサイクルを含むのに対して、行列-ベクトル算出サイクルはK個のサイクルを含む(それら自体、T個のサイクルにおいてネストされる)。
【0072】
別形では、本方法は、並列実装形態(図4Bを参照)に依存しており、これは、図4Aにあるようないずれの並列直列変換も必要としない。並列実装形態では、それぞれのNベクトルは、単一サイクルで重み乗算により処理される。さらなる別形では、ビット直列値への並列供給を伴うハイブリッド手法が考えられ得る。
【0073】
本発明の別の態様は、メモリ内処理のためのコンピュータプログラムに関係する。コンピュータプログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を含み、この場合、プログラム命令は、メモリ内処理ハードウェアデバイス10、10aの処理手段12、13、14によって、後者に、上述されるステップを、必要に応じて、MAC演算S84、ならびに累積S86、S90および先読みS115演算を始めとして、実行させるように実行可能である。より一般的には、そのような処理手段12、13、14は、図2Bにおいて示唆されるように、前処理演算および後処理演算の一部(または場合により全て)を処理する。これらの演算は例えば、命令ベースのプロセッサ、または様々な命令またはコマンドベースの制御機構を有する専用アクセラレータ上で実行可能である。
【0074】
計算ストラテジを判断することを目的とする演算S30は別として、装置13は場合により、例えば、要素ごとの演算または非線形演算に関連している他のタスクを実行し得る。例えば、機械学習(ML)アプリケーションでは、装置13は、特徴抽出を実行して、一部の入力データ(例えば、画像、音声ファイル、またはテキスト)をベクトルに変換してよく、このベクトルは、その後、クロスバー配列構造15、15aを使用して、認知モデルを訓練するためにまたは推測目的で使用される。その点において、1つまたは複数のニューロン層は場合により、配列15、15a上に、該配列のパーティションに応じてマッピングされ得る。依然として、装置12~14は、場合により、配列からの出力を収集し、(必要に応じて)そのような出力を処理し、およびそれらを新たな入力として配列に再注入することで、例えば、実行される必要があるディープニューラルネットワークの複数の層をマッピングし得る。(特徴抽出などの)ML演算は、注目すべきことには、深さ方向の畳み込み、プーリング/アンプーリングなどを実行する必要があり得る。同様に、後処理装置14を活用して、出力ベクトルのアフィンスケーリングを実行する、非線形活性化関数を適用することなどを行ってよい。
【0075】
より一般的には、装置12~14は様々な演算を実行する場合があり、これらは実際のアプリケーションに左右される。また、そのような演算は、クライアントデバイス3および中間デバイス2において部分的に実行されてよい。アプリケーションに左右され得る様々な計算ストラテジが考案可能である。
【0076】
図1図4Bを再び参照して、メモリ内処理ハードウェアデバイス10、10aに関係する本発明のさらなる態様について、ここで詳細に説明する。このデバイスの機能的特徴および構造的特徴は既に本方法に関して説明されている。そのような特徴について、下記において簡潔に説明するにとどめる。
【0077】
本方法に適合するように、デバイス10、10aは、図2Aなどに示されるクロスバー配列構造15を備える。すなわち、配列15は、N×Mのセル155を定めるクロスポイントにおいて相互接続されるN個の入力線152およびM個の出力線153を含む。それぞれのセル155は、対応するメモリシステム157を含み、それぞれはK個の重みを格納するように設計される。配列15は、MAC演算を実行するように設計される。
【0078】
デバイス10、10aは、図3Bなどに(部分的に)示される選択回路159をさらに含む。選択回路159は、N×Mのメモリシステム157に接続される。この回路159は、全般的に、それぞれのメモリシステムのK個の重みからある重みを選択し、かつ選択された重みをアクティブな重みとして設定するように構成される。これによって、N×Mのセル155に対してN×Mのアクティブな重みを有効にすることができる。
【0079】
デバイス10、10aは、Nベクトルを配列15のN個の入力線152に符号化する信号を適用するように構成される入力装置151、151aも含む。これによって、配列15は、演算時に、選択回路159によって有効にされるように、Nベクトルおよび対応するN×Mのアクティブな重みに基づいてMAC演算を実行する。
【0080】
さらに、読み出し装置154は、先に論じたように、M個の出力線153の出力で得られた出力信号を読み出し、必要に応じて、部分出力値を累積するように構成される。また、読み出し装置は広い意味で理解されるべきである。例えば、該装置は、アキュームレータ154、154a、および/またはそのような出力値を格納するメモリエレメントを含んでよい。アナログ実装形態では、読み出し装置は、アナログデジタル変換器をさらに含んでよい。
【0081】
N×Mのメモリシステム157のそれぞれは、好ましくは、このK個の重みが独立してプログラム可能であるように設計される。図3Bに見られるように、デバイス10、10aは、それぞれのメモリシステム157に接続されるプログラム回路158を含んでよい。上記のように、対応するメモリシステムに接続される一部分であるプログラム回路158の一部分のみが図3Bに示されている。全体として、プログラム回路158は、N×MのメモリシステムのそれぞれのK個の重みをプログラムするように構成される。各メモリシステムのK個の重みが独立してプログラム可能であるため、アクティブな重みとして現在設定されていないK個の重みのいずれかは、K個の重みの別のものがアクティブな重みとして現在設定されている場合でも、場合により(再)プログラムされ得、これによって、演算時に、重みを先を見越してロード(先読み)することが可能である。
【0082】
すなわち、プログラム回路158は、有利には、1≦q≦K-1である場合、アクティブな重みとして現在設定されていないN×Mの重み集合q個を先読みし、それに応じて、N×Mのメモリシステム157をプログラムして、後者がN×Mの重み集合q個の代わりに、先読みされた重みを格納するように構成され得る。よって、演算時に、クロスバー配列構造15が既に、現在アクティブである重みに基づいてMAC演算を実行している間に、プログラム回路158は、N×Mのメモリシステム157のそれぞれをプログラムして、アクティブな重みとして現在設定されていない重みを変更してよい。
【0083】
プログラム回路158は、計算回路15が現在アクティブな重みに基づいてMAC演算を実行している間に、現在アクティブではない重みを先を見越して再プログラムできるように、該計算回路から十分に独立していなければならないことに留意されたい。この独立性によって、次の演算のサイクルに必要になるそれらの重みを先を見越してロードすることが可能になる。先読み演算は、例えば、1回にいくつかの重み集合に対して実行され得る。先に述べたように、様々な先読みスキームが考えられ得る。
【0084】
プログラム回路158は例えば、図2Bにおいて仮定されるように、局部記憶装置11を構成および制御論理回路12に接続し得る。アナログ実装形態では、原則として、入力線152を再利用してメモリシステム157をプログラムし得るが、算出サイクル中にメモリシステム157を再プログラムできるように、別個のプログラム回路を設けるのが好ましい。同様に、デジタルメモリセル(すなわち、デジタルメモリエレメントを含むセル)は、例えば、SRAMメモリデバイスにおける書き込み動作のためにワード線およびビット線を具現化する専用の線に接続可能である。図3Bの図示とは対照的に、選択回路159は場合により、読み取り動作のためにワード線およびビット線を再利用し得ることに留意されたい。よって、選択回路およびプログラム回路は、実際、一部が重複している場合がある。
【0085】
図3Aおよび図3Bの例では、N×Mのメモリシステム157のそれぞれは、簡潔にするために、K個の異なったメモリエレメントを含む。それぞれのメモリエレメントは、対応する重みを格納するように適応される。その場合、選択回路159はN×Mのマルチプレクサを含み得る。それぞれのマルチプレクサは、図3Bに示されるように、対応するメモリシステム157の全てのメモリエレメントに接続される。さらに、選択制御線はそれぞれのマルチプレクサに接続されることで、それぞれのメモリシステム157のK個の重みのいずれかが、演算時にアクティブな重みとして選択かつ設定可能である。選択ビットは、図3Cに示されるように、制御線を通して伝えられて、アクティブな重みを選択することができる。
【0086】
図3Cの例では、マルチプレクサは、共通出力Xに到達するための、インバータおよび論理「NAND」ゲートを使用するチャネルマルチプレクサである。すなわち、組み合わせ論理回路は、いくつかの入力線A、B、C、Dのうちの1つを単一の共通出力線Xに切り替える。データ線A、B、C、Dは、図3BにおけるW1、1、0、W1、1、1、W1、1、2、W1、1、3に対応する。(バイナリ入力アドレスを伝達する)データ選択線は、それぞれ、最下位ビット(LSB)および最上位ビット(MSB)に対応するAddおよびAddによって定められる。N×Mのマルチプレクサを使用して、N×Mのメモリシステムの重みを切り替える。原則として、それぞれのマルチプレクサの個別の制御を可能にするために、マルチプレクサ159ごとにせいぜい2×N×Mの制御線、すなわち、2つの制御線がある。しかしながら、実際には、制御線は、マルチプレクサ、特に、以下に論じられるように、重み集合を同時に選択することを望む場合は、場合により全てのマルチプレクサにわたって共有可能である。よって、全ての制御線は好ましくは共有され、これによって、M×Nのメモリシステムにおける各エレメントに対して同じインデックスKが同時に選択可能になる。そのような場合、制御線の数はLog(K)線まで低減可能である。
【0087】
同様に、プログラム回路158は、N×Mのデマルチプレクサを含んでいる場合があり、この場合、同じ制御ビット線が配列15全体に使用される。また、簡潔にするために、図3Bでは、対応するメモリシステム157に接続される単一のデマルチプレクサ158が示されている。しかしながら、実際には、各々のメモリシステム157に接続される、N×Mのデマルチプレクサ158およびN×Mのマルチプレクサ159がある。別形では、プログラム回路158および選択回路159は、他のタイプの電子部品を含んでよく、この場合、そのような部品は、必要に応じて、メモリ値をプログラムしかつ選択するために、それぞれのセルに配置される、または少なくともそれぞれのセルに接続する。さらなる別形では、それぞれのメモリシステムは、K個の異なったメモリエレメントで構成される代わりに、対応するローカルアドレスでK個の異なった値を格納するように構成される。
【0088】
先に述べたように、必要とされる重みは、好ましくは、一度に全て有効にされるS70。その目的に向けて、選択回路159は有利には、N×Mの重み集合K個のうちの1つからn×mの重みの(少なくとも)部分集合を選択するように構成され得る。これは、2≦n≦N、2≦m≦M、および1≦k≦Kの場合、n×mのメモリシステム157の部分集合のそれぞれのメモリシステムのK個の重みの第kの重みを付随して選択することによって、最も効果的に実現される。先に示したように、n×mの部分配列の重みを有効にすることは、N×Mの重み全てが切り替えられなければならないわけではない場合のそれらの行列-ベクトル算出には有利であり得、これは、課題が最初にN×Mのセル155上にどのようにマッピングされるかに左右される。切り替え演算はまれに、単一のセル(すなわち、n=1およびm=1)に対して実行されなければならない場合があることに留意されたい。しかしながら、実際には、重みの選択は、概ね、N×Mのメモリシステムの大きな部分集合(すなわち、n>1およびm>1)、またはさらには、図5A図5B、および図7に関して先の論じられたアプリケーションの例にあるように、特に大きなオペランド行列が含まれているN×Mのメモリシステムの全てに対して、同時に実行されることになる。しかしながら、別形では、選択回路159は、全てのメモリシステム157を同時に体系的に切り替えるように、N×MのメモリシステムのそれぞれのK個の重みの第kの重みを付随して選択することによって、N×Mの重み集合K個のうちの1つからN×Mの重み集合を体系的に選択し得る。よって、一般に、選択回路159は、1≦n≦Nおよび1≦m≦Mの場合、配列15のn×mのメモリシステムに対して、n×mの重み集合を選択しかつ後者をアクティブな重みとして設定するように構成される。
【0089】
デバイス10、10aは、典型的には、入力装置151、151aおよび選択回路159に接続されるシーケンサ回路を含む。シーケンサ回路は、入力装置151、151aおよび選択回路159の演算を編成することで、先に説明したように行列-ベクトル算出のいくつかのサイクルを連続して実行する。すなわち、そのような演算はNベクトルに基づいている。行列-ベクトル算出のそれぞれのサイクルは、(実行されるMAC演算がビット直列に供給されるか否かに応じて)MAC演算の1つまたは複数のサイクル、および異なったN×Mの重み集合を含んでおり、後者は、それぞれのサイクルにおいて、N×Mの重み集合K個から選択され、かつN×Mのアクティブな重みとして設定される。シーケンサ回路、プログラム回路158、および入力回路151は、好ましくは、図2Bにおいて仮定されるように、典型的にはオンチップ論理装置12を含む、同じ構成および制御論理回路の一部を形成する。すなわち、シーケンス関数は、好ましくは、他の構成および制御関数と同様に、論理装置12によって実行される。
【0090】
さらに、デバイス10、10aは、それぞれの行列-ベクトル算出を完了すると得られる部分積値を累積するように構成されるアキュームレータ回路154、154aを含み得る。また、ビット直列アプリケーションでは、行列-ベクトル算出のそれぞれのサイクルは、図7に関して先に論じた実施形態にあるように、ビット直列演算により、いくつかのMACサイクルS80を含んでいる。ここで、さらなる累積S86が実行されなければならない。(並列直列変換151aを必要としない)並列実装形態に依存する別形において、完全な入力では単一サイクルで重み乗算が実行される。全ての場合において、それぞれの行列-ベクトル算出サイクル中にアクティブな重みは同じ状態のままである。
【0091】
図4Aおよび図4Bに見られるように、アキュームレータ回路154、154aは、出力線153の出力に配置可能である。アキュームレータはそれ自体が既知である。アキュームレータ回路154、154aは、注目すべきことには、読み出し装置(図示せず)の一部を形成し得る。別形では、アキュームレータは、注目すべきことには、それぞれのセルのレベルでビット直列演算中に得られた値を累積するS86ために、場合によりそれぞれのセルに配置され得る。
【0092】
上記のように、N×Mのメモリシステム157のそれぞれは、好ましくは、簡潔にするために、K個の異なったメモリエレメントを含む。それぞれのメモリエレメントは、対応する重みを格納するように適応される。そのようなメモリエレメントは、注目すべきことには、スタティックランダムアクセスメモリ(SRAM)デバイスなどのデジタルメモリエレメントであり得る。別形では、メモリエレメントはアナログメモリエレメントである。その場合、それぞれの乗累算演算、すなわち、Σi、j、kは、類推によって実行され、出力信号は、(必要に応じて)アナログデジタル変換器(ADC)回路を使用してデジタル領域に移される。メモリエレメントは、オプションとして、不揮発性メモリエレメントであり得る。より一般的には、本発明は、様々なタイプの電子メモリデバイス(例えば、SRAMデバイス、フラッシュセル、メモリスタデバイスなど)に対応する。相変化メモリセル、抵抗変化型メモリ(RRAM)、および電気化学的ランダムアクセスメモリ(ECRAM)デバイスなどの任意のタイプのメモリスタデバイスが考えられ得る。
【0093】
好ましい実施形態では、K個のメモリエレメントのそれぞれは、SRAMデバイスなどのデジタルメモリエレメントである。その場合、それぞれのセル155は、対応する選択回路部分159を介して(例えば、マルチプレクサを介して)対応するメモリシステム157のK個のメモリエレメントのそれぞれに接続される(乗算器および加算木を含む)演算装置156をさらに含む。それぞれのセルは、(マルチプレクサまたはその他の選択回路コンポーネントなどの)選択回路コンポーネントを介してそれぞれのメモリエレメントに物理的に接続されるが、選択回路によってなされた選択により、一度にそのようなエレメント1つのみに論理的に接続されることに留意されたい。
【0094】
ビット直列実装形態(図4A)では、それぞれのメモリエレメントは、Pビットの重みを格納するように設計される。入力装置151は、入力信号を適用することで、P個のサイクル(P≧2)でNベクトルの成分を入力線152にビット直列に供給するように構成され、それぞれのベクトル成分はPビット入力ワードに対応する。N×Mのセル155は、さらにまた、MAC演算をビット直列に(すなわち、P個のサイクルで)実行するS80ように設計されなければならない。よって、ハードウェアデバイス10は、P個のサイクルのそれぞれにおいて得られる部分的なビット直列積値に対応する値を累積するためのアキュームレータ回路154を含まなければならず、これは図7におけるステップS86に対応する。一方では、選択回路159は、P個のサイクルのそれぞれの間のアクティブな重みと同じN×Mの重み集合を維持しなければならない。
【0095】
実装形態の例として、(i)クロスバー配列がN×M=512×512の配列である、(ii)K=4であり、それによって、合計で、4つの切り替え可能なN×Mの重み集合が利用可能である、および(iii)図4Aにあるように、入力サンプルのビット幅(IBW)がP=8ビットに等しいことで、重みのビット幅(WBW)も8ビットに等しいと仮定する。IMCデバイス10は、512の成分のNベクトルを取り入れる(それぞれの成分は8ビット入力ワードに対応する)。それぞれのベクトル成分は、P=8サイクルにおいてビット直列に供給される。IMCデバイス10は、合計で(それぞれ8ビットの)512×512×4の重みをマッピングする。重み集合の1つのみがP個のサイクルの各サイクルの間の処理にアクティブであるS80。先に述べたように、ビット直列サイクルS80は、行列-ベクトル算出サイクル(S60~S100)と混同させてはならない。各サイクルS80では、N個の入力ビット全て(1行当たり1つ)にはM個の重み(1列当たり1つ)が乗じられる。得られた部分積は、17ビット値として(WBW+Log(N)=17として)格納可能であり、これは、IMC15より下のアキュームレータ154においてIBW=8サイクルで累積されて、最後に、完全ベクトル積、すなわち、この算出サイクルS80に対する最終結果を生成する(S88:はい)。
【0096】
また、IMC配列における演算装置では、Nベクトルおよび関連のブロック行列の各対に対して部分内積を計算する。アキュームレータ154は、最終結果を外部メモリにライトバックするより前に、K個の部分積を累積するS90ためにさらに使用されてよい。IMCは各行列-ベクトル算出サイクルでコンテキスト(重み集合)を切り替える。このプロセスは各入力ベクトルに対して繰り返され得る。例えば、プログラム可能なアキュームレータは、例えば、シフトおよび反転演算後に得られる、いくつかの中間結果値を累積するようにプログラム可能である。よって、8ビットのビット直列のIMC実装形態でK個の重み集合が使用される場合、アキュームレータ154は、ビット直列シーケンスの反復に応じて適切にシフトされるK×8(17ビット)の値を内部に累積し得る。P=8、K=4、およびN=512である場合、出力アキュームレータの最終ビット幅は27ビットである。27ビットは以下のように計算される。ビット直列プロセスのそれぞれの反復で、512の8ビット乗算値が累積され、これを表すためには17ビットを必要とする。17ビットの値は8つのサイクルでシフトされかつ累積され、この場合、合成値は、十分に表されるように25ビットを必要とする。アキュームレータは、K=4の異なる重み集合に対してこのサイクルを繰り返すことができ、最後に、最終結果を表すために27ビットを必要とする。
【0097】
一般に、パラメータN、M、P、およびKは、様々な考えられる値を取り得る。上に示される値は例に過ぎない。図4Bなどに示される並列実装形態に依存する別形では、並列から直列の変換は必要ではない。むしろ、ベクトル成分は、入力装置151aを介して、対応する入力線152のM個のセルのそれぞれに並列に供給される。完全な入力が単一サイクルで(重み乗算により)実行される。アキュームレータ154aを使用して、部分積を累積するS90ことで、現在のNベクトルおよび関連の行列ブロックがもたらされる。その場合、MAC演算に対する中間累積は必要ではない。
【0098】
ビット直列実装形態に基づくか並列実装形態に基づくかにかからわらず、ハードウェアデバイス10、10aは、図2Bにあるように、入力装置151、151aおよび選択回路159のそれぞれに接続される構成および制御論理部12を組み込み得る。さらに、事前データ処理装置13は、(課題をNベクトルおよびブロック行列に適当にパーティション分割しかつ演算を命令するように)構成および制御論理部12に接続されてよい。完全を期すために、事後データ処理装置14は、出力線153の出力に、例えば、アキュームレータ154、154aの出力に接続されることで、必要に応じて出力データを適当に再配置し、かつ、図1に見られるように、それらデータをローカルメモリまたすぐ近くのメモリ(例えば、メモリ11)に格納するように、またはそれらデータを外部エンティティ2に返すように命令し得る。
【0099】
その点において、本発明の別の態様は、コンピューティングシステム1に関係する。システム1は、特に、上述されるような、1つまたは複数のメモリ内処理ハードウェアデバイス10、10aを含み得る。コンピューティングシステムは、例えば、図1において仮定されるように、クライアント/サーバ構成を有し得る。すなわち、ユーザ4は、計算を実行することを目的として(パーソナルデバイス3を介して)サーバ2と対話し得る。後者では、特に、実質的な行列-行列乗算または行列-ベクトル乗算が実行される必要があり得、この場合、サーバ2は、アクセラレータとして機能するハードウェアデバイス10、10aにそのような計算をオフロードすることを決定し得る。
【0100】
サーバ2は、外部メモリ装置を外部の汎用処理装置2と統合するものとみなされ得、ここで、後者は前者に接続されることで、演算時に記憶装置2に対するデータの読み書きを行うようにする。さらに、メモリ内処理ハードウェアデバイス10、10aのそれぞれは、サーバ2とデータ通信するように設定されることで、必要に応じて、サーバ2が送ってきた計算タスクに対処するように、記憶装置2に対して、データを読み取りかつデータをライトバックすることができる。汎用処理装置は、場合により、最初の計算タスク(解決されるべき課題)をNベクトルおよび対応するブロック行列にマッピングするように構成され得ることに留意されたい。
【0101】
外部メモリ装置はおよび汎用処理装置は、図1の例における同じ汎用コンピュータ2(すなわち、サーバ)の一部を形成することに留意されたい。しかしながら、原則として、外部処理装置および記憶装置は、場合により、物理的に異なった機械に設けられ得る。さらなる別形では、システム1はまた、クラウドコンピューティングシステムとして構成され得、場合により、コンテナ化技術を使用し得る。すなわち、本発明は、特に、クラウドコンピューティングシステムとして具現化され得、何らかの形で、クラウドベースサービスの一部として利用され得る。システム1は、特に、ハードウェアデバイス10、10aを、他のハードウェア加速デバイス、例えば、ASICおよびFPGAと共に含み得るコンポーザブル分解インフラストラクチャ(composable disaggregated infrastructure)をさらに含み得る。全ての場合において、データ交換は、先に説明したように計算を高速化するように最適化可能である。
【0102】
上記の実施形態は、添付の図面に関して簡潔に説明されており、いくつかの別形に対応し得る。上記の特徴のいくつかの組み合わせが考えられ得る。次の節において例を挙げる。
【0103】
2.特定の実施形態
とりわけ好ましい実施形態は、SRAMメモリエレメントを有する、図2A図3A、および図4Aなどに示されるアーキテクチャに依存する。領域が典型的にはメモリエレメントではなく密結合した演算装置の割合が高いことで、さらに一層密に配置される可能性がある、先のクロスバー配列とは違って、演算装置(乗算器および加算木)とメモリエレメントとの間のIMCチップの領域はバランスが取れている。メモリと演算領域との間のより良いバランスとは別に、(複数の重み集合による)提案された解決策によって、IMC装置15の柔軟性が向上し、より大きな行列-ベクトル乗算をネイティブにマッピングし、かつ重み集合を先読みすることが可能になる。それぞれの重み集合は別々のブロック行列を表す。それにもかかわらず、重み集合は、図3Aおよび図3Bに見られるように、同じ演算装置に接続される。
【0104】
ますますもって、提案されたアーキテクチャおよび機能性はまた、(外部メモリとの相互作用が少ないことによる、図5Aおよび図5Bを参照)効率の向上および(アクティブではない重み集合に対する重みを先読みする可能性による、図6)実行時間の高速化をもたらす。このアーキテクチャは、特に、アキュームレータ回路に依存し、この回路は、ビット直列サイクルおよび複数の重み集合の両方からもたらされる部分積を累積することができる。よって、中間結果を外部メモリに書き込む必要はない。これによって、読み出し/書き込み量が大幅に、すなわち、2K-1から(この場合、1つの重み集合のみが局所的に格納可能である)1まで(この場合、K個の重み集合が局所的に格納される)低減される。
【0105】
図7に見られるように、典型的な演算フローは下記になり、ビット直列実装形態を仮定している(図2A図4Aをさらに参照されたい)。クロスバー配列構造15を含むデバイス10がステップS10で提供され、例えば、デバイス10は、サーバ2とデータ通信するように設定される。ステップS20において、サーバ2は、行列-行列乗算を実行することを求める要求を(コンピュータ化クライアントとすることができるユーザ4から)受信する。ステップS30で、サーバ2の処理手段または埋め込み処理装置13のどちらかによって、計算ストラテジが判断される。これによって、Nベクトルは各々のブロック行列に関連付けられる。ステップS40において、行列-行列乗算サイクルが開始される。ステップS50で次の反復が開始され、それによって、T個の列の所与の入力行列が選択される。計算ストラテジの結果、N×Mの重み集合K個がステップS55でロードされる。K個の重み集合は、算出サイクル中に連続して使用されるK個のブロック行列に対応する。メモリエレメントがそれに応じてプログラムされる。現在の入力行列の(K×Nの成分の)次の入力ベクトルがステップS58で選択され、必要に応じてパディングされる。この入力ベクトルの次の副ベクトル(すなわち、N成分のNベクトル)が、対応するブロック行列と共にステップS60で選択される。ステップS70において、対応するN×Mの重みがアクティブな重みとして局所的に有効にされる。
【0106】
ステップS80においてブロック行列計算が開始される。ステップS82において、(現在のNベクトルのベクトル成分の)次のビットを配列15のN個の入力線にビット直列に供給するためのループが開始される。ステップS84においてビット直列MAC演算が実行される。ステップS86において部分結果が累積される。P個のビット直列サイクル全てが完了する(S88:はい)まで、プロセスは繰り返される(S88:いいえ)。P個のビット直列サイクル全てが完了すると、現在のNベクトルの処理が完了する。
【0107】
このNベクトルで得られた中間行列-ベクトル積は、必要に応じて以前の行列-ベクトル積と共に累積されるS90。すなわち、一番最初の行列-ベクトル積を除いて、全ての中間行列-ベクトル積が累積される。関連のブロック行列による乗算のために全ての副ベクトルが処理される(S100:はい)まで、中間行列-ベクトル積算出サイクル(S60~S100)が繰り返される。入力ベクトルに対するループ(S50~S110)は全ての入力ベクトルに対して繰り返される。全てのベクトルが処理される(S110:はい)と、現在の入力行列に対する最終結果が呼び出しエンティティ2、13に返されるS120。別形では、この結果は、全ての入力行列(S50~S120)が処理されるまで局所的に格納されてよい。その時初めて、全ての入力行列に関する結果が返される。
【0108】
3.最終的な見解
コンピュータ化デバイス10、10aおよびシステム1は、本明細書に説明されるように本発明の実施形態を実施するように適当に設計可能である。その点において、本明細書に説明される方法が本質的に対話的でない、すなわち、自動化されていることは、理解可能なことである。このような方法の自動化部分は、ハードウェアにのみ、またはハードウェアおよびソフトウェアの組み合わせとして実装可能である。例示的な実施形態では、本明細書に説明される方法の自動化部分は、ソフトウェアにおいて、サービスまたは実行可能プログラム(例えば、アプリケーション)として実装され、後者は、適したデジタル処理デバイスによって実行される。しかしながら、ここで説明される全ての実施形態は、場合により、デバイス10、10aの先読みおよび累積能力を使用して、複数の重み集合を格納するように適応されたクロスバー配列構造により実行される計算を含んでいる。
【0109】
依然として、本明細書に説明される方法は典型的には、実行可能プログラム、スクリプト、またはより一般的には、デバイス10、10aにおけるコア計算を実行するように命令する何らかの形態の実行可能命令を含んでいてよい。必要とされるコンピュータ可読プログラム命令は、例えば、コンピュータ可読記憶媒体から、ネットワーク、例えば、インターネットおよび/または無線ネットワークを介して、処理要素にダウンロード可能である。
【0110】
本発明の態様は、特に、フローチャートおよびブロック図を参照して本明細書に説明されている。フローチャートおよびブロック図のそれぞれのブロックまたはブロックの組み合わせが、コンピュータ可読プログラム命令により実装可能であることは理解されるであろう。添付の図面におけるフローチャートおよびブロック図には、本発明の様々な実施形態に従って、デバイス10、10a、ならびにそのようなデバイスを含んでいるシステム1、それらを動作させる方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作が示されている。
【0111】
本発明は、限られた数の実施形態、別形、および添付の図面を参照して説明されているが、当業者には理解されるであろうが、様々な変更がなされ得、本発明の範囲か逸脱することなく等価物に置き換えられ得る。とりわけ、所与の実施形態に列挙される(デバイス状または方法状の)特徴は、本発明の範囲から逸脱することなく、別の実施形態、別形、または図面における別の特徴と組み合わせられまたはこれに取って代わる場合がある。それ故に、上記の実施形態または別形のいずれかに関して説明される特徴の様々な組み合わせが考えられ得、これは添付の特許請求の範囲内にとどまる。さらに、本発明の範囲から逸脱することなく、特定の状況または材料を本発明の教示に適応させるように、多くの小さな修正がなされ得る。従って、本発明は開示される特定の実施形態に限定されず、本発明は添付の特許請求の範囲内にある全ての実施形態を含むことになることが意図されている。さらに、上で明示的に触れたもの以外の多くの他の別形が考えられ得る。例えば、他のタイプのメモリエレメント、選択回路、およびプログラム回路が考えられ得る。
図1
図2
図3A
図3B
図3C
図4A
図4B
図5A
図5B
図6
図7
【国際調査報告】