第三章NIOSII体系结构_第1页
第三章NIOSII体系结构_第2页
第三章NIOSII体系结构_第3页
第三章NIOSII体系结构_第4页
第三章NIOSII体系结构_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1基于FPGA的SOPC设计信息学院李贞妮二一三年五月2第三章 NIOS II 体系结构3本章的目的是让读者建立一个Nios II处理器的概念,了解一些Nios II处理器的工作细节,这对开发出高效率、健壮的程序是非常有好处的。体系结构(Architecture):主要用来描述面向程序员的CPU抽象,而不是其具体实现。 计算机体系结构(computer architecture)的定义是1964年C.M.Amdahl在介绍IBM 360系统时提出的, 其具体描述为“计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性”。 主要内容4本章的目的是让读者建立一个Nios II处理器的

2、概念,了解一些Nios II处理器的工作细节,这对开发出高效率、健壮的程序是非常有好处的。本章先介绍NiosII处理器构架,接着介绍NiosII的寄存器文件(Register File),然后介绍NiosII的异常处理,最后介绍NiosII的储存器结构并分析三种NiosII处理器的性能特点。主要内容5预备知识:预备知识:Nios 嵌入式处理器简介嵌入式处理器简介一、第一代Nios嵌入式处理器二、第二代Nios嵌入式处理器三、可配置的软核嵌入式处理器的优势6一、第一代Nios嵌入式处理器 2000年,Altera发布了Nios处理器,这是第一款可用于可编程逻辑器件的可配置的软核处理器。 基于RI

3、SC技术 16位指令集 16/32位数据通道 5级流水线 在一个时钟周期内完成一条指令的处理 具有一种基于JTAG的OCI(片上仪器)芯核Nios 嵌入式处理器简介7 2003年,Altera发布了Nios3.0处理器,它有16位和32位两个版本,能在低成本的Cyclone和高性能的Stratrix芯片上实现。 主要特性: 更多的可配置寄存器 极大的灵活性和可扩展性 功能强大的开发工具(SOPC Builder)第一代第一代NiosNios处理器的处理器的缺点缺点没有提供软件开发的集成环境,用户需要在没有提供软件开发的集成环境,用户需要在Nios SDK ShellNios SDK Shell

4、中以命令行的形式执行软件的编译、运行、调试。程序的编中以命令行的形式执行软件的编译、运行、调试。程序的编辑、编译、运行都是分离的。辑、编译、运行都是分离的。不支持对项目的编译。不支持对项目的编译。Nios 嵌入式处理器简介8二、第二代Nios嵌入式处理器2004年月,Altera继在全球推出Cyclone和Stratrix器件系列后,又推出支持这些新款芯片的Nios嵌入式处理器。 与第一代与第一代NiosNios相比,相比,最大处理性能提高了最大处理性能提高了3 3倍,倍,CPUCPU内核部分的面积最大可缩小内核部分的面积最大可缩小1/21/2(3232位位Nios Nios 处理处理器占用器

5、占用15001500个个LELE, Nios II Nios II 最少只占用最少只占用600600个个LELE)。)。广泛应用于嵌入式系统的设计中。广泛应用于嵌入式系统的设计中。 Nios 嵌入式处理器简介9Nios 嵌入式处理器简介10种类特性CPU结构32Bit指令集32Bit数据宽度线32个通用寄存器2G Byte寻址空间片内调试基于边界扫描测试(JTAG)的调试逻辑,支持硬件断点、数据触发以及片外和片内的调试跟踪定制指令最多达到256个用户定义的CPU指令软件开发工具NiosIDE(集成开发环境)基于GNU的编译器硬件辅助的调试模块表1Nios 系列处理器的特性Nios 嵌入式处理器

6、简介11 Nios II提供3种不同的内核,以满足系统对不同性能和成本的需求。表表2Nios 系列处理器的成员系列处理器的成员Nios 嵌入式处理器简介平衡性能和尺寸平衡性能和尺寸最高性能的优化最高性能的优化最小逻辑占用的优化最小逻辑占用的优化12Nios vs Nios Nios Nios Pipelined RISC Architecture32-Bit InstructionsFlat Register File32-Bit Data Path32 Prioritized InterruptsOptional Instruction & Data CacheCustom Inst

7、ructions Branch Prediction Nios NiosPipelined RISC Architecture16-Bit InstructionsWindowed Register File16 -Bit or 32-Bit Data Path64 Prioritized InterruptsOptional Instruction & Data CacheCustom Instructions Nios 嵌入式处理器简介13Nios : Faster & Smaller(Nios /f)Nios 嵌入式处理器简介14Nios : Faster & S

