3
我们的包云岗老师在人生中的早期似乎显得有点默默无闻,虽然这种“默默无闻”也已经足以让我等学渣服服帖帖的献上自己的膝盖。
包老师在2003年获得了南京大学理学学士学位,并进入中科院计算所进行硕士和博士的学习。从公开记录上看,直到硕士为止,包老师的学习生涯都显得有些波澜不惊。不过从博士开始,十余年的积累开始集中爆发。
读博期间,包老师带领小组设计了具有独特优势的访存监控系统,为斯坦福大学、EPFL、清华大学、华为、韩国Hynix等十几个机构提供超过2TB的访存踪迹数据;提出了基于路划分的DMA Cache技术,2014年英特尔才在其高端处理器Xeon芯片中使用了相同的技术路线,要知道包老师可是08年就已经博士毕业了啊;在普林斯顿大学开展博士后研究,发布多核基准测试集PARSEC 3.0版本,被三大体系结构国际顶级会议上70%以上的论文使用;提出软件定义服务器新架构PARD (ASPLOS'15)……
等会,我知道大家现在可能都是一脸懵逼:访存是什么鬼?路划分是什么鬼?DMA又是什么鬼?实际上,这都是包老师的研究项目:计算机体系结构的研究内容,这项学科的目的就是想尽一切办法用改进硬件结构和软件结构的手段提高计算机的运行效率。
对计算机有些了解的同学可能就纳闷了。
计算机结构不是很简单吗?主板上面插个CPU,插个内存,再插个硬盘就能开机了,实在想玩游戏再买个好点的独立显卡,装个操作系统,跑的不知道多欢实呀,而且现在CPU运算这么快,哪怕看起来超级复杂的算式刷刷两下就算出来了,还怕运行效率不高?
然而事实上与大家想象的相反,正是因为CPU的速度越来越快,已经远远超过了计算机其他设备能适应的速度,才导致如果不能在微观层面给出非常合理的计算架构,会让计算机的运算能力面临极大的浪费。
且让我这位灵魂画手给大家举个很简单的例子,下图是一个精简过的计算机结构图,我们都知道计算机的运行不是靠一个部件单独完成的,比如说要运行一千段代码,在现代计算机的结构里,我们会先把代码编写好存到硬盘里,然后需要运行的时候,先由内存将这段代码调用至它的存储空间内,
然后再通过总线系统一条一条传送给CPU运行,CPU完成运行后再将结果输出给需要这些结果的设备,包括内存、硬盘、显示器等等。但是这里就有一个问题了!
电脑内的器件内运行时都有一个固定的周期,叫时钟周期,这些器件进行的所有操作都是以N个时钟周期为单位的,这样可以让对操作的规划和不同器件间的协调变得更容易。不过,大家对CPU的主频一般都很熟悉了:目前大多数CPU的主频在2-3GHz这个区间内,然而其他器件的主频大家关注过吗,比如内存?
实际上,内存已经是为了弥补硬盘的存取速度太慢(相对CPU的处理能力而言)而设置的一个用来与CPU配合的“高速”存储器了,然而现在最流行的DDR3内存的主频普遍只有1600MHz,甚至是1333MHz,只有CPU的一半左右。
这意味着什么呢?我们甚至可以忽略掉内存从硬盘中取出需要运算的命令的时间,就假设内存把这些命令送给CPU需要花费一个内存周期,而CPU运算这些命令需要花费一个CPU周期。这样一来就是说,在内存把一条指令送给CPU之后CPU只要花半个内存周期多一点点就可以算出结果并且将其送出,而内存却要等至少整整一个内存周期才能把下一条指令送给CPU。
WTF?那剩下的快半个内存周期的时间CPU干什么?儍看着你吭哧吭哧的跑吗?
要知道CPU一旦通电,每微妙的耗电都是实打实的用出去了,但是这种频率的不对等却让CPU必须耗费大量的时间白白等待内存把数据送过来,我们还没有考虑内存在其存储器内部寻找指令的时间和数据在总线上传输所花的时间等等,CPU的利用率已经被近乎腰斩,低到了只有60%左右,而且你还要考虑到这是在计算机内部相对高速的器件内存上显现的结果。更不用说在无数服务器组成的计算机群里,这种数据的寻找和传输需要浪费多少宝贵的时间和能量了。
而现在就是我们包老师登场的时间了,包老师所研究的科目的目标,包括上面提到的那些奇怪的词语,都是为了消除掉这种浪费,让电脑内的各种器件尽可能的协调,让每一个部件的应用效率都达到最大化。
说到这里大家可能隐隐约约可以明白为什么有些电脑或者手机纸面数据看起来很漂亮,但用起来的体验却如噩梦一般,而有些数据看起来很差的手机和电脑,用起来却丝般顺滑了。(我才没有黑Android和Windows → _→ )
不用说,在包括深度学习在内的各种应用对计算量的需求如此之高的今天,这样的研究无疑可以帮助企业和个人用户将自己手中设备的每一丝潜力都发挥出来,让他们得到最好的体验。
而需要大量计算能力的另一项领域是云计算,云计算是未来的趋势之一,这点应该没有任何人有疑问。
而我们的包老师也顺应这股浪潮,投身进了云计算的研究之中,因为他发现,目前的云计算存在一个很明显的瓶颈。
目前云计算的服务器,基本都还是基于传统的冯·诺依曼结构搭建起来的计算机(也就是我们每天都能看见的那些)组成的机群。
在这种结构下,虽然由于多年的经验,已经积累了许多优化运算效率的方法,但在云计算中这些方法却遇到了一个新的挑战:
云服务器面对的用户服务请求量是非常巨大的,但运算量的总量是有限的,无论如何优化都不可能超过这个物理最大值。
因此如果我们想在云服务中让计算设备的运算效率提高,也就意味着服务器CPU的负担加重,对每条请求的响应时间会延长。而响应时间是云服务中至关重要的指标,可能会严重影响用户体验和最终收入。因此各大数据公司不得不被迫强行让自己的服务器CPU处于一个比较低的应用率,可谓是有力使不出。
这种浪费达到了什么程度呢:谷歌作为一家在大数据处理方面有着顶尖实力的公司,其在线云服务的平均CPU利用率大概只有30%,而麦肯锡估计整个业界服务器平均利用率大约是6%,Gartner的估计稍乐观一些,也只有12%
Google的云服务CPU平均利用率,图片来自包云岗老师的博客
低的令人发指啊有没有!
包老师的团队在14年就已经开始了这项研究,而经过不懈努力,他们最终实现了一个非常大的突破:借鉴互联网曾经面对同样难题的解决方案,在计算机内部也建立了一种类似于网络包标签化机制的新技术,可以极大的提高云计算服务器计算效率的同时,保证足够快的响应速度。
各位有没有心动?想不想知道包老师到底是怎么做到的?10月21日,包云岗老师将在2016中国计算机大会上报告自己在这项技术上的最新研究成果,我们会赠送价值2300元的非CCF会员票,凭此票可以参加20-22日包括包老师在内的15位嘉宾精彩的特邀报告、30个论坛及50场活动(除晚宴外)。报名请扫描下面的二维码在公众号后台发送“CNCC”报名,我们会每天从报名者中选出一名送出门票~~
我们来看看这些大牛都有谁:
当然,万一大家没有时间亲自前往也没关系~届时雷锋网会对大会内容进行详细的报道。大家一定不要错过!
雷峰网原创文章,未经授权禁止转载。详情见转载须知。