Frequenzbegrenzung für Homebrew-CPUs

15

Bei der Untersuchung einiger kundenspezifischer CPUs ist mir aufgefallen, dass die Frequenzen, mit denen sie arbeiten, im Vergleich zu modernen CPUs relativ niedrig sind (in der Größenordnung von mehreren MHz). Gibt es einen elektrotechnischen Grund für diese Einschränkung, z. B. für Steckbretter? Wenn ja, wie ermitteln Sie die maximale Frequenz, die mit Ihrem Design erreicht werden kann?

Eugen
quelle
Wie ... hausgemachte VLSI-Chips? Ich würde mir vorstellen, dass es eine Kostenbegrenzung ist. Die Präzision, die ein millionenschweres Gerät bietet, lässt sich zu Hause einfach nicht duplizieren, weshalb die Chips langsamer laufen müssen.
Nate
4
@Nate, ich stelle mir vor, dass er sich auf homebrew Multi-Chip-CPUs bezieht, die aus TTL gebaut wurden. Zum Beispiel: homebrewcpu.com
Alfred Centauri
@Nate Ich habe meine Frage genauer aktualisiert.
Eugen
@ AlfredCentauri - ja, du hast recht;)
Eugen

Antworten:

16

Dies hängt hauptsächlich mit der Länge der Verbindungen und den Ausbreitungsverzögerungen durch die Tore zusammen. Wenn wir eine CPU auf das Wesentliche reduzieren, handelt es sich um eine Feedback-Maschine. Eine Reihe von kombinatorischen Logikschaltungen berechnen einige Boolesche Funktionen über den aktuellen Zustand der Maschine, und diese Funktionen bestimmen den neuen Zustand, der durch eine sequentielle Schaltung zwischengespeichert wird, wenn eine neue Taktflanke eintrifft. Die kombinatorischen Schaltungen weisen alle Verzögerungen auf. Die Taktperiode kann nicht kürzer sein als die Zeit, die der langsamste Pfad durch diese Tore benötigt, um ein stabiles Ergebnis zu erzielen, da ein einzelnes falsches Bit die Show stoppt.

Darüber hinaus hat die sequentielle Logik Zeitanforderungen. Bevor die Taktflanke eintrifft, müssen die Eingänge für eine gewisse Mindesteinrichtungszeit stabil sein, und danach müssen sie für eine gewisse Haltezeit stabil sein. Wenn diese verletzt werden, wird der Staat Müll.

Die Ausbreitungsverzögerungen werden beispielsweise dadurch verursacht, wie schnell sich parasitäre Kapazitäten aufladen können, wie schnell sich Strom angesichts einer Induktivität aufbauen kann und wie schnell Siliziumbauelemente schalten können. Beispielsweise kann ein Bipolartransistor mit einer kleineren Basis schneller schalten als einer mit einer größeren Basis, sodass ein winziger Transistor auf einem Chip schneller ist als ein diskreter.

In einer früheren Antwort, die ich gelöscht habe, habe ich über Übertragungsleitungseffekte geschrieben. Aber ich habe nicht bedacht, dass diese Effekte bei der Geschwindigkeit, von der wir sprechen, überhaupt nicht ins Bild kommen, weil die Wellenlänge bei 10 MHz immer noch etwa 30 Meter beträgt. Im Maßstab einer gewöhnlichen Leiterplatte erreichen Impulse im Zeitbereich von einigen Megahertz immer noch alle Teile eines Kupfernetzwerks gleichzeitig.

Wenn Sie also eine CPU aus diskreten Bauteilen herstellen, erreichen Sie die kleinen Bauteile einfach nicht mit schnellen Schaltzeiten und der gleichen Nähe, die Streukapazitäten und Induktivitäten minimiert.

Trotzdem liefen alte Diskrete-Komponenten-Maschinen in den 1960er Jahren viel schneller als diese Homebrew-Maschinen. Es dauerte einige Zeit und List, um dorthin zu gelangen. Zum Beispiel lief der IBM 360 Model 44 (1964) mit 4 Mhz. Das mag immer noch "Homebrew-Geschwindigkeit" sein, aber die CDC 7600, die nur wenige Jahre später im Jahr 1969 auf den Markt kam, übertraf 36 Mhz. Der Wikipedia-Artikel http://en.wikipedia.org/wiki/CDC_7600 gibt einen Hinweis auf einige der Tricks, die gezogen wurden, zum Beispiel:

"Wie immer konzentrierte sich Crays Design auch auf das Packen, um die Größe zu verringern, die Signalwege zu verkürzen und damit die Betriebsfrequenz zu erhöhen. Jedes Schaltungsmodul bestand tatsächlich aus bis zu sechs Leiterplatten, von denen jede mit Subminiaturwiderständen und Dioden bestückt war und Transistoren. Die sechs Platinen wurden gestapelt und dann entlang ihrer Kanten miteinander verbunden, was zu einem sehr kompakten, aber im Grunde nicht reparierbaren Modul führte. "

Daher sind die Homebrew-CPUs aufgrund einiger verwirrender Effekte, die mit der Verarbeitungsqualität und dem Layout zusammenhängen, nicht unbedingt auf ihr wahres Potenzial ausgelegt. Dennoch sollte jeder begrüßt werden, der eine CPU aus einzelnen integrierten Schaltkreisen und diskreten Bauteilen mit mehreren Megahertz aufbaut.

Kaz
quelle
Abhängig von der Komplexität des Datenpfads würde ich denken, dass ein Homebrew-Gerät mit moderner Technologie und konventionellen Techniken problemlos mit 20 MHz oder mehr eintakten kann. Nicht Multi-GHz, aber keine völlige Sackgasse. Ich vermute jedoch, dass in den meisten Fällen, in denen Homebrew-CPUs verwendet werden, die einfache Fehlerbehebung wichtiger ist als die Geschwindigkeit. Übrigens, der Master-Clock-Kristall des Original-Pong (R) -Marken-Arcade-Automaten war 14,3818 MHz, obwohl er ziemlich früh aufgeteilt wurde. Ich denke, das einzige, was von dieser Geschwindigkeit beeinflusst wird, ist die Mittellinie des Spielfelds.
Supercat
1
Viele Homebrew-CPUs verwenden EPROMs, um Mikrocode zu speichern, aber auch, um komplexe Logik- und / oder Wahrheitstabellen zu implementieren (viele von ihnen haben sogar eine ALU, die aus einem oder mehreren ROMs besteht). Die Zugriffsgeschwindigkeit der ROMs kann die Höchstgeschwindigkeit des Computers erheblich einschränken. Sie sind jedoch beliebt, da sie das Debuggen, erneute Verwenden und Optimieren des Prozessors ohne nennenswerte Neuverdrahtung vereinfachen.
Alexios
15

Als ehemaliger Gymnasiast, der einen Spezialcomputer mit TTL der Serie 7400 baute, der auf der Wissenschaftsmesse mit einem Preis ausgezeichnet wurde, bemerkte ich Folgendes, das den Betrieb so schnell wie möglich verhinderte:

  • Streukapazität im Steckbrett. Ein paar pF zwischen zwei benachbarten Steckverbindern. Diese begrenzten Anstiegs- / Abfallzeiten der Impulsflanken und an manchen Stellen das Übersprechen. Dies war wahrscheinlich der größte Faktor.

  • Variationen von Grab-Bag-Chips. (Erinnert sich jemand an Poly-Paks?) 74LSxx, 74Hxx, 74xx mit unterschiedlichen Ausbreitungsverzögerungen und anderen Eigenschaften machten es unmöglich, dass Signale bei höheren Taktraten als einigen MHz synchron bleiben.

  • Cheapo statische Speicherchips, wieder aus einem Grabbag oder einer anderen Quelle ohne Qualität. Sie konnten nur nicht über eine bestimmte Rate hinaus zuverlässig lesen oder schreiben.

  • Meine Testinstrumente beschränkten sich auf Homebrew-Signalgeneratoren, ein 5-MHz-Bandbreitenoszilloskop und temporäre, von der Jury gesteuerte digitale Schaltkreise. Die Signalintegrität, das Timing und die Amplituden digitaler Signale, die tiefpassgefiltert wurden, lassen sich nur schwer überprüfen.

