從計算機(jī)原理的角度展望人工智能的前景

單從技術(shù)史的角度看計算機(jī)的發(fā)展史,似乎那么多形成條件是偶合的,不免驚嘆于它的奇妙,但如果從產(chǎn)品的角度梳理它的原理又覺得理所當(dāng)然。

一、圖靈機(jī)的概念

作為產(chǎn)品首先得有它的"idea",構(gòu)想它的人是圖靈,他提出了“圖靈機(jī)”的概念,圖靈機(jī)通常被認(rèn)為是現(xiàn)代通用計算機(jī)的原型。圖靈的基本思想是用機(jī)器來模擬數(shù)學(xué)運(yùn)算,他把這樣的過程看作下列兩種簡單的動作:

1.在紙上寫上或擦除某個符號;2.把注意力從紙的一個位置移動到另一個位置;

而在每個階段,人要決定下一步的動作,依賴于:

(a) 此人當(dāng)前所關(guān)注的紙上某個位置的符號和(b) 此人當(dāng)前思維的狀態(tài)。

根據(jù)這種模擬思想,圖靈構(gòu)造出一臺假想的機(jī)器:

這個機(jī)器有一個有窮控制器,一條輸入帶和一個帶頭,帶被分成許多單元,帶頭在每個時刻掃視帶上的一個單元。該帶有一個最左單元,向右則無限。帶的每個單元正好可容納有窮個帶符號中的一個。開始時,最左邊n個單元(n≥0,是一有窮數(shù))放著輸入,它是取自帶符集的一個字符串,其余無窮多單元放空自符。空自符是特殊帶符號,但不是輸入符號。基本模型可圖示如下:

在一個動作中,圖靈機(jī)根據(jù)帶頭掃視的符號和有窮控制器的狀態(tài),執(zhí)行如下操作:①改變狀態(tài)。②在被掃視的帶單元上打印一個符號,以代替原有的符號。③將帶頭向左或向右移動一個單元。
在每一時刻,機(jī)器所處狀態(tài),帶子上已寫符號的所有格子以及機(jī)器當(dāng)前掃視的格子位置,統(tǒng)稱為機(jī)器的格局。圖靈機(jī)從初始格局出發(fā),按程序一步步把初始格局改造為格局的序列。此過程可能無限制繼續(xù)下去,也可能遇到指令表中沒有列出的狀態(tài)、符號組合或進(jìn)入結(jié)束狀態(tài)而停機(jī)。在結(jié)束狀態(tài)下停機(jī)所達(dá)到的格局是最終格局,此最終格局就包含機(jī)器的計算結(jié)果。

這個思想構(gòu)造有三個關(guān)鍵點(diǎn):模擬、符號和自動化,缺任何一個都與圖靈的構(gòu)想南轅北轍。如果沒有模擬我們甚至可以將一個簡單的物理過程表述成類似圖靈機(jī)的形式,比如把一塊石頭受風(fēng)從坡上滾落理解成某個時刻根據(jù)自己當(dāng)前的狀態(tài)和外部的某個狀態(tài)輸入改變自己的狀態(tài)并且輸出改變外部的狀態(tài),然后進(jìn)入下一個時刻;如果沒有符號呢?我們可以把人從事的任何機(jī)械過程都當(dāng)作一種模擬,比如人看到石頭對其他物體的破壞作用而模仿它的過程對其他物體進(jìn)行機(jī)械性的敲擊活動;如果不是自動化呢?那就是失去了制造它的意義了。所以說圖靈機(jī)本質(zhì)上是模仿人的大腦所進(jìn)行的語言活動,使之成為一種由人運(yùn)用的萬用工具。人的語言可以干什么?(a)可以認(rèn)識世界,通過少數(shù)感覺器官;(b)可以思考、傳播,也就是說在頭腦里面重新構(gòu)造,在不同個體之間復(fù)制;(c)可以指導(dǎo)行動,通過少數(shù)運(yùn)動器官;

