第5章存储器系统(下)ppt-第4章数值的机器运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Βιβλιοθήκη Baidu
程序具有访问局部性特征的原因: 指令:指令按序存放,地址连续,循环程序段或子程序段重复执行。 数据:连续存放,数组元素重复、按序访问。
程序的局部性原理举例
高级语言源程序段 对应的中间语言程序段
I0: I1: I2: I3: I4: I5: I6: I7: I8: I9:
sum = 0; for (i = 0; i < n; i++) sum += a[i]; *v = sum;
CACHE空间存放的信息
5.7.1 Cache的相关概念
(3). cache的命中率
在一个程序执行期间在cache中的访问次数与访存总次数之 比,称为命中率。
例:CPU执行一段程序时CACHE完成存取次数为1900次,主存完成的存取次数为 100次,问命中率是多少?若已知主存的访问时间为250n秒,CACHE的访问时间为 50n秒,CPU访存的平均时间为多少? 解:命中率=1900/(1900+100)=0.95 平均访问时间=0.95×50ns+0.05×250ns=60ns 而cache的命中率与多种因素有关。
• 直接(Direct):主存块按固定位臵映象到Cache的块中 • 全相联(Full Associate):每个主存块映象到Cache的任意块中 • 组相联(Set Associate):每个主存块映象到Cache的固定组中的 任意块中
1. 全相联映象
Cache 存储器
Cache标记(tag)指出对应块取自哪 个主存块 主存储器
缓存共有 C 块 主存共有 M 块 命中
M >> C
主存块 调入 缓存
主存块与缓存块 建立 对应关系,所以应有标志记录是哪个主存块。
同时,用有效位标志主存块装入并有效,此外可通过将有效位清 0,淘汰
CACHE块中的主存块,直到装入新主存块时,再使有效位臵1.
标志字段
1 有效位
数据块字段
00000001000
成倍地提高存储器的效率。但不能同时进行同一地址单元的写操作 .
•教学计算机的寄存器组也是一 个双端口访问的RAM结构。
5.6.2
单体多字结构
MDR
单体单字存储结构
4K×16位
MDR
D15~D0 D15~D0 D15~D0 D15~D0 D15~D0
•多个并行工作的存储体共有一套地址寄存器和译码电路,按同一地址并行地访问各 自的对应单元。 0
1.在4体交叉结构时,CPU的访存地址流为03H、09H、0CH、06H、08H、0AH、21H、 25H。有分体充突吗?
2.若CPU访存的地址流为3~6、 9~12,问:
① 在单体单字结构需要访问几次获得单元上述地址的内容? ② 在单体4字结构需访问几次获得单元上述地址的内容?
③ 在4体交叉结构需访问几次获得单元上述地址的内容?
字块00 字块
标记
字块0 字块1 字块1
标记



标记
字块2c-1 字块2c-1
字块2m-1

