【译文】CPU是如何工作的

3,170 阅读8分钟

  CPU,也称为微处理器,是计算机的心脏和/或大脑。让我们深入了解计算机的核心,以帮助我们有效地编写计算机程序。 CPU image.png cpu 插槽

工具通常比机器更简单;它通常与手一起使用,而机器经常通过动力或蒸汽动力移动                                   — Charles Babbage

  计算机是一种主要由电力驱动的机器,但其灵活性和可编程性有助于实现工具的简单性。   CPU是计算机的核心和大脑,并执行提供给它的指令集。CPU的主要工作是执行算术和逻辑运算并一起编排操作指令集。在深入了解主要部分之前,我们先来看看CPU的主要组件是什么以及它们的作用是什么: 处理器的两个主要组件

  • 控制单元:CU(control unit)
  • 算数与逻辑单元:ALU CPU内部构造

控制单元—CU

  控制单元CU是CPU的一部分,可帮助协调指令的执行。它告诉我们该做什么。根据该指令,它有助于激活将CPU连接到包括ALU在内的计算机的其他不同部分的电线。控制单元是CPU接收处理指令的第一个组件。 控制单元有两种形式:

  • 硬连线控制单元。
  • 可编程(微编程)控制单元 硬连线控制单元是硬件,需要更改硬件以修改它的工作,因为可编程微控制器控制单元可以改变其行为。硬连线CU在处理指令方面更快,而可编程可更灵活。

算术逻辑单元—ALU

  算术和逻辑单元ALU正如其名字含义一样,进行所有算术和逻辑计算。 例如ALU执行加法,减法等操作。ALU由执行这些操作的逻辑电路或逻辑门组成。   大多数逻辑门具有两个输入和一个输出。   波纹管是半加法器电路的一个例子,它接收两个输入并输出结果。这里A和B是输入,S是输出,C是进位。 波纹管

存储 - 寄存器和内存

  CPU的主要工作是执行提供给它的指令。要在大多数情况下处理这些指令,它需要数据。一些数据是中间数据,其中一些是输入,另一些是输出。这些执行指令所需的数据存储在以下存储中:

寄存器(register)

  寄存器是一小组可以存储数据的地方。寄存器是锁存器的组合。锁存器也称为触发器,是存储1位信息的逻辑门的组合。   锁存器有两根输入线,写入线和输入线以及一根输出线。我们可以使写入线更改存储的数据。禁用写入线时,输出始终保持不变。 锁存器   CPU使用寄存器来存储输出数据。因为它是中间数据,所以发送到主存储器(RAM)会很慢。该数据被发送到由BUS连接的其他寄存器。寄存器可以存储指令,输出数据,存储地址或任何类型的数据。

内存(RAM)

  RAM是一个寄存器集合,以优化的方式排列和紧凑在一起,以便它可以存储更多数据。 RAM(随机存取存储器)是易失性的,当我们关闭电源时它的数据会丢失。由于RAM是读/写数据寄存器的集合,RAM接收8位地址的输入,用于存储的实际数据的数据输入以及最终用于锁存器的读写使能器。

什么是指令集?

指令是计算机可以执行的最小粒度级计算。 CPU可以处理各种类型的指令。 指令包括如下方面:

  • 算术运算,如加法,减法
  • 逻辑运算,如and、or、not
  • 数据指令,如移动,输入,输出,加载和存储
  • 控制流指令,如goto,if ... goto,call和return
  • 通知CPU程序已结束Halt

指令使用汇编语言提供给计算机,或者由编译器生成或以某些高级语言解释。 这些指令在CPU内部硬连线。 ALU包含算术和逻辑,其中控制流由CU管理。 在一个时钟周期中,计算机可以执行一条指令,但现代计算机可以执行多条指令。 计算机可以执行的一组指令称为指令集。

CPU时钟

时钟周期 计算机的速度由其时钟周期决定。它是计算机每秒钟的时钟周期数。单个时钟周期非常小,大约250 * 10 * -12秒。处理器的时钟周期越快。 CPU时钟周期以gHz(千兆赫兹)为单位。 1gHz等于10⁹Hz(赫兹)。赫兹意味着第二个。所以1千兆赫表示每秒10⁹周期。 时钟周期越快,CPU可以执行的指令就越多。时钟周期= 1 /时钟速率CPU时间=时钟周期数/时钟速率 这意味着通过优化我们提供给CPU的指令来改善CPU时间,我们可以提高时钟速率或减少时钟周期数。某些处理器提供了增加时钟周期的能力,但由于它是物理变化,因此可能存在过热甚至冒烟/火灾。

一个指令如何被执行

指令按顺序存储在RAM中。对于假定的CPU,指令由OP代码(操作代码)和存储器或寄存器地址组成。 控制单元指令寄存器(IR)内有两个寄存器,用于加载指令的OP代码和指令地址寄存器,用于加载当前执行指令的地址。 CPU内部还有其他寄存器,用于存储存储在指令最后4位地址中的值。 让我们举一个添加两个数字的指令的例子。以下是指令以及说明:

  • STEP 1 — LOAD_A 8: 该指令最初保存在RAM中,比如说<1100 1000>。前4位是操作码。这决定了指令。该指令被提取到控制单元的IR中。该指令被解码为load_A,这意味着它需要将地址1000中的数据加载到寄存器A的指令的最后4位。
  • STEP 2 — LOAD_B 2: 与上面类似,这将存储器地址2(0010)中的数据加载到CPU寄存器B.
  • STEP 3 — ADD B A: 现在下一条指令是添加这两个数字。这里CU告诉ALU执行添加操作并将结果保存回寄存器A.
  • STEP 4 — STORE_A 23: 这是一组非常简单的指令,可以帮助添加两个数字。 自此我们成功相加了两个数字。

总线(Bus)

CPU,寄存器,存储器和IO设备之间的所有数据都通过总线传输。要将数据加载到刚刚添加的存储器中,CPU将存储器地址写入地址总线,并将总和的结果写入数据总线,并在控制总线中启用正确的信号。通过这种方式,数据在总线的帮助下加载到存储器中。 总线

缓存(Cache)

CPU还具有将指令预取到其缓存的机制。据我们所知,处理器可以在一秒钟内完成数百万条指令。这意味着从RAM中获取指令所花费的时间比执行它们要多。因此,CPU缓存会预取一些指令和数据,以便执行速度更快。 如果高速缓存和操作存储器中的数据不同,则数据被标记为脏位。

指令流水线

现代CPU使用指令流水线操作来执行指令并行化。获取,解码,执行。当一条指令处于解码阶段时,CPU可以处理另一条指令用于获取阶段。 指令流水线 当一条指令依赖于另一条指令时,这就会有一个问题。因此,处理器执行不依赖且按不同顺序的指令。

多核计算机

它基本上是不同的CPU,但有一些共享资源,如缓存。 性能(Performance) CPU的性能由它的执行时间决定,性能 = 1/执行时间。假设一个程序执行需要20ms。 CPU的性能是1/20 = 0.05ms,相对性能 = 执行时间1/执行时间2。 CPU性能考虑的因素是指令执行时间和CPU时钟速度。因此,为了提高程序的性能,我们需要提高时钟速度或减少程序中的指令数。处理器速度有限,具有多核的现代计算机可以每秒支持数百万条指令。但是如果我们编写的程序有很多指令,这将降低整体性能。 大O表示法根据给定的输入确定性能将受到怎样的影响。 在CPU中进行了大量优化,以使其更快,并尽可能多地执行。在编写任何程序时,我们需要考虑如何减少我们提供给CPU的指令数量将提高计算机程序的性能。

原文地址

How does a CPU work?