基于MIPS架构的RISC微处理器RM7000A
??在RM7000A中,实际上还存在一个7阶流水线单独处理浮点操作,不过,这个流水线对用户来说是完全透明的。
(4)寄存器组(register files)
??RM7000A含有众多的寄存器。
◆ 整型操作寄存器组。位于整型单元中,包括32个64位的通用寄存器(GPR),2个专用于整型乘、
除运算的寄存器Hi和Lo,1个程序计数器PC(对用户透明)。其中通用寄存器的r0被硬连接为0。它可以作为目的寄存器存放指令以后会舍弃的暂时结果,也可以根据需要为指令提供0作为操作数。
◆ 浮点操作寄存器组。包含32个64位的浮点通用寄存器(FGR)和32个32位控制寄存器。
◆ 系统控制寄存器组(CP0)。用于内存管理调度、地址转换、异常处理等。
(5)集成、高效的内存管理单元
?? 为快速将虚拟地址转换成物理地址,RM7000A使用一个大容量的全相联TLB(Translation Lookaside Buffer,如图3所示)来实现这个目标。这个TLB被指令和数据共用,称为JTLB(Joint TLB);可以配置成48对或64对入口,分别映射96页或128页的虚拟地址。页面的大小可配置,从小到大依次为4K、16K、64K、256K、1M、4M、16M。当发生TLB未命中时,RM7000A采用的替换算法主要是随机替换,以简化硬件设计。同时也提供锁定特定地址机制,以便操作系统为提高性能而让一些页面持续被映射。
ASID——Address Space Identifier,虚拟空间标识符,表示内核态(kernel)、管态(supervisor)、用户态(user)三种虚拟空间。
G——Global,每个TLB入口都有的标识符。
(6)指令格式及寻址方式
??需要注意的一点是:尽管RM7000A是64位的微处理器,但它的指令长度都是固定的32位。
??RM7000A是一种典型的寄存器型(Register-Register)微处理器,即除了load/store指令外,其它的指令不能直接访问内存。这样的好处显而易见:寄存器的访问速度比存储器快得多,寄存器存储使得编译器的效率提高,于是程序的执行速度加快;另外,表示寄存器的位数比表示内存单元的位数要少,从而可以改善指令密度。
??MIPS类的指令可以用三种形式表示。
MIPS构架支持两种寻址方式。
◆ 立即数寻址(immediate)。例如:Add R1,#10,这里#10的代表常数10,指令含义是Regs[R1]←egs[R1]+10。
◆ 位移寻址(displacement)。例如:Add R1,10(R2),指令含义是Regs[R1]←egs[R1]+Mem[10+Regs[2]]。
对操作数稍做改变,可以得到另外两种寻址方式。
◆ Add R1,(R2) Regs[R1]←Regs[R1]+Mem[Regs[R2]]
寄存器R2存放的只是一个地址,这个地址的内容才是要取的数据,这相当于寄存器间接寻址。
◆ Add R1,10 Regs[R1]←Regs[R1]+Mem[10]
此时第二个寄存器必须是r0,借助于r0(如前所述,r0被硬接位0)提供的0,就得到了直接寻址方式。