MapProcessor.tiogaWrittenby:Sindhu,November23,19842:18:11pmPSTLastEditedby:Sindhu,June22,19855:24:24pmPDTTHEDRAGONMAPPROCESSORTheDragonMapProcessorDesignDocumentReleaseas[Indigo]Documentation>MapProcessor.tioga,.presscCopyright1984XeroxCorporation.Allrightsreserved.Abstract:ThismemodescribestheDragonMapProcessor,thedevicethatmapsvirtualaddressestorealandprovidesper-pagememoryprotectioninDragon.TheMapProcessor'smainfeaturesarefastresponsetomappingrequests;theuseofasmall,fixedfractionofmainmemoryformapping;thesupportofmultipleaddressspaceswithsharing;andanorganizationinwhichbothfunctionandperformancecanbeenhancedrelativelyeasilyafterinitialimplementation.XEROXXeroxCorporationPaloAltoResearchCenter3333CoyoteHillRoadPaloAlto,California94304ForInternalXeroxUseOnlypï_:î gï]“î gîmîÁîÅî)î!fî$¬î)•î+ßï[ëî gîƒîÊîî!îWî ”î#Úî(Ãî+ qïYpî grî NïYpïYpî5qïYpîrrî‘ïYpïYpîeqïYpîprîÆïYpïYpî™qïYpîÅrî—ïYpïYpîksïN±î gîîgî"½tïI»î gî uïDÅî gîêvïDÅî'ð1î7lwï?Ïî guï?ÏîVî¾î£î î!Pî# î&Xxï<€î gvï<€î*îYî¼î"fî$äî*î-R î4­î7+î;Ïî>»îB¥ï:Ùî gîàî îdî»î# î)Óî/á î7Zî9qî@lîCÎï91î g îkîöî›î î"àî)7î*çî0æî7<î9²îî?RîCvï7Šî gî»îfîëîvî¥î%î'tî,Èî.sî3èî9hî>YîAeï5ãî gî[î} îÿî³î î#uî)@î,4 î4íî7Õî9÷î@á ï4;î gî‰îúîåyïÜî gvïÜî,Aî0„ ï5î,Aî/�î2«î9Lï�î,Aî/Þî4èî7rïæî,Aî/�î3 î9»tï Iî gî~îîÂî$Tÿ TVm$dTHEDRAGONMAPPROCESSOR2Contents1.Introduction 2.TheAddressingArchitecture3.SystemOrganization4.SystemFunctions5.TheMapCache6.TheMapCacheController7.TheMapTable8.MiscellaneousIssuesAppendixA.SizeofBypassAreaAppendixB.LayoutofIOAddressSpaceAppendixC.FormatofMapEntriesAppendixD.NotationDRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉzï^õî g{ï[§î)îµ ïXXî)îµîŽ î} ïU î)îµî} ïQ»î)îµî}ïNlî)îµîŽîÔïKî)îµîŽîÔî ïGÏî)îµîŽîÔïD€î)îµ îµïA1î)î0îÿîî±î Mï=ãî)î0îÿî±î^î‡î$§ï:”î)î0îÿîÝîŠî Ðï7Eî)î0î rïîGîñî$lî%ðî(Äî/;î3¶î6^ÿ@TVm$ËTHEDRAGONMAPPROCESSOR3 1.IntroductionTheDragonMapProcessorisasinglelogicaldevicethatimplementsthemappingfromvirtualaddressestorealandprovidesper-pagememoryprotection.Itsmainfeaturesare:fastresponsetomappingrequestsontheaverage(300ns);theuseofamaptablethatconsumesasmall(<1%),fixedfractionofrealmemory;thesupportofmultiplevirtualaddressspacesthatarepermittedtosharememory;andanorganizationinwhichbothfunctionandperformancecanbeenhancedrelativelyeasilyafterhardwareimplementation.Inspiteofthesefeaturesthedesignissimple.ThisdocumentbeginswiththeaddressingarchitecturesupportedbytheMapProcessor.ItthendescribestheMapProcessor'sorganizationintermsofitsthreecomponents:theMapCache,whichisacustomVLSIchip;theMapCacheController,whosefunctionalityisimplementedbyordinaryDragonprocessors;andthemainmemoryMapTable,whichstoresthevirtualtophysicalmappinginformation.ThefollowingsectionprovidesthefunctionalspecificationsfortheMapProcessor;italsoindicateshoweachfunctionisinvokedandwhereitisimplemented.Thenextthreesectionsdescribeeachofthecomponentsingreaterdetail,whilethelastsectionaddressesdesignissuesthatdonotfitelsewhere.ImportantinformationiscollectedtogetherintheAppendices. 2.TheAddressingArchitectureTheMapProcessor'saddressingarchitecturesupportsmultipleaddressspaces,withfixedsizepagesbeingtheunitofmappingandprotection.ThevirtualaddressesissuedbyeachDragonprocessoraremappedaccordingtooneofanumberofindependentaddressingcontexts,oraddressspaces.Foragivenvirtualaddressthemappingtoarealaddresscanbethoughtofasatwostepprocess,thefirststepbeingtodeterminetheaddressspaceinwhichthevirtualaddressmustbeinterpreted,andthesecondbeingtoperformtheactualtranslation.Beforewedescribeeachofthesestepsitisconvenienttodefinebasictermsandintroducesomeshorthandnotation.Apageisacontiguouschunkofmemory2s32-bitwordslong,alignedona2swordboundary;sisfixedat10.Inourdescriptionvirtualaddresseswillbedenotedbyva,realaddressesbyra,virtualpagesbyvp,realpagesbyrp,andoffsetsintopagesbyoffset.Bothvaandraare32-bitquantities,bothvpandrpare(32s)-bitquantities,andoffsetisans-bitquantity.Ifvpandoffsetarethevirtualpageandoffsetcorrespondingtova,wewillwriteva=vp|offset;similarly,wewillwritera=rp|offsetforrealaddresses.Fourflagsbitsarekeptforeachpage;thesewillbedenotedbyflags.Faultsassociatedwithaddressmappingwillbecommunicatedviaathree-bitorderfield.Thesizesofthesequantitiesareconstrainedinthearchitecturebytherelation||rp||+||flags||+||order||=32,where||x||isshorthandforilog2xj,thenumberofbitsneededtorepresentx.Addressspaceswillbedenotedbytheiraddressspaceid,aid,aquantityconstrainedby||aid||+||vp||=32.Processorswillbeidentifiedbytheirprocessornumber,pn.Figure1illustratesaddressmappingforprocesorpn.Recallthatthefirststepinvolvesdeterminingwhataddressspacetousefortranslatingagivenva.Forthisstepthe32-bitaddressspaceofeachprocessorisdividedupintotwonon-overlappingregions:a228wordsharedregionatthelowendoftheaddressspace,anda232-228wordswitchedregioncomprisingtherest.Ifvaliesinthesharedregiontheaddressspaceusedformappingisspace0,otherwiseitistheonecurrentlyloadedontheprocessor.Atmostoneaddressspacecanbeloadedonagivenprocessoratatime,butthesamespacemaybepresentsimultaneouslyondifferentprocessors.Theoveralleffectofthefirststepthereforeistomap(pn,va<31:28>)ontoaid.ThesecondstepDRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉzï^õî gîC qï[¦î)î%îIî³î õî"…î#Óî'ãî,aî0Éî3¼ î;Iî=ÍîC­ïYÿî gîÔîúî»î„îNî#ðî)³î/3 î6Áî8Ðî<_îAžîD~ïXWî gîîÍî’îôî!î#lî(uî+�î.Xî0Áî3?î5î64î9Xî<Éî?¡îEêïV°î gî îÄîÛîaî€îAî"î'ïî*Wî/kî1,î6®î;î@îDFïU î gîÒî5îúî°î ®î#}î%„ î-rî/7î3]î6°îî§îòî î"d î)$ î0¢î7î9 î;iî>« îEœïM—î gîÄîâîxîö î#' î+4î-î1î3 î5î8Û îA7îCÍïKðî gîRîÄî”î#îEî"^î&Lî)î,»î1N î8­î=? îE¨ïJIî g îÕîíî—î!³ î(àî+³î./î1Èî7Rî:´î? îC3ïH¡î gîî›î‡îî! î)êî,ÿî3Oî8(î=õî@‘ ïFúî g îÝî)î—îì î#’î$÷î'Òî-‘î0¤î3ãî9lî:æî@6îBüïESî gî ÕîX îµî¥îÍî"nî'¦î-"î0kî2;î4² î<îBðïC«î gî,î�î.îÛî î$`î(Rî+1î-Hî/Îî1® î8öî?Š ïBî gî Óî�îóî¡î zï;fî gîCî® î qï8î)îðî% î î"Á î*2pî/±ï8ï8î0Çî4Üî9ˆqî='ï8ï8î=òî@üîDipï6pî gqï6pî(îîlî]î"î ëî#¯ î+2î.î2~î8žî<Îî>×îBï4Èî gîªî.î«î!î"ùî%Õî'¾î)î.sî0\ î8{ î?oîEPï3!î gîUîrî!îOîî"fî'Sî)·î/vî1)î2Vî5î9ÿî<Žî>ƒîC©îEfï1zî gî wî îÕîçî.îìî·î#hî$ýî+fî-¬î2}î6î7®î;£î=éîB*ï/Òî gîÏîÀ î*îâîAî"Óî&žî(Lî-¤î0î4 ï-Wî)îžîÊî3îjî (î#·î'$î(€î)ñ î0òî2¥î6äî:\î>,î@éï+°î gîèîMîrpîìï+°ï+°îœqï+°î! î"cî#z î*Xî.uî0î5v|ï,=î6&qï+°î7î:çî>áîB@ï*î gîhîŒ|ï*–î=qï*î&î©pîRï*qï*îVî¼î!4î"Èî%~î'Hî)Î î0Úî50î;>î=äî?ÐîEpï(aî gqî ²ï(aï(aî îhî�pîšï(aï(aîqîÏï(aï(aî½î )î$pî&ï(aï(aî&­qî']ï(aï(aî(Kî+î.ïpî0üï(aï(aî1�qî21ï(aï(aî3î5çî:Hî=2îApîCï(aï(aîCËqîF8ï(aï&ºî gpîÕï&ºï&ºîpqï&ºî¶pîï&ºï&ºîqï&ºîJî¯î· î#mpî&»ï&ºï&ºî'Vqï&ºî(œpî+eï&ºï&ºî+éqï&ºî-/î/” î6u î=*pî?óï&ºï&ºî@¤qï&ºîC¦îE#pï%î gqî ëï%ï%î eî}î¾pî<ï%ï%îÖqï%îpî¹ï%ï%îiqï%îVî!¤î#ÿî(Tî+–î.Iî2 î;pî<ªï%ï%î=Eqî=öï%ï%î>Íî@ðîC–pï#kî gqî ²ï#kpï#kîqî^ï#kpï#kî¶qîÔï#kï#kîÇ î­îÊîjpî"Ýï#kï#kî#bqî$ï#kpï#kî%sqî&¨ï#kpï#kî'qï#kî*—î,Éî/u î6Oî9·î<çî?~îAÆîD×ï!Äî gîÏîÇî‡îjî’î"pî$Kï!Äï!Äî$¹qî'ï!Äï!Äî(Ðî-6 î3Úî7,îaîC_ï&î gpîIï&ï&îùqî ï&ï&îÅîÊî îDî pî Ìï&ï&î!|qî"�ï&ï&î"èpî%Qï&ï&î%ìqî&�ï&ï&î&õî+& î1£î4*î5ö î<î=ÞîAïî gpîìïïîœqîZïïïî)îÄî$ îzî �î&wî(ßpî.šïïî/Jqî0 ïïî1Àî6%î9î;ªî>­îA½ï\î g î îZî3îØî!uî#Úî& î,¯î-Èpî1lï\ï\î2qî2·ï\ï\î3öî6�î9!î;ôî>CîB*ï®î gî î°îÏîÐî)î! î# î%Òî(kî2¥î7Ôî8ërï;î9›qï®î;'pî>žï®ï®î?"qï®îBÐïÿî gîîeî îÃîîâîÏî"ßî%šî&ÇrïŒî'wqïÿî(‘rïŒî)»qïÿî+]pî.èïÿïÿî/mqïÿî4Rî8˜ î?¬îBîE’pïXî gqïXîLîÖîšîîŠîãî Yî%Xî)#î,uî.Èî4™î6î9åî;ˆîAÇîC3îD´ï°î gî.î'î¾îàî[ î%�î'˜î+î-Øî2Ýî6®î9Uî;aî?øîBîC`ï î gî„î&îZîáîlîÕî!\î%î()î*$î/ î8eî:uî@% ï bî gî5î°îqî îuîCî!î&úî(\î*î-pî-‰ï bï bî.:qî.øï bï bpî/Ëï bï bî0eqî1ï bï bî1Æî6¥pî9Ëï bï bî:{qî;�ï bï bî<Ûî?¨îD0rïîGîñî$lî%ðî(Äî/;î3¶î6^ åTVm$JTHEDRAGONMAPPROCESSOR4translatesvainthecontextoftheaidgivenbythefirststep.Thistranslationproducesra=rp|offset,whererpisobtainedbylookinguptheentrycorrespondingtoaid|vpintheMapTable.Thearchitecturealsoprovidesamechanismtobypasstheabovemapping.BypassingisneededtoprovideawayforprocessorstoaccesstheMapTableandmap-faulthandlingcodewithoutgettingmapfaultsintheprocess;itisalsousefulinturningoffmappingaltogether.Bypassinggetsactivatedwheneveraprocessormakesareferencetoaportionofvirtualaddressspacecalledthemapbypassarea.Thisareaappearsatthesamelocationsinalladdressspaces,andisdefinedbythree(32s)-bitquantitiesBypassMask,BypassPattern,andBypassBase.Themaskandpatterndeterminethebypassarea'slocationandsizeinvirtualmemoryasfollows:avaisdefinedtobeinthebypassareaifthebitsofvaunderBypassMaskmatchthecorrespondingbitsofBypassPattern.BypassBasedeterminesthestartinglocationoftheareainrealmemory.Therealaddressproducedbybypassmappingisra=rp|offset,whererp=(BypassBase.BypassMask)V(vp.~BypassMask).Themask,patternandbasecanallbemodified.Thisarchitectureisdesignedtofacilitatesharingbetweenaddressspaces.Thesharedareaprovidesarestrictedformofsharingwhereallofthevp'ssharingaparticularrpmustbeidentical;thissharingisalsoall-or-nothinginthatapageissharedbyallspacesifitissharedbyany.Itisexpectedthatallbutafewcasesofsharingwillbecoveredbythisrestrictedmechanism.Thearchitecturealsopermitsmoregeneralsharinginwhichthevp'ssharingaparticularrpareunrestrictedandwhereeachpagemaybesharedbyanysubsetofthespaces.3.SystemOrganizationTheMapProcessorconsistsofthreecomponents(Figure2):acustomVLSIMapCache,aMapCacheController,andaMapTablekeptinmainmemory.TheMapCacheissimplyaperformanceacceleratorthatsitsbetweenprocessorcachesandtheMapTable.Itcontainsaround1200mappingentriesandallowsmappingrequeststhathittobeservicedinthreecycles,or300ns.Processorcachesthemselveskeepalimitednumberofentries(~50),sotheMapCacheisreallyasecondlevelcache.Whenamapmissoccursinaprocessorcache,thecachefiresoffamappingrequesttotheMapCache.TheMapCachereturnstheentryifitispresent,andsignalsamapfaultifitisnot.Thisfaultisthenhandledbytheprocessorattatchedtothecachethatgotthemapmiss.AsmalltableintheMapCacheisusedtodeterminetheaddressspaceinwhichthereferencesforeachprocesssorshouldbemapped(thefirststepofthemappingprocessdescribedinthelastsection).TheMapCachealsoimplementsanumberofotheroperations,includingonestoflushentries,tomanipulatethecontrolbitsforentriesinprocessorcaches,toswitchaddressspaces,andtocontrolthelocationandsizeofthemapbypassarea.AllcommunicationwiththeMapCacheoccursovertheM-Bus.TheMapCacheControllerisafictitiousdevicewhosefunctionalityisimplementedbyordinaryDragonprocessors.Asexplainedabove,whenevertheMapCachemisses,theprocessorwhosecachegotthemissfieldsthemapfault.ThisprocessorplaystheroleoftheCacheControllerinfetchingthemissingentryfromtheMapTableandshippingittotheMapCache.Inadditiontoservicingmisses,theControlleralsoimplementsacompletesetofoperationsformanipulatingtheMapTable.Thecodefortheseoperationsisavailabletoallprocessorsandcanbeexecutedbyanyoneofthem.ThissplitinfunctionalitybetweenMapCacheandControllerforcesustofreezeinhardwareonlythatportionofthedesignwhichisnecessaryforspeed,leavingtheremaindertobeimplementedbyordinaryDragoncode.Asaresult,enhancementsinbothfunctionandperformancecanbemaderelativelyeasily.Forexample,thestructureoftheMapTablecanbeleftcompletelyopensincethehardwarehasnoknowledgeofit.DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉqï_/î g pîÃï_/ï_/î^qï_/îåîæî™îÀî Ìpî#~ï_/ï_/î$/qï_/î&î*!î,oî/"î2Mî6²î: îA6pï]ˆî gqî œï]ˆpï]ˆîüqî1ï]ˆpï]ˆî‰qî§ï]ˆï]ˆî‘pî¶ï]ˆï]ˆî:qï]ˆî|îöî!´î#½î(¾î*Þî-Kî0ì î9ðpî;¬ï]ˆï]ˆî<\qî=pï]ˆpï]ˆî=Èqï]ˆî?¥îA`îCÍï[àî gïYeî)îø îqî6î!¼î"Þî*î+®î0î2mî6grî<íïYeïYeî=¦îB îC%ïW¾î gî ¾îÅî²îöî¿ îî[î —î"|î%î(2î*\î/dî3øî6–î:žî>Dî@¾îC½îEïVî gî®îÉîöî<îŒîîîÝî¨î$H qïVî*gî0Þî3·î9‹î?ËîAïToî gî´îòîîÇîîøî!Æî&4î+3î.ýî3pî5|ïToïToî6’î8Œî<äqî?cïToïToî@ìîDïRÈî gîkîüîUîËîî &î"î&ñî+|î.,î/‘î4Šî6~î: î@È pïQ!î g qî¹ïQ!ïQ!pî‰ïQ!ïQ!î| qîàïQ!ïQ!î°pî ZïQ!ïQ!î!Mqî'ïQ!ïQ!î(eî+0î.·î1aî6î<ˆî>ÛîC>ïOyî gî²î}î=îÿînî"ïî$±î)ûpî+9ïOyïOyî+ÔqïOyî-î.œî3±î5sî7xî9:î;®î@2îC?îD´ïMÒî gîZpîeïMÒïMÒîqïMÒî†pîÚïMÒïMÒîÍqïMÒî î$xî') î0rî3epî5pïMÒïMÒî6c qî=ÈïMÒïMÒpî?ËïMÒïMÒî@¾qïL+î g îžî-îGî ®î"˜î%'î(Pî*/î-î3¿î6Çî9®î>ÈîEïJƒî gî»îYpî¨ïJƒïJƒî,qîÝïJƒpïJƒî=qîrïJƒpïJƒîÊqîèïJƒïJƒî§pî#¢ïJƒïJƒî$&qî$×ïJƒïJƒî&Ÿpî'ïJƒïJƒî( qî-ÝïJƒpïJƒî.4 qî5†ïJƒïJƒ}î6gïJƒqïJƒî8%pî8žïJƒïJƒî99qî:BïJƒpïJƒî;J qîBœïJƒïJƒîCîD<ïHÜî gîRîîÈîãînî^î!OïFaî)îK îÖîJî!î"Æ î(^î-:î2²î7¥î<Ìî?¬îDïDºî gî5îž îÜî‚îzî$Œî(ãî+î- pî/©ïDºïDºî0Dqî0ôïDºïDºî1Lî2”î7§î9 pî?„ïDºïDºî@qïDºîA|îE#ïCî g î|î)î î€îY î'î(Óî+­î,ãî05î1­î6î8&î:"î>hî?ÔîA6îB®ïAkî gîŽîaîîšî‚î{î –î#Bî$—î'cî+î,åî1ãî4ºî6Öî<"î>IîA ï?Äî g îÒîØ î‡î"‚î'¥î+fî0gî5iî7Eî;�pî>ï?Äï?Äî>©qî?Zï?Äï?Äî?²î@éîEêï>î g pî�ï>ï>î!qï>îVî© î5î íî%î(6î+|î.€î0qî4×î6Òî9sî=¢î?[îAºzï7î gîCî qï40î)îîKîkî mî"(î%³ î-aî2Mî4vî5¢î:bî>îAaîEêï2‰î gîÁî îîÞîî"vî&kî)™î+[î.ìî5]î8Iî;¤î?çîAfîEêï0âî g î¢ î¿îÅî![î'î-Lî1Óî4Âî7Yî:×î@îA°ï/:î gîîNîûî\î!î%$î*Ñî0î2Ûî4êî6‰î8lî=ªî?JîBÄï-“î gîMîîôî5î§ î%ºî)-î*yî/Nî4�î6xî; î?eîALîCÍï+ìî gîŸîîèîî¶îî#Àî'âî)î,9î/\î3ªî5bî6•î<²î@ßîCHï*Dî gîiî�î¬î[î#îÅî!î$Qî)Cî,î/Hî3jî8î:cî=ëî??î@ˆîAèï(�î gîî�î¶îÐî îlîÂî-î"}î%–î(Òî*=î-cî2°î4«î7 î=îCîD´ï&öî gî4îîbîÂîÝîÔî bî$î'iî)î+xî.¿î2ïî4[î7˜î9Gî?ÊîB*ï%Nî gîÿî�î�îÄ î)î Iî#] î)Øî.7î0 î5<î7øî:³î=zî?îAXï#§î gînîÌî­î?îòî%Jî(Uî+Ïî00î30 î:Íî<)îA‰îCuï"î g îdîoî–î;î!¥î&dî( î/(î1î6(î8Àî:ôî?\îAï Xî gî)îñîEîHî ôî#Åî%�î*Yî,Óî2#î4ôî7¹î9Œî<î?9îCÃï±î gîº îmî‡îçî!-î%\î)¡î,»î/ï6î)î7îµî î óî"•î#ö î)Òî.Mî2² î:íî<� îEï�î gîàîÊ îî î&8î*}î0œî2æî6î:0î>¶îAïçî gîÈîÈîZîíî:î!#î#µî'î+‚î.Ðî5î8Óî;fî>fî@RîBåï@î g îî®î÷îRî!Bî$Ñî(3î*Žî-Ðî1¬î4_î9õî;Gî<ñî?LîBŽï™î gî=î²îhî)îÌî"2 î(Ûî+¯ î3î4Pî:>î" îD×ïñî g îÙîOî«î“î"�î%Ýî(0î+Ï î2“î4î9åî;©î=¯ îD]ïJî gî,îWîNî„î^îDî!7î&î)eî,£î.‹ î6ÊîÆîD×ïûî gîøî îÂî±î!·î#ÿ î,§î.úî4àî:7î?îApîBðï Tî g îmî5îŒî î"ñ î+î-´î/¾î3˜ î9¤î>~îACï ­î gî²îZîÿîJî|îHî!¾î#šî%û î,âî0@î3žî5éî;Ýî>>î@/ï î gî rïîGîñî$lî%ðî(Äî/;î3¶î6^ pTVm$THEDRAGONMAPPROCESSOR5ThefinalcomponentistheMapTable.Itservesastherepositoryformappinginformationforalladdressspaces,mapping(aid,vp)torp.Foreachrealpagethetablealsomaintainsfourflagbitsusedforpagingandmemoryprotection;inhightolowordertheseare:shared,wtEnable,dirty,andspare.NotethatthisorderiscompatiblewithED'sorderwhichis:spare,wtEnable,dirty,andreferenced.TheMapTablestoresinformationonlyaboutpagescurrentlyinmainmemory,andisstructuredasahashtableindexedby(aid,vp).Thisallowsthetabletofitinasmall,fixedfractionofmainmemory(<1%),incontrastwithdirectmapschemes.Theseschemesconsumetablespaceproportionaltoallofvirtualmemoryortothefractionbeingusedfrequently,dependingonhowtheyareimplemented.Assumingthatthehashfunctionspreadsthingsproperly,theaveragetimetoaccessthetablewillbequitegood.Theworstcasetime,however,dependsonhowcollisionsareresolved.Initially,linearchainingwith"movetofrontonaccess"willbeused;ifthisturnsouttobeaperformanceproblemtheschemewillbemodifiedtouseatreestructure.DragonprocessorsaccesstheMapTabledirectlyviathemapbypassarea.4.SystemFunctionsThissectiondescribesthefunctionsimplementedbytheMapProcessor.MapCachefunctionsaretakenupfirst,followedbyCacheControllerfunctions.Thedescriptionforeachfunctionincludesitsspecification,themethodusedforinvokingit,andmiscellaneousinformationrelevantlargelyonlytotheimplementor.4.1MapCacheFunctionsTwooftheMapCachefunctionsareinvokedviathededicatedM-BustransactionsReadMapSetRefandReadMapSetRefSetDirty,whiletheremainderareinvokedbyIOReadFlowandIOWriteFlow.Fortheformertwotheaddressportionofthetransactionisrestrictedtobeintherange[0..225).Forthelattertwoitisrestrictedtobeintherange[0..3*225).ReadMapSetRef(pn:ProcessorNumber,vp:VirtualPage)Returns(rp:RealPage,order:Order,flags:Flags)ReadMapSetRefreturnstherealpagerpandflagscorrespondingtoagivenvirtualpagevp;themappingisperformedinthecontextoftheaddressspacecurrentlyloadedonprocessorpn,sayaid.Ifthereisnoentryfor(aid,vp)intheMapCacheamapfaultissignalledbysettingtheorderbitstoindicatepagefault.ReadMapSetRefisusedbyprocessorcacheswhentheygetamapmisswhileservicingaprocessorread,soitsspeedisimportantforgoodsystemperformance.Invocation:ReadMapSetRef(MAdrs).MAdrs[0..6]=0;MAdrs[7..28]=vp;andMAdrs[29..31]=xxx;pnisderivedfromthenumberofthecurrentM-Busmaster.Results:returnedviaDone(MAdrs,MData).MAdrs[0..21]=rp;MAdrs[22..24]=xxx;MAdrs[25:27]=order;MAdrs[28:31]=flags;MData[0..21]=rp;MData[22..24]=xxx;MData[25:27]=undefined;MData[28:31]=flags;Ifvpliesinthemapbypassareathevaluesforflagsare:shared=FALSE,wtEnable=TRUE,dirty=TRUE,andspare=FALSE.ImplementationNotes:NotethatMAdrs[29..31]forReadMapSetRefisnotinterpretedbutisturnedaroundasMAdrs[22..24]andMData[22..24]forDone.ReadMapSetRefSetDirty(pn:ProcessorNumber,vp:VirtualPage)Returns(rp:RealPage,order:Order,flags:Flags)DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉqï_/î)îöîî9îšîïî#+î'Óî)@î-Bî.åî1: î7¦î9Ùî?Š ï]ˆî gî£î“î|î îÇpî Aï]ˆï]ˆî ñqî"ï]ˆï]ˆpî"àï]ˆï]ˆî#{qî$,ï]ˆï]ˆî%(pî&Öï]ˆï]ˆî'Zqî( ï]ˆï]ˆî)iî,î/Dî1úî5?î7žî;î=ÑîDï[àî gîî„î¢îÂîî¹î# î)òî+‚î.Šî0î2žî65î9 pî­ïZ9ïZ9î?_|îAŒïZ9ïZ9îAörîFJïZ9qïX’î gî-îbî1î î!xî$€î(Pî, î1Õî3qî6Ýî<�î?6î@� ïVêî gî0îtîËîNî î·pî0ïVêïVêîàqîôïVêïVêpî ëïVêïVêî!†qî"6ïVêïVêî"°î$Eî'zî+Âî.=î1Àî3‰î5sî7<î8�î<’î@*îE[ïUCî gîÝîCîêîòî™î ¿î#Óî'­î*Áî0òî4íî:Iî?ýîC_ïSœî g îxîIî\î8î¶î$Fî&-î'þî*�î/ºî3¨î7 î>&îEïQôî gîQîFî îwî#¼î&pî(µî+Öî16î6î:î?ÐîBïPMî gî®îî®î0îºî‡î šî$Fî(Øî+Òî/¨î2¹î6Xî?î@ÿ ïKWî gîg îþî îkî!²î%’î*ˆî,Åpî/%ïKWïKWî0;î2 î6cqî8ãïKWïKWzïD¹î gîCîqïAiî)îŽîwîªî Vî&  î/=î1„î40î7 î?SîBåï?Âî gîrîÓîŸî¿îüî#­î%¶î)ñ î0¡ î7•î:z îA™îCãï>î gîÁîîÀ î Ûî#î(î+#î-@î2Ðî4^î6ö î?Š ïÙ ï2†î gî îyî&î†î"î$Åî'%î,î0ðî2ªî5 î<î=t îCtîE#ï0Þî gîîuî?rï1kî²qï0ÞîÌî¦îQî°î"Eî$ñî&Gî'² î-±î/_î1Pî2þî5^î9(rï1kî<üqï0Þî>~ï-Žî g pî:ï-Žï-Žî³îî$Aî&Š î.� î5Èî<4î@6ï+Zî gîqï( î) î�î)î }î#(pî&cï( ï( î&çqï( î(pî*¼ï( ï( î++qï( î-ì î6×î8zî9˜î=AîA�pîDËï( ï( îEfqîFï( ï&cî gîÇîƒîðîµîcî Äî%™î'Rî)³î.�î2Sî81î<­î>´pîDÈï&cï&cîEyqîF7ï&cï$¼î gpîÑï$¼ï$¼î�qî•ï$¼ï$¼î î™î-î¤î¶îUî žpî!ï$¼ï$¼î!Èqî"Ûï$¼ï$¼pî#Ãï$¼ï$¼î$^qî%ï$¼ï$¼î&î'Ñî*<î-�î1Èî2ýî6"î9jî:áî@§îB®ï#î gî»îdîùîœî½îøî"ø î-Qî.±î1áî3Ñî9Ùî>îAÇîDËï!mî gî gîWîFîÑîaîaî#Jî&’î(,î)Üî-”î.Õî5 î7î:gî>¸ î)ïˆþ„î)ïñî­ïˆþÇî­ïñîsïˆþ°îsïñî$ïˆþ»î$ïñîßïˆþ›îßïñîzïˆþ¥îzïñîïˆþoîïñîŽïˆþcîŽïñîñïˆþ»îñïñî­ïˆþÇî­ïñïñïñîsîtî)Ù î3Åî6u pïñîAqîB\ïñïñîD]ïJî g î°pî¿ïJïJîpqïJî²îî"î%zî'Úî-î.¿î1î5èî:nî)ïeþ î)ïÎî1ïeþ¥î1ïÎî×ïeþ„î×ïÎî[ïeþÇî[ïÎî"ïeþcî"ïÎî…ïeþoî…ïÎîôïeþ„îôïÎïÎïÎîxîÞîàî… î&·î,£ î6£î9T îDï'î g pï'îGqîKï'ï'î pï'î&ôqî)«ï'ï'î+t î5Úî8ï îDï€î g ï€î� î¦ pï€î'Ìqî*ƒï€ï€î+’pî-&ï€ï€î-Áqï€î/î1Œî3Lî5½î8éî=kî@uîBæïØî gî¤îßpî¬ïØïØî0qîmïØrïØî8qîÖïØïØpî²ïØïØî™qî$ïØrïØî%åqî)ïØïØpî)íïØïØî*�qî,šïØrïØî.eqî1�ïØïØî2mpî5$ïØïØî5©qî8)ïØrïØî9óqî=‘ïØïØî)ïóþ„î)ï]î­ïóþ*î­ï]î×ïóþÇî×ï]îžïóþcîžï]îïóþ¥îï]î¦ïóþ*î¦ï]îÐïóþ¥îÐï]îuïóþÇîuï]î<ïóþoî<ï]î«ïóþ¥î«ï]îPïóþoîPï]î¿ïóþcî¿ï]î"ïóþ»î"ï]îÝïóþÇîÝï]î¤ïóþŠî.ïóþ#î.ï]îPïóþ»îPï]î ïóþoî ï]îzïóþ¥îzï]î ïóþ„î ï]ï]ï]î¤î§î!#î#ö î,äî/' î9�î;î={ îD“ïµî gî ÓîDîî° î!™î$P î-:î/w~ïfî gpîOïfïfîÈî5î)Vî+Ÿ î3¥ î:ÝîAIï 1î gî«î_rïîGîñî$lî%ðî(Äî/;î3¶î6^ÿ TVm$GTHEDRAGONMAPPROCESSOR6ReadMapSetRefSetDirtycheckswhetherwritesarepermittedforvirtualpagevpintheaddressspacecurrentlyloadedonprocessorpnandreturnsthe(rp,flags)iftheyare.ThisfunctionisinvokedbyacachewhenitsprocessortriestowriteintoanentrywhosewtEnablebitisnotset.IfboththedirtyandthewtEnablebitsforthisentryaresetintheMapCache,theinvokingcacheispermittedtodothewrite,otherwiseawriteprotectfaultissignaled.Iftheentryisnotpresentinthefirstplace,amapfaultissignalled.Invocation:ReadMapSetRefSetDirty(MAdrs).MAdrs[0..6]=0;MAdrs[7..28]=vp;andMAdrs[29..31]=xxx;pnisderivedfromthenumberofthecurrentM-Busmaster.Results:returnedviaDone(MAdrs,MData).MAdrs[0..21]=rp;MAdrs[22..24]=xxx;MAdrs[25:27]=order;MAdrs[28:31]=flags;MData[0..21]=rp;MData[22..24]=xxx;MData[25:27]=undefined;MData[28:31]=flags;Ifvpliesinthemapbypassareathevaluesforflagsare:shared=FALSE,wtEnable=TRUE,dirty=TRUE,andspare=FALSE.ImplementationNotes:NotethatMAdrs[29..31]forReadMapSetRefisnotinterpretedbutisturnedaroundasMAdrs[22..24]andMData[22..24]forDone.ReadEntry(pn:ProcessorNumber,vp:VirtualPage)Returns(rp:RealPage,order:Order,flags:Flags)Letaidbetheaddressspacecurrentlyloadedonprocessorpn.ReadEntryreturnstherpandflagscorrespondingto(aid,vp)intheMapCache;iftheentryisnotinthecacheamapfaultissignaled.ThisoperationmaybeusedtoverifythecontentsoftheMapCache.Invocation:IOReadFlow(MAdrs).MAdrs[0..6]=0;MAdrs[7..28]=vp;andMAdrs[29..31]=xxx;pnisderivedfromthenumberofthecurrentM-Busmaster.Results:returnedviaDone(MAdrs,MData):MAdrs[0..24]=undefined;MAdrs[25..27]=noop;MAdrs[28..31]=undefined;MData[0..21]=rp;MData[22..24]=xxx;MData[25:27]=noopifentryisincache,otherwisepagefault;MData[28:31]=flags.Ifvpliesinthemapbypassareathevaluesforflagsare:shared=FALSE,wtEnable=TRUE,dirty=TRUE,andspare=FALSE.ImplementationNotes:WriteEntry(pn:ProcessorNumber,vp:VirtualPage,rp:RealPage,flags:Flags)Letaidbetheaddressspacecurrentlyloadedonprocessorpn.WriteEntryputstheentry(aid,vp)_(rp,flags)intotheMapCache.ThisoperationisusedbytheCacheControllertoreturnanentrytotheMapCacheafteramiss.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=0;MAdrs[7..28]=vp;MAdrs[29..31]=xxx;MData[0..21]=rp;MData[22..24]=xxx;MData[25:27]=don'tcare;MData[28:31]=flags.ImplementationNotes:FlushEntry(aid:AddressSpaceId,vp:VirtualPage)FlushEntrycausestheentrycorrespondingto(aid,vp)toberemovedfromtheMapCache.Iftheentrywasnottheretobeginwith,theoperationhasnoeffect.Notethatthisoperationdoesnotdisturbany(aid,vp)entriesinprocessorcaches;anexplicitChangeFlagsmustbedonetoflushtheseout.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=1;MAdrs[7..28]=vp;MAdrs[29..31]=don'tcare;MData[0..21]=don'tcare;andMData[22..31]=aid.DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉqï_/î)îÇî#fî(íî-)î/µî6:î8±î=Dpî@Äï_/ï_/îA_qï_/îBÍîD´ï]ˆî gîîcînî î"Mpî(�ï]ˆï]ˆî)?qï]ˆî*°î-–î2wî5pî5~ï]ˆï]ˆî6qî6³ï]ˆï]ˆpî7¾ï]ˆï]ˆî8,qî:uï]ˆï]ˆî;¡î=0î@nîCúï[àî gîöîvîÌîÜîîûî#Åî%´î+Üî.õî0¸î4Kî77î9<î<åpîA(ï[àï[àîBqïZ9î gî‘î îŠîœî*îspîÞïZ9ïZ9î�qïZ9î î"àpî%LïZ9ïZ9î&4qïZ9î+Eî-óî0<î2êî6‹î8êî;î<Îî?:îB�ïX’î gîÛîžîîÿî _î""î$<î&°î*šî0Øî2î5¨î:eî=¶î?6îE’ïVêî gîÆîZîÆî;îî½îî!õî%áî' î*%î-aî.Í î)ïTþ„î)ïToî­ïTþÇî­ïToîsïTþ°îsïToî$ïTþ»î$ïToîßïTþ›îßïToîzïTþ¥îzïToîïTþoîïToîŽïTþcîŽïToîñïTþ»îñïToî­ïTþÇî­ïToïToïToîsîî-¯ î8` pîAuïToïToîBqîBÀïToïToîD]ïRÈî g î°pî¿ïRÈïRÈîpqïRÈî²îî"î%zî'Úî-î.¿î1î5èî:nî)ïOãþ î)ïPLî1ïOãþ¥î1ïPLî×ïOãþ„î×ïPLî[ïOãþÇî[ïPLî"ïOãþcî"ïPLî…ïOãþoî…ïPLîôïOãþ„îôïPLïPLïPLîxîÞîàî… î&·î,£ î6£î9T îDïN¥î g pïN¥îGqîKïN¥ïN¥î pïN¥î&ôqî)«ïN¥ïN¥î+t î5Úî8ï îDïLþî g ïLþî� î¦ pïLþî'Ìqî*ƒïLþïLþî+’pî-&ïLþïLþî-ÁqïLþî/î1Œî3Lî5½î8éî=kî@uîBæïKVî gî¤îßpî¬ïKVïKVî0qîmïKVrïKVî8qîÖïKVïKVpî²ïKVïKVî™qî$ïKVrïKVî%åqî)ïKVïKVpî)íïKVïKVî*�qî,šïKVrïKVî.eqî1�ïKVïKVî2mpî5$ïKVïKVî5©qî8)ïKVrïKVî9óqî=‘ïKVïKVî)ïHrþ„î)ïHÛî­ïHrþ*î­ïHÛî×ïHrþÇî×ïHÛîžïHrþcîžïHÛîïHrþ¥îïHÛî¦ïHrþ*î¦ïHÛîÐïHrþ¥îÐïHÛîuïHrþÇîuïHÛî<ïHrþoî<ïHÛî«ïHrþ¥î«ïHÛîPïHrþoîPïHÛî¿ïHrþcî¿ïHÛî"ïHrþ»î"ïHÛîÝïHrþÇîÝïHÛî¤ïHrþ}î!ïHrþ#î!ïHÛîDïHrþ»îDïHÛîÿïHrþoîÿïHÛînïHrþ¥înïHÛîïHrþ„îïHÛïHÛïHÛî˜î î!zî$A î-#î/Y î9¶î;î=ˆ îD“ïG4î gî ÓîDîî° î!™î$P î-:î/w~ïCåî gpî¼ïCåïCåî6î¢î Äî# î+ î2Kî8·î<¸î@üïA°î gqï>aî)pî½ï>aï>aînqï>aîîî”î’î!\î'Nî+Þî-ùpî4!ï>aï>aî4Òqî5�ï>aï>aî7î>îBçpîE[ï>aï>aîEßqï<ºî gpî1ï<ºï<ºî qï<ºî î‰îJpîÃï<ºï<ºîsqî‡ï<ºï<ºpî vï<ºï<ºî!qî!Áï<ºï<ºî"Òî$“î'î*^î/î0Œî2ÿî6¥î8$î:«îÞîB½îCùï;î gî£îîBî\î †î#Šî%zî(¶î*eî.Pî0°î6î7Øî:7î=~î)ï8.þ„î)ï8—î­ï8.þÇî­ï8—îsï8.þ°îsï8—î$ï8.þ»î$ï8—îßï8.þ›îßï8—îzï8.þ¥îzï8—îï8.þoîï8—îŽï8.þcîŽï8—îñï8.þ»îñï8—î­ï8.þÇî­ï8—ï8—ï8—îsîpî$¥ î.· pî7Ìï8—ï8—î8gqî9ï8—ï8—î:î<Ê ï6ðî gpîvï6ðï6ðî&qï6ðîiîÕîÊî1î�î"¼î$uî&Õî+žî0%î)ï4 þ î)ï4uî1ï4 þ¥î1ï4uî×ï4 þ„î×ï4uî[ï4 þÇî[ï4uî"ï4 þcî"ï4uî…ï4 þoî…ï4uîôï4 þ„îôï4uï4uï4uîxîªîyîê î%èî+ î5� î<Ê ï2Íî gî³ îG î"™ î,}î/ î9¦î<ÿ pï1&î gqî¬ï1&ï1&îîýî�îÞî|î‘î!«î$ãî(‰ pî2ï1&ï1&î2ˆqî4Ðï1&ï1&î6pî7„ï1&ï1&î8qï1&î9Dî;©î=Hî?˜îB£ï/î gî`î¿îíî+îfpî2ï/ï/î·qî!óï/rï/î#Tqî&òï/ï/pî'Ïï/ï/î(¶qî-7ï/rï/î.—qî1Ãï/ï/pî2 ï/ï/î3Pqî5Mï/rï/î6®qî9Ùï/ï/î:¶pî=mï/ï/î=ñqî@qï/rï/îAÒqîEpï/ï/î)ï,šþ„î)ï-î­ï,šþ*î­ï-î×ï,šþÇî×ï-îžï,šþcîžï-îï,šþ¥îï-î¦ï,šþ*î¦ï-îÐï,šþ¥îÐï-îuï,šþÇîuï-î<ï,šþoî<ï-î«ï,šþ¥î«ï-îPï,šþoîPï-î¿ï,šþcî¿ï-î"ï,šþ»î"ï-îÝï,šþÇîÝï-î¤ï,šþ„î(ï,šþ#î(ï-îKï,šþ»îKï-îï,šþoîï-îuï,šþ¥îuï-îï,šþ„îï-ï-ï-îŸ~ï)´î g pîï)´ï)´î™îî!'î#p î+Uî-‡î3óî7§qï&eî)pî¶ï&eï&eîfqï&eî î îvîmî!0î'î+£î-·pî3Øï&eï&eî4ˆqî5Fï&eï&eî6Á î>îAîC€ï$¾î gpî àï$¾ï$¾î ‘qî¤ï$¾ï$¾pîŠï$¾ï$¾î%qîÕï$¾ï$¾}îÜï$¾qï$¾îüpîvï$¾ï$¾îúqîªï$¾ï$¾pî�ï$¾ï$¾îÿqîGï$¾ï$¾îNî/î˜î"èî(î+(î1[î2Ïî6î8î:‚î>º îEeï#î gî–î†îîÈî(înî!�î$Ùî&î)ï 2þ„î)ï ›î­ï 2þÇî­ï ›îsï 2þ°îsï ›î$ï 2þ»î$ï ›îßï 2þ›îßï ›îzï 2þ¥îzï ›îï 2þoîï ›îŽï 2þcîŽï ›îñï 2þ»îñï ›î­ï 2þÇî­ï ›ï ›ï ›îsîdî%Ópî*{ï ›ï ›qî-Âï ›ï ›î/ î7�î:? pîDËï ›ï ›îEfqîFï ›ïôî g îî� î$|î'& î1Ñî5A î?·îC¬ïMî g pî|ïMïMîëqî3ïMïMî)ïhþ„î)ïÒî­ïhþ*î­ïÒî×ïhþÇî×ïÒîžïhþcîžïÒîïhþ¥îïÒî¦ïhþ*î¦ïÒîÐïhþ¥îÐïÒîuïhþÇîuïÒî<ïhþoî<ïÒî«ïhþ¥î«ïÒîPïhþoîPïÒî¿ïhþcî¿ïÒî"ïhþ»î"ïÒîÝïhþÇîÝïÒî¤ïhþ„î(ïhþ#î(ïÒîKïhþ»îKïÒîïhþoîïÒîuïhþ¥îuïÒîïhþ„îïÒïÒïÒîŸ~ï‚î g pîÿï‚ï‚îxî:î [î"£ qï3î) îTî‡îàî m î)]î+pî+~ï3ï3î,/qî-Bï3ï3pî.ï3ï3î.³qî/cï3ï3î0Zî2î3ìî9•î<õî?NîBŽïŒî gî öîbîî»î=îÓîŽî"fî%åî(Rî.ˆî1 î3î7Þî;aî><î@êïåî gî�îþî«îDpî¾ïåïåînqî‚ïåïåpîWïåïåîòqî¢ïåïåî™î#î$©î*µî/xî1aî6. î>WîA¸îC¡ï=î gîîˆîî)ï Yþ„î)ï Âî­ï YþÇî­ï Âîsï Yþ°îsï Âî$ï Yþ»î$ï Âîßï Yþ›îßï Âîzï Yþ¥îzï Âîï Yþoîï ÂîŽï YþcîŽï Âîñï Yþ»îñï Âî­ï YþÇî­ï Âï Âï Âîsîdî%Óî-Á î7�î:? pîDËï Âï ÂîEfqîFï Âï î g î°îEî¬ î'Gî*Ûî.Bî0ú pî;Dï ï î;õqî=ï ï rïîGîñî$lî%ðî(Äî/;î3¶î6^ wTVm$ 6THEDRAGONMAPPROCESSOR7ImplementationNotes:FlushSpace(aid:AddressSpaceId)FlushSpacecausesentriesforspaceaidberemovedfromtheMapCache.Iftherearenoentriesforthisspacetheoperationhasnoeffect.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=2;MAdrs[7..9]=0;MAdrs[10..31]=don'tcare;MData[0..21]=don'tcare;andMData[22..31]=aid.ImplementationNotes:FlushCache()FlushCachecausesallentriestoberemovedfromtheMapCache.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=2;MAdrs[7..9]=1;MAdrs[10..31]=don'tcare;andMData[0..31]=don'tcare.ImplementationNotes:ChangeFlags(rp:RealPage,order:Order,flags:Flags)ChangeFlagsprodstheMapCacheintoexecutingaDoneM-Buscommandwiththespecifiedparameters.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=2;MAdrs[7..9]=2;MAdrs[10..31]=don'tcare;MData[0..21]=rp;MData[22..24]=xxx;MData[25:27]=order;MData[28:31]=flags.ImplementationNotes:NotethatChangeFlagsshouldnotbeusedtosetwtEnableinprocessorcachesaslongaswepermitdifferentaddressspacesbecausewtEnablemayhavedifferentvaluesforthesamepage(thisishighlydesirable,eg.foradebugger).AlsonotethatitisnotnecessarytokeepboththewtEnableanddirtybitsintheMapCache;asinglebit,wEd,whichtracksthelogicvaluewtEnable&dirtyissufficient.However,bothbitswillbekeptsotheycanbereturnedforIOReadsfromprocessors.WriteSpaceRegister(pn:ProcessorNumber,aid:AddressSpaceId)WriteSpaceRegisterwritesaidintothespaceregisterforprocessorpn.Notethatthisoperationdoesnotinvalidatethemapentriesinpn'scaches;thisshouldbedoneinsoftwareviaDeMap.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=2;MAdrs[7..9]=3;MAdrs[10..31]=don'tcare;MData[0..21]=don'tcare;MData[22..31]=aid;pnisderivedfromthecurrentM-Busmaster.ImplementationNotes:ReadSpaceRegister(pn:ProcessorNumber)Returns(aid:AddressSpaceId)ReadSpaceRegisterreturnsthecontentsofthespaceregisterforprocessorpn.Invocation:IOReadFlow(MAdrs).MAdrs[0..6]=2;MAdrs[7..9]=3;andMAdrs[10..31]=don'tcare;pnisderivedfromthecurrentM-Busmaster.ImplementationNotes:DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉî)ï^Æþ„qî)ï_/î­ï^Æþ*î­ï_/î×ï^ÆþÇî×ï_/îžï^Æþcîžï_/îï^Æþ¥îï_/î¦ï^Æþ*î¦ï_/îÐï^Æþ¥îÐï_/îuï^ÆþÇîuï_/î<ï^Æþoî<ï_/î«ï^Æþ¥î«ï_/îPï^ÆþoîPï_/î¿ï^Æþcî¿ï_/î"ï^Æþ»î"ï_/îÝï^ÆþÇîÝï_/î¤ï^Æþ„î(ï^Æþ#î(ï_/îKï^Æþ»îKï_/îï^Æþoîï_/îuï^Æþ¥îuï_/îï^Æþ„îï_/îŸï^ÆþyîŸï_/ï_/ï_/~ï[àî g pî5ï[àï[àî¯îpqïX‘î) î‡îÊîCî!Špî%HïX‘ïX‘î%ùqïX‘î'šî)”î/Mî2½î5&î8vî=“î?îB±îEïVêî gî×îî¶îkîËî!ôî$iî&pî)ïTþ„î)ïToî­ïTþÇî­ïToîsïTþ°îsïToî$ïTþ»î$ïToîßïTþ›îßïToîzïTþ¥îzïToîïTþoîïToîŽïTþcîŽïToîñïTþ»îñïToî­ïTþÇî­ïToïToïToîsî:î'Øî0% î;[ îEfïRÇî g î°îEî¬ î'Gî*Ûî.Bî0ú pî;DïRÇïRÇî;õqî=ïRÇïRÇî)ïOãþ„î)ïPLî­ïOãþ*î­ïPLî×ïOãþÇî×ïPLîžïOãþcîžïPLîïOãþ¥îïPLî¦ïOãþ*î¦ïPLîÐïOãþ¥îÐïPLîuïOãþÇîuïPLî<ïOãþoî<ïPLî«ïOãþ¥î«ïPLîPïOãþoîPïPLî¿ïOãþcî¿ïPLî"ïOãþ»î"ïPLîÝïOãþÇîÝïPLî¤ïOãþ„î(ïOãþ#î(ïPLîKïOãþ»îKïPLîïOãþoîïPLîuïOãþ¥îuïPLîïOãþ„îïPLîŸïOãþyîŸïPLïPLïPL~ïLýî g pîbïLýïLýîÜqïI®î) î´îîîÞî!Nî"üî$íî*�î.î0cî3ªî)ïFÊþ„î)ïG3î­ïFÊþÇî­ïG3îsïFÊþ°îsïG3î$ïFÊþ»î$ïG3îßïFÊþ›îßïG3îzïFÊþ¥îzïG3îïFÊþoîïG3îŽïFÊþcîŽïG3îñïFÊþ»îñïG3î­ïFÊþÇî­ïG3ïG3ïG3îsîÑî':î/ î8ôî;� îEfïEŒî g î°îEî¬î d î)þî-’î)ïB§þ„î)ïCî­ïB§þ*î­ïCî×ïB§þÇî×ïCîžïB§þcîžïCîïB§þ¥îïCî¦ïB§þ*î¦ïCîÐïB§þ¥îÐïCîuïB§þÇîuïCî<ïB§þoî<ïCî«ïB§þ¥î«ïCîPïB§þoîPïCî¿ïB§þcî¿ïCî"ïB§þ»î"ïCîÝïB§þÇîÝïCî¤ïB§þ„î(ïB§þ#î(ïCîKïB§þ»îKïCîïB§þoîïCîuïB§þ¥îuïCîïB§þ„îïCîŸïB§þyîŸïCïCïC~ï?Âî g pîï?Âï?Âî‹î¾î)î!+î%oî)#qïî1cî3èpî:Bï#¤ï#¤î:òqî;±ï#¤ï#¤î=ŸîA]îDrï!üî gîˆî±î î`î ·î#Éî(2pî)×ï!üï!üî*ˆqî+Fï!üï!üî+žî,Ÿî1`î3ùî8mî:Vî=Àî?fîD×ï Uî gî)ïpþ„î)ïÚî­ïpþÇî­ïÚîsïpþ°îsïÚî$ïpþ»î$ïÚîßïpþ›îßïÚîzïpþ¥îzïÚîïpþoîïÚîŽïpþcîŽïÚîñïpþ»îñïÚî­ïpþÇî­ïÚïÚïÚîsî”î&1î. î8Šî;[ îEfï3î g î±îGî¯ î'Jî*ßî.H pî8”ï3ï3î9Dqî:Xï3ï3pî;Vï3ï3î<qï3î=Jî>·îC­ï‹î gîÆî�îî)ï§þ„î)ïî­ï§þ*î­ïî×ï§þÇî×ïîžï§þcîžïîï§þ¥îïî¦ï§þ*î¦ïîÐï§þ¥îÐïîuï§þÇîuïî<ï§þoî<ïî«ï§þ¥î«ïîPï§þoîPïî¿ï§þcî¿ïî"ï§þ»î"ïîÝï§þÇîÝïî¤ï§þ„î(ï§þ#î(ïîKï§þ»îKïîï§þoîïîuï§þ¥îuïîï§þ„îïîŸï§þyîŸïïïpïÁ~î ëïÁïÁî épî`ïÁïÁîÚîFî&‰ î.Pqïrî)îîÍî"-î'œî)Uî+´î/iî4Hî6…pî<˜ïrïrî=Iqî>ïrïrî)ïŽþ„î)ï÷î­ïŽþÇî­ï÷îsïŽþ°îsï÷î$ïŽþ»î$ï÷îßïŽþ›îßï÷îzïŽþ¥îzï÷îïŽþoîï÷îŽïŽþcîŽï÷îñïŽþ»îñï÷î­ïŽþÇî­ï÷ï÷ï÷îsîyî$¿ î-¯î/e î8Uî: î<Ê ï Pî gîûpîcï Pï Pîqï PîVîÂî·îî!}î&Gî*Íî)ï kþ„î)ï Ôî­ï kþ*î­ï Ôî×ï kþÇî×ï Ôîžï kþcîžï Ôîï kþ¥îï Ôî¦ï kþ*î¦ï ÔîÐï kþ¥îÐï Ôîuï kþÇîuï Ôî<ï kþoî<ï Ôî«ï kþ¥î«ï ÔîPï kþoîPï Ôî¿ï kþcî¿ï Ôî"ï kþ»î"ï ÔîÝï kþÇîÝï Ôî¤ï kþ„î(ï kþ#î(ï ÔîKï kþ»îKï Ôîï kþoîï Ôîuï kþ¥îuï Ôîï kþ„îï ÔîŸï kþyîŸï Ôï Ôï ÔrïîGîñî$lî%ðî(Äî/;î3¶î6^¯TVm$ ÅTHEDRAGONMAPPROCESSOR8WriteBypassRegister(reg:[BypassMask,BypassPattern,BypassBase],value:(32s)BitQuantity)WriteBypassRegisterwritesvalueintothebypassregisterreg.Recallthatthecontentsofthebypassregistersdefinethelocationandsizeofthemapbypassareabothinvirtualaddressspaceandinrealmemory.OnpoweruptheBypassMaskregisterissetto0whichcausestheMapCachetoimplementtheidentityfunction.Invocation:IOWriteFlow(MAdrs,MData).MAdrs[0..6]=2;MAdrs[7..9]=4;MAdrs[10..29]=don'tcare;MAdrs[30..31]=reg;MData[0..21]=value;MData[22..31]=don'tcare.ImplementationNotes:ReadBypassRegister(reg:[BypassMask,BypassPattern,BypassBase])Returns(value:(32s)BitQuantity)ReadBypassRegisterreturnsthecontentsofbypassregisterreg.Invocation:IOWriteFlow(MAdrs).MAdrs[0..6]=2;MAdrs[7..9]=4;MAdrs[10..29]=don'tcare;MAdrs[30..31]=reg.ImplementationNotes:4.2CacheControllerFunctionsTheMapCacheControllerprovidestwointerfaces:onetoservicerequestsfromtheMapCacheandtheothertoservicerequestsfromDragonsoftwaretomanipulatetheMapTable.Functionsinthetwointerfaceshavedifferentspeedrequirements,andarealsoinvokeddifferently.TheMapCacheinterfacefunctionsmustberelativelyefficientsincetheyareinvokedfrequently,whiletheMapTablefunctionsarenotascritical.TheformerareinvokedviatrapsinitiatedbytheMapCache,whilethelatterareinvokedviaprocedurecalls.ThefirsttwofunctionsbelowbelongtotheMapCacheinterface.TheremainderbelongtotheMapTableinterface.HandleMapFault(aid:AddressSpaceId,vp:VirtualPage)HandleMapFaultiscalledwhenthereisamissintheMapCache.Itfirstchecksiftheentryfor(aid,vp)isintheMapTable.IftheentryisthereitissenttotheMapCacheviaTakeEntry,otherwiseapagefaultissignaled.Invocation:viamapfault.ImplementationNotes:HandleWPFault(aid:AddressSpaceId,vp:VirtualPage)HandleWPFaultiscalledbytheMapCachewhenitisservicingaMapForWriterequestandfindsdirty&wtEnableFALSE.Itfirstchecksifthewriteprotectfaultisrealorsimplyaresultofthisbeingthefirstwritetotheentry'spage.Ifitisreal,awriteprotectfaultissignaled,otherwisethedirtybitfortheentryissetintheMapTableandtheupdatedentrysenttotheMapCacheviaTakeEntry.DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'îorî Vïg'ïg'î!<qïg'î"zrî#™ïg'ïg'î$mqïg'î(xrî)Îïg'ïg'î*¡qïg'î+Írî,žïg'ïg'î-rvïg'îEÉ~ï_*î gpîÏï_*ï_*îHî î$² î-æ î5õî9ùqï[Ûî)îpî *ï[Ûï[Ûî Åqï[Ûî#Îî&Àî)9î-Ãpî2»ï[Ûï[Ûî3@qî4‹ï[Ûï[Ûî6î:qî=Yî?ÒîE[ïZ4î gîÎîGî±îòîYî$˜î'Wî* î+Ëî.2î1Uî5Íî8Îî<î=ÈîB*ïX�î gîîÔî‚î8ïVî)îyî™î�pîîïVïVîáqïVî!¶î&†î'äî)òî+“î,¹î0¹î4äî75î:nî>Žî@/ïTjî gîÆîÒî)ïQ…þ„î)ïQïî­ïQ…þÇî­ïQïîsïQ…þ°îsïQïî$ïQ…þ»î$ïQïîßïQ…þ›îßïQïîzïQ…þ¥îzïQïîïQ…þoîïQïîŽïQ…þcîŽïQïîñïQ…þ»îñïQïî­ïQ…þÇî­ïQïïQïïQïîsî”î&1î. î8Šî;[ îEfïPGî g ïPGîËîzîü pî(`ïPGïPGî(äqî*0ïPGïPGî+H pî4üïPGïPGî5—qî8ïPGïPGî9 îC€ïN î gî)ïK»þ„î)ïL%î­ïK»þ*î­ïL%î×ïK»þÇî×ïL%îžïK»þcîžïL%îïK»þ¥îïL%î¦ïK»þ*î¦ïL%îÐïK»þ¥îÐïL%îuïK»þÇîuïL%î<ïK»þoî<ïL%î«ïK»þ¥î«ïL%îPïK»þoîPïL%î¿ïK»þcî¿ïL%î"ïK»þ»î"ïL%îÝïK»þÇîÝïL%î¤ïK»þ„î(ïK»þ#î(ïL%îKïK»þ»îKïL%îïK»þoîïL%îuïK»þ¥îuïL%îïK»þ„îïL%îŸïK»þyîŸïL%ïL%ïL%~ïHÖî gpîlïHÖïHÖîåî² î$O î-ƒ î5³ ïF¡î gqïCRî)î³î fî"Æî(5î)îî.^pî3=ïCRïCRî3Áqî5 ïCRïCRî)ï@nþ„î)ï@×î­ï@nþÇî­ï@×îsï@nþ°îsï@×î$ï@nþ»î$ï@×îßï@nþ›îßï@×îzï@nþ¥îzï@×îï@nþoîï@×îŽï@nþcîŽï@×îñï@nþ»îñï@×î­ï@nþÇî­ï@×ï@×ï@×îsîUî$• î-bî.ô î7Àî9R ï@×îC€ï?0î gîÏ pï?0îqîèï?0ï?0î)ïŸîAÒï.¥î g îÂî~î§î¹î#Bî)#î,nî.B î4î9Sî<©î?œîAÒï,þî g îcîîxî¿î  î&Ÿî(óî+hî-î2oî5Gî9Øî<,îAnîC¬ï+Wî gîËîÆî&îlîóî!¨î$î'œî)ïî/1î1nî7ñï(Ûî)îîþî¼îÍî!ìî&…î(Fî*¸î.î2R î8ùî;ãîBŽï'4î gîîuî»îœ ~ï#åî g pîœï#åï#åîî×î#øî&@ qï –î) îî˜î­î#€î'(î(²î)ùî-1î.ýî1{î4ßî:&î;»î>±îC6îD´ïïî gîîkpîäïïïïî”qî¨ïïïïpîžïïïïî9qîéïïïïîî…îLîÅî!%î&î'¯î*(î-Õî/Zî2ýî4lî5ñî8îî:¶î=/î@�îD×ïGî g îƒî¬îÖîî!Yî"Äî)ïbþ„î)ïÌî­ïbþÇî­ïÌîsïbþ°îsïÌî$ïbþ»î$ïÌîßïbþ›îßïÌîzïbþ¥îzïÌîïbþoîïÌîŽïbþcîŽïÌîñïbþ»îñïÌî­ïbþÇî­ïÌïÌïÌîsîqî®îÉî)ïçþ„î)ïQî­ïçþ*î­ïQî×ïçþÇî×ïQîžïçþcîžïQîïçþ¥îïQî¦ïçþ*î¦ïQîÐïçþ¥îÐïQîuïçþÇîuïQî<ïçþoî<ïQî«ïçþ¥î«ïQîPïçþoîPïQî¿ïçþcî¿ïQî"ïçþ»î"ïQîÝïçþÇîÝïQî¤ïçþ„î(ïçþ#î(ïQîKïçþ»îKïQîïçþoîïQîuïçþ¥îuïQîïçþ„îïQîŸïçþyîŸïQïQïQ~ïî g pî"ïïîœî]î#~î%Ç qï³î) î~îîî!7î#µî'î+fî/9î0­î27î8î9W îB?ï î gî@pîÔï ï î„}î�ï pï îÜrï îêqî ˆï ï î"+î#Äî&½î+Eî,Çî/Hî2çî7±î;î<›î?sîAYîEêïdî gîîÅîSî îWîî †î"!î$nî(Ëî,Çî.5î/xî0Ñî3Ìî4ãî8Mî<ãî@ îAdï ½î gîœîîcî‹îÓî>î"Ýî$Sî&{î(4î*Ÿî-ðî1Üî4žî7 îVîBAîE¾ï[ î gîîÁî îgî•îYî�î"Lî%Oî(–î*Dî.0î1v~ïW¾î gpî¼ïW¾ïW¾î6î÷î î"a î*g î1 î8 î;ÀqïToî)î]î¢î(îîpî *ïToïToî Úqî!™ïToïTopî"�ïToïToî#+qî#ÛïToïToî$ô î-`î/wî1ñî5Rî9œî>î@ðîBaïRÇî gîçpîCïRÇïRÇî²qïRÇîŸîwîNpîµïRÇïRÇî:qïRÇî �î"íî$þïR^þ¥î$þïRÇî%£ïR^þ°î%£ïRÇî&TïR^þÇî&TïRÇî'ïR^þcî'ïRÇî'~ïR^þcî'~ïRÇî'áïR^þ›î'áïRÇî(|ïR^þcî(|ïRÇî(ßïR^þoî(ßïRÇïRÇïRÇî)óî.ýî2ÓpïRÇî4£qïRÇî7 î;:î>€î@ÞîC_ïQ î gîDî›îî§îî î#¬ î,£î.Rpî.ËïQ ïQ î/{qî0�ïQ ïQ pî1kïQ ïQ î2qî2·ïQ ïQ î3´î4Þî7øî;`î>œî@î)ïN;þ„î)ïN¥î­ïN;þÇî­ïN¥îsïN;þ°îsïN¥î$ïN;þ»î$ïN¥îßïN;þ›îßïN¥îzïN;þ¥îzïN¥îïN;þoîïN¥îŽïN;þcîŽïN¥îñïN;þ»îñïN¥î­ïN;þÇî­ïN¥ïN¥ïN¥îsîqî®î1î)ïKÀþ„î)ïL*î­ïKÀþ*î­ïL*î×ïKÀþÇî×ïL*îžïKÀþcîžïL*îïKÀþ¥îïL*î¦ïKÀþ*î¦ïL*îÐïKÀþ¥îÐïL*îuïKÀþÇîuïL*î<ïKÀþoî<ïL*î«ïKÀþ¥î«ïL*îPïKÀþoîPïL*î¿ïKÀþcî¿ïL*î"ïKÀþ»î"ïL*îÝïKÀþÇîÝïL*î¤ïKÀþ„î(ïKÀþ#î(ïL*îKïKÀþ»îKïL*îïKÀþoîïL*îuïKÀþ¥îuïL*îïKÀþ„îïL*îŸïKÀþyîŸïL*ïL*ïL*~ïHÛî g pîïHÛïHÛî™îZî {î"Ä î*©î.^î2_î4‘qïEŒî) îZî\îºî Npî ÇïEŒïEŒî!wqî"‹ïEŒïEŒpî#gïEŒïEŒî$qî$²ïEŒïEŒ}î%¯ïEŒqïEŒî'Æpî(?ïEŒïEŒî(Äqî)tïEŒïEŒpî*PïEŒïEŒî*¿qî-ïEŒïEŒî.î0Üî3;î6�î;<î<½î>­îB@ïCäî gîîApîºïCäïCäîkqî~ïCäïCäpî[ïCäïCäîöqî¦ïCäïCäî¤îúîf î#î)0î*Zî-Hî0Ûî2Gî)ïAþ„î)ïAiî­ïAþÇî­ïAiîsïAþ°îsïAiî$ïAþ»î$ïAiîßïAþ›îßïAiîzïAþ¥îzïAiîïAþoîïAiîŽïAþcîŽïAiîñïAþ»îñïAiî­ïAþÇî­ïAiïAiïAiîsîqî®î1î)ï>…þ„î)ï>îî­ï>…þ*î­ï>îî×ï>…þÇî×ï>îîžï>…þcîžï>îîï>…þ¥îï>îî¦ï>…þ*î¦ï>îîÐï>…þ¥îÐï>îîuï>…þÇîuï>îî<ï>…þoî<ï>îî«ï>…þ¥î«ï>îîPï>…þoîPï>îî¿ï>…þcî¿ï>îî"ï>…þ»î"ï>îîÝï>…þÇîÝï>îî¤ï>…þ„î(ï>…þ#î(ï>îîKï>…þ»îKï>îîï>…þoîï>îîuï>…þ¥îuï>îîï>…þ„îï>îîŸï>…þyîŸï>îï>îï>î~ï;Ÿî g pîÙï;Ÿï;ŸîSîP îˆî#ôqï8Pî) îBîî‘î"¿î&qî)öî,tî/­î33î9’î;^î? ï6©î gîóîÉ îÊî4î§î$»î(Lî,ºî.fî0Ãî4)î7*î9�î>"î@×îC€ï5î gî|îîºîñî7î%}î'ï î0î1‚î5î:î;Áî?|îBêîD´ï3Zî gîÐîxîÐî1îÙîÂî :î#Nî)pî,î-ÿî14î3(î5�î8Á î@| ï1³î gîàî)ï.Îþ„î)ï/8î­ï.ÎþÇî­ï/8îsï.Îþ°îsï/8î$ï.Îþ»î$ï/8îßï.Îþ›îßï/8îzï.Îþ¥îzï/8îï.Îþoîï/8îŽï.ÎþcîŽï/8îñï.Îþ»îñï/8î­ï.ÎþÇî­ï/8ï/8ï/8îsîqî®î1î)ï,Sþ„î)ï,¼î­ï,Sþ*î­ï,¼î×ï,SþÇî×ï,¼îžï,Sþcîžï,¼îï,Sþ¥îï,¼î¦ï,Sþ*î¦ï,¼îÐï,Sþ¥îÐï,¼îuï,SþÇîuï,¼î<ï,Sþoî<ï,¼î«ï,Sþ¥î«ï,¼îPï,SþoîPï,¼î¿ï,Sþcî¿ï,¼î"ï,Sþ»î"ï,¼îÝï,SþÇîÝï,¼î¤ï,Sþ„î(ï,Sþ#î(ï,¼îKï,Sþ»îKï,¼îï,Sþoîï,¼îuï,Sþ¥îuï,¼îï,Sþ„îï,¼îŸï,SþyîŸï,¼ï,¼ï,¼~ï)nî g pî™ï)nï)nîîÔî õî#> î+Dî5Lqï&î)îJî{îî{î# î,pî-Ëï&ï&î.{qî/�ï&pï&î/çqï&î1¾î5-î7”î:âî?­îBï$wî gîîîPpî%ï$wï$wîÖqîéï$wpï$wîAqï$wîüî!ùî$†î*šî-1î0çî2€î3•î6Æî9íî=ûî?× ï"Ðî gî‘îîaîŠîyî! pî#Jï"Ðï"Ðî#úqî% ï"Ðpï"Ðî%fqï"Ðî'5î* î,mî)ïëþ„î)ï Uî­ïëþÇî­ï Uîsïëþ°îsï Uî$ïëþ»î$ï Uîßïëþ›îßï Uîzïëþ¥îzï Uîïëþoîï UîŽïëþcîŽï Uîñïëþ»îñï Uî­ïëþÇî­ï Uï Uï Uîsîqî®î1î)ïpþ„î)ïÚî­ïpþ*î­ïÚî×ïpþÇî×ïÚîžïpþcîžïÚîïpþ¥îïÚî¦ïpþ*î¦ïÚîÐïpþ¥îÐïÚîuïpþÇîuïÚî<ïpþoî<ïÚî«ïpþ¥î«ïÚîPïpþoîPïÚî¿ïpþcî¿ïÚî"ïpþ»î"ïÚîÝïpþÇîÝïÚî¤ïpþ„î(ïpþ#î(ïÚîKïpþ»îKïÚîïpþoîïÚîuïpþ¥îuïÚîïpþ„îïÚîŸïpþyîŸïÚïÚïÚzï<î gîCî®î›qïíî)î)î˜îîî‚î› î$©î'î,òî/,î5î:‘î>ÝîAïFî gîÙîtî îäîDî!%î$Žî&jî(íî-€î1Çî3˜î6î9„î=àî@ºîBIîEeïžî gîÌîžîîëî£î•î!fî#éî&úî(Öî*#î-bî.üî0‹ î9î:Ñî<î@,îDï÷î gî”îîÜîöîTî!î%î&rî(®î+ î0lî3Dî6Sî9î>¸î@fîBÄï Pî gîî† îhî ï Ôî)îgîîÇîšî î${î&èî*ùî0‹î3î6Nî;‰î>³ îEerïîGîñî$lî%ðî(Äî/;î3¶î6^¦TVm$ ëTHEDRAGONMAPPROCESSOR10simpleimplementationandgoodperformance.Thefirstisthatthecacheispure:anentryisnevermodifiedwithinthecacheonceithasbeenreadin;ifmodificationsneedtobemade,theentryisflushedfromthecache,modifiedintheMapTable,andreadinagain.Themostimportantconsequenceofthisisthatthecachecanholdmanymoreentriesbymakinguseofdynamiccells.Thesecellsaresmallerthanstaticones,butalsomuchmorepronetoalphaparticlehits.However,sincethecachenevercontainsirreplaceabledata,wedon'tneedtoworryaboutcorrectingerrorswecangetawaybysimplydetectingthemandflushingerroneousentries.Anotherconsequenceisthatentriesneverneedtobewrittenthroughorwrittenback,makingthecontrolportionsofthechipsimpler.Thesecondaspectofthedesignisthatthecachefunctionsasaslavetootherdevices.ThusitneverhastoarbitratefortheM-Bus,andallofitsinteractionswiththebusaresimple.ThisminimizesthecontrollogicneededforinterfacingtotheM-Bus.5.1M-BusInterfaceDuringnormaloperationtheMapCachecommunicateswiththeoutsideworldexclusivelyovertheM-Bus.TheonlyM-BustransactionsrecognizedareIOReadsandIOWritesdirectedtotheappropriateportionofIOaddressspace.Asnotedabove,theMapCachealwaysoperatesasaslavetosomeotherdeviceontheM-Bus(usuallyaprocessorcache),soitneverhastoarbitrateforthebus.TheonlyM-Bussignalsitusesareshowninthetablebelow.SignalDirectionUseMCmdAB[0..4)M<>CrecognizeIOReadandIOWrite,executeIODoneandChangeFlagsMDataAB[0..32)M<>Creadfunctionnameandparameters,returnresultsMaster[0..6)M>CreadM-BusmasterMGntM>Ctellwhenmastershipisgranted5.2StructureTheMapCachechipconsistsofthefollowingparts:M-Businterfacelogic,controlregisters,anaidarray,acachearray,victimselectlogic,refreshlogic,andD-Businterfacelogic.5.2.1M-BusInterfaceLogicThisinterfacelogiccontains:paddriversandreceivers;circuitrytodoaddressmatching;latchestoholdMCmd,IOAddress,IOData,andIODoneresponse;arraybypasslogicthatimplementsidentitymapmodeaswellasmapbypassareaaddressing,andacontrolunitthatsteersthevariousoperations.5.2.2ControlRegistersThecontrolregistersstoreglobalmappinginformation,whichincludesidentitymapmodeandMapBypassBase.5.2.3AidRegistersThisisasetof2||pn||registersof||aid||bitseachthatgivethemappingbetweenprocessorsDRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'î rîóïg'ïg'î Ùqïg'î"rî#6ïg'ïg'î$ qïg'î(rî)jïg'ïg'î*>qïg'î+jrî,;ïg'ïg'î-vïg'îEqï_/î gîâ î×î¥î!- î*:î-(î0î1™î4}î6óî:Õpîãï_/ï_/î?÷îAþîE¨ï]ˆî gî*îî=î–î [î#šî$êî'Xî*­î-Áî/áî1; î9¼î=î>ºî@£îD´ï[àî gî,îÈîÙîqîî!Vî'dî)Cî+Óî/Kî3µî6�î9èî;Çî@®îC·ïZ9î gî× îëî²îbî Ýî#ºî&(î*î,œî/Üî3µî7Vî;Õî=àîB×îE[ïX’î gî"îcî�îÊî Hî%;î(Œî,Aî/ôî2 î5˜î9šî=XîAzîCTïVêî gîAîŸîÄî&î vî$2î'ìî-? î5Jî8—î:®î>2îAîCïUCî gî… î-îcî!+î#°î'iî)¡î.Mî4rî87î;*î@´ïSœî gîÄî: îGî »î#’î( î+Ýî/Bî0ùî2òî7­î<íî>¹îCuïQôî gîkîæî´î3î î"‚î%®î+©î.�î3Jî7Šî9^î;Ùî@DîAËîD´ïPMî gîDîTîîNîÇî†î"7î'þî+Žî,õî0Ñî3Wî5î:­î<üî?mîD\ïN¦î gîˆîsî îî[îìî"´î%9î*Üî.(î4åî7vîäîBÐîEeï?Ãî gîìî)î‰îûîÓîíî$sî(ãî*9î-2î/†î3Õî5ƒî7âî;Jï:Íî gï:Íî!ï:Íî+irï8Rî g ï8Rî!î"Žî%,ï8Rî+hî0Mî4yî6¥ï6ªî+hî/`î3¯î5Û ï4/î g ï4/î!î"Žî%,ï4/î+hî-äî2Fî5Eî7r ï2ˆî+hî.Áï0 î g ï0 î!î"Žî$Ÿï0 î+hî-äî1ƒï-‘î gï-‘î!î"Žî$Ÿï-‘î+hî-Nî0E î5Êî6í{ï*Bî gî¤qï&óî)îòî*îIîKî!<î"æî%7î+:î/ î3„î9î<µîAY ï%Lî gîWî«îŒîµî�îbî!�î%Pî(ùî-–î1?î3÷î8Fî=ìpï!ýî gî­î3îõqï®î)î_î î�î!†î$Yî)î+Ú î2î7ªî9tî;–î@œïî gî5î)î î î#Šî)î,î1Äî8)î;÷î@®îDFï`î g îãîî.î î!Øî$Øî&™î)Æî.Iî1U î8„î;Nî<ŠîAOîDFï¸î gî2î‘îY pïiî gî­î¦qïî)î îÈî5îœî#Êî)� î1|î5•î;î@îC>ïsî gî pï$î gî­îBqï Çî)îJî¾îðîîÕrï Tî…|îï Tï Tî rî8ï Tï Tîqï ÇîQî!¼î#}pî$-ï Çï Çî$Ýqî%ñï Çï Çî&Iî'-î)×î-î/æî2Ûî5Bî;î@| rïîGîñî$lî%ðî(Äî/;î3¶î6^�TVm$THEDRAGONMAPPROCESSOR11andtheaddressspacescurrentlyloadedonthem.Duringnormaloperation,theseregistersareaccessedusingpn,andtheaidreadoutisusedalongwithvptolookup(rp,flags).5.2.4CacheArrayThisarrayholdsthemappingbetween(aid,vp)and(rp,flags).Itconsistsofanumberoflines,whereeachlineismadeupofcorrespondingrowsfromfourseparatearrays:an||aid||-bitassociativememoryarrayAIDArray;a(||vp||2)-bitassociativememoryarrayVPArray;a1-bitmemoryarrayMParwhichstorestheparityforthetwoassociativearrays;anda4*(||rp||+||flags||+1)-bitmemoryarrayRPFArraythatcontainsfour(rp,flags)pairsforeachline(theremainingbitinthisarrayisrpfPar).Thetop(||vp||2)bitsoftheincomingvpandtheaidbitsfromAidReg[pn]areusedtodoanassociativelookuptoselectaline,whilethebottom2bitsofvpareusedtoselectbetweenthefour(rp,flags)pairspotentiallystoredwithinthatline.Inaddition,eachlinehasanumberofcontrolbits:refissetwheneveritslineisusedinmapping,lValidindicatesifthe(aid,vp)pairinthislineisvalid;lBrokenisusedtoturnoffbadlinescompletely,andrpf0Valid..rpf3Validindicatewhethereachofthefour(rp,flags)pairsinthislineisvalid.AllpartsoftheCacheArrayexceptforthesecontrolbitsareimplementedusingdynamiccells.Thefinalsectionistheaddressdecoderwhichpermitsindividuallinesinthecachetobeselectedforvictimizationaswellasforreadingandwritingduringtesting.5.2.5VictimSelectLogicWhenamissoccursintheMapCache,thelineselectedasvictimistheonepointedtobythevictimpointervPtr.ForeachcycleduringwhichavictimisnotneededtherefbitforthelinepointedtobyvPtrclearedandvPtrisincrementedifrefwasset.ThusvPtrmovesfromonelinetothenexttillitlandsonalinethathasrefclear.ItfollowsthatvPtrwilltendtobeonlinesthathaverefclearwhenthereisarequesttofindavictim.Therefbitissetwheneveritslineisusedinmapping.Thusthelinesusedmostfrequentlyinmappingwillbetheleastlikelytobepickedasvictims,andsothisprocedureapproximatesleastfrequentlyusedvictimselection.Atthemomentthereisnologictohandlebrokenlines.Acleverwaytoimplementthisinthefuturewouldbeasfollows.WhenlBrokenisset,itslinedoesnotparticipateinmatchesanddoesnotpermititsrefbittobecleared(whenthevictimpointerpassesoverit).Thebrokenlinewillappearasthoughitisinuse,soontheaverageitwillnotbepickedasthevictim.However,whenitdoesgetpickedtheeffectswillnotbeharmful.Theentrywillgetwrittenintotheboguslinebutthislinewillnevermatchsoitwillappearasthoughthewriteentrywasneverdone.Thenextreferencetothisentrywillmiss,andtheentrywillgetwrittentothecacheonemoretime.Howeverbythistimethevictimpointerwillinalllikelihoodhavemovedontoalegitimatelinesotheentrywillbewrittencorrectly!!Isn'tcachingwonderful?5.2.6RefreshLogicTherefreshlogicisresponsibleformaintaininginformationindynamiccells.ItisactivatedperiodicallywhenevertheMapCacheisnotbusyprocessingnormalrequests.ForeachactivationitreadsallthedynamiccellsbelongingtothelinethathasrSelsetandthenwritesthemback.ItthenclearsrSelforthislineandsetsitforthenextline.AtanytimeatmostonelineispermittedtohaverSelset.DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'î rîóïg'ïg'î Ùqïg'î"rî#6ïg'ïg'î$ qïg'î(rî)jïg'ïg'î*>qïg'î+jrî,;ïg'ïg'î-vïg'îEqï_/î gî&î�î~î¿î ¤î%&î'4î+¨î0xî5< î;Æî?VîDÀï]ˆî gîápî‹ï]ˆï]ˆî;qîúï]ˆï]ˆîÖî�pîíï]ˆï]ˆî�qï]ˆî5î"Oî$Åî&1î)mî-,pî0Gï]ˆï]ˆî0áqï]ˆî2î3Äî8lpî8åï]ˆï]ˆî9iqî:ï]ˆï]ˆpî:öï]ˆï]ˆî;eqî=­ï]ˆï]ˆî>'pïZ9î gî­îÒqïVêî)îKîÜîšîî!Çî'>pî'¸ïVêïVêî(hqî)|ïVêïVêpî*aïVêïVêî*üqî+¬ïVêïVêî,³î/spî/ìïVêïVêî0qqî1!ïVêïVêpî2ïVêïVêî2uqî4½ïVêïVêî57î6¨î8)î=1î>óî@&îE[pïUBî gqî ïUBïUBîèîî1îèîTîî!'î"à î+×î/î2…î5‰î:âî?hîAYpîB ïUBïUBîB¹qîCÍïUBïUBîD%ïS›î g î$î•î!î#5î$cpî%�ïS›ïS›î&(qî&ØïS›ïS›î'0î,­ î3jî8Üî&ïCåïCåî>•qî@ÝïCåïCåîAòîEfïB>î gî!îñîvîëîWîØîªî""î&jî*nî.×î1-î4Ðî9›î ï@—î gîî ï>î)îîWîî†îùî"öî(Aî,bî1k î8î;Nî=î?‚îCaîE#ïZîChîEï4/î gîÍîpîÒï4/ï4/îmqîIï4/ï4/î·îiî!¡î%î)“î-¨î.Øî3î4€î6üî;Ìpî>3ï4/ï4/î>·qï4/î@LîBpîD´ï2ˆî gî0îNîpîï2ˆï2ˆî¸qï2ˆî*îûpî"Äï2ˆï2ˆî#_qï2ˆî%Òî'P î/Fpî0¹ï2ˆï2ˆî1=qï2ˆî2Þî5œî8¹pîÌî@ßï-’î gîTîîœîêî«îhî!øî$jî'¸î+î.v î5,î6íî<»î?yîA|îCîï+êî gî?îîî™î`î„î"Tî$1î&ëî-‡ pî6ï+êï+êî6uî9R î?¼qï+êîBæï*Cî g ï'Èî)îîwîÞîaîÇîÇî#î$ºî):î-æî1ðî3vî7rî:Dî;ìîBËîEfï& î gîßîîcîlî3î ýpî%.ï& ï& î%‘qï& î*vî+úî.ˆî0{î3Jî6“î9! î?ÿîAÆï$yî gî î$î„îßî¤î·î¾î Xî"3î&Üî*õî-?î1Xî6 î:î=î?ŸîBbï"Òî gî>î î²î�îVîÍî Yî"(î%î&ûî)"î+¢î0Âî29î5î7›î9­î>?î@îBŽï!*î gî´î€îîî6î–î"î$–î(ýî+Àî.Mî0Uî6¢î9’î==î@îBaïƒî gî8î‘îŒî<î¶îQî î"¥î&iî*†î,Dî-“î07î4¸î6_î; î=dî@ÛîDhïÜî gîRîâîÛî î!*î"ùî%»î)pî,<î/Ïî2§î5'î8Üî;¨î>îBåîD´ï4î gî&îÄîJî1î î!ïî$ƒî'›î)íî.î2Êî5hî7 î8ë î?TîBŽï�î gîmîîE î›îRîîuî" î$´î&¥î+X î2uî5�î:� pïÃî gî­î™qïtî)îõî…îÊî* î"Pî$� î, î3‰î5+î:®î>�î?íîALïÍî g î¼îÒîî9î#Iî$•î&ëî* î0¢î5?î;6î=Âî@Ô ï%î gî Âîfî[îÀîTîhî$Îî&�î(æî+¡î.upî0ïï%ï%î1sqï%î3×î5ùî8µî;àî?çîCuï ~î gî ùî:pî+ï ~ï ~î¯qï ~î)î�î=î î"áî%�î'î)fî+áî/ î2Óî4éî7¥î:åî<™î@îB×îE¨ï ×î gî³îapî¨ï ×ï ×î,qï ×î‹rïîGîñî$lî%ðî(Äî/;î3¶î6^ÿ „TVm$tTHEDRAGONMAPPROCESSOR125.2.7D-BusInterfaceLogic--tobewritten5.3Operation--tobewritten5.4D-BusInterface--tobewritten5.5MiscellaneousInformationMaintainenceofdirtybit:whenaprocessorwritesintoapagethefirsttimeafterithasbeenbroughtintomainmemory,itsdirtybitmustbeset.SincetheMapCachehasacopyofthisbit,thiscopymustgetsetalso.ThisisdonebyflushingtheentryfromtheMapCacheandsignallingawriteprotectfaultinresponsetoaMapForWritefromaprocessorcache.Thisoperationisissuedbyacachewhenittriestodoawrite,butfindswtEnabledclear.ItisthenuptotheMapCacheControllersoftwaretofigureoutwhetherthewriteprotectfaultisrealornotandtoupdatethedirtybitintheMapTableandsendtheupdatedentrytotheMapCacheifitisnot.6.TheMapCacheControllerAsstatedearlier,theMapCacheControllerisimplementedbysoftwarerunningonDragonprocessors.Thissoftwareprovidestwointerfaces,onetoservicerequestsfromtheMapCacheandtheothertoperformmoregeneralmanipulationsontheMapTable.DragonprocesorsaccesstheMapTablethroughthespecialmapbypassareaprovidedinlowvirtualmemory.Thisareaisalsomeanttocontainanyothersystemcode(suchassomeofthefaulthandlers)thatcannottoleratemapfaultsduringitsexecution.7.TheMapTableTheMapTableisstoredinmainmemory,andmapspairs(aid,vp)topairs(rp,flags).Itisimplementedasahashtable,wherethehashindexisderivedbyfoldingandXORingthe32bitsof(aid,vp).Eachrowofthetableis4wordslongandisquadwordaligned.Arowcontainstwomappingentriesandtwopointersusedincollisionresolution.Initially,themethodforresolvingcollisionswillbelinearchaining.Ifthiscausesperformanceproblemsthemethodwillbechangedtotreechaining.ThischangewillbestraightforwardsincetheaccessalgorithmsareinDragoncode.Sincetheremaybemorethanonemappingentryperphysicalpage,itispossiblefortheMapTabletooverflow.Thenumberofentriesinthetablewillbe1.5timesthenumberofrealpagesinmainmemory,makingoverflowextremelyunlikely.However,overflowisstillpossible,anditisaproblembecauseamissintheMapTabledoesnotnecessarilymeanpagefaultitcouldalsomeanthattherewasnotenoughspaceinthetable.Tofixthisproblem,theMapDRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'î rîóïg'ïg'î Ùqïg'î"rî#6ïg'ïg'î$ qïg'î(rî)jïg'ïg'î*>qïg'î+jrî,;ïg'ïg'î-vïg'îEpï_,î gî­îòî´qï[Ýî)î îNî?{ïX�î gî¤qïU>î)î îNî?{ïQïî gî¤îèqïN î)î îNî?{ïKPî gî¤ î¤ qïHî) îÞî¸î+îãî#¹î%î+9î/]î2Vî3¡î7 î9Šî<ƒî?ÊîC'îDŸïFZî gîÆîîÛî[î!#î#î&Tî(tî+Þî-Ñî0Ïî4‡î6éî:2î>cî@ÚîBîE[ïD³î gî î­îeîÏîNî®îãî#ºî&ëî(nî+øî. î3pî5çî9’î=î?‡îBåïC î gî îDîlîèî�î!Éî#vî)î*Æî+î î4¶î8î9Dî?UîCúïAdî gî”îî(î'îTî"î"Úî$3î';î(ìî*õî,"î/ûî2î5ôî<ÒîAîBîCîï?½î gîwî$î‚îÆîó î ”î& î'·î+·î.+î3wî5Ôî9Pî=÷îA1îB›îEPï>î gîÕî…î,î¸îî[îqî!î#qî&°î*Šî-:î0nî2Çî8î;¦î=Mî?¦îBåïcpî>Üï{ï{î?`qî@ï{ï{pî@÷ï{ï{îAfqîC®ï{ï{îD(îEœïÓî gî Ü î8îðî#îiî 3î$Tî&¾î*î-Øî/Mî4Lî6Qî;rî=ÙïÓïÓî>­qî@]ïÓïÓî@ÁîBÆîE/ï,î gî÷îŸpîï,ï,îÈqîÜï,ï,pî§ï,ï,îBqîòï,ï,îkî©î îºîbî °î$î%aî&„î*î-‡î0-î1ˆî7ùî=…î?îA°ï…î gîîÏî?îöî¢î#ïî'+î(Ùî.G ï î) îwî­îŽî¢î#S î)î+œî-cî1î71î8‰î;î? ïbî gî]î«î¤î=îî#yî%î'Åî. î1î5ªî8Cî:"îC¡ï»î gîÆîÔ î˜îëî™î"™ï?î)îîî‡î›îœî?î"vî%2î*ýî.¡î1&î6„î:3î;™î=îBgîD´ï˜î gî¢îxîî�î]î#~î%+î)‘î+3î-ˆî0åî3…î5jî7œî;:î=ŽîB¯îD]ïñî gî$îÅî5îíîÈî%jî+²î1¿î7çî=ˆî>çîAzï Iî gî-î’î îDî×îî@î"hî$%î&“î)èî-×î1î3š î:‚î>PîA¥ï ¢î gîIî,îîæî…î Gî"Òî'Óî+žî-cî/Øî4Iî6†î8­î;eîAXîCÍrïîGîñî$lî%ðî(Äî/;î3¶î6^ÿöTVm$LTHEDRAGONMAPPROCESSOR13Tablewillbemaintainedusingtheall-or-nothingrule,whichstatesthateitherallofthevp'sforagivenrpareinthetableornoneare.Withthisrule,tablemissonceagainmeanspagefault,freeingthesoftwarefromhavingtodiscriminatebetweenpagefaultsandtablemisses.8.MiscellaneousIssues--Variablepagesize--MultipleMapCaches--MultipleM-Bussystems--Inrestrictedsharingallvp'smusthaveidenticalprotectioninfoAppendixA.SizeofBypassAreaThemapbypassareamustbelargeenoughtofittheMapTableaswellascodeforhandlingtraps.SincetheMapTablewilllargerbyfar,weneedonlyconsideritssizetocalculatehowlargetomakethebypassarea.MapTablesizeinturndependsdirectlyontheamountofrealmemory.Assumingthat4MbitchipswillbeavailablewithinthelifetimeofDragon,thatwecansurfacemount1024memorychipsperboard,andthatwewillputatmost8memoryboardsonthelargestDragons,themaximumamountofrealmemorycomesoutto1GWord.ThesizeoftheMapTableis1.5*(#pagesinrealmemory)*4words.Roundingupthe1.5upto2,theMapTableoccupies223words.Notethatinroundingup1.5to2we'veleftplentyofspaceforcodeandanyotherdatathatneedstobekeptinthebypassarea.AppendixB.LayoutofIOAddressSpaceAppendixC.FormatofMapEntriesAppendixD.Notation||x||ilog2xj,orthenumberofbitsneededtorepresentxa|ba*2||b||+bvpvirtualpagerprealpagespagesizeaidaddressspaceidpnprocessornumberDRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'î rîóïg'ïg'î Ùqïg'î"rî#6ïg'ïg'î$ qïg'î(rî)jïg'ïg'î*>qïg'î+jrî,;ïg'ïg'î-vïg'îEqï_,î gîEîíîÛ îÿî¦pî"ï_,ï_,î"³ qï_,î*�î-½î1Çî5zî8Eî<.î>î?ÑpîB.ï_,ï_,îBÈqîCyï_,ï_,îCÑîD×ï]…î gî ‘pîFï]…ï]…îÊqï]…îÿîSîîaîÊîŽî"î%1î(¯î+Qî.�î1êî5î8Kî;õî@9îC€ï[Ýî gîîmîæîMî Éî"w î*9î/¨î2îî6¯î9fî<ÎzïU@î gîC îqïQñî)î î#îjïOvî)î îEîŒïLûî)î îEîËïJ€î)î îo îmîAî1î" î%qî(¸î.G î4ÕzïCãî gî£îÏîmîqî ùqï@”î)îéîìîEî&îwî!Pî$Ÿî)rî+î,Àî/î27î6î7—î:mî<î?3îAXï>íî gîËî‘îîXîIî!î%î' î)œî+Óî/@î2jî7ôî9ßî<šî>YîDï=Fî gîÔî‰îDîªî!î î#Pî'7î)éî+�î.¨î4î9î;&î=ŒîBžîD]ï;žî gîÎî=îî]î ßî$‚î'=î)<î/î3Yî5Èî:áî<©îBîDìï9÷î gîäî‰îáîî xî#þî&eî*§î-Pî0î2)î4Çî7:î8Äî<î=9îB˜ï8Pî gîmîÍî'îîbî#äî(ïî*¨î-_î2Ìî6úî9oî;î>virtual addresses invirtual addresses in>>>>>>220228DRAGONPROJECTFORINTERNALXEROXUSEONLYqïg'î rîóïg'ïg'î Ùqïg'î"rî#6ïg'ïg'î$ qïg'î(rî)jïg'ïg'î*>qïg'î+jrî,;ïg'ïg'î-vïg'îEøÿúÿî= ïSöî#$ïSöî‘ï)… îwï+,îEÞï+, î6oï)…î)Âï ³îgï=]îgï?îôïLÌîôïNsîEQïMà vî$ÌïÇð#î?AïKHþ#iî91ïO�þ$î@èïLïþ$iî#$ï3þ$Òî!}ï;µþ§$îwï-Êþ MGî!}ï.þG#Gîwï.þF#GîwïQþ GîwïNsþ #îwïNsþ )#îwïMæþ #îwï;µþ $îwï;(þ $îwïJtþ GîïKvîBïJ î%YïA9î&,ïB/î.+ïQþ Gî,ƒïP„vî+¯ïO�î<ï<óþ$£î'�ï2Wþ #î'�ï2äþ #î.+ïO�þ $î'�ïF¼þ #ÿ´TVm$úpøÿúÿî&sï/+î-ïJ»î.+ïMæþ #î.+ïNsþ #î.+ïJtþ Gî'�ï%?þG#Gî2“ï%?þG#Gî'�ïA¢þ Gî'�ï$ùþ MFî.+ïH†þFÒÿ´TVm$Bvøÿúÿî(ï"Zî4;ï+,î91ï.þF#Gî2“ï-ÊþäGî91ïQ5þ�#î91ïNsþN#î91ïQ5þ·#î!}ïNsþ ®#î2“ï2äþ ;#î2“ïF¼þŠ#î2“ïHcþâ#îD7ï-Êþ MGîO=ï.þG#GîD7ï.þG#GîD7ïQþ GîD7ïLÌþ #îD7ïK%þ #îAuïHcþ$ŒîCïF¼þ#Œ¶(TVm$spøÿúÿîCï1`îCïIîCïGlî@[ïDªî@[ïCî?Îï2äþ#WîD7ï5þ #îD7ï4‹þ #îCï9î<ï<Ðþ¸#î?Îï5þi#î#$ï2äþi#î@èïLÌþO#î?AïK%þö#îD7ï<Ðþ #îD7ïqïg'î+jrî,;ïg'ïg'î-vïg'îEøÿúÿî6üïDhþ$§î2ï:|þ$ _î2ï:Yþ±#î2“ï:|þ$ _î2ïC¸þ�#î2“ïC¸þi#î2“ï:|þ$ _î2“ï:Yþ�#î6üï:|þ$ _î5âï:|þ# _î7‰ï9ïþG ­î0_ï:|þ# _î1yï:|þ# _î-ï:YþŒ#î-ï:|þ$ _î-ïC¸þi#î,ƒïC¸þ�#î-ï:|þ$ _î,ƒï:Yþ±#î,ƒï:|þ# _î,ƒïDEþ �#î,ƒïDhþ#§î,ƒïEìþ y#î1yïFœþG5î+iïHÑþFÜî»ïC”î.ïB3þ$OîïB3þ#Ovîï6}î.¸ï6}îÅïC”îIï>žîÅï=„îÅï@öþ¸#î cïE‚þ#OîàïE‚þ#Oî cï?Üþ#Wîàï?ÿþ#4î»ï=§þr$î" ï=Ëþ#4î»ï=Ëþ$4î»ï?ÜþO#î8ï;sþr#î‡ï;–þ#iî8ï;–þ$iî8ï?ÜþO#î.ïE_þÜ#î" ïB3þ#Oî.ïBþÿ#î8ïBþÿ#î8ïB3þ$Oî8ïE_þÜ#îï9>þ *$î#$ï9bþ$ :îï9bþ# :îïFyþ #î(§ïX†vî'�ïZÞ î%æïY¡þ Fî%æïL­þF :î0ìïL­þG :î%æïLfþ MGî%æïW�þ #î+öïFVþ “FîµïHŠþ0‚Gî+öï9¨þ ÚGî+öï9ïþG ­î>'ïIÈî"—ï+wð%røúïîGîñî$lî%ðî(Äî/;î3¶î6^¦TVm$¾ÿGATESû—ÿ HELVETICAÿ ÿ TIMESROMANþŸ ÿMATHþŸ ÿ TIMESROMANþæ ÿ TIMESROMANþŸ ÿ TIMESROMANþY ÿLOGOü´ÿ HELVETICAþŸÿMATHþæÿ HELVETICAþŸÿ HELVETICAþæÿ HELVETICAþÿ HELVETICAý…ÿ TIMESROMANþæÿ TIMESROMANþŸÿ TIMESROMANþŸ”B6! 6.�>bL ÚXAf ¡oÉ} ¸†@Œ6�î’j/–” lMšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*[]<>Users>sindhu.pa>map>MapProcessor.tioga#Tuesday, April 15, 1986 5:38 pm PST