cpu的流水线技术是什么?说的详细点好吗?我很菜的

cpu的流水线技术是什么?说的详细点好吗?我很菜的,第1张

CPU的流水线
1主频
主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel和AMD,在这点上也存在着很大的争议,我们从Intel的产品的发展趋势,可以看出Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一快1G的全美达来做比较,它的运行效率相当于2G的Intel处理器。
所以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。在Intel的处理器产品中,我们也可以看到这样的例子:1 GHz Itanium芯片能够表现得差不多跟266 GHz Xeon/Opteron一样快,或是15 GHz Itanium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流水线的各方面的性能指标。
当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
3前端总线(FSB)频率
前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。有一条公式可以计算,即数据带宽=(总线频率×数据带宽)/8,数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率。比方,现在的支持64位的至强Nocona,前端总线是800MHz,按照公式,它的数据传输最大带宽是64GB/秒。
6缓存
缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。
11超流水线与超标量
在解释超流水线与超标量前,先了解流水线(pipeline)。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。
超标量是通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间。而超流水线是通过细化流水、提高主频,使得在一个机器周期内完成一个甚至多个 *** 作,其实质是以时间换取空间。例如Pentium 4的流水线就长达20级。将流水线设计的步(级)越长,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。但是流水线过长也带来了一定副作用,很可能会出现主频较高的CPU实际运算速度较低的现象,Intel的奔腾4就出现了这种情况,虽然它的主频可以高达14G以上,但其运算性能却远远比不上AMD 12G的速龙甚至奔腾III。
12封装形式
CPU封装是采用特定的材料将CPU芯片或CPU模块固化在其中以防损坏的保护措施,一般必须在封装后CPU才能交付用户使用。CPU的封装方式取决于CPU安装形式和器件集成设计,从大的分类来看通常采用Socket插座进行安装的CPU使用PGA(栅格阵列)方式封装,而采用Slot x槽安装的CPU则全部采用SEC(单边接插盒)的形式封装。现在还有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封装技术。由于市场竞争日益激烈,目前CPU封装技术的发展方向以节约成本为主。
好了,上面贴的一些都是和CPU的运行效率直接相关的参数,剩下的参数,有的太简单,有的我们不常接触到没有贴,
好,看一下流水线的来由,大家都知道,两个CPU会比一个CPU快,但是为什么呢,也不会出现,一个CPU,运行WORD,一个CPU,运行CS呀, 那是因为,把指令细分成线程后,他们可以分别运行,cyrix的MII,当时不是有个技术么,乱序运行!!就是提高运行效率的一个手段,流水线,也是这种目的,P4,的时候,就20级流水线了,就是说,CPU运行一次的时候,等于,20个CPU(没有流水线),同时运行一样,这本来是什么呢,运行速度一下子,提高了20倍
但是,事实上并不是这样,为什么呢,这20个东东运行完了,得把他们再拼一起呀,还有一件事,如果拼错了,(下面的工人装不上,就认为是原料有问题)他就认为,这次的运行结果是错的,说,"重来"吧 那么,有一个CPU,只有10级流水线,但是由于他们的管理很好,每次运行都不返工,所以,他们的生产效率反而更高!!!
AMD,和INTEL,现在正是这种情况,一个抓管理,管理上去了,下面的工人出错的才少,(返工次数少)
一个抓技术,工人熟练了,生产的东西,质量才高!!(每次出来的东西多)
当然,又抓管理,又抓技术,两手都要抓,两手都要硬,这是中国人的想法,都抓的人,显然什么都没抓好,都破产了,现在只有这两家还存活着,现在我想给流水线一个公正一点的说法, 如果你的CPU组装的水平很差,那当然,流水线越多,你越乱,就像,你的水平不行, 管理了,10000多个程序员高手, 项目乱的一团糟, 但是,如果你是一个管理经验丰富的人, 下面的人一下也不会做活, 那么,项目也是一个失败, 幸好,事实上,并不是这样绝对,管理员也是差不多的水平, 程序员也是差不多的水平, 那么你建一个项目, 你选好的程序员,还是好的管理员!!!
我说,不一定,我得看是什么项目, 如果项目是一般的项目, 一般的管理员就可以了,那么,我当然选好的程序员, 项目完成的又快又好, 一个程序,本身就可以乱序运行, 那么,INTEL的CPU当然就是最好了, 反正,大家都不会返工!!!!! 但是一个项目是很复杂的, 而代码量并不多, 那么,当然是选好的管理员, 如果一个程序,就是针对测试而测试的, 导致,CPU运算不断的返工, 那当然就是AMD的CPU好, 比如,大浮点数的运行,AMD,比INTEL的高50%现在看不到这种比较了, 但是,你可以查一查,以前的资料, 有PIII1G,与AMD速龙1G的比较, 这个差异到现在也没有改变, 这就是为什么AMD的CPU,显卡得分,会比INTEL的高, 3Dmark2001的得分,一般都比INTEL的高, 而,business stone,INTEL 一般都比AMD要高, SYSMARK,也是,INTEL 比AMD要高, 因为这些程序不复杂,(线程复杂,和我们想的程序本身复杂是两回事)
买CPU也是一样, AMD,和INTEL谁好, 我也不知道,我喜欢AMD,但我目前确实使用的是INTEL, 家里的两台机子全是INTEL 没有AMD,INTEL不会这么便宜, 没有AMD,中国的D版软件 中国的组装机但是,我要为流水线正一正名, 并不是流水线长了,运行效率就低了, 流水线长了,运行效率绝对是高了, 但是,运行出错的代价是大了,流水线,这本身是一个提高效率的技术, 怎么现在的人,都当成是,因为提高频率,所必须采用的手段呢 当时没有流水线的时候, 流水线一出来的时候, 大家都认为这是提高效率的秘密武器呀!!!
越是实际的程序,越容易发生流水线返工,因此P4效能越差。
倒是纯粹的理论测试,比如sandra,pcmark还有3dmark之类P4表现不错(老实说P4在3dmark里面的表现相对于在bussiness winstone里面算好的了),而到了实际测试,特别是bussiness winstone(直接调用office源代码)或者sciencemark(直接编译的标准量子化学代码)里面,p4的表现那叫一个菜。。。。连P4c都不是同PR的AthlonXP的对手。
至于sysmark里面Intel的分高,那是一个著名的bug,因为sysmark认为AthlonXP不支持SSE,结果是AthlonXP用x87浮点对抗专门为SSE优化的多媒体代码,自然性能不成(即使这样Intel也没有多少优势)
在bussiness winstone 2002的测试结果,看看就会发现,P4 32c的性能刚刚可以匹敌公认为虚标最严重的AthlonXp 3200+。 当然,多媒体性能上P4 32c还是毫无疑问的战胜AXP 3200+,毕竟,AXP不支持SSE2。
即使没有流水线返工,长流水线的性能也就和短流水线相同,因为每条流水线每周期就只能执行一条指令(p4有个怪异的设计就是如果跑配对的两个简单微指令,那么两个可以并成一个执行,所以如果你反复执行完全相同的指令比如a=a+1一百亿次,那么P4比AthlonXP要快一倍),所以长流水在任何角度也不可能提升效率。
长流水的唯一好处就是,电路比较简单,设计起来比较容易解释的详细一点就是,并不是说20级流水线每次执行的动作比10级流水线多一倍,相反,他们能执行的实际功能是一样的,只是每级执行的 *** 作简单了一些。
比如,一个工厂造螺丝,可以分成两级流水,一个人造螺丝,一个人车螺纹。也可以分成100个步骤,第一个人负责拿铁块,第二个人负责递,第三个人负责往上画线。。。。第99个人车单数螺纹,第100个人负责擦掉粉尘。
如果每个步骤耗费的时间都一样,那么两种做法速度完全一样,唯一的区别是,前面的办法工人素质必须很高,因为他每个人干了对方50个人的活
看看吧,多少能了解点
>1 计算流水线的节拍
流水线、自动化流水线的节拍就是顺序生产两件相同制品之间的时间间隔。它表明了流水线生产率的高低,是流水线最重要的工作参数。其计算公式如下: r=F/N
其中:r—流水线的节拍(分/件),F—计划期内有效工作时间(分),N—计划期的产品产量(件).这里 :F=F0K,F0—计划期内制度工作时间(分),K—时间利用系数。
确定系数K时要考虑这样几个因素:设备修理、调整、更换模具的时间,工人休息的时间。一般K取09—096,两班工作时间K取095,则F为: F=FOK=306×2×8×0.95 ×60=279072(分)
计划期的产品产量N.除应根据生产大纲规定的出产量计算外,还应考虑生产中不可避免的废品和备品的数量。
当生产线、生产线制造上加工的零件小,节拍只有几秒或几十秒时,零件就要采用成批运输,此时顺序生产两批同样制品之间的时间间隔称为节奏,它等于节拍与运输批量的乘积。流水线采取按批运输制品时,如果批量较大,虽然可以简化运输工作,但流水线的在制品占用量却要随之增大。所以对劳动量大、制件重量大、价值高的产品应采用较小的运输批量;反之,则应扩大运输的批量。 进行工序同期化,计算工作地(设备)需要量
流水线的节拍确定以后,要根据节拍来调节工艺过程,使各道工序的时间与流水线的节拍相等或成整数倍比例关系,这个工作称为工序同期化。工序同期化是组织流水线的必要条件,也是提高设备负荷和劳动生产率、缩短生产周期的重要方法。

