PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   系統組件 (https://www.pcdvd.com.tw/forumdisplay.php?f=19)
-   -   請問線程是什麼? (https://www.pcdvd.com.tw/showthread.php?t=1152451)

冬之炎陽 2018-11-20 10:51 PM

處理器的執行續概念和作業系統執行緒很類似
但處理器的執行緒主要是為了增加指令執行效率
但軟體的執行緒大部分不是為了增加效率, 反而是多工
在軟體層次, 執行緒增加效率的, 最常見的是影片轉檔和遊戲
為了多工, 例如天天用的瀏覽器, 例如Chrome, 隨便就是開50個Thread以上
專業在用的, 例如網頁伺服器會利用 Thread Pool 預先開好很多Thread以處理網頁請求

執行緒到底是?
就想成有好幾個人可以同時做事情即可!
就類似天津飯的四身拳, 開再多分身, 單一分身的力量還是無法超越本身

pc0805 2018-11-30 02:46 PM

好久沒讀計組計結還有OS
我也記得NEAL大16樓的才是正解
Hyper-Threading 是硬體的架構
thread針對process做分配
OS在執行process的過程中要等待的時候可以藉由切換thread
來達到看似多工的目的
所以就一般單核心來講
同時間只能執行一定數量的thread
就我了解Hyper-Threading是在硬體上做改進
execution resource同樣還是只有一份
但在其餘的架構上複製一份
上面是查到intel自己的Hyper-Threading paper上開頭這樣定義(http://www.cs.virginia.edu/~mc2zk/c...6iss1_art01.pdf 後面我懶得看, 錯了再說)
當一個thread只用到某些execution resource時
還有其他的execution resource沒被用到
這時候因為有另一份架構存在
所以可以在同一時間內
可能可以額外執行更多thread
來讓閒置的execution resource更能充分的被使用
所以可以知道在大量同性質運算時
Hyper-Threading不見得有用

當然硬體出來後OS才要做thread 分配上的改變
才能適應這套硬體
所以這兩個東西是相輔相成的
我覺得除了名字上雷同外
根本是不同的東西

以上以我破爛的計組計結還有OS知識拼湊出來的
錯了多多包涵

anderson1127 2018-12-01 08:48 AM

.........................

到目前為止,瞭解的程度都還僅止於

1. 以程式設計觀點看thread 運作
2. 以OS的觀點看thread 運作

就是還沒有人可以指出 , 到底純軟體的thread 與CPU的1C2T 的T 到底有何關連 !!
為什麼M$/Linux 等OS要去把這個T去模擬出一個Logical CPU 出來呢??

到底為什麼呢 ??????

NEAL 2018-12-01 11:05 AM

引用:
作者anderson1127
.........................

到目前為止,瞭解的程度都還僅止於

1. 以程式設計觀點看thread 運作
2. 以OS的觀點看thread 運作

就是還沒有人可以指出 , 到底純軟體的thread 與CPU的1C2T 的T 到底有何關連 !!
為什麼M$/Linux 等OS要去把這個T去模擬出一個Logical CPU 出來呢??

到底為什麼呢 ??????


我休假中,有空再畫個圖上來解釋。

Xforce 2018-12-01 05:47 PM

正解就是 NEAL 之前回答,
程式為循序執行(thread) 對應到 CPU 端是以 register set 來實作(Data register, Program Counter ....). HyperThreading 是在一個實體 CPU 有兩套以上 register set 來對應不同的循序執行.

目前 CPU 設計分為幾個 stage, 在 decode, dispatch 後 依照不同指令性質 會被分配到不同的執行單元(integer, floating, memory access), 譬如說 一個整數指令在進行時 浮點運算 或記憶體純取的單元可能是空閒的, SMT的目的 就是盡量讓所有的執行單元能同時運作.

至於軟體端的Thread 實作, 基本上也是一個軟體 Thread 保持一組 register set, 在 context switch 的時候 會置換 CPU register set 內容

anderson1127 2018-12-08 11:05 AM

引用:
作者Xforce
正解就是 NEAL 之前回答,
程式為循序執行(thread) 對應到 CPU 端是以 register set 來實作(Data register, Program Counter ....). HyperThreading 是在一個實體 CPU 有兩套以上 register set 來對應不同的循序執行.
[恕刪]


我一直覺得不對勁.....

如果這說法成立,那也無法解釋 Intel所說的1C2T的2T 為何是2T !!
照這說法如果成立的話,那應該是 1C NT 才對 (N = 為任意整數 , 1 2 3 4 5 6 7 ..... )

事實上呢? N到目前為止就只有2 , 沒別的數字!! :confused:

bureia 2018-12-08 01:02 PM

引用:
作者anderson1127
我一直覺得不對勁.....

如果這說法成立,那也無法解釋 Intel所說的1C2T的2T 為何是2T !!
照這說法如果成立的話,那應該是 1C NT 才對 (N = 為任意整數 , 1 2 3 4 5 6 7 ..... )

事實上呢? N到目前為止就只有2 , 沒別的數字!! :confused:

Xeon phi有一核4執行緒的

Xforce 2018-12-08 09:50 PM

引用:
作者anderson1127
我一直覺得不對勁.....

如果這說法成立,那也無法解釋 Intel所說的1C2T的2T 為何是2T !!
照這說法如果成立的話,那應該是 1C NT 才對 (N = 為任意整數 , 1 2 3 4 5 6 7 ..... )

事實上呢? N到目前為止就只有2 , 沒別的數字!! :confused:

IBM POWER8 最多1C8T.

anderson1127 2018-12-08 11:01 PM

1C4T or 1C8T 隨便啦...

然後呢?? 來一個1C 10000T 如何 ??

沒說明1C8T的T 與 OS裡的thread 的T 到底是什麼關係 !!

是相同的東西嗎?? 那為何Intel說明T的時候,總是組合語言的方式來說明 T
而不是用OS的角度的thread 來當做範例 ??

如果樓上各位說的T是Programming or OS的thread , 那照理說 thread數量根本不受限制
愛有多少個thread 就能夠有多少個thread , 可是到目前為止 ,沒有一家半導體廠商敢宣稱
他們家的T愛有多少個就有多少個 !! 8T就算多了嗎??

愛找語病我沒意見 , 至少也說個東西出來討論嘛!! :think:

到目前為止,沒有答案!! 我也傾向 Intel 所說的Thread , 並不是各位所說的thread !!
兩者的相異之處差太大了!!

bureia 2018-12-09 12:06 AM

引用:
作者anderson1127
1C4T or 1C8T 隨便啦...

然後呢?? 來一個1C 10000T 如何 ??

沒說明1C8T的T 與 OS裡的thread 的T 到底是什麼關係 !!

是相同的東西嗎?? 那為何Intel說明T的時候,總是組合語言的方式來說明 T
而不是用OS的角度的thread 來當做範例 ??

如果樓上各位說的T是Programming or OS的thread , 那照理說 thread數量根本不受限制
愛有多少個thread 就能夠有多少個thread , 可是到目前為止 ,沒有一家半導體廠商敢宣稱
他們家的T愛有多少個就有多少個 !! 8T就算多了嗎??

愛找語病我沒意見 , 至少也說個東西出來討論嘛!! :think:

到目前為止,沒有答案!! 我也傾向 Intel 所說的Thread , 並不是各位所說的thread !!
兩者的相異之處差太大了!!

你先去了解一下單核心的CPU怎麼處理多thread的程式再說吧,
然後多核心CPU怎麼處理多thread的程式,別管1C到底幾T


所有的時間均為GMT +8。 現在的時間是07:04 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。