Massachusetts Institute of Technologyn tutkijat ovat kehittäneet uuden tekniikan, jolla ohjelmakoodi saadaan pakattua aiempaa tiukempaan. Tämä vapauttaa muistia, nopeuttaa sovellusten toimintaa ja parantaa laitteiden energiatehokkuutta.
Nykyiset tietokoneet hallitsevat ja siirtävät dataa vakioidun kokoisina lohkoina. Ohjelmistot eivät kuitenkaan luonnollisesti tallanne dataa tällaisina tarkkaan määriteltyinä koodiryhminä. Sen sijaan ohjelmat käyttävät objekteja datarakenteina. Perinteiset datanpakkausmenetelmät käsittelevät kuitenkin objekteja huonosti.
MIT:n tutkijat esittelivät kansainvälisessä ohjelmoinnin ACM-konferenssissa teknisen paperin, jossa datan pakkaamista lähestyttiin aivan eri suunnasta. Uudessa metodologiassa yritetään pakata objekteja pienempään koko muistihierarkian alueella.
Tulokset ovat mullistavia- Java-virtuaalikoneella tehdyt kokeet osoittavat, että ohjelmakoodi puristui puolta pienempään tilaan. Ohjelman vaatima muisti pienenee näin puolella. Lisäksi kun prosessorille haetaan dataa, prosessi nopeutuu ja ohjelma toimii nopeammin.
Periaate toimii Javan lisäksi kaikilla muillakin objektiorientoituneilla kielillä, kuten Pythonilla tai Go-kielellä. Lisätehoa saataisiin käyttöön kaikilla ohjelmia ajavilla koneilla, eikä ohjelmista tarvitsisi muuttaa koodiriviäkään.
Tekniikka perustuu tutkijoiden aiempaa työhön, jossa muistiarkkitehtuureita on uudelleenrakennettu manipuloimaan suoraan objekteja. Nykyisissä arkkitehtuureissa uusimmat haetut lohkot tallentuvat nopeisiin, pieniin välimuisteihin ja vanhat haut siirtyvät hiljalleen päämuistiin välimuistiportaiden kautta. Menetelmä on joustava, mutta tehokkuudeltaan huono: jokainen välimuisti joutuu etsimään osoitetta omasta sisällöstään.
Viime lokakuussa tutkijat esittelivät ideansa, jossa tallennetaan muistiin kokonaisia objekteja. Tässä Hotpads-arkkitehtuurissa objektit pakataan tiukasti hierarkkisille tasoille, jotka ovat suoraan osoitettavissa olevassa, sirulle integroidussa muistissa. Mitään edistyneitä hakuja ei tällöin tarvita.
Ohjelmat viittaavat suoraan objektien sijaintiin kaikilla hierarkiatasoilla. Kun nopein käytettävissä oleva taso täyttyy, vanhempia siirretään hitaammille tasoille ja sellaiset objektit, joille ei enää ole käyttöä, ”kierrätetään”. Näin vapautuu tilaa uusille objekteille. Jokaisen uuden objektin kohdalla osoitin päivitetään uuden sijainnin mukaan. Tämän ansiosta ohjelmat voivat hakea objektit huomattavasti nopeammin.
Toinen vaihe arkkitehtuurissa on nimeltään Zippads. Nopeimmalla tasolla objektit ovat pakkaamattomia, mutta alemmalle tasolle siirtyessään objektit pakataan. Osoittimet viittaavat näihin pakattuihin objekteihin, jolloin niiden tuominen takaisin nopeimmalle tasolle onnistuu helpommin. Tämä vaatii algoritmeja, jotka osaavat käsitellä objektin kokoisia osioita.