題:
為什麼Android手機具有比計算機更多的內核?
v6ak
2017-06-11 14:54:12 UTC
view on stackexchange narkive permalink

筆記本電腦通常最多具有四個核心,而雙核心可能更常見。我最近已經從四核切換到雙核,並且可以確認四核的用例數量有限,即使執行CPU密集型任務。

另一方面,在手機上,四核,六核和八進制似乎常見。為什麼?哪些任務可以利用它們?

我知道 big.LITTLE可以成為答案的一部分。也就是說,這麼多內核的主要好處不是能夠同時使用所有內核,而是使用功耗適合當前工作負載的內核。但是,例如,Snapdragon 625具有八個Cortex-A53內核,這似乎不是big.LITTLE的情況。

也許ARM架構的每瓦最佳性能較低。也就是說,將單個內核調整為每瓦最佳性能會導致ARM上的性能低於Intel上的性能。因此,使用了更多內核來提供性能。這只是一個假設。

但是即使在這種情況下,我也看不到什麼工作負載可以有效地使用手機上的八個內核。在筆記本電腦上,我可以想像一些像項目的完整(非增量)編譯。但是在手機上?

  • 遊戲可能會要求很高的性能,但是它們通常需要GPU性能而不是CPU,不是嗎?
  • 理論上,多核可以加速在安裝或升級時(即“優化應用程序3/121”階段)進行Android Lollipop / Marshmallow AOT編譯。但是,我不確定這是否可以利用多個內核。據我記得的代碼,一次只編譯一個應用程序,但是編譯過程本身可能存在一些並行性。
  • Android 7+還可在編譯時利用多個內核。但是由於據報導它在空閒和充電時會編譯,因此收益似乎很小。至少當一個人整夜為手機充電時,我真的不在乎這種情況下是花費30分鐘還是兩個小時。
