在冯·诺依曼结构中,计算机应由运算器、控制器、存储器、输入设备、输出设备五个设备组成,数据和程序均以二进制代码形式不加区别地存放在存储器中,存放位置由存储器的地址指定。
关于本篇相关更多内容,详阅《深入理解计算机系统》Chapter-6。
1. 术语约定
- CPU = 中央处理器 = 处理器
- IO设备 = 输入/输出设备
- RAM = Random Access Memory = 随机存取存储器 = 随机访问存储器
《深入理解计算机系统》 -> ‘随机访问存储器’
《维基百科 (中文)》 -> ‘随机存取存储器’
《百度百科》 -> ‘随机存取存储器’
按照RAM的特性,觉得还是’随机存取存储器’好一些 - SRAM = Static Random-Access Memory = 静态RAM = 静态随机存取存储器
- DRAM = Dynamic Random Access Memory = 动态RAM = 动态随机存取存储器
- 主存 = Main Memory = 多个DRAM内存模块组成 = 内存条
2. 前言
目前计算机系统中,部分存储器(主存、磁盘)的性能是滞后于CPU性能的,而且这种差距还在增大。
为了提高CPU与此部分存储器的交互速度,在它们之间插入一个更小更快的存储设备的想法已经成为一个普遍观念,实际上每个计算机系统中的存储设备都被组织成了一个存储器层次结构
。
3. 存储器层次结构
存储器层次结构由不同速度、容量的多级存储器构成;距离CPU越近,存储器容量越小、访问速度越快,同样价格越贵;距离CPU越远,存储器容量越大、访问速度越慢,但价格便宜。
存储器层次结构的主要思想是:上一层的存储器作为较低一层存储器的缓存。
如下图,L0(CPU 寄存器)是L1的高速缓存;L1是L2的高速缓存;L2是L3的高速缓存;主存又是磁盘的高速缓存。
物理意义上,L1、L2、L3是高速缓存。
4. 主存
主存(main memory)
用来缓存磁盘上的数据,磁盘上的数据,量更大、读取速度更慢。
随机存取存储器(Random Access Memory,RAM)
分为两类:**静态RAM(SRAM)**和 动态RAM(DRAM)。
4.1. SRAM
Static Random-Access Memory,静态随机存取存储器。
SRAM 相比 DRAM 速度更快,但价格更高。
SRAM一般用作高速缓存存储器(cache momory、cpu cache)
,既可以在CPU芯片上,也可以在片下;
之所以称为’静态’存储器,是因为只要处在通电的状态,里面的数据就可以保持存在;而一旦断电,里面的数据就会丢失。
4.2. DRAM
Dynamic Random Access Memory,动态随机存取存储器。
DRAM一般用作主存
,又称主内存(就是平时的内存条)。
DRAM芯片被封装在内存模块(memorey module)
中,通过将多个内存模块
连接到内存控制器,能够聚合成主存。
DRAM中的存储单元使用晶体管中的电容保存电荷的方式来存储数据,现实情况中晶体管存在漏电现象,电容上电荷数量不足时会造成数据丢失、损毁,从而必须周期性的充电、刷新,由于这种需要定时刷新的特性,因此称为’动态’存储器(相较而言,SRAM写入数据后,即使不刷新也不会丢失数据)。
4.3. 访问主存
数据流通过称之为总线(BUS)
的共享电子电路在CPU与主存(DRAM)之间来来回回。每次CPU与主存之间的数据传送都是通过一系列步骤来完成的,这些步骤称为:总线事务(bus transaction)
。
读事务(read transaction)
从主存传送数据到CPU;写事务(write transaction)
从CPU传送数据到主存;
DRAM(动态RAM、主存)和磁盘的性能严重滞后于CPU的性能,而且差距一直在拉大。
现代计算机频繁的使用基于SRAM的高速缓存存储器,弥补CPU与主存之间的差距。
5. 高速缓存存储器
早期计算机系统的存储器层级结构
只有三层:CPU寄存器、DRAM主存储器和磁盘存储。
由于CPU与主存之间的性能差距较大,设计者在CPU寄存器与主存之间插入了一个SRAM高速缓存存储器,称为L1高速缓存(一级缓存),访问速度大约是4个时钟周期,几乎和CPU寄存器一样快。
随着时间推移,CPU与主存之间的性能不断增大,设计者又在L1高速缓存
和主存之间插入了一个更大的高速缓存,称为L2高速缓存(二级缓存),访问速度大约是10个时钟周期。
有些现代计算机系统,还增加了一个更大的高速缓存,称为L3高速缓存(三级缓存),访问速度大约是50个时钟周期。
当一条加载指令指示CPU从主存地址A读取数据时,CPU会将地址A发送给高速缓存。
如果此时高速缓存正保存着地址A数据的副本,高速缓存会立即将数据发回CPU。
5.1. 真实高速缓存层次结构
如下图,Intel Core i7处理器的高速缓存层次结构。
每个CPU芯片包含四个核(Core),每个核有自己私有的L1、L2高速缓存,所有核共享芯片上的L3高速缓存。
这种设计的特性是,所有的SRAM高速缓存存储器都在CPU芯片上。
6. 扩展
查阅资料时,发现以下内容,适合继续深入了解、学习。
- 浅谈Cache Memory
- 高速缓存与一致性
- Cache Line 伪共享发现与优化
- 与程序员相关的CPU缓存知识
- 缓存更新的套路
- 7个示例科普CPU Cache
- Cache设计总结
- Cache的基本原理
- L1,L2,L3 Cache究竟在哪里?
- 【目录序言翻译】缓存替换策略《Cache Replacement Policies》
- Why is the size of L1 cache smaller than that of the L2 cache in most of the processors?(关于L1/L2大小的讨论 )
7. Reference
- 《深入理解计算机系统》(第3版)
- 《计算机组成与设计:硬件软件接口》(第5版)
- CPU性能和CACHE
- CPU是如何执行的
- 缓存一致性(Cache Coherency)入门
- CPU缓存 - 维基百科
- MESI协议 - 维基百科
- 《深入浅出计算机组成原理 - 极客时间》