Ist es Betrug, wenn ich einen SRAM-Chip als Registerdatei verwende? [abgeschlossen]

Ich baue derzeit meinen eigenen Prozessor mit diskreter Logik (74LSxx-Serie und so) mit meiner eigenen Befehlssatzarchitektur. Ich fange an, ein bisschen Geld zu verdienen, weil ich alle Chips brauche. Für alle von Ihnen, die Leute gesehen haben, die solche Homebrew-CPUs gebaut haben, niemand, von dem ich gelesen habe, hat einen SRAM-Chip als Registrierungsdatei verwendet

Würde es als Betrug angesehen werden, wenn ich einen SRAM-Chip anstelle einer Tonne von 374er Flip-Flop-Chips für die Register verwenden würde? Dies soll ein Prozessor aus diskreten Chips sein

Schummeln? Nach wessen Regeln?
Ich weiß nicht, ob es Betrug ist, aber es wird Ihr Design langsamer machen, wenn es nur auf 1 Register gleichzeitig zugreifen kann.
@Marla, ich habe noch nie jemanden gesehen, der seine Registerdatei aus SRAM erstellt hat, also dachte ich, es sei nicht der richtige Weg, so etwas zu tun The Photon, ich greife sowieso nur einzeln zu, es gibt nur einen Bus
Ja, irgendein Professor wird den Behörden davon erzählen.
Warte mal, sagst du uns, dass du das Silizium nicht selbst raffiniert hast? Aber im Ernst, machen Sie es so, wie Sie möchten.
Ich würde sowohl einen oder mehrere SRAMs für die Registerdateien als auch einen oder mehrere EPROMs für die Logik verwenden. Nur um die Zeit, die ich hatte, auf die mühsamen Teile – Verkabelung – zu beschränken und die Zeit zu verlängern, die ich für die interessanten Teile – Design und Testen – habe.
Müsste Ihre ALU nicht gleichzeitig auf zwei Register zugreifen, um Berechnungen durchzuführen (z. B. ADD R0, R1)?
Die Architektur verwendet einen Akkumulator, der direkt mit der ALU (6502-ähnlich) verbunden ist, also muss ich ihm nur einen anderen Operanden geben
Das würde ich deiner Frau niemals sagen
@GregoryKornblum " Mary, ich war dir untreu ... Ich habe dich mit einem SRAM-Chip betrogen, es begann mit einem Lötkolben, eins führte zum anderen und wir landeten beide auf der Platine "
Vielleicht wäre es Betrug, wenn Sie beabsichtigen, einen Computer aus Komponenten herzustellen, die zu einem bestimmten Zeitpunkt verfügbar waren, Sie könnten von denen ausgehen, die in einem TTL-Datenbuch von Texas Instruments oder Fairchild von 1974 aufgeführt sind. Sie könnten mit moderneren Varianten schummeln (74HC statt einfach 74). Wie auch immer, es ist dein Projekt, es gibt keine Regel.
Sie fragen nach einer Meinung. Bitte ändern Sie Ihre Frage in eine Frage, die mit spezifischen und konkreten Antworten beantwortet werden kann. Zum Beispiel: "Gibt es einen Nachteil, einen SRAM für die Registerdatei zu verwenden, anstatt Flip-Flops zu verwenden?"
Wenn es um Betrug geht, befinden Sie sich in guter Gesellschaft unter en.wikipedia.org/wiki/Texas_Instruments_TMS9900
Wie wäre es mit der 7489? jameco.com/z/…
Es ist kein Schummeln, aber es ist faul , wenn Sie es für die Erfahrung und den Spaß, es auf die harte Tour zu machen, von Grund auf neu erstellen. :) Alternativ könnten Sie zugeben, dass Sie das System einfach so weit spezifiziert haben, dass es nicht mehr in die Box passt, es sei denn, Sie nehmen einige Abkürzungen. Es ist DEIN Projekt, mach was dir gefällt. Die Kosten sind jedoch ein berechtigtes Anliegen.
Ich hätte gedacht, dass ein wirklich diskreter Prozessor vollständig aus Transistoren besteht, also stellen Sie hier die Regeln auf, nicht wir.

Antworten (7)

