说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

粉碎硬件复杂论:开发者不懂硬件运行的方式怎么可以?!

HTML文档下载 WORD文档下载 PDF文档下载
对比理解像Hibernate这样复杂的框架,弄清程序赖以运行的硬件工作模式实在是太简单了。单一的去追求编程的技巧而不去弄清硬件的工作方式,无异于舍本逐末!

精彩的算法,优秀的编程技巧一直广受开发者的喜爱。然而开发者不懂系统赖以运行的硬件工作方式怎么可以?基于业内一直充斥着新型硬件已经复杂到难以理解的流言,高性能计算专家Martin Thompson发表了主题为《Mythbusting Modern Hardware to Gain "Mechanical Sympathy"》的演讲。他认为如果你可以理解像Hibernate这样复杂的框架,去弄清程序赖以运行的硬件工作模式实在是太简单了。

以下为译文:

Martin Thompson是位高性能计算专家,一直从事帮助开发者弄清新型计算系统的内部构造。他在Cache、Buffer、Memory Controller、Processor Architectures、Cache line等领域发表过多次讲话和教程。

Thompson认为当下开发者在系统运行的理解上并没有投入应有的精力,大家往往被有趣的和时尚的技术所吸引。他还认为与其传授开发者编程策略,何不让其具备自己发掘的能力。他认为当下的形势非常诡异:程序员花很多的时间去理解像Hibernate这样复杂的框架,而不是花很少一点努力去弄清程序赖以运行的硬件是如何工作的。

点击查看视频(YouTube)

“通过实践观察,而不是盲目发言”一直是Martin倡导的思想之一,所以给自己的演讲《Mythbusting Modern Hardware to Gain "Mechanical Sympathy"》选择一个MythBuster(流言终结者)的角色并不奇怪。在演讲中Martin抨击了“新型硬件复杂度已经让普通开发者无法理解”这个论调,并从CPU、内存、网络、存储I/O等多个方面剖析了新型硬件架构。期间他阐述了赛车手Jackie Stewart提出的"Mechanical Sympathy"这个术语:赛车手想获得更好的成绩,那么必须对汽车的运作有一个很好的了解,驾驶员必须与赛车配合的足够默契才能获得赛车的最佳性能。Martin将这个观点延伸到了开发领域,认为开发者需要清楚硬件的工作模式,才能更好的奴驾基础设施性能。如果你可以搞清楚Hibernate,就可以搞清楚任何事情。

讲话中最精彩的部分就是有些我们一直认为做随机访问的设备,比如内存、硬盘、SSD在特定的情况下会转换成串行设备。比如说磁盘,其实就是一个又大又快的磁带,其实它并不是真正意义上的随机访问。

流言1:CPU并没有变的更快

  • 根本原因在于CPU不能更加赖热,而不是不能变快。我们让CPU计算的更快,他们就会变的更热,并且这种局部散热是非常困难的。
  • 时钟速度不代表一切。举个例子,给Alice和Wonderland两个文档做word split,Intel Core 2 Duo,2008,2.40GHz处理器可以达到每秒1434次操作。Intel Core,2011,2.20GHz处理器可以达到每秒2674次操作;我们看到虽然时钟速度变慢了,但是速度几乎是提升了两倍,并且这个趋势在继续发展。
  • 取代继续变快,Sandy/Ivy Bridge平台的CPU内部使用了并行处理。比如使用3 ALU及6 Port的CPU用来加载和存储数据,我们就需要更多的Port来供给ALU,这样就可以达到每个周期并行处理6条指令的效果。

  • 当然这里还存在多分支和多步解决的问题。多分枝或者拥有除法的代码肯定没有使用简单连接词“+、-、*”来的快。

  • CPU拥有计数器,这样一来,我们就可以更直观的观察其性能。在Linux上使用pref stat访问计数器。

  1. 在Alice和Wonderland测试中使用Nehalem 2.8GHz运行pref stat,我们发现CPU空闲时间将达到1/3,这样的话更快的CPU其实并没有什么帮助。
  2. 而当使用Sandy Bridge 2.4GHz时,CPU的空闲时间也达到了1/4。实验证明快不在时钟速度上,而在指令被传送到CPU的速度。

流言2:内存提供的是随机读取

1. 这个问题我们考虑的根本其实是成本问题。因为主储存器非常昂贵,我们又想尽可能快的给CPU传送指令。那么我们该如何做?我们需要让数据尽可能的靠近CPU,然而新时代的寄存器到寄存器复制模式将没有任何开销,因为这里做的是重映射,甚至没有任何移动。

2. 缓存层。缓存是越大越缓慢,所以这是速度与成本的对抗,但是功率同样很重要。访问磁盘的功率永远要比访问L1缓存大得多。新型处理器已经着手将数据从网卡直接传输到缓存,这样跳过了内存,通过不涉及CPU来降低温度。

3. 在内存访问排序、缓存结构以及连贯性上有很多细节可谈。重点是内存的不同层以及CPU之间有非常复杂的环路。如果你不可以让内存的子系统、缓存、存储器总线足够的快,就无法足够快的给CPU传输数据,这也是CPU无法变快的原因。

4. 这就意味着软件必须以一个非常友好的方式访问内存,否则将会出现CPU饥饿的状况。在Sandy Bridge平台下了连续遍历内存需要在L1上花费3 clocks,L2上花费11 clocks,L3上花费14 clocks以及内存上的6ns。页内随机则分别是3 clocks,11 clocks,18 clocks以及22ns。全随机存储访问则是3 clocks,11 clocks,38 clocks以及65.8 ns。

5. 这是高效的内存连续遍历时间,所以我们如何访问内存将是非常、非常的重要。

6. 编写多分支代码将造成更多的指令丢失,因为这里有太多的数据需要跟踪。

7. 鉴于你不可能连续的遍历内存,你需要降低耦合以及增加连贯性好的耦合,良好的连贯性可以让这些变得非常高效。如果你的代码存在太多分支,并且都是运行在堆上,那么运行的速度将会相当的缓慢。

流言3:HDD提供的随机访问

  • 在磁盘内圈和外圈写入时性能有着很大的区别,更多的扇区被分布在磁盘的外圈,这样可以得到非常高的密度。将更多的扇区放到外圈,从而获得更高的密度。对于旋转的磁盘来说,这样可以获得更高的吞吐量。
  • 在1万转的磁盘上,外圈的连续读取速度可以达到220MB/S,而内圈的只可以达到140MB/S。
  • 最快的磁盘转速只有1.5万,并且已在这个数字上停滞好多年了。
  • 当光头移动到某个扇区时,磁盘会对这个扇区上数据进行预读取及重排序。为了能获取更多的数据,当下磁盘一个扇区的大小为4K,也就是说你在磁盘上写入或者读取1字节的数据,整个工作量会达到4K。
  • 操作由什么组成:

  1. 指令处理——亚秒
  2. 寻道时间——服务器0-6毫秒,笔记本0-15毫秒
  3. 旋转延迟——对于一个1万转的硬盘,旋转一圈需要6ms的时间,那么平均的旋转时间大约为3ms。
  4. 数据传输——100-200MB/S

  • 随机访问一个4K的块,延时时间是10ms或者是100IOPS。随机吞吐量每秒不会超过1MB,非常智能的硬件也不会超过2MB。这样再说磁盘是随机访问显然不切实际,如果你看到一些异常的数据,那只能说这些数据并没有真正的使用磁盘。
  • 磁盘就是个非常大的磁带,显然不是真正意义上的随机访问。

流言4:SSD提供了随机访问

1. SSD里一个块通常的大小为2MB,由大量的单元组成。SLC(Single Level Cell)——单层单元,每个单元可以存储1个字节(1、0)。MLC(Multiple Level Cell)——每个单元可以存储2或3个字节。

2. 单个单元的操作开销是巨大的,所以你可以针对行进行操作。这里被称为页,一页的大小通常为4K或者8K。以页的大小进行读或者写是相当快的,因为这里通常没有移动的过程。

