Quando Soft Machines ha tolto i veli alla propria architettura VISC, a molti appassionati e giornalisti è subito tornata in mente Transmeta, azienda ormai scomparsa e che, nonostante il relativamente poco tempo in cui è rimasta attiva nel mercato PC, ha cambiato notevolmente il panorama informatico, soprattutto lato CPU, obbligando Intel a studiare e commercializzare i primi processori di tipo ULV. Ora, però, vogliamo soffermarci su un altro aspetto di Transmeta, e più precisamente quello dell'architettura delle sue CPU. 

Transmeta, con i processori della linea Crusoe, cercò di approcciarsi in maniera differente rispetto ad Intel ed AMD relativamente alla realizzazione di una CPU, cercando di migliorare, per quanto lo permettessero le tecnologie produttive dell'epoca, il rapporto consumi/prestazioni. Allontanandosi da un disegno superscalate Out-of-Order, che ci accompagna ancora oggi, gli ingegneri di Transmeta studiarono un'architettura che tornava ad un disegno In-Order molto particolare.

 

 

Una CPU Transmeta, a prima vista, sembrava molto semplice, in quanto integrava, come gli altri concorrenti coevi, due unità Integer, un'unità Floating-Point, una Cache e una Branch Unit. Le differenze cominciavano a manifestarsi quando si andava ad analizzare più nel dettaglio il tutto.

Le varie unità integrate in Crusoe non potevano elaborare un'istruzione alla volta, anche in ordine sparso, come accadeva per i processori x86 OoO superscalari dell'epoca, ma sfruttavano una particolare unità hardware, chiamata In-Order Retire Unit, per parallelizzare le operazioni in un instruction word più lunga (VLIW - Very Long Instruction Word), in combinazione con un software operante a basso livello, contenuto in una ROM, in pratica una Virtual Machine in real time che scompone e ricompone le istruzioni x86: le istruzioni singole (Atomi) dovevano essere ricomposte in sequenze lunghe 64 o 128 Bit (Molecola) ed eseguite in parallelo dalle quattro unità (2x ALU, 1x FPU, 1x Branch).

 

InfoWorld, Agosto 2004, Pag. 23

 

Se da un lato l'architettura di Transmeta permetteva di evitare l'utilizzo della logica che si occupa di gestire istruzioni x86 particolari (ad esempio, non necessitava di integrare via hardware le SIMD) e di smistare queste istruzioni (Dispatch Unit), così da diminuire la superficie del Die e da semplificarne il disegno, a favore di consumi molto più bassi, dall'altro lato Transmeta venne boicottata, soprattutto lato Server, perché si trattava, alla fine, di un processore in grado di eseguire codice x86/Intel-compatibile su Hardware Transmeta. In ambienti che richiedono la massima affidabilità, unita alle massime prestazioni, non è un buon biglietto da visita.

Con VISC, Soft Machines sembra invece prendere una strada completamente diversa. Se le CPU Transmeta univano le istruzioni semplici in un singolo thread complesso da far elaborare alle unità di esecuzione, VISC vuole suddividere thread complessi in istruzioni semplici, al fine da farli gestire dai Virtual Core, per poi ricomporre il thread una volta elaborate le istruzioni.

Questa idea è venuta a Mahesh Lingareddy e Mohammad Abdalla, cofondatori di Soft Machines, in quanto negli anni le CPU sono diventate sia eccessivamente complesse da gestire lato software sia troppo complesse da designare (tutto questo ha determinato il continuo aumento dei consumi). Sono lontani i tempi in cui le uniche SIMD di largo utilizzo erano le sole MMX, e quindi una una visione “alla Transmeta” era praticabile.

I Virtual Core dell'architettura VISC, quindi, cercano di porre una soluzione a queste problematiche, migliorando la gestione dei singoli core di una CPU, indipendentemente dall'ISA di riferimento: “With this architecture, they are able to essentially abstract whatever ISA is being run and then virtualize it so that they can run it on their virtual cores, which will then decide how many threads are needed and how many virtual cores need to be allocated. So, you can have a dual core or a quad core (physical) processor, but then you may only have one or two virtual cores depending on the workload being put on the processor” (Fonte: BSN). Secondo questo schema, non sarebbe più necessario ottimizzare a mano un codice per processori Multi-Core o Multi-Thread (ad esempio gli Intel con tecnologia Hyper Threading), in quanto a gestire il tutto ci penserebbe il Global Front End di VISC.

 

 

 

Nonostante i risultati dei benchmark mostrati siano davvero ottimi (anche confrontati alle CPU Haswell), e nonostante sia AMD sia Samsung siano tra i finanziatori di Soft Machines, ancora molti dubbi gravitano attorno all'architettura VISC. Troverà spazio in un mercato che vede battagliare per la supremazia in diversi settori x86, ARM e MIPS, oltre a Sparc di Fujitsu, Power di IBM ed ARC? VISC assicura che sarà possibile utilizzare VISC con codice x86 e ARM senza problemi, ma non andrà incontro agli stessi problemi incontrati da Transmeta in ambito Server? Quanto tempo ci vorrà prima di vedere una linea di prodotti VISC commercializzabili? Per tale data gli altri concorrenti non rimarranno certamente ad oziare. Sarà davvero così facile da sfruttare per i programmatori?

In ultimo, il sample mostrato integra la bellezza di 1 miliardo di transistor, e sfrutta appena 2 core fisici (per confronto, una CPU Haswell ad 8 core utilizza 2,2 mld di transistor). È vero che si tratta ancora di un prototipo, e che la stessa Soft Machines ha specificato che solo il 20% di quel miliardo di transistor è dedicato al proprio hardware, ma si tratta comunque di numeri di difficile lettura. Come per le CPU Transmeta, integranti l'In-Order Retire Unit, anche le CPU di Soft Machines dovranno integrare un hardware per disassemblare e riassemblare il codice software, e se i soli due core fisici necessitano di 200 mln di transistor per fare ciò, per gestire una CPU da 4 o più core, quanti ne serviranno? Inoltre, sarà necessario integrare anche un sistema di coerenza dei Core (come accade per la Cache) per evitare che la corruzione dei dati porti a noiosi problemi quando si usano più Core virtualizzati, soprattutto in ambito professionale e server?

Considerato tutto questo, VISC si preannuncia una bella novità, ma prima di considerarla rivoluzionaria, forse è meglio attendere dati più certi.