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

上传人:b****6 文档编号:17620214 上传时间:2022-12-07 格式:DOCX 页数:15 大小:30.81KB
下载 相关 举报
精简指令集计算机DOCWord文档下载推荐.docx_第1页
第1页 / 共15页
精简指令集计算机DOCWord文档下载推荐.docx_第2页
第2页 / 共15页
精简指令集计算机DOCWord文档下载推荐.docx_第3页
第3页 / 共15页
精简指令集计算机DOCWord文档下载推荐.docx_第4页
第4页 / 共15页
精简指令集计算机DOCWord文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

《精简指令集计算机DOCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《精简指令集计算机DOCWord文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

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

因此,一个计算机系统存活期的主要成本是软件而不硬件。

研究人员和工业界对此的响应是,开发出了功能更强、更复杂的高级程序设计语言,高级语言(HLL:

high-levellanguage)允许编程人员能更简明地表示算法,更关注细节,并经常支持结构化程序设计。

由此而来的是语义间隙问题(SemanticGap),即HLL中提供的操作与计算机结构提供的操作间的差异。

这种间隙现象(SymptomsoftheSemanticGap)被认为是,包括执行的低效、过长的机器程序和编译器的复杂性。

设计者试图以结构的改进来减小这个间隙。

关键的做法包括大指令集、若干的寻址方式和硬件实现的各种HLL语句

设计人员寻找新的方法:

使支持HLL的结构更简单而不是更复杂。

为了理解主张RISC的理由,先简要地重新审视指令执行的特征:

●完成的操作

●所用的操作数

●执行顺序

下面总结的几个有关高级语言研究的报告中,动态测量是通过收集某些特征已出现或某一具体特性已由该情况下的程序所执行,并统计执行次数来进行的。

静态测量只是在源程序文本上进行统计,它们没有加权到每条语句的执行次数。

12.1.1Operations操作

CP106+EP146表4.9包括了几个研究的重要结论:

赋值语句在程序中很显著,这暗示简单的数据传送非常重要;

条件语句亦在程序中占有优势,这表明指令集的顺序控制机制亦是关键。

因而应以一种“优化”形式(anoptimalfashion)来支持它们。

研究者曾在VAX、PDP-11和Motorola68000上编译Patterson程序,以确定每类语句的平均机器指令数和平均存储器访问数。

将这些平均数乘以每类语句的出现频度,就得到了CP334+EP460表12.2。

结果表明:

过程调用/返回是典型HLL程序中最耗时的操作。

12.1.2Operands操作数

Patterson的研究报告查看了各类变量的动态出现频度,详见CP334+EP460表12.3。

Pascal和C程序的结论是一致的:

主要使用的简单标量变量,而且80%以上的标量是(过程的)局部变量。

结论:

程序中大量访问的是标量,而且它们是高度局部化的。

研究显示,因为操作数存取如此频繁,适用快速存取的结构将起重要作用。

Patterson研究提示,优化的主选方向应是对局部标量变量的存储和访问。

12.1.3ProcedureCalls过程调用

过程调用和返回是HLL程序的一个重要部分。

表12.2指出,过程调用和返回是编译后的HLL程序中最耗时的操作。

 因此,考虑高效实现这些操作的方式将是有益的。

   

Tanenbaum的研究指出,98%的动态调用过程中传送的量少于6个,而且其中92%是少于6个局部标量变量。

Berkeley的RISC小组报告的结果,如CP335+EP461表12.4所示。

Berkeley小组发现程序保持在相当窄的过程调用窗口区域内。

这就进一步证实了操作数访问(operandreference)是“高度局部化(highlylocalized)”的结论。

12.1.4Implications结论

试图让指令集结构更接近HLL并不是一个有效的策略;

而通过优化典型HLL程序中最耗时操作的性能,能更好地支持HLL。

由此,表征RISC结构体现在如下三点:

①使用大量的寄存器,可以优化操作数的访问;

②精心谨慎地设计指令流水线,因为条件转移和过程调用指令的高比例,一个过于简单的指令流水线将是低效的;

③对简单(Reduced)的指令集的需求。

12.2THEUSEOFALARGEREGISTERFILE大寄存器方案的使用

已经看到:

