隨著矽成本的降低和消費者需求的增加,製造商似乎正在推動以下兩件事之一:時脈速度和/或核心數量。隨著事情的發展,似乎不再是處理器的時脈速度在上升,而是處理器核心的數量正在上升。
我記得幾年前,我有一個不錯的快速單核心 Pentium 4 處理器。快進到今天,我認為您甚至無法購買單核處理器(更不用說多核心處理器的不斷增加即使在手機中)。按照事情的發展方向,我們可能會在幾年內找到具有數百個核心的電腦(而且我知道許多作業系統已經支援它)。
提高主頻和增加核心數量哪個對系統整體效能較有利?假設我們正在使用數百個一起運行的核心,或者時脈速度比現在高十倍(無論這在物理上是否可行)。
哪些常見流程(例如加密、檔案壓縮、圖像/影片編輯)最能從其中之一中受益?是否有一些流程能是,但目前(由於技術原因)沒有透過增加並行性來加速?
假設假設的處理器具有完全相同的核心設計(字大小、位址位寬、記憶體匯流排大小、快取等),因此這裡唯一的變數是時脈速度和核心數。再說一遍,我不是說一個、兩個甚至四個核心 - 想像數十到數百個。
答案1
有兩種基本情況需要考慮:
該處理器與僅對單一程式進行計算的計算機一起使用
處理器用於同時執行多個程序
第一種情況是處理器「速度」更重要,因為使用者希望能夠快速有效地進行運算。這些情況通常用於計算密集型處理,即計算素數加密/解密
第二個是多個核心派上用場的地方,因為每個程式都可以分配給一個單獨的核心,從而保護每個程式免受彼此的「瓶頸」。在當今世界,普通用戶將使用他們的電腦一次運行多個程序,因此多核心處理成為一件令人嚮往的事情。
然而,多核心!=在所有情況下都具有更快的速度或更高的效能。由於大多數程式都是為單核心處理編寫的*,因此時脈速度仍然很重要。必須考慮兩者的結合(還有許多其他因素)。
*有一些程式可以同時使用多個內核,希望很快就會創建更多程式。軟體的未來由此可見”平行程式設計」:
軟體開發人員不能再僅僅依靠提高時脈速度來加速單線程應用程式;相反,為了獲得競爭優勢,開發人員必須學習如何正確設計其應用程式以在執行緒環境中運行。多核心架構具有單一處理器包,其中包含兩個或多個處理器「執行核心」或計算引擎,並透過適當的軟體提供多個軟體執行緒的完全並行執行。
-英特爾
答案2
我個人認為核心數是正確的選擇。軟體開發已轉向網路系統,因此本地資源不再是您可用的唯一資源。影響你現在工作方式的最重要因素是網路你是其中的一部分。
請注意向行動寬頻、持續連接、遠端存取等的轉變。雖然哪些 CPU 因素對於電池壽命來說更優化還存在爭議(您已經有了工作價值與時間的經典優化方程式),但我個人認為,如果您必須選擇一個,我會選擇更多核心。
英特爾現在允許您按需為核心供電。雖然不如沒有核心休眠那麼理想,但可以選擇使用更多核心,讓您可以靈活地在同一硬體平台上運行更多應用程式。
答案3
正如 ChrisF 在評論中提到的那樣,這取決於。但由於這樣的答案並不是真正的答案,我將嘗試找出一些場景,其中一個比另一個更有益:
在您提到的大多數常見進程中,核心數量並不重要,因為大部分工作是在單一執行緒中完成的,該執行緒只能在單一核心上執行(一次)。對於此類進程,單一但非常強大的核心將比幾個較慢的核心執行得更好。加密和檔案壓縮都可能是例外,但這在很大程度上取決於使用的演算法以及它們是否可以並行執行。
然而,您忘記了當今計算機上執行的最常見任務之一:瀏覽。幾種流行的瀏覽器在單獨的進程中打開每個選項卡(我確信Chrome 是唯一這樣做的瀏覽器,因為它是我使用的瀏覽器),這意味著如果您在四核系統上打開四個選項卡,則每個瀏覽視窗都可以(理論上)有一個「自身」的核心(忽略作業系統執行緒和其他東西),而且速度就像沒有開啟其他瀏覽器標籤/視窗一樣快。對於一次開啟多個分頁進行瀏覽的用戶來說,這可能是一個重大的效能改進,而無需建立極快的 CPU 核心。
了解具有較慢核心的多核心系統是否會比具有快速核心的單核心系統更快的關鍵是知道您是否會這樣做同時做很多不同的事情或者一些但很重的東西。由於這對於不同的用戶來說會有很大的不同,所以你的問題的答案也會有很大的不同。
其他答案也提出了一些重要的觀點:
- 處理器效能不再完全取決於時脈速度或核心數量 - 隨著時脈速度和核心數量的提高,處理器的其他部分正在成為瓶頸。
- 對大多數使用者來說,處理器效能根本不是瓶頸。如果您將時間花在 Google Docs 等託管應用程式上,那麼網路卡的速度將比處理器核心的速度更重要。如果您正在觀看或編輯高解析度電影材料,硬碟性能將更加重要。 ETC...