PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC Geschwindigkeit



.Johannes.
25.02.2005, 15:47
Hi!

In den Datenblättern steht ja überall was von "single cycle instructions"
Das würde bedeuten, dass bei 4 Mhz, dass in einer sek. 4Mio Befehle
ausgeführt werden müssten.
Ich hab mein Programm mit MPLAB geschrieben und im TRACE-Fenster
kann ich mir bei einer Simulation die verstrichene Zeit anzeigen lassen.
Dabei hab ich festgestellt, dass nach jedem Befehl eine Zeit von
0.000001 sek. dazuaddiert wird. Damit würden aber nur 1 Mio Befehle
Pro sek ausgeführt werden.
Das heißt, dass alle befehle nicht einen, sondern 4 Taktzyklen benötigen.
Im Datenblatt steht auch was von 200ns bei 20Mhz, das hieße,
dass pro sek. 5 Mio befehle ausgeführt werden, statt 20 Mio, was meine
Theorie bestätigt.

Wozu dann single cycle?

PicNick
25.02.2005, 15:51
Überraschung !!!
Ja, das is ganz was Feines. Die Microchips (PIC.....) teilen die Quartz Frequenz durch 4 und das gilt dann erst.
Du kaufst 20 Mhz und kriegst dann 5

stegr
25.02.2005, 15:54
single-cycle-instructions = Instruktionen, die in einem Maschinenzyklus ausgeführt werden können.

1 Maschinenzyklus entspricht dabei 4 Taktzyklen.

Wenn man sich beispielsweise die 18er-PICs anschaut, stellt man fest, dass diese eine 4x-PLL haben, und somit 1 Maschinenzyklus einem externen Taktzyklus entspricht, also 10 Mips. Das derzeitige Maximum bei 18er PICs liegt bei 12 Mips (18F2550/4550).

MfG
Stefan

JohanneS..
25.02.2005, 16:39
Und wie sieht's bei den ATMEL AVR Controllern
oder bei dem (angeblich) schnellen SX28 aus?

Joerg
25.02.2005, 17:01
Hallo Johannes,

der Unterschied zwischen PICs und AVR liegt in der sogenannten Instruction Pipeline. Die PICs brauchen für einen Zyklus 4 Takte für die komplette Abarbeitung eines Befehls (Fetch, Decode, Execute, Write).
Die AVRs haben eine Zweiteilung (Fetch/Decode, Execute/Write) und eine Pipeline. Beim ersten Takt wird der Befehl aus dem Speicher geholt und decodiert, beim zweiten Takt wird dieser dann abgearbeitet. Gleichzeitig wird in der Pipeline schon der nächste Befehl geholt und decodiert. Somit erreicht man, dass bei jedem Takt ein Befehl abgearbeitet wird, solange die Pipeline gefüllt ist. Bei Sprungbefehlen wird der Ablauf unterbrochen und es muss einen Takt länger auf die Abarbeitung gewartet werden.

Der Ubicom-SX, der ja eigentlich ein "aufgebohrter" PIC16C5x ist, hat übrigens eine 4fach Pipeline, die 4 Zyklen sind vom PIC übernommen und braucht damit auch 4 Takte um die Pipeline zu füllen. Mit gefüllter Pipeline wird dann ebenfalls pro Takt ein Befehl abgearbeitet (75MHz Takt -> 75MIPS). Bis zum nächsten Sprungbefehl....

Hoffe das war halbwegs anschaulich.

Viele Grüße
Jörg