①HLL程序中有大量的赋值语句;

②每个HLL语句都有一定数量的操作数访问;

③大多数访问的是局部标量。

故:

侧重于寄存器存储是明智的。

其理由是,寄存器存储是比主存和Cache还要快的最快可用存储装置。

寄存器集从物理上讲是小的,与ALU和控制器建在同一芯片上,使用比主存和Cache地址还要短的地址。

因此:

需要一种策略能使最频繁访问的操作数保持在寄存器中,并减少(minimize)“寄存器—存储器”操作。

有两种基本途径:

①基于软件,②基于硬件。

软件方法是依赖编译器来使寄存器使用最大化(maximize)。

编译器将试图为那些在一给定时间期内使用最多的变量分配寄存器,并要求使用复杂的程序分析算法。

硬件方法是简单地装备更多的寄存器,以致更多的变量更长时间地保持在寄存器中。

12.2.1RegisterWindows寄存器窗口

使用一大组寄存器应能减少对存储器访问的需求。

显然,设计的任务就是很好地组织寄存器来实现这个目标。

因为大多数操作数量局部标量,局部的定义是随着每次过程调用和返回而改变的,过程调用是频繁出现的操作。

解决的方法是基于两个结论:

①典型的过程只使用少数传送参数和局部变量;

②过程动作的深度仅限定在一个相对窄的范围内(CP75+EP106图4.3)。

因此,使用多个小的寄存器组,每个小组指派给一个不同的过程。

过程调用时自动地切换来使用不同的但大小固定的寄存器窗口;

相邻过程的窗口是重叠的,以允许参数传递。

CP337+EP463图12.1说明了上述方法:

任何时刻,只有一个寄存器窗口是可见的和可寻址的;

窗口分成三个固定长度域:

参数寄存器域、局部寄存器域和临时寄存器域。

①参数寄存器用来保存调用当前过程的过程(父过程)向下传递的参数和将被返送的结果;

②局部寄存器用于局部变量,由编译器指派;

③临时寄存器(TemporaryRegister)用于当前过程与下一级过程(孙过程)交换参数和结果。

某一级的临时寄存器与下一级的参数寄存器是物理同一的,这种重叠(overlap)准许不用实际移动数据就能传递参数。

为管理任何可能样式的调用和返回,寄存器窗口的数目将必须是不受限制的。

寄存器窗口只用于保持少数最近过程的动作,旧的动作必须保持在存储器中并当嵌套浓度减少时再恢复;

因此,寄存器集的实际组织是一个由重叠窗口组成的环形缓冲器。

CP337+EP464图12.2描述的是一个6窗口的环形缓冲器。

缓冲器已填充到深度4(A调用B,B调用C,C调用D),过程D是当前活动的过程。

当前窗口指针(CWP)指向当前活动过程的窗口;

保存窗口指针(SWP:

saved-windowpointer),用来指明(Identify)最近保存在存储器的窗口。

结论:

N个窗口的寄存器集仅能用于N-1个过程的动作。

有研究报告指出仅有1%的过程调用和返回需要8个窗口。

BerkeleyRISC计算机使用8个窗口,每个窗口有16个寄存器。

Pyramid计算机使用16个窗口,每个窗口有32个寄存器。

12.2.2GlobalVariables全局变量

全局变量由多个过程所使用:

①编译器为HLL中声明为全局的变量指派存储器位置。

对于频繁访问的全局变量来说,这种策略是低效的;

②替代方法是CPU包含有一组全局寄存器,统一编号的方法能用来简化指令格式。

例如:

寄存器引用号0~7是唯一的一组全局寄存器;

对寄存器8~31的引用可以是当前窗口内的具体寄存器(对CWP)的位移。

12.2.3LargeRegisterFileversusCache大寄存器集与Cache的对比

CP338+EP466表12.5比较了大寄存器集与Cache组织的特征:

①寄存器集会使空间利用低效:

寄存器仅容纳有用的变量

②Cache蒙受另一类的低效:

数据是成块读入Cache的,其中某些块甚至将不会使用。

③Cache能处理局部变量和全局变量。

④使用寄存器集,寄存器和存储器间的数据传送由过程嵌套深度所确定。

⑤基于Cache的系统是明显较慢的,Cache的存取时间肯定要长于寄存器的存取时间。

从性能的观点看:

基于窗口的寄存器集对于局部标量是优选的;

通过加入只由指令使用的Cache,能进一步改善性能

12.3COMPILER-BASEDREGISTEROPTIMIZATION基于编译器的寄存器优化

1.编译器的目标:

尽可能地在寄存器中而不是在主存中为多数计算保持操作数,并且减少装入和存储操作。

2.优化任务的本质:

判定在程序的任何给定点,什么样的量应指派到寄存器中。

RISC的编译器普遍使用图着色的技术(GradphColoring)

图着色做法:

①对于一个由结点和边组成的给定图,为结点指定颜色使相邻结点不同色,而且要使颜色的数目最少。

②该问题以如下方式转换成编译器问题:

1)分析程序并构成一个寄存器相关图,图的结点是符号寄存器,若两个符号寄存器同时“存活(live)”于同一程序段期间,则相应的两个结点是用一条边连接起来以指出它们相关。

尝试用n种颜色给图上色,若这个过程不能完全成功,则不能上色的结点必须放入存储器中,且当需要它们时,必须使用装入和存储操作替它们准备好寄存器空间。

CP338+EP466图12.4是这种处理的简单例子。

3.权衡考虑(Trade-off)

在使用大量的寄存器和基于编译器的寄存器优化之间有一个权衡考虑的问题。

[BRAD91a]在研究中设定寄存器的数目从16到128;

研究表明:

①若只有相当简单的

寄存器优化,那么使用多于64个寄存器只带来很少的好处;

②使用相当精致的寄存器优化技术,也比使用多于32个的寄存器带来更多的临界性能改善。

只有少量的寄存器,具有共享寄存器组织的机器要比具有分立寄存器组织的机器执

行得更快。

[HUGU91]也得出类似的结论

12.4REDUCEDINSTRUCTIONSETARCHITECTURE精简指令集结构

12.4.1WhyCISCCISC的理由

丰富指令集的趋势,包括更大数量的指令和更复杂的指令。

推动该趋势的基本理由是:

要求简化编译器和要求改善性能。

其根本性原因:

大部分程序员已移到高级语言(HLL)上,厂家试图设计能对HLL提供更好支持的机器。

1.CISC的第一个理由:

简化编译器

编译器的任务就是为每个HLL语句产生一个机器指令序列。

RISC研究发现:

减小代码长度、减少指含有执行计数和增强流水这样的优化生成代码的任务,使用复杂指令集也是非常困难。

但编译后程序中的大多数指令都是相当简单的。

2.CISC的第二个理由:

CISC可生成更小更快的程序

1)小程序优点:

占用内存少,节省资源,较小的程序应能改善性能;

CISC程序将小于RISC程序。

CP341+EP470表12.6列出来自三个研究的结果:

CISC比RISC没有或仅少许的节省。

几个理由可以解释这些令人惊奇的结果:

①CISC上的编译器有偏爱简单指令的倾向,故复杂指令的综合性很少能发挥作用;

②CISC上的多数指令要求较长的操作码,使程序较长;

③RISC强调寄存器而不是存储器的访问,要求的指令位数也较少。

期望CISC能产生较小的程序并带有其他优点,是不太现实的。

为适应丰富的指令集,整个CISC的控制器必须做得更复杂,程序控制存储装置也必须做得更大,从而增加了简单指令的执行时间。

12.4.2WhyRISC

1.20%~80%定律(1975年IBM研究IS合理性,JOHNCOCKE提出RISC构想)

①对CISC机的测试表明:

最常用的简单指令仅占指令系统总数的20%,出现频率占80%;

②微程序控制的计算机中,占指令总数20%的最复杂指令,占据控制存储器容量的80%

2.指令执行的平均周期数(CPI:

CycleperInstruction)

假设P为执行一个程序花费的时间;

I为程序执行的总指令数;

T为指令周期(ns)

则:

P=I×

CPI×

T

CISC与RISC参数对比

I

CPI

CISC

1

4~6

RISC

1.3~1.4

1.1~1.4

显然:

RISC与CISC相比RISC的优势在CPI

3.RISC与CISC在系统实现方面的根本差异

1系统设计:

