007
09.02.2024, 14:35 Uhr
jute-tom
|
Das exakte Umsetzen der Taktzyklen scheint fast aufwändiger zu sein als die Umsetzung aller Kommandos (bereits erledigt).
Vor allem bleibt mir weiterhin unklar, wie die Zyklen genau zu zählen sind. Beispiel: Ein "nop" ist mit 6 "Ausführungszyklen" und 0 Pipelinezyklen angegeben. Er braucht also 3 Zyklen, um 3 Byte zu lesen, für 1-Byte-Befehle liest er offenbar sinnloserweise auch das Folgebyte, ergibt die erwähnten 6 Zyklen.
Ein "add r, r" ist mit 6 "Ausführungszyklen" und 5 Pipelinezyklen angegeben. Sind da die 2*6 Zyklen zum Lesen der 2 Byte gemeint, während die 5 Pipelinezyklen das Kommando dann abarbeiten? Angenommen, nach "add r,r" folgt "adc r,r" würden nacheinander erfolgen, dann würde er - 3 Zyklen zum Lesen des ersten Bytes von "add r,r" - 3 Zyklen zum Lesen des zweiten Bytes von "add r,r" - 3 Zyklen zum Lesen des ersten Bytes von "adc r,r"; nebenbei startet er mit der Abarbeitung von "add r,r" - 3 Zyklen zum Lesen des zweiten Bytes von "adc r,r"; nebenbei wurde "add r, r" bereits ausgeführt und das Ergebnis im entsprechend Register gespeichert - während er das erste Byte des Folgebefehls liest, beginnt er mit der Abarbeitung von "adc r, r" Das klingt also plausibel.
Ein "incw R" ist dagegen mit 10 "Ausführungszyklen" und 5 Pipelinezyklen angegeben. Hier wird es schon tricky (Annahme, ein "ld r, #IM" folgt). Hier meine Interpretation/Idee: - das Kommando braucht 15 Zyklen, wovon 2*3 auf das Lesen der beiden Bytes entfallen: - 3 Zyklen zum Lesen des ersten Bytes von "incw R" - 3 Zyklen zum Lesen des zweiten Bytes von "incw R" - er startet mit der Abarbeitung des Befehls - nach 10 Zyklen, also 10-3-3=4 Abarbeitszyklen, beginnt er mit dem Lesen des ersten Bytes von dem Folgebefehl "ld r, #IM" Sehe ich das richtig? -- Viele Grüße, Thomas |