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?
15
Antworten:
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.
quelle
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.
quelle
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:
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.
quelle
Andere haben das "Warum" beantwortet. So ermitteln Sie die maximale Geschwindigkeit.
quelle
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.
quelle
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.
quelle