Re: [請益] 多工處理運作和多核心CPU之間怎麼配合?

作者: pipidog (如果狗狗飛上天)   2014-09-19 11:40:20
外行人的說法,要精確地說法可能還是要請教資工系的同學.
以前作業系統一定要完全的完成一個程式,才會進行下一個,但是
程式在運行的過中,CPU並不總是滿載的,有時候會有等待的時間.
所謂多線程,指的就是CPU可以利用這個時間去處理另一個任務.
例如你看醫生,醫生可能會幫你噴藥,噴完藥會要你在旁邊等一陣
子.這個時候醫生基本上是閒下來的.這段閒下來的時間,作業系統
會去妥善的紀錄跟配置那個噴完藥的病人等下回來要做些什麼,然
後拿這段空出來的時間去看下一個病人.下一個病人看到一半,也許
他也需要做些處理,CPU又會空出時間來,他會再回去處理原本那個病人.
所以實際上只有一個醫生,但因為醫生可以利用的空下來的時間來
處理另一個個病人. 因此"看起來",我們會發現診間裡面總是擠了
兩個人,這就給人一種診間裡面有兩個醫生(CPU)的錯覺.
至於多核心,這就很好理解了,所謂雙核心,就是裡面真的有兩個醫
生,各看各的病人互不相干. 當然如果這兩位醫生又同時有雙線程
的功能,那就會產生出一種四核心的錯覺.
但講的這麼美好,雙線程真的打得過雙核心嗎? 當然不可能,實際
上,雙線程提升的效率大概只有20%.並沒有想像中美好.這種多線程
的遊戲,intel已經是其中的佼佼者了.
當然另一種思路就出來了,既然多線程終究只是一種多核心的"模擬"
,有沒有可能我們真的盡可能做出多核心呢? 可以,這就是後來幾年
AMD在作的事情.
AMD的基本思路是,他盡可能的做出完整的多核心,但是完整的多核心
,成本會相當的高,所以他做了一種特殊的CPU設計.我們想像一下,
一般我們去看醫生的時候,是不是會先有很多小東西會有護士小姐幫
我們做? 量血壓,量身高,詢問病情等等,然後才是去看醫生?
所以AMD的想法是,我把CPU的功能給切割開.甚麼意思呢?我們的電腦中
涉及的計算主要有兩類,一個是整數運算,一個是浮點數運算.在大多數
的使用情境下,整數運算大約佔80%,浮點大約占20%.AMD的想法就是,
我做出兩個整數計算的CPU然後搭配一個浮點運算的CPU.讓浮點運算
,是共用的,而需求量大的計算整數運算則是專用.
這就有點像是,兩個醫生共用一個護士,那些較少用到的計算需求,如
果真的用到了,就丟給護士處理,CPU主要就處理最常使用的部分.
所以AMD的雙核心常被稱為1.5核心. 因為他其實是一顆完整的CPU
(整數+浮點)再配上另一顆整點運算核心.
那這樣子的搭配實際的效果如何呢? 當然比多線程的假多核心好很多,
實際上的效率大概會比單核單線程多出80%.
所以簡單的說,跟原始的單核單線程相比:
多線程 ~ 120%, 殘雙核心 ~ 180%
後來的CPU,不管如何發展,不管如何設計,大致上也離不開這兩種架構.
這麼說來,AMD的CPU不是比intel好得多? 當然不! 如果是真的,AMD就不
會節節敗退了. 事實上AMD主要是做設計,製程技術主要還是靠代工廠,
但是intel在CPU的製程技術上是遙遙領先所有的對手的(包括台積跟三
星),這就導致了AMD的架構,理論值雖好,但由於製程技術的落後,所以
總的效能,功耗,各方面的指標都是低於intel的,唯一可以比的可能只有
CP值.加上AMD後來更專注在顯卡的發展,CPU技術自然就逐漸被intel拉
開差距了.但這幾年手機晶片大行其道,其實不管intel也好,AMD也罷,
都是ARM架構下的x86苦主,兩間公司都在設法掙扎出現在的泥沼中.
不過這是後話,就不多提了...
作者: rogner (有沒答題會被戰的八卦)   2014-09-19 11:50:00
其實nehalem架構發表後 AMD就開始明顯落後sandy bridge之後更無力回天所以你上面說的2配1的bulldozer 會輸 製程只是小部分原因至於專注在GPU 那是不得已呀 轉成APU才稍有機會擴大市場
作者: wiabc (cbaiw)   2014-09-19 12:42:00
amd不只輸在製程,用你的例子來說,醫生的能力也比較差
作者: pipidog (如果狗狗飛上天)   2014-09-19 12:49:00
樓上兩位正解,尤其專注在GPU是不得已的,更是正解如果GPU的戰場再輸,amd真的要脫褲了
作者: bitlife (BIT一生)   2014-09-19 14:07:00
amd如果脫褲,intel可能也會被分屍才會有傳說中的給你錢不要倒

Links booklink

Contact Us: admin [ a t ] ucptt.com