ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:30.81KB ,
资源ID:17620214      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17620214.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(精简指令集计算机DOCWord文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

精简指令集计算机DOCWord文档下载推荐.docx

1、因此,一个计算机系统存活期的主要成本是软件而不硬件。研究人员和工业界对此的响应是,开发出了功能更强、更复杂的高级程序设计语言,高级语言(HLL:high-level language)允许编程人员能更简明地表示算法,更关注细节,并经常支持结构化程序设计。由此而来的是语义间隙问题(Semantic Gap),即HLL中提供的操作与计算机结构提供的操作间的差异。这种间隙现象(Symptoms of the Semantic Gap)被认为是,包括执行的低效、过长的机器程序和编译器的复杂性。设计者试图以结构的改进来减小这个间隙。关键的做法包括大指令集、若干的寻址方式和硬件实现的各种HLL语句设计人员

2、寻找新的方法:使支持HLL的结构更简单而不是更复杂。为了理解主张RISC的理由,先简要地重新审视指令执行的特征: 完成的操作 所用的操作数 执行顺序下面总结的几个有关高级语言研究的报告中,动态测量是通过收集某些特征已出现或某一具体特性已由该情况下的程序所执行,并统计执行次数来进行的。静态测量只是在源程序文本上进行统计,它们没有加权到每条语句的执行次数。12.1.1 Operations 操作CP106+EP146表4.9包括了几个研究的重要结论:赋值语句在程序中很显著,这暗示简单的数据传送非常重要;条件语句亦在程序中占有优势,这表明指令集的顺序控制机制亦是关键。因而应以一种“优化”形式(an

3、optimal fashion)来支持它们。研究者曾在VAX、PDP-11和Motorola68000上编译Patterson程序,以确定每类语句的平均机器指令数和平均存储器访问数。将这些平均数乘以每类语句的出现频度,就得到了CP334+EP460表12.2。结果表明:过程调用/返回是典型HLL程序中最耗时的操作。12.1.2 Operands 操作数Patterson的研究报告查看了各类变量的动态出现频度,详见CP334+EP460表12.3。Pascal和C程序的结论是一致的:主要使用的简单标量变量,而且80%以上的标量是(过程的)局部变量。 结论:程序中大量访问的是标量,而且它们是高度局

4、部化的。研究显示,因为操作数存取如此频繁,适用快速存取的结构将起重要作用。Patterson研究提示,优化的主选方向应是对局部标量变量的存储和访问。12.1.3 Procedure Calls 过程调用过程调用和返回是HLL程序的一个重要部分。表12.2指出,过程调用和返回是编译后的HLL程序中最耗时的操作。因此,考虑高效实现这些操作的方式将是有益的。Tanenbaum的研究指出,98%的动态调用过程中传送的量少于6个,而且其中92%是少于6个局部标量变量。Berkeley的RISC小组报告的结果,如CP335+EP461表12.4所示。Berkeley小组发现程序保持在相当窄的过程调用窗口区

5、域内。这就进一步证实了操作数访问(operand reference)是“高度局部化(highly localized )”的结论。12.1.4 Implications 结论试图让指令集结构更接近HLL并不是一个有效的策略;而通过优化典型HLL程序中最耗时操作的性能,能更好地支持HLL。由此,表征RISC结构体现在如下三点:使用大量的寄存器,可以优化操作数的访问;精心谨慎地设计指令流水线,因为条件转移和过程调用指令的高比例,一个过于简单的指令流水线将是低效的;对简单(Reduced)的指令集的需求。12.2 THE USE OF A LARGE REGISTER FILE 大寄存器方案的使用

6、已经看到:HLL程序中有大量的赋值语句;每个HLL语句都有一定数量的操作数访问;大多数访问的是局部标量。故:侧重于寄存器存储是明智的。其理由是,寄存器存储是比主存和Cache还要快的最快可用存储装置。寄存器集从物理上讲是小的,与ALU和控制器建在同一芯片上,使用比主存和Cache地址还要短的地址。因此:需要一种策略能使最频繁访问的操作数保持在寄存器中,并减少(minimize)“寄存器存储器”操作。有两种基本途径:基于软件,基于硬件。软件方法是依赖编译器来使寄存器使用最大化(maximize)。编译器将试图为那些在一给定时间期内使用最多的变量分配寄存器,并要求使用复杂的程序分析算法。硬件方法是

7、简单地装备更多的寄存器,以致更多的变量更长时间地保持在寄存器中。12.2.1 Register Windows 寄存器窗口使用一大组寄存器应能减少对存储器访问的需求。显然,设计的任务就是很好地组织寄存器来实现这个目标。因为大多数操作数量局部标量,局部的定义是随着每次过程调用和返回而改变的,过程调用是频繁出现的操作。解决的方法是基于两个结论:典型的过程只使用少数传送参数和局部变量;过程动作的深度仅限定在一个相对窄的范围内(CP75+EP106图4.3)。因此,使用多个小的寄存器组,每个小组指派给一个不同的过程。过程调用时自动地切换来使用不同的但大小固定的寄存器窗口;相邻过程的窗口是重叠的,以允许

8、参数传递。CP337+EP463图12.1说明了上述方法:任何时刻,只有一个寄存器窗口是可见的和可寻址的;窗口分成三个固定长度域:参数寄存器域、局部寄存器域和临时寄存器域。参数寄存器用来保存调用当前过程的过程(父过程)向下传递的参数和将被返送的结果;局部寄存器用于局部变量,由编译器指派;临时寄存器(Temporary Register)用于当前过程与下一级过程(孙过程)交换参数和结果。某一级的临时寄存器与下一级的参数寄存器是物理同一的,这种重叠(overlap)准许不用实际移动数据就能传递参数。为管理任何可能样式的调用和返回,寄存器窗口的数目将必须是不受限制的。寄存器窗口只用于保持少数最近过程

9、的动作,旧的动作必须保持在存储器中并当嵌套浓度减少时再恢复;因此,寄存器集的实际组织是一个由重叠窗口组成的环形缓冲器。CP337+EP464图12.2描述的是一个6窗口的环形缓冲器。缓冲器已填充到深度4 (A调用B,B调用C,C调用D),过程D是当前活动的过程。当前窗口指针(CWP)指向当前活动过程的窗口;保存窗口指针(SWP:saved-window pointer),用来指明(Identify)最近保存在存储器的窗口。结论:N个窗口的寄存器集仅能用于N-1个过程的动作。有研究报告指出仅有1%的过程调用和返回需要8个窗口。Berkeley RISC计算机使用8个窗口,每个窗口有16个寄存器。

10、Pyramid计算机使用16个窗口,每个窗口有32个寄存器。12.2.2 Global Variables 全局变量全局变量由多个过程所使用:编译器为HLL中声明为全局的变量指派存储器位置。对于频繁访问的全局变量来说,这种策略是低效的;替代方法是CPU包含有一组全局寄存器,统一编号的方法能用来简化指令格式。例如:寄存器引用号07是唯一的一组全局寄存器;对寄存器831的引用可以是当前窗口内的具体寄存器(对CWP)的位移。12.2.3 Large Register File versus Cache 大寄存器集与Cache的对比CP338+EP466表12.5比较了大寄存器集与Cache组织的特征

11、:寄存器集会使空间利用低效:寄存器仅容纳有用的变量Cache蒙受另一类的低效:数据是成块读入Cache的 ,其中某些块甚至将不会使用。Cache能处理局部变量和全局变量。使用寄存器集,寄存器和存储器间的数据传送由过程嵌套深度所确定。基于Cache的系统是明显较慢的,Cache的存取时间肯定要长于寄存器的存取时间。从性能的观点看:基于窗口的寄存器集对于局部标量是优选的;通过加入只由指令使用的Cache,能进一步改善性能12.3 COMPILER-BASED REGISTER OPTIMIZATION 基于编译器的寄存器优化1编译器的目标:尽可能地在寄存器中而不是在主存中为多数计算保持操作数,并且

12、减少装入和存储操作。2优化任务的本质:判定在程序的任何给定点,什么样的量应指派到寄存器中。RISC的编译器普遍使用图着色的技术(Gradph Coloring)图着色做法:对于一个由结点和边组成的给定图,为结点指定颜色使相邻结点不同色,而且要使颜色的数目最少。该问题以如下方式转换成编译器问题:1)分析程序并构成一个寄存器相关图,图的结点是符号寄存器,若两个符号寄存器同时“存活(live)”于同一程序段期间,则相应的两个结点是用一条边连接起来以指出它们相关。尝试用n种颜色给图上色,若这个过程不能完全成功,则不能上色的结点必须放入存储器中,且当需要它们时,必须使用装入和存储操作替它们准备好寄存器空

