EISC理念与动作表功能设计
2015-02-20黄志钢于林鑫
黄志钢,于林鑫
(沈阳理工大学 信息科学与工程学院,辽宁 沈阳 110159)
EISC理念与动作表功能设计
黄志钢,于林鑫
(沈阳理工大学 信息科学与工程学院,辽宁 沈阳 110159)
为提高处理器的性能,提出了EISC(Efficiency Instruction Set Computer)理念,并针对普通逻辑的处理,提出了动作表功能及其对应的指令和硬件,规定了动作表指令的助记符和机器码,设计了动作表状态机的状态转移图,用Verilog语言实现了这个功能,得到了Modelsim仿真结果,表明处理数据的能力和效率都有了质的提升。
处理器;EISC;动作表;助记符;机器码;Verilog
从现阶段的主流体系结构讲,处理器架构分为CISC及RISC两大类,CISC是传统处理器,RISC是在指令级别上对CISC的改进。随着计算机技术的发展,在通用处理器上嵌入专用处理器及专用指令集的技术得到了迅速的发展及使用,它们比通用处理器及通用指令集的处理效率要高得多[1],是在功能层级上的改进。1997到1999年,Intel公司在奔腾CPU产品中先后推出了多媒体扩展系统MMX指令集及其相应的硬件和数据流单指令序列扩展指令(SSE)。MMX是把多媒体信息计算提取出来作为一个功能为其设计了专用的硬件和软件,增强了处理器对多媒体信息的处理能力;SSE则是把浮点计算提取出来作为一个功能,有效地提高了浮点运算速度。美国TI公司的TMS320系列DSP也使用专用数字信号处理器实现快速傅立叶变换(FFT)的功能,极大地提高了DFT变换的效率。
MMX、SSE及DSP专用信号处理器的共同特点是使用专用硬件和专用指令集来替代一段程序来提高处理器的性能,与RISC的指令层的优化相比,在功能层的优化空间更大。把过去用通用处理器、通用指令集完成的某些工作剥离出来使用专用处理器和专用指令集来执行,其性能的改善远远高于对通用指令集的优化。而且使用MMX、SSE及DSP专用信号处理器处理数据时,其MIPS指标不仅没有上升反而下降,所以,不能再用MIPS来评价其性能,而应改用MDPS(Million Data Per Second)来评价。这部分设计思想不同于CISC和RISC的体系结构,把它称为EISC(Efficiency Instruction Set Computer),即高效率指令集处理器。文中介绍了基于EISC理念的动作表功能设计,并利用软件仿真实现其功能。如果应用在专用处理器上,基于EISC理念的动作表指令可以显著提升处理器处理布尔计算的效率。
1 功能设计
受MMX、SSE及DSP专用信号处理器的启发,把程序中大量使用的布尔计算提取出来作为功能,为其设计专用软件和相应的硬件。布尔运算可以抽象成组合电路中的真值表和时序电路的状态表,把它们统一称为动作表。处理器如果能直接执行动作表指令,则在编程语言中就可以把复杂的多分支逻辑判断表达得极为简洁,显著提升处理布尔计算的效率。动作表功能设计包括指令设计和相关硬件设计,指令设计规定了指令的编码格式、助记符和机器码等;硬件设计是在FPGA硬件基础上进行Verilog硬件描述语言设计。
2 指令设计
规定:动作表是由左半部的条件字和右半部的动作字组成。动作表指令是一种高效率的专用指令,助记符为ACTAB。对动作表进行操作时,把输入变量当前值与动作表的条件字进行匹配,如果匹配成功,则输出条件字对应的动作字并结束指令,否则跳到下一行条件字继续比对,以此类推,直到完成最末行。
2.1 ACTAB指令的助记符
以一个3输入、2输出、2行的ACTAB为例,其动作表与指令助记符如图1所示。
X2X1X0Y1Y01011-0-1/0
ACTAB(X2,X1,X0)→(Y1,Y0)
{
(1,0,1)→(1,-)
(0,-,1)→(/,0)
}
图1 3输入、2输出、2行的动作表与指令助记符
由ACTAB的助记符格式可知,对于用户来说,ACTAB指令操作方便,容易理解,只要了解数字电路真值表相关知识,便可按需使用[2]。
2.2 实例中ACTAB指令的存储码
ACTAB指令的动作行输入为:“0”、“1”、“-”分别是“反变量”、“正变量”、“无变量”,输入变量必须用两位二进制数表示;动作行输出为:“0”、“1”、“-”、“/”分别是“清0”、“置1”、“不变”、“取反”,输出变量也必须用两位二进制数表示。3输入、2输出、2行ACTAB的存储码及其存储规则如图2所示。
X2X1X0Y1Y0高位00001低位10111高位01110低位0?000
X01-Y01/-高位001高位0011低位01?低位0101
图2 存储码及其存储规则
由ACTAB的存储码格式可知,对于机器来说,把位变量拼接成字变量,并用字变量的方式进行处理,指令数和总线操作次数都明显减少,即强调了对有效数据的处理,功能相当于SIMD(单指令多数据流)指令。
2.3 实例中ACTAB指令的可执行码(机器码)
3输入、2输出、2行ACTAB指令的可执行码与ACTAB使用的数据区如表1所示。
表1 ACTAB的数据地址及内容
由表1可知,当RISC使用展开式的写法,在完成单独一个结果的时候,DIP值的最理想情况为1;当有N个结果时,数据会被重复读取N次,DIP值降为1/N。而对于有M个输入、N个输出变量、L行时,在EISC的ACTAB指令中,除了4个字(指令操作码、输入变量个数、输出变量、行数)外,其余2L个都为数据,所以理论上DIP值可以逼近(N+M+L)/4,实际为(N+M+L/2)/4,远大于1。
3 基于EISC理念的ACTAB指令的设计思想(硬件设计)
3.1 行为分析描述
该PLC处理器执行ACTAB指令的实现主要分为三个操作:读取输入操作、逐行比较操作、修改返回操作,且每个阶段都有相应的计数器。
(1)读取输入操作:根据用户提供的ACTAB指令指明的地址,读取输入变量的个数,然后逐个把输入变量提取到临时寄存器中。
(2)逐行比较操作:读取ACTAB指令行数,并逐行读取条件字,逐行检测是否与条件字匹配。如果匹配,则转向(3);如果临时寄存器内容与所有条件字都不匹配,则该指令结束。
(3)修改返回操作:读取输出变量个数,并按照输出变量地址依次将每一位输出变量读取到临时寄存器里;读取匹配行的动作字,并计算出输出变量的动作结果,最后将该结果修改并返回。
3.2 状态转移过程
将以上步骤细化为20个时序状态S0,S1…S19,并在Cyclone IV芯片上用Verilog的状态机实现[3]。
4 仿真过程及结果分析
4.1 仿真过程
对2行5列的ACTAB使用Modelsim SE进行功能仿真验证[4]。仿真结果如图4所示。
图3 ACTAB指令的状态转移图
图4 2行5列ACTAB的仿真结果
由图4可看出,标志信号actab_flag在下降沿的瞬间,动作表命令进入S0状态,状态机进行初始化。待actab_flag再次为高电平并且actab_clk在第一个上升沿时,状态开始转移。
S1结束时:输入变量X个数0x0003读入到临时寄存器中;指令指针寄存器的值作为输入变量X的基地址读入到指令指针寄存器中,状态转移到S2;
S2结束时:9个输入变量以四位十六进制数0x01a0已经全部读入到临时寄存器中,状态转移到S3;
S3结束时:动作表行数0x0002读入到临时寄存器,状态转移到S4;
S4结束时:输入变量X的第一行的高行值0x0000读入到临时寄存器中,状态转移到S5;
S5结束时:输入变量X的第一行的低行值0x0140读入到临时寄存器中,状态转移到S6;
S6结束时:存放第一行检验结果的临时寄存器的值为0xff1f,由此可见第一行不是输入变量X的匹配行;经过S7、S8两个状态的延时后,状态转移回到S4;
S4结束时:输入变量X的第二行的高行值0x0080读入到临时寄存器中,状态转移到S5;
S5结束时:输入变量X的第二行的低行值0x01a0读入到临时寄存器中,状态转移到S6;
S6结束时:存放第二行检验结果的临时寄存器中的值为0xffff,由此可见第二行是输入变量X的匹配行,状态转移到S7后依次转移到S10;
S10结束时:输出变量Y的个数0x0002读入到临时寄存器中;指令指针寄存器的值作为输出变量Y的基地址读入到指令指针寄存器中,状态转移到S11;
S11结束时:4个输出变量以四位十六进制数0x0002已经全部读入到临时寄存器中;经过S12的指令指针寄存器调整之后,状态转移到S13;
S13结束时:输出变量Y的对应行的高行值0x000a读入到临时寄存器中,状态转移到S14;
S14结束时:输出变量Y的对应行的低行值0x0003读入到临时寄存器中,状态转移到S15;
S15结束时:输出变量Y的动作结果求出为0x000b,状态转移到S16;
S16结束时:输出变量Y的动作结果全部按位修改完毕,状态转移到S19,结束。
4.2 结果分析
综上所述,采用PLC的通用语句表对M个输入、N个输出变量、L行的动作表进行操作时,只能采取逐个变量读取、计算、写回的过程,若采用平铺直线无循环的写法,有(M+N)×L×2个存储器操作来取址取数[5];而采用ACTAB进行操作时,仅需2×(N+M+L)个总线周期,大幅度提升了处理布尔计算的速度。由于寄存器读写速度远高于存储器读写速度,所以其运行周期也大大缩短。
高效率指令集处理器在理论上处理任务时的代价(代码空间、数据空间、代码传送带宽、数据传送带宽、运行时间)比传统的处理器要小很多,避免代码和数据的无效或低效传输,可以做到批量处理或者流水线处理,有更高的数据指令比DIR(Data Instructions Ratio),而且寄存器的读写速度远高于存储器的读写速度,所以其运行时间也会大幅度缩短。
5 结束语
利用Modelsim SE验证了ACTAB指令逻辑可行,读写数据正确,验证了所设计的处理器ACTAB指令功能的可行性。与传统PLC语句表处理数据进行对比,理论上能提高MDPS,无代码膨胀,减少数据传送和指令传送的工作量,降低系统空间的占用率,大幅度提高处理数据的速度。所以,在相同的FPGA平台上,基于EISC理念的ACTAB指令,处理布尔计算的能力会有质的提升。在后续的研究中,会对“链表搜索”、“文本查找”等专用指令功能进行设计。
[1]晏小波.FT64流处理技术:体系结构,编程语言,编译技术及编程方法[D].长沙:国防科技大学,2007.
[2]郑阳.基于华P语言的PLC核研究与设计[D].沈阳:沈阳理工大学,2010.
[3]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2008.
[4]吴厚航.深入浅出玩转FPGA[M].北京:北京航空航天大学出版社,2010.
[5]吴中俊,黄永红.可编程序控制器原理及应用[M].北京:机械工业出版社,2008.
(责任编辑:马金发)
The Concept of Efficiency Instruction Set Computer and the Functional Design of the Action Table
HUANG Zhigang,YU Linxin
(Shenyang Ligong University,Shenyang 110159,China)
In order to improve the performance of the processor,EISC(Efficiency Instruction Set Computer) concepts were proposed,for the general logic,the functions and the corresponding instructions and hardware of the Action Table were proposed.The mnemonic and the machine code were provided for the Action Table,the state transition diagram of the Action Table state machine was designed,Verilog language was used to implement this function,the Modelsim simulation results were obtained,which showed that data processing capacity and efficiency had been a qualitative improvement.
processor;EISC;action table;mnemonic symbol;machine code;Verilog
2014-09-26
黄志钢(1960—),男,副教授,研究方向:计算机控制系统,嵌入式系统.
1003-1251(2015)02-0023-05
TP332
A