(计算机系统结构专业论文)32位5级流水线嵌入式处理器设计.pdf_第1页
(计算机系统结构专业论文)32位5级流水线嵌入式处理器设计.pdf_第2页
(计算机系统结构专业论文)32位5级流水线嵌入式处理器设计.pdf_第3页
(计算机系统结构专业论文)32位5级流水线嵌入式处理器设计.pdf_第4页
(计算机系统结构专业论文)32位5级流水线嵌入式处理器设计.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机系统结构专业论文)32位5级流水线嵌入式处理器设计.pdf.pdf 免费下载

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

文档简介

独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人己经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:整塞日期:弦夕年乒月拥 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:立灶导师签名:勉 日期:9 年手月乏广日 第一章引言 1 1 课题背景与意义 第一章引言 嵌入式系统是当今非常热门的研究领域。在p c 市场己趋于稳定的今天,嵌入 式系统市场的发展速度却正在加快。由于嵌入式系统所依托的软硬件技术得到了 快速发展,因此这几年嵌入式系统自身获得了快速发展。根据美国嵌入式系统专 业杂志r t c 报道,在2 l 世纪初的1 0 年中,全球嵌入式系统市场需求量具有比p c 市 场大l o 倍到1 0 0 倍的商机。 随着片上系统( s o c ) 技术的不断发展以及嵌入式系统对处理器处理能力的需 求不断提高,3 2 位处理器i p 核已经被广泛用于s o c 以及s o p c ( 硬件可配置s o c ) 的设 计与开发当中。 商业3 2 位处理器软核主要包括a 蹦公司的a r m 系列,m i p s 公司的m i p s 3 2 系列, x i l i n x 公司的m i c r c b l a z e ,a l t e r a 的n i o s 等等,因此3 2 位嵌入式软核的开发与应 用是非常广泛的。 随着开源软件的蓬勃发展,开源的处理器软核也发展起来,由于开源处理器 软核没有任何授权费用,因此开源的处理器软核越来越受到学术界和工业界的重 视,o p e n r i s c l 2 0 0 和l e o n 处理器软核就是其中的代表,已经有不少公司和机构把 开源处理嚣软核用于产品的开发以及嵌入式系统的设计,例如v i v a c e 公司在他们 新开发的多媒体处理芯片中就采用了o p e n r i s c l 2 0 0 的软核,而法国的c o m s i s 公司 在他们新的多输入多输出( m i m o ) 无线宽带网络解决方案中就采用了最新的 l e o n 3 处理器软核。而且不少研究机构也将开源处理器软核用于研究当中,例如 美国加州大学b e r k e l e y 分校就将l e o n 3 应用于他们新的多核计算机系统研究项目 r a m p 当中,美国麻省理工学院则在他们的一个单芯片安全处理器研究项目a e g i s 中采用了o p e n r i s c 软核。 因此处理器软核的设计与开发有着重要研究价值与广阔的应用前景,而现在 的嵌入式应用对嵌入式处理器软核提出更高的要求,需要嵌入式处理器具各高度 的灵活性,可根据实际的需要实现可伸缩的配置,而且也需要处理器软核在占用 硬件资源尽可能少的情况下提高性能并保持低功耗。 电子科技大学硕士学位论文 1 2 处理器软核发展动态 a r m 公司开发了很多系列的a r m 处理器内核,a r m 代表了低功耗高性能嵌 入式处理器的最高水品,目前应用的比较多的有a r m 7 系列,a r m 9 系列, a r m 9 e 系列,a r m l 0 系列,a r m il 系列。a r m 公司最近发布了最新的 c o r t e x a 8 t m 处理器,c o r t e x - a 8 处理器是第一款基于下一代a r m v 7 架构的应用处 理器,使用了能够带来更高性能、功耗效率和代码密度的t h u m b - 2 技术。它首次 采用了强大的n e o n t m 信号处理扩展集,对h 2 6 4 和m p 3 等媒体编解码提供加 速。c o r t e x - a 8 解决方案还包括j a z e l l e - r c tj a v a 3 1 速技术,对实时( j i t ) 和动态 调适编译( d a c ) 提供最优化,同时减少内存占用空间高达三倍。此外,新处理 器还配置了用于安全交易和数字版权管理的t r u s t z o n e 技术以及实现低功耗管理的 i e m 功能。c o r t e x a 8 处理器配置了先进的超标量体系结构流水线,能够同时执行 多条指令。处理器集成了一个可调尺寸的二级高速缓冲存储器,能够同高速的 1 6 k 或者3 2 k 一级高速缓冲存储器一起工作,从而达到最快的读取速度和最大的 吞吐量。c o d e x - a 8 处理器使用了先进的分支预测技术,并且具有专用的n e o n 整 型和浮点型流水线进行媒体和信号处理。在使用小于4 平方毫米的硅片及低功耗 的6 5 纳米工艺的情况下,c o d e x - a s 处理器的运行速度将高于6 0 0 m h z ( 不包括 n e o n ,追踪技术和二级高速缓冲存储器) 。在高性能的9 0 纳米和6 5 纳米工艺 下,c o d e x a 8 处理器运行速度最高可达2 i i g h z ,从而满足高性能消费产品设计 的需要。 开源的3 2 位处理器软核l e o n 展新发布的版本为l e o n 3 ,l e o n 3 来源于欧洲航天 局开发的e r c 3 2 和l e o n 2 ,而e r c 3 2 和l e o n 2 正被用于欧洲和国际空间项哥中。 l e o n 3 基于s p a r cv 8 指令集结构,采用7 级流水线,哈佛结构。l e o n 3 支持完整的 s p a r c v 8 指令集,包括乘法指令、乘加指令和除法指令,并提供了一个可选配 的支持单精度和双精度的i e e e - 7 5 4 浮点处理单元。l e o n 3 提供了灵活的缓存系 统,可支持i 路至4 路组关联,并可选择l r u ,l r r 或随机替换机制。l e o n 3 支持同 步多处理器配置( s m p ) ,提供了缓存一致性的硬件支持。l e o n 3 在1 3 0 纳米工艺 下,运行速度可高于4 0 0 m h z ,如果综合到f p g a ,频率也可高于1 0 0 m h z 。而 l e o t l 3 f t 则提供了很高的容锚性,可适用于严酷的环境中,例如航天应用。 x i l i n ) 滏司最新推出性能优化的m i c r o b l a z e 软处理器5 0 0 版。这款3 2 位r i s c 内核现可在v i n e x - 5f p g a 器件中提供 2 4 0d m i p s 的整数处理能力,浮点运算性能 达5 0m f l o p s ,m i c r o b l a z e5 0 0 软处理器是在m i c r o b l a z e4 ,0 0 基础之上的进一步 开发,保持了指令集的后向兼容性,提供了紧密祸合的浮点单元、可配置的硬件 2 第一牵引言 乘法器、除法器单元以及缓存链等功能。为满足对更高性能的需求,x i l i n x 公 司的工程师提高了m i c r o b l a z e5 0 0 内核的时钟频率并利用增强的5 级流水线进一步 优化了其流水线效率。m i c r o b l a z e5 0 0 提供经验证的立即可用的预建配置选项, 使开发人员可以直接用于自己的嵌入式处理设计,或定制自己的处理器。其中, 缓存大小可配置为4 个字长或8 个字长,可根据应用需要来精细调整其性能。对于 指令和数据缓存,其大小可以独立配置,从而能够以最优化的方式使用内部 f p g ab i l m 资源。处理器还提供了专门用于数据密集多媒体应用的新指令。此 类指令包括模式比较指令和缺省情况下提供的用于指令搜索优化的m s r s e t c l r 指令。此外,新增加的处理器版本寄存器( p r o c e s s o rv e r s i o nr e g i s t e r ) 可用于支 持多处理器应用。处理器提供的用户可选功能可以被禁止( 当不需要时) ,从而 节约关键的逻辑资源。 a l t e r a 公司推出的是n i o si 【系列3 2 位r s i c 嵌入式处理器。n i o sl i 系列软核处 理器是a l t e r a 的第二代f p o a 嵌入式处理器,其性能超过2 0 0 d m i p s 。n i o si i 系列 包括3 种产品,分别是:n i o si f f ( 快速) 最高的系统性能,中等f p g a 使用 量;n i o si v s ( 标准) 高性能,低f p g a 使用量;n i o si i ,c ( :经济卜唯性 能,最低的f p g a 使用量。这3 种产品具有3 2 位处理器的基本结构单元3 2 位 指令大小,3 2 位数据和地址路径,3 2 位通用寄存器和3 2 个外部中断源;使用同 样的指令集架构( i s a ) ,1 0 0 - - 进制代码兼容,设计者可以根据系统需求的 变化更改c p u ,选择满足性能和成本的最佳方案,而不会影响己有的软件投 入。特别是,n i o si i 系列支持使用专用指令。专用指令是用户增加的硬件模 块,它增加了算术逻辑单元( a l u ) 。用户能为系统中使用的每个n i o si i 处理 器创建多达2 5 6 个专用指令,这使得设计者能够细致地调整系统硬件以满足性能 目标。专用指令逻辑和本身n i o si h 日4 , 相同,能够从多达两个源寄存器取值, 可选择将结果写回目标寄存器。同时,n i o si i 系列支持6 0 多个外设选项,开发 者能够选择合适的外设,获得最合适的处理器、外设和接口组合,而不必支付 根本不使用的硅片功能。 1 3 课题研究内容 1 3 1 指令集选择 b e t a 是麻省理工学院( m i t ) 用于教学的指令集结构。b e t a 为通用的3 2 位 r i s c 体系结构:所有寄存器的宽度均为3 2 位,b e t a 指令集支持完整的整数算术逻 电予科技大学爵士学位论文 辑操作( 算术操作,比较操作,布尔操作,移位操作) 。b e t a 还可以通过不执行 任何计算的装载和存储指令来访问存储器。b e t a 是非常简洁的指令集,易于研 究,分析与设计。而且b e t a 为公开的指令集体系结构,开发基于b e t a 指令集的处 理器不需要商业授权,因此本课题选择b e t a 指令集作为开发嵌入式处理器软核的 指令集结构。在本论文中将详细的介绍b e t a : b 令集结构。 1 3 2 流水线的实现 流水线是提高处理器性能的重要方法,通过流水线的设计可以大大提高处理 器的时钟频率。研究如何设计流水线,怎样解决流水线带来的控制冒险、数据冒 险以及在实施了流水线后如何处理异常和中断。 1 3 3c a c h e 系统的设计与实现 c a c h e 系统是现代处理器巾最重要的组成部分之一,研究不同种类c a c h e 的特 点,c a c h e 性能的评价方法,分析影响c a c h e 性能的关键因素以及实施的复杂度, 选择恰当类型的c a c h e 进行设计和实施。 1 3 4 动态分支预测 分支预测是计算机结构研究的一个前沿课题,好的分支预测算法可咀提高流 水线的效率。本课题将分析现有主要的动态分支预测技术,并在所设计的嵌入式 处理器中加入分支预测模块进行分析与研究。 1 3 5 复杂数字系统的开发与测试流程 开发嵌入式处理器的复杂度是非常高的。为保证设计和开发的正确性,本课 题将建立一套完整的开发与测试流程和规范,采用行为仿真、r t l 设计与验证以 及f p g a 硬件验证等多种方式对设计进行测试。 1 4 论文的组织 论文第二章将详细介绍b e t a t 曾令集结构,包括机器模型,完全的3 2 条指令的 编码和规范,异常处理,以及软件约定。 第三章是论文的重点,详细介绍7 b e t a 5 处理器的整体结构设计,流水线及流 水线控制器设计,旁路及旁路控制器设计,c a c h e 系统设计和动态分支预测模块 第一章引言 的设计。 第四章介绍b e t a 5 的开发与测试流程,包括行为仿真、r t l 设计与验证的流程 和方法,f p g a 开发与验证平台以及利用c h i p g c o p ep r o 在f p g a 开发平台上进行硬 件测试。 第五章总结全文并提出下一步工作的内容和方向。 电子科技大学硕士学位论文 2 1 计算机模型 第二章b e t a 指令集结构 b e t a 为通用的3 2 位体系结构:所有寄存器的宽度均为3 2 位,在访问存储器 时,可以指向按字节寻址的存储器中的任意存储单元,见图2 1。在执行读操作 时寄存器3 1 为o 值,当对寄存器3 1 执行写操作时,新值会被舍弃。 m 尊1c o t m t e r _ _ - _ - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 。_ _ _ _ _ _ - _ _ - _ _ _ - - - h _ h - h _ _ _ _ 一 j 整! 竺竖! ! 也生丝 - 一3 2 b b j r c 幽t o t s e r 三三 ll e 1 2 - 3 1 三三 靠m 0 0l k ;2b l t s 一 2 2 指令编码 m a i n m e m o r y 三里垩 i s u b i p j r 4 x s $ l s t i r 3 t 0 0 0 ) 。o x f f 。f f 7 。f f 8 , 二二二二二二j m # 日e 卜一5 2 b t c s 一 图2 tb e t a 计算机模型 t : :b ”。, 上 每条b e t a s 日令的跃度均为3 2 位。所有整数操作均在寄存器之间进行,最多可 以带两个源操作数( 其中一个可能是一个符号扩展后的1 6 位直接量) 以及一个目 的寄存器。可以通过不执行任何计算的装载和存储指令来访问存储器。条件转移 指令与比较指令的不同之处在于:条件指令会测试某个寄存器的值,而该值很可 能是前一条比较指令的结果。 只有两种指令编码类型:不带直接量的( 见图2 2 ) 和带直接量( 1 l t e r a l ) 的 ( 见n 2 - 3 ) 。不带直接量的指令包括两个寄存器之间的算术运算指令和逻辑运算 指令( 将其结果放置在第三个寄存器中) 。带直接量的指令包括其他所有运算指 令。 第二章b e m 指令集结构 与b e t a 计算机上的所有有符号数一样,指令的直接量都被表示成二进制补码 形式。 图2 2 不带直接量的指令编码 3 12 62 52 12 01 61 5 0 图2 - 3 带直接量的指令编码 2 3 指令概述 下列列出的是3 2 个b e t a 指令及其6 位长的操作码情况。如果想了解每个指令操 作的详细情况,请参考以下各部分内容。 表2 i 操作码对应的助记符 助记符 操作码 a d d0 x 2 0 a d d c 0 x 3 0 a n d 0 x 2 8 a n d c0 x 3 8 b e 0 0 x l d b n e0 x i e c m p e q 0 x 2 4 c m p e q c0 x 3 4 c m p l e0 x 2 6 c m p l e c0 x 3 6 c m p l t 0 x 2 5 c m p l t c0 x 3 5 d i v 0 x 2 3 d i v c0 x 3 3 j m p o x l b l o0 x 1 8 l n 0 x l f l i u l 0 x 2 2 m u l c0 x 3 2 o r0 x 2 9 0 r c0 x 3 9 s h l0 x 2 c s h l c0 x 3 c 电子科技大学硕士学位论文 2 4 指令规范 s h r c o 妇d s r a 0 x 2 e s r a c 0 x 3 e s u b 0 x 2 l s u b c o x 3 l s t o x l 9 x o r 0 x 2 a x o r c0 x 3 a 基于本节包括b e t a 指令的各种规范,按字母表先后顺序列出。没有给出与时 序相关的任何信息:特别是假定本舰范中的不同指令之间不存在任何病态时序交 互作用。每条指令都被认为具有原子性,并且假定它们都在下一条执行之前完 成。没有生成有关分支预测、指令预取或是存储器缓存的任何假定。 a d d 用法:a d d ( r a , r b ,r c ) 操作码: 操作:p c p c + 4 r e g r c 一r e g r a + r e g r b 】 将寄存器r a 的内容与寄存器r b 的内容相加,再将3 2 位的和写入到寄存器r e 中。该指令不计算任何进位信息或者溢出信息。如果想要的话,可以通过显式的 比较指令来计算得到该结果。 a d d c 用法:a d d c ( r a 。l i t e r a l ,r e ) 操作码: 操作:p c p c + 4 r e g r c 一r e g r a 】+ s e x t ( 1 i t e r a l ) 将寄存器r a 的内容与直接量相加,再将3 2 位的和写入到寄存器r c 中。该指令 不计算任何进位信息或者溢出信息。如果想要的话,可以通过显式的比较指令来 计算得到该结果。 第二章b c b 指令集结构 a n d 用法:a n d ( r a ,p , b ,r 0 操作码: 操作;p c p c + 4 r e g r c 一r e g r a 】r e g r b 】 该指令执行的功能是:对寄存器r a 和r b 中的内容执行按位与布尔逻辑运算。 将运算结果写入到寄存器r c 中。 a n d c 用法:a n d c ( r a ,直接量,r 0 操作码: 操作:p c p c + 4 r e g r c 一r e g i r a & s e x t ( 1 i t e r a l ) 该指令执行的功能是:对寄存器r a 的内容和直接量执行按位与布尔逻辑运 算。将运算结果写入到寄存器r c 中。 b e q i b f 用法:b e q ( r a ,l a b e l ,r c ) b f ( r a , 1 a b e l ,r e ) 操作码: 操作:l i t e r a l = ( ( o f f s e t ( 1 a b e l ) 一o f f s e t ( c u r r e n ti n s t r u c t i o n ) ) 4 ) 一1 p c p c + 4 e a p c 十4 4 s e x t ( 1 i t e r a l 、 t e m p - r e g r a r e g r c - p c 如果t e m p = 0 ,, u p c e a 将紧接在b e q 指令之后的那条指令的p c 值( 更新的p c 值) 写入到寄存器r c 中。如果寄存器r a 的内容为零,则将目标地址装载到p c 中;否则,继续执行下一 条后继指令。 可将位移值直接量看作是一个有符号的字偏移量。这就意味者可以通过将它 乘以4 来将它转换成一个字节偏移量,再通过符号扩展来将它扩展成3 2 位,并通 9 电子科技大学硕士学位论文 过与更新的p c 值相加来形成目标地址。 b n e ,b t 用法:b n e ( r a ,l a b e l ,r c ) b t ( r a ,l a b e l ,r c ) 操作码: 操作:l i t e r a l = ( ( o f f s e t ( 1 a b e l ) 一o f f s e t ( c u r r e n t i n s t r u c t i o n ) ) 4 ) 一1 p c p c + 4 e a + 一p c + 4 + s e x t ( 1 i t e r a l ) t e m p r e g r a 】 r e g r c 一p c 如果t e m p 0 ,则p c e a 将紧接在b n e 指令之后的那条指令的p c 值( 更新的p c 值) 写入到寄存器r c 中。如果寄存器r a 的内容为非零值,则将目标地址装载到p c 中;否则,继续执行 下一条后继指令。 可将位移值直接量看作是个有符号的字偏移量。这就意味着可以通过将它 乘以4 来将它转换成一个字节偏移量,再通过符号扩展来将它扩展成3 2 位,并通 过与更新的p c 值相加来形成目标地址。 c m p e q 用法:c m p e q ( r a ,i m 皿c ) 操作码: 操作:p c p c + 4 如果a e g r a l = r e g r b ,则r e g r e 】一l ;否则,p e g r c 】一0 如果寄存器r a 的内容与寄存器r b 的内容相等,则将第一个值写入到寄存器r c 中;否则,将零写入到寄存器r c 中。 c m p e q c 用法;c m p e q c 但a ,l i t e r a l ,r e ) 操作码: 操作:p c p c + 4 如果r e g r a = s e x t ( 1 i t e r a l ) ,则r e g r c 】一1 ;否则,r e g r c 】一0 第二章b e t a 指令集结构 如果寄存器r a 的内容与直接量相等,则将第一个值写入到寄存器r c 中;否 则,将零写入到寄存器r c 中。 c m p l e 用法;c m p l e ( r a ,r b ,r e ) 操作码; 操作:p c p c + 4 如果r e g r a ! r e g r b ,贝o r e g r c 】一1 ;否则,r e g r e 一0 如果寄存器r a 的内容小于或者等于寄存器r b 的内容,则将第一个值写入到寄 存器r c 中;否则,将零写入到寄存器r c 中。 c m p l e c 用法: c m p l e c ( r a ,l i t e r a l ,r c ) 操作码: 操作:p c p c4 - 4 如果r e g r a 】ss e x t ( 1 i t e r a l ) ,t j l , i j r e g r e 一1 ;否则,r c g r c 】一0 如果寄存器r a 的内容小于或者等于直接量,则将第一个值写入到寄存i n - r e 中;否则,将零写入到寄存器r c 中。 c m p l t 用法:c m p l t ( r a ,r b ,r e ) 操作码: 操作:p c p c + 4 如果r e g r a 】 r e g r b ,j j r e g r c 一l ;否则,r e g r e 】一0 。 如果寄存器r a 的内容小于寄存器r b 的内容,则将第一个值写入到寄存器r c 中:否则,将零写入到寄存器r c 中。 c m p l t c 用法;c m p l t c 限a l i t e r a l ,r e ) 操作码: 操作:p c p c4 - 4 如果r e g r a 】 s e x t ( 1 i t e r a l ) ,则r e g r e 】一l ;否则,r e g r e 一0 电子科技大学硕士学位论文 如果寄存器r a 的内容小于直接量,则将第一个值写入到寄存器r c 中;否则, 将零写入到寄存器r e 中。 d i v 用法:d w ( r a ,r b ,r e ) 操作码: 操作:p c p c + 4 r e g r e 】一r e g r a r e g r b 】 将寄存器r a 的内容除以寄存器r b 的内容,再将低3 2 位的商值写入到寄存器r c 中, d i v c 用法:d i v c ( r a ,l i t e r a l , r e ) 操作码: 操作:p c p c + 4 r e g r e 】一r e g r a s e x t ( 1 i t e r a l ) 将寄存器r a 的内容除以直接量,再将低3 2 位的商值写入到寄存器r e 中。 j m 田 用法:j m p ( r a , r c ) 操作码: 操作:p c p c + 4 e a r e g r a & o x f f f f f f f c r e g r e 】一p c p c e a 将紧接在j m p 指令之后的那条指令的p c 值( 更新的p c 值) 写入到寄存器r c 中,再将哿存器r a 的内容装载到p c 中。寄存器r a 的低两位被屏蔽,以确保目标 地址是以4 字节为界来进行排列。r , a 和r e 可能会指定相同寄存器,这样,就会使 用分配新值之前的旧值来计算目标地址。未使用的直接量字段应该用零来填充。 注意:j m p 可以清除管理位( p c 的第3 1 位) ,但不能对它进行设置。 l d 用法:l d ( r a ,l i t e r a l ,r e ) 第二荜b e t a 指夸集结构 操作码: 操作:p c - p c + 4 e a p e g 限a 】+ s e x t ( 1 i t e r d ) r e g r c 一m e m e a 】 有效地址e a 的计算方法是:将寄存器r a 的内容与符号扩展后得到的1 6 位位 移值直接量相加。将e a 指定的存储器存储单元读入到寄存器r c 中。 l d r 用法:l d r ( 1 a b e l 。r e ) 操作码: 操作:l i t e r a l = ( ( o f f s e t ( 1 a b e l ) 一o f f s e t ( c u r r e n ti n s t r u c t i o n ) ) i4 卜1 p c p c + 4 e a p c 4 + s e x t ( 1 i t e r a l ) r e g r c 】一m e m e a 】 有效地址e a 的计算方法是:先将符号扩展后得到的直接量乘以4 ( 将它转换 成字节偏移值) ,再将该结果与更新的p c 相加。将e a r s 定的存储器存储单元读 入到寄存器r e 中。r a 字段被忽略,并且应该令其为1 1 1 1 l ( r 3 1 ) 。在计算e a 时,管理位( p c 的第3 l 位) 被忽略( 例如,将它当作零来处理) 。 m u l 用法:m u l ( r a , r b ,r e ) 操作码: 操作:p c p c + 4 r e g r c 】一r e g r a 。r e g r b 】 将寄存器r a 的内容乘以寄存器r b 的内容,再将低3 2 位的乘积写入到寄存器r e 中。 0 一 r 一 一 m 砧 一r 一二i = 偎 一 一吣 c 一 l 一 一卜姗丑卧 警篙 电子科技大学硕士学位论文 r e g r c 】一r e g r a s e x t ( 1 i t e r a l ) 将寄存器r a 的内容乘以直接量,再将低3 2 位的乘积写入到寄存器r c 中。 o r 用法:o r ( r a ,r b ,r e ) 操作码; 操作:p c p c + 4 r e g r c 】一r e g r a llr e g r b 】 该指令执行的功能是:对寄存器r a 的内容和寄存器r b 的内容执行按位或布尔 逻辑运算。将运算结果写入到寄存器r c 中。 o r c 用法:o r c ( r a ,l i t e r a l ,r e ) 操作码: 操作:p c p c + 4 r e g r c 】一r e g i r a lis e x t ( 1 i t e r a l ) 该指令执行的功能是:对寄存器r 丑的内容和直接量执行按位或布尔逻辑运 算。将运算结果写入到寄存器r c 中。 s h l 用法:s h l ( r a ,r b ,r e ) 操作码: 操作:p c p c 十4 r e g r c 】一r e g r a l “r e g r b ( 4 :o ) 将寄存器r a 的内容左移0 3 1 位,左移的具体位数由寄存器r b 中的5 位数来指 定。将运算结果写入到寄存器r c 中。零被复制到空出的各个位中。 s h l c 用法:s h l c ( r a ,l i t e r a l ,r e ) 操作码: 操作:p c p c + 4 r e g r e 一r e g r a 】“l i t e r a l ( 4 :o ) 1 4 第= 毒b e t a s 令集结构 将寄存器r a 的内容左移0 3 1 位, 定。将运算结果写入到寄存器r c 中。 s h r 用法:s h r ( r a ,r b ,r c ) 操作码: 左移的具体位数由直接量中的5 位数来指 零被复制到空出的各个位中。 操作:p c p c + 4 r e g r c l 一r e g r a ”r e g r b ( 4 :o ) 将寄存器r a 的内容右移0 3 1 位,右移的具体位数由寄存器r b 中的5 位数来指 定。将运算结果写入到寄存器r c 中。零被复制到空出的各个位中 s h r c 用法:s h r c 僻a ,i i t e r a l , r c ) 操作码: 操作:p c p c + 4 r c g 畔c 】一r e g r a 】) ,l i t e r a l ( 4 :0 ) 将寄存器r a 的内容右穆0 3 1 位,右移的具体位数由直接量中的5 位数来指 定。将运算结果写入到寄存器r c 中。零被复制到空出的各个位中。 s r a 用法:s r a ( r a ,r b ,r c ) 操作码: 操作:p c p c + 4 r e g r c 一r e g i r a 】”r e g r b ( 4 :o ) 将寄存器r a 的内容算术右移0 3 1 位,算术右移的具体位数由寄存器r b 中的5 位数来指定。将运算结果写入到寄存器r c 中。符号位( r e g r a 3 1 ) 被复制到空 出的各个位中。 s r a c 用法:s r a c ( r a ,l i t e r a l ,r e ) 操作码: 操作:p c p c + 4 电子科技大学硕士学位论士 r e g r e 】一r e g r a 卜 l i t e r a l ( 4 :o ) 将寄存器r a 的内容算术右移0 3 1 位,算术右移的具体位数由直接量中的5 位 数来指定。将运算结果写入到寄存器r c 中。符号位( r e g r a 3 1 ) 被复制到空出 的各个位中。 s t 用法:s t ( r e ,l i t e r a l ,r a ) 操作码: 操作:p c p c + 4 e a r e g r a 】+ s e x t ( 1 i t e r a l ) m e r e h a 】一r e g r c 】 有效地址e a 的计算方法是:将寄存器r a 的内容与符号扩展后得到的1 6 位位 移值直接量相加。再将寄存器r c 的内容写入到由e a 指定的存储器存储单元中。 s u b 用法:s u b ( r a ,r b ,r c ) 操作码: 操作:p c p c + 4 r e g r c 】一r e g r a 】一r e g r b 】 将寄存器r 丑的内容减去寄存器r b 的内容,再将3 2 位的差值写入到寄存器r c 中。该指令不对任何借位信息或者溢出信息进行计算。如果想要的话,可以通过 显式的比较指令来计算得到该结果。 s u b c 用法:s u b c ( r a ,l i t e r a l ,r c ) 操作码: 操作;p c p c 4 - 4 r e g 噼c 】一r e g r a 一s e x t ( 1 i t e r a l ) 将寄存器r a 的内容减去常量直接量,再将3 2 位的差值写入到寄存器r c 中。该 指令不对任何借位信息或者溢出信息进行计算。如果想要的话,可以通过显式的 比较指令来计算得到该结果。 x o r 第二章b e t a 指令榘结构 用法:x o r ( r a ,r b ,r c ) 操作码: 操作:p c p c + 4 r e g r e 一r c g r a “r e g r b 】 该指令执行的功能是:对寄存器r a 的内容和寄存器r b 的内容执行按位异或布 尔逻辑运算。将运算结果写入到寄存器r c 中。 x o r c 用法:x o r c ( r a ,l i t e r a l ,r o 操作码: 操作;p c p c + 4 r e g r c br e g r a 】“s e x t ( 1 i l e r a l ) 该指令执行的功能是:对寄存器r a 的内容和直接量执行按位异或布尔逻辑运 算。将运算结果写入到寄存器r c 中。 2 5 异常处理的扩充 为了支持异常指令和特权指令,需要对上述标准的b e t a 计算机体系结构进行 以下扩充。 2 5 1 异常 b c t a 异常表现为三种形式:陷阱、故障和中断。 陷阱和故障都是指令的直接结果( 例如,试图执行一个非法的操作码) ,并 且它们是按照程序员的主观意图来进行区分的。陷阱是有意的,通常被用来请求 来自操作系统的服务。故障不是故意的,通常意味着产生了错误的条件。 中断与指令流不同步,通常由外部事件来产生( 例如,一个字符显现在输入 设备上) 。 2 5 。2x p 寄存器 寄存器3 0 被专门用作“异常指针”( x p ) 寄存器。当异常产生时,将更新的p c 值写入到呻。就陷阱和故障而言,是指紧随在造成故障的指令之后的那条指令 电子科技大学硕士学位论文 的p c 值;就中断而言,是指紧随在中断发生时准备执行的指令之后的那条指令的 p c 值。而由x p 4 指向的那条指令还没有执行。 由于x p 被当作中断结果进行重写的次数很可能是不可预知的,所以在允许中 断时,它不能被用户模式程序使用。 2 5 3 管理模式 p c 的商位被专门用作“管理”位。指令提取和l d r 指令忽略该管理位,将它当 作零看待。允许j m p 指令清除管理位,但不能对它进行设置,并且其他任何指令 都不可能对它产生任何影响。只有因管理位造成的异常才适合对它进行设置。 在对管理位进行清除时,处理器被认为处于“用户模式”。而在用户模式下, 中断是允许的。 在对管理位进行设置时,处理器被认为处于“管理模式”。而在管理模式下, 中断是禁用的,并且很可能会使用特权指令( 参见以下所述内容) 。陷阱和故障 在管理模式下都具有定义好的实现效果( 很可能是致命的) 。 由于j m p 指令能够清除管理位,所以很可能将某个新值装载n p c 中,并且通 过采取某个原子动作就可以进入到用户模式。这样,就为从陷阱返回到操作系统 提供了某神安全机制,特别是在中断处于挂起状态时更是如此。 2 5 4 异常处理 当产生异常并且处理器处于用户模式时,将更新的p c 值写入到x p 中,对管 理位进行设置,将某个定义好的实现值装载到p c 中,并且处理器开始执行该点的 指令。该值被称为“异常向量”,并且很可能依赖于所产生的异常类型。 所有实现都必须支持的惟一异常是“复位”异常( 也称为“加电”异常) ,它在 处理器执行任何指令之前立即产生。加电异常向量通常为零。因此,在加电时, 对管理位进行设置,x p 是未定义的,并且从存储器的存储单元0 开始执行。 2 5 5 特权指令 有些指令在管理模式下是可用的,而在用户模式下是不可用的( 例如,直接 与f o 设备进行交互的那些指令) 。这些指令被称为“特权指令”。特权指令经常带 有操作码0 x 0 0 ;否则,它们的格式和语义都是定义好的实现方式。在用户模式下 尝试使用特权指令时,将会产生非法指令异常。 第二章b e t a 于自_ 令集结构 2 6 软件约定 本部分描述的是用来补充基本体系结构的软件编程约定。 2 6 1 保留的寄存器 为标准用法保留某些寄存器很方便。为硬件自身保留的寄存器是r 3 1 和r 3 0 : 此外,为软件约定保留的寄存器是r 2 9 、r 2 8 和r 2 7 。 这些保留的寄存器情况如下表所述,更完整的描述请参见下文。 表2 - 2 保留的寄存器 寄存器符号用法 r 3 1r 3 1通常为零 r 3 0 x p异常指针 r 2 9s p 堆栈指针 r 2 8l p 连接指针 r 2 7b p栈帧基址指针 2 6 2 有用的宏 除了基本b e t a 目令集,增加了下面这些宏,使之能够受轻松地表示某些常用 操作: 表2 3 宏的定义 宏定义 b e q ( r a ,l a b e l )b e q ( r a ,l a b e l ,r 3 1 ) b f ( r a ,l a b e l )b f ( r a ,l a b e l ,r 3 1 ) b n e ( r a ,l a b e l )b n e ( r a ,l a b e l ,r 3 1 ) b t ( r a ,l a b e l )b t ( r a ,l a b e l ,r 3 1 ) b r ( 1 a b e l ,r c )b e q ( r 3 1 ,l a b e l ,r e ) b r ( 1 a b e l )职( 1 a b e l ,r 3 1 ) 3 m p ( r a )j m p ( r a ,r 3 1 ) l d ( 1 a b e l ,r c ) l d ( r 3 1 ,l a b e l r e ) s t ( r c ,l a b e l )s t ( r e ,l a b e l ,r 3 1 ) m 0 v e ( r a 。r c )a d d ( r a 。r 3 1 。r c ) c m o v e ( c ,r c )a d d c ( r 3 1 ,e 。r e ) a d d c ( s p ,4 ,s p ) p u s h ( r a ) s t ( r a ,一4 ,s p ) l d ( s p ,一4 ,r c ) p o p ( r e ) s u b c ( s p ,4 ,s p ) 电子科技大学硕士学位论立 2 。6 3 堆栈实现 s p 是保留用作指向栈顶的寄存器。堆栈是指存储器中的某个任意邻近区域。 s p 的内容通常是4 的倍数,并且每个栈槽是4 个字节。s p 指向恰好位于堆栈最顶端 元素的特定区域。堆栈在存储器中是向上增长的( 例如,向更高的地址方向增 长) 。为了对堆栈进行操作,定义了以下四个宏; p u s h ( r a 卜一将寄存器r a 的内容压入到堆栈中 p o p 限c 卜一将堆栈元素弹入到寄存器r c 中 a l l o c a t e ( k ) 一将未初始化的数据字压入到堆栈中 d e a l l o c a t e ( k 卜_ 将数据字弹出堆栈,并且丢弃 2 6 4 过程连接 过程参数被传递到堆栈中。特别是在进入到某个过程中时,堆栈最顶端的元 素就是该过程的第一个参数;堆栈中的下一个元素是该过程的第二个参数,其余 依此类推。过程的返回地址被传递到l p 中,l p 是专门为该目的而保留的一个寄存 器。过程将其值( 如果有的话) 返回到寄存器r o t ,并且必须不改变其他所有寄 存器( 包括保留的寄存器) 的内容。 因此,一个名称为f 的过程的典型调用情况如下所示: ( p u s ha r g n - 1 ) ( p u s ha r g d ( p u s ha r g o ) b r ( f ,l p ) d e a l l o c a t e ( n ) ( 使用了寄存器r o ,它目前是f ( a r g o ,a r g l ,a r g n - 1 ) ) 2 6 5 栈帧 上一节中描述了在对过程正确执行互操作时所必须遵守的规则。本节描述的 是在编写过程程序时遵守这些规则的常规方法。 过程调用要求其参数、局部变量以及必须保存和恢复的任何寄存器占用一定 籀二章b e m 目令集结构 的存储空间。所有这些存储空间被分配到堆栈中一个名叫“栈帧”的连续区域。进 入过程时 毫t 活”栈帧,并且在退出时“释放”该栈帧。b p 是一个保留的寄存器,它 指向当前激活栈帧中的某个固定位置。过程使用标准的开头和结尾形式来激活或 者“释放栈帧。 标准的开头形式是: p u s h ( l p ) p u s h p ) m o v e ( s p ,b p ) a l l o c a t e ( k ) i 为局部变量分配空间 ( 压入被过程所使用的寄存器) 注意:如果没有任何局部变量或是没有任何需要保存的寄存器,则上述最后 两个步骤中的任何一个步骤都可以省略。 标准结尾形式是: ( 弹出过程所使用的寄存器) m o v e ( b e ,s p ) l 释放为局部变量分配的空间 p o p p ) p o p ( l p ) j m p ( l p ) 注意:结尾部分假定开头部分的主体不对栈指针产生任何影响。还应该注意 的是:如果没有任何局部变量或是没有任何需要恢复的寄存器,则上述前两个步 骤中的任何一个步骤或者这两个步骤都可以省略。 将标准开头形式和结尾形式与参数传递约定放在一起,意味着得到了如图2 4 所示的栈帧格式: 2 1 电子丰 技大学

温馨提示

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

评论

0/150

提交评论