如果晶体管不能变得更小,那么软件开发人员就必须变得更聪明

2020-06-06 03:24:23

1965年,英特尔(Intel)联合创始人戈登·摩尔(Gordon Moore)预测,计算机芯片上可以容纳的晶体管数量将呈指数级增长--事实的确如此,大约每两年翻一番。半个世纪以来,摩尔定律一直存在:计算机变得更小、更快、更便宜、更高效,使得个人电脑、智能手机、高速互联网等在全球范围内迅速普及。这种小型化趋势导致了今天的硅芯片具有几乎不可想象的小电路。晶体管,即实现计算机微处理器的微小开关,如此之小,以至于1000个首尾相连的晶体管还不到一根头发那么宽。在很长一段时间里,晶体管越小,它们切换的速度就越快。

但今天,我们正在接近晶体管可以小到什么程度的极限。因此,在过去的十年里,研究人员一直在绞尽脑汁寻找其他方法来提高性能,以便计算机行业能够继续创新。

虽然我们在等待量子、碳纳米管或光子学等新计算技术的成熟(这可能需要一段时间),但随着摩尔定律的终结,还需要其他方法来提高性能。在最近发表在“科学”杂志上的一篇期刊文章中,CSAIL的一个团队确定了继续提高计算速度需要优先考虑的三个关键领域:更好的软件和更精简的硬件。

资深作者Charles E.Leiserson说,几十年来,小型化带来的性能好处是如此之大,以至于程序员能够优先考虑让代码编写变得更容易,而不是让代码本身运行得更快。这种趋势带来的低效是可以接受的,因为更快的速度总是能够弥补不足。

不过,麻省理工学院电气工程与计算机科学系埃德温·西布利·韦伯斯特(Edwin Sibley Webster)教授莱瑟森表示,如今,要想在机器学习、机器人和虚拟现实等领域取得更大进展,将需要巨大的计算能力,而小型化已经无法提供这些能力。如果我们想要充分利用这些技术的潜力,我们必须改变我们的计算方式。

莱瑟森与研究科学家尼尔·汤普森、丹尼尔·桑切斯教授、兼职教授巴特勒·兰普森以及研究科学家乔尔·埃默、布拉德利·库兹毛尔和陶沙德尔共同撰写了这篇论文。它将发表在本周出版的下期“科学”杂志上。

对于软件,他们说,程序员以前把生产力放在性能之上的优先顺序导致了一些有问题的策略,比如减少:取处理问题A的代码,并用它来解决问题B。例如,如果有人必须创建一个系统来识别是或否,但不想编写一个全新的自定义程序,他们可以使用一个能够识别广泛单词的现有程序,并将其调整为只对是或否的答案做出响应。

虽然这种方法减少了编码时间,但它产生的低效很快就会加剧:如果单个缩减的效率是自定义解决方案的80%,然后添加20层缩减,那么代码的效率最终将比它可能的效率低100倍。

汤普森说,随着硬件改进速度的放缓,程序员必须重新考虑这些策略。如果我们想继续获得我们已经习惯的提速,我们就不能继续照常做生意。

取而代之的是,研究人员推荐像并行化代码这样的技术。许多现有的软件都是使用古老的假设设计的,即处理器一次只能执行一项操作。但近年来,多核技术使复杂任务的完成速度提高了数千倍,并以更节能的方式完成。

没有参与该项目的赖斯大学(Rice University)计算工程教授摩西·瓦迪(Mohe Vardi)表示:既然摩尔定律不会在银盘上给我们带来更好的性能,我们将不得不以艰难的方式提供性能。这是计算研究的大好机会,[麻省理工学院CSAIL]报告为此类研究提供了路线图。

对于算法,该团队建议了一个三管齐下的方法,包括探索新的问题领域,解决对算法如何扩展的担忧,以及对它们进行调整以更好地利用现代硬件。

在方面,该团队主张精简硬件,这样可以用更少的晶体管和更少的硅来解决问题。精简包括使用更简单的处理器和创建为特定应用程序量身定做的硬件,如图形处理器(GPU)是为计算机图形量身定做的。

Schardl说,为特定领域定制的硬件可以更高效,使用更少的晶体管,使应用程序的运行速度提高数十到数百倍。更广泛地说,硬件精简将进一步鼓励并行编程,创造额外的芯片面积,用于更多可以并行操作的电路。

虽然这些方法可能是最好的前进道路,但研究人员说,这并不总是一帆风顺的。使用这种技术的组织可能直到投入了大量的工程时间之后才知道他们努力的好处。此外,提速不会像摩尔定律那样一致:它们可能在一开始是戏剧性的,然后需要大量的努力才能做出较小的改进。

汤普森表示,对于谷歌(Google)和亚马逊(Amazon)这样的科技巨头来说,其数据中心的巨大规模意味着,即使是软件性能的微小改进也能带来巨大的财务回报。但是,虽然这些公司可能是领头羊,但其他许多公司如果想要保持竞争力,就需要认真对待这些问题。

要在团队确定的领域得到改善,还需要建立使其成为可能的基础设施和劳动力。

Leiserson说,性能增长将需要新的工具、编程语言和硬件来促进更多更好的性能工程。这也意味着计算机科学家可以更好地了解如何让软件、算法和硬件协同工作,而不是把它们放在不同的竖井里。

减少是指您提取处理问题A的代码,并使用它来解决问题B。(例如,如果某人必须创建一个识别是或否语音命令的系统,但又不想编写一个全新的自定义程序,那么他们可以采用一个能够识别大范围单词的现有程序,并将其调整为只对是或否的答案作出响应。)。

虽然这种方法减少了编码时间,但它产生的低效很快就会加剧:如果单个缩减的效率是自定义解决方案的80%,然后添加20层缩减,那么代码的效率最终将比它可能的效率低100倍。更多信息:查尔斯·E·莱瑟森(Charles E.Leiserson)等人。顶层有很大的空间:在摩尔定律、科学(2020)之后,什么将推动计算机性能?网址:10.1126/cience.aam9744