前言:存储器历来都是计算机系统的重要组成部分。近年来,存储器的容量一直在不断扩大,但仍不能满足现代软件发展的需要。因此,存储器仍然是一种宝贵而又稀缺的资源。如何对它进行有效的管理,不仅直接影响到存储器的利用率,而且对系统性能也有重大影响。
存储器的层次结构
存储器的层次结构如图1所示,
图1 存储器的层次结构
1.寄存器
最靠近CPU的控制单元的存储器,就是寄存器了,它使用的材料速度也是最快的,因此价格也是最贵的,那么数量就没很多。
存储器的数量通常在几十到几百之间,每个寄存器可以用来存储一定的字节。比如:
- 32位CPU中大多是寄存器可以存储4个字节;
- 64位CPU中大多数寄存器可以存储8个字节。
寄存器的访问速度非常快,一般要求在半个CPU时钟内完成读写,CPU时钟周期跟CPU主频息息相关,比如2GHz的主频的CPU,那么它的时钟周期就是1/2G,也就是0.5ns。
CPU处理一条指令的处理周期,除了读写寄存器,还主要解码指令、控制指令执行和计算。如果精寄存器的速度太慢,则会拉长指令的处理周期,从而给用户的感觉,就是电脑很慢。
2.CPU Cache
CPU Cache 用的是一种叫SRAM(Static Random-Access Memory,静态随机存储器)的芯片。
SRAM之所以叫静态存储器,是因为只要有电,数据就可以保持存在,而一旦断电,数据就会丢失了。
在SRAM里面,一个bit的数据,通常需要6个晶体管,所以SRAM的存储密度不高,同样的物理空间下,能存储的数据是有限的,不过也因为SRAM的电路简单,所以访问速度非常快。
CPU的高速缓存,通常可以分为L1、L2、L3这样的三层高速缓存,也称为一级缓存、二级缓存、三级缓存。如图2所示:
图2 Cache缓存结构图
L1高速缓存
L1高速缓存的访问速度几乎和寄存器一样快,通常只需要2~4个时钟周期,而大小在几十KB到几百KB不等。
每个CPU核心都有一块属于自己的L1高速缓存,指令和数据在L1是分开存放的,所以L1高速缓存通常分成指令缓存和数据缓存。
L2高速缓存
L2高速缓存同样每个CPU核心都有,但是L2高速缓存位置比L1高速缓存距离CPU核心更远,它大小比L1高速缓存更大,CPU型号不同大小也就不同,通常大小在几百KB到几MB不等,访问速度则更慢,速度在10~20个时钟周期。
L3高速缓存
L3高速缓存通常是多个CPU可信共用的,位置比L2高速缓存距离CPU可信更远,大小也会更大些,通常大小在几MB到几十MB不等,具体值根据CPU型号而定。
访问速度相对也比较慢一些,访问速度在20~60个时钟周期。
2.内存
内存用的芯片和CPU Cache有所不同,他使用的是一种叫做DRAM(Dynamic Random Access Memory)的芯片。
相比SRAM,DRAM的密度更高,功耗更低,有更大的容量,而且造价比SRAM芯片便宜很多。
DRAM存储一个bit数据,只需要一个晶体管和一个电容就能存储,但是因为数据会被存储在电容里,电容会不断漏电,所以需要定时刷新电容,才能保证数据不会丢失,这就是DRAM之所以被称为动态存储器的原因,只有不断刷新,数据才能被存储起来。
DRAM的数据访问电路和刷新电路都比SRAM更复杂,所以访问的速度会更慢,内存速度大概在200~300个时钟周期之间。
3.SSD、HDD硬盘
SSD(Solid-state disk)就是我们常说的固体硬盘,结构和内存类似,但是它相比内存的优点是断电后数据还是存在的,而内存、寄存器、高速缓存断电后数据都会丢失。内存的读写速度比SSD快10~1000倍。
当然,还有一款传统的硬盘,也就是机械硬盘,它是通过物理读写的方式来访问数据的,因此它访问速度是非常慢的,它的速度比内存慢10W倍左右。
由于SSD的价格快接近机械硬盘了,因此机械硬盘已经逐渐被SSD替代了。
4.存储器之间的实际价格和性能差距
存储器之间的实际价格和性能差距如图4所示
图4 存储器之间的实际价格和性能差距
总结
从寄存器、CPU Cache,到内存、硬盘,这样一层层下来的存储器,访问速度越来越慢,存储容量越来越大,价格也越来越便宜,而且每个存储器之和相邻的一层存储器设备打交道,于是这样就形成了存储器的层次结构。