当前课程知识点:电子信息科学与技术导引(1) >  第五讲:程序与处理器 >  第六节:性能问题 >  第六节:性能问题

返回《电子信息科学与技术导引(1)》慕课在线视频课程列表

第六节:性能问题在线视频

第六节:性能问题

下一节:第七节:小结

返回《电子信息科学与技术导引(1)》慕课在线视频列表

第六节:性能问题课程教案、知识点、字幕

刚才我们通过

一个例子来演示

处理器怎么样来

执行程序就刚才

那个例子而言

我们的处理器性能

是不尽人意的因为

他的一条指令的

执行就要用到

7个节拍或者说

7个使用周期而

处理器的性能对于

计算机来说是

至关重要的

让处理器变得

更快更强大

始终贯穿了

计算机发展史

我们可以回顾一下

enaic它的工作速度是

每秒实现5000次

加法而在今年

夺得世界计算机

竞赛第一名的

使我们国家的

中国国防科技大学的

中国国防科技大学的

天河二号超级计算机

它的工作速度是

33.86PFlop/s

也就是说每秒

完成33.86PFlop运算

在不到70年间天河二号

超级计算机和

ENIAC相比已经有了

7千万亿倍的

计算速度差距

那么处理器在

期间发挥了重大的作用

那么怎么样来

提高处理器的性能呢

为此我们要

定义一下什么是

处理器的性能

对计算机性能

进行比较时最

基本的标准就也就是

最客观的标准是

也就是时间的

标准执行同样的

程序所需时间最短的

计算机就是最好的

计算机那么程序执行的

时候所花的时间

怎么样来度量呢

好我们这里给出了

处理器性能公式p是

执行一个程序所花的

总的时间它有

那些因素来决定呢

它是由三个引资相成

得到的其中i是

这个程序所需执行的

总指令数也就是

说这个程序有

多少条指令组成cpi

是每条指令执行的

平均周期数也就是

说执行一个指令需要

多少个时钟周期t是

以毫秒或毫微秒计的

时钟周期的长度那么

显然指令数乘以

每条指令需要的

时钟周期数再乘上

时钟周期的长度也就是

执行一个程序所花的

时间当然我们希望

这个时间越小越好

我们来看一下影响

这三个因子的因素

都有哪些我们可以

从算法程序设计语言

编译器isa硬件实现

这五个方面来看

首先对算法来说

他会影响指令数和

cpi良好的算法得到

的指令中会比较少

同样良好的算法会

尽量采用那些简单的

指令也就是说选择执行的

时钟周期数会比较的

少程序设计语言

同样会对指令数和

cpi产生影响不同的

程序设计语言会

倾向于用不同的

指令去实现他内部的

语句从而使得指令数

和cpi都会发生变化

那么编译器也会

影响指令数和

cpi一个良好的

编译器针对相同的

原程序它编译出来的

指定数会比较少同样

他也尽可能采用

一些简单的指令来

实现一些程序的

功能从而使cpi比较小

指令集体系结构作为

程序和处理器的接口

当然会对指令数和

cpi时钟周期三者

都会产生影响而

硬件实现不会影响

指令数指令数是

软件层程序层面

或者说是程序层面的

问题硬件实现只会

影响cpi和时钟周期

良好的硬件结构可以

获得更好的时钟周期

或者说更高的

始终频率同样采用

良好的结构可以

使得执行一条指令

需要的时钟周期数少

那么提高性能的

常见手段无非是

减小i值减小t值和

减小cpi的值减小i值的

方法呢通常可以

这样做我们可以

增强指令集中

指令的能力从而

使得为了实现

一个程序的功能

这个程序中的

指令数目呢可以

更少这样一种

设计理念就是早期的

csk和复杂的

指令集设计理念

减小t值的方法呢

可以采用采用很多

技术手段提高cpu的主频

减少时钟周期的

时间长度而

减小cpi值呢

主要的手段呢

是增加指令执行的

并行程度使得

多条指令可以

并行执行但是

公式中的三项并

不是相互独立的

它们之间有着复杂的联系

减少三项中的

任意一项都有

可能增加

其他两项当然有

一些技术可以在

保持其他两项不变的

前提下减少其中的

一项比如说

采用优化编译技术

那么可以在

在目标代码中

消除冗余代码从而

可以减少指令数

但是并不提高CPI和

时钟周期采用

快速电路技术或

更为先进的结构减少

信号传输延迟

可以减少时钟周期

但是并不提高CPI和

