CN102221987B - 基于嵌入式专用指令集处理器的指令集编码方法 - Google Patents
基于嵌入式专用指令集处理器的指令集编码方法 Download PDFInfo
- Publication number
- CN102221987B CN102221987B CN201110120737.3A CN201110120737A CN102221987B CN 102221987 B CN102221987 B CN 102221987B CN 201110120737 A CN201110120737 A CN 201110120737A CN 102221987 B CN102221987 B CN 102221987B
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- bit
- data
- seldef
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 56
- 230000001343 mnemonic effect Effects 0.000 claims description 31
- 238000012805 post-processing Methods 0.000 claims description 22
- 210000004027 cell Anatomy 0.000 claims description 16
- 102000006822 Agouti Signaling Protein Human genes 0.000 claims description 11
- 108010072151 Agouti Signaling Protein Proteins 0.000 claims description 11
- 238000013500 data storage Methods 0.000 claims description 4
- 230000005059 dormancy Effects 0.000 claims description 4
- 238000012856 packing Methods 0.000 claims description 4
- 210000000352 storage cell Anatomy 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- POEWFBSYPFIYSK-UHFFFAOYSA-N 1-cyclohexyl-3-dodecylurea Chemical compound CCCCCCCCCCCCNC(=O)NC1CCCCC1 POEWFBSYPFIYSK-UHFFFAOYSA-N 0.000 claims description 2
- 238000000151 deposition Methods 0.000 claims description 2
- 230000000295 complement effect Effects 0.000 claims 2
- 238000013497 data interchange Methods 0.000 abstract 1
- 230000001681 protective effect Effects 0.000 abstract 1
- 230000007812 deficiency Effects 0.000 description 5
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种基于嵌入式专用指令集处理器的指令集编码方法,包括定义机器代码位宽、定义指令类型、定义寻址方式、划分指令代码字段、编码五个步骤。此指令集根据现场可编程门阵列(FPGA)内部存储器与数据总线资源均以18位为基本位宽的特点进行优化。指令集包括算术逻辑运算类、数据交换类和程序定序类16条多功能指令,指令包含用于构建具有指令自主能力的单指令流-多数据流并行处理系统所需的保护性指令字段。本发明公开的指令集具有完整与精简两种应用模式,在两种应用模式下,指令机器代码长度可分别缩短至16-bit与14-bit,大幅提高了FPGA内部电路资源的利用效率和处理器的指令执行速度。
Description
技术领域
本发明属于计算机技术领域,更进一步涉及到微处理器指令集中的一种基于嵌入式专用指令集处理器(ASIP)的指令集编码方法,该方法定义的指令集根据现场可编程门阵列(FPGA)内部存储器与数据总线资源均以18位为基本位宽的特点进行优化,适用于FPGA嵌入式处理系统。
背景技术
专用指令集处理器(ASIP)技术是微处理器领域的新兴技术。其核心思想是根据特定的应用领域,开发出一套专门的微处理器指令集以及实现该指令集的微处理器体系结构。ASIP通常采用嵌入的方式在FPGA中实现,可以充分利用FPGA可实现的电路规模大、片内资源丰富及可重构等特性,在FPGA内可以相对容易地在单个芯片中集成多个ASIP处理单元(PE),以ASIP阵列的结构形式实现完全并行的高速信号处理。
目前的处理器指令集及其体系结构均针对传统的专用集成电路流片生产的实现方式进行设计,没有考虑到FPGA芯片内部电路资源、存储器资源及布线资源的特殊性,因此难以直接移植到FPGA中实现。如北京理工大学申请的专利“一种支持高级语言部分语句功能的处理器指令集”(专利申请号200810100863.0,公开号CN101246435A)公开了一种支持高级语言部分语句功能的处理器指令集的定义方法。该专利中定义指令的机器代码长度为64位(bit)长,包括1-bit保留位、6-bit操作码字段、9-bit寻址方式描述符字段和48-bit地址码字段。其中操作码字段位置固定,寻址方式描述符字段给出3个操作数的7种寻址方式,地址码字段给出3个操作数的地址。该专利的不足之处是:指令集的机器代码字长太长,且只有一种应用模式,其相应的处理器体系结构难以在FPGA内高效运行;一条指令只能完成一种功能,没有用户自定义的后处理操作,操作数的寻址方式复杂,降低了指令执行速度;没有保护性指令(Guarded Instruction)控制字段,从而不能用于构建具有指令自主能力的单指令流-多数据流(SIMD)并行处理系统。
发明内容
本发明的目的在于克服上述现有技术的不足,提出一种能够在FPGA内高效实现的基于嵌入式专用指令集处理器的指令集编码方法。
本发明实现的思路是,在嵌入式专用指令集处理器中采用完整与精简两种应用模式,并且指令集采用适于FPGA实现的18或16-bit程序总线位宽,其机器代码位宽在完整与精简两种应用模式下分别限制在18或16-bit之内。所有的指令均为单字长、单周期格式,包括算术逻辑运算类、数据交换类和程序定序类三大类共16条多功能指令。其中,在算术逻辑运算类指令中,用户可以自定义四种后处理操作。
嵌入式专用指令集处理器包括算术运算单元、通用寄存器单元、数据地址产生单元、程序定序单元、输入/输出数据存储器单元、程序存储器单元和数据交换接口单元。
本发明实现的具体步骤如下:
(1)定义机器代码位宽,将嵌入式专用指令集处理器的数据存储器单元和程序存储器单元总线设置为8-bit与16-bit,将完整应用模式与精简应用模式下的机器代码位宽分别定义为18-bit与16-bit。
(2)定义指令类型,将指令集的指令类型定义为算术逻辑运算类、数据交换类和程序定序类三大类共16条多功能指令,算术逻辑运算类指令除可完成相关的算术运算外,还可以附带由用户自己定义的四种操作功能。
(3)定义寻址方式,对指令集指令中的操作数寻址定义为立即数寻址、寄存器寻址、变址寻址三种寻址方式。立即数寻址完成对立即数的寻址,寄存器寻址完成对通用寄存器和特殊寄存器的寻址,变址寻址包括输入数据存储器单元的读/写地址、输出数据存储器单元的读/写地址4套地址指针。
(4)划分指令代码字段,将指令的机器代码划分为六个字段:2-bit保护性指令字段、4-bit指令代码字段、两个2-bit辅助功能字段、4或3-bit目的/源寄存器字段、4或3-bit源寄存器字段。
(5)编码,采用指令组合编码方式定义各个字段中的具体编码。
本发明提出的指令集编码方法是基于嵌入式专用指令集处理器实现的,其电路体系结构包括算术运算单元、通用寄存器单元、数据地址产生单元、程序定序单元、输入/输出数据存储器单元、程序存储器单元和数据交换接口单元。
算术运算单元完成操作数的算术、逻辑和乘法运算;通用寄存器单元为算术运算单元提供操作数和暂存运算结果,以及与存储器单元交换数据;数据地址产生单元实现算术运算结果在通用寄存器组中存放地址的寻址,以及与通用寄存器单元进行数据交换的地址寻址;程序定序单元控制各单元的程序执行;输入/输出数据存储器单元高速缓存系统中的局部数据;程序存储器单元存放指令代码;数据交换接口单元完成通用寄存器单元的数据与外部数据的交换。
本发明与现有技术相比具有以下优点:
第一、由于本发明在定义嵌入式ASIP指令集时,根据FPGA内部存储器与数据总线均以18-bit为基本位宽的特点对机器代码字长进行了优化,具有完整与精简两种应用模式,克服了现有技术中机器代码字长太长、应用模式单一的不足,提高了FPGA内部电路资源特别是布局/布线资源的利用效率,相应的处理器体系结构可以在FPGA内高效的运行。
第二、由于本发明中算术逻辑运算类指令具有一个以上的功能,克服了现有技术中一条指令只能完成一种功能的不足,在算术逻辑运算类指令中,除可完成相关的算术运算外,还可以附带由用户自己定义的操作,如将加法运算结果再进行逻辑右移操作,提高了指令的执行效率。
第三、由于本发明中寻址方式仅有立即数寻址、寄存器寻址、变址寻址三种,并设置了4套地址指针,克服了现有技术中操作数的寻址方式复杂的不足,实现对数据存储器中的两个数据进行快速读/写操作,提高了指令的执行速度。
第四、由于本发明在划分指令代码字段时包含了保护性指令字段,克服了现有技术中没有保护性指令字段的指令集不能用于构建具有指令自主能力的SIMD并行处理系统的不足,便于在FPGA内实现具有指令自主能力的大规模SIMD并行处理系统。
附图说明
图1为本发明指令集编码方法的流程图;
图2为本发明的指令机器代码格式示意图;
图3为嵌入式专用指令集处理器的方块图。
具体实施方式
下面结合附图对本发明做进一步的详细描述。
参照图1,本发明的具体步骤如下:
步骤1:定义机器代码位宽。本发明根据FPGA内部存储器与数据总线均以18-bit为基本位宽的结构特点,将嵌入式专用指令集处理器的数据存储器单元和程序存储器单元总线设置为18-bit与16-bit,将每条指令机器代码的位宽限制在18或16-bit之内,在完整应用与精简应用两种应用模式下,将机器代码的位宽分别定义为18和16-bit。这样可以充分利用FPGA可实现的电路规模大、片内资源丰富及可重构等特性,特别是在FPGA内可以比较容易地在单个芯片中集成多个ASIP处理单元(PE),以ASIP阵列的结构形式实现完全并行的高速信号处理。
步骤2:定义指令类型。将指令集的指令类型定义为算术逻辑运算类、数据交换类和程序定序类三大类共16条多功能指令。所有的指令均为单字长、单周期格式,指令精简紧凑而且功能完备,适合嵌入式数字信号处理(DSP)应用。算术逻辑运算类指令包括移位运算指令、逻辑运算指令、算术运算指令、乘法运算指令和乘后累加运算指令,除了能控制算术运算单元完成相关的算术逻辑运算外,还可以完成四种后处理操作,如将加法运算结果再进行逻辑右移操作等。数据交换类指令包括寄存器数据传输指令、立即数高位装载指令、立即数低位装载指令、数据存储器读数据指令和数据存储器写数据指令。程序定序类指令包括空操作指令、软件复位指令、休眠指令、程序跳转指令、循环指令、子程序调用与返回指令。
步骤3:定义寻址方式。本发明对操作数的寻址定义立即数寻址、寄存器寻址、变址寻址三种数据寻址方式。立即数寻址完成对立即数的寻址,立即数的位宽在完整与精简应用模式下分别定义为18和16-bit。寄存器寻址完成对通用寄存器和特殊寄存器的寻址。在完整应用模式下设置64个寄存器,其中16个作为通用寄存器(Gr00~Gr15),用于为算术运算单元提供操作数并存储运算结果,也可以用于与数据存储器交换数据,还可以存储指令中的立即数;其余寄存器为特殊功能寄存器,包括数据地址指针寄存器、累加寄存器和输入/输出(I/0)接口寄存器。在精简应用模式下设置56个寄存器,其中8个作为通用寄存器(Gr00~Gr07),其余寄存器为特殊功能寄存器。
步骤4:划分指令代码字段。
参照图2,本发明将机器代码划分为保护性指令字段(Grd)、指令代码字段(Func)、辅助功能字段2(Aux2)、目的/源寄存器字段(Dest/Scr2)、辅助功能字段1(Aux1)和源寄存器字段(Scr1)六个字段。
2-bit保护性指令字段,为可选字段,用于构建具有指令自主能力的单指令流-多数据流(SIMD)并行处理系统。若不采用保护性指令执行方式,两种模式的指令字长则可缩短至16-bit和14-bit,这样可以大幅提高FPGA内部电路资源特别是布局/布线资源的利用效率。
4-bit指令代码字段,用于指示该指令的功能类别。
2-bit辅助功能字段2,用于指示数据地址产生类指令的目的寄存器类型(通用寄存器、数据地址指针寄存器、累加寄存器与循环次数寄存器、I/O接口寄存器)或算术逻辑运算类指令的后处理操作。
4或3-bit目的/源寄存器字段(Dest/Scr2),在数据地址产生类指令中指示目的寄存器,在算术逻辑运算类指令中指示第二个源操作数寄存器和目的寄存器。
2-bit辅助功能字段1,用于指示数据地址产生类指令的源寄存器类型或算术逻辑运算类指令的具体处理操作。
4或3-bit源寄存器字段,在数据地址产生类指令中指示源寄存器,在算术运算类指令中指示第一个源操作数寄存器。
在完整应用模式下,源寄存器字段与目的/源寄存器字段两个字段均为4-bit,在精简应用模式下,这两个字段均为3-bit。
步骤5:编码。为了满足指令级各项功能,尽可能地降低指令机器代码的长度,对指令的编码采用指令组合编码方式,即指令所实现的具体功能通过指令功能字段与两个辅助功能字段组合表示。其中指令代码字段指示指令的功能类别,如算术运算、逻辑运算或寄存器数据传输等。两个辅助功能字段指示在此类别下的具体操作,如加法运算、逻辑或运算或源与目的寄存器的类型等。
下面对本发明指令集中16条指令做进一步的描述:
第1条,移位运算指令
指令功能:将源寄存器(Rs)内容进行移位运算和用户自定义的算术逻辑后处理(Seldef)操作,将结果存储在目的寄存器(Rd)中。
指令助记符:
Seldef LLA Rd,Rs; Rs左移并后处理,结果存于Rd;
Seldef RL Rd,Rs; Rs逻辑右移并后处理,结果存于Rd;
Seldef RA Rd,Rs; Rs算术右移并后处理,结果存于Rd;
Seldef NSFT Rd,Rs; 执行用户自定义后处理,结果存于Rd。
指令格式参照图2为:Grd,0110,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段指示具体的移位操作:00(LLA-左移),01(RL-逻辑右移),10(RA-算术右移),11(NSFT-无移位);Rd与Rs的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第2条,逻辑运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行逻辑运算和用户自定义的后处理操作(seldef),并将结果存储在目的寄存器Rd中。
指令助记符:
Seldef LNOT Rd,Rs; Rs求反并后处理,结果存于Rd;
Seldef LAND Rd,Rs; Rs、Rd“与”运算并后处理,结果存于Rd;
Seldef LOR Rd,Rs; Rs、Rd“或”运算并后处理,结果存于Rd;
Seldef LXOR Rd,Rs; Rs、Rd“异或”运算并后处理,结果存于Rd。
指令格式参照图2为:Grd,0111,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段指示具体的逻辑运算:00(LNOT-逻辑非),01(LAND-逻辑与),10(LOR-逻辑或),11(LXOR-逻辑异或);Rd与Rs的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第3条,算术运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行算术运算和用户自定义的后处理操作(seldef),并将结果存储在目的寄存器Rd中。
指令助记符:
Seldef ADD Rd,Rs; Rs+Rd并后处理,结果存于Rd;
Seldef ADC Rd,Rs; Rs+Rd+Cy并后处理,结果存于Rd;
Seldef SUB Rd,Rs; Rs-Rd并后处理,结果存于Rd;
Seldef SUBC Rd,Rs; Rs-Rd-Cy并后处理,结果存于Rd。
指令格式参照图2为:Grd,1000,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段指示具体的算术运算:00(ADD-加),01(ADC-带进位加),10(SUB-减),11(SUBC-带借位减);Rd与Rs的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第4条,乘法运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行乘法运算和用户自定义的后处理操作(seldef),并将结果存储在目的寄存器Rd中。
指令助记符:
Seldef MULT Rd,Rs; Rs×Rd并后处理,结果存于Rd。
指令格式参照图2为:Grd,1001,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux1字段固定填充为00;Rd与Rs的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第5条,乘后累加运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行乘法运算后与累加寄存器(A)中的内容相加,执行用户自定义的后处理操作(seldef),并将结果存储在累加寄存器A中。
指令助记符:
Seldef MAC Rd,Rs; (Rs×R)+A并后处理,结果存于累加器A。
指令格式参照图2为:Grd,1010,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux1字段固定填充为00;Rd与Rs的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第6条,寄存器数据传输指令
指令功能:将源寄存器Rs的内容存储在目的寄存器Rd中。
指令助记符:
LD Rd,Rs; 将Rs中的数据存储于Rd中。
指令格式参照图2为:Grd,0001,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段用于选择目的寄存器类型;2-bit的Aux1字段选择源寄存器类型;具体的寄存器编码为00(通用寄存器-Gr00~Gr15或Gr00~Gr07),01(数组指针寄存器-I0,M0,I1,M1,I2,M2,I3,M3),10(输入/输出寄存器-Stout,Stin,Ioout,Ioin),11(累加器A、循环次数寄存器CE)。
第7条,立即数高位装载指令
指令功能:将立即数高12/10-bit数据写入到高位立即数暂存寄存器(Drt_data_h)中。
指令助记符:
LD Drt_data_h;将立即数高位数据写入高位立即数暂存寄存器中。
指令格式参照图2为:Grd,0010,Drt_data_h(12或10-bit)
格式说明:在完整应用模式下,Drt_data_h中存放立即数的高12-bit;在精简应用模式下,Drt_data_h中存放立即数的高10-bit。
第8条,立即数低位装载指令
指令功能:将立即数低6-bit数据与高位立即数暂存寄存器的内容拼接成18/16-bit立即数,存入目的寄存器Rd中。
LD Rd,Drt_data_l;将拼接好的立即数存储于目的寄存器Rd中。
指令格式参照图2为:Grd,0011,PD,Rd,Drt_data_h
格式说明:2-bit的PD字段在完整应用模式下固定填充00,在精简应用模式下,P字节填充为0,D字节为立即数bit5;Rd的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第9条,数据存储器读数据指令
指令功能:将数组读地址指针I0(或I2)指示的数据存储单元中的数据读出,存放于目的寄存器Rd中,并用I0+M0(或I2+M2)来更新I0(或I2)。
指令助记符:
LD Rd,(Ix);将Ix指示的存储单元中数据读出并存储于Rd中。
指令格式参照图2为:Grd,0100,00,Rd,01,Ix
格式说明:Ix字段固定为0000/000(I0)或0100/100(I2),I0为输入数据存储器读地址指针,I2为输出数据存储器读地址指针;Rd的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第10条,数据存储器写数据指令
指令功能:将源寄存器中数据读出并写入到数组写地址指针I1(或I3)指示的数据存储单元中,并用I1+M1(或I3+M3)来更新I1(或I3)。
指令助记符:
LD(Ix),Rs;将Rs中的数据写入i1指示的输入存储单元中。
指令格式参照图2为:Grd,0101,01,Ix,00,Rs
格式说明:Ix字段固定为0010/010(I 1)或0110/110(I3),I1为输入数据存储器写地址指针,I2为输出数据存储器写地址指针;Rs的类型只能是通用寄存器(Gr00~Gr15或Gr00~Gr07)。
第11条,空操作指令
指令功能:保持原有状态,不做任何操作。
指令助记符:
NOP;保持原有状态,不做任何操作。
指令格式参照图2为:Grd,0000,00,PAD,00,PAD
格式说明:PAD在完整模式下固定填充0000,在精简模式下固定填充或000。
第12条,软件复位指令
指令功能:将程序计数器(PC)复位至指定的复位服务程序入口地址处(用于软件调试)。
指令助记符:
RST Num; 将PC复位至指定的复位服务程序入口地址处
指令格式参照图2为:Grd,1111,00,PAD,00,Num
格式说明:PAD在完整模式下固定填充0000,在精简模式下固定填充或000;Num在完整模式下为4-bit,在精简模式下为3-bit。
第13条,休眠指令
指令功能:程序计数器(PC)值保持不变,直到ASIP指定引脚处有事件产生,程序继续执行(用于程序执行与外部指定事件的同步)。
指令助记符:
IDEL Num; PC值保持不变,直至指定引脚处有事件产生。
指令格式参照图2为:Grd,1110,00,PAD,00,Num
格式说明:PAD在完整模式下固定填充0000,在精简模式下固定填充或000;Num在完整模式下为4-bit,在精简模式下为3-bit。
第14条,程序跳转指令
指令功能:若指令指定的算术运算状态标志位或衍生状态标志位有效(置为“1”),程序跳转至指定地址处(当前PC值+偏移地址Addr)执行,否则顺序执行。
指令助记符:
JZ Addr; 若“零”标志位(AZ)置位则程序跳转;
JN Addr; 若“符号”标志位(AN)置位则程序跳转;
JC Addr; 若“进位”标志位(AC)置位则程序跳转;
JV Addr; 若“溢出”标志位(AV)置位则程序跳转;
JGT Addr; 若“大于”标志位(GT)置位则程序跳转;
JLT Addr; 若“小于”标志位(LT)置位则程序跳转;
JMP Addr; 无条件跳转。
指令格式:Grd,1101,CND,Addr
格式说明:完整应用模式下,目的地址Addr为9-bit有符号数;精简应用模式下,目的地址Addr为7-bit有符号数。
CND为对应于上述各条跳转指令的跳转条件——算术运算状态标志位代码:
000:“零”标志位(AZ);
001:“符号”标志位(AN);
010:“进位”标志位(AC);
011:“溢出”标志位(AV);
100:“大于”标志位(GT);
101:“小于”标志位(LT);
110:保留;
111:无条件标志(NCND),此状态下,执行无条件跳转。
第15条,循环指令
指令功能:程序在指定长度(Lp_lgth)的循环体内往复执行,直至循环计数器为“0”。
指令助记符:
D0Lp_lgth UNTL CE;程序循环执行,直至CE为“0”。
指令格式:Grd,1100,Lp_lgth
格式说明:完整应用模式下,循环体长度Lp_lgth为12-bit;精简应用模式下,循环体长度Lp_lgth为10-bit;循环指令无软件开销,允许两重循环嵌套。
第16条,子程序调用与返回指令
指令功能:若指令字中指示位(C/R)状态为0,则将当前程序计数器(PC)之值+1后压入堆栈(返回地址),程序跳转至指定地址处(当前PC值+偏移地址Addr)执行(子程序调用);若指令字中指示位(C/R)状态为1,将堆栈顶部数据内容弹出并载入程序计数器(PC)中,继续执行程序(子程序返回)。
指令助记符:
CALL Addr; 子程序调用;
RTS; 子程序返回。
指令格式:Grd,1011,C/R,Addr
格式说明:C/R位为“0”时,执行子程序调用,为“1”时,执行子程序返回;完整应用模式下,子程序调用地址Addr为11-bit无符号数;精简应用模式下,子程序调用地址Addr为9-bit无符号数。
参照图3,嵌入式专用指令集处理器包括算术运算单元、通用寄存器单元、数据地址产生单元、程序定序单元、输入/输出数据存储器单元、程序存储器单元和数据交换接口单元。在实际应用时主要由FPGA器件来实现,并且往往是以大规模并行处理单元阵列的方式来构成高速实时信号处理系统。
程序存储器单元存放应用程序的指令代码。程序定序单元解释程序指令,并向通用寄存器单元、数据地址产生单元、算术运算单元和数据交换接口单元发送指令代码,以及控制保护性指令的执行。数据地址产生单元根据程序定序单元发送的指令代码对通用/专用寄存器进行寄存器寻址、对数据存储器进行变址寻址,并将寻址结果发送到数据存储器单元。数据存储器单元一方面接收外部发送的待处理数据进行存储,另一方面根据来自数据地址产生器的寻址结果将存储在对应地址中的待处理数据发送给通用寄存器单元,同时接收来自通用寄存器单元的处理后数据进行存储。通用寄存器单元根据程序定序单元发送的指令代码,一方面接收来自数据存储器单元的待处理数据并转发给算术运算单元,另一方面接收经过算术运算单元处理后的数据并转发给数据存储器单元、数据交换接口单元,同时还要接收来自数据交换接口单元的数据并转发给算术运算单元。数据交换接口单元根据程序定序单元发送的指令代码将来自通用寄存器单元的数据进行存储并转发给系统外部,同时又将外部数据转发给通用寄存器单元。算术运算单元根据程序定序单元发送的指令代码对来自通用寄存器单元的操作数进行各种运算操作,同时又将运算结果存入通用寄存器单元。
Claims (5)
1.一种基于嵌入式专用指令集处理器的指令集编码方法,该方法步骤如下:
(1)定义机器代码位宽:
将嵌入式专用指令集处理器的数据存储器单元和程序存储器单元总线设置为18-bit与16-bit,将完整应用模式与精简应用模式下的机器代码位宽分别定义为18-bit与16-bit;
(2)定义指令类型:
将指令集的指令类型定义为算术逻辑运算类、数据交换类和程序定序类三大类共16条多功能指令,算术逻辑运算类指令除完成相关的算术运算外,还附带四种用户自定义的后处理操作;
(3)定义寻址方式:
对指令集指令中的操作数寻址定义为立即数寻址、寄存器寻址、变址寻址三种寻址方式;立即数寻址完成对立即数的寻址,寄存器寻址完成对通用寄存器和特殊寄存器的寻址,变址寻址包括输入数据存储器单元的读/写地址、输出数据存储器单元的读/写地址4套地址指针;
(4)划分指令代码字段:
将指令的机器代码划分为六个字段:2-bit保护性指令字段、4-bit指令代码字段、两个2-bit辅助功能字段、4或3-bit目的/源寄存器字段、4或3-bit源寄存器字段;
(5)编码:
采用指令组合编码方式定义各个字段中的具体编码;所述的指令组合编码方式是对指令集中16条指令分别进行编码,其编码格式和指令功能如下:
第1条,移位运算指令
指令功能:将源寄存器Rs内容进行移位运算和用户自定义的后处理Seldef操作,将结果存储在目的寄存器Rd中;
指令助记符:
Seldef LLA Rd,Rs;Rs左移并后处理,结果存于Rd;
Seldef RL Rd,Rs;Rs逻辑右移并后处理,结果存于Rd;
Seldef RA Rd,Rs;Rs算术右移并后处理,结果存于Rd;
Seldef NSFT Rd,Rs;执行用户自定义后处理,结果存于Rd;
指令格式:Grd,0110,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段指示具体的移位操作:00表示左移操作,助记符为LLA,01表示逻辑右移操作,助记符为RL,10表示算术右移操作,助记符为RA,11表示不做任何移位操作,助记符为NSFT;Rd与Rs的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;
第2条,逻辑运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行逻辑运算和用户自定义的后处理操作Seldef,并将结果存储在目的寄存器Rd中;
指令助记符:
Seldef LNOT Rd,Rs;Rs求反并后处理,结果存于Rd;
Seldef LAND Rd,Rs;Rs、Rd“与”运算并后处理,结果存于Rd;
Seldef LOR Rd,Rs;Rs、Rd“或”运算并后处理,结果存于Rd;
Seldef LXOR Rd,Rs;Rs、Rd“异或”运算并后处理,结果存于Rd;
指令格式:Grd,0111,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段指示具体的逻辑运算:00表示逻辑非操作,助记符为LNOT,01表示逻辑与操作,助记符为LAND,10表示逻辑或操作,助记符为LOR,11表示逻辑异或操作,助记符为LXOR;Rd与Rs的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;第3条,算术运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行算术运算和用户自定义的后处理操作Seldef,并将结果存储在目的寄存器Rd中;
指令助记符:
Seldef ADD Rd,Rs;Rs+Rd并后处理,结果存于Rd;
Seldef ADC Rd,Rs;Rs+Rd+Cy并后处理,结果存于Rd;
Seldef SUB Rd,Rs;Rs-Rd并后处理,结果存于Rd;
Seldef SUBC Rd,Rs;Rs-Rd-Cy并后处理,结果存于Rd;
指令格式:Grd,1000,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段指示具体的算术运算:00表示加法操作,助记符为ADD,01表示带进位的加法操作,助记符为ADC,10表示减法操作,助记符为SUB,11表示带借位减法操作,助记符为SUBC;Rd与Rs的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07,其中Cy是专用指令集处理器指令系统中算术运算状态标志寄存器中的进位标志位AC;
第4条,乘法运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行乘法运算和用户自定义的后处理操作Seldef,并将结果存储在目的寄存器Rd中;
指令助记符:
Seldef MULT Rd,Rs;Rs×Rd并后处理,结果存于Rd;
指令格式:Grd,1001,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段固定填充为00;Rd与Rs的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;
第5条,乘后累加运算指令
指令功能:将源寄存器Rs的内容与目的寄存器Rd的内容进行乘法运算后与累加寄存器A中的内容相加,执行用户自定义的后处理操作Seldef,并将结果存储在累加寄存器A中;
指令助记符:
Seldef MAC Rd,Rs;(Rs×Rd)+A并后处理,结果存于累加寄存器A;
指令格式:Grd,1010,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段指示四种用户自定义后处理操作;2-bit的Aux1字段固定填充为00;Rd与Rs的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;
第6条,寄存器数据传输指令
指令功能:将源寄存器Rs的内容存储在目的寄存器Rd中;
指令助记符:
LD Rd,Rs;将Rs中的数据存储于Rd中;
指令格式:Grd,0001,Aux2,Rd,Aux1,Rs
格式说明:2-bit的Aux2字段用于选择目的寄存器类型;2-bit的Aux1字段选择源寄存器类型;具体的寄存器编码为:00表示通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;01表示数组指针寄存器,寄存器的编号为I0,M0,I1,M1,I2,M2,I3,M3;10表示输入/输出寄存器,寄存器的编号为Stout,Stin,Ioout,Ioin;11表示累加寄存器A或循环次数寄存器CE;
第7条,立即数高位装载指令
指令功能:将立即数高12/10-bit数据写入到高位立即数暂存寄存器Drt_data_h中;指令助记符:
LD Drt_data_h;将立即数高位数据写入高位立即数暂存寄存器中;
指令格式:Grd,0010,Drt_data_h;
格式说明:在完整应用模式下,Drt_data_h中存放立即数的高12-bit;在精简应用模式下,Drt_data_h中存放立即数的高10-bit;
第8条,立即数低位装载指令
指令功能:将立即数低6-bit数据与高位立即数暂存寄存器的内容拼接成18/16-bit立即数,存入目的寄存器Rd中;
指令助记符:
LD Rd,Drt_data_l;将拼接好的立即数存储于目的寄存器Rd中;
指令格式:Grd,0011,PD,Rd,Drt_data_1
格式说明:2-bit的PD字段在完整应用模式下固定填充00,在精简应用模式下,P字节填充为0,D字节为立即数bit5;Rd的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;
第9条,数据存储器读数据指令
指令功能:将数组读地址指针I0或I2指示的数据存储单元中的数据读出,存放于目的寄存器Rd中,并用I0+M0或I2+M2来更新I0或I2;
指令助记符:
LD Rd,(Ix);将Ix指示的存储单元中数据读出并存储于Rd中;
指令格式:Grd,0100,00,Rd,01,Ix
格式说明:Ix字段固定为0000/000或0100/100,0000/000表示I0地址指针寄存器,0100/100表示I2地址指针寄存器,I0为输入数据存储器读地址指针,I2为输出数据存储器读地址指针;M0是输入数据存储器读地址指针更新寄存器,与I0配对使用,M2是输出数据存储器读地址指针更新寄存器,与I2配对使用,M0与M2中的数据为2进制补码,是正数或负数;Rd的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;
第10条,数据存储器写数据指令
指令功能:将源寄存器中数据读出并写入到数组写地址指针I1或I3指示的数据存储单元中,并用I1+M1或I3+M3来更新I1或I3;
指令助记符:
LD(Ix),Rs;将Rs中的数据写入Ix指示的输入存储单元中;
指令格式:Grd,0101,01,Ix,00,Rs
格式说明:Ix字段固定为0010/010或0110/110,0010/010指示I1地址指针寄存器,0110/110指示I3地址指针寄存器,I1为输入数据存储器写地址指针,I3为输出数据存储器写地址指针;M1是输入数据存储器写地址指针更新寄存器,与I1配对使用,M3是输出数据存储器写地址指针更新寄存器,与I3配对使用,M1与M3中的数据为2进制补码,是正数或负数;Rs的类型只能是通用寄存器,寄存器的编号为Gr00~Gr15或Gr00~Gr07;
第11条,空操作指令
指令功能:保持原有状态,不做任何操作;
指令助记符:
NOP;保持原有状态,不做任何操作;
指令格式:Grd,0000,00,PAD,00,PAD
格式说明:PAD在完整模式下固定填充0000,在精简模式下固定填充000;
第12条,软件复位指令
指令功能:将程序计数器PC复位至指定的复位服务程序入口地址处用于软件调试;
指令助记符:
RST Num;将PC复位至指定的复位服务程序入口地址处;
指令格式:Grd,1111,00,PAD,00,Num
格式说明:PAD在完整模式下固定填充0000,在精简模式下固定填充000;Num在完整模式下为4-bit,在精简模式下为3-bit;
第13条,休眠指令
指令功能:程序计数器PC值保持不变,直到专用指令集处理器指定引脚处有事件产生,程序继续执行;
指令助记符:
IDEL Num;PC值保持不变,直至指定引脚处有事件产生;
指令格式:Grd,1110,00,PAD,00,Num
格式说明:PAD在完整模式下固定填充0000,在精简模式下固定填充000;Num在完整模式下为4-bit,在精简模式下为3-bit;
第14条,程序跳转指令
指令功能:若指令指定的算术运算状态标志位或衍生状态标志位有效,相应位置为“1”,程序跳转至指定地址处,即当前PC值+偏移地址Addr处执行,否则顺序执行;
指令助记符:
JZ Addr;若“零”标志位AZ置位则程序跳转;
JN Addr;若“符号”标志位AN置位则程序跳转;
JC Addr;若“进位”标志位AC置位则程序跳转;
JV Addr;若“溢出”标志位AV置位则程序跳转;
JGT Addr;若“大于”标志位GT置位则程序跳转;
JLT Addr;若“小于”标志位LT置位则程序跳转;
JMP Addr;无条件跳转;
指令格式:Grd,1101,CND,Addr
格式说明:完整应用模式下,目的地址Addr为9-bit有符号数;精简应用模式下,目的地址Addr为7-bit有符号数;
CND为对应于上述各条跳转指令的跳转条件--算术运算状态标志位代码:
000:“零”标志位AZ;
001:“符号”标志位AN;
010:“进位”标志位AC;
011:“溢出”标志位AV;
100:“大于”标志位GT;
101:“小于”标志位LT;
110:保留;
111:无条件标志NCND,此状态下,执行无条件跳转;
第15条,循环指令
指令功能:程序在指定长度Lp_lgth的循环体内往复执行,直至循环计数器为“0”:
指令助记符:
D0 Lp_lgth UNTL CE;程序循环执行,直至CE为“0”;
指令格式:Grd,1100,Lp_lgth
格式说明:完整应用模式下,循环体长度Lp_lgth为12-bit;精简应用模式下,循环体长度Lp_lgth为10-bit;循环指令无软件开销,允许两重循环嵌套;
第16条,子程序调用与返回指令
指令功能:若指令字中指示位C/R状态为0,则将当前程序计数器PC之值+1后压入堆栈以实现返回地址保存操作,程序跳转至指定地址处执行以实现子程序调用,所述指定地址为当前PC值+偏移地址Addr;若指令字中指示位C/R状态为1,将堆栈顶部数据内容弹出并载入程序计数器PC中,继续执行程序以实现子程序返回;
指令助记符:
CALL Addr;子程序调用;
RTS;子程序返回;
指令格式:Grd,1011,C/R,Addr
格式说明:C/R位为“0”时,执行子程序调用,为“1”时,执行子程序返回;完整应用模式下,子程序调用地址Addr为11-bit无符号数;精简应用模式下,子程序调用地址Addr为9-bit无符号数。
2.根据权利要求1所述的基于嵌入式专用指令集处理器的指令集编码方法,其特征在于,所述步骤(2)中的算术逻辑运算类、数据交换类和程序定序类三大类指令均为单字长、单周期格式;其中,算术逻辑运算类指令包括移位运算指令、逻辑运算指令、算术运算指令、乘法运算指令和乘后累加运算指令,除了能完成相关的算术逻辑运算外,还完成用户自己定义四种后处理操作;数据交换类指令包括寄存器数据传输指令、立即数高位装载指令、立即数低位装载指令、数据存储器读数据指令和数据存储器写数据指令;程序定序类指令包括空操作指令、软件复位指令、休眠指令、无条件/有条件程序跳转指令、循环指令、子程序调用与返回指令。
3.根据权利要求1所述的基于嵌入式专用指令集处理器的指令集编码方法,其特征在于,所述步骤(3)中的通用寄存器在完整应用模式下设置16个,在精简应用模式下设置8个。
4.根据权利要求1所述的基于嵌入式专用指令集处理器的指令集编码方法,其特征在于,所述步骤(4)中的保护性指令字段为可选字段,用于构建具有指令自主能力的单指令流-多数据流(SIMD)并行处理系统;若不采用保护性指令执行方式,完整应用模式与精简应用模式两种模式的指令字长则缩短至16-bit和14-bit。
5.根据权利要求1所述的基于嵌入式专用指令集处理器的指令集编码方法是基于嵌入式专用指令集处理器实现的,其电路体系结构包括算术运算单元、通用寄存器单元、数据地址产生单元、程序定序单元、输入/输出数据存储器单元、程序存储器单元和数据交换接口单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110120737.3A CN102221987B (zh) | 2011-05-11 | 2011-05-11 | 基于嵌入式专用指令集处理器的指令集编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110120737.3A CN102221987B (zh) | 2011-05-11 | 2011-05-11 | 基于嵌入式专用指令集处理器的指令集编码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102221987A CN102221987A (zh) | 2011-10-19 |
CN102221987B true CN102221987B (zh) | 2014-10-01 |
Family
ID=44778548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110120737.3A Expired - Fee Related CN102221987B (zh) | 2011-05-11 | 2011-05-11 | 基于嵌入式专用指令集处理器的指令集编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102221987B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013095658A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
US10169044B2 (en) * | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN105701298A (zh) * | 2016-01-15 | 2016-06-22 | 天津大学 | 基于PowerPC SoC架构的仿真平台设计方法 |
CN106406423B (zh) * | 2016-08-30 | 2019-05-07 | 长沙丰灼通讯科技有限公司 | 一种软件算法模拟同步总线产生时钟信号的方法 |
CN107145334B (zh) * | 2017-04-26 | 2020-10-09 | 龙芯中科技术有限公司 | 常量获取方法、装置、处理器及计算机可读存储介质 |
CN109324984B (zh) * | 2018-09-14 | 2020-06-26 | 北京地平线机器人技术研发有限公司 | 在卷积运算中使用循环寻址的方法和装置 |
CN111258643B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN110175048A (zh) * | 2019-05-15 | 2019-08-27 | 童先娥 | 一种指令处理方法及处理器 |
CN112217643B (zh) | 2019-07-09 | 2021-12-10 | 华为技术有限公司 | 运算方法、装置及设备 |
CN110990060B (zh) * | 2019-12-06 | 2022-03-22 | 北京瀚诺半导体科技有限公司 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
CN111930426A (zh) * | 2020-08-14 | 2020-11-13 | 西安邮电大学 | 一种可重构计算的双模指令集架构及其应用方法 |
CN112269596B (zh) * | 2020-10-19 | 2023-11-28 | 童先娥 | 一种指令处理方法及处理器 |
CN112540793A (zh) * | 2020-12-18 | 2021-03-23 | 清华大学 | 支持多访存模式的可重构处理单元阵列及控制方法、装置 |
CN112783556B (zh) * | 2021-01-06 | 2023-04-07 | 南阳理工学院 | 信息处理方法、信息处理装置及终端设备 |
CN114116005B (zh) * | 2021-11-29 | 2022-12-23 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN101246435A (zh) * | 2008-02-25 | 2008-08-20 | 北京理工大学 | 一种支持高级语言部分语句功能的处理器指令集 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8250656B2 (en) * | 2007-11-21 | 2012-08-21 | Mikhail Y. Vlasov | Processor with excludable instructions and registers and changeable instruction coding for antivirus protection |
-
2011
- 2011-05-11 CN CN201110120737.3A patent/CN102221987B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN101246435A (zh) * | 2008-02-25 | 2008-08-20 | 北京理工大学 | 一种支持高级语言部分语句功能的处理器指令集 |
Also Published As
Publication number | Publication date |
---|---|
CN102221987A (zh) | 2011-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102221987B (zh) | 基于嵌入式专用指令集处理器的指令集编码方法 | |
CN103150146B (zh) | 基于可扩展处理器架构的专用指令集处理器及其实现方法 | |
EP3005139B1 (en) | Incorporating a spatial array into one or more programmable processor cores | |
CN101299185B (zh) | 一种基于cisc结构的微处理器结构 | |
CN101751244B (zh) | 微处理器 | |
CN108268278A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
BRPI0807951B1 (pt) | Processador de multimídia multi-encadeado sob demanda | |
CN109478139A (zh) | 用于共享存储器中的访问同步的装置、方法和系统 | |
CN101116053A (zh) | 适用于高效数字信号处理的数据处理器及其方法 | |
CN101504599A (zh) | 适于数字信号处理应用的专用指令集微处理系统 | |
CN103777923A (zh) | Dma向量缓冲区 | |
CN101178644A (zh) | 一种基于复杂指令集计算机结构的微处理器架构 | |
ES2934513T3 (es) | Sistemas y métodos para omitir operaciones matriciales intrascendentes | |
CN102043761A (zh) | 一种基于可重构技术的傅立叶变换的实现方法 | |
BR102020019649A2 (pt) | aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
CN109947481A (zh) | 用于处理分数倒数操作的装置和方法 | |
CN103279323B (zh) | 一种加法器 | |
CN103970508A (zh) | 一种精简的微处理器ip核 | |
WO2009141612A2 (en) | Improvements relating to data processing architecture | |
CN100454319C (zh) | 一种导航系统的微型处理器ip核设计方法 | |
CN101739383B (zh) | 一种可配置处理器体系结构和控制方法 | |
CN104714773B (zh) | 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法 | |
Song et al. | Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141001 |
|
CF01 | Termination of patent right due to non-payment of annual fee |