多工處理運作和多核心CPU之間怎麼配合? - Android
By Ivy
at 2014-09-19T11:40
at 2014-09-19T11:40
Table of Contents
外行人的說法,要精確地說法可能還是要請教資工系的同學.
以前作業系統一定要完全的完成一個程式,才會進行下一個,但是
程式在運行的過中,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苦主,兩間公司都在設法掙扎出現在的泥沼中.
不過這是後話,就不多提了...
--
以前作業系統一定要完全的完成一個程式,才會進行下一個,但是
程式在運行的過中,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苦主,兩間公司都在設法掙扎出現在的泥沼中.
不過這是後話,就不多提了...
--
Tags:
Android
All Comments
By Kama
at 2014-09-20T09:10
at 2014-09-20T09:10
By Victoria
at 2014-09-25T09:03
at 2014-09-25T09:03
By Rachel
at 2014-09-25T17:03
at 2014-09-25T17:03
By Quanna
at 2014-09-28T09:51
at 2014-09-28T09:51
By Tom
at 2014-10-01T03:08
at 2014-10-01T03:08
By Olive
at 2014-10-01T17:08
at 2014-10-01T17:08
By Regina
at 2014-10-03T20:17
at 2014-10-03T20:17
By Gilbert
at 2014-10-08T04:46
at 2014-10-08T04:46
Related Posts
能連線到家中電腦看影片的軟體還有哪些?
By Una
at 2014-09-19T06:40
at 2014-09-19T06:40
安卓版PPT
By Caroline
at 2014-09-19T01:00
at 2014-09-19T01:00
NFC還有甚麼好玩的功能
By Bennie
at 2014-09-18T23:21
at 2014-09-18T23:21
蝴蝶機系統更新
By Wallis
at 2014-09-18T23:11
at 2014-09-18T23:11
手機中毒重灌
By Kama
at 2014-09-18T22:28
at 2014-09-18T22:28