MITi insenerite meeskond on välja töötanud objekt-orienteeritud mäluhierarhia, et andmeid tõhusamalt töödelda. Artiklis uurime, kuidas see toimib.
/ / PD
Nagu teada, ei kaasne kaasaegsete CPU tootlikkuse kasvuga vastav mälu juurdepääsu latentsuse vähenemine. Muutuste erinevus võib ulatuda kuni 10 korda aastas (). Tulemusena tekib pudelikael, mis ei võimalda täielikult olemasolevaid ressursse ära kasutada ning aeglustab andmete töötlemist.
Toodangut kahjustab nn dekompressioonilaatne viivitus. Mõnedel juhtudel võib andmete ettevalmistamise dekompressioon võtta kuni 64 protsessoritsüklit.
Võrdluseks: ujukoma arvude liitmine ja korrutamine mitte rohkem kui kümme tsüklit. Probleem seisneb selles, et mälu töötab fikseeritud suurusega andmeblokkidega, samas kui rakendused opereerivad objektidega, mis võivad sisaldada erinevaid andmetüüpe ja erineda suuruse poolest. Probleemi lahendamiseks on MITi insenerid välja töötanud objekt-orienteeritud mäluhierarhia, mis optimeerib andmete töötlemist.
Kuidas tehnoloogia töötab
Lahenduse aluseks on kolm tehnoloogiat: Hotpads, Zippads ja COCO kompresseerimisalgoritm.
Hotpads on tarkvaraliselt hallatav ülimemori registrihierarhia (). Need registrid nimetatakse padadeks (pads) ja neid on kolm — L1-st kuni L3-ni. Neis hoitakse eri suurusega objekte, metaandmeid ja viidete massiive.
Sisuliselt on arhitektuur süsteem, mis on optimeeritud objektidega töötamiseks sarnane nagu vahemälu. Peda tase, kus objekt asub, sõltub sellest, kui sageli seda kasutatakse. Kui mõni tase 'üleujub', käivitab süsteem mehhanismi, mis sarnaneb 'prügikoristajatele' programmeerimiskeeltes Java või Go. See analüüsib, milliseid objekte kasutatakse harvemini kui teisi, ja liigub automaatselt nende vahel.
Zippads toimib Hotpads'i alusel — arhiveerib ja de-arhiveerib andmed, mis sisenevad või väljuvad hierarhia kahe viimase taseme — päd L3 ja põhijälu. Esimeses ja teises pädas hoitakse andmeid muutumatul kujul.

Zippads komprimeerib objekte, mille suurus ei ületa 128 baiti. Suuremad objektid jagatakse osadeks, mis needjärel paigutatakse erinevatesse mälu piirkondadesse. Arendajate sõnul tõstab selline lähenemine mälu tõhususe määra.
Objektide kompressimiseks kasutatakse algoritmi COCO (Cross-Object COmpression), millest räägime edaspidi, kuigi süsteem töötab ka või . Algoritm COCO on diferentsiaalsete kompressioonide liik (). See võrdleb objekte "baas"-objektidega ja eemaldab korduvad bitid — vt skeemi allpool:

MIT-i inseneride sõnul on nende objektorienteeritud mälu hierarhia 17% efektiivsem kui klassikalised lähenemisviisid. See on palju lähemal kaasaegsete rakenduste arhitektuurile, seega on uuel meetodil potentsiaali.
Oodatavasti hakkavad tehnoloogiat esmajoones kasutama ettevõtted, mis töötavad suurte andmete ja masinõppe algoritmidega. Veel üks potentsiaalne suund on pilveplatvormid. IaaS-teenuse pakkujad saavad võimekuse paremini hallata virtualiseerimise, andmesalvestussüsteemide ja arvutusressurssidega.
Meie täiendavad ressursid ja allikad:
![]()
![]()
![]()
![]()
![]()
![]()
Allikas: habr.com
