為什麼這篇多執行緒 使用 時機鄉民發文收入到精華區:因為在多執行緒 使用 時機這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者JohnLinq (林約翰)看板Programming標題Re: [問題] 硬體 多核/多執行緒...
多執行緒 使用 時機 在 蔣兒?Verna Jiang Instagram 的最讚貼文
2021-08-16 11:16:14
#與黑暗和解🤙🏼 『黑暗』其實無孔不入 我們不可能一直存在光明或者光明永不滅 如同白天黑夜的並存 讓我們在夜裡有了沈澱的空間🌙 我們如何與黑暗和解 才不會被黑暗吞噬與看不見光明 你曾被負面黑暗能量而感到力量嗎? 被激起人內在的黑暗面 讓你持續困在這個困境 精神失常、或這做出非理智的思考與行為 ...
※ [本文轉錄自 C_and_CPP 看板]
作者: JohnLinq (林約翰) 看板: C_and_CPP
標題: Re: [問題] 硬體 多核/多執行緒 與 軟體運作
時間: Thu Nov 6 10:22:33 2008
※ 引述《JamesWW ( )》之銘言:
: ※ 引述《JohnLinq (林約翰)》之銘言:
: : 目前正在學習函數指標,
似乎偏離了本板主旨.......... Orz
: 就軟體角度來探討 process (heavy weight process)
: 與 thread (light weight process)的使用時機的話,
: 其實並不單純只是以 "複雜" 程度來判斷是否採用 process 或者 thread,
: 以下列舉一些他們的使用時機:
: ◎ multi-process 使用時機
: -robustness level
: -security
: -least data exchange
: ◎ multi-thread 使用時機
: -frequently data exchange
: 更細部的相關資料可從 Operating system 的書籍中找到。
以下,懇請指正。
====================>
多核心:擁有多個CPU。[請了多個工人]
(硬體)多執行緒:一顆CPU擁有許多不同的處理單元,
整數運算單元、浮點運算單元、邏輯運算單元,取指令單元等等;
當 執行緒-A 在使用 整數運算單元 的時候,
執行緒-B 可以使用 浮點運算單元。
[一個工人擁有三頭六臂]
============================================================
====================>
純量處理器 scalar processor:一個指令 一次 操作 一兩個資料項。
向量處理器 vector processor:一個指令 一次 操作 多 個資料項。
超純量處理器 superscalar processor 是以上兩者的混合:
一個指令 一次 操作 一兩個資料項,
但是,處理器內有多個運算單元,可以同時處理多個指令。
以上是 指令級並行。
提昇 指令級並行 效能 的技術:
流水線(管線)、分支預測、非循序(亂序)執行。
============================================================
====================>
在指令級並行之後,為了進一步提昇效能 而提出 執行緒級並行。
粗粒度交替多執行緒 -> 卡住才切換
細粒度交替多執行緒 -> 輪流切換
以上同一時間只有一個執行緒能夠被執行。
同步多執行緒 Simultaneous multithreading (SMT):
( http://en.wikipedia.org/wiki/Simultaneous_multithreading )
In simultaneous multithreading, instructions from more than one thread
can be executing in any given pipeline stage at a time. This is done
without great changes to the basic processor architecture: the main
additions needed are the ability to fetch instructions from multiple
threads in a cycle, and a larger register file to hold data from multiple
threads. The number of concurrent threads can be decided by the chip
designers, but practical restrictions on chip complexity have limited
the number to two for most SMT implementations.
^^^
簡言之,將 多個 執行緒級並行,打散為 更多個 指令級並行。
於是,問題又回到了指令級並行,
如何打散指令、如何分派指令、如何管理指令的執行,
如何填滿流水線,如何填滿各個運算單元。
============================================================
====================>
在多核心的狀況下,
核心與核心之間的溝通效能,多個工作的分派與管理,仍然是必須考量的問題。
(軟體) Process的分時多工,是較為巨觀的,
所考量的,是位於CPU+RAM外部的資源;
(硬體)Multithreading的分時多工,是較為微觀的,
所考量的,是位於CPU+RAM內部的資源。
CPU本身的效能持續提昇,
CPU存取RAM(外部記憶體)的效能,卻一直停滯不前,
所以,才會有 (硬體)Multithreading 的出現。
CPU內部的執行緒級並行,
最終還是必須考量 如何填滿 各個硬體上的運算單元,
也就是說,作業系統與編譯器,
必須有能力將程式碼分拆,並且重組為合適的 機器指令流。
軟體的Thread似乎與硬體的Multithreading無關?
============================================================
====================>
作者:[email protected]
就軟體角度來探討 process (heavy weight process)
與 thread (light weight process)的使用時機的話,
其實並不單純只是以 "複雜" 程度來判斷是否採用 process 或者 thread,
以下列舉一些他們的使用時機:
◎ multi-process 使用時機
-robustness level
-security
-least data exchange
◎ multi-thread 使用時機
-frequently data exchange
更細部的相關資料可從 Operating system 的書籍中找到。
============================================================
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.221.140.178
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.221.140.178