Dart sfrutta le istruzioni SIMD della CPU

Di - 22 March 2013 - in
Post image for Dart sfrutta le istruzioni SIMD della CPU

Dart è un nuovo linguaggio di programmazione, sviluppato da Google avendo come target il web moderno e quello del futuro.

Su Engeene abbiamo una rubrica settimanale, a cura di +Claudio D’Angelis, che si occupa di insegnare i fondamenti della programmazione con questo linguaggio. Al momento non ci interessa quindi parlare di programmazione in sé, quanto di introdurre una novità apportata alla Virtual Machine (VM) attraverso cui si eseguono i programmi in Dart.

In particolare è stata introdotta una funzione che permette alla VM di trarre vantaggio del set di istruzioni SIMD incluso in vari processori.

Secondo la Tassonomia di Flynn,  SIMD è l’acronimo di Single Instruction Multiple Data. Scopo dell’architettura SIMD è quello di elaborare dati attraverso unità diverse che operano in parallelo tra loro. Come potete immaginare, i vantaggi sono quelli legati alla velocità di esecuzione soprattutto di quei task che sarebbe svantaggioso eseguire uno alla volta. Questo naturalmente non avviene per tutto il codice scritto, preso genericamente, ma in particolare per quanto riguarda determinati task, come il render di grafica 3D, i calcoli di natura fisica e numerica, ecc.., che si avvantaggiano di un’esecuzione in parallelo da parte del processore.

La natura di SIMD apporta un altro vantaggio all’elaborazione dati: richiedendo di fatto meno istruzioni, essa garantisce un minor consumo di energia, cosa che si tramuta, per le applicazioni mobili o l’utilizzo in mobilità, in un minor consumo di batteria.

A corredo di questa novità ci sono nuovi tipi e nuove operazioni che possono essere combinate tra loro:

Nuovi tipi numerici:
Float32x4
Float32x4List
Uint32x4

Operazioni combinate:
Aritmetiche
Logiche
Comparazioni
Riordini

Facciamo di seguito un esempio molto semplice per mostrare il vantaggio dell’esecuzione multipla per quanto riguarda un’operazione aritmetica.

var a = new Float32x4(1.0, 3.0, 6.0, 8.0);
var b = new Float32x4(2.0, 4.0, 5.0, 7.0);
var c = a + b;

Come possiamo vedere lo sviluppo di Dart, linguaggio che è stato da qualche mese rilasciato in forma stabile, continua a ritmo serrato con l’inclusione anche di tecnologie mirate ad avvantaggiare l’aspetto produttivo di questo linguaggio dalle grandi potenzialità.

Sono disponibili delle slide che spiegano nel dettaglio questa novità introdotta in Dart

Via | Dart News & Updates

Leave a Reply

Gabriele Visconti Articolo scritto da

Editor in Chief per Engeene.
Appassionato di Linux, FOSS, videogame e, da poco, di cucina. Parla quattro lingue ed ama leggere libri in lingua inglese.

Contatta l'autore

Previous post:

Next post: