设为首页 - 加入收藏
广告 1000x90
您的当前位置:144177黄大仙救世网48 > 精简指令 > 正文

精简指令集计算机(DOC)

来源:未知 编辑:admin 时间:2019-07-07

  精简指令集计算机(DOC)_幼儿读物_幼儿教育_教育专区。精简指令集计算机(DOC)

  第 12 章 计算机组织与结构 共 14 页 CHAPTER 12 REUCED INSTRUCTION SET COMPUTERS (第 12 章 精简指令集计算机) ? 对设计 RISC 计算机,高级语言程序行为的研究成果是有指导意义。程序中赋值 语句占有最大份额, 这暗示着简单的数据传送应当优化。 程序中还有许多 IF 和 LOOP 语句, 基础的顺序控制机制需要进行优化, 以准许有效地使用流水技术。 操作数引用样式的研究表 明,在寄存器中保持适当数量的操作数会有助于性能的提高。 ? RISC 机器的关键特征:①有限的指令集并具有固定格式,②大量的寄存器或利用 编译器来优化寄存器的作用,③强调对指令流水线的优化(optimizing) 。 ? RISC 的简单指令集自身便利于有效的流水化;RISC 指令集自身也有助于实施延 迟转移技术(the delayed branch technique) :将转移指令和其他指令重排能提高流水线效率。 下面给出了自计算机诞生以来某些最主要的进步。 ? ? ? ? ? ? Family Concept:以不同的价格/性能特征提供的一级计算机,性能和价格方面的差 异在于同样结构的不同实现。 Microprogrammed Control Unit:微编程使控制器的设计和实现变得更容易,并提供 了对系列概念的支持。 Cache Memory:极大地改善了系统性能。 Pipelining:将并行性引入机器指令程序顺序本性的一种方式。 Multiple Processors:包含几种不同的组织和目标 RISC:最重要的变革,在语言和行为方面对大多数计算机结构的学识是一个挑战 RISC 系统的关键点是: ①有限的和简单的指令集并具有固定格式, ②大量的寄存器或利用编译器来优化寄存器的作用, ③强调指令流水线的优化(optimizing) CP332+EP458 表 12.1 比较了几个 RISC 和非 RISC 系统 12.1 INSTRUCTION EXECUTION CHARACTERISTICS 指令执行特征 计算机发展最易见的形式是编程语言;随着硬件成本的下降,软件成本相对上升;通用 性的扩展和编程人员的长期缺乏驱使软件成本在绝对意义上上升; 软件运行多年后虽经不断 修正仍继续出现新的缺欠。因此,一个计算机系统存活期的主要成本是软件而不硬件。 研究人员和工业界对此的响应是,开发出了功能更强、更复杂的高级程序设计语言,高 级语言(HLL:high-level language)允许编程人员能更简明地表示算法,更关注细节,并经 常支持结构化程序设计。 由此而来的是语义间隙问题(Semantic Gap) ,即 HLL 中提供的操作与计算机结构提供 的操作间的差异。这种间隙现象(Symptoms of the Semantic Gap)被认为是,包括执行的低 效、过长的机器程序和编译器的复杂性。设计者试图以结构的改进来减小这个间隙。关键的 做法包括大指令集、若干的寻址方式和硬件实现的各种 HLL 语句 1 第 12 章 计算机组织与结构 共 14 页 设计人员寻找新的方法:使支持 HLL 的结构更简单而不是更复杂。 为了理解主张 RISC 的理由,先简要地重新审视指令执行的特征: ? 完成的操作 ? 所用的操作数 ? 执行顺序 下面总结的几个有关高级语言研究的报告中,动态测量是通过收集某些特征已出现或 某一具体特性已由该情况下的程序所执行, 并统计执行次数来进行的。 静态测量只是在源程 序文本上进行统计,它们没有加权到每条语句的执行次数。 12.1.1 Operations 操作 CP106+EP146 表 4.9 包括了几个研究的重要结论: 赋值语句在程序中很显著, 这暗示简 单的数据传送非常重要; 条件语句亦在程序中占有优势, 这表明指令集的顺序控制机制亦是 关键。因而应以一种“优化”形式(an optimal fashion)来支持它们。 研究者曾在 VAX、PDP-11 和 Motorola68000 上编译 Patterson 程序,以确定每类语句的 平均机器指令数和平均存储器访问数。将这些平均数乘以每类语句的出现频度,就得到了 CP334+EP460 表 12.2。结果表明:过程调用/返回是典型 HLL 程序中最耗时的操作。 12.1.2 Operands 操作数 Patterson 的研究报告查看了各类变量的动态出现频度,详见 CP334+EP460 表 12.3。 Pascal 和 C 程序的结论是一致的:主要使用的简单标量变量,而且 80%以上的标量是(过 程的)局部变量。 结论:程序中大量访问的是标量,而且它们是高度局部化的。 研究显示,因为操作数存取如此频繁,适用快速存取的结构将起重要作用。 Patterson 研究提示,优化的主选方向应是对局部标量变量的存储和访问。 12.1.3 Procedure Calls 过程调用 过程调用和返回是 HLL 程序的一个重要部分。表 12.2 指出,过程调用和返回是编译后 的 HLL 程序中最耗时的操作。 因此,考虑高效实现这些操作的方式将是有益的。 Tanenbaum 的研究指出,98%的动态调用过程中传送的量少于 6 个,而且其中 92%是少 于 6 个局部标量变量。 Berkeley 的 RISC 小组报告的结果,如 CP335+EP461 表 12.4 所示。 Berkeley 小组发现程序保持在相当窄的过程调用窗口区域内。 这就进一步证实了操作数 访问(operand reference)是“高度局部化(highly localized ) ”的结论。 2 第 12 章 计算机组织与结构 共 14 页 12.1.4 Implications 结论 试图让指令集结构更接近 HLL 并不是一个有效的策略; 而通过优化典型 HLL 程序中最 耗时操作的性能,能更好地支持 HLL。 由此, 表征 RISC 结构体现在如下三点: ①使用大量的寄存器, 可以优化操作数的访问; ②精心谨慎地设计指令流水线, 因为条件转移和过程调用指令的高比例, 一个过于简单的指 令流水线将是低效的;③对简单(Reduced)的指令集的需求。 12.2 THE USE OF A LARGE REGISTER FILE 大寄存器方案的使用 已经看到:①HLL 程序中有大量的赋值语句;②每个 HLL 语句都有一定数量的操作数 访问;③大多数访问的是局部标量。 故:侧重于寄存器存储是明智的。其理由是,寄存器存储是比主存和 Cache 还要快的 最快可用存储装置。寄存器集从物理上讲是小的,与 ALU 和控制器建在同一芯片上,使用 比主存和 Cache 地址还要短的地址。 因此: 需要一种策略能使最频繁访问的操作数保持在寄存器中, 并减少 (minimize) “寄 存器—存储器”操作。 有两种基本途径:①基于软件,②基于硬件。 软件方法是依赖编译器来使寄存器使用最大化(maximize) 。编译器将试图为那些在一 给定时间期内使用最多的变量分配寄存器,并要求使用复杂的程序分析算法。 硬件方法是简单地装备更多的寄存器,以致更多的变量更长时间地保持在寄存器中。 12.2.1 Register Windows 寄存器窗口 使用一大组寄存器应能减少对存储器访问的需求。显然,设计的任务就是很好地组织 寄存器来实现这个目标。 因为大多数操作数量局部标量,局部的定义是随着每次过程调用和返回而改变的,过 程调用是频繁出现的操作。 解决的方法是基于两个结论:①典型的过程只使用少数传送参数和局部变量;②过程 动作的深度仅限定在一个相对窄的范围内(CP75+EP106 图 4.3) 。 因此,使用多个小的寄存器组,每个小组指派给一个不同的过程。过程调用时自动地 切换来使用不同的但大小固定的寄存器窗口;相邻过程的窗口是重叠的,以允许参数传递。 CP337+EP463 图 12.1 说明了上述方法:任何时刻,只有一个寄存器窗口是可见的和可 寻址的;窗口分成三个固定长度域:参数寄存器域、局部寄存器域和临时寄存器域。 3 第 12 章 计算机组织与结构 共 14 页 ①参数寄存器用来保存调用当前过程的过程(父过程)向下传递的参数和将被返送的 结果;②局部寄存器用于局部变量,由编译器指派;③临时寄存器(Temporary Register)用 于当前过程与下一级过程(孙过程)交换参数和结果。某一级的临时寄存器与下一级的参数 寄存器是物理同一的,这种重叠(overlap)准许不用实际移动数据就能传递参数。 为管理任何可能样式的调用和返回,寄存器窗口的数目将必须是不受限制的。寄存器 窗口只用于保持少数最近过程的动作, 旧的动作必须保持在存储器中并当嵌套浓度减少时再 恢复;因此,寄存器集的实际组织是一个由重叠窗口组成的环形缓冲器。 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 个寄存器。 Pyramid 计算机使用 16 个窗口,每个窗口有 32 个寄存器。 12.2.2 Global Variables 全局变量 全局变量由多个过程所使用:①编译器为 HLL 中声明为全局的变量指派存储器位置。 对于频繁访问的全局变量来说,这种策略是低效的;②替代方法是 CPU 包含有一组全局寄 存器,统一编号的方法能用来简化指令格式。 例如:寄存器引用号 0~7 是唯一的一组全局寄存器;对寄存器 8~31 的引用可以是当 前窗口内的具体寄存器(对 CWP)的位移。 12.2.3 Large Register File versus Cache 大寄存器集与 Cache 的对比 CP338+EP466 表 12.5 比较了大寄存器集与 Cache 组织的特征: ①寄存器集会使空间利用低效:寄存器仅容纳有用的变量 ②Cache 蒙受另一类的低效:数据是成块读入 Cache 的 ,其中某些块甚至将不会使用。 ③Cache 能处理局部变量和全局变量。 ④使用寄存器集,寄存器和存储器间的数据传送由过程嵌套深度所确定。 ⑤基于 Cache 的系统是明显较慢的,Cache 的存取时间肯定要长于寄存器的存取时间。 从性能的观点看:基于窗口的寄存器集对于局部标量是优选的;通过加入只由指令使 用的 Cache,能进一步改善性能 4 第 12 章 计算机组织与结构 共 14 页 12.3 COMPILER-BASED REGISTER OPTIMIZATION 基于编译器的寄存器优化 1.编译器的目标:尽可能地在寄存器中而不是在主存中为多数计算保持操作数,并 且减少装入和存储操作。 2. 优化任务的本质: 判定在程序的任何给定点, 什么样的量应指派到寄存器中。 RISC 的编译器普遍使用图着色的技术(Gradph Coloring) 图着色做法:①对于一个由结点和边组成的给定图,为结点指定颜色使相邻结点不同 色,而且要使颜色的数目最少。②该问题以如下方式转换成编译器问题: 1)分析程序并构成一个寄存器相关图,图的结点是符号寄存器,若两个符号寄存器同 时“存活(live) ”于同一程序段期间,则相应的两个结点是用一条边连接起来以指出它们相 关。尝试用 n 种颜色给图上色,若这个过程不能完全成功,则不能上色的结点必须放入存储 器中,且当需要它们时,必须使用装入和存储操作替它们准备好寄存器空间。CP338+EP466 图 12.4 是这种处理的简单例子。 3. 权衡考虑(Trade-off) 在使用大量的寄存器和基于编译器的寄存器优化之间有一个权衡考虑的问题。 [BRAD91a]在研究中设定寄存器的数目从 16 到 128;研究表明:①若只有相当简单的 寄存器优化,那么使用多于 64 个寄存器只带来很少的好处;②使用相当精致的寄存器优化 技术,也比使用多于 32 个的寄存器带来更多的临界性能改善。 结论:只有少量的寄存器,具有共享寄存器组织的机器要比具有分立寄存器组织的机器执 行得更快。[HUGU91]也得出类似的结论 12.4 REDUCED INSTRUCTION SET ARCHITECTURE 12.4.1 Why CISC 精简指令集结构 CISC 的理由 丰富指令集的趋势,包括更大数量的指令和更复杂的指令。推动该趋势的基本理由是: 要求简化编译器和要求改善性能。 其根本性原因: 大部分程序员已移到高级语言 (HLL) 上, 厂家试图设计能对 HLL 提供更好支持的机器。 1.CISC 的第一个理由:简化编译器 编译器的任务就是为每个 HLL 语句产生一个机器指令序列。RISC 研究发现:减小代码 长度、 减少指含有执行计数和增强流水这样的优化生成代码的任务, 使用复杂指令集也是非 常困难。但编译后程序中的大多数指令都是相当简单的。 2.CISC 的第二个理由:CISC 可生成更小更快的程序 5 第 12 章 计算机组织与结构 共 14 页 1)小程序优点:占用内存少,节省资源,较小的程序应能改善性能;CISC 程序将小 于 RISC 程序。CP341+EP470 表 12.6 列出来自三个研究的结果:CISC 比 RISC 没有或仅少 许的节省。 几个理由可以解释这些令人惊奇的结果:①CISC 上的编译器有偏爱简单指令的倾向, 故复杂指令的综合性很少能发挥作用;②CISC 上的多数指令要求较长的操作码,使程序较 长;③RISC 强调寄存器而不是存储器的访问,要求的指令位数也较少。 结论:期望 CISC 能产生较小的程序并带有其他优点,是不太现实的。 为适应丰富的指令集,整个 CISC 的控制器必须做得更复杂,程序控制存储装置也必须 做得更大,从而增加了简单指令的执行时间。 12.4.2 Why RISC 1.20%~80%定律(1975 年 IBM 研究 IS 合理性,JOHN COCKE 提出 RISC 构想) ①对 CISC 机的测试表明: 最常用的简单指令仅占指令系统总数的 20%, 出现频率占 80%; ②微程序控制的计算机中,占指令总数 20%的最复杂指令,占据控制存储器容量的 80% 2.指令执行的平均周期数(CPI:Cycle per Instruction) 假设 P 为执行一个程序花费的时间;I 为程序执行的总指令数;T 为指令周期(ns) 则: P=I×CPI×T CISC 与 RISC 参数对比 I CISC RISC 1 1.3~1.4 CPI 4~6 1.1~1.4 T 1 1 显然:RISC 与 CISC 相比 RISC 的优势在 CPI 3.RISC 与 CISC 在系统实现方面的根本差异 ①系统设计:RISC 大多数重要功能用软件实现;CISC 尽可能多地用硬件实现软件功能 ②处理器实现:RISC 采用硬连线逻辑,具有简单流水线结构,具有快速 Cache; CISC 采用微程序控制,具有复杂流水线结构,对主存访问频繁 ③设计目标:RISC 使指令执行时间最短,程序长度适中 CISC 使每条指令有尽可能多的功能,使程序长度减少 ④Cache 结构:对 RISC 的系统性能是关键性的 对 CISC 是有用的,但不是关键性的 ⑤编译处理:对 RISC,编译强调优化程序;CISC 的编译着重获得正确的指令序列 6 第 12 章 计算机组织与结构 共 14 页 12.4.3 Characteristics of Reduced Instruction Set Architectures (精简指令集结构特征) RISC 共同的特征: ? 每周期一条指令 ? 寄存器到寄存器的操作 ? 简单的寻址方式 ? 简单的指令格式 1.机器周期 机器周期被定义成由寄存器取两个操作数,完成一个 ALU 操作,然后再将结果写入寄 存器所用的时间。RISC 中机器指令以硬布线方式实现,指令执行得更快。 2.大多数操作在寄存器间进行 该特点简化了指令集,简化了控制器,鼓励寄存器的优化使用。 3.使用简单的寻址方式 几乎全部指令都使用寄存器寻址方式, 其它复杂的寻址方式可用软件来合成。 同样简化 了指令集和控制器。 4.使用简单指令格式 仅使用一种或少数几种格式;指令长度固定并且在字边界上对齐。字段位置,特别是操 作码字段位置是固定的。 好处:对于固定的字段,操作码的译码和寄存器操作数的访问能同时出现;简化的格 式也简化了控制器;以字长单位来取指令和数据,取指令被优化了,并意味着单一指令不会 跨越内存分页的边界。 RISC 潜在优势分两个类型: 1)性能方面:①能开发出更有效的优化的编译器;②编译器生成的大多数指令从任何 方面讲都是相对简单的指令;③精简指令集能非常有效地适合于指令流水技术;④RISC 程 序应能更好地响应中断 2)VLSI 实现:①使用 VLSI,CPU 的设计和实现发生了根本性的变化。一个单片微处 理器大约要将芯片面积的一大半用于微代码控制存储器,RISC I 芯片只是将芯片面积的 6% 用于控制器。②设计和实现时间:研制 VLSI 相当困难,设计者必须完成电路设计排图和设 备级的模拟;对于 RISC 结构,该过程要容易得多,如 CP344+EP474 表 12.7 所证实。 若 RISC 芯片的性能等同于一个可比较的 CISC 微处理器,则此设计和实现时间的节省 就成为 RISC 方法优越的例证。 7 第 12 章 计算机组织与结构 共 14 页 12.4.4 CISC versus RISC Characteristics 分析研究结果,达成如下共识: (1)RISC 设计包括某些 CISC 特色会有好处; (2)CISC 设计包括某些 RISC 特色也会有益。 CISC 与 RISC 特征对比 结果,最近以 PowerPC 为代表的 RISC 设计不再是“纯”RISC,最近以 Pentium 为代 表的 CISC 设计也结合了某些 RISC 特征。 CP345+EP475 表 12.8 列出了几种处理器的特征比较,从中可见典型的 RISC 特征: 1.单一的指令长度 2.典型的长度是 4 字节 3.较少(少于 5)的寻址方式 4.无间接寻址 5.每条指令不会有多于一个的存储器操作数 6.装入/存储操作不会与算术操作混在一起 7.对装入/存储操作,不支持数据的任意对齐 8.对指令中的数据地址,存储管理单元(MMU)的使用次数最多 9.整数寄存器指派器的位数等于 5 或更多,即至少有 32 个整数寄存器能显式地引用 10.浮点寄存器指派器的位数等于 4 或更多,即至少有 16 个整数寄存器能显式地引用 结论:① 1 到 3 项是指令译码复杂性的指示;4 到 8 项揭示了流水线 项关系到利用编译器的能力。 ②表中前 8 个处理器是明显的 RISC 结构,随后 5 个是明显的 CISC,最后两 个处理器有不少 CISC 特征。 12.5 RISC PIPELINING 12.5.1 Pipelining with Regular Instructions RISC 流水线技术 规整指令的流水线技术 RISC 大多数指令是寄存器到寄存器的,指令周期有如下两个步骤: ? I:取指令 ? E:执行。带寄存器输入和输出,完成一个 ALU 操作 对于装入和存储操作,需要三个步骤: ? I:取指令 ? E:执行,计算存储器地址 ? D:存储器,寄存器到存储器或存储器到寄存器操作 CP346+EP478 图 12.6(a)描述了不使用流水线技术的一个指令序列的操作顺序; 8 第 12 章 计算机组织与结构 共 14 页 图 12.6(b)表示一种两路流水处理策略,存在两个问题:①假定使用单端口存储器, 则每个相位只准一次存储器访问, 这就要求在某些指令的执行中插入等待状态; ②转移指令 能打断顺序的执行流。 为了以尽量少的线路来调节它,可通过编译器或汇编器将 NOOP 指令插入指令流中。 通过允许每个步骤有两次存储器访问,能进一步改善流水线(c)所, 能重叠执行多达 3 条指令,改善的因素是 3;同样,转移指令使加速不能达到最大允许值。 假若 3 个阶段有大致相等的时间长度(持续时间) ,该流水线就能很好地工作。因为 E 阶段通常涉及到一个 ALU 操作,可将它分成两个子阶段: ? ? E1:寄存器集读 E2:ALU 操作和寄存器写 图 12.6(d)是使用 4 路流水的结果。多达 4 条指令能同时进行,最大可能的加速因素是 4 12.5.2 Optimization of Pipelining 流水线的优化 由于 RISC 指令集的简单性和规整性,能有效地使用流水线策略。但是数据和转移的相 干性会降低整体的执行速率。 为了调整这些相干性,开发出代码重组技术:延迟转移和延迟装入 1. 延迟转移 延迟转移利用了转移指令直到下面一条指令之后才产生影响这一特点,在转移指令之 后安排一条有用指令来替代仅为延迟的空操作。该方法由 CP346+EP478 表 12.9 说明; CP348+EP479 图 12.7 表示了相应的结果 对于无条件转移、调用和返回,都能成功地进行这种延迟转移交换;若转移所测试的条 件能被前面这条指令所修改,则编译器应避开这种延迟转移交换。应代之以插入 NOOP 指 令。以 Berkeley RISC 和 IBM801 中,多数条件转移指令都能以这种交换方式得到优化 2.延迟装入 延迟装入能用于 LOAD 指令。 根据 LOAD 指令, 那个将装入目标的寄存器被 CPU 锁定。 CPU 则继续执行指令流,直到它到达有指令要求那个寄存器,在这点上它空闲直到此装入 完成。 如果编译器能够这样重排指令: 此装入在流水中进行的同时, 能完成一些有用的工作, 则效率能提高。 注意:指令流水线的设计不应与其他适用于系统的优化技术隔离开进行。例如,流水 的指令调度策略应与寄存器的动态分配一起考虑 9 第 12 章 计算机组织与结构 共 14 页 12.6 MIPS R4000 1.MIPS 系列 最早商品化 RISC 芯片组由 MIPS Technology 公司开发, MIPS 系列最新产品号是 R4000, 与 R2000、R3000 和 R6000 具有相同的结构和指令集;最显著的区别:R4000 使用 64 位处 理所有内部和外部数据路径和地址、寄存器以及 ALU。使用 64 位结构的优势: ①允许更大的地址空间。 ②64 位能允许 R4000 处理像 IEEE 单精度浮点数这样的数据。 ③处理字符串数据时能一次动作处理多达 8 个的字符。 2.R4000CPU 设计思想:尽量使指令执行逻辑简单,留出空间用于增强性能的逻辑。 3.R4000 处理器:支持 32 个 64 位寄存器;提供高达 128KB 的高速 Cache:一半用 于指令,一半用于数据;这种相对大的 Cache 允许系统保持更多的程序代码和局部数据,从 而减轻了主存总线的负荷,避免了对伴随窗口逻辑的大寄存器集的需求。 12.6.1 Instruction Set CP349+EP481 表 12.10 列出了 MIPS R 系列处理器的基本指令集,表 12.11 列出了 R4000 实现的附加指令。所有指令都以单一 32 位字格式来编码;所有数据操作都是寄存器到寄存 器;仅存储器访问是纯的装入/存储操作。 1.R4000 没使用条件代码 若一条指令产生某条件, 其相应的标志存于一个通用寄存器中, 它们将影响流水线机构 和编译器对指令的重排序。 R4000 没使用条件代码,这就避免了专门用于处理条件代码的逻辑。因此,采用了已实 现处理寄存器值相关性的机构; 而且映射到寄存器集的条件在分配与再使用上, 从属于与存 于寄存器其他值相同的编译时间优化。 2.R4000 使用单一的 32 位指令长度:简化取指令和指令译码,又简化了取指令与 虚拟存储管理单元的相互作用;CP350+EP483 图 12.8 中,R4000 的三种指令格式共享操作 码和寄存器引用的公共格式, 简化了指令译码, 可在编译时间以简单指令的合成实现更复杂 指令的效果。 3.只有最简单的和最经常使用的存储器寻址方式是以硬件实现的。所有的存储器引用 由一个 32 位寄存器和一个 16 位的对此寄存器基址的位移组成。例如, “装入字”指令: lw r2, 128 (r3) 10 r2←M( (r3)+128) 第 12 章 计算机组织与结构 共 14 页 含义:以寄存器 3 的内容为基础地址加上 128 的位移,形成存储器地址,将此地址直 的字装入寄存器 2。 编译器使用多条机器指令的合成, 从而实现普通计算机的典型寻址方式, CP351+EP483 表 12.8 给出了某些例子 12.6.2 Instruction Pipelining 指令流水线 最初 RISC 处理器,实现了大约每系统时钟周期 1 条指令的执行速度;超标量和超级流 水线结构,已进展到能每时钟周期执行多条指令。 ①超标量结构(Super Scalar Architecture)复制每个流水线段,以致流水线的同一阶段 上的两条或多条指令能同时处理;但不同流水线中指令间的相关性能减慢系统。 ②超级流水线结构(Super Pipelined Architecture)是使用更多更细致的流水阶段,指令 同时处于流水线中从而提高并行度;但指令由一个阶段传送到下一阶段的开销也会增加。 MIPS R4000 是一个基于 RISC 的超级流水线 的指令流水线,它已做到了每个时钟周期执行 1 条指令;其编译器能重排序指令,70%~90%的时间内能以代码填充延迟槽。所有指令都流 经如下 5 个流水阶段: ? 取指令 ? 由寄存器集取源操作数 ? ALU 运算或数据操作数地址生成 ? 数据存储器访问 ? 写回到寄存器集 由于流水线的并行性和单一指令执行内的并行性, 60 纳秒的时钟周期分成两个 30 纳秒 的相位。 外部指令和数据的 Cache 存取操作, 每项操作都需要 60 纳秒, 主要的内部操作 (OP, DA,IA)也需要同样的时间。指令译码是一个较简单操作,只要求一个 30 纳秒相位,能与 同一指令的寄存器相重叠。 一个分支指令的地址计算亦与指令译码和寄存器取相重叠, 于是 指令 i 的分支能为存取指令 i+2 寻址指令 Cache(Instruction Cache:ICACHE) ;指令 i 的装 入能取即刻被指令 i +1 OP 使用的操作数,一个 ALU/shift 结果能直接传递给指令 i +1 而没 有任何延迟。这种指令间紧耦合(the tight coupling)有利于高效流水。 每个时钟周期分成的两个相位分别标为φ 1 和φ 2。每个相位所完成的功能被总结于 CP352+EP486 表 12.13。 R4000 使用更先进的技术:①时钟周期缩短到 30 纳秒,寄存器集的存取时间也缩短到 原来的一半(30 纳秒) ;②芯片的密度更大,指令或数据 Cache 能结合到芯片上。 R4000 所具有的速度和密度,准许它有程度为 2 的超级流水线 章 计算机组织与结构 共 14 页 CP353+EP487 图 12.10(a)表示使用超级流水线 设计了一个更大的专门加法器,能以两倍的速率来执行 AIU 操作并允许装入和 存储以两倍的速率来执行。产生的流水线 个流水段,流水以每时钟周期两段的速率向前推进: ⊙取指令的前一半 ⊙取指令的后一半 ⊙寄存器集(Register File) :三个动作同时出现: ①指令被译码并为联锁条件进行检查 ②进行指令 Cache 标记(tag)检查 ③由寄存器集取操作数 ⊙指令执行 ①若指令是寄存器到寄存器的操作,ALU 完成此算术/逻辑操作 ②若指令是装入/存储,计算数据的虚拟地址 ③若指令是转移,计算转移目标的虚拟地址并检查转移条件 ⊙数据 Cache 前一半 ⊙数据 Cache 后一半 ⊙标记检查 ⊙写回 12.7 SPARC SPARC(Scalable Processor Achitecture,可扩展处理器体系结构)是由 Sun Microsystems 定 义的处理器结构,SPARC 结构从 Berkeley RISC 得到许多启迪,Sun 已开发出 SPARC 产品, 许可其他厂商生产兼容产品,其指令集和寄存器组织也紧密基于 Berkeley RISC 模型之上。 12.7.1 Sparc Register Set SPARC 寄存器组 SPARC 也使用了寄存器窗口。每个窗口由 24 个寄存器组成;总的窗口数取决于具体实 现(2~32 个)。 CP355+EP489 图 12.11 说明了一个 8 窗口的实现, 总共使用了 136 个物理寄存器, 物理 寄存器 0 到 7 是所有过程共享的全局寄存器;每个过程见到逻辑寄存器 0 到 31。 逻辑寄存器 24 到 31 标记为输入,是与调用过程(父过程)共享的;逻辑寄存器 8 到 15 标记为输出,与被调用过程(子过程)共享的; 16 到 23 标记为局部的,是本过程使用的局部 12 第 12 章 计算机组织与结构 共 14 页 寄存器,既不与其它过程共享,也不与其它窗口重叠。 另外,如同 CP335+EP461 §12.1.3 Procedure Calls 所指出的,大多数情况下,8 个 寄存器用于参数传递应该是足够的。 CP355+EP490 图 12.12 是寄存器重叠使用的另一种形式。 调用过程将要传送的参数放入 它的 outs 寄存器中;被调用过程将这同一组物理寄存器看作它的 ins 寄存器。处理器维护一 个指向当前执行过程窗口的指针(称为当前窗口指针:CWP) ,当前窗口指针位于处理器状 态寄存器(PSR)中,此寄存器中还有一个窗口无效屏蔽(WIM:Window Invalid Mask) , 它指示哪个窗口无效。 12.7.2 Instruction Set 指令集 CP356+EP491 表 12.14 列出了 SPARC 指令集。寄存器到寄存器指令有三个操作数: Rd←Rs1 op s2 寄存器零(R0)已被硬布线。该指令形式非常适合于具有高比例的局部标量 和常数的程序。 可由 ALU 实现操作的指令分成如下几组: 整数加法(Integer addition,with or without carry) 整数减法(Integer subtraction,with or without carry) 按位的布尔运算 AND,OR,XOR 及其逆操作 (Bitwise Boolean AND,OR,XOR and their negations) ? 逻辑左移、逻辑右移和算术右移(Shift left logical,right logical,or right arithmetic) 除移位指令之外,所有指令都可选择设置 4 个条件代码:零、负、上溢、进位。整数以 32 位的 2 的补码形式表示。 只有简单的装入和存储指令访问存储器并区分对字、双字、半字、字节的装入或存储 除寄存器外,惟一可用的寻址方式是“偏址”方式,即操作数的有效地址(EA)是基 地址和偏移量之和,基地址来自寄存器,偏移量是立即数或来自于寄存器 EA=(Rs1)+S2 或 EA=(Rs1)+(Rs2) ? ? ? 将 SPARC 的寻址能力与 MIPS 的寻址能力比较是有益的:①MIPS 使用 16 位偏移, SPARC 使用 13 位偏移;②MIPS 不准一个地址由两个寄存器的内容构成,而 SPARC 准许。 12.7.3 Instruction Formats 指令格式 1)SPARC 使用了一组简单的 32 位指令格式(CP338+EP493 图 12.13) 。所有指令都以 2 位操作码开始; 对于 call 指令, 一个 30 位的立即数用右方加两个零位的方法扩展成 32 位, 构成了以 2 的补码格式表示的 PC 相对地址。 13 第 12 章 计算机组织与结构 共 14 页 2)转移指令包括一个 4 位条件字段,它相应于 4 个标准条件码,因此这些条件的任何 组合都能测试出。转移指令的一个不寻常特点是它的注销位(Annul Bit) :①此注销位未置 位时,总是执行此转移指令之后的指令;②注销位置位时,则仅当发生转移时才执行此转移 指令之后的指令。 注销位很有用,因为它使编译器填注条件转移指令之后的延迟槽变得很容易。转移目 标指令总放在延迟槽内,如果不发生转移,能自动注销此指令。 3)SETHI 指令是一条用于装入或保存 32 位值的特殊指令;SETHI 指令以它的 22 位立 即数设置寄存器的高 22 位,以 0 填充寄存器的低 10 位。一种通常指令能指定多达 13 位的 立即数;装入或存储指令可用来实现直接寻址方式;宏%hi 和%lo 用于定义由位置的相应地 址位组成的立即数。 4) 浮点指令格式用于浮点运算,它要求两个源寄存器和一个目的寄存器。 5) 包括装入、存储、算术和逻辑运算的所有其它指令,都使用 CP338+EP493 图 12.13 最下方的两种通用格式之一 12.8 RISC versus CISC CONTROVERSY 评价 RISC 方法功过分成两类。 ? ? RISC 与 CISC 的争论 定量化: 试图比较采用可比技术的 RISC 和 CISC 机器上程序大小及程序执行速度。 定性化:考察高级语言运行和 VLSI 实用区的优化使用等设计出发点。 这类比较存在几个问题: ? 没有这样成对的 RISC 和 CISC 机器,在存活期、技术水平、成本、门电路的复杂 性、编译器的精致性、操作系统支持等等各方面都是可比较的。 ? ? ? 不存在一组正式的测试程序,性能随所用测试程序不同而变动 难于将硬件效应与编译器编写技巧的效应分开。 对 RISC 的分析比较, 大都是在模型机上完成, 大多数商品机又都具有 RISC 和 CISC 的混合特征。 RISC 与 CISC 的争论在很大程度上已平息,因为已出现技术的逐渐交融。随着芯片密 度和硬件原本速度的提高,RISC 系统已变得更复杂。在达到极限性能的努力中,CISC 设计 已关注通常是与 RISC 相联系的一些焦点,如增加通用寄存器数量和更加强调指令流水线 PROBLEMS CP360+EP496:12.3, 12.7, 12.9 14

本文链接:http://bahayexchange.com/jingjianzhiling/219.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top