原文首发于 Guanngxu 的个人博客:深入理解计算机系统——CPU 是怎样工作的?

参考内容:
处理器是如何工作的
《编码:隐匿在计算机软硬件背后的语言》——[美] Charles Petzold

CPU 大家应该都不会陌生,日常用的手机、电脑中都有 CPU,CPU 作为一个设备的大脑,指挥着其它各种硬件的协同工作,芯片技术也是国内一直没有突破的技术。

我们先来看看怎么让电路去运算呢?比如如何让电路运算1 + 1,直接使用下面这个装置就可以了。

作为一个比较好奇的人,总会想看看那个方框框里面是什么样子的,让我们慢慢解开加法器的外衣。

这个电路你应该不会陌生,它需要两个开关都闭合时灯泡才会发光,也就是说它有两个输入,开关闭合时我们认为输入为 1,未闭合状态视为 0;而灯泡是否发光就是我们的输出,发光为 1,否则为 0。于是就有了下面这张表。

and 0 1
0 0 0
1 0 1

这样的电路我们就把它称之为与(and)门,它接受两个逻辑输入,并会给出我们一个逻辑输出,与它相似的电路还有逻辑或(or)、**异或(xor)**等等,因为太多了,就不一一介绍了,如果感兴趣可以 Google 一下。

为了方便我们把上面的电路做一个简化,抽象成下面这个样子,其它的电路也可以通过 Google 找到它们的样子。

现在直接给出一个可以运算加法的电路,它的样子长下面这样。

我们也可以给它列一个表,显得更清晰,表中之所以有两位是因为加法有可能会产生进位,而我们使用的是二进制表示,所以10表示的是十进制中的2

+ 0 1
0 00 01
1 01 10

有加法就很好办了,减法实际上是加一个负数,除法可以改写成乘法,乘法又可以改写成加法,现在加法一统天下了。

好了,上面说了那么多,还贴了那么多图,只是为了让你相信电路是可以实现我们数学上的运算的,下面就没有那么声情并茂了。

我们可以把一个运算抽象为下面这个模型。

输入数据 --> 运算 --> 输出数据

计算机中把各种像上述加法器一样的运算器放在了同一个小盒子里面,组成成一个运算器集合,我们给它取个名字叫算术逻辑单元(ALU:Arithmetic Logical Unit),它是 CPU 的核心组成部分。

当然我们不可能只进行加法这种简单运算,一个很长很长的算式需要经过多步运算,小学我们就学过梯等式,它实际上有一大推输入,中间那么多梯子,都是临时步骤,临时步骤、数据一类的东西都需要有个东西给它存起来,所以在 CPU 就拿出一个小盒子当做存储器

# 梯等式
485 - ( 6 × 4 + 32 )
= 485 - ( 24 + 32 )
= 485 - 56
= 429

现在我们有了存储器和运算器两个干事的人,但是没有一个统筹兼顾的领导者,控制器就充当了这个角色,它需要把控制储存器中的数据发送到 ALU 去进行运算,然后再将运算的结果取出来存到储存器中。总的来说,控制器的工作就是完成协调和指挥整个计算机系统的操作。

我们把上面的结构画出来,图中的虚线表示指令流,实线表示数据流,这个结构就是著名的冯 · 诺依曼体系结构,遵循这种结构的计算机都叫做冯诺依曼机,现在所有的机器都是冯诺依曼机。

请注意,我们现在实际上只有硬件,没有软件是什么事情都干不了了,我们这里所说的软件是一堆指令序列,比如加法指令、传送指令等等组成的序列,也就是我们常说的汇编语言。

但是在早期并不是这样的,这台机器上编写的指令序列是无法运行在另一家公司生产的机器上的,即使是同一个公司的机器,如果不是同一代,那也不能运行,所以早期的编程是直接面向硬件的。

这时就有人站出来研究如何实现一次编写多处运行了,IBM 首次在它的 360 系统上引入了ISA的概念,即指令集体系结构。

指令集体系结构将编程所要了解的硬件信息从硬件系统中抽象了出来,这样开发人员就可以直接面向处理器的 ISA 进行编程了。

为什么手机上的软件不能运行在电脑中呢?就是因为个人电脑所使用的 Intel 和 AMD 处理器都是基于 x86 指令集的,而手机大多数都使用的是基于 ARM 指令集的处理器。

现在处理器被分为指令集体系结构、处理器微架构、处理器物理实现三个层次。体系结构相当于需求,微架构好比设计,物理实现则是具体的实现过程。

比如我们规定指令集中必须有加法指令,这个指令你怎么设计、如何实现是给你的事,我只管给出两个加数你能给我输出一个正确的结果,简单来说就是抽象封装。

