掌握存贮器的基本功能及各类存储器读写信息的原理
特别要注意
半导体存储器的外特性和工作原理
半导体与CPU的连接方式
这样可更加强对整机概念的理解。
必须了解高速缓冲存储器(CACHE)、主存和外存的组成,以及他们在存储器的层次结构中各自所起的作用
主存储器的技术指标
存储容量
主存存储容量:以字节B(Byte)为基本单位
半导体存储器芯片:以位b (Bit)为基本单位
存储容量以210=1024规律表达KB,MB,GB和TB
厂商常以103=1000规律表达KB,MB,GB和TB
存取时间(访问时间)
发出读/写命令到数据传输操作完成所经历的时间
存取周期
两次存储器访问所允许的最小时间间隔
存取周期大于等于存取时间
存储器带宽(数据传输速率)
单位时间里存储器所存取的信息量

   存储字长:一个存储单元存储的二进制的位数。

  机器字长:指计算机一次性处理二进制数据的位数,这个字长应该和MDR、数据总线的位数保持一致。

三种存储器构成三级存储器管理,各级职能和要求不同。Cache追求速度,以和CPU速度匹配;辅存追求容量大;主存介于两者之间,对容量,速度都有一定要求。


3-8译码器


将一块看作一个存储单元1B,总容量1KB,按字节寻址:1KB/1B=1K=1024,0~1023

按字寻址:四个当成一个,高八位为地址,每个存储单元的地址为首位地址

按半字寻址:两个字节一组,每个存储单元的地址为首位地址

按双字寻址:8字节一组


存储方式:

大端:高位数据存放在低位地址

小端:高位数据存放在高位地址



DRAM刷新

字片式结构

位片式结构:存储矩阵,一个不是1bit而是一个存储单元。满足每次刷新一行存储单元【减少地址线】

当m==n时,引脚数最少为m+n/2 +2(读写线+片选线)(最优情况)

m!=n时,引脚数最少为:m+2 (假设m>n)

死区:128周期内不能读写信息只能刷新

虽然保证不会出错,但读写时间变短,大部分时间用于刷新。


存储器与CPU连接
CPU对存储器进行读/写操作,首先由地址总线给出地址信号, 然后要对存储器发出读操作或写操作的控制信号,最后在数据总线上进行信息交流。所以,存储器与CPU之间,要完成:
① 地址线的连接;
② 数据线的连接;
③ 控制线的连接。
存储器芯片的容量是有限的,为了满足实际存储器的容量要求, 需要对存储器进行扩展。
线选法译码器:
3-8译码器(片选法译码器)
74138(带使能端:地址总线稳定时再开通译码器)
位扩展法:只加长每个存储单元的字长,而不增加存储单元的数量
(两个8kx1位芯片->8kx2位芯片)
(八个8kx1位芯片->8kx8位芯片)
字扩展法:仅增加存储单元的数量,而各单元的位数不变
两个芯片同时占用总线
(线选法:地址不连续)
(译码片选法:地址连续且是从0开始)
字位同时扩展法:既增加存储单元的数量,也加长各单元的位数
(先位扩展、后字扩展)
存储器系统的存储容量: M×N位
使用芯片的存储容量:L×K位(L≤M,K≤N)
需要存储器芯片个数:(M×N)/(L×K)
[例]: 利用2K×4位的存储芯片,组成16K×8位的存储器,共需要多少块芯片?
[解]:(16K×8)/(2K×4)=8×2=16
即:共需16块芯片。(既需要位扩展,又需要字扩展)
[又例]:利用1K×4位的存储芯片,组成2K×8位的存储器,共需要芯片数:
(2K×8)/(1K×4)= 2×2=4

双端口RAM (3、4不可以做到)

同一个存储器具有两组相互独立的读写控制线路,提供了两个相互独立的端口,都可以对存储器中任何位置上的数据进行独立的存取操作

单字多体存储器
不同行存储时效率低、必须连续存放
多模块交叉存储器
每个模块各自以等同的方式与CPU传送信息。 连续地址分布在相邻的模块,对连续字的成块传送可以重叠进行实现流水线并行存取
高位交叉不能提速,仅扩容,无用。

低位交叉编址的多模块存储器(流水线传输)

相联存储器
按内容寻址的存储器
把存储单元所存内容的某一部分作为检索项,去检索该存储器,并对存储器中与该检索项符合的存储单元内容进行读出或写入

Cache

使主存与CPU差距缩小,缓和速度矛盾。主存——DRAM(1个mos),Cache——SRAM(6个mos)
cache速度大概是主存60倍左右但是Cache容量很小

Cache的数据块称为行(线Line,槽Slot
– 用Li表示,其中i=0,1,…,m-1,共有m=2r
主存的数据块称为块(Block
Bj表示,其中j=0,1,…,n-1,共有n=2s
行与块是等长的,包含k=2w个主存字
字是CPU每次访问存储器时可存取的最小单位
Cache由数据存储器和标签存储器组成
数据存储器:高速缓存主存数据
标签存储器:保存数据所在主存的地址信息

1Cache以块为单位进行操作
2、当CPU发出访内操作请求后,首先由Cache控制器判断当前请求的字是否在Cache中,若在,叫命中,否则,不命中
3、 若命中:
若是“读”请求,则直接对Cache读,与主存无关
若是“写”请求:
Cache单元与主存单元同时写(Write through写)
只更新Cache单元并加标记,移出时修改主存(写回Copy back
只写入主存,并在Cache中加标记,下次从MM读出,保证正确。
4、未命中时:
若是“读”请求,则从主存读出所需字送CPU,且把含该字的一块送Cache,称“装入通过”,若Cache已满,置换算法;
若是“写”请求,直接写入主存。

cache的写策略

CPU修改了Cache中的数据副本,如何确保和主存中数据的一致性呢?

提速方法:写缓冲(队列)


时间局限性:循环 空间局限性:数组,若按列优先读取不存在空间局限性


主存与Cache的地址映射
Cache通过地址映射(mapping)的方法确定主存块与Cache行之间的对应关系,确定一个主存块应该存放到哪个Cache行中
直接映射、2/4/8路组相联映射使用较多

全相联映射(fully associative mapping)
可以将一个主存块存储到任意一个Cache

优点:命中率较高,Cache的存储空间利用率高
缺点:线路复杂,成本高,速度低。查找效率低

直接映射(direct mapping)
将一个主存块存储到唯一的一个Cache
主存块号低三位对应cache行号

优点:硬件简单,容易实现
缺点:命中率低, Cache的存储空间利用率低
组相联映射(set associative mapping)
可以将一个主存块存储到唯一的一个Cache组中任意一个行
主存块号低二位对应cache组号
组间采用直接映射,组内为全相联
硬件较简单,速度较快,命中率较高
Cache很小,主存很大。如果Cache满了怎么办?->替换

替换问题
新主存块要进入Cache,决定替换哪个原主存块
直接映射,只能替换唯一的一个Cache
全相联和组相联,需要选择替换策略(算法)
最不常用(LFU: least-frequently used)
替换使用次数最少的块
这种算法将计数周期限定在对这些特定块两次替换之间的间隔时间内,不能严格反映近期访问情况。
 
最近最少使用法(LRU: least-recently used)
本指替换近期最少使用的块,实际实现的是替换最久没有被使用的块

 1命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变;

2未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1;
3未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装入的块的计数器置0,其余全加1

随机法(random)
随意选择被替换的块,不依赖以前的使用情况。降低了cache命中率

先入先出法



虚拟存储器

在主存-外存层次间 借助于磁盘辅助存储器实现 由系统软件和辅助硬件管理 以透明方式提供给用户 一个比实际主存空间大得多的程序地址空间
⚫ 作用:扩大主存容量,提高辅存访问速度,有效管理存储系统

在虚存实现过程中,有些页面会在内存与外存之间被频繁地换入换出,使系统效率急剧下降。这种现象称为颠簸(或叫抖动)。请解释产生颠簸的原因,并说明防止颠簸的办法?

答:产生颠簸的原因主要有:分配的页面数太少替换策略不佳。

防止颠簸的办法:适当增加分配给用户程序的页面数,选取LRU或更好的替换策略。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