13、间。CP338+EP466图12.4是这种处理的简单例子。3 权衡考虑(Trade-off) 在使用大量的寄存器和基于编译器的寄存器优化之间有一个权衡考虑的问题。BRAD91a在研究中设定寄存器的数目从16到128;研究表明:若只有相当简单的寄存器优化,那么使用多于64个寄存器只带来很少的好处;使用相当精致的寄存器优化技术,也比使用多于32个的寄存器带来更多的临界性能改善。只有少量的寄存器,具有共享寄存器组织的机器要比具有分立寄存器组织的机器执 行得更快。HUGU91也得出类似的结论12.4 REDUCED INSTRUCTION SET ARCHITECTURE 精简指令集结构12.4.1

14、Why CISC CISC的理由丰富指令集的趋势,包括更大数量的指令和更复杂的指令。推动该趋势的基本理由是:要求简化编译器和要求改善性能。其根本性原因:大部分程序员已移到高级语言(HLL)上,厂家试图设计能对HLL提供更好支持的机器。1CISC的第一个理由:简化编译器编译器的任务就是为每个HLL语句产生一个机器指令序列。RISC研究发现:减小代码长度、减少指含有执行计数和增强流水这样的优化生成代码的任务,使用复杂指令集也是非常困难。但编译后程序中的大多数指令都是相当简单的。2CISC的第二个理由:CISC可生成更小更快的程序 1)小程序优点:占用内存少,节省资源,较小的程序应能改善性能;CIS

