Assemblyprogram
"En programmerare har skrivit koden A = B+C och med hjälp av en kompilator har följande Assemblerinstruktioner genererats...
LOAD R1, B //R1←B
LOAD R2, C //R2←C
ADD R1, R2 //R1←R1+R2
STORE A, R1 //A←R1
...där A, B och C är minnesplatser för lagring av A, B och C.
För Assemblerprogrammet ovan, beräkna exekveringstid om exekveringen görs på en icke-pipelinad processor där minnesläsning/-skrivning tar 100 ns, registerläsning/-skrivning tar 1 ns och ALU-operationer tar 1 ns.
Min lösning:
Jag har länge suttit med denna uppgift och inte riktigt fått grepp på det. Svaret jag har fått fram ovan är rätt men är det rätt tänkt av mig? Jag vet att det kan vara en del att titta på men hoppas att där finns någon som orkar denna helg.
Uppgiften är obegripligt akademiskt formulerad. I verkligheten räknar man typiskt klock-cykler för varje instruktion och antalet cykler är typiskt tabellerad som t.ex.:
https://www.agner.org/optimize/instruction_tables.pdf
I t.ex. denna länk definieras sedan typiskt fem steg för att exekvera en assembler-kodad rad.
https://en.wikipedia.org/wiki/Cycles_per_instruction
Uppgiften tycks t.ex. förbise att instruktionen ska läsas...från var då...externt minne?
Relationen 100ns / 1 ns är orimlig.