BETA - rubrica Hardware

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
ProcessoreIndice CPUIndice memoriaIndice 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.


Copertina Sommario Internet ID Informazioni Browser
Copyright © 1994-97 BETA. Tutti i diritti sono riservati. BETA Sul Web: http://www.beta.it.