指令数我们看一个

快速电路的例子

比如说我们有

n个输入操作数想

进行亦或操作

一种操作方法呢

是这些亦或

门串连在一起

那么它的总的

时间延迟应该是

n-1另外一种设计思路

不是这样的串行链接

而是采用一种分组

并行这样一种树形结构

那么它的延迟是n

以二为底的对数那么

这两种设计新的

设计速度更快也就是

说它的时钟周期更短

但是它并不会

增加器件用的器件的

数量是一样的所以

采用快速的电路技术

可以在不增加i和t的

情况下所以采用快速的

电路技术可以在

不增加i和cpi的

前提下减少t在

在我们前面介绍

处理器工作原理的

时候我们引入了

一个最简单的

单总线的mips处理器

在那样一个处理器中

执行一条指令我们

需要7个时钟周期

之所以那么多的

时钟周期才能完成

1条指令的执行因为

它只有一条共享

总线于是在进行

原数据和目标数据传送的

时候需要分成多个

时间片分时的来进行

传送那么一种提高

工作速度的手段可以

引入多条总线比如

说我们引入这样

一种三总线的结构

对于这样一个种

三总线的结构处理器

可以减少cpi但是

并不会提高t和i

至于这个三总线结构

能够使得执行一条指令

需要的时钟周期数减到

多少我们作为

一个问题大家课后来思考

好我们也可以采用

专用通路结构来

提高处理器的

性能所谓专用

通路结构就是

原部件和目标部件

之间直接通过

专门的通路来

进行连接避免了

总线上因为分时

附用所导致的

延迟这张图呢

就是一个单周期的

mips处理器示意图

对于这样的处理器

来说它执行一条指令

需要的时钟周期

只需要1个也就是

cpi=1但是这样的

处理器会潜在的

增加时钟周期的

长度为什么是

这样我们还是

作为一个问题留给

大家课后思考

好我们刚刚这些解决性问题

的方法呢其实都是基于

这样一个思路就是在上

一条指令结束之后

我们再执行下一条指令

而我们人类做工作

其实并不是这样的

于是我们需要解决

一下能不能让指令并行的

处理这就是

指令集并行处理要

讨论的问题首先看一下

我们在日常生活中

怎么样进行并行处理来

提高我们工作效率的

我们考虑一家

洗衣店那么洗衣的

流程呢假设我们

分成4个阶段分别是

洗衣脱水折叠储藏一种

处理方法呢是串行的

进行也就是说

1批衣服完成4个过程之后

我们再来处理下一批

衣服这样的洗衣店在

现实生活中其实是

不存在的我们实际的

洗衣店一定时并行工作的

也就是说他会使得

洗衣脱水折叠储藏

这四个阶段并行的

运行起来用流水线的

方式进行处理

我们用串行的

方式来处理衣服

4批衣服那么

我们需要用的

时间要用到8个小时

而用流水线方式去

处理这4批衣服我们

只需要3个半小时

就能够处理完成

由此可见采用

流水线方式可以

大大提高洗衣服的

效率那么处理器在

执行指令的时候

是不是也可以

采用流水线这样的

运行方式呢

好我们考虑假设

一条指令的执行假设

分为了n个阶段

我们用一个n级流水线

来处理我们对他的

性能来进行分析

每个时钟周期做

1/N的工作

时间也是整个指令的

1/N那么在流水线上

每个周期都有

一条指令能够

完成执行所以

理论上性能提高

N倍也就是说

n级流水线最高能

提高n倍的性能

那么流水线的

级数越多提高性能的

程度也就越大

我们从这张图就可以

看出pc机的cpu发展过程中

它的流水线级数是

逐渐增多的那么

一条流水线够不够呢

如果我们认为

一条流水线不够

那就多条吧这就

引入了所谓

超标量流水线结构

今天的pc机上的

处理器都采用了

超标量结构它是由

多条流水线同时

进行工作的那么

超标量流水线比起

一条流水线它的性能又

提高了一个倍数也就是

说在原来提高n倍基础上

如果有多条流水线

还要提高流水线的

条数这么多倍那么

一条流水线是不是

够用呢我们现实生活中

象一家洗衣店它通常

不置一台洗衣机也

不止一台烘干机也就是

说它可以有多条流水线

并行工作那我们的

处理器也是可以

这样工作的我们可以

引入多条流水线这样就

引入了超标量结构也就

是说它有多条同时运行的

流水线那么引入了

超标量流水线结构之后

处理器的性能又可以

提高一个倍数这个

倍数就是流水线的

条数也就是说

n级流水线同时有

k条流水线那么

提高的倍数应该是

k乘以n问题在于

流水线能不能顺畅地

流下去呢我们先来

看一个例子在

这个例子中有5条指令

我们先解释一下

这5条指令他所做的

工作第一条是

一条件发指令他是

把1号寄存器的内容和

3号寄存器的内容想

减结果写入2号寄存器

第二条是一条与

运算指令他是把

2号寄存器和5号寄存器的

内容相与结果写入

12号寄存器第三条指令是

一条或指令他是把

第六号寄存器和

2号寄存器进行或

操作结果写道13号寄存器中

第四条第5条分别是

一条加法指令和

一条数据存储指令

假设我们采用

5级流水线的

方式来执行一条指令

我们把一条指令的

执行分成五个阶段

分别是取指令访问

寄存器算术逻辑运算

访问数据存储器以及

把结果写入到寄存器中

这样五个阶段那么

我们看这五条指令

在执行过程当中

这个图的横坐标是

时间我们使用

时钟周期作为

单位的那好我们会

看到在这样一条

流水线中执行

这五条指令

最后的两条指令加法

和数据存储指令是

可以得到正确结果的

因为这两条指令

虽然也用到了

第一条指令中的

2号寄存器的内容

但是他们使用的

时候2号寄存器已经

获取了最新的结果

而第二条的指令和

第三条或指令是不能

得到正确结果的因为

在第二条指令在需要

2号寄存器内容的时候

是在他的第三个周期

而2号寄存器最新的

结果要在第五个周期

才能获得所以他会

得到错的结果同样或

指令得到的也是错的

结果这样一来为了是

流水线得到正确的结果

我们在and指令或

指令执行之前必须

要进行组设也就是

说要确保第一条减法

指令确确实实的把

最新的结果写入

2号寄存器之后

那么and指令和

或指令才能

执行这也就是

说流水线已经出现了

断流实际上

流水线流不起来的

原因不仅仅指令之间

存在着依赖性它的

原因还有多个总体来说

原因有三个方面一个是

条件转移一个是指令之间

的依赖关系就是

我们刚才看到的

那个例子第三个

原因是指令和

数据无法及时的

供应给处理器去处理这是

原因是指令和数据都是

从存储器中获取的

存储器的工作速度往往

跟不上处理器的

工作速度相应对策

我们有转移预测这是

针对条件转移的

针对指令之间的

依赖关系或相关性呢

我们有转发乱序执行针对

指令和数据无法供应也

就是说存储器的

工作速度和处理器的

工作速度存在差异的

时候我们可以

引入cache也就是

高速缓存那么转移预测是

这样一种机制我们通常

取指令的时候是

顺序取值的也就是

说按照程序的编程的

自然顺序去除

每条指令在流水线中

如果遇到一条

分支指令特别是

条件分支指令的

时候如果条件分支成立

那么顺序取值取道

后面的指令都是错误的

指令因为条件分支

一旦成立它会转移到

另外一个目标地址处

而不是顺序取后面的

指令这样就会导致

流水线的断流怎么

解决这个问题

我们可以采用

转移预测也就是

说根据历史上

转移指令所采取的

行为预测它今后

应该是转移还是

不转移那么转移预测的

策略有静态预测动态

预测等等针对数据之间的

相关性我们可以采用

转发机制我们还是

看刚才的这个例子

减法指令的结果

实际上在第三个周期末

就已经产生了

他只不过是在

第五个周期才

写道目标寄存器中

而另外呢与指令和

或指令他在执行阶段

是在第4个周期和

第五个周期而到了

第四和第五周期那么

减法指令的结果

实际上已经产生了

那么我们为什么等

到把这个结果写到

目标寄存器之后在

从寄存器中再去

取它呢我们能不能

直接把这个结果

直接给需要用到的

这个结果的指令

这种技术就是

转发利用转发技术

就可以避免流水线的

停顿从而提高流水线的

效率乱续执行是

这样一种策略就是

说指令的执行跟

指令流的可以打乱为了

解释这个问题我们看

一个现实生活中的

例子现在有三个名人

要为一个晚会写

一个横幅比如说

春节联欢晚会六个字

每个人写两个字怎么

写一种写法是按abc

三个人先后顺序来写

a先写完春节在

a写春节的时候b和c

是要等待的a写完

春节之后b来写联欢

