计算机存储的层次结构
由于不同介质的存储器读写效率、造价差异大,因此通常计算机会同时采用多种存储器。
一般来说,越是靠近CPU的存储器,所采用的的存储介质成本也越贵,对应的读写效率也越快,以至于存储容量也越小。这是效率和造价权衡的结果。
因此,计算机的存储结构最终达到了一个层次分化的结构。
计算机有哪些存储器?
计算机存储器通常包括:
寄存器
作为最靠近CPU的存储器,寄存器所采用材料的读写速度是最快的,对应的它的数量不可能会很多。
CPU中寄存器的数量通常在
几十到几百之间
,每个寄存器可以用来存储一定字节的数据(32位CPU=4字节,64位CPU=8字节)寄存器的访问速度非常快,一般要求在
0.5
个CPU时钟周期内完成读写。
CPU Cache
在CPU里,CPU-Cache分为3层:L1
,L2
,L3
。其中,L1
和L2
每个CPU核心都有,L3
则为多个CPU核心共用。
CPU Cache
用的是一种叫SRAM(Static Random-Access Memory,静态随机存储器)
的芯片。
L1
高速缓存的访问速度几乎和寄存器一样快,通常只需要2~4
个时钟周期,而大小在几十KB到几百KB不等。
L2
高速缓存位置比L1
高速缓存距离CPU核心更远,大小也会更大些,通常大小在几百KB到几MB不等,访问速度则更慢,速度在10~20
个时钟周期。
L3
位置比L2
高速缓存距离CPU核心更远,大小也会更大些,通常大小在几MB到几十MB不等,速度相对也比较慢一些,访问速度在20~60
个时钟周期。
内存
内存
使用的是一种叫作DRAM (Dynamic Random Access Memory,动态随机存取存储器)
的芯片。
相比
SRAM
,DRAM
的密度更高,功耗更低,有更大的容量,而且造价比SRAM
芯片便宜很多。
DRAM
的数据访问电路和刷新电路都比SRAM
更复杂,所以访问的速度会更慢,内存速度大概在200~300
个 时钟周期之间。
硬盘
硬盘
是持久化存储设备,同时也是一个 I/O 设备,断电后也不会丢失数据。通常硬盘有两种:SSD、HDD。
SSD
:固体硬盘,内存的读写速度比SSD
大概快 10~1000 倍。HDD
:机械硬盘,内存的速度比内存慢 10W 倍左右
CPU会从硬盘直接加载数据吗?
不会!每一种存储器设备只和它相邻的存储器设备打交道。
硬盘
中的数据会先加载到内存
,再从内存
加载到CPU Cache
。
同理,CPU写回数据时,也是先从CPU Cache
->内存
->硬盘
如何查看CPU Cache
的大小?
# 查看 L1 Cache 「数据」缓存的容量大小 cat /sys/devices/system/cpu/cpu0/cache/index0/size # 查看 L1 Cache 「指令」缓存的容量大小 cat /sys/devices/system/cpu/cpu0/cache/index1/size # 查看 L2 Cache 的容量大小 cat /sys/devices/system/cpu/cpu0/cache/index1/size # 查看 L3 Cache 的容量大小 cat /sys/devices/system/cpu/cpu0/cache/index1/size
参考:存储器的层次结构