天天看點

計算機層次結構

如果要計算機處理廣泛的問題,那麼它必須能夠執行用不同語言編寫的程式,如C,C++,java,kotlin等。程式設計經驗告訴我們,當一個問題比較大時,我們應該将其分解,然後逐個解決。在程式設計中,我們習慣把一個大問題分解成多問題,然後分别為每一個子問題設計一個子產品。每一個子產品處理特定的任務,子產品之間的通信通過接口來實作。

根據抽象原理,我們可以想象機器是從一個層次結構中建構起來的。在這個層次結構中,每個層次都有一個特定的功能,并且作為一個不同的假想機器存在。我們把每一級的假想機器為虛拟機。每一級的虛拟機都執行自己特定的指令集,在需要時調用較低級别的機器來執行任務。

第6級,使用者級

由應用程式組成。在這個級别上,我們運作諸如文字處理、圖形軟體包或遊戲之類的程式。較低的級别在使用者級别幾乎是不可見的。

第5級,進階語言級

包括C、C++、Java、 Kotlin等進階語言。這些語言必須(使用編譯器或解釋器)翻譯成機器可以了解的語言。編譯語言被翻譯成彙編語言,然後被彙編成機器代碼(它們被翻譯到下一個較低的級别。)這個級别的使用者幾乎看不到較低的級别。即使程式員必須知道資料類型和這些類型的可用指令,她也不需要知道這些類型具體是如何實作的。

第4級,彙編語言級

包含某種類型的彙編語言。如前所述,編譯後的進階語言首先被翻譯成彙編語言,然後直接翻譯成機器語言。這是一種一對一的翻譯,意味着一條彙編語言指令被翻譯成一條機器語言指令。通過分離層次,我們可以減少進階語言(如C++)和實際機器語言(包括0和1)之間的語義鴻溝。

第3級,系統軟體級

用于處理作業系統指令。這個級别負責多道程式設計、記憶體保護、程序同步和其他各種重要功能。通常,從彙編語言翻譯成機器語言的指令都是在未經修改的情況下通過這個級别的。

第2級,指令集體系結構(ISA)或機器級

由計算機系統的特定體系結構所識别的機器語言組成。在硬連線計算機上用計算機真正的機器語言編寫的程式可以由電子電路直接執行,而無需任何解釋器、轉換器或編譯器。

第1級:控制單元級

控制單元用于確定指令被正确解碼和執行,以及在應該移動資料的時間,把資料移動到應該移動的位置。控制單元一次一條地解釋從上一層級傳遞給它的機器指令,進而執行所需的操作。控制單元可以用兩種方式實作:一是硬接線的,二是微程式的。

第0級:數字邏輯層

繼續閱讀