- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.1动态调度指令CPU的模块设计.doc
详细设计
PAGE
PAGE II
:
动态调度流水线CPU
详细设计
(版本号V0.01)2cm(文档控制编号 宋体居中 五号字)xx-000-xxx00-1.0.0 年.月.日2
2cm
(文档控制编号 宋体居中 五号字)
xx-000-xxx00-1.0.0 年.月.日
2cm
小组成员:郭家华、李博杰、李帅
2cm(文档控制编号 宋体居中 五号字)xx-000-xxx00-1.0.0 年.月.日2cm2013年 4 月 13 日
2cm
(文档控制编号 宋体居中 五号字)
xx-000-xxx00-1.0.0 年.月.日
2cm
PAGE 1
1引言
1.1编写目的
本文档旨在为之后CPU具体实现提供框架性设计。经过各种CPU方案的仔细调查研究,其中包括程序静态调度技术,VLIW,超流水线,多发射技术,考虑课程时间限制,我组决定采用下列新的设计方案:
采用自行设计的动态指令调度算法,参考Tomasulo算法,但改动较大,设计并用verilog实现所设计CPU。
1.2课题背景
本课题为中国科学技术大学计算机体系结构课程的课程实验,意在加深学生对CPU设计的理解,并锻炼学生的动手能力。
1.3参考资料
《Computer Architecture: A Quantitive Approach》
《计算机体系结构》,胡伟武等著
课上老师提供的各种资料
2 CPU各阶段设计
2.1阶段汇总表
动态调度指令CPU
阶段名称
功能简述
Fetch Instruction
完成分支预测和取指功能
Issue
重排序指令解决指令相关并发射
Execution
实际执行指令
Commit
交付执行完毕的指令,保证精确异常
2.2 CPU设计图
图
2.3阶段命名规则
根据《Computer Architecture: A Quantitive Approach》中的命名规范命名。
2.4 各阶段的详细功能
2.4. 1 Instruction Fetch(后简称IF)
本阶段主要完成分支预测和取指功能,主要模块由PC和IMEM(指令cache)组成,分支预测和取指功能均在PC模块中完成,下分条描述。
2.4.1.1 分支预测
对于高度流水并乱序执行的CPU来说,分支预测十分重要,缺失或糟糕的分支预测方案会导致流水线断流,造成CPU性能下降。
本次设计我组拟采用采用Gshare分支预测算法,它在龙芯2号、AMD、Intel Core处理器中被广泛采用。(参考文献:胡伟武等《计算机体系结构》,Wikipedia)
该算法使用一下两个硬件结构,其被继承在PC这个模块中:
转移模式历史表(Pattern History Table):两位饱和计数器,预测成功就加1(加到3为止),预测失败就减1(减到0为止)。如果高位为1就预测跳转,否则预测不跳转。
转移历史寄存器(Branch History Register):移位寄存器,处理器执行转移指令,就把BHR左移一位,最低位转移成功则填1,转移失败则填0,m位的BHR记录了m次转移历史。用BHR的m位值去索引2k个PHT项。
2.4.1.2 取指
此阶段的取指指令即是普通的取指指令,Mem通过PC值取出对应的指令,送入Issue阶段的指令队列中(Instruction Queue),当指令队列已满时,暂停取指。但值得说明的有以下几点:
我组的设计采用Havard结构,使用单独的指令cache,取指阶段从指令cache中取数。
取指不采用多发射等技术,一次仅取一条指令。
PC的值的默认下一个值是NPC,即PC + 4,但会被分支指令,异常,中断等改变。
2.4. 2 Issue
本阶段主要完成对指令队列中的指令进行重排序,以解决指令相关,并发射指令,当指令被发射时,将被执行的指令已获得所有操作数的值,不存在相关问题。本阶段的模块主要由指令队列(Instruction Queue,后简称IQ)、Read Operand模块(后简称RO)、寄存器文件(Register File,后简称RF)和commit阶段的Reoder Buffer(后简称ROB)组成,ROB的功能在commit阶段描述,此处仅描述其在issue阶段起到的作用。IQ根据RF和ROB给出的反馈信息,完成上述所有功能,下进行详细描述:
IQ为FIFO队列,存在一定数目的表项,具体数目在实现完成时根据实际情况确定。IF阶段的指令被取得后被放入IQ中。
表项内容的格式如下:
Issued(是否已发射)
Dep1(操作数一是否可获取)
Dep2(操作数二是否可获取)
指令
IQ完成对先IQ中的所有指令进行重排序,从而达到减少指令执行过程中等待周期数目的目
文档评论(0)