正如我在回答中指出的那樣,請記住,您似乎正在顛倒地看待事物。多核/並行執行是常態,不是您的電話是擁有許多核的異常,而是PC CPU是異常。
您的問題是有缺陷的,PC可以擁有比電話更多的內核。https://www.intel.com/content/www/us/en/products/processors/core/x-series/i9-7900x.html甚至還沒有進入服務器級機器,該機器可能有數十台甚至更多台數百個核心。(有些超級計算機進入了數千核的範圍。)
@JAB當然可以,但是我不是在談論最大核數,而是在談論典型核數。對於筆記本電腦,不止四核是非常罕見的,但是您可能會發現一些例外,例如Xeon。對於手機,甚至八角形似乎也比較普遍。
“我最近已經從四核切換到雙核,並且即使在CPU密集型任務中,我也可以確認四核用例數量有限。”-您能否擴展並詳細說明得出該結論的方式?
@Abdul主要來自我的觀察(使用htop或類似工具查看系統負載),部分來自我的結論。甚至我期望並行化的一些taksk(例如,使用OpenScad渲染)都是單核的。Firefox(ESR)通常最多使用一個內核。增量編譯–我沒有進行過度量,但是從直觀上看,找到獨立任務的機會不多。(完全編譯是另一種情況。)
請注意,FF可以利用多個內核。打開“ about:config”並檢查“ Multiprocess Windows”條目。在我的情況下說`0/1(由附加組件禁用)`,但是如果我禁用有問題的附加組件,它將被激活。
@Daniel也許它存在於較新的版本中,我有45個ESR。無論如何,這將允許對多個頁面使用多個內核(我認為頁面可能按域分組在進程中),而不是對一個頁面使用多個內核。但是也許就如Servo的實驗所暗示的那樣。
請參閱[八核智能手機的速度不如您想像的快](https://www.extremetech.com/extreme/209760-that-eight-core-smartphone-isnt-as-fast-as-you-認為它)和其中的鏈接紙。
八 答案:
iBug
2017-06-11 15:51:16 UTC
view on stackexchange narkive permalink

您已經註意到, big.LITTLE組合策略(從技術上講,是 HMP ,異構多處理集群是產生這麼多(有時甚至是太多)內核的主要原因。移動設備通常會遇到多種情況,包括重載和輕載。

極端的消費類示例是聯發科的Helio X20,它具有2個面向性能的A72內核,4個平衡的A53內核,加上4個高能效A35內核。在不同的使用情況下,這非常靈活。但是,我認為通常 8核 s> 2個群集就足夠了。

還有另一個類似台式機的示例,即高通公司的Snapdragon 800系列(S 800,S 801和S 805)。每個SoC中只有4個內核具有相同的微體系結構,其中2個時鐘較高,而2個時鐘較低。高通之所以製作這些SoC,是因為他們對自己的微體系結構(Krait 400和Krait 450)非常有信心。中央處理器。如果沒有其他東西為GPU提供要處理的數據,GPU便無法單獨​​工作,而這是CPU在玩遊戲時要做的主要工作之一。在大多數遊戲情況下,GPU僅渲染圖形,而所有其他工作(如加載數據,資源和資產以及計算遊戲中的機制(如係統,環境和物理))均由CPU完成。如果在使用低端CPU的同時升級GPU,您將不會觀察到更高的幀速率。

第二個原因是 Android如何利用CPU資源。 Android幾乎可以創建自己的應用程序環境。它只使用Java中的代碼(和API),但僅使用自己的虛擬機Dalvik,後來被ART(API級別21)取代。 APK具有“中性”格式的可執行代碼,與Java中的 .class 文件非常相似。在運行之前,代碼會再次編譯成計算機的本機指令 [1] sup>。編譯過程是多線程的,可以利用多核來提高性能。
當應用程序運行時,還有其他幾個與應用程序並行或併行運行的進程和機制(例如垃圾收集器) 。
1。更多的內核可以使支持性流程和主應用程序更有效地運行。如果使用文件類型標識符,則會發現“優化”的dex文件採用ELF格式,而“中性”的dex文件只是採用自己的格式。 sub>

另一個較小的原因是 ARM內核不能像Intel x86芯片一樣快運行。英特爾x86微體系結構的歷史可以追溯到1976年,當時開始設計英特爾8086芯片,這意味著x86已經發展了很長時間。以 Core i5-660為例(GeekBench,單核),單個現代高端ARM Cortex-A73內核僅與Intel Clarkdale內核一樣強大。這是因為x86是 CISC微體系結構,而ARM是 RISC微體系結構。您當然不希望手機只有兩個左右的活動應用程序。更多的核心將有助於減輕壓力。這就是為什麼雙核SoC僅在智能手錶上相對受歡迎的原因。誰需要智能手錶的性能?

有趣的是,與相同負載下的單個內核相比,更多的內核將導致更少的功耗。 CPU頻率與功耗之間的關係不只是線性關係,因此兩倍的頻率將始終導致兩倍以上的需求,甚至是三倍或四倍的功耗,而性能卻不到兩倍(由於其他資源限制,例如緩存) )。因此,在相同的負載下,四個核可以輕鬆擊敗單個核,從而提供更好的性能,同時需要更少的功率。

進一步閱讀:

評論不作進一步討論;此對話已[移至聊天](http://chat.stackexchange.com/rooms/60327/discussion-on-answer-by-ibug-why-do-phones-have-more-cores-than-computers)。
我記得在某處曾經讀過或看過Linux內核最初是在良好的多核支持下工作的,並且專注於超級計算機,而這些努力被證明對智能手機“將來”(現在)有用,例如“事故”
儘管已被接受,此答案似乎並未真正回答問題。這個答案似乎是在回答“為什麼我的手機需要額外的內核?”這不是眼前的問題。它沒有解釋PC和Phone之間的區別。為何手機可能需要更多內核的觀點也適用於台式計算機,尤其是關於遊戲的觀點。
我將上述評論重新添加到聊天中之後,又重新添加了。我的評論不是任何“擴展討論”的一部分,並且特別是關於此處眼前(非)答案的完整性。如果它實際上是在回答問題,我會+1,但是由於它實際上並未在回答問題,因此需要添加一些適當的內容。
1976年對x86 CPU的宣稱有些誤導。ARM內核可以追溯到1983年的Acorn RISC Machine項目(僅7年後),從某種程度上講,更新是一種優勢,Acorn學會了x86和類似CPU設計開發中的一些錯誤,並將其整合到了其中。臂。
兩者之間的主要區別在於,英特爾已投入大量資金來構建盡可能快的CPU,以排除其他所有CPU,而ARM專注於效率更高的CPU,無論是在每個週期的功耗方面,和成本。
RISC vs CISC也與此無關,英特爾CPU內部運行一個RISCish內核(微指令)。真正的區別在於出庫或訂單與訂單執行。
顯卡具有數千個內核。這完全取決於它們的用途。
@user1937198 AFAIK對於ARM和x86 / x64都有CPU類型(有序和無序)。
@Overmind視頻卡是一個完全不同的類別(CPU內核是獨立的,您所談論的GPU“內核”實際上是耦合線程),並且設計用於完全不同的工作負載。
x86的確很……錯誤。它們是超標量芯片,基本實現無法像大多數ARM芯片中使用的經典RISC管道一樣出色。還要注意的是,由於亂序執行和緩存層次結構,將內核與超標量設計鏈接在一起非常困難。沒有人知道他們丟失了什麼,所以並沒有真正的需求。如果您發現某些英特爾的較新版本不在高內核數芯片中-它們位於Broadwell上,這是因為它們在空間不足的情況下丟棄了同步內容。
x86 ISA和JavaScript都不本質上特別適合於快速-實際上,在很多方面,x-ISA或JavaScript恰恰相反(例如,在x86複雜的情況下,不規則的指令給解碼器施加了壓力,所有副作用使得難以分析依賴關係和利用指令級別的並行性,只有很少的寄存器會迫使溢出到堆棧上;在JavaScript中,具有,動態類型化和屬性查找會迫使許多決定在運行時被延遲。
儘管如此,出於同樣的原因,它們還是同類產品中最快的:一些大公司聘請了他們領域內最好的人才,並讓他們努力解決問題;如果進行了足夠的研發,則可以解決許多設計問題,並且其結果可以比初始設計中等效或更好的設計具有更好的性能。
關於Java的評論完全無關緊要。大多數性能出色的應用都不使用Java,而是通過NDK使用本機代碼:遊戲,瀏覽器引擎,PDF渲染器...沒有人會瘋狂地嘗試使用Java。Android上的Java原本是指台式計算機上的腳本語言。
我通過“這是因為x86是CISC微體系結構而ARM是RISC微體系結構”與您在一起的,這與之無關。這是因為x86投入了硬件,以識別相關性並將指令流盡可能高效地饋送到多個特定於芯片的流水線中-“高效”是指“通過執行它們”,同時節省了可選的次要問題。x86的特定處理方式是_通過將CISC ISA解碼為RISC µISA並將其提供給RISC core_,然後在完成時將結果重新映射到CISC模型。
motoDrizzt
2017-06-11 23:10:25 UTC
view on stackexchange narkive permalink

原因之所以簡單,就是複雜。

簡而言之,就是“因為手機市場從來沒有而且不是由英特爾驅動的。”

漫長的答案是在這裡要恢復的時間太長了,但是基本概念是,英特爾多年來已經以一切可能的方式主導了PC市場,以至於付出和破壞(並為此被罰款)以使他的CPU成為第一個CPU。

擁有市場的完全控制權,可以讓英特爾高漲CPU價格,同時人為地決定用戶應該想要哪些功能和多少處理能力,以及您是否進行了一點分析。英特爾的歷史上您會注意到,它的主要優勢基本上在於CPU頻率的提高,因此,它幾乎從未嘗試過做一些真正聰明或創新的事情。它並不需要它,因為它可以對人們說:“您不需要更多的內核,但是我有這種多汁的新CPU,其運行速度快了100 MHz”。同時,它可以以高得離譜的價格在服務器市場上出售多核CPU(因為服務器總是需要噸並行功率,以至於嘗試使用當前趨勢)來實現使用...猜測服務器的服務器?您的數百個廉價電話CPU並行工作) sub>

這反過來反映到了開發人員社區中,而該社區從未趕上並行編程的重要性,因此,即使不是大多數,它們中的許多人也從來不會打擾一次使用多個線程,或者以一種非技術的方式來表達它,讓他們的軟件一次執行多個任務。順便說一下,當您的客戶群中有99%擁有最多兩個核心時,這才有意義。可悲的是,這導致了一個傳說,即並行算法確實難以實現,並且僅適用於一小部分問題。

相反,最終,移動市場從未見過英特爾成功。相反,實際上恰恰相反,因為英特爾通常會嘗試做一些不同於通常的X86架構的事情。因此,缺乏市場的影響力和控制力,其他CPU生產商已經朝著PC市場之外的時代的正常方向發展:並行計算。
您確定要回答“正確的問題”嗎?
@iBug顯然,是的。如果有人選擇一隻白羊和一隻藍羊,問“為什麼白羊不像其他所有流浪貓一樣藍?”OP面臨的問題是認為白羊是個例外,而事實恰恰相反。
嗯?我認為您需要更多的才智來製作快速核心,而不是先創建慢速核心再按Ctrl-C / Ctrl-V。我記得在一次採訪中讀過一篇關於lntel進一步加快CPU速度的困難的採訪,計算機科學家說“我不需要更多的內核,我想要更快的內核”,而Intel的傢伙則說“更快的內核就是您想要的”,但是您將獲得更多的核心”
@iBug這個答案比OP接受的答案更適用於OP的問題。可接受的答案是未回答正確問題的答案。
“人為抬高CPU價格”->如果英特爾人為抬高價格,為什麼他們的競爭對手使用價格相近的硬件,為什麼與英特爾硬件相比,ARM供電的計算機如此難堪?這種討厭的想法是荒謬的。製造CPU是_hard_。使ARM在移動設備中如此受歡迎的原因是big.LITTLE想法,這是他們在Intel之前想到的。
另外,我很確定是_Intel_以_Celeron D_系列以預算價格開始了多核產品。您的答案毫無道理。
英特爾並沒有控制PC芯片市場,而且已經有很多年了。芯片設計人員從更快的時鐘轉向更多的內核的原因是,更快的時鐘遇到了一些基本的物理限制。解決更多核心是一個更難解決的問題,因此他們推遲了它,直到這是保持性能不斷增長的最經濟有效的方式。
這個答案肯定是關於綿羊的。
這個答案沒有道理。英特爾是個人電腦芯片製造商之一。問題是,為什麼手機比PC具有更多的內核。不是為什麼手機比英特爾PC具有更多的內核。該答案假設Intel = PC,情況並非如此。
這更像是邪惡的英特爾公司的怨言,因為ARM也為獨立的芯片製造商提供了許可證,所以它對IMO也不值得。
不明白為什麼這麼多負面言論都在談論抨擊英特爾。我是Intel的忠實粉絲,而且我會全力以赴,但是在過去幾年中,它們在AMD上佔據著市場主導地位時,它們的發展一直很緩慢。隨著Ryzen CPU的發布,它們實際上具有競爭力,令人驚訝,令人驚訝,洩露的消息表明,英特爾突然製造了32個CORE(64線程)處理器Xeon,並傳出10個核心發燒友cpus的傳聞。但是請不要忘記,這幾年來他們在模切方面取得了進步。
英特爾已經達成了20年前曝光的可疑交易。當時他們擁有AMD,Cyrix和競爭對手,並試圖建立準壟斷。他們擁有一些您可以找到的最先進的晶圓廠,而x86系列內部長期以來一直是RISC cpu的內部設備,而解碼器則在前面CISC說明。您給出的是完全沒有根據的信息
我不明白為什麼會收到這麼多“肯定”的回复;這不能回答原始問題,而且是胡說八道。一直追求提高單線程性能,因為它可以輕鬆加速所有操作。所有較舊的單線程程序將獲得免費午餐,多線程程序也將受益。由於物理限制,我們已停止增加頻率-甚至,如果您認為486和Pentium 4之間的唯一區別是指令時鐘,則需要認真地迷惑-超標量x86處理器非常出色...
...複雜的野獸,幾乎可以完全透明地應用所有自動優化(無序執行/指令級並行性,寄存器重命名,分支預測,所有緩存,µop爆炸/融合)來執行遺留IA方式。您僅靠製造更高的486根本無法達到這樣的性能水平。“並行算法真的很難實現”這一說法完全是虛假的。除了所謂的“令人尷尬的並行”問題外,使算法的並行版本是最困難的之一。
...我們面臨的挑戰,在許多情況下(通常,當您需要算法前一階段的數據來提供下一階段的數據時)就無法完成,除非您有無休止的數據流來闡述,這樣就可以進行管道傳輸。此外,當您擁有共享資源以在多個執行線程之間切換時,*高效*和*正確*並行編程本身就是一個非常艱鉅的挑戰。甚至Linus Torvalds也警告說,不要太聰明地發明同步原語,因為通常幾乎沒人能正確地做到這一點。
David Schwartz
2017-06-11 23:44:33 UTC
view on stackexchange narkive permalink

發生了兩個因素,一個是非常實際的,另一個是歷史的。

實際原因是手機中使用了混合架構。功耗對於電話至關重要,電話在性能要求極低的模式下花費大量時間。在需要很少的性能時優化一些內核以降低功耗是有意義的,而在需要時優化一些內核以提供最大性能是有意義的。

另一個原因在很大程度上是歷史原因。直到2005年左右,台式機CPU都是單核。台式機CPU性能的提高幾乎完全在於使內核每秒可執行更多指令。即使在今天,如此之多的桌面軟件仍無法充分利用多核,以至於許多人寧願使用具有4核的CPU而不是擁有比內核慢20%的8核CPU。盡可能需要大量的CPU資源。這是不動產,可以用於提供更多核心。這就是為什麼英特爾最新的Kaby Lake CPU最多可以使用4個內核,而人們之所以購買它們,是因為每個內核都比其前身的內核更快。對於許多人來說,它們甚至是具有更高內核數的CPU的升級。

隨著時間的流逝,希望看到更多完全優化的桌面軟件能夠支持更多內核。在這種情況下,工程上的權衡取捨將開始傾向於在台式機上使用更多的內核而不是更快的內核。儘管幾乎可以肯定內核會變得更快,但您會開始看到人們更喜歡8核CPU而不是4核CPU,即使每個核的速度慢20%。芯片設計師將緊隨市場。

Tara Eicher
2017-06-12 08:29:00 UTC
view on stackexchange narkive permalink

對於手機而言,至關重要的是能夠在短時間內提供計算能力(我們需要某些應用程序要快),同時還要避免過熱(手機的散熱比筆記本電腦或PC困難得多)。為了實現這一目標,架構師將電話設計為在工作負載較小時使用單個內核,並在需要時提供額外的內核以提高性能。如果電話使用的大型內核較少,那麼即使工作量很少,過熱也將成為問題。

來源:研究生級計算機體系結構課程。

實話實說,在短時間內提供計算能力(如果這就是*能源*的意思)的能力對於台式機也是至關重要的。這就是為什麼他們在Intel芯片上安裝TurboBoost的原因。
是的,計算能力就是我的意思。的確,所有預期在某個時間點會有大量工作負載的設備(包括電話和台式機)都必須能夠處理。主要區別是散熱。
我同意您的意見,只是想指出,突發性工作負載並非特定於手機。
Dmitry Grigoryev
2017-06-13 15:26:41 UTC
view on stackexchange narkive permalink

首先,從歷史上看,Java虛擬機可以比典型的桌面軟件受益於多核。即使您使用Java編寫單線程應用程序,它也將在多核上運行得更快,因為大多數垃圾收集器代碼將與您的應用程序一起運行。

第二,許多事情正在進行中手機上的背景:自動更新,廣告下載,防病毒軟件,GSM模塊管理等。在一台筆記本電腦上,所有這些任務幾乎無法使一個內核忙碌,但是ARM內核的功能要弱得多,因此您可能需要如果您想要響應式系統,那麼至少有一些專門用於後台任務。

最後是市場。沒有多少用戶能夠評估他們是否將從8核中受益,但是8核智能手機肯定比2核或4核智能手機貴。

我一直看到“ ARM內核功能不那麼強大”的說法-這到底是什麼意思?他們的時鐘速度慢嗎?
@Abdul每秒的操作更少。x86芯片可以一次執行多個操作,因此即使在相同的時鐘速度下,它們也勝過ARM。查看[此比較](http://www.passmark.com/forum/pc-hardware-and-benchmarks/3403-comparing-computers-to-phones-cpu-performance):頂級ARM芯片(GT-I9100)比頂級x86芯片(i7-2920XM)慢10倍。
“每秒操作數”是FLOPS的同義詞嗎?
@Abdul不一定。實際上,除了遊戲和物理模擬之外,浮點數的使用並不多。同樣,許多ARM芯片通過降低精度達到了不錯的FLOPS,因此也不是一個真正的衡量標準。
Android應用程序無法在Java虛擬機上運行。他們在Dalvik VM上運行
-1
像同步這樣的後台任務大部分都是IHO的,恕我直言,並且優先級較低。GC可能是一個用例,但是與並發GC(即可以在收集時保持應用程序運行的GC)一起使用時,我懷疑您通常會看到一個以上的額外內核的好處,除非GC經常運行。當GC必須經常運行時,可能出了點問題。
@v6ak是的,但是每個進程都不會有GC線程嗎?因此,一旦電話上運行了2-3個活動進程,則4-8個內核就顯得不那麼合理了。
@DmitryGrigoryev您是否認為在多個流程中使用重型GC是常見的情況?實際上,與並發GC相比,使用Stop-the-world GC進行許多後台處理可能會更好。停止運行GC的主要缺點是突然打h,這通常在後台進程中無關緊要(除了播放音樂之類的少數例外,但無論如何,它們大多由本機代碼或硬件加速處理)。並發GC具有一些開銷,從而降低了總吞吐量,因此對於典型的後台進程而言並不理想。
並發GC具有一個優點,即通過使用整體上更多的內存來使用更少的內存帶寬。內存帶寬是ARM和智能手機技術的真正問題之一。
DarthPaghius
2017-06-13 12:02:30 UTC
view on stackexchange narkive permalink

到目前為止,答案已經解釋了導致Android手機上CPU內核數量過多的問題。再讀一遍; Android手機。多年來,iPhone一直只停留在幾個內核上,並且仍然比任何Android旗艦都更加流暢。

Android的設計師在決定選擇Java編程時做出了巨大的賭注,因此JVM作為應用程序的運行時。 Java,由於其設計原理,通過犧牲性能解決了在每個CPU體系結構上運行之前需要編譯和構建代碼的問題。 Java引入了一個笨重的虛擬機,通常稱為JVM。 JVM實際上在軟件級別上仿真CPU,以避免需要為每個設備分別編譯代碼。可以將JVM視為具有相同屬性的虛擬CPU,而與運行該設備的設備無關,因此該代碼只需要為JVM編譯一次,然後就可以在每個設備上運行。這使製造商可以在擔心應用程序兼容性之前拋棄所需的任何硬件。這也使它們的設備可以同時使用笨拙的低端設備和高質量的高端設備來佔領市場,並最終佔據主導地位。

JVM本身只是一個規範,人們可以自由開發自己的JVM。只要符合此規範。原始的android JVM稱為Dalvik。如今,Google已將其替換為ART。

現在JVM有什麼問題?它是一款沉重的軟件,會消耗大量計​​算資源。再加上Java語言的其他一些屬性,例如垃圾收集,對於具有中等硬件能力的設備,JVM的資源消耗就變得太多了。設備上打開的每個應用程序和系統服務本身就是ART JVM的一個實例,現在您可以得出結論,管理它們都需要一些真正有能力的硬件。當需要繪製用戶界面時,情況將變得更糟。

每個應用程序都在多個線程上運行。每個CPU內核一次只能運行一個線程。每個應用程序都有一個主線程,在該主線程上執行與用戶界面有關的任務。每個應用程序用於執行文件訪問,網絡等操作的線程可能更多。通常,打開的應用程序(和系統服務)要比CPU內核多,因此,通常線程數要比CPU內核多得多。因此,每個內核都必須不斷地在處理不同的線程之間進行切換,每個線程只做一小部分然後轉到下一個線程。這種切換對於CPU來說要花費很多時間,並且在應用程序本質上是JVM的情況下,此任務變得更加詳盡。通過增加內核數量,您可以簡單地減少每個內核需要擔心的應用程序(以及線程)數量,從而提高總體性能。

基於此解釋,我們可以推斷出android需要強大的硬件運行平穩。早期的Android設備以滯後,崩潰和許多其他不幸的事情而聞名。但是這些年來,這些問題主要通過依靠強大的硬件來解決。

另一方面,iOS應用程序被編譯為本機代碼,因此不需要虛擬化。使用的語言和操作系統也更加高效,因此可以使這些設備保持平穩,而無需使用過多的芯片組。

這很好地解釋了為什麼手機比台式機功能強大得多。還是不是?
“這使製造商可以在擔心應用程序兼容性之前拋棄所需的任何硬件。”–很好,但是我不確定這是否是(最初)用於相機的系統的意圖。
“每個應用程序可以有更多線程來進行文件訪問,網絡等工作” –這些線程受I / O限制,不佔用太多CPU。有時,I / O僅由一個線程處理,因為CPU比I / O設備快得多。
“早期的Android設備以滯後,崩潰和許多其他不幸的事情而聞名” –我記得在這樣的手機(Xperia Mini Pro)上運行棉花糖,並且我認為還有很多其他原因導致速度慢於CPU。它們在低RAM上運行,而MTD等閃存設備較慢(某些操作比microSD卡要慢得多),而較舊的Android則使用效率較低的“ JVM”(從技術上講不是JVM)。當然,更好的CPU也會有所幫助,但我離這樣的結論還差得遠。
同樣,在CPU線程中執行I / O(或其他長時間操作)之類的編程風格會使應用延遲,而與CPU性能無關。AFAIK,這種樣式在早期的Android應用中非常普遍。即使使用現代手機,此類應用程序也可能會滯後。它們可能不會那麼遲鈍,但這更多是由於更快的閃存而不是更快的CPU或更多的內核。
@v6ak RAM當然是一個問題。JVM是一個非常耗費資源的過程,擁有大量RAM,可使操作系統將大部分應用程序保留在主內存中,從而減少了在它們之間進行切換所需的時間。這也是這些Android旗艦之所以荒唐可笑的原因高容量的RAM。
@v6ak您完全正確。問題在於,在Android應用程序中,默認情況下,所有內容(包括服務和作為操作系統的消息傳遞工具的廣播接收器)都在UI線程上運行,這可能會對性能產生負面影響。但是,由於Google引入了高效的線程處理功能,並且以後的平台版本禁止在構建時對主線程進行I / O,因此這已不再是一個問題。
Flippy
2017-06-14 19:06:01 UTC
view on stackexchange narkive permalink

綜上所述,我可以說PC和電話的用例完全不同。 PC通常在單個或幾個應用程序中使用(當然,帶有多個選項卡的瀏覽器需要許多cpu內核,甚至可能落後於i-3頂級),而用於多任務的電話。至少需要網絡連接,UI繪製,系統觸發器和通知。如果您在PC上打開任務管理器,也有很多過程,但是即使在舊的Core 2 duo上,它們也使用不到少於%的cpu功能。4個內核非常便宜(MTK 65x2在OEM出廠時的價格為1美元)。當最後一次缺乏每個內核的性能時,還會遇到RISK vs CISC。高效節能==強大,我們在這裡可以看到。多核是移動設備的理想選擇,因為它不會承受沉重的單胎負擔,並且具有針對多任務的體驗(但我們可以看到,由於視頻和其他視頻中的好軟件,iPhone需要更少的核和RAM。 >)

許多此類操作也經常在筆記本電腦上執行。而且,多任務處理並不需要CPU。製造成本的差異可能會導致某些差異,並且可能是低端CPU內核數量減少的原因,但我懷疑製造成本是並非所有i7都至少具有四個內核的唯一原因。我相信製造成本只是這些CPU價格的一小部分。
@v6ak,問題是x86內核更大,更複雜,intell(或amd)的CPU不足以成為頂級模型。實際上,它們中的大多數都被某些零件擋住了,並成為了初級i7或奔騰處理器。ARM內核看起來不那麼棘手,因此每年沒有那麼多的模型到來。仍然是真正的八核心,是[Samsung Exynos Octa 7xxx](https://en.wikipedia.org/wiki/Exynos),[MTK Helio X10](https://en.wikipedia.org/wiki/MediaTek#Octa-_and_deca-core),Latest(X30)甚至建議little(4).Middle(4).BIG(2),我們可以在廣告中說這是一個10核處理器,廉價的營銷可以做到這一點。
Lothar
2018-12-11 06:54:57 UTC
view on stackexchange narkive permalink

我認為,超出4或8(對於big:little配置)的主要驅動因素之一隻是目前的營銷。

高核數的一個巨大問題是當您考慮內存大小時。通常,在台式機應用程序中,當您想提高多個內核的利用率時,需要復制結構並使用比單線程應用程序中更多的內存。

這不會發生,因為RAM非常昂貴(尤其是在2017/2018 RAM危機情況下)。營銷部門希望獲得大量銷售,但控制部門希望降低零件價格。如果您發現每個內核的餘額少於1 GB RAM,那麼您將發現折衷失敗。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...