计算机内部工作原理

简介: 🍃冯诺依曼体系🍃程序 = 指令 + 数据🍃广义数据在内存中的存储问题🍀非数的数据在内存中的存储🍀数类型的数据在内存中的存储🍃演示一个8位加法器的过程🍀逻辑上的电子二级开关🍀组建与门、或门、非门、异或门🍀利用与或非 + 异或门构建 8 位加法器🍃CPU的基本工作原理🍀组成🍀ALU🍀程序🍀控制单元CU🍀指令🍀CPU 的基本工作流程🍀分支语句是怎么来的🍀指令周期🍀CPU的中断模式

🍃冯诺依曼体系

冯诺伊曼体系认为,指令只是一种特殊一些的数据

并且冯诺依曼体系将计算机系统分为处理器(CPU)+ 存储器 + 输入设备 + 输出设备

处理器:运算器 + 控制器

存储器:内存

输入设备:外部数据(物理数据)进入到存储器

输出设备:存储器内的数据出来到外部世界


🍃程序 = 指令 + 数据

指令表现为一种特殊的数据,需要存储在内存中,是一组预规定的动作,利用编码表规定

数据同样需要存储在内存中

opcode编码:给CPU支持的所有动作都编码一个唯一的数据



🍃广义数据在内存中的存储问题

🍀非数的数据在内存中的存储

要在计算机中进行 “非数数据” 的存储,要把非数数据转换成数类型的数据

字符串:unicode 编码

图像:RGB 编码

声音:波形编码


🍀数类型的数据在内存中的存储

数类型可分为整数小数

有限范围内的整数表示:正码、反码、补码 -> 整型数

有限范围内的小数表示:IE标准-> 浮点数


🍃演示一个8位加法器的过程

🍀逻辑上的电子二级开关


46.png

47.png


🍀组建与门、或门、非门、异或门

48.png49.png


或门

50.png51.png


非门

52.png53.png


异或门

54.png55.png


🍀利用与或非 + 异或门构建 8 位加法器

二进制相加

在每一位上

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0


56.png


半加器:进行两个一位(bit)数的相加

57.png


全加器:进行三个一位(bit)数的加法

58.png


8位加法器 = 7 个全加器 + 1 个 半加器

59.png


🍃CPU的基本工作原理

🍀组成

逻辑算术运算器:与、或、非、加、减、乘、除、取余

控制器:分析指令并发出相应的控制信号

寄存器:临时存储数据的存储单元(每一个都只能保存一个整型数,但是寄存器个数不止一个)

现代的高级 CPU 为了提升性能,一般都带有缓存(CPU 缓存) Level1缓存 / Level2缓存 / Level3缓存


🍀ALU

CPU是计算机的核心,ALU是CPU的核心

三个输入:

A:要参与运算的第一个数

B:要参与运算的第二个数

C:本次运算的操作码 opcode


60.png


🍀程序

所有程序的执行,本质上都是计算 + 读取 + 存入

读取:内存 -> 寄存器

存入:寄存器 -> 内存

🍀控制单元CU

CU 可以驱动 ALU 进行具体的计算工作,即ALU 工作时的 opcode 就是 CU 提供的

61.png


🍀指令

所谓指令,即指导 CPU 进行工作的命令,主要由操作码被操作数组成

其中被操作数用来表示要做的动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号

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

62.png


🍀CPU 的基本工作流程

63.png


提码阶段

CU 根据 PC 寄存器的值,去内存的相应位置,把数据(指令)读取到 IR 寄存器中,正常情况下,PC 寄存器的值自动加 1

解码阶段

CU 按照预先设定的指令集解读指令数据(opcode + 操作数)

执行阶段

LOAD 指令由 CU 执行,CU 将在指令中得到的内存地址处的数据读取到寄存器 A 中

由于硬件中 PC 在自动加 1 ,所以我们的代码变成的指令才能顺序的往下执行

代码中的一条语句。很可能需要多条指令才能完成

语句是一组指令的封装抽象

变量是一段内存空间的封装抽象

PC寄存器中的值在这个指令周期中很关键,可以控制执行哪里的指令


🍀分支语句是怎么来的

CPU 中往往会提供一些指令,这些指令可以去修改 PC 的值


例如

if(a > b){

…甲

} else {

… 乙

}

此语句在内存中的执行流

  1. 把a变量的值加载到寄存器中;
  2. 把b变量的值加载到寄存器中;
  3. 计算a-b的结果
  4. 判断a- b的结果是不是负数或者0,如果是负数或者0,修改PC的值变成乙所在的地址


🍀指令周期


64.png


CPU 的运算快慢,就是看 CPU 执行指令周期的频率

CPU 的主频可以粗略地看作:每秒钟 CPU 能执行多少个指令周期


🍀CPU的中断模式

正常模式下,CPU 可以顺序执行,可以分支执行,但现实中,很多时候,需要暂时中断 CPU 的当前执行流,先让 CPU 去做点其他工作,再回过头来继续原来的执行流

CPU硬件中提供了一种 机制(中断) 让CPU停下


保存当前的PC的值到内存的某个位置

修改PC的值,让执行其他执行流

其他执行流执行结束之后,通过将刚才保存的PC值恢复到PC寄存器

继续原来的执行流

中断经常用作:


IO设备的处理

当有外部数据到达Input设备时,触发某个中断

让当前正在执行的执行流暂停,切换到Input驱动对应的执行流

把Input设备中读取到的数据,放到内存的某个位置

恢复之前的执行流

操作系统中用来作进程调度(线程调度)


目录
相关文章
|
人工智能 搜索推荐 数据可视化
10个适合产品经理使用的AI生成PPT工具推荐!
AIGC时代,有哪些好用的AI生成PPT工具呢?这篇文章来给各位介绍适合产品经理使用的10款AI PPT软件!
|
小程序 数据安全/隐私保护
吐血整理的几十款小程序登陆界面【附完整代码】(一)
吐血整理的几十款小程序登陆界面【附完整代码】
13335 1
吐血整理的几十款小程序登陆界面【附完整代码】(一)
|
弹性计算
阿里云备案审核一般多久能过?域名备案需要几天?
阿里云域名备案是大家比较关心的问题,尤其是网站域名备案时间,阿里云备案时间还是比较快的,如果用户材料齐全,提交到阿里云审核无误后,一般一天即可提交到所对应省事的管局,备案号下来的时间要以管局的审核时间为准,一般管局审核时间为10天左右。
|
3月前
|
弹性计算 开发者
阿里云服务器优惠政策解读:个人开发者、学生及初创企业最新租赁解读
阿里云2025年最新优惠:新用户38元/年享2核2G轻量服务器;老用户99元/年用ECS;学生领300元代金券免费获取;企业199元/年购2核4G云服务器。配置灵活,续费同价,助力个人开发者、学生及初创企业低成本上云。
565 8
|
传感器 网络协议 物联网
手把手教你在 Windows 环境中搭建 MQTT 服务器
手把手教你在 Windows 环境中搭建 MQTT 服务器
2460 0
|
7月前
|
JavaScript Unix Linux
nvm与node.js的安装指南
通过以上步骤,你可以在各种操作系统上成功安装NVM和Node.js,从而在不同的项目中灵活切换Node.js版本。这种灵活性对于管理不同项目的环境依赖而言是非常重要的。
1874 11
|
消息中间件 JSON 安全
Kafka常用命令归纳
本文档详细介绍了Kafka 2.2及以上版本中Topic的操作命令,包括创建、查看、修改及删除Topic,以及动态调整主题参数和限速。此外,还涵盖了数据生产和消费的相关命令与性能测试方法,并对内部Topic(如`__consumer_offsets`和`__transaction_state`)的操作进行了说明。最后,提供了常见错误处理方案及Kafka推荐配置,帮助用户更好地管理和优化Kafka集群。