程序员需要了解的硬核知识之CPU

大家都是程序员 , 大家都是和计算机打交道的程序员 , 大家都是和计算机中软件硬件打交道的程序员 , 大家都是和CPU打交道的程序员 , 所以 , 不管你是玩儿硬件的还是做软件的 , 你的世界都少不了计算机最核心的 - CPU
CPU是什么CPU 的全称是 Central Processing Unit , 它是你的电脑中最硬核的组件 , 这种说法一点不为过 。 CPU 是能够让你的计算机叫计算机的核心组件 , 但是它却不能代表你的电脑 , CPU 与计算机的关系就相当于大脑和人的关系 。 它是一种小型的计算机芯片 , 它嵌入在台式机、笔记本电脑或者平板电脑的主板上 。 通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU 。这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算 , 也就是说 CPU 决定了你电脑的计算能力 。
程序员需要了解的硬核知识之CPU文章插图
CPU 实际做什么CPU 的核心是从程序或应用程序获取指令并执行计算 。 此过程可以分为三个关键阶段:提取 , 解码和执行 。 CPU从系统的 RAM 中提取指令 , 然后解码该指令的实际内容 , 然后再由 CPU 的相关部分执行该指令 。
【程序员需要了解的硬核知识之CPU】RAM : 随机存取存储器(英语:Random Access Memory , 缩写:RAM) , 也叫主存 , 是与 CPU 直接交换数据的内部存储器 。 它可以随时读写(刷新时除外) , 而且速度很快 , 通常作为操作系统或其他正在运行中的程序的临时数据存储介质
CPU 的内部结构说了这么多 CPU 的重要性 , 那么 CPU 的内部结构是什么呢?又是由什么组成的呢?下图展示了一般程序的运行流程(以 C 语言为例) , 可以说了解程序的运行流程是掌握程序运行机制的基础和前提 。
程序员需要了解的硬核知识之CPU文章插图
在这个流程中 , CPU 负责的就是解释和运行最终转换成机器语言的内容 。
CPU 主要由两部分构成:控制单元 和 算术逻辑单元(ALU)

  • 控制单元:从内存中提取指令并解码执行
  • 算数逻辑单元(ALU):处理算数和逻辑运算
CPU 是计算机的心脏和大脑 , 它和内存都是由许多晶体管组成的电子部件 。 它接收数据输入 , 执行指令并处理信息 。 它与输入/输出(I / O)设备进行通信 , 这些设备向 CPU 发送数据和从 CPU 接收数据 。
从功能来看 , CPU 的内部由寄存器、控制器、运算器和时钟四部分组成 , 各部分之间通过电信号连通 。
程序员需要了解的硬核知识之CPU文章插图
  • 寄存器是中央处理器内的组成部分 。 它们可以用来暂存指令、数据和地址 。 可以将其看作是内存的一种 。 根据种类的不同 , 一个 CPU 内部会有 20 - 100个寄存器 。
  • 控制器负责把内存上的指令、数据读入寄存器 , 并根据指令的结果控制计算机
  • 运算器负责运算从内存中读入寄存器的数据
  • 时钟 负责发出 CPU 开始计时的时钟信号
接下来简单解释一下内存 , 为什么说 CPU 需要讲一下内存呢 , 因为内存是与 CPU 进行沟通的桥梁 。 计算机所有程序的运行都是在内存中运行的 , 内存又被称为主存 , 其作用是存放 CPU 中的运算数据 , 以及与硬盘等外部存储设备交换的数据 。 只要计算机在运行中 , CPU 就会把需要运算的数据调到主存中进行运算 , 当运算完成后CPU再将结果传送出来 , 主存的运行也决定了计算机的稳定运行 。
主存通过控制芯片与 CPU 进行相连 , 由可读写的元素构成 , 每个字节(1 byte = 8 bits)都带有一个地址编号 , 注意是一个字节 , 而不是一个位 。 CPU 通过地址从主存中读取数据和指令 , 也可以根据地址写入数据 。 注意一点:当计算机关机时 , 内存中的指令和数据也会被清除 。