一、需要注意的知识点

1、数据线数和地址线数共同反映存储体容量的大小。地址线的位数决定了主存地址空间的最大可寻址范围。

(1)若数据线 64 bit 和地址线 36 bit,则芯片的容量为 2^{36}*64 bit。

采用 64位数据线,所以在按字节编址(8 bit)方式下,每次最多可存取 8 个单元的内容

而 36 位地址的最大寻址范围为 0 ~ 2^{36}-1,即地址从 0 开始编号,

(2)某存储器容量为 32K * 16 bit,则地址线为 15 根和数据线数 16 根。(32K = 2^{15},地址线取次方数 15)

(3)若 RAM 中每个存储单元为 16 位,所以数据线是 16 位。地址线只与 RAM 的存储单元个数有关。

2、设存储空间为 M * N 位,现有存储芯片是 m * n 位。

M = m,  N > n, 需要对芯片进行位扩展

M > m,  N = n, 需要对芯片进行字扩展

M > mN > n, 需要对芯片进行字位同时扩展

位扩展法、字扩展法、字位同时扩展法,是用来扩展主存容量。

理解可以参考,这博客内容写得浅显易懂:计算机原理中的字,位扩展,都给老子进来学,看不懂算我输!_是小D吖!的博客-CSDN博客

二、习题实练(含考研真题)

1. 在一个容量为128KB的SRAM存储器芯片上,按字长32位编址,其地址范围可从0000H到7fffH。 

解:该题实质考察的是字节、进制的单位换算。

容量为128KB:128 KB = 2^{^17} B = 2^{^20} bit

字长32位(2^{5} bit)编址存放:2^{^20}  / 32 = 2^{15} = 32768 

32768 转化为十六进制为 8000 H,因此地址范围从0000H-7fffH

2. 某存储器容量为 64KB,按字节编址,地址 4000H~5FFFH 位 ROM 区,其余为 RAM 区。若采用 8K×4 位的 SRAM 芯片进行设计,则需要该芯片的数量是(     C     )

A. 7                                    B. 8                               C. 14                                      D. 16 

解:5FFFH - 4000H + 1 = 2000H = 10 0000  0000  0000 = 2^{13} B = 8KB

 64KB - 8KB = 56KB

56KB / 8KB =7 片 8KB

采用 8K×4 位,4 = 2^{2} :7 * 2 = 14 片 8KB = 14 片

3. 某计算机主存容量为 64KB,其中 ROM 区为 4KB,其余为 RAM 区,按字节编址。现要用 2K×8 位的 ROM 芯片和 4K×4 位的 RAM 芯片来设计该存储器,则需要上述规格的 ROM 芯片数和 RAM 芯片数分别是(     D     )。

A. 1,15                             B. 2,15                        C. 1,30                            D. 2,30

解:首先确定 ROM 的个数,ROM 区为4KB,选用 2K×8 位的ROM芯片,采用字扩展方式,需要片数如下:

RAM区为 60KB,选用 4K×4 位的 RAM 芯片,采用字和位同时扩展方式,需要片数如下:

 4. 某计算机使用4 体交叉编址存储器,假定在存储器总线上出现的主存地址(十进制)序列为 8005,8006,8007,8008,8001,8002,8003,8004,8000,则可能发生访存冲突的地址对是(    D    )
A.8004和8008                                                 B.8002和8007
C.8001和8008                                                 D.8000 和8004


解:交叉存储器,又称低位交叉编址。实际上是一种模块式的存储器,它能并行执行多个独立的读/写操作。

本题中,主存地址模4后对应的体号分别是:1, 2, 3, 0, 1, 2, 3, 0, 0。地址为8004和8000都是存取的0号储存器,可能导致8004存储还未完成而又存取8000地址,因此可能发生缓存冲突。

 5. 某一 SRAM 芯片,其容量为 1024 × 8 位,除电源和接地端外,该芯片引脚的最小数目为(     A     )。

A. 21                                  B. 22                             C. 23                                     D. 24

解:SRAM 芯片容量为1024 * 8 = 2^{10} * 8,所以需要 10根地址线、8根数据线;

另外还需读写控制线各一根,一共 2 根(注意,读写控制线也可共用一根),

以及 1 根片选线,

所以芯片引脚的最小数目为 10 + 8 + 2 + 1 = 21条。(或 10 + 8 + 1 + 1 = 20条)

 6. 某容量为 256M 的存储器,由若干 4M * 8位 的 DRAM 芯片构成,该 DRAM 芯片的地址引脚和数据引脚总数是(     A     )     
 A. 19                                       B. 22                                    C. 30                               D. 36