Nein, es ist kein Betrug um irgendwelche Regeln. Das liegt daran, dass es überhaupt keine Regeln gibt.

Das ist Ihr Projekt. Sie definieren es. Sie können es auf jede Weise implementieren, die Sie zufriedenstellt. Niemand sonst kümmert sich darum.

Beachten Sie, dass dies bedeutet, dass es betrügt, wenn Sie möchten, dass es betrügt.

Wie gefragt, ist dies eine reine Ansichtssache, daher hier keine gültige Frage.

Beachten Sie jedoch, dass herkömmliche Prozessoren einen 3-Port-Zugriff auf die Registerdatei benötigen – zwei, um Operanden zu erhalten, einen, um das Ergebnis zurückzuschreiben. Sie benötigen also wesentlich komplexere Datenpfad- und Steuerschaltungen zum Vorabrufen und Zwischenspeichern von Operanden, wenn Sie einen Single-Port-RAM verwenden möchten. Oder Sie können etwas mit einem unterschiedlichen und privilegierteren Akkumulator und einem Befehlssatz erstellen, der nur zulässt, dass ein einzelnes Nicht-Akkumulatorregister als Quelle oder Ziel erscheint (es gibt CPUs mit nur einem Akkumulator) .

Die Verwendung von zwei Speichern, die parallel geschrieben und einzeln gelesen werden, könnte die Dinge ein wenig vereinfachen, aber dieser Trick funktioniert am besten mit Dual-Port-Speichern. Diese können Sie in IC-Form kaufen und sind die übliche Form von FPGA-Block-RAMs.

Ich möchte anmerken, dass Register-Arrays mit 3 Ports (oder sogar 2 Ports) eine relativ späte Innovation waren. Wir haben das versucht, als ich ca. 1973 zum ersten Mal im Geschäft war, aber die Kosten waren für die meisten Designs mit mehr als 4 Registern zu hoch.
Sie könnten einfach zwei SRAM-Chips parallel verwenden, einen für jeden Operanden, und auf beide schreiben.
@Michael - Beachten Sie oben "Zwei parallel geschriebene und einzeln gelesene Speicher verwenden ...", aber wenn es sich um Single-Port-Modelle handelt, ist eine Muxing-Logik erforderlich, um die Adressleitungen zwischen unterschiedlichen Lesevorgängen und gemeinsamen Schreibvorgängen auf die Adresse des Ergebnisregisters umzuschalten während geeigneter Zyklen.

Ja! Es ist sogar Betrug, wenn Sie nicht selbst hergestellte Bauteile ausschließlich aus den natürlichen Materialien Ihres eigenen Gartens verwenden.

Aber dann würdest du schummeln, wenn du Sand aus Golfbunkern stiehlst, um Silizium herzustellen. Ich gehe davon aus, dass diese Antwort versucht, der OP-Frage zu helfen, was wirklich als "Betrug" gilt.
Ja, und die Energie für diesen Prozess muss von Sonne, Wind oder selbst gepflanzten Bäumen stammen, alles aus dem Garten. Es ist nicht erlaubt, mit Strom aus dem Netz zu schummeln oder fossile Brennstoffe von woanders zu beziehen.
In der Tat. Der richtige Beginn besteht darin, einen Quarzstein und etwas Anthrazit zusammenzuschlagen, bis sich Silizium bildet. Es kann in nennenswerten Mengen passieren, bevor das Universum zusammenbricht.
Verflixt! Also kann ich keinen Frac-Sand verwenden?

Ihr Projekt, Ihre Regeln.

Aber wie sagt man so schön: „Perfekt ist der Feind des Fertigen “. Wenn das Projekt außer Kontrolle zu geraten scheint (sei es in Bezug auf Komplexität, Zeitaufwand oder Geldbedarf), kann es der Unterschied zwischen einer raffinierten (wenn auch etwas verrückten) Leistung sein, sich an einer Ecke des Designs etwas zu lockern , und ein Projekt, das nie fertig wurde.

Außerdem gibt es immer die Möglichkeit, Version 2 später mit weniger Abkürzungen zu erstellen, selbst wenn Sie sich entscheiden zu "schummeln". Sie könnten sogar versuchen, ein mögliches zukünftiges „Upgrade“ in der ersten Version des Designs zu berücksichtigen, wenn Sie etwas Zeit investieren möchten, um das „Upgrade“ zu vereinfachen.

