SPARC(Scalable Processor ARChitecture)可扩展处理器架构是SUN公司在1985年提出的体系结构标准。SPARC是开放的,任何机构或个人均可研究或开发基于SPARC架构的产品,如东芝、富士通、Aero flex、ESA等都在此架构上开发出了自己的SPARC微处理器。
1987年,SUN公司发布了业界第一款有可扩展性功能的32位微处理器“SPARC”。因为它采用了SPARC的首款架构SPARC V7,所以获得了更高的流水线硬件执行效率和更为优化的编译器,并缩短了其开发周期,满足了Sun-4计算机迅速投放市场的要求。
由SUN公司在1985年发布的SPARC V7是世界上第一个32位可扩展处理器架构标准,它基于加州大学伯克利分校关于RISC微处理器项目的研究成果,如寄存器窗口结构。V7定义了SPARC体系结构的数据类型、寄存器、指令、存储器模型和异常处理,处理器指令字长是32位。它采用独立的指令(SAVE,RESTORE)来进行寄存器管理,用LOAD和STORE指令访问内存。
1990年,SPARC International发布了32位SPARC V8架构标准。其在SPARC V7的基础上增加了乘法和除法指令。加速乘除法的处理,使得用户不必使用子程序完成相同操作。
为了在微处理器发展上仍具有竞争性,SPARC International在1994年发布了64位SPARC V9架构标准。相比SPARC V8,这一版本的显著变化在于:数据和地址的位宽由32位变到64位,支持超标量微处理器的实现,支持容错及多层嵌套陷阱,具有超快速陷阱处理及上下文切换能力。
1995年以前,基于SPARC V7或V8架构的微处理器种类不多,而且基本上只有SUN一家公司在研制开发。从1995年以后,基于SPARC V9架构的64位SPARC微处理器性能逐步增强,其面向高性能计算和服务器的微处理器得到了市场广泛的接受,如SUN公司的SPARC T1/T2系列及富士通公司的SPARC64系列等。
随着基于SPARC V8架构的LEON2在2003年的发布,面向高可靠嵌入式领域(如工业控制、军工电子、空间应用等)的SPARC微处理器的研制得到了众多公司的青睐。ESA公司研制了基于SPARC V7架构的ERC32微处理器,ATMEL公司制造了基于SPARC V8架构的AT697微处理器。全球大约已有3万多个成功的应用案例。比较著名的是国际空间站上的控制计算机DMS-R及空间自动转移器ATV中均使用了SPARC微处理器ERC32,而在太空观测台上则使用了SPARC V8架构的微处理器。
中国也有多家公司和大学从事SPARC微处理器的研发。值得说明的是,北京时代民芯科技有限公司已成功研制出基于SPARC V8架构的高性能、高可靠嵌入式微处理器MXT0105及其片上系统芯片产品MXT0106,微处理器MXT0105的性能已达到且部分指标超过ATMEL公司的AT697。MXT0106是集成多路模拟量与开关量数据采集、多路模拟与数字信号输出、1553B通信、多种外设接口的高性能、高可靠片上系统,内部通过AMBA总线将高性能CPU、浮点处理器、A/D转换器、模拟开关、1553B总线控制器、I2C总线控制器、计数器、定时器、通用I/O和PWM输出等功能模块集成在单一芯片上,适合测试、实时计算及控制领域应用,其有效实现了电气系统的集成化、小型化、轻量化、智能化及低功耗。
SPARC微处理器具备支持32位/64位数据精度、架构运行稳定、可扩展性优良和体系标准开放等特点。此外,寄存器窗口技术既是SPARC微处理器的显著特点,也是SPARC架构区别于由斯坦福大学提出的MIPS微处理器架构的主要不同点之一。采用这项技术可以显著减少过程调用和返回执行时间、执行的指令条数和访问存储器的次数,从而易于实现直接高效的编译。如图3-6所示,将工作寄存器组成若干个窗口,建立起环形结构,利用重叠寄存器窗口技术来加快程序的运转。每个过程分配一个寄存器窗口(含有一组寄存器),当发生过程调用时,可以把处理器转换到不同寄存器窗口使用,无须保存和恢复操作。相邻寄存器窗口部分重叠,便于调用参数传送。为每个过程提供有限数量的寄存器窗口,各个过程的部分寄存器窗口重叠。
SPARC微处理器已经得到了众多半导体厂家和整机厂商的大力支持。世界上越来越多的半导体公司通过SPARC International Inc.的许可授权,并结合自身的产品发展,开发出具有自己特色的基于SPARC处理器核的嵌入式SoC系统芯片。SPARC处理器在大部分32位、64位高端嵌入式处理器市场中的位置也越来越重要。它广泛应用于移动通信、多媒体数字消费等嵌入式领域。由于SPARC处理器核的优良性能和资源开放性,加速了SPARC处理器在各个领域的应用和发展。与此同时,SPARC标准及架构也获得了更加广泛的应用,从而确立了SPARC在市场中的地位。
图3-6 寄存器窗口
TSC695F采用SPARC体系结构V7规范,是一款高度集成的高性能32位RISC嵌入式处理器。该芯片支持欧洲航天局相关标准,为嵌入式航天应用领域提供了全面的开发环境。采用抗辐射[大于300Krad(Si)]CMOS改进工艺技术制造,能在高辐射、大温差等恶劣环境下稳定运行,带有片内并发瞬时错误和永久错误检测功能,专为航天应用领域设计。
TSC695F配有片内整数单元(IU)、浮点单元(FPU)、存储控制器和DMA仲裁器。在实时应用领域,TSC695F提供一个高安全级看门狗、两个定时器、一个中断控制器及多个并行和串行接口。容错能力通过内外总线上的奇偶校验机制和外部数据总线上的EDAC机制实现。片内调试程序(OCD)和JTAG接口边界扫描使芯片设计具有高度的可测试性。TSC695F功能框图如图3-7所示。
TSC695F系列处理器特点如下:
(1)TSC695F处理器是SPARC V7架构的、32位RISC嵌入式微处理器,MQFPF256封装。
图3-7 TSC695F功能框图
(2)优化和集成32/64位浮点单元。
(3)片内外设:
①含有EDAC和奇偶校验发生器、校验器。
②存储器接口:具有片选信号发生器,等待周期可设并有内存保护设置。
③含有DMA控制器。
④定时器包括通用定时器(GPT)、实时时钟定时器(RTCT)和看门狗定时器(WDT)。
⑤5个外部中断输入。
⑥多个通用GPIO。
⑦2路串口。
(4)静态存储器接口。
(5)RAM接口和8位或40位可选的PROM接口。
(6)IEEE 1149.1标准JTAG接口。
(7)全静态设计。
(8)工作电压范围:4.5~5.5 V。
(9)工作温度范围:-55~125℃。
BM3823 AMCCRH是一款SPARC V8体系结构的32位高性能抗辐射微处理器,集成高性能整数处理单元、浮点处理单元、独立的指令和数据Cache、256 KB片上存储器、DDR2存储器控制器、Ethernet MAC、PCI总线控制器以及其他丰富的外设接口,与PROM等相关外围电路组成完整的单板计算机系统,满足空间恶劣环境应用要求,可广泛应用于高可靠的信息处理系统及测控系统。
BM3823 AMCCRH产品特点如下:
(1)最大工作频率:300 MHz。
(2)兼容SPARC V8体系结构的32位微处理器内核:
①符合IEEE 754标准的32/64位浮点处理单元(FPU)。
②32 KB指令Cache,16 KB数据Cache。
③支持系统级容错。
(3)内嵌硬件乘/除法器。
(4)外部存储器控制器:
①支持8/16/32位宽PROM、SRAM、I/O空间。
②支持32位宽SDRAM。
③支持8/32位宽EDAC。
(5)256 KB片上存储器,支持EDAC功能。
(6)PCI总线控制器:
①符合PCI2.3协议规范。
②支持主/从桥模式。
③支持DMA。
(7)内嵌4通道带FIFO的DMA控制器。
(8)中断控制器:
①15路一级中断,其中7路外部中断(1路不可屏蔽,6路可屏蔽)。
②20路二级中断。
(9)DDR2存储器控制器(含控制器和PHY)。
(10)Ethernet MAC:
①符合IEEE 802.3协议规范。
②支持10/100/1 000 Mbit/s三种数据传输速率。
③支持MII/GMII、RMII、TBI接口。
SPARC微处理器支持用户模式和特权模式两种工作模式。用户可以通过设置程序状态寄存器(PSR)S位来切换这两种工作模式。在软件控制、外部中断或异常处理下,可引起处理器工作模式的改变。
一般来说,处理器是用某个控制寄存器中的一个方式位来提供某种模式,该寄存器描述了进程当前享有的权利。当设置方式位(PSR[S]=1),使处理器处于特权模式中,这样进程就可以执行指令集中的任何指令,并且可以访问系统中任何存储器位置和改变模式。
大多数用户程序运行在用户模式(PSR[S]=0)下,这时应用程序不能访问一些受操作系统保护的系统资源,也不能改变模式。应用程序既不能直接进行处理器模式的切换,也不允许执行特权指令,比如停止处理器,改变方位。任何这样的尝试都会导致致命的故障,除非异常发生,允许操作系统来控制系统资源的使用。
SPARC架构中有32个通用寄存器、32个窗口寄存器和专用寄存器组。较少数量的寄存器使得访问速度大大提高,这对于提升程序的速度是很重要的。
SPARC微处理器中有32个通用寄存器,这些寄存器对用户可见。其中,有8个寄存器是全局(global)寄存器,另外24个寄存器是窗口寄存器。SPARC微处理器中一个窗口包含3个寄存器组,每组里面有8个寄存器。3个寄存器组分别为out、local、in。大多数的SPARC微处理器有7或8个窗口,SPARC微处理器执行时将按照0~7的顺序依次切换窗口。SPARC通用寄存器地址分配见表3-3。
表3-3 SPARC通用寄存器地址分配
SPARC结构处理器具有可配置的通用寄存器组。在程序运行时,寄存器窗口中保存着当前进程的状态信息。在任一时刻,程序只使用一组寄存器窗口,当发生函数调用或返回时,处理器会在不同的寄存器窗口间移动,以保存当前环境。
SPARC微处理器有10个专用寄存器,其中PSR称为程序状态寄存器,其内容反映并控制处理器的运行状态,因为比较重要,因此读/写PSR的指令一般是特权指令。
计算机通常用异常来处理在执行程序时发生的意外事件,如中断、存储器故障等,它需要停止程序的执行流程。在程序执行过程中通过控制跳转类指令,程序可跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。而当异常中断发生时,系统执行完当前指令,将跳转到相应的异常中断处理程序处执行异常处理,异常中断处理完成后,程序返回。
异常中断事件改变了程序正常执行的顺序,是程序执行的非正常状态。在进入异常中断处理程序时,要保存被中断程序的执行现场。在从异常中断处理程序退出时,要恢复被中断程序的执行现场。每种异常中断都具有各自的备份寄存器组。对异常中断的了解是处理器应用必须掌握的基本知识。下面将详细讨论SPARC体系中的异常中断类型和异常处理机制。
在SPARC体系结构中,异常中断用来处理系统复位功能、指令访问错误和数据存储错误等,这些“不正常”事件都划为“异常”。SPARC异常中断请求可导致以下3种陷阱(traps):
(1)精确的trap。一个特殊的指令导致一个精确的trap,这个trap发生在任何程序状态被陷阱引导指令改变之前。当一个精确的trap发生的时候,如下条件保持不变:
①其中PC保存在r[17](本地寄存器1)并指向引起trap的指令,而 n PC保存在r[18](本地寄存器2)并指向下一个将要运行的指令。
②在引起trap之前指令已经完成执行。
③在引起trap之后指令保持不执行。
(2)延时的trap。一个特殊的指令也同样会导致一个延时的trap,但是不像精确的trap,一个延时的trap可能发生在程序状态被改变之后。这个状态可能被trap本身指令改变,或者被一个或多个在它后面的指令改变。
(3)中断的trap。中断的trap既不是精确的trap也不是延时的trap。中断的trap是被PSR的处理器中断级别(PIL)和PSR的TrapEnable(ET)共同控制的。中断的trap可能是由于以下原因造成的:
①一个外部的中断请求不直接涉及之前运行的指令。
②一个异常不直接涉及之前运行的指令。
③异常由之前运行的指令引起。
当几个异常中断同时发生时,就必须要按照一定顺序来处理这些异常中断。在SPARC中通过给各个异常中断赋予一定的优先级来实现这种处理顺序。复位的优先级为1,复位是优先级最高的异常中断,这时因为复位从确定的状态启动微处理器,使得与所有其他未解决的异常无关。处理器执行某个特定异常中断的过程中,称处理器处于特定的中断模式。
SPARC并行处理器支持实时嵌入式操作系统。操作系统将任务队列对称分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有处理器都可以平等地访问内存、I/O和外部中断。系统资源被系统中所有CPU共享,工作负载能够均匀分配到所有可用处理器之上,其运算速度快、数据处理量大、能耗低,性能和可靠性等都远高于单核处理器。珠海欧比特公司推出的SPARC并行处理器是基于SPARC V8架构的高性能的32位RISC嵌入式4核处理器。其采用“对称多核处理”技术,是在一个芯片中集成四个功能一样的处理器核心,各处理器核心之间共享内存子系统及总线结构,总线竞争和仲裁由硬件自动完成,不需要用户设置的处理器系统。它专为嵌入式应用而设计,具有高性能、低复杂度和低功耗的特点。