Grazie a Ibm la virtualizzazione arriverà  sui Mac?

di |
logomacitynet696wide

La casa produttrice dei G5 annuncia un nuovo processore della famiglia 970, che nel 2005 potrebbe introdurre una parola nuova nel mondo Apple: “virtualizzazione”. Di che cosa si tratta e a che cosa serve? Vediamolo in questo articolo in cui cerchiamo di fare il punto più in generale e spiegare alcune delle tecnologie che stanno creando un ponte tra l’informatica di consumo e quella per le imprese.

La prossima generazione di Cpu per Mac basate su G5 prodotti da Ibm potrebbe avere la tecnologia in grado di far funzionare contemporaneamente più sistemi operativi con lo stesso processore. Macitynet ne ha già  parlato nei giorni scorsi ma vale la pena di approfondire nel dettaglio questa tecnologia, denominata “partizionamento” che dà  luogo alla possibilità  di “virtualizzare” un processore.

Ma di che cosa si tratta in concreto? A che cosa serve questa funzione dell’hardware che IBM utilizza sui Power4 (da cui deriva il PPC 970) e sui Power5 (da cui, si dice) deriverà  uno dei prossimi chip dei computer Apple?

Per spiegarlo facciamo un passo indietro e sottolineiamo prima alcuni aspetti importanti. Il primo è tutto interno alle scelte strategiche di Ibm: il progetto nasce da una peculiarità  di Ibm e del suo recente lavoro di sviluppo dei processori: la casa americana è infatti nella posizione unica di poter costruire partendo da una stessa architettura, Power, processori differenti per clienti e tipologie di apparecchi differenti. Dalle console per videogiochi (le future Playstation3, Nintendo e Xbox2) ai server, passando ovviamente per le architetture che ben conoscono gli utenti Mac. Ma non solo: anche processori embedded (incorporati all’interno di device di vario genere) per tipi di apparecchiature intelligenti, oppure workstations come quella nata dal progetto Cell con Sony per lo sviluppo di giochi per la futura Playstation e via dicendo.

Questa posizione unica si è unita a un’altra mossa inedita nel mercato dei produttori di chip: aver messo praticamente in Open Source – se questo è il termine giusto, dato che ci si riferisce a tecnologie hardware e non software – la tecnologia di questi processori. Permettendo, cioè, ad altre aziende di utilizzare la tecnologia delle Cpu Power rispettandone però i comandamenti di base tra i quali, soprattutto, la compatibilità  del set di istruzioni. L’apertura, analoga se vogliamo a quella che Ibm fa nel settore del middleware per i server, è mirata a creare un ampio ecosistema di “sviluppatori hardware” che utilizzino l’architettura Power adattandola alle loro esigenze e diffondendola come standard di fatto. E’ stata una mossa un po’ sottovalutata dal mercato ma che indubitabilmente sortirà  degli effetti di rilievo nel medio periodo. Anche perché si basa su un differente approccio al processore, visto non più come un “pezzo unico” ma come una microscopica architettura che deve scalare.

Infatti, una delle novità  chiave di Ibm – che è tra l’altro l’azienda i cui processori sono arrivati sino su Marte con la recente missione spaziale della Nasa della quale si può ragionevolmente dire che fosse “Intel-free” – è una strategia che taglia trasversalmente il settore hardware e quello software: si tratta della virtualizzazione, passaggio chiave per avere architetture in grado di abilitare oltre al modello Open Source dell’hardware anche il modello di business nel mondo enterprise dell’on-demand, cioè la fornitura di potenza di calcolo e di archiviazione a richiesta pagando solo per quanto si utilizza. Qui, però, è necessario fare un passo indietro e chiarire prima alcuni passaggi tecnologici.

Le macchine virtuali
Per chi tra i lettori ha avuto modo di usare o comunque ha sentito parlare di VirtualPc, il prodotto di Connectix comprato e distribuito poi da Microsoft che recentemente ne ha aggiornato le funzionalità  alla versione 7.01, il tema di che cosa sia una “macchina virtuale” dovrebbe essere chiaro, all’apparenza. Si tratta di emulazione, cioè di software in grado di far credere al nostro computer di essere in realtà  un altro computer, e quindi far girare i programmi e il sistema operativo studiato per quel computer. Un po’ come accade per gli emulatori delle vecchie console di videogiochi, presenti sia su Mac che su Pc e Linux (e altre piattaforme ancora, tipo PalmOs).

