In vielen Fällen ist die Auswahl ziemlich willkürlich oder basiert auf "wo immer es am besten passt", wenn ISAs im Laufe der Zeit wachsen. Der MOS 6502 ist jedoch ein wunderbares Beispiel für einen Chip, bei dem das ISA-Design stark beeinflusst wurde, indem versucht wurde, so viel wie möglich aus den begrenzten Transistoren herauszupressen.
Schauen Sie sich dieses Video an, in dem erklärt wird, wie der 6502 rückentwickelt wurde , insbesondere ab 34:20 Uhr.
Der 6502 ist ein 8-Bit-Mikroprozessor, der 1975 eingeführt wurde. Obwohl er 60% weniger Gates hatte als der Z80, war er doppelt so schnell, und obwohl er eingeschränkter war (in Bezug auf Register usw.), machte er dies mit einem wett eleganter Befehlssatz.
Es enthält nur 3510 Transistoren, die von einem kleinen Team von Personen von Hand herausgezogen wurden , die über einige große Plastikfolien krabbelten, die später optisch verkleinert wurden und die verschiedenen Schichten des 6502 bildeten.
Wie Sie unten sehen können, übergibt der 6502 den Anweisungs-Opcode und die Zeitsteuerungsdaten an den Decodierungs-ROM und übergibt sie dann an eine "Zufallssteuerungslogik" -Komponente, deren Zweck wahrscheinlich darin besteht, die Ausgabe des ROM in bestimmten komplexen Situationen zu übersteuern.
Um 37:00 Uhr im Video sehen Sie eine Tabelle des Decoder-ROM, die zeigt, welche Bedingungen die Eingänge erfüllen müssen, um für einen bestimmten Steuerausgang eine "1" zu erhalten. Sie finden es auch auf dieser Seite .
Sie können sehen, dass die meisten Dinge in dieser Tabelle Xs in verschiedenen Positionen haben. Nehmen wir zum Beispiel
011XXXXX 2 X RORRORA
Dies bedeutet, dass die ersten 3 Bits des Opcodes 011 sein müssen und G 2 sein muss; Das ist alles, was zählt. In diesem Fall wird die Ausgabe mit dem Namen RORRORA auf "true" gesetzt. Alle ROR-Opcodes beginnen mit 011; Es gibt aber auch andere Anweisungen, die mit 011 beginnen. Diese müssen wahrscheinlich von der "Zufallssteuerlogik" herausgefiltert werden.
Grundsätzlich wurden Opcodes so ausgewählt, dass Anweisungen, die dasselbe tun mussten, über ihr Bitmuster hinweg etwas gemeinsam hatten. Sie können dies sehen, indem Sie sich eine Opcode-Tabelle ansehen . Alle ODER-Anweisungen beginnen mit 000, alle Speicheranweisungen beginnen mit 010, alle Anweisungen, die eine Nullseitenadressierung verwenden, haben die Form xxxx01xx. Natürlich scheinen einige Befehle nicht "zu passen", da das Ziel nicht ein vollständig reguläres Opcode-Format ist, sondern ein leistungsfähiger Befehlssatz. Und deshalb war die "Zufallssteuerlogik" notwendig.
Die oben erwähnte Seite besagt, dass einige der Ausgabezeilen im ROM zweimal vorkommen. "Wir gehen davon aus, dass dies geschehen ist, weil sie nicht die Möglichkeit hatten, die Ausgabe einer Zeile dahin zu leiten, wo sie wollten, sodass sie dieselbe Zeile an eine andere stecken Lage wieder. " Ich kann mir vorstellen, dass die Ingenieure diese Tore einzeln von Hand zeichnen und plötzlich einen Konstruktionsfehler bemerken und versuchen, einen Weg zu finden, um einen Neustart des gesamten Prozesses zu vermeiden.