第2章 Cache和内存

发布时间 2023-11-13 11:07:15作者: ImreW

第2章则系统地介绍内存和cache的相关基本知识,分析了各种IA平台上的cache技术的特点和优势,并介绍了一个DPDK的重要技术“大页”的使用。

2.1 存储系统简介

一般而言,存储系统不仅仅指用于存储数据的磁盘、磁带和光盘存储器等,还包括内存和CPU内部的Cache。当处理完毕之后,系统还要提供数据存储的服务。存储系统的性能和系统的处理能力息息相关,如果CPU性能很好,处理速度很快,但是配备的存储系统吞吐率不够或者性能不够好,那CPU也只能处于忙等待,从而导致处理数据的能力下降。接下来本章会讨论Cache和内存,对于磁盘和磁带等永久性存储系统,在此不作讨论。

2.1.1 系统架构的演进

在当今时代,一个处理器通常包含多个核心(Core),集成Cache子系统,内存子系统通过内部或外部总线与其通信。

在经典计算机系统中一般都有两个标准化的部分:北桥(North Bridge)南桥(South Bridge)。它们是处理器和内存以及其他外设沟通的渠道。处理器和内存系统通过前端总线(Front Side Bus, FSB)相连,当处理器需要读取或者写回数据时,就通过前端总线和内存控制器通信。图2-1给出了处理器、内存、南北桥以及其他总线之间的关系。

我们可以看到,该架构所有的处理器共用一条前端总线与北桥相连。北桥也称为主桥(Host Bridge),主要用来处理高速信号,通常负责与处理器的联系,并控制内存AGP、PCI数据在北桥内部传输。而北桥中往往集成了一个内存控制器(最近几年英特尔的处理器已经把内存控制器集成到了处理器内部),根据不同的内存,比如SRAM、DRAM、SDRAM,集成的内存控制器也不一样。南桥也称为IO桥(IO bridge),负责I/O总线之间的通信,比如PCI总线、SATA、USB等,可以连接光驱、硬盘、键盘灯设备交换数据。在这种系统中,所有的数据交换都需要通过北桥:

  1. 处理器访问内存需要通过北桥。
  2. 处理器访问内存需要通过北桥。
  3. 处理器访问内存需要通过北桥。
  4. 处理器访问内存需要通过北桥。

可以看出,这种系统的瓶颈就在北桥中。当北桥出现拥塞时,所有的设备和处理器都要瘫痪。这种系统设计的另外一个瓶颈体现在对内存的访问上。不管是处理器或者显卡,还是南桥的硬盘、网卡或者光驱,都需要频繁访问内存,当这些设备都争相访问内存时,增大了对北桥带宽的竞争,而且北桥到内存之间也只有一条总线。

为了改善对内存的访问瓶颈,出现了另外一种系统设计,内存控制器并没有被集成在北桥中,而是被单独隔离出来以协调北桥与某个相应的内存之间的交互,如图2-2所示。这样的话,北桥可以和多个内存相连。

图2-2所示的这种架构增加了内存的访问带宽,缓解了不同设备对同一内存访问的拥塞问题,但是却没有改进单一北桥芯片的瓶颈的问题

为了解决这个瓶颈,产生了如图2-3所示的NUMA(Non-Uniform Memory Architecture,非一致性内存架构)系统

在这种架构下,在一个配有四核的机器中,不需要一个复杂的北桥就能将内存带宽增加到以前的四倍。当然,这样的架构也存在缺点。该系统中,访问内存所花的时间和处理器相关。之所以和处理器相关是因为该系统每个处理器都有本地内存(Local memory),访问本地内存的时间很短,而访问远程内存(remote memory),即其他处理器的本地内存,需要通过额外的总线!对于某个处理器来说,当其要访问其他的内存时,轻者要经过另外一个处理器,重者要经过2个处理器,才能达到访问非本地内存的目的,因此内存与处理器的“距离”不同,访问的时间也有所差异,对于NUMA,后续章节会给出更详细的介绍。

2.1.2 内存子系统

为了了解内存子系统,首先需要解释一下和内存相关的常用用语。

  1. RAM(Random Access Memory):随机访问存储器
  2. SRAM(Static RAM):静态随机访问存储器
  3. DRAM(Dynamic RAM):动态随机访问存储器
  4. SDRAM(Synchronous DRAM):同步动态随机访问存储器。
  5. DDR(Double Data Rate SDRAM):双数据速率SDRAM。
  6. DDR2:第二代DDR。
  7. DDR3:第三代DDR。
  8. DDR4:第四代DDR。