计算机原理

本文详细解析了冯诺依曼体系的计算机结构,重点关注CPU的工作原理,包括门电路、算术逻辑单元(ALU)、存储单元(寄存器和缓存)以及控制单元(CU)的作用。同时介绍了存储器的分类、数据存储和CPU中断模式的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.冯诺依曼体系

2. 存储器

2.1 数/非数的存储

2.2 存储器

3.CPU基本原理

3.1 门电路

3.2 算术逻辑单元——ALU

3.3 存储单元——寄存器、缓存

3.4 控制单元——CU

3.5 CPU = ALU + CU + 寄存器、缓存

3.6 CPU的中断模式


1.冯诺依曼体系

在计算机诞生之前,人们在计算的精度和数量上出现了瓶颈,对于计算机这样的机器的需求就十分强烈,冯·诺依曼的逻辑和计算机思想指导他设计并制造出历史上的第一台通用电子计算机,他也被称为“现代计算机之父”;

他提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分(运算器,存储器,控制器,输入设备,输出设备)组成,这套理论被称为冯·诺依曼体系结构;

现在的计算机,大都遵循冯诺依曼体系;

存储器:分为内存和外存,用于存储数据,数据均以二进制形式存储

其中,运算器和控制器共同组成了我们平时常说的CPU,本篇文章重点就是梳理CPU的一个工作原理;

2. 存储器

2.1 数/非数的存储

首先明确的是,计算机在实际存储时数据均是以二进制的形式存储的;

其次,我们要明确的是,数据不单单指数值型数据,也可以包括其他形式,如我们常用的字符,以至图片,声音,视频等;

然后,程序=指令+数据指令其实也是作为特殊的数据来存储的

对于数值型数据,主要分为整数和小数嘛,具体又引出了正码、反码、补码这些概念,这里不再赘述;

对于非数值型数据,譬如有以下相应的编码方式:

字符——Unicode编码

图片——RGB编码

2.2 存储器

根据常识知道,我们的计算机的存储有内存、外存之分,那么,究竟区别是什么呢?

(1)首先,和CPU直接交换信息的是主存(也叫内存),为内部运行提供缓存和处理的功能,内存储器在程序执行期间被计算机频繁地使用,并且在一个指令周期期间是可直接访问的

(2)外存:外部存储器(也叫辅存),就是我们常说的硬盘、磁盘这些,是真正的存储空间,数据只有被写入硬盘才真正尘埃落定

百度中的例子很形象:如果学生没有看笔记就知道内容,信息就被存储在“内存储器”中。如果学生必须查阅笔记,那么信息就在“外存储器”中

3.CPU基本原理

3.1 门电路

我们知道,在底层,是通过电子开关的开闭表示 0,1,那么让我们从最简单的1比特位的逻辑运算的实现看起

(1)与运算

其实就是串联电路,只有两个都为true,电路才通

(2)或运算

 其实就是一个并联电路,任意一个为true,结果就是true

 (3)非运算

(4) 异或运算

 先与运算取反,再与或运算

结果:同为0,异为1

3.2 算术逻辑单元——ALU

在基于上述逻辑运算的基础上,我们就可以进行一个简单的算术模拟:

以8比特位加法器为例:

可以发现,除了最右面一列是两位数相加外,其余列都还得加上进制位,于是,该加法器可以由1个半加器和7个全加器组成 

半加器:进行两个1比特位数的相加

可以看到,进位其实就是一个 与门,和就是 异或门 

全加器:进行三个1 位(bit) 数的相加

 那么,7个全加器+1个半加器就组成了一个简单的ALU

同理,其他类似的算术运算都可以类似的实现

3.3 存储单元——寄存器、缓存

刚刚我们已经理解了基本的ALU的原理,那么,对于复杂的运算,我们还需要对ALU提供临时存储数据的存储单元,我们这里称之为寄存器,相应的,也有缓存这个概念(CPU内存里的缓存,缓存主要用于提升性能)

这里我们主要用到指令寄存器,用于存放要执行 的指令

3.4 控制单元——CU

现在有了运算能力,有了临时存储能力,但还是无法让计算机真正实现,因为计算机并不知道该把哪些数据做出哪些运算,所以,我们还需要一个控制单元——CU,CU去驱动ALU工作干活,告诉指定的ALU对指定的数据处理

那么CU是如何控制ALU工作的呢?

(1)让我们先来对指令这个概念做出进一步理解:

所谓指令就是CU指导ALU工作的命令——指令 = 操作码+被操作数

指令本身也是一个数字,用二进制形式保存在内存的某个区域中;

其中操作码用来表示要做什么动作;

被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等;

如下是一张指令表,可帮助我们更好的理解:

 这张表到底是什么意思呢,比如 ADD指令,该指令表示的意思就是a+b,并将结果存入b中,然后该指令由8比特位组成,前四位一定是1000,就表示是add这个操作,后两位是存放数据a的寄存器ID,就是去这个编号的寄存器中取到数据a,最后两位是存放数据b的寄存器ID。

比如:
我得到一个指令为 10001101,前四位1000是opcode编码,查指令表我知道了这是ADD指令,然后第五六位是 11,所以寄存器ID为11的寄存器中存储着数据a,最后两位是 01,所以再去ID为01的寄存器中取到数据b,然后将数据a和b传给功能是做加法运算的ALU,使其运算出结果并将结果存回01寄存器

(2)然后让我们来看看CU又是控制指令依次进行的

首先来看哈CU中的主要组件功能:

  • 指令寄存器IR——保存要执行的下一条指令
  • 程序计数器PC——保存要执行的下一条指令在内存中的地址(硬件中的PC一般是自动+1的,故而,可以相通为什么我们的程序是顺序执行的,所以当有if,else等指令,实则是在改变PC的值,让他选择性跳转到别的指令)

(3)最后整体看一下工作原理

第一步:CU根据PC中保存的下一条指令在内存中的地址找到该指令的二进制编码

第二步:将找到的该指令的二进制编码存入指令寄存器IR中

第三步:CU根据指令表解读该二进制编码所表示的指令含义以及操作数地址

第四步:CU执行该条指令(当然,如果是运算,就交给ALU执行)

🤔🤔🤔🤔🤔来个a+b的实际演示:

  • 比如PC中的地址为0,我们去内存中地址为0的地方得到数据——00101110
  • 将该数据存入指令寄存器IR中
  • 对照指令表,得到该指令表示要把RAM(内存)中地址14(1110换算为10进制=14)处的数据读入寄存器A
  • 执行该指令
  • 然后进入下一个指令周期,下一个PC地址为1,内存中地址为1表示的数据为——00011111
  • 将该指令存入指令寄存器
  • 查表得到该指令是要把RAM中地址为15处的数据读入寄存器B
  • 执行该指令
  • 再进入下一个指令周期,下一个PC地址为2,内存中地址为2处的数据为——10000100
  • 将该指令存入指令寄存器
  • 查表得到该指令是要把寄存器ID为01和00里的数据进行相加操作,并且把结果保存在00寄存器中,这时候,就会用到ALU,CU把寄存器里的数据传给负责相加运算的ALU,由ALU计算处结果,并将结果返回给CU存入第二个寄存器中
  • ……

由此可得到,CPU就是在不断的进行指令的周期循环

取码——>解码——>执行 ,是一个周期,然后继续执行下一个周期

当然,电子计算机中的 CPU 没有那么笨重,不是靠自己来驱动这个周期的运转,而是靠背后一个时钟来进行周期驱动

我们常说的CPU主频就是表示每秒CPU可以执行多少个指令周期

而衡量CPU运算快慢的——就是CPU执行指令周期的频率

3.5 CPU = ALU + CU + 寄存器、缓存

由上面一整个演示,我们可以得到:

CPU = ALU + CU + 寄存器、缓存+时钟

【CPU:Center Process Unit,中文:中央处理器】

 最后来补充一下:

我们的编程语句就是一组指令的封装抽象(高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成);

指令 = 操作(opcode码) + 被操作数(地址);

PC寄存器控制的就是执行哪一条指令;

IR中存储着从内存中得到的指令;

解读指令然后执行(CU控制ALU执行);

我们的电脑只要开机,CPU就在不断的进行着 取码——解码——执行 的周期

3.6 CPU的中断模式

最后来浅浅了解以下CPU的中断模式:
所谓中断模式,就是中断当前的执行流,先让CPU去做其他工作:

那么怎么做到的呢:

一般是先保存当前PC指令地址到内存的某位置(比如说1111位置)——>然后修改PC中的指令地址——>按照最新地址去执行指令周期——>其他工作做完后,再将之前保存在内存(1111位置)中的值写入PC中——>继续执行……

CPU中断模式的应用:

  • IO设备的处理
  • 操作系统中用来进程调度

好吧,具体学到了再来深剖。

😅🤔😊最后来一张图吧:

emmm……没有专门学过计算机原理,这里只是做个浅浅入门,主要解析一哈CPU的组成及工作原理,部分理解可能也不是那么透彻,大佬们多多指教

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值