8、maller (Nios /s)Nios 嵌入式处理器简介15Nios : Faster & Smaller (Nios /e)Nios 嵌入式处理器简介16Nios 嵌入式处理器简介17Some Important Peripherals for Nios II System ID PeripheralUsed to Ensure Hardware/Software Version SynchronizationSimple 2 read-only register peripheral containing hardware ID tags. Register 1 contains

9、 random number Register 2 contains time and date when system was generated in SOPC BuilderCan be checked at runtime to ensure that the software to be downloaded matches the hardware image Memory InterfacesEPCS Serial Flash ControllerOn-Chip RAM, ROMOff-Chip SRAM CFI FlashNios 嵌入式处理器简介18Other Importa

10、nt Peripherals for Nios II LCD Display JTAG UART Single JTAG Connection For: Device Configuration Code Download Debug Target STDIO (printing) Flash Programming Compact Flash Interface Mass Storage SupportTrue IDE ModeCompact Flash ModeSoftware SupportsLow-Level APIMicroC/OS- File System SupportCLinu

11、x File SystemNios 嵌入式处理器简介19Other Important Peripherals for Nios II SSRAM ControllerCypress CY7C1380C Sync SRAM controller Provided to support SSRAM component on Cyclone II dev kit board Not a fully configurable general purpose controller Support for DDR/DDR2 in SOPC Builder GUIWith burst adapter Se

12、quential master to interleaved slave enhancementSeparate READ/Write duplex slaves Automatically matches address of read/write slaves Arbitration logic connects read/write masters to both slaves Support for PCI and Bursting DMA in SOPC Builder GUIHigher bandwidth transfers through PCINios 嵌入式处理器简介20N

13、ios 嵌入式处理器简介21High-Performance Interconnect 采用内部Avlon总线,连接主从构件,并进行主从构件间的通信。 主外设主外设从外设从外设Nios 嵌入式处理器简介22Nios 嵌入式处理器简介23Nios 嵌入式处理器简介24第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能25第3章 目

14、录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能263.1 Nios II处理器结构nNios II是一种软核(Soft-Core)处理器。n所谓软核,是指未被固化在硅片上,使用时需要借助EDA软件对其进行配置并下载到可编程芯片(比如FPGA)中的IP核。软核最大的特点就是可由用户按需要进行配置。273.1 Nios II处理器结构nN

15、ios II软核处理器简介Nios II 处理器系列包括三种内核Nios II32位软核处理器Nios II/f (快速)Nios II/e (经济)Nios II/s (标准)性能最高,但占用的逻辑资源最多。性能最高,但占用的逻辑资源最多。占用的逻辑资源最少,但性能最低。占用的逻辑资源最少,但性能最低。平衡的性能和尺寸。平衡的性能和尺寸。NiosII/s内核比内核比第一代的第一代的Nios CPU更快,占用的资更快,占用的资源更少。源更少。283.1 Nios II处理器结构Nios II32位软核处理器Nios II处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器

16、组r0.r31控制寄存器组ctl 0.ctl 5指令Cache数据Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken293.1 Nios II处理器结构n数据处理主要由算术逻辑单元完成,在现有的Nios II内核中暂时没有协处理器。n用户逻辑接口用来连接用户定制的逻辑电路与Nios II内核。Nios II处理器结构框图nNios II采用哈佛结构,数据总线和指令总线分开。n

17、为了调试方便,Nios II处理器集成了一个JTAG调试模块。地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache数据Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken303.1 Nios II处理器结构n为了提高系统的整体性能,Nios II内核不仅可以集成数据Cache和指令Cache,还带有紧耦合存储

18、器TCM ( T i g h t l y C o u p l e d Memory)接口。nTCM:紧挨着内核的快速SRAM,保证装载和存储指令或数据的时间是确定的。n可以使Nios II处理器既能提高性能,又能获得可预测的实时响应。Nios II处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache数据Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cp

19、u _resetrequestcpu _resettaken313.1 Nios II处理器结构nNios II把外部硬件的中断事件交由中断控制器管理。n内核异常事件交由异常控制器管理。nNios II的寄存器文件包括32个通用寄存器和6个控制寄存器,Nios II结构允许将来添加浮点寄存器,其具体细节在下节介绍Nios II处理器结构框图地址发生器&程序控制器异常控制器中断控制器通用寄存器组r0.r31控制寄存器组ctl 0.ctl 5指令Cache数据Cache算术逻辑单元(ALU)用户逻辑JTAG接口NiosII 处理器核紧耦合指令存储器紧耦合指令存储器紧耦合数据存储器紧耦合数据