當(dāng)然,人腦的原理至今仍未研究清楚。圖靈機(jī)起先被設(shè)想用來數(shù)學(xué)運(yùn)算,數(shù)學(xué)也是語言符號的一種,說到這就得追根溯源了,簡單來說就是古埃及和蘇美爾人創(chuàng)造了文字,其中包含基本的數(shù)學(xué)符號和經(jīng)驗公式,古希臘人繼承了他們的很多知識,有些古希臘學(xué)者不明所以對數(shù)學(xué)問題尤其熱忱(我估計是一種宗教追求,或者對有信仰的人來說的真理追求,出于當(dāng)時多神教的混亂局面,古希臘有識之士期望找到一種統(tǒng)一,可惜大眾不買賬,從他們判了蘇格拉底死刑到后來又選擇了基督教可以看出),從泰勒斯、畢達(dá)哥拉斯一脈相承著,發(fā)展出物理學(xué)、邏輯學(xué)等嚴(yán)謹(jǐn)性科學(xué),也包括形而上學(xué)、神學(xué)等氣質(zhì)性大于嚴(yán)謹(jǐn)性的學(xué)說,這一精神和知識又被后來的西方人繼承了,走的相當(dāng)遠(yuǎn),但萬變不離其宗,也就是努力的用簡潔的符號量化和公理化世間的萬事萬物,其中主要的研究著手是人思維中的某些切面-抽象自覺,為了追求完美,還設(shè)想只存于人腦的對象,比如幾何圖形,數(shù)學(xué)就是這種形式上最嚴(yán)謹(jǐn)?shù)恼Z言,顯然比古埃及和蘇美人口語化表述高明得多。后來萊布尼茨創(chuàng)立了二進(jìn)制(1679年),布爾創(chuàng)立了數(shù)理邏輯(1847年),是計算機(jī)的思想來源,這些理論一路發(fā)展,直至1937年圖靈提出圖靈機(jī)的概念,將游離于現(xiàn)實世界的抽象符號重新于與實體建立聯(lián)系,接著香農(nóng)提出邏輯電路(1937年),將數(shù)理邏輯和電學(xué)結(jié)合起來,讓圖靈機(jī)在物理上有了實現(xiàn)的可能,然后是馮·諾依曼提出存儲程序原理(1946年),把程序本身當(dāng)作數(shù)據(jù)來對待,程序和該程序處理的數(shù)據(jù)用同樣的方式儲存,成為現(xiàn)代最常用的計算機(jī)體系結(jié)構(gòu)。

圖靈機(jī)需要什么構(gòu)件呢?它需要輸入和輸出的設(shè)備,但這不是核心,所以留到后面講。圖靈機(jī)作為語言處理機(jī)器最核心的功能是對語言的處理,輸入的狀態(tài)1+自身的狀態(tài)1=輸出的狀態(tài)2+自身的狀態(tài)2,用數(shù)學(xué)的形式表述就是它需要一套符號、公理作為控制要素,數(shù)據(jù)作為狀態(tài)要素,然后進(jìn)行運(yùn)算、存儲,這些在香農(nóng)的設(shè)想中由邏輯電路來完成。邏輯電路由門電路構(gòu)成,而門電路又由開關(guān)電路構(gòu)造,計算機(jī)的基礎(chǔ)構(gòu)件就是由一個個開關(guān)電路組成。畢達(dá)哥拉斯派以為物體是用數(shù)學(xué)之點(diǎn)排列出的形狀,他們分類出不同的數(shù),研究出不同的公式,直到碰到了令人難堪的無理數(shù)問題,實在解決不了只好把提這個問題的希伯索斯淹死在海里,計算機(jī)也有一個很著名的停機(jī)問題,其實跟無理數(shù)問題也是一脈相承,這個問題太深,還是先搞清楚計算機(jī)的基本原理再說,從開關(guān)電路說起。

二、計算機(jī)的基本原理

一個最簡單的電路加上一個開關(guān),它有兩個狀態(tài):通和斷,正好可以分別表示二進(jìn)制中的單位:1和0,也叫做比特,開關(guān)電路有一些簡單的串并聯(lián)物理效應(yīng),中學(xué)物理都學(xué)過:串聯(lián)電路需要開關(guān)都合上電流才通,并連電路只需要一個開關(guān)合上電流就通,用邏輯符號表示:

布爾代數(shù)和開關(guān)電路的對應(yīng)關(guān)系

這種表示方法叫做真值表,表征邏輯事件輸入和輸出之間全部可能狀態(tài),原則上可以設(shè)置任意復(fù)雜的真值表,然后根據(jù)真值表設(shè)計邏輯電路:

這個簡單電路可以表示為:F=A·B+C

1. 門電路

接著就可以做門電路了,門電路還需要另外一個構(gòu)件——繼電器,繼電器利用電磁原理,有兩個電路,第一個電路通電產(chǎn)生電磁使得第二個電路的開關(guān)吸合或吸開,第一個電路斷電失磁第二個電路開關(guān)因彈簧或利用其他物理原理恢復(fù)之前狀態(tài)。常用的門電路在邏輯功能上有與門、或門、非門、與非門、或非門、與或非門、異或門等幾種。非門其實就是一個會吸開的繼電器,其他門電路也是由繼電器構(gòu)成,常見的門電路示例:

2. 全加器和加法機(jī)

不能用門電路直接進(jìn)行數(shù)學(xué)運(yùn)算,因為有進(jìn)位,比如在二進(jìn)制中1+1=10,做運(yùn)算需要用門電路構(gòu)造基礎(chǔ)運(yùn)算器(加減乘除),拿最簡單的加法來舉例,做加法的基礎(chǔ)零件是全加器,全加器實現(xiàn)兩個二進(jìn)制數(shù)相加,多個全加器的組合叫加法器,能實現(xiàn)多比特數(shù)相加,如圖:

3個全加器組成的3比特加法機(jī),結(jié)果輸出4比特,如110+101=1011。 一個方盒表示一個全加器,單個全加器有三個輸入A、B、Ci,兩個輸出Co、S。 三個輸入分別表示兩個加數(shù)在相同位上的數(shù)及它們前一位相加的進(jìn)位數(shù),兩個輸出分別表示三個輸入相加得到的本位和進(jìn)位數(shù)

根據(jù)輸入和輸出的有無設(shè)計真值表,然后根據(jù)真值表用門電路制造全加器,如下圖:

到這兒符號、公理、運(yùn)算都有了,數(shù)據(jù)可以輸入和輸出,似乎只差個存儲,但是不要忘了圖靈機(jī)的核心能力之一是自動化,那么我們不僅需要存儲還需要自動化的控制器。要制造控制器首先需要用門電路構(gòu)造幾個與全加器不同的零件,包括振蕩器、觸發(fā)器,再用振蕩器、觸發(fā)器構(gòu)造更復(fù)雜的觸發(fā)器、寄存器等等。

3. 振蕩器和觸發(fā)器

振蕩器是把非門的輸出分出一支作為它輸入,這種自我反饋機(jī)制使得它的輸入和輸出電路按一定頻率反復(fù)不斷的通電-斷電,它的另外一個輸出分支也是交替變化,電流交替幾乎是瞬間完成,然后維持一段時間的通電或斷電狀態(tài),從電流波形狀是方波,因為變化有一定頻率,所以振蕩器產(chǎn)生的方波是脈沖。

R-S觸發(fā)器:觸發(fā)器可以保存數(shù)據(jù),也可以清除數(shù)據(jù),前提是不管開關(guān)電路閉沒閉上,電源得保持連通狀態(tài),所以它的存儲是臨時的。最簡單的觸發(fā)器叫R-S觸發(fā)器,它的邏輯圖如下:

很容易發(fā)現(xiàn)電流總是R=Q',S=Q,更關(guān)鍵的是如果R=S=0,Q、Q'會維持之前的狀態(tài),也就是具有存儲功能;如果R=S=1,則Q、Q'歸零。

D觸發(fā)器:對R-S觸發(fā)器稍加改造,比如用一個電路和它的非門分別作為R、S輸入,使得兩個輸入總是相反,Q‘端空置,還可以在兩個輸入線上都加與門由一根控制線控制,這個東西叫做帶控制端的D觸發(fā)器,一般就叫D觸發(fā)器,D表示它能在CP=1的時候?qū)懭胍粋€比特的數(shù)據(jù)(0或1),如圖:

D觸發(fā)器和它的符號

邊緣觸發(fā)器:兩個D觸發(fā)器的Q端串聯(lián),它們的CP端同一個控制線及其非門控制,使得無論第一個觸發(fā)器的D端輸入了什么,只有在控制端接通(對應(yīng)電流波形的上升沿)或斷開(對應(yīng)電流波形的下降沿)的瞬間數(shù)據(jù)才會保存,這個叫邊緣觸發(fā)器:

上升沿觸發(fā)器及其符號,它與D觸發(fā)器符號的不同之處在于CP端加了個小三角表示上升沿

