【廣告】
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 自誕生以來(lái)一直在飛速發(fā)展。
為了改善性能,CPU已經(jīng)不是單條取指-->解了碼-->執(zhí)行的路線,而是分別為這3個(gè)過程分別提供獨(dú)立的取值單元,解了碼單元以及執(zhí)行單元。這樣就形成了流水線模式。
用戶態(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寄存器(保存了來(lái)自內(nèi)存的兩個(gè)數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)的操作指令執(zhí)行加法運(yùn)算,將運(yùn)算結(jié)果拷貝會(huì)一個(gè)MDR寄存器中,后寫入到內(nèi)存。
關(guān)于CPU上的高速緩存
1、高速的緩存是CPU的寄存器,它們和CPU的材料相同,靠近CPU或接近CPU,訪問它們沒有時(shí)延(<1ns)。但容量很小,小于1kb。
2、寄存器之下,是CPU的高速緩存。分為L(zhǎng)1緩存、L2緩存、L3緩存,每層速度按數(shù)量級(jí)遞減、容量也越來(lái)越大。
3、每核心都有一個(gè)自己的L1緩存。L1緩存分兩種:L1指令緩存(L1-icache)和L1數(shù)據(jù)緩存(L1-dcache)。L1指令緩存用來(lái)存放已解了碼指令,L1數(shù)據(jù)緩存用來(lái)放訪問非常頻繁的數(shù)據(jù)。
4、L2緩存用來(lái)存放近期使用過的內(nèi)存數(shù)據(jù)。更嚴(yán)格地說,存放的是很可能將來(lái)會(huì)被CPU使用的數(shù)據(jù)。
5、多數(shù)多核CPU的各核都各自擁有一個(gè)L2緩存,但也有多核共享L2緩存的設(shè)計(jì)。無(wú)論如何,L1是各核私有的(但對(duì)某核內(nèi)的多線程是共享的)。