Skip to content

408

计算机组成原理

CO-03-05 多模块存储器(高位交叉/低位交叉)


一、定位信息

项目内容
所属圈层核心层
前置知识回顾需了解主存由存储芯片组成,了解存储器的存取周期(包括访问时间和存取周期两个概念),了解地址线的作用
知识网络定位本单元是主存设计(CO-03-04)的延伸——在主存容量满足要求后,进一步提升主存带宽。多模块存储器是理解"为什么低位交叉比高位交叉快"的关键,也是Cache设计的背景知识
考点热度等级H级 — 高位交叉与低位交叉的区别及带宽计算是高频考点,近5年出现≥3次,常以选择题或计算题形式出现

二、知识点讲解

2.1 为什么需要多模块存储器

单体单字存储器在一个存取周期内只能访问一个存储单元,数据传输率(带宽)受限于单个模块的存取速度。当CPU需要连续读取大量数据(如顺序执行指令、读取数组)时,单模块存储器成为瓶颈。

解决方案:使用多个独立的存储模块,通过并行或交叉访问来提高带宽。

2.2 基本概念

  • 存取周期 TcT_c:连续两次访问存储器之间的最小时间间隔(包括访问时间和恢复时间),Tc>T_c > 访问时间
  • 访问时间 TaT_a:从发出读命令到数据稳定输出的时间
  • 存储器带宽:单位时间内存储器能传输的数据量

单模块带宽W1=wTcW_1 = \frac{w}{T_c}ww 为每个存储单元的位数)

2.3 高位交叉编址

编址方式:将地址的高位用于选择模块号,低位用于模块内地址。

例如:4个模块,地址共16位。高2位(A15A14)选择模块,低14位(A13~A0)为模块内地址。

模块号地址范围特征
模块00000H~3FFFHA15A14=00
模块14000H~7FFFHA15A14=01
模块28000H~BFFFHA15A14=10
模块3C000H~FFFFHA15A14=11

特点

  • 连续地址(如程序顺序执行)集中在同一个模块
  • 当CPU顺序访问时,仍然会遇到同一个模块的存取周期冲突,无法并行
  • 各模块是独立的存储体,主要用于扩大容量,不能有效提高带宽

2.4 低位交叉编址

编址方式:将地址的低位用于选择模块号,高位用于模块内地址。

例如:4个模块,地址共16位。低2位(A1A0)选择模块,高14位(A15~A2)为模块内地址。

模块号地址特征连续地址举例
模块0A1A0=000, 4, 8, 12, ...
模块1A1A0=011, 5, 9, 13, ...
模块2A1A0=102, 6, 10, 14, ...
模块3A1A0=113, 7, 11, 15, ...

特点

  • 连续地址分散在不同模块
  • 当CPU顺序访问时,连续的请求被分配到不同的模块,各模块可以流水线式并行工作
  • 可以显著提高带宽

2.5 低位交叉的流水线工作原理

设有 mm 个模块,每个模块的存取周期为 TcT_c,启动间隔为 Tc/mT_c/m

当CPU连续读取时:

  • 时刻0:启动模块0读地址0
  • 时刻 Tc/mT_c/m:启动模块1读地址1(此时模块0还在读取中)
  • 时刻 2Tc/m2T_c/m:启动模块2读地址2
  • ...
  • 时刻 TcT_c:模块0完成地址0的读取,可以启动下一轮

这样每个存取周期内可以读出 mm 个字,带宽提高为单模块的 mm 倍。

低位交叉存储器的带宽

Wm=m×wTc=mwTcW_m = m \times \frac{w}{T_c} = \frac{m \cdot w}{T_c}

其中 mm 为模块数,ww 为每模块字长,TcT_c 为存取周期。

2.6 高位交叉 vs 低位交叉的本质区别

对比项高位交叉低位交叉
模块号取自高位地址低位地址
连续地址分布集中在同一模块分散在不同模块
能否并行访问不能(地址冲突)能(流水线并行)
主要作用扩大容量提高带宽
与字扩展的关系本质就是字扩展特殊的交叉编址

三、记忆与理解辅助

3.1 口诀记忆

口诀:"高位集中低位散,低位并行高位慢"

  • 高位交叉:连续地址集中在一个模块
  • 低位交叉:连续地址分散到不同模块,可以并行访问

3.2 直观类比

低位交叉就像超市多收银台:4个收银台同时工作,每个收银台处理间隔为4的顾客(第1个台处理1号、5号、9号...),顾客流通速度是单收银台的4倍。

高位交叉就像超市只有一个收银台开了,其他三个闲置:虽然有4个收银台,但顾客按顺序排队全走同一个台。

3.3 对比表:高位交叉 vs 低位交叉

对比项高位交叉低位交叉
模块选择依据地址高位地址低位
连续地址所在模块同一模块不同模块
顺序访问的带宽单模块带宽mm 倍单模块带宽
主要用途扩大主存容量提高主存带宽
模块间地址关系每个模块占一大块连续地址各模块地址交织

3.4 带宽计算公式汇总

  • 单模块带宽:W1=wTcW_1 = \frac{w}{T_c}
  • mm 模块低位交叉带宽:Wm=mwTcW_m = \frac{m \cdot w}{T_c}
  • 加速比:S=WmW1=mS = \frac{W_m}{W_1} = m(理想情况,连续顺序访问)

四、例题与精解

例题1(基础)

题目:某计算机主存采用低位交叉编址的4模块存储器,每个模块的存取周期为200ns,字长为32位。问: (1)该存储器的最大带宽是多少? (2)若采用高位交叉编址,带宽又是多少?

