Wie nutzen allgemeine Binärdateien neue Befehlssätze auf neuen CPUs?

7

Mit jeder Version eines neuen Prozessors werden Änderungen am vom Prozessor unterstützten Befehlssatz vorgenommen. Haswell verfügt beispielsweise über erweiterte Vektorerweiterungen. Wenn ich jedoch ein Programm auf einem PC mit einem Haswell-Prozessor ausführe, führe ich normalerweise generische AMD64-Binärdateien aus: Der Compiler weiß nicht, dass diese Anweisungen verfügbar sind. Wie nutzen diese Binärdateien immer noch die neuen Anweisungen, die in neuen Architekturen hinzugefügt wurden?

Martijn
quelle

Antworten:

7

Sofern die Binärdateien nicht eingehalten wurden, um nach Erweiterungen zu suchen und diese auch zu verwenden, wenn sie vorhanden sind, nutzen sie keine neuen Anweisungen aus Befehlssatzerweiterungen.

Dan D.
quelle
Dies klingt einerseits vernünftig, führt jedoch zu der Frage, warum diese neuen Anweisungen hinzugefügt werden, wenn für sie praktisch keine kompilierte Software verfügbar ist.
Martijn
1
Es gibt Software, aber es handelt sich hauptsächlich um Einzweckwerkzeuge
Ramhound
aber wirklich? Alle diese Anweisungen, die seit dem 8086 im Jahr 1978 zu verschiedenen Prozessoren hinzugefügt wurden, stehen niemandem zur Verfügung, der einen für x86 kompilierten Blob herunterlädt. MMX, SSE1 bis SSE5, AVX, all das Zeug ist für x86-kompatible Binärdateien nicht verfügbar? Das kann ich kaum glauben.
Martijn
Ugh, ich habe Ihre Antwort anscheinend falsch verstanden und Binärdateien können / werden kompiliert, um nach Erweiterungen zu suchen? Darauf kommt es bei meiner Frage an.
Martijn
Sobald die installierte Basis der Hardware, die eine bestimmte Erweiterung unterstützt, ausreicht, kann davon ausgegangen werden, dass die Erweiterung vorhanden ist (ähnlich wie bei Betriebssystem-, Speicherplatz-, Speicher- oder Frequenzanforderungen wie "Windows _ oder höher"). Ältere Hardware führt im Allgemeinen zu illegalen Opcode-Ausnahmen (technisch gesehen könnte ein neueres Betriebssystem auf alter Hardware solche Anweisungen emulieren, um Binärkompatibilität zu gewährleisten. Da jedoch die meisten neuen Anweisungen hinzugefügt werden, um die Leistungsemulation zu verbessern, ist dies weniger sinnvoll [z. B. Spracherkennung mit fünf Wörtern pro Stunde] durch Emulieren von AVX-Anweisungen auf einem Pentium MMX]).
Paul A. Clayton