XIP

XIP ( eng.  execute-in-place - execution in place ) on tekniikka, joka tarjoaa mahdollisuuden suorittaa ohjelmakoodia suoraan pysyvästä tallennuslaitteesta , jolla se sijaitsee, lataamatta sitä ensin RAM -muistiin . Sitä käytetään laajalti tietokoneiden alkulataukseen sulautetuissa järjestelmissä RAM-resurssien säästämisen vuoksi, joissain tapauksissa sitä käytetään myös suurissa järjestelmissä . 2010-luvulta lähtien se on korvattu yleisemmällä tekniikalla - DAX [ .

Jotta tekniikka toimisi, sen tuki on toteutettava kolmella tasolla: tallennus , käyttöjärjestelmä ja itse suoritettavat ohjelmat .

Tallennuslaitteet

Ensimmäistä kertaa selkeä tuki teknologialle tallennuslaitteen puolella sekä sen lyhenne ja dekoodaus on kuvattu vuoden 1990 PCMCIA -spesifikaatiossa , ja ne on tarkoitettu käytettäväksi ei-kirjoitettavan laitteen kanssa [1] . Aluksi tekniikka yhdistettiin vain PCMCIA:han ja sen erikoismääritykseen, jossa määriteltiin säännöt binäärikoodin sijoittamiselle sekä sen luku- ja suoritusjärjestys [2] , mutta sellaisena tekniikka otettiin käyttöön myös muihin liitäntöihin ja asemiin, siitä tuli vahvempi kaikille tallennuslaitteille.

Jotta XIP-tila toimisi asemassa, jossa ohjelma sijaitsee, on otettava käyttöön samanlainen liitäntä kuin keskusprosessori käyttää RAM-muistia. Tuki tälle toteutetaan joko väliohjelmistotasolla tai tiedostojärjestelmän avulla . Välityökaluja, jotka tarjoavat työtä XIP-tilassa, on MTD ( Memory Technology Device ) -alijärjestelmä ,  ja tiedostojärjestelmien, jotka työskentelevät MTD:llä lohkotason yli, on tuettava asianmukaisia ​​kutsuja, jotta XIP toimii. Samanaikaisesti kaikki MTD:n kautta toimivat tiedostojärjestelmät eivät tue XIP:tä, koska monet niistä, jotka alun perin keskittyivät kannettavaan tekniikkaan, toteuttivat pakkaamisen , joten XIP:n toteutus niissä ei ole triviaali, tällaisia ​​tiedostojärjestelmiä ovat JFFS2 , YAFFS2 , LogFS , UBIFS [3] . MTD:llä on kuitenkin myös XIP-yhteensopivat pakkaustiedostojärjestelmät, kuten AXFS , joka korostaa XIP-tilan toimintaa määrittävänä ominaisuutena ( edistynyt XIP-tiedostojärjestelmä ) [3] . Tärkeimmät lohkotason pakkaustiedostojärjestelmät jatkuvaa tallennusta varten, cramfs ja squashfs  , eivät tue XIP:tä, mutta cramfs:lle on korjaustiedosto , joka tukee pakkaamatonta XIP:tä, ja useimmat Linux-pohjaiset matkapuhelimet käyttivät tätä cramfs-versiota [3] .  

Lohkotason yläpuolella toimivien yleiskäyttöisten tiedostojärjestelmien joukossa on tuki Ext2 :ssa ja Ext3 :ssa ; Ext4 aloitti XIP-tuen siirtämisen, mutta vuonna 2014 se korvattiin yleisemmillä suorakäyttötavoilla - DAX [ [4] .

Käyttöjärjestelmät

Huolimatta siitä, että tekniikkaa käytettiin sulautetuissa järjestelmissä, laiteohjelmistoissa ja useissa reaaliaikaisissa käyttöjärjestelmissä kauan ennen 2000 -lukua [5] , yleiskäyttöisten käyttöjärjestelmien puolella tuki otettiin ensimmäisen kerran käyttöön Linux-ytimen versiossa 2.6 . vuonna 2005 [6] .

Vuonna 2006 tekniikkaa tuettiin IBM zSeries -mainframeille , joissa oli tarpeen suorittaa useita erilaisia ​​z/Linux -esiintymiä z/VM - ympäristöstä , jossa oli yhteinen ydin ja jaetut kirjastot , mutta eri tietoalueet [7 ] . Jos vastaava ominaisuus z/OS :lle oli olemassa aiemmin, niin sen suora käyttöönotto Linuxissa vaatisi merkittäviä muutoksia käyttöjärjestelmän ydinkoodiin, joten XIP-tuki siirrettiin ytimen haaraan s390 -arkkitehtuurille ja useita lisäominaisuuksia. tuettiin, mukaan lukien tuki Ext2-puolelle [8] . Lisäksi IBM:n tarpeen tukea keskustietokoneteknologiaa uskotaan olleen XIP:n käyttöönoton liikkeellepaneva voima Linuxissa [9] .

Vuonna 2010 tekniikkaa tuettiin NetBSD :ssä [5] , jossa toteutus osoittautui virtuaalisen muistinhallintaalijärjestelmän ja puskurivälimuistin ominaisuuksien vuoksi suhteellisen yksinkertaiseksi, lisäksi se on tiedostojärjestelmille läpinäkyvä (eli ei vaadi heidän erityistä tukeaan).

Kokoelma

Jotta ohjelma toimisi XIP-tilassa, on käännösvaiheessa ilmoitettava mahdollisuudesta erottaa alueet datasegmenteille ja koodisegmenteille (koska datasegmentti on luotava RAM-muistiin, ja koodisegmentin on säilyttävä tiedostojärjestelmässä) . GCC käyttää tähän vaihtoehtoa -msep-data , ja lisäksi XIP-ohjelmat vaativat yleensä -mid-shared-library -vaihtoehdon luodakseen koodia, joka sallii kirjastojen kutsumisen tunnisteella [10] . Minkä tahansa näistä asetuksista asetetaan -fPIC -lippu  , joka tarkoittaa sijainnista riippumatonta käännöstä .

Tehosteet

Tekniikan päätarkoitus on säästää laitteen RAM-muistia. Merkittävin RAM-muistin säästämisen vaikutus saavutetaan, kun on tarpeen ajaa useita ohjelman esiintymiä, jolloin sama lukumuistilaitteen tila käytetään kaikkien laukaisujen palvelemiseen sen sijaan, että jokaiselle varattaisiin alue RAM-muistista. ilmentymä. Toinen vaikutus on vähentää laitteen virrankulutusta vähentämällä haihtuvan RAM-muistin käyttöjen määrää [11] .

Toinen usein käytetty efekti on nopea käynnistys pysyvästä tallennustilasta, erityisesti riittävän suurelle monoliittiselle Linux-ytimelle, joka perinteisillä tavoilla täytyy aluksi kopioida RAM:iin, XIP:ssä se voidaan suorittaa suoraan asemalta.

Flash-asemia käytettäessä XIP:n suurin vaikutus saavutetaan tavuosoitteisilla laitteilla, kuten NOR flash [5] (kun taas NAND flash , kuten kiintolevyt , ovat lohkoosoitteellisia ja yhden käskyn lukeminen tarkoittaa yleensä 4 kt:n lukemista vähintään 512 tavua). Tämä selittää myös NOR-flashin käytön vain luku -muistissa ja sulautetuissa järjestelmissä huolimatta sen korkeammista kustannuksista ja alhaisemmasta tallennustiheydestä (2010-luvun olosuhteissa).

Toinen vaikutus on kyky käyttää pysyviä tallennuslaitteita jaettuna muistina ohjelmien suorittamiseen ilman isännän päämuistiresursseja ja ohjelma- ja datasegmenttien erottamista, kuten keskuskoneissa on toteutettu .

DAX

Vuonna 2014 Linux-ytimen XIP-koodin perusteella (versiosta 3.14 lähtien) otettiin käyttöön yleisempi tekniikka - DAX ( suora  pääsy ), joka yhdistää molemmat XIP-ominaisuudet ja tarjoaa tarvittavat kutsut suoraa dataa varten sivuvälimuistin ohittamiseen [9] . Tiedostojärjestelmistä tekniikka toteutettiin ensin Ext4 :lle , myöhemmin XFS -tuki ilmestyi .

Päämotiivina tällaiselle yleistämiselle oli 2010-luvun puolivälissä palvelinjärjestelmien kapasiteetin tavuosoitteisten haihtumattomien NVDIMM ja 3D XPoint -laitteiden ilmestyminen palvelinjärjestelmiin, joiden yhteydessä molempien käynnissä olevien ohjelmakoodien relevanssi siirtymättä pääjärjestelmään muisti ja suora pääsy tietoihin ilman välikopiointia RAM-muistiin. Tällaisiin laitteisiin keskittyneissä tiedostojärjestelmissä, kuten NOVA , PMFS , SCMFS , Aerie [12] , DAX-tuki on otettu käyttöön alusta alkaen ja tätä ominaisuutta pidetään yhtenä niiden avainominaisuuksista.

Muistiinpanot

  1. Mark Brownstein. PCMCIA tukee PC  -korttimäärityksiä  // InfoWorld . - 1990. - Voi. 12 , ei. 36 .
  2. Winn Rosh. PCMCIA: Tulevaisuuden laajennusjärjestelmä  // PC Mag  . - 1993. - Voi. 12 , ei. 2 . - s. 321-326 . "XIP on PCMCIA:n oma spesifikaatio, joka sallii vain lukumuistissa olevan ohjelmakoodin suorittamisen lataamatta sitä ensin pääjärjestelmään... XIP-standardi määrittelee kuinka ROM-autoihin koodatut ohjelmat luetaan ja suoritetaan"
  3. 1 2 3 Hulbert, 2008 .
  4. Jonathan Corbet. Pysyvän muistin tiedostojärjestelmien tukeminen (linkki ei ole käytettävissä) . LWN.net (2. syyskuuta 2014). Haettu 26. toukokuuta 2018. Arkistoitu alkuperäisestä 21. joulukuuta 2018. 
  5. 1 2 3 Uebayashi, 2010 .
  6. Corbet, 2005 .
  7. ↑ Execute- in -Place -tekniikan käyttäminen Linuxin kanssa z/VM:ssä  . SC34-2594-01 . IBM (1. maaliskuuta 2010). Haettu 26. toukokuuta 2018. Arkistoitu alkuperäisestä 20. tammikuuta 2022.
  8. Suorita paikan päällä tiedostojen kartoituksia varten . Linuxin dokumentaatio. Tiedostojärjestelmät (13. marraskuuta 2008). Haettu 26. toukokuuta 2018. Arkistoitu alkuperäisestä 15. huhtikuuta 2022.
  9. 12 Jake Edge. Pysyvä  muisti . LWN.net (26. maaliskuuta 2014). Haettu 26. toukokuuta 2018. Arkistoitu alkuperäisestä 27. toukokuuta 2018.
  10. Richard Stallman . GNU Compiler Collection -kokoelman käyttäminen. GCC-versiolle 4.1.2. - Boston: GNU Press, 2005. - S. 153. - 470 s.
  11. Benavides et ai., 2008 .
  12. Jian Xu, Steven Swanson. NOVA: Lokirakenteinen tiedostojärjestelmä haihtuville/haihtumattomille hybridipäämuistille  //  Proceedigns of 14th USENIX Conference on File and Storage Technologies (FAST '16). - Santa Clara, Kalifornia : USENIX , 2016. - P. 323-328 . - ISBN 978-1-931971-28-7 .

Kirjallisuus

Linkit