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
Aha und wie mißt du das?
Haste mal ne Hardware / Software Co-Simulation mit dem Modelsim gemacht? Da siehste das dann genau. VG, /th.
ich toggle ein ausgang und messe mit ein osci, die zeit fürs toggeln muss dann natürlich abgezogen werden
Gast
#1407121
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
Gast
#1407213
Versuch doch mal das ganze mit Performance Countern zu messen, dann kriegst du den Overhead deiner Messung los.
Gast
#1407779
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
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
Bitte melde dich an, um einen Beitrag zu schreiben.