La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Bus Interface Unit L1 I-CacheL1 D-Cache Fetch/Decode unit Dispatch/Execute unit Retire unit Instruction Pool System Bus L2 Cache 256 KB integrata 4 cicli.

Presentazioni simili


Presentazione sul tema: "Bus Interface Unit L1 I-CacheL1 D-Cache Fetch/Decode unit Dispatch/Execute unit Retire unit Instruction Pool System Bus L2 Cache 256 KB integrata 4 cicli."— Transcript della presentazione:

1 Bus Interface Unit L1 I-CacheL1 D-Cache Fetch/Decode unit Dispatch/Execute unit Retire unit Instruction Pool System Bus L2 Cache 256 KB integrata 4 cicli per operazione 8 KB integrata 1 ciclo per operazione 8 KB integrata 1 ciclo per operazione 3 istruz. per ciclo in-order out-of-order 3 istruz. per ciclo 5 istruz. per ciclo Architettura funzionale Pentium Pro

2 BIU IFU ID BTB MIS RAT ROB RRF FEU AGU IEU MIU DCU MOB RS L2 front end in-order ARCHITETTURA CPU ext. BUS core out-of-order back end in-order

3 Legenda schema Pentium pro BIU Bus Interface Unit IFU Instruction Fetch Unit ID Instruction Decoder BTB Branch Target Buffer MIS Microcode Instruction Sequencer RAT Register Alias Table ROB ReOrder Buffer RRF Retirement Register File RS Reservation Station FEU Floating point Execute Unit IEU Integer Execute Unit AGU Address Generation Unit MIU Memory Interface Unit DCU Data Cache Unit MOB Memory Order Buffer

4 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 0Cicli di clock = 0 123456 789101112 pipeline Pentium Pro

5 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 0Cicli di clock = 0 123456 789101112 pipeline Pentium Pro Il pipeline esegue il prefetch di tutte le istruzioni disponi- bili, e ne determina le di- pendenze. Nell’esempio: prima la #1 e poi la #3 prima la #4 e poi la #5 prima la #32 e poi la #33 prima la #34 e poi la #35 prima la #7 e poi la #8 prima la #9 e poi la #11 : istruzione eseguibile immediatamente : istruzione sospesa in attesa di dati 1 3

6 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 2Cicli di clock = 1 123456 789101112 pipeline Pentium Pro Il Pentium Pro ha un pipeline superscalare a tre livelli con esecuzione out- of-order, preceduto da un modulo di prefetch e seguito da un modulo di writeback per aggiornare lo stato della CPU in-order. Manda quindi in esecuzione le prime tre istruzioni pronte, cioè #1, #2 e #4. La #3 viene accantonata perché non è pronta. Al termine le modifiche apportate dalle istruzioni #1 e #2 vengono registrate nello stato della CPU. 1 2 istruzione da 2 cicli 4 aggiornamento in-order dello stato della CPU

7 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 2Cicli di clock = 2 123456 789101112 pipeline Pentium Pro L’istruzione #4 si conclude, ma le sue modifiche non vengono ancora registrate perché l’istruzione che la precede non è ancora terminata (writeback in- order). L’istruzione #5 non è ancora pronta, quindi il pipeline carica altre tre istruzioni, la #3 (che nel frattempo è diventata pronta), la #6 e la #31. La ricerca delle dipendenze segue anche i salti. La #3 determina un miss in L1, e quindi durerà 4 cicli. Tuttavia il pipeline non si blocca. 1 2 L1 miss 4 3 6 31

8 1 3 2 4 6 5 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 2Cicli di clock = 3 123456 789101112 pipeline Pentium Pro L’istruzione #3 resta sempre in attesa. Il termine interno della #4 permette l’esecuzione della #5. Le altre due nuove istruzioni eseguibili da immettere nel pipeline sono la #32 e la #34, anche se quest’ultima causa un miss su L1 della durata di 4 cicli. La gestione degli accessi esterni (L2) è composto da un altro pipeline a 4 livelli, cioè si possono accodare fino a 4 richieste di dati in parallelo. 1 2 L1 miss 4 3 6 31 5 32 34 L1 miss

