欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    節(jié)內(nèi)容:計算機硬件系統(tǒng)的組成。

    計算機的核心部件:CPU、內(nèi)存、主板、硬盤、顯卡、顯示器和鍵盤。

    計算機的結(jié)構(gòu)演化:馮·諾依曼、以存儲為中心計算機結(jié)構(gòu)、現(xiàn)代計算機結(jié)構(gòu)。

    計算機系統(tǒng)的五個層次:第0層微指令、第1層機器語言指令集、第2層操作系統(tǒng)、第3層匯編語言、第4層高級語言。

    1.2.1 計算機的構(gòu)成

    這節(jié)我們將介紹計算機的硬件組成,對計算機有個整體的認識。接下來的課程,我們都是圍繞計算機的各個硬件來講述。學(xué)習(xí)如何通過計算機軟件來控制計算機各個硬件的工作。

    計算機硬件組成

    圖1-9 計算機的構(gòu)成

    圖1-9展示了計算機的硬件組成。在我們學(xué)習(xí)程序設(shè)計之前,我們需要明確一個概念:計算機系統(tǒng)分為硬件系統(tǒng)和軟件系統(tǒng)。計算機硬件是由CPU、內(nèi)存、主板、磁盤、I/O輸入輸出設(shè)備等一系列硬件組成的。計算機沒有智慧,沒有生命。計算機軟件是由程序員編寫的由數(shù)據(jù)和指令組成的可執(zhí)行程序,包括操作系統(tǒng)、基礎(chǔ)軟件和應(yīng)用軟件。計算機是在程序員編寫的控制指令下運行,并完成預(yù)定的任務(wù)。在這一節(jié)中,我們將熟悉計算機的硬件組成及功能。在第二部分十六位匯編的章節(jié)中,我們將學(xué)習(xí)如何通過編寫程序指令來控制8086計算機的CPU、內(nèi)存、磁盤、鍵盤、顯示器、打印機等部件的運行。在我們完成這部分內(nèi)容的學(xué)習(xí)之后,將會深刻的理解計算機運行的原理,對我們今后的學(xué)習(xí)帶來非常大的幫助。

    下面我們分別介紹計算機的主要部件。

    ●CPU

    CPU相當于計算機的大腦。

    CPU的作用是什么呢?

    第一個作用是控制計算機各個部件進行工作。

    第二個作用是進行算數(shù)和邏輯運算。

    第三個作用是進行數(shù)據(jù)的交換。

    我們將在第六章8086 CPU寄存器的章節(jié)中詳細介紹CPU寄存器。

    ●主板

    主板是計算機各個部件的載體。主板通過插槽和總線將CPU和外部各個部件進行連接。我們可以看到的主板上連接各個插槽的印刷電路就是總線??偩€又分為數(shù)據(jù)總線、地址總線和控制總線。在本章“1.5節(jié)總線”中我們將詳細介紹。

    如圖1-10所示的電腦主板電路圖,主板中心位置為CPU插槽,CPU通過總線和主板上其他硬件設(shè)備的插槽連接。

    ●內(nèi)存

    內(nèi)存是用來存儲數(shù)據(jù)和指令的地方,由成千上萬個寄存器構(gòu)成。內(nèi)存通過主板上的內(nèi)存條插槽與CPU進行連接。內(nèi)存存儲空間的大小以字節(jié)為單位,每個字節(jié)都有一個地址編號。我們將在“1.3節(jié)基本概念”中詳細講解內(nèi)存的概念。內(nèi)存讀寫數(shù)據(jù)的速度比較快。內(nèi)存是僅次于CPU之外,最重要的計算機部件了。內(nèi)存越大,則計算機同一時間處理的數(shù)據(jù)能力就越強。內(nèi)存將是我們今后學(xué)習(xí)內(nèi)容的重點。我們將在第七章8086尋址方式的章節(jié)中詳細講解8086計算機的尋址方式。

    ●硬盤

    硬盤屬于外部存儲設(shè)備,也稱為磁盤。通常以文件的形式存儲數(shù)據(jù),通過硬盤內(nèi)的磁頭讀寫數(shù)據(jù)。硬盤存儲數(shù)據(jù)的容量比內(nèi)存大的多,成本低,但是讀寫數(shù)據(jù)的速度比較慢。第十三章磁盤文件管理及應(yīng)用的章節(jié)中我們將詳細講解8086計算機磁盤文件的操作。

    ●顯卡

    顯卡稱為GPU,是通過屏幕用來顯示數(shù)據(jù)的部件。早期的顯卡通過主板獨立的插槽與CPU進行連接。現(xiàn)在由于超大規(guī)模集成電路的發(fā)展,部分CPU廠商已經(jīng)將顯卡集成到了CPU內(nèi)部,稱之為集成顯卡。顯卡有自己獨立的存儲空間,稱之為顯存。顯存分為RAM動態(tài)存儲和ROM靜態(tài)存儲兩個部分。我們把要在屏幕顯示的數(shù)據(jù)寫入顯存的RAM動態(tài)存儲空間,就可以在屏幕上顯示出來了。而顯存的ROM靜態(tài)存儲空間存放的是顯卡的I/O驅(qū)動程序。顯存越大,同一時間存儲的數(shù)據(jù)就越多,顯卡性能就越高,屏幕顯示的畫面也更為流暢。我們將在第十六章輸入和輸出中斷的章節(jié)中詳細講述8086計算機顯卡驅(qū)動程序的實現(xiàn)。

    圖1-10 電腦主板電路圖

    ●顯示器

    顯示器是顯卡用來顯示數(shù)據(jù)的標準輸出設(shè)備。作為程序員,我們需要學(xué)習(xí)的僅限顯卡設(shè)備的驅(qū)動,并不需要關(guān)心顯示器的物理特性。

    ●光驅(qū)

    光驅(qū)是用來讀寫光盤的外部輸入輸出設(shè)備,隨著移動硬盤設(shè)備的快速發(fā)展?,F(xiàn)在的計算機用的相對來說要少一些。

    ●鍵盤

    鍵盤是我們進行人機交互的一個設(shè)備,是計算機的標準輸入設(shè)備。鍵盤上的按鍵分為字符鍵、功能鍵和控制鍵。每個按鍵都對應(yīng)一個掃描碼。當我們按下一個字符鍵時會產(chǎn)生通碼,得到一個掃描碼和ASCII碼,表示按下的是哪個鍵,及其對應(yīng)的字符。功能鍵F1~F12的ASCII碼為0。CTRL、ALT、SHIFT、Caps和NumLock鍵為控制鍵,按下控制鍵,會在鍵盤按鍵的狀態(tài)字節(jié)中將其相應(yīng)的標志位置1,當我們獲取鍵盤狀態(tài)字節(jié)后,就知道是否按下以及按下哪個控制鍵了。詳細的內(nèi)容我們將在第十六章輸入和輸出中斷的章節(jié)中詳細講解。

    ●鼠標

    鼠標是另一個人機交互的輸入設(shè)備,其實就相當于一個簡化的小鍵盤。早期的鼠標只有一個按鍵,后來發(fā)展為左右兩個按鍵。今天的鼠標左右按鍵中間還有一個滾輪,用來操作窗口的滾動條。我們將在Windows程序設(shè)計的課程中詳細講解鼠標設(shè)備的操控。

    ●其他設(shè)備

    機箱是計算機的外殼,包含控制計算機開關(guān)機按鍵,通過連接線與主板對應(yīng)的插槽相連。

    電源設(shè)備是給計算機供電的外部設(shè)備,包括主板電源接口和其他外部設(shè)備獨立電源接口。

    網(wǎng)卡和聲卡設(shè)備早期都是獨立的外部設(shè)備,通過主板插槽與CPU連接,網(wǎng)卡控制計算機連接外部互聯(lián)網(wǎng)。聲卡控制聲音的輸入和輸出?,F(xiàn)在的計算機通常將聲卡和網(wǎng)卡集成到主板上,不再使用獨立的設(shè)備。

    此外還有一些其他的外部設(shè)備,比如掃描儀、打印機等等。關(guān)于打印機設(shè)備我們將在第十五章數(shù)據(jù)傳輸方式第十六章輸入和輸出中斷的章節(jié)中詳細介紹。

    總結(jié)

    CPU是計算機系統(tǒng)的核心,CPU內(nèi)部的控制單元控制計算機外部設(shè)備的運行。CPU內(nèi)部的算術(shù)邏輯運算單元,進行算術(shù)邏輯運算。CPU內(nèi)的寄存器進行數(shù)據(jù)存儲、命令控制、狀態(tài)記錄、尋址等操作。

    CPU通過主板的總線與主板插槽上的外部設(shè)備連接,通過控制總線傳輸控制命令來控制外部設(shè)備的運行。通過數(shù)據(jù)總線向外部設(shè)備傳輸數(shù)據(jù)。通過地址總線獲取外部設(shè)備的端口地址。CPU也可以通過指定的端口地址讀取外部設(shè)備的狀態(tài)寄存器,獲取當前外部設(shè)備狀態(tài)信息。

    內(nèi)存是計算機除了CPU之外最重要的部件。內(nèi)存是一組以字節(jié)為單位的連續(xù)的線性存儲空間,每個字節(jié)都有一個地址編號。計算機與外部設(shè)備之間的數(shù)據(jù)傳送,程序的加載和運行都離不開內(nèi)存。如果要讀寫內(nèi)存中的數(shù)據(jù)和指令,就必須要準確的找到該數(shù)據(jù)或指令在內(nèi)存中的確切地址。因而正確的尋址,是內(nèi)存數(shù)據(jù)讀寫和程序控制的關(guān)鍵。

    鍵盤是計算機人機交互的標準輸入設(shè)備。顯卡及屏幕是計算機人機交互的標準輸出設(shè)備。

    此外我們常用的一個輸出設(shè)備就是打印機設(shè)備。我們將輸入輸出設(shè)備稱之為計算機的I/O設(shè)備。我們將在第十六章輸入和輸出中斷的章節(jié)中詳細講解這些設(shè)備的驅(qū)動程序。

    總之,計算機是由一些硬件設(shè)備和軟件構(gòu)成的,我們稱之為計算機系統(tǒng)。程序員通過編寫計算機軟件發(fā)送控制命令,來控制計算機的運行。

    提示

    可能有些讀者是初學(xué)者,對上述內(nèi)容中提到的一些概念還比較陌生。沒有關(guān)系,我們會在后續(xù)的章節(jié)中詳細的講解這些概念,及其具體實現(xiàn)的原理和過程。當我們學(xué)完具體的內(nèi)容之后,再回來看上述內(nèi)容時,應(yīng)該會親切的多。

    1.2.2 計算機結(jié)構(gòu)

    ■典型的馮.諾依曼結(jié)構(gòu):(巴貝奇的分析機原理)

    圖1-11 馮.諾依曼結(jié)構(gòu)

    圖1-11展示的馮·諾伊曼結(jié)構(gòu)其實是繼承了巴貝奇的分析機的原理。有輸入設(shè)備、輸出設(shè)備和存儲器這三個關(guān)鍵的部件。中間位置有一個運算器,功能是算數(shù)運算和邏輯運算。此外還有一個控制器,控制器的功能是用來控制計算機各個部件進行工作的。

    我們來看一下馮·諾依曼結(jié)構(gòu)的工作流程。我們用黑色實線來表示數(shù)據(jù)線,藍色虛線表示控制線。

    先看數(shù)據(jù)的傳輸過程:

    ①先由輸入設(shè)備進行數(shù)據(jù)的輸入。

    ②數(shù)據(jù)輸入之后,將數(shù)據(jù)送入運算器進行算術(shù)邏輯運算。

    ③在進行算術(shù)邏輯運算時,運算器和存儲器之間會有一個數(shù)據(jù)交換。比如從存儲器中讀取一個操作數(shù),或者將計算時產(chǎn)生的臨時結(jié)果保存在存儲器中。

    ④輸出數(shù)據(jù)。有兩種情形,一是運算器計算出結(jié)果后直接將結(jié)果輸出。二是將保存在存儲器中的結(jié)果取出后輸出。

    再看控制指令的傳輸過程:

    ①控制器發(fā)送控制指令給輸入設(shè)備。

    ②控制器發(fā)送控制指令給輸出設(shè)備。

    ③控制器發(fā)送控制指令給運算器。

    ④控制器發(fā)送指令給存儲器。

    接下來我們再看以存儲為中心的計算結(jié)構(gòu)。

    ■以存儲為中心計算機結(jié)構(gòu)

    圖1-12 以存儲器為中心計算機結(jié)構(gòu)

    圖1-12展示以存儲為中心的計算結(jié)構(gòu),分為三個數(shù)據(jù)指令傳輸過程,相對于馮.諾依曼結(jié)構(gòu)增加了一個反饋過程。它的部件其實和馮.諾依曼結(jié)構(gòu)的幾個主要部件是一樣的,有輸入設(shè)備、輸出設(shè)備控制器、存儲器和運算器。只是它工作的流程有了變化。

    首先看一下控制流程:

    ①控制器發(fā)送控制指令給輸入設(shè)備。

    ②控制器發(fā)送控制指令給輸出設(shè)備。

    ③控制器發(fā)送控制指令給運算器。

    ④控制器發(fā)送指令給存儲器。

    相對于馮·諾依曼結(jié)構(gòu)沒有什么變化。

    接著看一下數(shù)據(jù)傳輸流程:

    ①首先數(shù)據(jù)從輸入設(shè)備輸入。

    ②接著數(shù)據(jù)從輸入設(shè)備進入存儲器。

    ③存儲器將數(shù)據(jù)(指令)送入控制器。

    ④運算器對存儲器可以進行讀寫雙向操作。

    ⑤數(shù)據(jù)由存儲器送入輸出設(shè)備,輸出結(jié)果。

    再看一下反饋流程:

    控制器通過控制指令操作輸入設(shè)備、輸出設(shè)備、存儲器、運算器的同時,上述設(shè)備會將設(shè)備狀態(tài)返回給控制器,以便判斷錯誤原因以及下一步如何操作。

    以存儲為中心的計算機結(jié)構(gòu)對比馮·諾依曼結(jié)構(gòu)有什么優(yōu)點呢?

    在馮·諾依曼結(jié)構(gòu)中,如果說工作的流程中出現(xiàn)錯誤了(任何一個環(huán)節(jié)都可能出現(xiàn)錯誤),但是我們并不清楚。如果說有了反饋信息,那么我們就可以很清楚的知道在哪一個環(huán)節(jié)出了問題,是輸入設(shè)備還是輸出設(shè)備的問題,一目了然。這是一個很重要的改進。

    此外,以存儲為中心的計算機結(jié)構(gòu),數(shù)據(jù)和指令的傳輸過程更為簡潔和高效。存儲器中的數(shù)據(jù)送入運算器,存儲器中的指令送入控制器。

    注意

    此時會產(chǎn)生一個新的問題,我們怎么知道哪些是數(shù)據(jù),哪些是指令呢?如果我們在編寫程序的時候?qū)⒅噶詈蛿?shù)據(jù)按照指定的編碼格式書寫和標注,并且分段存儲在不同的區(qū)域就很容易解決這個問題了。在后續(xù)編寫程序時我們就是這樣做的。

    ■現(xiàn)代計算機結(jié)構(gòu)

    圖1-13展示的現(xiàn)代計算機的結(jié)構(gòu)與存儲為中心結(jié)構(gòu)類似,包括I/O輸入輸出設(shè)備。CPU內(nèi)部有控制單元和邏輯算術(shù)運算單元,然后是一個主存儲器。

    現(xiàn)代計算機結(jié)構(gòu)與以存儲器為中心的計算機結(jié)構(gòu)工作流程類似,包括數(shù)據(jù)、命令和反饋信息的傳輸,上述數(shù)據(jù)信息在CPU、主存儲器和外部I/O設(shè)備之間移動,這里不再贅述。

    1.2.3 多層次計算機系統(tǒng)

    計算機系統(tǒng)的5個層次

    如圖1-14所示:

    第0層微指令:是物理邏輯電路,不是普通用戶可以編寫的程序指令,屬于商業(yè)秘密。

    第1層機器語言指令集:是固化在處理器內(nèi)部,執(zhí)行移動、加法和乘法等操作,每條機器語言可以分成幾條微指令執(zhí)行。

    第2層操作系統(tǒng):能夠理解用戶發(fā)出的諸如執(zhí)行程序、顯示目錄之類的交互命令。操作系統(tǒng)被翻譯為機器碼在第1層執(zhí)行。

    第3層匯編語言:在操作系統(tǒng)之上,能夠?qū)嶋H開發(fā)大型軟件的翻譯層。匯編指令被翻譯成機器語言,由操作系統(tǒng)執(zhí)行。

    圖1-14 多層次計算機系統(tǒng)

    第4層高級語言:諸如C++、C#、JAVA、Python之類的高級語言先由編譯器翻譯成C語言,再翻譯成匯編語言,最后轉(zhuǎn)為機器語言,由操作系統(tǒng)執(zhí)行。其他應(yīng)用腳本類的應(yīng)用語言由該語言的解釋器解釋成C語言后直接運行。

    注意

    匯編語言比較特殊。匯編語言程序既可以在操作系統(tǒng)之上運行,也可以越過操作系統(tǒng),直接控制硬件。我們將在第十六章輸入和輸出中斷章節(jié)中詳細講解。

    提示

    我們在C語言階段的課程中將發(fā)明一個新的高級語言,并編寫一個簡單的編譯器和解釋器,在我們自己寫的 Simpletron虛擬機上運行。當我們完成這個項目之后,我們對計算機及計算機軟件的工作原理將有一個非常深刻的認知。

    練習(xí)

    1、自己動手組裝一次PC機,熟悉PC機的各個組成部分。組裝過PC機的同學(xué)可以忽略。

    2、寫出計算機系統(tǒng)的5個虛擬機層次,并說明處理不同虛擬機層使用的翻譯技術(shù)。

    3、程序員為什么不可以使用微指令編寫應(yīng)用程序?

    4、如果自己組裝一臺PC機,需要購買哪些部件,注意哪些細節(jié)?不明白的可以網(wǎng)上查閱資料或者詢問賣家客服。

    5、馮·諾伊曼計算機的特點是什么?

    6、請畫出主機組成結(jié)構(gòu)圖,并說明各個部件的作用是什么?

    7、匯編語言是由操作系統(tǒng)翻譯成機器語言的,這個說法對嗎?請說明。

    摘自編程達人系列教材《X86匯編語言基礎(chǔ)教程》!

    據(jù)的表示

    最小的數(shù)據(jù)單位:b最小的存儲單位:byte

    進制的轉(zhuǎn)換

    1. R進制轉(zhuǎn)十進制:將每一位數(shù)字用$R^k$表示然后相加,k與該位與小數(shù)點的距離有關(guān),小數(shù)點左邊第一位為0,右邊第一位為-1,往左遞增,往右遞減如:二進制數(shù) 100.01=12^4+12^2+1*2^{-2}$
    2. 十進制轉(zhuǎn)R進制: 整數(shù)位使用短除法,即將十進制數(shù)除以R再取余,直至余數(shù)為零,然后將余數(shù)由下往上按順序排列,小數(shù)位乘以R,每乘一次就取它的整數(shù)位(整數(shù)位為零時就取零),直至小數(shù)位為零,然后將取得的整數(shù)位由上往下排列即可。
    3. 二進制轉(zhuǎn)八進制及二進制轉(zhuǎn)十六進制:將二進制數(shù)以小數(shù)點為界向左及向右每三個一組(轉(zhuǎn)八進制),或者每四個一組(轉(zhuǎn)十六進制),缺的數(shù)用零來補充,然后依次轉(zhuǎn)化為相應(yīng)的進制數(shù)然后按順序排列即可。

    原碼反碼補碼移碼

    1. 原碼:將數(shù)值轉(zhuǎn)換為二進制數(shù),并且該二進制數(shù)的首位(最高位)表示正負,0表示正,1表示負,不足八位的就在首位與二進制數(shù)中間用零填充。例:$[-1]_{原}=10000001$
    2. 反碼:正數(shù)的反碼為本身,負數(shù)的反碼為其原碼除首位不變外全部取反原碼在計算機中進行加減不能得到正確的答案,而反碼的加減則符合事實
    3. 補碼:正數(shù)的補碼與原碼和反碼相同,負數(shù)的補碼即為其反碼加1補碼的運算也符合正確答案補碼的補碼就是原碼
    4. 移碼:將正數(shù)和負數(shù)的補碼首位取反,其余位不改變移碼的運算也符合正確答案
    5. 各自數(shù)值表示范圍:其中n一般等于8


    整數(shù)

    原碼

    $-(2^{n-1}-1) \sim 2^{n-1}-1$

    反碼

    $-(2^{n-1}-1) \sim 2^{n-1}-1$

    補碼

    $-2^{n-1} \sim 2^{n-1}-1$

    浮點數(shù)

    1. 浮點數(shù)的概念:浮點數(shù)即科學(xué)計數(shù)法,如 00=1*10^3$ ; 其中,1為尾數(shù),10為基數(shù),3為指數(shù)
    2. 表示格式:階符+階碼+數(shù)符+尾數(shù)
    3. 計算機中浮點數(shù)的運算:當兩個指數(shù)不等的浮點數(shù)相加時,計算機會把低階浮點數(shù)的指數(shù)轉(zhuǎn)化為高階浮點數(shù)的指數(shù),如: .010^3+1.1910^2$ ,計算機會將 .1910^2$ 轉(zhuǎn)化為 >10^2$ 轉(zhuǎn)化為 $0.119<.11910^3$ ,然后作和,然后結(jié)果規(guī)格化(將尾數(shù)的絕對值限定在區(qū)間[0.5,1]),如:得到 .301910^3$ 以后,要化為 .1301910^4$
    4. 浮點數(shù)所能表示的數(shù)值范圍主要由階碼決定,所表示的數(shù)值精度則由尾數(shù)決定

    中央處理器(CPU)

    CPU由運算器和控制器組成

    1. 運算器(ALU)累加寄存器(AC):專門存放算術(shù)或邏輯運算的一個操作數(shù)和運算結(jié)果的寄存器。能進行加、減、讀出、移位、求補等操作。是運算器的主要部分狀態(tài)寄存器(PSW):該部件用來存放兩類信息,一類是體現(xiàn)當前指令執(zhí)行結(jié)果的各種狀態(tài)信息(條件碼),如有無進位、有無溢出、結(jié)果正負、信息是否為零等;另一類是存放控制信息,如允許中斷、跟蹤標志等
    2. 控制器程序計數(shù)器(PC):程序計數(shù)器中存放的是下一條指令的地址。由于多數(shù)情況下程序是順序執(zhí)行的,所以程序計數(shù)器設(shè)計成自動加一的裝置。當出現(xiàn)轉(zhuǎn)移指令時,就需重填程序計數(shù)器指令寄存器(IR):中央處理器正在執(zhí)行的操作碼表存放在這里,即當前正在執(zhí)行的所有指令指令譯碼器(ID):將操作碼解碼,告訴中央處理器該做什么時序部件

    尋址

    1. 立即尋址。操作數(shù)就包含在指令中
    2. 直接尋址。操作數(shù)存放在內(nèi)存單元中,指令中直接給出操作數(shù)所在存儲單元的地址
    3. 寄存器尋址。操作數(shù)存放在某一寄存器中,指令中給出存放操作數(shù)的寄存器名。寄存器間接尋址。操作數(shù)存放在內(nèi)存單元中,操作數(shù)所在存儲單元的地址在某個寄存器中
    4. 間接尋址。指令中給出操作數(shù)地址的地址
    5. 相對尋址。指令地址碼給出的是一個偏移量(可正可負),操作數(shù)地址等于本條指令的地址加上該偏移量
    6. 變址尋址。操作數(shù)地址等于變址寄存器的內(nèi)容加偏移量。

    CPU采用多種尋址方式是為了在效率和方便性上找一個平衡CPU根據(jù)指令周期的不同階段來區(qū)分內(nèi)存中以二進制編碼形式存放的指令和數(shù)據(jù)指令最先進入到數(shù)據(jù)寄存器暫存起來,然后再拿到指令寄存器中,再交由指令譯碼器來解碼進而運算(交給運算器),而這一過程一結(jié)束,就會迅速提取程序計數(shù)器中的指令(即下一條指令),因此,程序計數(shù)器中存儲的始終是暫未執(zhí)行的,下一條指令的“地址”在匯編語言程序中,程序員可以直接訪問通用寄存器以存取數(shù)據(jù),可以訪問狀態(tài)字寄存器以獲取有關(guān)數(shù)據(jù)處理結(jié)果的相關(guān)信息,可以通過相對程序計數(shù)器進行尋址,但是不能訪問指令寄存器,即指令寄存器對用戶是完全透明的

    計算機體系結(jié)構(gòu)分類(Flynn)

    體系結(jié)構(gòu)類型

    結(jié)構(gòu)

    關(guān)鍵特性

    代表

    單指令流單數(shù)據(jù)流SISD

    控制部分:一個
    處理器:一個
    主存模塊:一個


    單處理器系統(tǒng)

    單指令流多數(shù)據(jù)流SIMD

    控制部分:一個
    處理器:多個
    主存模塊:一個

    各處理器以異步的形式執(zhí)行同一條指令

    并行處理機
    陣列處理機
    超級向量處理機

    多指令流單數(shù)據(jù)流MISD

    控制部分:多個
    處理器:一個
    主存模塊:多個

    被證不可能,至少是不實際

    目前沒有,有文獻稱流水線計算機為此類

    多指令流多數(shù)據(jù)流MIMD

    控制部分:多個
    處理器:多個
    主存模塊:多個

    能夠?qū)崿F(xiàn)作業(yè)、任務(wù)、指令等各級全面并行

    多處理機系統(tǒng)
    多計算機

    CISC和RISC

    指令系統(tǒng)類型

    指令

    尋址方式

    實現(xiàn)方式

    其他

    CISC(復(fù)雜)

    數(shù)量多,使用頻率差別大,可變長格式

    支持多種

    微程序控制技術(shù)(微碼)

    研制周期長

    RISC(精簡)

    數(shù)量少,使用頻率接近,定長格式,大部分為單調(diào)期指令,操作寄存器,只有Load/Store操作內(nèi)存

    支持方式少

    增加了通用寄存器;硬布線邏輯控制為主;適合采用流水線

    優(yōu)化編譯,有效支持高級語言

    流水線

    1. 基本概念:流水線是指在程序執(zhí)行時多條指令重疊進行操作的一種準并行處理實現(xiàn)技術(shù)。各種部件同時處理是針對不同指令而言的,它們可同時為多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執(zhí)行速度
    2. 周期計算流水線周期(操作周期)為執(zhí)行時間最長的一段計算公式:1條指令執(zhí)行時間+(指令條數(shù)-1)*流水線周期理論公式:(t1+t2+··+tk)+(n-1)*△t實踐公式:(k+n-1)*△t

    優(yōu)先使用理論公式

    1. 吞吐率計算定義:指單位時間內(nèi)流水線所完成的任務(wù)數(shù)量或輸出的結(jié)果數(shù)量基本公式:$TP=\frac{指令條數(shù)}{流水線執(zhí)行時間}$流水線最大吞吐率:$TP_{max}=\lim\limits_{n\to\infty}\frac{n}{(k+n-1)\triangle t}=\frac{1}{\triangle t}$
    2. 加速比定義:完成同樣一批任務(wù),不使用流水線所用的時間與使用流水線所用的時間之比公式:$S=\frac{不使用流水線執(zhí)行時間}{使用流水線執(zhí)行時間}$
    3. 效率定義:流水線的設(shè)備利用率。在時空圖上,流水線的效率定義為n個任務(wù)占用的時空區(qū)與k個流水段總的時空區(qū)之比公式:$E=\frac{n個任務(wù)占用的時空區(qū)}{k個流水段的總的時空區(qū)}=\frac{T_0}{kT_k}$

    層次化存儲器結(jié)構(gòu)

    內(nèi)存存儲外存的部分內(nèi)容,cache存儲內(nèi)存的部分內(nèi)容,CPU只處理cache中的指令,cache的作用是精簡內(nèi)存中重復(fù)出現(xiàn)的指令,提高CPU的執(zhí)行效率,使得計算機的運算速度得到極大的提升;此外,結(jié)構(gòu)中由上至下,速度越來越慢,但容量越來越大

    Cache

    1. Cache的功能:提高CPU輸入輸出的速率,突破馮諾依曼瓶頸,即CPU與存儲器系統(tǒng)間數(shù)據(jù)傳送帶寬限制,在程序執(zhí)行過程中,Cache與主存的地址映射是由硬件自動完成的
    2. 與cache相關(guān)的計算:如果以h代表Cache的訪問命中率,$t_1$表示Cache的周期時間,$t_2$表示主存儲器周期時間,以讀操作為例,使用“Cache+主存儲器”的系統(tǒng)的平均周期為$t_3$,則$t_3=h*t_1+(1-h)*t_2-h稱為失效率(未命中率)

    CPU會在cache中尋找它需要的數(shù)據(jù),如果不能找到,CPU就將前往內(nèi)存中尋找,而chche的訪問命中率就是CPU需要的數(shù)據(jù)在cache中被找到的比例,未能找到的數(shù)據(jù)CPU將前往內(nèi)存中進行再次尋找

    1. 內(nèi)存與cache地址映射的三種方式直接映像:cache的區(qū)號與內(nèi)存的區(qū)號一一對應(yīng)全相連映像:cache的一個塊號可以對應(yīng)多個內(nèi)存的塊號,內(nèi)存的一個塊號也可以對應(yīng)cache的多個塊號組相連映像:兩種方式相結(jié)合的方法

    這三種映射方式都是計算機硬件自動完成的,不是軟件

    1. 替換算法:替換算法的目的是使cache獲得盡可能高的命中率,有以下四種:隨機替換算法、先進先出算法、近期最少使用算法、優(yōu)化替換算法

    現(xiàn)代的計算機cache系統(tǒng)是分為了三個級別的,訪問時先從第一層開始訪問,直至三個級別的cache都被訪問完全時才會訪問內(nèi)存

    1. 虛擬存儲器:即CPU在給出需要訪問的內(nèi)存地址時,給出的并不是真正的物理地址,而是物理地址的抽象,虛擬存儲器是由主存-輔存兩級存儲器組成
    2. 時間局限性:如果某條指令被執(zhí)行,則不久以后該指令很可能再次被執(zhí)行;如果某條數(shù)據(jù)結(jié)構(gòu)被訪問,則不久以后該數(shù)據(jù)結(jié)構(gòu)很可能再次被訪問。產(chǎn)生時間局限性的主要原因是程序中有大量的循環(huán)操作
    3. 空間局限性:一旦程序訪問了某個內(nèi)存單元,不久以后,其附近的內(nèi)存單元也要被訪問,即程序在一段時間內(nèi)所訪問的存儲器空間可能集中在一定的范圍之內(nèi),其最常見情況就是程序的順序執(zhí)行。工作集是指在某段時間隔內(nèi),進程所要訪問的頁面集合。雖然程序只需少量的幾頁內(nèi)存就可以運行,但為了使程序更有效地運行,必須使程序的工作集全部在內(nèi)存(主存儲器)當中,否則會使進程在運行中頻繁出現(xiàn)缺頁中斷,從而出現(xiàn)頻繁的頁面調(diào)入/調(diào)出現(xiàn)象

    主存

    分類

    1. 隨機存取存儲器DRAM (Dynamic RAM ,動態(tài) RAM )——SDRAMSRAM (Static RAM ,靜態(tài))
    2. 只讀存儲器MROM(Mask ROM ,掩模式 ROM )PROM(ProgrammabIe ROM,一次可編程 ROM)EPROM (Erasable PROM, 可擦除的 PROM)閃速存儲器 (flash memory ,閃存)

    編址

    1. 概念:主存的編址就是把許多塊芯片組成相應(yīng)的存儲器
    2. 一般表示方式如下圖,其中左圖一中的8表示它有8個地址空間,4表示每一個地址空間存儲了4位的信息

    磁盤結(jié)構(gòu)與參數(shù)

    1. 存取時間=尋道時間+等待時間(平均定位時間+轉(zhuǎn)動延遲)尋道時間是指磁頭移動到磁道所需的時間等待時間為等待讀寫的扇區(qū)轉(zhuǎn)到磁頭下方所需的時間
    2. 磁道一般分為許多個小的扇形區(qū),即物理塊,磁頭在依次讀取這些物理塊時(磁頭必須依次讀取),會在讀取的同時將其存放進緩存區(qū),緩存區(qū)可以是單個,也可以是多個,存放完成后會在緩存區(qū)花費時間進行處理,處理期間磁頭的讀取不會停止,因此,如果緩存區(qū)過少,就會出現(xiàn)讀取一個物理塊花費了一個周期甚至更長的時間
    3. 磁盤調(diào)度管理中,先進行移臂調(diào)度尋找磁道,再進行旋轉(zhuǎn)調(diào)度尋找扇區(qū)

    總線

    1. 概念:總線是連接計算機有關(guān)部件的一組信號線,是計算機中用來傳送信息代碼的公共通道
    2. 內(nèi)部總線:微機內(nèi)部的,各個外圍芯片與處理器之間的總線,屬于芯片級別
    3. 系統(tǒng)總線:系統(tǒng)總線即為各個插線板和系統(tǒng)板之間的總線數(shù)據(jù)總線:如32位,64位等一次性能夠傳輸?shù)奈坏刂房偩€:假設(shè)該計算機的地址總線為32位,那就代表它的地址空間為^{32}$個字節(jié)控制總線:發(fā)送相應(yīng)的控制信號的總線
    4. 外部總線:即微機和外部設(shè)備的總線

    總線上的多個部件之間只能分時向總線發(fā)送數(shù)據(jù),但可以同時從總線接收數(shù)據(jù)

    可靠性

    串聯(lián)系統(tǒng)

    1. 只要一個子系統(tǒng)失效,則整個系統(tǒng)都將失效
    2. 可靠性:累乘
    3. 失效率(近似):累加

    并聯(lián)系統(tǒng)

    1. 少數(shù)子系統(tǒng)的失效將不會影響整個系統(tǒng)
    2. 可靠性:-(1-R_1)*(1-R_2)···(1-R_3)$
    3. 失效率:$\mu=\frac{1}{\frac{1}{\lambda}\sum_{j=1}^{n} \frac{1}{j}}$

    n模冗余模型

    1. 數(shù)據(jù)輸入n個子系統(tǒng)中,它們各自得出自己的結(jié)果,然后匯總到表決器,表決器將遵循少數(shù)服從多數(shù)的原則,輸出大多數(shù)子系統(tǒng)得到的那個答案然后進行輸出

    校驗碼

    奇偶校驗碼

    1. 在編碼中增加一維校驗位來使校驗碼中1的個數(shù)為奇數(shù)(奇校驗)或偶數(shù)(偶校驗)
    2. 常用奇偶校驗碼:水平奇偶校驗碼、垂直奇偶校驗碼、水平垂直校驗碼
    3. 可以檢測出奇數(shù)位(出錯的位數(shù))出錯的編碼,但不能發(fā)現(xiàn)偶數(shù)位出錯的情況
    4. 只能檢錯,不能糾錯

    海明碼

    1. 利用奇偶性來檢錯和糾錯的校驗方法
    2. 設(shè)數(shù)據(jù)位是n位,校驗位為k位,則必須滿足:^k-1>=n+k$

    :求信息1011的海明碼
    (1)^r\ge x+r+1$,確定校驗碼為三位:^3\ge4+3+1$.分別放在^0=1、2^1=2、2^2=4$位
    x為信息位的個數(shù)
    (2)列出校驗位公式
    =2^2+2^1+2^0,6=2^2+2^1,5=2^2+2^0,3=2^1+2^0$
    $r_2=I_4\oplus I_3\oplus I_2$
    $r_1=I_4\oplus I_3\oplus I_1$
    $r_0=I_4\oplus I_2\oplus I_1$
    (3)根據(jù)公式得$r_2=0,r_1=0,r_0=1$
    (4)將數(shù)據(jù)填入表格

    7

    6

    5

    4

    3

    2

    1

    位數(shù)

    $I_4$

    $I_3$

    $I_2$


    $I_1$



    信息位




    $r_2$


    $r_1$

    $r_0$

    校驗位

    海明碼- 知乎

    循環(huán)冗余校驗碼

    1. 在發(fā)送端,先把數(shù)據(jù)劃分為組。假定每組 k 個比特
    2. CRC 運算在每組 M 后面再添加供差錯檢測用的 n 位冗余碼,然后構(gòu)成一個幀發(fā)送出去。一共發(fā)送(k + n)位
    3. 幀檢驗序列 FCS:在數(shù)據(jù)后面添加上的冗余碼
    4. 僅用循環(huán)冗余檢驗 CRC 差錯檢測技術(shù)只能做到無差錯接受
    5. 可以檢錯,不能糾錯

    輸入輸出(I/O)控制方式

    1. 輸入輸出系統(tǒng)是一組固化到計算機內(nèi)主板上一個ROM芯片上的程序程序查詢方式一次只能讀/寫一個字CPU和I/O(外設(shè))只能串行工作,CPU需要一直輪詢檢查由CPU將數(shù)放入內(nèi)存中斷驅(qū)動方式I/0設(shè)備通過中斷信號主動報告I/0操作已完成CPU和I/0 (外設(shè)) 可并行工作CPU利用率得到提升由CPU將數(shù)放入內(nèi)存直接存儲器方式(DMA)CPU和I/0 (外設(shè)) 可并行工作僅在傳送數(shù)據(jù)塊的開始和結(jié)束時才需要CPU的干預(yù)由外設(shè)直接將數(shù)據(jù)放入內(nèi)存一次讀寫的單位為“塊”而不是字

    CPU是在一個總線周期結(jié)束時響應(yīng)DMA請求的,即不是DMA一請求CPU就響應(yīng),而是CPU在接收到DMA請求后,在該系統(tǒng)總線周期結(jié)束后進行響應(yīng),因為DMA控制器在需要的時候會代替CPU作為總線主設(shè)備,在不受CPU干預(yù)的情況下,控制I/O設(shè)備與系統(tǒng)主存之間的直接數(shù)據(jù)傳輸

    通用圖靈機的基礎(chǔ)上,數(shù)學(xué)家馮·諾依曼進一步發(fā)明了自復(fù)制機器,回答了生物學(xué)中最為深刻的一個問題:為什么所有生物都以DNA形式進行自我描述?圖靈和馮·諾依曼,這兩位計算機科學(xué)先驅(qū)偶然發(fā)現(xiàn)的生命奧秘并不廣為人知,卻為研究生物系統(tǒng)勾畫出藍圖——把生命系統(tǒng)看作是計算機器。

    這篇近期發(fā)表于PNAS的文章題為“圖靈和馮·諾依曼的遺產(chǎn):生命計算機的架構(gòu)”,以DNA聚合酶為例,說明生物分子實際上就是計算機器;并闡釋了計算模型的層級結(jié)構(gòu)可以在生物計算領(lǐng)域找到類似結(jié)構(gòu)。通過將生物學(xué)簡化為計算形式,計算機科學(xué)可以用來將生物學(xué)系統(tǒng)化。反過來,計算機科學(xué)家或許能夠挖掘生物計算中的自然宇宙,利用數(shù)十億年的自然演化來發(fā)現(xiàn)新的計算模型或算法。展望未來,生物學(xué)和計算機科學(xué)可以看作是緊密相連的同一門學(xué)科,一門研究機器行為的學(xué)科。

    撰文 | Hashim M. Al-Hashimi

    翻譯 | 汪顯意

    審校 | 小木球

    編輯 | 梁金

    目錄

    摘要

    1. 圖靈的通用計算機(Universal Computing Machine)

    2. 馮·諾依曼的通用構(gòu)造機(Universal Constructor)

    3. 分子計算(Molecular Computation)

    4. 作為計算機的天然生物分子

    5. 生物計算(Biological Computation)的一個具體例子

    6. 生命計算機的層級

    7. 解碼生命計算

    論文題目:

    Turing, von Neumann, and the computational architecture of biological machines

    論文地址:

    https://www.pnas.org/doi/10.1073/pnas.2220022120

    摘要

    20世紀30年代中期,英國數(shù)學(xué)家和邏輯學(xué)家艾倫·圖靈(Alan Turing)發(fā)明了一種想象中的機器,它可以模擬人類計算者操縱有限符號裝置(finite symbolic configuration)的過程。這一發(fā)明為現(xiàn)代可編程計算機提供了基礎(chǔ),從而開創(chuàng)了一個新的科學(xué)領(lǐng)域——計算機科學(xué)。十年后,在圖靈機的基礎(chǔ)上,美籍匈牙利數(shù)學(xué)家約翰·馮·諾依曼(John von Neumann)進一步發(fā)明了一種想象中的能夠進行開放式演化的自復(fù)制機器。通過他的機器,馮·諾依曼回答了生物學(xué)中最深刻的問題之一:為什么所有的生物都以DNA形式進行自我描述?兩位計算機科學(xué)先驅(qū)早在DNA雙螺旋被發(fā)現(xiàn)多年之前,就偶然發(fā)現(xiàn)了生命的奧秘,但這個故事并不為人所知,甚至很多生物學(xué)家都不知道,你也不會在生物教科書中找到。然而,這個故事在今天和在八十年前一樣重要:圖靈和馮·諾依曼留下了研究生物系統(tǒng)的藍圖,即把生命系統(tǒng)看作是計算機一樣。這種方法可能是回答生物學(xué)中許多問題的關(guān)鍵,甚至可能引領(lǐng)計算機科學(xué)的再進步。

    幾個世紀以來,人類文明一直癡迷于建造自動機,令它們通過遵循預(yù)定的指令集來執(zhí)行機械操作。從布谷鳥鐘到自動開啟的寺廟大門,自動機被用作工具、宗教奇觀和解釋科學(xué)原理的原型。當人們可以用自動機來模仿動物的行為時,便會挑戰(zhàn) “某個東西是‘活的’意味著什么?” 這一說法。大約在20世紀中葉,馮·諾依曼開始對建造真正意義上“活的”自動機展現(xiàn)出興趣:一個可以自我復(fù)制的機器,就可能進化成更復(fù)雜的機器。

    馮·諾依曼被廣泛認為是20世紀最有影響力的思想家之一,他對量子力學(xué)的數(shù)學(xué)基礎(chǔ)做出了許多根本性的貢獻,是博弈論的先驅(qū)之一,也是現(xiàn)代計算機邏輯和設(shè)計原理背后的主要架構(gòu)師[1]。在20世紀40年代早期,馮·諾依曼開始對“控制論”[2]這一新興領(lǐng)域產(chǎn)生興趣,該領(lǐng)域關(guān)注于研究動物和機器的行為。由于兩者都遵循邏輯和機械約束下的指令,控制論學(xué)者認為動物和機器在信息、通信和控制機制方面有很多共同之處。

    在比較自然和人工機器時,馮·諾依曼發(fā)現(xiàn)一個有趣的現(xiàn)象,即生物體可以在幾代之后演化成更復(fù)雜的生物體[3, 4]。他認為,這種行為很難被設(shè)計成一臺人工機器。如果機器A要構(gòu)造機器B,它必須包含完整的B描述。此外,A還必須包含額外的材料來管理B的構(gòu)造。因此,B不可能比A更復(fù)雜,而隨著一臺機器建造另一臺機器,自然的趨勢將是退化。

    1 圖靈的通用計算機(Universal Computing Machine)

    艾倫·圖靈是20世紀的另一位思想巨人,也是計算機科學(xué)和人工智能的先驅(qū),他還因在第二次世界大戰(zhàn)期間破解納粹密碼(恩尼格瑪)而聞名。為了設(shè)計一臺可以構(gòu)建更復(fù)雜機器的假想機器,馮·諾依曼從圖靈那里獲得了靈感,圖靈幾年前曾構(gòu)想了一臺假想的“通用”機器,可以計算任何其他機器可以計算的任何東西[5]

    圖靈發(fā)明他的機器不是為了解決任何生物學(xué)中的問題,而是為了解決“判定問題(decision problem)”。這個問題被當時杰出的德國數(shù)學(xué)家大衛(wèi)·希爾伯特(David Hilbert)稱為“數(shù)理邏輯的主要問題”,它要求一種通用算法,可以通過有限的過程來決定一個任意的數(shù)學(xué)命題(陳述)是否可以使用邏輯規(guī)則從一組給定的公理中證明。公理是被認為是真的陳述。算法(algorithm)是一個遵循規(guī)則來尋找解決方案的系統(tǒng)過程。這個詞來源于“algorithmi”,是“Al-Khwarizmi”的拉丁化版本,Al-Khwarizmi 是9世紀的波斯數(shù)學(xué)家,他首先引入算法來解決代數(shù)問題(代數(shù) algebra 一詞來源于阿拉伯語“al-jabr”,意思是“破碎部分的重新組合”)。當用特定語言表達時,算法被稱為計算機程序。

    馮·諾依曼以其數(shù)學(xué)證明能力而聞名。1926年,在評論希爾伯特的判定問題時,他猜想該問題的判定一定是否定的,但是“我們不知道如何證明這一點”。十年后,圖靈證明了這個判定確實是否定性的。理論上的困難在于,人們必須從可以想象到的天文數(shù)字級的程序方案中嘗試每一個程序,并證明它們都不起作用。圖靈想出了一個絕妙的解決方案。將計算簡化為簡單機器可以執(zhí)行的基本步驟。通過精確定義什么是可計算的,圖靈用他的抽象機器證明了沒有一種通用算法可以決定一個公式是否是可證明的。1936年,24歲的圖靈發(fā)表了一篇具有里程碑意義的論文[5],這篇論文不僅解決了判定問題,而且可能更重要的是,為計算機科學(xué)的新領(lǐng)域和通用可編程計算機奠定了基礎(chǔ)。

    圖靈想象中的機器由一條無限長的磁帶和一個磁頭組成,磁帶被分成幾段,磁頭可以掃描磁帶,一次寫一個符號,并沿著磁帶向右或向左移動一段。為了“記住”它從一個步驟到下一個步驟所做的事情,圖靈允許機器具有不同的“狀態(tài)”,他設(shè)想這些狀態(tài)代表一個人執(zhí)行計算時不同的意識狀態(tài)。然后,機器遵循以轉(zhuǎn)換表形式給出的一組規(guī)則,該轉(zhuǎn)換表為每個初始狀態(tài)和掃描到的符號指定了特定操作(例如,將磁頭向左或向右移動一段,或者寫入“0”或“1”)及其最終狀態(tài)。例如,一個規(guī)則可能是:“如果磁帶磁頭處于狀態(tài)A并掃描0,請將磁頭向右移動一段并鍵入1,然后將其狀態(tài)更改為狀態(tài)B”。轉(zhuǎn)換規(guī)則還可以指示機器不改變狀態(tài)或完成并停止操作。依照轉(zhuǎn)換規(guī)則,機器根據(jù)掃描獲得的符號從一個狀態(tài)跳轉(zhuǎn)到另一個狀態(tài),每次執(zhí)行不同的操作。計算的輸入是寫在磁帶上的原始符號,而輸出則是當機器最終停止時寫在磁帶上的任何東西。

    盡管它很簡單,但圖靈證明了他的機器可以執(zhí)行一臺機器可以執(zhí)行的任何計算。所需要做的就是向他的機器提供另一臺機器的描述,他就可以通過將另一臺機器的轉(zhuǎn)換表編碼到磁帶上來完成。描述機器的轉(zhuǎn)換表本質(zhì)上就是機器本身,并且可以有無限多個可能的轉(zhuǎn)換表來對應(yīng)無限多個不同的機器。這種廣義計算模型被稱為“通用圖靈機(Universal Turing machine),它形成了現(xiàn)代通用可編程計算機的理論基礎(chǔ)。

    圖1. 通用圖靈機(Universal Turing machine)

    圖靈可以用他的抽象機器來枚舉所有可能的算法,并證明判定問題沒有解決方案[5]。假如這樣的算法確實存在,那么就有可能對圖靈機進行編程,以預(yù)測第二臺圖靈機是否會在給定任意輸入后最終停止運行或陷入惡性的無限循環(huán)。圖靈證明了這樣的圖靈機在邏輯上是不可能的。他使用了一種稱為歸謬法或反證法(reductio ad absurdum)的策略。他假設(shè)存在這樣一臺停下來的機器,然后證明將這臺機器喂給自己會導(dǎo)致矛盾。

    圖靈在證明過程中把機器喂給它自己,在這個過程中引出了自指(self--reference)概念,這并非巧合。在20世紀初,自指的命題產(chǎn)生了悖論,并在數(shù)學(xué)領(lǐng)域造成了嚴重的破壞,對希爾伯特本人熱情擁護的正統(tǒng)的公理系統(tǒng)所具有的一致性和完備性提出了質(zhì)疑。在圖靈開始研究他的機器幾年前,奧地利邏輯學(xué)家和數(shù)學(xué)家?guī)鞝柼亍じ绲聽?/span>(Kurt G?del)給出了關(guān)于自指的命題:“這個命題是不可證明的”,表明并非數(shù)學(xué)系統(tǒng)中的所有正確命題都可以從公理中證明[6],此舉震撼了數(shù)理邏輯的核心基礎(chǔ)。馮·諾依曼在設(shè)計他的自我復(fù)制機器時,同樣遇到了處于分子生物學(xué)核心位置的自指問題。

    2 馮·諾依曼的通用構(gòu)造機(Universal Constructor)

    為了建造一臺能夠演化出更復(fù)雜機器的通用自復(fù)制機器,馮·諾依曼意識到他需要擴展圖靈機的概念,使之可以輸出另一臺機器,而非打印一串1和0的磁帶[1]。馮·諾依曼設(shè)想了一臺由三個部件組成的機器:一個描述機器的“藍圖(blueprint)”,就像圖靈磁帶一樣,里面有如何建造另一臺機器的指令;一個通用的“構(gòu)造機(constructor)”,用來解碼構(gòu)造機器的指令;還有一種通用的“復(fù)制機(copying machine)”,可以復(fù)制這些指令[3, 4]。機器使用這些指令復(fù)制自己,然后復(fù)制這些指令,再將它們輸入新機器,以此類推。

    為了使這臺機器能夠制造出超越其自身復(fù)雜性的機器,馮·諾依曼還加入了另一個關(guān)鍵因素。40年前,荷蘭植物學(xué)家雨果·德弗里斯(Hugo de Vries)發(fā)現(xiàn),一種新形態(tài)的月見草可以隨機自發(fā)生長,并繁殖許多代。他為這樣的變化創(chuàng)造了一個新詞:“突變(mutation)”。正如自然界中的突變可以自發(fā)產(chǎn)生一樣,馮·諾依曼允許復(fù)制機在復(fù)制指令時出錯。復(fù)制錯誤有可能導(dǎo)致機器產(chǎn)生可執(zhí)行的變種,那么就可能通過自然選擇演化出更復(fù)雜的機器。

    我們現(xiàn)在知道,生物體就是馮·諾依曼的自我復(fù)制機器在真實生命中的一種實現(xiàn)。以DNA序列形式攜帶指令的遺傳磁帶首先被轉(zhuǎn)錄成相應(yīng)的信使RNA磁帶,然后輸入到一個通用的構(gòu)造機——“核糖體”中,核糖體將RNA信息翻譯成相應(yīng)的氨基酸序列,這些氨基酸序列指定了蛋白質(zhì)磁帶。反過來,蛋白質(zhì)磁帶會自發(fā)地折疊成分子裝置,為細胞提供主要的功能。當生物體繁殖時,DNA磁帶被聚合酶復(fù)制并從父母傳給后代,這就解釋了遺傳是如何工作的。復(fù)制DNA時可能會發(fā)生錯誤,導(dǎo)致生物種群多樣化。最終,一些突變會展現(xiàn)出一種優(yōu)勢,經(jīng)過幾代的演化,那些具有優(yōu)勢的生物體會迅速繁殖并占據(jù)整個種群。這種突變和自然選擇的循環(huán)就是生物學(xué)家所說的“達爾文進化論(Darwinian evolution)”——這個過程標志著生物學(xué)和生命的開始。從DNA到RNA,再到蛋白質(zhì)的信息流,就是弗朗西斯·克里克(Francis Crick)所說的“分子生物學(xué)的中心法則(Central Dogma of Molecular Biology)[7]

    1948年9月20日,在加州理工學(xué)院舉行的“大腦行為機制的??松杏憰鄙?,馮·諾依曼在一次演講中描述了他的自復(fù)制機器[1, 3](圖2)。這是在DNA雙螺旋結(jié)構(gòu)被發(fā)現(xiàn)的5年前[8],在克里克提出分子生物學(xué)的中心法則的12年前[7]。那時,DNA還是遺傳信息載體的主要競爭者。

    圖2.(左)1948年宣傳??松杏憰膫鲉?。(右)與會者合影。后排從左到右分別是 Henry W. Brosin,Jeffress,Paul Weiss,Donald B Lindsley,John von Neumann,J. M. Nielsen,R. W. Gerard,H. S. Liddell。前排分別是Ward C Halstead,K. S. Lashley,Heinrich Klüver,Wolfgang K?hler 和 R. Lorente de No。圖片由加州理工學(xué)院檔案管理員Loma Karklins提供。

    包括馮·諾依曼的演講在內(nèi)的研討會內(nèi)容于1951年被集合成書[3]。根據(jù)演講稿,馮·諾依曼清楚地看到了他的自復(fù)制機器和生物體之間的聯(lián)系,他指出,“……指令I(lǐng)D大致影響基因的功能。同樣清楚的是,復(fù)制機B執(zhí)行繁殖的基本行為,即遺傳物質(zhì)的復(fù)制,這顯然是活細胞增殖的基本操作。也很容易看出,系統(tǒng)E,特別是ID的任意改變,如何能表現(xiàn)出某些典型的性狀,這些性狀與突變有關(guān),通常是致命的,但有也有可能繼續(xù)繁殖?!?/span>

    馮·諾依曼認為,為了實現(xiàn)自我復(fù)制,人們需要一種機制,不是復(fù)制機器本身,而是復(fù)制一套建造機器的指令,在這一點上,馮·諾依曼的非凡洞察力是公認的。他的邏輯依據(jù)是,機器是“變化和反應(yīng)”(varying and reactive)的,僅僅觀察它就可能導(dǎo)致難以預(yù)見的變化。相反,指令帶是“準靜態(tài)的”,并且不太可能隨著觀察而改變。因此,由于生物體需要復(fù)制,它們會攜帶構(gòu)建自身的指令,而指導(dǎo)如何構(gòu)建生物體的指令會比生物體自身的指令更精確地被復(fù)制。

    今天,我們認為指令是復(fù)制來的是非常自然的。指令確實指導(dǎo)機器如何構(gòu)建指令自身。馮·諾依曼認識到,這樣一個方案會導(dǎo)致一個自指類型的深層邏輯問題。指令必須包括用于構(gòu)建指令本身的附加指令(稱為A)。然而,因為A是機器的一部分,所以需要提供指定如何制造A的附加指令B。但是接下來,需要C來描述B,以此類推。這最終陷入了一個“惡性循環(huán)”,如同一幅包含自身副本的圖片,永無止境。馮·諾依曼將指令與機器的其余部分分離,并采用一個單獨的設(shè)備來復(fù)制指令,從而避免了這種惡性循環(huán)。復(fù)制不需要額外的指令,一個模具本身就提供了鑄造一個雕塑而非其他東西所需的信息。DNA就是自身復(fù)制的模版。

    通過他的機器,馮·諾依曼回答了生物學(xué)中最深刻的問題之一:為什么所有的生物體都以遺傳分子——如復(fù)制的DNA——的形式攜帶自我描述并傳遞給后代?這一特性將生物與非生物區(qū)分開來,將生物學(xué)與所有其他學(xué)科區(qū)分開來。許多無生命的自然系統(tǒng)是復(fù)雜的;但只有生物才能自我描述(self--description)。馮·諾依曼的機器告訴我們,我們自身攜帶著自我描述的信息,因為指令可以比有機體本身更精確地進行復(fù)制,而復(fù)制錯誤或突變導(dǎo)致的變異是進化的基礎(chǔ)。DNA的復(fù)制是為了避免陷入自指惡性循環(huán)的困境。馮·諾依曼不僅為生物學(xué)中最大的革命之一奠定了基礎(chǔ),而且他還告訴我們生物體為什么是一種基于邏輯原理而以如此的構(gòu)造鏈接起來的機器。

    通過回顧我們得知,很明顯,馮·諾依曼的演講幾乎沒有在生物學(xué)界產(chǎn)生影響。??松杏憰呐c會者和組織者之一,著名化學(xué)家萊納斯·鮑林(Linus Pauling)幾年后將他的注意力投入到解決DNA的結(jié)構(gòu)問題上[9],但他從未提及馮·諾依曼的工作。分子生物學(xué)的先驅(qū)之一西德尼·布倫納(Sydney Brenner)是一個明顯的例外。早在1952年,他就注意到了馮·諾依曼的工作,但用他自己的話說:“……當時的我還不夠聰明,沒有真正意識到這就是DNA和遺傳密碼的全部內(nèi)容。”西德尼也是最早發(fā)現(xiàn)DNA雙螺旋結(jié)構(gòu)的科學(xué)家之一。他說,當他在1953年第一次看到雙螺旋的時候,就想到了生物信息的概念和它與馮·諾依曼的自復(fù)制機器的聯(lián)系[10]。西德尼沒有錯過見證馮·諾依曼和圖靈的工作,贊美它們對于生物學(xué)的影響[11],但這似乎也沒有對今天的生物學(xué)界產(chǎn)生什么影響。

    3 分子計算(Molecular Computation)

    我們能把生物體和計算機之間的這種類比推廣到多遠呢?每一種生命現(xiàn)象,包括我們?nèi)绾胃兄澜?,都源于細胞?nèi)生物分子的行為和相互作用。如果這些生命成分的基本行為可以用計算機來描述,那么我們所稱之為生命的一切都必然是計算的產(chǎn)物。大自然有沒有發(fā)明一些生物分子來實現(xiàn)分子計算呢?如果有的話,這些計算解決了什么類型的問題?

    生物計算簡史

    生物分子是計算機器的想法可以追溯到20世紀60年代初,當時生物學(xué)家弗朗索瓦·雅各布(Francois Jacob)和雅克·莫諾(Jacques Monod)提出,生物分子可以執(zhí)行編程語言常見的條件語句來控制細菌中的蛋白質(zhì)生產(chǎn)。在20世紀70年代,查爾斯·貝內(nèi)特(Charles Bennett) 將RNA聚合酶(將DNA轉(zhuǎn)化為信使RNA)與圖靈機進行了比較,推測分子可以是更節(jié)能的計算機器[13]。但倫納德·阿德曼(Leonard Adleman)又花了20年時間才展示了分子計算的第一個真實的例子,使生物分子作為計算機器的概念具體化。

    Adleman利用DNA單鏈可以結(jié)合形成DNA雙鏈的特殊性質(zhì),解決了一個被稱為“旅行商問題”的算法問題[14]。這個非平凡的問題要求在航線連接的城市之間找到最短路徑,并且每個城市恰好經(jīng)過一次。通過創(chuàng)造代表城市和航班的DNA分子,然后在試管中組合它們,他可以在幾分鐘內(nèi)得到答案。

    Adleman的工作以后,分子計算已經(jīng)被用于解決各種算法問題,例如哈密頓路徑問題(Hamiltonian path problem)[14],布爾可滿足性問題(Boolean satisfiability problem)[15]和騎士放置問題(knight placement problem)[16]等。此外,分子計算已被用于從分子和生物磚(biological building blocks)開始設(shè)計復(fù)雜的邏輯電路,使其能夠應(yīng)用于藥物篩選、環(huán)境監(jiān)測和疾病診斷[17]等方向。

    天然分子(biomolecules)也可以做生物計算嗎?

    盡管在分子計算方面取得了非凡的成就,但大多數(shù)生物學(xué)家并不認為生物分子是計算機器,也不認為它們催化的生化反應(yīng)是一種計算形式。結(jié)構(gòu)生物學(xué)是一個試圖通過在原子尺度上確定生物分子的3D結(jié)構(gòu)來理解它們?nèi)绾喂ぷ鞯念I(lǐng)域,在結(jié)構(gòu)生物學(xué)發(fā)表的大多數(shù)論文中,你不會找到計算機科學(xué)語言。結(jié)構(gòu)生物學(xué)家尚未接受生物分子作為計算機器的概念,因為迄今為止實現(xiàn)所有的分子計算都依賴于工程生物分子解決算法問題,這些問題與天然生物分子幾乎沒有相關(guān)性,并且在自然界的生物分子中也沒有明確的類似物。因此,雖然我們可以用能夠解決哈密頓路徑問題的生物分子來設(shè)計計算機,但我們在自然界的生物分子中同樣找不到這樣的程序。

    系統(tǒng)生物學(xué)

    然而,幾十年來我們已經(jīng)知道天然生物分子可以用來處理信息。在20世紀60年代早期,弗朗索瓦·雅各布(Francois Jacob)和雅克·莫諾(Jacques Monod)對乳糖操縱子(lac operon)進行了開創(chuàng)性的研究,揭示了細菌如何根據(jù)糖濃度來調(diào)節(jié)負責(zé)糖分解的酶的水平。在這里,一種對糖酶特異的阻遏蛋白與相應(yīng)基因的DNA結(jié)合,阻止RNA聚合酶產(chǎn)生糖酶的mRNA。糖分子與阻遏蛋白結(jié)合,使其從DNA上脫落,從而產(chǎn)生mRNA和酶。一旦糖分子被消耗,阻遏蛋白就返回到DNA,又會阻斷糖酶的合成。重要的是,這不僅僅是一個開關(guān)。通過確定阻遏蛋白分子停留在DNA上或離開DNA的時間比例,糖濃度非常精確地將酶的水平調(diào)整到所需,從而建立了一個精確的反饋回路。

    在過去幾十年里,系統(tǒng)生物學(xué)領(lǐng)域已經(jīng)發(fā)現(xiàn)了生物系統(tǒng)中使用的大量邏輯電路,揭示了細胞內(nèi)信息處理的大量并行性,這是馮·諾依曼當時的思想沒有完全捕捉到的。因此,系統(tǒng)生物學(xué)已經(jīng)將生物分子的信息處理能力建立在堅實的數(shù)學(xué)基礎(chǔ)上,并且揭示了那些只能通過將生物系統(tǒng)整體地視為許多相互作用的生化反應(yīng)的網(wǎng)絡(luò)來進行建模才能進行解釋的行為[18-20]。這種系統(tǒng)性的方法已經(jīng)解決了生物學(xué)中的許多基本問題,例如,結(jié)構(gòu)、振蕩或波如何在同質(zhì)環(huán)境中出現(xiàn)。圖靈在他生命的最后階段為這些努力做出了貢獻。在20世紀50年代早期發(fā)表的另一篇具有里程碑意義的論文中,他從理論上展示了兩種化學(xué)物質(zhì)或“形態(tài)發(fā)生素”(morphogens)如何相互擴散和反應(yīng),從而產(chǎn)生空間斑圖,就像豹子皮膚上的斑點從均勻同質(zhì)的狀態(tài)所展開的排列一樣。

    因此,幾十年來,分子生物學(xué)中的信息處理已經(jīng)被明確地解決了很多次。然而,盡管系統(tǒng)生物學(xué)取得了巨大的進步,生物分子仍然通常被視為將輸入轉(zhuǎn)換為輸出的黑盒,而沒有提供有關(guān)計算其基本步驟的分子描述。我們可能知道軟件,但缺乏對機器的硬件描述,來說明一個生物分子的序列是如何決定它是怎樣處理信息的。結(jié)構(gòu)生物學(xué)領(lǐng)域通常提供完成生化反應(yīng)所需的各種微觀基本步驟的詳細原子描述,但卻很少有人嘗試將天然生物分子的這種行為置于計算機器的背景之下。

    4 作為計算機的天然生物分子

    圖靈在描述計算所需的原材料時,不知不覺地描述了所有天然生物分子的行為。就像圖靈機一樣,生物分子在“掃描”(scan)底物時,也會在不同的構(gòu)象(conformational)或化學(xué)“狀態(tài)”(states)之間轉(zhuǎn)換。每完成一次不同的操作,比如添加或刪除一個化學(xué)基團,就發(fā)生一次這樣的轉(zhuǎn)換。正如算法需要一系列合乎邏輯的順序步驟來找到解決方案一樣,生物分子也需要經(jīng)過許多邏輯的和順序的步驟來催化多步驟的生化反應(yīng)。因此,生物分子的行為方式是因為它們是計算機,它們催化的反應(yīng)是一種計算形式。

    底物掃描

    為了方便起見,圖靈將寫在2D紙上的信息簡化為1D磁帶上包含若干0或1的線性數(shù)組。然后采用連續(xù)的觀察來掃描磁帶,一次一個字符。圖靈認為這樣設(shè)置比較合理,因為冗長的符號很難“一眼”看到。生物分子還通過一種稱為“分子識別”(molecular recognition)的過程掃描底物分子。與圖靈機不同的是,它們一次觀察底物分子上的幾個官能團(符號)。此外,符號不限于二進制(0或1),也不必須以1D形式排列。相反,大自然在3D場景將數(shù)百種不同的化學(xué)基團鏈接,創(chuàng)造出數(shù)千種形狀、大小和電子特性不同的底物。然后,生物分子通過活性位點與底物進行物理結(jié)合,從而一目了然地解碼該3D信息。這些活性位點具有最佳定位的功能基團,可以與底物上的化學(xué)基團相互作用。

    當正確的底物以正確的方向觸及活性位點,就會像鑰匙插入鎖一樣,識別并粘著在生物分子上,進而引發(fā)可產(chǎn)生計算行為的變化。其他分子會被彈開,不起作用。大自然使用分子擴散作為一種非常有效的機制來穿越短距離,也作為回路連接的一種更經(jīng)濟的替代品。蛋白質(zhì)掃描細胞環(huán)境中大量的底物分子,每秒鐘被來自四面八方的底物分子不斷轟擊數(shù)萬億次。

    有序操作

    生物分子通常在一個底物上執(zhí)行一種特定的操作,比如,破壞一個特定的鍵,之后釋放產(chǎn)物。那么,生物分子如何執(zhí)行復(fù)雜計算所需的多個有序操作呢?演化發(fā)明了一個巧妙的解決方案:使一個生物分子的產(chǎn)物成為另一個生物分子的底物,如此進行下去。在生物計算中,磁帶可以從操作一個轉(zhuǎn)換表的一臺機器上掉下來,并跳到操作第二個轉(zhuǎn)換表的第二臺機器上。

    狀態(tài)和記憶

    通過賦予機器多種狀態(tài),圖靈在不知不覺中解釋了生物分子最神秘的特性之一。教科書將DNA等生物分子描述為靜止的物體,但事實并非如此。在短短一秒鐘內(nèi),DNA就會自發(fā)地轉(zhuǎn)變成數(shù)千種不同的結(jié)構(gòu),稱為“構(gòu)象狀態(tài)”(conformational states)。甚至它的化學(xué)成分也可以通過表觀遺傳修飾(epigenetic modifications)而改變。因此,雖然我們可以為一棟建筑繪制建筑藍圖,但當涉及到生物分子的分子世界時,我們需要指定一個具有許多不同構(gòu)象和化學(xué)可能性的景觀,每種可能性都有特定的概率[22]。這種景觀使生物分子能夠在不同的狀態(tài)之間轉(zhuǎn)換,這是圖靈機的基本特征。

    圖靈機模型告訴我們,生物分子之所以可以形成不同的狀態(tài),是因為它們提供了一種記憶形式,使它們能夠在從一個邏輯步驟移動到下一個邏輯步驟時“記住”自己在做什么。事實上,可以存儲的信息量與狀態(tài)數(shù)之間存在簡單的數(shù)學(xué)關(guān)系。一個比特的內(nèi)存有兩個狀態(tài),兩個比特有四個狀態(tài),n個比特有2n個狀態(tài)。因此,具有n個構(gòu)象或化學(xué)狀態(tài)的生物分子可以編碼log2(n)比特或log256(n)字節(jié)的信息(1字節(jié)有28=256個狀態(tài))。在熱力學(xué)領(lǐng)域,log(n)也被稱為熵,是無序的度量。然而,正如我們將看到的,要想把這個潛在的巨大的構(gòu)象狀態(tài)庫作為一種記憶形式來訪問,需要有專門增加給定狀態(tài)概率的方法。

    圖靈還告訴我們,生物分子改變狀態(tài)是為了“改變它們的意識狀態(tài)”。因此,根據(jù)其狀態(tài)的不同,相同的生物分子可以執(zhí)行不同的任務(wù)。例如,DNA的雙螺旋結(jié)構(gòu)用于存儲遺傳信息,但復(fù)制DNA則需要單鏈結(jié)構(gòu)。因為不同的構(gòu)象和化學(xué)狀態(tài)以不同的概率發(fā)生,所以生化反應(yīng)的命運并不是一成不變的,而是可以分支成具有不同概率的幾種不同結(jié)果。這些結(jié)果中包括一些罕見事件,例如復(fù)制DNA時的復(fù)制錯誤,這可能導(dǎo)致對生命和演化至關(guān)重要的突變。由于生物分子的行為和它們所催化的反應(yīng)是概率性的,我們永遠無法預(yù)測動物的行為;我們所能做的就是把概率歸于未來事件。

    5 生物計算(Biological Computation)的一個具體例子

    為了讓大家相信生物分子實際上就是計算機器,我嘗試把生物分子的行為簡化成一個邏輯轉(zhuǎn)換表,就像圖靈為他的機器選擇的那樣。我選擇了馮·諾依曼磁帶自復(fù)制機的生物學(xué)類似物——DNA聚合酶,這種酶的任務(wù)是復(fù)制DNA,在進化中處于中心地位。

    像圖靈機一樣,DNA聚合酶通過連續(xù)觀察來掃描DNA模板鏈中的核苷酸,將遇到的每個核苷酸放入其結(jié)合口袋(binding pocket)中。然后,聚合酶通過與溶液中的核苷酸三磷酸單體分子G、C、A和T物理結(jié)合,和結(jié)合袋中的核苷酸形成堿基對,從而實現(xiàn)對它們的掃描。之后聚合酶合并(“寫入”)結(jié)合的核苷來合成互補的DNA鏈副本。為了完美地復(fù)制DNA,聚合酶必須只合并滿足沃森-克里克配對規(guī)則的單體:如果核苷酸是“G”則結(jié)合“C”,如果是“C”則結(jié)合“G”,如果是“A”則結(jié)合“T”;否則拒絕該單體。但是聚合酶不能“看到”單體;那么它是如何實現(xiàn)這些規(guī)則的呢?

    圖3.(左)典型的沃森-克里克堿基對形成一個矩形,被稱為“沃森-克里克幾何”(Watson–Crick geometry)。(中)非經(jīng)典錯配,如G-T和A-C,形成被稱為“擺動”(wobble)構(gòu)象的非沃森-克里克幾何形狀。(右)錯配,可以通過堿基的互變異構(gòu)化(tautomerization of the bases)(用星號表示)得到類似沃森-克里克幾何的形狀。

    沃森-克里克堿基對都有一個共同的矩形形狀,而所有其他錯配的堿基對,如G-T和A-C形成一個不規(guī)則的幾何形狀(圖3),聚合酶使用這些幾何差異來區(qū)分正確(矩形)和不正確(不規(guī)則)的單體(圖3)。然后,聚合酶周期性地通過一系列構(gòu)象來實現(xiàn)轉(zhuǎn)換規(guī)則“只接受形成矩形堿基對的單體”。下面是它的工作原理。

    圖4. 高保真DNA聚合酶的核苷酸合并機制。注意,這個機制可以因聚合酶而異。給出的實例代表聚合酶β和ε的機制[23-25]。(A)沃森-克里克堿基對的正確合并。(B)誘導(dǎo)擬合子程序增加了高保真聚合酶合并核苷酸的精度。(C)通過堿基互變異構(gòu)實現(xiàn)的錯配可導(dǎo)致復(fù)制錯誤,如果不加以糾正就會導(dǎo)致突變。

    聚合酶構(gòu)象景觀包括:高度可能的“打開”狀態(tài),其中蓋子(lid)打開,允許單體進入;和一個不太可能的“關(guān)閉”狀態(tài),其中蓋子關(guān)閉,阻止單體進入(圖4A)。當正確匹配的核苷酸進入結(jié)合口袋時,它與模板鏈中的核苷酸形成矩形沃森-克里克堿基對。沃森-克里克堿基對傾向于關(guān)閉蓋子,就像蓋子與匹配的容器合在一起一樣。因此,閉合狀態(tài)現(xiàn)在是最可能的構(gòu)象(圖4A)。這就是聚合酶如何執(zhí)行轉(zhuǎn)換規(guī)則:“如果堿基對具有矩形形狀,則關(guān)閉蓋子”:

    就像圖靈機一樣,關(guān)閉狀態(tài)允許聚合酶“記住”:它已經(jīng)消耗了正確的單體。關(guān)閉狀態(tài)存儲這個中間結(jié)果。處于關(guān)閉狀態(tài)的聚合酶在其活性位點有正確的單體結(jié)合作為輸入,轉(zhuǎn)變?yōu)榫哂写呋钚缘臉?gòu)象狀態(tài)(圖4A)。因為只有正確的沃森-克里克堿基對才能通過這一步,它有助于防止錯配的堿基對進行合并。此行為由以下轉(zhuǎn)換規(guī)則描述:

    一旦處于催化活性狀態(tài),單體就被化學(xué)連接并合并到DNA鏈增長中的互補拷貝鏈中(圖4A)。其他所有的步驟都是可逆的,而只有這個步驟不可逆并且消耗能量,因為它需要產(chǎn)生信息并熵減。能量由進入的核苷三磷酸單體以化學(xué)鍵的形式提供,當單體合并時,化學(xué)鍵斷裂,釋放其合并所需的能量(圖4A)。這種能量還可以幫助引導(dǎo)聚合酶沿著DNA磁帶移動,這樣它就可以按照下面所描述的事件序列掃描下一個核苷酸。



    合并的單體作為輸入與未合并的單體不同。合并的單體在催化狀態(tài)下引發(fā)不同的行為,導(dǎo)致聚合酶撤銷催化結(jié)構(gòu)并回到關(guān)閉狀態(tài)(圖4A):

    區(qū)分合并的和未合并的單體在邏輯上很重要,否則,聚合酶將停留在催化狀態(tài),無法回收或無法與后來的單體合并。同樣,合并的單體必須在關(guān)閉狀態(tài)下引發(fā)新的響應(yīng),否則,如果按照未合并的單體處理,聚合酶將在關(guān)閉狀態(tài)和催化狀態(tài)之間一直循環(huán)下去,計算機科學(xué)家稱之為“死循環(huán)”。實際上,關(guān)閉狀態(tài)通過轉(zhuǎn)變?yōu)殚_放狀態(tài)而不是催化狀態(tài)來響應(yīng)合并的單體(圖4A)

    最后,合并的單體還引發(fā)不同于開放狀態(tài)的行為,使得DNA聚合酶沿著DNA移動一個位置以掃描下一個核苷酸(圖4A)

    此時,所有中間結(jié)果都將被丟棄,從而為第二個周期釋放內(nèi)存。這個循環(huán)不斷重復(fù),直到聚合酶遇到空白,復(fù)制過程停止。當DNA聚合酶程序運行時,計算的結(jié)果是DNA鏈的一個互補副本鏈。

    誘導(dǎo)配對的子程序

    像許多酶一樣,聚合酶非常精確,平均每復(fù)制10萬個字母中只會出現(xiàn)一個錯誤(注:這只反映了核苷酸的錯誤結(jié)合,不包括校對)。聚合酶采用另一套涉及不同構(gòu)象狀態(tài)的轉(zhuǎn)換規(guī)則來主動拒絕不正確的單體。許多酶使用的這種子程序被稱為“誘導(dǎo)配對”(induced- fit)。下面是它的工作原理。

    當不正確的單體結(jié)合到聚合酶口袋時,它與模板核苷酸配對,形成不匹配的堿基對,具有不規(guī)則的非矩形形狀。這種錯配使蓋子無法完全閉合(圖4B),它只能部分關(guān)閉以形成“半開”(ajar)的狀態(tài):

    作為構(gòu)象景觀中的另一種狀態(tài),半開狀態(tài)是無活性的,不能合并單體(圖4B)。如果不正確的單體結(jié)合到口袋,聚合酶使用半開狀態(tài)來主動引誘構(gòu)象遠離催化活性的閉合狀態(tài)。然后半開狀態(tài)又恢復(fù)到打開狀態(tài)。

    部分關(guān)閉然后打開的循環(huán)一直持續(xù),直到不匹配的單體最終從口袋里掉出來,這個過程可以重新開始。

    表1. 高保真DNA聚合酶合并核苷酸的轉(zhuǎn)換表,不包含動力學(xué)校對(kinetic proofreading)所需的指令。

    復(fù)制錯誤

    為什么DNA聚合酶在極少數(shù)情況下會出現(xiàn)復(fù)制錯誤呢?這些隨機錯誤使馮·諾依曼的機器實現(xiàn)了開放式的演化。因為生物分子不斷地在各種構(gòu)象狀態(tài)之間扭曲,在分子計算的世界里,機器和輸入并不是一成不變的。在極少數(shù)情況下,它們可以改變。

    例如,在極少數(shù)情況下,G單體可以經(jīng)歷涉及單個氫原子重新定位的化學(xué)變化(圖4C)。所得的烯醇形式 Genol 在化學(xué)上類似于A,因此可以與T配對以形成近乎完美的矩形堿基對(圖4C)[27]。偽裝成矩形堿基對,Genol-T錯配欺騙聚合酶打出錯別字,打出“G”而不是“A”(圖4C)。如果不加以糾正,這樣的錯別字將導(dǎo)致突變。這種“互變異構(gòu)”變化是很難出現(xiàn)的(概率通常為1/100000)[28],這就解釋了為什么突變很少發(fā)生。它們隨機發(fā)生,這就解釋了為什么突變是偶然事件。蛋白質(zhì)的3D結(jié)構(gòu)也有一定概率發(fā)生轉(zhuǎn)變,從而產(chǎn)生不同的結(jié)果。通過這些構(gòu)象波動,生物體成為了非確定性機器。

    執(zhí)行“復(fù)制DNA”算法的DNA聚合酶的邏輯行為可以簡化為一個轉(zhuǎn)換表(表1)。復(fù)制DNA的算法也可以用計算機科學(xué)里的“狀態(tài)圖”(state diagram)(圖5A)來描述,這與生物化學(xué)家所說的“動力學(xué)機制”(kinetic mechanism)有很多共同之處。如果我們深入觀察,每個生物分子都可以簡化成一個描述其邏輯行為的轉(zhuǎn)換表;因此,每個生物分子都可以被描述為一臺計算機器(圖5B)。

    圖5. DNA聚合酶是一種有限狀態(tài)機。(A)DNA聚合酶合并核苷酸的有限狀態(tài)機的狀態(tài)圖。q0、 q1、 q2、 q3和q4分別表示DNA聚合酶的開放、封閉、催化、半開放和停止的狀態(tài)。輸入為MA=匹配(矩形);MM=不匹配(不規(guī)則);IN=合并;BL=空白。注意,q0通過移動位置(Trans)處理輸入“IN”,然后返回到狀態(tài)q0。(B)DNA聚合酶作為計算機的圖形描述。

    6 生命計算機的層級

    計算機科學(xué)家已經(jīng)詳細闡述了一個越來越強大的計算模型的層級結(jié)構(gòu),這些模型采用了越來越復(fù)雜的記憶形式(圖6)。許多這樣的機器都能在生物計算領(lǐng)域找到類似結(jié)構(gòu)(圖6)。

    圖6. 自動機和生命計算機的不同層級。

    在層級結(jié)構(gòu)的底部是“有限狀態(tài)機(FSM,finite--state machine),一個將輸入轉(zhuǎn)換為輸出的轉(zhuǎn)換器(圖6)。FSM處理的信息僅存在于其狀態(tài)和輸入中,它沒有像圖靈機磁帶那樣的外部存儲器。FSM無處不在,從旋轉(zhuǎn)門到洗碗機,自動售貨機。馮·諾依曼也使用有限狀態(tài)機作為工具來闡述他的自我繁殖的抽象模型[4]。雖然看起來像圖靈機,但聚合酶在其運動、寫入和擦除設(shè)備方面受到限制,可以通過FSM模型更好地描述(圖5A和B)。細胞中充滿了FSM,成千上萬的酶和受體將化學(xué)底物、機械運動、電或光轉(zhuǎn)化為同樣多樣化的輸出。因為生物分子的行為可以隨機地改變,所以它們最好由非確定性的FSM模型來描述,其中給定的輸入可以導(dǎo)致具有預(yù)定義概率的多個輸出。

    層級結(jié)構(gòu)中的上一個是“下推”自動機( “pushdown” automata )(圖6),機器采用存儲設(shè)備,在轉(zhuǎn)換期間將符號從“堆?!敝型迫牖蛲瞥?。就像我們在自助餐廳看到的一疊托盤一樣,操作永遠不會在頂部元素之外的元素上工作。生物學(xué)中下推機器的例子包括上文沒有介紹的DNA聚合酶中的動力學(xué)校對(kinetic proofreading)設(shè)備。當DNA聚合酶產(chǎn)生復(fù)制錯誤時,不規(guī)則的錯配被推入規(guī)則的沃森-克里克堿基對堆棧中。遵循一組轉(zhuǎn)換規(guī)則,DNA聚合酶回溯一個或兩個核苷酸,從“堆棧頂部”去除錯誤摻入的核苷酸。RNA聚合酶在產(chǎn)生RNA時也回溯以檢測和響應(yīng)信號[30]。

    再往上的層級是帶有圖靈磁帶的自動機,圖靈磁帶的長度以某種方式限定(圖6),機器可以在其上自由地讀寫符號。生物分子擁有內(nèi)置于其結(jié)構(gòu)中的記憶磁帶,其殘基可以用各種化學(xué)取代基進行修飾,以引起更持久的狀態(tài)變化。例如,在神經(jīng)細胞的特定蛋白質(zhì)殘基上添加和去除磷酸基團會在大腦中編碼長期記憶。添加和刪除將DNA結(jié)合在一起的組蛋白上尾部突出的化學(xué)標記則編碼了“表觀遺傳”指令:這使得有著相同的基于DNA遺傳指令的肝細胞和腦細胞具有了不同的身份標記。

    圖靈機位于這個層級結(jié)構(gòu)的頂端,它可以模擬任何其他計算機(圖6)。通過向核糖體提供適當?shù)膍RNA磁帶,它可以被編程,從而產(chǎn)生出任何生命計算機。確定核糖體和RNA聚合酶是否能夠通過蛋白質(zhì)和RNA來實現(xiàn)通用計算,應(yīng)該是生物計算的目標之一[31]

    7 解碼生命計算

    在證明判定問題無解的過程中,圖靈表明,無論多么強大的計算機程序,都無法預(yù)測另一個程序的命運。用馮·諾依曼的話來說就是“你無法構(gòu)建一個能預(yù)測任意自動機行為的自動機”。斯蒂芬·沃爾夫勒姆(Stephen Wolfram)通過他的“計算不可約性”(computational irreducibility)原則闡述了這一觀點,該原則指出,一旦計算達到一定的復(fù)雜程度,就不能再走捷徑來理解計算的結(jié)果——完全理解輸出的唯一方法是完全運行程序[32]。而運行這個程序正是大自然在過去38億年的進化中一直在進行的實驗。每一個子代都運行一個新的程序,通過反復(fù)試錯,演化戰(zhàn)勝了判定問題。而這個過程必須付出的代價則是基因組并不與我們同在,我們只看到了所有存在過的生物程序中極小的部分。

    假設(shè)生物體是復(fù)雜計算的產(chǎn)物。在這種情況下,不可能通過測量生物化學(xué)過程的輸入和輸出來理解和計算生物體的行為,也不可能走捷徑來發(fā)現(xiàn)它們之間的關(guān)系;這種方法肯定會失敗。然而,由于人類基因組測序和人工智能帶來的技術(shù)革命,這種“大數(shù)據(jù)”科學(xué)模式正在滲透到生物學(xué)的許多領(lǐng)域。用西德尼·布倫納(Sydney Brenner)的話來說,結(jié)果是我們“淹沒在數(shù)據(jù)的海洋中,但仍然渴望知識”。

    知識要求我們將細胞內(nèi)的每個生物分子還原成適當?shù)霓D(zhuǎn)換表,然后完整地運行程序。我們預(yù)計生物分子采用少量的轉(zhuǎn)換規(guī)則,這些規(guī)則可以以各種組合編織在一起,來構(gòu)建活生物體中的所有生化過程。這類似于系統(tǒng)生物學(xué)發(fā)現(xiàn)的相對較小的網(wǎng)絡(luò)模體(motif),它們似乎是轉(zhuǎn)錄網(wǎng)絡(luò)的基本生物磚[20]。確定轉(zhuǎn)換規(guī)則應(yīng)該是生物計算領(lǐng)域的目標之一。

    知識還要求我們理解如何基于生物分子的序列和物理定律來實施轉(zhuǎn)換規(guī)則,這些規(guī)則決定了生物分子的構(gòu)象行為以及它如何與周圍環(huán)境相互作用。從序列中預(yù)測轉(zhuǎn)換規(guī)則應(yīng)該是目標,而不是主導(dǎo)結(jié)構(gòu),這是最近人工智能工作的重點[33]。有了適當?shù)霓D(zhuǎn)換表,我們可以更有效地將結(jié)構(gòu)生物學(xué)與系統(tǒng)生物學(xué)結(jié)合起來,更好地計算細胞和整個生物體的行為,并合理地對生物學(xué)進行重新編程,以滿足技術(shù)、健康和社會需求。

    通過將生物學(xué)簡化為計算形式,計算機科學(xué)這整個領(lǐng)域都可以被用來將生物學(xué)系統(tǒng)化。例如,計算復(fù)雜性領(lǐng)域可用于研究各種生化反應(yīng)中時間、內(nèi)存和能量之間的權(quán)衡,并分類和探索生物計算需要解決的多樣性問題。同時,計算機科學(xué)家可能能夠挖掘生命計算中的自然宇宙,利用數(shù)十億年來的演化來發(fā)現(xiàn)新的計算模型或算法,甚至可能回答數(shù)學(xué)和邏輯方面的問題。畢竟,神經(jīng)元的行為建模正是神經(jīng)科學(xué)家Warren McCulloch和邏輯學(xué)家Walter Pitts開發(fā)人工神經(jīng)網(wǎng)絡(luò)的靈感來源,為人工智能奠定了基礎(chǔ)[34]。生物體如何利用量子力學(xué)[35]還可以為建造下一代量子計算機提供重要線索。

    展望未來,我們可能會發(fā)現(xiàn)生物學(xué)和計算機科學(xué)是緊密相連的,它們是同一門學(xué)科,一門研究機器行為的學(xué)科。

    注釋:本文在翻譯 biological computation 時做了區(qū)分,認為“生物計算”和“生命計算”是不同的概念。生命計算強調(diào)以生命系統(tǒng)為藍本的、計算的整體設(shè)計,而生物計算強調(diào)具體的以DNA、蛋白質(zhì)大分子等為元件,它的原理可以和生命系統(tǒng)沒有關(guān)系,而單純使用計算機原理或簡單數(shù)學(xué)原理。

    參考文獻

    [1] A. Bhattacharya, The Man From the Future (Norton, 2022).

    [2] N. Wiener, Cybernetics or Control and Communication in the Animal and the Machine (Hermann & Cie/The Technology Press/John Wiley & Sons, 1948).

    [3] L. A. Jeffress, Cerebral Mechanisms in Behavior: The Hixon Symposium (Wiley, 1951), p. 311.

    [4] J. V. Neumann, Theory of Self-Reproducing Automata, A. W. Burks, Ed. (University of Illinois Press, 1966).

    [5] A. M. Turing, On computable numbers, with an application to the Entscheidungs problem. Proc. Lond. Math. Soc. 42, 230–265 (1936).

    [6] K. G?del, über formal unentscheidbare S?tze der Principia Mathematica und verwandter Systeme I. Monatshefte für Mathematik und Physik 38, 173–198 (1931).

    [7] F. Crick, Central dogma of molecular biology. Nature 227, 561–563 (1970).

    [8] J. D. Watson, F. H. Crick, Molecular structure of nucleic acids; a structure for deoxyribose nucleic acid. Nature 171, 737–738 (1953).

    [9] L. Pauling, R. B. Corey, A proposed structure for the nucleic acids. Proc. Natl. Acad. Sci. U.S.A. 39, 84–97 (1953).

    [10] S. Brenner, Interview with Sydney Brenner by Soraya de Chadarevian. Stud. Hist. Philos. Biol. Biomed. Sci. 40, 65–71 (2009).

    [11] S. Brenner, Turing centenary: Life’s code script. Nature 482, 461 (2012).

    [12] F. Jacob, J. Monod, Genetic regulatory mechanisms in the synthesis of proteins. J. Mol. Biol. 3, 318–356 (1961).

    [13] C. H. Bennett, Logical reversibility of computation. IBM J. Res. Dev. 17, 525–532 (1973).

    [14] L. M. Adleman, Molecular computation of solutions to combinatorial problems. Science 266, 1021–1024 (1994).

    [15] Q. Liu et al., DNA computing on surfaces. Nature 403, 175–179 (2000).

    [16] D. Faulhammer, A. R. Cukras, R. J. Lipton, L. F. Landweber, Molecular computation: RNA solutions to chess problems. Proc. Natl. Acad. Sci. U.S.A. 97, 1385–1389 (2000).

    [17] Y. Benenson, Biomolecular computing systems: Principles, progress and potential. Nat. Rev. Genet. 13, 455–468 (2012).

    [18] D. Murray, D. Petrey, B. Honig, Integrating 3D structural information into systems biology. J. Biol. Chem. 296, 100562 (2021).

    [19] H. V. Westerhoff, B. O. Palsson, The evolution of molecular biology into systems biology. Nat. Biotechnol. 22, 1249–1252 (2004).

    [20] U. Alon, Network motifs: Theory and experimental approaches. Nat. Rev. Genet. 8, 450–461 (2007).

    [21] A. M. Turing, The chemical basis of morphogenesis. 1953. Proc. R. Soc. Lond. B Biol. Sci. 237, 37–72 (1952).

    [22] H. Frauenfelder, S. G. Sligar, P. G. Wolynes, The energy landscapes and motions of proteins. Science 254, 1598–1603 (1991).

    [23] S. S. Patel, I. Wong, K. A. Johnson, Pre-steady-state kinetic analysis of processive DNA replication including complete characterization of an exonuclease-deficient mutant. Biochemistry 30, 511–525 (1991).

    [24] M. E. Dahlberg, S. J. Benkovic, Kinetic mechanism of DNA polymerase I (Klenow fragment): Identification of a second conformational change and evaluation of the internal equilibrium constant. Biochemistry 30, 4835–4843 (1991).

    [25] R. D. Kuchta, V. Mizrahi, P. A. Benkovic, K. A. Johnson, S. J. Benkovic, Kinetic mechanism of DNA polymerase I (Klenow). Biochemistry 26, 8410–8417 (1987).

    [26] D. E. Koshland, Application of a theory of enzyme specificity to protein synthesis. Proc. Natl. Acad. Sci. U.S.A. 44, 98–104 (1958).

    [27] J. D. Watson, F. H. Crick, Genetical implications of the structure of deoxyribonucleic acid. Nature 171, 964–967 (1953).

    [28] I. J. Kimsey et al., Dynamic basis for dG*dT misincorporation via tautomerization and ionization. Nature 554, 195–201 (2018).

    [29] J. J. Hopfield, Kinetic proofreading: A new mechanism for reducing errors in biosynthetic processes requiring high specificity. Proc. Natl. Acad. Sci. U.S.A. 71, 4135–4139 (1974).

    [30] E. Nudler, RNA polymerase backtracking in gene regulation and genome instability. Cell 149, 1438–1445 (2012).

    [31] H. Akhlaghpour, An RNA-based theory of natural universal computation. J. Theor. Biol. 537, 110984 (2022).

    [32] S. Wolfram, A New Kind of Science (Wolfram Media, Champaign, IL, 2002).

    [33] J. Jumper et al., Highly accurate protein structure prediction with AlphaFold. Nature 596, 583–589 (2021).

    [34] W. S. McCulloch, W., Pitts, A logical calculus of ideas immanent in nervous activity. Bull. Math. Biophys. 52, 99–115 (1943).

    [35] J. McFadden, J. Al-Khalili, The origins of quantum biology. Proc. Math. Phys. Eng. Sci. 474, 20180674 (2018).

    本文經(jīng)授權(quán)轉(zhuǎn)載自微信公眾號“集智俱樂部”。

    特 別 提 示

    1. 進入『返樸』微信公眾號底部菜單“精品專欄“,可查閱不同主題系列科普文章。

    2. 『返樸』提供按月檢索文章功能。關(guān)注公眾號,回復(fù)四位數(shù)組成的年份+月份,如“1903”,可獲取2019年3月的文章索引,以此類推。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有