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