計算機的誕生和發展,得益于馮·諾依曼1942年提出的“存儲程序控制”體系結構的設計思想。直到今天,我們能夠見到的計算機,都是基于馮·諾依曼的設計體系。
所謂的“存儲程序控制”,就是指編寫好的程序(指令)和數據存儲在存儲器中,當計算機運行時,控制器按地址順序取出存放在存儲器中的指令,執行指令的功能,遇到轉移指令則轉移到轉移地址,再按地址順序訪問指令。馮·諾依曼結構的設計理念還將程序指令存儲器和數據存儲器合并在一起。實際上,馮·諾依曼計算機模型的設計思想還有一個重要特點,那就是程序和數據以二進制形式來表示和存放。采用二進制邏輯、程序存儲執行以及計算機由運算器、控制器、存儲器、輸入設備、輸出設備五部分組成,成為馮·諾依曼體系結構(亦稱普林斯頓結構)的三個基本原則。
采用二進制對計算機至關重要,它簡化了計算規則,能將算術運算轉化為邏輯運算,降低了出錯幾率,缺點是計算量大,而這正好適合計算機特有的快速和重復運算的特點。1679年,德國數學家萊布尼茨受到《周易》的啟發,提出了二進制的概念,成為今后邏輯運算的基礎。1701年,萊布尼茨發表了關于二進制的重要論文《試論新數的科學》,為計算機理論及控制論的創立奠定了基礎。因為電子元件的各種狀態往往只有兩種,與二進制的基數非常吻合,采用電子器件進行邏輯運算就順理成章了。
如果沒有電子元件,沒有電子技術,基于二進制的計算機還可能實現嗎?在今年熱播的科幻電視劇《三體》中,作者劉慈欣就提出了非常有新意的“人列計算機”,用人組成各種邏輯門,代替電路來進行運算,并試圖用人列計算機進行微積分運算,解決三體世界中恒紀元的計算問題。
《三體》中的馮·諾依曼,用三個人作基礎演示,兩人作輸入,一人作輸出,用白旗和黑旗分別表示0和1。如果輸入的兩人都舉黑旗,那么輸出的人也舉黑旗,否則就舉白旗——這就實現了“邏輯與”運算,也就是“與門”。同樣,用三個人也能實現“或門”:輸入的兩人中只要有一個人舉黑旗,那么輸出的人就舉黑旗,否則就舉白旗。更復雜的與非門、異或門等也能用人來實現,這樣就能組成各種基礎的邏輯門了。
由于二進制的運算量非常大,需要大量的“門電路”參與運算,3千萬士兵組成1千萬個門電路,拼裝了36平方公里大小的“主板”:“人列”門部件構成CPU;輕騎兵在門部件間的道路上飛馳,形成總線;有文化的士兵記錄下運算結果和中間狀態,是為存儲器;黑白兩色的旗幟排列組合展示計算結果,相當于顯示器……
科幻畢竟只是科幻,如果在真實世界中實現“人列計算機”,恐怕還要加上“電源”——活人每工作幾個小時就需要進食以維持生命,用于飲食供給的能源通道必須具備。如果衡量一下這個龐大CPU的計算能力,每秒能實現多少次加法運算?在士兵的生命周期內,恐怕都無法完成微積分的解析運算。然而更致命的還是它的可靠性,雖然基礎的邏輯運算非常簡單,但是在單調的重復運算中,人的出錯概率非常大,而且還有運行不同步等問題,任何微小的錯誤都會造成計算結果毫無意義。人還是更適合高階進制的數學運算。
在《三體》中,人列計算機也因為計算不正確導致判斷錯誤,三日連珠來臨,184號文明覆滅,只留下了馮·諾依曼醒悟過來的最后忠告:用電子元件!