CN112784970B - 一种硬件加速器、数据处理方法、系统级芯片及介质 - Google Patents

一种硬件加速器、数据处理方法、系统级芯片及介质 Download PDF

Info

Publication number
CN112784970B
CN112784970B CN202011641233.1A CN202011641233A CN112784970B CN 112784970 B CN112784970 B CN 112784970B CN 202011641233 A CN202011641233 A CN 202011641233A CN 112784970 B CN112784970 B CN 112784970B
Authority
CN
China
Prior art keywords
instruction
data
neural network
calculation
vector
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
Application number
CN202011641233.1A
Other languages
English (en)
Other versions
CN112784970A (zh
Inventor
王岩
黄运新
张吉兴
李卫军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202011641233.1A priority Critical patent/CN112784970B/zh
Publication of CN112784970A publication Critical patent/CN112784970A/zh
Priority to PCT/CN2021/118470 priority patent/WO2022142479A1/zh
Priority to US18/201,755 priority patent/US20230297375A1/en
Application granted granted Critical
Publication of CN112784970B publication Critical patent/CN112784970B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种硬件加速器、数据处理方法、系统级芯片及介质,硬件加速器处理的指令集包括:数据流控制指令用于执行数据流控制;常规类型计算指令用于执行常规类型计算,以完成所述循环神经网络中的常规类型计算;专用类型计算指令用于执行专用类型计算,以完成所述循环神经网络中的专用类型计算;指数移位指令用于执行指数移位,以完成所述循环神经网络计算中的数据归一化;数据转移指令用于执行数据转移,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。本申请通过上述技术方案,能够有效提升用于运行循环神经网络的硬件加速器的计算资源利用率,并能够有效避免数据和资源方面的冲突。

Description

一种硬件加速器、数据处理方法、系统级芯片及介质
技术领域
本发明涉及人工智能技术领域,特别涉及一种硬件加速器、数据处理方法、系统级芯片及介质。
背景技术
目前,针对神经网络的硬件加速器有Google的TPU、NVDIA的NVDLA、寒武纪等等。主流的神经网络硬件加速器针对CNN(即Convolutional Neural Networks,卷积神经网络)网络和RNN(即Recurrent Neural Network,循环神经网络)神经网络做了大量的计算优化,并在硬件计算的过程中针对卷积以及不同大小的卷积核卷积运算做了针对性的优化。
现有技术中,还未看到专门针对循环神经网络的对高吞吐率和实时推理有要求的相关方法和技术。且现有技术主要还是集中在综合了RNN和CNN的方法和流程以及硬件架构上。由于现有的RNN和CNN神经网络硬件加速器是通用的,很难适用于专门针对循环神经网络的计算,具有以下几点缺点:
1、因要兼顾较多的CNN以及其他计算应用,所以计算资源利用率不高;
2、已有技术流程中有较多拼接数据,而在针对RNN单独优化的方法与流程中并不需要考虑数据的拼接;
3、前后指令的数据存在依赖关系,有一个专门模块去判断数据依赖关系以决定流水线是停止或运行,其方法与流程无法做到较高的计算资源利用率;
4、现有的一些方法与架构,需通过软件调度的方式来平衡资源以及回收硬件资源,未对指令进行规划,往往会造成数据冲突(需要的数据还没有计算完成,通过合理安排指令)和资源冲突(每条指令都拥有完成的一套计算资源,分布在流水线各处),运算效率低。
发明内容
有鉴于此,本发明的目的在于提供一种用于运行循环神经网络指令集的硬件加速器、数据处理方法、系统级芯片及存储介质,能够有效提升用于运行循环神经网络的硬件加速器的计算资源利用率,并能够有效避免数据和资源方面的冲突。其具体方案如下:
第一方面,本申请公开了一种用于运行循环神经网络指令集的硬件加速器,所述硬件加速器用于处理所述指令集,所述指令集包括:
数据流控制指令,用于执行数据流控制,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;
常规类型计算指令,用于执行常规类型计算,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;
专用类型计算指令,用于执行专用类型计算,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;
指数移位指令,用于执行指数移位,以完成所述循环神经网络计算中的数据归一化;
数据转移指令,用于执行数据转移,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
可选的,所述硬件加速器内设置的存储器包括:
输入向量存储器,用于存储待计算的输入向量;
权重向量存储器,用于存储所述循环神经网络的权重向量;
偏置参数存储器,用于存储所述循环神经网络的偏置参数;
中间数据通用存储器,用于存储所述循环神经网络运行过程中产生的中间数据;
输出结果存储器,用于存储所述循环神经网络的输出结果。
可选的,所述数据流控制指令,包括:
第一子指令,用于执行输入控制,以通过所述输入向量存储器的状态控制所述循环神经网络中的计算流水线的输入;
第二子指令,用于执行输出控制,以通过所述输出结果存储器的状态控制所述循环神经网络中的计算流水线的输出;
第三子指令,用于执行运行控制,以控制所述循环神经网络中的计算流水线的运行。
可选的,所述常规类型计算指令,包括:
第一参数提取单元,用于从所述常规类型计算指令中提取出向量操作数地址、偏置参数地址、激活操作控制码和后处理操作控制码;
第一数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述权重向量和所述数据向量,以及读取出与所述偏置参数地址对应的所述偏置参数;
第一计算单元,用于计算所述权重向量和所述数据向量的点乘结果,并将所述点乘结果与所述偏置参数相加,得到相应的向量计算结果;
第二计算单元,用于在所述激活控制码的控制下,完成所述常规类型计算过程中的与所述向量计算结果对应的激活函数,得到相应的激活函数运算结果;
第三计算单元,用于在所述后处理操作控制码的控制下,完成所述常规类型计算过程中的与所述激活函数运算结果对应的后处理操作。
可选的,所述专用类型计算指令,包括:
第二参数提取单元,用于从所述专用类型计算指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
第二数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述输入门、所述状态门、所述遗忘门和所述前一状态数据;
第四计算单元,用于创建与所述输入门和所述遗忘门对应的第一向量以及创建与所述状态门和所述前一状态数据对应的第二向量,然后计算所述第一向量和所述第二向量的点乘结果;
第五计算单元,用于在所述激活操作控制码的控制下,完成所述专用类型计算过程中的与所述点乘结果对应的激活函数,得到相应的激活函数运算结果;
第六计算单元,用于在所述后处理操作控制码的控制下,完成所述专用类型计算过程中的与所述激活函数运算结果对应的后处理操作。
可选的,所述指数移位指令,包括:
第三参数提取单元,用于从所述指数移位指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
第三数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的第一向量和第二向量;
第七计算单元,用于对所述第一向量和所述第二向量进行乘积累加运算,得到相应的乘积累加运算结果;
第八计算单元,用于在所述激活操作控制码的控制下,完成所述移位操作过程中的与所述乘积累加运算结果对应的激活函数,得到相应的激活函数运算结果;
第九计算单元,用于在所述后处理操作控制码的控制下,完成所述移位操作过程中的与所述激活函数运算结果对应的后处理操作。
可选的,所述数据转移指令,包括:
MOV指令,用于执行第一数据转移操作,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作;
LDR指令,用于执行第二数据转移操作,以从存储器中读取数据并将读取到的数据转移至寄存器;
SRT指令,用于执行第三数据转移操作,以从寄存器中读取数据并将读取到的数据转移至存储器。
可选的,所述硬件加速器内设置的寄存器包括:
向量寄存器,用于存储向量变量;
地址寄存器,用于完成地址的寻址和计算处理;
普通寄存器,用于存储指令计算结果;
部件寄存器,用于为半精度浮点运算过程、激活函数计算过程和后处理过程提供服务以减少流水线等待时间;
循环寄存器,用于为循环指令和跳转指令提供服务。
第二方面,本申请公开了一种基于循环神经网络指令集的数据处理方法,包括:
通过执行数据流控制指令,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;
通过执行常规类型计算指令,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;
通过执行专用类型计算指令,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;
通过执行指数移位指令,以完成所述循环神经网络计算中的数据归一化;
通过执行数据转移指令,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
第三方面,本申请公开了一种系统级芯片,包括前述的用于运行循环神经网络指令集的硬件加速器。
第四方面,本申请公开了一种计算机可读存储介质,用于保存循环神经网络指令集,所述循环神经网络指令集被硬件加速器执行时完成前述的数据处理方法。
本申请中,硬件加速器所处理的循环神经网络的指令集,包括数据流控制指令、常规类型计算指令、专用类型计算指令、指数移位指令和数据转移指令。其中,数据流控制指令用于执行数据流控制,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;常规类型计算指令用于执行常规类型计算,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;专用类型计算指令用于执行专用类型计算,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;指数移位指令用于执行指数移位,以完成所述循环神经网络计算中的数据归一化;数据转移指令用于执行数据转移,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。本申请通过上述技术方案,能够有效提升用于运行循环神经网络的硬件加速器的计算资源利用率,并能够有效避免数据和资源方面的冲突。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种硬件加速器结构示意图;
图2为本申请公开的一种具体的硬件加速器结构示意图;
图3为本申请公开的一种寄存器组示意图;
图4为本申请公开的关于常规类型计算指令/专用类型计算指令/指数移位指令流水线涉及示意图;
图5为本申请公开的流水线计算周期示意图;
图6为本申请公开的有气泡的流水线计算周期示意图;
图7为本申请公开的一种数据处理子流程图;
图8为本申请公开的另一种数据处理子流程图;
图9为本申请公开的又一种数据处理子流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1所示,本发明实施例公开了一种用于运行循环神经网络指令集01的硬件加速器02,所述硬件加速器02用于处理所述指令集01,所述指令集01包括:
数据流控制指令11,用于执行数据流控制,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;
常规类型计算指令12,用于执行常规类型计算,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;
专用类型计算指令13,用于执行专用类型计算,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;
指数移位指令14,用于执行指数移位,以完成所述循环神经网络计算中的数据归一化;
数据转移指令15,用于执行数据转移,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
本实施例中,为了契合循环神经网络计算特点,以便硬件加速器中的算力资源得到高效利用,本实施例相应地提出了至少包含上述五种类型的指令的指令集01。也即,本实施例结合循环神经网络在数据流控制、常规类型计算、专用类型计算、指数移位和数据转移等方面的运算特点,相应的提出了上述数据流控制指令11、常规类型计算指令12、专用类型计算指令13、指数移位指令14以及数据转移指令15。
其中,通过数据流控制指令11可以控制循环神经网络计算流水线的输入端的数据和输出端的数据;通过常规类型计算指令12可以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;通过专用类型计算指令13可以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;通过指数移位指令14可以完成所述循环神经网络计算中的数据归一化;通过数据转移指令15可以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
参见图2所示,本实施例中,所述硬件加速器02中具体可以包括处理模块201、计算模块202、激活函数模块203、后处理模块204、回写模块205以及存储器和寄存器212。其中,硬件加速器02的输入侧可以获取指令、向量、权重以及偏置参数等,并将其放进对应的寄存器中,处理模块201具体用于取指、译码以及获取操作数,计算模块202具体用于进行基本的乘加运算,激活函数模块203用于获得sigmoid或tanh函数值,后处理模块204则用于进行一次乘法或加法运算以及fp16数据格式化等,回写模块205用于将结果缓存到储存器指定位置。在计算完毕之后,硬件加速器02通过输出结果存储器输出相应的计算结果。
另外,硬件加速器02中的上述存储器除了用于保存指令的指令存储器206以外,还具体包括:
输入向量存储器207,用于存储待计算的输入向量;
权重向量存储器208,用于存储所述循环神经网络的权重向量;
偏置参数存储器209,用于存储所述循环神经网络的偏置参数;
中间数据通用存储器210,用于存储所述循环神经网络运行过程中产生的中间数据;
输出结果存储器211,用于存储所述循环神经网络的输出结果。
另外,本实施例中,所述硬件加速器02内设置的寄存器212具体可以包括:
向量寄存器,用于存储向量变量;
地址寄存器,用于完成地址的寻址和计算处理;
普通寄存器,用于存储指令计算结果;
部件寄存器,用于为半精度浮点运算过程、激活函数计算过程和后处理过程提供服务以减少流水线等待时间;
循环寄存器,用于为循环指令和跳转指令提供服务。
图3示出了本申请实施例所使用的寄存器组。其中,adr0,adr1…为地址寄存器,VREG0,VREG1..为向量寄存器,i0,i1,i2,i3,f0,f1…,T0,T1,T2,T3为普通寄存器,MacR0,MacR1..LUTR0,LUTR1为部件寄存器。部件寄存器在流水线的部件中,在指令执行过程中可以使用,为了减少流水线气泡而设计;普通寄存器是用来存储指令计算结果;向量寄存器存储的是向量变量,循环神经网络计算中主要的操作数常为向量变量;循环寄存器是用给循环指令、跳转指令使用隐藏使用的。
另外,需要指出的是,本实施例中的向量寄存器、普通寄存器和部件寄存器均为数量可配置的寄存器。
下面通过以LSTM(即Long Short-Term Memory,长短期记忆网络)这种循环神经网络为例,对上述指令集的形成原因进行具体说明。在LSTM网络中,在一次循环中主要进行下面的六个计算:
it=σ(Wxixt+Whiht-1+bi) (1)
ft=σ(Wxfxt+Whfht-1+bf) (2)
ot=σ(Wxoxt+Whoht-1+bo) (5)
ht=ot⊙tanh(ct) (6)
式中,it表示输入门,表示状态门,ft表示遗忘门,ct表示状态数据,σ表示激活函数,⊙表示哈达玛乘积,ot表示输出门,ht表示中间结果,作为下一次循环计算的输入之一,循环的最后一次计算后的ht作为LSTM的最终输出,W表示权重,x表示数据向量,b表示偏置参数。其中,上述计算公式(1)、(2)、(3)和(5)对应于常规类型计算指令12,而上述计算公式(4)和(6)则对应于专用类型计算指令13。数据流控制指令11则是用于进行数据流的控制,指数移位指令14用于进行指数移位,防止计算中的数据格式对应的数值表达域的溢出,以对数据实现空间归一化操作。数据转移指令15则用于执行数据转移。具体的:
对于数据流控制指令11:为了完成整个计算过程,往往需要对中间各个计算环节进行监控,把控每一步何时启动、何时等待、何时中断等。具体的,比如在上一步计算没有完成前或是数据不到位的情况下等待;在上一步计算完成后及数据到位的情况下启动。如果在上一步计算没有完成前或是数据不到位的情况下,启动下一步计算,则会发生溢出类错误;再如果,在上步计算完成后及数据到位的情况下,如果还在等待,则会影响计算效率。但是,对中间的每个环节都进行监控效率是极低的,开销也会很大。比如,每一步计算单元计算完成向控制单元发出结果有效信号,控制单元收到上一步计算的结果的有效信号,向下一步计算单元发出使能信号。可想而知,不仅控制逻辑开销大、功耗高,而且反而因为增加监控影响计算效率的最大化。为此,本实施例选择监控计算流水线的输入端和输出端,以取代对中间各个计算环节进行监控。
对于常规类型计算指令12:首先,将上面公式的(1)、(2)、(3)和(5)抽象为:
其中,θ代表激活函数σ或tanh函数,对应上式(1)、(2)、(3)和(5)中的{it,Wxi,Whi,bi}、{ft,Wxf,Whf,bf}、/> 或{ot,Wxo,Who,bo},一组变量中对应第j个元素或第j行向量,其中τj与bj为元素,/>与/>为行向量。所以,LSTM模型计算中有2/3都是如(7)的计算形式,在传统指令设计中是没有单独考虑这类运算的,或是无法通过一条指令实现;本专利中,特别针对这类计算形式设计了常规类型计算指令12。其次,为了方便向量操作,单条指令中直接传递本条指令循环次数,其对应向量的维度。具体的,使用指令的高8位(即56~63位,指令集为64位)表示循环次数,所以对应的一条指令可以最多循环128次(=28),可支持最高128维的向量计算操作。另外,单条指令中包括了灵活的地址后处理操作命令,对比传统技术中需要多条指令重复堆叠或用指令循环嵌套来实现方式,本实施例不仅简化了编指工作,提高取指和译码的效率,更能有效减少指令存储所占空间,减轻对计算单元的竞争与负载。具体的,使用64位指令低0~15位(共16比特位),每4位为一段,分别对应指定一个目标操作数地址或三个源操作数地址的一个地址后处理操作计算方式。
对于专用类型计算指令13:由于LSTM是一种循环神经网络,上面公式(1)~(6)的计算过程其实是循环的。于是,在为公式(1)(2)(3)(5)设计了相应的指令之后,本实施例也为另外的两个高频计算形式(对应于公式(4)和(6))设计专有指令,即得到上述专用类型计算指令13。
对于指数移位指令14:由于神经网络计算时数据需要尽可能保持同分布的特点,并且为了支持fp16、int16、int8等低位宽的计算要求,往往数据需要做空间归一化的操作。同时,如果指定数据归一化的比例为2m,这里m∈Z;这样,归一化操作只是对计算二进制结果的指数部分进行操作,可放在后处理阶段。这样,不仅没有太多的额外计算,减轻对计算单元的竞争与负载;同时,保证了后续流水线周期的对齐,便于设计。以fp16数据格式为例,如果需要将数据缩小16倍,则将16位二进制数的指数部分的高3位减1,若无溢出,其它位保持不变,即得到原数据缩小16倍后的结果。
对于数据转移指令15:众所周知,寄存器访问速度快,但面积大数量设计有限;而存储ROM访问延时高,但地址空间多。数据搬移指令设计,目的之一是为了平衡两者的使用。除了现有指令集中的功能以外,通过数据转移指令还实现了LSTM循环计算时变量的更新;同时,数据转移指令还可将立即数传递给寄存器或存储中,从而实现了LSTM/RNN模型的初始化和输入数据窗口的滑动。
本实施例中,上述指令具有高效、灵活和简洁等优点。具体的,
a、全面支持向量操作:通过的特殊字段的使用与定义,本申请中的指令集实现了对多维向量的操作的全面支持,不仅减少了指令存储开销,更为后续编指应用提供便捷。为了方便向量操作,单条指令中直接传递本条指令循环次数,其对应向量的维度。具体的,使用指令的高8位(即56~63位,指令集为64位,首位为第0位)表示循环次数,所以对应的一条指令可以最多循环128次(=28),可支持最高128维的向量计算操作。
b、既高效又灵活的多合一指令功能设计:本申请的指令集中的指令,特别是计算操作类指令,包含:操作类型、操作数或其地址、地址的后处理、计算的后处理以及循环次数等信息字段。不仅减少了指令存储开销,提高取指和译码的效率;更重要的是,通过指令功能的复合,使得在指令集的设计中就提前考虑流水线并行的效率,降低了后续编指及应用中的性能瓶颈或资源冲突发生的风险,提升了二次开发的易操作性。
c、自动取址后处理创新,聚焦操作重点:针对循环神经网络计算中循环过程和输入变量的特点,电路实现地址获取后寄存器地址的自动更新,指向指令循环请求的下一目标操作数地址或源操作数地址,强化流水线核心任务的聚焦。单条指令中包括了灵活的地址后处理操作命令,对比传统技术中需要多条指令重复堆叠或用指令循环嵌套来实现方式,不仅简化了编指工作,提高取指和译码的效率,更能有效减少指令存储所占空间,减轻对计算单元的竞争与负载。具体的,使用64位指令低0~15位(共16比特位),每4位为一段,分别对应指定一个目标操作数址或三个源操作数地址的一个地址后处理操作计算方式。
e、与循环神经网络计算特点的高度契合,算力资源有的放矢:从前述内容可以看出,尤其是常规类型计算指令12、专用类型计算指令13和指数移位指令14的设计,使得本指令集能够高度契合LSTM模型计算的特点,提炼了核心运算的共性,全面覆盖了模型计算的各个环节,从实际应用效果来看,计算资源实际的利用率达到95%以上,实现了循环神经网络计算加速器的高功效。
由上可见,本实施例,实现了专门循环神经网络模型的硬件加速器所需的指令集的设计,通过数据流控制指令仅对流水线的输入端和输出端数据流的监控,即可实现整个流水线的数据流控,又可避免各个计算环节的流控监控所带来的大开销,提高了计算效率;通过常规类型计算指令可实现传统指令设计中并未单独考虑或无法通过一条指令实现的运算表达式的计算;通过专用类型计算指令可实现专用类型计算所涉及的表达式的计算;通过指数移位指令和数据转移指令可分别实现数据的归一化操作和数据的搬移;通过以上指令集的设计,相比现有技术,大大提高了整个计算的效率,同时又能保证低开销和低功耗。可见,本申请实施例通过上述技术方案,能够有效提升用于运行循环神经网络的硬件加速器的计算资源利用率,并能够有效避免数据和资源方面的冲突。
下面对本申请实施例中的指令集进行更进一步的说明。本实施例中,所述数据流控制指令,具体可以包括:
第一子指令,用于执行输入控制,以通过所述输入向量存储器的状态控制所述循环神经网络中的计算流水线的输入;
第二子指令,用于执行输出控制,以通过所述输出结果存储器的状态控制所述循环神经网络中的计算流水线的输出;
第三子指令,用于执行运行控制,以控制所述循环神经网络中的计算流水线的运行。
需要指出的是,在实际应用过程中,上述输入控制、输出控制和运行控制的相关操作,既可以同时存在,也可以相互独立的出现。
本实施例中,所述常规类型计算指令,具体可以包括:
第一参数提取单元,用于从所述常规类型计算指令中提取出向量操作数地址、偏置参数地址、激活操作控制码和后处理操作控制码;
第一数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述权重向量和所述数据向量,以及读取出与所述偏置参数地址对应的所述偏置参数;
第一计算单元,用于计算所述权重向量和所述数据向量的点乘结果,并将所述点乘结果与所述偏置参数相加,得到相应的向量计算结果;
第二计算单元,用于在所述激活控制码的控制下,完成所述常规类型计算过程中的与所述向量计算结果对应的激活函数,得到相应的激活函数运算结果;
第三计算单元,用于在所述后处理操作控制码的控制下,完成所述常规类型计算过程中的与所述激活函数运算结果对应的后处理操作。
本实施例中,所述专用类型计算指令,具体可以包括:
第二参数提取单元,用于从所述专用类型计算指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
第二数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述输入门、所述状态门、所述遗忘门和所述前一状态数据;
第四计算单元,用于创建与所述输入门和所述遗忘门对应的第一向量以及创建与所述状态门和所述前一状态数据对应的第二向量,然后计算所述第一向量和所述第二向量的点乘结果;
第五计算单元,用于在所述激活操作控制码的控制下,完成所述专用类型计算过程中的与所述点乘结果对应的激活函数,得到相应的激活函数运算结果;
第六计算单元,用于在所述后处理操作控制码的控制下,完成所述专用类型计算过程中的与所述激活函数运算结果对应的后处理操作。
本实施例中,所述指数移位指令,具体可以包括:
第三参数提取单元,用于从所述指数移位指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
第三数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的第一向量和第二向量;
第七计算单元,用于对所述第一向量和所述第二向量进行乘积累加运算,得到相应的乘积累加运算结果;
第八计算单元,用于在所述激活操作控制码的控制下,完成所述移位操作过程中的与所述乘积累加运算结果对应的激活函数,得到相应的激活函数运算结果;
第九计算单元,用于在所述后处理操作控制码的控制下,完成所述移位操作过程中的与所述激活函数运算结果对应的后处理操作。
本实施例中,上述第一向量和第二向量多用于输入预处理和输出后处理,输入预处理和输出后处理一般采用的是全连接层的计算方式,全连接层的每步计算对应有一个输入和权重,另外,通过上述第三数据读取单元读取出的信息还可以包括偏置参数。
本实施例中,所述数据转移指令,具体可以包括:
MOV指令,用于执行第一数据转移操作,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作;
LDR指令,用于执行第二数据转移操作,以从存储器中读取数据并将读取到的数据转移至寄存器;
SRT指令,用于执行第三数据转移操作,以从寄存器中读取数据并将读取到的数据转移至存储器。
需要指出的是,在实际应用过程中,上述第一数据转移操作、第二数据转移操作和第三数据转移操作可以同时存在,也可以相互独立的出现。
进一步的,本实施例进一步提出了一种流水线设计方案,具体可以参见图4、图5和图6。本实施例中上述指令集的设计和实现,能够保证流水线具备以下特性:
A、周期均分:根据流水线的原理,不难得出各段执行时间最长的那段为整个流水线的瓶颈。比如,图6所示,此处乘加计算阶段需要5个时钟周期,激活函数查表需要4个时钟周期,如果直接按照流水线并行来处理,会出现图中所示气泡的发生。于是,本实施例将各指令的处理过程的各个阶段尽可能按照一个时钟周期进行切分设计,尤其是计算相关指令,如图4所示:
取指(1个周期);
译码(3个周期):获取指令中源和目标操作数对应字段;如是直接或间接寻址,继续访问对应寄存器;如是间接寻找,继续访问上一周期访问的对应寄存器中地址信息所对应的寄存器或存储器中的单元;
乘加计算(5个周期):乘法1个周期;另4个周期最大支持128个数线性流水线累加;
激活函数查表(4个周期):确定分段;地址映射;查表;插值计算;
后处理(2个周期):可选的乘加运算;fp16规格化处理;
写缓存(1个周期)。
通过上述设计,实现了图5所示的饱和的流水线计算过程。
B、分段对齐:注意到,前述公式(6)的计算需要用到公式(4)的结果,由于等待上一步计算结果,将会使线性流水线并行无法饱和,产生气泡。因此,本实施例可以将公式(6)进行转化,得到公式(8):
并且,将⊙运算(哈达玛乘积)放在最后进行,对应流水线中的后处理计算阶段,这样实现了计算指令流水线处理的各个阶段的对齐与统一,不仅避免了上述问题,更方便了如避免资源竞争的其它设计。
C、资源占用不重叠:为了保证线性流水线的并行,在每条指令的一次执行过程中避免计算器、存储器和寄存器的在多个时钟周期被占用或者重叠的情况发生。比如,乘法加法计算阶段,4个时钟周期使用的加法器是不同的,并不是循环复用的,从而避免各阶段计算不能并行给流水线带来气泡的情况发生。
可见,本实施例通过上述的指令集结合循环神经网络计算流水线架构,针对各种时间序列网络的算法,拆解成不同类型的基本计算,不同定义的指令代表不同类型的基本计算,通过不同指令的组合形成的指令集,组合各种基本计算,以计算带宽最大化为设计优化目标,尽量减少流水线气泡(即流水线中出现的硬件空闲情况),实现流水线执行效率最大化,最大化用满硬件计算资源,以较小的硬件开销,实现循环神经网络算法及满足其算法变化的各种需求。
进一步的,本申请实施例还公开了一种基于循环神经网络指令集的数据处理方法,包括:
通过执行数据流控制指令,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;
通过执行常规类型计算指令,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;
通过执行专用类型计算指令,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;
通过执行指数移位指令,以完成所述循环神经网络计算中的数据归一化;
通过执行数据转移指令,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
进一步的,上述通过执行数据流控制指令,以控制循环神经网络计算流水线的输入端的数据和输出端的数据,具体可以包括:执行输入控制,以通过输入向量存储器的状态控制所述循环神经网络中的计算流水线的输入;执行输出控制,以通过输出结果存储器的状态控制所述循环神经网络中的计算流水线的输出;以及执行运行控制,以控制所述循环神经网络中的计算流水线的运行。
参见图7所示,上述通过执行常规类型计算指令,以完成所述循环神经网络中的常规类型计算,具体可以包括:
步骤S11:从所述常规类型计算指令中提取出向量操作数地址、偏置参数地址、激活操作控制码和后处理操作控制码;
步骤S12:从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述权重向量和所述数据向量,以及读取出与所述偏置参数地址对应的所述偏置参数;
步骤S13:计算所述权重向量和所述数据向量的点乘结果,并将所述点乘结果与所述偏置参数相加,得到相应的向量计算结果;
步骤S14:在所述激活控制码的控制下,完成所述常规类型计算过程中的与所述向量计算结果对应的激活函数,得到相应的激活函数运算结果;
步骤S15:在所述后处理操作控制码的控制下,完成所述常规类型计算过程中的与所述激活函数运算结果对应的后处理操作。
参见图8所示,上述通过执行专用类型计算指令,以完成所述循环神经网络中的专用类型计算,具体可以包括:
步骤S21:从所述专用类型计算指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
步骤S22:从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述输入门、所述状态门、所述遗忘门和所述前一状态数据;
步骤S23:创建与所述输入门和所述遗忘门对应的第一向量以及创建与所述状态门和所述前一状态数据对应的第二向量,然后计算所述第一向量和所述第二向量的点乘结果;
步骤S24:在所述激活操作控制码的控制下,完成所述专用类型计算过程中的与所述点乘结果对应的激活函数,得到相应的激活函数运算结果;
步骤S25:在所述后处理操作控制码的控制下,完成所述专用类型计算过程中的与所述激活函数运算结果对应的后处理操作。
参见图9所示,上述通过执行指数移位指令,以完成所述循环神经网络计算中的数据归一化,具体可以包括:
步骤S31:从所述指数移位指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
步骤S32:从相关的寄存器或存储器中读取出与所述向量操作数地址对应的第一向量和第二向量;
步骤S33:对所述第一向量和所述第二向量进行乘积累加运算,得到相应的乘积累加运算结果;
步骤S34:在所述激活操作控制码的控制下,完成所述移位操作过程中的与所述乘积累加运算结果对应的激活函数,得到相应的激活函数运算结果;
步骤S35:在所述后处理操作控制码的控制下,完成所述移位操作过程中的与所述激活函数运算结果对应的后处理操作。
另外,上述通过执行数据转移指令,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作,具体可以包括:执行第一数据转移操作,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作;执行第二数据转移操作,以从存储器中读取数据并将读取到的数据转移至寄存器;以及执行第三数据转移操作,以从寄存器中读取数据并将读取到的数据转移至存储器。
进一步的,本申请还提出了一种适用于循环神经网络的寻址方案,能够在针对循环神经网络的硬件加速器中有效展开寻址处理,契合循环神经网络的计算特点。其中,上述寻址方案具体包括:
从操作指令中提取出操作数的地址编码以及控制码;根据所述地址编码中的寻址字段,确定所述操作数的地址信息;其中,所述地址信息包括所述操作数的读取地址信息或写入地址信息;根据所述地址信息完成对当前所述操作数的相关寻址操作,然后根据所述控制码并通过预先在地址寄存器上配置的运算器,基于所述运算器提供的运算类型进行相应的地址更新。
本实施例中,针对循环神经网络的硬件加速器在实际运行时会涉及到不同类型的操作指令,用于满足不同类型的计算需求。其中,操作指令在执行过程中会涉及到寻址过程,与操作指令对应的寻址模式具体可以是存储器间接寻址、寄存器间接寻址或直接寻址。为了实现寻址,本实施例需要先从操作指令中提取出操作数的地址编码和操作数的控制码。其中,可以理解的是,上述操作数包括源操作数和目标操作数,上述源操作数指令具体是指执行相应操作时所请求及输入的数据,相应的,目标操作数则是指在指令完成相应操作时所生成及输出的数据。在实际应用过程中,一条操作指令对应的操作数至少包括上述两种类型操作数中的一种,通常是同时包含上述两种类型的操作数。另外,上述操作数的控制码,通过该控制码能够决定操作数的寻址控制过程。
本实施例中,上述地址编码中包含用于表征操作数地址信息的寻址字段,根据上述寻址字段能够确定出操作数的地址信息,其中包括操作数的读取地址信息或写入地址信息。
可以理解的是,在获取到上述操作数的地址信息之后,便可基于该地址信息完成针对当前操作数的相关寻址处理,然后根据上述操作数的控制码并通过预先在地址寄存器上配置的运算器实现对地址的更新。本申请实施例的寻址过程中的地址更新方案,能够在寻址过程中不占用硬件加速模块中的MAC计算资源,而是通过预先设置在地址寄存器上配置的运算器来解决运算资源短缺和运算资源冲突问题,并且能够有效减少指令的存储,提升寻址效率。
进一步的,本申请实施例还公开了一种系统级芯片,包括前述实施例公开的用于运行循环神经网络指令集的硬件加速器。其中,关于该硬件加速器的具体构造以及工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存循环神经网络指令集,所述循环神经网络指令集被硬件加速器执行时完成前述实施例公开的数据处理方法。其中,关于该数据处理方法的具体过程可以参考实施例中公开的相应内容,在此不再进行赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种硬件加速器、数据处理方法、系统级芯片及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种用于运行循环神经网络指令集的硬件加速器,其特征在于,所述硬件加速器用于处理所述指令集,所述指令集包括:
数据流控制指令,用于执行数据流控制,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;
常规类型计算指令,用于执行常规类型计算,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;
专用类型计算指令,用于执行专用类型计算,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;
指数移位指令,用于执行指数移位,以完成所述循环神经网络计算中的数据归一化;
数据转移指令,用于执行数据转移,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
2.根据权利要求1所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述硬件加速器内设置的存储器包括:
输入向量存储器,用于存储待计算的输入向量;
权重向量存储器,用于存储所述循环神经网络的权重向量;
偏置参数存储器,用于存储所述循环神经网络的偏置参数;
中间数据通用存储器,用于存储所述循环神经网络运行过程中产生的中间数据;
输出结果存储器,用于存储所述循环神经网络的输出结果。
3.根据权利要求2所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述数据流控制指令,包括:
第一子指令,用于执行输入控制,以通过所述输入向量存储器的状态控制所述循环神经网络中的计算流水线的输入;
第二子指令,用于执行输出控制,以通过所述输出结果存储器的状态控制所述循环神经网络中的计算流水线的输出;
第三子指令,用于执行运行控制,以控制所述循环神经网络中的计算流水线的运行。
4.根据权利要求1所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述常规类型计算指令,包括:
第一参数提取单元,用于从所述常规类型计算指令中提取出向量操作数地址、偏置参数地址、激活操作控制码和后处理操作控制码;
第一数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述权重向量和所述数据向量,以及读取出与所述偏置参数地址对应的所述偏置参数;
第一计算单元,用于计算所述权重向量和所述数据向量的点乘结果,并将所述点乘结果与所述偏置参数相加,得到相应的向量计算结果;
第二计算单元,用于在所述激活控制码的控制下,完成所述常规类型计算过程中的与所述向量计算结果对应的激活函数,得到相应的激活函数运算结果;
第三计算单元,用于在所述后处理操作控制码的控制下,完成所述常规类型计算过程中的与所述激活函数运算结果对应的后处理操作。
5.根据权利要求1所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述专用类型计算指令,包括:
第二参数提取单元,用于从所述专用类型计算指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
第二数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的所述输入门、所述状态门、所述遗忘门和所述前一状态数据;
第四计算单元,用于创建与所述输入门和所述遗忘门对应的第一向量以及创建与所述状态门和所述前一状态数据对应的第二向量,然后计算所述第一向量和所述第二向量的点乘结果;
第五计算单元,用于在所述激活操作控制码的控制下,完成所述专用类型计算过程中的与所述点乘结果对应的激活函数,得到相应的激活函数运算结果;
第六计算单元,用于在所述后处理操作控制码的控制下,完成所述专用类型计算过程中的与所述激活函数运算结果对应的后处理操作。
6.根据权利要求1所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述指数移位指令,包括:
第三参数提取单元,用于从所述指数移位指令中提取出向量操作数地址、激活操作控制码和后处理操作控制码;
第三数据读取单元,用于从相关的寄存器或存储器中读取出与所述向量操作数地址对应的第一向量和第二向量;
第七计算单元,用于对所述第一向量和所述第二向量进行乘积累加运算,得到相应的乘积累加运算结果;
第八计算单元,用于在所述激活操作控制码的控制下,完成所述移位操作过程中的与所述乘积累加运算结果对应的激活函数,得到相应的激活函数运算结果;
第九计算单元,用于在所述后处理操作控制码的控制下,完成所述移位操作过程中的与所述激活函数运算结果对应的后处理操作。
7.根据权利要求1所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述数据转移指令,包括:
MOV指令,用于执行第一数据转移操作,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作;
LDR指令,用于执行第二数据转移操作,以从存储器中读取数据并将读取到的数据转移至寄存器;
SRT指令,用于执行第三数据转移操作,以从寄存器中读取数据并将读取到的数据转移至存储器。
8.根据权利要求1所述的用于运行循环神经网络指令集的硬件加速器,其特征在于,所述硬件加速器内设置的寄存器包括:
向量寄存器,用于存储向量变量;
地址寄存器,用于完成地址的寻址和计算处理;
普通寄存器,用于存储指令计算结果;
部件寄存器,用于为半精度浮点运算过程、激活函数计算过程和后处理过程提供服务以减少流水线等待时间;
循环寄存器,用于为循环指令和跳转指令提供服务。
9.一种基于循环神经网络指令集的数据处理方法,其特征在于,包括:
通过执行数据流控制指令,以控制循环神经网络计算流水线的输入端的数据和输出端的数据;
通过执行常规类型计算指令,以完成所述循环神经网络中的常规类型计算;其中,所述常规类型计算的表达式为θ(w*x+b),θ表示sigmoid激活函数或tanh激活函数,w表示权重向量,x表示数据向量,b表示偏置参数;
通过执行专用类型计算指令,以完成所述循环神经网络中的专用类型计算;其中,所述专用类型计算的表达式为及其延伸运算,it表示输入门,/>表示状态门,ft表示遗忘门,ct-1表示前一状态数据,⊙表示哈达玛乘积;
通过执行指数移位指令,以完成所述循环神经网络计算中的数据归一化;
通过执行数据转移指令,以完成所述循环神经网络计算时不同寄存器之间的数据转移操作以及寄存器与存储器之间的数据转移操作。
10.一种系统级芯片,其特征在于,包括如权利要求1至8任一项所述的用于运行循环神经网络指令集的硬件加速器。
11.一种计算机可读存储介质,其特征在于,用于保存循环神经网络指令集,所述循环神经网络指令集被硬件加速器执行时完成如权利要求9所述的数据处理方法。
CN202011641233.1A 2020-12-31 2020-12-31 一种硬件加速器、数据处理方法、系统级芯片及介质 Active CN112784970B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202011641233.1A CN112784970B (zh) 2020-12-31 2020-12-31 一种硬件加速器、数据处理方法、系统级芯片及介质
PCT/CN2021/118470 WO2022142479A1 (zh) 2020-12-31 2021-09-15 一种硬件加速器、数据处理方法、系统级芯片及介质
US18/201,755 US20230297375A1 (en) 2020-12-31 2023-05-24 Hardware accelerator, data processing method, system-level chip, and medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011641233.1A CN112784970B (zh) 2020-12-31 2020-12-31 一种硬件加速器、数据处理方法、系统级芯片及介质

Publications (2)

Publication Number Publication Date
CN112784970A CN112784970A (zh) 2021-05-11
CN112784970B true CN112784970B (zh) 2023-08-15

Family

ID=75753502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011641233.1A Active CN112784970B (zh) 2020-12-31 2020-12-31 一种硬件加速器、数据处理方法、系统级芯片及介质

Country Status (3)

Country Link
US (1) US20230297375A1 (zh)
CN (1) CN112784970B (zh)
WO (1) WO2022142479A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112784970B (zh) * 2020-12-31 2023-08-15 深圳大普微电子科技有限公司 一种硬件加速器、数据处理方法、系统级芯片及介质
CN115860049B (zh) * 2023-03-02 2023-05-05 瀚博半导体(上海)有限公司 一种数据调度方法和设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107341542A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 用于执行循环神经网络和lstm运算的装置和方法
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN110428047A (zh) * 2018-05-01 2019-11-08 半导体组件工业公司 神经网络系统以及用于实施神经网络的加速器
CN110516789A (zh) * 2019-08-09 2019-11-29 苏州浪潮智能科技有限公司 卷积网络加速器中指令集的处理方法、装置及相关设备
CN111931918A (zh) * 2020-09-24 2020-11-13 深圳佑驾创新科技有限公司 神经网络加速器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263011B2 (en) * 2018-11-28 2022-03-01 International Business Machines Corporation Compound instruction set architecture for a neural inference chip
CN112784970B (zh) * 2020-12-31 2023-08-15 深圳大普微电子科技有限公司 一种硬件加速器、数据处理方法、系统级芯片及介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107341542A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 用于执行循环神经网络和lstm运算的装置和方法
CN110428047A (zh) * 2018-05-01 2019-11-08 半导体组件工业公司 神经网络系统以及用于实施神经网络的加速器
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN110516789A (zh) * 2019-08-09 2019-11-29 苏州浪潮智能科技有限公司 卷积网络加速器中指令集的处理方法、装置及相关设备
CN111931918A (zh) * 2020-09-24 2020-11-13 深圳佑驾创新科技有限公司 神经网络加速器

Also Published As

Publication number Publication date
US20230297375A1 (en) 2023-09-21
WO2022142479A1 (zh) 2022-07-07
CN112784970A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN107608715B (zh) 用于执行人工神经网络正向运算的装置及方法
CN109522254B (zh) 运算装置及方法
US10515049B1 (en) Memory circuits and methods for distributed memory hazard detection and error recovery
US20200097799A1 (en) Heterogeneous multiplier
US10534613B2 (en) Supporting learned branch predictors
US20210216318A1 (en) Vector Processor Architectures
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
CN112784970B (zh) 一种硬件加速器、数据处理方法、系统级芯片及介质
US20180349144A1 (en) Method and apparatus for branch prediction utilizing primary and secondary branch predictors
TWI737652B (zh) 併合乘-加(fma)低功能性單元
US10754655B2 (en) Automatic predication of hard-to-predict convergent branches
CN109739556B (zh) 一种基于多并行缓存交互及计算的通用深度学习处理器
CN112148251A (zh) 跳过无意义的矩阵运算的系统和方法
JP2014182817A (ja) 条件付きショート前方分岐の計算的に等価な述語付き命令への変換
Li et al. Design and implementation of CNN custom processor based on RISC-V architecture
CN103365628A (zh) 用于执行预解码时优化的指令的方法和系统
US10303735B2 (en) Systems, apparatuses, and methods for K nearest neighbor search
US11645078B2 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
KR20210028075A (ko) 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템
CN112699058B (zh) 适用于循环神经网络的寻址方法、装置、加速器以及介质
US9626334B2 (en) Systems, apparatuses, and methods for K nearest neighbor search
US20140189330A1 (en) Optional branches
US11551087B2 (en) Information processor, information processing method, and storage medium
CN113918218A (zh) 学习和卸载存储器访问和计算的常见模式的技术
CN111752533A (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
GR01 Patent grant
GR01 Patent grant