b在写联欢这两个字的

时候c是在等待的

而a已经没有事情可做了

好换一种思路我们也可以

让这三个人同时

在纸上写分别去

写春节联欢晚会

这几个字甚至可能

说b和c要比a的

速度快写完之后

我们再把每个人

写出来的字再把它

拼接在一起做

一个排序最后再

张贴出去这样

一来三个人就可以

并行的工作那么

指令的执行也是

这样的在指令流中

如果按单纯的

转发阻塞这样

一些策略遇到一条

指令被阻那么后面的

指令就不会执行

而后面的指令

很有可能与

引发阻塞的引发

相关的没有关系为什么

不能让这样的

指令先执行呢

所以我门就可以

采用所谓乱序执行的

方式也就是指令集中

我们检测相关性

在不存在相关的

条件下我们可以

让这样的指令

现执行当然

正如春节联欢晚会

这几个字三个人

写完之后要进行

一番排序一样那么

指令可以乱续执行

但是它的退出仍然是

需要按续推出的

所以我们要引入

一个重排序缓冲器

针对存储器它的

工作速度跟不上

处理器我们可以

引入高速缓存也就是

cache为什么能够引入

高速缓存呢我们

可以想一下处理器对

存储器的访问其实是

存在局部性的也就是

说在一定的时间内

我们所访问的数据

或者是指令它都在

空间上和时间上存在

这局部性于是

我们就可以引入

一个速度更快的

存储器把当前和

今后要用到的

指令和数据装到

这个存储器当中

如果在我们需要

访问存储器的时候

都能在这个快速的

存储器中得到数据和

指令而不需要访问慢速的

存储器的话那么

我们处理器的性能也

就可以得到提高

这就是存储的局部性原理

在pc机的处理器发展历史上

在80386时代先引入了

板上cache也就是说在

主板上引入了高速缓存到了

486的时代引入了

片上cache也就是说

在处理器内部芯片上

已经有了高速缓存

当处理器对cache的

访问命中率不高的时候

我们还可以引入

多级cache当cache

工作速度仍然不尽人意的

时候我们还可以把

cache分成数据cache和

指令cache进一步

我们还可以针对cache使用

预取技术cache在

处理器发展历史上

起到了越来越重要的

作用今天的处理器cache

所占的面积已经超过了

一半光有cache还是

不够的总线也会成为

一种瓶颈于是计算机中的

总线也经过了从isa到

pci 到fsb到hypertransportqpi

这样的一个发展历史

速度越来越快

带宽越来越高今后的

cpu会是什么样子呢

我们都听过moore定律

它有多个不同的

说法其中一个说法是

这样的处理器的性能

每隔18个月提高一倍

而价格下降一倍moore定律

从1965年提出至今

它支配了微电子与

计算机技术将近50年

那么什么时候是

摩尔定律的终结还是

会有其他的技术

其他的定律能够替代

摩尔定律今天处理器的

发展已经向着多和

处理器迈出了重要的

一步那么这样会带来

一些新的挑战多少个核心够用

多核对系统中

其它部分会造成

什么样的问题

我们需要怎么样去

应对这样的挑战

以及在多核众核时代

程序员如何编程

那么新的体系结构

是否会带来程序模型的

根本性变化呢

这些问题的答案有

待未来给出回答

电子信息科学与技术导引(1)课程列表:

第一讲:电磁学与分析数学史概览

-第一节 序言

--第一节 序言

-第二节 电磁学和分析数学发展史:磁学

--第二节 电磁学和分析数学发展史:磁学

-第三节 电磁学与分析数学发展史:静电

--第三节 电磁学与分析数学发展史:静电

-第四节 电磁学和分析数学发展史:动电

--第四节 电磁学和分析数学发展史:动电

-第五节 电子器件的发明及电子技术的发展

--第五节 电子器件的发明及电子技术的发展

-第六节 电磁学的广泛应用

--第六节 电磁学的广泛应用

-第七节 电磁系统理论

--第七节 电磁系统理论

-第八节 电子科学技术各学科间的关系

--第八节 电子科学技术各学科间的关系

-第九节 电子科学技术的学科体系

--第九节 电子科学技术的学科体系

-第一讲:电磁学与分析数学史概览--第一次作业

第二讲:电磁场与物质的相互作用

-第一节 序言

--第一节 序言

-第二节 电磁场(一)

--第二节 电磁场(一)

-第三节 电磁场(二)

--第三节 电磁场(二)

-第四节 物质

