基于DLX指令集的5级流水线CPU设计与实现..doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于DLX指令集的5级流水线CPU设计与实现 TOC \o 1-3 \h \z \u HYPERLINK \l _Toc349654638 一、渊源 PAGEREF _Toc349654638 \h 1 HYPERLINK \l _Toc349654639 二、基础 PAGEREF _Toc349654639 \h 2 HYPERLINK \l _Toc349654640 1、从系统角度和程序执行角度体会CPU概貌 PAGEREF _Toc349654640 \h 2 HYPERLINK \l _Toc349654641 2、CPU设计的重点:指令集和流水线,指令集就是协议 PAGEREF _Toc349654641 \h 3 HYPERLINK \l _Toc349654642 3、流水线—20世纪最伟大的发明 PAGEREF _Toc349654642 \h 10 HYPERLINK \l _Toc349654643 4、流水线带来的烦恼—相关 PAGEREF _Toc349654643 \h 16 HYPERLINK \l _Toc349654644 5、流水线结构的颠覆:记分牌与tomasulo算法(与设计无关) PAGEREF _Toc349654644 \h 21 HYPERLINK \l _Toc349654645 三、设计与实现 PAGEREF _Toc349654645 \h 26 一、渊源 诞生于1977年的英特尔8086以现在微电子专业本科生的水平完全可以做出来,龙芯的负责人胡伟武的毕业设计作品就是8086CPU。 我们学过的大三的时候看了《编码》后觉得比较有感觉就写了一篇文章叫作《从零开始构建一台计算机》,主要说了一下对编码思想的理解,只记得当时心情相当激动,好像二进制世界刚刚向我打开。很重要的一部分是以自己的理解说了一下CPU与接口的相互作用关系,这是因为那时与单片机正打得火热。当时对于CPU的理解几乎为零,所以一笔带过了CPU的构造与工作原理,骗自己说那是非常复杂的东西,一直把它奉作系统大脑,却从不知道它到底是什么。但对CPU原理的理解对于写出高效的程序是很关键的。上个学期,一个“神童”级的人物出现了,王超。这个感觉还不如我们年龄大的科大博士后,教我们《现代微处理器体系结构》,不得不说收获很大,对如何设计、实现、测试、分析、评估、优化一个CPU有了比较清晰的认识。考试完之后一直想整理整理,一直懒得动,这项任务像一块石头一样堵在心口,现在我想好好写写,作为上个学期的真正结束。基础部分主要是之前课上课下的的笔记,实现部分主要是实验室老大单麾扬的杰作,他用了两天时间在modelsim下用verlog语言编写了整个工程,这个西工大的哥哥,真是各种令人折服。 二、基础 1、从系统角度和程序执行角度体会CPU概貌 我们沿用至今的冯诺依曼提出的计算机系统硬件结构:运算器、控制器、存储器、输入设备、输出设备。其中运算器和控制器从功能角度来说就是中央处理单元CPU。存储器指的是内存,即RAM,如果是哈佛结构则代码空间和数据空间是隔离的。若是冯诺依曼结构则是代码和数据混合存储哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。而冯诺依曼结构实现起来简单而且成本较低。我们的设计用的是哈佛结构。CPU就像是输入与输出之间的一个黑盒子,这个黑盒子实现了编制的算法,对输入进行运算,并输出。 从程序的执行流程更能体会出CPU的角色,高级语言(如C或Java)写的程序经编译器(*.c-*.s),汇编器(*.s-*.o),链接器(*.o-*.elf),生成了可执行文件,生成的可执行文件放到内存里。 一句C语言编译成汇编语言的举例: c=a+b; LD R1,8000 ;a LD R2,8001 ;b ADD R3,R1,R2 SD R3,8003 ;C 对于不同的CPU,认识的指令不同,助记符也不同,上面是随意举例。汇编器将助记符变成二进制代码时,将会根据指令集的格式要求变成由操作码和操作数组成的01序列,CPU对操作码进行译码就知道该做些什么事情(逻辑电路部分开关决定功能流向)。在进行会变运行时,CPU从内存中取指令、取数据,进行取指、译码、执行(计算、访存)、写回等操作,I/O访问内存,将信息读出,显示给用户。可以看出CPU的能力,就是访存和计算(加法,减法可以用加法实现,乘法可以分成加法,除法同理)所以数据交换和计算配合专用外围功能模块就可以实现多姿多彩的计算机世界。纵观CPU的发展: 1971年:4004,4位CPU,,2300个晶体管,46条指令,4004+RAM+ROM+寄存器芯片=第一台微型计算机。 1972年:8008

文档评论(0)

586334000 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档