CN111126583A - 一种通用神经网络加速器 - Google Patents
一种通用神经网络加速器 Download PDFInfo
- Publication number
- CN111126583A CN111126583A CN201911339715.9A CN201911339715A CN111126583A CN 111126583 A CN111126583 A CN 111126583A CN 201911339715 A CN201911339715 A CN 201911339715A CN 111126583 A CN111126583 A CN 111126583A
- Authority
- CN
- China
- Prior art keywords
- neural network
- network accelerator
- instruction
- vector
- main processor
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种通用神经网络加速器,属于片上系统技术领域。所述通用神经网络加速器,面向片上系统,所述片上系统包括主处理器,所述通用神经网络加速器被集成到SoC中,以协处理器的形式通过协处理器接口与所述主处理器耦合,实现基于所述主处理器扩展指令设计的自定义指令集;所述通用神经网络加速器和所述主处理器共享一级缓存L1 DCache。加速器设计完成后,用户可以在指令层面调度神经网络算法,并且针对不同的神经网络算法设定不同的向量参数,能够适应不断发展的新型神经网络算法和变化多样的应用场景。
Description
技术领域
本发明是一种面向片上系统的通用神经网络加速器,涉及片上系统技术领域,特别涉及加速器设计领域。
背景技术
在大数据分析和大规模高速计算平台的支撑下,神经网络技术得到了可足的发展。一方面,神经网络算法不断改进,继CNN(Convolutional Neural Networks,卷积神经网络)之后,诸如RNN(Recurrent Neural Network,循环神经网络)、GAN(GenerativeAdversarial Networks,生成式对抗网络)等新型网络模型层出不穷;另一方面,由于神经网络算法在图像识别、语音分析和自然语言处理等领域表现突出,被广泛地应用到嵌入式系统中。嵌入式系统是一个专用的片上系统,它对系统的性能和功耗有着严格的要求。因此,在片上系统中集成神经网络加速器成为一个研究热点。
随着各类神经网络算法的提出,各式各样的神经网络加速器应运而生。但是,这些神经网络加速器往往是针对特定网络模型而设计的,不具有通用型,灵活性差。“寒武纪”芯片提出了基于领域专用指令集架构的神经网络加速器设计方法,从指令层面加速算法的执行,灵活度高。但是,在片上系统中,CPU负责任务的分配和调度。“寒武纪”实现了单独的基于专用指令集的神经网络处理器,加速器完全独立于CPU。CPU无法对神经网络任务在指令级别调度。并且,单独的神经网络处理器需要增加额外的译码单元和编译器,增加了硬件资源的消耗,也不适合轻量级的设计。
现存的CPU指令集不断完善,一些通用处理器指令集陆陆续续地支持扩展指令,用户根据扩展指令可以自定义指令。因此,在片上系统中实现基于CPU扩展指令的神经网络加速指令成为一种设计片上神经网络加速器的方法。
发明内容
本发明的目的在于提供一种通用神经网络加速器,以解决现有的片上系统无法适应自定义指令集的问题。
为解决上述技术问题,本发明提供一种通用神经网络加速器,面向片上系统,所述片上系统包括主处理器,所述通用神经网络加速器被集成到SoC中,以协处理器的形式通过协处理器接口与所述主处理器耦合,实现基于所述主处理器扩展指令设计的自定义指令集;所述通用神经网络加速器和所述主处理器共享一级缓存L1 DCache。
所述通用神经网络加速器包括输入数据通路、输出数据通路、算术逻辑单元、地址生成器和译码控制单元;
所述地址生成器产生每次获取源向量的地址vctxAddr和vctyAddr,以及将结果写回内存的地址rsltAddr;在译码控制单元的作用下,输入数据通路通过MEM响应接口从一级缓存L1 DCache中交替读取两个源向量,每次读取64位数,并分别存储在vctx寄存器和vcty寄存器;算术逻辑单元接收到译码控制单元的使能信号后执行计算;计算完成后,将计算结果存储到输出数据通路的寄存器中,其中vsum寄存器存储向量点积结果,sumVect存储向量加结果,译码控制单元根据指令的功能码,在输出端选择输出计算结果。
可选的,所述协处理器接口包括四个通道:
控制通道,用于所述通用神经网络加速器与所述主处理器之间传递状态信息;
请求通道,用于所述主处理器为所述通用神经网络加速器传递指令信息;
存储器请求通道,用于所述通用神经网络加速器向所述主处理器中的存储器发起读写请求;
存储器响应通道,用于所述主处理器向所述通用神经网络加速器返回数据读出结果。
可选的,所述算术逻辑单元包括加法器阵列、乘法器阵列和加法器;译码控制单元输出vaen信号使能加法器阵列执行向量加计算;译码控制单元输出mulen信号使能乘法器阵列执行向量点积计算,将两向量对应元素相乘,当译码控制单元输出adden信号时,加法器将对应元素乘积相加,得到最终的点积计算结果。
可选的,所述译码控制单元由一个有限状态机电路实现,包括空闲、取指、译码、访存、执行和写回6个状态;
片上系统复位后,所述通用神经网络加速器处于空闲状态,准备接收自定义指令集,直到主处理器解析到定制指令,通用神经网络加速器进入取指状态,通过请求通道从主处理器获取指令信息;通用神经网络加速器解析指令的功能码来确定要执行的操作;通用神经网络加速器通过存储器请求通道向一级缓存L1 DCache发送向量地址,通过存储器响应通道从一级缓存L1 DCache中获取操作数;再执行指令指定的操作,执行完一次向量计算操作之后,根据指令内的向量长度信息判断计算是否完成,如果完成,通用神经网络加速器进入下一个状态,将执行结果写回指令指定的目的操作数地址;否则,根据地址生成器产生的新的地址,再次从L1 DCache中获取源向量,继续执行向量计算,直到执行完向量计算,将执行结果通过存储器请求通道写回L1 DCache,并且产生一个中断信号Interrupt告知主处理器;通用神经网络加速器回到空闲状态,并且将Busy信号拉低,等待下一次被调度。
可选的,所述自定义指令集包括向量加指令和向量点积指令,能够实现向量加运算和向量点积。
在本发明中提供了一种通用神经网络加速器,面向片上系统,所述片上系统包括主处理器,所述通用神经网络加速器被集成到SoC中,以协处理器的形式通过协处理器接口与所述主处理器耦合,实现基于所述主处理器扩展指令设计的自定义指令集;所述通用神经网络加速器和所述主处理器共享一级缓存L1 DCache。加速器设计完成后,用户可以在指令层面调度神经网络算法,并且针对不同的神经网络算法设定不同的向量参数,能够适应不断发展的新型神经网络算法和变化多样的应用场景。
附图说明
图1是包括本发明提供的通用神经网络加速器的片上系统框架图示意图;
图2是本发明提供的通用神经网络加速器内部逻辑示意图;
图3是有限状态机状态转移图。
具体实施方式
以下结合附图和具体实施例对本发明提出的一种通用神经网络加速器作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
实施例一
本发明提供了一种通用神经网络加速器,面向片上系统,所述片上系统包括主处理器,如图1所示,所述通用神经网络加速器被集成到SoC中,以协处理器的形式通过协处理器接口与所述主处理器(即CPU)耦合,实现基于所述主处理器扩展指令设计的自定义指令集;所述通用神经网络加速器和所述主处理器共享一级缓存L1 DCache。所述自定义指令集包括向量加指令和向量点积指令,能够实现向量加运算和向量点积。
请继续参阅图1,所述协处理器接口包括控制通道(Control Channel)、请求通道(Request Channel)、存储器请求通道(Request Channel)和存储器响应通道(MEMResponse Channel)这四个通道,所述控制通道用于所述通用神经网络加速器与所述主处理器之间传递状态信息;所述请求通道用于所述主处理器为所述通用神经网络加速器传递指令信息;所述存储器请求通道用于所述通用神经网络加速器向所述主处理器中的存储器发起读写请求;所述存储器响应通道用于所述主处理器向所述通用神经网络加速器返回数据读出结果。
如图2所示,所述通用神经网络加速器包括输入数据通路、输出数据通路、算术逻辑单元、地址生成器和译码控制单元;所述地址生成器产生每次获取源向量的地址vctxAddr和vctyAddr,以及将结果写回内存的地址rsltAddr;在译码控制单元的作用下,输入数据通路通过MEM响应接口从一级缓存L1 DCache中交替读取两个源向量,每次读取64位数,并分别存储在vctx寄存器和vcty寄存器;算术逻辑单元接收到译码控制单元的使能信号后执行计算;计算完成后,将计算结果存储到输出数据通路的寄存器中,其中vsum寄存器存储向量点积结果,sumVect存储向量加结果,译码控制单元根据指令的功能码,在输出端选择输出计算结果。所述算术逻辑单元包括加法器阵列、乘法器阵列和加法器;译码控制单元输出vaen信号使能加法器阵列执行向量加计算;译码控制单元输出mulen信号使能乘法器阵列执行向量点积计算,将两向量对应元素相乘,当译码控制单元输出adden信号时,加法器将对应元素乘积相加,得到最终的点积计算结果。
所述译码控制单元由一个有限状态机电路实现,包括空闲、取指、译码、访存、执行和写回6个状态;片上系统复位后,所述通用神经网络加速器处于空闲状态,准备接收自定义指令集,直到主处理器解析到定制指令,通用神经网络加速器进入取指状态,通过请求通道从主处理器获取指令信息;通用神经网络加速器解析指令的功能码来确定要执行的操作;通用神经网络加速器通过存储器请求通道向一级缓存L1 DCache发送向量地址,通过存储器响应通道从一级缓存L1 DCache中获取操作数;再执行指令指定的操作,执行完一次向量计算操作之后,根据指令内的向量长度信息判断计算是否完成,如果完成,通用神经网络加速器进入下一个状态,将执行结果写回指令指定的目的操作数地址;否则,根据地址生成器产生的新的地址,再次从L1 DCache中获取源向量,继续执行向量计算,直到执行完向量计算,将执行结果通过存储器请求通道写回L1 DCache,并且产生一个中断信号Interrupt告知主处理器;通用神经网络加速器回到空闲状态,并且将Busy信号拉低,等待下一次被调度。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (6)
1.一种通用神经网络加速器,面向片上系统,所述片上系统包括主处理器,其特征在于,所述通用神经网络加速器被集成到SoC中,以协处理器的形式通过协处理器接口与所述主处理器耦合,实现基于所述主处理器扩展指令设计的自定义指令集;所述通用神经网络加速器和所述主处理器共享一级缓存L1 DCache。
2.如权利要求1所述的通用神经网络加速器,其特征在于,所述通用神经网络加速器包括输入数据通路、输出数据通路、算术逻辑单元、地址生成器和译码控制单元;
所述地址生成器产生每次获取源向量的地址vctxAddr和vctyAddr,以及将结果写回内存的地址rsltAddr;在译码控制单元的作用下,输入数据通路通过MEM响应接口从一级缓存L1 DCache中交替读取两个源向量,每次读取64位数,并分别存储在vctx寄存器和vcty寄存器;算术逻辑单元接收到译码控制单元的使能信号后执行计算;计算完成后,将计算结果存储到输出数据通路的寄存器中,其中vsum寄存器存储向量点积结果,sumVect存储向量加结果,译码控制单元根据指令的功能码,在输出端选择输出计算结果。
3.如权利要求2所述的通用神经网络加速器,其特征在于,所述协处理器接口包括四个通道:
控制通道,用于所述通用神经网络加速器与所述主处理器之间传递状态信息;
请求通道,用于所述主处理器为所述通用神经网络加速器传递指令信息;
存储器请求通道,用于所述通用神经网络加速器向所述主处理器中的存储器发起读写请求;
存储器响应通道,用于所述主处理器向所述通用神经网络加速器返回数据读出结果。
4.如权利要求2所述的通用神经网络加速器,其特征在于,所述算术逻辑单元包括加法器阵列、乘法器阵列和加法器;译码控制单元输出vaen信号使能加法器阵列执行向量加计算;译码控制单元输出mulen信号使能乘法器阵列执行向量点积计算,将两向量对应元素相乘,当译码控制单元输出adden信号时,加法器将对应元素乘积相加,得到最终的点积计算结果。
5.如权利要求3所述的通用神经网络加速器,其特征在于,所述译码控制单元由一个有限状态机电路实现,包括空闲、取指、译码、访存、执行和写回6个状态;
片上系统复位后,所述通用神经网络加速器处于空闲状态,准备接收自定义指令集,直到主处理器解析到定制指令,通用神经网络加速器进入取指状态,通过请求通道从主处理器获取指令信息;通用神经网络加速器解析指令的功能码来确定要执行的操作;通用神经网络加速器通过存储器请求通道向一级缓存L1 DCache发送向量地址,通过存储器响应通道从一级缓存L1 DCache中获取操作数;再执行指令指定的操作,执行完一次向量计算操作之后,根据指令内的向量长度信息判断计算是否完成,如果完成,通用神经网络加速器进入下一个状态,将执行结果写回指令指定的目的操作数地址;否则,根据地址生成器产生的新的地址,再次从L1 DCache中获取源向量,继续执行向量计算,直到执行完向量计算,将执行结果通过存储器请求通道写回L1 DCache,并且产生一个中断信号Interrupt告知主处理器;通用神经网络加速器回到空闲状态,并且将Busy信号拉低,等待下一次被调度。
6.如权利要求1所述的通用神经网络加速器,其特征在于,所述自定义指令集包括向量加指令和向量点积指令,能够实现向量加运算和向量点积。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911339715.9A CN111126583B (zh) | 2019-12-23 | 2019-12-23 | 一种通用神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911339715.9A CN111126583B (zh) | 2019-12-23 | 2019-12-23 | 一种通用神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111126583A true CN111126583A (zh) | 2020-05-08 |
CN111126583B CN111126583B (zh) | 2022-09-06 |
Family
ID=70501271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911339715.9A Active CN111126583B (zh) | 2019-12-23 | 2019-12-23 | 一种通用神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111126583B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913812A (zh) * | 2020-07-03 | 2020-11-10 | 中用科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN112699058A (zh) * | 2020-12-31 | 2021-04-23 | 深圳大普微电子科技有限公司 | 适用于循环神经网络的寻址方法、装置、加速器以及介质 |
CN114138342A (zh) * | 2022-01-25 | 2022-03-04 | 北京大学 | Rocc协处理器接口模型及其自动生成工具和实现方法 |
EP3971712A1 (en) * | 2020-09-22 | 2022-03-23 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Voice processing system and method, electronic device and readable storage medium |
WO2022263997A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235749A (zh) * | 2013-03-26 | 2013-08-07 | 江南大学 | 一种基于FPGA的传感器网络SoC原型验证平台 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN109857460A (zh) * | 2019-02-20 | 2019-06-07 | 南京华捷艾米软件科技有限公司 | 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及系统 |
-
2019
- 2019-12-23 CN CN201911339715.9A patent/CN111126583B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235749A (zh) * | 2013-03-26 | 2013-08-07 | 江南大学 | 一种基于FPGA的传感器网络SoC原型验证平台 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN109857460A (zh) * | 2019-02-20 | 2019-06-07 | 南京华捷艾米软件科技有限公司 | 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913812A (zh) * | 2020-07-03 | 2020-11-10 | 中用科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN111913812B (zh) * | 2020-07-03 | 2023-06-27 | 中用科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
EP3971712A1 (en) * | 2020-09-22 | 2022-03-23 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Voice processing system and method, electronic device and readable storage medium |
CN112699058A (zh) * | 2020-12-31 | 2021-04-23 | 深圳大普微电子科技有限公司 | 适用于循环神经网络的寻址方法、装置、加速器以及介质 |
CN112699058B (zh) * | 2020-12-31 | 2023-12-29 | 深圳大普微电子科技有限公司 | 适用于循环神经网络的寻址方法、装置、加速器以及介质 |
WO2022263997A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
US11693692B2 (en) | 2021-06-17 | 2023-07-04 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
TWI815407B (zh) * | 2021-06-17 | 2023-09-11 | 美商萬國商業機器公司 | 用於促進一計算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 |
GB2622349A (en) * | 2021-06-17 | 2024-03-13 | Ibm | Program event recording storage alteration processing for a neural network accelerator instruction |
CN114138342A (zh) * | 2022-01-25 | 2022-03-04 | 北京大学 | Rocc协处理器接口模型及其自动生成工具和实现方法 |
CN114138342B (zh) * | 2022-01-25 | 2022-04-26 | 北京大学 | Rocc协处理器接口模型及其自动生成工具和实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111126583B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111126583B (zh) | 一种通用神经网络加速器 | |
Jo et al. | DSIP: A scalable inference accelerator for convolutional neural networks | |
US20190171941A1 (en) | Electronic device, accelerator, and accelerating method applicable to convolutional neural network computation | |
CN110689138A (zh) | 运算方法、装置及相关产品 | |
US11403104B2 (en) | Neural network processor, chip and electronic device | |
CN111047036B (zh) | 神经网络处理器、芯片和电子设备 | |
US20030177288A1 (en) | Multiprocessor system | |
KR102616212B1 (ko) | 다수의 컴퓨팅 코어들상의 데이터 드라이브 스케줄러 | |
Voitsechov et al. | Inter-thread communication in multithreaded, reconfigurable coarse-grain arrays | |
CN111091181B (zh) | 卷积处理单元、神经网络处理器、电子设备及卷积运算方法 | |
WO2021115149A1 (zh) | 神经网络处理器、芯片和电子设备 | |
Lee | Real-time edge computing on multi-processes and multi-threading architectures for deep learning applications | |
CN116710891A (zh) | 子图的编译、执行方法及相关设备 | |
US20220237439A1 (en) | Branching operation for neural processor circuit | |
CN102446086A (zh) | 一种可参量化专用指令集处理器设计平台 | |
Chen et al. | Flexible heterogeneous multicore architectures for versatile media processing via customized long instruction words | |
Rettkowski et al. | Application-specific processing using high-level synthesis for networks-on-chip | |
CN114020476B (zh) | 一种作业的处理方法、设备及介质 | |
Komori et al. | A 40-MFLOPS 32-bit floating-point processor with elastic pipeline scheme | |
WO2023123453A1 (zh) | 运算加速的处理方法、运算加速器的使用方法及运算加速器 | |
Zhu et al. | A multi-mode visual recognition hardware accelerator for AR/MR glasses | |
WO2023123395A1 (zh) | 一种计算任务处理装置、方法及电子设备 | |
CN113469328B (zh) | 执行转数穿过的装置、板卡、方法及可读存储介质 | |
KR20050085358A (ko) | 카테시안 제어기를 갖는 데이터 처리 시스템 | |
CN115437689A (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 |