各位学员大家好,相信大家在学习计算机系统构成及硬件基础知识时,感觉指令流水线这部分比较难,其实只要大家掌握了解题方法,很快就可以定位出正确答案,接下来就带领大家一起来学习一下!

1、例题: 某指令流水线由4段组成,各段所需的时间如下图所示。连续输入8条指令时的吞吐率(单位时间内流水线所完成的任务数或输出的结果数)为( )?
A 、8/56Δt       

B 、8/32Δt

C 、8/28Δt            

D 、8/24Δt

昊洋详解: 这道题目是在2013年软件评测师考试真题的第4题,是一道典型的指令流水线类型题目。流水线是指在程序执行时,多条指令重叠进行 *** 作的一种准并行处理实现技术。一般情况下有固定的三个步骤: 取值—>分析—>执行 ,而本题显然没有那么复杂,只需要大家记住一个公式就可以快速地计算出流水线方式所需总时间。该公式为:
其中n表示有n条指令,m表示流水线一共有m段组成,△ti表示指令流中组成的每一段所用的时间,其中i从1开始,最大值为m,△tj表示指令流中最长耗时的一段。简而言之,n条指令使用流水线方式所需的总时间就是:一条指令使用流水线方式执行完m段所需的完整时间+(n-1)乘以指令流m段中耗时最长的那段的耗时。

