第6章-中央处理器2-硬布线和流水线.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章-中央处理器2-硬布线和流水线.ppt

4. 指令预取和乱序执行 指令预取:提前从存储器取出指令,暂存在CPU的指令预取部件中;指令取出后可预先分析,可提前取出该指令所需的操作数。 这样,当指令进入流水线后,取指和取数都在CPU内部进行,提高了速度。 乱序执行:对取出的指令预分析,CPU将多条指令不按程序规定的顺序执行(无数据相关、硬件有空) 6.6.1 RISC的CPU 本节主要以 Sun 微系统公司的 SPARC 结构为例来说明CPU(RISC)的构成,并进一步讲述一些基本原理。 SPARC 指令系统已在第5章中介绍过。 在RISC机的指令系统已确定的前提下,为了达到高速运算的目的,在硬件实施方面采取流水线组织尽量使大多数指令在一个机器周期内完成,并尽量缩短机器周期时间。 6.6 CPU举例 图6.30是Fujitsu 公司于1989年生产的基于 SPARC 的MB86901芯片的逻辑框图,主频为25MHz。 图6.30的右半部分基本上是运算器,左半部分为控制器。中间有4个专用寄存器。 1. SPARC 的逻辑图 图6.30 MB86901 逻辑框图 Y寄存器用来配合进行乘法运算 TBR 提供中断程序入口地址的高位部分 PSR 为程序状态寄存器 WIM 中存放与寄存器组有关的窗口寄存器编号 流水线上三条指令的地址 四级流水线:四条指令同时执行(最后一条正从存储器取) 指令缓冲寄存器 对齐电路:字节、半字等在寄存器中靠低位存放(存储器只是边界对准的) 与存储器交换数据通过结果寄存器 PSR为程序状态寄存器,共有32位 31 28 27 24 23 20 19 14 13 12 11 8 7 6 5 4 0 IMPL ver N Z V C 保留 EC EF PIL S PS ET CWP IMPL和ver在某些SPARC芯片中恒为0 EC:是否有协处理器 EF:是否有浮点处理器 PIL:当前处理器中断级别(高于此级别中断才响应) S:管理方式(系统方式、特权指令)还是用户方式 PS:产生陷阱Trap时,保存以前的S值 ET:是否允许响应中断 CWP:当前窗口寄存器,current window pointer 据统计,在CISC中,当程序运行时,访问存储器的指令占总数一半以上(有时达70%),增加寄存器数可减少访存次数。 如对于调用(Call)和返回(Return)指令,SPARC 利用寄存器组而不是存储器(堆栈)来完成上述的传递参数和保留、恢复现场工作,并采用改变窗口指针的办法而省略了在寄存器之间传送的操作,因此使速度大为加快。 2. RISC 的通用寄存器 CPU内存在的实际寄存器又称为物理寄存器(如MB86901的120个寄存器)。SPARC 机指令的寄存器地址码字段长度为5位,允许访问32个寄存器,称之为逻辑寄存器。 计算机运行时,有些数据是整个程序都要用到的,称为全局数据。有些数据限于当前程序段所用(类似 PASCAL 程序中的过程或函数)称为局部数据;同样,所有程序段都能访问的寄存器称为全局寄存器,限于一个程序段所用的寄存器称为局部寄存器。 SPARC 机将32个逻辑寄存器分成两部分:其中8个称为全局寄存器 (逻辑地址0~7),和其余24个寄存器(逻辑地址8~31)组成一个窗口(window)。 SPARC允许设置6~32个窗口,MB86901的寄存器组内有120个寄存器,分成7个窗口。 有一个指针指出当前程序所访问的窗口号,在指令地址所指出的32个逻辑寄存器中: r[0]~r[7]为全局寄存器 r[8]~r[31]为一个窗口中的其他24个寄存器 分成: 输入 ins(r[24]~r[31]) 局部 locals(r[16]~r[23]) 输出 outs (r[8]~r[15]) 图6.31 寄存器窗口过程调用 A、B、C过程调用时,通过重叠寄存器传递参数(平均16个寄存器) 表6.5 重叠寄存器窗口的物理寄存器分配 过程 逻辑寄存器 物理寄存器 A r[8]~r[31] r[40]~r[63] B r[8]~r[31] r[24]~r[47] C r[8]~r[31] r[8]~r[31] MB86901有7个窗口(16?7+8=120),由CWP(current window pointer)记录当前程序所用的窗口。 窗口不够用时,按先进先出原则,将保存时间最长的一个窗口(用WIM指示)的内容调入内存保存。 所谓流水线实际上是将一条指令的实现过程分成时间上大体相等的几个阶段,然后使几条指令的不同阶段在时间上重叠起来进行。 1) 取指、译码、执行等操作所需时间的分析 (1)取指时间。对所有指令、取指操作的实现是相同的。

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档