本章節(jié)主要了解下什么指令集并行肌蜻,用于理解前面章節(jié)多線程場(chǎng)景下出現(xiàn)的指令重排序問(wèn)題黎泣。
一恕刘、基礎(chǔ)概念
Clock Cycle Time (時(shí)鐘周期時(shí)間)
-
cpu主頻:即cpu內(nèi)核工作的時(shí)鐘頻率(CPU Clock Speed)。
通呈阋校看到的cpu參數(shù)2.5GHz褐着、3.4GHz等就是指CPU主頻。作為cpu性能的重要參數(shù)衡便,cpu主頻雖然與運(yùn)算速度之間沒(méi)有直接關(guān)系献起,但是對(duì)運(yùn)算速度的提升卻非常重要。
-
CPU 的 Clock Cycle Time(時(shí)鐘周期時(shí)間)镣陕,等于主頻的倒數(shù)谴餐,意思是 CPU 能夠識(shí)別的最小時(shí)間單位。
比如說(shuō) 4G 主頻的 CPU 的 Clock Cycle Time 就是 0.25 ns呆抑,作為對(duì)比岂嗓,我們墻上掛鐘的Cycle Time 是 1s
Cycle Per Instruction(CPI,指令平均時(shí)鐘周期數(shù))
- 有的指令需要更多的時(shí)鐘周期時(shí)間鹊碍,所以引出了 CPI (Cycles Per Instruction)指令平均時(shí)鐘周期數(shù)厌殉。
Instruction Per Clock Cycle(IPC)
- CPI 的倒數(shù),表示每個(gè)時(shí)鐘周期能夠運(yùn)行的指令數(shù)侈咕。
CPU的執(zhí)行時(shí)間
CPU執(zhí)行時(shí)間 = 指令數(shù) * CPI * Clock Cycle Time
二公罕、指令重排序優(yōu)化
在我們小時(shí)候,應(yīng)該都學(xué)習(xí)過(guò)類似的題目:
小明的媽媽在做飯耀销,燒水需要5分鐘楼眷,洗菜需要5分鐘,做飯需要5分鐘,那么總共需要多少分鐘罐柳?
實(shí)際上述題目掌腰,在燒水時(shí)不耽誤洗菜,可以并行執(zhí)行的张吉,也就是最后需要10分鐘就可以了齿梁。
現(xiàn)代處理器會(huì)設(shè)計(jì)為【一個(gè)時(shí)鐘周期,完成一條執(zhí)行時(shí)間最長(zhǎng)的 CPU 指令】肮蛹,而這條指令還可以劃分為更小的階段勺择。
一條執(zhí)行指令通常會(huì)分為以下5個(gè)階段:
- 取指令:instruction fetch (IF)
- 指令譯碼:instruction decode (ID)
- 執(zhí)行指令:execute (EX)
- 內(nèi)存訪問(wèn):memory access (MEM)
- 數(shù)據(jù)寫回:register write back (WB)
如果向上面做飯的例子一樣,那么就會(huì)變成下面的樣子蔗崎,三道菜酵幕,需要執(zhí)行三次相同的步驟:
如上的效率一定是不高的,所以CPU也會(huì)對(duì)其執(zhí)行方式作出優(yōu)化缓苛。
-
支持流水線(Pipeline)的處理器
現(xiàn)在CPU支持多級(jí)指令流水線芳撒,如上面介紹的,將指令分成5個(gè)步驟執(zhí)行的CPU未桥,我們就稱之為五級(jí)指令流水線笔刹。這樣的CPU可以在一個(gè)時(shí)鐘周期內(nèi),同時(shí)執(zhí)行5個(gè)指令的不同階段冬耿。
本質(zhì)上來(lái)說(shuō)舌菜,并沒(méi)有縮短單條指令執(zhí)行的時(shí)間,而是增加了在一個(gè)時(shí)鐘周期內(nèi)的指令執(zhí)行吞吐量亦镶。
-
超標(biāo)量(SuperScalar)處理器
處理器的內(nèi)核中一般有多個(gè)執(zhí)行單元(或稱功能單元)日月,如算術(shù)邏輯單元、位移單元缤骨、乘法器等等爱咬。
未實(shí)現(xiàn)超標(biāo)量體系結(jié)構(gòu)時(shí),CPU在每個(gè)時(shí)鐘周期僅執(zhí)行單條指令绊起,因此僅有一個(gè)執(zhí)行單元在工作精拟,其它執(zhí)行單元空閑。
超標(biāo)量體系結(jié)構(gòu)的CPU在一個(gè)時(shí)鐘周期可以同時(shí)分派(dispatching)多條指令在不同的執(zhí)行單元中被執(zhí)行虱歪,這就實(shí)現(xiàn)了指令級(jí)的并行蜂绎。CPU 可以在一個(gè)時(shí)鐘周期內(nèi),執(zhí)行多于一條指令笋鄙。
結(jié)論
鑒于CPU對(duì)于吞吐量的并行優(yōu)化师枣,所以帶來(lái)了指令的亂序執(zhí)行問(wèn)題,也可以稱之為指令重排序優(yōu)化萧落。