精華區beta CSSE 關於我們 聯絡資訊
※ 引述《tcmbug (bug)》之銘言: : 我是上面一系列的原po : 我想我把我的問題再問得仔細一點好了,其實大部份大家的回答都是軟體 : 或是OS的答案,有沒有人可以從硬體的角度說明,如之前我看到有個人問 : SMT (simultaneous multithread) 或是 thread partitioning(如何產生緒?) : 之類的問題,因為這些東西在教課書上(硬體)幾乎沒有出現過,或是簡單 : 的帶過了,我重新的整理我的問題如下: : 1)今天看了一篇paper,它把一段程式看成一個process然後一些獨立的process : 序列就當作是一個thread,這樣的說法對嗎? well, 再怎麼樣的multitask在cpu中也是一段一段執行的 由os的scheduler分配time slice 所以硬體上傳統單一cpu中是沒有所謂multithread的 那只是os上的一種觀察的時間scale 感覺起來是平行的 但永遠都是sequence的 這樣子是有問題的 如果你的程式中有I/O的等待 那就會浪費cpu資源了 即使在superscalar裡面的pipeline 也有prefetch,decode,execute等等cycle. 這樣的cycle如果有cache miss等 後段的cycle也是浪費的 superthread 是在同一個執行cycle中如果這個thread不行往下動了 可以讓給 下個可執行thread smt hyperthread是cpu內有部份的電子線路是duplicate的 所以可以同時執行兩個 thread(thread的PC總是要分開的,所以program counter一定有duplicate) well,要享受這樣的好處OS, compiler要支援 well, 回到OS kernel thread是scheduler context switch的基本單位 抱歉 老婆在罵我了 明天繼續OS的process跟thread..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 69.226.208.94
WYchuang:為啥回答問題的同時還可以施放閃光彈啊> <" 02/16 19:02
lg31cm:XD 02/20 11:13