science >> Wetenschap >  >> Elektronica

Een nieuwe datacompressietechniek voor snellere computerprogramma's

Een nieuwe techniek ontwikkeld door MIT-onderzoekers comprimeert voor het eerst "objecten" in het geheugen, meer geheugen vrijmaken dat door computers wordt gebruikt, waardoor ze sneller kunnen rennen en meer taken tegelijk kunnen uitvoeren. Krediet:Christine Daniloff, MIT

Een nieuwe techniek ontwikkeld door MIT-onderzoekers heroverweegt hardware datacompressie om meer geheugen vrij te maken dat wordt gebruikt door computers en mobiele apparaten. waardoor ze sneller kunnen rennen en meer taken tegelijk kunnen uitvoeren.

Gegevenscompressie maakt gebruik van redundante gegevens om opslagcapaciteit vrij te maken, verhoog de rekensnelheid, en andere voordelen bieden. In de huidige computersystemen toegang tot het hoofdgeheugen is erg duur in vergelijking met de werkelijke berekening. Daarom, het gebruik van datacompressie in het geheugen helpt de prestaties te verbeteren, omdat het de frequentie en hoeveelheid gegevens vermindert die programma's uit het hoofdgeheugen moeten halen.

Geheugen in moderne computers beheert en draagt ​​gegevens over in brokken van vaste grootte, waarop traditionele compressietechnieken moeten werken. Software, echter, slaat zijn gegevens niet van nature op in brokken van vaste grootte. In plaats daarvan, het gebruikt "objecten, " gegevensstructuren die verschillende soorten gegevens bevatten en variabele grootten hebben. traditionele hardwarecompressietechnieken gaan slecht om met objecten.

In een paper dat deze week wordt gepresenteerd op de ACM International Conference on Architectural Support for Programming Languages ​​and Operating Systems, de MIT-onderzoekers beschrijven de eerste benadering om objecten in de geheugenhiërarchie te comprimeren. Dit vermindert het geheugengebruik en verbetert tegelijkertijd de prestaties en efficiëntie.

Programmeurs kunnen baat hebben bij deze techniek bij het programmeren in elke moderne programmeertaal, zoals Java, Python, en Go—dat gegevens in objecten opslaat en beheert, zonder hun code te wijzigen. Aan hun einde, consumenten zouden computers zien die veel sneller kunnen of veel meer apps met dezelfde snelheden kunnen draaien. Omdat elke toepassing minder geheugen verbruikt, het loopt sneller, zodat een apparaat meer toepassingen kan ondersteunen binnen het toegewezen geheugen.

In experimenten met een aangepaste Java-virtuele machine, de techniek comprimeerde tweemaal zoveel gegevens en verminderde het geheugengebruik met de helft ten opzichte van traditionele op cache gebaseerde methoden.

"De motivatie was om te proberen een nieuwe geheugenhiërarchie te bedenken die objectgebaseerde compressie zou kunnen doen, in plaats van cache-line compressie, omdat dat is hoe de meeste moderne programmeertalen gegevens beheren, " zegt eerste auteur Po-An Tsai, een afgestudeerde student in het Computer Science and Artificial Intelligence Laboratory (CSAIL).

"Alle computersystemen zouden hiervan profiteren, " voegt co-auteur Daniel Sanchez toe, hoogleraar informatica en elektrotechniek, en een onderzoeker bij CSAIL. "Programma's worden sneller omdat ze niet langer worden gehinderd door geheugenbandbreedte."

De onderzoekers bouwden voort op hun eerdere werk dat de geheugenarchitectuur herstructureert om objecten direct te manipuleren. Traditionele architecturen slaan gegevens op in blokken in een hiërarchie van steeds grotere en langzamere geheugens, 'caches' genoemd. Recent geopende blokken stijgen naar de kleinere, snellere caches, terwijl oudere blokken worden verplaatst naar langzamere en grotere caches, eindigt uiteindelijk terug in het hoofdgeheugen. Hoewel deze organisatie flexibel is, het is duur:om toegang te krijgen tot het geheugen, elke cache moet zoeken naar het adres in de inhoud ervan.

"Omdat de natuurlijke eenheid van gegevensbeheer in moderne programmeertalen objecten is, waarom niet gewoon een geheugenhiërarchie maken die objecten behandelt?" zegt Sanchez.

In een in oktober vorig jaar gepubliceerd artikel de onderzoekers detailleerden een systeem genaamd Hotpads, die hele objecten opslaat, strak verpakt in hiërarchische niveaus, of "kussens". Deze niveaus berusten volledig op efficiënte, op chip, direct geadresseerde herinneringen - zonder geavanceerde zoekopdrachten.

Programma's verwijzen vervolgens rechtstreeks naar de locatie van alle objecten in de hiërarchie van pads. Nieuw toegewezen en recentelijk verwezen objecten, en de objecten waarnaar ze verwijzen, blijf in het snellere niveau. Wanneer het snellere niveau vol is, het voert een "uitzettingsproces" uit dat recentelijk verwezen objecten bewaart, maar oudere objecten naar een lager niveau tilt en objecten recyclet die niet langer bruikbaar zijn, om ruimte vrij te maken. Aanwijzers worden vervolgens in elk object bijgewerkt om naar de nieuwe locaties van alle verplaatste objecten te wijzen. Op deze manier, programma's hebben veel goedkoper toegang tot objecten dan zoeken via cacheniveaus.

Voor hun nieuwe werk ontwierpen de onderzoekers een techniek, genaamd "Zippads, " die gebruikmaakt van de Hotpads-architectuur om objecten te comprimeren. Wanneer objecten voor het eerst op het snellere niveau starten, ze zijn ongecomprimeerd. Maar als ze worden uitgezet naar een lager niveau, ze zijn allemaal gecomprimeerd. Aanwijzers in alle objecten op verschillende niveaus wijzen vervolgens naar die gecomprimeerde objecten, waardoor ze gemakkelijk terug te roepen zijn naar de snellere niveaus en compacter kunnen worden opgeslagen dan eerdere technieken.

Een compressie-algoritme maakt vervolgens efficiënt gebruik van redundantie tussen objecten. Deze techniek onthult meer compressiemogelijkheden dan eerdere technieken, die beperkt waren tot het vinden van redundantie binnen elk blok met een vaste grootte. Het algoritme kiest eerst een paar representatieve objecten als "basis"-objecten. Vervolgens, in nieuwe objecten, het slaat alleen de verschillende gegevens op tussen die objecten en de representatieve basisobjecten.

Brandon Lucia, een assistent-professor elektrische en computertechniek aan de Carnegie Mellon University, prijst het werk voor het benutten van functies van objectgeoriënteerde programmeertalen om het geheugen beter te comprimeren. "Abstracties zoals objectgeoriënteerd programmeren worden aan een systeem toegevoegd om het programmeren eenvoudiger te maken, maar brengen vaak kosten met zich mee in de prestaties of efficiëntie van het systeem, "zegt hij. "Het interessante van dit werk is dat het de bestaande objectabstractie gebruikt als een manier om geheugencompressie effectiever te maken, op zijn beurt het systeem sneller en efficiënter maken met nieuwe computerarchitectuurfuncties."

Dit verhaal is opnieuw gepubliceerd met dank aan MIT News (web.mit.edu/newsoffice/), een populaire site met nieuws over MIT-onderzoek, innovatie en onderwijs.