3.2 寻址技术
寻址技术指的是处理器如何寻找指令或操作数的地址。这是计算机设计中的核心技术之一,直接影响指令系统的功能和效率。
3.2.1 编址方式
定义: 对存储设备(寄存器、主存、I/O设备)进行地址编码的方式。
编址单位:
- 字编址 (Word Addressing):每个地址对应一个机器字。早期计算机常用。控制简单,但处理非数值数据(如字符)不方便。
- 字节编址 (Byte Addressing):每个地址对应一个字节。现代计算机普遍采用。优点是方便处理字符等非数值数据,是它的最大优点。
- 位编址 (Bit Addressing):每个地址对应一个位。地址信息开销大,仅用于特定系统。
地址码位数: 指令中地址码的位数与主存容量和最小寻理单位有关。
- 例如,主存容量为
字节,若按字节编址,地址码需20位。若按字编址(假设1字=4字节),地址码只需18位(因为有 个字)。
- 例如,主存容量为
3.2.2 指令寻址与数据寻址
寻址可以分为两类:寻找下一条要执行的指令地址,和寻找当前指令所需的操作数地址。
指令寻址:
- 顺序寻址: 指令按顺序存放,执行完一条指令后,程序计数器(PC)自动加1(或指令长度),指向下一条指令。
PC + 1 -> PC。 - 跳跃寻址: 通过转移类指令实现。指令中会给出转移的目标地址,该地址将被送入PC,从而改变程序的执行流程。
- 顺序寻址: 指令按顺序存放,执行完一条指令后,程序计数器(PC)自动加1(或指令长度),指向下一条指令。
数据寻址:
- 定义: 寻找指令执行所需的操作数地址。
- 数据寻址的方式多种多样,是本章的重点。指令中给出的地址称为形式地址 (A),经过某种运算后得到的实际内存地址称为有效地址 (EA)。
- 寻址方式: 就是从形式地址A生成有效地址EA的各种方法。
易考点和难点
易考点
- 理解字节编址和字编址的区别,以及它们对地址码位数的影响
- 区分指令寻址和数据寻址。指令寻址由PC控制,数据寻址则涉及多种复杂的寻址方式
3.2.3 寻址方式 (数据寻址)
本节详细介绍指令中用于寻找操作数的各种寻址方式。这是指令系统的核心内容,也是考试的绝对重点。
基本概念:
- 形式地址(A): 指令中直接给出的地址字段。
- 有效地址(EA): 操作数的真实内存地址。
- 寻址方式: 从形式地址(A)计算有效地址(EA)的过程。
1. 立即寻址 (Immediate)
- 定义: 指令的地址码字段直接存放操作数本身,而不是地址。
- 公式: 操作数 = A
- 优点: 取指令的同时就获得了操作数,无需再次访存,执行速度快。
- 缺点: 操作数值的大小受指令长度限制,且操作数是固定的,无法修改。
- 用途: 常用于给寄存器赋初值或提供常数。
2. 直接寻址 (Direct)
- 定义: 指令的地址码字段存放的是操作数的有效地址(EA)。
- 公式:
- 优点: 简单直观,只需一次访存即可获得数据。
- 缺点: 寻址范围受地址码位数的限制,不够灵活。
3. 间接寻址 (Indirect)
- 定义: 指令的地址码字段存放的是一个地址的地址。即A指向的内存单元中存放着最终的有效地址EA。
- 公式:
- 优点:
- 扩大寻址范围:可以用较短的地址码访问整个内存空间(因为存放EA的内存单元可以是完整的机器字长)。
- 便于编程: 方便实现指针等数据结构。
- 缺点: 需要多次访存(至少两次)才能获得操作数,速度慢。
4. 寄存器寻址 (Register)
- 定义: 指令的地址码字段存放的是一个寄存器编号,操作数就在该寄存器中。
- 公式: 操作数 =
- 优点:
- 无需访存,执行速度极快。
- 指令短,因为寄存器数量少,编号位数少。
- 缺点: 寄存器数量有限。
5. 寄存器间接寻址 (Register Indirect)
- 定义: 指令的地址码字段存放一个寄存器编号,该寄存器中存放的是操作数的有效地址(EA)。
- 公式:
- 优点: 结合了间接寻址的灵活性和寄存器寻址的高效性。比内存间接寻址快(只需一次访存)。
6. 变址寻址 (Indexed)
- 定义: 将指令中的形式地址(A)与一个变址寄存器(Rx) 的内容相加,得到有效地址。
- 公式:
- 优点: 非常适合处理数组等连续存放的数据结构。A作为数组基地址,Rx作为偏移量,只需修改Rx即可方便地遍历数组元素。
7. 基址寻址 (Base)
- 定义: 将指令中的形式地址(A)与一个基址寄存器(Rb) 的内容相加,得到有效地址。
- 公式:
- 优点: 主要用于程序的重定位。操作系统将程序加载到内存的任意位置,只需将该位置的起始地址放入Rb,程序中的所有地址引用都基于这个基地址,无需修改指令本身。
- 与变址寻址的区别:
- 用途: 基址寻址面向系统,用于地址重定位;变址寻址面向用户,用于数组访问。
- 内容变化: 基址寄存器的内容在程序运行期间通常不变;变址寄存器的内容会频繁改变。
8. 相对寻址 (Relative)
- 定义: 将指令中的形式地址(A)与程序计数器(PC) 的当前内容相加,得到有效地址。A通常称为位移量(displacement)。
- 公式:
- 优点:
- 生成的代码是位置无关的,便于程序在内存中的浮动。
- 常用于转移指令,A的位数可以较短,因为转移通常在当前指令附近。
9. 页面寻址 (Paged)
- 定义: 将内存空间划分为大小相等的"页",地址由页号和页内地址组成。指令的地址码只提供页内地址,页号则由其他方式(如页寄存器、当前页、0号页)提供。
- 特点: 是一种二维地址结构,是虚拟存储系统的基础。
核心考点
易考点
- 各种寻址方式的有效地址(EA)计算。这是必考内容。
难点辨析
- 间接寻址 vs. 寄存器间接寻址: 都是间接,但一个地址在内存,一个在寄存器。
- 变址寻址 vs. 基址寻址: 公式相同但用途和设计思想完全不同,必须能够清晰区分。
- 相对寻址: 要注意PC的值是在指令执行的哪个阶段被使用(是当前指令地址还是下一条指令地址)。
综合题
- 习题中常出现结合多种寻址方式的复杂访存过程,例如:一条指令采用变址间接寻址,要求写出完整的访存取数过程。