9 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 2Cicli di clock = 4 123456 789101112 pipeline Pentium Pro Le istruzioni #3 e #34 restano sempre in attesa. Le modifiche apportate dalle istruzioni #4, #5, #6, #31, #32 non vengono ancora registrate. 1 2 L1 miss 4 3 6 31 5 32 34 L1 miss 33 36 7 istruzione lunga due cicli

10 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 5Cicli di clock = 5 123456 789101112 pipeline Pentium Pro Vengono immesse nel pipeline le istruzioni #9 e #10, e l’ipotetica istruzione #12. L’istruzione #3 finalmente termina e svincola anche le modifiche delle istruzioni #4 e #5 che aggiornano nella giusta sequenza lo stato della CPU. Il modulo di Writeback può aggiornare al massimo tre istruzioni per volta, e quindi le modifiche apportate dalle istruzioni #6, #31, #32, #33, #36, #7 e #10 non vengono ancora registrate. 1 2 L1 miss L2 hit 4 3 6 31 5 32 34 L1 miss 33 36 7 9 10 12 L1 miss

11 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 8Cicli di clock = 6 123456 789101112 pipeline Pentium Pro Vengono immesse nel pipeline l’istruzione #8, finalmente pronta, e le ipotetiche istruzioni #13 e #14. Le istruzioni #34 ed #8 terminano ed escono dal pipeline, la #9 resta sempre in attesa. Le modifiche apportate dalle istruzioni #6, #31 e #32 vengono registrate in-order nel registro di stato della CPU. 1 2 L1 miss L2 hit 4 3 6 31 5 32 34 33 36 7 9 10 12 L1 miss 8 13 14

12 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 11Cicli di clock = 7 123456 789101112 pipeline Pentium Pro Vengono immesse nel pipeline l’istruzione #35, finalmente pronta, e le ipotetiche istruzioni #15 e #16. L’istruzione #9 resta sempre in attesa. Le modifiche apportate dalle istruzioni #36, #7, #8 e #10 non vengono ancora registrate. 1 2 4 3 6 31 5 32 34 33 36 7 9 10 12 L1 miss 8 13 14 35 15 16

13 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 14Cicli di clock = 8 123456 789101112 pipeline Pentium Pro Vengono immesse nel pipeline le ipotetiche istruzioni #17, #18 e #19. L’istruzione #9 termina ma le sue modifiche non vengono registrate. Le modifiche apportate dalle istruzioni #36, #7 e #8 vengono registrate in-order nel registro di stato della CPU. 1 2 4 3 6 31 5 32 34 33 36 7 9 10 12 L1 miss L2 hit 8 13 14 15 19 35 17 1816

14 1 3 2 4 6 5 31 33 32 34 7 9 8 10 11 35 36 Istruzioni completate = 17Cicli di clock = 9 123456 789101112 pipeline Pentium Pro Vengono immesse nel pipeline l’istruzione #11 finalmente pronta, e le ipotetiche istruzioni #20 e #21. Al fine del ciclo le modifiche apportate dalle istruzioni #9, #10 e #11 vengono registrate in-order nel registro di stato della CPU. Globalmente dopo 9 cicli di clock sono state eseguite in ordine 17 istruzioni, e sono state immesse nel pipeline e potenzialmente pronte per essere terminate altre 10 istruzioni. A regime si può arrivare a 3 istruzioni per ciclo. 1 2 4 3 6 31 5 32 34 33 36 7 9 10 12 8 13 14 15 19 35 17 1816 11 20 21

15 pipeline Pentium Pro I principi dell’esecuzione dinamica sono: Multiple branch predition DataFlow analysis Speculative execution Acquisizione delle istruzioni e loro completamento secondo l’ordine voluto dal programmatore. Esecuzioni interna out-of-order, per ottimizzare l’occupazione del pipeline interno, secondo modalità data-flow. Quando si verificano interrupt, predizioni errate di salti, miss anche a livello L2 o eccezioni interne, il pipeline deve essere in grado di annullare il lavoro di esecuzione preventiva svolto in precedenza. Speculative execution (esecuzione preventiva o esecuzione anticipata?)


Scaricare ppt "Bus Interface Unit L1 I-CacheL1 D-Cache Fetch/Decode unit Dispatch/Execute unit Retire unit Instruction Pool System Bus L2 Cache 256 KB integrata 4 cicli."

Presentazioni simili


Annunci Google