2023年最新的CPU的基礎(chǔ)知識大全_第1頁
2023年最新的CPU的基礎(chǔ)知識大全_第2頁
2023年最新的CPU的基礎(chǔ)知識大全_第3頁
2023年最新的CPU的基礎(chǔ)知識大全_第4頁
2023年最新的CPU的基礎(chǔ)知識大全_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第CPU的根底知識大全CPU的根底知識

CPU是計算機的大腦。

1、程序的運行過程,實際上是程序涉及到的、未涉及到的一大堆的指令的執(zhí)行過程。

當程序要執(zhí)行的局部被裝載到內(nèi)存后,CPU要從內(nèi)存中取出指令,然后指令解碼(以便知道類型和操作數(shù),簡單的理解為CPU要知道這是什么指令),然后執(zhí)行該指令。再然后取下一個指令、解碼、執(zhí)行,以此類推直到程序退出。

2、這個取指、解碼、執(zhí)行三個過程構(gòu)成一個CPU的根本周期。

3、每個CPU都有一套自己可以執(zhí)行的專門的指令集(注意,這局部指令是CPU提供的,CPU-Z軟件可查看)。

正是因為不同CPU架構(gòu)的指令集不同,使得某86處理器不能執(zhí)行ARM程序,ARM程序也不能執(zhí)行某86程序。(Intel和AMD都使用某86指令集,手機絕大多數(shù)使用ARM指令集)。

注:指令集的軟硬件層次之分:硬件指令集是硬件層次上由CPU自身提供的可執(zhí)行的指令集合。軟件指令集是指語言程序庫所提供的指令,只要安裝了該語言的程序庫,指令就可以執(zhí)行。

4、由于CPU訪問內(nèi)存以得到指令或數(shù)據(jù)的時間要比執(zhí)行指令花費的時間長很多,因此在CPU內(nèi)部提供了一些用來保存關(guān)鍵變量、臨時數(shù)據(jù)等信息的通用存放器。

所以,CPU需要提供一些特定的指令,使得可以從內(nèi)存中讀取數(shù)據(jù)存入存放器以及可以將存放器數(shù)據(jù)存入內(nèi)存。

此外還需要提供加法、減、not/and/or等根本運算指令,而乘除法運算都是推算出來的(支持的根本運算指令參見ALUFunctions),所以乘除法的速度要慢的多。這也是算法里在考慮時間復雜度時常常忽略加減法次數(shù)帶來的影響,而考慮乘除法的次數(shù)的原因。

5、除了通用存放器,還有一些特殊的存放器。典型的如:

PC:programcounter,表示程序計數(shù)器,它保存了將要取出的下一條指令的內(nèi)存地址,指令取出后,就會更新該存放器指向下一條指令。

堆棧指針:指向內(nèi)存當前棧的頂端,包含了每個函數(shù)執(zhí)行過程的棧幀,該棧幀中保存了該函數(shù)相關(guān)的輸入?yún)?shù)、局部變量、以及一些沒有保存在存放器中的臨時變量。

PSW:programstatusword,表示程序狀態(tài)字,這個存放器內(nèi)保存了一些控制位,比方CPU的優(yōu)先級、CPU的工作模式(用戶態(tài)還是內(nèi)核態(tài)模式)等。

6、在CPU進行進程切換的時候,需要將存放器中和當前進程有關(guān)的狀態(tài)數(shù)據(jù)寫入內(nèi)存對應(yīng)的位置(內(nèi)核中該進程的??臻g)保存起來,當切換回該進程時,需要從內(nèi)存中拷貝回存放器中。即上下文切換時,需要保護現(xiàn)場和恢復現(xiàn)場。

7、為了改善性能,CPU已經(jīng)不是單條取指-->解碼-->執(zhí)行的路線,而是分別為這3個過程分別提供獨立的取值單元,解碼單元以及執(zhí)行單元。這樣就形成了流水線模式。

例如,流水線的最后一個單元——執(zhí)行單元正在執(zhí)行第n條指令,而前一個單元可以對第n+1條指令進行解碼,再前一個單元即取指單元可以去讀取第n+2條指令。這是三階段的流水線,還可能會有更長的流水線模式。

8、更優(yōu)化的CPU架構(gòu)是superscalar架構(gòu)(超標量架構(gòu))。這種架構(gòu)將取指、解碼、執(zhí)行單元分開,有大量的執(zhí)行單元,然后每個取指+解碼的局部都以并行的方式運行。比方有2個取指+解碼的并行工作線路,每個工作線路都將解碼后的指令放入一個緩存緩沖區(qū)等待執(zhí)行單元去取出執(zhí)行。

9、除了嵌入式系統(tǒng),多數(shù)CPU都有兩種工作模式:內(nèi)核態(tài)和用戶態(tài)。這兩種工作模式是由PSW存放器上的一個二進制位來控制的。

10、內(nèi)核態(tài)的CPU,可以執(zhí)行指令集中的所有指令,并使用硬件的所有功能。

11、用戶態(tài)的CPU,只允許執(zhí)行指令集中的局部指令。一般而言,IO相關(guān)和把內(nèi)存保護相關(guān)的所有執(zhí)行在用戶態(tài)下都是被禁止的,此外其它一些特權(quán)指令也是被禁止的,比方用戶態(tài)下不能將PSW的模式設(shè)置控制位設(shè)置成內(nèi)核態(tài)。

12、用戶態(tài)CPU想要執(zhí)行特權(quán)操作,需要發(fā)起系統(tǒng)調(diào)用來請求內(nèi)核幫助完成對應(yīng)的操作。其實是在發(fā)起系統(tǒng)調(diào)用后,CPU會執(zhí)行trap指令陷入(trap)到內(nèi)核。當特權(quán)操作完成后,需要執(zhí)行一個指令讓CPU返回到用戶態(tài)。

13、除了系統(tǒng)調(diào)用會陷入內(nèi)核,更多的是硬件會引起trap行為陷入內(nèi)核,使得CPU控制權(quán)可以回到操作系統(tǒng),以便操作系統(tǒng)去決定如何處理硬件異常。

關(guān)于CPU的根本組成

1、CPU是用來運算的(加法運算+、乘法運算__、邏輯運算andnotor等),例如c=a+b。

2、運算操作涉及到數(shù)據(jù)輸入(input)、處理、數(shù)據(jù)輸出(output),a和b是輸入數(shù)據(jù),加法運算是處理,c是輸出數(shù)據(jù)。

3、CPU需要使用一個叫做存儲器(也就是各種存放器)的東西保存輸入和輸出數(shù)據(jù)。以下是幾種常見的存放器(前文也介紹了一些)

MAR:memoryaddressregister,保存將要被訪問數(shù)據(jù)在內(nèi)存中哪個地址處,保存的是地址值

MDR:memorydataregister,保存從內(nèi)存讀取進來的數(shù)據(jù)或?qū)⒁獙懭雰?nèi)存的數(shù)據(jù),保存的是數(shù)據(jù)值

AC:Accumulator,保存算術(shù)運算和邏輯運算的中間結(jié)果,保存的是數(shù)據(jù)值

PC:ProgramCounter,保存下一個將要被執(zhí)行指令的地址,保存的是地址值

CIR:currentinstructionregister,保存當前正在執(zhí)行的指令

4、CPU還要將一些常用的根本運算工具(如加法器)放進CPU,這局部負責運算,稱為算術(shù)邏輯單元(ALU,ArithmeticLogicUnit)。

5、CPU中還有一個控制器(CU,ControlUnit),負責將存儲器中的數(shù)據(jù)送到ALU中去做運算,并將運算后的結(jié)果存回到存儲器中。

控制器還包含了一些控制信號。

5、控制器之所以知道數(shù)據(jù)放哪里、做什么運算(比方是做加法還是邏輯運算?)都是由指令告訴控制器的,每個指令對應(yīng)一個根本操作,比方加法運算對應(yīng)一個指令。

6、例如,將兩個MDR存放器(保存了來自內(nèi)存的兩個數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)指定的操作指令執(zhí)行加法運算,將運算結(jié)果拷貝會一個MDR存放器中,最后寫入到內(nèi)存。

7、這就是馮諾依曼結(jié)構(gòu)圖,也就是現(xiàn)在計算機的結(jié)構(gòu)圖。

關(guān)于CPU的多核和多線程

1、CPU的物理個數(shù)由主板上的插槽數(shù)量決定,每個CPU可以有多核心,每核心可能會有多線程。

2、多核CPU的每核(每核都是一個小芯片),在OS看來都是一個獨立的CPU。

3、對于超線程CPU來說,每核CPU可以有多個線程(數(shù)量是兩個,比方1核雙線程,2核4線程,4核8線程),每個線程都是一個虛擬的邏輯CPU(比方windows下是以邏輯處理器的名稱稱呼的),而每個線程在OS看來也是獨立的CPU。

這是欺騙操作系統(tǒng)的行為,在物理上仍然只有1核,只不過在超線程CPU的角度上看,它認為它的超線程會加速程序的運行。

4、要發(fā)揮超線程優(yōu)勢,需要操作系統(tǒng)對超線程有專門的優(yōu)化。

5、多線程的CPU在能力上,比非多線程的CPU核心要更強,但每個線程缺乏以與獨立的CPU核心能力相比較。

6、每核上的多線程CPU都共享該核的CPU資源。

例如,假設(shè)每核CPU都只有一個"發(fā)動機"資源,那么線程1這個虛擬CPU使用了這個"發(fā)動機"后,線程2就沒法使用,只能等待。

所以,超線程技術(shù)的主要目的是為了增加流水線(參見前文對流水線的解釋)上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術(shù)利用了superscalar(超標量)架構(gòu)的優(yōu)點。

7、多線程意味著每核可以有多個線程的狀態(tài)。比方某核的線程1空閑,線程2運行。

8、多線程沒有提供真正意義上的并行處理,每核CPU在某一時刻仍然只能運行一個進程,因為線程1和線程2是共享某核CPU資源的??梢院唵蔚恼J為每核CPU在獨立執(zhí)行進程的能力上,有一個資源是唯一的,線程1獲取了該資源,線程2就沒法獲取。

但是,線程1和線程2在很多方面上是可以并行執(zhí)行的。比方可以并行取指、并行解碼、并行執(zhí)行指令等。所以雖然單核在同一時間只能執(zhí)行一個進程,但線程1和線程2可以互相幫助,加速進程的執(zhí)行。

并且,如果線程1在某一時刻獲取了該核執(zhí)行進程的能力,假設(shè)此刻該進程發(fā)出了IO請求,于是線程1掌握的執(zhí)行進程的能力,就可以被線程2獲取,即切換到線程2。這是在執(zhí)行線程間的切換,是非常輕量級的。(WIKI:ifresourcesforoneprocessarenotavailable,thenanotherprocesscancontinueifitsresourcesareavailable)

9、多線程可能會出現(xiàn)一種現(xiàn)象:假設(shè)2核4線程CPU,有兩個進程要被調(diào)度,那么只有兩個線程會處于運行狀態(tài),如果這兩個線程是在同一核上,那么另一核完全空轉(zhuǎn),處于浪費狀態(tài)。更期望的結(jié)果是每核上都有一個CPU分別調(diào)度這兩個進程。

關(guān)于CPU上的高速緩存

1、最高速的緩存是CPU的存放器,它們和CPU的材料相同,最靠近CPU或最接近CPU,訪問它們沒有時延(解碼-->執(zhí)行的路線,而是分別為這3個過程分別提供獨立的取值單元,解碼單元以及執(zhí)行單元。這樣就形成了流水線模式。

例如,流水線的最后一個單元——執(zhí)行單元正在執(zhí)行第n條指令,而前一個單元可以對第n+1條指令進行解碼,再前一個單元即取指單元可以去讀取第n+2條指令。這是三階段的流水線,還可能會有更長的流水線模式。

8、更優(yōu)化的CPU架構(gòu)是superscalar架構(gòu)(超標量架構(gòu))。這種架構(gòu)將取指、解碼、執(zhí)行單元分開,有大量的執(zhí)行單元,然后每個取指+解碼的局部都以并行的方式運行。比方有2個取指+解碼的并行工作線路,每個工作線路都將解碼后的指令放入一個緩存緩沖區(qū)等待執(zhí)行單元去取出執(zhí)行。

9、除了嵌入式系統(tǒng),多數(shù)CPU都有兩種工作模式:內(nèi)核態(tài)和用戶態(tài)。這兩種工作模式是由PSW存放器上的一個二進制位來控制的。

10、內(nèi)核態(tài)的CPU,可以執(zhí)行指令集中的所有指令,并使用硬件的所有功能。

11、用戶態(tài)的CPU,只允許執(zhí)行指令集中的局部指令。一般而言,IO相關(guān)和把內(nèi)存保護相關(guān)的所有執(zhí)行在用戶態(tài)下都是被禁止的,此外其它一些特權(quán)指令也是被禁止的,比方用戶態(tài)下不能將PSW的模式設(shè)置控制位設(shè)置成內(nèi)核態(tài)。

12、用戶態(tài)CPU想要執(zhí)行特權(quán)操作,需要發(fā)起系統(tǒng)調(diào)用來請求內(nèi)核幫助完成對應(yīng)的操作。其實是在發(fā)起系統(tǒng)調(diào)用后,CPU會執(zhí)行trap指令陷入(trap)到內(nèi)核。當特權(quán)操作完成后,需要執(zhí)行一個指令讓CPU返回到用戶態(tài)。

13、除了系統(tǒng)調(diào)用會陷入內(nèi)核,更多的是硬件會引起trap行為陷入內(nèi)核,使得CPU控制權(quán)可以回到操作系統(tǒng),以便操作系統(tǒng)去決定如何處理硬件異常。

關(guān)于CPU的根本組成

1、CPU是用來運算的(加法運算+、乘法運算__、邏輯運算andnotor等),例如c=a+b。

2、運算操作涉及到數(shù)據(jù)輸入(input)、處理、數(shù)據(jù)輸出(output),a和b是輸入數(shù)據(jù),加法運算是處理,c是輸出數(shù)據(jù)。

3、CPU需要使用一個叫做存儲器(也就是各種存放器)的東西保存輸入和輸出數(shù)據(jù)。以下是幾種常見的存放器(前文也介紹了一些)

MAR:memoryaddressregister,保存將要被訪問數(shù)據(jù)在內(nèi)存中哪個地址處,保存的是地址值

MDR:memorydataregister,保存從內(nèi)存讀取進來的數(shù)據(jù)或?qū)⒁獙懭雰?nèi)存的數(shù)據(jù),保存的是數(shù)據(jù)值

AC:Accumulator,保存算術(shù)運算和邏輯運算的中間結(jié)果,保存的是數(shù)據(jù)值

PC:ProgramCounter,保存下一個將要被執(zhí)行指令的地址,保存的是地址值

CIR:currentinstructionregister,保存當前正在執(zhí)行的指令

4、CPU還要將一些常用的根本運算工具(如加法器)放進CPU,這局部負責運算,稱為算術(shù)邏輯單元(ALU,ArithmeticLogicUnit)。

5、CPU中還有一個控制器(CU,ControlUnit),負責將存儲器中的數(shù)據(jù)送到ALU中去做運算,并將運算后的結(jié)果存回到存儲器中。

控制器還包含了一些控制信號。

5、控制器之所以知道數(shù)據(jù)放哪里、做什么運算(比方是做加法還是邏輯運算?)都是由指令告訴控制器的,每個指令對應(yīng)一個根本操作,比方加法運算對應(yīng)一個指令。

6、例如,將兩個MDR存放器(保存了來自內(nèi)存的兩個數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)指定的操作指令執(zhí)行加法運算,將運算結(jié)果拷貝會一個MDR存放器中,最后寫入到內(nèi)存。

7、這就是馮諾依曼結(jié)構(gòu)圖,也就是現(xiàn)在計算機的結(jié)構(gòu)圖。

關(guān)于CPU的多線和多進程

1、CPU的物理個數(shù)由主板上的插槽數(shù)量決定,每個CPU可以有多核心,每核心可能會有多線程。

2、多核CPU的每核(每核都是一個小芯片),在OS看來都是一個獨立的CPU。

3、對于超線程CPU來說,每核CPU可以有多個線程(數(shù)量是兩個,比方1核雙線程,2核4線程,4核8線程),每個線程都是一個虛擬的邏輯CPU(比方windows下是以邏輯處理器的名稱稱呼的),而每個線程在OS看來也是獨立的CPU。

這是欺騙操作系統(tǒng)的行為,在物理上仍然只有1核,只不過在超線程CPU的角度上看,它認為它的超線程會加速程序的運行。

4、要發(fā)揮超線程優(yōu)勢,需要操作系統(tǒng)對超線程有專門的優(yōu)化。

5、多線程的CPU在能力上,比非多線程的CPU核心要更強,但每個線程缺乏以與獨立的CPU核心能力相比較。

6、每核上的多線程CPU都共享該核的CPU資源。

例如,假設(shè)每核CPU都只有一個"發(fā)動機"資源,那么線程1這個虛擬CPU使用了這個"發(fā)動機"后,線程2就沒法使用,只能等待。

所以,超線程技術(shù)的主要目的是為了增加流水線(參見前文對流水線的解釋)上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術(shù)利用了superscalar(超標量)架構(gòu)的優(yōu)點。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論