FYI.

This story is over 5 years old.

Tecnologia

Tenete d'occhio il microsecondo

I computer sono ottimizzati al nanosecondo e al millisecondo, ma non basta più.

I computer si comportano in modo buffo quando si tratta di tempo. Non amano proprio aspettare.

Supponendo che non ci sia alcuna operazione di input-output coinvolta, un programma può trattare una sequenza di istruzioni discrete come una lama rovente tratta una panetta di burro. Aggiungete una I/O, però, e la faccenda diventa strana. Una I/O in genere richiede tempistiche molto più lente, il che significa che un programmatore deve decidere se il programma resterà ad aspettare che l'operazione di I/O si completi (che potrebbe essere la raccolta di dati da un hard-drive o l'input di una tastiera) o se intanto andrà avanti e gestirà il completamento dell'operazione di I/O ad un certo punto nel flusso di esecuzione del programma. Nel secondo caso, è necessario completare altre istruzioni tra il momento in cui l'operazione di I/O ha inizio e il momento in cui termina. E dal punto di vista del programmatore, è una scelta più delicata. Spesso aspettare prima di lanciare un altro calcolo è preferibile e più sicuro.

Pubblicità

I due approcci sono noti come programmazione sincrona e asincrona, rispettivamente. Ognuno di essi è più o meno adatto a seconda dello scenario in questione, che può presentare tempi di verifica della I/O completamente diversi. Su una scala di nanosecondi, o miliardesimi di secondo, ha più senso essere asincroni. Il computer ha il tempo per fare altro, detta in altre parole.

Gli hardware e le strutture di ultima generazione stanno rendendo il tutto molto più complicato. Ora ci sono anche le scale a microsecondo. Un microsecondo si trova più o meno nel mezzo, il che significa che è molto più difficile decidere tra un approccio sincrono e uno asincrono. Questo problema viene affrontato in un nuovo studio presentato nelle Communications of the ACM, dai ricercatori di Google. "La gestione efficiente degli eventi su scala a microsecondo sta diventando il principio fondamentale per una nuova generazione di dispositivi con I/O a bassa latenza, che spaziano dalle reti di un datacenter ai nuovi supporti di memoria," hanno scritto Luiz Barros e colleghi.

Esiste un rischio concreto in questa situazione. Disponiamo di tecnologie a microsecondi — reti di datacenter veloci, memorie flash, acceleratori di GPU — ma se possiamo solo programmarli come tecnologie a millisecondi, qual è il loro scopo?

Il paper di Google non offre nessuna perla a proposito. Una migliore ottimizzazione hardware aiuterebbe, certo, come farebbero forme di programmazione "leggera" asincrona, in cui l'esecuzione del programma possa passare ad altro, ma solo qualcosa che sia molto molto più piccolo di ciò che è permesso dalle latenze molto maggiori del millisecondo.

Ad ogni modo, il paper conclude con una nota di speranza: "Design come questi ottimizzati secondo una scala a microsecondo, e le relative operazioni I/O più rapide, possono permettere di realizzare un ciclo virtuoso di nuove applicazioni e modelli informatici che facciano leva sulla comunicazione a bassa latenza, aumentando drammaticamente le effettive capacità di calcolo dei computer."