MIPS指令集架构的持续演进

作者:MIPS科技软件与架构总监David Lau

MIPS®架构于1980年代初期建立,是最早的RISC架构之一,也是少数几个至今仍 广泛使用的CPU架构。为了使其应用于当今市场的需求相适应,多年来此架构不断持续演进。

自从我2008年起担任MIPS科技指令集架构部门经理一职以来,我们已发布了多项MIPS架构的重要增强功能。

随着Release 5的推出,我想在此对我加入MIPS科技以来有关此架构演进进行简单回顾,其中包括在基础MIPS32®和MIPS64®架构中推出重大升级、推出称为microMIPSTM的全新指令集架构,以及开发可针对特殊应用领域提供功能性的MIPS架构新扩展。这些扩展能以个别的特殊应用扩展(ASE)方式供应,或是成为基础架构中的一个可选模块。

基础架构Release 2.8
在2009年,我们发布了一个架构更新,主要是有关内存管理单元(MMU)的。自从1999年MIPS32®和MIPS64®架构推出以来,JTLB(混合页表缓冲) MMU(内存管理单元)便已被标准化。该标准能让多家MIPS供应商共享内核程序代码以及用户应用程序。从20世纪90年代初JTLB MMU和R4000 CPU一起推出以来,现在已经过去了20年的时间,对现代的语言程序和大型工作负载来说,这些标准开始显得力不从心。为了解决这个问题, Release 2.8中包括了下列MMU增强功能。

• 支持有超过64个TLB入口(entry)的JTLB MMU。较大的JTLB有助于降低TLB失误的频率。
• 同时支持可变页面容量VTLB 和固定页面集合关联(set-associative )FTLB的MMU配置。VTLB与JTLB有相同的功能,它的主要目的是允许可变页面容量。集合关联FTLB能与一般的RAM数组一起构建,这也适用于非常大型的TLB数组 (有可能达数千个输入)。
• 至于MIPS64,现在已可支持非常大型的TLB页面─ 1GB至256TB。使用一个大容量页面可以取代数个较小的页面。

另一个我们当时处理的重要问题是支持对称多重处理(SMP),MIPS科技在这期间推出了首款SMP产品。SMP支持的增强功能包括:
• PAUSE指令,当锁仲裁(arbitration)不成功时,可用PAUSE指令来重新分配(虚拟)处理器。多重(虚拟)处理器对时钟锁进行仲裁有助于降低功耗以及监控流量。
• 通过SYNC指令的stype字段可提供更多种的内存屏障(barrier)。当执行内存同步操作时,较新的内存屏障可使线程停滞数量降至最低。
• CACHE管理指令的增强,能将执行操作同步传播到多个内核。

除了SMP指令集的变更,MIPS科技还为SMP建立了标准化的系统级构件,包括:
• 同步管理器:能将内存交易监控(transaction snoop)传送到所有的同步处理器
• 全域中断控制器:能将多达256个系统级中断送到任意的虚拟/物理处理器
• IO同步单元,能让IO装置生成同步内存交易
• 同步内存交易遵循OCP-IP 3.0规范

Release 2.8中的其它增强功能包括:
• 协处理器中内置暂存(Scratch)寄存器,以供内核模式软件之用:在内核模式软件使用这些寄存器之前,由于无需把用户模式寄存器储存到堆栈上,因此这一特性有助于加速异常处理。
• CDMM(通用设备内存映射)设计,可将小型I/O装置放到物理地址空间:此设计能有效地将这些I/O装置封装在比TLB页面小很多的内存区域中。
• EIC(外部中断控制器)模式,使EIC控制器提供16位中断向量:这允许不同的中断共享程序代码。

基础架构Release 3
2010年,MIPS科技推出MIPS Release 3架构。此版本的主要特点是microMIPSTM指令集。microMIPS是完整的ISA,能被用来取代MIPS32或MIPS64,以减少程序代码大小。这是MIPS针对重视程序代码/图像大小的应用所开发的第二代指令集。这些应用包括大量采用昂贵闪存内存的系统,以及其它成本受限的系统。与旧版MIPS16eTM指令集相比,增强的功能包括:
• 提供浮点运算指令
• 提供内核模式OS程序代码的专属指令
• 能取得良好的程序代码大小,并维持MIPS32/64的性能

在Release 3中,MIPS持续增加可增强内存管理的特性:
• 更灵活的环境寄存器(上下文寄存器,context register),可指向任一种幂次方的数据架构。这能使环境缓存器被用来做为TLB重填处理程序(refill handler)的第一个内存读取,无需在TLB重填处理期间计算第一个指向地址,因此能加速重填处理速度。
• 在TLB入口中增加保护位,以供不可执行和只写虚拟页面之用:这些安全位能阻止缓冲器溢出攻击等恶意程序代码方法,并通过保护页面不被读取来建立安全系统。

MCU特定应用扩展(ASE)
除了microMIPS,这次我们也推出了可协助客户为微控制器(MCU)市场开发产品的其它特性。这些都被收集在MCU特定应用扩展(ASE)之中,包括以下特性:
• 通过将CPU中断数量从6个信号增加到8个,可提升中断传送性能。
• 通过将部分控制寄存器在堆栈上的储存与恢复予以自动化,改善中断延迟。
• 在异常处理程序返回前就对多重中断进行处理,以改善中断延迟。
• 在I/O组件中原子级地(atomically)设定和清除位的指令。

基础架构Release 3.5
2012年初,Release 3.5加入了重要新特性,通过提高虚拟地址空间的可用性,以延伸32位架构版本的生命周期。

这包括编程度更高的虚拟地址空间映射,没有固定快速缓存功能和映射功能特性。这项增强虚拟寻址的(EVA)技术能让应用决定需要多大的区段进行缓存/映射。EVA功能是通过区段控制(Segmentation Control)寄存器器来建构的。

拥有可编程虚拟地址映射功能后,便有可能创建单独的用户模式和内核模式区段浏览。这能允许定义更大的内核虚拟地址空间。为了同时访问较大的内核地址空间和交叉的用户空间,我们推出了另外的负载/储存指令。

在推出这些增强功能前,MIPS的设置被限制在512MB内存以内,这是内核模式(没有使用TLB)可直接寻址的空间。除非特别设计,否则这通常会有效限制Linux-based MIPS系统使用超过256MB的物理内存。
有了这些新特性,现在能够创建内存容量最高达3.5GB的MIPS32系统,而3.5GB都能在内核模式中直接寻址。

Release 3.5中的其它特性包括:
• TLB无效指令:这是区段化控制器所必需的,现在能够不用无映射区段就建立一个虚拟地址映射。之前的无映射地址可用来建立无效TLB入口。
• 支持IEEE-754-2008 FPU状态(与旧版的IEEE-754-1985标准状态不同)。
• 硬件TLB页面查找(Page Walking),这能去除为填充TLB的需求而耗费异常执行线程的工作。该特性能提升程序中拥有大型工作集的CPU性能,因为这些工作集常会用到许多的TLB填充异常。

基础架构Release 5
2012年12月,MIPS发布MIPS Release 5架构(我们跳过Release 4,因为这个数字对许多人来说有不吉祥的意思)。此版本的主要组件为两个新的可选模块:
• 虚拟化的硬件支持 ─ VZ模块。虚拟化可用于在单一CPU上安全地同步执行多个操作系统。在企业应用程序中,这能让应用程序和它们相关的操作系统在不同CPU间的移转变得更容易。它还能使特定OS版本执行特定应用程序。对消费装置来说,这能提升操作系统的安全性,让用户只能在其中一个操作系统添加自己的应用程序,而次要的关键任务OS,用户不能篡改。VZ模块的效用在另一篇白皮书中有更完整的安全性与VZ模块功能说明。

• 128位宽的单一指令多重数据(SIMD)架构 ─ MSA模块。SIMD指令可用来增加媒体处理、信号处理和图形渲染的性能。与先前的数字信号处理(DSP) ASE相比,MSA可使向量长度加倍。MSA可同时支持定点和浮点SIMD运算。MSA模块的优点在另一篇白皮书中有更完整的说明。

此外,随着Release 5的发布,MIPS还将一些较有历史的ASE设计为基础架构中的模块,包括:
• 数字信号处理 ─ DSP模块。DSP模块是历史较长、较轻量化的SIMD指令集,锁定音频和视频处理应用。
• 多线程支持 ─ MT模块。多线程是经常发生快速缓存失误时,增加处理能力的一种方式。

之前,这些模块都是以单独的附加ASE产品来销售。现在,这些模块是Release 5基础架构授权的一部分。

结论

通过持续为MIPS架构增加新功能,我们能够满足不同市场不断升级与改变的需求。这能让MIPS架构为非常广泛的市场提供适用、可扩展的解决方案 ─ 从微控制器等小型、成本受限的系统,到非常大规模、高效能的企业应用都可涵盖在内。

为了最佳化对小型系统的架构支持,入门级32位系统推动了全新和改良的程序代码容量精简指令集的出现,并具备增强的中断处理特性,这是微控制器和其它嵌入式产品等低端系统的理想选择。

对高端系统来说,我们改善了内存管理、推出SMP支持以及虚拟化的硬件支持。针对高效能系统,我们推出宽SIMD支持,以及硬件页面查找功能g (page table walking)。MIPS架构已发展了将近30年,它还将持续演进,以支持新时代的电子产品开发,并满足这些产品对越来越高的处理能力要求。

--电子创新网--
粤ICP备12070055号