15、C程序将小于RISC程序。CP341+EP470表12.6列出来自三个研究的结果:CISC比RISC没有或仅少许的节省。几个理由可以解释这些令人惊奇的结果:CISC上的编译器有偏爱简单指令的倾向,故复杂指令的综合性很少能发挥作用;CISC上的多数指令要求较长的操作码,使程序较长;RISC强调寄存器而不是存储器的访问,要求的指令位数也较少。期望CISC能产生较小的程序并带有其他优点,是不太现实的。为适应丰富的指令集,整个CISC的控制器必须做得更复杂,程序控制存储装置也必须做得更大,从而增加了简单指令的执行时间。12.4.2 Why RISC 120%80%定律(1975年IBM研究IS合理性,

16、JOHN COCKE提出RISC构想) 对CISC机的测试表明:最常用的简单指令仅占指令系统总数的20%,出现频率占80%;微程序控制的计算机中,占指令总数20%的最复杂指令,占据控制存储器容量的80%2指令执行的平均周期数(CPI:Cycle per Instruction) 假设P为执行一个程序花费的时间;I为程序执行的总指令数;T为指令周期(ns)则: P=ICPITCISC与RISC参数对比ICPICISC146RISC1.31.41.11.4 显然:RISC与CISC相比RISC的优势在CPI 3RISC与CISC在系统实现方面的根本差异1 系统设计:RISC大多数重要功能用软件实现

17、;CISC尽可能多地用硬件实现软件功能2 处理器实现:RISC采用硬连线逻辑,具有简单流水线结构,具有快速Cache; CISC采用微程序控制,具有复杂流水线结构,对主存访问频繁3 设计目标:RISC使指令执行时间最短,程序长度适中 CISC使每条指令有尽可能多的功能,使程序长度减少4 Cache结构:对RISC的系统性能是关键性的 对CISC是有用的,但不是关键性的5 编译处理:对RISC,编译强调优化程序;CISC的编译着重获得正确的指令序列12.4.3 Characteristics of Reduced Instruction Set Architectures (精简指令集结构特征)

