Dopo un’introduzione sull’argomento “Amiga” PowerPC e aver parlato del futuro modello di punta, l’AmigaOne X1000, come avevo anticipato mi occuperò dell’ultimo arrivato della famiglia Sam di ACube, la scheda madre 460ex che si affianca alle precedenti 440ep e 440ep-Flex.
L’idea rimane la stessa, cioè sfruttare ciò che offre il mercato embedded per la realizzazione dei prodotti, con la differenza, rispetto all’X1000, che la vocazione è prettamente industriale, come testimonia la presenza di un FPGA (a cui è collegato un connettore che mette a disposizione diversi pin di I/O) e come recita una frase nel sito (“Available now for the industrial market, and soon for the AmigaOS market“).
In ogni caso parliamo di un SoC che in un solo package racchiude la CPU, il controllore della memoria, e diverse periferiche, in ottica di risparmio sui costi (un chip costa generalmente meno della “somma” dei componenti, comportando anche costi ridotti di progettazione e realizzazione della scheda madre, che risulta più semplice).
Quello adottato da ACube per la 460ex è, senza troppa fantasia, il 460ex di Applied Micro (APM d’ora in poi), già fornitrice del 440ep per le precedenti Sam. Il nome non deve trarre in inganno, perché non si tratta di un derivato del PowerPC 460, ma dello stesso 440 a cui APM ha poi apportato alcune migliorie.
Il PowerPC 440, presentato nel 1999, fa parte della famiglia 400 che IBM ha lanciato 16 anni fa nel mercato delle soluzioni embedded per gli usi più disparati, fra cui ovviamente i SoC di cui fa parte questo processore. A livello architetturale non ci sono PowerPC desktop paragonabili, ma presenta alcune affinità coi PowerPC della serie 600 (in particolare col 603e) e altre coi loro successori (la ben più nota e fortunata famiglia G3, com’è stata poi chiamata la serie 700 da Apple e Motorola/FreeScale), come d’altra parte ci si aspetterebbe trattandosi di un progetto di quel periodo.
Dal diagramma a blocchi è possibile prendere visione della semplicità del progetto e di alcuni limiti che saltano all’occhio dalla sua analisi:
Similmente al 603e, a ogni ciclo di clock il 440 preleva due istruzioni dal flusso di quelle da eseguire (ovviamente a meno di salti eventualmente intercorsi, che richiedono lo svuotamento e il ricaricamento della pipeline), passandole all’instruction unit. Qui vengono pre-decodificate, e fino a un massimo di due inserite in una coda di 4 istruzioni da eseguire. Successivamente fino a due istruzioni vengono passate alle unità di esecuzione a disposizione.
Dallo schema si nota che a ogni ciclo di clock una delle due istruzioni può essere eseguita soltanto dall’unità intera “complessa”, in grado cioè di svolgere tutte le operazioni aritmetiche (quindi incluse moltiplicazioni, divisioni, manipolazione del registro dei flag, ecc.). L’altra istruzione può essere smistata all’unità di load/store, oppure all’unità intera “semplice” che può eseguire soltanto alcune operazioni (le più semplici, appunto: somme, sottrazioni, and, or, ecc.).
Il 603e, invece, non ha questa rigida limitazione, perché può smistare le due istruzioni (al massimo) in una qualunque delle sue cinque unità di esecuzione (intera, che corrisponde grosso modo a quella complessa del 440; “di sistema”, che si occupa dei flag e alcune operazioni semplici sugli interi; load/store; FPU; di salto). Quindi si tratta di un meccanismo più flessibile, che permette di sfruttare al meglio le unità di esecuzione disponibili in un preciso momento.
E’ bene rimarcare che il 440 non è dotato di una FPU, ma può essere aggiunta esternamente al core(come nel caso dei modelli commercializzati da APM) tramite quella che nello schema è definita come APU (Auxiliary Processor Unit), e in questo caso un’istruzione a lei dedicata prende il posto di una delle due istruzioni da eseguire, quella riservata all’unità complessa. Lo stesso avviene per le 24 istruzioni “DSP” che sono state aggiunte a questo microprocessore, che vengono eseguite dalla medesima unità.
Riguardo ai salti, questa CPU è dotata di un’unità di predizione dinamica che agisce allo stesso livello della decodifica delle istruzioni in modo da intercettare il prima possibile alcuni tipi di salti, e in questo differisce dalla linea 600, dove si preferisce che l’istruzione segua il normale processo di decodifica, e una volta inserita nella coda delle istruzioni da eseguire vengono effettuati poi i controlli sul suo tipo e le predizioni. Il questo modo il 440 risparmia un prezioso ciclo di clock. Purtroppo non ho trovato i dati relativi alla dimensione della branch history table per effettuare un confronto con gli altri processori, ma suppongo che debbano esserci non meno di 512 entry (valore comune all’epoca).
Da questo punto di vista risulta simile il G3, che integra l’unità di branch in quella di fetch delle istruzioni, come si può vedere dal diagramma a blocchi:
Le similitudini, però, finiscono qui, perché il G3 segue la linea tracciata dal 603 (il 603e, di cui ho parlato finora, ne rappresenta una “riduzione” e riadattamento per il mercato embedded, con prestazioni inferiori), migliorandone alcuni aspetti (di cui accennerò soltanto ad alcuni).
In particolare e come il 603, il G3 è in grado di prelevare ben 4 istruzioni, da cui estrarne poi al più due da decodificare e spedire alla coda per eseguirle successivamente. Può sembrare un cambiamento di poco conto, perché alla fine le istruzioni inviate alla coda sono, come per il 603e e il 440, al massimo due, ma ciò consente di elevare l’ILP perché nelle altre due istruzioni prese dalla cache ne possono essere presenti alcune eseguibili.
Le unità di esecuzione sono, quindi, diventate ben 6, per riuscire a servire in maniera più efficiente le “variegate” istruzioni che arrivano. Due intere, di cui una più complessa e in grado di eseguire anche moltiplicazioni e divisioni; una di “sistema”; una di load/store; una di salto; e infine una per l’FPU (che tra l’altro è collegata direttamente con l’unità di load/store). Nulla a che vedere col 440, quindi, che può eseguire anch’esso due istruzioni per ciclo di clock, ma coi pesanti vincoli già discussi.
E’ interessante la configurazione delle cache L1, di 32KB per codice e altrettanti per i dati sia nel G3 che nei modelli 440ep/460ex di APM, dove questi ultimi sono avvantaggiati dall’avere un’associatività a 64 vie anziché a 8, che consente di ridurre il rischio di “miss” (per maggiori informazioni sul significato consiglio di leggere l’ottimo articolo di Yossarian).
Per quanto riguarda la cache L2, invece, il 440ep non ne possedeva alcuna, mentre nei primi G3 era disponibile (ma esternamente al core della CPU, limitandone le prestazioni). Il nuovo 460ex, invece, ne aggiunge una da 256KB interna (con banda massima teorica pari a 3,2GB/s, e la possibilità di utilizzarla come SRAM), come i G3 più moderni (ad esempio il 750CXe o il successivo 750GX utilizzati in alcune schede AmigaOne, che introducono altri vantaggi), contribuendo sicuramente a migliorarne le prestazioni rispetto al modello precedente. In ogni caso e all’atto pratico la cache L2 mostra prestazioni inferiori a tutti gli altri PowerPC.
Un’altra innovazione è rappresentata dall’interfaccia con le memorie, che adesso supporta sia le DDR che le DDR2, ma con una frequenza massima di 400Mhz e per un banda teorica di 3,2GB/s. Il precedente 440ep supportava soltanto le DDR (200 e 266), con una frequenza massima di 133Mhz e banda teorica di 1,1GB/s.
Il vantaggio è notevole, ma in particolare se vengono impiegate delle memorie DDR, in quanto offrono una ridotta latenza rispetto alle DDR2, e soprattutto permettono di accedere a singole locazioni di memorie, mentre per queste ultime una volta iniziato il burst per l’accesso alla memoria, lo devono completare, con evidente perdita di efficienza (se servono meno locazioni).
Le DDR2 hanno senso se è possibile sfruttare ciò per cui sono nate: frequenze più elevate, e di conseguenza maggior banda verso la memoria. Un altro vantaggio è costituito dal loro minor consumo, caratteristica che può essere utile e/o desiderabile, ma che non ha nulla a che vedere con le prestazioni.
La Sam 460ex permette di montare soltanto memorie DDR2, fino a 533Mhz di clock, tramite uno slot SO-DIMM. Questo significa che, nonostante la banda teorica possa arrivare fino a 4,2GB/s, se ne potrà sfruttare al massimo 3,2GB/s (per il summenzionato limite interno della 460ex).
Un altro svantaggio è costituito dal fatto che in questa configurazione la frequenza base utilizzata è pari a 133Mhz, per cui il sistema utilizza cicli di clock da 7,5ns per l’accesso alla memoria. Per confronto, rimanendo sempre in piedi il limite dei 3,2GB/s, se se ne fosse utilizzata una da 800Mhz, i cicli di clock sarebbero stati da 5ns, migliorando le prestazioni almeno da questo punto di vista.
Secondo alcuni primi test effettuati con un noto benchmark sintetico, RageMem (la versione usata è la 0.37), la 460ex con clock di 1,166Ghz presenta valori leggermente inferiori in lettura confrontata alla 440ep-flex a 800Mhz (285MB/s contro 299MB/s), ma decisamente superiori in scrittura (462MB/s contro 165MB/s). Quindi supera alcune macchine basate sui G3 (che presentano valori simili alla 440ep-Flex), assestandosi su livelli un po’ superiori alle macchine Pegasos II, ma in ogni caso inferiori a MacMini et similia.
Tirando le somme sulla CPU, è evidente come a livello prestazionale non sarà certo un gioiello, poiché si posiziona grosso modo fra un “G2” (il 603e di cui prima) e un G3, con quest’ultimo che a parità di frequenza risulterà mediamente superiore, ma che potrà tranquillamente dire la sua anche lavorando a frequenze più basse della 460ex.
Un primo esempio è rappresentato da alcuni test basati sul famoso Blender, dove un AmigaOne SE a 733Mhz riesce ad avere tempi (12:56:03) di poco superiori (12:42:57) alla 460ex a 1Ghz, riuscendo persino a superare un AmigaOne dotato di G4+ a 800Mhz (13:19:62).
Questo non deve sorprendere, perché stiamo parlando di architetture diverse, e quindi non deve meravigliare nemmeno il fatto che un G3 con un clock più basso superiori il suo successore che viaggia addirittura a frequenze più elevate. I G3 sono stati degli ottimi processori, e con la loro pipeline costituita da soli 4 stadi possono risultare più efficienti (anche se limitati nello scalare in frequenza), mentre G4+ e 440/460 fanno uso di 7 stadi poiché sono stati progettati per raggiungere frequenze più elevate, e potrebbe benissimo essere questo ad avere influito nei risultati.
In ogni caso c’è da dire che i G4 sono dotati dell’unità SIMD Altivec, per cui, se sfruttata (penso che il test di Blender non ne abbia fatto uso), sono in grado di fornire un notevole boost a cui né i G3 né tanto meno i 440/460 possono ambire. Il problema rimane sempre lo stesso, però: bisogna utilizzarla, e ciò non è sempre vero. Basti pensare anche alle 24 istruzioni DSP di cui parlavo prima e di cui sono dotati i 440.
A mio avviso il più grande valore aggiunto della 440ex rispetto alle precedenti Sam è rappresentato dal supporto all’interfaccia PCI-Express (4x), tramite la quale sarà possibile utilizzare schede video più recenti (prima era possibile impiegarne soltanto di PCI). Questo non tanto per la banda a disposizione (ma col PCI c’è un abisso; in meglio, ovviamente), come vedremo nell’articolo di chiusura del tema Amiga PowerPC, quanto per l’impiego di GPU più moderne.
Da questo punto di vista le Sam sono rimaste il fanalino di coda delle schede o modelli Amiga PowerPC, ma finalmente possono dire la loro, anche se il collo di bottiglia a questo punto si sposta per lo più sulla CPU che, sebbene sia un deciso passo in avanti rispetto al passato, non potrà garantire la potenza di calcolo necessaria per sfruttare gli autentici mostri che ormai da tempo il mercato mette a disposizione.
Questo per chi volesse impiegare la nuova Sam per giocare. Tolto il lato ludico, le prestazioni per l’utilizzo di AmigaOS4 dovrebbero essere di tutto rispetto, grazie anche all’annuncio della disponibilità di appositi driver, anche se limitati ad alcuni modelli di schede Radeon (per cui gli acquisti vanno fatti in maniera mirata, ma questo consiglio vale sempre per qualunque cosa).
In alternativa e per chi non fosse interessato all’acquisto di una scheda video, la scheda madre integra un chip Silicon Motion SM502 che mette a disposizione un sottosistema video 2D che arriva fino a 1280×1024 di risoluzione massima e 24 bit di profondità, dotato di buone caratteristiche di accelerazione hardware e che si occupa anche dell’audio 5.1. Il 3D non è assolutamente supportato, come pure non è presente alcun altro tipo di accelerazione (ad esempio per i video), ma non è questo lo scopo per cui è nato questo dispositivo.
Questo chip è in grado di utilizzare memoria appositamente dedicata, oppure sfruttarne una parte di quella di sistema. Dalla descrizione della Sam 460ex dovrebbe essere quest’ultimo il caso, in quanto si parla di “massimo 64MB di memoria” (altrimenti il valore sarebbe ben specificato). Le prestazioni non saranno quindi elevate, ma per una soluzione molto economica può andare benissimo anche così.
Grave risulta, invece, la presenza di un solo connettore SATA II, che consente di collegare un solo dispositivo (un disco rigido o lettore ottico), il quale rappresenta un passo indietro facendo un paragone con le altre Sam, che ne mettevano a disposizione ben 4. Peggio ancora, sfruttando l’unico slot PCI-Express 1x il SATA non funziona, in quanto l’utilizzo dei due è mutuamente esclusivo.
Poiché non è affatto raro il caso di più dispositivi di archiviazione di massa da collegare, le soluzioni sono soltanto due: acquistare una scheda PCI-Express con più SATA, oppure impiegare le porte USB2 allo scopo. Entrambe presentano problemi,; nel primo caso servirà un apposito driver, mentre nel secondo si attende un nuovo stack per gestire l’USB 2.0, appunto.
L’ultima nota riguarda la memoria. Finalmente con le Sam è possibile arrivare ai famigerati 2GB (con le altre il limite era di 512MB o 1GB) di memoria massima supportata da AmigaOS4, sfruttando il singolo slot SO-DIMM. Purtroppo l’uso di questo tipo di memoria rende decisamente più caro l’acquisto, confrontato con un normale modulo DIMM, sebbene offra vantaggi in termini di consumo e risparmio energetico.
In conclusione, non v’è dubbio che questa nuova scheda madre presenti vantaggi, pure notevoli, rispetto alle schede di vecchia generazione, anche se a fronte di qualche pecca (in particolare con l’impiego delle SO-DIMM l’avrei vista meglio per un portatile, che per una postazione desktop), e l’inutilità di un FPGA di cui un utente comune difficilmente si avvarrà.
Il costo di quasi 900€ è in assoluto molto elevato, se consideriamo che a scheda madre e CPU integrata va aggiunta altra roba per formare un computer completo, ma giustificabile se l’obiettivo è quello di far girare AmigaOS 4 con una scheda video più moderna.
Ricordo che parliamo di un settore di nicchia molto particolare e, soprattutto, hobbistico, dove il piacere di utilizzare qualcosa di diverso rispetto al solito può valere una spesa del genere (ovviamente per chi può permetterselo). D’altra parte se si arriva a spendere anche 700€ soltanto per un telefonino, penso che ci sia ben poco da scandalizzarsi davanti a un prodotto che dovrebbe avere un ciclo di vita decisamente più lungo e un impiego, diciamo, “più nobile”…
UPDATE: preciso che assieme alla Sam 460ex viene fornita una copia di AmigaOS 4.