Na halt ein Draht von Anfang bis Ende...Genau das, 4 Gatter war jetzt nur ein Beispiel von mir.Ähm was meinst du mit Datenleitung??
Dabei gilt die Angabe für die Gatterzahl immer hintereinander pro Signal, also wenn du 100 Gatter verbaust und dabei 5 Datenleitungen mit je 20 Gattern benutzt, sind das trotzdem nur 20 Gatter, die zählen

ZitatWas das Pipelining betrifft, so halte ich es durchaus für möglich oder zweckmäßig, eine kleine Pipeline einzubinden. Zumindest schaffst du so eine relativ einfache Geschwindigkeitserhöhung. Aber du musst natürlich deinen Assembler auch entsprechend basteln - wenn du eine 3stufige Pipeline hast, müssen nach jedem Sprungbefehl 2 NOPs folgen; ebenso musst du bei aufeinanderfolgenden Registerzugriffen 2 NOPs abwarten (sonst ist der Wert u.U. noch nicht im jeweiligen Register angekommen).OK, aber so ein NOP wäre ja dann auch ein eigenständiger Befehl?? Oder nich?
Klar. Aber der tut nichts böses, d.h. der pfuscht nicht in den Registern rum und auch nicht im Speicher. Wenn du einen JMP machst und du vergisst das, dann denke daran, dass du ja bereits zwei Opcodes geladen hast (3stufige Pipeline) - d.h. die beiden auf den JMP folgenden Opcodes sind (teilweise) schon ausgeführt - das darf nicht passieren, sonst zerstörst du dir den Programmablauf.
ZitatIn Betracht ziehen -musst- du es nicht, aber ich persönlich fände es praktisch. Zumal du dann drei voneinander unabhängige Einheiten produzierst, was sicherlich nicht die schlechteste Idee ist.Hmm ja wie kann denn die ALU drei Befehle gleichzeitig ausführen? Dann bräuchte es ja 6 Eingangs + 3 Ausgangsregister??
Oder ist da nur gemeint die Befehlsverarbeitung vor der ALU 3stufig zu machen???
Das würde ja eingentlich heissen, dass alles 3x vorhanden sein muss...??
Ne, du hast das Prinzip des Pipelinings nicht begriffen... oder ich hab mich vermüllt ausgedrückt.
Du hast drei Teile:
(a) Opcode laden & decodieren
(b) Opcode ausführen
(c) Ergebnisse sichern, Register schreiben
Alle drei Teile können gleichzeitig arbeiten, um keine Rechenleistung zu verschwenden. Wenn jetzt jeder Schritt 1 CPU-Takt dauert, dann braucht auch jeder Befehl 3 Takte zum Ausführen (Decodieren, Ausführen, Sichern). Aber du schaffst es, pro Takt einen Befehl auszuführen - obwohl trotzdem alles 3 Takte dauert. Das ist Pipelining.
Aber dabei musst du eben beachten, dass du in der Pipeline Brüche haben kannst, die du nicht hardwareseitig bearbeiten willst (=> Aufwand); das musst du dann im Assembler berücksichtigen. "JMP" wird dann zu "JMP NOP NOP", weil du ja nicht weißt, was die beiden folgenden Opcodes tun.
Übrigens: (b) ist die ALU, (a) und (c) sind getrennte Teile. Ich meine keinen Multicore...

Gruß,
Svenska

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert

