Commit 4a26387f authored by Yuchen Wu's avatar Yuchen Wu
Browse files

lab1 report finish

parent 117dbe9c
# 体系结构第一次实验报告
## 问题回答
### 1
数据通路:
IF段根据PC取指,传入IF/ID段间寄存器
ID段将opcode,func3,func7读出送入Control Unit中,产生控制信号,据此读出两个操作数和目标寄存器传入ID/EX段间寄存器
EX段由Control Unit的控制信号控制ALU进行异或操作,将结果送入EX/MEM段间寄存器中
MEM段传递结果,控制信号控制不访存
WB段读取MEM/WB段间寄存器并将传递的计算结果写回目标寄存器中
控制信号:
JalD 无效
JalrD 无效
RegWrite 有效
MemToRegD 选取ALU的result
MemWrite 无效
LoadNpcD 无效
RegRead 有效
BranchTypeD 对应非Branch语句
AluControlD 指示XOR
AluSrcD 选择R型指令的操作数
ImmType 无立即数
### 2
数据通路:
IF段根据PC取指,传入IF/ID段间寄存器
ID段同样将opcode,func3送入Control Unit,产生控制信号,读出两个操作数,由立即数和PC值算出JalNPC,均传入ID/EX段间寄存器
EX段控制Branch Decision元件对两个操作数做减法,并判断是否为0,产生BrE信号控制PC是否跳转
控制信号:
JalD 无效
JalrD 无效
RegWrite 无效
MemToRegD 无所谓
MemWrite 无效
LoadNpcD 有效
RegRead 有效
BranchTypeD 对应BEQ
AluControlD 指示SUB
AluSrcD 选择BEQ指令对应操作数
ImmType 对应SB类指令立即数
### 3
数据通路:
IF段根据PC取指,传入IF/ID段间寄存器
ID段同样产生控制信号,读出操作数和立即数的值以及目标寄存器并传入ID/EX段间寄存器
EX段控制ALU做加法计算加载数地址传递至EX/MEM段间寄存器
MEM段控制读取存储器对应数值传入MEM/WB段间寄存器
WB段对读取结果进行扩展并写入寄存器堆中
控制信号:
JalD 无效
JalrD 无效
RegWrite 有效
MemToRegD 选取Data Ext的输出
MemWrite 无效
LoadNpcD 无效
RegRead 有效
BranchTypeD 对应非Branch指令
AluControlD 指示ADD
AluSrcD 选择LHU指令的操作数(rs1和imm)
ImmType 指令对应类型
### 4
需要部件:
CSR寄存器组。
数据通路:
增加CSR寄存器的读写准许信号,读地址,写地址,寄存器输入/输出选择信号(CSR或寄存器组),增加MUX以实现CSR寄存器组的读写(如作为ALU的AluSrc2输入)。
同时扩展ALUControl信号,以便支持对应的操作。
### 5
直接使用Verilog语言的{n{0},offset}与{n{offset[top]},offset}实现0与符号扩展
### 6
非对齐的Load需要Load两次以获得全部数据(先清除地址末端读取,再加1个内存单元/字读取,将两次读取得到的数据的部分首尾相接)。
非对齐的Store同样需要Store两次,先存该单元/字剩余部分能容纳的量,再在下一个内存单元/字存左移后的数据剩余部分。
### 7
无符号数
### 8
当该语句为Branch语句(BranchType给出)时,若rs1和rs2的值符合条件时,BranchE信号有效,控制PC更改进行程序跳转,否则PC自增程序不跳转
### 9
branch和jalr是EX段跳转,而jal是ID段,可能存在流水线中同时进行跳转操作,故必须设置优先级,使得先进入流水线的指令先跳转,即EX段跳转的jalr和branch优先级更高。
### 10
Load和之后的ALU指令的相关需要一个气泡,因ALU指令在ID段时Load的数未取出
分支跳转指令可以使用两个气泡实现,也可以通过flush(给出数据通路中包括)实现
### 11
若结果确实不跳转,则不置位flush信号。
若结果跳转,则FlushF与FlushD信号置一清除不应该进入流水线的两条指令,并修改PC使应进入流水线的指令进入。
### 12
是,以0号寄存器为目标的forward不需要,因0号寄存器始终为0
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment