「世界上第一個發明可編程計算機的是德國工程師楚澤。楚澤發現很多運算道理都是一樣的,只是改改其中的數字,這種事情應該能讓機器完成。在此之前巴貝奇等人的計算機一次只能做一種運算,而楚澤則希望機器能夠按照流程完成一系列的運算。這件事自然就需要用程序控制。
楚澤發明的第一台計算機,即Z1,也是純機械的。它非常複雜,也非常大,因此需要用馬達驅動了。由於是純機械的,一秒鐘只能計算一次。也就是說,楚澤的計算機是利用更多的能量、更複雜的信息,完成更複雜的運算。
到目前為止,計算機雖然能完成越來越多的運算,但是消耗的能量也越來越高。打算盤進行一次計算可能只需要一粒芝麻的能量,擺弄帕斯卡和萊布尼茨的計算機就需要一顆綠豆的能量了,而巴貝奇的計算機需要一粒花生米的能量,楚澤的可能要一個橙子的能量。如果按照這個趨勢發展下去,人類是無法實現大量的數據計算的。
因此,楚澤在它第二個計算機中就使用了繼電器取代機械設備,這樣不僅消耗的能量低,而且速度快。為什麼繼電器的計算機比機械的快呢?因為機械運動有慣性,齒輪不可能正著轉完了馬上反著轉。繼電器雖然也有慣性,但是接觸和斷開的時間間隔可以非常短。如果我們把機械計算機看成是紐卡門蒸汽機,每次工作一下都要等氣缸冷卻,那麼繼電器的計算機就如同瓦特改進後的蒸汽機,不再需要冷卻這個過程,可以連續工作。
但是繼電器開關的頻率畢竟有限。如果能用電子設備取代繼電器,那麼計算的速度可以大幅度提升,這就是美國研制電子計算機的初衷。1946年,世界上第一台通用電子計算機埃尼亞克誕生了,它的速度在當時來講是飛快的,一秒鐘能進行5000次運算。
不過它的能耗也是巨大的,因為它裡面有近18000個電子管,每個電子管相當於一個小燈泡,它的耗電量大約是15萬瓦,當時它一啓動,周圍居民家的燈都會變暗。埃尼亞克消耗一度電大約能完成2.5萬次運算,我們記住這個數字,以便於後面和今天的計算機作比較。
第一台通用電子計算機埃尼亞克用到了圖靈在1936年提出的圖靈機的理論。所謂的圖靈機,是一種數學模型,它告訴人們,如何利用信息控制機械,實現計算。也就是說,計算的本質是一種機械運動,但它需要信息(指令)控制。計算機的這個本質直到今天都沒有改變。至於計算是如何通過機械運動實現的,這就涉及到香農的一項發明——開關電路了。今天所有的集成電路裡面其實都是各種各樣的開關電路。
自1946年以來,計算機70多年的發展,從本質上講就是提高能量利用率的過程。這70多年里有三個里程碑是你必須知道的。
第一個里程碑是晶體管的誕生,它將計算的能耗降低了兩個數量級。這是上個世紀50年代的事情。
第二個里程碑是集成電路的發明,它將計算的能耗又降低了大約兩個數量級。這是60年代初的事情。那時消耗一度電量可以完成1億次的運算了。
第三個里程碑則是1965年摩爾提出摩爾定律,即集成電路的性能每12個月翻一番,1975年摩爾對摩爾定律有所修正,認為1980年起集成電路的性能每兩年就會翻一番。
摩爾和他的同事諾伊斯當時預見到,將很多小集成電路芯片集成到一個大的芯片中,將是未來半導體行業發展的方向。而當時他們所在的仙童公司董事會卻意識不到這一點。於是二人離開了仙童創辦了英特爾公司。
在隨後的半個多世紀里,全世界半導體產業還真按照摩爾當年預見的速度在發展。從英特爾在1971年推出第一款處理器4004到2005年摩爾定律40週年之際,集成電路的性能還真提高了1000萬倍,完全符合摩爾定律的要求。
在2005年之後的十多年里,雖然集成電路的進步速度有所放緩,但是基本上還能做到每兩年翻一番,這樣累積下來又提高了百倍。這樣翻番進步疊加的結果是驚人的,以至於我們今天最差勁的智能手機,性能都比當年控制阿波羅登月的巨型計算機系統強很多。
如果我們用單位能耗提供的計算能力來衡量,這個進步也是相當快的。到2018年,世界上最快的橡樹嶺超級計算機一秒鐘最多能完成20億億次浮點運算,耗電2.7度,相當於一度電完成了7.5億億次的運算,比上世紀60年代最早的集成電路計算機進步了7億倍左右。
在經歷了50年的翻番進步後,基於半導體材料的集成電路裡面器件的集成度已經接近了物理的極限。因此有人認為摩爾定律不再適用了。但是,集成電路依然有發展的空間,那便是繼續提高單位能耗的計算能力,而不是一個芯片中絕對的計算能力。
如果我們以單位能耗的計算能力來衡量過去70多年計算機的進步,大約是每兩年半翻一番,比摩爾定律進步的速度略慢,這中間的差距是源於半導體芯片在變得複雜之後,大量的能量被用在發熱而非計算本身上面。實際上從十多年前開始,整個半導體產業的努力方向已經從單純提高性能,轉變為提高單位能耗性能了,並且在沿著這個方向取得了不小的進步。
那麼科學家和工程師們是怎麼做到這一點的呢?簡單地講就是用信息置換能量。我們不妨用兩個大家經常聽說的例子來說明。
第一個就是英偉達公司所謂的人工智能芯片。它其實是一種特殊的圖形處理器,並且對很多人工智能的應用作了專門的優化。相比英特爾的通用處理器,它單位能耗的計算能力能提高兩個數量級(百倍左右)。
那麼英偉達是怎麼做到的呢?它其實並沒有往處理器裡面塞更多的晶體管,而是根據人工智能計算的特點,將計算的精度從64位降低到8位,這樣就可以用同樣數量的晶體管搭建幾十倍的內核了,於是每一個內核的能耗就降低了。而這麼做的前提是,需要對人工智能算法的信息處理過程有深刻的瞭解。
第二個例子是Google的人工智能芯片TPU。Google自己講,它比英偉達的人工智能芯片單位能耗的計算能力又提高了兩個數量級(當然英偉達不承認)。Google是怎麼做到的呢?其實這種TPU只適合進行和深度學習有關的計算,不適合其他的信息處理,Google是將深度學習算法的特點設計到了處理器中。
從這兩個例子可以看出,如果我們在處理器中將信息處理的算法集成進去,就能大幅度提高單位能耗的計算能力,當然,這樣一來相應處理器的應用場景也就受到限制了。不過當某一類計算使用的人非常多了以後,這麼做還是值得的。
今天我們使用了能量和信息這兩根主線,將人類幾千年來,特別是最近幾十年來在計算機領域的成就,概括成了十來分鐘的內容。這樣你就能夠看清當今計算機領域的發展方向了,它一直沿著提高單位能耗的計算能力在進步,在過去,這體現為摩爾定律,今天,它更多地體現為利用信息置換能量。而計算的本質,就是在信息的控制下,利用能量實現運算。」
Search