- 計算機(jī)系統(tǒng)開創(chuàng)性經(jīng)典文獻(xiàn)選讀與解析
- 劉宇航 包云崗編著
- 4570字
- 2023-11-07 16:17:11
1.4 數(shù)字計算機(jī)
數(shù)字計算機(jī)(Digital Computer)背后的思想可以解釋成,這些機(jī)器旨在執(zhí)行任何可以通過人類計算員(Human Computer)計算而完成的操作。人類計算員被假設(shè)遵循確定的規(guī)則,沒有一點偏離規(guī)則的權(quán)力。我們可以假設(shè)這些規(guī)則寫在一本書上,人類計算員每次被分配新的任務(wù)時,這本書的內(nèi)容就會改變。他有無限的紙進(jìn)行計算,也可以用“臺式機(jī)器”進(jìn)行乘法和加法運算,但這并不重要。
第4節(jié)開篇第一句是一個映射,將數(shù)字計算機(jī)映射到人類計算員。這個映射在虛擬化論文中將再次被提到,在馮·諾依曼《計算機(jī)與人腦》的論文中也將被提到。數(shù)字計算機(jī)與人類計算員(具體指人腦)之間的關(guān)系是人工智能科學(xué)的根本問題。
艾倫·圖靈在這里提出了人類計算員(Human Computer)和數(shù)字計算機(jī)(Digital Computer)的概念。在今天的關(guān)于人工智能的討論中,Human Computer這個詞不常用,這是不應(yīng)該的,人類計算員(Human Computer)和數(shù)字計算機(jī)(Digital Computer)是相互參照和對應(yīng)而存在的。人類計算員的“規(guī)則書”(Book of Rules)對應(yīng)于數(shù)字計算機(jī)的程序(Program)。
如果我們使用上述解釋定義數(shù)字計算機(jī),可能陷入循環(huán)論證(circularity of argument)。我們通過概述達(dá)到預(yù)期效果的手段來避免循環(huán)論證。數(shù)字計算機(jī)通常由以下三個部分組成:存儲器、執(zhí)行單元、控制器。
為什么說“使用上述解釋定義數(shù)字計算機(jī),可能陷入循環(huán)論證”?因為這個定義把負(fù)擔(dān)轉(zhuǎn)移到“人類計算員”的定義上,而“人類計算員”沒有被定義清楚或者又依賴機(jī)器的定義。
艾倫·圖靈在這里提到了計算機(jī)的三個部分,沒有提到輸入設(shè)備和輸出設(shè)備。
存儲器用來存儲信息,對應(yīng)于人類計算員的紙,人類計算員既在紙上計算,也在紙上打印他的規(guī)則書。至于說人類計算員在頭腦中進(jìn)行計算,那么一部分存儲器將對應(yīng)于他的記憶。
存儲器中存放的是數(shù)據(jù)和程序,其中數(shù)據(jù)是程序的處理對象,數(shù)據(jù)可被分為初始數(shù)據(jù)、計算過程中產(chǎn)生的中間數(shù)據(jù)、計算過程結(jié)束后產(chǎn)生的最終數(shù)據(jù)。一個人(人類計算員)具有很強(qiáng)的心算能力,通常是指在沒有紙、筆等工具的條件下進(jìn)行計算,這就需要這個人具備很強(qiáng)的記憶力,特別是關(guān)于計算過程中的中間數(shù)據(jù)的記憶能力,更具體地說,是對應(yīng)于高速緩存的那部分記憶能力。
這里要提一下數(shù)學(xué)家歐拉,他于1707年生于瑞士巴塞爾,1783年卒于俄國圣彼得堡。在歐拉的數(shù)學(xué)生涯中,他的視力一直在惡化。在1735年一次幾乎致命的發(fā)熱后的三年,他的右眼近乎失明,但他把這歸咎于他為俄國圣彼得堡科學(xué)院進(jìn)行的辛苦的地圖學(xué)工作。在德國期間他的視力也持續(xù)惡化。歐拉原本正常的左眼后來又遭受白內(nèi)障的困擾。在他于1766年被查出患有白內(nèi)障的幾個星期后,他的雙眼近乎完全失明。即便如此,病痛似乎并未影響到歐拉的學(xué)術(shù)生產(chǎn)力,這大概歸因于他的心算能力和超群的記憶力。比如,歐拉可以從頭到尾不猶豫地背誦維吉爾的史詩《埃涅阿斯紀(jì)》,并能指出他所背誦的那個版本的每一頁的第一行和最后一行是什么。在書記員的幫助下,歐拉在多個領(lǐng)域的研究其實變得更加高產(chǎn)了。在1775年,他平均每周就完成一篇數(shù)學(xué)論文。
海倫·凱勒和歐拉的事跡,是研究智能和計算的本質(zhì)時需要考慮的。
執(zhí)行單元是一次計算中涉及的各種操作被執(zhí)行的地方,這些操作是什么,將隨著機(jī)器的變化而變化。通常相當(dāng)冗長的操作可能是“3540675445乘以7076345687”,但是一些機(jī)器可能只執(zhí)行“寫下0”一類的簡單操作。
操作(Operation)是一個落實計算(Computing)的實體。指令集體系結(jié)構(gòu)(ISA)是軟件與硬件的接口。
我們上面曾經(jīng)提到人類計算員的“規(guī)則書”由機(jī)器中的一部分存儲器代替,不妨把它們稱為“指令表”。控制器的功能就是保證指令按照正確的順序執(zhí)行。控制器的設(shè)計使得這種情況必然發(fā)生。
規(guī)則書(對人類而言)、指令表(對機(jī)器而言)都是指程序,控制器是解讀和遵循程序的實體,顯然程序與智能之間存在很強(qiáng)的關(guān)聯(lián)。
存儲器中的信息通常被分解成大小適中的數(shù)據(jù)塊,例如,在一個機(jī)器中,一個數(shù)據(jù)塊由十個十進(jìn)制數(shù)組成,數(shù)據(jù)以某種系統(tǒng)的方式被賦值到各種數(shù)據(jù)塊所在的存儲器中。一個典型的指令可以是:
“把存放在6890的數(shù)加上存放在4302的數(shù),并把結(jié)果存入后面的單元。”
顯然,此指令在機(jī)器中不會用英語表達(dá),而是更有可能編碼成6890430217這樣的形式,這里17表示對這兩個數(shù)進(jìn)行哪一種操作,在這里就是加法操作。請注意,這個指令占用了10個數(shù)字,因此正好是一個數(shù)據(jù)塊,非常方便。控制器通常按照指令的存儲順序取指令執(zhí)行,但是偶爾會碰到這樣的指令:
艾倫·圖靈在這里介紹了指令的格式,即指令由操作碼和操作數(shù)構(gòu)成。注意上面這段話中,17是操作碼,6890和4302均是存放操作數(shù)的地址。尋址方式就是計算機(jī)組成原理課程中要講授的重要內(nèi)容。尋址方式對編程的難易、程序的執(zhí)行效率具有重要影響。
“現(xiàn)在遵守存儲在5606的指令,并從那里繼續(xù)執(zhí)行。”或者,“如果4505位置是0,那么執(zhí)行存儲在6707的指令,否則緊接著繼續(xù)執(zhí)行。”
上面兩個指令介紹了指令的順序執(zhí)行和跳轉(zhuǎn)執(zhí)行,這是馮·諾依曼結(jié)構(gòu)的特征。程序通常包括三大結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
后面這些類型的指令非常重要,因為它能重復(fù)執(zhí)行一段指令直到滿足某種條件,但不是通過每次執(zhí)行新指令來做的,而是一遍又一遍執(zhí)行相同的指令。可以類比家庭生活:如果媽媽想讓湯姆每天上學(xué)時都到修鞋匠那里看看她的鞋是不是修好了,媽媽可以每天都告訴他一遍;另一種方式是,在大廳里湯姆每天上學(xué)都能看到的一個地方貼個便條,告訴他到修鞋匠那里去看一下,當(dāng)湯姆拿回鞋時,就撕掉那個便條。
機(jī)器的一個優(yōu)勢是擅長做重復(fù)的操作,彌補人類耐心(是一種稀缺資源)的不足。循環(huán)是程序中表達(dá)語義的重要程序結(jié)構(gòu),也往往是最耗時的部分,因此成為性能瓶頸,被稱為“熱點”。
“一遍又一遍執(zhí)行相同的指令”是什么呢?就是循環(huán)!循環(huán)的概念據(jù)說是后面將會提到的阿達(dá)·洛芙萊斯(Ada Lovelace)發(fā)明的。艾倫·圖靈上面提到的例子,實際上就是while循環(huán)。

