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

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

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云计算微博,了解更多云信息。

《近匠》RealSense:几行代码,为游戏添增实感交互 MDCC游戏应用征集关键词:中小团队,3D,转型,IP 共话HealthKit:能否颠覆医疗保健生态系统? Perception Neuron系统,让动作捕捉技术不再高冷 2014年DevOps实践调查报告 .NET程序性能的基本要领 百度手机卫士宣布开放三大能力 构建互联网安全生态 火速围观,AMD APU新芯片架构A68H呼之欲出! 对于测试人员而言,TDD意味着什么? 年用电910亿度,那些庞大的数据中心该用什么支撑 走近黑客们的世界,感受网络空间的心跳 VMworld 2014 Day One:Docker、数据中心、混合云新举措 Docker和Kubernetes或将加速SDN发展 前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js 【CTO俱乐部读书会】《流程的永恒之道》辛鹏:企业的本质就是流程运营 紧扣微信研发痛点 2014微信开发者大会吸引大量外地参会者 Mobile First!jQuery UI组件集Wijmo五年最大更新 首届TCL杯HTML5智能电视—应用开发大赛火热开启! MDCC智能硬件征集关键词:智能家居、机器人、健康生活 采集颜色、自动同步,还有比这更牛叉的儿童触控笔么? AppCan移动平台:为企业移动化进程加速 学生强则国强,访天猫推荐算法大赛Top 9团队 Mozilla与三星之子——Servo特性解读 360天巡启动公测 打造新一代企业级无线安全解决方案 继Storm和Spark之后,Hortonworks添加对Kafka的支持 一周消息树:国产操作系统最快10月发布,并支持应用商店 技术团队看板方法实践的难点分析 SAP云服务加速转型:调动资源瞄准中国市场 开发测试全承包!移动应用开发工具Telerik平台 火火火火火!看HomeKit如何改变物联网和智能家居? MDCC应用与工具关键词:平台、社交、垂直、解决方案 》》怎么没有人解决这个问题呀,谁解决,我给分!!!!! 为什么快捷方式不能用? ★★★有没有像“delphi属性编辑框”一样的控件或是源码(100-1000分)★★★ 谁有RealPlay格式详细信息 500分求救! 请问大家那里有jrun 4下载 如何自己析构单文档模板? MASM32中标号的疑问 这个错误该如何改 关于在OUTLOOK中如何自创模板的问题? com系列丛书那里有卖 一个关于鼠标事件的简单问题 为什么我在JSP中能得到TEXT文本中的数据,却得不到在SELECT中的数据呢? 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K? 我要一个功能强大的弹出日历 Viva La Costa Rica! 我再也不看Chinese Team的比赛了! 如何做jar包呢?还有如何做bak呢?大家救救我吧。 《inside the c++ object model》问题 这句是什么意思??? 问一个Win2000Server域用户客户端登陆问题。 小问题:在线等待:) 如何删除一个ini文件中的关键项目?急 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K? 求教关于c++builder的图象预处理的源代码。50分!!还有金钱相送! access的问题 郁闷!!关于数据窗口一个奇怪的问题!! 如何实现断点续传 寻求《软驱监控程序》!!!!!!!!!!!!!!价格面议 用imp恢复数据库,要做什么准备呀? 刚才给分失败,重新散分! 关于SQLserver数据库和MDB数据库的句语问题!!! IE数据保密大全,如何禁止以下功能?菜单,工具栏,收藏夹,鼠标右键,PRINTSCREEN键,键盘快捷键 帮忙:DCOM 无法使用任何配置的协议与计算机 慨n 通信? 查询问题 请教bean中填写方法问题,高手帮忙啊!!!!! 昨天回家遇到打劫,被暴打一顿 本人有一个数据窗口对象中的一个字段,其为DDDW型的,可是在它的选项页中却怎么也不能显示出我想设置的名字显示出来,却总是显示保存在表中 在线求助,当场送分。 用MASM编译DOS程序经常有问题啊!? asp.net问题 有关DateDiff的问题。。。SOS 请问用什么软件制作chm帮助文档? 数据库中记录条数在增加,但字段却是空的呀??? 高分求:如何确定TreeView的SelectedItem为空? ******* 怎样调试硬中断程序? 存储过程中的一个语法问题 servlet中forward到jsp页面的显示问题 SOS:请问一个页面在不同分辨率下适应性的问题! 我在做数据库链接时,出现了编译错误,实在看不错在哪里(在线等待) rpm的升级过程中的问题,请大家关注 有关gethostbyname的问题 求有机高手:在正溴丁烷的制备中,依次加入水、浓硫酸、正丁醇、溴化钠之后,为什么整个烧瓶会变成深红色 误食体温计中的水银有什么危害 什么是十一届全国人大一次会议第五次全体会议第五次全体会议是什么意思? 加料时,先使用溴化钠与浓硫酸混合,然后加正丁醇,为什么? 判断一下题目是否正确.为什么?1.将水加热,Kw增大,pH不变.2.偏铝酸钠的水溶液经加热浓缩、蒸干灼烧后能得到其固体. 1关于牛顿第一定律,下列说法不正确的是1A、不能直接用实验来证明B、是根据实验推理出来的结论C、可以用“斜面实验”来证明D、是多人总结概括的结果2由于实际上不存在不受力的作用的 我吃了两支体温计里的水银,多久会发病? 判断下面题目是否正确,为什么? 1.下列关于催化剂的说法不正确的是( ).A.化学反应前后,催化剂的质量和化学性质都不变B.催化剂可以提高某些化学反应的速率C.催化剂可以降低某些化学反应的速率D.任何化学反应都需要催 我刚才摔了个体温计,体温计里含水银多么? 春秋战国时期的成语典故,要简洁一些 ( )1、下列说法正确的是A.欧姆表的测量范围是从零到无穷 B.用不同档次的欧姆表测量同一个电阻的阻值,误差是一样的 C.用欧姆表测电阻时,指针越接近中央时,误差越大 D.用欧姆表测电阻时 那后来你的宝宝误食体温计内的水银后有没有去医院检查过?之后有没有什么症状? 判断是否正确? 葛洲坝和三峡哪个大 电动汽车的发动机功率是多少 春秋战国时期的成语典故卧薪尝胆\一鸣惊人\纸上谈兵\胡服骑射\围魏救赵\负荆请罪\退避三舍的含义以及典故 三峡葛洲坝位置分别在长江那个位置哥们没那么麻烦就是哪个更偏上一点,不用那么具体…… 电动汽车的发动机是利用什么原理制成的? 判断③是否正确 比三峡小,葛洲坝大的水电站说一下具体地点和水电站的名字 我吃了两支体温计里的水银,多久会发病? 帮我判断是否正确 长江三峡起源及结束开垦开垦坎坎坷坷 如果勿食了体温计里的水银,会死吗 CO2和NaOH反应的离子方程式 区分日常生活中的下列各组物质,鉴别方法正确的是选项 待鉴别的物质 鉴别方法A 氯化铵和碳酸钾 加水溶解B 自来水和蒸馏水 加肥皂水,观察产生泡沫多少C 羊毛纤维和化学纤维 灼烧闻气味, 电动车的电机有声音吗 CO2分别与少量NaoH和足量的NaoH溶液反应的离子方程式?Why? 三峡中各个峡的名称的来历是什么?三峡中的西临峡为什么叫“西临峡”西临峡的一段黄猫峡为什么叫“黄猫峡”?灯影峡为什么叫“灯影峡”?崆岭峡为什么叫“崆岭峡”?米仓峡为什么叫“米 周朝的政治制度与强调平等竞争和奋斗的现代社会有什么根本差异? 电动车电机充电时会有声音?我习惯晚上22点开始充:上海地区分时记价,22点后半价用电22点后一般也应该睡了刚刚起夜,听到有轻微的呼呼声,循声而去,竞是充电器仰或电池! 氢氧化钠溶液和二氧化碳的反应离子方程式? 关于周朝的政治制度,第一:周朝分封给诸侯的封地是不是属于诸侯个人管辖?封地内的事务,如任命官员和管理百姓,是不是都由分封诸侯自行解决?周王朝中央有权干涉吗?第二:周朝的分封诸 AL+H2O+NaOH====NaALO2+H2↑(加热) 线上等啊``帮帮忙`` 印度手工棉纺织业原来很发达,棉纺品曾经大量出口英国.19实际以后,英国凭借强大的实力,采取各种手段,打击印度的棉纺织业,是指迅速衰落下去.著名的纺织业城市达卡,187年有15万人口,8年后 周朝河伯国究竟在哪?居民属于什么民族? Al+NaOH+H2O=NaAlO2+H2配平配平,写出思路,方法, 越南语翻译,别人发我,我看不懂. 为什么说修建葛洲坝是修建三峡的基石 那位专家能为我详细剖析下 “Al+NaNO3+NaOH=NaAlO2+N2+H2O”怎么配平 帮我翻译成越南语,谢谢(叫你姐姐打电话给我!)不要软件翻译,他看不懂 周朝后期政治混乱的表现 AL+NaOH+H2O=NaAlO2+3H2 这个化学方程式用用化合价的升降法来配平怎么配》? 英语翻译如图所示..这玩意有何作用 鉴别KOH溶液、稀H2SO4、CaCl2溶液下列试剂中,能把KOH溶液、稀H2SO4、CaCl2溶液鉴别出来的是1.KCl 2.K2CO3 3.稀HCl为什么 NaOH+Al=NaAlO2+H2怎么配平? 下列说法正确的是 ( ) A a的系数是0 B 1下列说法正确的是 ( )A a的系数是0 B 1/y是一次单项式C -5x的系数是5 D 0是单项式 用一种试剂即可一次鉴别出稀h2so4溶液,bacl2溶液和kno3溶液,这种试剂是A, NaOH B,Na2CO3C,AgNO3D,CaCO3 NaOH与NaHSO4的反应方程式 1.关于自由落体运动,下列说法正确的是A.物体竖直向下的运动一定是自由落体运动B.自由落体运动是初速度为零、加速度为g的竖直向下的匀加速直线运动C.物体只在重力作用下从静止开 制备1-溴丁烷时,为什么浓硫酸能除去正丁醚和正丁醇 小孩误食体温计里的水银怎么办? 1.下列有关气体压强的说法中,正确的是()A.气体分子的密度减小,气体的压强一定增大.B.气体分子的密度增大,气体的压强一定增大.C.气体分子的平均动能增大,气体的压强一定增大.D.气体分 实验室里用加热正丁醇、溴化钠和浓H2SO4的混合物的方法来制备1-溴丁烷时,还会有烯、醚和溴等副产物生成.反应结束后将反应混合物蒸馏,分离得到1-溴丁烷,已知有关的有机物的性质如下 幼儿误食体温计水银怎么办? 1.关于无形资产的后续计量,下列说法中正确的有( ). 为什么正丁醇和HBr反应制1-溴丁烷的时候浓硫酸适当稀释可以减少HBr的挥发? 磷酸二氢铵溶液与 足量氢氧化钠溶液的反应方程式及离子方程式, 氢氧化钠与碳酸钠反应的方程式.注:氢氧化钠 NaOH 碳酸钠 Na2CO3 我没打错吧,确实是这样的。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