JP7279064B2 - テンソルデータ用のメモリ構成 - Google Patents

テンソルデータ用のメモリ構成 Download PDF

Info

Publication number
JP7279064B2
JP7279064B2 JP2020549701A JP2020549701A JP7279064B2 JP 7279064 B2 JP7279064 B2 JP 7279064B2 JP 2020549701 A JP2020549701 A JP 2020549701A JP 2020549701 A JP2020549701 A JP 2020549701A JP 7279064 B2 JP7279064 B2 JP 7279064B2
Authority
JP
Japan
Prior art keywords
tensor
module
data
buffer
write
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
JP2020549701A
Other languages
English (en)
Other versions
JP2021518601A (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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2021518601A publication Critical patent/JP2021518601A/ja
Application granted granted Critical
Publication of JP7279064B2 publication Critical patent/JP7279064B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24143Distances to neighbourhood prototypes, e.g. restricted Coulomb energy networks [RCEN]
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Input (AREA)
  • Memory System (AREA)

Description

本開示は概して、ニューラルネットワークにおけるテンソルデータ用のフレキシブルでスケーラブルなメモリ構成に関する。
背景
ニューラルネットワークにおけるデータはテンソルと見なされ、多次元アレイとして格納される。たとえば、ベクトルはランク1のテンソルであり、行列はランク2のテンソルである。3つのカラーチャネル(R、GおよびB)を有する2D画像はランク3のテンソルである。経時的に収集した3D医療画像はランク4のテンソルとして編成され得る。
ニューラルネットワークは計算グラフとして表わすことができ、このグラフ内の各ノードは計算層である。データテンソルメモリは、1つの層が生成するデータテンソルを次の層が消費するように、2つの層の間に配置され得る。
AlexNetおよびVGGNetは、一連の層として実現されるニューラルネットワークの例である。別の層からの入力を受信しない入力層を除いて、1つの層の出力は前の層の出力のみに依存する。最近のより高精度の畳み込みニューラルネットワークは、より一般的なニューラルネットトポロジを有する。これらのネットワーク内の層は、一連の層ではなく、「直並列グラフ」または「spグラフ」とも称され得る2端子の直並列有向グラフのノードである。GoogLeNetおよびResNetは、直並列グラフトポロジを示すニューラルネットワークの例である。
ハードウェアアーキテクチャのスペクトルがこれらの層を処理し得る。スペクトルの一端に、層モジュールまたは単に「モジュール」が各層の出力を計算するように実現される。スペクトルの他端では、汎用のモジュールが層を反復的に処理する。これら2つの極端の間で、層は、各モジュールが1つ以上の層の出力を計算するが、すべての層について計算するモジュールはないように、モジュールのネットワーク全体にわたって分割され得る。データテンソルメモリを介して、1つのモジュールが次のモジュールにデータを送信する。また、複数の層を処理するモジュールが、1つの層からの出力データを反復的な層処理のためにそれ自体にフィードバックする。このメモリの設計が本発明の主題である。
画像分類に適用される畳み込みニューラルネットワークの最近の成功を受けて、データテンソルメモリの多くの実現例は画像中心である。各チャネルからの2次元(2D)画像は、並列処理のために演算部の2Dアレイに空間的に分配される。この手法の欠点は、画像次元が変化すると、高効率を維持するために演算アレイが変化しなければならず、それに応じてデータテンソルメモリを再設計しなければならないことである。さらに、演算アレイを再次元化できない場合は効率が低下する。
概要
開示される回路構成は、複数のRAM回路と、メモリコントローラと、処理回路のアレイとを含む。各RAM回路は、少なくとも1つの読出しポートおよび少なくとも1つの書込みポートを含む。メモリコントローラは、複数のRAM回路内のテンソルバッファの複数のバンク内に配置されたテンソルデータにアクセスするように構成される。メモリコントローラは、共有の読出しアドレスバスと共有の読出しイネーブル信号線とによって複数のRAM回路の各々の少なくとも1つの読出しポートに結合され、共有の書込みアドレスバスと複数の書込みイネーブル信号線のそれぞれのサブセットとによって複数のRAM回路の各々の少なくとも1つの書込みポートに結合される。メモリコントローラはさらに、複数のRAM回路内のテンソルバッファのうちの異なるテンソルバッファに異なる時間にアクセスするための読出しアドレス、読出しイネーブル信号、書込みアドレス、および書込みイネーブル信号を生成するように構成される。処理回路のアレイは、処理回路の複数の行および複数の列を含む。処理要素の行の複数のサブセットのうちの各サブセットは、読出しデータバスによってRAM回路のうちのそれぞれ1つの少なくとも1つの読出しポートに結合される。処理要素の最終行は、書込みデータバスによって複数のRAM回路の各々の少なくとも1つの書込みポートに結合される。処理回路のアレイは、テンソルデータに対してテンソル演算を実行するように構成され、処理回路の各アレイ内の各行の処理回路は、同一のテンソルデータを入力するように結合される。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。
いくつかの実施形態では、少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含んでもよく、少なくとも1つの書込みポートは第1の書込みポートおよび第2の書込みポートを含んでもよい。メモリコントローラはさらに、第1の読出しポートを介してテンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第2の読出しポートを介してテンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第1の書込みポートを介してテンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、第2の書込みポートを介してテンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成するように構成されてもよい。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。メモリコントローラはさらに、処理回路の別のアレイからのデータについて、テンソルバッファのうちのモジュール間テンソルバッファX0へのデータの書込みを可能にすることとモジュール間テンソルバッファX1へのデータの書込みを可能にすることとを交互に行ない、処理回路のアレイによるテンソルバッファX0からのデータの読出しを可能にすることとテンソルバッファX1からのデータの読出しを可能にすることとを交互に行なうように構成されてもよい。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。メモリコントローラはさらに、テンソルバッファのうちのモジュール内テンソルバッファB0へのデータの書込みを可能にすることとモジュール内テンソルバッファB1へのデータの書込みを可能にすることとを交互に行ない、処理回路のアレイによるテンソルバッファB0からのデータの読出しを可能にすることとテンソルバッファB1からのデータの読出しを可能にすることとを交互に行なうように構成されてもよい。
いくつかの実施形態では、メモリコントローラはさらに、テンソルバッファのうちのモジュール内テンソルバッファB2へのデータの書込みを可能にすることとモジュール内テンソルバッファB3へのデータの書込みを可能にすることとを交互に行ない、処理回路のアレイによるテンソルバッファB2からのデータの読出しを可能にすることとテンソルバッファB3からのデータの読出しを可能にすることとを交互に行なうように構成されてもよい。
いくつかの実施形態では、少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含んでもよく、少なくとも1つの書込みポートは第1の書込みポート、第2の書込みポート、および第3の書込みポートを含んでもよい。メモリコントローラはさらに、第1の読出しポートを介してテンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第2の読出しポートを介してテンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第1の書込みポートを介してテンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、第2の書込みポートを介してテンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、第3の書込みポートを介してテンソルバッファの第5のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成するように構成されてもよい。
Figure 0007279064000001
別の開示される回路構成は、パイプライン内に結合される複数のN個のモジュールを含む。パイプライン内の複数のN個のモジュールのうちの第2のモジュールから第Nのモジュールは、前のモジュールから出力されたテンソルデータを入力する。各モジュールは、複数のRAM回路と、メモリコントローラと、処理回路のアレイとを含む。各RAM回路は、少なくとも1つの読出しポートおよび少なくとも1つの書込みポートを含む。メモリコントローラは、複数のRAM回路内のテンソルバッファの複数のバンク内に配置されたテンソルデータにアクセスするように構成される。メモリコントローラは、共有の読出しアドレスバスと共有の読出しイネーブル信号線とによって複数のRAM回路の各々の少なくとも1つの読出しポートに結合され、共有の書込みアドレスバスと複数の書込みイネーブル信号線のそれぞれのサブセットとによって複数のRAM回路の各々の少なくとも1つの書込みポートに結合される。メモリコントローラはさらに、複数のRAM回路内のテンソルバッファのうちの異なるテンソルバッファに異なる時間にアクセスするための読出しアドレス、読出しイネーブル信号、書込みアドレス、および書込みイネーブル信号を生成するように構成される。処理回路のアレイは、処理回路の複数の行および複数の列を含む。処理要素の行の複数のサブセットのうちの各サブセットは、読出しデータバスによってRAM回路のうちのそれぞれ1つの少なくとも1つの読出しポートに結合される。処理要素の最終行は、書込みデータバスによって複数のRAM回路の各々の少なくとも1つの書込みポートに結合される。処理回路のアレイは、テンソルデータに対してテンソル演算を実行するように構成され、処理回路の各アレイ内の各行の処理回路は、同一のテンソルデータを入力するように結合される。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。
いくつかの実施形態では、少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含んでもよく、少なくとも1つの書込みポートは第1の書込みポートおよび第2の書込みポートを含んでもよい。メモリコントローラはさらに、第1の読出しポートを介してテンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第2の読出しポートを介してテンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第1の書込みポートを介してテンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、第2の書込みポートを介してテンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成するように構成されてもよい。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。メモリコントローラはさらに、処理回路の別のアレイからのデータについて、テンソルバッファのうちのモジュール間テンソルバッファX0へのデータの書込みを可能にすることとモジュール間テンソルバッファX1へのデータの書込みを可能にすることとを交互に行ない、処理回路のアレイによるテンソルバッファX0からのデータの読出しを可能にすることとテンソルバッファX1からのデータの読出しを可能にすることとを交互に行なうように構成されてもよい。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。メモリコントローラはさらに、テンソルバッファのうちのモジュール内テンソルバッファB0へのデータの書込みを可能にすることとモジュール内テンソルバッファB1へのデータの書込みを可能にすることとを交互に行ない、処理回路のアレイによるテンソルバッファB0からのデータの読出しを可能にすることとテンソルバッファB1からのデータの読出しを可能にすることとを交互に行なうように構成されてもよい。
いくつかの実施形態では、メモリコントローラはさらに、テンソルバッファのうちのモジュール内テンソルバッファB2へのデータの書込みを可能にすることとモジュール内テンソルバッファB3へのデータの書込みを可能にすることとを交互に行ない、処理回路のアレイによるテンソルバッファB2からのデータの読出しを可能にすることとテンソルバッファB3からのデータの読出しを可能にすることとを交互に行なうように構成されてもよい。
いくつかの実施形態では、少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含んでもよく、少なくとも1つの書込みポートは第1の書込みポート、第2の書込みポート、および第3の書込みポートを含んでもよい。メモリコントローラはさらに、第1の読出しポートを介してテンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第2の読出しポートを介してテンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、第1の書込みポートを介してテンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、第2の書込みポートを介してテンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、第3の書込みポートを介してテンソルバッファの第5のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成するように構成されてもよい。
Figure 0007279064000002
開示される方法は、メモリコントローラが、複数のテンソルバッファのうちの異なるテンソルバッファ内のテンソルデータに異なる時間にアクセスするための読出しアドレス、読出しイネーブル信号、書込みアドレス、および複数の書込みイネーブル信号を生成することを含む。テンソルデータは、複数のRAM回路内のテンソルバッファの複数のバンク内に配置され、各RAM回路は少なくとも1つの読出しポートおよび少なくとも1つの書込みポートを含む。上記方法は、メモリコントローラからすべての複数のRAM回路の少なくとも1つの読出しポートに、各読出しアドレスおよび読出しイネーブル信号を並列に送信し、メモリコントローラからすべての複数のRAM回路の少なくとも1つの書込みポートに、各書込みアドレスを並列に送信する。上記方法はさらに、複数のRAM回路のうちの1つの少なくとも1つの書込みポートに、複数の書込みイネーブル信号のサブセットをそれぞれ送信することを含む。上記方法は、複数のRAM回路から処理回路のアレイにテンソルデータを入力する。処理回路のアレイは、処理回路の複数の行および複数の列を含む。処理要素の行の複数のサブセットのうちの各サブセットは、読出しデータバスによってRAM回路のうちのそれぞれ1つの少なくとも1つの読出しポートに結合される。処理要素の最終行は、書込みデータバスによって複数のRAM回路の各々の少なくとも1つの書込みポートに結合される。上記方法はさらに、処理回路の各アレイによってテンソルデータに対してテンソル演算を実行することを含む。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよい。各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含んでもよく、少なくとも1つの書込みポートは第1の書込みポートおよび第2の書込みポートを含んでもよい。上記方法はさらに、メモリコントローラが、第1の読出しポートを介してテンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成することと、メモリコントローラが、第2の読出しポートを介してテンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成することと、メモリコントローラが、第1の書込みポートを介してテンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成することと、メモリコントローラが、第2の書込みポートを介してテンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成することとを含んでもよい。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。上記方法はさらに、処理回路の別のアレイからのデータについて、テンソルバッファのうちのモジュール間テンソルバッファX0へのデータの書込みを可能にすることとモジュール間テンソルバッファX1へのデータの書込みを可能にすることとを交互に行なうことと、処理回路のアレイによるテンソルバッファX0からのデータの読出しを可能にすることとテンソルバッファX1からのデータの読出しを可能にすることとを交互に行なうこととを含んでもよい。
いくつかの実施形態では、テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含んでもよく、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含んでもよい。上記方法はさらに、テンソルバッファのうちのモジュール内テンソルバッファB0へのデータの書込みを可能にすることとモジュール内テンソルバッファB1へのデータの書込みを可能にすることとを交互に行なうことと、処理回路のアレイによるテンソルバッファB0からのデータの読出しを可能にすることとテンソルバッファB1からのデータの読出しを可能にすることとを交互に行なうこととを含んでもよい。
その他の特徴は、以下の詳細な説明および請求項を検討することによって認識されるであろう。
開示されるシステムおよび方法の各種局面および特徴は、以下の詳細な説明を再考し図面を参照すると明らかになるであろう。
テンソルバッファの種類間の階層関係を示す図である。 モジュール(m-1)、m、および(m+1)、ならびにニューラルネットワークのモジュール間にピンポンメモリを実現するモジュール間テンソルバッファを示す図である。 モジュールがニューラルネットワークの複数の層の演算を実行し、モジュール内テンソルバッファをピンポンメモリとして使用して1つの層の出力を次の処理層のためにこのモジュールにフィードバックする、例示的なマルチレベル回路図である。 図の上部にGoogleLeNetニューラルネットワークの5層におけるパイプラインビュー演算を示し、図の下部にインセプション層3a演算およびインセプション層3b演算の分解図を示す図である。 演算スケジュールおよびテンソルバッファの使用を示す図である。 テンソルバッファの複数のバンクを格納して当該バンクにアクセスするためのメモリ構成を含む、ニューラルネットワークの複数の層を処理するための回路構成を示す図である。 例示的なアプリケーションに係るテンソルバッファの複数のバンクを格納して当該バンクにアクセスするためのメモリ構成を含む、ニューラルネットワークの複数の層を処理するための回路構成を示す図である。 本開示の実現例と一致する処理要素の回路図である。 開示される回路およびプロセスをその上で実現し得るプログラマブル集積回路(IC)を示す図である。
詳細な説明
以下の説明では、本明細書で提示する具体例を説明するために数多くの具体的な詳細事項を記載する。しかしながら、その他の1つ以上の例および/またはこれらの例の変形が以下の具体的な詳細事項すべてがなくても実施され得ることは、当業者にとって明らかなはずである。他の場合において、周知の特徴は、本明細書における例の説明が不明瞭になることを避けるべく、詳細に記載していない。説明し易くするために、同一の参照番号を異なる図面で使用して同一要素または同一要素のその他の例を示す場合がある。
開示される回路構成によると、一群のRAMを一緒に使用してフレキシブルなマルチポートのデータテンソルメモリを形成して、所望のデータ帯域幅を処理回路のアレイに提供する。一群のRAMは、複数の層を処理する処理回路が、1つの処理層からの出力データを次の層の処理のためにフィードバックすることができるように構築される。開示されるメモリ構成は2次元の画像アプリケーションに限定されず、異なるアプリケーションにスケーラブルである。
開示される回路および方法は複数のRAM回路を含んでもよく、その各々が少なくとも1つの読出しポートおよび少なくとも1つの書込みポートを有する。メモリコントローラが、RAM回路内のテンソルバッファの複数のバンクに格納されたテンソルデータにアクセスするように構成される。メモリコントローラは、共有の読出しアドレスバスと共有の読出しイネーブル信号線とによってRAM回路の各読出しポートに結合される。メモリコントローラはまた、共有の書込みアドレスバスと書込みイネーブル信号線のそれぞれのサブセットとによってRAM回路の各書込みポートに結合される。RAM回路内のテンソルバッファのうちの異なるテンソルバッファは、メモリコントローラが、読出しアドレス、読出しイネーブル信号、書込みアドレス、および書込みイネーブル信号をRAM回路に生成することによって、異なる時間にアクセスされる。
処理回路のアレイがRAM回路に結合される。処理回路のアレイの行のそれぞれのサブセットは、RAM回路のうちの1つの各読出しポートのデータピンに結合される。アレイ内の処理要素の最終行は、すべてのRAM回路の各書込みポートの書込みピンに結合される。処理回路のアレイ内の各行の処理回路は、それぞれのRAM回路から同一のテンソルデータを入力するように結合される。処理回路のアレイは、テンソルデータに対してテンソル演算を実行するように構成された処理回路の複数の行および複数の列を含む。
開示されるメモリ構成は、従来の手法に対して数多くの利点を提供する。すべてのテンソルバンクは、同一の読出しアドレスおよび書込みアドレスを並列に共有する。メモリコントローラはテンソルバンクの数に気づかないので、メモリコントローラハードウェアおよびソフトウェアの可搬性を最大化することができる。
メモリ構成は、さまざまな固有のSRAM寸法に適合可能である。たとえば、Xilinx BRAMおよびUltraRAMは限られた一組の寸法をサポートするのに対して、ASICはテープアウト前に任意のカスタムSRAM寸法を指定することができる。この開示されるメモリ構成は、基本となるSRAMの固有の寸法に容易に適合可能である。SRAMをビルディングブロックとして用いて、処理要素(PE)のアレイをサーブするためのテンソルバッファのテンソルバンクを最初に構築することができる。テンソルバンクのデータ帯域幅は、PEのアレイの一部またはすべての帯域幅と一致する。1つのバンクが十分な帯域幅を有していない場合は、複数の並列バンクが必要な帯域幅を提供するように構築され得る。
テンソルバッファをテンソルバンクに編成すると、基本となるSRAMの物理的寸法が上層プログラムから切離されて、ハードウェアアーキテクチャが、フィールドプログラマブルゲートアレイ(FPGA)、システム・オン・チップ(SoC)、システム・イン・パッケージ(SiP)、および特定用途向け集積回路(ASIC)などのプラットフォーム間で移植可能になる。
図1は、テンソルバッファの種類間の階層関係を示す。データテンソルメモリは1つ以上の2ポートRAM(1つの読出しポートおよび1つの書込みポート)を備える。2ポートRAMはテンソルバッファのバンクとして配置され得る。テンソルバッファは、データテンソルを格納するために割当てられるメモリの一部である。各バンクは、たとえば2~6個のテンソルバッファを実現し得る。テンソルバッファのバンクは、1つ以上のRAMによって格納が提供される一群の複数のテンソルバッファであり、バンク内のテンソルバッファのうちの2つ以上は書込み制御および書込みデータを共有し、バンク内のテンソルバッファのうちの2つ以上は読出し制御を共有する。各バンク内のバッファは、最大で2つの読出しポートおよび2つの書込みポートを使用し得る。
テンソルバッファ102は、モジュール間テンソルバッファ104またはモジュール内テンソルバッファ106として分類され得る。モジュール間テンソルバッファは、モジュールmによって出力されてモジュールm+1によって処理されるテンソルバッファである。モジュール内テンソルバッファは、モジュールmによって生成されてさらにモジュールmによって処理されるテンソルバッファである。テンソルバッファを表わす際には、モジュールmによって処理されるテンソルバッファを上付き文字(m)で示す。文脈が明確であれば、モジュール内バッファについては上付き文字(m)を省略する場合がある。
Figure 0007279064000003
モジュール内テンソルバッファ106は、ネットワーク・イン・ネットワーク(network-in-network)テンソルバッファ112、内部テンソルバッファ114、または並列パイプライン並列バッファ116であり得る。ネットワーク・イン・ネットワークテンソルバッファは、ニューラルネットワークの1つの層の一組の演算によって生成され、このニューラルネットワークの同一の計算サブグラフ内の異なる層の別の一組の演算によって処理される(たとえば、インセプション3aの内部の3×3リデュースは、これも同一のインセプション3a計算サブグラフ内にある3×3層のためのネットワーク・イン・ネットワークテンソルを生成する)テンソルバッファである。内部テンソルバッファは、異なる計算サブグラフ内の1つの層の演算によって生成されて次の層の演算によって処理されるテンソルバッファである。並列パイプラインテンソルバッファは、上流モジュール間テンソルバッファ、ネットワーク・イン・ネットワークテンソルバッファ、およびネットワーク・イン・ネットワーク内部テンソルバッファと並列にモジュールによって処理され得るテンソルバッファである。
テンソルバッファをモジュール間バッファおよびモジュール内バッファに分けると、モジュールをパイプライン内で演算するように独立して設計することができるため、設計再利用が最大化される。1つのモジュールの設計者は、出力サンプルスケジュールをパイプライン内の次のモジュールの入力サンプルスケジュールと正確に(すなわち、サイクルまで)一致させる必要はない。1つのモジュールの平均出力サンプルレートを次のモジュールの入力サンプルレートと一致させるだけで十分である。
Figure 0007279064000004
本明細書に記載されるおよび/または図面に示される動作および活動のうちの1つ以上を実行するように複数のモジュールが実現され得る。これらの文脈において、「モジュール」は、テンソルバッファの格納を提供すること、テンソルバッファにアクセスすること、およびテンソルデータを処理することなど、これらのまたは関連の動作/活動のうちの1つ以上を実行する回路である。たとえば、モジュールは、RAM回路、プログラマブル論理回路、特定用途向け集積回路(ASIC)、および/または1つ以上のマイクロプロセッサ回路の組合わせを含み得る。
図3は、モジュールがニューラルネットワークの複数の層の演算を実行し、モジュール内テンソルバッファをピンポンメモリとして使用して1つの層の出力を次の処理層のためにこのモジュールにフィードバックする、例示的なマルチレベル回路図を示す。レベル202はモジュール1、2および3を示しており、モジュール1はモジュール2が処理するデータを生成し、モジュール2はモジュール3が処理するデータを生成する。モジュール2は、仮想ニューラルネットワークの層1~4の処理を実行する。レベル204は、ニューラルネットワークの層1~4の処理においてモジュール2が使用するモジュール間テンソルバッファおよびモジュール内テンソルバッファを示す。レベル206はモジュール2のより詳細な図を示す。
Figure 0007279064000005
図4および図5は、特定の例示的なニューラルネットワークについてテンソルバッファのバンクを実現するための開示される手法のアプリケーションを示す。例示的なニューラルネットワークはGoogLeNetである。GoogLeNetニューラルネットワークのいくつかの態様を参照してさまざまな回路および方法を説明するが、開示される手法は他のニューラルネットワークに適合可能かつ適用可能であることが認識されるであろう。
例示的な実現例では、多層モジュールは、テンソルバッファに結合され、かつインセプション3a 352からインセプション5b 354までのすべてのインセプション層を計算する、デュアルパイプライン計算ユニットを含み得る。テンソルバッファは、図6および図7に示されるように読出しポートおよび書込みポートを共有するテンソルバンク内に実現される。同一のポートを共有するテンソルバッファには、テンソルバンク内の異なるアドレスが割当てられる。
図4は、図の上部に、GoogleLeNetニューラルネットワーク350のインセプションサブグラフ(代替的に「インセプションモジュール」とも称され得る)内の7層におけるパイプラインビュー演算を示し、図の下部に、インセプション層3a演算およびインセプション層3b演算の分解図を示す。インセプション層3aおよび3bはブロック352および354として示されており、図4の下部にはインセプション層3aおよび3bの各々の内部のデータフローが示されている。円356は畳み込み層2によって出力されてインセプション層3aによって入力されるデータテンソルであり、円358はインセプション層3aによって出力されてインセプション層3bによって入力されるデータテンソルであり、円360はインセプション層3bによって出力されてインセプション層4aによって入力されるデータテンソルである。演算ブロックの内部の括弧付きの数字は、ブロックの演算が行なわれる順序を示す。すなわち、演算の順序は、インセプション層3aにおける1×1畳み込み、インセプション層3aにおける3×3リダクション畳み込み、インセプション層3aにおける3×3畳み込み、等である。
Figure 0007279064000006
並列処理パイプラインは、インセプション層3aにおける3×3畳み込みおよびプレプール演算の両方の演算順序が3番目であり、インセプション層3bにおける3×3畳み込みおよびプレプール演算の両方の演算順序が9番目であることによって、図4に示されている。
図5は、演算スケジュールおよびテンソルバッファの使用を示す。図5はまた、各インセプション層の演算が2つの並列パイプラインとして実現され得る方法を示す。一次パイプラインは融合畳み込み、整流線形ユニット(ReLU)、およびポストプーリング演算を実行することができ、これらは、1×1、3×3リデュース、3×3、5×5リデュース、プールプロジェクション、および5×5とラベル付けされたブロックとして示されている。二次パイプラインは、プレプールブロックによって示されるようにプレプーリング演算を実行することができる。テンソルバンクを管理するための開示される手法は、各パイプラインの特定の演算によって限定されない。しかしながら、テンソルバンクを構築する際、一次パイプラインは最も計算集約的で高価であり、データを待つ必要はないはずである。テンソルバッファは全体として、高価な一次パイプラインを忙しい状態に保つ。
各演算は正方形のブロックとして描かれており、各テンソルバッファは立方体として描かれている。空間上の理由から、例示的なスケジュールにおける時間は曲がりくねって進行する。演算は、2つの並列パイプライン全体にわたって左から右に描かれている。
矢印はデータ依存性を表わす。たとえば、インセプション3a 352では、第1、第3、第5、および第6の演算はすべて、テンソルバッファBの異なるアドレスに書込む。第1、第3、第5、および第6の演算は、互いの出力に上書きしない。実線の各矢印線は、演算のテンソルバッファへの依存性を表わし、破線の各矢印線は、スケジュール内の後の時間におけるテンソルバッファの、スケジュール内の先の時間における同一のテンソルバッファの処理への依存性を表わす。出力要素はテンソルバッファBにおいて組合わされ、インセプション層3b 354における第7、第8、第10の演算、およびプレプーリング演算によってすべて読出される。第9のプレプーリング演算および3×3畳み込み演算は並列実行される。左を指すデータ依存性矢印がない限り、その他のスケジュールも可能である。たとえば、第4および第5の演算はスワップ可能である。
なお、プレプーリングは3×3畳み込みと並列に演算するように常にスケジューリングされる。なぜなら、3×3畳み込みはプレプーリングとテンソルバッファを共有しておらず、図らずも一次パイプラインにおいて最も多くの時間を消費するため、プレプーラ(pre-pooler)の設計に課すタイミング制約が最も緩いからである。一次パイプライン内のすべての演算は、データ消費を実行可能であるときに、当該演算が必要なデータを有している。この結果、一次パイプラインはデータを待つ必要がなく、完全に利用され続ける。
Figure 0007279064000007
図6は、テンソルバッファの複数のバンクを格納して当該バンクにアクセスするためのメモリ構成を含む、ニューラルネットワークの複数の層を処理するための回路構成400を示す。回路構成は、メモリコントローラ402と、複数のRAM404、…、406と、アレイ処理要素(PE)とを含む。PEのアレイは、PEの複数のセクション408、…、410を含む。RAMの各々は、モジュール間テンソルバッファ412および414ならびにモジュール内テンソルバッファ416および418を含み得るテンソルバンクを格納するように構成される。
RAM/テンソルバンク404、…、406の実現例はアプリケーション要件に従って異なり得る。例示的なSoC/SiP実現例では、RAM/テンソルバンクは、高帯域幅メモリ(HBM)DRAMおよびオフチップメモリ・ダブルデータレート(DDR)DRAMなどのより大きなインパッケージメモリによって補完されるオンダイSRAMであってもよい。オンダイSRAMはオンダイキャッシュにおいて効果的に動作させることができる。
Figure 0007279064000008
PEのアレイセクション408、…、410は、RAM404、…、406にそれぞれ結合される。PEの各アレイセクションは、融合畳み込み、整流線形ユニット(ReLU)、およびポストプーリングのインセプション層演算を実行することなどによって、関連するRAM/テンソルバンク内のテンソルバッファを処理する。ニューラルネットワークの各層は深いネスト化ループとして実現され、コントローラはPEのアレイ上でネスト化ループを実行する。コントローラは、データの処理を完了するまで制御するために、すべてのループ範囲を追跡する。
簡潔性および柔軟性のために、テンソルバッファの基本的なRAMビルディングブロックは固定寸法であってもよく、たとえばDワード×Mビット/ワードであってもよい。8ビットデータ要素を使用するニューラルネットワークの場合、4096×64のRAM(4096ワード×64ビット/ワード)が4096×8要素のメモリビルディングブロックである。6つの例示的なテンソルバッファの各々は同一の帯域幅(同一のデータバス幅、および1RAMサイクル当たり同一の最大読出し/書込み回数)を有する。
Figure 0007279064000009
例示的な実現例では、ビルディングブロックRAMは、RAMクロックサイクルごとに1回の読出しおよびさらに1回の書込みのスループットを有することができ、このRAMは、RAMクロックサイクルごとに8要素をPEのアレイに提供することができる。このRAMは、PEのアレイから同一のレートでデータを受信することもできる。8要素の各々は、半分の帯域幅でアレイの特定の1行を送る。具体的には、RAMサイクルごとに8個の8ビット要素をテンソルバッファから読出すことができ、この8ビット要素はPEの8行にそれぞれ入力される。PEは、2倍のRAMクロックレートで演算可能である。より多くの行を有するより大きな処理アレイにより多くの並列のテンソルバッファバンクを結合して、データテンソルメモリを処理要素アレイと共にスケーラブルにすることができる。
PEアレイ内の各行は、データテンソルから1つのチャネルを受信し得る。N次元データテンソルの場合、各行はN-1次元で演算を実行する。たとえば、画像処理において、各行は1つのカラーチャネルを処理し、各PEは2D畳み込みを計算する。入力データがランク4のテンソルである場合、各チャネルはランク3のテンソル(オブジェクトの3Dスキャンなど)である。データテンソルバッファ読出しアドレスシーケンスは、さまざまなデータテンソル次元に適合するように変更可能である。データテンソルバッファの基本的構造は、ビルディングブロックRAMからテンソルバッファの1つのバンクまで、そしてバンクの並列セットまで、同一のままである。
RAM/テンソルバンク404、…、406の各々は、読出しポートおよび書込みポートを有する。いくつかの実現例では、RAMは図7に示されるように2つの書込みポートを有し得る。RAMの読出しポートは、メモリコントローラからの同一の読出し制御信号線に結合される。すなわち、RAM404、…、406は、メモリコントローラから同一の読出しアドレス420および読出しイネーブル信号422を受信するように結合される。RAM404および406の読出しポートのデータ出力ピンは、読出しデータバス信号線424および426に接続される。それによって、複数のRAMにまたがるデータテンソルをRAMから並列に読出し、PEのアレイ内のPEの行のそれぞれのサブセットによって処理することができる。
RAM404、…、406の書込みポートは、同一の書込みアドレス線428に結合される。メモリコントローラは、書込みイネーブル信号のそれぞれのセットをRAMの書込みポートに与える。各RAMに与えられる書込みイネーブル信号の数は、PEのアレイの行の各サブセット内の行の数に対応する。この例における各アレイは8行を含み、メモリコントローラはそれぞれの書込みイネーブル信号を各RAMに与える。PEの行のM個のサブセット、およびR本の行を含む各サブセットの場合、書込みイネーブル信号の総数はM*R=Nである。RAM404は書込みイネーブル信号1から8を受信し、RAM406は書込みイネーブル信号kからNを受信する。
Figure 0007279064000010
PEの例示的な各セクション408、…、410は、セクション内のPEの上位行からの出力によって示されるように8個の8ビットテンソル要素を出力する。上位行PEの合成出力は、RAMの書込みポートのデータピンに接続される。たとえば、セクション408の上位行PEの合成出力は、RAM404および406の書込みポートのデータピン(図示せず)に接続された書込みデータバス430として示されている。
PEアレイは行列・ベクトル乗算器である。例示的なアプリケーションでは、各RAM/バンク404、…、406はPEアレイの8レーン(8行)をサーブする。なぜなら、通常はRAM/バンクを実現するSRAMの幅に制限があるからである。たとえば、SRAMは64ビット幅とすることができ、これは8個の8ビットレーンをサポートすることになる。例示的なアプリケーションでは、PEのアレイはN行およびN列を有し、ここでN=96であり、N=16である。したがって、アレイは96/8=12個のSRAMバンクを使用する。
例示的なPEアレイが米国特許第9,779,786号に記載されている。このPEアレイは行列・ベクトル演算z=Wxを実行する。WはN×N行列であり、xおよびzは両方ともN成分を有するベクトルである。図示のPEアレイを90度回転させると、PEアレイ行は行列の行に対応し、PEアレイ列は行列の列に対応することになる。
PEの例示的なアレイはパイプライン方式で動作する。アレイの1行および1列内のPEによって生成された出力は、次の行および同一の列内のPEへの入力として与えられる。たとえば、PE432の出力はPE434に入力される。列内の上位PEによって出力された列データは、メモリRAM/テンソルバンクに格納され、対応する列内のPEからの出力データの組合わせ(たとえば合計)を表わす。PEアレイ(N列)の出力はすべてのRAM/バンク404、…、406のデータ書込みポートにフィードバックされる。この出力は次のモジュールにも送られ得る。
いくつかの実現例によると、予め定められた初期化値が、各列内のたとえばPE432などの第1のPEに与えられ得る。PEは、初期化値を、前のPEからの出力として受信したかのように使用し、それによってアレイ内のPEは実質的に同一の論理および構成を有する。初期化値は、レジスタ、RAM回路、またはPE内に位置する同様の記憶回路によって与えられ得る。
画像処理アプリケーションのいくつかの例示的な実現例では、RAM404、…、406はまず、画像の一組の入力特徴マップ(IFM)に対応するデータを格納する。システムは、2次元(2D)畳み込みカーネルを画像データの小さな部分(「スライスデータ」)に適用することによって各IFMを処理する。各IFMの入力スライスデータは、メモリコントローラ402によって反復的に読出され、PEのアレイによる処理のためにRAMによって出力され得る。少なくとも2つの異なる畳み込みカーネル用のマスクがPEのローカルメモリ回路(図示せず)に格納され、入力スライスデータのセットに適用され得る。
特定の例として、画像処理は、ソース画像のさまざまなカラーチャネルに対応するIFM上で実行され得る。各カラーチャネルは、異なる一組の光学周波数に対応する。各行および反復に関して、スライスデータは、行ごとに異なる画像の同様の部分から取られ得る。列内のPEの各々は、PEのローカルメモリ回路に格納されたマスクに対して規定される、異なる一組の畳み込みカーネルを適用する。この結果は出力特徴マップ(OFM)としてRAM404、…、406に格納される。
Figure 0007279064000011
表1に、モジュールmのメモリコントローラ506の、RAM/テンソルバンク502および504の読出しおよび書込みポートへの接続をまとめている。この接続は図7にも示されている。
Figure 0007279064000012
Figure 0007279064000013
表1では、読出しポート0がすべてのアドレスをカバーし、その他のポートの各々がメモリのアドレスのサブセットをカバーすると示しているが、メモリが2つの読出し・3つの書込みポートメモリセルで作られた場合はすべてのポートがメモリのすべてのアドレスをカバーし得ることが理解されるであろう。
図8は、本開示の実現例と一致する処理要素の回路図である。この回路図は、本明細書に記載および図示されるさまざまな実現例で使用可能な処理要素の例を示す。処理要素は、ローカルメモリブロック602および演算部604を含む。ローカルメモリブロックは2つのメモリ回路606および608を有し、その各々がそれぞれの入力ポート(D)および出力ポート(Q)を有する。マルチプレクサ612は、read_page信号に応じて出力から選択する。read_page信号は、現在アクティブである結合メモリ空間の部分(またはページ)を識別する。
いくつかの実現例によると、各メモリ回路606および608は読出しモードまたは書込みモードのいずれでも動作可能であるが、同時に両方のモードでは動作しない。モードはR/W入力信号の状態によって決定される。メモリ回路606および608のR/W入力は、we_ping信号およびwe_pong信号によってそれぞれ制御される。we_ping信号およびwe_pong信号はさらに、waddr_hi信号を処理要素のクロスポイント行IDと比較することによってゲートされ得る。異なるマスクが、共有のデータバス(wdata)を引き続き使用しながら、各処理要素にロードされ得るように、各処理要素には異なるIDが割当てられ得る。さまざまな実現例によると、低アドレスビットについての2つの異なるアドレスバス(ping_addr_loおよびpong_addr_lo)を使用して、書込みポインタと読出しポインタとを区別する。たとえば、ping_addr_loはメモリ回路606がアクティブであるときに読出しポインタによって駆動され得るのに対して、pong_addr_loは書込みポインタによって駆動され得る。読出しポインタおよび書込みポインタは、それぞれのアクティブ/非アクティブ状態の変化に応答してpingアドレスバスまたはpongアドレスバスにスワップ可能である。
演算部604は乗算器614および加算器616を含み、これらはX_data信号線上で受信した入力スライスデータに対してテンソル演算を行う。乗算器614はまた、マルチプレクサ612の出力をテンソル演算への入力として取込む。乗算器614の出力は、y_data_cascade信号からのデータと共に加算器616に与えられる。y_data_cascade信号は、列内の前の処理要素の出力から与えられる。処理要素が列内の第1の処理要素である場合、信号のソースは、処理要素または他の場所に格納され得る初期化値に対応し得る。加算器616は、特定の実現例に応じて、バイアス入力も受信し得る。
図8は、入力クロック(三角形)記号を有するボックスによって表わされる多数のクロック制御レジスタ(フリップフロップ)を示す。当該レジスタを使用して適切な信号タイミングを提供することができる。たとえば、レジスタブロック618は、メモリ回路606および608が使用する制御信号およびデータ信号を同期させて遅延させる。レジスタブロック618は、y_data_cascadeデータ入力との同期性を維持するために、列に沿った各点で制御信号を遅延させるのに有用であり得る。別の例として、レジスタ610を使用して、行内の後続の処理要素に対して行データをパイプライン化することができる。
図9は、開示される回路およびプロセスをその上で実現し得るプログラマブル集積回路(IC)900を示す。プログラマブルICはSoCまたはSiPとして実現される場合もあり、フィールドプログラマブルゲートアレイ論理(FPGA)を、他のプログラマブルリソースと合わせて含む。FPGA論理は、いくつかの異なる種類の配置されたプログラマブル論理ブロックを含み得る。たとえば、図9が示すプログラマブルIC900は、マルチギガビットトランシーバ(MGT)901と、構成可能論理ブロック(CLB)902と、ランダムアクセスメモリブロック(BRAM)903と、入出力ブロック(IOB)904と、構成およびクロッキング論理(CONFIG/CLOCKS)905と、デジタル信号処理ブロック(DSP)906と、特殊入出力ブロック(I/O)907(たとえば、クロックポート)と、デジタルクロックマネージャ、アナログ-デジタル変換器、およびシステム監視論理などの他のプログラマブル論理908と含む、多数の異なるプログラマブルタイルを含む。FPGA論理を有するプログラマブルICとしては、さらに専用プロセッサブロック(PROC)910と、内部および外部再構成ポート(図示せず)とを含むものもある。
いくつかのFPGA論理において、各プログラマブルタイルはプログラマブルインターコネクト要素(INT)911を含み、このインターコネクト要素は、隣接する各タイルにおける対応のインターコネクト要素との間の標準接続を有する。したがって、プログラマブルインターコネクト要素は、全体として図示のFPGA論理のプログラマブルインターコネクト構造を実現する。図9の上部に含まれている例で示すように、プログラマブルインターコネクト要素INT911は、同一のタイル内のプログラマブル論理要素との間の接続も有する。
たとえば、CLB902は、1つのプログラマブルインターコネクト要素INT911に加えて、ユーザ論理を実現するようにプログラムされ得る構成可能論理要素CLE912を含み得る。BRAM903は、1つ以上のプログラマブルインターコネクト要素に加えてBRAM論理要素(BRL)913を含み得る。通例、1つのタイルに含まれるインターコネクト要素の数は、タイルの高さによって決まる。図示された実施形態においては、BRAMタイルの高さはCLB5個分と等しいが、他の数(たとえば4個)が用いられてもよい。DSPタイル906は、適切な数のプログラマブルインターコネクト要素に加えて、DSP論理要素(DSPL)914を含み得る。IOB904は、たとえば、プログラマブルインターコネクト要素INT911の1つのインスタンスに加えて、入出力論理要素(IOL)915の2つのインスタンスを含み得る。当業者には明らかであるが、たとえば入出力論理要素915に接続される実際のI/Oボンドパッドは、図示されたさまざまな論理ブロック上に金属を積層することによって製造され、典型的には入出力論理要素915の領域にあるとは限らない。
図示された実施形態においては、ダイの中心付近の列領域(図9において陰影付きで示す領域)は、構成、クロック、および他の制御論理に用いられる。この列から伸びる水平領域909を用いて、プログラマブルICの幅にわたってクロックおよび構成信号を分配する。なお、「列」領域および「水平」領域という呼称は、図面を縦置きして見た向きを基準としている。
図9に示されるアーキテクチャを使用するプログラマブルICには、当該プログラマブルICの大部分を構成する規則正しい列構造に割って入る追加の論理ブロックが含まれる場合もある。この追加の論理ブロックは、プログラマブルブロックおよび/または専用論理であってもよい。たとえば、図9に示されるプロセッサブロックPROC910は、いくつかのCLBおよびBRAMのいくつかの列にまたがる。
なお、図9が意図するのは、プログラマブルICのアーキテクチャの一例にすぎない。1列中の論理ブロックの数、列の相対幅、列の数および順番、列に含まれる論理ブロックの種類、論理ブロックの相対サイズ、ならびに、図9の上部に含まれているインターコネクト/論理の実現例は、単なる例として示されている。たとえば典型的には、ユーザ論理の効率的な実現を容易にするために、実際のプログラマブルICでは、CLBが現れる場合は必ず2列以上のCLBが隣接して含まれている。
態様および特徴が別々の図に記載されている場合があるが、組合わせが明示的に図示されていないとしても、または、組合わせとして明示的に説明されていないとしても、ある図中の特徴を別の図中の特徴と組合わせてもよいことが理解されるであろう。
上述の方法およびシステムは、さまざまなニューラルネットワークに適用可能であると考えられる。本明細書を考慮することによって、他の態様および特徴が当業者に明らかになるであろう。上述の方法およびシステムは、ソフトウェアを実行するように構成された1つ以上のプロセッサとして、特定用途向け集積回路(ASICとして)、またはプログラマブル論理デバイスの論理として実現されてもよい。本明細書および図面は例示にすぎず、本発明の真の範囲は以下の特許請求の範囲によって示されるということが意図される。

Claims (13)

  1. 回路構成であって、
    複数のRAM回路を備え、各RAM回路は少なくとも1つの読出しポートおよび少なくとも1つの書込みポートを含み、前記回路構成はさらに、
    メモリコントローラを備え、前記メモリコントローラは、前記複数のRAM回路内のテンソルバッファの複数のバンク内に配置されたテンソルデータにアクセスするように構成され、共有の読出しアドレスバスと共有の読出しイネーブル信号線とによって前記複数のRAM回路の各々の前記少なくとも1つの読出しポートに結合され、共有の書込みアドレスバスと複数の書込みイネーブル信号線のそれぞれのサブセットとによって前記複数のRAM回路の各々の前記少なくとも1つの書込みポートに結合され、前記メモリコントローラはさらに、前記複数のRAM回路内の前記テンソルバッファのうちの異なるテンソルバッファに異なる時間にアクセスするための読出しアドレス、読出しイネーブル信号、書込みアドレス、および書込みイネーブル信号を生成するように構成され、前記回路構成はさらに、
    処理回路の複数の行および複数の列を含む処理回路のアレイを備え、前記処理回路の行の複数のサブセットのうちの各サブセットは、読出しデータバスによって前記RAM回路のうちのそれぞれ1つの前記少なくとも1つの読出しポートに結合され、処理回路の最終行は、書込みデータバスによって前記複数のRAM回路の各々の前記少なくとも1つの書込みポートに結合され、
    前記処理回路のアレイは、前記テンソルデータに対してテンソル演算を実行するように構成され、
    前記処理回路のアレイ内の各行の前記処理回路は、同一のテンソルデータを入力するように結合される、回路構成。
  2. 前記テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含み、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含む、請求項1に記載の回路構成。
  3. 前記少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含み、前記少なくとも1つの書込みポートは第1の書込みポートおよび第2の書込みポートを含み、
    前記メモリコントローラはさらに、
    前記第1の読出しポートを介して前記テンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、
    前記第2の読出しポートを介して前記テンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、
    前記第1の書込みポートを介して前記テンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、
    前記第2の書込みポートを介して前記テンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成するように構成される、請求項1に記載の回路構成。
  4. 前記テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含み、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含み、前記メモリコントローラはさらに、
    処理回路の別のアレイからのデータについて、前記テンソルバッファのうちのモジュール間テンソルバッファX0へのデータの書込みを可能にすることとモジュール間テンソルバッファX1へのデータの書込みを可能にすることとを交互に行ない、
    前記処理回路のアレイによる前記テンソルバッファX0からのデータの読出しを可能にすることと前記テンソルバッファX1からのデータの読出しを可能にすることとを交互に行なうように構成される、請求項1に記載の回路構成。
  5. 前記テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含み、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含み、前記メモリコントローラはさらに、
    前記テンソルバッファのうちのモジュール内テンソルバッファB0へのデータの書込みを可能にすることとモジュール内テンソルバッファB1へのデータの書込みを可能にすることとを交互に行ない、
    前記処理回路のアレイによる前記テンソルバッファB0からのデータの読出しを可能にすることと前記テンソルバッファB1からのデータの読出しを可能にすることとを交互に行なうように構成される、請求項1に記載の回路構成。
  6. 前記メモリコントローラはさらに、
    前記テンソルバッファのうちのモジュール内テンソルバッファB2へのデータの書込みを可能にすることとモジュール内テンソルバッファB3へのデータの書込みを可能にすることとを交互に行ない、
    前記処理回路のアレイによる前記テンソルバッファB2からのデータの読出しを可能にすることと前記テンソルバッファB3からのデータの読出しを可能にすることとを交互に行なうように構成される、請求項5に記載の回路構成。
  7. 前記少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含み、前記少なくとも1つの書込みポートは第1の書込みポート、第2の書込みポート、および第3の書込みポートを含み、
    前記メモリコントローラはさらに、
    前記第1の読出しポートを介して前記テンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、
    前記第2の読出しポートを介して前記テンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成し、
    前記第1の書込みポートを介して前記テンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、
    前記第2の書込みポートを介して前記テンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成し、
    前記第3の書込みポートを介して前記テンソルバッファの第5のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成するように構成される、請求項1に記載の回路構成。
  8. Figure 0007279064000014
  9. システムであって、
    パイプライン内に結合される複数のN個のモジュールを備え、前記パイプライン内の前記複数のN個のモジュールのうちの第2のモジュールから第Nのモジュールは、前記パイプライン内の前記複数のN個のモジュールのうちの前のモジュールから出力されたテンソルデータを入力し、各モジュールは請求項1~8のいずれか1項に記載の回路構成を含む、システム。
  10. 方法であって、
    メモリコントローラが、複数のテンソルバッファのうちの異なるテンソルバッファ内のテンソルデータに異なる時間にアクセスするための読出しアドレス、読出しイネーブル信号、書込みアドレス、および複数の書込みイネーブル信号を生成することを備え、前記テンソルデータは、複数のRAM回路内のテンソルバッファの複数のバンク内に配置され、各RAM回路は少なくとも1つの読出しポートおよび少なくとも1つの書込みポートを含み、前記方法はさらに、
    前記メモリコントローラからすべての前記複数のRAM回路の前記少なくとも1つの読出しポートに、各読出しアドレスおよび読出しイネーブル信号を並列に送信することと、
    前記メモリコントローラからすべての前記複数のRAM回路の前記少なくとも1つの書込みポートに、各書込みアドレスを並列に送信することと、
    前記複数のRAM回路のうちの1つの前記少なくとも1つの書込みポートに、前記複数の書込みイネーブル信号のサブセットをそれぞれ送信することと、
    前記複数のRAM回路から処理回路の複数の行および複数の列を含む処理回路のアレイに、テンソルデータを入力することとを備え、前記処理回路の行の複数のサブセットのうちの各サブセットは、読出しデータバスによって前記RAM回路のうちのそれぞれ1つの前記少なくとも1つの読出しポートに結合され、処理回路の最終行は、書込みデータバスによって前記複数のRAM回路の各々の前記少なくとも1つの書込みポートに結合され、各行の前記処理回路は同一のテンソルデータを入力するように結合され、前記方法はさらに、
    前記処理回路のアレイによって前記テンソルデータに対してテンソル演算を実行することを備える、方法。
  11. 前記テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含み、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含み、前記少なくとも1つの読出しポートは第1の読出しポートおよび第2の読出しポートを含み、前記少なくとも1つの書込みポートは第1の書込みポートおよび第2の書込みポートを含み、前記方法はさらに、
    前記メモリコントローラが、前記第1の読出しポートを介して前記テンソルバッファの第1のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成することと、
    前記メモリコントローラが、前記第2の読出しポートを介して前記テンソルバッファの第2のサブセットをアドレス指定するアドレスおよび読出しイネーブル信号を生成することと、
    前記メモリコントローラが、前記第1の書込みポートを介して前記テンソルバッファの第3のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成することと、
    前記メモリコントローラが、前記第2の書込みポートを介して前記テンソルバッファの第4のサブセットをアドレス指定するアドレスおよび書込みイネーブル信号を生成することとを備える、請求項10に記載の方法。
  12. 前記テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含み、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含み、前記方法はさらに、
    処理回路の別のアレイからのデータについて、前記テンソルバッファのうちのモジュール間テンソルバッファX0へのデータの書込みを可能にすることとモジュール間テンソルバッファX1へのデータの書込みを可能にすることとを交互に行なうことと、
    前記処理回路のアレイによる前記テンソルバッファX0からのデータの読出しを可能にすることと前記テンソルバッファX1からのデータの読出しを可能にすることとを交互に行なうこととを備える、請求項10に記載の方法。
  13. 前記テンソルバッファはモジュール間テンソルバッファおよびモジュール内テンソルバッファを含み、各バンクは少なくとも1つのモジュール間テンソルバッファおよび少なくとも1つのモジュール内テンソルバッファを含み、前記方法はさらに、
    前記テンソルバッファのうちのモジュール内テンソルバッファB0へのデータの書込みを可能にすることとモジュール内テンソルバッファB1へのデータの書込みを可能にすることとを交互に行なうことと、
    前記処理回路のアレイによる前記テンソルバッファB0からのデータの読出しを可能にすることと前記テンソルバッファB1からのデータの読出しを可能にすることとを交互に行なうこととを備える、請求項10に記載の方法。
JP2020549701A 2018-03-16 2019-01-16 テンソルデータ用のメモリ構成 Active JP7279064B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/923,950 US10346093B1 (en) 2018-03-16 2018-03-16 Memory arrangement for tensor data
US15/923,950 2018-03-16
PCT/US2019/013773 WO2019177686A1 (en) 2018-03-16 2019-01-16 Memory arrangement for tensor data

Publications (2)

Publication Number Publication Date
JP2021518601A JP2021518601A (ja) 2021-08-02
JP7279064B2 true JP7279064B2 (ja) 2023-05-22

Family

ID=65324604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020549701A Active JP7279064B2 (ja) 2018-03-16 2019-01-16 テンソルデータ用のメモリ構成

Country Status (6)

Country Link
US (1) US10346093B1 (ja)
EP (1) EP3766067A1 (ja)
JP (1) JP7279064B2 (ja)
KR (1) KR102680573B1 (ja)
CN (1) CN112119459B (ja)
WO (1) WO2019177686A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579921B2 (en) * 2018-08-29 2023-02-14 Alibaba Group Holding Limited Method and system for performing parallel computations to generate multiple output feature maps
US11100193B2 (en) * 2018-12-07 2021-08-24 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning
CN111324294B (zh) * 2018-12-17 2023-11-07 地平线(上海)人工智能技术有限公司 存取张量数据的方法和装置
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
US11501142B1 (en) * 2019-04-03 2022-11-15 Xilinx, Inc. Tiling control circuit for downloading and processing an input tile based on source and destination buffer availability
DE102019214010A1 (de) * 2019-09-13 2021-03-18 Robert Bosch Gmbh Datenspeicher und Verfahren zum Betreiben des Datenspeichers
CN112925727B (zh) * 2021-03-16 2023-03-03 杭州慧芯达科技有限公司 Tensor高速缓存及访问结构及其方法
CN113126913A (zh) * 2021-03-26 2021-07-16 井芯微电子技术(天津)有限公司 一种基于并行ram的数据阵列管理方法、装置和存储设备
CN113836049B (zh) * 2021-09-17 2023-08-08 海飞科(南京)信息技术有限公司 存储器访问方法和电子装置
US20230140542A1 (en) * 2021-11-01 2023-05-04 Advanced Energy Industries, Inc. Tensor non-linear signal processing random access memory
CN115860079B (zh) * 2023-01-30 2023-05-12 深圳市九天睿芯科技有限公司 神经网络加速装置、方法、芯片、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015506025A (ja) 2011-12-07 2015-02-26 ザイリンクス インコーポレイテッドXilinx Incorporated 競合のないメモリ構成
JP6250782B1 (ja) 2016-12-01 2017-12-20 ヴィア アライアンス セミコンダクター カンパニー リミテッド ビクティムキャッシュ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822341A (en) * 1995-04-06 1998-10-13 Advanced Hardware Architectures, Inc. Multiport RAM for use within a viterbi decoder
US6445636B1 (en) * 2000-08-17 2002-09-03 Micron Technology, Inc. Method and system for hiding refreshes in a dynamic random access memory
US7714870B2 (en) * 2003-06-23 2010-05-11 Intel Corporation Apparatus and method for selectable hardware accelerators in a data driven architecture
US7359276B1 (en) * 2005-09-27 2008-04-15 Xilinx, Inc. Multi-port system for communication between processing elements
US8018766B2 (en) * 2009-05-29 2011-09-13 Seagate Technology Llc Concurrent intersymbol interference encoding in a solid state memory
CN106415435B (zh) * 2013-09-17 2020-08-11 帕克维辛股份有限公司 用于呈现信息承载时间函数的方法、装置和系统
US10353860B2 (en) * 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US10236043B2 (en) * 2016-06-06 2019-03-19 Altera Corporation Emulated multiport memory element circuitry with exclusive-OR based control circuitry
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
CN107392107B (zh) * 2017-06-24 2020-09-11 天津大学 一种基于异构张量分解的人脸特征提取方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015506025A (ja) 2011-12-07 2015-02-26 ザイリンクス インコーポレイテッドXilinx Incorporated 競合のないメモリ構成
JP6250782B1 (ja) 2016-12-01 2017-12-20 ヴィア アライアンス セミコンダクター カンパニー リミテッド ビクティムキャッシュ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ

Also Published As

Publication number Publication date
WO2019177686A1 (en) 2019-09-19
KR102680573B1 (ko) 2024-07-01
CN112119459B (zh) 2024-07-05
EP3766067A1 (en) 2021-01-20
US10346093B1 (en) 2019-07-09
JP2021518601A (ja) 2021-08-02
CN112119459A (zh) 2020-12-22
KR20200132927A (ko) 2020-11-25

Similar Documents

Publication Publication Date Title
JP7279064B2 (ja) テンソルデータ用のメモリ構成
US20230244485A1 (en) Compute-in-memory systems and methods
KR102687633B1 (ko) 텐서 연산들 및 가속
EP3757901A1 (en) Schedule-aware tensor distribution module
US10515135B1 (en) Data format suitable for fast massively parallel general matrix multiplication in a programmable IC
US10354733B1 (en) Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC
US10984500B1 (en) Inline image preprocessing for convolution operations using a matrix multiplier on an integrated circuit
JPH0425586B2 (ja)
KR20230172043A (ko) 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛
US10411709B1 (en) Circuit arrangements and methods for dividing a three-dimensional input feature map
Garofalo et al. A heterogeneous in-memory computing cluster for flexible end-to-end inference of real-world deep neural networks
US20220179823A1 (en) Reconfigurable reduced instruction set computer processor architecture with fractured cores
US11106968B1 (en) Circuit arrangements and methods for traversing input feature maps
US11705207B2 (en) Processor in non-volatile storage memory
JP7495924B2 (ja) Mac回路中の異なるカーネルを使用してデータのセットに対して連続するmac演算を実施すること
US20220188613A1 (en) Sgcnax: a scalable graph convolutional neural network accelerator with workload balancing
Yoshida et al. The approach to multiple instruction execution in the GMICRO/400 processor
US20220269436A1 (en) Compute accelerated stacked memory
Wang et al. Benchmarking DNN Mapping Methods for the In-Memory Computing Accelerators
Dou et al. A unified co-processor architecture for matrix decomposition
US11704536B1 (en) Convolution circuitry
Kolala Venkataramaniah Energy Efficient ASIC/FPGA Neural Network Accelerators
Nakano et al. FIFO-based hardware sorters for high bandwidth memory
Hattink et al. A scalable architecture for cnn accelerators leveraging high-performance memories
Shafiq et al. FEM: A Step Towards a Common Memory Layout for FPGA Based Accelerators

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230306

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230510

R150 Certificate of patent or registration of utility model

Ref document number: 7279064

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150