有了循環(huán)結(jié)構(gòu),程序員只需要寫少量的程序就可以對應(yīng)地運行很多指令,而且指令的具體數(shù)量也不需要提前知道,事實上在很多情況下也很難提前知道。
這里要區(qū)分動態(tài)指令數(shù)量和靜態(tài)指令數(shù)量。動態(tài)指令數(shù)量是一個程序在處理器上實際被執(zhí)行的指令數(shù)量,靜態(tài)指令數(shù)量是一個程序被編譯后的指令數(shù)量。動態(tài)指令數(shù)量與靜態(tài)指令數(shù)量一般是不同的,原因有二,一是因為循環(huán)的存在,一個循環(huán)體對應(yīng)的少量的靜態(tài)指令可以對應(yīng)大量的動態(tài)指令;二是因為分支的存在,有些靜態(tài)指令沒有在選中的分支中,所以沒有被執(zhí)行,也就沒有成為動態(tài)指令。
讀者必須接受的一個事實是,數(shù)字計算機(jī)可以建造,而且確實已經(jīng)按照我們所描述的原理被建造,并且能夠很接近地模仿人類計算員的動作。
請注意這里的“模仿”(Mimic),實際上這是虛擬化的概念,而且可以從功能和性能上進(jìn)行解讀。
當(dāng)然,上面描述的人類計算員所使用的規(guī)則書僅僅是為了方便而做的杜撰。實際的人類計算員真正記得他要做什么。如果一個人想讓機(jī)器模仿人類計算員執(zhí)行復(fù)雜的操作,就必須問人類計算員操作是怎樣做的,然后把答案翻譯成指令表的形式。構(gòu)造指令表的行為通常被描述為“編程”,“給一個機(jī)器編程使之執(zhí)行操作A”,意味著把合適的指令表放入機(jī)器,從而它將執(zhí)行A。
這一段給出了編程(Programming)的實質(zhì)。
按照艾倫·圖靈的表述,存在幾個同義詞:程序(Program)、指令表(Instruction Table)、規(guī)則書(Book of Rules)。
“給一個機(jī)器編程使之執(zhí)行操作A”,意味著把合適的指令表放入機(jī)器以使它能夠執(zhí)行A,從這個意義上,是人類通過編程把自己的智能賦予了機(jī)器。當(dāng)前“賦能”這個詞匯被廣泛使用,此處應(yīng)該是“賦能”的本源出處。
數(shù)字計算機(jī)的一個有趣變體是“帶有隨機(jī)元素的數(shù)字計算機(jī)”,它們有特定的指令進(jìn)行擲骰子或者別的等價的電子過程,例如一個這樣的指令可能是“擲骰子并把結(jié)果的數(shù)字存入存儲位置1000”。有時,這樣的機(jī)器被描述為具有自由意志(盡管我自己并不使用這一短語)。通常并不能通過觀察判斷出一個機(jī)器是否有隨機(jī)元素,因為一個相似的效果可以依據(jù)π小數(shù)部分的數(shù)字做出選擇來產(chǎn)生。
π的十進(jìn)制位數(shù)是確定的,但是是無限不循環(huán)的。π本身不是一個隨機(jī)數(shù),但它的小數(shù)位因為無限不循環(huán),所以具有隨機(jī)性。
計算機(jī)的程序是確定的,規(guī)則的含義不是模棱兩可的,但不代表計算機(jī)不能包括隨機(jī)數(shù)。現(xiàn)在的計算機(jī)硬件中可以實現(xiàn)人工智能的應(yīng)用,同樣,人工智能的算法(如神經(jīng)網(wǎng)絡(luò)等)可以用于體系結(jié)構(gòu)設(shè)計,比如用于預(yù)取器和高速緩存替換策略的設(shè)計。這說明什么呢?
人工智能不僅僅是上層應(yīng)用,還可以融入底層體系結(jié)構(gòu)。
一定的隨機(jī)性、不確定性是智能的特征。但完全的隨機(jī)性(隨機(jī)行走和布朗運動)則不是智能的特征。簡言之,智能允許甚至需要一定的隨機(jī)性,但仍以確定性為主。
值得注意的是,圖靈在本文中多次提到隨機(jī)數(shù),也就是說,他注意到并且仔細(xì)考察了智能與隨機(jī)性(Randomness)之間的關(guān)系。除此之外,圖靈還考察了智能與行為的非正式性(Informality of Behaviour)之間的關(guān)系,以及智能與神經(jīng)系統(tǒng)的連續(xù)性(Continuity of Nervous System)之間的關(guān)系。
大多數(shù)現(xiàn)實中的數(shù)字計算機(jī)僅有有限的存儲空間,讓一個計算機(jī)具有無限的存儲空間并不存在理論上的困難,當(dāng)然在任何時候都只有有限的部分被使用。同樣,只有有限的存儲空間能夠被建造,但我們可以想象越來越多的存儲空間可以根據(jù)要求被添加。這樣的計算機(jī)具有特殊的理論價值,將被稱為無限容量計算機(jī)(Infinitive Capacity Computer)。
存儲容量是可以逐步擴(kuò)展的,存儲受限的加速比模型(Memory-bound Speedup)就是基于這一前提提出的。
無限容量的計算機(jī)是不存在的,過去、現(xiàn)在、將來都不存在,但具有特殊的理論價值。從這里可以看出,不存在的東西不一定沒有價值。
在本章第2節(jié),圖靈給出的圖靈機(jī)就是無限容量計算機(jī)。
有關(guān)數(shù)字計算機(jī)的想法是一個舊想法。1828年至1839年擔(dān)任劍橋大學(xué)盧卡斯數(shù)學(xué)教授的查爾斯·巴貝奇(Charles Babbage)規(guī)劃設(shè)計了這樣的機(jī)器,并稱之為分析機(jī)(Analytical Engine),但是并沒有實現(xiàn)。盡管巴貝奇有了所有的關(guān)鍵思想,但他的機(jī)器在那個時代卻沒有很吸引人的前景。它能夠達(dá)到的運算速度肯定比人類計算員要快,但僅相當(dāng)于曼徹斯特機(jī)速度的約百分之一,而曼徹斯特機(jī)本身是現(xiàn)代計算機(jī)中較慢的一臺。巴貝奇分析機(jī)的存儲全部由輪子和卡片組成的機(jī)械實現(xiàn)。
艾倫·圖靈是熟知計算機(jī)發(fā)展歷史的,他對巴貝奇分析機(jī)和曼徹斯特機(jī)具有深入的了解。本書中將有多處提到查爾斯·巴貝奇分析機(jī)。
盧卡斯數(shù)學(xué)教授席位(Lucasian Professor of Mathematics)是英國劍橋大學(xué)的一個榮譽職位,授予對象為數(shù)學(xué)及物理學(xué)相關(guān)的研究者,同一時間只授予一人,牛頓在1669~1702年、查爾斯·巴貝奇在1828~1839年、狄拉克在1932~1969年、霍金在1980~2009年都曾擔(dān)任此教席。現(xiàn)任此職的是英國物理學(xué)家邁克爾·蓋茨(Michael Cates)。
巴貝奇分析機(jī)全部由機(jī)械實現(xiàn)這一事實,將幫助我們破除一個迷信。現(xiàn)代數(shù)字計算機(jī)是電子的,神經(jīng)系統(tǒng)也是電子的,這一事實常常被強(qiáng)調(diào)。既然巴貝奇的機(jī)器沒有使用電,而所有的數(shù)字計算機(jī)在某種意義上都是等價的,那么我們看到是否使用電在理論上并不重要。當(dāng)然,快速發(fā)信號的地方通常需要電,因此,我們就會發(fā)現(xiàn)在這兩個地方使用電是理所當(dāng)然的。在神經(jīng)系統(tǒng)中,化學(xué)現(xiàn)象至少和電現(xiàn)象同樣重要,某些計算機(jī)的存儲器主要基于聲學(xué)原理。因此,計算機(jī)和神經(jīng)系統(tǒng)都使用電僅僅是表面的相似。如果我們希望尋找這樣的相似性,倒不如尋找功能上的數(shù)學(xué)相似性。
什么是計算機(jī)?什么是數(shù)字計算機(jī)?什么是電子計算機(jī)?什么是離散狀態(tài)機(jī)?
是否用電,對本質(zhì)沒有影響。通過化學(xué)過程、電、機(jī)械,都可以實現(xiàn)功能等價的數(shù)字計算機(jī),只有速度(性能)上的差別。艾倫·圖靈的可計算性是忽略速度(性能)意義上的可計算性。中國科學(xué)院計算技術(shù)研究所徐志偉研究員提出了考慮速度(性能)的可計算性,被稱為實用可計算性。
- 計算機(jī)實用基礎(chǔ)(第2版)
- 深度強(qiáng)化學(xué)習(xí):算法原理與金融實踐入門
- 計算機(jī)組成原理
- 計算機(jī)信息處理案例教程(Windows 7+Office 2010)
- 計算機(jī)應(yīng)用基礎(chǔ)實訓(xùn)指導(dǎo)
- 大學(xué)計算機(jī)基礎(chǔ)
- 區(qū)塊鏈:價值互聯(lián)網(wǎng)的基石
- 計算思維與算法設(shè)計
- 計算機(jī)應(yīng)用基礎(chǔ)實驗教程(Windows 7+Office 2010)(第三版)
- 計算機(jī)應(yīng)用基礎(chǔ)教程上機(jī)指導(dǎo)(Windows 7+Of?ce 2010)
- 數(shù)字化人機(jī)工程設(shè)計
- Access數(shù)據(jù)庫程序設(shè)計與應(yīng)用教程
- 信息技術(shù)
- 文檔處理與排版標(biāo)準(zhǔn)教程(Word+InDesign)
- 計算機(jī)應(yīng)用基礎(chǔ)