「ソフトウェア」アップデートでプロセッサを高速化するにはどうすればよいですか?


120

新しいAMDプロセッサのRyzenは市場に出ており、残念ながらゲームに欠けているようです。Intelプロセッサは明らかにゲームの方が高速です。もちろん、人々はこれに賛成していませんでした。AMDは、ゲームのRyzenを高速化するためにファームウェアまたはソフトウェアを更新していると述べました。

間違っているが、プロセッサにx64標準と互換性のある静的ファームウェアが必要な場合は修正してください。もしそうなら、AMDはプロセッサ用にゲーム(ソフトウェア)を最適化する必要はないでしょうか?根本的な状況を見ることが不可能であると思われる場合、そのようなことを言うためにそこで何が起こっていますか?

しかし、私は間違っているかもしれません(私はそう願っています)ので、質問は:

基盤となるハードウェアを変更せずにプロセッサの高速化を達成することは可能ですか?可能であれば、これはどのように行われますか?プロセッサのファームウェアの横にソフトウェアはありますか?


71
「マイクロコード」という用語をGoogleで検索することをお勧めします。
PlasmaHH


10
ファームウェアは、良い場合も悪い場合もありますが、「アプリケーションにとって良い」ものではありません。x86では命令のタイミングが定義されていないため、ファームウェア(マイクロコード)を更新して命令のタイミングを改善しても、x86の互換性が損なわれることはありません。これが実行可能であり、必要である可能性のあるいくつかの潜在的な理由があります。1)初期マイクロコードは迅速な作業であり、最適ではありません。2)初期マイクロコードは、プログラムがRyzen用にコンパイルされている場合は良好に機能しますが、プログラムが汎用x86または既存のソフトウェアの大部分であるIntelプロセッサ用にコンパイルされている場合は機能しません。
user3528438

15
マイクロコードの更新により命令時間が改善される可能性がありますが、それだけではありません。最新のCPUは、分岐予測、投機的実行、アウトオブオーダー実行など、パフォーマンスを大幅に向上させることができるものを実行します。これらはすべてマイクロコードによって制御されます。マイクロコードの最適化には時間がかかり、その商品は競争の激しいビジネスでしばしば不足します。
-LMiller7

4
あなたが走っていて、何らかの理由で左足を曲げることを拒否していると想像してください。これにより、ぎこちなく遅くなります。足の「同じハードウェア」をより効率的に使用し、より効果的に曲げることにより、ランニング速度を簡単に上げることができます。「脳」命令を脚に変更すると、パフォーマンスが劇的に向上します。
エンダーランド

回答:


123

最近のプロセッサは、思っているよりもはるかに複雑です。それらは非常に複雑で、ほとんど一人の理解を超えています。「horta」による短い発言を展開すると、次のすべてがあります。

  1. そもそも、ほとんどすべての内部ハードウェアは大幅に構成可能です。CPUが動作するために設定しなければならない無数の個別ビットを備えた数千および数千の構成レジスタがあります。CPUとキャッシュの相互作用のいくつかのレイヤーすべてに、構成可能なパイプラインがあり、さまざまなタイミング遅延が明らかに全体的なパフォーマンスに影響を与えます。

  2. 機能の数百が無効になっているかとフェイルセーフ設定に設定されているので、エンジニアリングが検証する時間がなかったという建築家によってそこに置かれ高度な機能の何百もありますが、「チキン・ビット」。ただし、機能的で有用であることがわかった場合は、調整して有効にすることができます。これらの拡張機能は通常、時間の経過とともに詳細に検証され、さまざまなマイクロコードパッチによってプロセッサの寿命にわたって徐々に有効にできます。

  3. 最近のすべてのCPUには、x86 CPUチップ内に組み込まれた独立したマイクロプロセッサーによって制御されるいくつかの内部ユニットがあります。公開されているユニットの1つがPユニットです。最新のプロセッサは、積極的な電源管理なしでは機能しません。そうでないと、溶けてしまいます。ただし、深い電力管理は、積極的な出入り口のクロック/電圧ポリシーに反しており、ポリシーの変更はシステム全体のパフォーマンスに大きく影響します。すべての詳細はPユニットによって制御され、ここで回答したように、別のマイクロコードパッチをロードすることで最適化/調整できます。

  4. 内部相互接続の他の多くの側面は、マイクロコードパッチをロードするか、これらの構成リソースにアクセスできる場合はBIOSをアップグレードすることで修正できるさまざまな追加の組み込みプロセッサによって制御されます。

