XIP

XIP ( anglicky  execute-in-place - performance in place ) je technologie, která poskytuje možnost spouštět programový kód přímo z trvalého úložného zařízení, na kterém je umístěn, bez předchozího načtení do paměti RAM . Hojně se používá pro prvotní zatížení počítačů, ve vestavěných systémech kvůli nutnosti šetřit zdroje RAM, v některých případech se používá i pro velké systémy . Od roku 2010 pro použití v serverových systémech Linux s bajtově adresovatelnou energeticky nezávislou pamětíje nahrazena obecnější technologií - DAX .

Aby technologie fungovala, její podpora musí být implementována na třech úrovních: úložiště , v operačním systému a samotné spustitelné programy .

Paměťová zařízení

Poprvé je explicitní podpora technologie na straně paměťového zařízení, stejně jako její zkratka a dekódování, popsána ve specifikaci PCMCIA z roku 1990 a je více zaměřena na použití s ​​nezapisovatelnými zařízeními [1] . Zpočátku byla technologie spojena pouze s PCMCIA a její speciální specifikací, která definovala pravidla pro umístění binárního kódu a pořadí, ve kterém byl čten a spouštěn [2] , ale jako taková byla implementována i pro jiná rozhraní a mechaniky, stal se silnějším pro všechna úložná zařízení.

Aby režim XIP fungoval na jednotce, na které je program umístěn, musí být implementováno rozhraní podobné tomu, které používá centrální procesor pro přístup k paměti RAM. Podpora je implementována buď na úrovni middlewaru nebo pomocí souborového systému . Mezi zprostředkující nástroje, které zajišťují práci v režimu XIP, je subsystém MTD ( Memory Technology Device ) ,  respektive souborové systémy pracující na MTD za úrovní bloku musí podporovat příslušná volání, aby XIP fungoval. Současně ne všechny souborové systémy pracující prostřednictvím MTD podporují XIP, protože mnoho z nich, původně zaměřených na přenosnou technologii, implementovalo kompresi , v tomto ohledu je implementace XIP v nich netriviální, mezi takové systémy souborů patří JFFS2 , YAFFS2 , LogFS , UBIFS [3] . Existují však kompresní souborové systémy s podporou XIP pracující na MTD, jako je AXFS , který vyzdvihuje provoz režimu XIP jako definující vlastnost ( pokročilý souborový systém XIP ) [3] . Hlavní kompresní souborové systémy na úrovni bloků pro perzistentní úložiště, cramfs a squashfs  , nepodporují XIP, ale existuje záplata pro cramfs na podporu nekomprimovaného XIP a většina mobilních telefonů založených na Linuxu používala tuto variantu cramfs [3] .  

