基于fpga的开放式cpu设计的毕业设计内容摘要:

上操作数的指令,其中两个分别给出源操作数和目的操作数的地址,第三个操作数用于指出保存本次运算结果的去处。 在有些性能更高的计算机中,还有使用更多操作数的指令,用于完成对一批数据的处理过程,如字符串复制指令和矩阵运算指令等。 上述 4 种情况中的前 3 种,由于其指令字长可以相对较短,执行速度较高,计算机硬件结构可以相对简单等优点,在各种不同的计算机中被广泛应用;相对而言,多操作 数指令用在字长较长的大中型计算机中。 从简化硬件与系统本身的功能考虑,系统安排前 3 种情况的指令系统。 ( 3 )指令的功能分类 常用的指令分类是按照功能进行的,大致有以下几种: 本科生毕业设计(论文) 9 ① 算术与逻辑运算指令。 是每台计算机都必须具有的指令,用于运算器部件完成对一或两个数据的算数运算和逻辑运算。 ② 移位指令。 包括算术移位、逻辑移位和循环移位 3 种,用于对指定的操作数左移或右移。 从实用的角度, ③ 数据传送指令。 用于实现寄存器之间、寄存器与内存储器存储单元之间、寄存器与外围设备、内存储 器不同存储单元之间的数据传送。 从内存储器和外围设备(接口)操作性质的不同,又区分为读和写两种操作,指明数据传送的方向。 ④转移指令、子程序调用于返回指令。 用于解决变动程序中指令执行次序的需求。 转移指令分为条件转移和五条件转移两种,在改变执行次序之后不设计再次转回的问题,而子程序调用于返回指令在子程序运行结束后转移到子程序调用指令之后的那条指令后继续执行。 ⑤ 其他指令。 如中断指令,堆栈指令、端口出入指令等等。 注意:不同的人对指令的功能划分的标准并不完全相同,其分类结果也有所差异。 这里从系统的需要出 发,基本上就设置了以上功能的指令。 指令寻址方式的确定 寻址方式解决的是如何在指令中表示一个操作数地址的问题。 指令的操作数地址通常被称为形式地址,用这些形式地址并结合某些规则,可以计算出操作数在存储器中存储单元的地址,这种地址被称之为物理地址或有效地址。 计算机中的寻址方式有以下几种: ( l )立即数寻址。 参与运算操作数包含在指令字节中。 操作数以指令字节的形式存放于内存中。 如: MOVA , 12 ( 2 )寄存器寻址。 以寄存器的内容作为操作数,如: MOVA , R0 ,这种寻址包括累加器寻址,又如: INA。 ( 3 )寄存器间接寻址。 以寄存器的内容作为操作数所在的存储器地址。 如:MOVA , RO ,把 R0 的内容所指的内存地址作为操作数。 ( 4 )直接寻址。 指令中含有操作数的直接地址,与该地址对应存储器单元的内容为操作数。 如: LDA 34H。 将地址为 34H 的内存单元值送到累加器中。 这四种寻址方式是一般计算机系统常用的寻址方式,当然不同的机型可能还用到其它的寻址方式,如 51 系统用到基寄存器加变址寄存器间接寻址。 本系统由于采用 32 位字长,以上四种寻址方式 简单够用。 指令系统的确定 合理地确定一台计算机的指令系统关系到计算机设计与实现的复杂程度和生产成本以及使用的难易程度和运行效率,因此,评价一台计算机的指令系统的优劣应综合考虑,主要有以下几方面 : ( l )尽可能小的指令集。 指令数目要适当减少,较短的指令格式,简化的本科生毕业设计(论文) 10 寻址方式,单字指令为主,每条指令的功能要尽可能地简单,给出的指令集合,只要能够支撑所设计的计算机按目标运行便可。 ( 2 )较好的完备性和典型性。 指令集应有一定的完备性和较好的典型性,常用指令应齐全,指令格式应规 范,分类应合理。 指令执行步骤容易理解,符合人们通常的编程使用习惯。 ( 3 )更高的可扩充性。 为添加各种新的指令留下较为充足的余地,包括每一类指令都保有几条可扩充。 事实上,同时满足上述原则是困难的,但是参考这些原则可以设计出更加合理的指令系统。 设计指令系统的核心问题是选定指令的格式和功能。 指令的格式与计算机的字长、期望的存储器容量和读写方式、计算机硬件结构的复杂程度和追求的运算性能有关。 根据指令系统的综合指标, 本系统采用 RISC 指令系统。 RISC,即精简指令集计算机,其设计思想是 尽量降低计算机指令的数量及复杂性,简化寻址方式。 R ISC 处理器设计的指令集既能使流水线处理器有效执行,又能使编译器优化代码的生成。 RISC 的特征有: ( 1 )一个周期执行一条指令; ( 2 )固定指令长度; ( 3 )访问内存只能使用 Load 和 Store 两条指令; ( 4 )简化寻址方式; ( 5 )更少且更简单的操作; ( 6 )延迟加载和分支语句; ( 7 )提前读取与猜测执行; ( 8 )编译器负责优化程序。 从 20 世纪 80 年代中期开始,出现了多种 RISC 体系结构的微处理器,比如MIPS 公司的 R3000 / R10000 , SUN 公司的 SPARC , IBM / Motorola / Apple 公司的 PowerPC , DEC 公司的 Alpha21264 , ARM 公司的 ARM7 等。 每一代 RISC 微处理器的出现,无不带来速度的大大提升。 目前, R ISC 微处理器已广泛应用于高端服务器和嵌入式领域。 指令集结构指的是处理器执行操作集合的设计 , 包括编程模型的选择及寄存器的数目、数据的寻址方式和采用定长还 是变长的指令编码机制等。 由于这不是本文的重点,我们只简要地介绍一下本文 RISC 微处理器指令集结构的特点。 本 RISC 采用 Load Store 结构,只有 Load / store 类指令才可以访问数据存储器子系统。 这在简化了指令集的同时也简化了 RISC CPU 中控制单元的设计。 在本RISC 中用到了以下四种寻址方式:立即寻址、寄存器寻址、基址寄存器寻址和相对寻址。 本 RISC 采用定长指令集编码,也就是说它采用相同的位数来编码指令集结构中每一条指令。 定长编码机制的优点在于指令译码比较简单,它在简 化指令译本科生毕业设计(论文) 11 码逻辑的同时减少了译码逻辑的延迟。 同时微处理器能更容易地预测下一条将被执行的非转移指令的位置,这使得能更容易地使用流水线来改善微处理器的性能 本 32 位 RISC CPU 采用通用寄存器结构。 在通用寄存器结构中,指令从随机访问寄存器堆中读出其操作数并将指令执行结果回写到寄存器堆中。 通用寄存器堆允许指令通过指定寄存器编号以任意次序来访问寄存器,并且读出寄存器内容时不改变寄存器值。 其示意图如下所示: 图 31 RISC CPU 系统 具体的指令译码可以根据 自己功能的需求输入到存储模块中,以便进 行译码和控制操作。 运算器 设计 及实现 运算器的基本功能 运算器的基本组成与结构 运算器是计算机的数据加工部件。 其功能主要有以下几种: ( l )完成对数值数据的算术运算和逻辑运算。 由其内部的 ALU 承担,它在给出运算结果的同时还给出结果的某些特征,如溢出否,有无进位,结果是否为零、为负等等。 ( 2 )暂存参加运算的数据和中间结果。 由其内部的一组寄存器承担。 ( 3 )作为处理机内部数据传输的通路。 运算器要与计算机其他几个功能部件协同运行,须有接收外部数据输入和内部运算结 果输出的逻辑电路。 了解了运算器的功能之后,对其组成模块进行初步的划分: ( 1 ) ALU 实现基本的算术、逻辑运算。 ( 2 )寄存器组提供操作数与暂存结果的。 ( 3 )标志寄存器存储有关的判别逻辑与控制信号。 将这些功能模块连接成一个整体,便构成一个运算器。 对于这样的一个运算器 ,最主要的问题就是如何向 ALU 提供操作数。 这里有两种方案: 本科生毕业设计(论文) 12 ( 1 ) ALU 输入端+多路选择器 各寄存器可以独立、多路地将数据送至 ALU 的多路选择器,使 ALU 有选择地同时获得两路输入数据。 运算器的内部总线是一组单向传 输的数据线,他将运算结果送往各寄存器,由寄存器的同步打入脉冲将内部总线上的数据送入寄存器,如果同时发几个打入脉冲,则可将总线上的同一数据同时送入几个相关的寄存器。 ( 2 ) ALU 输入端+一级锁存器 运算器的内部总线是一组双向传输的数据线,为了进行双操作数之间的运算操作, ALU 输入端前设置了一级锁存器,可暂存操作数。 如,可通过内部总线先将 寄存器 中的数据送入锁存器 1 ,再通过内部总线将 寄存器 中的数据送入锁存器2 ,然后相加并将结果经总线送入 目标寄存器。 这里要注意一点:运算器的内部总线是 CPU 的内部数据 通路,因此只有数据线。 移位器实质上是一个多路开关,它利用输出逻辑对 ALU 的结果进行功能选择,如移位或直接传送,有时候根据总线模式也可以不用。 根据以上两种方案比较,一般来说,采取双向总线结构比较方便,选择方案 2 的方式向 ALU 提供操作数。 运算器的内部总线确定 运算器的内部总线是 CPU 的内部数据通路,因此只有数据线,但是按照数据传输的通路大体上又可划分为三种结构: ( l )单总线结构运算器 这种结构的运算器实现一次双操作数的运算要分成三步,他的主要缺点是操作速度慢。 ( 2 )双总线结构运算器 这种结构的运算器,两个操作数可以分别通过两条总线同时送到 ALU 去进行运算,并且立即可以得到运算的结果。 但是 ALU 的输出不能直接送到总线上去,这是因为此时两条总线都被操作数所占据着,所以必须在 ALU 的输出端设置一个缓冲器,先将结果送入缓冲器,第二步再把结果送至目的寄存器。 显然,他的执行速度比单总线要快,每次操作比单总线少一步,但是由于增加了硬件,控制也变得复杂。 ( 3 )三总线结构运算器 这种结构的运算器, ALU 的两个输入端分别由两条总线供给,输出与第三条总线相连,这样算数与逻辑运算操作可以在一步之内完成。 如果某一个数不需要运算和修改,而需要直接的总线传送,可通过总线旁路器把数据送出,而不必借助于 ALU。 三总线结构的特点是操作速度快,但结构与控制更为复杂。 根据以上的分析与比较,并结合课题的要求,由于系统对速度的要求并不高,而结构与控制又需简单明了,综合起来运算器采用带输入锁存器的单总线结构。 本科生毕业设计(论文) 13 ALU 的相关指令 ALU 指令可分为 4 类:逻辑运算指令、算术运算指令、移位指令 和比较指令。 逻辑运算指令包括寄存器操作类型和立即数操作类型。 寄存器操作类型是对两个寄存器中的内容进行逻辑运算,结果存入寄存器中,如 AND 、 OR 、 XOR 和 NOR 等;立即数操作类型是对寄存器的内容和 32 位扩展立即数进行逻辑运算,结果存入寄存器,如 ANDI 、 ORI 、 XORI 和 NORI 等。 算术运算指令与逻辑运算指令类似,不同的是算术运算指令还包含了有符号数和无符号数。 ADD 、 ADDI 和 SUB 表示参与运算的是有符号数,立即数进行符号扩展;ADDU 、 ADDIU 和 SUBU 表示参与运 算的是无符号数,立即数进行无符号扩展。 移位指令包括左移指令和右移指令 SLL 、 SRA 、 SRAV 、 SRL 和 SRLV 等。 SLL逻辑左移,指令为将寄存器 rt 中的数据左移 Sa 位,低位补 O ,结果存入寄存器rd 中。 SLLV 变量逻辑左移,指令格式为 SLLV rd , rt , rs。 将寄存器中 rt 中的数据左移,低位补 0 ,移位数由寄存器 rs 低 5 位确定,结果存入寄存器 rd 中。 逻辑右移指令与逻辑左移指令相似,在此不再详述。 SRL、 SRLV 指令格式为 SRL rd , rt , sa。 SRLV rd , rt , rs。 SRA 算术右移,指令格式为 SRA rd , rt , Sa。 寄存器 rt 中的数据右移 Sa 位,高位进行符号扩展,结果存入寄存器 rd 中。 SRAV变量算术右移,指令格式为 SRAV rd , rt , rs。 寄存器 rt 中的数据右移,移位数由寄存器 rs 的低五位决定,高位进行符号扩展,结果存入寄存器 rd 中。 比较指令比较两个数的大小,以 1 和 0 标识。 比较指令同样涉及寄存器类型和立即数类型,有符号数和无符号数。 包括 4 条指令: SLT、 SLTU 、和 SLTIU。 SLT 的指令格式为 SLT rd , rt , rs。 寄存器 rt 和 rs 中均为有符号数,如果rs 中的数小于 rt 中的数,那么结果为 1 否则为 0,结果存入目的寄存器 rd 中。 SLTI 的指令格式为 SLTI rd , rs , intimidate。 16 位立即数 intimidate 经符号扩展为 32 位,如果 rs 中的数小于立即数,那么结果为 1 ,否则为 O ,结果存入目的寄存器 rd 中。 SLTU 和 SLTIU 与前两者类似,不同的是 SLTU 和 SLTIU 是对无符号数进行操作。 还有其他具体指令,这里不 再详细说明,所有指令均在图 32 中给予列出。 本科生毕业设计(论文) 14。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。