CN104699458A - 定点向量处理器及其向量数据访存控制方法 - Google Patents
定点向量处理器及其向量数据访存控制方法 Download PDFInfo
- Publication number
- CN104699458A CN104699458A CN201510144307.3A CN201510144307A CN104699458A CN 104699458 A CN104699458 A CN 104699458A CN 201510144307 A CN201510144307 A CN 201510144307A CN 104699458 A CN104699458 A CN 104699458A
- Authority
- CN
- China
- Prior art keywords
- vector
- alu
- memory
- control unit
- data
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
定点向量处理器及其向量数据访存控制方法,涉及一种用于在线时间序列预测的向量处理器。是为了解决现有的向量处理器无法针对特定方法进行优化导致的通用性不强和不能满足在线计算的需求的问题。本发明所述的定点向量处理器,包括程序计数器、微码存储器、向量存储器、算术逻辑单元和数据控制单元。通过前述定点向量处理器的各个模块之间的信号处理流程,构成完整的定点向量处理器。通过异构ALU设计,每个数据通路的ALU结构可以根据计算需要灵活的改变,实现指令集的灵活配置。适用于复杂计算需求的场合。
Description
技术领域
本发明涉及一种高性能、低功耗和低延迟的定点向量处理器,特别是涉及一种用于在线时间序列预测的向量处理器。
背景技术
目前,针对嵌入式高性能计算平台的在线机器学***台的性能提出了极大挑战。所以,对于要求高性能、低延迟、并且具有大吞吐量数据处理能力的在线机器学***台。
目前,现有的基于FPGA的计算***通常是使用HDL语言设计,在RTL层次将特定的算法映射到FPGA,这种专用加速引擎的方法有许多设计实例,实现了很高的计算加速比。
但是,在使用HDL代码映射特定算法的设计虽然实现了很高的计算加速比,但是通用性不强。主要体现在当目标算法发生变化时,大部分设计甚至是全部设计都需要手动更改,而且灵活性很差,其设计复杂度和设计周期限制了此类设计方式的适用范围,即可扩展性差;而且已有向量处理器是按照通用处理器的结构进行设计的,无法针对特定方法进行优化,性能也不能满足在线计算的需求。
发明内容
本发明是为了解决下述问题提出的:1)针对核方法的通用处理器软件实现计算性能低、功耗和延迟大的问题;2)现有的向量处理器无法针对特定方法进行优化导致的通用性不强和不能满足在线计算的需求的问题;3)现有的向量处理器无法兼顾计算性能和FPGA片上计算资源消耗。现提出定点向量处理器及其向量数据访存控制方法。
定点向量处理器,它包括程序计数器、微码存储器、向量存储器、算术逻辑单元和数据控制单元;
程序计数器1用于接收数据控制单元5发送的计数指令和微码存储器2发送的输入目标地址微码指令,并输出计数值至微码存储器2;
微码存储器2用于接收并存储程序计数器1发送的计数值,并输出通路索引L微码指令至数据控制单元5,同时输出OP微码指令至算术逻辑单元4和数据控制单元5,输出输入向量地址微码指令至向量存储器3,输出输入目标地址微码指令至程序计数器1和向量存储器3;
向量存储器3用于接收并存储微码存储器2发送的输入向量地址微码指令和目标地址微码指令、数据控制单元5发送的输出向量数据指令和使能指令,并输出向量数据至算术逻辑单元4;
算术逻辑单元4用于根据微码存储器2发送的OP微码指令和数据控制单元5发送的算术逻辑单元控制指令对接收的向量数据进行向量运算后得到向量,并将该向量输出至数据控制单元5;
数据控制单元5用于根据微码存储器2发送的通路索引L微码指令和OP微码指令产生使能指令和输出向量数据指令,并输出至向量存储器3;还产生算术逻辑单元控制指令,并输出至算术逻辑单元4使其进行指出函数运算、除法运算和开方运算;还产生计数指令并输出至程序计数器1,使其计数。
定点向量处理器的向量数据访存控制方法,该方法包括下述步骤:
用于接收并存储程序计数器1发送的计数值,并输出通路索引L微码指令至数据控制单元5,同时输出OP微码指令至算术逻辑单元4和数据控制单元5,输出输入向量地址微码指令至向量存储器3,输出输入目标地址微码指令至程序计数器1和向量存储器3的步骤;
用于接收并存储微码存储器2发送的输入向量地址微码指令和目标地址微码指令、数据控制单元5发送的输出向量数据指令和使能指令,并输出向量数据至算术逻辑单元4的步骤;
用于根据微码存储器2发送的OP微码指令和数据控制单元5发送的算术逻辑单元控制指令对接收的向量数据进行向量运算后得到向量,并将该向量输出至数据控制单元5的步骤;
用于根据微码存储器2发送的通路索引L微码指令和OP微码指令产生使能指令和输出向量数据指令,并输出至向量存储器3;还产生算术逻辑单元控制指令,并输出至算术逻辑单元4使其进行指出函数运算、除法运算和开方运算;还产生计数指令并输出至程序计数器1,使其计数的步骤。
有益效果:本发明设计的定点向量处理器是基于FPGA设计的通用性和可扩展性较强的向量处理器。
本发明的创新之处在于:
1)该处理器采用的是一种新的、可升级的向量处理器结构,采用硬件描述语言(HDL)设计,具有很强的通用性,可配置为浮点或可变字长的定点向量处理器。
2)可以根据计算需要定义通路数量为8~128,计算引擎总宽度最高可达4096位。针对机器学***衡。
3)通过编写微码程序,基于该向量处理器可以实现多种机器学习方法,解决了传统FPGA计算设计中通用性、可扩展性差的问题,设计的可重用性大大增强。
4)在满足计算精度要求的前提下,该定点向量处理器与浮点向量处理器、CPU相比,可分别获得2倍和9倍计算性能提升,功耗降为1/3和1/40,计算延迟降为1/2和1/9。
附图说明
图1本发明所述的定点向量处理器的结构示意图;
图2为实施方式四中的算术逻辑单元2~算术逻辑单元N的内部结构图;
图3为实施方式四中的算术逻辑单元1的结构示意图;
图4为实施例中的定点向量处理器的微码存储器和向量存储器的结构示意图;
图5为实施例中的定点向量处理器的简单指令和流水指令时序对比图。
具体实施方式
具体实施方式一、参照图1具体说明本实施方式,本实施方式所述的定点向量处理器,它包括程序计数器1、微码存储器2、向量存储器3、算术逻辑单元4和数据控制单元5;
程序计数器1用于接收数据控制单元5发送的计数指令和微码存储器2发送的输入目标地址微码指令,并输出计数值至微码存储器2;
微码存储器2用于接收并存储程序计数器1发送的计数值,并输出通路索引L微码指令至数据控制单元5,同时输出OP微码指令至算术逻辑单元4和数据控制单元5,输出输入向量地址微码指令至向量存储器3,输出输入目标地址微码指令至程序计数器1和向量存储器3;
向量存储器3用于接收并存储微码存储器2发送的输入向量地址微码指令和目标地址微码指令、数据控制单元5发送的输出向量数据指令和使能指令,并输出向量数据至算术逻辑单元4;
算术逻辑单元4用于根据微码存储器2发送的OP微码指令和数据控制单元5发送的算术逻辑单元控制指令对接收的向量数据进行向量运算后得到向量,并将该向量输出至数据控制单元5;
数据控制单元5用于根据微码存储器2发送的通路索引L微码指令和OP微码指令产生使能指令和输出向量数据指令,并输出至向量存储器3;还产生算术逻辑单元控制指令,并输出至算术逻辑单元4使其进行指出函数运算、除法运算和开方运算;还产生计数指令并输出至程序计数器1,使其计数。
参照图1所示,通路索引L微码指令对应图中的L;OP微码指令对应图中的OP;输入向量地址微码指令对应图中的Vector A Address和Vector B Address;输入目标地址微码指令对应图中的Vector C Address;输出向量数据指令对应图中的VDATA;使能指令对应图中的WR;程序计数器1发送的计数值对应图中的B ADDR;数据控制单元5发送的计数指令对应图中的LOAD;算术逻辑单元控制指令对应图中的CON;向量存储器3发送的向量数据对应图中的QA1、QA2……QAN、QB1、QB2……QBN。
定点向量处理器的工作原理如下:1)向量处理器顺序执行指令时,程序计数器的计数值在每个机器周期结束时自动加1;当程序运行至分支指令(BRANCH)时,跳转目标地址将被加载到程序计数器。程序计数器的计数值被直接用作微码存储器的地址输入;2)用于完成特定算法的微码程序全部预先存储于微码存储器,微码指令在程序计数器的控制下被顺序取出并执行;3)在微码指令的控制下,存储于向量存储器特定地址的向量数据被取出,并输出至算术逻辑单元ALU进行运算;4)算术逻辑单元ALU在微码指令和数据控制单元的控制下,完成所有向量运算,并将计算结果传输至数据控制单元;5)数据控制单元将根据不同的微码指令,产生向量存储器写使能(WR)信号,完成向量存储器的存储控制;同时,数据控制单元DCU产生ALU控制信号(CON),控制ALU的异构计算单元完成运算。指数函数(EXP)、除法(DIV)和开方运算(SQRT)等功能。
针对低延迟高效率的在线时间序列预测问题,面向基于KAF方法的在线时间序列预测应用,本申请提出一种面向一类KAF方法基于FPGA的向量处理器结构,设计一种在KAF方法范围内相对通用的高性能、低延迟定点向量处理器结构:通过多路并行、流水线以及定点化技术提高处理器计算性能,同时解决了计算延迟大和功耗高的问题,该向量处理器采用基于微码的编程方式,在指令层实现计算最优化,使其通用性、可扩展性相对传统的RTL层次映射方法大大提高;通过充分挖掘算法计算需求的特点,提出一种异构ALU的设计方式,保证了数据通路数量,同时兼顾向量除法、开方和指数函数计算需求,实现计算性能和FPGA资源消耗的平衡;由于计算精度与使用的测试数据集存在依赖性,本申请采用的是可变位宽的定点处理器设计,在精度满足要求的情况下,可节约更多FPGA资源并且实现更高的运行频率,获得相对浮点向量处理器更高的计算速度和更低的计算延迟。本申请基于该定点向量处理器实现了三种最经典的KAF方法。实验表明:在满足计算精度要求的前提下,该定点向量处理器与浮点向量处理器、CPU相比,可分别获得2倍和9倍计算性能提升,功耗降为1/3和1/40,计算延迟降为1/2和1/9。
具体实施方式二、本实施方式是对实施方式一所述的定点向量处理器的进一步说明,本实施方式中,所述向量存储器3包括向量存储器1、向量存储器2、……、向量存储器N;算术逻辑单元4包括算术逻辑单元1、算术逻辑单元2、……、算术逻辑单元N;其中,N为大于等于1小于等于128的整数;向量存储器1与算术逻辑单元1连接并构成一条数据通路,且向量存储器1和算术逻辑单元1具有相同的数据位宽;向量存储器2与算术逻辑单元2连接并构成一条数据通路,且向量存储器2和算术逻辑单元2具有相同的数据位宽;……;向量存储器N与算术逻辑单元N连接并构成一条数据通路,且向量存储器N和算术逻辑单元N具有相同的数据位宽。
每一个向量存储器与ALU构成一条数据通路,二者直接相连,并具有相同的数据位宽M。
具体实施方式三、本实施方式是对实施方式一所述的定点向量处理器的进一步说明,本实施方式中,向量存储器3和算术逻辑单元4构成的数据通路数量为1路~128路。
现有技术中,向量处理器的通路数量目前被限制为2的指数次幂(16,32,64,128)。本实施方式中,向量处理器3的数据通路数量可以根据特定的计算需要灵活设定,为了降低硬件设计的复杂度,按照本文的设计方式,可以实现1~128路任意数据通路数量的向量处理器。该向量处理器设计是一种可移植性很强的向量处理器设计,可以很容易地移植到其它FPGA器件。
具体实施方式四、参照图2和图3说明本实施方式,本实施方式是对实施方式一所述的定点向量处理器的进一步说明,本实施方式中,算术逻辑单元4中的算术逻辑单元2至算术逻辑单元N具有相同的结构,即均包括一个定点加/减法器4-1和一个定点乘法器4-2;
定点加/减法器4-1用于接收向量存储器3发送的向量数据并对其进行加/减运算后输出运算结果至数据控制单元5;
定点乘法器4-2用于接收向量存储器3发送的向量数据并对其进行乘法运算后输出运算结果至数据控制单元5;
算术逻辑单元1中包括一个定点加/减法器4-1和一个定点乘法器4-2、定点指数函数运算单元4-3、定点除法器4-4、定点开方运算单元4-5和向量点积加法器树单元4-6;
定点指数函数运算单元4-3用于接收向量存储器3发送的向量数据并对其进行指数运算后输出运算结果至数据控制单元5;
定点除法器4-4用于接收向量存储器3发送的向量数据并对其进行除法运算后输出运算结果至数据控制单元5;
定点开方运算单元4-5用于接收向量存储器3发送的向量数据并对其进行开方运算后输出运算结果至数据控制单元5;
向量点积加法器树单元4-6用于完成向量点积运算中的N个点积运算结果进行加法运算。
本实施方式中,如图2和图3所示,在该异构设计中共有两种算数逻辑单元ALU:算术逻辑单元ALU(2~N)共N-1个通路具有相同的结构,每个ALU中包含一个定点加/减法器和一个定点乘法器,只支持定点加法、减法和乘法运算。定点乘法器为单精度乘法器。
ALU1中除包含一个定点加/减法器和一个单精度乘法器外,还包含定点指数函数运算单元、定点除法器、定点开方运算单元和向量点积加法器树单元,支持定点加法、减法和乘法运算,还支持除法、指数运算以及开方运算。
算术逻辑单元ALU共包含N个乘法器。数据控制单元DCU产生ALU控制信号(CON),控制ALU的异构计算单元完成指数函数(EXP)、除法(DIV)和开方运算(SQRT)等功能。
图2和图3中,QA和QB表示向量存储器3的向量数据输出端口,向量存储器3的向量数据经过QA和QB输入至算术逻辑单元4内。VADD、VSUB、VMUL均为简单指令。Clock表示时钟,在运算时起辅助作用。add-sub表示加/减法运算。
图3中,QA_1、QA_2、……QA_N和QB_1、QB_2、……QB_N表示向量存储器内的向量存储器1至向量存储器N发送的向量数据。QA_O表示QA_1、QA_2、……QA_N经过多路选择器的唯一输出。。QB_O表示QB_1、QB_2、……QB_N经过多路选择器的唯一输出。VMUL_1、VMUL_2、……VMUL_N表示N个乘法器的输出结果。VDOT表示向量点积的输出结果。
SEXP表示指数函数指令;SDIV表示除法指令;SSORT表示开平方指令;S2V表示将一个标量扩展为向量。
虽然只有ALU1中包含除法、指数运算以及开方运算单元,但是该定点向量处理器在数据控制单元DCU控制下通过类似标量计算机的循环执行方式仍能实现向量运算。
本实施方式中记载的异构ALU的设计方式,通过充分挖掘KAF算法的特点,兼顾了计算性能和FPGA片上计算资源消耗。而且,该异构通路方式,使得该定点向量处理器具有很强的指令扩展能力。
具体实施方式五、本实施方式是对实施方式四所述的定点向量处理器的进一步说明,本实施方式中,算术逻辑单元1还包括三角函数Tan计算单元、三角函数Atan计算单元和对数函数Log计算单元。
实施方式四记载的异构通路方式,使得该定点向量处理器具有很强的指令扩展能力,通过修改ALU1的结构,可以添加其它多种函数计算的硬件单元,如三角函数Tan/Atan和对数函数Log等,在原理上可以实现任何标准运算以及用户自定义运算,实现了向量指令集的扩展。
具体实施方式六、根据实施方式一、二、三、四或五的基础上说明本实施方式,本实施方式所述的定点向量处理器的向量数据访存控制方法,该方法包括下述步骤:
用于接收并存储程序计数器1发送的计数值,并输出通路索引L微码指令至数据控制单元5,同时输出OP微码指令至算术逻辑单元4和数据控制单元5,输出输入向量地址微码指令至向量存储器3,输出输入目标地址微码指令至程序计数器1和向量存储器3的步骤;
用于接收并存储微码存储器2发送的输入向量地址微码指令和目标地址微码指令、数据控制单元5发送的输出向量数据指令和使能指令,并输出向量数据至算术逻辑单元4的步骤;
用于根据微码存储器2发送的OP微码指令和数据控制单元5发送的算术逻辑单元控制指令对接收的向量数据进行向量运算后得到向量,并将该向量输出至数据控制单元5的步骤;
用于根据微码存储器2发送的通路索引L微码指令和OP微码指令产生使能指令和输出向量数据指令,并输出至向量存储器3;还产生算术逻辑单元控制指令,并输出至算术逻辑单元4使其进行指出函数运算、除法运算和开方运算;还产生计数指令并输出至程序计数器1,使其计数的步骤。
具体实施方式七、本实施方式是对实施方式六所述的定点向量处理器的向量数据访存控制方法的进一步说明,本实施方式中,用于根据所述向量数据进行向量运算后得到向量,并传输至数据控制单元5的步骤中,所述向量运算过程包括:
用于接收向量存储器3发送的向量数据并对其进行加/减运算后输出运算结果至数据控制单元5的步骤;
用于接收向量存储器3发送的向量数据并对其进行乘法运算后输出运算结果至数据控制单元5的步骤;
用于接收向量存储器3发送的向量数据并对其进行指数运算后输出运算结果至数据控制单元5的步骤;
用于接收向量存储器3发送的向量数据并对其进行除法运算后输出运算结果至数据控制单元5的步骤;
用于接收向量存储器3发送的向量数据并对其进行开方运算后输出运算结果至数据控制单元5的步骤;
用于完成向量点积运算中的N个点积运算结果进行加法运算的步骤。
向量处理器,也称为阵列处理器,能够同步进行综合数据的运算操作;而大多数的CPU属于标量处理器,只能一次处理一个要素。向量处理器在科学计算领域应用广泛,他们是80年代乃至90年代大多数超级计算机的基础。当今大多数商业CPU都包括一些向量处理器指令,较为典型的是SIMD。在视频娱乐控件和用户电脑图形硬件中,向量处理器在其构架中也起了至关重要的地位。
具体实施方式八、下面结合附图和实施例对本发明所提供的一种定点向量处理器作进一步详细说明。
每一个向量存储器与ALU构成一条数据通路,二者直接相连,并具有相同的数据位宽M。结合图1,即所述向量存储器3包括向量存储器1、向量存储器2、……向量存储器N;算术逻辑单元4包括算术逻辑单元1、算术逻辑单元2、……算术逻辑单元N;其中,N为大于等于1小于等于128的整数;向量存储器1与算术逻辑单元1连接并构成一条数据通路,且向量存储器1和算术逻辑单元1具有相同的数据位宽;向量存储器2与算术逻辑单元2连接并构成一条数据通路,且向量存储器2和算术逻辑单元2具有相同的数据位宽;……向量存储器N与算术逻辑单元N连接并构成一条数据通路,且向量存储器N和算术逻辑单元N具有相同的数据位宽。
1.1存储器接口
传统RISC处理器一般采用寄存器文件来存储中间数据,寄存器文件一般具有十几个可以同时读写的端口,以实现很高的计算性能。由于FPGA中没有可用的多端口(端口数量大于2)存储器,本申请采用FPGA的片上双端口RAM作为向量存储器。
如附图4所示,每个数据通路中包含两个相同的双端口RAM作为向量存储器,其读地址端口分别由微码指令(表1)中的“A”和“B”两个码段所驱动,写地址端口均由“C”驱动。数据输出端口“QA”、“QB”直接与ALU输入耦合。“WR”信号为每个向量存储器的写使能信号,由数据控制单元(DCU)产生,用于完成向量数据的存储控制。微码存储器被设定工作于ROM模式,上电加载预先存储的微码程序,因此微码存储器不能够像向量存储器一样可以被在线改写。
向量存储器的存储深度为2048,存储数据宽度(M)可以根据定点计算ALU的宽度灵活设定,在编译前通过宏变量以参数的形式定义整数部分和小数部分宽度即可。向量存储器地址空间被划分为3段:0x0000~0x0BFF用于存储训练和在线测试数据,该区域数据是在编译时预先设定的;0x0C00~0x0FEF用于存储中间计算结果;最后的16个字0x0FF0~0x0FFF则用来存储向量计算过程中需要使用的常量。
1.2算数逻辑单元
本申请采用异构的算数逻辑单元ALU设计,对于常见KAF方法,计算过程中需要用到少量的除法运算、指数运算以及开方运算,这些运算单元使用频率很低,却需要消耗大量FPGA片上DSP资源。前期的实验证明,如果在每个ALU中包含除法和指数运算模块,向量处理器的最大通路数量仅为17,将严重影响向量处理器的性能。因此,本申请采用了异构的通路设计,在不影响总体性能的前提下,保证了数据通路数量,平衡计算性能和FPGA计算资源消耗。
如附图2、图3和图5所示,在该异构设计中共有两种算数逻辑单元:ALU(2~N)共N-1个通路具有相同的结构,每个ALU中包含一个定点加/减法器和一个定点乘法器,只支持定点加法、减法和乘法运算;ALU1中除包含一个定点加/减法器和一个定点乘法器外,还包含定点指数函数运算单元、定点除法器、定点开方运算单元和向量点积加法器树单元,不但支持定点加法、减法、乘法和向量点积运算,还支持除法、指数运算以及开方运算。虽然只有ALU1包含除法、指数运算以及开方运算单元,向量处理器在DCU控制下通过类似标量计算机的循环执行方式可以实现向量运算。
1.3微码指令结构
微码程序以微码指令的形式存在。微码的长度需要根据码段的数量以及每个码段的长度进行确定,其中地址段的长度取决于处理器需要直接访问的存储深度,例如,如果处理器需要访问4GByte地址范围,则地址宽度应为32位。微码指令格式如表1所示,“A”、“B”分别为输入向量地址,“C”表示向量存储的目标地址,“A”、“B”和“C”三个码段的宽度均设定为16位,可以访问64Kbyte的地址空间,虽然目前没有用到全部地址空间,但可以为后续具有更大的存储深度的设计留有充足的余量;通路索引“L”是一个12位宽的码段,用于指定“PVDOT”指令结果(标量)存储在哪一路向量存储器;“OP”为指令码制定指令类型,目前向量处理器只有12种指令,“OP”的宽度设定为4。因此,微码的总宽度为64位。
如表2所示,目前该向量处理器共有12条指令,表2同时给出了每条指令的具体功能和执行机器周期数。微码指令分为简单指令和流水指令两种:简单指令包括VADD、VSUB、VMUL、VDIV和VEXP,流水指令包括PVADD、PVSUB、PVMUL和PVDOT,这里的“流水(Pipelined)”指的是指令内部连续多次的向量操作是全流水的,在功能上等同于N次连续的简单指令,对于矩阵运算使用流水指令可以提高执行效率。例如,如附图5所示,PVADD指令实现连续N次向量加法,相当于连续执行N次VADD指令,PVADD的执行(Execution)过程与数据写回(Write Back)过程重叠,因此,PVADD指令执行效率更高,相对与VADD指令可以获得的执行加速比是4N/(N+3)。
表1 微码格式
表2 微码程序指令列表
Claims (7)
1.定点向量处理器,其特征在于,它包括程序计数器(1)、微码存储器(2)、向量存储器(3)、算术逻辑单元(4)和数据控制单元(5);
程序计数器(1)用于接收数据控制单元(5)发送的计数指令和微码存储器(2)发送的输入目标地址微码指令,并输出计数值至微码存储器(2);
微码存储器(2)用于接收并存储程序计数器(1)发送的计数值,并输出通路索引L微码指令至数据控制单元(5),同时输出OP微码指令至算术逻辑单元(4)和数据控制单元(5),输出输入向量地址微码指令至向量存储器(3),输出输入目标地址微码指令至程序计数器(1)和向量存储器(3);
向量存储器(3)用于接收并存储微码存储器(2)发送的输入向量地址微码指令和目标地址微码指令、数据控制单元(5)发送的输出向量数据指令和使能指令,并输出向量数据至算术逻辑单元(4);
算术逻辑单元(4)用于根据微码存储器(2)发送的OP微码指令和数据控制单元(5)发送的算术逻辑单元控制指令对接收的向量数据进行向量运算后得到向量,并将该向量输出至数据控制单元(5);
数据控制单元(5)用于根据微码存储器(2)发送的通路索引L微码指令和OP微码指令产生使能指令和输出向量数据指令,并输出至向量存储器(3);还产生算术逻辑单元控制指令,并输出至算术逻辑单元(4)使其进行指出函数运算、除法运算和开方运算;还产生计数指令并输出至程序计数器(1),使其计数。
2.根据权利要求1所述的定点向量处理器,其特征在于,所述向量存储器(3)包括向量存储器1、向量存储器2、……、向量存储器N;算术逻辑单元(4)包括算术逻辑单元1、算术逻辑单元2、……、算术逻辑单元N;其中,N为大于等于1小于等于128的整数;向量存储器1与算术逻辑单元1连接并构成一条数据通路,且向量存储器1和算术逻辑单元1具有相同的数据位宽;向量存储器2与算术逻辑单元2连接并构成一条数据通路,且向量存储器2和算术逻辑单元2具有相同的数据位宽;……;向量存储器N与算术逻辑单元N连接并构成一条数据通路,且向量存储器N和算术逻辑单元N具有相同的数据位宽。
3.根据权利要求1所述的定点向量处理器,其特征在于,向量存储器(3)和算术逻辑单元(4)构成的数据通路数量为1路~128路。
4.根据权利要求1所述的定点向量处理器,其特征在于,算术逻辑单元(4)中的算术逻辑单元2至算术逻辑单元N具有相同的结构,即均包括一个定点加/减法器(4-1)和一个定点乘法器(4-2);
定点加/减法器(4-1)用于接收向量存储器(3)发送的向量数据并对其进行加/减运算后输出运算结果至数据控制单元(5);
定点乘法器(4-2)用于接收向量存储器(3)发送的向量数据并对其进行乘法运算后输出运算结果至数据控制单元(5);
算术逻辑单元1中包括一个定点加/减法器(4-1)和一个定点乘法器(4-2)、定点指数函数运算单元(4-3)、定点除法器(4-4)、定点开方运算单元(4-5)和向量点积加法器树单元(4-6);
定点指数函数运算单元(4-3)用于接收向量存储器(3)发送的向量数据并对其进行指数运算后输出运算结果至数据控制单元(5);
定点除法器(4-4)用于接收向量存储器(3)发送的向量数据并对其进行除法运算后输出运算结果至数据控制单元(5);
定点开方运算单元(4-5)用于接收向量存储器(3)发送的向量数据并对其进行开方运算后输出运算结果至数据控制单元(5);
向量点积加法器树单元(4-6)用于完成向量点积运算中的N个点积运算结果进行加法运算。
5.根据权利要求1所述的定点向量处理器,其特征在于,算术逻辑单元(1)还包括三角函数Tan计算单元、三角函数Atan计算单元和对数函数Log计算单元。
6.根据权利要求1、2、3、4或5所述的定点向量处理器的向量数据访存控制方法,其特征在于,该方法包括下述步骤:
用于接收数据控制单元(5)发送的计数指令和微码存储器(2)发送的输入目标地址微码指令,并输出计数值至微码存储器(2)的步骤;
用于接收并存储程序计数器(1)发送的计数值,并输出通路索引L微码指令至数据控制单元(5),同时输出OP微码指令至算术逻辑单元(4)和数据控制单元(5),输出输入向量地址微码指令至向量存储器(3),输出输入目标地址微码指令至程序计数器(1)和向量存储器(3)的步骤;
用于接收并存储微码存储器(2)发送的输入向量地址微码指令和目标地址微码指令、数据控制单元(5)发送的输出向量数据指令和使能指令,并输出向量数据至算术逻辑单元(4)的步骤;
用于根据微码存储器(2)发送的OP微码指令和数据控制单元(5)发送的算术逻辑单元控制指令对接收的向量数据进行向量运算后得到向量,并将该向量输出至数据控制单元(5)的步骤;
用于根据微码存储器(2)发送的通路索引L微码指令和OP微码指令产生使能指令和输出向量数据指令,并输出至向量存储器(3);还产生算术逻辑单元控制指令,并输出至算术逻辑单元(4)使其进行指出函数运算、除法运算和开方运算;还产生计数指令并输出至程序计数器(1),使其计数的步骤。
7.根据权利要求6所述的定点向量处理器的向量数据访存控制方法,其特征在于,用于根据所述向量数据进行向量运算后得到向量,并传输至数据控制单元(5)的步骤中,所述向量运算过程包括:
用于接收向量存储器(3)发送的向量数据并对其进行加/减运算后输出运算结果至数据控制单元(5)的步骤;
用于接收向量存储器(3)发送的向量数据并对其进行乘法运算后输出运算结果至数据控制单元(5)的步骤;
用于接收向量存储器(3)发送的向量数据并对其进行指数运算后输出运算结果至数据控制单元(5)的步骤;
用于接收向量存储器(3)发送的向量数据并对其进行除法运算后输出运算结果至数据控制单元(5)的步骤;
用于接收向量存储器(3)发送的向量数据并对其进行开方运算后输出运算结果至数据控制单元(5)的步骤;
用于完成向量点积运算中的N个点积运算结果进行加法运算的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510144307.3A CN104699458A (zh) | 2015-03-30 | 2015-03-30 | 定点向量处理器及其向量数据访存控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510144307.3A CN104699458A (zh) | 2015-03-30 | 2015-03-30 | 定点向量处理器及其向量数据访存控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104699458A true CN104699458A (zh) | 2015-06-10 |
Family
ID=53346632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510144307.3A Pending CN104699458A (zh) | 2015-03-30 | 2015-03-30 | 定点向量处理器及其向量数据访存控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699458A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017124648A1 (zh) * | 2016-01-20 | 2017-07-27 | 北京中科寒武纪科技有限公司 | 一种向量计算装置 |
WO2017185384A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
WO2017185385A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量合并运算的装置和方法 |
WO2017185395A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量比较运算的装置和方法 |
CN107315716A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量外积运算的装置和方法 |
CN107873091A (zh) * | 2015-07-20 | 2018-04-03 | 高通股份有限公司 | Simd滑动窗口运算 |
CN108153514A (zh) * | 2017-12-19 | 2018-06-12 | 北京云知声信息技术有限公司 | 一种浮点向量加速方法及装置 |
CN108415728A (zh) * | 2018-03-01 | 2018-08-17 | 中国科学院计算技术研究所 | 一种用于处理器的扩展浮点运算指令执行方法及装置 |
CN108733408A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 计数装置及计数方法 |
CN109388427A (zh) * | 2017-08-11 | 2019-02-26 | 龙芯中科技术有限公司 | 向量处理方法、向量处理单元和微处理器 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN111651205A (zh) * | 2016-04-26 | 2020-09-11 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
CN112470139A (zh) * | 2018-01-08 | 2021-03-09 | 阿特拉佐有限公司 | 用于数据处理装置、***和方法的紧凑算术加速器 |
WO2021078212A1 (zh) * | 2019-10-25 | 2021-04-29 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
US11507350B2 (en) | 2017-04-21 | 2022-11-22 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Processing apparatus and processing method |
US11531540B2 (en) | 2017-04-19 | 2022-12-20 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Processing apparatus and processing method with dynamically configurable operation bit width |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
CN102411773A (zh) * | 2011-07-28 | 2012-04-11 | 中国人民解放军国防科学技术大学 | 面向向量处理器的去均值归一化积相关系数的向量化实现方法 |
CN102750133A (zh) * | 2012-06-20 | 2012-10-24 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
-
2015
- 2015-03-30 CN CN201510144307.3A patent/CN104699458A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
CN102411773A (zh) * | 2011-07-28 | 2012-04-11 | 中国人民解放军国防科学技术大学 | 面向向量处理器的去均值归一化积相关系数的向量化实现方法 |
CN102750133A (zh) * | 2012-06-20 | 2012-10-24 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
Non-Patent Citations (1)
Title |
---|
YEYONG PANG等: "A low latency kernel recursive least squares processor using FPGA technology", 《2013 INTERNATIONAL CONFERENCE ON FIELD-PROGRAMMABLE TECHNOLOGY(FPT)》 * |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107873091B (zh) * | 2015-07-20 | 2021-05-28 | 高通股份有限公司 | 用于滑动窗口运算的方法和设备 |
CN107873091A (zh) * | 2015-07-20 | 2018-04-03 | 高通股份有限公司 | Simd滑动窗口运算 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
KR102304216B1 (ko) | 2016-01-20 | 2021-09-23 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 벡터 계산 장치 |
US11734383B2 (en) | 2016-01-20 | 2023-08-22 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
KR102185287B1 (ko) | 2016-01-20 | 2020-12-01 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 벡터 연산 장치 |
CN106990940B (zh) * | 2016-01-20 | 2020-05-22 | 中科寒武纪科技股份有限公司 | 一种向量计算装置及运算方法 |
CN106990940A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种向量计算装置 |
CN111580863B (zh) * | 2016-01-20 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
CN111580865B (zh) * | 2016-01-20 | 2024-02-27 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
WO2017124648A1 (zh) * | 2016-01-20 | 2017-07-27 | 北京中科寒武纪科技有限公司 | 一种向量计算装置 |
CN111580865A (zh) * | 2016-01-20 | 2020-08-25 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
CN111580863A (zh) * | 2016-01-20 | 2020-08-25 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
KR20190073593A (ko) * | 2016-01-20 | 2019-06-26 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 벡터 계산 장치 |
KR20200058562A (ko) * | 2016-01-20 | 2020-05-27 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 벡터 계산 장치 |
EP3451156A4 (en) * | 2016-04-26 | 2020-03-25 | Cambricon Technologies Corporation Limited | APPARATUS AND METHOD FOR PERFORMING A VECTOR CIRCULAR SHIFT OPERATION |
US10853069B2 (en) | 2016-04-26 | 2020-12-01 | Cambricon Technologies Corporation Limited | Apparatus and methods for comparing vectors |
CN107315716B (zh) * | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量外积运算的装置和方法 |
WO2017185384A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
CN111651205B (zh) * | 2016-04-26 | 2023-11-17 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
CN107315563A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量比较运算的装置和方法 |
CN111651205A (zh) * | 2016-04-26 | 2020-09-11 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
WO2017185385A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量合并运算的装置和方法 |
CN107315716A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量外积运算的装置和方法 |
WO2017185395A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量比较运算的装置和方法 |
US11720353B2 (en) | 2017-04-19 | 2023-08-08 | Shanghai Cambricon Information Technology Co., Ltd | Processing apparatus and processing method |
US11698786B2 (en) | 2017-04-19 | 2023-07-11 | Shanghai Cambricon Information Technology Co., Ltd | Processing apparatus and processing method |
US11531541B2 (en) | 2017-04-19 | 2022-12-20 | Shanghai Cambricon Information Technology Co., Ltd | Processing apparatus and processing method |
US11531540B2 (en) | 2017-04-19 | 2022-12-20 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Processing apparatus and processing method with dynamically configurable operation bit width |
US11734002B2 (en) | 2017-04-19 | 2023-08-22 | Shanghai Cambricon Information Technology Co., Ltd | Counting elements in neural network input data |
CN108733408A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 计数装置及计数方法 |
US11507350B2 (en) | 2017-04-21 | 2022-11-22 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Processing apparatus and processing method |
CN109324826B (zh) * | 2017-04-21 | 2021-03-26 | 上海寒武纪信息科技有限公司 | 计数装置和计数方法 |
CN109324826A (zh) * | 2017-04-21 | 2019-02-12 | 上海寒武纪信息科技有限公司 | 计数装置和计数方法 |
CN109388427A (zh) * | 2017-08-11 | 2019-02-26 | 龙芯中科技术有限公司 | 向量处理方法、向量处理单元和微处理器 |
CN108153514A (zh) * | 2017-12-19 | 2018-06-12 | 北京云知声信息技术有限公司 | 一种浮点向量加速方法及装置 |
CN112470139B (zh) * | 2018-01-08 | 2022-04-08 | 阿特拉佐有限公司 | 用于数据处理装置、***和方法的紧凑算术加速器 |
CN112470139A (zh) * | 2018-01-08 | 2021-03-09 | 阿特拉佐有限公司 | 用于数据处理装置、***和方法的紧凑算术加速器 |
CN108415728B (zh) * | 2018-03-01 | 2020-12-29 | 中国科学院计算技术研究所 | 一种用于处理器的扩展浮点运算指令执行方法及装置 |
CN108415728A (zh) * | 2018-03-01 | 2018-08-17 | 中国科学院计算技术研究所 | 一种用于处理器的扩展浮点运算指令执行方法及装置 |
WO2021078212A1 (zh) * | 2019-10-25 | 2021-04-29 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699458A (zh) | 定点向量处理器及其向量数据访存控制方法 | |
Singh et al. | NERO: A near high-bandwidth memory stencil accelerator for weather prediction modeling | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN106775599B (zh) | 递归神经网络的多计算单元粗粒度可重构***及方法 | |
Garofalo et al. | XpulpNN: Accelerating quantized neural networks on RISC-V processors through ISA extensions | |
CN108197705A (zh) | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 | |
CN112308222B (zh) | 一种基于rram存算一体全***模拟器及其设计方法 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
CN108647779A (zh) | 一种低位宽卷积神经网络可重构计算单元 | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN114995823A (zh) | 一种面向cnn专用加速器的深度学习编译器优化方法 | |
CN109871951A (zh) | 一种深度学习处理器及电子设备 | |
CN112446471B (zh) | 基于异构众核处理器的卷积加速方法 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
Zafar et al. | Hardware architecture design and mapping of ‘Fast Inverse Square Root’algorithm | |
Gan et al. | Solving mesoscale atmospheric dynamics using a reconfigurable dataflow architecture | |
Vishnu et al. | 32-Bit RISC Processor Using VedicMultiplier | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
CN116822600A (zh) | 一种基于risc-v架构的神经网络搜索芯片 | |
Diamantopoulos et al. | A system-level transprecision FPGA accelerator for BLSTM using on-chip memory reshaping | |
CN112051981A (zh) | 一种数据流水线计算路径结构及单线程数据流水线*** | |
CN103761213A (zh) | 基于循环流水计算的片上阵列*** | |
Abdelhamid et al. | MITRACA: A next-gen heterogeneous architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150610 |