解:注意:DRMA 采用地址复用技术,地址线是原来的 1/2,地址信号分行、列两次传送。

所以 256M 这个信息没有作用。容量为 4M * 8,则需要 22 条地址线、8 条数据线。所以该 DRAM 芯片的地址引脚是 11 条和数据引脚是 8 条,总数是 11 + 8 = 19 条。

额外补充:若是问某一DRAM芯片,采用地址复用技术,其容量为1024×8位,除电源和接地端外,该芯片的引脚数最少是(   17根  )(读写控制线为两根)。

解析:DRAM采用地址复用技术时,通过行通选和列通选分行、列两次传送地址信号,因此地址线减半为5根,数据线仍为8根,加上行通选和列通选及读/写控制线(片选线用行通选代替)一共4根,总共是17根。

7. 某计算机存储器按字节编址,主存地址空间大小为64 MB,现用4M × 8位的RAM芯片组成32 MB的主存储器,则存储器地址寄存器MAR的位数至少是(      D      )     
A.22位                           B.23位                        C.25位                         D.26位

解:(考点)主存地址空间和地址寄存器位数关系。
64MB 的 主存地址空间,故而 MAR 的寻址范围是 64M,故而是 26位。而实际的主存的空间不能代表 MAR 的位数。

8. 假定用若干个 2K x 4 位芯片组成一个 8K x 8为存储器,则 0B1FH 所在芯片的最小地址

是 (   D     )
A. 0000H                           B. 0600H                           C. 0700H                         D. 0800H


考点:主存储器扩展的地址分配

解:2K x 4 位芯片组成一个 8K x 8 位存储器,需要8片 2K x 4的芯片。

每两片构成一组2K x 4 位的存储器(位扩展),4组便构成 8K x 8 位存储器(字扩展),地址线 A_{12}A_{11} 经译码器得到 4 个片选信号。

即若按字节编址,对应一个大小为 8K×8 位的存储器,需要 13位地址,其中高 2 位为片选地址,低11位为片内地址。

而题目给出的地址 0B1FH 转换为二进制为0 1011 0001 1111,其高 3 位为010,即片选地址为 2。因此,地址 0B1FH 对应第 2 片芯片,

该芯片的起始地址(最小地址)为 0 1000 0000 0000,即0800H。

附上:

第一组的起始地址: 000 00 0000 0000  -  001 11 1111 1111

第二组的起始地址: 010 00 0000 0000  -  011 11 1111 1111

第三组的起始地址: 100 00 0000 0000  -  101 11 1111 1111

第四组的起始地址: 110 00 0000 0000  -  111 11 1111 1111

9. 地址总线A_0(低位)~A_{15}(高位),用 4K×4 位的存储芯片组成 16KB 存储器,则产生片选信号的地址线是(     C     )。

A.A_2A_3                    B.A_0A_1                     C.A_{12}A_{13}                         D.A_{14}A_{15}

解:存储器容量 16KB = 2^{14} * 8 bit,芯片容量为 2^{12} * 4bit,所以存储器有14条地址线,存储芯片有12条地址线,因此将存储器地址线中的高 2 位作为片选信号。

A_0位低位,所以地址线为A_0A_{13}。片选信号线为 A_{12}A_{13} 。

10.  地址总线A_0高位)~A_{15}(低位),用 4K×4 位的存储芯片组成 16KB 存储器,则产生片选信号的译码器的输入地址线应该是(     A     )。

A.A_2A_3                    B.A_0A_1                     C.A_{12}A_{13}                         D.A_{14}A_{15}

解:4K×4 位的存储芯片的容量为 2^{12} * 4bit ,由于A_{15} 为地址线的低位,接入各芯片地址端的是地址线的低 12 位,即 A_4 到 A_{15},共有 8 个芯片(16 KB / 4K = 4B,且位扩展时每组两片分为4组)组成 16KB 存储器,则由高两位地址线 A_2A_3 作为译码器的输入。  

11.  若片选地址为111时,选定某一 32K×16 位的存储芯片工作,则该芯片在存储器中的首地址和末地址分别为 38000H,  3FFFFH

解:片选地址为111时,可知片选地址是3位,而 32K×16 位的存储芯片,有地址线15根(片内地址),因此地址总位数为 18 位,现高 3 位为 111,

则首地址为11 1000 0000 0000 0000,末地址为 11 1111 1111 1111 1111。

