CN117992396B - 流式张量处理器 - Google Patents
流式张量处理器 Download PDFInfo
- Publication number
- CN117992396B CN117992396B CN202410374090.4A CN202410374090A CN117992396B CN 117992396 B CN117992396 B CN 117992396B CN 202410374090 A CN202410374090 A CN 202410374090A CN 117992396 B CN117992396 B CN 117992396B
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- functional
- unit
- blocks
- 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
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 105
- 239000011159 matrix material Substances 0.000 claims abstract description 73
- 238000004891 communication Methods 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 19
- 239000000872 buffer Substances 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 6
- 230000017105 transposition Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 28
- 230000005540 biological transmission Effects 0.000 abstract description 19
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 14
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000013528 artificial neural network Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000002457 bidirectional effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000002864 sequence alignment Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Advance Control (AREA)
Abstract
本申请公开流式张量处理器,涉及芯片领域,向量计算模块、数据存取模块、数据交换模块和矩阵计算模块组成对称结构,每个模块都配备有独立的指令单元和功能单元,且功能单元中包含n层结构相同的功能块,指令单元根据时序缓存指令流并输入到功能块中,同层级功能块之间互联,实现横向数据传输,指令流在纵向控制功能单元和其中的功能块执行对应的功能操作;数据交换单元分别通过控制总线连接内存控制器和外部存储器实现数据输入输出。该结构相同功能单元共享一套指令电路,节省指令电路;不同的功能单元之间采用流水式数据传输,无需总线,通讯延时低、效率高。相同模块电路设计完全一致,提高逻辑和物理电路复用率,降低芯片设计难度。
Description
技术领域
本申请实施例涉及数据库领域,特别涉及一种用于加速神经网络计算的流式张量处理器。
背景技术
在现代化社会和工业中,比如互联网、大数据、物联网、自动驾驶等领域,基于神经网络的人工智能的使用可以大幅提高效率、降低成本,使用度日益广泛。而神经网络内的输入、输出和变换可以用张量来表示,例如表示神经网络层之间的连接的权重以及表示通过神经网络传播的数据结构,因此神经网络的计算就是张量操作,用于加速神经网络计算的处理也可称之为张量处理器。
目前业界主流的神经网络加速器以通用计算图形处理器(GPGPU)为主,另外也有基于精简指令处理器(RISC)内核的加速器,不管是GPGPU还是RISC加速器,本质上都是众核架构,也即加速器芯片内部有非常多的计算核心,通常情况下从128个到4096个不等。此类众核处理器的架构一般采用图1中示出的系统架构实现,图1架构中的单个计算核心有独立的指令、数据缓存(Cache)和处理电路,比如取指、译码、执行、写回等;单个计算核心有独立的本地加速器,比如单指令多数据(SIMD)运算器,或者向量运算器(VECTOR)以及矩阵乘加(Matrix Multiplier and Adder)运算器;多个计算核心之间通过通用或专门总线进行核心间连接,通过多层次和多级缓冲器(Buffer)进行数据交换;多个计算核心之上需要一个总的计算核心来进行任务调度或分发。
对于上述的多核架构,每个计算核心都需要一套指令执行电路,而实际运算中不同计算核心处理的是同一个任务,所以执行的指令是完全一致的,这就导致电路被浪费;多个计算核心和多个缓存、缓冲通过带协议的总线连接导致电路设计复杂度上升;多个核心之间的通路距离长短不一致导致通讯延时不确定,导致某些计算核心会空等,影响计算效率;多个核心需要相互配合完成计算任务,但是指令和数据又需要独立分配和控制,导致编译器复杂度大幅上升;多个核心的连接关系导致设计规模缩放效率低下,进而导致不同算力芯片的设计复用度大大降低。以上的众核设计都会带来电路面积过大或编程方式复杂,从而对芯片成本和效率造成负面影响。
发明内容
本申请实施例提供面向向量数据库的混合加速架构,解决使用软件加速数据库查询向量速度慢和牺牲结果质量的问题。
本申请提供了面向向量数据库的混合加速架构,包括阵列设计的一组向量计算模块,至少两组结构相同的数据存取模块、数据交换模块和矩阵计算模块;所述向量计算模块位于阵列中心,从中心向两侧依次级联数据存取模块、数据交换模块与矩阵计算模块,形成对称结构;
所述向量计算模块中设置有向量计算指令单元和包含n层向量计算块的向量计算单元,向量计算指令单元接收和缓存向量计算指令流,根据时序控制向量计算单元执行向量计算操作;
所述数据存取模块中设置有存取指令单元和包含n层存取块的数据存取单元,数据存取指令单元接收和缓存数据缓冲指令流,根据时序控制数据存取单元执行数据存/取操作;
所述数据交换模块中设置有数据交换指令单元和包含n层交换块的数据交换单元,数据交换指令单元接收和缓存数据交换指令流,根据时序控制数据交换单元将存取块和矩阵计算块中的数据进行交换;
所述矩阵计算模块中设置有矩阵计算指令单元和包含n层矩阵计算块的矩阵计算单元,矩阵计算指令单元接收和缓存矩阵计算指令流,根据时序控制矩阵计算单元执行矩阵运算;
两组数据交换单元分别通总线连接内存控制器;运行在外部CPU的编译器通过总线并根据时序向各个指令单元发送操作指令;内存控制器连接外部存储器,向数据交换单元输入原始数据或缓存结果数据。
具体的,相同的功能模块共享一套指令电路,且指令流根据时序在内部的功能单元中以流水模式传递,并以流水模式在相邻功能模块内的功能单元之间传输数据和执行功能操作;
其中的向量计算模块执行定点/浮点型向量乘加运算,矩阵计算模块执行定点/浮点矩阵乘加运算,数据交换模块执行矩阵交换、矩阵转置、行/列交换、行/列移位操作。
具体的,每个功能单元中的n层功能块的结构相同,分别形成n个层级深度的矩阵;相邻功能单元中同一层级的功能块之间相互通信连接,数据以流水线模式横向传递;每个功能单元中的指令流以n个层级深度的流水线模式纵向传递。
具体的,各个功能单元中的功能块分别设置有一一对应的指令寄存器;位于同一功能单元中的n层指令寄存器级联,指令流根据时序和层级深度单向传输,并控制对应的功能块执行功能操作。
具体的,位于同一层级的相邻功能块之间设置有数据寄存器,数据通过数据寄存器横向传递,且每个时钟周期进行双向传输。
具体的,位于同一层级的所有功能块、数据寄存器和指令寄存器形成超级功能块,且超级功能块的数量与各个功能单元中的功能块数量相同,所有超级功能块的结构相同;在每个时序向同一超级功能块传输的是同一笔操作指令,同一功能单元中的功能块根据顺序执行同一条指令或空操作NOP指令。
具体的,所述数据交换单元中不同层级的数据交换块相互级联,将数据在不同层级间交换。
具体的,所述数据交换单元中每个层级包含有至少两个并列的数据交换块,两个并列的数据交换块分别连接相邻的数据寄存器;
位于不同列且不同层级的两个数据交换块执行跨模块跨层级的数据交换;
位于不同列且相同层级的两个数据交换块执行跨模块同层级的数据交换。
具体的,各个指令单元内部设置有若干级联的FIFO缓冲器,根据时序将缓存的指令流逐次发送到对应指令单元中的指令寄存器。
具体的,不同功能块之间通过不同深度的NOP指令控制指令的时序对齐。
具体的,每个超级功能块中的功能块和数据寄存器使用一路供电网络,所有超级功能块中的指令寄存器使用另一路供电网络。
具体的,当其中一组超级功能块出现损坏时,指令将正常跳转至下一超级功能块中执行,且电源控制电路会关闭损坏超级功能块中功能块和数据寄存器的供电网络。
本申请实施例提供的技术方案带来的有益效果至少包括:
该处理器架构和传统架构相比完全取消了处理核心,而是矩阵式的各种功能模块,并以外部CPU编译器发出的指令流来执行,且各个处理块之间严格根据时序对齐操作执行,克服众核架构指令数据不同步和各种不确定延迟的缺陷。
支持标量运算(由向量模块实现)、向量和矩阵计算,支持定点和浮点的灵活计算;
不同功能单元配备独立的指令单元,可以进行独立控制;
相同功能单元共享一套指令电路,节省指令电路;
不同的功能单元之间采用流水式数据传输,无需总线,通讯延时低、效率高;
所有功能模块整体组成一个计算加速器,不同功能模块相当于是传统CPU计算核心的不同流水电路,都是全局可见不分层,降低了编程难度;
指令、计算、数据存储在整个处理器上没有复杂通讯开支,且时序完全根据功能单元和功能块之间的距离预知,提高了编程效率降低了编译器难度;
总体算力和数据存储容量都可以通过简单的设计配置实现缩放,且编程方式不改变,节省人力提高效率;
相同模块和单元的电路设计完全一致,大大提高了逻辑和物理电路复用率,降低芯片设计难度。
附图说明
图1是相关技术中多核处理器的整体架构示意图;
图2是本申请提供的流式张量处理器及外围电路的系统结构图;
图3是张量处理器中各功能单元与指令单元的交互结架构图;
图4是张量处理器的指令流水的细节图;
图5是张量处理器的数据流水的细节图;
图6是张量处理器内部指令和数据的流水示意图;
图7是张量处理器中超级功能块的结构示意图;
图8举例示出流式张量处理器的配置参数图;
图9是本申请实施例提供的张量处理器的运算示意图;
图10是另一实施例提供的张量处理器的运算示意图;
图11是超级功能块出现损坏的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1是相关技术中多核处理器的整体架构示意图,该架构包含提高协同运算效率,采用一个全局计算控制器控制多核计算内核,而每个计算内核都是处理核心,包括标量CPU内核、矢量加速器、矩阵加速器、核内缓冲器Cache和DMA控制器及接口组成。可见一个计算内核就构成了一个最简单的小型处理器结构,在众核叠加的基础上由全局计算控制器实现整体协调加速功能。
对于这种众核处理结构,每个标量CPU内核都需要配备指令缓存ICache和数据缓存DCache。Cache的使用需要额外设计逻辑电路,因为Cache的查找涉及到命中和不命中情况以及数据替换操作。数据总线遍布多方向,通过DMA控制器来发起或者接收其他计算内核或者核外缓存的数据,层级化严重。虽然整体上是一个加速器,但是多核心指令和数据都是相互独立控制或分配,逻辑上无法做到一个加速器来编程。每个计算核心即使执行的指令是一样的,但是必须有自己独立的指令电路,降低了算力密度。数据缓冲分层分块,不同任务下编译器需要做各种优化以降低通讯开支提高计算效率。计算核心之间通讯协议复杂,通讯路径不一且延时无法确定,增加了编程难度。
上述的技术问题都是多核架构存在和面临的亟待解决的问题,针对上述问题,本申请从神经网络加速的本源出发,以张量计算设计出瀑布流水式的流式张量处理器。
图2是本申请提供的流式张量处理器及外围电路的系统结构图,流式张量处理器整体采用阵列式结构设计,包括一组向量计算模块,至少两组结构相同的数据存取模块、数据交换模块和矩阵计算模块。向量计算模块位于阵列中心,从中心向两侧依次级联数据存取模块、数据交换模块与矩阵计算模块,形成对称结构。即按照矩阵计算模块、数据交换模块、数据存取模块、向量计算模块、数据存取模块、数据交换模块和矩阵计算模块的顺序级联设计,相邻模块之间可以数据交互。每个模块的设计都可以在任意维度上实现任意数量的可配置拼接,以满足不同算力或存储要求。但为方便描述,本申请以两组数据存取模块、数据交换模块和矩阵计算模块为例进行说明。
在向量计算模块中设置有向量计算指令单元和包含n层向量计算块的向量计算单元;数据存取模块中设置有存取指令单元和包含n层存取块的数据存取单元;数据交换模块中设置有数据交换指令单元和包含n层交换块的数据交换单元;矩阵计算模块中设置有矩阵计算指令单元和包含n层矩阵计算块的矩阵计算单元。上述的结构中,各个指令单元(向量计算指令单元、存取指令单元、数据交换指令单元和矩阵计算指令单元)分别连接到总线(包括传输指令的控制总线和传输数据的数据总线)上,通过总线连接外围设备。在典型的服务器中,本申请的流式张量处理器作为一个神经网络加速计算部件,由运行在主机x86或者ARM CPU上的编译器和驱动程序控制,通过高速接口比如PCIE连接到本处理器芯片,然后通过片内的控制总线(控制和数据总线)向片内传输指令和数据。
图3是张量处理器中各功能单元与指令单元的交互结架构图,向量计算指令单元接收和缓存向量计算指令流,根据时序控制向量计算单元执行向量计算操作。数据存取指令单元接收和缓存数据缓冲指令流,根据时序控制数据存取单元执行数据存/取操作。数据交换指令单元接收和缓存数据交换指令流,根据时序控制数据交换单元执行将存取块和矩阵计算块中的数据进行交换。数据交换包括单向交换和双向交换,比如矩阵计算单元可以通过数据交换单元从数据存取单元读取数据,也可以把计算结果通过数据交换单元写入数据存取单元。矩阵计算指令单元接收和缓存矩阵计算指令流,根据时序控制矩阵计算单元执行矩阵运算。各个功能单元直接可以直接进行数据协同操作与传递。阵列最外侧的矩阵计算单元可以各自独立进行计算,计算结果写入各自的数据存取单元,也可以通过中间的功能单元进行交互和传递,从而进行相互的乒乓操作,以加快整个处理器的计算速度。
特别的,上述所说的向量计算操作包括定点/浮点型的向量乘加运算,如对V*N阵列的向量执行乘加运算;数据存/取操作可以执行对M*N矩阵中的全部或部分数据的存/取;数据交换可以执行包括矩阵的转置、任意行交换、列交换、移位操作以及矩阵数据转移等步骤;矩阵计算操作包括定点/浮点型的矩阵乘加运算,例如对N*N阵列执行乘加计算。上述列举的矩阵大小仅仅实例,具体根据系统设计要求和规模自行部署设定。
上述的两组数据交换单元分别通过控制总线连接内存控制器和外部控制器,例如CPU编译器。外部控制器一般是指x86或ARM或RISCV架构的CPU,外部编译器和驱动程序等外围系统运行于CPU之上,在需要执行神经网络加速时编译器生成指令流,然后驱动程序下放指令流,通过控制总线送入各自指令单元。此外,主机CPU还可以接入其他存储设备,如DDRDRAM等。对于对称设计的模块结构,可以分别使用对称的内存控制器(及其接口),并连接到外部的高速存储器,如片外的DDR或者HBM内存等。数据的输入和输出通过数据交换单元实现,调用输入原始数据从数据交换单元输入,以及在完成运算后从数据交换单元输出后回存结果数据到DDR。
该处理器架构和传统架构相比完全取消了处理核心,而是矩阵式的各种功能模块,并以外部CPU编译器发出的指令流来执行,且各个处理块之间严格根据时序对齐操作执行,克服众核架构指令数据不同步和各种不确定延迟的缺陷。
图4是张量处理器的指令流水的细节图,图5是张量处理器的数据流水的细节图。在该系统架构中,相同的功能模块在结构上完全相同,因而共享一套指令电路,编译器在生成指令流时可以快速生成,特别是高并发的多模块结构中,最多只需要设计和编译四类指令电路即可完成全架构的指令控制。输入各个指令模块的指令流根据时序(时钟周期)在内部的功能单元中以流水模式传递,并以流水模式在相邻功能模块内的功能单元之间传输数据和执行功能操作。
每个功能单元(向量计算单元、数据存取单元、数据交换单元和矩阵计算单元)内部的n层功能块的结构相同,分别形成n个层级深度的矩阵。此处的n取正整数。各个功能单元中的n层功能块组成一个功能矩阵,相邻功能单元中同一层级的功能块之间相互通信连接,数据以流水线模式横向传递,即矩阵每一行的功能块之间通信连接。对应的,每个功能单元中的指令流以n个层级深度的流水线模式纵向传递,即指令流以矩阵列的顺序纵向传递。
基于上述的设计,可以控制每个功能单元中同一层级的功能块在每个周期执行同一条指令,不同层级的功能块以流水传输先后顺序执行同一条指令。一条指令的总体执行时间由功能块的层级数量决定,比如8个层级设计,配置下一条指令需要8个时钟周期完成。
特别的是,数据交换单元中不同层级的数据交换块是相互级联的,目的是将数据在不同层级间交换。虽然数据交换单元中包含n层数据交换,但是所有数据交换块之间是级联的,这是区别于其他功能单元中的功能块的。其他功能单元中的不同层级的功能块是不互联的,无法实现跨层级数据传输。而数据交换块可以根据功能实现跨层级的数据传输。也正是因为具有跨层级数据传输交换的特点,所以才将输入输出接口设置到数据交换单元上,而非数据存取单元上。特别说明,本实施例中的功能块是对能够执行对应功能的总称,其应当是具备执行特定功能的最小逻辑器件和电路的集合,内部结构可以参考常规的电路设计,不在本申请的保护范围。
图6是张量处理器内部指令和数据的流水示意图,对于纵向传递的指令流, 各个功能单元中的功能块分别设置有一一对应的指令寄存器(指令寄存器与功能块的连接关系省略)。位于同一功能单元中的n层指令寄存器级联,指令流根据时序和层级深度单向传输,并控制对应的功能块执行功能操作。
对于可以左右横向传递的数据流,在位于同一层级的相邻功能块之间设置数据寄存器,数据可通过数据寄存器横向传递,且每个时钟周期都可以进行双向传输。特别说明,每个功能模块内指令的流向是纵向传递的;除数据交换功能块之外的其他功能块,其数据的流向是横向传递的,无法垂直传输。这种不同功能模块内相同层级的功能块之间直接传输数据,不需要采用片上网络(NOC)或总线,所以通讯电路面积大大减少。
该实施例中各个指令单元内部设置有若干级联的FIFO缓冲器,根据时序将缓存的指令流逐次发送到对应指令单元中的指令寄存器。在每个时钟周期内各个指令单元各自发送一条独立的指令,每个功能块内纵向传输的是同一笔指令数据,内部功能块按照指令传输顺序执行同一条指令。这种结构和执行原理不同与传统的CPU和GPU架构,CPU和GPU是把一条指令拆分成多个执行步骤在不同的时钟周期执行,这种执行过程无法有效控制进程和指数与数据的同步。此外,本实施例中数据流水传输方式也不同于传统CPU或者GPU数据流水线,本实施例中每个时钟周期做的是水平方向同一行的局部功能块之间的双向数据传输,也即在同一个时钟周期可以同时有从左到右和从右到左的数据传输,而不是CPU或GPU那样的单方向传输,执行的自由度更高。
由于本实施例中各个功能块和寄存器的位置和层级是确定的,各个功能块之间的数据传输延迟是确定的。这个特点有别于多核CPU或众核GPU,在多核CPU或众核GPU里核心与核心之间的传输时间是无法确定的,这些不确定是由传输总线的仲裁和缓存器(DCache和ICache)的存在而引起的,在本方案中摈弃了DCache和ICache,而改用简单直观的FIFO和时序来精准控制指令和数据进程,简化的电路复杂度。
图7是张量处理器中超级功能块的结构示意图,在功能块、数据寄存器和指令寄存器的基础上,位于同一层级的所有功能块、数据寄存器和指令寄存器形成一个超级功能块。在模块化设计中,超级功能块的数量与各个功能单元中的功能块数量相同,且所有超级功能块的结构完全相同。如图7中n层的功能块和寄存器形成n个条形的超级功能块。在执行过程中,每个时序向同一超级功能块传输的是多个独立操作指令(例如图7中是7个模块的各自的指令,相同模块内的指令相同),同一功能单元中的功能块根据顺序执行同一条指令或空操作NOP指令。NOP指令的主要为控制时序的一致性,不同功能块之间通过不同深度的NOP指令控制指令,通过编译器进行指令和数据的时序对齐到达。
基于上述超级功能块的描述,为了实现更多的数据交换功能,可以在数据交换单元中每个层级设置至少两个并列的数据交换块,并列的数据交换块分别连接相邻的数据寄存器。本申请以两个并列的数据交换块为例进行说明。
对于位于不同列且不同层级的两个数据交换块,则执行跨模块跨层级的数据交换,这个过程数据从一个超级功能块跨越至另一个超级功能块。
对于位于不同列且相同层级的两个数据交换块执行跨模块同层级的数据交换,这个过程数据并未跨越超级功能块。
如图8所示,某种需求下,处理器算力需求需要配置成8个超级功能块,事实上物理设计是9个超级功能块以提高芯片生产良率,其中矩阵计算模块可以实现2个{32x32}元素的矩阵乘加或1个{1 x 32}向量和1个{32x32}矩阵的乘加;数据交换模块配置成8x8的阵列以实现矩阵数据的转置或者行列交换以及单笔数据的移位操作;数据存储模块采用基于256KB容量SRAM的局部块,组成4x8总共8MB的阵列,需要4个指令槽;向量计算模块配置成128比特*4的局部块,总计128*4*8=4096比特的SIMD或Vector计算单元;输入输出数据通路位宽配置为1024比特。
图9是本申请实施例提供的张量处理器的运算示意图,(1)处是第一存取模块中第一层数据存取功能块读取数据,数据量向左传输,通过(2)处第二数据交换模块进行数据交换,将数据送入到第二矩阵计算模块中的第二层矩阵计算功能块中,在(3)将左侧输入数据与提前配置好的矩阵数据执行乘加运算。这一过程中(2)处的操作将数据从第一超级功能块送入到下一层的第二超级功能块中。特别说明,(1)到(2)是需要经过向量计算模块和第二数据存取模块的,只是这一过程中通过NOP指令直接跳功能块的操作,也就是直接将数据横向传递。(3)到(4)时数据转向右传输,经过数据交换功能块,将乘加结果横向直接传输,送到第二层数据存取功能块。同时,(4)处还从存储器读取其他数据,连同矩阵计算结果一同送入向量计算模块的第二向量计算功能块中,在(5)处执行向量乘加运算。向量乘加运算结果直接横向传输到第一数据存取模块的第二存取功能块中,即在(6)处进行数据保存。
上述的指令并非在同一个时间执行,是根据数据到达的情况在不同的时间执行,数据和指令的对齐工作通过NOP指令来实现,由编译器决定。
并非所有数据都是并行处理的,在执行(1)-(6)的过程中,第一数据存取模块还可以在(1’)处执行其他程序的数据读取过程并向右传输,在图8中以数据回存为例进行说明,回存需要通过邻近的第一数据交换模块执行,所以在(2’)处直接取走。
假设在(6)处获得的是最终的数据,还可以执行回存步骤,参见图10所示,在图9的基础上,(6)处的结果数据输入第一数据交换模块中的第二层数据交换功能块,在(7)处进行竖直方向的数据传递,直接送出到外部的DDR。
从上述的处理器执行过程可以看出,一个超级功能块包含了所有功能模块中相同层级上所有功能,但整个处理器的功能需要多个超级功能块来完成。超级功能块的存在是为了减少逻辑电路和物理实现设计,因为每个超级功能块在逻辑上是完全相同的,所以整个处理器在逻辑和物理实现上只需要设计一个超级功能块,其他超级功能块采用完整复制,进而用多个超级功能块组成一个完整的张量处理器,这大大减少了逻辑电路和物理实现的工作量。
图11是超级功能块出现损坏的示意图,由于指令和数据传递过程会涉及到跨超级功能块,在某些情况下,如芯片的总体算力需求较高,导致芯片面积较大,从而影响芯片的生产良率,那么我们可以通过增加一个或多个冗余超级功能块来提高良率。
例如,某种设计下需要配置16个超级功能块来满足算力需求,则我们在物理设计的时候可以多复制一份增加到17个超级功能块,在测试的时候只需筛选出有16个完整设计的超级功能块的芯片,任意的某个超级功能块的测试结果可以被忽略掉,也即不需要整个芯片都能通过测试,这样可以提高最终的良率。如果在某种设计下需要配置32个超级功能块来满足算力需求,则我们在物理设计的时候可以多复制2份增加到34个超级功能块,那么任意的某2个超级功能块的测试结果可以被忽略掉,从而提高最终的良率。对于超级功能块的测试,可以存在内部功能块的损坏或不通过,但是必须要要保证指令寄存器的无误,否则无法进行指令的层次化传递。
对于测试失败或者使用过程中出现损坏的情况,需要停止对这个功能块的使用,在流水线上表现为跳过该超级功能块,因为各个功能块都需要供电运行,对于需要关闭的超级功能块最好可以局部控制电源供电。为此本申请将每个超级功能块中的功能块和数据寄存器使用一路供电网络,所有超级功能块中的指令寄存器使用一路供电网络。当其中存在一组超级功能块出现损坏时,指令将正常跳转至下一超级功能块中执行,并通过电源控制电路关闭该损坏超级功能块的供电网络(关闭了功能块和数据寄存器的供电),这样就可以实现定向供电,彻底关闭损坏的超级功能块,既可以实现全局功能,又节约功耗。
综上,本申请提供的流式张量处理器有如下技术效果:
支持标量运算(由向量模块实现)、向量和矩阵计算,支持定点和浮点的灵活计算;
不同功能单元配备独立的指令单元,可以进行独立控制;
相同功能单元共享一套指令电路,节省指令电路;
不同的功能单元之间采用流水式数据传输,无需总线,通讯延时低、效率高;
所有功能模块整体组成一个计算加速器,不同功能模块相当于是传统CPU计算核心的不同流水电路,都是全局可见不分层,降低了编程难度;
指令、计算、数据存储在整个处理器上没有复杂通讯开支,且时序完全根据功能单元和功能块之间的距离预知,提高了编程效率降低了编译器难度;
总体算力和数据存储容量都可以通过简单的设计配置实现缩放,且编程方式不改变,节省人力提高效率;
相同模块和单元的电路设计完全一致,大大提高了逻辑和物理电路复用率,降低芯片设计难度。
以上对本发明的较佳实施例进行了描述;需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容;因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (12)
1.一种流式张量处理器,其特征在于,包括阵列设计的一组向量计算模块,至少两组结构相同的数据存取模块、数据交换模块和矩阵计算模块;所述向量计算模块位于阵列中心,从中心向两侧依次级联数据存取模块、数据交换模块与矩阵计算模块,形成对称结构;
所述向量计算模块中设置有向量计算指令单元和包含n层向量计算块的向量计算单元,向量计算指令单元接收和缓存向量计算指令流,根据时序控制向量计算单元执行向量计算操作;
所述数据存取模块中设置有存取指令单元和包含n层存取块的数据存取单元,数据存取指令单元接收和缓存数据缓冲指令流,根据时序控制数据存取单元执行数据存/取操作;
所述数据交换模块中设置有数据交换指令单元和包含n层交换块的数据交换单元,数据交换指令单元接收和缓存数据交换指令流,根据时序控制数据交换单元将存取块和矩阵计算块中的数据进行交换;
所述矩阵计算模块中设置有矩阵计算指令单元和包含n层矩阵计算块的矩阵计算单元,矩阵计算指令单元接收和缓存矩阵计算指令流,根据时序控制矩阵计算单元执行矩阵运算;
两组数据交换单元分别通总线连接内存控制器;运行在外部CPU的编译器通过总线并根据时序向各个指令单元发送操作指令;内存控制器连接外部存储器,向数据交换单元输入原始数据或缓存结果数据。
2.根据权利要求1所述的流式张量处理器,其特征在于,相同的功能模块共享一套指令电路,且指令流根据时序在内部的功能单元中以流水模式传递,并以流水模式在相邻功能模块内的功能单元之间传输数据和执行功能操作;
其中的向量计算模块执行定点/浮点型向量乘加运算,矩阵计算模块执行定点/浮点矩阵乘加运算,数据交换模块执行矩阵交换、矩阵转置、行/列交换、行/列移位操作。
3.根据权利要求2所述的流式张量处理器,其特征在于,每个功能单元中的n层功能块的结构相同,分别形成n个层级深度的矩阵;相邻功能单元中同一层级的功能块之间相互通信连接,数据以流水线模式横向传递;每个功能单元中的指令流以n个层级深度的流水线模式纵向传递。
4.根据权利要求3所述的流式张量处理器,其特征在于,各个功能单元中的功能块分别设置有一一对应的指令寄存器;位于同一功能单元中的n层指令寄存器级联,指令流根据时序和层级深度单向传输,并控制对应的功能块执行功能操作。
5.根据权利要求4所述的流式张量处理器,其特征在于,位于同一层级的相邻功能块之间设置有数据寄存器,数据通过数据寄存器横向传递,且每个时钟周期进行双向传输。
6.根据权利要求5所述的流式张量处理器,其特征在于,位于同一层级的所有功能块、数据寄存器和指令寄存器形成超级功能块,且超级功能块的数量与各个功能单元中的功能块数量相同,所有超级功能块的结构相同;在每个时序向同一超级功能块传输的是同一笔操作指令,同一功能单元中的功能块根据顺序执行同一条指令或空操作NOP指令。
7.根据权利要求3所述的流式张量处理器,其特征在于,所述数据交换单元中不同层级的数据交换块相互级联,将数据在不同层级间交换。
8.根据权利要求7所述的流式张量处理器,其特征在于,所述数据交换单元中每个层级包含有至少两个并列的数据交换块,两个并列的数据交换块分别连接相邻的数据寄存器;
位于不同列且不同层级的两个数据交换块执行跨模块跨层级的数据交换;
位于不同列且相同层级的两个数据交换块执行跨模块同层级的数据交换。
9.根据权利要求1-8任一所述的流式张量处理器,其特征在于,各个指令单元内部设置有若干级联的FIFO缓冲器,根据时序将缓存的指令流逐次发送到对应指令单元中的指令寄存器。
10.根据权利要求9所述的流式张量处理器,其特征在于,不同功能块之间通过不同深度的NOP指令控制指令的时序对齐。
11.根据权利要求6所述的流式张量处理器,其特征在于,每个超级功能块中的功能块和数据寄存器使用一路供电网络,所有超级功能块中的指令寄存器使用另一路供电网络。
12.根据权利要求11所述的流式张量处理器,其特征在于,当其中一组超级功能块出现损坏时,指令将正常跳转至下一超级功能块中执行,且电源控制电路会关闭损坏超级功能块中功能块和数据寄存器的供电网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410374090.4A CN117992396B (zh) | 2024-03-29 | 2024-03-29 | 流式张量处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410374090.4A CN117992396B (zh) | 2024-03-29 | 2024-03-29 | 流式张量处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117992396A CN117992396A (zh) | 2024-05-07 |
CN117992396B true CN117992396B (zh) | 2024-05-28 |
Family
ID=90893571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410374090.4A Active CN117992396B (zh) | 2024-03-29 | 2024-03-29 | 流式张量处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992396B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107729990A (zh) * | 2017-07-20 | 2018-02-23 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
TW202109286A (zh) * | 2019-07-03 | 2021-03-01 | 大陸商華夏芯(北京)通用處理器技術有限公司 | 純函數語言神經網路加速器系統及結構 |
CN112825257A (zh) * | 2019-11-20 | 2021-05-21 | 美光科技公司 | 用于在存储器阵列内执行视频处理矩阵运算的方法和设备 |
CN114330686A (zh) * | 2021-12-14 | 2022-04-12 | 上海埃瓦智能科技有限公司 | 一种可配置的卷积处理装置与卷积计算方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10762164B2 (en) * | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
-
2024
- 2024-03-29 CN CN202410374090.4A patent/CN117992396B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107729990A (zh) * | 2017-07-20 | 2018-02-23 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
CN110688157A (zh) * | 2017-07-20 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种计算装置及计算方法 |
TW202109286A (zh) * | 2019-07-03 | 2021-03-01 | 大陸商華夏芯(北京)通用處理器技術有限公司 | 純函數語言神經網路加速器系統及結構 |
CN112825257A (zh) * | 2019-11-20 | 2021-05-21 | 美光科技公司 | 用于在存储器阵列内执行视频处理矩阵运算的方法和设备 |
CN114330686A (zh) * | 2021-12-14 | 2022-04-12 | 上海埃瓦智能科技有限公司 | 一种可配置的卷积处理装置与卷积计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117992396A (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111433758B (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
US8112612B2 (en) | Processing system with interspersed processors using selective data transfer through communication elements | |
CN111656339B (zh) | 存储器装置及其控制方法 | |
CN101533387A (zh) | 基于fpga的边角块稀疏矩阵并行lu分解器 | |
US11436186B2 (en) | High throughput processors | |
CN112580792B (zh) | 一种神经网络多核张量处理器 | |
CN101021832A (zh) | 支持局部寄存和条件执行的64位浮点整数融合运算群 | |
CN100489830C (zh) | 面向科学计算的64位流处理器芯片 | |
CN117992396B (zh) | 流式张量处理器 | |
Ogawa et al. | A compiler for deep neural network accelerators to generate optimized code for a wide range of data parameters from a hand-crafted computation kernel | |
US20230289398A1 (en) | Efficient Matrix Multiply and Add with a Group of Warps | |
Makino et al. | Analysis of past and present processors | |
CN113313251B (zh) | 一种基于数据流架构的深度可分离卷积融合方法及系统 | |
Gao | Scalable Near-Data Processing Systems for Data-Intensive Applications | |
Warrier et al. | Implementing a neural processor for accelerating deep learning | |
Wen et al. | Analysis and Performance Results of a fluid dynamics Application on MASA Stream Processor | |
US20030097541A1 (en) | Latency tolerant processing equipment | |
Bartoloni et al. | APEmille: A Parallel Processor in the Teraflops Range | |
Muslih | The instruction of systolic array (ISA) and simulation of parallel algorithms | |
Perrott | Languages for Parallel Computers. | |
CN116755923A (zh) | 一种抗单粒子翻转的存算架构fpga | |
CN116737652A (zh) | 一种支持存算的fpga | |
Sterling et al. | The “MIND” scalable PIM architecture | |
Lam et al. | Architecture of Warp |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |