memory:part1-1

What every programmer should know about memory

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

1 前言

        在早期,计算机比较简单。系统的各种部件,例如CPU,内存,大容量存储器,和网络接口,都是一同开发的,因此,它们的性能是相当平衡。例如,内存和网络接口(得多)不比提供数据的CPU的速度快。

        一旦计算机的基本结构稳定,硬件开发人员可以集中优化各个子系统的,形势骤变。突然某些计算机组件的性能明显落后,形成了瓶颈。对大容量存储和内存子系统尤其如此,由于成本的原因,它们性能的提升相对于其他组件速度慢很多。

        大多使用软件技术处理缓慢的大容量存储:操作系统(最有可能被使用)把最长使用的数据放在主存储器中,访问它们比硬盘访问要快数个数量级。存储设备本身也加入缓存,这不需要修改操作系统就可以提高性能。 {然而,当使用存储设备的高速缓存,为了保证数据的完整性,变动是必要的。} 本文的目的,我们不会深究更多软件优化的大容量存储访问的细节。

        不同于存储子系统,去除主内存的瓶颈已被证明要困难得多,几乎所有的解决方案都需要更改硬件。今天,这些变化主要来自于以下几种形式:

RAM的硬件设计(速度和并行)。 内存控制器的设计。 CPU缓存。 设备的直接内存访问(DMA)。

        在大多数情况下,本文将处理CPU高速缓存和一些影响存储器控制器设计的东西在。探索这些主题的过程中,我们将探讨DMA,并把它到插入大的图中(系统架构图)。但是,我们将开始介绍今天的商品化硬件的设计。这是了解有效地使用内存子系统存在的问题和局限性的一个先决条件。我们也将了解不同类型的RAM在一些细节的差别,并说明这些差别为什么仍然存在。

        本文是在完全包含所有的,也不是最终的。它仅限于商品硬件,进一步的限制于硬件的一个子集。此外,本文的目的就是把许多议题的细节讨论的足够清晰,本文的目标。对于这样的话题,读者可以找到更详细的文档。

        当涉及到操作系统的具体细节和解决方案,专门的文字描述了Linux操作系统。在任何时候,它都不包含其他操作系统的任何信息。笔者有没有兴趣讨论其他操作系统的影响。如果读者认为他/她使用不同的操作系统,他们只能去找它们的供应商,要求他们写与此类似的文件。

        开始前的最后一个意见。文本包含了一些术语“通常”和其他类似的限定词的出现。这里讨论的技术存在很多很多的变化,在现实世界中,本文只针对最常见的,主流的版本。对于术语来说绝对的的语句是罕见的,那只能是限定词。

1.1 文档结构

本文档主要面向是软件开发人员。,它没有深入对硬件为导向的读者有用的,足够多硬件技术细节。但我们可以深入的实用信息之前,大量的基础必须为开发者奠定。

那之后,第二部分描述了随机存取存储器(RAM)的技术细节。本节的内容最好应该知晓,但也绝不是能够理解后面的章节的关键。适当的向后引用在内容需要的时候加入,心急的读者可以跳过这一节开头的大部分。

第三部分深入了大量的CPU的高速缓存操作的细节。图示的使用可以使文本不那么干瘪。此内容文档的其余部分的理解是必不可少的。第4节简要介绍了如何实现虚拟内存的。这也要求其余的基础工作。

第5节深入大量介绍的非统一内存访问(NUMA)系统的细节。

第6节是本文的中心。它汇集了所有前面的章节中的信息,并为程序员提供了关于如何在各种情况下,写出运行良好的代码的建议。很不耐烦的读者可以从本节开始,如果必要的话,回到前面的章节,修习底层技术的知识。

第7章介绍的工具可以帮助程序员把工作做得更好。即使对技术有完全的理解,在一个复杂的软件项目中问题就不显而易见了。一些工具是必要的。

在第8节中,我们给出了一个技术的远景,在不久的将来是可以期待的,或很简单的就能拥有。

1.2 反映问题

        作者想更新本文已经有一段时间。这中必要包括由于技术的进步导致的更新必要,但也要纠正错误。我们鼓励读者发送电子邮件报告问题。

1.3致谢

我想感谢Johnray Fuller,特别是Jonathan Corbet, 他负责的一部分艰巨的任务,把作者自身式英文转换成更传统的。Markus Armbruster对文本中存在的问题和疏漏提供了很多宝贵的意见。

1.4 关于本文

本文的标题是向大卫戈德堡的经典论文“What Every Computer Scientist Should Know About Floating-Point Arithmetic”致敬[goldberg]。对于敢于敲击键盘进行严肃的编程人们,虽然它是一个先决条件,Goldberg的论文仍然并非为很多人所知。


转载于:https://my.oschina.net/daleshen128/blog/77148

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值