您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机基于MIPS架构的RISC微处理器RM7000A 正文
基于MIPS架构的RISC微处理器RM7000A

基于MIPS架构的RISC微处理器RM7000A

点击数:7893 次   录入时间:03-04 11:56:05   整理:http://www.55dianzi.com   ARM单片机
作者:老徐

引 言
在众多类型的RISC CPU体系中,MIPS(MICroprocessor without InterLOCked Pipeline Stages)是相当成功的一种。自从1983年John Hennessy在斯坦福大学成功地完成了第一个采用RISC理念的MIPS微处理器以来,基于MIPS构架的CPU在网络、通信、多媒体娱乐等领域得到了广泛应用。Cisco的路由器,IBM的网络彩色打印机,HP的4000、5000、8000、9000系列激光打印机及扫描仪,Sony的Playstation和Playstation 2游戏机等等,都是应用了实现不同MIPS指令集的微处理器的产品。

MIPS Technologies Inc本身不生产微处理器,它只设计高性能工业级的32位和64位CPU的结构体系,并且向其它半导体公司提供使用其内核(IP)的授权,用于生产基于MIPS而又各具特色的微处理器。据MIPS公司网站介绍,现在已有超过50家公司申请了授权,其中不乏IT界著名的大企业,如:AMD、ATI、TI、NEC、Toshiba、Philips、PMC-Sierra、IDT、Quicklogic、Marvell等。

1 RM7000A概述

RM7000A是PMC-Sierra公司RM7000系列微处理器的一种,使用CMOS 0.18μm艺制造而成,内含2个独立的64位整型单元和1个64位浮点单元;片内集成了主缓存和二级缓存以及外部扩展缓存控制器(最高支持8MB三级缓存);具有1个时钟周期发射2条指令的功能;支持数据预取(Prefetch);最高工作频率可达400MHz;可宽温工作,350MHz工业级处理器工作温度为-40~+85℃。

该微处理器有以下主要特性。

(1)片内集成大容量主缓存和二级缓存

主缓存包括16KB指令缓存和16KB数据缓存。指缓和数缓都拥有各自的64位读通道和128位写通道,并且允许指缓和数缓同时被访问。在400MHz时,主缓可以给整型单元和浮点型单元提供总计高达6.4GB/s的带宽。256KB的二级缓存拥有一个64位的读/写共用通道,只有在访问主缓存发生未命中的情况下才会使用到。

主缓存和二级缓存均采用4路组相联。缓存线长32字节,均为非阻塞式缓存(non-blocking cache),即在缓存访问产生未命中(cache miss),且这个未命中没有被消除的情况下,处理器无需停顿等待,可以继续进行缓存访问。RM7000A允许最多有两个未命中时仍可访问缓存。只有在下面两种情况下,微处理器才会产生停顿:一是在前两个未命中还没消除,指令总线上又出现了对缓存的存取指令;二是产生了两个未命中,而随后的指令要从前面一个引起未命中的指令处获取数据才能继续执行。

(2)指令双发射机制(dual issue mechanism)

RM7000A的指令分为四种类型:整数型、浮点型、分支转移(branch)和存/取(load/store)。处理器整型部件的超标量分发单元含有两个独立的流水线:M-pipe(memory)和F-pipe(function)。其中,F-pipe处理整数型、分支转移和浮点操作,如加、减、乘、除等;M-pipe负责整数型、存/取等操作,同时也进行一些浮点数在寄存器间的移动。指令双发射框图如图1所示。

如果每过一个时钟周期,每条流水线流出一条指令,在外部看来就有两条指令同时被执行。但是,在处理器中并不是总能做到双发射的,这跟具体的指令组合有关,比如:当一个指令要处理控制寄存器时,就不能和其它的指令同时发射。

(3)超标量流水线(superscalar pipeline)

RM7000A包含一条5阶超标量指令流水线(度m=2),供M-pipe和F-pipe使用。每条指令被划分为5个子过程:I为取指令,R为取寄存器数,A为执行,D为取数据,W为写回,如图2所示。

配合指令的双发射机制,每过一拍,流水线都要流入两条新的指令。在满负荷的情况下,可以有10条指令在流水线不同的部件上同时运行,相当于提高了工作频率。

在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指令外,其它的指令不能直接访问内存。这样的好处显而易见:寄存器的访问速度比存储器快得多,寄存器存储使得编译器的效率提高,于是程序的执行速度加快;另外,表示寄存器的位数比表示内存单元的位数要少,从而可以改善指令密度。


本文关键字:微处理器  ARM单片机单片机-工控设备 - ARM单片机