處理器結構

處理器硬件結構

現代計算機結構處理過程:

  • 輸入設備輸入數據,存儲器存儲輸入數據
  • 控制器接收指令控制存儲器將數據送入ALU進行計算
  • 控制器接收指令將計算後的結果存入存儲器
  • 控制器接收指令將存儲器數據輸出到輸出設備

馮諾依曼結構

所有複雜運算都是通過簡單運算組合而成。而CPU中最核心的部分爲ALU。

ALU(算數邏輯單元):主要由與門和或門構成,用來進行二進制數據的計算。

處理器模型

ISA:指令集體系架構,也是目前使用的最廣的CPU體系架構。主要包括一套指令集以及一些寄存器,而程序員針對這些指令集以及寄存器進行編程,而不需要關心具體的硬件。

在PC上,大部分用的Intel和AMD處理器都是基於x86指令集,而嵌入式設備上的程序大部分使用的AMR指令集。

處理器

  • 指令集體系結構:x86,arm,armv7,mips等
  • 處理器微架構:NetBurst等
  • 處理器物理實現:20nm/40mn的集成電路工藝,電子計算機,量子計算機等

而處理器除了內核外,還有其他很多東西,如I/O,電源,電池,時鐘等等。

處理器結構

CPU硬件指標

MIPS:每秒執行指令數,而實際中該值會偏低,因爲實際情況中會遇到並行,Cache Miss,通信效率,總線衝突等問題。

功耗:現在設備中CPU與顯卡功耗非常大

指令集體系結構

處理器模型: 例如C=A+B;語句:

  • 操作數:C,B,A均爲操作數,操作數存儲在主存中

由於從Memory訪問數據很慢,於是CPU在ALU附近加入了寄存器,用來存儲計算中產生的中間數據,避免將這些數據存入主存再讀取的耗時

  • 操作碼(op):+爲操作碼

處理器模型

對於C=A+B可以分爲以下指令執行:

load R3,#0;// 加載#0地址存儲的數據到R3寄存器
load R2,#1;   // 加載#1地址存儲的數據到R2寄存器
add R0,R3,R2;// 將R3,R2寄存器的數據相加保存到R0寄存器中
store R0,#2;// 將R0寄存器中的數據保存到#2地址

其中load,add,store爲指令,R0,R1,R2,R3爲寄存器,#1,#2爲主存地址

這種指令的寫法就是彙編語言,處理器公司也會對外發布指令集手冊,而這手冊也是使用彙編語言來描述。

而計算機無法理解loadstore等指令,也不知道具體的寄存器爲R1R0,計算機只知道0和1,所以最終編譯過後每一條指令均如01011101011001,代表着load R3 ,#0;

最初程序員直接寫彙編語言來進行程序開發,直到Fortran的出現,纔出現了高級語言,能讓程序員從解放出來。

高級語言的轉換

指令集的發展

CISC:複雜指令集,提供了很多與高級語言以及特性相關的指令(如複雜的尋址模式,直接對應的指針運算)等,導致指令集非常龐大。而x86的CPU仍然在使用CISC指令集。

RISC:精簡指令集,相對於CISC來說減少了許多直接的指令,只保留了常用的簡單的指令。如Mips,Arm,Power等CPU使用RISC指令集。

RISC使得CPU不需要浪費大量的晶體管來做複雜而又較少使用的功能,X86的指令集有1000多頁,而RISC指令集手冊只有200頁左右,並且精簡指令集的大部分指令都可以在1個cycle執行完,並且使用了定長編碼,使得指令譯碼的過程變得簡單,並且CPU的頻率得到了大幅度的提升

可是CISC的一條指令對應着多條RISC指令,所以在執行復雜操作的時候,RISC指令集使得CPU與存儲器之間的數據交換增多,而存儲器的速度遠遠低於CPU執行速度,比較容易導致性能惡化

PS:芯片的製程工藝(32nm,22nm)決定了芯片內部晶體管的數量,晶體管數量越多,則芯片能完成的任務也就越多

手機上的CPU大部分用的是ARM,無論是高通還是TI,還是三星使用的還是ARM內核。因爲ARM在設計之初就將低功耗,低成本的優先級放在了高性能之前。

ARM自己不生產芯片,而是向半導體公司提供指令集與內核授權,讓半導體公司生產ARM指令集的芯片。

計算機字長(Word)

16位計算機的字長爲16bit。 32位計算機的字長爲32bit。 64位計算機的字長爲64bit。

字長代表着處理器一次處理數據的長度,主要由運算器和寄存器決定。

32位處理器,每個寄存器都可以存儲32位的數據,而加法器可以支持兩個32位的數據相加

image.png

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