En ny teknik som utvecklats av MIT -forskare komprimerar "objekt" i minnet för första gången, frigöra mer minne som används av datorer, så att de kan springa snabbare och utföra fler uppgifter samtidigt. Upphovsman:Christine Daniloff, MIT
En ny teknik som utvecklats av MIT -forskare omprövar hårdvarukompression för att frigöra mer minne som används av datorer och mobila enheter, så att de kan springa snabbare och utföra fler uppgifter samtidigt.
Datakomprimering utnyttjar redundanta data för att frigöra lagringskapacitet, öka datorhastigheten, och ge andra förmåner. I nuvarande datasystem, åtkomst till huvudminnet är mycket dyrt jämfört med verklig beräkning. På grund av detta, att använda datakomprimering i minnet hjälper till att förbättra prestanda, eftersom det minskar frekvensen och mängden dataprogram som måste hämtas från huvudminnet.
Minne i moderna datorer hanterar och överför data i bitar med fast storlek, på vilka traditionella kompressionstekniker måste fungera. Programvara, dock, lagrar naturligtvis inte sin data i bitar med fast storlek. Istället, den använder "objekt, "datastrukturer som innehåller olika typer av data och har varierande storlekar. Därför, traditionell hårdvarukomprimeringsteknik hanterar objekt dåligt.
I ett dokument som presenterades vid ACM International Conference on Architectural Support for Programming Language and Operating Systems den här veckan, MIT -forskarna beskriver det första tillvägagångssättet för att komprimera objekt över minneshierarkin. Detta minskar minnesanvändningen samtidigt som prestandan och effektiviteten förbättras.
Programmerare kan dra nytta av denna teknik när de programmerar i alla moderna programmeringsspråk - som Java, Pytonorm, och Go - som lagrar och hanterar data i objekt, utan att ändra deras kod. Vid deras slut, konsumenter skulle se datorer som kan köras mycket snabbare eller kan köra många fler appar med samma hastigheter. Eftersom varje applikation förbrukar mindre minne, det går snabbare, så en enhet kan stödja fler applikationer inom sitt tilldelade minne.
I experiment med en modifierad virtuell Java -maskin, tekniken komprimerade dubbelt så mycket data och minskade minnesanvändningen med hälften jämfört med traditionella cachebaserade metoder.
"Motiveringen var att försöka hitta en ny minneshierarki som kunde göra objektbaserad komprimering, istället för cache-line-komprimering, för det är så de flesta moderna programmeringsspråk hanterar data, "säger författaren Po-An Tsai, en doktorand i datavetenskap och artificiell intelligenslaboratorium (CSAIL).
"Alla datorsystem skulle ha nytta av detta, "tillägger medförfattaren Daniel Sanchez, professor i datavetenskap och elektroteknik, och en forskare vid CSAIL. "Program blir snabbare eftersom de slutar flaskhalsas av minnesbandbredd."
Forskarna byggde vidare på sitt tidigare arbete som omstrukturerar minnesarkitekturen för att direkt manipulera objekt. Traditionella arkitekturer lagrar data i block i en hierarki av progressivt större och långsammare minnen, kallas "cacher". Nyligen åtkomliga block stiger till de mindre, snabbare cacher, medan äldre block flyttas till långsammare och större cacheminne, slutar slutligen tillbaka i huvudminnet. Även om denna organisation är flexibel, det är dyrt:För att komma åt minnet, varje cache måste söka efter adressen bland dess innehåll.
"Eftersom den naturliga enheten för datahantering i moderna programmeringsspråk är objekt, varför inte bara skapa en minneshierarki som handlar om objekt? "säger Sanchez.
I en tidning som publicerades i oktober förra året, forskarna detaljerade ett system som heter Hotpads, som lagrar hela objekt, tätt packad i hierarkiska nivåer, eller "kuddar". Dessa nivåer ligger helt på effektiva, on-chip, direkt adresserade minnen - utan sofistikerade sökningar.
Program hänvisar sedan direkt till platsen för alla objekt över hierarkin av kuddar. Nytt tilldelade och nyligen refererade objekt, och föremålen de pekar på, stanna i den snabbare nivån. När den snabbare nivån fylls, det kör en "vräkning" -process som behåller nyligen hänvisade objekt men sparkar ner äldre objekt till långsammare nivåer och återvinner objekt som inte längre är användbara, för att frigöra utrymme. Pekare uppdateras sedan i varje objekt för att peka på de nya platserna för alla flyttade objekt. På det här sättet, program kan komma åt objekt mycket billigare än att söka igenom cachenivåer.
För deras nya arbete, forskarna utformade en teknik, kallas "Zippads, "som utnyttjar Hotpads -arkitekturen för att komprimera objekt. När objekt först börjar på snabbare nivå, de är okomprimerade. Men när de vräcks till långsammare nivåer, de är alla komprimerade. Pekare i alla objekt över nivåer pekar sedan på de komprimerade objekten, vilket gör dem lätta att återkalla till snabbare nivåer och kan lagras mer kompakt än tidigare tekniker.
En komprimeringsalgoritm utnyttjar sedan effektivt redundans över objekt. Denna teknik avslöjar fler komprimeringsmöjligheter än tidigare tekniker, som var begränsade till att hitta redundans inom varje block med fast storlek. Algoritmen väljer först några representativa objekt som "bas" -objekt. Sedan, i nya objekt, den lagrar bara olika data mellan dessa objekt och de representativa basobjekten.
Brandon Lucia, en biträdande professor i el- och datateknik vid Carnegie Mellon University, berömmer arbetet för att utnyttja funktioner i objektorienterade programmeringsspråk för att bättre komprimera minne. "Abstraktioner som objektorienterad programmering läggs till i ett system för att göra programmeringen enklare, men introducerar ofta en kostnad för systemets prestanda eller effektivitet, "säger han." Det intressanta med detta arbete är att det använder den befintliga objektabstraktionen som ett sätt att göra minneskomprimering mer effektiv, i sin tur att göra systemet snabbare och mer effektivt med nya datorarkitekturfunktioner. "
Denna artikel publiceras på nytt med tillstånd av MIT News (web.mit.edu/newsoffice/), en populär webbplats som täcker nyheter om MIT -forskning, innovation och undervisning.