今非昔比的模擬計算機:塵封已久的計算方法或許讓我們獲益匪淺

今非昔比的模擬計算機:塵封已久的計算方法或許讓我們獲益匪淺

尼爾·阿姆斯特朗(Neil Amstrong)和巴茲·奧爾德林(BuzzAldrin)在1969年執行阿波羅11號任務並首次登上月球 ,這也許是人類工程學歷史上最偉大的成就。然而,很多人並沒有意識到,阿波羅計劃及其前驅任務能夠成功的重要因素之一,就是“模擬”和“混合”(模擬-數字)計算機,NASA曾把這種計算機用於仿真,甚至在某些應用中用於飛行控制。事實上,很多人至今甚至從未聽說過模擬計算機,以為計算機肯定是一種數字設備。

如果半個世紀前模擬和混合計算機果真有如此價值,那它們為什麼會銷聲匿跡,幾乎不留任何痕跡?其原因與20世紀70年代技術的侷限性有關:本質上,它們的設計、建造、操作和維護難度都太高了。但是,用今天的技術構建的模擬計算機和數字-模擬混合計算機則沒有這些缺點,這也正是為什麼現在,模擬計算機正在機器學習、機器智能和仿生電路中發揮著重要作用。

在本文中,我將專注於模擬和混合計算機的另一種應用:高效科學計算。我認為,在生物、流體動力學、天氣預報、量子化學、等離子體物理以及許多其他科學領域,現代模擬計算機可與數字計算機實現互補,用來求解各種相關方程式。下文解釋了這些非常規計算機是如何做到的。

一臺模擬計算機就是一個由等同於待解問題的方程式進行管控的物理系統。首先確定待查系統對應的方程初始條件,然後允許模擬計算機中的變量隨時間變化,所得到的結果即提供了相應方程的解。

簡單舉例,你可以把一根水管和一個水桶看作是一臺可以執行積分函數的模擬計算機。可以通過調整水管中的水流速度來匹配相應的積分函數。把水倒到水桶裡,這一數學問題的解正是水桶裡的水量。

雖然有些模擬計算機的確會用流動的液體來進行計算,但最早期的模擬計算機的機械裝置通常由各種轉輪和齒輪組成。這種早期的模擬計算機包括範內瓦·布什於1931年發明的微分分析器,其構建原理可追溯到19世紀,主要得益於威廉·湯姆森(WilliamThomson,即後來的開爾文勳爵)和他的弟弟詹姆斯(James)的工作成果,詹姆斯還設計了用於計算潮汐的機械模擬計算機。這類模擬計算機長期以來一直用於控制戰艦上的大炮。到了20世紀40年代,雖然機械類的模擬計算機仍沿用了一段時間,但電子模擬計算機開始飛速發展。正是數字設計理論之父克勞德·香農於1941年發表了影響重大的早期模擬計算理論。

今非昔比的模擬計算機:塵封已久的計算方法或許讓我們獲益匪淺

大約從那時起,在美國、蘇聯、德國、英國、日本以及其他國家,電子模擬計算機得到了廣泛的發展。很多廠商,包括ElectronicAssociates 公司、Applied Dynamics、美國無線電公司、英國輸力強、德律風根和波音公司,都生產電子模擬計算機。這些電子模擬計算機最初被用於導彈和飛行器設計以及飛行模擬器中。NASA自然成為其重要客戶。隨後其應用很快擴展到了其他領域,包括核反應堆控制。

今非昔比的模擬計算機:塵封已久的計算方法或許讓我們獲益匪淺

電子模擬計算機最初由成千上萬個真空管組成,後來真空管被晶體管所取代。起初,它們的編程是通過在一個面板上手工用線連接各個組件來完成的。這種機器複雜又奇特,只有經過專門訓練的人才能瞭解和進行操作,而這也是導致它們消亡的一個因素。

模擬計算機衰退的另一個原因是20世紀60年代數字計算機的巨大進步,這得益於其眾多優點:可直接編程,可進行算術操作,易存儲,精度高,只要有足夠時間,幾乎能處理任何問題。隨著金屬氧化物半導體(MOS)集成電路技術的發展,用單個芯片取代作為數字開關的大量晶體管成為可能,數字計算機的性能在六七十年代得以迅速提高。

模擬計算機制造商很快將數字電路納入他們的系統,混合型計算機應運而生,不過為時已晚:以當時的設計和製造技術水平,這些計算機的模擬部分尚無法進行大規模集成。最後一臺大型混合型計算機生產於20世紀70年代。隨後世界頭也不回地轉向了數字計算機。

今天的模擬MOS技術是高度先進的:其身影隨處可見,例如在智能手機的收發器電路上,複雜的生物醫學設備中,各種消費類電子產品中,以及構成物聯網的許多智能設備裡。如果利用這種高度先進的現代技術,那麼這些模擬和混合計算機的樣子,會與它們在半個世紀前截然不同。

但為什麼我們還要考慮用模擬電子技術來進行計算呢?這是因為傳統的數字計算機雖然功能強大,但它們似乎已經達到了極限。每當數字電路開關時,它們都會消耗能量。在一個芯片上以千兆赫速度開關數十億個晶體管,會產生大量的熱量,我們必須在溫度上升至可能會對設備造成損害前消除這些熱量。在YouTube上,我們很容易就能找到在數字電腦芯片上煎雞蛋的視頻片段。

能源效率也是科學計算特別關注的問題。這是因為數字計算機中連續的時間流必須被近似為一系列離散步長。在解決某些有挑戰性的微分方程時,會需要非常精確的時間步長,以確保所涉及的算法得到有效的解。這意味著需要很長的時間並消耗許多能量來進行大量計算。

大約15年前,我開始思考:用當今科技打造的模擬計算機能否帶來價值?為了回答這個問題,格倫·考恩(GlennCowan)設計並建造了一臺單芯片模擬計算機,他曾是我在哥倫比亞大學輔導的一名博士生,現在已是蒙特利爾康戈迪亞大學的教授。他建造的這臺模擬計算機,包含模擬積分器、乘法器、函數發生器和其他電路塊,以現場可編程門陣列(FPGA)的形式進行佈局。也就是說各種功能模塊均被嵌入到一片接線的海洋之中,製成後的芯片可在現場配置形成各種連接。

數字編程可使一個模擬塊的輸入與另一個模擬塊的輸出相連,並由此建立起一個由待解方程進行控制的系統。此處不使用時鐘:電壓和電流是連續而非離散的。這臺計算機可以得到一個自變量的複雜微分方程解,誤差不超過百分之幾。

對某些應用來說,這種有限的準確度已經足夠。在準確度不夠的情況下,我們可以將其輸出的近似值代入數字計算機進行改進,由於數字計算機可從較精確的初始估值開始處理,因此可以輕而易舉地實現10倍左右的加速,同時節省相近數量級的能量。

最近在哥倫比亞大學,我和我的兩位同事石明(MingooSeok,音)和西姆哈·賽特馬德哈萬(Simha Sethumadhavan),以及兩位學生郭寧(Ning Guo,音)和黃一鵬(Yipeng Huang,音),共同創建了第二代單片模擬計算機。與早期模擬計算機一樣,我們設備中的所有模塊都是同時運行的,而若要在數字領域中採用這樣的信號處理方式,則需要高度並行的體系結構。我們現在製成了由幾個二代設計模塊構成的更大的芯片,可以解決更大尺度的問題。

今非昔比的模擬計算機:塵封已久的計算方法或許讓我們獲益匪淺

我們的模擬計算機採用的新設計在電力使用方面更加高效,並更易與數字計算機連接。這種混合形式的計算結合了兩者的精髓:先用模擬部分以低能耗進行快速近似計算,再用數字部分進行編程、存儲和高精度計算。

我們最新制作的芯片上包含了很多過去用於模擬計算(例如積分計算或乘法計算)的電路。而新設計中的一個關鍵部件是一種能夠連續計算任意數學函數的新型電路。下文將解釋為何這種新型電路很重要。

數字計算機在操作信號時認為只有兩級電壓值,分別代表數值0和數值1。當然,在這兩種狀態之間切換時,信號會出現中間電壓值。而在典型的數字電路中,只有當信號電壓穩定清晰地表示數值0或數值1時,才依靠系統時鐘週期性地處理信號。為了實現這種週期性處理,系統時鐘的週期要足夠長,使得在下一輪信號處理前,電壓從一個穩定水平切換至另一個穩定水平。其結果是,電路會輸出一連串二進制值,每一個二進制值與時鐘的一個標度值相匹配。

