關(guān)于摩爾定律知識(shí)匯總
已經(jīng)穩(wěn)固運(yùn)行了 50 年之久的摩爾定律就將迎來(lái)終結(jié),但這背后也蘊(yùn)藏著大量的機(jī)會(huì)。原文來(lái)自 Rodney Brooks 的博客。
本文引用地址:http://2s4d.com/article/201808/385009.htm摩爾定律到底從何而來(lái)
Moore, Gordon E., Cramming more components onto integrated circuits, Electronics, Vol 32, No. 8, April 19, 1965.
Electronics 是一本 1930 年到 1995 年期間出刊的貿(mào)易期刊。1965 年,戈登·摩爾(Gordon Moore)發(fā)表于上的一篇長(zhǎng)達(dá)四頁(yè)半的文章可能是這本期刊最著名的文章了。這篇文章不僅闡明了一個(gè)趨勢(shì)的開(kāi)始,而且這種趨勢(shì)逐漸成為一個(gè)目標(biāo)/法則,統(tǒng)治了硅基電路產(chǎn)業(yè)(這是我們的世界中每一個(gè)數(shù)字設(shè)備的基礎(chǔ))五十年。摩爾是加州理工學(xué)院博士,是 1957 年成立的仙童半導(dǎo)體公司的創(chuàng)始人之一,同時(shí)自 1959 年起擔(dān)任該公司的研發(fā)實(shí)驗(yàn)室主任。仙童是以制造硅基半導(dǎo)體起家的,當(dāng)時(shí)大多數(shù)半導(dǎo)體還是以鍺為材料的,這種半導(dǎo)體工藝非常緩慢。
你可以從網(wǎng)絡(luò)上搜到大量聲稱(chēng)其原稿復(fù)印件的文件,但是我注意到其中有一些所謂的原稿中的圖是重新畫(huà)上去的,與我一直看到的原稿有些不同。下面我將再現(xiàn)原稿中的兩張圖表,據(jù)我所知,我的這份復(fù)制版是該雜志原稿的唯一復(fù)制版本,沒(méi)有手動(dòng)/人工的痕跡。
首先我要再現(xiàn)的是摩爾定律起源精華。然而,該論文中還有一個(gè)同樣重要的早期圖表,預(yù)測(cè)可能出現(xiàn)的硅基功能電路的未來(lái)產(chǎn)量。它的實(shí)際數(shù)據(jù)比這個(gè)少,而且正如我們所看到的,這張圖表包含了真實(shí)的未來(lái)。
這是一張關(guān)于集成電路上元件數(shù)量的圖。集成電路是經(jīng)由一個(gè)類(lèi)似于印刷的過(guò)程生產(chǎn)出來(lái)的。光以數(shù)種不同的模式打到薄薄的硅晶圓(wafer)上,同時(shí)會(huì)有不同的氣體填充進(jìn)它的氣囊中。不同的氣體會(huì)在硅晶圓表面引起不同的光致化學(xué)反應(yīng),有時(shí)會(huì)沉積某些類(lèi)型的材料,有時(shí)會(huì)腐蝕材料。有了能塑造光線(xiàn)的精確光掩模(mask),精確控制好溫度和曝光時(shí)間,就能打印出一個(gè)二維電路。該電路上有晶體管、電阻和其它元件。其中很多可能是在單個(gè)晶圓上一次成型的,就像許多字母在一頁(yè)紙上一次性印刷一樣。在任意一個(gè)做好的晶圓上電路上,其良率是質(zhì)量合格的芯片占一個(gè)晶圓上芯片總數(shù)的比例。然后這塊硅晶圓會(huì)被切成幾塊,每一塊上都包含了一個(gè)芯片,而且每一個(gè)電路都放在自己的塑料封裝中,只露出幾只小「腿」作為連接線(xiàn),如果你觀察一張過(guò)去四十年里芯片版圖,你會(huì)上面充滿(mǎn)了大量的集成電路。
單個(gè)集成電路中的元件數(shù)量很重要。既然集成芯片是打印出來(lái)的,過(guò)程中就沒(méi)有人工的痕跡,這不同于早期的電子產(chǎn)品,其中的每個(gè)元件都需要手工放置和添加?,F(xiàn)在一個(gè)包含了多個(gè)集成電路的復(fù)雜電路僅需要手工組裝這些集成芯片就可以了,而且后來(lái)這道工序也很大程度上了。只要有一個(gè)良率不錯(cuò)的生產(chǎn)過(guò)程,那么造出一塊單個(gè)集成芯片的時(shí)間就是恒定的,不管組件的數(shù)量是多少。這意味著總共需要手工或者機(jī)器連接的集成芯片數(shù)量較少。所以,就像摩爾那篇論文的標(biāo)題所說(shuō),把更多的元件集成到一個(gè)單個(gè)集成芯片上是一個(gè)很好的主意。
該圖豎軸表示的是一塊集成芯片上的組件數(shù)的以 2 為底的對(duì)數(shù),橫軸表示的是年份。左起一直向上延伸的每一個(gè)缺口都會(huì)將元件的數(shù)量增加一倍。所以 3 指的是 2 的三次方,等于 8,13 指的是 2 的 13 次方,等于 18192。從 1962 年到 1972 年,元件數(shù)量增加了 1000 倍。
這里有兩件事需要注意
第一是摩爾這里討論的是一塊集成電路上的元件,不僅僅是晶體管的數(shù)量。一般來(lái)說(shuō)元件的數(shù)量比晶體管要多出很多,雖然這一比率會(huì)因?yàn)槭褂貌煌绢?lèi)型的晶體管而隨著時(shí)間的推移下降。但在后來(lái)的幾年里,摩爾定律經(jīng)常變成純粹的晶體管計(jì)數(shù)。
另一件事是 1965 年發(fā)表這張圖中只有四個(gè)真實(shí)的數(shù)據(jù)點(diǎn)。而在 1959 年組件的數(shù)量是 2 的零次方,也就是 1,根本算不上是一塊集成電路,因?yàn)槟侵皇菃蝹€(gè)電路元件——那時(shí)集成芯片尚未發(fā)明。所以這是一個(gè)空數(shù)據(jù)點(diǎn)。之后他繪制了四個(gè)實(shí)際數(shù)據(jù)點(diǎn),我們假設(shè)是從仙童公司可能產(chǎn)生的數(shù)據(jù)中采集的。1962、1963、1964、1965 這四個(gè)年份對(duì)應(yīng)的數(shù)據(jù)點(diǎn)分別是 8、16、32 和 64。
這里面的機(jī)制是什么,它怎么能起作用的?它能起作用是因?yàn)樗跀?shù)字域中,也就是 yes 或 no 的域,0 或 1 的域。
在這篇四頁(yè)半頁(yè)的文章的后半頁(yè),摩爾解釋了他的預(yù)言的局限性。他說(shuō)對(duì)于一些東西,如儲(chǔ)能,他預(yù)測(cè)的趨勢(shì)就不起作用。能量占用一定數(shù)量的原子和電子來(lái)儲(chǔ)存一定數(shù)量的能量,所以你不僅不能隨便改變?cè)拥膫€(gè)數(shù)還需要存儲(chǔ)相同量的能量。同樣,如果你有一個(gè)半加侖的牛奶容器,你不能在里面放一加侖牛奶。
然而基本的數(shù)字抽象是 yes 或者 no。集成芯片中的電路元件只需要知道先前的元件是 yes 還是 no,不管是否存在電壓或電流。在設(shè)計(jì)階段一決定多少伏特或安培以上為 yes,多少以下為 no。這些數(shù)字之間需要有一個(gè)很好的分割,區(qū)分出一個(gè)顯著的中間區(qū)域與最大值區(qū)域或最小值區(qū)域。但是區(qū)域的幅度不會(huì)有什么影響。
我喜歡把它想象成一堆沙子。桌子上有或沒(méi)有一堆沙子?或許我們需要確定一下大概多少沙子才能算得上是一堆沙子。但是正常情況下,把一堆沙子減半,我們?nèi)匀豢梢哉f(shuō)桌子上有一堆沙子。
然后我們能再次將這個(gè)數(shù)量減半。并且,yes 或 no 的數(shù)字抽象依然可以起作用。我們還可以再減半,同樣沒(méi)問(wèn)題。就這樣,一次一次一次減半下去。
這就是摩爾定律的原理,最初的定理是這樣描述的:我們將會(huì)看到集成芯片上的元件數(shù)量每年增加一倍,從 1965 年到 1975 年持續(xù) 10 年。
其他版本的摩爾定律接踵而至;這些定律都是關(guān)于翻倍的,但是有時(shí)翻倍的是其他東西,并且翻倍需要的時(shí)間常數(shù)會(huì)稍長(zhǎng)。最流行的版本是晶體管數(shù)翻倍、晶體管的開(kāi)關(guān)速度翻倍、單個(gè)芯片上的存儲(chǔ)空間翻一倍、計(jì)算機(jī)的二級(jí)內(nèi)存翻一倍——其最初是在機(jī)械磁盤(pán)上,但是最近五年已經(jīng)升級(jí)成固態(tài)閃存的形式。還有很多其他的版本。
讓我們暫時(shí)回到最初版的摩爾定律。一塊集成芯片上的元件是分布在一塊二維硅晶圓上的。因此,為了使相同數(shù)量的硅的數(shù)量增加一倍,就需要將每單位面積的元件數(shù)量增加一倍。那就意味著一個(gè)元件的大小,在硅晶圓的每一個(gè)線(xiàn)性維度上要降低到原來(lái)的二分之一。反過(guò)來(lái),那就是說(shuō),摩爾知道每個(gè)元件的線(xiàn)性維度會(huì)逐年下降 71%。
但是為什么會(huì)限制在每年兩倍的數(shù)量上?考慮一下上面提到的沙堆模擬,為什么不能是四分之一或者十六分之一堆的沙子作為基數(shù)呢?當(dāng)你縮小元件的尺寸(通常稱(chēng)為 feature size,特征尺寸)時(shí),問(wèn)題就又回到某個(gè)集成芯片的良率上,也就是合格集成芯片的數(shù)量。隨著特征尺寸越來(lái)越小,芯片制作過(guò)程中廣每一步的光的投射模式的對(duì)準(zhǔn)需要更加精確。因?yàn)?radic;2=1.41,當(dāng)你將特征尺寸減半才能得到更好的良率。而且因?yàn)椴牧现械碾s質(zhì)也會(huì)被帶到芯片中,從循環(huán)中的氣體中而來(lái)并且經(jīng)過(guò)光化學(xué)反應(yīng)的材料,因此氣體必須是高純度的,這樣每個(gè)元件中的留存的壞原子才會(huì)更少。摩爾定律最初的版本中隱晦提到生產(chǎn)設(shè)備有望在下面的 10 年中,每年提升 29%。
在后來(lái)多種版本的摩爾定律中,翻倍的時(shí)間常數(shù)延伸到 2 年,甚至還要長(zhǎng)一點(diǎn)。但是處理設(shè)備會(huì)在每個(gè)周期提升 29%。
要見(jiàn)識(shí)摩爾定律原理的魔力,讓我們先來(lái)看看 25 次翻倍。該設(shè)備必須用比它小√2 的 25 次方倍的東西操作,即,大約小 5793 倍。然而我們可以在單個(gè)芯片上安裝 2 的 25 次方個(gè)組件,其數(shù)量可以達(dá)到 33,554,432 倍之多。我們?cè)O(shè)備的精確度已經(jīng)提升了 5793 倍,但是,由于線(xiàn)性對(duì)區(qū)域的影響,在原來(lái) 5793 倍的基礎(chǔ)上,這一數(shù)字進(jìn)一步加速了 5793 倍。這就是摩爾定律收益的來(lái)源。
Moore 只是在最初的論文中隱晦地提出了這一定律,設(shè)備在接下來(lái)十年內(nèi)逐年得到 29% 的提升。事實(shí)上,翻倍所用的時(shí)間常數(shù)會(huì)更長(zhǎng)。
現(xiàn)在終于到頭了。并不是因?yàn)樵O(shè)備良率的精確度不再提升了。不是的。而是因?yàn)槲覀兡脕?lái)做比喻的沙堆變得小到里面只有一粒沙子了。
戈登·摩爾令人難以置信的洞察力
或許讓人印象最深刻的是摩爾對(duì)該定律對(duì)世界產(chǎn)生的巨大影響的遠(yuǎn)見(jiàn)。下面是他文章中的第二段的第一句話(huà):集成芯片會(huì)帶來(lái)很多令人驚訝的技術(shù),比如家用計(jì)算機(jī),或者至少是終端連接在中央自動(dòng)計(jì)算控制中心上的計(jì)算機(jī),以及個(gè)人便攜式通訊設(shè)備。
摩爾提到的這些東西在 1965 年都算的上驚世駭俗。當(dāng)時(shí)所謂的「微型計(jì)算機(jī)」還是桌子那么大的,用起來(lái)通常還要接一些外圍設(shè)備,如磁帶機(jī)、讀卡器或打印機(jī),這樣的機(jī)器是很難進(jìn)入日常家用廚房的,即便是把冰箱、烤箱和水池都扔出去,也很難放得下它。當(dāng)時(shí)的絕大多數(shù)人還沒(méi)有見(jiàn)過(guò)計(jì)算機(jī),跟計(jì)算機(jī)互動(dòng)過(guò)的人就更少了。而且通常情況下,使用這種設(shè)備的人需要把打孔卡片一張張拆開(kāi),然后當(dāng)人把卡片都放入機(jī)器后,一天以后才能打印好。
以今天的標(biāo)準(zhǔn)來(lái)看,當(dāng)時(shí)汽車(chē)電子系統(tǒng)非常簡(jiǎn)單,大約只有 6 個(gè)開(kāi)關(guān),若干個(gè)簡(jiǎn)單機(jī)電裝置驅(qū)動(dòng)轉(zhuǎn)向指示,有擋風(fēng)玻璃雨刮器,「分電盤(pán)」定時(shí)點(diǎn)燃火花塞——在自動(dòng)電子設(shè)備中每一個(gè)單獨(dú)的功能產(chǎn)生的絲毫機(jī)械都能大到用肉眼看見(jiàn)。當(dāng)時(shí)的個(gè)人溝通設(shè)備還是轉(zhuǎn)盤(pán)撥號(hào)電話(huà)機(jī),一個(gè)家庭一部,牢牢地固定在墻上。
順便提一下,集成芯片做成的第一臺(tái)計(jì)算機(jī)是用于阿波羅任務(wù)的制導(dǎo)系統(tǒng)計(jì)算機(jī),命令模塊(Command Module)中一臺(tái),月球登陸器(Lunar Lander)上一臺(tái)。這些集成芯片都是由戈登·摩爾的仙童半導(dǎo)體公司制造的。第一版的計(jì)算機(jī)上有 4100 個(gè)集成電路,每一塊都有一個(gè) 3 輸入或非門(mén)(NOR gate)。1968 年第一臺(tái)功能更強(qiáng)大的載人飛行器僅有 2800 塊集成芯片,每塊芯片上有兩個(gè) 3 輸入或非門(mén)。摩爾定律在初具成形時(shí)就已經(jīng)開(kāi)始影響月球了。
一點(diǎn)題外話(huà)
原版的雜志文章中有這么一個(gè)漫畫(huà):
在摩爾定律 40 周年慶上,我問(wèn)摩爾博士這幅漫畫(huà)是不是出自他自己的創(chuàng)意。他回答說(shuō)此事與他無(wú)關(guān),文章中出現(xiàn)這個(gè)卡通也讓他很吃驚。
我找不到關(guān)于這幅漫畫(huà)來(lái)源的絲毫線(xiàn)索,我猜想是這幅漫畫(huà)的作者可能對(duì)我上面引用的這句話(huà)有些不滿(mǎn)。漫畫(huà)中的場(chǎng)景設(shè)在一個(gè)百貨商店中,當(dāng)時(shí)美國(guó)百貨公司通常有一個(gè)「Notions」柜臺(tái)區(qū),我自己沒(méi)有去過(guò)這樣的地方,因?yàn)楝F(xiàn)在已經(jīng)沒(méi)有了(我是 1977 年到的美國(guó))??雌饋?lái),Notions 像是賣(mài)服飾用品的,比如一些用于縫紉的徽章、棉線(xiàn)、彩帶等常用品。另一邊是化妝品專(zhuān)柜。而這兩個(gè)專(zhuān)柜的中間是便攜式家用電腦專(zhuān)柜,售貨員手里正拿著一臺(tái)電腦。
我猜這位漫畫(huà)家是想借此取笑摩爾的那個(gè)想法,試圖指出它的荒謬。然而 25 年后一切都過(guò)去了,當(dāng)時(shí)百貨店里賣(mài)的東西也煙消云散了。買(mǎi)化妝品的專(zhuān)柜還在那里,notions 的柜臺(tái)早已不見(jiàn)蹤影。這位漫畫(huà)家只看到了他眼前的東西,卻看不見(jiàn)未來(lái)的趨勢(shì)。
摩爾定律中有很多不同的形式,不只是他最初提出的單個(gè)芯片上的元件數(shù)量。
在摩爾定律中,關(guān)于芯片運(yùn)行速度有多快的說(shuō)法有很多版本,其中一個(gè)是,晶體管越小,開(kāi)關(guān)的速度越慢。同時(shí)關(guān)于 RAM存儲(chǔ)量運(yùn)行計(jì)算機(jī)的主內(nèi)存有多少。還有關(guān)于文件存儲(chǔ)和磁盤(pán)驅(qū)動(dòng)大小和速度也有多個(gè)版本。
多個(gè)摩爾定律混在一起對(duì)技術(shù)如何發(fā)展產(chǎn)生了巨大的影響。我會(huì)討論這種影響的三種模式:計(jì)算機(jī)設(shè)計(jì)中的競(jìng)爭(zhēng)、協(xié)調(diào)和從眾現(xiàn)象。
競(jìng)爭(zhēng)
內(nèi)存芯片是數(shù)據(jù)和程序運(yùn)行時(shí)的存儲(chǔ)位置。摩爾定律適用于單個(gè)芯片可以存儲(chǔ)的內(nèi)存字節(jié)數(shù),字節(jié)數(shù)通常是定期地四倍數(shù)的增長(zhǎng)。因?yàn)槭撬谋兜脑鲩L(zhǎng),所以硅晶圓代工廠(chǎng)的成本就會(huì)長(zhǎng)時(shí)間內(nèi)下降,這樣一來(lái)可以保持盈利了(今天,一家硅晶圓代工廠(chǎng)的資本成本大約是 70 億美元!),此外還需要將每個(gè) memory cell 在每個(gè)維度上增加一倍,以保證設(shè)計(jì)的平衡,因此這就又增加了四倍。
在早期的臺(tái)式電腦的內(nèi)存芯片中 2 的 14 次方(16384)個(gè)字節(jié),當(dāng)時(shí)的內(nèi)存芯片是 RAM(隨機(jī)存取存儲(chǔ)器,即內(nèi)存中的任何位置都需要同樣長(zhǎng)的訪(fǎng)問(wèn)時(shí)間,沒(méi)有快慢之分),而且這樣大小的芯片被稱(chēng)為 16K 芯片,K 不是整好的 1000,而是 1024(即 2 的 10 次方)。很多公司都生產(chǎn)過(guò) 16K 的 RAM 芯片。但是他們從摩爾定律中學(xué)到的唯一一樣?xùn)|西就是市場(chǎng)上何時(shí)有望出現(xiàn) 64K RAM 的芯片何時(shí)會(huì)出現(xiàn)。所以他們也了解自己必須要做什么才能保持競(jìng)爭(zhēng)優(yōu)勢(shì),他們也知道何時(shí)需要做好供工程師設(shè)計(jì)新機(jī)器的樣品。他們會(huì)早早準(zhǔn)備好芯片只要新機(jī)器一出來(lái),就等著設(shè)計(jì)安裝上去。他們還能判斷出在什么時(shí)間值得需要付出什么樣的代價(jià)以在競(jìng)爭(zhēng)中保持一點(diǎn)領(lǐng)先優(yōu)勢(shì)。每家公司都了解這個(gè)游戲(事實(shí)上,關(guān)于摩爾定律的時(shí)鐘什么時(shí)候需要調(diào)慢一些,他們已經(jīng)達(dá)成了一致),他們競(jìng)爭(zhēng)的是作戰(zhàn)效率。
協(xié)作
MIT科技評(píng)論曾經(jīng)發(fā)文談?wù)撨^(guò)摩爾定律的終結(jié)。如果你是一名設(shè)計(jì)師,要為臺(tái)式機(jī)器設(shè)計(jì)一個(gè)新的計(jì)算機(jī)機(jī)箱,或者其他類(lèi)似的數(shù)字機(jī)器,你可以調(diào)查一下打入計(jì)算機(jī)市場(chǎng)的某個(gè)好時(shí)機(jī),了解各種大小的 RAM 內(nèi)存所需要的電路板空間有多大,因?yàn)槟阋呀?jīng)知道了每個(gè)芯片有多少字節(jié)空間可用。你知道了磁盤(pán)空間的大小與其價(jià)格和尺寸的關(guān)系(磁盤(pán)直徑的大小會(huì)隨著其存儲(chǔ)總量的提高而提高。)你會(huì)清楚最新的處理器芯片的運(yùn)行速度會(huì)有多快。你會(huì)知道各種分辨率的顯示器的價(jià)格。所以,當(dāng)你打算向市場(chǎng)投放新型計(jì)算機(jī)時(shí),你可以提前幾年結(jié)合這些數(shù)字了解什么樣的選擇和配置是有潛力的。
銷(xiāo)售此款計(jì)算機(jī)的公司或許可以造出一兩個(gè)關(guān)鍵芯片,但是大部分元件還得從供應(yīng)商那里買(mǎi)。摩爾定律的周期性能讓他們不用擔(dān)心會(huì)突然出現(xiàn)一個(gè)顛覆性產(chǎn)品而打亂自己的業(yè)務(wù)流程和計(jì)劃。這才是讓數(shù)字革命按部就班繼續(xù)下去的根源所在。每件事都是有順序可以預(yù)測(cè)的,所以很少遇到盲阱。在整個(gè)人類(lèi)歷史上的任何技術(shù)領(lǐng)域,我們或許擁有了一個(gè)持續(xù)性和可預(yù)測(cè)性最強(qiáng)的進(jìn)步通道。
計(jì)算機(jī)設(shè)計(jì)中的從眾心理
但是這種好處帶來(lái)的一些影響也可以被看做是負(fù)面的(盡管我相信有人會(huì)爭(zhēng)辯說(shuō)其好處是不折不扣的)。我將把其中之一作為討論摩爾定律所深刻影響的第三件事情。
當(dāng)中央處理器能夠被置于一張芯片(見(jiàn)下面的英特爾 4004)中時(shí),通用計(jì)算機(jī)設(shè)計(jì)的一個(gè)特定形式出現(xiàn)了,很快,芯片上的這些處理器(即眾所周知的微處理器)就可以支持通用架構(gòu),即馮諾依曼架構(gòu) 。
這種架構(gòu)的一個(gè)顯著特點(diǎn)是:有一個(gè)很大的 RAM 內(nèi)存包含著 RAM 芯片中產(chǎn)生的指令和數(shù)據(jù),我們?cè)谏衔恼劦搅诉@個(gè)內(nèi)容。內(nèi)存被組織成可進(jìn)行連續(xù)索引(或?qū)ぶ?的位置區(qū)域,每個(gè)位置都包含同一數(shù)量的二進(jìn)制比特信息或數(shù)字。微處理器本身有一些專(zhuān)門(mén)的存儲(chǔ)單元(稱(chēng)為寄存器/ registers)和一個(gè)可進(jìn)行加、乘、(最近出現(xiàn)的)除運(yùn)算的運(yùn)算單元等。其中一種專(zhuān)門(mén)的寄存器被稱(chēng)為程序計(jì)數(shù)器(Program Counter/PC),它為當(dāng)前指令保留內(nèi)存中的一個(gè)地址。CPU 在當(dāng)前的指令位置上查看比特信息的模式并將其解碼成所應(yīng)執(zhí)行的操作。這個(gè)行為可能是為了取回 RAM 中的另一個(gè)位置,并將其放進(jìn)某個(gè)專(zhuān)門(mén)的寄存器中(這個(gè)過(guò)程稱(chēng)為負(fù)載/LOAD),或是為了將內(nèi)容發(fā)送到其他方向(STORE),或是為了將兩個(gè)特殊寄存器中的內(nèi)容輸送到運(yùn)算單元中,接著對(duì)該單元的輸出數(shù)據(jù)求和,將其存儲(chǔ)在另一個(gè)專(zhuān)門(mén)的寄存器中。然后中央處理單元增加其 PC 的數(shù)量并查看下一個(gè)連續(xù)尋址指令。一些特殊指令可以改變 PC 并使機(jī)器轉(zhuǎn)去執(zhí)行程序的其他部分,這個(gè)就是分支(branching)。例如,對(duì)于存儲(chǔ)在 RAM 中的某個(gè)連續(xù)值數(shù)組,如果其中一個(gè)專(zhuān)門(mén)的寄存器被用來(lái)計(jì)數(shù)其求和元素的數(shù)量,那么緊跟在加法指令后面的就有可能是一條遞減計(jì)數(shù)寄存器的指令,然后在程序早期進(jìn)行合并,執(zhí)行另一個(gè)負(fù)載,如果該計(jì)數(shù)寄存器仍然大于零就進(jìn)行添加。
絕大多數(shù)數(shù)字計(jì)算機(jī)都是這樣。其余例外都只是黑客們使其運(yùn)行得更快,但本質(zhì)上仍然與此模型類(lèi)似。不過(guò)請(qǐng)注意,馮諾依曼計(jì)算機(jī)以?xún)煞N方式使用 RAM——用以包含程序中的數(shù)據(jù)以及包含程序本身。我們稍后再談這一點(diǎn)。
由于摩爾定律的所有版本都在堅(jiān)定地運(yùn)作以支持這個(gè)基本模型,要想打破它十分困難。人類(lèi)的大腦肯定不會(huì)這樣工作,所以似乎存在其它一些強(qiáng)大的方法來(lái)組織計(jì)算。但是試圖改變基本組織是一件危險(xiǎn)的事情,因?yàn)榛诂F(xiàn)有架構(gòu)的摩爾定律將勢(shì)不可擋地繼續(xù)運(yùn)作下去。嘗試新事物最有可能使發(fā)展倒退幾年。因此,諸如來(lái)自 MIT 人工智能實(shí)驗(yàn)室(變成了至少三個(gè)不同的公司)的 Lisp Machine 或 Connection Machine 和日本第五代計(jì)算機(jī)計(jì)劃(其研究了兩種非常規(guī)的思想:數(shù)據(jù)流/ data flow 和邏輯推理/logical inference)等勇敢的大規(guī)模實(shí)驗(yàn)都失敗了,因?yàn)橹伴L(zhǎng)時(shí)間的摩爾定律效應(yīng)使傳統(tǒng)計(jì)算機(jī)的性能翻了一番又一番,其效果超越了新機(jī)器的諸多高級(jí)功能,而軟件卻可以更好地模擬新思路。
大多數(shù)計(jì)算機(jī)架構(gòu)師被鎖在了已存在了幾十年的傳統(tǒng)計(jì)算機(jī)組織中。他們競(jìng)相改變指令的編碼,使程序在每平方毫米上的執(zhí)行效率略高一點(diǎn)。他們競(jìng)相更改策略,以求在主處理器芯片上緩存更大、更多的 RAM 內(nèi)存副本。他們競(jìng)相探討如何在一張芯片上放置多個(gè)處理器、如何在一張同時(shí)運(yùn)行有多個(gè)處理器單元的芯片上共享 RAM 中的緩存信息。他們競(jìng)相研究如何使硬件在運(yùn)行著的程序中更好地預(yù)測(cè)未來(lái)決策,從而可以在白費(fèi)心機(jī)之前預(yù)先進(jìn)行下一個(gè)計(jì)算。但是基本上,他們都被鎖在了計(jì)算的同一種方式上。三十年前,有幾十種詳細(xì)的處理器設(shè)計(jì),但現(xiàn)在只有少數(shù)幾個(gè)類(lèi)別:X86、ARM 和 PowerPC。X86 大多是臺(tái)式機(jī)、筆記本電腦和云服務(wù)器。ARM 多用于手機(jī)和平板電腦。你可能會(huì)用一個(gè) PowerPC 來(lái)調(diào)整汽車(chē)的所有引擎參數(shù)。
圖形處理單元(Graphical Processing Units/GPU)是打破摩爾定律枷鎖的一個(gè)引人注目的例外。 它們不同于馮諾依曼機(jī)。為了獲得(特別是在游戲中)更好的視頻圖像性能,摩爾定律主導(dǎo)下的主處理器已變得越來(lái)越好,但是底層模擬也在變得越來(lái)越好,這并不足以提高實(shí)時(shí)渲染的效果。這種情況催生了一種新型的處理器。它對(duì)于通用計(jì)算不是特別有用,但是在(進(jìn)行屏幕上的圖形化渲染所需要的)數(shù)據(jù)流的加法和乘法運(yùn)算方面被優(yōu)化得很好。至此,一個(gè)新型的芯片被添加到摩爾定律池中,遠(yuǎn)遠(yuǎn)晚于傳統(tǒng)的微處理器、RAM 和磁盤(pán)。新的 GPU 沒(méi)有取代現(xiàn)有的處理器,而是作為圖形渲染所需要的合作伙伴被添加進(jìn)來(lái)。我在這里提到 GPU 是因?yàn)樵瓉?lái)它們對(duì)另一種類(lèi)型的計(jì)算(在過(guò)去三年中已經(jīng)變得非常流行)很有用處,這正成為摩爾定律還未結(jié)束的一個(gè)論點(diǎn)。我仍然認(rèn)為它會(huì)終結(jié),下一節(jié)將回到 GPU 的話(huà)題。
我們確定它會(huì)結(jié)束嗎?
如前所述,我們將一堆沙子分成兩半,卻沒(méi)法再分那最后一粒,這就是目前的境況,我們面對(duì)的是一粒沙子,傳統(tǒng)意義上的戈登·摩爾定律已經(jīng)結(jié)束了。
前面我談到了集成電路的特征尺寸(feature size)及其密度變化。1971 年,戈登·摩爾在英特爾,他們推出了其第一個(gè)單芯片微處理器 4004 ——12 平方毫米大小的芯片上分布有 2300 個(gè)晶體管,特征尺寸為 10μm。這意味著該芯片上任何組件的最小可分辨尺寸是千分之一毫米。
此后,特征尺寸有規(guī)律地降低,一定面積上的組件數(shù)量定期翻一番。盡管該期限正在逐漸延長(zhǎng)。在摩爾最初發(fā)表該定律的年代,芯片革新周期是一年?,F(xiàn)在是兩年多一點(diǎn)。在 2017 的第一季度,我們期望在大眾市場(chǎng)上看到第一款特征尺寸為 10nm 的商用芯片產(chǎn)品,連 1971 年的千分之一都不到,或者說(shuō)它是摩爾定律 46 年來(lái)生效了 20 次的成果。有時(shí)技術(shù)飛躍得比以往更快一些,因此 10 μm 到 10nm 之間實(shí)際上只有 17 次飛躍。你可以在維基百科上查看詳細(xì)內(nèi)容 。2012 年時(shí)特征尺寸是 22nm,2014 年是 14nm,現(xiàn)在到了 2017 年的第一個(gè)季度,我們將會(huì)看到 10nm 特征尺寸的芯片被送到終端用戶(hù)手中,并有望于 2019 年左右看到 7nm 的產(chǎn)品問(wèn)世。仍有一些活躍的研究領(lǐng)域致力于解決 7nm 特征尺寸的難題,不過(guò)業(yè)界卻對(duì)此信心十足。有預(yù)言說(shuō) 2021 年會(huì)突破 5nm,然而就在一年前,能否解決與此相關(guān)的工程問(wèn)題及其在各行業(yè)中的經(jīng)濟(jì)可行性如何還存有很大的不確定性。
5nm 只有大約 20 個(gè)硅原子的大小。如果再小的話(huà),該種材料就會(huì)受到量子效應(yīng)的主導(dǎo),經(jīng)典物理學(xué)性質(zhì)則會(huì)開(kāi)始坍縮。這就是我所說(shuō)的沙堆只剩一粒沙子的情況。
今天的微處理器有一張幾百平方毫米大小的芯片和 50 億到 100 億個(gè)晶體管。如今它們有很多額外的電路用以緩存 RAM、預(yù)測(cè)分支等,從而達(dá)到提高性能的目的。然而越來(lái)越大的尺寸在變得更快的同時(shí)也帶來(lái)了很多成本。眾多信號(hào)于轉(zhuǎn)換過(guò)程中所使用的能量在很短的時(shí)間內(nèi)會(huì)散發(fā)出一些熱量,而一個(gè)信號(hào)從芯片一邊轉(zhuǎn)移到另一邊的時(shí)間最終會(huì)受限于光速(實(shí)際上光在銅介質(zhì)中的速度會(huì)小一些),因而該時(shí)間效應(yīng)開(kāi)始變得顯著起來(lái)。光速大約是 30 萬(wàn) km/s,或 3×10^11mm/s。因此光(或信號(hào))在不超過(guò) 1×10^(-10)s 的時(shí)間內(nèi)可以傳播 30 mm(一英寸多點(diǎn),和今天的一個(gè)大芯片的尺寸差不多),這個(gè)時(shí)間不低于一百億分之一秒。
當(dāng)前最快的處理器的時(shí)鐘速度是 8.760 GHz,這意味著在信號(hào)從芯片的一邊傳播至另一邊的時(shí)間內(nèi),芯片的這一邊已經(jīng)開(kāi)始轉(zhuǎn)移下一個(gè)信號(hào)了。這使得單芯片微處理器的同步性成為了一個(gè)噩夢(mèng),而一個(gè)設(shè)計(jì)師充其量只能提前知道來(lái)自處理器不同部分的不同信號(hào)會(huì)遲到多久,并相應(yīng)地嘗試進(jìn)行設(shè)計(jì)。所以與其把時(shí)鐘速度加快(這也很難),不如將單芯片微處理器做得更大、加上更多晶體管,讓它在每個(gè)時(shí)鐘周期內(nèi)做更多事情,在過(guò)去的幾年里,我們已經(jīng)看到大尺寸芯片朝著「多核(multicore)」方向發(fā)展,一片芯片上有著 2、4 或 8 個(gè)獨(dú)立的微處理器。
多核保存了「每秒執(zhí)行的操作數(shù)」(摩爾定律的說(shuō)法),但是該過(guò)程犧牲了簡(jiǎn)單程序的同等程度的加速執(zhí)行性能——你不能簡(jiǎn)單地在多個(gè)處理單元上同時(shí)運(yùn)行某一個(gè)單一的程序。對(duì)于試圖同時(shí)運(yùn)行很多任務(wù)的筆記本電腦或者智能手機(jī)來(lái)說(shuō),這種犧牲影響不大,因?yàn)橥ǔ?huì)有足夠多需要立即完成的不同任務(wù)被分包給同一芯片上的不同內(nèi)核,從而使其得到充分利用。但是除了用于特殊計(jì)算的任務(wù),當(dāng)核數(shù)量增加幾倍時(shí)情況就不同了。在芯片被閑置時(shí),加速便開(kāi)始消失,因?yàn)闆](méi)有足夠多的不同任務(wù)需要被執(zhí)行。
盡管我在上文中提出了為什么摩爾定律將會(huì)終結(jié)于芯片的相關(guān)論據(jù),仍然有許多人表示不認(rèn)同,因?yàn)槲覀兇蛩阃ㄟ^(guò)多核和 GPU 來(lái)找到少數(shù)原子約束問(wèn)題的解決方法。但我認(rèn)為這大大改變了定義內(nèi)容。
這是 DFJ (Draper Fisher Jurvetson)投資公司的創(chuàng)始人 Steve Jurvetson 最近發(fā)表在其 Facebook 主頁(yè)上的一張圖表。他說(shuō)這是由 Ray Kurzweil 編寫(xiě)的對(duì)早期圖表的一個(gè)更新。
圖表左軸是每秒每單位美元的計(jì)算次數(shù)(以對(duì)數(shù)標(biāo)度)。它代表了計(jì)算隨時(shí)間推移的價(jià)格下降指數(shù)。20 世紀(jì) 40 年代有一些特殊用途的計(jì)算機(jī),比如布萊切利園(Bletchley Park,又稱(chēng) X 電臺(tái))為破譯密碼而建造的電磁計(jì)算機(jī),它到了 50 年代就成為了通用型的馮諾依曼計(jì)算機(jī)并一直保持到了圖表最后的幾個(gè)時(shí)間點(diǎn)。
圖中的最后兩個(gè)點(diǎn)都要?dú)w功于 GPU :GTX 450 和 NVIDIA Titan X。Steve 沒(méi)有標(biāo)記出其之前的幾個(gè)點(diǎn),但是在我能搜索到的(有很多)每一張?jiān)缙诎姹镜膱D表中,2010 年后的點(diǎn)都要?dú)w功于多核。首先是雙核,然后是四核,比如英特爾四核 i7 處理器。
GPU 之所以存在以及人們對(duì)它感到興奮的原因是:除了圖形處理,它們?cè)诹硪粋€(gè)時(shí)髦的計(jì)算領(lǐng)域也表現(xiàn)不凡——深度學(xué)習(xí)——一個(gè)最初被稱(chēng)為反向傳播神經(jīng)網(wǎng)絡(luò)的東西——最近在技術(shù)領(lǐng)域產(chǎn)生了巨大的影響。它使得語(yǔ)音識(shí)別技術(shù)在過(guò)去三年間取得了飛快發(fā)展,從而令蘋(píng)果的 Siri、亞馬遜的 Echo 和 Google Home 成為了實(shí)用且令人滿(mǎn)意的程序和設(shè)備。它也使得圖像標(biāo)記的質(zhì)量比 5 年前提高了一大截,還有自動(dòng)駕駛汽車(chē)的一部分態(tài)勢(shì)感知實(shí)驗(yàn),使用了眾多的道路場(chǎng)景來(lái)訓(xùn)練網(wǎng)絡(luò)。深度學(xué)習(xí)的訓(xùn)練階段通常是在云端的數(shù)百萬(wàn)個(gè)樣本之上進(jìn)行的。它產(chǎn)生了幾百萬(wàn)個(gè)數(shù)字,代表著所習(xí)得的網(wǎng)絡(luò)。然后當(dāng)它在識(shí)別一個(gè)單詞或標(biāo)記一張圖像時(shí),輸入數(shù)據(jù)會(huì)被送入某個(gè)程序,執(zhí)行數(shù)百萬(wàn)個(gè)乘法和加法運(yùn)算從而觸發(fā)該網(wǎng)絡(luò)的生成。巧合的是,GPU 只有在網(wǎng)絡(luò)以這種方式被構(gòu)建的情況下才能達(dá)到最優(yōu)的性能,所以我們預(yù)計(jì)會(huì)有更多網(wǎng)絡(luò)被納入到我們的汽車(chē)中。GPU 制造商的春天來(lái)了!而 GPU 可以做龐大計(jì)算的這種能力在任何問(wèn)題上都表現(xiàn)欠佳。但它們?cè)谏疃葘W(xué)習(xí)網(wǎng)絡(luò)方面表現(xiàn)優(yōu)異,而深度學(xué)習(xí)正迅速成為這十年的技術(shù)發(fā)力點(diǎn)。
我們確定無(wú)疑地聲稱(chēng)著會(huì)繼續(xù)看到指數(shù)式增長(zhǎng)之時(shí)(如圖),正是被測(cè)量量已經(jīng)發(fā)生改變之時(shí)。這有點(diǎn)像是在變戲法。
我認(rèn)為這種變化會(huì)產(chǎn)生非常大的影響。
摩爾定律的終結(jié)意味著什么?
我認(rèn)為摩爾定律的終結(jié)——正如我對(duì)終結(jié)的定義——將會(huì)帶來(lái)計(jì)算機(jī)架構(gòu)的一個(gè)嶄新的黃金紀(jì)元。架構(gòu)師們不用再畏縮于摩爾定律的惡性競(jìng)爭(zhēng)中。他們將能花時(shí)間去嘗試一些芯片方面的新想法,因?yàn)楝F(xiàn)在的傳統(tǒng)計(jì)算機(jī)架構(gòu)將無(wú)法在短短兩年或四年內(nèi)跟上軟件迭代的步伐。而且他們可能不會(huì)嘗試去提高計(jì)算速度,或許是以其它方式來(lái)改善計(jì)算。
機(jī)器學(xué)習(xí)運(yùn)行時(shí)間
我們已經(jīng)看到使用用于深度學(xué)習(xí)網(wǎng)絡(luò)的 GPU 作為運(yùn)行時(shí)間的引擎。但我們也看到一些更具體的架構(gòu)。例如,距離谷歌擁有自己的 TensorFlow Units(TPU) 芯片已經(jīng)過(guò)去了一年左右的時(shí)間了,該芯片通過(guò)有效降低(由于神經(jīng)網(wǎng)絡(luò)在低精度時(shí)表現(xiàn)相當(dāng)良好而保留下來(lái)的)重要數(shù)字的數(shù)量來(lái)為深度學(xué)習(xí)網(wǎng)絡(luò)節(jié)約功率。谷歌已經(jīng)把許多這種計(jì)算機(jī)中使用的芯片安裝在其服務(wù)器集群或云端上,并能夠?qū)W(xué)習(xí)后的網(wǎng)絡(luò)用于各種搜索查詢(xún)?nèi)蝿?wù),它的速度更快且電力消耗更低。
專(zhuān)用芯片
現(xiàn)在一張典型的手機(jī)芯片有四個(gè) ARM 處理器內(nèi)核以及一些高度優(yōu)化的特殊用途的處理器。這些處理器管理著攝像頭的數(shù)據(jù)流入并優(yōu)化語(yǔ)音質(zhì)量,甚至在一些芯片上有一個(gè)特殊的高度優(yōu)化過(guò)的處理器用于檢測(cè)人臉。這是相機(jī)應(yīng)用程序中所使用的處理器——你在拍照時(shí)可能注意到了人臉周?chē)男【匦?mdash;—用來(lái)決定圖像的哪些區(qū)域應(yīng)該被重點(diǎn)關(guān)注并提供最好的曝光時(shí)間——當(dāng)然是臉!
通用用途的新方式
我們已經(jīng)看到為特定計(jì)算所設(shè)計(jì)的特殊用途架構(gòu)的崛起。但也許還會(huì)看到更多通用架構(gòu)以一種不同的計(jì)算風(fēng)格奮起直追。
可以想見(jiàn),現(xiàn)在或許值得再次對(duì)日本第五代計(jì)算機(jī)計(jì)劃的數(shù)據(jù)流和邏輯模型進(jìn)行探討。但是當(dāng)我們把世界數(shù)字化時(shí),有害的計(jì)算機(jī)安全的成本將威脅到我們的生存。因此如果事情進(jìn)展不錯(cuò),或許被(摩爾定律的惡性競(jìng)爭(zhēng))釋放出來(lái)的計(jì)算機(jī)架構(gòu)師們可以慢慢開(kāi)始將我們從目前的糟糕狀況中拯救出來(lái)。
安全計(jì)算
我們都聽(tīng)說(shuō)過(guò)網(wǎng)絡(luò)黑客攻破計(jì)算機(jī)的事情,他們往往在地球的另一邊,或者是彼時(shí)還在一臺(tái)計(jì)算機(jī)上控制著引擎,而很快就開(kāi)始控制其他的東西,比如一輛駛過(guò)的汽車(chē)。這是怎樣發(fā)生的呢?
網(wǎng)絡(luò)黑客很有創(chuàng)造力,但他們進(jìn)入系統(tǒng)的許多方法基本上是借由程序中的一些常見(jiàn)的編程錯(cuò)誤,這些程序建立在我們之前談過(guò)的馮諾依曼架構(gòu)之上。
一個(gè)常見(jiàn)的手法是利用所謂的「緩存溢出(Buffer overflow)」。保留一個(gè)固定大小的內(nèi)存,例如輸入到瀏覽器或谷歌查詢(xún)框中的網(wǎng)頁(yè)地址。如果所有程序員的代碼都寫(xiě)得非常仔細(xì),而有人鍵入了過(guò)多的字符,那么其超出限制的部分將不會(huì)被存儲(chǔ)在 RAM 中。但通常情況是,一個(gè)程序員使用了一種簡(jiǎn)單而快速的編碼技巧,這種方式不檢查溢出,且鍵入字符以超出緩沖區(qū)范圍的方式被保存起來(lái),它或許會(huì)覆蓋一些代碼而使該程序跳到后方。這取決于馮諾依曼架構(gòu)的特點(diǎn)——數(shù)據(jù)和程序存儲(chǔ)在同一個(gè)內(nèi)存中。所以,如果黑客選擇了一些字符,其二進(jìn)制碼對(duì)應(yīng)于一些惡意行為的指令,比如為自己建立一個(gè)使用特定密碼的帳戶(hù),然后一切就像施了魔法般,黑客有了一個(gè)(類(lèi)似許多其他人和程序服務(wù)可能會(huì)擁有的)計(jì)算機(jī)遠(yuǎn)程訪(fǎng)問(wèn)帳戶(hù)。程序員不應(yīng)該犯這種錯(cuò)誤,但歷史表明這種情況一次又一次地發(fā)生著。
另一種常見(jiàn)的手法是:在現(xiàn)代網(wǎng)頁(yè)服務(wù)中,筆記本電腦、平板電腦或智能手機(jī)上的瀏覽器以及云中的計(jì)算機(jī),它們有時(shí)需要在彼此之間傳遞一些十分復(fù)雜的東西。無(wú)需程序員事先了解所有復(fù)雜的可能情況并處理消息,其設(shè)置方式是:使一方或雙方可以來(lái)回傳遞一點(diǎn)程序源碼并在其他計(jì)算機(jī)上執(zhí)行代碼。這種方式提供了在現(xiàn)有系統(tǒng)中推遲工作而無(wú)需更新應(yīng)用程序的強(qiáng)大性能。無(wú)法確定一段代碼不會(huì)去做某些事情,所以如果該程序員決定通過(guò)這一機(jī)制提供一個(gè)完全通用的性能,那么接收機(jī)便無(wú)法提前知曉代碼的安全與否以及它們是否會(huì)做一些惡意行為(這是停機(jī)問(wèn)題的一般化——我可以繼續(xù)進(jìn)行下去...但不會(huì))。所以有時(shí)網(wǎng)絡(luò)黑客會(huì)利用這個(gè)弱點(diǎn),并直接向一些接受代碼的服務(wù)發(fā)送一點(diǎn)惡意代碼。
除此之外,網(wǎng)絡(luò)黑客總在發(fā)明新招——以上兩例只是用來(lái)說(shuō)明黑客當(dāng)下的一些行為方式。
可以編寫(xiě)代碼來(lái)防止這些問(wèn)題,但是代碼編寫(xiě)仍然是一項(xiàng)人為活動(dòng),而世界上存在太多人為創(chuàng)建的漏洞。一個(gè)應(yīng)對(duì)方法是使用額外的芯片,該芯片對(duì)程序員隱藏了低層次的馮諾依曼架構(gòu)的可能性,僅僅向內(nèi)存中的指令提供更有限的可能行為集合。
這不是一個(gè)新想法。大多數(shù)微處理器有一些版本的「保護(hù)環(huán)(protection rings)」,這些保護(hù)環(huán)可以讓更多不受信任的代碼僅能訪(fǎng)問(wèn)越來(lái)越有限的內(nèi)存區(qū)域,即使它們?cè)噲D以正常的指令來(lái)進(jìn)行訪(fǎng)問(wèn)。這種想法已經(jīng)存在了很長(zhǎng)一段時(shí)間,但它一直受阻于缺少一個(gè)標(biāo)準(zhǔn)的方法去使用或執(zhí)行它,所以大多數(shù)試圖運(yùn)行于大多數(shù)機(jī)器上的軟件,通常僅僅指定 2~3 個(gè)保護(hù)環(huán)。這是一個(gè)非常粗糙的工具,它放過(guò)了太多的代碼。當(dāng)僅僅追求速度已變得不再實(shí)用時(shí),也許現(xiàn)在可以更認(rèn)真地思考一下這個(gè)想法,嘗試讓環(huán)境變得更加安全。
另一個(gè)想法——主要只在軟件中實(shí)現(xiàn)過(guò),可能有 1、2 個(gè)例外——被稱(chēng)為基于功能的安全(capability based security),來(lái)源于基于功能的尋址( capability based addressing)這個(gè)概念。程序不能直接訪(fǎng)問(wèn)所需使用的存儲(chǔ)器區(qū)域,但能獲得不可偽造的參考加密處理,以及一個(gè)被定義的、被允許作用于內(nèi)存的操作的子集。現(xiàn)在硬件架構(gòu)師或許有時(shí)間來(lái)繼續(xù)推動(dòng)該方法的完全強(qiáng)制性執(zhí)行,使其在硬件方面成功一次,因而純粹的人類(lèi)程序員——他們被要求在承諾的發(fā)布期限內(nèi)實(shí)現(xiàn)新軟件——就不會(huì)把事情搞砸了。
從某個(gè)角度來(lái)看,我前面談到的 Lisp 機(jī)是建立在一個(gè)非常具體而有限的、基于架構(gòu)的性能的版本之上。實(shí)際情況是,那些機(jī)器是馮諾依曼機(jī),但是它們可執(zhí)行的指令是受到故意限制的。在硬件層面,通過(guò)使用被稱(chēng)為「類(lèi)型指針(typed pointers)」的東西,對(duì)每一個(gè)內(nèi)存的每一次引用,都會(huì)根據(jù)指針中所編碼的類(lèi)型來(lái)限制指令對(duì)內(nèi)存的作用。而內(nèi)存只能在其被存儲(chǔ)時(shí)通過(guò)一個(gè)指針被引用到一個(gè)固定大小的內(nèi)存塊的起點(diǎn)。因此,在緩沖區(qū)溢出的情況下,一個(gè)字符串的緩沖區(qū)將不允許數(shù)據(jù)的寫(xiě)入或讀取超出其范圍。而指令只能從另一類(lèi)型的指針——一個(gè)代碼指針——中引用。硬件運(yùn)用存儲(chǔ)時(shí)被授予的指針類(lèi)型來(lái)將通用用途內(nèi)存分成一個(gè)個(gè)十分細(xì)小的區(qū)域。粗略地講,指針的類(lèi)型永遠(yuǎn)不能被被變,RAM 中的實(shí)際地址也不可能被任何可訪(fǎng)問(wèn)指針的指令看到。
如何通過(guò)使用這種對(duì)通用用途的馮諾依曼架構(gòu)的硬件限制來(lái)提高安全性——這些想法已經(jīng)出現(xiàn)了很長(zhǎng)一段時(shí)間。我在這里談過(guò)其中的幾個(gè)想法?,F(xiàn)在我認(rèn)為它會(huì)成為一個(gè)更加吸引硬件架構(gòu)師去投入精力的領(lǐng)域,因?yàn)槲覀兊挠?jì)算系統(tǒng)的安全成為了保證我們的企業(yè)、生活、社會(huì)能夠順利運(yùn)行的一個(gè)主要的致命弱點(diǎn)。
量子計(jì)算機(jī)
目前量子計(jì)算機(jī)是一個(gè)以實(shí)驗(yàn)性為主且花費(fèi)高昂的技術(shù)。由于需要將它們冷卻到物理實(shí)驗(yàn)級(jí)別的超冷溫度且費(fèi)用不菲,因此對(duì)于人們的一些困惑——它們可能會(huì)為傳統(tǒng)的基于計(jì)算機(jī)的芯片帶來(lái)多少加速,以及它們針對(duì)的是什么類(lèi)型的問(wèn)題——來(lái)說(shuō),目前量子計(jì)算機(jī)是一項(xiàng)投資大、風(fēng)險(xiǎn)高的研究課題。我不會(huì)去考慮所有的參數(shù)(我沒(méi)有讀過(guò)所有的參數(shù),坦白說(shuō)我也不具備使我對(duì)自己可能構(gòu)建出的任何觀點(diǎn)都感到自信的專(zhuān)業(yè)知識(shí))但是 Scott Aaronson 有關(guān)計(jì)算復(fù)雜性和量子計(jì)算的博客對(duì)感興趣的人來(lái)說(shuō)可能是最好的參考來(lái)源。已經(jīng)實(shí)現(xiàn)或被期望實(shí)現(xiàn)的對(duì)實(shí)際問(wèn)題的加速宣言,其范圍從 一 倍到幾千倍(可能我所知道的這個(gè)上限有誤)不等。在過(guò)去,只要等上 10 年或 20 年的時(shí)間,就可以讓摩爾定律帶你到達(dá)目的地。我們反倒已經(jīng)看到了對(duì)某項(xiàng)技術(shù)長(zhǎng)達(dá)超過(guò) 10 年的持續(xù)性投資,人們?nèi)匀辉跔?zhēng)論該技術(shù)是否湊效。對(duì)我來(lái)說(shuō),這也進(jìn)一步說(shuō)明,摩爾定律的終結(jié)正在鼓勵(lì)新的投資和新的探索。
無(wú)法想象的東西
即使在摩爾定律的終結(jié)所觸發(fā)的各種創(chuàng)新包圍下,或許我們所能看到的最好的事物還不在人類(lèi)的共同意識(shí)中。我認(rèn)為,在沒(méi)有摩爾定律懸置的情況下,創(chuàng)新自由、需要時(shí)間來(lái)研究好奇領(lǐng)域的自由,很可能會(huì)產(chǎn)生計(jì)算模型方面的一個(gè)新的伊甸園。5 至 10 年后,我們可能會(huì)在傳統(tǒng)的(不是量子)芯片中看到一種全新的計(jì)算機(jī)組織形式,其速度會(huì)超出目前的想象。再往后發(fā)展 30 年,這些芯片可能會(huì)做出一些在今天看來(lái)與魔術(shù)并無(wú)區(qū)別的事情,就像今天的智能手機(jī)對(duì) 50年前的我來(lái)說(shuō)近乎天方夜譚。
評(píng)論