tl; dr
Tubazioni più brevi significano velocità di clock più elevate, ma possono ridurre la produttività. Inoltre, vedi le risposte n. 2 e 3 in fondo (sono brevi, lo prometto).
Versione più lunga:
Ci sono alcune cose da considerare qui:
- Non tutte le istruzioni richiedono lo stesso tempo
- Non tutte le istruzioni dipendono da ciò che è stato fatto immediatamente (o addirittura da dieci o venti) istruzioni
Una pipeline molto semplificata (ciò che accade nei moderni chip Intel è oltre il complesso) ha diverse fasi:
Recupera -> Decodifica -> Accesso memoria -> Esegui -> Scrittura -> Aggiornamento contatore programma
Ad ogni -> è previsto un costo temporale. Inoltre, ad ogni tick (ciclo di clock), tutto si sposta da uno stadio all'altro, quindi il tuo stadio più lento diventa la velocità per TUTTI gli stadi (paga davvero che siano il più simili possibile in lunghezza).
Supponiamo che tu abbia 5 istruzioni e desideri eseguirle (foto tratta da Wikipedia, qui l'aggiornamento del PC non viene eseguito). Sarebbe così:
Anche se ogni istruzione richiede 5 cicli di clock per essere completata, un'istruzione finita esce dalla pipeline ogni ciclo. Se il tempo necessario per ogni stadio è 40 ns e 15 ns per i bit intermedi (usando la mia pipeline a sei stadi sopra), ci vorranno 40 * 6 + 5 * 15 = 315 ns per ottenere la prima istruzione.
Al contrario, se dovessi eliminare completamente la pipeline (ma mantenere tutto il resto uguale), ci vorrebbero solo 240 ns per ottenere la prima istruzione. (Questa differenza di velocità per ottenere la "prima" istruzione è chiamata latenza. In genere è meno importante della velocità effettiva, che è il numero di istruzioni al secondo).
Il vero diverso è che nell'esempio pipeline, ricevo una nuova istruzione (dopo la prima) ogni 60 ns. In quello senza pipeline, ne occorrono 240 ogni volta. Ciò dimostra che le pipeline sono brave a migliorare la produttività.
Facendo un ulteriore passo, sembrerebbe che nella fase di accesso alla memoria avrò bisogno di un'unità aggiuntiva (per fare i calcoli degli indirizzi). Ciò significa che se esiste un'istruzione che non utilizza lo stadio mem in quel ciclo, allora posso fare un'altra aggiunta. Posso quindi eseguire due fasi di esecuzione (con una in fase di accesso alla memoria) su un processore in un singolo tick (la pianificazione è un incubo, ma non andiamo lì. Inoltre, la fase di aggiornamento del PC avrà bisogno anche di un'unità aggiuntiva in il caso di un salto, quindi posso fare tre stati di esecuzione addizione in un segno di spunta). Avendo una pipeline, può essere progettato in modo tale che due (o più) istruzioni possano utilizzare fasi diverse (o fasi di salto di qualità, ecc.), Risparmiando tempo prezioso.
Si noti che per fare questo, i processori fanno molta "magia" ( esecuzione fuori ordine , previsione delle diramazioni e molto altro), ma ciò consente a più istruzioni di uscire più velocemente che senza una pipeline (si noti che anche le pipeline sono troppo a lungo sono molto difficili da gestire e comportano un costo maggiore solo aspettando tra le fasi). Il rovescio della medaglia è che se si allunga la pipeline troppo a lungo, è possibile ottenere una folle velocità di clock, ma perdere gran parte dei vantaggi originali (di avere lo stesso tipo di logica che può esistere in più punti ed essere utilizzato allo stesso tempo ).
Risposta n. 2:
I processori SIMD (single istruzione multiple data) (come la maggior parte delle GPU) svolgono molto lavoro su molte informazioni, ma impiegano più tempo. La lettura di tutti i valori richiede più tempo (significa un clock più lento, sebbene questo offset abbia un bus molto più ampio in una certa misura) ma è possibile eseguire molte più istruzioni alla volta (istruzioni più efficaci per ciclo).
Risposta n. 3:
Perché puoi "ingannare" allungando artificialmente il conteggio dei cicli in modo da poter fare due istruzioni per ogni ciclo (dimezzando la velocità del clock). È anche possibile fare solo qualcosa ogni due tick rispetto a uno (dando una velocità di clock 2x, ma non cambiando le istruzioni al secondo).