web-dev-qa-db-ja.com

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

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

私が間違っていても、x64規格に準拠するにはプロセッサに静的ファームウェアが必要です。もしそうなら、AMDは彼らのプロセッサのためにゲーム(ソフトウェア)を最適化しなければならないでしょう、それは明らかに不可能です。根底にある状況を見ることが不可能であると思われる場合、そのようなことを言うためにそこで何が起こっているのでしょうか。

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

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

120
Arthur P. R.

現代のプロセッサは、想像以上に複雑です。それらは信じられないほど複雑で、一人の人間の理解をはるかに超えています。 "horta"による短い発言を拡張して、以下のすべてを持っているかもしれません:

  1. まず第一に、ほとんどすべての内部ハードウェアは大部分設定可能です。 CPUが動作するためには、何千もの個々のビットが設定されている必要があります。 CPUとキャッシュの相互作用のいくつかの層すべてに設定可能なパイプラインがあり、さまざまなタイミング遅延が明らかに全体的なパフォーマンスに影響を与えます。

  2. エンジニアが検証する時間がなかったためにアーキテクトによって提供されている何百もの高度な機能があるので、 "chicken bits" で何百もの機能が無効にされるかフェイルセーフ設定に設定されます。 。しかし、機能的で有用であるとわかった場合は、それらを調整して使用可能にすることができます。これらの拡張機能は通常、時間の経過とともに詳細に検証され、さまざまなマイクロコードパッチによってプロセッサの使用期間にわたって徐々に有効にすることができます。

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

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

要するに、CPUハードウェアは実際には結線されていますが、そのハードウェアの設定はそのパフォーマンスをほぼ定義しており、BIOSアップデートと埋め込まれたマイクロコードパッチによってより良いシステムパフォーマンスのために調整することができます。

123
Ale..chenski

オペレーティングシステムとアプリケーションレベルの両方でさまざまなソフトウェアの問題が最適以下のパフォーマンスを引き起こしています。

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

Windowsは単純に異なるコア間でプロセスを移動する傾向がありはCCX間の通信ペナルティを認識しません つまり、必要でなくても、Windowsはスレッドを異なるCCXに配置することができます _、パフォーマンスが低下します。

ドイツのレビュアーPCゲームハードウェアは、さまざまな数のコアを無効にして Ryzen 7 1800Xをテストしました。すべてのコアをそのままにして1つのCCXを有効にします。

PC Games Hardware benchmark result: Battlefield 1

これは、CCXを1つだけ有効にすると、16 MBのフルサイズではなく、8 MBのL3キャッシュしか使用できなくなることを意味します。 PCゲームハードウェアの記事から、Google翻訳で(強調を追加しました):

[...]どんな場合でもCCXデータ転送が互いに干渉するという事実を認識するのははるかにエキサイティングです - 時にはもっと、時にはそれほど明確ではありません。 より大きなL3キャッシュ(2 + 2構成)の利点は、この測定シリーズにはありません。

このPC Perspectiveの記事 は、異なるCCX上のコア間ではかなりの通信遅延があることを示していますが、同じCCX上のコアと通信するときの遅延はごくわずかです。この記事では、WindowsはCCXの設計を認識しており、異なるCCXでのスレッドのスケジューリングを回避していることを示唆していますが、コミュニティメンバーによって矛盾する結果が見つかっています。


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

次のTomのハードウェアからの は、SMTを有効にした場合のパフォーマンス低下を示しています。

Tom's Hardware benchmark result: Ashes of the Singularity

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

TechSpot benchmark result: Deus Ex: Mankind Divided


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

102
bwDraco

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

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

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

3)Ryzenは高性能電力プロファイルを有効にすることから恩恵を受けます。これはコアパーキングを無効にします。最終的に私達は人々がとにかくバランスを保ち、とにかく中心的な駐車場を無効にすることを可能にするドライバーを持つことになります。ゲーマーもしばらくこれをやっています。私はここでミスしました。私はその利点を明確にしたいと思います。高性能モードでは、CPUが1msでその電圧/クロック速度を更新することを可能にします。これが私たちのドライバーが達成することです。混乱をお詫び申し上げます。

