Die neuen AMD-Prozessoren Ryzen sind auf dem Markt und scheinen leider keine Spiele zu haben. Intel-Prozessoren sind für Spiele offensichtlich noch schneller. Die Leute waren natürlich nicht dafür und AMD gab eine Erklärung ab, dass sie die Firmware oder Software aktualisieren, um Ryzen für Spiele zu beschleunigen.
Korrigieren Sie mich, wenn ich falsch liege, aber der Prozessor eine statische Firmware haben muss, um mit dem x64-Standard kompatibel zu sein? Wenn ja, müsste AMD dann die Spiele (Software) für ihre Prozessoren optimieren, was offensichtlich unmöglich ist? Was ist dort los, um solche Dinge zu sagen, wenn es so scheint, als ob es unmöglich ist, die zugrunde liegenden Bedingungen zu sehen?
Aber ich kann mich irren (ich hoffe es), also ist die Frage:
Ist es möglich, eine Beschleunigung für einen Prozessor zu erzielen, ohne die zugrunde liegende Hardware zu ändern? Wenn es möglich ist, wie wird das gemacht? Gibt es neben der Firmware eine Software für den Prozessor?
Antworten:
Moderne Prozessoren sind viel komplizierter als man denkt. Sie sind unglaublich kompliziert und gehen fast über das Verständnis einer einzelnen Person hinaus. Um eine kurze Bemerkung von "horta" zu erweitern, könnte man folgendes haben:
Zunächst ist fast die gesamte interne Hardware weitgehend konfigurierbar. Es gibt Tausende und Abertausende von Konfigurationsregistern mit zig Millionen von einzelnen Bits, die gesetzt werden müssen, damit eine CPU arbeitet. Alle verschiedenen Ebenen der CPU-Cache-Interaktion haben konfigurierbare Pipelines, und verschiedene Zeitverzögerungen wirken sich offensichtlich auf die Gesamtleistung aus.
Es gibt Hunderte von erweiterten Funktionen, die von Architekten bereitgestellt werden, für deren Validierung das Engineering keine Zeit hatte. Hunderte von Funktionen werden daher deaktiviert oder mit "Chicken Bits" in eine ausfallsichere Konfiguration versetzt . Sie können jedoch optimiert und aktiviert werden, wenn sie als funktional und nützlich erachtet werden. Diese Erweiterungsfunktionen werden in der Regel im Laufe der Zeit eingehend überprüft und können über die Lebensdauer eines Prozessors durch verschiedene Mikrocode-Patches schrittweise aktiviert werden.
Alle neueren CPUs verfügen über mehrere interne Einheiten, die von unabhängigen Mikroprozessoren gesteuert werden, die im x86-CPU-Chip integriert sind. Eine öffentlich aufgetauchte Einheit ist die P-Unit. Moderne Prozessoren können ohne aggressive Energieverwaltung nicht funktionieren, oder sie schmelzen. Deep Power Management steht jedoch im Widerspruch zu einer aggressiven Eingangs- / Ausgangs-Takt- / Spannungsrichtlinie, und Änderungen in der Richtlinie wirken sich stark auf die Gesamtsystemleistung aus. Alle Details werden von der P-Unit gesteuert und können durch Laden eines weiteren Mikrocode-Patches, wie hier beantwortet , optimiert / optimiert werden.
Viele andere Aspekte der internen Verbindung werden von verschiedenen zusätzlichen eingebetteten Prozessoren gesteuert, die durch Laden von Mikrocode-Patches oder Aktualisieren des BIOS, wenn es Zugriff auf diese Konfigurationsressourcen hat, korrigiert werden können.
Kurz gesagt, während die CPU-Hardware in der Tat fest verdrahtet ist, definiert die Konfiguration der Hardware ziemlich genau ihre Leistung und kann für eine bessere Systemleistung mittels BIOS-Updates und eingebetteten Mikrocode-Patches eingestellt werden.
quelle
Eine Vielzahl von Softwareproblemen auf Betriebssystem- und Anwendungsebene führen zu einer suboptimalen Leistung.
Ryzen-Prozessoren mit acht Kernen bestehen aus zwei Kernkomplexen (CCXs) mit jeweils vier Kernen und 8 MB L3-Cache. Der Zugriff auf den L3-Cache auf einer anderen CCX-Einheit ist langsamer, da Daten über die Infinity Fabric (AMDs proprietäre cachekohärente Verbindung) weiter verschoben werden müssen. Dies bedeutet, dass Threads von einer CCX-Einheit auf eine andere verschoben oder zwischen Kernen auf verschiedenen CCX-Einheiten kommuniziert werden müssen reduzierte Leistung. Diese Strafe erinnert an einen Server mit mehreren Sockets , auf dem ein Betriebssystem ausgeführt wird, das nicht NUMA- fähig ist.
Es scheint, dass Windows dazu neigt, Prozesse einfach um verschiedene Kerne zu verschieben, und den Kommunikationsverlust zwischen CCX nicht erkennt . Dies bedeutet, dass Windows möglicherweise Threads auf verschiedene CCXs legt, auch wenn dies nicht erforderlich ist , wodurch die Leistung verringert wird.
Der deutsche Rezensent PC Games Hardware testete einen Ryzen 7 1800X mit einer unterschiedlichen Anzahl deaktivierter Kerne und stellte fest, dass zwei CCXs mit jeweils zwei aktivierten Kernen eine geringere Leistung erbringen als ein CCX, bei dem alle Kerne intakt sind:
Dies trotz der Tatsache, dass nur ein CCX aktiviert ist, was bedeutet, dass nur 8 MB L3-Cache verfügbar sind, anstatt der vollen 16 MB. Aus dem PC Games Hardware-Artikel über Google Translate (Hervorhebung hinzugefügt):
Dieser PC Perspective-Artikel zeigt, dass es eine erhebliche Kommunikationslatenz zwischen Kernen auf verschiedenen CCX-Systemen gibt, jedoch nur eine sehr geringe Latenz, wenn mit Kernen auf demselben CCX-System kommuniziert wird. Beachten Sie, dass dieser Artikel darauf hinweist, dass Windows das CCX-Design kennt und das Planen von Threads auf verschiedenen CCXs vermeidet, jedoch von Community-Mitgliedern widersprüchliche Ergebnisse gefunden wurden.
Viele (aber nicht alle) Gaming-Benchmarks zeigen eine höhere Leistung, wenn SMT deaktiviert ist. Es gibt jedoch Gerüchte, wonach Windows falsch plant, als ob jeder Hardwarethread seinen eigenen Kern hätte . Laut AMD liegt dies daran, dass viele Apps nur für Intel-Prozessoren optimiert sind (was angesichts der Tatsache, dass AMD seit rund fünf Jahren MIA auf dem High-End-Prozessormarkt ist, nicht unerwartet ist). Laut AMD arbeiten sie mit Hunderten von Spieleentwicklern zusammen, um die Leistung der Ryzen-Prozessoren zu verbessern. Ich vermute jedoch, dass ein Windows-Update weiterhin Abhilfe schaffen kann, indem der Scheduler genauer auf die Eigenschaften der Zen- Architektur abgestimmt wird .
Das folgende Beispiel von Tom's Hardware zeigt eine verringerte Leistung bei aktiviertem SMT:
TechSpot hat eine eingehende Analyse der Spieleleistung mit aktiviertem und deaktiviertem SMT durchgeführt und dabei sehr ähnliche Ergebnisse erzielt:
Bei diesen Tests treten auch Energieverwaltungsprobleme auf . Dieselbe AMD-Anweisung stellt fest, dass Windows die neuen Funktionen in Ryzen wie Core-Parken und schnelles Umschalten der Taktfrequenz nicht vollständig kennt. Dies steht im Einklang mit Leistungsverbesserungen, die von Tom's Hardware bei Verwendung des Hochleistungsplans gemeldet wurden (siehe Tabelle oben, HP = High Performance). Ein Update für Windows kann diese Funktionen unterstützen und die Leistung verbessern.
quelle
http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/
Die eigentliche Frage ist also nicht, wie ein BIOS / Firmware-Update einen Prozessor schneller machen kann (es kann, die Optimierung des Mikrocodes usw.), sondern wie stark eine CPU durch fehlerhafte BIOS / Firmware verkrüppelt ist
quelle
Das BIOS wird im Allgemeinen als Firmware betrachtet. Das BIOS kann alle Arten von Bits in der Hardware verändern, um die Funktionsweise des Systems zu ändern
Ja, es ist durchaus machbar, dass sie neue Firmware herausbringen und beispielsweise die Taktrate ändern oder ob Prefetches aktiviert sind oder ob ein bestimmter Kern - oder IIO - bestimmte Einstellungen für den Cache erhalten kann, die die Spieleleistung erhöhen können zu den meisten Spielen, die in einer Singlethread-Weise entworfen werden.
quelle
Es ist nicht so sehr, dass Software-Updates den Prozessor schneller machen. Was jeder erwartet, ist, dass Software-Updates die Software besser für Ryzens Architektur geeignet machen und ihre Leistung besser nutzen können.
Fast. In der CPU befindet sich Software (Mikrocode, wie oben erwähnt), die die Leistung beeinflussen kann. Grundsätzlich gibt X86 nur die Ergebnisse der Operationen an. Wie genau die CPU diese Ergebnisse erzielt, ist das Problem der Ingenieure. Die Chancen, dass Mikrocode-Optimierungen bei Ryzen eine wichtige Rolle spielen, sind gering, da die Leistungslücke hauptsächlich bei Spielen zu bestehen scheint, was darauf hindeutet, dass die CPU eine gute Leistung erbringt.
Das Betriebssystem ist dafür verantwortlich, sicherzustellen, dass Programme effizient auf der CPU verteilt werden, was sich auf die Leistung auswirken kann. Allgemein gesagt ist jedoch keiner dieser Faktoren das Hauptproblem für eine neue Architektur. Die meisten Leistungsverbesserungen in solchen Fällen sind darauf zurückzuführen, dass Entwickler Code schreiben, der für die neue Architektur besser geeignet ist. Dies tritt in der Regel nicht zwischen Generationen von Intel-CPUs auf, da die Designänderungen nicht sehr bedeutend sind. Was also bei einem gut funktioniert, funktioniert wahrscheinlich auch bei einem anderen.
Ryzen ist jedoch ein völlig neues Design, weshalb alles, was per Definition für andere CPUs geschrieben wurde, nicht für Ryzen geschrieben wurde.
Stellen Sie sich zwei Prozessoren vor, um die Situation massiv zu vereinfachen:
Processor One ist schon eine Weile auf dem Markt und kann (aus welchem Grund auch immer) sehr schnell Nummern hinzufügen. Die Software ist so konzipiert, dass sie versucht, die Addition so weit wie möglich zu nutzen, um diese Fähigkeit zu nutzen.
Ein konkurrierender Prozessor landet auf dem Markt und ist bei der Addition schwächer, aber bei der Multiplikation stärker. Die gesamte Software, die für die Verwendung von additionsintensiveren Befehlen optimiert wurde, weist auf dem neuen Prozessor eine schlechte Leistung auf, aber Software, die nicht für die Verwendung von Losadditionen ausgelegt wurde, weist eine mehr oder weniger ähnliche Leistung auf. Manche Software kann bereits viele Multiplikationen ausführen und ist auf den neuen CPUs besser als auf dem Prozessor 1, selbst am Starttag.
Einige Zeit nach dem Start passen sich Entwickler an, verwenden mehr Multiplikationen in ihrer Software oder entwerfen ihre Software so, dass zwischen additionsintensiven und multiplikationsintensiven Codepfaden gewechselt wird, je nachdem, welche CPU-Architektur verwendet wird.
So läuft es mit Ryzen - es ist eine neue Architektur, die Softwareentwickler noch nicht optimiert haben, um den Eigenschaften von zu entsprechen. Mit der Zeit werden Entwickler beginnen, ihre Software zu optimieren, um eine bessere Leistung zu erzielen. Da die meisten Programme bereits für Intel-CPUs ausgelegt sind (sie sind schließlich sehr beliebt!), Werden sie von diesen Änderungen wahrscheinlich kaum profitieren.
Es gibt einige Workloads, bei denen Intel einfach schneller bleibt, und einige, bei denen Ryzen abhängig vom zugrunde liegenden Verhalten bereits schneller ist (und noch schneller wird). In der oben genannten Situation funktioniert eine Software, die nur Dinge hinzufügen muss, auf dem ersten Prozessor immer besser, und Software, die einfach Dinge multiplizieren muss, funktioniert auf dem zweiten immer besser - aber zum größten Teil ist Software komplex und leistungsfähig Diese Unterschiede werden sich etwas ausgleichen.
Es ist auch erwähnenswert, dass AMD über die Spieleleistung gesagt hat, dass sie mit Entwicklern zusammenarbeiten, um Spiele zu optimieren. Sie senden Entwicklersysteme an Unternehmen (derzeit gibt es 300 in freier Wildbahn, und sie streben bis Ende des Jahres 1000 an) und sprechen mit denen, deren Spiele schlecht abschneiden, um das Problem anzugehen. Soweit ich weiß, wurde keine Aussage getroffen, dass AMD Spiele selbst optimiert.
In diesem speziellen Fall wird Ryzen unter bestimmten Umständen auch dadurch zurückgehalten, dass Windows schlechte Entscheidungen darüber trifft, welche Kerne mit der Arbeit geladen werden sollen, und aktuelle BIOS-Versionen sind aus Gründen problematisch, von denen ich einfach nicht vorgebe, etwas zu wissen. Diese Probleme können jedoch nicht für die gesamte Leistungslücke verantwortlich sein, da es Workloads gibt, bei denen Ryzen Intel bereits überzeugend übertrifft, was darauf hindeutet, dass das Problem zumindest teilweise (wenn nicht größtenteils) auf die einzelnen ausgeführten Programme zurückzuführen ist das Betriebssystem oder das BIOS als Ganzes.
quelle
Natürlich kann Software die Leistung von CPUs oder sogar GPUs verbessern.
Eine Möglichkeit ist definitiv das Übertakten oder eine andere Art von Taktänderungsmechanismus. Zweitens können Treiberoptimierungen sein. Dazu gehören bessere Datenkomprimierungsmethoden, schnellere Dekodierungsalgorithmen usw. Grundsätzlich gibt es Funktionen, mit denen mehr Hardware besser genutzt werden kann. Diese Funktionen können auch durch Firmware-Updates aktualisiert werden, was eigentlich keine (normale) Software ist. Dann gibt es Software, die die Kühllösung Ihres Computers steuern kann. Dies ist sehr nützlich für CPUs und GPUs, die leistungssteigernde Technologien wie Intels Turbo-Boost und Nvidias GPU-Boost verwenden. Hardware wie diese hat bestimmte Temperaturbeschränkungen, daher verringern sie ihre Leistung, wenn sie zu heiß und dynamisch übertaktet werden, wenn Apps eine höhere Rechenleistung benötigen, solange sie ihre maximale Leistungsaufnahme nicht erreicht haben und
Es gibt auch andere Möglichkeiten, aber diese decken es meistens ab. Grundsätzlich gilt: Solange Sie das Problem kennen und die Art und Weise der Datenverarbeitung programmgesteuert manipulieren können (z. B. Einführung eines intelligenten Dekodierungsalgorithmus, der eine "Brute Force" -Lösung ersetzt) oder die Reaktionen des Prozessors auf verschiedene Schlüsselfaktoren für seine Leistung manipulieren (Wie eine aggressivere Erhöhung der Kühlung im Falle einer Überhitzung oder Überwachung des Ressourcenbedarfs der Anwendungen und eine dynamische Übertaktung, wenn mehr Prozessorleistung benötigt wird), können Sie die Leistung einer Prozessoreinheit erheblich verbessern (oder verschlechtern).
Bei AMD handelt es sich wahrscheinlich um eine Optimierung des Boosting-Mechanismus oder der Kühllösung. Eine oder beide wurden wahrscheinlich geändert, um aggressiver auf steigende Last oder Temperatur zu reagieren.
TL; DR: Ja, Software kann die Leistung eines Prozessors verbessern. Es gibt viele Möglichkeiten, wie z. B. Treiber- und Firmware-Optimierungen, Overclocks usw. Jede Softwareänderung, die Daten so aufbereitet, dass sie einfacher zu verarbeiten ist oder die Hardware besser auf die Last oder deren Einschränkungen reagiert, führt höchstwahrscheinlich zu einer Leistungssteigerung.
quelle
Durch Software-Updates kann das System (einschließlich des Prozessors) definitiv schneller ausgeführt werden.
Ein sehr extremes Beispiel hierfür sind große IBM-Großrechner: Sie können mehr CPU-Zeit online kaufen, und Sie erhalten lediglich einen Lizenzschlüssel, den Sie in Ihr Betriebssystem eingeben müssen, und boom !, Ihr System läuft schneller. Der Trick ist einfach: Der OS-Scheduler weigert sich manchmal, Tasks zu planen, und lässt stattdessen die CPU in den Energiesparmodus wechseln oder führt nur eine kurze Zeit lang eine NO-OP-Schleife aus, um einen bestimmten durchschnittlichen Gesamtdurchsatz zu erzielen. Wenn Sie für eine teurere Lizenz bezahlen, entfernt der Scheduler diese NO-OPs.
Oder noch drastischer: Wenn Sie ein System mit nur 4 oder 6 oder 8 CPUs kaufen, sind normalerweise 16-32 CPUs installiert. Das Betriebssystem fährt einige von ihnen einfach herunter und durch Eingabe eines Lizenzschlüssels können Sie sie einschalten.
In ähnlicher Weise unterscheiden IBM Mainframes zwischen verschiedenen Arten von Prozessoren: Linux-Prozessoren, Java-Prozessoren, Transaktionsprozessoren usw. Sie sind eigentlich alle der gleiche Prozessor, aber der OS-Scheduler lehnt es ab, Transaktionsaufgaben (die wichtigsten) für a zu planen Java- oder Linux-Prozessor. Den Java-Prozessoren werden nur Java-VMs und den Linux-Prozessoren nur Linux-VMs zugewiesen. Wenn Sie eine höhere Transaktionsleistung erzielen möchten, müssen Sie Lizenzen für mehr Transaktionsprozessoren erwerben: Auch hier handelt es sich um genau dieselben Prozessoren. Der einzige Unterschied besteht in einem Konfigurationsflag im Scheduler, das besagt: "Planen Sie keine Transaktionsaufgaben für diese Prozessoren." ".
Ein anderes, nicht ganz so extremes Beispiel sind die verschiedenen Editionen von Windows. Verschiedene Editionen von Windows unterstützen unterschiedliche Anzahl von CPU-Kernen und unterschiedliche Speicherkapazitäten. Wenn Sie über einen großen Arbeitsspeicher und eine große Anzahl von CPUs verfügen, können Sie Ihr System schneller machen, indem Sie einfach auf eine "größere" Windows-Version aktualisieren. Beachten Sie, dass die Editionen exakt denselben Code haben. Es gibt irgendwo nur einen Konfigurationsschalter mit der Aufschrift "Sie sind eine Home Edition, Sie unterstützen nur 1 CPU und 128 GiByte".
quelle