L’emulazione in questione sul Mac avviene pensando a un’altra architettura: cioè VirtualPC si dice che faccia credere al processore del Mac di essere un processore per PC, un Pentium II per la precisione, e permettere di far girare i programmi – Windows o Linux compresi – realizzati per quella piattaforma.

E’ in realtà  una approssimazione che introduce numerosi errori nella concettualizzazione del termine emulazione e non permette di capire bene di cosa si parla quando poi si arriva alla virtualizzazione vera e propria. Vediamo perché, chiarendo i differenti significati di “macchina virtuale”, il soggetto dell’emulazione.

La macchina virtuale per i sistemi operativi
VirtualPc o la sua controparte purtroppo presente solo per Windows e Linux, vale a dire VMware di Emc, sono dei software come gli altri. Il processore e sopra di lui il sistema operativo li considerano delle normalissime applicazioni alle quali assegnare delle risorse in termine di potenza della Cpu, accesso alla memoria, ai bus dati e alle eventuali periferiche presenti e richieste. Il compito di questi programmi è di creare una macchina logica – non fisica – all’interno della quale può venir eseguito del codice programmato per un altro sistema operativo, al limite per un altro processore. Sono cioè macchine virtuali nel senso che il programma VirtualPc ha come scopo quello di creare un ambiente logico dove si possa eseguire altro codice pensato per altre macchine.

La macchina virtuale per le applicazioni
La precedente accezione del termine non è l’unica, dato che di “”macchina virtuale” si può parlare anche per indicare un software come quello della macchina virtuale di Java, per esempio. In questo caso, il programma macchina virtuale JVM (Java Virtual Machine) compila ed esegue al volo il programma Java su qualunque computer e sistema operativo (anche telefonini e palmari, come ben sappiamo) in cui sia presente la suddetta machina virtuale pensata da Sun. Il vantaggio è quello di poter scrivere una volta un’applicazione e averla funzionante su sistemi differenti sia come tipologia o semplicemente come versione.

La macchina virtuale originale
Ma virtual machine ha anche un’altra accezione: è una macchina nativamente multiutente, come Unix ad esempio, perché se utenti diversi accedono in contemporanea alle risorse della macchina (mettiamo collegando più video, tastiere e mouse contemporaneamente) la macchina virtuale gestita dal sistema operativo ricrea per ciascuno di essi un ambiente che appare come esclusivo. Anzi, proprio questo è stato il primo significato di macchina virtuale. Ma questi tre appena visti non sono gli unici.

La macchina virtuale parallela
Gli esempi fatti sino ad ora sono tutti “all’interno” del computer, cioè all’interno della capacità  di calcolo della singola macchina. Però è possibile immaginare di mettere più processori, più dischi, più periferiche insieme – sempre che si abbiano canali di comunicazione tra di loro sufficientemente veloci – e virtualizzare tutto l’insieme facendolo diventare un’unica macchina virtuale, in cui i singoli computer si muovo insieme – parallelamente – come un tutt’uno e questo appare all’utente. Quest’ultimo filone è stato creato a cavallo tra il 1989 e il 90 da tre università  statunitensi ed era pensato soprattutto per rendere un insieme di macchine differenti, anche con sistemi ed architetture diverse, un’unica macchina virtuale.

Grid e supercomputer vettoriali
Si tratta di uno dei passaggi chiave verso il grid computer e il calcolo distribuito, un obiettivo che la stessa Ibm persegue con determinazione per riuscire a rivoluzionare il modo con il quale i server e la rete possono rendere le aziende in grado di sfruttare la potenza del calcolo e le risorse necessarie a sistemi sempre più potenti ed elastici. Se il collegamento è abbastanza veloce e le macchine omogenee, siamo di fronte a un cluster, la tecnica più diffusa per realizzare i moderni supercomputer non vettoriali con capacità  di calcolo a grana non fine. Per calcolo differente, occorre un tipo di architettura più sofisticata, dove comunque un altro tipo di virtualizzazione gioca un ruolo chiave.

