1. 程式人生 > >【計算機原理】CPU部分.md

【計算機原理】CPU部分.md

工作 信號 通過 臃腫 流水線 處理 2.6 操作 ade

本文由CPU阿甘改編而得,主要講的是系統啟動和程序執行時CPU做的工作。

CPU的構成

中央處理器(CPU,Central Processing Unit)由運算器、控制器、Cache等。

  • 控制器:主要是對指令進行譯碼。

  • 運算器:主要是執行定點或者浮點運算等。

  • 寄存器:主要功能是保存計算的中間結果

可以看出CPU的主要功能是接收指令,執行指令。不過CPU不能保存指令。

最大的優點在於速度快,以ns為單位,內存比它慢了100倍,硬盤比它慢了1000多萬倍。

技術分享圖片

下面我們主要介紹一下計算機從加電到加載操作系統中,CPU主要做了什麽事情。

技術分享圖片

啟動

當計算機上電了以後,CPU就先會執行內存最頂端的指令,現是一條跳轉指令

,所以會去執行BIOS裏面的代碼。

我們知道BIOS的主要功能是系統自檢,看看內存、硬盤、顯卡等是否有問題。自檢完成以後,會產生中斷,BIOS會告訴CPU是多少號中斷。

中斷了以後,CPU怎麽知道去哪裏執行響應中斷的指令呢?我們可以用一張表來保存中斷指令的響應代碼,但是為了讓這張表不那麽臃腫,可以讓這張表只保存響應代碼的入口地址

比如

中斷類型號 響應指令的地址
0x01 地址A
0x02 地址B
…… ……

這張表就稱為中斷向量表,保存的是響應中斷的指令的入口地址,類似於響應代碼的房間號。

CPU可以通過中斷向量表查找到對應的指令,這條指令的目的是把磁盤的第一扇區(磁盤的BIOS)運到內存中

到目前為止,硬件的初始化就完成了,下面應該加載操作系統

技術分享圖片

運行程序

操作系統加載入內存中以後,會接管整個系統的管理工作。

下面我們來談一下如何運行程序。

首先操作系統會為CPU分配進程,不過對CPU而言,它只關心自己的寄存器程序計數器

  • 寄存器:工作現場,包括一些計算的中間結果

  • 程序計數器:要執行的下一條指令的地址。

要運行程序,首先需要從硬盤上加載程序。但是從硬盤上讀程序實在太慢,CPU沒有必要一直等著它,完全可以異步處理。

硬盤把返回的數據通過直接內存訪問(DMA)把數據裝載到內存中。這樣CPU就解放出來,切換到另一個進程裏面,當然相關的運行環境(寄存器、程序計數器)發生了改變。

但是上一個進程不可能放棄不執行了吧,所以等到當上一個進程的數據已經裝載到了內存以後,CPU會收到一個中斷,這樣就可以切換回去了。

總結一下CPU的主要工作是,從內存中取出指令,進行譯碼,分解成為一系列的微操作,然後發出各種控制命令。

對CPU而言,主要關心的是它的寄存器和程序計數器,其中寄存器保存了計算的中間結果,而程序計數器可以用告訴CPU下一條指令去那裏執行。
技術分享圖片

性能參數

CPU的主要性能參數有:

  • 主頻:表示CPU內數字脈沖信號震蕩的速度,與實際的運算速度沒有直接的聯系,比如1GHz的Itanium芯片與2.66GHz的至強芯片一樣快,因為CPU的運算速度除了有主頻的因素,還有CPU的流水線、總線等各方面的影響。

  • 外頻:CPU的基準頻率,MHz,可以決定主板的運行速度,如果把CPU超頻了,可以CPU與主板會異步運行,所以整個系統有可能不穩定,一般來說服務器CPU不允許超頻。

  • 總線頻率:指的是前端總線的頻率,而前端總線指的是CPU與北橋之間的總線。

    那麽總線頻率其實直接影響CPU與內存的之間的交互速率,即每秒CPU能接收的數據傳輸量。這點與外頻不一樣,外頻是整塊主板的運行速度。

  • Cache:因為CPU與內存之間存在速度差,同時我們發現程序的加載有局部性的特點,也就是說一個內存位置被訪問了,附近的位置很快也會訪問到。那麽我們完全可以把內存中的部分代碼提前加載到Cache裏面。

    既然Cache的主要作用是CPU與內存的緩沖層,那麽Cache的速度應該接近於CPU,基本上是與CPU同頻運作。

    緩存都集成在CPU芯片上,而CPU單位面積的價格很昂貴,Cache一般都很小。

技術分享圖片

指令集

我們知道CPU的主要功能是解析指令,執行指令,也就是說CPU是靠一條一條的指令來計算和控制整個系統的。

也就是說不管是什麽CPU,都有與之相匹配的指令系統。常用的指令集有兩種

  • 復雜指令集:一般來說程序的指令是按照順序串行執行的,而指令中的各個操作也是串行執行的。這樣控制簡單,但是利用率不高。

    x86架構的CPU主要使用的就是復雜指令集,AMD屬於後起之秀,所以一定會兼容x86架構,它也是復雜指令架構的。

  • 精簡指令集:

    復雜指令集最大的缺點在於微處理器太過復雜,所以研發成本高。而精簡指令集,顧名思義,其指令系統得到大量的精簡,而且指令格式統一,所以可以使用流水線結構,處理速度就上去了。

    服務器中采用RSIC指令的CPU主要有:PowerPC、MIPS處理器。
    技術分享圖片

處理技術

本章主要介紹一下CPU體系架構裏面常用的技術

流水線

每條指令都會經過取指(Fetch),譯碼(D1, main decode),轉址(D2, translate),執行(EX, execute),寫回(WB)結果等步驟。

那麽當CPU預取完畢,進行譯碼的時候,預取部分的電路單元其實是空閑的。那麽能不能讓下一條指令進來執行預取的過程呢?答案是完全可以。

如下圖所示,我們可以每過一個周期放入一條指令,這樣在第5個時刻,最開始放入的指令其實已經執行到了最後一步WB了,第2條進入執行的指令比它晚一拍,執行到了EX上,其他的一次類推。

這樣不斷的有新的指令進入,同一時刻5條指令都在執行,只是說他們執行的階段不一樣。這樣就實現了並行處理。

技術分享圖片

【計算機原理】CPU部分.md