18、 RISC共同的特征: 每周期一条指令 寄存器到寄存器的操作 简单的寻址方式 简单的指令格式1机器周期机器周期被定义成由寄存器取两个操作数,完成一个ALU操作,然后再将结果写入寄存器所用的时间。RISC中机器指令以硬布线方式实现,指令执行得更快。2大多数操作在寄存器间进行该特点简化了指令集,简化了控制器,鼓励寄存器的优化使用。3使用简单的寻址方式几乎全部指令都使用寄存器寻址方式,其它复杂的寻址方式可用软件来合成。同样简化了指令集和控制器。4使用简单指令格式仅使用一种或少数几种格式;指令长度固定并且在字边界上对齐。字段位置,特别是操作码字段位置是固定的。好处:对于固定的字段,操作码的译码和寄存器

19、操作数的访问能同时出现;简化的格式也简化了控制器;以字长单位来取指令和数据,取指令被优化了,并意味着单一指令不会跨越内存分页的边界。RISC潜在优势分两个类型:1)性能方面:能开发出更有效的优化的编译器;编译器生成的大多数指令从任何方面讲都是相对简单的指令;精简指令集能非常有效地适合于指令流水技术;RISC程序应能更好地响应中断2)VLSI实现:使用VLSI,CPU的设计和实现发生了根本性的变化。一个单片微处理器大约要将芯片面积的一大半用于微代码控制存储器,RISC I芯片只是将芯片面积的6%用于控制器。设计和实现时间:研制VLSI相当困难,设计者必须完成电路设计排图和设备级的模拟;对于RIS

20、C结构,该过程要容易得多,如CP344+EP474表12.7所证实。若RISC芯片的性能等同于一个可比较的CISC微处理器,则此设计和实现时间的节省就成为RISC方法优越的例证。12.4.4 CISC versus RISC Characteristics CISC与RISC特征对比分析研究结果,达成如下共识:(1)RISC设计包括某些CISC特色会有好处;(2)CISC设计包括某些RISC特色也会有益。结果,最近以PowerPC为代表的RISC设计不再是“纯”RISC,最近以Pentium为代表的CISC设计也结合了某些RISC特征。CP345+EP475表12.8列出了几种处理器的特征比较

21、,从中可见典型的RISC特征:1 单一的指令长度2 典型的长度是4字节3 较少(少于5)的寻址方式4 无间接寻址5 每条指令不会有多于一个的存储器操作数6 装入/存储操作不会与算术操作混在一起7 对装入/存储操作,不支持数据的任意对齐8 对指令中的数据地址,存储管理单元(MMU)的使用次数最多9 整数寄存器指派器的位数等于5或更多,即至少有32个整数寄存器能显式地引用 10浮点寄存器指派器的位数等于4或更多,即至少有16个整数寄存器能显式地引用 1到3项是指令译码复杂性的指示;4到8项揭示了流水线技术实现的难易; 9和10项关系到利用编译器的能力。 表中前8个处理器是明显的RISC结构,随后5

22、个是明显的CISC,最后两 个处理器有不少CISC特征。12.5 RISC PIPELINING RISC流水线技术12.5.1 Pipelining with Regular Instructions 规整指令的流水线技术RISC大多数指令是寄存器到寄存器的,指令周期有如下两个步骤: I:取指令 E:执行。带寄存器输入和输出,完成一个ALU操作对于装入和存储操作,需要三个步骤:执行,计算存储器地址 D:存储器,寄存器到存储器或存储器到寄存器操作CP346+EP478图12.6(a)描述了不使用流水线技术的一个指令序列的操作顺序;图12.6(b)表示一种两路流水处理策略,存在两个问题:假定使用

23、单端口存储器,则每个相位只准一次存储器访问,这就要求在某些指令的执行中插入等待状态;转移指令能打断顺序的执行流。为了以尽量少的线路来调节它,可通过编译器或汇编器将NOOP指令插入指令流中。通过允许每个步骤有两次存储器访问,能进一步改善流水线的性能,如图12.6(c)所,能重叠执行多达3条指令,改善的因素是3;同样,转移指令使加速不能达到最大允许值。假若3个阶段有大致相等的时间长度(持续时间),该流水线就能很好地工作。因为E阶段通常涉及到一个ALU操作,可将它分成两个子阶段: E1:寄存器集读 E2:ALU操作和寄存器写图12.6(d)是使用4路流水的结果。多达4条指令能同时进行,最大可能的加速

