可分为半导体存储器(内存,U盘,固态硬盘)和磁存储器(磁带,磁盘)
可分为随机存储器(RAM,这种存储器的任意一个单元都可以随机读取,存取的时间与位置无关),串行存储器(与位置有关,按顺序查找),只读存储器(ROM,只读不写。如BIOS以及手机的控件都存储在ROM里面,存在ROM里面的内容都是只读不写或者很少修改的内容)
我们看一个存储器一般会看它的读写速度,存储容量和价格。为了量化存储器的性价比,可以用位价这个单位
容量+价格=>位价:每比特位价格
因为位价和读写速度的关系,就可以把存储器划分为几个层次
缓存指的就是CPU里面的寄存器以及高速缓存。主存指的是计算机的内存,辅存主要是计算机里面的外部辅助设备,如磁盘,U盘,移动硬盘等都属于辅存的层次。正是因为CPU的速度和存储器的速度是不匹配的,所以我们才需要把存储器划分为这几个层次。
我们当然希望缓存越大越好,但是考虑到位价的存在,缓存不可能做的越大越好。存储器的层次结构也可以使用下面的图示表达。高速缓存,主存和CPU直接都可以直接相互通信。主存与辅存的通信CPU是不参与的。缓存-主存层次利用了局部性原理,在CPU与主存之间增加了一层速度快容量小的Cache(高速缓存)以解决主存速度不足的问题。因为有高速缓存的存在,通过一定的策略让CPU尽可能去访问高速缓存而不是访问主存,我们就可以有效的提高CPU的效率和计算机的整个运行速度。
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中
假设这是一片程序使用的一块内存,按照局部性原理,它所使用的内存主要是集中在一块较小的连续区域里面,按照缓存组成的层次就可以把这段内存按照一定的策略置换至缓存即可。CPU在需要使用这部分内存的时候就可以直接的访问缓存来获取这部分数据而不是要到速度比较慢的内存里面去获取这段数据。这就是局部性原理
主存-辅存层次使用的也是局部性原理,在主存之外增加辅助存储器(磁盘,SD卡,U盘等),目的是为了解决主存容量不足的问题。