视频加载失败

课程

2825 字
约 9 分钟

CH01

计算机体系结构notes/csdn-review·更新于 2026-09-15

第一章:计算机系统基础知识

计算机系统的实质

  • 确定计算机系统中软硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固件实现的功能
  • 指令集结构:用硬件实现的指令集,软硬件之间的主要界面;

计算机系统设计的4个定量原理:如何优化并提高计算机性能

  • 以经常性事件为重点
  • Amdahl定律(理解原理并能进行简单计算)
  • CPU性能公式(三个参数:时钟周期时间、CPI、IC):理解不同方案性能的提高程度;
  • 程序的局部性原理

计算机系统的实质

确定计算机系统中软硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固件实现的功能。

指令集结构:用硬件实现的指令集,软硬件之间的主要界面

计算机系统的设计的4个定量原理

以经常性事件为重点:对经常发生的情况采用优化方法的原则进行选择,以得到更多的总体上的改进

  • 优化是指分配更多的资源、达到更高的性能或者分配更多的电能等。
  • 加快经常事件,整体事件时间减少很多

Amdahl定律

系统性能加速比(定量指标)

img

  • 加速比依赖于两个因素

    • 可改进比例(Fe):在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。它总是小于等于1。

    例如:一个需运行60秒的程序中有20秒的运算可以加速,那么这个比例就是20/60。

    部件加速比(Se)(引入该参数) :可改进部分改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比。一般情况下部件加速比是大于1的。

例如:若系统改进后,可改进部分的执行时间是2秒,而改进前其执行时间为5秒,则部件加速比为5/2。

  • 改进前程序的总执行时间:T0:未改进比例 1-Fe + 改进的比例 Fe
  • 改进后程序的总执行时间:Tn:未改进比例 1-Fe + 改进的比例 Fe / Se

即:Tn=T0( 1-Fe+ Fe / Se )

  • 系统加速比:Sn 为改进前与改进后总执行时间之比 Sn=T0 / Tn=1 / (1-Fe+ Fe / Se )

Amdahl定律:一种性能改进的递减规则,如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。

  • 重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过:1/(1-Fe)

例1.2 某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的25倍,而系统运行某一程序的整体性能提高到原来的4倍,试计算该程序中浮点操作所占的比例。

img

CPU性能公式

执行一个程序所需的CPU时间

CPU时间 = 执行程序所需的时钟周期数×时钟周期时间

  • 其中时钟周期时间是系统时钟频率的倒数

每条指令执行的平均时钟周期数CPI = 执行程序所需的时钟周期数/IC

  • IC:所执行的指令条数

程序执行的CPU时间可以写成

CPU时间 = IC ×CPI ×时钟周期时间

  • 时钟周期时间:取决于硬件实现技术和计算机组成
  • CPI:取决于计算机组成和指令系统的结构
  • IC:取决于指令系统的结构和编译技术

假设:计算机系统有n种指令, C P I i CPI_iCPIi表示第i种指令的处理时间, I C i IC_iICi表示在程序中第i种指令出现的次数

CPU时钟周期数=i=1n(CPIi×ICi)CPU时钟周期数 =\sum_{i=1}^n (CPI_i \times IC_i)

CPI=时钟周期数IC=i=1n(CPIi×ICi)IC=i=1n(CPIi×ICiIC)CPI= \frac{时钟周期数}{IC}=\frac{\sum_{i=1}^n (CPI_i \times IC_i)}{IC}=\sum_{i=1}^n (CPI_i \times \frac{IC_i}{IC})

  • (ICi / IC)反映了第i种指令在程序中所占的比例。

程序的局部性原理:程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚(程序执行时间的90%都是在执行程序中10%的代码)。

例1.3 假设FP(浮点数操作)指令的比例为25%,其中,FPSQR(浮点数平方根操作)占全部指令的比例为2%,FP操作的CPI为4, FPSQR操作的CPI为20 ,其他指令的平均CPI为1.33。现有两种改进方案,第一种是把FPSQR操作的CPI减至2,第二种是把所有的FP操作的CPI减至2,试比较两种方案对系统性能的提高程度。

img

没有改进之前,每条指令的平均时钟周期CPI为:

CPI=i=1n(CPIi×ICiIC)=(4×25%)+(1.33×75%)=2CPI=\sum_{i=1}^n (CPI_i \times \frac{IC_i}{IC})=(4 \times 25\%) + (1.33 \times 75\% )=2

(1)采用第一种方案: FPSQR操作的CPI由 CPIFPSQR=20CPI_{FPSQR} = 20 减至 CPIFPSQR=2CPI'_{FPSQR} = 2

则整个系统的指令平均时钟周期数为:CPI1=CPI(CPIFPSQRCPIFPSQR)×2%=2(202)×2%1.64CPI_1 = CPI - (CPI_{FPSQR} - CPI'_{FPSQR}) \times 2\% = 2 - (20 - 2) \times 2\% \approx 1.64

(2)采用第二种方案: 所有FP操作的CPI由 CPIFP=4CPI_{FP} = 4 减至 CPIFP=2CPI'_{FP} = 2,则整个系统的指令平均时钟周期数为(FPSQR操作不改变):

CPI2=CPI(CPIFPCPIFP)×25%=2(42)×25%=1.5CPI_2 = CPI - (CPI_{FP} - CPI'_{FP}) \times 25\% = 2 - (4 - 2) \times 25\% = 1.5

从降低整个系统的指令平均时钟周期数的程度来看,第二种方案优于第一种方案。

程序的局部性原理:

程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚(程序执行时间的90%都是在执行程序中10%的代码)。

  • 程序的时间局部性:程序即将用到的信息很可能就是目前正在使用的信息。
  • 程序的空间局部性:程序即将用到的信息很可能与目前正在使用的信息。在空间上相邻或者临近。
  • 优化策略:cache引入,提高内存和CPU之间的访问效率
  • 局部性实例:例如for循环
Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录