计算机组成与体系结构-翻译课件cpu和功能-yinshu_第1页
计算机组成与体系结构-翻译课件cpu和功能-yinshu_第2页
计算机组成与体系结构-翻译课件cpu和功能-yinshu_第3页
计算机组成与体系结构-翻译课件cpu和功能-yinshu_第4页
计算机组成与体系结构-翻译课件cpu和功能-yinshu_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

WilliamStallings

ComputerOrganization

andArchitecture

8thEdition第12章处理器结构与功能CPU组织结构CPU必须做的事情有:取指令

(Fetchinstructions)解释指令

(Interpretinstructions)取数据

(Fetchdata)处理数据

(Processdata)写数据

(Writedata)CPU与系统总线CPU内部结构寄存器CPU必须拥有一些工作区

(即临时存储空间)这些临时存储空间被称为寄存器寄存器的数量和功能随着处理器的设计的不同而变化寄存器是决定处理器设计的重要因素在分级存储器体系中处于最高级用户可见存储器(UserVisibleRegisters)通用数据地址条件代码通用寄存器(GeneralPurposeRegisters)(1)可能有真正通用的意义可能有某些限制在某些情况下可作数据和寻址累加器寻址分段寻址通用寄存器(2)利用通用寄存器的通用性可提高程序员的可选择性和灵活性可能增大指令的体积和复杂度通用存储器用于特殊用途减小指令,使得指令更快指令的灵活性降低一般需要多少通用寄存器?8到32个数量越少=更多的存储器引用数量更多:

不会减少存储器引用,还会占用处理器的资源参见RISC通用存储器有多大?足够大,用以保存完整的地址足够大,用于保存完整的数据词(word)通常结合了两个数据寄存器C语言编程中doubleinta;longinta;条件码寄存器(ConditionCodeRegisters)一组独立的比特数例如:

最后一次操作的结果是0可以被程序读取例如:

如果是条件为0,则跳转(Jumpifzero)一般不能被程序更改控制和状态寄存器

(Control&StatusRegisters)程序计数器(ProgramCounter/PC)指令计数器(InstructionRegister/IR)存储地址寄存器

(MemoryAddressRegister/MAR)存储缓冲寄存器

(MemoryBufferRegister/MBR)复习:这些寄存器主要作用是哪些?程序状态字

(ProgramStatusWord)一组比特数包含条件码最后结果的符号(正/负)零进位等于溢出中断允许/禁止监管监管模式(SupervisorMode)Intelringzero内核模式允许执行有特别权限的指令由操作系统所使用用户程序无使用权限其他寄存器有些寄存器可能用于指向:进程控制块(参见O/S)中断向量(参见O/S)特别注意:

CPU的设计与操作系统的设计息息相关微处理器寄存器组织的例子指令周期

(InstructionCycle)复习本书第三章3.2节已描述过CPU的指令周期间接周期(IndirectCycle)取操作数可能涉及存储器间接寻址需要额外的存储器访问可将间接地址的读取看成一个额外的指令子周期有间接周期的指令周期指令周期状态图数据流(DataFlow)(取指令)所发生事件的确切序列取决于CPU的设计通常来说:取指令周期期间PC存有待取的下一条指令的地址该地址被传送到MAR该地址同时被放置于地址总线上控制器发出一个存储器的读取请求存储器将结果放于数据总线,CPU将其复制到MBR,然后传送到IR与此同时,PC增1,为下次取指令做好准备数据流(取数据)控制器检查IR的内容若有一个使用间接寻址的操作数指定符,则完成一个间接周期

(indirectcycle)MBR最右的N位是一个地址引用,被传送至MAR控制器请求一个存储器读取操作得到所要求的操作时地址,并送入MBR数据流(取指令周期)数据流(间接周期)数据流(执行)执行周期有多种表现形式取决于各种不同指令里哪一条当前在IR中该周期可能涉及到存储器的读/写I/O设备的读/写寄存器间的数据传输ALU的功能使用数据流(中断)简单的可预期的PC的当前内容必须被保存,以便在中断之后CPU能恢复正常的动作PC的内容转送至MBR,被写入存储器一个专门的存储器位置(例如:一个堆栈指针)由控制器载入MBR中断子程序的地址载入PC下一个指令周期将以取此相应的指令而开始数据流(中断)预取

(Prefetch)取指令访问主存执行指令通常没有访问主存的操作在当前指令执行的同时,主存能用于取下一条指令该操作被成为指令预取提高性能预取可以提高性能,但性能不能被翻倍:执行时间通常要长于取指令时间那么能不能预取很多指令呢?条件转移指令使得待取的下一条指令的地址未知可以通过增加更多的阶段(Stage)来提高性能流水线Pipelining取指令(Fetchinstruction/FI)译码指令(Decodeinstruction/DI)计算操作数(Calculateoperands/CO)取操作数(Fetchoperands/FO)执行指令(Executeinstructions/EI)写操作数(Writeoperands/WO)有些操作是交叠的两段指令流水线