24、因素是412.5.2 Optimization of Pipelining 流水线的优化由于RISC指令集的简单性和规整性,能有效地使用流水线策略。但是数据和转移的相干性会降低整体的执行速率。为了调整这些相干性,开发出代码重组技术:延迟转移和延迟装入1 延迟转移延迟转移利用了转移指令直到下面一条指令之后才产生影响这一特点,在转移指令之后安排一条有用指令来替代仅为延迟的空操作。该方法由CP346+EP478表12.9说明;CP348+EP479图12.7表示了相应的结果 对于无条件转移、调用和返回,都能成功地进行这种延迟转移交换;若转移所测试的条件能被前面这条指令所修改,则编译器应避开这种延迟转

25、移交换。应代之以插入NOOP指令。以Berkeley RISC和IBM801中,多数条件转移指令都能以这种交换方式得到优化2延迟装入延迟装入能用于LOAD指令。根据LOAD指令,那个将装入目标的寄存器被CPU锁定。CPU则继续执行指令流,直到它到达有指令要求那个寄存器,在这点上它空闲直到此装入完成。如果编译器能够这样重排指令:此装入在流水中进行的同时,能完成一些有用的工作,则效率能提高。注意:指令流水线的设计不应与其他适用于系统的优化技术隔离开进行。例如,流水的指令调度策略应与寄存器的动态分配一起考虑12.6 MIPS R4000 1MIPS系列最早商品化RISC芯片组由MIPS Techno

26、logy公司开发,MIPS系列最新产品号是R4000,与R2000、R3000和R6000具有相同的结构和指令集;最显著的区别:R4000使用64位处理所有内部和外部数据路径和地址、寄存器以及ALU。使用64位结构的优势:允许更大的地址空间。64位能允许R4000处理像IEEE单精度浮点数这样的数据。处理字符串数据时能一次动作处理多达8个的字符。2R4000CPU设计思想:尽量使指令执行逻辑简单,留出空间用于增强性能的逻辑。3R4000处理器:支持32个64位寄存器;提供高达128KB的高速Cache:一半用于指令,一半用于数据;这种相对大的Cache允许系统保持更多的程序代码和局部数据,从而

27、减轻了主存总线的负荷,避免了对伴随窗口逻辑的大寄存器集的需求。12.6.1 Instruction Set CP349+EP481表12.10列出了MIPS R系列处理器的基本指令集, 表12.11列出了R4000实现的附加指令。所有指令都以单一32位字格式来编码;所有数据操作都是寄存器到寄存器;仅存储器访问是纯的装入/存储操作。1R4000没使用条件代码若一条指令产生某条件,其相应的标志存于一个通用寄存器中,它们将影响流水线机构和编译器对指令的重排序。R4000没使用条件代码,这就避免了专门用于处理条件代码的逻辑。因此,采用了已实现处理寄存器值相关性的机构;而且映射到寄存器集的条件在分配与再

28、使用上,从属于与存于寄存器其他值相同的编译时间优化。2R4000使用单一的32位指令长度:简化取指令和指令译码,又简化了取指令与虚拟存储管理单元的相互作用;CP350+EP483图12.8中,R4000的三种指令格式共享操作码和寄存器引用的公共格式,简化了指令译码,可在编译时间以简单指令的合成实现更复杂指令的效果。3只有最简单的和最经常使用的存储器寻址方式是以硬件实现的。所有的存储器引用由一个32位寄存器和一个16位的对此寄存器基址的位移组成。例如,“装入字”指令:lw r2, 128 (r3) r2M(r3)+128)含义:以寄存器3的内容为基础地址加上128的位移,形成存储器地址,将此地址直的字装入寄存器2。编译器使用多条机器指令的合成,从而实现普通计算机的典型寻址方式,CP351+EP483表12.8给出了某些例子12.6.2 Instruction Pipelining 指令流水线最初RI

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1