Kaip glaudinimas veikia objektinės atminties architektūroje
MIT inžinierių komanda sukūrė į objektą orientuotą atminties hierarchiją, kad galėtų efektyviau dirbti su duomenimis. Straipsnyje mes suprasime, kaip tai veikia.
/ akcijų /PD
Kaip žinoma, šiuolaikinių procesorių našumo padidėjimas nėra lydimas atitinkamo delsos sumažėjimo pasiekiant atmintį. Rodiklių pokyčių skirtumas kiekvienais metais gali būti iki 10 kartų (PDF, 3 psl). Dėl to susidaro kliūtis, kuri neleidžia visapusiškai išnaudoti turimų išteklių ir sulėtina duomenų apdorojimą.
Veikimo pažeidimus sukelia vadinamasis dekompresijos delsimas. Kai kuriais atvejais paruošiamasis duomenų išskleidimo procesas gali užtrukti iki 64 procesoriaus ciklų.
Palyginimui: slankaus kablelio skaičių sudėjimas ir daugyba užimti ne daugiau kaip dešimt ciklų. Problema ta, kad atmintis veikia su fiksuoto dydžio duomenų blokais, o programos veikia su objektais, kuriuose gali būti įvairių tipų duomenų ir kurie skiriasi vienas nuo kito dydžiu. Norėdami išspręsti šią problemą, MIT inžinieriai sukūrė į objektą orientuotą atminties hierarchiją, kuri optimizuoja duomenų apdorojimą.
Kaip veikia technologija
Sprendimas pagrįstas trimis technologijomis: Hotpad, Zippad ir COCO glaudinimo algoritmu.
Hotpad yra programine įranga valdoma didelės spartos registruotos atminties hierarchija (įbrėžimas). Šie registrai vadinami padais ir jų yra trys – nuo L1 iki L3. Juose saugomi įvairaus dydžio objektai, metaduomenys ir rodyklių matricos.
Iš esmės architektūra yra talpyklos sistema, tačiau pritaikyta darbui su objektais. Pagalvėlės lygis, ant kurio yra objektas, priklauso nuo to, kaip dažnai jis naudojamas. Jei vienas iš lygių „persipildo“, sistema paleidžia mechanizmą, panašų į „šiukšlių surinkėjus“ Java arba Go kalbomis. Ji analizuoja, kurie objektai naudojami rečiau nei kiti, ir automatiškai perkelia juos iš vieno lygio į kitą.
„Zippads“ veikia „Hotpad“ viršuje – archyvuoja ir išarchyvuoja duomenis, kurie patenka į du paskutinius hierarchijos lygius – į L3 bloką ir pagrindinę atmintį – arba iš jų. Pirmasis ir antrasis blokeliai saugo duomenis nepakeistus.
„Zippads“ suglaudina objektus, kurių dydis neviršija 128 baitų. Didesni objektai suskirstomi į dalis, kurios vėliau dedamos į skirtingas atminties sritis. Kaip rašo kūrėjai, šis metodas padidina efektyviai naudojamos atminties koeficientą.
Objektams suspausti naudojamas COCO (Cross-Object COmpression) algoritmas, kurį aptarsime vėliau, nors sistema gali dirbti ir su Bazė-Delta-Immediate arba FPC. COCO algoritmas yra diferencinio suspaudimo tipas (diferencinis suspaudimas). Jis lygina objektus su „baze“ ir pašalina pasikartojančius bitus – žr. toliau pateiktą diagramą:
Pasak MIT inžinierių, jų į objektą orientuota atminties hierarchija yra 17% produktyvesnė nei klasikiniai metodai. Savo dizainu jis daug artimesnis šiuolaikinių programų architektūrai, todėl naujasis metodas turi potencialo.
Tikimasi, kad įmonės, kurios dirba su dideliais duomenimis ir mašininio mokymosi algoritmais, pirmiausia pradės naudoti technologiją. Kita potenciali kryptis – debesų platformos. IaaS teikėjai galės efektyviau dirbti su virtualizavimu, duomenų saugojimo sistemomis ir skaičiavimo ištekliais.