[2.2.1] 编址方式
编址单位
- 常用的编址单位:字编址、字节编址、位编址、块编址
机器对于编址和访问的选择:
- 一般:字节编址,字访问
- 部分机器:位编址,字访问
- 辅助存储器:块编址,位访问
字节编址字访问
- 优点:有利于符号处理
- 缺点:
- 地址信息浪费:详见文章
- 存储器空间浪费
- 读写逻辑复杂
- 大端小端问题
几种访问方式:
- 从任意位置开始访问:

这样虽然节省存储资源(可以任意存放数据),但是可能降低读写速度,这也就导致了读写控制逻辑复杂。
- 从一个存储字的起始位置开始访问:

这种方式读写速度很快,而且读写控制逻辑简单,但是很明显十分浪费存储器资源
- 从地址的整倍数位置开始访问:

这种方式是比较常用的,对于一个64位机器,双字地址最末三个二进制位必须为000,单子地址最末两位必须为00,半字地址最末一位必须为0
- 特点是无论访问哪种类型的数据,都能在一个周期内完成
- 一定程度上改良了存储器资源,但是控制逻辑仍然较复杂
并行存储器的编址技术
- 高位交叉编址:主要用来扩大存储器容量
- 低位交叉编址:主要是提高存储器速度
模m低位交叉编址
单体容量为𝑙的𝑚个分体,其体的编址模式为𝑚×𝑖+𝑗,其中𝑖=0, 1, 2, ⋯, 𝑙−1, 𝑗=0, 1, 2, ⋯, 𝑚−1
一个模4低位交叉编址的例子
这种编址方式的原理图就是这样:

输入输出设备的编址
- 一台设备一个地址:仅对输入输出设备本身进行编址,需要通过指令中的操作码来识别该输入输出设备接口上的有关寄存器
- 一台设备两个地址:数据寄存器、状态或控制寄存器。
多个编址寄存器共用同一个地址的方法:
- 依靠地址内部来区分,适用于被编址的寄存器的长度比较短
- “下跟法”隐含编址方式,必须按顺序读写寄存器。
- 一台设备多个地址:增加编程的困难
[2.2.2] 寻址方式
寻址方式的设计思想
- 立即数寻址方式:直接在指令中给出操作数
用于数据比较短,且为源操作数的场合
- 面向寄存器的寻址方式:指令在执行过程中所需要的操作数来自于寄存器,运算结果也写回到寄存器中
不需要访存,适合向量、矩阵运算
-
面向主存储器的寻址方式:
- 直接寻址
- 间接寻址
- 变址寻址
-
面向堆栈的寻址方式:堆栈寻址方式的地址是隐含的,在指令中不需要给出操作数的地址
适合子程序嵌套、递归调用
[2.2.3] 定位方式
程序所分配到的主存物理空间和程序本身的逻辑地址空间是不相同的,需要把指令和数据中的逻辑地址(相对地址)转换成主存储器的物理地址(绝对地址)
定位方式主要研究程序的主存物理地址在什么时间确定,采用什么方式来实现
- 直接定位方式
- 静态定位
- 动态定位