计算机组成第二周:指令系统体系结构

时间:2023-01-09 08:34:50

1 x86体系结构

体系结构 厂商 微处理器型号 字长 年代
IA-16 Intel 8086, 8088, 80186, 80188, 80286 16位 1978年起
IA-32 Intel 80386, 80486, Pentium, Pentium Pro/II/III/4, Core, Atom 32位 1985年起
AMD Am386, Am486, Am5x86, K5, K6, Athlon
Others Cyrix 5x86, VIA C3/C7, Transmeta Crusoe/Efficeon
x86-64 AMD Opteron, Athlon 64, Phenom, Phenom II 64位 2003年起
Intel Pentium 4 Prescott, Core 2, Core i3/i5/i7
Others VIA Nano

1.1 寄存器模型

寄存器类型 Intel 8086 Intel 80386 x86-64
通用寄存器 AX, BX, CX, DX, SP, BP, SI, DI EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI RAX, RBX, RCX, RDX, RSP, RBP, RSI, RDI, R8~R15
指令指针寄存器 IP EIP RIP
标志寄存器 FLAGS EFLAGS RFLAGS
段寄存器 CS, DS, ES, SS CS, DS, ES, SS, FS, GS CS, DS, ES, SS, FS, GS

1.2 Intel 8086

  • 内部的通用寄存器为16位,既能处理16位数据,也能处理8位数据
  • 对外有16根数据线和20根地址线,可寻址内存空间为1MByte( 220
  • 物理地址的形成采用段加偏移的方式

有4个数据寄存器,存放通用数据,此外还有其他功能:
- AX(Accumulator):存放乘除等指令的操作数
- BX(Base):存放存储单元的偏移地址
- CX(Count):存放计数值
- DX(Data):乘法运算产生的部分积,除法运算的部分被除数

其他4个通用寄存器:
- SP:堆栈指针寄存器,用来指向当前的栈
- BP:基址指针寄存器,指向系统栈最上面一个栈帧的底部
- SI:源变址寄存器,用于存放存储单元在段内的偏移量,串指令中的源操作数指针
- DI:目的变址寄存器,用于存放存储单元在段内的偏移量,串指令中的目的操作数指针
(SI通常指向源数组,DI通常指向目的数组,他们通常被用来成块地移动数据,比如移动数组或结构体,通常和DS和ES一起使用)

标志寄存器:
计算机组成第二周:指令系统体系结构

指令指针寄存器:
- 相当于PC,当CPU取出指令后会自动增加
- 转移指令、过程调用/返回指令等会改变IP的内容

段寄存器,与其他寄存器联合生成存储器地址:
- CS(Code Segment):代码段寄存器
- DS(Data Segment):数据段寄存器
- ES(Extra Segment):附加段寄存器
- SS(Stack Segment):堆栈段寄存器

物理地址=段基值*16+偏移量

计算机组成第二周:指令系统体系结构

1.3 Intel 80386

  • 80x86系列中的第一款32位微处理器
  • 支持32位的算术和逻辑运算,提供32位的通用寄存器
  • 改进了“保护模式“,段范围可达4GB
  • 增加了“虚拟8086模式“,可同时模拟多个8086微处理器

2 x86指令简介

2.1 程序示例

计算机组成第二周:指令系统体系结构

2.2 指令分类

2.2.1 传送类指令

计算机组成第二周:指令系统体系结构

2.2.2 运算类指令

计算机组成第二周:指令系统体系结构

计算机组成第二周:指令系统体系结构

2.2.3 转移类指令

计算机组成第二周:指令系统体系结构

计算机组成第二周:指令系统体系结构

2.2.4 控制类指令

计算机组成第二周:指令系统体系结构

2.2.5 串操作指令

计算机组成第二周:指令系统体系结构

  • MOVSB指令:在存储器中将指定位置的一个字节单元传送到另一个指定的位置
  • REP前缀:当CX 0时,重复执行串操作指令
  • 源串地址为DS:SI,目的串地址为ES:DI
  • 串的长度在CX寄存器中
  • 自动修改SI和DI,指向下一个串元素
  • 若使用重复前缀,则CX CX-1

计算机组成第二周:指令系统体系结构

3 MIPS体系结构

MIPS的设计者,RISC的先驱:约翰 亨尼西(John Hennessy)
英文全称:Microprocessor without Interlocked Piped Stages
主要关注点:减少指令的类型,降低指令的复杂度
基本原则:A simpler CPU is a faster CPU

3.1 MIPS公司

年份 事件
1984 MIPS计算机系统公司成立
1988 SGI公司在其计算机产品中采用MIPS处理器
1989 MIPS第一次上市
1992 SGI收购MIPS,更名为MIPS技术公司
1998 MIPS再次上市
2012 Imagination Technologies收购MIPS

应用领域:数字电视,机顶盒,蓝光播放器,游戏机,网络设备等

3.2 MIPS指令的主要特点

  • 固定的指令长度(32bit,即1 word)
    • 简化了从存储器取指令
  • 简单的寻址模式
    • 简化了从存储器取操作数
  • 指令数量少,指令功能简单(一条指令只完成一个操作)
    • 简化指令的执行过程
  • 只有Load和Store指令可以访问存储器
    • 例如,不支持x86指令的这种操作:ADD AX, [3000H]
  • 需要优秀的编译器支持

指令示例:
- add a, b, c
- lw $8, 12($19)
- add, $8, $18, $8
- sw $8, 40($19)

3.3 MIPS的通用寄存器

计算机组成第二周:指令系统体系结构

3.4 MIPS指令的基本格式

计算机组成第二周:指令系统体系结构

  • opcode:用于指定指令的类型,对于所有R型指令,该域的值均为0
  • rs:通常用于指定第一个源操作数所在的寄存器编号
  • rt:通常用于指定第二个源操作数所在的寄存器编号
  • rd:通常用于指定目的操作数(保存运算结果)的寄存器编号
  • shamt:用于指定移位指令进行移位操作的位数,对于非移位指令,该域设为0
  • 与opcode域组合,精确地指定指令的类型