【廣告】
在計(jì)算機(jī)體系結(jié)構(gòu)中,CPU 是對(duì)計(jì)算機(jī)的所有硬件資源(如存儲(chǔ)器、輸入輸出單元) 進(jìn)行控制調(diào)配、執(zhí)行通用運(yùn)算的核心硬件單元。CPU 是計(jì)算機(jī)的運(yùn)算和控制核心。計(jì)算機(jī)系統(tǒng)中所有軟件層的操作,終都將通過指令集映射為CPU的操作。
由于CPU訪問內(nèi)存以得到指令或數(shù)據(jù)的時(shí)間要比執(zhí)行指令花費(fèi)的時(shí)間長很多,因此在CPU內(nèi)部提供了一些用來保存關(guān)鍵變量、臨時(shí)數(shù)據(jù)等信息的通用寄存器。所以,CPU需要提供 一些特定的指令,使得可以從內(nèi)存中讀取數(shù)據(jù)存入寄存器以及可以將寄存器數(shù)據(jù)存入內(nèi)存。
CPU出現(xiàn)于大規(guī)模集成電路時(shí)代,處理器架構(gòu)設(shè)計(jì)的迭代更新以及集成電路工藝的不斷提升促使其不斷發(fā)展完善。從初專用于數(shù)學(xué)計(jì)算到廣泛應(yīng)用于通用計(jì)算,從4位到8位、16位、32位處理器,后到64位處理器,從各廠商互不兼容到不同指令集架構(gòu)規(guī)范的出現(xiàn),CPU 自誕生以來一直在飛速發(fā)展。
為了改善性能,CPU已經(jīng)不是單條取指-->解了碼-->執(zhí)行的路線,而是分別為這3個(gè)過程分別提供獨(dú)立的取值單元,解了碼單元以及執(zhí)行單元。這樣就形成了流水線模式。
因?yàn)镃PU有大量的緩存和復(fù)雜的邏輯控制單元,因此它非常擅長邏輯控制、串行的運(yùn)算。相比較而言,GPU因?yàn)橛写罅康乃阈g(shù)運(yùn)算單元,因此可以同時(shí)執(zhí)行大量的計(jì)算工作,它所擅長的是大規(guī)模的并發(fā)計(jì)算, 計(jì)算量大但是沒有什么技術(shù)含量,而且要重復(fù)很多次。這樣一說,我們利用GPU來提高程序運(yùn)算速度的方法就顯而易見了。使用CPU來做復(fù)雜的邏輯控制,用GPU來做簡(jiǎn)單但是量大的算術(shù)運(yùn)算,就能夠大大地提高程序的運(yùn)行速度。
用戶態(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ùn)算(比如是做加法還是邏輯運(yùn)算?)都是由指令告訴控制器的,每個(gè)指令對(duì)應(yīng)一個(gè)基本操作,比如加法運(yùn)算對(duì)應(yīng)一個(gè)指令。例如,將兩個(gè)MDR寄存器(保存了來自內(nèi)存的兩個(gè)數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)的操作指令執(zhí)行加法運(yùn)算,將運(yùn)算結(jié)果拷貝會(huì)一個(gè)MDR寄存器中,后寫入到內(nèi)存。