Processori & Design
lunedì 16 agosto 2010 - 30 Commenti
Processori superscalari out-of-order: una vista d’insieme

Finalmente, dopo una lunga peregrinazione tra pipeline semplici e diversificate, oggi comincia una nuova serie di articoli che andranno a spolpare un boccone molto più succulento: i processori superscalari out-of-order, ovvero le CPU che hanno spinto la computazione ad alte prestazioni negli ultimi 15 anni.
Nello scorso articolo abbiamo visto come avere pipeline diversificate sia l’idea vincente per ottenere maggiori prestazioni: ogni pipeline può essere ottimizzata per una particolare classe di istruzioni, può avere un numero di stadi diversi, ed è (in teoria) possibile avere molte più istruzioni in-flight (cioè in …

venerdì 2 luglio 2010 - 7 Commenti
Oltre la pipeline semplice: le pipeline diversificate

Nello scorso articolo abbiamo visto come pipeline profonde diventino rapidamente inefficienti a causa dell’aumento del numero di stalli necessari al loro corretto funzionamento, e come pipeline più corte ma più larghe (“superscalari”) possano ottenere prestazioni molto migliori ad un costo più basso.
Abbiamo anche visto come nella maggior parte dei programmi esista abbastanza ILP da alimentare queste ipotetiche “pipeline multiple”. Rimane la domanda: che aspetto hanno queste pipeline? Sono semplicemente tante pipeline semplici incollate l’una di fianco all’altra, identiche tra loro, o è qualcosa di più complicato?
Prendere la stessa pipeline semplice …

venerdì 4 giugno 2010 - 14 Commenti
ILP e pipeline: motivazioni per i processori superscalari

Il pipelining è una tecnica relativamente semplice ed estremamente efficace per aumentare le prestazioni dei processori: qualitativamente, spezzando la logica su più stadi è possibile avere più istruzioni in-flight nello stesso momento, aumentando il throughput. È però possibile analizzare in modo quantitativo questo aumento di performance. Per farlo, si può usare una delle regole base più usate nell’ambito dell’architettura dei calcolatori: la legge di Amdahl.
La legge di Amdahl
Questa “legge” prende il nome da Gene Amdahl, famoso Computer Architect uscito dalle fucine di talenti della IBM degli anni ’50/’60. La legge …

venerdì 14 maggio 2010 - 11 Commenti

Nei precedenti articoli abbiamo visto come utilizzare una pipeline per aumentare l’efficienza di utilizzo dell’hardware e aumentare di conseguenza le prestazioni della macchina. Tuttavia, la semplice pipeline in-order soffre di una serie di limitazioni che non le permettono di sfruttare buona parte dell’Instruction-Level Parallelism (ILP) presente in un programma. Di conseguenza, le sue prestazioni non riescono a salire oltre un livello generalmente modesto, con un IPC (Instructions Per Clock) sempre minore di 1.
Il problema è che il listato assembly è una sovraspecifica del programma: l’ordine delle istruzioni specificato è condizione …

venerdì 30 aprile 2010 - 6 Commenti
Architettura delle CPU: la pipeline rivisitata (seconda parte)

Nel precedente articolo abbiamo visto le basi della tecnica di pipelining. Adesso è ora di fare sul serio, e dare uno sguardo alle tecniche architetturali e circuitali usate per costruire una “vera” pipeline.
Dipendenze, pipeline hazards, interlock e stalli
Nella maggior parte dei casi,  una istruzione “dipende” da una o più istruzioni precedenti, nel senso che queste istruzioni precedenti devono aver completato (cioè eseguito e aggiornato i registri e/o la memoria) prima che la nuova istruzione possa eseguire. Di quali dipendenze bisogna preoccuparsi, allora, quando si costruisce una pipeline? Ce ne sono …

venerdì 23 aprile 2010 - 22 Commenti
Architettura delle CPU: la pipeline rivisitata (prima parte)

Perchè un ennesimo articolo sulle pipeline? In rete si trova già molto materiale, e anche qui su Appunti Digitali Yossarian ha già scritto almeno due articoli al riguardo (qui e qui).
Tuttavia, avendo in programma di scrivere una serie di articoli sull’architettura di processori superscalari out-of-order, è necessario avere ben chiari alcuni concetti sulle pipeline in-order, per capirne funzionamento, prestazioni e limiti, e comprendere quindi cosa ha spinto i computer architect a cimentarsi con qualcosa di così complesso come i processori out-of-order.
In questo articolo  farò un ripasso delle pipeline in-order, partendo …

venerdì 16 aprile 2010 - 15 Commenti
Architettura delle CPU: l’arte del compromesso (seconda parte)

Nel precedente articolo abbiamo visto quali sono i requisiti dei diversi segmenti di mercato di una CPU (mobile, desktop, server), quali devono a tutti i costi essere soddisfatti e su quali si può scendere a compromessi. Inoltre, abbiamo visto come questi si intreccino con le necessità dei chip maker di bilanciare costi, prestazioni e complessità di ingegnerizzazione.
Facendo sempre riferimento allo sviluppo di Nehalem, oggi vedremo come tutti questi fattori hanno influenzato le principali scelte microarchitetturali.
Scelta della pipeline
Una delle prime scelte fu la pipeline da usare. Tre le opzioni disponibili:

la pipeline …

venerdì 9 aprile 2010 - 35 Commenti
Architettura delle CPU: l’arte del compromesso (prima parte)

Osservando la crescita esponenziale delle prestazioni dei nostri computer e i benchmark che anno dopo anno sfondano nuovi traguardi che prima sembravano irraggiungibili, viene naturale pensare che i produttori di CPU e GPU mirino sempre a produrre i chip più veloci che la tecnologia rende possibile. Non è così: come qualsiasi azienda, anche i chip makers hanno innumerevoli compromessi da soddisfare, tra cui prestazioni, consumo energetico, il costo del silicio e dello sviluppo delle tecnologie, lo sforzo ingegneristico richiesto, i limiti di validazione e testing, e altri ancora.
Circa due mesi …