矢量加速器及其控制方法、装置

文档序号:1920854 发布日期:2021-12-03 浏览:17次 >En<

阅读说明:本技术 矢量加速器及其控制方法、装置 (Vector accelerator and control method and device thereof ) 是由 刘玉佳 陈钦树 朱伏生 朱晓明 卢华 于 2021-11-08 设计创作,主要内容包括:本申请公开了一种矢量加速器及其控制方法、装置,矢量加速器包括矢量超前运行单元和矢量执行单元,所述矢量超前运行单元预取所述矢量执行单元进行矢量运算的矢量数据,所述矢量加速器的控制方法包括:在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据;将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算。解决了矢量加速器进行矢量运算时的耦合度较高的技术问题,提高了矢量加速器进行矢量运算的速度。(The application discloses a vector accelerator and a control method and device thereof, the vector accelerator comprises a vector advance operation unit and a vector execution unit, the vector advance operation unit prefetches vector data of vector operation performed by the vector execution unit, and the control method of the vector accelerator comprises the following steps: in the process of vector operation, target vector data are obtained from a vector advance operation unit; and sending the target vector data to a vector execution unit so that the vector execution unit can execute vector operation after receiving the target vector data. The technical problem of high coupling degree when the vector accelerator performs vector operation is solved, and the speed of performing vector operation by the vector accelerator is improved.)

矢量加速器及其控制方法、装置

技术领域

本申请涉及计算机技术领域,尤其涉及一种矢量加速器及其控制方法、装置。

背景技术

随着人工智能的快速发展,许多应用程序都包含了比较高百分比的矢量运算,在运行应用的过程中,运算器需要执行大量的矢量运算。目前的矢量运算器,如Cray-1型的矢量加速器,向量数据访问和向量执行之间的解耦度不高,降低了矢量加速器的运算速度。

发明内容

本申请实施例通过提供一种矢量加速器及其控制方法、装置,旨在降低矢量加速器进行矢量运算时的耦合度。

为实现上述目的,本申请一方面提供一种矢量加速器的控制方法,所述矢量加速器包括矢量超前运行单元和矢量执行单元,所述矢量超前运行单元预取所述矢量执行单元进行矢量运算的矢量数据,所述矢量加速器的控制方法包括:

在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据;

将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算。

可选地,所述从矢量超前运行单元获取目标矢量数据的步骤之前,还包括:

接收矢量加速器配置指令,基于所述矢量加速器配置指令配置向量长度以及寄存器数量;

接收启动矢量运算指令,基于所述启动矢量运算指令获取缓存区中缓存的数据获取指令;

根据获取到的所述缓存区中缓存的数据获取指令获取矢量数据;

将所述矢量数据存储于所述矢量超前运行单元。

可选地,所述根据获取到的所述缓存区中缓存的数据获取指令获取矢量数据的步骤包括:

获取所述缓存区中缓存的所述数据获取指令携带的所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息;

根据所述地址信息、所述寄存器信息以及所述数据长度信息从所述缓存区中获取所述矢量数据。

可选地,所述获取所述缓存区中缓存的所述数据获取指令携带的所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息的步骤,包括:

解析所述缓存区中缓存的所述数据获取指令得到所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息。

可选地,所述在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据的步骤,包括:

在矢量运行的过程中,根据矢量运算的进程确定从所述矢量超前运行单元缓存的矢量数据中获取执行所述进程的目标矢量数据。

可选地,所述将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算的步骤之前,包括:

接收中央处理器的配置指令;

根据所述配置指令设置所述矢量加速器的寄存器个数。

可选地,所述将所述目标矢量数据发送至矢量执行单元的步骤之后,还包括:

获取所述矢量执行单元执行所述矢量运算的执行进程,根据所述执行进程确定发送至所述矢量执行单元的目标矢量数据的数据量。

此外,为实现上述目的,本发明还提出一种矢量加速器的控制装置,包括:

获取模块,用于在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据;

发送模块,用于将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算。

此外,为实现上述目的,本发明还提出一种矢量加速器,所述矢量加速器包括矢量加速器、存储器以及存储在所述存储器上并可在所述矢量加速器上运行的矢量加速器的控制程序,所述矢量加速器的控制程序被所述矢量加速器执行时实现如上述任一项矢量加速器的控制方法的步骤。

可选地,所述矢量加速器与中央处理器建立连接,接收所述中央处理器的指令,执行所述指令对应的控制操作。

在本实施例中,矢量处理器在执行矢量运算时,在矢量加速器进行运算的过程中,从矢量超前运行单元获取目标矢量数据,并将目标矢量数据发送至矢量执行单元,以供矢量执行单元接收目标矢量数据后执行矢量运算。在矢量加速器进行矢量运算时,矢量超前运行单元能够提前从矢量超前运行单元中预取矢量执行单元进行矢量运算的目标矢量数据,并发送至矢量执行单元。矢量执行单元直接接收矢量超前运行单元发送的目标矢量数据即可,即,将矢量数据的获取与矢量运算分开执行,通过降低了矢量加速器进行矢量运算的耦合性的方式,提高了矢量加速器进行矢量运算的效率。

附图说明

图1为本申请实施例方案涉及的硬件运行环境的终端结构示意图;

图2为本申请矢量加速器的控制方法一实施例的流程示意图;

图3为本申请矢量加速器的控制方法矢量加速器的结构示意图;

图4为本申请矢量加速器的控制方法矢量超前运行单元的结构示意图;

图5为本申请矢量加速器的控制方法功能模块示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

作为一种实现方案,请参照图1,图1可以是本发明实施例方案涉及的终端设备的硬件架构示意图,如图1所示,该终端设备可以包括矢量加速器101,例如GPU,存储器102,通信总线103,其中,通信总线103用于实现这些模块之间的连接通信。

存储器102可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。如图1所示,作为一种可读存储介质的存储器102中可以包括矢量加速器的控制程序;而矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据;

将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算。

进一步地,矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

接收矢量加速器配置指令,基于所述矢量加速器配置指令配置向量长度以及寄存器数量;

接收启动矢量运算指令,基于所述启动矢量运算指令获取缓存区中缓存的数据获取指令;

根据获取到的所述缓存区中缓存的数据获取指令获取矢量数据;

将所述矢量数据存储于所述矢量超前运行单元。

进一步地,矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

获取所述缓存区中缓存的所述数据获取指令携带的所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息;

根据所述地址信息、所述寄存器信息以及所述数据长度信息从所述缓存区中获取所述矢量数据。

进一步地,矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

解析所述缓存区中缓存的所述数据获取指令得到所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息。

进一步地,矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

在矢量运行的过程中,根据矢量运算的进程确定从所述矢量超前运行单元缓存的矢量数据中获取执行所述进程的目标矢量数据。

进一步地,矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

接收中央处理器的配置指令;

根据所述配置指令设置所述矢量加速器的寄存器个数。

进一步地,矢量加速器101可以用于调用存储器102中存储的矢量加速器的控制程序,并执行以下操作:

获取所述矢量执行单元执行所述矢量运算的执行进程,根据所述执行进程确定发送至所述矢量执行单元的目标矢量数据的数据量。

参考图2,图2为本申请矢量加速器的控制方法一实施例的流程示意图。

本申请实施例提供了矢量加速器的控制方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

矢量加速器的控制方法包括:

步骤S10,在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据;

步骤S20,将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算。

由于现有的矢量运算器,如Cray-1型的矢量加速器,向量数据访问和向量执行之间的解耦度不高,降低了矢量加速器的运算速度。

在本实施例中,矢量加速器接收从中央处理器(CPU)发送的指令,解析接收到的指令,执行与所述指令对应的操作。

参照图3,图3为本申请矢量处理器的结构示意图。在本申请中,矢量处理器包括缓存区,其中所述缓存区为矢量加速器的外部缓存区(外部缓存区L1、外部缓存区L2,其中,外部缓存区L1和外部缓存区L2可进行数据交互),矢量超前运行单元、以及矢量执行单元。其中,矢量超前运行单元提前从外部缓存区L1或外部缓存区L2中获取矢量执行单元需要进行矢量运算的数据,并在矢量执行单元执行矢量运算时,在矢量数据中获取目标矢量数据从矢量超前运行单元发送至矢量执行单元。

可选地,矢量超前运行单元通过在接收到加载指令把目标矢量数据发送至矢量执行单元的寄存器中,以供矢量执行单元在执行矢量运算时,通过获取寄存器中存储的目标数据进行矢量运算。

将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算的步骤之前,矢量加速器接收CPU的配置指令,根据所述配置指令设置所述矢量加速器的寄存器个数。

进一步地,参照图4,图4为本申请矢量超前运行单元的结构示意图,在本实施例中,矢量超前运行单元包括节流管理器。所述节流管理器控制从矢量超前运行单元发送至矢量执行单元的目标矢量数据的数据量,对发送至矢量执行单元的数据量进行管理,能够防止矢量执行单元中的矢量数据堆积,影响矢量执行单元计算速度。即,在矢量加速器执行矢量运算时,矢量超前运行单元的节流管理器获取矢量执行单元执行矢量运算的执行进程,根据执行进程确定发送至矢量执行单元的目标矢量数据的数据量。