20、存储器指令总线数据总线clockreset软件调试接口中断源0.31 IO口cpu _resetrequestcpu _resettaken323.1 Nios II处理器结构nNIOSII设计思想:一个NIOSII的实现是根据一组设计要求得到的一个特定的NIOSII处理器核。所有实现都支持NIOSII处理器的指令集。n具体实现方案:或多或少:用户可以增加或减少指令缓存的大小。要或不要:例如:为了节省成本,可以选择不要JTAG调试模块。硬件实现或软件模拟:例如在控制应用中很少进行复杂的运算,用户可以选择除法指令由软件来模拟,省去硬件的除法实现,节省片上资源,但会增加除法运算时间。33第3章 目

21、录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能343.2 Nios II的寄存器文件n Nios II的通用寄存器尽管硬件对寄存器的用法几乎没有规定,但是它们在实际使用过程中还是遵循一些约定俗成的惯例。如果想使用他人的子程序,编译器或操作系统,最好还是遵守这些惯例。我们通过下面的通用寄存器一览表来了解Nios II的32个通用寄存器。

22、35通用寄存器组寄存器助记符功能寄存器助记符功能r0zero清零r16子程序要保存的寄存器r1at汇编中的临时变量r17子程序要保存的寄存器r2函数返回值(低32位)r18子程序要保存的寄存器r3函数返回值(高32位)r19子程序要保存的寄存器r4传递给函数的参数r20子程序要保存的寄存器r5传递给函数的参数r21子程序要保存的寄存器r6传递给函数的参数r22子程序要保存的寄存器r7传递给函数的参数r23子程序要保存的寄存器r8调用者要保存的寄存器r24et为异常处理保留r9调用者要保存的寄存器r25bt为程序断点保留通用寄存器一览r1或at: 这个寄存器在汇编程序中常用作临时变量。r0或ze

23、ro: 总是存放0值,对它写无效。Nios II没有专门的清零指令,所以常用它来对寄存器清零。r2,r3: 用来存放一个函数的返回值。R2存放返回值的低32位,r3存放返回值的高32位。如果这两个寄存器不够存放需要返回的值,编译器将通过堆栈来传递。r4r7: 用来传递4个非浮点参数给一个子程序。r4传递第一个参数,r5传递第二个参数,以此类推。如果这四个寄存器不够传递参数,编译器将通过堆栈来传递。r8r15: 习惯上,子程序可以使用其中的值而不用保存它们。但使用者必须记住,这些寄存器里面的值可能被一次子程序调用改变,所以调用着有责任保护它们。36通用寄存器组寄存器助记符功能寄存器助记符功能r0

24、zero清零r16子程序要保存的寄存器r1at汇编中的临时变量r17子程序要保存的寄存器r2函数返回值(低32位)r18子程序要保存的寄存器r3函数返回值(高32位)r19子程序要保存的寄存器r4传递给函数的参数r20子程序要保存的寄存器r5传递给函数的参数r21子程序要保存的寄存器r6传递给函数的参数r22子程序要保存的寄存器r7传递给函数的参数r23子程序要保存的寄存器r8调用者要保存的寄存器r24et为异常处理保留r9调用者要保存的寄存器r25bt为程序断点保留通用寄存器一览r16r23: 习惯上,子程序必须保证这些寄存器中的值在调用前后保持不变,即要么在子程序执行时不使用它们,要么使用

25、前把它们保存在堆栈中并在退出时恢复。r24或et: 在异常处理时使用。使用时,可以不恢复原来的值。该寄存器很少作用其它用途。r25或bt: 在程序断点处理时使用。使用时,可以不恢复原来的值。该寄存器很少作其它用途。r26或gp: 它指向静态数据区中的一个运行时临时决定的地址。这意味着在存取位于gp值上下32KB范围内的数据时,只需要一条以gp作为基指针的指令即可完成。r27或sp: 堆栈指针。Nios II没有专门的出栈(POP)入栈(PUSH)指令,在子程序入口处,sp被调整指向栈底部,然后以sp为基址,用寄存器基址偏移地址的方式来访问栈中的数据。r28或fp: 帧指针,习惯上用于跟踪栈的变

