存储器(二)

存储器和CPU的连接

  1. 地址线的连接:CPU的低位地址和芯片片内地址相连,高位地址做片选信号。
  2. 数据线的链接:位扩展,使芯片数据线和CPU的数据线相同。
  3. 读/写命令线的连接
  4. 片选线的连接:CPU高位地址线、访存信号、译码器及门电路
  5. 合理选择存储芯片:系统ROM、数据RAM
  6. 其他(时序、负载)

例1:

设CPU有16根地址线,8根数据线,并用MREQ做访存信号(低电平有效),用WE作为读写控制信号。现有 RAM存储器芯片:1K x 4位、4K x 8位、8K x 8位的;ROM存储器芯片:2K x 8位、4K x 8位、8K x 8位;74138译码器及各种门电路。
(1)主存地址空间分配:
6000H~67FFH为系统程序区
6800H~6BFFH为用户程序区
(2)合理选用上述芯片,说明各选几片:
(3)详细画出存储芯片的逻辑图:

先分析一下解题思路:

依据题意计算容量选择芯片
写出对应的二进制地址码
分配CPU地址线片选形成
画出连接图

1.选择芯片
要计算存储容量我们首先要知道:
存储容量 = 末地址 - 首地址 + 1

系统:67FFH - 6000H + 1= 800H = 2K
所以系统的容量为2K x 8位
根据给定的芯片,选用1片 2K x 8位ROM芯片
程序:6BFFH - 6800H +1 = 400H = 1K
所以系统的容量为1K x 4位
根据给定的芯片,选用2片 1K x 4位RAM芯片

2.写出对应的二进制编码
在这里插入图片描述
3.分配CPU地址线
如上图将A10~A0接2K x 8位ROM的地址线,A9~A0接1K x 4位RAM的地址线。

74138译码器:
在这里插入图片描述
4.片选信号
在这里插入图片描述
依据第三步74138译码器输入输出图可以发现,当C、B、A为1、0、0时Y4为0
Y5为1,当C、B、A为1、0、1时Y4为1Y5为0。

5.画出电路图
在这里插入图片描述

例2

设CPU有16根地址线,8根数据线,并用MREQ做访存信号(低电平有效),用WE作为读写控制信号。现有 RAM存储器芯片:1K x 4位、4K x 8位、8K x 8位的;ROM存储器芯片:2K x 8位、4K x 8位、8K x 8位;74138译码器及各种门电路。
(1)最小8K地址位系统程序区,于其相邻16K地址为用户程序地址,最大4KB地址为系统程序工作区。
(2)指出存储芯片的种类和数量
(3)详细画出存储芯片的片选逻辑
先分析一下解题思路:

画出内存分配图选择存储芯片
计算每个区间对应的十六进制地址范围
写出对应的二进制地址码
分配CPU地址线片选形成
画出连接图

1.画出内存分布图 2.确定芯片的数量及类型
在这里插入图片描述
3.计算每个存储区的十六进制编码
本题我们知道内存容量和初始地址,就可以计算末地址:
存储容量 = 末地址 - 首地址 + 1
末地址 = 存储容量+首地址-1
程序:末地址 = 8K+0-1=2^13-1=1 1111 1111 1111B=1FFFH

系统程序工作区:由题可得系统程序工作区与用户程序地址并不相连而是处于最大4KB地址
首地址 = 末地址-存储容量+1=(64K-1)-4K+1=F000H

4.写出相应的二进制地址码,确认片选信号
在这里插入图片描述
根据74138译码器选择Y0、Y1、Y2、Y7作为片选信号。

5.CPU与存储器的连接图
在这里插入图片描述

存储器的校验

编码的最小距离

任意两组合法代码之间二进制代码的最小差异,编码的纠错、检错能力与编码的最小距离有关。
L-1=D+C
L——编码的最小距离
D——检测错误的位数
C——纠正错误的位数

汉明码的组成

三要素

  • 检测位位数
  • 检测位位置
  • 检测位取值

检测位位数如何确定:

在这里插入图片描述

检测位位置如何确定:

在这里插入图片描述

检测位取值如何确定:

按检测位分组,小组内奇偶校验,得到检测位的值。
汉明码每位所占用的检查位:
在这里插入图片描述

在每一小组里按照配偶原则或配奇原则确认检测位的值。

把求得的检测位写回n+k代码相应位,即得检测位和数据位共同组成的汉明码。

例1:求0101按“偶校验”配置的汉明码
解:
∵ n=4
根据2^k ≥ n + k + 1
可得k=3
汉明码排序如下:

二进制序号1234567
检测位C1C2C4
数据0101
检测位取值0101

接下来我们计算检测位取值
C1=3⊕5⊕7=0⊕1⊕1=0
C2=3⊕6⊕7=0⊕0⊕1=1
C3=5⊕6⊕7=1⊕0⊕1=0
最后结果如下:

二进制序号1234567
检测位C1C2C4
数据0101
检测位取值0100101

∴ 0101的汉明码位0100101

汉明码的纠错

形成新的检测位Pi,其位数与增添的检测位有关,如增添3位(k=3),新增添的检测位为P4 P3 P1。
以K=3为例,Pi的取值为
P1=1⊕3⊕5⊕7——C1
P2=2⊕3⊕6⊕7——C2
P4=4⊕5⊕6⊕7——C3
对于按“偶校验”配置的汉明码不出错时用满足:
P1=0,P2=0,P4=0

例2:已接受到汉明码为0100111(按配偶原则配置)试问要求传送的信息是什么?
解:纠错过程如下

二进制序号1234567
检测位取值0100111

P1=1⊕3⊕5⊕7 = 0⊕0⊕1⊕1=0——无错
P2=2⊕3⊕6⊕7 = 1⊕0⊕1⊕1=1——有错
P4=4⊕5⊕6⊕7 = 0⊕1⊕1⊕1=1——有错
∵ P1无错
∴ 3,7无错,则错误在6
纠正结果为:0100101故传递的信息为0101。

提高访存速度的措施

  • 调整主存结构
  • 采用高速器件
  • 采用层次结构 Cache-主存

单体多字系统

增大存储器的带宽,提高存取速度
在这里插入图片描述

多体并行系统

(1)高位交叉
在这里插入图片描述
(2)低位交叉
在这里插入图片描述
低位交叉的特点在于不改变存取周期的前提下,增加存储器的带宽
在这里插入图片描述

高速缓冲存储器(Cache)

为什么要引入高速缓冲存储器?

CPU和主存(DRAM)的速度存在差异, CPU可能会出现“空等”现象。
在这里插入图片描述
程序访问的局部性原理
1.时间局部性:程序中某条指令一旦执行,则不久后该指令可能再次被执行,如果某数据被访问,不久后该数据可能再次被访问。因为程序中有循环。
2.空间局部性:程序将访问的指令或数据很可能与目前正在执行的指令在空间上相邻或邻近。因为程序大部分是顺序执行的。

根据程序访问的局部性原理,将CPU近期要用到的指令和数据提前从主存送到Cache,使得CPU在一定时间内只访问Cache。一般Cache采用高速的SRAM制作。

Cache的工作原理

主存和缓存的编址

主存和缓存按块存储,块的大小相同,块长为B
每个存储块中有若干存储字,存储字包括主存块号与块内地址,对于缓存Cache来说存储字包括缓存块号和块内地址。
在这里插入图片描述

命中与未命中

假设缓存共有C块,主存有M块 M>>C
命中:主存块调入缓存,主存块与缓存块建立对应关系,用标记记录与某缓存块建立了对应关系的主存块。
未命中:主存块未调入缓存,主存块与缓存块未建立对应关系。
”注:由于缓存块数远远小于主存块数,在每次数据读取过程中,一般都需要释放部分缓存块,来缓存心得主存块内容。“

Cache的命中率(衡量Cache的效率)

定义:CPU欲访问的信息在Cache中的比率
设在一个程序执行期间,设Nc未访问Cache的命中次数,Nm为访问主存的次数,则命中率h为:
h=Nc/(Nc+Nm)命中率与Cache的容量与块长有关。

命中率与Cache容量的关系:
一般而言,Cache容量越大,Cache的命中率就越高,但容量不能太大,太大成本会增加,同时当Cache容量达到一定值时,命中率就不会有明显提高了。

