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

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

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

NBA全明星周末,数据打造下的辉煌盛事 2014情人节没活动?我们来帮你! Windows 8授权销售已超过2亿份 速度不及Win 7 IDC:2013年第四季度Windows Phone出货量大幅增长 深入思考SDN的核心本质:从SDN=OpenFlow回到软件定义网络 谷歌、VMware在Chromebooks上双赢了,微软你怎么看? Tizen真要来了!又有15家IT大佬成帮会成员 研发周报:开源世界应该致谢的五家公司 Square、LinkedIn、Google... 看国外巨头如何“绑架”用户? 一周消息树:5.5寸屏幕的iPhone 6概念机来袭、索契冬奥会开幕式现Bug 一周热点:美国大学生数学建模分析,Hadoop不是万能,探访雅虎数据中心 Google Play services 4.2全球推送,完全支持Chromecast! 移动周报:最快的Web开发IDE——HBuilder Google Glass是空有噱头还是实用品? 服务好“最后一公里”,高效CDN架构经验 “义军”突起,帮用户夺回大数据控制权 为安全,Google收购基于超声波密码验证技术公司SlickLogin 2014 Shenzhen Maker Faire:国内顶级创客聚会即将举行 若无创新,智能手机将是死路一条 任道远上任VMware中国研发中心总经理 Windows免费,微软方能解救PC市场 Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解 将会出现iCar?苹果应该收购特斯拉的七大原因 广大程序员的福音:Bing Code Search扩展助你方便查找代码 深挖线下价值是当前婚恋交友网站获取盈利的突破点 15个最好的Bootstrap设计工具推荐 Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API【附PPT】 Webix 1.5发布:一个强大的JavaScript UI组件库 四大著名风投:在我们眼中只有技术革新 美女CEO谈AWS:是香水还是毒药 国外一学生发明新计算机系统,用微芯片代替硬盘 解决问题,马上结贴 xp風格的問題 请问如何让一个表格的边框的宽度和表格内部的线的宽度不一样? 请问wsad和eclipse哪里有下呢? 如何理解下面的程序段 调查:你(单位)愿意花钱买服务端控件吗? 为什么有些网页是繁体字! 我终于知道什么是英雄了! 关于快捷键。 一个丑人的自白(爆笑) 转载 如何实现信息反馈? 怎样使DataGrid固定显示8行??? 一个简单的问题,关于CListCtrl.. C++文件流的怪问题,竟然不能再次打开??? 怎样在win2000 专业版上使用PHP Linux下如何知道有哪些端口未被使用?? 共享上Internet网的另一台机为何一定要配上DNS服务器地址? 来共同研究开发 文件的变量名拼写错误的检查。。。 人生交叉点, 大家进来帮帮忙 在线等待急急!在超链中有的什怎么传不过去? pb还有出路吗? 如何知道有哪些端口未被使用 请教想在页面里调用js文件达到图片轮显效果 如何在动态库中获取调用该动态库的程序的文件名称? 如何获取灰度图中各象素点的灰度值?(在线等待) 请高手帮我解决这个离散余弦变换(DCT)的问题。高分相送。 求助:sql语名查询? 怎么样在输入数据后立即更新表格? 怎么在tablename是一个参数的表中取字段值? 触发器问题?触发器无法通过确认! 请问如何将字符1转化为数字1呢? 怎样在状态栏中显示页面载入进度? WebEasyMail 很好用,不过是asp的,不知道有没有php的收发邮件的程序代码? WebEasyMail 很好用,不过是asp的,不知道有没有php的收发邮件的程序代码? 菜鸟的一问,请帮忙!! 请帮帮忙指一下路 上一个问题还没解决,所以只有找其它的办法。我要实现直接把邮件发到对方的SMTP服务器 类型转换? 现在有个NCNE国家信息化工程师认证,有没有用? 当数据库使用AddNew--Update插入数据时sql server出现进程死锁,请问为什么呢? Oracle8i技术问题 变量传递问题,急! 请教几个简单的函数(菜鸟级) 哪里能找到《实用软件工程》? 哪里有VisualJ++下载?谢谢! 在linux下,要在一台机上同时录音和放音,应该怎么做? 连接问题 非常急:文件无法创建,综合的系统问题 mdi窗口的问题 请问:用什么软件能建立虚拟服务器来测试网页呀? 大象为何不长毛? 第二套天空套颜色怎么选 老公特别听他妈妈的话.我和老公生气往往都是因为一点点的小事,有时想想真的不值得,他特别听他妈妈的话,只要我和他妈妈的意见不统一,他就向着他妈妈说话,关键是他也是受过高等教育的 单独行动——(填带马的词语)人马众多——(填带马的词语) 扩充实力——(填带马的词语) 草花头下边一个内字读什么? 两只小狮子一课告诉了我们什么道理 有谁知道武士刀伞(侍伞)的“螳螂脚”是什么?在淘宝上看到的侍伞,宝贝介绍里有.螳螂脚是什么?百科里也没查到. 黄鹤楼送孟浩然之广陵描绘了一幅什么样的景象具体点,也不要太多字,就2,30个字的样子 画出函数y=x2+2|x|-3 画出函数y=|x2+2x-3|的图像 蟒蛇皮哪里有买 野生熊猫有没有天敌? 描写动物性格的作文350字以上, 蟒蛇皮可以买卖么 天空6套颜色怎么选 南征北战是什么意思? 大学高数双纽线的旋转问题双纽线绕极轴旋转,请问哪个是极轴啊要是用坐标表示的话,又是绕什么旋转啊 黄鹤楼送孟浩然之广陵描写了什么的情景 南征北战的征的意思还有长征的征,征文的征 求一个双纽线的图形,并且希望得知双纽线的图形应该怎么确定,因为题目中双纽线的方程总是变得,是应该背吗这个双扭线方程是(x^2+y^2)^2=2a^2(xy) 天空颜色选择? 惊喜英语怎么写 世上真的有唐伯虎这个人吗?来帮帮忙 黄鹤楼送孟浩然之广陵写的是什么季节 海底两万里读后感一千字急需! 某冰箱厂九月份计划生产一批冰箱,上半月完成计划的七分之四,下半月完成的和上半月同样多,结果超过计划150台,计划生产冰箱多少台? 草花头加个的字 是什么字?菂 字 怎么打..有什么输入法可以打出这个字.. 有两包糖,甲包中有30颗,如果从乙包中拿出1/5放入甲包,则乙包比甲包多三颗,乙包原有多少颗? 黄鹤楼送孟浩然之广陵写了一件什么事 草花头的字,一定要10个 有两包糖,甲包中有30颗,如果从乙包中拿出1/5放入甲包,乙包比甲包还多三颗,乙包原来有多少颗糖? 大熊猫有天敌么?如果有那是什么? 熊猫有天敌吗?在动物世界里,很少看到熊猫与其他动物在一起?为何 这个这个不会写,关于定积分 大熊猫对付天敌 Chinese doctors believe that they should [eat more yin foods like tofu.]对括起来的提问求了 急 一个定积分不会求答案是e/2-1, 《黄鹤楼送孟浩然之广陵》是谁写的? the newly built building is about ________A 30 metres high B 30-metre-high C 30-metre high 它真的只是一道定积分,可是我真的不会. 熊猫的天敌是什么? 一个长方体的体积是315立方米,高是2.5米,底面积是多少? 白洋潮七年级文言诗文点击答案 速度回答啊 抓知了作文400字 黄鹤楼送孟浩然之广陵主要写什么 一个长方体,它的面积是315,它的长宽高分别相差2,长宽高各是多少? 知了的叫声,我要找些知了的作文. 上面一个草花头,下面一个在字怎么读 house ago years built was this five 连词成句! 写一篇知了的作文(多写外形、叫声)我是捡到了一只知了, 草花头加个及读什么? 写溪流的句子 小石潭记 大象长毛了吗? 草花头下加个弱读什么 《小石潭记》中,写溪流曲曲折折,一段看得见,一段又看不见的句子是? 最近看到一本书的封皮是《大象为什么不长毛》才发现自己不知道大象为什么不长毛.听说是 方舟子 写的.没看这本书但就想问问有没有知道的大象为什么不长毛? 草花头 加个 予 读什么 小石潭记中描写小石潭河溪流整体外形的句子是 为什么大象不长毛? 在一个圆柱形木桶里装满水水中淹没这一个一个直径18cm的圆锥高18cm的圆锥,当圆锥取出后,水面降低多少 《小石潭记》中,写溪身的句子是__________,写溪流的句子是___________. 中国珠算备选“非遗” 入选“非遗”项日媒:两艘中国海警船驶入钓鱼岛附近毗第十一届夏威夷“中国风情节”开幕浙江部分行政区划调整 绍兴县上虞市撤宁波住博会市民看房重开发商 遗憾大牌通讯:历史遗迹记录昔日辉煌――泰国旧英国铜像常被挂内裤乳罩 政府被迫将其英国铜像常被挂内裤乳罩 政府被迫将其通讯:历史遗迹记录昔日辉煌――泰国旧亲善合作 睦邻友好——国内外人士积极马来西亚举办“小状元汉语经典诵读大赛巴基斯坦塔利班头目死于美无人机空袭 英国一医院医疗过失误诊流产 恐致死逾第五届中国木质玩具文化节在浙江云和开为阻法院强制执行 浙江金华一老人扬言浙江金华一智障儿命悬半空 特勤消防空宁波银行发力托管业务 首只公募基金开浙江云和经贸合作洽谈签约引资50多亿把美式“监听帝国”关入“笼子”杭城周末马拉松大派对 关键词:超越、美国无人机再次出手清除巴塔首领 和谈私家车加盟专车平台 将遭清理韩童生冯宪珍联袂演绎经典麦当劳“愤怒的小鸟” 主题餐厅新品同约6000多名新股中签者放弃“红包”贝恩国际在深举办 客商联谊会及高峰论孩子的问题都是父母的问题(19)我总是被自己 最近的一次音乐会感动深圳市公安局交通警察局关于地铁2号线汰渍携手王祖蓝开启合家欢“洗”安源煤业一季度 预亏1.3亿 1.4新三板为何“募资容易交易难”美拟扣伊朗20亿美元作赔偿我省确诊首例H5N6病例中越顺利完成北部湾 湾口外海域共同考楚天都市报记者李辉摄英女王迎来90岁生日战场点穴手:核电磁脉冲弹157名高三学子拟获得保送资格挪威杀人魔告赢政府妥善解决边界问题2020年完成“北斗”全球组网
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