【廣告】
用戶態(tài)的CPU,只允許執(zhí)行指令集中的部分指令。一般而言,IO相關和把內存保護相關的所有執(zhí)行在用戶態(tài)下都是被禁止的,此外其它一些特權指令也是被禁止的,比如用戶態(tài)下不能將PSW的模式設置控制位設置成內核態(tài)。
控制器之所以知道數(shù)據放哪里、做什么運算(比如是做加法還是邏輯運算?)都是由指令告訴控制器的,每個指令對應一個基本操作,比如加法運算對應一個指令。例如,將兩個MDR寄存器(保存了來自內存的兩個數(shù)據)中的值拷貝到ALU中,然后根據的操作指令執(zhí)行加法運算,將運算結果拷貝會一個MDR寄存器中,后寫入到內存。
關于CPU的基本組成
1、CPU是用來運算的(加法運算 、乘法運算*、邏輯運算and not or等),例如c=a b。
2、運算操作涉及到數(shù)據輸入(input)、處理、數(shù)據輸出(output),a和b是輸入數(shù)據,加法運算是處理,c是輸出數(shù)據。
3、CPU需要使用一個叫做存儲器(也就是各種寄存器)的東西保存輸入和輸出數(shù)據。
4、CPU還要將一些常用的基本運算工具(如加法器)放進CPU,這部分負責運算,稱為算術邏輯單元(ALU)。
5、CPU中還有一個控制器(CU),負責將存儲器中的數(shù)據送到ALU中去做運算,并將運算后的結果存回到存儲器中。控制器還包含了一些控制信號。
關于CPU上的高速緩存
1、高速的緩存是CPU的寄存器,它們和CPU的材料相同,靠近CPU或接近CPU,訪問它們沒有時延(<1ns)。但容量很小,小于1kb。
2、寄存器之下,是CPU的高速緩存。分為L1緩存、L2緩存、L3緩存,每層速度按數(shù)量級遞減、容量也越來越大。
3、每核心都有一個自己的L1緩存。L1緩存分兩種:L1指令緩存(L1-icache)和L1數(shù)據緩存(L1-dcache)。L1指令緩存用來存放已解了碼指令,L1數(shù)據緩存用來放訪問非常頻繁的數(shù)據。
4、L2緩存用來存放近期使用過的內存數(shù)據。更嚴格地說,存放的是很可能將來會被CPU使用的數(shù)據。
5、多數(shù)多核CPU的各核都各自擁有一個L2緩存,但也有多核共享L2緩存的設計。無論如何,L1是各核私有的(但對某核內的多線程是共享的)。