26、化和维护运行时环境。r29或ea: 保存异常返回地址。r30或ba: 保存断点返回地址。r31或ra: 保存函数返回地址。373.2 Nios II的寄存器文件n Nios II的控制寄存器Nios II的控制寄存器共有6个,它们的读/写访问只能在超级用户态(Supervisor Model)由专用的控制寄存器读/写指令(rdctl和wrctl)实现。所有控制寄存器都有汇编器可以识别的名字。通过控制寄存器一览表,来了解控制寄存器各位的意义。38控制寄存器一览控制寄存器组寄存器名字bit位意义: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatu

27、s保留BUBPIEct13ienable中断允许位ct14ipending中断发生标志位ct15cpuid唯一的CPU序列号status状态寄存器:只有第1位和第0位有意义。第1位U反映计算机当前状态: 1表示处于用户态(User-mode); 0表示处于超级用户态(Supervisor Mode)。第0位PIE外设中断允许位: 1表示允许外设中断; 0表示禁止外设中断。3.2 Nios II的寄存器文件39控制寄存器一览控制寄存器组寄存器名字bit位意义: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienab

28、le中断允许位ct14ipending中断发生标志位ct15cpuid唯一的CPU序列号estatus、bstatus都是status寄存器的影子寄存器:发生断点或者异常时:保存status寄存器的值;断点或异常处理返回时:恢复status寄存器的值。3.2 Nios II的寄存器文件 estatus:针对异常处理 bstatus:针对断点调试40控制寄存器一览控制寄存器组寄存器名字bit位意义: 31210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中断允许位ct14ipending中断发生标志位ct15c

29、puid唯一的CPU序列号ienable中断允许寄存器:每一位控制一个中断通道。例如:第0位为1:表示允许第0号中断发生;第0位为0:表示禁止第0号中断发生;ipending中断发生标志位:每一位反映一个中断发生。例如:第0位为1:表示第0号中断发生;第0位为0:表示第0号中断未发生;cpuid此寄存器中装载着处理器的id号:该id号在生成Nios II系统时产生。Id号在多处理器系统中可以作为分辨CPU的标识。3.2 Nios II的寄存器文件41第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Ni

30、os II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能423.3 算术逻辑单元(ALU)Nios II ALU支持的操作种类描述算术运算ALU支持有符号和无符号数的加、减、乘和除法关系运算支持有符号和无符号数的等于、不等于、大于等于和小于(=,!=,=,)关系运算逻辑运算支持AND、OR、NOR和XOR逻辑运算移位运算支持移位和循环移位运算,在每条指令中可以将数据移位和环移0到31位。支持算术右移和算术左移,还支持左、右循环移位n NIOS II 的算术逻辑单元(ALU)对通

31、用寄存器中的数据进行操作。ALU操作从寄存器中取一个或两个操作数,并将运算结果存回到寄存器中。433.3 算术逻辑单元(ALU)n 未实现的指令某些NIOS II核,比如NIOS II/e型,可能不支持某些指令。运行这 些 指 令 会 引 起 未 实 现 指 令 异 常 。 这 些 指 令 有 :mul,muli,div,divu。如果SOPC中,硬件乘法器和硬件除法器的选项未使能,也会不支持这些指令。异常管理器会调用相应的程序用软件来模拟该指令的操作。处理器对未实现的指令的处理对程序员是透明的。n 用户定制指令n 浮点指令443.3 算术逻辑单元(ALU)n用户定制指令NIOS II支持用户

32、定制指令。用户指令逻辑直接与算术逻辑单元(ALU)相连,使用户定制的指令像NIOSII指令集中的指令一样可以被访问和使用。n 浮点指令NIOS II结构支持IEEE std 754-1985规范的单精度浮点指令。NIOSII支持的浮点指令以定制指令的方式执行,需要在添加NIOS II处理器时添加用于浮点指令的用户指令,3种NIOS II核都可以添加浮点指令。参考Altera公司技术文档。 文档 Using NiosII floating-point custom instructions.45第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单

33、元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能463.4 复位信号地址发生器&程序控制器异常控制器中断控制器算术逻辑单元用户逻辑JTAG接口NiosII处理器核clockreset软件调试接口中断源0 .31 IO口cpu _resetrequestcpu _resettakenn Nios II处理器支持两个复位信号:reset和cpu_resetrequestreset:是一个强制处理器核立即进入复位状态的全局硬

