Presentation is loading. Please wait.

Presentation is loading. Please wait.

MicroBlaze软核处理器结构 何宾 2012.02.

Similar presentations


Presentation on theme: "MicroBlaze软核处理器结构 何宾 2012.02."— Presentation transcript:

1 MicroBlaze软核处理器结构 何宾

2 MicroBlaze软核处理器结构 本章详细介绍了Xilinx公司的MicroBlaze处理器的结 构及其原理。内容包括:

3 MicroBlaze软核处理器结构 MicroBlaze处理器结构体现了最新的计算机体系结
构和微处理器技术的发展趋势。学习这部分内容对掌握软 核处理器的一些关键技术和后续基于软核处理器设计片上 系统非常重要。

4 MicroBlaze处理器结构框架 MicroBlaze处理器软核是用户可配置的RISC精简指令集计算机,该RISC核针对Xilinx的FPGA芯片进行了优化。 图3.1给出了MicroBlaze处理器核的内部结构图。

5 MicroBlaze处理器结构框架 图3.1 MicroBlaze核结构图 指令侧接口 可选项 数据侧接口

6 MicroBlaze处理器结构框架 从图中可以看出该处理器有以下几个方面的特点: (1)采用指令和数据空间分离的哈佛结构;
(2)32个32位通用寄存器; (3)32位的地址总线,可寻址空间4GB; (4)32位3个操作数的指令字,指令字有2种寻址模式; (5)单发(Single-issue,一个时钟周期发出一条指令)流水线 结构; (6)采用指令预测分支策略和预取缓冲区; (7)有独立的存储器管理单元对存储器空间进行管理; (8)提供了可以使用硬件实现的功能单元:桶形移位寄存器; 乘法器;除法器;浮点处理单元; (9)提供了丰富的外设接口资源; (10)采用点对点的流连接结构和共享总线的结构;

7 MicroBlaze处理器结构框架 图3.1中MicroBlaze处理器具体外部接口定义如下:
(1)M_AXI_DP: 外设数据总线,AXI4-Lite或者AXI4接口; (2)DPLB:数据接口,处理器本地总线; (3)DLMB:数据接口,本地存储器总线(只有BRAM); (4)M_AXI_IP: 外设指令接口,AXI4-Lite接口; (5)IPLB:指令接口,处理器本地总线; (6)ILMB:指令接口,本地存储器总线(只有BRAM); (7)M0_AXI…M15_AXIS: AXI4_Stream接口,主直接连接接 口; (8)S0_AXIS…S15_AXIS: AXI4_Stream接口,从直接连接接

8 MicroBlaze处理器结构框架 (9)MFSL0..15:FSL主接口; (10)DWFSL0..15:FSL主直接连接接口;
(11)SFSL0..15:FSL从接口; (12)DRFSL0..15:FSL从直接连接接口; (13)DXCL:数据侧Xilinx CacheLink连接接口(FSL主/从对) (14)M_AXI_DC:数据侧高速缓存AXI4接口 (15)IXCL: 指令侧Xilinx CacheLink连接接口(FSL主/从对) (16)M_AXI_IC: 指令侧高速缓存AXI4接口 (17)Core:杂项信号:时钟,复位,调试和跟踪

9 MicroBlaze存储器结构 MicroBlaze处理器采用哈佛存储器结构,即指令和数
据访问使用独立的地址空间。每个一个地址空间都是32位 范围(即,它们可以独立访问4GB地址空间的指令和数据 存储器)。通过控制使重叠的数据和指令空间映射到相同 的相同的物理存储器上,这对于软件调试非常有用。 MicroBlaze所有的指令和数据接口,默认情况下是32 位,使用大段或小段,位反转格式(取决于 C_ENDIANNESS)。MicroBlaze支持对数据存储器的字, 半字和字节访问。表2.1给出大段、小段及位反转格式在 存储器空间的表示。

10 MicroBlaze存储器结构 字数据类型 表示方法 大段字节地址(Big-Endian Byte Address) n n+1 n+2
大段字节意义(Big-Endian Byte Significance) MSByte LSByte 大段字节顺序(Big-Endian Byte Order) 大段字节反转顺序(Big-Endian Byte-Reversed Order) 小段字节地址(Little-Endian Byte Address) 小段字节意义(Little-Endian Byte Significance) 小段字节顺序(Little-Endian Byte Order) 小段字节反转顺序(Little-Endian Byte-Reversed Order) 位标号(Bit Label) 位意义(Bit Significance) MSBit LSBit

11 MicroBlaze存储器结构 数据访问必须对齐(字访问对齐字边界,半字访问对 齐半字边界,除非处理器配置支持非对齐访问异常)。所
有指令的访问必须是字对齐方式。 MicroBlaze通过预取缓冲器和指令高速缓存流来预取 指令,以提高处理性能。

12 MicroBlaze存储器结构 MicroBlaze处理器采用存储器映射方式访问I/O设 备,即存储器和I/O设备采用统一编址方式。处理器有
下面三种接口用于存储器访问: 本地存储器总线(LMB); 高级可扩展接口AXI4或处理器本地总线(PLB); 高级可扩展接口AXI4或Xilinx CacheLink(XCL);

13 MicroBlaze存储器结构 当时用AXI4时,C_ENDIANNESS自动设置为小 段;使用PLB时,自动设置为大段。
处理器指令和数据缓存可以配置成4/8字的缓存行 (缓存最小结构单位)。缓存行越大,可存放的代码 就越长,执行效率也就越高。但是当程序中使用很多 的随机访问模式时,会降低缓存的命中率,因此给定 大小的缓存行反而会降低性能。

14 MicroBlaze浮点单元 MicroBlaze处理器的浮点单元FPU基于IEEE754标准:
数(NaN)和零; 2)支持加、减、乘、除、比较、转换和平方根指令; 3)实现最近舍入(round-to-nearest)模式; 4)产生状态位用于:下溢、上溢、除数为零和无效操作。

15 MicroBlaze浮点单元 为了提高性能,使用下面的非标准的简化: 1)不支持亚正常操作数(这种操作树接近0,无法用完整精度表
示)。对亚正常操作数的操作将返回NaN,并且在FSR中设置 亚正常操作数错误标志; 2)亚正常操作数结果存为0,并且在FSR的寄存器中设置下溢标 志。这种方法通常称为清零(Flush-to-zero)模式; 3)对NaN操作返回固定的NaN-0xFFC00000; 4)浮点操作的上溢总是返回∞。

16 MicroBlaze浮点单元 IEEE754单精度浮点数由1位符号位、8位偏置指数和23
式。

17 MicroBlaze浮点单元 在MicroBlaze中浮点数V可以用以下方法描述:
(1)如果指数=255,小数<>0,V=NaN,和符号无关 (2)如果指数=255,小数=0,V=(-1)sign*∞ (3)如果0<指数<255,V=(-1)sign*2(指数-127)*(1.尾数) (4)如果指数=0,小数<>0,V=(-1)sign*2-126*(0.尾数) (5)如果指数=0,小数=0,V=(-1)sign*0 在实际中,只有规则3和5是有用的。其浮点单元支持 浮点算术操作、浮点比较操作、浮点和有符号整数之间的 转换操作。

18 MicroBlaze浮点单元 基于GCC的EDK编译器系统,为FPU提供支持。当使 用XPS或者SDK时,基于系统中FPU的类型,编译器标志
EDK编译器系统只包含软件浮点C实时库。为了使用 硬件FPU的优势,使用合适的编译器开关重新编译库。 为了从FPU中得到最大的益处,而不需要底层汇编语 言编程,就需要考虑C编译器如何理解所编写的源代码。 下面规则可以帮助提高浮点处理的效率:

