指令执行步骤示例 三.ppt
10页4、CPU设计的VHDL语言程序 1、按照指令系统的功能要求,设计计算机各部件的组成及其连接关系, 2、划分指令执行步骤,设计各步骤完成的功能,分配功能到各个部件, 3、确定要为每个执行步骤中各个部件提供哪些控制信号,设计这些控制信号的当前值取指 周期 000执行 周期 001存储 周期 011指令用 2 3 步完成,都必经取指和执行周期,仅读写内存用到存储周期复位状态 100strr, ldrr, push, pop, cala, ret ( 要读写内存 ) 取指周期占用控制器和存储器,实现读取指令与计算下条相邻指令地址, 执行周期占用运算器完成数据或数据内存地址计算,用控制器计算指令地址, 存储周期占用运算器、控制器和存储器完成数据读写或指令地址的读写 需要向各部件提供的控制信号取决于部件本身的运行控制需求,由控制器的控制单元CU提供,其VHDL程序由两层嵌套的 CASE语句组成,外层区分指令执行周期,内层区分每条指令,CU将依据不同指令及其所处的周期,向计算机各个部件提供它们运行所需要的控制信号设计实现控制单元 CU 的功能是控制器教学中的难点之一 操 作 码 目的寄存器源寄存器 I/O 端 口 地 址 相对转移指令的偏移量 立即数 / 直接地址 / 变址偏移量 8位 4位 4位 指令格式 取指 周期 000执行 周期 001存储 周期 011指令执行步骤所有指令都经过取指和执行周期,仅有读写内存操作的7条指令要用到存储周期复位状态 100strr, ldrr, push, pop, ret, cala, calr以动画形式看几条指令的执行过程:1200: ADD R3, R2 ;3 条指令的地址为1200、1201、12021201: JRNC 1200 ;若C=0 转去执行第1条,否则顺序执行1202: 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指令要在 执行周期完成数据地址计算并保存功能, 还要在 存储周期完成存储器的写入功能 结束取指操作:在取指周期,以PC作地址读内存,读出指令送IR,计算下条指令地址 假设PC的内容为 1200,内存1200单元的内容为 0023,IR的内容未定 实现功能:pcAB, memABir , pc+1pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=11 2 0 00 0 3 20 0 3 21 11 2 0 01 2 0 14 5 F E1 2 0 0 动画演示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选 001231234234512342345357923 +00000000 0011 0010ADD R3, R 200在执行周期,完成在取指周期读出来的加法指令的具体运算过程1 2 0 10 0 2 34 5 F E14 5 F E1 2 0 21 2 0 10 0取指操作:在取指周期,以PC作地址读内存,读出指令送IR,计算下条指令地址 此时PC的内容为 1201,内存1201单元的内容为 45FE,IR的原有内容0023 实现功能:pcAB, memABir , pc+1pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=10 0 2 31 2 0 1相对转移指令:标志位C为 0 时,转移到1200地址,否则顺序执行 在执行周期,由控制器部件计算转移指令地址,若C=0 则把转移地址送入PC 实现功能:if nc then pc+offsetpc 控制信号:add_sel=1, pc_wt=10 0 2 34 5 F E1 2 0 01 2 0 24 5 F EF E0 001000101 11111110JRNC 1200取指操作:在取指周期,以PC作地址读内存,读出指令送IR,计算下条指令地址 此时PC的内容为 1202,IR的原内容45FE,假设内存1203单元的内容为 8323 实现功能:pcAB, memABir , pc+1pc 控制信号:addr_sel=01, gate_en=1, mio=1, ir_wt=1, pc_wt=11 2 0 20 0 3 28 3 2 31 11 2 0 21 2 0 38 3 2 34 5 F E1 2 0 2 动画演示在执行周期,在运算器部件中完成把R2的内容送地址寄存器AR的操作 R2的内容为1234 R3的内容为3579请注意,此步骤中是计算数据在内存中的单元地址,通过R2+ 0AR实现,不影响C、Z等标志位;不使用R3。
23123412343579123423 +10000001 0010 0011STRR R2, R300在执行周期,完成读内存指令的数据地址计算与传送操作00001234写内存指令,在存储器读写周期,完成把寄存器R3的内容写入存储器的选定单元 实现功能: RegR3 MemAR ,运算器中通过 R3+0 执行数据计算 控制信号:addr_sel=00,s_sel=01,r_sel=00, gate_en=1,gate_dir=1,mio=1,we=110000001 0010 0011STRR R2,R3动画演示 在存储器读写周期,完成把寄存器堆中的一个寄存器 (R3) 的内容写入存储器的由 AR 指定地址的一个存储单元23 3813212343579000035790035793579+12341234。





