JP2022541899A - 畳み込みニューラルネットワークを実装するための構成可能なプロセッサ - Google Patents

畳み込みニューラルネットワークを実装するための構成可能なプロセッサ Download PDF

Info

Publication number
JP2022541899A
JP2022541899A JP2022502865A JP2022502865A JP2022541899A JP 2022541899 A JP2022541899 A JP 2022541899A JP 2022502865 A JP2022502865 A JP 2022502865A JP 2022502865 A JP2022502865 A JP 2022502865A JP 2022541899 A JP2022541899 A JP 2022541899A
Authority
JP
Japan
Prior art keywords
cnn
processor
configurable
data
core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022502865A
Other languages
English (en)
Other versions
JP7569109B2 (ja
Inventor
シンハ,パーヴェル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of JP2022541899A publication Critical patent/JP2022541899A/ja
Application granted granted Critical
Publication of JP7569109B2 publication Critical patent/JP7569109B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)
  • Microcomputers (AREA)

Abstract

CNNを実装するための構成可能なプロセッサが提供される。そのような構成可能なCNNプロセッサの1つは、複数のコア計算回路要素であって、各々が予め選択されたデータフローグラフに従ってCNN関数を実行するように構成される、複数のコア計算回路要素と、アクティブメモリバッファと、アクティブメモリバッファと複数のコア計算回路要素との間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される、複数の接続と、複数のコア計算回路要素間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される、複数の接続とを備え、アクティブメモリバッファが、予め選択されたデータフローグラフに従って、アクティブメモリバッファを介して複数のコア計算回路要素間でデータを移動させるように構成されている。【選択図】図1

Description