Leute, die Homebrew-CPUs herstellen (haben Sie sich welche angesehen?), neigen dazu, SRAM für Register zu verwenden. Niemand, der bei klarem Verstand ist, würde eine Menge Flip-Flops zusammenlöten. Egal, ob Sie es sich leisten können, der Strombedarf und die Chancen, es richtig zu verkabeln.

Sie brauchen keinen Dual-Port, wenn Sie immer nur einmal lesen oder schreiben. Um zB ein Register INC zu schreiben, muss Ihre CPU es in einem Zyklus in einen Puffer lesen. Erhöhen Sie den Puffer im nächsten Zyklus und schreiben Sie ihn dann in einem dritten zurück. Zeitmultiplexing!

Wenn Sie den Inhalt von 2 Registern in eine ALU einspeisen, ist eine Art Pufferung erforderlich. Sie könnten vielleicht nur einen Puffer verwenden und den zweiten Operanden "live" aus dem SRAM erhalten. Aber natürlich gibt es auf einem SRAM-Chip keinen "Inkrement"-Pin! Sie werden herausfinden, wo die Pufferung sein muss.

Allerdings gibt es Register der 74er-Serie. Ursprünglich wurden ganze CPUs aus der 74er-Serie oder zumindest diskreten Logikchips hergestellt, bevor die 74er-Serie erfunden wurde. Die Suche nach "Registerdatei der Serie 74" ergab einige Hinweise. Nur weil es einmal gemacht wurde, heißt das natürlich nicht, dass Sie es jetzt finden werden.

Haben Sie sich mit FPGAs oder sogar CPLDs und PALs befasst? PALs sind zu klein, um mit einer CPU zu arbeiten, aber ein paar von ihnen, gemischt mit der anderen Logik, könnten Ihnen ein paar Chips sparen. In einem FPGA könnten Sie jedoch ganze CPUs implementieren. FPGAs sind im Grunde Tausende von Logikgattern auf einem Chip. Sie können wählen, welche Logik jedes Gatter ausführt und wie sie verbunden sind. Sie tun dies, indem Sie Code schreiben, wie Software. Schießen Sie dann die Ergebnisse über ein USB-Kabel zu einem Programmiergerät.

FPGAs werden häufig in Konsumgütern und in vielen vielen anderen Bereichen eingesetzt.

Ich kann nicht glauben, wie verzweifelt ich 1977 mit D FF-Registern einen PIO-UART und alles in 883B-Chips hergestellt habe.
Das ist der rutschige Abhang. Sie wechseln von diskreten Komponenten zu einem Speicherchip, zu einem CPLD zu einem FPGA, dann stellen Sie fest, dass das FPGA einen eingebauten CPU-Hardcore hat, und als Nächstes wissen Sie, dass Sie nur ein FPGA und einige passive Komponenten an ein FPGA gelötet haben PCB und es macht überhaupt keinen Spaß.
@fluffysheap, und was macht so viel Spaß daran, einen großen Haufen DIP-Chips zu löten? Und dann haben Sie keinen Logikanalysator, um Signale zu sehen? Und dann für immer gegen Stromausfälle kämpfen? Das klingt alles nach einem College-Projekt mit einem Professor, der in den 70er/80er-Jahren feststeckt. Ich habe auf dem Papier einen Kurs zum „Mikroprozessordesign“ gesehen, in dem sich alles um den i8237-DMA-Chip drehte, mit Buszugriff aus diskreten Gattern. Ein Vorschlag, alles mit FPGA/Verilog-Tools mit vollständiger Timing-Analyse und allen Timing-Diagrammen zu bauen, wurde abgelehnt. FPGA ist ein sicherer Weg, um Prozessoren zu lernen. Und gibt auch eine sehr praktische Fähigkeit.

Mir ist auch ein Prozessor bekannt, der Single-Port-SRAM für die Allzweck-Registerdatei verwendet, tatsächlich ein sehr schneller/effizienter Prozessor.

Woher kommt Ihrer Meinung nach der Begriff Registerdatei? Registriert sich in einem SRAM.

