CPU 是如何工作的?

640?wx_fmt=gif

CPU(中央处理器),也被称为微处理器,是计算机的心脏和/或大脑。本文让我们一起深入了解计算机的核心,以帮助我们高效地编写计算机程序。

640?wx_fmt=jpeg

作者 | Milap Neupane

译者 | 苏本如,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

“工具通常比机器简单,通常用手来使用,而机器通常由动物或蒸汽动力驱动。”

——查尔斯·巴贝奇

计算机是一种机器,主要由电力驱动,但其灵活性和可编程性帮助实现了其作为一种工具的简单性。

CPU是计算机的心脏和/或大脑。负责执行提供给它们的指令。它的主要任务是执行算术和逻辑运算,并将指令协调在一起。在深入到本文的主要部分之前,让我们先看看CPU的主要组成部分,以及它们的作用分别是什么。


640?wx_fmt=png

CPU的两个主要组成部分


控制单元 — CU

控制单元(CU)是CPU的一部分,它帮助协调指令的执行。它告诉CPU应该做什么。它的主要职责是根据指令,帮助激活连接CPU和计算机其他不同部件(包括ALU)的线路。控制单元是CPU的第一个接收处理指令的部件。

控制单元有两种类型:

  • 硬接线控制单元。

  • 微型可编程(微编程)控制单元。

硬接线控制单元是一种硬件,它需要在硬件上进行更改以实现对其工作方式的修改,而微型可编程控制单元则可以进行编程以更改其工作方式。硬接线控制单元在处理指令方面更快,而微型可编程控制单元则更灵活。

算术逻辑单元 —  ALU

算术逻辑单元(ALU),顾名思义,就是负责所有的算术和逻辑运算。算术逻辑单元执行加法运算,减法运算等操作。算术逻辑单元是由执行这些操作的逻辑电路或逻辑门组成。

大多数逻辑门接受两个输入并产生一个输出。

下面是一个半加法器电路的例子,它接受两个输入并输出结果。这里A和B是输入,S是输出,C是进位。   

640?wx_fmt=png

半加法器电路图


640?wx_fmt=png

存储 - 寄存器和存储器


CPU的主要任务是执行提供给它的指令。在大多数情况下,为了处理这些指令,它需要数据。有些数据是中间数据,有些是输入,另一些是输出。这些数据连同指令一起存储在下列存储器中:

寄存器

寄存器是一组可以存储数据的小地方。寄存器是锁存器(Latches)的组合。锁存器也称为触发器(flip-flops),是存储1位信息的逻辑门的组合。

锁存器有一条输入线,一条写入和输入线,和一条输出线。我们可以启用写入线对存储的数据进行更改。当写入线被禁用时,输出始终保持不变。

640?wx_fmt=png

SR锁存器,由一对交叉耦合的或非门(NOR Gates)构成。

CPU由寄存器来存储输出数据。由于是中间数据,它们被发送到主存储器(RAM)的速度会慢。这些数据被发送到由总线连接的其它寄存器。寄存器可以存储指令、输出数据、存储地址或任何类型的数据。

存储器(RAM)

RAM - 随机存取存储器是寄存器的集合,它们以优化的方式排列和压缩在一起,以便存储更多的数据。随机存取存储器(RAM)是易失性的,当我们关闭电源时,它存储的数据会丢失。由于RAM是用于读/写数据的寄存器的集合,因此RAM可以用于存储8位地址的输入、用于存储实际数据的数据输入,和用于储存最后的和锁存器一样工作的读写启用码。


640?wx_fmt=png

什么是指令


指令是计算机可以执行的最小粒度运算。CPU可以处理各种类型的指令

指令类型包括:

  • 算术运算指令,如加法和减法运算

  • 逻辑运算指令,如逻辑与(AND)、逻辑或(OR)和逻辑非(NOT)运算

  • 数据传送指令,如数据移动、输入、输出、加载和存储

  • 程序控制指令,如条件/无条件转移指令(if…goto,goto),转子指令和转移指令(call,return)

  • 通知CPU程序已结束的Halt指令

指令通过以下方式提供给计算机:使用汇编语言直接提供,或由编译器生成,或用某些高级语言解释给出。

这些指令在CPU内部是硬连线的。算术和逻辑运算指令包括在ALU(算术逻辑单元)中,而程序控制指令由CU(控制单元)管理。

通常在一个时钟周期(clock cycle)内,计算机可以执行一个指令,但是现代的计算机可以同时执行多个指令。

计算机可以执行的一组指令称为指令集。


640?wx_fmt=png

CPU时钟


时钟周期

计算机的速度由其时钟周期(Clock cycle)衡量。它是指计算机每秒工作的时钟周期数。单个时钟周期非常小,大约250*10^(-12)秒。每秒时钟周期数越高,处理器速度越快。

CPU时钟频率(clock rate)的测量单位为GHz(千兆赫兹)。1Ghz等于10 ⁹Hz(赫兹)。一赫兹意味着一秒钟。所以一千兆赫兹意味着每秒10 ⁹个时钟周期。

时钟周期越小,CPU可以执行的指令数量越多。时钟周期等于时钟频率的倒数,而CPU时间=时钟周期数/时钟频率

这意味着为了改进(减少)CPU时间,我们可以通过提高时钟频率,或优化我们提供给CPU的指令来减少指令需要的时钟周期的数量。一些处理器提供了提高时钟频率的能力,但由于这是一个物理变化,可能会出现过热,甚至冒烟/起火。


640?wx_fmt=png

指令是如何执行的


指令按顺序存储在随机存取存储器(RAM)上。对于一个假设的CPU指令,它由操作码(OP code)和存储器或寄存器地址组成。

控制单元(CU)内有两个寄存器:用于加载指令操作码的指令寄存器(IR),和用于加载当前正在执行的指令地址的指令地址寄存器。CPU中还有其他寄存器,用于存储一个指令的最后4位的地址中存储的值。

让我们以一组实现两个数字相加操作的指令为例。下面是这些指令及其说明:

第一步 - LOAD_A 8:

该指令最初保存在RAM中,比如说指令<1100 1000>。它的前4位是操作码。这决定了这个指令要做什么。然后该指令被读取到控制单元的指令寄存器(IR)中。指令被译码为load_A,这意味着它需要加载地址1000中的数据,地址1000是存储在寄存器A中的指令的后4位。

第二步 - LOAD_B 2:

与上面类似,它将内存地址2(0010)中的数据加载到CPU的寄存器B中。

第三步 – ADD B A

接下来的这条指令是把这两个数字相加。在这里,控制单元(CU)告诉算术逻辑单元(ALU)执行加法操作并将结果保存回寄存器A中。

第4步 – STORE_A 23

将结果保存回寄存器A中。

这是一组非常简单的指令,实现了两个数字的相加操作。

现在,我们成功地得到了两个数字相加的和值!

总线

CPU,寄存器,存储器和IO设备之间的所有数据都通过总线传输。要将刚才两数相加得到的和数保存到存储器中,CPU将存储器地址放入地址总线,将得到的结果(和数)放入数据总线,然后在控制总线中启用正确的信号。这样,数据在总线的帮助下被保存到存储器中。

640?wx_fmt=png

计算机系统总线

缓存

CPU还具有将指令预取到其缓存中的机制。我们知道,一个处理器可以在一秒钟内完成数百万条指令。这意味着从存储器(RAM)中获取指令所花费的时间比执行指令所花费的时间要多。所以CPU会预取一些指令和数据到其缓存中,以加快执行速度。

如果缓存中的数据和操作内存中的数据不同,则将数据标记为脏位(dirty bit)。

指令流水线

现代CPU在指令执行中采用指令流水线技术实现取指(FI)、译码(DI)、执行(EI)的并行化。当一条指令完成“取指”后进入“译码”的同时,下一条指令就可以进行“取指”了,这样就提高了指令的执行效率。

640?wx_fmt=png

指令流水线技术

然而,当一条指令和另一条指令有依赖关系时,这种技术会产生问题。所以,指令流水线技术只能够让处理器以不同的顺序执行相互之间没有依赖关系的指令。

多核计算机

它基本上是有不同的CPU,但是有一些共享资源,比如缓存等。


640?wx_fmt=png

性能


CPU的性能取决于它的执行时间。性能=1/执行时间

假设一个程序执行需要20毫秒。CPU性能为1/20=0.05ms。相对性能=执行时间1/执行时间2

影响CPU性能的因素是指令执行时间和CPU的时钟速度(时钟频率)。因此,为了提高程序的性能,我们要么提高CPU的时钟速度(时钟频率),要么减少程序中的指令数量。处理器的速度有限,现代多核计算机每秒可以支持数百万条指令。但是,如果我们编写的程序有太多的指令,就将导致整体性能的降低。

大O符号(Big O notation)计算方法可以用来确定在给定输入的情况下CPU的性能将如何受到影响。

为了尽可能地提高CPU的速度,很多优化工作已经在CPU中进行。而我们在编写任何程序时,都需要考虑如何尽可能地减少我们提供给CPU的指令数量,以提高计算机程序的性能。

原文:https://milapneupane.com.np/2019/07/06/how-does-a-cpu-work/

本文为CSDN翻译,转载请注明来源出处。

640?wx_fmt=png

5G进入元年,物联网发展愈加火爆!

你是否身怀绝技、却无人知晓;别让你的IoT项目再默默无闻了!

继第一届AI优秀案例评选活动之后,2019年案例评选活动再度升级,CSDN将评选出TOP 30优秀IoT案例,赶快扫码参与评选吧!重磅福利,等你来领!

640?wx_fmt=jpeg

 热 文 推 荐 

☞《乐队的夏天》很酷?程序员式的摇滚才燃爆了!

☞ 腾讯又涨工资!员工平均月薪达 7.27 万!

☞ 为什么华为200万招聘AI博士,马斯克却推出脑机接口对抗AI?

鸿蒙 OS 背后神秘人物曝光!

只需要支付0.5元就可以撤回交易?这下可坑苦DApp了……

从原理到代码,轻松深入逻辑回归模型!

@程序员,“10倍工程师”都在追这四大AI风向

常见的Hadoop十大应用误解

行!这下 CSDN 玩大了!粉丝:太良心

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢640?wx_fmt=png

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 一般来说,CPU的性能可以通过多种方式进行评价。其中常用的有: 1. 指令数量:不同的 CPU 型号每秒钟可以处理的指令数量不同,指令数量越大,性能越高。 2. 主频:主频是指 CPU 处理指令的时钟频率,单位是 Hertz(Hz)。同样,主频越高,CPU 在单位时间内处理的指令数量就越多,性能越高。 3. 缓存:CPU 内部有多级缓存,缓存的大小越大,CPU 在处理指令时的速度就越快。 4. 多核:现在的 CPU 通常都有多个核心,每个核心都可以独立运行。多核 CPU 在处理多线程任务时会比单核 CPU 表现得更优秀。 5. 分辨率:CPU 的分辨率指的是 CPU 的位数,常见的分辨率有 32 位和 64 位。一般来说,64 位 CPU 的性能要比 32 位 CPU 要高。 6. 其他技术:目前 CPU 上也有许多其他的技术,如超线程技术、超频技术等,也会影响 CPU 的性能。 ### 回答2: CPU的性能评价方式可以从多个方面考量。 首先,时钟频率是衡量CPU性能的一个重要指标,它表示CPU每秒钟能够完成多少个基本操作周期。时钟频率越高,CPU的运行速度越快。 其次,CPU的核心数也是评价性能的指标之一。多核CPU可以同时执行多个任务,提高处理能力。在多核心CPU中,每个核心都有自己的时钟和运算单元,可以独立地执行指令,从而提高并行计算的效果。 第三,缓存大小对CPU性能也有影响。缓存是一种快速存储器,用于暂时存放CPU频繁访问的数据。较大的缓存可以提供更多的数据访问,减少等待时间,提高运行速度。 此外,指令集架构也是评价CPU性能的关键因素。不同的指令集架构影响着指令的执行效果和处理能力。一些指令集架构可以提供更多的优化功能,提高CPU的性能。 还有一个重要的评价指标是功耗。CPU的功耗越低,意味着能更有效地利用电力资源,减少发热,提高使用寿命。 总结起来,衡量CPU性能的几个主要指标包括时钟频率、核心数、缓存大小、指令集架构和功耗。根据实际需求,可以结合这些指标进行评价,选择适合的CPU来满足不同的计算需求。 ### 回答3: CPU性能评价方式有多种,其中常用的方式有以下几种: 1. 时钟频率:CPU的时钟频率越高,其运算速度越快。因此,时钟频率是衡量CPU性能的一个重要指标。一般来说,同一架构的CPU中,频率越高的CPU性能越强。 2. 核心数量:多核处理器可以同时执行多个任务,提高整体性能。通常来说,核心数量越多,CPU的性能越强。 3. 缓存:CPU内部的缓存可以提高数据访问速度,因此,缓存大小也是衡量CPU性能的一个指标。通常来说,缓存越大,CPU性能越好。 4. 微架构:不同的CPU微架构具有不同的性能特点。例如,某些微架构可能在单线程性能上表现出色,而另一些微架构则在多线程处理上更具优势。 5. 压力测试:通过运行各种负载和压力测试,测量CPU在不同工作负载下的表现,以评估其性能。常用的压力测试工具包括PCMark、AIDA64等。 综合以上几个方面,可以对CPU的性能进行评价和比较。但需要注意的是,不同的使用场景和需求可能对CPU的性能要求有所不同,因此,在选择和评价CPU性能时,还需要根据具体的使用需求进行综合考量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值