19 MicroBlaze浮点单元 1. 默认情况下,C中的浮点常数是双精度的。 当使用单精度的FPU时,不经心的编码将导致使用
双精度的软件仿真程序而不使用真正的单精度指令,为 了避免这种情况,需要明确将常数指明为单精度数。 float x=1.0; x+=(float)1.0; or x+=1.0F

20 MicroBlaze浮点单元 2. 硬件FPU支持整数和浮点格式之间的转换。 下面一个不好的例子就是计算1到的整数平方的和,
使用浮点表示。在每个循环中,要求整数到浮点的转 换。 float sum,t; int i; sum=0.0f; for(i=0;i<=10;i++){ t=(float)i; sum+=t*t; } t=sum=0.0f; t+=1.0f;

21 MicroBlaze浮点单元 3. 均方根实时库函数 标准C实时数学库函数使用双精度算法。当使用单
精度的FPU时,调用均方根函数sqrt()导致低效率的仿 真例程,而不使用FPU指令。 解决方法是使用非-ANSI的函数sqrtf(),使用FPU单 精度的算法。

22 MicroBlaze浮点单元 #include <math.h> … float x=-1.0f; float x=1.0f;
x=sqrtf(x); /*单精度 float x=-1.0f; x=sqrt(x); /*双精度

23 MicroBlaze流连接接口 MicroBlaze处理器可配置为16个快速单一链接
(Fast Simplex Link,FSL)接口或者AXI4-Stream接口, 每个接口由一个输入和输出端口组成。通道是专用单向 的点对点数据流接口。 MicroBlaze接口为32比特宽度。一个独立的比特用来 描述发送/接收字是控制类型还是数据类型。MicroBlaze ISA中的get指令用来从端口到通用寄存器传输信息;put 指令以相反的方向传输信息。指令有4种类型:阻塞数 据、非阻塞数据、阻塞控制、非阻塞控制。

24 MicroBlaze流连接接口 每个链路提供到处理器流水线低延迟的专用接口。这 是使用定制加速器和处理器扩展的理想接口。图3.2给出
了使用定制硬件加速的例子。 图3.2 定制硬件加速原理 寄存器 定制硬件加速

25 MicroBlaze流水线结构 MicroBlaze处理器的指令采用流水方式执行。大多数 指令需要一个时钟周期完成。所以,一个特定的所需要的
时钟周期和流水线级数是一致的。只有少数指令需要多个 时钟周期完成,通过流水线断流方式实现。

26 MicroBlaze流水线结构 当从较慢的存储器执行时,需要多个时钟周期完成取 指过程。这个过程直接影响流水线的效率。MicroBlaze处
理器通过指令预取缓冲区来减少这个过程对流水线性能的 影响。当流水线在执行过程中断流,预取缓冲区连续加载 顺序指令。当执行指令继续进行时,可以提取新的指令到 预取缓冲区中,而不需要等待对指令存储器的访问完成。

27 MicroBlaze流水线结构 当采用面积优化时,流水线分为三级,即:取指,译 码和执行,这样可以减少硬件开销。图3.2给出了三级流
水结构。 取指 译码 执行 断流 指令1 指令2 指令3 周期1 周期7 图3.3 三级流水结构

28 MicroBlaze流水线结构 当不使用面积优化时,流水线分为五级:取指、译 码、执行、访问存储器和回写,这样可以提高性能。图
3.3给出了五级流水结构。 指令1 指令2 指令3 周期1 周期9 图3.4 五级流水结构 取指 译码 执行 访存 回写 断流

29 MicroBlaze流水线结构 2 .分支 当执行采纳分支(taken branch,分支就是程序中跳转
指令)时,一般情况下,流水线的取指、译码和预取缓冲 区将被清空。取指级从所计算的分支地址中重新取指。 MicroBlaze中的采纳分支需要三个时钟周期才能完 成,而其中的两个时钟周期用来填充流水线。为了减少所 产生的延迟,处理器采用延迟隙(delay slot)的分支处理 方法。

30 MicroBlaze流水线结构 3. 延迟隙 当采用延迟隙的采纳分支时,只有取指阶段被清 除。而允许完成译码过程。这种技术,将延迟从两个
周期减少到一个周期。 执行带有延迟隙的分支时,只需要在指令助记符 后增加字母D即可,比如BNE指令不执行后面的指 令,而BNED在找到分支的位置前,就已经指令执行 下一条指令。

31 MicroBlaze流水线结构 需要注意的是,延迟隙不能使用下面的指令: IMM、分支、断点。那些引起可恢复异常的指令是允许使
  需要注意的是,延迟隙不能使用下面的指令: IMM、分支、断点。那些引起可恢复异常的指令是允许使 用延迟隙的。如果在延迟隙中产生异常,则异常句柄(异 常服务程序)负责转向执行分支目标(这个分支目标保存 在BTR寄存器内)。如果设置了ESR[DS]位,R17寄存器 就不是有效的,除非该寄存器保存着引起异常指令的下一 条指令的地址。

32 MicroBlaze流水线结构 4.分支目标高速缓存 为了提高分支的性能,MicroBlaze提供分支目标高速
缓存(Branch Target Cache,BTC)和分支预测策略。 BTC中保存着每个最开始指令所遇到的立即分支和 返回指令的目标地址。下一次再遇到时,通常能在BTC 中找到,指令加载PC简单的变为所保存的应采纳的目标 地址。无条件分支和返回指令通常被采纳,然而有条件 分支使用分支预测,即不采纳不执行的指令。

33 MicroBlaze特权指令 MicroBlaze处理器的特权指令有以下几类:
  (1)GET、PUT、NGET、NPUT、CGET、CPUTN、CGET、 NCPUT,这些命令和FSL接口操作有关; (2)WIC、WDC,这些指令和写数据、指令缓存有关; (3)MTS,写特殊寄存器指令; (4)MSRCLR、MSRSET,这些指令分别是读,然后清除/置位 特殊寄存器; (5)BRK,断点指令; (6)RTID、RTBD、RTED,这些指令分别是从中断返回、从断 点返回和从异常返回指令; (7)BRKI,立即打断指令;

34 MicroBlaze处理器特权指令 这些指令都是对处理器的内核操作,试图在用户模式 下使用这些特权指令,将引起异常,可以使用以下几种方
法脱离用户模式和虚拟模式: (1)硬件复位(包括调试复位); (2)硬件异常; (3)不可屏蔽断点或硬件断点; (4)中断; (5)执行指令”Bralid Re,0x8”,执行用户向量异常操作; (6)执行软件断点指令“BRKI”,跳转到地址0x8或0x18;

35 MicroBlaze特权指令 所有以上这些情况(除硬件产生复位外),虚拟模式 和用户模式的状态保存在MSR寄存器内的UMS和VMS比 特位。
通过使用BRALID和BRKI指令,用户模式下的应用程 序将控制权交给系统服务例程(特权模式程序),并且跳 转到物理地址0x8。执行这条指令产生系统异常条件。异 常句柄(异常服务程序)决定调用哪个系统服务例程和是 否允许调用服务。如果授权许可,异常句柄代表应用程序 执行真正的程序调用。

36 MicroBlaze特权指令 异常服务例程所希望执行环境要求执行序言指令
(prologue instruction)来建立所要求的环境。这些指令用 于创建保持程序信息(活动的纪录)的存储块、更新和初 始化指针和保存易失性存储器(这些寄存器是系统服务例 程需要使用的)。当创建可执行模块时,链接器能插入序 言指令,或者作为系统调用中断句柄或者系统库例程的存 根代码(stub code)。 从系统服务例程返回和上面描述的过程相反。执行结 束代码(Epilog code)打开和取消分配的活动纪录,恢复 指针和恢复存易失性存储器。中断句柄通过执行异常指令 RTED返回到应用程序。

37 MicroBlaze指令类型 MicroBlaze处理器指令为32比特长度,指令分为类
型A和类型B。表3.3a给出了类型A的指令结构,表3.3b 给出了类型B的指令结构。 表3.3a 类型A的指令结构 操作数 目标寄存器 源寄存器A 源寄存器B 表3.3b 类型B的指令结构 操作数 目标寄存器 源寄存器A 立即数(16位)

38 MicroBlaze指令类型 类型A指令包含两个源寄存器操作数和一个目的寄 存器操作数。 类型B指令一个源寄存器、一个16位的立即数(通
过imm指令扩展到32位)和一个目的寄存器操作数。 MicroBlaze处理器的指令完成的功能有:算术操 作、逻辑操作、分支操作、加载/存储操作和其它特殊操 作。

39 MicroBlaze处理器的寄存器-通用寄存器
18个特殊寄存器(取决于配置)。 32个32位的通用寄存器为R0-R31。寄存器的值在下载 比特流文件时复位为0x 。

40 MicroBlaze处理器的寄存器-特殊寄存器 程序计数器(Program Counter,PC)
程序计数器是一个32位的被执行指令的地址。该地址可 以通过MFS指令读取,但不能使用MTS指令写。当执行读 操作时,使用mfs r2,0指令保存执行指令的地址。表2.3给 出了PC寄存器。

41 MicroBlaze处理器的寄存器-特殊寄存器 机器状态寄存器(Machine Status Register,MSR)
通过mfs指令。MSR寄存器也可以通过MTS指令进行写操 作,或者使用专用的MSRSET和MSRCLR指令对寄存器 进行操作。 表2.4给出了MSR寄存器的标志,表2.5给出了MSR寄 存器各个标志位的含义。

42 MicroBlaze处理器的寄存器-特殊寄存器 机器状态寄存器(Machine Status Register,MSR)

43 MicroBlaze处理器的寄存器-特殊寄存器 机器状态寄存器(Machine Status Register,MSR)

44 MicroBlaze处理器的寄存器-特殊寄存器

45 MicroBlaze处理器的寄存器-特殊寄存器 异常地址寄存器(Exception Address Register,EAR)
址有: 非对齐访问引起的异常的访问地址; DPLB或DOPB引起的异常的访问地址; 数据保存异常时的(虚拟)有效的访问地址; 指令保存异常时的(虚拟)有效的访问地址; 指令TLB的失败(没有命中)异常时的(虚拟)有效的访问地址; 该寄存器可以通过MFS指令读出。表2.6给出了EAR寄 存器。

46 MicroBlaze处理器的寄存器-特殊寄存器异常地址寄存器(Exception Address Register,EAR)

47 MicroBlaze处理器的寄存器-特殊寄存器异常状态寄存器(Exception Status Register,ESR)
ESR寄存器保存了处理器的状态,可以通过MFS指令 读取ESR的内容。表1.6给出了ESR寄存器的标志,表2.7 给出了ESR寄存器各个标志位的含义。

48 MicroBlaze处理器的寄存器-特殊寄存器异常状态寄存器(Exception Status Register,ESR)

49 MicroBlaze处理器的寄存器-特殊寄存器 分支目标寄存器(Branch Target Register,BTR)
只有当MicroBlaze处理器配置使用异常功能时,BTR 寄存器才存在。寄存器为所有延迟隙分支指令(除 MSR[EIP]=0外)保存了分支目标的地址。如果一个延迟 隙指令(ESR[DS]=1)引起异常,异常句柄将执行保存在 BTR中的地址,而通常的异常时执行保存在R17中的地址。 可以用MFS指令读取该寄存器,表2.8给出了BTR寄存器。

50 MicroBlaze处理器的寄存器-特殊寄存器 分支目标寄存器(Branch Target Register,BTR)
只有当MicroBlaze处理器配置使用异常功能时,BTR寄 存器才存在。寄存器为所有延迟隙分支指令(除 MSR[EIP]=0外)保存了分支目标的地址。如果一个延迟 隙指令(ESR[DS]=1)引起异常,异常句柄将执行保存在 BTR中的地址,而通常的异常时执行保存在R17中的地址。 可以用MFS指令读取该寄存器,表2.8给出了BTR寄存器。

51 MicroBlaze处理器的寄存器-特殊寄存器 浮点状态寄存器(Floating Point Status Register,FSR)
FSR保存了浮点单元的状态。可以使用MFS指令读 取该寄存器。表2.9给出了FSR寄存器。

52 MicroBlaze处理器的寄存器-特殊寄存器 异常数据寄存器(Exception Data Register,EDR)
EDR寄存器保存了引起FSL异常,所读取的数据。 该寄存器可以使用MFS指令读取。表2.10给出了EDR寄 存器

53 MicroBlaze处理器的寄存器-特殊寄存器 进程标识寄存器 (Process Identifier Register,PID)
PID寄存器用来在MMU地址翻译时,唯一标示软件进 程。通过C_MMU控制(C_MMU>1)。PID寄存器可以使 用MFS和MTS指令进行访问。PID寄存器也用来访问TLB: 当写TLBHI时,PID的值保存在TLB的TID位域内;当读 TLBHI时,TID域的值被保存在PID内。表2.11给出了 PID寄存器。

54 MicroBlaze处理器的寄存器-特殊寄存器 区域保护寄存器(Zone Protection Register,ZPR)
ZPR寄存器用于重载在TLB入口所定义的MMU存储器 保护设置,当C_MMU>1且C_MMU_ZONES>0时,该寄存 器有效。可以使用MFS和MTS指令访问该寄存器。表2.12 给出了ZPR寄存器,表2.13给出了ZPR寄存器标志位的含 义。

55 MicroBlaze处理器的寄存器-特殊寄存器 区域保护寄存器(Zone Protection Register,ZPR)

56 转换旁视缓冲低位寄存器 (Translation Look-Aside Buffer Low Register,TLBLO)
(虚拟地址到物理地址的转换表)。 TLBLO寄存器用来访问MMU统一的TLB入口,通过 C_MMU配置选项控制(当C_MMU>1有效)。可以使用 MFS和MTS指令访问该寄存器。当读写TLBLO时, UTLB入口通过TLBX寄存器进行索引。表2.14给出了 TLBLO寄存器,表2.15给出了TLBLO寄存器标志位的含 义。

57 转换旁视缓冲寄存器(Translation Look-Aside Buffer Low Register,TLBLO)

58 转换旁视缓冲低位寄存器 (Translation Look-Aside Buffer Low Register,TLBLO)

59 转换旁视缓冲低位寄存器 (Translation Look-Aside Buffer Low Register,TLBLO)

60 转换旁视缓冲高位寄存器TLBHI (Translation Look-Aside Buffer High Register)
  TLBHI寄存器访问MMU统一的UTLB入口,该寄存 器由C_MMU控制(C_MMU>1有效)。可以使用MFS和 MTS指令访问该寄存器。当读些TLBHI时,通过TLBX 索引到的UTLB的入口被访问。 当访问TLB入口时,PID有以下的用途:写TLBHI 时,PID的值就被保存到TLB入口的TID位域内; 当读TLBHI时,TID位域的值被保存在PID中。   表2.16给出了TLBHI寄存器,表2.17给出了TLBHI寄 存器的标志位。

61 转换旁视缓冲高位寄存器TLBHI (Translation Look-Aside Buffer High Register)

62 转换旁视缓冲索引寄存器TLBX (Translation Look-Aside Buffer Index Register)
  当访问TLBIO和TLBHI寄存器时,TLBX寄存器用 来索引统一的UTLB。当C_MMU>1时,该寄存器有效。 该寄存器可以使用MFS和MTS指令访问。表2.18给出了 TLBX寄存器,表2.19给出了TLBX寄存器的标志位。

63 转换旁视缓冲索引寄存器TLBX (Translation Look-Aside Buffer Index Register)

64 转换旁视缓冲索引寄存器寻找索引寄存器TLBSX(Translation Look-Aside Buffer Search Index Register)
  TLBSX寄存器用来在UTLB中寻找一个虚拟页面,当 C_MMU>1时,该寄存器有效。该寄存器能通过MTS进行 写操作,但不能读。表2.20给出了TLBSX寄存器,表2.21 给出了TLBSX寄存器的标志位。

65 转换旁视缓冲索引寄存器寻找索引寄存器(Translation Look-Aside Buffer Search Index Register,TLBSX)

66 处理器版本寄存器 (Processor Version Register,PVR)
  处理器的C_PVR配置选项控制PVR寄存器。 1) 当C_PVR=0,处理器不实现任何PVR,且 MSR[PVR]=0; 2)当C_PVR=1,处理器只实现PVR0,如果 C_PVR=2,处理器实现所有的12个PVR寄存器。该寄存 器可以使用MFS指令读取。 该寄存器实际上记录了处理器的配置和相关配置的 版本,以及所使用的SOPC的型号等信息。

67 MicroBlaze处理器的虚拟存储器管理
址访问4GB地址空间。处理器通过转换模式,以下面两种 方式理解该地址空间。   1、在实模式下,有效地址直接访问物理存储器;   2、在虚拟模式下,通过处理器的虚拟存储器管理硬 件(MMU)有效地址被转化物理地址。

68 MicroBlaze处理器的虚拟存储器管理
  在虚拟模式下,系统软件在物理地址空间内的任何地 方都能够重定位程序和数据。当活动的程序和数据需要物 理空间时,那些非活动的程序和数据就从物理存储器中移 出。   重定位使得程序好像有比实际物理存储器更多的存储 空间,这样程序员就不用担心存储空间不够用的情况。程 序要也不需要知道给其它软件进程和硬件设备所分配的物 理存储器地址。处理器将程序可见的地址转换成合适的物 理地址。

69 MicroBlaze处理器的虚拟存储器管理
  虚拟模式提供了更多的对存储器保护的控制能力。当 未授权的访问小到1KB的存储器块时也能被保护。保护和 重定位技术使得系统软件能支持多任务处理。这种能力使 得多个程序能以同步或几乎同步的方式执行。   当C_USE_MMU=3时,MicroBlaze中的存储器管理单 元MMU可以实现虚拟模式。MMU控制将有效地址转换成 物理地址的映射和保护。通过使用这种控制能力,系统软 件能够实现请求分页存储器和其它存储器管理策略。

70 MicroBlaze处理器的虚拟存储器管理
 MMU完成以下几个功能:  1)将有效地址转化成物理地址;  2)在地址转换时,控制页面级访问;  3)在使用区域时,提供额外的虚拟模式保护控制;  4)对指令地址、数据地址的转换和保护提供独立的控 制;  5) 支持8种页面尺寸:1KB,4KB,16KB,64KB, 256KB,1MB,4MB和16MB;  6)软件提供页面替换策略;

71 MicroBlaze处理器的虚拟存储器管理 -实模式
  当处理器取指或使用加载/存储指令访问数据时,处 理器查看存储器。程序使用处理器计算得到的32位的有效 地址查看存储器的位置。当使用实模式时,物理地址和有 效地址是一样的。处理器复位完成后,处理器工作在实模 式。通过清除MSR寄存器的VM比特来使用实模式。   在实模式下使用有效地址,可以执行对物理存储器的 数据访问(加载/保存)。在实模式下,系统软件不提供 地址转换的功能。但是在C_USE_MMU>1的条件下,可以 使用全存储器访问保护功能。实模式下的存储器管理比虚 拟模式下的存储器管理更直接。在一些简单的嵌入式环境 中,实模式下的存储器管理是一种很好的解决方案。

72 MicroBlaze处理器的虚拟存储器管理 -虚拟模式
 如图2.3所示,在虚拟模式下,将有效地址转换成物理 地址。通过设置MSR寄存器的VM比特来使能虚拟模式下 的存储器管理。

73 MicroBlaze处理器的虚拟存储器管理 -虚拟模式
 每个地址都是由页号和偏移地址组成。页号为MMU得 到的转换地址部分,偏移表示未转换的地址在页面内的位 置。虚拟地址中包含PID寄存器中的进程ID(PID)号。 虚拟页面号由PID号和有效的页面号组成。N值由页面大 小确定。  系统软件维护一个大的页转换表,该表包含了将虚拟页 转换到物理页的入口。页转换入口所定义的页面大小决定 了页号和偏移地址。比如:页面大小为4KB,页号位域应 该为20位,即n=19,偏移量位域为12比特。VPN为28比特。

74 MicroBlaze处理器的虚拟存储器管理 -虚拟模式
  最常使用的页转换保存在TLB中。当转换虚拟地址 时,MMU为匹配的PID和VPN检查页转换入口。不是检查 所有的入口,只检查包含处理器TLB的那些入口。当与 VPN匹配的页转换入口找到后,从入口读取相应的物理页 面,并且和偏移地址组成32位的物理地址。该物理地址被 处理器用作查看存储器。

75 MicroBlaze处理器的虚拟存储器管理 -虚拟模式
 系统软件用PID号唯一的标示运行在处理器中的一个软 件进程(任务,子程序,线程)。独立编译的进程能运 行在有效地址空间范围内,并且可以和其它进程重叠。 如果系统支持多任务,系统软件必须解决重叠的问题。 给每一个进程分配一个PID号,系统软件就能解决重叠的 问题,这个问题的解决是通过重定位每一个进程到虚拟 地址空间唯一的一个区域。虚拟空间映射能独立的将每 一个进程转换到对应得物理地址空间。

76 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 页转换表(Page-Translation Table)
  页转换表是由软件定义和软件管理的数据结构,这 个数据结构负责页面转换。软件管理的页转换是为了满足 嵌入式系统的应用在某些方面进行了权衡。   嵌入式系统要求有一个紧耦合控制的操作环境和应用 软件集合。通过以下方式对嵌入式系统的虚拟存储器管理 进行优化:

77 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 页转换表(Page-Translation Table)
  1、页转换表的结构考虑了页表查找性能的最大化(页 表查找,table walking),所以对于一个给定的页转换入口 可以很快定位。大多数的通用处理器通过使用索引页表 (简单的方法,大的页表)或者哈希页表(复杂的方法, 小的页表)。使用软件的页表查找,可以使用任何适应于 特定的嵌入式系统的混合组织形式。优化了页面尺寸和访 问时间。

78 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 页转换表(Page-Translation Table)
 2、为应用模块、设备驱动、系统服务例程和数据提供 独立的页面尺寸。这种独立的页面大小的选择使得系统软 件通过减少碎块(未使用的存储器空间)来更好的使用存 储器。比如,一个大的数据结构分配16MB的页面,而小 的I/O设备驱动只分配1KB的页面。  3、页面替换能尽量减少在页面转换缺失的产生。下面 将要介绍,经常使用的页转换将被存放在TLB中。软件负 责确定哪个转换存放在TLB中,当要求新的转换时哪个页 面被替换。页面替换策略能避免失败,然而页面转换入口 常常进出TLB中(即经常被替换)。替换策略应该避免替 换关键的页面,一些进程被“锁定”在一个页面中。

79 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 页转换表(Page-Translation Table)
  软件管理的统一64入口的TLB,缓存指令和数据页翻 译入口的一部分。软件负责从系统存储器的页转换表中读 取入口,并且将入口保存在TLB中。

80 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 页转换表(Page-Translation Table)
  1、统一的TLB(Unified TLB):UTLB包含64个入 口,并且是伪关联的。指令页面和数据页面转换保存在任 意一个UTLB入口。软件负责初始化和管理UTLB。   2、指令投影TLB(Instruction Shadow TLB):ITLB 包含了页面转换入口,并且是全关联的。在ITLB内保存 的页面转换入口是最近来自于UTLB的指令页面转换访问。 ITLB也用于减少指令转换和UTLB更新操作的冲突。硬件 负责初始化和控制ITLB(对软件是透明的)。

81 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 页转换表(Page-Translation Table)
 3、数据投影TLB(Data Shadow TLB):DTLB包含了 页面转换入口,并且是全关联的。在DTLB内保存的页面 转换入口是最近来自于UTLB的数据页面转换访问。ITLB 也用于减少数据转换和UTLB更新操作的冲突。硬件负责 初始化和控制DTLB(对软件是透明的)。图2.4给出了 TLB的转换流程。图2.5给出了TLB入口的格式

82 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB

83 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB

84 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 1)虚拟页识别(TAG、SIZE、V、TID)  2)物理页识别(RPN、SIZE)  3)访问控制(EX、WR、ZSEL)  4)存储属性(W、I、M、G、E、U0)

85 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 表2.22给出了TLB入口的SIZE位域和转换的页面大小, 该表描述了页大小如何确定在TAG中使用地址位,如何确 定偏移地址的比特位,如何在物理地址中确定物理页所使 用的比特位。

86 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB

87 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
  当MMU将虚拟地址转换成物理地址时,首先为页转 换入口检查合适的投影TLB。如果找到一个入口,该入 口用于访问物理存储器。如果没有找到入口,MMU则在 UTLB检查入口,这样就产生2-32个时钟周期延迟。当同 时访问UTLB时,DTLB的优先权高于ITLB。   图2.6给出这个查找在TLB和UTLB查找入口的过程。 所有有效的入口都被检查。

88 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB

89 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 当TLB入口满足下面条件时,产生TLB命中:  1、入口有效;  2、入口的TAG位域和EPN的有效地址匹配;  3、入口的TID位域和PID匹配;   如果以上条件均不满足,则产生TLB缺失条件。当 该条件产生时则引起异常。下面给出这个异常的描述:

90 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 TID为0时,MMU不会比较TID和PID,此时只比较TAG 和EA[EPN],该条件下表示一个进程独立的转换。那些被 全局所有进程访问的页面的TID值分配0。PID为0时,并 不识别一个能访问任何页面的进程。当TID=0,且PID=0 时产生页面转换命中条件。对软件来说这是可能的去加载 有多个入口的TLB(匹配EA[EPN]和PID)。因此,这被 作为编程错误并导致不确定的行为。

91 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 当产生命中时,MMU从相应的TLB的入口读取RP位域。 比如,如果SIZE标明256KB的页面尺寸,RPN[0:13]表 示物理页号并且用来形成物理地址,没有使用RPN[14: 21],这些位在初始化TLB入口时必须清零。  在访问物理存储器前,MMU检查存储属性以决定如何 去访问页面。存储属性标识了存储器访问的缓存策略。  TLB访问失败将产生异常。这将中断指令的执行,并 且将控制权交给中断句柄来解决这个失败。下面两种原 因会造成TLB访问失败:

92 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
  1、没有找到匹配的TLB入口,导致TLB缺失;   2、找到匹配的TLB入口,但是由于存储属性或域保 护导致无法访问页面。   当产生中断时,处理器清除MSR[VR]位后进入实模 式。在实模式下,将不在进行地址转化和存储器保护检 查。在系统软件使用页转换入口初始化UTLB后,使用 中断句柄管理运行在实模式下的UTLB。

93 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 1、数据存储异常   当使用虚拟模式时,由于下面的原因产生对页面的 访问被禁止:   用户模式 TLB入口指向的是保护区域 (ZPR[Zn]=00),禁止对页面访问。当使用加载和保存 指令时产生这种情况;TLB入口指向只读页面 (TLBLO[WR]=0)。当使用保存指令时产生这种情况;   特权模式 TLB入口指向只读(TLBLO[WR]=0)。 当使用保存指令时产生这种情况;

94 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
 2、指令存储异常  用户模式 TLB入口指向的是保护区域 (ZPR[Zn]=00),禁止对页面访问。当使用加载和保存指 令时产生这种情况;TLB入口指向只读页面 (TLBLO[WR]=0)。当使用保存指令时产生这种情况;  特权模式 TLB入口指向只读页面(TLBLO[G]=0)。 当使用保存指令时产生这种情况;

95 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 转换旁视缓冲区TLB
  在虚拟模式下,在TLB中没有找到有效和匹配的TLB 入口时,将产生数据TLB缺失异常条件。任何一个加载或 保存指令都可以引起数据TLB缺失异常。   4、指令TLB缺失异常 入口时,将产生指令TLB缺失异常条件。任何一个加载或

96 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 访问保护
  系统软件能访问保护来保护敏感的存储器区域不受到 非法访问,系统软件能在用户模式和特权模式下,限制存 储器的访问。这种限制作用于读、写、取指操作。TLB入 口为虚拟页面标识了对页面的访问类型。TLB入口也指明 了在区域保护寄存器内的区域保护位域。

97 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 访问保护
 1、TLB访问保护控制  每一个TLB控制三种访问类型:  1)进程   通过对每一进程分配一个PID号,进程阻止未授权的 访问。当系统软件开始用户模式时,它将应用的PID号放 入PID寄存器中。当开始执行应用时,存储器地址使用 TLB入口和TLBHI寄存器中与PID匹配的TID位域进行转换。 这使系统软件能限制应用对某些标识的存储区域的访问。

98 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 访问保护
 2)执行  如果从标识为可执行的虚拟存储器加载指令,指令处理 器执行这些指令。清除TLBLO [EX]将阻止来在这些页面 的指令执行,代替产生指令存储中断(ISI)。在加载指 令时不产生ISI,而执行指令时产生ISI。 3)读/写  数据只能写入那些标识为可写的页(TLBLO[WR]=1)。 清除写标志,该页面变为只读。试图对只读页面进行写操 作将产生数据中断(DSI)。

99 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 访问保护
 2、区域保护  区域保护用于重置在TLB入口中所标识的保护。区域是 访问保护的虚拟页面的群。区域可以包含任意数目的页面 不要求区域保存相邻页面。ZPR是一个32位的寄存器用来 标识16个区域的保护类型。详见ZPR寄存器。

100 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 UTLB管理
  UTLB是处理器MMU和存储器管理软件的接口。系统 软件管理UTLB,用来告诉MMU如何将虚拟地址转换成物 理地址。当由于缺失转换或者访问冲突引起问题时, MMU使用异常机制将问题通知系统软件。系统软件提供 中断句柄来处理这些问题。

101 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 UTLB管理
软件使用MFS和MTS指令读写UTLB。这些指令根据 UTLB64个入口中的一个入口使用TLBX寄存器的索引。 标记和数据部分独立的读写,软件必须执行MFS和MTS 指令完成对入口的访问。 ULTB使用TLBSX寄存器来寻找一个指定的转换。 通过使用有效地址,TLBSX定位转换,同时将相应的 UTLB索引加载到TLBX寄存器中。  当使用MTS指令清除TLB入口的标记部分的有效位 时,单独的UTLB入口是无效的。

102 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 记录和修改页访问
 软件管理虚拟存储器带来几方面挑战:  1、在虚拟存储器环境下,软件和数据经常消耗比实际 可利用的物理存储器更多的存储器资源。一些软件和数据 页必须存放在外部物理存储器中,比如在硬件驱动器。理 想情况下,常用的页面保存在物理存储器中,而那些不常 使用的页面保存在其它地方。  2、当保存在物理页面中的页需要为新的页面腾出空间 时,应该知道被替换的页面是否已经被修改过。如果被修 改了,那么必须先于加载新的页面之前被保存。否则,不 需要保存被替换页面。

103 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 记录和修改页访问
  3、有限数目的页转换被保留在UTLB中,剩余的页转 换保存在页转换表中。当在UTLB中没有找到转换时(由 于缺失),系统软件必须确定丢弃哪个UTLB入口,以便 加载缺失的转换。系统软件应该替换的那些不常使用的转 换。

104 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 记录和修改页访问
 用有效的方法解决以上问题要求跟踪页面的访问和页 面的修改。MicroBlaze硬件不跟踪页面访问和页面修改。 系统软件能够使用TLB缺失异常和数据存储异常来搜集 这个信息。当搜集到这些信息后,这些信息就保存在于 页面转换表相关的数据结构中。

105 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 记录和修改页访问
  页面访问信息用来确定哪个页面应该保留在物理存储 器中,在需要物理存储器时哪个页面需要被替换。系统软 件使用TLB中有效为来监视页面访问。这就要求在初始化 时将其初始化成无效的,以便说明这些页面没有被访问 过。 首次试图访问页面将产生TLB缺失异常,这可能是由于 UTLB被标记为无效的或者是由于在UTLB中没有出现页 面转换。TLB缺失句柄使用有效的转换更新UTLB。将设 置有效位作为记录页面和页面转换已经被访问了。TLB缺 失句柄也用来以相关单独的数据结构记录信息,这些信息 和数据转换入口相关联。

106 MicroBlaze处理器的虚拟存储器管理 -虚拟模式 记录和修改页访问
  页面修改信息用来指示是否以前的页面被新的页面写 过,或者老页面必须首先被保存在硬盘中。系统软件使用 TLB入口的写保护位来监视页面修改。这就要求页面转换 被初始化成只读的,以便说明这些页面没有被修改过。假 设页面已经被访问并且是有效的,因此首次试图向页面写 入数据将产生异常。如果软件允许向页面写入数据,数据 存储句柄将页面标记为可写的和返回。设置写保护位作为 对修改页面的记录。数据存储句柄也用来以独立的数据结 构记录信息,这些信息和页转换入口相关联。   当首次使用虚拟模式时,跟踪页面信息非常有用。

107 MicroBlaze处理器的事件及处理 MicroBlaze支持复位、中断、用户异常、断点和硬件异
常。下面将描述和这些事件相关的处理流程。这些事件 按优先级从高到低依次为:复位、硬件异常、非屏蔽断 点、断点、中断、用户矢量(异常)。  表2.23记录了这些事件相关的存储器地址和保存返回地 址的寄存器。每个矢量分配了两个地址以便允许全地址 范围分支(要求 BRAI IMM指令)。地址范围0x28-0x4f 是为将来的Xilinx软件支持而保留的。

108 MicroBlaze处理器的事件及处理

109 MicroBlaze处理器的事件及处理-复位
当复位或Debug复位产生时,MicroBlaze清空流水 线,并且从复位向量中加载指令。外部复位信号高有效, 且维持至少16个时钟周期。 下面给出复位过程的等效伪代码。 1)PC ← 0x 2)MSR ← C_RESET_MSR 3)EAR ← 0; ESR ← 0; FSR ← 0 PID ← 0; ZPR ← 0; TLBX ← 0

110 MicroBlaze处理器的事件及处理-硬件异常
非法指令、指令和数据总线错误、非对齐访问。如果处理 器配置使用硬件除法器,则使能除数为0的异常。当处理 器配置使用浮点单元FPU时,处理器可以陷入下面的浮点 异常条件:下溢、上溢、浮点除数为0、无效操作和亚正 常操作数错误。 当处理器配置有MMU时,处理器能陷入下面的异常: 非法指令异常、数据存储异常、指令存储异常、数据TLB 缺失异常、指令TLB缺失异常。 硬件异常产生时,MicroBlaze清空流水线,并且进入硬 件异常向量(0x20)。在异常周期的执行级指令不会被执 行。

111 MicroBlaze处理器的事件及处理-硬件异常
1、对于MMU异常(数据存储异常、指令存储异常、数 据TLB缺失异常、指令TLB缺失异常),在返回时使用合 理的程序寄存器值加载寄存器R17来重新执行这些引起异 常的指令。如果有的话,调整值来返回到前面的IMM指 令。 如果由分支延迟隙引起异常,调整值到返回分支指令, 如果有的话,包括调整到前面的IMM指令。

112 MicroBlaze处理器的事件及处理-硬件异常
2、对于其它异常,用随后的指令的程序计数器的值 加载到R17。如果由于由分支延迟隙引起异常,设置 ESR[DS]。在这种情况下,异常句柄将从保存在BTR中的 分支目标地址继续执行。 当执行RTED指令时,MSR寄存器的EE和EIP位自动 还原。当执行RTED、RTBD、RTID指令时,MSR寄存器 的VM和UM位从VMS和UMS自动还原。

113 MicroBlaze处理器的事件及处理-异常产生
1. 流异常 流异常(FSL或者AXI)是由于执行get或getd指令, 而’e’比特被设置成1,没有控制位匹配。 2.指令总线异常 指令总线异常是由于从存储器读取数据时引起错误产 生的。

114 MicroBlaze处理器的事件及处理-异常产生
(1)指令外设AXI4接口(M_AXI_IP)异常是由于 M_AXI_IP_RRESP上错误响应引起的; (2)指令高速缓存AXI接口(M_AXI_IC)异常是由于 M_AXI_IC_RRESP上错误响应引起的。只有当 C_ICACHE_ALWAYS_USED设置为1,高速缓存被 关闭时才产生该异常。其他情况下,忽略响应。 (3)指令处理器本地总线PLB异常是由于从设备的活动读 错误信号(IPLB_MRderr)或者来自仲裁器的超时信 号(IPLB_MTimeout)。 (4)指令一侧的本地存储器(ILMB)产生指令总线异 常,是由于当C_FAULT_TOLERANT设置为1,并且 LMB存储器出现不可修复的错误引起的。 (5)CacheLink(IXCL)接口不能产生指令总线异常。

115 MicroBlaze处理器的事件及处理-异常产生
3、非法操作码异常 非法操作码异常由存在指令的0-5比特位不是有效的主 要操作码而产生。而指令的第6-31比特不做此检查。如果 那些可选的指令没有使能,处理器则认为这些指令是非法 指令。如果使能可选的特性C_OPCODE_0X0_ILLEGAL, 当指令为0x 时,仍会产生非法操作码异常。

116 MicroBlaze处理器的事件及处理-异常产生
4、数据总线异常 数据总线异常是由于从存储器读取数据或者写存储 器时引起错误产生的。 (1)数据外设AXI4接口(M_AXI_DP)异常是由于AXI_DP_RRESP上错误响应产生的。 (2)数据高速缓存AXI接口(M_AXI_DC)异常是由于下面的原因。 ——M_AXI_DC_RRESP或者M_AXI_DP_BRESP上错误响应; ——使用LMX的互斥访问时,M_AXI_DC_RRESP上的OKEY响应; 只有当C_ICACHE_ALWAYS_USED设置为1,高速缓存被关 闭时或者是用LWX或者SWX执行互斥访问时才产生该异常。其他情况下,忽略响应。

117 MicroBlaze处理器的事件及处理-异常产生
(3)数据处理器本地总线PLB异常是由于从设备的活动 错误信号(DPLB_MRderr)或者来自仲裁器的超时信 号(DPLB_MTimeout)。 (4)数据一侧的本地存储器(DLMB)产生指令总线异 常,是由于当C_FAULT_TOLERANT设置为1,并且 LMB存储器出现不可修复的错误。 (5)CacheLink(DXCL)接口不能产生指令总线异常。

118 MicroBlaze处理器的事件及处理-异常产生
5、非对齐访问 非对齐访问异常是由于字访问地址总线设置为30或31 位,或者半字访问设置为31比特。 6、除数为0异常 除数为0异常时由于整数除法中的除数为0产生。 7、FPU异常 FPU异常时由于下溢、上溢、浮点除数为0、无效操作 和亚正常操作数错误产生。

119 MicroBlaze处理器的事件及处理-异常产生
8、特权指令异常 特权指令异常是由于在用户模式下使用特权指令引起 的。 9、数据存储异常 数据存储异常时由于试图访问存储器中的数据而导致 存储器保护冲突而产生。 10、指令存储异常 指令存储异常时由于试图访问存储器中的指令而导致

120 MicroBlaze处理器的事件及处理-异常产生
11、数据TLB缺失异常 数据存储异常时由于试图访问存储器中的数据,而没 有有效的TLB入口和使能虚拟保护模式引起。 12、指令TLB缺失异常 指令存储异常时由于试图访问存储器中的指令,而没

121 MicroBlaze处理器的事件及处理-异常产生 下面给出硬件异常过程的等效伪代码。
if instruction preceeded by IMM then r17 ← PC - 4 elser17 ← PC else r17 ← PC + 4 PC ← 0x MSR[EE] ← 0, MSR[EIP]← 1 MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0 ESR[EC] ← exception specific value ESR[ESS] ← exception specific value EAR ← exception specific value FSR ← exception specific value ESR[DS] ← exception in delay slot if ESR[DS] then BTR ← branch target PC if MMU exception then if branch preceeded by IMM then r17 ← PC - 8 else r17 ← PC - 4 r17 ← invalid value else if MMU exception then

122 MicroBlaze处理器的事件及处理-断点
硬件(外部)断点; 软件(内部)断点。

123 MicroBlaze处理器的事件及处理-硬件断点
1、硬件断点 通过断言外部断点信号(Ext_BRK和Ext_NM_BRK输 入端口)执行硬件断点。在断点,完成执行级的指令,而 译码级的指令被一个跳转到断点(0x18)的分支替换。断 点返回地址被自动加载到通用寄存器R16。MicroBlaze在 MSR的BIP标志中也设置断点。 当MSR[BIP]和MSR[EIP]设为0时,普通的硬件断点 (Ext_BRK输入端口)被处理。BIP标志禁止中断。一个 非屏蔽的断点(Ext_NM_BRK输入端口)总是被立即处 理。

124 MicroBlaze处理器的事件及处理-断点
当执行RTBD指令时,MSR寄存器中的BIP位被自动清 除。 Ext_BRK信号必须保持断言,直到产生断点,在RTBD 指令执行前释放该信号。Ext_NM_BRK信号被断言一个时 钟周期。

125 MicroBlaze处理器的事件及处理-断点
2、软件断点 使用brk和brki指令来执行软件断点。 3、延迟 从断点产生到进入断点服务例程的时间取决于当前在 执行级的指令和到存储器断点向量的延迟。

126 MicroBlaze处理器的事件及处理-断点
下面给出断点过程的等效伪代码。 r16 ← PC PC ← 0x MSR[BIP] ← 1 MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0

127 MicroBlaze处理器的事件及处理-中断
口)。如果MSR寄存器的中断使能位IE设置为1,处理器 只响应中断。 在中断,完成执行级的指令,而译码级的指令被一 个跳转到中断向量(0x10)的分支替换。中断返回地址自 动的加载到R14寄存器。此外,处理器通过清除IE位禁止 将来的中断。当执行RTID时再次自动设置IE位。 如果BIP位或EIP位设置为1时,忽略中断。

128 MicroBlaze处理器的事件及处理-中断
下面给出中断过程的伪代码。 r14 ← PC PC ← 0x MSR[IE] ← 0 MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0

129 MicroBlaze处理器的事件及处理- 用户向量(异常)
用户异常向量在0x8。用户异常是由于在软件流程中插 入“BRALID Rx,0x8”指令。尽管Rx可以是任何一个通用寄 存器,但是Xilinx推荐使用R15寄存器保存用户异常返回 地址和使用RTSD指令从用户异常句柄返回。 下面给出用户异常的伪代码。 rx ← PC PC ← 0x MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0

130 MicroBlaze处理器的指令缓存 MicroBlaze处理器有可选的指令缓存,当执行那些驻
留在LMB地址范围外部的代码时,使用指令缓存可以提高 性能。 指令缓存有以下特点: (1)直接映射(1-way 关联); (2)用户可选择的缓存地址范围; (3)可配置的缓存和标记大小; (4)AXI4接口(M_AXI_IC)或者CacheLink(XCL)接口上的缓 存; (5)选择使用4/8字的缓存行; (6)使用MSR寄存器控制打开/关闭缓存; (7)可选的WIC指令使指令缓存行无效; (8)可选的流缓冲区和预测的预取指令来提高性能; (9)可选的牺牲缓存(victim cache)来提高性能; (10)可选的数据宽度选择,使用32位或者整个缓存行;

131 MicroBlaze处理器的指令缓存 1、通用指令缓存功能 当使用指令缓存后,存储器地址分割成两部分:可缓
存的部分和非可缓存的部分。可缓存的部分由 1)C_ICACHE_BASEADDR 2)C_ICACHE_HIGHADDR 确定。 对应在此地址范围内的是可缓存的,其它地址就是非 缓存的。

132 MicroBlaze处理器的指令缓存 可缓存指令地址有两部分组成:缓存地址和标记地址。
MicroBlaze指令缓存范围为:64B和64Kb(缓存地址 线为6-16比特)。 当缓存容量小于2kB时,使用分布式的RAM实现标记 RAM和指令RAM。

133 MicroBlaze处理器的指令缓存 比如:C_ICACHE_BASEADDR=0x00300000,
C_ICACHE_HIGHADDR=0x0030ffff, C_ICACHE_SIZE=4096, C_ICACHE_LINELEN=8, 使用16位地址线可缓存的存储器容量为64KB,使用12位 地址线的缓存容量为4KB,所要求的地址标记的宽度为 16-12=4位。 在该配置下所需要的块RAM为:2RAMB16用于存储 1024个指令字,1RAMB16用于128个缓存行入口,每一个 由4比特标记,8字有效位,1线有效比特组成。总共使用 3RAM16资源。

134 MicroBlaze处理器的指令缓存 图2.7 指令缓存结构

135 MicroBlaze处理器的指令缓存 2、指令缓存操作 对于每个取指操作,指令缓存判断指令地址是否在缓 存范围内。
1)如果不在缓存范围内,缓存控制器忽略指令, 并且让M-AXI-IP、PLB或LMB完成请求。 2)如果在缓存范围内,在标记RAM的查找表查找是 否请求地址已经被缓存。 如果字和行(线)有效位被设置,且标记地址和指令 地址的标记相匹配,则查找成功。 当缓存缺失时,在AXI4(M_AXI_IC)接口请求新的 指令,并且等待存储器控制器返回相关的缓存行(线)。

136 MicroBlaze处理器的指令缓存 使用AXI4接口,C_ICACHE_DATA_WIDTH确定
数据总线宽度,32位或者整个缓存行(128位256 位); 当C_FAULT_TOLEREANT设置为1时,如果在标 记或者指令块存储器BRAM中检测到奇偶错误时产生 缓存缺失;

137 MicroBlaze处理器的指令缓存 3. 流缓冲 当使能流缓冲区时(设C_ICACHE_STREAMS=1),
跟随着上次所要求的地址,缓存将预先按顺序推测地 缓存行,直到流缓冲区满为止。流缓冲区能保持最多 两个缓存行。处理器应该从预取缓冲行的流缓冲区中 请求指令,在线性代码中,他们立即可用。 由于采用流缓冲使处理器能花更少的时间等待从存 储器中取出指令,因此能改善性能。

138 MicroBlaze处理器的指令缓存 4. 牺牲缓存(替换缓存) 当使能牺牲缓存时(C_ICACHE_VICTIMS
4. 牺牲缓存(替换缓存) 当使能牺牲缓存时(C_ICACHE_VICTIMS =2,4,8),定义了能载牺牲缓存中能保存的缓存行的 数目。当一个缓存行从缓存替换出来时,它被保存在 牺牲缓存(替换缓存)中。通过保存最近的缓存行, 处理器请求它们时,它们能更快的被取出来,因此提 高了性能。如果不使用牺牲缓存,当需要时,所有被 替换的缓存行需要从存储器中重新读出来。 使能牺牲缓存时,不能使用面积优化策略。

139 MicroBlaze处理器的指令缓存 5. 指令缓存软件支持 MSR的ICE位提供了软件控制使能和禁止缓存的能
力。禁止缓存时,默认保留缓存内容。可以使用WIC 指令或者使用MicroBlaze硬件调试逻辑使缓存无效。

140 MicroBlaze处理器的数据缓存 MicroBlaze处理器有可选的数据缓存提高性能。缓存
的存储器地址不得在LMB的地址范围内。数据缓存有以下 特点: (1) 直接映射(1-way 关联); (2)写通过或者写回; (3)用户可选择的缓存地址范围; (4)可配置的缓存和标记大小; (5)AXI4接口(M_AXI_DC)或者CacheLink(XCL)接口上的缓存; (6)选择使用4/8字的缓存行; (7)使用MSR寄存器控制打开/关闭缓存;

141 MicroBlaze处理器的数据缓存 (8)可选的WDC指令使数据缓存行无效; (9)可选的流缓冲区和推测得预取指令来提高性能;
(10)可选的牺牲缓存(victim cache)来提高性能; (11)可选的奇偶保护用于写通过缓存,如果检测到BRAM 位错误时,使缓存行无效; (12)可选的数据宽度选择,使用32位或者整个缓存行;

142 MicroBlaze处理器的数据缓存 1、通用数据缓存功能 当使用数据缓存后,存储器地址分割成两部分:可缓
存的部分和非可缓存的部分。可缓存的部分由 1)C_DCACHE_BASEADDR 2)C_DCACHE_HIGHADDR 确定。 对应在此地址范围内的是可缓存的,其它地址就是非 缓存的。

143 MicroBlaze处理器的数据缓存 可缓存数据地址有两部分组成: 1)缓存地址 2)标记地址。
MicroBlaze数据缓存范围为:64B和64Kb(缓存地址线 为6-16比特)。当缓存容量小于2kB时,使用分布式的 RAM实现标记RAM和指令RAM。

144 MicroBlaze处理器的数据缓存 比如:C_DCACHE_BASEADDR=0x00400000,
C_DCACHE_HIGHADDR=0x00403fff, C_DCACHE_SIZE=2048, C_DCACHE_LINELEN=4, 使用14位地址线可缓存的存储器容量为16KB,使用11 位地址线的缓存容量为2KB,所要求的地址标记的宽度为 14-11=3位。 在该配置下所需要的块RAM为:1RAMB16用于存储 512个数据字,1RAMB16用于128个缓存行入口,每一个 由3比特标记,4字有效位,1线有效比特。总共使用 2RAM16资源。

145 MicroBlaze处理器的数据缓存 数据缓存结构

146 MicroBlaze处理器的数据缓存 2、数据缓存操作 MicroBlaze的数据缓存实现写通过或者写回协议(由
C_DCACHE_USE_WRITEBACK参数确定)。当设置该参 数时,实现写回协议;否则实现写通过协议。当使用 MMU配置时,虚拟模式下的缓存策略,由TLB入口的W 存储属性决定,而在实模式下,使用写回策略。

147 MicroBlaze处理器的数据缓存 使用写回协议时,保存到可缓存范围的地址总是更 新缓存的数据。如果目标地址不在缓存中(缺失),缓存
中包含数据的位置将不写到存储器中(存储器位置 “脏”),在用新数据更新缓存前,通过AXI4接口 (M_AXI_DC)或者DXCL接口,将旧的数据写到外部 存储器中。如果需要写整个缓存行,是用一个猝发缓存 行写操作,否则使用单字写操作。对于字节或半字存 储,如果产生缓存缺失,在数据AXI4或者CacheLink接 口首先请求地址,而一个字存储只更新缓存。

148 MicroBlaze处理器的数据缓存 使用写通过协议时,保存到可缓存的地址范围将 通过数据AXI4或者CacheLink接口产生一个相同的字
节,半字或字到外部存储器。如果目标地址字在缓存 中,写也更新缓存数据。写缓存缺失将不加载缓存行 到缓存中。

149 MicroBlaze处理器的数据缓存 3.牺牲缓存(替换缓存) 当使能牺牲缓存时(C_ICACHE_VICTIMS=2,4,8),
定义了能在牺牲缓存中能保存的缓存行的数目。当一个 缓存行从缓存替换出来时,它被保存在牺牲缓存(替换 缓存)中。通过保存最近的缓存行,处理器请求它们 时,它们能更快的被取出来,因此提高了性能。如果不 使用牺牲缓存,当需要时,所有被替换的缓存行需要从 存储器中重新读出来。 当使能是用牺牲缓存时,使能写回策略,不能使用面 积优化策略。

150 MicroBlaze处理器的数据缓存 4.指令缓存软件支持 MSR的DCE位提供了软件控制使能和禁止缓存的能
力。在禁止缓冲时,在通过M_AXI_DP或者PLB接口回 读前,必须确所有保先前对在缓存范围内的外部存储 器的写操作已经完成。默认时,禁止缓存。可以在关 闭缓存前,立即写信号量来实现这一条件。可以使用 WDC指令使数据缓存内的缓存行无效或者对其进行刷 新。

151 MicroBlaze处理器的调试 MicroBlaze有调试接口用来支持基于JTAG的软件调
试工具(BDM或后台调试模式调试器),比如Xilinx Microprocessor Debug(XMD)工具。 调试接口用于和Xilinx Microprocessor Debug(XMD) 连接,XMD和Xilinx的JTAG端口连接。 多个MicroBlaze的例子(例化)使用单个XDM连接进 行多处理器调试。

152 MicroBlaze处理器的调试 调试特点有以下几个方面: 1、可配置硬件断点数目、观察点和无限的软件断点;
2、外部处理器控制使能调试工具停止、复位和单步; 3、读写存储器,通用寄存器,特殊功能寄存器 (EAR,EDR,ESR,BTR和PVR0-PVR11只读); 4、支持多处理器 5、写指令和数据缓存。

153 MicroBlaze处理器的跟踪 MicroBlaze跟踪接口输出大量的内部信号用于性能监
测和分析。Xilinx推荐用户通过Xilinx已经开发的分析核使 用跟踪接口。该接口不能保证与将来发布的MicroBlaze向 后兼容。


Download ppt "MicroBlaze软核处理器结构 何宾 2012.02."

Similar presentations


Ads by Google