Ein 8051 braucht für einen Maschinenzyklus immer 12 Takte (ich hoffe ich habe das richtig in Erinnerung), ein Befehl kann also nie weniger als 12 Takte brauchen. Ein Z80 ist flexibler, mancher Maschinenzyklus braucht 4, andere 6 Takte. Der 6502 ist in meiner Erinnerung (es ist nun schon 20 Jahre her, dass ich einen C64/C128 programmiert habe) aber ganz anders, der kommt bei vielen Befehlen mit nur einem Takt (Takt, nicht Maschinenzyklus) aus. Kann mir jemand sagen, woran solche krassen Unterschiede liegen? Es wäre doch sinnvoll, wenn man einen 8051 wie einen 6502 designt, das wäre etwa einen Verzwölffachung der Geschwindigkeit. Geht das nicht? Wo liegt mein Verständnisproblem?
Andi $nachname schrieb: > Es wäre > doch sinnvoll, wenn man einen 8051 wie einen 6502 designt, das wäre etwa > einen Verzwölffachung der Geschwindigkeit. Geht das nicht? Es gibt neuere 8051, die mit einen Takt auskommen, zB. von Silicon Laboratories, Inc. Hier einer Übersicht, da sind noch mehr solcher 8051 Flitzer dabei. http://www.keil.com/c51/chips.asp
Wer solche Fragen stellt, sollte in anderen Threads nicht anderen Forumsteilnehmer die Benutzung von brain.exe nahelegen... Das ist eine Frage der Designphilosphie. Näheres dazu unter RISC und CISC, z.b. bei Wikipedia.
Du hängst Jahrzehnte zurück. Der Dallas DS80C320 kann schon seit Urzeiten 4 Takte. NXP (Philips) 8051 brauchen 6 Takte. Infineon (Siemens) hat seine 8051 auf 2 Takte gepimt. Spitzenreiter müßte der 8051 von Silabs sein, 10ns je Befehl bei 100MHz Takt. Peter
egal schrieb: > Wer solche Fragen stellt, sollte in anderen Threads nicht anderen > Forumsteilnehmer die Benutzung von brain.exe nahelegen... Du solltest mal richtig lesen. Der Kunde/Freund eines Forumteilnehmers ist der DAU! > Das ist eine Frage der Designphilosphie. Näheres dazu unter RISC und > CISC, z.b. bei Wikipedia. Bla bla bla. Was konkreteres weißt du also nicht.
Und das ganze ist auch eine Frage der Implementation: - Microcode (Z80) vs fest verdrahtet (6502) (Entwicklungsaufwand) - Geschwindigkeit vs Chipfläche (Fertigungskosten) - verfügbarer Fertigungsprozess etc etc
Andi $nachname schrieb: > Der 6502 ist in meiner Erinnerung (es ist nun schon 20 Jahre her, dass > ich einen C64/C128 programmiert habe) aber ganz anders, der kommt bei > vielen Befehlen mit nur einem Takt (Takt, nicht Maschinenzyklus) aus. Es gibt keinen 6502-Befehl, der in einem Takt fertig ist. > doch sinnvoll, wenn man einen 8051 wie einen 6502 designt, Es soll schon vorgekommen sein, dass verschiedene Entwickler zu verschiedenen Schlussfolgerungen gelangen. Wäre es nicht gleichermassen sinnvoll, alle Mikroprozssoren der Einheitlichkeit wegen mit 3 Versorgungsspannungen und einem separaten recht komplexen Taktgenerator auszustatten? Immerhin hatte Intel damit anno 8080 viel Erfolg. > das wäre etwa einen Verzwölffachung der Geschwindigkeit. Nein. 12 schnelle Takte können genauso lang dauern wie ein langsamer.
>Wo liegt mein Verständnisproblem? Der 6502 (Ursprungsversion) hatte einen Takt von 1 MHz. Es wurde in jedem Takt was "getan", sowohl bei fallender als auch bei steigenden Taktflanke. Beim Z80 war die Urversion für 2,5 MHz Takt ausgelegt, mit mind. 4 Takten je Befehl; die "A" Version dann 4 MHz. Somit ist die Befehlsausführungszeit eines Z80A bei 4 MHz gleich zu der des 6502 mit 1 MHz. Der 8051 mit seinen 12 Takten war eben nochmals ganz anders intern designt, was dessen Urversion als Takt vertrug weiss ich jetzt nicht ganz sicher, vermutlich aber 12 MHz. Voila. So liegt die Ausführungszeit für einen Maschinenbefehl bei alle 3 Typen praktisch gleich. Letztlich gab wohl der Fertigungstechnologie damals nicht mehr her, bei allen Herstellern (NMOS). Daß bei Z80 die Effektivität der Maschinenbefehle i.d.R. höher war, ist ein anderes Thema.
> Kann mir jemand sagen, woran solche krassen Unterschiede liegen?
Pipeline.
Man kann einen Prozessor als eine State-machine aufbauen, die nach dem
kombinatorischen Netzwerk (Befehlersdecodierung, Ergebnisberechnung) nur
ein Register/Latch enthält,
und man kann eine Maschne so aufbauen, daß sie schrittweise (Befehl
holen, decodieren, Operanden holen, Ergebnis berechnen, Ergebnis
wegspeichern) arbeitet und entsprechend mehr Takte benötigt.
Die tatsächliche Geschwindigkeit der 1-Takt-Maschine muß nicht schneller
sein als die der 12-Takt Maschine, da weniger zu tun ist sind die
kombinatorischen Netzwerkle auch kürzer. Der beste Kompromiss war wohl
die Z80 :-)
MaWin schrieb: > Pipeline. Deine Beschreibung der Statemachine ist zwar zutreffend, ist aber zumindest in Bezug auf 8051 keine Pipeline. Dazu wird sie erst, wenn diese Schritte von 12 Einheiten so ausgeführt werden, dass die jede Einheit in jedem Takt ihren Job macht und so zwar jeder Befehl 12 Takte benötigt, aber pro Takt einer beendet wird. Das ist bei modernen Prozessoren so, aber nicht beim 8051.
A. K. schrieb: > Joachim Drechsel schrieb: > >> nop > > Braucht 2 Takte. Stimmt - habe gerade mal in meiner alten 6502-Schwarte nachgesehen (programming the 6502, Rodney Zaks, Sybex 1979 :-))
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.