Perché più transistor = maggiore potenza di elaborazione?


43

Secondo Wikipedia, la potenza di elaborazione è fortemente legata alla legge di Moore:

http://en.wikipedia.org/wiki/Moore's_law

Il numero di transistor che possono essere posizionati in modo economico su un circuito integrato è raddoppiato circa ogni due anni. La tendenza è continuata per oltre mezzo secolo e non dovrebbe fermarsi fino al 2015 o successivamente. Le capacità di molti dispositivi elettronici digitali sono fortemente legate alla legge di Moore: velocità di elaborazione, capacità di memoria, sensori e persino il numero e la dimensione dei pixel nelle fotocamere digitali. Tutti questi stanno migliorando anche a tassi (approssimativamente) esponenziali.

Come qualcuno che ha un po 'di esperienza nell'architettura del computer, non capisco perché inserire più transistor in una CPU ne aumenterebbe la potenza poiché, alla fine, le istruzioni vengono lette / eseguite approssimativamente in sequenza. Qualcuno potrebbe spiegare quale parte mi manca?


10
Più transistor = più parallelismo
Toby Jaffey,

2
È vero indipendentemente da quanti core ha il processore.
Thomas O

1
Sì. Più transistor significa che è possibile inserire più unità di esecuzione parallele. Cache più grande. Condutture più profonde.
Kaz,

1
La cache è quella grande. Penso che la percentuale degli immobili in silicio dedicata alla cache sia in aumento. La maggior parte delle prestazioni dei moderni processori è attribuibile alla memorizzazione nella cache e la memorizzazione nella cache funziona solo in presenza di località, ma maggiore è la cache, più rilassato è il requisito per la località (le applicazioni più grandi con schemi di accesso alla memoria più stravaganti sono ancora velocizzate).
Kaz,

2
Pensa solo a un moltiplicatore. Con un numero sufficiente di transistor, è possibile utilizzare una tabella di ricerca completa ed eseguire l'intera moltiplicazione in un solo passaggio. Con meno transistor, devi fare cose come l'aggiunta ripetuta.
David Schwartz,

Risposte:


29

Molte cose che ti danno più potenza richiedono solo più transistor per costruirle. I bus più ampi scalano il conteggio dei transistor in quasi tutti i componenti del processore. Le cache ad alta velocità aggiungono transistor in base alle dimensioni della cache. Se si allunga una conduttura è necessario aggiungere fasi e unità di controllo più complesse. Se si aggiungono unità di esecuzione per aiutare a mitigare un collo di bottiglia nella pipeline, ognuna di queste richiede più transistor e quindi i controlli per mantenere allocate le unità di esecuzione aggiungono ancora più transistor.

Il fatto è che in un circuito elettronico tutto accade in parallelo. Nel mondo del software, l'impostazione predefinita è che le cose siano sequenziali e i progettisti di software fanno di tutto per integrare il parallelismo nel software in modo che possa trarre vantaggio dalla natura parallela dell'hardware. Parallelismo significa semplicemente più cose accadere contemporaneamente, quindi equivale approssimativamente alla velocità; più cose si possono fare in parallelo, più velocemente si possono fare le cose. L'unico vero parallelismo è quello che ottieni quando hai più transistor sul posto di lavoro.


19

Le prime istruzioni non sono necessariamente "eseguite in sequenza" anche su un ISA non VLIW, l'esecuzione deve solo apparire sequenziale. Un'implementazione superscalare in ordine può eseguire più di un'istruzione in parallelo con un'altra. Per fare ciò in modo efficace, l'hardware per le istruzioni di decodifica deve essere aumentato (ampliato), l'hardware deve essere aggiunto per garantire l'indipendenza dei dati delle istruzioni da eseguire in parallelo, le risorse di esecuzione devono essere aumentate e il numero di porte del file di registro è generalmente aumentato. Tutti questi aggiungono transistor.

Un'implementazione non ordinata, che consente l'esecuzione di istruzioni successive prima di quelle precedenti purché non vi siano dipendenze di dati, utilizza hardware aggiuntivo per gestire la pianificazione delle istruzioni non appena i dati diventano disponibili e aggiunge i registri di rinominazione e l'hardware per la mappatura, allocandoli e liberandoli (più transistor) per evitare rischi di scrittura dopo lettura e scrittura dopo scrittura. L'esecuzione fuori servizio consente al processore di evitare lo stallo.

Il riordino di carichi e archivi in ​​un processore fuori servizio richiede che i depositi precedenti nell'ordine del programma inoltrino i risultati a carichi successivi dello stesso indirizzo. Ciò implica la logica di confronto degli indirizzi, nonché l'archiviazione per gli indirizzi (e le dimensioni) degli archivi (e l'archiviazione per i dati) fino a quando l'archivio non è stato assegnato alla memoria (la cache). (Per un ISA con un modello di consistenza della memoria meno debole, è anche necessario verificare che i carichi siano ordinati correttamente rispetto ai negozi di altri processori: più transistor.)

Il pipelining aggiunge un ulteriore controllo e sovraccarico del buffer e impedisce il riutilizzo della logica per le diverse parti della gestione delle istruzioni, ma consente alle diverse parti della gestione di un'istruzione di sovrapporsi in tempo per diverse istruzioni.

Pipelining ed esecuzione superscalare aumentano l'impatto dei rischi di controllo (es. Rami e salti condizionati). Il pipelining (e anche l'esecuzione fuori servizio) può ritardare la disponibilità del target anche di salti incondizionati, quindi l'aggiunta di hardware per prevedere i target (e la direzione per i rami condizionali) consente di recuperare le istruzioni per continuare senza attendere la parte di esecuzione del responsabile del trattamento per rendere disponibili i dati necessari. Predittori più precisi tendono a richiedere più transistor.

