计算机存储系统
存储系统是指计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备(硬件)和算法(软件)所组成的系统。
计算机的主存储器
不能同时满足存取速度快、存储容量大和成本低的要求,在计算机中必须有速度由慢到快、容量由大到小的多级层次存储器,以最优的控制调度算法和合理的成本,构成具有性能可接受的存储系统。
存储层次
原因
设计存储器有三个重要因素:容量,存取时间和价格。
存取时间,亦指存储周期,从存储器中读一个或写一个字到存储器中所花的时间。
这三个因素之间的关系如下:
- 存取时间越快,每一个“位”的价格越高
- 容量越大,每一个“位”的价格越低
- 容量越大,存取速度越慢
一般需求是较大的容量,每一“位”较低的价格,但是又为了满足性能要求(需要采用昂贵的容量较小,存储周期短的存储器)。于是使用存储器的层次结构来解决。实现了以下几个特性:
- 每一个“位”的价格递减。
- 容量递增。
- 存取时间递增。
- 处理器访问存储器的频率递减。
设计思想:高性价比,低性能存储器访问频率比低性价比,高性能存储器低,作为它的后备(性价比,容量与价格)。
命中,是指存取快速存储器操作。如果没有对快速存储器进行存取操作,就是不命中。
这个层次结构主要分为两级,第一级存放当前程序访问的“簇”;第二级存放所有指令和数据。
“簇”,处理器的指令访存和数据访存呈现“簇”状。例如程序的迭代循环,就是一个小范围的指令集合;表或数组都是“一簇”数据。长时间后程序访问的“簇”会改变,但是短时间内不会改变。
存储系统层次结构
在计算机系统中存储层次可分为高速缓冲存储器、主存储器、辅助存储器三级。
高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题,实现内存和处理器的寄存器之间分段移动数据。
寄存器,用于保存指令执行过程中临时存放的操作数和中间(或最终)的操作结果。速度最快,是整个存储系统层次的最顶层。
内存通常是高速缓存的扩展,辅助存储器用于扩大存储空间。
内存,高速缓冲存储器,处理器的寄存器都是易失性的;辅助存储器属于非易失性的。
高速缓冲存储器
高速缓存对操作系统不可见,但它与其他存储管理硬件相互影响。
原因
处理器需要不断的从内存中取指令、取操作数、保存结果。所以处理器执行指令的速度受限于内存的存储周期。
存储周期,连续启动两次操作所需间隔的最小时间。
而内存受限于速度、价格和容量三个因素,存储周期无法达到处理器的周期。所以在处理器和内存之间提供一个容量小二速度快的存储器,称为高速缓存。
特点
高速缓冲存储器,存取速度比主存储器更快,两者都称为RAM。它存在于主存与CPU之间,容量小速度接近于CPU(介于中央处理器和主存储之间的高速小容量存储器)。和主存储器一起构成了一级的存储器。
高速缓冲存储器最重要的技术指标是它的命中率。
RAM,随机存取存储器,是与CPU直接交换数据的内部存储器,也叫主存。可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序临时数据存储媒介。其特点读或写存储器消耗的时间与信息所处位置无关。主存(Primary memory)即电脑内部最主要的存储器,用来加载各式各样的程序与数据以供CPU直接运行与运用。
材料
它一般采用SRAM技术
静态随机访问存储器(SRAM)是随机访问存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。
与之相对的是动态随机存取存储器(DRAM)。里面所储存的数据就需要周期性地更新。
两者区别:由于SRAM每一个比特采用六个晶体管,所以更为昂贵,但是更为快速,非常低功耗;DRAM每一个比特采用一个电容和一个晶体管表示,拥有非常高的密度,单体积容量较高,所以成本低。但是由于电容漏电,需要周期性充电确保数据不丢失,导致耗电量大,且访问速度慢。
两者共同点:都是属于易失性存储器。
位置
芯片内部集成了大小不等的数据缓存和指令缓存,通称为L1缓存(L1 Cache即Level 1 On-die Cache,第一级片上高速缓冲存储器);
而比L1更大容量的L2缓存曾经被放在CPU外部(主板或者CPU接口卡上),但是现在已经成为CPU内部的标准组件;
更昂贵的CPU会配备比L2缓存还要大的L3缓存(level 3 On-die Cache第三级高速缓冲存储器)。
原理
高速缓存实际上存储的是一部分内存数据副本。当处理器要从内存中读取一个字节或字时,首先检查内容是否存在高速缓存中。如果在,直接从高速缓存中读取;如果不在,首先从内存中读取一定数量的字节组到高速缓存中,然后通过高速缓冲传递给处理器。这样做的好处是,利用了访问局部性原理(从内存中获取的那块数据,可能含有后续处理器需要的数据)。
这样一来,数据访问的速度适应CPU的处理速度,减少了处理器等待时间(处理器周期)。
设计因素
设计高速缓存有以下几点需要考虑:
- 高速缓存大小,越小,速度越快。
- 块大小,高速缓存与内存间的数据交换单位。块越大,命中率越高。但是块变得更大时,会导致数据重复替换可能性提高。
- 映射函数,确定块占据哪个高速缓存单元。其灵活性影响着替换算法的设计。
- 替换算法,选择替换不久的将来被访问的可能性最小的快。被称作最近最少使用(LRU)算法。
- 写策略,将修改的内容写回内存。写策略规定合适发生存储器写操作。
更多可以参考操作系统精髓与设计原理
问题,为什么需要给高速缓存设计替换算法,而内存与外存数据交换不设计
内存大小远远大于高速缓存大小,所以数据替换频繁。这就需要通过替换算法来优化,减少替换次数。而内存与外存之间,传递的是当前程序访问的“簇”,短时间内不需要更新,对整个程序运行影响不是很大。
概念扩充
凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache。
如今缓存的概念已被扩充,不仅在CPU和主内存之间有Cache,而且在内存和硬盘之间也有Cache(磁盘缓存),乃至在硬盘与网络之间也有某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。
主存储器
主存储器就是平常所说的内存,又称主存(Main memory)。他的作用是存放指令和数据,并能由中央处理器直接存取。而且一般采用DRAM技术制作。
技术指标
- 存储容量,主存容量。
- 存储时间,启动到完成一次存储器操作所经历的时间。主存的速度单位:ns。
- 存储周期,连续启动两次操作所需间隔的最小时间。主存的速度单位:ns。
- 存储器带宽,单位时间里存储器所存取的信息量, 它是衡量数据传输速率的重要技术指标,单位是b∕s( 位/秒)或B∕S(字节/秒)。
ROM&RAM
上文介绍时,RAM都是易失性存储器,而ROM是非易失性存储器。
ROM,只读存储器。其特性是一旦存储数据就无法再将之改变或删除。电脑与用户只能读取保存在这里的指令,和使用存储在ROM的数据,但不能变更或存入数据。
其作用:存储如计算机启动的引导程序,手机、MP3、MP4、数码相机等一些电子产品的相应的自带程序代码,这种用户可以通过刷机方式读写ROM。
分类:
- ROM,只读存储器。
- PROM,可编程只读存储器。可修改数据。
- EPROM,可抹除可编程只读存储器。可修改,抹除数据。
- OTPROM,一次编程只读存储器。只可修改或抹除一次,采用EPROM实现。
- EEPROM,电子抹除式可复写只读存储器。与EPROM类似。
- 闪速存储器,又称闪存。与EEPROM类似,但是速度更快。
参考只读存储器,ROM
外存储器
外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据(非易失性)。常见的外存储器有硬盘、软盘、光盘、U盘等。
参考外存储器
参考
维基百科关键词:缓存,静态随机存取存储器,随机存取存储器,计算机存储器,动态随机存取存储器,易失性存储器,存储层次。
百度百科关键词:高速缓冲存储器,主存储器,存储系统。