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

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

▶ インテル コーポレイションの特許一覧

特許7534384振動子ベースのニューラルネットワーク装置
<>
  • 特許-振動子ベースのニューラルネットワーク装置 図1
  • 特許-振動子ベースのニューラルネットワーク装置 図2
  • 特許-振動子ベースのニューラルネットワーク装置 図3
  • 特許-振動子ベースのニューラルネットワーク装置 図4
  • 特許-振動子ベースのニューラルネットワーク装置 図5
  • 特許-振動子ベースのニューラルネットワーク装置 図6
  • 特許-振動子ベースのニューラルネットワーク装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-05
(45)【発行日】2024-08-14
(54)【発明の名称】振動子ベースのニューラルネットワーク装置
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240806BHJP
   G06N 3/049 20230101ALI20240806BHJP
   G06N 3/088 20230101ALI20240806BHJP
【FI】
G06N3/063
G06N3/049
G06N3/088
【請求項の数】 20
(21)【出願番号】P 2022507605
(86)(22)【出願日】2020-07-01
(65)【公表番号】
(43)【公表日】2022-11-21
(86)【国際出願番号】 US2020040512
(87)【国際公開番号】W WO2021061255
(87)【国際公開日】2021-04-01
【審査請求日】2023-06-28
(31)【優先権主張番号】16/579,765
(32)【優先日】2019-09-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ニコノヴ,ドミトリ イー.
(72)【発明者】
【氏名】ヤング,イアン エー.
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2017-33385(JP,A)
【文献】特開2019-125130(JP,A)
【文献】米国特許出願公開第2018/0013439(US,A1)
【文献】米国特許出願公開第2016/0125288(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
複数の加算器または減算器であり、それぞれが、入力電圧、対応する初期重み付け電圧、および、対応する調整電圧を受け取る、加算器または減算器と、
複数のバッファであり、各バッファが、前記複数の加算器または減算器のうちの加算器または減算器に結合されている、バッファと、
複数の振動子であり、各振動子が、前記複数のバッファのうちの個々のバッファの出力に結合されている、振動子と、
前記複数の振動子に結合された平均器であり、前記複数の振動子の出力の周波数の平均である周波数を伴う信号を生成する、平均器と、
複数の周波数検出器であり、各周波数検出器は、個々の振動子および平均器に結合されており、かつ、前記複数の加算器または減算器のうちの個々の加算器または減算器にも結合されている、周波数検出器と、
を含む、装置。
【請求項2】
各振動子は、電流制御または電圧制御される振動子である、
請求項1に記載の装置。
【請求項3】
各バッファは、増幅器を備える電圧バッファである、
請求項1または2に記載の装置。
【請求項4】
前記装置は、さらに、
前記平均器の出力に結合されたピーク検出器、を含む、
請求項1乃至3いずれか一項に記載の装置。
【請求項5】
各周波数検出器は、前記周波数の平均と、前記個々の振動子からの信号の周波数との差を示す信号を生成する、
請求項1乃至4いずれか一項に記載の装置。
【請求項6】
各加算器または減算器の出力は、訓練された重み付けである、
請求項1乃至5いずれか一項に記載の装置。
【請求項7】
前記装置は、さらに、
前記訓練された重み付けを保管するためのメモリ、を含む、
請求項6に記載の装置。
【請求項8】
各加算器または減算器は、入力電圧から、対応する初期重み付け電圧および対応する調整電圧を減算する、
請求項1乃至7いずれか一項に記載の装置。
【請求項9】
各周波数検出器は、個々の加算器または減算器に結合されているチャージポンプに結合される、
請求項1乃至8いずれか一項に記載の装置。
【請求項10】
各加算器または減算器は、アナログ加算器またはアナログ減算器である、
請求項1乃至9いずれか一項に記載の装置。
【請求項11】
複数のデジタル加算器または減算器であり、それぞれが、入力コード電圧、対応する初期重み付けコード、および、対応する調整コードを受け取る、デジタル加算器または減算器と、
複数のデジタル-アナログ変換器(DAC)であり、各DACが、前記複数のデジタル加算器または減算器のうちの個々のデジタル加算器または減算器に結合されている、DACと、
複数の振動子であり、各振動子が、前記DACのうちの個々のDACの出力に結合されている、振動子と、
前記複数の振動子に結合された平均器であり、前記複数の振動子の出力の周波数の平均である周波数を伴う信号を生成する、平均器と、
複数の周波数検出器であり、各周波数検出器は、個々の振動子および平均器に結合されている、周波数検出器と、
複数のアナログ-デジタル変換器(ADC)であり、各ADCが、個々のデジタル加算器または減算器に結合されている、ADCと、
を含む、装置。
【請求項12】
各周波数検出器は、個々のADCに結合されているチャージポンプに結合される、
請求項11に記載の装置。
【請求項13】
各デジタル加算器または減算器の出力は、訓練された重み付けである、
請求項11または12に記載の装置。
【請求項14】
前記装置は、さらに、
前記訓練された重み付けを保管するためのメモリ、を含む、
請求項13に記載の装置。
【請求項15】
各振動子は、電流制御または電圧制御される振動子である、
請求項11乃至14いずれか一項に記載の装置。
【請求項16】
前記装置は、さらに、
前記平均器の出力に結合されたピーク検出器、を含む、
請求項11乃至15いずれか一項に記載の装置。
【請求項17】
メモリと、
ニューラルネットワーク回路を有するプロセッサであり、
複数の加算器または減算器であり、それぞれが、入力電圧、対応する初期重み付け電圧、および、対応する調整電圧を受け取る、加算器または減算器と、
複数のバッファであり、各バッファが、前記複数の加算器または減算器のうちの加算器または減算器に結合されている、バッファと、
複数の振動子であり、各振動子が、前記複数のバッファのうちの個々のバッファの出力に結合されている、振動子と、
前記複数の振動子に結合された平均器であり、前記複数の振動子の出力の周波数の平均である周波数を伴う信号を生成する、平均器と、
複数の周波数検出器であり、各周波数検出器が、個々の振動子および前記平均器に結合されており、かつ、前記複数の加算器または減算器のうちの個々の加算器または減算器にも結合されている、周波数検出器と、
を含む、プロセッサと、
前記プロセッサが別の装置と通信することを可能にする無線インターフェイスと、
を含む、システム。
【請求項18】
各加算器または減算器の出力は、訓練された重み付けである、
請求項17に記載のシステム。
【請求項19】
前記メモリは、訓練された重み付けを保管する、
請求項18に記載のシステム。
【請求項20】
前記ニューラルネットワーク回路は、前記平均器の出力に結合されたピーク検出器を備える、
請求項17に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
(優先権の主張)
本出願は、2019年9月23日に出願された米国特許出願第16/579,765号、タイトル“Oscillator Based Neural Network Apparatus”について優先権の利益を主張するものであり、参照によってその全体が援用されている。
【0002】
ムーアの法則に従ったトランジスタのスケーリングは、過去50年間にわたり従来的なブール演算(Boolean computing)の前例のない進歩を推進してきた。近年、人工知能(AI)および機械学習(ML)に関連するアプリケーションは、コンピューティングのより大きなシェアを消費している。これらについて、ブール演算は効率的ではない。このことは、広い研究分野、すなわち、CPU(中央処理装置)またはGPU(グラフィックス処理装置)のような従来のブール型ハードウェア上でプログラミング可能である、ニューラルネットワーク・アルゴリズムから、特殊なハードウェア-特定用途向けエンジン、において実装されたニューラルネットワーク回路までをカバーするニューラルコンピューティングの研究に拍車をかけた。
【0003】
ニューラルネットワークは、一般的に、タスク固有のプログラミングなしに、設定可能な回路パラメータを有する連続信号を処理することにより、データ中のパターンを推論して、学習する計算システムである。例えば、ニューラルネットワークは、ピクチャまたは画像から所定のオブジェクトを識別するように学習することができる。ニューラルネットワークは、「ニューロン(“neurons”)」と呼ばれる、処理ユニットの集合を備え、一般的に「シナプス(“synapses”)」と呼ばれる、接続を介して他のニューロンとコミュニケーションする。ニューラルネットワークは、一般的に、数千から数百万のユニットと数百万の接続を有している。
【0004】
ニューラルネットワークの動作は、最初に学習すること、すなわち、所望の認識を達成するために重み付け(weights)を変えるプロセス、に決定的に依存する。2つのタイプの学習が存在する。教師あり学習と教師なし学習である。教師あり学習においては、ネットワークの望ましい出力が、所定のクラスの入力に対して知られている。教師なし学習において、ネットワークは、各々が入力のクラスに対応している出力のセットに収束する。現在、アナログ、セルラ、または振動子(oscillator)ニューラルネットワークについて効率的な教師なし学習プロシージャは存在していない。
【図面の簡単な説明】
【0005】
本開示の実施形態は、以下に与えられる詳細な説明から、および、本開示の様々な実施形態に係る添付の図面からより完全に理解されるであろう。しかしながら、これらは、本開示を特定の実施形態に限定するものと解釈されるべきではなく、単に説明および理解のためのものである。
図1図1は、いくつかの実施形態に従った、教師なし学習装置を使用して訓練された重み付けを有する、高レベルの一般的なニューラルネットワークスキームを示している。
図2図2は、いくつかの実施形態に従った、振動子を使用する教師なし学習装置を使用して訓練されたアナログ重み付けを有するニューラルネットワークスキームを示している。
図3図3は、いくつかの実施形態に従った、振動子を使用する教師なし学習装置を使用して訓練されたデジタル重み付けを有するニューラルネットワークスキームを示している。
図4図4は、いくつかの実施形態に従った、図2および図3の装置で使用するための位相周波数検出器およびチャージポンプを有する回路を示している。
図5図5は、いくつかの実施形態に従った、図2および図3の装置で使用するための電圧バッファを示している。
図6図6は、いくつかの実施形態に従った、図2の装置で使用するためのアナログ加算器または減算器(analog adder or subtractor)を示している。
図7図7は、本開示のいくつかの実施形態に従った、教師なし学習装置を使用して訓練された重み付けを有するニューラルネットワークスキームを伴うスマートデバイス、またはコンピュータシステム、またはSoC(システムオンチップ)を示している。
【発明を実施するための形態】
【0006】
いくつかの実施形態は、振動子ニューラルネットワークにおいて教師なし学習を使用するニューラルネットワークスキームを説明する。訓練(training)は、様々な実施形態に従って、周波数検出器からの出力に比例して重み付けを変化させることによって行われる。入力および初期重み付けは、複数の入力および複数の重み付けに分割される。いくつかの実施形態において、各入力および対応する重み付けが本質的にアナログである場合、各入力および対応する重み付けは、入力および対応する重み付けの間の差を示している電流を生成するアナログ加算器または減算器(analog adder or subtractor)によって受信される。電流はキャパシタを充電し、キャパシタに電圧を発生させる。いくつかの実施形態において、キャパシタ上の電圧をバッファするために、電圧バッファがキャパシタに結合される。振動子(oscillator)は、電圧(例えば、バッファ電圧)を受け取り、電圧バッファから受け取った電圧に依存する周波数を有する発振信号を発生する。各入力および対応する重み付けは、例えば、アナログ加算器または減算器、キャパシタ、電圧バッファ、および振動子を有する同一の回路パスを通る。様々な実施形態において、各振動子の出力は一緒に短絡され、そして、平均器(averager)(例えば、全ての振動子の出力を短絡させるノード)は、平均周波数fa(例えば、振動子の出力の全ての周波数の平均)を有する発振信号を生成する。振動子はシナプス(synapses)として働く。平均周波数は、各振動子の初期周波数の分布の中心に近い同期周波数である。平均器はニューロン(neuron)として働く。
【0007】
様々な実施形態において、各振動子は、チャージポンプ(CP)に結合された位相周波数検出器(PFD)または周波数検出器に結合される。CPに結合されたPFDは、対応する振動子の平均周波数faと周波数(例えば、振動子1に対するf1)との間の差を表す電圧を提供する。次に、アナログ加算器または減算器電圧は、アナログ入力電圧およびアナログ入力重み付けから電圧を加算または減算する。このプロセスを数回繰り返した後で、PDFおよびCP回路からの出力電圧は、その前の値と比較してほぼ一定の値に安定する。その時点で、いくつかの実施形態において、メモリは、PDFおよびCPからの出力電圧を、その入力に関連する訓練された重み付けとして保存する。同様に、メモリは、それぞれの対応する入力に対して、そうした訓練された重み付けを全て保存する。いくつかの実施形態において、推論論理(inference logic)またはチップは、訓練された重み付けを使用して入力データの高速推論を実行する。
【0008】
様々な実施形態において、入力および初期重み付けが本質的にデジタルである場合に、同様のデジタル入力ニューラルネットワークスキームが提供される。そうしたスキームでは、学習した重み付けに対する入力、重み付け、および変更は、デジタル加算器において加算/減算される。次に、デジタル加算器の結果は、デジタル-アナログ変換器(DAC)の入力を駆動する。DACの出力電圧が振動子の周波数を制御する。また、アナログ-デジタル変換器(ADC)は、各PFDとCP回路からの出力電圧をデジタルデータに変換し、そして、そのデジタルデータは、次いで、初期デジタル入力およびデジタル重み付けから加算または減算される。このプロセスの数回の反復の後、ADCからの出力デジタルデータは、その以前の値と比較してほぼ一定の値に安定化される。その時点で、メモリは、ADCの出力を、その入力に関連する訓練された重み付けとして保存する。いくつかの実施形態において、推論チップは、ADCの出力を訓練された重み付けとして使用して、訓練された重み付けに従って、入力の値または結果を推測する。いくつかの実施形態において、ピーク検出器は、同期周波数からピーク周波数を検出し、入力の値または結果を推測する。
【0009】
様々な実施形態の多くの技術的効果が存在する。例えば、様々な実施形態のニューラルネットワークスキームは、より単純なより小さな回路での学習機能性を可能にし、そして、学習ニューラルネットワークをより速く、よりエネルギー効率的にする。さらに、振動子の周波数は、パルスタイミングよりもノイズおよびジッタに対してよりロバスト(robust)である。他の技術的効果は、様々な図面及び実施形態から明らかになるであろう。
【0010】
以下の説明では、本開示の実施形態のより完全な説明を提供するために、多数の詳細が説明される。しかしながら、当業者には、本開示の実施形態が、これらの特定の詳細なしに実施され得ることが明らかであろう。他のインスタンスでは、本開示の実施形態を曖昧にしてしまうことを回避するために、周知の構造及びデバイスは、詳細にではなくブロック図の形態で示される。
【0011】
実施形態の対応する図面では、信号をライン(lines)で表していることに留意する。いくつかのラインは、より多くの構成要素の信号パスを示すためにより太くされ、かつ/あるいは、主要な情報の流れる方向を示すために1つ以上の端部に矢印を有し得る。このような指示は、限定することを意図するものではない。むしろ、ラインは、回路または論理ユニットの理解を容易にするために、1つ以上の例示的な実施形態に関連して使用される。デザインの必要性または好み(preference)によって規定される、任意の表現された信号は、実際には、いずれかの方向に進行し得る1つ以上の信号を含んでよく、そして、任意の適切なタイプの信号方式で実装されてよい。
【0012】
明細書の全体を通じて、かつ、請求項において、用語「接続された(“connected”)」語は、仲介デバイスなしで、接続された物の間の電気的、機械的、または磁気的接続といった直接的な接続を意味する。
【0013】
ここで、用語「アナログ信号(“analog signal”)」は、信号の時間変動(time varying)特徴(可変)が、いくつかの他の時間変動量の表現である任意の連続信号である。すなわち、別の時間変動信号に類似する。
【0014】
ここで、用語「デジタル信号(“digital signal”)」は、離散値(定量化された離散時間信号)、例えば任意のビットストリーム、または、デジタル化された(サンプリングされた、アナログ-デジタル変換された)アナログ信号のシーケンスの表現である、物理信号である。
【0015】
用語「結合された(“coupled”)」は、1つ以上の受動的または能動的な仲介デバイスを通じて、接続された物体間の直接的な電気的、機械的、または磁気的接続、もしくは、間接的接続などの直接的または間接的接続を意味する。
【0016】
ここで、用語「隣接(“adjacent”)」は、一般的に、物が隣接している(例えば、それらの間にある1つ以上の物に隣接または近接している)位置、または、別の物に隣接している(例えば、隣接している)位置を指す。
【0017】
用語「回路(“circuit”)」または「モジュール(“module”)」は、互いに協働して所望の機能を提供するように構成された1つ以上の受動的及び/又は能動的な構成要素を指すことができる。
【0018】
用語「信号(”signal”)」は、少なくとも1つの電流信号、電圧信号、磁気信号、または、データ/クロック信号を指すことができる。「ある(“a”、“an”)」および「その(“the”)」の意味は、複数の参照を含むものである。「における(“in”)」の意味は、「の中で(“in”)」および「において(“on”)」を含んでいる。
【0019】
用語「スケーリング(“scaling”)」は、一般的に、デザイン(概略およびレイアウト)を、あるプロセス技術から別のプロセス技術に変換し、その後、レイアウト領域を削減することを意味する。用語「スケーリング」は、一般的に、また、同じ技術ノード内のレイアウトおよびデバイスの小型化も意味する。用語「スケーリング」は、また、他のパラメータ、例えば、電源レベルに対する信号周波数の調整(例えば、スローダウンまたはスピードアップ-すなわち、それぞれにスケールダウンまたはスケールアップ)を指してもよい。用語「実質的に(“substantially”)」、「接近して(“close”)」、「概ね(“approximately”)」、「近い(“near”)」、および「約(“about”)」は、一般的に、目標値の+/-10%以内であることを意味する。
【0020】
別段の規定がない限り、共通のオブジェクトを記述するための順序形容詞「第1(“first”)」、「第2(“second”)」、および「第3(“third”)」、等の使用は、単に、類似のオブジェクトの異なるインスタンスが参照されていることを示し、そのように記述されたオブジェクトが、時間的に、空間的に、ランク付けにおいて、または、他の方法で、所与のシーケンスになければならないことを意味するように意図されてはいない。
【0021】
本開示の目的のために、フレーズ「A及び/又はB」および「AまたはB」は、(A)、(B)、または(AかつB)を意味する。本開示の目的のために、フレーズ「A、B、及び/又は、C」は、(A)、(B)、(C)、(AかつB)、(AかつC)、(BかつC)、または(AかつBかつC)を意味する。
【0022】
明細書、および、もしあれば、請求項における、用語「左(“left”)」、「右(“right”)」、「前(“front”)」、「後(“back”)」、「上面(“top”)」、「底面(“bottom”)」、「上(“over”)」、「下(“under”)」、等は、説明の目的のために使用されており、永続的な相対的位置を説明するためには必ずしも使用されない。
【0023】
他の図の要素と同一の参照番号(または名称)を有する図の要素は、記載されたものと同様の方法で作動または機能することができるが、これらに限定されないことが指摘される。
【0024】
実施形態の目的のために、ここにおいて説明される様々な回路および論理ブロック内のトランジスタは、金属酸化物半導体(MOS)トランジスタまたはそれらの派生物であり、MOSトランジスタは、ドレイン、ソース、ゲート、およびバルク端子を含む。トランジスタ及び/又はMOSトランジスタ誘導体(derivatives)は、また、Tri-GateおよびFinFETトランジスタ、Gate All Around Cylindrical Transistors、Tunneling FET(TFET)、Square Wire、Rectangular Ribbon Transistors、強誘電体FET(FeFET)、もしくは、カーボンナノチューブまたはスピントロンデバイスのようなトランジスタ機能を実装する他のデバイス、を含む。MOSFETの対称的なソースおよびドレイン端子、すなわち、同一の端子は、ここでは交換可能に使用される。一方、TFETデバイスは、非対称のソース端子およびドレイン端子を有する。当業者は、他のトランジスタ、例えば、バイポーラ接合トランジスタ(BJT PNP/NPN)、BiCMOS、CMOS、等が、本開示の範囲から逸脱することなく、使用され得ることを理解するであろう。
【0025】
図1は、いくつかの実施形態に従った、重み付け(weights)および入力を有する高レベルなニューラルネットワークスキーム100を示している。ニューラルゲート回路はニューラルネットワークの基礎的要素(building block)である。これは、出力fを生成する。fは、n個の要素“xi”を伴う入力xのアレイと、保管された重み付け“wi”のアレイとの非線形関数である。ここで、“i”は、整数インデックスである。モデル100は、ニューラルゲート関数を表現している。
【数1】
…(1)
【0026】
ここで、g()は非線形閾値関数であり、そして、bは合計に加えることができるオフセットである。ここにおいて、シナプスは、対応する重み付け“w”を用いて、入力“x”の積を実行する。これらのシナプスは、アナログ乗算(multiplication)を実行するニューラルゲートの要素である。ニューロンは、シナプス入力の加重を実行し、そして、非線形閾値関数を適用する要素である。
【0027】
ここで、ドット積(dot product)ベクトルは、以下のように表現される。
【数2】
…(2)
【0028】
ニューラルネットワークの動作は、最初に学習すること、すなわち、所望の認識を達成するために重み付けを変化させるプロセス、に依存する。2種類の学習が存在している。教師あり学習と教師なし学習である。教師あり学習において、ネットワークの望ましい出力は、入力の所定のクラスについて知られている。教師なし学習では、ネットワークが、入力のクラスそれぞれに対応している出力のセットに収束する。教師なし学習の場合、重み付けは、複数の訓練入力が提供される際に、いくつかのルールに従って、進化し、または、「訓練(“train”)」する。例えば、以下のヘブ則(Hebbian rule)である。
Δwij=ηx …(3)
【0029】
教師なし学習を実施する効率的な方法は、スパイキング(spiking)ニューラルネットワークのみに存在し、アナログ、セルラ、または振動子ニューラルネットワークについて、今日では、実行可能なソリューションが存在しない。それらは教師あり学習に頼らなければならない。教師なし学習に対する一つの解決策は、スパイキングニューラルネットワーク(spiking neural network、SNN)に対して存在する。スパイクタイミング依存可塑性(spike timing dependent plasticity、STDP)であり、これは、ヘブ則と同様の効果を有する。STDPの回路は、シナプスのメモリ内に保持されている重み付けがパルスのタイミングに従った変化するようにデザインされている。しかしながら、STDPの回路はSNNに対して動作し、動作のために多数の(multiple)スパイクを必要とする。これにより、SNNは、典型的に、他のニューラルネットワークよりも遅く、かつ、エネルギー効率が低い。スパイキング回路の実装は複雑であり、そして、STDPアルゴリズムは、さらに、この複雑さを悪化させ、結果として、回路面積と電力を増大させる。
【0030】
種々の実施形態のニューラルネットワークスキームは、振動子ニューラルネットワークにおける教師なし学習を使用する。訓練は、様々な実施形態に従って、周波数の異なる検出器からの出力に比例して重み付けを変化させることによって行われる。図2-3は、そうした訓練装置を説明している。
【0031】
図2は、いくつかの実施形態に従った、振動子を使用する教師なし学習装置を使用して訓練された重み付けを有するニューラルネットワークスキーム200を示している。学習ニューラルネットワークスキーム200は、アナログ加算器/減算器201(例えば、2011-M、ここでMは整数である)、電圧バッファ203(例えば、2031から203M)、振動子204(例えば、2041-204M)、平均化回路205、ピーク検出器206、並びに、PDFおよびCP回路207(例えば、2071-207M)を含む。
【0032】
いくつかの実施形態において、AAS 201は、アナログ入力(例えば、Vx1-M)および最初に訓練されるアナログ重み付けVw1-Mを受け取る。AAS 201の実装に依存して、アナログ重み付けは、負符号(例えば、-Vw1-M)によって示され、アナログ入力から減算されてよい。入力は、分類または識別されることが望ましい任意のアナログ入力であり得る。任意の適切なアナログ電圧加算器または減算器を使用して、2つの入力(例えば、Vx1およびVw1)を減算し、そして、PDFおよびCP回路207(例えば、2071)から新しい出力を減算することができる。AAS 201について、そうした一つの例は、図6に示されている。
【0033】
図2に戻って参照すると、様々な実施形態において、バッファ203は、制御電圧としてバッファ電圧を対応する振動子204に供給する。各入力および対応する重み付けは、例えば、AAS 201、バッファ203、および振動子204を有する同一の回路パスを通る。
【0034】
様々な実施形態において、各振動子は、チャージポンプ(CP)に結合された位相周波数検出器(PFD)に結合されている。CPに一緒に結合されたPFDは、回路207として表され、これは、平均周波数faと、対応する振動子の周波数との間の差(例えば、Osc1 2041についてf1)を表す電圧を提供する。次に、アナログ加算器または減算器AAS 201は、アナログ入力電圧xおよびアナログ入力重み付けwから、電圧を加算または減算する。
【0035】
振動子204は電圧制御可能であり、その初期周波数、fi、は、入力ベクトルと重み付けベクトルとの差によって設定される。各振動子204は、入力および重み付けが振動子の周波数としてエンコーディングされる、シナプスとして動作する。例えば、振動子2041の周波数出力は、次のように表される。
=f+Δf(x-w) …(4)
【0036】
振動子2042の周波数出力は、次のように表される。
=f+Δf(x-w) …(5)
【0037】
振動子2043の周波数出力は、次のように表される。
=f+Δf(x-w) …(6)
【0038】
振動子204Mの周波数出力は、次のように表される。
=f+Δf(x-w) …(7)
ここで、fは、この線形近似の基準(中心)周波数である。
【0039】
平均化回路205は、振動子204と結合し、そして、周波数、f、を各振動子の初期周波数の分布の中心に近く同期する。例えば、出力209は、平均周波数fを有し、これは、経時的に全ての振動子の発振周波数となる。
【0040】
学習における重み付け変化のアルゴリズムの一つの例は、オハの法則(Oja’s rule)であり、それは、以下のように与えられる。
Δwij=η(x-y) …(8)
【0041】
式(8)の利点の1つは、重み付けが、長時間の訓練の後で制限なく増加しないことである。
【0042】
様々な実施形態において、PFDとCP回路207は、振動子からの発振信号の周波数と、平均器205からの発振信号の周波数との間の周波数差を決定する。例えば、PFD1とCP1回路2071は、周波数f1を有するOsc1 2041からの信号の差を、周波数faを有する平均器205からの信号と比較し、周波数差を示している電圧出力Vd1を生成する。
【0043】
平均器205と、振動子204それぞれとの周波数差を検出することによって、式(8)は、いくつかの実施形態に従って実施され得る。例えば、次のようである。
Δw=C(f-f) …(9)
【0044】
式(9)は、以下の式と等価である。
Δw=C(f+Δ(x-w)-f) …(10)
【0045】
PFDとCP回路207それぞれからの出力電圧Vdは、入力と初期重み付けにおける差から差し引かれる、Δwと等価である。例えば、AAS1は、Vx1とVw1との差からVd1を引く。次いで、新しい電流(AAS1の出力)は、新しい信号周波数f1を結果として生じ、これは、次に、新たなVd1を結果として生じる。
【0046】
このプロセスのいくつかの反復の後で、PDとCP回路207からの出力電圧Vdは、その以前の値と比較してほぼ一定の値に安定する。その時点で、アナログメモリといった、メモリ(図示なし)が、その入力に関連する訓練された重み付けとしてPDFとCP 207からの出力電圧Vdを保存(save)する。メモリは、揮発性メモリまたは不揮発性メモリであり得る。メモリの例は、相変化メモリ(PCM)、フローティングゲート(フラッシュ)メモリ(例えば、NAND、NORフラッシュ)、ダイナミックランダムアクセスメモリ(DRAM)、磁気RAM(MRAM)、抵抗変化RAM(ReRAM)、強誘電体RAM(FeRAM)、等を含む。同様に、メモリは、それぞれの対応する入力に対して、そうした訓練された重み付けを全て保存する。いくつかの実施形態において、推論論理またはチップは、訓練された重み付けを使用して入力データの高速推論を実行する。
【0047】
様々な実施形態において、振動子204は電流モード振動子である。例えば、バッファ203からの出力は、振動子を通る電流、従ってその発振周波数を修正するために使用される。いくつかの実施態様において、振動子204は、電圧モード振動子である。例えば、バッファ203からの出力は、振動子のトランジスタのゲートバイアス、従ってその発振周波数を修正するために使用される。いくつかの実施形態において、振動子204は、リング振動子を含む。いくつかの実施形態において、振動子204は、LC(インダクタ-キャパシタ)振動子を含む。
【0048】
いくつかの実施態様において、平均器205からの出力210 faは、さらに、結果(例えば、入力データxの分類)を生成するために処理される。いくつかの実施形態において、ピーク検出器205は、同期周波数faからピーク周波数を決定し、入力の値または結果を推測する。ピーク検出器を決定するための任意の適切な回路が、ピーク検出器206のために使用され得る。
【0049】
図3は、いくつかの実施形態に従った、振動子を使用する教師なし学習装置を使用して訓練されたデジタル重み付けを有するニューラルネットワークスキーム300を示している。スキーム300は、デジタル入力xおよび重み付けwを除いて、スキーム200と同様である。ここで、AASは、デジタル加算器/減算器301といった、デジタル加算器/減算器で置き換えられている。いくつかの実施形態において、デジタル加算器/減算器301のキャリー値は、入力x、w、およびdwの大多数である論理値を出力する多数決論理(majority logic)ゲートによって計算される。例えば、デジタル加算器/減算器3011は、x-w-dwの機能を実行する。任意の適切なデジタル加算器/減算器を使用して、加算器/減算器301を実装することができる。
【0050】
ADC 302(ADC 3021-Mといったもの)は、PFDとCP回路207の出力を変換するために使用され、dwを生成する。例えば、ADC 3021は、回路2071のアナログ出力を対応するデジタル値に変換するために使用される。次に、このデジタルコードwは、xとwとの差から差し引かれる(または、加算される)。様々な実施形態において、x、w、およびdwは、マルチビット信号である。デジタル加算器/減算器301の結果は、DAC 303の入力に提供される。DAC 303の出力電流に関連する電圧の出力値は、振動子204を駆動し、そして、その周波数を制御するために使用される。
【0051】
ADCは、連続的な物理量(例えば、電圧)を、物理量の振幅を表すデジタル数に変換する装置である。いくつかの実施態様において、ADC 3021-Mは、回路207のアナログ出力をそれらの対応するデジタル表現に変換する。任意の適切なADCを使用して、ADC 3021-Mを実装することができる。例えば、ADC 3021-Mは、直接変換ADC(フラッシュADCの場合)、2ステップフラッシュADC、逐次近似ADC(SAR ADC)、ランプ比較ADC、ウィルキンソンADC、積分ADC、デルタ符号化ADCまたはカウンタランプ、パイプラインADC(サブレンジング量子化器とも呼ばれる)、シグマ-デルタADC(デルタ-シグマADCとしても知られる)、時間インターリーブADC、中間FMステージを有するADC、また、は時間延伸ADCのうち1つである。種々の実施形態を説明する目的で、ADC 3021-MはフラッシュADCであると考えられる。
【0052】
DACは、デジタルデータ(例えば、コード化されたバイナリまたは温度計)をアナログ信号(電流、電圧、または電荷)に変換する装置である。いくつかの実施態様において、DAC 3031-Mは、パルス幅変調器DACである。他の実施形態において、他のタイプのDACが、DAC 3031-Mを実装するために使用され得る。例えば、DAC(オーバーサンプリングDACとしても知られる)、二値重み付けDAC(例えば、スイッチド抵抗DAC、スイッチドキャパシタDAC、スイッチド電流源DAC)、R-2RラダーDAC、温度計符号化DAC、セグメントDAC、等が、DAC 3031-Mを実装するために使用され得る。任意の適切なDACが、DAC 3031-Mを実装するために使用され得る。
【0053】
図4は、いくつかの実施形態に従った、図2および図3の装置で使用するための位相周波数検出器およびチャージポンプを有する回路400を示している。回路400は、フリップフロップ401と402、NANDゲート403、インバータ404、p型デバイスMP1、および、図示のように結合されたn型デバイスMN1を含む。入力VaおよびViは、フリップフロップ401と402によってクロック入力として、それぞれに、受信され、上電圧VUpおよび下電圧VDownを生成する。これらの上および下により、フリップフロップ401と402がリセットされる。VaとViの差は、電荷ポンプトランジスタMP1とMN1によって対応する電流IΦに変換される。この電流IΦは、キャパシタCLを充電して、電圧Vdを発生させる。ニューラルネットワーク200の場合、Vdは、AASによって減算される。ニューラルネットワーク300では、Vdは、ADC 302によってデジタル形式に変換される。
【0054】
図5は、いくつかの実施形態に従った、図2および図3の装置で使用するための電圧バッファ500を示している。電圧バッファ500は、増幅器501、フィードバックキャパシタC、および、フィードバック抵抗Rを含む。任意の適切な単段(single-stage)または多段(multi-stage)増幅器を使用して、増幅器501を実装することができる。バッファ500の入力Vinは、AASの出力に結合されている。バッファ500の出力Voutは、振動子204の入力に結合されている。フィードバック抵抗RおよびキャパシタCは、任意の適切な方法で実装される。例えば、抵抗器Rは、線形領域で動作するトランジスタ、プロセスノードによって提供される個別の抵抗器、または、それらの組み合わせとして実装される。様々な実施形態において、抵抗Rの抵抗は、ハードウェア(例えば、ヒューズ、レジスタ)、または、ソフトウェア(例えば、ファームウェア、オペレーティングシステム)によってプログラム可能である。
【0055】
いくつかの実施形態において、様々な図のキャパシタC(例えば、CL)は、個別のキャパシタ、金属-絶縁体-金属(MIM)キャパシタ、金属キャパシタ、強誘電体キャパシタ、キャパシタとして構成されたトランジスタ、または、それらの組み合わせとして実装される。様々な実施形態において、キャパシタCのキャパシタンスは、ハードウェア(例えば、ヒューズ、レジスタ)、または、ソフトウェア(例えば、ファームウェア、オペレーティングシステム)によってプログラム可能である。
【0056】
図6は、いくつかの実施形態に従った、図2の装置で使用するためのアナログ加算器または減算器(analog adder or subtractor、AAS)600(例えば、2011)を示している。いくつかの実施形態において、AAS 600は、p型トランジスタMP4a、MP5a、MP4b、およびMP5b、n型トランジスタMN1a、MN2a、MN1b、およびMN2b、並びに、図示のように結合された電流ソースIbaおよびIbbを備える。入力はV1、V2、およびV3であり、そして、出力はVoである。出力ノードVoでの電圧は、AAS 201に供給される。
【0057】
図7は、本開示のいくつかの実施形態に従った、教師なし学習装置を使用して訓練された重み付けを有するニューラルネットワークスキームを伴うスマートデバイス、またはコンピュータシステム、またはSoC(システムオンチップ)を示している。いくつかの実施形態において、デバイス2400は、コンピューティングタブレット、携帯電話またはスマートフォン、ラップトップ、デスクトップ、モノのインターネット(IOT)デバイス、サーバ、ウェアラブルデバイス、セットトップボックス、ワイヤレス対応eリーダ、等といった、適切なコンピューティング装置を表す。所定の構成要素が一般的に示されており、そうした装置の全ての構成要素がデバイス2400に示されているわけではないことが理解されるだろう。
【0058】
一つの実施形態において、デバイス2400は、SoC(システムオンチップ)2401を含む。SOC 2401の例示的な境界が、図7の点線を使用して示されており、いくつかの例示的な構成要素は、SOC 2401内に含まれるように示される。しかしながら、SOC 2401は、デバイス2400の任意の適切な構成要素を含んでもよい。
【0059】
いくつかの実施形態において、デバイス2400は、プロセッサ2404を含む。プロセッサ2404は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブル論理デバイス、プロセッシングコア、または他の処理手段といった、1つ以上の物理的デバイスを含んでよい。プロセッサ2404によって実行される処理操作は、アプリケーション及び/又はデバイス機能が実行されるオペレーティング・プラットフォームまたはオペレーティングシステムの実行を含む。処理動作は、人間のユーザまたは他の装置とのI/O(入力/出力)に関連する動作、電力管理に関連する動作、計算デバイス2400を他の装置に接続することに関連する動作、及び/又は、類似の動作を含む。処理動作は、また、オーディオI/O、及び/又は、ディスプレイI/Oに関連する動作を含み得る。様々な実施形態において、振動子を使用する教師なし学習装置を使用して訓練された重み付けを伴うニューラルネットワークスキームが、プロセッサ2404によって実装される。
【0060】
いくつかの実施形態において、プロセッサ2404は、複数の処理コア(コアとも呼ばれる)2408a、2408b、2408cを含む。3つのコア2408a、2408b、2408cのみが示されているが、プロセッサ2404は、任意の他の適切な数の処理コア、例えば、数十または数百の処理コアを含んでよい。プロセッサコア2408a、2408b、2408cは、単一の集積回路(IC)チップ上に実装されてよい。さらに、チップは、1つ以上の共有キャッシュ及び/又はプライベートキャッシュ、バスまたは相互接続、グラフィックス及び/又はメモリコントローラ、または他の構成要素を含んでよい。
【0061】
いくつかの実施形態において、プロセッサ2404は、キャッシュ2406を含む。一つの例では、キャッシュ2406のセクションは、個々のコア2408について専用であってよい(例えば、コア2408aについて専用のキャッシュ2406の第1セクション、コア2408bについて専用のキャッシュ2406の第2セクション、等)。一つの実施形態において、キャッシュ2406の1つ以上のセクションは、2つ以上のコア2408の間で共有されてよい。キャッシュ2406は、異なるレベル、例えば、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、レベル3(L3)キャッシュ、等に分割されてよい。
【0062】
いくつかの実施形態において、プロセッサコア2404は、コア2404による実行のために命令(条件付き分岐を伴う命令を含む)を取り出すためのフェッチユニットを含んでよい。命令は、メモリ2430といった任意のストレージ装置からフェッチされてよい。プロセッサコア2404は、また、フェッチされた命令をデコーディングするデコードユニットを含んでもよい。例えば、デコードユニットは、フェッチされた命令を複数のマイクロオペレーションへとデコーディングすることができる。プロセッサコア2404は、デコードされた命令を保管することに関連する種々の操作を実行するスケジュールユニットを含んでよい。例えば、スケジュールユニットは、命令のディスパッチの準備ができるまで、例として、デコードされた命令の全てのソース値が利用可能になるまで、デコードユニットからのデータを保持してよい。一つの実施形態において、スケジュールユニットは、実行のために、デコードされた命令をスケジュールし、かつ/あるいは、実行ユニットに発行(または、ディスパッチ)することができる。
【0063】
実行ユニットは、ディスパッチされた命令を、それらが、(例えば、デコードユニットによって)デコードされ、そして、(例えば、スケジュールユニットによって)ディスパッチされた後で、実行することができる。一つの実施形態において、実行ユニットは、2つ以上の実行ユニット(イメージング計算ユニット、グラフィックス計算ユニット、汎用計算ユニット、等といったもの)を含んでよい。実行ユニットは、また、加算、減算、乗算、及び/又は除算といった、種々の算術演算を実行することができ、1つ以上の算術論理ユニット(ALU)を含むことができる。一つの実施形態において、コプロセッサ(図示なし)は、実行ユニットと関連して種々の算術演算を実行することができる。
【0064】
さらに、実行ユニットは、アウトオブオーダー(out-of-order)命令を実行することができる。従って、プロセッサコア2404は、一つの実施形態において、アウトオブオーダー・プロセッサコアであってよい。プロセッサコア2404は、また、リタイヤ(retirement)ユニットを含んでよい。リタイヤユニットは、実行された命令を、それらがコミットされた後でリタイヤしてよい。一つの実施形態において、実行された命令のリタイヤは、結果として、命令の実行からコミットされているプロセッサ状態、割り当て解除されている命令によって使用される物理レジスタ、等を生じ得る。プロセッサコア2404は、また、1つ以上のバスを介して、プロセッサコア2404の構成要素と他の構成要素との間の通信を可能にするバスユニットを含んでよい。プロセッサコア2404は、また、コア2404の種々の構成要素によってアクセスされるデータを保管する1つ以上のレジスタを含んでよい(割り当てられたアプリケーションプライオリティ及び/又はサブシステム状態(モード)アソシエーションに関連する値、といったものである)。
【0065】
いくつかの実施形態において、デバイス2400は、接続回路2431を含む。例えば、接続回路2431は、ハードウェアデバイス(例えば、無線及び/又は有線コネクタ、および通信ハードウェア)、及び/又は、ソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含み、例えば、デバイス2400が外部デバイスと通信することを可能にする。デバイス2400は、他のコンピュータ装置、無線アクセスポイントまたは基地局、等の外部装置から分離されてもよい。
【0066】
一つの実施形態において、接続回路(connectivity circuitries)2431は、複数の異なるタイプの接続性を含んでよい。一般化するために、接続回路2431は、セルラ接続回路、無線接続回路、等を含んでよい。接続回路2431のセルラ接続回路は、一般的に、無線キャリアによって提供されるセルラーネットワーク接続性を指す。GSM(global system for mobile communication)または変形もしくは派生物、CDMA(code division multiple access)または変形もしくは派生物、TDM(time division multiplexing)または変形もしくは派生物、第3世代パートナーシッププロジェクト(3GPP)ユニバーサル移動通信システム(UMTS)または変形もしくは派生物、3GPPロングタームエボリューション(LTE)システムまたは変形もしくは派生物、3GPP LTE進化(LTE-A)システムまたは変形もしくは派生物、第5世代(5G)無線システムまたは変形もしくは派生物、5Gモバイルネットワークシステムまたは変形もしくは派生物、5G新無線(NR)システムまたは変形もしくは派生物、もしくは、他のセルラサービス標準を介して提供される、といったものである。接続回路2431の無線接続回路(または、無線インターフェイス)は、セルラではない無線接続を指し、パーソナルエリアネットワーク(ブルートゥース(登録商標)、ニアフィールド、等、といったもの)、ローカルエリアネットワーク(例えば、Wi-Fi)、及び/又は、ワイドエリアネットワーク(例えば、WiMax)、及び/又は、他の無線通信を含むことができる。一つの実施形態において、接続回路2431は、例えば、システム実施形態が無線装置、例として、携帯電話またはパーソナルデジタルアシスタントに組み込まれ得るように、有線または無線インターフェイスといった、ネットワークインターフェイスを含んでよい。
【0067】
いくつかの実施形態において、デバイス2400は、制御ハブ2432を含み、それは、1つ以上の入出力装置(I/O device)との相互作用に関連するハードウェア装置及び/又はソフトウェア構成要素を表す。例えば、プロセッサ2404は、制御ハブ2432を介して、ディスプレイ2422、1つ以上の周辺装置2424、ストレージ装置2428、1つ以上の他の外部装置2429、等のうちの1つ以上と通信することができる。制御ハブ2432は、チップセット、プラットフォーム制御ハブ(PCH)、及び/又は、類似のものであってもよい。
【0068】
例えば、制御ハブ2432は、デバイス2400に接続する追加デバイスのための1つ以上の接続ポイント、例として、それを通じてユーザがシステムと対話することができるもの、を示している。例えば、デバイス2400に取り付けることができるデバイス(例えば、デバイス2429)は、マイクロホンデバイス、スピーカまたはステレオシステム、オーディオ装置、ビデオシステム、または他のディスプレイ装置、キーボードまたはキーパッドデバイス、もしくは、カードリーダまたは他のデバイスなどの特定のアプリケーションで使用するための他のI/Oデバイス、を含む。
【0069】
上述のように、制御ハブ2432は、オーディオ装置、ディスプレイ2422などと相互作用することができる。例えば、マイクロホンまたは他のオーディオ装置を介する入力は、デバイス2400の1つ以上のアプリケーションまたは機能のための入力またはコマンドを提供することができる。加えて、ディスプレイ出力の代わりに、または、ディスプレイ出力に加えて、オーディオ出力が提供され得る。別の例では、ディスプレイ2422がタッチスクリーンを含む場合、ディスプレイ2422は、少なくとも部分的に制御ハブ2432によって管理され得る入力デバイスとしても機能する。また、制御ハブ2432によって管理されるI/O機能を提供するために、計算デバイス2400上に追加のボタンまたはスイッチを設けることもできる。一つの実施形態において、制御ハブ2432は、加速度計、カメラ、光センサまたは他の環境センサ、もしくは、デバイス2400に含まれ得る他のハードウェア、といったデバイスを管理する。入力は、直接的なユーザ対話の一部であり得る。同様に、システムに環境入力を提供して、システムの動作に影響を及ぼすことができる(ノイズのフィルタリング、輝度検出のためのディスプレイの調整、カメラのためのフラッシュの適用、または他の機能、といったものである)。
【0070】
いくつかの実施形態において、制御ハブ2432は、任意の適切な通信プロトコル、例えば、PCIe(Peripheral Component Interconnect Express)、USB(Universal Serial Bus)、Thunderbolt、HDMI(登録商標)(High Definition Multimedia Interface)、Firewire、等を使用して、様々なデバイスに結合することができる
【0071】
いくつかの実施形態において、ディスプレイ2422は、ユーザがデバイス2400と対話するための視覚的及び/又は触覚的なディスプレイを提供するハードウェア(例えば、ディスプレイ装置)およびソフトウェア(例えば、ドライバ)構成要素を表す。ディスプレイ2422は、ディスプレイインターフェイス、ディスプレイスクリーン、及び/又は、ユーザにディスプレイを提供するために使用されるハードウェアデバイス、を含んでよい。いくつかの実施形態において、ディスプレイ2422は、出力および入力の両方をユーザに提供するタッチスクリーン(または、タッチパッド)装置を含む。一つの実施形態において、ディスプレイ2422は、プロセッサ2404と直接的に通信してよい。ディスプレイ2422は、モバイル電子デバイスまたはラップトップデバイス、もしくは、ディスプレイインターフェイス(例えば、DisplayPort、等)を介して取り付けられた外部ディスプレイ装置におけるような、1つ以上の内部ディスプレイ装置であり得る。一つの実施形態において、ディスプレイ2422は、仮想現実(VR)アプリケーションまたは拡張現実(AR)アプリケーションで使用するための立体表示装置といった、ヘッドマウントディスプレイであってよい。
【0072】
いくつかの実施形態において、かつ、図には示されていないが、プロセッサ2404に加えて(または、その代わりに)、デバイス2400は、ディスプレイ2422上にコンテンツを表示する1つ以上の態様を制御することができる、1つ以上のグラフィックス処理コアを含むグラフィックス処理ユニット(GPU)を含んでよい。
【0073】
制御ハブ2432(または、プラットフォーム制御ハブ)は、ハードウェアインターフェイスおよびコネクタ、同様に、例えば、周辺装置2424への周辺接続を行うためのソフトウェア構成要素(例として、ドライバ、プロトコルスタック)を含んでよい。
【0074】
デバイス2400は、他のコンピュータ装置に対する周辺装置であってよく、同様に、それに接続された周辺装置であってもよいことが理解されよう。デバイス2400は、デバイス2400上のコンテンツを管理(例えば、ダウンロード及び/又はアップロード、変更、同期)する目的のために、他のコンピュータデバイスに対して接続する「ドッキング(“docking”)」コネクタを有してよい。加えて、ドッキングコネクタは、デバイス2400が所定の周辺機器に接続することを可能にし、コンピュータデバイス2400が、例えば、オーディオビジュアルまたは他のシステムへのコンテンツ出力を制御することを可能にする。
【0075】
専用ドッキングコネクタまたは他の専用接続ハードウェアに加えて、デバイス2400は、共通または標準ベースのコネクタを介して周辺接続を行うことができる。共通タイプは、USB(Universal Serial Bus)コネクタ(これは、多数の異なるハードウェアインターフェイスのいずれかを含むことができる)、MDP(MiniDisplayPort)、HDMI(登録商標)(High Definition Multimedia Interface)、Firewire、または他のタイプを含む、DisplayPort、を含むことができる。
【0076】
いくつかの実施形態において、接続回路2431は、例えば、プロセッサ2404に直接的に結合されることに加えて、または、その代わりに、制御ハブ2432に結合されてよい。いくつかの実施形態において、ディスプレイ2422は、例えば、プロセッサ2404に直接的に結合されることに加えて、または、その代わりに、制御ハブ2432に結合されてよい。
【0077】
いくつかの実施形態において、デバイス2400は、メモリインターフェイス2434を介してプロセッサ2404に結合されたメモリ2430を含む。メモリ2430は、デバイス2400内に情報を保管するためのメモリデバイスを含む。メモリは、不揮発性(メモリデバイスへの電力が中断された場合に状態が変化しない)及び/又は揮発性(メモリデバイスへの電力が中断された場合に状態が不確定である)メモリデバイスを含み得る。メモリデバイス2430は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、相変化メモリデバイス、または、プロセスメモリとして機能するのに適した性能を有する何らかの他のメモリデバイスであり得る。一つの実施形態において、メモリ2430は、1つ以上のプロセッサ2404がアプリケーションまたはプロセスを実行するときに使用するデータおよび命令を保管するために、デバイス2400用のシステムメモリとして動作することができる。メモリ2430は、アプリケーションデータ、ユーザデータ、音楽、写真、文書、または他のデータ、並びに、デバイス2400のアプリケーションおよび機能の実行に関連するシステムデータを保管することができる。
【0078】
種々の実施形態および実施例の要素は、また、コンピュータ実行可能命令(例えば、ここにおいて説明される他の任意のプロセスを実施するための命令)を保管するための機械読取り可能媒体(例えば、メモリ2430)として提供される。機械読取り可能媒体(例えば、メモリ2430)は、フラッシュメモリ、光ディスク、CD-ROM、DVD ROM、RAM、EPROM、EEPROM、磁気カードまたは光カード、相変化メモリ(PCM)、もしくは、電子的またはコンピュータ実行可能命令を保管するのに適した他のタイプの機械読取り可能媒体を含み得るが、これらに限定されない。例えば、本開示の実施形態は、通信リンク(例えば、モデムまたはネットワーク接続)を介してデータ信号によってリモートコンピュータ(例えば、サーバ)から要求元コンピュータ(例えば、クライアント)に転送され得るコンピュータプログラム(例えば、BIOS)としてダウンロードされ得る。
【0079】
いくつかの実施形態において、デバイス2400は、例えば、デバイス2400の種々の構成要素の温度を測定するための温度測定回路2440を含む。一つの実施形態において、温度測定回路2440は、埋め込まれてよく、または、結合されてよく、もしくは、様々な構成要素に対して取り付けられてもよく、それらの構成要素の温度が、測定され、かつ、モニタリングされる。例えば、温度測定回路2440は、コア2408a、2408b、2408c、電圧レギュレータ2414、メモリ2430、SOC 2401のマザーボード、及び/又は、デバイス2400の任意の適切な構成要素のうちの1つ以上の温度(または内部温度)を測定することができる。
【0080】
いくつかの実施形態において、デバイス2400は、例えば、デバイス2400の1つ以上の構成要素によって消費される電力を測定するための電力測定回路2442を含む。一つの実施形態においては、電力の測定に加えて、または、その代わりに、電力測定回路2442は、電圧及び/又は電流を測定することができる。一つの実施例において、電力測定回路2442は、埋め込まれてよく、結合されてよく、または、種々の構成要素に取り付けられてもよく、その構成要素の電力、電圧、及び/又は、電流消費が測定され、かつ、モニタリングされる。例えば、電力測定回路2442は、1つ以上の電圧レギュレータ2414によって供給される電力、電流及び/又は電圧、SOC 2401に供給される電力、デバイス2400に供給される電力、デバイス2400のプロセッサ2404(または任意の他の構成要素)によって消費される電力、等を測定することができる。
【0081】
いくつかの実施形態において、デバイス2400は、一般的に電圧レギュレータ(VR)2414と呼ばれる1つ以上の電圧レギュレータ回路を含み、VRは、高帯域幅および低電力差動-シングルエンドIII型(differential-to-single-ended type-III)補償器を有する。VR 2414は、デバイス2400の任意の適切な構成要素を動作させるために供給され得る適切な電圧レベルで信号を生成する。単なる例として、VR 2414は、デバイス2400のプロセッサ2404に信号を供給しているように示されている。いくつかの実施形態において、VR 2414は、1つ以上の電圧識別(VID)信号を受信し、そして、VID信号に基づいて、適切なレベルで電圧信号を生成する。種々のタイプのVRが、VR 2414のために利用され得る。例えば、VR 2414は、「バック(“buck”)」VR、「ブースト(“boost”)」VR、バックとブーストVRの組み合わせVR、低ドロップアウト(LOD)レギュレータ、スイッチングDC-DCレギュレータ、等を含み得る。バックVRは、一般的に、入力電圧を1より小さい比率で出力電圧に変換する必要がある電力配送アプリケーションにおいて使用される。ブーストVRは、一般的に、入力電圧を1より大きな比率で出力電圧に変換する必要のある電力配送アプリケーションにおいて使用される。いくつかの実施形態において、各プロセッサコアは、PCU 2410a/b及び/又はPMIC 2412によって制御される独自のVRを有する。いくつかの実施形態において、各コアは、電力管理のための効率的な制御を提供するために、分散型LDOのネットワークを有する。LDOは、デジタルLDO、アナログLDO、もしくは、デジタルLDOまたはアナログLDOの組み合わせであり得る。VRは、様々な実施形態に関連して説明されるように、適応電圧出力を提供することができる適応VRである。
【0082】
いくつかの実施形態において、デバイス2400は、一般的にクロック発生器2416と呼ばれる1つ以上のクロック発生器回路を含む。クロック発生器2416は、デバイス2400の任意の適切な構成要素に供給され得る適切な周波数レベルでクロック信号を生成する。単なる例として、クロック発生器2416は、デバイス2400のプロセッサ2404にクロック信号を供給しているように示されている。いくつかの実施形態において、クロック発生器2416は、1つ以上の周波数識別(FID)信号を受信し、そして、FID信号に基づいて、適切な周波数でクロック信号を生成する。クロック発生器2416は、様々な実施形態に関連して説明されるように、適応周波数出力を提供することができる適応クロック源である。
【0083】
いくつかの実施形態において、デバイス2400は、デバイス2400の様々な構成要素に電力を供給するバッテリ2418を含む。単なる例として、バッテリ2418は、プロセッサ2404に電力を供給しているように示されている。図には示されていないが、デバイス2400は、ACアダプタから受け取った交流(AC)電源に基づいて、例えば、バッテリを再充電するための充電回路を含み得る。
【0084】
いくつかの実施形態において、デバイス2400は、電力制御ユニット(PCU)2410(電力管理ユニット(PMU)、電力コントローラ、等としても呼ばれるもの)を含む。一つの実施例において、PCU 2410のいくつかのセクションは、1つ以上の処理コア2408によって実装されてよく、PCU 2410のこれらのセクションは、ドット付きボックスおよびラベル付けされたPCU 2410aを使用して象徴的に示されている。一つの実施例において、PCU 2410のいくつかの他のセクションは、処理コア2408の外側に実装されてよく、PCU 2410のこれらのセクションは、ドット付きボックスを使用して象徴的に示され、PCU 2410bとしてラベル付けされている。PCU 2410は、デバイス2400のための種々の電力管理動作を実施することができる。PCU 2410は、ハードウェアインターフェイス、ハードウェア回路、コネクタ、レジスタ、等、並びに、ソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含み、デバイス2400のための種々の電力管理動作を実施することができる。
【0085】
いくつかの実施形態において、デバイス2400は、例えば、デバイス2400のための様々な電力管理動作を実施するために、電力管理集積回路(PMIC)2412を含む。いくつかの実施形態において、PMIC 2412は、再構成可能な電力管理IC(RPMIC)及び/又はIMVP(Intel(R)Mobile Voltage Positioning)である。一つの実施例において、PMICは、プロセッサ2404から分離されたICチップ内にある。これらは、デバイス2400のための種々の電力管理動作を実施し得る。PMIC 2412は、ハードウェアインターフェイス、ハードウェア回路、コネクタ、レジスタ、等、並びに、ソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含み、デバイス2400のための種々の電力管理動作を実施することができる。
【0086】
一つの実施形態において、デバイス2400は、PCU 2410またはPMIC 2412の一方または両方を含む。一つの実施形態において、PCU 2410またはPMIC 2412のいずれか1つは、デバイス2400内に存在しなくてよい。そして、従って、これらの構成要素は、点線を使用して図示されている。
【0087】
デバイス2400の種々の電力管理動作は、PCU 2410により、PMIC 2412により、または、PCU 2410とPMIC 2412の組み合わせによって実行され得る。例えば、PCU 2410及び/又はPMIC 2412は、デバイス2400の様々な構成要素のための電力状態(例えば、P状態)を選択し得る。例えば、PCU 2410及び/又はPMIC 2412は、デバイス2400の様々なコンポーネントのための電力状態を(例えば、ACPI(Advanced Configuration and Power Interface)仕様に従って)選択し得る。単なる例として、PCU 2410及び/又はPMIC 2412は、デバイス2400の様々な構成要素を、スリープ状態、アクティブ状態、適切なC状態(例えば、ACPI仕様に従って、C0状態、または、他の適切なC状態)に遷移させることができる、等。一つの実施例において、PCU 2410及び/又はPMIC 2412は、VR 2414(例えば、SCVR)による電圧出力及び/又はクロック発生器によって出力されるクロック信号の周波数を、例えば、それぞれに、VID信号及び/又はFID信号を出力することによって制御することができる。一つの実施例において、PCU 2410及び/又はPMIC 2412は、バッテリ電力の使用、バッテリ2418の充電、および、電力節約動作に関連する機能を制御することができる。
【0088】
クロック発生器2416は、位相同期ループ(PLL)、周波数同期ループ(FLL)、または、任意の好適なクロック源を含むことができる。いくつかの実施形態において、プロセッサ2404の各コアは、それ自体のクロックソースを有する。従って、各コアは、他方のコアの動作周波数に依存しない周波数で動作することができる。いくつかの実施形態において、PCU 2410及び/又はPMIC 2412は、適応的または動的周波数スケーリングまたは調整を実行する。例えば、コアがその最大電力消費閾値または制限値で動作していない場合に、プロセッサコアのクロック周波数が増加され得る。いくつかの実施形態において、PCU 2410及び/又はPMIC 2412は、コアが目標性能レベル以下で動作しているとPCU 2410及び/又はPMIC 2412が判断した場合に、コアのクロック発生源(例えば、コアのPLL)がロックを喪失することなく、コアの周波数及び/又は電源電圧を適宜調整する。例えば、コアが、そのコアまたはプロセッサ2404に対して割り当てられた総電流よりも小さい電力供給レール(power supply rail)から電流を引き出す場合、PCU 2410及び/又はPMIC 2412は、コアまたはプロセッサ2404がより高い性能レベルで動作できるように(例えば、クロック周波数及び/又は電源電圧レベルを増加することによって)そのコアまたはプロセッサ2404に対する電力引き出しを一時的に増加させることができる。従って、電圧及び/又は周波数は、製品の信頼性を損なうことなく、プロセッサ2404のために一時的に増加され得る。
【0089】
一つの実施例において、PCU 2410及び/又はPMIC 2412は、例えば、電力測定回路2442、温度測定回路2440、バッテリ2418の充電レベル、及び/又は、電力管理のために使用され得る任意の他の適切な情報からの測定値の受信に少なくとも部分的に基づいて、電力管理動作を実行し得る。この目的のために、PMIC 2412は、システム/プラットフォームの電力/熱挙動に影響を及ぼす1つ以上の要因における様々な値/変動を感知/検出するために、1つ以上のセンサに対して通信可能に結合されている。1つ以上のファクタ(factor)の例は、電流、電圧低下、温度、動作周波数、動作電圧、電力消費、コア間通信活動、等を含む。これらのセンサのうちの1つ以上は、コンピュータシステムの1つ以上の構成要素または論理/IPブロックと物理的に近接(及び/又は、熱的に接続/結合)して設けることができる。加えて、少なくとも1つの実施形態において、センサは、PCU 2410及び/又はPMIC 2412が、少なくとも部分的に、1つ以上のセンサによって検出された値に基づいて、プロセッサコアエネルギーを管理することを可能にするために、PCU 2410及び/又はPMIC 2412に直接的に接続され得る。
【0090】
また、(ソフトウェアスタックの全ての要素が図示されるわけではないが)デバイス2400のソフトウェアスタックの例も示されている。単なる例として、プロセッサ2404は、アプリケーションプログラム2450、オペレーティングシステム2452、1つ以上の電力管理(PM)特定アプリケーションプログラム(例えば、一般的に、PMアプリケーション2458として呼ばれるもの)、及び/又は、同様のプログラムを実行することができる。PMアプリケーション2458は、また、PCU 2410及び/又はPMIC 2412によって実行されてよい。OS 2452は、また、1つ以上のPMアプリケーション2456a、2456b、2456cを含んでよい。OS 2452は、また、種々のドライバ2454a、2454b、2454c、等を含んでもよく、これらのいくつかは、電力管理目的に特定のものであり得る。いくつかの実施形態において、デバイス2400は、基本入出力システム(BIOS)2420をさらに含んでよい。BIOS 2420は、OS 2452と(例えば、1つ以上のドライバ2454を介して)通信し、プロセッサ2404と通信し得る、等。
【0091】
例えば、PMアプリケーション2458、2456、ドライバ2454、BIOS 2420、等のうちの1つ以上を使用して、電力管理特有のタスクを実施する。例えば、デバイス2400の様々な構成要素の電圧及び/又は周波数を制御し、デバイス2400の様々な構成要素のウェイクアップ状態、スリープ状態、及び/又は、他の任意の適切な電力状態を制御し、バッテリの電力使用、バッテリ2418の充電、省電力動作に関連する機能を制御する。
【0092】
本明細書における「実施形態(“an embodiment”)」、「一つの実施形態(“one embodiment”)」、「いくつかの実施形態(“some embodiment”)」、または「他の実施形態(“other embodiment”)」への言及は、実施形態に関連して説明された特定の特徴、構造、または特性が、必ずしも全ての実施形態ではなく、少なくともいくつかの実施形態に含まれることを意味する。「実施形態」、「一つの実施形態」、または「いくつかの実施形態」の様々な出現は、必ずしも全てが同じ実施形態を参照しているわけではない。仕様書が、構成要素、特徴、構造、または特性を含んで「よい(“may”、“might”、または“could”)」と述べる場合、その特定の構成要素、特徴、構造、または特性は、含まれることを要しない。明細書または請求項が「一つの(“a”または“an”)」要素に言及する場合は、要素のうちの1つだけが存在することを意味しない。本明細書または請求項が「追加の(“an additional”)」要素に言及する場合は、追加の要素のうちの2つ以上が存在することを排除しない。
【0093】
さらに、特定の特徴、構造、機能、または特性は、1つ以上の実施形態において任意の適切な方法で組み合わせることができる。例えば、第1の実施形態は、2つの実施形態に関連する特定の特徴、構造、機能、または特性が相互に排他的でない場合には、第2の実施形態と組み合わせることができる。
【0094】
本開示は、その特定の実施形態に関連して説明されてきたが、そうした実施形態の多くの代替、修正、および変形が、前述の説明に照らして当業者には明らかであろう。本開示の実施形態は、全てのそうした代替、修正、および変形がを添付の請求項の広い範囲内に入るように、包含することが意図されている。
【0095】
加えて、説明および考察を簡単にするため、かつ、開示を不明瞭にしないために、集積回路(IC)チップおよび他の構成要素への周知の電力/接地接続は、提示された図の中に示されても、示されていなくてもよい。さらに、構成は、開示を曖昧にすることを避けるために、そして、また、そうしたブロック図構成の実施に関する詳細が、本開示が実施されるプラットフォームに大きく依存するという事実を考慮して、ブロック図形式で示され得る(すなわち、そうした詳細は、十分に当業者の範囲内である)。本開示の例示的な実施形態を説明するために特定の詳細(例えば、回路)が説明される場合、本開示は、これらの特定の詳細を伴わずに、または、それらの変形を伴って実施され得ることが、当業者には明らかなはずである。本明細書は、従って、限定するものでなく例証するものとしてみなされる。
【0096】
種々の実施形態を説明するために、以下の実施例が提供される。これらの実施例は、任意の適切な方法で相互に依存し得る。
【0097】
例1:装置であって、本装置は、複数の加算器または減算器であり、それぞれが、入力電圧、対応する初期重み付け電圧、および、対応する調整電圧を受け取る、加算器または減算器と、複数のバッファであり、各バッファが、前記複数の加算器または減算器のうちの加算器または減算器に結合されている、バッファと、複数の振動子であり、各振動子が、前記複数のバッファのうちの個々のバッファの出力に結合されている、振動子と、前記複数の振動子に結合された平均器であり、前記複数の振動子の出力の周波数の平均である周波数を伴う信号を生成する、平均器と、複数の周波数検出器であり、各周波数検出器は、個々の振動子および平均器に結合されており、かつ、前記複数の加算器または減算器のうちの個々の加算器または減算器にも結合されている、周波数検出器と、を含む。
【0098】
例2:各振動子は、電流制御または電圧制御される振動子である、例1に記載の装置。
【0099】
例3:各バッファは、増幅器を備える電圧バッファである、例1に記載の装置。
【0100】
例4:前記装置は、前記平均器の出力に結合されたピーク検出器を含む、例1に記載の装置。
【0101】
例5:各周波数検出器は、前記周波数の平均と、前記個々の振動子からの信号の周波数との差を示す信号を生成する、例1に記載の装置。
【0102】
例6:各加算器または減算器の出力は、訓練された重み付けである、例1に記載の装置。
【0103】
例7:前記装置は、前記訓練された重み付けを保管するためのメモリを含む、例6に記載の装置。
【0104】
例8:各加算器または減算器は、入力電圧から、対応する初期重み付け電圧および対応する調整電圧を減算する、例1に記載の装置。
【0105】
例9:各周波数検出器は、個々の加算器または減算器に結合されているチャージポンプに結合される、例1に記載の装置。
【0106】
例10:各加算器または減算器は、アナログ加算器またはアナログ減算器である、例1に記載の装置。
【0107】
例11:装置であって、本装置は、複数のデジタル加算器または減算器であり、それぞれが、入力コード電圧、対応する初期重み付けコード、および、対応する調整コードを受け取る、デジタル加算器または減算器と、複数のデジタル-アナログ変換器(DAC)であり、各DACが、前記複数のデジタル加算器または減算器のうちの個々のデジタル加算器または減算器に結合されている、DACと、複数の振動子であり、各振動子が、前記DACのうちの個々のDACの出力に結合されている、振動子と、前記複数の振動子に結合された平均器であり、前記複数の振動子の出力の周波数の平均である周波数を伴う信号を生成する、平均器と、複数の周波数検出器であり、各周波数検出器は、個々の振動子および平均器に結合されている、周波数検出器と、複数のアナログ-デジタル変換器(ADC)であり、各ADCが、個々のデジタル加算器または減算器に結合されている、ADCと、を含む。
【0108】
例12:各周波数検出器は、個々のADCに結合されているチャージポンプに結合される、例11に記載の装置。
【0109】
例13:各デジタル加算器または減算器の出力は、訓練された重み付けである、例11に記載の装置。
【0110】
例14:前記装置は、前記訓練された重み付けを保管するためのメモリを含む、例13に記載の装置。
【0111】
例15:各振動子は、電流制御または電圧制御される振動子である、例11に記載の装置。
【0112】
例16:前記装置は、前記平均器の出力に結合されたピーク検出器を含む、例1に記載の装置。
【0113】
例17:システムであって、本システムは、メモリと、ニューラルネットワーク回路を有するプロセッサであり、複数の加算器または減算器であり、それぞれが、入力電圧、対応する初期重み付け電圧、および、対応する調整電圧を受け取る、加算器または減算器と、複数のバッファであり、各バッファが、前記複数の加算器または減算器のうちの加算器または減算器に結合されている、バッファと、複数の振動子であり、各振動子が、前記複数のバッファのうちの個々のバッファの出力に結合されている、振動子と、前記複数の振動子に結合された平均器であり、前記複数の振動子の出力の周波数の平均である周波数を伴う信号を生成する、平均器と、複数の周波数検出器であり、各周波数検出器が、個々の振動子および前記平均器に結合されており、かつ、前記複数の加算器または減算器のうちの個々の加算器または減算器にも結合されている、周波数検出器と、を含む、プロセッサと、および、前記プロセッサが別の装置と通信することを可能にする無線インターフェイスと、を含む。
【0114】
例18:各加算器または減算器の出力は、訓練された重み付けである、例17に記載のシステム。
【0115】
例19:メモリは、訓練された重み付けを保管する、例18に記載のシステム。
【0116】
例20:前記ニューラルネットワーク回路は、前記平均器の出力に結合されたピーク検出器を備える、例17に記載のシステム。
【0117】
要約が提供され、読者は、本技術開示の性質および要旨を読者が確認することができる。要約は、特許請求の範囲または意味を限定するために使用されないという理解の下で提出されている。以下の請求項は、詳細な説明に組み込まれており、各請求項は、それ自体が別個の実施形態として存在する。
図1
図2
図3
図4
図5
図6
図7