T觸發(fā)器:將上升沿觸發(fā)器的另一個輸出Q ?(即Q')反饋到它的輸入D,那么CP端每一次接通,Q輸出就會交替一次,這個叫T觸發(fā)器(乒乓觸發(fā)器、反復(fù)觸發(fā)器),很多單鍵開關(guān)的家用電器如臺燈就是這個原理:

4. 寄存器、計數(shù)器

循環(huán)位移寄存器:將多個上升沿觸發(fā)器的輸入輸出串聯(lián)成閉合電路,它們的CP端用一個振蕩器控制,使得每一次脈沖前一個觸發(fā)器的狀態(tài)會轉(zhuǎn)換到下一個觸發(fā)器上,循環(huán)往復(fù),走馬燈就是這個原理:

5個輸出的循環(huán)位移寄存器,圖上5個燈泡隨著振蕩器的震蕩按順序循環(huán)點(diǎn)亮

計數(shù)器:多個T觸發(fā)器相接,前一個T觸發(fā)器的Q ?輸出作為后一個T觸發(fā)器的CP輸入,那么每一次脈沖都會導(dǎo)致從前到后的T觸發(fā)器系列的輸出端狀態(tài)按順序發(fā)生翻轉(zhuǎn),它會產(chǎn)生二進(jìn)制的效果,這個裝置叫計數(shù)器,如圖:

保存5個比特的計數(shù)器 初始條件下每一個觸發(fā)器清零,即Q01234為0,而Q ?01234為1,一個脈沖會導(dǎo)致右邊第一個T觸發(fā)器CP0=Q0=1,即二進(jìn)制1,然后下一個脈沖導(dǎo)致Q0=0,而Q ?0=CP1=Q1=1,同時Q ?1仍=0,相當(dāng)于產(chǎn)生一個進(jìn)位得二進(jìn)制10,以此類推,直到產(chǎn)生數(shù)“11111“,再一個脈沖全部歸零

寄存器:將多個T觸發(fā)器接續(xù),用同一個控制端,它們的D、Q各自引出作為寫和讀,可以保存多比特二進(jìn)制數(shù),這個叫寄存器:

保存5比特的寄存器

5. 傳輸門和存儲器

傳輸門:傳輸門用一個開關(guān)控制多條線路的通斷,原理上它也是繼電器;

比特單元:邊緣觸發(fā)器加傳輸門用來制造存儲器,存儲器由比特單元和地址譯碼器構(gòu)成,其中比特單元是只能保存一個比特的存儲器,由一個上升沿觸發(fā)器和傳輸門構(gòu)成,而且只有一個出入口,也就是說同時只能有一個數(shù)據(jù)進(jìn)或出:

單比特存儲器,也叫比特單元 G是傳輸門,傳輸門未接通的時候只能寫,傳輸門接通只能讀

存儲器:跟寄存器一樣,多個比特單元并列,用同一個W和R控制就可以保存多比特二進(jìn)制數(shù)了,這在存儲器中叫樓層,也是存儲單元,而通常一個存儲器有非常多的樓層,給他們按順序編排,然后用一個地址譯碼器連接它,那么每個樓層對應(yīng)一個地址,地址譯碼器作為一種控制器,也是根據(jù)真值表然后用門電路制造的,下圖以有五個單元每個單元能保存5比特的存儲器為例:

這個存儲器用來干什么呢?跟我們?nèi)粘S玫摹坝脖P”概念不同,它不是單純用來存儲數(shù)據(jù)的,它是馮·諾依曼體系架構(gòu)中的存儲器,也就是把程序本身當(dāng)作數(shù)據(jù)來對待,程序和該程序處理的數(shù)據(jù)用同樣的方式儲存,執(zhí)行一個程序連同它的數(shù)據(jù)我們叫做馮諾依曼任務(wù),比如我們要計算:10+5+7+2+6,我們可以在存儲器的順序樓層寫下這樣的數(shù):

上圖中有兩個數(shù)10001、10010分別表示裝載、相加,這兩個數(shù)在計算機(jī)意義上被稱為操作碼,而被相加的數(shù)如01010、00101等叫做操作數(shù),操作碼表示指示功能的指令,指示計算機(jī)執(zhí)行一條任務(wù),操作碼在存儲器中是精心布置的,存儲器并不知道它有什么意義,但在控制器會用到它們。指令的數(shù)量有限,一臺計算機(jī)內(nèi)置的指令叫指令集,裝載和相加未必是10001和10010,不同廠商生產(chǎn)的計算機(jī)控制器能識別什么操作碼通常也不一樣。

6. 全自動加法機(jī)

現(xiàn)在萬事具備了,我們來構(gòu)造全自動的加法電路,還是拿5位二進(jìn)制加法機(jī)來示例,值得一說的就是現(xiàn)代計算機(jī)的運(yùn)算構(gòu)件不止五位,流行的有32位、64位:

5比特全自動加法機(jī)

挨個解釋下:

AC是計數(shù)器:因為馮諾依曼任務(wù)在存儲器中順序存儲,所以計數(shù)器表示存儲器地址,每啟動一次地址自動加1。
AR是寄存器:寄存從AC發(fā)出的表示地址的二進(jìn)制數(shù),以便轉(zhuǎn)交給存儲器。
R-W存儲器:R表示讀取,因為此電路展示的是讀取,所以W端缺省。
DR是寄存器:寄存從存儲器讀取出的某個地址的數(shù)據(jù)。
IR:指令寄存器,專門用來臨時保存指令,指令來源于存儲器。
EC:譯碼電路,專門翻譯當(dāng)前指令,由IR輸入。它識別IR中取出的操作碼,翻譯成I-相加、I-裝載、T-停機(jī)三個輸出的狀態(tài)。
GA是傳輸門:用來切斷或連通從RR到GA傳輸?shù)拇鎯ζ鲾?shù)據(jù)。
RA是寄存器:用來存儲從存儲器中取出的數(shù)或經(jīng)加法器相加反饋回來的數(shù)。
加法器:做加法運(yùn)算,這里只是舉例,當(dāng)然也有其他運(yùn)算器如減法器、乘法器、除法器。
TR是臨時寄存器:用來暫存加法器輸出的數(shù)。
GB是傳輸門:用來切斷或連通TR向RA的反饋。
振蕩器:完成反復(fù)開關(guān)當(dāng)作指令步驟,它經(jīng)過一個與門一個非門再與RR相接,使得它的脈沖上升沿時RR得到是下降沿。
RR是循環(huán)位移寄存器,它有8個輸出端,對應(yīng)于八個加法步驟。
譯碼器:譯碼器一種形式的輸入轉(zhuǎn)換翻譯成另外一種形式的輸出,具體形式根據(jù)電路需要的真值表設(shè)計。
- 其他空方盒都表示與門或非門(根據(jù)符號)。
- EC、譯碼器等作為控制單元,根據(jù)真值表來設(shè)計電路,這里不述贅言。
- 圖中所有的I都表示電流,其中I-HLT、I-裝載、I-相加、I-停機(jī)以及GB到RA的反饋線路中的電流是向左流動,其他線路中的電流向右流動。
- I-IR、I-AC、I-AR、I-DR、I-GA、I-RA、I-TR都經(jīng)由一個與門,為方便表示,它們的與門從譯碼器獲得的電流符號皆加一瞥表示,如I-IR的與門輸入是I-IR'。

加法運(yùn)算的步驟可詳細(xì)拆分為:

RA上接入一個新的控制器然后再接到存儲器上,可以將RA上最終的運(yùn)算結(jié)果保存下來,有一個小小的問題:加法器相加得到的數(shù)超出存儲單位能存儲的位數(shù)怎么辦?很簡單,上圖5比特加法機(jī)的加法器上其實有六根輸出,被棄置的一根表示進(jìn)位,把它接到一個D觸發(fā)器上,再轉(zhuǎn)接到新控制器再到存儲器上,當(dāng)然我們還得對控制器進(jìn)行一番設(shè)計,數(shù)據(jù)存儲到存儲器中的兩個相臨地址(一般前一個地址表示進(jìn)位,后一個地址寫本位),當(dāng)使得D觸發(fā)器的輸出=1時將,第一個地址寫入一個1,第二個地址寫其余位上的數(shù),在作加法時,還得分別取數(shù)相加,當(dāng)然,操作指令會有些不一樣,電路就會更復(fù)雜一些,這里只給出它的簡單示意圖:

三、現(xiàn)代通用計算機(jī)

1. CPU和內(nèi)存

到目前為止,一臺圖靈意義的計算機(jī)算是完成了,然而這樣的計算機(jī)定然效率極低、功能單一,還需要對它進(jìn)行升級改造,為此人類在半個多世紀(jì)時間發(fā)明了很多硬件和軟件的技術(shù),而且仍在非常快速的升級換代。硬件方面最基礎(chǔ)的繼電器先后被電子管和晶體管替代,晶體管由半導(dǎo)體制成,單向?qū)щ娗铱煽兀脑砗唵蝸碚f就是通過中間的柵極控制另兩級電流的有無,并且柵極具有信號放大的作用:

用半導(dǎo)體做成的繼電器-晶體管體積可以極小,省電、耐用,而晶體管振蕩器可以以極高的頻率震蕩,極大的提升了計算機(jī)的運(yùn)算效率。然后人們又發(fā)明了工業(yè)化流水線技術(shù),將晶體管集成在本征硅上,現(xiàn)在的工藝據(jù)說能在一個指頭大的芯片上集成幾百億個晶體管。而存儲器除了用半導(dǎo)體集成電路來做外,還可以用電容來作為存儲介質(zhì),流水線技術(shù)對大規(guī)模邏輯電路進(jìn)行集成,現(xiàn)代計算機(jī)的控制器一般是這樣的結(jié)構(gòu):

微代碼ROM其實是只讀寄存器,在出廠時已經(jīng)制造好了的,它輸出是存儲器地址,而存儲器存儲的微代碼(Microcode)就是計算機(jī)能執(zhí)行的指令,它有助于將機(jī)器指令和底層電子器件分開,以使指令的設(shè)計和更改更加自由,如果計算機(jī)的設(shè)計發(fā)生改變,可以根據(jù)需要改變它的輸出來修改它的功能,而不必拆掉所以零件重新組裝。

控制器和運(yùn)算器等一堆組件再集成一下,制成微處理器,用于微型機(jī)上,也就是我們買手機(jī)電腦配置中必見的CPU,它的基本組成部分有:寄存器堆、運(yùn)算器、時序控制電路,以及數(shù)據(jù)和地址總線。將運(yùn)算器中的存儲器單獨(dú)封裝成內(nèi)存(內(nèi)存中除了存儲器還包含其他元件),內(nèi)存是處理器的原料和成品倉庫。

研究者為了提高運(yùn)算時效和數(shù)據(jù)傳輸效率又發(fā)明了CPU意義上的流水線技術(shù)、高速緩存技術(shù)、執(zhí)行多任務(wù)的中斷技術(shù),以及還有為方便外接設(shè)備互相傳輸技術(shù)的直接內(nèi)存存取和節(jié)約內(nèi)存空間的虛擬內(nèi)存技術(shù)等等,工程師們?yōu)榱擞嬎銠C(jī)提高效率、節(jié)省成本竭盡所能。

2. I/O設(shè)備和接口

CPU和內(nèi)存只能暫存數(shù)據(jù),所以需要外接靜態(tài)的存儲,也就是俗話說的磁盤或硬盤,最初的“磁盤”是紙帶或卡片,數(shù)據(jù)保存于上面的孔,現(xiàn)在比較常用的有光盤、機(jī)械硬盤、固態(tài)硬盤,原理大抵都是電磁感應(yīng),有興趣的可以自行 了解。計算機(jī)運(yùn)算時將硬盤中的程序和數(shù)據(jù)讀入到內(nèi)存再運(yùn)行。

一臺標(biāo)準(zhǔn)家用計算機(jī)配置鼠標(biāo)、鍵盤、顯示器,還提供相機(jī)、手機(jī)、U盤等接口,這些統(tǒng)稱為I/O設(shè)備,通過一些外接設(shè)備計算機(jī)實現(xiàn)了將物理過程轉(zhuǎn)化成模擬信號(連續(xù)變化的電流)再轉(zhuǎn)化成數(shù)字信號(用特殊的電路取模擬信號的閾值、量化為離散的二進(jìn)制數(shù)),而輸出過程與此相反。

如果每一個外接設(shè)備都出廠配置或提供單獨(dú)插口顯然不可能,因此在計算機(jī)核心和設(shè)備之間構(gòu)造邏輯電路,構(gòu)造一些外部的寄存器,在CPU或內(nèi)存上增加指令,對于不同的設(shè)備用不同的指令,用統(tǒng)一的地址編碼, 就像是協(xié)議——接收外部設(shè)備送來的信息或?qū)⑿畔l(fā)送給外部設(shè)備,這些邏輯電路-存儲器就像一個個出口,稱為I/O接口,其中一些寄存器叫端口。現(xiàn)在很多外接設(shè)備自帶一部分接口,在上面有微處理器、存儲器、轉(zhuǎn)碼/解碼器、端口等等,比如顯示器有顯存、顯卡,提高數(shù)據(jù)傳輸和運(yùn)算的效率。

3. 操作系統(tǒng)和軟件

有了外接設(shè)備計算機(jī)能實現(xiàn)的功能就不止是數(shù)學(xué)運(yùn)算了,雖然計實現(xiàn)所有功能實質(zhì)上都是二進(jìn)制運(yùn)算,更準(zhǔn)確的表達(dá)是邏輯電路堆上的電流流動,但我們對不同的二進(jìn)制可以制定標(biāo)準(zhǔn)賦予其不同的意義,比如ASCII(美國信息交換標(biāo)準(zhǔn)代碼)就是為常用的256個字符制定的一種方便不同計算機(jī)和設(shè)備之間傳輸數(shù)據(jù)的二進(jìn)制編碼標(biāo)準(zhǔn),有傳輸控制代碼,比如00001010表示換行;也有定義常用字符,比如00110000表示十進(jìn)制數(shù)48,或者字符-按鍵“0”,鍵盤就遵循這個標(biāo)準(zhǔn),敲一個鍵向計算機(jī)傳入的是一個ASCII二進(jìn)制碼。那計算機(jī)怎么理解這些特殊意義呢?這就需要編好的軟件程序來轉(zhuǎn)化,以十進(jìn)制計算125+66為例:

1. 首先計算機(jī)拿到用戶按下的1、2、5三個鍵對于的ASCII碼,如按鍵"1"對應(yīng)00110001。
2. 00110001又對應(yīng)十進(jìn)制49,所以計算機(jī)讓它與48的二進(jìn)制相減,拿到了用二進(jìn)制表示的十進(jìn)制1。
3. 2和5的操作相同。
4. 然后計算機(jī)把這三個數(shù)字(二進(jìn)制)合并一下,也就是1·100+2·10+5,得到125的的二進(jìn)制數(shù)。
5. 按下"+"鍵,得到ASCII碼為00101011,計算機(jī)轉(zhuǎn)譯它為相加指令,執(zhí)行相加動作。
6. 再按下6、6,按照類似上面的步驟,最終得到結(jié)果191。

讓人類理解計算機(jī)的運(yùn)行結(jié)果同樣是通過軟件轉(zhuǎn)化輸出到I/O設(shè)備上,比如顯示器,現(xiàn)在常用的液晶顯示器運(yùn)用液晶在電壓下改變排列方向而改變旋光性的原理,用電光源、三個帶原色濾鏡的液晶旋光元件構(gòu)成一個像素,幾百萬個像素點(diǎn)的色彩明暗構(gòu)成一副圖,軟件將計算機(jī)二進(jìn)制用專門用于解析顯示器圖像的圖形處理器(GPU)解析成表示每一個像素元件的電流強(qiáng)弱有無的信號,從而在屏幕上顯示圖形。

那么計算機(jī)程序是怎么回事呢?這就得說到操作系統(tǒng)。現(xiàn)代計算機(jī)除了CPU的控制器中寫死了的指令,在出廠時還會配置內(nèi)存(RAM)、只讀存儲器(ROM)作為基礎(chǔ)程序存儲器,以及硬盤、鍵盤、顯示器等外接設(shè)備,在硬盤默認(rèn)安裝操作系統(tǒng),操作系統(tǒng)作為一種程序,避免了計算機(jī)像流水一般的靜默運(yùn)行,它管理計算機(jī)系統(tǒng)的硬件、軟件及數(shù)據(jù)資源,控制程序運(yùn)行,提供人機(jī)界面,讓用戶通過I/O設(shè)備的操作來調(diào)用計算機(jī)的程序、數(shù)據(jù),使得硬盤上的軟件和數(shù)據(jù)文件像菜單一樣等著人去操作。計算機(jī)從啟動到進(jìn)入操作系統(tǒng)大概是這么一個過程(以機(jī)械硬盤為例):

  1. CPU通過地址總線直接訪問ROM和RAM,ROM用于固化一些指令,在計算機(jī)啟動時首先訪問,這些指令集一般稱為基本輸入/輸出系統(tǒng)BIOS。固化的指令又很多,主要有初始化:檢測一下計算機(jī)的各個部件(比如中央處理器自己的一些內(nèi)部零件);有訪問一些外部設(shè)備的指令,也就是設(shè)備驅(qū)動程序,不過它包含的只是少量常用設(shè)備,比如鍵盤、打印機(jī)、顯示器、硬盤。計算機(jī)啟動先挨個訪問這些指令,用于檢測計算機(jī)的各個基本硬件電路,整個過程又叫做POST(加電自檢,或者叫上電自檢)。
  2. 自檢完后進(jìn)行系統(tǒng)初始的布置,接著它運(yùn)行操作系統(tǒng)的部分:讀取硬盤0面0磁道第一個扇區(qū)的內(nèi)容進(jìn)內(nèi)存,然后用一個跳轉(zhuǎn)指令進(jìn)行內(nèi)存中執(zhí)行這些數(shù)據(jù)。
  3. 硬盤0面0磁道第一個扇區(qū)稱為主引導(dǎo)扇區(qū),有512字節(jié),包含446字節(jié)的啟動指令和數(shù)據(jù),后面64字節(jié)時分區(qū)表,最后2字節(jié)必須時01010101和10101010,表示主引導(dǎo)區(qū)時有效的,這兩個二進(jìn)制數(shù)稱為“花碼”。分區(qū)表之名當(dāng)前硬盤分成幾個部分,總共允許4各主分區(qū),每個分區(qū)的資料有16字節(jié),指明分區(qū)的起始位置、大小、類型以及是否為活動分區(qū)。原則上類型是一個二進(jìn)制數(shù),表明該分區(qū)由哪種操作系統(tǒng)負(fù)責(zé)管理,因為每次只能啟動一個操作系統(tǒng);活動分區(qū)的意思時可以啟動或應(yīng)該被啟動的,4各主分區(qū)中只允許一個活動分區(qū)。
  4. ROM中讀取和檢測完主引導(dǎo)扇區(qū)指令之后時一個跳轉(zhuǎn)指令,跳轉(zhuǎn)到內(nèi)存接著執(zhí)行主引導(dǎo)扇區(qū)讀到內(nèi)存中的指令。主引導(dǎo)扇區(qū)的啟動指令時分析讀入內(nèi)存的分區(qū)表,取得活動分區(qū),然后算出該分區(qū)起始位置,從活動分區(qū)讀入操作系統(tǒng)寫在那的引導(dǎo)代碼,把它讀入內(nèi)存接著執(zhí)行。如此一環(huán)接一環(huán),從主引導(dǎo)扇區(qū)開始操作系統(tǒng)把自己讀入內(nèi)存并開始執(zhí)行的過程稱為“自舉”。

硬盤上有兩種東西,一種是軟件程序,合適的時候被CPU執(zhí)行;另一種本質(zhì)上不是處理器可以識別的指令,而是軟件處理的材料,比如文檔、音樂文件等。軟件用意是提高計算機(jī)任務(wù)的編寫效率和復(fù)用性,我們在操作系統(tǒng)上編寫程序,當(dāng)然不會是直接用二進(jìn)制碼編寫,所以程序員門定義了許多適用于計算機(jī)又易被人理解和編寫的語法,設(shè)計編譯器軟件能將用此語法寫出的文件編譯成機(jī)器二進(jìn)制指令,用某種程序設(shè)計語言編寫程序就叫編程,編好的程序文件運(yùn)行時由相應(yīng)的編譯器解釋成二進(jìn)制指令然后運(yùn)行。最接近機(jī)器碼的編程語言是匯編,特定的匯編語言和特定的機(jī)器語言指令集是一一對應(yīng)的,而較高級的如C#,更接近于人的日常語言,不同的設(shè)計語言適用于不同的環(huán)境。

就這樣,計算機(jī)和人之間經(jīng)過硬件、軟件多層的轉(zhuǎn)義實現(xiàn)相互理解,從而讓計算機(jī)完成人交予的任務(wù)。

四、哪種形式的人工智能最為可能?

