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

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

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

特表2024-516514畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング
<>
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図1
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図2
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図3
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図4
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図5
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図6
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図7
  • 特表-畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-16
(54)【発明の名称】畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング
(51)【国際特許分類】
   G06F 12/06 20060101AFI20240409BHJP
   G06F 12/00 20060101ALI20240409BHJP
   G06F 12/04 20060101ALI20240409BHJP
   G06N 3/0464 20230101ALI20240409BHJP
【FI】
G06F12/06 521A
G06F12/00 560
G06F12/04 540
G06N3/0464
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023559067
(86)(22)【出願日】2022-03-22
(85)【翻訳文提出日】2023-09-26
(86)【国際出願番号】 IB2022052592
(87)【国際公開番号】W WO2022229727
(87)【国際公開日】2022-11-03
(31)【優先権主張番号】17/242,392
(32)【優先日】2021-04-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Blu-ray
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000316
【氏名又は名称】弁理士法人ピー・エス・ディ
(72)【発明者】
【氏名】ダッジ、マルティーノ
(72)【発明者】
【氏名】フランチーズ、ピア、アンドレア
(72)【発明者】
【氏名】セバスチャン、アブー
(72)【発明者】
【氏名】エレフセリウー、エヴァンゲロス、スタブロス
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA13
5B160AC12
(57)【要約】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするためのメモリ・コントローラ回路が開示される。メモリ・コントローラ回路は、選択パラメータ値を受信するための受信ユニット、及び、畳み込みニューラル・ネットワークの1つの層のピクセル値を物理メモリのメモリ・ワードに、複数のマッピング・スキーマのうちの1つに従ってマッピングするためのマッピング・ユニットを備え、マッピングは受信した選択パラメータ値の値に依存する。
【特許請求の範囲】
【請求項1】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするためのメモリ・コントローラ回路であって、
選択パラメータ値を受信する受信ユニットと、
複数のマッピング・スキーマのうちの1つに従って、前記畳み込みニューラル・ネットワークの1つの層のピクセル値を前記物理メモリのメモリ・ワードにマッピングするためのマッピング・ユニットであって、前記マッピングは前記受信した選択パラメータ値の前記値に対応するものである、マッピング・ユニットと
を備えるメモリ・コントローラ回路。
【請求項2】
前記複数のマッピング・スキーマのうちの前記1つは、ワード内隣接マッピング・スキーマであり、異なるピクセル値の部分のビット値は、1つの物理メモリ・ワードに連続してマッピングされる、請求項1に記載のメモリ・コントローラ回路。
【請求項3】
前記複数のマッピング・スキーマのうちの前記1つは、カーネル・ワード・インターリーブ・スキーマであり、異なるピクセル値の部分のビット値は、多くても畳み込みニューラル・ネットワーク演算のカーネルのサイズに等しい数のピクセルが隣接するメモリ・ワードに連続的にマッピングされるように、前記物理メモリにマッピングされる、請求項1に記載のメモリ・コントローラ回路。
【請求項4】
前記複数のマッピング・スキーマのうちの前記1つは、活性化ワード・インターリーブ・スキーマであり、ピクセル値のビット値は、メモリ・ワードが多くても1つのピクセルの前記ビット値を含むように、マッピングされる、請求項1に記載のメモリ・コントローラ回路。
【請求項5】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値のセットに含まれる、請求項1に記載のメモリ・コントローラ回路。
【請求項6】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値とは独立なものである、請求項1に記載のメモリ・コントローラ回路。
【請求項7】
前記物理メモリは、スタティック・ランダム・アクセス・メモリ、ラッチ・ベースのメモリ、及びダイナミック・ランダム・アクセス・メモリを含む群から選択される、請求項1に記載のメモリ・コントローラ回路。
【請求項8】
前記メモリ・コントローラ回路は、物理メモリと一体化されている、請求項1に記載のメモリ・コントローラ回路。
【請求項9】
前記物理メモリは、計算メモリの入力値を格納し、前記計算メモリと一体化されている、請求項1に記載のメモリ・コントローラ回路。
【請求項10】
前記物理メモリは、デジタル・メモリの入力値を格納し、デジタル処理ユニットと一体化されている、請求項1に記載のメモリ・コントローラ回路。
【請求項11】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングする方法であって、
選択パラメータ値を受信することと、
複数のマッピング・スキーマのうちの1つに従って、前記畳み込みニューラル・ネットワークの1つの層のピクセル値を前記物理メモリのメモリ・ワードにマッピングすることであって、前記マッピングは前記受信した選択パラメータ値の前記値に対応するものである、マッピングすることと
を含む方法。
【請求項12】
前記複数のマッピング・スキーマのうちの前記1つは、ワード内隣接マッピング・スキーマであり、異なるピクセル値の部分のビット値は、1つの物理メモリ・ワードに連続してマッピングされる、請求項11に記載方法。
【請求項13】
前記複数のマッピング・スキーマのうちの前記1つは、カーネル・ワード・インターリーブ・スキーマであり、異なるピクセル値の部分のビット値は、多くても畳み込みニューラル・ネットワーク演算のカーネルのサイズに等しい数のピクセルが隣接するメモリ・ワードに連続的にマッピングされるように、前記物理メモリにマッピングされる、請求項11に記載の方法。
【請求項14】
前記複数のマッピング・スキーマのうちの前記1つは、活性化ワード・インターリーブ・スキーマであり、ピクセル値のビット値は、メモリ・ワードが多くても1つのピクセルの前記ビット値を含むように、マッピングされる、請求項11に記載の方法。
【請求項15】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値のセットに含まれる、請求項11に記載の方法。
【請求項16】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値とは独立なものである、請求項11に記載の方法。
【請求項17】
前記物理メモリは、スタティック・ランダム・アクセス・メモリ、ラッチ・ベースのメモリ、及びダイナミック・ランダム・アクセス・メモリを含む群から選択される、請求項11に記載の方法。
【請求項18】
前記メモリ・コントローラ回路は、物理メモリと一体化されている、請求項11に記載の方法。
【請求項19】
前記物理メモリは、計算メモリの入力値を格納し、前記計算メモリ又はデジタル処理ユニットと一体化されている、請求項11に記載の方法。
【請求項20】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするためのコンピュータ・プログラム製品であって、
プログラム命令が具体化されたコンピュータ可読ストレージ媒体を備え、
前記プログラム命令は、1つ又は複数のコンピューティング・システム又はコントローラによって実行され、前記1つ又は複数のコンピューティング・システムに、
選択パラメータ値を受信し、
複数のマッピング・スキーマのうちの1つに従って、前記畳み込みニューラル・ネットワークの1つの層のピクセル値を前記物理メモリのメモリ・ワードにマッピングすることであって、前記マッピングは前記受信した選択パラメータ値の前記値に対応するものである、マッピングすることと
を行わせる、
コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に、メモリ・コントローラ回路に関し、より具体的には、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするためのメモリ・コントローラ回路に関する。本発明はさらに、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするための方法及びコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
人工知能(AI)は、ずっと前に研究コミュニティから脱却し、その使用は、エンタープライズ・コンピューティング環境において益々あたりまえのものとなっている。今日、AIの概念は既に、企業アプリケーション並びに民間システム(例えば、顔認識)に組み込まれている。様々なAIアルゴリズムが存在しているが、1つの有力な形態は、畳み込みニューラル・ネットワーク(CNN)に関連する。これらは、多くの場合、ノードの入力層とノードの出力層との間に多数の隠れ層を有する深層ニューラル・ネットワークとして実装される。CNNの機能若しくは自己組織化又はその両方を制御するために、多数のマトリックス/ベクトル変形が必要となり得る。具体的には、例えば、比較的小さい畳み込みカーネル・マトリックスをより大きな値のマトリックス上で移動させることにより、各々のサイクルにおいてパイプライン方式で畳み込みが実行されるときには、畳み込みカーネルのサイズに等しい、活性化の新しい行(即ち、CNNの個々のノードの活性化関数の出力値)がメモリから読み出される必要がある。それゆえに、第1のサイクルから第2のサイクルまで、活性化がそれぞれのメモリ位置から取得され、処理ユニットにロードされる必要がある。マトリックス乗算の方法は、多くの場合、以下のようになる、即ち、ベクトルの成分値、例えば活性化値又は活性化が、行方向に読出され、それぞれのマトリックス値と掛け合わされた後、例えば、出力特徴マップの一部として、メモリ内に列方向で格納され得る。ベクトル内の値のビット毎の構成に応じて、特定のアドレス指定オプションが存在する場合があり、これらの値を、高性能コンピューティングには不十分なメモリ内に格納にするために、使用することがある。それゆえに、使用されるアルゴリズムは、それぞれのCNNの結果を実時間アプリケーションにおいて使用するには遅すぎる可能性がある。
【0003】
メモリ・アクセス最適化を取り扱う幾つかの文献が既に存在する。例えば、米国特許公開第2019/0187963号A1には、CNN層を含むCNNプロセスを実行するためのシステム・オン・チップ(SoC)を構成する方法が記載されており、その方法は、各々のスケジュールについて、何回のメモリ・アクセスが必要であるかを記述するメモリ・アクセス量情報を決定することと、メモリ・アクセス量情報を、データの再使用性を記述する関係として表現することと、その関係を外部メモリに書き込み及びそれから読み出すコストと組み合わせることと、メモリ・アクセス情報を実行することと、入力特徴マップ及び出力特徴マップについてSoCのオン・チップ・メモリのメモリ割り当てを決定することとを含む。
【0004】
さらに、米国特許公開第2019/0102671号A1は、CNNアクセラレータを開示しており、これは、複数層のCNN計算を実行するためのCNN回路であって、複数層は、入力特徴マップと出力特徴毎の重みマトリックスとに従って入力特徴を受信するようになっており、第1の層の出力は、次の層のための入力を提供する、CNN回路と、Z優先マトリックスとして格納される3次元入力マトリックスにアクセスするためのマッピング回路とを含む。
【0005】
しかし、当該技術分野の刊行物は、連続するメモリ・ワード内の特定のビット領域をマスクしたりマスク解除したりする必要なく、高速の読み取り及び書き込みプロセスのための方法でベクトル要素値にアクセスして格納するための最適化された方法が記載されていない。
【0006】
従って、CNN演算の使用、特に、高速のマトリックス/ベクトル演算をサポートするように活性化関数の出力値にアクセスし、これをメモリに書き戻すことができる方法のために、メモリ・リソースのフレキシブルな使い方を提供する必要性があるであろう。
【発明の概要】
【0007】
本発明の1つの態様によれば、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするためのメモリ・コントローラ回路を提供することができる。メモリ・コントローラ回路は、選択パラメータ値を受信するための受信ユニットと、複数のマッピンッグ・スキーマのうちの1つに従って、畳み込みニューラル・ネットワークの1つの層のピクセル値を物理メモリのメモリ・ワードにマッピングするためのマッピング・ユニットとを備えることができ、マッピングは、受信した選択パラメータ値の値に対応して行われる。
【0008】
本発明の別の態様によれば、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングする方法を提供することができる。この方法は、選択パラメータ値を受信することと、複数のマッピンッグ・スキーマのうちの1つに従って、畳み込みニューラル・ネットワークの1つの層のピクセル値を物理メモリのメモリ・ワードにマッピングすることとを含み、行われるマッピングは、受信した選択パラメータ値の値に対応するものである。
【0009】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするための提案されるメモリ・コントローラ回路は、多くの利点、技術的効果、貢献若しくは改善又はこれらの組み合わせを提供することができる。
【0010】
一般に、コンピュータ・システムの物理メモリのワードに変数をどのように格納するかということは、制御可能である。そのような選択可能及び制御可能なマッピング・スキームは、アプリケーション毎に変化し得る。これらのスキームは、変数、即ちビット値を物理メモリに格納することができる方法が、基本的に異なる。変数は、常に物理メモリ・ワードの先頭から始まったり、さらに2ワードにまたがったりする場合があり、変数のビットの第1の部分は、第1のアドレス指定可能メモリ・ワードに格納することができ、変数のビットの第2の部分は、第1のアドレス指定可能メモリ・ワードに隣接する第2のアドレス指定可能メモリ・ワードに格納することができる。さらに、物理メモリ・ワードは、多くても1つの変数を含むことができ、又は、複数の変数を含むことができ、1つの変数の全ビットは、1つのアドレス指定可能メモリ・ワードに格納され、第2の変数の全ビットは、同じメモリ・ワードの第1の変数のビットに隣接して格納される。
【0011】
さらに、変数をワード境界に整列させる方法は、メモリ・コントローラ回路の外部で設定することができ、メモリ・コントローラ回路によって受信され得る特定のパラメータによって、いつでも動的に選択することもできる。一方、選択変数は、畳み込みニューラル・ネットワークの変数の一部分、例えばハイパー・パラメータとすることができる。それゆえに、選択変数は、完全なニューラル・ネットワークの層のメタ・パラメータの一部とすることができる。
【0012】
変数及び物理メモリ・ワードのこの柔軟で適応性のある整列によって、例えば高速データ・スループットのために、利用可能なメモリの最適な使用量とCNNの最適な性能との間のバランスをとることが可能になる。さらに、本明細書で提案される概念は、CNNにとって有用であるばかりでなく、マトリックス演算、特に、マトリックス・ベクトル乗算が含まれる計算結果のいずれかの他の形態にも有用であることを留意されたい。
【0013】
さらに、提案されるメモリ・コントローラ回路及び関連する方法は、あらゆるデジタル・コンピューティング環境で使用することができるが、典型的には相変化メモリ・ユニット(PCM)を使用して物理ストレージ・セル毎に1つより多くのビットを格納することができる計算メモリ・デバイスのクロスバー・アレイに使用することもできる。さらに、提案されるメモリ・コントローラ回路は、デジタル処理デバイス若しくはストレージ・デバイス又はその両方、並びに、競合又はメモリ・デバイスのクロスバー・アレイと、直接一体化することもできる。
【0014】
以下で、本発明の概念の、メモリ・コントローラ回路並びに関連する方法に適用可能な、付加的な実施形態が説明される。
【0015】
メモリ・コントローラ回路の興味深い一実施形態によれば、マッピング・スキーマは、ワード内隣接マッピング・スキーマ(IWAP)とすることができる。それにより、異なるピクセル値の部分のビット値は、1つの物理メモリ・ワードに連続してマッピングされる。それゆえに、活性化関数の出力のデジタル表示、即ち、ピクセル値の値は、ワード境界を超えて広がる連続するメモリ・ワードに格納される。これは、畳み込みニューラル・ネットワークの中間結果の、結果として得られる特徴マップを格納するための最もコンパクトな形式を表すことができる。
【0016】
メモリ・コントローラ回路の別の可能な実施形態によれば、マッピング・スキーマは、カーネル・ワード・インターリーブ・スキーマ(KLIP)とすることができる。それにより、異なるピクセル値の部分のビット値のみが、多くても畳み込みニューラル・ネットワーク演算のカーネルのサイズに等しい数のピクセルを隣接するメモリ・ワードに連続的にマッピングすることができるように、物理メモリにマッピングされる。それゆえに、ある程度のスペ―スがメモリに空のまま残され、具体的には、そのサイズに必要なビットの端部に関連するビット、即ち、畳み込み計算のためのカーネル・マトリックスの1次元(即ち、1つの列の1つの行)のために必要なビットが、残される。このバージョンは、IWAPスキーマの場合のようにはコンパクトではないかもしれない。しかし、読み取り及び書き込み動作は、IWAPスキーマに比べてより迅速となり得る。
【0017】
メモリ・コントローラ回路の別の有用な実施形態によれば、マッピング・スキーマは、活性化ワード・インターリーブ・スキーマ(PLIP)とすることができる。それにより、ピクセル値のビット値は、メモリ・ワードが多くても1つのピクセルのビット値を含むように、マッピングすることができる。メモリ・ワードの残りのビットは空のままにしておくことができる。しかし、ピクセル値のビットの長さが物理メモリのワード・サイズより大きい場合、ピクセル値を格納するために、物理メモリの1つより多くのワードを使用することができる。CNNのピクセル値のためのこのストレージ方法又はマッピング・スキーマは、読み取り及び書き込み速度の点で最も効率的な1つを表現することができる。しかし、このストレージ方法は、最も多くの物理メモリ・ワードを必要とする可能性がある。
【0018】
メモリ・コントローラ回路の別の実施形態によれば、選択パラメータ値は、畳み込みニューラル・ネットワークの層のパラメータ値のセットに含めることができる。そのようなパラメータ値のセットは、選択パラメータ値の他に、CNNの変数、例えば、特定の層の中のノードの数、層の数、活性化関数、重み値、他の層のノードへの接続の識別子、及び、メタデータ・パラメータ値(又はCNNのハイパー・パラメータ)の他のサブセットを記述する任意のデータを含むことができる。
【0019】
メモリ・コントローラ回路の別の実施形態によれば、選択パラメータ値は、畳み込みニューラル・ネットワークの層のパラメータ値とは独立なものとすることができる。従って、マッピング・スキーマは自由に選択することができ、使用されるマッピング・スキーマは、各々のマトリックス・ベクトル演算の後で動的に変えることができる。このことは、提案される概念の使いやすさについて高い自由度を可能にする。それゆえに、このマッピング・スキーマは、畳み込みニューラル・ネットワークの範囲外で使用することもできる。従って、任意の変数の物理メモリのワードへのマッピング・スキーマの変更は、アプリケーション・コンテクストとは完全に独立に、いつでも変更することができる。
【0020】
メモリ・コントローラ回路の付加的な一実施形態によれば、物理メモリは、スタティック・ランダム・アクセス・メモリ、ラッチ・ベースのメモリ、及びダイナミック・ランダム・アクセス・メモリを含む群から選択することができる。これらのタイプのワード単位で構成されたアドレス指定可能なメモリ・ユニットは、現代のコンピューティングで使用されるストレージの典型的なセットを表すことができる。しかし、本明細書で提案される概念は、ワード単位のストレージ・ユニットの他の形態(例えば、ソリッド・ステート・ディスク)にも適用することができる。
【0021】
メモリ・コントローラ回路の別の実施形態によれば、メモリ・コントローラ回路は、物理メモリと一体化することができる。それゆえに、両方のコンポーネントは、チップ上及び1つのダイの上のシリコンに集積させることができる。このことは、関連する集積回路についてより小さな物理的フットプリントをもたらすことができる。
【0022】
メモリ・コントローラ回路の別の実施形態によれば、計算メモリの入力値を格納する物理メモリは、計算メモリと一体化することができる。典型的には、計算メモリの設計は、入力及び出力ラッチを含む。CNNのピクセル値のマッピングのために、本明細書で提案される概念は、完全にオン・チップの集積形態において適用することもできる。
【0023】
メモリ・コントローラ回路のさらに強化された実施形態によれば、デジタル・メモリの入力値を格納する物理メモリ、例えば通常のRAMは、CPU(中央処理ユニット)、GPU(グラフィック処理ユニット)、又は他の専用ハードウェア回路、例えば、AIアクセラレータ、のようなデジタル処理ユニットと一体化することができる。
【0024】
さらに、実施形態は、コンピュータ又は任意の命令実行システムによって使用される又はそれに関連するプログラム・コードを提供するコンピュータ使用可能又はコンピュータ可読媒体からアクセス可能な、関連するコンピュータ・プログラム製品を含むことができる。この説明の目的のために、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置、若しくはデバイスによる使用のためのプログラム又はそれらに関連するプログラムを格納、伝達、伝搬又は移送するための手段を含むことができる任意の装置とすることができる。
【図面の簡単な説明】
【0025】
本発明の実施形態は、異なる実施形態に関して説明されることに留意されたい。具体的には、幾つかの実施形態は、方法タイプの請求項に関して説明され、他の実施形態は、装置タイプの請求項に関して説明される。しかし、当業者であれば、上記及び以下の説明から、特に断りのない限り、1つのタイプの実施形態に属する特徴の任意の組み合わせ、及び異なる実施形態に関連する特徴間の任意の組み合わせ、特に、方法タイプの請求項の特徴と装置タイプの請求項の特徴との間の組み合わせが、本明細書において開示されていると見なされることを理解するであろう。
【0026】
本発明の上記において定められた態様及びさらに別の態様は、以下で説明される実施形態の実施例から明白となり、本発明がそれらに限定されない実施形態の実施例に関して説明される。
【0027】
本発明の好ましい実施形態が、実施例としてのみ、以下の図面を参照しながら説明される。
【0028】
図1】畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするための、本発明のメモリ・コントローラ回路の一実施形態のブロック図を示す。
図2】特徴マップ、カーネル・マトリックス、及び関連する出力を含む、CNNにおけるオペレーションの一実施形態のブロック図を示す。
図3】本明細書で提案される概念の理想的な実施形態のブロック図を示す。
図4】ピクセル値を物理メモリにマッピングするためのIWAPスキーマの一実施形態のブロック図を示す。
図5】ピクセル値を物理メモリにマッピングするためのKLIPスキーマの一実施形態のブロック図を示す。
図6】ピクセル値を物理メモリにマッピングするためのPLIPスキーマの一実施形態のブロック図を示す。
図7】畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするための本発明の方法の一実施形態のブロック図を示す。
図8】本発明のメモリ・コントローラを備えたコンピューティング・システムの一実施形態を示す。
【発明を実施するための形態】
【0029】
本説明の文脈においては、以下の慣例、用語、若しくは表現又はこれらの組み合わせが使用される。
【0030】
用語「メモリ・コントローラ回路」は、典型的には物理メモリの機能を制御し、典型的には半導体デバイスの形態の物理メモリとCPUとの間のデータの流れを制御する集積電子回路を示すことができる。メモリ・コントローラはさらに、ダイナミックRAMデバイスのリフレッシュ・サイクルを制御するために使用することができる。しかし、本明細書の文脈では、メモリ・ワード・サイズ及びメモリ・ワード構成に関連して、変数がどのように物理メモリに格納され、物理メモリから取得されるかに焦点が当てられる。
【0031】
用語「マッピング」は、本明細書においては、ビット単位の長さが物理メモリのワード・サイズとは異なる変数を、物理メモリのワードに整列して格納又は取得するアクティビティを示すことができる。
【0032】
用語「畳み込みニューラル・ネットワーク」(CNN)は、ノードの入力層及びノードの出力層並びにノードの複数の隠れ層を備えた人工ニューラル・ネットワークを示すことができる。CNNの特性は、ノードのネットワーク内の1つの特徴マップから次の特徴マップへの変数を決定するために、数学的畳み込み演算が行われることである。
【0033】
用語「物理メモリ」は、アドレス毎に所定の固定ビット数からなる単一のアドレス指定可能メモリ・ワードで構成される従来の半導体ストレージ・デバイス、例えば、DRAM又はSRAMのような半導体メモリ・チップを示すことができる。
【0034】
用語「選択パラメータ値」は、本明細書では、ニューラル・ネットワークの異なる層のノードのうちの1つの活性化関数の出力変数と、この変数が物理メモリのワード境界との整列の観点で物理メモリに格納される方法との間のマッピング・スキームを選択するための少数のビット、例えば2ビットの選択変数の値を示すことができる。
【0035】
用語「ピクセル値」又は短くピクセルは、ニューラル・ネットワークのノードの1つの出力変数を示すことができる。一般に、ピクセル値という用語は、本明細書では、ノードの活性化関数の出力変数として使用することができる。それゆえに、ニューラル・ネットワーク内の層の結合出力は、ニューラル・ネットワークの関連する層で利用可能なノードと同数のピクセルとして記述することができる。
【0036】
用語「メモリ・ワード」又は「物理メモリ・ワード」は、物理メモリ、即ち関連する半導体メモリ・デバイスにおいて、直接アドレス指定可能な最小単位を示すことができる。
【0037】
用語「異なるピクセル値」は、CNNの異なるノードの異なる活性化関数の出力値の異なる変数を示すことができる。
【0038】
用語「ワード内隣接マッピング・スキーマ」、又は「ワード内隣接配置」(IWAP)は、物理メモリ内の基礎となるワード構成のワード境界に関連する変数の第1のマッピング・スキーマ又はマッピング方法を示すことができる。変数が物理メモリのワード長より少ない又は多いビットを必要とする場合、その変数に必要なビットの第1の部分は、1つのメモリ・ワードに格納され、ビットの残りの部分は、次のワード・メモリに格納される。次の変数のビットは、第1の変数のビットの末尾の直後に格納され、第1の変数のビット列に連続する(即ち、2つの変数のビットは、互いに直接に隣接して格納され、例えば、メモリ・ワードの中央で開始及び終了する)。
【0039】
用語「カーネル・ワード・インターリーブ・スキーマ」又は「カーネル・ワード・インターリーブ配置」(KLIP)は、変数の第2のマッピング・スキーマ又はマッピング方法を示すことができる。基本的に、特徴マップ上を移動した、畳み込みカーネル演算の結果の変数(即ちピクセル)は、最もコンパクトな(即ち、互いに直接隣接する)形で次の特徴マップの値として格納することができる。それゆえに、各々の新しいベクトルは、物理メモリの新しいワードで開始することができる。
【0040】
用語「活性化ワード・インターリーブ・スキーマ」又は「ピクセル・レベル・インターリーブ・マッピング」若しくは「ピクセル・レベル・インターリーブ配置」(PLIP)は、変数の第3のマッピング・スキーマ又はマッピング方法を示すことができる。ここで、各々の変数は、一般に、1つの物理メモリ・ワードに格納されるが、その理由は、必要なビットの数は、一般に、物理メモリ・ワードで使用可能なビットよりも小さいからである。しかし、変数値について必要なビットの数が、利用可能なビット及び物理メモリ・ワードより大きくなる可能性もある。この場合、変数は、2つ又は3つ若しくはそれ以上の隣接ワードを必要とする可能性がある。しかし、いずれの場合も、各々の変数は、物理メモリ内の新しいワードで開始する。これら3つの異なるストレージ若しくは配列形式又はその両方の詳細は、以下に説明される図の文脈で与えられる。
【0041】
用語「特徴マップ」は、図2の左上部分に示されるような3次元マトリックスの1つの層を示すことができる。従って、平面の深さ全体にわたって、平面内の1つの位置が1つのピクセルを表すことになる。
【0042】
以下に、図面の詳細な説明が与えられる。図面内の全ての説明は概略的なものである。第1に、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするための、本発明のメモリ・コントローラ回路の一実施形態のブロック図が与えられる。その後、さらに別の実施形態、並びに、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングする方法の一実施形態が説明される。
【0043】
図1は、畳み込みニューラル・ネットワークのデータを物理メモリ106にマッピングするためのメモリ・コントローラ回路100の好ましい実施形態のブロック図を示す。メモリ・コントローラ回路100は、選択パラメータ値を受信するための受信ユニット102と、複数のマッピング・スキーマのうちの1つに従って、畳み込みニューラル・ネットワークの1つの層のピクセル値、即ちCNNの1つの層の活性化関数の出力値を、物理メモリ106のメモリ・ワードにマッピングするためのマッピング・ユニット104とを備え、マッピングは、受信した選択パラメータ値の値に応じて行われる。前述のように、1つのマッピング・スキーマから別の1つへの移行又は切り替えは、特定のアプリケーションのセット・アップに拘束されるが、特定のアプリケーションのセット・アップとは独立して動的に行うこともできる。このため、提案されたコンセプトは、あらゆる応用分野に柔軟に対応できる。
【0044】
さらに、メモリ・コントローラ回路の提案される概念は、物理メモリがなくても機能することができるので、物理メモリ106は、破線で示されていることに留意されたい。
【0045】
図2は、CNN内の動作の一実施形態200であって、特徴マップ202と、(畳み込み)カーネル・マトリックス208と、同じくマトリックス204、例えば特徴マップの形式の関連出力204とを含む実施形態200のブロック図を示す。一般に、畳み込み演算において、カーネル又はカーネル・マトリックス208は、より大きい特徴マップ・マトリックス202上でサイクル毎に移動させられ、結果マトリックス204の1つの出力値210を生成する。多数のマトリックス/ベクトルの演算/乗算と、ワード指向の物理メモリからのそれぞれの読み出し及び書き込み動作とのために、マトリックス要素の個々の値のマッピングの形式は、関連する計算の性能全体に著しい影響を与える場合がある。
【0046】
図2の下部分は、カーネル・マトリックス208が、次のサイクルのために一要素だけ下向きに移動させられ、関連する出力マトリックス204内の第2の結果値212を生成することを示す。さらに、図2の上部分において、特徴マップ202は、特徴マップ206のセットの1つとして示されていることに留意されたい。このことは、一般に、図2の下部分にも当てはまる。しかし、ここでは明示的には示されていない。
【0047】
図3は、本明細書で提案される概念の理想的な実施形態300のブロック図を示す。ここでは、カーネル・マトリックス208の各々の要素は、異なるパターンとして示される。しかし、異なる要素の正方形は、特徴マップ202の例示的な9つの要素にも関連し得る。パターンの各々は、「ピクセル」又は「ピクセル値」(本説明においては、両方の用語が等価なものとして使用され、当業者であれば、それらをどのように区別するかを知っているであろう)に関連させることができる。特に、サイズ(即ち、マトリックス202の1つの寸法)及びそれぞれのセット206が、数百さらには数千の要素を含むときには、物理メモリの多数の読み取り及び書き込み動作が必要となり得ることが明白である。
【0048】
理想的な場合には、マトリックス208について示されるマトリックス要素202の値は、ワード境界を用いて示される物理メモリ302にマッピングすることができる。異なるパターンを有する各々の正方形は、ビット単位で計測された同じワード・サイズ304を有する1つのワードを表す。しかし、ピクセル値(即ち、マトリックス要素のストレージ表示)が物理メモリのワード内で使用可能なビットと正確に同じビット量を必要とすることは、典型的な設定ではない。物理メモリのワードは、64ビットを含むことができ、一方、特徴マップ206のマトリックス要素は、計算効率のために、8ビット、16ビット若しくは24ビット又はそれ以上とすることができる。それゆえに、ピクセル値のストレージ要件とワード・サイズは、一般に、完全に一致することはない。
【0049】
図4は、例示的なマトリックス402のピクセル値(又はマトリックス要素)を物理メモリ404にマッピングするためのIWAPスキーマの一実施形態のブロック図を示す。ここでは、各々がワード・サイズ406を有する2つのメモリ・ワードが、垂直に広がったアレイとして並んで示されている。ワード内隣接配置マッピング・スキームでは、ピクセル値は、メモリ内に互いに隣接して格納され、その結果、異なるピクセル値(又はその一部)が、同一の物理メモリ・ワード内に格納される場合がある。配置又はマッピングは、同じ行の隣接するピクセル値が互いに隣接して格納されるデータの論理的構造に似ている。それにより、各々のピクセル値は、特徴マップ・マトリックスの論理サイズに従って異なるチャネルを次々に格納できるように、マッピングされる。これによって、次に、ピクセルがデータのベクトルであり、従って1つのチャネルがベクトルの1つの要素であり、ベクトルの各々の要素、即ちチャネルがビット単位で表現された値を有することが、仮定される。
【0050】
ここで、1つのワード内でスペースが使用可能である場合、異なるピクセル値を同じワードに格納することができる。これは、例えば、ワード1(即ち、左上端コーナ)内のピクセル(0、0)及びピクセル(0、1)の場合である。所与の数のピクセル値をキャッシュするために、この方法又はスキーマは、最小限のメモリ量しか必要としない。しかし、これは、ピクセル値を格納すること及びフェッチすることの両方のためにビット・インデックスを必要とする場合があり、タイムスタンプ(サイクル)に応じて、ピクセル値を書き込み及び読み取るために異なるサイクル数を必要とする場合がある。
【0051】
図5は、ピクセル又はより適切にはピクセル値を物理メモリ404にマッピングするためのKLIPスキーマの一実施形態500のブロック図を示す。この方法を用いると、異なるピクセル値は、それらがベクトル/マトリックスの乗算を計算しなければならない入力パッチの単一の行に属する場合にのみ、同じワード内に格納される。さらに、ここでは(前述の実施例の場合と同様に)、特徴マップのボリューム/マトリックスは、3×3カーネルで畳み込まれる。図で強調されている中で、畳み込みのための入力パッチに属するピクセル値の行は、((0、0)、(0、1)、(0、2));((1、0)、(1、1)、(1、2));((2、0)、(2、1)、(2、2))である。各々の行のピクセル値は、互いに連続して物理メモリ・ワードに格納される。しかし、特徴マップ値の最後のピクセルを含むワード内の残りのビット・ラインは、空のままである。データのマッピングを、その論理的配置に近い形で可能にするために、メモリの一部を空のままにするこのやり方は、CPU又は他の処理ユニット(例えば、GPU)のためのメモリ管理において一般に使用されるメモリ・インターリーブの概念と多少類似している。
【0052】
このマッピング・スキームは、メモリのピクセル値の位置決め又は配置に対応するために、メモリ・ワードの一部を空のまま残し、ピクセル値の1つのボリュームについて可能な最小量のメモリを使用しないことが明らかである。前述のマッピング・スキーマ(即ちIWAP)と同様に、ピクセル値を書き込むために、タイムステップ(即ち、競合ステップ)に応じて異なるサイクル数を必要とする場合がある。さらに、異なるピクセル値を依然として1つの物理メモリ・ワード内に格納することができるとすると、書き込みのためにビット・ライン・インデックスが必要となる。前述のように、すべてのタイムステップ(即ち、すべての計算サイクル)において、計算が実行される場合、入力パッチの新しい行がメモリにロードされる必要がある。ピクセル値は、連続的にマッピングされるので、読み取りサイクルの数は、すべてのタイムステップで一定であり、1つの完全な行を読み取るためにビット・ライン・インデックスは必要ではない。
【0053】
図5において、インデックス(1、0)を有するメモリ・ワード、すなわち右側のメモリ・ワードは、例示的なマトリックス402の第3の水平要素504のピクセル値の第1の部分502を含む又は格納することを明確に認識することができる。例示的なマトリックス402の例示的な水平要素504のピクセル値の第2の部分506は、インデックス(0、1)を有するメモリ・ワード、即ち、第2の行内の左のメモリ・ワードに格納される。インデックス(0、1)を有するメモリ・ワード506の残りの部分は、空のままである。
【0054】
このように、マトリックス402の各々の新しい行は、物理メモリの次の使用可能なワード・スタートの先頭から開始する。結果として、典型的には、マトリックス402の水平行に関する最後のワードは、使用されないビットを含む。
【0055】
図6は、物理メモリ404へのピクセル値のマッピングのためのPLIPスキーマの一実施形態600のブロック図を示す。このマッピング・スキーマを用いると、異なるピクセル値のビットを同じワード内に格納することはできない。各々のピクセル値は、単一の物理メモリ・ワードに格納される。各々のピクセル値を格納しているワードの非占有部分は、空のまま残される。このことは、カーネル・レベル・インターリーブ配置又はマッピングの概念に多少似ているが、今回は、チャネル深さにわたる単一ピクセル値に当てはまる。しかし、ビット単位で測定されるピクセル値が、1つの物理メモリ・ワードより大きい場合、ピクセル値は、ワード境界を超えて隣接する次のワードに移動し、第2のワードの非占有部分を空のまま残す。このスキーマは、ピクセル値に必要なメモリ・スペースが2つ若しくは3つ又はそれ以上の物理メモリ・ワードより大きい場合にも機能する。それゆえに、これはユニバーサルということもある。
【0056】
このマッピング・スキーマは、格納される論理ユニットの粒度が最も細かく、従って、ローカル・メモリを最も効率的に使用する。あらゆるピクセル値が個々にインターリーブされるので、格納ワードの書き込みのためのビット・ライン・インデックスは不要である。前述のマッピング・スキーマとは対照的に、読み取り及び書き込みサイクルの両方の数は、読み取られる又は格納されるピクセル値に関わらず、一定である。
【0057】
矢印602、604、606は、例として、物理メモリ404の2つのワードへの、マトリックス402の第1の行の幾つかのマッピングを示す。
【0058】
図7は、畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするための本発明の方法700の一実施形態のブロック図を示す。この方法は、選択パラメータ値を受信すること(702)と、複数のマッピング・スキーマのうちの1つに従って、畳み込みニューラル・ネットワークの1つの層のピクセル値を物理メモリのメモリ・ワードにマッピングすること(704)とを含み、マッピングは、受信した選択パラメータ値の値に対応して行われる。
【0059】
さらに、本明細書で提案される概念は、完全にハードウェアで、完全にソフトウェアで、又はそれらの組み合わせで、さらにマイクロコードを含んで実装できることが明白に示される。
【0060】
本発明の実施形態は、実質的には、任意のタイプのコンピュータを用いて、プログラム・コードを格納すること若しくは実行すること又はその両方に適したプラットホームに関わらず、実装することができる。図8は、一例として、提案された方法700に関連するプログラム・コードを実行するために適したコンピューティング・システム800を示す。
【0061】
コンピューティング・システム800は適切なコンピュータ・システムの一例に過ぎず、コンピュータ・システム800が上記で明白にされた機能のいずれかを実装すること若しくは実行すること又はその両方が可能であるかどうかに関わらず、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対する何らかの制限を示唆することを意図したものではない。コンピュータ・システム800には、多くの汎用又は専用のコンピューティング・システム環境又は構成によって動作可能なコンポーネントが存在する。コンピュータ・システム/サーバ800による使用に適切でありうる、周知のコンピューティング・システム、環境、若しくは構成又はこれらの組み合わせの例には、限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上記のシステム又はデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれる。コンピュータ・システム/サーバ800は、コンピュータ・システム800によって実行されるプログラム・モジュールなどの、コンピュータ・システム実行可能命令の一般的な文脈において説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造体などを含むことができる。コンピュータ・システム/サーバ800は、通信ネットワークを通してリンクされる遠隔処理デバイスによってタスクが行われる分散クラウド・コンピューティング環境において、実施することができる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル及び遠隔コンピュータ・システム・ストレージ媒体の両方に配置することができる。
【0062】
図に示されるように、コンピュータ・システム/サーバ800は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ800のコンポーネントには、限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット802、システム・メモリ804、及び、システム・メモリ804を含む種々のシステム・コンポーネントをプロセッサ802に結合するバス806が含まれる。バス806は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィック・ポート、及び、様々なバス・アークテクチャのいずれかを使用するプロセッサ又はローカル・バスを含むいくつかのタイプのバス構造体のいずれか1つ又は複数を表す。例として、しかし限定ではなく、そのようなアークテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及び、Peripheral Component Interconnects(PCI)バスが含まれる。コンピュータ・システム/サーバ800は、一般に、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ800によってアクセス可能な任意の入手可能媒体とすることができ、揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体を含む。
【0063】
システム・メモリ804は、ランダム・アクセス・メモリ(RAM)808若しくはキャッシュ・メモリ810又はその両方のような揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ800はさらに、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピューティング・システム・ストレージ媒体を含むことができる。単なる例として、取り外し不可能な不揮発性磁気媒体(図示されないが、典型的には「ハード・ドライブ」と呼ばれる)から読み取るため及びそれに書き込むために、ストレージ・システム812を提供することができる。図示されないが、取り外し可能な不揮発性の磁気ディスク(例えば、「フロッピー・ディスク」)から読み取るため、及びそれに書き込むための磁気ディスク・ドライブ、並びに、CD-ROM、DVD-ROM又は他の光学媒体のような取り外し可能な不揮発性光ディスクから読み取るため、又はそれに書き込むための光ディスク・ドライブを備えることができる。そのような場合、各々は、1つ又は複数のデータ媒体インターフェースによってバス806に接続することができる。以下でさらに図示し、説明するように、メモリ804は、本発明の実施形態の機能を実施するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0064】
プログラム・モジュール816のセット(少なくとも1つ)を有するプログラム/ユーティリティは、例えば、非限定的に、オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データと共に、メモリ804に格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データの各々、又はそれらの幾つかの組み合わせは、ネットワーク環境の実装を含むことができる。プログラム・モジュール816は、一般に、本明細書で説明される本発明の実施形態の機能若しくは方法又はその両方を実行する。
【0065】
コンピュータ・システム/サーバ800はさらに、キーボード、ポインティング・デバイス、ディスプレイ820などの1つ又は複数の外部デバイス818;ユーザがコンピュータ・システム/サーバ800と対話することを可能にする1つ又は複数のデバイス:若しくは、コンピュータ・システム/サーバ800が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、又はそれら全部と通信することができる。そのような通信は、入力/出力(I/O)インターフェース814を介して行うことができる。さらに、コンピュータ・システム/サーバ800は、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)若しくはパブリック・ネットワーク(例えば、インターネット)又はこれらの組み合わせのような1つ又は複数のネットワークと、ネットワーク・アダプタ822を介して通信することができる。図示されるように、ネットワーク・アダプタ822は、コンピュータ・システム/サーバ800の他のコンポーネントとバス806を介して通信することができる。図示されていないが、他のハードウェア若しくはソフトウェア又はその両方のコンポーネントは、コンピュータ・システム/サーバ800と接続して使用できることを理解されたい。例として、限定されるものではないが、マイクロコード、デバイス・ドライブ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが挙げられる。
【0066】
さらに、畳み込みニューラル・ネットワークのデータを物理メモリ808にマッピングするためのメモリ・マッピング回路100をバス・システム806に取り付けることができる。このために、メモリ・マッピング回路100は、バス・インターフェース回路を備えることもできる。
【0067】
本発明の種々の実施形態の説明は、例証の目的のために提示されるが、これらは、網羅的であること、又は開示された実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
【0068】
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0069】
媒体は、伝播媒体用の電子、磁気、光学、電磁、赤外線、又は半導体システムとすることができる。コンピュータ可読媒体の例として、半導体又はソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、硬質磁気ディスク、及び光ディスクを挙げることができる。光ディスクの現在の例として、コンパクト・ディスク読み出し専用メモリ(CD-ROM)、コンパクト・ディスク読み出し/書き込み(CD-R/W)、DVD、及びBlu-Ray-Diskが挙げられる。
【0070】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0071】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくは無線ネットワーク、又はそれらの組み合わせなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、又はそれらの組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【0072】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【0073】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0074】
これらのコンピュータ可読プログラム命令を、コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0075】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は別のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータもしくは他のプログラム可能装置、又は別のデバイス上で実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
【0076】
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又は両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0077】
本明細書で用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈がそうでないことを明確に示していない限り、複数形も含むことを意図している。さらに、用語「含む(comprise)」、もしくは「含んでいる(comprising)」、又はその両方は、本明細書で用いられる場合、記載される特徴、整数、ステップ、動作、要素もしくはコンポーネント又はその組み合わせの存在を明示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネントもしくはグループ又はその組み合わせの存在も又は追加も排除しないことが理解されるであろう。
【0078】
以下の特許請求の範囲における「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の特許請求される要素と共に機能を実行するための任意の構造、材料、又は動作を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであるが、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱することなく、多くの修正及び変形が明らかになるであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、並びに考えられる特定の使用に適するものとして種々の修正を備える種々の実施形態において、当業者が、本発明を理解するのを可能にするために、選択され説明されたものである。
図1
図2
図3
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2023-11-02
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングするためのメモリ・コントローラ回路であって、
選択パラメータ値を受信する受信ユニットと、
複数のマッピング・スキーマのうちの1つに従って、前記畳み込みニューラル・ネットワークの1つの層のピクセル値を前記物理メモリのメモリ・ワードにマッピングするためのマッピング・ユニットであって、前記マッピングは前記受信した選択パラメータ値の前記値に対応するものである、マッピング・ユニットと
を備えるメモリ・コントローラ回路。
【請求項2】
前記複数のマッピング・スキーマのうちの前記1つは、ワード内隣接マッピング・スキーマであり、異なるピクセル値の部分のビット値は、1つの物理メモリ・ワードに連続してマッピングされる、請求項1に記載のメモリ・コントローラ回路。
【請求項3】
前記複数のマッピング・スキーマのうちの前記1つは、カーネル・ワード・インターリーブ・スキーマであり、異なるピクセル値の部分のビット値は、多くても畳み込みニューラル・ネットワーク演算のカーネルのサイズに等しい数のピクセルが隣接するメモリ・ワードに連続的にマッピングされるように、前記物理メモリにマッピングされる、請求項1に記載のメモリ・コントローラ回路。
【請求項4】
前記複数のマッピング・スキーマのうちの前記1つは、活性化ワード・インターリーブ・スキーマであり、ピクセル値のビット値は、メモリ・ワードが多くても1つのピクセルの前記ビット値を含むように、マッピングされる、請求項1に記載のメモリ・コントローラ回路。
【請求項5】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値のセットに含まれる、請求項1に記載のメモリ・コントローラ回路。
【請求項6】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値とは独立なものである、請求項1に記載のメモリ・コントローラ回路。
【請求項7】
前記物理メモリは、スタティック・ランダム・アクセス・メモリ、ラッチ・ベースのメモリ、及びダイナミック・ランダム・アクセス・メモリを含む群から選択される、請求項1に記載のメモリ・コントローラ回路。
【請求項8】
前記メモリ・コントローラ回路は、物理メモリと一体化されている、請求項1に記載のメモリ・コントローラ回路。
【請求項9】
前記物理メモリは、計算メモリの入力値を格納し、前記計算メモリと一体化されている、請求項1に記載のメモリ・コントローラ回路。
【請求項10】
前記物理メモリは、デジタル・メモリの入力値を格納し、デジタル処理ユニットと一体化されている、請求項1に記載のメモリ・コントローラ回路。
【請求項11】
畳み込みニューラル・ネットワークのデータを物理メモリにマッピングする方法であって、
選択パラメータ値を受信することと、
複数のマッピング・スキーマのうちの1つに従って、前記畳み込みニューラル・ネットワークの1つの層のピクセル値を前記物理メモリのメモリ・ワードにマッピングすることであって、前記マッピングは前記受信した選択パラメータ値の前記値に対応するものである、マッピングすることと
を含む方法。
【請求項12】
前記複数のマッピング・スキーマのうちの前記1つは、ワード内隣接マッピング・スキーマであり、異なるピクセル値の部分のビット値は、1つの物理メモリ・ワードに連続してマッピングされる、請求項11に記載方法。
【請求項13】
前記複数のマッピング・スキーマのうちの前記1つは、カーネル・ワード・インターリーブ・スキーマであり、異なるピクセル値の部分のビット値は、多くても畳み込みニューラル・ネットワーク演算のカーネルのサイズに等しい数のピクセルが隣接するメモリ・ワードに連続的にマッピングされるように、前記物理メモリにマッピングされる、請求項11に記載の方法。
【請求項14】
前記複数のマッピング・スキーマのうちの前記1つは、活性化ワード・インターリーブ・スキーマであり、ピクセル値のビット値は、メモリ・ワードが多くても1つのピクセルの前記ビット値を含むように、マッピングされる、請求項11に記載の方法。
【請求項15】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値のセットに含まれる、請求項11に記載の方法。
【請求項16】
前記選択パラメータ値は、前記畳み込みニューラル・ネットワークの層のパラメータ値とは独立なものである、請求項11に記載の方法。
【請求項17】
前記物理メモリは、スタティック・ランダム・アクセス・メモリ、ラッチ・ベースのメモリ、及びダイナミック・ランダム・アクセス・メモリを含む群から選択される、請求項11に記載の方法。
【請求項18】
前記メモリ・コントローラ回路は、物理メモリと一体化されている、請求項11に記載の方法。
【請求項19】
前記物理メモリは、計算メモリの入力値を格納し、前記計算メモリ又はデジタル処理ユニットと一体化されている、請求項11に記載の方法。
【請求項20】
請求項11から請求項19までのいずれか1項に記載の方法をコンピュータに実行させるコンピュータ可読プログラム命令を含むコンピュータ・プログラム。
【請求項21】
請求項20に記載のコンピュータ・プログラムを格納したコンピュータ可読ストレージ媒体。
【国際調査報告】