该题目中提到的流水线的吞吐率指的是计算机中的流水线在特定的时间内可以处理的任务或输出的数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率。 该题目中要求解的是实际吞吐率,计算方式就是输入的指令条数除以总耗时。

以流水方式执行8条指令的执行时间套用上面的公式可以快速得出8条指令所需总时间为: (1Δt+2Δt+3Δt+1Δt)+(8-1)3Δt =28Δt,因此吞吐率为8/28Δt,故正确答案为C。

理解了以上的解析之后,我们还需要融会贯通,接下来就通过几种指令流水线题目的变种练习,来检验一下大家学习的效果。

133 巩固练习题

(1)某指令流水线由4段组成,各段所需的时间分别为2ms、1ms、5ms和2ms。则连续输入10条指令时所需的总耗时为为( )?

A、55ms

B、110ms

C、100ms

D、50ms

(2)假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为10μs,由缓冲区送至用户区的时间是5μs,系统对每个磁盘块数据的处理时间为2μs。若用户需要将大小为10个磁盘块的Doc文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(1 )μs;采用双缓冲区需要花费的时间为(2 )μs。

1、A、100   B、107   C、152   D、170

2、A、100   B、107   C、152   D、170

134 练习题参考答案

(1)解析: 本题考察的知识点和例题基本上一模一样,相信只要大家把例题搞明白了,这道题很容易就能够得出答案。首先确定有10条指令,流水线的四段组成,耗时最长的是第三段,耗时5ms,最后我们套用公式,总耗时为: (2ms+1ms +5ms +2ms)+(10-1)5ms =55ms,故正确答案为A。

