微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > CPU/GPU/FPGA都不给力,为啥说TPU才是未来?

CPU/GPU/FPGA都不给力,为啥说TPU才是未来?

时间:04-26 来源:新智元 点击:

本文来自计算机体系结构专家王逵。他认为,"摩尔定律结束之后,性能提升一万倍"不会是科幻,而是发生在我们眼前的事实。


2008年,《三体2:黑暗森林》里写到:
真的很难,你冬眠后不久,就有六个新一代超级计算机大型研究项目同时开始,其中三个是传统结构的,一个是非冯结构的,另外两个分别是量子和生物分子计算机研究项目。但两年后,这六个项目的首席科学家都对我说,我们要的计算能力根本不可能实现。量子计算机项目是最先中断的,现有的物理理论无法提供足够的支持,研究撞到了智子的墙壁上。紧接着生物分子计算机项目也下马了,他们说这只是一个幻想。最后停止的是非冯结构计算机,这种结构其实是对人类大脑的模拟,他们说我们这只蛋还没有形成,不可能有鸡的。最后只有三个传统结构计算机项目还在运作,但很长时间没有任何进展。


好在我们要的计算机还是出现了,它的性能是你冬眠时最强计算机的一万倍。传统结构?传统结构,能从摩尔定律这个柠檬里又榨出这么多汁来,计算机科学界都很吃惊。但这次,亲爱的,这次真的到头了


那是我读计算机体系结构专业博士的最后一年,当时我对此嗤之以鼻:摩尔定律怎么可能还有那么多油水可以榨。工艺极限近在眼前,不用智子出手,摩尔定律就会死翘翘了;传统结构更是没戏,CPU的架构已经被研究到头了,从2000年后,几乎没有捣鼓出啥新东西。


所以,这个"一万倍",真的是好科幻好科幻啊。


回顾三体2出版之后的这九年,工艺进展步履维艰,微架构亮点寥寥,CPU的性能每一代都是挤牙膏。一切都好像在印证我悲观的预期--计算机硬件的性能,好像真的提升不上去了。


但是,从去年开始,"科幻"般的事件相继降临:


2016年3月,AlphaGo战胜李世石,它使用了1202个CPU和176个GPU


2016年4月,NVidia发布Pascal架构,峰值性能达到11TFLOPS/s,黄仁勋在接受新智元专访时表示,半导体技术迭代在放缓,但GPU Pascal架构比上一代性能在两年内提升了近十倍,因此可以说我们正处在一个"超级摩尔定律"时代。


今年5月11日,NVidia发布Volta架构,峰值性能达到120TFLOPS/s


今年5月11日,Google公布TPU二代,峰值性能达到180TFLOPS/s,且可以通过Google Cloud访问


今年5月23日AlphaGo重出江湖并且毫无悬念地战胜了柯洁;24日,DeepMind CEO 哈萨比斯和AlphaGo项目总负责人David Silver 在新闻发布会上接受媒体采访时表示,AlphaGo实际上是在谷歌云端的单一一台机器上运行的,此机器建立于二代TPU之上(据说这台机器使用了4块TPU)


在摩尔定律已经严重减速甚至失效的今天,我们实实在在地看到了算力的大幅度提升,而且这场算力的军备竞赛还在继续!


而我,也改变了自己悲观的预期,相信在不远的将来,"摩尔定律结束之后,性能提升一万倍",将不会是科幻,而是发生在我们眼前的事实。


这是不是太疯狂了?设计计算机硬件的技术宅男们,凭什么做到这一点?凭TPU所代表的技术路线以及新的商业模式。且听我慢慢道来。


为什么CPU是低效的
在解释凭什么能做到"摩尔定律之后一万倍"之前,我们先聊聊为什么CPU和GPU无法担此重任。


如果你问我,CPU最大的特点是什么?我会说:它给程序员一个假象,让你感觉访问大容量的内存任何一个位置的延迟都是相同的,而且和做一次加法的延迟差不多,近乎为0。


制造这个假象非常困难。要知道CPU所采用的Logic生产线,同内存用的Memory生产线,有天壤之别。简单地说,由于某种底层的物理定律,Memory产线无法实现CPU所需要的高速度,Logic产线无法实现内存所需要的大容量。更糟糕的是,Memory制程相对于Logic制程还越来越慢,从1986年到2000年,Logic每年提速55%,而Memory只有10%。


何为"快""慢"?口语中的"快",可以指延迟小(从开始到结束间隔的时间短),也可以指带宽大(单位时间内通过的量大),说"高铁快",指前者,说"网速快",指后者。内存的带宽其实增长得还凑合,486时代CPU跑100MHz,SDRAM内存带宽为100MT/s;如今CPU达到2GHz~3GHz,DDR4内存带宽3200MT/s。虽然内存带宽有了几十倍的提升,但从发出读请求到内存条返回数据的延迟,这二十年来只减小了两倍多。


且不说外行人,很多初级程序员都不知道内存的延迟如此糟糕,即使是资深程序员,在大多数时候,也可以在编码中忽略它,为什么?这都是CPU的功劳。CPU使用了很多复杂的技术来隐藏内存的延迟,例如:
CPU使用非常大量的片上存储来做cache(缓存),把程序经常访问的数据放在片上,这样就不必访问内存了。


CPU用复杂的技术猜测程序即将访问哪些数据,用预取的方式,提前把这些数据从内存中搬运到片上,当某一段程序由于等待内存数据而卡住无法执行时,CPU用乱序的方式,执行接下来的片段,使用超线程技术,当一个程序因为等待内存数据而卡住时,选择另外一个程序来执行,CPU的硅片上,绝大多数面积都是用来制造"内存访问近乎零延迟"这一假象的,真正用来做运算的逻辑,所占面积甚至不到1%--这就是它低效的根源。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top