RISC大多数重要功能用软件实现;

CISC尽可能多地用硬件实现软件功能

2处理器实现:

RISC采用硬连线逻辑,具有简单流水线结构,具有快速Cache;

CISC采用微程序控制,具有复杂流水线结构,对主存访问频繁

3设计目标:

RISC使指令执行时间最短,程序长度适中

CISC使每条指令有尽可能多的功能,使程序长度减少

4Cache结构:

对RISC的系统性能是关键性的

对CISC是有用的,但不是关键性的

5编译处理:

对RISC,编译强调优化程序;

CISC的编译着重获得正确的指令序列

12.4.3CharacteristicsofReducedInstructionSetArchitectures

(精简指令集结构特征)

RISC共同的特征:

●每周期一条指令

●寄存器到寄存器的操作

●简单的寻址方式

●简单的指令格式

1.机器周期

机器周期被定义成由寄存器取两个操作数,完成一个ALU操作,然后再将结果写入寄存器所用的时间。

RISC中机器指令以硬布线方式实现,指令执行得更快。

2.大多数操作在寄存器间进行

该特点简化了指令集,简化了控制器,鼓励寄存器的优化使用。

3.使用简单的寻址方式

几乎全部指令都使用寄存器寻址方式,其它复杂的寻址方式可用软件来合成。

同样简化了指令集和控制器。

4.使用简单指令格式

仅使用一种或少数几种格式;

指令长度固定并且在字边界上对齐。

字段位置,特别是操作码字段位置是固定的。

好处:

对于固定的字段,操作码的译码和寄存器操作数的访问能同时出现;

简化的格式也简化了控制器;

以字长单位来取指令和数据,取指令被优化了,并意味着单一指令不会跨越内存分页的边界。

RISC潜在优势分两个类型:

1)性能方面:

①能开发出更有效的优化的编译器;

②编译器生成的大多数指令从任何方面讲都是相对简单的指令;

③精简指令集能非常有效地适合于指令流水技术;

④RISC程序应能更好地响应中断

2)VLSI实现:

①使用VLSI,CPU的设计和实现发生了根本性的变化。

一个单片微处理器大约要将芯片面积的一大半用于微代码控制存储器,RISCI芯片只是将芯片面积的6%用于控制器。

②设计和实现时间:

研制VLSI相当困难,设计者必须完成电路设计排图和设备级的模拟;

对于RISC结构,该过程要容易得多,如CP344+EP474表12.7所证实。

若RISC芯片的性能等同于一个可比较的CISC微处理器,则此设计和实现时间的节省就成为RISC方法优越的例证。

12.4.4CISCversusRISCCharacteristicsCISC与RISC特征对比

分析研究结果,达成如下共识:

(1)RISC设计包括某些CISC特色会有好处;

(2)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项揭示了流水线技术实现的难易;

9和10项关系到利用编译器的能力。

②表中前8个处理器是明显的RISC结构,随后5个是明显的CISC,最后两

个处理器有不少CISC特征。

12.5RISCPIPELININGRISC流水线技术

12.5.1PipeliningwithRegularInstructions规整指令的流水线技术

RISC大多数指令是寄存器到寄存器的,指令周期有如下两个步骤:

●I:

取指令

●E:

执行。

带寄存器输入和输出,完成一个ALU操作

对于装入和存储操作,需要三个步骤:

执行,计算存储器地址

●D:

存储器,寄存器到存储器或存储器到寄存器操作

CP346+EP478图12.6(a)描述了不使用流水线技术的一个指令序列的操作顺序;

图12.6(b)表示一种两路流水处理策略,存在两个问题:

①假定使用单端口存储器,则每个相位只准一次存储器访问,这就要求在某些指令的执行中插入等待状态;

②转移指令能打断顺序的执行流。

为了以尽量少的线路来调节它,可通过编译器或汇编器将NOOP指令插入指令流中。

通过允许每个步骤有两次存储器访问,能进一步改善流水线的性能,如图12.6(c)所,能重叠执行多达3条指令,改善的因素是3;

同样,转移指令使加速不能达到最大允许值。

假若3个阶段有大致相等的时间长度(持续时间),该流水线就能很好地工作。

因为E阶段通常涉及到一个ALU操作,可将它分成两个子阶段:

●E1:

寄存器集读

●E2:

ALU操作和寄存器写

图12.6(d)是使用4路流水的结果。

多达4条指令能同时进行,最大可能的加速因素是4

12.5.2OptimizationofPipelining流水线的优化

由于RISC指令集的简单性和规整性,能有效地使用流水线策略。

但是数据和转移的相干性会降低整体的执行速率。

为了调整这些相干性,开发出代码重组技术:

延迟转移和延迟装入

1.延迟转移

延迟转移利用了转移指令直到下面一条指令之后才产生影响这一特点,在转移指令之

后安排一条有用指令来替代仅为延迟的空操作。

该方法由CP346+EP478表12.9说明;

CP348+EP479图12.7表示了相应的结果

对于无条件转移、调用和返回,都能成功地进行这种延迟转移交换;

若转移所测试的条件能被前面这条指令所修改,则编译器应避开这种延迟转移交换。

应代之以插入NOOP指令。

以BerkeleyRISC和IBM801中,多数条件转移指令都能以这种交换方式得到优化

2.延迟装入

延迟装入能用于LOAD指令。

根据LOAD指令,那个将装入目标的寄存器被CPU锁定。

CPU则继续执行指令流,直到它到达有指令要求那个寄存器,在这点上它空闲直到此装入完成。

如果编译器能够这样重排指令:

此装入在流水中进行的同时,能完成一些有用的工作,则效率能提高。

注意:

指令流水线的设计不应与其他适用于系统的优化技术隔离开进行。

例如,流水的指令调度策略应与寄存器的动态分配一起考虑

12.6MIPSR4000

1.MIPS系列

最早商品化RISC芯片组由MIPSTechnology公司开发,MIPS系列最新产品号是R4000,与R2000、R3000和R6000具有相同的结构和指令集;

最显著的区别:

R4000使用64位处理所有内部和外部数据路径和地址、寄存器以及ALU。

使用64位结构的优势:

①允许更大的地址空间。

②64位能允许R4000处理像IEEE单精度浮点数这样的数据。

③处理字符串数据时能一次动作处理多达8个的字符。

2.R4000CPU设计思想:

尽量使指令执行逻辑简单,留出空间用于增强性能的逻辑。

3.R4000处理器:

支持32个64位寄存器;

提供高达128KB的高速Cache:

一半用于指令,一半用于数据;

这种相对大的Cache允许系统保持更多的程序代码和局部数据,从而减轻了主存总线的负荷,避免了对伴随窗口逻辑的大寄存器集的需求。

12.6.1InstructionSet

CP349+EP481表12.10列出了MIPSR系列处理器的基本指令集,表12.11列出了R4000实现的附加指令。

所有指令都以单一32位字格式来编码;

所有数据操作都是寄存器到寄存器;

仅存储器访问是纯的装入/存储操作。

1.R4000没使用条件代码

若一条指令产生某条件,其相应的标志存于一个通用寄存器中,它们将影响流水线机构和编译器对指令的重排序。

R4000没使用条件代码,这就避免了专门用于处理条件代码的逻辑。

因此,采用了已实现处理寄存器值相关性的机构;

而且映射到寄存器集的条件在分配与再使用上,从属于与存于寄存器其他值相同的编译时间优化。

2.R4000使用单一的32位指令长度:

简化取指令和指令译码,又简化了取指令与虚拟存储管理单元的相互作用;

CP350+EP483图12.8中,R4000的三种指令格式共享操作码和寄存器引用的公共格式,简化了指令译码,可在编译时间以简单指令的合成实现更复杂指令的效果。

3.只有最简单的和最经常使用的存储器寻址方式是以硬件实现的。

所有的存储器引用由一个32位寄存器和一个16位的对此寄存器基址的位移组成。

例如,“装入字”指令:

lwr2,128(r3)r2←M((r3)+128)

含义:

以寄存器3的内容为基础地址加上128的位移,形成存储器地址,将此地址直的字装入寄存器2。

编译器使用多条机器指令的合成,从而实现普通计算机的典型寻址方式,CP351+EP483表12.8给出了某些例子

12.6.2InstructionPipelining指令流水线

最初RI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

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

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