特点:
主存中的任一块可以映象到缓存中的任一块!
主存块号 块内地址 主存地址
M位
b位
例如 设主存:1KB
Cache :128B
块大小 :16B
则 主存 = 1KB / 16B = 64(块) 块号是多少位?6位,作为标记; Cache= 128B / 16B = 8(块) 主存地址 主存块号 字块内地址
I0 I1 I2 I3 I4 I5 I6
•••
指 令
0x400 0x404 0x408 0x40C 0x410 0x414
a[0] a[1] a[2] a[3] a[4] a[5]
•••
A 数 据
N次
若n足够大,在一段时间内就一直在局部区域内执行指令,故循环内指令的时间局部性好; 按顺序执行,故程序的空间局部性好!
1. 程序访问的局部性原理
大量典型程序的运行情况分析结果表明: 在较短时间间隔内,程序产生的地址往往集中在存储器的一个很小范围内 这种现象称为程序访问的局部性.
访问概率
局部性分为 :
• •
地址空间
时间局部性(Temporal Locality) 含义:当前访问的单元很可能不久被再次访问。 空间局部性 (Spatial Locality) 含义:当前访问的单元其邻近单元很可能被访问。
MAR A11~A0
MAR
A11~A2
A1~A0
5.6.3 多体交叉并行存储器
多体交叉访问存储器中有多个容量相同的存储模块,而且各存储模块具有 各自独立的地址寄存器(MAR)、读写电路和数据寄存器(MDR),这就是多体系统。 各个存储体能并行工作,又能交叉工作。
体内地址
体号
由 低位交叉举例: 4体交叉,单体容量16个单元,总容量64个单元。 M3 M2 M1 M0 地址
… …
1
字块 1
字块 1
~ ~ 字块
~ ~ 2 -1
m
~ ~ 字块M-1 2c- 1
~ ~
C- 1
n位 m位
主存块号 M 块
b位
块内地址
c位
缓存块号 C 块
b位
块内地址
B 个字
B 个字
显然:
M>>C,所以主存块调入cache要做标记
5.7.1 Cache的相关概念
(2) 命中与未命中(失靶、缺失)
思考:
假设处理器时钟周期为2n秒,某程序有1000条指令组成,每 条指令执行一次,其中的44条指令在取指令时,没命中,其余都 命中。另:在执行指令过程中,该程序需要3000次主存数据访 问,其中16次没命中,试回答下列问题:
(1)执行该程序的命中率是多少? (2)若cache中存取一个信息的时间为一个时钟周期,在主存访 问需4个时钟周期,则CPU的平均访问时间为多少?
主存的布局:
0x0FC 0x100 0x104 0x108 0x10C 0x110 0x114
sum <-- 0 • 若:每条指令 ap <-- A A是数组a的起始地址 4个字节;每 i <-- 0 个数组元素4 if (i >= n) goto done 字节 loop: t <-- (ap) 数组元素a[i]的值 • 指令和数组元 sum <-- sum + t 累计在sum中 素在内存中均 ap <-- ap + 4 计算下1个数组元素的地址 连续存放 i <-- i + 1 • sum, ap ,i, if (i < n) goto loop t 均为通用寄 done: V <-- sum 累计结果保存至地址v 存器;A,V为 内存地址 问题:指令和数据的时间局部性和空间局部性各自体现在哪里? 指令: 0x0FC(I0)→0x108(I3)→0x10C(I4) …→0x11C(I8) →0x120(I9)
数据访问过程:
4 9 14 10
Cache存储器 3
10 4 主存储器 0 4 8 12 1 5 9 13
主存中的部分信息拷 贝在Cache存储器中
问题:要实现Cache机制需要解决哪些问题?
① ② ③ ④ ⑤ 如何分块? 主存块和Cache之间如何映象? Cache已满时,怎么办? 写数据时怎样保证Cache和主存的一致性? 给出的主存地址怎样转换为Cache地址?……
例如
设 主存 :64KB
Cache:1KB
块大小 :32B
所以
主存分为2K个块
CACHE 可容纳32个块
主存与CACHE交换信息单位是数据块! 为什么呢?
答案:基于访存的空间局部性原理。
(1).主存和CACHE的块的划分及编址
主存储器 主存块号 0 标记 Cache 缓存块号
0
… …
字块 0 1
字块 0
0000 11 0001 11 0000 10 0001 10 0000 01 0001 01 0000 00 0001 00
… …
1111 11 1111 10
CPU访存地址 则指向存储体内的存储字。
体内地址
多体交叉访问存储器地址寄存器的低位部分经过译码选择不同的存储体,而高位部分




1111 01
1 • 例:CPU送出地址A,则0 n个存储体中的所有A单元同时被选中。 ︰ 1

