从CPU发明到现在,有非常多种架构,从我们熟悉的X86,ARM,到不太熟悉的MIPS,IA64等
X86 | ARM | |
---|---|---|
指令集 | 复杂指令集(CISC) | 精简指令集(RISC) |
功耗 | 高 | 低 |
性能 | 高 | 低 |
扩展能力 | X86结构的电脑采用“桥”的方式与扩展设备(如:硬盘、内存等)进行连接,其配套扩展的设备种类多、价格也比较便宜,所以x86结构的电脑能很容易进行性能扩展 | ARM结构的电脑是通过专用的数据接口使CPU与数据存储设备进行连接,所以ARM的存储、内存等性能扩展难以进行 |
操作系统的兼容性 | 兼容Windows、Linux | Linux |
IBM 开始做 IBM PC 时,一开始并没有让最牛的华生实验室去研发,而是交给另一个团队。一年时间,软硬件全部自研根本不可能完成,于是他们采用了英特尔的 8088 芯片作为 CPU,使用微软的 MS-DOS 做操作系统。
谁能想到 IBM PC 卖的超级好,好到因为垄断市场而被起诉。IBM 就在被逼的情况下公开了一些技术,使得后来无数 IBM-PC 兼容机公司的出现,也就有了后来占据市场的惠普、康柏、戴尔等等。 英特尔的技术因此成为了行业的开放事实标准。由于这个系列开端于 8086,因此称为 x86 架构。
image.png
先看下计算机的工作模式
image.png
对于一个计算机来讲,最核心的就是CPU(Central Processing Unit,中央处理器)。这是这台计算机的大脑,所有的设备都围绕它展开。 CPU 和其他设备连接,要靠一种叫作总线(Bus)的东西,其实就是主板上密密麻麻的集成电路,这些东西组成了 CPU 和其他设备的高速通道。
image.png
image.png
只管算,例如做加法、做位移等等。但是,它不知道应该算哪些数据,运算结果应该放在哪里。
包括 CPU 内部的缓存和寄存器组,空间很小,但是速度飞快,可以暂时存放数据和运算结果。
控制单元是一个统一的指挥中心,它可以获得下一条指令,然后执行这条指令。这个指令会指导运算单元取出数据单元中的某几个数据,计算出个结果,然后放在数据单元的某个地方。
地址总线的位数,决定了能访问的地址范围到底有多广。例如只有两位,那 CPU 就只能认 00,01,10,11 四个位置,超过四个位置,就区分不出来了。位数越多,能够访问的位置就越多,能管理的内存的范围也就越广。
数据总线的位数,决定了一次能拿多少个数据进来。例如只有两位,那 CPU 一次只能从内存拿两位数。要想拿八位,就要拿四次。位数越多,一次拿的数据就越多,访问速度也就越快。
CPU 使用率描述了非空闲时间占总 CPU 时间的百分比
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。 理想情况下,平均负载等于逻辑 CPU 个数,这表示每个 CPU 都恰好被充分利用。如果平均负载大于逻辑 CPU 个数,就表示负载比较重了。 常用工具: top uptime
上下文切换,本身是保证 Linux 正常运行的一项核心功能。但过多的上下文切换,会将原本运行进程的 CPU 时间,消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成为性能瓶颈
[work@ros-dev-29 ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 740092 325876 1174820 0 0 1 7 0 0 0 0 100 0 0
[work@ros-dev-29 ~]$ pidstat -w
Linux 2.6.32-573.22.1.el6.x86_64 (ros-dev-29) 09/20/2019 _x86_64_ (4 CPU)
11:17:19 AM PID cswch/s nvcswch/s Command
11:17:19 AM 1 0.00 0.00 init
11:17:19 AM 2 0.00 0.00 kthreadd
11:17:19 AM 3 0.00 0.00 migration/0
11:17:19 AM 4 0.17 0.00 ksoftirqd/0
11:17:19 AM 5 0.00 0.00 stopper/0
11:17:19 AM 6 0.08 0.00 watchdog/0
11:17:19 AM 7 0.07 0.00 migration/1
image.png