PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 電腦硬體討論群組 > 系統組件
帳戶
密碼
 

  回應
 
主題工具
anderson1127
Golden Member
 

加入日期: Jan 2002
文章: 3,990
引用:
作者bureia
你先去了解一下單核心的CPU怎麼處理多thread的程式再說吧,
然後多核心CPU怎麼處理多thread的程式,別管1C到底幾T


別鬧了!! CPU本身連OS都不認得,還能指望CPU去認得thread ??

CPU的眼中只有machine code , 其它都不認得!!
     
      
__________________
您想買新硬碟嗎? 購買前請務必參考這篇文章,是我的實際經驗

還想讓統一賺你的錢嗎?統一集團成員(能見度高的):
星巴克、家樂福、7-11、無印良品、黑貓宅急便、聖娜多堡、阪急百貨、
康是美、博客來、夢時代、Mister Donut 、Cold Stone 、龜甲萬、
維力33%股權、光泉31%股權、Smile速邁樂、紅心辣椒、台北轉運站(統一企業BOT)

統一LP33膠囊有環保署早已列管的一級管制品: DNOP塑化劑
舊 2018-12-09, 12:16 AM #61
回應時引用此文章
anderson1127現在在線上  
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,875
引用:
作者anderson1127
別鬧了!! CPU本身連OS都不認得,還能指望CPU去認得thread ??

CPU的眼中只有machine code , 其它都不認得!!

那我問你程式寫成多執行緒是怎麼執行的?既然CPU不認得,那程式多不多執行緒有差嗎?
 
舊 2018-12-09, 12:31 AM #62
回應時引用此文章
bureia離線中  
anderson1127
Golden Member
 

加入日期: Jan 2002
文章: 3,990
引用:
作者bureia
那我問你程式寫成多執行緒是怎麼執行的?既然CPU不認得,那程式多不多執行緒有差嗎?


(嘆) ...........

如何執行請自行Google !! 前面也有人早就提到運作問方式 ....

程式如果有thread化 , 再加上Data之間沒有dependency , 可以充份發揮多核心CPU performance !!
假設4核心CPU , 可以發揮效能接近單核心的4倍 (通常是3.8-3.9左右) !!

這是它的最大好處 , 另一個好處是節省記憶體 , 有多省? 查Google吧....

離題到此我就不再回應 !!
__________________
您想買新硬碟嗎? 購買前請務必參考這篇文章,是我的實際經驗

還想讓統一賺你的錢嗎?統一集團成員(能見度高的):
星巴克、家樂福、7-11、無印良品、黑貓宅急便、聖娜多堡、阪急百貨、
康是美、博客來、夢時代、Mister Donut 、Cold Stone 、龜甲萬、
維力33%股權、光泉31%股權、Smile速邁樂、紅心辣椒、台北轉運站(統一企業BOT)

統一LP33膠囊有環保署早已列管的一級管制品: DNOP塑化劑
舊 2018-12-09, 07:32 AM #63
回應時引用此文章
anderson1127現在在線上  
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,875
引用:
作者anderson1127
(嘆) ...........
如何執行請自行Google !! 前面也有人早就提到運作問方式 ....
程式如果有thread化 , 再加上Data之間沒有dependency , 可以充份發揮多核心CPU performance !!
假設4核心CPU , 可以發揮效能接近單核心的4倍 (通常是3.8-3.9左右) !!
這是它的最大好處 , 另一個好處是節省記憶體 , 有多省? 查Google吧....
離題到此我就不再回應 !!

既然你知道多執行緒是什麼東西,竟然還能在CPU 1C幾T上鬼打牆這麼久
還真不容易

阿不就在軟體層面上把一顆CPU虛擬多CPU化,軟體只要當成有多顆CPU來用即可
不用管實際上到底有幾顆實體CPU,怎麼處理是OS跟CPU的事

此文章於 2018-12-09 10:17 AM 被 bureia 編輯.
舊 2018-12-09, 10:12 AM #64
回應時引用此文章
bureia離線中  
anderson1127
Golden Member
 

加入日期: Jan 2002
文章: 3,990
引用:
作者bureia
既然你知道多執行緒是什麼東西,竟然還能在CPU 1C幾T上鬼打牆這麼久
還真不容易

阿不就在軟體層面上把一顆CPU虛擬多CPU化,軟體只要當成有多顆CPU來用即可
不用管實際上到底有幾顆實體CPU,怎麼處理是OS跟CPU的事


