I den här artikeln utforskar vi programvaruhanterade adressöversättningar. Syftet med studien är att specificera designen för minneshantering för en hög klockfrekvens PowerPC-implementation där en enkel design är en förutsättning för en snabb klocka och en kort designcykel. Vi visar att sofnuaremanaged adressöversättning är lika efficient som hårdvaruhanterad adressöversättning, och det är mycket mer Jlexible. Operativa system som FOS/l och Mach laddning mellan 0,10 och 0,28 cykler per instruktion (CPZ} för adressöversättning med hjälp av dedikerad minneshantering hårdvara. Software-hanterade översättning kräver 0,05 CPI. Mekanismer för att stödja funktioner som delat minne, supersidor, sidoskydd och glesa adressutrymmen kan deJined helt i programvara, vilket möjliggör mycket mer flexibilitet än i hårdvarudejined mekanismer. I många kommersiella arkitekturer är hårdvarustödet för minneshantering onödigt komplicerat, sätter begränsningar på operativsystemet och motverkar ofta porteringsinsatser [37] I detta dokument demonstrerar vi en minneshanteringsdesign som håller sig inom en acceptabel prestanda overhead och som inte kräver komplex hårdvara. Det sätter få begränsningar på operativsystemet men fortfarande ger alla funktioner i system med mer hårdvarustöd. Designen är programvaruhanterad adressöversättning, eller sofim för kort. Den avstår från hårdvara såsom översättningen Iookabord buffertar (TLBs) som finns i varje modern mikroarkitektur och den sida-tabell-gång state maskiner som finns i x86 och PowerPC arkitekturer. Den använder en programvara-handledd cache miss, som i VMP multiprocessor [ l, 12.131, förutom att VMP använde mekanismen för att utforska cachekonsistens i en multiprocessor, medan vi använder den för att förenkla minneshantering hårdvara i en uniprocessor. Det liknar också i-cache adress översättningsmekanismen för SPUR [26,43, 561 i sin brist på TLBs, men tar designen ett steg längre genom att eliminera bordsgående hårdvara. Programvaruhanterade adressöversättning stöder gemensamma operativsystem funktioner som adressutrymme skydd, finkornigt skydd, glesa adress utrymmen, och supersidor. Jämfört med mer ortodoxa konstruktioner, minskar det hårdvara komplexitet utan att kräva onödigt komplex programvara. Den har två primära komponenter: en praktiskt taget indexerad, praktiskt taget taggad cachehierarki med en writeback cache på den lägsta nivån (L2, till exempel), och en programvara hanterad cache miss på den lägsta nivån. Virtuella caches kräver inte adressöversättning när begärd data hittas i cache, och så eliminera behovet av en TLB. En miss i L2-cachen åberopar operativsystemets minneshanterare, vilket gör det möjligt för operativsystemet att genomföra alla typer av sidtabell, skyddssystem eller ersättningspolicy, samt en programvarudefinierad sidstorlek. Migreringen av adressöversättningsstöd från hårdvara till programvara ökar flexibiliteten avsevärt. Vi visar effektiviteten av programvara-hanterade adressöversättning genom att analysera en specifik implementation och därmed hitta en övre gräns på overhead. Exemplet lägger programvara hanterad översättning till en konventionell PowerPC minneshantering organisation. Det utgör grunden för minneshantering designen av PUMA-processorn, en hög klockfrekvens 32-bitars PowerPC där en enkel design är avgörande för en snabb klocka och en kort designcykel. Exemplet implementation lägger PowerPC segment [39] till so@m design; dessa stöd adresser utrymmesskydd, delat minne, och ger tillgång till ett stort virtuellt adressutrymme. De är inte en väsentlig del av programvara-hanterade adressöversättning-till exempel, de kan ersättas med långa adressrymdsidentifierare eller en 64-bitars adressutrymme. Användningen av segment i samband med en virtuell cacheorganisation kan dock lösa överensstämmelseproblemen i samband med virtuella cache. Det finns en kärna av funktionella mekanismer i samband med minneshantering som datoranvändare har kommit att förvänta sig. Dessa finns i nästan varje modem mikroarkitektur och operativsystem (t.ex. UNIX-adressens rymdskydd). Applikationer på användarnivå bör inte ha obegränsad tillgång till data från andra applikationer eller operativsystemet, En gemensam maskinvaruassist använder adressrymdsidentifierare (ASID), som utökar virtuella adresser och skiljer dem från adresser som genereras av olika processer. Alternativt kan skydd tillhandahållas med hjälp av programvara [5, 19,501 cesses för att hänvisa till samma fysiska data genom (potentiellt) olika virtuella adresser. Utrymmeskraven kan minskas genom att dela kod mellan processerna. Genom att använda delat minne för kommunikation undviks datakopiering av traditionella system för meddelandepassering. Eftersom ett systemanrop vanligtvis är en storleksordning snabbare än att kopiera en sida av data, har många forskare undersökt noll-kopieringssystem, där operativsystemet unmaps sidor från avsändarens adressutrymme och omformar dem till mottagarens adressutrymme [It?, 20,351. Stora adressutrymmen. Applikationer kräver allt större virtuella utrymmen; industrin har svarat med 64-bitars maskiner. Ett stort adressutrymme innebär dock inte en stor adress: stora adresser är helt enkelt ett sätt att genomföra stora adressutrymmen. Ett annat är att ge Delat minne. Delat minne tillåter flera proeach-processer ett 4 GB-fönster i ett större globalt virtuellt adressutrymme, det tillvägagångssätt som används av PA-RISC l.X- och 32-bitars PowerPC-arkitekturer [25,39]. Finkornigt skydd. Finkornigt skydd markerar objekt som read-only, read-write, exekvation-only, etc. Granulariteten är vanligtvis en sida, även om en större eller mindre granularitet ibland är önskvärd. Många system har använt skydd för att implementera olika minnessystemstödfunktioner, från copy-on-write till sophämtning till distribuerat delat virtuellt minne [2]. bibliotek och flertrådiga processer blir allt vanligare, och dessa funktioner kräver stöd för glesa adressutrymmen. Detta innebär helt enkelt att hål lämnas i adressutrymmet mellan olika objekt för att lämna utrymme för dynamisk tillväxt. Däremot bestod adressen 4.3BSD UNIX [34] av två sammanhängande områden, som beskrivs i bild 1. Detta arrangemang gjorde det möjligt för sidtabellerna att uppta minimalt utrymme, vilket var viktigt eftersom den ursprungliga virtuella minnesdesignen inte gjorde det möjligt att söka sidtabellerna. Översidor. Vissa strukturer måste kartläggas för virtuell åtkomst, men ändå är mycket stora. De många sidor tabellposter (PTEs) som krävs för att kartlägga dem översvämma TLB och tränga ut andra poster. System har tagit itu med detta problem med "block" eller "supersidor"-multipelar av sidstorlek kartlagt av en enda TLB-post. Till exempel tillåter Pentium och MIPS R4000 kartläggningar för supersidor att vistas i TLB tillsammans med normala kartläggningar, och PowerPC definierar ett block TLB som ska nås parallellt med det normala TLB. Flera studier har visat betydande resultatvinster för att minska antalet TLB-poster för att täcka den nuvarande arbetsmängden [33,47,49]. Direkt minnesåtkomst. Direkt minnesåtkomst (DMA) möjliggör asynkron kopiering av data från I/O-enheter direkt till huvudminnet. Det är svårt att implementera med virtuella cacheminnen, eftersom I/O-utrymmet vanligtvis är fysiskt kartlagt. U 0-kontrollen har ingen tillgång till de virtuella fysiska kartläggningarna, och kan därför inte avgöra när en transaktion först ska ogiltigförklara data i processorns cache. En enkel lösning utför DMA-överföringar endast till ofångat fysiskt minne, men detta kan minska prestandan genom att kräva att processorn går till huvudminnet för ofta. Sparse adress utrymmen. Dynamiskt laddad delad 157 Bakgrund och tidigare arbete
Jacob och Mudge REF föreslog en programvara hanterad sekundär cache där programvaruhanterare utför virtuell adressöversättning på cache missar.
Software-managed address translation
{'venue': 'Proceedings Third International Symposium on High-Performance Computer Architecture', 'journal': 'Proceedings Third International Symposium on High-Performance Computer Architecture', 'mag_field_of_study': ['Computer Science']}