前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-09-20

2019-09-20

作者头像
羊羽shine
发布2019-09-24 16:14:18
6530
发布2019-09-24 16:14:18
举报
文章被收录于专栏:Golang开发

CPU架构分类

从CPU发明到现在,有非常多种架构,从我们熟悉的X86,ARM,到不太熟悉的MIPS,IA64等

X86

ARM

指令集

复杂指令集(CISC)

精简指令集(RISC)

功耗

性能

扩展能力

X86结构的电脑采用“桥”的方式与扩展设备(如:硬盘、内存等)进行连接,其配套扩展的设备种类多、价格也比较便宜,所以x86结构的电脑能很容易进行性能扩展

ARM结构的电脑是通过专用的数据接口使CPU与数据存储设备进行连接,所以ARM的存储、内存等性能扩展难以进行

操作系统的兼容性

兼容Windows、Linux

Linux

X86架构来由

IBM 开始做 IBM PC 时,一开始并没有让最牛的华生实验室去研发,而是交给另一个团队。一年时间,软硬件全部自研根本不可能完成,于是他们采用了英特尔的 8088 芯片作为 CPU,使用微软的 MS-DOS 做操作系统。

谁能想到 IBM PC 卖的超级好,好到因为垄断市场而被起诉。IBM 就在被逼的情况下公开了一些技术,使得后来无数 IBM-PC 兼容机公司的出现,也就有了后来占据市场的惠普、康柏、戴尔等等。 英特尔的技术因此成为了行业的开放事实标准。由于这个系列开端于 8086,因此称为 x86 架构。

image.png

X86架构组成

先看下计算机的工作模式

image.png

对于一个计算机来讲,最核心的就是CPU(Central Processing Unit,中央处理器)。这是这台计算机的大脑,所有的设备都围绕它展开。 CPU 和其他设备连接,要靠一种叫作总线(Bus)的东西,其实就是主板上密密麻麻的集成电路,这些东西组成了 CPU 和其他设备的高速通道。

CPU组件图

image.png

image.png

运算单元

只管算,例如做加法、做位移等等。但是,它不知道应该算哪些数据,运算结果应该放在哪里。

数据单元

包括 CPU 内部的缓存和寄存器组,空间很小,但是速度飞快,可以暂时存放数据和运算结果。

  • 通用寄存器 AX、BX、CX、DX、SP、BP、SI、DI。8个通用寄存器,用于在计算过程中暂存数据。
控制单元

控制单元是一个统一的指挥中心,它可以获得下一条指令,然后执行这条指令。这个指令会指导运算单元取出数据单元中的某几个数据,计算出个结果,然后放在数据单元的某个地方。

  • 指令指针寄存器IP(Instruction Pointer Register) 指向代码段中下一条指令的位置。CPU 会根据它来不断地将指令从内存的代码段中,加载到 CPU 的指令队列中,然后交给运算单元去执行。
  • 代码段寄存器(Code Segment Register) 存放代码段的起始地址。代码段的偏移量在 IP 寄存器中。通过它们可以找到代码在内存中的位置
  • 数据段的寄存器(Data Segment Register) 存放数据段的起始地址。数据段的偏移量会放在通用寄存器中。通过它们可以找到数据在内存中的位置
  • 栈寄存器(Stack Register)
  • 扩展段寄存器(extend Segment Register)

相关术语

地址总线

地址总线的位数,决定了能访问的地址范围到底有多广。例如只有两位,那 CPU 就只能认 00,01,10,11 四个位置,超过四个位置,就区分不出来了。位数越多,能够访问的位置就越多,能管理的内存的范围也就越广。

数据总线

数据总线的位数,决定了一次能拿多少个数据进来。例如只有两位,那 CPU 一次只能从内存拿两位数。要想拿八位,就要拿四次。位数越多,一次拿的数据就越多,访问速度也就越快。

CPU 各种性能指标

CPU使用率

CPU 使用率描述了非空闲时间占总 CPU 时间的百分比

  • 用户 CPU 使用率,包括用户态 CPU 使用(user和低优先级用户态 CPU 使用率(nice),表示 CPU 在用户态运行的时间百分比。用户 CPU 使用率高,通常说明有应用程序比较繁忙。
  • 系统 CPU 使用率,表示 CPU 在内核态运行的时间百分比(不包括中断)。系统 CPU使用率高,说明内核比较繁忙。
  • 等待 I/O 的 CPU 使用率,通常也称为 iowait,表示等待 I/O 的时间百分比。iowait高,通常说明系统与硬件设备的 I/O 交互时间比较长。
  • 软中断和硬中断的 CPU 使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,通常说明系统发生了大量的中断。
  • steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的CPU 时间 常用工具: top
平均负载

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。 理想情况下,平均负载等于逻辑 CPU 个数,这表示每个 CPU 都恰好被充分利用。如果平均负载大于逻辑 CPU 个数,就表示负载比较重了。 常用工具: top uptime

上下文切换

上下文切换,本身是保证 Linux 正常运行的一项核心功能。但过多的上下文切换,会将原本运行进程的 CPU 时间,消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成为性能瓶颈

  • 自愿上下文切换 是指进程无法获取所需资源,导致的上下文切换。比如说,I/O、内存等系统资源不足时,就会发生自愿上下文切换。
  • 非自愿上下文切换 是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。
常用工具
  • vmstat 查看系统整体的上下文切换数 (cpu-cs context switch)
代码语言:javascript
复制
[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
  • pidstat -w cswch 表示每秒自愿上下文切换(voluntary context switches)的次数 nvcswch 表示每秒非自愿上下文切换(non voluntary context switches)的次数
代码语言:javascript
复制
[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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.09.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CPU架构分类
  • X86架构来由
  • X86架构组成
    • CPU组件图
      • 运算单元
        • 数据单元
          • 控制单元
          • 相关术语
            • 地址总线
              • 数据总线
              • CPU 各种性能指标
                • CPU使用率
                  • 平均负载
                    • 上下文切换
                      • 指标工具指南
                      相关产品与服务
                      数据保险箱
                      数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档