2017-04-21 2 views
-2

Einige CPUs haben Fehler auf der Architekturebene (wie these), und es ist möglich, dass einige Programme, die für diese CPUs entwickelt wurden, ebenfalls Fehler enthalten, die durch die CPUs kompensiert werden. Wenn ja, würde ein solches Programm nicht auf einem "perfekten" Emulator funktionieren. Enthalten PC-Emulatoren diese Fehler? Zum Beispiel ist Bochs bekannt dafür, ziemlich genau zu sein, behandelt es "richtig", wie es eine echte CPU wäre?Emulieren PC-Emulatoren CPU-Fehler?

P.S. Habe schon zwei Minuspunkte. Was ist los mit dir?

+2

Das wäre praktisch unmöglich - die meisten dieser Fehler sind nicht gut definiert und können verschiedene Bedingungen auslösen. Außerdem sind alle diese Fehler (und andere veröffentlichte Erratas) modellspezifisch, während Emulatoren normalerweise ISA-spezifisch sind. – Leeor

+0

Sie haben eine vage Frage ohne Antwort gestellt (okay, die Antwort ist ja, jemand hat wahrscheinlich mindestens einen CPU-Fehler in mindestens einen Simulator auf der Welt hinzugefügt). Sie scheinen sich nicht darum bemüht zu haben, die Antwort selbst zu finden. (Anmerkung: Ich habe das gesamte Internet gegoogelt und nichts gefunden, bedeutet, dass Sie sich wirklich nicht anstrengen, weil die Antwort da draußen ist und mit Google zu haben ist). Dies ist keine Frage des Stack-Überlaufs, daher ist es nur eine Frage der Zeit, bis es geschlossen wird ... –

Antwort

2

Solche Emulatoren existieren, CPU-Design-Prozess erfordern extrem genaue Emulatoren, mit präzisen Mikroarchitektur-Modell. CPU-Designer brauchen sie, um zu debuggen oder die theoretische Leistung zukünftiger Chips zu schätzen. Auch ihre Manager könnten die Anleger beruhigen, bevor der Chip bereit ist, indem sie eine erwartete Funktionalität zeigen. Solche Emulatoren sind streng vertraulich.

Auch RTL Einfrieren in CPU-Design Schließung geboren viele Erratas oder Ketten von Erratas. Um zukünftige Chip-Bring-Ups zu vereinfachen, könnten Firmware-Entwickler spezielle Tools unterstützen, um das Funktionsverhalten der erwarteten CPU zu emulieren, wobei alle bekannten Fehler implementiert werden. Aber sie sind auch proprietär.

Aber wirklich, es ist notwendig zu verstehen, was mit dem Wort "Emulator" und "genau" in diesem Fall gemeint ist. Bochs, als QEMU, ist ein funktionales ISA-Modell, und sie bieten ein praktikables Architekturprofil zur Ausführung von Binärdateien der Ziel-ISA. Die Emulationsgeschwindigkeit ist ein erstes Ziel: Es wurde keine Mikroarchitektur modelliert: keine Pipeline, kein Cache-Modell , keine Leistungsmonitore und so weiter.

Um Art BOCHS Genauigkeit zu verstehen, schauen Sie bitte auf die Umsetzung von CPUID perfomance Monitore und Caches Topologie Blätter: cpu/cpuid.cc

Wenn Sie eine CPU bei BOCHS, Skylake zum Beispiel angeben, dass bochs bekannt nichts außer CPUID-Werte gehören zu dieser CPU, Feature-Sets mit anderen Worten: AVX2, FMA, XSAVE usw.

auch BOCHS nicht präzise Modell/Familie cpuid Werte implementiert: suchen sie nach Durchführung der cpuid Versionsinformationen Blatt (grep für get_cpu_version_information-Funktion): es ist ein fest codierter Wert.

So gibt es keine CPU-Erratas bei Bochs.

+1

Gibt es Open-Source-genaue/extrem genaue Emulatoren? Und auch: Wenn Sie RTL haben, können Sie es (mit verilator, vcs, etc) genau (und sehr langsam) mit allen logisch eingebetteten Fehlern ausführen. Dies ist ein "zyklusgenauer Simulator" ... – osgx

+1

Eine extrem genaue Emulation erfordert Kenntnisse der Mikroarchitektur einer bestimmten CPU. Es ist vertrauliches geistiges Eigentum. Diese Tools können nicht als Open-Source-Programme verwendet werden. Vielleicht sehr alte Prozessoren Mikroarchitektur ist freigegeben, und es gibt einige schicke Leute, die solche Werkzeuge machen. Ich glaube nicht daran. – Jettatura

+0

rtl Simulatoren emulieren nicht unbedingt die Siliziumionen oder die Bugs. Wenn ich sage, dass ich einen C-Code habe und egal, welchen Computer ich dafür kompiliere, läuft es genauso. –