在本实施例中,矢量处理器在执行矢量运算时,矢量运行单元将从矢量超前运行单元获取矢量数据,并将目标矢量数据发送至矢量执行单元,以供矢量执行单元接收目标矢量数据后执行矢量运算。在矢量加速器进行矢量运算时,矢量超前运行单元能够提前从矢量超前运行单元中预取矢量执行单元进行矢量运算的目标矢量数据,并发送至矢量执行单元。矢量执行单元不需要从矢量超前运行单元中获取进行矢量计算的目标矢量数据,直接接收矢量超前运行单元发送的目标矢量数据即可,即,将矢量数据的获取与矢量运算分开执行,通过降低了矢量加速器进行矢量运算的耦合性的方式,提高了矢量加速器进行矢量运算的效率。

进一步地,提出本申请矢量加速器的控制方法另一实施例。所述从矢量超前运行单元获取目标矢量数据的步骤之前,还包括:

步骤S1,接收矢量加速器配置指令,基于所述矢量加速器配置指令配置向量长度以及寄存器数量;

步骤S2,接收启动矢量运算指令,基于所述启动矢量运算指令获取缓存区中缓存的数据获取指令;

步骤S3,根据获取到的所述缓存区中缓存的数据获取指令获取矢量数据;

步骤S4,将所述矢量数据存储于所述矢量超前运行单元。

在本实施例中矢量超前运行单元接收矢量加速器配置指令,基于所述矢量加速器配置指令配置向量长度以及寄存器数量,并在接收到启动矢量运算指令(例如,VectorFetch指令)时,基于接收到的启动矢量运算指令,从缓存区(外部缓存区L1或外部缓存区L2)中获取数据获取指令,根据得到的数据获取指令获取在缓存区中缓存的矢量数据,将矢量数据存储于矢量超前运行单元的缓存区中,以在矢量执行单元执行矢量运算时,根据矢量运算的进程确定从所述矢量超前运行单元缓存的矢量数据中获取执行所述进程的目标矢量数据。

在本实施例中,矢量超前运行单元能够提前从外部缓存中提前获取需要执行矢量计算的矢量数据,缓存至矢量超前运行单元的缓存区中,提高了矢量超前运行单元将目标矢量数据发送至矢量执行单元的速度。

所述根据所述数据获取指令获取缓存区的矢量数据的步骤包括:

步骤S31,获取所述缓存区中缓存的所述数据获取指令携带的所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息;

步骤S32,根据所述地址信息、所述寄存器信息以及所述数据长度信息从所述缓存区中获取所述矢量数据。

在本实施例中,矢量加速器获取所述数据获取指令携带的所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息,根据所述寄存器信息以及所述数据长度信息从所述缓存区中获取所述矢量数据。

可选地,在本实施例中,矢量超前运行单元的命令解码模块解析所述缓存区中缓存的数据获取指令得到所述矢量数据的地址信息、存放所述矢量数据的寄存器信息以及数据长度信息。

在本实施例中通过矢量超前运行单元的命令解码模块解析所述缓存区中缓存的数据获取指令得到矢量数据,提高了矢量数据获取的准确性。

在本实施例中,矢量超前运行单元基于启动矢量运算指令中的地址获取目标指令。其中,所述目标指令即为启动获取矢量数据的首条执行。例如,向量a和向量b相加时,目标指令即为获取向量a的指令。并基于所述目标指令获取所述目标矢量数据的地址信息以及所述目标矢量数据的数据长度,根据所述地址信息以及所述数据长度从所述缓存区中获取所述目标矢量数据。

在本实施例中,矢量超前运行单元在接收到目标指令(例如,VLW指令),解析向量配置指令以及向量长度配置指令得到目标矢量数据的地址信息以及所述目标矢量数据的数据长度,根据解析得到的地址信息以及数据长度,提前从外部缓存中获取矢量数据。

在本实施例中,能够提前从外部缓存中获取矢量数据,并存储至矢量超前运行单元,提高了获取矢量数据的速度。

为了更清楚的描述本发明的技术方案,下面通过一具体的例子对本发明的技术方案进行说明。例如,向量a=[a0,a1,a2,a3,……,a254,a255];b=[b0,b1,b2,b3,……,b254,b256],求向量 a + b的运算结果。

其执行过程为:先配置矢量处理器,在取出运算所需要的数据,对数据进行运算。