3. 删除最小单位是块。SSD工作的方式是针对每个单元进行写入,当你向某个单元中写入数据并删除旧字节时,会发生这样的情况:删除一个字节是容易的,因为只需要关闭这个单元,然而当你打开一个单元时,你必须要同时打开这个单元附近的单元,这样你就不可以准确的去操作某个单元,所以你必须同时删除整个块。介于SSD中每个块的写入和读取次数是有限的,并且你的要求并不是删除整个块,所以这里只是将这个字节标注为删除。总而言之,数据被标记为删除,然后向新的块写入数据。这是有开销的,同时介于每个块读写次数都有着上限,所以直到这块SSD彻底报废,需要不停的做垃圾回收及块压缩。

4. 举个例子,SSD的读写和可以达到200M/S。当你做删除时,其读性能依然能得到保证,但是写入的速度明显下降,这就是因为SSD的垃圾回收机制。如果某块SSD的写入性能下降太多,你就必须为其重新格式化,同样还存在小的写入引起一连串的复制事件。

5. SSD在连续和随机读取上有着相当不俗的表现,如果你只做append-only write的话,性能也会一直不错。

6. 4K随机读写,40KIOPS的情况下,平均操作次数将达到100-300ms,将花去长达半秒的垃圾回收时间。

7. 局部的异变可能会导致极低的性能。

原文链接: Busting 4 Modern Hardware Myths - Are Memory, HDDs, And SSDs Really Random Access?(编译/仲浩 审校/王旭东)

欢迎关注 @CSDN云计算微博,了解更多云信息。

