Befehlabarbeitungszeit vom PIC32

Gast #2163782
Lesenswert?

Hallo,

ich bin in der Materie noch nicht so drin, aber aus (vieeel) früheren 
Assembler-Versuchen meine ich mich zu erinnern, daß ein NOP einen Takt 
lang nichts tut.

Wenn das Ding nun 80 MHz hat sind das 80 Millionen Takte pro Sekunde. 
Ein NOP, wenn es tatsächlich einen Takt lang nichts tut, vertrödelt also 
eine achtzig-millionstel Sekunde :)

42m
#2163789
Lesenswert?

Mirko G. schrieb:

> ich kämpfe mich mal wieder durch die Microchip-Dokumentation vom PIC32
> und suche die Zeit, die benötigt wird, um z.B. ein NOP (in Assembler)
> abzuarbeiten. Wer weiß, wo ich diese Angabe finde und wie lang diese
> Zeit bei einem z.B. 80MHz-Takt ist?

Microchip hat den Core nicht erfunden sondern eingekauft. Kann also 
sein, dass diese Information nicht in der Controller-Dokumentation zu 
finden ist, sondern in einer separaten Referenz des Cores. Die bei MIPS 
zu suchen wäre, aber vielleicht von Microchip auch mehr oder weniger 
angepasst durchgereicht wird.
Gast #2163966
Lesenswert?

Hallo,

ich musste mich auch mal kurz mit diesem Thema beschäftigen. Nach meiner 
Erfahrung kann nicht 100% bestimmt vorrausgesagt werden, wie viel Zyklen 
ein Assemblerbefehl beansprucht.

Google mal nach "SystemConfigPerformance()" und schau dir das hier an:

http://www.microchip.com/forums/m404723-print.aspx

Genau verstanden was da passiert habe ich nicht, vielleicht trägt diese 
Diskussion ja zur Aufklärung bei.

P.s. Simulator und Demo-Board (Explorer 16) ergaben bei mir 
unterschiedliche Laufzeiten.
#2164042
Lesenswert?

Stefen schrieb:

> Der PIC32 hat eine 5 Stufige Pipline,ich denke wenn keine Sprünge da
> sind dann fosc = fcycle! also die Ausführungszeit auch mit 80MHz.

Bischen komplizierter wirds schon noch, da Abhängigkeiten zwischen 
verschiedenen Stufen der Pipeline auftreten können, z.B. wenn ein 
ALU-Ergebnis als Adresse des darauf folgenden Lade/Speicherbefehls 
verwendet wird. Auch kann die Laufzeit von Lade/Speicherbefehlen 
abhängig von der Adresse sein, diese Zeit sich aber anderseits in davon 
unabhängigen Folgebefehlen verstecken.

Die Aussage oben, dass es mit einfachem Taktzählen nicht getan ist 
stimmt durchaus. Ich würde vom Versuch abraten, mit Prozessoren dieser 
Klasse unbedingt ein taktgenaues Befehlstiming hinbekommen zu wollen.
Gast #2167050
Lesenswert?

Master Snowman schrieb:
>> Ist noch ein "durch 2" Teiler noch vor (siehe Seite 2).
> du meinst wohl seite 7-19

ne.. 7-2.. In der Zeichnung auf der rechten Seite ist Fosc. Dann geht 
die "Leitung" in eine Box "/2" und dann nach Fp, über den Teiler dann 
auf Fcy.. Da sieht man immer gut, wie was zusammenhängt. Und auch wenn 
da der Takt noch durch 2 geteilt wird, kann man ihn vorher per PLL 
erhöhen und somit kann man mit einem 40MHz Quarz auch Fcy=40MHz haben.

Doch beim PIC32 bin ich mir nicht sicher, doch wenn ich das jetzt 
richtig verstanden habe, kann die "Fcy" schwanken bzw variieren.
Gast #2206038
Lesenswert?

"probieren geht über studieren", also:

mach eine Schleife und toggle einen Pin, die Zeiten kannst Du mit einem 
Oszi oder LA messen. Dann mach einen oder mehrere NOPs in die Schleife 
und miss wieder ...
Gast #2206278
Lesenswert?

Aja, erst global postulieren und dann mit Spezialitäten daherkommen... 
In diesem Sinne:

still wrong:
Section 07. Oscillator - dsPIC33F FRM
Figure 7-2

regarding the topic

FCY dsPIC30 FCLK/4
FCY dsPIC33 FCLK/2 (also for PIC24F/H/EP)
Gast #2207095
Lesenswert?

morph1 schrieb:
> Aja, erst global postulieren und dann mit Spezialitäten daherkommen...
> In diesem Sinne:
>
> still wrong:
> Section 07. Oscillator - dsPIC33F FRM
> Figure 7-2
>
> regarding the topic
>
> FCY dsPIC30 FCLK/4
> FCY dsPIC33 FCLK/2 (also for PIC24F/H/EP)

... dann ist's wohl halfwrong / halfright. Der unterschied zwischen den 
dsPICs war mir nicht bekannt, habe nur mit den 30'ern zu tun gehabt. 
Danke.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren