当前位置: 首页 > article >正文

Day2 导论 之 「存储器,IO,微机工作原理」

接上回,已经谈到微处理器模型的组成,下面开始梳理存储器,输入输出接口的概述。

微处理器

存储器概述

在学习微机原理,通常讨论的存储器指的是主存,也就是断电后数据会丢失。

类似把矿泉水最小化分成水分子一样,存储器的最小组成单元我们称之为「存储单元」。当然还存在类似于“矿物质的微量元素”,那部分就是设计好了的用于读取存储信息的电路组成了,并非存储器讨论的主体,这里不做过多介绍。

每一个存储单元一般存放一个字节(8位)的二进制信息,每个存储器“体质”不一样,所以有的型号的存储器,一个存储单元可能存放的是16位的二进制信息。这个二进制信息为数据或指令

存储单元就类似于一户房子,会有自己编号,我们一般称之为地址,通常情况下,存储体的每一个存储单元规格都是一样大的(比如都是8位,16位),所以我们计算存储单元的总数目,就知道存储容量了。存储单元的数目取决于地址线的根数,地址线是用于选择哪一个存储单元的。

如何计算存储容量?下面举两个例子。

  1. 在一个 8 位机中,有16条地址线,则寻址范围为 2^16 B=64KB.
  2. 如果是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的值以改变执行顺序。

在指令执行完毕后,转入下一条指令的取指阶段。而微机的工作过程就是不断取指令和执行指令的循环过程。

总结

以上基本上是第一章的学习记录,先休息玩两天再继续学习。


http://www.kler.cn/a/586994.html

相关文章:

  • 代码随想录二刷|图论6
  • 【.Net 9下使用Tensorflow.net---通过LSTM实现中文情感分析】
  • C++中std::count` 和 `std::count_if`的用法和示例
  • 数据结构-单链表专题
  • 【开源代码解读】AI检索系统R1-Searcher通过强化学习RL激励大模型LLM的搜索能力
  • DataEase:一款国产开源数据可视化分析工具
  • 蓝桥杯Python赛道备赛——Day5:算术(一)(数学问题)
  • 在Linux中安装Nginx
  • 机器学习之线性代数
  • 【蓝桥杯】24省赛:数字串个数
  • 使用 BookMarkHub 插件进行书签同步
  • 一文了解CAS
  • linux 命令 ls
  • 网络爬虫【简介】
  • 基于vue-grid-layout 实现自定义首页视图
  • Tailwindcss开启黑夜模式
  • Python扑克牌游戏更新哦~【增加更多牌类】
  • 获取golang变量的类型
  • Redis分片集群
  • 机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet