Posts Tagged ‘Computer’

Display olografici: immagini proiettate nell’aria

Sunday, March 4th, 2007

Un primo passo verso le immagini tridimensionali è stato fatto da un’azienda con un proiettore capace di disegnare su un flusso di aria calda.

L’azienda si chiama Io2Technology e il prodotto, arrivato già alla terza generazione, garantisce una risoluzione soddisfacente (1024×768) e una stabilità dell’immagine accettabile. Sebbene il prezzo lo renda inaccessibile (18000$) ci lascia molto soddisfatti vedere che qualcosa si muove in questo campo.

Rinunciare all’esperienza della tridimensionalità è infatti un limite grandissimo impostoci dalla tecnologia attuale, per quanto possa sembrare poco penalizzante spesso è proprio la visione stereoscopica a fare la differenza. Ad esempio nel caso di vestiti a tinta unita o di fili d’erba, la fotografia, anche ad altissima risoluzione non arriva a rendere pienamente l’idea percettiva che si ha con la visione tridimensionale.

Dishi fissi del futuro: SSD ovvero Solid State Disk

Saturday, March 3rd, 2007

I dischi fissi attuali mantengono continuamente in rotazione dei “piatti” magnetici. Tali piatti girano a velocità che vanno dai 4.200 ai 20.000 giri al minuto. Sebbene gli hard disk attuali raggiungano una discreta velocità nel trasferimento di file di grandi dimensioni (da 14 MB/s fino a 80 MB/s e oltre), sono lentissimi nell’accedere a migliaia di file in rapida successione. Se provate ad utilizzare il software della Sisynternals Filemon scoprirete che il semplice avvio di Internet Explorer genera qualche centinaio se non migliaio di accessi all’hard disk. Ogni accesso prevede il posizionamento su un settore specifico che richiede il movimento della testina e la rotazione dei piatti. Insomma una decina di millisecondi circa. Che sebbene possano sembrare un tempo irrisorio sommandosi determinano l’infinita lentezza dei computer moderni. Perchè windows peggiora sempre più man mano che si installano i vari software? Semplice, se un software decide di fare una singola operazione gli accessi al disco sono centinaia… moltiplicate per tutti i software installati e potete avere un idea di cosa succede.

Gli hard disk montati sui portatili sono più lenti: vanno da 4200 a 5400 giri al minuto, mentre quelli montati sui computer fissi (IDE o Parallel ATA) sono da 7200 rpm. Solo una marca produce due modelli che raggiungono i 10.000 giri (Western Digital Raptor) su interfaccia Serial ATA, gli altri sono tutti a 7200 giri. Infine gli SCSI vanno da 10.000 a 15.000 rpm e qualche esemplare arriva persino a 20.000.

Sebbene la differenza tra una velocità di rotazione e l’altra si senta tantissimo, si tratta solo di piccole differenze e l’utilizzo del RAID non serve a nulla (non riduce i tempi di accesso).

Il futuro sono i dischi a stato solido o se preferite solid state disk. Il principale produttore, Samsung, ne ha da poco rilasciato uno da 32 GB. Indubbiamente si tratta di una tecnologia sul nascere, ma presenta alcuni vantaggi realmente tangibili nel consumo ridottissimo di corrente, nella resistenza meccanica e soprattutto nella incredibile velocità di accesso ai dati.

La tecnologia è la stessa delle cosiddette memorie flash presenti nelle schede compact flash e simili e promette realmente di rivoluzionare il settore.

Il prototipo prodotto da Samsung permette una velocità di trasferimento dati di circa 50 MB/s (bassina se paragonata a quella di hard disk di ultima generazione, ma per aumentarla basta unire più hard disk in raid). Il tempo di accesso ai dati è però stabiliante: solo 0,3-0,4 millisecondi contro gli 8 - 10 ms tipici di un hard disk a 7200 giri. Stiamo parlando di qualcosa circa 27 volte più veloce degli hard disk standard con una banda simile.

La mancanza di parti meccaniche in movimento riduce l’usura, la possibilità di rottura e velocizza immensamente l’accesso al disco.

L’unico difetto per adesso è il prezzo davvero altino: 900$ pari a circa 700€. Tantino per un hard disk da 32 GB.

