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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特許7650825インメモリ行列乗算のための温度ベースの調整
<>
  • 特許-インメモリ行列乗算のための温度ベースの調整 図1
  • 特許-インメモリ行列乗算のための温度ベースの調整 図2
  • 特許-インメモリ行列乗算のための温度ベースの調整 図3
  • 特許-インメモリ行列乗算のための温度ベースの調整 図4
  • 特許-インメモリ行列乗算のための温度ベースの調整 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-14
(45)【発行日】2025-03-25
(54)【発明の名称】インメモリ行列乗算のための温度ベースの調整
(51)【国際特許分類】
   G06F 17/16 20060101AFI20250317BHJP
   G11C 7/04 20060101ALI20250317BHJP
【FI】
G06F17/16 P
G11C7/04
【請求項の数】 20
(21)【出願番号】P 2021568589
(86)(22)【出願日】2020-05-08
(65)【公表番号】
(43)【公表日】2022-08-01
(86)【国際出願番号】 US2020032119
(87)【国際公開番号】W WO2020242746
(87)【国際公開日】2020-12-03
【審査請求日】2023-05-01
(31)【優先権主張番号】16/428,903
(32)【優先日】2019-05-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】マジェド ヴァラド ベイギ
(72)【発明者】
【氏名】アミン ファーマヒニーファラハニ
(72)【発明者】
【氏名】サダンヴァ グルムルティ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2019-502225(JP,A)
【文献】米国特許出願公開第2019/0066780(US,A1)
【文献】米国特許出願公開第2018/0108403(US,A1)
【文献】米国特許出願公開第2019/0122727(US,A1)
【文献】BEIGI,Majed Valad et al.,Thermal-aware Optimizations of ReRAM-based Neuromorphic Computing Systems,2018 55th ACM/ESDA/IEEE Design Automation Conference (DAC),米国,IEEE,2018年06月28日,pages:1-6
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/00-17/18
G11C 7/04
(57)【特許請求の範囲】
【請求項1】
インメモリ行列乗算を行う方法であって、
インメモリプロセッサの最上部領域及び最下部領域における左右の周辺センサからの温度測定値と、少なくとも1つの中央温度センサからの温度測定値と、に基づいて、前記インメモリプロセッサの領域を、少なくとも1つの低温領域及び少なくとも1つの高温領域として分類することと、
行列の第1の行列部分を有効であると分類し、前記行列の第2の行列部分を無効であると分類することと、
前記第1の行列部分を前記低温領域に割り当て、前記第2の行列部分を前記高温領域に割り当てることと、
前記インメモリプロセッサで前記行列との行列乗算を行って、積を受け取ることと、を含む、
方法。
【請求項2】
前記インメモリプロセッサの領域を分類することは、
対象領域の温度を決定することと、
前記温度と温度閾値との比較に基づいて、前記対象領域を低温領域又は高温領域の何れかに分類することと、を含む、
請求項1の方法。
【請求項3】
前記対象領域は、周辺温度センサ及び中央温度センサを有する周辺領域を含み、
前記対象領域の温度を決定することは、前記温度を、前記周辺温度センサ及び前記中央温度センサによって測定された最高温度として決定することを含む、
請求項2の方法。
【請求項4】
前記インメモリプロセッサは、周辺温度センサ及び中央温度センサをそれぞれ有する複数の周辺領域を含み、
前記インメモリプロセッサは、中央温度センサをそれぞれ含む複数の非周辺領域を含み、
前記対象領域は、前記複数の非周辺領域のうち何れかの非周辺領域を含み、
前記対象領域の温度を決定することは、温度を、周辺領域及び前記対象領域について測定された温度に基づいて決定することを含む、
請求項3の方法。
【請求項5】
前記第1の行列部分を有効であると分類することは、
前記第1の行列部分の非ゼロ要素の数が閾値を超えていると判別することを含む、
請求項1の方法。
【請求項6】
前記第2の行列部分を無効であると分類することは、
前記第2の行列部分の非ゼロ要素の数が閾値未満であると判別することを含む、
請求項1の方法。
【請求項7】
前記第1の行列部分を低温領域に割り当て、前記第2の行列部分を高温領域に割り当てることは、前記第1の行列部分と前記第2の行列部分とをスワッピングすることを含む、
請求項1の方法。
【請求項8】
前記行列乗算を行うことは、
入力ベクトルに対応する電圧のセットを、前記インメモリプロセッサのワード線のセットに印加することを含む、
請求項1の方法。
【請求項9】
入力ベクトルの要素をスワッピングすることをさらに含む、
請求項1の方法。
【請求項10】
温度コントローラと、
インメモリプロセッサと、を備え、
前記温度コントローラは、
前記インメモリプロセッサの最上部領域及び最下部領域における左右の周辺センサからの温度測定値と、少なくとも1つの中央温度センサからの温度測定値と、に基づいて、前記インメモリプロセッサの領域を、少なくとも1つの低温領域及び少なくとも1つの高温領域として分類することと、
行列の第1の行列部分を有効であると分類し、前記行列の第2の行列部分を無効であると分類することと、
前記第1の行列部分を前記低温領域に割り当て、前記第2の行列部分を前記高温領域に割り当てることと、
前記インメモリプロセッサで前記行列との行列乗算を行って、積を受け取ることと、
を行うように構成されている、
インメモリ行列乗算処理システム。
【請求項11】
前記インメモリプロセッサの領域を分類することは、
対象領域の温度を決定することと、
前記温度と温度閾値との比較に基づいて、前記対象領域を低温領域又は高温領域の何れかに分類することと、を含む、
請求項10のインメモリ行列乗算処理システム。
【請求項12】
前記対象領域は、周辺温度センサ及び中央温度センサを有する周辺領域を含み、
前記対象領域の温度を決定することは、前記温度を、前記周辺温度センサ及び前記中央温度センサによって測定された最高温度として決定することを含む、
請求項11のインメモリ行列乗算処理システム。
【請求項13】
前記インメモリプロセッサは、周辺温度センサ及び中央温度センサをそれぞれ有する複数の周辺領域を含み、
前記インメモリプロセッサは、中央温度センサをそれぞれ含む複数の非周辺領域を含み、
前記対象領域は、前記複数の非周辺領域のうち何れかの非周辺領域を含み、
前記対象領域の温度を決定することは、温度を、周辺領域及び前記対象領域について測定された温度に基づいて決定することを含む、
請求項12のインメモリ行列乗算処理システム。
【請求項14】
前記第1の行列部分を有効であると分類することは、
前記第1の行列部分の非ゼロ要素の数が閾値を超えていると判別することを含む、
請求項10のインメモリ行列乗算処理システム。
【請求項15】
前記第2の行列部分を無効であると分類することは、
前記第2の行列部分の非ゼロ要素の数が閾値未満であると判別することを含む、
請求項10のインメモリ行列乗算処理システム。
【請求項16】
前記第1の行列部分を低温領域に割り当て、前記第2の行列部分を高温領域に割り当てることは、前記第1の行列部分と前記第2の行列部分とをスワッピングすることを含む、
請求項10のインメモリ行列乗算処理システム。
【請求項17】
前記行列乗算を行うことは、
入力ベクトルに対応する電圧のセットを、前記インメモリプロセッサのワード線のセットに印加することを含む、
請求項10のインメモリ行列乗算処理システム。
【請求項18】
前記温度コントローラは、入力ベクトルの要素をスワッピングするように構成されている、
請求項10のインメモリ行列乗算処理システム。
【請求項19】
プロセッサと、
インメモリ行列乗算処理システムと、を備え、
前記インメモリ行列乗算処理システムは、
温度コントローラと、
インメモリプロセッサと、を備え、
前記温度コントローラは、
前記インメモリプロセッサの最上部領域及び最下部領域における左右の周辺センサからの温度測定値と、少なくとも1つの中央温度センサからの温度測定値と、に基づいて、前記インメモリプロセッサの領域を、少なくとも1つの低温領域及び少なくとも1つの高温領域として分類することと、
行列の第1の行列部分を有効であると分類し、前記行列の第2の行列部分を無効であると分類することと、
前記第1の行列部分を前記低温領域に割り当て、前記第2の行列部分を前記高温領域に割り当てることと、
前記インメモリプロセッサで前記行列との行列乗算を行って、積を受け取ることと、を行うように構成されている、
コンピューティングデバイス。
【請求項20】
前記インメモリプロセッサの領域を分類することは、
対象領域の温度を決定することと、
前記温度と温度閾値との比較に基づいて、前記対象領域を低温領域又は高温領域の何れかに分類することと、を含む、
請求項19のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2019年5月31日に出願された米国特許出願第16/428,903号の利益を主張するものであり、その内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
行列乗算は、3次元グラフィックスレンダリングや人工ニューラルネットワークの計算を行う等のように、多くの種類のコンピューティングタスクでよく使われる計算の一種である。したがって、行列乗算の性能は常に改善されている。
【0003】
以下に例として説明される記載は、添付の図面と併せて、より詳細に理解することができる。
【図面の簡単な説明】
【0004】
図1】本開示の1つ以上の機能を実装することができる例示的なコンピューティングデバイスのブロック図である。
図2】一例による、行列乗算アレイの詳細を示すブロック図である。
図3】一例による、温度コントローラを含む図1のインメモリプロセッサの詳細を示す図である。
図4】行列乗算のためのスワッピング動作の例を示す図である。
図5】一例による、インメモリプロセッサ全体の温度差を考慮して、インメモリプロセッサで行列乗算を実行する方法のフロー図である。
【発明を実施するための形態】
【0005】
メモリ内の温度変化を考慮して、インメモリ行列乗算を行う技術が開示される。一例では、行列乗算メモリは、オーム乗算及び電流加算を用いて、行列乗算に関係するドット積を実行する。このアナログ形式の乗算の1つの欠点は、温度が結果の精度に影響することである。したがって、本明細書では、インメモリ行列乗算の精度に対する温度上昇の影響を補償する技術を提供する。
【0006】
この技術によれば、温度センサからの測定値に基づいて、行列乗算メモリの領域が高温又は低温として分類される。一例では、これらの領域は、行列メモリダイに広がり、メモリ回路のワード線に平行である。2つの周辺領域(例えば、「上部」及び「下部」領域)にはコーナセンサ又は周辺センサがあり、周辺領域及び非周辺領域の両方に中央温度センサがある。温度コントローラは、温度センサからの読み取り値に基づいて、これらの領域の推定温度を決定し、推定温度と閾値との比較に基づいて領域を高温又は低温の何れかに分類する。温度コントローラは、入力行列(行列被乗数)の部分(行又は列等)を、それらの部分の要素の大きさに基づいて「有効」又は「無効」の何れかに分類する。より具体的には、閾値を超える非ゼロ要素の数を有する部分を「有効」とし、閾値以下の非ゼロ要素の数を有する部分を「無効」とする。「非ゼロ要素」とは、ゼロよりも大きいか、ゼロに近い値よりも大きい絶対値を有する要素である。「有効」部分は、「無効」部分よりも、結果として得られる行列乗算の積に大きな影響を与えるので、温度コントローラは、無効部分を高温領域にマッピングし、有効部分を低温領域にマッピングする。温度が上昇すると、メモリにおける計算の精度が低下するので、「有効」部分を低温領域にマッピングすることで行列乗算の精度が向上する。その他の詳細については、本明細書の他の箇所に記載している。
【0007】
図1は、本開示の1つ以上の機能を実装できる例示的なコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレット型コンピュータ、又は、他のコンピューティングデバイスの何れかであり得るが、これらに限定されない。コンピューティングデバイス100は、1つ以上のプロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、コンピューティングデバイス100は、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含む。入力ドライバ112の何れかは、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、入力デバイス108を制御する(例えば、動作の制御、入力ドライバ112からの入力の受信、及び、入力ドライバ112へのデータの提供を行う)という目的を果たす。同様に、出力ドライバ114の何れかは、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、出力デバイス110を制御する(例えば、動作の制御、出力ドライバ114からの入力の受信、及び、出力ドライバ114へのデータの提供を行う)という目的を果たす。コンピューティングデバイス100は、図1に示されていない他の構成要素を含むことがあり得ることを理解されたい。
【0008】
様々な代替形態では、1つ以上のプロセッサ102は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、同一のダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替形態では、メモリ104は、1つ以上のプロセッサ102のうち1つ以上と同じダイ上に配置されてもよいし、1つ以上のプロセッサ102とは別個に配置されてもよい。メモリ104は、揮発性又は不揮発性のメモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ等)を含む。
【0009】
ストレージ106は、固定又はリムーバブルストレージ(例えば、これらに限定されないが、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ等)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の照明、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
【0010】
入力ドライバ112及び出力ドライバ114は、それぞれ入力デバイス108及び出力デバイス110とインタフェースし、これらを駆動するように構成された1つ以上のハードウェア、ソフトウェア、及び/又は、ファームウェアコンポーネントを含む。入力ドライバ112は、1つ以上のプロセッサ102及び入力デバイス108と通信し、1つ以上のプロセッサ102が入力デバイス108から入力を受け取ることを可能にする。出力ドライバ114は、1つ以上のプロセッサ102及び出力デバイス110と通信し、1つ以上のプロセッサ102が出力デバイス110に出力を送ることを可能にする。
【0011】
いくつかの実施形態では、出力ドライバ114は、アクセラレーテッド処理デバイス(APD)116を含む。いくつかの実施態様では、APD116は、汎用コンピューティングに用いられ、ディスプレイ(ディスプレイデバイス118等)に出力を供給しない。他の実施形態では、APD116は、ディスプレイデバイス118にグラフィック出力を供給し、いくつかの代替形態では、APD116は、汎用コンピューティングも実行する。いくつかの例では、ディスプレイデバイス118は、リモートディスプレイプロトコルを使用して出力を表示する物理的なディスプレイデバイスであってもよいし、シミュレートされたデバイスであってもよい。APD116は、1つ以上のプロセッサ102から計算コマンド及び/又はグラフィックスレンダリングコマンドを受け取り、これらの計算コマンド及び/又はグラフィックスレンダリングコマンドを処理するように構成されており、いくつかの例では、画素出力を表示のためにディスプレイデバイス118に供給するように構成されている。APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含む。
【0012】
コンピューティングデバイス100は、1つ以上のインメモリプロセッサ130を含む。インメモリプロセッサは、入力信号をメモリセルに記憶されている値に適用し、乗算の積の要素を出力として取得することによって行列乗算を実行する。インメモリ行列乗算の多くの実施形態が可能である。一実施形態では、メモリセルは、抵抗性ランダムアクセスメモリセルである。この実施形態で乗算を行うために、行列の要素に対応する値がセルにロードされる。具体的には、抵抗は、行列要素の逆数に設定される(すなわち、抵抗要素のコンダクタンスが行列要素の値に設定される)。いくつかの実施形態では、抵抗は、行列要素を表す値を直接記憶するのではなく、それらの値を符号化する。行列と乗算されるベクトルの値に対応する一連の電圧が、一連のビット線に印加される。オームの法則により、ベクトルと行列の各行とのドット積が乗算の積として出力される。インメモリプロセッサ130のいくつかの例示的な配置が示されているが、技術的に実現可能な任意の位置又はデバイスに配置された任意のインメモリプロセッサ130が、本開示の範囲に含まれることを理解されたい。
【0013】
図2は、一例による、行列乗算アレイ200の詳細を示すブロック図である。行列乗算アレイ200は、抵抗性ランダムアクセスメモリ(RAM)を使用するインメモリプロセッサ130の例示的な実施形態における図1のインメモリプロセッサ130の一部である。行列乗算アレイ200は、抵抗性セル要素208を介して複数のビット線204に結合された複数のワード線206を含む。また、行列乗算アレイ200は、行列入力ブロック210と、ベクトル入力ブロック212と、ベクトル入力用のデジタル-アナログ変換器214と、出力用のアナログ-デジタル変換器216と、出力ブロック218と、を含む。
【0014】
行列(M)による列ベクトル(V)の行列乗算は、次のように行われる。
【数1】
【0015】
このような乗算の結果は、入力ベクトルと行列の各行とのドット積を要素とする列ベクトルとなる。例えば、出力ベクトルの上部要素は、ベクトルと行列の上部の行とのドット積である。同様に、出力ベクトルの中部及び下部の要素は、入力ベクトルと行列の中部の行とのドット積、及び、入力ベクトルと行列の下部の行とのドット積である。
【0016】
行列乗算アレイ200による行列乗算は、抵抗性メモリセル208を、乗算される行列の要素と等しいコンダクタンス(文字「G」で表され、コンダクタンスは抵抗の逆数である)を有するように設定することによって行われる。そして、乗算されるベクトルの要素と等しい電圧がワード線に印加される。この構成では、各ワード線は、オームの法則及びキルヒホッフの法則を用いてドット積を行う。より具体的には、ワード線206に印加された電圧が、各抵抗性セル208に印加される。この電圧の印加により、抵抗性セル208を介してビット線204からワード線206まで電流が流れる。オームの法則により、流れる電流の量はVGに等しくなる。ここで、「V」は、ビット線204に印加される電圧であり、「G」は、抵抗性セル208のコンダクタンスである。キルヒホッフの法則により、ビット線204上をADC216に流れる電流の量は、各抵抗性セル208を流れる電流の合計に等しい。したがって、積の合計(ドット積)が各ビット線204に出力される。このドット積は、入力ベクトルと入力行列の行とのドット積である。
【0017】
与えられた例では、入力ベクトルが列ベクトルであると仮定すると、抵抗性セル208及び入力ベクトルの物理的な方向は、行列及びベクトルの要素の論理的な方向と一致しない。より具体的には、上述したように、行列による列ベクトルの乗算は、入力ベクトルと行列の各行とのドット積を要素とする出力ベクトルとなる。しかし、行列乗算アレイ200は、入力ベクトルと抵抗性セル208の列とのドット積を行う。したがって、行列の要素は、行列乗算の表記表現と比較して逆向きに抵抗性セル208にロードされる(例えば、抵抗性セル208の列に、行列の表記表現の行の値がロードされる)。入力ベクトルが行ベクトルである場合、抵抗性セル208にロードされる値の方向は、行列の表記表現の方向と一致するが、その行入力ベクトルの値は、図2に示すように垂直に配列される。
【0018】
上記の技術を拡張して、行列と行列の乗算を行うことが可能である。より具体的には、このような乗算の積の各列(又は行)は、第1の入力行列の各列(又は行)と第2の入力行列との行列乗算に等しい。したがって、このような乗算は、第1の入力行列の各列(又は行)に対して上記の技術を繰り返して、出力行列の列(又は行)を取得することによって行われる。
【0019】
行列入力ブロック210は、抵抗性セル208に値をロードし、行列の値に従って(例えば、これらの値の逆数として)これらの抵抗性セル208の抵抗を設定する。ベクトル入力ブロック212は、乗算される入力ベクトルに関連するデジタル値をデジタル-アナログ変換器214に印加する。デジタル-アナログ変換器214は、これらの印加された値を電圧に変換し、その電圧を適切なワード線206に印加する。アナログ-デジタル変換器216は、受け取った電流をデジタル信号に変換し、これらのデジタル信号を出力ブロック218に供給する。ベクトル入力ブロック212にデジタル値を提供し、出力ブロック218からデジタル値を受け取る要素が図2に示されていないが、技術的に実現可能な任意の要素を使用することができる。
【0020】
図2に示す様々な要素は、説明された機能を実行するように構成された適切な回路として実装されている。抵抗性RAMを含むインメモリ行列乗算の特定の実装が開示されているが、この技術は、本明細書に開示されている温度ベースの調整の技術を適用できるインメモリ行列乗算を行うための他の技術的に実現可能な任意の技術に置き換えてもよいことに留意されたい。このような代替的な行列乗算の実装は、何れも本開示の範囲に含まれる。
【0021】
本明細書で説明する行列乗算技術は、アナログプロセスである。したがって、行列乗算の結果は、行列乗算アレイ200の物理的態様に依存する。そのような物理的態様の1つは温度であり、これは、行列乗算アレイ200の多くのインスタンスを含むダイに亘って変動し得る。例えば、そのようなダイの要素が熱くなり、(例えば、抵抗性セル208の抵抗値が変化することにより)ビット線204を流れる電流に変化をもたらす可能性がある。したがって、本明細書では、行列乗算アレイ200から出力される結果に対する温度変化の影響を低減する技術が提供される。
【0022】
図2に関して説明する技術は、インメモリ行列乗算が行われることを述べている本開示の任意の部分に対して行列乗算を行うために使用され得ることに留意されたい。
【0023】
図3は、一例による、図1のインメモリプロセッサ130の詳細を示す図である。インメモリプロセッサ130は、複数の行列乗算アレイ200と、温度コントローラ320と、を含む。また、インメモリプロセッサ130は、複数の温度センサ304を含む。温度センサ304は、中央センサ304aと周辺センサ304bとを含む。センサ304は、センサ304の位置における温度を測定する。温度コントローラ320は、それらの温度測定値を受け取り、その温度測定値に基づいて行列乗算アレイ200を制御して、温度偏差が計算精度に与える影響を緩和する。より具体的には、温度コントローラ320は、センサ304からの測定値に基づいて、インメモリプロセッサ130の異なる領域302の温度を決定する。各領域は、行列乗算アレイ200の各々の1つ以上の行(例えば、ワード線206)をカバーする。このようにして、温度コントローラ320は、領域302の温度を決定する際に、行列乗算アレイ200の1つ以上の行の温度を決定する。
【0024】
温度コントローラ320は、領域302の温度を決定するために、技術的に実行可能な任意の技術を使用することができる。例示的な一技術では、温度コントローラ320は、各中央温度センサ304a及び各周辺センサ304bにおける温度を測定する。周辺センサ304bは、最上部及び最下部の領域302にある。周辺領域(最上部領域及び最下部領域)について、温度コントローラ320は、その領域の全てのセンサ304の最高温度値を決定し、その最高温度を周辺領域302の温度として使用する。非周辺領域については、温度コントローラ320は、2つの周辺領域のうち、温度が決定されている非周辺領域がどの領域に近いかを決定する。温度が決定されている領域により近い周辺領域は、近傍周辺領域と呼ばれる。
【0025】
温度コントローラ320は、次のように非周辺領域の温度を決定する。温度コントローラ320は、近傍周辺領域内の周辺センサ304bの温度が、非周辺領域302内の中央センサ304aの温度よりも高いかどうかを判別する。非周辺領域内の中央センサ304aの温度が、近傍周辺領域内の周辺センサ304bの温度よりも高い場合、温度コントローラ320は、非周辺領域の温度として、非周辺領域302内の中央センサ304aの温度を割り当てる。
【0026】
周辺領域内の少なくとも1つの周辺センサ304bの温度が、周辺領域内の中央センサ304aの温度よりも高い場合、温度コントローラ320は、非周辺領域の温度を、周辺領域のセンサ304から測定された1つ以上の温度に基づいて修正された非周辺領域内の中央センサ304aの温度として決定する。一例では、温度コントローラ320は、以下の式に基づいて非周辺領域の温度を決定する。
【数2】