34、件复位信号。cpu_resetrequest:是一个可以让CPU复位但不影响Nios II系统其它外设的局部复位信号。cpu复位进入复位状态前要执行完流水线上所有指令Nios II处理器结构框图473.4 复位信号n CPU复位后,Nios II处理器将执行下列操作:清除状态寄存器status,使之为0 x0;指令Cache与程序存储器的关联被置为无效,处理器从固态程序存储器(比如Flash)中的reset地址处取得第一条指令;从复位地址处开始执行程序。清除status:是为了使处理器进入超级用户模式并禁止硬件中断。使当前Cache队列无效:是为了保证取指是从复位地址所在的非Cache存储区,

35、而不是当前指令Cache。复位地址在系统生成时指定。指令cache的内容在复位后是不确定的,因此复位程序要立即进行指令cache的初始化,接下来初始化数据cache483.4 复位信号n 以下部件的状态在复位后是不确定的:通用寄存器(除zero(r0):总是存放0值);控制寄存器(除status(ct10),被置为0 x0);指令和数据存储器。Cache(除与复位地址关联的指令Cache);与CPU相连的各外设,各外设复位后的状态要具体参考各外设的手册;用户指令逻辑在复位后的状态要参看用户指令逻辑的手册或说明。49第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文

36、件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能503.5 Nios II处理器运行模式n Nios II处理器有3种运行模式:用户模式(User Mode);超级用户模式(Supervisor Mode) ;调试模式(Debug Mode) 。n通常系统程序代码运行在超级用户模式。在V6.0版本以前的Nios II 处理器都不支持用户模式,永远都运行在超级用户模式。调试模式:拥有最大的访问权限,可以无限

37、制地访问所有的功能模块;超级用户模式:除了不能访问与调试有关的寄存器(bt、ba和bstatus)外,无其它访问限制;用户模式:是超级用户模式功能访问的一个子集,它不能访问控制寄存器和一些通用寄存器。513.5 Nios II处理器运行模式nNios II 处理器3种运行模式切换Nios II处理器3种运行模式52第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问

38、 3.10 Nios II处理器性能533.6 异常和中断控制器n异常控制器Nios II体系结构提供一个简单的非向量异常控制器来处理所有类型的异常。所有异常包括硬件中断,都引起处理器从异常地址开始执行程序。程序员可以在异常地址处判断异常产生的原因,并分配相应的异常处理任务。异常地址在系统生成时制定。n中断控制器Nios II体系结构支持32个外部硬件中断,即irq0irq31。每个中断对应一个独立的中断通道。IRQ的优先级由软件决定。NIOS II体系结构支持中断嵌套。543.6 异常和中断控制器n中断控制器针对每个IRQ输入,处理器中ienable中断允许寄存器中都有一个相应的中断使能位。

39、处理器能通过ienable控制寄存器来独立地使能或者禁止每个中断源。处理器也可以通过status控制寄存器的PIE位来使能或禁止所有的中断。一个硬件中断发生的充要条件是下列三个条件全为真:Status控制寄存器中的PIE位为1;某个中断请求irqn有效;在ienable寄存器中,该中断源相应位为1。55第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10

40、Nios II处理器性能56 异常:异常:CPU内部异常和外部中断的总称。Altera公司未将两个概念加以区分。NIOS II的异常控制器采用非向量仲裁的策略,即当一个异常(CPU异常或外部中断)发生时,处理器简单的跳转到已知的异常处理地址,并执行那里的代码。代码首先检测异常发生的原因,然后再跳转到相应的异常服务子程序(ISR)中去。3.7 Nios II的异常处理573.7 Nios II的异常处理硬件中断软件异常软件陷阱异常未定义指令异常其它异常n异常类型 一个外设能通过处理器32个中断输入之一,请求产生一个硬件中断。 当程序遇到软件陷阱指令时,将产生软件陷阱异常,这在程序需要操作系统服务

41、时常用到。操作系统的异常处理程序判断产生软件陷阱的原因,然后执行相应任务。Nios II异常包括583.7 Nios II的异常处理硬件中断软件异常软件陷阱异常未定义指令异常其它异常当处理器执行未定义指令时产生未定义指令异常。异常处理可以判断哪个指令产生异常,如果指令不能通过硬件执行,可以在一个异常服务程序中通过软件方式仿真执行。其它异常类型是未将来准备的。Nios II异常包括n异常类型593.7 Nios II的异常处理n异常硬件处理流程当异常发生后,处理器会依次完成以下工作:把status寄存器内容复制到estatus寄存器中,保存当前处理器状态;清除status寄存器的U位为0,强制处

