【廣告】
CPU,是電子計算機的主要設(shè)備之一,電腦中的核心配件。其功能主要是解釋計算機指令以及處理計算機軟件中的數(shù)據(jù)。CPU是計算機中負(fù)責(zé)讀取指令,對指令譯碼并執(zhí)行指令的核心部件。每個CPU都有一套自己可以執(zhí)行的專門的指令集(注意,這部分指令是CPU提供的,CPU-Z軟件可查看)。正是因為不同CPU架構(gòu)的指令集不同,使得x86處理器不能執(zhí)行ARM程序,ARM程序也不能執(zhí)行x86程序。(Intel和AMD都使用x86指令集,手機絕大多數(shù)使用ARM指令集)。
CPU出現(xiàn)于大規(guī)模集成電路時代,處理器架構(gòu)設(shè)計的迭代更新以及集成電路工藝的不斷提升促使其不斷發(fā)展完善。從初專用于數(shù)學(xué)計算到廣泛應(yīng)用于通用計算,從4位到8位、16位、32位處理器,后到64位處理器,從各廠商互不兼容到不同指令集架構(gòu)規(guī)范的出現(xiàn),CPU 自誕生以來一直在飛速發(fā)展。
為了改善性能,CPU已經(jīng)不是單條取指-->解了碼-->執(zhí)行的路線,而是分別為這3個過程分別提供獨立的取值單元,解了碼單元以及執(zhí)行單元。這樣就形成了流水線模式。
CPU有強大的算術(shù)運算單 元,可以在很少的時鐘周期內(nèi)完成算術(shù)計算。同時,有很大的緩存可以保存很多數(shù)據(jù)在里面。此外,還有復(fù)雜的邏輯控制單元,當(dāng)程序有多個分支的時候, 通過提供分支預(yù)測的能力來降低延了時。GPU是基于大的吞吐量設(shè)計,有很多的算術(shù)運算單元和很少的緩存。同時GPU支持大量的線程同時運行,如果他們需要訪問同一個數(shù)據(jù),緩存會合并這些訪問,自然會帶來延了時的問題。盡管有延了時,但是因為其算術(shù)運算單元的數(shù)量龐大,因此能夠達到一個非常大的吞吐量的效果。
用戶態(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)去決定如何處理硬件異常。