级流水无cache cpu实验计算机组成原理 课程设计报告.docVIP

级流水无cache cpu实验计算机组成原理 课程设计报告.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
级流水无cache cpu实验计算机组成原理 课程设计报告.doc

计算机组成原理 将16位的指令系统改为8位,设计新的指令系统,并修改相应的数据通路。 修改规则文件(cpu.txt),并编写 总体 16位指令改为8位,重新编写了指令OP码。 新增了MOVI指令。由于原指令系统没有将立即数存进指定寄存器的指令,因此此处新增一条MOVI指令。指令的汇编语句为 MOVI DR, IMM 其中DR为目的寄存器,IMM为立即数。因为指令长度为8位,OP和DR共占了6位,因此IMM的大小不大于3(即二进制“00”至“11”)。 修改及删除了部分指令。此处详见5.1。 修改系统控制信号。在保持原有系统逻辑功能基本不变的情况下,修改各个模块里控制信号位数以及模块接口信号位数以和新的指令系统兼容。 增加内存模块。使用vhdl编写了一个ram模块,根据读写信号来选择读写功能。reset时将事先写好的二进制形式程序写进内存。 扩展了常量定义文件。在常量定义文件unitpack.vhd中,具体地: 新增了ALU功能选择信号常量aluMOVI。 新增了寄存器编号常量R0、R1、R2和R3。 新增了ram类型。 使用Quartus II进行功能仿真并debug。 使用bdf构造顶层实体cpum。由于新增了内存模块,而原系统是使用vhdl编写的,为了方便对接,我们使用bdf的形式将无cache流水线cpu和内存模块连接起来构造顶层实体cpum,“m”的含义是“memory”,即带内存模块的无cache流水线cpu。 重画数据通路图。我们使用了Microsoft Visio软件在原有的系统总结结构图的基础上修改并新增了部分模块,详见2。 2、系统总体结构及数据通路图 总体结构图: 数据通路图: 整个CPU由以下几个模块组成: 取指模块(IF):给出内存地址,读取指令并送入指令寄存器,为下一级准备数据。 由于PC控制模块处于取指模块中,因此控制相关的检测也置于取指模块。 译码模块(ID):读取寄存器值和指令译码。我们采取一次译码,逐级传递的方式,译出后几级流水所需的控制信号和数据(如立即数等),在每次时钟上升沿到来时送入下一级。实际上,结构相关、控制相关、数据相关的检测都可归入译码部分。考虑到“相关检测”涉及到的信号分属不同阶段以及整体结构的清晰性,我们将“相关检测”独立出来。 执行模块(Ex):完成算术逻辑运算、计算有效地址和提供数据通道。 访存模块(Ma):选择地址线的数据来源和数据线的流向。访存和取指在功能上是独立的,但CPU对外只有一条地址线和数据线的事实决定了访存和取指是相互联系的。当执行LOAD/STORE指令时,地址线由ALU送入“访存段”的值提供;取指时,则由PC提供。当写内存时,CPU内部数据送数据线;当需要读内存时,CPU往数据线送高阻。 回写模块(Wb):选择回写数据源和根据写使能信号wRegEn将数据回写到寄存器堆; HazardDetectUnit模块:检测结构相关; ForwardingUnit模块:检测数据相关。 内存模块memory,根据访存地址mem_adr和读写信号wr来控制。 3 解决各种相关用到的主要信号的分析 3.1控制相关 控制相关是指因为程序的执行方向可能改变而引起的相关。当执行跳转指令时,就会发生这种情况。除JR外,JRZ等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定。常规的也是比较简单的做法是在碰到JRX之类的跳转指令时,延迟后边流水线的进入。但我们通过分析,认为可以一点都不必延迟,通过旁路处理把控制相关转为数据相关来处理。这样处理,不必延迟,可以提高流水线的性能。按我们的方式解决控制相关需要做两项工作: 通过旁路,提供状态寄存器的值和临时状态位的值,为判断是否跳转作准备; 选择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。该信号传到执行模块中用

文档评论(0)

zhangningclb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档