存储器编址方式
一、连续编址方式
1. 基本结构
- 组成:由四个完全相同的存储体(M₀, M₁, M₂, M₃)组成。
2. 编址特点
- 顺序编址:
- 按存储体顺序依次编址。
- 先对M₀从0开始编址256个单元,完成后转向M₁从256开始编址,以此类推。
- 地址组成:
- 体号:高位字段,用于选择具体存储体(如32位地址中的高几位)。
- 00对应M₀,01对应M₁,10对应M₂,11对应M₃。
- 体内地址:低位字段(偏移量),用于定位选定存储体内的具体单元。
- 例如:M₀的0-255单元。
- 体号:高位字段,用于选择具体存储体(如32位地址中的高几位)。
- 位数计算:
- 体号位数:4个存储体需要log₂4 = 2位(高2位)。
- 体内地址位数:256个单元需要log₂256 = 8位(低8位)。
- 地址结构示例:32位地址中,高2位为体号,低8位为体内地址,中间22位未使用。
3. 体内地址选择单元
- 初始状态:
- 地址00000000:体号00选择M₀,偏移量0选择M₀的第0单元。
- 地址递增:
- 地址加1(00000001):体号不变,偏移量1选择M₀的第1单元。
- 地址加至11111111(255):选择M₀的最后一个单元。
- 再加1(100000000):体号变为01,切换至M₁的第0单元。
- 访问顺序:
- 必须完整访问一个存储体后才能切换至下一存储体,由地址的二进制加法特性决定(低位先变化)。
4. 并行限制
- 限制:无法实现多存储体并行访问,吞吐率无法提升。
- 特殊情况:DMA(直接内存访问)需结合第七章内容理解。
- 关键结论:连续编址方式下,存储模块组无法发挥并行优势,仅当采用交叉编址时才可能实现并行访问。
二、交叉编址方式
1. 编址特点
- 轮流跨模块编址:
- 从M₀的第0单元开始,依次为M₁、M₂、M₃的第0单元编址1、2、3。
- 再循环回M₀的第1单元编址4,以此类推。
- 地址构成:
- 体号:低2位(因有4个存储体)。
- 体内地址:高8位(每个模块256个单元)。
- 示例:地址“00011011”中:
- 低2位“11”表示体号3(M₃)。
- 高8位“000110”表示体内地址6。
2. 访问顺序
- 示例:M₀(0) → M₁(0) → M₂(0) → M₃(0) → M₀(1) → ...
- 轮流启动:
- 每个存储模块的存储字等于系统总线的数据线数。
- 按1/m个存储周期间隔(m为模块数,m=4)轮流启动各模块。
3. 性能特点
- 流水线稳定后:
- 每隔T/m时间可完成一次读写(T为单个模块存取周期)。
- 存取速度提高m倍(但单个模块存取周期仍为T)。
- 关键误区:
- 错误认知:认为单个模块只需T/m时间完成读写,剩余时间用于恢复。
- 正确理解:并行效果来自流水线重叠,实际每个模块仍需完整周期T。
- 计算示例:
- 4模块系统在稳定后,每T/4可提供8位数据。
- 1个T周期内可提供4×8=32位信息。
4. 8位计算机示例
- 机器字长:8位,CPU一次处理的数据宽度为8位,数据线为8根。
- 存储周期:
- 只有当一个存储周期完全结束时,才能完成“读出/写入一个数据”。
- 不能认为一个存储体的存储周期刚开始1/m就结束读写,剩余时间用于恢复。
- 流水线稳定后,每T/m时间读取一个存储字。
三、同时启动与轮流启动比较
1. 同时启动特性
- 并行度:所有存储模块同时工作,总位数等于系统总线的数据线数。
- 存储字长关系:存储字长 × m = MDR宽度 = 系统总线数据宽度。
2. 比较
- 总线宽度:
- 轮流启动:等于单个模块存储字长。
- 同时启动:等于模块数 × 单个存储字长。
- 存储周期:
- 轮流启动:r = T/m(流水线稳定后)。
- 同时启动:r = T(与传统方式相同)。
- 总线传输周期:
- 定义:完成一次数据传输所需时间,包括地址传递、数据读写等。
- 交叉编址直接启动:总线传输周期 r = T/m(存储周期)。
- 同时启动:总线传输周期 = 存储周期。
3. 轮流启动优化
- 机制:通过流水线使r = T/m,本质是时间重叠,而非真正缩短单个模块周期。
4. 同时启动特性
- 效果:仅增加单次访问数据量,不改变基本传输时间T。
四、总结
- 连续编址:
- 按存储体顺序编址,地址由体号和体内地址组成。
- 无法实现并行访问,吞吐率无提升。
- 交叉编址:
- 轮流跨模块编址,通过流水线重叠实现并行访问。
- 流水线稳定后,存取速度提高m倍,每T/m时间完成一次读写。
- 轮流启动与同时启动:
- 轮流启动通过时间重叠提高效率,总线传输周期为T/m。
- 同时启动增加单次数据量,但传输周期仍为T。