CN108733596A - 用于脉动阵列架构的静态可调度馈送和排放结构 - Google Patents
用于脉动阵列架构的静态可调度馈送和排放结构 Download PDFInfo
- Publication number
- CN108733596A CN108733596A CN201810233525.8A CN201810233525A CN108733596A CN 108733596 A CN108733596 A CN 108733596A CN 201810233525 A CN201810233525 A CN 201810233525A CN 108733596 A CN108733596 A CN 108733596A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- processing element
- feeder
- array
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/08—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/067—Bidirectional FIFO, i.e. system allowing data transfer in two directions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
- Image Processing (AREA)
Abstract
公开了一种在集成电路的电路中实施的脉动阵列,其包括处理元件阵列,该处理元件阵列包括处理元件。脉动阵列包括通信耦合到处理元件阵列的一个或多个馈送器电路。一个或多个馈送器电路中的每个包括:第一区域,其被配置成接收存储在所述集成电路外部的存储器中的数据;以及第二区域,其被配置成向所述处理元件阵列发送所接收的数据,其中,从所述存储器传输到所述处理元件阵列的数据被所述第一区域和所述第二区域双重缓冲。脉动阵列还包括通信耦合到所述处理元件阵列的一个或多个排出电路,所述排出电路包括被配置成存储由所述处理元件阵列输出的数据的一个或多个存储器缓冲器。
Description
相关申请的交叉引用
本申请要求享有2017年4月21日提交的题为“Statically schedulable Feed andDrain Structure for Systolic Array Architecture”的美国临时专利申请No.62/488635的优先权和权益,在此通过引用的方式将该美国临时专利申请的全文并入。
技术领域
本公开总体上涉及矩阵乘法运算。更具体而言,本公开涉及实施用于矩阵乘法运算的脉动阵列矩阵乘法器的方法和设备。
背景技术
本节意在向读者介绍可能与以下描述和/或主张的本公开的各方面相关的技术的各方面。相信本论述有助于为读者提供背景信息以便于更好地理解本公开的各方面。因此,应当理解,这些陈述要从这一角度阅读,并且不能作为现有技术被接纳。
很多数值计算应用,例如高性能计算、深度学***台上实施脉动阵列架构可能存在困难。例如,可能存在与外部存储器(例如,集成电路外部的存储器、芯片外存储器)带宽限制和FPGA片上存储器限制相关的挑战。具体而言,芯片外存储器带宽可能不足以维持脉动阵列的峰值操作性能,而芯片上存储器带宽可以更高但仍然受限。
附图说明
在阅读以下具体实施方式并参考附图时,本公开的优点可以变得显而易见,在附图中:
图1A是根据实施例的示出了脉动阵列的示例性架构的框图;
图1B是根据实施例的进入和离开图1A的脉动阵列的处理元件的数据馈送的示意图;
图2是根据实施例的图1A的脉动阵列的馈送器阵列微架构的示意图;
图3是根据实施例的图1A的脉动阵列的排出微架构的示意图;
图4是根据实施例的由图1A的脉动阵列执行的矩阵乘法中的矩阵结构的示意图;
图5是根据实施例的图4的矩阵结构的预先布置的示意图;
图6是根据实施例的示出了用于从图5的预先布置的矩阵结构向图1A的脉动阵列中馈送矩阵数据的馈送模式的示意图。
图7是根据实施例的示出了图5的预先布置的矩阵结构的进入图1A的脉动阵列的处理元件阵列中的馈送数据流的示意图;
图8是根据实施例的示出了可以用于执行图1A的脉动阵列的实施方式的集成电路***的框图;以及
图9是根据实施例的用于使用本公开的***和方法处理数据集的电子***的示例。
具体实施方式
下面将描述本公开的一个或多个具体实施例。为了提供这些实施例的简明描述,在说明书中未描述实际实施方式的所有特征。应当认识到,在开发任何这种实际实施方式时,如在任何工程学或设计项目中那样,必须要做出众多实施方式特定的决策,以实现开发者的具体目标,例如遵守***相关和商务相关的约束,在一种实施方式和另一种之间,约束可能变化。此外,应当认识到,这种开发努力可能很复杂且消耗时间,但仍然是受益于本公开的普通技术人员着手进行设计、制造和制作的惯例。本文提出并主张权利的技术被参考并应用于可论证地改进当前技术领域的实践性质的实物和具象的示例,并且这样一来,不是抽象的、无形的或纯粹理论的。
这些实施例涉及矩阵乘法,其中可以将矩阵A的每行与矩阵B的每列相乘。数据流可以是预先确定的。矩阵A和B可以被布置成矩阵A被原样使用并且矩阵B被转置的方式。这样可以减小复杂数据排列和用于重新排序的存储器缓冲器的尺寸。矩阵数据可以在馈送器电路处被双重缓冲。可以去除个体反向压力信号和脉动阵列内的用于中间数据的缓冲器。双重缓冲可以实现同时从芯片外存储器获取数据以及向脉动阵列进行数据流传输。双重缓冲也可以隐藏芯片外存储器延迟。本公开鼓励高的数据重复使用,因为矩阵的每个值都可以在脉动阵列处理元件(PE)内共享。
馈送器电路具有两个区域作为其存储器缓冲器(双重缓冲)。一个区域用于从芯片外加载,而一个区域用于向PE中流传输。数据被顺序填充到每个区域中;于是,没有序列发生器或重新排序。所有馈送器电路可以共享同一个馈送器控制器,从而能够进行集中馈送控制并减少控制逻辑单元。可以检查/验证(例如,有效性检查)从每个区域加载数据的完成。每个区域可以基于该区域已完成而具有有效性。在排出先进先出(FIFO)存储器缓冲器已满时,可以从排出电路提供反向压力。可以将重复块用作数据重复使用计数器。
关于排出电路,可以通过静态调度的方式接收脉动阵列结果,因为PE的产生会导致固定的周期性延迟。馈送器区域可以被预先缓冲,并能够进行高数据重复使用,以确保所产生结果的恒定流。停顿可能直接受到影响FIFO存储器缓冲器水平的写入带宽(例如,写入等待请求)的驱动。所有排出电路可以共享同一个控制器,使得能够进行集中排出控制并减少控制逻辑单元。可以通过监测FIFO存储器缓冲器水平来产生FIFO完整信号。排出电路的效率可以与写入带宽成正比。
提出的实施例可以被设计成实现高效率的矩阵乘法和使用诸如神经网络的矩阵结构的任何适当应用。馈送器电路处的双重缓冲实现了静态调度的PE。可以在脉动阵列内充分前馈数据和控制。效率可能直接受到写入带宽的驱动。使用这种预先模式矩阵中数据结构可以减小或消除复杂的数据序列发生器。结果,可以实现高性能和高频电路,其具有减少的控制逻辑单元,而大部分时间可以花在数据流水线操作中。
考虑到以上内容,涉及矩阵乘法脉动阵列的提出的实施例提供用于高效率地实施脉动阵列的方法和相关联的处理微架构。这些可以实施在集成电路(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC)硬件)上。具有静态调度的有效电路用于馈送数据和排出数据,实现了高性能和/或充分前馈数据流,而没有个体反向压力控制信号和复杂的重新排序电路。具体而言,从芯片外存储器向矩阵乘法脉动阵列馈送的数据(例如,具有行和列索引m和n的矩阵Am,n,以及具有行和列索引k和l的矩阵Bk,l)可以被预先布置,从而预先确定数据流以消除其它复杂数据排列和用于重新排序的大存储器缓冲器。可以在馈送器处对数据进行双重缓冲,从而去除个体反向压力信号和脉动阵列内的用于中间数据的缓冲器,使得能够同时从芯片外存储器获取数据并向脉动阵列中进行数据流传输(例如,芯片外存储器的延迟减小)。此外,可以在脉动阵列的处理元件(PE)内共享数据,以促进高数据重复使用(例如,数据交织)。结果,本文论述的用于脉动阵列架构的静态调度馈送和排出电路可以改善芯片外存储器带宽,而这些电路也可以缩放以实施更大尺寸的脉动阵列。
图1A显示了示出在集成电路12上实施的脉动阵列10的示例性架构的框图。集成电路12可以代表例如可编程逻辑器件,例如现场可编程门阵列(FPGA)或包括以本公开的方式设计和/或编程的电路的专用集成电路(ASIC)。脉动阵列10包括二维(2D)处理元件(PE)阵列14,其包括跨越宽度18和高度20的若干PE 16。在例示的实施例中,PE阵列14的宽度18和高度20分别为四和四(例如,PE 16的4行×4列阵列)。PE阵列14沿PE阵列14的正交边缘耦合到馈送器阵列22和馈送器阵列26。馈送器阵列22可以包括若干馈送器24(例如,第一馈送器“馈送器Y1”、第二馈送器“馈送器Y2”等),并且馈送器阵列26可以包括若干馈送器28(例如,第一馈送器“馈送器X1”、第二馈送器“馈送器X2”等)。馈送器阵列22具有高度30并且馈送器阵列24具有宽度32。在例示的实施例中,馈送器阵列22的高度30等于PE阵列14的高度20(例如,四个馈送器24),并且馈送器阵列26的宽度32等于PE阵列14的宽度18(例如,四个馈送器28)。馈送器阵列22和26耦合到外部或芯片外存储器34,例如外部随机存取存储器(RAM)。尽管存储器34被描述为在集成电路12的“外部”,此外或替代地,它可以在芯片上或在集成电路12“内部”。
在操作时,矩阵数据被从外部存储器34加载到馈送器阵列22和26,馈送器阵列22、26缓冲输入矩阵数据并将输入矩阵数据传递到进行矩阵乘法的PE阵列14中。如稍后在图2中所述,馈送阵列22和26中的这种数据缓冲可以实现同时从外部存储器34获取数据并向脉动阵列10中进行数据流传输。类似地,PE阵列14中的PE 16中的每个都具有存储器36,以充当暂时存储计算结果的“存储体”。在PE阵列14内,以线性方式向后续PE 16传播数据传输,如PE 16之间的箭头38所示,沿行或列传递通过PE阵列14。PE 16中的每个负责处理其输入并将处理的数据或结果传递到对应的排出器或汇集器。在例示的实施例中,脉动阵列10包括排出或汇集阵列40,其具有通信耦合到PE阵列14的若干排出器或汇集器42。排出或汇集阵列40可以沿PE阵列14的轴(例如,沿馈送器阵列22或沿馈送器阵列26的边缘或轴)之一设置。排出阵列40的宽度等于馈送器阵列26的宽度32(例如,四个排出器42)。若干排出器42中的每个处理来自PE阵列14的每列的部分结果和/或将其传递到适当位置(例如,***主机)。图3中提供了关于排出阵列40的更多论述。
图1B是根据实施例的进入和离开图1A的脉动阵列10的PE 16的数据馈送的示意图。在例示的实施例中,可以如数据通路23所指示的从馈送器阵列22向PE 16中馈送数据(例如,来自第一矩阵的数据的一部分),并且可以如数据通路27所指示的从馈送器阵列26向PE 16中馈送数据(例如,来自第二矩阵的数据)。可以将处理/计算的数据或结果馈送到并存储于PE 16的存储器36中,如数据通路37所指示的。可以将处理/计算的数据或结果从存储器36馈送到排出阵列40,例如对应的排出器或汇集器,如数据通路39所指示的。在一个实施例中,也可以将处理/计算的数据或结果从存储器36馈送回到PE 16,如数据通路41所指示的。
类似地,可以将数据(例如,来自第一矩阵的数据的一部分)从馈送器阵列22馈送到另一PE 16(例如,PE阵列14中的相邻行中的PE),如数据通路43所指示的。在一个实施例中,正向寄存器45可以沿数据通路43设置,用于正向传输数据。可以将数据(例如,来自第二矩阵的数据的一部分)从馈送器阵列26馈送到另一PE 16(例如,PE阵列14中的相邻列中的PE),如数据通路47所指示的。正向寄存器(例如,正向寄存器45)也可以沿数据通路47设置,用于正向传输数据。
图2示出了用于馈送器阵列(例如,馈送器阵列22或馈送器阵列26)的馈送器微架构50的示例。馈送器微架构50可以包括针对每个馈送器的馈送器电路52。在例示的实施例中,每个馈送器阵列中有四个馈送器(例如,图1A中的馈送器阵列22的四个馈送器24以及馈送器阵列26的四个馈送器28);对应地,馈送器微架构50包括四个馈送器电路52。馈送器电路52中的每个包括存储器缓冲器54,其包括两个区域(例如,双重缓冲),第一区域56和第二区域58。第一区域56从芯片外存储器34向对应的馈送器加载矩阵数据,而第二区域58向PE阵列14中流传输加载的矩阵数据。矩阵数据被顺序加载到第一和第二区域56和58的每个中。这样一来,在一些实施例中,馈送器微架构50可以不包括序列发生器或重新排序引擎。馈送器微架构50还可以包括操作耦合到馈送器电路52的馈送器控制器60。在例示的实施例中,四个馈送器电路52全部耦合到同一馈送器控制器60,从而能够进行集中馈送控制并减少控制逻辑单元的量。在其它实施例中,少于所有馈送器电路52可以耦合到馈送器控制器,并且其余馈送器电路52可以耦合到不同的馈送器控制器。
馈送器控制器60可以包括读取控制器62、有效检查引擎64和反向压力检查引擎66。读取控制器62可以使能经由馈送器电路52读取矩阵数据(例如,矩阵Am,n和矩阵Bk,l,如数据通信箭头68所指示的)。有效检查引擎64可以对第一区域56和第二区域58中的每个进行有效检查。例如,可以检查/验证(例如,有效检查)从第一区域56和第二区域58中的每个加载数据的完成。具体而言,有效检查引擎64可以包括检查第一区域56和/或第二区域58中的数据加载是否完成的块或逻辑单元70,如数据通信箭头72所指示的。反向压力检查引擎66可以提供与来自排出阵列40的反向压力相关的信息。例如,如数据通信箭头74所指示的,在排出器(例如,排出器42)的先进先出(FIFO)存储器缓冲器已满时,可以从排出电路提供表示反向压力的信息(例如,写入等待请求)。在反向压力检查(例如,数据通信箭头74)清空(例如,FIFO存储器缓冲器不满)时,有效检查引擎64可以发送读取请求,如数据通信箭头76所指示的,以获取要馈送到PE阵列14中的读取矩阵数据。有效检查引擎64可以包括确定有效信号80的块或逻辑单元78,有效信号80发起经由馈送器电路52向PE阵列14中加载读取矩阵数据(例如,矩阵Am,n和矩阵Bk,l),如数据通信箭头82所指示的。例如,在(例如,在框78处)接收到有效检查和反向压力检查两者的传递时确定有效信号80。在一些实施例中,反向压力检查引擎66可以包括用作数据重复使用计数器的重复块或逻辑单元84。稍后将论述数据重复使用(例如,数据交织)的示例。
图3示出了用于排出阵列(例如,排出阵列40)的排出微架构90的示例。排出微架构90可以包括针对每个排出器的排出电路92。在例示的实施例中,每个排出阵列中有四个排出器(例如,图1A中的排出阵列40的排出器42);对应地,排出微架构90包括四个排出电路92。排出电路92中的每个包括针对每个对应PE 16的存储器缓冲器94,例如FIFO存储器缓冲器。例如,将来自PE 16中的每个的数据被排出到对应的存储器缓冲器94,例如对应排出电路92的FIFO存储器缓冲器。排出微架构90还包括经由适配器电路98操作耦合到排出电路92的排出控制器96。在例示的实施例中,四个排出电路92全部都耦合到同一排出控制器96,从而能够实现集中排出控制并减少控制逻辑单元的数量。在其它实施例中,少于全部排出电路92可以耦合到排出控制器,并且其余排出电路92可以耦合到不同的排出控制器。排出控制器96可以包括写入控制器100和存储器缓冲器监测器102。写入控制器100可以使能从排出电路92中的每个向适当位置(例如,***主机)写入计算结果(例如,部分计算结果)。例如,适配器98可以包括耦合于相应PE 16和芯片外存储器34之间的数据总线宽度转换器,并且写入控制器100可以操作耦合到数据总线宽度转换器以控制从PE 16输出到芯片外存储器34的数据的流传输。具体而言,与芯片外存储器34的相对较窄的数据总线接口相比,PE16可以在相对较大的宽度上流传输数据。在该情况下,写入控制器100可以控制适配器98的操作以缩窄/集中从PE 16向芯片外存储器34中流传输的输出数据。在一个实施例中,可以在相同尺寸的多个数据包中流传输来自PE 16的输出数据。存储器缓冲器监测器102可以监测存储器缓冲器94中的每个的FIFO水平。具体而言,写入控制器100可以从存储器缓冲器94接收指示反向压力的信息并向存储器缓冲器监测器102传送该信息,如数据通信箭头74所指示的。在存储器缓冲器监测器102确定存储器缓冲器94已满时,排出控制器96可以向馈送器(例如,馈送器阵列22和26)发送信号,如数据通信箭头104所指示的,以停止向PE 16馈送矩阵数据。
另一方面,在没有指示临界反向压力(例如,存储器缓冲器94已满)的数据通信(例如,如箭头74和104所指示)时,可以遵循如箭头106所指示的数据通路接收来自PE阵列14的计算结果(例如,部分计算结果)并将其写入到适当位置(例如,***主机)。可以通过静态调度的方式接收来自脉动阵列10的计算结果,因为结果是由PE 16以固定周期延迟产生的。具体而言,由于馈送器架构50包括双重缓冲区域(例如,第一和第二区域56和58)并且数据流被预先布置和/或预先确定以实现高数据重复使用(例如,交织数据),可以由脉动阵列10将计算结果产生为恒定流。因此,基于上文阐述的馈送器微架构50和排出微架构90,停顿可以直接受写入带宽(例如,写入等待请求,如数据通信箭头74所指示)驱动,写入带宽至少部分取决于存储器缓冲器94的FIFO存储器缓冲器水平。这样一来,在至少一些情况下,排出电路92的效率可以与写入带宽成正比。
接下来,论述将矩阵Am,n和矩阵Bk,l到PE阵列12中的馈送器数据流传输(例如,从馈送器阵列22和26到PE阵列14的数据流),以及存储在芯片外存储器34中的矩阵结构的对应的预先布置。在图4-7中所示的例示中,矩阵数据被预先布置为经由八个馈送器沿每个正交边缘馈送到8×8PE阵列中,但是应当理解,可以将所述过程用于大得多的PE阵列(例如,10×10PE阵列、12×12PE阵列、16×16PE阵列、24×24PE阵列、50×50PE阵列、100×100PE阵列、200×200PE阵列、1000×1000PE阵列或更大)。应当认识到,可以实现具有如下馈送模式的馈送器数据流传输,该馈送模式实现高数据重复使用而无需复杂的数据排列和用于重新排序的大存储器缓冲器,因为矩阵数据(例如,矩阵Am,n和矩阵Bk,l)以预先布置的方式存储于芯片外存储器34中,该方式支持馈送器数据流传输的这种馈送模式。经由馈送器阵列22和26向PE阵列14中流传输的馈送器数据以及芯片外存储器34中存储的预先布置的矩阵结构可能紧密相关,因此,交换矩阵Am,n和矩阵Bk,l的预先布置的矩阵结构将不支持具有本文所述的馈送模式的馈送器数据流传输。
图4是示出了芯片外存储器34上存储的矩阵Am,n的初始矩阵结构110和矩阵Bk,l的初始矩阵结构112的示意图。初始矩阵结构110和112都以行优先次序存储(例如,一行的相继要素彼此相邻;阵列的行要素在存储器中连续)。初始矩阵结构110和112中的每个可以被分成或划分成适当数量的区域。在例示的实施例中,初始矩阵结构110是16×16矩阵(例如,m=n=16),并且初始矩阵结构112也是16×16矩阵(例如,k=l=16)。初始矩阵结构110和112中的每个可以被划分成四个区域,区域0、1、2和3,如所示。区域0包括来自行0-7和列0-7的矩阵数据,区域1包括行0-7和列8-15,区域2包括行8-15和列0-7,并且区域3包括行8-15和列8-15。
图5是示出了芯片外存储器34上存储的矩阵Am,n的初始矩阵结构110的预先布置的矩阵结构114和矩阵Bk,l的初始矩阵结构112的预先布置的矩阵结构116的示意图。初始矩阵结构110和112中的每个可以被进一步分成或划分成适当数量的子区域。在例示的实施例中,初始矩阵结构110和112中的每个被划分成八个子区域,子区域1、子区域2……和子区域8,如所示。具体而言,对于矩阵Am,n,区域0被进一步划分成子区域1和3,区域1被进一步划分成子区域5和7,区域2被进一步划分成子区域2和4,并且区域3被进一步划分成子区域6和8,如所示。然后将子区域1-8重新布置成预先布置的矩阵结构114。
对于矩阵Am,n,随着初始矩阵结构110被重新布置成预先布置的矩阵结构114,矩阵的取向发生改变。具体而言,初始矩阵结构110中的行0-7和列0-3变成预先布置的矩阵结构114中的行0-3和列0-7,初始矩阵结构110中的行8-15和列0-3变成预先布置的矩阵结构114中的行0-3和列8-15,初始矩阵结构110中的行0-7和列4-7变成预先布置的矩阵结构114中的行4-7和列0-7,等等(例如,取向已经改变)。
另一方面,对于矩阵Bk,l,预先布置的矩阵结构116和初始矩阵结构112之间的差异是划分的数量。具体而言,四个区域0-3被进一步划分成子区域1-8,而取向不变。
预先布置的矩阵结构114的子区域中的每个具有高度118×宽度120的尺寸,并且预先布置的矩阵结构116的子区域中的每个具有高度122×宽度124的尺寸。在例示的实施例中,预先布置的矩阵结构114和116均具有四行×八列(例如,高度118=高度122=4倍宽度120=宽度124=8)的尺寸。
图6为示出了分别用于从芯片外存储器34向馈送器阵列22和26馈送来自预先布置的矩阵结构114的矩阵Am,n数据的馈送模式130以及馈送来自预先布置的矩阵结构116的矩阵Bk,l的馈送模式132的示意图。按照相对于时间坐标134馈送矩阵数据的次序布置馈送模式130和132。
对于馈送模式130,将预先布置的矩阵结构114中的矩阵数据Am,n从芯片外存储器34馈送到第一馈送器Y1被例示为示例。具体而言,馈送来自子区域1的数据的一部分(例如,子区域1中的八列数据中的第一列),接着是来自子区域2的数据的一部分(例如,第一列),接着是来自子区域3的数据的一部分(例如,第一列),以及沿时间坐标134以此类推。因此,第一馈送器Y1可以从子区域1接收段141,接着从子区域2接收段142……,接着从子区域3接收段143……,接着从子区域8接收段148。如所示,段141-148被指示为列1。通过相同方式,第二馈送器Y2可以从列2接收段,第三馈送器Y3可以从列3接收段,等等。
应当指出,根据馈送模式130,子区域1的段141对应于初始矩阵结构110中的A0,0、A0,1、A0,2、A0,3,子区域2的段142对应于初始矩阵结构110中的A8,0、A8,1、A8,2、A8,3,等等。这样一来,初始矩阵结构110中的矩阵Am,n的区域0-3中的每个的第一行被馈送器阵列22接收。具体而言,矩阵Am,n的区域0-3中的每个的第一行被第一馈送器Y1接收,矩阵Am,n的区域0-3中的每个的第二行被第二馈送器Y2接收,矩阵Am,n的区域0-3中的每个的第三行被第三馈送器Y3接收,等等。
对于馈送模式132,将预先布置的矩阵结构116中的矩阵数据Bk,l从芯片外存储器34馈送到第一馈送器X1被例示为示例。具体而言,馈送来自子区域1和2的数据的部分(例如,子区域1中的八列数据中的第一列和子区域2中的八列数据中的第一列),接着是来自子区域3和4的数据的部分(例如,第一列),接着是来自子区域5和6的数据的部分(例如,第一列),并且接着是来自子区域7和8的数据的部分(例如,第一列)。因此,第一馈送器X1可以从子区域1和2接收段161,接着从子区域3和4接收段162,接着从子区域5和6接收段163,接着从子区域7和8接收段164,如所示。通过相同的方式,第二馈送器X2可以从子区域1-8中的每个的列2接收段,第三馈送器X3可以从子区域1-8中的每个的列3接收段,等等。
应当指出,根据馈送模式132,子区域1-2的段161对应于初始矩阵结构112中的B0,0、B0,8、B1,0、B1,8、B2,0、B2,8、B3,0和B3,8,子区域3-4的段162对应于初始矩阵结构112中的B4,0、B4,8、B5,0、B5,8、B6,0、B6,8、B7,0、B7,8,等等。这样一来,来自区域0-3的子区域1-8的第一列被第一馈送器X2接收,来自区域0-3的子区域1-8的第二列被第二馈送器X2接收,来自Bk,l的区域0-3的子区域1-8的第三列被第三馈送器X3接收,等等。
图7是分别示出了从馈送器阵列22和26到PE阵列14的矩阵Am,n的馈送器数据流传输170和矩阵Bk,l的馈送器数据流传输172的示意图。具体而言,馈送器数据流传输170和172基于馈送器阵列22和26根据馈送模式130和132接收矩阵数据Am,n和Bk,l的次序或排列。对于图示的馈送器数据流传输170和172,PE阵列14是8×8阵列(例如,高度20=宽度18=8),并被耦合到馈送器阵列22和26,每个馈送器阵列包括八个馈送器。
预先布置的矩阵结构114中的矩阵Am,n数据被馈送到PE阵列14中,使得初始矩阵结构110中的矩阵数据Am,n“相对于区域0-3中的矩阵数据重复两次并交织”。例如,使用第一馈送器Y1论述馈送器数据流传输170。来自区域0-3的段141-148中的每个的矩阵数据被馈送两次(例如,重复两次)。例如,来自段141的A0,0、A0,0、A0,1、A0,1、A0,2、A0,2、A0,3、A0,3,来自段142的A8,0、A8,0、A8,1、A8,1、A8,2、A8,2、A8,3、A8,3和来自段143-148(未示出)的数据的其余部分经由第一馈送器Y1被馈送。术语“交织”可以指通过同一馈送器馈送的数据随时间被共享。例如,来自区域0-3的段141-148中的每个的矩阵数据被交织(例如,通过第一馈送器Y1馈送的数据随时间被共享)。
一旦完成了第一馈送器Y1的数据流传输170,该数据流传输170利用第二馈送器Y2继续,接着是第三馈送器Y3,等等,直到第八馈送器Y8。馈送器Y2-Y8中的每个都从预先布置的矩阵结构114的子区域1-8中的直接相邻的列流传输数据。例如,第二馈送器Y2流传输与由第一馈送器Y1流传输的A0,0、A0,1、A0,2、A0,3和A8,0、A8,1、A8,2、A8,3(在预先布置的矩阵结构114中)直接相邻的A1,0、A1,1、A1,2、A1,3和A9,0、A9,1、A9,2、A9,3。例如,第三馈送器Y3流传输与由第二馈送器Y2流传输的A1,0、A1,1、A1,2、A1,3和A9,0、A9,1、A9,2、A9,3(在预先布置的矩阵结构114中)直接相邻的A2,0、A2,1、A2,2、A2,3和A10,0、A10,1、A10,2、A10,3。
矩阵Bk,l数据被馈送到PE阵列14中,使得矩阵数据Bk,l“在区域0-3中被交织并重复两次”。来自区域0-3的段161-164中的每个的矩阵数据被馈送两次(例如,重复两次)。例如,按照该精确次序将来自段161的B0,0、B0,8、B1,0、B1,8、B2,0、B2,8、B3,0、B3,8馈送两次,并经由第一馈送器X1按照其相应次序将来自段162-164(未示出)的数据的其余部分馈送两次。术语“交织”可以指通过同一馈送器馈送的数据随时间被共享。例如,来自区域0-3的段161-164中的每个的矩阵数据被交织(例如,通过第一馈送器X1馈送的数据随时间被共享)。
一旦完成了第一馈送器X1的数据流传输172,该数据流传输172利用第二馈送器X2继续,接着是第三馈送器X3,等等,直到第八馈送器X8。馈送器X2-X8中的每个都从预先布置的矩阵结构116的子区域1-8中的直接相邻的列流传输数据。例如,第二馈送器X2流传输与由第一馈送器X1流传输的B0,0、B0,8、B1,0、B1,8、B2,0、B2,8、B3,0、B3,8(在预先布置的矩阵结构116中)直接相邻的B0,1、B0,9、B1,1、B1,9、B2,1、B2,9、B3,1、B3,9。例如,第三馈送器X3流传输与由第一馈送器X1流传输的B0,1、B0,9、B1,1、B1,9、B2,1、B2,9、B3,1、B3,9(在预先布置的矩阵结构116中)直接相邻的B0,2、B0,10、B1,2、B1,10、B2,0、B2,10、B3,2、B3,10。
考虑到以上内容,矩阵Am,n和Bk,l的尺寸和PE阵列14的尺寸彼此相关。矩阵Am,n和Bk,l可以尺寸不同(例如,m×n≠l×k)。矩阵Am,n和Bk,l的尺寸可以是脉动阵列10的尺寸的倍数或者可以相应地为零填充。换言之,m可以是为PE阵列14的高度20(或馈送器阵列22的高度30)的任何适当正整数倍的数字或填充到数字的零,并且l可以是为PE阵列14的宽度18(或馈送器阵列26的宽度32)的任何适当正整数倍的数字或填充到数字的零。此外,n必须等于k,以使Amn×Bkl的外积运算能够正常运算,并且n和k除以2可以是任何适当的正整数。例如,矩阵Am,n的尺寸可以是704×256,经由尺寸为22的馈送器阵列22被馈送到尺寸为22×17的PE阵列14中。矩阵Bk,l的尺寸可以是256×544,经由尺寸为17的馈送器阵列26被馈送到尺寸为22×17的PE阵列14中。在该情况下,m是PE阵列14的高度20(或馈送器阵列22的高度30)的32倍,并且n除以2为128;l是PE阵列14的宽度18(或馈送器阵列26的宽度32)的32倍,并且k除以2为128。还应当指出,图5中的子区域1-8中的每个是4×8阵列,因为在例示的实例中,每个PE 16是4输入乘法累积(MAC)模式PE(例如,PE执行四次相继的乘法和累积运算),并且在馈送器阵列22和26中的每个中都有八个馈送器。可以概括出,矩阵Am,n的每个子区域的尺寸=MAC输入模式×馈送器的数量(例如,馈送器24),并且矩阵Bk,l的每个子区域的尺寸=MAC输入模式×馈送器的数量(例如,馈送器26)。MAC输入模式对于矩阵Am,n和Bk,l是恒定的,因为矩阵Am,n行和Bk,l必须是相同长度(m=l)。
图8示出了可以用于向集成电路210上编写脉动阵列的***200的框图。集成电路210可以重新配置(例如,现场可编程门阵列(FPGA))或者可以是专用集成电路(ASIC)。用户可以使用诸如的Quartus版本的设计软件214来实施要编写到集成电路210上的电路设计。
设计软件214可以由计算***215的一个或多个处理器217执行。计算***215可以包括能够执行设计软件214的任何适当装置,例如台式计算机、膝上计算机、移动电子装置、服务器等。计算***215可以访问、配置和/或与集成电路210通信。处理器217可以包括多个微处理器、一个或多个其它集成电路(例如,专用集成电路、现场可编程门阵列、精简指令集处理器等)或这些的某种组合。
一个或多个存储器装置219可以存储设计软件214。此外,存储器装置219可以存储与集成电路210相关的信息,例如控制软件、配置软件、查阅表、配置数据等。在一些实施例中,处理器217和/或存储器装置219可以在计算***215外部。存储器装置219可以包括有形、非暂态、机器可读介质,例如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储器装置219可以存储各种信息并用于各种目的。例如,存储器装置219可以存储用于由处理器217执行的机器可读和/或处理器可执行指令(例如,固件或软件),例如用于确定集成电路210或集成电路210的区域的速度、确定集成电路210或集成电路210的区域中所编写的设计的通路的临界性、在集成电路210或集成电路210的区域中编写设计等的指令。存储器装置219可以包括一个或多个存储装置(例如,非易失性存储装置),其可以包括只读存储器(ROM)、闪存存储器、硬盘驱动器或任何其它适当的光学、磁性或固态存储介质或其任意组合。
设计软件214可以使用编译程序216以产生低层级电路设计程序218(比特流),有时称为对集成电路210编程的程序目标文件。亦即,编译程序216可以提供代表集成电路210的电路设计的机器可读指令。例如,集成电路210可以接收一个或多个程序218(比特流),其描述应当存储于集成电路210中的硬件实施方式。程序218(比特流)可以被编写到集成电路210中作为配置程序211。
如图9所示,集成电路210可以在数据处理***200中操作以辅助使用本公开的脉动阵列***和方法来处理数据集226(例如,矩阵数据)。数据处理***220可以代表例如数据中心中的计算装置,其可以处理网络业务、图像数据、视频数据、金融数据或任何其它适当形式的数据。在一些示例中,可以使用可以采用本公开的脉动阵列的机器学习或神经网络算法来处理数据集226。处理器复合体224可以执行存储器和/或存储设备222中存储的指令(例如,软件或固件)以接收和路由数据集226并控制集成电路210。例如,处理器复合体224可以运行软件以分析处理网络业务、图像数据、视频数据、金融数据或任何其它适当形式的数据,其卸载到很适于由集成电路210上的脉动阵列处理的集成电路210操作。存储器和/或存储设备222可以存储一个或多个程序218(比特流),其可以用于编写集成电路210的可编程结构(例如,在集成电路210是诸如现场可编程门阵列(FPGA)的可编程序逻辑器件时)。
尽管本公开阐述的实施例易受各种修改和替代形式的影响,但已经在附图中通过示例的方式示出并在本文中详细描述了具体实施例。然而,应当理解,本公开并非意在限于所公开的特定形式。本公开要涵盖落在如以下所附权利要求所界定的本公开的精神和范围内的所有修改、等价物和替代物。
本文给出并主张权利的技术被援引并适用于有实际属性的实物和具象的示例,该实际属性可论证地改善了本技术领域,并且这样一来,不是抽象的、无形的或纯粹理论的。此外,如果本说明书末尾所附的任何权利要求包含被指定为“用于[执行][功能]的模块……”或“用于[执行][功能]的步骤……”的一个或多个要素,其意在在35U.S.C.112(f)下解释这种要素。然而,对于包含通过任何其它方式指定的要素的任何权利要求,其意在使这种要素不在35U.S.C.112(f)下被解释。
Claims (20)
1.一种在集成电路的电路中实施的脉动阵列,包括:
处理元件阵列,所述处理元件阵列包括处理元件;
通信耦合到所述处理元件阵列的一个或多个馈送器电路,其中,所述一个或多个馈送器电路中的每个包括:
第一区域,其被配置成接收存储在所述集成电路外部的存储器中的数据;以及
第二区域,其被配置成向所述处理元件阵列发送所接收的数据,其中,从所述存储器传输到所述处理元件阵列的数据被所述第一区域和所述第二区域双重缓冲;
通信耦合到所述处理元件阵列的一个或多个排出电路,所述一个或多个排出电路包括被配置成存储由所述处理元件阵列输出的数据的一个或多个存储器缓冲器。
2.根据权利要求1所述的脉动阵列,包括通信耦合到所述一个或多个馈送器电路的第一控制器,其中,所述第一控制器包括:
读取控制器,其被配置成使能对存储在所述集成电路外部的所述存储器中的所述数据的读取;
有效检查逻辑单元,其被配置成对所述第一区域、所述第二区域或两者执行有效检查;以及
反向压力检查逻辑单元,其被配置成提供与从所述一个或多个排出电路到所述读取控制器的反向压力相关的指示。
3.根据权利要求2所述的脉动阵列,其中,所述反向压力检查逻辑单元响应于所述一个或多个排出电路的一个或多个存储器已满而提供指示。
4.根据权利要求1所述的脉动阵列,包括通信耦合到所述一个或多个排出电路的第二控制器,其中,所述第二控制器包括:
写入控制器,其被配置成使能对由所述处理元件阵列输出的所述数据的写入;以及
缓冲器监测器,其被配置成监测所述一个或多个存储器缓冲器中的每个的先进先出(FIFO)水平。
5.根据权利要求4所述的脉动阵列,其中,所述第二控制器响应于所述一个或多个存储器缓冲器已满而发送信号以停止向所述处理元件阵列馈送所述外部存储器中存储的所述数据。
6.根据权利要求1所述的脉动阵列,其中,所述外部储存器中存储的所述数据包括:
采用第一预先布置的矩阵结构重新布置的矩阵Am,n,其中,采用所述第一预先布置的矩阵结构的所述矩阵Am,n的取向与采用其初始布置的所述矩阵Am,n的取向不同;以及
采用第二预先布置的矩阵结构重新布置的矩阵Bk,l。
7.根据权利要求6所述的脉动阵列,其中,所述第一预先布置的矩阵结构包括被布置成促进所述矩阵Am,n进入所述处理元件阵列的第一馈送模式的一个或多个子区域,其中,所述第二预先布置的矩阵结构包括被布置成促进所述矩阵Bk,l进入所述处理元件阵列的第二馈送模式的一个或多个子区域。
8.根据权利要求7所述的脉动阵列,其中,所述第一预先布置的矩阵结构和所述第二预先布置的矩阵结构是基于所述处理元件阵列的尺寸和尺寸而预先确定的。
9.根据权利要求1所述的脉动阵列,其中,所述集成电路是现场可编程门阵列。
10.一种集成电路装置,包括:
包括脉动阵列的集成电路,所述脉动阵列包括:
处理元件阵列,其包括在竖直方向和水平方向上布置的处理元件;
通信耦合到所述处理元件阵列的排出阵列;
第一馈送器阵列,其包括在竖直方向上通信耦合到所述处理元件的第一馈送器,所述第一馈送器根据第一馈送模式从外部存储器向所述处理元件阵列加载第一矩阵数据,其中,所述第一矩阵数据包括采用第一预先布置的矩阵结构的矩阵Am,n,使得采用所述第一预先布置的矩阵结构的所述矩阵Am,n的取向与所述矩阵Am,n的初始取向不同;以及
第二馈送器阵列,其包括在水平方向上通信耦合到所述处理元件的第二馈送器,所述第二馈送器根据第二馈送模式从所述外部存储器向所述处理元件阵列加载第二矩阵数据,其中,所述第二矩阵数据包括采用第二预先布置的矩阵结构的矩阵Bk,l,并且其中,所述第一馈送模式和所述第二馈送模式分别基于所述第一预先布置的矩阵结构和所述第二预先布置的矩阵结构,以实现数据重复使用并减少所述外部存储器的带宽使用。
11.根据权利要求10所述的集成电路装置,包括:
耦合到所述集成电路的一个或多个存储器装置;以及
一个或多个处理器,所述一个或多个处理器耦合到所述一个或多个存储器装置并被配置成执行存储在所述一个或多个存储器装置中的指令以控制所述集成电路的操作。
12.根据权利要求10所述的集成电路装置,其中,所述第一馈送器阵列和所述第二馈送器阵列中的每个包括:
通信耦合到所述处理元件阵列的一个或多个馈送器电路,其中,所述一个或多个馈送器电路中的每个包括:
第一区域,其被配置为从所述外部储存器接收数据;以及
第二区域,其被配置为向所述处理元件阵列发送所接收的数据。
13.根据权利要求12所述的集成电路装置,包括通信耦合到所述第一馈送器阵列、所述第二馈送器阵列或两者的馈送器控制器,其中,所述第一控制器包括:
读取控制器,其被配置成使能对所述第一矩阵数据、所述第二矩阵数据或两者的读取;
有效检查逻辑单元,其被配置成对所述第一区域、所述第二区域或两者执行有效检查;以及
反向压力检查逻辑单元,其被配置成提供与从所述排出阵列到所述读取控制器的反向压力相关的指示。
14.根据权利要求10所述的集成电路装置,其中,所述排出阵列包括:
通信耦合到所述处理元件阵列的一个或多个排出电路,所述一个或多个排出电路包括被配置成存储由所述处理元件阵列输出的数据的一个或多个存储器缓冲器;以及
通信耦合到所述一个或多个排出电路的排出控制器。
15.根据权利要求14所述的集成电路装置,其中,所述排出控制器包括:
写入控制器,其被配置成使能对由所述处理元件阵列输出的所述数据的写入;以及
缓冲器监测器,其被配置成监测所述一个或多个存储器缓冲器中的每个的先进先出(FIFO)水平。
16.根据权利要求14所述的集成电路装置,其中,所述排出控制器响应于所述一个或多个存储器缓冲器已满而发送信号以停止从所述外部存储器向所述处理元件阵列加载所述第一矩阵数据、所述第二矩阵数据或两者。
17.一种向在集成电路中实施的脉动阵列加载数据的方法,包括:
在所述集成电路外部的存储器中存储采用第一预先布置的矩阵结构的第一矩阵,其中,所述第一预先布置的矩阵结构具有与所述第一矩阵的初始矩阵取向不同的矩阵取向;
在所述集成电路外部的所述存储器中存储采用第二预先布置的矩阵结构的第二矩阵,其中,所述第二预先布置的矩阵结构具有与所述第二矩阵的初始矩阵取向相同的矩阵取向;
基于所述第一预先布置的矩阵结构并根据第一馈送模式向所述脉动阵列的处理元件阵列加载所述第一矩阵的数据;以及
基于所述第二预先布置的矩阵结构并根据第二馈送模式向所述脉动阵列的所述处理元件阵列加载所述第二矩阵的数据。
18.根据权利要求17所述的方法,其中,根据所述第一馈送模式加载数据包括对重复两次的数据进行流传输并使来自所述第一预先布置的矩阵结构的不同区域的流传输的数据交织。
19.根据权利要求17所述的方法,其中,根据所述第二馈送模式加载数据包括对数据进行两次流传输并使来自所述第一预先布置的矩阵结构的不同区域的流传输的数据交织。
20.根据权利要求17所述的方法,其中,加载所述第一矩阵的所述数据包括使用通信耦合到所述处理元件阵列的双重缓冲馈送器阵列加载所述第一矩阵的数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762488635P | 2017-04-21 | 2017-04-21 | |
US62/488,635 | 2017-04-21 | ||
US15/719,922 US10585621B2 (en) | 2017-04-21 | 2017-09-29 | Statically-schedulable feed and drain structure for systolic array architecture |
US15/719,922 | 2017-09-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108733596A true CN108733596A (zh) | 2018-11-02 |
Family
ID=63852254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810233525.8A Pending CN108733596A (zh) | 2017-04-21 | 2018-03-21 | 用于脉动阵列架构的静态可调度馈送和排放结构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10585621B2 (zh) |
EP (1) | EP3407203B1 (zh) |
CN (1) | CN108733596A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902063A (zh) * | 2019-02-01 | 2019-06-18 | 京微齐力(北京)科技有限公司 | 一种集成有二维卷积阵列的***芯片 |
CN110704024A (zh) * | 2019-09-28 | 2020-01-17 | 深圳芯英科技有限公司 | 一种矩阵处理装置、方法及处理设备 |
CN112632464A (zh) * | 2020-12-28 | 2021-04-09 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11328037B2 (en) * | 2017-07-07 | 2022-05-10 | Intel Corporation | Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11157287B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11157441B2 (en) * | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
KR102586173B1 (ko) * | 2017-10-31 | 2023-10-10 | 삼성전자주식회사 | 프로세서 및 그 제어 방법 |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US11164073B2 (en) * | 2018-02-08 | 2021-11-02 | Western Digital Technologies, Inc. | Systolic neural network processor with feedback control |
US10796198B2 (en) | 2018-02-08 | 2020-10-06 | Western Digital Technologies, Inc. | Adjusting enhancement coefficients for neural network engine |
US11194490B1 (en) * | 2018-04-18 | 2021-12-07 | Xilinx, Inc. | Data formatter for convolution |
JP7315317B2 (ja) * | 2018-11-09 | 2023-07-26 | 株式会社Preferred Networks | プロセッサおよびプロセッサのデータ転送方法 |
US11783176B2 (en) | 2019-03-25 | 2023-10-10 | Western Digital Technologies, Inc. | Enhanced storage device memory architecture for machine learning |
US10929058B2 (en) | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
US11580059B2 (en) * | 2019-07-31 | 2023-02-14 | Marvell Asia Pte. Ltd. | Multi-port memory architecture for a systolic array |
US20220036163A1 (en) * | 2020-07-29 | 2022-02-03 | Apple Inc. | Chained neural engine write-back architecture |
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
US20210117197A1 (en) * | 2020-12-23 | 2021-04-22 | Intel Corporation | Multi-buffered register files with shared access circuits |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5138695A (en) | 1989-10-10 | 1992-08-11 | Hnc, Inc. | Systolic array image processing system |
US7865255B2 (en) * | 2004-03-31 | 2011-01-04 | Mstar Semiconductor, Inc. | Audio buffering system and method of buffering audio in a multimedia receiver |
US8510364B1 (en) * | 2009-09-01 | 2013-08-13 | Xilinx, Inc. | Systolic array for matrix triangularization and back-substitution |
US20140289445A1 (en) * | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
US9548937B2 (en) * | 2013-12-23 | 2017-01-17 | Intel Corporation | Backpressure techniques for multi-stream CAS |
US20160267111A1 (en) * | 2015-03-11 | 2016-09-15 | Microsoft Technology Licensing, Llc | Two-stage vector reduction using two-dimensional and one-dimensional systolic arrays |
-
2017
- 2017-09-29 US US15/719,922 patent/US10585621B2/en active Active
-
2018
- 2018-03-21 CN CN201810233525.8A patent/CN108733596A/zh active Pending
- 2018-03-23 EP EP18163741.4A patent/EP3407203B1/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902063A (zh) * | 2019-02-01 | 2019-06-18 | 京微齐力(北京)科技有限公司 | 一种集成有二维卷积阵列的***芯片 |
CN109902063B (zh) * | 2019-02-01 | 2023-08-22 | 京微齐力(北京)科技有限公司 | 一种集成有二维卷积阵列的***芯片 |
CN110704024A (zh) * | 2019-09-28 | 2020-01-17 | 深圳芯英科技有限公司 | 一种矩阵处理装置、方法及处理设备 |
CN112632464A (zh) * | 2020-12-28 | 2021-04-09 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
Also Published As
Publication number | Publication date |
---|---|
US10585621B2 (en) | 2020-03-10 |
EP3407203A3 (en) | 2019-03-20 |
EP3407203B1 (en) | 2023-07-12 |
EP3407203A2 (en) | 2018-11-28 |
US20180307438A1 (en) | 2018-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733596A (zh) | 用于脉动阵列架构的静态可调度馈送和排放结构 | |
US20230244485A1 (en) | Compute-in-memory systems and methods | |
US10372653B2 (en) | Apparatuses for providing data received by a state machine engine | |
CN101925877B (zh) | 对数据执行排列运算的装置与方法 | |
EP3757901A1 (en) | Schedule-aware tensor distribution module | |
WO2019201657A1 (en) | Accelerator and system for accelerating operations | |
WO2019156748A1 (en) | Systolic neural network engine with crossover connection optimization | |
US20200358444A1 (en) | Interface for parallel configuration of programmable devices | |
US11232360B1 (en) | Lossless tiling in convolution networks—weight gradient calculation | |
US11195080B1 (en) | Lossless tiling in convolution networks—tiling configuration | |
CN108140417B (zh) | 具有降低布线复杂度的移位寄存器 | |
US11263170B1 (en) | Lossless tiling in convolution networks—padding before tiling, location-based tiling, and zeroing-out | |
WO2020259031A1 (zh) | 数据的处理方法、装置、存储介质和电子装置 | |
US11250061B1 (en) | Lossless tiling in convolution networks—read-modify-write in backward pass | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
US20230229407A1 (en) | Compiler for a Fracturable Data Path in a Reconfigurable Data Processor | |
JP2001157049A5 (zh) | ||
CN106708473A (zh) | 一种统一染色器阵列多warp取指电路及方法 | |
US11726937B2 (en) | Control of data sending from a multi-processor device | |
US11227207B1 (en) | Lossless tiling in convolution networks—section boundaries | |
Stramondo et al. | Designing and building application‐centric parallel memories | |
US20230259477A1 (en) | Dynamically-Sized Data Structures on Data Flow Architectures | |
KR20220073639A (ko) | 시스톨릭 어레이 프로세서 및 시스톨릭 어레이 프로세서의 동작 방법 | |
CN112394986A (zh) | 半精度浮点转浮点指令处理装置、方法及相关产品 | |
CN112394903A (zh) | 短整形转半精度浮点指令处理装置、方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |