www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Custom Instruction Ausführung ist langsam


Autor: Fox Xx (mr-fox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe eine Custom Instruction programmiert und eingebunden,
Sie braucht lediglich 5 Takte, aber wenn ich die Zeit Messe in der Nios 
II Umgebung, braucht er 30 Takte, bis er den Befehl abgearbeitet hat.
Wo kommen die anderen 25 Takte her, er wird ja wohl nicht soviel für die 
Variablen Übergabe und Zurückgabe brauchen?

kann man das noch optimieren,
bzw. mal sehen wo er so verdammt lange braucht?

Wenn ich eine CI ausführe die nur 1 Tick benötigt, dauert es fast eben 
solang...

Quartus 2 9.0 mit sp2
Nios II 9.0
SOPC Builder 9.0
Prozessor: EP1S10F780C6

danke

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha und wie mißt du das?

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haste mal ne Hardware / Software Co-Simulation mit dem Modelsim gemacht?
Da siehste das dann genau.

VG,
/th.

Autor: Fox Xx (mr-fox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich toggle ein ausgang und messe mit ein osci, die zeit fürs toggeln 
muss dann natürlich abgezogen werden

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weis jetzt nicht, was Du genau gemacht hast, aber:

1. Für Variablen-Übergabe brauchst Du schon ein Paar Takte
2. NIOS Muss ja auch noch eigene Befehle von irgendwo holen (z.B. SDRAM)
3. Wenn Du irgendwann mal auch eine Schleife hast, musst Du das auch 
berücksichtigen

30 Takte ist zwar viel, aber wenn man genau überlegt, dann auch 
wiederrum nicht

Probier mal mit Signal Tap, da siehst Du dann sofort alles

Grüße,
Kest

Autor: Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch doch mal das ganze mit Performance Countern zu messen, dann 
kriegst du den Overhead deiner Messung los.

Autor: Sören (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du die Geschichte in C betreibst wirst du mit dem Perfromance 
Counter ebenefalls den Overhead sehen. Wie schon Kest erwähnte passiert 
ja eigentlich viel mehr als ein einzelner Aufruf und somit sind die 
'Extra' Zyklen auch nicht weiter verwunderlich. Wenn ich mich recht 
erinnere löscht zudem ein Custom Instruction Aufruf die Pipeline des 
Prozessors, eine Sache an die man Denken sollte, falls vorhanden. 
Schreibe dein Testprogramm in Assembler, nutze den Performance Counter 
und strukturiere den Code so, dass nichts böses passiert ;-) Gruss, 
Sören

Autor: Fox Xx (mr-fox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im user guide, von den custom instruction, werden beispiele, von 300 ns 
gezeigt, die eine ci zum abarbeiten braucht,
ich komme ja nicht mal mit einer ein tick ci in die nähe dieser zeit...
also muss ich irgendwas falsch machen, der prozessor läuft mit 50 Mhz...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.