本明細書に記載の主題は、概して、機械学習および畳み込みニューラルネットワーク(CNN)に関する。より詳細には、本明細書に記載の主題は、CNNを実装するための構成可能なプロセッサに関する。
関連出願との相互参照
本出願は、2020年5月15日に出願された、代理人整理番号SINHA-1003P2を有する「Direct Conversion of Raw Image Sensor Input(Bayer-Pattem)to Image/Video Analytics using a Single CNN」という名称の米国仮出願第63/025,580号、2019年11月27日に出願された、代理人整理番号SINHA-1003P1を有する「Direct Conversion of Raw Image Sensor Input(Bayer-Pattern)to Image/Video Analytics using a Single CNN」という名称の米国仮出願第62/941,646号、並びに、2019年7月19日に出願された、代理人整理番号SINHA-1002P2を有する「Programmable Functional Array(PFA)Processor for CNNs」という名称の米国仮出願第62/876,219号の優先権と利益を主張するものであり、それぞれの内容全体は引用により本明細書に援用されるものとする。
ディープラーニング(深層学習)は、深層構造化学習または階層学習とも呼ばれることがあり、人工ニューラルネットワークに基づく機械学習方法の幅広いファミリの一部である。学習には、教師あり、半教師ありまたは教師なしがある。ディープニューラルネットワーク、ディープビリーフネットワーク、リカレントニューラルネットワーク、畳み込みニューラルネットワーク(CNN)などのディープラーニングアーキテクチャは、画像分類や自然言語処理などの多くの分野に適用されており、人間の専門家に匹敵する結果を生み出している。例えば、ディープラーニングは、物体認識、セマンティックセグメンテーション、画像キャプション、人間の姿勢推定などの画像認識およびビジョンタスクにおいて、最先端のパフォーマンスをもたらしている。これらの成果の殆どは、複雑な階層的特徴表現を学習することができるCNNの使用に起因し得る。
CNNの複雑さが増すに連れて、ハードウェア要件は最先端の実装に課題をもたらしている。メモリ、計算および消費電力などのリソースに対する実際的な制限によって、非常に深く効率的なニューラルネットワークの探索が妨げられている。今日使用されるCNNの計算を高速化するための一般的なアプローチには、グラフィカル処理ユニット(GPU)、さらにはカスタムハードウェアソリューションの使用が含まれる場合がある。
Microsoft Researchの2015年の記事では、専用のハードウェアを使用して深い畳み込みニューラルネットワークを高速化することに焦点が当てられている。2016年の記事では、YodaNNと呼ばれるバイナリウェイトベースの超低消費電力の畳み込みニューラルネットワークアクセラレータが紹介されている。2017年の記事では、スループットが2.2倍(例えば、2.2倍)、エネルギー効率が2.3倍、チップ面積の使用量が26~35%減少したと主張して、CNNアクセラレータを打ち負かしたとされる再構成可能アーキテクチャが紹介されている。CNNは、通常はバックプロパゲーションを用いて、ラベル付けされた例のセットに対して正しい出力を生成するようにトレーニングされる。ネットワークのトレーニングは通常、グラフィカル処理ユニット(GPU)や高度に専門化されたサーバ指向のアーキテクチャなどのハードウェアプラットフォームで行われる。
最先端(SOA)トレーニング済みCNNにおける推論は、計算コストが高く、典型的には画像あたり数十億回の乗算-積算(MAC)演算を使用する。CNNの推論を実行するためにモバイルプロセッサまたはモバイルGPUを使用すると、電力に制約のあるモバイルプラットフォームでは、非常に費用がかかる可能性がある。例えば、モバイル自動運転支援(ADAS)アプリケーションを対象とするNVIDIA Tegra X1 GPUプラットフォームは、計算効率の高いセマンティックセグメンテーションCNNを通じて、640×360のカラー入力フレームを15ヘルツ(Hz)のレートで処理できることが報告されている。このため、このCNNを介して各フレームを処理するには、約20億回のMAC演算が必要と考えられる。したがって、GPUは、約10ワット(W)の消費電力で、1秒あたり約600億(ギガ)演算(GOps/s)を実行する。よって、アプリケーションレベルでは、このGPUは約6GOps/Wの電力効率を達成しているが、これは理論上の最大パフォーマンスの約6%に過ぎない。その結果、ネットワークに必要なGOps/フレームが2未満である場合、NVIDIAソリューションは、1秒あたり僅か30フレーム(FPS)でCNNを処理することができる。
ハードウェアアクセラレータに関連するCNN研究の重要な進展は、低精度の重み、活性化、時には逆伝播勾配を用いるCNNのトレーニング方法の使用である。低精度のパラメータおよび正規化線形ユニット(ReLU)活性化関数を使用するネットワークをトレーニングすると、活性化のスパース性が最大で50%増加する可能性がある。スパースなネットワークは推論時の計算とメモリアクセスを最小化するのに有効である。いくつかの専用アクセラレータが、このスパース性を既に利用していることが報告されている。例えば、NullHopと呼ばれるCNNハードウェアアクセラレータは、活性化のスパース性を利用している。GroqのCNN推論アクセラレータの電力最適化実装では、1Wあたり毎秒8テラオペレーション(TOPS)の消費電力が報告されており、非常に効率的である。別の効率的なCNN推論アクセラレータは、Gyrfalcon技術により9.3TOPS/Wの電力消費を有すると報告されている。
しかしながら、CNNプロセッサまたはアクセラレータに対する上述したアプローチは、1または複数の欠陥に悩まされている。例えば、多くの場合、外部メモリの使用を必要とするアーキテクチャを使用する。また、上述したアプローチの各々は、リアルタイム要件に対応しないアーキテクチャを使用するか、かつ/またはCNNアーキテクチャにあまり適していない。結果として、それらの欠点に対処する改良されたCNNプロセッサの必要性が存在する。
以下に、本開示のいくつかの態様の簡略化された概要を、そのような態様の基本的な理解を提供するために示している。この概要は、本開示のすべての想定される特徴の広範な概要ではなく、本開示のすべての態様の主要または重要な要素を特定することも、本開示のいずれかの態様またはすべての態様の範囲を明確にすることも意図されていない。その唯一の目的は、後に提示されるより詳細な説明の前段階として、本開示のいくつかの態様の様々な概念を簡略化した形式で提示することである。
一態様において、本開示は、畳み込みニューラルネットワーク(CNN)の実装専用の構成可能なプロセッサを提供し、この構成可能なプロセッサが、複数のコア計算回路要素であって、各々が予め選択されたデータフローグラフに従ってCNN関数を実行するように構成される、複数のコア計算回路要素と、アクティブメモリバッファと、アクティブメモリバッファと複数のコア計算回路要素との間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される、複数の接続と、複数のコア計算回路要素間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される、複数の接続とを備え、アクティブメモリバッファが、予め選択されたデータフローグラフに従って、アクティブメモリバッファを介して複数のコア計算回路要素間でデータを移動させるように構成されている。
一態様において、予め選択されたデータフローグラフは、予め選択されたCNNに基づくものである。
一態様において、複数のコア計算回路要素の各々は、命令セットを使用せずに、予め選択されたデータフローグラフに従ってCNN関数を実行するように構成されている。
一態様において、複数のコア計算回路要素のうちの少なくとも2つは、互いに非同期で動作するように構成されている。
一態様において、アクティブメモリバッファおよび複数のコア計算回路要素の各々は、互いに非同期で動作するように構成されている。
一態様において、複数のコア計算回路要素の各々は、CNN関数を実行する専用のものである。
一態様において、複数のコア計算回路要素の各々は、構成可能なプロセッサの実行時間の前に、CNN関数を実行するように構成されている。
一態様において、複数のコア計算回路要素の各々は、CNN関数のレイヤを計算するように構成されている。
一態様において、複数のコア計算回路素子の各々は、CNN全体を計算するように構成されている。
一態様において、複数のコア計算回路要素の各々は、推論とトレーニングの両方のためにCNN関数を実行するように構成されている。
一態様において、複数のコア計算回路要素の各々は、CNN関数を実行するために使用される重みを格納するように構成されたメモリを備える。
一態様において、アクティブメモリバッファと複数のコア計算回路要素との間の複数の接続は、コンパイル時に確立されて、構成可能なプロセッサの実行時に固定され、複数のコア計算回路要素間の複数の接続は、コンパイル時に確立されて、実行時に固定される。
一態様において、本開示は、プロセッサアレイをさらに提供し、このプロセッサアレイは、上記のような複数の構成可能なプロセッサと、相互接続回路と、複数の構成可能なプロセッサおよび/または相互接続回路間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される複数の接続とを備える。
一態様において、本開示は、システムをさらに提供し、このシステムが、モバイル・インダストリ・プロセッサ・インタフェース(MIPI)ソースと、MIPIシンクと、MIPIソースとMIPIシンクとの間に結合されたMIPIバスと、上記のような構成可能なプロセッサであって、MIPIバス上のすべてのデータが構成可能なプロセッサを通過するように、MIPIバスに沿って直列に配置される構成可能なプロセッサとを備える。
一態様において、本システムは、SPI、I2Cインターフェース、またはUARTインターフェースのうちの少なくとも1つを含む非MIPI出力インターフェースをさらに備え、構成可能なプロセッサが、非MIPI出力インターフェースまたはMIPIバスのいずれかを使用して、外部デバイスに情報を送信するように構成されている。
一態様において、本開示は、システムをさらに提供し、このシステムが、センサデータを生成するように構成されたセンサと、上記のような構成可能なプロセッサであって、センサに直接結合され、センサデータに基づいて処理されたデータを生成するように構成された構成可能なプロセッサと、構成可能なプロセッサに直接結合され、処理されたデータの少なくとも一部を送信するように構成された無線送信機とを備える。一態様では、センサデータが、画像データを含み、処理されたデータが、画像データに基づいて生成された分類データを含み、無線送信機が、分類データを送信するように構成されている。
一態様において、本開示は、畳み込みニューラルネットワーク(CNN)の実装に特化した構成可能なプロセッサを構成するための方法をさらに提供し、この方法が、予め選択されたデータフローグラフを受信するステップと、複数のコア計算回路要素の各々を、予め選択されたデータフローグラフに従ってCNN関数を実行するようにプログラミングするステップと、予め選択されたデータフローグラフに従って、アクティブメモリバッファをプログラミングするステップと、予め選択されたデータフローグラフに従って、アクティブメモリバッファと複数のコア計算回路要素との間の複数の接続をプログラミングするステップと、予め選択されたデータフローグラフに従って、複数のコア計算回路要素間の複数の接続をプログラミングするステップと、予め選択されたデータフローグラフに従って、メモリバッファを介して複数のコア計算回路要素間でデータを移動させるように、アクティブメモリバッファをプログラミングするステップとを備える。
一態様において、プログラミング動作の各々は、構成可能なプロセッサの実行時間の前に実行される。
一態様において、本方法は、複数のコア計算回路要素を動作させて、命令セットを使用せずに、CNN関数を実行するステップと、命令セットを使用せずに、アクティブメモリバッファを動作させるステップとをさらに含む。
一態様において、予め選択されたデータフローグラフは、予め選択されたCNNに基づくものである。
一態様において、本方法は、複数のコア計算回路要素のうちの少なくとも2つを互いに非同期で動作させるステップをさらに含む。
一態様において、本方法は、アクティブメモリバッファおよび複数のコア計算回路要素の各々を互いに非同期で動作させるステップをさらに備える。
一態様において、複数のコア計算回路素子の各々は、CNN関数を実行する専用のものである。
一態様において、本方法は、構成可能なプロセッサの実行時に、複数のコア計算回路要素のそれぞれの1つにおいて、CNN関数を実行するステップをさらに含む。
一態様において、本方法は、構成可能なプロセッサの実行時に、複数のコア計算回路要素のそれぞれの1つにおいて、CNN関数のレイヤを計算するステップをさらに含む。
一態様において、本方法は、構成可能なプロセッサの実行時に、複数のコア計算回路要素のうちの少なくとも1つにおいてCNN全体を計算するステップをさらに含む。
一態様において、アクティブメモリバッファと複数のコア計算回路要素との間の複数の接続は、コンパイル時にプログラムされ、構成可能なプロセッサの実行時に固定され、複数のコア計算回路要素間の複数の接続は、コンパイル時にプログラムされ、実行時に固定される。
一態様において、複数のコア計算回路要素の各々は、推論とトレーニングの両方のためにCNN関数を実行するように構成されている。
一態様において、複数のコア計算回路要素の各々は、CNN関数を実行するために使用される重みを格納するように構成されたメモリを備える。
一態様において、本開示は、畳み込みニューラルネットワーク(CNN)の実装に特化した構成可能なプロセッサをさらに提供し、この構成可能なプロセッサが、予め選択されたデータフローグラフに従ってCNN関数を実行するための複数の手段と、データを格納するための手段と、予め選択されたデータフローグラフに従って、データを格納するための手段とCNN関数を実行するための複数の手段との間の接続を確立するための手段と、予め選択されたデータフローグラフに従って、CNN関数を実行するための複数の手段間の接続を確立するための手段とを備え、データを格納するための手段が、予め選択されたデータフローグラフに従って、データを格納するための手段を介して、CNN関数を実行するための複数の手段間でデータを移動させる手段を備える。
一態様において、本開示は、畳み込みニューラルネットワーク(CNN)を実装することに特化した構成可能なプロセッサをさらに提供し、この構成可能なプロセッサが、モバイル・インダストリ・プロセッサ・インタフェース(MIPI)ソースに直接結合されるように構成されたMIPI入力と、アプリケーションプロセッサに直接結合されるように構成されたMIPI出力と、MIPI入力とMIPI出力との間に結合されたMIPIバスと、MIPIバス上のすべてのデータが構成可能なプロセッサを通過するように、MIPIバスに沿って直列に配置された構成可能なCNNサブプロセッサであって、MIPIソースから画像データを受信し、画像データに基づいて処理されたデータを生成し、かつ、処理されたデータをアプリケーションプロセッサに提供するように構成された構成可能なCNNサブプロセッサとを備える。
一態様において、構成可能なCNNサブプロセッサは、予め選択されたCNNを使用して、画像データに基づいて処理されたデータを生成するようにさらに構成されている。
一態様において、構成可能なCNNサブプロセッサは、カスケード構成にある複数の構成可能なCNNサブプロセッサを含む。
一態様において、構成可能なCNNサブプロセッサは、MIPIバスを介してアプリケーションプロセッサに処理されたデータを提供するように構成されている。
一態様において、構成可能なCNNサブプロセッサは、複数のコア計算回路要素であって、各々が予め選択されたデータフローグラフに従ってCNN関数を実行するように構成された、複数のコア計算回路要素と、アクティブメモリバッファと、アクティブメモリバッファと複数のコア計算回路要素との間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される、複数の接続と、複数のコア計算回路要素間の複数の接続であって、各々が予め選択されたデータフローグラフに従って確立される、複数の接続とを備え、アクティブメモリバッファが、予め選択されたデータフローグラフに従って、アクティブメモリバッファを介して複数のコア計算回路要素間でデータを移動するように構成されている。
一態様において、構成可能なCNNサブプロセッサは、SPI、I2CインターフェースまたはUARTインターフェースのうちの少なくとも1つを含む非MIPI出力インターフェースをさらに備え、構成可能なプロセッサが、非MIPI出力インターフェースまたはMIPIバスのいずれかを使用して、アプリケーションプロセッサに情報を送信するように構成されている。
図1は、本開示のいくつかの態様に係る、アクティブメモリバッファおよび複数のコア計算要素を含む、畳み込みニューラルネットワーク(CNN)を実装するための例示的な構成可能なプロセッサを示すブロック図である。 図2は、本開示のいくつかの態様に係る、CNNを実装するための構成可能なプロセッサを構成するためのプロセスを示すフローチャートである。 図3は、本開示のいくつかの態様に係る、プログラマブル機能ユニット(PFU)として具現化されたCNNを実装するための例示的な構成可能なプロセッサを示すブロック図である。 図4は、本開示のいくつかの態様に係る、複数のPFUを含むプログラマブル機能アレイ(PFA)として具現化された構成可能なCNNプロセッサを示すブロック図である。 図5は、本開示のいくつかの態様に係る、カスケード構成の複数のPFAを含むシステムとして具現化された構成可能なCNNプロセッサを示すブロック図である。 図6は、本開示のいくつかの態様に係る構成可能なCNNプロセッサ内で使用するための例示的なアクティブメモリバッファを示すブロック図である。 図7は、本開示のいくつかの態様に係る、アクティブメモリバッファのための例示的なメモリ構成を示す斜視図である。 図8は、本開示のいくつかの態様に係る、アクティブメモリバッファからコア計算要素にデータを送信するための例示的なプロトコルを示すタイミング図である。 図9は、本開示のいくつかの態様に係る、アクティブメモリバッファでコア計算要素からデータを受信するための例示的なプロトコルを示すタイミング図である。 図10は、本開示のいくつかの態様に係る構成可能なCNNプロセッサ内で使用するための例示的なコア計算要素を示すブロック図である。 図11は、本開示のいくつかの態様に係る、コア計算要素内で使用するための例示的な制御ユニットを示すブロック図である。 図12は、本開示のいくつかの態様に係る例示的なCNNを示す図である。 図13は、本開示のいくつかの態様に係る、図12の例示的なCNNの畳み込み演算を示すブロック図である。 図14は、本開示のいくつかの態様に係る、図12の例示的なCNNのフォワードパスおよびバックプロパゲーションパスを示すブロック図である。 図15は、本開示のいくつかの態様に係る、CNNの一部をコア計算要素にマッピングするための3つの例示的な変換を示すブロック図である。 図16は、本開示のいくつかの態様に係る、複数のラインバッファを使用するコア計算要素への図12の例示的なCNNの可能性のあるマッピングを示すブロック図である。 図17は、本開示のいくつかの態様に係る、ラインバッファがアクティブメモリバッファに集約される、図12の例示的なCNNのコア計算要素への可能性のあるマッピングの単一のブロック図である。 図18は、本開示のいくつかの態様に係る、ラインバッファがアクティブメモリバッファに集約される、図12の例示的なCNNのコア計算要素への可能性のあるマッピングの単一のブロック図である。 図19は、本開示のいくつかの態様に係る構成可能なCNNプロセッサにマッピングされる第1の例示的なCNNを示すブロック図である。 図20は、本開示のいくつかの態様に係る、図19の第1の例示的なCNNを使用する構成可能なCNNプロセッサの結果としてのマッピングを示すブロック図である。 図21は、本開示のいくつかの態様に係る構成可能なCNNプロセッサにマッピングされる第2の例示的なCNNを示すブロック図である。 図22は、本開示のいくつかの態様に係る、図21の第2の例示的なCNNを使用する構成可能なCNNプロセッサの結果としてのマッピングを示すブロック図である。 図23は、本開示のいくつかの態様に係る構成可能なCNNプロセッサにマッピングされる第3の例示的なCNNを示すブロック図である。 図24は、本開示のいくつかの態様に係る、図23の第3の例示的なCNNを使用する構成可能なCNNプロセッサの結果としてのマッピングを示すブロック図である。 図25は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサの第1のユースケースを示すブロック図である。 図26は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサの第2のユースケースを示すブロック図である。 図27は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサの第3のユースケースを示すブロック図である。 図28は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサの第4のユースケースを示すブロック図である。 図29は、本開示のいくつかの態様に係る、ダイレクトセンサインターフェースアプリケーションにおける構成可能なCNNプロセッサの第5のユースケースを示すブロック図である。 図30は、本開示のいくつかの態様に係る、MIPIアプリケーションにおいて構成可能なCNNプロセッサを動作させるためのプロセスを示すフローチャートである。
ここで図面を参照すると、畳み込みニューラルネットワーク(CNN)を実装するための構成可能なプロセッサの実施形態が示されている。これらの構成可能なプロセッサは、CNNを実装するための専用とすることができ、複数のコア計算回路要素であって、各々が(例えば、予め選択されたCNNに対応する)予め選択されたデータフローグラフに従ってCNN関数を実行するように構成される複数のコア計算回路要素と、アクティブメモリバッファと、アクティブメモリバッファと複数のコア計算回路要素との間の接続であって、各々が予め選択されたデータフローグラフに従って確立される接続と、複数のコア計算回路要素間の接続であって、各々が予め選択されたデータフローグラフに従って確立される接続とを含むことができ、アクティブメモリバッファが、予め選択されたデータフローグラフに従って、アクティブメモリバッファを介して複数のコア計算回路要素間でデータを移動するよう構成されている。したがって、これらの構成可能なプロセッサは、CNNを実装するために特別に構成されていない従来の命令セットアーキテクチャ(ISAまたはロード/ストアアーキテクチャ)タイプのプロセッサの落とし穴を回避しつつ、CNN関数の効率的なパフォーマンスを可能にするアーキテクチャを含むことができる。
概要
GroqおよびGyrfalconについて上述したアーキテクチャの欠点の一つは、これらのアーキテクチャが単に従来のロード/ストアアーキテクチャパラダイムを提供するだけであり、CNNアーキテクチャに特化していないことである。従来のロード/ストアアーキテクチャは、意図するタスクを事前にプログラムする個別のメカニズムを有するが、操作されるデータは通常のデータパスアーキテクチャによって個別に処理される。本明細書で説明する構成可能なCNNプロセッサアーキテクチャでは、プログラム制御シーケンスの主要部分をデータフロー自体に注入し、非常に効率的なプロセッサとすると同時に、CNNの処理に高度に特化したものとなっている。
1つの設計目標は、様々なCNNアーキテクチャを計算することを意図したプロセッサアーキテクチャを開発することである。理想的には、このアーキテクチャは、低コスト、低電力であり、外部メモリにアクセスすることなくリアルタイムでCNNアーキテクチャを処理できる必要がある。一態様では、本明細書に記載の構成可能なCNNプロセッサが、CNNアーキテクチャを計算するために、システムに対するコプロセッサとして使用され得る。これにより、プロセッサによる電力の使用を制約するアーキテクチャ技術の使用が可能になる。本開示は、データフロー制御のための従来のコントローラの必要性を排除することによって、1または複数の極めて低電力のソリューションを提示する。一態様では、本開示は、プロセッサの様々なモジュールにわたるデータフローの制御を、アーキテクチャへのデータインフローと結び付ける。このため、流入するデータは、システムを介して出力にデータをプッシュする役割を担うことができる。この種のアーキテクチャは、データフローアーキテクチャを表している。一態様では、本開示が、システム全体のデータ-フローと結合することができない制御フローの一部に対して、階層的に分散されたマイクロプログラム式制御メモリを使用することも含む。
CNNアーキテクチャは、CNNのすべてのレイヤに出力データを格納するために、大量の一時メモリを必要とする場合がある。本開示は、CNNの様々なレイヤのメモリニーズが、1つの物理空間内に位置するメモリを使用して集約および対処され得るように、データを配置する。これは、消費電力と面積効率に大きな利点を有する。同時に、開示のアーキテクチャは、各CNNレイヤにおける畳み込みを正常に計算するために、特定の数の入力行を格納するだけでよいという事実を利用し、CNNの畳み込みステージではフレーム全体を格納する必要がない。このため、開示のプロセッサアーキテクチャは、いくつかの態様において、各CNNの入力に必要なラインバッファのみを格納することができる。これは、アーキテクチャ全体で使用される正味消費電力およびチップ面積の削減を含む、複合的な効果を有する。
一態様では、構成可能なCNNプロセッサが、複数の入力ポートおよび複数の出力ポートを有することができるインテリジェントメモリバッファ(例えば、アクティブメモリバッファ)を含む。インテリジェントメモリバッファは、複数の入力データポートから入力データを受け取り、バッファ内に含まれるコアメモリアレイに格納する。インテリジェントメモリバッファは、複数の出力ポートを使用して、データを運ぶための標準プロトコルを維持しながら、システム全体で標準化されている順序で、正しいコア計算要素(例えば、計算コアモジュール)に所望のデータを分配することができる。このデータの分配により、データ移動のフローを制御するためにプログラムシーケンスを使用する必要性を排除することができる。このため、各コア計算要素/モジュールは、データに対して特定の周期で繰り返しタスクを処理するという非常に単純なプロファイルを維持することができる。データフロー制御に容易に組み込むことができない最小限のプログラミング情報は、各コア計算要素に含まれる階層的に分散したマイクロプログラム式制御ユニットの形式で制御シーケンスとして格納することができる。
特定のCNNレイヤに対応するデータを処理した後、データをインテリジェントメモリバッファに書き戻すことができる。CNNレイヤの出力からデータが利用可能になると、次のレイヤの処理を開始することができる。したがって、データのフローは、データがシステムに流入する速度によって制御することができる。このため、システム全体のデータのフローを管理するためのロードストアアーキテクチャが不要になる。また、データは、冗長なデータ移動を最小限に抑える非常にインテリジェントな方法で、構成可能なCNNプロセッサアーキテクチャ内で移動される。
メモリから計算ユニットへの冗長なデータ転送を減らすために、インテリジェントメモリバッファからのデータ転送にはいくつかのモードがある。インテリジェントバッファに出入りするデータフローは、エラスティックFIFOを使用して管理することができ、それによりシステム全体でデータを柔軟に移動させることができ、すべての内部データ転送をより流動的なものとすることができる。一態様では、インテリジェントメモリバッファが、並列に動作する多数の計算モジュールを駆動する大量のファンアウトに耐えることが予想される。このことは、典型的には、タイミング要件を満たすために複数のバッファを使用することから生じる比較的高いパワーペナルティをもたらす可能性がある。一態様では、トランジスタが益々小さくなるチップレイアウトにおいて、これはさらに指数関数的に増加する可能性がある。コア計算要素を通過および出入りするデータからタイミング制約を切り離すために、計算モジュールのすべての入出力をFIFOを使用してバッファリングすることが可能である。これにより、システム内の様々なコンポーネントを互いに非同期で動作させることができる。さらに、これにより、様々なコア計算要素を様々なクロック速度で動作させ、電力消費を最適化することができる。
個々のコア計算要素は、非常に柔軟なモジュールであり、データの小さなブロックに対して計算を実行することができる。コア計算要素の各々は、インテリジェントメモリバッファと通信するのとは別に、近くのコア計算要素と通信することができる。コア計算要素は、階層的に配置することができる。階層的に配置されたコア計算要素のグループは、インテリジェントメモリバッファとともにグループ化して、容易に拡張可能なユニットを構成することができる。これにより、システムは、高度にモジュール化されて、拡張が容易となる。モジュール式システムは、複数のCNNアーキテクチャ(例えば、複数のCNN)を並列に実行することができ、また、そのような拡張可能なモジュールの複数のインスタンスを互いにカスケード接続し、それにより非常に大きなCNNアーキテクチャを実装することができる。
一態様では、本明細書に提示のアーキテクチャの少なくともいくつかは、メモリからの読み取りおよび書き込みの操作全体を最適化することによって、低電力プロファイルを保証することができる。構成可能なCNNプロセッサアーキテクチャは、非常に効率的かつ最適な方法でメモリおよび計算ブロックにわたってデータを移動させる機構も提供することができる。一態様では、モジュール間の任意の冗長なデータ移動を低減することができる。一態様では、最適な電力消費は、必要なビットのみのトグルを保証し、システム全体にわたるビットの冗長性および不要なトグルを低減することからもたらされ得る。データフロー制御をデータに組み込むという全体的なシステムアーキテクチャは、モジュールの最適な電力消費をさらに強化することができる。また、設計は、すべてのコア計算要素およびアクティブメモリバッファ、または少なくともそれらコンポーネントのサブセットが、別々のクロックドメインで動作することを可能にし、それにより、高周波クロックのクロック分配電力を低減することができる。
一態様では、コア計算要素を、より高い周波数クロックを使用するように動的に設定することができ、また、インテリジェントメモリバッファの動作クロック周波数を、最適な電力消費のためにより低い周波数クロックを使用するように設定することができる。コア計算要素は、様々な動作モードの下で動作することができ、各々を、(1)ジェネリックフィルタとして、(2)分離可能なフィルタとして、(3)時間が別のフィルタ次元である場合は、複数のフレームにわたるフィルタ(例えば、3D畳み込み演算)として、または(4)コア計算要素の各々が複数の並列LSTMセルに動的に構成される場合は、長短期記憶(LSTM)セルとして、動的に構成することができる。
本開示は、構成可能なCNNプロセッサへのCNNアルゴリズムのマッピングを示すルーティングアルゴリズムをさらに提示する。本開示は、少なくとも一態様において、構成可能なCNNプロセッサのアーキテクチャが、様々な種類のCNNアルゴリズムをマッピングできるように十分に汎用的であることを実証している。
例示的な構成可能なCNNプロセッサ
図1は、本開示のいくつかの態様に係る、アクティブメモリバッファ102および複数のコア計算要素(104-1、104-2、104-3、104-4、まとめて104と称する)を含む、畳み込みニューラルネットワーク(CNN)を実装するための例示的な構成可能なプロセッサ100を示すブロック図である。コア計算要素(例えば、コア計算回路要素)104の各々は、予め選択されたデータフローグラフに従ってCNN関数を実行するように構成され得る。予め選択されたデータフローグラフは、プロセッサ100に実装される予め選択されたCNNから導出することができる。CNN関数は、畳み込み関数、ダウンサンプリング(例えば、プーリング)関数、アップサンプリング関数、ネイティブ1×1畳み込み関数、ネイティブN×N畳み込み(例えば、本明細書でさらに詳細に説明するように、3×3)関数、ルックアップテーブル(LUT)値補間による設定可能な活性化関数、統合関数、ローカル応答正規化関数、およびローカルバッチ正規化関数のうちの1または複数を含むことが可能である。コア計算要素の各々は、LSTMセルおよび/または浅い深さのエラスティックFIFOによってバッファリングされた入力と出力を含むことができる。コア計算要素104に関する更なる詳細は後述する。
アクティブメモリバッファ102は、予め選択されたデータフローグラフに従って、コア計算回路要素間でデータを移動させるように構成することができる。アクティブメモリバッファ102は、それらの動作のために、また多数のコア計算要素を受け入れるために十分なメモリを含むことができる。
アクティブメモリバッファ102とコア計算要素104との間の接続が必要に応じて確立されるように、コア計算要素104とアクティブメモリバッファ102との間に結合ファブリック(図示せず)が存在する。同様に、結合ファブリックは、必要に応じて、コア計算要素104間の接続を可能にすることができる。結合ファブリックは、それらの接続が、実装される予め選択されたCNNに対応する予め選択されたデータフローグラフに従って確立されるように構成されている。
図1では、構成可能なCNNプロセッサ100が、4つのコア計算要素104を含む。一態様では、構成可能なCNNプロセッサ100が、4つよりも多いまたは少ないコア計算要素104を含むことができる。
一態様では、コア計算回路要素104の各々が、予め選択されたデータフローグラフに従って、命令セットを使用せずにCNN関数を実行するように構成されている。一態様では、コア計算回路要素104の少なくとも2つが、互いに非同期で動作するように構成されている。一態様では、アクティブメモリバッファ102が、コア計算回路要素104のうちの1または複数から非同期で動作するように構成されている。一態様では、コア計算回路要素104の各々は、CNN関数を実行するための専用となっている。例えば、一態様では、コア計算回路要素104の各々が、例えば汎用プロセッサにより通常実行される一般的な処理タスクではなく、CNN関数のみを計算するように特別に構成することができる。
一態様では、構成可能なプロセッサ100の実行時間の前に、コア計算回路要素104の各々がCNN関数を実行するように構成されている。一態様では、コア計算回路要素104の各々が、CNN関数のレイヤ(例えば、ステージ)を計算するように構成されている。一態様では、コア計算回路要素104の各々が、CNN全体を計算するように構成されている。
一態様では、アクティブメモリバッファ102とコア計算回路要素104との間の接続が、コンパイル時に確立されて、構成可能なプロセッサ100の実行時に固定される。同様に、一態様では、コア計算回路要素104間の接続が、コンパイル時に確立されて、実行時に固定される。
アクティブメモリバッファ102およびコア計算回路要素104に関する更なる詳細は、以下に提供される。
一態様では、コア計算要素104の各々が、後述するコア計算要素304および1000と同様に、予め選択されたデータフローグラフに従ってCNN関数を実行するための手段として機能することができる。一態様では、アクティブメモリバッファ102が、データを格納するための手段として機能し、後述するアクティブメモリバッファ302および600と同様に、予め選択されたデータフローグラフに従ってデータを格納するための手段を介してCNN関数を実行するための複数の手段(例えば、コア計算要素)間でデータを移動させるための手段として機能することができる。一態様では、結合ファブリック(図1には示されていないが、図3および図15を参照)が、予め選択されたデータフローグラフに従って、データを格納するための手段(アクティブメモリバッファ)とCNN関数を実行するための複数の手段(コア計算要素)との間の接続を確立するための手段として機能することができる。この結合ファブリックは、予め選択されたデータフローグラフに従って、CNN関数を実行するための複数の手段(コア計算要素)間の接続を確立するための手段としても機能することができる。
図2は、本開示のいくつかの態様に係る、CNNを実装するための構成可能なプロセッサを構成するためのプロセス200を示すフローチャートである。一態様では、プロセス200は、構成可能なCNNプロセッサ(例えば、図1の構成可能なCNNプロセッサ100)に結合されたコンピュータによって実行することができる。ブロック202では、プロセスが、予め選択されたデータフローグラフを受信する。一態様では、予め選択されたデータフローグラフが、実装される予め選択されたCNNに対応するもので、この予め選択されたCNNから導き出されたものである。
ブロック204では、プロセスが、複数のコア計算回路要素の各々を、予め選択されたデータフローグラフに従ってCNN関数を実行するようにプログラムする。CNN関数は、畳み込み関数、ダウンサンプリング(例えば、プーリング)関数、アップサンプリング関数、ネイティブ1×1畳み込み関数、ネイティブN×N畳み込み(例えば、本明細書でさらに詳細に説明されるように3×3)関数、ルックアップテーブル(LUT)値補間による構成可能な活性化関数、統合関数、ローカル応答正規化関数およびローカルバッチ正規化関数のうちの1または複数を含むことができる。
ブロック206では、プロセスが、予め選択されたデータフローグラフに従って、アクティブメモリバッファ(例えば、図1のアクティブメモリバッファ102)をプログラムする。
ブロック208では、プロセスが、予め選択されたデータフローグラフに従って、アクティブメモリバッファ(例えば、102)と複数のコア計算回路要素(例えば、104)との間の複数の接続をプログラムする。
ブロック210では、プロセスが、予め選択されたデータフローグラフに従って、複数のコア計算回路要素間の複数の接続をプログラムする。ブロック210、208で使用される「プログラム」という用語は、プロセスが、実行時間の前に、それらのコンポーネントを結合するためにCNNプロセッサ内に存在する結合ファブリックを使用して、コンポーネント間の様々な接続を確立することを意味する。
ブロック212では、プロセスが、予め選択されたデータフローグラフに従って、メモリバッファを介して複数のコア計算回路要素(例えば、104)間でデータを移動させるように、アクティブメモリバッファ(例えば、102)をプログラムする。
一態様では、プログラミング動作の各々(例えば、ブロック204~212で説明したようなプログラミング動作)が、構成可能なプロセッサの実行時間の前に実行される。
一態様では、プロセスが、命令セットを使用せずにCNN関数を実行するために複数のコア計算回路要素を動作させること、および/または、命令セットを使用せずにアクティブメモリバッファを動作させることをさらに含む。
図3は、本開示のいくつかの態様に係る、プログラマブル機能ユニット(PFU)として具現化されたCNNを実装するための例示的な構成可能なプロセッサ300を示すブロック図である。PFU300は、インテリジェントメモリバッファ(例えば、アクティブメモリバッファ)302と、階層型計算ユニット306内の16個のコア計算要素304と、並列SPIインターフェース308とを含む。一態様では、アクティブメモリバッファ302およびコア計算要素(例えば、コア計算回路要素)304が、図1および図2に関して上述したように動作することができる。
図3は、単一のインテリジェントメモリバッファ302を有する複数のコア計算要素/モジュール304の階層表現として見ることができ、これらを集合的にPFUと呼ぶことができる。コア計算要素304の各々は、インテリジェントメモリバッファ302のいくつかの読み取りおよび書き込みポートを介してアクセス可能である。PFU300は、入力データインターフェース310および出力データインターフェース312をさらに含む。入力データインターフェース310を介して受信された入力データおよび出力データインターフェース312を介して送信された出力データは、それぞれ、インテリジェントメモリバッファ302内の読み取りおよび書き込みポートと直接インターフェースすることができる。これにより、他のPFUユニットは、送信機と受信機の構成に基づいて、読み取りおよび書き込みポートを介してポイントツーポイントで相互に通信することが可能になる。
読み取りポート(例えば、M個の入力ポートのいずれか1つ)および書き込みポート(例えば、N個の出力ポートのいずれか1つ)は、異なるチップ上の他のPFUと、SPIなどのシリアル-パラレルインタフェース308を介して通信されるデータをシリアル化および逆シリアル化するためにも使用することができる。SPI308は、チップ境界を跨ぐ2つのPFU間の通信チャネルの比較的低電力の実装を提供することができる。一態様では、PFU300が、単一チップを使用して実装される。PFUチップ内のパラレルインターフェース308を介して送信されたデータは、シリアル化され、プリント回路基板(PCB)を介して送信され、その後、宛先チップ(例えば、第2のPFU)で受信されるとパラレル化され得る。シリアルリンクは、単純なSPIからより複雑なクロック埋め込みリンクまで、任意の種類のシリアルリンクであってもよい。
PFU300は、コア計算要素がより大きなメモリプールにアクセスするために、PFUの外部にある外部メモリとのインターフェースも含むことができる。典型的なCNNでは、少数のレイヤのみが多数の重みにアクセスする必要があり、具体的には全結合層がそうである。多数の重みにアクセスする必要があるCNNレイヤが少ないため、各PFUは、畳み込みレイヤで使用される平均的な数の重みを格納するのに十分な重みメモリのみで構成することができる。本明細書で使用される場合、「重みメモリ」は、CNNレイヤを処理/計算するための重みを格納するために使用されるコア計算要素のメモリを意味する。コア計算要素がより大きな重みメモリにアクセスする必要がある場合は常に、外部のより大きなメモリプールからフェッチすることができる。しかしながら、外部メモリのメモリ帯域幅は、バックプレッシャなしに2つのコア計算要素をサポートするのに十分である場合がある。より大きな重みメモリプールにアクセスするコア計算要素の数が多くなると、スループットが低下する可能性がある。
重みメモリの制約により特定の畳み込み演算が単一のコア計算要素に収まらない場合、畳み込み変換(例えば、図15のケース2に示す)を利用して、複数のコア計算要素に畳み込みを分割することも可能である。このメカニズムにより、通常のPFUを比較的少量の重みメモリに制限することができるが、外部の大きなメモリプールにアクセスするか、または畳み込み変換を使用して複数のコア計算要素に畳み込みを分散することによって、より多くの重みにアクセスする能力を有することが可能である。
構成可能なCNNプロセッサの追加構成
図4は、本開示のいくつかの態様に係る、4つのPFU402を含むプログラマブル機能アレイ(PFA)として具現化された構成可能なCNNプロセッサ400を示すブロック図である。PFAとして具現化されたこの構成可能なCNNプロセッサ400は、前述したPFUの階層的な集合体として見ることができる。同様に、複数のPFAは、全体的な構成可能なCNNプロセッサまたはPFAプロセッサを形成するために並列に段階化され得る。PFU間の相互接続性は、相互接続モジュール404によって制御することができ、これは、CNNデータフローグラフによって記述されるようにコンパイル時にプログラムされ得る。
本開示が構成可能なCNNプロセッサとして提示するものは、プロセッサ設計の従来のアプローチ(命令がプログラミング言語からコンパイルされ、プロセッサに格納され、実行時に命令が実行され、プロセッサ全体のデータフローが実行時に制御されるというプロセッサ設計の従来のアプローチ)から逸脱している。また、従来の命令セットアーキテクチャでは、プログラマが外部入出力(IO)とインターフェイスして、他の世界と通信し、それによりデータをフェッチして、処理済みの出力データを転送することができる。命令セットアーキテクチャは、ハードウェアの抽象化を可能にし、高級言語のプログラミングとコンパイルを含む複雑なソフトウェア開発を可能にする。これは、命令セットアーキテクチャが大きな柔軟性を提供する汎用プロセッサにおいて容易に可能である。
一方、プロセッサが特定のタスクセット専用であり、柔軟性と命令セットの抽象化を可能にする実行時制御フローメカニズムの要件を制限できると仮定すると、多くの電力を最適化することが可能である。アプリケーションに十分な制約がある場合、アーキテクチャにおけるそのような制限は可能になる可能性がある。この場合、構成可能なCNNプロセッサのアプリケーションは、CNN中心の操作に制限され得る。この仮定に基づいて、本開示は、データフロー制御がコンパイル時に静的に割り当てられ、CNNのデータフローグラフに基づくメモリおよびコア計算要素の構成が、データフローを制御するのに十分であると仮定することができる。このため、実行時に、動作が必要になる可能性がある唯一のアクティビティは、予め選択された計算レートおよび/またはデータレートの入力仕様に基づくデータに対する計算である。
一態様において、専用のCNNプロセッサであり、PFAプロセッサとも呼ばれる構成可能なCNNプロセッサについて、本開示は、プロセッサの目的が、CNNまたは畳み込み変換に基づく変形によって表されるものと同様のデータフローグラフを処理することであると想定することができる。本開示は、例えば、構成可能なCNNプロセッサ専用のコンパイラソフトウェアを含み、予め選択されたCNNのデータフローグラフを分析し、それを最適化し、次いで、CNNを表すグラフの機能を構成可能なCNNプロセッサにマッピングする。CNNグラフのマッピングは、図2のプロセス200のように、コア計算要素およびインテリジェントバッファの相互接続性およびそれらの階層をプログラミングすることによって行うことができる。構成可能なCNNプロセッサのプログラミングは、以下を含むことができる。
(1)コア計算要素、それらの動作モード、およびコンパイル時に静的に定義されるすべての構成のプログラミング。
(2)インテリジェントメモリバッファのプログラミング(これは、どのコア計算要素をどの読み取りおよび/または書き込みポートに接続/結合するかを割り当てることを含む、すべての書き込みおよび読み取りポートの構成のプログラミングを含むことができる)。
(3)データフローおよび接続性は、各PFUレベルで、場合によってはPFAレベルで、他の並列PFAユニットにわたって、プログラムすることができる。一態様では、すべての相互接続構成が、コンパイル時に決定され、実行時に静的である(例えば、計算中に時間とともに変化しない)。CNNデータフローグラフは、パラレル-シリアルインターフェースおよびシリアル-パラレルインターフェースを介して通信する複数のPFAユニットまたは複数のチップ(例えば、PFUまたはPFA)にマッピングすることもできる。その場合、各チップを独立してプログラムすることができる。チップ間通信のレイテンシは、パラレル-シリアル-パラレルインタフェースによってもたらされる最大レイテンシに基づいて、コンパイル時に予め求めることができる。一態様では、PFA400が単一のチップを使用して実装される。
図5は、本開示のいくつかの態様に係る、カスケード構成の複数のPFA501を含むシステム500として具現化される構成可能なCNNプロセッサを示すブロック図である。図5は、複数のPFA501がどのように直列に接続され得るかを示している。この例では、PFA501の各々が、4つのPFU502を実装している。また、この例では、単一のSPIインおよびSPIアウトが各PFA501に含まれる。一態様では、複数のSPIインおよびSPIアウトのポートを使用することができる。複数のPFAをカスケード接続する機能により、ユーザは、単一のチップでは不可能であったディープCNNを実装するか、あるいは単一のチップでは不可能であった複数のCNNを並列に実装することができる。
構成可能なCNNプロセッサのコンポーネント
図6は、本開示のいくつかの態様に係る構成可能なCNNプロセッサ内で使用するための例示的なアクティブメモリバッファ600を示すブロック図である。主なIOは、書き込みポート602および読み取りポート604である。他のIOインターフェースは、インテリジェントメモリバッファ600の構成を担うレジスタモジュールインターフェース606である。各読み取り/書き込みポート(604、602)は、小さな先入れ先出しデータバッファ(FIFO)(608、610)によってサポートされ、メモリ操作を効果的かつ柔軟に行うことができる。同様に、各コア計算要素は、入力および出力にFIFOを含むことができ、それにより、メモリおよび様々なコア計算要素間のデータフロー全体が非常に柔軟になる。
読み取りポート604は、多数の並列読み取りポートコントローラ612によって制御される。各読み取りポートコントローラ612は、読み取りポートがどの出力を制御するのかを示すように個別にプログラムすることができる。各読み取りポートコントローラ612は、メモリ614から選択された読み取りポート604を介して特定のコア計算要素(図示せず)へデータを駆動する役割を果たす。これらのコントローラ612の各々は、読み取りポート604の各々のためにラウンドロビン方式で使用することができる。これにより、コンパイラは、実装される予め選択されたCNNの要件に基づいて、読み取りポート604を過負荷にして複数のコア計算要素を駆動するか、または単一の読み取りポート604を選択して単一のコア計算要素を駆動することができる。これにより、データレート要件に基づいて、インテリジェントメモリバッファおよびコア計算要素を構成および/または接続、最適化する方法に柔軟性がもたらされる。
入力書込みポート602の各々は、FIFO608に結合され、それを備える。入力FIFO608は、ラウンドロビン方式でアドレス指定することができる。アクティブメモリバッファ600の書き込みポート602および読み取りポート604の両方にFIFO(608、610)を有し、コア計算要素の入力および出力にFIFOを有することにより、真の非同期バスアーキテクチャの使用が可能になる。これは、特に、複数のPFUを互いに接続して単一のPFA(例えば、1つのチップ)を形成することが、特にタイミングクロージャの観点から課題となるチップのトップレベルにおいて有用となる場合がある。一態様では、複数のPFUモジュールを互いに集約して、構成可能なCNNプロセッサの一実施形態となり得るPFA(例えば、チップ)を形成することができる。PFAまたはPFAモジュールは、チップのトップビューを示す。チップのトップレベルにおけるタイミング要件の緩和は、エッジアラインされたクロックをすべてのリーフノードに送達する試みにおいて特にクロックツリーの電力を節約し得るため、特に有用である。
チップ内のクロック分散は、特にクロックツリー分岐がすべてのリーフノードがチップ全体でクロックエッジ同期を維持することを確認しなければならないチップのトップレベルにおいて、非常に困難な場合がある。異なるモジュールを互いに非同期で実行する機能、例えば、同じクロック周波数で非同期クロックドメインで実行されるインテリジェントメモリバッファ600およびコア計算要素は、クロックツリーの制約を緩和する。その結果、通常、同期回路に追加される多くのクロックバッファが冗長となる。消費者向け電子機器のクロックツリーは、デバイスの電力の平均60%を消費する場合がある。この電力を削減できることは大きな意味を持つ。複数のブロックが同じクロック周波数で互いに非同期で動作できるため、そうでなければクロックツリー全体のクロックをエッジアライメントするために使用されていたであろう多数のクロックツリーバッファが緩和される。異なるブロックがすべて同期クロックドメイン上にあるような実装も存在し得る。
読み取りポートと書き込みポートの両方におけるFIFO要件(例えば、サイズ)は、浅くてもよく、書き込みポートと読み取りポートの各々の予想または定義されたデータレートの関数となる。
連続メモリ614は、シングルまたはデュアルポートメモリ、あるいは複数のポートであってもよい。連続メモリ614のネイティブポートの数の選択は、全容量の下で処理される最大データレートに依存する。現実的には、複数のネイティブポートの増加に伴い、消費電力が指数関数的に増加する可能性があり、よって少ないポート数を維持することが、電力の観点から理想的である可能性がある。しかしながら、最大データレートの設計目標は、少なくともある態様において、好ましくは2つのネイティブポートを超えないデュアルポートメモリの選択を促進する可能性がある。メモリ614は、レイアウトに最も適した方法で物理的に編成することができる。メモリの物理的境界は、物理メモリ設計コンパイラによって割り当てられるように、メモリのアドレス空間またはデータ幅のいずれかとなり得る。
インテリジェントメモリバッファ600は、単一のCNNを実装することに制限されるものではない。一態様において、複数のCNNが共通のデータフローグラフを有する限り、複数のCNNを同時に実装することができる。例えば、同時に実装される2つのCNNがある場合、一方のCNNグラフは他方のCNNのサブセットとすることができる。
最後に、コントローラ616は、構成レジスタ606によって選択された適切なデータフローのために、すべての制御信号を同期させる役割を果たすことができる。
上述したように、FIFO(608、610)を使用することにより、データフローを柔軟にすることができる。より具体的には、使用されるFIFOは、非同期FIFOとすることができる。その結果、コア計算要素とインテリジェントメモリバッファ600は、異なるクロックドメインで効果的に実行することができる。構成可能なCNNプロセッサにおけるデータフローは、インテリジェントメモリバッファ600によって制御することができる。インテリジェントメモリバッファ600は、様々なデータレートで同時に動作し、互いに完全に非同期であるトラフィックのバーストを有する様々な読み取りポートおよび書き込みポートをサポートする。これが命令セットアーキテクチャによって制御される場合、様々なポート間の同期、および様々な書き込みポートと読み取りポート間のデータ転送は、より多くのロジックを必要とし、よって、より多くの電力を消費することになるであろう。本明細書で提示する設計(例えば、図6)では、書き込みポートおよび読み取りポートの各FIFOが、浅い深さになるように設計されている。このFIFO構造は、データ生成源へのバックプレッシャを可能にする。それにより、インテリジェントメモリバッファ/設計は、バーストデータフローを処理し、データ生成源にバックプレッシャをかけることができ、その結果、データの正確なフローが予め決定されておらず、データフローリンクに弾力性が提供されるようなアーキテクチャを実現することができる。また、インテリジェントメモリバッファとコア計算要素が同じ周波数クロックで動作することは必須ではないが、互いに非同期であることが必要である。実際に、実装に応じて、様々なモジュールの動作周波数を調整して、全体の消費電力を下げることも可能である。
一態様では、インテリジェントメモリバッファが、2、4、8または16ビット演算など、コンパイル時に選択できる異なる/複数のデータ幅(例えば、異なるサイズの幅)を有するデータをサポートするように構成することができる。これにより、全幅のデータ処理が不要な場合、データ幅の処理を低減することにより、省電力化が可能となる。その結果、コンパイル時に選択したビット幅のみを使用して、読み取りと書き込みを実行することができる。このようなメモリ動作による電力削減は、かなりの量になる可能性がある。
図7は、本開示のいくつかの態様に係るアクティブメモリバッファのための例示的なメモリ構成700を示す斜視図である。図7は、アクティブメモリバッファからコア計算要素にデータを伝送する様々なモードを示している。コア計算要素は、インテリジェントメモリバッファによって提供されるデータブロックのチャンクに対して動作する。畳み込みのタイプに応じて、インテリジェントメモリバッファは、3つの異なるモード(702、704、706)でコア計算要素にデータを提供することができる。モード値自体は、伝送プロトコルに埋め込むことができる。畳み込みを計算する間、コア計算モジュールによる重複したデータ要件が存在する可能性がある。例えば、一態様において、3×3×Nの畳み込みを計算する間、新しいデータブロックは1×3×N次元のみで、残りの部分は前の畳み込みから再利用される。一態様では、1×1の畳み込みの計算が、重複するデータポイントがないため、モード1ブロックが毎回送信されることを必要とし得る。一態様では、入力次元のエッジとして畳み込みを計算するときに、モード3ブロックも使用することができる。モード2ブロックは、ストライド2で3×3の畳み込みを計算するときに使用することができる。これらの異なるモードの使用は、重複するメモリ読み取り動作を防止し、電力を節約することができる。
図8は、本開示のいくつかの態様に係る、アクティブメモリバッファからコア計算要素にデータを送信するための例示的なプロトコル800を示すタイミング図である。ブロック情報(例えば、Block-Info)は、送信パケットの各々を自己完結型にすることができる。ブロック情報は、データパケットの宛先コア計算要素にもラベルを付ける。コア計算要素のアドレス(例えば、「36-Mのアドレス」、ここで「36-M」はコア計算要素を指すことができる)は、ブロック情報の一部である。このプロトコルでは、アクティブメモリバッファの1つの読み取りポートから、1または複数、さらにはすべてのコア計算要素にデータを送信することも可能である。また、ブロック情報には、入力データボリュームの行、列、深さの次元に関する情報も含まれる。これにより、インテリジェントメモリバッファは、処理対象の領域のみを送信できるようになる。
図9は、本開示のいくつかの態様に係る、コア計算要素からアクティブメモリバッファでデータを受信するための例示的なプロトコル900を示すタイミング図である。例示的なプロトコル900は、図8の例示的なプロトコル800と同様である。一態様では、インテリジェントメモリバッファに書き込まれるデータは、ラスタスキャン方式で書き込まれ、深さが書き込まれる最初の次元であり、次に列、次に行が続くと想定することができる。
図10は、本開示のいくつかの態様に係る構成可能なCNNプロセッサ内で使用するための例示的なコア計算要素1000を示すブロック図である。コア計算要素1000は、入力(1002-1、1002-2、まとめて1002と呼ぶ)および出力(1004)の両方にエラスティックFIFOバッファを有する。これらのFIFO(1002、1004)は、アクティブメモリバッファとコア計算要素との間の非同期データ転送を可能にすることができる。このため、コア計算要素のクロック速度と比較して、異なるクロック速度で動作するアクティブメモリバッファを実装することができる。これは、コア計算要素1000が、内部メモリの速度によって制限され得るインテリジェントメモリバッファと比較して、遥かに高いクロック速度で動作することができるため、現実的である。また、非同期接続は、例えばすべてのクロックリーフノードのエッジアラインメントを試みることによって、タイミングを満たすことが困難になるトップレベルにおいて、特に魅力的である。タイミング要件が緩和されると、チップのトップレベルのレイアウトが容易になり、すべてのリーフノードでクロックエッジを合わせるための過剰なバッファが不要になるため、電力が削減される。
一態様では、複数のサイズの計算データ幅をサポートするように、コア計算要素を構成することができる。その場合、データ幅は、コンパイル時に選択することができ、例えば、2、4、8または16ビット演算に対応するデータ幅を含むことができる。この機能は、全幅の計算が不要な場合に、減らした幅の計算を使用することによって、電力を節約できる可能性がある。
入力FIFO1002は、ピンポンバッファとして機能することができ、コア計算要素が他のバッファ(1002-2)を使用して作業を行うことができる間に、1つのバッファ(1002-1)がアクティブメモリバッファによって書き込まれることができ、それによりパイプライン動作を可能にして待機時間をなくすことができる。インテリジェントメモリバッファからの入力バッファ1002-1は、固定平均と分散に基づく正規化モジュール1006に入力データを供給する。一態様では、モジュール1006が、すべてのデータポイントを平均で減算し、分散の逆数を乗算することによって、データを操作することができる。平均と分散の値は、コンパイル時にプログラム可能である。
正規化モジュール1006の出力は、畳み込みを実施する並列な乗算・加算ユニット1008のアレイに供給され、その後に、結果1010のコンバイナ1010と、積分器およびローカル応答正規化モジュール1012が続く。これらの各モジュールは、コンパイル時に構成可能である。その後、出力は、ローカル入力FIFO1002-2により同期化される近くのコア計算モジュールからの入力データを用いてFIFO1014で同期化される。これら2つのFIFO(1002-2、1014)の出力は、算術的に結合1016され、次のモジュール1018が、バッチ正規化および活性化関数を計算する。活性化関数は、ルックアップテーブル(LUT)を使用して計算することができ、これにより、可能な活性化関数を実装する柔軟性がもたらされる。このモジュール1018は、ローカルルーティングを使用して、計算されたデータを近くのコア計算要素に出力することもできる。この出力データは、インテリジェントメモリバッファに送信する前に、出力FIFO1004によってバッファリングされる。一態様では、各コア計算要素は、推論とトレーニングの両方について予め選択されたCNN関数を実行するように構成することができる。
図11は、本開示のいくつかの態様に係るコア計算要素内で使用するための例示的な制御ユニット1100を示すブロック図である。コア計算要素の制御ユニット1100は、階層的に分散されたマイクロプログラム式制御ユニットとして実装することができ、またはハードワイヤード制御ユニットとして実装することもできる。図11は、階層的に分散されたマイクロプログラム式制御ユニットとして実装された制御ユニットを示している。入力タイミングデータは、制御ワードを含む様々なメモリのアドレス指定を制御する。これらの制御ワードは、コア計算要素全体のデータフローを担う信号を制御する役割を果たす。一態様では、制御ユニットのハードワイヤード実装が、電力消費に関して最適である可能性がある。同時に、実装が非常に難しい場合がある。
制御ユニット1100は、コア計算要素内のデータフローを制御し、コア計算要素/モジュールの正しい動作を保証する役割を担うことができる。制御ユニット1100において、制御ワードは、動作モードに基づいてカテゴリに分類することができる。動作モードに基づいて、適切な制御ワークが選択される。1102、1104、1106、1108、1110を含む制御ワードメモリは、浅い深さを有することができる。演算・係数制御メモリ(CM)1104は、コア計算要素の全体的な動作を制御する別個の制御ワードを格納することができる。相互接続CM1106は、コア計算要素内の相互接続を決定する固有の制御ワードを格納する役割を担うことができる。データプリフェッチ制御メモリ1110は、コア計算要素の外部から重みをフェッチするための制御ビットを格納することができる。フィルタモードCM1108は、係数メモリから実際の計算場所へのフィルタ係数のフローを制御する固有の制御ビットを格納する役割を担うことができる。コア計算要素における操作は、本質的に周期的である可能性がある。その結果、必要とされる固有の制御ワードの総数は、本質的に少なく、よって深さが浅くなる可能性がある。マイクロプログラム式制御ユニット1100がハードワイヤード制御ユニットに置き換えられ、プロセッサ全体の動作を変更しない場合に、コア計算要素の実装が可能である。
制御ユニット1100は、重みメモリから重みをフェッチする役割も果たす。制御ユニット1100は、メモリの外部プールからそれらの重みをフェッチすることによって、ローカル重みメモリ1112の物理的限界(例えば、約6~8メガビット)を超えてから要求された重みに対処することができる。これは、仮想拡張可能メモリ1114と呼ばれる。データプリフェッチユニット1116は、1つまたは2つのコア計算要素のみがメモリの外部プールへのアクセスを必要とし得るという仮定の下で、メモリの外部プールからデータを読み取ることができる。多数のコア計算要素からのメモリアクセスの要求が多すぎると、データスループットのボトルネックとなる可能性がある。ある態様では、CNNの全結合(FC)レイヤを実行する少数のコア計算要素のみが、このメモリの外部プールへのアクセスを必要とし得る。これは、FCレイヤが畳み込みレイヤに比べて多くの重みを含むからである。FCレイヤでのデータレート要件は、初期の畳み込みレイヤでのデータレート要件と比較して、遥かに低い。これにより、複数のコア計算要素が、この外部プールのメモリを共有リソースとして利用することができる。同時に、あまりにも多くのコア計算要素がこの共有メモリリソースにアクセスし始めると、帯域幅が不足する。一態様では、FCレイヤを実行するほんの一握りのコア計算モジュールのみが、この共有リソースへのアクセスを必要とするという仮定が可能である。一態様では、メモリの外部プールが、チップ上(例えば、図4のPFAチップ400のメモリ404内)に位置することができる。一態様では、メモリの外部プールが、チップ外に位置することができる。
一態様では、本開示が、構成可能なCNNプロセッサ上のCNN(例えば、CNNアーキテクチャ)をマッピングするためのコンパイラの使用を含む。コンパイラは、CNNをルーティングまたはマッピングするためのアルゴリズムを実装することができる。そのようなアルゴリズムの1つには、以下のものが含まれる。
(1)実装されるCNNアーキテクチャを入力する。
(2)CNNの各畳み込み演算をコア計算要素に割り当てる。
(3)最悪条件に割り当てられたそれぞれのコア計算要素による、各畳み込みモジュールの正味の計算時間を含む時間を評価する。
(4)1秒毎に特定のフレームを処理するための要件に基づいて、各コア計算モジュールに計算時間バジェットを割り当てる。
(5)時間バジェット内で十分に計算可能な各コア計算要素について、単一のコア計算モジュールで2つのCNN演算の計算が可能であるか否かを評価する。2つのCNNの計算を単一のコア計算要素に組み合わせる際に、必要な全体係数を考慮に入れることができる。
(6)利用可能な時間バジェットを超えている各コア計算要素について、各コア計算要素が必要な出力ボリュームの半分のみを計算するように、2つのコア計算要素に畳み込みを分割する。各コア計算要素がその時間バジェット内で個別に割り当てられたタスクを計算できるようになるまで、このステップを繰り返す。
(7)3×3より大きな畳み込み演算の場合、ステップ(2)で、CNN演算を複数のコア計算要素に割り当てることができる。この場合、ステップ(3)~(6)において、CNN演算を示すコア計算要素のグループが考慮される。
(8)入力データをインテリジェントメモリバッファのメモリにロードし、出力をインテリジェントメモリバッファから読み出す。インテリジェントメモリバッファのメモリ空間全体は、プロセッサの外部との通信を担うIOデバイスからアクセス可能である。
上記のアルゴリズムは、本明細書で説明するように、コンパイラが予め選択されたCNNを構成可能なCNNプロセッサにルーティングまたはマッピングするための1つの方法を説明している。一態様では、このアルゴリズムを、他の設計目標に適合するように修正することができる。
CNN演算
図12は、本開示のいくつかの態様に係る例示的なCNN1200を示す図である。CNN1200は、一般的なCNNである。この具体的な例は、畳み込み、ReLu、プーリング、全結合層およびソフトマックス層などの様々な計算ノードとともに、データおよび計算のフローを示している。計算ノードとそれに関連するメモリ要件は、CNNのデータフローグラフの対象となる。
図13は、本開示のいくつかの態様に係る、図12の例示的なCNN1200の畳み込み演算1300を示すブロック図である。CNNのコア計算の大部分は、畳み込み演算による。同様に、CNNのバックプロパゲーションまたはトレーニング中のコア計算の大部分も、畳み込み演算による。
図14は、本開示のいくつかの態様に係る、図12の例示的なCNNのフォワードパス1400およびバックプロパゲーションパス1420を示すブロック図である。フォワードパス1400において、Xは畳み込みへの入力を示し、Fはフィルタ重みを示し、Oは出力を示している。これは、CNNのフォワードパスまたは推論パスである。
バックプロパゲーション中の計算パスは1420で示される。式は、CNNのトレーニング中のバックプロパゲーションパスが、推論パスにおける畳み込み演算と同様の畳み込み演算に縮小されることを示している。1420におけるこれらの畳み込み演算は、1400で示される推論パスにおいて実行されている畳み込みと同様に、構成可能なCNNプロセッサによって実行することができる。これにより、構成可能なCNNプロセッサの同じアーキテクチャを推論とトレーニング操作の両方に使用することができる。
バックプロパゲーションパス1420は、CNNトレーニングのいくつかの態様を示している。CNNのトレーニング中、CNNの最終ステージからの誤差導関数は、推論の逆方向でCNNの最初のステージに逆伝播される。バックプロパゲーションアルゴリズムの主な目的は、各ステージで誤差勾配出力を計算し、それぞれの重みに伝播された誤差勾配に基づいて重みを更新することである。あるステージから他のステージに流れる勾配とそれぞれの重みの勾配の計算は、畳み込み演算で近似できることがわかる。バックプロパゲーションパス1420は、これをグラフィカルに記述している。
これは、推論パスを計算するすべての計算ノードが、CNNのトレーニングに使用され得るバックプロパゲーションのための勾配フローも計算できることを意味する。また、トレーニングは、正しい損失関数の選択と、フィルタ勾配に基づいて重みを更新する機構も含む。本明細書に記載の構成可能なCNNプロセッサは、推論とトレーニングの両方を目的としており、またその両方が可能である。唯一の違いは、トレーニング中に、推論からの中間ステージの結果を格納するために、バックプロパゲーション中に使用されるよりも多くのメモリが必要とされる可能性があることである。
構成可能なCNNプロセッサのマッピング例
図15は、本開示のいくつかの態様に係る、CNNの一部をコア計算要素にマッピングするための3つの例示的な変換を示すブロック図である。図15は、本明細書に記載の構成可能なCNNプロセッサへのCNNデータフローグラフのマッピング中に使用され得る3つの異なる種類の変換(例えば、ケース1、ケース2、ケース3)を示している。図15では、コア計算要素が、CNNの必要な計算をすべて計算すると仮定され、正しいデータがそれに渡され、適切な出力データがそこから正しく収集されると仮定されている。
ケース1の変換は、単一のコア計算要素が必要な計算時間メトリクスを満たすことができない場合に使用することができる。そのような場合、畳み込み演算を2つの並列コア計算要素に分割して並列に動作させ、必要な出力ボリュームを生成することができる。このスキームでは、2つのコア計算要素の形式で2倍の計算ユニットを使用し、単一のコア計算要素で計算される非変換モデルの半分の時間で出力ボリュームを生成することができる。また、メモリリソースの利用という点では、2倍の読み取りポート、2倍の書き込みポートが必要になることもある。物理メモリの総使用量は変換の前後で変わらない。
次のケース2の変換は、2倍のコア計算要素とメモリ読み取りポートリソースを含む。しかしながら、ケース2は、1倍のメモリ書き込みポートリソースと、コア計算要素間の内部通信チャネルを必要とするだけである。各コア計算要素は、入力の深さの半分で計算を行い、2つのコア計算要素間の内部通信リソースを使用する。最終的な出力ボリュームを構成するために、2つのコア計算要素からの計算された出力をまとめる必要がある。これは、受信側のコア計算要素で行うことができる。書き込みポートの1つは、2つのコア計算要素間の内部通信によって補われる。この変換は、追加の書き込みポートが利用できない場合に非常に有用となる。
最後のケース3の変換は、フィルタ次元3×3より大きい畳み込みを実行するためにコア計算要素のグループを使用する。この例は、9×9の次元のフィルタを使用した畳み込みを示している。殆どのCNNは、3×3または最大でも5×5を使用し、9×9はおろか7×7の畳み込みを使用するものも殆どない。9×9の畳み込みは、より低い次元の潜在的な畳み込みを自動的にカバーするため、ケース3の例として選択している。この例では、9×9の畳み込みを9個のコア計算要素からなるグリッドで実行している。全体として、メモリリソースに関して1つの読み取りポートと1つの書き込みポートを使用し、残りの通信はコア計算間通信リンク(例えば、結合ファブリック)を介して行われる。
上記の3つのケースすべてにおいて、任意のコア計算要素へのデータは、専用のメモリ読み取りポート(例えば、インテリジェント/アクティブメモリバッファのメモリ読み取りポート)または単一のメモリ読み取りポートリソースを共有する複数のコア計算要素のいずれかによって駆動することが可能である。
図16は、本開示のいくつかの態様に係る、複数のラインバッファを使用するコア計算要素への図12の例示的なCNNの可能性のあるマッピングを示すブロック図である。図16は、先に紹介したCNNの一例であるが、ここでは、1秒当たりの仮想的なフレーム数(例えば、予め選択された処理要件)を計算するために畳み込み演算が複数のコア計算要素に分散されている。1秒間に処理されるフレーム数によって、目標データスループットを満たすために各CNNステージで(上述した)必要な変換が決定される。この結果、CNNステージの各々における専用のコア計算モジュールの数が決定される。
図16は、ラインバッファがすべてのコア計算モジュールの前に必要とされることを示すとともに、それにより、関与し得るラインバッファモジュールの総数を示している。各ラインバッファは、深さとともに3ラインのデータを含む。N×Nの次元のフィルタを実現するには、その深さを持つN個のラインバッファが、各コア計算要素のデータ要件をサポートするために、必要となる場合がある。ここでは、3×3の次元のフィルタであるため、各ステージのラインバッファは、深さとともに3ラインのデータを格納する。コア計算モジュールとラインバッファ間の相互接続は、実装する予定のCNNを定義した接続グラフに基づいて、CNN毎に変化する。本明細書に記載の構成可能なCNNプロセッサの背後にある1つのアイデアは、ラインバッファと計算モジュールの間の接続を再配置することによって、様々なCNNグラフを実現できるように、この接続を容易にすることである。基本的には、これにより、CNNの機能グラフをプロセッサ上に直接プログラミングまたはマッピングすることができる。
図17および図18は、本開示のいくつかの態様に係る、図12の例示的なCNNのコア計算要素(例えば、「36-M」)への可能性のあるマッピング(1700-1、1700-2、まとめて1700と呼ぶ)の単一のブロック図を示し、ラインバッファがアクティブメモリバッファに集約されている。図17および図18では、複数のラインバッファが集約されて、インテリジェントメモリバッファ(例えば、本明細書に記載のインテリジェントメモリバッファ)と呼ばれるユニット(1702-1、1702-2、1702-3、まとめて1702と呼ぶ)に配置されている。インテリジェントメモリバッファ1702は、ラインバッファの構成に基づいて、それらの深さとともに所定数のラインバッファを収容することができる連続メモリを有するように構成することができる。一態様では、インテリジェントメモリバッファ1702が、所定数の書き込みポートと所定数の読み取りポートとを有すると仮定することができる。
特定の条件下では、次のように仮定することが適切である。
(1)プロセッサ実装のテクノロジーノードを考えると、プロセッサは、計算される入力データレートよりも桁違いに速い速度で動作し得る。一例として、リアルタイムモーションは、400×400×3サイズの画像が毎秒約14.5メガピクセルのデータレートを有する場合に、毎秒30フレームのフレームレートを有する可能性があり、1GHzで動作する本明細書に記載の構成可能なCNNプロセッサと比較すると、速度におけるオーダーの違いは約70倍である(例えば、構成可能なCNNプロセッサは、リアルタイムモーションデータソースの70倍のデータレートで動作している)。計算エンジンと目標データ処理レートとの間のこのデータレートの違いは、先に述べた畳み込み変換の助けを借りて、CNNのすべてのステージに容易に拡張することができる。その場合、すべてのステージは、それぞれの目標データ処理レートと、インテリジェントメモリバッファおよびコア計算要素などのハードウェア計算要素の処理レートに行き着くことになる。その結果、CNNの各ステージにおいて、メモリおよびコア計算要素は、目標処理レートより遥かに速い速度で動作するように構成することができる。
(2)上記仮定の下で、各インテリジェントメモリバッファとコア計算要素の動作速度が目標処理レートより速い場合、インテリジェントメモリバッファは容易にマルチタスクを実行できると結論付けるのが妥当であろう。インテリジェントメモリバッファの場合、データが格納されている内部メモリは、複数の読み取りおよび書き込みポートを介して、データの読み取りと書き込みの要件を有する複数のコア計算要素を使用可能にするために、容易にマルチタスクを実行することができる。1つの例は、インテリジェントメモリバッファのコアメモリがデュアルポートの連続メモリで、インテリジェントメモリバッファが8つの読み取りポートと8つの書き込みポートを同時にサポートする場合である。換言すれば、この例では、平均的かつ最大スループット能力において、インテリジェントフレームバッファは、8クロック毎に読み取りポートと書き込みポートの各々を使用可能にすることができる。
(3)コア計算要素の各々は、割り当てられたタスクを計算するために8クロックを超えるクロックを使用するように構成することができる。一態様では、並行して計算するフィルタがいくつかある場合に、これが桁違いに増加する可能性がある。これは、コア計算要素にデータを供給する際にボトルネックとなることなく、異なるコア計算要素間でマルチタスクを実行することができるため、インテリジェントメモリバッファに最適である。一態様では、この時間多重化の能力により、インテリジェントメモリバッファは、低消費電力実装の制約下で動作しながら、複数の読み取りおよび書き込みポートを提供し、複数のコア計算要素間でデータの一貫性を維持することができる。この戦略により、畳み込み用のデータを最適に読み出すことができ、キャッシュベースのメモリ階層システムの場合に必要とされるような、余分な読み取り操作をすべて回避することができる。
(4)最新のテクノロジ実装では、読み取りや書き込みなどのメモリ操作は、加算、減算、乗算などの単純な算術演算よりも遥かに多くの電力を消費する可能性がある。したがって、ここで活用される1つの有用な戦略は、メモリへの読み取り/書き込み操作を最小化し、クロックあたりの計算の総数を最大化することである。一態様では、インテリジェントメモリバッファは、各コア計算要素にデータを供給する役割を果たし、その後、コア計算要素が数クロックを使用してデータを使い、意味のある結果をもたらす。すべてのメモリ読み取り/書き込み操作をインテリジェントメモリバッファ内にカプセル化し、最適な読み取りおよび書き込み操作を実行することにより、構成可能なCNNプロセッサはメモリの読み取り/書き込みの電力消費を最小化することができる。畳み込み演算では、データが畳み込みのサイズを反映したチャンクで処理される。例えば、一態様では、CNNステージで128個の並列フィルタを用いた3×3×16の畳み込みは、コア計算要素が計算するために3×3×16のデータチャンクを必要とし、128個の並列フィルタに対応する128のデータポイント(例えば、各並列フィルタに対して1つ)を計算した後、次のセットの128の出力ポイントを生成するために3×3×16データの次のチャンクを使用する必要が生じるであろう。畳み込みが1×1の畳み込みである場合、各セットの3×3×16のデータポイントは一意である。しかしながら、この場合、3×3フィルタであるため、後続の3×3×16のデータブロック間でデータポイントが重複する結果となる。図7は、サポートされる様々なモードを示している。これにより、データ読み取り動作の繰り返しを防止することができる。しかしながら、この例では、2×3×16の重複があり、1×3×16の新しいデータポイント(例えば、図7のモード3)のみをインテリジェントメモリバッファから読み出す必要がある。しかしながら、フィルタのサイズが3×3ではなく1×1である場合、この例は図7のモード1と同様である。これにより、最適なメモリ読み取り動作が確保され、最適な読み取り電力を保証することができる。
(5)一態様では、任意の時点で畳み込みを実行するために、フィルタの次元と同じ数の行データのみが、入力フレームに対して計算を開始するために必要とされる可能性がある。例えば、3×3の畳み込みは、任意の時点で深さデータポイントとともに3ラインを格納することのみを必要とし、それは次の入力行データによって上書きされ、さらに次の入力行データによって上書きされる。インテリジェントメモリバッファの連続メモリにより、任意の時点で保存する必要があるラインバッファの総数の使用を最適化することができ、同時に、読み取りおよび書き込みポートを通じて、多数のコア計算要素間で共有リソースを提供することができる。同時に、これにより、フレームデータ全体をメモリモジュール内に格納するオプションも提供される。これは、デバッグに使用したり、後で使用されるフレーム全体の中間ストレージを含むCNNネットワークに使用したりすることができる。これにより、任意のCNNステージで、勿論メモリ全体の範囲内で、必要なデータの次元に適応するように、インテリジェントメモリバッファに柔軟性が提供される。例えば、コンパイル時にコンパイラは、インテリジェントメモリバッファで利用可能な総メモリのサイズに基づいて、単一のインテリジェントメモリバッファでサポートできるCNN畳み込みの数を決定することができる。この決定は、必要なデータ処理レートにも影響される。
(6)一態様では、インテリジェントメモリバッファを構成可能なCNNプロセッサのコアコンポーネントと見なすことができる。それは、コア計算要素にデータを提供する役割を果たすとともに、次の畳み込みモジュールのためにコア計算要素からメモリに計算結果を書き戻す役割も果たす。
(7)一態様では、インテリジェントメモリバッファの読み取りポート毎に複数のコア計算要素があり、コア計算要素の各々が、インテリジェントメモリバッファの書き込みポートのセットにのみアクセスすることができる。インテリジェントメモリバッファとコア計算要素との間の接続は、実装されるCNNのデータフローグラフに基づいて決定される。これは、コンパイル時に決定することができ、それにより、所与のCNNの実行時にモジュール間のこの接続を動的に変更する必要がなくなる。この固定された接続により、電力消費(そうでなければ接続を常に切り替えることと、命令セットアーキテクチャを使用する従来のプロセッサに典型的である、実行時に接続を変更する命令を格納する機構によって消費されるであろう電力消費)が著しく減少する。
図19は、本開示のいくつかの態様に係る構成可能なCNNプロセッサにマッピングされる第1の例示的なCNN(ケース1)を示すブロック図である。
図20は、本開示のいくつかの態様に係る、図19の第1の例示的なCNNを使用する構成可能なCNNプロセッサ(ケース1)の結果としてのマッピングを示すブロック図である。一態様において、図20は、畳み込み変換ケース1を使用して例示的なCNNデータフローグラフをマッピングする一例として見ることができる。図19および図20の例は、図15のケース1に示す変換の使用を強調することを意図している。図20は、ステージ2において、図19のCNNが、特定の仮想的なデータレートを満たすために10個のコア計算要素に分割されていることを示している。図20のステージ3では、コア計算要素が2つの部分に分割され、各々が32の並列フィルタを計算する(例えば、合計64個の総出力チャネルで、5個のコア計算モジュールにわたって計算される)。
図21は、本開示のいくつかの態様に係る構成可能なCNNプロセッサにマッピングされる第2の例示的なCNN(ケース2)を示すブロック図である。
図22は、本開示のいくつかの態様に係る、図21の第2の例示的なCNNを使用する構成可能なCNNプロセッサ(ケース2)の結果としてのマッピングを示すブロック図である。図22は、畳み込み変換ケース2を使用する例示的なCNNデータフローグラフのマッピングとして見ることができる。図19および図20の例は、ケース1の変換を示すことを意図しており、図21および図22の例は、ケース2の変換を示すことを意図しており、図23および図24の例は、ケース3の変換を示すことを意図している。図22に示すCNNのステージ2は、図15に示すケース2の変換を示している。2つの変換の違いは、図20と図22ではっきりと確認することができる。より具体的には、図20のステージ2はインテリジェントメモリバッファの追加の書き込みポートを使用する一方、図22の実装はより多くのコア計算モジュール間の通信リソースを利用する。
図23は、本開示のいくつかの態様に係る構成可能なCNNプロセッサにマッピングされる第3の例示的なCNN(ケース3)を示すブロック図である。
図24は、本開示のいくつかの態様に係る、図23の第3の例示的なCNNを使用する構成可能なCNNプロセッサ(ケース3)の結果としてのマッピングを示すブロック図である。図24は、畳み込み変換ケース3を使用して例示的なCNNデータフローグラフをマッピングする一例として見ることができる。図24のステージ3は、図15のケース3に示す変換の使用を示している。ステージ3は、5×5の畳み込みを使用する。5×5の畳み込みは、コア計算要素の2×2アレイに分散される。基本的に、ハードウェアは6×6の畳み込みを実装している。高次は常に、ゼロを挿入した低次のフィルタを実装することができる。図24のステージ3は、ケース3で示す変換を実装しているだけでなく、ケース2で示す変換と組み合わせている。
構成可能なCNNプロセッサを組み込んだユースケース
図25は、本開示のいくつかの態様に係る、MIPIアプリケーション2501における構成可能なCNNプロセッサの第1のユースケース2500を示すブロック図である。MIPIまたはモバイル・インダストリ・プロセッサ・インターフェイスは、モバイルエコシステム、特にスマートフォンのための技術仕様であるが、他のモバイルインダストリも含まれる。カメラシリアルインターフェース(CSI)は、モバイル・インダストリ・プロセッサ・インターフェイス(MIPI)アライアンスの仕様である。これは、カメラとホストプロセッサの間のインターフェイスを定義している。MIPIの態様は、図25の様々なコンポーネントに組み込まれている。
本開示は、一般にデータを処理し、分析を生成することができるシステムを説明する。例示的なアプリケーションの1つは、画像/ビデオデータを処理することである。分析は、シーンからのオブジェクト検出/認識、低照度条件からの画像強調などのタスクの形態で行うことができ、あるいはフレーム単位またはビデオシーケンスとして定義されたフレーム群のいずれかで計算されることを意図したインテリジェントタスクの任意の形態で行うことができる。ビデオシーケンスの認識は、行動認識などの時間的依存性を含むことができる。
図25は、イメージセンサデータ2504を入力し、プログラマブル機能アレイ(PFA)2502でそれを(例えば、MIPI D-PHYおよびMIPI CSI-Rxを介して受信した後に)処理し、かつ(1)SPI、UART、I2C、または別のそのようなインタフェースなどの標準通信バスを介して、計算された分析をアプリケーションプロセッサ2506に送るオプション、または(2)MIPI-CSI出力バス上の計算データを(例えば、出力時にMIPI CSI-TxおよびMIPI D-PHYを介して送られるパケットに)直接組み込むオプションを有する、MIPI2501用に構成されたそのようなCNNプロセッサを説明する。MIPI D-PHYは、主にカメラやディスプレイをアプリケーションプロセッサに相互接続するために使用される物理レイヤコンポーネントであり、MIPIアライアンスによって定義されている。MIPI CSI(MIPI CSI-Rxまたは受信コンポーネントとMIPI CSI-Txまたは送信コンポーネントを含む)は、主にデバイス内のカメラをアプリケーションプロセッサまたは画像信号プロセッサに相互接続するために使用されるカメラシリアルインターフェースであり、MIPIアライアンスによって定義されている。
PFA/CNNサブプロセッサ2502の処理された分析は、2つの形態で提供することができる。一形態では、出力分析は、分類結果などの少数のデータワードによって定義することができ、その場合、MIPI規格の一部としてのI2Cバスを含む標準シリアル通信バス(SPI、UART、I2C)経由でアプリケーションプロセッサ2506に送信することができる。他の形態では、処理された出力は、MIPI-CSIバス(例えば、メインデータバス)を介して送信される大量の出力データで構成することができる。この場合、PFA/CNNサブプロセッサ2502は、MIPI-CSIデータ上に分析を直接埋め込むことができ、アプリケーションプロセッサ2506は、MIPI-CSIバスから分析を抽出する。これにより、CNNプロセッサ2501とアプリケーションプロセッサ2506との間でデータを伝送するための高度に最適化されたシステムが得られる。アプリケーションプロセッサ2506が特にCNNプロセッサ2501にデータを転送する必要性を排除することにより、システム全体の電力を最小化することができる。これにより、システム全体のレイテンシをさらに低減することができる。スリープモードでは、デフォルトのデータフロー経路は、PFA/CNNサブプロセッサ2502をバイパスして、MIPI-CSIバスの入力から出力までである。これにより、CNNプロセッサ2501のための電力が、PFA/CNNサブプロセッサ2502が計算に使用されるときにのみ、消費されるか、または主に消費されることが保証される。一態様では、MIPIバスを、フレキシブルケーブルを使用して実装することができる。そのような場合、CNNプロセッサ2501は、バスに沿って、そしてケーブルに沿って直列に配置することができる。一態様において、CNNサブプロセッサ2502は、本明細書に記載のPFAのいずれかを用いて実装することができる。一態様では、CNNサブプロセッサ2502は、上述したような従来の命令セットアーキテクチャプロセッサ(例えば、ロード/ストアプロセッサ)を使用して実装することができる。
一態様では、CNNサブプロセッサ2502は、MIPIを介して画像カメラセンサ2504から画像データを受信することができる。その後、CNNサブプロセッサ2502は、画像データに基づいて処理されたデータを生成することができる。処理されたデータは、分析または他の統計の形式をとることができる。次いで、CNNサブプロセッサ2502は、処理されたデータをアプリケーションプロセッサ(例えば、MIPIバス上またはSPI/I2C/UARTバス上)に提供することができる。
図26は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサ(2601(1)~2601(N)、まとめて2601と呼ぶ)の第2のユースケース2600を示すブロック図である。図26は、複数の構成可能なCNNプロセッサ2601が、画像カメラセンサ2604とアプリケーションプロセッサ2606との間のMIPIバス上で直列にカスケード接続されている実装を説明している。この実装は、(例えば、図5に見られるように)単一のCNNプロセッサを使用して計算することが困難または不可能である、より大きな画像分析関数を計算するための柔軟性を提供する。一態様では、第2のユースケース2600が、PFA/CNNサブプロセッサ2602をそれぞれ含む複数のCNNプロセッサ2601を備える以外は、第1のユースケース2500と実質的に同じように動作する。別の態様では、直列に結合された複数のCNNプロセッサが、2601のCNNプロセッサの各々で固有のアプリケーションを実装することができる。このユースケースでは、データがCNNプロセッサの各々を通って流れる際に遅延が殆どなく、入力データがMIPIバスを介してCNNプロセッサに到達するため、各CNN計算の開始間のレイテンシを最小限に抑えて複数のCNNをカスケードで実装することができる。
CNNプロセッサ2601の各々は、MIPIバス上にあり、入力から出力へのMIPIバスのパススルーを有している。各々は、MIPIバスからデータを読み取るとともに、入力の到着から出力が有効になるまで間のレイテンシを最小限に抑えて、入力から出力までのMIPIデータのフローを引き起こすかまたは有効にしている。これにより、入力から最初のCNNプロセッサ2601(1)と比較すると、下流のCNNプロセッサ2601(x~N)は、アプリケーションプロセッサがダイレクトメモリ転送(DMA)を介してCNNコプロセッサの各々にデータを送信していたシステムと比較して、待ち時間なしに入力画像データに対して処理を開始することが可能になる。そのようなシステムでは、複数のDMAチャンネルを並列に持つ必要があり、電力と面積の点でコストがかかる可能性がある。別の方法は、単一チャンネルDMAを使用し、データを各コプロセッサにシリアル転送することであるが、これは時間のかかるプロセスであり、あるCNNコプロセッサの開始時間と別のコプロセッサの開始時間との間に大きなレイテンシが生じるだろう。
図27は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサ2701の第3のユースケース2700を示すブロック図である。図27は、MIPIソース2704で始まるMIPIバスが、PFA(例えば、構成可能なCNNサブプロセッサ)2702をバイパスして、MIPIシンク2706を介して、アプリケーションプロセッサに直接データを送り、同時に、構成可能なCNNサブプロセッサ2702がMIPIデータを並行して処理することができる方法を示している。これは、少なくとも部分的には、マルチプレクサ2708の使用によって可能となる。
図28は、本開示のいくつかの態様に係る、MIPIアプリケーションにおける構成可能なCNNプロセッサ2801の第4のユースケース2800を示すブロック図である。図28は、構成可能なCNNプロセッサ2801の内部アーキテクチャを示す、より詳細な図である。CNNプロセッサ2801は、構成可能なPFA/CNNサブプロセッサ2802、マイクロコントローラ(図示のようにRISC-V)2804、MIPIサブシステム、およびUART、GPIO、SPI、I2Cなどの標準IOを含む。システム内(CNNサブプロセッサとRISC-Vマイクロコントローラの両方)のすべてのメモリは、メモリマッピングが可能であり、内部メモリバスを駆動する様々なマスタによってアクセス可能である。PFA/CNNサブプロセッサ2802のプログラミングは、2つの異なるモードのうちの一方、すなわち、(1)SPI FLASHからCNNプロセッサを構成する内部マイクロプロセッサによって、または(2)メモリバス上のマスタデバイスであるSPI、I2C、UARTなどの標準IOインターフェースを介してアプリケーションプロセッサ(図示しないが、おそらくMIPIシンクに結合されている)によって、行うことができる。第2のモードでは、SPI FLASHを省略することができる。RISC V内部プロセッサ2804は、様々なハウスキーピング機能を担い、必要に応じて計算にも使用することができる。それは、外部とのインターフェイスのためにCNNサブプロセッサ2802の状態を追跡する。最後に、RISC-V2804は、実行時にシステムで発生し得るあらゆる種類の例外を柔軟に処理することもできる。一態様では、RISC-Vプロセッサを、オープンソースライセンスでカバーされる命令セットアーキテクチャコントローラとすることができ、それにより容易に採用することができる。
一態様において、図28の構成可能なCNNプロセッサ2801は、異なるユースケースとしてではなく、MIPIを有する先の図面(例えば、図27の2701、図26の2601、または図25の2501)の単なる詳細な説明と見なすことができる。RISC-Vプロセッサはオプションである。RISC-Vプロセッサを使用しないユースケースでは、アプリケーションプロセッサ(図28には示されていないが、図25の2506を参照)は、SPI/I2C/UARTバスを介して構成可能なCNNサブプロセッサ2802を構成することができる。その場合、CNNサブプロセッサの出力は、アプリケーションプロセッサによって読み取られるか、またはCNNサブプロセッサは、出力をMIPIフレームに埋め込み、それらをアプリケーションプロセッサに送信することができる。一態様では、RISC-Vプロセッサを使用することで、システムの柔軟性が高まる。電源投入時に、アプリケーションプロセッサのプログラミングを待たずに、SPI-FLASHから直接PFA/CNNサブプロセッサ2802をプログラミングすることが可能である。オープンスタンダードのRISCプロセッサであるRISC-Vプロセッサは、CNNサブプロセッサの状態を把握することができ、必要に応じて、計算の目的にも使用することができる。また、CNNプロセッサ2801およびチップ全体のテストにも使用することができる。
図29は、本開示のいくつかの態様に係る、ダイレクトセンサインターフェースアプリケーションにおける構成可能なCNNプロセッサ2902の第5のユースケース2900を示すブロック図である。図29では、第5のユースケースが、構成可能なCNNプロセッサ2902を使用してセンサデータを直接処理する。CNNプロセッサ2902のサブコンポーネントである、センサへのMIPIインタフェースは、それを達成するのを助ける。図29は、CNNプロセッサ2902がカメラセンサモジュールと直接インターフェースして、WiFi送信機2904を介して直接送信される画像/ビデオ分析を生成するユースケースの一例を示している。計算された画像/ビデオ分析(例えば、センサからの画像データに基づく分類データであり得る出力)は、入力データよりも著しく(例えば、数桁)小さく、WiFiを介して伝送される。これにより、消費電力が大幅に低下し、ダイレクトセンサインターフェースデバイスのバッテリ寿命が向上し、当該デバイスは、任意のデバイス電源(例えば、バッテリ)を再充電する前に数ヶ月間使用可能な状態を維持することができる。このユニットの他の利点は、CNNプロセッサが画像を処理するためにフレーム全体を保存する必要がなく、実際の画像をデジタル形式で保存する必要がないことである。計算された統計値をWiFiで送信するのみである。このようなデバイスは、いかなる媒体にも画像またはビデオを記録しないため、プライバシー法の潜在的な抵触を回避することができる。
一態様では、デバイスは、処理されたデータが関連する場合にのみWiFiを介して送信することができ、その送信は、意図された統計(例えば、少数のデータワード)のみを含み、それによって全体の送信帯域幅を減少させることができる。このため、このユースケースおよび/または実装は、何千ものデバイスをWiFiを介して接続することを可能にし、その結果、大規模な展開が容易または可能になり、低コストで実装することができる。
一態様では、WiFi送信機2904を、無線通信に利用可能な多数の無線プロトコルのうちの任意の1つをサポートするより汎用的な無線送信機によって置き換えることができる。そのような場合、WiFiを使用するものとして上述した通信は、代わりに、WiFi以外の無線プロトコルのいずれかを使用して無線で実行することができる。
図30は、本開示のいくつかの態様に係る、MIPIアプリケーションにおいて構成可能なCNNプロセッサを動作させるためのプロセス3000を示すフローチャートである。一態様では、MIPI用に構成された構成可能なCNNプロセッサ(例えば、2501、2601、2701、2801、または2901)のいずれかが、このプロセスを実行することができる。ブロック3002では、プロセスが、画像データを(例えば、図25のMIPIを介して画像カメラセンサ2504から)受信する。ブロック3004では、プロセスが、画像データに基づいて処理されたデータを生成する。処理されたデータは、分析または他の統計(例えば、画像データに基づく分類データを含む)の形態をとることができる。ブロック3006では、プロセスが、処理されたデータをアプリケーションプロセッサ(例えば、MIPIバス上またはSPI/I2C/UARTバス上)、または別のMIPIシンクに提供する。
追加の態様
一態様において、本明細書に記載の構成可能なCNNプロセッサは、様々な利点を提供することができる。例えば、アクティブメモリバッファとコア計算要素との間のインターフェースは、非常に弾力的であり、FIFOによって制御され得る。これにより、それらモジュールの各々は、その動作に影響を与えることなく、互いに非同期で実行することができる。それらFIFOの各々は、浅い深さであり、典型的には8~16ワードの深さのオーダーであり得る。その結果、各コア計算要素は、入出力FIFOとパイプラインレジスタ以外の大きなローカルメモリを使用することがなくなる。これは、コア計算要素とアクティブメモリバッファとの間のデータフローが、コンパイル時に静的に定義できるためである。プロセッササブシステム内の様々なコンポーネントを非同期に相互作用させる能力は、チップ設計内のタイミングクロージャなどの問題を排除するのに役立ち、タイミングを近付けるためにチップトップレベルで高コストな電力消費型クロックバッファ(例えば、至る所にある)を必要としないことによって、全体の電力を節約するのに役立つ。
本明細書に記載の構成可能なCNNプロセッサの別の利点は、アクティブ/インテリジェントメモリバッファを含む。一態様では、浅い深さの入力および出力FIFOを有し、システムの唯一の大きなメモリはその内部メモリアレイであり、これは単一の連続メモリとすることができ、複数のポートを含むことができる。一例では、連続メモリが2ポートの連続メモリアレイである。このような大きさの連続メモリアレイを1か所でのみ使用することは、チップトップレベルでタイミングを近付けるのに役立ち、チップ全体の設計を補助する。
本明細書に記載の構成可能なCNNプロセッサの別の利点は、汎用性を含む。例えば、所与のCNNのデータフローグラフが単一チップに収まらない場合、データフローグラフを分割し、複数のチップにまたがって実装することができる。複数のチップ間の通信は、チップ境界を越えて第1のチップのアクティブメモリバッファの出力を第2のチップのアクティブメモリバッファの入力に接続することによって可能となる。メモリバッファの出力ポートおよび入力ポートに存在するエラスティックFIFOにより、チップ間通信の実装が非常に柔軟になり、シリアルインターフェースまたはパラレルインターフェースのいずれかによって実装することが可能である。
一態様では、複数のCNNを、本明細書で説明するように、構成可能なCNNプロセッサ上に並列に実装することができる。一態様において、実装は、実装するCNNの数に制限されるものではないが、むしろ、複数のCNNを並列に実装するために利用可能な総リソースに制限があり得る。
一態様では、入力/予め選択されたCNNまたはCNN記述が、高水準プログラミング言語であるPythonで提供され、コンパイラが、構成可能なCNNプロセッサのための適切な構成を生成する。
本明細書に記載の例は、本開示の特定の概念を説明するために提供されている。当業者であれば、それらは本質的に単なる例示であり、他の例が本開示の範囲および添付の特許請求の範囲に含まれる可能性があることを理解するであろう。本明細書の教示に基づいて、当業者は、本明細書に開示の一態様を他の任意の態様から独立して実施することができ、それらの態様のうちの2以上を様々な方法で組み合わせることができることを理解するはずである。例えば、本明細書に記載の任意の数の態様を使用して、装置を実装することができ、あるいは方法を実施することができる。さらに、他の構造および機能を使用して、または本明細書に記載の態様の1または複数に加えて又はそれ以外の他の構造および機能を使用して、そのような装置を実装することができ、あるいはそのような方法を実施することができる。
多くの態様は、例えばコンピューティングデバイスの要素によって実行される一連の動作に関して説明される。本明細書に記載の様々な動作は、特定の回路、例えば、中央処理装置(CPU)、グラフィック処理装置(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の様々なタイプの汎用または専用のプロセッサまたは回路によって、1または複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行できることが認識されよう。さらに、本明細書に記載のそれらの一連の動作は、実行時に関連するプロセッサに本明細書に記載の機能を実行させるコンピュータ命令の対応するセットを格納した任意の形式のコンピュータ可読記憶媒体内で完全に具現化されるとみなすことができる。したがって、本開示の様々な態様は、多数の様々な形態で具現化され得るが、それらのすべてが、請求された主題の範囲内にあることが企図されている。さらに、本明細書に記載の各態様について、そのような態様の対応する形態は、例えば、記載の動作を実行「するように構成されたロジック」として本明細書で説明され得る。
当業者であれば、情報および信号を、様々な異なる技術および手法のいずれかを使用して表すことができることを理解するであろう。例えば、上記説明を通じて言及されるデータ、命令、コマンド、情報、信号、ビット、記号およびチップは、電圧、電流、電磁波、磁場または粒子、光学場または粒子、またはそれらの任意の組合せによって表すことができる。
さらに、当業者は、本明細書に開示の態様に関連して説明された様々な例示的な論理ブロック、モジュール、回路およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェアまたは両者の組合せとして実装され得ることを理解するであろう。ハードウェアとソフトウェアのこの互換性を明確に説明するために、様々な例示的なコンポーネント、ブロック、モジュール、回路およびステップが、全体としてそれらの機能の観点から上述されている。そのような機能がハードウェアとして実装されるかソフトウェアとして実装されるかは、具体的なアプリケーションとシステム全体に課される設計上の制約に依存する。当業者は、記載の機能を各具体的なアプリケーションに対して様々な方法で実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
上述したコンポーネント、ステップ、特徴および/または機能のうちの1または複数は、再配置し、かつ/または単一のコンポーネント、ステップ、特徴または機能に結合することができ、または複数のコンポーネント、ステップまたは機能に具現化することができる。また、本明細書に開示の新規の特徴から逸脱することなく、追加の要素、コンポーネント、ステップおよび/または機能を追加することができる。上述した装置、デバイスおよび/またはコンポーネントは、本明細書に記載の方法、特徴またはステップのうちの1または複数を実行するように構成することができる。また、本明細書に記載の新規のアルゴリズムは、ソフトウェアに効率的に実装され、かつ/またはハードウェアに組み込まれ得る。
開示の方法におけるステップの具体的な順序または階層は、例示的なプロセスの一例であることを理解されたい。設計上の望ましさに基づいて、方法におけるステップの具体的な順序または階層を再配置できることを理解されたい。添付の方法の請求項は、様々なステップの要素を例示的な順序で提示しており、そこに具体的に記載されていない限り、提示された具体的な順序または階層に限定されることを意図するものではない。
本明細書に開示の態様に関連して説明された方法、シーケンスまたはアルゴリズムは、ハードウェアで直接、プロセッサによって実行されるソフトウェアモジュールで、またはそれら2つの組合せで具現化されることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROMまたは当該技術分野で知られている任意の他の形態の記憶媒体に常駐することができる。記憶媒体の一例は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合されている。代替的には、記憶媒体はプロセッサと一体であってもよい。
本明細書では、「例示的」という語が、「例、実例、または例示として機能する」という意味で使用される。本明細書において「例示的」として説明される任意の態様は、必ずしも他の態様よりも好ましい又は有利であると解釈されるものではない。同様に、「態様」という用語は、すべての態様が検討した特徴、利点または動作モードを含むことを必要とするものではない。
本明細書で使用される用語は、特定の態様を説明することのみを目的としており、その態様を限定することを意図するものではない。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈が明らかにそうでないことを示さない限り、複数形も含むことが意図されている。さらに、本明細書で使用される場合、「comprise」、「comprising」、「includes」または「including」という用語は、述べられた特徴、整数、ステップ、操作、要素またはコンポーネントの存在を特定するが、1または複数の他の特徴、整数、ステップ、操作、要素、コンポーネントまたはそれらの群の存在または追加を排除しないことが理解されよう。さらに、「または」という語はブール演算子「OR」と同じ意味を持ち、すなわち、特に明記しない限り、「いずれか」および「両方」の可能性を包含し、「排他的論理和」(「XOR」)に限定されるものではないことを理解されたい。また、隣接する2つの語の間の「/」という記号は、特に明記しない限り、「または」と同じ意味を有する。また、「接続されている」、「結合されている」、「通信している」などの表現は、特に明記しない限り、直接的な接続に限定されるものではない。
本明細書における、「第1」、「第2」などの指定を用いた要素に対する言及は、一般に、それらの要素の数量または順序を制限するものではない。むしろ、それらの指定は、2以上の要素または要素のインスタンスを区別する便利な方法として本明細書で使用され得る。したがって、第1および第2の要素への言及は、そこで2つの要素のみが使用され得ること、または第1の要素が何らかの方法で第2の要素に先行しなければならないことを意味するものではない。また、特に明記しない限り、要素のセットは1または複数の要素を含むことができる。さらに、本明細書または特許請求の範囲で使用される「a、b、またはcの少なくとも1つ」または「a、b、c、またはそれらの任意の組合せ」という形式の用語は、「aまたはbまたはc、またはそれら要素の任意の組合せ」を意味する。例えば、この用語は、a、またはb、またはc、またはaとb、またはaとc、またはaとbとc、または2a、または2b、または2c、または2aとbなどを含むことができる。
本明細書において、「特定する」という用語は、多種多様な動作を包含する。例えば、「特定する」ことは、計算すること、演算すること、処理すること、導き出すこと、調査すること、検索すること(例えば、テーブル、データベースまたは他のデータ構造で検索すること)、確認すること等を含むことができる。また、「特定する」は、受信すること(例えば、情報を受信すること)、アクセスすること(例えば、メモリ内のデータにアクセスすること)等も含むことができる。また、「特定する」ことは、求めること、選択すること、選ぶこと、確立すること等も含むことができる。
上述した開示は例示的な態様を示しているが、添付の特許請求の範囲から逸脱することなく、本明細書において様々な変更および修正が可能であることに留意されたい。また、本明細書に記載の態様に係る方法の請求項の機能、ステップまたは動作は、特に明記しない限り、特定の順序で実行する必要はない。さらに、要素が単数形で記載または請求されることがあるが、単数形への限定が明示されていない限り、その複数形が企図されている。

Claims (37)

  1. 畳み込みニューラルネットワーク(CNN)の実装専用の構成可能なプロセッサであって、
    複数のコア計算回路要素であって、各々が、予め選択されたデータフローグラフに従ってCNN関数を実行するように構成される、複数のコア計算回路要素と、
    アクティブメモリバッファと、
    前記アクティブメモリバッファと前記複数のコア計算回路要素との間の複数の接続であって、各々が、前記予め選択されたデータフローグラフに従って確立される、複数の接続と、
    前記複数のコア計算回路要素間の複数の接続であって、各々が、前記予め選択されたデータフローグラフに従って確立される、複数の接続とを備え、
    前記アクティブメモリバッファが、前記予め選択されたデータフローグラフに従って、前記アクティブメモリバッファを介して前記複数のコア計算回路要素間でデータを移動させるように構成されていることを特徴とする構成可能なプロセッサ。
  2. 請求項1に記載の構成可能なプロセッサにおいて、
    前記予め選択されたデータフローグラフが、予め選択されたCNNに基づいていることを特徴とする構成可能なプロセッサ。
  3. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路要素の各々が、命令セットを使用せずに、前記予め選択されたデータフローグラフに従ってCNN関数を実行するように構成されていることを特徴とする構成可能なプロセッサ。
  4. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路要素のうちの少なくとも2つが、互いに非同期で動作するように構成されていることを特徴とする構成可能なプロセッサ。
  5. 請求項1に記載の構成可能なプロセッサにおいて、
    前記アクティブメモリバッファおよび前記複数のコア計算回路要素の各々が、互いに非同期で動作するように構成されていることを特徴とする構成可能なプロセッサ。
  6. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路要素の各々が、CNN関数を実行する専用のものであることを特徴とする構成可能なプロセッサ。
  7. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路要素の各々が、前記構成可能なプロセッサの実行時間の前に、CNN関数を実行するように構成されていることを特徴とする構成可能なプロセッサ。
  8. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路要素の各々が、CNN関数のレイヤを計算するように構成されていることを特徴とする構成可能なプロセッサ。
  9. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路素子の各々が、CNN全体を計算するように構成されていることを特徴とする構成可能なプロセッサ。
  10. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路素子の各々が、推論とトレーニングの両方のためにCNN関数を実行するように構成されていることを特徴とする構成可能なプロセッサ。
  11. 請求項1に記載の構成可能なプロセッサにおいて、
    前記複数のコア計算回路要素の各々が、CNN関数の実行に使用される重みを格納するように構成されたメモリを備えることを特徴とする構成可能なプロセッサ。
  12. 請求項1に記載の構成可能なプロセッサにおいて、
    前記アクティブメモリバッファと前記複数のコア計算回路要素との間の複数の接続が、コンパイル時に確立されて、当該構成可能なプロセッサの実行時に固定され、
    前記複数のコア計算回路要素間の複数の接続が、前記コンパイル時に確立されて、前記実行時に固定されることを特徴とする構成可能なプロセッサ。
  13. プロセッサアレイであって、
    請求項1に記載の複数の構成可能なプロセッサと、
    相互接続回路と、
    前記複数の構成可能なプロセッサおよび/または前記相互接続回路間の複数の接続であって、各々が、前記予め選択されたデータフローグラフに従って確立される、複数の接続とを備えることを特徴とするプロセッサアレイ。
  14. システムであって、
    モバイル・インダストリ・プロセッサ・インタフェース(MIPI)ソースと、
    MIPIシンクと、
    前記MIPIソースと前記MIPIシンクとの間に結合されたMIPIバスと、
    請求項1に記載の構成可能なプロセッサであって、前記MIPIバス上のすべてのデータが当該構成可能なプロセッサを通過するように、前記MIPIバスに沿って直列に配置される構成可能なプロセッサとを備えることを特徴とするシステム。
  15. 請求項14に記載のシステムにおいて、
    SPI、I2Cインターフェース、またはUARTインターフェースのうちの少なくとも1つを含む非MIPI出力インターフェースをさらに備え、
    前記構成可能なプロセッサが、前記非MIPI出力インターフェースまたは前記MIPIバスのいずれかを使用して、外部デバイスに情報を送信するように構成されていることを特徴とするシステム。
  16. システムであって、
    センサデータを生成するように構成されたセンサと、
    請求項1に記載の構成可能なプロセッサであって、前記センサに直接結合され、前記センサデータに基づいて処理されたデータを生成するように構成された構成可能なプロセッサと、
    前記構成可能なプロセッサに直接結合され、前記処理されたデータの少なくとも一部を送信するように構成された無線送信機とを備えることを特徴とするシステム。
  17. 請求項16に記載のシステムにおいて、
    前記センサデータが、画像データを含み、
    前記処理されたデータが、前記画像データに基づいて生成された分類データを含み、
    前記無線送信機が、前記分類データを送信するように構成されていることを特徴とするシステム。
  18. 畳み込みニューラルネットワーク(CNN)の実装専用の構成可能なプロセッサを構成する方法であって、
    予め選択されたデータフローグラフを受信するステップと、
    複数のコア計算回路要素の各々を、前記予め選択されたデータフローグラフに従ってCNN関数を実行するようにプログラミングするステップと、
    前記予め選択されたデータフローグラフに従って、アクティブメモリバッファをプログラミングするステップと、
    前記予め選択されたデータフローグラフに従って、前記アクティブメモリバッファと前記複数のコア計算回路要素との間の複数の接続をプログラミングするステップと、
    前記予め選択されたデータフローグラフに従って、前記複数のコア計算回路要素間の複数の接続をプログラミングするステップと、
    前記予め選択されたデータフローグラフに従って、前記メモリバッファを介して前記複数のコア計算回路要素間でデータを移動させるように、前記アクティブメモリバッファをプログラミングするステップとを備えることを特徴とする方法。
  19. 請求項18に記載の方法において、
    プログラミング動作の各々が、前記構成可能なプロセッサの実行時間の前に実行されることを特徴とする方法。
  20. 請求項18に記載の方法において、
    前記複数のコア計算回路要素を動作させて、命令セットを使用せずに、CNN関数を実行するステップと、
    命令セットを使用せずに、前記アクティブメモリバッファを動作させるステップとをさらに含むことを特徴とする方法。
  21. 請求項18に記載の方法において、
    前記予め選択されたデータフローグラフが、予め選択されたCNNに基づいていることを特徴とする方法。
  22. 請求項18に記載の方法において、
    前記複数のコア計算回路要素のうちの少なくとも2つを互いに非同期で動作させるステップをさらに含むことを特徴とする方法。
  23. 請求項18に記載の方法において、
    前記アクティブメモリバッファおよび前記複数のコア計算回路要素の各々を互いに非同期で動作させるステップをさらに含むことを特徴とする方法。
  24. 請求項18に記載の方法において、
    前記複数のコア計算回路要素の各々が、CNN関数を実行する専用のものであることを特徴とする方法。
  25. 請求項18に記載の方法において、
    前記構成可能なプロセッサの実行時に、前記複数のコア計算回路要素のそれぞれの1つにおいて、CNN関数を実行するステップをさらに含むことを特徴とする方法。
  26. 請求項18に記載の方法において、
    前記構成可能なプロセッサの実行時に、前記複数のコア計算回路要素のそれぞれの1つにおいて、CNN関数のレイヤを計算するステップをさらに含むことを特徴とする方法。
  27. 請求項18に記載の方法において、
    前記構成可能なプロセッサの実行時に、前記複数のコア計算回路要素のうちの少なくとも1つにおいてCNN全体を計算するステップをさらに含むことを特徴とする方法。
  28. 請求項18に記載の方法において、
    前記アクティブメモリバッファと前記複数のコア計算回路要素との間の複数の接続が、コンパイル時にプログラムされ、前記構成可能なプロセッサの実行時に固定され、
    前記複数のコア計算回路要素間の複数の接続が、前記コンパイル時にプログラムされ、前記実行時に固定されることを特徴とする方法。
  29. 請求項18に記載の方法において、
    前記複数のコア計算回路要素の各々が、推論とトレーニングの両方のためにCNN関数を実行するように構成されていることを特徴とする方法。
  30. 請求項18に記載の方法において、
    前記複数のコア計算回路要素の各々が、CNN関数の実行に使用される重みを格納するように構成されたメモリを備えることを特徴とする方法。
  31. 畳み込みニューラルネットワーク(CNN)の実装専用の構成可能なプロセッサであって、
    予め選択されたデータフローグラフに従ってCNN関数を実行するための複数の手段と、
    データを格納するための手段と、
    前記予め選択されたデータフローグラフに従って、前記データを格納するための手段と前記CNN関数を実行するための複数の手段との間の接続を確立するための手段と、
    前記予め選択されたデータフローグラフに従って、前記CNN関数を実行するための複数の手段間の接続を確立するための手段とを備え、
    前記データを格納するための手段が、前記予め選択されたデータフローグラフに従って、前記データを格納するための手段を介して、前記CNN関数を実行するための複数の手段間でデータを移動させるための手段を備えることを特徴とする構成可能なプロセッサ。
  32. 畳み込みニューラルネットワーク(CNN)の実装専用の構成可能なプロセッサであって、
    モバイル・インダストリ・プロセッサ・インタフェース(MIPI)ソースに直接結合されるように構成されたMIPI入力と、
    アプリケーションプロセッサに直接結合されるように構成されたMIPI出力と、
    前記MIPI入力と前記MIPI出力との間に結合されたMIPIバスと、
    前記MIPIバス上のすべてのデータが前記構成可能なプロセッサを通過するように、前記MIPIバスに沿って直列に配置された構成可能なCNNサブプロセッサであって、
    前記MIPIソースから画像データを受信し、
    前記画像データに基づいて処理されたデータを生成し、かつ、
    前記処理されたデータを前記アプリケーションプロセッサに提供するように構成された構成可能なCNNサブプロセッサとを備えることを特徴とする構成可能なプロセッサ。
  33. 請求項32に記載の構成可能なプロセッサにおいて、
    前記構成可能なCNNサブプロセッサが、予め選択されたCNNを用いて前記画像データに基づいて前記処理されたデータを生成するようにさらに構成されていることを特徴とする構成可能なプロセッサ。
  34. 請求項32に記載の構成可能なプロセッサにおいて、
    前記構成可能なCNNサブプロセッサが、カスケード構成にある複数の構成可能なCNNサブプロセッサを含むことを特徴とする構成可能なプロセッサ。
  35. 請求項32に記載の構成可能なプロセッサにおいて、
    前記構成可能なCNNサブプロセッサが、前記MIPIバスを介して前記アプリケーションプロセッサに前記処理されたデータを提供するように構成されていることを特徴とする構成可能なプロセッサ。
  36. 請求項32に記載の構成可能なプロセッサにおいて、
    前記構成可能なCNNサブプロセッサが、
    複数のコア計算回路要素であって、各々が予め選択されたデータフローグラフに従ってCNN関数を実行するように構成された、複数のコア計算回路要素と、
    アクティブメモリバッファと、
    前記アクティブメモリバッファと前記複数のコア計算回路要素との間の複数の接続であって、各々が前記予め選択されたデータフローグラフに従って確立される、複数の接続と、
    前記複数のコア計算回路要素間の複数の接続であって、各々が前記予め選択されたデータフローグラフに従って確立される、複数の接続とをさらに備え、
    前記アクティブメモリバッファが、前記予め選択されたデータフローグラフに従って、前記アクティブメモリバッファを介して前記複数のコア計算回路要素間でデータを移動させるように構成されていることを特徴とする構成可能なプロセッサ。
  37. 請求項32に記載の構成可能なプロセッサにおいて、
    SPI、I2CインターフェースまたはUARTインターフェースのうちの少なくとも1つを含む非MIPI出力インターフェースをさらに備え、
    前記構成可能なプロセッサが、前記非MIPI出力インターフェースまたは前記MIPIバスのいずれかを使用して、前記アプリケーションプロセッサに情報を送信するように構成されていることを特徴とする構成可能なプロセッサ。
JP2022502865A 2019-07-19 2020-07-20 畳み込みニューラルネットワークを実装するための構成可能なプロセッサ Active JP7569109B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962876219P 2019-07-19 2019-07-19
US62/876,219 2019-07-19
US201962941646P 2019-11-27 2019-11-27
US62/941,646 2019-11-27
US202063025580P 2020-05-15 2020-05-15
US63/025,580 2020-05-15
PCT/IB2020/000609 WO2021014215A1 (en) 2019-07-19 2020-07-20 Configurable processor for implementing convolution neural networks

Publications (2)

Publication Number Publication Date
JP2022541899A true JP2022541899A (ja) 2022-09-28
JP7569109B2 JP7569109B2 (ja) 2024-10-17

Family

ID=74193514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022502865A Active JP7569109B2 (ja) 2019-07-19 2020-07-20 畳み込みニューラルネットワークを実装するための構成可能なプロセッサ

Country Status (4)

Country Link
US (1) US20210034958A1 (ja)
JP (1) JP7569109B2 (ja)
CA (1) CA3147392A1 (ja)
WO (1) WO2021014215A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521085B2 (en) * 2020-04-07 2022-12-06 International Business Machines Corporation Neural network weight distribution from a grid of memory elements
US11500680B2 (en) * 2020-04-24 2022-11-15 Alibaba Group Holding Limited Systolic array-friendly data placement and control based on masked write
EP4137913A1 (en) * 2021-08-17 2023-02-22 Axis AB Power management in processing circuitry which implements a neural network
KR20240007495A (ko) * 2022-07-08 2024-01-16 리벨리온 주식회사 뉴럴 코어, 이를 포함하는 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치의 데이터 로드 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110097240A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 광 시리얼라이저, 광 디시리얼라이저, 및 이들을 포함하는 데이터 처리 시스템
JP5904525B2 (ja) 2011-06-24 2016-04-13 国立研究開発法人情報通信研究機構 論理推論システムおよび論理推論方法
US9811775B2 (en) * 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
CN207517054U (zh) * 2017-01-04 2018-06-19 意法半导体股份有限公司 串流开关
US11157806B2 (en) 2017-04-17 2021-10-26 Cerebras Systems Inc. Task activating for accelerated deep learning
JP7014393B2 (ja) 2017-06-15 2022-02-01 公立大学法人会津大学 データ処理装置、及びこれにおけるデータ処理方法
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US10331983B1 (en) * 2018-09-11 2019-06-25 Gyrfalcon Technology Inc. Artificial intelligence inference computing device

Also Published As

Publication number Publication date
JP7569109B2 (ja) 2024-10-17
WO2021014215A1 (en) 2021-01-28
CA3147392A1 (en) 2021-01-28
US20210034958A1 (en) 2021-02-04

Similar Documents

Publication Publication Date Title
JP7569109B2 (ja) 畳み込みニューラルネットワークを実装するための構成可能なプロセッサ
US9535877B2 (en) Processing system with interspersed processors and communication elements having improved communication routing
US20230023303A1 (en) Machine learning network implemented by statically scheduled instructions
US20190138373A1 (en) Multithreaded data flow processing within a reconfigurable fabric
US20180181503A1 (en) Data flow computation using fifos
US11227030B2 (en) Matrix multiplication engine using pipelining
US10997102B2 (en) Multidimensional address generation for direct memory access
US20190057060A1 (en) Reconfigurable fabric data routing
US11934308B2 (en) Processor cluster address generation
Wiangtong et al. Hardware/software codesign: a systematic approach targeting data-intensive applications
JP2020525907A (ja) 高スループットプロセッサ
US20230017778A1 (en) Efficient communication between processing elements of a processor for implementing convolution neural networks
Chai et al. Streaming processors for next-generation mobile imaging applications
CA3174808A1 (en) Efficient communication between processing elements of a processor for implementing convolution neural networks
Izawa et al. A Co-Processor Design for an Energy Efficient Reconfigurable Accelerator CMA
Xue et al. Approach to constructing reconfigurable computer vision system
Izawa et al. International Journal of Networking and Computing–www. ijnc. org ISSN 2185-2839 (print) ISSN 2185-2847 (online) Volume X, Number Y, pages 501–513, January 20XX

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240927