題 如何通過“軟件”更新使處理器更快?


新的AMD處理器Ryzen已經上市,不幸的是他們似乎缺乏遊戲。英特爾處理器顯然對遊戲來說更快。 人們當然不贊成這一點,AMD發表聲明說他們正在更新固件或軟件以加速Ryzen的遊戲。

如果我錯了,請糾正我,但處理器必須有一個靜態固件才能與x64標準兼容?如果是這樣,AMD不會為他們的處理器優化遊戲(軟件),這顯然是不可能的?如果看起來不可能看到潛在的條件,那麼會發生什麼事情呢?

但我可能錯了(我希望如此)所以問題是:

是否有可能在不改變底層硬件的情況下實現處理器的加速? 如果有可能,這是怎麼做到的?處理器的固件旁邊是否有軟件? 


120
2018-03-07 21:45


起源


您可能想要谷歌術語“微代碼”。 - PlasmaHH
已經在SO上: stackoverflow.com/questions/4366837/what-is-intel-microcode - szulat
固件可能是好的,也可能是壞的,或者只是“不適合應用程序”。 x86沒有定義指令時序,因此更新固件(微碼)以改善指令時序不會破壞x86的兼容性。為什麼這是可行的並且可能是必要的,有幾個潛在的原因:1)初始微碼是一項快速工作並且不是最優的; 2)當為Ryzen編譯程序時,初始微代碼表現良好,但如果程序是針對通用x86或針對英特爾處理器(大多數現有軟件)編譯的話,則不會。 - user3528438
微碼更新可以改善指令時間,但還有更多。現代CPU執行分支預測,推測執行,亂序執行等功能,可以顯著提高性能。所有這些都由微碼控制。微碼優化需要時間,而商品在競爭激烈的業務中往往供不應求。 - LMiller7
想像一下,你正在跑步,出於某種原因,你拒絕彎曲你的左腿。這將使您變得笨拙和緩慢 - 您可以通過更有效地使用腿部的“相同硬件”並更有效地彎曲它來輕鬆提高您的跑步速度。將“大腦”指令改為腿部會大大提高性能。 - enderland


答案:


現代處理器比人們想像的要復雜得多。它們非常複雜,幾乎超出了對一個人的理解。擴展“horta”的簡短評論,可能會有以下所有內容:

  1. 首先,幾乎所有內部硬件都可以在很大程度上進行配置。有成千上萬的配置寄存器,必須設置數以萬億的單個位才能使CPU運行。所有幾層CPU緩存交互都具有可配置的流水線,各種時序延遲顯然會對整體性能產生影響。

  2. 建築師有數百種高級功能,工程師沒有時間進行驗證,因此數百種功能被禁用或設置為故障安全配置 “雞肉塊”。但如果發現功能和實用性,它們可以調整併啟用。這些增強功能通常會隨著時間的推移進行深入驗證,並且可以通過各種微代碼補丁在處理器的整個生命週期內逐步啟用。

  3. 所有最近的CPU都有幾個內部單元,由嵌入在x86 CPU芯片內的獨立微處理器控制。一個公開浮出水面的單位是P-Unit。如果沒有激進的電源管理,現代處理器就無法運行,或者它們會融化然而,深度電源管理與積極的進入 - 退出時鐘/電壓策略相矛盾,並且策略的變化強烈地影響整體系統性能。所有細節均由P-Unit控制,可通過加載進行優化/調整 另一個微碼補丁,在這裡回答。

  4. 內部互連的許多其他方面由各種附加的嵌入式處理器控制,可以通過將微碼補丁加載到其中來糾正,或者如果它可以訪問這些配置資源則升級BIOS。

簡而言之,雖然CPU硬件確實是硬連線的,但是所述硬件的配置幾乎定義了其性能,並且可以通過BIOS更新和嵌入式微代碼補丁來調整以獲得更好的系統性能。


122
2018-03-07 23:58



我不確定我應該接受哪個答案。 @ bwDraco的答案很好,但你的實際答案更合適甚至更難,他的答案是提供特定問題的信息。 - Arthur P. R.
好吧,你應該接受 這個 回答。你來自電子背景,所以你似乎對它感興趣 CPU固件 (不是一些Windows更改)。 @ ArthurP.R。 - AnoE
@ ArthurP.R。如果基準測試人員發現Windows沒有正確地將任務安排到多線程處理器(將線程視為獨立核心),則意味著AMD以某種方式搞砸了處理器描述符/其他任何東西,因此微軟無法理解它們。如果描述符可以通過某種更新機制修補到Microsoft標準,那麼這將是一個簡單的一階修復。你問了一個普遍的問題,所以這就解決了。 :-) - Ale..chenski
這就是為什麼我接受了你的答案,即使@bwDraco的答案也適合這裡 - Arthur P. R.


