CN114341805A - 纯函数语言神经网络加速器系统及结构 - Google Patents
纯函数语言神经网络加速器系统及结构 Download PDFInfo
- Publication number
- CN114341805A CN114341805A CN201980099887.5A CN201980099887A CN114341805A CN 114341805 A CN114341805 A CN 114341805A CN 201980099887 A CN201980099887 A CN 201980099887A CN 114341805 A CN114341805 A CN 114341805A
- Authority
- CN
- China
- Prior art keywords
- circuit
- data
- command
- accelerator
- accelerator circuit
- 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
- 230000006870 function Effects 0.000 title claims description 30
- 238000013528 artificial neural network Methods 0.000 title description 15
- 230000015654 memory Effects 0.000 claims abstract description 103
- 239000011159 matrix material Substances 0.000 claims description 72
- 210000002569 neuron Anatomy 0.000 claims description 54
- 239000000872 buffer Substances 0.000 claims description 43
- 238000012546 transfer Methods 0.000 claims description 19
- 230000004888 barrier function Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 16
- 210000004027 cell Anatomy 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 12
- 230000007423 decrease Effects 0.000 claims description 7
- 238000009825 accumulation Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 claims 1
- 239000000306 component Substances 0.000 description 18
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 238000011156 evaluation Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000011068 loading method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013316 zoning Methods 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
一种加速器电路,包括用以接收指令流的控制接口、用以储存输入数据的第一存储器、以及引擎电路,引擎电路包括用以将指令流的指令译码成多个命令的调度电路、多个队列电路、以及多个命令执行电路,多个队列电路的每一个支持队列数据结构以储存从指令译码的多个命令中的各自命令,多个命令执行电路的每一个接收并执行取自多个队列的相对应队列的命令。
Description
技术领域
本揭露内容与硬件处理器电路以及加速器电路有关,且特别地,与可执行纯函数指令的处理器电路以及加速器电路有关。
背景技术
处理器是一种实施含有在数据组件上操作的指令的指令集架构(ISA)的硬件处理装置(例如,中央处理单元(CPU)或图形处理单元(GPU))。张量处理器可实施含有在含有数据组件的张量上操作的指令的ISA。张量是含有有序标量数据组件的多向数据结构。藉由在含有多个数据组件的张量上操作,张量处理器可在只在单一数据组件上支持标量指令操作的标量处理器上达成显著的效能改进。
附图说明
从下面给出的实施方式以及从本揭露内容各种实施方式的所附图式将更完全地了解本揭露内容。然而,图式不应被视为将本揭露内容限制于具体实施方式,但仅用于解释以及了解。
图1根据本揭露内容的一个实施方式示例了一种包括加速器电路的系统。
图2根据本揭露内容的一个实施方式示例了一种加速器电路的示意图。
图3根据本揭露内容的一个实施方式示例了一种引擎电路的示意图。
图4根据本揭露内容的一个实施方式示例了一种区域存储器(local memory)参考板的示意图。
图5根据本揭露内容的一个实施方式示例了一种计算单元的矩阵。
图6根据本揭露内容的一个实施方式示例了一种计算单元的示意图。
具体实施方式
处理器,特别是张量处理器,可用以执行复杂的计算,例如,神经网络应用。神经网络被广泛地用于人工智能(AI)应用中。在此揭露内容中的神经网络是可在电路上实施以基于输入数据做出决定的人工神经网络。神经网络可包括一层或更多层的节点。层可为输入层、隐藏层或输出层的任何一者。
输入层可包括曝露至输入数据的节点,且输出层可包括曝露至输出的节点。输入层以及输出层是可见层,因为它们可从神经网络外面观察到。在输入层以及输出层之间的层称为隐藏层。隐藏层可包括在硬件中实施的节点,以执行从输入层传播至输出层的计算。可使用共同的预定函数集来执行计算,例如,滤波函数以及激活函数。滤波函数可包括乘法运算以及求和(也称为归约)运算。激活函数可为全通函数、S型函数(sig)、或双曲正切函数(tanh)的其中任何一个。
在一些实施方式中,CPU可委派GPU以执行与神经网络或其他的计算密集型工作有关的计算。在其他的实施方式中,可实施耦合至CPU的加速器电路以接管GPU的工作量。加速器电路可包括制造用于神经网络计算的加速计算的特殊用途硬件电路系统。虽然加速器电路目前是在云端或在装置端实施,相较于GPU可以相对较低的成本执行高性能计算,相较于GPU,这些加速器电路的实施方式不与CPU的编程接口整合,且因此更难以由程序设计师调试。
为了克服上述识别的问题以及目前加速器电路实施方式的其他的缺陷,本揭露内容提供包括在纯函数框架内、允许加速器电路的直接程序设计以及调试方便的加速器电路的实施方式技术解决方案。纯函数框架处理类似于数学函数评估的所有计算。藉由定义,纯函数框架保证框架内指令执行的结果只取决于其自变量,无论任何全局(global)或区域(local)状况的状态。因此,在框架内的指令执行结果是由输入值决定。
纯函数框架的架构实施方式提供了特定的技术特征。在框架内的所有指令是可作为纯函数处理的存储器至存储器的指令。存储器至存储器指令从第一存储器检索数据、处理数据、并将数据转移至第二存储器,其中第一存储器以及第二存储器可为相同的(或在相同的存储器位置)或不同的存储器。框架内的指令可为单一纯函数指令、或从单一纯函数指令建构出的复合纯函数。在框架内的指令可被同时执行,以隐藏存储器存取的阶段。CPU直接控制并监控指令执行的流程。框架可提供允许加速器电路与由CPU或由其他系统(例如,从系统)中的其他加速器电路所执行的其他程序配合地工作的客户调用指令。框架也可在没有编译程序优化的情况下允许指令的直接加速。此外,框架可允许迟缓评估(即,当需要时函数的评估)以及贝他归约(即,使用表达式输入来计算结果)。在有迟缓评估以及贝他归约的情况下,框架可实现数据区域化(即,将计算移动至接近数据位在节点上的地方、而非将大量的数据移动至计算位置的能力)。框架使得指令的控制流程以及加速器电路的行为可经由CPU所执行的程序来观察到,而没有外部状态所发挥的作用。因为纯函数的特征,这确保了性能在所给定的环境中是可靠且可预测,因此使程序设计师较容易将他们的应用程序调试。
框架可提供包括互连(非分离)计算单元电路的加乘累积(multiplication-addition-cumulation,MAC)矩阵电路。CPU可重复使用MAC矩阵电路以用于卷积、点乘积、集用以及整流线性单位函数(ReLU)计算。框架可允许四维组织化区域数据布局以及三维组织化MAC矩阵,以进一步加强系统的能力。
CPU可执行针对朝向加速器电路的指令。在一个实施方式中,指令可被建构以包括四个(4)部分:操作部分、全局信息部分、区域信息部分以及内部存储器分配部分。操作部分可具体说明加速器电路将要执行的功能性。具体而言,操作部分可包括具体说明加乘累积(MAC)、最大集用、或整流线性单位函数(ReLU)计算其中一者的计算字段。
全局信息部分可具体说明影响张量数据作为整体的参数值,例如起始点、宽度、高度等等。全局信息可包括四个张量,包括输入特征映像(基数、全局宽度,面积=全局宽度*全局高度)、核心(基数、核心宽度、核心高度、核心面积=核心宽度*核心高度,输入核心大小=核心宽度*核心高度*总体输入通道)、部分总和(基数、全局宽度(与输出共享)、全局宽度*全局高度(与输出共享))以及输出特征映像(基数、全局宽度、全局宽度*全局高度)以及元数据基数。
区域信息部分可具体说明与张量数据的分割相关联的维度值,例如,分割宽度、分割高度、与分割相关联的通道数目等等。此外,区域信息部分可具体说明硬件执行偏好,以允许指令在特定维度上选择平行执行。区域信息可包括四个张量,包括与输出特征映像共享的部分总和(减退抽样之前的宽度、区域宽度、区域宽度*区域高度、区域输出通道)、核心映像(输入核心映射大小=核心宽度*核心高度*区域输入通道)、输入特征映像(差量宽度=输入区域宽度–输出区域宽度、差量高度=输入区域高度–输出区域高度、区域输入通道)以及硬件分割(计算单元的分割)。
内部存储器分配部分可具体说明用于指令的存储库。内部存储器分配可包括区域存储库标识符,其中每个标识符是操作数,例如,输入特征映像、边界特征映像、核心映像、部分总和映像以及输出特征映像作为张量、向量或标量库。内部存储器分配信息也可包括用以结合指令以形成新的复合纯函数、同时节省不必要的数据转移的再用旗标以及无同步化旗标。内部存储器分配信息也可包括区域存储器数据类型以在区域存储器中指出操作数的数据类型。
每个指令的执行可包括直接存储器访问(DMA)输入、计算、以及DMA输出的三个阶段。在DMA输入阶段中,加速器电路可使用DMA模式直接将数据从外部存储加载至与加速器电路相关联的区域存储器。在计算阶段中,加速器电路可从来源位置从区域存储器读取数据、执行计算,并将结果写入回区域存储器至区域存储器中的目的位置。在DMA输出阶段中,加速器电路可在DMA模式中将储存在区域存储器中的结果数据转移至外部存储器。
在一个实施方式中,框架可允许伪指令的执行。伪指令是对大小参数(例如,宽度、长度、或通道的数目)不具有限制的指令。这可藉由移除区域信息部分来达成。内部存储器分配可被延伸至较大数目的存储库,且每个存储库将会支持数据的总体大小的保持。
图1根据本揭露内容的一个实施方式示例了一种包括加速器电路的系统100。系统100可包括主系统114以及从系统116。在一个实施方式中,主系统114以及从系统116可被配置具有相同的组件,且可整合主与从的角色。替代地,从系统116可被配置具有主系统114组件的子集,以支持由主系统114执行的计算。在另一个实施方式中,系统100可以只包括独立主系统114而没有从系统116。
系统114可包括硬件处理器(例如,CPU或GPU)102、加速器电路104以及将处理器102通讯地连接至加速器电路104的接口电路106。此外,系统114可包括在加速器电路104的外部用于储存数据的存储器108。
在一个实施方式中,系统114可为计算系统或单芯片系统(SoC)。处理器102可为硬件处理器,例如中央处理单元(CPU)、图形处理单元(GPU)、或任何适合类型的处理装置。处理器102可包括指令执行管线(未示出)、临时文件(未示出)以及根据指令集架构(ISA)具体说明的电路实施指令。
在一个实施方式中,处理器102可为包括向量/张量指令执行管线(未示出)、向量/张量临时文件(未示出)、以及根据向量/张量指令集架构(ISA)具体说明的电路实施向量/张量指令的向量/张量处理器。向量/张量指令可在含有特定数目的数据组件的向量/张量上操作。为了简明的描述,本揭露内容将在本文中把标量处理器以及向量处理器归类于处理器。因此,除非另外明确地具体说明,处理器可被了解为标量处理器或向量处理器。
存储器装置108可包括通讯地耦合至处理器102以及加速器电路104的储存装置。在一个实施方式中,存储器装置108可储存用于神经网络应用程序的输入数据以及由神经网络应用程序产生的输出数据。输入数据可为包括取自应用数据的特征值的特征映像(一个或更多个维度),例如,影像数据、语音数据、光达(Lidar)数据等等,且输出数据可由神经网络决定,其中决定可包括将影像中的物体分成不同类别的分类、影像中物体的识别、或语音中词组的辨识。
加速器电路104可通讯地耦合至处理器102以及存储器装置108以使用其中的特殊用途电路来执行计算密集的工作。在下述中,处理器102也可意指加速器电路104的主机。加速器电路104可代表处理器102来执行这些工作。例如,可程序化处理器102以将神经网络应用拆解成多个(数百或数千个)计算工作,并将这些工作的性能委派至加速器电路104。在由加速器电路104完成这些工作之后,处理器102可接收计算结果作为回报。加速器电路104可为专用集成电路(ASIC)、现场可程序门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或诸如此类。在一个实施方式中,在纯函数平台内实施加速器电路104,以至于由处理器102发布至加速器电路104的指令被作为纯函数执行。因此,藉由在加速器电路104上执行指令所产生的输出只取决于输入值。加速器电路104的纯函数实施方式允许程序设计师对于指令执行的控制流程的能见度以及调试由处理器102所执行的神经元网络应用的能力。结合图2,在下述中提供了加速器电路104的实施方式。
接口电路106可为实施以将指令以及数据从处理器102传输至加速器电路104及/或存储器108的通用总线接口。例如,处理器102可利用接口电路106以将指令发布至加速器电路104,并将控制信号产生至存储器108,以造成从存储器108的DMA读取以及至存储器108的DMA写入。
在特定的情况中,如图1中所示,主系统114的加速器电路104可从从系统116请求帮助。主系统114可经由系统接口118被连接至从系统116。主系统114的加速器电路104可经由系统接口118将指令发布至从系统116的处理器(CPU、GPU)110及/或将指令直接发布至从系统116的加速器电路112。以此方式,主系统114可使用从系统116以进一步加强其计算能力。
图2根据本揭露内容的一个实施示例了一种加速器电路200的示意图。如图2中所示,加速器电路200可包括引擎电路202、控制接口204、系统总线主端口206、中断控制器210以及性能监视器212。加速器电路200可随选地包括高速从端口208以连接至另一个从系统。
引擎电路202可包括指令剖析以及调度电路、异步化命令队列、神经元矩阵命令执行电路、寄存器以及区域存储库。在由处理器(例如,CPU、GPU)发布的指令方向,引擎电路202可在纯函数平台中执行处理器的计算,在这情况之下,由引擎电路202产生的输出结果只取决于输入值。由引擎电路202执行的计算可包括卷积、点乘积、ReLU等等。结合图3提供了引擎电路202的详细描述。
控制接口204可将引擎电路202连接至主机的处理器(CPU、GPU),以至于主机的处理器可将指令发布至引擎电路202。在一个实施方式中,控制接口204可直接连接至指令执行管线以接收指令以及被引导至引擎电路202的配置数据。在另一个实施方式中,控制接口204连接至主机的通用总线系统以接收指令以及被引导至引擎电路202的配置数据。在两个实施方式中,指令以及被引导至引擎电路202的配置数据可被与引擎电路202相关联的标识符识别。响应于接收来自主机处理器的指令,控制接口204可将从处理器接收的指令传递至引擎电路202。响应于接收配置数据,控制接口204可设定性能监视器212以及中断控制器210的配置。
系统总线主端口206是用于连接外部存储器(加速器电路200之外)的接口。外部存储器可使用直接存储器访问(DMA)输入通道来储存可被转移至引擎电路202的区域存储器的输入值,并使用DMA输出通道将输出结果从区域存储器转移至外部存储器。DMA输入/输出可独立于主机的处理器在区域存储器以及主存储器之间转移数据,因此降低了施加在主机的处理器上的数据转移负担。在一个实施方式中,取决于系统的配置,系统总线主端口206可为一个或两个高级可扩充接口(AXI)端口。
高速从端口208是用于将加速器电路200的引擎电路202连接至从系统的接口。高速从端口208可帮助引擎电路202中的内部存储器以及从系统的内部存储器之间的数据交换,不经由主外部存储器传递,因此达到主系统以及从系统之间的低延迟数据传输。
性能监视器212可包括电路逻辑以监控与引擎电路202相关联的不同性能参数。控制接口204可接收可用以设定以及复位要被监控的性能参数的配置数据。性能参数可包括数据传输的利用率以及引擎电路202内神经元矩阵命令执行电路的利用率。考虑到通道带宽,数据传输的利用率可测量在引擎电路202以及外部存储器之间转移的数据量。考虑到矩阵中神经元的总数目,神经元矩阵命令执行电路的利用率可测量神经元矩阵命令执行电路内主动神经元数目。性能监视器212可经由控制接口将这些性能参数回馈至主机的处理器。
中断控制器210可对侦测到与引擎电路202相关联的高度优先事件已发生做出反应而产生中断信号至主机。高度优先事件可包括与引擎电路202相关联的硬件错误(或故障)。其他的高度优先事件可包括命令完成、命令缓冲区已满或空事件。中断信号可被传输至主机的中断处置器,其中中断处置器可代表主机的处理器进一步处理中断信号。例如,中断处置器可悬置目前由处理器执行的工作,并指导处理器处置该中断。替代地,中断处置器可遮蔽中断信号而没有通知处理器。在一个实施方式中,控制接口204可接收用于中断控制器210的配置数据,并基于配置数据设定中断控制器210。例如,配置数据可用以设定储存在中断状态寄存器中的旗标。每个旗标可相对应于特定的中断事件。当旗标被设定时,中断控制器210可将相对应于中断事件的中断信号转送至主机。当旗标被复位时,中断控制器210可忽略中断事件并拒绝将中断信号转送至主机。
如上所讨论,引擎电路202可经由控制接口204从主机的处理器接收指令。一些指令可指导引擎电路202以执行某些计算工作(例如,卷积、点乘积、或ReLU)。其他的指令可在指令执行串流中插入检查点以经由控制接口204将调试信息提供回主机的处理器。
引擎电路是执行数据加载、处理以及储存工作的加速器电路的部分。为此目的,引擎电路可被实施以具有两个信息流程。第一流程(称为“控制平面”,在图3中使用虚线代表)可管理由控制接口接收的指令流(stream of instructions)。第二流程(称为“数据平面”,在图3中由实线代表)可管理向量/张量的数据组件。
图3根据本揭露内容的一个实施方式示例了一种引擎电路300的示意图。参见图3,引擎电路300可包括调度逻辑304、神经元矩阵命令队列312、DMA输入命令队列314、DMA输出命令队列316、神经元矩阵命令执行电路318、DMA输入命令执行电路320、DMA输出指令执行电路322、区域存储库参考板324以及区域存储库326的硬件组件。对于控制平面,调度逻辑304可从控制接口接收指令302。如上所讨论,指令302可包括操作部分、总体信息部分、区域信息部分以及内部存储器分配部分的四个部分。
调度逻辑304可剖析与由主机的处理器发布的指令流中的指令相关联的信息,并基于从四个部分取得的信息产生三个用于指令的命令。三个命令可包括DMA输入命令308、神经元矩阵命令306以及DMA输出命令310。这三个命令分别相对应于指令执行的DMA输入阶段、计算阶段以及DMA输出阶段。调度器逻辑304可将DMA输入命令308放置于DMA输入命令队列314中,将神经元矩阵命令306放置在神经元矩阵命令队列312中,以及将DMA输出命令310放置在DMA输出命令队列316中。在一个实施方式中,使用储存在储存装置(例如,区域寄存器、区域存储器)中的堆栈数据结构来实施DMA输入命令队列314、神经元矩阵命令队列312以及DMA输出命令队列316。可将DMA输入命令队列314、神经元矩阵命令队列312以及DMA输出命令队列316实施为具有登录数目的(例如,在每个队列中16个登录)的先入先出(FiFo)队列。FiFo队列确保在三个队列任何一个中的命令以它们被放置在队列中的顺序被依序地发布。然而,没有必要让源自相同指令的三个命令被同步地执行。因此,即使它们已源自共同的指令,在不同队列中的命令可以紊乱的顺序发布。也就是说,在来自指令流中较晚指令的队列中的命令可比来自指令流中较早指令的另一队列中的另一命令更早发布。三个队列的利用允许了源自不同指令的不同命令被同时执行。此特征使数据能够预先加载(例如,在使用数据的神经元矩阵命令被发布之前将数据加载至区域存储库),因此隐藏了存储器延迟并改进了引擎电路300的整体性能。
DMA输入命令执行电路320可接收取自DMA输入命令队列314的DMA输入命令308并执行DMA输入命令308;神经元矩阵命令执行电路318可接收取自神经元矩阵命令队列312的神经元矩阵命令306以及执行神经元矩阵命令306;DMA输出命令执行电路322可接收取自DMA输出命令队列316的DMA输出命令310以及执行DMA输出命令310。区域存储库参考板324可包括逻辑电路以确保虽然指令的DMA输入命令308、神经元矩阵命令306以及DMA输出命令310以异步化的方式执行,执行的结果是正确的。
在一个实施方式中,区域存储库参考板324可包括实施在硬件中、负责确保具有互锁相依的命令以正确的顺序执行的计数器。区域存储库参考板324可产生控制读取以及写入操作至区域存储库326的信号。有两种类型的相依,包括数据相依以及资源相依。数据相依可包括:指令的神经元矩阵命令306可能需要由相同指令的DMA输入命令308所提供的数据;神经元矩阵命令306可能需要来自相同的神经元矩阵命令执行电路所执行的先前神经元矩阵命令的结果的数据;指令的DMA输出命令310可能需要来自相同指令的神经元矩阵命令306的数据。资源相依可包括:DMA输入命令308不能写入至区域存储库,因为存储库正被神经元矩阵命令306读取或正由DMA输出命令310输出至外部存储器;神经元矩阵命令不能写入至区域存储库,因为存储库正由DMA输出命令310输出至外部存储器。
图4根据本揭露内容的一个实施示例了一种区域存储器参考板400的示意图。区域存储器参考板400可包括硬件计数器以基于数据相依以及资源相依来确保命令执行的正确顺序。参见图4,区域存储器参考板400可包括计数器402、404、以及可用以产生控制读取以及写入操作至区域存储库326的信号的参考寄存器406、408。
在一个实施方式中,可提供DMA输入屏障信号、神经元矩阵屏障信号以及DMA输出屏障信号给区域存储库326中的每个存储库。这些屏障信号可决定存储库是否可被读取或写入。对决定DMA输入命令执行电路320结束至存储库的数据传输、指出了对存储库有新的读取参考(或地址指针)做出反应,DMA输入命令执行电路320可造成计数器402的增量(di_prod_cnt)增加一。对决定神经元矩阵命令执行电路318完成了读取存储库做出反应,神经元矩阵命令执行电路318可造成计数器404的增量(di_cons_cnt)。当储存在计数器402中的值(di_prod_cnt)等于储存在计数器404中的值(di_cons_cnt)时,由DMA输入命令执行电路320产生的参考全被神经元矩阵命令执行电路318所消耗。在此情况中,神经元矩阵命令执行电路318需要等待更多新的参考。当储存在计数器402中的值(di_prod_cnt)不匹配储存在计数器404中的值(di_cons_cnt)时,由DMA输入命令执行电路320之前所产生的参考尚未被神经元矩阵命令执行电路318消耗,且DMA输入命令执行电路318需要等待。一个特殊的情况是,当与存储库相关联的再用旗标被设定时,DMA输入命令执行电路320可造成计数器402的增量,而不等待所有的先前参考被消耗。这允许了事先执行更多DMA输入命令。
当DMA输入命令执行电路320开始保留对于存储库的存取权用于节省计算结果时,DMA输入命令执行电路320可设定参考寄存器406(nr_w_ref)。这标记了指令执行的起始点。当计算结果被存至存储库时,参考寄存器406可被神经元矩阵命令执行电路318清除。DMA输入命令执行电路320或神经元矩阵命令执行电路318可设定参考寄存器408(do_r_ref),指出储存在存储库中的数据正被转移至外部存储器。DMA输出命令执行电路322可清除参考寄存器408,指出数据已被转移出至外部存储器,且存储库被释放。
计数器402、404以及参考寄存器406、408被提供给每个区域存储库。因此,在执行之前,所有的命令必须检查所有的屏障信号。如图4中所示,DMA输入屏障信号是由下述任一条件设定:(1)di_prod_cnt==di_cons_cnt;或rn_w_ref被设定成1;或do_r_ref被设定成1。如果di_prod_cnt!=di_cons_cnt,则设定神经元矩阵屏障信号。DMA输出屏障信号是由下述任一条件设定:(1)nr_w_ref=1;或(2)do_r_ref=0。屏障信号可防止相对应命令的执行。例如,当DMA输入屏障信号被设定时,DMA命令执行电路320可悬置对存储库的存取;当神经元矩阵屏障信号被设定时,神经元矩阵命令执行电路318可悬置对存储库的存取;当DMA输出屏障信号被设定时,DMA输出命令执行电路322可悬置对存储库的存取。
图4中所示的范例实施方式只包括一个神经元矩阵命令执行电路以及一个DMA输出命令执行电路。因此,参考寄存器406、408只包括可被设定成一或复位成零的一个位旗标。其他的实施方式可包括多于一个神经元矩阵命令执行电路或多于一个DMA输出命令执行电路,计数器(像那些402、404)可代替位旗标被使用。
参见图3,有两个用于与引擎电路相关联的数据平面的数据流。主动数据流可包括藉由执行DMA输入命令308检索从外部存储器至区域存储库326的数据、由神经元矩阵命令执行电路处理数据以及将数据储存回区域存储库326,以及藉由执行DMA输出命令322将数据写出至外部存储器。主动数据流是由引擎电路300控制,所有的请求是由引擎电路300发布。被动数据流包括为了神经元矩阵命令执行电路318流动以检索来自内部存储器的数据并将结果储存在内部存储器中的数据。
神经元矩阵命令执行电路可执行在指令的操作部分中由操作码(运算码)具体说明的操作。神经元矩阵命令执行电路可包括计算单元的矩阵以及屏障信号控制逻辑。图5根据本揭露内容的一个实施示例了一种计算单元500的矩阵。矩阵可为沿着x以及y维度具有相同数目的单元的正方形矩阵或沿着x以及y维度具有不相等数目的单元的长方形矩阵。如图5中所示,在二维数组内的单元在水平(x)以及垂直(y)维度中连接。每个单元可包括一组维度计数器(dimension counter)、馈送器电路、写入器电路、计算单元数组以及一组区域存储库。因此,其中每个单元包括计算单元数组的单元矩阵特别适合用于执行张量计算。张量数据物体是沿着三维编入索引的数据立方体,而数组物体是沿着二维编入索引的数据数组。
每个计算单元可被配置用以使用于其中的计算单元数组来执行向量操作。图6根据本揭露内容的一个实施方式示例了一种计算单元600的示意图。参见图6,计算单元600可包括计算单元数组(每个单元由U代表)602以及控制逻辑电路。控制逻辑电路可包括维度计数器604、三个馈送器电路606、608、610、区域存储库612、写入器电路614以及标量寄存器616。计算单元600可基于神经元矩阵命令以及被引导至单元的神经元矩阵屏障信号在储存于区域存储器中的数据上操作。每个计算单元是可在一个或更多个控制信号的控制下执行一种类型的计算的单一电路区块。可将控制信号分成两个群组。第一群组的控制信号是由译码神经元矩阵命令产生,且独立于单元的内部组件,在某种意义上而言,一旦神经元矩阵命令被发布至神经元矩阵命令执行电路,第一群组的控制信号被设定。第一群组的控制信号被施加至所有的计算单元。第二群组的控制信号是基于储存在维度计数器604中的值由第一馈送器电路606(Fmap馈送器)于内部动态地产生。第二群组的控制信号可随着施加至数组内不同的计算单元而改变。第二群组的控制信号可包括,如后所讨论,mac_en、acc_clear_en、export、acc_reset_en等等。当维度计数器跨越数据结构(例如,数组)的界限时,这些控制信号被致能以执行较高的维度操作例如,3D张量、关于深度、关于点、关于组件等等。第二群组的控制信号可帮助确保每个计算单元具有具有二维数组结构的正确输入/输出值以及正确计算结果。
维度计数器604可用以倒数与计算相关联的不同维度值。在一个实施方式中,可将神经元矩阵屏障信号提供至维度计数器604用于赋能或去能计算单元。如果神经元矩阵屏障信号被设定(例如,成1),维度计数器可被去能以及防止由神经元矩阵命令存取。如果神经元矩阵屏障信号未被设定(例如,在0),维度计数器可由神经元矩阵命令初始化。神经元矩阵命令可提供维度计数器代表输入数据(称为特征数据)以及滤波器数据(称为核心)的高度以及宽度的初始值。计算是用以使用卷积将滤波器(例如,高/低通滤波器)应用至输入数据(例如,2D影像)上。
维度计数器604可包括核心宽度计数器、核心高度计数器、输入通道计数器、输入面积计数器(输入的高度及/或宽度)以及输出通道计数器。核心宽度计数器以及核心高度计数器可储存核心的宽度以及高度。输入通道计数器可具体说明从存储库检索数据的次数。对于特定的计算,因为计算单元的大小限制,可能有需要检索输入数据多次。大特征映像可被分割成被分开处理的较小部分。在这样的情况中,通道计数器可储存与特征映像相关联的部分的数目。输出通道计数器可具体说明存储库以接收输出结果。例如,输出通道计数器可储存在这些特征映像部分上执行卷积计算的次数。计算的总量可与核心宽度*核心高度*分割计数器*输入通道计数器*输出通道计数器成比例。
储存在维度计数器中的值可被馈送至馈送器电路606、608、610。馈送器电路606(Fmap馈送器)可控制来自区域存储库612的输入数据(特征映像)的转移。馈送器电路608(核心馈送器)可控制来自区域存储库612的核心的转移。馈送器电路610(Psum馈送器)可控制区域存储库612中部分总和值的转移。馈送器电路606可,基于储存在维度计数器604中的值以及从神经元矩阵命令接收的运算码,将操作数值(op0s)供应至计算单元以及控制信号mac_en、acc_clear以及export。可结合馈送器电路608、610以将其他两个操作数(op1s、op2s)供应至计算单元。馈送器电路610可产生控制信号acc_reset。操作数值op0s可为可从其检索特征映像的区域存储库的参考;操作数值op1s可为提供核心的区域存储库的参考;操作数值op2s可为用于储存部分总和的区域存储库的参考。
可基于储存在维度计数器中的值来赋能以及去能控制信号。当核心宽度计数器或核心高度计数器储存非零的值时,馈送器电路606可设定mac_en信号、触发加乘累积(MAC)操作。当在核心宽度计数器中的值减少时,馈送器电路606可赋能平移至西边的信号,造成在计算单元数组602中的值平移至西方(N、S、E、W如中所示图6分别代表北、南、东、西方向)。当核心高度计数器中的值减少时,馈送器电路606可赋能平移至北边的信号,造成在计算单元数组602中的值平移至北方。当输入通道计数器中的值减少时,馈送器电路606可赋能特征映像就绪信号,指出特征映像已准备好由计算单元数组读取用于计算。当输入面积计数器中的值减少时,馈送器电路606可赋能acc_clear以及export信号,造成来自计算单元的结果导出至区域存储库以及计算单元中累加器的清除。
馈送器电路(Fmap馈送器)控制了特征映像数据以及边界特征映像数据的操作数从区域存储库至四种类型的缓冲器中的转移。四种类型的缓冲器可包括用于供应op0s至计算单元的操作数缓冲器、用于供应东邻近数据值至保持操作数缓冲器的区域的东边界缓冲器、用于供应南邻近数据值至保持操作数缓冲器的区域的南边界缓冲器、以及用于供应东邻近数据值至保持南边界缓冲器的区域的角落(或东南)边界缓冲器。
可在三个(3)级别中实施操作数缓冲器以及东边界缓冲器。级别0缓冲器是用于Fmap馈送器以(从区域存储库(local memory bank))检索数据至级别0缓冲器;级别1缓冲器是用以保持用于向北平移的数据;级别2缓冲器是用以保持用于向东平移的数据。当特征映像就绪信号第一次被赋能时,Fmap馈送器将数据读取至级别0缓冲器中,且Fmap馈送器可将级别0缓冲器中的数据值推送至级别1缓冲器,并当特征映像就绪信号被再次赋能时释放用于加载下一个区块的数据的级别0缓冲器。储存在级别2缓冲器中的数据值对赋能平移至西边的信号做出反应而被平移至西边。Fmap馈送器可从级别1缓冲器重载数据,并对赋能平移至北边的信号做出反应而将级别1缓冲器中的数据值平移至北边一列。虽然多级别缓冲器方案可能需要更多的缓冲器,当有数千个计算单元时,多级别缓冲器方案可显著地降低连接线的量。每个缓冲器可与位旗标相关联,每个位旗标识别行或列是否是最后一个有效的行或列。当数据被平移至北边的行或东边的列时,由大旗标识别为最后一个行或列的行或列最后可被自动地填入零。
可基于输入面积(跨步:1)、输入通道(跨步:四舍五入至单元高度的倍数的特征映像高度,其中四舍五入确保在相同位置、来自不同输入通道的数据被馈送至相同的单元中)、特征映像高度计数器、以及输出通道来计算存取区域存储库612的地址。
核心馈送器可控制用于核心映像操作数的区域存储库中的数据转移。核心馈送器可包括两个级别的缓冲器,级别0缓冲器保持来自存储库的核心组件的列,以及级别1缓冲器保持被广播至单元中所有单元的重复组件。
Psum馈送器可控制用于部分总和映像操作数的区域存储库中的数据转移。Psum馈送器可只包括一个级别的缓冲器。
写入器电路614可控制从计算单元至区域存储库中的数据输出。计算单元可发布写入赋能(wen)信号以赋能写入器中的启动单元,然后将启动单元的输出写入至区域存储器中。启动单元支持线性、ReLU、S型以及双曲正切函数。
可以类似于区域存储库的方式来寻址并参考标量寄存器616。标量寄存器616可储存可被施加至特征映像中的组件的标量值。例如,标量寄存器616可储存可被施加至特征映像中每个组件的倍数值。
范例1是加速器电路,加速器电路包括用以接收指令流的控制接口、用以储存输入数据的第一存储器、以及引擎电路,引擎电路包括将指令流的一个指令译码成多个命令的调度电路、多个队列电路、以及多个命令执行电路,多个队列电路的每一个支持队列数据结构以储存从指令译码的多个命令的个别命令,多个命令执行电路的每一个用以接收并执行取自多个队列的相对应队列的命令。
虽然以关于有限数目的实施方式来描述了本揭露内容,本领域的技术人员将从其领略许多修饰以及变化。意欲所附申请专利范围涵盖落在此揭露内容的真实精神与范围内的所有这样的修饰以及变化。
设计可经历各种阶段,从创造至仿真至制造。代表一个设计的数据可以许多方式来代表此设计。首先,如同在仿真中有用的是,硬件可使用硬件描述语言或另一个函数描述语言来代表。此外,具有逻辑及/或晶体管闸的电路级别模型可在设计过程的一些阶段被制造。此外,大部分的设计,在某个阶段,到达了代表硬件模型中各种装置实体布置的数据级别。在其中使用传统半导体制造技术的例子中,代表硬件模型的数据可能是具体说明在存在或缺乏用以制造集成电路的屏蔽的不同遮蔽层上的各种特征的数据。在设计的任何表现中,数据可被储存在任何形式的机器可读取媒体中。存储器或例如盘片之类的磁性或光学储存可为机器可读取媒体以储存经由光学或电波调变来传输的信息或以另外产生以传输这样的信息。当指示或携带码或设计的电载波被传输至执行电信号的复制、缓冲或再传输的程度时,会做出新的副本。因此,通讯提供者或网络提供者可至少暂时地将例如编码成载波的信息之类的文章储存在有形、机器可读取的媒体上,体现了本揭露内容实施方式的技术。
如本文中所使用的模块意指硬件、软件及/或固件的任何组合。作为范例,模块包括与非暂时性媒体相关联的硬件,例如微控制器,以储存被调适以由微控制器执行的码。因此,对模块的提及,在一个实施方式中,意指硬件,其被具体配置用以辨识及/或执行要被保持在非暂时媒体上的码。此外,在另一个实施方式中,模块意指包括码的非暂时媒体,其被具体调适成由微控制器执行以执行预定的操作。且如同可推断的,在更另一个实施方式中,用语模块(在此范例中)可意指微控制器以及非暂时媒体的组合。被示例为分开的模块边界通常会不同且有可能会重迭。例如,第一以及第二模块可共享硬件、软件、固件或其组合,而可能保留一些独立的硬件、软件或固件。在一个实施方式中,用语逻辑的使用包括硬件,例如晶体管、寄存器,或其他的硬件,例如可程序化逻辑设备。
在一个实施方式中,词组“被配置成”的使用意指配置、放在一起、制造、提供用以贩卖、引进及/或设计装置、硬件、逻辑或组件,以执行指定的或确定的工作。在此范例中,如果其是被设计、耦合及/或互连以执行所述指定的工作,没有被操作的装置或其组件仍“被配置成”执行指定的工作。如纯示例性的范例,逻辑闸可在操作期间提供0或1。但是“被配置成”提供致能信号至时钟的逻辑闸不包括每个可提供1或0的潜在逻辑闸。反而,逻辑闸是一种以某种方式耦合以在操作期间1或0输出是用以致能时钟的逻辑闸。再次注意,用语“被配置成”的使用不需要操作,但反而着重在装置、硬件及/或组件的潜伏状态,其中在潜伏状态中,当装置、硬件及/或组件正在运作时,装置、硬件及/或组件被设计以执行特定工作。
此外,在一个实施方式中,词组“以(to)”、“能够/以(capable of/to)”及/或“可操作用以”的使用意指以这样的方式设计以以特定方式致能装置、逻辑、硬件及/或组件的使用的某些装置、逻辑、硬件及/或组件。注意,在一个实施方式中,如上“以”、“能够/以”及/或“可操作用以”的使用意指装置、逻辑、硬件及/或组件的潜伏状态,其中装置、逻辑、硬件及/或组件未被操作,但以这样的方式设计以以特定方式来致能装置的使用。
如本文中所使用的值包括数目、状态、逻辑状态或二进制逻辑状态的任何已知表示形式。通常,逻辑位准、逻辑值(logic value)、或逻辑值(logical value)也称为1以及0,其仅表示二进制逻辑状态。例如,1意指高逻辑位准以及0意指低逻辑位准。在一个实施方式中,储存单元,例如晶体管或快闪单元,可能能够保持单一逻辑值或多个逻辑值。然而,已使用过计算机系统中值的其他表示形式。例如,十进制数十也可表示为910的二进制值以及十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示形式。
此外,状态可由值或值的部分来表示。作为范例,第一值,例如逻辑一,可表示默认或初始状态,而第二值,例如逻辑零,可表示非预设状态。此外,在一个实施方式中,用语重设以及设定分别意指预设以及更新值或状态。例如,默认值潜在地包括高逻辑值,即重设,而更新值潜在地包括低逻辑值,即设定。注意,可利用值的任何组合来表示任何数量的状态。
上述提及的方法、硬件、软件、固件或码的实施方式可经由储存在可由处理组件来执行的机器可存取、机器可读取、计算机可存取或计算机可读取媒体上的指令或码来实施。非暂时机器可存取/可读取媒体包括提供(即,储存及/或传输)为例如计算机或电子系统之类的机器可读取形式的信息的任何机制。例如,非暂时机器可存取媒体包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学储存媒体;闪存装置;电储存装置;光学储存装置;音响储存装置;用于保持从暂时(传播)信号(例如,载波、红外线信号、数字信号)接收的信息的其他形式的储存装置;等等,其与可从其信息的非暂时媒体区别。
可将用以设计程序逻辑以执行本揭露内容实施方式的指令储存在系统的存储器中,例如DRAM、高速缓存、闪存或其他的储存。此外,指令可经由网络或藉由其他计算机可读取媒体。因为机器可读取媒体可包括用于储存或传输为机器(例如,计算机)可读取形式的信息的任何机制,但不限于软式磁盘、光盘(optical disk)、光盘(Compact Disc)、只读存储器(CD-ROM)以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可清除可程序化只读存储器(EPROM)、电气可清除可程序化只读存储器(EEPROM)、磁性或光学卡、闪存、或在经由电、光学、音响或其他形式的传播信号(例如,载波、红外线信号、数字信号,等等)在因特网上的信息传输中使用的有形机器可读取储存。因此,计算机可读取媒体包括适合用于储存或传输为机器(例如,计算机)可读取形式的电子指令或信息的任何类型的有形机器可读取媒体。
此说明书从头到尾对于“一个(one)实施方式”或“一个(an)实施方式”意指与实施方式有关的所述特定特征(feature)、结构或特征(characteristic)被包括在本揭露内容的至少一个实施方式中。因此,在此说明书从头到尾各处中的词组“在一个(one)实施方式中”或“在一个(an)实施方式中”不一定全意指相同的实施方式。此外,可以任何适合的方式将特定的特征(feature)、结构、或特征(characteristic)结合在一个或多个实施方式中。
在前述的说明书中,已参照特定的范例实施方式给出了详细的描述。然而,将显而易见的是,在不悖离如所附申请专利范围中所提及的本揭露内容的较广精神与范围的情况下,可对其做出各种修饰以及改变。因此,说明书以及图式要以示例性的概念而非限制性的概念来看待。此外,前述实施方式的使用以及其他示范性的语言不一定意指相同的实施方式或相同的范例,但可意指不同且有区别的实施方式,以及潜在相同的实施方式。
Claims (20)
1.一种加速器电路,包括:
用以接收一指令流的一控制接口;
用以储存一输入数据的一第一存储器;以及
一引擎电路,通讯地耦合至该控制接口以及该第一存储器,该引擎电路包括:
用以将该指令流中的一指令译码成多个命令的一调度电路;
多个队列电路,该多个队列电路的每一个支持一队列数据结构以储存从该指令译码的该多个命令中的各自命令;以及
多个命令执行电路,该多个命令执行电路的每一个接收并执行取自该多个队列的相对应队列的一命令。
2.如权利要求1所述的加速器电路,其中该多个命令执行电路要执行从该指令译码的该多个命令而不同步化。
3.如权利要求1或2所述的加速器电路,其中该多个队列电路的每一个支持该队列数据结构以储存从该指令流译码的一连串命令,以及其中该多个命令执行电路的每一个要接收并依序地执行取自该多个队列中的相对应队列的该连串命令。
4.如权利要求1所述的加速器电路,其中该指令包括一操作部分以具体说明由该加速器电路执行的一操作、一总体信息部分以具体说明一张量的一维度信息、一区域信息部分以具体说明该张量的一分割、以及一区域存储器信息部分以具体说明分配至该操作的该第一存储器中的一个或更多个存储库。
5.如权利要求4所述的加速器电路,其中该调度电路是用以将该指令流的该指令译码成相对应于一数据输入阶段的一直接存储器访问(DMA)输入命令、相对应于一计算阶段的一神经元矩阵命令、以及相对应于一输出阶段的一DMA输出命令。
6.如权利要求5所述的加速器电路,其中该多个队列电路包括支持一DMA命令队列的一第一队列电路、支持一神经元矩阵命令队列的一第二队列电路、以及支持一DMA输出命令队列的一第三队列电路。
7.如权利要求6所述的加速器电路,其中该多个命令执行电路包括一DMA输入命令执行电路以执行该DMA输入命令、一神经元矩阵命令执行电路以执行该神经元矩阵命令、以及一DMA输出命令执行电路以执行该DMA输出命令。
8.如权利要求7所述的加速器电路,其中该DMA输入命令的执行造成从该加速器电路的外部的一第二存储器至该第一存储器的该输入数据的一DMA读取。
9.如权利要求8所述的加速器电路,其中该神经元矩阵命令执行电路包括:
多个计算单元的一矩阵,其每个计算单元连接至该矩阵的至少另一个计算单元;以及
一屏障控制逻辑,以产生控制该多个计算单元的该矩阵的多个控制信号。
10.如权利要求9所述的加速器电路,其中该多个计算单元的该矩阵中的每个计算单元包括:
一计算单元数组;
多个维度计数器;
通讯地耦合至该计算单元数组的多个馈送器电路;以及
与该多个馈送器电路相关联的多个区域存储库。
11.如权利要求10所述的加速器电路,其中该多个维度计数器包括:
一核心高度计数器,以储存一核心的一第一高度值;
一核心宽度计数器,以储存该核心的一第一宽度值;
一特征映像高度计数器,以储存一特征映像的一第二高度值作为部分的该输入数据;
一特征映像宽度计数器,以储存该特征映像的一第二宽度值;以及
一输入通道计数器,以将一第一参考储存至储存该特征映像的该多个区域存储库中的一第一区域存储库;以及
一输出通道计数器,以将一第二参考储存至一第二区域存储库以储存由该计算单元数组产生的一结果。
12.如权利要求11所述的加速器电路,其中该操作包括一加乘累积(MAC)、一最大值、或一整流线性单位函数(ReLU)操作的其中之一。
13.如权利要求11所述的加速器电路,其中该多个馈送器电路包括:
一特征映像馈送器电路以提供:
该特征映像从该第一区域存储库至该多个计算单元;
一MAC赋能信号,当设定时,赋能该MAC操作;
一累积清除信号,当设定时,清除与该多个计算单元的至少其中之一相关联的一累加器;以及
一导出信号,当设定时,赋能一写入器电路以将该结果导出至该第二区域存储库;
一核心馈送器电路,以控制该核心从该多个区域存储器至该多个计算单元的一转移;以及
一部分总和馈送器电路,以:
控制一部分总和从该多个区域存储器至该多个计算单元的一转移,其中该部分总和是由连接至该加速器电路的另一个加速器电路产生;以及
赋能一累加器重设信号以重设该累加器。
14.如权利要求13所述的加速器电路,其中该馈送器电路包括一个三级别的缓冲器,包括:
一操作数缓冲器,以储存指派至该计算单元数组的不同计算单元的多个操作数,其中该等操作数源自该特征映像;
一东边界缓冲器,以储存该计算单元数组中在一相对应计算单元东边的计算单元的多个东邻近数据,其中每个该等东邻近数据会被转移至该相对应计算单元;
一南边界缓冲器,以储存该计算单元数组中在一相对应计算单元南边的计算单元的多个南邻近数据,其中每个该等南邻近数据会被转移至该相对应计算单元;以及
一角落边界缓冲器,以储存该计算单元数组中在一相对应计算单元东南边的计算单元的多个东南邻近数据,其中每个该等东南邻近数据会被转移至该相对应计算单元。
15.如权利要求14所述的加速器电路,其中该馈送器电路是用以:
对决定储存在该核心宽度计数器中的该第一宽度值是非零做出反应,设定该MAC赋能信号;
对决定储存在该核心宽度计数器中的该第一宽度值的一减少做出反应,赋能一平移至西边的信号用于该计算单元数组;
对决定储存在该核心高度计数器中的该第一高度值的一减少做出反应,赋能一平移至北边的信号用于该计算单元数组;以及
对决定储存在该输入通道计数器中的该第一参考值的一减少做出反应,赋能一特征映像就绪信号。
16.如权利要求15所述的加速器电路,其中该馈送器电路是用以:
对赋能该特征映像就绪信号做出反应,从该多个区域存储库至该操作数缓冲器读取该特征映像;
对从该多个存储库至该操作数缓冲器读取该特征映像做出反应,将储存在该操作数缓冲器中的该等操作数移动至该东边界缓冲器以及该南边界缓冲器并释放该操作数缓冲器;
减少储存在该核心宽度计数器中的该第一宽度值以产生该平移至西边的信号;
减少储存在该核心高度计数器中的该第一高度值以产生该平移至北边的信号;以及
对再次赋能该特征映像就绪信号做出反应,从该多个区域存储库至该操作数缓冲器读取该特征映像。
17.如权利要求10所述的加速器电路,其中每个计算单元更包括可由该指令参考的多个标量寄存器,且其中该多个标量寄存器的至少其中之一是用以将作为一倍数的一标量值储存至该计算单元数组的至少一计算单元。
18.如权利要求1所述的加速器电路,其中该引擎电路更包括:
一区域存储器参考板,以管理该第一存储器以及该多个命令执行电路之间的数据转移;
一中断控制器,以产生一中断信号至对侦测该引擎电路工作中的一错误做出反应的一主机;
一性能监视器,以监视该引擎电路的性能;
一系统总线主端口,通讯地耦合至在该加速器电路外部的一第二存储器;以及
一高速从端口,通讯地耦合至一第二加速器电路。
19.如权利要求1所述的加速器电路,其中该指令流包括一调试指令,以及其中对该调试指令的执行做出反应,该引擎电路是用以经由一该控制接口将调试信息提供至一外部处理器。
20.一种用于执行一纯函数计算的系统,包括:
一处理器;以及
如权利要求1至20所述的加速器电路。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/094512 WO2021000282A1 (en) | 2019-07-03 | 2019-07-03 | System and architecture of pure functional neural network accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341805A true CN114341805A (zh) | 2022-04-12 |
Family
ID=74101136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980099887.5A Pending CN114341805A (zh) | 2019-07-03 | 2019-07-03 | 纯函数语言神经网络加速器系统及结构 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220405221A1 (zh) |
EP (1) | EP3994573A4 (zh) |
KR (1) | KR20220036950A (zh) |
CN (1) | CN114341805A (zh) |
TW (1) | TWI754310B (zh) |
WO (1) | WO2021000282A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809981B1 (en) * | 2019-11-27 | 2023-11-07 | Amazon Technologies, Inc. | Performing hardware operator fusion |
CN112669852B (zh) * | 2020-12-15 | 2023-01-31 | 北京百度网讯科技有限公司 | 内存分配方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150269074A1 (en) * | 2014-03-24 | 2015-09-24 | Pinkesh Shah | Efficient data transfer between a processor core and an accelerator |
US20150277924A1 (en) * | 2014-03-31 | 2015-10-01 | Netronome Systems, Inc. | Chained-instruction dispatcher |
US20170139708A1 (en) * | 2015-11-16 | 2017-05-18 | Arm Limited | Data processing |
CN108334464A (zh) * | 2017-01-18 | 2018-07-27 | 恩智浦美国有限公司 | 具有支持三个dma模式的命令队列结构的多信道dma系统 |
US20180219797A1 (en) * | 2017-01-30 | 2018-08-02 | Intel Corporation | Technologies for pooling accelerator over fabric |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5272664A (en) * | 1993-04-21 | 1993-12-21 | Silicon Graphics, Inc. | High memory capacity DRAM SIMM |
US6055619A (en) * | 1997-02-07 | 2000-04-25 | Cirrus Logic, Inc. | Circuits, system, and methods for processing multiple data streams |
US5887175A (en) * | 1997-02-14 | 1999-03-23 | Integrated Device Technology, Inc. | Apparatus and method for managing interrupt delay on floating point error |
US7430652B2 (en) * | 2003-03-28 | 2008-09-30 | Tarari, Inc. | Devices for performing multiple independent hardware acceleration operations and methods for performing same |
US20070073925A1 (en) * | 2005-09-28 | 2007-03-29 | Arc International (Uk) Limited | Systems and methods for synchronizing multiple processing engines of a microprocessor |
US8443175B2 (en) * | 2009-07-10 | 2013-05-14 | Via Technologies, Inc. | Microprocessor with first processor for debugging second processor |
US8782356B2 (en) * | 2011-12-09 | 2014-07-15 | Qualcomm Incorporated | Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions |
US9841974B2 (en) * | 2014-04-25 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Renaming with generation numbers |
US10496412B2 (en) * | 2016-02-08 | 2019-12-03 | International Business Machines Corporation | Parallel dispatching of multi-operation instructions in a multi-slice computer processor |
US10409614B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10489878B2 (en) * | 2017-05-15 | 2019-11-26 | Google Llc | Configurable and programmable image processor unit |
TWI779069B (zh) * | 2017-07-30 | 2022-10-01 | 埃拉德 希提 | 具有以記憶體為基礎的分散式處理器架構的記憶體晶片 |
US10127494B1 (en) * | 2017-08-02 | 2018-11-13 | Google Llc | Neural network crossbar stack |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11609623B2 (en) * | 2017-09-01 | 2023-03-21 | Qualcomm Incorporated | Ultra-low power neuromorphic artificial intelligence computing accelerator |
WO2019112959A1 (en) * | 2017-12-04 | 2019-06-13 | Optinum Semiconductor Technologies, Inc. | System and architecture of neural network accelerator |
KR20220038694A (ko) * | 2019-07-03 | 2022-03-29 | 후아시아 제너럴 프로세서 테크놀러지스 인크. | 가속기 회로의 조작을 위한 명령어 |
-
2019
- 2019-07-03 US US17/623,329 patent/US20220405221A1/en active Pending
- 2019-07-03 KR KR1020227003568A patent/KR20220036950A/ko active Search and Examination
- 2019-07-03 EP EP19936365.6A patent/EP3994573A4/en not_active Withdrawn
- 2019-07-03 WO PCT/CN2019/094512 patent/WO2021000282A1/en unknown
- 2019-07-03 CN CN201980099887.5A patent/CN114341805A/zh active Pending
-
2020
- 2020-06-23 TW TW109121403A patent/TWI754310B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150269074A1 (en) * | 2014-03-24 | 2015-09-24 | Pinkesh Shah | Efficient data transfer between a processor core and an accelerator |
US20150277924A1 (en) * | 2014-03-31 | 2015-10-01 | Netronome Systems, Inc. | Chained-instruction dispatcher |
US20170139708A1 (en) * | 2015-11-16 | 2017-05-18 | Arm Limited | Data processing |
CN108334464A (zh) * | 2017-01-18 | 2018-07-27 | 恩智浦美国有限公司 | 具有支持三个dma模式的命令队列结构的多信道dma系统 |
US20180219797A1 (en) * | 2017-01-30 | 2018-08-02 | Intel Corporation | Technologies for pooling accelerator over fabric |
Also Published As
Publication number | Publication date |
---|---|
EP3994573A1 (en) | 2022-05-11 |
TWI754310B (zh) | 2022-02-01 |
EP3994573A4 (en) | 2022-08-10 |
WO2021000282A1 (en) | 2021-01-07 |
US20220405221A1 (en) | 2022-12-22 |
TW202109286A (zh) | 2021-03-01 |
KR20220036950A (ko) | 2022-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI768383B (zh) | 用於操作加速器電路的指令 | |
US9466091B2 (en) | Atomic memory update unit and methods | |
KR20160134713A (ko) | 태스크 간 통신을 지원하는 하드웨어-기반의 원자 동작들 | |
CN104011676A (zh) | 用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络 | |
CN103425533A (zh) | 用于管理嵌套执行流的方法和系统 | |
US20190228308A1 (en) | Deep learning accelerator system and methods thereof | |
US20190130270A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers | |
US11880925B2 (en) | Atomic memory update unit and methods | |
US11934867B2 (en) | Techniques for divergent thread group execution scheduling | |
US20230185570A1 (en) | Techniques for efficiently transferring data to a processor | |
TWI754310B (zh) | 純函數語言神經網路加速器系統及電路 | |
CN114610394A (zh) | 指令调度的方法、处理电路和电子设备 | |
US11625279B2 (en) | Read-write page replication for multiple compute units | |
CN114930292A (zh) | 协作式工作窃取调度器 | |
US20220350863A1 (en) | Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
US11544189B2 (en) | System and method for memory management | |
US20230115542A1 (en) | Programmable matrix multiplication engine | |
US20210209462A1 (en) | Method and system for processing a neural network | |
US20230289242A1 (en) | Hardware accelerated synchronization with asynchronous transaction support | |
US20230289189A1 (en) | Distributed Shared Memory | |
US20230289215A1 (en) | Cooperative Group Arrays | |
US20240020170A1 (en) | Estimating a Cost of Implementing an Operation Unit Graph on a Reconfigurable Processor | |
CN117538727A (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 |