01.計算機體系結構概述.md

1. 計算機的基本構成

  1. 處理器:控制計算機操作,執行數據處理等功能。
  2. 內存:存儲數據和程序,是易丟失的。
  3. 輸入/輸出模塊(I/O): 在計算機和外部環境之間移動數據。外部環境有各種外部輔助設備,比如硬盤,顯示器,鼠標。
  4. 系統總線:在處理器,內存,輸入輸出設備之間提供通信的設施。

1.1 cpu概覽

cpu處理器的一種功能是和存儲器交換數據,因此他通常使用兩個內部寄存器:
1.存儲器地址寄存器(Memory Address Register):用於確定下一次讀寫的存儲器地址。
2.存儲器緩衝寄存器(Memory Buffer Register): 存放從存儲器讀進來的數據或者是要寫入到寄存器中的數據。在這裏插入圖片描述

同樣,還有一組寄存器用來和輸入和輸出設備
1.輸入輸出地址寄存器(I/O Address Register ): 用於確定一個特定的輸入輸出設備
2.輸入輸出緩衝寄存器(I/O Buffer Register): 用於在輸入輸出模塊和處理器間交換數據
還有兩個比較重要的寄存器
1.程序計數器PC
2.指令寄存器IR

2. 指令的執行過程

2.1 指令週期

處理器執行的程序都是由一些列的指令構成的。最簡單的指令處理包括兩步,
1.處理器從存儲器中一次讀取一條指令。
2.然後執行這條指令。
  程序的執行就是不斷的取指令和執行指令的過程。指令的執行過程可能有很多操作,這個取決於指令。
上面描述的單個指令需要的處理稱爲一個指令週期。每個指令週期分爲取指階段和執行階段。
在每個指令週期開始的時候,處理器從存儲器讀取一條指令,這條指令在存儲器中的地址在PC(程序計數器)中保存。在典型的處理器當中,程序計數器總是保存下一條指令在存儲器的地址。

一般一條完整的指令包括:取指週期、執行週期、中斷週期
CPU採用中斷方式實現主機與I/O交換信息時,CPU在每條指令執行階段結束前, 都要發中斷查詢信號,以檢測是否有某個I/O提出中斷請求。如果有請求,CPU則要進入中斷響應階段,又稱中斷週期。在這階段, CPU必須將程序斷點保存到存儲器中。
圖片
下面講中斷的時候會再介紹到這一點
可以參考這篇文章加深對取指週期,執行週一的理解
指令週期

2.2 指令分類

指令可以大體分爲以下幾類

  1. 處理器存儲器數據交換
  2. 處理器I/O設備數據交換
  3. 數據處理,處理器執行很多於數據相關的算術操作或者邏輯操作
  4. 控制,某些指令可以改變執行的順序,設置PC中的地址

2.3 指令的格式

指令包括兩個部分,操作碼+操作數,總長一般是cpu能夠處理的字的長度。
作碼定義了cpu將對操作數做怎樣的識別和操作。

2.4 參考其他週期

指令週期 :CPU從內存取出一條指令並執行這條指令的時間總和。
CPU週期 :又稱機器週期,CPU訪問一次內存所花的時間較長,因此用從內存讀取一條指令字的最短時間來定義。
時鐘週期: 通常稱爲節拍脈衝或T週期。一個CPU週期包含若干個時鐘週期

3. 中斷

3.1 中斷的分類

  1. 程序中斷:在某些條件下由指令執行的結果產生,如算術溢出,除數爲0,試圖執行一些非法的機器指令及訪問不允許的存儲器的位置
  2. 時鐘中斷:由處理器內部的計時器產生,控制操作系統以一定的規律執行函數
  3. I/O中斷:由IO控制器產生,用於發信號通知一個操作正常完成或出現的各種錯誤條件
  4. 硬件失效中斷:由一些比如掉電或者發生存儲器奇偶校驗錯誤之類的故障產生

中斷最初是用於提高cpu使用率的一種手段。

3.2 中斷和指令週期

中斷要想得到生效,cpu就必須要響應中斷,爲了適應中斷的產生,cpu的指令週期中增加一箇中斷檢測的階段。
過程是: 取指週期–> 執行週期—>中斷檢測週期—>取指週期
在取指週期和執行週期階段,因爲cpu不會響應中斷,所以這個階段程序也是不會被打斷的。處理器在響應中斷前一定結束了當前指令的執行。

當然,cpu也是可以設置屏蔽中斷的,設置了屏蔽中斷,就不會響應中斷了,這個在單核計算機中可以用來做原子操作。因爲不會發生線程的切換了。

3.3 中斷響應的一般過程

以I/O操作舉例

  1. 設備給處理器發起一箇中斷信號
  2. 處理器在響應中斷前結束當前指令的執行
  3. 處理器進行中斷測試,確定存在未響應的中斷,並給提交中斷的設備發送確認信號,確認信號允許該設備取消他的中斷信號
  4. 保護斷點,即保存下一將要執行的指令的地址,就是把這個地址送入堆棧。
  5. 尋找中斷入口,根據5個不同的中斷源所產生的中斷,查找5個不同的入口地址。以上工作是由計算機自動完成的,與編程者無關。在這5個入口地址處存放有中斷處理程序(這是程序編寫時放在那兒的,如果沒把中斷程序放在那兒,就錯了,中斷程序就不能被執行到)。將中斷程序入口的地址放入程序計數器。
  6. 執行中斷處理程序。
  7. 中斷返回:執行完中斷指令後,就從中斷處返回到主程序,繼續執行。

3.4 多箇中斷

處理多箇中斷的時候,有兩種選擇。

  1. 在處理中斷的時候屏蔽對別的中斷的響應。
  2. 中斷分級,級別高的中斷可以再中斷級別低的中斷。

4. 緩存

  緩存一般都是做了分級處理,越快越貴,緩存對於操作系統來說是透明的,是由硬件來管理的。
在多核計算機或者對稱多處理器中,每個處理器至少有一個專用的一級緩存,高速緩存就帶來了一些新的問題,由於每個本地緩存包含了一部分內存的副本,如果修改了高速緩存中的一個字,就會使該字在其他緩存中也變得無效。
  爲了避免這種情況,在發生更新的時候必須告訴其他處理器發生了更新。這個問題稱爲高速緩存一致性問題。通常通過硬件而非操作系統來解決這個問題。
這篇文章介紹了cpu緩存結構和MESI協議,該協議用來保證高速緩存的一致性。

5. 直接內存存取DMA技術

DMA技術主要是應對爲了在內存和io之間傳輸數據的時候必須要經過cpu這個中間人,而cpu實際上不做任何工作,因此可以通過DMA模塊來輔助完成,效率更高,而且cpu也被解放出來了。

6. 計算機的並行處理手段

6.1. 對稱多處理器SMP:

6.1.1 SMP的架構

  1. 具有兩個及其以上的性能相當的處理器
  2. 這些處理器共享內存和IO設備,並通過總線或其他內部互聯方式互聯,因此每個處理器的大體訪存的時間大體相同
  3. 所有處理器合一執行相同的功能,因此是對稱的
  4. 整個系統由一個統一的操作系統控制,該操作系統爲多個處理器極其程序提供作業,進程,文件,數據元素等各個級別的交互。

6.1.2 SMP的優點

性能好,可伸縮性好,等等

6.1.3 SMP各自擁有獨立的緩存導致的數據一致性問題:

這個在上面介紹緩存的時候也已經介紹過了,需要從硬件層面進行保證
這裏介紹的也很好。

6.2. 多核計算機

  多核計算機是將多個處理器組裝在同一片硅上的計算機。又稱爲芯片多處理器。每個核上通常包含了一個獨立處理器的所有零件,如寄存器,ALU,流水線硬件,控制單元,以及L1緩存和數據高速緩存器。

6.2.1 多核和smp之間的區別

smp是個處理器:多個單核處理器,就是說電腦和處理器有多個,但是這個電腦的處理器是單核的;
多核處理器:單個多核處理器,也就是說電腦有一個處理器芯片,但是這個處理器芯片上是多核的;

二者的主要區別實際上體現在處理器的通信效率上面:
  對於多個處理器而言,它們在執行命令的時候多個處理器之間的通信手段是電腦主板上的總線;
而對於多核處理器而言,多個核心處理器之間通信時通過CPU內部總線進行信息的交互的(快速通道互聯QPI),核與核之間實現的是點對點的連接,每次傳輸16位的情況下,可以實現12.8g/s的傳輸速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章