(王道21版)计算机组成原理--计算机系统的概述(第一章)
在计算机中传输信号本质上是传输电信号 用低电平和高电平分别表示0和1
1.1计算机的发展
计算机组成原理主要探讨计算机的硬件,下面我们主要来看一下计算机的硬件
计算机在进行逻辑运算的时候本质上是在处理电信号,所谓逻辑元件就是就是用来处理电信号的最小的逻辑单元
微处理器简单理解为cpu
- 微处理器的发展
编程语言是用来编写软件的,编程语言的发展在一定程度上反应了软件的发展
- 操作系统的发展
- 当前计算机的发展趋势
1.2-1计算机硬件的基本组成
早期的冯诺依曼结构
早期的ENIAC计算机需要程序员手动接线来控制运算--后面提出下面的思想
根据提出的储存器的思想设计出里下面的计算机
程序指令的解析由控制器来完成
- 对早期的冯诺依曼结构的理解
1.将输入设备和输出设备统称为I/O设备 - 冯诺依曼计算机的特点
以运算器为中心的问题:我们的所有的计算是在运算器中进行的,而我们的运算器还要承但数据中转的功能,这势必会导致我们的运算器的效率很低
一个举例
不言而喻
-
由此引出现代计算机的结构
由于我们的运算器和控制器的逻辑运算很紧密,所以一般在大规模集成电路的计算计算,一般将这2个零件整合在一起 -
现代计算机的结构
-
简化后的计算机结构
主存(主存储器)指的是内存,是主机的组成结构之一。辅存是指我们熟悉的固态硬盘,他数据外设(TO设备)。我们电脑里面的app的文件平常是储存在辅存中,只有当我们要运行的时候才会读到内存中
1.2.2认识各个硬件部件
主存储器
- cpu从主存储器中取出数据和从菜鸟驿站中取出包裹的过程对比
我们在取出包裹的时候会把取件码(地址)告诉店员,店员凭着取件码(地址)到货架(存储体)中进行寻找,将找到的获取放到柜台(储存数据寄存器)上,然后我们从柜台上取走数据
当cpu要取出数据会将数据的地址写入到存储地址寄存器中,然后会根据地址在存储体中寻找数据,然后将找到的数据放到存储数据寄存器中,然后cpu到存储数据寄存器中取出数据
写入数据的过程
cpu和指明他想要写入的位置,然后将数据放到存储数据寄存器中。然后cpu会通过控制总线告诉主存储器说现在要执行写操作。住存储器根据这3个指令就可以进行写操作了
存储体
通常每个存储单元可以放下的二进制位都是8bit的整数倍
每个存储单元对应一个地址信息
运算器的基本组成
ACC MQ X 的硬件构造并不复杂,主要用来寄存数据。ALU的实现比较复杂才是核心
控制器
CU(控制单元)中集成了很复杂的电路,可以给其他的部件发出控制信号
举例说明计算机的工作过程
计算机硬件处理下面代码的过程分析
每一条指令也是16个比特,在执行的时候cpu会将器拆分成操作码和地址码
- 这里可以不考虑IO设备
PC:程序计数器,存放下一条指令的地址,有自动+1的功能
MAR:存储地址寄存器
IR:指令寄存器:存放当前执行的指令
CU:控制单元:分析指令,给出控制信号
Acc:累加器:用于存放操作数或运算的结果
MQ:乘商寄存器:在进行乘 除计算的时候,用来存放操作数或运行结果
X:通用寄存器:用来存放操作数
ALU:算术逻辑单元:通过复杂的逻辑电路显示算术运算和逻辑运算
首先我们指令和变量的数据都会先存放到存储体中
初:PC指向0
1.PC存放的内容首先通过地址总线把他传输到MAR中(控制器向主存储器指明了我将要访问的是0号地址锁所对应的数据)
同时控制器会通过控制总线告诉主存储器我们接下来要进行读操作
3.主存储器会根据地址到存储体中寻找0号地址所对应的二进制数据,并把二进制数据放到存储数据寄存器(MDR中)
4.导致IR存放了当前要执行的指令
5.IR中指令的操作码会被送到CU(控制单元)中,CPU分析之后知道这是一条取数的指令
接下来将进行取数的操作:
将地址码所表示的数据取出来并放到Acc中
6.将IR中的地址码放到MAR中,导致MAR=5
其地址码翻译成十进制就是5。主存储器根据地址到存储体中找到对应的数据,并放到MDR中
8.MDR=2
9.在控制单元的指挥下MDR中的数据会被传输到Acc()
到此为止我们就已经完成了取数的操作,导致a这个变量的值被我们放到了Acc中
Pc会自动+1,当我们完成取指令的操作(#1-#4)的时候PC将会自动+1
上一条指令PC自动+1,执行后(Acc)=2
取指令的过程和前面类似
5.分析指令:和我操作码送到CU,CU分析后得知这是乘法指令
6.指令的地址吗(会将地址码翻译成十进制数)从IR送到MAR中,导致MAR=6
- 接下来进行取出数据
8.主存储器将在存储体中找到的值放到MDR中,导致MDR=3
9 .b的值会通过数据总线送到MQ(乘商寄存器中存储)MQ=3
- 下面进行乘法操作
10.把a的值放到通用寄存器X中X=2(进行乘法操作时会把被乘数放到通用寄存器X里面,会报乘数放到乘商寄存器MQ中)
然后CU会通过控制总线告诉算术逻辑单元(ALU)进行乘法运算。ALU会将X和MQ里面的值进行相乘,并把结果方法ACC里面
1-5步和前面的指令完全一致,到分析出是乘法指令后才不一样
- 指令3
上一条指令之后PC=2,执行后ACC=6
前面的5步完全一致,以致分析出这是加法指令...
加法指令指明的是c的地址,将其转换成十进制刚好是7
6.将指令的地址码送到MAR中,MAR=7
7.主储存器根据地址在存储器中寻找值
8.把找到的值放到MDR中
9.将MDR中的值传输到通用寄存器X当中(当进行加法运算时ACC中会存放被加数,而通用寄存器X中存放加数)
控制单元CU和向ALU发出一个信号,告诉他你此次要指向的是加法操作。ALU会将ACC和X中储存的值相加,并把相加得到的值再次储存到ACC当中,ACC=7
前面的5条指令和前面的一致
指令4
将地址码转换成十进制8
6.将指令的地址吗送到MAR,导致MAR=8
7.将ACC中的数据总线送到MDR中,MDR=a*b+c=7
此时的控制单元CU通过控制总线告诉主存储器,我要进行写入数据的操作
8.主存储器会根据MAR中的地址,把MDR中的数据存到存储体中相应的位置
9.8号存储单元的值变成了7,y=7
同样1-5和前面的没有什么不同
指令5
终止一个进程的运行需要系统的调用或中断机制,后续的步骤由操作系统完成,不需要我们关系
总结
取指令和分析指令的步骤都完全一致,根据指令周期的不同阶段,CPU可以区分指令和数据
MAR MDR中划分上是属于主存,但是现在的计算机中一般会将这2给部件集成的CPU中
回忆冯诺以曼计算机结构
1.2.3计算机系统的层次结构
二进制机器指令由微指令组成
我们的机器并不能直接执行高级语言,会先编译程序翻译成汇编语言,然后用汇编程序将汇编语言翻译成机器语言
一般用汇编语言写的程序难免会用到操作系统提供的一些服务 ,比如某些系统调用。系统调用又可以称为广义指令。所以在汇编层次下面还要
这是从编程人员的视角来划分的,在操作系统中划分有所不同,但是意思一样
汇编语言本质上是助记符
- 高级语言的执行过程
解释程序:翻译一次,立即执行,然后接着翻译
除了上述步骤外,有些语言可以通过编译程序直接变成机器语言。还有一些语言不是通过编译程序而是通过解释程序,把高级语言代码翻译成机器语言代码
计算机性能指标
存储器的性能指标
- n个二进制位能表示多少种状态
熟练记得
CPU的性能指标
脉冲信号:指挥cpu内部各个部件工作的节奏
主频等于10HZ,表示每秒钟又10个脉冲信号
在微观的角度影响CPI的因素太多了,可以同一条指令不同时间执行的CPI都可能不同,所以一般讨论平均情况
- 例题
注意:这里的 K M T的换算不是前面的1024,2KMIPS表示每秒执行2000条指令
总结:在描述存储器的容量 文件的大小 是的M K T 换算是1024 ,而在描述数据的处理速率 主频时换算是1000
系统整体性能的指标
如果数据通路贷款是8位,我们需要从存储器传输10个比特的数据到CPU里面,需要传输2次,这肯定比数据通路贷款位6位的慢
请求:可以理解为一个指令就是一个请求,也可以理解为一次完整的程序运行就是一个请求.淘宝中每秒可以出路多少个用户发来的http请求,这就是吞吐量
我们前面的描述计算机性能的指标都是静态指标,很难去描述;我们可以用动态的描述
G是指的10的9次方
CPU常考