CN102360344A - 矩阵处理器及其指令集和嵌入式*** - Google Patents
矩阵处理器及其指令集和嵌入式*** Download PDFInfo
- Publication number
- CN102360344A CN102360344A CN2011103039194A CN201110303919A CN102360344A CN 102360344 A CN102360344 A CN 102360344A CN 2011103039194 A CN2011103039194 A CN 2011103039194A CN 201110303919 A CN201110303919 A CN 201110303919A CN 102360344 A CN102360344 A CN 102360344A
- Authority
- CN
- China
- Prior art keywords
- matrix
- instruction
- matrix processor
- floating
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明提出一种矩阵处理器及其指令集和嵌入式***,该矩阵处理器包括外部数据接口、IRAM、DRAM、矩阵处理器核心;所述外部数据接口,连接矩阵处理器的IRAM、DRAM与外部存储器,完成矩阵处理器指令的写入和与外部进行数据交换;所述IRAM和DRAM,相当于矩阵处理器的缓存;IRAM接收外部模块写入的指令序列;DRAM接收外部模块写入的矩阵或其他数据、接收矩阵处理器核心写入的计算结果,供矩阵处理器使用或外部模块读出,完成矩阵处理器与外部模块的数据交换;所述矩阵处理器核心,用于取指、译码、运算、结果写回和控制。本发明矩阵处理器能够独立完成各种矩阵运算和其他数学运算。
Description
【技术领域】
本发明涉及处理器技术领域,特别涉及一种矩阵处理器及其指令集和嵌入式***。
【背景技术】
矩阵运算是科学与工程计算中的基本问题。它不仅是数学学科,也是许多理工学科的重要数学工具。矩阵运算在物理、力学、计算机科学、航空航天等众多学科中是不可替代的数学工具。特别的,在计算机科学技术中,很多领域都要使用到矩阵运算,比如数字图像处理、计算机图形学、模式识别、机器视觉、人工智能、科学计算以及一般的算法设计和分析等。
传统矩阵运算多用处理器串行计算来实现,严重制约计算速度的提高。采用硬件实现矩阵运算可以提高计算速度,但是已有矩阵运算的硬件实现多是为某一具体矩阵运算,例如矩阵求逆、矩阵乘法等设计的专用硬件结构,其硬件资源需求大、灵活性差。特别的,当前的各种涉及矩阵运算的完整算法都包含多种矩阵运算以及其他非矩阵运算,这时,将特定矩阵运算的硬件电路加入计算***时,需要很长的与***其它部分的交互和等待时间,这样,加入专用矩阵运算的硬件模块所提高的效率就非常有限了。
所以,一种能够独立完成完整算法的矩阵运算单元是有非常大需求的。
【发明内容】
本发明的目的在于提供一种矩阵处理器及其嵌入式***,其能够独立完成各种矩阵运算和其他数学运算。
为了解决上述问题,本发明采用如下技术方案:
一种矩阵处理器,包括外部数据接口、IRAM、DRAM、矩阵处理器核心;
所述外部数据接口,连接矩阵处理器的IRAM、DRAM与外部存储器,完成矩阵处理器指令的写入和与外部进行数据交换;
所述IRAM和DRAM,相当于矩阵处理器的缓存;IRAM接收外部模块写入的指令序列;DRAM接收外部模块写入的矩阵或其他数据、接收矩阵处理器核心写入的计算结果,供矩阵处理器使用或外部模块读出,完成矩阵处理器与外部模块的数据交换;
所述矩阵处理器核心,用于取指、译码、运算、结果写回和控制。
本发明进一步的改进在于:所述外部数据接口、IRAM、DRAM、矩阵处理器核心共同连接一个寄存器组,所述寄存器组存放外部数据接口、IRAM、DRAM、矩阵处理器核心的***信息和交互信息。
本发明进一步的改进在于:所述外部数据接口、IRAM、DRAM、矩阵处理器核心共同连接一个中断产生器,外部数据接口、IRAM、DRAM、矩阵处理器核心的中断请求通过寄存器组和中断产生器输出给外部控制模块(外部CPU)。
本发明进一步的改进在于:所述矩阵处理器核心包括取指单元、第一译码单元、第二译码单元、读写数据单元、通用寄存器组、浮点运算单元和控制单元;IRAM、取指单元、第一译码单元、第二译码单元、浮点运算单元依次连接;浮点运算单元、通用寄存器组、读写数据单元、DRAM依次连接;第一译码单元连接所述读写数据单元。
本发明进一步的改进在于:取指单元接收控制单元发送的取指令使能信号,从IRAM中开始循环读取指令,发送指令给第一译码单元,并完成跳转指令;第一译码单元接收来自取指单元发送的指令,根据指令的类别进行译码,将矩阵运算和数学函数运算指令转换成SIMD或浮点操作指令写入第二译码单元,将L/S和移动指令送入读写数据单元;读写数据单元接收第一译码单元发送的数据地址和使能信号,完成从DRAM中读取数据写入通用寄存器组,将通用寄存器组中的数据写入DRAM;通用寄存器组的寄存器间的数据转移;第二译码单元接收第一译码单元发送的SIMD和浮点运算指令,将指令解码为浮点操作指令,送给浮点运算单元;浮点运算单元包括四个并联的第一浮点运算模块和一个第二浮点运算模块,该四个并联的第一浮点运算模块串联到第二浮点运算模块;每个第一浮点运算模块的目的和源寄存器地址由第二译码单元控制;第一浮点运算模块完成扩展单精度浮点运算,第二浮点运算模块完成扩展单精度的4输入加法;控制单元控制矩阵处理器的运行,当计算完成或发生异常时发送中断信号给外部CPU。
本发明进一步的改进在于:所述矩阵处理器还包括一个特殊寄存器,所述特殊寄存器在矩阵处理器执行有实数参与的运算指令时,保存该实数。
本发明进一步的改进在于:该矩阵处理器使用的指令集包括:L/S和移动指令、跳转指令、浮点运算指令、数学函数指令、单指令多数据指令、矩阵运算指令;
所述L/S和移动指令,完成矩阵处理器缓存和寄存器、寄存器间的数据读取和写入;
所述跳转指令,完成指令执行顺序的改变;
所述浮点运算指令,完成基本浮点数运算,包括求绝对值、比较、加、减、乘、除、开方、乘加运算;
所述数学函数指令,完成初等数学函数的运算,包括三角函数、反三角函数、对数函数、指数函数;
所述SIMD指令,完成不同浮点数的并行运算,完成的运算和浮点运算指令中包括的运算相同;
所述矩阵运算指令,完成矩阵的一些基本的和简单的运算,包括矩阵生成、矩阵转置、矩阵的行列提取、按矩阵行列进行求和、矩阵与实数的加减乘除、矩阵的加减乘、矩阵的初等变换。
一种嵌入式***,包括CPU、总线、SDRAM、矩阵处理器、寄存器组和中断产生器;CPU、SDRAM、矩阵处理器的外部数据接口连接至总线;CPU通过两条数据线分别连接寄存器组和中断产生器,所述寄存器组连接中断产生器和矩阵处理器。
一种嵌入式***的工作方法,包括以下步骤:
1)***上电后,CPU复位,从Flash中读取运行boot指令,完成处理器的初始化;将配置参数写入寄存器组,对矩阵处理器进行配置;最后,从SDRAM中加载操作***,准备开始执行应用程序;
2)CPU将矩阵处理器的指令序列和计算所需数据在SDRAM中的起始和终止地址,写入寄存器组,并发出开始工作信号给寄存器组,然后释放总线;矩阵处理器接收到开始工作信号后,申请占用总线;
3)当矩阵处理器占用总线后,按照CPU写入寄存器组中的指令序列和数据的起始和终止地址从SDRAM中读取数据,分别写入IRAM和DRAM,然后释放总线;
4)指令序列和数据的写入完成后,矩阵处理器核心开始工作;取指单元依次从IRAM中读取指令,发送给第一译码单元;如果接收到第一译码单元输入的指令跳转指令,则完成相应的指令跳转;译第一译码单元将接收到的指令进行如下处理:L/S和移动指令发送给读写数据单元;跳转指令发送给取值单元;矩阵和数学函数指令解码为SIMD或浮点操作指令输出给第二译码单元;SIMD和浮点操作指令直通输出给第二译码单元;读写数据单元根据Load指令,读取DRAM中的数据,写入通用寄存器组;第二译码单元将第一译码单元发送的指令进行解码发送给浮点运算单元;浮点运算单元根据第二译码单元送入的浮点计算指令,从通用寄存器中读取相应浮点数据,完成相应浮点运算,运算结果写回通用寄存器组;读写数据单元根据Store指令,将矩阵处理器核心的通用寄存器组中的数据写回DRAM;
5)IRAM中的指令全部完成,矩阵处理器通过控制单元将相应的参数写入寄存器组,经过中断产生器产生相应的中断;CPU根据接收到的中断和所完成的整体任务确定矩阵处理器是否继续进行其他运算,若计算全部完成,控制矩阵处理器将DRAM中的计算结果写入SDRAM的指定地址区域。
指令集是处理器中用来计算和控制***的一套指令的集合。每一种处理器在设计时就规定了一系列与其硬件电路相配合的指令***。而指令集的先进与否,也关系到处理器的性能,它不仅是提高处理器效率的最有效工具,也是处理器性能体现的一个重要标志。
矩阵处理器因所完成功能的原因,其指令集不同于通用CPU,但在指令集设计的过程中,仍遵从精简指令集计算机(RISC)的设计理念。(1)指令种类少,格式规范,指令长度统一。(2)寻址方式简化。(3)大量利用寄存器间操作,只以特定的操作访问RAM。(4)简化处理器结构。(5)加强处理器的并行能力。
为实现一个可完成各种矩阵运算和其他数学运算的矩阵处理器指令集,矩阵处理器的指令集应具有六个部分:L/S和移动指令、跳转指令、浮点运算指令、数学函数指令、单指令多数据(SIMD)指令、矩阵运算指令。
(1)L(Load)/S(Store)和移动指令,完成矩阵处理器缓存和寄存器、寄存器间的数据读取和写入。
(2)跳转指令,完成指令执行顺序的改变。
(3)浮点运算指令,完成基本浮点数运算,包括求绝对值、比较、加、减、乘、除、开方、乘加等运算。
(4)数学函数指令,完成某些初等数学函数的运算,包括三角函数、反三角函数、对数函数、指数函数等。
(5)SIMD(单指令多数据)指令,完成不同浮点数的并行运算,完成的运算和浮点运算指令中包括的运算相同。
(6)矩阵运算指令,完成矩阵的一些基本的和简单的运算,包括矩阵生成、矩阵转置、矩阵的行列提取、按矩阵行列进行求和、矩阵与实数的加减乘除、矩阵的加减乘、矩阵的初等变换,通过组合这些不同的运算,使矩阵处理器能完成复杂算法。
本发明提出了一种根据矩阵处理器指令集设计矩阵处理器的方法和流程:首先根据实际需要确定矩阵处理器需要完成哪些指令、矩阵处理器的计算精度、工作模式、支持的最大矩阵、IRAM和DRAM的大小、运算单元的组成、通用寄存器的大小,根据上述条件设计完成指令集格式;然后设计完成矩阵处理器的结构及工作流程及异常处理方式等。
本发明根据上述指令集和矩阵处理器设计方法,根据具体使用环境,实现了一种完成扩展单精度的矩阵处理器及其工作机制:
需要实现的具体指令有:(1)L/S和移动指令,包括:LM、SM、LMR、SMR、MOV;(2)跳转指令,包括:JMP、JL、B、BL;(3)浮点运算指令,包括:FABV、FCMP、FCMPZ、FCPY、FNEG、FADD、FSUB、FMUL、FDIV、FSQRT、FNMUL、FMAC、FMSB、NOP;(4)数学函数指令,包括:FSINF、FCOSF、FTANF、FARCSINF、FARCCOSF、FARCTANF;(5)SIMD指令,包括:SABV、SCMP、SCMPEZ、SCPY、SNEG、SADD、SSUB、SMUL、SDIV、SSQRT、SNMUL、SMAC、SMSB、NOP;(6)矩阵运算指令,包括:MGNM、MGOM、MGIM、MTRN、MRE、MCE、MCPY、MMRA、MNCA、MRA、MCA、MARN、MSRN、MMRN、MDRN、MAM、MSM、MDMM、MDD、MMM、METRS、METRM、METRA、METCS、METCM、METCA。
计算精度:与外部进行数据交换时浮点数精度为符合IEEE754标准的单精度浮点数;内部计算时使用符合IEEE标准的单精度扩展浮点数,其中符号位1位,指数位8位,底数位39位。
两种工作模式:工作模式和调试模式。工作和调试模式主要通过总线接口改变。总线接口为主设备接口时为工作模式;总线接口为从设备接口时为调试模式。
支持最大为32×32的浮点数矩阵运算。
IRAM大小为32Kbits;DRAM为192Kbits(最多可存放4个32×32的矩阵)。
运算单元由4个并联的完成相同功能的浮点运算模块(FPU1)串联到另外1个浮点运算模块(FPU2)实现。其中,FPU1完成取绝对值、浮点数比较、复制、取相反数、加、减、乘、除、开方、乘积取负、乘加、乘减、空操作。FPU2完成4输入浮点加法。
通用寄存器组中每个寄存器为48bits,一共64个,可作为一个整体使用,也可分组使用,共分四组,每组16个,每组寄存器采用一写三读的寄存器文件方式。
相对于现有技术,本发明具有以下优点:本发明矩阵处理器能够独立完成各种矩阵运算和其他数学运算,通过组合这些不同的运算,矩阵处理器能完成多种复杂算法。该处理器完成浮点运算速度快,具有很强的灵活性,可以独立完成整体算法的运算。
【附图说明】
图1为矩阵处理器的基本设计图;
图2为矩阵处理器的浮点数据格式;
图3为矩阵处理器与总线的连接方式;
图4为浮点运算结构图;
图5为通用寄存器的结构;
图6为矩阵处理器指令集格式;
图7为矩阵处理器核心的结构图;
图8为矩阵处理器***的结构图。
【具体实施方式】
下面结合附图和具体实施方式对本发明做详细说明。
为了使矩阵处理器指令集能够进行矩阵计算,并且实现完整算法运算和控制,矩阵处理器的指令集应该具有六个部分:L/S和移动指令、跳转指令、浮点操作指令、数学函数指令、单指令多数据(SIMD)指令、矩阵运算指令。
根据实际需要,实现的具体指令有:(1)L/S和移动指令,包括:LM、SM、LMR、SMR、MOV;(2)跳转指令,包括:JMP、JL、B、BL;(3)浮点运算指令,包括:FABV、FCMP、FCMPZ、FCPY、FNEG、FADD、FSUB、FMUL、FDIV、FSQRT、FNMUL、FMAC、FMSB、NOP;(4)数学函数指令,包括:FSINF、FCOSF、FTANF、FARCSINF、FARCCOSF、FARCTANF;(5)SIMD指令,包括:SABV、SCMP、SCMPEZ、SCPY、SNEG、SADD、SSUB、SMUL、SDIV、SSQRT、SNMUL、SMAC、SMSB、NOP;(6)矩阵运算指令,包括:MGNM、MGOM、MGIM、MTRN、MRE、MCE、MCPY、MMRA、MNCA、MRA、MCA、MARN、MSRN、MMRN、MDRN、MAM、MSM、MDMM、MDD、MMM、METRS、METRM、METRA、METCS、METCM、METCA。
参照图1,为矩阵处理器的基本设计结构图。外部数据接口连接矩阵处理器的IRAM和DRAM,完成矩阵处理器指令的写入和与外部进行数据交换的功能,连接方式可以为:直接与CPU连接或连接到***总线。IRAM和DRAM相当于矩阵处理器的缓存,IRAM接收外部模块写入的指令序列;DRAM接收外部模块写入的矩阵或其他数据、接收矩阵处理器核心写入的计算结果,供矩阵处理器使用或外部模块读出,完成矩阵处理器与外部模块的数据交换。IRAM和DRAM的宽度和深度根据实际情况综合确定。矩阵处理器核心部分完成取指、译码、运算、写回和控制功能。
矩阵处理器计算数据的精度为:与外部进行数据交换时浮点数精度为符合IEEE754标准的单精度浮点数;内部计算时使用符合IEEE754标准的单精度扩展浮点数,其中符号位1位,指数位8位,底数为39位,如图2所示,其中,符号位(sign)表示浮点数的正负;指数(exponent)为一个二进制浮点数的指数;尾数(fraction)为二进制浮点数一部分。单精度扩展浮点数的值表示为:value=(-1)sign×1.f×2exp-bias(f为尾数,exp为指数,bias为指数的偏移量,在单精度下bias为127)。
工作模式:工作模式和调试模式。确定外部模块为嵌入式CPU,其与矩阵处理器通过总线连接,如图3所示。工作和调试模式通过改变总线接口实现。通过总线主设备接口连接矩阵处理器的RAM和总线时为工作模式,这时CPU通过向控制寄存器写入数据,控制矩阵处理器何时开始工作,然后矩阵处理器自行从存储器中读取所需数据进行运算,运算完成后发出中断通知CPU计算完成,CPU不能对矩阵处理器的IRAM和DRAM进行读写。通过总线从设备接口连接矩阵处理器的RAM和总线时为调试模式,这时CPU可以对矩阵处理器的IRAM和DRAM进行读写。
支持最大为32×32的浮点数矩阵运算。
IRAM大小为32Kbits(1024×32bits)。DRAM为192Kbits(4×32×32×48bits,最多可存放4个32×32的矩阵),矩阵数据以矩阵起始地址开始按行依次连续写入数据RAM。
浮点运算单元如图4所示,由4个并联的完成相同功能的浮点运算模块(FPU1)串联到另外1个浮点运算模块(FPU2)实现。其中,FPU1完成取绝对值、两浮点数比较、浮点数与0比较、复制、取相反数、加、减、乘、除、开方、乘积取负、乘加、乘减、空操作。FPU1的输入有两部分:译码单元输入的计算有效信号;通用寄存器组和特殊寄存器输入的操作数。其中,译码单元输入的计算有效信号包括取绝对值、两浮点数比较、浮点数与0比较、复制、取相反数、加、减、乘、除、开方、乘积取负、乘加、乘减、空操作和直接输出的有效信号。操作数包括通用寄存器组和特殊寄存器输入,通常情况下,通用寄存器组的3个读出端口(读出端口1、读出端口2、读出端口3)分别对应于FPU1的3个操作数输入端口(操作数输入端口1、操作数输入端口2、操作数输入端口3);当特殊寄存器输入有效信号有效时,操作数输入端口2的输入为特殊寄存器输出数据。FPU2完成4输入浮点加法。输出控制模块接收4个FPU1的输出和FPU2的输出,选择合适的运算结果输出。
图5所示为通用寄存器组的结构图。通用寄存器组中每个寄存器为48bits,一共64个,可作为一个整体使用,也可分组使用,共分四组,每组16个,每组寄存器采用1写3读的寄存器文件方式,每一组对应一个FPU1。通用寄存器组的地址为6bits,由两部分组成:高4位为通用寄存器组分组组内地址,低2位为分组编号。当寄存器作为整体使用时,地址从0-63;当通用寄存器组作为4组分别使用时,分组组内地址从0-15,分组编号从0-3。图5(a)所示为通用寄存器组一个分组的结构图,它由3个寄存器组组成,3个寄存器组结构功能相同。通用寄存器组一个分组的输入有:写数据信息,包括写地址、写有效和写数据;读数据信息,包括读地址;输出包括3个寄存器组的读出端口(读出端口1、读出端口2、读出端口3)。图5(b)所示为通用寄存器组的结构图,它由4个通用寄存器组的分组、4个多路选择器(MUX1、MUX2、MUX3、MUX4)和1个2-4译码器组成。MUX1根据控制信号,从不同的写地址输入中,选择正确输入作为写地址输入给通用寄存器组。其中组内地址同时输入给通用寄存器组分组1-4;分组编号输入给2-4译码器,输出为写有效信号(分组编号为00、01、10、11时,输出分别为通用寄存器组分组1-4的写有效信号)。MUX2根据相同控制信号,从不同的写数据输入中,选择正确输入作为写入通用寄存器组分组的数据给通用寄存器组分组。MUX3根据控制信号,从不同的读地址输入中,选择正确输入作为读通用寄存器组分组的地址给通用寄存器组。MUX4根据控制信号,从通用寄存器组不同分组的输出数据中,选择正确输出作为通用寄存器组的输出数据。
根据以上条件,确定矩阵处理器指令的格式如图6所示。矩阵处理器指令集分为六类:(1)L/S和移动指令,完成矩阵处理器数据RAM和通用寄存器组间的数据交换、移动指令完成MPU通用寄存器组中各寄存器间的数据交换、通用寄存器组和特殊寄存器的数据交换;(2)跳转指令,完成指令地址的跳转,包括条件和非条件跳转指令;(3)浮点运算指令,完成浮点数的数学运算,包括:绝对值、比较、取反、加、减、乘、除、开方、乘累加等;(4)数据函数指令,完成数学函数运算,包括:三角函数、反三角函数运算等;(5)SIMD指令,完成单指令多数据运算,同时完成多组浮点运算;(6)矩阵运算指令,完成矩阵运算,包括:生成全0矩阵、全1矩阵、单位阵、转置、提取行、提取列、矩阵复制、求某行或某列和、按行求和、按列求和、矩阵加减乘除实数、矩阵加减、矩阵点乘、矩阵乘法、矩阵初等变换操作。
指令类型在指令中通过Type表示,Type为每个指令的最高4bits,L/S和移动指令、跳转指令、浮点运算指令、数学函数指令、SIMD指令、矩阵运算指令的Type分别为:0001、0010、0011、0100、0101、0110。
(1)L/S和移动指令。
指令的0-3位为OP_code,如表1所示。
表1L/S和移动指令
LM和SM指令格式为L/S和移动指令中的(a)。
LM(Load MPU):将DRAM中一段连续地址的浮点数搬移到连续的寄存器组中。Cond(指令的24-27位)为搬移数的个数为2Cond-1个,DRAM_start(指令的12-23位)为DRAM中起始地址,Reg_start(指令的4-11位)为寄存器起始地址。
SM(Store MPU):将通用寄存器组中的一段数据连续写入DRAM。指令中各部分含义同LM。
LMR和SMR指令格式为L/S和移动指令中的(b)。
LMR(Load MPU by Register):根据寄存器Reg_s(指令的10-15位)中的偏移量,将DRAM中的一个浮点数写入寄存器Reg_d(指令的4-9位)中。DRAM_start(指令的16-27位)为DRAM的基地址,Reg_s为DRAM的偏移地址在寄存器组中存放的地址,Reg_d为写入的寄存器地址,即:*Reg_d=*(DRAM_start+*Reg_s)。
SRM(Store MPU by Register):根据寄存器Reg_s中的偏移量,将寄存器Reg_d中的浮点数写入DRAM,指令中各部分含义同LRM。
MOV指令格式为L/S和移动指令中的(c)。
MOV:移动指令。将源寄存器Reg_s(指令的12-19位)中的值移动到目的寄存器Reg_d(指令的4-11位)中。给通用寄存器组一段连续的地址作为其寄存器的地址,其余地址都为特殊寄存器。所以,当Reg_s和Reg_d的地址都为通用寄存器组中的地址时,进行通用寄存器组中两寄存器间的数据交换;当Reg_s或Reg_d的地址为特殊寄存器地址时,进行通用寄存器和特殊寄存器或特殊寄存器和特殊寄存器的数据交换。
(2)跳转指令
指令的0-3位为OP_code,如表2所示;4-15位为IRAM_addr;16-19位为Cond,如表3所示;20-23位(其中只有20-21位有效)为FPU_num。
表2跳转和移动指令
JMP(Jump):跳转到IRAM的IRAM_addr处取指令。
CJ(Conditional Jump):满足Cond条件时,跳转到IRAM的IRAM_addr处取指令。以FPU_num所表示的FPU的结果进行条件判断。
B(Branch):此时IRAM_addr存放偏移量,即在当前指令地址加上IRAM_addr中存放的偏移量处取指令。跳转到当前指令地址加偏移地址。
CB(Conditional Branch):满足Cond条件时,跳转到当前地址加偏移量处取指令。FPU_num和Cond含义同CJ。
表3跳转指令的Condition
Cond | 意义 |
0001 | 0 |
0010 | 正 |
0011 | 负 |
0100 | 等于 |
0101 | 大于 |
0110 | 小于 |
(3)浮点运算指令
指令的0-3位为OP_code,如表4所示;4-7位为Fm;8-11位为Fn;12-15位Fd;16-19位(其中只有16-17位有效)为FPU_num。
表4浮点运算指令
浮点运算指令中,FPU_num为FPU的编号,表示用哪个FPU完成浮点运算;Fd为目的寄存器,在三操数作浮点运算时,Fd为其中之一的原操作寄存器;Fm和Fn为源寄存器,单操作数浮点运算时,使用Fm寄存器中的浮点数。
FABS(Floating-point Absolute Value):浮点数绝对值。
FCMP(Floating-point Compare):浮点数比较。
FCMPZ(Floating-point Compare with Zero):浮点数与0比较。
FCPY(Floating-point Copy):浮点数复制。
FNEG(Floating-point Negate):浮点数取反。
FADD(Floating-point Addition):浮点加。
FSUB(Floating-point Subtract):浮点减。
FMUL(Floating-point Multiply):浮点乘。
FDIV(Floating-point Divide):浮点除。
FSQRT(Floating-point Square Root):浮点数平方根。
FNMUL(Floating-point Negated Multiply):乘积取反。
FMAC(Floating-point Multiply and Accumulate):乘加(Fd=Fd+Fm×Fn)。
FMSB(Floating-point Multiply and Subtract):乘减(Fd=Fd-Fm×Fn)。
NOP:空操作。
(4)数学函数指令
指令的0-3位为OP_code,如表5所示;4-11位为Reg_addr_S;12-19位为Reg_addr_D;20-23位(其中只有20-21位有效)为FPU_num。
表5数学函数指令
数学函数指令中,FPU_num为FPU的编号,表示用哪个FPU完成浮点运算;Reg_addr_S为存放自变量的寄存器地址;Reg_addr_D为存放函数运算结果的寄存器地址。
FSINF(Floating-point Sine Function):正弦函数。
FCOSF(Floating-point Cosine Function):余弦函数。
FTANF(Floating-point Tangent Function):正切函数。
FARCSINF(Floating-point Arc-Sin Function):反正弦函数。
FARCCOSF(Floating-point Arc-Cosine Function):反余弦函数。
FARCTANF(Floating-point Arc-Tangent Function):反正切函数。
(5)SIMD指令
指令的0-3位为OP_code,如表6所示;4-7位为Fm;8-11位为Fn;12-15位Fd。
表6SIMD指令
SABV(SIMD Absolute Value):绝对值。
SCMP(SIMD Compare):比较。
SCMPEZ(SIMD Compare with Zero):与0比较。
SCPY(SIMD Copy):复制。
SNEG(SIMD Negate):取反。
SADD(SIMD Addition):浮点加。
SSUB(SIMD Subtract):浮点减。
SMUL(SIMD Multiply):浮点乘。
SDIV(SIMD Divide):浮点除。
SSQRT(SIMD Square Root):浮点数平方根。
SNMUL(SIMD Negated Multiply):乘积取反。
SMAC(SIMD Multiply and Accumulate):乘加(Fd=Fd+Fm×Fn)。
SMSB(SIMD Multiply and Subtract):乘减(Fd=Fd-Fm×Fn)。
NOP:空操作。
(6)矩阵运算指令
每一完整的矩阵运算指令都由2或3个字组成,对于有实数参与的矩阵运算,当I=1时,指令有3个字,其中第3个字为参与运算的实数;当I=0时,指令为两个字,参与运算的实数存放在特殊寄存器real_num中,其他指令都为2个字。将图1中的矩阵运算指令(a)称为矩阵运算指令的第1个字;将图1中的矩阵运算指令(b)或(c)称为矩阵运算指令的第2个字(当矩阵指令为矩阵初等变换指令时,即OP_codel为7时,格式为(c),其他指令格式为(b)),(b)中A、B、D为5bits,(c)中A、B、C、D的低5bit s为有效数据,第6bit为0;将参与运算的实数称为矩阵运算指令的第3个字。
矩阵运算指令的第1个字中指令的0-3位为OP_codel;4-15位为DRAM_start;16-27位为DRAM_result。矩阵运算指令的第2个字中,指令(b)的0-3位为OP_code2;4-7位为A的低4位;8-11位为B的低4位;12-15位为D的低4位;16位为A的第5位;17位为B的第5位;18位为D的第5位;19位为I;20-31位为MB_start;指令(c)的0-3位为OP_code2;第7位为I;8-13位(其中只有8-12位有效)为D;14-19位(其中只有14-18位有效)为C;20-25位(其中只有20-24位有效)为B;26-31位(其中只有26-30位有效)为A。
Type为0110;DRAM_result为矩阵运算结果存入DRAM的起始地址;DRAM_start为矩阵A在DRAM中的起始地址;MB_start为矩阵运算中第2个矩阵的起始地址;OP_codel为矩阵运算的类型,跟矩阵运算指令的第2个字中的OP_code2组合表示完成的具体矩阵运算,如表7所示,其中OP_codel和OP_code2为十六进制表示,未列出的数为未定义的指令编码。
表6SIMD指令
MGNM(Matrix Generate Null Matrix):生成全0矩阵,矩阵大小为A×B。
MGOM(Matrix generate One’s Matrix):生成全1矩阵,矩阵大小为A×B。
MGIM(Matrix Generate Identity Matrix):生成单位矩阵,矩阵大小为A×A。
MTRN(Matrix Transposition):矩阵转置,原矩阵大小为A×B。
MRE(Matrix Row Extract):提取矩阵行,矩阵大小为A×B,提取矩阵第D行。
MCE(Matrix Column Extract):提取矩阵列,矩阵大小为A×B,提取矩阵第D列。
MCPY(Matrix Copy):矩阵复制,矩阵大小为A×B。
MMRA(Matrix M Row Addition):求第M行和,矩阵大小为A×B,求第D行矩阵的和。
MNCA(Matrix N Column Addition):求第N列和,矩阵大小为A×B,求第D列矩阵的和。
MRA(Matrix Row Addition):按行求和,矩阵大小为A×B,求矩阵每行的和。
MCA(Matrix Column Addition):按列求和,矩阵大小为A×B,求矩阵每列的和。
MARN(Matrix Add Real Number):矩阵加实数,矩阵大小为A×B,矩阵每一元素加上实数,实数为矩阵运算指令的第3个字或特殊寄存器中的实数。
MSRN(Matrix Subtract Real Number):矩阵减实数,矩阵大小为A×B,矩阵每一元素减去实数,实数为矩阵运算指令的第3个字或特殊寄存器中的实数。
MMRN(Matrix Multiply Real Number):矩阵乘实数,矩阵大小为A×B,矩阵每一元素乘以实数,实数为矩阵运算指令的第3个字或特殊寄存器中的实数。
MDRN(Matrix Divide Real Number):矩阵除实数,矩阵大小为A×B,矩阵每一元素除以实数,实数为矩阵运算指令的第3个字或特殊寄存器中的实数。
MAM(Matrix Add Matrix):矩阵加,2个矩阵大小都为A×B,2个矩阵每一对应元素相加。
MDM(Matrix Substract Matrix):矩阵减,2个矩阵大小都为A×B,2个矩阵每一对应元素相减。
MDMM(Matrix Dot Multiply Matrix):矩阵点乘,2个矩阵大小都为A×B,2个矩阵每一对应元素相乘。
MDD(Matrix Dot Divide):矩阵点除,2个矩阵大小都为A×B,2个矩阵每一对应元素相除。
MMM(Matrix Multiply Matrix):矩阵乘,矩阵1的大小都为A×B,矩阵2的大小为B×D,结果大小为A×D。
METRS(Matrix Flementary Transformation,Row Switching):互换两行,矩阵大小为A×B,将矩阵第C行的数据写入第D行,将矩阵第D行的数写入第C行。
METRM(Matrix Flementary Transformation,RowMultiplication):行乘,矩阵大小为A×B,将矩阵第D行的每一个数乘以实数加上第C行同列的数,写入第C行。
METRA(Matrix Flementary Transformation,Row Addition):行加,矩阵大小为A×B,将矩阵第D行的每一个数加上第C行同列的数,写入第C行。
METCS(Matrix Flementary Transformation,ColumnSwitching):互换两列,矩阵大小为A×B,将矩阵第C列的数据写入第D列,将矩阵第D列的数写入第C列。
METCM(Matrix Flementary Transformation,ColumnMultiplication):列乘,矩阵大小为A×B,将矩阵第D列的每一个数乘以实数加上第C列同行的数,写入第C列。
METCA(Matrix Flementary Transformation,ColumnAddition):列加,矩阵大小为A×B,将矩阵第D列的每一个数加上第C列同行的数,写入第C列。
图7所示,为矩阵处理器核心部分的结构图。由取指、译码1、译码2、读写数据、通用寄存器组、浮点运算单元和控制单元组成。MPU核心部分与外部的接口有取指单元与IRAM的接口、读写数据单元与DRAM的接口、控制单元与CPU的接口。
取指单元接收控制单元发送的取指令使能信号,从IRAM中开始循环读取指令,发送给指令译码1单元,并完成跳转指令。译码1单元接收来自取指令单元发送的指令,根据指令的类别进行译码,将矩阵运算和数学函数运算指令转换成SIMD或浮点操作指令写入译码2单元,将L/S和移动指令送入读写数据模块。读写数据单元接收译码1单元发送的数据地址和使能信号,完成从DRAM中读取数据写入通用寄存器组,将通用寄存器组中的数据写入DRAM;寄存器间的数据转移;通用寄存器数值写入特殊寄存器。译码2单元接收译码1单元发送的SIMD和浮点运算指令,将指令解码为浮点操作指令,送给浮点运算单元。浮点运算单元包括4个FPU1和1个FPU2,每个FPU1的目的和源寄存器地址由译码2单元控制。FPU1完成扩展单精度浮点运算,FPU2完成扩展单精度的4输入加法。控制单元控制矩阵处理器的运行,当计算完成或发生异常时发送中断信号给外部CPU。
图8所示为由矩阵处理器实现的的嵌入式***结构图,其中包括嵌入式CPU、BUS(总线)、SDRAM(存储器)、矩阵处理器、寄存器组和中断产生器。
CPU通过向寄存器组写入控制参数实现对矩阵处理器的控制;中断产生器设置在CPU与寄存器组之间,矩阵处理器的中断请求通过寄存器组和中断产生器输入CPU,实现与CPU的通信和交互。
本实例中,采用高级微控制器总线架构(AdvancedMicrocontroller Bus Architecture,AMBA)2.0协议定义的高级高性能总线(Advanced High performance Bus,AHB)作为BUS的总线标准。CPU主要包括处理器核(主要是一个整数单元)、分离的指令和数据缓存、中断控制器、调试单元(DSU)、定时器、通用异步串口(UART)、存储控制器,在LEON2基础上裁剪得到。
矩阵处理器嵌入式***的正常工作模式过程如下:
1)***上电后,CPU复位,从Flash中读取运行boot指令,完成处理器的初始化。将配置参数写入寄存器组,对矩阵处理器进行配置。最后,从SDRAM中加载操作***,准备开始执行应用程序。
2)CPU将矩阵处理器的指令序列和计算所需数据在SDRAM中的起始和终止地址,写入寄存器组,并发出开始工作信号给寄存器组,然后释放总线。矩阵处理器接收到开始工作信号后,申请占用总线。
3)当矩阵处理器占用总线后,按照CPU写入寄存器组中的指令序列和数据的起始和终止地址从SDRAM中读取数据,分别写入IRAM和DRAM,然后释放总线。CPU再次占有总线,可以完成其他与矩阵处理器不相关的任务。
4)指令序列和数据的写入完成后,矩阵处理器核心开始工作。取指单元依次从IRAM中读取指令,发送给译码1单元;如果接收到译码1单元输入的指令跳转指令,则完成相应的指令跳转。译码1单元将接收到的指令进行如下处理:L/S和移动指令发送给读写数据单元;跳转指令发送给取值单元;矩阵和数学函数指令解码为SIMD或浮点操作指令输出给译码2单元;SIMD和浮点操作指令直通输出给译码2单元。读写数据单元根据Load指令,读取DRAM中的数据,写入通用寄存器组。译码2单元将译码1单元发送的指令进行解码发送给浮点运算单元。浮点运算单元根据译码2单元送入的浮点计算指令,从通用寄存器中读取相应浮点数据,完成相应浮点运算,运算结果写回通用寄存器组。读写数据单元根据Store指令,将MPU通用寄存器组中的数据写回DRAM。
5)IRAM中的指令全部完成,矩阵处理器通过控制单元将相应的参数写入寄存器组,经过中断产生器产生相应的中断。CPU根据接收到的中断和所完成的整体任务确定矩阵处理器是否继续进行其他运算,若计算全部完成,控制矩阵处理器将DRAM中的计算结果写入SDRAM的指定地址区域。
矩阵处理器嵌入式***的调试模式过程如下:
1)***上电后,CPU复位,从Flash中读取运行boot指令,完成处理器的初始化。将配置参数写入寄存器组,对矩阵处理器进行配置。最后,从SDRAM中加载操作***,准备开始执行应用程序。
2)CPU控制将矩阵处理器的指令和计算所需的数据写入IRAM和DRAM。
3)CPU可发送两种工作信号:单步运行信号和连续运行信号。矩阵处理器收到单步运行信号时,每次完成一条完整指令;收到连续运行信号时,完成正常工作模式中第4)步的工作。CPU在矩阵处理器的工作过程中,可随时读写IRAM和DRAM,确定中间的计算结果是否正确。
Claims (9)
1.一种矩阵处理器,其特征在于,包括外部数据接口、IRAM、DRAM、矩阵处理器核心;
所述外部数据接口连接矩阵处理器的IRAM、DRAM与外部存储器,完成矩阵处理器指令的写入和与外部进行数据交换;
所述IRAM和DRAM,相当于矩阵处理器的缓存;IRAM接收外部模块写入的指令序列;DRAM接收外部模块写入的矩阵或其他数据、接收矩阵处理器核心写入的计算结果,供矩阵处理器使用或外部模块读出,完成矩阵处理器与外部模块的数据交换;
所述矩阵处理器核心,用于取指、译码、运算、结果写回和控制。
2.根据权利要求1所述的一种矩阵处理器,其特征在于,所述外部数据接口、IRAM、DRAM、矩阵处理器核心共同连接一个寄存器组,所述寄存器组存放外部数据接口、IRAM、DRAM、矩阵处理器核心的***信息和交互信息。
3.根据权利要求2所述的一种矩阵处理器,其特征在于,所述外部数据接口、IRAM、DRAM、矩阵处理器核心共同连接一个中断产生器,外部数据接口、IRAM、DRAM、矩阵处理器核心的中断请求通过寄存器组和中断产生器输出给外部CPU。
4.根据权利要求1所述的一种矩阵处理器,其特征在于,所述矩阵处理器核心包括取指单元、第一译码单元、第二译码单元、读写数据单元、通用寄存器组、浮点运算单元和控制单元;IRAM、取指单元、第一译码单元、第二译码单元、浮点运算单元依次连接;浮点运算单元、通用寄存器组、读写数据单元、DRAM依次连接;第一译码单元连接所述读写数据单元。
5.根据权利要求4所述的一种矩阵处理器,其特征在于,该矩阵处理器使用的指令集包括:L/S和移动指令、跳转指令、浮点运算指令、数学函数指令、单指令多数据指令、矩阵运算指令;
所述L/S和移动指令,完成矩阵处理器缓存和寄存器、寄存器间的数据读取和写入;
所述跳转指令,完成指令执行顺序的改变;
所述浮点运算指令,完成基本浮点数运算,包括求绝对值、比较、加、减、乘、除、开方、乘加运算;
所述数学函数指令,完成初等数学函数的运算,包括三角函数、反三角函数、对数函数、指数函数;
所述SIMD指令,完成不同浮点数的并行运算,完成的运算和浮点运算指令中包括的运算相同;
所述矩阵运算指令,完成矩阵的一些基本的和简单的运算,包括矩阵生成、矩阵转置、矩阵的行列提取、按矩阵行列进行求和、矩阵与实数的加减乘除、矩阵的加减乘、矩阵的初等变换。
6.根据权利要求4或5所述的一种矩阵处理器,其特征在于,取指单元接收控制单元发送的取指令使能信号,从IRAM中开始循环读取指令,发送指令给第一译码单元,并完成跳转指令;第一译码单元接收来自取指单元发送的指令,根据指令的类别进行译码,将矩阵运算和数学函数运算指令转换成SIMD或浮点操作指令写入第二译码单元,将L/S和移动指令送入读写数据单元;读写数据单元接收第一译码单元发送的数据地址和使能信号,完成从DRAM中读取数据写入通用寄存器组,将通用寄存器组中的数据写入DRAM;通用寄存器组的寄存器间的数据转移;第二译码单元接收第一译码单元发送的SIMD和浮点运算指令,将指令解码为浮点操作指令,送给浮点运算单元;浮点运算单元包括四个并联的第一浮点运算模块和一个第二浮点运算模块,该四个并联的第一浮点运算模块串联到第二浮点运算模块;每个第一浮点运算模块的目的和源寄存器地址由第二译码单元控制;第一浮点运算模块完成扩展单精度浮点运算,第二浮点运算模块完成扩展单精度的4输入加法;控制单元控制矩阵处理器的运行,当计算完成或发生异常时发送中断信号给外部CPU。
7.由权利要求6所述的一种矩阵处理器,其特征在于,所述矩阵处理器还包括一个特殊寄存器,所述特殊寄存器在矩阵处理器执行有实数参与的运算指令时,保存该实数。
8.由权利要求4所述的一种矩阵处理器构建的嵌入式***,其特征在于,包括CPU、总线、SDRAM、矩阵处理器、寄存器组和中断产生器;CPU、SDRAM、矩阵处理器的外部数据接口连接至总线;CPU通过两条数据线分别连接寄存器组和中断产生器,所述寄存器组连接中断产生器和矩阵处理器。
9.根据权利要求8所述的嵌入式***的工作方法,其特征在于,包括以下步骤:
1)***上电后,CPU复位,从Flash中读取运行boot指令,完成处理器的初始化;将配置参数写入寄存器组,对矩阵处理器进行配置;最后,从SDRAM中加载操作***,准备开始执行应用程序;
2)CPU将矩阵处理器的指令序列和计算所需数据在SDRAM中的起始和终止地址,写入寄存器组,并发出开始工作信号给寄存器组,然后释放总线;矩阵处理器接收到开始工作信号后,申请占用总线;
3)当矩阵处理器占用总线后,按照CPU写入寄存器组中的指令序列和数据的起始和终止地址从SDRAM中读取数据,分别写入IRAM和DRAM,然后释放总线;
4)指令序列和数据的写入完成后,矩阵处理器核心开始工作;取指单元依次从IRAM中读取指令,发送给第一译码单元;如果接收到第一译码单元输入的指令跳转指令,则完成相应的指令跳转;译第一译码单元将接收到的指令进行如下处理:L/S和移动指令发送给读写数据单元;跳转指令发送给取值单元;矩阵和数学函数指令解码为SIMD或浮点操作指令输出给第二译码单元;SIMD和浮点操作指令直通输出给第二译码单元;读写数据单元根据Load指令,读取DRAM中的数据,写入通用寄存器组;第二译码单元将第一译码单元发送的指令进行解码发送给浮点运算单元;浮点运算单元根据第二译码单元送入的浮点计算指令,从通用寄存器中读取相应浮点数据,完成相应浮点运算,运算结果写回通用寄存器组;读写数据单元根据Store指令,将矩阵处理器核心的通用寄存器组中的数据写回DRAM;
5)IRAM中的指令全部完成,矩阵处理器通过控制单元将相应的参数写入寄存器组,经过中断产生器产生相应的中断;CPU根据接收到的中断和所完成的整体任务确定矩阵处理器是否继续进行其他运算,若计算全部完成,控制矩阵处理器将DRAM中的计算结果写入SDRAM的指定地址区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110303919.4A CN102360344B (zh) | 2011-10-10 | 2011-10-10 | 矩阵处理器及其指令集和嵌入式*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110303919.4A CN102360344B (zh) | 2011-10-10 | 2011-10-10 | 矩阵处理器及其指令集和嵌入式*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102360344A true CN102360344A (zh) | 2012-02-22 |
CN102360344B CN102360344B (zh) | 2014-03-12 |
Family
ID=45585673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110303919.4A Expired - Fee Related CN102360344B (zh) | 2011-10-10 | 2011-10-10 | 矩阵处理器及其指令集和嵌入式*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102360344B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281559A (zh) * | 2013-07-09 | 2015-01-14 | 罗伯特·博世有限公司 | 用于执行基于数据的函数模型的模型计算的方法和装置 |
CN104394302A (zh) * | 2014-11-28 | 2015-03-04 | 深圳职业技术学院 | 一种基于fpga的实时视频去雾*** |
WO2017124647A1 (zh) * | 2016-01-20 | 2017-07-27 | 北京中科寒武纪科技有限公司 | 一种矩阵计算装置 |
WO2017124649A1 (zh) * | 2016-01-20 | 2017-07-27 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读写调度器及保留站 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107391447A (zh) * | 2017-07-26 | 2017-11-24 | 成都网烁信息科技有限公司 | 一种电脑加速***及方法 |
CN107678781A (zh) * | 2016-08-01 | 2018-02-09 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
WO2018141233A1 (en) * | 2017-02-01 | 2018-08-09 | Huawei Technologies Co., Ltd. | Ultra lean vector processor |
CN108491359A (zh) * | 2016-04-22 | 2018-09-04 | 北京中科寒武纪科技有限公司 | 子矩阵运算装置及方法 |
CN108777155A (zh) * | 2018-08-02 | 2018-11-09 | 北京知存科技有限公司 | 闪存芯片 |
CN109034383A (zh) * | 2017-10-30 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行矩阵相乘指令的方法 |
CN110046105A (zh) * | 2019-04-26 | 2019-07-23 | 中国科学院微电子研究所 | 一种3D NAND Flash |
WO2019148781A1 (zh) * | 2018-02-05 | 2019-08-08 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN110337635A (zh) * | 2017-03-20 | 2019-10-15 | 英特尔公司 | 用于点积操作的***、方法和装置 |
CN110990060A (zh) * | 2019-12-06 | 2020-04-10 | 北京瀚诺半导体科技有限公司 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
CN111242293A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN111857819A (zh) * | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN112527240A (zh) * | 2020-12-22 | 2021-03-19 | 中国电子科技集团公司第四十七研究所 | 一种配合80c186cpu进行的浮点运算装置 |
CN115995249A (zh) * | 2023-03-24 | 2023-04-21 | 南京大学 | 一种基于dram的矩阵转置运算装置 |
US11734383B2 (en) | 2016-01-20 | 2023-08-22 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN116679988A (zh) * | 2023-08-02 | 2023-09-01 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
US12039332B2 (en) | 2022-01-28 | 2024-07-16 | Intel Corporation | Systems, methods, and apparatus for matrix move |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1342934A (zh) * | 2000-08-23 | 2002-04-03 | 任天堂株式会社 | 在音频存储器中预缓存数据的方法和装置 |
CN1864131A (zh) * | 2003-10-01 | 2006-11-15 | 先进微装置公司 | 处置在基于跟踪缓存的处理器中的异常指令的***及方法 |
CN101526895A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微***有限公司 | 基于指令双发射的高性能低功耗嵌入式处理器 |
CN201716564U (zh) * | 2010-06-25 | 2011-01-19 | 中国科学院沈阳自动化研究所 | 高性能可编程控制器专用处理器体系结构 |
CN102073543A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 通用处理器与图形处理器融合***及其融合方法 |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
-
2011
- 2011-10-10 CN CN201110303919.4A patent/CN102360344B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1342934A (zh) * | 2000-08-23 | 2002-04-03 | 任天堂株式会社 | 在音频存储器中预缓存数据的方法和装置 |
CN1864131A (zh) * | 2003-10-01 | 2006-11-15 | 先进微装置公司 | 处置在基于跟踪缓存的处理器中的异常指令的***及方法 |
CN101526895A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微***有限公司 | 基于指令双发射的高性能低功耗嵌入式处理器 |
CN201716564U (zh) * | 2010-06-25 | 2011-01-19 | 中国科学院沈阳自动化研究所 | 高性能可编程控制器专用处理器体系结构 |
CN102073543A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 通用处理器与图形处理器融合***及其融合方法 |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281559A (zh) * | 2013-07-09 | 2015-01-14 | 罗伯特·博世有限公司 | 用于执行基于数据的函数模型的模型计算的方法和装置 |
CN104394302A (zh) * | 2014-11-28 | 2015-03-04 | 深圳职业技术学院 | 一种基于fpga的实时视频去雾*** |
WO2017124647A1 (zh) * | 2016-01-20 | 2017-07-27 | 北京中科寒武纪科技有限公司 | 一种矩阵计算装置 |
WO2017124649A1 (zh) * | 2016-01-20 | 2017-07-27 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读写调度器及保留站 |
US11734383B2 (en) | 2016-01-20 | 2023-08-22 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN108595371A (zh) * | 2016-01-20 | 2018-09-28 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
CN108491359A (zh) * | 2016-04-22 | 2018-09-04 | 北京中科寒武纪科技有限公司 | 子矩阵运算装置及方法 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN111857819B (zh) * | 2016-04-26 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN107315574B (zh) * | 2016-04-26 | 2021-01-01 | 安徽寒武纪信息科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN111857820A (zh) * | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN111857819A (zh) * | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN111857820B (zh) * | 2016-04-26 | 2024-05-07 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN107678781A (zh) * | 2016-08-01 | 2018-02-09 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
CN107678781B (zh) * | 2016-08-01 | 2021-02-26 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
WO2018141233A1 (en) * | 2017-02-01 | 2018-08-09 | Huawei Technologies Co., Ltd. | Ultra lean vector processor |
CN110337635A (zh) * | 2017-03-20 | 2019-10-15 | 英特尔公司 | 用于点积操作的***、方法和装置 |
US11977886B2 (en) | 2017-03-20 | 2024-05-07 | Intel Corporation | Systems, methods, and apparatuses for tile store |
US11847452B2 (en) | 2017-03-20 | 2023-12-19 | Intel Corporation | Systems, methods, and apparatus for tile configuration |
US11714642B2 (en) | 2017-03-20 | 2023-08-01 | Intel Corporation | Systems, methods, and apparatuses for tile store |
CN110337635B (zh) * | 2017-03-20 | 2023-09-19 | 英特尔公司 | 用于点积操作的***、方法和装置 |
CN107391447A (zh) * | 2017-07-26 | 2017-11-24 | 成都网烁信息科技有限公司 | 一种电脑加速***及方法 |
US11762631B2 (en) | 2017-10-30 | 2023-09-19 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN109034383A (zh) * | 2017-10-30 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行矩阵相乘指令的方法 |
US11922132B2 (en) | 2017-10-30 | 2024-03-05 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN109034383B (zh) * | 2017-10-30 | 2021-09-21 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行矩阵相乘指令的方法 |
WO2019148781A1 (zh) * | 2018-02-05 | 2019-08-08 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
US11836497B2 (en) | 2018-02-05 | 2023-12-05 | Shanghai Cambricon Information Technology Co., Ltd | Operation module and method thereof |
CN108777155A (zh) * | 2018-08-02 | 2018-11-09 | 北京知存科技有限公司 | 闪存芯片 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
US11996105B2 (en) | 2018-09-13 | 2024-05-28 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN110046105A (zh) * | 2019-04-26 | 2019-07-23 | 中国科学院微电子研究所 | 一种3D NAND Flash |
CN110990060A (zh) * | 2019-12-06 | 2020-04-10 | 北京瀚诺半导体科技有限公司 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN111242293A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN112527240B (zh) * | 2020-12-22 | 2023-11-14 | 中国电子科技集团公司第四十七研究所 | 一种配合80c186cpu进行的浮点运算装置 |
CN112527240A (zh) * | 2020-12-22 | 2021-03-19 | 中国电子科技集团公司第四十七研究所 | 一种配合80c186cpu进行的浮点运算装置 |
US12039332B2 (en) | 2022-01-28 | 2024-07-16 | Intel Corporation | Systems, methods, and apparatus for matrix move |
CN115995249A (zh) * | 2023-03-24 | 2023-04-21 | 南京大学 | 一种基于dram的矩阵转置运算装置 |
CN116679988A (zh) * | 2023-08-02 | 2023-09-01 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
CN116679988B (zh) * | 2023-08-02 | 2023-10-27 | 武汉芯必达微电子有限公司 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102360344B (zh) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102360344B (zh) | 矩阵处理器及其指令集和嵌入式*** | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
EP3602278B1 (en) | Systems, methods, and apparatuses for tile matrix multiplication and accumulation | |
CN100495326C (zh) | 具有减小的带宽要求的矩阵乘法 | |
CN113050990A (zh) | 用于矩阵操作加速器的指令的装置、方法和*** | |
US20200210516A1 (en) | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions | |
KR20170110690A (ko) | 하나 또는 그 초과의 복소수 산술 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서 | |
CN102981797B (zh) | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 | |
JPH10124484A (ja) | データプロセッサ及びデータ処理システム | |
GB2474901A (en) | Multiply-accumulate instruction which adds or subtracts based on a predicate value | |
WO2014051720A1 (en) | Accelerated interlane vector reduction instructions | |
CN110909883A (zh) | 用于执行指定三元片逻辑操作的指令的***和方法 | |
CN103019647A (zh) | 具有浮点精度保持功能的浮点累加/累减运算方法 | |
CN112579159A (zh) | 用于矩阵操作加速器的指令的装置、方法和*** | |
CN111767079A (zh) | 用于矩阵操作加速器的转置指令的装置、方法和*** | |
CN110909882A (zh) | 用于执行水平铺块操作的***和方法 | |
CN111611202A (zh) | 脉动阵列加速器***和方法 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN113918883A (zh) | 数据处理方法、装置以及设备和计算机可读存储介质 | |
Yang et al. | RiBoSOM: Rapid bacterial genome identification using self-organizing map implemented on the synchoros SiLago platform | |
CN111767512A (zh) | 离散余弦变换/反离散余弦变换dct/idct***和方法 | |
CN114691217A (zh) | 用于8位浮点矩阵点积指令的装置、方法和*** | |
CN112434256B (zh) | 矩阵乘法器和处理器 | |
CN101930356B (zh) | 用于浮点协处理器的寄存器文件分组编址、读写控制方法 | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140312 Termination date: 20161010 |
|
CF01 | Termination of patent right due to non-payment of annual fee |