What Every Programmer Should Know About Memory 是Ulrich Drepper所写,对memory做了一个比较系统的阐述,这是读后感第一篇

  1. Memory在Commodity Hardware中的传统位置
    传统上说,所有的machine均遵循冯诺依曼架构,memory在冯诺依曼中的位置,以x86机器为例可以用下图来描述
    image 
    CPUs和北桥相连,北桥用来access memory,南桥是连接cpu和I/O的通道,但在南桥和CPU之间还隔着北桥
    FSB是Front Side Bus的简称,是用以连接CPU和北桥之间的总线,所以有自己的frequency。
    北桥中一个重要的component是memory controler,所以access memory的动作都必须经memory controler来完成
  2. 以上view1是传统view,还有两种improved的view
    image image
    这两种view都是为了将快access memory的速度,因为在view1中memory和北桥仅有一个bus/MC,而此时左图有了4个bus/MC,所以可以并行access memory,瓶颈在于北桥的吞吐量。
    右图中memory被集成到cpu中,cpu有自己的local memory,这是所谓的NUMA arch,此架构和左图不一样的是没有北桥,当然可以加一个北桥,来形成shared memory
  3. Memory Types
    SRAM是Static RAM,常用来做cpu cache,成本较高,访问速度快
    DRAM是Dynamic RAM,成本低,访问速度低,需要定时refresh来保留info,我们常用的内存其实指的就是它,虽然是个general term,又分为Rambus DRAM,SDRAM。
    SDRAM也是个general term,分SDR,DDR,DDR2,DDR3。
    对于SDRAM我们要有这么一个concept,这些RAM有自己的cell data rate,它能以自己的frequency将数据输出到总线上,而bus其实也是有自己的data rate的。
    SDR的意思就是cell data rate和bus data rate一致。见下图
    image
    DDR的data rate是SDR的两倍。见下图
    image
    DDR2的data rate又是DDR的两倍。见下图
    image
    DDR3的data rate是DDR2的两倍。见下图
    image
    这里最左边的rate是cell data rate,中间是I/O buffer rate,最右是FSB data rate。
    另外还有一种RAM技术是FB-DRAM,该RAM用于server,它使用DDR2技术,和DDR2不同的是memory和MC之间不是parallel bus连接,而是serial bus连接,而我们知道serial连接可以用higher frequency来drive,这弥补了数据link的减少损失,从而加大的访问速度。
Advertisements