我們的函數發生器則採用了我和同事們開發的方法,我們稱之為連續時間數字,這是一種不同於異步數字邏輯的技術(見http://tsividis.ee.columbia.edu/current-research)。它涉及無時鐘的二進制信號,這種信號可以在任何時刻改變它的值,而不是在預先設定的時間才能改變。我們還打造了模-數和數-模轉換器,以及可以處理這種連續時間的數字信號的數字存儲器。

我們可以把模擬信號輸入到這樣的模-數轉換器,將它轉換成二進制數。該二進制數用來查找存儲在內存中的值。然後再將輸出值輸入到數-模轉換器。這樣的連續時間電路組合便提供了一個可編程的模擬輸入和模擬輸出函數發生器。

我們已經用這種新型計算機求解了一些頗具挑戰的微分方程,解的準確度可達百分之幾。這個結果跟數字計算機通常能獲得的結果相比是很差的,但準確度並非一切。事實上在很多情況下,採用近似值已經足夠。近似計算,這種有意限制準確度的計算方法,有時也會被用於當今的數字計算機中,比如在機器學習、計算機視覺、生物信息學和大數據挖掘等領域裡。通常情況下,輸入值本身就是近似值,因此這些結果也都是有意義的。

由於我們新型計算機的核心是模擬,如果需要,它可直接與傳感器及執行器接口。它的高速率允許計算機在執行計算任務的同時與用戶進行實時交互,否則將會慢得令人難以置信。

當然,我們的計算方法仍有不完善之處。難點之一是特別複雜的問題會需要大量的模擬計算塊,而這將使芯片尺寸變大,成本增加。

解決這個問題的一種方法是把待解的計算問題分解為更小的子問題,每個子問題依次由一臺模擬計算機在數字計算機的監督下進行解決。這裡的計算不再是完全並行的,但至少是可能的。幾十年前,當混合計算機流行時,研究人員就曾探索過這種方法。但直到混合計算機被淘汰,他們也沒能取得多少進展。這種技術還需要進一步發展。

另一個難題是在大型模擬計算芯片中,在不同電路塊之間任意連接配置是相當困難的:所需的佈線網絡在規模和複雜性上會變得難以承受。然而,如果要在模擬計算機上解決一些科學問題,這些連接又是必需的。

三維製造技術也許能突破這一限制。但就目前而言,我們的混合設計的模擬核心最適合於那些僅需局部連接即可運行的應用程序,例如臨近(而不是遠距離)分子相互作用的分子陣列仿真。

第三個難點是運行多值函數以及有效處理與偏微分方程相關的問題。在20世紀70年代,曾有人開發過利用混合計算機解決這類方程的幾種技術,而我們打算撿起前人的工作。

在提高計算精度方面,模擬電路也有不足之處。在數字電路中,只需增加位數就可以提高精度。但是在模擬計算機中提高精度則需要更大的芯片面積。這就是為什麼我們現在的目標只是那些低精確度的應用。

我曾說過模擬計算可以加速計算並節省能源,但我應該描述得更為具體一些。我和我的同事們開發的這種新型計算機進行模擬處理通常需要大約1毫秒的時間,解一個只涉及一個導數的微分方程通常需要小於0.1微焦耳的能量。而如果我們採用普通的製造技術(65納米CMOS)的話,這會需要0.5平方毫米的芯片面積。涉及兩個導數的方程則需要2倍的能量和芯片面積,以此類推,但求解的時間是一樣的。

對於某些成本不是問題的應用來說,我們甚至可以考慮晶圓級集成,也就是把整個硅晶片當作一個大芯片。一個300毫米的晶圓芯片可以容納超過10萬個積分器,這樣就能夠模擬一個有10萬個耦合的一階非線性動力學方程系統,或有5萬個耦合的二階方程系統,以此類推。這在諸如模擬大分子陣列動態的問題上也許會很有用處,求解時間仍然在毫秒級,功耗約為幾十瓦左右。

今非昔比的模擬計算機:塵封已久的計算方法或許讓我們獲益匪淺

芯片上的模擬計算機

許多科學問題涉及耦合微分方程組的求解。為了簡單起見,我們在這裡考慮一個有兩個變量的微分方程,這兩個變量分別為x1和x2。一臺模擬計算機利用一個電路來求解x1和x2,在這個電路的兩條電線中流動的電流由相同的方程控制。 只要通過合適的電路,這兩條電線中的電流將迅速地代表原方程式的解(上圖)。

這一過程需要模擬積分器、乘法器、扇出塊以及恆定電流源。(總電流只需把電線連接起來即可)。為了求解非線性微分方程式,單芯片模擬計算機也使用連續時間電路形成能產生任意函數的塊(粉色)。

因此,一臺通用的模擬計算機可由一塊現場可編程芯片進行構建,這塊芯片包含許多在數字控制下運行的模擬電路元件(下圖,圖中每條水平和垂直的灰線代表多根導線)。當我們需要更高的精度時,可以將此類模擬計算機得到的結果輸入到數字計算機中進行細化。

只有實驗能證實這種新型計算機是否實際可行,且模擬誤差的積累不會產生不良的後果。如果它真的可行,其結果將遠超今天的數字計算機。對於數字計算機,處理這樣級別的複雜問題時將需要耗費大量的能量,求解時間甚至會達到幾天甚至幾周。

顯然我們還需要進行更多研究才能回答上述問題和一些其他問題,諸如如何在模擬部分和數字部分之間進行任務分配,如何把一個大問題分解為若干個小問題,以及如何將生成的解進行組合。

為了尋求這些答案,我們和其他新近的對模擬計算機感興趣的研究人員們,從半個世紀前許多非常聰明的工程師和數學家所做的工作中獲益良多。我們不應該試圖重新發明一個複雜的系統,而應將前人的成就作為跳板,繼續向前遠行。至少這是我們的希望,畢竟只有實踐才能出真知。


分享到:


相關文章: