2.2.1MicroBlaze系统及内部结构
MicroBlaze采用 32 位哈佛RISC 架构,32位独立的地址总线和数据总线。在采用缓存模式下,独立的指令和数据可以缓存并通过XCL(Xilinx CacheLink)接口连接到内存。在不采用缓存的机制下,地址和数据总线直接通过PLB46访问内存。MicroBlaze没有区分数据接口为I/O和存储,所以处理器存储的接口是PLB和LMB,且LMB存储地址空间不和PLB重合。MicroBlaze还提供最大256K的片上本地内存接口和片上BRAM连接,对于简单的设计,可以将代码直接放入片上BRAM;也可以将复杂设计的BOOTLOADER放在片上的BRAM中。用户IP可以通过PLB46总线或快速点对点连接(FSL)接入系统。一般而言:PLB64比较适合基于总线形式的用户IP 开发;FSL比较适合基于简单点对点输入输出或协处理器的用户IP开发。图 2.2.1是一个MicroBlaze片上系统的结构图。

图 2.2.1 MicroBlaze系统架构图

图 2.2.2 MicroBlaze的内部结构图
2.2.2MicroBlaze的数据储存结构和指令
MicroBlaze支持8位(字节)、16位(半字)和32位(字)的数据形式 并采用大字序方式. 其具体的形式如下表所示:
字节的储存类型

半字的储存类型

字的储存类型

MicroBlaze的所有指令都是32位的,且有两种定义模式。A型指令有至多2个寄存器源操作数和1个寄存器目的操作数;而B型指令有1个寄存器源操作数,1个16位立即数以及1个寄存器目的操作数。该立即数可以通过使用IMM指令将之扩展为32位。所有指令被分成下列5种指令类型:算术指令,逻辑指令,程序流控制指令,读取/存储指令和特殊指令类型。表2.1和表2.2各自列出了MicroBlaze指令集的语法定义和参考实例。
表 2.2.1 MicroBlaze指令集的语法定义

表 2.2.2 MicroBlaze指令集的参考实例

2.2.3 MicroBlaze的流水线结构
MicroBlaze 的指令采用流水线的结构执行。在大多数的情况下,一条指令在一个时钟周期内完成。 一些指令需要不止一个时钟周期才能完成(比如除法指令),那么流水线就会停住并等待这个指令的完成。
当指令储存在片外的慢速度的内存时, 取指令的操作可能要占用很多个时钟周期。 为了提高性能, MicroBlaze内含一个取指令的缓存来减小指令存储器读取速度对处理器的影响。 当MicroBlaze在执行一个多周期的指令时, 预取指的缓存区就会持续地按顺序取指令。 当流水线继续执行的时候,MicroBlaze 就从内部的指令缓存直接得到指令而不是从片外的存储器得到指令。 注意这个指令缓存处于MicroBlaze内部并一直有效。其不等同于可以MicroBlaze可以配置的指令和数据Cache。
MicroBlaze可以配置成2种流水线深度,3级流水线和5级流水线。
三级流水线:
当面积优化使能后,MicroBlaze配置成3级流水线,三级分别是取指、译码和执行:

图 2.2.3 三级流水线
五级流水线:
当不使用面积优化使能,MicroBlaze配置成5级流水线以取得最大的性能,五级分别是取指、译码、执行、读取和写回。

图 2.2.4 五级流水线
跳转:
通常当跳转发生的时候,流水线的取指令和译码都在是流水运行的。跳转指令使得流水线必须重新启动并在新的地址取指令。MicroBlaze需要3个时钟周期去完成跳转。其中2个周期是用于重新使流水正常工作。
MicroBlaze的中断机制
MicroBlaze支持重置、硬件异常、中断、用户异常、暂停等机制。它们的优先级排序如下(标号越小,优先级越高):
表 2.2.3 MicroBlaze中断机制的返回地址寄存器和实例

MicroBlaze支持一个外接中断源(与中断入口相连)。处理器只有在状态寄存器中的中断允许(IE)被置1时才能对中断反应。在中断时,在执行阶段的指令完成而在编译阶段的指令被指向中断向量的地址(地址0x10)的分支代替。中断返回地址(在中断的时候与在编译阶段的指令联合的PC[Program Counter])自动载入到通用寄存器R14。而且,处理器也通过清理MSR中的IE位禁止其它中断。当执行RTID指令时,IE位又自动置1。
如果在MSR中的进程中断(BIP)位或进程例外(EIP)位任一被置1,中断将被处理器忽略掉。
从一个中断产生到进入中断服务程序(ISR)的MicroBlaze所花费的时间取决于处理器的配置和存储中断向量的内存控制器的反应时间。如果MicroBlaze配置有一个硬件除法器,当在执行除法指令时产生中断,反应时间就会很大。
用户例外向量在地址0x8上。用户例外是通过在软件数据流插入“BRALID Rx,0x8”指令产生的。虽然Rx可以是任意通用寄存器,Xilinx推荐使用R15来存储用户例外返回地址,并且使用RTSD指令从用户例外处理器返回。
2.2.5MicroBlaze的缓存机制和MMU (Memory Management Unit)
MicroBlaze使用了可配置的数据和指令Cache,用来执行LMB地址空间外的代码和数据。图 2.2.5和图 2.2.6显示了数据Cache和指令Cache的结构图。
Cache具有如下特征:

图 2.2.5 数据Cache结构图

图 2.2.6 指令Cache结构图
在MicroBlaze中,当C_USE_MMU被置3时,内存管理单元(MMU)将可以执行虚拟模式。MMU控制有效地址转化为物理地址布局,同时也支持内存保护。因此,系统软件可以执行所需要页面尺寸的虚拟内存和其它内存管理配置。
MMU的特征总结如下:
2.2.6 MicroBlaze的高级特性介绍
桶形移位寄存器:
只需一条指令就能够对操作数进行任意位的逻辑左移或逻辑右移。
硬件乘法器:
利用片内的乘法器,可以单周期的完成乘法指令。(面积优化为3个周期)
硬件除法器:
可以在32个周期内完成除法指令。(面积优化为34个周期)
FPU:
MicroBlaze 可选的浮点单元是支持IEEE 754 standard中单精度的部分,提供:浮点加法,浮点减法,浮点乘法,浮点除法,浮点比较,浮点转换和浮点平方根指令。对溢出和非法操作有专门的标志,采用了硬件异常机制。对于溢出,除数为0,非正常操作数和非法操作进行异常处理。