12. 假定 DRAM 芯片中存储阵列的行数为 r、列数为 c,对于一个 2K×1 位的 DRAM 芯片, 为保证其地址引脚数最少,并尽量减小刷新开销,则 r、c 的取值分别是(     C     )。

A. 2048, 1                           B. 64, 32                       C. 32, 64                        D. 1, 2048

解:根据 DRAM的结构和原理可知,在分时复用的情况下,芯片引脚个数取决于行地址线和列地址线中的较大值。

对于一个 2K×1 位的 DRAM 芯片,总共需要 11 条地址线,只有当一个取 5,一个取 6 时可使管脚数最小,而 DRAM 的刷新开销取决于行数,为了减少刷新开销,应该选行数值较少的,因此行地址线应该为5、列地址线为6,即行数 2^5 = 32,列数为 2^6 = 64。

 

13.  若内存地址区间为 4000H ~ 43FFH,每个存储单元可存储16位二进制数,该内存区域用4片存储器芯片组成,则构成该内存所用的存储器芯片的容量是(     C     )。

A. 512×16 位                  B. 1024×8位                C. 256×16位                       D. 256×8位

解:43FFH - 4000H + 1 = 400H,即内存区域为 2^{10} B 个单元,又每个存储单元可存储16位二进制数,所以总容量为 1K * 16 位。现由 4 片存储器芯片组成,则构成该内存所用的存储器芯片的容量是 256 ×16位 (有 1024 / 4 = 256 )。

14. 内存按字节编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K×8bit 的存储器芯片构成该内存,至少需要 (     D     )片。
A. 2                                       B. 4                               C. 8                           D. 16

解:CFFFFH - 90000H +1 = 40000H,即内存区域为 2^{14} B 个单元,即 256 KB,所以需要的芯片数 = ( 256K * 8 )/( 16K * 8 ) = 16片。

15. 某计算机字长是 16 位,它的存储容量是 256 KB,按字寻址,它的寻址范围是0 ~ 2^{17}-1

解:256 KB = 2^{18} B,按字寻址,且字长为 16bit = 2B,可寻址的单元数 = 2^{18} B / 2B = 2^{17},共寻址范围是0 ~ 2^{17}-1

16. 某计算机主存按字节编址,由 4 个 64M×8 位的 DRAM 芯片采用交叉编址方式构成,并与宽度为 32 位的存储器总线相连,主存每次最多读写 32 位数据。若 double 型变量 x 的主存地址为 804 001AH,则读取 x 需要的存储周期数是(     C     )。

A. 1                                       B. 2                             C. 3                               D. 4

解:交叉存储器,又称低位交叉编址(低位地址为体号,高位地址为体内地址)。所以主存地址最低二位表示该字节存储的芯片编号。double型变量占64位,8个字节。

它的主存地址804 001AH 最低二位是10,说明它从编号为 2 的芯片开始存储(共 4 个芯片,编号从 0 开始)。一个存储周期可以对所有芯片各读取一个字节,即读取编号0,1,2,因此需要3轮。

 17. 设存储器容量为32字,字长64位,模块数m=4,分别用顺序方式和交叉方式进行组织。存储周期T=200ns,数据总线宽度为64位,总线传送周期φ=50ns。若连续读出4个字,问顺序存储器和交叉存储器的带宽各是多少?

解:顺序存储器和交叉存储器连续读出 m = 4 个字的信息总量都是
q = 64bit * 4 = 256 bit


顺序存储器和交叉存储器连续读出4个字所需的时间分别是
t_1 = mT = 4 * 200ns = 800ns = 8 * 10^{-7}s

t_2=T+(m-1)r=200ns+3*50ns=350ns=35*10^{-8}s
顺序存储器和交叉存储器的带宽分别是
W_1 = q / t_1 = 256 / (8 * 10^{-7}) = 32 * 10^7b/s

W_2 = q/t_2=256/(35*10^{-8})=73*10^7b/s

 注意:

顺序存储器和交叉存储器都属于多体并行存储器。

(1)顺序存储器:采用高位交叉编址,模块内的地址是连续的,存取方式为串行存取。(不能提高存储器的吞吐率)

(2)交叉存储器:采用低位交叉编址,程序连续存放在相邻模块中,可以不改变每个模块存取周期的前提下,采用流水线的方式并行存取,提高存储器的带宽。

更多的存储器相关题目,可参考:

【计组3.8】存储系统经典题目+错题+知识点补充_丧心病狂Loli控的博客-CSDN博客

Logo

汇聚原天河团队并行计算工程师、中科院计算所专家以及头部AI名企HPC专家,助力解决“卡脖子”问题

更多推荐