「译文」CPU是如何工作的

  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?

https://juejin.im/post/5e37970b5188254c4777364c

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论