第三章 多层次的存储器

一些理解参考了华中科技大学的慕课

1、基本概念

名称概念
存储容量指一个存储器中可以容纳的存储单元总数。典型的存储单元存放一个字节,因此通常用字节数来表示,KB、MB、GB、TB。
存取时间读操作时间指一次读操作命令发出到该操作完成、数据读出到数据总线上所经历的时间。通常写操作时间等于读操作时间,故称为存取时间。
存取周期也称读写周期,指连续启动两次读/写操作所需间隔的最小时间。通常存储周期略大于存取时间,因为数据读出到总线上,还需要经过数据总线、CPU 内部数据通路传递给控制器/运算器。
虚拟存储器是通过硬件/操作系统,实现主存-外存之间的信息部分调入调出,为用户提供一个比实际物理内存容量大得多的存储器逻辑空间,使之为更大或更多的程序所使用。主存-外存之间的信息部分调入调出过程对用户透明。

2、存储器的分级结构

对存储器的要求是容量大、速度快、成本低,但是在一个存储器中要求同时兼顾这三个方面的要求是困难的。

为了解决这方面的矛盾,目前在计算机系统中通常采用多级存储器体系结构,即高速缓冲存储器、主存储器和外存储器。

在计算机系统中存储层次可分为高速缓冲存储器(cache)、主存储器(内存)、辅助存储器(外存)三级。

高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题。
辅助存储器用于扩大存储空间。

CPU 能直接访问高速缓冲存储器(英文:cache) 和内存;外存信息必须调入内存后才能为 CPU 进行处理。

  • (1)高速缓冲存储器:高速小容量半导体存储器,强调快速存取指令和数据;
  • (2)主存储器:介于 cache 与外存储器之间,用来存放计算机运行期间的大量程序和数据。要求选取适 当的存储容量和存取周期,使它能容纳系统的核心软件和较多的用户程序;
  • (3)外存储器:大容量辅助存储器,强调大的存储容量,以满足计算机的大容量存储要求,用来存放系 统程序、应用程序、数据文件、数据库等。

3、主存储器的逻辑设计

容量和地址线的换算:
128K的存储器 -> 2 ^ 7 * 1024 = 2 ^ 17 所以有 17根地址线

字长32位,则半字长16位,双字长64位。
按边界对齐方式的存储要求是:
双字数据起始地址的最末三位为000(8字节的整数容倍);
单字数据起始地址的最末二位为00(4字节的整数倍);
半字数据的起始地址的最末一位为0(2字节的整数倍)。
PS:可以不考虑,每个学校要求不一样

  • 第一步:根据设计容量、提供的芯片容量构建地址空间分布图(类似搭积木) ,可能需要字、位扩展;
  • 第二步:用二进制写出连续的地址空间范围;
    计算要多少个存储器,每个存储器地址空间范围 00000…(地址线位数) ~ 11111(地址线位数)
    由地址线位数从后往前,每四个为一位转化为16进制,参照例子2
  • 第三步:写出各片组的片选逻辑表达式。
  • 第四步:按三总线分析 CPU 和选用存储器芯片的数据线、地址线、控制线,以便设计 CPU 与存储器的连接。
  • 第五步:设计 CPU 与存储器连接的逻辑结构图。

位扩展例子:

字扩展例子:

1、设有一个具有20位地址和32位字长的存储器,问:
(1)该存储器能存储多少个字节的信息?

  • 220 × 32 bits = 1M × 4B = 4MB

(2)如果存储器由512K * 8位SRAM芯片组成,需要多少片?

  • (1024K * 32)/(512K * 8) = 8 片

(3)需要多少位地址做芯片选择?

  • 存储器带 512k -> 19位地址
    所以1位做芯片选择,A0~A18接存储器,A19接片选译码器

5、要求用256K * 16位SRAM芯片设计1024K * 32位的存储器。SRAM芯片有两个控制端:当 C S ‾ \overline {CS} CS 有效时,该片选中。当 W / R ‾ = 1 W/ \overline R =1 W/R=1时执行读操作,当 W / R ‾ = 0 W/ \overline R =0 W/R=0时执行写操作。

  • (1024K * 32) / (256K*16) = 8 片
    1024K —> 20根地址线
    256K —> 18根地址线
    2根接片选译码器

7、某机器中,已知配有一个地址空间为0000H–3FFFH的ROM区域。现在再用一个RAM芯片(8K * 8)形成40K * 16位的RAM区域,起始地址为6000H。假设RAM芯片有 C S ‾ \overline {CS} CS W E ‾ \overline {WE} WE信号控制端。CPU的地址总线为A15-A0,数据总线为D15-D0,控制信号为 R / W ‾ R/\overline W R/W(读/写), M R E Q ‾ \overline {MREQ} MREQ(访存),要求:
(1)画出地址译码方案。

(2)将ROM与RAM同CPU连接。

4、顺序存储器和交叉存储器的定量分析

顺序方式:各存储体依次顺序定义地址空间,即字扩展方式,每个存储体中的地址是连续的。