42、理器进入超级用户状态;清除status寄存器的PIE位为0,禁止所有的硬件中断;把异常返回地址写入ea寄存器(r29);跳转到异常处理地址。12345603.7 Nios II的异常处理n异常判别及优先级(EPIE=1)&(ipending!=0)?指令是在(ea-4)处吗?指令是在(ea-4)div、mul、mulxuu、等处吗?进入异常处理处理硬件中断处理软件陷阱处理未定义指令其它异常NoNoNoYesYesYes异常类型判别 在跳转到异常处理地址后到执行用户异常服务子程序(ISR)前还有一段由HAL插入的代码。 代码作用:判断异常源和异常优先级,然后决定调用哪个ISR。613.7

43、 Nios II的异常处理nNIOSII的异常控制器是没有区分优先级的。但是由于HAL插入的代码是从ipending寄存器的第0位开始检测中断源的,所以从这个意义上说,NIOSII的外部中断优先级是从031的。中断号在系统生成时由用户定义。NIOSII异常优先级依次为:外部硬件中断,软件陷阱异常,未定义指令异常,其他情况。623.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间 实现异常嵌套,需在用户ISR中打开外部中断允许(PIE=1)。 在处理异常事件的过程中,可以响应由trap指令引起的软件陷阱异常 和未实现指令异常。 在异常嵌套之前,为了确保异常能正确返回,必须保存es

44、tatus寄存器(ctl1)和ea寄存器(r29)。633.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间当执行异常返回指令(eret)后,处理器会把estatus寄存器(ctl1)内容复制到status寄存器(ctl0)中,恢复异常前的处理器状态,然后把异常返回地址从ea寄存器(r29)写入程序计数器。异常发生时,ea寄存器(r29)保存了异常发生处下一条指令所在的地址。当异常从软件陷阱异常 或未定义指令异常返回时,程序必须从软件陷阱指令trap或未定义指令后继续执行,因此ea寄存器(r29)就是正确的异常返回地址。643.7 Nios II的异常处理n异常的嵌套n异常返回

45、n异常响应时间如果是硬件中断异常,程序必须从硬件中断异常发生处继续执行,因此必须将ea寄存器(r29)中的地址减去4(ea-4)作为异常返回地址。653.7 Nios II的异常处理n异常的嵌套n异常返回n异常响应时间lNios II的非向量仲裁策略,导致了Nios II的异常处理延时会比较大,它是靠提高Nios II处理器的执行速度来弥补这一缺点的。见下表:NiosII类型Max DMIPS异常反应时间进入ISR时延异常恢复时延NiosII/e3115485222NiosII/s12710128130NiosII/f2181010562Nios II 异常处理性能* 时延单位:处理器时钟周期

46、个数66第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能673.8 存储器及I/O结构nNIOSII的内核访问存储器和I/O的方式NIOSII存储器和I/O结构非常灵活与传统微控制器之间最显著的区别。NIOSII处理器系统可配置,存储器和外设随系统的不同而不同,使得存储器和I/O结构随系统不同而发生变化。NIOSII核通过下面

47、的一种或多种方式访问存储器和I/O:683.8 存储器及I/O结构nNIOSII的内核访问存储器和I/O的方式指令主端口:通过Avalon交换架构连接到指令存储器的Avalon主端口。指令高速缓存:NIOSII核内部的高速指令缓存 (Cache Memory)。数据主端口:通过Avalon交换架构连接到数据存储器的主端口。数据高速缓存:NIOSII核内部的高速数据缓存。紧耦合指令存储器和数据存储器端口:NIOSII核外部的高速存储器接口。693.8 存储器及I/O结构Nios II 存储器和I/O结构程序计数器通用寄存器文件指令总线选择逻辑数据总线选择逻辑指令高速缓存数据高速缓存紧耦合指令存储

48、器1紧耦合数据存储器1紧耦合指令存储器N存储器从外设紧耦合数据存储器NSMSMAvalon转换结构NiosII处理器内核SMAvalon从端口Avalon主端口n NiosII内核访问存储器和I/O的方式1.指令主端口2.指令高速缓存3.数据主端口4.数据高速缓存5.紧耦合指令或 数据存储器端口703.8 存储器及I/O结构Nios II 存储器和I/O结构程序计数器通用寄存器文件指令总线选择逻辑数据总线选择逻辑指令高速缓存数据高速缓存紧耦合指令存储器1紧耦合数据存储器1紧耦合指令存储器N存储器从外设紧耦合数据存储器NSMSMAvalon转换结构NiosII处理器内核SMAvalon从端口Av

49、alon主端口n 指令与数据总线1.指令主端口2.指令高速缓存3.数据主端口4.数据高速缓存5.紧耦合指令或 数据存储器端口713.8 存储器及I/O结构n指令与数据总线存储器与外设访问Nios II结构提供映射为存储器的I/O访问。数据存储器和外设都被映射到数据主端口的地址空间。存储器系统中处理器数据总线低8位分别连接存储器数据线70。字(小端模式,LSB)低字节高字节高地址低地址723.8 存储器及I/O结构n指令与数据总线指令主端口nNios II指令总线作为32位Avalon主端口来实现。指令主端口只执行一个功能:对处理器将要执行的指令进行取指。n指令主端口是具有流水线属性的Avalo

50、n主端口。n指令主端口依赖Avalon交换结构中的动态总线对齐逻辑始终能接收32位数据。nNios II结构支持片内高速缓存。nNios II结构还支持紧耦合存储器,对紧耦合存储器的访问能实现低延迟。说明:说明:指令主端口不执行任何写操作。动态总线对齐逻辑不管目标存储器的宽度如何,每次取指都会返回一个完整的指令字,因而程序不需要知道Nios II处理器系统中的存储器宽度。片内高速缓存,用于改善访问较慢存储器时的平均指令取指性能。1.Avalon流水线传输提高了系统的最大工作频率。指令主端口可以发出连续的读指令请求,即使之前的请求数据还未返回。NIOSII可以提前取得一系列指令,并且执行分支预测

51、来使指令流水线尽可能高效。733.8 存储器及I/O结构n指令与数据总线数据主端口nNios II数据总线作为32位Avalon主端口来实现。数据主端口执行两个功能:1当处理器执行装载指令时,从存储器或外设中读数据。2当处理器执行存储指令时,将数据写入存储器或外设。n数据主端口不支持Avalon流水线传输。n同指令主端口一样Nios II结构支持片内高速缓存,改善平均数据传输性能。nNios II结构也支持紧耦合存储器以实现低延迟。说明:说明:1.数据主端口中存储器流水线延迟被看作等待周期。当数据主端口连接到零等待存储器时,装载和存储操作能够在一个时钟周期内完成。743.8 存储器及I/O结构

52、n指令与数据总线指令和数据共享的存储器通常,指令和数据主端口共享含有指令和数据的存储器。当处理器内核使用独立的指令总线和数据总线时,整个Nios II处理器系统对外呈现单一的、共用的指令/数据总线。说明:说明:1.数据和指令主端口从来不会出现一个端口使另一个端口处于等待状态的停滞状况。为获得最高性能,对于指令和数据主端口共享的任何存储器,数据主端口被指定为更高的优先级。753.8 存储器及I/O结构n高速缓存(Cache)Nios II结构的指令主端口和数据主端口都支持高速缓存,指令主端口使用指令高速缓存,数据主端口使用数据高速缓存。高速缓存使用片内存储器,是NIOSII处理器内核的重要组成部

53、分,能够改善使用较慢片外存储器(如用来存放程序和数据的SDRAM)的NIOSII处理器系统的平均存储器访问时间。763.8 存储器及I/O结构n高速缓存(Cache)作为NiosII处理器组成部分的高速缓存,在SOPC Builder中是可选的,这取决于用户对系统存储性能以及FPGA资源的使用要求。NIOSII处理器内核可以含有数据或指令缓存,也可以两者都有或都没有,高速缓存的大小由用户配置。包含高速缓存不会影响程序的功能,但会影响处理器取指和读/写数据时的速度。高速缓存改善性能的功效是基于以下前提的:1常规存储器位于片外,访问时间比片内存储器要长。2循环执行的、最大的,关键性能的指令序列长度

54、小于指令高速缓存。3关键性能数据的最大模块小于数据高速缓存。773.8 存储器及I/O结构n高速缓存(Cache)例如在以下的情况下高速缓存将无法改善执行速度:Nios II处理器系统只含有快速的片内存储器(即从不访问较慢的片外存储器)。程序的关键循环是2KB,而指令高速缓存的大小为1KB。由于性能上的原因,应用程序始终要求某些数据或部分代码存放在高速缓存中,那么紧耦合存储器可能会提供一个更合适的解决方案。注意:注意:Cache虽然改善了系统的整体性能,但使程序的执行时间变得不可预测。对于实时系统来说这一点至关重要。783.8 存储器及I/O结构n紧耦合存储器(TCM)紧耦合存储器紧耦合存储器