Heutzutage ist es schwierig, ein 5-MHz-Oszilloskop zu finden, wenn man kein Antiquitätenhändler ist. Bessere Chips aller Art sind auch in 0,1-Zoll-DIP-Paketen genauso leicht zu bekommen, außer dass ich lange Zeit nicht mehr viel von Grab-Bags gesehen habe. Sockel-Steckbretter haben sich jedoch nicht wesentlich verändert. Streukapazität ist immer noch ein Geschwindigkeitskiller für nervöse kreative digitale Projekte.

Das Vermeiden von Steckplatinen durch Verwendung einer Homebrew-Leiterplatte ist der beste Weg, um Streukapazitäten zu vermeiden, erfordert aber natürlich mehr Aufwand und Zeit.

DarenW
quelle
4

Ich denke, der Hauptgrund dafür ist, dass mit zunehmender Frequenz die Impedanz der Anschlüsse Ihres Steckbretts zunimmt und die Endgeschwindigkeit Ihrer Schaltung begrenzt.

Jede Verbindung in Ihrem Steckbrett hat eine niedrige Induktivität, die jedoch nicht Null ist. Wenn Ihre Frequenz immer höher wird, müssen Sie diese Effekte berücksichtigen. Die Impedanz der Drähte kann wie folgt ermittelt werden:

Diese Formel

wobei L die Induktivität des Drahtes ist. Schließlich wird Z hoch genug, dass kein Strom fließt und Ihre Schaltung nicht mehr funktioniert. Das Ermitteln des genauen numerischen Werts für diese Zahl ist sehr kompliziert, insbesondere weil die Steckbretter Spuren nebeneinander aufweisen und die Impedanz jedes Drahtes ein wenig von dieser Formel abweicht. Wenn Sie wirklich eine (ungenaue) Zahl wünschen, können Sie hier versuchen , die Induktivität (und damit die Impedanz) Ihrer Drähte zu berechnen. Wenn Sie den niedrigsten Strom kennen, mit dem ein Teil arbeiten kann, können Sie die maximale Frequenz bestimmen, bevor Sie diese Grenze erreichen.

Nate
quelle
Könnten Sie den Zusammenhang zwischen der Impedanz und der Geschwindigkeit der Strecke erklären?
Eugen
Wie erklärt sich also, dass CPUs wie Intel Core I7 mit einer Taktrate von 2,5 GHz arbeiten und auf Steckplatinen aufgebaute CPUs diese Geschwindigkeit nicht erreichen können? Ich dachte anfangs, dass es eine Verbindung mit der Länge des Kabels zwischen der CPU und den RAM-Chips gibt.
Eugen
Um die Gesetze der Physik nicht zu leugnen, aber ich denke nicht, dass Induktivität wirklich der Hauptbegrenzer der Geschwindigkeit ist. Danach werden ähnliche Drähte mit ähnlichen Längenbereichen in Homebrew-Radios und anderen Projekten mit viel höheren Frequenzen verwendet. Man muss nur vorsichtig sein, um Impedanzen, Längen, Layouts, versehentliche Kopplungen usw. zu vermeiden.
DarenW
1
@DarenW: Streuinduktivität und Kapazität sind in der Tat die Probleme. In einem Funksystem haben Sie in der Regel nur einen Draht von nicht unbedeutender Länge. In einer Prozessorimplementierung gibt es Hunderte, wobei die gegenseitige Induktivität vom Abstand abhängt. Die frequenzabhängigen Wechselwirkungen sind aufgrund der Komplexität nicht beherrschbar. Die charakteristische Impedanz hängt stark von Dingen wie dem Abstand zu Bodenspuren ab, die auf einem Steckbrett nicht gut kontrolliert werden.
Ben Voigt
1
Ich denke, Sie haben Recht, ich denke, es sollte im Allgemeinen nur um Reaktanzen gehen. Die Kapazität führt zu ähnlichen Problemen, jedoch bei harten Anstiegs- / Abfallflanken und Zustandsänderungen. Die Gleichungen zum Finden der Impedanz sind jedoch ähnlich, und wenn er eine numerische Antwort wünscht, könnten diese wahrscheinlich auf ähnliche Weise angewendet werden.
Nate
3