現(xiàn)在回過頭來看,計算機(jī)實現(xiàn)的其實是數(shù)學(xué)解決問題的一種方式,作為來源于抽象直覺的知識,人并不能直接的認(rèn)識到“真實”,即便如我現(xiàn)在進(jìn)行的活動:敲打著鍵盤,看到一朵花,它在我認(rèn)識中就是直覺,很難說清楚它到底是什么,只能說它是我先天生理和過去所有經(jīng)驗的一個抽象,從這個意義上講只要認(rèn)識了直覺,就相當(dāng)于認(rèn)識了世界,因此對于世間一切事物,只要人能識別它的某些特征,就能用數(shù)學(xué)來描述,進(jìn)而在計算機(jī)上模擬它,今年谷歌搞出的大新聞——用深度學(xué)習(xí)原理開發(fā)的名為“阿爾法狗”的圍棋程序戰(zhàn)勝人類頂級棋手就是一個例證。那么很自然的有此疑問產(chǎn)生:人工智能會實現(xiàn)嗎?

對于計算機(jī)而已,一切都是數(shù)據(jù),或者是電子脈沖,而對于神經(jīng)系統(tǒng)中一切都是動作電位。人和計算機(jī)似乎是相似的,但不全然如此,神經(jīng)獲取電位需要細(xì)胞外離子,神經(jīng)之間傳遞電位需要化學(xué)遞質(zhì),而整個神經(jīng)系統(tǒng)液體環(huán)境受激素的調(diào)節(jié),往大了說,整個人體系統(tǒng)還受微生物的調(diào)節(jié),腦與神經(jīng)系統(tǒng)內(nèi)存在幾千種物質(zhì),比較熟知的如多巴胺,作為一種作用于細(xì)胞傳送脈沖過程的神經(jīng)傳導(dǎo)物質(zhì),它影響人的情緒、思維,還有5-羥色胺,它也是一種興奮性神經(jīng)遞質(zhì),在腦中的缺失會導(dǎo)致人的抑郁。這些化學(xué)、物理乃至生物因子直接或間接的改變神經(jīng)細(xì)胞的細(xì)胞透性、受體分子、物質(zhì)濃度,從而影響動作電位的產(chǎn)生、傳遞,對人腦而言從輸入、運(yùn)算再到輸出每一個細(xì)微的環(huán)節(jié)都受到各種因素的影響,數(shù)據(jù)早已面目全非,而這些物質(zhì)的水平,可能取決于一餐飯、一件事,也可能由長久的生活習(xí)慣導(dǎo)致,人的系統(tǒng)特質(zhì)從卵子受精開始就受基因和環(huán)境的影響不斷的改變,無法量化,往久遠(yuǎn)了說,某些物質(zhì)的作用可能從單細(xì)胞原始生物進(jìn)化開始就寫入基因,而人經(jīng)過數(shù)十億年之進(jìn)化,這些看起來很混亂復(fù)雜的硬件、軟件,但卻能有效的維持內(nèi)部環(huán)境和適應(yīng)外部環(huán)境,難以用自動化來解釋,有特別需求時總會通過創(chuàng)造來體現(xiàn)它的能力。

計算機(jī)當(dāng)然能實現(xiàn)智能,而且遠(yuǎn)遠(yuǎn)的超越人類,關(guān)鍵在于如何定義智能,從人的意義上講計算機(jī)要實現(xiàn)人類的智能要走很長很長的路,有什么特別的意義需要它持續(xù)的走這條路嗎?這個可能性很容易被其他可能替代。當(dāng)然只要計算機(jī)有的潛能人就會用它實現(xiàn)各種需求,或許有人制造出能全天候模擬某種“常人”的產(chǎn)品,一些人把這種擬人當(dāng)作真人攜手共度一生;也會有其他需求,有些需求出于壞的目的,可能會導(dǎo)致新聞出現(xiàn)這樣的大標(biāo)題:“人類正在被人工智能取代”、“人工智能即將消滅人類!”

如果沖突在即,利用計算機(jī)提升自身能力的人類和利用計算機(jī)替代自身的人類哪一方會取得勝利?我認(rèn)為這樣的事情不會大范圍的發(fā)生,因為計算機(jī)展現(xiàn)了另外一種更強(qiáng)大的能力,那就是作為一種自然法則意義上的智能,人類已經(jīng)逐漸脫離原始自然界的法則,進(jìn)入新的法則,這個法則由于互聯(lián)網(wǎng)的發(fā)展初見端倪,它同時定義了人類整體和計算機(jī)的行為,我們?nèi)祟惡芸赡芫驮谶@智能自然界中與它相互適應(yīng),繼續(xù)進(jìn)化。

  • 最后推薦一本書:李忠:《穿越計算機(jī)的迷霧》,這本書講計算機(jī)的原理和發(fā)展歷史,由淺入深,讀來有趣,我看了這本書才寫這篇文章,本文使用的大部分配圖取自于它,已征得作者的同意。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容