级流水无cacheCPU实验计算机组成原理专业课程设计方案报告.doc
《级流水无cacheCPU实验计算机组成原理专业课程设计方案报告.doc》由会员分享,可在线阅读,更多相关《级流水无cacheCPU实验计算机组成原理专业课程设计方案报告.doc(31页珍藏版)》请在咨信网上搜索。
计算机组成原理 课程设计汇报 5级流水无cache CPU试验 1.1 试验内容:无cache流水CPU分析和改造 1. 了解无cache流水CPU工作原理,明确系统总体结构和数据通路图,分析处理多种相关用到关键信号,和具体分析各流水段功效和实现。 2. 将16位指令系统改为8位,设计新指令系统,并修改对应数据通路。 3. 修改规则文件(cpu.txt),并编写测试程序验证系统改造正确性。 1.2 总体基础信息 1. 深刻了解无cache流水cpu工作原理。在具体分析了各流水段功效实现、3种相关产生原因和处理方法基础上,完成了以下后续工作。 2. 修改指令系统。具体包含: a) 16位指令改为8位,重新编写了指令OP码。 b) 新增了MOVI指令。因为原指令系统没有将立即数存进指定寄存器指令,所以此处新增一条MOVI指令。指令汇编语句为 MOVI DR, IMM 其中DR为目标寄存器,IMM为立即数。因为指令长度为8位,OP和DR共占了6位,所以IMM大小小于3(即二进制“00”至“11”)。 c) 修改及删除了部分指令。此处详见5.1。 3. 修改系统控制信号。在保持原有系统逻辑功效基础不变情况下,修改各个模块里控制信号位数和模块接口信号位数以和新指令系统兼容。 4. 增加内存模块。使用vhdl编写了一个ram模块,依据读写信号来选择读写功效。reset时将事先写好二进制形式程序写进内存。 5. 扩展了常量定义文件。在常量定义文件unitpack.vhd中,具体地: a) 新增了ALU功效选择信号常量aluMOVI。 b) 新增了寄存器编号常量R0、R1、R2和R3。 c) 新增了ram类型。 6. 使用Quartus II进行功效仿真并debug。 7. 使用bdf结构顶层实体cpum。因为新增了内存模块,而原系统是使用vhdl编写,为了方便对接,我们使用bdf形式将无cache流水线cpu和内存模块连接起来结构顶层实体cpum,“m”含义是“memory”,即带内存模块无cache流水线cpu。 8. 重画数据通路图。我们使用了Microsoft Visio软件在原有系统总结结构图基础上修改并新增了部分模块,详见2。 2、系统总体结构及数据通路图 总体结构图: 数据通路图: 整个CPU由以下多个模块组成: l 取指模块(IF):给出内存地址,读取指令并送入指令寄存器,为下一级准备数据。 因为PC控制模块处于取指模块中,所以控制相关检测也置于取指模块。 l 译码模块(ID):读取寄存器值和指令译码。我们采取一次译码,逐层传输方法,译出后几级流水所需控制信号和数据(如立即数等),在每次时钟上升沿到来时送入下一级。实际上,结构相关、控制相关、数据相关检测全部可归入译码部分。考虑到“相关检测”包含到信号分属不一样阶段和整体结构清楚性,我们将“相关检测”独立出来。 l 实施模块(Ex):完成算术逻辑运算、计算有效地址和提供数据通道。 l 访存模块(Ma):选择地址线数据起源和数据线流向。访存和取指在功效上是独立,但CPU对外只有一条地址线和数据线事实决定了访存和取指是相互联络。当实施LOAD/STORE指令时,地址线由ALU送入“访存段”值提供;取指时,则由PC提供。当写内存时,CPU内部数据送数据线;当需要读内存时,CPU往数据线送高阻。 l 回写模块(Wb):选择回写数据源和依据写使能信号wRegEn将数据回写到寄存器堆; l HazardDetectUnit模块:检测结构相关; l ForwardingUnit模块:检测数据相关。 l 内存模块memory,依据访存地址mem_adr和读写信号wr来控制。 3 处理多种相关用到关键信号分析 3.1控制相关 控制相关是指因为程序实施方向可能改变而引发相关。当实施跳转指令时,就会发生这种情况。除JR外,JRZ等条件跳转需要依据目前状态位来决定是否跳转,而目前状态位是由前面最近会影响状态位指令(如算术指令)决定。常规也是比较简单做法是在碰到JRX之类跳转指令时,延迟后边流水线进入。但我们经过分析,认为能够一点全部无须延迟,经过旁路处理把控制相关转为数据相关来处理。这么处理,无须延迟,能够提升流水线性能。按我们方法处理控制相关需要做两项工作: 1) 经过旁路,提供状态寄存器值和临时状态位值,为判定是否跳转作准备; 2) 选择PC更新时机 1.旁路处理 在每条指令译码时,会产生一个信号setFlag,它决定了在实施阶段是否依据ALU计算结果改变状态位。从下面时序图中能够发觉,只要我们在JRX指令译码时提供以下3个信号就可作出是否跳转决定: 信号 含义 tFlag ALU计算出临时状态位, Flag 状态寄存器输出, e_setFlag 状态寄存器写使能 表17 处理控制相关信号 若e_setFlag要写状态寄存器,则说明前一条指令会影响状态位,这时依据tFlag决定是否跳转;若e_setFlag要保持状态寄存器,则说明前一条指令不会影响状态位,这时依据Flag决定是否跳转。 包含到控制相关关键信号是setFlag信号,产生于译码模块,作用于实施模块,即identity.vhdhe exentity.vhd文件中。以下图所表示。 从上图可看出,通常包含到数值计算和关系运算指令低三位均为001,而不包含则为000。该信号传到实施模块中用于判定是否更新状态寄存器。 3.2 数据相关 数据相关是指在实施本条指令过程中,假如用到操作数是前面指令实施结果,则必需等候前面指令实施完成,并把结果写回寄存器或主存以后,本条指令才能继续实施。此处采取设置专用数据通路来处理数据相关问题。但旁路技术并非一劳永逸。若前一指令为LOAD,以后一指令和它数据相关,以下图所表示,当下一指令实施阶段需要数据时,上一指令还未给出,这种情况是无法用旁路技术来处理。 相关类型有三种: 1. 2. 3. 关键用到关键信号是m_wRegEn和w_wRegEn,关键使用是在数据相关检测模块forwardingentity.vhd中,在identity.vhd、exentity.vhd、memaccessentity.vhd中全部有使用。具体使用方法以下。 相关检测全部置于“实施阶段”。信号wRegEn是寄存器写使能,SA,SB是寄存器组A,B口选择信号。信号前缀表示信号所处阶段。如e_SA表示处于实施阶段SA。 1.相邻指令数据相关检测 若m_wRegEn=’1’,则表示前一指令要回写寄存器。此时,若e_SA或e_SB等于m_SA,则肯定数据相关,这是因为我们要求,若回写寄存器,则寄存器A口选择信号所指定即为目标寄存器。不然无关。 2. 中间隔1条指令两指令数据相关检测 若w_wRegEn=’1’,则表示第一条指令要回写寄存器。此时,若e_SA或e_SB等于w_SA,则肯定数据相关。不然无关。 当然,上述两种情况可能会一同出现。这时,我们就按情况1处理。因为情况2能够了解为 接连出现情况1。 下图为各个指令在译码时产生wRegEn信号,能够发觉通常会写进寄存器指令,该信号值全部为1。 3.3 结构相关 因为在设计中不包含缓存,所以会有取指和访存冲突,即结构相关。以下图: 关键信号是wrMem信号,表示是否读写内存。具体出现在结构相关冲突检测和问题处理模块Hazarddetectentity.vhd中,产生于译码模块identity.vhd中。具体使用方法以下: 1) 冲突检测 只有实施访存指令(LOAD/STORE)时,才会出现冲突。所以,我们在译码时产生一个标志是否访存信号wrMem。含义以下: wrMem 意义 00 写内存(STORE) 01 读内存(LOAD) 1× 不占用内存 表16 wMEM控制信号 经过检验“访存阶段”m_wrMem就可确定是否冲突。 2)取指延后 在每次取指时,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使取指延后一个节拍。 4 各流水段功效和实现具体分析 4.1取指(IF) 4.1.1 实现功效列表 取指模块实现功效是: l 给定内存地址,读取内存中指令 l 将指令送入指令寄存器,提供给下一级译码模块 l 实现控制相关冲突检测 l 依据读取到指令是否为跳转指令来更新PC 4.1.2输入、输出信号分析 关键输入信号: Z,C 状态寄存器 tempZ,tempC ALU计算出临时状态位,用于相关冲突检测 e_setFlag 状态寄存器写使能端,产生于译码时。决定是否在实施阶段依据ALU计算出来结果改变状态位 PCStall 决定是否保持PC不变,由结构相关冲突检测模块产生 IFFlush 决定是否往指令寄存器IR里写入空指令,来自结构相关检测模块 OuterDB 内存读取过来数据 关键输出信号: PC_addr PC作为内存地址输出,用于下一节拍取指 d_PCInc1 PC + 1 d_IR 指令寄存器输出 4.1.3功效实现逻辑 经过分析控制信号我们能够大约了解到取指模块功效实现逻辑是怎样。广义上来说,取指模块包含结构相关冲突检测模块,因为PCStall信号(用来实现IF段对PC更新)和IFFlush信号(对IR写入空指令)就来自结构相关冲突检测模块。 结构相关检测模块叫HazardDetectEntity,其模块图以下: 其中输入信号含义是: m_wrMem wrMem在访存阶段值 w_rwMem wrMem在写回阶段值 d_IR 指令寄存器 经过检测访存阶段wrMem信号即可确定是否发生了结构冲突。 每次取指后,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使得取指延后一个节拍。 除此之外,setFlag信号在此处作用是,决定用状态寄存器输出Flag还是ALU计算出临时状态位tFlag来判定跳转。 4.2译码(ID) 4.2.1 实现功效列表 译码模块实现功效是: l 读取指令寄存器中指令 l 对指令进行译码,发送控制信号 4.2.2输入、输出信号分析 关键输入信号: d_IR 从取指模块来指令 d_PCInc1 从取指模块来pc+1 w_wbData 写回数据,从写回模块里来 w_destReg 要写回目标寄存器 w_wRegEn 寄存器写使能端 关键输出信号: e_RAOut 寄存器A输出值 e_RBOut 寄存器B输出值 e_IMM 立即数输出值 e_ALUSrc ALU输入端选择信号 e_ALUOpr ALU运算选择信号 e_SetFlag 状态寄存器写使能信号 e_wrMem 访存信号 e_wRegEn 寄存器写使能信号 e_destReg 目标寄存器 e_MemToReg 内存写入寄存器使能信号 4.2.3功效实现逻辑 译码模块内部写好了依据不一样指令发送不一样控制信号代码,采取一次译码,逐层传输方法,译出后几级流水所需控制信号和数据(如立即数)。在每次时钟上升沿到来时送入下一级。实际上,结构相关、控制相关、数据相关检测全部可归入译码部分。考虑到“相关检测”包含到信号分属不一样阶段和整体结构清楚性,作者将“相关检测”独立出来。 4.3实施(EX) 4.3.1 实现功效列表 实施模块实现功效是: l 依据控制信号完成算术逻辑运算 l 依据控制信号计算有效地址 l 提供数据通道,将上一级传输过来控制信号传到下一级 4.3.2输入、输出信号分析 关键输入信号: e_RAOut、e_RBOut、e_ALUSrc、e_ALUOpr、e_SetFlag、e_IMM、e_memToReg、 e_wRegEn、、 来自译码模块控制信号 forwardA、forwardB 来自数据相关冲突检测模块输出 e_ALUOut 上一个指令在实施模块产生输出,作为下一条指令在实施模块实施输入信号之一 关键输出信号: m_SA、m_ALUOut、m_RBdata、i_tempZ、i_tempC、m_flag、m_wRegEn、m_memToReg、m_destReg、m_wrMem 关键来自上一级模块传过来控制信号 4.3.3功效实现逻辑 实施模块实施功效很简单,和上个学期做CPU综合性试验类似,关键是部分ALU逻辑运算和状态寄存器更新操作。在这里还有向下一模块传输控制信号作用。 其中,forwardA和forwardB信号是来自数据相关冲突检测模块信号。 模块图以下所表示: 作用是在发生读后写数据相关时,直接将计算好了结果在写回目标寄存器时也发往下一条指令实施模块作为ALU输入之一。 4.4访存(MEM) 4.4.1 实现功效列表 访存模块实现功效是: l 依据地址线对内存进行读操作或写操作 4.4.2输入、输出信号分析 关键输入信号: m_wrMem 内存读写控制信号 m_ALUOut 来自ALU输出结果 m_RBdata 要写回数据 PC 程序计数器值 关键输出信号: w_wrMem 传送到写回模块内存读写控制信号 wr 读写控制信号 addr 要读取内存地址 OuterDB 既可作为输入又可作为输出,用于传输数据 4.4.3功效实现逻辑 访存和取指在功效上是独立,不过因为CPU对外只有一条地址线和数据线,所以访存和取指在实际上是有联络和冲突。当实施Load/Store指令时,地址线由ALU送入访存段值提供;取指时,则由PC提供。当写内存时,CPU内部数据送往数据线。当需要读内存时,CPU往数据线送高阻。 4.5写回(WB) 4.5.1 实现功效列表 写回模块实现功效是: l 选择写回数据源(来自ALU输出还是来自内存) l 依据写使能信号wRegEn将数据写回到寄存器组 4.5.2输入、输出信号分析 关键输入信号: s_w_ALUOut ALU输出 s_w_MemOut 内存读取输出 s_w_memToReg 决定写入寄存器数据起源 s_w_flag 要写进状态寄存器值 4.5.3功效实现逻辑 此部分较为简单,即经过s_w_memToReg信号来决定是将ALU输出写进寄存器还是将从内存读出来数据写进寄存器。 模块图以下: 5 系统改造 5.1新指令系统 汇编语句 操作码 功效描述 指令类型 ADD DR,SR 0000 DR+SRàDR 算术逻辑指令 SUB DR,SR 0001 DR-SRàDR CMP DR,SR 0010 DR-SR 比较 AND DR,SR 0011 DR and SRàDR 逻辑和 OR DR,SR 0100 DR or SRàDR 逻辑或 XOR DR,SR 0101 DR xor SR à DR 异或 SHL DR 0110 逻辑左移,最低位补0,最高位移入C SHR DR 0111 逻辑右移,最高位补0,最低位移入C MOVI DR,IMM 1000 IMM(立即数)àDR,存立即数进寄存器 数据传送指令 MOV DR,SR 1001 SR à DR LOAD DR,SR 1010 [SR]à DR STORE DR,SR 1011 SR à [DR] JR ADR 1100 无条件跳转到ADR , ADR=原PC值+OFFSET 控制转移指令 JRC ADR 1101 当C=1时,跳转到ADR, ADR=原PC值+OFFSET JRZ ADR 1110 当Z=1时,跳转到ADR, ADR=原PC值+OFFSET NOP 1111 空操作 其它 5.1.1选择改动说明 包含NOP空操作指令在内指令系统共包含16条指令,在原有25条指令基础上删除了10条,新增了1条。具体地,删除了DEC,INC,TEST,SAR,PUSH,POP,JRNC,JRNZ,LOADH,LOADL,新增了一条数据传送指令MOVI。 5.2修改代码及说明 1)代码段1,新增内存模块memory.vhd --内存 ---10-30 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use work.unitPack.all; ENTITY memory IS PORT ( databus : inout STD_LOGIC_VECTOR(7 DOWNTO 0); --数据总线 addr : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --访存地址 wr : IN STD_LOGIC; --读写控制信号 reset: IN STD_LOGIC ); END memory; ARCHITECTURE rtl OF memory IS SIGNAL ram:ram_type; --ram_type在unitpack.vhd文件里定义 BEGIN PROCESS(addr,wr,ram,databus,reset) BEGIN IF reset='0' THEN ram(0) <= MOVI & R0 & "11"; …… --此处将程序写进内存中,省略 ram(15) <= JR & "1110"; END IF; --读写功效实现 IF wr='0' THEN databus <= Z8; ram(conv_integer(addr)) <= databus; END IF; IF wr='1' THEN databus <= ram(conv_integer(addr)); END IF; END PROCESS; END rtl; 内存模块使用vhdl编写,内存由ram组成,读出数据线和写入数据线为同一条数据总线,所以不能同时进行读写。因为这么所以会产生结构相关,即在取指时候不能够访存,不然会产生冲突。内存读写功效由wr信号进行控制,当wr为0时实施写功效,当wr为1时实施读功效。 2) 代码段2,取指模块ifentity.vhd op <= IR(7 downto 4); --操作码取指令高4位 --控制相关信号e_setFlag,用于选择当状态寄存器值起源 with e_setFlag select ZZ <= Z when flag_hold, tempZ when others; with e_setFlag select CC <= C when flag_hold, --因为跳转信号中只保留了JR、JRC、JRZ,所以此处只判定该3个OP s_selZ <= '1' WHEN( op=JRZ AND ZZ='1') --判定是否跳转 OR op=JR else '0'; s_selC <= '1' WHEN( op=JRC AND CC='1') --判定是否跳转 else '0'; PCIncSel <= '1' WHEN s_selZ='1' or s_selC='1' ELSE '0'; s_PCInc1 <= PC + x"01"; --此处修改了PC位数 WITH PCIncSel SELECT --当有跳转时pc = pc + offset,不然pc = pc +1 PCnext <= s_PCInc1 WHEN '0', PCPlusOffset WHEN '1', s_PCInc1 when others; process(reset,clk,PCStall) begin if reset = '0' then PC <= x"00"; --此处修改了PC位数 elsif FALLING_EDGE(clk) and (PCStall='0') then PC <= PCnext; end if; end process; 取指模块关键修改了和pc相关地址信号位数和跳转判定,因为修改指令系统时只保留了JR/JRC/JRZ3条跳转指令,所以在跳转判定时只考虑该3条跳转指令,依据跳转判定来选择怎样更新pc值。 1) 代码段1,实施模块exentity.vhd ,,,case e_ALUOpr is --选择ALU运算,此处关键修改了位数,逻辑功效不变 when aluAdd => ALUResult := opR + opS; tempV := ((not opR(7))and(not opS(7))and ALUResult(7)) or (opR(7)and opS(7)and (not ALUResult(7))); when aluSub => ALUResult := opR - opS; tempV := ( opS(7)and(not opR(7))and (not ALUResult(7))) or ((NOT opS(7))and opR(7)and ALUResult(7)); when aluAnd => ALUResult := opR and opS; when aluOr => ALUResult := opR or opS; when aluXor => ALUResult := opR xor opS; when aluShl => ALUResult(7 downto 1) := opR(6 downto 0); ALUResult(0) := '0'; cx := opR(7); when aluShr => ALUResult(6 downto 0) := opR(7 downto 1); ALUResult(7) := '0'; cx := opR(0); --增加了aluMOVIalu功效选择信号及其处理实现 when aluMOVI => ALUResult := "00000"&opS(3 downto 0); when others => null; end case; 修改了alu选择信号和alu功效信号判定逻辑,和状态寄存器判定逻辑,之所以修改是因为位数修改。除此以外还增加了aluMOVIalu功效信号及其对应逻辑功效实现。 1) 代码段1,译码模块identity.vhd 新增了WriteBack:process(reset,clk) --写回模块 begin if reset='0' then --新增了初始化寄存器一步 RegArray(0) <= x"00"; RegArray(1) <= x"00"; RegArray(2) <= x"00"; RegArray(3) <= x"00"; elsif FALLING_EDGE(clk) and w_wRegEn='1' then RegArray(wRegIndex) <= w_WBData; end if; end process; Decode_Pro:process(d_IR) --修改了op码和控制信号长度 variable op : std_logic_vector(3 downto 0); variable ctrl:std_logic_vector(17 downto 0); begin op := d_IR(7 downto 4); --修改了操作码长度 --译码产生信号:SA,SB,Wrmem,wRegEn,MemToReg,ALUSrc,ALUOpr,SetFlag case op is --控制信号 when ADD => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"001"&"0000"&"001"; when SUBB => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"001"&"0001"&"001"; when ANDins => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"001"&"0010"&"001"; when CMP => ctrl:=d_IR(3 downto 0)&"10"&"0"&"1"&"001"&"0001"&"001"; --新增了MOVI指令及其译码出来控制信号 when MOVI => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"101"&"1010"&"000"; imm <= "000000"&d_IR(1 downto 0); when ORins => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"001"&"0011"&"001"; when XORins => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"001"&"0100"&"001"; when SHLIns => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"000"&"0101"&"001"; when SHRIns => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"000"&"0110"&"001"; when MOV => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"011"&"0000"&"000"; when LOAD => ctrl:=d_IR(3 downto 0)&"01"&"1"&"0"&"011"&"0000"&"000"; when STORE => ctrl:=d_IR(3 downto 0)&"00"&"0"&"1"&"000"&"0000"&"000"; when JR|JRZ|JRC => ctrl:=DoNothing; --若是JR*指令,计算offset,并向Exe插入Bubble offset<=d_IR(3)&d_IR(3)&d_IR(3)&d_IR(3)&d_IR(3 downto 0); when others => ctrl:=DoNothing; end case; 译码模块关键修改了控制信号ctrl位数,并依据“SA, SB, Wrmem, wRegEn, MemToReg, ALUSrc, ALUOpr, SetFlag”次序增加了MOVI指令控制信号,以下所表示: when MOVI => ctrl:=d_IR(3 downto 0)&"10"&"1"&"1"&"101"&"1010"&"000"; imm <= "000000"&d_IR(1 downto 0); 最终还增加了寄存器初始化。 6 测试和总结 6.1 规则文件(cpu.txt内容) 6.2测试代码 --程序1 --指令正确性测试 -- R0 R1 R2 R3 ram(0) <= MOVI & R0 & "11"; -- 3 0 0 0 ram(1) <= ADD & R0 & "01"; -- 4 0 0 0 ram(2) <= MOV & R1 & R0; -- 4 4 0 0 ram(3) <= SUBB & R1 & "11"; -- 4 1 0 0 ram(4) <= SUBB & R2 & "10"; -- 4 1 -2 0 ram(5) <= ADD & R2 & "11"; -- 4 1 1 0 ram(6) <= ORIns & R1 & R0; -- 4 4 1 0 ram(7) <= ANDIns & R1 & R2; -- 4 1 1 0 ram(8) <= XORIns & R0 & R1; -- 5 1 1 0 ram(9) <= SHLIns & R1 & "00"; -- 5 2 1 0; ram(10) <= SHRIns & R0 & "00"; -- 2 2 1 0; ram(11) <= LOAD & R0 & R2; -- R0值为ADD & R0 & "01", 即0000 00 01 ram(12) <= CMP & R0 & R1; -- CF = 1, ZF = 0 ram(13) <= JRC & "1111"; -- 跳转到15号地址 ram(14) <= MOVI & R3 & "11"; -- 假如跳转则不实施该指令 ram(15) <= STORE & R3 & R0; -- 0号地址内容变为 0000 0001 ram(16) <= MOVI & R0 & "11"; -- R0 = 3 ram(17) <= MOVI & R1 & "01"; -- R1 = 1 ram(18) <= SUBB & R0 & R1; -- R0 = R0 – R1 ram(19) <= JRZ & "1111"; -- 此处不跳 ram(20) <= JR & "0000"; --此处跳 6.3 测试结果 测试环境 测试程序 测试结果 五级流水 Quartus 程序1 正确 6.4 测试总结 试程序结果全部和预期相符,证实测试结果是正确。 7 本课程设计总结 7.1 A同学总结 因为上一学期在计算机组成原理综合性试验中担当了主力队员,对cpu基础组织结构也算是十分了解,所以该学期主动担当了组长。然而事实并没有那么简单,当第一次看到代码时发觉,因为上次综合性试验大部分经过画图连线实现,逻辑功效十分明确,一目了然,然而该学期cpu顶层实体是经过vhdl代码实现,所以早期花了不少时间在了解代码语法和逻辑功效上,完成此步以后,我们组开展了对3种相关进行具体分析。搞清楚流水CPU实现原理后,后续修改工作就十分简单了。一开始我们是采取机箱+DebugController方法进行调试,以后因为试验室机箱资源有限,便再次采取了用Quartus时序功效仿真来调试,并添加了内存模块。 7.2B同学总结 在此次课程设计中,我关键:参与修订指令系统;负责数据相关模块修改;负责译码和访存模块修改;负责MOVI指令增加,关键是在常量定义文件unitpack里增加MOVIop 码常量和aluMOVIalu功效选择信号,并在译码模块增加MOVI控制信号及相关代码;负责扩展常量定义文件。在组长组织下循序渐进,大部分不知道问题全部能够经过讨论处理。 7.3 C同学总结 在这次计算机组成原理课程设计里,我负责是:参与修订指令系统;负责结构相关模块修改;负责实施模块和写回模块修改;负责新顶层实体cpum.bdf文件接线,关键是在创建了cpuentity和memorybsf文件后,新建cpum.bdf文件并将上述两个原件加入,利用Quartus接线功效将原件连接起来。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流水 cacheCPU 实验 计算机 组成 原理 专业课程 设计方案 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文