Andere haben das "Warum" beantwortet. So ermitteln Sie die maximale Geschwindigkeit.

  1. Schauen Sie für jedes Flip-Flop nach, ob die Uhr auf Q steht.
  2. Addiere die Drahtlänge aller Drähte vom Flip-Flop zum nächsten Flip-Flop. Drehen Sie diese Länge auf Zeit. Der Draht hat eine Lichtgeschwindigkeit von ca. 2/3
  3. Summe aller Gate-Verzögerungen, auch durch asynchronen RAM.
  4. Nehmen Sie sich die Rüstzeit beim nächsten Flip-Flop.
  5. Addiere 1-4. Dies ist Ihre Mindestuhrzeit. Invertieren, um die Frequenz zu erhalten.
  6. Betrachten Sie Zeitversatz. Wenn die Uhr vor der ersten auf das zweite ff kommt, addieren Sie den Zeitversatz mit 1-4.
  7. Wenn die Uhr vor der ersten auf die Sekunde ff kommt, berechnen Sie das Minimum von 1-3. Stellen Sie sicher, dass sie kürzer sind als die Haltezeit, die für das zweite ff plus den Zeitversatz erforderlich ist.
Brian Carlton
quelle
Von welcher Kabellänge sprechen Sie: von der Stromquelle bis zu den CPU-Ausgangsstiften, von den CPU-Ausgangsstiften bis zu den RAM-Chips ...? Auch mir ist nicht wirklich klar, was du im ersten Schritt meinst.
Eugen
2
@Eugen - Ich denke (aber nicht mein Fachgebiet), er bezieht sich auf die interne Laufzeitverzögerung - von der Taktung bis zur stabilen Ausgabe.
Mickeyf_supports_Monica
1

Abgesehen von all den elektrischen Gründen, die die Geschwindigkeit begrenzen, gibt es auch einen logischen Grund:

Sie können nicht so viele Ressourcen einsetzen, um Dinge schneller laufen zu lassen, z. B. Pipeline-Operationen mit Verzweigungsvorhersage, schnellerer Arithmetik und so weiter. Caches machen auch wenig Sinn, wenn sie nicht schneller sind als Ihr Hauptspeicher.

sternenblau
quelle
1

Bei Homebrew-Maschinen kommt es auf zwei Faktoren an. Die Laufzeitverzögerung für die von Ihnen verwendeten Chips und die Anzahl der Chips, die Sie auf dem längsten Pfad durch Ihr CPU-Design verwenden müssen.

Beispielsweise hat ein 74HC574 (8-Bit-Register) eine maximale Ausbreitungsverzögerung von etwa 41 ns (siehe Datenblatt). Nehmen wir an, der längste Weg durch Ihr CPU-Design erfordert, dass es 8 verschiedene Chips durchläuft. Addieren Sie die Ausbreitungsverzögerungen für jede der 8 und stellen Sie sich vor, dass sie 333 ns betragen. Wenn 1000 ns 1 MHz entsprechen, erhalten Sie eine maximale Geschwindigkeit von 3 MHz.

In der Praxis möchten Sie sich möglicherweise auf etwas Langsameres wie 2 MHz beschränken, um ein stabiles Design zu gewährleisten. Selbst wenn Sie glauben, dass Sie das Timing nur einmal pro Milliarde Zyklen verpassen, stecken Sie immer noch in Schwierigkeiten. 10 Milliarden geteilt durch 3 Millionen bedeutet, dass Sie alle 3.333 Sekunden einen Fehler machen, was ungefähr einmal pro Stunde ist. Es ist nicht gut, Ihre Maschine jede Stunde zum Absturz zu bringen!

Damit es schneller geht, können Sie schnellere Chips verwenden und / oder das Design ändern, um die Anzahl der Chips auf dem langsamsten Weg zu verringern. Die schnellste Homebrew-Geschwindigkeit, die Sie sehen, liegt bei 4 MHz, was Ihnen 250 ns für jeden Zyklus gibt.

Phil Wright
quelle