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

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

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

从MySQL迁移到MariaSQL Wikipedia力求开放 奥巴马筹款网站的制作过程 国内芯片厂商发力4G 新岸线2013年将推LTE方案 CMDN Club 23期:开放平台和O2O移动产品开发 花旗调低Apple股票评级 不信iPhone5会卖得好 2012年Linux Journal读者选择奖结果公布 百度云SiteApp:三步轻松创建移动网站 Twitter跨数据中心图片存储系统Blobstore解析 摩托罗拉携手中国移动发布Intel Inside智能机新锋丽i MT788 第五届“英特尔杯”全国大学生软件创新大赛圆满落幕 Appro推出液冷超级计算机 Dell:曾敦促微软WinRT放弃Windows品牌 IE10十大优点:渲染页面比Chrome快8% 法国电信:开放平台下的O2O移动产品怎么玩? 客如云创始人彭雷:寻找O2O“失落的半圆” 中国电信宋鹏飞:天翼开放平台的服务及架构解析 W3C小组宣布:HTML5标准制定完成 还记得DUQU吗?起因可能是Windows中存在了20多年的漏洞! API管理的五大规则 Google也节能:挖角美能源部Arun Majumdar博士 预测:云计算领域的5大变革 CTO俱乐部:移动信息化的创新实践及互联网创业 核心组图曝光:BlackBerry 10明年1月30日发布 “蛐蛐儿”创始人朱连兴:音频二维码的技术实现和应用场景 信恩科技创始人林兴陆:QR Code二维码的前世今生 2012移动开发工具盘点:傻瓜式游戏工具引擎 《福布斯》发布年度“未来之星” 扎克伯格上榜 Cloudera透露Impala发行版新功能及开源计划 Nokia落寞身影下 三星成为全球最大手机厂商 乐视网CTO:智能电视,一个诱人的议题 SeatGeek:Web设计师如何转型iOS开发? 谁有生成TIN三角网的代码? Tlink怎么用? 如何打印recordset对象 bcb编译工程需要做的设置都有什么呀! 又有问题了!TStringList的一些冲突? 我的WIN2000各个盘都被共享, 却不显示共享的手型图标 !!!!!!! 如何定制列表视(report style,full Row Select)的高亮选中条的字符和背景颜色? 表名作为参数问题? VFP两个表的纵向合并? 机器突然掉电是怎么回事? 请教高手,怎样对TreeView控件的节点的OnClick事件处理? 一条出错信息的意思???? 怎样在dreamweaver里面插入包含网页??? 好久没为这样的小事快乐了 紧急求教(关于控件打包问题) 怎么开发互联网和手机短信互通的软件? 哪位有<<游戏编程大师技巧>>的原码 求一简单程序 installshield for c++builder:怎么把客户‘安装路径’注册到他的注册表里-现在急用 请问这4个组件在那个组件拦上的 TFileListBox,TDirectoryListBox,TFilterComboBox,TDriveComboBox 一条出错信息的意思??? ManagermentServer为什么启动不起来?? CList的RemoveAt()问题 爽!今天买了一个可无线上网的手提,散分! 本人用insertShile安裝制作軟件制作了vb6的一個setup文件包,直接用硬盤copy到其機子安裝是沒問題的,但是本人將該setup文件包刻錄到光盤 如何可以将windows 2000 server的C、D等盘的默认共享属性去除,可不可以将这个属性永久去除,因为选择“右击”-“共享”去除后,重启又出 如何让你的编译器生成汇编代码 怎么样把数据库里的某个字段读到ComboBox1里? 在MDI框架中,如何禁止View相互切换? 代码转换 谁能告诉我delphi6.0中的installshield怎样使 为什么我用Zend Encoder加密了一个php文件,速度比以前没加密慢了好多哦, 怎样让在运行时加载的控件总在最前面?? 代码转换 linux + mysql+ apache + php + jdk + jsdk 怎样让在运行时加载的控件总在最前面?? 代码转换 一个关于全局变量的访问问题。 263游戏大厅里的用户信息列表是怎么实现的?急问,多谢!! 也帮帮我吧!i'll be dead ! 263游戏大厅里的用户信息列表是怎么实现的?急问,多谢!! 关于窗体 如何去掉我的“计划任务”共享? linux + mysql + apache + php + jdk + jsdk 新手问各位大哥一个问题:我在机器上已经安装了98,2000,现在有装了红帽7.2,已经安装成功,但是在LOGIN之后,有开始GNOME之后,什么都 菜鸟问题,请多帮忙 window 2000 server服务器,不能使用mail函数,怎么解决!?急!! 我靠!我今天算碰到一个希奇事!你们听听这个网址! 关于鼠标右键菜单的制作问题 SOS!100分相送。很简单的题目,明天考试急用 请问oracle中的帮助导航器、帮助主题窗口是在哪里啊 英语翻译many customers found that they were not receiving the nondestructive test examinations they felt they had paid to receive.具体些,英语不好,正在学习,顺便告诉一下我下次遇到这种语句如何翻译. 谁知道关于TIME 的所有的短语 告诉我 谢了! Lily needs___sports,she isn`t healthy.A does B: to do C:doing D:to does As long as you hold my hand.I'll go along withAs long as you hold my hand.I'll go along with you.第一个回答正确采纳 Don't worry.We still have ______ little time left.怎么填写 为什么 They saw a man _____ along the road.A.walking B.walk C.walks 英语同义句转换I found that they were good.I found them ___ ___ good同义句转换,每空一次I found that they were good.I found them ___ ___ good. Don’t worry about the time.We still have _______days left.a.another 3 b.3 another c.3 others d.other three 选哪个?为什么?解释下他们的差别和用法. 好书推荐(一本就够了) 1.书名 2.作者 3.主要内容 4.主要人物介绍 5.喜欢的原因注意:主要内容只要100~300不要太多,人物每个50~100字就好. As long as you hold my hand .I well go along with Don't worry we still have time to do the job A fell in love with B falls in love with C D my mother ( ) tired after she does some housework .括号里填什么 They were waiting for a train that was very late.帮我吧这个句子翻译, 让我看看你的照片,好吗的英文may l take [ ] [ ] [ ] your photos? 12岁女孩到哪去做明星报名 They all said that Italians were very strange people b__翻译和填空 '这个照片限时观看"英文怎么翻啊 Does the man ____(want) to clean his car?用括号里的词的适当形式填空,谢谢 It has been raining ______ last Saturday.A:on B:for C:till D:since His grandma is eighty.she is very o 张杰唱的just the way you are 为什么那么难听发音就不说了,感觉咋那么土呢,好难听啊 the plane l____safely at last though it was raining hard my grandma is very old now,but she was a teacher before (同义句)my grandma___ ____be a teacher before,but now she is very old I want you to always live in my heart,even if separated as we like together!请牛人翻译一下 做梦 梦到很多蝴蝶 同上 6."Where does he live?" Mr Hu asked.(改为复合句) Mr Hu asked where ______6“Where does he live?”Mr Hu asked.(改为复合句) Mr Hu asked where _______ _______.7.Tom’s father saw him sitting on some eggs.(改为复合句) Tom’s father saw ( )The old man _______ to take medicines.He's already fine A.needn't B.need C.doesn't need D.needs not 绞丝旁加个色字念什么?谢谢了,大神帮忙啊 ''Where does Lily live?''(改为复合句)I wonder ___ ___ ___. The old man ____ go out for a walk twice a week.A.need B.needs C.needs to D.both A and BI______(希望) i could go to the country in the USA.The old man ____ go out for a walk twice a week.A.need B.needs C.needs to D.both A and B 绞丝旁加一个寅字是什么字啊? What time do you get to school and how many classes do you have这句话的意思 _________ I need to take the medicine?根据内容填空. 一个绞丝旁一个真是什么字?书上写的是shěn我打不出来 3本书的书名和主要内容 主要内容要少一点 大约20个字 different名词 collect名词 sell反义词 happy名词 stand过去式 busy反义词 careful副词 skip现在分词 base on和because of的近义词分别是什么,四个词的 一些网友发的英文照片评语,手工翻you are really living beauty of ur own.hats off dear. 英文短信件手工翻中2yeah,baby,do not have stress after sleeping...what are you going to study?this is nice to study sometimes...i watch new harry potter,do you know it?so i am going to sleep,will try...will see your beautiful smile and will s -Do you think it will be cool tomorrow?-,_.It has been too hot for a week.A.I hope so B.I'm afraid so C.So it is D.Of course not我选的是A,但答案给的是C,请问谁能解释清楚? 照片的2英文短评语翻中人工的This is erotically sexy!You look delicious!A hot sexy ninja in a dress.>. 英语好的帮我翻译一下,hey.i was goin' over here,and I came across ur place.U appear to be Do you think it will still be rainy tomorrow?____It has rained for many days.A.I hope not B.I'm sure it will. old man has the years for word twenty here连词成句 英文短信件手工翻中hi my dear!))your last pics are very sweet!i even haven't words to say my feeling)so cutie and ideal)Asia is so big...yeah translater is not very good,i know it,that's why i asked your language,i can learn it hard and speak grandma is 70years old.My grandma is__70 years old,but she looks young she like to be beautiful..she doesn't ( ) the idea that old people can't be beautiful We've lived here for ten years?对for ten years提问. the great wall wind it way over high mountains ,through deep valleys and across grest deserts如何翻译 she is _____15 years old means she is 15 years old.A not more than B not less than C no more thanD no less than 这四个答案选什么 能不能帮我翻一下下面图的英文什么意思! 英文短信件翻中手工的HI!i saw a message on my wall from you and now i feel really worried!you wrote that i speak with other girls at the same time that maybe i do not like you...this is absolutelly fake!why do you think so?as you can see my 宾语从句例句1.Polly says:“I want to eat an apple”.2.It’s very clod in Moscow.He said3.where does Mr Li live?Do you know.4.We had a football match.Tom said.5.Listen to me carefully.The teacher told me .6.Whose jacket is this Can you tell 1 Miss Liu is very busy.—______. A. She does so B. So she does C. So does she D. So she is2 -How much _____ the sneakers? ----Tendollars ______ enough. A. is; is B. are ; is C. are ; are D. is ; is 3-That T-shirt with YaoMing’s pictur She 's very busy.She has a lot __.A do B does C doing D to do为什么是D啊,看不出是做定语啊 As long as you hold my hand,I'll go along with you. “辑”这个字,把车字旁换成绞丝旁,怎么念, she has a lot of things ____.A.do B.does C.doing D.to do As long as you hold my hand ,I'll go along with you , 求最佳翻译、 有关time的短语(它们的用法,意思.等) Once a rich man was walking along the road with his servant.Suddenly,a young man carrying a heavy bag passed by him.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