计算机是如何工作的

冯诺依曼体系

1.运算器+控制器+存储器(Memory)+输入设备(Input Device )+输出设备(Output Device)
处理器(CPU)=运算器+控制器
存储器=内存
所以现在一般是 处理器+存储器+输入设备+输出设备
(CPU+内存+I/O)
2.内存的数据交换通过总线(BUS)

程序=指令+数据

也可以,程序=算法(有特定意义地指令)+数据结构(有组织的数据)

指令

1.指令:不是传递给计算机的都是指令,只有让计算机行动的命令才是指令。(指令一定是明确的而不是模糊的)
2.在冯诺依曼体系中,指令为一种特殊的数据,需存储在内存中,数据同样需要存储在内存中。
3.怎么存储在内存里的?
通过利用编码表以二进制的形式存储在内存中,最终存储的就是有特定含义的数字,指令就变成的opcode(操作码)。
在这里插入图片描述

数据

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

此时数据就分为数和非数的数据(字符串,声音,图片等等)。

1.1非数数据

要在计算机中进行“非数数据”的存储,也是要把非数数据通过编码表转换成数类型的数据。

1.2 数类型数据

以整型数和浮点数储存。
整型数不一定代表整数,可能是指令,字符,图片,声音……

CPU的基本工作原理

CUP中至少有一个逻辑算术运算器,还有控制器和临时存储数据的存储单元(寄存器 register)。
现代的高级CPU为了提升性能,一般都带有缓存(CPU内缓存)。
逻辑算术运算器可以解决与、或、非、加、减、乘、除、取余问题。

逻辑门

逻辑:二级的电子开关
在这里插入图片描述
可以组建成各种电路门
1.与门
在这里插入图片描述

2.或门

在这里插入图片描述
3.非门
在这里插入图片描述
4.异或门
在这里插入图片描述
简化
在这里插入图片描述
在这里插入图片描述不同为true相同false

算术逻辑单元ALU(Arithmetic & Logic Unit)

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

1.半加器

进行两个1 位数的相加,有两个输入两个输出,结果分当前位和进位。
在这里插入图片描述
在这里插入图片描述

2.全加器

进行三个1位数的相加 ,三个输入(其中一个是进位得到的)和两个输出。
在这里插入图片描述

在这里插入图片描述
例如 8位数的加法器就是7个全加器和1个半加器
在这里插入图片描述

ALU符号

在这里插入图片描述
三个输入:A要参加计算的第一个数
B要参与计算的第二个数
C本次的运算是什么opcode
输出:正常输出

控制单元CU(Contrcol Unit)

直接上图
在这里插入图片描述
CU的主要工作:
1.控制寄存器和内存之间数据的来往
2.驱使ALU的计算
PC:下一条要执行的指令在内存的地址
IR:下一条 要执行的指令
在这里插入图片描述

CPU的执行流程

这点记住了!!!!重点,这三个阶段不断循环

1.取码阶段

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

2.解码阶段

CU按照预先设定的指令集解读指令数据(opcode+操作码)
例如:0010 1110
认为规定0010是opcode
查询指令表,知道0010代表的意思:从后边地址指定内存处,将数据读取到A寄存器
地址ob1110——>14

3.执行阶段

LOAO指令应该由CU执行,所以按照规定执行命令。
从内存的14地址处,将数据读取到A寄存器。

结论:由于硬件中PC在自动+1,所以我们的代码变成的指令才能顺序地执行下去。
代码中的一条语句,很可能是需要多条指令才能完成。所以语句是一组指令的封装抽象,变量是一段内存空间的封装抽象。
通过CPU中预先规定的指令,可以修改PC中的值(带条件修改),进而影响执行流(execute flow)

Java中的方法是保存在JVM内存区域的方法区(区域分有栈,堆,方法区),主要保存的是方法中的语句翻译出来的指令。

总结

1.CPU的正常工作流程:取码->编码->执行周期
只要电脑在开机状态下,CPU就在不停循环着这个周期
2.在硬件CPU的视角中,只有指令的概念,没有指令属于谁的概念,程序,类,方法等概念都不是为了计算机硬件准备的。是为了写程序的人准备的。

CPU的中断(Interrupt Mode)

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

CPU硬件中提供了一种机制(中断)让CPU停下来
1.保存当前的PC的值到内存的某个位置
2.修改PC的值,让执行其他执行流
3.其他执行流执行结束后,通过将刚才保存的PC值恢复到PC寄存器
4.继续原来的执行流

中断经常用作:
1.IO设备的处理:当有外部数据Input设备时,触发某个中断,让当前正在执行的执行流暂停,切换到Input驱动对应的执行流,把Input设备中读取到的数据,放到内存的某个位置,恢复之前的执行流

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值