(TwoStageInstructionPipeline)指令流水线操作时序图

条件转移对指令流水线操作的影响6段CPU指令流水线流水线的另一种描述方式指令流水线的加速系数流水线冒险(PipelineHazards)一个流水线冒险发生在流水线或流水线某个部分,因为某些条件不允许流水线继续进行,而必须停顿(stall)的时候也称为流水线空泡(pipelinebubble)流水线冒险的类型资源冒险(Resource)数据冒险(Data)控制冒险(Control)资源冒险

(ResourceHazards)发生在两条(或多条)已进入流水线的指令需要使用相同资源的时候在流水线某个部分,这些指令必须串行执行,而不是并行执行有时候也称为结构冒险(structuralhazard)一个例子:假设一个简单的五阶段流水线其中每阶段的执行时间是一个时钟周期理想的运行情况是每个时钟周期都有一条新指令进入流水线假设主存只有一个端口所有的指令读取,以及数据装载和保存都一次只有一个单独操作假设没有高速缓存在该情况下,操作数的读取或保存与内存读取指令不能同时进行流水线的取指阶段在进行指令I3的读取之前,必须空闲一个时钟周期另一个例子:多条指令可以进入执行阶段,只有一个ALU单元的时候发生的情况资源冒险的一种解决方法是:增加可用的资源提供访问主存的多个端口提供多个ALU单元数据冒险

(DataHazards)发生在对一个操作数位置的访问出现冲突的时候通常可以如下描述:程序中的两条指令依次执行并且都将访问同一个内存或寄存器操作数如果两条指令是严格串行的,则没有问题如果这两条指令在流水线中运行,则有可能操作数会不安次序更行例如:以下x86机器指令序列:ADDEAX,EBX /*EAX=EAX+EBXSUBECX,EAX /*ECX=ECX–EAX在时钟周期5,ADD指令在第5阶段结束前才更新寄存器EAX在时钟周期4,SUB在执行的第2阶段就需要EAX的最新值为保证正确操作,流水线必须停顿2个时钟周期在缺乏专门硬件和特殊的规避算法的前提下,这一数据冒险会导致流水线的运行效率降低数据冒险示意图数据冒险的类型写后读(Readafterwrite/RAW)或真相关(truedependency)一条指令改写一个寄存器或内存位置后续的指令从所改写的寄存器和内存位置读取数据如果写操作完成前,读操作就开始,则发生冒险读后写(Writeafterread(RAW))或反相关(antidependency)一条指令读一个寄存器或内存位置后续的指令将所改写该寄存器和内存位置的内容如果读操作完成前,写操作就开始,则发生冒险写后写(Writeafterwrite(WAW))或输出相关(outputdependency)两个指令要改写同一个寄存器或内存位置如果这两条指令的写操作发生次序与期望的相反,则发生冒险前一页的例子即RAW冒险另两种冒险参见第14章资源冒险示意图控制冒险ControlHazard又称分支冒险(branchhazard)流水线对分支转移做出了错误的预测读取了后期必须取消的指令处理控制冒险的方法:多个指令流预取转移目标循环缓冲器分支预测延迟转移分支多个指令流

(MultipleStreams)有两个流水线预取每一个分支情况到单独的流水线采纳合适的流水线多个流水线导致总线和寄存器的竞争延在原先分支判断没有解决之前,可能又有另外的分支指令进入流水线,这需要额外添加指令流预取转移目标

(PrefetchBranchTarget)识别出一个条件分支指令是,除了取此分支指令后的指令外,同时取出转移目标处的指令该目标将被保存至分支指令被执行该方法被IBM360/91所使用循环缓冲器

(LoopBuffer)一个极高速的存储器由流水线取指阶段维护转移发生前,硬件首先检查转移目标是否在缓冲器中适用于小循环或跳转很有效类似一个高速缓存(cache)应用于CRAY-1系统中循环缓冲器示意图分支预测

(BranchPrediction)(1)预测绝不发生

(Predictnevertaken)假设跳转不发生总是预取下一条指令应用于68020和VAX11/780系统如果有可能出现页错误(pagefault),VAX则不会在跳转后预取指令(涉及O/S和CPU设计)预测总是发生

(Predictalwaystaken)假设跳转总是发生总是预取到目标指令分支预测

(2)依操作码预测(PredictbyOpcode)有些指令更容易引起跳转准确率可达75%发生/不发生切换(Taken/Nottakenswitch)根据历史记录预测适用于循环精度可由两级或相关性跳转历史记录修正根据相关性预测(Correlation-based)在合环跳转中(loop-closingbranches),可根据历史记录进行预测在更复杂的结构中,跳转方向和与其相关跳转的方向有相关性同时运用最近的跳转记录分支预测

(3)延迟跳转(DelayedBranch)不到万不得已,不进行跳转需要重新安排指令的顺序分支预测流程图分支预测状态图处理分支指令Intel80486流水线取指(Fetch)指令由Cache或外部存储器取来从两个16字节预取缓冲器中选择一个,将指令放入其中一旦旧数据呗使用,立即用新数据填充缓冲器平均而言,每个缓冲器大约装入5条指令取指阶段的操作独立于其他阶段,以保持预取缓冲器的满载译码阶段1(Decodestage1)操作码和寻址方式信息信息最多只占指令的前三字节可指挥D2阶段获取指令的剩余信息译码阶段2(Decodestage2)将操作码扩展成控制信号控制更复杂寻址方式的计算执行(Execute)ALU运算,访问Cache,更新寄存器写回(Writeback)更新寄存器和状态标志(Flags)将结果送至Cache和总线接口的写缓冲中80486指令流水线例子Pentium4寄存器EFLAGS寄存器控制寄存器MMX寄存器映像(Mapping)MMX使用大量64位数据类型使用3位寄存器地址字段可支持8个MMX寄存器没用MMX专用寄存器使用了异名技术(Aliasing),各浮点寄存器的低64为用来构成8个MMX寄存器MMX寄存器映射到浮点寄存器Pentium中断处理(InterruptProcessing)中断(Interrupts)可屏蔽中断(Maskable)不可屏蔽中断(Nonmaskable)异常(Exceptions)处理器检测的异常程序异常中断向量表(Interruptvectortable)每类中断都指派一个中断号该中断号用于索引中断向量表该表包含256个32位中断向量5类优先级ARM处理器的特征精简指令(RISC)中等规模,结构规整的寄存器组寄存器数量多余大多数CISC机器,少于多数RISC机器数据处理遵循装载/保存模式各种运算只对寄存器中的操作数进行操作定长、格式统一的指令集32位标准指令集,以及16位压缩指令集对源操作数进行位移或循环位移的预处理单独的ALU和位移单元只提供了少数集中寻址模式应用于所有从寄存器和指令地址段装载/保存地址不使用间接寻址或变址寻址自动递增、递减寻址提高程序中循环的操作性所有指令的执行都可带条件,减低了条件分支的使用减少了流水线清空,提高了流水线效率简化的ARM结构示意图ARM处理器组织随着ARM不同版本延伸出很多组织形式数据经由数据总线在处理器和片外存储器之间传递所传递的数据元素有两种类型:装载/保存指令操作的数据项;指取的指令指令先经指令译码器,然后被执行控制单元包括流水线罗技电路,并产生控制信号,送到处理器各个单元数据项放入寄存器文件由一组32位寄存器组成以补码表示的字节或半字数据项通过符号扩展至32位通常有两个源寄存器和一个结果寄存器独立的硬件单元可在做ALU运算之前先做位移或循环位移操作ARM处理器模式用户(User)内核模式(Kernel)6钟模式操作系统可以对系统软件进行定制特定寄存器将用于特定的特别权限模式更加便利的上下文切换异常模式(Exception)有5中特别权限模式当特定异常发生时,即进入对应的异常模式用专用寄存器取代用户模式下的寄存器可以避免系统崩溃特权模式(PrivilegedModes)系统模式(SystemMode)没有异常与用户模式使用相同的寄存器有可能被。。。中断监管模式(Supervisormode)操作系统运行的模式

当处理器碰到一条软件中断指令时,将进入该模式取消模式(Abortmode)出现内存错误时,进入该模式未定义模式(Undefinedmode)当处理器试图执行一条既不呗主要整数处理核也不被协处理器支持的指令时,进入该模式快速中断模式(Fastinterruptmode)当处理器从指定的快速中断源接受一个中断型号时,进入该模式快速中断服务程序不能呗中断快速中断可以中断一个普通的中断服务程序中断模式(Interruptmode)由其他中断源产生的中断信号ARM存储器

组织表 Modes PrivilegedmodesExceptionmodesUserSystemSupervisorAbortUndefinedInterruptFastInterruptR0R0R0R0R0R0R0R1R1R1R1R1R1R1R2R2R2R2R2R2R2R3R3R3R3R3R3R3R4R4R4R4R4R4R4R5R5R5R5R5R5R5R6R6R6R6R6R6R6R7R7R7R7R7R7R7R8R8R8R8R8R8R8_fiqR9R9R9R9R9R9R9_fiqR10R10R10R10R10R10R10_fiqR11R11R11R11R11R11R11_fiqR12R12R12R12R12R12R12_fiqR13(SP)R13(SP)R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14(LR)R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)CPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM寄存器组织总计有37个32位处理器31个通用寄存器有一些寄存器有专门用途

温馨提示

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

评论

0/150

提交评论