这篇博客的笔记内容是存储系统。
个人理解:组成原理的Cache地址映射是为了把主存中的程序装入到Cache 中,而操作系统的地址变换是操作系统访问地址变换后内存的物理地址。
在此大家要先知道一个很重要的点:CPU不能直接访问低速设备的,先知道这个点后面的很多知识会有更好的理解,具体原因参考:cpu不能直接访问的存储器是?_百度知道
一、存储器概述
1.存储器分类
1)按照在计算机中的作用(层次)划分
2)按存储介质分类
3)按存取方式
RAM(随机存储器)、只读存储器(ROM)、串行访问存储器
2.存储器性能指标
存储器有3个主要性能指标:存储容量、单位成本和存储速度。这3个指标相互制约,设计存储器系统所追求的目标就是大容量、低成本和高速度。
存取周期和存取时间的主要区别是:存取时间仅为完成一次操作的时间;而存取周期不仅包含操作时间,而且包含操作后线路的恢复时间,即存取周期=存取时间+恢复时间。
3.存储器的层次化结构
1)为了解决存储系统大容量、高速度和低成本3个相互制约的矛盾,在计算机系统中,通常采用多级存储器结构,如下图所示。在图中由上至下,位价越来越低,速度越来越慢,容量越来越大,CPU访问的频度也越来越低。
2)三级存储系统
4.RAM(SRAM和DRAM)
主存储器由DRAM实现,靠处理器的那一层(Cache)则由SRAM实现,它们都属于易失性存储器,只要电源被切断,原来保存的信息便会丢失。DRAM的每比特成本低于SRAM,速度也慢于SRAM。
1)SRAM工作原理
2)DRAM工作原理
个人理解:每隔一段时间必须执行存取操作,因而有存取周期。
关于内存刷新可参考:DRAM的三种刷新方式 - 这么神奇 - 博客园
地址复用:可以理解为地址线分时复用。ras信号有效时,DRAM收到的地址是行地址;cas信号有效时,收到的是列地址。
3)RAM的读写周期
可参考:SRAM(静态)存储器芯片的读/写周期 - 夜游星 - 博客园
二、主存与CPU
1.主存的基本组成
1)主存基本组成框图(右半边部分)
2)工作原理
更具体可参考:主存储器的基本组成_你的代码没bug的博客-CSDN博客_主存储器的基本组成
大概把握几个点:对字节编址、数据线宽度、地址线宽度
2.主存与CPU的连接
1)连接原理
2)主存容量扩展
可参考:主存容量扩展_silk_java的专栏-CSDN博客_主存容量的扩展
位扩展法:当存储芯片的位与CPU的位数不一致时,可以采取位扩展的方式
字扩展法:当数据总线不能满足时,可以采取字扩展的方式
字位扩展法:将以上两种方法结合起来
3)存储器地址分配与片选
即如何通过地址总线上的数据去获取存储单元中的数据
线选法:比较浪费但直接
译码片选法:需要译码器
3.提高访存速度--双端口RAM和多模块存储器
为了提高CPU访问存储器的速度,可以采用双端口存储器、多模块存储器等技术,它们同属并行技术,前者为空间并行,后者为时间并行。
1)双端口存储器
2)多模块存储器
单体多字存储器:存储器中只有一个存储体,每个存储单元存储m个字,总的宽度也为m个字。一次并行读出m个字,地址必须顺序排列并处于同一存储单元。
缺点:指令和数据在主存内必须是连续存放的,一旦遇到转移指令,或操作数不能连续存放,这种方法的效果就不明显。比如有一个转移指令,他会让下一条指令跳出m个字以外,那么基本就无法那么读取了。
多体并行存储器:可参考:计算机原理 4.6 多体交叉存储器 - ice--cream - 博客园
首先要明白局部性,因为计算机很吃局部性,局部性更好的性能往往更好。多体并行存储器包含高位交叉与低位交叉。
地址码高位交叉:缺点是访问连续模块的话只能串行存取(因为要访问的地址在体内连续,而访问体内只能允许当前只存在读取一个地址的内容的进程,必须等当前地址读完才能读取下一个)
地址码低位交叉:当读取连续地址的时候,因为地址是体间连续的,体间的读取状态互不影响,可以直接读取该地址信息而不必等候(即等个总线传输周期r就可以开始新的读取工作了)。因此地位交叉具有良好的空间局部性。
三、高速缓冲存储器(cache)
为什么要用cache:由于程序的转移概率不会很低,数据分布的离散性较大,所以单纯依靠并行主存系统提高主存系统的频宽是有限的。这就必须从系统结构上进行改进,即采用存储体系。通常将存储系统分为“Cache-主存”层次和“主存-辅存”层次。
1.程序访问的局部性原理
可参考:程序局部性原理的一些思考 - 小小柒 - 博客园 程序访问的局部性原理---进行科学性验证_diaoyikun5224的博客-CSDN博客
1)时间局部性:如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。
2)空间局部性:一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。
2.cache基本工作原理
注意“块”的概念
1)工作原理图
主要包含三块:主存映射到cache并装入、cache的置换策略、写策略。
2)cache访问命中率H与cache-主存系统平均访问时间Ta
3.cache与主存间的映射方式
1)直接映射
在这个人感觉比较难理解的点:
cache的行个数需要是2的整数次幂,这样才能方便做到二进制的映射。
为什么主存低c位正好是它要装进的cache号呢?举个例子:假如有四位二进制,以4为周期。1、5、9、13分别是0001、0101、1001、1101。他们的后两位都是一样的。
2)全相联映射
3)组相联映射
组相联映射是直接映射与全相联映射的折中方案。
4.主存块替换算法
抖动是比较烦人的。
5.写策略
针对写命中的情况:全写法即cache和主存同时更新,写回法即cache中的块被置换回主存时才更新主存。
而写分配法和非写分配法时针对写未命中的情况。
四、虚拟内存
将此部分放置到操作系统中。