给MDI主窗口加背景-Delphi资料 更改StatusBar为黑底绿字-Delphi资料 画布的圆拷贝和直线拷贝-Delphi资料 回车替Tab下移控件-Delphi资料 获取系统颜色-Delphi资料 渐变色窗口背景-Delphi资料 控件深度投影和阴影效果的实现-Delphi资料 控制Delphi的窗口显示位置 控制Form不能放大、缩小、移动、关闭-Delphi资料 控制系统菜单-Delphi资料 利用Delphi实现支持窗体的自定义函数 轻轻松松在DELPHI3.0中实现三态按钮 全部窗体可使用鼠标移动-Delphi资料 让按钮连续工作--兼谈Delphi元件开发 让彩色光标出现在Delphi程序中 让彩色光标出现在程序中-Delphi资料 在Windows桌面的任务栏上有一个凹陷的区域,其中显示着系统时钟以及一些图标,这个长方形的区域便 如何使用Show方法来显示一个模态窗口-Delphi资料 如何旋转字体-Delphi资料 如何隐藏和显示Windows的任务条-Delphi资料 如何在DELPHI界面上运行可执行文件 设计Form时的快捷键-Delphi资料 生成非矩形窗口-Delphi资料 时隐时现的鼠标-Delphi资料 无标题窗口的移动-Delphi资料 应用程序敏感键的实现-Delphi资料 用Delphi 4.0 设 计 新 型 界 面 用Delphi 实 现 自定 义 颜 色 对 话 框 及 其 构 件 用Delphi 实现自定义颜色对话框及其构件 用Delphi4实现风Word97风格的工具栏 用Delphi 开 发windows 屏 幕 保 护 预 览 程 序 请问大家除了自考之外,还有什么途径可以将学历升到本科 定义一个p[1000],会不会内存不够用? 爱情为什么会使我如此痛苦. 关于 《DELPHI》 与 《C++》 的对比!!!!!!!!!!!!! 如何在同一窗口启动Word 动态报表问题--如何动态打印一个主表和多个细表的问题?? 如何制作有身份验证的单机数据库程序? JAVA中的指针,引用及对象的clone 请教大家。为什么我用access做的数据库但是用VC创建工程时却被告之不识别的数据库格式。 50分!!!兄弟们,BCB6安装完之后还要一次注册,activation key,谁知道? 软件黑奴们,我们算是白领吗? 有关office助手 怎樣跟蹤Access數據庫的操作 关于 《DELPHI》 与 《C++》 的对比!!!!!!!!!!!!! 非技术问题,不一定经典 ASP中如何上传文件到SQL2k 怎么从crosstab中取列名? c++ primer 难!难! 难!如何得到选中文本加亮矩形区域?? 如何在北京找一个工作+学习的机会? sql7.0如何升级到sql2000并且数据不变 DBGrid顯示的范圍如何定? 请教:在VC++中编程时,为何有的文件能出现类成员提示,有的文件编辑时不出现提示,有的只出现该类的,却没有其基类的类成员提示? 一个很好拿的高分 我写了一个拨号网络记时的工具,可以设定时间自动断线,提供源码.... 怎么读取外部数据源中的某个表中的某列的数据类型? 如何注册一个DCOM,让它跑在别的机子上? 关于用Win32 API画 BMP 图片问题 !急急急急急急急急急急 !!! Delphi 6 的 lib path 丢失!! help?谁知道Tab Control 控件的用法,12分的感谢!!!! 请问:如何在一般用户环境下启动管理员程序? 我想捕获网卡收到的数据包,该怎么搞? vb中调用sql server和ORACLE数据库的问题 北京的朋友,有谁知道这东西那里有卖的?? 想在c#和java中选一个,给点意见.客观点. 如何得到在另外一个窗口中所选择的结果 dcc32如何使用? 大哥,大姐们,这到题没分给,但我真的想知道答案 求对VSS或者Team Source开发的例子 科鼎校园网V2.3测试版网上演示 关于 WINDOWPLACEMENT Structure 关于用DELPHI联接ACCESS数据库怎样使用insert命令的问题(很急很急)加分多多!!! 学c#要那些知识前提。 请问新建怎么做? 为什么在excel表中可以看到的数字,用data连接后,在text和dbgrid中却看不到。(只显示出了其中的一部分) 简单问题,关于toolbar CTime类型变量的值存到数据库中datetime类型的小问题! vc怎样打开access数据库!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !求助,我的机子不能启动了。。。 XML中华网有好多的C#资料哦! 比较问题一道,关于 == 棱柱的侧面有没有三角形好像有 计算机中存储容量的单位之间,其换算公式正确的是A、1KB=1024MB B、1KB=1000B C、1MB=1024KB D、1MB=1024GB 怎样打出圆圈里一个R那种符号?就是注册商标那个符号哦 ^-^ 牛顿第二定律中 F=ma力的方向是不是一直跟加速度方向一致? 关于计算机容量的一些计量单位?如:1024=400h=2^10=1k 中的400h是什么意思怎么换算出来的? 符号“R”外面加圆圈.这个符号在哪里找 三棱柱的高为6cm,三个侧面都是矩形,底面三角形.1 三棱柱的高为6cm,三个侧面都是矩形,底面三角形的边长分别为3cm,4cm,5cm,将棱柱削成一个圆柱,求削去部分的体积的最小值.2 有三个球,第一个球 作文 第一次对妈妈说 我爱你 使用哪种导热硅胶好?导热硅胶的导热系数多少合适? 沥清防水涂料有毒吗?要多久才没有毒沥清防水涂料有毒吗?用来做室内防水,要多久才没有毒? 我爱你春天 作文450字四年级作文好的+15 我想测试导热硅胶片的导热系数,通过热阻怎么计算?测试标准是什么? 有没有初中生物竞赛题目? 我爱你,冬天 作文要求写景色和发生的一件事. 导热硅胶片的导热系数,怎么测试?什么方法呢 急下列结构中,把组成成分相同的分成一组,共可分成两组.正确的分组是①神经中枢②神经③神经纤维④灰质⑤白质⑥神经节 ( B )A.①②③和④⑤⑥ B.①④⑥和②③⑤C.①③⑤和②④⑥ D. 我爱你春天的作文 汽车标志:一双张开的,上翘的翅膀,中间是个圆圈,有个大写得R,下面还有一个R开头的英文单词标志是直接镶在车头引擎盖上的,不是站立的,大概有矿泉水瓶底那么大~我是昨晚在家旁边大酒店 另外,甲状腺激素是怎样合成的? 请各位哥哥姐姐们支支招,本人很喜欢生物学,马上就要竞赛了,(还有十来天),请大家说一哈如何答题,如何复习,说点有用的. 狮子座的太阳,月亮,水星,金星,火星,木星,土星,天王星,海王星,冥王星各落在什么星座.1984年8月7日临晨6点多吧出生地:内蒙古呼和浩特请问我的太阳,月亮,水星,金星,火星,木星,土星,天王星,海 骨骼的题单选 问哪个选项属于骨骼?A手骨 B肋骨 C椎骨 D股骨 好难啊 感觉都是 重力加速度公式m/s^2怎么理解比如说9m/s^2是什么意思,是不是v每秒的变化是:0m到81m到324m……呀? 求分析星盘行星 太阳 月亮 水星 金星 火星 木星 土星 天王星 海王星 冥王星 上升行星 太阳 月亮 水星 金星 火星 木星 土星 天王星 海王星 冥王星 上升 星座 双鱼座 双鱼座 水瓶座 魔羯座 魔 电容器的电容与哪些因素有关A.表面积B.电量C.无法确定D.电压 很多商品的商标旁边有一个圆圈里面写有一R字母是什么意思,代表什么? 是不是每个人都有太阳 月亮 上升 水星 金星 火星 木星 土星 天王星 海王星 冥王星的星座啊?如有的话 能告诉我他们分别代表着什么吗? 实验中若发现检流计指针始终往一边偏,无法实现补偿,可能由哪些原因造成 加速度什么情况用m/s² ,什么情况用m/s^-2 两种导热系数不一致导热硅胶意外混合之后总体导热效果会怎么样,其物理化学性质会有怎么样的改变呢? 棱柱的定义是什么 每s的加速度相同吗 每m的加速度一样吗 怎么理解爱因斯坦的这句话爱因斯坦说我们所存在的宇宙是一个体积有限但是没有没有边界的空间 罗马数字是IIV II IV 我也有一些这样的,就是后面没有编号 为什么速度求导是加速度,m/s 求导是-m/s^2 是关于爱因斯坦一句话的材料作文,麻烦帮我解释一下这句话的含义.爱因斯坦曾说过:“一个人是一个整体的一个部分——即我们所称的宇宙——受到时间、空间限制的一部分,他亲生体验到 大学英语四/六级……有没有其他级?过四六级有什么重要作用? m=800g,加速度a=40cm/s∧2,则F合 导热灌封胶的导热系数要大于多小W/m.k才算满足市场的需求? 大学英语阅读题目只有两篇实际意义上的阅读? 初三上半年物理化学知识要点 自由落体的加速度与重力的关系书上说自由落体的加速度g与重力有关,又说当物体自由下落时,不是下落速度,而是加速度与重力直接相关.请问:这两句话对吗? 如果对的话,那么这里的“重 大学英语两道选择题目求答案和解释.1、Mike became disabled after a diving accident at age 22,but _____ to work 14 years since his injury.A tried B started C managed D attempted2、Mike need 24-hour nursing assistance,but otherw 商标名称右上角圆圈中的R表示什么意思? 我想找一种高导热系数、膨胀系数小的灌封胶 加速度的单位如何转换?g和m/s2 容积单位常用的有哪些 质量不同的物体所受重力不同,加速度不同,为什么做自由落体运动的物体的加速度均为g? 现在大学英语一定要过4级吗?不过有什么后果?我英语很差,就考60分左右(满分150),过4级很难,再说也不想把大学的大好时光浪费在这样一个鸡肋的学科上面,大学英语过不了4级可以拿到毕业 容积常用什么单位表示 耐高温电子灌封胶的导热系数一般是多少请提供行业内耐高温电子灌封胶产品的导热系数的较高值和较低值. 牛顿第二定律(F=ma)中加速度符号一定为正吗 物体的加速度单位(a/m·s负二次方)是什么意思?代表什么?如题 常用的容积单位有?要三个 棱柱的侧面为什么不能是三角形 while ()an efficiency test on an engine ,certain precautions should be observed.a making b to make c being made d made.thanks a lot. 标圆圈的R怎么打,也就是商标符号 F=MA 牛二定律 自由落体时 当物体的加速度乘以他的质量时得到的合外力大于其重力会怎样 飞船以5g加速度上升,质量为m的宇航员对船底的压力宇宙飞船发射.设近地加速时,飞船以5g(重力加速度)的加速度匀加速上升,则质量为m的宇航员对飞船底部的压力为 常用的容积单位(3个)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