二、下面我们根据课程大纲,大致过一遍组成原理
1. 性能
衡量计算机的性能,主要有两个指标:响应时间和吞吐率。
响应时间,就是执行一个程序花费的时间,花的时间越短,性能就越好。
吞吐率,就是一定时间内,到底能处理多少数据和指令,处理的越多,性能就越好。
我们一般把性能定义为响应时间的倒数,也就是:性能 = 1 / 响应时间
响应时间也就是CPU执行我们程序的时间,我们对时间这个指标进行拆解,把程序的CPU执行时间变成CPU时钟周期数和时钟周期时间的乘积。
程序的CPU执行时间 = CPU时钟周期数 x 时钟周期时间
程序的CPU执行时间 = 指令数 x 每条指令的平均时钟周期数 x 时钟周期时间
所以优化性能,就要从这三者入手了:
指令数,代表执行我们的程序到底需要多少条指令,一般都是编译器去做。
每条指令的平均时钟周期数,就是执行一条指令需要的CPU周期数。
时钟周期时间,也就是计算机主频,摩尔定律就在提高我们计算机的主频,例如:主频为2.8GHz,简单理解就是1秒钟可以执行2.8G条指令。
2. 功耗
从上面可以看出,想要提升性能,可以通过减少响应时间的方法来提升,减少响应时间又有三条路可以走:减少指令数、减少周期数、提升主频。
过去相当长的时间里,工程师们都在目光集中在提升计算机主频,在CPU中增加晶体管密度,提升晶体管“打开”和“关闭”的速度,这两者都会带来耗电和散热的问题。
CPU的功耗 = 1/2 x 负载电容 x 电压的平方 x 开关频率 x 晶体管数量
为了平衡性能和功耗,工程师们想尽办法把晶体管的制程从28nm缩小到7nm,让CPU中可以更多晶体管,同时呢又降低电压,这让我们的CPU性能也一直提升。
但是,这种做法终有极限,所以工程师们又开始通过提升吞吐率来提升性能,而不是响应时间,所以我们现在的CPU慢慢的由单核发展成了2核、4核、8核的CPU,让更多的核心同时工作,通过并行来提升性能。
总结
无论是通过提升主频,还是增加更多的CPU核心数量并行处理,都有其瓶颈所在,仅仅通过“堆硬件“的方式,今天已经不能很好的满足我们对于性能的期望了,这就需要我们从其他方面入手了:
加速大概率事件
通过流水线提升性能,把CPU指令执行进行合理的拆分、细化。
通过预测提升性能,提前预测下一步做什么,提前进行响应的操作。