地址范围:
M0:00 000-00 111
M1:01 000-01 111
M2:10 000 10 111
M3:11 000-11 111
特点:
(1)某模块进行存取时,其他模块不工作。
(2)某模块出现故障时,其他模块可以照常工作。
(3)增添模块扩充容量比较方便。
(4)各模块串行工作,无法采用流水线技术。

交叉方式:连续地址交叉分配在各个存储体中,每个存储体中的地址是不连续的。

地址范围:
M0:000 00-111 00
M1:000 01-111 01
M2:000 10-111 10
M3:000 11-111 11

特点:
(1)同一个模块内的地址都是不连续的。
(2)对连续的存储器访问可实现流水线并行存取,提高存储器的带宽。

计算:

顺序存储器:mT

交叉存储器:可以使用流水线存取,T+(m-1)τ

【例】设存储器容量为32字,字长64位,模块数m=4,分别用顺序方式和交

叉方式进行组织。存储周期T=200ns,数据总线宽度为64位,总线传送周期

τ=50ns。问顺序存储器和交叉存储器的带宽各是多少?

【解】

  • 顺序存储器和交叉存储器连续读出m=4个字的信息总量都是:
    q=64位×4=256位。
    顺序存储器和交叉存储器连续读出4个字所需的时间分别是:
    t2=mT=4×200ns=800ns=8×10-7s
    t1=T+(m-1)τ=200ns+3×50ns=350ns=3.5×10-7s
    顺序存储器和交叉存储器的带宽分别是:
    W2=q/t2=256÷(8×10-7)=320 Mbps
    W1=q/t1=256÷(3.5×10-7)=730 Mbps

作业题:
8、设存储容量为64M,字长为64位,模块数m=8,分别用顺序和交叉方式进行组织。存储周期T=100ns,数据总线宽度为64位,总线传送周期t=50ns。求:顺序存储器和交叉存储器的带宽各是多少?

  • 【解】顺序存储器和交叉存储器连续读出m=8个字的信息总量都是:
    q=64位×8=512位。
    顺序存储器和交叉存储器连续读出8个字所需的时间分别是:
    t2=mT=8×100ns=800ns=8×10-7s
    t1=T+(m-1)τ=100ns+7×50ns=450ns=4.5×10-7s
    顺序存储器和交叉存储器的带宽分别是:
    W2=q/t2=512÷(8×10-7)=640 Mbps
    W1=q/t1=512÷(4.5×10-7)=1140 Mbps

5、高速缓冲存储器 cache 的基本原理,cache 命中率相关计算

Cache 的基本原理:

cache 是一种高速缓冲存储器,为了解决 CPU 和主存之间速度不匹配而采用的一项重要技术。

  • 主存和cache均按照约定长度划分为若干块,存储单元物理地址=块地址(块编号)+ 块内地址。
  • 主存中一个数据块调入到 cache 中,则将数据块地址(块编号)存放到相联存储器 CAM 中,将 数据块内容存放在 cache 中。
  • 当 CPU 访问主存时,同时输出物理地址给主存、相联存储器 CAM,控制逻辑判断所访问的块是否在 cache 中:
    若在,则命中,CPU 直接访问 cache。
    若不在,则未命中,CPU 直接访问主存,并将该单元所在数据块交换到 cache 中, 后续对该存储块的访问则在cache命中。
  • 通过 cache 和主存之间的动态数据块交换,尽量争取 CPU 访 存操作在 cache 命中,从而总体提高访存速度。
  • 基于程序和数据的局部性访问原理,cache实际上是主存的当前最活跃部分,即主存的一个子集。

cache 命中率相关计算:

  • (1)命中率
    增加cache以后,就应该尽量争取在cache中命中越多越好。
    在一个程序执行期间,设Nc表示cache命中完成存取的总次数,Nm表示未命中、主存完成存取的总次数,h定义为命中率,则有:

  • (2)主存/cache 系统平均访问时间
    设tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则cache/主存系统的平均访问时间ta为:

  • (3)访问效率
    设r=tm/tc表示主存慢于cache的倍率,e表示访问效率,则有:

【例】CPU执行一段程序时,cache完成存取次数为1900次,主存完成存取

次数为100次,已知cache存取周期为50ns,主存存取周期为250ns,求

cache/主存系统的效率和平均访问时间。

【解】

  • h=Nc/(Nc+Nm)=1900/(1900+100)= 0.95
  • r=tm/tc=250ns/50ns= 5
  • e=1/(r+(1-r)h)=1/(5+(1-5)×0.95)= 83.3%
  • ta=tc/e=50ns/0.833=60ns

作业题:
9、CPU执行一段程序时,cache完成存取的总次数为2420次,主存完成存取的总次数为80次,已知cache存储周期为40ns,主存存储周期为240ns,求cache/主存系统的效率和平均访问时间。

  • 【解】
    h=Nc/(Nc+Nm)=2420/(2420+80) = 0.968
    r=tm/tc=240ns/40ns = 6
    e=1/(r+(1-r)h)=1/(6+(1-6)×0.968) = 86.2%
    ta=tc/e=40ns/0.862= 46 ns
  • 19
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值