Un team di ingegneri del MIT ha sviluppato un'architettura di memoria orientata agli oggetti per gestire i dati in modo più efficiente. In questo articolo esploriamo come è strutturata.
/ / PD
Come è noto, la crescita delle prestazioni degli attuali CPU non è accompagnata da una riduzione corrispondente della latenza nell'accesso alla memoria. La differenza nei cambiamenti delle prestazioni da un anno all'altro può raggiungere fino a 10 volte (). Di conseguenza, si crea un collo di bottiglia che impedisce di sfruttare appieno le risorse disponibili e rallenta l'elaborazione dei dati.
Un danno alle prestazioni è causato da ciò che viene chiamata latenza di decompressione. In alcuni casi, per la preparazione alla decompressione dei dati possono essere necessari fino a 64 cicli di CPU.
A titolo di confronto: l'addizione e la moltiplicazione di numeri in virgola mobile non più di dieci cicli. Il problema è che la memoria funziona con blocchi di dati di dimensioni fisse, mentre le applicazioni operano su oggetti che possono contenere vari tipi di dati e differire tra loro per dimensione. Per risolvere il problema, gli ingegneri del MIT hanno sviluppato una gerarchia di memoria a oggetti che ottimizza l'elaborazione dei dati.
Come funziona la tecnologia
Alla base della soluzione ci sono tre tecnologie: Hotpads, Zippads e l'algoritmo di compressione COCO.
Hotpads è una gerarchia di memoria registri super-veloce gestita tramite software (). Questi registri sono chiamati pads e ce ne sono tre — da L1 a L3. In essi sono memorizzati oggetti di diverse dimensioni, metadati e array di puntatori.
In sostanza, l'architettura rappresenta un sistema di cache, ma progettato per lavorare con oggetti. Il livello del pad in cui si trova un oggetto dipende da quanto spesso viene utilizzato. Se uno dei livelli "si riempie", il sistema avvia un meccanismo simile ai "garbage collector" nei linguaggi Java o Go. Questo analizza quali oggetti vengono utilizzati meno frequentemente e li sposta automaticamente tra i livelli.
Zippads funziona su Hotpads — archivia e dearchivia i dati in entrata o in uscita dai due ultimi livelli gerarchici — il pad L3 e la memoria principale. Nei primi due pad, i dati sono conservati inalterati.

Zippads comprime oggetti di dimensioni inferiori a 128 byte. Gli oggetti più grandi vengono suddivisi in parti, che vengono poi collocate in diverse aree di memoria. Come affermano gli sviluppatori, questo approccio aumenta il coefficiente di utilizzo efficiente della memoria.
Per comprimere gli oggetti viene utilizzato l'algoritmo COCO (Cross-Object COmpression), di cui parleremo in seguito, sebbene il sistema sia capace di lavorare anche con o . L'algoritmo COCO è una forma di compressione differenziale (). Confronta gli oggetti con quelli "di base" e rimuove i bit ripetuti — vedere lo schema qui sotto:

Secondo gli ingegneri del MIT, la loro gerarchia di memoria orientata agli oggetti è più efficiente del 17% rispetto agli approcci classici. È molto più vicina nella sua struttura all'architettura delle moderne applicazioni, quindi il nuovo metodo ha un grande potenziale.
Si prevede che la tecnologia venga adottata principalmente da aziende che operano con grandi quantità di dati e algoritmi di machine learning. Un'altra possibile direzione sono le piattaforme cloud. I fornitori di IaaS potranno lavorare in modo più efficiente con la virtualizzazione, i sistemi di archiviazione dati e le risorse di calcolo.
Le nostre risorse e fonti aggiuntive:
![]()
![]()
![]()
![]()
![]()
![]()
Fonte: habr.com