操作系統和應用程序級別的各種軟件問題導致性能欠佳。

八核Ryzen處理器由兩個核心複合體(CCX)組成,每個核心複合體具有四個核心和8 MB的L3緩存。由於需要沿著Infinity Fabric(AMD的專有緩存一致性互連)移動數據,因此在不同CCX上訪問L3緩存的速度較慢,這意味著將線程從一個CCX移動到另一個CCX或在不同CCX上的核心之間進行通信會導致性能下降。這種懲罰讓人聯想到運行操作系統的多插槽服務器會發生什麼情況 NUMA-知道的。

它出現 Windows傾向於簡單地在不同核心周圍移動進程 和 不承認CCX間通信懲罰。這意味著 Windows可能會將線程放在不同的CCX上,即使這樣做也不需要,降低性能。

德國評論家PC Games Hardware對Ryzen 7 1800X進行了測試,禁用了不同數量的內核 並且發現每個啟用兩個內核的兩個CCX產生的性能低於啟用一個CCX且其所有內核完好無損的性能:

PC Games Hardware benchmark result: Battlefield 1

儘管只啟用了一個CCX,但只有8 MB的L3緩存可用,而不是完整的16 MB。從PC遊戲硬件文章,通過谷歌翻譯(重點添加):

[...]認識到CCX數據傳輸在任何情況下都會相互干擾這一事實會更令人興奮 - 有時更多,有時不那麼清楚。 更大的L3緩存(2 + 2配置)的優勢在這個測量系列中無處可去。

這篇PC透視文章 表明在不同CCX上的內核之間存在大量通信延遲,但在與同一CCX上的內核通信時,延遲非常小。請注意,本文建議Windows了解CCX設計並避免在不同CCX上調度線程,但社區成員已發現衝突結果。


許多(但不是全部)遊戲基準測試顯示 增加 SMT禁用時的性能。然而, 有傳言說Windows不正確地安排好像每個硬件線程都是不正確的。根據AMD的說法,這是由於這一事實造成的 許多應用程序僅針對英特爾處理器進 (鑑於AMD已從高端處理器市場推出MIA約五年,這並不出人意料)。 AMD表示,他們正在與數百家遊戲開發商合作,以提高Ryzen處理器的性能。但是,我懷疑Windows更新仍然有助於更好地調整調度程序的特性  建築。

下列 Tom's Hardware的例子 演示了啟用SMT後降低的性能:

Tom's Hardware benchmark result: Ashes of the Singularity

TechSpot通過SMT啟用和禁用對遊戲性能進行了深入分析 並得出了非常相似的結果:

TechSpot benchmark result: Deus Ex: Mankind Divided


還有 電源管理問題 涉及這些測試。同樣的AMD聲明指出,Windows並未完全了解Ryzen的新功能,例如核心停放和快速時鐘頻率切換。這與Tom's Hardware在使用高性能電源計劃時報告的性能改進一致(參見上圖,HP =高性能)。對Windows的更新可以添加對這些功能的支持並提高性能。


102
2018-03-08 00:09



我不確定我是否關注。 OP明確表示,由於Ryzen的遊戲優化在這個階段是不可能的,而Windows的錯誤甚至是一個更長的故事,這個答案如何幫助理解固件更新如何為任何性能改進帶來希望? - Ale..chenski
他基本上說windows完全搞亂了分配線程的方式/位置 - 導致性能問題。 - Journeyman Geek♦
@JourneymanGeek,任何體面的Windows(我不確定W10是否合格)總是明確控制核心關聯到一個進程,並且使用親和力進行模擬始終是基準測試中的第一個工具。什麼是新的呢? - Ale..chenski
不幸的是,但內核更新正在進行中。您可能需要等待內核4.12; 4.11帶來了一些修復,但它並不完全存在。 phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11 - bwDraco
@Crouchingkitten AMD只能提供驅動程序而非OS更新。這樣的東西不在AMDS任務池中。 - Arthur P. R.


http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/

1)早期的主板BIOS肯定有問題:禁用   不相關的功能會關閉核心。設置內存超載   一些主板會禁用提升。一些BIOS修訂很明顯   產生普遍抑制的表現。

2)Ryzen受益於禁用高精度事件計時器(HPET)。   HPET的計時器分辨率可能會導致觀察者效果   減去性能。這是一個BIOS選項,或者可以是一個功能   從Windows命令shell禁用。

3)Ryzen受益於實現高性能電源配置文件。   這取代了核心停車場。最終我們會有一個司機   允許人們保持平衡並禁用核心停車。   遊戲玩家也已經做了一段時間了。我錯過了,在這裡。我想要   澄清好處:高性能模式允許CPU更新   它的電壓/時鐘速度為1ms,而平衡時間為30ms   模式。這是我們的驅動程序將完成的。道歉   混亂!

