软件设计师考试考点突破、案例分析、实战练习一本通(2014版)(3)

2018-11-17 19:05

软件设计师 http://www.educity.cn/jiaocheng/zg7.html

件的利用率和指令的平均执行速度。

指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。 如图1-2所示,IF,ID,EX,WD分别是流水线的流水部件。

图1-2 几个部件组成的流水线

流水线要求所有的流水级部件必须在相同的时间内完成各自的子过程。在流水线中,指令流动一步便是一个机器周期,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间来决定。

那么我们为什么要提出流水线这个概念,以及流水线是如何提高系统吞吐量的呢?下面我们来看几个图,概念自然就清楚了。

图1-3是一个非流水线结构系统执行指令时空图。

图1-3 非流水线结构系统执行指令时空图

我们从图1-3中可以看到,任意一个系统时间都有大量的设备处于空闲状态,如第一个时间段有ID,EX,WB空闲,则第二个时间段有IF,EX,WB空闲。 我们再来看采用了流水线结构的时空图1-4.

软件设计师 http://www.educity.cn/jiaocheng/zg7.html

图1-4 流水线结构指令时空图

显然,采用流水线可以大大提升系统资源的利用率,以及整个系统的吞吐量。 在考试中,流水线方面的考题主要考查两个知识点:计算流水线执行时间和分析影响流水线的因素。

(1)计算流水线执行时间

假定有某种类型的任务,共可分成N个子任务,执行每个子任务需要时间t,则完成该任务所需的时间即为Nt.若以传统的方式,则完成k个任务所需的时间是kNt;而使用流水线技术执行,花费的时间是Nt+(k-1)t.也就是说,除了第一个任务需要完整的时间外,其他都通过并行,节省下了大量的时间,只需一个子任务的单位时间就够了。

另外要注意的是,如果每个子任务所需的时间不同,则其速度取决于其执行顺序中最慢的那个(也就是流水线周期值等于最慢的那个指令周期),要根据实际情况进行调整。 例如:若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是取指2ns,分析2ns,执行1ns.那么,最长的是2ns,因此100条指令全部执行完毕需要的时间就是:(2ns+2ns+1ns) +(100-1)x 2ns=203ns.

另外,还应该掌握几个关键的术语:流水线的吞吐率(等于任务数/完成时间),加速比(不采用流水线的执行时间/采用流水线的执行时间)。 (2)影响流水性的主要因素

软件设计师 http://www.educity.cn/jiaocheng/zg7.html

如图1-4所示,流水线的关键在于\重叠执行\因此如果这个条件不能够满足,流水线就会被破坏。这种破坏主要来自两种情况:

转移指令:因为前面的转移指令还没有完成,流水线无法确定下一条指令的地址,因此也就无法向流水线中添加这条指令。从这里的分析可以看出,无条件跳转指令是不会影响流水线的。

共享资源访问的冲突:也就是后一条指令需要使用的数据,与前一条指令发生的冲突,或者相邻的指令使用了相同的寄存器,这也会使得流水线失败。

响应中断:当有中断请求时,流水线也会停止。对于这种情况有两种响应方式,一种是立即停止--精确断点法,能够立即响应中断;另一种是流水线中的指令继续执行,不再新增指令到流水线--不精确断点法。

1.1.3 存储系统

在整个计算机系统中,存储系统的地位非常重要,在本书中,有多个章节涉及存储相关内容。本章主要描述存储系统中与硬件相关的部分,而在操作系统章节将描述存储调度相关内容。 1.Cache

由于在CPU与存储系统间存在着数据传送带宽的限制,因此在其中设置了Cache(高速缓冲存储器,通常速度比内存快),以提高整体效率。但由于其成本更高,因此Cache的容量要比内存小得多。

(1)Cache原理、命中率、失效率

使用Cache改善系统性能的主要依据是程序的局部性原理(2.1.3节对该概念进行了详细说明)。通俗地说,就是一段时间内,执行的语句常集中于某个局部。而Cache正式将

软件设计师 http://www.educity.cn/jiaocheng/zg7.html

访问集中的内容放在速度更快的Cache上,以提高性能。引入Cache后,CPU在需要数据时,先找Cache,如果没有再找内存。

如果Cache的访问命中率为h(通常1-h就是Cache的失效率),而Cache的访问周期时间是t1,主存储器的访问周期时间是t2,则整个系统的平均访存时间就应该是: t3=h*t1 +(1-h)* t2

从公式可以看出,系统的平均访存时间与命中率有着很密切的关系。灵活地应用这个公式,可以计算出所有情况下的平均访存时间。

例如:设某流水线计算机主存的读/写时间为100ns,有一个指令和数据合一的Cache,已知该Cache的读/写时间为10ns,取指令的命中率为98%,取数的命中率为95%.在执行某类程序时,约有1/5指令需要存/取一个操作数。假设指令流水线在任何时候都不阻塞,则设置Cache后,每条指令的平均访存时间约为多少?其实这是应用该公式的简单数学题: (2%*100ns + 98%*10ns)+ 1/5 x(5%*100ns + 95%*10ns)=14.7ns (2)Cache存储器的映射机制

软件设计师 http://www.educity.cn/jiaocheng/zg7.html

图1-5 Cache映射规则图解

CPU发生访存请求时,会先让Cache判断是否包括,如果命中(即包括请求的内容)就直接使用。这个判断的过程就是Cache地址映射,这个速度应该尽可能快,常见的映射方法有直接映射、全相联映射和组相联映射三种,其原理如图1-5所示。

直接映射:是一种多对一的映射关系,但一个主存块只能够复制到Cache的一个特定位置上去。Cache的行号i和主存的块号j有函数关系:i=j%m(其中m为Cache总行数)。例如:某Cache容量为16KB(可用14位表示),每行的大小为16B(可用4位表示),则说明其可分为1024行(可用10位表示)。则主存地址的最低四位为Cache的行内地址,中间10位为Cache行号。如果内存地址为1234E8F8H的话,那么最后四位就是1000(对应16进制数的最后一位),而中间10位,则应从E8F(111010001111)中获取,得到


软件设计师考试考点突破、案例分析、实战练习一本通(2014版)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“六面整体浑圆力”速成秘法(免费下载)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: