相关链接:http://www.oschina.net/translate/what-every-programmer-should-know-about-memory-part1
RAM(随机寄存器)
ROM ( 只读寄存器 )
个人计算机和小型服务器被标准化到了一个芯片组上,它由两部分组成: 北桥和南桥,见图
CPU通过一条通用总线(前端总线,FSB)连接到北桥。北桥主要包括内存控制器和其它一些组件,
内存控制器决定了RAM芯片的类型。不同的类型,包括DRAM、Rambus和SDRAM等等,要求不同的内存控制
器。为了连通其它系统设备,北桥需要与南桥通信。南桥又叫I/O桥,通过多条不同总线与设备们通信。
目前,比较重要的总线有PCI、PCI Express、SATA和USB总线,除此以外,南桥还支持PATA、IEEE 1394、串
行口和并行口等。比较老的系统上有连接北桥的AGP槽。那是由于南北桥间缺乏高速连接而采取的措施。现在的
PCI-E都是直接连到南桥的。
这种结构有一些需要注意的地方:
- 从某个CPU到另一个CPU的数据需要走它与北桥通信的同一条总线。
- 与RAM的通信需要经过北桥
- RAM只有一个端口。{本文不会介绍多端口RAM,因为商用硬件不采用这种内存,至少程序员无法访问到。
- 这种内存一般在路由器等专用硬件中采用。}
- CPU与南桥设备间的通信需要经过北桥
在上面这种设计中,瓶颈马上出现了。第一个瓶颈与设备对RAM的访问有关。早期,所有设备之间的通信
都需要经过CPU,结果严重影响了整个系统的性能。为了解决这个问题,有些设备加入了直接内存访问(DMA)
的能力。DMA允许设备在北桥的帮助下,无需CPU的干涉,直接读写RAM。到了今天,所有高性能的设备都
可以使用DMA。虽然DMA大大降低了CPU的负担,却占用了北桥的带宽,与CPU形成了争用。
第二个瓶颈来自北桥与RAM间的总线。总线的具体情况与内存的类型有关。在早期的系统上,只有一条总线,
因此不能实现并行访问。近期的RAM需要两条独立总线(或者说通道,DDR2(Double Data Rate 2)就是这
么叫的,见图2.8),可以实现带宽加倍。北桥将内存访问交错地分配到两个通道上。更新的内存技术
(如FB-DRAM)甚至加入了更多的通道。DDR2内存拥有两倍于上一代双倍速DRAM(DDR)内存预读取能力
(即:4bit数据读预取)。换句话说,DDR2内存每个时钟能够以4倍外部总线的速度读/写数据,并且能够以内
部控制总线4倍的速度运行。