基于risc的32位流水线cpu设计内容摘要:

以 和微程序存储相比,不再比后者慢 510 倍了,同时,存储容量也有了很大的提高,因此,所谓存储效率已不再是体系结构设计时要考虑的重要标准了。 2.现有的一些著名计算机指令系统过于复杂,有些微码多达 400kb,使得微程序设计相当困难而难以调试。 3.在微码型计算机中很难做到一条指令的执行接近于一个微周期,平均来说需要 34 个微周期,而很多程序中的一些简单指令实际上只与一条微周期北京理工大学本科生毕业设计(论文) 3 操作相当,若不采用微周期,反而能大大改进效率。 4.根据 20%80%定律,一个指令系统中大约 20%的指令是程序中经常反复使用的,其使用量 大约占到整个程序的 80%,而该指令系统中大约 80%的指令时很少用到的,其使用量只占整个程序的 20%。 5. VLSI 进展带来的影响使得需要重新考虑系统设计硬件与软件的折中,试验表明,采用精简的指令集在不显著降低执行效率的情况下(不多于 20%),可以简化设计规模 510倍。 RISC 微处理器 RISC( Reduced Instruction Set Computer)即 精简指令系统计算机的中心思想是简化硬件设计硬件只执行很有限的最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术由简单指令合成。 RISC 出现的结果是用相对少的晶体管可设计出极快的微处理器。 RISC微处理器具有以下几个特征 : 1.简化的指令集 (1)大多数指令是单周期完成的,指令系统中的绝大部分指令只执行一些简单和基本的功能,这些指令可以较快的在单周期内执行完毕,并使指令的译码和解释开销减少。 (2)采用硬布线控制逻辑,可以使大多数指令在单周期执行完毕,并减少微码技术中的指令解释开销。 以往,微码控制部件往往占去 VLSI芯片面积的50%60%,节省微码器件的空间可以用于制作较大的寄存器堆。 典型的 RISC中都采用大量的寄存器,使大部 分指令操作都在寄存器之间进行,从而提高了处理速度。 (3)较少的指令数和寻址方式,从而有利于控制单元的简化和执行速度的加快指令格式尽量简单规范,使指令的译码逻辑电路简化,从而也使控制部件速度加快。 2.面向寄存器堆的结构 过去传统的设计思想中,从提高“存储效率”出发,设置很多存储器 存储器操作指令,然而,存储器与 CPU之间需要进行板级通信,较之 CPU内部寄存器间的芯片级通信,其速度要低得多,因此,面向存储器意味着绝大多数运算北京理工大学本科生毕业设计(论文) 4 只在寄存器之间完成,与外界存储器的通信只保留 Load/Store两组指令,达到了凡是 ALU执行部件中所用的操作数都是已经放在寄存器中的寄存器操作数的目的,从而有效地减少存储器的访问时间。 3.充分提高流水线的效率 虽然流水线不是 RISC的专利, RISC处理器也并不一定是流水的。 但 RISC处理器要提高性能,基本指令要做到一个机器周期内完成,必须采用流水线技术。 这样才可以充分利用 CPU内部器件的并行性。 而传统的流水线技术面临着指令长度不同,执行周期不一,资源争用问题以及转移跳转难以控制等困难,RISC流水线则有所不同。 RISC的指令格式长度统一,使得更容易用简单的流水线结构来处理。 分支延迟槽的 引入使得分支跳转更加容易控制。 当然,它也同样面临着相邻指令间结构相关性的问题,不可避免地影响执行的流畅性。 用编译时间换取运行时间的高效率。 RISC指令集的简化虽可以使硬件复杂性降低,但也导致了编译后代码的长度较长。 RISC技术强调编译优化技术,即编译初步生成的代码要重新加以组合,调度指令的执行次序,尽量少的存储器访问操作,以及转移时插入与转移无关的语句,发挥其流水并行化的特点,从而使执行效率提高。 一般来说 RISC处理器比同等的 CISC处理器要快 50%至 75% 同时由于 RISC处理器结构 的简单,使得更容易设计和纠错。 MIPS 处理器 MIPS(Microprocessor without interlocked piped stages)是 高效 的RISC 体系结构中最优雅的一种体系结构,其中文意思为 “ 无内部互锁流水级的微处理器 ” , 其机制是尽量利用软件办法避免流水线中的数据相关问题。 它最早是在 80年代初期由斯坦福 (Stanford)大学 Hennessy教授领导的研究小组研制出来的。 MIPS 公司的 R 系列就是在此基础上开发的 RISC 工业产品的微处理器。 这些系列产品为很多计算机公司采用构 成各种工作站和计算机系统。 MIPS 总能在每代处理器设计时保持最简洁的设计,同时获得最快的速度。 1986 年推出 R2020 处理器, 1988 年推出 R3000 处理器, 1991 年推出第一款 64位商用微处理器 R4000。 之后,又陆续推出 R8000(于 1994 年 )、 R10000(于 1996北京理工大学本科生毕业设计(论文) 5 年 )和 R12020(于 1997 年 )等型号。 1999 年, MIPS 公司发布 MIPS 32 和 MIPS 64架构标准。 2020 年, MIPS 公司发布了针对 MIPS 32 4Kc 的新版本以及未来 64位 MIPS 64 20Kc 处理器内核。 MIPS 的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系 MIPS I、 MIPS II、 MIPS III、 MIPS IV 到 MIPS V,嵌入式指令体系 MIPS1MIPS32 到 MIPS64 的发展已经十分成熟。 在设计理念上 MIPS 强调软硬件协同提高性能,同时简化硬件设计。 我 国 的 龙芯 2E 和前代产品采用的都是 64 位 MIPS 指令架构,索尼 PS2 游戏机所用的“ Emotion Engine”也采用 MIPS 指令,这些 MIPS 处理器的性能都非常强劲,而龙芯 2E 也属于这个阵营,在软件方面与上述产品完全兼容。 本文第二章结尾处将对龙芯 2E 的基本结构作简要的探讨。 本设计的处理器 本设计 基于 MIPS 的 32 位流水线架构,设计过程中力图尽可能的遵循原有的 MIPS CPU 的功能和指令集,基本做到与 MIPS III 指令集 的 兼容。 本 CPU具有如下特点: 1. 具有完整的五级 流水线架构,采用独立的 32 位的数据总线和地址总线,数据存储器兼容 8 位和 16位数据宽度; 2. 采用 MIPS 指令集,兼容 50 余条常用指令; 3. 提供了有符号和无符号的乘法、除法的硬件处理机制; 4. 实现了可屏蔽的外部中断和指令溢出例外; 5. 提 供了分支延迟槽机制和无延迟跳转网络; 6. 采用数据前推技术解决大部分数据相关问题; 7. 提供了完整的开发工具,包括自主开发的汇编集成开发环境,可以通过汇编语言进行快速开发。 小结 本章简述了 CPU 的各大分类及其性能差异,介绍了 MIPS 的发展情况和优点,简述了本设计的 CPU 的实现要点。 在以后的章节中,将进一步阐述 MIPS处理器结构与技术,以及其实现方法。 北京理工大学本科生毕业设计(论文) 6 第 2 章 MIPS 处理器结构与技术 MIPS 指令集简介 MIPS 指令集具有以下特点。 ① 简单的 LOAD /STORE 结构。 所有的计 算类型的指令均从寄存器堆中读取数据并把结果写入寄存器堆中。 只有 LOAD 和 STORE 指令访问存储器。 ② 易于流水线 CPU 的设计。 MIPS 指令集的指令格式非常规整,所有的指令均为 32 位,而且指令操作码在固定的位置上。 ③ 易于编译器的开发。 一般地讲,编译器在编译高级语言程序时,很难用到复杂的指令。 MIPS 指令的寻址方式非常简单,每条指令的操作也非常简单。 本 CPU 是 MIPS 指令集的兼容体系,实现了除协处理器外的大部分 MIPS 指令。 包括 10条寄存器运算指令, 8 条移位指令, 6 条乘除法专用指令, 7 条立即数计算指 令, 8 条存储器操作指令, 6 条条件跳转指令, 4 条无条件跳转指令, 2 条其他指令和 5 条伪指令。 设计采用的寄存器结构采用标准的 32位寄存器堆,共 32 个寄存器,标号为 031。 其中第 0 寄存器永远为全 0,第 31 寄存器是跳转链接地址寄存器。 它在链接型跳转指令下会自动存入返回地址值。 对于其它寄存器,可由软件自由控制。 在 MIPS 的规范使用方法中,各寄存器的含义 规定 见表 21。 [1] 表 21 寄存器堆使用规范 寄存器编号 助记符 用途 $0 zero 常数 0 $1 at 汇编暂存寄存器 $2 $3 v0,v1 表达 式结果或子程序返回值 $4$7 a0a3 过程调用的前几个参数 $8$15 t0t7 临时变量,过程调用时不需要恢复 $16$23 s0s7 临时变量,过程调用时需要恢复 $24 $25 t8 t9 临时变量,过程调用时不需要恢复 $26 $27 k0 k1 保留给操作系统,通常被中断或例外用来保存参数 $28 gp 全局指针 $29 sp 堆栈指针 北京理工大学本科生毕业设计(论文) 7 $30 s8/fp 第 9 寄存器变量,过程调用时作为帧指针 $31 ra 过程返回地址 在数据类型上,本设计只支持整数类型,包 括 8 位字节, 16 位半字和 32位字。 由于在指令上具有半字和字节读写支持,因此可以精确的获取和存储 8位和 16 位宽度的数据。 在本 CPU 所支持的 MIPS 的指令 中 格式有 3 种, 分别为 R 型、 I 型和 J 型。  R( register)类型的指令从寄存器堆中读取两个源操作数,计算结果写回寄存器堆 ;  I( immediate)类型的指令使用一个 16位的立即数作为一个源操作数 ;  J( jump)类型的指令使用一个 26 位立即数作为跳转的目标地址( targetaddress)。 表 22 MIPS 指令格式表 指令格式中的 OP( OPeration)是指令操作码 , RS( Register Source)是源操作数的寄存器号 , RD( Register Destination)是目的寄存器号 , RT( Register Target)既可为源寄存器号,又可为目的寄存器号,由具体的指令决定。 FUNC( function)可被认为是扩展的操作码。 SA( Shift Amount)由移位指令使用,定义移位位数。 Immediate 是 16 位立即数,使用之前由指令进行 0 扩展或符号扩展。 26 位 Target 由 JUMP 指令使用,用于产生跳转的目标地址。 在 I 类 型指令中, 16 位的立即数需要被扩展成 32位数据。 扩展的方法有两种:符号扩展和 0 扩展。 符号扩展是把高 16位置成与 16 位立即数最高位相同的值,即保持数据的符号不变。 例如, 16 位全 1 的立即数表示 1,符号扩OP RS RT RD SA FUNC OP RS RT Immediate OP Target R 型 I 型 J 型 31 26 25 21 20 16 15 11 10 6 5 0 6 位 5 位 5 位 5 位 5 位 6 位 北京理工大学本科生毕业设计(论文) 8 展后仍是 1。 因此,在有符号数据的运算中 ,均对立即数进行符号扩展。 0扩展比较简单:高 16 位总是全 0。 MIPS 逻辑运算指令对立即数进行 0 扩展。 MIPS 的寻址方式有以下几种: ( 1)寄存器寻址 ——— 操作数在寄存器堆中。 ( 2)立即数寻址 ——— 操作数是一个常数,包含在指令中。 ( 3)基址偏移量寻址 ——— 操作 数在存储器中,存储器地址由一个寄存器的内容与指令中的常数相加得到。 ( 4) PC 相对寻址 ——— 转移指令计算转移地址时使用。 PC 的相对值是指令中的一个常数。 ( 5)伪直接寻址 ——— 跳转指令形成转移地址时使用。 指令中的 26位目标地址值与 PC 的高 4 位拼接,形成 30 位的存储器 “ 字地址 ”。 本设计中实现的 MIPS 指令 详细内容如下: [1518] ( 1) 算术运算 表 23 算术运算指令 序号 助记符 功能 类型 FUNC 1 ADD rd,rs,rt 加法(有溢出中断) R型 32 2 ADDU rd,rs,rt 无符号加法 33 3 AND rd,rs,rt 位与 36 4 NOR rd,rs,rt 位异或 39 5 OR rd,rs,rt 位或 37 6 SLT rd,rs,rt AB 判断 42 7 SLTU rd,rs,rt 无符号 AB判断 43 8 SUB rd,rs,rt 减法(有溢出中断) 34 9 SUBU rd,rs,rt 无符号减法 35 10 XOR rd,rs,rt 位同或 38 例如,把下面的表达式编译为 MIPS 指令: a=b+c 变量 a,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。