Bei einer Pipeline-Architektur könnten Sie einen Single-Port-SRAM haben und nicht unbedingt einen Leistungseinbruch erleiden. Eine Single-Port-SRAM-Implementierung wäre sinnvoll, wenn Sie viele Register haben, sagen wir 128, 256 oder 512 Allzweckregister.

Ja, es ist völlig in Ordnung, Ihre "Register" in einer aus einem SRAM erstellten Registerdatei zu implementieren, solange Ihr Design funktioniert.

Ich bin mir nicht sicher, ob Sie versuchen, einen vorhandenen Prozessor- / Befehlssatz zu implementieren oder einen eigenen zu erstellen. In jedem Fall ist Leistung mit diskreten 74xx-Teilen nicht unbedingt ein Ziel im Vergleich zu Vernunft und Erfolg. Wenn Sie einige SRAMs dieser Generation haben, dann auf jeden Fall. Sie können LEDs an den Adress- und Datenbus binden, um (mehr) blinkende Lichter zu machen, die Lebenszeichen zeigen.

Oder Sie können den 6502 -Ansatz wählen und 256 virtuelle oder indirekte Register (Seite Null) haben, die nur Speicher oder vielleicht Spezialspeicher sind. Und Ihre wirklichen Allzweckregister (oder Allzweckregister) sind wenige und passen in ein paar Teile. Für MOS Technology hat es ganz gut funktioniert . (Die Architektur, nicht unbedingt die Implementierung, obwohl sie den 6502 rasiert und gescannt und rückentwickelt haben, damit Sie sehen können, wie sie ihn tatsächlich implementiert haben).

Sie möchten wahrscheinlich auch "schummeln" und ein ROM für die Nachschlagetabelle verwenden, die Ihren Mikrocode implementiert ... Obwohl das auch kein Schummeln ist; Es ist eine bekannte Lösung.

"Mit einer Pipeline-Architektur könnten Sie einen Single-Port-SRAM haben und nicht unbedingt einen Leistungseinbruch erleiden" - nicht wirklich. Ein solcher Engpass bedeutet, dass Sie bei jeder Reihe von Registeroperationen, sogar bei unabhängigen, einen Pipeline-Stall bekommen. Wenn Sie für eine Folge von Anweisungen ohne Abhängigkeiten nicht jeden Takt zwei Operanden lesen und ein Ergebnis zurückschreiben können , haben Sie im Vergleich zu einer Maschine, die dies kann, einen Leistungsverlust erlitten.
hängt von der Ausführung ab. Ich stimme Ihnen im Allgemeinen zu, bin aber mit einem Design vertraut, das dieses Problem nicht hat.
Um fair zu sein, betrachten Sie das Lesen und Schreiben im selben Zyklus wie Single-Ported oder Dual? Ich kann mir nicht vorstellen, dass das OP darüber besorgt ist, mehr über Vernunft und Erfolg als über hohe Leistung. und eine Registerdatei (wie viele Ports) würde dabei helfen.
Gleichzeitiges Lesen/Schreiben erfordert zwei Ports. Es kann spezialisierte (im Gegensatz zu Allzweck-) Dual-Port-RAMs geben, bei denen jeder Port nur eine bestimmte Rolle hat, aber in Bezug auf Allzweckteile wäre ein vollständiger DPR erforderlich - und für die volle Zwei-Operanden-Fähigkeit, zwei davon parallel geschrieben.
Wir haben keinen Grund, warum D und Q des Flip-Flops an dieselbe Logik gebunden sein müssen, wenn Sie das dual nennen, dann in Ordnung.
Sie tun es nicht; aber für einen adressierbaren Speicher, um den es in der Frage geht, erfordert das Lesen und Schreiben an unterschiedlichen Orten unterschiedliche Adresseingaben und Decodierlogik. Das macht es zum Dual-Port. Und um Ineffizienz zu vermeiden, müssen Sie in jedem Zyklus von zwei unterschiedlichen Adressen lesen und an eine dritte zurückschreiben, was drei Ports erfordert . Andernfalls haben Sie eine Maschine, die weniger pro Takt fertig wird als eine ohne diese Einschränkung.
Ich verstehe voll und ganz, dass ... der Kommentar sich auch darauf bezog, dass dies Betrug ist, wenn es Prozessoren auf dem Gebiet gibt, die eine Registerdatei verwenden, die es nicht zu Betrug macht. wenn sie Zellen anbieten, bei denen d und q getrennt sind, sind zwei Registerlesevorgänge und ein Schreibvorgang zwei Takte. Gestalten Sie den Befehlssatz darum herum und Sie können einen sehr schlanken und sehr gemeinen Prozessor haben. Diese existieren. Die Verwendung einer Registerdatei für Register ist kein Betrug. Wie viele Ports und wie sie aussehen, hängt von Ihren Bedürfnissen/Ihrem Design ab (oder was verfügbar ist). Der Op kann eine Registerdatei für Register verwenden, nicht für Betrug.
Das Thema „Betrug“ ist natürlich irrelevant. Das praktische Thema ist nicht - insbesondere macht ein handelsüblicher Single-Port - IC-SRAM keine gute Registerdatei, denn unabhängig davon, ob er dedizierte Eingangs- und Ausgangsdatenports hat , ist er darauf beschränkt, nur einen Adressport zu haben . Geeignetere Dual-Port-Teile haben zwei Adressports – aber selbst das ist nur die halbe Miete, es sei denn, zwei werden parallel verwendet, um eine Registerdatei mit drei Adressports zu simulieren . Wenn Sie Einfachheit wollen, möchten Sie vielleicht einen Akkumulator in einem diskreten Register statt in der Registerdatei .

