![]() |
|
|||||||
| Registrazione | Donate | FAQ | Lista utenti | Calendario | Gallery | Segna forums come letti |
| Notices |
![]() |
|
|
LinkBack | Strumenti discussione |
|
|
#1 (permalink) |
|
VV.com Aficionados
Data registrazione: 27-11-2007
Residenza: near COD NDB
Messaggi: 687
![]() |
Ecco qui qualche parola sulle pipeline (recuperato dalla cache di S.Google)
Iniziamo col dire che esistono diversi gruppi di istruzioni (si parla di linguaggio assembly) LOAD/STORE: caricamento/scritta dati dalla/in memoria JUMP: salti INCONDIZIONATI (significa che il salto viene eseguito sempre) BRANCH: salti CONDIZIONATI (il salto viene eseguito SOLO se si verificano particolari condizioni) OPERAZIONI ARITMETICHE/LOGICHE: sono istruzioni che compiono operazioni aritmetiche (ADD, SUB, DIV, MULT e le loro varianti) ed operazioni logiche (OR, AND, SHIFT e le loro varianti). La pipeline dati è una tecnica utilizzata dalle CPU per incrementare la quantità di istruzioni eseguite al secondo (in gergo: throughput). L'esecuzione di un'istruzione da parte della CPU si può dividere sostanzialmente in 5 passi (dipende dal tipo di istruzione e dal tipo di processore, ma in linea generale, diciamo pure 5). 1) IF: Instruction Fetch: l'istruzione viene caricata nella CPU (all'interno della sua memoria) 2) ID: Instruction Decode: l'istruzione viene decodificata (la CPU deve sapere se si tratta di una LOAD piuttosto che di una ADD 3) EX: Execution: esecuzione dell'istruzione 4) MEM: Memory: viene attivata la memoria (non per tutte le istruzioni; è per questo che serve lo stadio di ID) 5) WB: Write Back: scrittua in memoria/registro. Le vecchie e semplici CPU eseguivano un'istruzione alla volta ed l'esecuzione (anzi, il caricamento) di quella successiva non iniziava fino a quando non terminava il ciclo di quella precedente. Una CPU con pipeline è composta da 5 stadi; ogni stadio rappresenta una delle 5 fasi descritte sopra. Ogni stadio ha quindi un compito preciso. Il funzionamento è pressapoco questo: viene caricata un'istruzione e quindi per ora solo lo stadio IF è occupato; quando questa istruzione passa allo stadio successivo (ID), un'altra istruzione verrà caricata e si troverà quindi nello stadio ID; questo significa che quando la prima istruzione caricata si troverà nell'ultimo stadio (WB), tutti gli stadi saranno occupati; una sorta di catena di montaggio. Ciò che si guadagna è la velocità. Vi sono però *parecchi* problemi. Infatti la presenza di pipeline NON sempre migliora in throughput. Qui elencherò solo due problemi (che sono comunque i principali) 1) L'istruzione x+1 potrebbe richiedere un dato calcolato dall'istruzione x (ossia dalla precedente); A=B+C F=A+E La seconda istruzione non può essere eseguita fino a quando la prima non è terminata perchè ha bisogno del dato A. 2) Salti condizionati. Come detto, per salti condizionati si intendono salti che vengono eseguiti sotto il verificarsi di opportune condizioni. Ad esempio, l'istruzione x+1 è un salto, però la condizione di salto si trova nell'istruzione x...la CPU deve attendere prima di eseguire l'istruzione x+1. Nelle odierne CPU c'è però un'unità che si chiama Branch Prediction Unit (unità di predizione dei salti); queste unità fanno delle previsioni sul flusso del programma. |
|
|
|
![]() |
| Strumenti discussione | |
|
|
Discussioni simili
|
||||
| Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
| Guide: Reti di PC | Filippo1974 | Sezione hardware | 3 | 07-12-2007 12.33.58 |
| Guide: Memoria | MarcoGT | Sezione hardware | 7 | 06-12-2007 15.01.31 |
| Guide: Audio nei PC | Filippo1974 | Sezione hardware | 2 | 03-12-2007 11.44.33 |
| Guide: GPU | MarcoGT | Sezione hardware | 1 | 29-11-2007 20.25.45 |
| Guide: Cache | MarcoGT | Sezione hardware | 0 | 29-11-2007 20.13.44 |