Torna indietro   Volovirtuale.com - il Portale dedicato al volo simulato > Angolo della Tecnica > Sezione hardware
Registrazione Donate FAQ Lista utenti Calendario Gallery Segna forums come letti

Notices

Rispondi
 
LinkBack Strumenti discussione
Vecchio 29-11-2007, 20.08.29   #1 (permalink)
VV.com Aficionados
 
L'avatar di MarcoGT
 
Data registrazione: 27-11-2007
Residenza: near COD NDB
Messaggi: 686
MarcoGT is on a distinguished road
Predefinito Guide: Pipeline

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.
MarcoGT non è connesso   Rispondi citando
Rispondi

Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Attivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Attivato

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


Tutti gli orari sono GMT +2. Adesso sono le 07.39.16.


Powered by vBulletin versione 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Traduzione italiana : www.vbulletin.it
Advertisement System V2.6 By   Branden
Copyright ©2005-2008, Volovirtuale.com