一、简介
leon2处理器是一款开源的、符合SPARC(可扩展处理器体系架构) V8规范的、采用RISC 结构的32位处理器I P 核。它可以从互联网上免费下载使用。Leon2是以VHDL 形式存在的软核、完全可综合、内部硬件资源可裁剪、主要面向嵌入式应用系统、可以用FPGA/CPLD 和ASIC等技术实现。
二、leno2处理器结构
处理器单元
处理器单元由整数单元IU、浮点单元FPU、协处理器单元CP构成。
- 整数单元的特点有:5级指令流水、分离的数据和指令Cache、支持2~32个寄存器窗口、可选的4个观察口寄存器、可配置乘法器、可选的16×16位MAC(40位累加器)、基2除法器。
- 可支持的浮点处理器有GaislerResearch的GRFPU,Sun Microsystems的Meiko FPU或其他通用浮点处理单元。
- Leon2提供了一个通用的用户可定义的协处理器,同IU并行运行增强了系统功能。
Cache子系统
可配置的模式有直接映射模式和2~4组相联的多组相联模式;可选的三种替换算法是LRU、LRR和伪随机。
片上外设
片上外设包括:2个中断控制器、2个UART、2个Timer和1个Watchdog、16位的I/O口、存储器控制器(PROM、SRAM、S13RAM)、PCI桥接器、Ethernet接口、高级片上调试支持单元(DSU)和跟踪缓冲器等.中断控制器可以最大处理46个内部和外部中断。2个串行通信口 (UART),支持8位数据帧、1位校验位、1位停止位,支持硬件流控功能。调试支持单元(DSU)能够把处理器设置到调试模式,通过它可以读写处理器的所有寄存器和Cache。DSU还包括一个跟踪缓存,可以保存已执行了的指令和AHB上传输的数据。
开源的 LEON2 处理器版本中包括:整数处理单元(Integer Unit,IU),独立的指令缓存(I-Cache)模块和数据缓存(D-Cache)模块,16 位I/O 端口,存储器控制器模块(Memory Controller)等等。根据需求,设计者可以通过片上AMBA AHB/APB 总线控制器实现外设的添加。
三、Leon2的技术特点
Leon2的技术特点主要有:采用SPARC V8结构、采用内部AMBA总线结构、容错设计和VHDL编程风格。
SPARC V8
SPARC是可扩展处理器体系架构的首字母缩略词,是一个从RISC派生出的CPU指令集结构(ISA)。指令集结构是指:定义了指令、寄存器、指令和数据存储器、指令执行对寄存器和存储器的影响、控制指令执行的算法等内容,但不定义时钟周期、每条指令的执行时钟周期数(CPI)、数据通路等内容。作为一个结构,SPARC允许在具有不同性能价格比的广泛应用中,实现不同系列的芯片和系统,包括科学、工程、编程、实时和商业应用等。SPARC的设计目标是优化编译器和易于硬件流水线实现。
指令集架构
所有指令都编码成32位格式,可以分成六个基本的类型,一共有72条指令。六种基本的指令分别是:①Load/store;②Arthmetic/logical/shift;③Control transfer;④Read/write control register;⑤Floating-point operate;⑥Coprocessor operate。
### 寄存器窗口
它是SPARC的最大技术特点。SPARC处理器包括两种寄存器:一种是通用寄存器,另一种是控制/状态寄存器。其中整数单元中的控制/状态寄存器主要负责记录
处理器状态和计数等任务,包括PSR,WIM,TBR,PC,ASRs 等;而整数单元的通用寄存器,则采用独特寄存器窗口的实现方式来提高处理器运行效率,这也是SPARC 架构区别于架构设计之处。
IU的通用寄存器叫r寄存器。一个IU(整数元)的实现可能包括40520个32位r寄存器。这些寄存器又被分成8个全局寄存器,再加上232个与实现有关的16位寄存器组,每一个寄存器组又进一步分为8个输入寄存器和8个输出寄存器。
上图是一个8窗口寄存器结构示意图。在任何一个时刻,一条指令只能访问8个全局寄存器和由当前窗口指针(CWP)指定的当前窗口。这个窗口是由8个输入寄存器、8个局部寄存器和8个输入寄存器构成。从图中可以看出,两个相邻窗口的入和出寄存器是共享的。当前是按窗口号顺序(或前或后)转换的,正好上一次的输出寄存器成为当前窗口的输入寄存器,这样可以减少存储器读写和运行时的现场保护。
AMBA
AMBA(Advanced Microntroller Bus Architecture)规范,是一种已制定的、开放的规范,充当着SoC设计的架构,正迅速成为SoC和IP库开发事实上的标准,为高性能嵌入式微控制器设计定义了一种片上通信标准。
AMBA规范中定义了三种不同的总线,即 AHB 、ASB 和 APB 。
* AHB 是为高性能、高时钟频率的系统模块提供的,担任着高性能系统的背板总线、支持多处理器、片上各种存储器和片外外部存储器接口连接到低功耗辅助宏单元。
* ASB也是为高性能系统模块提供,当AHB 的高性能特点无需要时,就可以用ASB 来代替;它也支持多处理器、片上各种存储器和片外外部存储器接口连接到低功耗辅助宏单元。
* APB 是为低功耗的外围设备提供的,它优化到为最小功耗和减小接口的复杂性来支持辅助功能。
容错问题
为了适用于航空航天的高可靠性应用,Leon2采用多层次的容错策略;奇偶校验、TMR(三模冗余)寄存器、片上EDAC(检错和纠错)、流水线重启、强迫Cache不命中等.尽管现在几乎所有CPU都有一些常规的容错措施,如奇偶校验、流水线重启等,像IBM S/390 G5还采用了写阶段以前的全部流水线复制技术。IntelItanium采用的混合ECC和校验编码等技术;但远没有Leon2那样,采用如此全面的容错措施。
Leon2将时序(存储)单元的状态翻转作为数字容错的主要内容,根据时序逻辑的不同特点和性质,采用了不同的容错技术和手段.
Cache的容错
大的Cache对高性能CPU来说是至关重要的,而且位于处理器的关键(时间)通路上。为了减少复杂性和时间开销,错误检测的方法采用2位的奇偶校验位,l位用作奇校验,l位偶校验,因此可以检查所有的错误情况,在读Cache的同时进行校验。当校验出错误,强制Cache丢失,并从外部存储去获取数据。
处理器寄存器文件的错误保护
寄存器文件是处理器内部的寄存器堆,内部的寄存器对于指令的运行速度和用户程序设计的灵活程度都是很重要的。内部寄存器的使用频率很大,其状态的正确性是也很关键。Leon2采用1、2奇偶校验位和(32.7)BCH校验和进行容错。
触发器的错误保护
处理器的2500个触发器均采用三模冗余的方式进行容错,通过表决器来决出正确的输出。
外部存储器的错误保护
采用挂上的EDAC单元实现。EDAC:采用标准的(32.7)BCH码,每32位字可纠正1位错误和检测2位错误。
主检测模式
是指两个相同的处理器同时并行执行相同的指令,只让其中的主模式处理器输出结果,不让检测模式的处理器输出结果。在内部,将检测模式处理器的输出同主模式处理器输出进行比较,以检查错误是否存在。这种工作模式,可以应用于要求更高可靠性的情况。
Cache的清洗
因为上面介绍的五种方法,只有在对相应的单元进行访问时才进行错误检查。如果存储单元的数据不常使用,这些单元的错误会逐渐增加,因此必须使用一些软件的方法来实现。