Per un processore fuori servizio, può essere desiderabile consentire l'esecuzione di un carico dalla memoria prima che gli indirizzi di tutti i negozi precedenti siano stati calcolati, quindi è necessario dell'hardware per gestire tale speculazione, incluso potenzialmente un predittore.

Le cache possono ridurre la latenza e aumentare la larghezza di banda degli accessi alla memoria, ma aggiungere transistor per archiviare i dati e archiviare i tag (e confrontare i tag con l'indirizzo richiesto). È inoltre necessario hardware aggiuntivo per implementare la politica di sostituzione. Il prefetching hardware aggiungerà più transistor.

L'implementazione della funzionalità nell'hardware piuttosto che nel software può aumentare le prestazioni (pur richiedendo più transistor). Ad esempio, gestione TLB, operazioni complesse come operazioni di moltiplicazione o in virgola mobile, operazioni specializzate come contare gli zeri iniziali. (L'aggiunta di istruzioni aumenta anche la complessità della decodifica delle istruzioni e in genere anche la complessità dell'esecuzione, ad esempio per controllare quali parti dell'hardware di esecuzione verranno utilizzate.)

Le operazioni SIMD / vettoriali aumentano la quantità di lavoro eseguito per istruzione, ma richiedono una maggiore memorizzazione dei dati (registri più ampi) e in genere utilizzano più risorse di esecuzione.

(Il multithreading speculativo potrebbe anche consentire a più processori di eseguire più rapidamente un singolo programma con thread. Ovviamente l'aggiunta di processori a un chip aumenterà il conteggio dei transistor.)

La disponibilità di più transistor può anche consentire agli architetti informatici di fornire un ISA con più registri visibili al software, riducendo potenzialmente la frequenza degli accessi alla memoria che tendono ad essere più lenti degli accessi ai registri e comportano un certo grado di riferimento indiretto (ad esempio, l'aggiunta di un offset allo stack puntatore) che aumenta la latenza.

L'integrazione - che aumenta il numero di transistor su un chip ma non nel sistema - riduce la latenza di comunicazione e aumenta la larghezza di banda, ovviamente consentendo un aumento delle prestazioni. (C'è anche una riduzione del consumo di energia che può essere tradotto in maggiori prestazioni.)

Anche a livello di esecuzione delle istruzioni, l'aggiunta di transistor può aumentare le prestazioni. Ad esempio, un sommatore di selezione carry aggiunge due bit superiori due volte in parallelo con diverse assunzioni del carry-in dai bit inferiori, selezionando la somma corretta dei bit superiori quando è disponibile la realizzazione dai bit inferiori, richiedendo ovviamente più transistor rispetto a un semplice ripple trasporta sommatore ma riduce il ritardo nella produzione della somma totale. Allo stesso modo un moltiplicatore con una singola riga di additivi carry-save utilizza meno transistor (ma è più lento) di un moltiplicatore di alberi Dadda (o Wallace) e non può essere pipeline (quindi dovrebbe essere replicato per consentire a un altro moltiplicatore di iniziare l'esecuzione mentre un precedente moltiplicare era in corso).

Quanto sopra può essere estenuante ma non esaustivo!


2
Ottima risposta da un nuovo ragazzo!
Connor Wolf,

12

Il numero di transistor non è necessariamente correlato a una maggiore potenza di elaborazione, tuttavia, con più transistor, il processore può eseguire istruzioni sempre più complicate di prima. Ad esempio, un processore con SSE utilizzerà transistor aggiuntivi per implementare queste istruzioni complesse (ad esempio aggiungendo molti numeri in un ciclo).


2
Alan Kay ha calcolato che da quando stava lavorando su Smalltalk in Xerox PARC abbiamo perso 18 anni di raddoppio del transistor a causa di architetture errate e inefficienza del software perché i computer non sono certamente veloci come suggerirebbe il raddoppio del transistor.
jpc

5

Un altro fattore: man mano che stipi più transistor in una determinata area, diventano più piccoli, rendendoli più veloci.


Man mano che i transistor si avvicinano sempre di più, si ottengono altri effetti indesiderati, come una maggiore corrente di dispersione, quindi è un compromesso tra prestazioni e bassa potenza - la maggior parte dei produttori sembra aver optato per le prestazioni.
Thomas O

4

I microprocessori sono progrediti in modo significativo negli ultimi anni, cose come pipeline più lunghe, diramazioni predittive e cache dei chip si sono tutte aggiunte alle complessità associate a un processore.

Sicuramente le basi di elaborazione della CPU, recupero, decodifica, ALU, scrittura sono sempre le stesse, ma per velocizzare le cose, vengono utilizzate pipeline più lunghe. Pipeline più lunghe aumentano le prestazioni per l'esecuzione continua del codice, ma comportano anche tempi di impatto maggiori quando i rami del codice danneggiano le prestazioni. Rimedio, ramificazione predittiva. La diramazione predittiva è un segreto commerciale, che Intel normalmente non rivela il funzionamento completo di, ma semplicemente lo usa per mantenere le prestazioni il più alto possibile sulle loro CPU.

La memoria cache è molto più veloce della RAM, ma cosa passare dalla RAM alla cache e dalla cache alla RAM ??? È di nuovo roba proprietaria, ma ci vogliono ancora dei transistor per implementarla.

Quindi i transistor extra entrano in cose come la pipeline più lunga, algoritmi predittivi di diramazione, memoria cache e algoritmi di memoria.

Questo senza menzionare processori multi core e controller di accesso alla memoria / risorse condivisi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.