了解计算机是如何工作的

计算机是如何工作的

目录
一、计算机原理概述及发展历史(简述)
二、冯诺依曼体系

  1. 什么是指令
  2. 程序
  3. 数据在内存中的存储问题

三、CPU的基本工作原理

  1. 逻辑门
  2. 算数逻辑单元

四、编程语言
五、操作系统

正文

一、计算机原理概述及其发展历史

首先,要明白一点,人类对计算的需求是从古至今都广泛存在的。发展过程大体经历了从一般计算工具到机械计算机到目前的电子计算机的这样一个历程。
随着社会的发展,人类对计算的需求越来越频繁,这就驱使着我们不断的发明、改善计算机。我们现在所处的时代正是“电子计算机”的时代。发展的潮流是:更快速、更稳定、更微型。
计算机的发展历史大概可追溯到公元2500年前,算盘已经出现了;除此之外,人类还创造了各种工具以辅助计算。之后西方国家相继提出了“计算”这样一个模型,但只是仅限于一个概念模型,例如最具深远影响力的图灵机,后来人类根据这一理论,制作出了历史上第一台巨型计算机,后来经过不断的完善,不断攻克一些技术性难题,最终演变我们今天使用的微型电子计算机。图灵机就是冯诺依曼体系结构的雏形,我们现代的计算机,绝大多数都要遵守冯诺依曼体系。

二、冯诺依曼体系

冯诺依曼体系规定,一台完整的计算机必须要由:运算器、控制器、存储器、输入设备、输出设备5部分组成。其中:
处理器(CPU)= 运算器 + 控制器
存储器(Mermory) = 内存 在内存中又存在二级存储(storage)
输入设备(Input Device):外部数据(物理数据)进入到存储器via
输出设备(Output Device):存储器的数据出来到外部世界via
如果按照层次划分计算机的结构:
概念层:运算器 + 控制器 +存储器 +输入设备 +输出设备
逻辑层:处理器 + 存储器 + 输入设备 + 输出设备
物理层:CPU +内存 +I/O 内部的数据交换通过总线(BUS)进行

1.什么是指令

指令是一组预规定的动作,使用编码表规定,它表现为一种特殊的数据,需要存储在内存中。通俗一点理解就是指令是让计算机行动的命令。
注意:指令一定是明确的,不模糊的。

2.程序

简单理解,程序 = 指令 + 数据
这里的指令是一组规定的动作,它由编码表规定,所谓的编码表,就是给CPU支持的所有动作都编码一个唯一的数字。
这里的数据同样是需要存储在内存当中的,内存是电子元件组装而成的以二进制的形式存数。
或者,可以这样理解,程序 = 算法 +数据结构,这是针对代码本身的理解,但本质上还是会在编译器上转换成指令,让计算机行动。
程序从产生到运行:开发阶段 ——编译阶段——连接阶段(构建阶段)——运行

3.数据在内存中的存储问题

广义上的数据可分为数字和非数字部分的数据,非数字部分的数据包括字符串、声音、图片等。
要在计算机中进行“非数数据”的存储,就需要把非数字的数据转换成数字类型的编码,也就是数据编码表。
例如,字符串,采用Unicode编码;图片,采用RGB编码;声音,描绘出波形,然后用点近似,将对应的点用编码描述。
数字类型的数据在内存中的表示方法:
就是有限范围内的整数、小数两种形式
有限范围内的整数表示:原码、反码、补码——整型数
有限范围内的小数表示:IE标准——浮点数

三、CPU的基本工作原理

CPU:控制器和逻辑算数运算器,可以进行与、或、非、加、减、乘、除、取余运算
寄存器:临时存储数据的存储单元(每个都只能保存一个整型数,但不只一个数据)
现代的高级CPU为了提升性能,一般都带有缓存(CPU内缓存)(level1/level2/level3缓存)

1.逻辑门

逻辑:二级的电子开关
在这里插入图片描述
与门(and gate)
在这里插入图片描述
或门(or gate)
在这里插入图片描述
非门(not gate)
在这里插入图片描述
异或门(xor gate)
在这里插入图片描述

2.算术逻辑单元

ALU(Arithmetic & Logic Unit)
ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。接下来,我们用上一节构建的逻辑门来完成自己的一个 ALU,去学习理解它的工作模式,以便作为我们进一步理解现代计算机工作原理的基石。
算术:加法、减法、乘法、除法、取余
逻辑:与、或、非
CPU是计算机的核心;ALU是CPU的核心;所有程序的执行,本质上都是计算 + 读取 + 存入
CPU的基本工作流程就是CU和ALU的配合:
(1)取码阶段
CU根据PC寄存器的值,在内存的响应位置,把数据(指令)读取到IR寄存器中,正常情况下,PC寄存器中的值自动加1。
(2)解码阶段
CU按照预先设定指令集解读指令数据(opcode + 操作数)
例如:0010 1110
认为规定:0010是opcode
查询指令表,知道0010代表的意思:从后边地址指定内存外,将数据 读取到A寄存器
地址:0b1110 ——14
(3)执行阶段
LOAD指令应该由CU执行,所以按照规定执行指令;
从内存的14地址处,将数据读取到A寄存器中

四、编程语言

(1)因为硬件中PC在自动加1,所以编写的代码要变成指令才能顺序地往下执行。
(2)代码中的一条语句,很可能需要很多条指令才能完成。
语句是一组指令的封装抽象
变量是一段内存空间的封装抽象
(3)PC寄存器中的值在这个指令周期中很关键,可以控制执行哪里的指令CPU中往往会提供一些指令,这些指令可以修改PC的值,从而影响执行流,实际上就是,编程语言的执行,需要把程序翻译出来的第一条地址放到PC中,然后程序就正常跑起来了。也就是说,每次发生函数调用时,都会修改PC的值到新指令的位置。

五、操作系统

1.CPU的正常工作流程:取码——编码——执行周期
只要电脑在开机状态下,CPU就在不停循环这个周期
在硬件CPU的视角中,只有指令的概念,没有指令属于谁的概念
2.CPU的中断模式(Interrupt Mode)
正常模式下,CPU可以顺序执行,可以分支执行,但总的都是按照既定顺序执行。
但是,很多时候,需要中断CPU的当前执行流,先让CPU去做其他工作,在回过头来继续原来的执行流。
3.中断一般都是编号的,内存中提前保存好了中断向量表
4.中断的用处:
(1)IO设备的处理
当有外部数据到达Input设备时,出发某个中断;让当前正在执行的执行流暂停,切换到Input驱动对应的执行流;把Input设备中读取到的数据存放到内存的某个位置;恢复之前的执行流。
(2)在操作系统中,中断用来做进程调度。

总结

在本次的文章中,关于操作系统的知识,只是简单引出了进程这样一个概念,后期会出一篇关于操作系统方面的文章,对操作系统方面的知识进行详细的叙述。本篇提到的知识点总结如下:
1.程序 = 指令 +数据 指令可以看作一种特殊的数据
2.任何数据,基本上都是以整型,浮点型进行表示,保存在内存中,其中,“非数数据”都会按照一定标准格式编码成整型。
3.CPU =ALU +CU
其中,ALU负责进行逻辑算术运算,需要利用寄存器完成中间数据的临时保存;CU负责控制memory——regiter数据传递的指令,以及驱动ALU工作。
4.PC寄存器很重要,可以影响当前CPU的执行流,默认情况下是正常顺序执行的(自动加1);CPU中提供了指令,可以修改PC的值(可带条件),产生分支逻辑。
5.CPU的正常工作周期:取码——解码——执行;这个周期一直执行,频率一般就是我们认为的主频。
6.CPU提供了中断模式,可以暂停当前的执行流,先去执行别的执行流,并根据需要,恢复原来的执行流。
7.CPU视角中,只要执行的下一条指令是什么,根本不知道执行属于哪个程序,更不需要知道它属于哪个类或方法了;程序、类、方法等概念都不是为计算机硬件准备的,是为写程序的人准备的。
8.代码中的一条语句,可能需要对应多条指令才能完成。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值