要するに、CPUハードウェアは実際にハードワイヤードですが、そのハードウェアの構成はそのパフォーマンスをほぼ定義し、BIOSの更新と埋め込まれたマイクロコードパッチによってシステムパフォーマンスを向上させるために調整できます。


どの回答を受け入れるべきかわかりません。@bwDracoの答えは問題ありませんが、あなたの答えが問題固有の情報を提供するのが難しい場合でも、あなたの答えは実際の答えに適合します。
アーサーPR

さて、あなたはこの答えを受け入れるべきです。あなたは電子機器のバックグラウンドから来たので、CPUファームウェアに興味があるようです(Windowsの一部の変更ではありません)。@ ArthurP.R。
-AnoE

3
@ ArthurP.R。ベンチマークの担当者が、Windowsがマルチスレッドプロセッサへのタスクを適切にスケジュールしない(スレッドを独立したコアとして扱う)ことを発見した場合、AMDが何らかの方法でプロセッサ記述子を台無しにしたため、Microsoftはそれらを理解できません。何らかの更新メカニズムによって記述子をマイクロソフトの標準にパッチできる場合、これは簡単な一次修正になります。そして、あなたは一般的な質問をしたので、これはそれに答えます。:
Ale..chenski

私は@bwDracoフィットの答えはあまりにもここにいても、あなたの答えを受け入れた理由です
アーサーPR

102

オペレーティングシステムレベルとアプリケーションレベルの両方でさまざまなソフトウェアの問題が発生し、パフォーマンスが最適化されていません。

8コアのRyzenプロセッサーは、それぞれ4つのコアと8 MBのL3キャッシュを備えた2つのコアコンプレックス(CCX)で構成されています。別のCCX上のL3キャッシュへのアクセスは、Infinityファブリック(AMD独自のキャッシュコヒーレントインターコネクト)に沿ってデータをさらに移動する必要があるため遅くなります。つまり、あるCCXから別のCCXにスレッドを移動したり、パフォーマンスの低下。このペナルティは、NUMAに対応していないオペレーティングシステムを実行しているマルチソケットサーバーで発生することを思い起こさせます。

表示されたWindowsは、単に異なるコアの周りにプロセスを移動する傾向がある間CCX通信ペナルティを認識しません。これは、Windowsが別のCCXにスレッドを配置する必要がない場合でも、パフォーマンスを低下させる可能性があることを意味します

ドイツのレビュアーPC Games Hardwareは、さまざまな数のコアを無効にしたRyzen 7 1800Xをテストし、それぞれで2つのコアを有効にした2つのCCXを使用すると、すべてのコアを有効にして1つのCCXを有効にした場合よりもパフォーマンスが低下することがわかりました:

PCゲームハードウェアのベンチマーク結果:Battlefield 1

これは、CCXを1つだけ有効にすると、16 MB全体ではなく、8 MBのL3キャッシュしか使用できないという事実にもかかわらずです。PC Games Hardwareの記事から、Google Translateを介して(強調を追加):

[...] CCXデータ転送がいずれの場合でも互いに干渉するという事実を認識することは、はるかに刺激的です。大規模なL3キャッシュ(2 + 2構成)の利点は、この一連の測定のどこにもありません。

このPCパースペクティブの記事は、異なるCCX上のコア間でかなりの通信遅延があることを示していますが、同じCCX上のコアと通信する場合の遅延はほとんどありません。この記事は、WindowsがCCXの設計を認識しており、異なるCCXでのスレッドのスケジューリングを回避していることを示唆しているが、コミュニティメンバーによって矛盾する結果が見つかっていることに注意してください。


SMTを無効にすると、多くの(すべてではない)ゲームベンチマークでパフォーマンス向上します。ただし、Windowsが独自のコアとしてのすべてのハードウェアスレッドが不適切であるかのように不適切にスケジュールするという噂。AMDによると、これは多くのアプリがIntelプロセッサのみに最適化されているという事実に起因しています(AMDが約5年間ハイエンドプロセッサ市場からMIAであったことを考えると、これは予想外ではありません)。AMDは、Ryzenプロセッサのパフォーマンスを向上させるために、何百人ものゲーム開発者と協力していると言います。ただし、Zenアーキテクチャの特性に合わせてスケジューラをより細かく調整することで、Windowsの更新が引き続き役立つと思われます。

Tom's Hardwareの次の例は、SMTを有効にした場合のパフォーマンスの低下を示しています。

トムのハードウェアベンチマークの結果:Ashes of the Singularity

TechSpotは、SMTを有効または無効にしてゲームのパフォーマンスを詳細に分析し、非常によく似た結果を導き出しました

TechSpotベンチマーク結果:Deus Ex:Mankind Divided


これらのテストには、電源管理の問題も関係しています。同じAMDの声明は、Windowsがコアパーキングや高速クロック周波数切り替えなどのRyzenの新機能を完全に認識していないことを指摘しています。これは、高性能電源プランを使用したときにトムのハードウェアによって報告されたパフォーマンスの向上と一致しています(上のグラフ、HP =高性能を参照)。Windowsの更新により、これらの機能のサポートが追加され、パフォーマンスが向上します。


12
フォローしているかどうかわかりません。OPは、この段階でRyzenのゲーム最適化は問題外であり、Windowsのバグはさらに長い話であるため、ファームウェアの更新がパフォーマンスの改善にどのように期待できるかを理解するのにこの回答がどのように役立つかを明確に述べていますか?
Ale..chenski

11
彼は本質的に、ウィンドウがスレッドの割り当て方法/場所を完全に混乱させているため、パフォーマンスの問題を引き起こしていると言っています。
ジャーニーマンオタク

2
@JourneymanGeek、まともなWindows(W10が適格かどうかはわかりません)は常にプロセスへのコアアフィニティを明示的に制御し、アフィニティのモックは常にベンチマークの最初のツールでした。では、何が新しくなったのでしょうか?
Ale..chenski

4
残念ながら、はい、しかしカーネルの更新は進行中です。おそらくカーネル4.12を待つ必要があります。4.11にはいくつかの修正が含まれていますが、まだ完全ではありません。phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11
bwDraco

7
@Crouchingkitten AMDは、OSアップデートではなくドライバーのみを提供できます。そのようなものはAMDSタスクプールにはありません。
アーサーPR

9

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

1)初期のマザーボードBIOSは確かに問題を抱えていました。関係のない機能を無効にすると、コアがオフになります。一部のマザーボードでメモリのオーバークロックを設定すると、ブーストが無効になります。BIOSのリビジョンによっては、普遍的にパフォーマンスが抑制されることがあります。

2)Ryzenは、高精度イベントタイマー(HPET)を無効にすることで恩恵を受けます。HPETのタイマー解像度は、パフォーマンスを低下させる可能性のあるオブザーバー効果を引き起こす可能性があります。これはBIOSオプション、またはWindowsコマンドシェルから無効にできる機能です。

