翻译.docx
- 文档编号:4766370
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:21
- 大小:28.13KB
翻译.docx
《翻译.docx》由会员分享,可在线阅读,更多相关《翻译.docx(21页珍藏版)》请在冰豆网上搜索。
翻译
处理器架构
本章介绍了Nios的硬件结构
第二处理器,包括一NiosII架构的所有功能单元和基本面的讨论的NiosII处理器的硬件实现。
本章包含
以下几个部分:
■“处理器实现”
■“注册文件”
■“算术逻辑单元”
■“复位和调试信号”
■“异常和中断控制器”
■“内存和I/O组织”
■“JTAG调试模块”
NiosII的架构描述的指令集架构(ISA)。
反过来在ISA需要一个组用于实现指令的功能单元。
一个NiosII的处理器核心是一个硬件设计实现的NiosII指令集和支持本文中所描述的功能单元。
该处理器核心不包括外围设备或连接逻辑到外界。
它仅包括电路来实现的NiosII体系结构所需。
NiosII的架构定义了以下功能单元:
■注册文件
■算术逻辑单元(ALU)
■接口自定义指令逻辑
■例外控制器
■内部或外部中断控制器
■指令总线
■数据总线
■内存管理单元(MMU)
■存储器保护单元(MPU)
■指令和数据高速缓存存储器
■指令和数据紧耦合存储器接口
■JTAG调试模块
处理器实现
在NiosII体系结构的功能单元构成为NiosII的基础指令集。
然而,这并不表示任何单元中实施硬件。
NiosII的架构描述的指令集,而不是一个特定的硬件实现。
一种功能单元可以以硬件来实现,仿真软件,或完全省略。
一个NiosII的实施是一家集设计选择了一个特定的NiosII的体现处理器核心。
所有实现都支持在定义的指令集指令集的NiosII处理器参考手册参考章节。
每
实施达到特定的目标,如更小的核心尺寸或更高性能。
这种灵活性允许NiosII的架构,以适应不同的目标应用程序。
实施变量通常适合的3折衷模式之一:
一个或多或少功能;硬件实现还是软件;的功能包含或排除仿真的功能。
每一个权衡的一个例子如下:
■更多的功能,例如以下,微调性能,可以增加或降低指令高速缓冲存储器的量。
更大的缓存增加大型程序的执行速度,而规模较小的缓存节省芯片
内存资源。
■包含的功能,例如或排除,以降低成本,可以选择省略了JTAG调试模块。
这一决定节省片上逻辑和存储器资源,但它消除了使用软件调试器来调试的能力
应用程序。
■硬件实现还是软件仿真,例如,在控制应用程序很少进行复杂的运算,可以选择适合的除法指令必须在仿真软件。
卸下除法硬件节省的片上资源,但会增加部门的执行时间操作。
有关这的NiosII内核支持哪些功能的信息,请参考NiosII处理器参考手册的核心实施细则的篇章。
为关于用户选择的参数为NiosII处理器的完整详细信息,请参阅NiosII处理器参考手册的实例化的NiosII处理器的篇章。
寄存器文件
NiosII的架构支持一个平面寄存器文件,包括3232位
通用整数寄存器,以及多达32个32位控制寄存器。
该
架构支持管理员和用户模式,可以使系统代码保护
控制寄存器从错误的应用程序。
NiosII处理器可以选择haveone或多个影子寄存器集。
一
影子寄存器组是一套完整ofNiosII通用寄存器。
何时
影子寄存器集实施,statusregister的CRSfield表示
该寄存器设置为当前正在使用。
一个指令访问一个通用
注册登记为准集是积极的用途。
一个典型的使用影子寄存器组是加速上下文切换。
当阴影
寄存器集实施,NiosII处理器有两个特殊的指令,
rdprsandwrprs,移动寄存器组之间的数据。
影子寄存器集
通常操作由操作系统内核中,并是透明的
应用程序代码。
NiosII处理器最多可以有63影子寄存器集。
fFor有关影子寄存器集实现和使用的详细信息,请参阅“寄存器”
在NiosII处理器的编程Modelchapter和“异常处理”
参考手册。
有关rdprsandwrprsinstructions的详细信息,请参阅
指令集theNiosII处理器参考手册Referencechapter。
NiosII的架构允许未来增加的浮点寄存器。
算术逻辑单元
NiosII的ALU操作存储在通用寄存器的数据。
ALU
操作需要从寄存器中的一个或两个输入和结果存回寄存器。
ALU支持表2-1中所述的数据操作。
未实现的指令
有些NiosII处理器内核实现不提供硬件支持
整个NiosII的指令集。
在没有硬件支持这样一个核心,说明书
被称为未实现的指令。
该处理器产生异常时,它会发出一个未实现
指令让你的异常处理程序可以调用,模拟在操作的例程
软件。
未实现指令不影响的程序员的看法
处理器。
fFor潜在的未实现指令的列表,请参阅编程模型
章NiosII处理器参考手册。
定制指令
NiosII的架构支持用户自定义指令。
NiosII的ALU
直接连接到定制指令逻辑,使您能够实现在业务
被访问和使用完全一样的原生指令的硬件。
fFor的更多信息,请参考NiosII定制指令用户Guideand“自定义
在实例化的NiosII处理器NiosII的Processorchapter指令选项卡“
参考手册
浮点指令
NiosII的架构支持单精度浮点指令为
由IEEE标准754-1985中指定。
基本设置的浮点定制指令
包括单精度浮点加法,减法,乘法和。
浮点除法可作为延伸的基本指令集。
这些
浮点指令被实现为定制指令。
表2-2lists一个
的一致性,以IEEE754-1985的详细说明。
您可以添加浮点定制指令,任何NiosII处理器的设计。
该
浮点除法的硬件要求比其他说明更多的资源。
浮点硬件参数编辑器允许您省略浮点
除法的硬件在其中你的硬件设计运行的代码不会病例
大量使用浮点除法的。
当你省略了浮点除法
指令,NiosII的编译器实现浮点除法软件。
在Qsys中,浮点Hardwarecomponent下定制指令
Moduleson组件Librarytab包含浮点定制
说明。
FTO添加浮点定制instructionsto在SOPC的NiosII处理器内核
生成器,是指在实例化的NiosII处理器“定制指令选项卡”
章NiosII处理器参考手册。
NiosII的浮动pointcustom说明基于Altera的
®
浮点
宏功能:
ALTFP_MULT,ALTFP_ADD_SUB和ALTFP_DIV。
fFor有关每个人的浮点宏功能,包括信息
加速因子和设备资源的使用,请参阅宏功能用户指南,
可在Altera网站的IP和宏功能的文献页。
在NiosII软件开发工具识别的C代码,它利用的优势
浮点指令存在于处理器核心。
当浮点
定制指令存在于yourtarget硬件,NiosII的编译器
编译你的代码以使用自定义指令进行浮点运算,
包括加法,减法,乘法,除法和NEWLIB数学库。
软件开发的思考
为您的硬件设计的最佳选择取决于之间的浮点平衡
用法,硬件资源使用情况和性能。
而浮点定制
说明加快浮点运算,它们大大增加的大小
您的硬件设计。
如果资源的使用是一个问题,考虑重新加工您
算法来减少浮点运算。
您可以使用#pragma指令在你的软件,比较硬件和软件
的浮点指令的实现。
下面的#pragma指令
指示的NiosII编译器忽略浮点指令,并生成
软件实现。
这些#pragma指令的作用域是整个C文件。
■#pragmano_custom_fadds—强制软件实现浮点加
■#pragmano_custom_fsubs—强制软件实现的浮点减
■#pragmano_custom_fmuls—强制软件实现的浮点乘
■#pragmano_custom_fdivs—强制软件实现的浮点除
NiosII的指令集仿真器(ISS)在NiosII集成开发
环境(IDE)不支持自定义指令。
如果你需要运行
软件在国际空间站上,禁用软件浮点定制指令与
在#pragma指令。
所有浮点自定义指令都是单精度运算。
双精度浮点运算是在软件中实现。
当浮点定制指令不存在,在NiosII编译
把浮点常量作为双精度值。
然而,随着
浮点定制指令,在NiosII编译器将浮点常量
因为默认情况下的单精度数。
这使得所有浮点表达式
在硬件中进行评估,在精密的可能成本。
如果您不希望浮点常量砥摔下来的单精度值,
追加的LTO每个恒定值,指示编译器将常量作为
双精度浮点值。
在这种情况下,如果一个表达式包含一个
浮点常量,表达式中的每一项被转换为双精度。
作为
结果,表达式被计算withsoftware实现双精度
四则运算,在运算速度的成本。
表2-3描述了如何计算是针对乘以单精度变量的浮点常量的代码来实现。
1含有海合会4编译器工具链,预编译的库编译
双精度浮点常量。
预编译浮点行为
库函数如sin()和cos()是不受的存在
浮点定制指令。
表2-3。
浮点常量的例子
复位和调试信号
如表2-4所示的复位和调试的信号,NiosII处理器的内核
支持。
以获得关于添加的复位信号到NiosII处理器的更多信息,请参阅
在NiosII的实例化的NiosII处理器章“高级功能选项卡”
处理器参考手册。
对于上破矢量的更多信息和添加
调试信号到NiosII处理器,请参阅“JTAG调试模块选项卡”中的
实例化的NiosII处理器参考手册的NiosII处理器的篇章。
异常和中断控制器
NiosII处理器包括硬件处理异常,包括硬件
中断。
它也包括一个可选的外部中断控制器(EIC)接口。
该EIC界面,您可以通过中断在处理一个复杂的系统加速
添加自定义的中断控制器。
异常控制器
NiosII的架构提供了一个简单,nonvectored异常控制器来处理
所有的异常类型。
每个异常,包括内部硬件中断,使
处理器执行转移到异常地址。
在这个异常处理程序
地址确定异常的原因,并调度一个合适的异常程序。
异常地址与在Qsys中的NiosII处理器参数指定的编辑器
和SOPCBuilder。
所有的异常都是精确的。
该处理器已完成执行精确的手段
的错误指令之前的所有指令,并没有开始执行
说明以下错误指令。
精确的例外允许处理器
恢复执行程序,一旦异常处理程序清除异常。
EIC接口
一个EIC提供高性能的硬件中断,以减少你的程序的
中断延迟。
一个EIC通常用于与影子寄存器组结合
而当你需要的不仅仅是由NiosII内部提供32个中断
中断控制器。
NiosII处理器通过EIC接口连接到EIC。
当EIC是
目前,内部中断控制器不落实;的Qsys和SOPCBuilder
连接中断的EIC。
启德教育选择主动中断之间并提出一个中断到NiosII
处理器,与中断处理程序的地址和寄存器组选择信息。
该
中断选择算法是特定于EIC实现,并且一般是
根据中断优先级。
NiosII处理器不依赖于任何特定的
中断优先级方案中的EIC。
对于每一个外部中断,启德教育提供了一个中断级别。
NiosII处理器
用于确定当服务中断的中断级。
任何外部中断可配置为一个NMI。
NMI的没有被屏蔽
status.PIEbit,且无中断的水平。
一个EIC可以通过软件配置。
当EIC接口和映射寄存器集上的NiosII内核实现的,
你必须确保你的软件是建立在NiosIIEDS9.0或更高版本。
早期版本有ERET指令不兼容的实现
与映射寄存器集。
对于EIC的一个典型例子,是指在向量中断控制器章
嵌入式外设IP用户指南。
有关EIC使用细节,请参考“异常
在NiosII处理器参考的编程模型处理一章“
手册。
内部中断控制器
NiosII的架构支持32个内部硬件中断。
处理器核心
有32个电平敏感的中断请求(IRQ)输入,IRQ0至IRQ31,提供了
独特的输入为每个中断源。
IRQ优先级是由软件决定。
该
架构支持中断嵌套。
你的软件可以通过启用和禁用任何中断源单独的
使能控制寄存器,其中包含一个中断使能位为每个IRQ的
输入。
软件可以在全球启用和禁用中断使用的PIE位
状态控制寄存器。
一个硬件中断产生,当且仅当所有的
下列条件为真:
■状态寄存器的PIE位为1
■一个中断请求输入,IRQ
■相应的n位使能寄存器的值为1
在SOPCBuilder中,NiosII处理器内核提供一个中断向量自定义
指令,从而加速中断向量调度,以减少你的程序的
中断延迟。
中断向量定制指令比使用效率较低
三电接口与Altera的向量中断控制器组件,从而为
弃用的Qsys。
Altera建议使用EIC接口。
有关添加中断向量定制指令到NiosII的信息
处理器SOPCBuilder中,请参阅“自订指令选项卡”中的实例化
NiosII处理器参考手册的NiosII处理器的篇章。
内存和I/O组织
本节介绍了NiosII内存的硬件实现细节,
I/O的组织。
讨论涵盖了一般概念所有的NiosII的真
处理器系统,以及可能会改变从系统到系统的功能。
在NiosII内存的灵活特性和I/O的组织是最显着的
NiosII处理器系统与传统的微控制器之间的差异。
由于NiosII处理器系统是可配置的,在存储器和外设
变化从系统到系统。
因此,内存和I/O的组织变化
从系统到系统。
一个NiosII的核心采用以下一种提供内存和I/O访问或以上:
■指令主端口,一个Avalon内存映射(Avalon-MM)主端口
它通过系统互联架构连接到指令存储器
■指令缓存,快速快取记忆体内部到NiosII内核
■连接到数据存储器中的数据主端口,一个Avalon-MM主端口和
通过系统互联架构外设
■数据高速缓存的快速高速缓存存储器内部的NiosII的核心
■紧耦合指令或数据存储器端口的接口快速芯片内存在NiosII内核外
NiosII的架构可处理硬件细节的程序,所以
程序员可以开发NiosII的应用程序,而具体的知识
硬件实现。
对于影响编程的问题的详细信息,请参阅的编程模型章
NiosII处理器参考手册。
指令和数据总线
在NiosII体系结构支持独立的指令和数据总线,它作为分类
哈佛架构。
两个指令和数据总线被实现为
的Avalon-MM主端口坚持的Avalon-MM接口规范。
该
数据主端口连接到内存和外围元件,而
指令主端口只连接到内存组件。
请参阅阿瓦隆接口规格为的Avalon-MM接口的详细信息。
内存和外设访问
NiosII的架构提供的内存映射I/O访问。
这两个数据存储器
和外设映射到数据主端口的地址空间。
该
NiosII的架构使用little-endian字节顺序。
字和半字存储
在内存在较高的地址更显著字节。
在NiosII体系结构不指定有关记忆的存在,任何事情,
外设,数量,类型的内存和外围设备的连接,并
依赖于系统的。
通常情况下,NiosII处理器系统包含快速片上的混合
存储器和较慢的片外存储器。
外设通常驻留在芯片上,虽然
接口,片外外设也是存在的。
指令主端口
NiosII的指令总线被实现为一个32位的Avalon-MM主端口。
该
指令主端口执行一个单一的功能:
取指令是
由处理器执行。
该指令主端口不执行任何写
操作。
指令主端口是一个流水线的Avalon-MM主端口。
支持
流水线的Avalon-MM转让与最大限度地减少同步记忆的影响
流水线延迟,并增加了整体的F中的系统的最大。
该指令的主
端口可以发出连续的读取请求之前的数据已经从之前的请求返回。
NiosII处理器可以连续预取指令和执行分支
预测保持指令管道尽可能活跃。
指令主端口始终获取32位的数据。
该指令的主
端口依赖于包含在系统互连结构动态总线上浆逻辑。
通过
凭借动态总线大小,每次取指令返回一个完整的指令字,
不管目标存储器的宽度。
因此,程序不需要
意识到内存在NiosII处理器系统的宽度。
在NiosII架构支持片上高速缓存以提高平均
访问速度较慢的内存时取指令的性能。
请参阅“高速缓存
内存“一节第2-13页。
NiosII的架构支持紧密耦合
内存,它提供保证的低延迟访问的片上存储器。
请参阅
有关详细信息,2-14页上的“紧耦合存储器”。
数据主端口
NiosII的数据总线实现为一个32位的Avalon-MM主端口。
数据
主端口执行两个功能:
■阅读来自存储器或外设的数据时,处理器执行的负载
指令
■将数据写入存储器或外设时,处理器执行一个存储
指令
字节使能的主端口上的信号,指定要写入其中的四个字节通道的
在存储操作。
当NiosII的核心被配置为与数据高速缓冲存储器行
大于四个字节,数据主端口支持流水线的Avalon-MM
传输。
当该数据的高速缓存行的大小只有4个字节,任何存储器流水线
延迟是由数据主波塔斯感知等待状态。
装载和存储操作
可以在一个单一时钟周期完成时,数据主端口连接到
零等待状态的内存。
在NiosII架构支持片上高速缓存以提高平均数据
访问速度较慢的内存传输时的性能。
请参阅“快取记忆体”上
第2-13页的说明。
NiosII的架构支持紧密耦合内存,
它提供保证的低延迟访问的片上存储器。
请参阅
第2页-14因为细节“紧耦合存储器”。
共享内存的指令和数据
通常情况下,指令和数据主端口共享一个存储器包含
指令和数据。
而处理器内核具有独立的指令和数据
总线,整体NiosII处理器的系统可能呈现一个单一的,共享
指令/数据总线到外面的世界。
NiosII处理器的外部视图
系统依赖于在系统中和的结构的存储器和外围设备
系统互连结构。
该数据和指令主端口不会导致一个僵局状态,其中一个
端口抑制其他端口。
为了获得最高的性能,指定数据主端口高
底是由指令和数据共享主内存的优先权序列
端口决定的。
高速缓存存储器
NiosII的架构支持高速缓存存储器的两个指令主端口
(指令缓存)和数据主端口(数据缓存)。
高速缓存存储器驻留
片上作为NiosII处理器核心的一个组成部分。
高速缓冲存储器可以
提高使用速度慢的NiosII处理器系统的平均内存访问时间
片外存储器,例如SDRAM用于程序和数据的存储。
指令和数据高速缓存在运行时永远启用,但方法是
提供软件绕过数据缓存,以便外设访问不
返回缓存的数据。
缓存管理和缓存的一致性是由软件来处理。
NiosII的指令集提供了缓存管理指令。
可配置的高速缓存选项
高速缓冲存储器是可选的。
需要更高的存储性能(和由
联想,需要高速缓存存储器)是依赖于应用程序。
许多应用程序
所需要的最小的可能的处理器内核,并且可以折衷表现为尺寸。
NiosII处理器内核可能包括一个高速缓冲存储器,这两者或两者都不是。
另外,对于铁心,提供数据和/或指令高速缓存,的尺寸
高速缓冲存储器是用户可配置的。
包含高速缓冲存储器的,不影响
程序的功能,但它确实会影响速度,该处理器
取指令和读取/写入数据。
有效利用快取记忆体的
高速缓冲存储器中以提高性能的效果是基于以下
前提:
■定期存储器位于片,和访问时间相比较长芯片
记忆
■最大,性能关键指令循环比小指令
缓存
■性能关键型数据的最大块比数据缓存较小
最佳的高速缓存配置为特定的应用程序,虽然可以做出决定
是有效跨越广泛的应用。
例如,如果一个NiosII处理器
系统仅包括速度快,片上存储器(即,它从来没有访问速度慢,片
存储器),指令或数据高速缓冲存储器是不可能提供任何性能增益。
如
另一个例子,如果一个程序的临界循环为2K字节,但的大小
指令缓存为1KB,指令缓存并不能提高执行速度。
在
事实上,指令高速缓冲存储器可能在这种情况下降低性能。
如果一个应用程序总是要求以位于高速缓存中特定的数据的代码段或
内存性能方面的原因,紧密耦合内存功能可以提供
一个更合适的解决方案。
请参阅“紧耦合存储器”2-14页的
详细信息。
缓存旁路方法
NiosII的体系结构提供了用于绕过数据高速缓存的下列方法:
■I/O负载和存储指令
■位31缓存旁路
I/O负载和存储指令的方法
加载和存储I/O指令,如ldio和STIO旁路数据缓存和
迫使一个Avalon-MM的数据转移到一个指定的地址。
该位31缓存旁路方法
数据主端口上的位31缓存旁路方法使用该地址的31位作为
标记,指示是否处理器应该从数据高速缓存,或旁路转移到/
它。
这是一个方便的软件,可能需要缓存某些地址
和旁路等。
软件可以通过地址作为函数之间的参数,
而不必指定是否被寻址的数据的任何进一步的信息
被高速缓存。
要确定哪些内核实现的缓存旁路方法,请参考NiosII
NiosII处理器参考手册的核心实施细则的篇章。
紧耦合存储器
紧耦合存储器提供保证的低延时内存访问
性能关键型应用程序。
相比于高速缓冲存储器中,紧密耦合
内存提供了以下好处:
■性能类似高速缓存存储器
■软件可以保证性能的关键代码或数据位于
紧耦合存储器
■无实时缓存间接,如加载,无效,或冲洗记忆
在物理上,一个紧耦合存储器端口是在NiosII的一个单独的主端口
处理器核心,类似的指令或数据的主端口。
一个NiosII的核心可以有
零个,一个或多个紧密耦合的存储器。
在NiosII架构支持
紧密耦合的存储器,用于指令和数据的访问。
每个紧密耦合
存储器端口直接连接到只有一个内存有保障的低,固定
延迟。
内存是外部的NiosII的核心,位于芯片。
访问紧耦合存储器
紧耦合存储器占用正常的地址空间,像其他的内存
通过系统互联架构连接的设备。
的地址范围
紧耦合存储器(如果有的话)在systemgeneration时确定。
使用常规的加载和存储指令的软件访问紧耦合存储器。
从软件的角度来看,访问紧耦合存储器与其他存储器相比是没有区别的。
有效利用紧耦合存储器的
一个系统可以使用紧密耦合内存以达到最大性能
访问的代码或数据的特定部分。
例如,中断密集型
应用程序可以将异常处理程序代码到一个紧密耦合的存储器,以
最大限度地减少中断延迟。
同样的,计算密集的数字信号处理
(DSP),应用程序可以将数据缓冲区入紧耦合存储器的最快
可能的数据访问。
如果应用程序的内存需求是足够小,以适应整个芯片上,它是
可以使用紧密耦合的存储器专用代码和数据。
大
应用程序必须选择性地选择要在紧耦合存储器包括以
最大限度地提高成本性能权衡。
有关更多的紧密耦合内存原则,指的是利用紧耦合
内存与NiosII处理器教程
地址地图
地址映射为存储器和外设的NiosII处理器系统设计
依赖。
你的Qsys和SOPCBuilder中指定的地址映射。
但是也有一些处理器的一部分,特别值得一提三个地址:
■复位地址
■异常地址
■中断处理程序的地址
程序员通过使用宏和驱动程序访问存储器和外设。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 翻译