Warum haben einige Prozessoren inoffizielle Codes und / oder Fehler?

376
Juan Antonio Gomez Moriano

In letzter Zeit schreibe ich einen Emulator für die 6502 NES-CPU.

Ich lerne viele Dinge, einige überraschen mich wirklich und ich wunderte mich, was die Erklärung für diese ist, insbesondere kamen mir zwei Dinge in den Sinn

  1. Das Vorhandensein von Fehlern, insbesondere der 6502, scheint einen Fehler im indirekten Adressierungsmodus zu haben, zumindest für die ersten Prozessoren (es betrifft denjenigen, der im NES verwendet wird).
  2. Inoffizielle Operationscodes: Wiederum überraschend, dass es noch keine offiziellen Codes gibt, einige scheinen völlig nutzlos zu sein (wie DOP und TOP, die Variationen von NOP sind), und manche scheinen die Zusammensetzung anderer Operationscodes zu sein ( wie SAX oder DCP).

Die Frage ist, wie ist es möglich, dass bei der Herstellung von Millionen dieser CPUs Fehler auftraten (wie der Modus für indirekte Adressierung) und warum würden Sie als Hersteller inoffizielle Operationscodes hinzufügen, die in den folgenden Revisionen entfernt werden könnten ? Kommt das auch bei neueren CPUs vor?

-1

2 Antworten auf die Frage

1
JakeGould

Die Frage ist, wie ist es möglich, dass bei der Herstellung von Millionen dieser CPUs Fehler auftraten (wie der Modus für indirekte Adressierung) und warum würden Sie als Hersteller inoffizielle Operationscodes hinzufügen, die in den folgenden Revisionen entfernt werden könnten ?

Warum unterscheiden sich CPUs von Software? Unternehmen geben Millionen von Dollar für Softwareentwicklung, -herstellung und -marketing aus. Warum würde sich dann ein fehlerhaftes Produkt lösen?

Ich meine, Apple ist ein bedeutendes Computer- und Datenunternehmen, oder? Wie kann man dann erklären, wie ein so großes Unternehmen beispielsweise das iPhone 4 mit schlechten Antennenproblemen veröffentlichen würde ? Oder solltest du ein paar Sekunden weißes Rauschen als Taylor Swift-Song in Kanada veröffentlichen?

Ihre Vermutung ist, dass ein Unternehmen groß ist und über Checks & Balances verfügt, dass diese Checks dann fehlerfrei sein sollten. Was in keinem menschlichen Bemühen der Fall ist, egal wie viele Schichten der Qualitätssicherung man hat.

Bei inoffiziellen Operationscodes kann dies leicht durch beschleunigte Entwicklung erklärt werden, oder der Code wird für die zukünftige Entwicklung vorbereitet. Wenn eine neue CPU erstellt wird, haben die Ingenieure höchstwahrscheinlich eine riesige Liste der gewünschten Funktionen. Einige werden gemacht. Einige werden nicht. Und einige werden noch gemacht, aber es wäre unpraktisch, offiziell als "Ja, das funktioniert, verwendet dies" zu stempeln.

Dies ist zum Beispiel der Grund, warum so ziemlich jede CPU draußen Revisionen hat. Und warum ist es bei Multi-CPU-Systemen - Systemen mit mehreren physischen CPUs - oft wichtig, dass alle CPUs demselben Produktionsstapel entsprechen.

Was Sie als schlecht erachten, könnte absichtlich so gewesen sein. Nintendo war dafür bekannt, das manchmal zu tun. Nicht dokumentierte Funktionen werden aus einem bestimmten Grund nicht dokumentiert. Ramhound vor 9 Jahren 0
@Ramhound Habe nie gesagt, dass undokumentierte Funktionen schlecht waren. Nur die besagte Entwicklung könnte überstürzt gewesen sein. JakeGould vor 9 Jahren 0
1
misha256

Wie ist es möglich, dass bei der Herstellung von Millionen dieser CPUs Fehler auftraten

  • Es ist wirklich sehr schwer, CPUs zu entwerfen, ganz zu schweigen von völlig fehlerfreien CPUs.

  • Oft werden subtile Fehler erst in der realen Welt entdeckt, wenn ein Produkt veröffentlicht wird. Es gibt keine Möglichkeit, das Ausmaß und die Reichweite von Millionen von Endbenutzern zu testen.

  • Wettbewerb spielt eine große Rolle. Es ist wichtig, zuerst oder zumindest zeitnah auf den Markt zu kommen, sonst verlieren Sie Geschäft an Konkurrenten und gehen schließlich aus dem Geschäft. Dieser Druck gegenüber dem Druck, Qualität zu schaffen, führt dazu, dass Sie oft etwas bekommen, das nur gut genug ist .

  • Aus irgendeinem Grund, besonders in der IT-Welt, überwiegt die Nachfrage nach Neuem und Verbessertem massiv die Nachfrage nach Aktualisierungen und Verbesserungen . Es ist genauso deine Schuld wie meine. Wenn Intel beispielsweise die 80486-CPU kontinuierlich verfeinert, könnte ich davon ausgehen, dass sie jetzt nahezu fehlerfrei ist. Aber was könnte man heutzutage mit einem 80486 wirklich machen? Ich würde heute sicherlich keine kaufen, und Sie auch nicht.

Warum um alles in der Welt würden Sie als Hersteller inoffizielle Operationscodes angeben, die in den folgenden Überarbeitungen möglicherweise entfernt werden?

Inoffizielle Op-Codes gibt es aus verschiedenen Gründen:

  • Es wurde festgestellt, dass einige Fehler oder Nebenwirkungen zu einem Zeitpunkt während der Entwicklung auftreten, an dem das Fixieren oder Entfernen zu teuer und / oder zeitaufwändig wäre.

  • Einige sind das Ergebnis von Zeitbeschränkungen, bei denen sie nicht gründlich genug getestet werden konnten und es ist nicht sicher genug, dass sie korrekt funktionieren.

  • Einige werden als Proof-of-Concept oder Prototyp für die Zukunft eingesetzt und werden möglicherweise in späteren CPU-Versionen / Generationen übernommen.

  • Einige existieren nur für interne Testzwecke.

  • Und zweifellos werden einige nur aus Spaß dort eingesetzt, auch als Ostereier bekannt