Created
January 19, 2025 03:29
-
-
Save thinkphp/685bcea0d1dd500300cecb5cd624dceb to your computer and use it in GitHub Desktop.
Exercitiul 7 punctul c) Pipeline IF ID LD EX WB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Folosind timpul pipiline de 130 ps determinat anterior. | |
Instrucțiunile sunt: | |
- ADD R3, R2, R1 (R3 ← R2 + R1) | |
- SUB R4, R1, R3 (R4 ← R1 - R3) | |
Identificarea dependenței: | |
Avem o dependență de tip RAW (Read After Write) deoarece: | |
- Prima instrucțiune (ADD) scrie în R3 | |
- A doua instructiune (SUB) citește R3 | |
Execuția în pipeline fără forwarding: | |
``` | |
Cicluri 1 2 3 4 5 6 7 | |
ADD: IF ID LD EX WB | |
SUB: IF ID stall LD EX WB | |
``` | |
Calculul timpului: | |
- Timpul unei instrucțiuni în pipeline: 130 ps | |
- Pentru ambele instrucțiuni fără stall: 6 × 130 ps = 780 ps | |
- Cu un stall: 7 × 130 ps = 910 ps | |
Diferenta este: 910 ps - 780 ps = 130 ps (un ciclu) | |
In practica solutia => Forwarding: | |
- Rezultatul instructiunii ADD poate fi transmis direct din etapa EX către instrucțiunea SUB | |
- Eliminam stall-ul si timpul revine la 780 ps | |
Stall-ul apare pentru că: | |
Instrucțiunea SUB are nevoie să citească valoarea din R3 | |
Dar R3 nu este inca disponibil deoarece ADD nu a terminat de calculat si scris aceasta valoare | |
Astfel, SUB trebuie să "stea pe loc" (stall) un ciclu pana cand rezultatul din ADD devine disponibil | |
Raspunsul punctul c): | |
- Problema: dependenta RAW între instructiuni | |
- Solutie: tehnica de forwarding | |
- Modificarea timpului fata de execuția normala pipeline: | |
* Cu forwarding: fara modificare (780 ps) | |
* Fara forwarding: creste cu 130 ps (un ciclu de stall) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment