版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章NiosII体系结构本章的目的是让读者建立一个本章的目的是让读者建立一个Nios II处理器的处理器的概念,了解一些概念,了解一些Nios II处理器的工作细节,这对开处理器的工作细节,这对开发出高效率、健壮的程序是非常有好处的。发出高效率、健壮的程序是非常有好处的。体系结构(体系结构(Architecture)主要用来描述面向程)主要用来描述面向程序员的序员的CPU抽象,而不是其具体实现。本章先介绍抽象,而不是其具体实现。本章先介绍NiosII处理器构架,接着介绍处理器构架,接着介绍NiosII的寄存器文件的寄存器文件(Register File),然后介绍,然后介绍NiosII的异常
2、处理,最的异常处理,最后介绍后介绍NiosII的存储器结构并分析三种的存储器结构并分析三种NiosII处理处理器的性能特点。器的性能特点。主要内容主要内容3.1 Nios II处理器结构处理器结构 Nios II是一种软核是一种软核(Soft-Core)处理器处理器。 所谓软核,是指未被固化在硅片上,使用时需要所谓软核,是指未被固化在硅片上,使用时需要借助借助EDA软件对其进行配置并下载到可编程芯片软件对其进行配置并下载到可编程芯片(比如比如FPGA)中的中的IP核。软核最大的特点就是可由核。软核最大的特点就是可由用户按需要进行配置。用户按需要进行配置。3.1 Nios II处理器结构 Nio
3、s II软核处理器简介软核处理器简介Nios II 处理器系列包括三种内核处理器系列包括三种内核Nios II32位软核处理器Nios II/f (快速快速)Nios II/e (经济经济)Nios II/s (标准标准)性能最高,但占用的逻辑资源最多。性能最高,但占用的逻辑资源最多。占用的逻辑资源最少,但性能最低。占用的逻辑资源最少,但性能最低。平衡的性能和尺寸。平衡的性能和尺寸。NiosII/s内核比内核比第一代的第一代的Nios CPU更快,占用的资更快,占用的资源更少。源更少。3.1 Nios II处理器结构Nios II32位软核处理器位软核处理器Nios II处理器结构框图处理器结
4、构框图地址发生器地址发生器&程序控制器程序控制器异常控制器异常控制器中断控制器中断控制器通用寄存器组通用寄存器组r0.r31控制寄存器组控制寄存器组ctl0.ctl5指令指令Cache数据数据Cache算术逻辑单元算术逻辑单元(ALU )用户逻辑用户逻辑JTAG接口接口NiosII处理器核处理器核紧耦合紧耦合指令存储器指令存储器紧耦合紧耦合指令存储器指令存储器紧耦合紧耦合数据存储器数据存储器紧耦合紧耦合数据存储器数据存储器指令总线指令总线数据总线数据总线clockreset软件调软件调试接口试接口中断源中断源0.31IO口口cpu _resetrequestcpu _ resettak
5、en3.1 Nios II处理器结构 数据处理主要由算术数据处理主要由算术逻辑单元完成,在现逻辑单元完成,在现有的有的Nios II内核中暂内核中暂时没有协处理器。时没有协处理器。 用户逻辑接口用来连用户逻辑接口用来连接用户定制的逻辑电接用户定制的逻辑电路与路与Nios II内核。内核。Nios II处理器结构框图处理器结构框图 Nios II采用哈佛结构,数据总线和指令总线分开。采用哈佛结构,数据总线和指令总线分开。 为了调试方便,为了调试方便,Nios II处理器集成了一个处理器集成了一个JTAG调试模块。调试模块。地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31
6、控制寄存器组ctl 0.ctl 5指令Cache指令Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken3.1 Nios II处理器结构 为了提高系统的整体为了提高系统的整体性能,性能,Nios II内核不内核不仅可以集成数据仅可以集成数据Cache和指令和指令Cache 还带有紧耦合存储器还带有紧耦合存储器TCM接口。接口。TCM可以可以使使Nios II处理器既能处理器既能
7、提高性能,又能获得提高性能,又能获得可预测的实时响应。可预测的实时响应。Nios II处理器结构框图处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache指令Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken3.1 Nios II处理器结构 Nios II把外部硬件的把外部硬件的中断事件交由中断
8、控中断事件交由中断控制器管理,内核异常制器管理,内核异常事件交由异常控制器事件交由异常控制器管理。管理。 Nios II的寄存器文件包括的寄存器文件包括32个通用寄存器和个通用寄存器和6个控制寄个控制寄存器,存器,Nios II结构允许将来添加浮点寄存器结构允许将来添加浮点寄存器Nios II处理器结构框图处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache指令Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总
9、线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken3.2 Nios II的寄存器文件 Nios II的通用寄存器的通用寄存器尽管硬件对寄存器的用法几乎没有规定,但是它们在尽管硬件对寄存器的用法几乎没有规定,但是它们在实际使用过程中还是遵循一些约定俗成的惯例。如果想实际使用过程中还是遵循一些约定俗成的惯例。如果想使用他人的子程序,编译器或操作系统,最好还是遵守使用他人的子程序,编译器或操作系统,最好还是遵守这些惯例。这些惯例。我们通过下面的通用寄存器一览表来了解我们通过下面的通用寄存器一览表来了解Nios II的的32个通用寄
10、存器个通用寄存器。通用寄存器组通用寄存器组寄存器寄存器助记符助记符功能功能寄存器寄存器助记符助记符功能功能r0zero清零清零r16子程序要保存的寄存器子程序要保存的寄存器r1at汇编中的临时变量汇编中的临时变量r17子程序要保存的寄存器子程序要保存的寄存器r2函数返回值(低函数返回值(低32位)位)r18子程序要保存的寄存器子程序要保存的寄存器r3函数返回值(高函数返回值(高32位)位)r19子程序要保存的寄存器子程序要保存的寄存器r4传递给函数的参数传递给函数的参数r20子程序要保存的寄存器子程序要保存的寄存器r5传递给函数的参数传递给函数的参数r21子程序要保存的寄存器子程序要保存的寄存
11、器r6传递给函数的参数传递给函数的参数r22子程序要保存的寄存器子程序要保存的寄存器r7传递给函数的参数传递给函数的参数r23子程序要保存的寄存器子程序要保存的寄存器r8调用者要保存的寄存器调用者要保存的寄存器r24et为异常处理保留为异常处理保留r9调用者要保存的寄存器调用者要保存的寄存器r25bt为程序断点保留为程序断点保留r10调用者要保存的寄存器调用者要保存的寄存器r26gp全局指针全局指针r11调用者要保存的寄存器调用者要保存的寄存器r27sp堆栈指针堆栈指针r12调用者要保存的寄存器调用者要保存的寄存器r28fp帧指针帧指针r13调用者要保存的寄存器调用者要保存的寄存器r29ea异
12、常返回地址异常返回地址r14调用者要保存的寄存器调用者要保存的寄存器r30ba断点返回地址断点返回地址r15调用者要保存的寄存器调用者要保存的寄存器r31ra函数返回地址函数返回地址通用寄存器一览通用寄存器一览r0或zero: 总是存放0值,对它读写无效。Nios II没有专门的清零指令,所以常用它来对寄存器清零。r1或at: 这个寄存器在汇编程序中常用作临时变量。r2,r3: 用来传递4个非浮点参数给一个子程序。r3存放返回值的高32位。如果这两个寄存器不够存放需要返回的值,编译器将通过堆栈来传递。r4r7: 用来传递4个非浮点参数给一个子程序。r4传递第一个参数,r5传递第二个参数,以此类
13、推。如果这四个寄存器不够传递参数,编译器将通过堆栈来传递。r8r15: 习惯上,子程序可以使用其中的值而不用保存它们。但使用者必须记住,这些寄存器里面的值可能被一次子程序调用改变,所以调用着有责任保护它们。通用寄存器组通用寄存器组寄存器寄存器助记符助记符功能功能寄存器寄存器助记符助记符功能功能r0zero清零清零r16子程序要保存的寄存器子程序要保存的寄存器r1at汇编中的临时变量汇编中的临时变量r17子程序要保存的寄存器子程序要保存的寄存器r2函数返回值(低函数返回值(低32位)位)r18子程序要保存的寄存器子程序要保存的寄存器r3函数返回值(高函数返回值(高32位)位)r19子程序要保存的
14、寄存器子程序要保存的寄存器r4传递给函数的参数传递给函数的参数r20子程序要保存的寄存器子程序要保存的寄存器r5传递给函数的参数传递给函数的参数r21子程序要保存的寄存器子程序要保存的寄存器r6传递给函数的参数传递给函数的参数r22子程序要保存的寄存器子程序要保存的寄存器r7传递给函数的参数传递给函数的参数r23子程序要保存的寄存器子程序要保存的寄存器r8调用者要保存的寄存器调用者要保存的寄存器r24et为异常处理保留为异常处理保留r9调用者要保存的寄存器调用者要保存的寄存器r25bt为程序断点保留为程序断点保留r10调用者要保存的寄存器调用者要保存的寄存器r26gp全局指针全局指针r11调用
15、者要保存的寄存器调用者要保存的寄存器r27sp堆栈指针堆栈指针r12调用者要保存的寄存器调用者要保存的寄存器r28fp帧指针帧指针r13调用者要保存的寄存器调用者要保存的寄存器r29ea异常返回地址异常返回地址r14调用者要保存的寄存器调用者要保存的寄存器r30ba断点返回地址断点返回地址r15调用者要保存的寄存器调用者要保存的寄存器r31ra函数返回地址函数返回地址通用寄存器一览r16r23: 习惯上,子程序必须保证这些寄存器中的值在调用前后保持不变,即要么在子程序执行时不使用它们,要么使用前把它们保存在堆栈中并在退出时恢复。r24或et: 在异常处理时使用。使用时,可以不恢复原来的值。该寄
16、存器很少作用其它用途。r25或bt: 在程序断点处理时使用。使用时,可以不恢复原来的值。该寄存器很少作其它用途。r26或gp: 它指向静态数据区中的一个运行时临时决定的地址。这意味着在存取位于gp值上下32KB范围内的数据时,只需要一条以gp作为基指针的指令即可完成。r27或sp: 堆栈指针。Nios II没有专门的出栈(POP)入栈(PUSH)指令,在子程序入口处,sp被调整指向栈底部,然后以sp为基址,用寄存器基址偏移地址的方式来访问栈中的数据。r28或fp: 帧指针,习惯上用于跟踪栈的变化和维护运行时环境。r29或ea: 保存异常返回地址。r30或ba: 保存断点返回地址。r31或ra:
17、 保存函数返回地址。3.2 Nios II的寄存器文件 Nios II的控制寄存器的控制寄存器Nios II的控制寄存器共有的控制寄存器共有6个,它们的读个,它们的读/写访问只能写访问只能在超级用户态在超级用户态(Supervisor Model)由专用的控制寄存器由专用的控制寄存器读读/写指令写指令(rdctl和和wrctl)实现。实现。通过控制寄存器一览表,来了解控制寄存器各位的意通过控制寄存器一览表,来了解控制寄存器各位的意义。义。控制寄存器一览控制寄存器一览控制寄存器组控制寄存器组寄存器寄存器名字名字bit位意义:位意义: 31210ct10status保留保留UPIEct11esta
18、tus保留保留EUEPIEct12bstatus保留保留BUBPIEct13ienable中断允许位中断允许位ct14ipending中断发生标志位中断发生标志位ct15cpuid唯一的唯一的CPU序列号序列号status状态寄存器:只有第1位和第0位有意义。第1位U反映计算机当前状态: 1表示处于用户态(User-mode); 0表示处于超级用户态(Supervisor Mode)。第0位PIE外设中断允许位: 1表示允许外设中断; 0表示禁止外设中断。控制寄存器一览控制寄存器一览控制寄存器组控制寄存器组寄存器寄存器名字名字bit位意义:位意义: 31210ct10status保留保留UPI
19、Ect11estatus保留保留EUEPIEct12bstatus保留保留BUBPIEct13ienable中断允许位中断允许位ct14ipending中断发生标志位中断发生标志位ct15cpuid唯一的唯一的CPU序列号序列号estatus、bstatus都是status寄存器的影子寄存器:发生断点或者异常时:保存status寄存器的值;断点或异常处理返回时:恢复status寄存器的值。控制寄存器一览控制寄存器一览控制寄存器组控制寄存器组寄存器寄存器名字名字bit位意义:位意义: 31210ct10status保留保留UPIEct11estatus保留保留EUEPIEct12bstatus保
20、留保留BUBPIEct13ienable中断允许位中断允许位ct14ipending中断发生标志位中断发生标志位ct15cpuid唯一的唯一的CPU序列号序列号ienable中断允许寄存器:每一位控制一个中断通道。例如:第0位为1:表示允许第0号中断发生;第0位为0:表示禁止第0号中断发生;ipending中断发生标志位:每一位反映一个中断发生。例如:第0位为1:表示第0号中断发生;第0位为0:表示第0号中断未发生;cpuid此寄存器中装载着处理器的id号:该id号在生成Nios II系统时产生。Id号在多处理器系统中可以作为分辨CPU的标识。3.3 算术逻辑单元算术逻辑单元(ALU)Nios
21、 II ALU支持的操作支持的操作种种类类描描述述算术运算算术运算ALU支持有符号和无符号数的加、减、乘和除法支持有符号和无符号数的加、减、乘和除法关系运算关系运算支持有符号和无符号数的等于、不等于、大于等于和支持有符号和无符号数的等于、不等于、大于等于和小于(小于(=,!=,=,)关系运算)关系运算逻辑运算逻辑运算支持支持AND、OR、NOR和和XOR逻辑运算逻辑运算移位运算移位运算支持移位和循环移位运算,在每条指令中可以将数据支持移位和循环移位运算,在每条指令中可以将数据移位和环移移位和环移0到到31位。支持算术右移和算术左移,还位。支持算术右移和算术左移,还支持左、右循环移位支持左、右循
22、环移位3.3 算术逻辑单元算术逻辑单元(ALU) 未实现的指令未实现的指令 Nios II/e 不支持不支持mul, muli, mulxsu, div, divu 硬件乘法器和硬件除法器硬件乘法器和硬件除法器 用户指令用户指令 用户指令逻辑直接与用户指令逻辑直接与ALU相连相连 浮点指令浮点指令 支持单精度浮点指令支持单精度浮点指令 3.3 算术逻辑单元算术逻辑单元(ALU)3.4 复位信号复位信号地址发生器&程序控制器异常控制器中断控制器算术逻辑单元用户逻辑JTAG接口NiosII处理器核clockreset软件调试接口中断源0 .31 IO口cpu _resetrequestcp
23、u _resettaken Nios II处理器支持两个复位信号:处理器支持两个复位信号:reset和和cpu_resetrequestreset:是一个强制处理器核立即进是一个强制处理器核立即进入复位状态的全局硬件复位信号。入复位状态的全局硬件复位信号。cpu_resetrequest:是一个可以让是一个可以让CPU复位但不影响复位但不影响Nios II系统其它外系统其它外设的局部复位信号。设的局部复位信号。Nios II处理器结构框图处理器结构框图3.4 复位信号复位信号 CPU复位后,复位后,Nios II处理器将执行下列操作:处理器将执行下列操作:清除状态寄存器清除状态寄存器statu
24、s,使之为,使之为0 x0;指令指令Cache与程序存储器的关联被置为无效,处理器从与程序存储器的关联被置为无效,处理器从固态程序存储器固态程序存储器(比如比如Flash)中的中的reset地址处取得第一条指地址处取得第一条指令;令;从复位地址处开始执行程序。从复位地址处开始执行程序。清除清除statusstatus:是为了使处理器进入超级用户模式并禁止是为了使处理器进入超级用户模式并禁止硬件中断。硬件中断。使当前使当前CacheCache队列无效:队列无效:是为了保证取指是从复位地址所在的非是为了保证取指是从复位地址所在的非CacheCache存储区,而不是当前指令存储区,而不是当前指令Ca
25、cheCache。复位地址在系统生成时指定。复位地址在系统生成时指定。3.4 复位信号复位信号 以下部件的状态在复位后是不确定的:以下部件的状态在复位后是不确定的:通用寄存器通用寄存器(除除zero(r0):总是存放:总是存放0值值);控制寄存器控制寄存器(除除status(ct10),被置为被置为0 x0);指令和数据存储器。指令和数据存储器。Cache(除与复位地址关联的指令除与复位地址关联的指令Cache);与与CPU相连的各外设,各外设复位后的状态要具体参相连的各外设,各外设复位后的状态要具体参考各外设的手册;考各外设的手册;用户指令逻辑在复位后的状态要参看用户指令逻辑的手用户指令逻辑
26、在复位后的状态要参看用户指令逻辑的手册或说明。册或说明。3.5 Nios II处理器运行模式处理器运行模式 Nios II处理器有处理器有3种运行模式:种运行模式:用户模式用户模式(User Mode);超级用户模式超级用户模式(Supervisor Mode) ;调试模式调试模式(Debug Mode) 。 通常系统程序代码运行在超级用户模式。在版本以前的通常系统程序代码运行在超级用户模式。在版本以前的Nios II 处理器都不支持用户模式,永远都运行在超级用户模式。处理器都不支持用户模式,永远都运行在超级用户模式。调试模式:拥有最大的访问权限,可以无限制地访问所有的功能模块;超级用户模式:
27、除了不能访问与调试有关的寄存器(bt、ba和bstatus)外,无其它访问限制;用户模式:是超级用户模式功能访问的一个子集,它不能访问控制寄存器和一些通用寄存器。3.5 Nios II处理器运行模式 Nios II 处理器处理器3种运行模式切换种运行模式切换Nios II处理器处理器3种运行模式种运行模式3.6 异常和中断控制器异常控制器异常控制器Nios II体系结构提供一个简单的非向量异常控制体系结构提供一个简单的非向量异常控制器来处理所有类型的异常。器来处理所有类型的异常。中断控制器中断控制器Nios II体系结构支持体系结构支持32个外部硬件中断,即个外部硬件中断,即irq0irq31
28、。每个中断对应一个独立的中断通道。每个中断对应一个独立的中断通道。3.7 Nios II的异常处理硬件中断硬件中断软件异常软件异常软件陷阱异常软件陷阱异常未定义指令异常未定义指令异常其它异常其它异常异常类型异常类型 一个外设能通过处理器一个外设能通过处理器32个中断输入之一,请求产生个中断输入之一,请求产生一个硬件中断。一个硬件中断。 当程序遇到软件陷阱指令当程序遇到软件陷阱指令时,将产生软件陷阱异常,时,将产生软件陷阱异常,这在程序需要操作系统服务这在程序需要操作系统服务时常用到。操作系统的异常时常用到。操作系统的异常处理程序判断产生软件陷阱处理程序判断产生软件陷阱的原因,然后执行相应任务。
29、的原因,然后执行相应任务。Nios II异异常常包包括括3.7 Nios II的异常处理硬件中断软件异常软件陷阱异常未定义指令异常其它异常当处理器执行未定义指令当处理器执行未定义指令时产生未定义指令异常。异时产生未定义指令异常。异常处理可以判断哪个指令产常处理可以判断哪个指令产生异常,如果指令不能通过生异常,如果指令不能通过硬件执行,可以在一个异常硬件执行,可以在一个异常服务程序中通过软件方式仿服务程序中通过软件方式仿真执行。真执行。其它异常类型是未将来准其它异常类型是未将来准备的。备的。Nios II异异常常包包括括异常类型异常类型3.7 Nios II的异常处理异常硬件处理流程异常硬件处理
30、流程当异常发生后,处理器会依次完成以下工作:当异常发生后,处理器会依次完成以下工作:把把status寄存器内容复寄存器内容复制到制到estatus寄存器中,寄存器中,保存当前处理器状态;保存当前处理器状态;清除清除status寄存器的寄存器的U位为位为0,强制处理器进,强制处理器进入超级用户状态;入超级用户状态;清除清除status寄存器的寄存器的PIE位为位为0,禁止所有,禁止所有的硬件中断;的硬件中断;把异常返回地把异常返回地址写入址写入ea寄存寄存器器(r29);跳转到异常跳转到异常处理地址。处理地址。123453.7 Nios II的异常处理的异常处理异常判别及优先级异常判别及优先级(
31、HAL)(EPIE=1)&(ipending!=0)?指令是在指令是在(ea-4)处吗?处吗?指令是在指令是在(ea-4)div、mul、mulxuu、等处吗?、等处吗?进入异常处理进入异常处理处理硬件中断处理硬件中断处理软件陷阱处理软件陷阱处理未定义指令处理未定义指令其它异常其它异常NoNoNoYesYesYes异常类型判别异常类型判别3.7 Nios II的异常处理的异常处理异常优先级异常优先级外部硬件中断:外部硬件中断:0号中断优先级为最高号中断优先级为最高软件陷阱异常软件陷阱异常未实现指令异常未实现指令异常其他情况其他情况3.7 Nios II的异常处理的异常处理异常的嵌套异常
32、的嵌套异常返回异常返回异常响应时间异常响应时间 实现异常嵌套,需在用户实现异常嵌套,需在用户ISR中打开中打开外部中断允许外部中断允许(PIE=1)。 在处理异常事件的过程中,可以响应在处理异常事件的过程中,可以响应由由trap指令引起的软件陷阱异常指令引起的软件陷阱异常 和未实和未实现指令异常。现指令异常。 在异常嵌套之前,为了确保异常能正在异常嵌套之前,为了确保异常能正确返回,必须保存确返回,必须保存estatus寄存器寄存器(ctl1)的的ea寄存器寄存器(r29)。3.7 Nios II的异常处理异常的嵌套异常的嵌套异常返回异常返回异常响应时间异常响应时间当执行异常返回指令当执行异常返
33、回指令(eret)后,处理后,处理器会把器会把estatus寄存器寄存器(ctl1)内容复制内容复制到到status寄存器寄存器(ctl0)国,恢复异常前国,恢复异常前的处理器状态,然后把异常返回地址从的处理器状态,然后把异常返回地址从ea寄存器寄存器(r29)写入程序计数器。写入程序计数器。异常发生时,异常发生时,ea寄存器寄存器(r29)保存了保存了异常发生处下一条指令所在的地址。当异异常发生处下一条指令所在的地址。当异常从软件陷阱异常常从软件陷阱异常 或未定义指令异常返或未定义指令异常返回时,程序必须从软件陷阱指令回时,程序必须从软件陷阱指令trap或或未定义指令后继续执行,因此未定义指
34、令后继续执行,因此ea寄存器寄存器(r29)就是正确的异常返回地址。就是正确的异常返回地址。3.7 Nios II的异常处理异常的嵌套异常的嵌套异常返回异常返回异常响应时间异常响应时间如果是硬件中断异常,程序必须从硬如果是硬件中断异常,程序必须从硬件中断异常发生处继续执行,因此必须将件中断异常发生处继续执行,因此必须将ea寄存器寄存器(r29)中的地址减去中的地址减去(ea-4)作作为异常返回地址。为异常返回地址。3.7 Nios II的异常处理异常的嵌套异常的嵌套异常返回异常返回异常响应时间异常响应时间lNios II的非向量仲裁策略,导致了的非向量仲裁策略,导致了Nios II的异常处理延
35、时会比较大,它是靠提高的异常处理延时会比较大,它是靠提高Nios II处理器的执行速度来弥补这一缺点的。处理器的执行速度来弥补这一缺点的。见下表:见下表:NiosII类型类型Max. DMIPS异常反应时间异常反应时间进入进入ISR时延时延异常恢复时延异常恢复时延NiosII/e3115485222NiosII/s12710128130NiosII/f2181010562Nios II 异常处理性能异常处理性能第3章 目录3.1 Nios II处理器结构3.2 Nios II的寄存器文件3.3 算数逻辑单元(ALU)3.4 复位信号3.5 Nios II处理器运行模式3.6 异常和中断控制器3
36、.7 Nios II的异常处理3.8 存储器及I/O结构3.9 存储器和外设访问3.10 Nios II处理器性能3.8 存储器及I/O结构Nios II 存储器和存储器和I/O结构结构程序计数器通用寄存器文件指令总线选择逻辑数据总线选择逻辑指令高速缓存数据高速缓存紧耦合指令存储器1紧耦合数据存储器1紧耦合指令存储器N存储器从外设紧耦合数据存储器NSMSMAvalon转换结构NiosII处理器内核SMAvalon主端口Avalon从端口n NiosII内核访问存储器和I/O的方式1.指令主端口2.指令高速缓存3.数据主端口4.数据高速缓存5.紧耦合指令或 数据存储器端口3.8 存储器及I/O结
37、构Nios II 存储器和存储器和I/O结构结构程序计数器通用寄存器文件指令总线选择逻辑数据总线选择逻辑指令高速缓存数据高速缓存紧耦合指令存储器1紧耦合数据存储器1紧耦合指令存储器N存储器从外设紧耦合数据存储器NSMSMAvalon转换结构NiosII处理器处理器内核内核SMAvalon主端口Avalon从端口n 指令与数据总线1.指令主端口指令主端口2.指令高速缓存指令高速缓存3.数据主端口数据主端口4.数据高速缓存数据高速缓存5.紧耦合指令或紧耦合指令或 数据存储器端口数据存储器端口3.8 存储器及I/O结构指令与数据总线指令与数据总线存储器与外设访问存储器与外设访问Nios II结构提供
38、映射为存储器的结构提供映射为存储器的I/O访问。数据存储访问。数据存储器和外设都被映射到数据主端口的地址空间。存储器系器和外设都被映射到数据主端口的地址空间。存储器系统中处理器数据总线低统中处理器数据总线低8位分别连接存储器数据线位分别连接存储器数据线70。字字(小端模式小端模式)低字节低字节高字节高字节高地址高地址低地址低地址3.8 存储器及I/O结构指令与数据总线指令与数据总线指令主端口指令主端口Nios II指令总线作为指令总线作为32位位Avalon主端口来实现。指令主端口只执行主端口来实现。指令主端口只执行一个功能:对处理器将要执行的指令进行取指。一个功能:对处理器将要执行的指令进行
39、取指。指令主端口是具有流水线属性的指令主端口是具有流水线属性的Avalon主端口。主端口。指令主端口依赖指令主端口依赖Avalon交换结构中的动态总线对齐逻辑始终能接收交换结构中的动态总线对齐逻辑始终能接收32位数据。位数据。Nios II结构支持片内高速缓存。结构支持片内高速缓存。Nios II结构还支持紧耦合存储器,对紧耦合存储器的访问能实现低延结构还支持紧耦合存储器,对紧耦合存储器的访问能实现低延迟。迟。说明:说明:指令主端口不执行任何写操作。指令主端口不执行任何写操作。动态总线对齐逻辑不管目标存储器的宽度如何,每次取指都会返回一个完整的指令字,因而程序动态总线对齐逻辑不管目标存储器的宽
40、度如何,每次取指都会返回一个完整的指令字,因而程序不需要不需要 知道知道Nios II处理器系统中的存储器宽度。处理器系统中的存储器宽度。1.片内高速缓存,用于改善访问较慢存储器时的平均指令取指性能。片内高速缓存,用于改善访问较慢存储器时的平均指令取指性能。3.8 存储器及I/O结构指令与数据总线指令与数据总线数据主端口数据主端口Nios II数据总线作为数据总线作为32位位Avalon主端口来实现。数据主端口执行两主端口来实现。数据主端口执行两个功能:个功能:1当处理器执行装载指令时,从存储器或外设中读数据。当处理器执行装载指令时,从存储器或外设中读数据。2当处理器执行存储指令时,将数据写入
41、存储器或外设。当处理器执行存储指令时,将数据写入存储器或外设。数据主端口不支持数据主端口不支持Avalon流水线传输。流水线传输。同指令主端口一样同指令主端口一样Nios II结构支持片内高速缓存,改善平均数据传输结构支持片内高速缓存,改善平均数据传输性能。性能。Nios II结构也支持紧耦合存储器以实现低延迟。结构也支持紧耦合存储器以实现低延迟。说明:说明:1.数据主端口中存储器流水线延迟被看作等待周期。当数据主端口连接到零等待存储器时,装载和数据主端口中存储器流水线延迟被看作等待周期。当数据主端口连接到零等待存储器时,装载和存储操作能够在一个时钟周期内完成。存储操作能够在一个时钟周期内完成
42、。3.8 存储器及I/O结构指令与数据总线指令与数据总线指令和数据共享的存储器指令和数据共享的存储器通常,指令和数据主端口共享含有指令和数据的存储器。当处理器通常,指令和数据主端口共享含有指令和数据的存储器。当处理器内核使用独立的指令总线和数据总线时,整个内核使用独立的指令总线和数据总线时,整个Nios II处理器系统对外呈处理器系统对外呈现单一的、共用的指令现单一的、共用的指令/数据总线。数据总线。说明:说明:1.数据和指令主端口从来不会出现一个端口使另一个端口处于等待状态的停滞状况。为获得最高性数据和指令主端口从来不会出现一个端口使另一个端口处于等待状态的停滞状况。为获得最高性能,对于指令
43、和数据主端口共享的任何存储器,数据主端口被指定为更高的优先级。能,对于指令和数据主端口共享的任何存储器,数据主端口被指定为更高的优先级。3.8 存储器及I/O结构高速缓存高速缓存(Cache)Nios II结构的指令主端口和数据主端口都支持高速缓存。结构的指令主端口和数据主端口都支持高速缓存。作为作为NiosII处理器组成部分的高速缓存在处理器组成部分的高速缓存在SOPC Builder中是可选中是可选的,这取决于用户对系统存储性能以及的,这取决于用户对系统存储性能以及FPGA资源的使用要求。包含高资源的使用要求。包含高速缓存不会影响程序的功能,但会影响处理器取指和读速缓存不会影响程序的功能,
44、但会影响处理器取指和读/写数据时的速写数据时的速度。度。高速缓存改善性能的功效是基于以下前提的:高速缓存改善性能的功效是基于以下前提的:1常规存储器位于片外,访问时间比片内存储器要长。常规存储器位于片外,访问时间比片内存储器要长。2循环执行的、最大的,关键性能的指令序列长度小于指令高速循环执行的、最大的,关键性能的指令序列长度小于指令高速缓存。缓存。3关键性能数据的最大模块小于数据高速缓存。关键性能数据的最大模块小于数据高速缓存。3.8 存储器及I/O结构高速缓存高速缓存(Cache)例如在以下的情况下高速缓存将无法改善执行速度:例如在以下的情况下高速缓存将无法改善执行速度:Nios II处理
45、器系统只含有快速的片内存储器处理器系统只含有快速的片内存储器(即从不访问较慢的片即从不访问较慢的片外存储器外存储器)。程序的关键循环是程序的关键循环是2KB,而指令高速缓存的大小为,而指令高速缓存的大小为1KB。1.由于性能上的原因,应用程序始终要求某些数据或部分代码存放在由于性能上的原因,应用程序始终要求某些数据或部分代码存放在高速缓存中,那么紧耦合存储器可能会提供一个更合适的解决方案。高速缓存中,那么紧耦合存储器可能会提供一个更合适的解决方案。注意:注意:Cache虽然改善了系统的整体性能,但使程序的执行时间变得不可预测。对于实时系统来说这一点至关重要。3.8 存储器及I/O结构紧耦合存储
46、器紧耦合存储器(TCM)紧耦合存储器紧耦合存储器(TCM):紧耦合:紧耦合存储器是一种紧挨着内核的快速存储器是一种紧挨着内核的快速SRAM,它不仅能改善系统性能,它不仅能改善系统性能,而且保证了装载和存储指令或数而且保证了装载和存储指令或数据的时间是确定的。紧耦合存储据的时间是确定的。紧耦合存储器可向对性能要求严格的应用提器可向对性能要求严格的应用提供低延迟访问。供低延迟访问。Nios II 存储器和存储器和I/O结构结构紧耦合指令紧耦合指令存储器存储器紧耦合指令紧耦合指令存储器存储器3.8 存储器及存储器及I/O结构结构紧耦合存储器紧耦合存储器(TCM)与高速缓存相比具有的优点:与高速缓存相
47、比具有的优点:1性能类似于高速缓存;性能类似于高速缓存;2软件能够保证将关键性能的代软件能够保证将关键性能的代码或数据存放在紧耦合存储器中;码或数据存放在紧耦合存储器中;3代码执行的确定性代码执行的确定性装载和装载和存储指令或数据的时间是可预测的。存储指令或数据的时间是可预测的。Nios II 存储器和存储器和I/O结构结构紧耦合指令紧耦合指令存储器存储器紧耦合指令紧耦合指令存储器存储器3.8 存储器及I/O结构紧耦合存储器介绍紧耦合存储器介绍实际上,紧耦合存储器是实际上,紧耦合存储器是Nios II处理器内核上的一个独立的主端口,处理器内核上的一个独立的主端口,与指令或数据主端口类似。与指令
48、或数据主端口类似。Nios II结构指令和数据访问都支持紧耦合存储器。结构指令和数据访问都支持紧耦合存储器。Nios II内核可以不包含紧耦合存储器,也可以包含一个或多个紧耦内核可以不包含紧耦合存储器,也可以包含一个或多个紧耦合存储器。合存储器。每个紧耦合存储器端口直接与具有固定的低延迟的存储器相连,该每个紧耦合存储器端口直接与具有固定的低延迟的存储器相连,该存储器在存储器在Nios II内核的外部,通常使用内核的外部,通常使用FPGA片内存储器。片内存储器。3.8 存储器及I/O结构地址映射地址映射在在Nios II处理器系统中,存储器和外设的地址映射是与设计相关的,处理器系统中,存储器和外设的地址映射是与设计相关的,由设计人员在系统生成时指定。这里要特别提到的是由设计人员在系统生成时指定。这里要特别提到的是3个个CPU相关的地相关的地址:复位地址、异常地址以及断点处理(址:复位地址、异常地址以及断点处理(break handler)程序的地址。)程序的地址。程序员通过使用宏和驱动程序来访问存储器和外设,灵活的地址映射并程序员通过使用宏和驱动程序来访问存储器和外设,灵活的地址映射并不会影响应用程序开发人员。不会影响应用程序开发人员。第3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷链物流温控追溯技师考试试卷及答案
- 2025年六安市金安区区属国有企业公开招聘人34名员笔试历年参考题库附带答案详解
- 2025年上半年合肥滨湖投资控股集团有限公司招聘14人笔试历年参考题库附带答案详解
- 2025山东无棣海丰(集团)有限责任公司招聘3人笔试历年参考题库附带答案详解
- 2025安徽振含控股集团有限公司招聘8人笔试历年参考题库附带答案详解
- 2025四川西南发展控股集团有限公司招聘工作人员65人笔试历年参考题库附带答案详解
- 2025四川成都广播影视集团有限责任公司招聘22人笔试历年参考题库附带答案详解
- 2025四川中建长江佳成水利工程有限公司招聘54人笔试历年参考题库附带答案详解
- 2025内蒙古锡林郭勒苏能白音华发电有限公司招聘49人笔试历年参考题库附带答案详解
- 2025内蒙古土地资源收储投资(集团)有限公司常态化招聘急需紧缺专业人员16人(第十三批)笔试历年参考题库附带答案详解
- 2026年交管12123驾照学法减分完整版练习题库及1套完整答案详解
- 2026年五一节前全体员工安全培训课件
- 初中数学七年级下册问题解决策略专题“特殊化思想:从特殊到一般的桥梁”创新教学设计
- 2026年黑龙江省《保密知识竞赛必刷100题》考试题库附参考答案详解(精练)
- 2026江苏苏州工业园区街道协管员招聘37人农业笔试备考试题及答案解析
- 2026年执业医师定期考核真考试题库带答案详解(A卷)
- 贵州医科大学2026考博历年真题配套模拟题及答案
- (二模)温州市2026届高三第二次适应性考试地理试卷(含答案)
- 《公路水运工程施工安全标准化指南》
- 2026年中考《语文》作文10大主题抢分万能模板
- GB/T 43441.2-2026信息技术数字孪生第2部分:数字实体
评论
0/150
提交评论