3)Ryzenは、高性能の電力プロファイルを有効にすることから利益を得ます。これはコアパーキングを無効にします。最終的には、人々がバランスのとれた状態を保ち、とにかくコアパーキングを無効にするドライバーを手に入れることになります。ゲーマーもこれをしばらくしてきました。私はここで間違えました。利点を明確にしたい:高パフォーマンスモードでは、CPUが電圧/クロック速度を1ミリ秒で更新できるのに対し、バランスモードでは30ミリ秒になります。これは、ドライバーが達成することです。混乱をおologiesびします!

したがって、本当の問題は、BIOS /ファームウェアの更新がプロセッサーを高速化する方法(マイクロコードの最適化など)ではないということではありません。


間違った質問側で質問して申し訳ありません。私はあまり重要でない情報にも興味があるので、特に合うと思いました。

np、それはおそらく十分に抽象的です。私は大規模な再構築を計画しているので、Ryzenをフォローしていますので、歯が生える問題をすべてフォローしています。Linuxユーザーとして、Linux固有の問題もフォローしています。Ryzen(およびzenコア)で考慮すべきことの1つは、これがAMDの最初のSMTであり、最初の兆候は、IntelおよびBIOS / Windowsが論理コアを報告することです。コア。これは、パフォーマンスに重大な影響を及ぼします
Naib

この質問についての回答、コメント、考えは非常に重要です。人々は物事がさらに良くなるかどうかを知る必要があるからです。ところで、記事は非常に良いです!

Ryzen固有の詳細については、forums.gentoo.org / viewtopic-t-1057910.html gentooフォーラムの投稿で私たちの束があり、情報が得られたら話し合います。現在、Linuxの場合、moboオーディオドライバーはgitのみです。同様にサーマルモニターも存在しません... HPETとコアの問題は差し迫った問題です。現在、AMDは純粋な計算でIntelを完全にノックアウトしています
-Naib

1
ある程度はい。私は、BIOS /ドライバは、「それをスピードアップ」しますのでRyzenのは不自由されていることを、私の文で立つ
Naib

6

BIOSは一般にファームウェアと考えられています。BIOSは、ハードウェア内のあらゆる種類のビットをいじって、システムの実行方法を変更できます。

したがって、はい、新しいファームウェアをプッシュすることや、クロック速度など、プリフェッチが有効になっているかどうか、特定のコア(またはIIO)がキャッシュの特定の設定を取得してゲームパフォーマンスを向上させる可能性があることは完全に実現可能ですシングルスレッド方式で設計されているほとんどのゲームに。


これは面白いように聞こえますが、これに関する参照を見つけることは可能ですか?人々にそれを証明するためにそれらのいくつかを持っていることは非常に素晴らしいだろう:)

@ ArthurP.R。pcode、ucode(マイクロコード)、およびbiosの間で、チップのパフォーマンスと機能を大きく変えることができます。これらはすべてソフトウェア/ファームウェアです。ソースに関しては、この情報の外部ソースを提供することはできません(すべて内部情報であるため)。
オルタ

しかし、この情報に感謝します。この情報も含めるように回答を自由に調整してください。それは価値があります!

4

ソフトウェアの更新がプロセッサを高速化することはそれほど多くありません。誰もが期待しているのは、ソフトウェアの更新により、ソフトウェアがRyzenのアーキテクチャにより適したものになり、そのパフォーマンスをより活用できるようになるということです。

間違っているが、プロセッサにx64標準と互換性のある静的ファームウェアが必要な場合は修正してください。

ほぼ。CPUにはソフトウェア(上記のマイクロコード)があり、パフォーマンスに影響を与える可能性があります。基本的に、X86は操作の結果のみを指定します。CPUがそれらの結果を正確に達成する方法は、エンジニアの問題です。Ryzenで主要な役割を果たすマイクロコード調整のオッズはわずかですが、パフォーマンスのギャップは主にCPUのパフォーマンスを示唆するゲームに当てはまるようですが、特に一部のゲームではうまく活用されていません。

