Kā saspiešana darbojas objektorientētā atmiņas arhitektūrā
MIT inženieru komanda ir izstrādājusi uz objektu orientētu atmiņas hierarhiju, lai efektīvāk strādātu ar datiem. Rakstā mēs sapratīsim, kā tas darbojas.
/ Fona attēls /PD
Kā zināms, moderno CPU veiktspējas pieaugumu nepavada attiecīgs latentuma samazinājums, piekļūstot atmiņai. Rādītāju izmaiņu atšķirība gadu no gada var būt līdz 10 reizēm (PDF, 3. lpp). Rezultātā rodas sastrēgums, kas neļauj pilnībā izmantot pieejamos resursus un palēnina datu apstrādi.
Darbības bojājumus izraisa tā sauktā dekompresijas aizkave. Dažos gadījumos datu sagatavošanas atspiešana var ilgt līdz 64 procesora cikliem.
Salīdzinājumam: peldošā komata skaitļu saskaitīšana un reizināšana ieņemt ne vairāk kā desmit cikli. Problēma ir tā, ka atmiņa darbojas ar fiksēta izmēra datu blokiem, un lietojumprogrammas darbojas ar objektiem, kas var saturēt dažāda veida datus un atšķiras viens no otra pēc izmēra. Lai atrisinātu problēmu, MIT inženieri izstrādāja uz objektu orientētu atmiņas hierarhiju, kas optimizē datu apstrādi.
Kā tehnoloģija darbojas
Risinājuma pamatā ir trīs tehnoloģijas: Hotpads, Zippads un COCO kompresijas algoritms.
Hotpad ir programmatūras kontrolēta ātrdarbīgas reģistrētās atmiņas hierarhija (ieskrāpēt). Šos reģistrus sauc par spilventiņiem, un tie ir trīs - no L1 līdz L3. Tie glabā dažāda izmēra objektus, metadatus un rādītāju masīvus.
Būtībā arhitektūra ir kešatmiņas sistēma, taču tā ir pielāgota darbam ar objektiem. Objekta paliktņa līmenis ir atkarīgs no tā lietošanas biežuma. Ja kāds no līmeņiem “pārplūst”, sistēma iedarbina mehānismu, kas ir līdzīgs “atkritumu savācējiem” Java vai Go valodās. Tā analizē, kuri objekti tiek izmantoti retāk nekā citi, un automātiski pārvieto tos starp līmeņiem.
Zippads darbojas, balstoties uz Hotpad – arhivē un atarhivē datus, kas tiek ievadīti vai iziet no pēdējiem diviem hierarhijas līmeņiem – L3 paliktnī un galvenajā atmiņā. Pirmais un otrais paliktnis saglabā datus nemainītus.
Zippads saspiež objektus, kuru izmērs nepārsniedz 128 baitus. Lielāki objekti tiek sadalīti daļās, kuras pēc tam tiek ievietotas dažādās atmiņas zonās. Kā raksta izstrādātāji, šī pieeja palielina efektīvi izmantotās atmiņas koeficientu.
Objektu saspiešanai tiek izmantots COCO (Cross-Object COmpression) algoritms, par kuru mēs runāsim vēlāk, lai gan sistēma var strādāt arī ar Bāze-Delta-Tūlītēja vai RPK. COCO algoritms ir diferenciālās saspiešanas veids (diferenciālā saspiešana). Tas salīdzina objektus ar "bāzi" un noņem dublētos bitus - skatiet diagrammu zemāk:
Pēc MIT inženieru domām, viņu objektorientētā atmiņas hierarhija ir par 17% produktīvāka nekā klasiskās pieejas. Tā dizainā ir daudz tuvāka mūsdienu lietojumprogrammu arhitektūrai, tāpēc jaunajai metodei ir potenciāls.
Paredzams, ka uzņēmumi, kas strādā ar lielajiem datiem un mašīnmācīšanās algoritmiem, vispirms sāks izmantot tehnoloģiju. Vēl viens potenciāls virziens ir mākoņu platformas. IaaS nodrošinātāji varēs efektīvāk strādāt ar virtualizāciju, datu uzglabāšanas sistēmām un skaitļošanas resursiem.