Die Verwendung eines (modernen) SRAM-Chips mit einer 74LS-basierten CPU ist ein bisschen so, als würde man Exodus filmen , und jemand im Film trägt eine Digitaluhr. (Die damals verfügbaren SRAMs sind nicht mehr wie 74LSxx-Teile vorhanden, daher gab es keine modernen SRAMs, aber dann ist dies der einzig vernünftige Kompromiss. )

Es wird ein Anachronismus genannt, ein Objekt, das in der Zeit verlegt ist.

Mein Lieblingsbuch The Soul of a New Machine beschrieb die puckhafte Reise von Ingenieuren und ihrem Manager bei Data General, die mit „The Eagle“ Geschichte schrieben, kurz bevor Mitte der späten 70er Jahre CMOS herauskam.

Es war die gleiche Ära, ich begann mein Leben als Ingenieur mit Erfahrung im Entwerfen eines UART-Boards von 74LSxx, weil Rotamola seinen MC6821 noch herausbringen musste. Ich habe es in einer Woche auf Papier entworfen und das Layout auf einer 4-Lagen-Platine mit diesen 44-Pin-Edge-Steckverbindern zur MC6800-Karte erstellt, und es hat beim ersten Spin funktioniert. Eine weitere Karte fächerte sich auf 128 Ausgänge und 128 Eingänge auf der Hauptkonsole auf, die mit all den gravierten quadratischen hintergrundbeleuchteten Drucktasten wie ein Haus zu Weihnachten leuchtete.

Aber wie "Exodus" wird Ihr Design immer noch ein Klassiker sein, genau wie Steve bei GRC und die Homebrew -PDP8-Benutzer .

Nein, Static RAM stammt aus der Mitte der 1960er Jahre, und einige Teile existierten sogar innerhalb der 74LS-Familie. Der PMOS 1101 war 1969 auf dem Markt und der CMOS 5101 erscheint 1975 in der Intel-Literatur
Ich stimme zu, dass diese Teile keine Anachronismen wären. Aber ich nahm an, dass er diese nicht wählte.
Darüber hinaus handelt Kidders Buch von Ereignissen der späten 1970er Jahre, insbesondere dem zweiten Versuch, einen Nachfolger für die 16-Bit-Eclipse von 1974 zu schaffen. Es scheint, dass der größte Teil der Geschichte 1978 und/oder 1979 stattfand, wobei das Produkt 1980 veröffentlicht wurde.
OK, ich war es, der Mitte der 70er Jahre vor dem Buch herauskam, ich schätze, der DataGeneral-Minicomputer in meinem Labor war 1975 die 1. Generation, und ich habe das Buch erst lange gelesen, nachdem ich meinen 1. Job aufgegeben hatte. 79. Aber wenn irgendwelche SRAMs aus den 70er Jahren noch in Produktion sind, wäre ich überrascht.