第2章 指令系统

2.1 指令系统概述

指令系统是计算机中软件与硬件交界的一个主要标志:

  • 软件设计者利用指令系统编制各种应用软件和系统软件
  • 硬件设计者采用各种手段实现指令系统

2.2 指令系统结构的分类

通用寄存器型指令集结构

CPU 中用来存储操作数的存储单元主要有:

  • 堆栈
  • 累加器
  • 一组寄存器

image-20230214200450187

对于 通用寄存器型指令集结构 ,按 ALU 中操作数的个数和在存储器中的个数分类如下:

image-20230214200725007

通用寄存器型指令集结构可以分为三种类型:

image-20230214201018791

image-20230214201032824

image-20230214201337608

2.3 寻址方式

在通用寄存器型指令集结构中,一般是利用寻址方式指明指令中的操作数是一个常数、一个寄存器操作数,或是一个存储器操作数。

image-20230214203138346

寻址实际上是从形式地址到实际地址的转换。形式地址由指令描述,实际地址也称为有效地址。

有效地址指明是存储器单元的地址或寄存器地址。

image-20230214203318399

image-20230214203338859

两种表示寻址方式的方法:

  • 将寻址方式编码于操作码中,由操作码描述相应的寻址方式。

    image-20230214203602881

  • 在指令字中设置专门的寻址字段,用以直接指出寻址方式

    image-20230214203702213

物理地址空间的信息如何存放?

image-20230214203901064

image-20230214210129900

上例中,8 个二进制位表示 8 个字节。

image-20230214204222341

image-20230214204346381

image-20230214204416220

2.4 操作数类型和大小

image-20230214221617161

image-20230214221657973

image-20230214221749619

2.5 指令系统的设计与优化

2.5.1 指令系统设计的基本原则

image-20230214225336043

image-20230214225513076

image-20230214225517812

image-20230214225525369

2.5.2 控制指令

image-20230214225631693

image-20230214225703288

image-20230214225721716

image-20230214225734479

2.5.3 指令操作码的优化

image-20230214225825743

image-20230214225843430

image-20230214225852378

image-20230214225902148

2.5.4 指令集编码

指令系统的 3 种编码格式:

  • 可变长度编码格式

    image-20230214230046795

  • 固定长度编码格式

    image-20230214230057542

  • 混合型编码格式

    image-20230214230108020

2.6 指令系统的发展和改进

image-20230214230244163

image-20230214230459011

image-20230214231356390

image-20230214231638224

image-20230214232323813

image-20230214232725429

2.7 指令格式举例

image-20230214233258350

image-20230215082319819

寄存器

32 个 32 位的通用寄存器(GPRs)。

寄存器 R0 的内容恒为全 0。

32 个 32 位的浮点数寄存器(FPRs)。

数据类型

image-20230215082554786

寻址方式

image-20230215082658768

指令格式

image-20230215082802629

image-20230215082809009

image-20230215082815181

image-20230215082859334

image-20230215083001220

image-20230215083006557

image-20230215083012430

image-20230215083027254

image-20230215083037703

ALU 操作

image-20230215083215105

转移操作

image-20230215083225595

image-20230215083239538

image-20230215083256906

浮点操作

image-20230215083309380

2.8 MIPS 的一种简单实现

2.8.1 数据通路 DataPath

image-20230215092100437

image-20230215092404831

image-20230215092418431

image-20230215092444710

要给 setup time 留足时间。

image-20230215092617105

在 Hold_Time 期间不能有输入信号的变化

2.8.2 数据通路分类

image-20230215092703938

image-20230215092926149

2.8.3 定长指令周期与变长指令周期的三级时序发生器

image-20230215092944299

image-20230215093006715

image-20230215093128907

2.8.4 MIPS 的一种简单实现

image-20230215093235723

image-20230215093249013

image-20230215093306605

image-20230215093407979

image-20230215093427953

image-20230215093444838

image-20230215093458104

image-20230215093510721

image-20230215093532106

image-20230215093549448

image-20230215093605417

image-20230215093627838

image-20230215093658767

image-20230215093825850

image-20230215093816562

image-20230215093835315

image-20230215093855485

image-20230215093916292

image-20230215093943067