Blogtrottr
批踢踢實業坊 PC_Shopping 板
 
Re: [閒聊]關於intel hyper threading的解說?
Apr 1st 2015, 22:39, by suyuan

作者suyuan (碩源)

看板PC_Shopping

標題Re: [閒聊]關於intel hyper threading的解說?

時間Wed Apr 1 22:39:53 2015

看到推文想要澄清一下 似乎有些人認為,如果兩個 threads 被塞進擁有 HT 功能的 CPU 的同一個 core 這樣速度一定比把這兩個 threads 分散到同一個cpu的不同的 core 還要慢? 這樣舉例來說, Intel I7 4770 (Haswell) 3.4GHz cpu 來說 他有支援 HT , 所以一共有 4 個實體核心, 8 個邏輯核心,每個實體core有2個邏輯核 所以,大家都注重在「執行」速度上,似乎有些人覺得以下兩種情況 A. 有 2 個 threads 被安排在同一個 core 上的 2 個邏輯核心執行 B. 有 2 個 threads 被安排在不同 core 上執行 似乎有些人認為, B 必定比 A 還要快 實際情況是,有些時候 A 會比較快。 進一步的說明是這樣的,同樣以 Intel i7 4770 Haswell CPU 來說明 這個 CPU 有三層快取記憶體的設計,分別稱為 L1 L2 L3 其中 L1 又分成 Data cache, 以及 Instruction cache 眾所皆知,記憶體的速度遠低於 CPU 的執行速度,快取記憶體也是一樣 L1 快取延遲是 4 cycles, 某些時候是 5 cycles L2 快取延遲是 12 cycles L3 快取延遲是 36 cycles RAM 的延遲是 36 cycles + 50幾ns (或者更多,看記憶體的速度而定) 這個 cycles 意思是說,如果資料在快取上, CPU 要空轉多久等這份資料傳過來給我 快取的設計是,每一個 core 有自己的 L1 快取以及 L2 快取 然後 4 個 core 大家一起共享 L3 快取,當然 L3 快取容量最大,但是速度最慢.. 現在來討論上述 A, B 兩種情況,可能會有以下過程 A 的情況,兩個 threads 被塞進同一個 core 的 2 個邏輯核心 如果這兩個 threads 是來自同一支程式,那麼假設他們共享部分的資料以及運算結果 這個資料很可能會存在 L1 快取裡面,或者 L2 快取裡面 那麼,當他需要這個資料的時候,快取命中的話, CPU 最多只要等 12 cycles 就好 B 的情況,兩個 threads 被分散到兩個不同的 core 裡面 由於不同的 core 只有共享 L3 快取,因此有需要用到共享的資料時 一個 core 要去 L3 快取拿資料,要多等待 36 cycles 說到底,其實 CPU 一輩子的運作時間裡面,大部分的時間都花再等待資料.. 如果是上述情況時,其實支援 HT 的 CPU裡面塞兩個threads在同一個 core裡面 執行速度是會比較快的 因此,早期 windows xp 不懂這些,他是公平的把 threads丟進每一個邏輯核心 這種優點就沒有辦法發揮 但是自從 windows vista 以後的系統,就很聰明了 他會把來自同一個程式的不同 threads 放進同一個core的兩個不同邏輯核心 如果情況是 A 情況時,就會有額外的快取命中的好處,速度會顯著的加快 而來自不同的程式的threads 就會放進不同的 core的邏輯核心 反正他們沒有共享什麼資料的話,這樣分別妥善利用系統資源也是很好 儘管上述情況只是簡化的說明,實際系統運作會更複雜 但是想要澄清一點,並不是有些人原本所想像的那個樣子..什麼假核心.. HT技術也不是有些人想像的那樣沒有價值... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 198.23.71.118 ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1427899196.A.E92.html

assemblies : s大說的是有可能的 但是現在快取對效能的影響很小 04/01 22:45

assemblies : 同頻下I3>I5的機率有多大 不可能賭一把快取會有 04/01 22:46

assemblies : 萬一賭輸了 可能慢很多的時間 快卻只會快一點 04/01 22:47

caramel623 : 快取對效能影響很小嗎? 04/01 22:48

suyuan : 快取對性能影響超級大.....唉... 04/01 22:50

assemblies : 在執行之後當然8個邏輯核心沒有差 我說的是一開始 04/01 22:50

assemblies : 在還沒分配之前 有4間廁所8個門 你說邏輯上有8間 04/01 22:51

suyuan : 我們這些寫程式的人拼命的最佳化...快取影響超大 04/01 22:51

assemblies : 分配的人不用知道只有4間真的 另外4間在那 我看不到 04/01 22:51

assemblies : 直接說是假的不是很容易懂 04/01 22:51

suyuan : 快取的設計如此重要,被你一句影響很小,這情何以堪 04/01 22:52

assemblies : 不知s大寫那種程式的 用那種compiler 04/01 22:53

assemblies : 我們聊的是大家在用的應用程式 特定領域 或server 04/01 22:53

fireslayer : cache影響超大ZZZ這隨便一個受過訓練的coder都知道 04/01 22:53

assemblies : 用途的當然有差 不然XEON那些快取為什麼要那麼大 04/01 22:54

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions
arrow
arrow
    全站熱搜

    wv52434 發表在 痞客邦 留言(0) 人氣()