java并發(fā)編程(十四)什么是指令集并行?

本章節(jié)主要了解下什么指令集并行,用于理解前面章節(jié)多線程場(chǎng)景下出現(xiàn)的指令重排序問(wèn)題。

一、基礎(chǔ)概念

Clock Cycle Time (時(shí)鐘周期時(shí)間)

  • cpu主頻:即cpu內(nèi)核工作的時(shí)鐘頻率(CPU Clock Speed)。

    通??吹降腸pu參數(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í)行三次相同的步驟:

指令重排序.png

如上的效率一定是不高的,所以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í)行吞吐量。

指令重排序 (1).png
  • 超標(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í)行多于一條指令。

指令重排序 (2).png

結(jié)論

鑒于CPU對(duì)于吞吐量的并行優(yōu)化,所以帶來(lái)了指令的亂序執(zhí)行問(wèn)題,也可以稱之為指令重排序優(yōu)化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容