SMT并發(fā)多線程是Power5以后芯片的新技術(shù),它支持一個(gè)CPU內(nèi)核同時(shí)處理兩條指令,因此可以最高達(dá)到單一CPU兩倍的處理速度。平均而言,打開(kāi)SMT支持比關(guān)閉SMT能提升30%的CPU處理能力。SMT的能力來(lái)源于CPU中有許多寄存器,但是由于CPU通常每一時(shí)間點(diǎn)只能執(zhí)行一條指令,即使是流水線方式,某個(gè)時(shí)間點(diǎn)真正執(zhí)行占據(jù)運(yùn)算器的也只有一條指令,其他并行的指令只能處于解碼、尋址等狀態(tài)。因此大部分寄存器都沒(méi)有工作,處于閑置。
針對(duì)這種情況,IBM特別設(shè)計(jì)了一種寄存器結(jié)構(gòu),能夠?qū)PU的處理狀態(tài)進(jìn)行跟蹤,當(dāng)發(fā)現(xiàn)有閑置的寄存器,而此時(shí)另一個(gè)線程又可以使用它的時(shí)候,就在保持當(dāng)前進(jìn)程的前提下,讓另一個(gè)線程同時(shí)執(zhí)行,就這樣在同一時(shí)間,一個(gè)CPU可以處理兩個(gè)線程的指令。實(shí)際上并非如此簡(jiǎn)單,因?yàn)橐粋(gè)RISC CPU通常用超流水線的方式同時(shí)執(zhí)行多條指令,因此實(shí)現(xiàn)SMT需要進(jìn)行比較復(fù)雜的判斷,而且也并不能保證CPU永遠(yuǎn)可以執(zhí)行兩個(gè)線程。所以通常SMT并不能將性能翻倍,而只是提高30%左右。
與SMT類似,HMT硬件多線程技術(shù),也是試圖同時(shí)實(shí)行多條指令線程的一種技術(shù),但與SMT不同的是,在HMT必須等當(dāng)前指令流空閑下來(lái),才能切換到另一條指令線程執(zhí)行。在CPU 執(zhí)行指令發(fā)生中斷的時(shí)候,就是當(dāng)前指令流空閑的時(shí)候,通常可能原因是指令/數(shù)據(jù)緩存未命中(由于跳轉(zhuǎn)和地址越界,緩存中,沒(méi)有當(dāng)前需要執(zhí)行的指令)。由于HMT對(duì)指令是否并行執(zhí)行的要求更為苛刻,對(duì)性能的提高并不十分顯著。
IBM的Power系列CPU支持HMT,到Power5開(kāi)始增添了對(duì)SMT的支持,其中HMT是無(wú)條件使用,而SMT則可能通過(guò)操作系統(tǒng)開(kāi)關(guān)控制使用和關(guān)閉。