存储器和CPU的连接
- 地址线的连接:CPU的低位地址和芯片片内地址相连,高位地址做片选信号。
- 数据线的链接:位扩展,使芯片数据线和CPU的数据线相同。
- 读/写命令线的连接
- 片选线的连接:CPU高位地址线、访存信号、译码器及门电路
- 合理选择存储芯片:系统ROM、数据RAM
- 其他(时序、负载)
例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)详细画出存储芯片的逻辑图:
先分析一下解题思路:
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)详细画出存储芯片的片选逻辑
先分析一下解题思路:
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
汉明码排序如下:
二进制序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
检测位 | C1 | C2 | C4 | ||||
数据 | 0 | 1 | 0 | 1 | |||
检测位取值 | 0 | 1 | 0 | 1 |
接下来我们计算检测位取值
C1=3⊕5⊕7=0⊕1⊕1=0
C2=3⊕6⊕7=0⊕0⊕1=1
C3=5⊕6⊕7=1⊕0⊕1=0
最后结果如下:
二进制序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
检测位 | C1 | C2 | C4 | ||||
数据 | 0 | 1 | 0 | 1 | |||
检测位取值 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
∴ 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(按配偶原则配置)试问要求传送的信息是什么?
解:纠错过程如下
二进制序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
检测位取值 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
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
标记 | 块号 |
---|---|
0 | 0 |
1 | 1 |
0 | 2 |
1 | 3 |
解:
依据题意共有两个区,也就是标记位应为1位,Cache块号应为2位,块内地址1位。
标记 | Cache块号 | 块内地址 |
---|---|---|
0 | 10 | 1 |
根据10地址定位块号2,对应的标记为0与当前标记相同,命中。
Cache地址 = Cache块号+块内地址 = 101B
全相联映射
主存分为主存块标记和块内地址。
例:主存共有8块,Cache共有4块,每块2字,Cache和主存采用全相联映射,问主存地址1111B是否命中?命中时Cache地址为多少?
Cache
标记 | 块号 |
---|---|
0 | 0 |
2 | 1 |
5 | 2 |
7 | 3 |
解:主存地址格式
主存共有8块则主存标记有三位,则块内地址1位。
主存块标记 | 块内地址 |
---|---|
111 | 1 |
111对应标记7,与Cache表对比有相同标记,命中。
Cache地址 = Cache块号+块内地址=111B文章来源:https://www.toymoban.com/news/detail-417461.html
组相联映射
组相联映射地址变换
文章来源地址https://www.toymoban.com/news/detail-417461.html
到了这里,关于存储器(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!