だから本当の問題は、BIOS /ファームウェアのアップデートがどうしてプロセッサを速くすることができるのか(それはできる、マイクロコードの最適化など...)それ以上ではない...バグのあるBIOS /ファームウェアによるCPUの欠陥

9
Naib

BIOS は一般にファームウェアと見なされます。 BIOSはハードウェアのあらゆる種類のビットをいじってシステムの動作を変えることができます。

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

6
horta

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

私が間違っていても、x64規格に準拠するにはプロセッサに静的ファームウェアが必要です。

ほとんどです。 CPUにソフトウェア(上記のようにマイクロコード)があり、それはパフォーマンスに影響を与える可能性があります。基本的にX86は操作の結果だけを指定します、CPUがそれらの結果をどれだけ正確に達成するかはエンジニアの問題です。ただし、パフォーマンスの格差は主にゲームに当てはまるように思われるため、Ryzenでマイクロコードの調整が重要な役割を果たす可能性はわずかですが、特にゲームによってはそれをうまく活用できないことがあります。

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

しかしながらRyzenは新しい設計であり、定義上他のCPUに合うように書かれているすべてのものがRyzenに合うように書かれていない。

状況を大幅に単純化し過ぎるために、2つのプロセッサを考えてみましょう。

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

  • 競合するプロセッサは市場に投入され、加算すると弱くなりますが、乗算すると強くなります。より多くの加算命令を使用するように最適化されたすべてのソフトウェアは、新しいプロセッサではうまく機能しませんが、多くの加算を使用するように調整されていないソフトウェアはほぼ同じように動作します。いくつかのソフトウェアはすでにたくさんの掛け算をしているかもしれず、たとえ発売日であっても、それらはプロセッサー1よりも新しいCPUの方がうまくいくでしょう。

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

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

基本的な振る舞いによっては、Intelが単純に高速化を維持するワークロードもあれば、Ryzenが既に高速化(および高速化)するワークロードもあります。上で述べた状況では、物事を追加するだけでよいソフトウェアは、常に最初のプロセッサでパフォーマンスが向上し、単純に物事を掛け算する必要があるソフトウェアは、常に2番目のプロセッサでパフォーマンスが向上します。これらの違いはいくらか横ばいになります。

もしそうなら、AMDは彼らのプロセッサのためにゲーム(ソフトウェア)を最適化しなければならないでしょう、それは明らかに不可能です。

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

この特定のケースでは、RyzenはWindowsが作業にどのコアをロードするかについて悪い決定をすることによっても状況によっては抑制されています、そして現在のBIOSは私が単に知ることをふりません理由で問題があります。しかし、Ryzenがすでに説得力を持ってIntelよりも優れているワークロードがあるため、これらの問題がパフォーマンスのギャップのすべてに責任を負うことはできません。 OSまたはBIOS全体。

4
Chris Rimmer

もちろん、ソフトウェアはCPUやGPUの性能さえも向上させることができます。

1つの方法は間違いなくオーバークロックや他の種類のクロック変更メカニズムです。 2つ目は、ドライバーの最適化です。これらには、より優れたデータ圧縮方法、より高速な復号アルゴリズムなどが含まれます。基本的に、より多くのハードウェアをより有効に活用するのに役立つ機能です。これらの機能はファームウェアのアップデートによってもアップデートすることができます。これは実際には(通常の)ソフトウェアではありません。それからあなたのコンピュータの冷却ソリューションを制御できるソフトウェアがあります。これは、IntelのTurbo boostやNvidiaのGPU boostのようなパフォーマンスを向上させるテクノロジを利用するCPUやGPUにとって非常に便利です。このようなハードウェアには一定の温度制限があるため、アプリケーションが最大消費電力に達していない限り十分にクールで、アプリケーションがより高いコンピューティングパワーを要求する場合、パフォーマンスが低下します。 。

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

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

TL; DR:はい、ソフトウェアはプロセッサのパフォーマンスを向上させることができます。ドライバやファームウェアの最適化、オーバークロックなど、さまざまな方法があります。データを処理しやすくする、またはハードウェアが負荷や反応によく反応するようにソフトウェアを変更すると、パフォーマンスが向上する可能性があります。

1
BassGuitarPanda