1、第3章 Nios II 体系结构-SOPC嵌入式系统基础教程北京航空航天大学出版社出版周立功 等编著本章的目的是让读者建立一个Nios II处理器的概念,了解一些Nios II处理器的工作细节,这对开发出高效率、健壮的程序是非常有好处的。体系结构(Architecture)主要用来描述面向程序员的CPU抽象,而不是其具体实现。本章先介绍NiosII处理器构架,接着介绍NiosII的寄存器文件(Register File),然后介绍NiosII的异常处理,最后介绍NiosII的储存器结构并分析三种NiosII处理器的性能特点。NiosII的指令集及如何编写NiosII的汇编程序在第9章中介绍。主
2、要内容第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器
3、和外设访问n3.10 Nios II处理器性能3.1 Nios II处理器结构nNios II是一种软核(Soft-Core)处理器。n所谓软核,是指未被固化在硅片上,使用时需要借助EDA软件对其进行配置并下载到可编程芯片(比如FPGA)中的IP核。软核最大的特点就是可由用户按需要进行配置。3.1 Nios II处理器结构nNios II软核处理器简介Nios II 处理器系列包括三种内核Nios II32位软核处理器Nios II/f(快速)Nios II/e(经济)Nios II/s(标准)性能最高,但占用的逻辑资源最多。性能最高,但占用的逻辑资源最多。占用的逻辑资源最少,但性能最低。占用
4、的逻辑资源最少,但性能最低。平衡的性能和尺寸。平衡的性能和尺寸。NiosII/s内核比内核比第一代的第一代的Nios CPU更快,占用的资更快,占用的资源更少。源更少。3.1 Nios II处理器结构Nios II32位软核处理器Nios II处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache指令Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _res
5、etrequestcpu _resettaken3.1 Nios II处理器结构n数据处理主要由算术逻辑单元完成,在现有的Nios II内核中暂时没有协处理器。n用户逻辑接口用来连接用户定制的逻辑电路与Nios II内核。Nios II处理器结构框图nNios II采用哈佛结构,数据总线和指令总线分开。n为了调试方便,Nios II处理器集成了一个JTAG调试模块。地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache指令Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数
6、据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken3.1 Nios II处理器结构n为了提高系统的整体性能,Nios II内核不仅可以集成数据Cache和指令Cache,还带有紧耦合存储器TCM接口。TCM可以使Nios II处理器既能提高性能,又能获得可预测的实时响应。Nios II处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache指令Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核
7、紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken3.1 Nios II处理器结构nNios II把外部硬件的中断事件交由中断控制器管理,内核异常事件交由异常控制器管理。nNios II的寄存器文件包括32个通用寄存器和6个控制寄存器,Nios II结构允许将来添加浮点寄存器,其具体细节在下节介绍Nios II处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache指令Cach
8、e算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.2 Nios
9、 II的寄存器文件n Nios II的通用寄存器尽管硬件对寄存器的用法几乎没有规定,但是它们在实际使用过程中还是遵循一些约定俗成的惯例。如果想使用他人的子程序,编译器或操作系统,最好还是遵守这些惯例。我们通过下面的通用寄存器一览表来了解Nios II的32个通用寄存器。通用寄存器组寄存器助记符功能寄存器助记符功能r0zero清零r16子程序要保存的寄存器r1at汇编中的临时变量r17子程序要保存的寄存器r2函数返回值(低32位)r18子程序要保存的寄存器r3函数返回值(高32位)r19子程序要保存的寄存器r4传递给函数的参数r20子程序要保存的寄存器r5传递给函数的参数r21子程序要保存的寄存
10、器r6传递给函数的参数r22子程序要保存的寄存器r7传递给函数的参数r23子程序要保存的寄存器r8调用者要保存的寄存器r24et为异常处理保留r9调用者要保存的寄存器r25bt为程序断点保留r10调用者要保存的寄存器r26gp全局指针r11调用者要保存的寄存器r27sp堆栈指针r12调用者要保存的寄存器r28fp帧指针r13调用者要保存的寄存器r29ea异常返回地址r14调用者要保存的寄存器r30ba断点返回地址r15调用者要保存的寄存器r31ra函数返回地址通用寄存器一览r0或zero:总是存放0值,对它读写无效。Nios II没有专门的清零指令,所以常用它来对寄存器清零。r1或at:这个寄
11、存器在汇编程序中常用作临时变量。r2,r3:用来传递4个非浮点参数给一个子程序。r3存放返回值的高32位。如果这两个寄存器不够存放需要返回的值,编译器将通过堆栈来传递。r4r7:用来传递4个非浮点参数给一个子程序。r4传递第一个参数,r5传递第二个参数,以此类推。如果这四个寄存器不够传递参数,编译器将通过堆栈来传递。r8r15:习惯上,子程序可以使用其中的值而不用保存它们。但使用者必须记住,这些寄存器里面的值可能被一次子程序调用改变,所以调用着有责任保护它们。通用寄存器组寄存器助记符功能寄存器助记符功能r0zero清零r16子程序要保存的寄存器r1at汇编中的临时变量r17子程序要保存的寄存器
12、r2函数返回值(低32位)r18子程序要保存的寄存器r3函数返回值(高32位)r19子程序要保存的寄存器r4传递给函数的参数r20子程序要保存的寄存器r5传递给函数的参数r21子程序要保存的寄存器r6传递给函数的参数r22子程序要保存的寄存器r7传递给函数的参数r23子程序要保存的寄存器r8调用者要保存的寄存器r24et为异常处理保留r9调用者要保存的寄存器r25bt为程序断点保留r10调用者要保存的寄存器r26gp全局指针r11调用者要保存的寄存器r27sp堆栈指针r12调用者要保存的寄存器r28fp帧指针r13调用者要保存的寄存器r29ea异常返回地址r14调用者要保存的寄存器r30ba断
13、点返回地址r15调用者要保存的寄存器r31ra函数返回地址通用寄存器一览r16r23:习惯上,子程序必须保证这些寄存器中的值在调用前后保持不变,即要么在子程序执行时不使用它们,要么使用前把它们保存在堆栈中并在退出时恢复。r24或et:在异常处理时使用。使用时,可以不恢复原来的值。该寄存器很少作用其它用途。r25或bt:在程序断点处理时使用。使用时,可以不恢复原来的值。该寄存器很少作其它用途。r26或gp:它指向静态数据区中的一个运行时临时决定的地址。这意味着在存取位于gp值上下32KB范围内的数据时,只需要一条以gp作为基指针的指令即可完成。r27或sp:堆栈指针。Nios II没有专门的出栈
14、(POP)入栈(PUSH)指令,在子程序入口处,sp被调整指向栈底部,然后以sp为基址,用寄存器基址偏移地址的方式来访问栈中的数据。r28或fp:帧指针,习惯上用于跟踪栈的变化和维护运行时环境。r29或ea:保存异常返回地址。r30或ba:保存断点返回地址。r31或ra:保存函数返回地址。3.2 Nios II的寄存器文件n Nios II的控制寄存器Nios II的控制寄存器共有6个,它们的读/写访问只能在超级用户态(Supervisor Model)由专用的控制寄存器读/写指令(rdctl和wrctl)实现。通过控制寄存器一览表,来了解控制寄存器各位的意义。控制寄存器一览控制寄存器组寄存器
15、名字bit位意义:31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中断允许位ct14ipending中断发生标志位ct15cpuid唯一的CPU序列号status状态寄存器:只有第1位和第0位有意义。第1位U反映计算机当前状态:1表示处于用户态(User-mode);0表示处于超级用户态(Supervisor Mode)。第0位PIE外设中断允许位:1表示允许外设中断;0表示禁止外设中断。控制寄存器一览控制寄存器组寄存器名字bit位意义:31210ct10status保留UPIEct11estatus保
16、留EUEPIEct12bstatus保留BUBPIEct13ienable中断允许位ct14ipending中断发生标志位ct15cpuid唯一的CPU序列号estatus、bstatus都是status寄存器的影子寄存器:发生断点或者异常时:保存status寄存器的值;断点或异常处理返回时:恢复status寄存器的值。控制寄存器一览控制寄存器组寄存器名字bit位意义:31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中断允许位ct14ipending中断发生标志位ct15cpuid唯一的CPU序列号ie
17、nable中断允许寄存器:每一位控制一个中断通道。例如:第0位为1:表示允许第0号中断发生;第0位为0:表示禁止第0号中断发生;ipending中断发生标志位:每一位反映一个中断发生。例如:第0位为1:表示第0号中断发生;第0位为0:表示第0号中断未发生;cpuid此寄存器中装载着处理器的id号:该id号在生成Nios II系统时产生。Id号在多处理器系统中可以作为分辨CPU的标识。第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios
18、 II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.3 算术逻辑单元(ALU)Nios II ALU支持的操作种类描述算术运算ALU支持有符号和无符号数的加、减、乘和除法关系运算支持有符号和无符号数的等于、不等于、大于等于和小于(=,!=,=,)关系运算逻辑运算支持AND、OR、NOR和XOR逻辑运算移位运算支持移位和循环移位运算,在每条指令中可以将数据移位和环移0到31位。支持算术右移和算术左移,还支持左、右循环移位3.3 算术逻辑单元(ALU)n 未实现的指令n 用户指令n 浮点指令第3章 目录n3.1 Nios II处理器结构n3
19、.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.4 复位信号地址发生器&程序控制器异常控制器中断控制器算术逻辑单元用户逻辑JTAG接口NiosII处理器核clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettakenn Nios II处理器支持两个复位信号:reset和cpu_resetrequestreset:是一
20、个强制处理器核立即进入复位状态的全局硬件复位信号。cpu_resetrequest:是一个可以让CPU复位但不影响Nios II系统其它外设的局部复位信号。Nios II处理器结构框图3.4 复位信号n CPU复位后,Nios II处理器将执行下列操作:清除状态寄存器status,使之为0 x0;指令Cache与程序存储器的关联被置为无效,处理器从固态程序存储器(比如Flash)中的reset地址处取得第一条指令;从复位地址处开始执行程序。清除status:是为了使处理器进入超级用户模式并禁止硬件中断。使当前Cache队列无效:是为了保证取指是从复位地址所在的非Cache存储区,而不是当前指令
21、Cache。复位地址在系统生成时指定。3.4 复位信号n 以下部件的状态在复位后是不确定的:通用寄存器(除zero(r0):总是存放0值);控制寄存器(除status(ct10),被置为0 x0);指令和数据存储器。Cache(除与复位地址关联的指令Cache);与CPU相连的各外设,各外设复位后的状态要具体参考各外设的手册;用户指令逻辑在复位后的状态要参看用户指令逻辑的手册或说明。第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios
22、 II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.5 Nios II处理器运行模式n Nios II处理器有3种运行模式:用户模式(User Mode);超级用户模式(Supervisor Mode);调试模式(Debug Mode)。n通常系统程序代码运行在超级用户模式。在V6.0版本以前的Nios II 处理器都不支持用户模式,永远都运行在超级用户模式。调试模式:拥有最大的访问权限,可以无限制地访问所有的功能模块;超级用户模式:除了不能访问与调试有关的寄存器(bt、ba和bstatus)外,无其它访问限制;用户模式:是超级用户模式
23、功能访问的一个子集,它不能访问控制寄存器和一些通用寄存器。3.5 Nios II处理器运行模式nNios II 处理器3种运行模式切换Nios II处理器3种运行模式第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.6 异常和中断控制器n异常控制器Nios II体系结构提供一个简单的非向量异常控制器来处理所有类型的异常。n中
24、断控制器Nios II体系结构支持32个外部硬件中断,即irq0irq31。每个中断对应一个独立的中断通道。第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.7 Nios II的异常处理硬件中断软件异常软件陷阱异常未定义指令异常其它异常n异常类型 一个外设能通过处理器32个中断输入之一,请求产生一个硬件中断。当程序遇到软件陷
25、阱指令时,将产生软件陷阱异常,这在程序需要操作系统服务时常用到。操作系统的异常处理程序判断产生软件陷阱的原因,然后执行相应任务。Nios II异常包括3.7 Nios II的异常处理硬件中断软件异常软件陷阱异常未定义指令异常其它异常当处理器执行未定义指令时产生未定义指令异常。异常处理可以判断哪个指令产生异常,如果指令不能通过硬件执行,可以在一个异常服务程序中通过软件方式仿真执行。其它异常类型是未将来准备的。Nios II异常包括n异常类型3.7 Nios II的异常处理n异常硬件处理流程当异常发生后,处理器会依次完成以下工作:把status寄存器内容复制到estatus寄存器中,保存当前处理器
26、状态;清除status寄存器的U位为0,强制处理器进入超级用户状态;清除status寄存器的PIE位为0,禁止所有的硬件中断;把异常返回地址写入ea寄存器(r29);跳转到异常处理地址。123453.7 Nios II的异常处理n异常判别及优先级(EPIE=1)&(ipending!=0)?指令是在(ea-4)处的trap指令吗?指令是在(ea-4)处的div、mul、mulxuu、等处吗?进入异常处理处理硬件中断处理软件陷阱处理未定义指令其它异常NoNoNoYesYesYes异常类型判别3.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间 实现异常嵌套,需在用户ISR中打开外
27、部中断允许(PIE=1)。在处理异常事件的过程中,可以响应由trap指令引起的软件陷阱异常 和未实现指令异常。在异常嵌套之前,为了确保异常能正确返回,必须保存estatus寄存器(ctl1)和ea寄存器(r29)。3.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间当执行异常返回指令(eret)后,处理器会把estatus寄存器(ctl1)内容复制到status寄存器(ctl0)中,恢复异常前的处理器状态,然后把异常返回地址从ea寄存器(r29)写入程序计数器。异常发生时,ea寄存器(r29)保存了异常发生处下一条指令所在的地址。当异常从软件陷阱异常 或未定义指令异常返回时,程
28、序必须从软件陷阱指令trap或未定义指令后继续执行,因此ea寄存器(r29)就是正确的异常返回地址。3.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间如果是硬件中断异常,程序必须从硬件中断异常发生处继续执行,因此必须将ea寄存器(r29)中的地址减去(ea-4)作为异常返回地址。3.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间lNios II的非向量仲裁策略,导致了Nios II的异常处理延时会比较大,它是靠提高Nios II处理器的执行速度来弥补这一缺点的。见下表:NiosII类型Max.DMIPS异常反应时间进入ISR时延异常恢复时延NiosII/e3
29、115485222NiosII/s12710128130NiosII/f2181010562Nios II 异常处理性能第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.8 存储器及I/O结构Nios II 存储器和I/O结构程序计数器通用寄存器文件指令总线选择逻辑数据总线选择逻辑指令高速缓存数据高速缓存紧耦合指令存储器1紧
30、耦合数据存储器1紧耦合指令存储器N存储器从外设紧耦合数据存储器NSMSMAvalon转换结构NiosII处理器内核SMAvalon主端口Avalon从端口n NiosII内核访问存储器和I/O的方式1.指令主端口2.指令高速缓存3.数据主端口4.数据高速缓存5.紧耦合指令或 数据存储器端口3.8 存储器及I/O结构Nios II 存储器和I/O结构程序计数器通用寄存器文件指令总线选择逻辑数据总线选择逻辑指令高速缓存数据高速缓存紧耦合指令存储器1紧耦合数据存储器1紧耦合指令存储器N存储器从外设紧耦合数据存储器NSMSMAvalon转换结构NiosII处理器内核SMAvalon主端口Avalon从
31、端口n 指令与数据总线1.指令主端口2.指令高速缓存3.数据主端口4.数据高速缓存5.紧耦合指令或 数据存储器端口3.8 存储器及I/O结构n指令与数据总线存储器与外设访问Nios II结构提供映射为存储器的I/O访问。数据存储器和外设都被映射到数据主端口的地址空间。存储器系统中处理器数据总线低8位分别连接存储器数据线70。字(小端模式)低字节高字节高地址低地址3.8 存储器及I/O结构n指令与数据总线指令主端口nNios II指令总线作为32位Avalon主端口来实现。指令主端口只执行一个功能:对处理器将要执行的指令进行取指。n指令主端口是具有流水线属性的Avalon主端口。n指令主端口依赖
32、Avalon交换结构中的动态总线对齐逻辑始终能接收32位数据。nNios II结构支持片内高速缓存。nNios II结构还支持紧耦合存储器,对紧耦合存储器的访问能实现低延迟。说明:说明:1.指令主端口不执行任何写操作。2.动态总线对齐逻辑不管目标存储器的宽度如何,每次取指都会返回一个完整的指令字,因而程序不需要知道Nios II处理器系统中的存储器宽度。3.片内高速缓存,用于改善访问较慢存储器时的平均指令取指性能。3.8 存储器及I/O结构n指令与数据总线数据主端口nNios II数据总线作为32位Avalon主端口来实现。数据主端口执行两个功能:1当处理器执行装载指令时,从存储器或外设中读数
33、据。2当处理器执行存储指令时,将数据写入存储器或外设。n数据主端口不支持Avalon流水线传输。n同指令主端口一样Nios II结构支持片内高速缓存,改善平均数据传输性能。nNios II结构也支持紧耦合存储器以实现低延迟。说明:说明:1.数据主端口中存储器流水线延迟被看作等待周期。当数据主端口连接到零等待存储器时,装载和存储操作能够在一个时钟周期内完成。3.8 存储器及I/O结构n指令与数据总线指令和数据共享的存储器通常,指令和数据主端口共享含有指令和数据的存储器。当处理器内核使用独立的指令总线和数据总线时,整个Nios II处理器系统对外呈现单一的、共用的指令/数据总线。说明:说明:1.数
34、据和指令主端口从来不会出现一个端口使另一个端口处于等待状态的停滞状况。为获得最高性能,对于指令和数据主端口共享的任何存储器,数据主端口被指定为更高的优先级。3.8 存储器及I/O结构n高速缓存(Cache)Nios II结构的指令主端口和数据主端口都支持高速缓存。作为NiosII处理器组成部分的高速缓存在SOPC Builder中是可选的,这取决于用户对系统存储性能以及FPGA资源的使用要求。包含高速缓存不会影响程序的功能,但会影响处理器取指和读/写数据时的速度。高速缓存改善性能的功效是基于以下前提的:1常规存储器位于片外,访问时间比片内存储器要长。2循环执行的、最大的,关键性能的指令序列长度
35、小于指令高速缓存。3关键性能数据的最大模块小于数据高速缓存。3.8 存储器及I/O结构n高速缓存(Cache)例如在以下的情况下高速缓存将无法改善执行速度:1.Nios II处理器系统只含有快速的片内存储器(即从不访问较慢的片外存储器)。2.程序的关键循环是2KB,而指令高速缓存的大小为1KB。3.由于性能上的原因,应用程序始终要求某些数据或部分代码存放在高速缓存中,那么紧耦合存储器可能会提供一个更合适的解决方案。注意:注意:Cache虽然改善了系统的整体性能,但使程序的执行时间变得不可预测。对于实时系统来说这一点至关重要。3.8 存储器及I/O结构n紧耦合存储器(TCM)紧耦合存储器紧耦合存
36、储器(TCM):紧耦合存储器是一种紧挨着内核的快速SRAM,它不仅能改善系统性能,而且保证了装载和存储指令或数据的时间是确定的。紧耦合存储器可向对性能要求严格的应用提供低延迟访问。Nios II 存储器和I/O结构紧耦合指令存储器紧耦合指令存储器3.8 存储器及I/O结构n紧耦合存储器(TCM)与高速缓存相比具有的优点:1性能类似于高速缓存;2软件能够保证将关键性能的代码或数据存放在紧耦合存储器中;3代码执行的确定性装载和存储指令或数据的时间是可预测的。Nios II 存储器和I/O结构紧耦合指令存储器紧耦合指令存储器3.8 存储器及I/O结构n紧耦合存储器介绍实际上,紧耦合存储器是Nios
37、II处理器内核上的一个独立的主端口,与指令或数据主端口类似。Nios II结构指令和数据访问都支持紧耦合存储器。Nios II内核可以不包含紧耦合存储器,也可以包含一个或多个紧耦合存储器。每个紧耦合存储器端口直接与具有固定的低延迟的存储器相连,该存储器在Nios II内核的外部,通常使用FPGA片内存储器。紧耦合存储器与其它通过Avalon交换结构连接的存储器件一样,占据标准的地址空间。它的地址范围在生成系统时确定。系统在访问指定的代码或数据时,能够使用紧耦合存储器来获得最高性能。例如,中断频繁的应用能够将异常处理代码放在紧耦合存储器中来降低中断延迟。类似的,计算密集型的数字信号处理(DSP)
38、应用能够将紧耦合存储器指定为数据缓存区,实现最快的数据访问。3.8 存储器及I/O结构n地址映射在Nios II处理器系统中,存储器和外设的地址映射是与设计相关的,由设计人员在系统生成时指定。这里要特别提到的是3个CPU相关的地址:复位地址、异常地址以及断点处理(break handler)程序的地址。程序员通过使用宏和驱动程序来访问存储器和外设,灵活的地址映射并不会影响应用程序开发人员。第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 N
39、ios II的异常处理n3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.9 存储器和外设访问Nios II地址是32位的,允许对4GB地址空间进行访问,但现有的Nios II内核都将地址限制在31位,即2GB地址空间。处理器的数据总线为32位宽度。指令集提供字节,半字(16bit)或字(32位)的读写指令。Nios II结构采用小端模式,对于保存在存储器中的大于8位的数据,最高有效位在高地址。外设数据存储器程序存储器地址空间未映射4GB地址空间32位宽度映射映射映射映射到的具体位置在生成系统时确定对此地址空间的读写将产生一个不确定的值3.9 存储器和
40、外设访问n寻址方式Nios II结构支持以下寻址方式有:寄存器寻址寄存器寻址:所有的操作数都是寄存器,结果保存在寄存器中移位寻址移位寻址:寄存器和带符号的16位立即数相加的结果作为地址立即数寻址立即数寻址:操作数是指令中的常量寄存器间接寻址寄存器间接寻址:使用了移位寻址,只是移位值是常量0绝对寻址绝对寻址:范围有限制的绝对寻址使用带有寄存器r0(它的值始终是0 x00)的移位寻址来实现。3.9 存储器和外设访问n高速缓存访问Nios II结构和指令集可以管理数据高速缓存和指令高速缓存。高速缓存管理使用高速缓存指令在软件中实现。指令集可对高速缓存实现初始化、刷新及旁路数据高速缓存的指令操作。有些
41、Nios II处理器内核支持一种称作31位高速缓存旁路的机制,它根据地址的最高有效位的值来旁路高速缓存。处理器实现的地址空间为2GB,地址的高位控制数据存储器访问的缓存操作。3.9 存储器和外设访问n高速缓存访问写入到具有高速缓存的处理器内核的代码可以在没有高速缓存存储器的处理器内核上正确地执行,反过来则不行。在没有高速缓存的系统中,高速缓存管理指令不执行任何操作。第3章 目录n3.1 Nios II处理器结构n3.2 Nios II的寄存器文件n3.3 算数逻辑单元(ALU)n3.4 复位信号n3.5 Nios II处理器运行模式n3.6 异常和中断控制器n3.7 Nios II的异常处理n
42、3.8 存储器及I/O结构n3.9 存储器和外设访问n3.10 Nios II处理器性能3.10 Nios II处理器性能NiosII处理器有以下三种类型:Nios II32位软核处理器Nios II/f(快速)Nios II/e(经济)Nios II/s(标准)注:关于各处理器的更详细内容请阅读Altera公司的Nios II Processor Reference Handbook的Nios II CoreImplementation Details部分。特性处理器内核Nios II/eNios II/sNios II/f性能DMIPS/MHz(1)0.150.74 1.16 最大DMIP
43、S(2)31127 218 最大工作频率(fMAX)(2)200 MHz165 MHz185 MHz大致尺寸(以LE为单位)7001,4001,800流水线阶数156外部寻址空间2G字节2G字节2G字节指令总线高速缓存512字节到64K字节512字节到64K字节存储器流水线访问可选可选分支预测静态动态紧耦合存储器可选可选数据总线高速缓存512字节到64K字节存储器流水线访问紧耦合存储器可选算术逻辑单元硬件乘法器3周期(3)1周期(3)硬件除法器可选可选移位器1周期每比特3周期桶形移位器(3)1周期barrel 移位器(3)JTAG调试模块JTAG接口、运行控制、软件断点支持是是是硬件断点支持否是是片外跟踪缓冲区支持否是是异常处理集成中断控制器是是是用户模式支持否,都在超级模式否,都在超级模式否,都在超级模式定制指令支持256256256Nios II 处理器内核性能表