被人永久性销毁一个芯片怎么销毁,里面的资料价值不菲,别人要赔多少

近几年,车联网一直占据热搜榜居高不下,随着BAT大佬们的……
电力改变了世界,也造福了我们的生产生活。电力安全大于……
近日尼吉康在北京召开了关于锂离子二次电池的新品发布会……
以&极致突破创新&为主题,在7月26日的吹田……
DLP技术自1987年问世以来,经过数年技术更新,其已经在投……
演讲人:Tracy Ma时间: 10:00:00
演讲人:Jim时间: 10:00:00
演讲人:李思齐时间: 10:00:00
预算:¥30000预算:¥150000
上海市浙江省
IC芯片对PCB电磁兼容设计的影响(一)
导读: 在考虑EMI控制时,设计工程师及PCB板级设计工程师首先应该考虑IC芯片的选择。集成电路的某些特征如封装类型、偏置电压和芯片的:工艺技术(例如CMoS、ECI)等都对电磁干扰有很大的影响。下面将着重探讨IC对EMI控制的影响。电磁兼容设计通常要运用各项控制技术,一般来说,越接近EMI源,实现EM控制所需的成本就越小。PCB上的集成电路芯片是EMI最主要的能量来源,因此,如果能够深入了解集成电路芯片的内部特征,可以简化PCB和系统级设计中的EMI控制。在考虑EMI控制时,设计工程师及PCB板级设计工程师首先应该考虑IC芯片的选择。集成电路的某些特征如封装类型、偏置电压和芯片的:工艺技术(例如CMoS、ECI)等都对电磁干扰有很大的影响。下面将着重探讨IC对EMI控制的影响。集成电路EMl来源PCB中集成电路EMI的来源主要有:数字集成电路从逻辑高到逻辑低之间转换或者从逻辑低到逻辑高之间转换过程中,输出端产生的方波信号频率导致的EMl信号电压和信号电流电场和磁场芯片自身的电容和电感等。集成电路芯片输出端产生的方波中包含频率范围宽广的正弦谐波分量,这些正弦谐波分量构成工程师所关心的EMI频率成分。最高EMI频率也称为EMI发射带宽,它是信号上升时间(而不是信号频率)的函数。计算EMI发射带宽的公式为:f=0.35/Tr式中,厂是频率,单位是GHz;7r是信号上升时间或者下降时间,单位为ns。从上述公式中可以看出,如果电路的开关频率为50MHz,而采用的集成电路芯片的上升时间是1ns,那么该电路的最高EMI发射频率将达到350MHz,远远大于该电路的开关频率。而如果汇的―上升时间为5肋Fs,那么该电路的最高EMI发射频率将高达700MHz。电路中的每一个电压值都对应一定的电流,同样每一个电流都存在对应的电压。当IC的输出在逻辑高到逻辑低或者逻辑低到逻辑高之间变换时,这些信号电压和信号电流就会产生电场和磁场,而这些电场和磁场的最高频率就是发射带宽。电场和磁场的强度以及对外辐射的百分比,不仅是信号上升时间的函数,同时也取决于对信号源到负载点之间信号通道上电容和电感的控制的好坏,因此,信号源位于PCB板的汇内部,而负载位于其他的IC内部,这些IC可能在PCB上,也可能不在该PCB上。为了有效地控制EMI,不仅需要关注汇;芭片自身的电容和电感,同样需要重视PCB上存在的电容和电感。当信号电压与信号回路之间的锅合不紧密时,电路的电容就会减小,因而对电场的抑制作用就会减弱,从而使EMI增大;电路中的电流也存在同样的情况,如果电流同返回路径之间锅合不;佳,势必加大回路上的电感,从而增强了磁场,最终导致EMI增加。这充分说明,对电场控制不佳通常也会导致磁场抑制不佳。用来控制中电磁场的措施与用来抑制IC封装中电磁场的措施大体相似。正如同PCB设计的情况,IC封装设计将极大地影响EMI。电路中相当一部分电磁辐射是由电源总线中的电压瞬变造成的。当汇的输出级发:跳变并驱动相连的PCB线为逻辑“高”时,汇芯片将从电源中吸纳电流,提供输出级月需的能量。对于IC不断转换所产生的超高频电流而言,电源总线姑子PCB上的去辊网络止于汇的输出级。如果输出级的信号上升时间为1.0ns,那么IC要在1.0ns这么短的时P内从电源上吸纳足够的电流来驱动PCB上的传输线。电源总线上电压的瞬变取决于电源j线路径上的申。感、吸纳的电流以及电流的传输时间。电压的瞬变由公式所定义,L是电流传输路径上电感的值;dj表示信号上升时间间隔内电流的变化;dz表示d流的传输时间(信号的上升时间)的变化。由于IC管脚以及内部电路都是电源总线的一部分,而且吸纳电流和输出信号的上于时间也在一定程度上取决于汇的工艺技术,因此选择合适的汇就可以在很大程度上控伟上述公式中提到的三个要素。本文引用地址:
在SMT和DIP的混合工艺中,为了避免单面回流焊一次,波峰焊一次的二次过炉情况,在PCB的波峰焊 焊接面的chip元件,器件的中心点点上红胶,可以在过波峰焊时一次上锡,省掉其锡膏印刷工艺。......关键字:
早在GTC Taiwan
2018之前,国外媒体就有传出英伟达有意要在Computex发布新一代绘图处理器芯片,预计采用7nm制程,以便迎击AMD最新一代绘图处理器(同样也是采用7nm制程),以便固守英伟达在整体PC市场的占有率。而英......关键字:
8月2日,苹果公司当晚股价收报207.39美元,成为首个万亿美元市值科技公司。8月3日,华为公布2018年上半年华为全球智能手机发货量超过9500万台,首次成为全球第二大智能手机厂商。前者代表了全球科技创新能力,后者代......关键字:
被问及有关格力的问题,他在回答时,往往会经历&三部曲&。6月30日,朱江洪在广州参加一场活动时,又一次经历了答问&三部曲&:欲言又止:&历史是最好的证明&;骨鲠在喉:......关键字:
芯片厂商通过利用BLE进一步降低设备功耗和帮助开发者实现BLE,使BLE更适合应用在物联网环境中。低功耗蓝牙(以下简称“BLE”)是物联网的一个关键构件。据PCWorld网站报道,芯片厂商通过利用BL......关键字:
我 要 评 论
热门关键词
厦门点击信息科技有限公司面议 | 福建省 厦门市
中芯国际集成电路制造(上海)有限公司面议 | 上海市 浦东新区
田中电子(杭州)有限公司面议 | 浙江省 杭州市
绿驰汽车15K-25K | 北京市 海淀区
宁波理工环境能源科技股份有限公司10K-15K | 浙江省 宁波市&p&嚓,终于找到可以回答的问题了,谢谢奶爸。
我先回答一些,慢慢修改哈。&br&&br&&/p&&p&1、时刻记住,风险和收益成正比&/p&&p&如果说理财投资是一个游戏的话,那么这个游戏当中有一些基本的规则。
最重要的一条,也是最容易被忽略的一条就是:&/p&&p&收益和风险成正比。
大部分人眼里只看得到收益,而且是越高越好,很容易忘记风险。在理财投资当中,利用杠杆和一时运气,是有可能达到100%,甚至更高的收益率,请看这位楼主和一楼(&a class=&internal& href=&http://www.zhihu.com/question/&&一年投资稳定 100 万还有必要工作吗?&/a&)但是不要忘记,风险也同比增长。&/p&&p&以下是各类投资的常规收益率(美国数据)。有一张图的,找不到了,下次补。&/p&&p&银行存款2.5%,1年期国债3%(基准利率),5年期国债4%,10年期国债5%&br&抵押公司债6%,标普指数7%
无抵押高收益公司债8%,小盘股12%,房地产15%,风投25% 。&/p&&p&这几个数字是常识,请牢牢记得。一般来说,这些投资对象的收益率会在这个附近波动,小幅波动,可能是机遇,但如果过分大的背离这个数值,就很可能是骗局。&/p&&p&2、知其然,还要知其所以然。&/p&&p&其实在刚开始资金量小的时候,不用太在意输赢,应该在意的是“为什么输”“为什么赢”。如果说投资跟做科学实验有什么相同的话,那就是“实验结果可重复显现”。&/p&&p&举例来说:在真空条件下,
羽毛和铅球从高处往下扔,应该是同时落地的。这是自由落体运动。
只要满足在真空这个条件,
无论你在哪个地方扔,扔1次还是500次,结果都应该是一样的。 &/p&&p&所以,如果你今天穿红袜子,你买的股票涨停了。然后你得出结论说,只要穿红袜子,买股票就会涨停。
大家不要笑,这种例子实际很多。&/p&&p&所以当你赢的时候,你要知道是什么原因让你赢,而且要反复检验这种“赢”是否是符合逻辑的,是否可重复。
当然,你“输”的时候,也不要过分沮丧,更不要把原因归结为“中国是政策市,没法投资”之类。 &/p&&p&实际上,投资理财并不像专家们鼓吹得那么难,保持合理的心态,寻找合理的逻辑,学习相关的知识,你是有可能会比身边的人赢得更高的收益率的。投资是一种技能,跟学习英语没什么两样,只要有正确的方法,持续的练习,总是会看到效果的。&/p&&br&&p&以下是书单部分,评语是我先生加的。&/p&&br&&p&聪明的投资者
五星&br&我大概看了五六遍吧,每一次都有新的体会。这本书是巴菲特的老师格雷厄姆的心血之作,包含了格雷厄姆价值投资的精髓,也包含了小熊最喜欢的量化的精髓。当中还有个插曲,当时小熊和水湄新婚旅行去尼泊尔,把这本书落在尼泊尔的长途车上了。回来心痛不已,马上重新买一本。&br&&br&巴菲特致股东的信:股份公司教程
五星&br&这本书其实才是巴菲特投资思想的精髓,当中很多的段落都值得我们反复的思考。建议看上十遍以上。&br&&br&安全边际 五星&br&小熊最喜欢的两个投资者之一,塞斯卡拉曼的唯一一本书。这本书,第一次看小熊觉得很平淡嘛,没什么稀奇的。但是以后每一次重看都有更深的体会。在ebay上,这本书的签名版被炒到了1000美金一本。&br&&br&你能成为股市天才
五星&br&这 本书,恐怕是小熊看的最多遍的书了,我一直放在床头反复的看。当中的充满了乔尔格林布拉特公司分析的精髓。根据里面教授的投资,小熊这两年也在慢慢拓展自
己的能力圈。说实话,比起巴菲特,乔尔是很愿意和大家分享自己的投资分析和心得的人。这点也感染了小熊,多多和大家分享自己的投资技巧心得。&br&&br&伟大的博弈 四星半&br&不 知道有多少人学习投资,或者学习价值投资开手的书竟然是这本。当时选这书作为第一本道理很简单,这本是我第一本找到和下载的,而且书的内容通俗易懂,就
是讲故事。但是这个无心之举,反而受到了奇效。就像是杨威利元帅学习军事史成为一代名将一样,学习金融史,也能够帮助我蔑视一切市场反常的波动,不论多么
大的波动华尔街历史上都经历过了。那时恰逢2007年底到2008年,美国股市正好是自由落体下跌的时候,我心理承受能力倒是因为这本书好了很多。&br&&br&价值投资者文摘 四星半&br&一 共厚厚五十本,放慢了我家书架的两层。当中的文章大多数都是从美国的《杰出投资者文摘》翻译过来的,都是很好的文章。有些乍一看和投资没有任何的关系,但
是增进眼界是投资的一大要素。而且常言道,功夫在诗外,不同的学科可以让我们有不同的感悟。当然,投资的基础教材还是首位的,因为就算功夫在诗外,那也得
先学好作诗了,然后在开发外面的功夫吧。&br&&br&股票投资大智慧 四星半&br&这本书严格意义上讲,并不是投资书,但是他胜过大部分投资书。他讲述的是芒格的栅格思维方式,帮助我们锻炼我们思考各种问题,包括投资的能力。&br&&br&怎样选择成长股 四星&br&另一位大师费雪的名作,也是他唯一一本书。这本书最大的特色就是定性分析无敌,费雪的问题当然也在于这里,过分强调定性分析而忽视定量。当然书中介绍公司的定性分析方法还是很精彩的。&br&&br&约翰.聂夫谈投资
四星&br&这本书恐怕没多少人听说过,就像约翰聂夫没多少人知道一样。约翰聂夫是著名温莎基金的基金经理,他执掌温莎基金31年,22次跑赢市场,投资增长55倍,年平均收益率超过市场平均收益率达3%以上。他开创了低市盈率投资方法,是价值投资法的一种表现形式。&br&&br&邓普顿教你逆向投资
四星&br&美 国著名长寿投资者邓普顿的投资课,读起来生动有趣,又能给我们感悟。邓普顿爵士在价值投资的时候,价值投资这个词恐怕都没有发明了。但是这不妨碍他做投
资,邓普顿爵士本能的能够察觉到哪个公司,甚至是哪个国家被低估了。他的名言 – “买入最好的时机是在街头溅血的时候”,也是小熊最喜欢引用的。&br&&br&股市稳赚 四星&br&小 熊最喜欢的两个投资者之一,乔尔格林布拉特的投资教材,整本书更像一本故事书。但是因为乔尔想要让这本书连他的儿子女儿都能看懂,导致的问题就是过分简单
了,屏蔽了很多的细节,所以通俗有余而深刻不足。不过里面至少介绍了乔尔分析公司盈利的思路,小熊已经把它吸纳进我的投资体系中,也在进阶课第一课做了介
绍。&br&&br&赌金者 – 长期资本管理公司的陨落
四星&br&这也是一本值得反复玩味的书,讲的是美国金融史上很著名的由两个诺贝尔经济学奖得主和几个数学教授组成的大型对冲基金,最后破灭的故事。比起他们来说,高盛操纵大宗商品市场和巴克莱操纵短期利率显得小儿科了很多。&br&&br&股市真规则 四星&br&也是我一开始看的几本书之一。这本书最强的地方就是把几乎所有的行业都点评了一遍,每个行业注意的要点啊什么的。但是问题也是流于广而不精,这当然也是没办法的。看完这本书,你会觉得自己似乎每个行业都懂一点,但是真正要投资的时候,却又不懂了。&br&&br&巴菲特的护城河 四星&br&晨星公司投资部主任写的书,详细分析了各种护城河的成因,判断方法,以及如何量化。小熊也将他纳入了自己的投资体系,初级课中的护城河理念就是从这里来的。&br&&br&芒格的各类演讲 四星&br&芒格比起巴菲特更出世,所以他的演讲也更深奥一点。但是如果你能够耐心思考他所讲的内容的花,你将会发现芒格的思想是一整个体系,而投资只是当中一小块。&br&&br&魔球 四星&br&这书也出电影了,布拉德皮特主演的,不过电影没书精彩。整本书讲述的就是,棒球界从定性分析到定量分析的一个过程,值得我们思考。&/p&
嚓,终于找到可以回答的问题了,谢谢奶爸。
我先回答一些,慢慢修改哈。 1、时刻记住,风险和收益成正比如果说理财投资是一个游戏的话,那么这个游戏当中有一些基本的规则。
最重要的一条,也是最容易被忽略的一条就是:收益和风险成正比。
大部分人眼里只…
利益相关:微软亚洲研究院实习生,研究方向是 FPGA 在数据中心的应用。&br&&br&问题「用 FPGA 代替 CPU」中,这个「代替」的说法不准确。我们并不是不用 CPU 了,而是&b&用 FPGA 加速适合它的计算任务,其他任务仍然在 CPU 上完成,让 FPGA 和 CPU 协同工作&/b&。&br&&br&本回答将涵盖三个问题:&br&&ol&&li&为什么使用 FPGA,相比 CPU、GPU、ASIC(专用芯片)有什么特点?&/li&&li&微软的 FPGA 部署在哪里?FPGA 之间、FPGA 与 CPU 之间是如何通信的?&/li&&li&未来 FPGA 在云计算平台中应充当怎样的角色?仅仅是像 GPU 一样的计算加速卡吗?&/li&&/ol&&br&&b&一、为什么使用 FPGA?&/b&&br&&br&众所周知,通用处理器(CPU)的摩尔定律已入暮年,而机器学习和 Web 服务的规模却在指数级增长。&b&人们使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新编程来执行新类型的计算任务&/b&。FPGA (Field Programmable Gate Array) 正是一种硬件可重构的体系结构,常年来被用作专用芯片(ASIC)的小批量替代品,然而近年来在微软、百度等公司的数据中心大规模部署,以&b&同时提供强大的计算能力和足够的灵活性&/b&。&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-71bb2dab64eb85e80b815c_b.jpg& data-rawwidth=&2106& data-rawheight=&1147& class=&origin_image zh-lightbox-thumb& width=&2106& data-original=&https://pic3.zhimg.com/50/v2-71bb2dab64eb85e80b815c_r.jpg&&&/figure&&i&不同体系结构性能和灵活性的比较。&/i&&br&&br&FPGA 为什么快?「都是同行衬托得好」。&b&CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存。&/b&FPGA 之所以比 CPU 甚至 GPU 能效高,本质上是无指令、无需共享内存的体系结构带来的福利。&br&&br&冯氏结构中,由于执行单元(如 CPU 核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此 GPU 使用 SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU 也支持 SIMD 指令。而 &b&FPGA 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。&/b&&br&&br&冯氏结构中使用内存有两种作用。一是保存状态,二是在执行单元间通信。由于内存是共享的,就需要做访问仲裁;为了利用访问局部性,每个执行单元有一个私有的缓存,这就要维持执行部件间缓存的一致性。&b&对于保存状态的需求,&/b&&b&FPGA&/b& 中的寄存器和片上内存(BRAM)是属于各自的控制逻辑的,&b&无需不必要的仲裁和缓存&/b&。&b&对于通信的需求,FPGA&/b& 每个逻辑单元与周围逻辑单元的连接在重编程(烧写)时就已经确定,&b&并不需要通过共享内存来通信&/b&。&br&&br&说了这么多三千英尺高度的话,FPGA 实际的表现如何呢?我们分别来看计算密集型任务和通信密集型任务。&br&&br&&b&计算密集型任务&/b&的例子包括矩阵运算、图像处理、机器学习、压缩、非对称加密、Bing 搜索的排序等。这类任务一般是 CPU 把任务卸载(offload)给 FPGA 去执行。对这类任务,目前我们正在用的 Altera(似乎应该叫 Intel 了,我还是习惯叫 Altera……)Stratix V FPGA 的整数乘法运算性能与 20 核的 CPU 基本相当,浮点乘法运算性能与 8 核的 CPU 基本相当,而比 GPU 低一个数量级。我们即将用上的下一代 FPGA,Stratix 10,将配备更多的乘法器和硬件浮点运算部件,从而理论上可达到与现在的顶级 GPU 计算卡旗鼓相当的计算能力。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-ff703e9c57f9cf55777b_b.jpg& data-rawwidth=&1053& data-rawheight=&832& class=&origin_image zh-lightbox-thumb& width=&1053& data-original=&https://pic4.zhimg.com/50/v2-ff703e9c57f9cf55777b_r.jpg&&&/figure&&i&FPGA 的整数乘法运算能力(&/i&&i&估计值,&/i&&i&不使用 DSP,根据逻辑资源占用量估计)&/i&&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-404dcbcf292c4e31b3e12ebc228963af_b.jpg& data-rawwidth=&1070& data-rawheight=&831& class=&origin_image zh-lightbox-thumb& width=&1070& data-original=&https://pic2.zhimg.com/50/v2-404dcbcf292c4e31b3e12ebc228963af_r.jpg&&&/figure&&i&FPGA 的浮点乘法运算能力(估计值,float16 用软核,float 32 用硬核)&/i&&br&&br&&b&在数据中心,FPGA 相比 GPU 的核心优势在于延迟&/b&。像 Bing 搜索排序这样的任务,要尽可能快地返回搜索结果,就需要尽可能降低每一步的延迟。如果使用 GPU 来加速,要想充分利用 GPU 的计算能力,batch size 就不能太小,延迟将高达毫秒量级。使用 FPGA 来加速的话,只需要微秒级的 PCIe 延迟(我们现在的 FPGA 是作为一块 PCIe 加速卡)。未来 Intel 推出通过 QPI 连接的 Xeon + FPGA 之后,CPU 和 FPGA 之间的延迟更可以降到 100 纳秒以下,跟访问主存没什么区别了。&br&&br&FPGA 为什么比 GPU 的延迟低这么多?这本质上是体系结构的区别。&b&FPGA 同时拥有流水线并行和数据并行,而 GPU 几乎只有数据并行(流水线深度受限)。&/b&例如处理一个数据包有 10 个步骤,FPGA 可以搭建一个 10 级流水线,流水线的不同级在处理不同的数据包,每个数据包流经 10 级之后处理完成。每处理完成一个数据包,就能马上输出。而 GPU 的数据并行方法是做 10 个计算单元,每个计算单元也在处理不同的数据包,然而所有的计算单元必须按照统一的步调,做相同的事情(SIMD,Single Instruction Multiple Data)。这就要求 10 个数据包必须一起输入、一起输出,输入输出的延迟增加了。当任务是逐个而非成批到达的时候,流水线并行比数据并行可实现更低的延迟。因此&b&对流式计算的任务,FPGA 比 GPU 天生有延迟方面的优势。&/b&&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-1ffb204e56f3d02b0cabdcd6f6c3fb34_b.jpg& data-rawwidth=&1435& data-rawheight=&476& class=&origin_image zh-lightbox-thumb& width=&1435& data-original=&https://pic2.zhimg.com/50/v2-1ffb204e56f3d02b0cabdcd6f6c3fb34_r.jpg&&&/figure&&i&计算密集型任务,CPU、GPU、FPGA、ASIC 的数量级比较(以 16 位整数乘法为例,数字仅为数量级的估计)&/i&&br&&br&ASIC 专用芯片在吞吐量、延迟和功耗三方面都无可指摘,但微软并没有采用,出于两个原因:&br&&ol&&li&数据中心的计算任务是灵活多变的,而 ASIC 研发成本高、周期长。好不容易大规模部署了一批某种神经网络的加速卡,结果另一种神经网络更火了,钱就白费了。FPGA 只需要几百毫秒就可以更新逻辑功能。&b&FPGA 的灵活性可以保护投资,事实上,微软现在的 FPGA 玩法与最初的设想大不相同。&/b&&/li&&li&数据中心是租给不同的租户使用的,如果有的机器上有神经网络加速卡,有的机器上有 Bing 搜索加速卡,有的机器上有网络虚拟化加速卡,任务的调度和服务器的运维会很麻烦。&b&使用 FPGA 可以保持数据中心的同构性。&/b&&/li&&/ol&&br&接下来看通信密集型任务。相比计算密集型任务,通信密集型任务对每个输入数据的处理不甚复杂,基本上简单算算就输出了,这时通信往往会成为瓶颈。对称加密、防火墙、网络虚拟化都是通信密集型的例子。&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-d74634adc21db32f6fafed538c7b91ca_b.jpg& data-rawwidth=&1434& data-rawheight=&478& class=&origin_image zh-lightbox-thumb& width=&1434& data-original=&https://pic1.zhimg.com/50/v2-d74634adc21db32f6fafed538c7b91ca_r.jpg&&&/figure&&i&通信密集型任务,CPU、GPU、FPGA、ASIC 的数量级比较(以 64 字节网络数据包处理为例,&/i&&i&数字仅为数量级的估计&/i&&i&)&/i&&br&&br&&b&对通信密集型任务,FPGA 相比 CPU、GPU 的优势就更大了&/b&。从吞吐量上讲,FPGA 上的收发器可以直接接上 40 Gbps 甚至 100 Gbps 的网线,以线速处理任意大小的数据包;而 CPU 需要从网卡把数据包收上来才能处理,&b&很多网卡是不能线速处理 64 字节的小数据包的&/b&。尽管可以通过插多块网卡来达到高性能,但 CPU 和主板支持的 PCIe 插槽数量往往有限,而且网卡、交换机本身也价格不菲。&br&&br&从延迟上讲,网卡把数据包收到 CPU,CPU 再发给网卡,即使使用 DPDK 这样高性能的数据包处理框架,延迟也有 4~5 微秒。更严重的问题是,&b&通用 CPU 的延迟不够稳定&/b&。例如当负载较高时,转发延迟可能升到几十微秒甚至更高(如下图所示);现代操作系统中的时钟中断和任务调度也增加了延迟的不确定性。&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-b5b50a3c73cba5223ada6c6_b.jpg& data-rawwidth=&817& data-rawheight=&594& class=&origin_image zh-lightbox-thumb& width=&817& data-original=&https://pic2.zhimg.com/50/v2-b5b50a3c73cba5223ada6c6_r.jpg&&&/figure&&i&ClickNP(FPGA)与 Dell S6000 交换机(商用交换机芯片)、Click+DPDK(CPU)和 Linux(CPU)的转发延迟比较,error bar 表示 5% 和 95%。来源:[5]&/i&&br&&br&虽然 GPU 也可以高性能处理数据包,但 GPU 是没有网口的,意味着需要首先把数据包由网卡收上来,再让 GPU 去做处理。这样吞吐量受到 CPU 和/或网卡的限制。GPU 本身的延迟就更不必说了。&br&&br&那么为什么不把这些网络功能做进网卡,或者使用可编程交换机呢?&b&ASIC 的灵活性仍然是硬伤&/b&。尽管目前有越来越强大的可编程交换机芯片,比如支持 P4 语言的 Tofino,ASIC 仍然不能做复杂的有状态处理,比如某种自定义的加密算法。&br&&br&综上,&b&在数据中心里 FPGA 的主要优势是稳定又极低的延迟,适用于流式的计算密集型任务和通信密集型任务。&/b&&br&&br&&br&&b&二、微软部署 FPGA 的实践&/b&&br&&br&2016 年 9 月,《连线》(&i&Wired&/i&)杂志发表了一篇《微软把未来押注在 FPGA 上》的报道 [3],讲述了 Catapult 项目的前世今生。紧接着,Catapult 项目的老大 Doug Burger 在 Ignite 2016 大会上与微软 CEO Satya Nadella 一起做了 FPGA 加速机器翻译的演示。演示的总计算能力是 103 万 T ops,也就是 1.03 Exa-op,相当于 10 万块顶级 GPU 计算卡。一块 FPGA(加上板上内存和网络接口等)的功耗大约是 30 W,仅增加了整个服务器功耗的十分之一。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-de52eeb2acae767ec3a3_b.jpg& data-rawwidth=&1410& data-rawheight=&731& class=&origin_image zh-lightbox-thumb& width=&1410& data-original=&https://pic4.zhimg.com/50/v2-de52eeb2acae767ec3a3_r.jpg&&&/figure&&i&Ignite 2016 上的演示:每秒 1 Exa-op (10^18) 的机器翻译运算能力&/i&&br&&br&微软部署 FPGA 并不是一帆风顺的。&b&对于把 FPGA 部署在哪里这个问题,大致经历了三个阶段:&/b&&br&&ol&&li&&b&专用的 FPGA 集群,里面插满了 FPGA&/b&&/li&&li&&b&每台机器一块 FPGA,采用专用网络连接&/b&&/li&&li&&b&每台机器一块 FPGA,放在网卡和交换机之间,共享服务器网络&/b&&/li&&/ol&&figure&&img src=&https://pic3.zhimg.com/50/v2-880465ced11d754f07f8edd225e48cab_b.jpg& data-rawwidth=&1077& data-rawheight=&1335& class=&origin_image zh-lightbox-thumb& width=&1077& data-original=&https://pic3.zhimg.com/50/v2-880465ced11d754f07f8edd225e48cab_r.jpg&&&/figure&&i&微软 FPGA 部署方式的三个阶段,来源:[3]&/i&&br&&br&第一个阶段是专用集群,里面插满了 FPGA 加速卡,就像是一个 FPGA 组成的超级计算机。下图是最早的 BFB 实验板,一块 PCIe 卡上放了 6 块 FPGA,每台 1U 服务器上又插了 4 块 PCIe 卡。&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-8edb5cfe1cf_b.jpg& data-rawwidth=&2483& data-rawheight=&1101& class=&origin_image zh-lightbox-thumb& width=&2483& data-original=&https://pic1.zhimg.com/50/v2-8edb5cfe1cf_r.jpg&&&/figure&&i&最早的 BFB 实验板,上面放了 6 块 FPGA。来源:[1]&/i&&br&&br&可以注意到该公司的名字。在半导体行业,只要批量足够大,芯片的价格都将趋向于沙子的价格。据传闻,正是由于该公司不肯给「沙子的价格」 ,才选择了另一家公司。当然现在数据中心领域用两家公司 FPGA 的都有。&b&只要规模足够大,对 FPGA 价格过高的担心将是不必要的。&/b&&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-aa8f6a91bfa87bd5db9165_b.jpg& data-rawwidth=&714& data-rawheight=&599& class=&origin_image zh-lightbox-thumb& width=&714& data-original=&https://pic4.zhimg.com/50/v2-aa8f6a91bfa87bd5db9165_r.jpg&&&/figure&&i&最早的 BFB 实验板,1U 服务器上插了 4 块 FPGA 卡。来源:[1]&/i&&br&&br&像超级计算机一样的部署方式,意味着有专门的一个机柜全是上图这种装了 24 块 FPGA 的服务器(下图左)。这种方式有几个问题:&br&&ol&&li&不同机器的 FPGA 之间无法通信,FPGA 所能处理问题的规模受限于单台服务器上 FPGA 的数量;&/li&&li&数据中心里的其他机器要把任务集中发到这个机柜,构成了 in-cast,网络延迟很难做到稳定。&/li&&li&FPGA 专用机柜构成了单点故障,只要它一坏,谁都别想加速了;&/li&&li&装 FPGA 的服务器是定制的,冷却、运维都增加了麻烦。&/li&&/ol&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-70aa39ffd70ec_b.jpg& data-rawwidth=&2534& data-rawheight=&1206& class=&origin_image zh-lightbox-thumb& width=&2534& data-original=&https://pic2.zhimg.com/50/v2-70aa39ffd70ec_r.jpg&&&/figure&&i&部署 FPGA 的三种方式,从中心化到分布式。来源:[1]&/i&&br&&br&一种不那么激进的方式是,在每个机柜一面部署一台装满 FPGA 的服务器(上图中)。这避免了上述问题 (2)(3),但 (1)(4) 仍然没有解决。&br&&br&第二个阶段,为了&b&保证数据中心中服务器的同构性&/b&(这也是不用 ASIC 的一个重要原因),在每台服务器上插一块 FPGA(上图右),FPGA 之间通过专用网络连接。这也是微软在 ISCA'14 上所发表论文采用的部署方式。&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-7b73facc9e24d0fceca7e_b.jpg& data-rawwidth=&858& data-rawheight=&612& class=&origin_image zh-lightbox-thumb& width=&858& data-original=&https://pic2.zhimg.com/50/v2-7b73facc9e24d0fceca7e_r.jpg&&&/figure&&i&Open Compute Server 在机架中。来源:[1]&/i&&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-e23b8d5c807ad2fffbec_b.jpg& data-rawwidth=&2433& data-rawheight=&736& class=&origin_image zh-lightbox-thumb& width=&2433& data-original=&https://pic4.zhimg.com/50/v2-e23b8d5c807ad2fffbec_r.jpg&&&/figure&&i&Open Compute Server 内景。红框是放 FPGA 的位置。来源:[1]&/i&&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-f0ca82beaa1389406ebbc15_b.jpg& data-rawwidth=&1034& data-rawheight=&594& class=&origin_image zh-lightbox-thumb& width=&1034& data-original=&https://pic1.zhimg.com/50/v2-f0ca82beaa1389406ebbc15_r.jpg&&&/figure&&i&插入 FPGA 后的 Open Compute Server。来源:[1]&/i&&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-6d0fdf2e59d9a4b579fc59c_b.jpg& data-rawwidth=&1002& data-rawheight=&1353& class=&origin_image zh-lightbox-thumb& width=&1002& data-original=&https://pic3.zhimg.com/50/v2-6d0fdf2e59d9a4b579fc59c_r.jpg&&&/figure&&i&FPGA 与 Open Compute Server 之间的连接与固定。来源:[1]&/i&&br&&br&FPGA 采用 Stratix V D5,有 172K 个 ALM,2014 个 M20K 片上内存,1590 个 DSP。板上有一个 8GB DDR3-1333 内存,一个 PCIe Gen3 x8 接口,两个 10 Gbps 网络接口。一个机柜之间的 FPGA 采用专用网络连接,一组 10G 网口 8 个一组连成环,另一组 10G 网口 6 个一组连成环,不使用交换机。&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-a932a3ac4cd8_b.jpg& data-rawwidth=&2431& data-rawheight=&1218& class=&origin_image zh-lightbox-thumb& width=&2431& data-original=&https://pic1.zhimg.com/50/v2-a932a3ac4cd8_r.jpg&&&/figure&&i&机柜中 FPGA 之间的网络连接方式。来源:[1]&/i&&br&&br&这样一个 1632 台服务器、1632 块 FPGA 的集群,把 Bing 的搜索结果排序整体性能提高到了 2 倍(换言之,节省了一半的服务器)。如下图所示,每 8 块 FPGA 穿成一条链,中间用前面提到的 10 Gbps 专用网线来通信。这 8 块 FPGA 各司其职,有的负责从文档中提取特征(黄色),有的负责计算特征表达式(绿色),有的负责计算文档的得分(红色)。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-aaef099e0f6cf7aaf9e5be6bb3b0bc27_b.jpg& data-rawwidth=&1655& data-rawheight=&1155& class=&origin_image zh-lightbox-thumb& width=&1655& data-original=&https://pic4.zhimg.com/50/v2-aaef099e0f6cf7aaf9e5be6bb3b0bc27_r.jpg&&&/figure&&i&FPGA 加速 Bing 的搜索排序过程。来源:[1]&/i&&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-8bd4abed27f2cbb8605f_b.jpg& data-rawwidth=&963& data-rawheight=&638& class=&origin_image zh-lightbox-thumb& width=&963& data-original=&https://pic2.zhimg.com/50/v2-8bd4abed27f2cbb8605f_r.jpg&&&/figure&&i&FPGA 不仅降低了 Bing 搜索的延迟,还显著提高了延迟的稳定性。来源:[4]&/i&&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-bb29f3d4b687ce294b329c_b.jpg& data-rawwidth=&963& data-rawheight=&647& class=&origin_image zh-lightbox-thumb& width=&963& data-original=&https://pic3.zhimg.com/50/v2-bb29f3d4b687ce294b329c_r.jpg&&&/figure&&br&&i&本地和远程的 FPGA 均可以降低搜索延迟,远程 FPGA 的通信延迟相比搜索延迟可忽略。&/i&&i&来源:[4]&/i&&br&&br&FPGA 在 Bing 的部署取得了成功,Catapult 项目继续在公司内扩张。微软内部拥有最多服务器的,就是云计算 Azure 部门了。Azure 部门急需解决的问题是网络和存储虚拟化带来的开销。Azure 把虚拟机卖给客户,需要给虚拟机的网络提供防火墙、负载均衡、隧道、NAT 等网络功能。由于云存储的物理存储跟计算节点是分离的,需要把数据从存储节点通过网络搬运过来,还要进行压缩和加密。&br&&br&在 1 Gbps 网络和机械硬盘的时代,网络和存储虚拟化的 CPU 开销不值一提。随着网络和存储速度越来越快,网络上了 40 Gbps,一块 SSD 的吞吐量也能到 1 GB/s,CPU 渐渐变得力不从心了。例如 Hyper-V 虚拟交换机只能处理 25 Gbps 左右的流量,不能达到 40 Gbps 线速,当数据包较小时性能更差;AES-256 加密和 SHA-1 签名,每个 CPU 核只能处理 100 MB/s,只是一块 SSD 吞吐量的十分之一。&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-5aeb1ccedd0b0f00cd82_b.jpg& data-rawwidth=&1842& data-rawheight=&546& class=&origin_image zh-lightbox-thumb& width=&1842& data-original=&https://pic2.zhimg.com/50/v2-5aeb1ccedd0b0f00cd82_r.jpg&&&/figure&&i&网络隧道协议、防火墙处理 40 Gbps 需要的 CPU 核数。来源:[5]&/i&&br&&br&&b&为了加速网络功能和存储虚拟化,微软把 FPGA 部署在网卡和交换机之间。&/b&如下图所示,每个 FPGA 有一个 4 GB DDR3-1333 DRAM,通过两个 PCIe Gen3 x8 接口连接到一个 CPU socket(物理上是 PCIe Gen3 x16 接口,因为 FPGA 没有 x16 的硬核,逻辑上当成两个 x8 的用)。物理网卡(NIC)就是普通的 40 Gbps 网卡,仅用于宿主机与网络之间的通信。&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-974dfbd7fc14f_b.jpg& data-rawwidth=&1265& data-rawheight=&625& class=&origin_image zh-lightbox-thumb& width=&1265& data-original=&https://pic2.zhimg.com/50/v2-974dfbd7fc14f_r.jpg&&&/figure&&i&Azure 服务器部署 FPGA 的架构。来源:[6]&/i&&br&&br&FPGA(SmartNIC)对每个虚拟机虚拟出一块网卡,虚拟机通过 SR-IOV 直接访问这块虚拟网卡。原本在虚拟交换机里面的数据平面功能被移到了 FPGA 里面,虚拟机收发网络数据包均不需要 CPU 参与,也不需要经过物理网卡(NIC)。这样不仅节约了可用于出售的 CPU 资源,还&b&提高了虚拟机的网络性能(25 Gbps),把同数据中心虚拟机之间的网络延迟降低了 10 倍&/b&。&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-dad5b8d8d6ac0e047a016924_b.jpg& data-rawwidth=&2371& data-rawheight=&1316& class=&origin_image zh-lightbox-thumb& width=&2371& data-original=&https://pic3.zhimg.com/50/v2-dad5b8d8d6ac0e047a016924_r.jpg&&&/figure&&i&网络虚拟化的加速架构。来源:[6]&/i&&br&&br&这就是微软部署 FPGA 的第三代架构,也是目前「每台服务器一块 FPGA」大规模部署所采用的架构。&b&FPGA 复用主机网络的初心是加速网络和存储,更深远的影响则是把 FPGA 之间的网络连接扩展到了整个数据中心的规模&/b&,做成真正 cloud-scale 的「超级计算机」。第二代架构里面,FPGA 之间的网络连接局限于同一个机架以内,FPGA 之间专网互联的方式很难扩大规模,通过 CPU 来转发则开销太高。&br&&br&第三代架构中,FPGA 之间通过 LTL (Lightweight Transport Layer) 通信。同一机架内延迟在 3 微秒以内;8 微秒以内可达 1000 块 FPGA;20 微秒可达同一数据中心的所有 FPGA。第二代架构尽管 8 台机器以内的延迟更低,但只能通过网络访问 48 块 FPGA。为了支持大范围的 FPGA 间通信,第三代架构中的 LTL 还支持 PFC 流控协议和 DCQCN 拥塞控制协议。&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-c1dbeccbb5_b.jpg& data-rawwidth=&2209& data-rawheight=&993& class=&origin_image zh-lightbox-thumb& width=&2209& data-original=&https://pic1.zhimg.com/50/v2-c1dbeccbb5_r.jpg&&&/figure&&i&纵轴:LTL 的延迟,横轴:可达的 FPGA 数量。来源:[4]&/i&&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/v2-7ce4e13c6a60fe7923ceb_b.jpg& data-rawwidth=&968& data-rawheight=&791& class=&origin_image zh-lightbox-thumb& width=&968& data-original=&https://pic3.zhimg.com/50/v2-7ce4e13c6a60fe7923ceb_r.jpg&&&/figure&&i&FPGA 内的逻辑模块关系,其中每个 Role 是用户逻辑(如 DNN 加速、网络功能加速、加密),外面的部分负责各个 Role 之间的通信及 Role 与外设之间的通信。来源:[4]&/i&&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-b9d7f53b5125aecfd5d0b719b1a4179f_b.jpg& data-rawwidth=&1272& data-rawheight=&971& class=&origin_image zh-lightbox-thumb& width=&1272& data-original=&https://pic1.zhimg.com/50/v2-b9d7f53b5125aecfd5d0b719b1a4179f_r.jpg&&&/figure&&i&FPGA 构成的数据中心加速平面,介于网络交换层(TOR、L1、L2)和传统服务器软件(CPU 上运行的软件)之间。来源:[4]&/i&&br&&br&&b&通过高带宽、低延迟的网络互联的 FPGA 构成了介于网络交换层和传统服务器软件之间的数据中心加速平面。&/b&除了每台提供云服务的服务器都需要的网络和存储虚拟化加速,FPGA 上的剩余资源还可以用来加速 Bing 搜索、深度神经网络(DNN)等计算任务。&br&&br&&b&对很多类型的应用,随着分布式 FPGA 加速器的规模扩大,其性能提升是超线性的。&/b&例如 CNN inference,当只用一块 FPGA 的时候,由于片上内存不足以放下整个模型,需要不断访问 DRAM 中的模型权重,性能瓶颈在 DRAM;如果 FPGA 的数量足够多,每块 FPGA 负责模型中的一层或者一层中的若干个特征,使得模型权重完全载入片上内存,就消除了 DRAM 的性能瓶颈,完全发挥出 FPGA 计算单元的性能。当然,拆得过细也会导致通信开销的增加。&b&把任务拆分到分布式 FPGA 集群的关键在于平衡计算和通信。&/b&&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/v2-5a17afc6d68df612e27e2_b.jpg& data-rawwidth=&1827& data-rawheight=&394& class=&origin_image zh-lightbox-thumb& width=&1827& data-original=&https://pic1.zhimg.com/50/v2-5a17afc6d68df612e27e2_r.jpg&&&/figure&&i&从神经网络模型到 HaaS 上的 FPGA。利用模型内的并行性,模型的不同层、不同特征映射到不同 FPGA。来源:[4]&/i&&br&&br&在 MICRO'16 会议上,微软提出了 &b&Hardware as a Service (HaaS)&/b& 的概念,即把硬件作为一种可调度的云服务,使得 FPGA 服务的集中调度、管理和大规模部署成为可能。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-e87fddf2b776f27c0d37cba5a521beed_b.jpg& data-rawwidth=&1025& data-rawheight=&950& class=&origin_image zh-lightbox-thumb& width=&1025& data-original=&https://pic4.zhimg.com/50/v2-e87fddf2b776f27c0d37cba5a521beed_r.jpg&&&/figure&&i&Hardware as a Service (HaaS)。来源:[4]&/i&&br&&br&从第一代装满 FPGA 的专用服务器集群,到第二代通过专网连接的 FPGA 加速卡集群,到目前复用数据中心网络的大规模 FPGA 云,三个思想指导我们的路线:&br&&ol&&li&&b&硬件和软件不是相互取代的关系,而是合作的关系;&/b&&/li&&li&&b&必须具备灵活性,即用软件定义的能力;&/b&&/li&&li&&b&必须具备可扩放性(scalability)。&/b&&/li&&/ol&&br&&br&&b&三、FPGA 在云计算中的角色&br&&/b&&br&最后谈一点我个人对 FPGA 在云计算中角色的思考。作为三年级博士生,我在微软亚洲研究院的研究试图回答两个问题:&br&&ol&&li&FPGA 在云规模的网络互连系统中应当充当怎样的角色?&/li&&li&如何高效、可扩放地对 FPGA + CPU 的异构系统进行编程?&/li&&/ol&&br&我对 FPGA 业界主要的遗憾是,FPGA 在数据中心的主流用法,从除微软外的互联网巨头,到两大 FPGA 厂商,再到学术界,大多是把 FPGA 当作跟 GPU 一样的计算密集型任务的加速卡。然而 FPGA 真的很适合做 GPU 的事情吗?前面讲过,&b&FPGA 和 GPU 最大的区别在于体系结构,FPGA 更适合做需要低延迟的流式处理,GPU 更适合做大批量同构数据的处理。&/b&&br&&br&由于很多人打算把 FPGA 当作计算加速卡来用,两大 FPGA 厂商推出的高层次编程模型也是基于 OpenCL,模仿 GPU 基于共享内存的批处理模式。CPU 要交给 FPGA 做一件事,需要先放进 FPGA 板上的 DRAM,然后告诉 FPGA 开始执行,FPGA 把执行结果放回 DRAM,再通知 CPU 去取回。&b&CPU 和 FPGA 之间本来可以通过 PCIe 高效通信,为什么要到板上的 DRAM 绕一圈?&/b&也许是工程实现的问题,我们发现通过 OpenCL 写 DRAM、启动 kernel、读 DRAM 一个来回,需要 1.8 毫秒。而通过 PCIe DMA 来通信,却只要 1~2 微秒。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-ade077e9ffe5e9babeb857_b.jpg& data-rawwidth=&1761& data-rawheight=&647& class=&origin_image zh-lightbox-thumb& width=&1761& data-original=&https://pic4.zhimg.com/50/v2-ade077e9ffe5e9babeb857_r.jpg&&&/figure&&i&PCIe I/O channel 与 OpenCL 的性能比较。纵坐标为对数坐标。来源:[5]&/i&&br&&br&OpenCL 里面多个 kernel 之间的通信就更夸张了,默认的方式也是通过共享内存。本文开篇就讲,FPGA 比 CPU 和 GPU 能效高,体系结构上的根本优势是无指令、无需共享内存。使用共享内存在多个 kernel 之间通信,在顺序通信(FIFO)的情况下是毫无必要的。况且 FPGA 上的 DRAM 一般比 GPU 上的 DRAM 慢很多。&br&&br&因此我们提出了 ClickNP 网络编程框架 [5],&b&使用管道(channel)而非共享内存来在执行单元(element/kernel)间、执行单元和主机软件间进行通信&/b&。需要共享内存的应用,也可以在管道的基础上实现,毕竟 CSP(Communicating Sequential Process)和共享内存理论上是等价的嘛。ClickNP 目前还是在 OpenCL 基础上的一个框架,受到 C 语言描述硬件的局限性(当然 HLS 比 Verilog 的开发效率确实高多了)。理想的硬件描述语言,大概不会是 C 语言吧。&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-f0af9adc093_b.jpg& data-rawwidth=&1647& data-rawheight=&618& class=&origin_image zh-lightbox-thumb& width=&1647& data-original=&https://pic4.zhimg.com/50/v2-f0af9adc093_r.jpg&&&/figure&&i&ClickNP 使用 channel 在 elements 间通信,来源:[5]&/i&&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/v2-e6ca6cdab83c_b.jpg& data-rawwidth=&1585& data-rawheight=&359& class=&origin_image zh-lightbox-thumb& width=&1585& data-original=&https://pic2.zhimg.com/50/v2-e6ca6cdab83c_r.jpg&&&/figure&&i&ClickNP 使用 channel 在 FPGA 和 CPU 间通信,来源:[5]&/i&&br&&br&低延迟的流式处理,需要最多的地方就是通信。然而 &b&CPU 由于并行性的限制和操作系统的调度,做通信效率不高,延迟也不稳定&/b&。此外,&b&通信就必然涉及到调度和仲裁&/b&,CPU 由于单核性能的局限和核间通信的低效,调度、仲裁性能受限,硬件则很适合做这种重复工作。因此我的博士研究把 FPGA 定义为通信的「大管家」,不管是服务器跟服务器之间的通信,虚拟机跟虚拟机之间的通信,进程跟进程之间的通信,CPU 跟存储设备之间的通信,都可以用 FPGA 来加速。&br&&br&成也萧何,败也萧何。缺少指令同时是 FPGA 的优势和软肋。每做一点不同的事情,就要占用一定的 FPGA 逻辑资源。如果要做的事情复杂、重复性不强,就会占用大量的逻辑资源,其中的大部分处于闲置状态。这时就不如用冯·诺依曼结构的处理器。数据中心里的很多任务有很强的局部性和重复性:&b&一部分是虚拟化平台需要做的网络和存储,这些都属于通信;另一部分是客户计算任务里的,比如机器学习、加密解密&/b&。我们首先把 FPGA 用于它最擅长的通信,日后也许也会像 AWS 那样把 FPGA 作为计算加速卡租给客户。&br&&br&不管通信还是机器学习、加密解密,算法都是很复杂的,如果试图用 FPGA 完全取代 CPU,势必会带来 FPGA 逻辑资源极大的浪费,也会提高 FPGA 程序的开发成本。更实用的做法是 &b&FPGA 和 CPU 协同工作,局部性和重复性强的归 FPGA,复杂的归 CPU。&/b&&br&&br&当我们用 FPGA 加速了 Bing 搜索、深度学习等越来越多的服务;当网络虚拟化、存储虚拟化等基础组件的数据平面被 FPGA 把持;当 FPGA 组成的「数据中心加速平面」成为网络和服务器之间的天堑……似乎有种感觉,FPGA 将掌控全局,CPU 上的计算任务反而变得碎片化,受 FPGA 的驱使。以往我们是 CPU 为主,把重复的计算任务卸载(offload)到 FPGA 上;以后会不会变成 FPGA 为主,把复杂的计算任务卸载到 CPU 上呢?随着 Xeon + FPGA 的问世,古老的 SoC 会不会在数据中心焕发新生?&br&&br&「跨越内存墙,走向可编程世界」&i&(&/i&&i&Across the memory wall and reach a fully programmable world.&/i&)&br&&br&&b&参考文献:&/b&&br&[1] Large-Scale Reconfigurable Computing in a Microsoft Datacenter &a href=&//link.zhihu.com/?target=https%3A//www.microsoft.com/en-us/research/wp-content/uploads/2014/06/HC26.12.520-Recon-Fabric-Pulnam-Microsoft-Catapult.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&microsoft.com/en-us/res&/span&&span class=&invisible&&earch/wp-content/uploads/2014/06/HC26.12.520-Recon-Fabric-Pulnam-Microsoft-Catapult.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&[2] A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services, ISCA'14 &a href=&//link.zhihu.com/?target=https%3A//www.microsoft.com/en-us/research/wp-content/uploads/2016/02/Catapult_ISCA_2014.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&microsoft.com/en-us/res&/span&&span class=&invisible&&earch/wp-content/uploads/2016/02/Catapult_ISCA_2014.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&[3] &a href=&//link.zhihu.com/?target=https%3A//www.wired.com/2016/09/microsoft-bets-future-chip-reprogram-fly/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Microsoft Has a Whole New Kind of Computer Chip—and It’ll Change Everything&/a&&br&[4] A Cloud-Scale Acceleration Architecture, MICRO'16 &a href=&//link.zhihu.com/?target=https%3A//www.microsoft.com/en-us/research/wp-content/uploads/2016/10/Cloud-Scale-Acceleration-Architecture.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&microsoft.com/en-us/res&/span&&span class=&invisible&&earch/wp-content/uploads/2016/10/Cloud-Scale-Acceleration-Architecture.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&[5] &a href=&//link.zhihu.com/?target=https%3A//www.microsoft.com/en-us/research/publication/clicknp-highly-flexible-high-performance-network-processing-reconfigurable-hardware/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ClickNP: Highly Flexible and High-performance Network Processing with Reconfigurable Hardware - Microsoft Research&/a&&br&[6] Daniel Firestone, SmartNIC: Accelerating Azure's Network with. FPGAs on OCS servers.
利益相关:微软亚洲研究院实习生,研究方向是 FPGA 在数据中心的应用。 问题「用 FPGA 代替 CPU」中,这个「代替」的说法不准确。我们并不是不用 CPU 了,而是用 FPGA 加速适合它的计算任务,其他任务仍然在 CPU 上完成,让 FPGA 和 CPU 协同工作。 本回答…
首先我觉得你应该好好过一遍MIT的Linear Algebra的课。这个课有两个版本,我是跟这个更适合自学的版本。因为这个版本所有章节都模块化了,跟起来不会让人觉得压力很大。&a href=&//link.zhihu.com/?target=https%3A//ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/index.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linear Algebra&/a&&br&&br&我所说的过一遍,不是你看个录像就完事儿了的,首先,把pdf资料都打印出来,然后你得记笔记,接着你得跟着助教做习题课的练习,最后你得把课后作业都做完,并且把考试也做完(都有答案的你自己可以check)。这个版本的题目量不是很大,但是都是精挑细选的题目,做完会让你有一种豁然开朗的感觉。不管你本科是不是理工科,线代基础有多好,我都建议仔细过一遍,一定能发现很多新东西。如果基础够好,用不着看课本,直接看讲义就行了,因为已经讲得很细很好了。&br&&br&然后就是前面说的Matrix Cookbook,&br&&a href=&//link.zhihu.com/?target=https%3A//www.ics.uci.edu/%7Ewelling/teaching/KernelsICS273B/MatrixCookBook.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&ics.uci.edu/~welling/te&/span&&span class=&invisible&&aching/KernelsICS273B/MatrixCookBook.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&这本书其实就是一本速查手册,里面向量矩阵微分的东西还是很全的。这些东西一般也很难背下来,用到了查就是了。&br&&br&如果你要从写code的层面去学线性代数,方法一,就是看这本书:&br&Coding the Matrix: Linear Algebra through Applications to Computer Science&br&&a href=&//link.zhihu.com/?target=https%3A//www.amazon.com/Coding-Matrix-Algebra-Applications-Computer/dp//ref%3Dsr_1_8%3Fie%3DUTF8%26qid%3D%26sr%3D8-8%26keywords%3Dlinear%2Balgebra& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linear Algebra through Applications to Computer Science: Philip N. Klein: 0: Amazon.com: Books&/a&&br&布朗大学之前在coursera开过公开课,好像已经下架了,不过网上能找到视频。&br&&br&如果你要从写code的层面去学线性代数,但是你想上一门课,方法二,就是去跟EDX这门课:&br&&a href=&//link.zhihu.com/?target=https%3A//www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linear Algebra - Foundations to Frontiers&/a&&br&&br&如果你要是对矩阵的数值计算计算感兴趣那就去看约翰霍普金斯大学的&br&Matrix Computations &a href=&//link.zhihu.com/?target=https%3A//www.amazon.com/Computations-Hopkins-Studies-Mathematical-Sciences/dp//ref%3Dsr_1_1%3Fie%3DUTF8%26qid%3D%26sr%3D8-1%26keywords%3DMatrix%2Bcomputation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gene H. Golub, Charles F. Van Loan: 4: Amazon.com: Books&/a&,&br&不过现在Matlab和Numpy的线性代数的库已经很厉害了,所以自己手动去实现矩阵计算的机会我个人认为应该不会特别多。&br&&br&其他的话,ML的书中和论文中出现什么上网搜就行了。&br&&br&最后墙裂建议先把MIT的认真上一遍,真的是上过的最好的一门线性代数打底的课程:&br&&br&----------------------------------&br&-------------------------Update 一下-------------&br&国内要是有看不到的可能因为视频是youtube的,看网易公开课对应章节的课程视频和习题课视频就行了:&br&&br&课程视频:&br&&a href=&//link.zhihu.com/?target=http%3A//open.163.com/special/opencourse/daishu.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&麻省理工公开课:线性代数_全35集_网易公开课&/a&&br&&br&习题课视频:&br&&a href=&//link.zhihu.com/?target=http%3A//open.163.com/special/opencourse/mitxianxingdaishuxitike.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&麻省理工学院公开课:MIT线性代数习题课_全36集_网易公开课&/a&&br&-----------------------&br&布朗大学的那个Coding the Matrix的视频,在这里:&br&&a href=&//link.zhihu.com/?target=https%3A//cs.brown.edu/video/channels/coding-matrix-fall-2014/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coding the Matrix, Fall 2014&/a&&br&整本书的资料,在这里:&br&&a href=&//link.zhihu.com/?target=http%3A//codingthematrix.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coding The Matrix&/a&&br&&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/v2-eb0f42dbccc_b.jpg& data-rawwidth=&2016& data-rawheight=&1512& class=&origin_image zh-lightbox-thumb& width=&2016& data-original=&https://pic4.zhimg.com/50/v2-eb0f42dbccc_r.jpg&&&/figure&
首先我觉得你应该好好过一遍MIT的Linear Algebra的课。这个课有两个版本,我是跟这个更适合自学的版本。因为这个版本所有章节都模块化了,跟起来不会让人觉得压力很大。 我所说的过一遍,不是你看个录像就完事儿了的,首先,把pdf资料都打印…
&b&请不要嘲笑别人的想法&/b&&b&,老外已经实现了四台电脑的计算集群,题主20台也应该是可以实现的。&/b&这个资料是英文,我找到了部分中文资料,粗略地浏览了一遍,应该是可以实现的,但是细节部分没看明白,求高人翻译资料。(不好意思,我刚才发现和&a class=&member_mention& data-hash=&1cd5fbac7c6f26e49552d& href=&//www.zhihu.com/people/1cd5fbac7c6f26e49552d& data-hovercard=&p$b$1cd5fbac7c6f26e49552d&&@高超&/a& 的回答撞车了,不过,这些资料确实是在我没看他的资料之前自己搜索出来的,嘿嘿,大家就当他回答的补充好了)。知乎里的大神真多,呵呵,以后得好好看回答&br&&br&资料地址如下 官方网址 &a class=& wrap external& href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%7Eadams/research/microwulf/& target=&_blank& rel=&nofollow noreferrer&&Microwulf: A Personal, Portable Beowulf Cluster&/a&&br&
中文翻译的资料地址如下&a class=& wrap external& href=&//link.zhihu.com/?target=http%3A//www.360doc.com/content/12/4_.shtml& target=&_blank& rel=&nofollow noreferrer&&【个人小超算】实战资料汇编&/a&&br&
先上张图片震撼一下大家&br&&figure&&img data-rawheight=&600& data-rawwidth=&800& src=&https://pic3.zhimg.com/50/65efd8304d9fdafc630bb4_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic3.zhimg.com/50/65efd8304d9fdafc630bb4_r.jpg&&&/figure&&figure&&img data-rawheight=&600& data-rawwidth=&800& src=&https://pic4.zhimg.com/50/36b1ffece1a83be9bab5cd2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/50/36b1ffece1a83be9bab5cd2_r.jpg&&&/figure&&figure&&img data-rawheight=&600& data-rawwidth=&800& src=&https://pic1.zhimg.com/50/0a60bf8a4aec5cbf2c38f7_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/50/0a60bf8a4aec5cbf2c38f7_r.jpg&&&/figure&&figure&&img data-rawheight=&600& data-rawwidth=&800& src=&https://pic1.zhimg.com/50/7bfc1f093524_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/50/7bfc1f093524_r.jpg&&&/figure&以下是我找到中文翻译资料,我是直接复制的,没能把图片等复制过来,大家就凑合看吧,也可以看上面那个中文资料的网站&br&&br&&b&个人电脑阵列&/b&&br&&br&&b&一、作者简介:&br&&/b&&br&&b&乔尔 亚当斯&/b& (&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Joel Adams&/a&)是卡尔文学院(&i&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Calvin College&/a&&/i&)计算机科学(&i&&a href=&//link.zhihu.com/?target=http%3A//cs.calvin.edu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&computer science&/a&&/i&)教授,1988年获得在匹次堡大学获得博士学位,主要研究超算的内部连接,是几本计算机编程教材的作者,两次获得&i&Fulbright Scholar
(毛里求斯1998, 冰岛 2005).&br&&/i&缇姆 布伦姆(&a href=&//link.zhihu.com/?target=http%3A//timbrom.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tim Brom&/a&)是卡耐基大学计算机科学的研究生,2007年五月在卡尔文学院获得计算机科学学士学位。&br&&br&&b&二、说明:&/b&&br&&p&&b&此小超算拥有超过260亿次的性能,价格少于2500美元,重量少于31磅,外观规格为11& x 12& x 17&——刚好够小,足够放在桌面上或者柜子里上,&/b&&/p&&p&&b&更新:&/b&日,这个小超算已经可以用1256美元构建成,使得其性价比达到4.8美元/亿次——这样的话,可以增加更多的芯片,以提升性能,让其更接近21世纪初的超算性能。&/p&此小超算是由卡尔文大学的计算机系统教授乔尔 亚当斯和助教 缇姆 布伦姆设计和构建。&p&
下面是原文的目录,可点击查看:&/p&&ul&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/design/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&设计&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/budget/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&硬件信息&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/sys/microwulf_notes.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&软件系统构建说明&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/photos/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&效果图片&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/performance/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&性能&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/compEff/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&计算效率&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/PPR/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&价格效率&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/power/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&功耗&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/news/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&新闻报道&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/related/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&相关系统&/a&&/li&&/ul&&h3&
三、介绍&/h3&作为一个典型的超算用户,我需要到计算中心排队,而且要限定使用的计算资源。这个对于开发新的分布式软件来说,很麻烦。所以呢,我需要一个自己
的,我梦想中的小超算是可以小到放在我的桌面上,就像普通个人电脑一样。只需要普通的电源,不需要特殊的冷切装置就可以在室温下运行……
2006年末, 两个硬件发展,让我这个梦想接近了现实:
&/p&&ol&&li&多核普及&/li&&li&千兆局域网相关硬件普及&/li&&/ol&
结果呢,我就设想了一个小型的,4个节点,使用多核芯片,每个节点使用高速网线连接。&br&&p&
2006年秋天, 卡尔文学院计算机系给了我们一笔小钱——就是2500美元,去构建这么一个系统,我们当时设定的目标:&/p&&ul&&li&费用少于2500美元——这样一般人都能负担得起,可以促进普及。&/li&&li&足够小,适合放在我的桌面上,适合放到旅行箱里。&/li&&li&要够轻,可以手提,然后带到我的汽车里。&/li&&li&性能强劲,测试结果至少要200亿次:&ul&&li&用于个人研究,&/li&&li&用于我教授的高性能运算课程,&/li&&li&用于专业论坛讲授、高中讲演等,&/li&&/ul&&/li&&li&只需要一根电源线,使用普通的120伏电源。&/li&&li&可在室温下运行。&/li&&/ul&&p&
据我们当时所知,已经有一些小型的超算,或者是性价比不错的超算出现,这些东西给了我们很好的参考:
&/p&&ul&&li&&a href=&//link.zhihu.com/?target=http%3A//littlefe.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Little Fe&/a&&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.linuxjournal.com/article/8177& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Ultimate Linux Lunchbox&/a&&/li&&/ul&&p&
下面是历年的性价比之王:&/p&&ul&&li&2005: &a href=&//link.zhihu.com/?target=http%3A//www.clustermonkey.net//content/view/41/33/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kronos&/a&&/li&&li&2003: &a href=&//link.zhihu.com/?target=http%3A//aggregate.org/KASY0/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&KASY0&/a&&/li&&li&2002: &a href=&//link.zhihu.com/?target=http%3A//www.geek.com/the-green-destiny-a-cluster-for-the-rest-of-us/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Green Destiny&/a&&/li&&li&2001: &a href=&//link.zhihu.com/?target=http%3A//www.extremelinux.info/stonesoup/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Stone Supercomputer&/a&&/li&&li&2000: &a href=&//link.zhihu.com/?target=http%3A//aggregate.org/KLAT2/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&KLAT2&/a&&/li&&li&2000: &a href=&//link.zhihu.com/?target=http%3A//tux.anu.edu.au/Projects/Beowulf/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&bunyip&/a&&/li&&li&1998: &a href=&//link.zhihu.com/?target=http%3A//loki-www.lanl.gov/papers/sc98/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Avalon&/a&&/li&&/ul&&p&在同一时间,还有其他更廉价或者是更具性价比的超算集群,不过这些记录都在2007年被改变了,最具性价比的就是下文介绍的小超算(2007年一月,9.41美元/亿次),而其记录半年后就被打破(2007年8月 4.784美元/亿次)。&/p&&br&&b&架构设计:&/b&&br&&br&个人小超算一般做法是使用多核芯片,集中安装到一个小的空间里,集中供电——嗯,如果能自己烧制主板,体积上应该可以做得更小——树莓派的主板体积很小,就是芯片不给力,所以需要那么多片才能达到2007年用普通电脑芯片实现的性能。
&p&1960年代末,吉恩 庵达郝乐(Gene Amdahl)提出了一个设计准则,叫 &庵达赫乐法则&(Amdahl's Other Law),大意是:
&/p&&blockquote&&i&
为了兼容性考虑, 下面几个特性应该相同: &ul&&li&每片芯片的频率&/li&&li&每根内存大小&/li&&li&每处带宽&/li&&/ul&&/i&&/blockquote&&p&
高性能计算一般有三个瓶颈:芯片运算速度,运算所需内存,吞吐带宽。本小超算里面,带宽主要是指网络带宽。我们预算是2500美元,在设定了每核内存量,每核的带宽之后,其中芯片运算速度当然是越快越好。&/p&&p&内部使用千兆网络(GigE),则意味着我们的带宽只有1Gbps,如果要更快的,可以使用比如Myrinet,不过那会超预算了,此处核心1吉赫兹+每核1吉B内存+1吉bps,嗯,看起来比较完美,哈哈。最终决定是2.0GHz的双核芯片,每核1GB内存&/p&&p&
芯片,使用AMD Athlon 64 X2 3800 AM2+ CPUs. 2007年一月时每片价格$165 ,这种2.0GHz的双核芯片,是当时可以找到的性价比最好的。
(2007年8月就更便宜了,每片只有$65.00).&/p&&p&为了尽量减少体积,主板选用的是MSI Micro-ATX。此主板特点是小(9.6& by 8.2&) ,并且有一个AM2
socket,可支持AMD的Athlon多核芯片。其实如果有条件的话,更应该做的是使用AMD的四核Athlon64
CPU替代这个双核,而这系统恰好还不用改。&/p&&p&To do so, we use motherboards with
a smaller form-factor
(like &a href=&//link.zhihu.com/?target=http%3A//littlefe.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Little Fe&/a&)
than the usual ATX size,
and we space them using threaded rods
(like &a href=&//link.zhihu.com/?target=http%3A//www.clustercompute.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&this cluster&/a&)
and scrap plexiglass, to minimize &packaging& costs.
By building a &double decker sandwich& of
four microATX motherboards, each with
a dual core CPU and
2 GB RAM (1 GB/core),
we can build a 4-node, 8-core, 8GB multiprocessor
small enough to fit on one's desktop,
powerful enough to do useful work,
and inexpensive enough that anyone can afford one. &br&&/p&&br&&p&此
主板上已经嵌有一个千兆网卡,还有一个PCI-e扩展插槽,在PCI-e插槽插入另一根网卡(41美元),用于平衡芯片运算速度和网络带宽。这样,四块主
板总共就有内嵌的4个网卡,外加PCI-e插槽的4张网卡,一共8个网络通道,用网线把它们都连接到8口路由器(100美元)上。&br&&/p&&p&
Our intent was to provide sufficient bandwidth for each
core to have its own GigE channel,
to make our system less imbalanced with respect to
CPU speed (two x 2 GHz cores) and network bandwidth (two x 1 Gbps adaptors).
This arrangement also let us
experiment with channel bonding the two adaptors,
experiment with HPL using various MPI libraries
using one vs two NICs,
experiment with using one adaptor for &computational& traffic
and the other for &administrative/file-service& traffic,
and so on.)
每块主板插了两根内存,共2G,这8G内存消耗了预算的40%!!&/p&&p&为了更小化,本小超算没有使用机箱,而是一个完全非封闭的外架,像&a href=&//link.zhihu.com/?target=http%3A//littlefe.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Little Fe&/a& 和
&a href=&//link.zhihu.com/?target=http%3A//www.clustercompute.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这些集群&/a&,把主板直接安装到有机玻璃上面,然后用几根小铁杆撑起来,并连接成一立体状。——(这个架子一般的五金店应该可以制造,用导热性好的铝/铁当托盘,整机的热分布会好点,也有利于集中散热)&/p&&p&最底部是两片有机玻璃隔开的一个夹层,放着8口路由,光驱,还有250GB的硬盘。&br&&/p&&p&结构图如下:&/p&&figure&&img data-rawheight=&311& data-rawwidth=&452& src=&https://pic3.zhimg.com/50/836f990c77a27c0c7fe90f4808eaabed_b.jpg& class=&origin_image zh-lightbox-thumb& width=&452& data-original=&https://pic3.zhimg.com/50/836f990c77a27c0c7fe90f4808eaabed_r.jpg&&&/figure&&br&&br&&br&我们这小超算的硬件结构&br&&p&如图所示,主板放在最顶层的下方,而中间层则两面都放主板,底层则上方放主板,这样做的目的是尽可能减少高度。&br&&/p&&p&
Since each of our four motherboards is facing another motherboard,
which is upside-down with respect to it, the CPU/heatsink/fan assembly
on one motherboard
lines up with the PCI-e slots in the motherboard facing it.
As we were putting a GigE NIC in one of these PCI-e slots,
we adjusted the spacing between the Plexiglas pieces so as to leave a 0.5& gap
between the top of the fan on the one motherboard and the top of the NIC on the
opposing motherboard. 这样的结果就是每块主板间的间距为6&,如图所示:&/p&&br&&br&主板之间的距离&br&&p&
(说明:这些主板都有一个单独 PCI-e x16插槽,留给以后想提升性能的时候,可以插上一块GPU)
使用350瓦的电源供电(每块主板一个),使用双面胶固定在有机玻璃上,电源插座放在最上面的有机玻璃上,如图所示:&/p&&br&&br&本小超算的电源和风扇&br&&p&
(此处用胶水固定硬盘、光驱、路由器)&/p&&p&最靠近夹层的底部主板作为“主节点”——主控主板,连接硬盘、光驱(可选)等,系统启动/关机/重启的时候也是从这个部分操作。其他的主板当作“分支节点”,使用PXE网络启动方式启动。&/p&对最底部的主控主板做特殊设置,连接250GB硬盘,并且作为启动分区。插入光驱(主要是用于安装初始系统,现在都不需要了,直接用优盘做系统安装盘吧……)&br&插入另一块网卡10/100 NIC到PCI插槽中,用于连接外部网络。&br&&br&&p&顶部三个节点都是无硬盘的,
and used NFS to export the space on the 250 GB drive to them。&/p&&p&
下图显示了本小超算各个部分的连接关系(节点0为重心,连接了硬盘、光驱、以及连接外部的接口,内部中心为千兆路由,用于连接其他节点):
&/p&&figure&&img data-rawheight=&134& data-rawwidth=&420& src=&https://pic3.zhimg.com/50/fe70dd27a5eb255a815845da_b.jpg& class=&content_image& width=&420&&&/figure&&br&&p&说明:每个节点都有两条独立的通讯线路,连接自己和网络路由器。&br&&/p&&br&&p&
With four CPUs blowing hot air into such a small volume, we thought we should
keep the air moving through Microwulf.
To accomplish this, we decided to purchase four Zalman 120mm case fans
($8 each) and grills ($1.50 each).
Using scavenged twist-ties, we mounted two fans
-- one for intake and one for exhaust --
on opposing sides of each pair of facing motherboards.
This keeps air moving across the boards and NICs;
&i&Figure Five&/i& shows the two exhaust fans:&/p&&br&&br&Figure Five: Two of Microwulf's (Exhaust) Fans&br&&p&
So far, this arrangement has worked very well: under load,
the on-board temperature sensors report
temperatures about 4 degrees above room temperature.&/p&&p&
Last, we grounded each component (motherboards, hard drive, etc.)
by wiring them to one of the power supplies.&/p&&p&
系统使用的是有奔头(&a href=&//link.zhihu.com/?target=http%3A//www.ubuntu.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ubuntu Linux)&/a&.
开源通用信道(Open MPI)将自动识别每个节点的网络适配器,并让它们之间组成一个圆环型的信息交流系统。
To try to help Open MPI spread the load on both the
sending and receiving side, we configured the on-board
adaptors to be part of a 192.168.2.x subnet,
and the PCI-e adaptors to be part of a 192.168.3.x subnet.&br&&br&&br&&b&价格参考(2007年一月):&/b&&br&部件&br&
产品名称&br&
单价&br&数量&br&
&a href=&//link.zhihu.com/?target=http%3A//www.msicomputer.com/product/p_spec.asp%3Fmodel%3DK9N6PGM-F%26class%3Dmb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微星 K9N6PGM-F MicroATX&/a&
芯片&br&&a href=&//link.zhihu.com/?target=http%3A//www.amd.com/us-en/Processors/ProductInformation/0%2C%2C30_118_%2C00.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&威盛Athlon 64 X2 3800+ AM2 CPU&/a&
&a href=&//link.zhihu.com/?target=http%3A//www.shop.kingston.com/partsinfo.asp%3Fktcpartno%3DKVR667D2N5K2/1G& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&金士顿 DDR2-667 1GByte RAM&/a&
&a href=&//link.zhihu.com/?target=http%3A//www.geeks.com/details.asp%3Finvtid%3DESTAR-325-N%26cat%3DCAS& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Echo Star 325W MicroATX Power Supply&/a&
&a href=&//link.zhihu.com/?target=http%3A//www.intel.com/network/connectivity/products/pro1000pt_desktop_adapter.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Intel PRO/1000 PT PCI-Express NIC&/a& (节点连接路由)
&a href=&//link.zhihu.com/?target=http%3A//www.intel.com/network/connectivity/products/pro100s_adapter.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Intel PRO/100 S PCI NIC&/a& (主控主板连接外部网络)
&a href=&//link.zhihu.com/?target=http%3A//www.trendnet.com/products/TEG-S80TXE.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&
Trendware TEG-S80TXE 8-port Gigabit Ethernet Switch&/a&
&a href=&//link.zhihu.com/?target=http%3A//www.seagate.com/cda/products/discsales/marketing/detail/0%2C%2C00.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&希捷7200转 250GB SATA硬盘&/a&
&a href=&//link.zhihu.com/?target=http%3A//us.liteonit.com/us/index.php%3Foption%3Dcom_content%26task%3Dview%26id%3D199%26Itemid%3D99& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&
Liteon SHD-16S1S 16X&/a&
&a href=&//link.zhihu.com/?target=http%3A//www.zalman.co.kr/eng/product/view.asp%3Fidx%3D197& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&
Zalman ZM-F3 120mm Case Fans&/a&
&a href=&//link.zhihu.com/?target=http%3A//www.newegg.com/Product/Product.aspx%3FItem%3DN82E& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Generic NET12 Fan Grill (120mm)&/a&
$1.50&br&+ shipping
36& x 0.25& threaded rods
Lots of 0.25& nuts and washers
机箱或外壳&br&
12& x 11& 有机玻璃(是我们物理实验室的废品)
总价&br&&b&$2,470.00&/b&&h3&非必须的硬件&/h3&
产品名称&br&
KVM Switch
&a href=&//link.zhihu.com/?target=http%3A//www.linkskey.com/detail.php%3FProductid%3D186%26ProductName%3DLKV-S04ASK& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linkskey LKV-S04ASK&/a&
总价&br&&b&$50.00&/b&&p&
除了技术支持还有硬件加固 (购买自Lowes), 风扇和转接器购买自
&a href=&//link.zhihu.com/?target=http%3A//newegg.com& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&newegg.com&/a&,
其他都购买自(量多有折扣,呵呵):&/p&&p&&b&N F P Enterprises&/b&&br&
1456 10 Mile Rd NE&br&
Comstock Park, MI &br&
(616) 887-7385 &br&&/p&&p&So we were able to keep the price for the whole system to just under $2,500.
That's 8 cores with 8 GB of memory and 8 GigE NICs for under $2,500,
or about $308.75 per core. &br&&/p&&br&&p&&b&构建配置:&/b&&/p&&p&点击此处:&a href=&//link.zhihu.com/?target=http%3A//www.calvin.edu/%257Eadams/research/microwulf/sys/microwulf_notes.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&软件系统构建说明&/a&,有详细的介绍文件下载——建议想自己构建的人下载下来,然后按照其说明,逐步完成。&/p&&h3&
细节是魔鬼&/h3&&p&
首先是选用哪个&b&你牛叉发行版&/b&:曾经一度使用Gentoo,但后来觉得gentoo太消耗能量了(包括系统管理员的精力和系统的耗电),后来
试了试有奔头,一开始安装的桌面是6.10版本,其内核是2.6.17,但美中不足的是he on-board
NIC的驱动需要到2.6.18才内置,所以一开始两个月,我们的小超算就用的7.04的测试版(内核是2.6.20),直到最后稳定版发行就换了稳定
版。&/p&在其他三个计算节点上,安装的是有奔头的服务器版,因为它们不需要桌面功能。&br&&p&也就是:&b&有奔头桌面版+3个有奔头服务器版&/b&&/p&&br&&p&我们也试过其他的&b&集群管理软件&/b&:&a href=&//link.zhihu.com/?target=http%3A//www.rocksclusters.org/wordpress/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ROCKS&/a&,
&a href=&//link.zhihu.com/?target=http%3A//oscar.openclustergroup.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Oscar&/a&, 和 &a href=&//link.zhihu.com/?target=http%3A//warewulf.lbl.gov/cgi-bin/trac.cgi& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Warewulf&/a&.,但ROCKS和Oscar不支持无盘的节点。Warewulf工作良好,但因为本小超算实在太小,目前看不出其优势来。因为这篇&a href=&//link.zhihu.com/?target=http%3A//www.linuxclustersinstitute.org/Linux-HPC-Revolution/Archive/PDF06/35-Cope_J_final.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&论文&/a&,曾经想使用iSCSI。不过为了尽快让我们的集群运行起来,还是决定使用NFSroot,因为其配置非常简单,只需要修改/etc/initramfs.conf ,让其生成一个虚拟内存(initial ramdisk) that does NFSroot and then setting up DHCP/TFTP/PXELinux
on the head node, as you would for any diskless boot situation. &/p&&p&
We did configure the network adaptors differently:
we gave each onboard NIC an address on a 192.168.2.x subnet,
and gave each PCI-e NIC an address on a 192.168.3.x subnet.
Then we routed the NFS traffic over the 192.168.2.x subnet,
to try to separate &administrative& traffic from computational traffic.
It turns out that OpenMPI will use both network interfaces (see below),
so this served to spread communication across both NICs.&/p&&p&
One of the problems we encountered is that the on-board NICs
(Nvidia) present soem difficulties. After our record setting run
(see the next section) we started to have trouble with the on-board NIC.
After a little googling, we added the following option to the forcedeth
module options:
&/p&&div class=&highlight&&&pre&&code class=&language-text&&forcedeth max_interrupt_work=35
&/code&&/pre&&/div&&p&
The problem got better, but didn't go away. Originally we had the onboard Nvidia
GigE adaptor mounting the storage.
Unfortunately, when the Nvidia adaptor started to act up, it reset itself,
killing the NFS mount and hanging the &compute& nodes.
We're still working on fully resolving this problem,
but it hasn't kept us from benchmarking Microwulf.&/p&&p&&b&效果图:&/b&直接点击上面目录连接,可查看&br&&/p&&p&&b&性能表现:&/b&&/p&&h3&
所获得的性能表现&/h3&&p&
Once Microwulf was built and functioning it's fairly obvious that we
wanted to find out how 'fast' it was.
Fast can have many meanings, depending upon your definition.
But since the HPL benchmark is the standard used for the Top500 list,
we decided to use it as our first measure of performance.
Yes, you can argue and disagree with us, but we needed to start somewhere.&/p&&p&
We installed the development tools for Ubuntu (gcc-4.1.2) and then built
both &a href=&//link.zhihu.com/?target=http%3A//www.open-mpi.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Open MPI&/a& and
&a href=&//link.zhihu.com/?target=http%3A//www-unix.mcs.anl.gov/mpi/mpich2/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MPICH&/a&.
Initially we used OpenMPI as our MPI library of choice and we had both GigE NICs
configured (the on-board adaptor and the Intel PCI-e NIC t

我要回帖

更多关于 销毁会计资料 的文章

 

随机推荐