Amd FX-8120: Otto Core al prezzo di Sei - Presentazione dell Architettura

alt alt

Come potete vedere il die è realizzato in uno schema a quattro “quartieri” ad ognuno di essi è un modulo nel quale sono contenuti due core di classe “ Bulldozer”. Ogni modulo , ospita oltre ai due cores , 2 Megabytes di cache di secondo livello condivisa, un northbridge preposto alla connessione tra tutti gli elementi del chip stesso e una cache condivisa da 2Mb di terzo livello. Per finire troviamo anche un controller di memoria DDR3 dual channel e quattro controller Hypertransport di cui 3 sono disabilitati nelle attuali cpu di fascia desktop , ma che potrebbero essere utilizzati in futuri refresh  dell architettura. Precisiamo , che per la struttura dell architettura, i core non sono disabilitabili singolarmente, ma a coppie, poichè ogni coppia, condivide importanti componenti operative. Infatti , volendo essere precisi, sarebbe piu' opportuno definire quest architettura, non come 8 Core, ma come dotata di quattro cores "doppi".

tech3

Tutte queste soluzioni, insieme ad una complessità di pipeline ben calibrata, concorrono al raggiungimento di uno dei più importanti obbiettivi che Amd si era prefissata: ottenere il miglior rapporto possibile tra prestazioni e consumi.

Per offrirvi maggiore contezza di quali fattori concorrono a questo valore , cercheremo di illustrarvelo in modo semplice: Avere delle pipeline semplici , permette il raggiungimento di frequenze elevate, ma riduce drasticamente il numero di istruzioni per ciclo di clock. Diversamente , l’incremento della complessità delle pipeline incrementa il numero di istruzioni per ciclo ma anche il numero di transistor nel die e  conseguentemente i livelli di dispersione elettrica e la superfice complessiva dello stesso, limitando conseguentemente la frequenza operativa.

Uno degli indicatori Principali di complessità delle pipeline è il FanOut  il cui valore considerato “ottimale” è 17, cioè proprio quello utilizzato in questa CPU in quanto rappresenta il giusto equilibrio tra lunghezza e complessita delle stesse permettendo un buon equilibrio tra frequenze massime raggiungibili e Istruzioni per ciclo.

Altra grande problematica che si pone dinanzi a chi progetta una CPU è quella di ridurre al minimo la dimensione dei transistor. Amd ha intelligentemente optato per una soluzione,  ovvero quella di creare dei moduli da due core , che condividono alcune unità seppure gestendole in maniera indipendente. Nelle immagini sottostanti vedrete un dualcore tradizionale , messo a confronto con un  modulo bulldozer da due Cores. Ovviamente questa soluzione lascia ben distinte le due unità intere, ove viene eseguita la maggior parte (circa l’80%) delle operazioni  eseguite all interno di un core. Questa soluzione è a dire il vero lievemente meno prestazionale di una tradizionale Dual core, di circa il 20% ma offre un ingombro ridotto a circa il 56% rispetto alla soluzione tradizionale, sposando perfettamente le esigenze di AMD , che aveva come principale obbiettivo , la riduzione dell’ ingombro relativo al DIE, compensandolo con un maggior numero di core.

  alt       


Aumentare semplicemente il numero dei core della precedente generazione, avrebbe portato consumi e costi produttivi difficilmente sostenibili, riducendo tra l'altro i margini dell' azienda. Questa riprogettazione integrale, ha cercato di orientarsi verso una riduzione delle ridondanze, cercando comunque di mantenere le medesime performance per core, ottenendo un incremento prestazionale contando su un maggiore numero di core, e maggiori frequenze operative. Ovviamente, le unità che in Phenom erano dedicate per ogni singolo core, come Front-end e Unita di calcolo in virgola mobile, sono state potenziate al fine di evitare pesanti colli di bottiglia. Ad esempio, è stato introdotto il disaccoppiamento tra branch prediction e unità di fetch, evitando di conseguenza che in caso di stallo di una delle due, l'altra si dovesse inevitabilmente fermare, con ovvie ricadute sulle prestazioni. Il decoder adesso riesce a decodificare ben quattro istruzioni per ciclo di clock, rispetto alle tre della precedente generazione. 

Altra importante innovazione, risiede nell' utilizzo del Physical register file, soluzione peraltro gia implementata negli i7 Sandy Bridge di Intel. La presenza di tali registri , permette un incremento prestazionale del cluster di esecuzione out-of-order. Questo cluster in sostanza, esegue l'analisi del codice che dovrà essere eseguita, individuando quelle istruzioni che non sono vincolate da altre istruzioni in parallelo. Questa soluzione, permette un netto incremento prestazionale, poichè permette di riempire quelle unità funzionali del processore, che non vengono saturate nel calcolo parallelo. L'adozione di tale soluzione inoltre, evita che venga mantenuta una copia di ogni operando relativo ad ogni micro-op.

Altre soluzioni di rilievo , consistono nella possibilità di spegnere alimentazione e clock di tutte le unità inutilizzate nel processore, attraverso le funzioni di clock e power  gating.

alt

Ultima ma non per questo meno importante caratteristica è il Turbo Core. Come anticipato qualche rigo addietro  atttraverso  le unità APM, il sistema turbo core, valuta per quanto tempo il processore puo stare in stato di turbo core massimo senza superare la soglia di consumi prestabilita, in effetti, anche quando tutti e gli 8 cores sono al lavoro , troviamo sempre qualche unità non utilizzata nel chip, l’unita APM , si occuperà di valutare quanto Budget in termini di consumi è disponibile per il mantenimento di un TDP minore o uguale al massimo dichiarato. Questa soluzione, permette nelle applicazioni che non godono particolari vantaggi nella presenza di un cosi' elevato numero di core, di massimizzare le prestazioni per core, incrementando la frequenza su tutti, o selettivamente su alcuni di essi.

alt

Come anticipato precedentemente, rispetto alle architetture tradizionali, troviamo che l’unità di fetch è disaccoppiata dall unità di predizione. Questa peculiarità permette di effettuare predizioni dei salti anche indipendentemente dal fetch delle istruzioni.  Il prefetch è guidato dal modulo di predizioni , al fine di ridurre i tempi di ricerca dei dati necessari nel tempo piu’ breve possibile.  La cache di istruzioni è di tipo a due vie da 64Kb il fetch, avviene 32 bit alla volta. I  Translation Lookaside Buffer (TLB)  sono di tipo  a due livelli ,  uno di tipo associativo da 72 elementi e condiviso tra tutte le misure di pagina, mentre in un secondo livello, da 512 elementi a quattro vie le sole pagine da 4kb, che l'MMU (Memory Management Unit) usa per velocizzare la traduzione degli Indirizzi Virtuali. Il TLB possiede un numero fisso di elementi della Page Table, la quale viene usata per mappare gli Indirizzi Virtuali in Indirizzi Fisici. La Memoria virtuale è lo spazio visto da un processo che può essere più grande della memoria fisica (reale). Questo spazio è segmentato in pagine di dimensioni prefissate. Generalmente solo alcune pagine vengono caricate nella memoria fisica in zone dipendenti dalla politica di Page Replacement. La Page Table (generalmente caricata in memoria) tiene traccia di dove le pagine virtuali sono caricate nella memoria fisica. Il TLB è una cache della Page Table, cioè solamente un sottoinsieme del suo contenuto viene memorizzato.

alt

Il predittore di salti è doppio e lavora indipendentemente per i due thread, le richieste di prefetching sono effettuate in parallelo alla Cache L2 e alla Memoria, qualora non fossero gia presenti nella cache L1. Il predittore , oltre ad essere diviso per Thread è anche diviso in due Layers , il primo è di tipo veloce, ma poco preciso che ricerca anche su una cache chiamata Branch Target Buffer che tiene traccia degli indirizzi IP dei salti eseguiti in passato e che il predittore restituisce come predizione. Il secondo Layer, invece è di tipo piu preciso, e si avvale di una cache di dimensioni dieci volte maggiori , che gode di una maggiore precisione di predizione ma che è meno reattiva e veloce della prima. Ad ogni modo, nel momento in cui la predizione di secondo livello dovesse essere pronta prima che il processore abbia gia utilizzato la predizione di primo livello , automaticamente  quest ultima , viene  sovrascritta dalla seconda che è nettamente piu precisa, coniugando sapientemente i vantaggi nell avere nella propria architettura, un predittore veloce e uno preciso.

Unità in Virgola Mobile
Come precedentemente detto alcune unità all interno del modulo Bulldozer sono condivise tra i cores, questo è il caso delle unità in virgola mobile. Collegato ai due cores tramite due bus a 64 Bit,per eseguire le operazioni di conversione tra numeri interi e numeri in virgola mobile. Capace di ricevere attraverso lo scheduler  quattro istruzioni per ciclo di clock a clicli alterni anche miscelando quelle dei due threads . Ovviamente questo significa che rispetto a 8 cores fisici per gli interi , vi saranno solo 4 unità in virgola mobile.

bulldozer-fpu

Relativamente all'unita di calcolo in virgola mobile, questa come anticipato precedentemente, è stata potenziata. A dire il vero, per permettere una condivisione funzionale tra i due core, sarebbe piu' corretto dire, che è stata praticamente riprogettata da zero. Amd, ha implementato due FMAC da 128 Bit, che quando necessario, sono in grado di lavorare in parallelo ed eseguire le istruzioni vettoriali a 256 Bit (AVX). Queste istruzioni , vengono pesantemente sfruttate da quei programmi che si appoggiano largamente sui calcoli in virgola mobile (come tutto quello che riguarda l'encoding video, i calcoli di rendering 3D o il rendering HDR) operando a piena velocità sui flottanti (operazioni in virgola mobile) e si dividono in due istruzioni da 128Bit sugli interi. Ovviamente, sono presenti due unità x87/MMX/SSE, che garantiscono la compatibilità con applicazioni piu' vecchie , non ottimizzate con i piu moderni set di istruzioni. 

Memoria Cache
La cache L2 è pari a 2MB organizzata a 16 vie. La TLB di secondo livello è di 1024 pagine a 8 vie e serve sia le cache dati che quella istruzioni. I prefetcher sono multipli e la L2 può avere fino a 23 transazioni in sospeso verso la memoria.

alt

La cache L3 è da 8MB organizzata in 4 banchi da 2MB ed è condivisa tra i 4 moduli. E’ una victim cache, ossia contiene i dati che devono essere tolti dalle cache L2 dei vari moduli, per fare posto ai nuovi dati. Essa lavora alla stessa frequenza del North Bridge che gestisce anche quattro controller HyperTransport e un controller memoria DDR3 a doppio canale che supporta fino a 4 moduli di memoria e memorie fino a 1866 MHz.

L'architettura Bulldozer supporta pienamente le istruzioni x86, SSE4.1 e 4.2 ,AVX, XOP e FMA4. Quest ultime saranno presenti sulle soluzioni Intel solo nel tardo 2012, con l'arrivo della microarchitettura Haswell. Questa soluzione promette un netto incremento delle prestazioni di transcoding A/V. 

04-fx-8150-fma

 

Pagina 2 di 14

 
Banner

Stats