CPU 是怎样工作的相关推荐

  1. dma工作时cpu工不工作_CPU如何工作?

    dma工作时cpu工不工作 CPU, also known as the microprocessor is the heart and/or brain of a computer. Lets De ...

  2. cpu与外设工作原理

    总结来说,就是插上外设后,cpu就可以检测和连接到外设上的寄存器,把它当成内存来使用,然后就是对这些寄存器进行读写,写控制寄存器来控制外设,读状态寄存器来检测外设状态(外设会把当前状态信息放到指定寄存 ...

  3. 计算机发展历史简述及CPU构成及工作过程——Crash Course内容整理

    文章目录 0. 写在前面 1. 计算设备发展简史 1.1 计算设备早期 1.2 机械式计算设备 步进计算机 差分机和分析机 1.3 机电式计算设备 机电式穿孔制表机 Harvard Mark I 1. ...

  4. 操作系统应该如何在多CPU上调度工作?

    本章将介绍多处理器调度(multiprocessor scheduling)的基础知识.由于本章内容相对较深,建议认真学习并发相关的内容后再读. 过去很多年,多处理器(multiprocessor)系 ...

  5. CPU的cache工作原理

    CPU的cache工作原理 博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来指教共同探讨,谢谢!博主最近的工作是CPU集成设计,所以接下来的篇章将以CPU的学习讲解 ...

  6. Synchronizing CPU and GPU Work 同步CPU和GPU工作

    Synchronizing CPU and GPU Work 同步CPU和GPU工作 该节对应源代码(经优化可直接运行)请移步下载资源,搜索如上标题即可. 本文介绍了在Metal程序中,同时异步运行的 ...

  7. 双核CPU是怎么工作的?

    双核处理器一般分为两种情况:2个内核相同(双核心),2个内核不同(双CPU). 工作原理主要是将单内核中的并行计算扩展到多CPU之间,具体如下: 双核心: 2个内核相同,一块CPU基板上集成两个处理器 ...

  8. CPU的基本工作原理

    程序 = 指令 + 数据 只有指令,才最终在运行阶段,被运行程序的计算机的CPU去执行 1.CPU的组成 (1)ALU(算术逻辑单元) 算术:加法 减法 乘法 除法 取余 逻辑:与 或 非 需要利用到 ...

  9. 计算机组成之cpu组成及工作原理

    计算机由五部分组成,分别为存储器,控制器,运算器,输入设备和输出设备. 早期的处理器(CPU)是由控制器和运算器组成,而现代的CPU为了提升性能则在早期CPU的基础上增加了内部寄存器,用来暂时存放参与 ...

最新文章

  1. python一个函数可以有参数也可以没有参数_python 传入任意多个参数(方法调用可传参或不传参)...
  2. python套接字编程_Python网络编程 Python套接字编程
  3. 深度linux win7分区,怎么安装Win7深度操作系统?
  4. 现代谱估计:多窗口谱重建
  5. 让你受用一辈子的181句话
  6. mysql8用户管理
  7. 0909 粗浅的认识编译原理
  8. 台式计算机睡眠了怎么唤醒,台式电脑睡眠了怎么唤醒
  9. (六)Netty网络编程应用实例-群聊系统
  10. Redux 中 combineReducers实现原理
  11. 机器学习与计算机视觉(sklearn快速上手)
  12. Linux下高效编写Shell——shell特殊字符汇总
  13. 思科 IP 电话被指包含严重的 RCE 缺陷
  14. dynatrace监控发现Java代码中new对象耗时100多秒
  15. Zephyr移植到NXP MIMXRT1060_EVK-RT1061 CVL5A过程
  16. VC学习笔记:状态栏
  17. 【IAR】 This device has been locked for debugging
  18. Chrome浏览器隐藏彩蛋
  19. C语言编程 5.7 从键盘中输入一个英文字母,如果它是大写则转化为小写。如果它是小写则转化为大写,并将其ASCll码显示到屏幕上。
  20. 70.JAVA编程思想——Web应用

热门文章

  1. RISC-V_GD32VF103-ADC 模数转换 电压采集
  2. AI绘图网站 MJ(Midjourney) 基础讲解+注册教程
  3. RAID5服务器磁盘阵列,两块盘坏了数据恢复
  4. Oracle 数据库备份脚本
  5. matlab 开4次方根,matlab中计算四次方方程a*x^4+b*x+c=0的实数根.
  6. android 列表倒计时,Android ListView列表实现倒计时
  7. Clickhouse 函数基础入门
  8. excel里面身份证号显示不全
  9. 互联网夜高峰,无人应答
  10. 平面设计主要是学什么?平面设计主要有哪些内容?——黎乙丙