La sfida infinita
AMD K6 contro Intel Pentium MMX
In grado di offrire grande potenza di calcolo a prezzi contenuti, l'AMD K6 ha le carte in
regola per imporsi nel mercato consumer. Ma Intel riduce i prezzi e ...
di Fernando Carello
Premessa
Sembrano proprio rincorrersi, i due principali costruttori di
CPU
per PC.
Sono diversi anni che si affrontano, ed i ruoli sembrano ormai delineati: Intel spinge sul
fronte delle prestazioni assolute, mentre AMD punta sul rapporto prezzo/prestazioni.
Il 1997 non è certo stato un'eccezione: Intel ha presentato il Pentium-II, suo nuovo processore
di punta, mentre AMD ha commercializzato il K6 nato dalla collaborazione con l'acquisita Nexgen
(suo il progetto di base, nato come Nexgen 6x86).
Nonostante il K6 sia secondo il marketing AMD concorrente del PentiumPro (ormai ... zombie,
nonostante sia ancora il preferito dai costruttori di server multiprocessore) e del Pentium-II,
il suo vero avversario è il P55CX - alias Pentium MMX.
Vediamo perché.
Anzitutto, il Pentium MMX ed il K6 sono fisicamente intercambiabili: usano infatti lo stesso
zoccolo, il diffusissimo Socket7 (nato con i Pentium 75 !), ed utilizzano più o meno le stesse tensioni di alimentazione
(ambedue le CPU sono del tipo Dual Plane, usano cioè voltaggi diversi per il "nucleo" e
l'Input/Output); si può quindi ragionevolmente affermare che una MotherBoard progettata per
alloggiare i Pentium MMX può anche ospitare un K6.
Questo non è vero per i PentiumPro (che essendo double-die usano il Socket8
, di forma rettangolare) né tantomeno per i Pentium-II, che vengono montati su apposite
schedine da inserire nel cosiddetto Slot-One.
Dunque, se avete già una MotherBoard recente di classe Pentium, e volete aumentare la potenza di
calcolo, scegliendo un K6 o un Pentium MMX è assai probabile che possiate "salvare l'investimento"
sostituendo la sola CPU (per i dettagli sulle necessità ... alimentari di Pentium e K6 vi
rimando all'apposita nota).
Un altro fattore fondamentale che accomuna Intel Pentium MMX ed AMD K6 è il prezzo: a parità di
frequenza, infatti, queste CPU hanno prezzi al pubblico piuttosto vicini, con un leggero vantaggio per
il K6 (che, al momento in cui scriviamo, costa circa il 10% in meno del concorrente).
In assoluto, i prezzi di questi due "combattenti" sono assai distanti da quelli del PentiumPro e del
Pentium-II, al punto che un sistema MB+CPU Pentium MMX o K6 viene a costare circa 1/3 rispetto
ad un sistema MB+CPU Pentium-II. Stiamo quindi parlando di CPU che puntano tutto sul rapporto
prezzo/prestazioni, che appare davvero imbattibile specie nel caso del K6.
Credo di avervi ormai convinti sulla scelta dell'avversario del K6; andiamo quindi ad analizzare
le peculiarità di entrambe le CPU da un punto di vista tecnico.
Analisi statica
E' davvero il caso di dire che l'abito non fa il monaco: pur con le similitudini
"esteriori" prima elencate, le due CPU sono davvero molto diverse quando si analizzi
l'architettura interna.
Stretto parente dei precedenti processori Pentium P54C, il Pentium P55CX (MMX) ha comunque
beneficiato di alcuni miglioramenti: il più appariscente è senz'altro il supporto del
set di istruzioni multimediali MMX, ma non va dimenticato il
raddoppio di dimensioni della cache di primo livello che passa da 8KB per il istruzioni + 8KB
per i dati a 16KB + 16KB (la cache per i dati adotta la strategia di scrittura write-back).
Proseguendo, è stata migliorata la funzionalità dell'unità di branch prediction, grazie a miglioramenti
al Branch Prediction Buffer e all'introduzione di 4 buffer di prefetch per gli indirizzi,
cosicché è possibile immagazzinare 4 flussi di istruzioni consecutivi; l'unità di esecuzione MMX
è stata integrata con la pipeline esistente in modo simile a quanto avviene con la FPU: è
possibile eseguire contemporaneamente un'istruzione intera ed una MMX, o anche due MMX o due
intere.
Anche il numero di buffer di scrittura è aumentato, passando a 4.
Tutto ciò ha portato il numero di "transistor" a 4.5 milioni.
Non è tuttavia immediato tradurre queste modifiche in variazioni prestazionali; ad ogni modo, Intel
dichiara per il Pentium 200 MMX un indice iCOMP 2.0 pari a
182, contro 142 del Pentium 200 "tradizionale", per un incremento del 28%.
Se il nuovo Pentium è comunque stretto parente del precedente, rimanendo dunque un tradizionale
processore CISC, l'AMD K6 MMX ha un'architettura interna completamente diversa.
In effetti, seguendo la filosofia del K5 (ma anche degli Intel Pentium Pro e Pentium-II), il
nucleo del K6 è di tipo RISC; a convertire le istruzioni x86 in istruzioni RISC provvede
un'apposita logica di decodifica. L'architettura è denominata RISC86.
Ma come si fa a tradurre istruzioni CISC in istruzioni RISC ?
Non è granché facile, specie considerando che le istruzioni CISC x86 possono variare in
lunghezza da 1 a 15 byte !
Per ottenere buone prestazioni, AMD ha adottato una tecnica piuttosto interessante, che divide
la decodifica in due fasi: la prima fase avviene durante il riempimento della cache delle istruzioni,
quando un circuito di predecodifica analizza le istruzioni alla ricerca dei punti di inizio e
fine di ciascuna di esse; queste informazioni (assieme ad altre che omettiamo di analizzare)
vengono memorizzate in opportuni bit di predecodifica posti in un apposito campo della cache
per le istruzioni; verranno utilizzati dallo stadio successivo per individuare con esattezza le
istruzioni x86 da decodificare.
A questo punto di passa alla logica di decodifica vera e propria; essa è composta da 4 diversi
decodificatori hardware, di cui 2 (in parallelo) per le istruzioni x86 semplici (comprese le
MMX, che però hanno a disposizione solo il primo dei due), 1 per le istruzioni di media complessità
e 1 per le istruzioni complesse (quest'ultimo si avvale anche di microcodice ROM).
Ora tutto è pronto per le unità di esecuzione contenute nel nucleo RISC.
La struttura del nucleo è superscalare: ci sono 7 unità esecutive indipendenti, ciascuna con un
compito specifico e quindi responsabile dell'esecuzione di una certa categoria di istruzioni
RISC86. Tra queste unità, una è la FPU ed una è l'unità MMX.
A regolare l'invio delle istruzioni RISC86 alle varie unità esecutive pensa uno
scheduler, in grado di operare in parallelo su più istruzioni secondo logiche che
prevedono out-of-order execution, register renaming, data forwarding e speculative
execution.
Il tutto è assistito da una logica di branch prediction all'altezza della situazione, fornita di
un buffer "storico" di dimensioni adeguate; AMD dichiara un'accuratezza superiore al 95% nelle
previsioni di salto.
Il quadro è completato da una cache integrata di 32KB per le istruzioni più 32KB per i dati.
Non c'è da stupirsi, dunque, per i 9 milioni di "transistor" usati per il K6 ...
La domanda cruciale è: in che misura le prestazioni del K6 danno ragione ad un'architettura così
sofisticata ?
AMD dichiara che le prestazioni del K6 sono assimilabili a quelle di un Pentium Pro di pari
frequenza; a supporto di questa affermazione ci sono gli indici PR2,
ricavati da una fonte indipendente tramite un'opportuna suite di applicazioni per Windows: il K6
ha ottenuto, a parità di clock, gli stessi indici di un Pentium Pro.
Siamo quindi su valori piuttosto distanti da quelli del Pentium MMX; tuttavia gli indici PR2 non
raccontano tutta la storia, visto che le applicazioni usate non rappresentano in modo esaustivo
quelle utilizzate sui PC.
Un esempio ? I giochi poligonali "alla Quake".
In questo campo fatto di operazioni in virgola mobile frammiste a codice multimediale e calcoli su
interi è il Pentium MMX a prevalere per un 30% di larga massima, secondo un copione già visto con il
confronto AMD K5 / Intel Pentium (vedi BETA n.) ma con un vantaggio meno
evidente.
Tuttavia, se il K5 aveva, a pari frequenza, una FPU nettamente inferiore a quella del Pentium e
prestazioni sugli interi leggermente superiori, in questo caso la ragione è meno evidente:
l'unità a virgola mobile del K6 è infatti complessivamente buona, ed i nostri test hanno
misurato uno svantaggio prestazionale medio a pari frequenza inferiore al 20% rispetto al
Pentium MMX; di contro, le prestazioni sugli interi appaiono decisamente superiori per il
K6 (anche il 75% in più).
In effetti, è difficile dare una risposta definitiva alla questione (occorrerebbe il parere
diretto dei progettisti AMD); tuttavia è ipotizzabile attribuire il vantaggio del Pentium alle
migliori capacità di pipelining della propria FPU.
Infatti, quando il codice FPU da eseguire è ben ottimizzato per il pipelining, l'unità a virgola
mobile del Pentium è in grado di eseguire (una volta riempita la pipeline, e relativamente alle
operazioni di base) 1 istruzione per ciclo di clock, mentre il K6 impiega mediamente, per le stesse
istruzioni, 2 cicli di clock.
A compensare questo svantaggio (fino a renderlo inavvertibile in molti casi reali) pensano vari
fattori esterni, quali il fatto che difficilmente il codice FPU esistente risulta completamente
ottimizzato per esecuzioni in pipeline.
Ad ogni modo, AMD sta lavorando su una nuova versione del K6 con notevoli miglioramenti all'unità
FPU, la cui commercializzazione è prevista per la metà del 1998.
Analisi dinamica
Abbiamo testato un Pentium MMX 200 MHz ed un K6 MMX 200 MHz su una Mother Board
dotata di chipset Intel Triton-2 TX, con 512 KB di cache di secondo livello pipelined-burst e DRAM EDO.
Settati opportunamente i jumper accendiamo il PC, ed il POST conferma che tutto è a posto,
riconoscendo correttamente CPU e frequenza; Windows95, WindowsNT e Linux partono senza problemi;
tuttavia, usando il K6 il kernel 2.1.65 di Linux ci avverte che alcuni modelli di K6 stepping B
possono presentare un bug che comporta sporadici problemi sotto Linux; ad un'indagine più accurata
risultano in effetti casi di "segmentation fault" con esemplari "giovani" di stepping B.
Non è il nostro caso: pur avendo uno stepping B non incontriamo alcun tipo di problema sotto
Linux (anzi, fa piacere notare che la compilazione del kernel avviene in meno di 6
minuti !); AMD dichiara comunque che le CPU affette da bug sono in numero molto ridotto.
Passando a valutazioni numeriche, abbiamo usato il nostro benchmark
BETAmark versione 0.9 sotto Windows NT 4.0 (tarato sui
valori CPU=100, RAM=100, FPU=53 riferiti ad un Pentium 100 MHz su Triton-II HX,
cache pipelined burst, EDO DRAM).
Per rendere più interessante il raffronto, abbiamo pensato di affiancare ai due "litiganti" i dati del Pentium 200
"tradizionale" e del Pentium Pro 200.
Analizzando il grafico si notano diverse cose. Anzitutto, il vantaggio prestazionale del Pentium
MMX rispetto al Pentium tradizionale appare molto limitato (va però sottolineato che BETAmark
non fa uso alcuno di istruzioni MMX).
Poi, il K6 svetta su tutti (Pentium Pro compreso !) sui test basati sui calcoli interi (indice CPU),
mentre si mantiene allineato ai Pentium guardando i test basati sulla RAM (dove il Pentium Pro grazie
alla cache integrata di secondo livello da 512KB sincrona con la CPU si prende una sonora rivincita).
Infine, l'indice FPU accomuna un po' tutti i contendenti, con un leggero vantaggio per il
Pentium MMX ed il Pentium Pro inaspettato fanalino di coda.
Questi i risultati in dettaglio:
BETAmark v0.9 per NT |
Processore | Indice CPU | Indice memoria | Indice FPU |
Intel Pentium 200 | 198 | 174 | 105 |
Intel Pentium MMX 200 | 198 | 189 | 109 |
Intel Pentium Pro 200 | 284 | 297 | 84 |
AMD K6 MMX 200 | 346 | 183 | 97 |
La situazione simulata dal BETAmark è quella di codice non ottimizzato, il che spiega la scarsa
differenza tra gli indici FPU di Pentium e K6; ma cosa succede se si utilizza codice altamente
efficiente ?
Abbiamo fatto girare una versione speciale del BETAmark, ed in effetti le cose cambiano: nonostante le ottimizzazioni adottate non siano specificatamente
per unità pipelined, l'indice FPU del Pentium MMX sale del 275%, mentre quello del K6 del
205%:
segno della maggiore efficienza del sottosistema a virgola mobile Intel in presenza di codice
ottimizzato, quale si trova ad esempio nei videogiochi.
Rimane da esaminare l'aspetto del supporto MMX.
Nato sotto lo stemma Intel, il set di istruzioni multimediali MMX è stato adottato anche da AMD
e Cyrix: la promessa, avere una grande capacità di processing anche in settori ostici per
l'architettura PC, quali l'editing grafico ed i giochi.
A dire il vero, sono ancora poche le Case che hanno orientato i loro applicativi verso il supporto MMX
(che è esclusivo: un programma compilato per MMX non gira su hardware non-MMX), e comunque l'adozione
di questo speciale set di istruzioni non è sufficiente a garantire l'accelerazione necessaria in ambienti
critici come i giochi.
Ma andiamo per ordine: la prima applicazione a grande diffusione a sfruttare le capacità
multimediali dei processori MMX è stata Adobe Photoshop, che ha reso disponibile in modo gratuito
un plug-in ottimizzato MMX in grado accelerare alcuni tra i filtri più usati (quali il Gaussian
Blur); con un incremento prestazionale dichiarato compreso tra il 70% e il 500% a seconda della
funzione utilizzata, della CPU e della colour depth, le estensioni MMX di Photoshop hanno
comunque dimostrato di non essere aria fritta.
Nel mondo dei videogiochi, ci sono stati alcuni casi di prodotti in versione MMX; il più famoso è
senz'altro POD della Ubisoft - http://www.ubisoft.com, una gara tra auto
futuribili che fa pieno uso di sofisticate tecniche di rendering 3D.
Distribuito gratuitamente con le prime versioni retail di Pentium MMX, permette
effettivamente ai possessori di queste CPU di godere di una grafica eccellente senza eccessiva
penalizzazione in termini di fluidità (frame al secondo); tuttavia, confrontando la versione MMX
con la versione per schede accelerate 3D ci si rende rapidamente conto che, quando si cerchino
prestazioni 3D di un certo livello non c'è CPU che basti: ci vuole un hardware dedicato.
Recentemente, il consorzio OpenGL (www.opengl.org)
ha reso disponibile una versione delle librerie grafiche omonime ottimizzata per MMX;
gratuitamente scaricabile per Windows95, promette un incremento prestazionale fino al 600%
rispetto alle OpenGL "software" disponibili normalmente sotto Windows (opengl32.dll
).
Nonostante che, testando GLQuake con questa versione speciale di OpenGL, siamo rimasti
delusi (siamo nell'ordine di 1 FPS, contro i 30-40 FPS caratteristici di schede 3D dedicate),
troviamo questa iniziativa degna di plauso: accelerando lo strato software
intermedio (librerie runtime) tra applicativo e sistema si garantisce la massima trasparenza e
compatibilità, permettendo anche ad applicativi non specificamente ricompilati di sfruttare
l'accelerazione MMX; la stessa Microsoft ha seguito questa strada, facendo sì che alcune funzioni
delle proprie routine grafiche Direct3D sfruttino le istruzioni MMX, se presenti.
Per il confronto diretto sulle prestazioni MMX di Pentium e K6 dobbiamo rifarci ai risultati
pubblicati su www.flashelectronique.be, in quanto
non siamo riusciti a reperire un benchmark specifico soddisfacente.
Stando a quei risultati, il Pentium MMX appare migliore del K6: a parità di frequenza (200 MHz)
spunta infatti un indice pari a 246, contro 214 del K6: un 15% in più.
Conclusioni
La guerra dei prezzi sulle CPU è stata indubbiamente benefica per gli utenti: oggi il
prezzo di una CPU di fascia media rappresenta poco più del 10% della spesa complessiva per un
PC. Va poi considerato poi che il collo di bottiglia prestazionale di un sistema non risiede più nel
processore: sia il Pentium che il K6 sono in grado di soddisfare pienamente le esigenze
elaborative degli applicativi in uso, compresi i programmi di grafica ed i lettori multimediali;
sono anche adatti a "motorizzare" server di LAN e server Internet.
La nostra preferenza va al miglior rapporto prezzo/prestazioni dell'AMD K6: il suo tallone
d'Achille sono le performance con i giochi in 3D e gli applicativi di grafica 3D in generale
(dove grosso modo evidenzia un ritardo dell'ordine del 30%, a pari frequenza), aspetto che però
perde importanza in caso di accoppiamento con una scheda acceleratrice 3D, in quanto in quel caso si
assiste ad un livellamento delle prestazioni tra diverse CPU.
CPU e tensioni
Presentiamo di seguito un breve riepilogo delle tensioni di alimentazione necessarie per Intel Pentium MMX
(P55CX) ed AMD K6 MMX:
Tensioni di alimentazione e assorbimento |
Processore | Tensione interna (Vcore) | Tensione esterna |
Dissipazione massima |
Intel Pentium MMX 166 MHz | 2.8 V | 3.3 V |
13.1 W |
Intel Pentium MMX 200 MHz | 2.8 V | 3.3 V |
15.7 W |
Intel Pentium MMX 233 MHz | 2.8 V | 3.3 V |
N/A |
AMD K6 MMX 166 MHz | 2.9 V | 3.3 V |
17.2 W |
AMD K6 MMX 200 MHz | 2.9 V | 3.3 V |
20.0 W |
AMD K6 MMX 233 MHz | 3.2 V | 3.3 V |
28.3 W |
Le istruzioni MMX
Si tratta di un set di 57 istruzioni sviluppate dalla Intel pensando specificamente alle
applicazioni multimediali.
Le funzioni MMX agiscono su dati a 64 bit, che possono comunque essere suddivisi anche in parole
da 8, 16 o 32 bit; l'architettura caratteristica di queste istruzioni è SIMD (Single Instruction, Multiple Data), ovvero le routine sono state
pensate per operare su strutture dati vettoriali, come è tipico di molte applicazioni
multimediali (si pensi alla matrice di rotazione per il 3D, o agli operatori matriciali usati
nella FFT). Utilizzando la parola di 64 bit come contenitore, diciamo, di 8 valori ad 8 bit,
le routine MMX permettono un accesso in parallelo su questi singoli elementi, che possono ad
esempio essere sommati con una sola istruzione.
Una nota architetturale: sui processori Pentium l'esigenza di disporre di registri a 64 bit dedicati alle nuove istruzioni
MMX si scontrava purtroppo sulla cronica scarsità di registri generici tipica dell'architettura
CISC x86; alla Intel hanno perciò mappato i registri MMX sui preesistenti registri Floating
Point, con il risultato che non è possibile utilizzare contemporaneamente la FPU e l'unità MMX.
BIBLIOGRAFIA E RIFERIMENTI
- Intel Pentium MMX Data Sheet (order no. 243185-001)
- AMD K6 MMX Data Sheet
- MMX CPUs
Fernando Carello è raggiungibile via email all'indirizzo techcoord@beta.it.
|