因此,真正的問題不是BIOS /固件更新如何使處理器更快(它可以做到,微代碼的優化等等)更多......如何通過錯誤的BIOS /固件使CPU​​癱瘓


9
2018-03-07 22:00



我很抱歉在錯誤的問題方面提問。我認為這很合適,特別是因為我對非平凡的信息感興趣。
也許,它可能足以留下來。我正在跟隨Ryzen,因為我正計劃進行重大改造,所以我正在關注所有的出牙問題。作為Linux用戶,我也在關注特定於Linux的問題。 Ryzen(和zen核心)需要考慮的一件事是這是AMD的第一個SMT和初步跡象表明它報告邏輯核心的方式與英特爾不同,而BIOS / Windows可能會嘗試將所有“核心”用作物理核心,而一半是合乎邏輯的核心。這會對性能產生重大影響 - Naib
關於這個問題的答案,評論和想法是非常重要的,我認為因為人們需要知道事情是否會變得更好,到目前為止我看到我現在可以再次希望。 BTW文章非常好!
更多Ryzen具體...... forums.gentoo.org/viewtopic-t-1057910.html 我們在gentoo論壇上的一大堆發布並在我們獲取信息時進行討論。現在對於Linux來說,主板音頻驅動程序只有git,同樣熱監視器也不存在...... HPET和核心問題是一個直接關注的問題。現在,AMD完全將英特爾用於純計算 - Naib
在某種程度上是的。我支持我的聲明,對於Ryzen而言,它正在癱瘓,因此BIOS /驅動程序將“加速” - Naib


BIOS 通常被認為是固件。 BIOS可以旋轉硬件中的各種位來改變系統的運行方式

所以是的,他們完全可以推出新的固件和時鐘速度,或者是否啟用了預取,或者某個核心或IIO是否可以獲得某些優先級的緩存,這有可能提高遊戲性能對於大多數以單線程方式設計的遊戲。


6
2018-03-07 21:53



這聽起來很有趣,是否可以找到任何參考?將它們中的一些證明給人們是非常好的:)
@ ArthurP.R。在pcode,ucode(微碼)和BIOS之間,芯片的性能和功能可以大大改變。這些都是軟件/固件。來源明智,不,我不能給你任何外部來源的信息(因為它都是內部的)。 - horta
多麼令人失望的@horta非常感謝這些信息。您可以隨意調整答案以包含此信息。這是值得的!


軟件更新並不會使處理器更快。每個人都期待的是軟件更新將使軟件更適合Ryzen的架構,並能夠更好地利用其性能。

如果我錯了,請糾正我,但處理器必須有一個靜態固件才能與x64標準兼容?

幾乎。 CPU中有軟件(微碼,如上所述),它可以影響性能。基本上X86只指定操作的結果,CPU如何實現這些結果是工程師的問題。微型調整與Ryzen一起發揮主要作用的可能性很小,因為性能差距似乎主要適用於表明CPU表現良好的遊戲,但有些遊戲尤其不能很好地利用它。

操作系統負責確保程序有效地分佈在CPU上,這會影響性能,但從廣義上講,這些因素都不是新架構的主要問題。在這種情況下,大多數性能改進都是由於開發人員編寫的代碼更適合新架構。這種情況往往不會發生在幾代英特爾CPU之間,因為設計更改並不是非常重要,因此在一個上運行良好的設備可能在另一個上運行良好。

然而,Ryzen是一個全新的設計,因此根據定義編寫的所有適合其他CPU的內容都不適用於Ryzen。

為了大規模過度簡化這種情況,請想像兩個處理器:

  • 處理器One已經上市了一段時間,並且(無論出於什麼原因)非常快速地添加數字。軟件旨在盡可能地嘗試和使用添加,以利用此功能。

  • 一個競爭的處理器落在市場上,並且在增加時更弱,但在乘法時更強。所有經過優化以使用更多加重指令的軟件在新處理器上表現不佳,但未經過定制以使用大量添加的軟件或多或少地表現相似。有些軟件可能已經進行了大量的乘法運算,並且在新的CPU上比在處理器One上做得更好,即使在發布日也是如此。

在發布後的一段時間內,開發人員將開始適應,在他們的軟件中使用更多的乘法,或者甚至設計他們的軟件以在加重代碼路徑之間切換,並且根據正在使用的CPU架構來增加繁重的代碼路徑。

這就是Ryzen正在發生的事情 - 它是一種新的架構,軟件開發人員尚未對其進行優化以適應其特性。考慮到時間,開發人員將開始調整他們的軟件,以便在其上表現更好。由於大多數軟件已經設計為在英特爾CPU上運行良好(畢竟它們非常受歡迎!),它們可能不會從這些變化中受益匪淺。

有一些工作負載可以讓英特爾保持更快的速度,並且根據潛在的行為,一些Ryzen已經更快(並且會更快)。在我上面提到的情況中,只需要添加東西的軟件在第一個處理器上總是表現得更好,而且必須繁殖的軟件總是在第二個處理器上表現更好 - 但是大多數情況下軟件很複雜,這些差異會有所不同。

如果是這樣,AMD不會為他們的處理器優化遊戲(軟件),這顯然是不可能的?

值得注意的是,AMD實際上對遊戲性能的評價是,他們正在與開發人員合作以優化遊戲。他們正在向公司發送開發系統(目前在野外有300個,他們的目標是在年底前達到1000個)並與那些遊戲表現不佳以幫助解決問題的人交談。據我所知,沒有聲明AMD正在自行優化遊戲。

在這種特殊情況下,Ryzen在某些情況下也被Windows拒絕做出關於哪些內核加載工作的錯誤決定,而且當前的BIOS由於我根本不會假裝知道的原因而成為問題。然而,這些問題不能成為所有性能差距的原因,因為有些工作負載Ryzen已經令人信服地勝過英特爾,這表明該問題至少部分(如果不是大部分)歸因於正在運行的特定程序,而不是OS或BIOS作為一個整體。


4
2018-03-09 14:48



這個答案也很有趣,也很有用。謝謝。 - Arthur P. R.


當然,軟件可以提高CPU甚至GPU的性能。

一種方法絕對是超頻或其他一種時鐘改變機制。 其次可以是驅動程序優化。這些包括更好的數據壓縮方法,更快的解碼算法等...基本上有助於更好地利用更多硬件的功能。這些功能也可以通過固件更新進行更新,這不是真正的(常規)軟件。 然後有軟件可以控制您的計算機的冷卻解決方案。這對於利用英特爾Turbo boost和Nvidia GPU增強等性能提陞技術的CPU和GPU非常有用。像這樣的硬件具有一定的溫度限制,因此當它們運行過熱和動態超頻時,當應用程序需要更高的計算能力時,只要它們沒有達到最大功耗並且它們足夠冷卻它們就會降低它們的性能。

還有其他選擇,但這些選項主要涵蓋它。 基本上,只要您知道問題並且可以以編程方式操縱數據的處理方式(例如引入一些替代“強力”解決方案的智能解碼算法)或操縱處理器對不同關鍵因素的反應以及其性能(如果在過熱或監控應用程序的資源需求時更積極地增加冷卻,並在需要更多處理能力時動態超頻),您可以做很多事情來改善(或惡化)處理單元的性能。

在AMD的情況下,它可能是其增壓機製或冷卻解決方案的優化。這些中的一個或兩個可能已被改變以更積極地對增加負載或溫度作出反應。

TL; DR:是的,軟件可以提高處理器的性能。有許多方法可以完成,例如驅動程序和固件優化,超頻等。任何軟件更改都可以準備數據,以便更容易處理或使硬件對負載做出更好的反應或其局限性很可能會提高性能。


1
2018-03-07 23:53





軟件更新絕對可以使系統(包括處理器)運行得更快。

一個非常極端的例子是大型IBM大型計算機:您可以在線購買更多的CPU時間,而您獲得的只是一個許可證密鑰,您必須輸入操作系統,並且繁榮!,您的系統運行速度更快。訣竅很簡單:操作系統調度程序有時會拒絕安排任務並讓CPU進入睡眠狀態,甚至只是短時間運行NO-OP循環,以實現給定的總體平均吞吐量。如果您支付更昂貴的許可證,則調度程序會刪除這些NO-OP。

或者,甚至更嚴重:如果你購買的系統只有4或6或8個CPU,那麼實際安裝的通常會有16-32個。操作系統只關閉其中一些,並通過輸入許可證密鑰,您可以打開它們。

類似地,IBM大型機區分不同類型的處理器:Linux處理器,Java處理器,事務處理器等。它們實際上都是相同的處理器,但OS調度程序將拒絕將事務任務(這是最重要的)安排到Java或Linux處理器。只有Java VM將被安排到Java處理器,並且只有Linux VM將被安排到Linux處理器。如果您希望獲得更高的事務性能,則必須為更多事務處理器購買許可證:同樣,這些處理器完全相同,唯一的區別是調度程序中的配置標誌“不要將事務任務安排到這些處理器” “。

另一個例子,不是那麼極端,是不同版本的Windows。不同版本的Windows支持不同數量的CPU內核和不同的內存量。如果您擁有大容量內存和大量CPU,只需升級到“更大”的Windows版本,就可以加快系統速度。請注意,版本具有完全相同的代碼;只有一些配置開關說“你是一個家庭版,你只支持1個CPU和128個GiByte”。


-1
2018-03-11 01:03