Befehlabarbeitungszeit vom PIC32

Gast #2163755
Hallo,
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?

Gruß Mirko
Gast
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
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
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.
Gast
Thomas schrieb:
> Ich glaube bei den alten PICs braucht ein Befehl 4 Taktzyklen. Also
> 4/(80e6).

der PIC32 ist aber nicht alt. Soweit ich weiß, haben die dsPICs diesen 
Teiler nicht, warum sollten dann die PIC32 einen haben. Im Schaltbild 
vom Oscillator ist jedenfalls kein fester Teiler eingezeichnet, daher 
hätte ich gesagt, ein Takt-Zyklus = 12,5ns
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
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
"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
Das Verschieben kann natürlich auch ändern, wichtig ist aber der 
Unterschied mit NOP und ohne NOP an der gleichen Stelle im Programm. Am 
besten in Assembler.
Gast
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
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.