Betrügt es, wenn ich einen SRAM-Chip als Registerdatei verwende? [geschlossen]


7

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

Würde es als Betrug angesehen werden, wenn ich einen SRAM-Chip im Gegensatz zu einer TONNE von 374 Flip-Flop-Chips für die Register verwenden würde? Dies soll ein Prozessor sein, der aus diskreten Chips besteht


20
Betrug? Nach wessen Regeln?
Marla

4
Ich weiß nicht, ob es betrügt, aber es wird Ihr Design langsamer machen, wenn es jeweils nur auf 1 Register zugreifen kann.
Das Photon

9
Ja, ein Professor wird den Behörden davon erzählen.
Harry Svensson

12
@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 Leiterplatte "
Harry Svensson

9
Wenn es betrügt, sind Sie in guter Gesellschaft en.wikipedia.org/wiki/Texas_Instruments_TMS9900
Bruce Abbott

Antworten:


26

Nein, es betrügt keine Regeln. Dies liegt daran, dass es überhaupt keine Regeln gibt.

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


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

11

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, um Operanden vorab abzurufen und zwischenzuspeichern, wenn Sie einen einzelnen Port-RAM verwenden möchten. Oder Sie können etwas mit einem bestimmten und privilegierteren Akkumulator und einem Befehlssatz erstellen, der nur zulässt, dass ein einzelnes Nicht-Akkumulator-Register als Quelle oder Ziel angezeigt wird (es gibt CPUs mit nur einem Akkumulator).

Die Verwendung von zwei parallel geschriebenen und einzeln gelesenen Speichern könnte die Dinge ein wenig vereinfachen, aber dieser Trick funktioniert am besten mit Dual-Port-Speichern. Diejenigen sind etwas , das Sie in IC - Form, als auch als die häufigste Form von FPGA Block - RAMs kaufen kann.


Ich werde bemerken, dass 3-Port- (oder sogar 2-Port-) Register-Arrays eine relativ späte Innovation waren. Es war etwas, was wir versucht haben, als ich um 1973 zum ersten Mal im Geschäft war, aber die Kosten waren für die meisten Designs mit mehr als 4 Registern zu hoch.
Hot Licks

Sie können einfach zwei SRAM-Chips parallel verwenden, einen für jeden Operanden und in beide schreiben.
Michael

@Michael - Hinweis oben "Verwenden von zwei parallel geschriebenen und einzeln gelesenen Speichern ...". Wenn es sich jedoch um Single-Port-Modelle handelt, ist eine Muxing-Logik erforderlich, um die Adressleitungen zwischen unterschiedlichen Lesevorgängen und gemeinsam genutzten Schreibvorgängen auf die Adresse des Ergebnisregisters umzuschalten während geeigneter Zyklen.
Chris Stratton

5

Ihr Projekt, Ihre Regeln.

Aber wie sie sagen, "perfekt ist der Feind von getan ". Wenn das Projekt außer Kontrolle zu geraten scheint (sei es in Bezug auf Komplexität, Zeitaufwand oder Geldaufwand), kann es der Unterschied zwischen einer raffinierten (wenn auch etwas verrückten) Leistung sein, sich an einer Ecke des Entwurfs etwas zu entspannen und ein Projekt, das nie abgeschlossen wurde.

Selbst wenn Sie sich für "Cheat" entscheiden, besteht immer die Möglichkeit, Version 2 später mit weniger Verknüpfungen zu erstellen. Sie können sogar versuchen, ein mögliches zukünftiges "Upgrade" in der ersten Version des Designs zu berücksichtigen, wenn Sie einige Zeit damit verbringen möchten, das "Upgrade" zu vereinfachen.


4

Ja! Es ist sogar ein Betrug, wenn Sie Komponenten verwenden, die Sie nicht ausschließlich aus natürlichen Materialien hergestellt haben, die Sie in Ihrem eigenen Garten finden.


Aber dann würden Sie betrügen, wenn Sie Sand aus Golfplatzbunkern stehlen, um Silikon herzustellen. Ich gehe davon aus, dass diese Antwort versucht, der OP-Frage zu helfen, was wirklich als "Betrug" angesehen wird.
Alan Campbell

2
Ja, und die Energie für diesen Prozess muss von der Sonne, dem Wind oder den Bäumen kommen, die Sie selbst gepflanzt haben, alle aus dem Garten. Es ist kein Betrug erlaubt, Strom aus dem Netz zu verwenden oder fossile Brennstoffe von anderen Orten zu beziehen.
Peter Mortensen

Tatsächlich. Der richtige Weg, um zu beginnen, besteht darin, ein Quarzgestein und etwas Anthrazit zusammenzuschlagen, bis es Silizium bildet. Es kann in nennenswerten Mengen geschehen, bevor das Universum in den Bauch geht.
Stian Yttervik

Verflixt! Also kann ich keinen Frac Sand verwenden?
Hot Licks

2

Leute, die Homebrew-CPUs herstellen (haben Sie sich welche angesehen?), Verwenden SRAM für Register. Niemand, der bei klarem Verstand ist, würde eine Menge Flip-Flops anlöten. Es macht nichts aus, es sich zu leisten, den Strombedarf und die Chancen, es richtig zu verkabeln.

Sie benötigen keinen Dual-Port, wenn Sie immer nur einen Lese- oder Schreibvorgang ausführen. Um beispielsweise ein Register einzuschließen, lassen Sie Ihre CPU es in einem Zyklus in einen Puffer lesen. Erhöhen Sie den Puffer im nächsten Zyklus und schreiben Sie ihn in einem dritten zurück. Zeitmultiplexing!

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

Das heißt, es gibt Register der Serie 74. Ursprünglich bestanden ganze CPUs aus 74er-Serien oder zumindest diskreten Logik-Chips, bevor die 74er-Serie erfunden wurde. Die Suche nach "74 series register file" 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 eine CPU zu betreiben, aber einige davon, die mit der anderen Logik gemischt sind, sparen Ihnen möglicherweise ein paar Chips. In einem FPGA könnten Sie jedoch ganze CPUs implementieren. FPGAs sind im Grunde Tausende von Logikgattern auf einem Chip. Sie können auswählen, welche Logik jedes Gate ausführt und wie sie verbunden sind. Sie tun dies, indem Sie Code wie Software schreiben. Schießen Sie dann die Ergebnisse über ein USB-Kabel zu einem Programmierer.

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


Ich kann nicht glauben, wie verzweifelt ich 1977 D FF-Register verwendet habe, um einen PIO UART und alle 883B-Chips herzustellen.
Tony Stewart Sunnyskyguy EE75

3
Das ist der rutschige Hang. Sie wechseln von diskreten Komponenten zu einem Speicherchip, zu einer CPLD, zu einem FPGA. Dann stellen Sie fest, dass im FPGA ein CPU-Hardcore eingebaut ist, und als nächstes wissen Sie, dass Sie nur ein FPGA und einige passive Komponenten an ein gelötet haben PCB und es macht überhaupt keinen Spaß.
Fluffysheap

@fluffysheap, und was macht es so viel Spaß, eine große Menge DIP-Chips zu löten? Und dann keinen Logic Analyzer, um Signale zu sehen? Und dann für immer gegen Stromausfälle kämpfen? Das klingt alles wie ein College-Projekt mit einem Professor, der in 70-s / 80-s steckt. Ich habe eine "Mikroprozessor-Design" -Klasse gesehen, in der sich alles um den i8237-DMA-Chip mit Buszugang aus diskreten Gates auf Papier drehte. Ein Vorschlag, alles mit FPGA / Verilog-Tools mit vollständiger Timing-Analyse und allen Timing-Diagrammen zu erstellen, wurde abgelehnt. FPGA ist ein sicherer Weg, um Prozessoren zu lernen. Und gibt auch eine sehr praktische Fähigkeit.
Ale..chenski

2

Mir ist auch ein Prozessor bekannt, der SRAM mit einem Port für die Allzweckregisterdatei verwendet, ein sehr schneller / effizienter Prozessor.

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

Mit einer Pipeline-Architektur könnten Sie einen SRAM mit einem Port haben und nicht unbedingt einen Leistungseinbruch. Eine Single-Ported-SRAM-Implementierung wäre sinnvoll, wenn viele Register vorhanden wären, beispielsweise 128, 256 oder 512 Allzweckregister.

Ja, es ist vollkommen 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 beiden Fällen ist die Leistung bei diskreten 74xx-Teilen nicht unbedingt ein Ziel im Vergleich zu Vernunft und Erfolg. Wenn Sie einige SRAMs aus dieser Generation haben, dann unbedingt. Sie können LEDs an den Adress- und Datenbus anschließen, um (mehr) blinkende Lichter mit Lebenszeichen zu erzeugen.

