Lx5280模拟器移植设计及实施
2011-08-22夏兴昇
夏兴昇
(江苏经贸职业技术学院 江苏 南京 211168)
在分析模拟器基本原理,剖析GNU模拟器源程序,及分析了Lx5280新增部分的基础上,开始对模拟器进行移植,下面是移植设计及实施。
1 移植设计
1.1 Lx5280增加的结构和指令总结
经过第三章Lx5280结构分析,总结出Lx5280在结构上增加有:
(1)采取超标量流水线结构
(2)增加 Circular Buffers
(3)增加 Zero Overhead Loop 功能
(4)增加了一个用于乘除的DMAC单元
(5)增加了8个高优先级中断
增加的指令有六大类:
(1)双字读写指令
LT、ST
从存储器读写双字(64位)到一对偶数开始的通用寄存器中。
(2)Circular Buffers 存取操作指令(指令含”P”)
LBP[.Cn]、 LBPU[.Cn]、LHP[.Cn]、 LHPU[.Cn]、 LWP[.Cn]、LTP[.Cn]、 SBP[.Cn]、SHP[.Cn]、 SWP[.Cn]、STP[.Cn]
(3)对新增寄存器操作指令
MFRU、 MTRU 读 写 cbe[0-2]、cbs[0-2]、lpc0、lps0、lpe0、mmd
MFRK、MTRK 读写Lexra-Cop0kernal寄存器(目前保留)
MFLXC0 、MTLXC0 读 写 ESTATUS、ECAUSE、INTVEC
(4)DMAC 操作指令
CMULTA
DIVA(U)
MULTA(U)、MULTA2、MADDA(U)、MADDA2[.S]
MSUBA(U)、MSUBA2[.S]、MULNA2 、
SUBMA[.s]、ADDMA[.s]
MTA2[.G]、MFA、MFA2
RNDA2
(5)算数操作指令、
ADDR、SUBR、SLTR、SLLV、SRLV、SRAV、MIN、MAX、ABSR、MUX、CLS、BITREV
(6)条件转移指令
CMVEQZ[.H][.L]、CMVNEZ[.H][.L]
1.2 移植设计分析
下面按照配置文件修改,对新增结构支持,对新增指令支持的顺序进行分析。
1.2.1 要求产生的模拟器为支持Lx5280的模拟器,将配置时的target定为lx5280。这就需要对configure文件进行修改,以支持target=lx5280。对于mips和lx5280在基本配置上都一样,只是他们的指令集不同(mips用MIPS1指令集,lx5280用lx5280指令集),所以在非指令集配置中含有mips选项的就增加lx5280选项,而对于指令集配置要对lx5280单独配置。
1.2.2 对于新增超标量流水线结构,如前面所述,它不影响程序的执行,而且模拟它并不能提高模拟器的速度,所以不移植。
1.2.3 对于 Circular Buffers。 它包含 cbs[0-2]、cbe[0-2]六个32位寄存器,增加到原来的寄存器组registers中即可,相关指令会根据其内容进行操作。
1.2.4 对于 Zero Overhead Loop 功能。 它包含 lps0、lpe0、lpc0三个32位寄存器。同样增加到原来的寄存器组registers中。可但它的行为并不是靠指令驱动的,而是在每条指令执行期间都会发生,并且是靠硬件完成的,判断PC值是否和它的寄存器值相匹配。……
