一、计算机系统简介
1.计算机软硬件概念
总结如下:
(1)硬件进行了相应的封装,对软件提供了接口。
比如提供了指令集。
(2)软件可以利用这些指令集编写能够完成这些指令功能的软件。
系统软件为硬件提供了接口,完成自己的功能。比如说对系统中的软硬件资源进行管理,为用户提供人机交互界面。
应用软件应用系统软件提供的接口,调用系统软件的功能,实现自己的功能。
2.计算机系统的层次结构
(1)现代计算机
(2)发展
多层次结构:
微指令之间有一定的先后顺序,多条微指令构成了一个微程序,一个微程序对应一个机器指令。
(3)软硬件分布
(虚线为软硬件的接口)
3.计算机组成和计算机体系结构
区别如下:
二、计算机的基本组成
1.冯诺依曼计算器
特点:
以运算器为中心:
2.计算机硬件框图
以存储器为中心:
现代计算机组成:
3.计算机工作
(1)指令
(2)计算机组成框图
(3)思维导图(重点)
这里我将这些概念都整合在了一张思维导图里面,可能有不全的地方。
如下:
(4)加减乘除操作
约定
步骤
这里不做过多解释了,图里面写的很清楚。
记得对照框图分析。(有点糊,不懂的可以去看书或者视频)
4.分析
(1)主机完成 一条指令
有三个步骤:
主机结构包含了运算器、控制器和存储器。
①运算器的核心是ALU,还有三个寄存器(ACC\X\MQ)。
②控制器包含了CU,还有两个寄存器(IR\PC)。
③存储器主要包含三部分,存储体、MAR、MDR。
主机+I\O --> 计算机的硬件系统
记住这个图:
取数指令
==取数指令的功能==
把保存在内存单元M中的数据,取到ACC寄存器中。
为了完成这个操作,在控制器(CU)的控制之下,需要把指令中的地址部分(PC)送给存储器(MAR)。以便我们将数据从存储体中取出来。
<1> 取指令
刚才对控制器进行分析的时候,已经指出,要执行的指令的地址,保存在PC中。
指令是保存在存储体中的。
所以取指令的第一个操作,就是PC要把指令的地址送给MAR。
①PC将指令的地址送给MAR;再由MAR送给存储体。
②在控制器的控制下,存储体把指定存储单元中保存的那一条”取数指令”取出来,送入MDR中。
③此时指令已经在MDR中了。取出来的指令最终送入IR里面。因为IR的功能,就是保存当前正在执行的指令。
<2> 分析指令
把指令寄存器中保存的“指令操作码”部分送给CU。
在图上表示是非常简单的。
实际上大量的操作是在控制单元内部进行的。
后面再慢慢探讨。
经过译码以后,可以看见,在CU上面,有很多信号,就是有由这些信号,去控制相应的执行部件去执行指令、要求。
现在从IR开始,因为IR中保存了当前指令,同时也保存了当前这条指令操作数的地址。(IR中有指令的操作码也有地址码)
把IR的地址码部分把地址取出,送入MAR。
再由MAR将地址送入存储体。
在控制器的控制之下,从存储器中,把取数指令要取的数取出来,存入MDR中。
然后送入ACC。
解释:
第一次从PC中取指令,交给IR。
IR反馈给CU,CU经过分析发现该指令是取数指令。
数的地址在IR的取数指令中存着,然后CU告诉IR去取数,所以第二次从IR开始是取数并把数存到ACC中。
存数指令
==功能==
将ACC中保存的数据放入存储体中指定的单元。
要执行的指令的地址保存在PC中,指令保存在存储体中。
<1> 取指令
把指令从存储体中取出来。
必须要知道指令的地址(指令的地址保存在PC中)。
所以还是从PC开始。
①把指令的地址送给MAR
②由MAR送给存储体
③在控制单元CU的控制下,从存储体指定的存储单元中,把指令取出来,放入MDR中。
④再次由控制单元控制下,把MDR取出来的指令送入IR(控制器)中。
<2> 分析指令
将IR中保存的指令的操作码部分,送给CU。由CU对指令进行分析。
通过分析,就能知道指令要做什么样的操作。
CU就会发出相应的控制信号来完成指令要求的操作。
现在的指令是存数指令。
<3> 存数
①在CU的控制下,把IR中地址码部分送入MAR。
②再由MAR送入送入存储体,告诉存储体现在有一个数据要存进来,地址是多少。
③将ACC中的内容送入MDR。
因为ACC中保存了从存储体中输入和输出的数据。
④在控制器的控制下,将MDR中的数据,保存到存储体中。
除此之外,还有加法减法乘数指令等。可以自行试一下,在这里如何进行的。
(2)完成编写的程序
下面再来看一下编写的程序是如何运行的。
比如:
将程序和数据保存到计算机(内存)中,是通过输入设备来做的。
控制器要知道程序的首地址,所以要把程序的首地址送到指定寄存器中(PC)。
PC中就保存了要执行指令的地址。 然后启动机器,开始执行程序。 程序是由一条一条指令构成的。执行程序的过程,实际上就是执行多条指令的过程总和。
比如现在执行第一条指令(取数指令),要进行三步。(把X的值从内存单元中取出来,保存在ACC中。)
<1> 取指令
将指令从给定的内存单元中取出,放在IR中。
具体操作:
PC给出“取数指令”这个指令所在内存单元的地址,PC将该地址送给MAR。
然后MAR将地址送给M(存储体)。
M存储体将指令拿出来之后,送入MDR,再由MDR送入IR。
<2> 分析指令
将指令的操作码部分,送给CU。
IR是指令寄存器,里面保存了指令。可以将它的操作码用OP表示。即:OP(IR)。
将操作码部分送给CU,就是这样写:OP(IR)->CU。
由CU对操作码进行分析。
<3>执行指令
这是一个取数指令。要取的数据的地址保存在IR的地址码部分。
AD表示地址码部分:AD(IR)。
将地址送给MAR。
再由MAR送给存储体M。
把数据从给定的存储单元中取出之后,再放入MDR寄存器。
(MDR和MAR实际上是接口寄存器。)
MDR获得数据之后,要完成取数指令的功能,就要把数据送入ACC。
经过这三步,取数指令就完成了。
剩下的乘法指令,从取指令、分析、执行,具体应该做什么操作。大家可以自己试一下。
如果直接进行下一条乘法指令,是取不出来的。
因为当前PC中,保存的地址,还是第一条指令(取数指令)的地址。
执行完取数指令之后,需要对PC的值进行调整。
实际上,在取址操作结束以后,PC的值在分析指令和执行指令中没有用到。
所以,在取指令结束之后,就可以对PC的值进行调整了。
让PC加1,再送到PC中。
其他的指令都可以用这种方式进行分析。
每三条对应完成一条指令的过程。
最后保存指令之后,就可以进行打印。
当然打印指令也要进行取指令、分析和执行三步。
最后停机。
三、硬件技术指标
1.机器字长
CPU一次能够处理数据的位数。(8位)
与CPU中的寄存器位数有关。
在之前介绍的模型机中,机器字长和ACC寄存器、X寄存器、MQ寄存器的长度相同。
为了简化问题,存储单元的长度(存储字长)和寄存器的长度也是相同的。
并不是所有计算机都是这样,这里是之前模型机的假设而已。
一般来说,机器字长越长,机器的性能越好。
比如:
64位操作:两个64位相加,它们的和保存在64位寄存器中。
如果机器字长是8位,寄存器的位数也是8位。那么要完成64位加法,就要做8次加法运算。
如果机器字长是64位,寄存器的位数也是64位。那么要完成64位加法,就要做1次加法运算。
2.运算速度
(1)主频和核数
主频
和核数
并不是机器速度的直接指标。
(2)吉普森法
机器是用来执行指令的。
机器的速度,可以用指令执行的速度来进行衡量。
一台机器的指令集中可能有很多指令,这些指令,哪一条指令可以代表计算机的速度呢?
①把指令集中每一条指令的执行时间加在一起,然后计算平均值。
有问题!
不同指令的执行频率不一致,有的指令虽然执行很慢,但是出现频率非常低。它对整个机器执行性能影响并不大。
②按照每一条指令出现的频率,来计算指令执行时间的加权平均值。即吉普森法
。
fi
:每一条指令在程序中出现的频率。
动态使用频率(执行后,计算在执行过程中,每一条指令出现的频率)、静态使用频率(直接计算每一条指令出现的频率,不用执行)
(3)时钟周期数
时钟周期数:越少越好。最好一条指令只需要一个时钟周期就可以完成。
计算机里面的时间是离散的,机器由时钟来进行驱动。
CPI指标是指:执行一条指令需要多少个时钟周期。C:时钟周期 P:每一个 I:指令
也需要计算平均值。
把指令集中所有的指令的CPI计算出来,然后根据它的静态使用频率或者动态使用频率,采用加权平均的方法来计算每一条指令需要多少使用周期。
现代计算机(比如超标量计算机),同时可以有多条指令进入流水线。每一个周期可以完成多条指令。为了衡量这种指令的机器性能。另外的指标叫做IPC
,就是和CPI相反,指一个时钟周期能够完成多少条指令。
(4)MIPS
MIPS:每秒执行百万条指令
M:百万
I:指令
P:每
S:秒
每秒执行的指令数越多,说明机器速度越快。
这里面其实还要看每一条指令,具体执行了多少算数运算,或者多少逻辑运算,指令的复杂程度如何等。
(5)FLOPS
以上都是从指令执行的角度来衡量计算机的速度。
实际上,在执行程序的时候。执行指令只是一个手段,目的是要完成算数或者逻辑运算。
衡量机器的运行速度,一个更合理的指标是在相同时间里面,完成了多少算数或者逻辑运算。
FLOPS:每一秒完成了多少浮点运算。
(机器能够做多少操作的角度来进行衡量。)
3.存储容量
存储容量:越大越好。
用存放二进制信息的总位数进行衡量。
四、写在最后
《计算机组成原理》系列参考书籍:
参考视频: