作者cyrilhuang (YingYingMeiDaiChu)
看板CSSE
標題Re: 有人可以用硬體的角度解釋嗎??
時間Thu Feb 16 16:38:36 2006
※ 引述《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