オペレーティングシステムは、プログラムがCPU全体に効率的に分散されるようにする責任があります。これは、パフォーマンスに影響を与える可能性がありますが、概して、これらの要因はいずれも新しいアーキテクチャの主な問題ではありません。このような場合のパフォーマンスの改善のほとんどは、開発者が新しいアーキテクチャにより適したコードを記述した結果としてもたらされます。設計の変更はそれほど重要ではないため、これはIntel CPUの世代間では発生しない傾向があります。

ただし、Ryzenはまったく新しい設計であるため、定義上、他のCPUに適合するように記述されたものはすべて、Ryzenに適合するように記述されていません。

状況を大幅に単純化するには、2つのプロセッサを想像してください。

  • Processor Oneはしばらく市場に出回っており、(何らかの理由で)数字の追加が非常に迅速です。ソフトウェアは、この機能を活用するために、可能な限り追加を試行および使用するように設計されています。

  • 競合するプロセッサは市場に出回っており、加算では弱く、乗算では強くなります。追加の重い命令を使用するように最適化されたすべてのソフトウェアは、新しいプロセッサでパフォーマンスが低下しますが、大量の追加を使用するように調整されていないソフトウェアは、ほぼ同様に実行されます。一部のソフトウェアは、すでに多くの乗算を実行している可能性があり、新しいCPUでは、発売日であってもProcessor Oneよりも優れています。

開発者は、発売後しばらくして、使用するCPUアーキテクチャに応じて、ソフトウェアでより多くの乗算を使用して適応を開始するか、追加の重いコードパスと乗算の多いパスを切り替えるようにソフトウェアを設計します。

これは、Ryzenで起こっていることの一種です。これは、ソフトウェア開発者がまだ特性に合わせて最適化していない新しいアーキテクチャです。時間を考えると、開発者はソフトウェアのパフォーマンスを向上させるためにソフトウェアの調整を開始します。ほとんどのソフトウェアはすでにIntel CPUで良好に動作するように設計されているため(結局のところ、非常に人気があります!)、これらの変更による恩恵はほとんどないでしょう。

基礎となる動作に応じて、Intelが単に高速で動作するワークロードと、Ryzenがすでに高速である(さらに高速になる)ワークロードがあります。上記の状況では、物を追加するだけでよいソフトウェアは最初のプロセッサで常にパフォーマンスが向上し、単に物を増やす必要があるソフトウェアは常に2番目のプロセッサでパフォーマンスが向上しますが、ほとんどの場合、ソフトウェアは複雑で、これらの違いはある程度横ばいになります。

もしそうなら、AMDはプロセッサ用にゲーム(ソフトウェア)を最適化する必要はないでしょうか?

また、AMDが実際にゲームのパフォーマンスについて言っているのは、ゲームを最適化するために開発者と協力しているということです。彼らは開発システムを企業に送り出し(現在は300台あり、年内に1000台を目指しています)、ゲームのパフォーマンスが悪い人と話をして問題の解決に役立てています。私の知る限り、AMDがゲーム自体を最適化しているという声明は発表されていません。

この特定のケースでは、Ryzenはいくつかの状況で、Windowsがどのコアを仕事でロードするかについて悪い決定を下すことによっても抑制されており、現在のBIOSは私が単に知っているふりをしない理由で問題があります。ただし、RyzenがすでにIntelよりも優れているワークロードが存在するため、これらの問題がすべてのパフォーマンスギャップの原因となることはできません。 OSまたはBIOS全体。


この回答も興味深いものです。ありがとう。
アーサーPR

1

もちろん、ソフトウェアはCPUまたはGPUのパフォーマンスを向上させることができます。

