每个程序员都应该了解的内存知识(一): 南桥&北桥&内存
南桥&北桥&内存
结构
每个程序员都应该了解的内存知识.pdf - p5 - 每个程序员都应该了解的内存知识-P5-20240327103419
功能
每个程序员都应该了解的内存知识.pdf - p5 - 每个程序员都应该了解的内存知识-P5-20240327104347
北桥
主要是连接CPU以及RAM以及南桥, 作为连接通路
南桥
连接其他系统设备, 也叫做I/O桥, 比如 PCIE / SATA / USB总线....
问题
- 所有的访问都需要经过北桥, 导致北桥需要一个非常巨大的带宽
- 内存访问的延迟问题
集成内存控制器
每个程序员都应该了解的内存知识.pdf - p7 - 每个程序员都应该了解的内存知识-P7-20240328111248
RAM
静态RAM (SRAM)
每个程序员都应该了解的内存知识.pdf - p8 - 每个程序员都应该了解的内存知识-P8-20240328111544
优劣
- 一个单元需要六个晶体管
- 需要恒定的电源
- 状态稳定, 不需要刷新
动态RAM (DRAM)
每个程序员都应该了解的内存知识.pdf - p9 - 每个程序员都应该了解的内存知识-P9-20240328111804
动态随机存取内存(DRAM)的基本原理是使用一个电容器和一个晶体管来存储每一位(bit)信息。在DRAM单元中,电容器负责存储电荷,而晶体管则作为一个开关,来控制电容器的充电和放电。这里是DRAM的工作原理的详细介绍:
- 存储数据:在DRAM中,一个逻辑"1"是通过电容器充电来表示的,而逻辑"0"则是通过电容器放电来表示的。当写入数据时,控制电路会使晶体管导通,从而允许电流充入或从电容器排出,根据需要存储"1"或"0"。
- 读取数据:要读取存储的信息,控制电路会再次使晶体管导通。这时,电容器中的电荷会被转移到一个感应电路上。感应电路检测电荷的存在与否,并将其转换为数字信号,即"1"或"0"。
- 刷新操作:电容器会因为自身的漏电现象以及周围环境的干扰而逐渐失去电荷。为了维持数据的准确性,DRAM需要定期进行刷新操作。DRAM的刷新是通过重新充电存储"1"的每个电容器来实现的。这通常是通过一种称为"自动刷新"的过程来完成的,其中DRAM芯片会自动循环遍历所有的存储单元,并重新充电。
- 寻址:DRAM芯片包含了大量的存储单元,它们被组织成一个二维数组。每个存储单元的位置由行地址和列地址共同确定。当CPU或其他设备请求访问特定的存储单元时,控制电路会先激活对应的行(称为行选通或RAS),然后激活对应的列(称为列选通或CAS),以选中特定的存储单元进行读取或写入操作。
两种RAM的比较
- SRAM的速度更快, 但是价格高, 容量低
- DRAM访问速度慢, 但是实现简单, 容量高