︰ ×16位 特点: 4K 按地址在一个存取周期内可读出 n× 位的指令或数据,使主存带宽 1K×16位 1K ×w 16 位 1K×16位 1K×16位 ︰ ︰ 提高n倍。 4095 1023
当然,若处理的数据不是连续地存放在主存中,或者在程序中经常使用 转移指令,单体多字方式的效果就要打折扣了。
第 45 章 第 章
数值的机器运算 存储系统和结构(下)
5.6
并行存储技术
这是加快访存速度措施之二啊!
5.6.1. 双端口存储器
• 常规存储器是单端口存储器,每次只接收一个地址,访问一个存储单元,从中 读取一个字节或一个字。为此,在某些系统中使用双端口存储器。
• 双端口存储器具有两个彼此独立的读/写口,每个读/写口都有一套独立的地址寄存 器和译码电路,可以并行地独立工作。一个存取周期可以同时读写二个数据,
5.7.2 CPU在Cache 中的访问过程
开始 CPU发出访存地址AD 命中?
缺失处理
N
Y
访问Cache 取出信息送CPU 访主存,将AD单 元内容送CPU 从主存取出AD单 元所在块
将主存块复制到 CACHE块空间中
结束
5.7.3 地址映象
什么是地址映象?
– 地址映像是指把主存地址空间映像到Cache地址空间,或者说主存的数据块 调入Cache中时,放在Cache什么位臵? 如何进行映像? – 把主存划分成大小相等的主存块(Block) – 将主存块和Cache块按照以下三种方式进行映像
2 6 10 14
3 7 11 15
Cache对程序员是否透明?为什么? 解答:是透明的,程序员在编写/程序时无需了解 Cache是否存在或如何设置。
但是,对Cache深入了解有助于编写出高效的程序!
5.7.1 Cache的相关概念
3. Cache的基本结构
Cache和主存都被分成若干个大小相等的块,每块由若干字节组成。由于 Cache的容量远小于主存的容量,所以Cache中的块数要远少于主存中的块数,它 保存的信息只是主存中最急需执行的若干块的副本。
体号

1111 00

低位交叉的特点:
为什么能提高带宽? 使多个模块交叉存取!
每隔1/4周期在数据总线上得到一个信息,使主存带宽提高4倍!
单体 访存周期
时间
单体 访存周期
启动0#体 启动1#体
启动2#体
启动3#体
多体交叉存储器
计算机字长64位,存储模块数m=4,分别用顺序方式和交叉方式进行组织。存储周期 T=200ns,数据总线宽度为64位,总线传送周期τ =50ns。若连续读出4个字,问顺序存 字 体号 储器和交叉存储器的带宽各是多少? 解:顺序存储器和交叉存储器连续读出4个字所需的时间分别是: t2=mT=4×200ns=800ns W4×τ M0=200ns+150ns=350ns t1=T +(m-1)
0x7A4
V
数据:数组在主存中:0x400→0x404→0x408→0x40C→……→0x7A4
数组元素按顺序存放,也按顺序访问,所以,空间局部性好;每个数组元素都被访问1次,所以没有时间局部性。
2.Cache(高速缓存)是什么样的?

• •

Cache是一种小容量高速缓冲存储器,它由 SRAM组成 Cache直接制作在CPU芯片内,速度几乎与CPU 一样快 程序运行时,CPU使用的一部分数据/指令会预 先成批拷贝在Cache中,Cache的内容是主存储 器中部分内容的映象 当CPU需要从内存读(写)数据或指令时,先检 查Cache,若有,就直接从Cache中读取,而不 用访问主存储器
m = 6位
标记
4位
字块0
Cache
字块0
主存储器
000000
5.7 高速缓冲存储器 这是提高访存措施三啊! 5.7.1 Cache的相关概念
在CPU和主存之间,设置一个由SRAM构成的存取速度高而容量相对较小 的存储器,是解决计算机系统速度瓶颈问题的一个有效措施。
CPU
缓存
容量小 速度高
主存
容量大 速度低
问题:为什么这种层次化结构是有效的?
主要是基于“程序访问局部性”特点!
W3 W2 W1 W0
M3 M2 M1 M0
T
τ τ τ
时间
设四模块交叉存储器,存取周期为T,总线传输周期(连续两次在 总线上传输数据信息的最小间隔)为τ,为实现流水线方式存取, 应满足 τ<=T/4。
连续读取 4 个字所需的时间为 T+(4 -1)τ
在存储地址“冲突”时, 并行性则被破坏!
提示:在多体交叉结构中,存在分体充突的可能性。 分体充突: 是指在一个访问周期内有2个访存地址位于同一个分体中。 是否发生分体充突可以根据CPU访存地址的体号来确定。 请分析:
相关文档
最新文档