首页 > 系统相关 >第2章 Cache和内存

第2章 Cache和内存

时间:2023-11-13 11:11:53浏览次数:35  
标签:北桥 Cache 总线 访问 内存 处理器

第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。

 

标签:北桥,Cache,总线,访问,内存,处理器
From: https://www.cnblogs.com/imreW/p/17828703.html

相关文章

  • Linux服务器不自动杀死超内存Python程序导致服务器卡死掉线
    状态:Python处理大数据时,内存占用超过服务器可用内存,但是服务器并没有杀死该进程,而是被卡死无法通过ssh进入解决方向:一、设置系统内存限制:使用 ulimit-a查看系统参数ulimit-a 命令的结果中会显示各种资源的限制参数。以下是一些常见参数及其含义:corefilesize (ulimit......
  • excel对比两个文档,判断范围内的取值是否在另一个列表内存在(vlookup函数的使用)
    背景:sheet1表为原始数据:sheet2表为新的数据副本,目标是查询sheet2列表中是否存在sheet1表的数据,并且标记出来,且获取sheet2列表的一些数据至sheet1列表中,补充D与E两列的数据情况: 一、vlookup函数介绍:作用:垂直查找(按列号查找)函数说明:vlookup(lookup_value,table_array,col_......
  • C++ 内存分区
    C/C++内存管理C/C++内存分布转载https://www.coonote.com/note/cpp-memory-management.htmlC/C++程序内存分配的几个区域:栈区(stack)在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集......
  • JVM内存泄漏的8种情况
    1静态集合类静态集合类,如HashMap、LinkedList等等。如果这些容器为静态的,那么它们的生命周期与JVM程序一致,则容器中的对象在程序结束之前将不能被释放,从而造成内存泄漏。简单而言,长生命周期的对象持有短生命周期对象的引用,尽管短生命周期的对象不再使用但是因为长生命周期对象持有......
  • 68.Oracle的内存参数设置
    如果服务器是100G内存,那么Oracle的内存参数可以按照如下进行配置:altersystemsetsga_max_size=40000Mscope=spfile;altersystemsetstreams_pool_size=1200Mscope=spfile;altersystemsetlarge_pool_size=200Mscope=spfile;altersystemsetpga_aggregate_target=......
  • JVM系列-第7章-对象的实例化内存布局与访问定位-cnblog
    title:JVM系列-第7章-对象的实例化内存布局与访问定位tags:-JVM-虚拟机categories:-JVM-1.内存与垃圾回收篇keywords:JVM,虚拟机。description:JVM系列-第7章-对象的实例化内存布局与访问定位。cover:'https://gitee.com/youthlql/randombg/raw/master/lo......
  • 分类累加的内存数组结果
    问题:分类累加的内存数组结果下拉公式 =SUMIF(A$2:A2,A2,B$2)内存数组 =SUMIF(OFFSET(A2,,,ROW(1:5)),A2:A6,B$2)Offset组建多维引用,每个区域分别为A2、A2:A3、A2:A4、A2:A5、A2:A6,以此作为Sumif的第一参数条件区域,返回满足所有条件对应B列的结果。......
  • 一个操作系统的设计与实现——第8章 内存管理系统
    计算机上的任何程序,包括操作系统自己,都需要使用内存。因此,操作系统需要实现内存管理系统,以进行内存的分配和回收。在我们的操作系统中,内存管理系统由两部分组成:页分配器与页回收器。本章将实现这两个部分。8.1从虚拟地址到物理地址回顾CPU对内存地址的转换过程:使用段寄存器......
  • 哪些资源预分配了内存:e820
    在操作系统开始管理内存之前,首先要获取物理内存的信息,比如共有多少物理地址是可用的?有哪些物理地址是被ACPI(AdvancedConfigurationandPowerInterface)数据使用?这些信息从何而来?e820就是x86架构(包括x86_64)上的操作系统引导程序提供物理内存信息的功能。当请求BIOS中断号15H,......
  • 哪些资源预分配了内存:e820
    在操作系统开始管理内存之前,首先要获取物理内存的信息,比如共有多少物理地址是可用的?有哪些物理地址是被ACPI(AdvancedConfigurationandPowerInterface)数据使用?这些信息从何而来?e820就是x86架构(包括x86_64)上的操作系统引导程序提供物理内存信息的功能。当请求BIOS中断号15H,......