1つの方法は、確実にオーバークロックまたは他の種類のクロック変更メカニズムです。2つ目は、ドライバーの最適化です。これらには、より優れたデータ圧縮方法、アルゴリズムのデコードの高速化などが含まれます。これらの機能は、実際には(通常の)ソフトウェアではないファームウェアの更新によっても更新できます。次に、コンピューターの冷却ソリューションを制御できるソフトウェアがあります。これは、IntelのTurbo BoostやNvidiaのGPU Boostなどのパフォーマンスブーストテクノロジーを利用するCPUおよびGPUに非常に役立ちます。そのようなハードウェアには一定の温度制限があるため、過熱して動的にオーバークロックしているとき、アプリが高い電力を必要とするとき、最大消費電力に達していない限り、パフォーマンスを低下させます

他のオプションもありますが、これらは主にそれをカバーします。基本的に、問題を知っていて、データの処理方法をプログラムで操作できる限り(「強引な」種類のソリューションに代わるスマートデコードアルゴリズムを導入するなど)、またはパフォーマンスに対するさまざまな重要な要因に対するプロセッサの反応を操作できます。 (過熱した場合の冷却をより積極的に増やすか、アプリケーションのリソース需要を監視し、より多くの処理能力が必要な場合に動的にオーバークロックするなど)、処理ユニットのパフォーマンスを改善(または悪化)させるために多くのことができます。

AMDの場合、おそらくブースティングメカニズムまたは冷却ソリューションの最適化です。これらのいずれかまたは両方は、負荷または温度の増加に対してより積極的に反応するようにおそらく変更されています。

TL; DR:はい、ソフトウェアはプロセッサのパフォーマンスを改善できます。ドライバーおよびファームウェアの最適化、オーバークロックなど、実行可能な方法は多数あります。データを準備するソフトウェア変更は、処理を容易にするため、またはハードウェアを負荷またはその制限により良く反応させるため、パフォーマンスが向上する可能性が非常に高くなります。


-1

ソフトウェアの更新により、システム(プロセッサを含む)の実行が確実に高速化されます。

これの非常に極端な例は、大規模なIBMメインフレームコンピューターです。オンラインでより多くのCPU時間を購入でき、OSに入力しなければならないライセンスキーを取得するだけで、システムが高速に動作します。トリックは簡単です。OSスケジューラーは、タスクのスケジュールを拒否し、代わりにCPUをスリープ状態にするか、特定の全体的な平均スループットを達成するためにNO-OPループを短時間実行することさえあります。より高価なライセンスの代金を支払うと、スケジューラはそれらのNO-OPを削除します。

または、さらに劇的に:CPUが4、6、または8のみのシステムを購入する場合、通常、実際にインストールされるのは約16〜32個です。OSは単にそれらの一部をシャットダウンし、ライセンスキーを入力することでそれらをオンにできます。

同様に、IBMメインフレームは、Linuxプロセッサー、Javaプロセッサー、トランザクションプロセッサーなどの異なる種類のプロセッサーを区別します。これらは実際にはすべて同じプロセッサーですが、OSスケジューラーはトランザクションタスク(最も重要なもの)のスケジュールを拒否しますJavaまたはLinuxプロセッサ。Java VMのみがJavaプロセッサにスケジュールされ、Linux VMのみがLinuxプロセッサにスケジュールされます。より高いトランザクションパフォーマンスを取得する場合は、より多くのトランザクションプロセッサのライセンスを購入する必要があります。これらはまったく同じプロセッサであり、唯一の違いはスケジューラの設定フラグであり、「これらのプロセッサにトランザクションタスクをスケジュールしない「。

別の例は、それほど極端ではありませんが、Windowsの異なるエディションです。Windowsの異なるエディションは、異なる数のCPUコアと異なる量のメモリをサポートします。大量のメモリと多数のCPUがある場合、Windowsの「より大きな」エディションにアップグレードするだけで、システムを高速化できます。エディションのコードはまったく同じであることに注意してください。「Home Editionであり、1 CPUと128 GiByteのみをサポートしている」という設定スイッチがどこかにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.