(2)解析: 本题同样是考察指令流水线的知识,只不过增加了迷惑性,但是只要大家认真思考,就可以拨云见日,快速掌握其精髓。这道题的主要难点在于单缓冲区和双缓冲区的区别,首先我们能够确定的是,采用双缓冲区时,计算方法和我们例题中的情景是一样的,我们可以确定的是有10个磁盘块,一条完整的流水线分为三部分,耗时分别为10μs、5μs和2μs,所以总耗时套用公式为:(10μs+5μs+2μs)+(10-1)10μs=107μs,故第二问的正确答案为B。

接下来我们再回头看一下第一问,我们知道通过题干知道采用流水线进行处理时,每个数据要经过3个步骤: 读入缓冲区—>由缓冲区送至用户区—>系统处理 。这刚好对应了我们例题1中提到的三个固定步骤: 取值—>分析—>执行 。在这三个步骤中,前两个步骤是需要用到缓冲区的,所以这两个步骤执行时,缓冲区都不可以开始下一个磁盘区的处理工作,这就是单缓冲区的限制,所以三个步骤可合并为两个: 读入缓冲区并送用户区、处理。 此时,仍然可应用流水线的方式来提升效率,只不过我们将其浓缩成了两个步骤。此时我们再次确定基础数据,有10个磁盘块,一条完整的流水线分为两个部分,耗时分别为15μs和2μs,所以总耗时套用公式为:(15μs+2μs)+(10-1)15μs=152μs,故第一问的正确答案为C。

该题目相对例题来说,增加了难度,但是大家如果在考试的时候遇到了相同的知识点,但是形式不同时,不用紧张,只需要根据自己掌握的知识和题干中的提示,大胆推理即可。在此,昊洋老师送给大家一句话: 遇到问题,分析问题,解决问题。

写于2020年6月5日

流水线这个知识点在软件设计师考试中是个重点也是个难点,考查的频率比较高。之所以说流水线是个难点,有两方面的原因:一方面是需要理解流水线的理论,了解其工作原理,计算方式;另一方面是在软考当中,对于流水线的相关计算,标准并不是完全统一的,这一点在后面我们将详细介绍。
流水线是指在程序执行时多条指令重叠进行 *** 作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。
如图1所示,IF,ID,EX,WD分别是流水线的流水部件。
图1 几个部件组成的流水线
流水线要求所有的流水级部件必须在相同的时间内完成各自的子过程。在流水线中,指令流动一步便是一个机器周期,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间来决定。
那么我们为什么要提出流水线这个概念,以及流水线是如何提高系统吞吐量的呢?下面我们来看几个图,概念自然就清楚了。
图2是一个非流水线结构系统执行指令时空图。
图2 非流水线结构系统执行指令时空图
我们从图2中可以看到,任意一个系统时间都有大量的设备处于空闲状态,如第一个时间段有ID,EX,WB空闲,则第二个时间段有IF,EX,WB空闲。我们再来看采用了流水线结构的时空图3。
显然,采用流水线可以大大提升系统资源的利用率,以及整个系统的吞吐量。
流水线的 *** 作周期取决于基本 *** 作中最慢的那个。例如:一个3段流水线,各段的执行时间分别为t,2t,t。则最慢的一段为2t,所以流水线 *** 作周期为2t。
流水线的执行时间公式为:
第1条指令的执行时间+(指令条数-1)流水线 *** 作周期
例题1
若每一条指令都可以分解为取指、分析和执行三步。己知取指时间t取指=4△t,分析时间t分析=3△t,执行时间t执行=5△t。如果按串行方式执行完100条指令需要 (1) △t。如果按照流水方式执行,执行完100条指令需要 (2) △t。
供选择的答案
(1)A 1190 B1195 C 1200 D1205
(2)A 504 B507 C 508 D510
试题分析
本题考查的是计算机系统指令流水线方面的基础知识。根据题意可以看到,在此流水线中按串行方式执行完100条指令要用1200△t。采用流水方式执行,执行的总时间的关键取决于最长的执行时间,所以执行完100条的时间为:4Δt+3Δt+5Δt+(100-1)5Δt = 507Δt。
试题答案
C B
例题2
现采用4级流水线结构分别完成一条指令的取指、指令译码和取数、运算,以及送回运算结果4个基本 *** 作,每步 *** 作时间依次为60 ns,100 ns,50 ns和70 ns。该流水线的 *** 作周期应为 A ns。若有一小段程序需要用20条基本指令完成(这些指令完全适合于流水线上执行),则得到第一条指令结果需 B ns,完成该段程序需 C ns。
在流水线结构的计算机中,频繁执行 D 指令时会严重影响机器的效率。当有中断请求发生时,采用不精确断点法,则将 E 。
供选择的答案
A:①50 ②70 ③100 ④280
B:①100 ②200 ③280 ④400
C:①1400 ②2000 ③2300 ④2600
D:①条件转移 ②无条件转移 ③算术运算 ④访问存储器
E:①仅影响中断反应时间,不影响程序的正确执行
②不仅影响中断反应时间,还影响程序的正确执行
③不影响中断反应时间,但影响程序的正确执行
④不影响中断反应时间,也不影响程序的正确执行
试题分析
本题主要考查对流水线技术的掌握。
对于CPU来说,流水线技术实际上是一种以增加硬件换取性能的方式:把一条指令分解成多条更小的指令,由不同的处理单元来处理,在理想的满负荷运行状态下,执行一条指令的时间虽然没有减少,但是由于多个处理单元同时工作,在同一时间上可以执行不同指令的不同部分,从而使得总体的执行时间大大减少。流水线的 *** 作周期取决于基本 *** 作中最慢的那个。这里最慢的是100 ns,所以 *** 作周期是100 ns。在流水线中,其实每一条指令的执行时间并没有减少,而第一条指令的执行并没有体现流水线的优势,它在4个 *** 作周期后才能执行完成,这以后每个 *** 作周期都能完成一条指令的执行。
影响流水线效率的重要因素有条件转移指令和中断,因为它们打断了流水线,使得流水线不得不重新装载。
不精确断点法实现简单,但是要等到流水线内的指令完成之后再响应中断。
试题答案
A.③ B.④ C.③ D.① E.②
希赛IT教育专家提示:
上面的两个例题,都是软考当中出现过的真题。我们可以看出,两个题在计算流水线时间方面,标准并不是统一的。
在例题1中:
4Δt+3Δt+5Δt+(100-1)5Δt = 507Δt。
而在例题2中:
100ns+100ns+100ns+100ns+(20-1)100ns=2300ns
这两种计算方法,都是在套用公式:“第1条指令的执行时间+(指令条数-1)流水线 *** 作周期”,而对于“第1条指令的执行时间”的理解并不相同。在例题1中,第1条指令的执行时间是将指令执行时的几个阶段所需时间相加得到,而在例题2中,认为每一个阶段所需时间都是流水线的周期时间。其中前者是流水线的理论计算方法,而后者是我们在设计硬件流水线时,常用的方式。两种计算方法,从理论上来讲,都是正确的,但考试时,只有一个是正确答案。那么我们应该怎么做呢?由于每次考试中,无论认可的是哪种计算方式,都只会把这种计算方式的正确答案放入选项中,而不会将两个正确答案都放入,所以我们在用一种方式不能得到正确选项时,应采用另一种方式进行计算,来得到正确答案。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10472218.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-08
下一篇2023-05-08

发表评论

登录后才能评论

评论列表(0条)

    保存