命题意图:考查低位交叉和高位交叉的带宽计算。

审题分析:4模块,Tc=200nsT_c=200\text{ns}w=32w=32 位。

解题思路:低位交叉带宽 = m×m \times 单模块带宽,高位交叉带宽 = 单模块带宽。

完整步骤

(1)低位交叉带宽:

W4=mwTc=4×32200×109=128200×109=640×106bit/s=640Mbps=80MB/sW_4 = \frac{m \cdot w}{T_c} = \frac{4 \times 32}{200 \times 10^{-9}} = \frac{128}{200 \times 10^{-9}} = 640 \times 10^6 \text{bit/s} = 640\text{Mbps} = 80\text{MB/s}

(2)高位交叉带宽:

高位交叉不能并行,带宽等于单模块:

W1=wTc=32200×109=160×106bit/s=160Mbps=20MB/sW_1 = \frac{w}{T_c} = \frac{32}{200 \times 10^{-9}} = 160 \times 10^6 \text{bit/s} = 160\text{Mbps} = 20\text{MB/s}

低位交叉的带宽是高位交叉的4倍。

方法反思:注意区分bit/s和B/s(1B=8bit)。低位交叉的理想加速比等于模块数 mm,但实际中由于地址映射不完全连续等原因,实际加速比略低于 mm


例题2(中等)

题目:某系统有8个存储模块,采用低位交叉编址,每个模块的存取周期为100ns。CPU连续发出以下地址序列的读请求:地址0、地址1、地址2、地址3、地址4、地址5、地址6、地址7、地址8。 (1)地址3属于哪个模块? (2)从发出地址0的请求到地址7的数据全部就绪,至少需要多少时间? (3)地址8的数据何时就绪?

命题意图:考查低位交叉的地址映射和时序计算。

审题分析:8模块低位交叉,Tc=100nsT_c=100\text{ns}。低位3位选择模块(23=82^3=8)。

解题思路:模块号 = 地址 mod 8;时序分析用流水线方式。

完整步骤

(1)地址3的模块号:

模块号=3mod8=3\text{模块号} = 3 \mod 8 = 3

地址3属于模块3

(2)地址0~7的就绪时间:

采用流水线方式,每隔 Tc/m=100/8=12.5nsT_c/m = 100/8 = 12.5\text{ns} 启动一个请求:

时刻(ns)启动请求目标模块就绪时刻(ns)
0地址0模块0100
12.5地址1模块1112.5
25地址2模块2125
37.5地址3模块3137.5
50地址4模块4150
62.5地址5模块5162.5
75地址6模块6175
87.5地址7模块7187.5

地址7的数据在 187.5ns 就绪。

(3)地址8的就绪时间:

地址8的模块号 = 8mod8=08 \mod 8 = 0,属于模块0。

模块0在时刻100ns完成地址0的读取后,需要恢复到下一个存取周期开始。模块0最早可在时刻 Tc=100nsT_c = 100\text{ns} 时被再次启动(因为一个存取周期结束后才能开始下一次访问)。

地址8的启动时刻 = max(8×12.5,100)=max(100,100)=100ns\max(8 \times 12.5, 100) = \max(100, 100) = 100\text{ns}

地址8的就绪时刻 = 100+100=200ns100 + 100 = 200\text{ns}

方法反思

  1. 低位交叉的地址映射:模块号 = 地址 mod 模块数。
  2. 流水线启动间隔 = Tc/mT_c / m
  3. 关键约束:同一模块的两次访问间隔不能小于 TcT_c(模块的存取周期限制)。如果流水线启动间隔太小,同一模块可能还没完成上一次访问。

五、考情分析

项目内容
近5年考查频次≥3次
常见题型选择题(高低位交叉区别)、计算题(带宽计算、地址映射)
分值占比选择题2分,计算题3–5分
命题趋势高低位交叉对比是经典选择题。近年趋势是将带宽计算与存取周期参数结合,出需要计算的综合题

六、易错点提醒

易错点1

  • 错误表现:认为高位交叉也能提高带宽
  • 错误原因:看到"多模块"就认为可以并行
  • 正确做法:高位交叉的连续地址在同一模块,顺序访问时无法并行。只有低位交叉才能通过流水线并行提高带宽

易错点2

  • 错误表现:计算低位交叉带宽时,直接用 m×w/Tam \times w / T_a(用访问时间而非存取周期)
  • 错误原因:混淆访问时间和存取周期
  • 正确做法:带宽计算用的是存取周期 TcT_c(包含恢复时间),不是访问时间 TaT_a。因为模块完成一次访问后需要恢复才能开始下一次

易错点3

  • 错误表现:计算低位交叉的地址映射时,用地址÷模块数取商作为模块号
  • 错误原因:搞反了高低位的分配方式
  • 正确做法:低位交叉时,地址的低位选择模块,高位是模块内地址。模块号 = 地址 mod 模块数。高位交叉时,模块号 = 地址 ÷ 每模块字数

易错点4

  • 错误表现:认为低位交叉时8个模块可以同时读同一个地址
  • 错误原因:混淆了"不同模块可以同时工作"和"所有模块同时读同一个地址"
  • 正确做法:低位交叉的并行是指"不同模块各自读不同的地址",不是"所有模块同时读同一个地址"

七、来源标注

  • 依据2026考研统考大纲(408-计算机组成原理-第三章"存储器层次结构")
  • 依据大学本科经典教材共识:唐朔飞《计算机组成原理》、白中英《计算机组成原理》

考研全科复习资料 - 基于2026考研统考大纲