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

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

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

特許7609530メムリスタ性のクロスバー・アレイを使用するドット積操作の実行
<>
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図1
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図2
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図3
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図4
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図5A
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図5B
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図6
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図7
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図8
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図9
  • 特許-メムリスタ性のクロスバー・アレイを使用するドット積操作の実行 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-23
(45)【発行日】2025-01-07
(54)【発明の名称】メムリスタ性のクロスバー・アレイを使用するドット積操作の実行
(51)【国際特許分類】
   G06F 17/10 20060101AFI20241224BHJP
   G06N 3/063 20230101ALI20241224BHJP
【FI】
G06F17/10 A
G06N3/063
【請求項の数】 20
(21)【出願番号】P 2022506950
(86)(22)【出願日】2020-08-14
(65)【公表番号】
(43)【公表日】2022-11-14
(86)【国際出願番号】 IB2020057684
(87)【国際公開番号】W WO2021044242
(87)【国際公開日】2021-03-11
【審査請求日】2023-01-20
(31)【優先権主張番号】16/561,110
(32)【優先日】2019-09-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ダジ、マルチノ
(72)【発明者】
【氏名】フランセーゼ、ピエール、アンドレア
(72)【発明者】
【氏名】セバスティアン、アブ
(72)【発明者】
【氏名】レ ガロ-ボールドー、マニュエル
(72)【発明者】
【氏名】エレフセリオウ、エバンゲロス、スタブロス
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2018/0018559(US,A1)
【文献】米国特許出願公開第2020/0082252(US,A1)
【文献】米国特許出願公開第2020/0012924(US,A1)
【文献】米国特許出願公開第2021/0012186(US,A1)
【文献】米国特許出願公開第2019/0340508(US,A1)
【文献】米国特許第10055383(US,B1)
【文献】米国特許出願公開第2019/0065117(US,A1)
【文献】Zhenhua Zhu et al.,Mixed Size Crossbar based RRAM CNN Accelerator with Overlapped Mapping Method,2018 IEEE/ACM International Conference on Computer-Aided Design (ICCAD),米国,IEEE,2018年11月05日,pp.1-8,[online],[令和 5年10月30日検索],インターネット <URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8587680&tag=1>
【文献】Ali Shafiee et al.,ISAAC: A Convolutional Neural Network Accelerator with In-Situ Analog Arithmetic in Crossbars,2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA),米国,IEEE,2016年06月18日,pp.14-26,[online],[令和5年10月30日検索],インターネット <URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7551379>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
多次元の出力マトリックスを得るため、多次元の入力マトリックス上でマトリックス畳み込みを実行するための方法であって、前記マトリックス畳み込みが、前記出力マトリックスのすべての要素を得るための並列ドット積操作のセットを含み、並列ドット積操作の前記セットのそれぞれのドット積操作が前記入力マトリックスの入力サブマトリックス及び少なくとも1つの畳み込みマトリックスを含んでおり、前記方法が:
ベクトル・マトリックスの乗算を実行するように構成されたメムリスタ性のクロスバー・アレイを提供すること;
前記クロスバー・アレイ内に、並列ドット積操作の前記セットのサブセットの前記畳み込みマトリックスを格納することにより、並列ドット積操作の前記セットの前記サブセットを計算すること;及び
前記クロスバー・アレイに、並列ドット積操作の前記セットの前記サブセットの前記入力サブマトリックスのすべての異なる要素を含む入力ベクトルを入力すること
を含む、方法。
【請求項2】
並列ドット積操作の前記セットの前記サブセットを計算することは、さらに:
並列ドット積操作の前記セットの前記サブセットを選択することを含み、並列ドット積操作の前記セットの前記サブセットの前記計算が、前記出力マトリックスの2つの次元に沿った要素を与え、かつ並列ドット積操作の前記セットの選択されたそれぞれのサブセットが異なる入力ベクトルを含む
請求項1に記載の方法。
【請求項3】
並列ドット積操作の前記セットの前記サブセットを計算することは、さらに:
並列ドット積操作の前記セットの前記サブセットを選択することを含み、並列ドット積操作の前記セットの前記サブセットの前記計算が、前記出力マトリックスの3つの次元に沿った要素を与え、かつ並列ドット積操作の前記セットの選択されたそれぞれのサブセットが異なる入力ベクトルを含む
請求項1に記載の方法。
【請求項4】
畳み込みニューラル・ネットワークの学習又は推定は、前記畳み込みニューラル・ネットワークのそれぞれのレイヤで、前記メムリスタ性のクロスバー・アレイにより計算することができるレイヤ操作を含み、前記マトリックス畳み込みが前記畳み込みニューラル・ネットワークの所与のレイヤのレイヤ操作である、
請求項1に記載の方法。
【請求項5】
前記ベクトル・マトリックスの乗算を実行するように構成された前記メムリスタ性のクロスバー・アレイを提供することが、さらに:
さらなるメムリスタ性のクロスバー・アレイを提供して、前記畳み込みニューラル・ネットワークのさらなるそれぞれのレイヤに前記メムリスタ性のクロスバー・アレイを伴わせること;
パイプライン様式での実行のため、前記メムリスタ性のクロスバー・アレイを相互接続すること;及び
並列ドット積操作の前記セットのそれぞれのサブセットを使用して前記畳み込みニューラル・ネットワークのさらなるレイヤそれぞれについて、前記計算を実行すること
を含む請求項4に記載の方法。
【請求項6】
それぞれのメムリスタ性のクロスバー・アレイにより計算された並列ドット積操作の前記セットの前記サブセットは、相互接続された前記メムリスタ性のクロスバー・アレイの間のそれぞれの相互接続についての帯域幅要求が同一である
請求項5に記載の方法。
【請求項7】
前記メムリスタ性のクロスバー・アレイが行ラインと、前記行ラインを横切る列ラインと、前記行及び列ラインにより形成された交差部で、前記行ラインと前記列ラインとの間に結合された複数の抵抗性メモリ要素とを含み、複数の前記抵抗性メモリ要素の抵抗性メモリ要素は、マトリックスの要素の値を表す
請求項1に記載の方法。
【請求項8】
前記畳み込みマトリックスを格納することは:
並列ドット積操作の前記セットの前記サブセットのそれぞれのドット積操作について、前記クロスバー・アレイのそれぞれの単一の列ラインの複数の抵抗性メモリ要素に前記ドット積操作に含まれる畳み込みマトリックスの全部の要素を格納することを含む、
請求項7に記載の方法。
【請求項9】
前記畳み込みマトリックスを格納することは:
それぞれの行ラインにおける前記サブセットのそれぞれのドット積操作に含まれる畳み込み行列のすべての要素を格納すること
を含む請求項7に記載の方法。
【請求項10】
前記畳み込みマトリックスを格納することは:
同一の前記入力サブマトリックスで乗算するべき複数の前記畳み込みマトリックスから畳み込みマトリックスのグループを識別すること、前記クロスバー・アレイの列ライン内の前記グループのそれぞれの畳み込みマトリックスのすべての要素を格納すること;及び
前記識別すること及び前記格納することを畳み込みマトリックスのゼロ又はそれ以上のさらなるグループについて反復すること
を含む、請求項1に記載の方法。
【請求項11】
前記入力及び出力マトリックスが画像のピクセル又は畳み込みニューラル・ネットワークのレイヤからの活性化の値を含み、前記畳み込みマトリックスがカーネルである
請求項1に記載の方法。
【請求項12】
多次元の出力マトリックスを得るために多次元の入力マトリックス上でマトリックス畳み込みを実行するためのメムリスタ性のクロスバー・アレイであって、前記マトリックス畳み込みが前記出力マトリックスのすべての要素を得るための並列ドット積操作のセットを含み、並列ドット積操作の前記セットのそれぞれのドット積操作が前記入力マトリックスの入力サブマトリックス及び少なくとも1つの畳み込みマトリックスを含み、前記クロスバー・アレイが前記クロスバー・アレイ内に前記畳み込みマトリックスを格納するように構成され、並列ドット積操作の前記セットのドット積操作のサブセットを実行するため、前記入力サブマトリックスの異なるすべての要素を含む1つの入力ベクトルが前記クロスバー・アレイに入力される
メムリスタ性のクロスバー・アレイ。
【請求項13】
多次元の出力マトリックスを得るために多次元の入力マトリックス上でマトリックス畳み込みを実行するためのコンピュータ・プログラムであって、前記マトリックス畳み込みが前記出力マトリックスのすべての要素を得るための並列ドット積操作の前記セットのセットを含み、並列ドット積操作の前記セットの前記セットのそれぞれのドット積操作が前記入力マトリックスの入力サブマトリックス及び少なくとも1つの畳み込みマトリックスを含み、前記コンピュータ・プログラムがプロセッサに
ベクトル・マトリックスの乗算を実行するように構成されたメムリスタ性のクロスバー・アレイを提供すること;
前記クロスバー・アレイ内に、並列ドット積操作の前記セットのサブセットの前記畳み込みマトリックスを格納することにより、並列ドット積操作の前記セットの前記セットの前記サブセットを計算すること;及び
前記クロスバー・アレイに、ドット積操作の前記サブセットの前記入力サブマトリックスのすべての異なる要素を含む入力ベクトルを入力すること
実行させる、コンピュータ・プログラム。
【請求項14】
並列ドット積操作の前記セットの前記サブセットを計算することは、さらに:
並列ドット積操作の前記セットの前記サブセットを選択することを含み、並列ドット積操作の前記セットの前記サブセットの前記計算が、前記出力マトリックスの2つの次元に沿った要素を与え、かつ並列ドット積操作の前記セットの選択されたそれぞれのサブセットが異なる入力ベクトルを含む
請求項13に記載のコンピュータ・プログラム。
【請求項15】
並列ドット積操作の前記セットの前記サブセットを計算することは、さらに:
並列ドット積操作の前記セットの前記サブセットを選択することを含み、並列ドット積操作の前記セットの前記サブセットの前記計算が、前記出力マトリックスの3つの次元に沿った要素を与え、かつ並列ドット積操作の前記セットの選択されたそれぞれのサブセットが異なる入力ベクトルを含む
請求項13に記載のコンピュータ・プログラム。
【請求項16】
畳み込みニューラル・ネットワークの学習又は推定は、前記畳み込みニューラル・ネットワークのそれぞれのレイヤで、前記メムリスタ性のクロスバー・アレイにより計算することができるレイヤ操作を含み、前記マトリックス畳み込みが前記畳み込みニューラル・ネットワークの所与のレイヤのレイヤ操作である、
請求項13に記載のコンピュータ・プログラム。
【請求項17】
前記ベクトル・マトリックスの乗算を実行するように構成された前記メムリスタ・クロスバー・アレイを提供することが、さらに:
さらなるメムリスタ性のクロスバー・アレイを提供して、前記畳み込みニューラル・ネットワークのさらなるそれぞれのレイヤに前記メムリスタ性のクロスバー・アレイを伴わせること;
パイプライン様式での実行のため、前記メムリスタ性のクロスバー・アレイを相互接続すること;及び
並列ドット積操作の前記セットのそれぞれのサブセットを使用して前記畳み込みニューラル・ネットワークのさらなるレイヤそれぞれについて、前記計算を実行すること
を含む請求項16に記載のコンピュータ・プログラム。
【請求項18】
それぞれのメムリスタ性のクロスバー・アレイにより計算された並列ドット積操作の前記セットの前記サブセットは、相互接続された前記メムリスタ性のクロスバー・アレイの間のそれぞれの相互接続についての帯域幅要求が同一である
請求項17に記載のコンピュータ・プログラム。
【請求項19】
前記メムリスタ性のクロスバー・アレイが行ラインと、前記行ラインを横切る列ラインと、前記行及び列ラインにより形成された交差部で、前記行ラインと前記列ラインとの間に結合された複数の抵抗性メモリ要素とを含み、複数の前記抵抗性メモリ要素の抵抗性メモリ要素は、マトリックスの要素の値を表す
請求項13に記載のコンピュータ・プログラム。
【請求項20】
前記畳み込みマトリックスを格納することは:
並列ドット積操作の前記セットの前記サブセットのそれぞれのドット積操作について、前記クロスバー・アレイのそれぞれの単一の列ラインの複数の抵抗性メモリ要素に前記ドット積操作に含まれる畳み込みマトリックスの全部の要素を格納することを含む、
請求項13に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタル・コンピュータ・システムの分野に関し、より具体的には、メムリスタ性のクロスバー・アレイを使用する、多次元出力マトリックスを取得するための多次元入力マトリック上のマトリックス畳み込みのセットを実行するための方法に関する。
【背景技術】
【0002】
コンピュータのメモリは、非フォン・ノイマン型計算機パラダイムの分野における将来有望なアプローチであり、そこではナノスケールの抵抗性メモリ・デバイスが連続的にデータを格納して、基本的な計算タスクを実行する。例えば、これらのデバイスをクロスバー構成に配置することにより、マトリックス-ベクトルの乗算を実行することができる。しかしながら、これらのクロスバー構成を使用することの改善は、引き続き必要とされている。
【発明の概要】
【0003】
本発明の種々の実施形態は、メムリスタ性のクロスバー・アレイを使用する多次元出力マトリックスを取得するため、多次元入力マトリックス上でのマトリックス畳み込みを実行するための方法、及び独立請求項の主題により記述されるクロスバー・アレイを提供する。本発明の実施形態は、それらが相互に排他的でない場合、互いに組み合わせることができる。
【0004】
1つの実施形態においては、本発明は、多次元出力マトリックスを取得するため、多次元入力マトリックス上でマトリックス畳み込みを実行するための方法に関する。マトリックス畳み込みは、出力マトリックスの全要素を得るためにドット積操作のセットを含むことができる。ドット積動作のセットの、それぞれのドット積操作は、入力マトリックスの入力サブマトリックス及び少なくとも1つの畳み込みマトリックスを含むことができる。本方法は、ベクトル・マトリックスの乗算を実装するために構成されたメムリスタ性のクロスバー・アレイを提供すること、クロスバー・アレイ内に、ドット積操作のサブセットである畳み込みマトリックスを格納することによってドット積操作のセットのサブセットを計算すること、及びサブセットの入力マトリックスのすべての異なる要素を含む入力ベクトルをクロスバー・アレイに入力することを含む。
【0005】
もう1つの実施形態においては、本発明は、多次元出力マトリックスを得るために多次元入力マトリックス上でマトリックス・コンボリューションを実行するためのメムリスタ性のクロスバー・アレイに関する。マトリックス畳み込みは、出力マトリックスの全要素を得るためのドット積操作のセットを含むことができる。ドット積操作のセットのそれぞれのドット積操作は、入力マトリックスの入力サブマトリックス及び少なくとも1つの畳み込みマトリックスを含むことができる。クロスバー・アレイは、クロスバー・アレイ内に畳み込みマトリックスを格納するように構成することができるので、入力サブマトリックスの異なる全要素を含む1つの入力ベクトルを、複数ドット積操作のセットの複数のドット積操作のサブセットを実行するために、クロスバー・アレイに入力することができる。
【0006】
本発明の以下の実施形態を、実施例の目的において図面を参照しながら、より詳細に説明する。
【図面の簡単な説明】
【0007】
図1図1は、メムリスタのクロスバー・アレイを示す。
図2図2は、本発明の実施形態による、多重のドット積操作を実行するための方法のフローチャートを示す。
図3図3は、本発明の実施形態による、多重のドット積操作を実行するための方法を示すブロック図を示す。
図4図4は、本発明の実施形態による、畳み込みニューラル・ネットワークの推定処理の少なくとも一部を実行するための方法のフローチャートである。
図5A図5Aは、本発明の実施形態による、多重のドット積操作のための方法を示すブロック図である。
図5B図5Bは、本発明の実施形態による、多重のドット積操作のための方法を示すブロック図である。
図6図6は、本発明の実施形態による、多重のドット積操作のための方法を示すブロック図である。
図7図7は、本発明の実施形態による、1つのResNetアーキテクチャのグラフ的表現を示す。
図8図8は、本発明の実施形態によるシステムのブロック図を示す。
図9図9は、本発明の実施形態による、クラウド・コンピューティング環境を示す。
図10図10は、本発明の実施形態による、図9に示すクラウド・コンピューティング環境により提供される機能的抽象レイヤのセットを示す。
【発明を実施するための形態】
【0008】
本発明の種々の実施形態の説明を例示的な目的のために提示するが、開示された実施形態で全部であるとか、又は限定することを意図するものではない。多くの修正及び変形が説明する実施形態の範囲及び精神から逸脱することなく、当業者により明らかであろう。本明細書で使用する用語は、実施形態、実際的な用途、又は市場に見出される技術を超える技術的な改善の原理を最良に説明するため、又は当業者の他に、本明細書の開示を理解することができるように選択された。
【0009】
マトリックスWと、ベクトルxとのマトリックス-ベクトル乗算は、アレイの対応するメムリスタ性のクロスバー・アレイのコンダクタンスでそれぞれのマトリックス要素を表すことにより、メムリスタ性のクロスバー・アレイを通して実現することができる。マトリックスWと、ベクトルxとの乗算は、クロスバー・アレイに対してベクトルの値を表す電圧を入力することによって実行することができる。得られる電流は、Wと、xとの積を示す。クロスバー・アレイの抵抗性メモリ要素(又はデバイス)は、例えば相変化メモリ(PCM)、金属酸化物抵抗性RAM、導電性ブリッジRAM、及び磁性RAMのうちの1つとすることができる。もう1つの実施例においては、クロスバー・アレイは、SRAM及びフラッシュ(NOR及NAND)要素といった、電荷ベースのメモリ要素とすることができる。最終的な積を得ることを可能とするマトリックスW及びクロスバー・アレイのコンダクタンスGの表現スキームは、以下のスキームである。
【0010】
【数1】
【0011】
ここで、Gmaxは、クロスバー・アレイのコンダクタンス範囲により与えられ、Wmaxは、マトリックスWの大きさに依存して選択される。
【0012】
本発明の実施形態は、クロスバー・アレイの効果的な使用の領域を提供することができる。これは、ドット積操作の改善された並列計算を可能とする。入力サブマトリックスの要素の全部を有する単一のベクトルを提供することにより、畳み込みマトリックスは、コンパクトな仕方でクロスバー・アレイ内に格納することができる。例えば、本発明の実施形態は、ニューラル・ネットワークの学習及び推定のために使用することができる。
【0013】
多次元入力マトリックスのサブマトリックスは、また、多次元マトリックスである。例えば、入力マトリックスのサイズは、x*y*dとして規定され、入力マトリックスのサブマトリックスのサイズは、
【0014】
【数2】
【0015】
で定義される。ここで、subxin<xであり、subyin<yinであり、かつdinは、入力マトリックス及びそのサブマトリックスと同一である。入力マトリックスのサブマトリックスの列は、入力マトリックスの連続した列であり、及びサブマトリックスの行は、入力マトリックスの連続した行である。多次元入力マトリックスは、dinチャネルを有する特徴マップとして参照することができる。サブマトリックスは、サイズがsubxin*subyinを有するdinのチャネル・マトリックスを有する。サブマトリックスのチャネル・マトリックスは、同一の要素位置(subxin,subyin)を有する。複数のドット積操作のセットのドット積操作は、入力マトリックスの入力サブマトリックス及び少なくとも1つの別の畳み込みマトリックスを含む。例えば、サブマトリックスsubxin*subyin*dinのドット積操作は、dinのカーネルを含み、ここで、それぞれのカーネルは、suxin*subyinのサイズを有する。dinのカーネルは、同一か、又は異なるカーネルとすることができる。
【0016】
多次元出力マトリックスは、xout*yout*doutのサイズを有する。出力マトリックスの要素は、単一の値又は要素(Xout,Yout,dout)により規定することができる。出力マトリックスのピクセルは、dout要素で定義することができる。出力マトリックスの要素は、サブマトリックスsubxin*subyin*dinのカーネルのドット積により得ることができ、dinカーネルは、上記の要素が属する出力マトリックスのチャネルに伴われるdinカーネルである。すなわち、出力マトリックスの全要素を得るために、サイズが(subxin,subyin)のdout*dinカーネルを、ドット積操作のセットを実行するために使用することができる。
【0017】
1つの実施形態によれば、計算ステップは、ドット積操作のサブセットを選択することを含むことができ、ドット積操作のサブセットの計算が出力マトリックスの2次元に沿った要素を与え、かつドット積操作のそれぞれの選択されたサブセットが、異なる入力ベクトルを含む。ドット積の操作のサブセットは、それらがクロスバー・アレイにより、一度に実行することができるように選択される。例えば、入力ベクトルの全部の要素を、同時にクロスバー・アレイに入力することにより、ドット積操作のサブセットが並列的に実行できる。
【0018】
1つの実施形態によれば、計算ステップは、ドット積操作のサブセットを選択して、ドット積操作のサブセットの計算が出力マトリックスの3次元に沿った要素を与え、かつドット積操作のそれぞれの選択されたサブセットは、異なる入力ベクトルを含む。
【0019】
1つの実施形態により、畳み込みニューラル・ネットワーク(CNN)の学習又は推定は、CNNのそれぞれのレイヤにおいて、メムリスタ性のクロスバー・アレイにより計算することができるレイヤ操作を含み、ここで、マトリックスの畳み込みは、CNNの所与のレイヤのレイヤ操作である。
【0020】
1つの実施形態によれば、本方法は、さらなるメムリスタ性のクロスバー・アレイを提供することを含むことができ、CNNのそれぞれのさらなるレイヤは、メムリスタ性のクロスバー・アレイに伴われ、パイプライン様式での実行のためのメムリスタ性のクロスバー・アレイを相互結合すること、及びドット積操作のそれぞれのサブセット及びさらなるレイヤに伴われるメムリスタ性のクロスバー・アレイを使用して、CNNのそれぞれのさらなるレイヤのための計算ステップを実行することを含むことができる。
【0021】
1つの実施形態により、それぞれのメムリスタ性のクロスバー・アレイにより計算されるドット積操作のサブセットは、メムリスタ性のクロスバー・アレイの間のそれぞれの相互接続についての帯域幅要求が同一であるように選択される。
【0022】
1つの実施形態によれば、メムリスタ性のクロスバー・アレイは、行ライン及び行ラインを横断する列ラインを含むことができる。抵抗性メモリ要素は、行及び列ラインにより形成される交差部で行ラインと、列ラインとの間に結合される。複数の抵抗性メモリ要素のそれぞれの抵抗性メモリ要素は、マトリックスの要素を代表することができ、ここで、畳み込みマトリックスを格納することは、ドット積操作のサブセットのそれぞれのドット積操作について、クロスバー・アレイのそれぞれの単一の列ラインの抵抗性メモリ要素内のドット積操作に含まれる、畳み込みマトリックスのすべての要素を格納することを含む。これは、畳み込みマトリックスのコンパクトな格納を可能とし、かつさらなる並列計算のための、クロスバー・アレイの使用を可能とする。
【0023】
1つの実施形態によれば、畳み込みマトリックスの列ラインは、クロスバー・アレイの連続するラインとすることができる。これは、畳み込みマトリックスのコンパクトな格納を可能とし、かつさらなる並列計算のための、クロスバー・アレイの使用を可能とする。
【0024】
1つの実施形態によれば、メムリスタ性のクロスバー・アレイは、行ライン及び行ラインを横断する列ライン、及び行及び列ラインにより形成される交差部で行ラインと、列ラインとの間に結合される、抵抗性メモリ要素を含む。複数の抵抗性メモリ要素の抵抗性メモリ要素は、マトリックスの要素を代表することができ、ここで、畳み込みマトリックスを格納することは、それぞれの単一の列ライン内のドット積操作のサブセットについてのそれぞれのドット積操作に含まれる、畳み込みマトリックスのすべての要素を格納することを含む。畳み込み行列の列ラインは、クロスバー・アレイの連続したラインとすることができる。
【0025】
1つの実施形態によれば、メムリスタ性のクロスバー・アレイは、行ライン及び行ラインを横断する列ライン、及び行及び列ラインにより形成される交差部で行ラインと、列ラインとの間に結合される、抵抗性メモリ要素を含む。複数の抵抗性メモリ要素の抵抗性メモリ要素は、マトリックスの要素を代表することができ、畳み込みマトリックスを格納することは、同一の入力サブマトリックスにより乗算されるべき畳み込みマトリックスのグループを識別すること、同一の行ライン内のグループのそれぞれの畳み込みマトリックスのすべての要素を識別すること、同一の行ライン内のグループのそれぞれの畳み込みマトリックスのすべての要素を格納すること、及び識別ステップ及び格納ステップを、ドット積操作のサブセットの畳み込みマトリックスのゼロ又はそれ以上のさらなるグループに対して反復することを含む。この実施形態は、クロスバー・アレイの表面の効率的な使用を可能とする。これは、並列ドット積操作の最大数の実行を可能とする。
【0026】
1つの実施形態によれば、メムリスタ性のクロスバー・アレイは、行ライン及び行ラインを横断する列ライン、及び行及び列ラインにより形成される交差部で行ラインと、列ラインとの間に結合される、抵抗性メモリ要素を含み、複数の抵抗性メモリ要素の抵抗性メモリ要素は、マトリックスの要素を代表する。このことは、ドット積操作を実行するために大変に好ましいクロスバー・アレイの制御された製造を可能とする。
【0027】
1つの実施形態によれば、本方法は、さらに畳み込みニューラル・ネットワーク(CNN)を学習させることを含む。CNNは、入力及び格納するステップを実行するように構成することができる。
【0028】
1つの実施形態によれば、CNNは、すべての畳み込みマトリックスを格納することを実行することによってクロスバー・アレイを使用するドット積操作のさらなるセットを実行すること、及びさらなるセットのそれぞれのセットについて入力ステップを繰り返すことを実行するように構成することができる。ドット積操作のセット及びさらなるドット積操作のセットは、CNNの推定の間に必要なすべてのドット積操作を形成する。
【0029】
1つの実施形態によれば、CNNは、さらなるセットのそれぞれのセットについて格納及び入力ステップを連続して反復することによって、クロスバー・アレイを使用するドット積操作のさらなるセットを実行するように構成することができる。
【0030】
本発明の実施形態は、CNNの学習又は推定に含まれる最も高価な計算を可能とするので、効果的である。例えば、CNNの推定ステージは、畳み込みによる複雑性の主要なものとなる可能性がある。例えば、CNNの畳み込みレイヤは、要求される全計算の90%以上を含む。例えば、CNNの学習又は学習したCNNの推定は、CNNのそれぞれのレイヤにおいて、ドット積又は畳み込みといった操作又は計算を含むことができる。ドット積操作は、多くの乗算-加算操作を通して計算することができ、それらはそれぞれ、2つのオペランドの積及び結果の加算を計算する。CNNにおいては、ドット計算の全数は、相対的に高く、例えば224×224画像について、1000分類を有する1つのカテゴリーラベル付けの分類は、AlexNetを使用して1ギガ近くの操作を必要とする。
【0031】
本発明の実施形態は、特徴マップの並列的な活性化計算の使用を可能として、同一の通信帯域幅及びメモリ要求を維持しながら、CNN(複数)の実行についてパイプラインでのスピードアップを提供する。CNNのパイプライン実行において、計算サイクルごとに、全チャネルを横断する1つの特徴ピクセルを計算することができる。特徴マップのピクセルは、パイプライン内の次のイン-メモリ計算ユニットに通信される。
【0032】
1つの実施形態によれば、入力マトリックスは、CNNの特徴マップの活性化マトリックスであり、畳み込みマトリックスは、カーネルである。
【0033】
1つの実施形態によれば、入力マトリックスは、画像のピクセルであるか、又はCNNの特徴マップの活性化マトリックスである。
【0034】
図1は、メムリスタの操作を例示する電圧シーケンスと共にローカルデータ・ストレージを提供する、メムリスタ(又は抵抗性処理ユニット(RPU))のクロスバー・アレイを示す。図1は、例えばマトリックス-ベクトル乗算を実行することができる2次元(2D)クロスバー・アレイ100の図である。クロスバー・アレイ100は、導電性の行ワイヤ102a...102nのセット及び導電性の行ワイヤ102-nのセットを横切る導電性の列ワイヤ108a..mから形成される。
【0035】
導電性の列ワイヤは、列ラインとして参照することができ、導電性の行ワイヤは、行ラインとして参照することができる。行ワイヤのセット及び列ワイヤのセットの間の交差部は、メムリスタにより分離されており、これらは、図1において、それ自身、調整可能/アップデート可能な抵抗重み又はコンダクタンスをそれぞれ有する抵抗要素として示されており、これらがGijとして示され、それぞれ、i=1...n、及びj=1...mである。図示を容易にするため、1つのメムリスタ120のみを、図1の参照符号でラベルする。図1は、例示の目的のためのメムリスタの実施例であり、これに限定されるわけではない。例えば、クロスバー・アレイの行ワイヤのセットと、列ワイヤのセットとの間の交差部は、メムリスタの代わりに電荷ベースのメモリ要素を含むことができる。
【0036】
入力電圧ν...νが行ワイヤ102a-nにそれぞれ印加される。それぞれの列ワイヤ108a-nは、特定の列ワイヤに沿ったそれぞれのメムリスタにより生成された電流I,I,...Iを合計する。例えば、図1に示されるように、電流Iは、列ワイヤ108bにより生成され、下記のように式1で表すことができる。
【0037】
【数3】
【0038】
すなわち、アレイ100は、電圧ν1-nで定義されるメムリスタ内の行ワイヤの入力によってメムリスタ内に格納された値を乗算することにより、マトリックス-ベクトル乗算を計算する。したがって、乗算は、メムリスタそれ自体及びアレイ100の関連する行又は列ワイヤを使用してアレイ100のそれぞれのメムリスタでローカルに実行することができる。
【0039】
図1のクロスバー・アレイは、例えば、ベクトルxのマトリックスWについての乗算を計算することが可能である。マトリックスWの項目Wijは、クロスバー・アレイの対応するコンダクタンスへと、式2にしたがって下記のとおり、マップすることができる。
【0040】
【数4】
【0041】
ここで、Gmaxは、クロスバー・アレイ100のコンダクタンス範囲により与えられ、Wmaxは、マトリックスWの大きさに依存して選択される。
【0042】
クロスバー・アレイ100のサイズは、行ラインの数n及び列ラインの数mで与えられ、ここでメムリスタの数は、n×mである。1つの実施形態では、n=mである。
【0043】
図2は、多次元入力マトリックス上でのマトリックス畳み込みの少なくとも部分を実行するための方法のフローチャートである。マトリックス畳み込みは、多次元出力マトリックスを与えることができる。簡略化の目的のため、図2の方法は、図3の実施例を参照して説明するが、これに限定されることはない。例えば、入力マトリックス321は、次元xin,yin及びxin*yin*din要素の数を規定するdinを有するものとして、図3に示されている。さらに図3は、xin,yin,xout*yout*dout要素の数を規定するdoutを有するものとして出力マトリックス323を示す。説明の簡略化のため、din及びdoutは、図3の実施例では1に等しく選択されている。
【0044】
出力マトリックス323の全要素を得るために、入力マトリックス321上のマトリックス畳み込みは、ドット積操作のセットを含むことができる。例えば、ドット積操作のセットは、サイズがk*kのdin*doutの畳み込みマトリックスを含むことができる。例えば、出力マトリックス323の1つの要素は、それぞれのドット積操作により得ることができ、ここで、ドット積操作の結果は、クロスバー・アレイの単一の列出力とすることができる。その単一の列は、そのドット積操作を実行するための必要となるすべての畳み込みマトリックスを格納する。ドット積操作のセットは、ドット積操作の多数のサブセットに分解することができるので、ドット積操作のそれぞれのサブセットは、クロスバー・アレイ、例えば100により並列に実行することができる。もし、例えば、単一のクロスバー・アレイを使用する場合、出力マトリックスの全部の要素は、クロスバー・アレイ内のドット積操作のサブセットのそれぞれを処理する(例えば、連続的に)ことにより得ることができる。例えば、ドット積操作の2つのサブセットを実行するためには、上述したサブセットのすべての畳み込みマトリックスがクロスバー・アレイ内に格納され、上述したサブセットの2つの入力ベクトルが連続的にクロスバー・アレイ内に入力される。
【0045】
ドット積操作のセットのそれぞれのドット積操作は、入力マトリックス321の入力サブマトリックス及び少なくとも1つの別の畳み込みマトリックスを含む。それぞれのドット積は、出力マトリックス323の1つの要素を生成する。入力サブマトリックスは、
【0046】
【数5】
【0047】
のサイズを有し、ここで、subxin<xin、及びsubyin<yinである。ドット積操作は、2つのマトリックスの同様なエントリをローカルに乗算し、加算の結果を合計する処理である。ドット積操作のセットのそれぞれのドット積操作は、畳み込みマトリックスのサイズと同一のサイズを有する入力サブマトリックスを含むことができる。異なるドット積についての入力サブマトリックスは、要素を共有することができる。用語“入力サブマトリックス”及び“畳み込みマトリックス”は、ドット積操作の第1の(左オペランド)及び第2の(右オペランド)オペランドを区別するための名前付けの目的で使用される。
【0048】
図3は、入力サブマトリックス301及び302と、対応する2つの畳み込みマトリックス303及び307を示す。図3に示されるように、2つの入力サブマトリックス301及び303は、din=1の深度を有する入力マトリックス321であり、深度dout=1を有する出力マトリックス323の要素を得るために使用することができる。2つの入力サブマトリックス301及び302は、それぞれ、
【0049】
【数6】
【0050】
のサイズを有することができ、ここで、subxin<xin、及びsubyin<yinである。図3の実施例は、2つのドット積操作を示す。図3のこの実施例においては、第1のドット積操作は、入力サブマトリックス301及び畳み込みマトリックス305を含む。第2のドット積操作は、入力サブマトリックス303及び畳み込みマトリックス307を含む。例示的な目的のため、畳み込みマトリックス305及び307は、同一とするが、これらは異なっていてもよい。入力サブマトリックス301及び303は、要素a2,a3,a5,a6,a8及びa9を有する。これはまた、入力マトリックス321上に図示されている。したがって、入力サブマトリックス301及び303は、次の異なる要素:a1,a2,a3,a4,a5,a6,a7,a8,a9,b1,b2及びb3を有する。
【0051】
1つの実施例において、第1のドット積操作及び第2のドット積操作は、それぞれのカーネル305及び307の入力マトリックス321についての(全体の)畳み込みの一部とすることができる。例えば、カーネル305の入力マトリックス321に対する畳み込みは、第1のドット積操作及び入力マトリックス321上でカーネル305をスライドさせることにより得られる追加のドット積操作を含むことができる。これは、本方法はニューラル・ネットワークの操作に含まれる畳み込みに使用することができるので、特に効果的である。したがって、図3の実施例に従い、ドット積操作のセットは、第1及び第2のドット積操作である、2つのドット積操作のサブセットを含む。これらの2つのドット積操作は、出力マトリックス323の2つの要素を計算するために、並列的に実行することができ、かつこのため、マトリックスのそれぞれの要素が別々に計算される方法に比較して、計算処理をスピードアップする。
【0052】
図2に戻って参照すると、本方法は、図1を参照して説明したクロスバー・アレイ100といったクロスバー・アレイを最適に使用することにより、ドット積操作のセットを実行することを可能とする。ドット積操作のセットは、第1及び第2のドット積操作により、図3に定義したドット積操作のサブセットと言ったドット積操作の多数のサブセットを計算することにより実行することができる。例えば、図3において、2つのドット積操作のサブセットは、クロスバー・アレイ300を使用して同時に実行される。図3の実施例に従い、本方法は、クロスバー・アレイを使用して下記の2つの結果を計算することができる:
a1*k1+a2*k2+a3*k3+a4*k4+a5*k5+a6*k6+a7*k7+a8*k8+a9*k9は、第1のドット積操作の結果であり、a2*k1+a3*k2+b1*k3+a5*k4+a6*k5+b2*k6+a8*k7+a9*k8+b3*k9は、第2のドット積操作の結果である。
【0053】
ドット積操作のサブセットを計算するために、入力サブマトリックスの異なる要素を含む入力ベクトルが提供される。異なる要素は、予め定義された順序に従って入力ベクトル内で配置されるので、入力ベクトルの要素は、クロスバー・アレイの行ラインの対応するシーケンスへと、クロスバー・アレイに同時に入力されるように構成することができる。例えば、もし入力ベクトルが、5要素を有する場合、この5要素は、一度にクロスバー・アレイのそれぞれ5つの連続する行ラインに入力することができる。この5つの連続する行ラインは、第1の5つの行ライン102.1-5、又はクロスバー・アレイの5つの連続する行ラインのもう1つのシーケンスとすることができる。例えば、入力ベクトルの第1の要素は、所与の行ライン、例えば、クロスバー・アレイの第1の行ライン102.1へと、入力ベクトルの第2の要素は、それに続く行ライン、例えばクロスバー・アレイの第2の行ライン102.2へと入力されることができる、と言った具合である。図3の実施例に従い、入力ベクトル310は、入力サブマトリックス301及び303の異なる要素、a1,a2,a3,a4,a5,a6,a7,a8,a9,b1,b2及びb3を含むことができる。
【0054】
入力ベクトル310内での異なる要素の位置及び順序に応じて、畳み込みマトリックスは、ステップ201でそれに応じてクロスバー・アレイに格納することができる。例えば、これは、入力ベクトル内の異なる要素を多数回再配置して、多重再配置された入力ベクトルを得ることにより実行することができる。多重再配置された入力ベクトルのそれぞれについて、クロスバー・アレイ内の畳み込みマトリックスの格納位置の対応するセットが決定される。これは、格納位置の多数のセットを与える。例えば、所与の再配置入力ベクトルについて、格納位置の対応するセット内での畳み込みマトリックスの格納は、所与の再配置入力ベクトルを、クロスバー・アレイのそれぞれの行ラインに入力することにより、ドット積操作のセットについて計算することを可能とする。格納位置のセットのそれぞれは、クロスバー・アレイの表面を占めることができる。ステップ201では、畳み込みマトリックスは、最小の表面を占有する格納位置のセットにおいて格納することができる。
【0055】
異なる要素の入力ベクトルは、ステップ203で、クロスバー・アレイに入力することができ、ドット積操作のサブセットが格納された畳み込みマトリックスを使用して実行される。例えば、入力ベクトルのそれぞれの要素は、クロスバー・アレイの対応する行ラインに入力することができる。クロスバー・アレイの列の出力は、ドット積操作のサブセットの結果を得ることを可能とする。
【0056】
図3の実施例に従い、畳み込みマトリックス305及び307は、クロスバー・アレイ300の2つの連続する行ラインに格納することができ、入力ベクトルは、次の順序の異なる要素を含む:b1,b2,b3,a2,a5,a8,a3,a6,a9,a1,a4及びa7。第1の列の出力px1は、第1の結果、a1*k1+a2*k2+a3*k3+a4*k4+a5*k5+a6*k6+a7*k7+a8*k8+a9*k9であり、第2の列の出力px2は、第2の結果、a2*k1+a3*k2+b1*k3+a5*k4+a6*k5+b2*k6+a8*k7+a9*k8+b3*k9である。
【0057】
図4は、畳み込みニューラル・ネットワーク(CNN)の推定処理の少なくとも部分を実行するための方法のフローチャートである。簡略化の目的のため、図4の方法を、図5A~Bの実施例を参照して説明するが、これに限定されることはない。CNNは、例えば、深度dinの入力特徴マップ501を入力として受領する。入力特徴マップ501は、dinのチャネル又はレイヤを含むことができ、例えば特徴マップは、din=3の色チャネルを含むことができる。したがって、入力特徴マップ501は、多次元マトリックスとして参照することができる。CNNの推定処置は、サイズがk*kのカーネルと、入力特徴マップ501との畳み込みを含み、これが深度doutを有する出力特徴マップ503を与える。カーネルの数は、例えば、doutに等しくすることができる。出力特徴マップ503は、doutのチャネルを含むことができる。したがって、出力特徴マップ503は、また多次元マトリックスである。説明の簡略化のため、出力特徴マップ503は、8×8ピクセルを含むものとして示され、ここで複数のピクセルのうちのピクセルは、出力特徴マップ503のdout要素を含む。図5Aは、2つのピクセルpix1及びpix2を示す。第1のピクセルpix1は、出力特徴マップ503のそれぞれのチャネル内で、dout個の値(又は要素)pix1_1,pix1_2...pix1_doutを有する。第2のピクセルpix2は、出力特徴マップ503のそれぞれのチャネル内で、dout個の値(又は要素)pix2_1,pix2_2...pix2_doutを有する。
【0058】
図5Bは、4つのピクセルpix1,pix2,pix3及びpix4を示す。第1のピクセルpix1は、出力特徴マップ503のそれぞれのチャネル内で、dout個の値(又は要素)pix1_1,pix1_2...pix1_doutを有する。第2のピクセルpix2は、出力特徴マップ503のそれぞれのチャネル内で、dout個の値(又は要素)pix2_1,pix2_2...pix2_doutを有する。第3のピクセルpix3は、出力特徴マップ503のそれぞれのチャネル内で、dout個の値(又は要素)pix3_1,pix3_2...pix3_doutを有する。第4のピクセルpix4は、出力特徴マップ503のそれぞれのチャネル内で、dout個の値(又は要素)pix4_1,pix4_2...pix4_doutを有する。
【0059】
例えば、出力特徴マップ503の単一のチャネルのピクセル値(例えばpix1_1及びpix2_1)を得るために、以下が実行される。k×kのカーネルは、畳み込みを実行するために、入力特徴マップ501のチャネルを通してシフトさせることができる。これは、1つのカーネルと、k*k*dinのサイズの1つのサブマトリックスとの間のドット積操作におけるそれぞれのピクセル及びそれぞれのチャネルについて行われる。図5A~Bの実施例に続いて、入力特徴マップ501は、それぞれのチャネルにおいて10×10のピクセルを有し、かつチャネル上で3×3のカーネルをシフトさせることにより、出力特徴マップのそれぞれのチャネルについて、64のドット積操作を与える(3×3のピクセルと、3×3のカーネルとのドット積操作)。入力特徴マップ501のそれぞれのドット積操作は、例えば、3×3×din(又は3×3ピクセル)のサイズを有する入力サブマトリックス505を含むことができる。例えば、出力特徴マップ503の第1のチャネルのピクセル値pix1_1を得るために、それぞれの入力サブマトリックス505上で1つのドット積操作を実行することができる。例えば、このドット積操作は、サブマトリックス505のそれぞれのチャネルについて、同一又は異なる3×3カーネルを使用して実行することができる。出力特徴マップ503の単一のチャネルを得るために、64のドット積操作が実行される。したがって、dout*64のドット積操作は、出力特徴マップ503を得るための入力特徴マップ501上でのマトリックス畳み込みに含まれるドット積操作のセットである。
【0060】
図5Aは、dout*2のドット積操作が1タイムステップ(例えば1クロックサイクル)で、クロスバー・アレイによって計算することができる1つのマッピング方法を例示する。図5Bは、クロスバー・アレイ上での畳み込みマトリックスの1つのマッピングを例示しており、dout*4のドット積操作が1タイムステップで計算することができる。図5Aに示すdout*2のドット積操作は、出力マトリックスの2つのピクセルpix1及びpix2を得るために、dout*din*2カーネルを含むことができる。図5Bのdout*4のドット積操作は、ピクセル、pix1,pix2,pix3及びpix4を計算するために、dout*4のカーネルを含むことができる。したがって、図5Aと、図5Bとの違いは、単一のクロスバー・アレイ上で実行されるべきドット積操作のサブセットが異なることである。図5Aでは、2つのピクセルpix1及びpix2がクロスバー・アレイ520により計算されるが、図5Bでは、4つのピクセルpix1,pix2,pix3及びpix4が、クロスバー・アレイ620により計算される。
【0061】
ステップ401において、ドット積操作の全体のセットの、どのドット積操作のサブセットを互いに実行すべきか、又は単一のクロスバー・アレイを使用して並列に実行するべきかを決定することができる。例えば、図5Aでは、入力マトリックス505及び507を含むdout*2のドット積操作のセットが決定されるか、又は選択される。図5Bでは、入力マトリックス505,507,509及び511を含むdout*4のドット積操作のセットが決定されるか、又は選択される。
【0062】
ステップ403では、決定されたドット積操作のサブセットに含まれる入力サブマトリックスの、異なる要素を識別することができる。図5Aの実施例では、dout*2のドット積操作の入力サブマトリックスにおける異なる要素の数を、din*k*+k*dinに等しくすることができるが、一般には、入力特徴マップ501の入力サブマトリックスにおける異なる要素の数は、図5A~Bに示されるように、
【0063】
【数7】
【0064】
である。ここで、Nは、計算されるべきピクセルの数、例えば図5Aにおいては、N=2であり、図5Bでは、N=4である。
【0065】
ステップ405では、決定されたドット積操作のサブセットの実行のためのすべてのカーネルを、クロスバー・アレイ内に格納する。
【0066】
例えば、図5Aは、識別された異なる要素に対応する行ライン数、din*k*k+k*din、及び計算されるべきピクセルのチャネルに対応する列数を有するクロスバー・アレイ520を示す。例えば、図5Aでは、列ライン数は、2*doutである。クロスバー・アレイそれぞれは、k*k*dinのカーネル要素を格納する(例えばdin=3の場合、カーネルは、それぞれの行に格納することができる。)。doutチャネルのための第1のピクセルpix1は、列521により得ることができ(例えば、列521の第1の列は、値pix1_1を与え、列521の第2の列は、値pix1_2を与えるなど、とすることができる。)、そしてすべてのdoutチャネルについての第2のピクセルの値pix2は、列522により得ることができる(例えば、列522の第1の列は、値pix2_1を与え、列522の第2の列は、値pix2_2を与えるなど、とする。)。図5Aのカーネルにより占有される領域は、矩形531及び532により規定され、クロスバー・アレイの残りの要素は、図5Aに示されるように、ゼロに設定することができる。図5A~Bに示されるクロスバー・アレイの領域は、例示の目的のみのためである。例えば、矩形531,532及び631~634のサイズは、カーネルのサイズk、din及びdoutの値により決定される。
【0067】
例えば、図5Bは、識別された異なる要素の数、din*k*k+3*k*dinに対応する行ライン数、及び計算されるべきピクセルのチャネルの数に対応する列数を有するクロスバー・アレイ620を示す。例えば、図5Bにおいては、列ライン数は、4*doutである。図5Bに示されるように、第1のピクセルpix1の値は、列621により得ることができ、第2のピクセルの値pix2は、列622により得ることができ、第3のピクセルの値pix3は、列623により得ることができ、第4のピクセルの値pix4は、列624により得ることができる。図5Bのクロスバー・アレイのカーネルにより占有される領域は、矩形631、632、633及び634により規定され、クロスバー・アレイの残りの要素は、図5Bに示されるようにゼロに設定することができる。
【0068】
したがって、図5A及び5B(及びまた図3)に示されるように、カーネルは、表面が有効な仕方でクロスバー・アレイ上に格納されるので、それらは、クロスバー・アレイの最適な表面領域を占有しつつ、依然としてドット積操作のセットの実行を可能としている。
【0069】
ステップ407では、異なる要素の入力ベクトルは、クロスバー・アレイから決定されたドット積操作のサブセットの計算結果を収集するために、クロスバー・アレイ520へと入力することができる。入力ベクトルは、同時にクロスバー・アレイに入力することができるので、クロスバー・アレイは、ドット積操作のすべてのサブセットを、例えば1クロックサイクルで実行することができる。
【0070】
図5Aの実施例では、それぞれの行は、出力特徴マップ503の単一のチャネルのピクセル値を出力し、例えば、値pix1_1をクロスバー・アレイ520の列521の第1の列の出力とすることができる。図5Bの実施例では、それぞれの列は、出力特徴マップ503の単一のチャネルのピクセル値を出力することができ、例えば、値pix2_1は、クロスバー・アレイ620の列622の第1の列の出力とすることができる。クロスバー・アレイにより出力されるピクセル値は、読み込まれて、出力マトリックスの要素を提供する。
【0071】
図4の方法は、ドット積操作のセットのさらなるサブセットについて反復することができる。例えば、第1の実装において決定されたドット積操作のサブセットが、dout*2のドット積操作を含む場合、本方法は、例えば、図5Bの入力マトリックス509及び511をカバーする、もう1つのdout*2のドット積操作について反復することができる。本方法の所与の反復において、クロスバー・アレイに格納されたカーネルの値は、削除することができる(又は上書きされる)ので、新たな値がクロスバー・アレイ内に格納できる。
【0072】
図6は、例えば、図2のドット積操作のサブセットを選択するための方法を例示する。図5A及び5Bのように、図6は、入力特徴マップ601及び出力特徴マップ603を示す。出力特徴マップ603は、本主題にしたがって処理することができる、1つの水平方向及び垂直方向に続くピクセルを含む。単一のクロスバー・アレイにより処理されるべきピクセルの数は、垂直方向を、ピクセルの固定数に固定し、かつ他の方向に沿ったピクセル数を選択することにより決定することができるので、これらは単一のクロスバー・アレイを使用して並列に実行することができる。
【0073】
例えば、サイズd1(垂直方向における)を、2つのピクセルpix1及びpix5に固定し、垂直方向にある他のピクセルを選ぶか又は選択する。例えば、もし4つのピクセルを計算すると決定した場合、pix2及びpix6の計算(水平方向に続く)がpix1及びpix5の計算に追加される。例えば、もし8つのピクセル(図6に示される)を計算すると決定された場合、それらの値を計算するためにpix2,pix3,pix7,pix4及びpix8(水平方向に続く)がpix1及びpix5に追加される。
【0074】
計算するべきピクセルの全数は、クロスバー・アレイにより実行されるべきドット積操作のサブセットを決定する。例えば、d1を見出すことにより(すなわち、固定された1つの方向)、他の方向に沿ったピクセルを並列的に計算することができる。図6の実施例においては、dout*8のドット積操作が実行することができる。dout*8のドット積操作は、クロスバー・アレイ720に格納される。図6に示すように、いくつかのカーネルは、入力ベクトルの要素を共有しないが、クロスバー領域上の複数のカーネルにより占有される全領域は、依然として最適領域とすることができる。図5A~Bのように、図6は、畳み込みマトリックスにより占有される領域を、異なる表示フォーマットを有する矩形として示しており、その領域によりカバーされないクロスバー・アレイの残りの要素は、ゼロに設定される。
【0075】
図7は、ResNet700アーキテクチャのグラフ表現を示す。図7は、TesNetが5つの異なるレベル701~705を有することを示す。レベル701~705のそれぞれのレベルは、異なるサイズの多次元マトリックスを含むことができる。例えば、図7に示されるように、レベル1の出力マトリックス701及びレベル2の702は、16チャネルを有し、かつ3×3のサイズのカーネルを含む。それぞれのレイヤ710に伴われるクロスバー・アレイは、出力マトリックスの多数のピクセルを出力する。例えば、レベル2のレイヤ710のクロスバー・アレイは、それぞれのピクセルが出力マトリックスの16の値又は要素を有する、少なくとも2つのピクセルを出力することができる。これは、2つの連続するレイヤ710を結合するラインとして示される相互接続が1タイムステップでデータを送付する場合、その帯域幅要求が、16の倍数となることを意味する。図7は、最大の帯域幅が、レベル4に対して使用するもの、すなわち、64の倍数であることを示す。
【0076】
ResNetのレイヤ710のクロスバー・アレイの間の相互接続は、最大帯域幅に基づいて設計することができるが、いくつかの相互接続は、最大帯域幅のそれよりも低くてもよい。結果として、レベル2の702のクロスバー・アレイは、4(=64/16)の多さのピクセルを計算するために使用することができ、レベル3の703のクロスバー・アレイは、2(=64/32)の多さのピクセルを計算することができる。このやり方は、64の最大帯域幅を常時使用することを可能とする。
【0077】
1つの実施例において、それぞれのレイヤがクロスバー・アレイに伴われたCNNを提供することができる。CNNの学習又は推定は、例えば、出力特徴マップを生成するため、というレイヤ操作を含むことができる。CNNのクロスバー・アレイは、本方法を使用する出力特徴マップのそれぞれのピクセルを計算するように構成することができるので、ピクセルは、それぞれのクロスバー・アレイにより並列に、かつピクセルの数において生成することができるので、帯域幅は、全体のCNNネットワークを通して一定である。
【0078】
本発明の特徴を、本発明の実施形態により、フローチャートの例示又は方法のブロック図又は装置又はそれらの組み合わせ及び装置(システム)を参照して本明細書で説明される、フローチャートの例示又はブロック図又はこれらの組み合わせ及びフローチャートの例示内のブロック又はブロック図又はこれらの両方の組み合わせは、コンピュータ可読なプログラム命令により実装することができることについては理解されるところであろう。
【0079】
図8を参照すると、システム1000は、一般的なコンピューティング・デバイスの形式で示されたコンピュータ・システム又はコンピュータ1010を含む。本明細書で説明した方法は、例えばコンピュータ可読な記録デバイス上に実体化されたプログラム(複数)1060(図8)において実施することができ、コンピュータ可読な記録デバイスは、例えば一般にメモリ1030として参照され、より具体的には、図8に示されるコンピュータ可読な記録媒体1050である。例えばメモリ1030は、RAM(ランダム・アクセス・メモリ)又はROM(リード・オンリー・メモリ)及びキャッシュ・メモリ1038といった記録媒体1034を含むことができる。プログラム1060は、コンピュータ・システム1010のプロセッシング・ユニットまたはプロセッサ1020により実行される(プログラム・ステップ、コード又はプログラム・コードを実行するため)。追加的なデータ・ストレージは、またデータ1114を含むことができるデータベース1110として実体化することができる。図8に示されたコンピュータ・システム1010及びプログラム1060は、ユーザにローカルな、又はリモート・サービス(例えば、クラウドに基づいたサービス)として提供することができるコンピュータ及びプログラムの一般的な代表例であり、ウェブサイト・アクセス可能な通信ネットワーク1200(例えば、ネットワークを相互作用する、インターネット、又はクラウド・サービス)を使用する、さらなる実施例において提供することができる。コンピュータ・システム1010は、また一般に本明細書では、ラップトップ又はデスクトップ・コンピュータなど、1つ又はそれ以上のサーバ、データセンタの単独又は部分としてのコンピュータ・デバイス又はデバイス内に含まれるようなコンピュータを含むことについて理解される。コンピュータ・システムは、ネットワーク・アダプタ/インタフェース1026及び入力/出力(I/O)インタフェース(複数)1022を含むことができる。I/Oインタフェース1022は、コンピュータ・システムに接続することができる外部デバイス1074と、データの入力及び出力を可能とする。ネットワーク・アダプタ/インタフェース1026は、コンピュータ・システムと、通信ネットワーク1200として一般には示されるネットワークとの間での通信を提供することができる。
【0080】
コンピュータ1010は、コンピュータ・システムにより実行されるプログラム・モジュールといった、コンピュータ・システムが実行可能な命令の一般的なコンテキストにおいて記述することができる。一般には、プログラム・モジュールは、特定のタスクを実行するか又は特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。方法ステップ及びシステム・コンポーネント及び技術は、本法及びシステムのそれぞれのステップのタスクを実行するためのプログラムのモジュールにおいて実施することができる。モジュールは、概ね図8にプログラム・モジュール1064として代表されている。プログラム1060及びプログラム・モジュール1064は、プログラムの特定のステップ(複数)、ルーチン(複数)、サブルーチン(複数)、命令(複数)又はコードを実行することができる。
【0081】
本開示の方法は、モバイル・デバイスといったデバイス上でローカルに動作することができるし、又はリモートで、かつ通信ネットワーク1200を使用してアクセスすることができる、例としてサーバ1100上で動作することができる。プログラム又は実行可能な命令は、またプロバイダによるサービスとして提供されることもできる。コンピュータ1010は、タスクが通信ネットワーク1200を通してリンクされたリモート処理デバイスにより実行される分散クラウド・コンピューティング環境において実施されてもよい。分散クラウド・コンピューティング環境においては、プログラム・モジュールは、メモリ記録デバイスを含むローカル及びリモート・コンピュータ・システム両方の記録媒体に配置することができる。
【0082】
より具体的には、図8に示すように、システム1000は、例示的な周辺デバイスと共に汎用目的のコンピューティング・デバイスの形式で示されるコンピュータ・システム1010を含む。コンピュータ・システム1010のコンポーネントは、限定されることは無く、1つ又はそれ以上のプロセッサ又はプロセッシング・ユニット1020と、システム・メモリ1030と、システム・メモリ1030を含む種々のシステム・コンポーネントをプロセッサ1020に結合するバス1014とを含む。
【0083】
バス1014は、メモリ・バス又はメモリ・コントローラ、ペリフェラル・バス、グラフィックス・アクセラレータ・ポート、及びプロセッサ又は種々のバス・アーキテクチャの如何なるものを使用するローカル・バスを含む、1つ又はそれ以上のバス構造のいくつかのタイプの如何なるものも表す。例示の目的で、限定的でなく、そのようなアーキテクチャは、インダストリー・スタンダード・アーキテクチャ(ISA)バス、マイクロ-チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA)ローカル・バス、及びペリフェラル・インタコネクト(PCI)バスを含む。
【0084】
コンピュータ1010は、典型的には、種々のコンピュータ可読な媒体を含む。そのような媒体は、コンピュータ1010(例えばコンピュータ・システム又はサーバ)によりアクセス可能な利用可能な如何なる媒体とすることができ、揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体を含む。コンピュータ・メモリ1030は、ランダム・アクセス・メモリ(RAM)といった揮発性メモリ又はキャッシュ・メモリ1038又はそれら両方といった追加のコンピュータ可読な媒体1034を含むことができる。コンピュータ1010は、さらに、1実施例においては、可搬性のコンピュータ可読な記録媒体1072である、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータ・ストレージ媒体を含むことができる。1実施形態においては、コンピュータ可読な記録媒体1050は、取り外し不可能で、不揮発性の磁気媒体との間で読取及び書き込みするために提供することができる。コンピュータ可読な記録媒体1050は、例えばハードドライブとして実体化することができる。追加のメモリ及びデータ記録が、例えばデータ1114を記録し、処理ユニット1020と通信するための記録システム1110(例えばデータベース)として提供することができる。データベースは、サーバ1100上に又はその部分に格納することができる。図示しないが、取り外し可能で不揮発性の磁気ディスク(例えば、“フロッピー・ディスク(登録商標)”)及びCD-ROM、DVD-ROM又は他の光学的媒体といった取り外し可能で不揮発性の光学ディスクとの間で読み込み及び書き込みが可能な光学ディスク・ドライブを提供することができる。そのような例においては、それぞれは、1つ又はそれ以上の媒体インタフェースによりバス1014へと接続することができる。さらに図示し、かつ以下に説明するように、メモリ1030は、本発明の実施形態の機能を遂行するように構成された1つ又はそれ以上のプログラム・モジュールを含む、少なくとも1つのプログラム製品を含むことができる。
【0085】
本開示の方法は、例えば、一般にプログラム(複数)1060として参照される1つ又はそれ以上のコンピュータ・プログラムにおいて実体化することができ、コンピュータ可読な記録媒体1050内のメモリ1030に格納することができる。プログラム・モジュール1064は、本明細書で説明したように本発明の実施形態の機能又は方法論又はその両方を全般に遂行することができる。1つ又はそれ以上のプログラム1060は、メモリ1030に記録され、プロセッシング・ユニット1020により実行可能である。実施例の目的として、メモリ1030は、コンピュータ可読な記録媒体1050上に、オペレーティング・システム1052、1つ又はそれ以上のアプリケーション・プログラム(複数)1050、他のプログラム・モジュール、及びプログラムデータを格納する。コンピュータ可読な記録媒体1050上に格納されるプログラム1060及びオペレーティング・システム1052及びアプリケーション・プログラム(複数)1054は、同様にプロセッシング・ユニット1020により実行可能である。
【0086】
コンピュータ1010は、また、キーボード、ポインティング・デバイス、ディスプレイ1080など、1つ又はそれ以上の外部デバイス1074と通信することができる;1つ又はそれ以上のデバイスは、ユーザを、コンピュータ1010又はコンピュータ1010を1つ又はそれ以上のコンピューティング・デバイスと通信を可能とする如何なるデバイス(例えばネットワーク・カード、モデムなど)、又はそれら両方に相互作用させることが可能である。そのような通信は、入力/出力(I/O)インタフェース1022を介して発生することができる。さらに、コンピュータ1010は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、又は公衆ネットワーク(インターネット)又はそれらの組み合わせといった、1つ又はそれ以上のネットワーク1200とネットワーク・アダプタ/インタフェース1026を介して通信可能である。図示するように、ネットワーク・アダプタ1026は、コンピュータ1010の他のコンポーネントとバス1014を介して通信する。図示しないが、他のハードウェア又はソフトウェア又はそれら両方のコンポーネントは、コンピュータ1010との組み合わせで使用することができるであろうことは理解されるべきである。実施例は、限定することではなく、マイクロ・コード、デバイス・ドライバ1024、冗長処理ユニット、及び外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどを含む。
【0087】
コンピュータ又はコンピュータ1010上で動作するプログラムは、通信ネットワーク1200として実体化された1つ又はそれ以上の通信ネットワークを介してサーバ1100として実体化されたサーバと通信することができる。通信ネットワーク1200は、例えば通信媒体及びワイヤレス、有線、又は光ファイバ、及びルータ、ファイアウォール、スイッチ、及びゲートウェイ・コンピュータを含むネットワーク・リンクを含むことができる。通信ネットワークは、有線、無線通信リンク、又はファイバ光学ケーブルといった接続を含むことができる。通信ネットワークは、ライトウェイト・ディレクトリ・アクセス・プロトコル(LDAP)、トランスポート・コントトール/インターネット・プロトコル(TCP/IP)、ハイパーテキスト・トランスポート・プロトコル(HTTP)、ワイヤレス・アプリケーション・プロトコル(WAP)などといった、種々のプロトコルを使用して互いに通信するインターネットネットワークといったワールドワイドのネットワーク及びゲートウェイの集積を表すことができる。ネットワークは、また、異なったタイプの、例えばインターネット、ローカル・エリア・ネットワーク(LAN)又はワイド・エリア・ネットワーク(WAN)といった多くのネットワークを含むことができる。
【0088】
1つの実施形態では、コンピュータは、インターネットを使用して、Web(ワールド・ワイド・ウェブ)上でウェブサイトにアクセスすることができるネットワークを使用することができる。1つの実施形態では、コンピュータ1010は、モバイル・デバイスを含み、インターネット又は例えばセルラ・ネットワークといった公衆切替電話網を含むことができる通信システム又はネットワーク1200を使用することができる。PSTNは、電話線、ファイバ光学ケーブル、マイクロ波通信リンク、セルラ・ネットワーク、及び衛星通信を含むことができる。インターネットは、例えば、テキスト・メッセージ(複数)(SMS)、マルチメディア・メッセージング・サービス(MMS)(SMSに関連する)、電子メール、又はウェブ・ブラウザを介して検索エンジンに対してクエリーを送付するためのセルラ・ホン又はラップトップ・コンピュータを使用して、多くの検索及びテキスト化技術を容易にすることができる。検索エンジンは、検索結果、すなわち、クエリーに対応するウェブサイト、ドキュメントまたは他のダウンロード可能なデータへのリンクをリトリーブすることを可能とし、かつ同様に、例えば検索結果をウェブ・ページとしてデバイスを介してユーザに提供することができる。
【0089】
本開示は、クラウド・コンピューティングについての詳細を含むが、本明細書内で参照した教示の実装は、クラウド・コンピューティング環境に限定されることはないことについて理解されるべきである。むしろ、本開示の環境は、現在知られ、又は将来開発される他の如何なるタイプのコンピューティング環境との組み合わせにおいても実装することができる。
【0090】
クラウド・コンピューティングは、最小限の管理労力又はサービス提供者との交流をもって、迅速に提供及び開放構成可能なコンピューティング資源(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン及びサービス)の共用されるプールにアクセスするための利便性のある、オンデマンドのネットワークアクセスのためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つの配置モデルを含むことができる。
【0091】
特徴は以下のとおりである:
【0092】
オンデマンド・セルフサービス:クラウドのコンシューマは、サーバ時間、及びネットワーク・ストレージといったコンピューティング能力を、サービスの提供者との人間的交流を必要とすることなく必要なだけ自動的に一方向的に提供される。
【0093】
広範なネットワークアクセス:能力は、ネットワーク上で利用可能であり、かつ異なったシン又はシッククライアント・プラットフォーム(例えば、モバイルホン、ラップトップ及びPDA)による利用を促す標準的な機構を通してアクセスされる。
【0094】
リソースの共用:提供者のコンピューティング資源は、マルチテナント・モデルを使用し、動的に割当てられる必要に応じて再割り当てられる異なった物理的及び仮想化資源と共に多数の消費者に提供するべく共用される。コンシューマは概ね提供される資源の正確な位置(例えば、国、州、又はデータセンタ)に関する制御又は知識を有さず、抽象化の高度の階層において位置を特定することができるというように、位置非依存の感覚が存在する。
【0095】
迅速な弾力性:機能は、迅速かつ弾力的に、場合によっては自動的に供給され素早くスケールアウトし、迅速に解放して素早くスケールインすることが可能である。コンシューマにとっては、供給のために利用可能な機能は、多くの場合、制限がないように見え、いつでも任意の量で購入することができる
【0096】
計測されるサービス:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、及びアクティブ・ユーザ・アカウント)に適したいくつかの抽象化レベルで計量機能を活用することによって、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視し、制御し、報告することで、使用されているサービスのプロバイダ及びコンシューマの両方に対して透明性を提供することができる。
【0097】
サービスモデルは、以下のとおりである:
【0098】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)のようなシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーションの機能も含む、基盤となるクラウド・インフラストラクチャを管理又は制御することはない。
【0099】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダがサポートするプログラミング言語及びツールを用いて作成された、コンシューマが作成又は獲得したアプリケーションを、クラウド・インフラストラクチャ上に配置することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む、基盤となるクラウド・インフラストラクチャを管理又は制御することはないが、配置されたアプリケーションを制御し、可能であればアプリケーション・ホスティング環境の構成を制御する。
【0100】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、及びその他の基本的なコンピューティング・リソースの提供であり、コンシューマは、オペレーティング・システム及びアプリケーションを含むことができる任意のソフトウェアを配置し、実行させることが可能である。コンシューマは、基盤となるクラウド・インフラストラクチャを管理又は制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションの制御を有し、可能であれば選択ネットワーキング・コンポーネント(例えば、ホストのファイアウォール)の限定的な制御を有する。
【0101】
配置モデルは、以下の通りである。
【0102】
プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のためだけに動作する。これは、その組織又は第三者によって管理することができオン・プレミス又はオフ・プレミスで存在することができる。
【0103】
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共通の利害関係(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。これは、それらの組織又は第三者によって管理することができ、オン・プレミス又はオフ・プレミスに存在することができる。
【0104】
パブリック・クラウド:クラウド・インフラストラクチャは、公衆又は大きな産業グループが利用可能できるようにされており、クラウド・サービスを販売する組織によって所有される。
【0105】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)を組み合わせたものであり、これらのクラウドは、固有のエンティティのままであるが、データ及びアプリケーションのポータビリティを可能にする標準化技術又は専有技術によって互いに結合される(例えば、クラウド間の負荷バランスのためのクラウド・バースティング)。
【0106】
クラウド・コンピューティング環境は、無国籍性、粗結合性、モジュール性、及び意味的相互運用性に焦点を合わせたサービス指向のものである。クラウド・コンピューティングの心臓部において、相互接続された複数のノードを含むものがインフラストラクチャである。
【0107】
図9は、例示的なクラウド・コンピューティング環境50を示す。図示するように、クラウド・コンピューティング環境50は、1つ又はそれ以上のクラウド・コンピューティング・ノード10を含み、それらと共にクラウド・コンシューマにより使用される例えばパーソナル・デジタル・アシスタント(PDA)又はセルラ電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、又は自動車コンピュータ・システム54N又はこれらの組合せといったローカル・コンピューティング・デバイスが通信する。ノード10は、互いに通信することができる。これらは、上述したプライベート、コミュニティ、パブリック、又はハイブリッド・クラウド、又はそれらの組合せといった、1つ又はそれ以上のネットワーク内で、物理的又は仮想的にグループ化することができる(不図示)。これは、クラウド・コンピューティング環境50が、クラウド・コンシューマがローカルなコンピューティング・デバイス上のリソースを維持する必要を無くするための、インフラストラクチャ、プラットホーム、又はソフトウェア・アズ・ア・サービスを提供することを可能とする。図9に示すコンピューティング・デバイス54A-Nのタイプは、例示を意図するためのみのものであり、コンピューティング・ノード10及びクラウド・コンピューティング環境50は、任意のタイプのネットワーク又はアドレス可能なネットワーク接続(例えばウェブ・ブラウザを使用する)、又はそれらの両方を通じて、いかなるタイプのコンピュータ化デバイスとも通信することができることが理解される。
【0108】
ここで、図10参照すると、クラウド・コンピューティング環境50(図9)により提供される機能的抽象レイヤのセットが示される。予め、図10に示したコンポーネント、レイヤ、及び機能は、例示することのみを意図したものであり、本発明の実施形態は、これらに限定されることは無いことは理解されるべきである。図示したように、後述するレイヤ及び対応する機能が提供される。
【0109】
ハードウェア及びソフトウェアレイヤ60は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61;RISC(縮小命令セットコンピュータ)アーキテクチャに基づく複数のサーバ62;複数のサーバ63;複数のブレード・サーバ64;複数のストレージ・デバイス65;及びネットワーク及びネットワーキング・コンポーネント66を含むことができる。いくつかの実施形態ではソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67及びデータベース・ソフトウェア68を含む。
【0110】
可視化レイヤ70は、それから後述する仮想エンティティの実施例が提供される抽象レイヤ;仮想サーバ71;仮想ストレージ72;仮想プライベート・ネットワークを含む仮想ネットワーク73;仮想アプリケーション及びオペレーティング・システム74;及び仮想クライアント75を提供する。
【0111】
1つの実施例では、マネージメント・レイヤ80は、下記の機能を提供することができる。リソース提供部81は、コンピューティング資源及びクラウド・コンピューティング環境内でタスクを遂行するために用いられる他の資源の動的獲得を提供する。計測及び価格設定部82は、クラウド・コンピューティング環境内で資源が使用されるとコストの追跡を提供すると共に、これらの資源の消費に対する課金又は請求を提供する。1つの実施例では、これら資源としてはアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティ部は、クラウト・コンシューマ及びタスクの同定及び認証と共にデータ及び他の資源の保護を提供する。ユーザ・ポータル部83は、コンシューマに対するクラウド・コンピューティング環境及びシステム・アドミニストレータへのアクセス性を提供する。サービスレベル・マネージメント部84は、クラウド・コンピューティング資源の割り当て及び管理を提供し、必要なサービス・レベルに適合させる。サービス・レベル・アグリーメント(SLA)プランニング・フルフィルメント部85は、SLAにしたがって将来的な要求が要求されるクラウド・コンピューティング資源の事前準備を行うと共にその獲得を行う。
【0112】
ワークロード・レイヤ90は、クラウド・コンピューティング環境を利用するための機能の例示を提供する。このレイヤによって提供されるワークロード及び機能の例としては、マッピング及びナビゲーション91;ソフトウェア開発及びライフタイム・マネージメント92;仮想教室教育伝達93;データ分析処理94;トランザクション・プロセッシング95;及びデータ分類96を含むことができる。
【0113】
本明細書で記載するプログラムは、アプリケーションに基づいて識別され、本発明の特定の実施形態におけるアプリケーションのために実装される。しかしながら、本明細書における如何なる特定のプログラムの名称は、単に利便性のためのものであり、したがって本発明は、そのような名称により識別され、又は暗示され、又はそれらの両方の如何なる特定のアプリケーション単独の使用に限定されるべきではないことについて理解されるべきである。
【0114】
本発明は、いかなる可能な技術的に詳細な一体化レベルであっても、システム、方法、又はコンピュータ・プログラム製品又はこれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに対して本発明の特徴を遂行させるためのコンピュータ可読なプログラム命令をそれ上に有するコンピュータ可読な記録媒体(又は複数の媒体)を含むことができる。
【0115】
コンピュータ可読な記録媒体は、命令実行デバイスが使用するための複数の命令を保持し格納することができる有形のデバイスとすることができる、コンピュータ可読な媒体は、例えば、これらに限定されないが、電気的記録デバイス、磁気的記録デバイス、光学的記録デバイス、電気磁気的記録デバイス、半導体記録デバイス又はこれらのいかなる好ましい組み合わせとすることができる。コンピュータ可読な記録媒体のより具体的な実施例は、次のポータブル・コンピュータ・ディスク、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROM又はフラッシュ・メモリ(登録商標))、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・イオンリー・メモリ(CD-ROM)、デジタル多目的ディスク(DVD)、メモリ・スティック、フロッピー・ディスク(登録商標)、パンチ・カード又は命令を記録した溝内に突出する構造を有する機械的にエンコードされたデバイス、及びこれらの好ましい如何なる組合せを含む。本明細書で使用するように、コンピュータ可読な記録媒体は、ラジオ波又は他の自由に伝搬する電磁波、導波路又は他の通信媒体(例えば、光ファイバ・ケーブルを通過する光パルス)といった電磁波、又はワイヤを通して通信される電気信号といったそれ自体が一時的な信号として解釈されることはない。
【0116】
本明細書において説明されるコンピュータ・プログラム命令は、コンピュータ可読な記録媒体からそれぞれのコンピューティング/プロセッシング・デバイスにダウンロードでき、又は例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク又はワイヤレス・ネットワーク及びそれからの組み合わせといったネットワークを介して外部コンピュータ又は外部記録デバイスにダウンロードすることができる。ネットワークは、銅通信ケーブル、光通信ファイバ、ワイヤレス通信ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及びエッジ・サーバ又はこれらの組み合わせを含むことができる。それぞれのコンピューティング/プロセッシング・デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インタフェースは、ネットワークからコンピュータ可読なプログラム命令を受領し、このコンピュータ可読なプログラム命令を格納するためにそれぞれのコンピューティング/プロセッシング・デバイス内のコンピュータ可読な記録媒体内に転送する。
【0117】
本発明の操作を遂行するためのコンピュータ可読なプログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロ・コード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は1つ又はそれ以上の、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、“C”プログラミング言語又は類似のプログラム言語といった手続き型プログラミング言語を含むプログラミング言語のいかなる組合せにおいて記述されたソース・コード又はオブジェクト・コードのいずれかとすることができる。コンピュータ可読なプログラム命令は、全体がユーザ・コンピュータ上で、部分的にユーザ・コンピュータ上でスタンドアローン・ソフトウェア・パッケージとして、部分的にユーザ・コンピュータ上で、かつ部分的にリモート・コンピュータ上で、又は全体がリモート・コンピュータ又はサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)を含むいかなるタイプのネットワークを通してユーザ・コンピュータに接続することができ、又は接続は、外部コンピュータ(例えばインターネット・サービス・プロバイダを通じて)へと行うことができる。いくつかの実施形態では、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲートアレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電気回路がコンピュータ可読なプログラム命令を、コンピュータ可読なプログラム命令の状態情報を使用して、本発明の特徴を実行するために電気回路をパーソナライズして実行することができる。
【0118】
本明細書で説明した本発明の実施形態を、本発明の実施形態にしたがい、フローチャート命令及び方法のブロック図、又はそれらの両方、装置(システム)、及びコンピュータ可読な記録媒体及びコンピュータ・プログラムを参照して説明した。フローチャートの図示及びブロック図又はそれら両方及びフローチャートの図示におけるブロック及びブロック図、又はそれらの両方のいかなる組合せでもコンピュータ可読なプログラム命令により実装することができることを理解されたい。
【0119】
これらのコンピュータ可読なプログラム命令は、コンピュータのプロセッサ又は機械を生成するための他のプログラマブル・データ・プロセッシング装置に提供することができ、命令がコンピュータのプロセッサ又は他のプログラマブル・データ・プロセッシング装置により実行されて、フローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作を実装するための手段を生成する。これらのコンピュータ可読なプログラム命令は、またコンピュータ、プログラマブル・データ・プロセッシング装置及び他の装置又はこれらの組み合わせが特定の仕方で機能するように指令するコンピュータ可読な記録媒体に格納することができ、その内に命令を格納したコンピュータ可読な記録媒体は、フローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作の特徴を実装する命令を含む製造品を構成する。
【0120】
コンピュータ可読なプログラム命令は、またコンピュータ、他のプログラマブル・データ・プロセッシング装置、又は他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、又は他のデバイス上で操作ステップのシリーズに対してコンピュータ実装プロセスを生じさせることで、コンピュータ、他のプログラマブル装置又は他のデバイス上でフローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作を実装させる。
【0121】
図のフローチャート及びブロック図は、本発明の種々の実施形態にしたがったシステム、方法及びコンピュータ・プログラムのアーキテクチャ、機能、及び可能な実装操作を示す。この観点において、フローチャート又はブロック図は、モジュール、セグメント又は命令の部分を表すことかでき、これらは、特定の論理的機能(又は複数の機能)を実装するための1つ又はそれ以上の実行可能な命令を含む。いくつかの代替的な実装においては、ブロックにおいて記述された機能は、図示した以外で実行することができる。例えば、連続して示された2つのブロックは、含まれる機能に応じて、実際上1つのステップとして遂行され、同時的、実質的に同時的に、部分的又は完全に一時的に重ね合わされた仕方で実行することができ、又は複数のブロックは、時として逆の順番で実行することができる。またブロック図及びフローチャートの図示、又はこれらの両方及びブロック図中のブロック及びフローチャートの図示又はこれらの組み合わせは、特定の機能又は動作を実行するか又は特定の目的のハードウェア及びコンピュータ命令の組み合わせを遂行する特定目的のハードウェアに基づくシステムにより実装することができる。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
図10