内存二三事,part1

1.简介

早期的计算机较现在更简单。计算机系统的组件例如CPU,内存,硬盘,网络接口同时发展起来,结果就是他们在性能上很平衡。例如在数据传输速度上,内存网卡cpu相差不多。

但是,当计算机系统的整个结构确定后,每个子部件的发展速度就各不相同了。例如 CPU发展非常快,但是内存和硬盘由于很多原因发展很慢。于是,内存,硬盘等成为了计算机性能发展的瓶颈。这些瓶颈,我们通过软件技术,例如OS来弥补。例如,存储系统较CPU还是非常慢,我们通过数据缓存(把硬盘中的数据缓存导RAM中)来缓解高速和低速间的不平衡。

对于数据存储和访问,有下面几个措施来改善:

  • RAM硬件的设计
  • 内存控制器设计
  • cpu缓存区
  • 外设DMA

本文档只对CPU缓冲区和内存控制器做介绍,并且仅局限于LINUX的。

2.计算机系统架构

声明:这里只对商用类型做介绍,专用的不在谈论范围内。

历来,个人PC通常由两部分组成:

{ { 北桥 南桥

最开始的计算机架构:

所有的CPU通过总线与北桥连接,北桥包括内存控制器,对于不同的RAM,例如SRAM,DRAM,SDRAM,需要不同的内存控制器。
为了与其他设备通信,南桥和上面的北桥连接。南桥充当输入/输出的桥,通过各种不同的总线协议(USB,SATA,PCI等)与外部设备通信。
这里有以下结论:

  • 多CPU必须经北桥进行通信
  • 与RAM通信必须经北桥
  • RAM只有一个通道(文档年代久远,现在有DDR3,DDR4)
  • 与南桥相连的设备若想同CPU通信,必须经北桥

对于上图的设计,存在两个瓶颈
(1)设备访问RAM要经过CPU,这样性能差。于是提出DMA(directly data access ),设备直接经过北桥访问内存,不经过CPU。这样减少了CPU的负载,但同时北桥的带宽被占用了,于是出现瓶颈(2)。
(2)早期RAM只有一个通道(现在有多通道了,DDR3,DDR4),带宽有限,高并发通信时,数据通信延迟大。所以,增加数据流通的管道可以提高速度。内存条DDR4就比DDR3快。

如何在计算机系统架构上提高带宽呢?

方法一:在一些比较贵的计算机系统中,为了提高RAM的访问带宽,使用下图架构:

这个系统的特点是:把内存控制器从北桥剥离出来,使用外部内存控制器,这样的设计可以提高内存访问的带宽,也拓展了内存容量。

方法二:
在多cpu系统中(SMP),把内存控制器集成到CPU中,内存通道一下扩大4倍。

这种架构拓展了RAM的带宽,现在大型服务器很流行用,但也有缺点。即NUMA,非一致内存访问。每个CPU对自己attach的RAM访问速度很高,但访问别的CPU的RAM速度就打折了(多走路了)。但这些都可以通过软件层面优化,比如OS。

3.附加

自己的电脑到底使用的何种架构,我也没深究过,不过,架构主要由CPU主板共同决定。

4.参考

原文地址:https://lwn.net/Articles/250967/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值