Ma siccome i problemi che si affrontano con il computer – server o desktop che sia – non sono tutti problemi estremi, come calcolare complessi modelli di previsione meteorologica, di fisica delle particelle o di scomposizione del genoma umano, servono anche altre forme di virtualizzazione. Soprattutto per “rompere” l’unità  della macchina, magari per fare calcoli più semplici ma di natura molto differenti sempre in ambiente server.

Le architetture multi-core
La rottura avviene con l’architettura “multi-core” (ma in realtà  è più una strategia), in cui cioè i “cuori” o cervelli all’interno del wafer di silicio dov’è contenuto i il processore diventano più di uno. Due nel caso del “dual-core”, ma in prospettiva quattro, otto, sedici, a seconda dell’investimento e delle necessità . L’obiettivo alla fine è non solo di “rompere” l’unità  della Cpu per ottenere banalmente più velocità , ma suddividerla in maniera tale che possa essere configurata (o che si possa configurare) ciascuna parte in maniera autonoma ed estremamente dettagliata. S
ono cose che arriveranno tra qualche anno, non domani, ma non stupitevi quando ne risentirete parlare perché questo è quello che si studia e su cui si lavora adesso. Non si può fare altro, dopotutto, perché la miniaturizzazione per ottenere maggior velocità  della Cpu è giunta praticamente al limite della fisica e quindi sono necessarie altre strategie per riuscire a ottenere più potenza e flessibilità .

Multitasking e calcolo parallelo
Ma la domanda ce la possiamo sempre porre: a cosa potrebbe servire una Cpu che abbia più “cuori” e possa utilizzarli in maniera differente in contemporanea?
L’idea è un po’ singolare, perché le cognizioni di informatica che di solito abbiamo ci fanno pensare che la Cpu sia come un cervello, un singolo cervello per la precisione, e che la capacità  del computer di svolgere più attività  insieme ovvero attività  complesse nello stesso tempo sia dovuta all’enorme velocità  con cui opera e che gli permettono di svolgere milioni di operazioni elementari al secondo. E’ il modo con cui avviene il multitasking nei moderni sistemi operativi, dopotutto, anche in quelli dotati di più di un processore.
Una Cpu con più cervelli fa pensare a uno schizofrenico con personalità  multiple, ma per fortuna questo non è il caso nel mondo dei computer. Piuttosto, apre la possibilità  a una gestione più razionale delle risorse, oppure alla creazione di ambienti più complessi con un forte risparmio tecnologico e un multitasking “reale” e non più frutto del gioco di prestigio della Cpu che dedica frazioni di secondo a ciascuno dei compiti che deve svolgere. Si chiama calcolo parallelo, ed è un obiettivo ancora abbastanza distante, se non altro per l’informatica consumer. Ma ci arriviamo per gradi.

Gestione razionale delle risorse
Pensiamo a un data-center con un certo numero di server, stile Xserve, quindi sottilli e messi in pila in un armadio di alluminio. Tutte quelle macchine servono a scopi differenti, che a un certo punto possono anche mutare in maniera rapida. Serve utilizzare un certo tipo di sistema operativo, serve spostare risorse di calcolo da un tipo di processo a un altro, che funziona con specifiche e caratteristiche differenti. Ecco che avere la possibilità  di indirizzare una Cpu o anche solo parte di una Cpu (uno dei “cuori”) a risolvere quel problema senza dover riconfigurare le macchine, staccandole e riattaccandole in maniera differente diventa un discreto vantaggio.

Ambienti complessi in modo semplice
Ma non è finita qui, Infatti, spesso i sistemi informatici complessi sono composti anche da macchine diverse. In alcuni casi può essere utile, pensiamo ad esempio alle soluzioni di sicurezza informatica basate su sistemi “all inclusive”, cioè “pezzi di hardware” che gestiscono la sicurezza (filtri posta, firewall, intrusion detection e reaction, e via dicendo) in modo facilmente comprensibile dato che stanno su di una macchina separata e visibile all’interno dei data-center. Ma in altri casi, macchine separate e troppo diverse possono diventare diseconomiche.
Pensate a una banca, con una serie di server molto vecchi (i cosiddetti mainframe, che sono considerati “legacy”, retaggio del passato) che gestiscono applicazioni critiche e non più trasportabili su sistemi operativi più moderni. Uno di questi server, gestito da una serie di Cpu anche sparpagliate tra macchine diverse, all’interno di un software che emuli il vecchio ambiente oramai scomparso, permette in un colpo solo di rendere “virtuale” una macchina prima fisica, e gestirla in maniera efficace ed efficiente.

I nuovi Power5 per Mac e non solo
Torniamo a noi, dopo questa lunga carrellata tra macchine virtuali e fisiche, e parliamo di quello che ha fatto Ibm con i suoi Power5. La nuova serie di processori, annunciata quasi un anno fa, seguiva la strategia di una architettura multi-core e della virtualizzazione portata a livello hardware. Cioè, quello che di solito viene fatto da un programma – come VMware o VirtualPC – diventa patrimonio del processore stesso, che ha già  le istruzioni e la tecnologia per “dividersi” in macchine logiche differenti. Questo abilita la possibilità  di lavorare contemporaneamente con più sistemi operativi, ciascuno dei quali fa girare le sue applicazioni e gestisce la sua quota-parte di risorse del sistema. Per fare questo, Ibm ha implementato una console fisica che entra direttamente in contatto con il sistema di “arbitraggio” all’interno del processore multi-core, una specie di mini processore a sua volta, per permettere di gestire e regolare il lavoro delle differenti “identità ” della Cpu, cioè delle Cpu multiple o multi-core.

Questo apre le porte a una grande semplificazione e flessibilità  per la gestione di più macchine virtuali all’interno di un’unica macchina fisica oppure di un’unica macchina virtuale che ne racchiuda più fisicamente diverse. Cosa può voler dire per l’utente di un futuro Mac che implementi questo tipo di tecnologia? Proviamo a fare delle ipotesi che vadano oltre l’ambiente classico, cioè quello server, dove i futuri Xserve potrebbero fare quello che già  fanno i server Ibm (in competizione con quelli di Sun basati su processore UltraSparc e su quelli Hp e Dell basati su Intel oppure su Amd, che peraltro lavora a stretto contatto con Ibm e non è detto che non faccia un giorno un “salto” nel mondo Risc puro), e guardiamo invece ai “normali” Mac del futuro.

Il Mac del futuro
A partire dalla versione 10.4 di MacOsX arriveranno delle novità  significative. Innanzitutto un sistema operativo nativamente 64 bit ma in grado di far girare il codice a 32 bit ed eventuali applicazioni “fat”, mezze 32 e mezze 64 bit (com’era una volta per quelle PowerPC e 68K, oppure oggi per quelle Carbon rispetto a MacOsX e MacOs9), ma non solo. Tiger porta con sé anche il seme per lavorare in modalità  “grid”, cioè utilizzando risorse di calcolo attraverso macchine diverse per eseguire compiti troppo pesanti per un solo computer. Qui la soluzione è software, il passo logico sarebbe farla evolvere anche dal lato hardware e quindi riuscire a modulare più Cpu diverse in modo che agiscano come una sola, per esempio in ambienti dove siano presenti più Mac e si debbano fare lavori complessi ma solo saltuariamente. Oppure all’interno della stessa macchina.

Pensiamo infatti ai portatili, dove oltre alla potenza (che Steve Jobs valuta oggi “sufficiente” con gli attuali G4) è necessario tenere di conto anche del consumo energetico. Processori multicore vuol dire Cpu dove in determinati momenti è possibile “abbattere” risorse spegnendo parti del processore e quindi abbassando il consumo energetico non necessario. Tra le varie modalità  di risparmio energetico, questa è la più razionale, dato che non comporta un abbattimento della potenza di calcolo di per sé, ma semplicemente lo “spegnimento” di alcune delle Cpu virtuali. Apple ha già  una lunga esperienza di calcolo con macchine dotate di due processori fisici, e quelle applicazioni che le possono sfruttare sono anche in grado di sfruttare hardware con un solo processore. Un PowerBook del futuro, forse non troppo diverso da quello sul quale il vostro cronista sta scrivendo in questo momento in un bar di Firenze lavorando con la batteria, sarà  in grado di aumentare la propria autonomia di tre o quattro volte “spegnendo” i cuori non necessari dato che l’attività  di word processing con TextEdit non richiedono la stessa potenza di calcolo di un rendering con FinalCut Express.

