一种16位微处理器指令集的制作方法

文档序号:6604890阅读:292来源:国知局
专利名称:一种16位微处理器指令集的制作方法
技术领域
本发明属于计算机技术领域,涉及一种微处理器指令集,特别涉及一种16位微处理器指令集。
(2)而有的计算机指令系统又过于简单,指令功能太弱,不能实现应有的功能。有时为了实现一个既定的功能,必须使用大量的程序代码来完成,从而影响了处理速度,并占用大量的存储空间。
(3)采用传统计算机体系结构的单片计算机,一般来讲指令系统简单,各部件的操作是串行的,指令以顺序方式执行,指令吞吐率低,整个系统的工作效率比较低。
(4)由于结构复杂,因此实现结构也相对复杂,不利于系统集成。
在要求不断提速的现代工业控制中,特别是采用片上系统(SOC)技术进行系统集成设计时,上述计算机显得力不从心,急需一种简单、高效的面向工业控制的微处理器来代替,LS-IPU16微处理器应运而生。
目前计算机系统指令的编码使用的编码方式有三种固定长编码、哈夫曼编码和扩展编码。它们都各有缺点(1)固定长编码方式即操作码的长度固定,且集中放在指令字的一个字段中。指令操作码的长度决定了指令系统中完成不同操作的指令数量。若某机器的操作码长N位,则它最多可以拥有2N条指令。固定长编码方式对简化硬件设计,减少指令译码时间非常有利,但这种指令格式不利于指令系统的扩充。
(2)哈夫曼编码指令格式有效地降低了指令操作码的平均长度,缩短了程序的存储空间,但这种指令格式有浪费的操作码点。
(3)码格式是一种可变格式,即操作码的长度可变,且分散在指令的不同字段中。其主要思想是用一类指令的某个或某些码点作为别的指令类的扩展码点。扩展编码指令格式有利于指令格式的设计和指令系统的扩充,但指令格式长度不规整。
实现本发明的技术方案是,LS-IPU16微处理器的指令集,其特点是,该指令集采用RISC体系结构,每条指令均为单字长、单周期;包括数据传送、数学逻辑运算、转移控制、立即数操作及处理器控制等5类共37条指令,构成了一个完整的RISC处理器的指令集。
本发明的微处理器指令集,和现有技术相比,其优点是(1)该微处理器指令集的指令长度固定,均为单字指令长,即16位,每条指令只需对程序存储器访问一次。
(2)由于该处理器采用流水线技术,除了转移类指令外,其余指令均在一个指令周期内完成。
(3)该微处理器指令集种类少,包括五类37条指令。但是它能够囊括象8031处理器指令集的所有指令功能。
(4)微处理器指令集一条指令可包含一个以上的功能。例如运算类指令除了执行运算外,还附带了移位功能;跳转类指令除了执行跳转外,还附带了是否返回功能。这样一个指令周期就可完成两个功能,再加上流水机制,对于实现同种功能的这样一条指令就等同于类8031指令系统的四条指令的执行功能。
(5)该微处理器指令集只有取数和存数指令访问存储器,其余指令的操作均在寄存器之间进行。从而提高了处理器的执行效率。
(6)寻址方式少。该指令集只使用了四种寻指方式立即数寻址、直接寻址、间接寻址、相对寻址。
具体实施例方式
在进行微处理器的设计时,首先要解决指令系统的确定和指令编码的设计。申请人采用本发明完成了LS-IPU16微处理器的指令集,其指令集考虑到其通用性、高速性、高效性、易实现性,采用了RISC体系结构,每条指令均为单字长、单周期。通过选择使用频度较高的简单指令及一些很有用但不复杂的指令,LS-IPU16微处理器的指令集,包括数据传送、数学逻辑运算、转移控制、立即数操作及处理器控制等5类共37条指令,构成了一个完整的RISC处理器的指令集。
LS-IPU16微处理器指令集编码时将固定长编码、哈夫曼编码和扩展编码这三种编码方式相结合,避开它们的缺点,汲取优点。采用哈夫曼思想,将常用的指令用短码表示,如立即数装入指令;将不常用的指令用长码表示如杂类指令。将数据传送类、转移类指令、算术逻辑类类型,用四位基本码编码,而指令的其余字段可用于操作数地址或扩展本类指令的所有指令。
LS-IPU16微处理器包含128个寄存器,为了有效地利用指令字长,规定前16个寄存器为通用寄存器(地址为0~15),可以作为算术逻辑运算的操作数,也可以作为地址寄存器或与存储器进行数据传送;地址为16~127的寄存器则只能与16个通用寄存器进行数据传送。
LS-IPU16微处理器的指令格式及编码如下,其中
R七位二进制数表示的寄存器号Rb四位二进制数表示的用作间接寻址的寄存器号Rd四位二进制数表示的目的操作数寄存器号Rs四位二进制数表示的一个源通用寄存器或专用寄存器A、立即数装入指令①立即数→内部寄存器指令助记符LDM Rd,#imm10指令格式01,Rd,#imm10功能将10位的立即数送入内部寄存器;B、数据传送类指令①内部寄存器寄存器指令助记符LD Rd,R及ST Rd,R指令格式00,Rd,00,D,R(D为1表示ST,为0表示LD)功能LD将寄存器R的内容送到内部寄存器Rd;ST将内部寄存器Rd的内容送到寄存器R;②内部寄存器存储器指令助记符LD Rd,@Rb及ST Rd,@Rb指令格式00,Rd,01,D,000,RbD为1表示ST,为0表示LD功能LD将Rb所指的存储器的内容送往内部寄存器Rd;ST将内部寄存器Rd的内容送往Rb所指的存储器单元;③堆栈操作包括压栈和出栈指令指令助记符PUSH Rd及POP Rd指令格式00,Rd,11,D,000,0001(D为1表示PUSH,为0表示POP)功能PUSH将内部寄存器Rd的内容压入栈顶;
POP将栈顶内容弹到内部寄存器Rd;C、算术逻辑运算类指令为了减少指令种类,将移位操作附加于算术逻辑运算之后;①加“1”指令指令助记符INC Rs(,shiftcode)功能指定寄存器Rs内容加1,按指定方式移位后送到该寄存器;②减“1”指令指令助记符DEC Rs(,shiftcode)功能指定寄存器Rs内容减1,按指定方式移位后送到该寄存器;③加法或带进位的加法指令助记符ADD Rs(,shiftcode)功能累加器ACC内容加指定寄存器Rs内容,按指定方式移位后送到累加器寄存器;指令助记符ADDC Rs(,shiftcode)功能累加器ACC内容加指定寄存器Rs内容再加进位后,再按指定方式移位后送到累加器ACC;④减法或带进位的减法指令助记符SUB Rs(,shiftcode)功能累加器ACC内容减指定寄存器Rs内容,按指定方式移位后送到累加器ACC;指令助记符SUBC Rs(,shiftcode)功能累加器ACC内容减指定寄存器Rs内容再减进位后,再按指定方式移位后送到累加器ACC;⑤逻辑与符AND Rs(,shiftcode)功能累加器ACC内容逻辑与指定寄存器Rs内容后,再按指定方式移位后送到累加器ACC;⑥逻辑或指令助记符OR Rs(,shiftcode)功能累加器ACC内容逻辑或指定寄存器Rs内容后,再按指定方式移位后送到累加器ACC;⑦逻辑异或指令助记符XOR Rs(,shiftcode)功能累加器ACC内容逻辑异或指定寄存器Rs内容后,再按指定方式移位后送到累加器ACC;⑧逻辑求反指令助记符NOT Rs(,shiftcode)功能将指定寄存器Rs内容各位取反后,再按指定方式移位后送到累加器寄存器。
⑨移位指令助记符SHT Rs(,shiftcode)功能将指定寄存器Rs内容按指定方式移位;⑩字节交换指令助记符SWAP Rs功能将内部寄存器Rs的高低字节交换。
算术逻辑运算指令格式11,Rs,00,LAOP,ShiftMode格式说明LAOP是四位二进制数表示的算术或逻辑运算类型代码0000INC0010DEC1000ADD1001ADDC1010SUB1011SUBC 1101AND1110OR
1100XOR01 10NOT0100SHT或SWAPShiftMode占四位,规定了指令执行时的移位方式0101逻辑左移一位,低位补0,D15送BF0100逻辑右移一位,高位补0,D0送BF0011循环左移一位,不包括BF0010循环右移一位,不包括BF0111循环左移一位,包括BF,D15送BF0110循环右移一位,包括BF,D0送BF1000高低字节交换,不影响BF1111和其他不进行移位D、转移类指令相对地址短转移、寄存器转移、直接地址长转移三种指令①无条件转移指令助记符JMP[S] #imm13指令格式10,S,#imm13S返回地址存储标识,为1保存返回地址,0不保存功能程序转移到指定的存储器地址。该地址是指令中13位立即数操作数。
②寄存器转移指令助记符JMP[S] Rs指令格式11,S000,10,0000,Rs(S同上)功能程序转移到寄存器内容所指的存储器地址。
③条件转移指令助记符
JZ #imm8 或 JZ 标号 (若ZF标志为真即‘1’转移)JNZ #imm8 或 JNZ 标号 (若ZF标志为假即‘0’转移)JC #imm8 或 JC 标号 (若CF标志为真即‘1’转移)JNC #imm8 或 JNC 标号 (若CF标志为假即‘0’转移)JB #imm8 或 JB 标号 (若BF标志为真即‘1’转移)JNB #imm8 或 JNB 标号 (若BF标志为假即‘0’转移)JO #imm8 或 JO 标号 (若OF标志为真即‘1’转移)JNO #imm8 或 JNO 标号 (若OF标志为假即‘0’转移)指令格式11,S000,10,0000,Rs(S同上)功能当测试条件成立时,程序转移到程序计数器加相对偏移量的存储器的地址;对零标志、进位标志、移出位标志、溢出标志进行测试;E、杂类①开/关中断指令指令助记符SETI及CLRI指令格式11,0000,11,0000,000SS=1表示SETI开中断,为0表示CLRI关中断指令功能SETI设置中断允许标志为允许;CLRI设置中断允许标志为禁止;②清除中断服务标志指令指令助记符CLRIS指令格式11,0001,11,0000,0000功能清除中断用服务标志IS,该标志只能由硬件置位,软件清除;③清除堆栈溢出标志指令指令助记符CLRSO指令格式11,0010,11,0000,0000功能清除堆栈标志SO,该标志只能由硬件置位,软件清除;④停机指令指令助记符HLT指令格式11,0011,11,0000,0001功能使LS-IPU16处理器进入休眠状态,冻结LSIPU16处理器核的工作时钟;⑤软中断指令指令助记符INT #no指令格式11,1111,11,1111,#no功能转入#no号中断服务程序,并通过设置中断服务标志来禁止后续中断;⑥NOP指令指令助记符NOP指令格式00,0000,00,0000,0000功能该指令只是一个伪操作指令,该指令不实现任何操作,占用一个指令周期。
⑦返回指令指令助记符RET指令格式1101,0011,0000,0000功能从堆栈中弹出返回地址到PC中,实现中断的返回。4.替换方案(1)可增加乘除法指令。
(2)可以简单地增加或扩充专用指令。
权利要求
1.一种16位微处理器的指令集,其特征在于,该指令集采用RISC体系结构,每条指令均为单字长、单周期;系统包括数据传送、数学逻辑运算、转移控制、立即数操作及处理器控制等5类共37条指令,构成了一个完整的RISC处理器的指令集;该16位微处理器的指令格式及编码如下,其中R 七位二进制数表示的寄存器号Rb四位二进制数表示的用作间接寻址的寄存器号Rd四位二进制数表示的目的操作数寄存器号Rs四位二进制数表示的一个源通用寄存器或专用寄存器A、立即数装入指令①立即数→内部寄存器指令助记符LDM Rd,#imm10指令格式 01,Rd,#imm10功能将10位的立即数送入内部寄存器;B、数据传送类指令①内部寄存器寄存器指令助记符LD Rd,R及STRd,R指令格式 00,Rd,00,D,R(D为1表示ST,为0表示LD)功能LD将寄存器R的内容送到内部寄存器Rd;ST将内部寄存器Rd的内容送到寄存器R;②内部寄存器存储器指令助记符LD Rd,@Rb及ST Rd,@Rb指令格式 00,Rd,01,D,000,RbD为1表示ST,为0表示LD功能LD将Rb所指的存储器的内容送往内部寄存器Rd;ST将内部寄存器Rd的内容送往Rb所指的存储器单元;③堆栈操作包括压栈和出栈指令指令助记符PUSH Rd及POP Rd指令格式00,Rd,11,D,000,0001(D为1表示PUSH,为0表示POP)功能PUSH将内部寄存器Rd的内容压入栈顶;POP将栈顶内容弹到内部寄存器Rd;C、算术逻辑运算类指令为了减少指令种类,将移位操作附加于算术逻辑运算之后;①加“1”指令指令助记符INC Rs(,shiftcode)功能指定寄存器Rs内容加1,按指定方式移位后送到该寄存器;②减“1”指令指令助记符DEC Rs(,shiftcode)功能指定寄存器Rs内容减1,按指定方式移位后送到该寄存器;③加法或带进位的加法指令助记符ADD Rs(,shiffcode)功能累加器ACC内容加指定寄存器Rs内容,按指定方式移位后送到累加器寄存器;指令助记符ADDC Rs(,shiffcode)功能累加器ACC内容加指定寄存器Rs内容再加进位后,再按指定方式移位后送到累加器ACC;④减法或带进位的减法指令助记符SUB Rs(,shiffcode)功能累加器ACC内容减指定寄存器Rs内容,按指定方式移位后送到累加器ACC;指令助记符SUBC Rs(,shiftcode)功能累加器ACC内容减指定寄存器Rs内容再减进位后,再按指定方式移位后送到累加器ACC;⑤逻辑与符AND Rs(,shiftcode)功能累加器ACC内容逻辑与指定寄存器Rs内容后,再按指定方式移位后送到累加器ACC;⑥逻辑或指令助记符OR Rs(,shiftcode)功能累加器ACC内容逻辑或指定寄存器Rs内容后,再按指定方式移位后送到累加器ACC;⑦逻辑异或指令助记符XOR Rs(,shiftcode)功能累加器ACC内容逻辑异或指定寄存器Rs内容后,再按指定方式移位后送到累加器ACC;⑧逻辑求反指令助记符NOT Rs(,shiftcode)功能将指定寄存器Rs内容各位取反后,再按指定方式移位后送到累加器寄存器。⑨移位指令助记符SHT Rs(,shiftcode)功能将指定寄存器Rs内容按指定方式移位;⑩字节交换指令助记符SWAP Rs功能将内部寄存器Rs的高低字节交换;算术逻辑运算指令格式11,Rs,00,LAOP,ShiftMode格式说明LAOP是四位二进制数表示的算术或逻辑运算类型代码0000INC 0010DEC 1000ADD 1001ADDC1010SUB 1011SUBC 1101AND 1110OR1100XOR 0110NOT 0100SHT或SWAPShiftMode占四位,规定了指令执行时的移位方式0101逻辑左移一位,低位补0,D15送BF0100逻辑右移一位,高位补0,D0送BF0011循环左移一位,不包括BF0010循环右移一位,不包括BF0111循环左移一位,包括BF,D15送BF0110循环右移一位,包括BF,D0送BF1000高低字节交换,不影响BF1111和其他不进行移位D、转移类指令相对地址短转移、寄存器转移、直接地址长转移三种指令①无条件转移指令助记符JMP[S] #imm13指令格式10,S, #imm13S返回地址存储标识,为1保存返回地址,0不保存功能程序转移到指定的存储器地址。该地址是指令中13位立即数操作数。②寄存器转移指令助记符JMP[S] Rs指令格式11,S000,10,0000,Rs(S同上)功能程序转移到寄存器内容所指的存储器地址。③条件转移指令助记符JZ #imm8 或 JZ 标号 (若ZF标志为真即‘1’转移)JNZ #imm8 或 JNZ 标号 (若ZF标志为假即‘0’转移)JC #imm8 或 JC 标号 (若CF标志为真即‘1’转移)JNC #imm8 或 JNC 标号 (若CF标志为假即‘0’转移)JB #imm8 或 JB 标号 (若BF标志为真即‘1’转移)JNB #imm8 或 JNB 标号 (若BF标志为假即‘0’转移)JO #imm8 或 JO 标号 (若OF标志为真即‘1’转移)JNO #imm8 或 JNO 标号 (若OF标志为假即‘0’转移)指令格式11,S000,10,0000,Rs(S同上)功能当测试条件成立时,程序转移到程序计数器加相对偏移量的存储器的地址;对零标志、进位标志、移出位标志、溢出标志进行测试;E、杂类①开/关中断指令指令助记符SETI及CLRI指令格式11,0000,11,0000,000SS=1表示SETI开中断,为O表示CLRI关中断指令功能SETI设置中断允许标志为允许;CLRI设置中断允许标志为禁止;②清除中断服务标志指令指令助记符CLRIS指令格式11,0001,11,0000,0000功能清除中断用服务标志IS,该标志只能由硬件置位,软件清除;③清除堆栈溢出标志指令指令助记符CLRSO指令格式11,0010,11,0000,0000功能清除堆栈标志SO,该标志只能由硬件置位,软件清除;④停机指令指令助记符HLT指令格式11,0011,11,0000,0001功能使LS-IPU16处理器进入休眠状态,冻结LS IPU16处理器核的工作时钟;⑤软中断指令指令助记符INT #no指令格式11,1111,11,1111,#no功能转入#no号中断服务程序,并通过设置中断服务标志来禁止后续中断;⑥NOP指令指令助记符NOP指令格式00,0000,00,0000,0000功能该指令只是一个伪操作指令,该指令不实现任何操作,占用一个指令周期;⑦返回指令指令助记符RET指令格式1101,0011,0000,0000功能从堆栈中弹出返回地址到PC中,实现中断的返回。
全文摘要
本发明涉及一种16位微处理器指令集,采用RISC体系结构,每条指令均为单字长、单周期。包括数据传送、数学逻辑运算、转移控制、立即数操作及处理器控制5类共37条指令,构成了完整的RISC处理器的指令集。该16位微处理器指令集的编码将固定长编码、哈夫曼编码和扩展编码三种编码方式相结合,将常用的指令用短码表示,将数据传送类、转移类指令、算术逻辑类类型,用四位基本码编码,而指令的其余字段可用于操作数地址或扩展本类指令的所有指令。指令集规定16位微处理器所包含的128个寄存器,前16个寄存器为通用寄存器,可以作为算术逻辑运算的操作数,也可以作为地址寄存器或与存储器进行数据传送;其余的寄存器则只能与前16个通用寄存器进行数据传送。
文档编号G06F9/30GK1438574SQ0311450
公开日2003年8月27日 申请日期2003年2月21日 优先权日2003年2月21日
发明者张伟功, 于伦正, 段青亚, 刘曙蓉 申请人:中国航天科技集团公司第九研究院七七一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1