站在巨人的肩膀上——計算導論

1. 計算導論

1.1 計算機的基本原理

1.1.1 從數學危機到圖靈機:

  • 第一次數學危機:畢達哥拉斯學派認爲,「一切數均可表示爲整數或整數之比」,但是發現存在一些數,它不是整數,也不可用整數之比表示,希帕索斯提出:邊長爲1的正方形其對角線是多長呢?這一問題引發了第一次數學危機(希帕索斯悖論)
  • 第一次數學危機的解決:實數理論建立後
  • 第二次數學危機:牛頓和萊布尼茨發現了微積分,其理論建立在無窮小的分析之上。貝克萊悖論(無窮小時而爲0,時而不爲0)。
  • 第二次數學危機的緩解:在實數理論的基礎上重建了極限論
  • 第三次數學危機:康托爾創立了集合論,羅素提出理髮師悖論。引起思考:是否存在一個完備的系統,從而建立整個數學大廈?哥德爾提出不完備性定理,該定理結束了關於數學基礎的爭論,宣告了把數學徹底形式化的願望是不可能實現的。雖然不存在完備的系統,但是,可證真問題和既不可證真也不可證僞的邊界在哪呢?這便是可計算問題,那麼,如何判斷一個問題是可計算問題還是不可計算問題呢?一個研究思路是:模型法。圖靈提出了這樣一個模型(圖靈機)

關於圖靈機:

圖靈機的構成:存儲帶、控制器(包含讀寫頭)
圖靈機的工作機理:初始化,反覆執行下列操作直到停機(讀出存儲帶上的字符,根據當前狀態和讀取到的字符,找到相應的程序語句,根據相應程序語句,做三個動作,寫入、改變狀態、移動)
圖靈機的意義:對於一個問題A,如果能找到一個圖靈機,得出對應的符號序列B,那麼從A到B就是可計算的,否則,該問題不可計算。
圖靈機的理論意義:給出了一個通用的計算模型,引入了通過「讀寫符合-改變狀態」進行計算的思想

1.1.2 計算機爲什麼能計算?

回答這個問題,需要解決三個問題:

  • 數在計算機中是如何表示的?

    二進制(十進制轉二進制:除2取餘法)

  • 邏輯上數是如何計算的?

    布爾代數。對於加法,本位可由異或產生,進位由與運算產生。

  • 物理上數的計算是如何實習的?

    因爲參與運算的數可以轉換位二進制數,二進制數運算可以運用基本的布爾運算實現,基本的布爾運算都可以由電路實現,因此,電路能算數

1.2 計算機的發展趨勢

1.3 程序運行的基本原理

計算機爲什麼能計算?用二進制表示數據、用布爾代數進行運算、用電路實現布爾運算,故電路可進行計算

1.3.1 馮諾依曼式計算機

馮諾依曼的思路:通過指令控制計算機
馮諾依曼式計算機組成:控制器、運算器、存儲器、輸入設備、輸出設備

1.3.2 存儲器種類及特點

  • 寄存器

    CPU內部,用於存放待操作數和結果。工作速度與CPU運算部件節拍一致

  • 高速緩存(Cache)

    通常在CPU內部,用做數據緩衝區。CPU內部的叫內部高速緩存,主板上的緩存叫外部高速緩存

  • 內存

    CPU裏想放但放不下的部分

  • 外存

以上,形成分層次存儲體系。CPU讀取數據時,先從緩存中查找,找到則立即讀取,否則從內存中讀取並送到CPU處理,同時把這個數據所在的數據塊調入緩存

CPU對數據的訪問:局部性原理(時間局部性和空間局部性)

1.3.4 存儲器的原理與類型

存儲一位的電路:靜態RAM的六管基本存儲單元

在這裏插入圖片描述在這裏插入圖片描述
存儲器的類型:

  • RAM
    • DRAM(Dynamic RAM)(可隨機存器,但必須週期性的刷新以保持存儲內容,可用於製造內存)
    • SRAM(Static RAM)(可隨機存取,不需要週期性刷新的存儲器)
  • ROM
    • ROM(掩膜ROM)
    • PROM(熔絲PROM)
    • EPROM(紫外線EPROM)
    • EEPROM(電可擦除ROM)
    • Flash EPROM(快速可編程只讀存儲器)

地址與數據單元:引入(爲什麼32G的CPU最大隻能管理4G內存?)

2^32 = 4G

1.3.5 CPU指令的執行

CPU可以執行哪些指令?

CPU只能執行指令集中的指令。指令:表現爲二進制碼,長度隨CPU類型而不同,包含1個或多個字節,分爲指令碼操作數

1.3.6 程序的執行

源程序->編譯->彙編->機器碼