【廣告】
在計算機體系結(jié)構(gòu)中,CPU 是對計算機的所有硬件資源(如存儲器、輸入輸出單元) 進(jìn)行控制調(diào)配、執(zhí)行通用運算的核心硬件單元。CPU 是計算機的運算和控制核心。計算機系統(tǒng)中所有軟件層的操作,終都將通過指令集映射為CPU的操作。
由于CPU訪問內(nèi)存以得到指令或數(shù)據(jù)的時間要比執(zhí)行指令花費的時間長很多,因此在CPU內(nèi)部提供了一些用來保存關(guān)鍵變量、臨時數(shù)據(jù)等信息的通用寄存器。所以,CPU需要提供 一些特定的指令,使得可以從內(nèi)存中讀取數(shù)據(jù)存入寄存器以及可以將寄存器數(shù)據(jù)存入內(nèi)存。
用戶態(tài)的CPU,只允許執(zhí)行指令集中的部分指令。一般而言,IO相關(guān)和把內(nèi)存保護(hù)相關(guān)的所有執(zhí)行在用戶態(tài)下都是被禁止的,此外其它一些特權(quán)指令也是被禁止的,比如用戶態(tài)下不能將PSW的模式設(shè)置控制位設(shè)置成內(nèi)核態(tài)。
控制器之所以知道數(shù)據(jù)放哪里、做什么運算(比如是做加法還是邏輯運算?)都是由指令告訴控制器的,每個指令對應(yīng)一個基本操作,比如加法運算對應(yīng)一個指令。例如,將兩個MDR寄存器(保存了來自內(nèi)存的兩個數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)的操作指令執(zhí)行加法運算,將運算結(jié)果拷貝會一個MDR寄存器中,后寫入到內(nèi)存。
用戶態(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)核。當(dāng)特權(quán)操作完成后,需要執(zhí)行一個指令讓CPU返回到用戶態(tài)。除了系統(tǒng)調(diào)用會陷入內(nèi)核,更多的是硬件會引起trap行為陷入內(nèi)核,使得CPU控制權(quán)可以回到操作系統(tǒng),以便操作系統(tǒng)去決定如何處理硬件異常。
每核上的多線程CPU都共享該核的CPU資源。
假設(shè)每核CPU都只有一個"發(fā)動機"資源,那么線程1這個虛擬CPU使用了這個"發(fā)動機"后,線程2就沒法使用,只能等待。
所以,超線程技術(shù)的主要目的是為了增加流水線上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術(shù)利用了superscalar(超標(biāo)量)架構(gòu)的優(yōu)點。