计算机系统结构 (一)
- 本文首发于个人博客网站:http://www.blog.lekshome.top/
- 由于CSDN并不是本人主要的内容输出平台,所以大多数博客直接由md文档导入且缺少审查和维护,如果存在图片或其他格式错误可以前往上述网站进行查看
- CSDN留言不一定能够及时回复,请前往本人博客中进行留言
- 您的留言和点赞是对我的最大支持!
前言
- 内容来源:暨南大学邓玉辉教授讲授的《计算机系统结构》
- 本系列文章是《计算机系统结构》课程的个人学习笔记,仅记录相关知识点和个人理解,内容不及邓老师课程万一
- 使用教材:《计算机系统结构教程(第2版)》张晨曦、王志英著,清华大学出版社
- 不会分享该课程的任何课程资源
0. 绪论
0.1 计算机系统结构的定义
-
Amdahl于1964年在推出IBM360系列计算机时提出:程序员所看到的计算机系统的属性,即概念性结构和功能特性
- 程序员:系统程序员(包括汇编语言、机器语言、编译程序、操作系统等)
- 看到的:编写出能在机器上正确运行的程序所必须了解到的
- 概念性结构:计算机组成的抽象
- 功能特性:指令系统及其执行模式
-
研究软硬件功能分配和对软硬件界面的确定
计算机系统由软件、硬件和固件组成,它们在功能上是同等的。
同一种功能可以用硬件实现,也可以用软件或固件实现,不同的组成只是性能和价格不同,他们的系统结构是相同的。
系列计算机:相同系统结构,不同组成和实现的一系列计算机系统。
0.2 计算机系统结构、组成技术、实现技术
- 计算机组成是计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
- 计算机实现是计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。
1. 概述与基础知识
1.1 Turing theory(图灵理论)
1.2 计算机设计的五原则
Norbert Wiener 1940年提出
- 计算机负责运算的中心部件不应是模拟式,而是数字式
- 开关装置应该采用电子元件
- 采用二进制, 而不是十进制
- 运算和逻辑判断都由机器完成,中间应该没有人的干预
- 内部要有存贮数据的装置,支持快速读写
1.3 冯诺依曼结构
- 用程序表达思想(处理自动化的基础)
- 存储程序(存储器中存放程序和数据)
- 顺序执行
- 将计算机分成五大部分:运算器、控制器、存储器、输入设备、输出设备
- 以运算器为中心
- 存储和计算分离的存储程序结构(即冯·诺伊曼体系结构),这实际是图灵机的一种通用物理实现方案
- 同一套硬件(负责逻辑和计算的通用中央处理器)可以执行多种功能(存放在存储器中的程序)
- 使得通用计算机的制造成为可能
- 存储与计算分离的结构会因为系统总线而形成冯诺依曼瓶颈
1.4 Amdahl’s Law
Amdahl定律是由计算机科学家Gene Amdahl在1967年提出的一条关于并行计算性能提升的定律。该定律描述了在系统中使用并行计算所能达到的性能提升上限。
Amdahl定律的表述如下:
Amdahl定律指出,如果一个计算任务中有一部分是无法并行化的,那么即使增加处理器的数量,也只能在这部分计算上获得性能提升。当 N 趋向无穷时,加速比最终会趋向于一个极限值,即 1/(1−P)。这也意味着,尽管增加处理器数量能够提高性能,但其提升受限于问题中无法并行化的部分。
Amdahl定律的主要启示是,在设计并行计算系统时,应该尽可能地减少不可并行化的部分,以最大化并行计算所能带来的性能提升。
当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。
1.5 局部性原理
- 局部性原理(Jim Gray)
- 空间局部性意味着,如果一个块被引用,那么附近的块也将很快被访问
- 时间局部性意味着,一个被引用的块在不久的将来可能会被再次引用
- 程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚
- 常用的一个经验规则:程序执行时间的90%都是在执行程序中10%的代码
- Make the common case fast.(加快经常性事件)
- 例子:CISC和RISC
1.6 Moore’s Law
假设价格保持不变,处理器芯片上的晶体管数每18个月翻一番。
The number of transistors on a chip willdouble every 18 to 24 months.
And that’s been true for the last 40 years.
And it appears set to continue for anotherdecade.
1.7 Power Wall
2005 年后 CPU 性能和芯片功耗错位形成的功耗墙(power wall)
主频每增加1G,功耗将上升25瓦,而在芯片功耗超过150瓦后,现有的风冷散热系统将无法满足散热的需要。
当晶体管数量增加导致功耗增长超过性能增长速度后,处理器的可靠性就会受到致命性的影响
Moore’s Wall
the end of Modre’s Law
- We’ve hit a technology wall.
- We can still double the number of transistors on a chip every couple of years.
- We can still double disk drive capacity every 2 to 3 years.
- We can build faster interconnects, such as OuickPath and 10 Gb Ethernet.
But the easy wins are over. Going forwardperformance gains will be measured in single digit percents each year
因此,我们不能只一味地通过加快CPU的频率来提高性能,这是芯片的先天性质决定的
从技术的进步推动转向新的系统结构推动
当频率到达一定程度后,必然要转向多核技术
1.8 Memory Wall
CPU与内存速率的不一致
为了应对这个问题,体系结构界不断地增长存储层次,从一级高速缓存(L1)、二级高速缓存(L2)到三级高速缓存(L3),来弥补 CPU 和内存间速度的匹配
1.9 Nielsen’s Law of Internet Bandwidth
A high-end user’s connection speed grows by 50% per year.
1.10 Pollack’s Rule(波拉克定律)
计算机性能增涨速度大致是晶体管资源增长率的平方根
在付出巨大的复杂性和效率代价后,能获得的实际性能提升非常少,目前这种差距仍有扩大的趋势,
1.11 I/O Wall
在过去的十年中,面密度(AD)增长了100%,这导致线密度(LD)和磁道密度(TD)分别增长了30%和50%
在过去的二十年中,磁盘驱动器的带宽以每年40%的速度增长。这一增长主要取决于每分钟转数(RPM)、磁记录技术、板载缓存大小的提高,以及寻道时间的减少。
不幸的是,磁盘访问时间每年只提高了约8%。
1.12 Andy and Bill’s Law(安迪-比尔定律)
安迪(Intel)给的都会被比尔( Microsoft)拿走
应用软件会快速消耗掉硬件提升的性能,该定律概括了IT产业中软件和硬件升级换代的关系
1.13 计算机系统结构分类(Flynn分类法)
Flynn分类法:按照指令流和数据流的多倍性进行分类
- 指令流:计算机执行的指令序列
- 数据流:由指令流调用的数据序列
- 多倍性:在系统最受限的部件上,同时处于同一执行阶段的指令或数据的最大数目
- IS:指令流
- DS:数据流
- CS:控制流
- PU:处理部件
- CU:控制部件
- MM和SM:存储器
-
SISD:单指令流单数据流(Single Instruction stream Single Data stream)
-
SIMD:单指令流多数据流(Single Instruction stream Multiple Data stream)
-
MISD:多指令流单数据流(Multiple Instruction stream Single Data stream)
-
MIMD:多指令流多数据流(Multiple Instruction stream Multiple Data stream)
Flynn分类法的缺点
- 分类不够细致
- 在SIMD中包括有多种处理机
- 对流水线处理机的划分不明确,标量流水线为SISD,向量流水线为SIMD
- 把两个不同等级的功能并列对待:数据流受指令流控制,造成MISD不存在
- 对非冯计算机的分类未给出定义
1.14 计算机系统设计的定量原理
1.14.1 基于Amdahl’s Law
-
对经常发生的情况采用优化方法的原则进行选择,以得到更多的总体上的改进。
优化是指分配更多的资源、达到更高的性能或者分配更多的电能等 -
加速比
加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比
-
加速比的两个依赖因素
-
可改进比例Fe
在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例,它总是小于等于1。
-
部件加速比Se
可改进部分改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比,一般情况下部件加速比是大于1的。
-
-
由上面的公式可看出,Amdahl定律是一种性能改进的递减规则,即如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限
-
重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过:1/(1-可改进比例)
1.14.2 CPU性能分析
-
基础参数
-
时钟周期时间:系统时钟频率的倒数
-
IC(Instruction Count):所执行的程序的指令条数
-
CPI(Cycles Per Instruction):每条指令执行的平均时钟周期数
CPI = 执行程序所需的时钟周期数 / IC
-
CPU时间 = 执行程序所需的时钟周期数 * 时钟周期时间
-
-
CPU性能取决于3个参数
- 时钟周期时间:取决于硬件实现技术和计算机组成
- CPI:取决于计算机组成和指今系统的结构
- IC:取决于指令系统的结构和编译技术
-
设计算机系统有n种指令
CPIi:第i种指令的时钟周期数
ICi:在程序中第i种指令出现的次数
1.14.3 计算机系统的性能评测
-
运算速度:表示处理机性能的主要指标,有多种表示方法
- 时钟频率(处理机主频)
- 只表示CPU的指令处理能力
- 实际运算速度还与Cache、内存、I/O、被执行程序等均有关
- 只能用于同一公司、同一类型、同一配置的处理机
- 时钟频率(处理机主频)
-
指令执行速度:一种经典的表示运算速度的方法
-
MIPS
主要优点
- 直观、方便、目前经常使用
主要缺点
- MIPS依赖于指令集,指令使用频度差别很大,不同指令的执行速度差别很大。用MIPS来比较指令集不同的机器的性能好坏是很不准确的
- 在同一台机器上,MIPS因程序不同而变化,有时变化很大
- 有相当多的非功能性指令,MIPS可能与性能相反
-
MFLOPS(全称为“Million Floating Point Operations Per Second”,即每秒执行的百万次浮点运算数)
- MFLOPS = 程序中的浮点操作次数 / (执行时间 * 106)
- MFLOPS是基于操作而非指令的,可以用来比较两种不同的机器。同一程序在不同的机器上执行的指令可能不同,但执行的浮点运算是完全相同的。
- 然而,MFLOPS也并不完全可靠,因为不同的机器浮点运算集不同。因此,单个程序的MFLOPS并不能完全反映机器的性能。
-
-
基准测试程序:用于测试和比较性能的基准测试程序的最佳选择是真实应用程序。(例如编译器)
-
微基准测试程序(Microbenchmarks)
-
宏基准测试程序(Macrobenchmarks)
-
然而,MFLOPS也并不完全可靠,因为不同的机器浮点运算集不同。因此,单个程序的MFLOPS并不能完全反映机器的性能。
- [外链图片转存中…(img-yEHJOFi5-1712583301452)]
-
基准测试程序:用于测试和比较性能的基准测试程序的最佳选择是真实应用程序。(例如编译器)
-
微基准测试程序(Microbenchmarks)
[外链图片转存中…(img-OoSQv1pE-1712583301452)]
-
宏基准测试程序(Macrobenchmarks)
[外链图片转存中…(img-1tz2juat-1712583301452)]
-