命中率与块长的关系:
当块由小到大增长时,起初会因局部性原理,命中率提高。如继续增大块长,命中率可能下降(对于一定容量的缓存存储器来说,单个块容量越大,也就说明块数越少,那么缓存块替换也就会频繁)。

Cache-主存系统的平均访存时间

设Cache命中率为h,未命中率为1-h,访问Cache的时间tc,访问主存的时间为tm,则Cache-主存系统的平均访存时间ta为:
ta=h*tc+(1-h)*tm

Cache-主存系统的效率

效率e与命中率有关
e=访问Cache的时间/平均访存时间 x 100%
设Cache命中率为h,,访问Cache的时间tc,访问主存的时间为tm
e= [tc / (h*tc+(1-h)*tm)] *100%

例1:假设CPU执行某段程序时,共访问Cache命中2000次,访问主存50次,已知Cache的存取周期为50ns,主存的存取周期为200ns。求Cache-主存命中率、效率和平均时间。
(1)命中率
h=2000/(2000+50)=0.97
(2)效率
e=[20ns / (0.97 x50ns+(1-0.97) x 200ns)] x 100%=91.7%
(3)平均访问时间
t = 0.97 x50ns+(1-0.97) x 200ns=54.5ns

Cache的基本结构和改进

在这里插入图片描述
Cache由Cache替换机构、主存Cache地址映射变换机构、Cache存储体三个主演部分组成。
Cache替换机构:负责更新Cache地址。

主存Cache地址映射变换机构:按照主存与Cache的某种映射方式,判断CPU送来的地址是否命中Cache,如果命中,则将主存地址变换,访问Cache地址。如果未命中,则将主存地址调入Cache。

Cache存储体:以块为单位与主存交换数据,以字为单位与CPU交换数据。

Cache的读操作

在这里插入图片描述

Cache和主存的写一致性

  • 写直达法
    命中时,写操作时数据既写入Cache又写入主存。写操作时间就是访问主存的时间,读操作块失效时不涉及对主存的写操作,更新策略比较容易实现。
    未命中时,直接写入主存。
    特点:Cache无需增加修改位及相应的逻辑线路写贮存降低了效率。
  • 写回法
    命中时,写操作只把数据写入Cache而不写入主存。当Cache数据被替换出去时才写回主存。
    未命中时,将此块装入Cache后对其进行更改,主存的写操作统一地留到换出时进行。
    特点:减少主存次数,存在不一致的隐患。

Cache的改进

(1)增加Cache的级数
(2)统一缓存和分立缓存

Cache的主存映射

和基本概念

地址映射:主存的块以什么方式装入(定位到)Cache中。
地址变换:当主存的块按照某种映射方式装入Cache之后,每次访问Cache时怎样将主存地址变换成对应的Cache地址。
地址映射方式:直接映射方式、全相联映射方式、组相联映射方式

直接映射

在这里插入图片描述
将主存块按照Cache块进行分区,如图Cache有2^c 块,主存有2^m块,则有 2^m-c区。Cache与主存每个块区一一对应。
主存地址由主存字块标记(这里指的是区号),Cache字块地址,字块内地址组成,判断是否命中时,只需根据Cache字块地址定位到Cache存储体,根据存储体前的标记与主存字块标记进行对比,相同则命中。

例:主存共有8块,Cache共有4块,每块2字,Cache和主存采用直接映射,问主存地址0101B是否命中?命中时Cache地址为多少?
Cache

标记块号
00
11
02
13

解:

依据题意共有两个区,也就是标记位应为1位,Cache块号应为2位,块内地址1位。

标记Cache块号块内地址
0101

根据10地址定位块号2,对应的标记为0与当前标记相同,命中。
Cache地址 = Cache块号+块内地址 = 101B

全相联映射

在这里插入图片描述
主存分为主存块标记和块内地址。

例:主存共有8块,Cache共有4块,每块2字,Cache和主存采用全相联映射,问主存地址1111B是否命中?命中时Cache地址为多少?
Cache

标记块号
00
21
52
73

解:主存地址格式
主存共有8块则主存标记有三位,则块内地址1位。

主存块标记块内地址
1111

111对应标记7,与Cache表对比有相同标记,命中。
Cache地址 = Cache块号+块内地址=111B

组相联映射

在这里插入图片描述
组相联映射地址变换
在这里插入图片描述

  • 16
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我林仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值