Kör på plats - Execute in place

Inom datavetenskap är execute in place ( XIP ) en metod för att köra program direkt från långtidslagring snarare än att kopiera det till RAM . Det är en förlängning av att använda delat minne för att minska den totala mängden minne som krävs.

Dess allmänna effekt är att programtexten förbrukar inget skrivbart minne, vilket sparar den för dynamisk data, och att alla instanser av programmet körs från en enda kopia.

För att detta ska fungera måste flera kriterier vara uppfyllda:

  • Lagringen måste ge ett liknande gränssnitt till CPU: n som vanligt minne (eller ett adaptivt lager måste finnas).
  • Detta gränssnitt måste tillhandahålla tillräckligt snabba läsoperationer med ett slumpmässigt åtkomstmönster .
  • Det filsystemet , om en sådan används, måste utsätta lämpliga kartläggning funktioner.
  • Programmet måste antingen vara länkat för att vara medveten om adressen som lagringen visas i systemet eller vara positionsoberoende .
  • Programmet får inte ändra data i den laddade bilden.

Lagringskraven uppfylls vanligtvis genom att använda NOR-flashminne eller EEPROM , som kan adresseras som enskilda ord för läsoperationer, även om det är lite långsammare än normalt system-RAM i de flesta inställningar.

XIP under startbelastning

First Stage Boot Loader är vanligtvis ett XIP-program som är länkat för att köras på den adress där flashchip (ar) kartläggs vid uppstart och innehåller ett minimalt program för att ställa in systemets RAM (vilket beror på komponenterna används på de enskilda korten och kan inte generaliseras tillräckligt så att rätt sekvens kan bäddas in i processorhårdvaran) och laddar sedan bootloader i andra steget eller OS- kärnan i RAM.

Under denna initialisering kanske skrivbart minne inte är tillgängligt, så alla beräkningar måste utföras inom processorregistren. Av denna anledning tenderar startläsare i första steget att vara skrivna på assemblerspråk och gör bara det minsta för att ge en normal körningsmiljö för nästa program. Vissa processorer bäddar antingen in en liten mängd SRAM i själva chipet eller tillåter att man använder det inbyggda cacheminnet som RAM, för att göra det här första stegets startladdare lättare att skriva med högnivåspråk.

För en kärna eller bootloader tilldelas i allmänhet adressutrymme internt, så för att använda XIP för dem är det tillräckligt att instruera länkaren att placera omodifierbara och modifierbara data i olika adressintervall och tillhandahålla en mekanism för att de modifierbara data som ska kopieras till skrivbart minne innan någon kod körs som förutsätter att data kan nås normalt. Detta kan göras som en del av föregående steg, eller inom ett litet kodsegment i början av programmet.

Om adressutrymme tilldelas externt, till exempel i ett applikationsprogram som körs på ett system som inte tillhandahåller virtuellt minne , måste kompilatorn komma åt alla modifierbara data genom att lägga till en förskjutning till en pekare till en privat kopia av dataområdet. I detta fall är den externa lastaren ansvarig för att ställa in instansspecifika minnesområden.

BIOS och UEFI använder XIP för att initialisera huvudminnet .

XIP som filsystem

XIP ställer krav på filsystem som ofta är svåra att uppfylla. I system utan sida bord , måste hela filen lagras i rad byte och får inte fragmenteras, medan flash-baserad filsystem syftar ofta för att distribuera data till sektorer av flashchip som har minst raderingscykler och även ut slitaget på förlänga dess livslängd.

Alla dessa komplikationer och snabba avvägningar innebär att XIP i allmänhet endast används för startladdare i första etappen eller när RAM saknas extremt. I synnerhet ansluter andra till fjärde generationens videospelkonsoler ROM-kassettens adress och databuss till konsolens, vilket låter (till exempel) Atari 2600 arbeta med endast 128 byte RAM i joystickgränssnittet IC .

Ett relativt nytt filsystem för Linux, kallat AXFS ( Advanced XIP File System ), syftar till att övervinna några av de brister som är associerade med XIP, särskilt när det gäller exekvering av användarutrymmeapplikationer på plats . Det gör till exempel möjligt att dela upp en körbar binär fil i "XIP-regioner", och därmed undvika den begränsning av fragmentering som nämnts ovan.

En NetBSD- implementering är också under utveckling.

Se även

Referenser

  1. ^ Samsung S3C2416X har 64 kB inbäddad SRAM tillgänglig på systembussen
  2. ^ Broadcom BCM2835 använder sin nivå 2-cache som RAM för startladdare innan SDRAM initialiseras
  3. ^ US patent 4485457A , Richard K. Balaska, Robert L. Hunter och Scott S. Robinson, "Memory system including RAM and page switchable ROM", utfärdat 1984-11-27, tilldelat CBS Inc.  
  4. ^ Uebayashi, Masao (2010-04-05). "eXecute-In-Place (XIP) -stöd för NetBSD" (PDF) . BSDCan .

externa länkar