持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
前言
这篇文章不接着上面的 lab5 来写了,补的太痛苦了,正好学校现在开了计算记组成原理的课,正好分享一下最近学到的东西。
走进计算机
两位计算机先驱的智慧
计算机之父 图灵 冯诺依曼
图灵机
这个大家伙就是图灵机的模型,它由几个主要部分组成:纸带、读写头、控制单元、存储单元、运算单元。那么这个大家伙和计算机有什么关系?让我们以1+2为例看看这个大家伙是怎么运作的。
首先我们的读写头指向了纸带上写好的数字1,这意味着我们会把读写头位置的数字读到存储单元中,这个存储单元在图灵机里的名字叫:状态。
同样地,我们再将2读入状态中。
1 + (2 * 3)/ 4 中缀表达式
波兰表达式
+1 * 2 3
逆波兰表达式
后缀运算符的表达式
继续向后读,我们读到了+,读写头读到运算符后将+号传给控制单元。控制单元识别到这不是一个数字而是一个运算符,这时不存入状态,而是通知给运算单元,让运算单元工作起来。这时运算单元读到状态中存储好的1和2并计算,将计算好的结果3通过读写头再写入纸带,这样我们就得到了运算结果。
事实上,我们的计算机本质也是这样工作的,根据图灵机的模型我们延申出了计算机领域的定海神针-冯诺依曼架构。
冯诺依曼架构
在 1945 年冯诺依曼和其他计算机科学家们提出了计算机具体实现的报告,其遵循了图灵机的设计,而且还提出用电子元件构造计算机,并约定了用二进制进行计算和存储。用电平表达二进制数。
冯诺依曼架构定义了计算机结构的五个部分:运算器、控制器、存储器、输入设备、输出设备。
我们先来了解以下冯诺依曼架构在现代计算机的具体部件,然后再看一下各个部件之间是怎么关联起来的。
内存:
线性存储 字节编址 1Byte = 8bit B b
数组[0 1 2 3]
&[0] &[1]
CPU(中央处理器 Core Process Unit)
32位?64位?-> 位宽 (一次可以计算的数值大小)
2bit 4bit 00-11(0-3) 0000-1111(0-15)
寄存器 控制单元 逻辑运算单元
通用寄存器 程序计数器(PC) 指令寄存器(IP)
程序是以指令 二进制 存储的
总线
地址总线 数据总线 控制总线
IO设备
外设 键盘 鼠标 显示器
什么是计算机 什么是程序
微观:程序是一个状态机
S1 -> S2 -> S3 -> S4
//程序的本质就是:取指 译码(我们想要的存储单元的内容 和执行什么样的操作) 执行 更新PC
while (1) {
从PC指示的存储器位置取出指令;
执行指令;
更新PC;
}
宏观:计算机是一个抽象层
TRM (Turing Machine) //存储 运算 控制
IOE (I/O Extension)//输入输出设备
CTE (Context Extension) //上下文 计算机的前后状态
VME (Virtual Memory Extension) //虚拟地址
MPE (Multiple Processor Extension) //多核支持