Oder Sie können den 6502- Ansatz wählen und 256 virtuelle oder indirekte Register (Seite Null) haben, die nur Speicher oder möglicherweise spezieller Speicher sind. Und Ihr echtes Allzweckregister (oder Allzweckregister) ist wenige und passt in einige Teile. Für MOS Technology hat es ganz gut funktioniert . (Die Architektur, nicht unbedingt die Implementierung, obwohl sie den 6502 rasiert, 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 ... Auch wenn das nicht schummelt; Es ist eine bekannte Lösung.


"Mit einer Pipeline-Architektur könnte man einen einzelnen Port-RAM haben und nicht unbedingt einen Leistungseinbruch" - nicht wirklich. Ein solcher Engpass bedeutet, dass Sie bei jeder Reihe von Registeroperationen, auch bei unabhängigen, einen Pipeline-Stillstand bekommen . Wenn Sie für eine Folge von Anweisungen ohne Abhängigkeiten nicht gleichzeitig zwei Operanden lesen und jede Uhr ein Ergebnis zurückschreiben können , haben Sie im Vergleich zu einer Maschine, die dies kann, einen Leistungsverlust erlitten.
Chris Stratton

hängt vom Design ab. Ich stimme Ihnen im Allgemeinen zu, bin aber mit einem Design vertraut, das dieses Problem nicht aufweist.
old_timer

Um fair zu sein, betrachten Sie 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 auch immer) würde dabei helfen.
old_timer

Gleichzeitiges Lesen / Schreiben erfordert zwei Ports. Es kann spezialisierte (im Vergleich zu Allzweck-) Dual-Port-RAMs geben, bei denen jeder Port nur eine bestimmte Rolle spielt, aber in Bezug auf Allzweckteile wäre ein vollständiger DPR erforderlich - und für die volle Fähigkeit von zwei Operanden, zwei davon parallel geschrieben.
Chris Stratton

Wir haben keinen Grund, warum D und Q des Flip-Flops an dieselbe Logik gebunden sein müssen. Wenn Sie das Dual nennen, ist das in Ordnung.
old_timer

-2

Die Verwendung eines (modernen) SRAM-Chips mit 74LS-basierter CPU ähnelt dem Filmen von Exodus, und jemand im Film trägt eine Digitaluhr. (Die damals verfügbaren SRAMS sind nicht mehr wie 74LSxx-Teile erhältlich, daher gab es keine modernen SRAMs, aber dies ist der einzig vernünftige Kompromiss. )

Es heißt Anachronismus, ein Objekt, das in der Zeit verlegt wurde.

Mein Lieblingsbuch " Die Seele einer neuen Maschine " beschrieb die puckige Reise von Ingenieuren und ihrem Manager bei Data General, die kurz vor Mitte der späten 70er Jahre, als CMOS herauskam, mit " The Eagle" Geschichte geschrieben haben.

Es war dieselbe Ära, ich begann mein Leben als Ingenieur mit der Erfahrung, ein UART-Board von 74LSxx zu entwerfen, da Rotamola seinen MC6821 noch nicht veröffentlicht hatte. Ich habe es in einer Woche auf Papier entworfen und das Layout auf einer 4-Lagen-Platine mit diesen 44-poligen Randverbindern für die MC6800-Karte erstellt, und es hat beim ersten Drehen funktioniert. Eine weitere Karte fächerte 128 Ausgänge und 128 Eingänge auf der Hauptkonsole auf, die wie ein Haus zu Weihnachten mit allen eingravierten quadratischen, hintergrundbeleuchteten Drucktasten aufleuchteten.

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


Nein, der statische Arbeitsspeicher stammt aus der Mitte der 1960er Jahre, und einige Teile existierten sogar innerhalb der 74LS-Familie. Das PMOS 1101 war 1969 auf dem Markt und das CMOS 5101 erscheint in der Intel-Literatur von 1975
Chris Stratton

Ich bin damit einverstanden, dass diese Teile keine Anachronismen sind. Aber ich nahm an, dass er diese nicht auswählte.
Tony Stewart Sunnyskyguy EE75

Darüber hinaus handelt Kidders Buch von Ereignissen der späten 1970er Jahre, insbesondere vom zweiten Versuch, einen Nachfolger der 16-Bit-Eclipse von 1974 zu schaffen . Es scheint, dass der größte Teil der Geschichte 1978 und / oder 1979 mit dem 1980 veröffentlichten Produkt stattfand.
Chris Stratton

OK, ich war es, der Mitte der 70er Jahre vor dem Buch herauskam. Ich glaube, der DataGeneral-Minicomputer in meinem Labor in '75 war die 1. Generation und ich habe das Buch erst gelesen, nachdem ich meinen ersten Job in 'verlassen hatte. 79. Aber wenn noch SRAMs aus den 70ern produziert werden, wäre ich überrascht.
Tony Stewart Sunnyskyguy EE75

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.