《运算机体系结构参考译文》由会员分享,可在线阅读,更多相关《运算机体系结构参考译文(27页珍藏版)》请在金锄头文库上搜索。
1、运算机体系结构要点参考译文第一章运算机体系结构基础运算机系统的层次结构六层模型一一从程序员角度看到的运算机虚拟机械,实际机械。运算机体系结构与实现体系结构属性:指令集,数据类型(如字符,数值)的位数,寻址方式等。实现:A、组成属性:对程序员是透明的。如操纵信号,运算机与外设的接口等。B、硬件:指逻辑设计,封装技术等。微型机中,体系结构与组成的关系超级紧密。运算机设计者的任务知足功能需求:应用领域(通用,科技,商用)软件兼容程度(编程语言级兼容,目标代码级兼容)操作系统(地址空间大小,存储治理方式,爱惜方式)遵循标准(浮点数,I/O总线,操作系统,网络,编程语言)考虑实现需求功能的性能价钱比,设
2、计的复杂性和体系结构的生命力。性能评测执行时刻与性能成反比:ExecutionTineY_PeifonnaneXExecutionTmeXPeijonnaneY用程序来评测性能:真实程序,核心程序,小游戏程序,合成测试程序评测程序:SPEC92benchmarksuites报告性能结果:SPEC组织成立了大体性能和优化性能评定比较/总结性能:合计执行时刻方式:YTime,(针对时刻)r-11算术平均方式:7自7726(针对时刻)调和平均方式:(针对速度)rate加权合计时刻方式:ZWeightTimgf=l基准化执行时刻及几何平均方式。运算机设计的量化定理加速常常性事件阿达姆尔定理:系统加速比
3、=(1-可改进部分占系统比例+可改进部分占系统比例可改进部分局部加速比CPU性能公式:CPUH寸间=指令条数时钟周期数秒Xv程序指令数每时钟周期 测量时钟周期时刻:可用timingestimators/verifiers对关键操纵途径的时刻估量。 测量程序中的指令数:借助编译器及软件工具。 CPI的确信:与流水线及Cached的结构有关访问的局部性运算机体系结构的分类:弗林分类法: 单指令流单数据流机械 单指令流多数据流机械 多指令流单数据流机械 多指令流多数据流机械第二章指令集结构指令集结构分类CPU内部的存储单元的类别是指令集结构划分的基础。 而向堆栈的指令集结构 而向累加器的指令集结构
4、而向通用寄放器的指令集结构自1980年以后,运算机都采纳而向通用寄放器(GPR)的指令集结构,这其中基于两个因素。(哪两个因素?)从算逻辑指令中的操作数特点来看,通用寄放器指令集结构(GPR)有两个特点,(操作数的总数,和来自于存储器的操作数的数量).存储器地址解析本书中均按字节编址,可访问的信息地址长度为字节(8bits)、半字(16bits),字(32bits)、双字(64bits)a关于一个字中字节的排序有两种规那么,低端字节排序和高端字节排序,在具有不同的字节排序规那么的机械之间进行数据互换时,应该注意字节的顺序问题。当访存的目标大小超过一个字节的时候应该考虑对齐问题,当访问的目标大小
5、为S个字忆且起始字节的地址为A时,应有AmodS=0,不然目标的寄存是未对齐的。未对齐存储会给访问带来什么问题呢?寻址方式指令集如何指明要访问的地址。寻址方式能够大大的减少指令条数,寻址方式也能增加机械实现的复杂程度,在实现这些寻址方式的同时也增加了平均CPI值。当即寻址,偏移寻址,寄放器间接寻址,几乎是每一个指令集结构中都具有的寻址方式。指令格式优化2.4.1 操作码表示 固定长度操作码 Huffman码 扩展操作码2.4.2 操作数的个数2.4.3 指令编码操作码与寻址方式彼此配合的程度,针对操作码的独立寻址方式描述,和寻址方式与操作码综合编码。可变长指令,定长指令,混合长度指令。指令集功
6、能四种类别的操纵类指令 条件转移 无条件转移 挪用 返回操纵类指令的寻址方式 转移目标地址在指令中明确指出(jump) 转移目标地址无法在编译期间给出采纳PC-相对寻址方式(以PC值加偏移量)给出目标地址(branch)采纳寄放器间接寻址方式动态地指明目标地址转移条件条件码方式条件寄放器方式比较与转移结合程序挪用进程中的状态保留问题保留返回地址保留寄放器状态挪用者保留被挪用者保留精简指令集运算机与复杂指令集运算机CISC与RISC的区别RISC机械的设计特点。第三章流水技术流水概念流水是多条指令重叠执行的一种实现技术。目前,流水是快速CPU的关键实现手腕。在运算机流水技术中,流水线的每一个时期
7、完成指令的一个部份。指令流水线的吞吐率取决于从流水线中流出指令的速度,即单位时刻里所流出的指令数。流水线的各个时期是依次连接在一路的,各个时期同时工作。指令在流水线中每前进一个时期所需的时刻是一个机械周期。机械周期取决于流水线中最慢的部份。在运算机中,那个机械周期一般是一个时钟周期(有时能够是两个,但很少超过两个),但时钟周期能够会有多个相位。流水设计的目标确实是平稳多个流水部件的时刻长度,如此流水线机械中每条指令所需时刻就等于(指令在非流水机械上所需执行时刻/流水段数)在这种情形下,流水线的加速比就等于流水线的段数。通常,流水线的各段很难做到完全的平稳。因此流水线会引入一些额外开销。流水线能
8、够让每条指令的平均执行时刻降低。若是从多周期指令的角度看,流水线能够降低CPI值:若是从单周期指令的角度看,流水线能够减低时钟周期时刻值。流水线是在顺序指令流中挖掘指令并行执行的一种实现技术,关于应用程序员来讲是透明的。DLX的简单实现这是一个非流水的DLX。每条DLX整型指令最多需要5个时钟周期。别离为:1、取指令周期(IF)2、指令译码/寄放器读取周期(ID)3、执行/计算有效地址周期(EX)4、存储器访问/转移完成周期(MEM)5、写回结果周期(WB)图是指令所途经的数据通路。在那个实现中,branch和store指令需要4个周期。而其余的整形指令均需5个周期。设计者从不用单周期方式实现
9、指令执行的两个缘故是什么?DLX大体流水线图给出了DLX执行指令的典型模式。第一,必需确信每一个时钟周期中要做的操作,并要确保在同一个时钟周期内不能对数据通路上的同一个硬件资源进行两种不同的操作。DLX大体数据通路中,采纳的是分开的指令存储器和数据存储器DLX大体数据通路中,在两个时期需要用到寄放器文件:ID时期的读和WB时期的写。应该如何处置对同一个寄放器同时进行读和写这两个操作呢?DLX在每一个IF时期进行PC的递增及保留操作。DLX在MEM时期完成转移指令的目标形成,即改写PC的操作。在流水方式的DLX中,如何将二者和谐在一路呢?图通过流水线寄放器/锁存器将流水线的各时期连接起来。流水线
10、寄放器保留了一条指令在各周期的临时结果值。流水线寄放器中也包括了从一个时期到下一个时期要传递的操纵信息及数据信息。任何一条指令和它所包括的信息,在某一个时刻都只在流水线中的一个时期是活跃的或是有效的。图IF与ID时期的操作独立于当前的指令类型,因为指令只有在ID终止时才被译码完成。IF时期的操作取决于EX/MEM中的指令是不是为成功的转移指令。若是是转移成功,就利用转移目标地址来取指令和计算下一个PC值。不然,就用当前的PC值。IF时期的多路复用器负责选择利用当前的PC值,仍是转移目标地址值。EX时期上部复用器负责选择转移指令,仍是其他指令的一个指令输入,EX时期的下部复用器负责选择是reg-
11、regALU指令仍是其他类型指令的一个信息输入。WB时期的复用器负责选择是load指令的结果仍是ALU指令的结果。流水线增大了CPU执行指令的吞吐率,但它并无减少单条指令的执行时刻。事实上,每条指令的执行时刻由于流水线操纵部份的开销还有略微的增加。可是整个程序的执行时刻是减少的!流水线中的阻塞指令流中下一条指令不能在规定的时钟周期时刻抵达流水线的某一部件,这一现象是流水线碰到阻塞而引发的。有三种类型的流水线阻塞(又称为相关):1、结构相关由硬件资源的争用冲突而引发2、数据有关由于对先前指令结果的依托而引发3、操纵相关由于转移指令和改变PC值的指令而引发结构相关最多见的结构相关是由于流水的功能部
12、件没有被完全的流水化而引发,这将致使持续的利用这一部件的指令没有方法取得每一个时钟周期依次通过那个部件的处置速度。另外一种常显现的结构相关是由于一些硬件资源没有被复制的足够多。例如:一个运算机若是只有一个寄放器堆的写端口,那么当流水线中的指令要在同一时钟周期进行两个写操作时也会发生资源冲突。图只有一个存储器端口的机械,当访问数据与访问指令同时发生时,将产生关于存储器利用的资源冲突。图给出了一种停顿一个时钟周期,或称插入气泡的方式,解决中的结构相关。图给出了一种简单的流水线描述方式。设计者能够提供分开的指令Cache和数据Cache来排除这种结构相关。结构相关确信会带来CPI的降低,但是什么缘故
13、设计者又是还许诺结构相关存在呢?数据有关流水线改变了对操作数读/写的顺序,这与顺序执行的读/写顺序是不同的。相关专用通路方式减少数据有关带来的暂停这是一种硬件技术。1、ALU运算结果从EX/MEM寄放器反馈到ALU的输入锁存器。2、若是硬件检测到先前的ALU操作已经将结果写到寄放器,而且那个寄放器是当前ALU操作的一个源,操纵逻辑选择相关专用通路送来的结果,而不选从寄放器文件中读取的值。相关专用通路成立在产生结果的部件与需要那个结果的功能部件之间。在DLX中,相关专用通路能够成立在任意流水线寄放器与任意功能部件的输入端之间。数据有关的分类RAW(写后读)WAM(写后写)DLX整型流水线只在WB
14、时期写寄放器,因此,可不能显现这种情形。-WAR(读后写)DLX整型流水线读操作数都在ID时期,幸免了这种相关。需要暂停才能解决的数据有关不是所有的数据有关都可用设立相关专用通路的方式来解决。如图的情形。相关专用通路的方式也来不及给出所需要的值。这时,增设了硬件一一称为流水线锁定。流水线锁定器件将产生一个暂停周期,或插入一个气泡。编译重视排代码解决数据有关编译器在生成代码时幸免load指令与需要读取load目标寄放器值的指令紧随其后。很多编译器都借助指令重排改善流水线性能。通常编译器是在一个大体块(无转移)内进行指令重排。指令从流水线的译码(ID)时期进入执行(EX)时期称为指令的发射。关于D
15、LX整形流水线而言,所有的数据有关都能在ID时期被检测到。一旦发觉,就阻止这条指令的发射。一样,在ID时期也能决定设置一条适时的相关专用通路。图示意了借助于比较邻接指令的目标、源操作数是不是相同进行流水线的相关检测。图示意了在ID时期检测到的load互锁,即利用前面的load结果。当咱们检测到了数据有关,只需将ID/EX流水线寄数器的操纵部份置为全Oo即不产生任何操作,与此同时,IF/ID流水线寄放器的内容仍维持原状。所有的相关专用通路都会从ALU的输出或MEM的输入引至ALU的输入MEM的输入或零检测部份的输出。图示意了从ALU输出或MEM/WB的load输出到ALU输入的数据有关的判定和相关专用通路的连接。图示意了具体相关专用通路。操纵相关操纵相关比数据有关给流水线带来的损失还要大。关于条件转移指令而言,转向目口号句时称为转移成功;顺序执行下一条语句时称为转移不成功。关于转