Controller概览:附录C DATAPATH REGISTER MUX DFF din DFF din- 0 addr- DFF DATA INSTRUC. -dout ALU -dout din- -dout -dout init- PC -addr addr MEMORY REGISTER inst din- din din- sel DFF wrPC clk ALUop wrR clk rdM wrM clk wrlR clk sel ALUop wrR rdM wrM wrPC wrlR 1.Instruction 2.Decode/ 5.Reg. opcode- Control Fetch Register 3.Execute 4.Memory Write Read clk- Unit rst- (FSM) 1.Instruction 2.Decode/ 5 Reg. Fetch Register 3.Execute 4.Memory Write 日G 功能:译码,正确的时间产生正确的控制信号 Clk,Reset? 由两部分构成:计算输出和下一状态+时序控制 -组合逻辑,计算:真值表(unstructured(简单),PLA(structured two- level logic array))。一可实现单周期控制器 顺序逻辑,时序控制:FSM(ROM,PLA,Sequencer),微程序
Controller概览:附录C • 功能:译码,正确的时间产生正确的控制信号 – Clk,Reset? • 由两部分构成:计算输出和下一状态 + 时序控制 – 组合逻辑,计算:真值表(unstructured(简单),PLA(structured twolevel logic array))。——可实现单周期控制器 – 顺序逻辑,时序控制:FSM(ROM,PLA,Sequencer),微程序
PC,立即数生成/符号扩展,MUX,3-8译码器 M 32 Imm 64 B PC Gen Select 每个周期结束时写入npc 64 无需写控制信号 M 641 Outo Inputs Outputs Out1 12 11 10 Out7 Out6 Out5 Out4 Out3 Out2 Outo Out2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 Out3 Decoder 0 1 0 0 0 0 0 0 1 0 0 Out4 0 1 1 0 0 0 0 1 0 0 0 Out5 1 0 0 0 0 0 1 0 0 0 0 Out6 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 Out7 1 1 1 1 0 0 0 0 0 0 0
PC,立即数生成/符号扩展,MUX,3-8译码器 每个周期结束时写入npc 无需写控制信号
$A.8.1:D触发器,寄存器 D Master Slave (Data) 0 Clock C C Clock D锁存器:ck电平控制 一位D触发器:ck边沿控制 Preset Preset 数据输入 数据输出 数据使能 D触发器 时钟 Clear 复位 带清零Clear和预置Preset的D触发器 一位寄存器,数据使能=write,clk
$A.8.1:D触发器,寄存器 D 锁存器:clk电平控制 一位 D 触发器:clk边沿控制 = = 带清零Clear和预置Preset的D 触发器 一位寄存器,数据使能=write,clk
n位RegFile结构,图A-8-8,A-8-9 Read register number 1 Write Register 0 Register 1 M 1 Register 0 Read data 1 n-to-2n Register number decoder Register n-2 n-1 Register 1 Register n-1 Read register number 2 Register n-2 Read data 2 Register n-1 Register data clk、Clear、Preset、write?“两读一写”,“异步读,同步写”,“先读后写
n位RegFile结构,图A-8-8,A-8-9 clk、Clear、Preset、write?“两读一写”, “异步读,同步写”, “先读后写
单周期RegFile读写操作约定 ·不同寄存器读写:在一个周期中,F支持两个读和一个写 同一寄存器读写(图4-7,4-32,4-50):add$t0,$s2, $t0 “读和写不能同时”?写控制RegWrite与clk同步,边沿触发 ·后写(late write):前半周期读,后半周期写。一一单周期版! -一个周期内完成读写,但读出的是上一个周期写入的值,“读旧写新” ·先写(early write):与后写相反。一一流水线RAW时“写新读新”! 读出的是前半周期末写入的值。 Read Port 1 Registers Read Write register 1 Read Adr 1 Read data 1 Read register 2 Adr 1 Read Write Read Port 2 register data 2 Write data Read Re gWrite Adr 2
单周期RegFile读写操作约定 • 不同寄存器读写:在一个周期中,RF支持两个读和一个写 • 同一寄存器读写(图4-7,4-32,4-50): –“读和写不能同时”?写控制RegWrite与clk同步,边沿触发 • 后写(late write):前半周期读,后半周期写。——单周期版! –一个周期内完成读写,但读出的是上一个周期写入的值,“读旧写新” • 先写(early write):与后写相反。——流水线RAW时“写新读新”! –读出的是前半周期末写入的值。 10 Write data