你這句話應該跟樓主去說,不是跟我說!!

此樓就是在探討, intel 說的Thread , 與一般Programming的T是不是相同的 Thread !!

我的答案很明白地說 , 不是 !!

但你不是來討論Intel 的thread到底是何種真面目 , 只是冷嘲 , 我就不奉陪了!! 請便....
__________________
您想買新硬碟嗎? 購買前請務必參考這篇文章,是我的實際經驗

還想讓統一賺你的錢嗎?統一集團成員(能見度高的):
星巴克、家樂福、7-11、無印良品、黑貓宅急便、聖娜多堡、阪急百貨、
康是美、博客來、夢時代、Mister Donut 、Cold Stone 、龜甲萬、
維力33%股權、光泉31%股權、Smile速邁樂、紅心辣椒、台北轉運站(統一企業BOT)

統一LP33膠囊有環保署早已列管的一級管制品: DNOP塑化劑
舊 2018-12-09, 10:32 AM #65
回應時引用此文章
anderson1127現在在線上  
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,875
引用:
作者anderson1127
你這句話應該跟樓主去說,不是跟我說!!
此樓就是在探討, intel 說的Thread , 與一般Programming的T是不是相同的 Thread !!
我的答案很明白地說 , 不是 !!
但你不是來討論Intel 的thread到底是何種真面目 , 只是冷嘲 , 我就不奉陪了!! 請便....

intel的thread就是他家CPU裡邏輯處理器的數量,只是剛好也取名叫thread
像AMD就沒說他家的CPU有什麼Hyper threading

所以你一直在執著在intel的thread跟程式的thread差在哪?
覺得很怪,這也能扯這麼久,還「來一個1C 10000T 如何 ?? 」
你把一顆CPU虛擬成10000顆CPU,有那麼多資源嗎你?

此文章於 2018-12-09 10:44 AM 被 bureia 編輯.
舊 2018-12-09, 10:41 AM #66
回應時引用此文章
bureia離線中  
沒問題
Major Member
 

加入日期: Dec 2015
文章: 208
1C就是一間工廠。
2T就是有樓中樓的工廠共兩層。

1C可以放4條生產線叫superscalar
2T理論上可以放8條生產線。

那為什麼還要1C2T?那是因為2C的稅金比1C2T貴。[畢竟兩間工廠貴,儘管樓中樓不合法]

回到1C2T,實際上,不可能2T都全線開工,所以,要交替的開工。這個叫content-switch。

如果說賺夠了錢,再來建一座新的樓中樓工廠,就可以2C4T。
如果事業做的夠大,就變成一個大工業園區,就有可能8C16T。

有人會說為什麼不來個1C1000T,不是辦不到,不過也沒這麼多樓中樓。
在SPARC上就實現了8C32T。1C就有4T。

古早的C語言中,會把某些壓縮演算法,分別拆分成可多核運算。
這時候就可以使用多C的好處。
這種拆分是以行程為單位,而不是執行緒。「回想一下當年只有DOS,當年也沒有多T,甚至多C還是由多個單顆單核的CPU組合成多路」

由此往下發展,出現了大型主機及終端系統。
一個行程雖然可以透過演算法拆分給多個單顆單核CPU組成的多路執行,但是這「一個」行程卻要同時提供給「多個」client使用,於是產生出一種在行程內的子行程,也就是現在稱為Thread的東西。

在往下發展,到了PC時代及windows 3.1。
大型系統也發展出了thread這樣的技術,而多個單顆單核CPU組成的多路也進步到了多核。
PC系統在windows 3.1下,也將大型系統的thread移進了作業系統中,就是後來的windows 95。

最早先的windows 95把這樣的thread技術稱為協同式多工。是直接bundle在作業系統中。
但同時期的大型系統早已經把多工行程及執行緒分開設計。
大多數的大型系統的作業系統是允許多個行程[也就是先佔式多工],且每一個行程還可以有多個執行緒。[UNIX,IBM OS/2,BeOS都屬於這類]

以上的問題直到windows 2000及windows xp,才被微軟克服。

如有錯誤,請指正。

此文章於 2018-12-10 07:32 AM 被 沒問題 編輯.
舊 2018-12-10, 07:02 AM #67
回應時引用此文章
沒問題現在在線上  
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,875
想了一個不知道是不是恰當的例子

有台機器一次可以列印一張文件、掃描一張文件或複印一張文件(先掃描再列印)
那麼列印一張文件、掃描一張文件或複印一張文件的動作就可視為一個Thread

如果此種機器型號「A」只能一次做一件事(列印時不能掃描(=掃描的資源閒置),反之亦然)就叫1C1T
因為一台機器(=1 Core)同時只能做一件事(=1 Thread)

如果另一台型號「B」在掃描一份文件時同時可以列印另一份文件,這就叫1C2T
因為一台機器(=1 Core)同時可以做兩件事(=2 Thread)

但是在複印時因為資源滿載,所以一台機器不論是型號「A」還是「B」都只能做一件事


類推兩台「A」=2C2T,可以A0列印,A1掃描,一次做兩件事
一台「B」也可以同時列印跟掃描,一次做兩件事

但碰到兩件「複印」任務的話,兩台「A」可以同時完成,但一台「B」就只能
花雙倍時間做兩次「複印」動作

所以2C2T效能能高過1C2T,1C2T又高過1C1T
舊 2018-12-10, 11:57 AM #68
回應時引用此文章
bureia離線中  
Xforce
Senior Member
 
Xforce的大頭照
 

加入日期: Feb 2002
您的住址: 宜蘭
文章: 1,341
執行緒 像是產品製造的工序 第一步進料, 第二步加工 包裝 物流等.

CPU 核心 像是一座工廠 線程數就像是這座工廠對外同時能有幾個工序能同步進行. 為了能同時多個工序進行 每個工序會有相對應的設施 譬如 工序進度表, 工序物料暫存區等. 而同時進行工序數量跟工廠內的生產單元或工序內容有關, 譬如說 過多的對外工序 但沒有足夠多的執行單位, 反而會相對應的資源浪費(為了支援多個工序而產生的相對成本)

OS 角色則是統包商 他在有空的資源下同時可以承接非常多的工序並發包 給多間或一間工廠, 為了讓所有承接的工序都能有進度, 會暫停現有工廠的進行中的工序 置換成其他. 這個步驟就叫分時多工.
__________________
AMD Athlon 64 3000+
Asus A8N-E nfoce 4 empowered
Simems DDR 400 512MB *2
Benq 1640
---------------------------------
舊 2018-12-10, 03:18 PM #69
回應時引用此文章
Xforce離線中  
文仔
New Member
 

加入日期: Jan 2006
您的住址: 台北
文章: 9
通篇看完, 整理一下我這通俗的理解.

先說主題結論, Intel的1C2T, 此Thread跟程式的Thread, 是不一樣的東西.

從OS的角度來看.

譬如說我同時執行著"Google瀏覽器"、"影片播放器", 這兩個稱為"處理程序(process)".

瀏覽器正在同時"下載檔案"跟"玩Flash遊戲"

影片播放器正在播放迷片.

我可以簡單理解為一共4個Thread, 分別為"下載檔案"、"Flash動畫"、"解碼迷片的影像"、"解碼迷片的聲音"
當然應該是不止這4個, 光下載檔案就可以再細分到"網路傳輸"、"硬碟存取"等等...

而由OS不斷將CPU資源快速的切換於這4個Thread中, 好讓我們覺得是"同時"進行.

在CPU資源輪到某的Thread的期間, 應該是拆成很多很多條"指令"(組語)請CPU逐一運算.

OS的工作至此.

CPU的部分, 硬體上擁有多個不同功能的"暫存器"、多個不同功能的"運算單元".

而執行流程, 譬如運算8+7=15.

暫存器A寫入8

暫存器B寫入+

暫存器C寫入7

根據暫存器B的值, 來選用"加法運算單元".

並結果值15寫入暫存器D.

而據N大的描述, Intel實作Hyper-Threading的方式. 即是備有兩套暫存器.

以致同時, 我另有暫存器EFGH, 可以使用"乘法運算單元".

一次做了兩個運算, 所以寫作兩個Thread. 這樣稱為1C2T.

以上是我的理解, 應該對吧?

此文章於 2018-12-10 06:55 PM 被 文仔 編輯.
舊 2018-12-10, 06:53 PM #70
回應時引用此文章
文仔離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



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


vBulletin Version 3.0.1
powered_by_vbulletin 2024。