在航空業(yè)發(fā)展早期,人們已經(jīng)意識(shí)到未來的飛機(jī)一定會(huì)越來越快。事實(shí)也確實(shí)如此——從1903年萊特兄弟打造現(xiàn)代飛機(jī)雛形時(shí)的每小時(shí)50公里,到六十年代波音707的每小時(shí)約1000公里,飛機(jī)時(shí)速一直被不斷打破。從那以后,商用飛機(jī)的速度開始停滯不前,這是因?yàn)檫M(jìn)一步提高速度已經(jīng)完全不符合成本效益。
如今的計(jì)算機(jī)也遇到了類似的問題。幾十年以來,我們一直在推動(dòng)計(jì)算元件的小型化,這也讓我們每兩年左右就將硅芯片上的晶體管數(shù)量增加一倍。這種現(xiàn)象被稱為摩爾定律(以英特爾公司聯(lián)合創(chuàng)始人戈登·摩爾的名字命名)。經(jīng)過多年發(fā)展,計(jì)算資源的經(jīng)濟(jì)性與強(qiáng)大性已經(jīng)得到無數(shù)次證明。但從現(xiàn)在起,我們正邁入小型化的極限區(qū)域,計(jì)算性能也因此開始停滯不前。
這當(dāng)然是個(gè)大問題。如果摩爾定律在20年前就到達(dá)終點(diǎn),那么如今計(jì)算機(jī)處理器的性能將僅為真實(shí)水平的約千分之一,意味著我們將永遠(yuǎn)見識(shí)不到iPhone、Alexa或者流媒體電影的風(fēng)采。同樣的,如果不能繼續(xù)提高計(jì)算性能,我們在20年之后又會(huì)錯(cuò)過哪些驚人的創(chuàng)新?
近年來,不少研究人員一直在探索接下來的發(fā)展方向。有人認(rèn)為新技術(shù)才是答案,例如量子計(jì)算、碳納米管或者光子計(jì)算。但在與麻省理工學(xué)院的其他專家進(jìn)行了數(shù)年聯(lián)合研究之后,我個(gè)人認(rèn)為這些解決方案的不確定性太強(qiáng),而且還需要多年實(shí)踐。在此期間,我們最好不要貿(mào)然改造計(jì)算機(jī)芯片,而應(yīng)對運(yùn)行其上的軟件進(jìn)行重新編碼。
多年以來,程序員之所以不需要為計(jì)算速度而分神,是因?yàn)槟柖梢恢痹跒樗麄兲峁└鼜?qiáng)大的計(jì)算資源。所以,他們開始“偷懶”,將注意力集中在如何快速編寫出代碼身上——計(jì)算機(jī)的過剩性能足以消解其中的優(yōu)化不足問題。
例如,不少開發(fā)人員會(huì)使用“減材”之類的技術(shù):首先找到能夠解決問題A的代碼,而后使用其解決問題B——即使這并不是解決問題B的最優(yōu)方式。假設(shè)我們需要構(gòu)建一套類似于Siri的系統(tǒng)以識(shí)別語音命令,那么相較于構(gòu)建自定義程序,最好的辦法當(dāng)然是直接使用能夠識(shí)別各類單詞的現(xiàn)成程序,并以此為基礎(chǔ)調(diào)整相應(yīng)結(jié)果以提高這些程序的準(zhǔn)確度。
好消息是,這種方法確實(shí)能夠極大提升代碼編寫速度。壞消息是,有時(shí)會(huì)造成嚴(yán)重的執(zhí)行效率低下的難題。這種效率低下還會(huì)相互疊加:如果單一“減材”調(diào)整會(huì)帶來20%的性能損失,那么如果一款程序中包含20項(xiàng)“減材”調(diào)整,則代碼效率將僅為原始版本的百分之一。
這絕不只是思想實(shí)驗(yàn)。如今,要想在機(jī)器學(xué)習(xí)、機(jī)器人技術(shù)以及虛擬現(xiàn)實(shí)等領(lǐng)域取得一點(diǎn)點(diǎn)進(jìn)步,我們都需要大量計(jì)算能力。如果想要充分發(fā)掘這些技術(shù)的潛力,我們必須做出改變。雖然我們當(dāng)然可以在開發(fā)新算法以及簡化計(jì)算機(jī)硬件方面做出嘗試,但對大多數(shù)企業(yè)而言,快速提升計(jì)算性能的可行方法仍然是通過軟件性能工程提高軟件執(zhí)行效率。
其中一種性能工程策略,名為代碼“并行化”。大多數(shù)現(xiàn)有軟件都是使用數(shù)十年前的模式設(shè)計(jì)而成,這些模式會(huì)假定處理器每次只能執(zhí)行一項(xiàng)操作。這會(huì)極大拉低效率,因?yàn)楝F(xiàn)代處理器完全能夠通過芯片上的多個(gè)核心同時(shí)執(zhí)行多項(xiàng)運(yùn)算,且每個(gè)內(nèi)核本身也擁有并行處理能力。并行計(jì)算等策略完全能夠極大提升某些復(fù)雜任務(wù)的執(zhí)行速度,同時(shí)帶來更高的能源使用效率。
盡管軟件性能工程有望指明新的道路,但其實(shí)現(xiàn)過程同樣布滿坎坷。更新現(xiàn)有程序以提升其運(yùn)行速度是一項(xiàng)艱難的任務(wù),對編碼人員的并行編程水平與性能工程策略經(jīng)驗(yàn)要求極高。此外,既然領(lǐng)導(dǎo)者有意調(diào)整,也需要克服企業(yè)中習(xí)慣勢力帶來的巨大阻礙。
谷歌與亞馬遜等敏捷科技巨頭早已意識(shí)到這種趨勢的出現(xiàn)。他們的數(shù)據(jù)中心規(guī)模龐大,因此哪怕一丁點(diǎn)軟件性能提升,也足以帶來巨大的財(cái)務(wù)回報(bào)。而有他們作為帶頭人,其他機(jī)構(gòu)自然也會(huì)迅速跟上。對應(yīng)用程序開發(fā)人員們來說,在后續(xù)推出新功能時(shí),執(zhí)行效率也將成為重要的評估指標(biāo)。而在企業(yè)方面,這可能意味著替換掉一切沒有未來發(fā)展可言的傳統(tǒng)軟件系統(tǒng)。
軟件性能工程的不確定性比摩爾定律強(qiáng)得多。在投入大量時(shí)間與精力之前,企業(yè)往往無法斷定這方面努力具體能夠帶來怎樣的收益。性能提升可能非常有限、差異巨大且不可預(yù)測。但隨著我們逐漸迎來微處理器的物理極限,依靠軟件性能工程優(yōu)化執(zhí)行效率恐怕將成為大多數(shù)程序員從同一臺(tái)計(jì)算機(jī)中獲得更強(qiáng)性能的最佳選擇。
當(dāng)然,摩爾定律的終結(jié)并不代表著我們的計(jì)算設(shè)備也將停止迭代。但如果我們希望在人工智能與機(jī)器人技術(shù)等真正重要的領(lǐng)域再次大踏步前進(jìn),就必須著力培養(yǎng)自身創(chuàng)造力、并投入時(shí)間對軟件認(rèn)真進(jìn)行性能設(shè)計(jì)。
來源丨IEEE SPRCTRUM
作者丨Charles E. Leiserson, Tao B. Schardl and Neil C. Thompson
編輯丨科技行者