1 / 21

以动画形式看几条指令的执行过程: 2200: ADD R2, R3 ; 3 条指令的地址为 2200 、 2201 、 2202

以动画形式看几条指令的执行过程: 2200: ADD R2, R3 ; 3 条指令的地址为 2200 、 2201 、 2202 2201: JRNC 2200 ; 若 C=0 转去执行第 1 条,否则顺序执行 2202: STRR [R2], R3 ; 把 R3 的内容写入内存地址为 [R2] 的单元 程序运行的初始状态: 程序已读入内存,第 1 条指令地址已经在 PC 中,

Télécharger la présentation

以动画形式看几条指令的执行过程: 2200: ADD R2, R3 ; 3 条指令的地址为 2200 、 2201 、 2202

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 以动画形式看几条指令的执行过程: 2200: ADD R2, R3 ;3 条指令的地址为2200、2201、2202 2201: JRNC 2200 ;若C=0 转去执行第1条,否则顺序执行 2202: STRR [R2], R3 ; 把 R3的内容写入内存地址为 [R2] 的单元 程序运行的初始状态:程序已读入内存,第1条指令地址已经在PC中, 假定 R2的初值为 1234, R3的初值为2345。 ADD指令的二进制代码为 00000000 0011 0010,已在内存中 JRNC指令的二进制代码为 01000101 1111 1110,已在内存中 STRR指令的二进制代码为 10000011 0010 0011,已在内存中 3 条指令都要在取指周期执行读取指令的操作, ADD 指令要在 执行周期完成数据运算与写回功能;结束 JRNC指令要在 执行周期完成指令地址计算并保存功能; 结束 STRR指令要在 执行周期完成数据地址计算并保存功能, 还要在 存储周期完成存储器的写入功能。 结束

  2. 2 2 0 1 4 5 F E 0 0 3 2 0 0 3 2 1 1 2 2 0 0 2 2 0 0 取指操作:在取指周期,以PC作地址读内存,读出指令送IR,计算下条指令地址 假设PC的内容为 2200,内存2200单元的内容为 0023,IR的内容未定 实现功能:pc→AB, mem[AB]→ir , pc+1→pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=1

  3. ADD R2, R3 动画演示 REGs(3) + REGs(2) → REG(3) 假设R2的内容为1234 R3的内容为2345 控制信号: b_sel 选 00 a_sel选 00 s_sel 选 00 r_sel 选 00 alu_func 选 000 reg_src 选 00 reg_wt 选 1 flag_func选001 00000000 0010 0011 + 2 2 0 1234 1234 0 2345 2345 3579 3 3 在执行周期,完成在取指周期读出来的加法指令的具体运算过程

  4. 0 0 2 2 0 2 4 5 F E 4 5 F E 0 0 2 3 1 2 2 0 1 2 2 0 1 0 0 2 3 取指操作:在取指周期,以PC作地址读内存,读出指令送IR,计算下条指令地址 此时PC的内容为 2201,内存2201单元的内容为 45FE,IR的原有内容0023 实现功能:pc→AB, mem[AB]→ir , pc+1→pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=1

  5. JRNC 2200 01000101 11111110 0 0 2 2 0 0 4 5 F E 0 0 2 3 2 2 0 2 4 5 F E F E 相对转移指令:标志位C为 0 时,转移到2200地址,否则顺序执行 在执行周期,由控制器部件计算转移指令地址,若C=0 则把转移地址送入PC 实现功能:if nc then pc+offset→pc 控制信号:add_sel=1, pc_wt=1

  6. 2 2 0 3 8 3 2 3 8 3 2 3 0 0 3 2 1 1 2 2 0 2 2 2 0 2 4 5 F E 取指操作:在取指周期,以PC作地址读内存,读出指令送IR,计算下条指令地址 此时PC的内容为 2202,IR的原内容45FE,假设内存2203单元的内容为 8323 实现功能:pc→AB, mem[AB]→ir , pc+1→pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=1

  7. STRR [R2], R3 动画演示 在执行周期,在运算器部件中完成把R2的内容送地址寄存器AR的操作 R2的内容为1234 R3的内容为3579 请注意,此步骤中是计算数据在内存中的单元地址,通过R2+ 0→AR实现,不影响C、Z等标志位;不使用R3。 10000001 0010 0011 00 + 2 2 1234 1234 3579 1234 1234 0000 3 3 在执行周期,完成读内存指令的数据地址计算与传送操作

  8. STRR [R2],R3 动画演示 在存储器读写周期,完成把寄存器堆中的一个寄存器 (R3) 的内容写入存储器的由 AR 指定地址的一个存储单元 10000001 0010 0011 00 + 2 1234 0000 3579 3579 1234 3 3579 3579 3 1234 8132 写内存指令,在存储器读写周期,完成把寄存器R3的内容写入存储器的选定单元 实现功能: Reg[R3]→Mem[AR] ,运算器中通过 R3+0 执行数据计算 控制信号:addr_sel=00,s_sel=01,r_sel=00,gate_en=1,gate_dir=1,mio=1,we=1

  9. 1 2 0 2 4 5 F E 4 5 F E 0 0 2 3 1 1 2 0 1 1 2 0 1 取指操作 实现功能:pc→AB, mem[AB]→ir , pc+1→pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=1

  10. 双寄存器指令 实现功能:Regs[dr] op Regs[sr] → Regs[dr] 控制信号:b_src=00, a_sel=0, s_sel=00, r_sel=00, alu_func= OP 码, reg_wt=1 (cmp、test 除外), flag_func=001

  11. 单寄存器指令(INC、DEC) 实现功能:Regs[dr] +1 (或-1) → Regs[dr] 控制信号:b_src=00, s_sel=00, r_sel=11, alu_func= 000或001, reg_wt=1, flag_func=001

  12. 单寄存器指令(SHL、SHR) 实现功能:Regs[dr] << 1 (或 >> 1) → Regs[dr] 控制信号:b_src=00, s_sel=00, r_sel=01, alu_func= 000, reg_wt=1, flag_func=011 (或100)

  13. MVRD指令 实现功能:pc→AB, mem[AB]→dr,pc+1→pc 控制信号:s_sel=01, r_sel=10, reg_wt=1, pc_wt=1 addr_sel=01, gate_en=1, mio=1

  14. 相对转移指令(JR、JRC、JRNC、JRZ、JRNZ) 实现功能:pc +offset → pc ( 如果转移条件成立 ) 控制信号:add_src=1, pc_wt=1 ( 如果转移条件成立 )

  15. JMPA指令 实现功能:pc→AB, mem[AB]→pc 控制信号:pc_src=10,pc_wt=1 addr_sel=01, gate_en=1, mio=1

  16. 读内存指令LDRR_1 实现功能:sr → ar 控制信号:s_sel=01, ar_wt=1

  17. 读内存指令LDRR_2 实现功能:Mem[ar] → dr 控制信号:s_sel=01, r_sel=10, reg_wt=1

  18. CALA指令-1 实现功能:pc→AB,mem[AB]→pc, pc+1→npc, sp-1→sp,ar 控制信号:gate_en=1, mio=1, addr_sel=1,pc_src=10,pc_wt=1, npc_wt=1 b_src=01, r_sel=11, alu_func=001, reg_wt=1, ar_wt=1

  19. CALA指令-2 实现功能:ar→AB, npc→mem[AB] 控制信号:npc_ib=1,gate_en=1,gate_dir=1, mio=1, we=1

  20. RET指令_1 实现功能:sp→AB,sp+1→sp 控制信号:a_sel=1, y_sel=1, ar_wt=1 b_sel=01, r_sel=11, reg_wt=1

  21. RET指令_2 实现功能:ar→AB,mem[AB]→pc 控制信号:pc_src=10,pc_wt=1 gate_en=1, mio=1

More Related