1266 lines
57 KiB
Markdown
1266 lines
57 KiB
Markdown
# 第1章 概述 - 章节关键原文
|
||
|
||
> **说明**:以下内容严格按原文摘抄所有老师的PPT核心知识点、定义、公式、核心论述,分老师、分slide整理,标记清楚来源。
|
||
|
||
---
|
||
|
||
## 曲冠南老师(原PPT:第1章 概述 - 曲冠南上课用--20260312(4),共58张幻灯片)
|
||
|
||
### Slide 4 - ENIAC诞生背景
|
||
```
|
||
社会的需求对科技进步的作用要超过10所大学。
|
||
---- 恩格斯
|
||
|
||
第一台通用电子计算机诞生于1946年
|
||
世界上第一台现代电子计算机"埃尼阿克"(ENIAC),诞生于1946年2月14日的美国宾夕法尼亚大学,并于次日正式对外公布。ENIAC长30.48米,宽1米,占地面积约170平方米,30个操作台,约相当于10间普通房间的大小,重达30吨,耗电量150千瓦,造价48万美元。它包含了17,468真空管7,200水晶二极管, 1,500 中转, 70,000电阻器, 10,000电容器,1500继电器,6000多个开关,每秒执行5000次加法或400次乘法,是继电器计算机的1000倍、手工计算的20万倍。
|
||
ENIAC于1955年退役。
|
||
|
||
Pentium 4 2.0 CPU, 每秒约80亿次二进制加法
|
||
```
|
||
|
||
### Slide 6-7 - 计算机技术的发展
|
||
```
|
||
1.1.1 计算机技术的发展
|
||
计算机性能的发展源于如下两个方面
|
||
半导体技术的发展
|
||
计算机体系结构的发展
|
||
|
||
处理器性能的增长主要是半导体技术驱动。
|
||
虽然半导体技术发展迅速,但是这一阶段的飞速发展更归功于体系结构和组织思想的发展。
|
||
功耗和指令级的并行限制了单处理机的性能。2007年开始,单芯片上核数每年都在增长。
|
||
性能增长在降低,摩尔定律受限,并行化受(Amdahl定律)
|
||
|
||
计算机性能的发展是由半导体制造工艺和计算机体系结构的发展共同促成的。
|
||
```
|
||
|
||
### Slide 9 - Flynn分类法
|
||
```
|
||
1.1.2 并行度和并行体系结构
|
||
20世纪60年代,Michael Flynn在研究并行计算工作量时,提出一种简单的分类方式,至今我们仍在使用:
|
||
单指令流、单数据流,Single Instruction Stream, Single Data Stream, SISD。
|
||
单指令流、多数据流,Single Instruction Stream, Multiple Data Stream, SIMD。
|
||
多指令流、单数据流,Multiple Instruction Stream, Single Data Stream, MISD。
|
||
多指令流、多数据流, Multiple Instruction Stream, Multiple Data Stream, MIMD。
|
||
```
|
||
|
||
### Slide 10 - SISD
|
||
```
|
||
单指令流单数据流,SISD
|
||
这个类别是单处理器;
|
||
可以使用指令级并行,如流水线、动态调度、超标量。
|
||
```
|
||
|
||
### Slide 11 - SIMD
|
||
```
|
||
单指令流多数据流,SIMD
|
||
同一指令操纵多条数据流,由不同处理器,对多个数据项进行并行数据处理;
|
||
每个数据处理器可有自己的数据存储器,但是只有一个指令存储器和控制器;
|
||
向量体系结构,GPU
|
||
```
|
||
|
||
### Slide 12 - MIMD
|
||
```
|
||
多指令流多数据流,MIMD
|
||
每个处理器都自己取指令,并对自己的数据进行处理;
|
||
任务级并行;
|
||
紧密耦合的MIMD结构—线程级并行;
|
||
松散耦合MIMD结构—集群。
|
||
```
|
||
|
||
### Slide 13 - MISD
|
||
```
|
||
多指令流单数据流, MISD
|
||
目前为止,没有此种类型的商用机;
|
||
脉动阵列。
|
||
```
|
||
|
||
### Slide 16 - 计算机体系结构定义
|
||
```
|
||
1.2 计算机体系结构
|
||
狭义的定义 (Amdahl的定义)
|
||
指令集的设计;
|
||
需要考虑:寄存器、内存地址、访存方式、指令集的设计;
|
||
经典定义:机器语言程序员所见到的计算机的属性,即概念性结构和功能特性。
|
||
广义的定义 (《计算机体系结构-量化研究方法》中的定义)
|
||
包括计算机设计所有三个方面
|
||
指令集结构
|
||
组成
|
||
硬件
|
||
```
|
||
|
||
### Slide 17 - 指令集结构(ISA)
|
||
```
|
||
指令集结构(ISA)
|
||
分类
|
||
现在几乎所有的ISA都划分为通用寄存器体系结构中;
|
||
两种主流版本:寄存器-存储器,如80X86; 载入-存储,如ARM和MIPS。
|
||
存储器寻址
|
||
字节寻址
|
||
访问对齐
|
||
寻址模式:立即寻址、寄存器寻址、偏移寻址等
|
||
操作数类型和大小
|
||
指令类型:数据传输、算逻运算、控制指令、浮点指令 等;
|
||
指令格式:固定、可变
|
||
```
|
||
|
||
### Slide 18 - 组成和硬件
|
||
```
|
||
组成和硬件
|
||
组成是计算机的逻辑实现,包括存储系统、存储器连接、CPU内部设计。
|
||
硬件是计算机的具体实现,包括详尽的逻辑设计和封装技术。
|
||
|
||
真正的计算机体系结构:设计满足目标和功能需求的组织和硬件。
|
||
--- 《计算机体系结构-量化研究方法》
|
||
```
|
||
|
||
### Slide 20 - 技术趋势
|
||
```
|
||
1. 不可或缺的实现技术
|
||
1.3.1 技术趋势
|
||
晶体管密度大概每年增加35%, 差不多每四年翻两番。晶片大小的增长速度要慢一点。两者综合起来,一个芯片上的晶体管数目每年大约增长40%-55%,这就是摩尔定律,单位面积上的晶体管数目,每18个月翻一翻。
|
||
最近大约十年,单个DRAM芯片容量每年大约增加25%-40%,大约每2-3年翻一翻,但是增长速度在下降。DRAM技术是主存储器的基础。
|
||
个人移动设备中存储器件。近十年来,个人移动设备迅速普及,这种趋势刺激了半导体闪存容量的迅速提升。
|
||
磁盘技术是服务器和数据存储的核心技术。在1990年之前,磁盘密度每年提高大约30%,3年翻一翻。之后每年增长60%,1996年的增速为100%。从2004年开始,每年增长40%左右。
|
||
网络的性能取决于交换机的性能和传输系统的性能。
|
||
```
|
||
|
||
### Slide 21 - 性能趋势:带宽和延迟
|
||
```
|
||
2. 性能趋势:带宽和延迟
|
||
带宽 或 吞吐量
|
||
单位时间的工作量
|
||
处理器的带宽增长 32,000-40,000 倍
|
||
内存和磁盘的带宽增长 300-1200 倍
|
||
延迟 或 响应时间
|
||
一个事件从开始到完成所经历的时间
|
||
处理器响应时间改进 50-90 倍
|
||
内存和磁盘的响应时间改进 6-8 倍
|
||
|
||
显然,在这些技术的发展过程中,带宽的改进要明显优于延迟。一个简单的经验法则是:带宽的增长速度至少是延迟改进速度的平方。
|
||
```
|
||
|
||
### Slide 22 - 晶体管性能与连线发展
|
||
```
|
||
3. 晶体管(Transistors)性能与连线(wire)的发展
|
||
集成电路的制造工艺是以特征尺寸来衡量的
|
||
特征尺寸 就是一个晶体管或者一条连线在x方向或者y方向的最小尺寸。
|
||
特征尺寸:1971为 10 微米, 2011年0.032微米(32纳米技术),2017年 0 .016微米(16纳米技术)。
|
||
特征尺寸下降时,晶体管性能以线性提升,晶体管的密度将以平方曲线上升。
|
||
|
||
随着特征尺寸缩小,连线会变短,但是单位长度的电阻和电容都会变差。和晶体管性能相比,连线延迟方面的改进少的可怜。
|
||
借助这种增长,微处理器从4位迅速发展到64位,并从单核发展到多核。
|
||
```
|
||
|
||
### Slide 23 - 功率和能耗趋势
|
||
```
|
||
功率和能耗:系统观点
|
||
处理器需要的最大功率是多少?
|
||
|
||
持续功耗 -- 热设计功耗 (Thermal Design Power, TDP)
|
||
|
||
能耗和能耗效率。
|
||
对于几乎所有类型的计算机来说,功率都是计算机设计人员面对的挑战。
|
||
第一,必须将功率引入芯片,并进行分配;
|
||
第二,功率以热的形式耗散,必须消除。
|
||
如果处理器需要的最大功率超过电源系统能提供的功率,就会导致电压下降,而电压下降会导致期间无法正常工作;
|
||
决定了冷却需求,当温度接近节点温度上限时,电路降低时钟频率,从而减小功率;如果不成功,启动热过载启动装置,以降低芯片的功率。
|
||
所谓的功率,就是单位时间的能耗。 用能耗更适合作为对比处理器的参数。因为能耗这个参数同时包含了执行任务的时间。 也就是,如果对比两个处理器对于某一给定任务,那个更高效,那么应该对比的是执行该项任务的能耗,而非功率。
|
||
```
|
||
|
||
### Slide 24 - 微处理器内部的能耗和功率
|
||
```
|
||
2. 微处理器内部的能耗和功率
|
||
主要能耗源:开关晶体管(动态能耗)
|
||
时钟频率和电源电压保持不变的情况下,提高能耗效率。
|
||
关闭非活动模块,以节省能耗和动态功率;
|
||
动态电压-频率调整。微处理器可以提供不同工作频率。
|
||
针对典型情景的设计,PMD、笔记本等的省电模式;
|
||
超频。Intel在2008年开始提供Turbo模式,在这种模式下,芯片可以判定在少数几个核心上以较高的时钟频率短时间运行。
|
||
```
|
||
|
||
### Slide 26 - Intel架构史
|
||
```
|
||
1. 8086架构(1978年)
|
||
家族代表:工业控制的基石80186
|
||
关键点:x86架构的奠基者,16位处理器,分段内存管理。
|
||
工艺:3微米。
|
||
|
||
3. 80486架构(1989年)
|
||
家族代表:i486DX
|
||
关键点:片上缓存出现,集成浮点单元FPU,优化五级流水,时钟倍频。
|
||
工艺:1微米到0.6微米
|
||
|
||
2. 80386架构(1985年)
|
||
家族代表:80386DX。
|
||
关键点:迈入32位时代,保护模式(现代os的基石),首次集成MMU,流水线开始形成。
|
||
工艺:1.5微米到1微米。
|
||
|
||
4. Pentium P5架构(1993年)
|
||
家族代表:Pentium 60(开山),Pentium 133(巅峰),Pentium MMX(终极)。
|
||
关键点:超标量双流水线,分支预测,64位外部数据总线与突发模式。
|
||
工艺:0.8微米到0.35微米
|
||
|
||
5. P6架构 (1995年)
|
||
家族代表:Pentium Pro,Pentium ll。
|
||
关键点:动态执行(分支预测,乱序执行,推测执行),多媒体扩展指令集MMX(SIMD技术),独立L2缓存(外置/内置)。
|
||
工艺:0.35微米到0.13微米
|
||
|
||
6. Netburst架构(2000年)
|
||
家族代表:Pentium 4 willamette。
|
||
关键点:超高频(最高达3.8GHz),超长流水(31级),超线程(单核模拟双核),SIMD扩展指令集SSE2/SSE3。
|
||
工艺:0.18微米到65纳米
|
||
```
|
||
|
||
### Slide 27-29 - 后续Intel架构
|
||
```
|
||
7. Core架构 (2006年)
|
||
家族代表:core 2 Duo conroe。"扣肉"
|
||
工艺:65纳米到45纳米。
|
||
|
||
8. Nehalem架构(2008年) -- 第1代酷睿
|
||
家族代表:core i7 900系列
|
||
关键点:集成内存控制器(DDR3),高速点对点QPI总线替代FSB,超线程技术,turbo boost技术(动态频率调节),三级缓存架构。
|
||
工艺:45纳米。
|
||
|
||
9. Sandy bridge架构(2011年)-- 第2代酷睿
|
||
家族代表:core i7 2600K,core i5 2500K
|
||
关键点:融合架构(CPU与GPU同芯片集成,共享三级缓存),环形总线,引入256位高级矢量扩展(AVX)指令集。
|
||
工艺:32纳米。
|
||
|
||
10. Haswell架构(2013年)-- 第4代酷睿
|
||
家族代表:core i7 4770K,core i5 4670K。
|
||
关键点:功耗控制,图形性能,指令集扩展。采用集成式FIVR(全集成电压调节模块)降低功耗。给"超级本"铺了路。
|
||
工艺:22纳米。
|
||
|
||
11. Skylake架构 (2015年)-- 第6代酷睿
|
||
家族代表:core i7 6700K,core i5 6600K
|
||
关键点:架构优化(提升ILP),支持DDR4内存,提升高速互联(DMI 3.0)。但是去掉了FIVR。
|
||
工艺:14纳米工艺的成熟之作。
|
||
|
||
12. Coffee Lake架构 (2017年) -- 第8代酷睿
|
||
家族代表:core i7 8700K
|
||
关键点:核数跃进(i7 从4核8线程到6核12线程),缓存与频率增强。
|
||
工艺:成熟的14纳米++(14nm的终极版本)
|
||
|
||
13. Alder Lake架构 (2021年) -- 第12代酷睿
|
||
家族代表:core i9 12900K
|
||
关键点:首次采用混合架构,大小核,即P(性能)核+E(效能)核。
|
||
首发支持PCIe5.0。首发支持DDR5。
|
||
被誉为英特尔近十年来最具革新意义的桌面处理器架构。
|
||
工艺:Intel 7 工艺(10纳米工艺的终极改进版)
|
||
|
||
14. Raptor lake 架构(2023年) - 第13代酷睿
|
||
家族代表:core i9 13900K。
|
||
关键点:对Alder Lake的深度优化和规格扩充(核心数量堆叠 + 频率极限压榨)
|
||
工艺:增强版Intel 7工艺
|
||
|
||
15. Raptor lake Refresh架构(2023年) - 第14代酷睿
|
||
家族代表:core i9 14900K。
|
||
关键点:本质未变,小幅升级。
|
||
工艺:增强版Intel 7工艺
|
||
core i 时代终结者
|
||
```
|
||
|
||
### Slide 30 - 最新架构
|
||
```
|
||
16. Meteor lake架构(2023年) -- 酷睿Ultra系列1
|
||
家族代表:core ultra 9 185H 。(主要是移动设备)
|
||
关键点:P和E核升级,强大的GPU模块,独立的NPU。
|
||
英特尔首款具备专用AI引擎的PC处理器,真正开启了 AI PC 的浪潮
|
||
工艺:Intel 4 工艺。从"单芯片"到"模块化芯粒chiplet"。
|
||
AI PC时代
|
||
|
||
17. Arrow lake架构(2024年) -- 酷睿Ultra系列2
|
||
家族代表:core ultra 200S系列。(将Meteteor lake推向桌面端)
|
||
关键点:AI入桌。
|
||
工艺:Intel 4 工艺。
|
||
最新的加强版plus系列产品,基于Arrow lake refresh 架构,于2026年3月11日发布。
|
||
```
|
||
|
||
### Slide 32 - 性能测试指标
|
||
```
|
||
1. 如何评价性能? -- 性能指标
|
||
响应时间/执行时间 -- 用户关心的
|
||
吞吐量 -- 仓库级计算机的操作人员关心的
|
||
2. 加速比
|
||
机器X比机器Y快, 是什么意思? -- 执行时间是稳定、可靠的性能度量
|
||
3. 执行时间
|
||
单个用户 –访问内存所需要的时间,访问磁盘所需要的时间,输入输出操作所需要的时间,操作系统开销,CPU执行时间。。。
|
||
|
||
多道程序–操作系统调度。。。太难了。
|
||
----- 墙上时间: 包括所有的系统开销
|
||
CPU时间: only computation time
|
||
4. 基准测试
|
||
程序内核 :实际应用程序中的短小、关键部分;
|
||
玩具程序:为了完成编程入门作业而编写的小程序,通常不超过100行,如快排程序;
|
||
合成基准测试程序:为了匹配实际应用程序的特征和行为编写的虚拟程序;
|
||
基准测试套件(Benchmark suites ):衡量处理器处理各种应用程序的性能。优势在于任何一个基准测试的弱点都会因为其他基准测试的存在而变小。最常用的是SPEC,所有SPEC基准测设套件及其报告都可以在www.spec.org中找到。
|
||
```
|
||
|
||
### Slide 33 - SPEC基准测试
|
||
```
|
||
关于基准程序测试
|
||
1. 计算机性能的一种常用的评估方式是使用基准评测程序,也就是benchmark。基准评测程序是专门设计用来评价计算机性能的一组程序,从而反映机器在实际工作负载时的时间。在不同的机器上运行同一套基准程序,通过比较运行时间来评价机器性能。
|
||
2. SPEC(System Performance Evaluation Cooperative)是由许多计算机销售商联合出资赞助并支持的组织,目的是为现代计算机系统建立基准评测程序集,该组织成立于1988年。1989年,SPEC建立了重点面向处理器性能的基准程序集,即SPEC89。历经五代发展,应用时间最长和最广泛的是SPEC CPU 2006。它是由SPECint和SPECfp组成,前者包括了12个整数基准评测程序,后者包括19个基准评测程序。随着SPEC CPU 2017的发布,CPU 2006已经于2018年1月正式退休。
|
||
```
|
||
|
||
### Slide 36-37 - 充分利用并行
|
||
```
|
||
并行性的含义:
|
||
计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。即只要在时间上相互重叠,就存在并行性。
|
||
同时性:两个或两个以上的事件在同一时刻发生。
|
||
并发性:两个或两个以上的事件在同一时间间内发生。
|
||
提高并行性的三种途径:
|
||
时间重叠: 引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
|
||
资源重复:引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
|
||
资源共享:这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。如,多道程序。
|
||
|
||
时间重叠
|
||
单处理机中 -- 部件功能专用化
|
||
把一件工作按功能分割为若干相互联系的部分;
|
||
把每一部分指定给专门的部件完成;
|
||
按时间重叠原理把各部分的执行过程在时间上重叠起来,使所有部件依次分工完成一组同样的工作。
|
||
多处理机中 – 处理机专用化
|
||
专用外围处理机
|
||
例如,输入/输出功能的分离。
|
||
专用处理机
|
||
如数组运算、高级语言翻译、数据库管理等,分离出来。
|
||
异构型多处理机系统
|
||
由多个不同类型、至少担负不同功能的处理机组成,它们按照作业要求的顺序,利用时间重叠原理,依次对它们的多个任务进行加工,各自完成规定的功能动作。
|
||
```
|
||
|
||
### Slide 38 - 资源重复
|
||
```
|
||
资源重复
|
||
单处理机中 -- 重复设置功能部件
|
||
多存储体并行
|
||
数据/指令独立存储体
|
||
重复设置运算部件
|
||
多处理机中 – 重复设置处理机
|
||
容错系统
|
||
同构型多处理机系统
|
||
由多个同类型或至少担负同等功能的处理机组成,它们同时处理同一作业中能并行执行的多个任务。
|
||
低位交叉多体并行
|
||
```
|
||
|
||
### Slide 39 - 资源共享
|
||
```
|
||
资源共享
|
||
单处理机中
|
||
分时系统
|
||
多处理机中
|
||
分布式系统
|
||
```
|
||
|
||
### Slide 41 - 局部性原理
|
||
```
|
||
程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚。
|
||
常用的一个经验规则
|
||
程序执行时间的90%都是在执行程序中10%的代码。
|
||
程序的时间局部性
|
||
程序即将用到的信息很可能就是目前正在使用的信息。
|
||
程序的空间局部性
|
||
程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。
|
||
```
|
||
|
||
### Slide 43-46 - Amdahl定律
|
||
```
|
||
加速比 – 衡量系统的性能改进了多少
|
||
1.5.4 Amdahl定律
|
||
加速比
|
||
=
|
||
系统性能改进后
|
||
系统性能改进前
|
||
=
|
||
性能 = 1/执行时间
|
||
=
|
||
通常 大于 1
|
||
|
||
换个方式来看
|
||
总执行时间改进后
|
||
不可改进部分比例 ×总执行时间改进前
|
||
不可改进部分的执行时间 + 可改进部分改进后执行时间
|
||
=
|
||
可改进比例 ×总执行时间改进前
|
||
部件加速比
|
||
+
|
||
(1-可改进比例)
|
||
=
|
||
=
|
||
总执行时间改进前
|
||
×
|
||
总执行时间改进后
|
||
总执行时间改进前
|
||
=
|
||
|
||
部件加速比:可改进部分改进以后,性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比。 一般情况下部件加速比是大于1的。
|
||
例如:若系统改进后,可改进部分的执行时间是2秒,而改进前其执行时间为5秒,则部件加速比为5/2。
|
||
|
||
可改进比例:在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。
|
||
例如:一个需运行60秒的程序中有20秒的运算可以加速,那么这个比例就是20/60。
|
||
|
||
Amdahl定律表明:加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比。
|
||
```
|
||
|
||
### Slide 47-48 - Amdahl定律例题
|
||
```
|
||
例 将计算机系统中某一功能的处理速度提高到原来的20倍,但该功能的处理时间仅占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
|
||
解 由题可知,可改进比例 = 40% = 0.4,部件加速比 = 20
|
||
根据Amdahl定律可知:
|
||
总加速比 = 1/(0.6 + (0.4/20)) = 1.613
|
||
采用此提高性能的方法后,能使整个系统的性能提高到原来的1.613倍。
|
||
```
|
||
|
||
### Slide 49 - Amdahl定律推论
|
||
```
|
||
Amdahl定律:一种性能改进的递减规则
|
||
如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。
|
||
重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过 1/(1-可改进比例)
|
||
```
|
||
|
||
### Slide 50 - 公式拓展
|
||
```
|
||
公式拓展
|
||
假设:
|
||
Si为第 i 种部件的加速比;
|
||
Pi为第 i 种部件执行时间占总执行时间中的比例。
|
||
```
|
||
|
||
### Slide 51-53 - CPU性能公式
|
||
```
|
||
执行一个程序所需的CPU时间
|
||
CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
|
||
其中:
|
||
执行程序所需的时钟周期数 = 每条指令执行的平均时钟周期数 CPI ×所执行的指令条数 IC;
|
||
时钟周期时间是系统时钟频率的倒数。
|
||
CPU时间公式也可以写为如下形式:
|
||
CPU时间 = IC ×CPI ×时钟周期时间
|
||
或:
|
||
CPU时间 = IC ×CPI ×(1/时钟频率)
|
||
|
||
请思考:如何降低CPU时间?
|
||
CPU时间 = IC × CPI × 时钟周期时间
|
||
指令集结构 编译技术 计算机组成 硬件实现技术
|
||
CISC → RISC
|
||
IC CPI
|
||
|
||
CPI公式拓展
|
||
CPI时间公式拓展
|
||
假设:计算机系统有n种指令,
|
||
CPIi :第i种指令的处理时间(周期数);
|
||
ICi :在程序中第i种指令出现的次数;
|
||
则 CPI = Σ(CPIi × ICi) / IC
|
||
其中,(ICi/IC)反映了第i种指令在程序中所占的比例。
|
||
```
|
||
|
||
### Slide 54-57 - CPU性能公式例题
|
||
```
|
||
例 考虑条件分支指令的两种不同设计方法:
|
||
(1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。
|
||
(2)CPUB:在分支指令中包括比较过程。
|
||
在这两种CPU中,条件分支指令都占用2个时钟周期,而所有其他指令占用1个时钟周期。对于CPUA,执行的指令中分支指令占20%;由于每条分支指令之前都需要有比较指令,因此比较指令也占20%。由于CPUA在分支时不需要比较,因此CPUB的时钟周期时间是CPUA的1.25倍。问:哪一个CPU更快?
|
||
|
||
分 析
|
||
CPUA:
|
||
需要两条指令完成分支,比较置条件码指令 + 分支指令。
|
||
假设完成某一功能F,使用CPUA,程序需100条指令;
|
||
程序指令构成:比较指令20条,分支指令20条,其他指令60条
|
||
|
||
CPUB:
|
||
需要一条指令完成比较和分支
|
||
假设完成同样功能F,使用CPUB,程序需80条指令;
|
||
程序指令构成:分支指令20条,其他指令60条
|
||
|
||
解
|
||
我们不考虑所有系统问题,所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%,剩下的指令占用1个时钟周期。所以
|
||
CPIA = 0.2 × 2 + 0.80 × 1 = 1.2
|
||
则CPUA性能为
|
||
总CPU时间A = ICA × 1.2 ×时钟周期A
|
||
|
||
在CPUB中没有独立的比较指令,所以CPUB的程序量为CPUA的80%,分支指令的比例为 20%/80% = 25%
|
||
这些分支指令占用2个时钟周期,而剩下的75%的指令占用1个时钟周期,因此
|
||
CPIB = 0.25 × 2 + 0.75 × 1 = 1.25
|
||
因为CPUB不执行比较,故
|
||
ICB = 0.8 × ICA
|
||
同时,根据假设,有
|
||
时钟周期B = 1.25 × 时钟周期A
|
||
因此CPUB性能为
|
||
总CPU时间B = ICB × CPIB × 时钟周期B
|
||
= 0.8 ×ICA × 1.25 ×(1.25 ×时钟周期A)
|
||
= 1.25 ×ICA ×时钟周期A
|
||
|
||
在这些假设之下,尽管CPUB执行指令条数较少,CPUA因为有着更短的时钟周期,所以比CPUB快。
|
||
```
|
||
|
||
### Slide 58 - 摩尔定律与Dennard定律
|
||
```
|
||
1.5.6 摩尔定律
|
||
摩尔定律是由英特尔(lntel)名誉董事长戈登·摩尔( Gordon moore)经过长期观察总结的经验 。被称为计算机第一定律。摩尔定律是指单芯片上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。
|
||
1.5.7 Dennard定律
|
||
晶体管面积的缩小使得其所消耗的电压以及电流会以差不多相同的比例缩小。也就是说,如果晶体管的大小减半,该晶体管的静态功耗将会降至四分之一(电压电流同时减半)。
|
||
```
|
||
|
||
---
|
||
|
||
## 李宏图老师(原PPT:第1章 概述 - 改,共55张幻灯片)
|
||
|
||
### Slide 4 - 计算机技术发展
|
||
```
|
||
计算机体系结构和组织方式的发展一起促成了计算及性能以超过50%的年增长率持续增长17年(1986-2003)。四重效果:
|
||
增强可供计算机用户使用的功能;
|
||
导致新型计算机的出现;
|
||
半导体制造业的持续发展使得基于微处理器的计算机在整个计算机设计领域中占主导地位;
|
||
对软件开发的影响。
|
||
硬件复兴结束(2004— )。
|
||
原因:功耗,ILP开发受限。
|
||
发展方向:数据级并行(DLP),线程级并行(TLP)。
|
||
```
|
||
|
||
### Slide 5 - 并行度和并行体系结构
|
||
```
|
||
1.1.2 并行度和并行体系结构
|
||
20世纪60年代,Michael Flynn在研究并行计算工作量时,提出一种简单的分类方式,至今我们仍在使用:
|
||
单指令流、单数据流
|
||
Single Instruction Stream, Single Data Stream, SISD。
|
||
单指令流、多数据流
|
||
Single Instruction Stream, Multiple Data Stream, SIMD。
|
||
多指令流、单数据流
|
||
Multiple Instruction Stream, Single Data Stream, MISD。
|
||
多指令流、多数据流
|
||
Multiple Instruction Stream, Multiple Data Stream, MIMD。
|
||
```
|
||
|
||
### Slide 6-9 - Flynn分类法详解
|
||
```
|
||
单指令流单数据流,SISD
|
||
这个类别是单处理器;
|
||
可以使用指令级并行,如流水线、动态调度、超标量。
|
||
|
||
同一指令操纵多条数据流,由不同处理器,对多个数据项进行并行数据处理;
|
||
每个数据处理器可有自己的数据存储器,但是只有一个指令存储器和控制器;
|
||
向量体系结构,GPU
|
||
|
||
每个处理器都自己取指令,并对自己的数据进行处理;
|
||
任务级并行;
|
||
紧密耦合的MIMD结构—线程级并行;
|
||
松散耦合MIMD结构—集群。
|
||
|
||
多指令流单数据流, MISD
|
||
目前为止,没有此种类型的商用机;
|
||
脉动阵列。
|
||
```
|
||
|
||
### Slide 11 - 计算机体系结构定义
|
||
```
|
||
1.2 计算机体系结构
|
||
狭义的定义 (Amdahl的定义)
|
||
指令集的设计;
|
||
需要考虑:寄存器、内存地址、访存方式、指令集的设计;
|
||
经典定义:机器语言程序员所见到的计算机的属性,即概念性结构和功能特性。
|
||
广义的定义 (《计算机体系结构-量化研究方法》中的定义)
|
||
包括计算机设计所有三个方面 -- 指令集结构,组成和硬件。
|
||
```
|
||
|
||
### Slide 14-18 - 技术趋势详述
|
||
```
|
||
不可或缺的实现技术
|
||
集成电路
|
||
晶体管密度每年大约增长35%,约4年翻两倍。晶片大小每年增长10%-20%。
|
||
芯片上的晶体管数目每年大约增长40%-50%。(18-24个月翻倍)
|
||
|
||
不可或缺的实现技术
|
||
半导体DRAM
|
||
单个DRAM芯片的容量每年增长25%-40%
|
||
2-3年翻倍
|
||
|
||
不可或缺的实现技术
|
||
半导体闪存
|
||
单个芯片每年增长50%-60%;
|
||
每比特的价格约是DRAM价格的1/15~1/20。
|
||
|
||
不可或缺的实现技术
|
||
磁盘技术
|
||
磁盘密度每年提高约40%,
|
||
每比特价格约是DRAM的1/300~1/500。
|
||
|
||
不可或缺的实现技术
|
||
网络技术
|
||
取决于交换机性能和传输系统的性能。
|
||
以太网为例:20世纪80年代的802.3标准的10Mbit/s——2010年802.3.ba标准的40G~100Gbit/s。
|
||
```
|
||
|
||
### Slide 19 - 带宽和延迟趋势
|
||
```
|
||
带宽 或 吞吐量
|
||
单位时间的工作量
|
||
处理器的带宽增长 32,000-40,000 倍
|
||
内存和磁盘的带宽增长 300-1200 倍
|
||
延迟 或 响应时间
|
||
一个事件从开始到完成所经历的时间
|
||
处理器响应时间改进 50-90 倍
|
||
内存和磁盘的响应时间改进 6-8 倍
|
||
在这些技术的发展过程中,带宽的改进要明显优于延迟。一个简单的经验法则是:带宽的增长速度至少是延迟改进速度的平方。
|
||
```
|
||
|
||
### Slide 20 - 晶体管性能与连线发展
|
||
```
|
||
集成电路的制造工艺是以特征尺寸来衡量的
|
||
特征尺寸 就是一个晶体管或者一条连线在x方向或者y方向的最小尺寸。
|
||
特征尺寸:1971为 10 微米, 2011年0.032微米(32纳米技术),2017年 0 .016微米(16纳米技术)。
|
||
特征尺寸下降时,晶体管性能以线性提升。
|
||
随着特征尺寸缩小,连线会变短,但是单位长度的电阻和电容都会变差。和晶体管性能相比,连线延迟方面的改进少的可怜。
|
||
晶体管的密度将以平方曲线上升。
|
||
```
|
||
|
||
### Slide 21-22 - 功率和能耗趋势
|
||
```
|
||
性能 功耗 能耗
|
||
处理器需要的最大功耗。
|
||
持续功耗 -- 热设计功耗 (Thermal Design Power, TDP)
|
||
决定了冷却需求;
|
||
当温度接近节点温度上限时,电路降低时钟频率,从而减小功率;如果不成功,启动热过载启动装置,以降低芯片的功率。
|
||
能耗和能耗效率。
|
||
|
||
2. 微处理器内部的能耗和功率
|
||
动态能耗
|
||
时钟频率和电源电压保持不变的情况下,提高能耗效率。
|
||
关闭非活动模块
|
||
动态电压-频率调整
|
||
针对典型情景的设计
|
||
超频
|
||
```
|
||
|
||
### Slide 23-26 - 成本趋势
|
||
```
|
||
时间
|
||
学习曲线——制造成本随时间的推移而降低。
|
||
学习曲线是根据成品率的变化测量的。
|
||
产量
|
||
产量的提高缩短学习曲线时间。
|
||
产量的提高增加购买与制造效率。
|
||
大众化
|
||
是指多家销售商大量出售基本相同的产品。
|
||
个人计算机行业的大部分领域已经变成大众化商品业务。
|
||
|
||
集成电路成本
|
||
成本与价格
|
||
制造成本与销售价格之间的差额缩小。
|
||
制造成本与运行成本
|
||
仓库级计算机
|
||
云计算
|
||
挖矿
|
||
```
|
||
|
||
### Slide 28 - 性能测试
|
||
```
|
||
性能指标
|
||
响应时间/执行时间
|
||
吞吐率
|
||
加速比
|
||
机器X比机器Y快, 是什么意思?
|
||
执行时间
|
||
墙上时间: 包括所有的系统开销
|
||
CPU时间: only computation time
|
||
基准测试
|
||
程序内核 :实际应用程序中的短小、关键部分;
|
||
玩具程序:为了完成编程入门作业而编写的小程序,通常不超过100行,如快排程序;
|
||
合成基准测试程序:为了匹配实际应用程序的特征和行为编写的虚拟程序;
|
||
基准测试套件(Benchmark suites ):衡量处理器处理各种应用程序的性能。
|
||
```
|
||
|
||
### Slide 30-34 - 充分利用并行
|
||
```
|
||
1.5.1 充分利用并行——并行性的含义
|
||
计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。即只要在时间上相互重叠,就存在并行性。
|
||
同时性:两个或两个以上的事件在同一时刻发生。
|
||
并发性:两个或两个以上的事件在同一时间间内发生。
|
||
|
||
1.5.1 充分利用并行——提高并行性的三种途径:
|
||
时间重叠: 引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
|
||
资源重复:引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
|
||
资源共享:这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。如,多道程序。
|
||
|
||
时间重叠
|
||
单处理机中 -- 部件功能专用化
|
||
多处理机中 – 处理机专用化
|
||
|
||
资源重复
|
||
单处理机中 -- 重复设置功能部件
|
||
多处理机中 – 重复设置处理机
|
||
|
||
资源共享
|
||
单处理机中
|
||
分时系统
|
||
多处理机中
|
||
分布式系统
|
||
```
|
||
|
||
### Slide 36 - 局部性原理
|
||
```
|
||
程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚。
|
||
常用的一个经验规则
|
||
程序执行时间的90%都是在执行程序中10%的代码。
|
||
程序的时间局部性
|
||
程序即将用到的信息很可能就是目前正在使用的信息。
|
||
程序的空间局部性
|
||
程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。
|
||
```
|
||
|
||
### Slide 37 - 重点关注常见情形
|
||
```
|
||
对经常发生的情况采用优化方法的原则进行选择,以得到更多的总体上的改进。
|
||
优化是指分配更多的资源、达到更高的性能或者分配更多的电能等。
|
||
例如:
|
||
相对溢出,不溢出是经常性事件。针对不溢出的情况进行性能设计,无需花过多的时间和精力在解决溢出上。
|
||
处理器的取值、译码比乘法器用的更加频繁,优先优化取指令和译码部件。
|
||
```
|
||
|
||
### Slide 38-44 - Amdahl定律
|
||
```
|
||
加速比 – 衡量系统的性能改进了多少
|
||
1.5.4 Amdahl定律
|
||
加速比 = 系统性能改进后/系统性能改进前 = 性能 = 1/执行时间 通常 大于 1
|
||
|
||
换个方式来看
|
||
总执行时间改进后 = 不可改进部分的执行时间 + 可改进部分改进后执行时间
|
||
= 不可改进部分比例 ×总执行时间改进前 + 可改进比例 ×总执行时间改进前/部件加速比
|
||
|
||
加速比依赖于两个因素
|
||
可改进比例:在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。它总是小于等于1。
|
||
例如:一个需运行60秒的程序中有20秒的运算可以加速,那么这个比例就是20/60。
|
||
部件加速比:可改进部分改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比。 一般情况下部件加速比是大于1的。
|
||
例如:若系统改进后,可改进部分的执行时间是2秒,而改进前其执行时间为5秒,则部件加速比为5/2。
|
||
|
||
Amdahl定律表明:加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比。
|
||
|
||
系统加速比为改进前与改进后总执行时间之比
|
||
|
||
例 将计算机系统中某一功能的处理速度提高到原来的20倍,但该功能的处理时间仅占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
|
||
解 由题可知,可改进比例 = 40% = 0.4,
|
||
部件加速比 = 20
|
||
根据Amdahl定律可知:
|
||
总加速比 = 1/(0.6 + 0.4/20) = 1/(0.6 + 0.02) = 1/0.62 = 1.613
|
||
采用此提高性能的方法后,能使整个系统的性能提高到原来的1.613倍。
|
||
|
||
Amdahl定律:一种性能改进的递减规则
|
||
如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。
|
||
重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过 1/(1-可改进比例)
|
||
```
|
||
|
||
### Slide 45 - 公式拓展
|
||
```
|
||
公式拓展
|
||
加速比 = 1 / Σ(1-Si)/P
|
||
假设:
|
||
Si为第 i 种部件的加速比;
|
||
Pi为第 i 种部件执行时间占总执行时间中的比例。
|
||
```
|
||
|
||
### Slide 46-50 - CPU性能公式
|
||
```
|
||
执行一个程序所需的CPU时间
|
||
CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
|
||
其中:
|
||
执行程序所需的时钟周期数 = 每条指令执行的平均时钟周期数 CPI ×所执行的指令条数 IC
|
||
时钟周期时间是系统时钟频率的倒数
|
||
|
||
CPU时间公式也可以写为如下形式:
|
||
CPU时间 = IC ×CPI ×时钟周期时间
|
||
或:
|
||
CPU时间 = IC ×CPI ×(1/时钟频率)
|
||
|
||
请思考:如何降低CPU时间?
|
||
CPU时间 = IC × CPI × 时钟周期时间
|
||
指令集结构 编译技术 计算机组成 硬件实现技术
|
||
CISC → RISC
|
||
IC CPI
|
||
|
||
对CPU性能公式进行进一步细化
|
||
假设:计算机系统有n种指令,
|
||
CPIi :第i种指令的处理时间;
|
||
ICi :在程序中第i种指令出现的次数;
|
||
则 CPU时钟周期数 = Σ(CPIi × ICi)
|
||
|
||
CPI可以表示为
|
||
CPI = Σ(CPIi × ICi) / IC = Σ(CPIi × (ICi/IC))
|
||
其中,(ICi/IC)反映了第i种指令在程序中所占的比例。
|
||
```
|
||
|
||
### Slide 51-53 - CPU性能公式例题
|
||
```
|
||
例 考虑条件分支指令的两种不同设计方法:
|
||
(1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。
|
||
(2)CPUB:在分支指令中包括比较过程。
|
||
在这两种CPU中,条件分支指令都占用2个时钟周期,而所有其他指令占用1个时钟周期。对于CPUA,执行的指令中分支指令占20%;由于每条分支指令之前都需要有比较指令,因此比较指令也占20%。由于CPUA在分支时不需要比较,因此CPUB的时钟周期时间是CPUA的1.25倍。问:哪一个CPU更快?如果CPUB的时钟周期时间只是CPUA的1.1倍,哪一个CPU更快呢?
|
||
|
||
解 我们不考虑所有系统问题,所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%,剩下的指令占用1个时钟周期。所以
|
||
CPIA = 0.2 × 2 + 0.80 × 1 = 1.2
|
||
则CPUA性能为
|
||
总CPU时间A = ICA × 1.2 ×时钟周期A
|
||
根据假设,有
|
||
时钟周期B = 1.25 × 时钟周期A
|
||
|
||
在CPUB中没有独立的比较指令,所以CPUB的程序量为CPUA的80%,分支指令的比例为: 20%/80% = 25%
|
||
这些分支指令占用2个时钟周期,而剩下的75%的指令占用1个时钟周期,因此
|
||
CPIB = 0.25 × 2 + 0.75 × 1 = 1.25
|
||
因为CPUB不执行比较,故
|
||
ICB = 0.8 × ICA
|
||
因此CPUB性能为
|
||
总CPU时间B = ICB × CPIB × 时钟周期B
|
||
= 0.8 ×ICA × 1.25 ×(1.25 ×时钟周期A)
|
||
= 1.25 ×ICA ×时钟周期A
|
||
|
||
在这些假设之下,尽管CPUB执行指令条数较少,CPUA因为有着更短的时钟周期,所以比CPUB快。
|
||
如果CPUB的时钟周期时间仅仅是CPUA的1.1倍,则
|
||
时钟周期B = 1.10 ×时钟周期A
|
||
CPUB的性能为
|
||
总CPU时间B = ICB ×CPIB ×时钟周期B
|
||
= 0.8 ×ICA × 1.25 ×(1.10 ×时钟周期A)
|
||
= 1.10 × ICA ×时钟周期A
|
||
因此CPUB由于执行更少指令条数,比CPUA运行更快。
|
||
```
|
||
|
||
### Slide 55 - 摩尔定律与Dennard定律
|
||
```
|
||
1.5.6 摩尔定律
|
||
摩尔定律是由英特尔(lntel)名誉董事长戈登·摩尔(Gordon moore)经过长期观察总结的经验。被称为计算机第一定律。摩尔定律是指单芯片上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。
|
||
1.5.7 Dennard定律
|
||
晶体管面积的缩小使得其所消耗的电压以及电流会以差不多相同的比例缩小。也就是说,如果晶体管的大小减半,该晶体管的静态功耗将会降至四分之一(电压电流同时减半)。
|
||
```
|
||
|
||
---
|
||
|
||
## 谭婧炜佳老师(原PPT:第1章 概述,共74张幻灯片)
|
||
|
||
### Slide 4 - 计算机技术发展
|
||
```
|
||
计算机技术的发展
|
||
第一台通用电子计算机诞生于1946年
|
||
ENIAC
|
||
占地面积约170平方米,重达30吨,耗电量150千瓦,造价48万美元
|
||
每秒执行5000次加法或400次乘法
|
||
对比2025年11月Top500榜首:美国El Capitan超级计算机
|
||
1.809 EFlop/s, (1 EFlop/s等于每秒1百京次浮点指令=10^18)
|
||
|
||
计算机技术的飞速发展得益于两个方面
|
||
计算机制造技术的发展
|
||
计算机系统结构的创新
|
||
|
||
经历了4个发展过程
|
||
```
|
||
|
||
### Slide 5 - 发展过程详解
|
||
```
|
||
I. 计算机体系结构和组织方式的发展一起促成了计算机性能以超过50%的年增长率持续增长17年(1986-2003)。
|
||
这一飞速发展带来四重效果:
|
||
(1)增强可供计算机用户使用的功能;
|
||
(2)导致新型计算机的出现;
|
||
(3)半导体制造业的持续发展使得基于微处理器的计算机在整个计算机设计领域中占主导地位;
|
||
(4)对软件开发的影响。
|
||
|
||
II. 硬件复兴结束(2004-)。
|
||
原因:功耗,ILP开发受限。
|
||
发展方向:数据级并行(DLP),线程级并行(TLP)。
|
||
|
||
处理器性能的增长主要是半导体技术驱动。
|
||
虽然半导体技术发展迅速,但是这一阶段的飞速发展更归功于体系结构和组织思想的发展。
|
||
功耗和指令级的并行限制了单处理机的性能。2007年开始,单芯片上核数每年都在增长。
|
||
性能增长在降低,摩尔定律受限,并行化受限(Amdahl定律)
|
||
```
|
||
|
||
### Slide 6-7 - 摩尔定律
|
||
```
|
||
摩尔定律(Moore's Law)
|
||
摩尔定律是由英特尔(lntel)名誉董事长戈登·摩尔(Gordon Moore)经过长期观察总结的经验。被称为计算机第一定律。
|
||
摩尔定律: 单芯片上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。
|
||
|
||
摩尔定律是一个指数定律,它意味着在同样面积的芯片上,晶体管数量将每10年增长100倍。
|
||
指数级发展使集成电路成本迅速降低,成本降低刺激新需求,生产规模增长进一步压低成本,这样的良性循环最终让集成电路走进了人类生活的方方面面,成为信息化社会的基石。
|
||
```
|
||
|
||
### Slide 8-10 - Dennard Scaling
|
||
```
|
||
登纳德缩放比例定律(Dennard Scaling)
|
||
1974年, 登纳德的论文 "Design of ion-implanted MOSFETS with very small physical dimensions"指出:
|
||
芯片的工作电压、电流会随着晶体管尺寸缩小而等比例缩小。
|
||
例如:如果晶体管的大小减半,该晶体管的静态功耗将会降至四分之一(电压、电流同时减半)。
|
||
芯片业发展目标:保证功耗不变尽可能提高性能。
|
||
根据登纳德缩放比例,设计者可以大大地提高芯片的时钟频率,因为提高频率所带来的更多的动态功耗会和减小的静态功耗相抵消。
|
||
于是,登纳德缩放比例定律同摩尔定律一起引领了芯片行业30多年的飞速发展。因为在往同面积电路中集成更多晶体管的时候,提高芯片时钟频率成为了一个"免费的午餐"。
|
||
|
||
晶体管越小,量子隧穿效应导致晶体管漏电现象开始出现。
|
||
漏电现象打破登纳德定律:晶体管更小,静态功耗不减反增,带来很大的热能转换,芯片的散热成为了急需解决的问题。
|
||
散热不好,芯片寿命减少,甚至变得不稳定。
|
||
没有解决晶体管漏电的问题之前,单纯的增加芯片的时钟频率因散热问题变得不再现实。
|
||
芯片商开始停止高频芯片的研发,转而向低频多核的架构开始研究。
|
||
2004年,Intel公司宣布放弃高性能单处理器项目,转向多核的研发。
|
||
2006年开始,功耗墙问题导致处理器频率极限约为4GHz。
|
||
```
|
||
|
||
### Slide 11-16 - Flynn分类法
|
||
```
|
||
并行度和并行体系结构
|
||
20世纪60年代,Michael Flynn在研究并行计算工作量时,提出一种简单的分类方式,至今我们仍在使用:
|
||
Flynn分类法(Flynn's taxonomy)
|
||
按照指令流和数据流的多倍性进行分类。
|
||
指令流:计算机执行的指令序列。
|
||
数据流:由指令流调用的数据序列。
|
||
多倍性:在系统受限的部件上,同时处于同一执行阶段的指令或数据的最大数目。
|
||
|
||
Flynn分类法把计算机系统的结构分为4类:
|
||
单指令流、单数据流,Single Instruction Single Data, SISD。
|
||
单指令流、多数据流,Single Instruction Multiple Data, SIMD。
|
||
多指令流、单数据流,Multiple Instruction Single Data, MISD。
|
||
多指令流、多数据流, Multiple Instruction Multiple Data, MIMD。
|
||
|
||
单指令流单数据流,SISD
|
||
这个类别是单处理器;
|
||
可以使用指令级并行,如流水线、动态调度、超标量。
|
||
IS:指令流,DS:数据流,CS:控制流,CU:控制部件,PU:处理部件,MM和SM:存储器。
|
||
|
||
单指令流多数据流,SIMD
|
||
同一指令操纵多条数据流,由不同处理器,对多个数据项进行并行数据处理;
|
||
每个数据处理器可有自己的数据存储器,但是只有一个指令存储器和控制器;
|
||
向量体系结构,GPU
|
||
|
||
多指令流多数据流,MIMD
|
||
每个处理器都自己取指令,并对自己的数据进行处理;
|
||
任务级并行;
|
||
紧密耦合的MIMD结构—线程级并行;
|
||
松散耦合MIMD结构—集群。
|
||
|
||
多指令流单数据流, MISD
|
||
目前为止,没有此种类型的商用机;
|
||
最接近:脉动阵列。
|
||
```
|
||
|
||
### Slide 17 - SIMD与MISD
|
||
```
|
||
SIMD与MISD
|
||
SIMD:
|
||
C[i]=A[i]+B[i]
|
||
|
||
MISD: systolic array脉动阵列
|
||
Y[i]=X[i]*W[1]+X[i+1]*W[2]+X[i+2]*W[3]…
|
||
```
|
||
|
||
### Slide 18-22 - 脉动阵列计算
|
||
```
|
||
卷积计算(Convolution)
|
||
Given the sequence of weights {w1, w2, …, wk} and the input sequence {x1, x2, …, xn}
|
||
Compute the result sequence {y1, y2, … yn+1-k} defined by
|
||
Yi=w1xi+w2xi+1+…+wkxi+k-1
|
||
Y1=w1x1+w2x2+w3x3
|
||
Y2=w1x2+w2x3+w3x4
|
||
Y3=w1x3+w2x4+w3x5
|
||
|
||
脉动阵列计算过程 - Cycle 1-4 详细图示
|
||
```
|
||
|
||
### Slide 25 - 计算机体系结构定义
|
||
```
|
||
计算机体系结构
|
||
狭义的定义 (Amdahl的定义)
|
||
指令集的设计;
|
||
需要考虑:寄存器、内存地址、访存方式、指令集的设计;
|
||
经典定义:机器语言程序员所见到的计算机的属性,即概念性结构和功能特性。
|
||
广义的定义 (《计算机体系结构-量化研究方法》中的定义)
|
||
包括计算机设计所有三个方面
|
||
指令集结构
|
||
组成
|
||
硬件
|
||
```
|
||
|
||
### Slide 26 - 指令集结构(ISA)
|
||
```
|
||
指令集结构(ISA)
|
||
分类:
|
||
现在几乎所有的ISA都划分为通用寄存器体系结构中;
|
||
两种主流版本:寄存器-存储器,如80X86;载入-存储,如ARM和MIPS。
|
||
存储器寻址:
|
||
字节寻址
|
||
访问对齐
|
||
寻址模式:立即寻址、寄存器寻址、偏移寻址等
|
||
操作数类型和大小
|
||
指令类型:数据传输、算逻运算、控制指令、浮点指令 等;
|
||
指令格式:固定、可变
|
||
```
|
||
|
||
### Slide 27 - 组成和硬件
|
||
```
|
||
组成和硬件
|
||
组成是计算机的逻辑实现,包括存储系统、存储器连接、CPU内部设计。
|
||
硬件是计算机的具体实现,包括详尽的逻辑设计和封装技术。
|
||
|
||
真正的计算机体系结构:设计满足目标和功能需求的组成和硬件。
|
||
--- 《计算机体系结构-量化研究方法》
|
||
```
|
||
|
||
### Slide 30 - 技术趋势
|
||
```
|
||
技术趋势
|
||
1. 不可或缺的实现技术
|
||
集成电路技术:晶体管密度大概每年增加35%,差不多每四年翻两番。晶片大小的增长速度要慢一点。两者综合起来,一个芯片上的晶体管数目每年大约增长40%-55%,这就是摩尔定律,单位面积上的晶体管数目,每18个月翻一翻。
|
||
|
||
半导体DRAM技术:最近大约十年,单个DRAM芯片容量每年大约增加25%-40%,大约每2-3年翻一翻,但是增长速度在下降。DRAM技术是主存储器的基础。
|
||
|
||
半导体闪存(电可擦写只读存储器)。个人移动设备中存储器件。近十年来,个人移动设备迅速普及,这种趋势刺激了半导体闪存容量的迅速提升。
|
||
|
||
磁盘技术:磁盘技术是服务器和数据存储的核心技术。在1990年之前,磁盘密度每年提高大约30%,3年翻一翻。之后每年增长60%,1996年的增速为100%。从2004年开始,每年增长40%左右。
|
||
|
||
网络技术:取决于交换机的性能和传输系统的性能。
|
||
```
|
||
|
||
### Slide 31 - 带宽和延迟
|
||
```
|
||
技术趋势
|
||
2. 性能趋势:带宽和延迟
|
||
带宽 或 吞吐量
|
||
单位时间的工作量
|
||
处理器的带宽增长 32,000-40,000 倍
|
||
内存和磁盘的带宽增长 300-1200 倍
|
||
延迟 或 响应时间
|
||
一个事件从开始到完成所经历的时间
|
||
处理器响应时间改进 50-90 倍
|
||
内存和磁盘的响应时间改进 6-8 倍
|
||
|
||
显然,在这些技术的发展过程中,带宽的改进要明显优于延迟。一个简单的经验法则是:带宽的增长速度至少是延迟改进速度的平方。
|
||
```
|
||
|
||
### Slide 32 - 晶体管性能与连线
|
||
```
|
||
技术趋势
|
||
晶体管(Transistors)性能与连线(wire)的发展
|
||
集成电路的制造工艺是以特征尺寸来衡量的
|
||
特征尺寸 就是一个晶体管或者一条连线在x方向或者y方向的最小尺寸。
|
||
特征尺寸:1971年为 10 微米, 2011年0.032微米(32纳米技术),2017年 0.016微米(16纳米技术)。
|
||
特征尺寸下降时,晶体管性能以线性提升。
|
||
随着特征尺寸缩小,连线会变短,但是单位长度的电阻和电容都会变差。和晶体管性能相比,连线延迟方面的改进少的可怜。
|
||
晶体管的密度将以平方曲线上升。
|
||
```
|
||
|
||
### Slide 33-34 - 功率和能耗趋势
|
||
```
|
||
功率和能耗趋势
|
||
功率和能耗:系统观点
|
||
处理器需要的最大功率是多少?
|
||
持续功耗 -- 热设计功耗 (Thermal Design Power,TDP)
|
||
决定了冷却需求;
|
||
当温度接近节点温度上限时,电路降低时钟频率,从而减小功率;如果不成功,启动热过载启动装置,以降低芯片的功率。
|
||
能耗和能耗效率。
|
||
|
||
功率和能耗趋势
|
||
微处理器内部的能耗和功率
|
||
动态能耗
|
||
时钟频率和电源电压保持不变的情况下,提高能耗效率。
|
||
关闭非活动模块,以节省能耗和动态功率;
|
||
动态电压-频率调整。微处理器可以提供不同工作频率。
|
||
针对典型情景的设计,个人移动设备(PMD)、笔记本等的省电模式;
|
||
超频。Intel在2008年开始提供Turbo模式,在这种模式下,芯片可以判定在少数几个核心上以较高的时钟频率短时间运行。
|
||
```
|
||
|
||
### Slide 37-38 - 性能测试
|
||
```
|
||
性能测试
|
||
性能指标
|
||
响应时间/执行时间 -- 用户关心的
|
||
吞吐量 -- 仓库级计算机的操作人员关心的
|
||
加速比
|
||
机器X比机器Y快, 是什么意思? -- 执行时间是稳定、可靠的性能度量
|
||
执行时间
|
||
墙上时间: 包括所有的系统开销
|
||
CPU时间: only computation time
|
||
|
||
基准测试
|
||
程序内核:实际应用程序中的短小、关键部分;
|
||
玩具程序:为了完成编程入门作业而编写的小程序,通常不超过100行,如快排程序;
|
||
合成基准测试程序:为了匹配实际应用程序的特征和行为编写的虚拟程序;
|
||
基准测试套件(Benchmark suites):衡量处理器处理各种应用程序的性能。优势在于任何一个基准测试的弱点都会因为其他基准测试的存在而变小。最常用的是SPEC(www.spec.org)。
|
||
```
|
||
|
||
### Slide 40-44 - 充分利用并行
|
||
```
|
||
充分利用并行
|
||
并行性的含义:
|
||
计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。即只要在时间上相互重叠,就存在并行性。
|
||
同时性:两个或两个以上的事件在同一时刻发生。
|
||
并发性:两个或两个以上的事件在同一时间内发生。
|
||
提高并行性的三种途径:
|
||
时间重叠:引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
|
||
资源重复:引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
|
||
资源共享:这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。如,多道程序。
|
||
|
||
时间重叠
|
||
单处理机中 -- 部件功能专用化
|
||
多处理机中 – 处理机专用化
|
||
|
||
资源重复
|
||
单处理机中 -- 重复设置功能部件
|
||
多处理机中 – 重复设置处理机
|
||
|
||
资源共享
|
||
单处理机中
|
||
分时系统
|
||
多处理机中
|
||
分布式系统
|
||
```
|
||
|
||
### Slide 45 - 重点关注常见情形
|
||
```
|
||
重点关注常见情形
|
||
对经常发生的情况采用优化方法的原则进行选择,以得到更多的总体上的改进。
|
||
优化是指分配更多的资源、达到更高的性能或者分配更多的电能等。
|
||
例如:
|
||
与溢出相比,不溢出是经常性事件。针对不溢出的情况进行性能设计,无需花过多的时间和精力在解决溢出上。
|
||
处理器的取指、译码比乘法器用的更加频繁,优先优化取指令和译码部件。
|
||
```
|
||
|
||
### Slide 46-53 - Amdahl定律
|
||
```
|
||
Amdahl定律
|
||
加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比。
|
||
|
||
系统性能加速比:
|
||
加速比=系统性能改进后/系统性能改进前=总执行时间改进前/总执行时间改进后
|
||
|
||
加速比依赖于两个因素
|
||
可改进比例:在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。
|
||
它总是小于等于1。
|
||
例如:一个需运行60秒的程序中有20秒的运算可以加速,那么这个比例就是20/60。
|
||
部件加速比:可改进部分改进以后性能提高的倍数。
|
||
它是改进前所需的执行时间与改进后执行时间的比。
|
||
一般情况下部件加速比是大于1的。
|
||
例如:若系统改进后,可改进部分的执行时间是2秒,而改进前其执行时间为5秒,则部件加速比为5/2。
|
||
|
||
Amdahl定律 - 公式
|
||
总执行时间改进后 = 不可改进部分的执行时间 + 可改进部分改进后的执行时间
|
||
总执行时间改进后 = (1-可改进比例)×总执行时间改进前 + 可改进比例×总执行时间改进前/部件加速比
|
||
|
||
加速比 = 总执行时间改进前/总执行时间改进后
|
||
= 1/[(1-可改进比例) + 可改进比例/部件加速比]
|
||
|
||
例1 将计算机系统中浮点加减法的处理速度提高到原来的5倍,且该功能的处理时间占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
|
||
解 由题可知,可改进比例 = 40% = 0.4,部件加速比 = 5
|
||
根据Amdahl定律可知:
|
||
总加速比 = 1/(0.6 + 0.4/5) = 1/(0.6 + 0.08) = 1/0.68 = 1.47
|
||
采用此提高性能的方法后,能使整个系统的性能提高到原来的1.47倍。
|
||
|
||
例2 将计算机系统中浮点平方根的处理速度提高到原来的40倍,且该功能的处理时间占整个系统运行时间的5%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
|
||
解 由题可知,可改进比例 = 5% = 0.05,部件加速比 = 40
|
||
根据Amdahl定律可知:
|
||
总加速比 = 1/(0.95 + 0.05/40) = 1/(0.95 + 0.00125) = 1/0.95125 = 1.05
|
||
采用此提高性能的方法后,能使整个系统的性能提高到原来的1.05倍。
|
||
|
||
例3 某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的20倍,而系统运行某一程序的整体性能提高到原来的5倍,试计算该程序中浮点操作所占的比例。
|
||
解 由题可知,部件加速比 = 20,系统加速比 = 5
|
||
根据Amdahl定律可知
|
||
5 = 1/[(1-可改进比例) + 可改进比例/20]
|
||
由此可得:可改进比例 = 84.2%
|
||
即程序中浮点操作所占的比例为84.2%。
|
||
|
||
Amdahl定律
|
||
一种性能改进的递减规则
|
||
|
||
如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。
|
||
|
||
重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过 1/(1-可改进比例)
|
||
```
|
||
|
||
### Slide 54-60 - CPU性能公式
|
||
```
|
||
CPU性能公式
|
||
CPU性能公式: 执行一个程序所需的CPU时间
|
||
CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
|
||
其中,时钟周期时间是系统时钟频率的倒数。
|
||
|
||
每条指令执行的平均时钟周期数CPI(Cycles Per Instruction)
|
||
CPI = 执行程序所需的时钟周期数/IC
|
||
IC:所执行的指令条数
|
||
程序执行的CPU时间可以写成
|
||
CPU时间 = IC ×CPI ×时钟周期时间
|
||
|
||
CPU的性能取决于3个参数
|
||
时钟周期时间:取决于硬件实现技术和计算机组成。
|
||
CPI:取决于计算机组成和指令集结构。
|
||
IC:取决于指令集结构和编译技术。
|
||
|
||
对CPU性能公式进行进一步细化
|
||
假设:计算机系统有n种指令;
|
||
CPIi :第i种指令的处理时间;
|
||
ICi :在程序中第i种指令出现的次数;
|
||
则
|
||
CPU时钟周期数 = Σ(CPIi × ICi)
|
||
|
||
CPU性能公式
|
||
CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
|
||
= Σ(CPIi×ICi)×时钟周期时间
|
||
CPI可以表示为
|
||
CPI = Σ(CPIi × ICi) / IC = Σ(CPIi × (ICi/IC))
|
||
其中,(ICi/IC)反映了第i种指令在程序中所占的比例。
|
||
|
||
CPU性能公式
|
||
例: 考虑条件分支指令的两种不同设计方法:
|
||
(1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。
|
||
(2)CPUB:在分支指令中包括比较过程。
|
||
在这两种CPU中,条件分支指令都占用2个时钟周期,而所有其他指令占用1个时钟周期。对于CPUA,执行的指令中分支指令占20%;由于每条分支指令之前都需要有比较指令,因此比较指令也占20%。由于CPUA在分支时不需要比较,因此CPUB的时钟周期时间是CPUA的1.25倍。问:哪一个CPU更快?如果CPUB的时钟周期时间只是CPUA的1.1倍,哪一个CPU更快呢?
|
||
|
||
解 我们不考虑所有系统问题,所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%,剩下的指令占用1个时钟周期。所以
|
||
CPIA = 0.2 × 2 + 0.80 × 1 = 1.2
|
||
则CPUA性能为
|
||
总CPU时间A = ICA × 1.2 ×时钟周期A
|
||
根据假设,有
|
||
时钟周期B = 1.25 × 时钟周期A
|
||
在CPUB中没有独立的比较指令,所以CPUB的程序量为CPUA的
|
||
80%,分支指令的比例为: 20%/80% = 25%
|
||
|
||
这些分支指令占用2个时钟周期,而剩下的75%的指令占用1个时钟
|
||
周期,因此
|
||
CPIB = 0.25 × 2 + 0.75 × 1 = 1.25
|
||
因为CPUB不执行比较,故
|
||
ICB = 0.8 × ICA
|
||
因此CPUB性能为
|
||
总CPU时间B = ICB × CPIB × 时钟周期B
|
||
= 0.8 ×ICA × 1.25 ×(1.25 ×时钟周期A)
|
||
= 1.25 ×ICA ×时钟周期A
|
||
|
||
在这些假设之下,尽管CPUB执行指令条数较少,CPUA因为有着更短的时钟周期,所以比CPUB快。
|
||
|
||
如果CPUB的时钟周期时间仅仅是CPUA的1.1倍,则
|
||
时钟周期B = 1.10 ×时钟周期A
|
||
CPUB的性能为
|
||
总CPU时间B = ICB ×CPIB ×时钟周期B
|
||
= 0.8 ×ICA × 1.25 ×(1.10 ×时钟周期A)
|
||
= 1.10 × ICA ×时钟周期A
|
||
因此CPUB由于执行更少指令条数,比CPUA运行更快。
|
||
```
|
||
|
||
### Slide 61-72 - 程序的局部性原理
|
||
```
|
||
程序的局部性原理
|
||
程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚。
|
||
常用的一个经验规则
|
||
程序执行时间的90%都是在执行程序中10%的代码。
|
||
程序的时间局部性
|
||
程序即将用到的信息很可能就是目前正在使用的信息。
|
||
程序的空间局部性
|
||
程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。
|
||
|
||
局部性原理
|
||
可以通过一件事情的发生很好的预测其接下来的行为。
|
||
|
||
时间局部性: 重复发生一件事。
|
||
上课:同一学期多次上同一门课程
|
||
|
||
空间局部性: 一件事情的发生与今后发生的事情空间上相同或相似。
|
||
上课:周围位置的同学较固定
|
||
|
||
例子:程序局部性
|
||
j=1;
|
||
k=2;
|
||
For (i=0; i<5;i++) {
|
||
A[i] += j;
|
||
B[i] += k;}
|
||
|
||
数据局部性: i,A,B,j,k?
|
||
(多张幻灯片展示变量i, A, B, j, k在内存中的访问模式变化)
|
||
``` |