Una nuova tecnica sviluppata dai ricercatori del MIT comprime per la prima volta "oggetti" in memoria, liberare più memoria utilizzata dai computer, consentendo loro di funzionare più velocemente ed eseguire più attività contemporaneamente. Credito:Christine Daniloff, MIT
Una nuova tecnica sviluppata dai ricercatori del MIT ripensa la compressione dei dati hardware per liberare più memoria utilizzata da computer e dispositivi mobili, consentendo loro di funzionare più velocemente ed eseguire più attività contemporaneamente.
La compressione dei dati sfrutta i dati ridondanti per liberare capacità di archiviazione, aumentare la velocità di elaborazione, e fornire altri vantaggi. Negli attuali sistemi informatici, l'accesso alla memoria principale è molto costoso rispetto al calcolo effettivo. A causa di ciò, l'utilizzo della compressione dei dati nella memoria aiuta a migliorare le prestazioni, in quanto riduce la frequenza e la quantità di dati che i programmi devono prelevare dalla memoria principale.
La memoria nei computer moderni gestisce e trasferisce i dati in blocchi di dimensioni fisse, su cui devono operare le tradizionali tecniche di compressione. Software, però, non memorizza naturalmente i suoi dati in blocchi di dimensioni fisse. Anziché, usa "oggetti, " strutture dati che contengono vari tipi di dati e hanno dimensioni variabili. Pertanto, le tradizionali tecniche di compressione hardware gestiscono male gli oggetti.
In un documento presentato questa settimana alla Conferenza internazionale ACM sul supporto architettonico per i linguaggi di programmazione e i sistemi operativi, i ricercatori del MIT descrivono il primo approccio per comprimere gli oggetti attraverso la gerarchia della memoria. Ciò riduce l'utilizzo della memoria migliorando le prestazioni e l'efficienza.
I programmatori potrebbero trarre vantaggio da questa tecnica quando programmano in qualsiasi linguaggio di programmazione moderno, come Java, Pitone, and Go, che archivia e gestisce i dati in oggetti, senza modificare il loro codice. Alla loro fine, i consumatori vedrebbero computer che possono funzionare molto più velocemente o possono eseguire molte più app alla stessa velocità. Poiché ogni applicazione consuma meno memoria, corre più veloce, quindi un dispositivo può supportare più applicazioni all'interno della sua memoria assegnata.
Negli esperimenti che utilizzano una macchina virtuale Java modificata, la tecnica ha compresso il doppio dei dati e ridotto della metà l'utilizzo della memoria rispetto ai metodi tradizionali basati sulla cache.
"La motivazione era cercare di creare una nuova gerarchia di memoria che potesse eseguire la compressione basata su oggetti, invece della compressione della linea di cache, perché è così che i linguaggi di programmazione più moderni gestiscono i dati, " dice il primo autore Po-An Tsai, uno studente laureato nel Laboratorio di Informatica e Intelligenza Artificiale (CSAIL).
"Tutti i sistemi informatici ne trarrebbero beneficio, " aggiunge il co-autore Daniel Sanchez, professore di informatica e ingegneria elettrica, e ricercatore al CSAIL. "I programmi diventano più veloci perché smettono di essere ostacolati dalla larghezza di banda della memoria".
I ricercatori si sono basati sul loro lavoro precedente che ristruttura l'architettura della memoria per manipolare direttamente gli oggetti. Le architetture tradizionali memorizzano i dati in blocchi in una gerarchia di memorie progressivamente più grandi e più lente, chiamate "cache". I blocchi a cui si accede di recente salgono al più piccolo, cache più veloci, mentre i blocchi più vecchi vengono spostati in cache più lente e più grandi, alla fine tornando nella memoria principale. Sebbene questa organizzazione sia flessibile, è costoso:per accedere alla memoria, ogni cache deve cercare l'indirizzo tra i suoi contenuti.
"Poiché l'unità naturale della gestione dei dati nei moderni linguaggi di programmazione sono gli oggetti, perché non creare semplicemente una gerarchia di memoria che si occupi degli oggetti?", dice Sanchez.
In un documento pubblicato lo scorso ottobre, i ricercatori hanno dettagliato un sistema chiamato Hotpads, che immagazzina interi oggetti, strettamente impacchettato in livelli gerarchici, o "tamponi". Questi livelli risiedono interamente su efficienti, su chip, memorie indirizzate direttamente, senza che siano necessarie ricerche sofisticate.
I programmi quindi fanno riferimento direttamente alla posizione di tutti gli oggetti nella gerarchia dei pad. Oggetti recentemente assegnati e referenziati di recente, e gli oggetti a cui puntano, rimanere nel livello più veloce. Quando il livello più veloce si riempie, esegue un processo di "sfratto" che mantiene gli oggetti referenziati di recente ma sposta gli oggetti più vecchi a livelli più lenti e ricicla gli oggetti che non sono più utili, per liberare spazio. I puntatori vengono quindi aggiornati in ciascun oggetto per puntare alle nuove posizioni di tutti gli oggetti spostati. In questo modo, i programmi possono accedere agli oggetti in modo molto più economico rispetto alla ricerca attraverso i livelli di cache.
Per il loro nuovo lavoro, i ricercatori hanno progettato una tecnica, chiamato "Zippad, " che sfrutta l'architettura Hotpads per comprimere gli oggetti. Quando gli oggetti iniziano a un livello più veloce, sono non compressi. Ma quando vengono sfrattati a livelli più lenti, sono tutti compressi. I puntatori in tutti gli oggetti tra i livelli puntano quindi a quegli oggetti compressi, che li rende facili da richiamare ai livelli più veloci e in grado di essere memorizzati in modo più compatto rispetto alle tecniche precedenti.
Un algoritmo di compressione sfrutta quindi la ridondanza tra gli oggetti in modo efficiente. Questa tecnica scopre più opportunità di compressione rispetto alle tecniche precedenti, che si limitavano a trovare ridondanza all'interno di ciascun blocco di dimensione fissa. L'algoritmo prima seleziona alcuni oggetti rappresentativi come oggetti "base". Quindi, in nuovi oggetti, memorizza solo i diversi dati tra quegli oggetti e gli oggetti di base rappresentativi.
Brandon Lucia, un assistente professore di ingegneria elettrica e informatica presso la Carnegie Mellon University, elogia il lavoro per sfruttare le funzionalità dei linguaggi di programmazione orientati agli oggetti per comprimere meglio la memoria. "Astrazioni come la programmazione orientata agli oggetti vengono aggiunte a un sistema per rendere la programmazione più semplice, ma spesso introducono un costo nelle prestazioni o nell'efficienza del sistema, " dice. "La cosa interessante di questo lavoro è che usa l'astrazione dell'oggetto esistente come un modo per rendere più efficace la compressione della memoria, a sua volta rendendo il sistema più veloce ed efficiente con nuove caratteristiche dell'architettura del computer."
Questa storia è stata ripubblicata per gentile concessione di MIT News (web.mit.edu/newsoffice/), un popolare sito che copre notizie sulla ricerca del MIT, innovazione e didattica.