瀏覽單個文章
NEAL
Golden Member
 
NEAL的大頭照
 

加入日期: Jun 2002
您的住址: Taiwan
文章: 2,668
引用:
作者stanleywang
這題真是怪阿,

兩者都出現很長一段時間了,我卻從來沒有想到要比較兩者,
因為這兩種東西是完全不一樣的,到底要怎麼比較呢?

Hyper-Threading是純硬體,一般人只需把它當成多一顆CPU就好了,
根本不用想太多,也不容許想太多。

而Thread 花樣就多了,
不過我也沒辦法確認 樓主說的 Thread,
到底是指 Parallelism ,
還是指 Process 。
(這個討論串已經把兩者混在一起了)

如果是指 Parallelism ,
那麼一般情況下 HT 確實可以模擬出接近實體核心的效能,
如果是 Process 那跟 HT 就沒有半毛錢的關係了。

不過他有提到CPU,可能是在問平行架構,
但是"1赫茲可執行4行組合語言的CPU指令",
這我就完全看不懂了。


嗯,我也不懂為什麼魔王兄會想比較這兩種不同的東西,我前文有說到,在CPU層級看不到Thread,Thread是由OS在控制。而Hyper Threading則是一種CPU上的硬體實作,目的是讓Multi-threaded程式或有多個Thread的軟體環境能有較佳的表現,它作法是在一顆CPU上實作出兩套暫存器,以及一套各自獨立的state machine,這就是Intel說的"兩顆邏輯處理器",讓作業系統以為有兩顆CPU可以利用,但其實還是共用一顆CPU的ALU/CU功能方塊,所以上層的軟體有多個Thread時,就能減輕不斷觸發Context Switch的效能減損,也能盡量提升功能方塊的利用率,提升效能。

其實不只我這麼說,因為魔王兄似乎不同意我的說法,於是我也Google一下,確認我是否有講錯誤導人,但是Stack Overflow也有大神是這樣解釋,而且也被審查選為正解:

https://stackoverflow.com/questions...-context-switch

Thread本身就純粹是軟體的概念,它的相對意義是Process,這不只是課本,在維基上也講很明。一個Process裡可以只有一個Thread,也可以有好幾個Thread,全看寫程式的人怎麼設計。用Thread的意義是為了讓OS可以去排程,讓這些Thread的運作可以不斷輪替切換(Context-Switching),因為切換時間很短很快,就會讓使用者以為這些Threads都是同時執行的感覺。

而SMT(Simultaneously Multi-Threading)或是Hardware Multi-Threading這些硬體技術的精神就是希望讓軟體層的Threads是真的同時執行,不用擠在一顆CPU上切換來又切換去,希望能提升效率,最簡單粗暴的方式就是多顆CPU,但是因為多顆CPU很貴,所以後來Intel才實現Hyper-Threading,原理就如前文的解釋。也因為Hyper-Threading始終是共用一顆CPU的功能方塊,在一些真正需要SMT提速的計算不夠用,所以才又發展了Multi-Cores的架構。

千萬別把Thread / Process / Hyper-Threading這些名詞全都搞在一起像玄學一樣,其實有認真去鑽研程式碼和電路方塊設計,印證學到的知識,就不會只是用讀課本的程度去理解這些事物,就算是考試也一樣,考卷只會寫老師或課本講的標準答案;相比還能舉出實際的程式碼,畫出實際的電路方塊圖,一步一步的分析執行過程的運作和變化,那分數也當然是高下立判。

而且學東西的意義在於為自己所用,討論和辨證都不錯,但拿來和考別人和PK是蠻怪的,真的要PK,我的作法是上國家考場或競賽擂台,爭到的名次也是國家或第三方認可的,實在犯不著在一個論壇嘴炮,不然就像對岸常講的:菜雞互啄。多難看
__________________
工作主力機:
AMD Ryzen9 5900X 2203 B2
MSI B550M Mortar WiFi
Kingston Fury Beast RGB D4-3600 32GBx4 (Hynix AJR)
Samsung 970 EVO Plus 1TB
EVGA 850GM SFX
Thermalright SilverArrow IB-E Extreme
Mech. Master C28
BenQ PD3200Q
ASUS ROG Gladius II Origin
GANSS HS75T x Glorious Panda

護眼LCD的選擇
LG 32LM6200 32吋液晶電視電源模組維修經驗分享
舊 2018-10-19, 03:07 PM #27
回應時引用此文章
NEAL離線中