--第四节 物质

-第五节 电磁场与物质的相互作用:非共振作用

--第五节 电磁场与物质的相互作用:非共振作用

-第六节 电磁场与物质的相互作用:共振作用

--第六节 电磁场与物质的相互作用:共振作用

-第七节 电磁场理论与电路理论

--第七节 电磁场理论与电路理论

第三讲:电路抽象

-第一节 空间离散化

--第一节 空间离散化

-第二节 静场电路分析

--第二节 静场电路分析

-第三节 非静场电路抽象

--第三节 非静场电路抽象

-第三讲:电路抽象--电路抽象 练习题

-第四节 电路元件抽象

--第四节 电路元件抽象

-第五节 非线性元件抽象

--第五节 非线性元件抽象

-第六节 电路抽象三原则

--第六节 电路抽象三原则

-第七节 分层抽象思想

--第七节 分层抽象思想

-第八节 电路基本问题

--第八节 电路基本问题

-第九节 数字化抽象

--第九节 数字化抽象

-第三讲:电路抽象--Quiz 3

第四讲:比特与逻辑

-第一节 序言

--第一节 序言

-第二节 什么是比特

--第二节 什么是比特

-第三节 比特与编码

--第三节 比特与编码

-第四节 比特与信息

--第四节 比特与信息

-第五节 比特的用途示例

--第五节 比特的用途示例

-第六节 什么是逻辑

--第六节 什么是逻辑

-第七节 逻辑的用途示例

--第七节 逻辑的用途示例

-第八节 与数字电路的关系

--第八节 与数字电路的关系

-第九节 小结

--第九节 小结

-第四讲:比特与逻辑--Quiz4

第五讲:程序与处理器

-第一节:从算盘到ENIAC

--第一节:从算盘到ENIAC

-第二节:通用计算机模型

--第二节:通用计算机模型

-第三节:指令集体系结构

--第三节:指令集体系结构

-第四节:程序和程序设计语言

--第四节 程序和程序设计语言

-第五节:处理器的工作原理

--第五节:处理器的工作原理

-第六节:性能问题

--第六节:性能问题

-第七节:小结

--第七节:小结

第六讲:数据与算法

-第一节:数据与数据处理技术的发展

--第一节:数据与数据处理技术的发展

-第二节:数据处理举例

--第二节:数据处理举例

-第三节:数据模型和算法的概念

--第三节:数据模型和算法的概念

-第四节:问题的抽象和建模

--第四节:问题的抽象和建模

-第五节:数值分析问题研究

--第五节:数值分析问题研究

-第六节:数据和算法的关系I

--第六节:数据和算法的关系I

-第七节:数据和算法的关系II

--第七节:数据和算法的关系II

-第八节:大数据

--第八节:大数据

-第九节:数据挖掘技术和数据算法的展望

--第九节:数据挖掘技术和数据算法的展望

-第六讲:数据与算法--Quiz6

第七讲:通讯与网络

-第一节:基本内容简介

--第一节:基本内容简介

-第二节:信息的基本概念和传输的几种方式

--第二节:信息的基本概念和传输的几种方式

-第三节:交换的概念和网络的几种形式

--第三节:交换的概念和网络的几种形式

-第四节:模拟与数字通信

--第四节:模拟与数字通信

-第五节:调制和解调

--第五节:调制和解调

-第六节:传输涉及的基本理论

--第六节:传输涉及的基本理论

-第七节:信息论和几种相关的编码方式

--第七节:信息论和几种相关的编码方式

-第八节:多址方式

--第八节:多址方式

-第九节:交换的基本概念

--第九节:交换的基本概念

-第十节:网络分层的基本概念

--第十节:网络分层的基本概念

-第十一节:互联网的基本原理和有限状态机模型

--第十一节:互联网的基本原理和有限状态机模型

-第七讲:通讯与网络--Quiz7

第八讲:媒体与认知

-第一讲:内容简介

--第一讲:内容简介

-第二讲:信息与媒体

--第二讲:信息与媒体

-第三讲:人类感知与认知

--第三讲:人类感知与认知

-第四讲:智能信息处理

--第四讲:智能信息处理

-第五讲:媒体与认知相互作用

--第五讲:媒体与认知相互作用

-第六讲:媒体认知应用

--第六讲:媒体认知应用

-第七讲:总结

--第七讲:总结

-第八讲:媒体与认知--Quiz8

期末考试

-期末考试--Final Exam

第六节:性能问题笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。