(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024010137
(43)【公開日】2024-01-23
(54)【発明の名称】外部メモリを機械学習アクセラレータにとってローカルとする仮想化
(51)【国際特許分類】
G06F 12/10 20160101AFI20240116BHJP
G06F 12/02 20060101ALI20240116BHJP
G06N 3/06 20060101ALI20240116BHJP
【FI】
G06F12/10
G06F12/02 570A
G06N3/06
【審査請求】有
【請求項の数】12
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023186440
(22)【出願日】2023-10-31
(62)【分割の表示】P 2021557065の分割
【原出願日】2019-11-26
(31)【優先権主張番号】16/397,481
(32)【優先日】2019-04-29
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】マダー,ローレンス・ジェイ,ザ・サード
(72)【発明者】
【氏名】ファデル,テミタヨ
(72)【発明者】
【氏名】カイタン,ハーシット
(72)【発明者】
【氏名】ナラヤナスワミ,ラビ
(57)【要約】 (修正有)
【課題】コンピュータ記憶媒体上にエンコードされたコンピュータプログラムを含み、外部メモリを機械学習アクセラレータのローカルメモリとして仮想化するための方法、システムおよび装置を提供する。
【解決手段】コンピューティング装置において、環境コンピューティングシステムは、環境機械学習(ML)エンジンと、低電力CPUと、少なくとも環境MLエンジンと低電力CPUとの間で共有されるSRAMと、を備える。環境MLエンジンは、環境MLエンジンによって生成された仮想アドレスを、SRAM内の物理アドレスに変換するための仮想アドレスロジックを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
環境コンピューティングシステムであって、
環境機械学習エンジンと、
低電力CPUと、
少なくとも環境機械学習エンジンと低電力CPUとの間で共有される外部メモリとを備え、
前記環境機械学習エンジンは、前記環境機械学習エンジンによって生成された仮想アドレスを前記外部メモリ内の物理アドレスに変換するための仮想アドレスロジックを含む、環境コンピューティングシステム。
【請求項2】
前記環境コンピューティングシステムは、機械学習モデルのパラメータを、前記環境コンピューティングシステムとは別個の第2のメモリから前記SRAMにストリームするように構成されている、請求項1に記載の環境コンピューティングシステム。
【請求項3】
前記環境コンピューティングシステムは、システムオンチップに集積され、
前記第2のメモリは、前記システムオンチップとは別個のものである、請求項2に記載の環境コンピューティングシステム。
【請求項4】
前記第2のメモリから前記機械学習モデルの前記パラメータをストリームすることは、前記外部メモリ内の命令またはデータを上書きする、請求項2または3に記載の環境コンピューティングシステム。
【請求項5】
前記環境機械学習エンジンは、前記外部メモリから機械学習モデルのパラメータを読み出すことによって、前記機械学習モデルを通る推論パスを実行するように構成されている、先行する請求項のいずれか1項に記載の環境コンピューティングシステム。
【請求項6】
前記外部メモリから前記機械学習モデルの前記パラメータを読み出すことは、前記環境機械学習エンジンが前記外部メモリ内のアドレスに対応しない仮想アドレスを含む読み出し命令を実行することを含む、請求項5に記載の環境コンピューティングシステム。
【請求項7】
前記環境機械学習エンジンは、前記外部メモリ内の位置を表す物理アドレスを生成するために、前記読み出し命令の前記仮想アドレスを前記環境機械学習エンジンに提供するように構成されている、請求項6に記載の環境コンピューティングシステム。
【請求項8】
前記環境機械学習エンジンは、前記環境機械学習エンジンが利用できるローカルメモリのサイズを入力引数とするコンパイラプログラムによって入力プログラムから生成された命令を実行するように構成され、
前記命令は、ローカルメモリとして利用可能な前記外部メモリのサイズを前記コンパイラプログラムに提供することによって生成される、先行する請求項のいずれか1項に記載の環境コンピューティングシステム。
【請求項9】
前記環境コンピューティングシステムは、以下の動作を実行するように構成され、
前記動作は、
処理される1つ以上のセンサ信号の受信を表す割り込みを受信する動作と、
前記1つ以上の他の処理コンポーネントのうちの第1の処理コンポーネントによって実行される命令を前記外部メモリにストリームすることを含み、前記第1の処理コンポーネントを作動させる動作と、
前記第1の処理コンポーネントが、前記外部メモリ内の前記命令を用いて前記1つ以上のセンサ信号を処理することによって、前記環境機械学習エンジンが前記1つ以上のセ
ンサ信号をさらに処理すべきであると判断する動作と、
前記環境機械学習エンジンによって使用されるパラメータを前記外部メモリにストリームすることを含み、前記環境機械学習エンジンを作動させる動作と、
前記環境機械学習エンジンが、前記外部メモリに格納された前記パラメータを用いて機械学習モデルの推論パスを実行する動作とを含む、先行する請求項のいずれか1項に記載の環境コンピューティングシステム。
【請求項10】
前記環境機械学習エンジンによって使用される前記パラメータを前記外部メモリにストリームすることは、前記外部メモリに格納され且つ前記第1の処理コンポーネントによって実行される前記命令を上書きする、請求項9に記載の環境コンピューティングシステム。
【請求項11】
前記外部メモリはさらに、ダイレクトメモリアクセスコントローラ、1つ以上の他の機械学習エンジン、または1つ以上の他のプロセッサによって共有される、先行する請求項のいずれか1項に記載の環境コンピューティングシステム。
【請求項12】
前記1つ以上の他の機械学習エンジンは、メイン機械学習エンジンを含む、請求項11に記載の環境コンピューティングシステム。
【請求項13】
前記外部メモリは、SRAMであり、
前記第2メモリは、DRAMである、先行する請求項のいずれか1項に記載の環境コンピューティングシステム。
【請求項14】
環境コンピューティングシステム上でメモリを仮想化するための方法であって、
前記システムは、
仮想アドレスロジックを含む環境機械学習エンジンと、
低電力CPUと、
少なくとも前記環境機械学習エンジンと前記低電力CPUとの間で共有される外部メモリとを備え、
前記方法は、
前記環境機械学習エンジンの前記仮想アドレスロジックが、前記環境機械学習エンジンによって生成された仮想アドレスを受信することと、
前記環境機械学習エンジンの前記仮想アドレスロジックが、前記環境機械学習エンジンによって生成された仮想アドレスを前記外部メモリ内の物理アドレスに変換することとを含む、方法。
【請求項15】
前記環境コンピューティングシステムは、機械学習モデルのパラメータを、前記環境コンピューティングシステムとは別個の第2のメモリから前記外部メモリにストリームするように構成されている、請求項14に記載の方法。
【請求項16】
前記環境コンピューティングシステムは、システムオンチップに集積され、
前記第2のメモリは、前記システムオンチップとは別個のものである、請求項15に記載の方法。
【請求項17】
前記第2のメモリから前記機械学習モデルの前記パラメータをストリームすることは、前記1つ以上の他の処理コンポーネントのうちの1つによって使用される前記外部メモリ内の命令またはデータを上書きする、請求項15または請求項16に記載の方法。
【請求項18】
前記環境機械学習エンジンは、前記外部メモリから前記機械学習モデルのパラメータを読み出すことによって、前記機械学習モデルを通る推論パスを実行するように構成されて
いる、請求項14から17のいずれか1項に記載の方法。
【請求項19】
前記外部メモリから前記機械学習モデルの前記パラメータを読み出すことは、前記環境機械学習エンジンが前記外部メモリ内のアドレスに対応しない仮想アドレスを含む読み出し命令を実行することを含む、請求項18に記載の方法。
【請求項20】
前記外部メモリはさらに、ダイレクトメモリアクセスコントローラ、1つ以上の他の機械学習エンジン、または1つ以上の他のプロセッサによって共有される、請求項14から19のいずれか1項に記載の方法。
【請求項21】
環境コンピューティングシステムの環境機械学習エンジンによって実行される命令がエンコードされた1つ以上のコンピュータ可読記憶媒体であって、
前記環境コンピューティングシステムは、低電力CPUと、少なくとも前記環境機械学習エンジンと前記低電力CPUとの間で共有される外部メモリとをさらに含み、
前記1つ以上の命令は、前記環境機械学習エンジンと前記低電力CPUとの間で共有される前記外部メモリ内の物理アドレスに対応する仮想アドレスを含む、1つ以上のコンピュータ可読記憶媒体。
【請求項22】
請求項14から20のいずれか1項に記載の前記方法を実行するための命令をさらに含む、請求項21に記載の1つ以上のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本明細書は、機械学習アクセラレータに関する。
【背景技術】
【0002】
機械学習(ML)アクセラレータは、機械学習モデルを効率的にトレーニングすること、機械学習モデルを実行すること、または機械モデルをトレーニングすることおよび機械学習モデルを実行することの両方を行うように設計された専用アーキテクチャを有する装置または装置上のコンポーネント、例えば、集積回路である。
【0003】
MLアクセラレータは、1つ以上の機械学習モデルを通る推論パスを実行するように構成されてもよい。各推論パスは、機械学習モデルの入力および学習済みパラメータ値を用いて、学習済みモデルによって予測される1つ以上の出力を生成する。MLアクセラレータは、1つ以上の計算タイルを含むことができる。一般に、計算タイルは、一れの計算を独立して実行するように構成された完結型計算コンポーネントである。MLアクセラレータのタイルは、ネットワークに配置され、MLアクセラレータの各タイルが機械学習モデルを通る推論パスの一部の動作を実行するようにプログラムされてもよい。例えば、機械学習モデルがニューラルネットワークである場合、メインMLエンジン150内の各タイルは、ニューラルネットワークの1つの層の計算を計算するように構成されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【0004】
MLアクセラレータは、異なる種類の機械学習モデルを柔軟に処理するために大量のメモリを必要とする。MLアクセラレータが低電力状態でも環境からの入力を監視および応答することができる環境コンピューティング装置、例えば、携帯電話または他のコンピューティング装置内のコンポーネントである場合、この要件は、少なくとも2つの課題を引き起こす。
【0005】
第1に、より大きな機械学習モデルに対応するために上限のメモリを割り当てることは、MLアクセラレータを使用する殆どの環境コンピューティング装置にとってコストが高すぎる。また、この手法は、しばしば割り当てられたメモリの一部のみでモデルを実行する可能性があるMLアクセラレータに与えられたメモリを無駄にする。また、携帯性を念頭に置いて設計された環境コンピューティング装置の緊密にパックされたチップ上の物理空間を無駄にする。さらに、MLアクセラレータに割り当てられるメモリは、装置の他の処理コンポーネントによって利用できない。
【0006】
第2に、機械学習モデルの処理に使用されていないメモリは、依然として装置の電力を使用するため、エネルギーを浪費する。この課題は、低消費電力を念頭に置いて設計された多くの環境コンピューティング装置においてさらに酷くなる。
【課題を解決するための手段】
【0007】
概要
本明細書は、MLアクセラレータによって使用される外部メモリを仮想化するための技術を説明する。MLアクセラレータは、例えば、機械学習モデルを処理またはトレーニングすると共に、MLアクセラレータによってアクセスされる仮想メモリアドレスを変換するための集積回路として実装されるロジックを含むことができる。仮想メモリアドレスは、MLアクセラレータの外部装置、例えば、MLアクセラレータを実装する処理サブシス
テムに通信可能に接続されたRAMまたはシステムレベルキャッシュ上のメモリ位置に変換される。対応するパラメータを含む機械学習モデルは、MLアクセラレータの外部からストリームされ、MLアクセラレータのローカルメモリの位置の読み書きをシミュレートするように、MLアクセラレータによってアクセスされてもよい。
【0008】
本明細書に記載された主題の特定の実施形態は、以下の利点のうちの1つ以上を実現するように実装されてもよい。小型低電力のMLアクセラレータは、環境コンピューティング装置によって受信された環境信号を処理するように実装されてもよい。MLアクセラレータは、大きな共有メモリキャッシュにアクセスできる単一の計算タイルであってもよい。この大きな共有メモリキャッシュへのアクセスは、MLアクセラレータのみに限定されない。
【発明の効果】
【0009】
MLアクセラレータが特定の機械学習モデルのメモリ要件によって指定された仮想メモリアドレスの範囲を拡張または縮小することができるため、機械学習モデルおよび対応するパラメータを経済的にストリームするように、仮想メモリアドレスを割り当てることができる。MLアクセラレータは、データを再度ストリームする必要なく、例えば、畳み込みニューラルネットワークにおいてしばしば再利用されるモデルパラメータを再度ストリームする必要なく、MLアクセラレータの外部メモリに格納された機械学習モデルおよびパラメータにアクセスすることができる。また、MLアクセラレータは、特別な構成なしに、外部に格納された機械学習モデルおよびパラメータにアクセスすることができる。換言すれば、MLアクセラレータの視点から、MLアクセラレータは、アクセラレータのローカルメモリにアクセスしているように見える。
【0010】
同様に、MLアクセラレータは、システムレベルキャッシュというメモリ構成を有する装置のシステムレベルキャッシュに記憶されたデータにアクセスすることもできる。仮想メモリアドレスを割り当てることによって、MLアクセラレータに大量の専用メモリを割り当てる必要を無くし、電力消費およびMLアクセラレータが環境コンピューティング装置に占有する物理空間を低減することができる。
【0011】
MLアクセラレータ上で実行するようにコンパイルされた機械学習モデルは、大規模な構成またはカスタマイズなしに、開示されたメモリ仮想化機能を利用することができる。機械学習モデルのコンパイラは、使用される仮想メモリを示す最小の追加命令で、当該モデルをコンパイルすることができる。
【0012】
本明細書の主題の1つ以上の実施形態の詳細は、添付の図面および以下の説明に記載される。本明細書の主題の他の特徴、態様および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0013】
【
図1】仮想アドレスロジックを含むMLアクセラレータを実装する例示的なコンピューティング装置を示す図である。
【
図2】
図1のコンピューティング装置に通信可能に接続されたSLCを実装する例示的なSOC上のシステムを示す図である。
【
図3】メモリ仮想化を用いてMLアクセラレータ上で機械学習モデルを実行するための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【0014】
詳細な説明
様々な図面において、同様の参照番号および名称は、同様の要素を示す。
【0015】
本明細書は、仮想メモリを、機械学習(ML)アクセラレータのローカルメモリとして実装するための技術を説明する。大量のメモリをMLアクセラレータのローカルメモリとして専用化する代わりに、MLアクセラレータは、MLアクセラレータのローカル仮想アドレスロジックによって自動的に割り当てられた仮想メモリアドレスを介して、外部メモリにアクセスすることができる。また、MLアクセラレータの仮想アドレスロジックは、機械学習モデルを通る推論パスを実装するためのプログラムをコンパイルする時に当該モデルに追加された構成オプションに応じて、このメモリ仮想化機能をオンまたはオフにするためのロジックを含むことができる。
【0016】
以下で説明するように、この構成オプションおよび他の構成オプションは、機械学習モデルをコンパイルする時に、環境MLエンジン134またはメインMLエンジン150などのMLアクセラレータによって実行可能なコンパイル済み命令として含まれてもよい。
【0017】
図1は、仮想アドレスロジックを含むMLアクセラレータを実装する例示的なコンピューティング装置100を示す図である。装置100は、任意の適切なコンピューティング装置、例えば、スマートフォン、スマートウォッチ、フィットネストラッカ、携帯情報端末(PDA)、電子タブレットまたはラップトップに実装される環境コンピューティングシステム110を含むことができる。コンピューティング装置100の環境コンピューティングシステム110を使用することによって、コンピューティング装置100は、低電力状態を維持しながら、システムの適切な処理コンポーネントを順次にウェークアップすることによって環境からの入力を継続的に監視および応答することができる。本明細書において、
図1を参照して環境コンピューティングシステム110を説明するが、低電力環境コンピューティングシステムの実装に関する総合考察は、その全体が参照により本明細書に組み込まれる国際出願番号PCT/US2018/062329に記載されている。
【0018】
コンピューティング装置100の1つ以上のコンポーネントは、コンピューティング装置内のシステムオンチップ(SOC)上に実装されてもよい。SOCは、単一のシリコン基板上のシステム、またはシリコンインターポーザ、積層ダイまたは相互接続ブリッジなどの複数の相互接続ダイ上のシステムの各コンポーネントを含む集積回路であってもよい。コンピューティング装置の他のコンポーネント、例えばメインCPUクラスタ140、メインMLエンジン150、または処理サブシステム130は、同一のダイ上に実装されてもよく、または別個のダイ上に実装されてもよい。
【0019】
コンピューティング装置100は、SOCから離れ且つSOCから独立しているセンサ112、1つ以上のディスプレイ、バッテリ、および他のコンポーネントを含むコンポーネントを含むことができる。これらのコンポーネントは、例えば、共通のハウジングに搭載されてもよい。コンピューティング装置100は、システム内のコンポーネントへの電力およびセンサ信号の供給を制御するための制御サブシステム120を含む。装置100は、センサ信号を処理し、出力を生成するための処理サブシステム130を含む。
【0020】
装置100は、いくつかの周辺センサ112を含むことができる。周辺センサ112は、1つ以上の音声センサ102、1つ以上のレーダセンサ104、1つ以上のタッチセンサ106、全地球測位システム(GPS)センサ108、および/または加速度センサ109を含むことができる。システムは、追加の周辺センサ、より少ない周辺センサ、または代替の周辺センサを含むことができる。周辺センサ112は、環境入力に応答してセンサ信号を生成するように構成された装置であってもよい。
【0021】
環境コンピューティングシステム110は、1つ以上の周辺インターフェイス114を含むことができる。周辺インターフェイス114は、コンピューティング装置100が最
低電力状態にあっても電源をオンにすることができる装置のコンポーネントであってもよい。周辺インターフェイス114は、周辺センサ112から受信した入力を、環境コンピューティングシステム110によって使用されるセンサ信号に変換するための任意の適切な周辺インターフェイスを含むことができる。
【0022】
各々の周辺インターフェイス114は、環境入力を検出すると、対応する割り込みを生成するように構成される。一般に、各割込みは、センサデータのソース、例えば、割込みを生成する周辺インターフェイスまたはセンサの識別子を特定することができる。割り込みは、1つ以上の割り込みコントローラ124によって受信され、処理される。例えば、割込みを受信すると、割込みコントローラ124は、電力管理ユニット(PMU)122およびクロック制御ユニット123を含む電力制御ユニット(PCU)121をウェークアップすることができる。PMU122は、電力を受け取る装置100のコンポーネントおよび各コンポーネントの電力の受け取り量を制御することができる。クロック制御ユニット123は、装置100のコンポーネントが動作する頻度を制御することができる。
【0023】
本明細書においてセンサ信号を他の処理コンポーネントの入力として記載する場合、この入力は、センサ自体によって生成されたアナログ電気信号、センサ信号のデジタル表現、または元の信号の1つ以上の特性を表す処理済みセンサ信号のデジタル表現であってもよい。
【0024】
割り込みを受信すると、PCU121は、割り込みのソースに基づいて、割り込みを引き起こすセンサ信号をさらに処理するために、環境コンピューティングシステム110のどのコンポーネントを起動すべきかを判断することができる。このようなコンポーネントに処理サポートを提供するために、PCU121は、スタティックランダムアクセスメモリ(SRAM)139およびシステム通信ファブリックをウェークアップすることができる。
【0025】
システム通信ファブリックは、環境コンピューティングシステム110の内部コンポーネント、外部コンポーネントへの通信、またはこれらの組み合わせを通信可能に連結するための通信サブシステムである。ファブリックは、通信ハードウェア、例えば、バスまたは専用の相互接続回路の任意の適切な組み合わせを含むことができる。
【0026】
図示されていないが、コンピューティング装置100は、一部の例として、このようなコンピューティング装置上に一般に見られる1つ以上の他のコンポーネント、例えば、ディスプレイ、モデム、グラフィック処理ユニット、ディスプレイプロセッサ、または専用イメージプロセッサを含むことができる。以下で説明するように、システムは、低電力状態の時にこれらのコンポーネントの電源をオフにすることができ、センサ信号に基づいてアプリケーションがこれらのコンポーネントの起動を必要とすると判断した場合に、これらのコンポーネントを起動することができる。
【0027】
また、装置100は、メインCPUクラスタ140を含む。メインCPUクラスタ140は、コンピューティング装置100のコンポーネントであり、処理サブシステム130のコンポーネントとは別個の1つ以上の汎用プロセッサを含むことができる。メインCPUクラスタ140のプロセッサは、一般に、処理サブシステム130のコンポーネントよりも多くの計算電力を有するため、処理サブシステム130のコンポーネントよりも多くの電力を消費する。
【0028】
制御サブシステム120は、システムの故障を検出し、これらの故障を解決することができる電子タイマであるタイマ129を含むことができる。通常の動作時に、制御サブシステム120は、タイマ129を定期的にリセットすることによって、タイマ129のタ
イムアウトを防ぐことができる。例えば、ハードウェア故障またはプログラムエラーによって制御サブシステム120がタイマをリセットすることができない場合、タイマは、継続的に動作し、タイムアウト信号を生成する。タイムアウト信号は、1つ以上の修正動作を開始するように使用されてもよい。修正動作は、環境コンピューティングシステム110を安全状態に設定すること、およびシステムを通常動作に回復することを含むことができる。
【0029】
処理サブシステム130は、環境機械学習エンジン134を含む。環境MLエンジン134は、1つ以上の機械学習モデルを通る推論パスを実行するように構成された専用処理装置である。
【0030】
環境MLエンジン134は、ニューラルネットワークの起動または他のニューラルネットワーク層の出力を計算するための1つ以上の乗算累積(MAC)ユニットおよび1つ以上のサムレジスタ(sum register)と、サムレジスタとMACユニットとの間のデータ交換を制御するためのコントローラとを含むことができる。また、環境MLエンジン134は、命令メモリ、ダイレクトメモリアクセス経路、レジスタ、および他の処理コンポーネントを含むことができる。いくつかの実装形態において、環境MLエンジン134は、機械学習による推論パスの計算を加速するように構成された単一の機械学習計算タイルである。
【0031】
環境MLエンジンは、仮想アドレスロジック135を含む。仮想アドレスロジック135は、環境MLエンジン134内の専用回路であってもよい。仮想アドレスロジック135は、環境MLエンジンによって生成された仮想アドレスを、環境MLエンジン134の非ローカルメモリであるSRAM139内の物理メモリアドレスに変換することができる。本明細書において、コンピューティング装置100のコンポーネント、例えば環境MLエンジン134の非ローカルメモリは、当該コンポーネントおよび1つ以上の他のコンポーネントによって使用されるメモリを意味する。換言すれば、非ローカルメモリは、当該コンポーネントによって独占的に使用されない。
【0032】
例えば、SRAM139は、処理サブシステム130の複数の処理コンポーネント、例えば、低電力DSP136、高電力DSP138、低電力CPU132、および環境MLエンジン134によって共有され得る汎用のスタティックランダムアクセスメモリ装置であってもよい。したがって、SRAMは、環境MLエンジン134の非ローカルメモリである。対照的に、環境MLエンジン134はまた、環境MLエンジン134によって独占的に使用され、環境MLエンジンの他の部分と同じシリコンダイに集積され得るローカルメモリを含むことができる。例えば、環境MLエンジン134は、1つ以上の集積レジスタを含むローカルメモリを有することができる。集積レジスタ内のデータが環境MLエンジン134のみによって読み出されるまたは書き込まれるため、集積レジスタは、環境MLエンジン134のローカルメモリである。
【0033】
SRAM139は、センサ信号、プロセッサの命令およびデータ、システムの出力、および他のデータ、例えば、環境MLエンジン134によって実装されるニューラルネットワークモデルのニューラルネットワークパラメータを格納することができる。
【0034】
一般に、SRAMは、周期的にリフレッシュする必要がないという点で、DRAMと異なる。以下でより詳細に説明するように、処理サブシステム130内の処理コンポーネントは、直接にまたはダイレクトメモリアクセス(DMA)コントローラ128を介して、SRAM139にアクセスすることができる。いくつかの実装形態において、SRAM139は、複数のメモリバンクを含み、各々のメモリバンクは、実質的に同様のデータ容量、例えば1MB、10MB、または100MBのデータ容量を有する。さらに、各メモリ
バンクは、低電力状態の時に個々の電源をオフにすることができる複数のメモリブロックを含むことができる。複数のメモリバンクのメモリブロックの電源をオフにする順序を慎重に設置することによって、SRAMのメモリアドレス空間を連続にすることができる。
【0035】
仮想アドレスロジック135は、環境MLエンジン134によって生成された仮想メモリアドレスを変換することができる。いくつかの実装形態において、仮想アドレスロジック135は、例えば、環境MLエンジン134によって生成された仮想アドレスの最上位ビットを用いて、仮想ページと物理ページとの間のマッピングを維持する。
【0036】
仮想アドレスロジック135は、環境MLエンジン134によって実行されるコンパイル済み命令によって生成された仮想アドレスの読み書き要求を受信することができる。その後、仮想アドレスロジック135は、仮想アドレスをSRAM139内の物理アドレスにマッピングすることができる。いくつかの実装形態において、仮想アドレスロジック135は、仮想ページ番号を物理ページ番号にマッピングし、最下位ビットをコピーすることによって、物理アドレスを生成する。
【0037】
仮想メモリアドレスを物理メモリアドレスに変換することは、MLアクセラレータが機械学習モデルのコンパイル済み命令を実行するときに、コンパイル済み命令内のメモリアドレス位置のデータの各読み出しまたは書き込み命令が、対応する物理メモリアドレス位置のデータの読み出しまたは書き込みをもたらすことを意味する。いくつかの実装形態において、仮想アドレスロジック135は、環境MLエンジン134が対応する物理メモリアドレスにマッピングされた仮想メモリアドレス位置のデータの読み出しまたは書き込み命令を実行することに応答して、SRAM139の対応する物理メモリアドレス位置に読み出しまたは書き込み命令を発行するように構成される。
【0038】
仮想アドレスロジック135は、仮想メモリアドレスを、環境MLエンジン134の非ローカルメモリ位置の物理メモリアドレスにマッピングすることができる。いくつかの実装形態において、処理サブシステム130は、マッピングされた物理メモリアドレスによって参照される位置の既存のデータを上書きすることができる。仮想アドレスロジック135は、この初期化ステップを自動的に実行するように構成されてもよく、または機械学習モデル上で推論パスを実行するコンパイル済みプログラムによって指定された構成オプション、例えば環境MLエンジン134上で実行されるコンパイル済みプログラムの1つ以上の命令に応答して、この初期化ステップを実行するように構成されてもよい。
【0039】
環境MLエンジン134は、機械学習モデルを用いて、割り当てられた非ローカルメモリにアクセスすることによって、推論パスを実行する1つ以上の命令を含むコンパイル済みプログラムを実行することができる。環境MLエンジン134の視点から、仮想メモリアドレス位置でアクセスされるデータは、環境MLエンジン134のローカルデータとして扱われる。実際には、このデータは、SRAM139またはシステムレベルキャッシュなどの共有メモリソースからアクセスされる。
【0040】
また、装置100は、必要に応じて、メインMLエンジン150を含むことができる。メインMLエンジン150は、1つ以上の機械学習モデルを通る推論パスを実行する、すなわち、メインMLエンジン150上で機械学習モデルを実行するように構成された専用処理装置である。各推論パスは、機械学習モデルの入力および学習済みパラメータ値を用いて、環境MLエンジン134と同様に、学習済みモデルによって予測された1つ以上の出力を生成する。メインMLエンジン150は、1つ以上の計算タイルを含むことができ、1つ以上の計算タイルは、ネットワークに配置され、メインMLエンジン150の各タイルが機械学習モデルを通る推論パスの一部の動作を実行するようにプログラムされてもよい。複数の計算タイルを含む適切な機械学習エンジンは、参照によりその全体が本明細
書に組み込まれる米国特許9710265に記載されている。
【0041】
装置100がメインMLエンジン150および環境MLエンジン134の両方を含む場合、一般に、環境MLエンジン134は、メインMLエンジン150に比べてより少ない計算タイルを有し、したがって、メインMLエンジン150に比べてより少ない処理能力を有し、より少ない電力を消費する。例えば、環境MLエンジン134は、1つまたは2つの計算タイルとして実装することができる一方、メインMLエンジン150は、8つ以上の相互接続タイルを有することができる。
【0042】
各計算タイルは、少量のローカルメモリを有することができる。計算タイルのローカルメモリだけでは、機械学習モデルを処理するのに不十分であることが多い。したがって、上述したように、個々のタイルをネットワークに構成することによって、リソースを共有し、所定入力の機械学習モデルを処理するタスクを一連のサブタスクとして各計算タイルに割り当てることができる。
【0043】
環境MLエンジン134が一般にメインMLエンジン150よりも比較的少ない計算タイルで実装されるため、ネットワーク構成を最適化してもまたは処理をタイルに分配しても、利用可能な1つまたは2つの計算タイルは、機械学習モデルを処理するのに十分でない可能性がある。その理由として、計算タイルは、機械学習モデルを処理するための計算能力を有しない、または十分なメモリを有しない可能性があるからである。いくつかの実装形態において、環境MLエンジン134が単一の計算タイルとして実装されるため、最も基本的なネットワーキングまたは分配でさえも利用できない。したがって、仮想アドレスロジック135は、機械学習モデルを実行する環境MLエンジン134によって必要とされるメモリ仮想化を実行することができる。
【0044】
図1には示されていないが、メインMLエンジン150は、メインMLエンジン150のために非ローカルメモリを仮想化するための仮想アドレスロジックを含むこともできる。メインMLエンジン150は、一般に環境MLエンジン134よりも多くの計算リソースを有すると共に、特定の機械学習モデルを実行するためにメインMLエンジン150の非ローカルメモリにアクセスする必要がある。この場合、環境MLエンジン134内の仮想アドレスロジック135に関して説明した技術と同じ技術を使用して、メインMLエンジン150に仮想アドレスロジックを実装することができる。環境MLエンジン134に関して説明したように、仮想メモリアドレスをSRAM内の物理メモリアドレスに変換する代わりに、メインMLエンジン150の仮想アドレスロジックは、仮想メモリアドレスをシステムレベルキャッシュ(SLC)の物理メモリアドレスに変換するように構成されてもよい。
【0045】
SLCは、システム内の複数の異なるハードウェア装置のメモリから取り出されたデータまたはメモリに記憶されたデータをキャッシュすることができる装置または装置のコンポーネント、例えばコンピューティング装置100であってもよい。換言すれば、SLCの異なるキャッシュラインは、異なるハードウェア装置のデータを記憶することができる。いくつかの実装形態において、
図2を参照して以下で説明するように、メインMLエンジン150上で仮想アドレスロジックを実装することによって、SLC上の物理メモリロケーションに対応する仮想アドレスを変換することができる。
【0046】
次に、環境コンピューティングシステム110の例示的な動作を検討する。本明細書において、「ウェーク」(wake)および「起動」(activate)という用語は、電子機器の特定の処理コンポーネントまたは他の回路に増加した電力量を供給することを意味する。環境コンピューティングシステム110は、ウェークアップされているまたは起動されている処理コンポーネントまたは他の回路に電力を供給してもよく、供給しなくてもよい。換
言すれば、ウェークアップされているまたは起動されているコンポーネントの以前の電源は、完全に切断されてもよく、切断されなくてもよい。処理コンポーネントをウェークアップまたは起動することによって、処理コンポーネントは、ブートプロセスを実行し、処理コンポーネントの命令およびデータをランダムアクセスメモリにロードすることができる。代替的にまたは追加的に、処理コンポーネントのウェークアップまたは起動は、以前の一時停止状態からの再開を含むことができる。
【0047】
PCU121は、SRAM139をウェークアップする場合、SRAM139の一部のブロックまたは一部のメモリバンクをウェークアップすることができる。代わりに、PCU121は、処理サブシステム130の次のコンポーネントが装置100のコンポーネントの電力供給をさらに増大させるか否かを判断するのに十分な数のブロックのみをウェークアップすることができる。
【0048】
また、PCU121は、SRAM139の異なるブロックに異なるレベルの電力を供給することができる。例えば、監視電力状態において、PMU122は、SRAM139の全体により低い保持電圧を供給することによって、その電力消費を低減することができる。処理コンポーネントがSRAM139にアクセスする必要がない場合に、PMU122は、SRAM139に保持電圧を供給することができる。処理電力状態において、PMU122は、SRAM139の全部または一部に通常電圧を供給し、SRAM139の他の部分に低い電圧を供給するまたは電圧を供給しない。
【0049】
また、割り込みを処理するプロセスにおいて、環境コンピューティングシステム110は、1つ以上のDMAコントローラ128をウェークアップすることができる。DMAコントローラ128は、入来センサ信号に対してより広いデータ帯域幅を可能にするDMA経路を管理することができる。例えば、DMAコントローラを用いて、マイクロフォンからの音声データを、処理サブシステム130内の処理コンポーネントによってアクセスされるSRAM139に連続的にストリームすることができる。逆に、DMAコントローラを用いて、SRAM139に記憶された音声データを、1つ以上のスピーカを介して音声として出力するように連続的にストリームすることができる。また、DMAコントローラ128を用いて、任意の適切なセンサデータをSRAM139にストリームすることができるが、少量のデータの場合に、プログラムドIO(programmed IO)を使用することは
、DMAコントローラを起動することよりも計算上安価である。したがって、環境コンピューティングシステム110は、比較的に高い帯域幅のセンサデータ、例えば音声データおよびレーダーデータをストリームする場合にDMAコントローラ128を起動して使用することができ、他の種類のセンサデータをストリームする場合にプログラムドIOを使用することができる。
【0050】
ファブリックおよびSRAM139を用意した後、PCU121は、割り込みを用いて、ウェークアップすべき処理サブシステム130のコンポーネントを決定することができる。例えば、PMU122は、1つ以上のセンサのうち、割り込みを生成したセンサに応じて、処理サブシステム130の低電力CPU132、低電力DSP136または他のコンポーネントに電力を供給するか否かを制御することができる。いくつかの実装形態において、周辺インターフェイス114および制御サブシステム120のコンポーネントのみは、監視電力状態で電源がオンにされる装置100のコンポーネントである。この監視電力状態において、環境コンピューティングシステム110は、コンピューティング装置への環境入力による割り込みの受信を待機している。
【0051】
処理サブシステム130の処理コンポーネントは、低電力CPU132と、環境MLエンジン134と、低電力DSP136と、高電力DSP138とを含むことができる。いくつかの実装形態において、処理サブシステムは、これらのコンポーネントのうちの1つ
以上の複数のインスタンス、例えば、複数の低電力DSPまたは複数の高電力DSPを含む。例えば、処理サブシステム130は、音声信号を処理するために専用の1つの高電力DSPと、レーダ信号を処理するために専用の別個の高電力DSPとを含むことができる。代替的にまたは追加的に、処理サブシステム130は、画像データを処理するために専用の高電力DSPを含むことができる。
【0052】
監視電力状態において、処理サブシステム130内の処理コンポーネントは、保持モードで維持されてもよい。PCU121は、コンポーネントに供給される電力を低減または削減することによって、このコンポーネントを保持モードに維持することができる。例えば、保持モードにおいて、PCU121は、レジスタの状態を維持するのに十分な電力のみを処理コンポーネントに供給するが、レジスタ内のデータを処理するのに十分な電力を供給しない。
【0053】
低電力CPU132は、レジスタ、制御回路、および演算ロジックユニット(ALU)を含むプログラム可能な汎用プロセッサであってもよい。一般に、低電力CPU132は、コンピューティング装置のメインCPUクラスタ140よりも少ない電力を消費し、より少ない処理コアを含むことができる。いくつかの実装形態において、低電力CPU132は、主に、単一の命令および単一のデータ入力で動作するスカラープロセッサである。低電力CPU132は、受信したセンサ信号の種類および特性に基づいて、起動すべきであるシステムのコンポーネント、例えば、通信ファブリック、DMAコントローラ128、SRAM139の一部もしくは全部、またはこれらの組み合わせを判断することができる。これらのコンポーネントを起動した後、低電力CPU132は、必要に応じて非作動状態に戻ることができる。
【0054】
低電力CPU132は、さらなる解明のために、センサ信号または処理済み信号を環境MLエンジン134に提供することができる。例えば、低電力CPU132は、加速度センサ入力に対応するセンサ信号を受信した場合、環境MLエンジン134がセンサ信号をさらに処理すべきであると判断することができる。したがって、環境MLエンジン134は、センサ信号をさらに処理することができる。
【0055】
環境MLエンジン134の1つのタスクは、センサ信号を用いて、機械学習モデルを通る推論パスを実行することによって、センサ信号をさらに処理するための他の処理コンポーネントのウェークアップをトリガすることができる出力を生成することである。換言すれば、環境MLエンジン134は、センサ信号または低電力CPU132または別の処理コンポーネントによって生成された処理済み信号を受信することができ、センサ信号をさらに処理すべき処理コンポーネントを表す出力を生成することができる。
【0056】
また、環境MLエンジン134は、機械学習モデルを実行することによって、オンチップ自動音声認識、テキスト音声生成、またはコンピューティング装置のユーザのジェスチャー認識を含む様々な異なるタスクを行うことができる。環境MLエンジン134は、さらなる動作のために、機械学習モデルの実行による出力を低電力CPU132または別の処理コンポーネントに提供することができる。
【0057】
上述したように、仮想アドレスロジック135は、例えば機械学習モデルのコンパイル済み命令内の命令によって指示されると、メモリ仮想化を実行するように構成されてもよい。このオプションは、例えば、適切に構成されたコンパイラが機械学習モデルをコンパイルする時のデフォルトオプションとして設定されてもよく、またはコンパイラを実装するプログラムの実行を促すユーザからの入力に応答して設定されてもよい。環境MLエンジン134上で機械学習モデルを実行するためのコンパイル済み命令は、メモリ仮想化が選択されたか否かに関わらず同じであるが、コンパイラは、例えば、1つ以上の命令を用
いて、環境MLエンジン134が仮想メモリを使用して機械学習モデルを実行するべきであることをさらに示すことができる。
【0058】
メモリ仮想化が有効化された場合、環境MLエンジン134は、仮想アドレスロジック135によって生成された仮想メモリマッピングアドレスを用いて、環境MLエンジン134の非ローカルメモリソースからモデルパラメータおよび他のモデル構成情報をストリームすることができる。例えば、機械学習モデルのモデルパラメータは、SRAM139に記憶され、1つ以上の物理メモリアドレスによって参照されてもよい。
【0059】
機械学習モデルのコンパイル済み命令は、メモリ内のデータをロードするための命令、読み出すための命令、および書き込むための命令を含むことができる。仮想アドレスロジックは、コンパイル済み命令のメモリ参照を変更することなく、コンパイル住機械学習モデルのコンパイル済み命令によって参照される仮想メモリアドレスを対応する物理メモリアドレスに変換するように構成されてもよい。
【0060】
追加のステップとして、処理サブシステム130は、まず、機械学習モデルのモデルパラメータおよび他の構成情報を、別のメモリ装置からSRAM139にロードすることができる。例えば、DMAコントローラ128は、モデルパラメータをDRAMからSRAM139にストリームすることができる。DRAMは、環境コンピューティングシステム110のローカルメモリであってもよく、外部メモリであってもよい。次いで、仮想アドレスロジック135は、仮想メモリアドレスを、モデルパラメータがロードされたSRAM139内の物理メモリ位置にマッピングすることができる。DMAコントローラ128は、パラメータをSRAM139にストリームすることの一部として、SRAM139に記憶された既存のデータを上書きするように構成されてもよく、またはモデルパラメータをSRAM139内の利用可能な空間にストリームするように構成されてもよい。機械学習モデルのコンパイル済み命令のうち、1つ以上の命令は、DMAコントローラ128がSRAM139内の既存のデータを上書きすべきか否かを指定することができる。
【0061】
上述したように、SRAM139は、コンピューティング装置100の状態に応じてアクティブ化されているまたはアクティブ化されていない複数のメモリバンクを含むことができる。SRAM139内のメモリのいくつかのブロックまたはバンクは、既存のデータがあるためまたは特定のブロックまたはメモリバンクがアクティブ化されていないため、利用可能でない場合がある。
【0062】
DRAMは、環境コンピューティングシステム110の一部であってもよく、環境コンピューティングシステム110の外部にあってもよい。いくつかの実装形態において、DRAMは、環境コンピューティングシステム110の外部にあるが、環境コンピューティングシステム110と同じSOC上にある。いくつかの実装形態において、DRAMは、環境コンピューティングシステムを実装したSOCの外部にある。いずれの実装形態において、DMAコントローラ128は、DRAMからモデルパラメータをストリームするように構成されてもよい。
【0063】
例えば、SRAM139が現在では環境コンピューティングシステム110の他の処理コンポーネントによって使用されているため、モデルパラメータをSRAM139にストリームすることができない場合、仮想アドレスロジック135は、仮想メモリアドレスを、モデルパラメータを直接に格納する物理メモリアドレスに変換することができる。いくつかの実装形態において、仮想アドレスロジックは、DMAコントローラ128を用いてモデルパラメータを最初にSRAM139にストリームする代わりに、モデルパラメータを格納するDRAMの物理メモリアドレスを変換するように構成されてもよい。
【0064】
また、機械学習モデルの構成情報は、コンパイル時に指定された、環境MLエンジン134がアクセスすべきローカルメモリのサイズを示す1つ以上の命令を含むことができる。例えば、コンパイラは、機械学習モデルを実行するMLエンジンが割り当てられた特定のサイズのメモリを有するという仮定で、当該モデルを命令のセットにコンパイルした場合、仮想アドレスロジックは、当該サイズのメモリを、SRAM139内の物理メモリアドレスにマッピングされた仮想メモリアドレスとして提供するように構成されてもよい。代替的には、コンパイラを実行するプログラムは、コンパイル時に、ユーザプロンプトまたはデフォルト条件に応じて、メモリのサイズを設定することができる。
【0065】
上述したように、環境MLエンジン134は、環境MLエンジン134のローカルメモリに記憶されたデータにアクセスすると共に、仮想メモリアドレスを参照することができる。環境MLエンジン134が1つ以上のレジスタを含むいくつかの実装形態において、環境MLエンジン134は、仮想メモリアドレスを介して環境MLエンジン134の外部データにアクセスすることができ、アクセスしたデータを環境MLエンジン134のレジスタにロードすることができる。このようにして、環境MLエンジン134によって繰り返しアクセスされる可能性の高いデータ、例えば、畳み込みニューラルネットワークモデルにおいて畳み込みを行うためのパラメータまたは共通パラメータのサブセットを、環境MLエンジン134に利用可能な最も速いメモリ(多くの場合、ローカルレジスタ)上に記憶することができる。
【0066】
環境MLエンジン134によって生成された出力は、処理コンポーネントIDの組み合わせまたは列挙された電力状態の識別子を明示的に指定することができ、またはセンサ信号を処理すべき他の高電力処理コンポーネントを特定するために、低電力処理コンポーネント、例えば低電力CPUまたは低電力DSPによって解釈された電力状態を示す表現であってもよい。このプロセスの一部として、低電力処理コンポーネントは、他の処理が必要であるか否かを明示的にまたは暗黙的に判断することができる。例えば、低電力処理コンポーネントは、環境MLエンジン134の出力に基づいて、さらなる処理が要求されておらず、環境コンピューティングシステム110が監視電力状態に戻ることができることを判断することができる。
【0067】
最低レベルの監視電力状態において、PCU121は、環境MLエンジン134を低電力状態に維持することができ、または環境MLエンジン134の電源を完全に切ることができる。処理電力状態において、PCU121は、周辺インターフェイス114においてどのセンサ信号が利用可能であるかおよび低電力CPU132または低電力DSP136がどのように信号を解釈するかに応じて、環境MLエンジン134に電力を提供するまたは提供しない。いくつかの実装形態において、低電力DSP136または低電力CPU132は、信号を解釈して、追加の中間電力状態を維持するための電力を供給するようにPCU121に命令することができる。この中間電力状態において、推論パスを実行するために環境MLエンジン134の電源をオンにするが、他の高電力処理コンポーネントの電源をオンにしない。
【0068】
低電力DSP136および高電力DSP138は、高ベクトル化信号を効率的に復号および処理するために構成された専用プロセッサである。処理サブシステム130は、異なる目的のために設計された様々なDSPを含むことができる。例えば、処理サブシステム130は、レーダ信号を処理するように構成されたDSP、または音声信号を処理するように構成されたDSPを含むことができる。
【0069】
上述したように、低電力DSP136は、制御サブシステム120からのセンサ信号の初期解釈を実行することができる。また、低電力DSP136は、他の信号処理タスクを実行することもできる。一般に、高電力DSPは、よりアクティブなレジスタを有するた
め、より多数のデータを並列にアクセスおよび処理するため、より多くのメモリ動作に依存するため、またはこれらの組み合わせによって、低電力DSPよりも多くの電力を消費する。
【0070】
図2は、
図1のコンピューティング装置100に通信可能に接続されたSLCを実装するSOC200上の例示的なシステムを示す図である。SOC200は、例えば、コンピューティング装置100に配置されてもよく、コンピューティング装置100に集積されてもよく、または別個の装置もしくは別個の装置のコンポーネントであってもよい。
【0071】
コンピューティング装置のコンポーネント250は、SOCファブリック240を介してSLC230と通信することができる。コンピューティング装置のコンポーネント250は、SLC230と通信することができるように構成されたコンピューティング装置100上の任意のコンポーネントであってもよく、メインMLエンジン150、メインCPUクラスタ140、および環境コンピューティングシステム110を含んでもよい。
【0072】
SOCファブリック240は、SOC200の通信サブシステムであり、コンピューティング装置のコンポーネント250が互いに通信することおよびSLC230上のデータを読み書きする要求を発行することを可能にする通信経路を含むことができる。SLC230は、専用のキャッシュメモリを有する。このキャッシュメモリは、専用のレジスタまたは高速RAMで実装されてもよい。SOCファブリック240は、通信ハードウェア、例えばバスまたは専用の相互接続回路の任意の適切な組み合わせを含むことができる。
【0073】
また、SOC200は、SLC230とメモリコントローラ220との間の通信を可能にする通信経路252と、メモリコントローラ220とSOC200の非ローカルDRAM210との間の通信を可能にするチップ間通信経路254とを含む。メモリコントローラ220は、SLC230およびDRAM210のメモリを読み書きする要求を処理することができる。DRAM210のみが
図2に示されているが、メモリコントローラ220は、図示されていない他のメモリ装置、例えば、ハードドライブまたはソリッドステートドライブなどの任意の揮発性または不揮発性メモリ装置と通信することができる。
【0074】
SLC230は、コンピューティング装置のコンポーネント250からの読出し要求、書込み要求、または両方をキャッシュすることができる。SLC230は、キャッシュデータに記憶されたデータを含む要求に応答して、DRAM210から当該データを取得するのではなく、クライアント装置からの読出し要求をキャッシュすることができる。同様に、SLCは、新しいデータをDRAMに書き込むのではなく、新しいデータをキャッシュに書き込むことによって、クライアント装置からの書込み要求をキャッシュすることができる。その後、SLC230は、キャッシュの書き戻しを実行することによって、更新されたデータをDRAM210に格納することができる。
【0075】
上述したように、メインMLエンジン150は、仮想メモリアドレスを、メインMLエンジン150の外部メモリにマッピングされた物理メモリアドレスに変換するための仮想アドレスロジックを含むことができる。いくつかの実装形態において、仮想アドレスロジック135は、物理メモリアドレスを処理サブシステム130の共有SRAM139にマッピングする一方、メインMLエンジン150の仮想アドレスロジックは、仮想メモリアドレスをSLC230内の物理メモリアドレスにマッピングすることができる。
【0076】
メインMLエンジン150上で実行する機械学習モデルのメモリ仮想化が有効化された場合、仮想アドレスロジックは、仮想メモリアドレスをDRAM210内の物理メモリアドレスに変換するために、SOCファブリック240を介してSLC230と通信するように構成されてもよい。初期化ステップとして、メモリコントローラ220は、SOC2
00の外部のDRAM210または他のメモリ装置からSLC230に最初にストリームされたモデルパラメータをストリームすることができる。
【0077】
図3は、メモリ仮想化を用いてMLアクセラレータ上で機械学習モデルを実行するための例示的なプロセスを示すフローチャートである。便宜上、
図3のプロセスは、1つ以上の場所に配置された1つ以上のコンピュータのシステムによって実行されるものとして説明される。例えば、本明細書に従って適切にプログラムされた環境コンピューティングシステム、例えば
図1の環境コンピューティングシステム110は、
図3のプロセスを実行することができる。
図3のプロセスを実行することができるシステムを実装するためのさらなる詳細は、上記の
図1および
図2の説明において見出すことができる。
【0078】
システムは、モデルパラメータを、システムの非ローカルメモリ装置から共有メモリ装置にストリームする(310)。
図1および
図2を参照して上述したように、MLアクセラレータ上で実行される機械学習モデルのモデルパラメータは、システムの外部メモリ、例えばDRAMに記憶されてもよい。システムは、例えばDMAコントローラを介して、機械学習モデルを実行するためのモデルパラメータおよび構成オプションをストリームすることができる。メモリ装置は、例えば共有SRAMであってもよい。いくつかの実装形態において、前述したように、システムは、共有メモリ装置内の既存のデータを上書きすることができる。上述したように、MLアクセラレータは、システムの環境MLエンジンまたはメインMLエンジンであってもよい。MLアクセラレータがシステムのメインMLエンジンである場合、共有メモリ装置は、システムレベルキャッシュであってもよい。
【0079】
システムは、MLアクセラレータ上の仮想アドレスロジックを介して、共有メモリ装置においてモデルパラメータを記憶する位置に対応する物理メモリアドレスにマッピングされる仮想メモリアドレスを生成する(320)。
図1を参照して上述したように、仮想アドレスロジックは、機械学習モデルのコンパイル済み命令中の読み出しまたは書き込み命令によって参照されるメモリアドレスから、仮想メモリアドレスを生成することができる。また、仮想メモリロジックは、仮想メモリアドレスと物理メモリアドレスとの間のマッピング関係を生成し、そのマッピング関係をMLアクセラレータのローカルメモリ、例えばレジスタに格納するように構成されてもよい。
【0080】
システムは、仮想アドレスロジックによって変換されたコンパイル済み命令を実行することによって、機械学習モデルを通る推論パスを実行するためのコンパイル済みプログラムを実行する(300)。
図1を参照して上述したように、システムは、機械学習モデルを用いて、具体的には共有メモリ装置に格納されたモデルパラメータを用いて、推論パスを実行するためのコンパイル済みプログラムを実行する。上述したように、仮想メモリアドレスと物理メモリアドレスとの間の変換は、適切な読み出しまたは書き込み命令を、コンパイル済み命令内の読み出しまたは書き込み命令と一致する物理メモリアドレス場所にまたは物理メモリアドレスにマッピングされた仮想メモリアドレスの位置に発行することを意味する。
【0081】
本開示に記載された主題および機能的な動作の実施形態は、本開示に開示された構造およびそれらの構造的均等物を含むデジタル電子回路、有形化されたコンピュータソフトウェアまたはファームウェア、コンピュータハードウェア、もしくはそれらの1つ以上の組み合わせにおいて実現することができる。本開示に記載された主題の実施形態は、1つ以上のコンピュータプログラム、すなわち、有形化された非一時的なプログラム担体上にエンコードされ、データ処理装置によって実行されるまたはデータ処理装置の動作を制御するためのコンピュータプログラム命令の1つ以上のモジュールとして実装することができる。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムまたはシリアルアクセスメモリ装置、またはそれらの1つ以上の組み合わせであってもよい。代替
的にまたは追加的には、プログラム命令は、人為的に生成された伝播信号、例えば、データ処理装置による実行のため、情報を適切な受信機に送信するために符号化することによって生成された機械生成電気信号上にエンコードされてもよい。
【0082】
「データ処理装置」という用語は、データ処理ハードウェアを指し、データを処理するためのあらゆる種類の機器、装置およびマシン、例えば、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む。また、この装置は、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路であってもよく、またはそれらをさらに含んでもよい。この装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を生成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つ以上の組み合わせを構成するコードを含むことができる。
【0083】
プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとして呼ばれ得るまたは記述され得るコンピュータプログラムは、コンパイル言語またはインタープリタ言語、宣言型言語または手続き型言語を含む任意のプログラミング言語で記述することができ、スタンドアロンプログラムとしてまたはコンピューティング環境内の使用に適したモジュール、コンポーネント、サブルーチン、オブジェクトまたはその他のユニットとしての任意の形で使用することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応することができるが、必ずしも対応する必要がない。プログラムは、他のプログラムまたはデータ(例えば、マークアップ言語文書に記憶された1つ以上のスクリプト)を保持するファイルの一部、関与しているプログラムに専用の単一ファイル、または複数の同格ファイル(例えば、1つ以上のモジュール、サブプログラムまたはコードの一部を記憶するファイル)に記憶されてもよい。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されまたは複数のサイトにわたって分散され、データ通信ネットワークによって相互接続されている複数のコンピュータ上で動作しているように実装することができる。
【0084】
特定の操作または動作を実行するように1つ以上のコンピュータからなるシステムを構成することは、作動されると、システムに操作または動作を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを、システムにインストールすることを意味する。特定の操作または動作を実行するように1つ以上のコンピュータプログラムを構成することは、1つ以上のプログラムが、データ処理装置によって実行されると、データ処理装置に操作または動作を実行させる命令を含むことを意味する。
【0085】
「エンジン」または「ソフトウェアエンジン」という用語は、本明細書に使用された場合、入力とは異なる出力を提供するためのハードウェアまたはソフトウェア実装の入出力システムを指す。エンジンは、専用のデジタル回路としてまたはコンピューティング装置によって実行されるコンピュータ可読命令として実装されてもよい。各エンジンは、任意の適切な種類のコンピューティング装置、例えば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子書籍リーダ、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または1つ以上のプロセッサおよびコンピュータ可読媒体を含む他の固定装置もしくは携帯装置上で実装されてもよい。また、2つ以上のエンジンは、同じコンピューティング装置上で実装されてもよく、または異なるコンピューティング装置上で実装されてもよい。
【0086】
本明細書に記載されたプロセスおよびロジックフローは、入力データを処理し、出力を生成することによって機能を実行するように、1つ以上のコンピュータプログラムを実行
する1つ以上のプログラム可能なコンピュータによって実行されてもよい。また、プロセスおよびロジックフローは、専用ロジック回路、例えばFPGAまたはASICによって、または専用ロジック回路と1つ以上のプログラムされたコンピュータとの組み合わせによって実行されてもよい。
【0087】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサまたは専用マイクロプロセッサもしくはその両方、または任意の他の種類の中央処理装置に基づいたものであってもよい。一般に、中央処理装置は、読み出し専用メモリまたはランダムアクセスメモリもしくはその両方から、命令およびデータを受信する。コンピュータの必須要素は、コンピュータの必須要素は、命令に従って動作を実行するためのプロセッサ、命令およびデータを記憶するための1つ以上のメモリ装置を含む。中央処理ユニットおよびメモリは、専用ロジック回路によって補完されてもよく、または専用ロジック回路に組み込まれてもよい。一般に、コンピュータはまた、データを記憶するための1つ以上の大容量記憶装置、例えば磁気ディスク、磁気光ディスクまたは光ディスクを含むおよび/またはこれらの大容量記憶装置とデータを送受信するように動作可能に結合される。しかしながら、コンピュータは、これらの装置を有する必要がない。さらに、コンピュータは、別の装置、例えば携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、または携帯型記憶装置(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)を含むことができる。
【0088】
コンピュータプログラム命令およびデータの記憶に適したコンピュータ可読媒体は、例えば、EPROM、EEPROMおよびフラッシュメモリ装置などの半導体メモリ装置、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、CD-ROMおよびDVD-ROMディスクを含む全ての種類の不揮発性メモリ、媒体およびメモリ装置を含む。
【0089】
ユーザとの対話を提供するために、本明細書で説明される主題の実施形態は、ユーザに情報を表示するためのディスプレイ装置、例えばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにキーボードおよびポインティング装置、例えばマウス、トラックボール、またはユーザがコンピュータに入力を提供することができる存在感応ディスプレイまたは他の表面を含むホスト装置上で実装されてもよい。他の種類の装置を用いて、ユーザとの対話を提供することもできる。例えば、ユーザに提供されるフィードバックは、任意種類の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形で受信することができる。また、コンピュータは、ユーザによって使用される装置との間でドキュメントを送受信することによって、例えば、ウェブブラウザから受信した要求に応答して、ユーザ装置上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。さらに、コンピュータは、テキストメッセージまたは他の形態のメッセージをパーソナル装置、例えばスマートフォンに送信し、メッセージングアプリケーションを実行し、ユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0090】
上記の実施形態に加えて、以下の実施形態も革新的である。
実施形態1は、環境機械学習エンジンと、低電力CPUと、少なくとも環境機械学習エンジンと低電力CPUとの間で共有されるSRAMとを備える環境コンピューティングシステムである。環境機械学習エンジンは、環境機械学習エンジンによって生成された仮想アドレスをSRAM内の物理アドレスに変換するための仮想アドレスロジックを含む。
【0091】
実施形態2は、実施形態1の環境コンピューティングシステムであって、環境コンピュ
ーティングシステムは、機械学習モデルのパラメータを環境コンピューティングシステムとは別個の第2のメモリからSRAMにストリームするように構成されている。
【0092】
実施形態3は、実施形態1から2のいずれか1つに記載の環境コンピューティングシステムであって、環境コンピューティングシステムは、システムオンチップに集積され、第2のメモリは、システムオンチップとは別個のものである。
【0093】
実施形態4は、実施形態1から3のいずれか1つに記載の環境コンピューティングシステムであって、第2のメモリから機械学習モデルのパラメータをストリームすることは、SRAM内の命令またはデータを上書きする。
【0094】
実施形態5は、実施形態1から4のいずれか1つに記載の環境コンピューティングシステムであって、環境機械学習エンジンは、SRAMから機械学習モデルのパラメータを読み出すことによって、機械学習モデルを通る推論パスを実行するように構成されている。
【0095】
実施形態6は、実施形態1から5のいずれか1つに記載の環境コンピューティングシステムであって、SRAMから機械学習モデルのパラメータを読み出すことは、環境機械学習エンジンがSRAM内のアドレスに対応しない仮想アドレスを含む読み出し命令を実行することを含む。
【0096】
実施形態7は、実施形態1から6のいずれか1つに記載の環境コンピューティングシステムであって、環境機械学習エンジンは、SRAM内の位置を表す物理アドレスを生成するために、読み出し命令の仮想アドレスを環境機械学習エンジンに提供するように構成されている。
【0097】
実施形態8は、実施形態1から7のいずれか1つに記載の環境コンピューティングシステムであって、環境機械学習エンジンは、環境機械学習エンジンが利用できるローカルメモリのサイズを入力引数とするコンパイラプログラムによって入力プログラムから生成された命令を実行するように構成され、命令は、ローカルメモリとして利用可能なSRAMのサイズをコンパイラプログラムに提供することによって生成される。
【0098】
実施形態9は、実施形態1から8のいずれか1つの環境コンピューティングシステムであって、環境コンピューティングシステムは、処理される1つ以上のセンサ信号の受信を表す割り込みを受信する動作と、1つ以上の他の処理コンポーネントのうちの第1の処理コンポーネントによって実行される命令をSRAMにストリームすることを含み、第1の処理コンポーネントを作動させる動作と、第1の処理コンポーネントが、SRAM内の命令を用いて1つ以上のセンサ信号を処理することによって、環境機械学習エンジンが1つ以上のセンサ信号をさらに処理すべきであると判断する動作と、環境機械学習エンジンによって使用されるパラメータをSRAMにストリームすることを含み、環境機械学習エンジンを作動させる動作と、環境機械学習エンジンが、SRAMに記憶されたパラメータを用いて機械学習モデルの推論パスを実行する動作とを含む動作を実行するように構成されている。
【0099】
実施形態10は、実施形態1から9のいずれか1つに記載の環境コンピューティングシステムであって、環境機械学習エンジンによって使用されるパラメータをSRAMにストリームすることは、SRAMに格納され且つ第1の処理コンポーネントによって実行される命令を上書きする。
【0100】
実施形態11は、実施形態1から10のいずれか1つに記載の環境コンピューティングシステムであって、SRAMは、ダイレクトメモリアクセスコントローラ、1つ以上の他
の機械学習エンジン、または1つ以上の他のプロセッサによってさらに共有される。
【0101】
実施形態12は、実施形態1から11のいずれか1つに記載の環境コンピューティングシステムであって、1つ以上の他の機械学習エンジンは、メイン機械学習エンジンを含む。
【0102】
実施形態13は、環境コンピューティングシステム上でメモリを仮想化するための方法であって、システムは、環境機械学習エンジンと、低電力CPUと、少なくとも環境機械学習エンジンと低電力CPUとの間で共有されるSRAMとを含む。方法は、環境機械学習エンジンの仮想アドレスロジックが、環境機械学習エンジンによって生成された仮想アドレスを受信することと、環境機械学習エンジンの仮想アドレスロジックが、環境機械学習エンジンによって生成された仮想アドレスをSRAM内の物理アドレスに変換することとを含む。
【0103】
実施形態14は、実施形態13に記載のメモリを仮想化するための方法であって、環境コンピューティングシステムは、実施形態1~12のいずれか1つに記載されたものである。
【0104】
実施形態15は、環境コンピューティングシステムの環境機械学習エンジンによって実行される命令がエンコードされた1つ以上のコンピュータ可読記憶媒体であって、環境コンピューティングシステムは、低電力CPUと、少なくとも環境機械学習エンジンと低電力CPUとの間で共有されるSRAMとをさらに含み、1つ以上の命令は、環境機械学習エンジンと低電力CPUとの間で共有されるSRAM内の物理アドレスに対応する仮想アドレスを含む。
【0105】
実施形態16は、実施形態15に記載の1つ以上のコンピュータ可読記憶媒体であって、環境コンピューティングシステムは、実施形態1~12のいずれか1つに記載されたものである。
【0106】
本開示は、多くの具体的な実施詳細を含むが、これらの詳細は、発明の範囲または請求可能な範囲を限定するものではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として考えるべきである。本開示の個別の実施形態に記載された特定の特徴は、単一の実施形態において組み合わせとして実施することもできる。逆に、単一の実施形態に記載されたさまざまな特徴は、複数の実施形態において、別々にまたは任意の適切なサブ組み合わせで実施することもできる。さらに、上記で特徴を特定の組み合わせで作用するものとして説明したが、このような説明にも拘らず、1つ以上の特徴は、説明した組み合わせから削除されてもよく、説明した組み合わせは、部分組み合わせに変形されてもよい。
【0107】
同様に、動作が特定の順序で図面に示されているが、望ましい結果を達成するために、図示された順序または順番に従ってこれらの動作を実行する必要があるまたは図示された全ての動作を実行する必要があると理解すべきではない。特定の状況において、マルチ作業および並列処理は、有利である可能性がある。例えば、並列処理を用いて、複数の言語検出メソッドを同時に実行することができる。さらに、上述の実施形態におけるさまざまなシステム要素の分離は、全ての実施形態においてそのような分離が必要であると理解すべきではなく、記載されたプログラム要素およびシステムは、一般的に、単一のソフトウェア製品に一体化されまたは複数のソフトウェア製品にパッケージ化することができると理解すべきである。
【0108】
したがって、主題の特定の実施形態を説明した。他の実施形態は、添付の特許請求の範囲内にある。場合によって、請求項に列挙された動作は、異なる順序で実行され、依然と
して望ましい結果を達成することができる。さらに、望ましい結果を達成するために、添付の図面に示されるプロセスは、必ずしも示された特定の順序または順番に従う必要がない。特定の実現例において、マルチ作業および並列処理が有利である可能性がある。
【手続補正書】
【提出日】2023-11-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のクライアント装置によって共有されるメインメモリを備え、前記複数のクライアント装置は、環境コンピューティング装置を含み、
前記環境コンピューティング装置は、複数の環境処理装置と、前記複数の環境処理装置によって共有される共有ローカルメモリとを含み、前記複数の環境処理装置は、環境機械学習(ML)エンジンを含み、
前記環境コンピューティング装置は、前記環境MLエンジンによって使用される仮想アドレスを前記共有ローカルメモリの物理アドレスに変換するように構成された仮想アドレスロジックを含む、装置。
【請求項2】
前記環境コンピューティング装置は、前記メインメモリを共有する他のクライアント装置が低電力状態から起動される前に、センサ信号を処理するように構成されている、請求項1に記載の装置。
【請求項3】
前記複数のクライアント装置は、前記メインメモリにおいて物理アドレスを生成するメインMLエンジンを含む、請求項1または2に記載の装置。
【請求項4】
前記装置は、割り込みを受信すると、モデルパラメータを前記メインメモリから前記共有ローカルメモリにストリーミングするように構成されている、請求項1~3のいずれか1項に記載の装置。
【請求項5】
前記モデルパラメータを前記共有ローカルメモリにストリーミングすることは、1つ以上の他の環境処理装置によって使用される前記共有ローカルメモリ内のスペースを上書きする、請求項4に記載の装置。
【請求項6】
前記モデルパラメータを前記共有ローカルメモリにストリーミングすることは、前記モデルパラメータを前記共有ローカルメモリ内の利用可能なスペースにストリーミングすることを含む、請求項4または5に記載の装置。
【請求項7】
前記割り込みは、処理される1つ以上のセンサ信号の受信を表す、請求項4~6のいずれか1項に記載の装置。
【請求項8】
前記環境MLエンジンは、前記仮想アドレスロジックを用いて、前記共有ローカルメモリにストリーミングされた前記モデルパラメータにアクセスすることによって、機械学習モデルの推論パスを実行するように構成されている、請求項4~7のいずれか1項に記載の装置。
【請求項9】
前記共有ローカルメモリは、低電力状態に入るときに個別にパワーダウンされるように構成された複数のメモリバンクを含む、請求項1~8のいずれか1項に記載の装置。
【請求項10】
前記複数の環境処理装置は、ダイレクトメモリアクセスコントローラ、1つ以上の他のMLエンジン、または1つ以上のプロセッサのうちの少なくとも1つを含む、請求項1~9のいずれか1項に記載の装置。
【請求項11】
前記環境MLエンジンは、単一のML計算タイルを含む、請求項1~10のいずれか1項に記載の装置。
【請求項12】
環境コンピューティング装置を含む複数のクライアント装置と、
請求項1~11のいずれか1項に記載の装置とを備える、システム。
【外国語明細書】