一、CPU原材料

大家都知道光刻机很屌,那光刻机和我们所熟知的计算机CPU有什么关系呢?其实光刻机的作用就是将理论设计的电路制作到真实的芯片上,所以它不仅仅可以生产我们所熟知的CPU芯片,还有GPU,单片机芯片等。

10分钟!搞懂计算机CPU实现原理_运算器

很多人会说CPU其实就是一把沙子,虽然是开玩笑,但是在某种程度上,也有一定道理。因为沙子含有硅元素,而CPU中主要材料晶体管,就是采用特别纯净的硅材料上制造而成的。数千亿计的晶体管组成了我们所熟知的CPU芯片。

10分钟!搞懂计算机CPU实现原理_寄存器_02

二、CPU内部电子门路

那问题来了,晶体管到底是用来做什么的,数量庞大的晶体管组成集成电路,为什么可以满足我们刷短视频,微信聊天呢?它最底层逻辑是什么?

我先来简单地介绍一下,很多人经常吹嘘说:计算机底层其实就是0和1。哈哈,虽然很直白,但是某种意义上来说,确实是这样的。这和计算机最底层的元器件有关系,也就是我们今天要说的CPU,因为CPU是由海量的晶体管,组成的集成电路,每一个晶体管都可以表示高压和低压。

10分钟!搞懂计算机CPU实现原理_运算器_03

2.1 晶体管

晶体管(transistor)是一种固体半导体器件,所以它具备半导体的特性,那半导体有什么作用呢?为什么可以作为CPU的组成材料呢?这里我们先从它的特性说起。

晶体管(transistor)是一种固体半导体器件(包括二极管、三极管、场效应管、晶闸管等),它具有检测、整流、放大、开关、稳压和信号调制等多种功能。

半导体是介于导体和绝缘体中间的一种东西,它的特性很有意思,如下图所示:

10分钟!搞懂计算机CPU实现原理_运算器_04

电流只能从正极流向负极,反过来却不行。有同学就会问,这有什么用呢?很有用,我们可以借助这个特性,设计出各种电子门路,比如【与门】、【或门】、【非门】、【异或门】等各种门路,有了这些门路之后,我们就可以设计出加法器、乘法器等。通过基础器的组合,我们就可以构建出,各种复杂的计算器出来,进而实现CPU日常强悍的功能。

2.2 门路实现

下面我们简单的来说一下,半导体是如何实现【与门】的,我们来看下面这个图:

10分钟!搞懂计算机CPU实现原理_计算机_05

这是采用半导体组成的【与门】,也就是当A和B都是1的情况下,Y才会是1,其它都是0。

A电压

B电压

Y电压

0

0

0

0

1

0

1

0

0

1

1

1

因为复杂的运算器,都是由大量的门组成,如果每个都要把电路图画出来,非常不美观而且也复杂,所以我们可以采用一些特殊的符号来表示这些门,如下所示:

10分钟!搞懂计算机CPU实现原理_寄存器_06

10分钟!搞懂计算机CPU实现原理_计算机_07

2.3 运算器实现

有了这些门之后,我们就可以实现各种复杂的运算器了,下面我们来看看最简单的半加器是怎么实现的。

10分钟!搞懂计算机CPU实现原理_加法器_08

通【异或门】+【与门】我们就可以实现一个最简单的半加法器,如上图所示,如果A和B都是1的情况下,S为0,C为1,就变成10,这就可以实现一个最简单的半加法器了。

但是这还不算是完成的加法器,因为如果要实现1+2(十进制),也就是01+10(二进制)的时候,就无法胜任了。所以我们对半加器做一下改进,如下图所示:

10分钟!搞懂计算机CPU实现原理_运算器_09

通过3个输入+2输入的形式,就可以实现01+10(二进制),最后通过多个加法器的组合,我们就可以实现任意位的加法器了。

三、CPU内部架构

CPU最核心的运算器实现我们介绍完了,CPU作为计算机组成中最强大的核心部件,肯定不可能只有运算器这个功能,实际上它的组成架构非常复杂,所以我们主要介绍它的核心架构功能,我们先来看如下一幅图。

10分钟!搞懂计算机CPU实现原理_寄存器_10

从上图我们可以看出,CPU是由运算器(单元)、控制器和存储器组成。

3.1 运算器

顾名思义,运算器负责执行由控制器发出的命令,具体执行加减乘除之类的运算。

3.2 存储器

存储器是用来存储指令需要用到的数据,这边的存储器和我们大家所熟知的内存不一样。CPU的存储器是由寄存器组成,存取速度比内存快很多,但是容量和价格方面也贵得多。

3.1 控制器

CPU执行的指令是一条条的,但是我们应用程序在执行过程中,实际是有顺序的。这就要求我们保证,指令在执行的时候,要按照一定顺序进行,控制器的核心作用就是这个。

然后还需要通过总线和内存进行交互,将CPU所需要用到的数据,缓存到CPU缓存寄存器中,这是因为CPU运算速度特别快,比如是1纳秒,而内存的读取速度很慢(相对CPU运算速度),是100纳秒,那CPU就需要等待99纳秒,这个是完全不能容忍的,所以就需要将CPU指令用到的数据,先缓存到寄存器中,这样可以大大提高CPU运算效率。

当然实际CPU不可能这么简单,我们只是做了最简单的概括,因为目前的CPU都是多核的,所以不管是控制器还是运算器都是非常复杂,里面会包含很多更细的部件,比如预解码、解码、指令融合、指令重排等,非常多的模块。

四、复盘总结

在学习整个CPU的组成原理之后,大家会发现,最最核心的其实不是CPU本身,而是基础学科物理。因为CPU最底层的门路设计,需要基于物理学的电流、电压相关知识,如果没有这部分理论支持,那我们永远没办法发明出计算机出来。这也是任正非先生所说的,我们最需要大力发展的不是某一项技术,而是最底层的基础学科。