Mezi obecnými souborovými systémy běžícími na úrovni bloků je podpora poskytována v Ext2 a Ext3 ; Ext4 začal portovat podporu XIP, ale v roce 2014 byl nahrazen obecnějšími metodami přímého přístupu - DAX [ [4] .

Operační systémy

Navzdory skutečnosti, že tato technologie byla používána ve vestavěných systémech, firmwaru a řadě operačních systémů pracujících v reálném čase již dávno před rokem 2000 [5] , na straně univerzálních operačních systémů byla podpora poprvé implementována v jádře Linuxu verze 2.6 . v roce 2005 [6] .

V roce 2006 byla tato technologie podporována pro sálové počítače IBM zSeries , kde bylo potřeba spouštět mnoho různých instancí z/Linux z prostředí z/VM se společným jádrem a sdílenými knihovnami , ale s různými datovými oblastmi [7 ] . Pokud podobná funkce pro z/OS existovala dříve, její přímá implementace pro Linux by vyžadovala významné změny v kódu jádra operačního systému, takže podpora XIP byla přesunuta do větve jádra pro architekturu s390 a řada dalších funkcí byly podporovány, včetně podpory na straně Ext2 [8] . Navíc se předpokládá, že potřeba IBM podporovat technologii sálových počítačů byla hnací silou implementace XIP na Linuxu [9] .

V roce 2010 byla technologie podporována v NetBSD [5] , kde se implementace ukázala jako poměrně jednoduchá vzhledem k vlastnostem subsystému správy virtuální paměti a buffer cache, navíc je transparentní pro souborové systémy (tzn. nevyžaduje zvláštní podporu z jejich strany).

Kompilace

Aby program fungoval v režimu XIP, je nutné ve fázi kompilace informovat o možnosti oddělení oblastí pro datové segmenty a kódový segment (protože datový segment musí být vytvořen v RAM, resp. segment kódu musí zůstat v systému souborů). GCC k tomu používá volbu -msep-data a navíc programy XIP obvykle vyžadují volbu -mid-shared-library pro generování kódu, který umožňuje volání knihoven pomocí identifikátoru [10] . Nastavení kterékoli z těchto voleb způsobí, že se nastaví příznak -fPIC  , který znamená kompilaci nezávislou na poloze .

Efekty

Hlavním účelem technologie je šetřit RAM zařízení. Nejvýznamnějšího efektu úspory paměti RAM je dosaženo, když je nutné spustit několik instancí programu, v takovém případě se pro obsluhu všech spuštění použije stejný prostor na paměťovém zařízení pouze pro čtení, namísto přidělení oblasti v paměti RAM pro každý instance. Dalším efektem je snížení spotřeby energie zařízení snížením počtu přístupů k volatilní RAM [11] .

Dalším často využívaným efektem je rychlé spouštění z perzistentního úložiště, zejména u dostatečně velkého monolitického linuxového jádra, které se tradičními způsoby musí zpočátku zkopírovat do RAM, v XIP jej lze spustit přímo z disku.

Při použití flash disků je největšího efektu XIP dosaženo u zařízení s adresou bajtů, jako je NOR flash [5] (zatímco NAND flash , stejně jako pevné disky , jsou blokově adresovány a přístup k jedné instrukci znamená čtení obvykle 4 KB při alespoň 512 bajtů). To také vysvětluje použití NOR flash pro bootovací paměti pouze pro čtení a vestavěné systémy, navzdory jeho vyšší ceně a nižší hustotě záznamu (v podmínkách roku 2010).

Dalším efektem je možnost používat perzistentní úložná zařízení jako sdílenou paměť pro spouštění programů bez použití zdrojů hlavní paměti hostitele a oddělování programových a datových segmentů, jak je implementováno v sálových počítačích .

DAX

V roce 2014 byla na základě kódu XIP v linuxovém jádře (od verze 3.14) implementována obecnější technologie - DAX ( přímý  přístup ), která kombinuje jak možnosti XIP, tak poskytuje potřebná volání pro přímý přístup k datům obcházení mezipaměti stránek [9] . Ze souborových systémů byla technologie nejprve implementována pro Ext4 , později se objevila podpora pro XFS .

Hlavním motivem pro takové zobecnění bylo v polovině 2010 objevení prostorných bytových adresovatelných energeticky nezávislých zařízení NVDIMM a 3D XPoint pro serverové systémy, v souvislosti s nimiž byla relevantní jak běžící programový kód bez přenosu na hlavní paměti a přímý přístup k datům bez přechodného kopírování do RAM. V souborových systémech zaměřených na taková zařízení, jako jsou NOVA , PMFS , SCMFS , Aerie [12] , je podpora DAX implementována od samého počátku a tato funkce je považována za jednu z jejich klíčových vlastností.

Poznámky

  1. Mark Brownstein. PCMCIA podporuje  specifikace PC karet  // InfoWorld . - 1990. - Sv. 12 , č. 36 .
  2. Winn Rosh. PCMCIA: Expanzní systém budoucnosti  // PC Mag  . - 1993. - Sv. 12 , č. 2 . - str. 321-326 . "XIP je vlastní specifikace PCMCIA, která umožňuje spustit programový kód v paměti pouze pro čtení, aniž by byl nejprve nahrán do hlavního systému... Standard XIP definuje, jak se mají číst a spouštět programy zakódované v ROM autech"
  3. 1 2 3 Hulbert, 2008 .
  4. Jonathan Corbet. Podpora souborových systémů v trvalé paměti (nedostupný odkaz) . LWN.net (2. září 2014). Staženo 26. 5. 2018. Archivováno z originálu 21. 12. 2018. 
  5. 1 2 3 Uebayashi, 2010 .
  6. Corbet, 2005 .
  7. ↑ Jak používat technologii Execute- in -Place s Linuxem na z/VM  . SC34-2594-01 . IBM (1. března 2010). Staženo 26. 5. 2018. Archivováno z originálu 20. 1. 2022.
  8. Spustit na místě pro mapování souborů . Linux dokumentace. Souborové systémy (13. listopadu 2008). Staženo 26. 5. 2018. Archivováno z originálu 15. 4. 2022.
  9. 12 Jake Edge. Trvalá  paměť . LWN.net (26. března 2014). Staženo 26. 5. 2018. Archivováno z originálu 27. 5. 2018.
  10. Richard Stallman . Použití GNU Compiler Collection. Pro GCC verze 4.1.2. - Boston: GNU Press, 2005. - S. 153. - 470 s.
  11. Benavides et al., 2008 .
  12. Jian Xu, Steven Swanson. NOVA: Log-structured File System for Hybrid Volatile/Nevolatile Main Memories  //  Průběh 14. konference USENIX o souborových a úložných technologiích (FAST '16). - Santa Clara, CA : USENIX , 2016. - S. 323-328 . - ISBN 978-1-931971-28-7 .

Literatura

Odkazy