第二章 指令系统的设计

第二章 指令系统的设计

链接:https://pan.baidu.com/s/1WyftXZzso0_ePWaMDDCUPw
提取码:hu2b

2.1 指令系统结构的分类

CPU中用来存放操作数的存储单元主要有三种:堆栈,累加器,通用寄存器组

在通用寄存器结构中,根据操作数的来源不同,又可以进一步分为寄存器-存储器型结构(简称RM结构)和寄存器-寄存器型结构(RR结构),在RR结构中只有load和store指令能够访问寄存器,所以也称为load-store结构。

在这里插入图片描述

虽然早期的大多数计算机都是采用堆栈型结构或者累加器型结构的指令系统,但自从1980年以后,大多数计算机都采用了通用寄存器型结构,通用寄存器型结构哎灵活性和提高性能方面有明显的优势,主要体现在:

  1. 寄存器的访问速度比存储器快得多
  2. 对编译器而言,能更加容易,有效地分配和使用寄存器。
  3. 寄存器可以用来存放变量。
指令集结构类型优点缺点
寄存器一寄存器型(o.3)指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大
寄存器一存储器型(1,2)可以在ALU指令中直接对存储器操作数进行引用,而不必先用load指令进行加裁。容易对指令进行编码,日标代码比较紧凑由于有一个操作数的内容将被破坏,所以指令的两个操作数不对称。在一条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。指令的执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较人
存储器一存储器型(2,2)或(3.3)目标代码最紧凑,不需要设置寄存器来保存变量指令字长变化很大,特别是3操作数指令。而且每条指令完成的工作也差别很大。对存储器的频繁访问会使存储器成为瓶颈。这种类型的指令系统现在已不用了

2.2 寻址方式

一种指令集结构如何确定所要访问的数据的地址?

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

采用多种寻址方式能够显著地减少指令条数,但可能增加计算机的实现复杂度以及指令的CPI。

立即数寻址方式和偏移寻址方式的使用频率最高。

2.3 指令系统的设计和优化

1.指令集结构的功能设计,确定哪些基本功能应该由硬件实现,那些功能由软件实现比较合适。

2.在确定那些基本功能由硬件实现时,主要考虑三个因素:速度,成本,灵活性

  • 硬件实现的特点

    速度快,成本高,灵活性差

  • 软件实现的特点

    速度慢,价格便宜,灵活性好

3.对指令集的基本要求 :完整性,高效性,正交性,规整性,兼容性

  • 完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令系统所提供的指令足够使用。
  • 规整性:主要包括对称性和均匀性。
  • 正交性:在指令中各个不同含义的字段,如操作类型、数据类型、寻址方式字段等,在编码时应互不相关、相互独立。
  • 高效率:指指令的执行速度快、使用频度高。
  • 兼容性:主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。

在设计指令系统时,有两种截然不同的设计策略:

  • CISC(复杂指令系统计算机)
    • 增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。
  • RISC(精简指令系统计算机)
    • 尽可能地把指令系统简化,不仅指令的条数少,而且指令的功能也比较简单。

控制指令:

  1. 控制指令是用来改变控制流的
    • 跳转:当指令是无条件改变控制流时,称之为跳转指令。
    • 分支:当控制指令是有条件改变控制流时,则称之为分支指令。
  2. 能够改变控制流的分支:分支、跳转、过程调用、过程返回。
  3. 控制指令的使用频度(load-store型指令集结构的机器,基准程序为SPEC CPU2000)

在这里插入图片描述

5.转移目标地址的表示

  • 最常用的方法

    在指令中提供一个偏移量,由该偏移量和程序计数器PC的值相加而得出目标地址。(PC相对寻址)

  • 优点

    • 有效的减少表示该目标地址所需要的位数。
    • 位置无关(代码可被装载到主存的任意位置执行)。
  • 关键:确定偏移量字段的长度

    • 模拟结果表明:4-8位的偏移量字段(以指令字为单位)就能表示大多数控制指令的转移目标地址了。

6.过程调用和返回

2.4 指令系统的发展和改进

2.4.1 沿CISC方向发展和改进指令

1.面向目标程序增强指令功能

  • 增强运算型指令的功能
  • 增强数据传送指令的功能
  • 增强程序控制指令的功能

2.面向高级语言的优化实现来改进指令系统

3.面向操作系统的优化实现改进指令系统

2.4.2 沿RISC方向发展和改进指令

设计RISC机器遵循的原则 :

  • 指令条数少、指令功能简单。只选取使用频度很高的指令,在此基础上补充一些最有用的指令;
  • 采用简单而又统一的指令格式,并减少寻址方式;指令字长都为32位或64位;
  • 指令的执行在单个机器周期内完成;(采用流水线机制)
  • 只有load和store指令才能访问存储器,其它指令的操作都是在寄存器之间进行;(即采用load-store结构)
  • 大多数指令都采用硬连逻辑来实现;
  • 强调优化编译器的作用,为高级语言程序生成优化的代码;
  • 充分利用流水技术来提高性能。

2.5 操作数的类型和大小

  • 数据表示:计算机硬件能够直接识别、指令系统可以直接调用的数据类型。
  • 数据结构:由软件进行处理和实现的各种数据类型。

操作数的大小:操作数的位数或字节数。主要的大小:字节(8位)、半字(16位)、字(32位)、和双字(64位)。

2.6 指令格式的设计

1. 指令由两部分组成: 操作码, 地址码

2.指令格式的设计:确定指令字的编码方式,包括操作码字段和地址码字段的编码和表示方式。

3.操作码的编码比较简单和直观

  • Huffman编码法:减少操作码的平均位数,但所获得编码是变长的,不规整,不利于硬件处理

  • 固定长度的操作码

    • 保证操作码的编译速度。

4.两种表示寻址方式的方法

在这里插入图片描述
在这里插入图片描述

2.7 MIPS指令系统结构

2.7.1MIPS的寄存器

  • 32个64位通用寄存器(GPRs)R0,R1,…,R31,也称为整数寄存器,R0的值永远是0。
  • 32个64位浮点数寄存器(FPRs)F0,F1,…,F31,用来存放32个单精度浮点数(32位)或个双精度浮点数(64位)。存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。
  • 浮点状态寄存器:用来保存有关浮点操作结果的信息。

2.7.2 MIPS的数据表示

整数(字节(8位)、半字(16位)、字(32位)、双字(64位))、浮点数(单精度浮点数(32位)、双精度浮点数(64位))。

2.7.5 MIPS的操作

MIPS指令可以分为四大类:load和store,ALU操作,分支与跳转,浮点操作。

2.7.2 MIPS的数据表示

整数(字节(8位)、半字(16位)、字(32位)、双字(64位))、浮点数(单精度浮点数(32位)、双精度浮点数(64位))。

2.7.5 MIPS的操作

MIPS指令可以分为四大类:load和store,ALU操作,分支与跳转,浮点操作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值