认识各个硬件部件
1.1主存储器的基本组成
原理:
- 取数据时,CPU会把想要存储的数据的指定地址放在MAR之中,存储体就会根据MAR接收到的地址信息去存储体拿出信息,并放在MDR中,最后CPU就可以通过数据线路从MDR中取走想要的数据。
- 写数据时,CPU会指明想要写入到哪个位置告诉MAR,写入的数据会放在MDR中,最后CPU会通过控制总线告诉主存储器说,这是执行的是写的操作,主存储器根据CPU发出的这三个信息,就会往对应的位置往CPU写入数据了。
存储单元:每个存储单元存放一串二进制代码
存储字:存储单元中的二进制代码的组合
存储字长:存储单元中发二进制代码的位数
存储元:即存储二进制的电子元件,每个存储元可存1bit
MAR位数反映了存储单元的个数
MDR位数=存储字长
数据在存储体内按地址储存
例如:
MAR=4位=>总共有$2^4$个村春单元
MDR=16位->每个存储单元可存放16bit,一个字(Word)=16bit=两个字节
1字节(Byte)=8bit
1B=1个字节,1b=1个bit
1.2 运算器的基本组成
1.3 控制器的基本组成
1.4 计算机的工作过程
int a=2;b=3;c=1;y=0;
void main(){
y=a*b+c;
}
解释
- 首先PC会指向0第一条指令的位置,
- PC通过地址总线传输到MAR当中,控制器会告诉主存储器我要进行的读操作
- 主存储器会根据MAR记录的地址信息去存储体找出0号地址对应的二进制数据,并且放到MDR中
- 这条指令会通过数据总线传递到IR中,控制器的IR已经存放了此次的指令
- 指令中的前6位操作码,会被送到CU单元,CU分析以后,会得到这是取数的指令
- IR会将指令的地址码送到MAR中,00000001转化为10进制为5,最后传递给MAR=5
- 接下来主存储器根据MAR中的地址,找到a=2,并将结果放在MDR中
- MDR中的数据会被传输到ACC累加器中
1.5 总结
graph LR
A[各硬件部位]
A-->b(主存)-->C1[存储体]
-->D1[概念: 存储元 存储单元 存储字 存储字长 地址]
b(主存)-->C2[MAR]
-->D2[地址寄存器:用于指明要到读写那个存储单元,其位反应存储单元数量]
b(主存)-->C3[MDR]
-->D3[数据寄存器:用于暂存要读写的数据,其位数=存储字长]
A-->b2(运算器)-->E(ACC)
-->d1(累加计数器,存放操作,运算结果)
b2(运算器)-->E2(MQ)
-->d2(乘商寄存器,乘除法用到)
b2(运算器)-->E3(X)
-->d3(通用寄存器,存放操作数)
b2(运算器)-->E4(ALU)
-->d4(算数逻辑单元,用电路实现各种算数运算)
A-->b3(控制器)-->F(PC)
-->e1(程序计数器,存放下一条指令)
b3(控制器)-->F2(IR)
-->e2(指令寄存器,存放当前执行指令)
b3(控制器)-->F3(CU)
-->e3(控制单元,分析指令给出指令信号)
A-->b4(工作过程)-->g(初始指令:指令,数据存入主存,PC指向第一条指令)
b4(工作过程)-->g2(从主存中取出指令放入IR PC自动加1,CU分析指令,CU指挥其他部件执行命令)