Sådan fungerer komprimering i objektorienteret hukommelsesarkitektur
Et team af ingeniører ved MIT udviklede et objektorienteret hukommelseshierarki til at arbejde med data mere effektivt. I artiklen forstår vi, hvordan det er arrangeret.
/ Px /PD
Som du ved, er ydelsesvæksten for moderne CPU'er ikke ledsaget af et tilsvarende fald i latenstid, når du får adgang til hukommelse. Forskellen i ændringen i indikatorer fra år til år kan nå op til 10 gange (PDF, side 3). Som følge heraf opstår der en flaskehals, som ikke tillader fuld udnyttelse af tilgængelige ressourcer og sinker databehandlingen.
Ydelsesstraffen er den såkaldte dekompressionsforsinkelse. I nogle tilfælde kan forberedende datadekomprimering tage op til 64 processorcyklusser.
Til sammenligning: addition og multiplikation af flydende kommatal besætte ikke mere end ti cyklusser. Problemet er, at hukommelsen arbejder med datablokke af en fast størrelse, mens applikationer opererer med objekter, der kan indeholde forskellige typer data og afvige fra hinanden i størrelse. For at løse problemet udviklede MIT-ingeniører et objektorienteret hukommelseshierarki, der optimerer databehandling.
Hvordan teknologien fungerer
Løsningen er baseret på tre teknologier: Hotpads, Zippads og COCO-kompressionsalgoritmen.
Hotpads er et softwaredrevet hierarki af scratchpad-registerhukommelse (skrabeplade). Disse registre kaldes pads (pads), og der er tre af dem - fra L1 til L3. De gemmer objekter af forskellig størrelse, metadata og arrays af pointere.
I bund og grund er arkitekturen et cachesystem, men skærpet til at arbejde med objekter. Niveauet af puden, hvor genstanden er placeret, afhænger af, hvor ofte den bruges. Hvis et af niveauerne "flyder over", udløser systemet en mekanisme, der ligner "skraldsamlere" i Java eller Go. Den analyserer, hvilke objekter der bruges sjældnere end andre og flytter dem automatisk mellem niveauerne.
Zippads fungerer på basis af Hotpads - arkiverer og udpakker data, der kommer ind i eller forlader de sidste to niveauer af hierarkiet - L3-pad'en og hovedhukommelsen. I den første og anden pad gemmes dataene uændret.
Zippads komprimerer objekter op til 128 bytes. Større objekter er opdelt i dele, som derefter placeres i forskellige områder af hukommelsen. Som udviklerne skriver, øger denne tilgang koefficienten for effektivt brugt hukommelse.
For at komprimere objekter bruges COCO (Cross-Object Compression) algoritmen, som vi vil diskutere senere, selvom systemet er i stand til at arbejde med Base-Delta-Umiddelbar eller FPC. COCO-algoritmen er en variation af differentiel komprimering (differentiel kompression). Den sammenligner objekter med "base" og fjerner duplikerede bits - se diagrammet nedenfor:
Ifølge MIT-ingeniører er deres objektorienterede hukommelseshierarki 17 % hurtigere end klassiske tilgange. Den er i sin struktur meget tættere på arkitekturen i moderne applikationer, så den nye metode har potentiale.
Det forventes først og fremmest, at virksomheder, der arbejder med big data og maskinlæringsalgoritmer, kan begynde at bruge teknologien. En anden potentiel retning er cloud-platforme. IaaS-udbydere vil være i stand til at arbejde mere effektivt med virtualisering, lagersystemer og computerressourcer.