第3章NiosII体系结构.ppt_第1页
第3章NiosII体系结构.ppt_第2页
第3章NiosII体系结构.ppt_第3页
第3章NiosII体系结构.ppt_第4页
第3章NiosII体系结构.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第3章NiosII体系结构 3 1NiosII处理器结构 NiosII是一种软核 Soft Core 处理器 所谓软核 是指未被固化在硅片上 使用时需要借助EDA软件对其进行配置并下载到可编程芯片 比如FPGA 中的IP核 软核最大的特点就是可由用户按需要进行配置 3 1NiosII处理器结构 NiosII软核处理器简介NiosII处理器系列包括三种内核 NiosII 32位软核处理器 NiosII f 快速 NiosII e 经济 NiosII s 标准 性能最高 但占用的逻辑资源最多 占用的逻辑资源最少 但性能最低 平衡的性能和尺寸 NiosII s内核比第一代的NiosCPU更快 占用的资源更少 NiosII处理器结构框图 NiosII采用哈佛结构 数据总线和指令总线分开 为了调试方便 NiosII处理器集成了一个JTAG调试模块 为了提高系统的整体性能 NiosII内核不仅可以集成数据Cache和指令Cache 还带有紧耦合存储器TCM接口 TCM可以使NiosII处理器既能提高性能 又能获得可预测的实时响应 NiosII把外部硬件的中断事件交由中断控制器管理 内核异常事件交由异常控制器管理 NiosII的寄存器文件包括32个通用寄存器和6个控制寄存器 NiosII结构允许将来添加浮点寄存器 3 2NiosII的寄存器文件 NiosII的控制寄存器NiosII的控制寄存器共有6个 它们的读 写访问只能在超级用户模式 SupervisorModel 下由专用的控制寄存器读 写指令 rdctl和wrctl 实现 通过控制寄存器一览表 来了解控制寄存器各位的意义 通用寄存器一览 r0或zero 总是存放0值 对它读写无效 NiosII没有专门的清零指令 所以常用它来对寄存器清零 r1或at 这个寄存器在汇编程序中常用作临时变量 r2 r3 用来传递4个非浮点参数给一个子程序 r3存放返回值的高32位 如果这两个寄存器不够存放需要返回的值 编译器将通过堆栈来传递 r4 r7 用来传递4个非浮点参数给一个子程序 r4传递第一个参数 r5传递第二个参数 以此类推 如果这四个寄存器不够传递参数 编译器将通过堆栈来传递 r8 r15 习惯上 子程序可以使用其中的值而不用保存它们 但使用者必须记住 这些寄存器里面的值可能被一次子程序调用改变 所以调用着有责任保护它们 通用寄存器一览 r16 r23 习惯上 子程序必须保证这些寄存器中的值在调用前后保持不变 即要么在子程序执行时不使用它们 要么使用前把它们保存在堆栈中并在退出时恢复 r24或et 在异常处理时使用 使用时 可以不恢复原来的值 该寄存器很少作用其它用途 r25或bt 在程序断点处理时使用 使用时 可以不恢复原来的值 该寄存器很少作其它用途 r26或gp 它指向静态数据区中的一个运行时临时决定的地址 这意味着在存取位于gp值上下32KB范围内的数据时 只需要一条以gp作为基指针的指令即可完成 r27或sp 堆栈指针 NiosII没有专门的出栈 POP 入栈 PUSH 指令 在子程序入口处 sp被调整指向栈底部 然后以sp为基址 用寄存器基址 偏移地址的方式来访问栈中的数据 r28或fp 帧指针 习惯上用于跟踪栈的变化和维护运行时环境 r29或ea 保存异常返回地址 r30或ba 保存断点返回地址 r31或ra 保存函数返回地址 3 2NiosII的寄存器文件 NiosII的控制寄存器NiosII的控制寄存器共有6个 它们的读 写访问只能在超级用户模式 SupervisorModel 下由专用的控制寄存器读 写指令 rdctl和wrctl 实现 通过控制寄存器一览表 来了解控制寄存器各位的意义 控制寄存器一览 status 状态寄存器 只有第1位和第0位有意义 第1位U 反映计算机当前状态 1表示处于用户态 User mode 0表示处于超级用户态 SupervisorMode 第0位PIE 外设中断允许位 1表示允许外设中断 0表示禁止外设中断 控制寄存器一览 estatus bstatus 都是status寄存器的影子寄存器 发生断点或者异常时 保存status寄存器的值 断点或异常处理返回时 恢复status寄存器的值 控制寄存器一览 ienable 中断允许寄存器 每一位控制一个中断通道 例如 第0位为1 表示允许第0号中断发生 第0位为0 表示禁止第0号中断发生 ipending 中断发生标志位 每一位反映一个中断发生 例如 第0位为1 表示第0号中断发生 第0位为0 表示第0号中断未发生 cpuid 此寄存器中装载着处理器的id号 该id号在生成NiosII系统时产生 Id号在多处理器系统中可以作为分辨CPU的标识 3 3算术逻辑单元 ALU NiosIIALU支持的操作 3 3算术逻辑单元 ALU 未实现的指令用户指令浮点指令 3 4复位信号 NiosII处理器支持两个复位信号 reset和cpu resetrequestreset 是一个强制处理器核立即进入复位状态的全局硬件复位信号 cpu resetrequest 是一个可以让CPU复位但不影响NiosII系统其它外设的局部复位信号 NiosII处理器结构框图 3 4复位信号 CPU复位后 NiosII处理器将执行下列操作 清除状态寄存器status 使之为0 x0 指令Cache与程序存储器的关联被置为无效 处理器从固态程序存储器 比如Flash 中的reset地址处取得第一条指令 从复位地址处开始执行程序 清除status 是为了使处理器进入超级用户模式并禁止硬件中断 使当前Cache队列无效 是为了保证取指是从复位地址所在的非Cache存储区 而不是当前指令Cache 复位地址在系统生成时指定 3 4复位信号 以下部件的状态在复位后是不确定的 通用寄存器 除zero r0 总是存放0值 控制寄存器 除status ct10 被置为0 x0 指令和数据存储器 Cache 除与复位地址关联的指令Cache 与CPU相连的各外设 各外设复位后的状态要具体参考各外设的手册 用户指令逻辑在复位后的状态要参看用户指令逻辑的手册或说明 3 5NiosII处理器运行模式 NiosII处理器有3种运行模式 用户模式 UserMode 超级用户模式 SupervisorMode 调试模式 DebugMode 通常系统程序代码运行在超级用户模式 在V6 0版本以前的NiosII处理器都不支持用户模式 永远都运行在超级用户模式 调试模式 拥有最大的访问权限 可以无限制地访问所有的功能模块 超级用户模式 除了不能访问与调试有关的寄存器 bt ba和bstatus 外 无其它访问限制 用户模式 是超级用户模式功能访问的一个子集 它不能访问控制寄存器和一些通用寄存器 3 5NiosII处理器运行模式 NiosII处理器3种运行模式切换 NiosII处理器3种运行模式 3 6异常和中断控制器 异常控制器NiosII体系结构提供一个简单的非向量异常控制器来处理所有类型的异常 中断控制器NiosII体系结构支持32个外部硬件中断 即irq0 irq31 每个中断对应一个独立的中断通道 3 7NiosII的异常处理 异常类型 硬件中断 软件异常 软件陷阱异常 未定义指令异常 其它异常 一个外设能通过处理器32个中断输入之一 请求产生一个硬件中断 当程序遇到软件陷阱指令时 将产生软件陷阱异常 这在程序需要操作系统服务时常用到 操作系统的异常处理程序判断产生软件陷阱的原因 然后执行相应任务 NiosII异常包括 3 7NiosII的异常处理 硬件中断 软件异常 软件陷阱异常 未定义指令异常 其它异常 当处理器执行未定义指令时产生未定义指令异常 异常处理可以判断哪个指令产生异常 如果指令不能通过硬件执行 可以在一个异常服务程序中通过软件方式仿真执行 其它异常类型是未将来准备的 NiosII异常包括 3 7NiosII的异常处理 异常硬件处理流程当异常发生后 处理器会依次完成以下工作 把status寄存器内容复制到estatus寄存器中 保存当前处理器状态 清除status寄存器的U位为0 强制处理器进入超级用户状态 清除status寄存器的PIE位为0 禁止所有的硬件中断 把异常返回地址写入ea寄存器 r29 跳转到异常处理地址 1 2 3 4 5 3 7NiosII的异常处理 异常判别及优先级 EPIE 1 ipending 0 指令是在 ea 4 trap处吗 指令是在 ea 4 div mul mulxuu 等处吗 进入异常处理 处理硬件中断 处理软件陷阱 处理未定义指令 其它异常 No No No Yes Yes Yes 异常类型判别 3 7NiosII的异常处理 异常的嵌套异常返回异常响应时间 实现异常嵌套 需在用户ISR中打开外部中断允许 PIE 1 在处理异常事件的过程中 可以响应由trap指令引起的软件陷阱异常和未实现指令异常 在异常嵌套之前 为了确保异常能正确返回 必须保存estatus寄存器 ctl1 的ea寄存器 r29 3 7NiosII的异常处理 异常的嵌套异常返回异常响应时间 当执行异常返回指令 eret 后 处理器会把estatus寄存器 ctl1 内容复制到status寄存器 ctl0 中 恢复异常前的处理器状态 然后把异常返回地址从ea寄存器 r29 写入程序计数器 异常发生时 ea寄存器 r29 保存了异常发生处下一条指令所在的地址 当异常从软件陷阱异常或未定义指令异常返回时 程序必须从软件陷阱指令trap或未定义指令后继续执行 因此ea寄存器 r29 就是正确的异常返回地址 3 7NiosII的异常处理 异常的嵌套异常返回异常响应时间 如果是硬件中断异常 程序必须从硬件中断异常发生处继续执行 因此必须将ea寄存器 r29 中的地址减去 ea 4 作为异常返回地址 3 7NiosII的异常处理 异常的嵌套异常返回异常响应时间 NiosII的非向量仲裁策略 导致了NiosII的异常处理延时会比较大 它是靠提高NiosII处理器的执行速度来弥补这一缺点的 见下表 NiosII异常处理性能 3 8存储器及I O结构 NiosII存储器和I O结构 程序计 数器 通用寄 存器文 件 指令 总线 选择 逻辑 数据 总线 选择 逻辑 指令 高速 缓存 数据 高速 缓存 紧耦合指令 存储器 1 紧耦合数据 存储器 1 紧耦合指令 存储器 N 存 储 器 从 外 设 紧耦合数据 存储器 N S M S M Avalon 转换结构 NiosII 处理器 内核 S M Avalon 主端口 Avalon 从端口 NiosII内核访问存储器和I O的方式 1 指令主端口2 指令高速缓存3 数据主端口4 数据高速缓存5 紧耦合指令或数据存储器端口 3 8存储器及I O结构 NiosII存储器和I O结构 程序计 数器 通用寄 存器文 件 指令 总线 选择 逻辑 数据 总线 选择 逻辑 指令 高速 缓存 数据 高速 缓存 紧耦合指令 存储器 1 紧耦合数据 存储器 1 紧耦合指令 存储器 N 存 储 器 从 外 设 紧耦合数据 存储器 N S M S M Avalon 转换结构 NiosII 处理器 内核 S M Avalon 主端口 Avalon 从端口 1 指令主端口2 指令高速缓存3 数据主端口4 数据高速缓存5 紧耦合指令或数据存储器端口 指令与数据总线 3 8存储器及I O结构 指令与数据总线存储器与外设访问NiosII结构提供映射为存储器的I O访问 数据存储器和外设都被映射到数据主端口的地址空间 存储器系统中处理器数据总线低8位分别连接存储器数据线7 0 字 小端模式 高地址 低地址 3 8存储器及I O结构 指令与数据总线指令主端口NiosII指令总线作为32位Avalon主端口来实现 指令主端口只执行一个功能 对处理器将要执行的指令进行取指 指令主端口是具有流水线属性的Avalon主端口 指令主端口依赖Avalon交换结构中的动态总线对齐逻辑始终能接收32位数据 NiosII结构支持片内高速缓存 NiosII结构还支持紧耦合存储器 对紧耦合存储器的访问能实现低延迟 说明 指令主端口不执行任何写操作 动态总线对齐逻辑不管目标存储器的宽度如何 每次取指都会返回一个完整的指令字 因而程序不需要知道NiosII处理器系统中的存储器宽度 片内高速缓存 用于改善访问较慢存储器时的平均指令取指性能 3 8存储器及I O结构 指令与数据总线数据主端口NiosII数据总线作为32位Avalon主端口来实现 数据主端口执行两个功能 1 当处理器执行装载指令时 从存储器或外设中读数据 2 当处理器执行存储指令时 将数据写入存储器或外设 数据主端口不支持Avalon流水线传输 同指令主端口一样NiosII结构支持片内高速缓存 改善平均数据传输性能 NiosII结构也支持紧耦合存储器以实现低延迟 3 8存储器及I O结构 指令与数据总线指令和数据共享的存储器通常 指令和数据主端口共享含有指令和数据的存储器 虽然处理器内核使用独立的指令总线和数据总线 整个NiosII处理器系统对外呈现单一的 共用的指令 数据总线 说明 数据和指令主端口从来不会出现一个端口使另一个端口处于等待状态的停滞状况 为获得最高性能 对于指令和数据主端口共享的任何存储器 数据主端口被指定为更高的优先级 3 8存储器及I O结构 高速缓存 Cache NiosII结构的指令主端口和数据主端口都支持高速缓存 作为NiosII处理器组成部分的高速缓存在SOPCBuilder中是可选的 这取决于用户对系统存储性能以及FPGA资源的使用要求 包含高速缓存不会影响程序的功能 但会影响处理器取指和读 写数据时的速度 高速缓存改善性能的功效是基于以下前提的 1 常规存储器位于片外 访问时间比片内存储器要长 2 循环执行的 最大的 关键性能的指令序列长度小于指令高速缓存 3 关键性能数据的最大块小于数据高速缓存 3 8存储器及I O结构 高速缓存 Cache 例如在以下的情况下高速缓存将无法改善执行速度 NiosII处理器系统只含有快速的片内存储器 即从不访问较慢的片外存储器 程序的关键循环是2KB 而指令高速缓存的大小为1KB 由于性能上的原因 应用程序始终要求某些数据或部分代码存放在高速缓存中 那么紧耦合存储器可能会提供一个更合适的解决方案 注意 Cache虽然改善了系统的整体性能 但使程序的执行时间变得不可预测 对于实时系统来说这一点至关重要 3 8存储器及I O结构 紧耦合存储器 TCM 紧耦合存储器是一种紧挨着内核的快速SRAM 它不仅能改善系统性能 而且保证了装载和存储指令或数据的时间是确定的 紧耦合存储器可向对性能要求严格的应用提供低延迟访问 NiosII存储器和I O结构 紧耦合指令存储器 紧耦合指令存储器 3 8存储器及I O结构 与高速缓存相比具有的优点 1 性能类似于高速缓存 2 软件能够保证将关键性能的代码或数据存放在紧耦合存储器中 3 代码执行的确定性 装载和存储指令或数据的时间是可预测的 NiosII存储器和I O结构 紧耦合指令存储器 紧耦合指令存储器 紧耦合存储器 TCM 3 8存储器及I O结构 紧耦合存储器介绍实际上 紧耦合存储器是NiosII处理器内核上的一个独立的主端口 与指令或数据主端口类似 NiosII结构指令和数据访问都支持紧耦合存储器 NiosII内核可以不包含紧耦合存储器 也可以包含一个或多个紧耦合存储器 每个紧耦合存储器端口直接与具有固定的低延迟的存储器相连 该存储器在NiosII内核的外部 通常使用FPGA片内存储器 紧耦合存储器与其它通过Avalon交换结构连接的存储器件一样 占据标准的地址空间 它的地址范围在生成系统时确定 系统在访问指定的代码或数据时 能够使用紧耦合存储器来获得最高性能 例如 中断频繁的应用能够将异常处理代码放在紧耦合存储器中来降低中断延迟 类似的 计算密集型的数字信号处理 DSP 应用能够将紧耦合存储器指定为数据缓存区 实现最快的数据访问 3 8存储器及I O结构 地址映射在NiosII处理器系统中 存储器和外设的地址映射是与设计相关的 由设计人员在系统生成时指定 这里要特别提到的是3个CPU相关的地址 复位地址 异常地址以及断点处理

温馨提示

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

评论

0/150

提交评论