Day2 导论 之 「存储器,IO,微机工作原理」
接上回,已经谈到微处理器模型的组成,下面开始梳理存储器,输入输出接口的概述。
微处理器
存储器概述
在学习微机原理,通常讨论的存储器指的是主存,也就是断电后数据会丢失。
类似把矿泉水最小化分成水分子一样,存储器的最小组成单元我们称之为「存储单元」。当然还存在类似于“矿物质的微量元素”,那部分就是设计好了的用于读取存储信息的电路组成了,并非存储器讨论的主体,这里不做过多介绍。
每一个存储单元一般存放一个字节(8位)的二进制信息,每个存储器“体质”不一样,所以有的型号的存储器,一个存储单元可能存放的是16位的二进制信息。这个二进制信息为数据或指令。
存储单元就类似于一户房子,会有自己编号,我们一般称之为地址,通常情况下,存储体的每一个存储单元规格都是一样大的(比如都是8位,16位),所以我们计算存储单元的总数目,就知道存储容量了。存储单元的数目取决于地址线的根数,地址线是用于选择哪一个存储单元的。
如何计算存储容量?下面举两个例子。
- 在一个 8 位机中,有16条地址线,则寻址范围为 2^16 B=64KB.
- 如果是16位机,有20条地址线,则寻址范围是 2^20 B=1024 KB.
想知道存储容量,我们要知道是几位机,但计算寻址范围,我们只需知道有多少地址线即可。
存储器组成
为了方便讨论交流,我们会以画图替代语言组织。下图就是很常见的一个存储器的结构简图。
这个存储器的地址从00,01,,,一直到FF,可以得出一共有16x16 = 256个存储单元,而每个存储单元是8位的。
故,这个是一个 256x8 位的读写存储器。
可以看出,存储器主要由存储器,地址译码器,控制电路组成,所以我们画简图时关注这几个就可以了。
存储器读写过程
以 地址为 04H ,内容为 1001011 的存储单元为例。
Step1. CPU要想读取存储器的内容,需要知道单元的地址。所以由CPU中的地址寄存器AR给出地址 04H,通过地址总线AB传送到地址译码器,地址译码器根据04H“翻译”,知道要找的是04这个存储单元。
Step2. CPU发出“读”控制信号给存储器,让存储器将这个地址为04H的存储单元所存放的内容放到数据总线DB上。这个内容为“10010111”。
Step3. 04单元的内容“10010111”被放到数据总线DB上,传送到数据寄存器DR中,最后由CPU使用。
以上是一个地址04H读取的过程,地址08H的写的过程与之类似,只不过需要注意的是,读操作后,存储器的内容还在,而写操作后,存储器的内容会被清除覆盖。
输入/输出接口概述
本参考书后面会有单独的一个章节对输入/输出接口进行相关介绍,这里依旧只是进行简单的了解。
首先,要知道计算机的各部件之间并不是直接相连的,可能会受到规格不一样,协议不一样、电平不一致等诸多原因影响,所以需要一个“中间媒介”进行一个过渡,这就是接口。
在CPU与外设之间的连接,被称为输入/输出(I/O)接口。
接口的基本结构包括两部分:寄存器或缓冲器、控制逻辑。就像两个口径相差很大的水管连接,需要有一段平缓的连接,以及控制相连与拆开的设计。当然接口的控制逻辑更复杂,涉及到控制电信号方面的操作。
微机的工作原理与程序执行过程
计算机的工作原理是“存储程序”+“程序控制”。也就是得先把程序指令写好存下来,再被转换读取加以执行。因此,微机的工作过程可划分为两个基本阶段:取指令和执行指令。
程序执行过程
参考书上的解释并不难理解,所以这里没有重抄一遍,主波根据自己的理解做了一个简单总结。
1. 取指阶段(Fetch)
- 步骤:
- CPU的内部寄存器 **程序计数器(PC)**中存放着将要执行指令的地址。
- CPU通过地址总线将地址发送到内存。因为CPU目前只知道地址,所以要寻址。
- 内存通过数据总线将指令传回CPU,存入指令寄存器(IR)。
- 程序计数器(PC) 会自动递增,指向下一条指令地址。
PS:在后面学到的8086的IP与这里的PC功能一样,此时无需了解。
2. 译码阶段(Decode)
CPU并不认识指令(因为指令使用汇编语言),所以需要转换为机器认识的二进制数。
- 步骤:
- 指令译码器解析指令寄存器中的指令,确定操作类型(如加法、数据传输等)和操作数地址。
- 控制器根据指令发出对应的控制信号,协调后续操作。
3. 执行阶段(Execute)
- 步骤:
- CPU根据指令类型进行具体的操作。比如:
运算操作:若指令涉及计算(如加减法),运算器(ALU)从寄存器或内存读取数据,执行运算。
数据传输:若指令涉及数据传送(如从内存加载到寄存器),CPU通过总线完成数据传输。
跳转操作:若指令是分支(如条件跳转),修改PC的值以改变执行顺序。
- CPU根据指令类型进行具体的操作。比如:
在指令执行完毕后,转入下一条指令的取指阶段。而微机的工作过程就是不断取指令和执行指令的循环过程。
总结
以上基本上是第一章的学习记录,先休息玩两天再继续学习。