上式において、
ciは、非周辺領域の中央センサ304aの温度であり、
cpは、周辺領域内の中央センサ304aの温度であり、
ppは、周辺領域でより高い温度を有する周辺センサ304bの温度である。
【0027】
つまり、周辺領域内のより高い周辺センサと中央センサとの差が2倍にされ、その結果が非周辺領域の中央センサ304aの温度に加えられる。
【0028】
上記の技術は、領域の温度を決定するための例として提供されているが、センサ304の測定値に基づいて温度を決定するための技術的に実現可能な任意の技術を使用することができる。さらに、周辺領域内のセンサ304の測定値に基づいて非周辺領域の温度を決定するための具体的な表現が提供されているが、その温度を決定するための技術的に実現可能な任意の技術が可能である。一例では、周辺領域の中央センサと周辺センサとの差を2倍にして、その2倍にした差を非周辺領域の中央センサ304aで測定された温度に加える代わりに、差を2倍にせずに加えてもよい。この差は、別の乗法係数又は加法係数によって修正することもでき、或いは、他の方法で修正することができる。他の例では、周辺領域の中央及び周辺センサ304の温度の差に基づかない(しかし、代わりに、周辺領域の周辺及び中央センサに関係する他の何らかの量に基づく)量が使用される。さらに、センサ304の特定の構成が示され説明されているが、温度センサ304の任意の技術的に実現可能な構成が、領域302の温度を決定するために用いられてもよい。
【0029】
計算精度に対する温度の影響を緩和するために、温度コントローラ320は、列の「有効性分類(effectiveness classification)」に基づいて、入力行列の一部(行列乗算が行列乗算アレイ200にどのようにマップされるかに応じて、列又は行のように)を行列乗算アレイ200のワード線206に割り当てる。
【0030】
「有効性分類」は、入力行列の特定の行列部分が行列乗算の積にどの程度の影響を与えるかを識別するものである。一例では、行列部分の非ゼロ要素の数が閾値を超える場合、その行列部分は有効であると見なされる。いくつかの実施形態では、要素がゼロに等しくない場合、その要素は非ゼロであると見なされる。他の実施形態では、要素の絶対値がゼロに近い閾値を超えている場合、その要素は非ゼロであると見なされる。閾値は、技術的に実現可能な任意の方法で選択することができる。有効と見なされない行列部分は、無効と見なされる。一例では、閾値を決定するために、次のことが行われる。全てのカウンタ値の算術平均が計算され(各カウンタは、各行列部分の非ゼロ要素の数を記憶する)、全平均(τ(avg))と呼ばれる。τ(小_カウンタ)が、全平均よりも小さいカウンタ値の算術平均として計算される。τ(大_カウンタ)が、全平均よりも大きいカウンタ値の算術平均として計算される。いくつかの実施形態では、最も効果的な行列部分を選択するために、カウンタの閾値がτ(大_カウンタ)に設定される。ただし、閾値を選択する他の方法を取ることも可能である。具体的には、有効な行列部分及び無効な行列部分の分布が、最適な閾値レベルに影響を与える可能性がある。
【0031】
無効と見なされる行列の部分には、ゼロ又はゼロに近い要素が多数含まれているので、この部分による行列乗算の積への寄与は比較的小さい。したがって、無効な行列部分の精度は、有効と見なされる行列部分の精度よりも重要ではない。この事実により、単一の行列乗算アレイ200内で、温度コントローラ320は、有効であり高温領域302に位置する入力行列の行列部分と、無効であり低温領域302に位置する入力行列の行列部分とをスワッピングする(入れ替える)。また、温度コントローラ320は、スワッピング後に得られる出力ベクトルを正しくするために、そのようなスワッピングが必要かどうかに応じて、入力ベクトルの要素及び/又は出力ベクトルの要素をスワッピングする。決定された温度が閾値未満である領域302は低温領域として分類され、決定された温度が閾値を超える領域302は高温領域として分類される。閾値は、技術的に実現可能な任意の方法で設定することができる。
【0032】
図4は、行列乗算のためのスワッピング動作の例を示す。この行列乗算は、列ベクトルV402に行列404を乗算して、行列積である出力列ベクトル406を取得することを含む。この例では、入力行列の列は、有効又は無効として分類される行列部分である。温度コントローラ320は、入力行列404の列を図のように分類する。具体的には、第1の列及び第3の列は有効として分類され、第2の列は無効として分類される。本明細書の他の箇所で説明したように、この分類は、列の要素をゼロ又は非ゼロに分類し、非ゼロ要素の数を閾値と比較することによって行われる。このようにして、温度コントローラ320は、列の値に基づいて図示された分類を得る。具体的には、温度コントローラ320は、中部の列が閾値よりも大きいゼロ又はゼロに近い値の数を含むと判別して、その列を無効として分類する。他の2つの列は、閾値以下のゼロ又はゼロに近い値の数を有するので、温度コントローラ320は、それらの列を無効として分類する。
【0033】
スワッピングされていない構成200(1)の行列乗算アレイでは、入力ベクトルの要素は、図示した順序でマッピングされる。さらに、行列の要素は、図のようにセル208にマッピングされる。具体的には、入力ベクトルが列ベクトルであるので、図のように、入力行列の行が行列乗算アレイ200のワード線206にマッピングされ、それによって正しい結果の列ベクトルが出力として得られる。この「スワッピングされていない構成200(1)」は、本明細書で説明する温度ベースなしで行われることになるマッピングである。
【0034】
温度コントローラ320は、温度センサ304を用いて、本明細書の他の箇所で説明した技術に従って、領域を低温又は高温の何れかとして分類する。図4では、上の2つのワード線206は、低温として分類される領域1にあり、下のワード線206は、高温として分類される領域2にある。スワッピングされていない構成200(1)では、「有効」な列(列3)が高温領域に割り当てられており、これは、列3を含む計算では精度が低下することを意味する。
【0035】
そのため、温度コントローラ320は、有効として分類された列を低温領域のワード線206に割り当て、無効として分類された列を高温領域のワード線206に割り当てる。図4の例では、列3が列2とスワッピングされている。したがって、スワッピングされた構成200(2)では、温度コントローラ320は、低温領域である中部のワード線206に列3を割り当て、高温領域である下部のワード線206に列2を割り当てる。さらに、温度コントローラ320は、入力ベクトルの対応する要素をスワッピングする。列2と列3とがスワッピングされるので、入力ベクトルの要素2と要素3とがスワッピングされる。このようにして入力ベクトルをスワッピングすると、正しい行列乗算の出力が得られることになる。
【0036】
図4の例では、1種類の行列乗算とそれに対応する1種類のスワッピング動作のみを示しているが、他の種類のスワッピング動作も有効であることに留意されたい。一例のスワッピング動作では、入力が行ベクトルであり、したがって、行列の乗算に伴うドット積が行列の列に沿って行われるので、入力行列の(列ではなく)行がワード線206にマッピングされる。この例では、入力行列の行(列ではない)が有効又は無効として分類される。有効として分類された行は、低温領域のワード線206にマップされ、無効として分類された行は、高温領域のワード線206にマップされる。どのような構成を使用する場合でも、正しい結果を得るためには、入力ベクトルの要素をスワッピングする必要がある。正しい結果とは、入力行列とベクトルの要素が、行列乗算で行われるように乗算され、加算されたことを意味する。いくつかの構成では、入力ベクトルの要素の順序をスワッピングする代わりに、又はそれに加えて、出力の順序をスワッピングすることが可能な場合がある。
【0037】
もちろん、有効な列の数を低温のワード線206の数より少なくすることも可能である。その状況では、温度コントローラ320は、有効な列を低温のワード線206にマッピングすることに加えて、1つ以上の無効な列を1つ以上の低温のワード線206にマッピングする。有効な列の数が、低温のワード線206の数を超えることもあり得る。そのような状況では、場合によっては、温度コントローラ320は、異なる方法で行列の乗算を行うバックアップモードを利用する。一例では、温度コントローラ320は、低温のワード線206よりも多くの有効な列を有する行列乗算アレイ200を、エラー訂正コード(ECC)付きで実行させる。具体的には、この状況では、有効な行列部分を高温のワード線にマッピングするため、乗算結果の精度が低くなる。この場合、サイレントエラーを回避するために、強力なECCがバックアップモードとして組み込まれている。
【0038】
行列と行列との乗算を行うことが可能である。その場合、第1の行列が複数の1次元ベクトルに分割され、本明細書に記載の技術が各ベクトルに対して繰り返される。
【0039】
図5は、一例による、インメモリプロセッサ全体の温度差を考慮して、インメモリプロセッサで行列乗算を実行する方法500のフロー図である。
【0040】
方法500は、ステップ502で開始し、温度コントローラ320は、領域302を高温又は低温の何れかに分類する。この分類は、本明細書の他の箇所で(例えば、図3に関連して)説明したように、温度センサ304から取得される測定値に基づいて行われる。
【0041】
領域302を高温又は低温の何れかに分類するために、温度コントローラ320は、領域302について決定された温度が、温度閾値を超えているか又は温度閾値未満であるかを判別する。温度が温度閾値を超える場合、温度コントローラ320は、その領域を高温領域として分類する。温度が温度閾値未満である場合、温度コントローラ320は、その領域を低温領域として分類する。温度閾値は、技術的に実現可能な任意の方法で設定することができる。一例では、温度閾値は、摂氏57度等の定数である(又は、摂氏57度からの摂氏1度以内の定数であり得る)。
【0042】
ステップ504では、温度コントローラ320は、行列乗算のための入力行列の一部(入力行列部分)を有効又は無効の何れかに分類する。この分類は、本明細書の他の箇所で説明したように、入力行列部分の要素の大きさに基づいて行われる。
【0043】
ステップ506では、温度コントローラ320は、有効として分類され、初期構成で高温として分類された行列乗算アレイ200のセル208に割り当てられている入力行列部分を、無効として分類され、初期構成で低温として分類された行列乗算アレイ200のセル208に割り当てられている入力行列部分とスワッピングする。初期構成とは、本明細書に記載されている技術のスワッピングを伴わない、行列乗算アレイ200上の入力行列部分の配列のことである。また、温度コントローラ320は、実行されている行列乗算の種類に応じて、入力ベクトルの要素を対応する方法でスワッピングさせることができる。
【0044】
ステップ508では、温度コントローラ320は、行列乗算を実行させる。抵抗性RAMを利用した実施形態では、入力ベクトルの電圧をワード線206に印加することにより、ワード線206からビット線にそれらの電圧と抵抗性セル208の抵抗に依存した電流が流れ、その電流が合計されてビット線204に沿って出力されることで、ビット線204に沿ってドット積を行い、それによって乗算が行われる。この技術は、本明細書の他の箇所に記載されているものであるが、技術的に実現可能な他の任意の技術も可能である。
【0045】
温度決定は、行列の乗算が行われる頻度よりも少ない頻度で行われる可能性がある。このようなスキームによれば、温度コントローラ320は、1つ以上の領域302の温度を決定し、その温度は、ある期間、列をスワッピングするかどうかを判別する際に使用される。その期間が経過した後に、温度コントローラ320は、その領域の温度を再び決定する。
【0046】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素を特定の組み合わせで上述したが、各特徴又は要素は、他の特徴及び要素無しに単独で、又は、他の特徴及び要素を伴う若しくは伴わない様々な組み合わせで使用することができる。
【0047】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。適切なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと協働する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他の任意のタイプの集積回路(IC)、及び/又は、状態機械を含む。そのようなプロセッサは、処理されたハードウェア記述言語(HDL)命令の結果と、ネットリストを含む他の中間データ(コンピュータ可読媒体に記憶することができるそのような命令)とを使用して製造プロセスを構成することによって、製造することができる。そのような処理の結果は、後に本開示の特徴を実装するプロセッサを製造するための半導体製造プロセスで使用されるマスクワークとすることができる。
【0048】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実装することができる。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。
図1
図2
図3
図4
図5