Vantaggi:
Avvio più veloce
Tempo di lettura più veloce
Bassissima latenza (50 o 100 volte più bassa che negli hard disk)
Alta velocità di boot e nell’avvio delle applicazioni
Bassi consumi (non usa parti meccaniche in movimento)
Poca produzione di calore (non usa parti meccaniche in movimento)
Nessun rumore
Maggiore affidabilità meccanica (contro cadute, vibrazioni, ecc)
Sicurezza, cancellabilità dei dati velocissima
Prestazioni non dipendenti dalla frammentazione
Peso minore

Svantaggi:
Prezzo (25$ per GB, contro 0,25$ ovvero 100 volte più costoso)
Lifetime dei dati più bassa, ma in miglioramento
Lentezza nella scrittura (18 MB/s contro 50 MB/s)
Numero di accessi ad una posizione limitato rispetto agli hard disk (centinaia di migliaia di letture o scritture nella stessa zona possono danneggiarla)
Difficoltà di recupero dati
Sensibilità a campi magnetici

Intel: processore con 80 core

Saturday, March 3rd, 2007

Come sapete dopo la corsa ai megahertz si è aperta la corsa al numero di core. Attualmente i principali costruttori di processori (AMD e Intel) sono passati da CPU a nucleo singolo a CPU dual core. E al momento si vedono già in commercio i primi esemplari quad core.

Ebbene su software ottimizzati (e si spera presto anche su videogame) le prestazioni aumentano in maniera nettissima. Non c’è quindi da stupirsi dell’entusiasmo con cui è stata accolta la notizia rilasciata dall’Intel, di aver prodotto un esemplare con ben 80 core, per una potenza complessiva di 1 teraflop. La CPU è basata sull’attuale tecnologia costruttiva a 65 nanometri, ma al momento della produzione in massa (forse nel 2015) è più probabile l’utilizzo di tecnologie costruttive superiori.

In ogni caso, sebbene la Intel faccia notare che si tratta semplicemente di un prototipo, già il fatto di poter produrre qualcosa di simile lascia sperare in una rapida evoluzione dei processori. Peccato che al momento il collo di bottiglia sia rappresentato dagli hard disk.

AMD e ATI presentano il radeon del futuro

Saturday, March 3rd, 2007

Dopo aver acquisito ATI, AMD punta in alto e presenta una scheda video decisamente potente dal nome in codice R600, una GPU di cui ancora non sono noti i dettagli tecnici. Si sa unicamente che è composta da 320 unità per moltiplicazione/somma.

La ATI Radeon R600 utilizzerà una tecnologia chiamata stream processing

Perchè il mio computer è così lento?

Sunday, February 11th, 2007

Processori superscalari che richiedono anni di progettazione da parte di team di centinaia di persone, RAM velocissime appoggiate da cache ancor più veloci, istruzioni a 64 bit, hard disk capaci di trasferire anche 50 MB in un solo secondo e ADSL da 6 Megabit. Ma come possono i computer di oggi andare lenti?

Se pensate che la cosa sia dovuta al carico di lavoro o colli di bottiglia vi sbagliate di grosso: ci sono pochissime applicazioni che richiedono realmente un’elevata potenza di calcolo e sono le seguenti.
- database enormi
- programmi di simulazione scientifica
- software per grafica 3D
- videogame con grafica moooooolto alta

Sapete a cos’è dovuto il rallentamento che percepite? Semplice, alla disottimizzazione più totale a tutti i livelli hardware e soprattutto software interessati dalle applicazioni. Pensate che il software venga “ottimizzato”?
No! L’unica ottimizzazione che il software subisce è quella da parte della CPU che riordina le istruzioni per evitare cicli di stallo, ovvero per non dover aspettare il risultato di un operazione mentre potrebbe eseguirne un’altra invertendo l’ordine nel codice sorgente del programma.

Doom 3 è scritto quasi interamente in DirectX 7.0! Altro che ottimizzazione, qui non abbiamo nemmeno lo sfruttamento delle funzionalità introdotte. Quando mai avete visto programmatori scrivere codice ottimizzato per MMX, SSE ed SSE2? Sono pochissimi le case che scelgono di sacrificare la compatibilità per le prestazioni, ancor meno quelle che scrivono più versioni del programma. Adobe Premiere è uno dei pochissimi software che gira solo su processori con supporto SSE2…

