Forum: Mikrocontroller und Digitale Elektronik 8051 vs 6502 vs Z80: Maschinenzyklen und Takte


von A. $. (mikronom)


Lesenswert?

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?

von Matthias K. (matthiask)


Lesenswert?

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

von egal (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von A. $. (mikronom)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von Erich (Gast)


Lesenswert?

>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.

von MaWin (Gast)


Lesenswert?

> 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 :-)

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

A. K. schrieb:
> Es gibt keinen 6502-Befehl, der in einem Takt fertig ist.

nop

von (prx) A. K. (prx)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

Joachim Drechsel schrieb:

> nop

Braucht 2 Takte.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

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
Noch kein Account? Hier anmelden.