首先cpu会发出VSETCFG(向量配置命令)命令来配置矢量寄存器vcfg,来设置使用寄存器的个数。其中,VSETCFG(向量配置命令)命令通过向量/向量超前队列传递到矢量处理器。

CPU会发出 VSETVL(向量长度配置指令)指令。该指令会设置向量长度寄存器vlen的值,这个信息会通过向量/向量超前队列传递到矢量处理器记录下来。在本例子中,设置的长度值为256,即是rs1地址中包含的值为256,同时cpu会把r1中的值写到rd寄存器中。

31 25 24 20 19 15 14 12 11 7 6 0
0000000 00000 rs1 110 rd 0001011

VMCA(数据移动到向量地址寄存器指令)指令把a向量的首个元素的地址信息和b向量的首个元素的地址信息分别移动到两个向量地址寄存器中(交底书提到的地址寄存器)。

如: vmca va0,t0;

vmca va1,t1。

该控制执行通过命令队列传递到标量单元和矢量超前运行单元。

cpu发出vf指令,通过vf 指令中的r1里的值和立即数imm相加得到了取指令的地址。

31 25 24 20 19 15 14 12 11 7 6 0
imm[11:5] 10000 rs1 010 imm[4:0] 0101011

比如:imm[11:0] = 1001_0010_0000(十六进制为0x920),rs1 = 01010。

31 25 24 20 19 15 14 12 11 7 6 0
1001001 10000 01010 010 00000 0101011

其中rs1=01010这个地址中存放的数据是0x80001000,标量处理器将会通过外部缓存区L1从地址0x80001000 + 0x920 = 0x80001920中取第一条指令。0x80001920的地址中包含的指令是取a向量数据的VLW(单位跨步向量符号扩展加载字指令)指令,该指令会被标量单元解码(标量单元不执行该指令),送到矢量执行单元执行。矢量超前运行单元从外部缓存区L1中获得指令,解码该加载指令,并且使用VMCA(数据移动到向量地址寄存器指令)收集的地址信息,VSETVL(向量长度配置指令)指令搜集的向量长度信息,矢量超前指令运算单元直接向外部缓存区L2或外部缓存区L1发出预取指令,以预测由向量通道发出的取数据负载(即是提前取出矢量运算需要的运算数据)。其中,as1就是上述的va1。

63 48 47 45 44 42 41 40 33 32 31 24 23 16 15 12 11 0
000000000000000 000 010 0 00000000 1 as1 vd p 101100111111

接着取第二条指令,第二指令也是VLW(单位跨步向量符号扩展加载字指令)指令,用来加载b向量数据的。取下一条矢量相加指令,预取的目标矢量数据传到向量执行单元就行计算,结果通过存储控制器写回内存。

在本实施例中,矢量处理器在执行矢量运算时,在矢量加速器进行运算时,矢量运行单元将从矢量超前运行单元获取矢量数据,并将目标矢量数据发送至矢量执行单元,以供矢量执行单元接收目标矢量数据后执行矢量运算。在矢量加速器进行矢量运算时,矢量超前运行单元能够提前从矢量超前运行单元中预取矢量执行单元进行矢量运算的目标矢量数据,并发送至矢量执行单元。矢量执行单元不需要从矢量超前运行单元中获取进行矢量计算的目标矢量数据,直接接收矢量超前运行单元发送的目标矢量数据即可,即,将矢量数据的获取与矢量运算分开执行,通过降低了矢量加速器进行矢量运算的耦合性的方式,提高了矢量加速器进行矢量运算的效率。

此外,参照图5,图5为本申请矢量加速器的控制装置的结构示意图。为实现上述目的,本发明还提出一种矢量加速器的控制装置,包括:

获取模块10,用于在矢量运算的过程中,从矢量超前运行单元获取目标矢量数据;

发送模块20,用于将所述目标矢量数据发送至矢量执行单元,以供所述矢量执行单元接收到所述目标矢量数据后执行矢量运算。

此外,为实现上述目的,本发明还提出一种矢量加速器,所述矢量加速器包括矢量加速器、存储器以及存储在所述存储器上并可在所述矢量加速器上运行的矢量加速器的控制程序,所述矢量加速器的控制程序被所述矢量加速器执行时实现如上述任一项矢量加速器的控制方法的步骤。

此外,为实现上述目的,本发明还提出一种矢量加速器,所述矢量加速器与中央处理器建立连接,接收所述中央处理器的指令,执行所述指令对应的控制操作。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本申请可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

尽管已描述了本申请的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:拆换线施工机器人及其张紧力控制装置和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类