CPU消耗与指令系统
前情回顾:门电路与ALU


CPU组成

门电路 -> 半加器 -> 全加器 -> 加法器 -> ALU
上述的过程是一个ALU的基本组成流程
- 上层无需考虑下层组成,就像我们写代码时从不关心ALU执行流程一样,对外需要暴露出安全且低耗的接口
- 黑盒子思想,使用者无需关心具体的逻辑,只需关注使用方法,如果内部无法处理或异常情况,应当给予适当的提醒和告警
推荐《编码:隐匿在计算机软硬件背后的语言》
CPU性能与消耗
上面说完CPU组成,再说说CPU性能分析和消耗
大致的性能指标
- 响应时间
- 主频
- 吞吐量
- CPU缓存
- CPU制造工艺,包括散热量和电子期间间隔,一般nm为单位
响应时间与主频
主频:时钟周期的倒数
从认知来说,主频越大,时钟周期越小,那么一般来说,在单位时间内能处理的指令就越多,响应时间也就越快;
但是随着主频的扩大和CPU体积的缩小,一定会达到一个极限;例如1978年的经典intel 8086CPU主频最高10MHz,2000年左右主频就达到了1Ghz,而现在写这篇文档的台式机主频却只有2.6Ghz。前20年增进了100倍,后20年主频只增进了不足3倍;

当然有大胆实验的Pentium 4, 2001年的 Pentium 4 和 Pentium D 主频设计之初设想为了惊人的 10GHz ,最后产品失败为止它的主频上限也才定格在 3.8GHz,也促使了 AMD CPU的快速发展;失败的原因在于消耗问题。
消耗
一个 3.8GHz 的奔腾 4 处理器,满载功率是 130 瓦。机场允许带上飞机的充电宝的容量上限是 100 瓦时。如果我们把这个 CPU 安在手机里面,不考虑屏幕内存之类的耗电,这个 CPU 满载运行 45 分钟,充电宝里面就没电了。而 iPhone X 使用 ARM 架构的 CPU,功率则只有 4.5 瓦左右。
CPU减少消耗,提升性能方式无非两种:增加晶体管密度、提升主频;当CPU体积、晶体管体积确定,密度也就很难改变,除非改变晶体管制造工艺;提升主频带来的问题就在于耗电和散热,即使抹硅胶、装风扇,甚至水冷都是有极限的
吞吐量
既然一个CPU核心单位时间内的处理速度到了一定极限,就多来几个核心,提高吞吐量,这也是现在CPU常用手段,4核心、6核心、8核甚至10核及以上都可见
如何增加代码性能(系统性能)?
- 响应时间 指令数×CPI×Clock Cycle Time
- 吞吐率 调度器:时间片轮转、先来先服务、最短作业优先
指令系统
指令集是不同操作系统(windows、linux)、不同平台(移动端和服务端)代码不能执行的根本原因。
网上有说是因为底层的可执行文件不同,例如 C 语言来说,经过 编译 -> 汇编 —>连接 -> 装载 之后在windows上形成的是 .pe 文件,而 linux 上是 .elf 文件,导致了程序不能相互执行,但实际上这些文件不能执行的根本原因是CPU的指令集不同。

CISC(Complex Instruction Set Computer) 和 RISC(Reduced Instruction Set Computer)
cisi一般总数在200-300,pentium(X86)191条,但实际上最常用的20%的指令占了全部使用的80%
而 ARM 基础指令集则只有40多条,加上其他的模块化扩展指令总共几十条指令

赛扬(Celeron)—> 桌面低 奔腾(Pentium)—>桌面中 酷睿 (Core)—>桌面高 至强(Xeon)—>服务器中 安腾(Itanium)—>服务器高 凌动(Atom,也面向移动设备)

浙公网安备 33010602011771号