(57)【要約】  演算を加速するための加速器およびシステムが開示される。それぞれの装置は、前記装置をインターコネクトに結合させるように構成されるインターフェースと、データを処理するようにそれぞれ構成される複数のプロセッシングモジュールと、複数のプロセッシングモジュールそれぞれの処理を制御するように構成される制御モジュールと、複数のプロセッシングモジュールのうち少なくとも一つによって処理されるデータの少なくとも一部を保存するように構成されるキャッシュモジュールを含む。それぞれのプロセッシングモジュールは、複数のプロセッシング要素を使ってデータに対する演算を遂行することによって前記データを処理するように構成されるプロセッシングコアと、インターフェースを通じてのデータおよびキャッシュモジュールに保存されたデータを引き出し、引き出されたデータをプロセッシングコアに提供するように構成される入力制御ユニットと、プロセッシングコアによって処理されたデータをインターフェースおよびキャッシュモジュールに提供するように構成される出力制御ユニットを含む。
2021521516.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
前記装置をインターコネクトに結合させるように構成されるインターフェース、
データを処理するようにそれぞれ構成される複数のプロセッシングモジュール、
前記複数のプロセッシングモジュールそれぞれの処理を制御するように構成される制御モジュール、および
前記複数のプロセッシングモジュールのうち少なくとも一つによって処理されるデータの少なくとも一部を保存するように構成されるキャッシュモジュールを含み、
それぞれのプロセッシングモジュールは、
複数のプロセッシング要素を使ってデータに対する演算を遂行することによって前記データを処理するように構成されるプロセッシングコア、
前記インターフェースを通じてのデータおよび前記キャッシュモジュールに保存されたデータを引き出し、前記引き出されたデータを前記プロセッシングコアに提供するように構成される入力制御ユニット、および
前記プロセッシングコアによって処理されたデータを前記インターフェースおよび前記キャッシュモジュールに提供するように構成される出力制御ユニットを含む、装置。
【請求項２】
前記制御モジュールは前記インターフェースを通じて構成データを引き出し、前記構成データに基づいて前記複数のプロセッシングモジュールのうち少なくとも一つのプロセッシングモジュールを設定するように構成される、請求項１に記載の装置。
【請求項３】
前記制御モジュールは前記複数のプロセッシングモジュールの間でコマンドをスケジューリングするように構成され、前記コマンドは前記複数のプロセッシングモジュールの前記入力制御ユニットおよび前記出力制御ユニットのうち一つ以上から受信される複数の状態に応答してスケジューリングされる、請求項１または請求項２に記載の装置。
【請求項４】
前記制御モジュールは、少なくとも一つのプロセッシングモジュールの少なくとも一つの出力制御ユニットおよび一つ以上のプロセッシングモジュールの一つ以上の入力制御ユニットを制御して、前記少なくとも一つのプロセッシングモジュールによって処理されたデータを前記キャッシュモジュールを通じて前記一つ以上のプロセッシングモジュールにフィードバックするように構成される、請求項１〜３のいずれか一項に記載の装置。
【請求項５】
それぞれのプロセッシングモジュールは前記インターフェースを通じて係数データを引き出すように構成される係数制御ユニットをさらに含む、請求項１〜４のいずれか一項に記載の装置、
【請求項６】
前記プロセッシングコアはデータバッファと、前記複数のプロセッシング要素を制御して前記データバッファに保存された入力データを処理するように構成される処理制御ユニットをさらに含む、請求項１〜５のいずれか一項に記載の装置。
【請求項７】
前記プロセッシングコアは係数バッファをさらに含み、
前記処理制御ユニットは前記複数のプロセッシング要素を制御して前記データバッファに保存された入力データを前記係数バッファに保存された係数データを使って処理するように構成される、請求項６に記載の装置。
【請求項８】
前記データバッファは前記入力データを２次元アレイとして保存するように構成される２次元データバッファである、請求項６または請求項７に記載の装置。
【請求項９】
前記係数データは前記入力データの少なくとも一部に適用される加重値係数およびバイアス値を含む、請求項５または請求項７に記載の装置。
【請求項１０】
前記プロセッシングコアの少なくとも一つのプロセッシング要素は乗算−累積（ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ）演算を遂行するように構成され、前記プロセッシングコアの前記少なくとも一つのプロセッシング要素は前記乗算−累積演算の結果をバッファリングするように構成される結果保存所をさらに含む、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
前記装置は前記インターフェース通じて入力データを引き出すように構成され、前記入力データはニューラルネットワークの入力レイヤーの少なくとも一部を示す、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
それぞれのプロセッシングモジュールはニューラルネットワークのレイヤーの少なくとも一部を処理し、前記キャッシュモジュールに保存されたデータは前記ニューラルネットワークの次のレイヤーの少なくとも一部を示す、請求項１〜１１のいずれか一項に記載の装置。
【請求項１３】
前記装置はコンボリューションニューラルネットワーク加速器である、請求項１〜１２のいずれか一項に記載の装置。
【請求項１４】
システムであって、
プロセッシングホスト、
少なくとも一つのメモリ、
請求項１〜１３のいずれか一項に記載された装置、および
前記プロセッシングホスト、前記少なくとも一つのメモリおよび前記装置を結合させるインターコネクトを含み、
前記装置は前記インターコネクトを通じて前記少なくとも一つのメモリから入力データを引き出すように構成される、システム。
【請求項１５】
前記インターコネクトはシステムバスである、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のプロセッシング要素を有する複数のプロセッシングモジュールを使って演算を加速するための装置、システムおよび方法に関する。特に、本発明はコンボリューションニューラルネットワークの動作を加速するためのコンボリューション演算を具現するように構成され得る加速器に関するものであり得る。
【背景技術】
【０００２】
最近コンピューティング技術の発展により、殆どのデバイス、マシン、またはインフラの演算は該当デバイス、マシンまたはインフラの制御に適合な情報を生成するために、多様な入力データのコンピュータ基盤処理および／または処理状態のコンピュータ基盤評価に専ら依存する。たびたび、このような処理および対応する意思決定は相当量の複雑な計算作業または演算を要求するが、これはたびたび類似する類型のものである。前記作業または演算がＣＰＵまたはプロセッシングデバイスのコアのような汎用プロセッシングユニットによって遂行され得るが、そのような作業または演算を加速するための専用ハードウェアが多様に提案された。このような専用ハードウェアは通常加速器と指称される。
【０００３】
例えば、浮動小数点数などに対する演算のような、数学的演算を加速するために多様な類型の数値演算積ロセッサ（ｍａｔｈ  ｃｏ−ｐｒｏｃｅｓｓｏｒ）が提案された。加速器の他の例として、ビデオまたはグラフィック加速器がグラフィックまたはビデオ客体の処理およびレンダリングを加速するために提案された。通常、加速器は要求される作業または演算およびそれぞれのデータフォーマットに特化した専用ハードウェアを含む。
【０００４】
イメージ処理、コンピュータビジョン（ｃｏｍｐｕｔｅｒ  ｖｉｓｉｏｎ）および人工知能の領域において、コンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算のための加速器が提案された。コンボリューション演算は決定プロセスを可能とさせる入力データの分析および分類のための多数の人工知能接近法で要求される。通常このような類型の処理は、キャプチャーされたセンサデータに応答してそれぞれのデバイス上で局地的に遂行されるため、コンボリューション演算のリアルタイム処理は、例えば顔認識、交通標識検出および監視、セキュリティアプリケーション、自律走行などに関連した他の作業において重要な問題となる。コンボリューションニューラルネットワーク（ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ；ＣＮＮ）はコンボリューション演算を使うコンピュータビジョンおよび人工知能に適用される技術の一例である。ＣＮＮは処理パラメータをアップデートすることによって多様なシナリオに適応させることができる単一フレキシブル（ｆｌｅ×ｉｂｌｅ）モデルで特徴抽出および分類を結合させる。
【０００５】
いくつかのＣＮＮ加速器が、例えばＳ．Ｃｈａｋｒａｄｈａｒなどの文献「Ａ  Ｄｙｎａｍｉｃａｌｌｙ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｃｏｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ」（ＩＳＣＡ、２０１０）およびＣ．Ｆａｒａｂｅｔなどの文献「ＮｅｕＦｌｏｗ：Ａ  Ｒｕｎｔｉｍｅ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｄａｔａ  Ｆｌｏｗ  Ｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｖｉｓｉｏｎ」（Ｅｍｂｅｄｄｅｄ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  Ｗｏｒｋｓｈｏｐ、２０１１）で提案された。これらＣＮＮ加速器はＣＮＮの動作を専用ハードウェアに対してマッピングする。しかし、殆どの接近法では、入力を共有しＣＮＮの出力を他のリソースに連結するための仲裁およびルーティングにて困難が発生する。多様な応用シナリオにおいて、加速器の処理効率は過度なデータ伝送および限定された帯域幅により甚だしく減少し得、これによって加速器の効率が低下し得る。Ｍ．Ｐｅｅｍｅｎなどの文献「Ｍｅｍｏｒｙ−ｃｅｎｔｒｉｃ  Ａｃｃｅｌｅｒａｔｏｒ  Ｄｅｓｉｇｎ  ｆｏｒ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ」（ＩＣＣＤ、２０１３）は、データ再使用およびメモリアクセスパターンを使うことによって帯域幅問題に対処するメモリサブシステムを有するコンボリューションニューラルネットワークのためのメモリ−中心（ｍｅｍｏｒｙ−ｃｅｎｔｒｉｃ）加速器の設計を開示する。前記加速器は該当加速器の内外へのデータをストリーミングするために、ホストプロセッサによって使われる高速単信リンク（Ｆａｓｔ  Ｓｉｍｐｌｅ×  Ｌｉｎｋ）連結を通じて外部メモリに結合される。
【０００６】
帯域幅問題に加えて、公知の加速器は入力データの特定の大きさおよび配列によって制限される。米国特許第９、６６５、７９９号は、サイクルごとに基本データ（ｕｎｄｅｒｌｙｉｎｇ  ｄａｔａ）を有する加重値カーネル（ｗｅｉｇｈｔ  ｋｅｒｎｅｌ）に対するコンボリューションを計算するＣＮＮを開示する。しかし、異なる大きさの加重値カーネルが使われる場合、計算リソースが完全に活用されないことがあり、入力データがサブサンプリング（ｓｕｂｓａｍｐｌｅ）される場合、計算効率が低下し得る。加速器の異なるレイアウト（ｌａｙｏｕｔ）が国際公開公報第２０１７／００３８８７号に開示されている。このような設定（ｓｅｔｕｐ）の場合、加重値カーネルの重なりにより重なった入力データの保存が必要であり得る。
【０００７】
したがって、本発明の少なくとも一つの目的は、装置を使ってコンボリューション演算のような演算を加速するための接近法を定義するものであって、これは可用リソースを効率的に活用し、前記装置によって処理される入力および出力データの交換に関する帯域幅問題を処理する多様なシナリオに柔軟に適応することができる。
【発明の概要】
【０００８】
本発明は独立請求項による装置、システム及び方法によって定義される。好ましい実施例は従属項で定義される。
【０００９】
本発明の第１態様によると、装置が定義され、前記装置は前記装置をインターコネクトに結合させるように構成されるインターフェースと、データを処理するようにそれぞれ構成される複数のプロセッシングモジュールと、複数のプロセッシングモジュールそれぞれの処理を制御するように構成される制御モジュールと、複数のプロセッシングモジュールのうち少なくとも一つによって処理されるデータの少なくとも一部を保存するように構成されるキャッシュモジュールを含み、それぞれのプロセッシングモジュールは複数のプロセッシング要素を使って演算を遂行することによってデータを処理するように構成されるプロセッシングコアと、インターフェースを通じてのデータおよびキャッシュモジュールに保存されたデータを引き出し、引き出されたデータをプロセッシングコアに提供するように構成される入力制御ユニットと、プロセッシングコアによって処理されたデータをインターフェースおよびキャッシュモジュールに提供するように構成される出力制御ユニットを含む。
【００１０】
前記装置は前記インターフェースを使ってコンピューティングシステムに接続（ｐｌｕｇｇｅｄ）され得、前記コンピューティングシステムは複数のプロセッシングモジュールによる処理のための入力データを受信し、前記装置の処理の結果を提供することができる。前記装置は、複数のプロセッシングモジュールがキャッシュモジュールを通じて任意の中間データまたは結果を直接アクセスできるように結果データの一部を保存するキャッシュモジュールをさらに含む。これを通じて、最初の設定に対する入力データの伝送および（最終）結果の交換を減少させることができる。処理中にデータが要求される場合にも、前記インターフェースを通じての中間データの過度な通信が減少し得る。
【００１１】
キャッシュモジュールは同じダイ（ｄｉｅ）や回路上で、または同じパッケージ内で複数のプロセッシングモジュールと共に提供され得、キャッシュモジュールを通じて次の計算サイクルに対する入力データで出力データを直接交換できるようにするために、複数のプロセッシングモジュールに有線で連結されるか他の方式で結合され得る。前記キャッシュモジュールは、（互いに異なるまたは同じ）一つ以上のプロセッシングモジュールの処理のための入力としてさらに作用できる、プロセッシングモジュールのうち一つ以上の結果データの少なくとも一部を保存および／またはバッファリングするメモリとして構成され得る。前記キャッシュモジュールは、それぞれのプロセッシングモジュールのための低レイテンシ（ｌａｔｅｎｃｙ）オンチップ（ｏｎ−ｃｈｉｐ）メモリを提供するために、プロセッシングモジュールに連結され得る多数の書き込み及び読み取りポートを有するメモリであり得る
【００１２】
前記装置は複数のプロセッシングモジュールを含み、各プロセッシングモジュールは前記インターフェースを通じて、または前記キャッシュモジュールから直接引き出され得る入力データに対する必要な演算を遂行することができる。これを通じて、多様な作業や演算のために前記装置を柔軟に構成することができる。
【００１３】
それぞれのプロセッシングモジュールは、入力データの多数のデータ値を処理して対応する（中間）結果を生成できる複数のプロセッシング要素を有するプロセッシングコアを含む。それぞれのプロセッシングモジュールは、プロセッシングコアによって処理される入力データが、インターフェースを通じて引き出されるか、またはキャッシュモジュールから引き出されるかを制御する入力制御ユニットをさらに含む。コンボリューション演算結果の提供は出力制御ユニットによってさらに制御され、出力制御ユニットは出力データがインターフェースを通じて（外部保存所に）提供されるか、または複数のプロセッシングモジュールのうち少なくとも一つによって後続入力としてさらに使用される中間データとしてキャッシュモジュールに保存されるかを制御する。これを通じて、多様な作業や演算のための動作を加速するように前記装置を柔軟に構成することができ、これに伴い、可用リソースが効率的に活用され、インターフェースを通じて外部ホストに通信されるデータの量が減少する。したがって、各プロセッシング要素はキャッシュモジュールに対する同時アクセスを獲得するために、個別的な書き込み及び読み取りインターフェース上でキャッシュモジュールにアクセスすることができる。
【００１４】
好ましくは、入力データおよび／または出力データはニューラルネットワークのレイヤーデータを含むことができる。一実施例において、入力データおよび／または出力データはイメージデータを含むことができ、入力データおよび／または出力データのデータ要素は各イメージの画像要素（ピクセル）であり得る。
【００１５】
好ましい実施例において、前記演算はコンボリューション演算であり得る。したがって、本明細書の全般にわたって、プロセッシングモジュールはコンボリューションモジュールで表記され得、プロセッシングコアは複数のプロセッシング要素を使ってコンボリューション演算を遂行することによってデータを処理するように構成され得るコンボリューションコアで表記され得る。しかし、本発明はコンボリューション演算を加速することにのみ限定されないことが理解されるべきである。他の実施例において、プロセッシングコアは例えば入力データに対する関係演算を遂行することができる。当業者は多様な他の例の演算を考慮することができる。
【００１６】
好ましい実施例において、制御モジュールはインターフェースを通じて構成データを引き出し、該当構成データに基づいて複数のプロセッシングモジュールのうち少なくとも一つのプロセッシングモジュールを設定するように構成される。前記構成データは次元性（ｄｉｍｅｎｓｉｏｎａｌｉｔｙ）、データ類型などを含む入力データの特性を記述／含むことができる。また、前記構成データは、処理される入力データのデータ、繰り返し回数などを識別できる演算（例えばコンボリューション演算）のパラメータをさらに記述／含むことができる。また、前記構成データは、任意の組み合わせで中間データおよび／または結果的な出力データの特性（例えば大きさ、データ類型など）を保存するためのキャッシュモジュールの活用をさらに記述することができる。前記構成データは、望む演算を遂行するように前記装置を設定できるホストによって送信され得る。設定後に、前記装置はインターフェースを通じて最初の入力データを受信することができ、前記制御モジュールは複数のプロセッシングモジュールをトリガリング（ｔｒｉｇｇｅｒ）して最初および任意の後続入力データの処理を開始することができる。
【００１７】
好ましい実施例において、前記制御モジュールは複数のプロセッシングモジュールの間でコマンドをスケジューリング（ｓｃｈｅｄｕｌｅ）するようにさらに構成される。前記コマンドは入力データの可用性により個別プロセッシングモジュールの処理を開始することができ、インターフェースを通じて、および／またはキャッシュモジュールに／から出力データおよび／または入力データを保存および／または引き出すように個別プロセッシングモジュールをさらに構成することができる。
【００１８】
一実施例において、前記コマンドは複数のプロセッシングモジュールの入力制御ユニットおよび出力制御ユニットのうち一つ以上から受信される複数の状態に応答してスケジューリングされる。これらの状態は状態フラグでまたは類似する技術を通じてシグナリングされ得る。前記制御モジュールは、複数のプロセッシングモジュールの入力制御ユニットおよび出力制御ユニットのそれぞれに連結され、入力データの読み取りが完了したという表示、結果が準備されたという表示、結果の提供が完了したという表示、および複数のプロセッシングモジュール間のコマンドの仲裁を可能とする処理の追加状態のうち一つ以上を示すことができる信号を受信することができる。前記コマンドは任意の種類のプログラミングロジックまたはプログラミング言語を使って定義され得る。前記コマンドは、多数のパラメータを単一ワードに接合（ｃｏｎｃａｔｅｎａｔｅ）させることができる複数のビット（例えば６４、１２８、２５６、５１２、１０２４、またはそれ以上（好ましくは２の指数）のビット）を含む２進ワードを使って定義される２進命令語で定義され得る。しかし、ワードを定義するためにより多いか少ないビットが使われ得ることが理解されるべきである。例えば、２進命令語は５１２ビットのワードを含むことができる。それぞれのプロセッシングモジュールによる処理のパラメータは、レイヤー演算類型およびパラメータ（例えば領域の大きさ、フィルタの大きさ、ストライド（ｓｔｒｉｄｅ）、拡張（ｄｉｌａｔｉｏｎ）、コンボリューション／デコンボリューション／プーリング（ｐｏｏｌｉｎｇ）、スケジューリング従属性リストなど）；入力平面位置（例えば外部メモリまたはキャッシュモジュール内での）、ベースアドレス、平面オフセットなど；および出力平面位置（例えば外部メモリまたはキャッシュモジュール内での）、ベースアドレス、平面オフセットなどのうち一つ以上を任意の組み合わせで含むことができる。
【００１９】
さらに他の実施例において、前記制御モジュールは、少なくとも一つのプロセッシングモジュールの少なくとも一つの出力制御ユニットおよび一つ以上のプロセッシングモジュールの一つ以上の入力制御ユニットを制御して、少なくとも一つのプロセッシングモジュールによって処理されたデータをキャッシュモジュールを通じて一つ以上のプロセッシングモジュールにフィードバックするように構成される。少なくとも一つのプロセッシングモジュールは後続（コンボリューションまたは任意の異なる）演算で一つ以上のプロセッシングモジュールによって要求され得る結果を提供することができる。前記制御モジュールは少なくとも一つのプロセッシングモジュールの少なくとも一つの出力制御ユニットが任意の結果をキャッシュモジュールに保存するように構成することができ、一つ以上のプロセッシングモジュールの一つ以上の入力制御ユニットが入力データをキャッシュモジュールから読み取るように構成することができる。前記少なくとも一つのプロセッシングモジュールの少なくとも一つのプロセッシングコアがコンボリューション（または任意の異なる演算）を完了するやいなや、前記少なくとも一つのプロセッシングモジュールの少なくとも一つの出力制御ユニットは結果をキャッシュモジュールに保存することができ、結果が利用可能であることを（それぞれの状態フラグを通じて）制御モジュールにシグナリングすることができる。その後、前記制御モジュールは、一つ以上の入力制御ユニットがそれぞれのプロセッシングコアによって遂行される後続（コンボリューションまたは任意の異なる）演算のための入力データとして結果データをキャッシュモジュールから直接引き出すように、一つ以上のプロセッシングモジュールの一つ以上の入力制御ユニットの演算をトリガリングすることができる。これを通じて、インターフェースを通じての入力データまたは結果のいかなる交換も必要とせずに演算の反復的な処理が可能となり、これに伴い、効果的にインターフェースの使用が減少する。キャッシュモジュールが複数のプロセッシングモジュールによって共有されるため、複数のプロセッシングモジュールそれぞれはキャッシングされた結果を再使用することができる。キャッシュモジュールは読み取りおよび書き込み側に多数のポートを有することができるオンチップメモリであり得る。これを通じて、インターフェースに比べてオンチップキャッシュモジュールの帯域幅がさらに広くなり得る。オンチップキャッシュモジュールは電力集約的な境界Ｉ／Ｏインターフェースを必要としないため、電力消耗を効果的に減少させることができる。
【００２０】
さらに他の実施例において、それぞれのプロセッシングモジュールはインターフェースを通じて係数データを引き出すように構成される係数制御ユニットをさらに含む。前記制御モジュールは複数のプロセッシングモジュールの係数制御ユニットのうち一つ以上から受信される複数の状態に応答してコマンドをさらにスケジューリングするように構成され得る。例えば、係数制御ユニットは係数データが読み取られたということを制御モジュールにシグナリングすることができる。係数データはプロセッシングコアに提供され得、これに伴い、プロセッシングコアは入力データおよび係数データに基づいて（コンボリューションまたは任意の異なる）演算を遂行することができる。
【００２１】
好ましい実施例において、少なくとも一つの（またはそれぞれの）プロセッシングコアは、データバッファと、複数のプロセッシング要素を制御して前記データバッファに保存された入力データを処理するように構成される処理制御ユニットをさらに含む。プロセッシング要素によって具現される演算がコンボリューション演算である場合、前記処理制御ユニットは本明細書の全般にわたってコンボリューション制御ユニットとも指称され得ることが理解されるべきである。前記データバッファは入力制御ユニットによって制御され得、入力制御ユニットによって引き出されたデータを保存することができる。前記処理制御ユニットはデータバッファからの入力データの引き出しを駆動することができる。引き続き、前記処理制御ユニットは、それぞれの入力データを使って演算の一部をそれぞれ計算できる複数のプロセッシング要素による（コンボリューションまたは任意の異なる）演算の処理を開始することができる。
【００２２】
好ましい実施例において、少なくとも一つの（またはそれぞれの）プロセッシングコアは係数バッファをさらに含み、前記処理制御ユニットは複数のプロセッシング要素を制御してデータバッファに保存された入力データを係数バッファに保存された係数データを使って処理するように構成される。係数バッファは係数制御ユニットによって制御され得、引き出された係数データを保存することができる。前記処理制御ユニットは、係数データおよび入力データが同時に読み取られるように、係数バッファおよびデータバッファからの係数データおよび入力データの引き出しをそれぞれ駆動することができる。引き続き、前記処理制御ユニットは、それぞれの入力データおよび係数データを使って演算の一部をそれぞれ計算できる複数のプロセッシング要素による（コンボリューションまたは任意の異なる）演算の処理を開始することができる。
【００２３】
好ましい実施例によると、前記係数データは入力データの少なくとも一部に適用される加重値係数およびバイアス値を含む。
【００２４】
一実施例において、前記データバッファはデータ（例えば入力データの少なくとも一部）を２次元アレイで保存するように構成される２次元データバッファである。したがって、保存されたデータは２個のインデックスを使ってアクセスされ得、これに伴い個別プロセッシング要素による処理のための入力データ要素の選択および引き出しを単純化することができる。殆どのシナリオにおいて、前記複数のプロセッシング要素は入力データの連続的な領域で入力データに対する演算を行うため、データバッファは入力データの連続的な領域にローディングされ得、個別プロセッシング要素はこれらのインデックスにより入力データのそれぞれのデータ要素が提供され得る。
【００２５】
好ましい実施例において、前記データバッファ内のデータは本発明の一つ以上の実施例で説明されるような入力ウインドウを使ってアクセスされ得る。
【００２６】
少なくとも一つの実施例において、前記プロセッシングコアの少なくとも一つのプロセッシング要素は、乗算−累積（ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ）演算を遂行するように構成される。前記乗算−累積演算は乗算−累積回路（ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ  ｃｉｒｃｕｉｔ；ＭＡＣ）を使って具現され得る。それぞれのプロセッシング要素は、専用ハードウェアでまたは乗算−累積演算や関係演算のような演算を遂行するように構成されるプログラミング可能なハードウェアで提供され得る。前記プロセッシングモジュールまたはその少なくとも一部はＡＳＩＣを含むカスタマイジング（ｃｕｓｔｏｍｉｚｅ）されたハードウェアで、またはＦＰＧＡを含む再構成可能なハードウェアで具現され得る。すべてのプロセッシング要素は同じであるか類似する方式でハードウェアで具現され得、それぞれのプロセッシング要素は演算を具現できることが理解されるべきである。しかし、プロセッシング要素は互いに異なるように具現されてもよい。例えば、それぞれのプロセッシングモジュールの複数のプロセッシング要素は互いに異なる演算を具現することができるか、または同じ演算に対して任意の組み合わせで互いに異なるように具現され得る。
【００２７】
さらに他の実施例において、前記プロセッシングコアの少なくとも一つのプロセッシング要素は（乗算−累積または任意の異なる）演算の結果をバッファリングするように構成される結果保存所をさらに含む。前記結果保存所は部分結果を保存することができ、個別プロセッシング要素によって遂行される演算によって影響を受けるそれぞれの位置で同じ出力に対する部分結果をバッファリングするように処理制御ユニットによって制御され得る。乗算−累積演算を提供するプロセッシング要素は結果保存所を具現するメモリを有するＭＡＣユニットと、乗算器、加算器およびバイアスマルチプレクサを有するＭＡＤＤ回路で具現され得る。ＦＰＧＡ具現例において、ＭＡＤＤ回路は一つ以上の専用ＤＳＰブロックを全体の的にまたは部分的に活用することができる。追加的にまたは代案として、ＭＡＤＤ回路は分散ロジックでのみ具現され得る。前記結果保存所を具現するメモリは専用ＲＡＭまたはＬＵＴ基盤ＳＲＡＭであり得る。
【００２８】
前記ＭＡＣユニットの処理は複数のクロックサイクルのレイテンシを有することができる。特に、ＭＡＤＤ回路の処理および結果保存所での後続保存は多数のクロックサイクルを必要とし得る。したがって、最近保存された部分結果はいくつかのクロックサイクル後に利用可能（およびアクセス可能または引き出し可能）であり得る。これに伴い、結果保存所での最近修正されたアドレスの遅延された可用性により処理が遅延され得る。このような問題を解決するために、結果保存所はプロセッシングコアの演算の多数の結果をバッファリングすることができ、プロセッシングコアは同じであるか互いに異なる係数および／またはパラメータを使って互いに異なる入力データに対して互いに異なる結果を繰り返し計算することができる。それぞれの部分結果が結果保存所に保存される。ＭＡＣユニットのレイテンシを定義する多数のクロックサイクルが経過した後に、プロセッシングコアは最初の入力データの処理に戻って、結果保存所に保存された部分結果を要求する最初データに対する次のまたは同じ係数および／またはパラメータに基づいて次の部分結果を計算することができる。このような結果は結果保存所からの要求される部分結果に累積される。このような設計はハードウェアのレイテンシを活用してプロセッシング要素の複雑なハードウェアの具現なしにパイプライニンググ（ｐｉｐｅｌｉｎｉｎｇ）を可能とする。
【００２９】
ＭＡＣユニットのメモリは後続累積のための結果をバッファリングするためにレジスタを使う従来のＭＡＣとは異なる。本発明の実施例に係る結果保存所はそのようなレジスタと比べていくつかの長所を有する。従来のＭＡＣでは加算器が単一レジスタから入力を受信するため、入力データの一つの領域にのみ累積が制限され得る。単一レジスタを使って入力データに対する順次的処理を具現することは、読み取られる入力データの量の増加をさらに要求し得る。アドレッシング可能な結果保存所をプロセッシング要素に提供することによって、プロセッシング要素は入力データの多様な領域に対して柔軟に演算を行うことができ、入力データのそれぞれの領域に対する複数の部分結果を保存することができる。
【００３０】
さらに他の実施例において、前記装置はインターフェースを通じて入力データを引き出すように構成され、前記入力データはニューラルネットワークの入力レイヤーの少なくとも一部を示す。前記制御モジュールは、ニューラルネットワークのレイアウトおよびトポロジー（ｔｏｐｏｌｏｇｙ）を示し、ニューラルネットワークの各レイヤー上で遂行される（コンボリューションまたは任意の異なる）演算を特定する構成データをインターフェースを通じて受信することができる。
【００３１】
他の実施例において、少なくとも一つのプロセッシングモジュールはニューラルネットワークのレイヤーの少なくとも一部を処理し、キャッシュに保存されたデータはニューラルネットワークの次のレイヤーの少なくとも一部を示す。したがって、前記装置はインターフェースを通じて入力レイヤーの入力データを受信することができ、ニューラルネットワークの次のレイヤーの処理のための入力データとして使われ得る、入力レイヤーに対するコンボリューション演算によって生成された結果の少なくとも一部をキャッシュモジュールに保存することができる。これを通じて、インターフェースを通じて交換されるデータの量を減らすことができる。
【００３２】
好ましくは、前記ニューラルネットワークはコンボリューションニューラルネットワーク（ＣＮＮ）である。
【００３３】
特に好ましい実施例において、前記装置はコンボリューションニューラルネットワーク加速器である。
【００３４】
本発明の他の一態様によると、プロセッシングホスト、少なくとも一つのメモリ、およびインターコネクトを含むシステムが定義され、前記システムは本発明の一実施例に係る装置をさらに含む。前記インターコネクトは前記プロセッシングホスト、前記少なくとも一つのメモリおよび前記装置を結合させるように構成され得、これに伴い、前記装置は前記インターコネクトを通じて前記少なくとも一つのメモリから入力データを引き出すことができる。前記装置はコンボリューション演算を遂行する加速器であり得る。前記プロセッシングホストは必要なデータ（例えばセンサまたは状態データおよび他の処理データ）を少なくとも一つのメモリにローディングすることができ、望む（コンボリューションまたは任意の異なる）演算を遂行するように前記装置を構成することができる。引き続き、前記ホストは必要な作業を遂行するために、前記少なくとも一つのメモリから入力データを受信（または引き出し）するように前記装置を構成することができる。完了時に、前記装置は前記プロセッシングホストに対して結果の可用性をシグナリングすることができ／できるか、該当結果を前記少なくとも一つのメモリに直接書き込むことができる。
【００３５】
前記装置は、次の繰り返しで望む演算を遂行するために、同一のまたは他のプロセッシングモジュールによってアクセスされ得る、それぞれのプロセッシングモジュールによって処理されたデータの少なくとも一部を保存できるキャッシュモジュールを具現するため、前記少なくとも一つのメモリと前記装置の間で前記インターコネクトを通じて交換されるデータの数が減少する。コンボリューション演算を遂行するように個別的に構成され、インターコネクトを通じてデータをキャッシュモジュールから／に引き出しおよび／または保存し／するか、前記少なくとも一つのメモリに保存できる複数のプロセッシングモジュールを前記装置に提供することによって、前記装置は多様なコンボリューション作業および演算に柔軟に適応することができる。
【００３６】
好ましい実施例において、前記インターコネクトはシステムバスである。
【００３７】
前記装置の実施例は任意の組み合わせで前記システムの実施例に併合され得ることが理解されるべきである。同様に、本発明の一実施例に係る前記システムの特徴は任意の組み合わせで前記装置の少なくとも一つの実施例に併合され得る。
【００３８】
本発明のさらに他の態様によると、本発明の一つ以上の実施例に係る装置を動作させる方法が定義される。
【００３９】
本発明の一態様で、加速器装置によってデータをアクセスし処理するための方法が定義され、前記方法は、前記加速器装置によって処理される入力データの少なくとも一部を引き出す段階、前記入力データを複数の隣接した入力タイルに分節化（ｓｅｇｍｅｎｔ）する段階−前記入力タイルはあらかじめ決定された大きさを有する−、前記複数の隣接した入力タイルのうち少なくとも一つを前記加速器装置のデータバッファに保存する段階、前記データバッファに保存された、前記複数の隣接した入力タイルのうち前記少なくとも一つのデータ要素にわたって入力ウインドウを配置することによって、前記データバッファに保存された前記データ要素をアクセスして複数の入力領域を生成する段階−前記入力ウインドウはパラメータの集合に応じて調節可能−、および前記複数の入力領域のうち少なくとも一つを順次処理して、前記加速器装置によって前記複数の隣接した入力タイルのうち前記少なくとも一つを少なくとも部分的に処理する段階を含む。
【００４０】
前記方法は本発明の一つ以上の実施例に係る装置に適用され得る。前記方法はデータバッファに保存されたデータの引き出しを単純化する。したがって、プロセッシング要素を具現するハードウェアは連続的な入力領域の処理のために単純化され得る。
【００４１】
一実施例において、前記方法は、複数の隣接した入力タイルのうち他の一つをデータバッファに順次保存する段階、および入力ウインドウを使って複数の隣接した入力タイルのうち前記他の一つのデータをアクセスする段階をさらに含む。
【００４２】
一実施例によると、パラメータの集合はストライド値および拡張値を含む。
【００４３】
好ましい実施例において、拡張値は入力ウインドウの２個の連続的な位置間の距離を規定する。
【００４４】
さらに他の実施例において、前記方法は加速器装置の処理モードを決定する段階をさらに含む。
【００４５】
好ましくは、第１処理モードで、ストライド値は入力ウインドウによってサンプリングされたデータ要素間の間隔を定義する。
【００４６】
他の実施例によると、第２処理モードで、ストライド値は入力ウインドウの単一データ要素によって生成されたデータ要素の数を定義する。データ要素は１以上の次元、２次元、３次元、または４以上の次元で生成され得る。  例えば、データ要素は水平次元および垂直次元を含む２次元で生成され得る。入力ウインドウの単一データ要素によって生成されたデータ要素の数は、次元の数および／または各次元に対して定義され得るストライド値（またはストライド値成分）に従属され得る。例えば、２次元で、水平ストライド値（成分）ｓ×および垂直ストライド値（成分）ｓｙが定義され得、入力ウインドウの単一データ要素によって生成されたデータ要素の数はｓ×＊ｓｙであり得る。ストライド値および／または拡張値のようなパラメータの集合の任意のパラメータは、入力および／または出力データの次元を指称できる一つ以上の次元に対する一つ以上の成分を有するものと定義され得ることが理解されるべきである。パラメータの各成分は、例えば同じストライド値（成分）が少なくとも一部のまたはすべての次元に適用され得るように、個別次元および／または多数の次元と関連され得る。例えば、ｓ×＝ｓｙの場合、同じストライド値が出力データの２個の次元それぞれに適用され得る。
【００４７】
一実施例において、パラメータの集合は係数バッファに保存された係数行列に対するマッピングをさらに含み、入力領域はマッピングに応じて係数行列の少なくとも一つの要素を入力領域に適用することによって処理される。
【００４８】
一実施例によると、前記方法は、前記入力領域の生成と並行して前記係数行列の前記少なくとも一つの要素を引き出す段階、および少なくとも一つのプロセッシング要素を使って前記入力領域上に前記係数行列の前記少なくとも一つの要素を適用する段階をさらに含む。
【００４９】
好ましい実施例において、前記少なくとも一つのプロセッシング要素は要素別積（ｅｌｅｍｅｎｔ−ｗｉｓｅ  ｐｒｏｄｕｃｔ）を具現する。
【００５０】
他の実施例によると、前記入力ウインドウは前記マッピングおよび／または前記処理モードによって前記データバッファに保存されたデータ要素にわたって配置される。
【００５１】
さらに他の実施例において、入力ウインドウを通じてデータ要素をアクセスするものはデータバッファを具現する回路に内蔵（ｈａｒｄ−ｗｉｒｅｄ）される。
【００５２】
他の実施例において、前記データバッファは２次元データバッファであり、前記複数の入力領域それぞれは２次元領域を示す。
【００５３】
好ましくは、前記加速器装置は入力データに対するコンボリューション演算を具現する。
【００５４】
好ましい実施例において、前記入力データはセンサデータを含む。好ましくは、前記センサデータはコンピュータビジョンデータ、イメージデータおよび／または一つ以上のデバイスの処理状態のモニタリングデータのうち一つ以上を含むことができる。
【００５５】
本発明の一態様によると、コンピューティングデバイスまたは装置上で実行される時、本発明の任意の一つの実施例に係る方法を実行するように前記コンピューティングデバイスまたは装置を構成する命令語を保存する一つ以上のマシン読み取り可能（ｍａｃｈｉｎｅ  ｒｅａｄａｂｌｅ）媒体が定義される。
【００５６】
本発明の他の態様によると、入力データを処理するための加速器装置が定義され、前記装置は前記装置をインターコネクトに結合させるように構成されるインターフェースおよび入力データを処理するように構成される少なくとも一つのプロセッシングモジュールを含み、前記加速器装置はインターフェースを通じて入力データの少なくとも一部を引き出し、本発明の一つ以上の実施例の任意の一方法により少なくとも一つのプロセッシングモジュールを使って入力データを処理するように構成される。加速器装置は本発明の一つ以上の実施例に係る装置またはシステムの任意の特徴を任意の組み合わせで含むことができることが理解されるべきである。
【００５７】
本発明の実施例および例示は、多様なモジュール、ユニット、コア、または要素を指称する。前記モジュール、ユニット、コアおよび／または要素は必要な機能を遂行するために、専用ハードウェアでおよび／またはソフトウェアやファームウェアによって構成されるハードウェアで任意の組み合わせで具現され得ることが理解されるべきである。例えば、前記処理（またはコンボリューション）モジュール、前記処理（またはコンボリューション）コアおよび／または前記処理（またはコンボリューション）要素は、任意の組み合わせで、ＦＰＧＡまたはＡＳＩＣに基づいたハードウェアまたは任意の異なるカスタマイジングされたおよび／またはプログラミング可能なハードウェアで具現され得る。同様に、前記キャッシュモジュール、前記データバッファ、前記係数バッファおよび／または前記結果保存所は任意の組み合わせでメモリ回路で具現され得る。ハードウェア構成要素それぞれは、本発明の実施例で説明されるような必要な機能を遂行するようにソフトウェアおよび／またはファームウェアによってさらに構成され得る。前記制御モジュール、前記入力制御ユニット、前記出力制御ユニットおよび／または前記コンボリューション制御ユニットは、任意の組み合わせで、本発明の実施例で説明されるような制御演算および／またはシグナリングを遂行するように構成される汎用または専用処理ハードウェアを使って具現され得る。しかし、本発明の実施例がハードウェア基盤であっても、このような構成は例示に過ぎず、本発明はハードウェアおよび／またはソフトウェアへの特定の具現に限定されないことが理解されるべきである。
【００５８】
本発明の具体的な特徴、態様および長所は下記の説明および添付図面と関連してさらによく理解されるであろう。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施例で使われ得るニューラルネットワークの概略図を図示する。
【図２】本発明の実施例で適用され得るニューラルネットワークのレイヤーで遂行され得るコンボリューション演算を示す。
【図３】本発明の実施例で適用され得るニューラルネットワークのレイヤーで単一要素を計算するためのコンボリューション演算を図示する。
【図４】本発明の一実施例に係る加速器装置を図示する。
【図５】本発明の一つ以上の実施例によって処理される入力データの入力タイルの構造を図示する。
【図６】本発明の一つ以上の実施例により入力平面領域を入力タイルに分割したものを図示する。
【図７】本発明の一つ以上の実施例に係る入力タイルに基づいた出力データの計算を図示する。
【図８】本発明の一つ以上の実施例に適用され得る入力タイルに対するコンボリューション演算の概略図を図示する。
【図９】本発明の一つ以上の実施例に係るコンボリューション演算を計算するための入力ウインドウの構成を図示する。
【図１０】本発明の一つ以上の実施例に係るコンボリューション演算を計算するための入力ウインドウの構成に関する他の例を図示する。
【図１１】本発明の一つ以上の実施例に係るコンボリューション演算を計算するための入力ウインドウの構成および配置に関する一例を図示する。
【図１２】本発明の一つ以上の実施例に係るデコンボリューション（ｄｅ−ｃｏｎｖｏｌｕｔｉｏｎ）演算を計算するための入力ウインドウの配置に関する例を図示する。
【図１３Ａ】本発明の実施例に係るデコンボリューション演算を計算するための構成の他の例を図示する。
【図１３Ｂ】本発明の実施例に係るデコンボリューション演算を計算するための構成の他の例を図示する。
【図１４】本発明の一実施例に係る方法のフローチャートを図示する。
【発明を実施するための形態】
【００６０】
以下の説明で、例示として多様な実施例を図示する図面を参照する。また、多様な実施例がいくつかの例を参照して以下で説明されるであろう。実施例は請求された対象の範囲から逸脱することなく設計および構造の変化を含むことができるということが理解されるべきである。
【００６１】
図１は、ニューラルネットワークの概略図を図示する。ニューラルネットワークは人工知能、機械学習、データマイニング（ｄａｔａ  ｍｉｎｉｎｇ）および他の領域で使われる広く知られているシステムである。ニューラルネットワークは入力データ内の要素を識別または分類したり特徴づけるように訓練され得る。ニューラルネットワークは典型的に入力レイヤー１０１および出力レイヤー１０３を含む少なくとも二つの相互に連結されたレイヤーを含み、これは図１で「レイヤー０」および「レイヤーＬ−１」で図示される。また、ニューラルネットワークは一つ以上の隠れ層１０５を含むことができ、これは図１で「レイヤー１」〜「レイヤーＬ−２」で図示される。それぞれのレイヤー１０１、１０５、１０３はニューラルネットワークの次のレイヤーの各データ要素を決定するために、コンボリューション演算または関係演算のような数学的演算により処理され得る複数の１次元、２次元、または多次元データ要素またはテンソル（ｔｅｎｓｏｒ）を含むことができ、ここで次のレイヤーはまた１次元、２次元、または多次元のデータ要素またはテンソルを含むことができる。ニューラルネットワークの入力および出力レイヤーの次元および構造はニューラルネットワークの隣接したレイヤーを相互に連結する数学的演算を通じて専ら定義され得る。
【００６２】
例えば、ニューラルネットワークの入力レイヤー１０１上の入力データは、例えば車両に装着されたりまたはスマートグラス、ヘッドセット、ヘッドマウント（ｈｅａｄ−ｍｏｕｎｔｅｄ）ディスプレイまたはシースルー（ｓｅｅ−ｔｈｒｏｕｇｈ）ディスプレイのようなウェアラブル（ｗｅａｒａｂｌｅ）デバイスに装着され得るビデオカメラによってキャプチャーされたイメージデータを含むことができる。ニューラルネットワークは顔、交通標識、他の車両などのようなイメージデータ内の物体を認識するように訓練され得る。物体に関するそれぞれの分類および追加のデータが出力レイヤー１０３に提供され得る。
【００６３】
図１は例えば入力イメージに対してコンピュータビジョン作業またはアルゴリズムを遂行するのに使われ得る特定の類型のニューラルネットワークを図示するが、本発明はニューラルネットワーク、特定の類型のニューラルネットワーク、または特定の応用領域に限定されないことが理解されるべきである。
【００６４】
ニューラルネットワークの次のレイヤーの値を計算するための数学的演算は図２に図示されたコンボリューション演算で表現され得る。図２で、入力平面はそれぞれＩＷ×ＩＨの大きさを有する複数の２次元入力平面を含む入力平面テンソル２０１で定義される。それぞれの入力平面２０１−１、…、２０１−ｃは、加重値テンソル２０３の一連の加重値行列２０３−１、…、２０３−ｃの加重値行列とコンボリューションされ得、ここでそれぞれの加重値行列は、活性化関数ｆａｃｔによってマッピングされた後に、ニューラルネットワークの次のレイヤーの値を定義する出力平面テンソル２０５の一つの出力平面２０５−１、…、２０５−ｎに寄与する。したがって、Ｎ個の出力平面２０５−１、…、２０５−ｎに対して、一連の加重値行列２０３−１、…、２０３−ｃのそれぞれはＮ個の加重値行列を含む。したがって、入力平面テンソル２０１のＣ個の入力平面および出力平面テンソル２０５のＮ個の出力平面に対する加重値テンソル２０３はＦＷ×ＦＨ×Ｎ×Ｃの大きさを有する。本明細書の全般にわたって、加重値行列は加重値を係数として特定する係数行列として理解され得ることが理解されるべきである。したがって、一つ以上の実施例において、加重値行列は係数行列であり得、ここで係数は加重値（本明細書の全般にわたって加重値係数とも指称される）を示す。一つ以上の実施例において、加重値は一般的に係数として理解され得、したがって加重値行列および係数行列という用語だけでなく加重値、係数（値）および／または加重値係数（値）という用語は本明細書の全般にわたって同義的に使われ得る。
【００６５】
入力平面２０１−１、…、２０１−ｃをそれぞれの加重値行列とココンボリューションした結果は、個別出力平面２０５−１、…、２０５−ｎに対するバイアス（ｂｉａｓ）値を含むバイアスベクター２０７を形成できる単一バイアス値によってさらにバイアスされる。
【００６６】
コンボリューションされた入力平面および加重値行列とバイアス値の和は、活性化関数ｆａｃｔによってマッピングされてそれぞれの出力平面２０５−１、…、２０５−ｎを生成する。
【００６７】
一般的に、コンボリューション演算は以下で定義され得、ここでｆａｃｔは活性化関数、Ｉ（ｃ）は入力平面テンソル２０１、Ｗ（ｎ、ｃ）は加重値テンソル２０３、Ｂ（ｎ）はバイアスベクター２０７、Ｏ（ｎ）は出力平面テンソル２０５である。
【００６８】
【数１】
2021521516.tif 000003
【００６９】
図３は、本発明の一つ以上の実施例で適用され得る出力平面テンソルの要素を計算するためのコンボリューション演算を図示する。図３に図示された演算は図２に図示されたような要素に基づくことができるため、同一または類似する特徴に対しては同じ参照符号が使われた。
【００７０】
入力平面テンソルはＣ個の入力平面２０１−１、…、２０１−ｃを含むことができる。同様に、出力平面テンソルは出力平面２０５−１、…、２０５−ｎを含むことができる。図２に図示されたような一連の加重値行列２０３−１、…、２０３−ｃから抽出され得るそれぞれの出力平面２０５−１、…、２０５−ｎに対する加重値行列３０１−１、…、３０１−ｎの集合は、それぞれの位置３０５で入力平面２０１−１、…、２０１−ｃから抽出されるデータ値３０３と要素別に積算され、出力平面２０５−１、…、２０５−ｎごとに合算されて（内積）、位置３０７で出力平面２０５−１、…、２０５−ｎごとにコンボリューションの単一データ結果を提供する。したがって、位置３０５は出力平面２０５−１、…、２０５−ｎでの位置３０７と互いに関連され得る。
【００７１】
入力値３０３および加重値行列３０１−１、…、３０１−ｎはそれぞれ単一値を計算するためのコンボリューションに使われる。このような値は、図２のバイアスベクター２０７により定義され得るバイアス値３０９−１、…、３０９−ｎによってそれぞれさらにバイアスされる。その結果は活性化関数３１１−１、…、３１１−ｎによりマッピングされ得る。それぞれの入力平面２０１−１、…、２０１−ｃの入力データはそれぞれの出力平面２０５−１、…、２０５−ｎでの出力値に寄与する。そのような寄与はそれぞれの加重値行列３０１−１、…、３０１−ｎにより制御される。本明細書の全般にわたってコンボリューションカーネル（ｃｏｎｖｏｌｕｔｉｏｎ  ｋｅｒｎｅｌ）とも指称され得る加重値行列の大きさは、入力平面２０１−１、…、２０１−ｃでの入力データの入力領域のそれぞれの大きさを決定することができる。
【００７２】
図４は、本発明の一実施例に係る装置の概略図を図示する。装置４０１は例えば図１、図２および図３に図示されたようなニューラルネットワークの演算を支援できるコンボリューション演算のための加速器であり得る。しかし、加速器装置がニューラルネットワークのコンボリューション演算に関して説明されるとしても、該当装置は一つの特定のシナリオにのみ限定されず、入力データに対して遂行される相当量の（コンボリューションまたは任意の異なる）演算を伴う任意の作業またはシナリオを加速できることが理解されるべきである。
【００７３】
装置４０１はインターフェースを通じてインターコネクト４０３に結合され得る。インターコネクトは例えば装置４０１を外部メモリ４０５およびプロセッシングホスト４０７に連結するためのシステムバスまたは任意の異なる適切な連結またはリンクであり得る。プロセッシングホスト４０７は装置４０１の演算を制御することができ、コンボリューション演算を使って入力データを処理するためにメモリ４０５に保存された入力データを処理するように装置４０１を構成することができる。装置４０１は複数のプロセッシングモジュールを含むことができる。図４の実施例において、プロセッシングモジュールはメモリ４０５に保存された入力データを処理するようにそれぞれ構成され得るコンボリューションモジュール４０９で図示され得る。装置４０１は任意の数のコンボリューションモジュール４０９（例えば、図４に図示されたようなＥ個のコンボリューションモジュール）で構成され得る。これによって、複数のコンボリューションモジュール４０９による個別レイヤーのうち一部または多数の入力データの並列処理が可能となる。コンボリューションモジュール４０９はまた本明細書の全般にわたってコンボリューションエンジンと指称され得、これらの用語は相互に交換的に使われ得る。
【００７４】
装置４０１はコンボリューションモジュール４０９およびキャッシュモジュール４１３それぞれの処理を制御できる制御モジュール４１１をさらに含む。キャッシュモジュール４１３はコンボリューションモジュール４０９それぞれに連結され得、コンボリューションモジュール４０９のうち一つ以上によって処理されたデータを保存し、コンボリューションモジュール４０９それぞれが前記保存されたデータを追加の処理のための入力データとして引き出し（ｒｅｔｒｉｅｖｅ）できるようにするように構成され得る。キャッシュモジュール４１３はオンチップメモリであり得る。集積回路では殆どの電力が外部ハードウェアアクセスによって消費されるため、キャッシュモジュール４１３で結果を保有することは電力消費を減少させる。さらに、オンチップキャッシュモジュール４１３はより高いデータ交換速度およびより短いレイテンシ（ｌａｔｅｎｃｙ）期間を可能にすることができる。キャッシュモジュール４１３はキャッシングされたデータを低いレイテンシで提供するための多数の書き込み及び読み取りポートを含むことができる。したがって、キャッシュモジュール４１３は任意の整列アルゴリズムまたは他のキャッシング戦略の具現ロジックを必要としない低エネルギー、低レイテンシのオンチップメモリとして理解されるべきである。
【００７５】
コンボリューションモジュールはコンボリューションコア４１５、入力制御ユニット４１７および出力制御ユニット４１９を含むことができる。コンボリューションコア４１５はＭ個のプロセッシング要素４１８のような複数のプロセッシング要素４１８を使って（コンボリューションまたは任意の異なる）演算を遂行することによって任意の入力データを処理することができる。
【００７６】
入力制御ユニット４１７はコンボリューションコア４１５により処理されるデータを引き出すように構成され得る。特に、入力制御ユニット４１７はメモリ４０５に保存されたデータまたはインターコネクト４０３を通じてプロセッシングホスト４０７により提供されるデータのようなデータをインターフェースを通じて引き出すことができる。入力制御ユニットはまた、キャッシュモジュール４１３に保存されたデータを引き出すように構成され得る。したがって、コンボリューションコア４１５により処理される入力データはインターフェースを通じて外部で引き出され得るか、またはコンボリューションモジュール４０９のうち任意のものによって以前に処理されたデータに対応し得る。これによって、インターフェースを通じて伝送されるデータの量が減少し得、したがってインターコネクト４０３の帯域幅を節約することができる。コンボリューションモジュール４０９それぞれと相互に連結される装置４０１内にキャッシュモジュールを提供することによって、コンボリューションモジュール４０９はインターフェースを通じての任意のデータ伝送を必要とせずに他の（または同じ）コンボリューションモジュールに対してフィードバックされる結果を柔軟に生成することができる。したがって、出力制御ユニット４１９はコンボリューションコア４１５により処理されたデータをインターフェースおよびインターコネクト４０３を通じてメモリ４０５および／またはキャッシュモジュール４１３に提供するように構成され得る。出力制御ユニット４１９はまた、コンボリューションコア４１５により処理されたデータをインターフェースおよびインターコネクト４０３を通じてプロセッシングホスト４０７に直接またはメモリ４０５を通じて提供するように構成され得る。例えば、出力制御ユニット４１９はメモリ４０５にデータを書き込むことができる。その後、プロセッシングホスト４０７はメモリ４０５で結果を入手することができるという通知を受けることができ、プロセッシングホスト４０７はメモリ４０５から結果を引き出すことができる。一例において、プロセッシングホスト４０７は結果の書き込み中に出力制御ユニット４１９によってアドレッシング（ａｄｄｒｅｓｓ）され得るアドレッシング可能空間を有することができる。
【００７７】
プロセッシングホスト４０７は構成データを制御モジュール４１１に伝送することによって装置４０１を構成することができる。構成データは任意の適切なプログラミングまたは記述（ｄｅｓｃｒｉｐｔｉｏｎ）言語を使ってデータ構造の定義、コマンドシークエンス（ｃｏｍｍａｎｄ  ｓｅｑｕｅｎｃｅ）等を使う処理に関する任意の定義を含むことができる。装置４０１に対するそれぞれの命令語は、複数のパラメータを長い２進ワードのような単一２進ワードに接合させるビットフィールド（ｂｉｔ  ｆｉｅｌｄ）で定義され得る。パラメータは（ｉ）領域の大きさ、フィルタの大きさ、ストライド、拡張、コンボリューション／デコンボリューション／プーリング、スケジューリング従属性リストなどのようなレイヤー演算類型およびパラメータ、（ｉｉ）入力平面位置（ＲＡＭ／キャッシュ）、ベースアドレスおよび平面オフセットなど、（ｉｉｉ）出力平面位置（ＲＡＭ／キャッシュ）、ベースアドレスおよび平面オフセットなどおよび／または装置の処理を特定する任意の異なるパラメータを任意の組み合わせで含むことができる。
【００７８】
制御モジュール４１１は複数のコンボリューションモジュール４０９によりシグナリング（ｓｉｇｎａｌ）された状態に応答して複数のコンボリューションモジュール４０９の間でコマンドをスケジューリングすることができる。この状態はリンク４２１を通じて入力制御ユニット４１７によりシグナリングされ得る「入力読み取り完了」状態、リンク４２３を通じて出力制御ユニット４１９によりシグナリングされる「結果準備」状態または「結果書き込み完了」状態および個別プロセッシング要素によって制御モジュール４１１にシグナリングされる追加状態のうち一つ以上を任意の組み合わせで含むことができる。一例において、コマンドのスケジューリングはリンク４２３を通じて制御モジュール４１１にシグナリングされ得る「結果書き込み完了」状態によって制御され得る。「結果書き込み完了」状態は現在の入力データに対する以前のコマンド処理の結果を要求する次のコマンドをスケジューリングするための条件であり得る。制御モジュール４１１は（コマンド）リンク４２５または装置４０１で利用可能な任意の異なるシグナリング経路を通じてそれぞれのコンボリューションモジュール４０９の処理を制御することができる。
【００７９】
コンボリューションモジュール４０９はプロセッシングホスト４０７および／またはメモリ４０５からインターフェースを通じて係数データを引き出すことができる係数制御ユニット４２７をさらに含むことができる。入力制御ユニット４１７および出力制御ユニット４１９と同様に、係数制御ユニット４２７は（コマンド）リンク４２５を通じて制御モジュール４１１により制御され得、以下で説明されるように、データの流れの閉ループ（ｃｌｏｓｅｄ−ｌｏｏｐ）制御を可能とするために制御モジュール４１１および／または入力制御ユニット４１７に係数データの引き出しに関するそれぞれの状態を任意の組み合わせで提供することができる。しかし、係数制御ユニット４２７は専ら選択的であり得ることが理解されるべきである。かえって、係数制御ユニット４２７は係数データの処理を要求する実施例でのみ提供され得る。
【００８０】
演算を開始するために、プロセッシングホスト４０７はコマンドシークエンス、係数集合、および入力レイヤーデータをメモリ４０５に書き込むことができる。これはニューラルネットワークを定義する命令語および係数と、図１に図示された入力レイヤー１０１のような入力レイヤーのデータを含むことができる。プロセッシングホスト４０７はインターコネクト４０３を通じて制御モジュール４１１に開始トリガーを発行することができる。開始トリガーに応答して、制御モジュール４１１はメモリ４０５からコマンドシークエンスの少なくとも一部を読み取り、コンボリューションモジュール４０９に対して個別コマンドをスケジューリングすることができる。
【００８１】
メモリ４０５を通じてのコマンドの提供は、同じコマンドシークエンスが連続的な入力レイヤー上で繰り返し実行されなければならない場合に有利であり得る。このような場合、制御モジュール４１１はそれぞれの繰り返し後に最初に保存されたコマンドシークエンスをメモリ４０５から再び読み取るように構成され得る。追加的にまたは代案として、制御モジュール４１１の内部保存容量に応じて、制御モジュール４１１は単一パス（ｓｉｎｇｌｅ  ｐａｓｓ）でメモリ４０５からコマンドシークエンスを読み取り、それぞれの開始トリガー後にコマンドシークエンスを再使用するように構成され得る。したがって、プロセッシングホスト４０７は次の入力レイヤーのデータをメモリ４０５に書き込み、それぞれの完了時点でメモリ４０５から出力レイヤーの結果を読み取りのみする必要があり得る。
【００８２】
メモリ４０５にコマンドを保存することによって、コマンドシークエンス、係数集合および入力レイヤーデータをメモリ４０５に最初に書き込むことを除き、実行中にプロセッシングホスト４０７が関与せずに装置４０１条での実行（例えばニューラルネットワークの実行）が可能になる。引き続き、次のレイヤー（これはニューラルネットワークの（後続）内部レイヤー、次のフレームの入力レイヤー、または一般的にホスト書き込み（ｈｏｓｔ  ｗｒｉｔｅ）であり得る次の入力レイヤーであり得る）のデータのみがメモリ４０５に書き込まれなければならず、最終または中間実行結果はメモリ４０５から読み取られなければならない。一実施例において、メモリ４０５でのおよび／またはメモリ４０５からのデータのコピーはＤＭＡプロセスによって行われ得る。
【００８３】
複数のプロセッシング要素４１８に加えて、コンボリューションコア４１５はデータバッファ４３１およびコンボリューション制御ユニット４３３を含むことができる。また、係数データの処理を必要とし、係数制御ユニット４２７を含むことができる実施例において、それぞれの（または少なくとも一部の）プロセッシング要素４１８は係数バッファ４２９を含むことができる。係数バッファ４２９は係数制御ユニット４２７により制御され得、後続コンボリューション演算に要求される係数データを保存することができる。データバッファ４３１は入力制御ユニット４１７により制御され得、複数のプロセッシング要素４１８による後続コンボリューション演算に要求されるデータを保存することができる。係数バッファ４２９はそれぞれの係数を保存し、複数のプロセッシング要素４１８に係数を提供するように構成されるメモリアレイであり得る。係数バッファ４２９は複数のプロセッシング要素４１８それぞれに加重値係数のような互いに異なる係数データを提供するための複数の個別リンクを含むことができる。
【００８４】
係数制御ユニット４２７はメモリ４０５から係数およびバイアス値を読み取ることができる。係数およびバイアス値はメモリ帯域幅を最小化するために圧縮された可変フォーマットでメモリ４０５に保存され得る。係数制御ユニット４２７は係数およびバイアス値を圧縮解除し、これを固定された最終フォーマットで係数バッファ４２９に伝達するように構成され得る。
【００８５】
コンボリューション制御ユニット４３３は、それぞれのプロセッシング要素４１８が係数バッファ４２９およびデータバッファ４３１から正しい入力データが提供されて演算を遂行するようにスケジューリングおよび制御方式を適用することができる。コンボリューション制御ユニット４３３はウインドウ位置または入力平面の間のプロセス止まり（ｐｒｏｃｅｓｓ−ｓｔａｌｌ）を避けるために、プロセッシング要素４１８の処理をさらにモニタリングすることができる。スケジューリングおよび制御方式はＮＣＯ基盤であり得る。この例において、係数およびデータ選択パターンはＮＣＯによって生成され得る。通常的に、ＮＣＯは周期的な値を生成することができる。追加的にまたは代案として、スケジューリングおよび制御方式はルックアップテーブル（ｌｏｏｋｕｐ  ｔａｂｌｅ；ＬＵＴ）基盤メカニズムであり得、係数およびデータ選択パターンはルックアップテーブルで定義される。ルックアップテーブルの内容は係数集合と共に定義され得る。ＬＵＴはそれぞれの係数集合の係数値の位置を選択したり割当するのに使われ得る。係数集合およびＬＵＴは任意の形状および希少性（ｓｐａｒｓｅｎｅｓｓ）を有する行列をフィルタカーネル（ｆｉｌｔｅｒ  ｋｅｒｎｅｌ）で定義するのに組み合わせられて使われ得る。コンボリューション制御ユニット４３３はＬＵＴの要素をステップオーバー（ｓｔｅｐ  ｏｖｅｒ）することができ、これらの要素を行列から係数を選択するための座標、またはコンボリューションのための係数集合の係数値に割当するための座標として使うことができる。したがって、係数集合およびこれのＬＵＴは互いに対応し得る。係数制御ユニット４２７は係数集合と共に任意のＬＵＴを読み取ることができる。ルックアップテーブルは多様な処理パラメータの単純化された定義（例えば、ルックアップテーブルが一部の位置に０の値を含む場合、係数行列内のどの係数位置が使用されるべきであるかに関する定義）を可能とする。これを通じて入力／出力平面対に対する任意の形状の係数行列の定義が可能になる。
【００８６】
データバッファ４３１は入力制御ユニット４１７により引き出された入力データを２次元アレイで保存できる２次元データバッファで構成され得る。したがって、データバッファ４３１内のデータは２個のインデックスを使ってアクセスされ得る。好ましい実施例において、データバッファ４３１内のデータは、例えば図１４で説明されるような調節可能な入力ウインドウを通じて引き出され得る。データバッファ４３１は複数のプロセッシング要素４１８のすべてのプロセッシング要素に対してデータバッファ４３１に保存された入力データに対するアクセスを可能にすることができる。それぞれのプロセッシング要素４１８上でコンボリューション演算を遂行するために要求される入力データの決定および引き出しは、係数バッファ４２９からの互いに異なる係数値を考慮してデータバッファ４３１からの同じ入力データに対するサンプリングをするように入力ウインドウを調節することによって達成され得る。
【００８７】
入力制御ユニット４１７は入力データをコンボリューションコア４１５に供給することができる。例えば、入力データは入力画素であり得る。入力制御ユニット４１７は入力データのタイル（例えばピクセルのタイル）がデータバッファ４３１内に読み取られるようにすることができる。タイルの少なくとも一部は一つ以上の隣り合うタイルまたはパッディング（ｐａｄｄｉｎｇ）値との重なり（ｏｖｅｒｌａｐ）を含むことができる。
【００８８】
コンボリューション演算は乗算−累積回路（ＭＡＣ）を提供することによって複数のプロセッシング要素４１８それぞれによって具現され得、ＭＡＣは乗算器４３５、合算器４３７および結果をバッファリングするように構成される結果保存所４３９を含むことができる。複数のプロセッシング要素４１８の各プロセッシング要素は、合算器４３７の入力を決定してバイアス値で合計を初期化したり、乗算器４３５の結果を結果保存所４３９に保存された部分的な結果に累積させるマルチプレクサ４４１をさらに含むことができる。
【００８９】
結果保存所４３９はアドレッシング可能なメモリ（例えばアドレッシング可能なＳＲＡＭ）で具現され得る。プロセッシング要素４１８にアドレッシング可能な結果保存所４３９を提供することによって、プロセッシング要素４１８は入力データの多様な領域に対して柔軟に演算を行い、アドレッシング可能な結果保存所４３９内に入力データのそれぞれの領域に対する複数の部分結果を保存することができる。結果保存所４３９はＴＷ×ＴＨ大きさのＲ個の出力タイルを収容することができる。したがって、それぞれのプロセッシング要素４１８において、結果保存所４３９はコンボリューションコア４１５の計算容量を単一入力平面シークエンスに対してＭ×Ｒ個の出力タイルまで増やすためにＲ個の出力タイルまでバッファリングすることができる。
【００９０】
複数のプロセッシング要素４１８の結果は、結果スケーリング（ｓｃａｌｉｎｇ）および量子化ユニット、シリアライザ（ｓｅｒｉａｌｉｚｅｒ）、結果再整列ユニット、そして複数のプロセッシング要素４１８の結果を後処理する特定の作業を遂行するように構成され得る追加プロセッシングユニットのうち一つ以上を含むコンボリューションコア４１５の多様な後続プロセッシング要素に提供され得る。また、処理の結果は、活性化関数を具現することができ、最終結果を出力制御ユニット４１９に提供できる活性化ユニット４４３に提供され得る。例えば、コンボリューション積累積はカーネルの大きさおよび入力平面カウントが増加するにつれてワードの長さを増加させ、累積した積のワードの長さを効果的に増加させることができる。プロセッシング要素４１８で十分な精密度で演算が行われ得るように、最終結果のみがダウンスケーリング（ｄｏｗｎ−ｓｃａｌｅ）されて結果スケーリングおよび量子化ユニットで入力ワードの長さで再び量子化され得る。
【００９１】
装置４０１はコンボリューションニューラルネットワーク（ＣＮＮ）のための加速器として使われ得る。例えば、メモリ４０５からインターコネクト４０３を通じて引き出された入力データはＣＮＮの入力レイヤーを示すことができ、それぞれのコンボリューションモジュール４０９はＣＮＮのレイヤーのうち少なくとも一部を処理することができる。また、キャッシュモジュール４１３に保存されたデータは、複数のコンボリューションモジュール４０９のうち同一のまたは異なるコンボリューションモジュールによって処理されるＣＮＮの次のレイヤーのうち少なくとも一部を示すことができる。
【００９２】
初期化中に、プロセッシングホスト４０７は入力レイヤーの入力平面テンソルおよび加重値テンソルをメモリ４０５にローディングすることができる。例えば、入力平面テンソルおよび加重値テンソルは図２に図示されたような入力平面テンソル２０１および加重値テンソル２０３に対応し得る。また、プロセッシングホスト３０７はコマンドシークエンスをメモリ４０５にローディングすることができる。入力平面テンソル、加重値テンソルおよびコマンドシークエンスがメモリ４０５にローディングされるやいなや、プロセッシングホスト４０７は制御モジュール４１１を通じて装置４０１の動作をトリガリングすることができる。制御モジュール４１１はメモリ４０５からコマンドシークエンスを引き出すことができ、複数のコンボリューションモジュール４０９の間でコマンドシークエンスのコマンドをスケジューリングするための仲裁者として作用することができる。
【００９３】
制御モジュール４１１が複数のコンボリューションモジュール４０９のうち一つで実行するコマンドをスケジューリングすることによって、コンボリューションモジュール４０９のそれぞれの入力制御ユニット４１７および係数制御ユニット４２７は入力平面のうち少なくとも一部の入力データおよびその加重値テンソルをメモリ４０５からそれぞれ引き出す。入力平面はＩＷ×ＩＨの大きさを有することができ、複数のタイルに分割され得、コンボリューションモジュール４０９はタイルのうち一つ以上を引き出すことができる。
【００９４】
制御モジュール４１１による複数のコンボリューションモジュール４０９のうち一つ以上に対するコマンドのスケジューリングは、以前のコマンドの完了に依存し得る。それぞれのコンボリューションモジュール４０９は、入力制御ユニット４１７および出力制御ユニット４１９と制御モジュール４１１の間のそれぞれの連結（例えばリンク４２１、４２３）を含むことができる。これらの連結は、例えばコマンド識別子、完了マーカーフィールドなどを任意の組み合わせで含むことができるフラグ（ｆｌａｇ）や類似する信号を送信するように構成され得る。フラグは入力制御ユニット４１７からのコマンド完了フラグを含むことができる。このようなコマンド完了フラグは、入力データを要求する次のコマンドをトリガリングできるが、現在の処理の結果を要求しないスケジューリング条件を示すことができる。フラグは出力制御ユニット４１９からのコマンド完了フラグをさらに含むことができる。このようなコマンド完了フラグは、任意のコンボリューションモジュール４０９で、現在の処理の結果を要求する次のコマンドをトリガリングできるスケジューリング条件を示すことができる。
【００９５】
フラグ基盤スケジューリングを可能とするために、各コマンドは従属性リストで以前のコマンドおよび条件に対する従属性を定義することができ、これはコンボリューションモジュール４０９（またはそのユニット）のうち一つ以上によって提供されるフラグに基づいて制御モジュール４１１により検査され得る。従属性は現在実行されるコマンド周囲の定義された数のコマンド（これは従属性検査のための移動ウインドウ（ｍｏｖｉｎｇ  ｗｉｎｄｏｗ）を定義できる）に対して検査され得る。これを通じて従属性リストの項目数を固定されたビット数に減少させることができる。
【００９６】
スケジューリング時に、コマンドは制御モジュール４１１から望むコンボリューションモジュール４０９に送信され得る。コマンドは多数のビットフィールドからなる命令語ワードであり得る。命令語ワードはコンボリューションモジュール４０９の内部の各ステージ（例するにバッファ４２９、４３１）およびコンボリューション制御ユニット４３３）に並列で提供され得る。命令語ワードを受信すると、コンボリューションモジュール４０９のステージは各ステージの処理のために要求されるビットフィールドのみを使って個別的に各ステージの実行を開始することができる。データの流れを制御するために、コンボリューションモジュール４０９はコンボリューションコア４１５および／またはプロセッシング要素４１８の処理が開始される時に、係数およびデータ可用性を維持するために閉ループ制御接近法を適用することができる。制御モジュール４１１はコンボリューションモジュール４０９に対する命令語としてのコマンドをスケジューリングすることができる。これは入力平面読み取りベースアドレス、平面アドレスオフセット、平面カウント、算術演算の類型およびパラメータ、係数読み取りベースアドレス、出力平面書き込みベースアドレス、平面オフセットなどのうち一つ以上を任意の組み合わせで含む単一命令語ワードであり得る。コンボリューションモジュール４０９の各ステージは命令語を並列で受信することができ、命令語ワードの関連部分を個別的に使って遂行を開始することができる。
【００９７】
一例によると、データの流れに対する閉ループ制御は下記の段階のうち一つ以上を含むことができる。
１．係数制御ユニット４２７は係数バッファ４２９での充填（ｆｉｌｌｉｎｇ）レベルまたは使用可能空間を継続してモニタリングすることができ、係数バッファ４２９で利用可能な空いた空間が十分な場合、インターフェースを通じて次の入力平面の係数を読み取ることができる。係数が読み取られる時に、係数制御ユニット４２７は完了フラグを入力制御ユニット４１７に送信することができる。
２．入力制御ユニット４１７はデータバッファ４３１での充填レベルまたは使用可能空間を継続してモニタリングすることができる。係数制御ユニット４２７から完了フラグを受信した後に、入力制御ユニット４１７はインターフェースを通じて、および／またはキャッシュモジュール４１３から次の入力平面のデータを読み取ることができ、利用可能な空いた空間が十分な場合、データバッファ４３１にデータを書き込むことができる。
３．コンボリューション制御ユニット４３３はデータバッファ４３１の充填レベルを継続してモニタリングすることができ、要求されたデータがデータバッファ、４３１に存在すると直ぐに算術演算を開始することができる。これはまた、それぞれのフラグを使って入力制御ユニット４１７によりコンボリューション制御ユニット４３３にシグナリングされ得る。この段階では要求された係数が係数バッファ４２９に存在するが、これは係数制御ユニット４２７により送信された完了フラグがデータバッファ４３１内にデータを読み取るための前提条件であるためである。したがって、データバッファ４３１の充填レベルを検査した後に、コンボリューション制御ユニット４３３は一つ以上のプロセッシング要素４１８を駆動するために、係数データバッファ４２９およびデータバッファ４３１からの係数およびデータに対する読み取り位置をそれぞれ生成し始めることができる。
４．現在の入力データに対する計算が終了した後に、コンボリューション制御ユニット４３３はデータバッファ４３１からのデータおよび係数バッファ４２９からの関連係数の少なくとも一部をフラッシング（ｆｌｕｓｈ）することができる。使用可能空間は段階１および２でモニタリングされ得、係数制御ユニット４２７および入力制御ユニット４１７は段階３にしたがって次の処理をトリガリングするために追加的な係数および入力データを継続して読み取ることができる。
【００９８】
したがって、コンボリューション制御ユニット４３３は算術演算を制御することができ、制御モジュール４１１は装置４０１でのスケジューリングを制御することができる。係数バッファ４２９およびデータバッファ４３１はいずれも例えば多数の入力平面に対するいくつかの係数集合および多数のデータタイルのようなデータを保存するように構成され得、これに伴いコンボリューションコア４１５は係数またはデータの追加の引き出しを待つ必要なく、現在の入力平面に対する処理を完了した後に次の入力平面に対する処理を直接継続できるようになる。これを通じて、プロセッシング要素４１８の動作にバランスを取って持続的な演算を提供することができる。閉ループ制御は係数バッファ４２９およびデータバッファ４３１の最適の充填を可能とする。これに伴い、インターフェースのハードウェア制約によってのみ制限されるデータ処理量（ｄａｔａ  ｔｈｒｏｕｇｈｐｕｔ）が増加する。
【００９９】
データの流れの閉ループ制御は本発明の一つ以上の実施例で定義され得る。しかし、閉ループ制御の一部が具現され得、互いに異なるデータの流れ制御接近法が他の実施例で使われ得ることが理解されるべきである。特に、データの流れは他の構成要素によって、および／または互いに異なる順序で制御され得、本発明はデータの流れの特定の類型の閉ループ制御に限定されない。
【０１００】
図５は、データワードのような複数のデータ要素５０３で構成された入力タイル５０１を図示する。データ要素５０９はＰＷ×ＰＨの大きさを有する２次元領域を示すことができる。入力タイル５０１を結合するために、データ要素５０３は入力制御ユニット４１７によりメモリ４０５から順次引き出され得る。図５に図示されたように、入力タイル５０１は８×８データ要素のアレイで構成され得る。しかし、互いに異なる大きさのデータ要素５０３または入力タイル５０１の異なる分割が選択され得、本発明は８×８データワードを含む入力タイルに限定されないことが理解されるべきである。
【０１０１】
図６は、ＩＷ×ＩＨ大きさの入力平面を図５の入力タイル５０１のような複数の入力タイルに分割したものを図示する。図６に図示されたように、各入力タイルはタイル原点６０１を有することができる。図４を再び参照すると、入力タイル５０１は装置４０１の基本プロセッシングユニットを定義することができる。入力平面をそれぞれのタイル原点６０１で複数の入力タイルに分割することによって、装置４０１は可変的な大きさの入力平面に対してコンボリューション演算を遂行するように柔軟に適応することができる。装置４０１は一つのシークエンスで入力タイル領域を処理するように構成され得る。装置４０１は入力平面テンソルの入力平面にわたって同じタイル原点６０１で入力タイルを順次読み取ってコンボリューション演算を実行することができ、結果的な出力タイルは同一原点を有する出力平面テンソルの一つ以上の出力平面にわたる出力タイルに対応し得る。したがって、装置４０１は、一つ以上の入力平面にわたって、タイル原点６０１を経て進行して各タイル原点６０１から順次的な計算を実行することによって、入力平面テンソルを処理することができる。入力平面テンソルを固定された大きさの入力タイルに分割することによって、加速器４０１の演算は入力平面テンソルの特定の大きさの入力平面に対して独立的であり得る。入力平面テンソルは細分されて互いに異なるタイル原点６０１で順次的な段階で処理される。
【０１０２】
一つ以上の好ましい実施例において、入力データはタイルデータだけでなくタイルを囲む追加データ（これはタイルの縁で特定の大きさの加重値カーネルのコンボリューションを可能とするのに必要であり得る）を含むことができる。例えば、５×５のカーネルの大きさは、タイルの上部および左側（および／または下部および右側）で少なくとも２個の追加の行を必要とし得る。したがって、１×１加重値カーネルを除いて、加速器は加重値カーネルの要求される重なりにより隣のタイルからデータを読み取ることができる。装置４０１はそれぞれの加重値カーネルに対して要求される周辺データを使って、入力平面テンソルの一つ以上の入力平面から同一原点でタイルシークエンスを読み取ることができ、タイルシークエンスにより出力平面データを計算するコンボリューション演算を実行することができる。コンボリューション演算を遂行するために、各入力タイルは本発明の実施例に関して後述されるように、プロセッシング要素によって後続してアクセス、サンプリングおよび処理される複数の処理領域に細分され得る。
【０１０３】
本発明の実施例がコンボリューション演算に関して説明されたが、本発明はコンボリューション演算にのみ限定されないことが理解されるべきである。具体的には、プロセッシング要素４１８は例えばコンボリューション演算と並行してまたはその代わりに遂行され得る関係演算を具現することができる。例えば、乗算器４３５および合算器４３７に追加して、またはその代わりに、一つ以上のプロセッシング要素４１８は最大プーリングを具現するために結果保存所４３９とデータバッファ４３１の出力の間に提供される構成可能な比較器（例えば、所定類型のＣＮＮによって要求され得るレイヤー演算を遂行する、構成可能なウインドウ深さ方向（ｗｉｎｄｏｗ  ｄｅｐｔｈ−ｗｉｓｅ）プーリングユニット）を含むことができる。
【０１０４】
好ましい実施例において、結果保存所４３９の容量は単一入力平面から出力平面が計算される演算にそれぞれのプロセッシング要素４１８を使うために減少し得、出力平面の独立的な集合がすべての入力平面から計算され得る。このような実施例において、結果保存所４３９は、マルチプレクサ４４１を通じて合算器４３７に直接フィードバックされて（ｓｗ＊ＭＷ）×（ｓｈ＊ＭＨ）のデータワード容量を有する単一レジスタステージであり得、ここでｓｗおよびｓｈはデコンボリューションが使われる場合にはそれぞれ最大水平および垂直デコンボリューションストライド値であり、そうでない場合には１である。また、コンボリューションコア４１５が単一入力平面から単一出力平面を計算するのにのみ使われる場合、Ｍは１であり得る。これらの演算は例えば平面方向（ｐｌａｎｅ−ｗｉｓｅ）コンボリューション／デコンボリューションおよび平面方向プーリングを含む平面方向演算と指称され得る。
【０１０５】
本発明の実施例は下記の演算、すなわちコンボリューション（平面方向または深さ方向）、デコンボリューション（平面方向または深さ方向）、最大プーリング（平面方向または深さ方向）、平均プーリング（平面方向または深さ方向）、完全連結レイヤー（データバッファ４３１に連結加重値をローディングし、各入力平面データ値を個別的な１×１フィルタとして係数バッファ４２９に個別的にローディングすることによって行われる）、行列乗算および／または活性化レイヤー（例えば、活性化ユニット４４３で活性化ＬＵＴを具現することによって行われる）のうち一つ以上を可能にするように構成され得る。
【０１０６】
本発明は特定の構成のニューラルネットワークに限定されないことが理解されるべきである。具体的には、本発明の一つ以上の実施例は多様な構成のニューラルネットワークを具現するのに使われ得る。
【０１０７】
図７は、本発明の一実施例に係る装置によるタイルシークエンスの処理を図示する。この装置は図４に図示されたような装置４０１に対応し得る。また、入力平面テンソルのタイルおよび出力平面テンソルのタイルは、図５および図６に図示されたタイルにより構成され得る。
【０１０８】
図７はライン７０１、７０３、７０５の同一原点でのそれぞれの入力タイルシークエンスに対する計算を図示する。ライン７０１で、上部左側原点７０７のタイルシークエンスが計算され得、引き続きライン７０３に図示されたような隣接した位置のタイルシークエンスが計算され得る。ライン７０５の最後のタイル原点７０９で処理が終了され得る。加重値行列集合７１１の値およびバイアス値７１３が各ライン７０１、７０３、７０５で同一に維持され得るが、入力および出力平面での入力タイルの位置（または原点）のみが各ライン７０１、７０３、７０５で変更され得る。各シークエンス７０１、７０３、７０５で固定された大きさの領域を有する入力タイルに対する計算を行うことによって、任意の入力および出力平面（またはテンソル）の大きさに対して独立的な処理能力が可能となる。
【０１０９】
加速器装置４０１は並列的にまたは順次的に入力平面テンソルの一つ以上の入力平面にわたって同一原点で入力タイルシークエンスＩＴ（ｃ）を読み取り、コンボリューション方程式７１５により表現されるように、同じタイル領域に対するコンボリューション演算を遂行して出力タイルＯＴ（ｎ）を生成するように構成され得る。このようなシークエンスは、加重値行列集合７１１およびバイアス値７１３を使って全体の入力平面テンソルのコンボリューションを完了するために、ライン７０３、７０５に図示されたような後続タイル原点で繰り返される。
【０１１０】
図４の装置４０１を参照すると、入力制御ユニット４１７は入力タイルの少なくとも一つの領域（そして必要な場合、周辺の重なり）を再構成する入力データでデータバッファ４３１を満たすことができ、クロックサイクル単位でＤＷ×ＤＨ大きさの配置および調節可能な入力ウインドウを使って入力データに対するアクセスを可能にすることができる。
【０１１１】
入力制御ユニット４１７が入力タイルＩＴ（ｃ）を読み取ることによって、係数制御ユニット４２７は計算される各出力平面に対するバイアス値Ｂ（ｎ）を読み取ることができる。次の段階でまたはバイアス値Ｂ（ｎ）を読み取る前に、係数制御ユニット４２７は入力タイルＩＴ（ｃ）ごとに加重値行列テンソル７１１  Ｗ（ｎ、ｃ）の要求される行列集合を読み取ることができる。
【０１１２】
加重値行列集合７１１  Ｗ（ｎ、ｃ）およびバイアス値７１３  Ｂ（ｎ）は係数バッファ４２９に提供され得、係数バッファ４２９は加重値行列集合７１１  Ｗ（ｎ、ｃ）の加重値行列からの単一係数およびバイアス値７１３  Ｂ（ｎ）からのバイアス値を含むＭ個の出力平面に対するパラメータに対して、出力平面ごとに同時アクセスを提供することができる。Ｍ個の単一加重値行列係数はアクセスごとに行列の同じ位置から供給され得る。
【０１１３】
したがって、コンボリューションコア４１５は出力平面ごとに単一加重値係数を使用してＭ個の出力タイルＯＴ（ｎ）上のＤＷ×ＤＨ領域に対する部分結果を同時に計算することができ、これは単一加重値係数とＭ個のプロセッシング要素４１８でのＤＷ×ＤＨ領域の入力データを要素別に乗算することによって行われる。
【０１１４】
図４を再び参照すると、コンボリューションコア４１５のコンボリューション制御ユニット４３３は、コンボリューション方程式７１５の乗算被演算子であるＷ（ｎ、ｃ）と入力タイルＩＴ（ｃ）の入力データのＤＷ×ＤＨ大きさの各入力領域を複数のプロセッシング要素４１８それぞれの乗算器４３５に対する入力として同時に提供するように係数バッファ４２９およびデータバッファ４３１を駆動するように構成され得る。バイアスベクターＢ（ｎ）  ７１３のバイアス値は各プロセッシング要素４１８により該当プロセッシング要素の第１計算サイクルで読み取られて（およびマルチプレクサ４４１により選択）、結果保存所４３９に保存される部分結果の計算中に考慮され得、後続繰り返しで完了し得る。したがって、結果の累積は結果保存所４３９により達成され得る。マルチプレクサ４４１は最初にバイアススケーリングおよびラウンディング（ｒｏｕｎｄｉｎｇ）要素からの入力を合算器４３７に対する被演算子として選択することができる。後続サイクルで、マルチプレクサ４４１は結果保存所４３９の出力を合算器４３７に対する被演算子として選択して累積を具現することができる。バイアススケーリングおよびラウンディング要素は、アップスケーリング（ｕｐ−ｓｃａｌｅ）されたバイアス値と共に、結果の大きさ範囲に比例するオフセットを処理された係数に対して追加することができる。バイアススケーリングおよびラウンディング要素によって適用される値（例えば、バイアス値およびバイアススケーリング値）は、ニューラルネットワークの定義で（例えばコマンドワード内で）特定され得る。これを通じて、高いワード長さ（ｈｉｇｈ  ｗｏｒｄ−ｌｅｎｇｔｈ）累積結果の切断（ｔｒｕｎｃａｔｉｏｎ）によって、量子化値に非対称誤差が導入される効果を減少させることができる。
【０１１５】
また、図４を参照すると、コンボリューション制御ユニット４３３は、実際に積が計算されている位置で同じ出力平面の累積した部分結果を合算器４３７での入力と同時に提示するために、データバッファ４３１および係数バッファ４２９に対する読み取りに対して整列した結果保存所４３９の読み取りをトリガリングすることができる。累積した部分結果に追加された積（合算器４３７の出力）は追加的な累積した部分結果として結果保存所４３９に再び書き込まれ得る。
【０１１６】
出力平面ごとに適用される単一加重値係数に対するＤＷ×ＤＨのカーディナリティ（ｃａｒｄｉｎａｌｉｔｙ）で入力タイル領域を読み取ることによって、コンボリューションコア４１５はＭ個のプロセッシング要素４１８を使って出力平面のＭ個の出力タイルＯＴ（ｎ）それぞれに対してＤＷ×ＤＨ領域に対するクロックサイクル当たりの部分結果の計算を具現することができる。コンボリューション制御ユニット４３３はＷ（ｎ、ｃ）のすべての加重値行列係数をステップオーバーすることができ、係数位置に対応する計算領域原点からのオフセットとしてＤＷ×ＤＨのカーディナリティを有する入力データをデータバッファ４３１から読み取り、ＤＷ×ＤＨ個の入力データ位置にわたって加重値カーネルに対する全体のコンボリューション演算を並列的に形成することができる。
【０１１７】
一つ以上の実施例において、互いに異なるコンボリューションモジュール４０９は隣り合うタイルシークエンスを並列的に処理することができる。例えば、図７のライン７０１のタイルシークエンスは第１コンボリューションモジュールによって計算され得、図７のライン７０３のタイルシークエンスは第２コンボリューションモジュールによって計算され得、ライン７０５のタイルシークエンスは装置４０１のさらに異なるコンボリューションモジュールによって計算され得る。各コンボリューションモジュール４０９において、プロセッシング要素４１８はそれぞれのタイルシークエンスと関連した同じデータをデータバッファ４３１から獲得することができる。このような構成は入力平面領域にわたるコンボリューションモジュール４０９の並列処理を示すことができる。
【０１１８】
一つ以上の実施例において、装置４０１は複数のコンボリューションモジュール４０９により入力平面テンソルの入力平面にわたってタイル原点でタイルシークエンスを並列的に計算するように構成され得る。このような構成は出力平面にわたるコンボリューションモジュール４０９の並列処理を示すことができる。
【０１１９】
一つ以上の実施例において、装置４０１は複数のコンボリューションモジュール４０９にわたってタイルシークエンスの計算を分配するように構成され得、互いに異なるプロセッシング要素４１８は入力タイルの部分領域を並列的に計算することができる。これはデータバッファ４３１からコンボリューションコア４１５の各プロセッシング要素４１８でのそれぞれの並列連結によって可能になる。このような構成は入力タイル領域にわたるプロセッシング要素４１８の並列処理を示すことができる。
【０１２０】
前述された一実施例によると、装置４０１は互いに異なるコンボリューションモジュール４０９が互いに異なる原点で互いに異なるタイルシークエンスを並列的に計算（前述したような入力平面領域にわたる並列処理）できるように構成され得る。他の実施例によると、互いに異なるコンボリューションモジュール４０９は同じタイル原点で（そして同じタイルシークエンスを読み取って）Ｒ＊Ｍ個の互いに異なる出力平面の数を計算し、ニューラルネットワークレイヤーによって生成された全体の出力平面カウントを完了することができる（前述したような出力平面にわたる並列処理）。さらに他の実施例において、データバッファ４３１のウインドウの大きさＤＷ×ＤＨはＤＷ＝ｗ＊ＭＷ、ＤＨ＝ｈ＊ＭＨに拡大され得、これを通じて同じＲ＊Ｍ個の出力平面に対する拡大したＤＷ×ＤＨウインドウ上でｗ＊ｈ個のプロセッシング要素４１８の演算が可能になる（前述したような入力タイル領域にわたる並列処理）。他の実施例において、複数のコンボリューションモジュール４０９および各コンボリューションモジュール４０９の複数のプロセッシング要素４１８は、入力データに対する並列処理を可能とするために多様な（そして互いに異なる）方式および構成で使われ得ることが理解されるべきである。
【０１２１】
図４を再び参照すると、コンボリューション制御ユニット４３３は各出力タイルＯＴ（ｎ）上の要求される領域に対する入力タイルＩＴ（ｃ）のコンボリューション結果を、順次的な段階で累積する任意の処理を延長させることができる。図８〜図１３と関連して後述されるように、コンボリューション制御ユニット４３３は各入力タイルＩＴ（ｃ）内のそれぞれの要求される計算領域原点（入力領域原点）でコンボリューションシークエンスを繰り返して、出力タイルＯＴ（ｎ）の各領域に対して要求される部分結果を生成することができる。計算領域原点および入力領域原点という用語は本明細書の全般にわたって相互に交換的に使われ得る。コンボリューション制御ユニット４３３は、複数のプロセッシング要素４１８の並列性を活用してＭ個のグループでプロセッシング要素４１８によるコンボリューション演算をさらに繰り返して、結果保存所４３９に保存される出力平面のＲ＊Ｍ個の出力タイルを生成することができる。
【０１２２】
結果保存所４３９の容量がプロセッシング要素４１９当たりＴＷ×ＴＨ×Ｒ個のデータ要素に対応する場合、コンボリューションコア４１５はＲ＊Ｍ個の出力タイルに対する累積データを保存することができる。これを通じて、Ｎ個の出力平面を生成するための入力平面シークエンス読み取りの数をＮ／Ｍ／Ｒ回に減少させることができる。
【０１２３】
Ｎ個の出力平面を計算するために、制御ユニット４１１はコンボリューションモジュール４０９のＲ＊Ｍ個の出力平面結果をキャッシュモジュール４１３に書き込むことができ、ニューラルネットワークの実際のレイヤーによって生成されるＮ個の出力平面全部に対する計算が完了するまで、次のグループのＲ＊Ｍ個の出力平面を計算するために入力平面を同じであるか異なるコンボリューションモジュール４０９内に再び読み取ることができる。対応する加重値テンソルを使って入力平面の入力タイルＩＴ（ｃ）に対するコンボリューションを完了した後に、コンボリューション制御ユニット４３３は入力平面の次の入力タイルＩＴ（ｃ）とデータバッファ４３１および係数バッファ４２９から読み取られたそれぞれの加重値に対する処理を継続し、ニューラルネットワークの現在のレイヤーに対する入力平面および加重値テンソルの全体のコンボリューションを生成することができる。
【０１２４】
出力平面ごとに加重値行列から各サイクルで単一加重値係数を使用することによって、コンボリューション演算の全体の機能を維持しながらも、任意の加重値行列の大きさに対して独立的に、任意の加重値行列の大きさおよび形状に対して完全にスケーリングされ得るようにプロセッシング要素４１８の活用がなされ得る。
【０１２５】
出力平面の数Ｎがプロセッシング要素の数Ｍの分数である場合、大きさがＤＷ×ＤＨ＝（ｗ＊ＭＷ）×（ｈ＊ＭＨ）であるデータバッファ４３１の拡大した入力ウインドウは、プロセッシング要素４１８ごとに互いに異なる出力平面を計算するよりは、同じ出力平面に対して大きさがＤＷ×ＤＨである隣接したＭＷ×ＭＨ個の入力領域の部分を計算するように多数のプロセッシング要素４１８をグループ化することができる。
【０１２６】
図４を再び参照すると、装置４０１によるコマンド実行は、すべての入力平面にわたって同一原点から入力タイルの全体のシークエンスを読み取り、加重値行列でコンボリューション演算を遂行して出力平面の出力タイルを計算することによって行われ得る。出力平面の単一出力タイルに対する結果は最終入力平面に対する加重値係数に基づいて最終累積サイクル中に完了することができる。
【０１２７】
図８は、図７のライン７０１、７０３、７０５のうち一つに図示されたような入力タイルシークエンスに対する単一計算原点での計算を含む、タイルシークエンスと関連した計算を図示する。図８は、対応する入力平面にわたって同じタイル原点（例えば図６のタイル原点６０１のうち一つ）で複数の入力タイル８０３−１、…、８０３−ｃの入力タイルシークエンスを図示する。入力タイル８０３−１、…、８０３−ｃは入力タイル８０３−１、…、８０３−ｃそれぞれにわたって分散した複数の入力領域原点８０４で連続した隣接入力領域に細分される。必要な場合、入力領域は入力領域の境界での処理が可能なように延長され得る。入力領域でのデータ要素は、入力領域原点８０４に対して入力タイル８０３−１、…、８０３−ｃのデータ要素にわたって入力ウインドウ８０７、８０９、８１１、８１３を配置することによってサンプリングされ得る。図８に図示されたように、入力ウインドウ８０７、８０９、８１１、８１３は計算原点とも表記され得る入力領域原点８０１に対して配置される。このような配置はフィルタカーネル８０５の値に対するマッピングによって影響を受けることができる。各入力ウインドウ８０７、８０９、８１１、８１３は入力タイル８０３−１、…、８０３−ｃのうち一つで基本的な（場合により延びた）入力領域のデータ値をサンプリングするのに使われ得、これに伴い、入力領域集合８１５−１、…、８１５−ｃはそれぞれ入力ウインドウ８０７、８０９、８１１、８１３によりサンプリングされた単一入力領域８０３−１、…、８０３−ｃの値を示す。したがって、入力ウインドウはサイクル単位でそれぞれの位置に移動して、入力タイル８０３−１、…、８０３−ｃの基本的なデータ要素をそれぞれキャプチャーすることができる。集合８１５−１、…、８１５−ｃ内のサイクル単位でキャプチャーされたデータは、対応する出力平面にわたって複数の出力タイル８２１−１、…、８２１−ｎの同じ位置で、対応する出力領域８１９とそれぞれ関連する処理項目８１７−１、…、８１７−ｎでの要素別積計算のための第１被演算子として使われ得る。処理項目８１７−１、…、８１７−ｎによる要素別積計算に対する他の入力は、対応する出力タイル８２１−１、…、８２１−ｎに対するフィルタカーネル８０５での位置によって選択されたそれぞれの加重値係数であり得る。したがって、フィルタカーネル８０５はそれぞれの加重値（またはフィルタ）係数を特定する加重値行列に対応するか該当加重値行列として定義され得る。
【０１２８】
図４を再び参照すると、要素別積演算および集合８１５−１、…、８１５−ｃの部分結果の後続累積は、コンボリューションコア４１５のプロセッシング要素４１８によって遂行され得る。部分結果はそれぞれの出力タイル８２１−１、…、８２１−ｎに対して結果保存所４３９に累積され得る。それぞれの結果保存所４３９は、Ｒによる実際の出力平面に対する対応する加重値カーネルを使って、順次的な段階でプロセッシング要素４１８ごとにＲ個の出力タイルまで累積することができる。
【０１２９】
図８に図示されたように、一実施例において、第１入力平面の入力タイル８０３−１にわたって入力ウインドウ８０７、８０９、８１１、８１３を配置し、結果保存所４３９に累積した対応する部分結果を計算した後に、最終入力平面の入力タイル８０３−ｃまで次の（そして、その後の）入力平面の入力タイルにわたって入力ウインドウ８０７、８０９、８１１、８１３を配置するシークエンスを継続して集合８１５−ｃを導き出すことができる。したがって、それぞれの入力タイル８０３−１、…、８０３−ｃに対して、入力領域原点８０１でフィルタカーネル８０５により入力領域のすべての位置にわたって入力ウインドウが繰り返されてすべての要素別積を累積することによって、各出力タイル８２１−１、…、８２１−ｎの出力領域８１９に対するコンボリューション結果を生成する。
【０１３０】
好ましい実施例において、タイルシークエンスの次の入力平面に切り替える前に、すべての可能な出力平面に対して少なくとも部分的な結果を生成するために、単一入力平面の入力タイルのすべての計算原点にわたって計算が遂行され得る。このような処理は、計算ウインドウ８０７、８０９、８１１、８１３を使用することができ、繰り返し遂行され得る下記の項目のうち一つ以上により定義され得る。
１．右側から水平に次の計算原点に進行する。入力タイルの活性領域の水平末端に到達すると、最も左側の位置に戻る。処理は項目１を継続することができ、および／または、項目２の少なくとも一つの段階の実行を並列的に開始することができる。
２．結果保存所４３９に保存された後に出力タイル（Ｒ個の中で）に進行する、出力タイルの最大数に到達すると、第１出力タイルに戻る。処理は項目２を継続することができ、および／または、項目３の少なくとも一つの段階の実行を並列的に開始することができる。
３．下から垂直に次の計算原点に進行する。入力タイルの活性領域の垂直末端に到達すると、最上端の位置に戻る。処理は項目３を継続することができ、および／または、項目４の少なくとも一つの段階の実行を並列的に開始することができる。
４．水平にフィルタカーネルの次の加重値係数に進行する。フィルタカーネルの水平末端に到達すると、カーネル内の第１水平位置に戻る。処理は項目４を継続することができ、および／または、項目５の少なくとも一つの段階の実行を並列的に開始することができる。
５．垂直にフィルタカーネルの次の加重値係数に進行する。フィルタカーネルの垂直末端に到達すると、カーネル内の第１垂直位置に戻る。処理は項目５を継続することができ、および／または、項目６の実行を並列的に開始することができる。
６．項目１〜５が現在入力平面のタイル領域（項目１および３）、出力タイル（項目２）およびフィルタ係数（項目４および５）にわたって繰り返される場合、次の入力平面の可用性により、項目１〜５のうち一つ以上（又は全部）の処理が中断され得る。以前の入力タイルはデータバッファ４３１からフラッシングされる。入力制御ユニット４１７および係数制御ユニット４２７（適用可能な場合）はデータ−流れ制御（例えば前述したデータの流れの閉ループ制御）により各バッファ４３１、４２９に後続入力（および係数）データを供給する。
【０１３１】
一つ以上の実施例において、次の計算原点に切り替える前に計算原点で完全なフィルタカーネルのコンボリューションが計算されなければならないため、特に結果保存所４３９が（ｓｗ＊ＭＷ）×（ｓｈ＊ＭＨ）データワードの容量を有するレジスタアレイである場合には、繰り返し順序が変更され得る。このような変更された繰り返し順序は下記の項目のうち一つ以上により定義され得る。
１．水平にフィルタカーネルの次の加重値係数に進行する。フィルタカーネルの水平末端に到達すると、カーネル内の第１水平位置に戻る。処理は項目１を継続することができ、および／または、項目２の少なくとも一つの段階の実行を並列的に開始することができる。
２．垂直にフィルタカーネルの次の加重値係数に進行する。フィルタカーネルの垂直末端に到達すると、カーネル内の第１垂直位置に戻る。処理は項目２を継続することができ、および／または、項目３の実行を並列的に開始することができる。
３．結果保存所４３９に保存された後に出力タイル（Ｒ個の中で）に進行する、出力タイルの最大数に到達すると、第１出力タイルに戻る。処理は項目３を継続することができ、および／または、項目４の少なくとも一つの段階の実行を並列的に開始することができる。
４．右側から水平に次の計算原点に進行する。入力タイルの活性領域の水平末端に到達すると、最も左側の位置に戻る。処理は項目４を継続することができ、および／または、項目５の少なくとも一つの段階の実行を並列的に開始することができる。
５．下から垂直に次の計算原点に進行する。入力タイルの活性領域の垂直末端に到達すると、最上端の位置に戻る。処理は項目５を継続することができ、および／または、項目６の実行を並列的に開始することができる。
６．項目１〜５が現在入力平面のタイル領域（項目４および５）、出力タイル（項目３）およびフィルタ係数（項目１および２）にわたって繰り返される場合、次の入力平面の可用性により、項目１〜５のうち一つ以上（又は全部）の処理が中断され得る。以前の入力タイルはデータバッファ４３１からフラッシングされる。入力制御ユニット４１７および係数制御ユニット４２７（適用可能な場合）はデータ−流れ制御（例えば前述したデータの流れの閉ループ制御）により各バッファ４３１、４２９に後続入力（および係数）データを供給する。
【０１３２】
前述した実施例のうち一つ以上の繰り返し中に、現在の入力タイルが最後の入力平面のものであり、現在の加重値係数が水平方向および垂直方向のいずれにおいてもフィルタカーネルの最後の位置にある場合、各プロセッシング要素４１８の合算器４３７により生成される現在の結果は、コンボリューションコア４１５の後続処理構成要素（例えば結果スケーリングおよび量子化ユニット、シリアライザユニット、結果再整列ユニットおよび／または活性化ユニット４４３、そしてこれらの任意の順序の任意の組み合わせ）に出力され得る。コンボリューションコア４１５は最後の入力平面タイルにわたる繰り返し後にコマンドを完了することができる。その後、次のコマンドがコンボリューションコア４１５によりスケジューリングおよび処理され得る。
【０１３３】
コンボリューションモジュール４０９で一つ以上の次のコマンドをバッファリングするために、コンボリューションモジュール４０９の個別要素は制御ユニット４１１があらかじめ次のコマンドをスケジューリングできるように（コマンド）リンク４２５にリンクされた内部保存所（例えばコマンドＦＩＦＯ）を有することができ、次のコマンドはコンボリューションモジュール４０９の構成要素によってシグナリングされる時に該当コマンドの従属性リストおよび現在のフラグまたは状態によってスケジューリングされ得る。好ましくは、入力制御ユニット４１７がリンク４２１を通じて「入力読み取り完了」フラグを制御モジュール４１１にシグナリングすることができ／できるか、出力制御ユニット４１９がリンク４２３を通じて「結果書き込み完了」フラグを制御モジュール４１１にシグナリングすることができ、これを通じて制御モジュール４１１はコンボリューションモジュール４０９の内部保存所に次のコマンドを最大の量で維持することができる。バイアスマルチプレクサ８２３−１、…、８２３−ｎは集合８１５−１に対応する第１計算サイクルで出力タイル８２１−１、…、８２１−ｎに対するそれぞれのバイアス値を選択して、対応するバイアス値の寄与を結果保存所４３９の部分結果に対して最初に追加することができる。
【０１３４】
図４を再び参照すると、入力ウインドウを配置することによるコンボリューション演算のタイル指向的な面積基盤の計算は、それぞれのバッファ（４２９および４３１）を通じて入力データおよび係数データを効率的に引き出すことができるようにする。すべての出力タイル８２１−１、…、８２１−ｎに対する単一出力領域８１９の処理は、図４のプロセッシング要素４１８のような一つのプロセッシング要素で順次遂行され得る。しかし、一つ以上の出力タイル８２１−１、…、８２１−ｎの出力領域８１９の計算は、一つ以上の出力タイル８２１−１、…、８２１−ｎの出力領域８１９が互いに異なるプロセッシング要素４１８で計算されるように、２個以上の（またはすべての）プロセッシング要素４１８にわたって分割され得ることが理解されるべきである。また、出力タイル８２１−１、…、８２１−ｎは複数のプロセッシング要素の互いに異なるプロセッシング要素４１８により並列的に処理され得る。したがって、処理項目８１７−１、…、８１７−ｎは互いに異なるプロセッシング要素４１８の互いに異なる乗算器４３５に対応することができ、マルチプレクサ８２３−１、…、８２３−ｎは互いに異なるプロセッシング要素４１８の互いに異なるマルチプレクサ４４１に対応し得る。他の実施例において、プロセッシング要素はまた、複数の出力平面８２１−１、…、８２１−ｎに対する複数の出力タイルを順次処理し、結果保存所４３９のそれぞれの別個領域に部分結果を保存するように構成され得る。結果保存所４３９はＲ個までの出力タイルを保存するように構成され得る。Ｍ個のプロセッシング要素４１８が提供される場合、出力タイルの容量はＭ＊Ｒであり得る。それぞれのプロセッシング要素４１８は同じＤＷ×ＤＨ入力ウインドウデータを獲得することができ、互いに異なる出力タイルに対して並列的にはＭ個、順次的にはＲ個の結果を計算してＭ＊Ｒ個の出力タイルを導き出すことができる。ＭおよびＲは目標演算の要件に基づいてロジック設計中に構成され得る。ハードウェアリソースに関して、Ｍは並列プロセッシング要素４１８の量を決定することができ、Ｒは各プロセッシング要素４１８の結果保存所４３９の物理的な容量を決定することができる。他の実施例において、前述した通り、ＤＷ×ＤＨ＝（ｗ＊ＭＷ）×（ｈ＊ＭＨ）の場合、ｗ＊ｈ個のプロセッシング要素４１８が同じ出力タイルに対して計算することができ、ここで水平および垂直計算原点は正規的な構成でよりｗ倍およびｈ倍さらに遠くなり得る。これは水平方向および垂直方向のいずれにおいても入力タイル領域を通じて繰り返す段階をより少なく必要とする。したがって、本発明に係る装置は入力データの大きさおよび要求されるコンボリューション演算に対して柔軟に適応することができる。また、本発明の実施例に係る装置は、計算作業の要件を充足するように特定の数のプロセッシング要素および／または多数のコンボリューションモジュールで柔軟に構成され得る。
【０１３５】
また、図８に図示された処理は、重なりデータに延びた入力タイル上の単一計算領域原点８０１での２×２カーネルの大きさを有する、単一ワード水平および垂直ストライドおよび拡張コンボリューション計算シークエンスとして特徴づけられ得る。係数データは、入力ウインドウ８０７、８０９、８１１、８１３のそれぞれの位置により、２次元データバッファ（例えば図４のデータバッファ４３１）からそれぞれの入力データがアクセスされるそれぞれの位置で加重値行列から選択され得る。入力領域原点８０１に対する入力ウインドウの位置はフィルタカーネル８０５による加重値行列での加重値係数の位置に対応することができ、これを通じて隣接した入力データ位置で加重値行列を使った全体のコンボリューション演算が並列的に行われ得る。全体のタイルのコンボリューションはすべての連続的な入力領域原点８０４で連続的な計算シークエンスによって完了する。
【０１３６】
加重値行列での加重値係数の位置と、結果的な出力タイルの大きさに関する入力ウインドウの大きさ、形態および配置の間の関係は、遂行されるコンボリューション演算の類型に従属され得る。一つ以上の実施例によると、コンボリューション演算の類型はコンボリューションモードおよびデコンボリューションモード（コンボリューションに対する前置）を含むことができる。
【０１３７】
入力ウインドウの形態、大きさおよび配置と、加重値および計算された出力値の大きさに対する関係は、ストライド値および拡張値を含むパラメータの集合によって決定され得る。
【０１３８】
コンボリューションモードで、拡張値は入力ウインドウの２個の連続的な位置間の距離を決定することができる。このような距離は、入力領域に合せられる時、加重値行列の係数の間の距離に対応し得る。１と同一の拡張値は加重値行列係数が隣接したデータ要素にマッピングされるものと定義することができる。２と同一の拡張値は加重値行列係数が入力領域のそれぞれの第２データ要素にマッピングされるものと定義することができる。当業者であれば３以上の拡張値もこれによって定義され得ることが理解できるであろう。
【０１３９】
コンボリューションモードで、ストライド値は入力タイルにわたって入力ウインドウによってサンプリングされるデータ要素間の間隔を決定することができる。ストライド値は入力タイル上の入力領域でサンプリングされるそれぞれのデータ要素間の間隔を設定することによって入力領域の形状を定義することができる。ストライド値が１と同じである場合、入力ウインドウは隣接したデータ要素によって形成される。ストライド値が２と同じである場合、入力ウインドウは入力タイルのすべての第２データ要素を含む。したがって、ストライド値は入力タイルと出力タイルの大きさの間の比率を決定することができる。
【０１４０】
ストライド値はまた、結果保存所４３９が２個以上の出力領域の結果を保存できるかどうかを決定するのに使われ得るが、これは２個以上のストライド値に対しては結果的な出力領域の大きさが対応する入力領域の大きさより小さいであろうからである。
【０１４１】
一つ以上の実施例において、対応する入力データバッファ（例えば図４のデータバッファ４３１）は少なくともストライド値および拡張値を使って調節され得る入力ウインドウにより入力領域をサンプリングできる２次元データバッファで構成され得る。入力ウインドウは図８の入力領域原点８０４のような一つ以上の入力領域原点に配置されて、データバッファ４３１に保存された入力データに対するアクセスを提供することができる。これを通じて、データ要素が個別的にアドレッシングされる必要がなく、かえってパラメータ化された調節可能な入力ウインドウによって引き出され得るため、要求される入力データの引き出しを単純化することができる。
【０１４２】
また、図８を参照すると、入力ウインドウおよびその配置は２×２フィルタカーネルに関して１のストライド値および１の拡張値によって定義され得る。
【０１４３】
図９は、加重値行列の加重値係数を選択できるフィルタカーネル９０７と関連して、入力タイル９０５の入力領域原点９０３に配置され得る入力ウインドウ９０１の構成に関する他の例を図示する。入力ウインドウ９０１は２×２フィルタカーネル９０７に関して２のストライド値および１の拡張値によって定義され得る。入力ウインドウ９０１は複数の入力領域原点９０３の原点９０８周囲に配置されて、入力ウインドウ９０１、９０９、９１１および９１３がフィルタカーネル９０７により加重値行列の各加重値係数に関して処理されるようにする。入力ウインドウ９０１、９０９、９１１および９１３によりサンプリングされた４×４入力領域のすべてのデータ要素は、出力タイル９１７の同じ出力領域９１５に寄与する。
【０１４４】
したがって、図９に図示された構成は、重なりデータによって延びる入力タイル９０５上の複数の原点９０３の単一計算領域原点９０８での２×２フィルタカーネル、２ワード水平および垂直ストライドおよび単一ワード拡張コンボリューション計算シークエンスとして特徴づけられ得る。
【０１４５】
加重値行列からの加重値係数は、入力データが図４のデータバッファ４３１のようなデータバッファからそれぞれの入力ウインドウ９０１、９０９、９１１および９１３によりサンプリングされるフィルタカーネル９０７によりそれぞれの位置で選択され得る。このような構成で、入力タイル９０５上のすべての第２データ要素が引き出される。計算領域原点９０８に対する入力ウインドウ９０１、９０９、９１１および９１３の位置は加重値行列での加重値係数の位置に対応することができ、これを通じて２ワード間隔の位置で加重値行列を使った全体のコンボリューションサイクルが並列的に行われ得る。図９に図示されたように、結果は出力タイル９１７の各出力領域原点９２１で出力領域９１５内の隣接したデータ要素を示す。全体の入力タイル９０５のコンボリューションはすべての原点９０３で入力ウインドウを連続的にサンプリングすることによって完了することができ、これを通じて出力タイル９１７内のすべての原点に対する結果が得られる。
【０１４６】
図１０は、入力ウインドウの他の構成および２×２フィルタカーネルに関する１のストライド値および２の拡張値を使った加重値係数のマッピングを図示する。これは２×２フィルタカーネルの大きさ、単一ワード水平および垂直ストライドおよび２ワード拡張コンボリューション計算シークエンスに相当し得る。したがって、加重値行列は入力データの隣接した位置から並列的にすべての第２データ要素に延びる。
【０１４７】
図１１は、２×２フィルタカーネルに関して２のストライド値および２の拡張値を有する入力ウインドウの他の構成を図示する。これは重なりデータに延びた入力タイル上の単一計算領域原点での２×２フィルタカーネルの大きさ、２ワード水平および垂直ストライドおよび拡張コンボリューション計算シークエンスに相当し得る。
【０１４８】
図８、図９および図１０と関連して説明された構成と同様に、加重値係数は対応する入力ウインドウの位置に対応する位置で選択される。図１１による構成で、入力ウインドウは、原点から始まる入力タイルのすべての第２データ要素をキャプチャーし、原点に対する入力ウインドウの位置は加重値行列での加重値係数の位置に２をかけたものに対応し、これは２ワードだけ離隔した位置から並列的にすべての第２データ要素まで延びた加重値行列を使った全体のコンボリューションサイクルと同じ計算シークエンスに対応し得る。部分結果は出力タイルの各出力領域原点での隣接したデータ要素のものである。全体のタイルコンボリューションはすべての入力計算原点で連続的な計算シークエンスによって完了して、出力タイルのすべての出力領域原点に対する全体の部分結果を生成する。
【０１４９】
デコンボリューションモードで、ストライド値は入力平面データ要素ごとにどれほど多い出力平面データ要素を水平方向および垂直方向の両方で生成するかを決定することができる。ストライド値は入力タイルと出力タイルの次元間の比率を決定することができる。ストライド値が１より大きい場合、入力タイルの一部のみが出力タイルを生成するのに使われ、単一入力タイルは出力平面の多数の出力タイルに対する部分結果を生成することができる。
【０１５０】
好ましくは、各入力平面に対して、データ要素は水平方向および垂直方向のいずれにおいてもストライド値と同じ間隔を有する出力平面のデータ領域にわたって配置され、加重値行列は入力平面のそれぞれのデータ要素に対してコピーされ、入力データ要素ごとに加重値係数として使われて出力平面の部分結果を生成することができる。出力平面のデータ要素にマッピングされた部分結果の数は、水平方向および垂直方向のいずれにおいてもストライド値と同じ周期を有するパターンを有することができる。
【０１５１】
デコンボリューションモードで、図４のコンボリューションコア４１５のようなコンボリューションコアは、図４のデータバッファ４３１のようなデータバッファからＤＷ×ＤＨ個の隣接データワードを読み取り、出力領域にわたってストライド値と同じデータ要素間の間隔を有する出力タイルの出力領域（カーディナリティがＤＷ×ＤＨである）に対するデコンボリューション演算の部分結果を生成することができる。加重値行列の内部で水平方向および垂直方向にストライド値による加重値係数選択段階によって部分結果が生成される。
【０１５２】
図１２は、２×２フィルタカーネルに関して、１のストライド値および１の拡張値で単一入力領域原点の周囲にデコンボリューションシークエンスに対する入力ウインドウを配置することを図示する。入力ウインドウはフィルタカーネル１２０３により入力タイルの複数の入力領域原点１２１３の入力領域原点１２０１に対して配置され得る。これに伴い、入力領域原点１２０１に対して入力ウインドウ１２０５、１２０７、１２０９および１２１１が導き出され得る。
【０１５３】
デコンボリューション中に、フィルタカーネル１２０３による加重値行列からの加重値係数の選択は、入力領域原点１２０１に対する入力ウインドウ１２０５、１２０７、１２０９および１２１１の位置に対して逆（ｉｎｖｅｒｓｅ）であり得る。
【０１５４】
図１２に図示されたような構成は、重なりデータに延びた入力タイル上の単一計算領域原点１２０１での２×２フィルタカーネル、単一ワード水平および垂直ストライドおよび拡張デコンボリューション計算シークエンスとして理解され得る。係数は入力ウインドウ１２０５、１２０７、１２０９および１２１１の位置により加重値行列から選択される。入力領域原点１２０１に対する入力ウインドウ１２０５、１２０７、１２０９、１２１１の位置は、フィルタカーネル１２０３による加重値行列での実際の加重値係数位置の逆であり得る。これを通じて、隣接した位置で並列的に加重値行列を使った全体のデコンボリューションサイクルと同じ計算シークエンスが導き出され得る。タイルの全体のデコンボリューションは入力タイルのすべての計算領域原点１２１３で連続的な計算シークエンスによって完了する。
【０１５５】
図１３Ａおよび１３Ｂは、入力タイルのデータ要素をサンプリングするための入力ウインドウの他の構成および２のストライド値、１の拡張値および３×３フィルタカーネル１３０３に対する複数の入力領域原点１３０２の単一入力領域原点１３０１周囲のデコンボリューションシークエンスに対する出力タイルに関する結果を図示する。図１３Ａおよび図１３Ｂは、入力タイル１３０５上の入力ウインドウの配置および出力タイル１３０７に対する対応する結果を図示する。図１３Ａおよび図１３Ｂで図示された構成は、複数の出力領域原点１３１０の出力領域原点１３０８で出力領域を生成する３×３フィルタカーネル、２ワード水平および垂直ストライドおよび単一ワード拡張デコンボリューション計算シークエンスとして理解され得、ここで出力領域は重なりデータに延びた入力タイル１３０５上の単一計算領域原点１３０１周囲の入力データから水平方向および垂直方向のいずれにおいてもストライドの倍だけより大きい。複数の入力領域原点１３０２それぞれでの計算によって、対応する出力領域原点１３１０での結果が生成され得る。
【０１５６】
入力ウインドウの配置によって入力ウインドウ１３０９、１３１１、１３１３および１３１５が導き出され得る。
【０１５７】
図１３Ａの第１ラインに図示されたように、フィルタカーネル１３０３の中心値によってマッピングされた加重値係数と入力ウインドウ１３０９の組み合わせは、出力タイル１３０７上の出力領域１３１７のストライドだけ離隔した位置に対する部分結果を生成する。本明細書全般にわたって使われるストライドだけ離隔した位置という用語は、ストライド値により水平および／または垂直に離隔した領域上の位置を指称する。
【０１５８】
入力ウインドウ１３１１、１３１３、１３１５、１３０９およびフィルタカーネル１３０３により選択された加重値行列からのそれぞれの加重値係数は、出力タイル１３０７上の出力領域１３１７の位置に対する単一ワード位置オフセットを有する、出力タイル１３０７上の出力領域１３１９のストライドだけ離隔した位置に対する部分結果を導き出すことができる。
【０１５９】
図１３Ｂは、出力タイル１３０７の他のデータ要素を計算するのに使われるフィルタカーネル１３０３による加重値行列の互いに異なる加重値係数と入力ウインドウ１３０９および１３１３および入力ウインドウ１３０９および１３１５の他の組み合わせを図示する。
【０１６０】
入力ウインドウ１３１５と加重値係数１３２１の組み合わせおよび入力ウインドウ１３０９と加重値係数１３２３の組み合わせは、出力タイル１３０７上の出力領域１３１７の位置に対する単一ワード水平オフセットおよび該当位置にマッチングされる垂直位置を有する、出力タイル１３０７上の出力領域１３２５のストライドだけ離隔した位置に対する部分結果を定義する。入力ウインドウ１３１３と加重値係数１３２７との組み合わせおよび入力ウインドウ１３０９と加重値係数１３２９との組み合わせは、出力タイル１３０７上の出力領域１３１７の位置に対する単一ワード垂直オフセットおよび該当位置にマッチングされる水平位置を有する、出力タイル１３０７上の出力領域１３３１のストライドだけ離隔した位置に対する部分結果を定義する。
【０１６１】
図１３Ａおよび図１３Ｂに関して詳細に説明した通り、入力領域原点１３０１に対する入力ウインドウの位置は、加重値行列での加重値係数の実際の位置を負のストライド値（この例では−２）で割ったものに対応し得る。これを通じて、ＤＷ×ＤＨ入力ウインドウ１３０９、１３１１、１３１３、１３１５による部分結果が、サイクルごとに位置オフセットが変更されることによって、水平方向および垂直方向の両方でストライドだけ離隔した位置それぞれに対して値を伝播する間に、加重値行列を使った全体のデコンボリューションサイクルと同じ計算シークエンスが導き出され得、これに伴いＤＷ×ＤＨ大きさの入力領域から（ストライド＊ＤＷ）×（ストライド＊ＤＨ）大きさの領域が効果的に導き出される。出力領域原点１３０８に対する出力領域１３１７、１３１９、１３２５、１３３１に対応する部分結果伝播パターンの位置オフセットは、加重値行列での加重値係数の実際の位置に対応し得る。
【０１６２】
図１３Ａおよび図１３Ｂの構成によって、入力ウインドウ１３０９、１３１１、１３１３、１３１５のすべての位置およびフィルタカーネル１３０３による加重値行列の各加重値係数との組み合わせに対して、すべての入力領域原点１３０２での連続的な計算シークエンスによる全体のタイルデコンボリューションが可能になる。
【０１６３】
図１４は、本発明の一実施例に係る加速器装置によってデータのレイヤーをアクセスし処理するための方法のフローチャートを図示する。この方法は図４に図示された装置４０１のような加速器装置上で具現され得る。
【０１６４】
方法１４００は項目１４０１から開始して、加速器装置によって処理される入力データの少なくとも一部が引き出される項目１４０３に進行することができる。項目１４０５で入力データは複数の隣接した入力タイルに分節化または分割され得る。入力タイルはあらかじめ決定された大きさを有することができる。引き続き、項目１４０７で複数の隣接した入力タイルのうち少なくとも一つが加速器装置のデータバッファに保存され得る。
【０１６５】
項目１４０９で、データバッファに保存された複数の隣接した入力タイルのうち少なくとも一つのデータ要素は、データバッファに保存されたデータ要素にわたって入力ウインドウを配置することによってアクセスされて複数の入力領域を生成することができ、ここで入力ウインドウはパラメータの集合に応じて調節され得る。パラメータの集合はストライド値および拡張値を含むことができ、これは係数値の位置に関する入力領域上の入力ウインドウの構成および配置、そして出力データ要素に対する寄与を定義することができる。入力ウインドウの構成の例が図８〜図１３の実施例に関して説明された。
【０１６６】
項目１４１１で、複数の入力領域のうち少なくとも一つが順次処理され、複数の隣接した入力タイルのうち少なくとも一つを加速器装置によって少なくとも部分的に処理することができる。
【０１６７】
項目１４０７で複数の隣接した入力タイルのうち他の一つをデータバッファに保存し、項目１４０９で入力ウインドウを使って複数の隣接した入力タイルのうち他の一つのデータをアクセスすることによって方法１４０１が繰り返され得る。これは全体の入力データに対する計算が完了するまで順次または並列的に繰り返され得る。
【０１６８】
方法１４００は項目１４１３で終了され得る。
【０１６９】
本発明の実施例は、装置の自動化制御に対してコンピュータによってガイドされたり自動化される意思決定を可能とする情報を提供するために、顔および物体の検出、交通モニタリングおよび自動化走行のような、コンピュータビジョンを含む多様な技術的領域だけでなく、大量の数学的演算の遂行を必要とする任意の異なる領域で適用され得る。しかし、本発明は入力データの特定の構成および／または応用分野に限定されず、デバイスの制御に適合な情報を導き出すために、センサ、状態、または構成データに対する複雑な計算を可能とする処理装置の技術的な設定を定義できることが理解されるべきである。
【０１７０】
いくつかの実施例が詳細に説明されたが、本発明の態様は多様な形態を取り得ることが理解されるべきである。特に、請求された対象は説明された例と異なるように実施または具現され得、説明された特徴および特性は任意の組み合わせで実施または具現され得る。本明細書に開示された実施例は、特許請求の範囲によって定義されたように、本発明を限定するものではなく例示するためのものである。
【図１】
2021521516.tif 000004
【図２】
2021521516.tif 000005
【図３】
2021521516.tif 000006
【図４】
2021521516.tif 000007
【図５】
2021521516.tif 000008
【図６】
2021521516.tif 000009
【図７】
2021521516.tif 000010
【図８】
2021521516.tif 000011
【図９】
2021521516.tif 000012
【図１０】
2021521516.tif 000013
【図１１】
2021521516.tif 000014
【図１２】
2021521516.tif 000015
【図１３Ａ】
2021521516.tif 000016
【図１３Ｂ】
2021521516.tif 000017
【図１４】
2021521516.tif 000018
【国際調査報告】
2021521516.tif 000019
2021521516.tif 000020
2021521516.tif 000021