Skip to content
This repository has been archived by the owner on Aug 28, 2021. It is now read-only.

Latest commit

 

History

History
91 lines (81 loc) · 3.71 KB

QA13.md

File metadata and controls

91 lines (81 loc) · 3.71 KB

Q&A 13


Y86的SEQ分哪几个阶段?各阶段的主要过程是什么?

取指:从指令存储器读取指令 译码:读程序寄存器 执行:计算数值或地址 访存:读或写数据 写回:写程序寄存器 更新PC:更新程序计数器


对Y86的SEQ阶段分析,12条指令的微操作实现的共同点有哪些?

所有的指令有相同的格式,都按照6个阶段顺序执行 每一阶段的微操作,按照顺序有3-8种 每一条指令在各阶段执行时,根据指令类型按顺序执行不同的微操作


Y86的硬件结构包括哪些?

硬件单元(组合、时序逻辑)、控制逻辑、信号连接线 组合逻辑:硬件单元间传播,不用CLK,有延迟 计算逻辑(ALU、PCINC) 读逻辑( PC、CC、RF、imem、dmem) 硬件单元的时序逻辑-状态单元:都在CLK上升沿时更新。控制阻断 时钟寄存器:PC、CC、STAT的更新 随机访问存储器:RF写、dmem写


怎么理解SEQ原则-从不回读?

所谓CPU顺序实现SEQ:一个时钟变化,引发一个经过组合逻辑的流,从而执行整个指令 一条新指令的执行,即一个CLK是把上一条指令计算结果-状态单元更新,然后其值进行组合逻辑(新指令的计算)的传播 要控制CPU中活动的顺序,只需要用CLK控制寄存器和内存 所有6个阶段的所有步骤的状态更新同时发生(逐级延迟) 且只在时钟上升开始下一个周期时。 当前时钟/指令n结束,下一时钟/指令n+1没有到上升沿前,状态单元的数据-状态并不是本指令/时钟n执行的结果,仍然是上一时钟/指令n-1的结果 指令n的执行结果,到下一指令n+1的上升沿才更新到转状态单元


HALT、NOP的微操作?新增C0指令Iraddq V,rB的微操作?

$ $ halt
取指 icode:ifun$\leftarrow$M1[PC]读指令字节
译码
执行 Stat$\leftarrow$HLT
访存
写回
更新PC
$ $ nop
取指 icode:ifun$\leftarrow$M1[PC]读指令字节
valP$\leftarrow$PC+1计算下一个PC
译码
执行
访存
写回
更新PC PC$\leftarrow$valP
$ $ iraddq V,rB
取指 icode:ifun$\leftarrow$M1[PC]读指令字节
rA:rB$\leftarrow M_{1}$[PC+1]读寄存器字节
valC$\leftarrow M_{8}$[PC+2]读立即数8个字节
valP$\leftarrow$PC+10计算下一个PC
译码 valB$\leftarrow$R[rB]读操作数B
执行 valE$\leftarrow$valB+valC
Set CC
访存
写回 R[rB]$\leftarrow$valE
更新PC PC$\leftarrow$valP
注意:execute中的运算是valB OP valA,而不是valA OP valB
M1[PC] 表示从PC开始的内存中读取一个字节的数据
V=====valC,指令中V是加数,是ALUA的一个输入
这些微操作都有现成的硬件结构,所以不需要改动状态单元,但控制逻辑需要稍微调整

取指逻辑的need_valC的HCL

need_valC:这个指令包括一个常数字吗? bool need_valC = icode in { IIRMOVQ,IRMMOVQ,IMRMOVQ,IJXX,ICALL };


硬件单元: 运算逻辑: ALU、PCINC、 时钟寄存器:PC、CC、STAT、 随机访问存储器:RF、IMEM、DMEM 读操作-看成组合逻辑-有地址就有输出 随机访问存储器:RF、imem/dmem可以用特殊的时钟电路来模拟 时钟寄存器:PC、CC、STAT、 写操作:需要时钟信号控制,控制阻断 RF、DMEM、PC、CC、STAT 控制逻辑:每一阶段每一步骤的微操作,在硬件上的映射 在不同硬件单元之间传送数据 操作硬件单元,使得对不同指令执行指定的微操作 组合逻辑:不需要任何时序或控制,只要输入变化了,值就通过逻辑门网络传播 时序逻辑:需要时钟信号控制,进行更新-把输入锁存到输出