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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-533118異なる精度によるビットごとの乗算のための混合信号回路
<>
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図1A
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図1B
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図2
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図3A
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図3B
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図4
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図5
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図6
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図7
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図8
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図9
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図10
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図11
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図12
  • 特表-異なる精度によるビットごとの乗算のための混合信号回路 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】異なる精度によるビットごとの乗算のための混合信号回路
(51)【国際特許分類】
   G06G 7/60 20060101AFI20240905BHJP
   G06F 17/10 20060101ALI20240905BHJP
   G06N 3/063 20230101ALI20240905BHJP
   G06G 7/16 20060101ALI20240905BHJP
   G06G 7/14 20060101ALI20240905BHJP
   G06G 7/184 20060101ALI20240905BHJP
【FI】
G06G7/60
G06F17/10 S
G06N3/063
G06G7/16
G06G7/14
G06G7/184
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024513738
(86)(22)【出願日】2022-09-13
(85)【翻訳文提出日】2024-02-29
(86)【国際出願番号】 IB2022058613
(87)【国際公開番号】W WO2023042068
(87)【国際公開日】2023-03-23
(31)【優先権主張番号】17/474,843
(32)【優先日】2021-09-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】アグラワル、アンクル
(72)【発明者】
【氏名】カン、ミング
(72)【発明者】
【氏名】キム、キュ-ヒョン
(72)【発明者】
【氏名】カー、モノディープ
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB71
(57)【要約】
装置は少なくとも1つのプロセッサと、命令コードを含む少なくとも1つのメモリとを含み、この命令コードは、少なくとも1つのプロセッサによって、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うことと、ビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うこととを装置に少なくとも行わせるように構成される。
【選択図】図7
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサと、
命令コードを含む少なくとも1つのメモリとを含む装置であって、
前記少なくとも1つのメモリおよび前記命令コードが、前記少なくとも1つのプロセッサによって、
第1および第2のデジタル入力のビットごとの乗算の第1の部分を、第1の精度で行うことと、
前記第1および第2のデジタル入力の前記ビットごとの乗算の少なくとも第2の部分を、前記第1の精度とは異なる第2の精度で行うことと
を前記装置に少なくとも行わせるように構成される、装置。
【請求項2】
前記第1および第2のデジタル入力の前記ビットごとの乗算が、前記第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの計算を含み、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第1の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットの第1のサブセットを含み、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第2の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットの第2のサブセットを含む、請求項1に記載の装置。
【請求項3】
前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットが、前記第1および第2のデジタル入力の前記ビットごとのドット積のnの重み付きの和を含み、前記第1の精度で行われる前記ビットごとの乗算の前記第1の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積のkの最高の重み付きの和の計算を含み、前記第2の精度で行われる前記ビットごとの乗算の前記第2の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の残りn-kの重み付きの和の少なくとも一部分の計算を含む、請求項2に記載の装置。
【請求項4】
kの値が、前記第1および第2のデジタル入力の前記ビットごとの乗算の異なる項の付加ノイズ寄与の決定に少なくとも部分的に基づいて選択される、請求項3に記載の装置。
【請求項5】
前記第1および第2のデジタル入力の前記ビットごとの乗算が、ビットごとのドット積総和ユニットのセットのうちの1つを用いて計算され、前記第1の精度が、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第1の部分を行う前記ビットごとのドット積総和ユニットのセットの第1のサブセットに対する第1のタイプのハードウェアを用いて提供され、前記第2の精度が、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第2の部分を行う前記ビットごとのドット積総和ユニットのセットの第2のサブセットに対する、前記第1のタイプのハードウェアとは異なる第2のタイプのハードウェアを用いて提供される、請求項1に記載の装置。
【請求項6】
前記ビットごとのドット積総和ユニットのセットの各々がポップカウンタを含み、前記ビットごとのドット積総和ユニットのセットの前記第1のサブセットの前記ポップカウンタが第1の分解能を有し、前記ビットごとのドット積総和ユニットのセットの前記第2のサブセットの前記ポップカウンタが前記第1の分解能とは異なる第2の分解能を有する、請求項5に記載の装置。
【請求項7】
前記ビットごとのドット積総和ユニットのセットの各々が、コンパレータを含む逐次近似レジスタ・アナログ・デジタル・コンバータを使用して実装されるポップカウンタを含み、前記ビットごとのドット積総和回路の2つ以上のインスタンスのセットの前記第1のサブセットの前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路において使用される第1のタイプのコンパレータが、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第2のサブセットの前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路において使用される第2のタイプのコンパレータとは異なる、請求項5に記載の装置。
【請求項8】
前記第1のタイプのコンパレータが第1のノイズ・プロファイルを有し、かつ前記第2のタイプのコンパレータが前記第1のノイズ・プロファイルとは異なる第2のノイズ・プロファイルを有すること、および
前記第1のタイプのコンパレータが第1のオフセット・キャンセル精度を有し、かつ前記第2のタイプのコンパレータが前記第1のオフセット・キャンセル精度とは異なる第2のオフセット・キャンセル精度を有すること
のうちの少なくとも一方である、請求項7に記載の装置。
【請求項9】
前記ビットごとのドット積総和ユニットのセットの各々が、複数のコンデンサを含む逐次近似レジスタ・アナログ・デジタル・コンバータを使用して実装されるポップカウンタを含み、前記ビットごとのドット積総和ユニットのセットの前記第1のサブセットの前記逐次近似レジスタ・アナログ・デジタル・コンバータにおいて使用される前記複数のコンデンサがそれぞれの第1のサイズを有し、前記ビットごとのドット積総和ユニットのセットの前記第2のサブセットの前記逐次近似レジスタ・アナログ・デジタル・コンバータにおいて使用される前記複数のコンデンサが前記第1のサイズとは異なるそれぞれの第2のサイズを有する、請求項5に記載の装置。
【請求項10】
前記ビットごとのドット積総和ユニットのセットの各々が、複数のコンデンサを各々含む逐次近似レジスタ・アナログ・デジタル・コンバータを使用して実装される1つ以上のポップカウンタを含み、前記ビットごとのドット積総和ユニットのセットの前記第1のサブセットが、第1の数の入力を合計する複数の追加のコンデンサに結合された前記逐次近似レジスタ・アナログ・デジタル・コンバータの単一のインスタンスを含み、前記ビットごとのドット積総和ユニットのセットの前記第2のサブセットの各々が、前記第1の数の入力よりも少ない第2の数の入力を各々合計する前記逐次近似レジスタ・アナログ・デジタル・コンバータの2つ以上のインスタンスを含む、請求項5に記載の装置。
【請求項11】
第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うステップと、
前記第1および第2のデジタル入力の前記ビットごとの乗算の少なくとも第2の部分を前記第1の精度とは異なる第2の精度で行うステップとを含む方法であって、
前記方法が、命令コードを実行するように構成された処理回路によって実行される、方法。
【請求項12】
前記第1および第2のデジタル入力の前記ビットごとの乗算が、前記第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの計算を含み、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第1の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットの第1のサブセットを含み、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第2の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットの第2のサブセットを含む、請求項11に記載の方法。
【請求項13】
実行可能な命令コードが具現化された非一時的コンピュータ可読記憶媒体を含む製造物であって、前記実行可能な命令コードがプロセッサによって実行されるときに、
第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うステップと、
前記第1および第2のデジタル入力の前記ビットごとの乗算の少なくとも第2の部分を前記第1の精度とは異なる第2の精度で行うステップと
を前記プロセッサに行わせる、製造物。
【請求項14】
前記第1および第2のデジタル入力の前記ビットごとの乗算が、前記第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの計算を含み、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第1の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットの第1のサブセットを含み、前記第1および第2のデジタル入力の前記ビットごとの乗算の前記第2の部分が、前記第1および第2のデジタル入力の前記ビットごとのドット積の前記重み付きの和のセットの第2のサブセットを含む、請求項13に記載の製造物。
【請求項15】
第1および第2のベクトルのバイナリ乗算を行うように構成された積和ユニットを含むシステムであって、
前記積和ユニットが、前記第1および第2のベクトルの一部分のビットごとの乗算を行ってデジタル出力を生成するように各々構成された2つ以上のビットごとのドット積総和ユニットのセットを含み、前記第1および第2のベクトルの前記ビットごとの乗算が、前記第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの計算を含み、
前記2つ以上のビットごとのドット積総和ユニットのセットの各々のビットごとのドット積総和ユニットが、逐次近似レジスタ・アナログ・デジタル・コンバータ・ユニットのインスタンスに結合されたビットごとのドット積総和ユニットの少なくとも1つのインスタンスを含み、前記逐次近似レジスタ・アナログ・デジタル・コンバータ・ユニットが、前記ドット積総和ユニットのアナログ出力を前記デジタル出力の少なくとも一部分に変換するように構成され、
第1の精度を有する前記2つ以上のビットごとのドット積総和ユニットのセットの第1のサブセットが、前記第1および第2のベクトルの前記ビットごとの乗算の第1の部分を計算するために使用され、前記第1の精度とは異なる第2の精度を有する前記2つ以上のビットごとのドット積総和ユニットのセットの第2のサブセットが、前記第1および第2のベクトルの前記ビットごとの乗算の第2の部分を計算するために使用される、システム。
【請求項16】
前記第1および第2のベクトルの前記ビットごとの乗算が、前記第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの計算を含み、前記第1および第2のベクトルの前記ビットごとの乗算の前記第1の部分が、前記第1および第2のベクトルの前記ビットごとのドット積の前記重み付きの和のセットの第1のサブセットを含み、前記第1および第2のベクトルの前記ビットごとの乗算の前記第2の部分が、前記第1および第2のベクトルの前記ビットごとのドット積の前記重み付きの和のセットの第2のサブセットを含む、請求項15に記載のシステム。
【請求項17】
前記システムが人工知能システムの一部として実装される、請求項15に記載のシステム。
【請求項18】
前記システムが1つ以上の集積回路の一部として実装される、請求項15に記載のシステム。
【請求項19】
第1および第2のベクトルのバイナリ乗算を行うように構成された積和回路を含むデバイスであって、
前記積和回路が、前記第1および第2のベクトルの一部分のビットごとの乗算を行ってデジタル出力を生成するように各々構成されたビットごとのドット積総和回路の2つ以上のインスタンスのセットを含み、
前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記ビットごとのドット積総和回路の各インスタンスが、逐次近似レジスタ・アナログ・デジタル・コンバータ回路の少なくとも1つのインスタンスに結合されたビットごとのドット積計算回路の少なくとも1つのインスタンスを含み、前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路が、前記ビットごとのドット積計算回路のアナログ出力を前記デジタル出力の少なくとも一部分に変換するように構成され、
第1の精度を有する前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの第1のサブセットが、前記第1および第2のベクトルの前記ビットごとの乗算の第1の部分を計算するために使用され、前記第1の精度とは異なる第2の精度を有する前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの第2のサブセットが、前記第1および第2のベクトルの前記ビットごとの乗算の第2の部分を計算するために使用される、デバイス。
【請求項20】
前記第1および第2のベクトルの前記ビットごとの乗算が、前記第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの計算を含み、前記第1および第2のベクトルの前記ビットごとの乗算の前記第1の部分が、前記第1および第2のベクトルの前記ビットごとのドット積の前記重み付きの和のセットの第1のサブセットを含み、前記第1および第2のベクトルの前記ビットごとの乗算の前記第2の部分が、前記第1および第2のベクトルの前記ビットごとのドット積の前記重み付きの和のセットの第2のサブセットを含む、請求項19に記載のデバイス。
【請求項21】
前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第1のサブセットが第1の分解能を有し、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスの前記第2のサブセットが前記第1の分解能とは異なる第2の分解能を有する、請求項19に記載のデバイス。
【請求項22】
前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの各々が複数の論理ANDゲートを含み、前記複数の論理ANDゲートの各々が入力として前記第1のベクトルの第1のベクトル要素と、前記第2のベクトルの第2のベクトル要素とを受信し、前記複数の論理ANDゲートのそれぞれの出力が複数のコンデンサの第1のプレートに結合され、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第1のサブセットの各々における前記複数のコンデンサがそれぞれの第1のサイズを有し、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第2のサブセットの各々における前記複数のコンデンサが前記第1のサイズとは異なるそれぞれの第2のサイズを有する、請求項19に記載のデバイス。
【請求項23】
前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの各々の前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路がコンパレータを含み、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第1のサブセットの前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路において使用される第1のタイプのコンパレータが、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第2のサブセットの前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路において使用される第2のタイプのコンパレータとは異なる、請求項19に記載のデバイス。
【請求項24】
前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第1のサブセットにおける前記ビットごとのドット積総和回路の各インスタンスが、前記ビットごとのドット積計算回路および前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路の少なくとも2つのインスタンスを含み、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスの前記第2のサブセットにおける前記ビットごとのドット積総和回路の各インスタンスが、追加のコンデンサ・バンクに結合された前記ビットごとのドット積計算回路および前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路の単一のインスタンスを含む、請求項19に記載のデバイス。
【請求項25】
前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第1のサブセットにおける前記ビットごとのドット積総和回路の各インスタンスの前記ビットごとのドット積計算回路および前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路の前記少なくとも2つのインスタンスの各々が、第1の数の入力を合計し、前記ビットごとのドット積総和回路の前記2つ以上のインスタンスのセットの前記第2のサブセットにおける前記ビットごとのドット積総和回路の各インスタンスの前記追加のコンデンサ・バンクに結合された前記ビットごとのドット積計算回路および前記逐次近似レジスタ・アナログ・デジタル・コンバータ回路の前記単一のインスタンスの各々が、前記第1の数の入力よりも大きい第2の数の入力を合計する、請求項24に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
この分野はエレクトロニクスに関し、より具体的には混合信号回路に関する。
【発明の概要】
【0002】
混合信号回路は、アナログ信号ドメインおよびデジタル信号ドメインの両方で動作する。したがって、少なくともいくつかの計算を行うために、通常はアナログ・デジタル変換(ADC:analog-to-digital conversion)が必要とされる。しかし、ADC変換エネルギは混合信号回路設計における制限因子となり得る。
本発明の実施形態は、混合信号回路において異なる精度でビットごとの乗算の異なる部分を行うための改善された技術を提供する。
【0003】
一実施形態において、装置は少なくとも1つのプロセッサと、命令コードを含む少なくとも1つのメモリとを含む。少なくとも1つのメモリおよび命令コードは、少なくとも1つのプロセッサによって、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うことと、第1および第2のデジタル入力のビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うこととを装置に少なくとも行わせるように構成される。
【0004】
別の実施形態において、積和演算を行う方法は、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うステップと、第1および第2のデジタル入力のビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うステップとを含む。この方法は、命令コードを実行するように構成された処理回路によって実行される。
【0005】
別の実施形態において、製造物は、実行可能な命令コードが具現化された非一時的コンピュータ可読記憶媒体を含み、この実行可能な命令コードはプロセッサによって実行されるときに、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うステップと、第1および第2のデジタル入力のビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うステップとをプロセッサに行わせる。
【0006】
別の実施形態において、システムは、第1および第2のベクトルのバイナリ乗算を行うように構成された積和ユニットを含む。積和ユニットは、第1および第2のベクトルの一部分のビットごとの乗算を行ってデジタル出力を生成するように各々構成された2つ以上のビットごとのドット積総和(dot-product summation)ユニットのセットを含む。2つ以上のビットごとのドット積総和ユニットのセットの各々のビットごとのドット積総和ユニットは、逐次近似レジスタ・アナログ・デジタル・コンバータ・ユニットのインスタンスに結合されたビットごとのドット積総和ユニットの少なくとも1つのインスタンスを含み、逐次近似レジスタ・アナログ・デジタル・コンバータ・ユニットは、ドット積総和ユニットのアナログ出力をデジタル出力の少なくとも一部分に変換するように構成される。第1の精度を有する2つ以上のビットごとのドット積総和ユニットのセットの第1のサブセットは、第1および第2のベクトルのビットごとの乗算の第1の部分を計算するために使用され、第1の精度とは異なる第2の精度を有する2つ以上のビットごとのドット積総和ユニットのセットの第2のサブセットは、第1および第2のベクトルのビットごとの乗算の第2の部分を計算するために使用される。
【0007】
別の実施形態において、デバイスは、第1および第2のベクトルのバイナリ乗算を行うように構成された積和回路を含む。積和回路は、第1および第2のベクトルの一部分のビットごとの乗算を行ってデジタル出力を生成するように各々構成されたビットごとのドット積総和回路の2つ以上のインスタンスのセットを含む。ビットごとのドット積総和回路の2つ以上のインスタンスのセットのビットごとのドット積総和回路の各インスタンスは、逐次近似レジスタ・アナログ・デジタル・コンバータ回路の少なくとも1つのインスタンスに結合されたビットごとのドット積計算回路の少なくとも1つのインスタンスを含み、逐次近似レジスタ・アナログ・デジタル・コンバータ回路は、ビットごとのドット積計算回路のアナログ出力をデジタル出力の少なくとも一部分に変換するように構成される。第1の精度を有するビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットは、第1および第2のベクトルのビットごとの乗算の第1の部分を計算するために使用され、第1の精度とは異なる第2の精度を有するビットごとのドット積総和回路の2つ以上のインスタンスのセットの第2のサブセットは、第1および第2のベクトルのビットごとの乗算の第2の部分を計算するために使用される。
【0008】
本明細書に記載される実施形態のこれらおよびその他の特徴および利点は、添付の図面および以下の詳細な説明からより明らかになるだろう。
【図面の簡単な説明】
【0009】
図1A】1つ以上の例示的実施形態が実装され得るニューラル・ネットワーク・アクセラレータを示す図である。
図1B】1つ以上の例示的実施形態が実装され得るニューラル・ネットワーク・アクセラレータにおいて行われる計算の数学的表現を示す図である。
図2】1つ以上の例示的実施形態が実装され得る混合信号積和回路を示す図である。
図3A】1つ以上の例示的実施形態が実装され得るドット積エンジンを示す図である。
図3B】1つ以上の例示的実施形態が実装され得るドット積エンジンを示す図である。
図4】1つ以上の例示的実施形態が実装され得るドット積計算に関連する代数表現を示す図である。
図5】例示的実施形態によるドット積計算の異なる項の付加ノイズ寄与に対するビット位置の影響係数のプロットを示す図である。
図6】例示的実施形態による異なるドット積エンジンに対して異なるハードウェア・アーキテクチャを使用する混合信号積和回路を示す図である。
図7】例示的実施形態によるドット積エンジンのアーキテクチャを示す図である。
図8】例示的実施形態による異なるドット積エンジンに対して異なるハードウェア・アーキテクチャを使用する混合信号積和回路を示す図である。
図9】例示的実施形態による低ノイズ混合信号積和演算を行うための方法を示す図である。
図10】例示的実施形態による人工知能システムの例示的実装を示す図である。
図11】例示的実施形態による例示的プロセッサ・システムを示す図である。
図12】例示的実施形態によるクラウド・コンピューティング環境を示す図である。
図13】例示的実施形態による抽象化モデル・レイヤを示す図である。
【発明を実施するための形態】
【0010】
添付の図面に示されたさまざまな特徴は、縮尺どおりに描かれていない模式図であることが理解されるべきである。さらに、図面全体にわたって、同じかまたは類似の特徴、エレメント、または構造を示すために同じかまたは類似の参照番号が用いられており、よって各々の図面に対して、その同じかまたは類似の特徴、エレメント、または構造の詳細な説明は繰り返さない。さらに、本明細書において使用される「例示的(exemplary)」および「例示的(illustrative)」という用語は、「実施例、インスタンス、または例示の働きをすること」を意味する。本明細書において「例示的(exemplary)」または「例示的(illustrative)」と記載される任意の実施形態または設計は、他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。
【0011】
さらに、「ように構成される(configured to)」という語句が、1つ以上の機能を行うか、または別様に何らかの機能を提供する回路(circuit)(本明細書において「回路(circuitry)」という用語が交換可能に用いられることがある)、構造、エレメント、またはコンポーネントなどと共に用いられるとき、この語句は、その回路、構造、エレメント、またはコンポーネントなどがハードウェア、ソフトウェア、および/またはその組み合わせ、ならびにハードウェアを含む実装において実装される実施形態を包含することが意図されることが理解されるべきであり、そのハードウェアは個別の回路エレメント(例、トランジスタ、インバータ、論理ゲートなど)、プログラマブル・エレメント、処理デバイス、1つ以上の集積回路もしくはその他のタイプの回路またはその両方、および/あるいはその組み合わせを含んでもよい。よって、単なる例として、ある回路、構造、エレメント、コンポーネントなどが特定の機能を提供するように構成されると定義されるとき、それはその回路、構造、エレメント、コンポーネントなどが動作状態にあるとき(例、システムに接続されるかもしくは別様に展開されるとき、電源を入れられるとき、入力を受信するとき、または出力を生成するとき、あるいはその組み合わせ)に特定の機能を行うことを可能にするエレメント、処理デバイス、集積回路もしくはその他のタイプの回路またはその両方を含む実施形態を包含すること、およびその回路、構造、エレメント、コンポーネントなどが非動作状態にあるとき(例、システムに接続されることも別様に展開されることもないとき、電源を入れられていないとき、入力を受信していないとき、または出力を生成していないとき、あるいはその組み合わせのとき)、または部分的な動作状態にあるときの実施形態を包含することが意図されるが、それに限定されない。
【0012】
ニューラル・ネットワーク・モデルは、人工知能システムにおいて最も広く用いられるタイプの機械学習(ML:machine learning)アルゴリズムの1つである。たとえば、ニューラル・ネットワーク・モデルを用いて、人間の脳が動作する態様を模倣するプロセスを通じて、データのセットの基礎的な関係もしくはパターンまたはその両方を認識し得る。ニューラル・ネットワーク・モデルは、最初にトレーニング・データ・セットを用いてトレーニングされ(トレーニング段階)、次いでトレーニング済のニューラル・ネットワーク・モデルを用いて、ターゲット・データ・セットにおける関係もしくはパターンまたはその両方が認識される(推論段階)。
【0013】
ニューラル・ネットワーク・モデルを実行する多くのワークロードは、多数の行列乗算を必要とし、行列乗算は通常、積和(MAC:multiply-accumulate)演算を伴う。一般的に累積演算は、デジタル信号ドメインにおいて行われるときにはエネルギ効率が低いが、アナログ信号ドメインにおいてはそれよりもかなりエネルギ効率が高いことが認識されている。このため、乗算に対するデジタル信号ドメイン技術と、累積に対するアナログ信号ドメイン技術とを組み合わせることによって、より効率的な積和演算を達成できることがさらに認識されている。アナログおよびデジタル処理を組み合わせてMAC演算を行う回路は、混合信号MAC(MS-MAC:mixed signal MAC)回路と呼ばれる。
【0014】
図1Aは、1つ以上の例示的実施形態が実装され得るニューラル・ネットワーク・アクセラレータ100を示す。いくつかの例示的実施形態において、ニューラル・ネットワーク・アクセラレータ100は、1つ以上のグラフィックス処理ユニット(GPU:graphics processing units)、1つ以上のフィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate arrays)、1つ以上の特定用途向け集積回路(ASIC:application-specific integrated circuits)、1つ以上のマルチコア中央処理ユニット(CPU:central processing units)、もしくはその他のタイプの回路、またはその組み合わせにおいて実装される。例として、ニューラル・ネットワーク・アクセラレータ100またはその一部分は、実行可能なプログラム・コード(例、命令コード、コンピュータ・プログラム・コードなど)によってプログラムされた回路(例、回路、プロセッサ、メモリなど)を含んで特定の目的のためにカスタマイズされたか、または特定の目的のために別様に構成された上記のデバイスの1つ以上を含み得る。単なる例として、特定の目的は、人工知能システム(例、機械学習アルゴリズム)の実装および実行であり得る。加えて、ニューラル・ネットワーク・アクセラレータ100は、たとえばニューロモルフィック・コンピュータ・システムなどのシステム・オン・チップ(SoC:system-on-chip)の一部であってもよい。しかし、ニューラル・ネットワーク・アクセラレータ100は、こうした人工知能ベースの意思決定による利益を受け得るさまざまな他のアプリケーションにおいて用いられ得る。
【0015】
示されるとおり、ニューラル・ネットワーク・アクセラレータ100は、ニューラル・ネットワークの畳み込みレイヤおよび完全接続レイヤに対応する計算を行うように構成された行列乗算エンジン102を含み、この計算は通常、メモリ104からのデータに対する低精度整数計算を用いて行われ得る。次いで、その結果は出力先入れ先出し(FIFO:first-in-first-out)データ構造106を介して特殊関数ユニット108に転送され、特殊関数ユニット108は、たとえばバッチ正規化、シグモイド関数、整流線形ユニット(ReLU:rectified linear unit)関数、およびSoftMax関数などであるがそれに限定されない1つ以上の活性化関数に対応する計算を行う。特殊関数ユニット108における計算は通常、アクセラレータにマップされるニューラル・ネットワークの精度を保存するために高精度で行われる必要がある。
【0016】
しかし、行列乗算はニューラル・ネットワーク・ワークロードにおける計算の大部分を表し、よって行列乗算エンジン102はニューラル・ネットワーク・アクセラレータ100によって消費される総電力のうちのかなりのパーセンテージを消費し得ることが認識される。さらに、行列乗算エンジン102において行われる低精度整数計算はアナログ・ドメインにおいて少なくとも部分的に動作することによって行われ得るため、計算のすべてをデジタル回路を使用するデジタル・ドメインにおいて行うアクセラレータと比較して、総電力消費がより低いアクセラレータがもたらされることが認識される。
【0017】
図1Bは、図1Aのニューラル・ネットワーク・アクセラレータ100における1つ以上の積和演算によってベクトル・ドット積(さらに説明されるとおり、本明細書においては内積とも呼ばれる)を計算することを可能にするための、例示的実施形態による数学的表現110を示す。図1Bの例において、左側の方程式は、各々64のサイズの2つのベクトルxおよびwのドット積を数学的に表しており、ここで要素xおよびwの各々は4ビットを有する。各々の4ビット掛ける4ビット積(4b*4b)が、16の1ビット掛ける1ビット積(1b*1b)に分割される。右側の方程式は1b*1b乗算を数学的に表しており、ここでxi,mおよびwi,nの各々は1ビットを有する。
【0018】
最初にビットごとの積が行われ、次いでビットの重みに基づいて総和が行われる。本質的に、4ビット掛ける4ビット項が16の1ビット積に分割され、この1ビット積が累積(合計)され、次いで外部総和によって2の累乗によって適切にスケーリングされて、総計の和が生成される。電力の考慮に基づいて、1b*1b乗算はデジタル・ドメインで行われ、1b*1b乗算の内部総和はアナログ・ドメインで行われ、外部総和はデジタル・ドメインで行われる。内部総和がアナログ・ドメインで行われるのは、ここではアナログ回路がデジタル回路よりも電力の点で性能が高いためである。16通りの加算は、アナログ・ドメインで行われても利点がほとんどないため、デジタル・ドメインで行われてもよい。1つの実施形態例において、内部総和の入力および出力はデジタルである。
【0019】
なお、図1Bは1つの例示的実施形態を表すものであり、よって他の実施形態はアナログおよびデジタル・ドメイン計算の異なる分割を用い得る。さらに、数学的表現110として示されるドット積計算は、説明を容易にするための例として意図されていることも認識されるべきである。よって、要素xおよびwが異なるビット数を有し、かつ一方のベクトルが他方のベクトルと比較して異なる要素数を有するときのベクトルxおよびwのドット積の実装は、本明細書において提供される教示に基づく代替的な実施形態によってサポートされる。
【0020】
図2は、例示的実施形態による整数行列乗算を行うための混合信号積和回路200を示す。当然のことながら、混合信号積和回路200の一部またはすべては、いくつかの実施形態において図1の行列乗算エンジン102の一部として実装され得る。示されるとおり、第1のデジタル入力Xの各ビットxと、第2のデジタル入力Wのデジタル重みwを表す対応するビットとが、16の1ビット(1-b)ドット積エンジン210-1、210-2...、210-15、210-16(本明細書において共にドット積エンジン210と呼ばれる)のうちの1つに入力される。以下においてさらに説明されるとおり、ドット積エンジン210はバイナリ乗算演算において生じる1の数を有効にカウントするため、カウンタと呼ばれ得る。一例において、第1のデジタル入力Xは4ビットの要素によって表される活性化関数を表すのに対し、第2のデジタル入力Wは4ビットの要素によって表される重みを表す。ドット積エンジン210-1、210-2...、210-15、210-16によって、デジタル部分和220-1、220-2...、220-15、220-16(本明細書において共に部分和220と呼ばれる)がそれぞれ出力される。デジタル部分和220はデジタル低減回路230に入力され、デジタル低減回路230は外部総和を行ってMS-MAC出力を生成する。
【0021】
図3Aおよび図3Bは、例示的実施形態によるドット積エンジン210によって行われる内積総和のために構成されたMS-MAC回路の例を示す。図3Aおよび図3Bの例示的実施形態において、入力ベクトルXおよびWの各々は63の要素を含み、各要素は4ビットを含むことが想定される。一般的にMS-MAC回路は、デジタル論理を用いるデジタル信号ドメインにおいて乗算を行い、電荷共有コンデンサを用いるアナログ・ドメインにおいて累積を行う。MS-MAC回路は効果的に、デジタル・ドメインにおいてデジタル入力を乗算し、アナログ・ドメインにおいて乗算の結果を累積し、累積された結果に基づいてバイナリ重み付きデジタル・コードを生成する。バイナリ重み付きデジタル・コードのビット数は、MS-MAC回路によって行われるアナログ・デジタル変換動作のアナログ分解能または量子化レベル(p)と呼ばれる。63ビット入力のセットに対する固有のバイナリ重み付きコードを生成するためのpは6、すなわち、D[0:5]である。図3Aおよび図3B全体にわたって、同様または類似の機能を提供する回路エレメントは、同じまたは類似の参照番号を使用する。
【0022】
より具体的には、図3Aに示されるとおり、MS-MAC回路300はアナログ・ドット積エンジン302と、逐次近似レジスタ(SAR:successive approximate register)ADC304とを含む。示されるとおり、アナログ・ドット積エンジン302はSAR ADC304のコンパレータ310に出力VINを提供し、ここで出力VINはアナログ・ドット積エンジン302によって生成される重みの和Σxに比例する。アナログ・ドット積エンジン302は入力x[62:0]およびw[62:0]を受信し、出力VIN∝Σxを生成する。コンパレータ310の出力は、SARコントローラ306に入力される。SARコントローラ306はバイナリ重み付きコードD[0:5]を出力し、この出力はコンデンサ312のセット(それぞれキャパシタンス値C、2C、4C、8C、16C、32Cを有する)に提供される。当然のことながら、バイナリ重み付きコードD[0:5]のビットはそれぞれ、コンデンサ312のセットに結合される(たとえば、最上位ビット(MSB:most significant bit)から最下位ビット(LSB:least significant bit)へ)。6ビット量子化に対して、SARコントローラ306のバイナリ重み付き出力のMSB(D5)は32Cコンデンサに結合され、次のビット(D4)は16Cコンデンサに結合され、次のビット(D3)は8Cコンデンサに結合され、次のビット(D2)は4Cコンデンサに結合され、次のビット(D1)は2Cコンデンサに結合され、LSB(D0)は1Cコンデンサに結合される。示されるとおり、SARコントローラ306から出力されるバイナリ重み付きコードD[0:5]は、バッファおよびスイッチ314のセットを通じてコンデンサ312の下部プレートに提供される。SAR ADC304はリセット・スイッチ316も含み、リセット・スイッチ316は開かれたときにコンデンサ312の上部プレートが電気的に浮動するようにする。
【0023】
図3Bは、アナログ・ドット積エンジン302の実装例を示すMS-MAC回路320を示す。図3Bに示されるとおり、アナログ・ドット積エンジン302は63のANDゲート322のセットを含み、各々のANDゲート322は、入力x[62:0]およびw[62:0]の対応するセットの乗算を行う。ANDゲート322の出力(すなわち、x*w、x*w、...、x62*w62)は、リセット・スイッチ324を介してコンデンサ326の下部プレートに結合され、各々のコンデンサ326は同じキャパシタンス値Cを有する。アナログ・ドット積エンジン302は、リセット・スイッチ328をさらに含む。コンデンサ326の上部プレートは、コンパレータ310に出力VIN∝Σxを提供する。
【0024】
例示的実施形態において、混合信号ドメインにおいてドット積
【0025】
【数1】
【0026】
が計算され、ここでXおよびWは低精度(例、4ビット整数INT4)であってもよい。本明細書の他の場所に記載されるとおり、ドット積を計算することは、電力の観点から完全にデジタルの実装よりも有利である。しかし、混合信号の計算はノイズおよびビット・エラーに影響されやすい。本明細書に記載される例示的実施形態は、こうした混合信号ドメインの計算をノイズに対してよりロバストにするための技術を提供する。
【0027】
図4は、ドット積エンジン210によって行われるドット積の計算に関連する代数表現400を示す。アナログ・ドメインにおけるポップカウンタとして例示的に実装されるドット積エンジン210は、64のビットごとの乗算のうちの1(非ゼロ)の数をカウントする。64のビットごとの乗算に対するこのカウントは、次のとおりに表されてもよい。
【0028】
【数2】
【0029】
ここで、2進数(積)は複数のビット位置に分解される。分解後に16の項が生成され、各項はアナログ・ポップカウンタ(例、ドット積エンジン210の1つ)によって計算される。最終出力は、デジタル・バックエンドにおいて(例、シフタおよび加算器によって)計算される。
【0030】
【数3】
【0031】
の計算は例示的にアナログ・ドメインにおいて行われ、
【0032】
【数4】
【0033】
の計算はデジタル・ドメインにおいて行われる。図4に示されるとおり、各々の「ボックス」はアナログ・ポップカウンタ(例、ドット積エンジン210の1つ)に置き換えられてもよい。よって、
【0034】
【数5】
【0035】
の項はドット積エンジン210-1を介して実装されてもよく、
【0036】
【数6】
【0037】
の項はドット積エンジン210-2を介して実装されてもよく、
【0038】
【数7】
【0039】
の項はドット積エンジン210-3を介して実装されてもよく、...
【0040】
【数8】
【0041】
の項はドット積エンジン210-16を用いて実装されてもよい。
【0042】
より具体的に、入力202に64のX’が存在し、入力204に64のW’が存在し、各XおよびWは4ビットの精度を有するために64の乗算(例、積)が行われ、それらの積すべてが加算されるものと考える。さらに、X掛けるW(ここで大文字XおよびWは、これらの各々が4ビットの2進数で表されることを意味する)と呼ばれる、64のうちの1つの乗算を考える。Xは8a+4b+2c+1dと書き換えられてもよく、Wは8p+4q+2r+1sと書き換えられてもよい。よって、X掛けるWは次のとおりになる。
X*W=(8a+4b+2c+1d)(8p+4q+2r+1s)
X*W=64ap+32bp+16cp+8dp+32aq+16bq+8cq+4dq+16ar+8br+4cr+2dr+8as+4bs+2cs+1ds
X*W=64ap+32(bp+aq)+16(cp+bq+ar)+8(dp+cq+br+as)+4(dq+cr+bs)+2(dr+cs)+1ds
よって、異なる項に係数64、32、16、...、1が乗算され、いくつかの重複が存在することが分かる。たとえば、3つの項cp、bq、およびarに同じ係数16が乗算される。2進数に対して、16(=2)による乗算は単純な4ビットのシフトによって達成されてもよい。よって、係数64、32、16、8、4、2、および1による乗算は、<<6、<<5、<<4、<<3、<<2、<<1、および<<0と表されてもよい(ここで「<<」は左のシフトを意味する)。これは、図2図3A、および図3Bに関して上述したデジタル部分和220に示される(例、デジタル部分和220-1は<<6、デジタル部分和220-2および220-3は<<5、デジタル部分和220-4から220-6は<<4、デジタル部分和220-7から220-10は<<3、デジタル部分和220-11から220-13は<<2、デジタル部分和220-14および220-15は<<1、デジタル部分和220-16は<<0)。
【0043】
各々のアナログ・ポップカウンタ(例、ドット積エンジン210)は、ビット位置にかかわらず等しい確率のビット・エラー率(BER:bit error rate)を生成する。最高の重み付きの積和を有するポップカウンタ(たとえば、影響係数64を有する項)
【0044】
【数9】
【0045】
においてビット・エラーが起こるとき、その影響は、最低の重み付きの積和を有するポップカウンタ(例、影響係数1を有する項)
【0046】
【数10】
【0047】
において起こるビット・エラーの64倍大きくなる。たとえば、図2に示される構造において、最高の重み付きの積和は、1-bドット積エンジン210-1およびデジタル部分和220-1に関連付けられ、最低の重み付きの積和は、1-bドット積エンジン210-16およびデジタル部分和220-16に関連付けられる。
【0048】
図5は、各項(例、図4の代数表現400の各項)の影響係数を、それぞれの発生のカウントと共に示すテーブル500を示す。上記で考察されたとおり、ドット積エンジン210を実装するために用いられ得る逐次近似レジスタ(SAR)アナログ・デジタル・コンバータ(ADC:analog-to-digital converter)の特性のため、各々のアナログ・ポップカウンタからの誤差は+/-1程度だけである可能性がある。
【0049】
はi番目の項における付加ノイズであるとするとき、合計ノイズは次の式に従って決定される。
η=X+2X+2X+4X+4X+4X+8X+8X+8X+8X10+16X11+16X12+16X13+32X14+32X15+64X16
ここで、
【0050】
【数11】
【0051】
であり、ここで誤差Eは次の式に従って決定される。
E[X]=0、Var[X]=E[X]-(E[X])=BER
ここでVar[X]はXの分散を示し、BERはビット・エラー率を示す。E[η]=0であり、かつ次の式のとおりとなる。
【0052】
【数12】
【0053】
より高い重み付きの項(例、X16、X15、X14など)が低減されると、合計ノイズに対する非常に大きい影響を及ぼす。たとえば、X16、X15、およびX14の各々が100x低減されるときを考える。この場合は次の式のとおりとなり、
【0054】
【数13】
【0055】
ここで最後の3つの付加ノイズ項は100x低減されるため、寄与を無視できるとみなされる。
【0056】
したがって、MACエンジンをノイズに対してよりロバストにするために、いくつかの実施形態は、異なるドット積エンジン210(例、異なる1-b乗算ポップカウンタ)に対して異なるアーキテクチャを用いる。こうした異なるアーキテクチャは、互いに異なる精度を提供する。より高い精度(よってより少ないノイズ)を有する第1のアーキテクチャをいくつかのドット積エンジン210(例、より高い重み付きの項に対応するもの)に対して用い、相対的により低い精度を有する第2のアーキテクチャを他のドット積エンジン210(例、相対的により低い重み付きの項に対応するもの)に対して用いることによって、全体的な計算精度が増加することがある。
【0057】
以下の記載において、次の2つの異なるタイプのアーキテクチャのみが用いられると想定する。すなわち、3つの最高の重み付きの項に関連するポップカウンタ(例、上記の例における、より高い重み付きの項X16、X15、およびX14に対応するドット積エンジン210-1、210-2、および210-3)に対する第1のタイプのアーキテクチャ、および残りのポップカウンタ(例、相対的により低い重み付きの項X13~Xに対応するドット積エンジン210-4から210-16)に対する第2のタイプのアーキテクチャであり、ここで第1のアーキテクチャは第2のアーキテクチャよりも高い精度を提供する。しかし、他の実装においては、ポップカウンタの異なるサブセットに対して3つ以上の異なるタイプのアーキテクチャ(例、互いに異なる関連精度を有するもの)を用いることも可能であることが認識されるべきである。たとえば、いくつかの実施形態においては、次の3つの異なるタイプのアーキテクチャが用いられる。すなわち、3つの最高の重み付きの項に関連するポップカウンタ(例、上記の例における、より高い重み付きの項X16、X15、およびX14に対応するドット積エンジン210-1、210-2、および210-3)に対する第1のタイプのアーキテクチャ、次の3つの最高の重み付きの項に関連するポップカウンタ(例、上記の例における、中間の重み付きの項X13、X12、およびX11に対応するドット積エンジン210-4、210-5、および210-6)に対する第2のタイプのアーキテクチャ、および残りのポップカウンタ(例、相対的により低い重み付きの項X10~Xに対応するドット積エンジン210-7から210-16)に対する第3のタイプのアーキテクチャであり、ここで第1のアーキテクチャは第2のアーキテクチャよりも高い精度を提供し、第2のアーキテクチャは第3のアーキテクチャよりも高い精度を提供する。異なる精度を提供する異なる数のタイプのアーキテクチャを用いて、異なるアーキテクチャを用いる異なるポップカウンタによって、さまざまな他の例が可能である。
【0058】
異なるタイプのアーキテクチャは、異なる精度(例、ノイズの改善またはBER)をさまざまなやり方で提供してもよく、そのやり方は、最小電圧ステップを効果的に増加することによって信号対ノイズ比(SNR:signal to noise ratio)を改善するより低い分解能のポップカウンタの使用;より低い熱ノイズ(kT/C)およびより低いコンデンサ・ミスマッチを有するより大きいコンデンサの使用;より低いノイズのコンパレータの使用(例、ここではコンパレータのノイズよりもコンパレータ内のトランジスタの熱ノイズが優勢であってもよい);コンパレータにおけるより正確なオフセット・キャンセルの使用;それらの組み合わせなどによって精度を改善することを含むが、それに限定されない。
【0059】
図6は、例示的実施形態による混合信号積和回路600を示し、この混合信号積和回路600は混合信号積和回路200と類似であり、整数行列乗算を行うために使用可能である。当然のことながら、いくつかの実施形態において、混合信号積和回路600の一部またはすべてを図1の行列乗算エンジン102の一部として実装し得る。示されるとおり、第1のデジタル入力Xの各ビットxと、第2のデジタル入力Wのデジタル重みwを表す対応するビットとが、16の1ビット(1-b)ドット積エンジン610-1、610-2...、610-15、610-16(本明細書において共にドット積エンジン610と呼ばれる)のうちの1つに入力される。ドット積エンジン610は、ドット積エンジン210と同様に、バイナリ乗算演算において生じる1の数を有効にカウントするため、カウンタと呼ばれ得る。一例において、第1のデジタル入力Xは4ビットの要素によって表される活性化関数を表すのに対し、第2のデジタル入力Wは4ビットの要素によって表される重みを表す。ドット積エンジン610-1、610-2...、610-15、610-16によって、デジタル部分和620-1、620-2...、620-15、620-16(本明細書において共に部分和620と呼ばれる)がそれぞれ出力される。デジタル部分和620はデジタル低減回路630に入力され、デジタル低減回路630は外部総和を行ってMS-MAC出力を生成する。
【0060】
図2の混合信号積和回路200における各々のドット積エンジン210は同じアーキテクチャを使用することが想定されたのに対し、図6の混合信号積和回路600における異なるドット積エンジン610は、異なるアーキテクチャを使用する。より具体的には、上記の例を続けると、3つのドット積エンジン610-1、610-2、および610-3(それぞれ項の重みx64、x32、およびx32に関連する)は第1のアーキテクチャを使用し、一方で残りのドット積エンジン610-4から610-16(項の重みx16からx1に関連する)は第2のアーキテクチャを使用し、ここで第1のアーキテクチャは第2のアーキテクチャよりも高い精度を提供する。こうした異なる精度は、上述のさまざまな技術を用いて実装されてもよい。
【0061】
いくつかの実施形態において、より低い精度を有するアーキテクチャに量子化ノイズを導入することによって、異なるアーキテクチャに対する異なる精度が達成されてもよい。図7は、追加のコンデンサ・バンク720に接続されたMS-MAC回路700(例、ポップカウンタ)の実装例を示す。MS-MAC回路700および720は、共に「分割」ポップカウンタを実装するものと呼ばれてもよい。ドット積エンジン700は、SARコントローラ706およびコンパレータ710を含む。SARコントローラ706は、x、wからx62、w62のそれぞれの入力のセットを受信するサブセル・コントローラ762-1から762-63のセット(共にサブセル・コントローラ762)を制御する。サブセル・コントローラ762は、スイッチ対764-1から764-62のセット(共にスイッチ対764)に結合された出力によって、デジタル(論理)ANDゲートを実装してもよい。さらに説明されることとなるとおり、スイッチ対764は、SARコントローラ706によって生成された制御入力を介して、MS-MAC回路700が総和動作フェーズとSAR動作フェーズとの間で切り換わることを可能にする。
【0062】
スイッチ対764は、共にコンデンサ766と呼ばれるコンデンサのセット766-1、...、766-63のそれぞれの下部プレートに接続される。各々のコンデンサ766は、同じキャパシタンスC=...=C63を有する。コンデンサ766の上部プレートは、コンパレータ710の第1の入力およびプリチャージ・スイッチ768に接続される。さらに説明されることとなるとおり、プリチャージ・スイッチ768は、制御信号を介してコンデンサ766の上部プレートにコモン・モード電圧VCMを選択的に印加する。コンパレータ710の第2の入力はVCMに接続される。電圧VCMは、コンパレータ710の自然なコモン・モード電圧に設定され、これはコンパレータ710が最良の感度/ノイズ特徴を有すると考えられる電圧である。コンパレータ710の出力は、SARコントローラ706に接続される。SARコントローラ706は、バイナリ重み付きコードD[0:5]を出力する。図7に明示的に示されていないが、データ入力と制御入力とは異なるバッファを通じてバッファされてもよい。SARコントローラ706とコンパレータ710との間のタイミングを同期するために、クロック信号(clk、明示されていない)が用いられてもよく、これはクロック・バッファ(明示されていない)によってバッファされてもよい。
【0063】
示されるとおり、MS-MAC回路700は追加のコンデンサ・バンク720に結合され、追加のコンデンサ・バンク720は、x63、w63からx126、w126のそれぞれの入力のセットを受信するデジタル(論理)ANDまたはNANDゲート763-64、...763-127のセット(共にAND/NANDゲート763)を含む。AND/NANDゲート763は、スイッチ対765-64から765-127のセット(共にスイッチ対765)に結合された出力を有する。スイッチ対765は、コンデンサ767-64、...767-127(共にコンデンサ767)の下部プレートに結合される。コンデンサ767の上部プレートは、スイッチ770を介して結合されることによって、スイッチ770が閉じられるときにそれらが共通ノード772の電圧に寄与するようにされる。さらに説明されることとなるとおり、プリチャージ・スイッチ769は、制御信号を介してコンデンサ767の上部プレートにコモン・モード電圧VCMを選択的に印加する。
【0064】
MS-MAC回路700において、総和の際にはコンデンサ766および767の両方が使用されるのに対し、SAR変換の際にはコンデンサ766のみが使用される。入力総和フェーズの際にはコンデンサ766および767が個別に制御されるのに対し、SAR変換動作の際にはコンデンサ766がバイナリ重み付けされる方式で制御される。
【0065】
第1の動作フェーズ(和)の際には、プリチャージ・スイッチ768および769が閉じられるため、共通ノード772における電圧VSUMはVCMと等しく、コンパレータ710の入力は効果的に電気的に短絡する。同時に、サブセル・コントローラ762およびAND/NANDゲート763によって入力x、wの各対の積が計算され、ここでスイッチ764および765は、サブセル・コントローラ762およびAND/NANDゲート763の論理出力に依存して、コンデンサ766および767の各々の下部プレートが基準電圧(Vdd)または接地(0V)のいずれに帯電されるかを制御する。よって、各コンデンサ766は電荷Q=C(x*w*VDD-VCM)を蓄積する。
【0066】
第2の動作フェーズ(SAR)の際には、最初にスイッチ770が開かれ、次いでプリチャージ・スイッチ768および769が開かれる。これによって、SAR動作フェーズの際には追加のコンデンサ・バンク720が使用されない。プリチャージ・スイッチ768は開かれ、コンデンサ766の上部プレートを接続する共通ノード772は電気的に浮動するようにされる。次に、SARコントローラ706の出力がコンデンサ766の動作構成を制御するように、サブセル・コントローラ762を介してSARコントローラ706の制御出力を通すようにスイッチ対764が構成される。すなわち、このフェーズにおいて、コンデンサ766のセットはバイナリ重み付きキャパシタンスのアレイとして構成され、すなわちコンデンサ766のサブセットは、SARコントローラ706のたとえばLSBからMSBなどの予め定められたビット制御ラインに接続される。それぞれのビット制御ラインは、たとえば6の量子化レベルに対するD[0:5]などの、SARコントローラ706によって生成されるバイナリ重み付き出力(コード)のビットに対応する。すなわち、SAR制御信号がスイッチ対764の対応するスイッチを閉じるとき、所与のコンデンサ766が所与のビット制御ラインに接続される。6ビット量子化に対して、SARコントローラ706のバイナリ重み付き出力のMSB(D5)はコンデンサ766-32から766-63(32コンデンサ)に結合され、次のビット(D4)はコンデンサ766-16から766-31(16コンデンサ)に結合され、次のビット(D3)はコンデンサ766-8から766-15(8コンデンサ)に結合され、次のビット(D2)はコンデンサ766-4から766-7(4コンデンサ)に結合され、次のビット(D1)はコンデンサ766-2および766-3(2コンデンサ)に結合され、LSB(D0)はコンデンサ766-1(1コンデンサ)に結合される。
【0067】
サブセル・コントローラ762による乗算の結果、およびその結果としてコンデンサ766のセットに蓄積される電荷に依存して、出力ビットD[0:5]の各々に対する逐次反復においてコンパレータ710による意思決定が行われる(1または0)。したがって、図7に示される127通りのデータ入力に対する6ビットのバイナリ重み付き出力を生成するために、6回のSAR反復が行われる。
【0068】
図7のMS-MAC回路700によって行われるドット積計算を要約すると、第1の動作フェーズ(第1のサイクル)において、サブセル・コントローラ762およびAND/NANDゲート763は、自身のそれぞれの入力で受信したデータを乗算し、それらの出力はコンデンサ766および767を駆動する。次いで第2の動作フェーズ(第2~第7のサイクル、すなわち6ビットのバイナリ重み付き出力に対応する)において、上記で説明されたとおりに通常のSAR ADC動作が行われる。
【0069】
図7のMS-MAC回路700は、コンパレータ710およびSARコントローラ706に関連する面積および電力を有利に節約し、かつSAR ADCフェーズの際のコンデンサ767における大きい電圧振幅を回避する。
【0070】
図8は、例示的実施形態による混合信号積和回路800を示し、この混合信号積和回路800は混合信号積和回路600と類似であり、整数行列乗算を行うために使用可能である。当然のことながら、いくつかの実施形態において、混合信号積和回路800の一部またはすべてを図1の行列乗算エンジン102の一部として実装し得る。示されるとおり、第1のデジタル入力Xの各ビットxと、第2のデジタル入力Wのデジタル重みwを表す対応するビットとが、ドット積エンジン810-1a、810-1b、810-2a、810-2b、810-3a、810-3b、810-4、810-5、...810-16のセット(本明細書において共にドット積エンジン810と呼ばれる)のうちの1つに入力される。ドット積エンジン810-1a、810-1b、810-2a、810-2b、810-3a、および810-3bは、3つの最高の重み付きの項に対するより高い精度のアーキテクチャを提供し、ドット積エンジン810-4、810-5、...810-16は、残りの相対的により低い重み付きの項に対する相対的により低い精度のアーキテクチャを提供する。ドット積エンジン810-4、810-5、...810-16に対して用いられる相対的により低い精度のアーキテクチャは、図7に関して示されて上述された「分割」ポップカウンタ・アーキテクチャであってもよく、一方でドット積エンジン810-1a、810-1b、810-2a、810-2b、810-3a、および810-3bに対してはより高い精度のアーキテクチャが用いられる。ドット積エンジン810-1aおよび810-1b(共にドット積エンジン810-1)は最高の重み付きの項に対して用いられ、ドット積エンジン810-2aおよび810-2b(共にドット積エンジン810-2)は2番目に高い重み付きの項に対して用いられ、ドット積エンジン810-3aおよび810-3b(共にドット積エンジン810-3)は3番目に高い重み付きの項に対して用いられる。
【0071】
混合信号積和回路800は、4ビットのデジタル入力802(X)および804(W)の128通りの総和を行うように構成される。{1、2、4、8、16}によってスケーリングされる項(例、13の相対的に最低の重み付きの積和)に対しては、ドット積エンジン810-4から810-16において図7の「分割」ポップカウンタ・アーキテクチャが用いられてもよい。ドット積エンジン810-4から810-16において用いられる「分割」ポップカウンタ・アーキテクチャは、最も近い偶数に対してのみ1の数をカウントし得るため、その出力(例、デジタル部分和820-4から820-16)は不正確である(例、ノイズが多い)。しかし、ドット積エンジン810-4から810-16において用いられる分割ポップカウンタ・アーキテクチャは、{32、64}によってスケーリングされる項(例、3つの最高の重み付きの積和)に対して用いられるドット積エンジン810-1から810-3において用いられる「通常」すなわち非分割のポップカウンタよりも電力が低い。これらの項の各々に対して、2つの結果を生成する2つのポップカウンタの間で計算が分割され(例、最高の重み付きの積和に対する820-1aおよび820-1b、2番目に高い重み付きの積和に対する820-2aおよび820-2b、ならびに3番目に高い重み付きの積和に対する820-3aおよび820-3b)、それらの結果が加算器830において合計される。たとえば、820-1aは最高の重み付きの積和に対する最初の63項の和であり、820-1bは最後の63項の和である。
【0072】
全体として、混合信号積和回路800は19のポップカウンタを有する。すなわち、3つの最高の重み付きの積和に関連するドット積エンジン810-1から810-3に対して用いられる6つの63bポップカウンタと、残りの相対的により低い重み付きの積和に関連するドット積エンジン810-4から810-16に対して用いられる13の127b分割ポップカウンタとである。ドット積エンジン810-1から810-3は、63bポップカウンタに基づく6ビット設計を有し、ターゲットBERは10-12である。ドット積エンジン810-4から810-16は6ビット設計において127項を合計し、この6ビット設計は63bポップカウンタ回路を用いるが、図7に関して上述したとおりに追加のコンデンサ・バンクを接続する。より低いオーダのポップカウンタにおいては量子化ノイズが導入されるが、コンパレータ、デジタル・バックエンド、およびSARコントローラによるエネルギの節約が期待される。図8の例において、ドット積エンジン810-1から810-3はより高い精度のアーキテクチャを用い、ドット積エンジン810-4から810-16は相対的により低い精度のアーキテクチャを用いる。重要性の低い計算(例、13の相対的により低い重み付きの積和に対する計算)に対する電力および面積が節約され、一方でより重要な計算(例、3つの最高の重み付きの積和)はより高い精度で行われる。
【0073】
図8に示されるドット積エンジンのアーキテクチャの特定の数および配置は、単なる例として提示されたものであることが再び認識されるべきである。たとえば、他の実施形態においては、単に{32、64}によってスケーリングされる項の代わりに、{16、32、64}によってスケーリングされる項に対して、より高い精度のアーキテクチャが用いられてもよい。さらに、項の3つ以上の異なるサブセットに対して用いられる異なるポップカウンタまたはドット積エンジンに対して、3つ以上の異なるタイプのアーキテクチャが用いられてもよい(例、{32、64}によってスケーリングされる項に対する第1の精度、{8、16}によってスケーリングされる項に対する第2の精度、{1、2、4}によってスケーリングされる項に対する第3の精度)。加えてさらに、図8は127b分割ポップカウンタ(例、ドット積エンジン810-4から810-16に対するもの)と、63bポップカウンタ(例、ドット積エンジン810-1から810-3に対するもの)とを有する例を示すが、これは必要条件ではない。相対的により低い重み付きの積和に対して用いられる分割ポップカウンタは63b分割ポップカウンタであってもよく(例、ここで追加のコンデンサ・バンクは、図7の例に示されるx63、w63からx126、w126ではなく、入力x32、w32からx62、w62に対する32のコンデンサを含む)、3つの最高の重み付きの積和に対して用いられる「通常の」ポップカウンタは32bポップカウンタであってもよい。さまざまなその他の例が可能である。
【0074】
いくつかの実施形態において、ドット積計算エンジンをその最終結果に対するノイズ寄与によってソートし、ドット積エンジンの異なるセットに対して異なる精度回路アーキテクチャを選択する(例、最終結果に最も多くのノイズが寄与するドット積計算エンジンに対して最高精度のアーキテクチャを使用し、最終結果により少ないノイズが寄与するドット積計算エンジンに対して相対的により低い精度のアーキテクチャを使用する)ことによって、異なるドット積計算エンジン内の「重要な」計算と「重要でない」計算とを区別する混合信号積和回路が設計される。ドット積計算エンジンの異なるサブセットに対して用いられる異なるアーキテクチャは、さまざまなやり方で設計されてもよい。たとえば、いくつかの実施形態は、重要なビットごとのドット積を「正確に」(例、付加量子化ノイズなしに)行い、一方で重要性が低いビットごとのドット積を「近似的に」(例、付加的な量子化ノイズを伴って)行うことによって、より高い精度を提供する。有利には、重要性が低いビットごとのドット積の「近似的な」計算は、重要なビットごとのドット積の「正確な」計算に用いられる回路と比べて電力もしくは面積またはその両方の節約を提供する回路を使用することによって達成されてもよい。
【0075】
他の実施形態において、重要なビットごとのドット積を正確に(例、付加量子化ノイズなしに)行い、一方で重要性が低いビットごとのドット積を近似的に(例、付加的な量子化ノイズを伴って)行うことに加えて、またはその代わりに、重要なビットごとのドット積を行うドット積エンジンにおいて用いられる回路が、重要でないビットごとのドット積を行うドット積エンジンと比較して、(例、より大きいユニット・コンデンサ・サイズ、より低いノイズ・コンパレータなどによる)より大きい面積もしくは電力消費またはその両方を伴って設計されてもよい。これは、重要なドット積が重要でないドット積よりも低い計算エラー(例、ビット・エラー)を有することを確実にする(例、ビット・エラーは熱ノイズ、ユニット・コンデンサの製造上のばらつき、オフセットなどによって入り込むことがあるため)。
【0076】
図9は、低ノイズ混合信号積和演算を行うための方法900を示す。方法900はステップ902から開始され、第1および第2のデジタル入力のビットごとの乗算の異なる項の付加ノイズ寄与を決定する。たとえば図4および図5は、デジタル入力XおよびWの63のビットごとの乗算に対する異なる項の付加ノイズ寄与の影響を決定することを示す。ステップ904において、第1および第2のデジタル入力のビットごとの乗算に対する決定された項の付加ノイズ寄与に基づいて項がソートされる。ステップ906において、第1および第2のデジタル入力のビットごとの乗算の2つ以上の異なる部分による使用のために、2つ以上の異なるドット積総和アーキテクチャが選択される。たとえば、第1および第2のデジタル入力のビットごとの乗算の第1の部分の実行による使用のために、第1の精度を有する第1のドット積総和アーキテクチャが選択されてもよく、第1および第2のデジタル入力のビットごとの乗算の第2の部分の実行による使用のために、第1の精度とは異なる第2の精度を有する少なくとも第2のドット積総和アーキテクチャが選択されてもよい。ビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとの乗算のnの合計積和のうちのkの最高の重み付きの積和を含んでもよく、一方でビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとの乗算の残りn-kの相対的により低い重み付きの積和の少なくとも一部分を含んでもよい。ステップ908において、選択された2つ以上の異なるドット積総和アーキテクチャを用いて、第1および第2のデジタル入力のビットごとの乗算の2つ以上の異なる部分が行われる。
【0077】
上記のとおり、第1および第2のデジタル入力のビットごとの乗算の3つ以上の異なる部分に対して、3つ以上の異なるドット積総和アーキテクチャが用いられてもよく、よってステップ906は、第1および第2のデジタル入力のビットごとの乗算の3つ以上の異なる部分に対して3つ以上の異なるドット積総和アーキテクチャを選択することを含んでもよい。たとえば、第1の部分は、第1および第2のデジタル入力のビットごとの乗算のnの合計積和のうちのkの最高の重み付きの積和に対するものであってもよく、第2の部分は、nの合計積和のうちのlのその次に高い重み付きの積和に対するものであってもよく、第3の部分は、第1および第2のデジタル入力のビットごとの乗算の残りn-k-lの相対的により低い重み付きの積和に対するものであってもよい。
【0078】
図10は、例示的実施形態による人工知能システム1000の例示的実装を示す。示されるとおり、システム1000はデータ・セット1010と、ニューラル・ネットワーク・モデル1020と、低ノイズADCを有するMACユニット1030とを含む。本明細書の他の場所に記載されるとおり、低ノイズADCを有するMACユニット1030は、重要および重要でないビットごとのドット積計算に対して異なる精度を有するアーキテクチャを使用することを実装して、データ・セット1010を使用するニューラル・ネットワーク・モデル1020に対する計算を行い、この計算は、トレーニング・モードにおいてデータをトレーニングすること、または推論モードにおいてデータ・セットを推論することを含んでもよい。
【0079】
1つの例示的実施形態において、人工知能システム1000は、1つ以上の特定用途向け集積回路(ASIC)によって実装される。ASICは、特定の目的のためにカスタマイズされた集積回路(IC)チップまたはデバイスであり、実行可能なプログラム・コード(例、命令コード、コンピュータ・プログラム・コードなど)によってプログラムされた論理(例、回路、プロセッサ、メモリなど)を含むか、または別様に特定の目的に対して構成される。この例示的な場合における特定の目的は、人工知能システム(例、機械学習アルゴリズム)の実装および実行である。ASICは、システム・オン・チップ(SoC:system-on-chip)とも考えられる。1つ以上の例示的実施形態によって用いられ得るいくつかのASIC実装は、システムの構成(および再構成)を可能にするために、ユーザが選択可能な基本論理機能のセル・ライブラリ(例、たとえば切り換え、比較などのさまざまな機能を提供するための複数のVLSIトランジスタ・デバイスを含むマルチプレクサ、コンパレータなど)を使用する。
【0080】
さらに当然のことながら、人工知能システム1000およびその一部は、たとえば1つ以上のマルチコア中央処理ユニット(CPU)、1つ以上のグラフィックス処理ユニット(GPU)、および1つ以上のフィールド・プログラマブル・ゲート・アレイ(FPGA)を含む技術などの、代替的な回路/プロセッサ・ベースの技術において実現され得る。いくつかの実施形態において、人工知能システム1000は、2つ以上の回路/プロセッサ・ベースの技術(例、ASIC、CPU、GPU、FPGAなど)の組み合わせとして実装され得る。
【0081】
本明細書に記載されるとおり、図1~10に示される技術は、システムを提供することも含んでもよく、このシステムは別個のソフトウェア・モジュールを含み、別個のソフトウェア・モジュールの各々は、有形コンピュータ可読記録可能記憶媒体において実装される。たとえば、すべてのモジュール(またはその任意のサブセット)が同じ媒体に存在してもよいし、各々が異なる媒体に存在してもよい。モジュールは、図面に示されるコンポーネントもしくは本明細書に記載されるコンポーネントまたはその両方のいずれかまたはすべてを含み得る。本発明の実施形態において、モジュールは、たとえばハードウェア・プロセッサなどにおいて実行され得る。よって、ハードウェア・プロセッサにおいて実行される上述のシステムの別個のソフトウェア・モジュールを用いて、方法ステップが実行され得る。さらに、コンピュータ・プログラム製品は、別個のソフトウェア・モジュールを有するシステムのプロビジョニングを含む、本明細書に記載される少なくとも1つの方法ステップを行うために実行されるように適合されたコードを有する有形コンピュータ可読記録可能記憶媒体を含み得る。
【0082】
加えて、図1~10に示される技術は、データ処理システムのコンピュータ可読記憶媒体に記憶されるコンピュータ使用可能プログラム・コードを含み得るコンピュータ・プログラム製品を介して実装されてもよく、このコンピュータ使用可能プログラム・コードは、リモート・データ処理システムからネットワークを通じてダウンロードされたものである。加えて、本発明の実施形態において、コンピュータ・プログラム製品はサーバ・データ処理システムのコンピュータ可読記憶媒体に記憶されたコンピュータ使用可能プログラム・コードを含んでもよく、このコンピュータ使用可能プログラム・コードは、リモート・データ処理システムによるコンピュータ可読記憶媒体での使用のために、ネットワークを通じてリモート・システムにダウンロードされる。
【0083】
本発明の実施形態またはそのエレメントは、メモリと、そのメモリに結合された少なくとも1つのプロセッサとを含み、かつ例示的な方法ステップを行うように構成された装置の形態で実装され得る。
【0084】
いくつかの実施形態において、装置は少なくとも1つのプロセッサと、命令コードを含む少なくとも1つのメモリとを含む。少なくとも1つのメモリおよび命令コードは、少なくとも1つのプロセッサによって、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うことと、第1および第2のデジタル入力のビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うこととを装置に少なくとも行わせるように構成される。
【0085】
第1および第2のデジタル入力のビットごとの乗算は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの計算を含んでもよく、第1および第2のデジタル入力のビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの第1のサブセットを含み、第1および第2のデジタル入力のビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの第2のサブセットを含む。第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットは、第1および第2のデジタル入力のビットごとのドット積のnの重み付きの和を含んでもよく、第1の精度で行われるビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとのドット積のkの最高の重み付きの和の計算を含み、第2の精度で行われるビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとのドット積の残りn-kの重み付きの和の少なくとも一部分の計算を含む。kの値は、第1および第2のデジタル入力のビットごとの乗算の異なる項の付加ノイズ寄与の決定に少なくとも部分的に基づいて選択されてもよい。
【0086】
第1および第2のデジタル入力のビットごとの乗算は、ビットごとのドット積総和ユニットのセットのうちの1つを用いて計算されてもよく、第1の精度は、第1および第2のデジタル入力のビットごとの乗算の第1の部分を行うビットごとのドット積総和ユニットのセットの第1のサブセットに対する第1のタイプのハードウェアを用いて提供され、第2の精度は、第1および第2のデジタル入力のビットごとの乗算の第2の部分を行うビットごとのドット積総和ユニットのセットの第2のサブセットに対する、第1のタイプのハードウェアとは異なる第2のタイプのハードウェアを用いて提供される。
【0087】
ビットごとのドット積総和ユニットのセットの各々は、ポップカウンタを含んでもよい。ビットごとのドット積総和ユニットのセットの第1のサブセットのポップカウンタは第1の分解能を有してもよく、ビットごとのドット積総和ユニットのセットの第2のサブセットのポップカウンタは第1の分解能とは異なる第2の分解能を有してもよい。
【0088】
ビットごとのドット積総和ユニットのセットの各々は、コンパレータを含むSAR ADCを使用して実装されるポップカウンタを含んでもよい。ビットごとのドット積総和ユニットのセットの第1のサブセットのSAR ADCにおいて使用される第1のタイプのコンパレータは第1のノイズ・プロファイルを有してもよく、ビットごとのドット積総和ユニットのセットの第2のサブセットのSAR ADCにおいて使用される第2のタイプのコンパレータは第1のノイズ・プロファイルとは異なる第2のノイズ・プロファイルを有してもよい。ビットごとのドット積総和ユニットのセットの第1のサブセットのSAR ADCにおいて使用される第1のタイプのコンパレータは、付加的または代替的に第1のオフセット・キャンセル精度を有してもよく、ビットごとのドット積総和ユニットのセットの第2のサブセットのSAR ADCにおいて使用される第2のタイプのコンパレータは、第1のオフセット・キャンセル精度とは異なる第2のオフセット・キャンセル精度を有してもよい。
【0089】
ビットごとのドット積総和ユニットのセットの各々は、複数のコンデンサを含むSAR ADCを使用して実装されるポップカウンタを含んでもよく、ビットごとのドット積総和ユニットのセットの第1のサブセットのSAR ADCにおいて使用される複数のコンデンサはそれぞれの第1のサイズを有してもよく、ビットごとのドット積総和ユニットのセットの第2のサブセットのSAR ADCにおいて使用される複数のコンデンサは第1のサイズとは異なるそれぞれの第2のサイズを有してもよい。ビットごとのドット積総和ユニットのセットの第1のサブセットは、付加的または代替的に、第1の数の入力を合計する複数の追加のコンデンサに結合されたSAR ADCの単一のインスタンスを含んでもよく、ビットごとのドット積総和ユニットのセットの第2のサブセットの各々は、第1の数の入力よりも少ない第2の数の入力を各々合計するSAR ADCの2つ以上のインスタンスを含んでもよい。
【0090】
いくつかの実施形態において、積和演算を行う方法は、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うステップと、第1および第2のデジタル入力のビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うステップとを含む。この方法は、命令コードを実行するように構成された処理回路によって実行される。
【0091】
第1および第2のデジタル入力のビットごとの乗算は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの計算を含んでもよく、第1および第2のデジタル入力のビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの第1のサブセットを含み、第1および第2のデジタル入力のビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの第2のサブセットを含む。第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットは、第1および第2のデジタル入力のビットごとのドット積のnの重み付きの和を含んでもよく、第1の精度で行われるビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとのドット積のkの最高の重み付きの和の計算を含み、第2の精度で行われるビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとのドット積の残りn-kの重み付きの和の少なくとも一部分の計算を含む。
【0092】
いくつかの実施形態において、製造物は、実行可能な命令コードが具現化された非一時的コンピュータ可読記憶媒体を含み、この実行可能な命令コードはプロセッサによって実行されるときに、第1および第2のデジタル入力のビットごとの乗算の第1の部分を第1の精度で行うステップと、第1および第2のデジタル入力のビットごとの乗算の少なくとも第2の部分を第1の精度とは異なる第2の精度で行うステップとをプロセッサに行わせる。
【0093】
第1および第2のデジタル入力のビットごとの乗算は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの計算を含んでもよく、第1および第2のデジタル入力のビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの第1のサブセットを含み、第1および第2のデジタル入力のビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットの第2のサブセットを含む。第1および第2のデジタル入力のビットごとのドット積の重み付きの和のセットは、第1および第2のデジタル入力のビットごとのドット積のnの重み付きの和を含んでもよく、第1の精度で行われるビットごとの乗算の第1の部分は、第1および第2のデジタル入力のビットごとのドット積のkの最高の重み付きの和の計算を含み、第2の精度で行われるビットごとの乗算の第2の部分は、第1および第2のデジタル入力のビットごとのドット積の残りn-kの重み付きの和の少なくとも一部分の計算を含む。
【0094】
いくつかの実施形態において、システムは、第1および第2のベクトルのバイナリ乗算を行うように構成された積和ユニットを含む。積和ユニットは、第1および第2のベクトルの一部分のビットごとの乗算を行ってデジタル出力を生成するように各々構成された2つ以上のビットごとのドット積総和ユニットのセットを含む。2つ以上のビットごとのドット積総和ユニットのセットの各々のビットごとのドット積総和ユニットは、SAR ADCユニットのインスタンスに結合されたビットごとのドット積総和ユニットの少なくとも1つのインスタンスを含み、SAR ADCユニットは、ドット積総和ユニットのアナログ出力をデジタル出力の少なくとも一部分に変換するように構成される。第1の精度を有する2つ以上のビットごとのドット積総和ユニットのセットの第1のサブセットは、第1および第2のベクトルのビットごとの乗算の第1の部分を計算するために使用され、第1の精度とは異なる第2の精度を有する2つ以上のビットごとのドット積総和ユニットのセットの第2のサブセットは、第1および第2のベクトルのビットごとの乗算の第2の部分を計算するために使用される。
【0095】
第1および第2のベクトルのビットごとの乗算は、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの計算を含んでもよく、第1および第2のベクトルのビットごとの乗算の第1の部分は、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第1のサブセットを含み、第1および第2のベクトルのビットごとの乗算の第2の部分は、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第2のサブセットを含む。第1および第2のベクトルのビットごとのドット積の重み付きの和のセットは、第1および第2のベクトルのビットごとのドット積のnの重み付きの和を含んでもよく、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第1のサブセットは、第1および第2のベクトルのビットごとのドット積のkの最高の重み付きの和を含み、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第2のサブセットは、第1および第2のベクトルのビットごとのドット積の残りn-kの重み付きの和の少なくとも一部分を含む。
【0096】
このシステムは、人工知能システムの一部、もしくは1つ以上の集積回路の一部、またはその両方として実装されてもよい。
【0097】
いくつかの実施形態において、デバイスは、第1および第2のベクトルのバイナリ乗算を行うように構成された積和回路を含む。積和回路は、第1および第2のベクトルの一部分のビットごとの乗算を行ってデジタル出力を生成するように各々構成されたビットごとのドット積総和回路の2つ以上のインスタンスのセットを含む。ビットごとのドット積総和回路の2つ以上のインスタンスのセットのビットごとのドット積総和回路の各インスタンスは、SAR ADC回路の少なくとも1つのインスタンスに結合されたビットごとのドット積計算回路の少なくとも1つのインスタンスを含み、SAR ADC回路は、ビットごとのドット積計算回路のアナログ出力をデジタル出力の少なくとも一部分に変換するように構成される。第1の精度を有するビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットは、第1および第2のベクトルのビットごとの乗算の第1の部分を計算するために使用され、第1の精度とは異なる第2の精度を有するビットごとのドット積総和回路の2つ以上のインスタンスのセットの第2のサブセットは、第1および第2のベクトルのビットごとの乗算の第2の部分を計算するために使用される。
【0098】
第1および第2のベクトルのビットごとの乗算は、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの計算を含んでもよく、第1および第2のベクトルのビットごとの乗算の第1の部分は、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第1のサブセットを含み、第1および第2のベクトルのビットごとの乗算の第2の部分は、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第2のサブセットを含む。第1および第2のベクトルのビットごとのドット積の重み付きの和のセットは、第1および第2のベクトルのビットごとのドット積のnの重み付きの和を含んでもよく、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第1のサブセットは、第1および第2のベクトルのビットごとのドット積のkの最高の重み付きの和を含み、第1および第2のベクトルのビットごとのドット積の重み付きの和のセットの第2のサブセットは、第1および第2のベクトルのビットごとのドット積の残りn-kの重み付きの和の少なくとも一部分を含む。
【0099】
ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットは第1の分解能を有してもよく、ビットごとのドット積総和回路の2つ以上のインスタンスの第2のサブセットは第1の分解能とは異なる第2の分解能を有してもよい。
【0100】
ビットごとのドット積総和回路の2つ以上のインスタンスのセットの各々は、複数の論理ANDゲートを含んでもよく、各々の論理ANDゲートは入力として第1のベクトルの第1のベクトル要素と、第2のベクトルの第2のベクトル要素とを受信し、複数の論理ANDゲートのそれぞれの出力は複数のコンデンサの第1のプレートに結合され、ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットの各々における複数のコンデンサはそれぞれの第1のサイズを有してもよく、ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第2のサブセットの各々における複数のコンデンサは第1のサイズとは異なるそれぞれの第2のサイズを有してもよい。
【0101】
ビットごとのドット積総和回路の2つ以上のインスタンスのセットの各々のSAR ADC回路はコンパレータを含んでもよく、ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットのSAR ADC回路において使用される第1のタイプのコンパレータは、ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第2のサブセットのSAR ADC回路において使用される第2のタイプのコンパレータとは異なる。第1のタイプのコンパレータは第1のノイズ・プロファイルを有してもよく、第2のタイプのコンパレータは第1のノイズ・プロファイルとは異なる第2のノイズ・プロファイルを有してもよい。第1のタイプのコンパレータは付加的または代替的に第1のオフセット・キャンセル精度を有してもよく、第2のタイプのコンパレータは第1のオフセット・キャンセル精度とは異なる第2のオフセット・キャンセル精度を有してもよい。
【0102】
ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットにおけるビットごとのドット積総和回路の各インスタンスは、ビットごとのドット積計算回路およびSAR ADC回路の少なくとも2つのインスタンスを含んでもよく、ビットごとのドット積総和回路の2つ以上のインスタンスの第2のサブセットにおけるビットごとのドット積総和回路の各インスタンスは、追加のコンデンサ・バンクに結合されたビットごとのドット積計算回路およびSAR ADC回路の単一のインスタンスを含んでもよい。ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第1のサブセットにおけるビットごとのドット積総和回路の各インスタンスのビットごとのドット積計算回路およびSAR ADC回路の少なくとも2つのインスタンスの各々は、第1の数の入力を合計してもよく、ビットごとのドット積総和回路の2つ以上のインスタンスのセットの第2のサブセットにおけるビットごとのドット積総和回路の各インスタンスの追加のコンデンサ・バンクに結合されたビットごとのドット積計算回路およびSAR ADC回路の単一のインスタンスの各々は、第1の数の入力よりも大きい第2の数の入力を合計してもよい。
【0103】
加えて、本発明の実施形態は、コンピュータまたはワークステーションにおいて実行されるソフトウェアを使用し得る。図11を参照すると、こうした実装は、たとえばプロセッサ1102と、メモリ1104と、たとえばディスプレイ1106およびキーボード1108などによって形成される入力/出力インターフェースとなどを使用してもよい。本明細書において使用される「プロセッサ」という用語は、たとえばマルチコアCPU、GPU、FPGA、もしくはたとえば1つ以上のASICなどのその他の形態の処理回路、またはその組み合わせを含む処理デバイスなどの任意の処理デバイスを含むことが意図される。さらに、「プロセッサ」という用語は2つ以上の別個のプロセッサを示してもよい。「メモリ」という用語は、プロセッサ(例、CPU、GPU、FPGA、ASICなど)に関連するメモリ、たとえばRAM(ランダム・アクセス・メモリ(random access memory))、ROM(リード・オンリ・メモリ(read only memory))、固定メモリ・デバイス(たとえばハード・ドライブなど)、取り外し可能なメモリ・デバイス(たとえばディスケットなど)、およびフラッシュ・メモリなどを含むことが意図される。加えて、本明細書において使用される「入力/出力インターフェース」という語句は、たとえば、処理ユニットにデータを入力するための機構(たとえばマウスなど)、および処理ユニットに関連する結果を提供するための機構(たとえばプリンタなど)などを含むことが意図される。プロセッサ1102と、メモリ1104と、たとえばディスプレイ1106およびキーボード1108などの入力/出力インターフェースとは、たとえばデータ処理ユニット1112の一部としてのバス1110などを介して相互接続され得る。コンピュータ・ネットワークとインターフェースするために提供され得るたとえばネットワーク・カードなどのネットワーク・インターフェース1114、および媒体1118とインターフェースするために提供され得るたとえばディスケットまたはCD-ROMドライブなどの媒体インターフェース1116に対しても、たとえばバス1110などを介した好適な相互接続が提供され得る。
【0104】
したがって、本明細書に記載される本発明の方法を行うための命令またはコードを含むコンピュータ・ソフトウェアは、関連するメモリ・デバイス(たとえばROM、固定または取り外し可能なメモリなど)に記憶されてもよく、使用される準備ができたときに、部分的または全体的に(たとえばRAMなどに)ロードされて、CPUによって実装されてもよい。こうしたソフトウェアはファームウェア、常駐ソフトウェア、およびマイクロコードなどを含み得るが、それに限定されない。
【0105】
プログラム・コードの記憶もしくは実行またはその両方に好適なデータ処理システムは、システム・バス1110を通じてメモリ・エレメント1104に直接的または間接的に結合された少なくとも1つのプロセッサ1102を含むだろう。メモリ・エレメントは、プログラム・コードの実際の実装の際に使用されるローカル・メモリと、バルク・ストレージと、実装の際にバルク・ストレージからコードを読み出さなければならない回数を減らすために少なくとも何らかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリとを含み得る。
【0106】
入力/出力(Input/output)すなわちI/Oデバイス(キーボード1108、ディスプレイ1106、およびポインティング・デバイスなどを含むがそれに限定されない)は、システムに直接(たとえばバス1110などを介して)結合され得るか、または介在するI/Oコントローラ(明瞭にするために省略される)を通じて結合され得る。
【0107】
介在するプライベートまたはパブリック・ネットワークを通じてデータ処理システムが他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合されることを可能にするために、システムにはたとえばネットワーク・インターフェース1114などのネットワーク・アダプタも結合されてもよい。モデム、ケーブル・モデム、およびイーサネット(Ethernet)(R)・カードは、現在利用可能なタイプのネットワーク・アダプタのうちのほんのいくつかである。
【0108】
請求項を含む本明細書において使用される「サーバ」は、サーバ・プログラムを実行する物理データ処理システム(たとえば、図11に示されるシステム1112など)を含む。こうした物理サーバは、ディスプレイおよびキーボードを含んでも含まなくてもよいことが理解されるだろう。
【0109】
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、もしくはコンピュータ・プログラム製品、またはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。
【0110】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶できる有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の好適な組み合わせなどであってもよいが、それに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは以下を含む。ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(erasable programmable read-only memory)(EPROMまたはフラッシュ・メモリ)、SRAM、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、機械的にコード化されたデバイス、たとえばパンチ・カードまたは記録された命令を有する溝の中の隆起構造体など、および前述の任意の好適な組み合わせ。本明細書において用いられるコンピュータ可読記憶媒体は、たとえば電波もしくはその他の自由に伝播する電磁波、導波路もしくはその他の伝送媒体を通じて伝播する電磁波(例、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、それ自体が一時的な信号であると解釈されるべきではない。
【0111】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされ得るか、あるいはたとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはその組み合わせを含んでもよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信して、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0112】
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードであってもよく、このプログラミング言語はオブジェクト指向プログラミング言語、たとえばSmalltalk、またはC++など、および手続き型プログラミング言語、たとえば「C」プログラミング言語または類似のプログラミング言語などを含む。コンピュータ可読プログラム命令は、すべてがユーザのコンピュータで実行されてもよいし、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、(たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータへの接続が行われてもよい。いくつかの実施形態において、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA:programmable logic arrays)などを含む電子回路は、本発明の態様を実行するために電子回路をパーソナライズするためのコンピュータ可読プログラム命令の状態情報を使用することによって、コンピュータ可読プログラム命令を実行してもよい。
【0113】
本明細書においては、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して、本発明の態様を説明している。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されるだろう。
【0114】
これらのコンピュータ可読プログラム命令は、コンピュータか、またはマシンを生成するためのその他のプログラマブル・データ処理装置のプロセッサに提供されることによって、そのコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実装するための手段を生じてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブル・データ処理装置、もしくはその他のデバイス、またはその組み合わせに特定の方式で機能するように指示できるコンピュータ可読記憶媒体にも記憶されることによって、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作の態様を実装する命令を含む製造物を含んでもよい。
【0115】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにもロードされて、コンピュータに実装されるプロセスを生成するためにコンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップを実行させることによって、そのコンピュータ、他のプログラマブル装置、または他のデバイスにおいて実行される命令が、フローチャートもしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実装してもよい。
【0116】
図面におけるフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または一部分を表してもよく、これは指定される論理機能(単数または複数)を実装するための1つ以上の実行可能命令を含む。いくつかの代替的実装において、ブロック内に示される機能は、図面に示されるものとは異なる順序で起こってもよい。たとえば、連続して示される2つのブロックは、実際には1つのステップとして達成されても、同時に実行されても、部分的もしくは全体的に時間が重複する方式で実質的に同時に実行されてもよく、または関与する機能に依存して、これらのブロックがときに逆の順序で実行されてもよい。加えて、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能もしくは動作を行うか、または特定目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特定目的のハードウェア・ベースのシステムによって実装され得ることが注目されるだろう。
【0117】
なお、本明細書に記載される任意の方法は、コンピュータ可読記憶媒体において実装される別個のソフトウェア・モジュールを含むシステムを提供する追加のステップを含み得る。そのモジュールは、たとえば、本明細書において詳述されるコンポーネントのいずれかまたはすべてを含み得る。次いで、この方法ステップは、ハードウェア・プロセッサ1102において実行される上述のシステムの別個のソフトウェア・モジュールもしくはサブモジュールまたはその両方を用いて実行され得る。さらに、コンピュータ・プログラム製品は、別個のソフトウェア・モジュールを有するシステムのプロビジョニングを含む、本明細書に記載される少なくとも1つの方法ステップを実行するように実装されるように適合されたコードを有するコンピュータ可読記憶媒体を含み得る。
【0118】
いずれの場合にも、本明細書において示されるコンポーネントは、たとえば特定用途向け集積回路(単数または複数)(ASIC)、機能回路、および関連メモリを有する適切にプログラムされたデジタル・コンピュータなどのさまざまな形態のハードウェア、ソフトウェア、またはその組み合わせにおいて実装されてもよいことが理解されるべきである。本明細書において提供される本発明の教示を与えられたとき、関連技術の当業者は本発明のコンポーネントの他の実装を想起し得るだろう。
【0119】
本開示はクラウド・コンピューティングに対する詳細な説明を含むが、本明細書に記述される教示の実装はクラウド・コンピューティング環境に限定されないことが理解されるべきである。むしろ本発明の実施形態は、現在公知であるか、または後に開発される任意の他のタイプのコンピューティング環境と共に実装され得る。
【0120】
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとの対話によって迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含んでもよい。
【0121】
特性は以下のとおりである。
【0122】
オンデマンド・セルフサービス。クラウド消費者は、サービスのプロバイダとの人的対話を必要とせずに、必要に応じて自動的に、たとえばサーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングできる。
【0123】
広範なネットワーク・アクセス。機能は、ネットワークを通じて利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的機構を通じてアクセスされる。
【0124】
リソース・プール。マルチテナント・モデルを用いて複数の消費者にサービスするために、プロバイダのコンピューティング・リソースはプールされ、要求に従って異なる物理および仮想リソースが動的に割り当ておよび再割り当てされる。消費者は一般的に、提供されるリソースの正確な場所に対する制御も知識も有さないが、より高い抽象化レベルにおける場所(たとえば国、州、またはデータセンタなど)を特定できてもよいという点で、場所独立性の意味が存在する。
【0125】
迅速な弾力性。機能は、素早くスケール・アウトするために場合によっては自動的に、迅速かつ弾力的にプロビジョニングされ、かつ素早くスケール・インするために迅速にリリースされ得る。消費者にとって、プロビジョニングのために利用可能な機能はしばしば無制限にみえ、任意のときに任意の量を購入できる。
【0126】
従量制サービス。クラウド・システムは、サービスのタイプ(たとえばストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウントなど)に対して適切な何らかの抽象化レベルにおいて計測機能を利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用をモニタ、制御、および報告して、使用されるサービスのプロバイダおよび消費者の両方に対する透明性を提供できる。
【0127】
サービス・モデルは次のとおりである。
【0128】
サービスとしてのソフトウェア(SaaS:Software as a Service)。消費者に提供される機能は、クラウド・インフラストラクチャにおいて動作するプロバイダのアプリケーションの使用である。アプリケーションは、さまざまなクライアント・デバイスからたとえばウェブ・ブラウザ(たとえば、ウェブ・ベースのeメールなど)などのシン・クライアント・インターフェースを通じてアクセス可能である。消費者はネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえも含む基礎的なクラウド・インフラストラクチャを管理または制御することはなく、例外となり得るのは限られたユーザ特有のアプリケーション構成設定である。
【0129】
サービスとしてのプラットフォーム(PaaS:Platform as a Service)。消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、消費者が作成または取得したアプリケーションのクラウド・インフラストラクチャへの展開である。消費者はネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的なクラウド・インフラストラクチャを管理または制御することはないが、展開されたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成に対する制御を有する。
【0130】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service)。消費者に提供される機能は、オペレーティング・システムおよびアプリケーションを含み得る、消費者が任意のソフトウェアを展開および実行することが可能な処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースのプロビジョニングである。消費者は基礎的なクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御、および場合によってはネットワーク形成コンポーネント(たとえばホスト・ファイアウォールなど)の選択に対する限られた制御を有する。
【0131】
展開モデルは次のとおりである。
【0132】
プライベート・クラウド。このクラウド・インフラストラクチャは、ある組織に対してのみ操作される。これはその組織またはサード・パーティによって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
【0133】
コミュニティ・クラウド。このクラウド・インフラストラクチャは複数の組織によって共有され、共通する関心事項(たとえば任務、セキュリティ要件、ポリシー、およびコンプライアンスの検討など)を有する特定のコミュニティをサポートする。これはそれらの組織またはサード・パーティによって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
【0134】
パブリック・クラウド。このクラウド・インフラストラクチャは、一般人または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織が所有している。
【0135】
ハイブリッド・クラウド。このクラウド・インフラストラクチャは2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、それらのクラウドは独自のエンティティにとどまるが、データおよびアプリケーション・ポータビリティを可能にする標準または独自の技術(たとえば、クラウド間のロード・バランシングのためのクラウド・バースティングなど)によって共に結合される。
【0136】
クラウド・コンピューティング環境はサービス指向型であり、ステートレス性、低結合性、モジュラリティ、およびセマンティックな相互運用性に焦点を合わせている。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0137】
ここで図12を参照すると、例示的なクラウド・コンピューティング環境1250が示される。示されるとおり、クラウド・コンピューティング環境1250は1つ以上のクラウド・コンピューティング・ノード1210を含み、たとえばパーソナル・デジタル・アシスタント(PDA:personal digital assistant)もしくは携帯電話1254A、デスクトップ・コンピュータ1254B、ラップトップ・コンピュータ1254C、または自動車のコンピュータ・システム1254N、あるいはその組み合わせなどの、クラウド消費者によって用いられるローカル・コンピュータ・デバイスが、このクラウド・コンピューティング・ノード1210によって通信してもよい。ノード1210は互いに通信してもよい。これらのノードは、たとえば上述したプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つ以上のネットワークにおいて、物理的または仮想的にグループ化されてもよい(図示せず)。このことは、クラウド・コンピューティング環境1250がインフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはその組み合わせを、クラウド消費者がそれに対するリソースをローカル・コンピュータ・デバイスにおいて維持する必要のないサービスとして提供することを可能にする。図12に示されるコンピュータ・デバイス1254A~Nのタイプは単なる例示であることが意図されており、コンピューティング・ノード1210およびクラウド・コンピューティング環境1250は、任意のタイプのネットワークもしくはネットワーク・アドレス可能接続(例、ウェブ・ブラウザを使用するもの)またはその両方を通じて、任意のタイプのコンピュータ・デバイスと通信できることが理解される。
【0138】
ここで図13を参照すると、クラウド・コンピューティング環境1250(図12)によって提供される機能的抽象化レイヤのセットが示される。図13に示されるコンポーネント、レイヤ、および機能は単なる例示であることが意図されており、本発明の実施形態はそれらに限定されないことが予め理解されるべきである。示されるとおり、以下のレイヤおよび対応する機能が提供される。
【0139】
ハードウェアおよびソフトウェア・レイヤ1360は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム1361、RISC(縮小命令セット・コンピュータ(Reduced Instruction Set Computer))アーキテクチャ・ベースのサーバ1362、サーバ1363、ブレード・サーバ1364、ストレージ・デバイス1365、ならびにネットワークおよびネットワーク形成コンポーネント1366を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1367およびデータベース・ソフトウェア1368を含む。
【0140】
仮想化レイヤ1370が提供する抽象化レイヤから、仮想エンティティの以下の例が提供されてもよい。仮想サーバ1371、仮想ストレージ1372、仮想プライベート・ネットワークを含む仮想ネットワーク1373、仮想アプリケーションおよびオペレーティング・システム1374、ならびに仮想クライアント1375。
【0141】
一例において、管理レイヤ1380は以下に記載される機能を提供してもよい。リソース・プロビジョニング1381は、クラウド・コンピューティング環境内でタスクを実行するために使用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計測および価格決定1382は、クラウド・コンピューティング環境内でリソースが使用される際のコスト追跡と、これらのリソースの消費に対する課金またはインボイス作成とを提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクに対するアイデンティティ検証、ならびにデータおよびその他のリソースの保護を提供する。ユーザ・ポータル1383は、消費者およびシステム管理者に対するクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理1384は、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)計画および実現1385は、SLAによって将来の要求が予測されるクラウド・コンピューティング・リソースに対する事前の取り決めおよびその調達を提供する。
【0142】
ワークロード・レイヤ1390は、クラウド・コンピューティング環境が使用され得る機能の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション1391、ソフトウェア開発およびライフサイクル管理1392、仮想教室の教育配信1393、データ分析処理1394、トランザクション処理1395、および本発明の1つ以上の実施形態による人工知能アルゴリズム(低ノイズMS-DPE/MS-MAC計算による)処理1396を含む。
【0143】
本明細書において用いられる用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書において用いられる単数形「a」、「an」、および「the」は、文脈が別様を明確に示さない限り複数形も含むことが意図される。この明細書において用いられるときの「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方の用語は、記述される特徴、ステップ、動作、エレメント、もしくはコンポーネント、またはその組み合わせの存在を特定するが、別の特徴、ステップ、動作、エレメント、コンポーネント、もしくはそのグループ、またはその組み合わせの存在または追加を除外しないことがさらに理解されるだろう。
【0144】
本発明のさまざまな実施形態の記載は例示の目的のために提供されているが、開示される実施形態に対して網羅的または限定的になることは意図されていない。記載される実施形態の範囲および思想から逸脱することなく、当業者には多くの修正および変形が明らかになるだろう。本明細書で使用される用語は、実施形態の原理、実際の適用、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または他の当業者が本明細書で開示される実施形態を理解できるようにするために選択されたものである。
図1A
図1B
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】