Del resto l’aggiornamento del computer, anche per chi ha le competenze per sostituire i singoli componenti, è tutt’altro che economico. I processori, le schede video, gli hard disk, le ram sono alcuni dei componenti che hanno cambiato connettori negli ultimi 3 anni…
E poi credete che raddoppiare la velocità del processore cambi qualcosa? No, inizierà a fare da collo di bottiglia tutto il resto… e anche cambiando completamente computer otterrete un miglioramento minimo rispetto a quello che ci si potrebbe aspettare.

Perchè? Semplice… Windows non gestisce NULLA in maniera ottimale. Linux è peggio e anche Machintosh si attesta a livelli simili. Facciamo un esempio. Quando un software entra in un ciclo infinito, assorbe il 100% del processore bloccando tutto windows potrebbe comunque terminarlo in un secondo. Perchè l’hardware di sistema gestisce una cosa chiamata interrupt che restituisce il controllo a windows ogni tot millisecondi. Sempre! Non è possibile che windows non rilevi che il software è bloccato e che l’utente vuole chiuderlo.

Stessa cosa per i cluster danneggiati. Anche se il controllo fosse a DMA un dispositivo permette a windows di riprendere il controllo ogni tot secondi e decidere cosa fare. Ovvio che tutte le scelte potrebbero andar bene tranne quella di bloccarsi…

I mille programmini inutili (servizi, dll, ecc) tra cui windows deve continuamente switchare richiedono continui cambi di contesto. Perchè non chiedere all’utente al momento dell’installazione se vuole autorizzarli o meno? E soprattutto perchè dividere in migliaia di processi se non c’è necessità di parallelismo? La verità è che i compilatori e gli strumenti di sviluppo del software fanno schifo. Sono a livello dell’assembler o poco più evoluti. Come gli italiani sono fissati a volere l’auto con le marce gli sviluppatori vogliono vedere il “codice”. Mentre oramai tutto dovrebbe essere fatto tramite un’avanzatissima interfaccia grafica che permetta di inserire vincoli, il riutilizzo del codice, lo sviluppo collaborativo e al contempo ottimizzi realmente il codice (riunendo più dll, riscrivendo procedure, proponendo altre soluzioni più razionali al programmatore).

Gli editor di sviluppo del software sono così primordiali da essere paragonabili ad un notepad evoluto. Cose come il refactoring del codice fanno quasi sorridere se si pensa che ormai le classi dovrebbero essere qualcosa di simile a plugin altamente configurabili, ottenuti unendo l’interfaccia e le funzionalità di diversi plugin e visualizzabili, editabili e migliorabili unicamente attraverso un’interfaccia grafica evolutissima.

Inoltre eliminare la disottimizzazione dal software richiede una revisione noiosisssssima da parte di programmatori veramente esperti e introduce bug che vanno poi eliminati. Sviluppare software secondo tale schema costerebbe 10 volte tanto il costo attuale. Facciamo un esempio. Se un’operazione comporta 1000 accessi all’hard disk leggendo il codice attentamente potrei rendermi conto che basta leggere 1 volta scrivere 999 volte in ram e 1 sull’hard disk. Il compilatore non può accorgersene (perchè è fatto malissimo)…

E se invece usassi i registri interni o ottimizzassi il tutto per non sforare dalla cache o dalla RAM? Ovvero usare l’hard disk rallenta 1000 volte rispetto a usare la ram e idem per la cache. Gli elementi di un software vengono gestiti spesso ad oggetti (che è incredibilmente inefficente) e le procedure magari vengono scritte in DLL esterne separando in programmi concorrenti operazioni che non hanno questa necessità e viceversa rendendo sequenziali operazioni che potrebbero essere concorrenti su processori hyperthreading o multicore.

E cosa dire dell’hardware? Ci vuole tanto a cambiare connettori degli hard disk, pci, processori, ecc realizzando un unico standard di connettore interno ed esterno tipo usb? E windows? A cosa servirebbe l’NCQ se windows non ciclasse continuamente tra mille operazioni di I/O su hard disk? Avete mai provato a effettuare più di un trasferimento alla volta? Windows switcha tra uno e l’altro ogni pochi KB, anche se questo non serve a nulla se non a rallentare di 5-6 volte entrambi i trasferimenti.

Insomma, la situazione è a dir poco penosa. Si potrebbe diventare miliardari solo mettendo in pratica qualcuna di queste idee. Un computer veloce decine di volte più di quelli attuali… che importanza può avere se il processore è solo a 1000 Mhz se poi il sistema operativo non esegue inutili operazioni di I/O per paging e simili?