
好吧,我知道避免使用四核心的經典論點。在應用程式級別,大多數應用程式都不是為多核心編寫的。大多數桌面軟體甚至不需要並行化。
然而,在作業系統級別,作業系統顯然會在各個核心之間劃分進程。這本身不就是獲得更多核心的理由嗎?這在很多情況下不是很有幫助嗎?您將執行一些 CPU 密集型任務 - 這些進程可能各自佔用 100% 的內核,但我仍然可以瀏覽網頁並向超級用戶詢問我最後一個內核的問題......對嗎?
答案1
作業系統無法將單一單執行緒進程拆分到多個核心上(儘管它可能會更改應用程式在哪個核心上運行,但這是另一個問題),但是它可以運行多個進程,每個進程都在自己的核心上運行。因此,是的,如果您有多個處理器密集型應用程式在後台運行,那麼您很可能仍然有一個備用核心,幾乎不做任何事情,您可以用它來運行其他應用程式。
答案2
要補充@heavyd的答案,原因是作業系統無法確定進程的哪些部分可以並行運行,哪些部分不能並行運行。如果程式未設計為在並行核心上執行,則應用程式中可以有設計為同時按順序運行的例程。這可能會導致各種問題(例如,如果兩個例程使用相同的記憶體區塊但並不意味著同時運行)。
作業系統可以將多個核心用於多個進程,因為無論如何它都會這樣做,但是將單核應用程式分佈在多個核心上將導致各種意外行為。
答案3
歸根結底,無論處理器使用率是 1% 還是 95%(只要穩定在 95% 並且不是峰值),程式都會以相同的速度運行,只要它沒有達到 100%。未使用的 CPU 週期就浪費了。
因此,Windows 7(在相容處理器上)有一項稱為「核心停放」的技術,該技術基本上會禁用電腦上未使用的核心以節省電力。
單線程應用程式會自動轉移到備用核心 - 我不確定這背後的技術,但我知道它運作得很好。
答案4
您最初的想法是正確的 - 對多核有負面傾向,但這並不是真正值得的。
在大多數用戶僅使用桌上型電腦進行簡單文字處理的時代,可能存在爭議。但如今,隨著具有多個選項卡的瀏覽器之類的東西,每個選項卡都在自己的進程中(chrome 和ie 對選項卡進行進程級別分離),加上網頁中的視訊解碼器和額外任務之類的東西,這些任務可以像即時一樣輕鬆卸載渲染效果又名 css3,即使是瀏覽器本身也可以證明需要更多內存和一些核心的理由。
除此之外,有些用戶可能還會在這台電腦上玩遊戲,或是使用 Garageband、imovie、handbrake、多核心等工具,這可能是個巨大的優點。
假設您需要最大化(即單一核心上 100% 的 cpu 使用率)一個核心才能讓另一個核心發揮作用,這種假設是不正確的。因為我們在這裡討論的是並行性。 CPU 內的任務切換通常會在將其堆疊交換到另一個程序之前執行一批操作。並非所有這些任務都受 CPU 限制,因此即使核心被鎖定,您也不會看到 CPU 峰值。
基本上,你是對的,但是最有效的核心數量是多少? 2? 4? 12?這很可能取決於用戶的習慣...對於大多數用戶來說,我傾向於 2-4,但我只是猜測。