55、(TCM):紧耦合存储器是一种紧挨着内核的快速SRAM,它不仅能改善系统性能,而且保证了装载和存储指令或数据的时间是确定的。紧耦合存储器可向对性能要求严格的应用提供低延迟访问。Nios II 存储器和I/O结构紧耦合指令存储器紧耦合指令存储器793.8 存储器及I/O结构n紧耦合存储器(TCM)与高速缓存相比具有的优点:1性能类似于高速缓存;2软件能够保证将关键性能的代码或数据存放在紧耦合存储器中;3代码执行的确定性装载和存储指令或数据的时间是可预测的。Nios II 存储器和I/O结构紧耦合指令存储器紧耦合指令存储器803.8 存储器及I/O结构n紧耦合存储器介绍实际上,紧耦合存储器是Nio

56、s II处理器内核上的一个独立的主端口,与指令或数据主端口类似。Nios II结构指令和数据访问都支持紧耦合存储器。Nios II内核可以不包含紧耦合存储器,也可以包含一个或多个紧耦合存储器。每个紧耦合存储器端口直接与具有固定的低延迟的存储器相连,该存储器在Nios II内核的外部,通常使用FPGA片内存储器。紧耦合存储器与其它通过Avalon交换结构连接的存储器件一样,占据标准的地址空间。它的地址范围在生成系统时确定。软件使用常规的装载和存储指令访问紧耦合存储器。从软件角度来看,访问紧耦合存储器与访问其他存储器无不同。813.8 存储器及I/O结构n紧耦合存储器介绍系统在访问指定的代码或数据

57、时,能够使用紧耦合存储器来获得最高性能。例如,中断频繁的应用能够将异常处理代码放在紧耦合存储器中来降低中断延迟。类似的,计算密集型的数字信号处理(DSP)应用能够将紧耦合存储器指定为数据缓存区,实现最快的数据访问。如果应用程序的存储器需求足够小,能够完全在片内实现,就不需要使用其他的存储器,将代码和数据全放在TCM中存储。大的应用必须考虑将什么放在TCM来达到最大的性价比。823.8 存储器及I/O结构n地址映射在Nios II处理器系统中,存储器和外设的地址映射是与设计相关的,由设计人员在系统生成时指定。这里要特别提到的是3个CPU相关的地址:复位地址异常地址断点处理(break handl

58、er)程序的地址。程序员通过使用宏和驱动程序来访问存储器和外设,灵活的地址映射并不会影响应用程序开发人员。83第3章 目录 3.1 Nios II处理器结构 3.2 Nios II的寄存器文件 3.3 算数逻辑单元(ALU) 3.4 复位信号 3.5 Nios II处理器运行模式 3.6 异常和中断控制器 3.7 Nios II的异常处理 3.8 存储器及I/O结构 3.9 存储器和外设访问 3.10 Nios II处理器性能843.9 存储器和外设访问Nios II地址是32位的,允许对4GB地址空间进行访问,但现有的Nios II内核都将地址限制在31位,即2GB地址空间。处理器的数据总线

59、为32位宽度。指令集提供字节,半字(16bit)或字(32位)的读写指令。Nios II结构采用小端模式,对于保存在存储器中的大于8位的数据,最高有效位在高地址。外设数据存储器程序存储器地址空间未映射4GB地址空间32位宽度映射映射映射映射到的具体位置在生成系统时确定对此地址空间的读写将产生一个不确定的值853.9 存储器和外设访问n寻址方式Nios II结构支持以下寻址方式有:寄存器寻址寄存器寻址:所有的操作数都是寄存器,结果保存在寄存器中移位寻址移位寻址:寄存器和带符号的16位立即数相加的结果作为地址立即数寻址立即数寻址:操作数是指令中的常量寄存器间接寻址寄存器间接寻址:使用了移位寻址,只

60、是移位值是常量0绝对寻址绝对寻址:范围有限制的绝对寻址使用带有寄存器r0(它的值始终是0 x00)的移位寻址来实现。863.9 存储器和外设访问n高速缓存访问Nios II结构和指令集可以管理数据高速缓存和指令高速缓存。高速缓存管理使用高速缓存指令在软件中实现。指令集可对高速缓存实现初始化、刷新及旁路数据高速缓存的指令操作。有些Nios II处理器内核支持一种称作31位高速缓存旁路的机制,它根据地址的最高有效位的值来旁路高速缓存。处理器实现的地址空间为2GB,地址的高位控制数据存储器访问的缓存操作。873.9 存储器和外设访问n高速缓存访问写入到具有高速缓存的处理器内核的代码可以在没有高速缓存存储器的处理器内核上正确地执行,反过来则不行。如果希望程序在所有的NIOSII处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论