導(dǎo)讀
CPU(中央處理器),也被稱為微處理器,是計算機(jī)的心臟和/或大腦。本文讓我們一起深入了解計算機(jī)的核心,以幫助我們高效地編寫計算機(jī)程序。
以下為譯文:
“工具通常比機(jī)器簡單,通常用手來使用,而機(jī)器通常由動物或蒸汽動力驅(qū)動?!?/p>
——查爾斯·巴貝奇
計算機(jī)是一種機(jī)器,主要由電力驅(qū)動,但其靈活性和可編程性幫助實現(xiàn)了其作為一種工具的簡單性。CPU是計算機(jī)的心臟和/或大腦。負(fù)責(zé)執(zhí)行提供給它們的指令。它的主要任務(wù)是執(zhí)行算術(shù)和邏輯運(yùn)算,并將指令協(xié)調(diào)在一起。在深入到本文的主要部分之前,讓我們先看看CPU的主要組成部分,以及它們的作用分別是什么。
1、CPU的兩個主要組成部分
控制單元?—?CU控制單元(CU)是CPU的一部分,它幫助協(xié)調(diào)指令的執(zhí)行。它告訴CPU應(yīng)該做什么。它的主要職責(zé)是根據(jù)指令,幫助激活連接CPU和計算機(jī)其他不同部件(包括ALU)的線路??刂茊卧荂PU的第一個接收處理指令的部件。
控制單元有兩種類型:
硬接線控制單元。
微型可編程(微編程)控制單元。
硬接線控制單元是一種硬件,它需要在硬件上進(jìn)行更改以實現(xiàn)對其工作方式的修改,而微型可編程控制單元則可以進(jìn)行編程以更改其工作方式。硬接線控制單元在處理指令方面更快,而微型可編程控制單元則更靈活。算術(shù)邏輯單元 —? ALU算術(shù)邏輯單元(ALU),顧名思義,就是負(fù)責(zé)所有的算術(shù)和邏輯運(yùn)算。算術(shù)邏輯單元執(zhí)行加法運(yùn)算,減法運(yùn)算等操作。算術(shù)邏輯單元是由執(zhí)行這些操作的邏輯電路或邏輯門組成。大多數(shù)邏輯門接受兩個輸入并產(chǎn)生一個輸出。下面是一個半加法器電路的例子,它接受兩個輸入并輸出結(jié)果。這里A和B是輸入,S是輸出,C是進(jìn)位。
半加法器電路圖
2、存儲 - 寄存器和存儲器
CPU的主要任務(wù)是執(zhí)行提供給它的指令。在大多數(shù)情況下,為了處理這些指令,它需要數(shù)據(jù)。有些數(shù)據(jù)是中間數(shù)據(jù),有些是輸入,另一些是輸出。這些數(shù)據(jù)連同指令一起存儲在下列存儲器中:寄存器寄存器是一組可以存儲數(shù)據(jù)的小地方。寄存器是鎖存器(Latches)的組合。鎖存器也稱為觸發(fā)器(flip-flops),是存儲1位信息的邏輯門的組合。鎖存器有一條輸入線,一條寫入和輸入線,和一條輸出線。我們可以啟用寫入線對存儲的數(shù)據(jù)進(jìn)行更改。當(dāng)寫入線被禁用時,輸出始終保持不變。
SR鎖存器,由一對交叉耦合的或非門(NOR Gates)構(gòu)成。CPU由寄存器來存儲輸出數(shù)據(jù)。由于是中間數(shù)據(jù),它們被發(fā)送到主存儲器(RAM)的速度會慢。這些數(shù)據(jù)被發(fā)送到由總線連接的其它寄存器。寄存器可以存儲指令、輸出數(shù)據(jù)、存儲地址或任何類型的數(shù)據(jù)。存儲器(RAM)RAM - 隨機(jī)存取存儲器是寄存器的集合,它們以優(yōu)化的方式排列和壓縮在一起,以便存儲更多的數(shù)據(jù)。隨機(jī)存取存儲器(RAM)是易失性的,當(dāng)我們關(guān)閉電源時,它存儲的數(shù)據(jù)會丟失。由于RAM是用于讀/寫數(shù)據(jù)的寄存器的集合,因此RAM可以用于存儲8位地址的輸入、用于存儲實際數(shù)據(jù)的數(shù)據(jù)輸入,和用于儲存最后的和鎖存器一樣工作的讀寫啟用碼。
3、什么是指令
指令是計算機(jī)可以執(zhí)行的最小粒度運(yùn)算。CPU可以處理各種類型的指令
指令類型包括:
算術(shù)運(yùn)算指令,如加法和減法運(yùn)算
邏輯運(yùn)算指令,如邏輯與(AND)、邏輯或(OR)和邏輯非(NOT)運(yùn)算
數(shù)據(jù)傳送指令,如數(shù)據(jù)移動、輸入、輸出、加載和存儲
程序控制指令,如條件/無條件轉(zhuǎn)移指令(if…goto,goto),轉(zhuǎn)子指令和轉(zhuǎn)移指令(call,return)
通知CPU程序已結(jié)束的Halt指令
指令通過以下方式提供給計算機(jī):使用匯編語言直接提供,或由編譯器生成,或用某些高級語言解釋給出。這些指令在CPU內(nèi)部是硬連線的。算術(shù)和邏輯運(yùn)算指令包括在ALU(算術(shù)邏輯單元)中,而程序控制指令由CU(控制單元)管理。通常在一個時鐘周期(clock cycle)內(nèi),計算機(jī)可以執(zhí)行一個指令,但是現(xiàn)代的計算機(jī)可以同時執(zhí)行多個指令。計算機(jī)可以執(zhí)行的一組指令稱為指令集。
4、CPU時鐘
時鐘周期計算機(jī)的速度由其時鐘周期(Clock cycle)衡量。它是指計算機(jī)每秒工作的時鐘周期數(shù)。單個時鐘周期非常小,大約250*10^(-12)秒。每秒時鐘周期數(shù)越高,處理器速度越快。CPU時鐘頻率(clock rate)的測量單位為GHz(千兆赫茲)。1Ghz等于10 ?Hz(赫茲)。一赫茲意味著一秒鐘。所以一千兆赫茲意味著每秒10 ?個時鐘周期。時鐘周期越小,CPU可以執(zhí)行的指令數(shù)量越多。時鐘周期等于時鐘頻率的倒數(shù),而CPU時間=時鐘周期數(shù)/時鐘頻率這意味著為了改進(jìn)(減少)CPU時間,我們可以通過提高時鐘頻率,或優(yōu)化我們提供給CPU的指令來減少指令需要的時鐘周期的數(shù)量。一些處理器提供了提高時鐘頻率的能力,但由于這是一個物理變化,可能會出現(xiàn)過熱,甚至冒煙/起火。
5、指令是如何執(zhí)行的
指令按順序存儲在隨機(jī)存取存儲器(RAM)上。對于一個假設(shè)的CPU指令,它由操作碼(OP code)和存儲器或寄存器地址組成??刂茊卧?CU)內(nèi)有兩個寄存器:用于加載指令操作碼的指令寄存器(IR),和用于加載當(dāng)前正在執(zhí)行的指令地址的指令地址寄存器。CPU中還有其他寄存器,用于存儲一個指令的最后4位的地址中存儲的值。讓我們以一組實現(xiàn)兩個數(shù)字相加操作的指令為例。下面是這些指令及其說明:第一步 - LOAD_A 8該指令最初保存在RAM中,比如說指令<1100 1000>。它的前4位是操作碼。這決定了這個指令要做什么。然后該指令被讀取到控制單元的指令寄存器(IR)中。指令被譯碼為load_A,這意味著它需要加載地址1000中的數(shù)據(jù),地址1000是存儲在寄存器A中的指令的后4位。第二步 - LOAD_B 2與上面類似,它將內(nèi)存地址2(0010)中的數(shù)據(jù)加載到CPU的寄存器B中。第三步 – ADD B A接下來的這條指令是把這兩個數(shù)字相加。在這里,控制單元(CU)告訴算術(shù)邏輯單元(ALU)執(zhí)行加法操作并將結(jié)果保存回寄存器A中。第4步 – STORE_A 23將結(jié)果保存回寄存器A中。這是一組非常簡單的指令,實現(xiàn)了兩個數(shù)字的相加操作?,F(xiàn)在,我們成功地得到了兩個數(shù)字相加的和值!總線CPU,寄存器,存儲器和IO設(shè)備之間的所有數(shù)據(jù)都通過總線傳輸。要將剛才兩數(shù)相加得到的和數(shù)保存到存儲器中,CPU將存儲器地址放入地址總線,將得到的結(jié)果(和數(shù))放入數(shù)據(jù)總線,然后在控制總線中啟用正確的信號。這樣,數(shù)據(jù)在總線的幫助下被保存到存儲器中。
計算機(jī)系統(tǒng)總線緩存CPU還具有將指令預(yù)取到其緩存中的機(jī)制。我們知道,一個處理器可以在一秒鐘內(nèi)完成數(shù)百萬條指令。這意味著從存儲器(RAM)中獲取指令所花費(fèi)的時間比執(zhí)行指令所花費(fèi)的時間要多。所以CPU會預(yù)取一些指令和數(shù)據(jù)到其緩存中,以加快執(zhí)行速度。如果緩存中的數(shù)據(jù)和操作內(nèi)存中的數(shù)據(jù)不同,則將數(shù)據(jù)標(biāo)記為臟位(dirty bit)。指令流水線現(xiàn)代CPU在指令執(zhí)行中采用指令流水線技術(shù)實現(xiàn)取指(FI)、譯碼(DI)、執(zhí)行(EI)的并行化。當(dāng)一條指令完成“取指”后進(jìn)入“譯碼”的同時,下一條指令就可以進(jìn)行“取指”了,這樣就提高了指令的執(zhí)行效率。
指令流水線技術(shù)然而,當(dāng)一條指令和另一條指令有依賴關(guān)系時,這種技術(shù)會產(chǎn)生問題。所以,指令流水線技術(shù)只能夠讓處理器以不同的順序執(zhí)行相互之間沒有依賴關(guān)系的指令。多核計算機(jī)它基本上是有不同的CPU,但是有一些共享資源,比如緩存等。
6、性能
CPU的性能取決于它的執(zhí)行時間。性能=1/執(zhí)行時間假設(shè)一個程序執(zhí)行需要20毫秒。CPU性能為1/20=0.05ms。相對性能=執(zhí)行時間1/執(zhí)行時間2影響CPU性能的因素是指令執(zhí)行時間和CPU的時鐘速度(時鐘頻率)。因此,為了提高程序的性能,我們要么提高CPU的時鐘速度(時鐘頻率),要么減少程序中的指令數(shù)量。處理器的速度有限,現(xiàn)代多核計算機(jī)每秒可以支持?jǐn)?shù)百萬條指令。但是,如果我們編寫的程序有太多的指令,就將導(dǎo)致整體性能的降低。大O符號(Big O notation)計算方法可以用來確定在給定輸入的情況下CPU的性能將如何受到影響。為了盡可能地提高CPU的速度,很多優(yōu)化工作已經(jīng)在CPU中進(jìn)行。而我們在編寫任何程序時,都需要考慮如何盡可能地減少我們提供給CPU的指令數(shù)量,以提高計算機(jī)程序的性能。
原文標(biāo)題:CPU 是如何工作的?
文章出處:【微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19313瀏覽量
230054 -
cpu
+關(guān)注
關(guān)注
68文章
10873瀏覽量
212020 -
計算機(jī)
+關(guān)注
關(guān)注
19文章
7511瀏覽量
88078
原文標(biāo)題:CPU 是如何工作的?
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論