本文仅是我复习时,根据YouTube讲解视频整理出的内容,如有不足请指出
目录
实现的内容
高级语言 Z = X + Y
X = 2, Y = 3
假设使用的机器有16位,6位用于表示操作(LOAD, ADD, STORE),10位用于表示操作数在主存中的地址
1.1 Fetch firsrt instruction 取第一个指令(LOAD)
- PC(Program Counter)中记录下一个要执行的指令的地址,此时是100
- PC中的地址传送到MAR(Memory Address Register)
- MAR通过地址总线(Address Bus)将指令地址发送到主存(Main Memory)中
- 主存通过数据总线(Data Bus),将主存(地址100)的内容传送到MDR(Memory Data Register)
- MDR再将其中的内容传送到 CIR(Current Instruction Register)
- 取指令结束后PC+1,PC存储下一个执行指令的地址
1.2 Decode fisrt instruction 解码第一个指令
- CU(Control Unit) open various pathways
1.3 Execute first instruction 执行第一个指令
- 根据指令后10位可只操作数在主存存中的地址是10
- 将主存地址10中的data传送到MDR
- MDR将data传送到累加器(Accumulator)
2.1 Fetch second instruction(ADD)
同第一个指令的fetch和decode过程,execute稍有不同
2.2 Decode second instruction
同第一个指令
2.3 Execute second instruction
- CU执行Add,将累加器中的data(X=2)传送到ALU(Arithmetic Logic Unit)
操作同取第一个操作数
此时累加器中即是第二个操作数(Y=2)
- ALU计算X和Y相加的结果Z并传送到累加器
3.1 Fetch third instruction(STORE)
3.2 Decode third instruction
3.3 Execute third instruction
- 将累加器中的data(Z=5)通过MDR储存到主存地址12