Ma non è finita. Perché poter far funzionare differenti sistemi operativi, l’unica cosa che la stampa non specializzata ha intuito sentendo la notizia che Ibm avrebbe portato i processori di classe Power5 verso il mercato di Apple, può portare anche notevoli vantaggi nella possibilità  di eseguire codice differente. Non solo emulando sistemi operativi differenti (sarebbe utile alle volte poter dedicare un mezzo processore a una versione di MacOsX più avanzata e un’altra mettiamo all’emulazione di Classic o magari Linux), ma anche delegando alla singola applicazione il controllo totale su quella parte della macchina. Un FinalCut (o un Quake) che controlla direttamente un processore virtuale senza la negoziazione e i rallentamenti provocati da un sistema operativo possono portare a risultati sorprendenti in termini di velocità  e potenza di calcolo.

Il kernel del futuro
Inoltre, tutto questo potrebbe ribaltare anche l’idea che normalmente abbiamo di come funzioni un sistema operativo. L’architettura a microkernel di Mach, il fondamento su cui poggia FreeBsd (il nocciolo Unix di MacOsX), è strutturalmente pensato per funzionare con moduli indipendenti che negoziano in ogni momento le risorse della macchina. Un kernel di questo tipo che si evolva pensando a un sistema dotato sempre di più processori può aprire prospettive nuove su come disegnarne l’architettura e quella del sistema operativo e della applicazioni sovrastanti. Un esempio? SpotLight, uno dei punti centrali di Tiger e una tecnologia destinata ad evolvere ed accompagnarci per lungo tempo, potrebbe diventare un elemento autonomo che si muove all’interno della macchina sfruttando risorse che prima deve condividere con altre applicazioni e chiamate del sistema operativo. “Appoggiarlo” su un quartino del processore, in maniera autonoma, vuol dire ripensarlo e progettarlo in maniera tale che possa diventare realmente un fulmine di guerra, in grado di sconvolgere il modo in cui organizziamo e cerchiamo i dati sul nostro computer. E soprattutto, economizzando le risorse dato che quando non serve il quartino di processore può lavorare ad altro.

Se accadesse questo, avverrebbe seguendo esattamente la stessa tendenza inaugurata da Quarz, il motore grafico di Mac Os X immediatamente “clonato” da Avalon, l’analoga soluzione pensata da Microsoft per il suo Longhorn, che “sposta” le necessità  di calcolo per la rappresentazione a video dell’interfaccia dalla Cpu alla scheda grafica. Stessa cosa era successa con l’audio, spostato anch’esso e già  da tempo dalla Cpu sulla scheda audio (entrambe le schede sono dotate oltre che di memoria anche di un processore che esegue i calcoli in vece della Cpu) e ci potrebbe far immaginare cosa può voler dire avere un sistema operativo che “si fa in due, in quattro o addirittura in sedici” spostando servizi – come quello della ricerca e indicizzazione dei dati presenti sul disco – su processori virtualmente separati.

Il calcolo parallelo
Ma non è finita, perché la differenza qualitativa tra un processore che si fa in quattro per soddisfare quattro richieste di calcolo diverse e quattro processori che seguono ognuno in maniera indipendente quattro parti del sistema operativo, ha un nome: si chiama “calcolo parallelo”. Calcolo, cioè, dove i risultati di un cuore del processore vengono “passati” in tempo reale a un altro cuore, che sta eseguendo un calcolo differente ma complementare. Il tema è molto complesso, perché di difficile implementazione. Il calcolo parallelo introduce una variabile che gli informatici stanno cercando di dominare, ovvero rompe l’identità  degli stati della macchina, inserendo possibili comportamenti imprevisti dato che i differenti calcoli non avvengono più uno via l’altro ma si susseguono parallelamente e in maniera difficilmente sincronizzabile. Una variabile che venga determinata da due processore contemporaneamente rischia di creare caos più che non vantaggi. Sono problemi aperti, e quello che diciamo qui forse è solo fantascienza. O forse è qualcosa che succederà  in meno di 24 mesi.
Staremo a vedere.