大家好,此篇博客记于2022.10.30,目的是分享今天的学习内容,由于刚刚接触这门课程,如果有什么错误或者有什么表达不清楚的地方,请斧正,谢谢。
在上文中我们讲述了什么是计算机组成,已经如何区分计算机组成和计算机结构。
那既然是组成,那计算机是怎么组成的呢?
我们现在使用的计算机一般都是冯诺依曼体系的计算机,那么我们肯定是基于冯诺依曼体系来讲解本书的。(其实还有哈佛结构的,这个放在了最后面)
目录
冯诺依曼计算机的组成
冯诺依曼计算机的特点
计算机由运算器,存储器,控制器,输入设备和输出设备五大部分组成
数据和指令以同等地位存放于存储器中,并且可以按照地址寻访
指令和数据均以二进制数表示
指令由地址码和操作码组成,操作码表示操作的性质,地址码表示操作数在存储器中的位置
指令在存储器内按照顺序存放。
机器以运算器为中心,输入输出设备与存储器间的数据传达通过运算器完成(经典结构)
计算机的程序框图
经典的冯诺依曼结构是存在第六点的。
但是我们现在的计算机为了提高效率基本上都是使用的以存储器为核心的结构。
两者的图为下
经典冯诺依曼结构图
他们的功能的基本上都是字面意思,但是为了防止部分小伙伴不知道所以请看下图:
部分常用概念的讲解
运算器的算术逻辑单元ALU,控制器的控制单元CU,共同组成CPU
存储器可以分为主存和辅存
主存和CPU可以组成主机
输入输出设备可以称为I/O设备,其中I为in的缩写,O为out的缩写
主机和I/O设备共同组成硬件
如图:
冯诺依曼体系的组成的结构
主存储器(这里不是按照书上面的顺序介绍的)
简称主存,包括存储体,逻辑部件,控制电路,以及存储器地址寄存器MAR,存储器数据寄器MDR。
存储体是由许多的存储单元,每一个存储单元都是由存储元件组成,存储元件可以存储一个二进制代码,即存储一个“1”或者一个“0”。
其模型是收纳箱存储体是最大的一个收纳箱,定义为1级收纳箱;在这个收纳箱中有许多的同样大小的小的收纳箱,定义为2级收纳箱;在2级收纳箱中,存在多个相同大小的收纳箱,定义为3级收纳箱。
逻辑图如下:
等级 | 代表 | 等级 | 代表 | 等级 | 代表 |
一级收纳箱,编号一 | 常规存储体 | ||||
二级收纳箱,编号一 | 存储单元 | ||||
二级收纳箱,编号二 | 存储单元 | ||||
二级收纳箱,编号三 | 存储单元 | ||||
三级收纳箱,编号一 | 存储元件 | ||||
三级收纳箱,编号二 | 存储元件 | ||||
三级收纳箱,编号三 | 存储元件 | ||||
一级收纳箱,编号二 | 含有特殊信息的存储体 | ||||
一级收纳箱,编号三 | 含有特殊信息的存储体 |
虽然我没有将含有特殊信息的存储体的结构表示出来,但是其依然是相同的存储结构
其中有一些比较常用的参数:
我们可以知道一个存储单元(二级收纳箱)可以存储多个二进制代码,其构成一串,在逻辑上他们是连在一起的,所以利用中文中的字的定义,将这一串二进制代码取名为存储字(注意不是字),并将他们视为一个整体。从而得到一个计算容量的参数,存储字长,这一串代码的位数,一般是8,16,32位。存储字可以表示数值,字符,以及一串指令(还记得上面所说的冯诺依曼计算机的六大特性的“数据和指令以同等地位存放于存储器中”吗?如果不记得了,可以回去看看)
另外有一个很容易和存储字长搞混淆的概念——字长,其是固定八位数字,而存储字长现在并不是固定的。
我们通过编号的方式给存储单元命名,称其为存储单元的地址号(编号方式有许多种,但是我还没有写这篇博客,而且其并不是本书的主要内容,所以我们后面再说)(还记得上面所说的冯诺依曼计算机的六大特性的“按照地址寻访”吗?如果不记得了,也可以回去看看)
为了完成按照地址寻找值的方法,我们还需要两个特殊存储器(或者说是寄存器)MAR和MDR,MAR是用来存储要访问的地址的,根据其使用的等长编码格式和编码依然为二进制,我们可以确定公式:
存储单元的个数等于二的MAR的位数次方
而MDR是用来存储要输出的值的,所以它的位数的值就是存储字长,两者都是临时存储,读取和写入速度较快。
运算器
其至少包括三个寄存器(累加器ACC,乘商寄存器MQ,操作数寄存器X)
在前面我们提到了其的算术逻辑单元ALU其主要是用来操控数据的。
其余三个的功能的是用来临时存放数据的具体是什么数据如下图:
(小知识:高位是指其所在位置在较为前面的位置,低位是指较为后面的位置的。举个例子:12345678,其中1234为高位,4567为低位)
那么接下来的计数指令分析就是顺理成章的了
加法:
减法:
乘法:
(其中//是代表两个寄存器串接)
除法:
控制器
其由程序计时器(PC),指令寄存器(IR),以及前面提到过的控制单元(CU)
PC是用来存放要执行指令的地址,他与MAR直接单向连接,而且有自动加一的功能。
IR用来存放当前指令,并且其担任着分析指令的任务。其会将指令分为操作码和地址码(还记得上面所说的冯诺依曼计算机的六大特性的“指令由地址码和操作码组成,操作码表示操作的性质,地址码表示操作数在存储器中的位置”吗?如果不记得了,可以回去看看),并且将操作码OP(IR)发送到CU,地址码Ad(IR)发送到存储器的MAR中
然后CU通过微指令完成指令的操作。
I/O设备
主要是用来输入和输出的并不是本书的主要内容。
实例
举个例子可能会方便记忆和理解
现在我们有一串代码已经存放在了存储器中,相应的数据也已经存放在存储器中了,第一条指令(假设其为取数指令)的代码已经存放在控制器的PC中了,现在开始代码的执行:
指令读取阶段
PC通过专用的通路将地址发送到存储器的MAR中,然后PC的地址自动加一,生成下一个指令的地址,存储器通过读取地址访问数据,将数据读出到MDR,然后MDR将数据发送到IR
数据读取阶段
IR将指令分开操作码发送到CU,地址码发送到MAR中,再通过存储器将数据读出到MDR中,与此同时,CU将指令分解为一个个微指令。将数据进行对应的操作。操作完成之后,下一个地址早已可以使用了,循环继续。
哈佛结构与冯诺依曼结构的不同之处
至于哈佛结构其主要是通过数据和指令并不以相同的地位存放,其会通过数据专区和指令专区来存放。
记于2022.10.30,与诸君共勉。