(一-1)计算机的主要硬件【计算机组成原理】

现代计算机硬件

img img

注意:主存和CUP一起构成了主机,辅存和输入/输出设备一起构成了IO设备。

1,主存储器

图1 (假设正在和CPU进行交互)

工作原理

存储数据:需要CPU给主存储器一个要存储数据的指令,然后将数据的地址放进地址寄存器,接着将数据放进数据寄存器。


取出数据:CPU将想要取出的数据的地址交给地址寄存器,并且CPU告诉存储器这次要执行的是读操作。然后存储体就会通过地址将对应的数据放在数据寄存器中,然后CPU就可以通过线路将数据寄存器中的数据取走。

基本组成

存储单元:在这个存储单元中放一串二进制代码(是个空间)(存储单元是通过地址访问的,每个存储单元都会赋予一个地址)
存储字:这就是存储单元中放的二进制代码的组合(是二进制代码)。
存储字长:存储字的二进制代码的长度。
存储元件:0/1

MAR(地址寄存器):它的位数与存储体中的存储单元的个数是对应的(MAR中也是有好几位的,只是用的时候将它转换成10进制的使用)。ex:地址存储器中的数都是4位的,那么存储体中的存储单元的个数就是2的4次方(从0000到1111)。相应的,如果存储体中的存储单元的个数是2的5次方,那么地址寄存器中的二进制的位数就是5.

MDR(数据寄存器):它的位数是和存储单元中的存储字长有关系的。如果MDR中的二进制都是16位的,那么代表着存储单元中存储字长就是16位的。

(注意上面的单位都是比特,不是字节。)



2,运算器

运算器的作用就是实现算术运算和逻辑运算。

3

在这里插入图片描述

其中ALU的结构是十分复杂的,因为它负责运算。其他三个只负责存储。
加法和减法都是单地址指令。

6 6

加法:[ACC] + [x] -> ACC 指令:加法操作码+加数的地址(被加数在ACC中)
根据地址,将加数放到x中。
减法:[ACC] - [x] -> ACC 指令:减法操作码+减数的地址(被减数在ACC中)
根据地址,将减数放到x中。
乘法:[x] * [MQ] -> ACC//MQ 指令:乘法操作码+乘数的地址
首先,运算器收到乘法指令,在执行乘法指令之前,acc中的数就是被乘数。
然后,根据地址将存储单元中的乘数放到MQ中
接着,将ACC中的被乘数放到x中,将ACC清零(先后顺序由控制器控制)
最后,进行乘法,将乘法结果的高位放到ACC中,将乘法结果的地位放到MQ中。
除法:[ACC] ÷ [x] -> MQ (余数保存在ACC中) 指令:除法操作码+除数的地址
首先,运算器收到除法指令,在执行除法指令之前,acc中的数就是被除数。
然后,根据地址将除数放到x寄存器中。
最后,进行除法操作,将商保存到MQ中,余数保存到ACC中。



3,控制器

5 6

功能是解释指令,保证指令执行:
1,取指令:先从PC中根据下一条指令的地址来找指令(PC寄存器中存放的是准备执行的指令的地址,由自加1功能)。将指令放在IR中()。
2,分析指令:将指令从内存单元中取出,放到IR(IR寄存器中存放的是准备执行的指令)中,然后控制单元会将IR中指令的操作码部分提取出来并进行分析。
3,执行指令:控制单元控制相应的部件去执行指令。(由CU来完成)



举例子

7

通过编译放进主存储器中。

8

(前面的是机器指令,后面的是数据存储。指令分为操作码和地址码两个部分,加起来正好与数据的字长一样,16比特。所以存储字长就是16比特。操作的时候CPU会自动将指令拆成操作码和地址码。)

以上是存储操作。


接下来开始执行:

取数指令

10

最开始:PC = 0,指向的是第一条指令的存储地址。

1,PC将地址传给MAR,这样地址寄存器的值变成了0。MAR = 0。(并且控制器会通过控制总线告诉主存储器是指令是读取)

2,然后MAR会通过自己的值去存储体中来寻找对应存储单元的二进制。

3,然后将寻找到的二进制(00001 00000000101)放进MDR中。即MDR= 00001 00000000101

4,IR会从MDR中接收指令。使得IR = 00001 00000000101。

5,然后IR会将数据传给CU,指令的操作码传到CU后,CU经过分析得出,这个指令是取数。

6,然后将操作码后面的地址码传给MAR,使得MAR = 5。

7,然后存储主体根据MAR传过来的5来找到对应单元中的二进制。

8,将存储主体二进制将二进制再传给MDR。使得MDR = 0000000000000010.

9,然后MDR中的数据会传给ACC(累加寄存器中)。ACC= 2.

到此为止,就完成了一个取数的指令。

取指令(1-4)
分析指令(5)
执行取数指令(6-9)

前面提到过,PC有自动加一的功能,当已经完成了地址为0的指令后,就会指向1; ACC = 2



乘法指令

11

1,PC将地址传给MAR,MAR = 1
2,MAR将地址传给存储体,然后存储体通过地址将存储单元对应二进制找到。
3,存储体将找到的二进制传给MDR,MDR = 000100 0000000110.
4,然后MDR将二进制传给IR。使得IR = 0000000000000110
5,IR将数据传给CU,然后CU经过分析操作码000100得出这个指令是乘法。
6,然后IR将地址码传给MAR,使得MAR= 000000000110
7,然后存储体接收到MAR的值,并且寻找这个存储单元对应的二进制码。
8,将这个数据的二进制码传给MDR,使得MDR = 0000000000000011=3
9,将MDR的值传给MQ乘商寄存器中,所以b = 3已经到了MQ中了。
10,将a的值放到通用寄存器X中,X = 2
11,CU会通过控制线告诉ALU(算数逻辑单元),让他进行乘法运算。然后将得出来的值6放进ACC中。(如果乘积太大,则需要MQ辅助存储,低位)

取指令(1-4)
分析指令(5)
执行乘法指令(6-11)

PC+1,执行了2; ACC = 6



加法指令

12

1,Pc将地址传给MAR, MAR = 2
2,将MAR的值传给存储体,让存储体找到值对应的存储单元的二进制值。
3,将找到的二进制值传给MDR,使得MDR = 000011 000000000011
4,将MDR的值传给IR中,使得IR = 000011 000000000011
5,将IR中的值传给CU,CU进行分析操作码得出这个是加法操作。
6,将地址码转换成十进制传给MAR,MDR = 7.
7,MAR将7传给存储体,让存储体去找地址是7的存储空间的数值二进制。
8,将找到的二进制传给MDR,即MDR = 0000000000000001 = 1
9,将MDR的值传给通用寄存器X中,使得x = 000000000000001 = 1 。
10,控制单元CU会通过控制线告诉ALU(算数逻辑单元),让他执行加法运算。最后将得数放在ACC中(ACC+X = ACC)。即ACC = 7.

取指令(1-4)
分析指令(5)
执行乘法指令(6-11)

PC+1,得PC = 3,ACC = 7.



存数指令

13

1,PC = 3,将PC 的值传给MAR。使得MAR = 3.
2,将MAR的值传给存储体,然后存储体来寻找地址为3的数据对应的二进制码
3,将找到的二进制码传给MDR,使得MDR = 000010 0000001000.
4,然后MDR将二进制码传给IR。
5,CU进行分析IR中的操作码得到,执行的指令是存数。(将ACC中的数据存储到地址码所指向的存储单元中)
6,将地址码转换成十进制得8,将8传给MAR,使得MAR = 8
7,(因为是存数操作)将ACC的值传到MDR中,使得MDR = 7
8,CU(控制单元)会通过控制总线告诉存储体,执行的操作是存数。
9,将MDR中的数7 存储到了MAR指向的地址中,也就是地址为8的存储单元中存储的数值为7.

取指令(1-4)
分析指令(5)
执行存数指令(6-9)



停机指令
14

PC+1 = 4

1,将PC的值传给MAR,即MAR = 4.
2,然后将MAR 的值传给存储体,让存储体去找地址为4的存储单元对应的二进制数值
3,将找到的二进制数值传给MDR,使得MDR = 000110 000000000000
4,将MDR的二进制值传给IR中,导致IR = 000110 000000000000
5,IR将数传给CU,CU通过分析操作码的指令得到这个指令是停机。

取指令(1-4)
分析指令(5)
执行停机指令



15
在现实中,MAR和MDR通常会被集成在CPU中,所以以后遇到了可以理解。



  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小明同学啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值