1 第一遍系统 2 第二遍 看讲义 3 听讲义 听这个提前想到要将什么 4 开始做试题 5 查看效果(针对性复习) 第三讲 计算机组成和系统机构 1 考点分析 2 高速缓冲存储器 3 流水线 4 数制 5 内存编址方法 6 计算机的分类 7 并行计算问题 1 考点分析 Cache 五星级(地址影像方式) 流水线 五星级(流水线的效率,吞吐率,加速比计算问题) 磁盘调度(磁盘的平均询盘时间) 数制 三星级(八进制,十六进制,十进制之间的转换关系) 内存编地址 Flynn分类 并行计算 四星级(考察并行处理器的基本功能,网络互连的几种方式) 2 高速缓冲存储器(Cache,基本概念,作用,特征,命中率,地址影像方式,绝大数试题在地址影像
方面) a 为了确保能够获得尽可能高的存储速率,并且保持较低的成本,计算机采用多级存储器体系,包括
: 寄存器、Cache、主存储器、磁盘存储器、光盘存储器、磁带存储器等 b 存储器中常用的存取方式有顺序存取、直接存取、随机存取和相连存取等四种 顺序存储方式是指存储器的数据以纪录的形式进行组织,对数据的访问必须按特定的线性顺序进行。
比如:磁带 直接存储与顺序存储有点相似,也是使用一个共享的读写装置,对所有的数据进行访问,每个数据块
都拥有唯一的地址标识, 读写装置直接移动到目的块的所在位置,进行访问,直接存储的存储时间也是可变的。磁盘存储器采
用直接存储 随机存储器的每一个可寻址单元, 都具有自己唯一的地址,和读写装置。相同可以在相同的时间内
对任一个存储单元进行访问 ,而在访问这个单元的时候与访问序列没有任何的关系。在多级存储器体
系中,主存储器采用的是随机存储 随机存储方式是根据地址进行读写的 相联存储也是一种特殊的随机存储,选择某一单元进行读写,取决于其内容而不是地址 相联存储方式是根据其内容进行读写的。它跟普通的随机存储方式一样,每个单元都有自己的读写装
置。读写时间通常也是一 个常数。 使用相联存储可以对存储单元的所有特定例进行比较,选择服务了解的单元进行访问,在多级存储器
体系中Cache使用的是相 连存储的方式,主要是为了提高地址影像的速度。(相联存储) c 存储器的性能主要由存取时间、存储器带宽、存储器周期和数据传输率等来衡量。 存储器周期和存储器时间是相关的,存储器周期包括了存储时间,也包括了延迟和其它的事情,
也包括查找时间。 存取时间只是包括读一个数和写一个数,不包括移动查找等过程。 高级缓冲存储器 2. Cache的概念 Cache的功能,提高CPU数据输入输出的速率,突破所谓的“冯.诺依曼瓶颈”,即CPU与存储系
统间数据传送带块限制 通常是CPU较快,但是存储的时间慢些,这个就是冯.诺依曼瓶颈 Cache能够以极高的速率进行数据的访问 既然Cache的存储速率这么高,这么快,为什么还要采用普通的存储器,而不都采用Cache?这
个主要是应为Cache的价格比较昂贵,如果计算机的主存储器全部由这种高速存储器进行组成的话,则
会大大增加计算机的成本。 因此通常的做法是在CPU和主存储器之间,设置小容量的高速存储器,就是Cache。Cache的容量
小,但是速度快,主存储器速度较低,但是容量大,只要通过一些优化的标准算法,系统的性能就会大
大的得到改善。就相当于存储器的容量与主存相当,而访问速度与Cache相同。 在计算机的存储系统体系中,Cache是访问速度最快的层次。 使用Cache改善系统性能的依据是程序的局部性原理。 程序的局部性原理包括:时间局部性和空间局部性 有关局部性的问题,会在操作系统一讲中详细的讲到。 根据局部性原理,把存储器系统中访问概率高的内容存放在Cache当中,当CPU需要读取数据时,
首先在Cache中查找是否有所需内容,如果有直接从Cache中读取,如果没有再从主存中读取该数据。
在读取的同时,送往CPU和Cache。如果CPU访问的内容大都在Cache中找到,则可以大大提供系统的
性能。 3 命中率相关的问题 我们把CPU能够在Cache中找到相关的内容, 叫做命中。找不到则叫做不命中,未命中或失效。 在考试当中通常考的一个问题就是命中率的问题 如果以h代表对Cache的访问命中率,t1表示Cache的周期时间,t2表示主存储器的周期时间,以读
操作为例,使用“Cache+主存储器”的系统的平均周期为t3,则 t3=t1Xh+(1-h)Xt2 其中,(1-h)又称为失效率,未命中率 例如:假设Cache的存取速度是主存存取速度的10倍,则命中率可达到0.8,则CPU对该存储系统的
平均周期为 t3=0.8X(t2/10)+0.2Xt2=0.28t2; t2是主存储器的周期 在我们通常使用的PC机当中采用的是两级的Cache结构,在CPU类有一级,在主板上也有一级,只
是在CUP上有Cache,在主板上也有Cache,在CPU里面的Cache容量小,但是速度快,主板上的稍微
大一些,在实际使用当中,也可以把它区分为指令Cache和数字Cache两部分,就像上面讲的有一些
Cache是不需要取数据的,因此可以把它分为指令Cache和数据Cache两部分,指令Cache不需要写操
作,只需要读,管理起来就更加方便,在这一种Cache当中有一种误解,两级Cache一级是用来放系统
程序的,另一级是用来放应用程序的,这是错误的,它有两级,一级是在CUP上面,一级是在主板上面
,只是容量小,大小的问题和速度快慢的问题,并不能区分放什么程序, 有一种指令系统,五分之一需要取数据,五分之四不需要取数据,同样的一个Cache命中率情况,
则 CPU对该存储系统的平均存取周期: 也就是说五分之五需要取指令,五分之一需要取数据,再乘一个比例,能够得到一个总的存储周期 指令Cache不需要写操作 4 Cache淘汰算法 Cache的容量一般比较小,而如果你的程序比较大的话,他不可能把程序数据,指令一次性的全部
调入Cache, 只能调入一部分,那么一部分一部分的放,就形成一个替换的问题,替换就叫做淘汰。 当Cache存储器产生了一次访问未命中之后,响应的数据应同时读入CPU和Cache。 这样新读入的数据淘汰原来已经有的数据,所使用的方法就是淘汰算法。先进先出算法,比较容易实
现, 系统开销比较少,但是它不一定合理,因为有些内容虽然调入Cache的时间比较早,可能当前正在使
用,如果换出去的话,可能又要马上掉进来, 最常用的算法有:先进先出算法和近期最少使用算法 先进先出算法:当需要替换时,总是淘汰最先调入Cache的页面内容。 先进先出算法,也简称为FIFO,按照调入Cache的先后,来决定淘汰Cache的顺序。也就是说在需要
更新Cache 的页面内容时,是淘汰最先调入Cache的页面内容, 第二种淘汰算法 近期最少使用算法:当需要替换时,将在最近的一段时间内使用最少的页面内容替换掉 近期最少使用算法简称:LRU,使用LRU算法,系统调入Cache的每一个页,建立一个目录,按照某
种方法记录他们的调用情况,当需要替换时,将在最近一段时间内使用最少的页面内容替换掉 假设某个Cache有三页,组成的页面分别是3,1,2,当在第四页进来的时候,按照先进先出算法,那么
就应该把第三页淘汰掉,因为第三页是最早进来的。如果使用的是近期最少使用算法,就需要知道在这
段时间内哪个页面使用的次数最小,就把哪个页面淘汰掉,例如第一个页面使用了一次,第二个页面使
用了三次,第三个页面使用了四次,那么就把第一个页面淘汰掉。哪个使用次数最少,就把哪个淘汰掉
。最近是计算机最贴近的一段时间,而不是整个计算机总的使用的次数,而是当前使用的次数,在操作
系统一讲当中,会根据例子具体来讲解这个问题,无论是存储器的淘汰算法还是Cache的淘汰算法,或
者序列存储器淘汰算法,或者是作业的淘汰算法,都是相类似的,都是这几种方式,在Cache里面,我
们并不强调一个Cache算法的掌握,而是放在操作系统的作业调度里面进行讲解 这两种算法的比较而言,近期最少使用算法或叫LRU算法,它是按照标准的频度来决定淘汰顺序的
,相对而言,它比较合理,这种算法能够使Cache的访问命中率提高,因此LRU算法使用的比较多,但
是与先进先出相比,它的实现比较复杂一些,同时系统开销比较大一些。 5 Cache的读写过程 写直达:当要写Cache时,数据同时写回主存储器,有时也称为写通。 写回:CPU修改Cache的某一行之后,响应的数据并不立即写入主存储器单位。而是当该行被Cache
中淘汰时,才能把数据写入主存储器。 标记法:对Cache中每一个数据设置一个有效位 Cache的读操作比较简单,在访存时(也就是访问类型时,访问组成时),一方面将主存地址设主
存,启动主主存,同时将主存地址送Cache,按照所用的映像方式从中提取Cache地址(有关映像方式
我们会在后面详细的讲解),这是按照映像方式从这里面进行提取Cache地址,例如1号和页数地址的,
从页中读取内容,并加响应的Cache标志,将Cache中的标志和主存页中的Cache进行比较,如果两者
相同,就表示访问Cache命中,将取出数据送往缓存源(就是谁要的送给谁),这样不用等主缓存结束
,就可以进行下一次缓存的操作,这样的读操作相对起来比较简单。如果两个标记不符合的话,或者是
按照映像方式查找完毕,任然没有找到相符合的Cache标志,这个表明本次访问Cache失败,或者将未
命中,这个时候就要从主存中读取数据,供缓存源就行使用,第二个依据某种算法,考虑是否更新
Cache某页的内容,这个算法就是我们所将的使用的淘汰算法,在Cache中因为需要保证在缓冲中
Cache中的数据,于主存的内容相一致,因此相对于读操作而言,而写操作就比较复杂,通常由三种方
式: 第一种方式 写直达 当要写Cache时,数据同时写回主存储器,有时候也称为写通 第二种方式 写回 CPU修改Cache的某一行后,响应的数据并不立即写入主存储器单元。而是当改行被从Cache中淘汰
的时候,才把数据写入主存储器。 第三种方式 标记法 对Cache中的每一个数据设置一个有效位,当数据进入Cache后,有效位就置1,而当CPU对该数据
进行修改时,数据只需写入主存储器,并同时将该有效位清0,当从Cache中读取数据时,就需要确认这
个有效位是0还是1,如果是1的话就表明没有修改,直接读就可以了,如果是零,就表示该数据已经修
改过了,需要从主存中重新读取,而不是从Cache中读。 6 Cache中考试最多的就是地址映像 有关地址映像比较复杂,考生也经常出错。 什么叫做地址映像呢?当CPU发出缓冲请求后,存储器地址先被送到Cache存储器,以确定所需数
据是否已在Cache当中,如果命中,则直接从Cache中进行访问,这个过程就称为Cache的地址映像,
有些地方也叫做地址映射。 常见的映像方法有直接映像,相联映像和组相映像 地址映像是将主存与Cache的存储空间划分成若干大小相同的页(或块)。 例如某计算机的主存储容量为1GB,划分为2048页,每页512MKB,Cache的容量为8MB,划分为
16页,每页512KB。 Cache中每一页的容量和主存中每一页的能量是相等的。应为后面我们在讲三种映像方式的时候,
都是基于这个例子,所以请大家,对于这个例子,用笔记一下,以便于后面的理解。 7 映像方式:直接映像 直接映像:这种方式,是种随机方式存储的存储器最为Cache存储器。硬件电路比较简单,在进
行映射时,主存地址分为三个部分,从高到低依次为:高位地址标识符,页号,以及页内地址,其中高
位地址表示符,也叫做主存主耗,也就是主存储器的主耗,简称主存主耗,或者主存标记,512KB的容
量,用19位才能表示出来,(2的10次方是1024),页数2048页,需要用11位来表示,2的11次方等于
2048,在这11位当中,其中4位表示Cache的页号,为什么用4位表示Cache的页号呢?应为我们前面讲
了Cache一共有16页,所以需要用4位来表示,剩下的7位是主存中的标记,在直接映像方式当中,可以
将存中16页的内容直接复制到Cache中,但是每个主存页只能复制到某一个固定的Cache页面当中 ,下面会讲到,它是按照什么规律就行映射的 在这个映像方式当中,将主存的2048页划分为128组,每一组16页,每一组16页是跟Cache的页数是
相同的,Cache有多少页,那么每一组就有多少页,在这个主存的每一个16页当中,和Cache的16页直接
映像,这种映像是以16为模的重复映像关系,什么叫做以16为模呢,主存的第0页,第16页,还有那个
第2032页,第一页,第17页,第33页,一次类推到2033页,这128个页只能映像到Cache的第1页,主
存的第15页,第31页,还有第2047页,只能映射到Cache的第15页当中,这里就看到主存标志有什么
用了,是看到有哪几个组。第0页,第16页,第2032页都可以放到Cache的第0页,当时究竟当前在
Cache中究竟放的是那一页呢?所以需要一个标记来表示,Cache中存放的当前是哪个组,假设这个标
志表示的是第一组,那么这个Cache中放置的就应该是主存中,第16页的内容。那么直接映像方式的过
程是什么呢? 既然我们这个例子当中,主存是1GB,那么主存地址应该是30,用30位来表示,30位的主存地址才能表示
1GB的内存空间。 所以当程序要访问内存时,他就给出30位的地址,其中高11位给出的是主存的页号,第19位给出的是页
内地址,为了实现和Cache之间的地址映像,需要把高11位分作两块,其中高7位是主存地址,标记这
一页的内容来自主存中哪一个组,低4位标记Cache的页号,表示选择16页当中的某一页,这样30位的
主存地址就转换为23位的Cache地址,Cache的7位,标记当前的页面内容来自主存中的哪一个组,
Cache中的第1页放置的是主存中第17页的内容,那么这里的主存标志就应该是1 ,因此当程序访问内存
时,只需要比较主存地址中高7位的标记,与对应Cache页中的标记进行比较,如果标记相同,则表明需
要访问的主存的内容在应经在对应的Cache页当中,当时如果不同的话,就表示没有。那么通过上面的
介绍,我们就知道了,直接映像方式是一种多对一的映像方式,对应的Cache中的页与主存中的128页
相对应,那么通过上面的介绍,直接映像方式的优点,是比较容易实现,缺点就是不够灵活,如论如何
不能使Cache的存储空间得到灵活的运用。 这么说吧,打个比方,我们需要把主存中的第一页和第17页同事复制到Cache当中,那么这个时候就有
问题了,因为这两页都只能复制到Cache的第一页当中,即使其它的页面空闲,也不能同时读到Cache
当中,使Cache的空间不能得到充分的利用。 8 映像方式:全相联映像方式 全相联映像方式是使用相联存储器组成的Cache存储器。 我们前面将的直接映像采用的是随机存储方式 在全相联映像方式中,主存的每一页可以映像到Cache的任一页,如果淘汰Cache中某一页的内容,
则可调入另一主存页的内容,因此与直接映像相比,这种方式比较灵活,在全相联映像方式当中,主存
地址分为两个部分,分别为地址部分和数据部分,地址部分也称为主存页标记,数据部分分为页内地址
。数据部分用来存放数据,地址部分用来存放该数据的存储器地址,主存的页每页是512KB,主存的页
数是19位,始终保持不变,剩下的11位作为主存页标记,按照刚才所讲的全相连的映像方式: 主存的第0页可以映像到Cache的0页,第1页,第15页,第一页也是一样,可以映像到Cache的第0页,
第1页,第15页,这是一个多对多的映像方式,那么这种方式怎么来实现的,因为Cache的每一页可以
映射到主存器当中2048页的中的任何一页,所以每一页的Cache的标志页需要11位,用这一种标志来表
明他现在所映像的主存的页号,用这种方式的话,Cache的标志位置就增加了4位,然后比较11位,比
较的逻辑成本将会增加,前面的直接映像方式只是需要比较7为,这样的话比较的逻辑成本将会大大增加
。 在全相联映像方式当中,主存地址不能直接提取Cache的页号,而是需要将主存页标记与Cache各页的
标记逐个比较,直到找到标记符合的页,这就是命中了,如果全部比较完毕,仍然没有找到,这种映像
方式速度很慢几乎失去了高速缓存的作用,这是全相联映像方式的最大接触点。它要一页一页的比较,
速度很慢的。但是如何进行改进的话,可以让主存页标记和Cache页标记同时进行比较,并行的,这样
下来速度是提高了,但是成本比较高,所以他的实现段落比较难以设计,所以只适用于小容量的Cache
。 第三种映像方式 组相联映像方式,有些书籍又把它叫做页组映像 这种映像是介于直接映像和全相联映像方式之间,是两种映像方式的最终解决方案。 在全相联映像方式当中是以页为单位,可自由映像没有直接的对应关系,在直接映像
方式当中,主存是分组,主存组内的对应于Cache页之间采用的是固定的映像方式,但是各组均可映射
到Cache当中,但在组相联映像当中,主存与Cache都分组,主存中每组的页数与Cache的分组数相同
,这是他最大的特点,主存中每组的页数与Cache的分组数相同,例如在我们这个例子当中,Cache分
成8组,因此主存中每组的页数就是8页,主存每一组的页数与Cache每一组的页数相同,这样以来它的
地址组成方式就是这样子了 主存页标记 8 位 页内地址 7位+1位 组内标志 Cache组号 3 组内页号 1 Cache组号 组内页号 页内地址 共 3+1+19=23位 组成Cache 主存页标记就是主存的组号,Cache的每一页都有标记,如果Cache的第一页,复制了主存中第九页的
内容, 则在其标志中写入1,因此在访存时需要根据主存地址的中间两端,一共四位找到Cache页,并将其标志
与主存页标记进行比较,看起是否是主存第九页的一个副本,也就是反问是否命中。在此图中,如果
Cache的每一组只有一页,组相联映像方式就变成了直接映像方式,如果Cache中每一组页数是16页,
那么就变成了全相联映像方式,因此在具体设计组相联映像时,根据设计目标选一个折中的值,就是
Cache中可以分多少组。在组相联映像方式中如果每一组有若干可供选择的页,因此在映像定义方面它
比直接映像方式较灵活,每一组的页数有限,一次付出的代价也不是很大,我们可以根据设计目标选择
组内的页数,前面我们已经讲了高速缓冲存储区Cache的页面内容。其中关于Cache的命中率和地址映
像方式是考生必须要掌握的内容。特别是组相联映像方式,几乎每次都考试,关键的是要把每一种映像
方式,组成,地址组成,组成的结构,分几个段,每一个段的几位,代表什么意思,弄清楚。同时要弄
清楚主存和Cache之间它的一个对应的关系,给出一个主存地址以后,它是如何来找到Cache页的,就
是如何的判别式命中还是没有命中,这些信息是必要要掌握的。 ------------------------------------------------------------------------------------------------- (关于三种映射的地址图和如何命中必须要掌握?看来还是薄弱,需要加强,特别是组相联映像方式,
组成,地址组成,组成结构,分几个段,每一个段代表几位,代表什么意思,要弄清楚同时要弄清楚主
存和Cache之间它的一个对应的关系,给出一个主存地址以后,它是如何来找到Cache页的,就是如何
的判别式命中还是没有命中,这些信息是必要要掌握的。6个图)-- ------------------------------------------------------------------------------------------------------- 流水线 上一节当中我们讲了高速缓冲存储器的一些问题,下面我们讲流水线这个考点 从历年考试试题来看,流水线几乎是必考的内容。主要考察流水线的效率,吞吐率,加速比等计算性试
题 1 流水线的概念 流水线技术把一个任务分解为若干任务顺序执行的指令,不同的指令有不同的执行结构负责执行,而
这些结构可以同时并行工作,任一时刻,任一任务只占用一个执行结构,这样就可以实现多个任务的重
叠执行,以提高工作效率。在计算机系统中,一般存在两种流水线,指令流水线和运算操作流水线。指
令流水线是指计算机当中一条指令的执行需要若干部,通常采用流水线技术来实现指令的进行以提高
CPU的性能。典型的指令执行可以分为7个阶段,分别是计算指令地址,修改程序寄存器,第二个部分是
取址,也就是指从存储器当中取出指令,第三个阶段是指令一把,接下来是计算操作数的地址,然后取
操作数,然后是执行指令和保存结果。通常的一个指令执行的话,可以分为这7个阶段,或者说是七个步
骤。对指令执行阶段的划分。也可以把识址作为第一阶段,其它阶段顺序前移,而在最后一个阶段执行
下一条指令的地址。而我们刚才讲的就是计算机记数,把最后一个地址放在最后,这个都关系不大。我
们假设指令执行各个阶段的时间都是相同,都是一个周期,那么执行一条指令就需要花费七个周期的时
间。如果采用流水线技术,那么在满负荷时,每个周期都能从流水线上完成一条指令,性能改善结果可
以是原来的七倍,在实际上流水线技术对于性能的提高,它的程度取决于执行顺序中最慢的一个。也就
是说在这个例子里面,指令执行需要7个阶段,如果访问存储器需要四个周期,而其它操作只是需要一个
周期,而执行一条指令需要需要访问内存三次,再加上四个单周期的执行段,所以一共需要16个周期,
那么为什么访问需要三次呢,一个是读指令一个是读操作数,一个是保存结果。这三次都要与内存有关
系。这样以来,采用了流水线以后,由于受限于访问内存的操作,要四个周期才能完成一条指令的执行
,因此性能提高到原来的四倍,而不是7被,所以说提高7被是一种理想的状态,在实际操作当中,要看
哪一个步骤最慢,通常就以最慢的那个步骤为标准。 指令流水线:计算机一条指令的执行需要若干步,通常采用流水线技术来实现指令的执行,以提高CPU
性能 运算操作流水线:计算机在执行各种运算操作时也可以应用流水线技术来提高运算速度。 例如执行浮点加法运算,我们可以把它分为三个阶段,这三个阶段可以使对接,尾数相加和结构规格化
。 对接---锁存器---尾数计算--锁存器---结果格式化--锁存器 运算操作流水线的三个阶段被锁存器进行分割,那么锁存器起什么作用呢?它主要是用来在相邻两段之
间,保持处理的中间结果,供下一阶段使用。这样在系统满负荷时,这条流水线可以同时处理三条,浮
点加法指令。 这是在计算机当中普遍存在的两种流水线:指令流水线和运算操作流水线。 另外还有一个概念就是静态流水线:静态流水线的定义是指,在某一个时间内,各段指令按照一种功能
连接流水线,只有当流水线全部停空后,才能以按照另外一种功能连接流水线。按照功能来划分,在某
一个时间段内,只能执行某一种功能,我们把这一种流水线称为静态流水线。 2 流水线阻塞 影响流水线的性能和一些因素,并非总是在理性状态下运行 根据前面的知识,我们知道,流水线的关键之处在于,重叠执行。为了得到比较高的性能表现,流水线
要满负荷的进行工作。也就是说它的各个阶段都要同时并行的工作,但是这是一种理想,在实际情况中
,流水线各个阶段可能会相互影响,阻塞流水线,使流水线的整体性能下降。 阻塞流水线主要由三种方式引起 1 转移指令的影响 2 共享资源访问冲突 3 中断系统 那么首先看转移指令的影响,首先看顺序执行指令的情况,当CPU取一条指令时,流水线的地址它的计
算步骤可以独立的把当前程序计数器的值和PC的值加上当前指令长度来计算下一条指令的地址,从而可
以并行的工作,当时当流水线执行一条转移执行时,这会引起流水线的阻塞,因为在转移指令中,流水
线未执行完之前,都不能计算出流水线下一条流水线的地址,所以为了保证指令的正确执行,必须把计
算机取指令的阶段和指令地址计算的阶段要进行互锁。在取出转移指令后,要记录锁定指令地址计算段
,直到转移指令运算完成。互锁阶段那个时候流水线处于一个等待状态,不能满负荷的工作,因此性能
下降。那么为了解决这个问题,有些计算机采用猜测法,一旦计算机发现条件转移指令,系统猜测可能
要转到的语句,如果猜测正确,则流水线正常运行。如果猜测错误,则需要清空当前流水线的内容。 还有一种方法就是需要编译系统的支持 程序本身的执行 是 否 A -----A------ | B C ----D---- | | 是| |否 ------D------ B--------------------C | | | 吮吸 | 程序本身的执行顺序 优化后的执行顺序 优化的条件是 D的执行不需要B,C的结果,即D对B,C没有依赖性。如果D的执行依赖于B,C就不行了,有
人做过统计,50%的条件转移指令,都可以按照上面的方法进行优化。转移指定对流水线的影响,以及
其解决办法。 共享资源的访问冲突 当多条指令以流水线方式重叠执行时,那么可能会引起共享的寄存器或存储器资源访问次数的变化,
将导致冲突,这种情况,有些人参与了复习,有些人数组相关,如果相邻的两条指令都被同一个资源进
行操作时,那么前一条指令的输出,是后一条指令的输入,或者相邻的指令使用的相同的寄存器,在没
有流水线情况下都是正常的,但是如果使用流水线就有可能出现错误,打个比方,前一条指令是写,后
一条指令是读,当前一条指令保存结果没有完成时,后一条指令的读操作数就已经开始,这样后一条指
令读到的就是没有修改过的数据,因此会出错,这种出错的原因是公用了一个存储单元,一个是往这个
单元中写数据,一个是往这个单元中读数据,把这种因素都称作共享资源访问冲突。为了避免这种冲突
,就需要把相互有关的指令进行堵塞,指令流水线,基数越多,越容易导致数据相关,堵塞流水线,也
可以在编译系统上进行设置,当发现相同的语句存在共享资源冲突的时候,在两者之间插入其它语句,
将两条指令就流水线的存储时间拉开 第三种造成流水线冲突是中断系统 也就是说当中断发生时,和转移指令类似,流水线也不得不停止,因为这个时候要载入中断处理程序, 在计算机系统当中,有于中断在其它方面的很多优点,所以说这种影响是不可避免的,那么流水线响应
中断主要有两种方式,一种方式是当中断发生时,立即停止现有的流水线,这种方式成为”精确端点法
“。这种方式能够立即响应中断。缩短了中断响应时间,但是增加了CPU的硬件复杂度。另外一种方式
就是在中断发生时,在流水线的指令继续执行,停止流水线的路口,这种方式中断响应时间比较长,这
种方式我们把它称为”不精确端点法“不精确断点法与精确断点法相比,它的优点是实现控制比较简单 这里讲了影响流水线堵塞的三个因素 在这些因素当中有各种文献讲的并不一样, 需要理解三个因素所包含的实质内容,例如也有把中断系统的影响称之为转移指令,因为中断发生的时
候,载入的是中断处理程序,本身上也是一种转移,也有文献把寄存器的影响专门列为一个因素,而我
们讲的寄存器的影响属于共享资源访问冲突,不管你是共享了寄存器还是共享了存储单元或者其它的东
西,统称为共享资源访问冲突。这是因为有这些区别,考生在做选择题的时候,要看清楚试题所给的选
项,而不要硬搬我们所讲的三个因素,而是要理解这三个因素所包含的实质内容。 在流水线机器中,指令相关,主存操作数相关,通用寄存器组的操作数相关,以及编制寄存器编制寄存
池相关,这些都是局部性相关。在具体对局部性相关进行处理时,先写后读相关,先读后写相关和写写
相关,都是控制机构能处理的局部性相关的内容,所以共享资源这一块都数据局部性相关。而转移指定
的相关对流水线的效率和吞吐量造成的影响比局部性相关要严重的多,因此把它称为全局性相关。 这里引出两个概念一个是全局性相关,一个是局部性相关。 转移指令属于全局性相关,共享资源访问冲突属于局部性相关。 对于全局性相关进行处理时,我们采用的方法是猜测法:加快和提前形成条件码,加快短循环程序的执
行,转移指令延迟执行的,而设置相关通用通道,是对局部性相关进行处理时所采用的一种措施,对于
全局性相关有猜测法,加快和提前形成条件码,加快短循环程序的执行,转移指令延迟执行,而对局部
性相关所采用的方式,设置相关的专用通道。这是第二个问题,流水线堵塞的问题 3 下面主要是计算性的试题,流水线的效率和吞吐率 流水线的吞吐率 流水线的吞吐率(Though Put rate,TP)是指单位时间内流水线所完成的任务数量或输出的结果数
量。 计算流水线吞吐率的最基本的公式如下: n TP=---- Tk 其中n为任务数,Tk是处理完成n个任务所用的时间 吞吐率有时候也称为平均吞吐率,或者时间吞吐率,指的都是同一个名词。 计算流水线吞吐率的最基本的公式就是上面的那个公式。 下面的这个问题是如何求出Tk因为那个任务数是确定的。 那么要完成n个任务通常需要多少时间呢? 考虑流水线各段执行时间均相等的情况下 流水线的对打吞吐率等于时算周期的倒数 流水线的最大吞吐率与实践吞吐率与最大吞吐率的关系 3 流水线的加速比 在流水线中因为在同一时刻,多个任务在重叠的执行,虽然完成一个任务的时间与单独完成这个任务相
近(就单个任务而言,可能使用流水线所消耗的时间比不使用流水线所消耗的时间还要多,为什么还要
多呢,因为流水线设置了分段,其结果要让锁存器保存起来,它可能会多,这只是一个任务而言),但
是如果是很多个任务从整体上来看,使用流水线技术完成多个任务的时间大大的减少,那么什么是流水
线的加速比呢? 完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称之为加速比。如果不使用
流水线所用的时间是T1,使用流水线技术所用的时间是T2,那么 S=T1/T2 我们先考虑,流水线各个流水段的执行时间都相等的情况下 一条K段流水线,完成n个任务,所需要的时间为(k+n-1)t,如果不使用流水线,完成n个任务所需的时
间为nkt,则流水线的加速比为nk/(n+k-1),最大的最大加速比就是指流水线的段数,k. 在n远远大于k的时候,各段流水线的执行时间均相等的情况下,流水线的最大加速比等于流水线的段数
。 这是我们假设了流水线各个执行时间相等,但是如果执行时间不相等呢,根据前面的公司,我们可以类
推: T1,T2,T3,T4.........哪一段时间执行最慢的,就称为流水线的瓶颈时间。 例如流水线的浮点加法器分5级,若每一级所需要的时间分别是6ns,7ns,8ns,9ns和6ns,则其加速比为 s=(6+7+8+9+6)/(6+7+8+9+6)+(n-1)X9=36n/36+(n-1)X9=4n/4+n-1, 因此其做大加速比为4, 流水线的最大加速比等于流水线的段数是有一个前提条件的,就是流水线的每一段或者每一级所执行的
时间相等。 在我们这个例子当中每一级所执行的时间不相等,对于这类试题的话,我们也可以采用另外一种简单的
方式 3 接下来我们再看流水线的效率 流水线的效率是指流水线的设备利用率。在时空图上,流水线的效率定义为n个任务占用的时空区,与
K个流水段总的时空区之比。 因此计算流水线效率的公式为: E=n个任务所占用的时空区/K个流水线的总的时空区 流水线的效率包括时间和空间两方面的因素,n个任务所占用的时空区就是顺序执行n个任务所花费的
时间T0,而K段流水线完成n个任务所需要的总的时空区为KTK(Tk是流水线完成n个任务所需要的时间)
, 如果流水线各段执行时间均相等的情况下: 流水线的效率=nkt/k(n+k-1)t=n/(n+k-1); 流水线最大的效率1 ; 也就相当于流水线的各段均处于忙碌状态,没空闲,效率是最高的。 这里我们讲了流水线的计算的问题 特意讲了他的吞吐率,和加速比,那么我们可以比较这些公司,以及他们之间的关系。 流水线的效率等于吞吐率X实用周期,当实用周期保持不变,流水线的效率和吞吐率是成正比的关系,
也就是说为了提高流水线的效率,所采取的措施,同时也提高了流水线的效率,同时也提高了流水线的
吞吐率。 流水线的效率和加速比的关系 下面我么看效率和加速比的关系 由计算效率的公式和计算加速比的公式进行计算: E=S/K E是流水线的效率,S是流水线的加速比,K是流水线的段数 当然在计算一条实际流水线的效率时,往往还要考虑,流水线各段所使用的设备量不相等,或者各段的
价格不相等的情况下,对于可能出现的每一个流水线的设备量或流水线的价格不等的情况下,我们应根
据每段所用的设备量和设备价格在总设备中所占的比例,分别赋予不同的权值 注意各种公式的使用场合。流水线的各种计算公式当中都是以线性流水线为列,所谓的线性流水线就是
指系统当中只是存在一条流水线,如果系统当中存在多条流水线,那么就需要进行变通处理,我们打个
比方,如果一条指令,有取值,分析和执行三个子部件完成,并且每个子部件时间都是t,如果采用常规
的,标量单流水线处理器,这条流水线的度为1就是采用单条流水线,如果是两条流水线就是度为2,连续
执行12条指令,更具我们前面所将的,它的总的时间是(n+k-1)t,在这里n=12,k=3,因此总的执行时间
是(12+3-1)t,所以结果是14t,这是采用单流水线的处理器,如果采用度为4的超标量流水,就是同时存
在四条流水线,那么连续执行12条指令,每条流水线只需要执行三条指令,公式依旧不变,但是此时n
不再是12,而是3,因为这是12条指令在4条流水线上执行,每条流水线实际上是执行了三条指令,所以
结果是(3+3-1)t,结果是5t,这些公式是固定不变的,但是各种实际情况是变化的,我们要善于用不变的
公式取处理各种变化的情况,只有这样,才能真正的处理好计算问题
学员评论