Provést na místě - Execute in place

Ve výpočetní technice je spuštění na místě ( XIP ) metoda spouštění programů přímo z dlouhodobého úložiště, nikoli jejich kopírování do paměti RAM . Jedná se o rozšíření používání sdílené paměti ke snížení celkového požadovaného množství paměti.

Jeho obecný účinek spočívá v tom, že text programu nespotřebovává žádnou zapisovatelnou paměť, což ji ukládá pro dynamická data a že všechny instance programu jsou spouštěny z jedné kopie.

Aby to fungovalo, musí být splněno několik kritérií:

  • Úložiště musí poskytovat podobné rozhraní jako CPU jako běžná paměť (nebo musí být přítomna adaptivní vrstva).
  • Toto rozhraní musí poskytovat dostatečně rychlé operace čtení se vzorem náhodného přístupu .
  • Souborový systém , pokud je použit, je třeba vystavit odpovídající mapování funkce.
  • Program musí být buď propojen, aby si byl vědom adresy, na které se úložiště v systému objevuje, nebo aby byl nezávislý na poloze .
  • Program nesmí upravovat data v načteném obrázku.

Požadavky na úložiště jsou obvykle splněny pomocí NOR flash paměti nebo EEPROM , které lze pro operace čtení řešit jako jednotlivá slova, i když je ve většině instalací o něco pomalejší než normální systémová RAM.

XIP během bootování

Typicky je zavaděč First Stage Boot Loader program XIP, který je propojen s spuštěním na adrese, na které jsou při zapnutí mapovány čipy Flash, a obsahuje minimální program pro nastavení systémové paměti RAM (což závisí na komponentách použité na jednotlivých deskách a nelze je dostatečně zobecnit, aby bylo možné vložit správnou sekvenci do hardwaru procesoru) a poté načte bootloader druhého stupně nebo jádro OS do RAM.

Během této inicializace nemusí být k dispozici zapisovatelná paměť, takže všechny výpočty musí být prováděny v registrech procesoru. Z tohoto důvodu mají zavaděče první fáze tendenci být psány v jazyce assembleru a dělají jen minimum, aby poskytly normální prostředí pro spuštění dalšího programu. Některé procesory buď vkládají malé množství SRAM do samotného čipu, nebo umožňují použití vestavěné mezipaměti jako RAM, což usnadňuje psaní tohoto zaváděcího zavaděče první fáze pomocí jazyka vysoké úrovně.

Pro jádro nebo bootloader je adresní prostor obecně přidělen interně, takže pro použití XIP pro ně stačí instruovat linkera, aby umístil nemodifikovatelná a upravitelná data do různých rozsahů adres a poskytl mechanismus pro kopírování upravitelných dat do zapisovatelné paměti před spuštěním jakéhokoli kódu, který předpokládá, že k datům lze přistupovat normálně. To lze provést jako součást předchozí fáze nebo v malém segmentu kódu na začátku programu.

Pokud je adresní prostor přiřazen externě, například v aplikačním programu, který je spuštěn v systému, který neposkytuje virtuální paměť , musí kompilátor přistupovat ke všem upravitelným datům přidáním posunutí ukazatele k soukromé kopii datové oblasti. V tomto případě je externí zavaděč zodpovědný za nastavení oblastí paměti specifické pro instanci.

BIOS a UEFI používají XIP k inicializaci hlavní paměti .

XIP jako souborový systém

XIP klade na souborové systémy požadavky, které je často obtížné splnit. V systémech bez tabulky stránek , musí být celý soubor uložen v po sobě jdoucích bajtů a nesmí být fragmentován, zatímco blesk založené souborové systémy často zaměřují na distribuci dat do sektorů flash čipu, které mají nejméně cyklů mazání a rovnoměrného sjíždějí na čip, čímž se prodlužuje jeho životnost.

Všechny tyto komplikace a kompromis rychlosti znamenají, že XIP se obecně používá pouze pro bootloadery první fáze nebo když je RAM extrémně málo. Zejména druhá až čtvrtá generace herních konzolí spojuje adresu a datovou sběrnici ROM kazety s adresou konzoly, což umožňuje (například) Atari 2600 pracovat pouze s 128 bajty RAM v rozhraní joysticku IC .

Relativně nový souborový systém pro Linux, nazvaný AXFS ( Advanced XIP File System ), si klade za cíl překonat některé z nedostatků spojených s XIP, zejména pokud jde o místní provádění aplikací v uživatelském prostoru . Umožňuje například rozdělit spustitelný binární soubor do „oblastí XIP“, čímž se zabrání omezení fragmentace, které bylo uvedeno výše.

Ve vývoji je také implementace NetBSD .

Viz také

Reference

  1. ^ Samsung S3C2416X má na systémové sběrnici k dispozici 64 kB integrované paměti SRAM
  2. ^ Broadcom BCM2835 používá mezipaměť úrovně 2 jako RAM zavaděče před inicializací SDRAM
  3. ^ US patent 4485457A , Richard K. Balaska, Robert L. Hunter a Scott S. Robinson, „Paměťový systém včetně RAM a přepínatelné stránky ROM“, vydaný 27. 11. 1984 , přidělený společnosti CBS Inc.  
  4. ^ Uebayashi, Masao (04.04.2010). „Podpora eXecute-in-Place (XIP) pro NetBSD“ (PDF) . BSDCan .

externí odkazy