JP7386542B2 - 機械知覚および高密度アルゴリズム集積回路 - Google Patents

機械知覚および高密度アルゴリズム集積回路 Download PDF

Info

Publication number
JP7386542B2
JP7386542B2 JP2020546936A JP2020546936A JP7386542B2 JP 7386542 B2 JP7386542 B2 JP 7386542B2 JP 2020546936 A JP2020546936 A JP 2020546936A JP 2020546936 A JP2020546936 A JP 2020546936A JP 7386542 B2 JP7386542 B2 JP 7386542B2
Authority
JP
Japan
Prior art keywords
array
integrated circuit
cores
data
boundary
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.)
Active
Application number
JP2020546936A
Other languages
English (en)
Other versions
JP2021515339A (ja
Inventor
ドレゴ,ナイジェル
シッカ,アマン
ラビチャンドラン,ムリナリーニ
ダーブハ,アナンス
フィル,ロバート,ダニエル
ケタパル,ヴェルブハン
Original Assignee
クアドリック.アイオー,インコーポレイテッド
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 クアドリック.アイオー,インコーポレイテッド filed Critical クアドリック.アイオー,インコーポレイテッド
Publication of JP2021515339A publication Critical patent/JP2021515339A/ja
Application granted granted Critical
Publication of JP7386542B2 publication Critical patent/JP7386542B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Description

関連出願の相互参照
本出願は、2018年3月8日に出願された、米国仮出願第62/640,478号の利益を主張し、これは、参照によってその全体が援用される。
一般に、本明細書に記述した1つまたは複数の発明は、集積回路分野に、およびより具体的には集積回路分野における新規かつ有用な知覚および高密度アルゴリズム処理集積回路アーキテクチャに関する。
人工知能および一般に、機械学習の現代の応用は、ロボット工学における、および特に、自律型ロボット工学および自立型の乗り物を含む技術における革新を推進しているようにみえる。また、機械知覚技術における発展は、機械にそれらの環境を理解させる多くのその他の能力のうち、自立型ロボット工学の、および自立型の乗り物の空間における実行の多くにおいて視覚を知覚し、聴覚を知覚し、および触覚を知覚する能力を可能にした。
これらの自立型実行に適用される基礎をなす知覚技術は、多くの場合に自立型ロボットおよび/または自立型の乗り物をとり巻く環境の豊富な捕捉を可能にさせる多数の高度な、および能力があるセンサを含む。しかし、これらの高度な、および能力があるセンサの多くが、多くの自立型実行の物理的な環境の強い捕捉を可能にし得る一方、センサからの種々のセンサシグナルデータを処理するように機能し得る基礎をなす処理回路は、多くの場合センサシグナルデータの高性能およびリアルタイムコンピューティングを可能にするのに十分な対応するしっかりした処理能力を欠いている。
基礎をなす処理回路は、多くの場合中央処理装置(CPU)およびグラフィック処理装置(GPU)を含む汎用集積回路を含む。多くのアプリケーションにおいて、GPUがCPUに比較して一括の、または大量の計算を実行することができるので、GPUはCPUよりも実行される。しかし、大部分のGPUのアーキテクチャは、機械知覚技術において使用される複雑な機械学習アルゴリズム(たとえば、ニューラルネットワークアルゴリズムなど)の多くを扱うために最適化されない。たとえば、自立型の乗り物空間は、単に乗り物および人を知覚するだけであることを越えて広がる複数の知覚処理要求を含む。自立型の乗り物は、自立型の乗り物のための経路または経路計画を可能にするセンサデータの融合を提供する高度なセンサ一式で実行されてきた。しかし、現代のGPUは、これらのさらなる高度計算タスクを扱うために構築されていない。
よくても、GPUまたは類似の処理回路が経路計画、センサーフュージョンなどを含むさらなるセンサ処理要求を扱うことを可能にするために、さらなるおよび/または異なる回路を従来のGPUに構築してもよい。ロボット工学および自立型機械のさらなる知覚処理要求を扱うためのこの断片化された、および断片的なアプローチは、センサ信号処理における非効率性を含む計算を行う際にいくつかの非効率を生じる。
したがって、ロボット工学の知覚または任意のタイプもしくは種類の知覚的機械を可能にするための高性能およびリアルタイム処理およびルーチンの計算、並びに高度なセンサシグナルの能力がある高度な集積回路に対する集積回路分野における要求がある。
本出願に記述した発明の発明者は、増強されたセンサデータ処理能力を可能にする集積回路アーキテクチャをデザインし、およびロボット工学の知覚および種々の機械を可能にすることを含むいくつかの目的のための集積回路アーキテクチャの実現に関連した方法をさらに発見した。
一つの態様において、集積回路は、複数のアレイコアを含み、複数のアレイコアのそれぞれのアレイコアは、複数の異なるデータ処理回路と、データキューレジスタファイルを含む。複数の境界コアであって、複数の境界コアのそれぞれの境界コアは、少なくともレジスタファイルを含み、[i]複数の境界コアの少なくとも1つのサブセットは、複数のアレイコアの第1のサブセットの周囲を包囲し、[ii]複数のアレイコアと複数の境界コアの組み合わせは、集積回路アレイを定義する。
一つの態様において、複数のアレイコアの第1のサブセットは、複数のアレイコアの第2のサブセットの周囲を包囲する。
一つの態様において、複数のアレイコアのそれぞれの複数の異なる処理回路は:複数の乗算アキュムレータを含み、複数の乗算アキュムレータのそれぞれは、複数のアレイコアのそれぞれのアレイコアのデータ入力/出力ポートに隣接して配列される。
一つの態様において、回路は、第1の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットがそれぞれのデュアルFIFOによって最初に処理されるように、第1の複数のデュアルFIFOは、集積回路アレイの第1の周囲側に沿って配列される、先入れ先出し方式において集積回路アレイの中にデータをロードする第1の複数の第1のデュアルFIFO;第2の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットがそれぞれのデュアルFIFOによって最初に処理されるように、第2の複数のデュアルFIFOは、集積回路アレイの第1の周囲側とは異なる集積回路アレイの第2の周囲側に沿って配列される、先入れ先出し方式において集積回路アレイの中にデータをロードする第2の複数のデュアルFIFO、を含む。
一つの態様において、第1および第2の複数のデュアルFIFOのそれぞれは、第1の少なくとも2つのメモリエレメントが集積回路アレイの複数の境界コアの1つの境界コアの中へデータをプッシュし;第2の少なくとも2つのメモリエレメントが集積回路アレイの複数の境界コアの1つの境界コアからのデータを収集する、少なくとも2つのメモリエレメントを含む。
一つの態様において、複数のアレイコアのそれぞれは、長方形または任意の適切な多角形形状を有し;および複数の乗算アキュムレータの1つは、複数のアレイコアのそれぞれの長方形のそれぞれの側にて配列される。
一つの態様において、回路は、統合メモリとインタフェースする(interface、接続する、相互作用する)第1の周囲メモリおよび第2の周囲メモリを含み:第1の周囲メモリは、集積回路アレイの第1の周囲側に沿って配列され、および第1の周囲ロードストアとインタフェースし;および第2の周囲メモリは集積回路アレイの第2の周囲側に沿って配列され、および第2の周囲ロードストアとインタフェースする。
一つの態様において、回路は、メインメモリと集積回路アレイとの間に直接メモリアクセスを可能にする階層的メモリ構造を含み、階層的メモリ構造は:集積回路アレイとインタフェースし、並びに先入れ先出し方式においてデータを伝達し、および受信する複数のデュアルFIFO、それぞれが複数のデュアルFIFOのそれぞれのデュアルFIFOとインタフェースする、およびそれぞれのデュアルFIFOから受信された、および/またはそれぞれのデュアルFIFOの中へのロードを保留しているいずれかのデータの1つまたは複数のロードを格納する複数の周囲ロードストア並びにそれぞれが複数の周囲ロードストアのそれぞれの周囲ロードストアとインタフェースする、およびメインメモリとインタフェースする複数の周囲メモリを含む。
一つの態様において、回路は、データ移動命令を実行するときに、階層的メモリ構造と集積回路アレイとの間のデータの移動を制御する複数の周囲コントローラを含む。
一つの態様において、階層的メモリ構造は、データ転送の間にデータアクセスおよびデータ再構築を可能にする二次元の直接メモリアクセスとして実行されてもよい。
一つの態様において、回路は:(a)集積回路の階層的メモリ構造と集積回路アレイとの間の;(b)それぞれの複数のアレイコアのそれぞれのアレイコアの中の;(c)それぞれのアレイコアの間およびアレイコアと集積回路アレイの境界コアとの間の:データの自動移動をさせるデータ移動命令;および集積回路アレイの複数のアレイコアによって実行される複数の計算を定義する計算命令を提供するディスパッチコントローラを含む。
一つの態様において、回路は、データ移動命令を提供するディスパッチコントローラを含み、データ移動命令は:集積回路の中でデータの自動移動を定義し;およびデータが予め定められたデータフロースケジュールに従った1つまたは複数の境界コアに提供されない場合、予め定められた一定の値まで複数の境界コアの1つまたは複数の境界コアをセットする、データフロースケジュールを含む。
一つの態様において、データフロースケジュールは、複数の周囲コントローラの1つまたは複数によって実行可能なメモリアドレスのスケジュールを含む。
一つの態様において、回路は、複数のアレイコアのそれぞれのために計算命令を提供する計算命令ジェネレータ回路を含むディスパッチコントローラ;および集積回路の中でデータの予め定められた移動を定義するデータフロースケジュールを提供するデータ移動ジェネレータ回路、を含む。
一つの態様において、回路は、同報通信バスの第1の入力端子にて1つまたは複数の周囲コントローラと電気的通信して、および同報通信バスの複数の出力端子にて複数のアレイコアのサブセットと電気的通信して配列された同報通信バスを含む。
一つの態様において、複数のアレイコアのそれぞれは、複数アレイコアおよび複数の境界コアの1つまたは複数を含む隣接したコアと双方向通信して配列される。
本出願の1つまたは複数の態様に従ったシステム100の図面を図示する。
本出願の1つまたは複数の態様に従ったシステム100の注釈付図面を図示する。
本出願の1つまたは複数の態様に従った集積回路アレイ105のセグメントの詳細な図面を図示する。
本出願の1つまたは複数の態様に従った集積回路コントローラの図面を図示する。
好ましい態様の説明
本出願の好ましい態様の以下の記述は、これらの好ましい態様に発明を限定することを意図せず、しかしむしろ任意の当業者がこれらの発明を作製し、および使用できることを意図する。
I.概要
背景部門において上記のように、集積回路アーキテクチャにおける技術水準は、ロボット工学および自立型機械の知覚処理タスクの多数を扱うための適切な解決法を欠いている。GPUがさらなるおよび/または異なる回路で修正されてロボット工学および自立型機械のこれらの知覚処理要求のいくつかを行うかもしれないが、GPUの処理能力に有意なギャップが存在し、その結果生じる性能は低く、およびリアルタイムでない。その他の知覚処理回路が存在し得るし、ニューラルネットワーク特定のプロセッサ、計算機視覚特定のプロセッサなどを含む場合もある。しかし、これらのいずれも、センサ獲得、センサーフュージョン、知覚処理、経路計画などのために必要とされる多くの異なる知覚アルゴリズムおよび計算を処理することができる単一の包括的集積回路を提供しない。
したがって、本出願の1つまたは複数の態様は、知覚アルゴリズム、知覚データ(たとえば、センサデータ、観察データなど)並びにロボット工学および自立型機械の種々の知覚処理要求を処理するための包括的な最適化された計算プラットフォームを提供するように機能する。好ましい態様において、最適化された計算プラットフォームは、高性能およびリアルタイム処理高密度アルゴリズム処理装置(DAPU)および/または知覚処理装置(PPU)として実行され得る。1つまたは複数の実行において、本出願の種々の態様において開示される集積回路は、複数の異なる処理エレメントおよびデータフローを有するアレイコア並びにアレイコア内の処理エレメントの多くの組み合わせの中の、およびその間のデータの移動を可能にするメッシュアーキテクチャを形成するように作動するストレージエレメントを含む。
アレイコアにおける複数の処理エレメントによって定義されるメッシュアーキテクチャは、好ましくはインメモリ計算を可能にし、および通信およびデータ処理待ち時間を軽減させる。
II.高密度アルゴリズム処理集積回路のシステムアーキテクチャ
図1~1Aに示したように、知覚処理および/または任意の適切なタイプのデータ処理を行うための集積回路100(たとえば、高密度アルゴリズム処理回路および/または知覚処理装置)は、複数のアレイコア110、複数の境界コア120、ディスパッチャ(メインコントローラ)130、第1の複数の周囲コントローラ140、第2の複数の周囲コントローラ150およびメインメモリ160を含む。加えて、集積回路100は、第1の周囲ロードストア145、第2の周囲ロードストア155、第1の周囲メモリ147、第2の周囲メモリ157、第1の複数のデュアルFIFO 149および第2の複数のデュアルFIFO 159を含んでもよい。
集積回路100は、好ましくは知覚データおよび/またはセンサデータのリアルタイムおよび高計算効率を可能にするように機能する。集積回路100の一般的な構成は、大きなレジスタファイルをそれぞれ有する中心シグナルおよびデータ処理ノードを定義する複数のアレイコア110を含み、これらはメモリからの処理のためにデータを取り出す、およびプッシュするためにアレイコア110によって要求されたクロックサイクルを除去し得る、または有意に減少させ得る。ディスパッチャ130の能力を生成する命令(すなわち、計算およびデータ移動命令)は、集積回路100を介して、およびすなわち複数のアレイコア110および境界コア120の中でデータの継続およびフローを可能にするように機能する。
アレイコア110は、好ましくはデータまたはシグナル処理ノード(たとえば、小さなマイクロプロセッサ)または処理回路として機能し、および好ましくは、大きなデータストレージ容量(たとえば4キロバイト(KB)またはより大きいなど)および整数二進数における演算およびビットごとの操作を行う論理演算装置(ALU)118または任意の適切なデジタル電子回路を有するレジスタファイル112を含む。好ましい態様において、アレイコア110のレジスタファイル112は、アレイコア110の処理回路が直接アクセスを有し得るメモリエレメントのみでもよい。アレイコア110は、複数の境界コア120および複数のアレイコア110によって定義されるアレイコアおよび/または集積回路アレイ105(すなわち、コアメッシュ)の外側でメモリに間接的なアクセスを有してもよい。
アレイコア110のレジスタファイル112は、任意の適切なメモリエレメントまたは装置であってもよいが、好ましくは1つまたは複数のスタティックランダムアクセスメモリ(SRAM)を含む。レジスタファイル112は、アレイコア110による処理のための十分に大きなデータセットのストレージを可能にする1024のレジスタなどの多くのレジスタを含んでもよい。したがって、それぞれのアレイコア110の中で大きなレジスタファイル112の配列によって達成される技術的利益は、大きなレジスタファイル112が、処理のためにデータをそのレジスタファイル112に取り込む、およびロードするためにアレイコア110による要求を減少させるということである。結果として、メモリへのデータのプッシュおよびそれからのデータの取り出しをアレイコア112によって要求されるいくつかのクロックサイクルは、有意に減少され、または完全に除去される。すなわち、アレイコア110が処理するようにスケジュールされている全てではないにしてもほとんどのデータが、アレイコア110の処理回路(たとえば、1つまたは複数のMAC、ALUなど)のすぐ隣に位置するので、大きなレジスタファイル112は、アレイコア110によって行われる計算の効率を上昇させる。たとえば、ニューラルネットワークアルゴリズム(類)またはアプリケーション(類)(たとえば、たたみ込みニューラルネットワークアルゴリズムなど)を使用して集積回路100または関連したシステムによってイメージ処理を実行するときに、アレイコアの大きなレジスタファイル112は、要求される全てのイメージデータのストレージが全てのイメージを処理することを可能にするように機能し得る。したがって、いくつかの態様において、ニューラルネットワーク実行(または類似の計算負荷の高いアプリケーション)のほとんどの、またはもしそうでなければ全ての層データは、ニューラルネットワークアルゴリズム(類)の重みまたは係数を除いてアレイコア110の大きなレジスタファイル112に局所的に格納されてもよい。したがって、これにより、アレイコア110が常にレジスタファイル112のデータを頻繁に処理することによってアレイコア110の計算および/または処理エレメント(たとえば、1つまたは複数のMACおよびALU)の最適に利用することができ、アレイコアからはずれたデータソース(たとえば、メインメモリ、周囲メモリなど)からのデータの取り込みおよびロードを制限する。
比較すると、GPUなどによって実行される従来のシステムにおいてレジスタファイルをトラバースするためには、メモリアドレスがメモリからデータを取り込むために発行されることが典型的には必要とされる。しかし、大きなレジスタファイル112を実行する好ましい態様において、レジスタファイル112の中の(生)入力データは、レジスタファイル112から自動的にインクリメントされてもよく、および隣接したコア(類)(たとえば、アレイコアおよび/または境界コア)からのデータは、レジスタファイル112に連続的に供給されてアレイコア110による要求(またはメモリアドレスを発行すること)が明確になされる必要なくアレイコア110の計算エレメントへの連続的フローを可能にする。特に、本出願の1つまたは複数の態様において、連続フローレジスタポインタを可能にすることにより、極めて効率的に大きなレジスタファイル112をトラバースするように同時に遅延処理し、および自動インクリメントしてもよい。
本出願のいくつかの態様において、予め定められたデータフロースケジュールは、集積回路アレイ105の中の構成要素によるデータに対する要求を軽減し、または完全に排除してもよい一方、種々のこれらの態様において、従来のランダムメモリアクセスは、米国仮出願第62/802,346号に記載されているように、集積回路アレイ105の構成要素によって達成してもよく、これは参照によってその全体が本明細書に援用される。すなわち、アレイコア110または境界コア120が処理のためにデータのランダムな断片に対する要求を認識する場合、アレイコア110および/または境界120は、集積回路100の記憶階層の中のメモリエレメントのいずれかからのデータに対して具体的要求(すなわち、メモリアドレスを発行する)をしてもよい。
加えて、またはあるいは、アレイコア110は、複数の乗算(乗算)アキュムレータ(MAC)114または乗算および加算関数を行うことができるであろう任意の適切な論理装置もしくはデジタル回路を含んでいてもよい。好ましい態様において、それぞれのアレイコア110は、四(4)つのMACを含み、およびそれぞれのMAC 114は、図2に例として示したように長方形のアレイコア110の特定の側に、またはその近くに配列してもよい。好ましい態様において、アレイコア110の複数のMAC 114のそれぞれは、アレイコア110のそれぞれの側の近くに、またはそこに配列してもよい一方で、複数のMAC 114をアレイコア110のそれぞれの角に含む任意の適切な配列、パターン、位置などにおけるアレイコア110の中で配列し(またはおそらくアレイコアの周囲に増大し)てもよいことは公知であるはずである。好ましい態様において、アレイコア110の側に沿った複数のMAC 114の配列により、直接隣接したコア(すなわち、近接する隣接したコア)の1つまたは複数から受信した入力データの効率的な流入または収集および集積回路100のアレイコア110によるその計算を可能になる。すなわち、複数のMAC 114のそれぞれは、直接隣に配列しても、またはアレイコア110のデータポート(または同様のもの)と直接電気的通信して配列してもよい。したがって、このような態様において、アレイコア110が、アレイコア110の最も北側、最も東側、最も南側、および最も西側のそれぞれのデータポートを含む場合、それぞれのデータポートは、それぞれのポートの1つと直通通信している異なるMAC 114を対応して有してもよい。この方法において、それぞれのデータポートにて到着するデータは、計算のためにMAC 114に直接伝達されてもよく、および同様に、MAC 114によって計算されたデータは、もう一つの部位またはアレイコア114への伝達のためのデータポートへ直接出力されてもよい。
したがって、アレイコア110の中に配置される複数のMAC 114のそれぞれは、集積回路100の中の隣接したコア(たとえば、アレイコア、境界コアなど)との直接通信能力を有するように機能してもよい。加えて、複数のMAC 114は、アレイコア110の大きなレジスタファイル112から供給されるデータ(たとえば、演算数)を使用する計算を実行するように機能してもよい。しかし、複数のMAC 114は、好ましくはこれらのそれぞれの隣接したコア(類)の1つまたは複数および/または1つまたは複数のメモリエレメント(たとえば、メインメモリ160または同様のもの)または1つまたは複数の入力供与源からの1つまたは複数のアルゴリズム(機械学習アルゴリズムを含む)の係数または重み入力を移動するように機能する重みまたは係数(定数)バス116から計算を実行するためのデータを供与するように機能する。
重みまたは同報通信バス116は、重みバス116の第1の入力端子にて周囲コントローラ140、150の少なくとも1つまたは複数と電気通信して作動可能に置かれてもよく、および加えて重みバス116の1つまたは複数の出力端子にて複数のアレイコア110の1つまたは複数と作動可能におよび/または電気的に接続してもよい。このような方法で、重みバス116は、1つまたは複数の周囲コントローラ140、150から入力された重みおよび係数データを収集し、および複数のアレイコア110の1つまたは複数に直接入力された重みおよび係数データを伝達するように機能してもよい。したがって、いくつかの態様において、複数のアレイコア110は、重みバス116を介して重みおよび/または係数データ入力が送られ、並行してこれによりアレイコア110の計算の速度を改善し得る。
それぞれのアレイコア110は、好ましくはその直接隣接するものと双方向に通信するように機能する。すなわち、いくつかの態様において、それぞれのアレイコア110は、長方形または任意の(ay)適切な多角形形状を有する処理ノードとして構成され、その結果処理ノードのそれぞれの側が、アレイコア110の4つの側の1つまたは表面のそれぞれの隣に配置されるもう一つのノード(たとえば、もう一つの処理ノード、データストレージ/移動ノードなど)と相互作用することができてもよいように配列してもよい。アレイコア110がその側のそれぞれに沿って隣接したコアと双方向に通信する能力により、アレイコア110がその隣接するもののいずれかからデータを取り出すこと、並びに(処理された、または生の)データをその隣接するもののいずれかにプッシュすることが可能になる。これは、集積回路100のアレイコア110および境界コア120の収集全体にわたるデータの効率的な移動を可能にするメッシュ通信アーキテクチャを可能にする。
複数の境界コア120のそれぞれは、好ましくはレジスタファイル122を含む。レジスタファイル122は、レジスタファイル122が大きなデータセットを格納するように機能し得るアレイコア110のレジスタファイル112と同様に構成されてもよい。好ましくは、それぞれの境界コア120は、アレイコア110と比較したときに単純化されたアーキテクチャを含む。したがって、いくつかの態様における境界コア120は、実行能力を含まなくてもよく、およびしたがって、アレイコア110の多くにおいて提供されるように乗算アキュムレータおよび/または論理演算装置を含まなくてもよい。
従来の集積回路(たとえば、GPUまたは同様のもの)において、処理のために受信された入力イメージデータ(または任意のその他の適切なセンサデータ)がこのような回路の中で負荷の高いアプリケーション(たとえば、ニューラルネットワークアルゴリズム)を計算するときに、入力イメージデータに基づいたイメージ値(たとえば、ピクセル値)を含まない回路の中の領域に埋込み要求を発行することが必要であり得る。すなわち、イメージ処理または同様のものの間、従来の集積回路は、任意のイメージデータ値を含まないメモリエレメントからイメージ処理を行うように機能してもよい。このような例において、従来の集積回路は、ゼロなどの埋込み値がメモリエレメントに付加されてイメージデータ値を伴わないメモリエレメントにおけるその後のイメージ処理労力を回避することを要求するように機能してもよい。従来の集積回路によるこの典型的なイメージデータ処理の結果は、従来の集積回路によるイメージ処理または同様のもののために、空白のメモリエレメントを同定すること、およびメモリエレメントに対して計算できる値を付加することに費やされる多数のクロックサイクルを生じる。
集積回路100の好ましい実施態様において、複数の境界コア120の1つまたは複数は、入力データ(たとえば、入力センサデータ)が受信されない時にデフォルト値に自動的にセットするように機能してもよい。たとえば、センサ(またはもう一つの回路層)からの入力イメージデータは、集積回路アレイ105の全ての境界コアセルを占めるわけではない総イメージデータサイズを有してもよい。このような例において、入力イメージデータを受信すると、入力イメージデータを伴わない1つまたは複数の境界コア120(すなわち、境界コアセル)をゼロまたはゼロ以外の一定の値などのデフォルト値に自動的にセットしてもよい。
いくつかの態様において、ディスパッチャによって生成され、および複数の境界コア120の1つまたは複数に送信される予め定められた入力データフロースケジュールは、デフォルトまたは予め定められた一定の値にセットするように命令を含んでもよい。加えて、またはあるいは、1つまたは複数の境界コア120は、入力センサデータまたは同様のものが集積回路アレイ105に予め定められた入力データフローで受信されないことが検出されるときに、デフォルトまたは予め定められた値に自動的にセットされてもよい。加えて、またはあるいは、一つのバリエーションにおいて、1つまたは複数の境界コア120は、入力センサデータまたは同様のものが集積回路アレイ105に予め定められた入力データフローで受信されないことが検出されるときに、入力センサデータを有する1つまたは複数のその他の境界コアの値を反映するように自動的にセットされてもよい。
したがって、自動埋込みエレメントとして複数の境界コア120の1つまたは複数の実行に従って達成される技術的利益は、自動埋込み値がセットされた入力センサデータの関心領域(または周囲領域)に対する作業要求を最小限にすることによって複数のアレイコア110の1つまたは複数による計算における効率を上昇させることを含み得る。これにより、入力データセットに対して計算を行う際に複数のアレイコア110によって使用されるクロックサイクルを減少させる。
集積回路100の好ましい実施態様において、処理のための複数のアレイコア110および複数の境界コア120へのデータの進行は、好ましくはディスパッチャ130にて生成される予め定められたデータフロースケジュールに基づく。予め定められたデータフロースケジュールは、1つまたは複数の供与源(たとえば、センサ、その他のNN層、上流の装置など)からの入力データが境界コア120および/またはアレイコア110からの入力データについて明示的な要求を必要とすることなく(たとえば、メモリアドレスを発行せずに)境界コア120およびアレイコア110にロードされることを可能にする。すなわち、予め定められたデータフロースケジュールは、オンチップまたはオフチップメモリなどの集積回路100のメモリエレメント(たとえば、メインメモリ160)から処理のためにデータを受信する容量を有する複数の境界コア120および複数のアレイコア110への生データの自動フローを可能にする。たとえば、アレイコア110がそのレジスタファイル112において格納されるデータロードのデータの第1のサブセットを処理するように機能しない場合において、一旦データの第1のサブセットの処理の結果が完成し、およびアレイコア110から送信されると、予め定められたデータフロースケジュールは、アレイコア110の中に生データの自動フローを可能にし、これによりレジスタファイル112にてデータロードに付加し、およびアレイコア110によって以前に処理されたデータの第1のサブセットを置換するように機能してもよい。したがって、このような例において、処理のためのさらなる生データのための明示的な要求は、アレイコア110から要求されない。むしろ、ディスパッチャ130を実行する集積回路100は、一旦アレイコア110がそのレジスタファイル112(または他の場所)から供給されたある程度のデータを処理したら、アレイコア110が処理のためにさらなるデータを受け入れるためのさらなる容量を有し得ることを認識するように機能してもよい。予め定められたデータフロースケジュールは、加えて集積回路アレイ105の中で、並びに集積回路アレイ105から処理されたデータの自動フローを可能にするように機能してもよいことは明確に注目されるべきである。
ディスパッチャ130は、集積回路100の種々の回路および/または構成要素(たとえば、アレイコア計算)によって行われるスケジュールされた計算または実行を含む命令を作製し、およびさらに、好ましくは集積回路100を介した入力データのフローの制御を可能にする命令を作製するように機能する処理回路(たとえば、マイクロプロセッサまたは同様のもの)を含む。いくつかの態様において、ディスパッチャ130は、命令の部分を実行し、および命令のもう一つの部分を集積回路アレイ105の中にロードするように機能してもよい。一般に、ディスパッチャ130は、集積回路100のメモリから1つまたは複数のその他のストレージおよび/または処理回路までの(および逆もまた同じ)データへのアクセスまたはそのフロー(移動)を制御し、および管理する集積回路100の一次コントローラとして機能してもよい。加えて、ディスパッチャ130は、種々のサブコントローラ(たとえば、周囲コントローラなど)および複数のアレイコア110の実行操作を制御するように機能してもよい。
図3に例として示したように、いくつかの態様において、ディスパッチャ130の処理回路は、それぞれ、計算/実行命令およびデータ転送/移動スケジュールまたは命令を独立して生成し得る計算命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134(たとえば、アドレス生成装置またはアドレス計算装置)を含む異なる回路を含む。したがって、この構成は、ディスパッチャ130が同時にデータアドレス計算および計算/実行命令の生成を行うことを可能にする。ディスパッチャ130は、計算機命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134の両方から異なる出力を組み合わせる単一の命令合成への出力を合成するように機能してもよい。
ディスパッチャ130によって生成された単一の命令合成は、1つまたは複数の下流の構成要素および集積回路アレイ105に提供し、および計算または処理命令およびデータ転送/移動命令を集積回路100のこれらの種々の回路または構成要素によって同時に行わせてもよい。集積回路アレイ105に関して、単一の命令合成のデータ移動構成要素は、周囲コントローラ140、150の1つまたは複数によって行われ、および複数のアレイコア110の1つまたは複数によって命令を計算してもよい。したがって、このような態様において、周囲コントローラ140、150は、命令のデータ移動構成要素を復号化するように機能してもよく、および含まれる場合、デュアルFIFO 149、159からの読込み操作を行い、およびデータバス上のデュアルFIFO 149、159から集積回路アレイ105まで(または逆もまた同じ)そのデータを移動してもよい。
計算命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134は、好ましくは別々の、または独立した回路である一方、いくつかの態様において、計算命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134は、計算命令生成およびデータ移動命令生成の両方を行うように機能する単一の回路によって実行されてもよいことは留意されるべきである。
操作において、ディスパッチャ130は、周囲ロードストア145および周囲ロードストア155の1つまたは複数の中にロードされるメモリアドレスを生成し、およびスケジュールするように機能してもよい。周囲ロードストア145、155は、ディスパッチャ130から全てのロードおよびストア命令を実行するように機能し、およびメモリからデータをロードする、または取り込む、または集積回路アレイコア105からメモリへデータを格納するように一般に機能し得る特化した実行装置を好ましくは含む。第1の周囲ロードストア145は、好ましくは伝達可能なように、および作動可能に第1の複数のデュアルFIFO 149および第1の周囲メモリ147の両方とインタフェースする。第1および第2の周囲メモリ147、157は、オンチップスタティックランダムアクセスメモリを好ましくは含む。
この構成において、第1の周囲ロードストア145は、第1の周囲ロードストア145が第1の複数のデュアルFIFO 149のすぐ次に、またはそれの後に配置されるように、第1の複数のデュアルFIFO 149と第1の周囲メモリ147との間に配列されてもよい。同様に、第2の周囲ロードストア155は、第2の複数のデュアルFIFO 159および第2の周囲メモリ157の両方と好ましくは伝達可能なように、および作動可能にインタフェースする。したがって、第2の周囲ロードストア155は、第2の周囲ロードストア155が第2の複数のデュアルFIFO 159のすぐ次に、またはそれの後に配置されるように、第2の複数のデュアルFIFO 159と第2の周囲メモリ157との間に配列されてもよい。
第1および第2の周囲ロードストア145、155の1つまたは複数に対してディスパッチャ130によって発行されるメモリアドレス指定命令に応答して、第1および第2の周囲ロードストア145、155は、第1の周囲メモリ147および第2の周囲メモリ157の1つからデータを取り出し、および第1および第2の複数のデュアルFIFO 149、159の1つまたは複数の中に取り出されたデータを移動するように命令を実行するように機能してもよい。加えて、またはあるいは、デュアルFIFO 149、159は、データバスからデータを読み込むように機能しても、およびそれぞれのデュアルFIFOの1つまたは複数に読込みデータを移動しても、またはデュアルFIFOの1つまたは複数からデータを読み込んでも、および読込みデータをデータバスに移動してもよい。同様に、メモリアドレス指定命令は、第1および第2の周囲ロードストア145、155の1つまたは複数に第1および第2の周囲メモリ147、157の1つに複数のデュアルFIFO 149、159の1つまたは複数から収集されるデータを移動させてもよい。
第1の複数のデュアルFIFO 149のそれぞれおよび第2の複数のデュアルFIFO 159のそれぞれは、少なくとも2つのメモリエレメントを好ましくは含む(図示せず)。好ましくは、第1の複数のデュアルFIFO 149は、集積回路アレイ105の列と整列させられているデュアルFIFO 149の第1の複数のそれぞれと集積回路アレイ105の第1の側に沿って配列してもよい。同様に、第2の複数のデュアルFIFO 159は、集積回路アレイ105の列と整列させられている第2の複数のデュアルFIFO 159のそれぞれと集積回路アレイ105の第2の側に沿って配列してもよい。この配列は、好ましくは集積回路アレイ105の第1の側に沿ってそれぞれの境界コア120が伝達可能なように、および作動可能に第1の周囲コントローラ145の少なくとも1つとインタフェースできるようにし、および集積回路アレイ105の第2の側に沿ったそれぞれの境界120が伝達可能なように、および作動可能に第2の周囲コントローラ155の少なくとも1つとインタフェースできるようにする。
少なくとも図1~1Aにおいて、第1および第2の複数のデュアルFIFO、第1および第2の周囲コントローラ、第1および第2の周囲メモリ、並びに第1および第2のロードストアがあることを図示したが、これらの構造は、例として、これらの構成要素が集積回路アレイ105の全ての(4つの)側に沿って配列されるように、集積回路アレイ105の全ての周囲を囲むように配列してもよいことに留意すべきである。
デュアルFIFO 149、159は、好ましくはこれらのそれぞれの側からデータのために特定の命令に反応するように機能する。すなわち、デュアルFIFO 149、159は、集積回路アレイ105の第1の側に沿った第1の複数のデュアルFIFO 149または第2の側に沿った第2の複数のデュアルFIFO 159のいずれかに特定であるディスパッチャ130からのデータ移動命令を同定するように構成されてもよい。
第1の実行に従って、デュアルFIFOのそれぞれは、第1の2つのメモリエレメントを使用してデータを集積回路アレイ105の中にプッシュしても、および第2の2つのメモリエレメントを使用してデータを集積回路アレイ105から取り出してもよい。したがって、それぞれのデュアルFIFO 149、159は、集積回路アレイ105の内部へのデータの移動のための専用の第1のメモリエレメントおよび集積回路アレイ105から外部へのデータの移動のための専用の第2のメモリエレメントを有してもよい。すなわち、この第1の実施態様において、デュアルFIFOの第1のメモリエレメントは、集積回路アレイ105の境界コアの中にデュアルFIFOからデータをロードするように機能してもよい。逆に、デュアルFIFOの第2のメモリエレメントは、集積回路アレイ105の境界コアの中で移動するデータを収集するように好ましくは機能する。いくつかの態様において、潜在的にデータバスまたは同様のものを経て、境界コアを迂回することによってアレイコアからデュアルFIFOの第1および第2のメモリエレメントによってデータをロードする、および/またはデータを収集することができ得ることに留意すべきである。
第2の実施態様に従って、デュアルFIFOは、それぞれのデュアルFIFOが予め定められた配列または順序で集積回路アレイ105の中にデータを提供し、およびデータが集積回路アレイ105の中に供給された同じ予め定められた配列または順序で集積回路アレイ105からデータを収集するように機能するスタック(第2)様式において操作されてもよい。この第2の実施態様において、各それぞれのデュアルFIFOの中のデータは、先入れ先出し方式で扱われてもよく、および各それぞれのデュアルFIFOは、それ自体で、先入れ先出し方式でデータをロードし、および/または収集するために実行してもよい。加えて、またはあるいは、各それぞれのデュアルFIFOを操作するもう一つの様式において、各それぞれのデュアルFIFOの中のデータは、後入れ先出し方式で扱われてもよく、および同様に同じ様式でデータをロードするために実行しても、および/または収集してもよい。加えて、またはあるいは、各それぞれのデュアルFIFOは、上述したモードの組み合わせを含むその他のモードにおいて、並びにランダムアクセスモードにおいて指定してもよい。
加えて、集積回路100は、好ましくは単一の統合メモリを含むメインメモリ160を含む。メインメモリ160は、好ましくは1つまたは複数のセンサから発信しているデータ、システム由来の、または生成されたデータ、1つまたは複数の集積回路層からのデータ、1つまたは複数の上流の装置または構成要素などからのデータを格納するように機能する。好ましくは、メインメモリ160は、オンチップスタティックランダムアクセスメモリまたは同様のものを含む。
加えて、またはあるいは、メインメモリ160は、オンダイ(オンチップ)メモリの複数のレベルを含んでもよい。このような態様において、メインメモリ160は、互いに電気通信し得る複数のメモリ(たとえば、SRAM)エレメントおよび集積回路アレイ105と同じダイ上に配列される単一の統合メモリとしての機能を含んでもよい。
加えて、またはあるいは、メインメモリ160は、オフダイ(オフチップ)メモリ(図示せず)の複数のレベルを含んでもよい。このような態様において、メインメモリ160は、互いに電気通信し得る複数のメモリ(たとえば、DDR SRAM、高帯域メモリ(HBM)など)エレメントおよび集積回路アレイとは別のダイ上に配列される単一の統合メモリとしての機能を含んでもよい。
いくつかの態様において、集積回路100は、オンダイおよびオフダイで配列されるメモリを含むメインメモリ160を含むことに留意すべきである。このような態様において、メインメモリ160のオンダイおよびオフダイメモリは、集積回路100のオンダイの構成要素にアクセス可能な単一の統合メモリとして機能してもよい。
第1の周囲メモリ147および第2の周囲メモリ157のそれぞれは、メインメモリ160の中に移植してもよい。第1の周囲メモリ147とメインメモリ160との間に、第1の周囲メモリ147がメインメモリ160からデータを取り込むことを可能にするロードストア装置を配列してもよい。同様に、第2の周囲メモリ157とメインメモリ160との間に、第2の周囲メモリ157がメインメモリ160からデータを取り込むことを可能にする第2のロードストア装置を配列してもよい。
デュアルFIFO 149、159とロードストア145、155との間、ロードストア145、155と周囲メモリ147、157との間および周囲メモリ147、157とメインメモリ160に生じる集積回路100の記憶階層に沿ったデータ転送は、メモリエレメントおよびロードストアがディスパッチャ130またはいくつかの主な処理回路の直接介入を伴わずに記憶階層の中で独立してデータにアクセスし、および転送することを使用可能にする予めスケジュールされた、または予め定められた直接メモリアクセス(DMA)転送として好ましくは実行してもよいことに留意すべきである。加えて、集積回路100の記憶階層の中のデータ転送は、2つのカウントおよび2つのストライドを有する二次元の(2D)DMA転送として実行してもよく、これにより記憶階層の中および記憶階層と集積回路アレイ105との間の転送の間の効率的なデータアクセスおよびデータ再構築が可能になる。好ましい態様において、DMAデータ転送は、複数のアレイコア110の1つまたは複数の状態または操作によってトリガーされ得る。たとえば、アレイコアがデータの第1のセットの処理を完了する、または完了した場合、完了またはほぼ完了により、DMA転送をトリガーしてさらなるデータを処理のために集積回路アレイ105に入るようにさせてもよい。
好ましい態様およびその変化のシステムおよび方法は、少なくとも部分において、コンピュータ可読命令を格納するコンピュータ可読媒体を受信するように構成された機械として実施することができ、および/または実行することができる。命令は、システムと好ましくは組み込まれるコンピュータ実行可能構成要素およびプロセッサおよび/またはコントローラの1つまたは複数の部分によって好ましくは実行される。コンピュータ可読媒体は、RAM、ROM、フラッシュメモリ、EEPROM、光学的装置(CDまたはDVD)、ハードドライブ、フロッピードライブまたは任意の適切な装置などの任意の適切なコンピュータ可読媒体において格納することができる。コンピュータ実行可能構成要素は、好ましくは一般的な、またはアプリケーション特定のプロセッサであるが、任意の適切な専用ハードウエアまたはハードウエア/ファームウェア組み合わせ装置は、命令をあるいは、またはさらに実行することができる。
簡潔さのために省略したが、好ましい態様は、本明細書に記述したシステムおよび方法の実行のあらゆる組み合わせおよび並べ替えを含む。
当業者は、以前の詳細な説明から、並びに図および特許請求の範囲から認識するであろうため、以下の特許請求の範囲に定義した本発明の要旨を逸脱しない範囲で本発明の好ましい態様に対して変更および改変を行うことができる。

Claims (17)

  1. 集積回路であって、
    複数のアレイコアであって、複数のアレイコアのそれぞれのアレイコアが、
    複数の異なるデータ処理回路、および
    データキューレジスタファイル、
    を含む、複数のアレイコアと、
    複数の境界コアであって、複数の境界コアのそれぞれの境界コアが、少なくとも一つのレジスタファイルを含む、複数の境界コアと、
    データ移動命令を提供するディスパッチコントローラであって、データ移動命令がデータフロースケジュールを含み、データフロースケジュールが、
    集積回路の中でデータの自動移動を定義し、
    データが予め定められたデータフロースケジュールに従った1つまたは複数の境界コアに提供されない場合、複数の境界コアの1つまたは複数の境界コアを一定の値にセットすることを特徴とする、ディスパッチコントローラと、
    を含み、
    [i]複数の境界コアの少なくとも一つのサブセットが、複数のアレイコアの第1のサブセットの周囲を包囲し、および、
    [ii]複数のアレイコアと複数の境界コアの組み合わせが、集積回路アレイを定義することを特徴とする、集積回路。
  2. 請求項1に記載の集積回路であって、
    複数のアレイコアの第1のサブセットは、複数のアレイコアの第2のサブセットの周囲を包囲する、集積回路。
  3. 請求項1に記載の集積回路であって、
    複数のアレイコアのそれぞれの複数の異なるデータ処理回路は、
    複数の乗算アキュムレータであって、複数の乗算アキュムレータのそれぞれが、複数のアレイコアのそれぞれのアレイコアのデータ入力/出力ポートに隣接して配列されている、乗算アキュムレータ、を含む、
    集積回路。
  4. 集積回路であって、
    複数のアレイコアであって、複数のアレイコアのそれぞれのアレイコアが、
    複数の異なるデータ処理回路、および
    データキューレジスタファイル、
    を含む、複数のアレイコアと、
    複数の境界コアであって、複数の境界コアのそれぞれの境界コアが、
    少なくとも一つのレジスタファイル、
    第1の複数のデュアルFIFO、および
    第2の複数のデュアルFIFO、
    を含み、
    複数の境界コアの少なくとも一つのサブセットが、複数のアレイコアの第1のサブセットの周囲を包囲し、および、
    複数のアレイコアと複数の境界コアの組み合わせが、集積回路アレイを定義し、
    前記第1の複数のデュアルFIFOは、前記第1の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットが、前記第1の複数のデュアルFIFOのそれぞれのデュアルFIFOによって最初に処理されるように、データを先入れ先出し方式において集積回路アレイの中にロードする第1の複数のデュアルFIFOであって、
    前記第1の複数のデュアルFIFOは、集積回路アレイの第1の周囲側に沿って配列され
    前記第2の複数のデュアルFIFOは、前記第2の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットが、前記第2の複数のデュアルFIFOのそれぞれのデュアルFIFOによって最初に処理されるように、データを先入れ先出し方式において集積回路アレイにロードする第2の複数のデュアルFIFOであって、
    前記第2の複数のデュアルFIFOは、集積回路アレイの第1の周囲側とは異なる集積回路アレイの第2の周囲側に沿って配列される
    ことを特徴とする、集積回路。
  5. 請求項4に記載の集積回路であって、
    第1および第2の複数のデュアルFIFOのそれぞれは少なくとも2つのメモリエレメントを含み、
    前記少なくとも2つのメモリエレメントの第1が、集積回路アレイの複数の境界コアの境界コアの1つおよび複数のアレイコアの1つのアレイコアの中へデータをプッシュし、
    前記少なくとも2つのメモリエレメントの第2が、集積回路アレイの複数の境界コアの境界コアの1つおよび複数のアレイコアの1つのアレイコアからデータを収集する、
    集積回路。
  6. 請求項3に記載の集積回路であって、
    複数のアレイコアのそれぞれは、長方形を有し、且つ、
    複数の乗算アキュムレータの1つは、複数のアレイコアのそれぞれの長方形の中に配列される、
    集積回路。
  7. 請求項1に記載の集積回路であって、さらに、
    統合メモリとインタフェースする第1の周囲メモリおよび第2の周囲メモリを含み、
    第1の周囲メモリは、集積回路アレイの第1の周囲側に沿って配列され、および第1の周囲ロードストアとインタフェースし、
    第2の周囲メモリは、集積回路アレイの第2の周囲側に沿って配列され、および第2の周囲ロードストアとインタフェースする
    集積回路。
  8. 請求項1に記載の集積回路であって、さらに、
    メインメモリと集積回路アレイとの間に直接メモリアクセスを可能にする階層的メモリ構造を含み、階層的メモリ構造は、
    集積回路アレイとインタフェースし、および先入れ先出し方式においてデータを伝達し、および受信する複数のデュアルFIFOと、
    それぞれが複数のデュアルFIFOのそれぞれのデュアルFIFOとインタフェースし、およびそれぞれのデュアルFIFOから受信された、および/またはそれぞれのデュアルFIFOへのロードを保留するいずれかのデータの1つまたは複数のロードを格納する複数の周囲ロードストアと、
    それぞれが複数の周囲ロードストアのそれぞれの周囲ロードストアとインタフェースし、およびメインメモリとインタフェースする複数の周囲メモリと、
    を含む、集積回路。
  9. 請求項8に記載の集積回路であって、さらに、
    データ移動命令を実行するときに、階層的メモリ構造と集積回路アレイとの間のデータの移動を制御する複数の周囲コントローラ、
    を含む、集積回路。
  10. 請求項8に記載の集積回路であって、
    階層的メモリ構造は、データ転送の間にデータアクセスおよびデータ再構築を可能にする二次元の直接メモリアクセスとして実行することのできる、
    集積回路。
  11. 請求項に記載の集積回路であって、さらにディスパッチコントローラを含み、
    当該ディスパッチコントローラは、
    (i)データの自動移動を生じさせるデータ移動命令、すなわち(a)集積回路の階層的メモリ構造と集積回路アレイとの間の、(b)それぞれの複数のアレイコアのそれぞれのアレイコアの中の、(c)それぞれのアレイコアの間および集積回路アレイのアレイコアと境界コアとの間の、いずれかのデータ移動命令、および
    (ii)集積回路アレイの複数のアレイコアによって実行される複数の計算を定義する計算命令、
    を提供する、集積回路。
  12. 請求項に記載の集積回路であって、さらに、
    データ移動命令を提供するディスパッチコントローラであって、データ移動命令が、
    (i)集積回路の中でデータの自動移動を定義し、
    (ii)データが予め定められたデータフロースケジュールに従った1つまたは複数の境界コアに提供されない場合、複数の境界コアの1つまたは複数の境界コアを予め定められた一定の値にセットする、
    データフロースケジュールを含むことを特徴とする、
    ディスパッチコントローラを含む、集積回路。
  13. 集積回路であって、
    複数のアレイコアであって、複数のアレイコアのそれぞれのアレイコアが、
    複数の異なるデータ処理回路、および
    データキューレジスタファイル、
    を含む、複数のアレイコアと、
    複数の境界コアであって、複数の境界コアのそれぞれの境界コアが、
    少なくとも一つのレジスタファイル、および
    ディスパッチコントローラ、を含み、
    複数の境界コアの少なくとも一つのサブセットが、複数のアレイコアの第1のサブセットの周囲を包囲し、および、
    複数のアレイコアと複数の境界コアの組み合わせが、集積回路アレイを定義し、
    前記ディスパッチコントローラは、
    (i) データフロースケジュールを含むデータ移動命令であって、データの自動移動を生じさせるデータ移動命令、すなわち(a)集積回路の階層的メモリ構造と集積回路アレイとの間の、(b)それぞれの複数のアレイコアのそれぞれのアレイコアの中の、(c)それぞれのアレイコアの間および集積回路アレイのアレイコアと境界コアとの間の、いずれかのデータ移動命令、および
    (ii) 集積回路アレイの複数のアレイコアによって実行される複数の計算を定義する計算命令、
    を提供し、
    前記データフロースケジュールは、複数の周囲ロードストアの1つまたは複数によって実行可能なメモリアドレスのスケジュールを含むことを特徴とする、集積回路。
  14. 請求項に記載の集積回路であって、さらに、
    ディスパッチコントローラであって、
    複数のアレイコアのそれぞれに計算命令を提供する計算命令ジェネレータ回路、および、
    集積回路の中でデータの予め定められた移動を定義するデータフロースケジュールを提供するデータ移動ジェネレータ回路、
    を含むことを特徴とするディスパッチコントローラを含む、
    集積回路。
  15. 請求項1に記載の集積回路であって、さらに、
    同報通信バスの第1の入力端子にて1つまたは複数の周囲コントローラと電気的通信して、および同報通信バスの複数の出力端子にて複数のアレイコアのサブセットと電気的通信して配列される同報通信バス、
    を含む、集積回路。
  16. 請求項1に記載の集積回路であって、
    複数のアレイコアのそれぞれは、複数アレイコアおよび複数の境界コアの1つまたは複数を含む隣接したコアと双方向通信して配列される、
    集積回路。
  17. 請求項1に記載の集積回路であって、
    複数のアレイコアのそれぞれは、少なくとも1つの論理演算装置をさらに含む、
    集積回路。
JP2020546936A 2018-03-08 2019-03-01 機械知覚および高密度アルゴリズム集積回路 Active JP7386542B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862640478P 2018-03-08 2018-03-08
US62/640,478 2018-03-08
PCT/US2019/020266 WO2019173135A1 (en) 2018-03-08 2019-03-01 A machine perception and dense algorithm integrated circuit

Publications (2)

Publication Number Publication Date
JP2021515339A JP2021515339A (ja) 2021-06-17
JP7386542B2 true JP7386542B2 (ja) 2023-11-27

Family

ID=67394305

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020546936A Active JP7386542B2 (ja) 2018-03-08 2019-03-01 機械知覚および高密度アルゴリズム集積回路

Country Status (4)

Country Link
US (5) US10365860B1 (ja)
EP (1) EP3762831A4 (ja)
JP (1) JP7386542B2 (ja)
WO (1) WO2019173135A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11087067B2 (en) * 2020-01-06 2021-08-10 quadric.io, Inc. Systems and methods for implementing tile-level predication within a machine perception and dense algorithm integrated circuit
US11392667B2 (en) * 2020-12-18 2022-07-19 quadric.io, Inc. Systems and methods for an intelligent mapping of neural network weights and input data to an array of processing cores of an integrated circuit
US11531633B2 (en) * 2021-04-01 2022-12-20 quadric.io, Inc. Systems and methods for intelligently implementing concurrent transfers of data within a machine perception and dense algorithm integrated circuit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100180100A1 (en) 2009-01-13 2010-07-15 Mavrix Technology, Inc. Matrix microprocessor and method of operation
US20140173228A1 (en) 2012-12-18 2014-06-19 Samsung Electronics Co., Ltd. Memory system and system on chip including the same
US20180032335A1 (en) 2016-07-31 2018-02-01 Microsoft Technology Licensing, Llc Transactional register file for a processor

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990001192A1 (en) * 1988-07-22 1990-02-08 United States Department Of Energy Data flow machine for data driven computing
EP0660245A3 (en) * 1993-12-20 1998-09-30 Motorola, Inc. Arithmetic engine
US5708835A (en) * 1995-03-27 1998-01-13 Hughes Electronics Dual-directional parallel processor
US6130551A (en) 1998-01-19 2000-10-10 Vantis Corporation Synthesis-friendly FPGA architecture with variable length and variable timing interconnect
US6167502A (en) * 1997-10-10 2000-12-26 Billions Of Operations Per Second, Inc. Method and apparatus for manifold array processing
US7111155B1 (en) * 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
US6476636B1 (en) * 2000-09-02 2002-11-05 Actel Corporation Tileable field-programmable gate array architecture
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7099983B2 (en) * 2002-11-25 2006-08-29 Lsi Logic Corporation Multi-core communications module, data communications system incorporating a multi-core communications module, and data communications process
US6800884B1 (en) * 2002-12-30 2004-10-05 Actel Corporation Inter-tile buffer system for a field programmable gate array
US6867615B1 (en) * 2003-05-30 2005-03-15 Actel Corporation Dedicated input/output first in/first out module for a field programmable gate array
US7251803B2 (en) * 2003-11-05 2007-07-31 Peter Ramyalal Suaris Memory re-implementation for field programmable gate arrays
US20070247189A1 (en) * 2005-01-25 2007-10-25 Mathstar Field programmable semiconductor object array integrated circuit
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
US7353363B2 (en) * 2006-03-03 2008-04-01 Microsystems, Inc. Patchable and/or programmable decode using predecode selection
US7577820B1 (en) * 2006-04-14 2009-08-18 Tilera Corporation Managing data in a parallel processing environment
US9292825B2 (en) 2006-07-05 2016-03-22 International Business Machines Corporation Multi-tier inventory visibility
US7805575B1 (en) * 2006-09-29 2010-09-28 Tilera Corporation Caching in multicore and multiprocessor architectures
US7743232B2 (en) * 2007-07-18 2010-06-22 Advanced Micro Devices, Inc. Multiple-core processor with hierarchical microcode store
US8045546B1 (en) * 2008-07-08 2011-10-25 Tilera Corporation Configuring routing in mesh networks
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US9189448B2 (en) * 2009-08-20 2015-11-17 Empire Technology Development Llc Routing image data across on-chip networks
US9135215B1 (en) 2009-09-21 2015-09-15 Tilera Corporation Route prediction in packet switched networks
US20110153982A1 (en) * 2009-12-21 2011-06-23 Bbn Technologies Corp. Systems and methods for collecting data from multiple core processors
WO2011079942A1 (en) * 2009-12-28 2011-07-07 Hyperion Core, Inc. Optimisation of loops and data flow sections
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US20120110303A1 (en) * 2010-10-28 2012-05-03 International Business Machines Corporation Method for Process Synchronization of Embedded Applications in Multi-Core Systems
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
EP2761466B1 (en) * 2011-09-30 2020-08-05 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US8971338B2 (en) * 2012-01-09 2015-03-03 Telefonaktiebolaget L M Ericsson (Publ) Expanding network functionalities for openflow based split-architecture networks
US9355058B2 (en) * 2012-10-22 2016-05-31 Intel Corporation High performance interconnect physical layer
US20140208072A1 (en) * 2013-01-18 2014-07-24 Nec Laboratories America, Inc. User-level manager to handle multi-processing on many-core coprocessor-based systems
US10318444B2 (en) * 2013-04-11 2019-06-11 The Regents Of The University Of California Collective memory transfer devices and methods for multiple-core processors
US9256278B2 (en) * 2013-08-20 2016-02-09 Winbond Electronics Corp. Devices and methods for multi-core memory
US9378174B2 (en) * 2013-11-04 2016-06-28 Xilinx, Inc. SERDES receiver oversampling rate
US9245125B2 (en) 2014-02-27 2016-01-26 Nec Laboratories America, Inc. Duleak: a scalable app engine for high-impact privacy leaks
US11449452B2 (en) * 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US10133504B2 (en) * 2016-04-06 2018-11-20 Futurewei Technologies, Inc. Dynamic partitioning of processing hardware
US10282808B2 (en) * 2016-05-27 2019-05-07 Intel Corporation Hierarchical lossless compression and null data support
US10776684B1 (en) * 2016-11-02 2020-09-15 National Technology & Engineering Solutions Of Sandia, Llc Mixed core processor unit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100180100A1 (en) 2009-01-13 2010-07-15 Mavrix Technology, Inc. Matrix microprocessor and method of operation
US20140173228A1 (en) 2012-12-18 2014-06-19 Samsung Electronics Co., Ltd. Memory system and system on chip including the same
US20180032335A1 (en) 2016-07-31 2018-02-01 Microsoft Technology Licensing, Llc Transactional register file for a processor

Also Published As

Publication number Publication date
US20190310801A1 (en) 2019-10-10
US10365860B1 (en) 2019-07-30
US10474398B2 (en) 2019-11-12
US20200225884A1 (en) 2020-07-16
US20210326078A1 (en) 2021-10-21
US20200034082A1 (en) 2020-01-30
EP3762831A1 (en) 2021-01-13
US10642541B2 (en) 2020-05-05
WO2019173135A1 (en) 2019-09-12
US11086574B2 (en) 2021-08-10
JP2021515339A (ja) 2021-06-17
EP3762831A4 (en) 2022-04-06

Similar Documents

Publication Publication Date Title
US11907726B2 (en) Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit
JP7386543B2 (ja) 機械知覚および高密度アルゴリズム集積回路を実装するためのシステムおよび方法
CN109102065B (zh) 一种基于PSoC的卷积神经网络加速器
JP7386542B2 (ja) 機械知覚および高密度アルゴリズム集積回路
EP3480748A1 (en) Neural network hardware
US11531633B2 (en) Systems and methods for intelligently implementing concurrent transfers of data within a machine perception and dense algorithm integrated circuit
US20200356370A1 (en) Systems and methods for implementing core-level predication within a machine perception and dense algorithm integrated circuit
US20210334450A1 (en) Systems and methods for implementing tile-level predication within a machine perception and dense algorithm integrated circuit
WO2020163171A1 (en) Systems and methods for implementing a random access augmented machine perception and dense algorithm integrated circuit
US11714556B2 (en) Systems and methods for accelerating memory transfers and computation efficiency using a computation-informed partitioning of an on-chip data buffer and implementing computation-aware data transfer operations to the on-chip data buffer
US11392667B2 (en) Systems and methods for an intelligent mapping of neural network weights and input data to an array of processing cores of an integrated circuit
US20230055528A1 (en) Systems and methods for executing a programmable finite state machine that accelerates fetchless computations and operations of an array of processing cores of an integrated circuit
KR102441520B1 (ko) 필터 분해 기법을 이용한 에너지 효율적 재구성형 cnn 가속기 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230626

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: 20231010

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231107

R150 Certificate of patent or registration of utility model

Ref document number: 7386542

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150