TheDragonComputerSystemAnEarlyOverviewEdwardM.McCreightDraftofDecember7,1984Releaseas[Indigo]Documentation>DragonOverview.tioga,.presscCopyright1984XeroxCorporation.Allrightsreserved.Abstract:Dragonisa32-bitcomputersystembeingdesignedatXeroxPARC.Thisdocumentisanintroductiontoitsarchitecture.Aversionofthisdocumentisbeingpresentedasahalf-daylectureattheNATOAdvancedStudyInstituteonMicroarchitectureofVLSIComputersinUrbino,Italy,July9-20,1984,andasachapterofthebookthatcustomarilyissuesfromtheseInstitutes.XEROXXeroxCorporationPaloAltoResearchCenter3333CoyoteHillRoadPaloAlto,California94304pïWùîâîšîâî,�qïSîâî^î/rïN îâîXîÓïIîâîFîdîêîísïD!îâîetïD!î™ð3î:>uï?+îâsï?+îÑî9îî† î#Ëî%„î(Óvï;Ýîâtî ï;Ýï;ÝîîGîºîëî!ôî(|î-Vî1Sî7™î98î=bï:5îâîøîÁî)î î$>î%Ýî'² î0“î1äî6êî8ˆî;/ï8Žîâînî„îrîlîµî$Xî)Jî+wî-‹ï8Žï8Žî.ttï8Žî1`î8Nî¶î¤ ï;hî¤ï8î¤ ï4Êî¤ TVm$q3IntroductionDragonisanewcomputersystembeingdesignedattheXeroxPaloAltoResearchCenter.InmanywaysDragonisthenewestdescendantinthelineofresearchpersonalcomputersthatbeganin1973withtheAltoandendstodayintheDorado.Likethosemachines,Dragonwillbeapersonalcomputer.Tous,thismeansahigh-performancedisplaycontrollerandavirtualmemorywithonlyrudimentaryprotectionhardware.DragonandDoradobothexecuteprogramscompiledfromtheCedarlanguage.(CedarisanextensionoftheXeroxMesalanguage,whichisaderivativeofPascal.)WeplantobuildmodestnumbersofDragonsforourselvestoallowustoexploreusefulwaysofexploitingsuchperformanceinapersonalsettingbeforesuchmachinesareeconomicalinwidespreaduse.Dragondiffersinsignificantwaysfromitspredecessors.Mostimportantly,itisatightly-coupledmultiprocessor.Weseemultiprocessingasanimportantwaveofthefuture,andweneedtounderstanditsimplicationsforsoftwaredesign.Dragonisalsoa32-bitmachine,bothinitsarithmeticpathandinitsvirtualaddresses.Ithasanewinstructionset,considerablyreducedinsemanticcomplexityfrompreviousmachines.Dragoncanhandle16-bitdata,butatanoticeablepenaltyincodesizeandexecutionspeedcomparedwith32-bitdata.Thesefactswillencourageoursystemsprogrammerstoeliminatevestigesof16-bit-nessthatsurvivefromAltodays.Dragonisalsoourfirstmachinetoincludecustomintegratedcircuits;previousmachineswerebuiltofcommercialintegratedcircuits.Dragonisnotevenclosetobeingfinished.Ourlogicsimulationsareabouttwo-thirdscomplete,andfloorplanningandlayouthavebegunonsomechips,butmodestarchitecturalrefinementsarestillaweeklyevent.Wecanfairlyclaimtohavemadeasolidbeginning,butamountainofhardworkremains.WehopebypublishingthispapertostimulatediscussionsthatcouldmakeDragonabettermachine.KeyIdeasofDragonOurpresentworkhorsemachine,theDorado,isapersonalcomputerinthesamesensethataRolls-Royceisapersonalautomobile.Itisexpensive,power-hungry,andnoisy.Thosefactsalonewouldbeenoughtomakeuswantabettermachine.Butwealsohadsomenewideasthatwewantedtoinvestigatethroughimplementation.MultiprocessingThefirstideaistightly-coupledMIMD(multipleinstructionstreamsoperatingonmultipledatastreams)multiprocessing.Asweconsideredthedecliningfractionoftotalsystemcostrepresentedbyasingleprocessor,theslowadvanceinprocessorcircuitspeed,andthekneeineveryprocessorspeedvs.costcurve,itbecameapparenttousthatthemoststraightforwardwaytoobtainanorder-of-magnitudeincreaseinprocessingpowerwasnottoattemptanorder-of-magnitudeincreaseincircuitspeedorarchitecturalcomplexity,butrathersimplytousemultipleprocessors.Thisapproachhastwomajordrawbacks.Thefirstisthatasthenumberoftïg/îEÉyï^õîâ |ï[¦î¤îíî¤îîPî#Åî(‹î, î2¦î4‰î73î; î?ïYÿîâîðî�î’î ‚î$î))î*»î-@î1ì î90î;î=‰î@eïXWîâî<î¶î [î#î'#î(Çî,î/î1iî4yî7'î:Yî>î?¾ïV°îâîî`î"î"¦î'Èî*–î,©î-öî3œî:èî=2î?|ïU îâî‰îî ˜î%® î,Qî/kî0øî5¶î;†î?ïSaîâ î îîî%xî*Ëî-Õî33î6Âî< ïQºîâîîµîLî›î&«î+tî-î/>î5”î7„î:î>tïPîâî!îPîÝî( î"žî$xî*3î,Þî0î1éî5©î:“î@eïNkîâîÐîxîÕîîî$î&<î(Uî-©î2,î5óî8 î>ìïLÄîâ îÄîOîWî¸î"üî')î*8î0î2O î9_î:ë ïKîâïH¡î¤î¶îîÚ î#…î&ôî*nî,\ î5Lî8ç î@ÈïFúîâîcî¡î3î%rî(î*zî4bî6%î8*î>¡ïESîâîyî¶îî¦î«îæî r î'yî)1 î0Æî2áî88î=ïC«îâîWî-î`îaîGî!�î#Dî%( î+´î.äî1¥î3\î5@î9¤ î@¦ïBîâî;îHî îØî1 î& î+4î,Æî2Z î9Dî<�ï@]îâîÞîéîî"î&î)}î, î-®î.ã î5|î:gî< î?rï>µîâî¹îîî"‘î%Ìî)ãî.¨î2Êî6î8æî?“ï=îâîÊ îî¯î#”î(†î*' î0õî3«î8Pî;Ÿî>¡ï;gîâîîÅîÍî”î¨î$hî&Rî+mî0h î7î<�ï9¿îâîëî<îƒî< î$š î+ï7Dî¤îÄîQîçîOî!×î#§î'’î-óî0÷î4i î;Çî><ï5�îâ îuîºîwî!Øî'˜î*Tî.ˆî1Ôî6î8î;«î?�ï3õîâîÌ îÒ î#rî%çî(¨î)óî.°î3ƒî6.î8Ûî<šî@oï2Nîâî4îþî3î� î!^î#êî%î+_î-#î0jî3òî:î<¤î@"ï0§îâ îêîÐîõîçî% î,\î/nî3}î7uî<¸î>&ï.ÿîâyï(aîâî?î—îš|ï%î¤î¹î¿î žî&¬î)>î.Óî0pî1Ìî7‚î=Þî?¾ï#kîâîïîîzî3 î$„î&€î(9î.L î7yî9€î;{ ï!Äîâ î/îúî›î#Æî' î*Óî/î1î6î7Ùî;¡î=„î@ôï îâîî¾î‹îßî!×î$»î(zî+“î/=î27î4Šî9î;Z ïuîâîzï&îâ|ï×î¤îšî�î¨î2wî%Íï×ï×î&Þ|ï×î)âî/ó î6ìî;ÿï/îâîêîeîlîÜî)�î+¡î-Ë î4²î7î=ïˆîâî“î±î%îê î"Mî$Aî%cî)F î/ªî2î5î:dî< ïáîâîøî îŸîÚîî �î$ î*î-Ìî/¸î2`î6Tî7†îî¥î Eî%Cî'$î3>î8qî:î><ï ëîâî¦ î‹ îéî"jî&xî*èî,–î/ ï oî¤îßîî–î dî$| î,Uî/Oî2Hî3Öî6Æî8–î;î@e âTVm$4processorsincrease,sodoesthedifficultyofroutinginformationamongthemingeneralways.Iftheprocessorsareallattachedtoacommonsharedmemorybus,thenaccesstothatbusbecomestheresourcethatlimitssystemperformance.Apartialsolutiontothisproblemistointerposeacachememorybetweeneveryprocessorandthesharedmemorybus.Untilrecentlythissolutionhassufferedfromthe"cacheconsistencyproblem."Whenaprocessorstoresnewdataintoitscache,shouldthatstorealwaysappearonthesharedmemorybus?Ifso,seriouscontentionresults,becausetypicallyone-thirdofmemoryoperationsarestores.Ifnot,thenwhatpreventstwocachesfromhavingdifferentopinionsaboutthecontentsofthesharedmemory?Fortunatelyanewarchitecturalelement,thetwo-portcache,reduceseachprocessor'saverageneedtostoretothesharedmemorybus,therebyallowingmodestnumbersofprocessorstocoexistwithoutcripplinginterference.Theseconddrawbackismoreserious,especiallyinapersonalcomputer.TotakeadvantageofDragon-stylemultiprocessing,theremustusuallybeseveralprocessesreadytorun,andtheinterprocesscommunicationandsynchronizationamongprocessesmustbemodest.Whilethisisthenormalcaseforaheavily-loadedtimesharingsystem,maintainingmanyreadyprocessesinapersonalcomputerrequiresbreakingupsuchcompute-boundprogramsascompilers(andmanyothers)intoprocesses.Ourexistingcompilers,forexample,werewrittenassingleprocessesbecauseweknewthattheywouldbeexecutedonsingle-processorsystems.Tohavewrittenthemotherwisewouldhavecomplicatedtheprogrammingtaskandmadethecompilerrunmoreslowly.Dragonintroducesustotwointerestingsoftwareproblems.First,howshouldweadaptexistingsoftwareforthenewmultiprocessinghardware?Second,howshouldthecomingwaveofmultiprocessorhardwarechangehowwewriteprograms,orhowwethinkaboutprogramming?WeatXeroxsupposethatitishardertowriteprogramsasmultipleprocessesthanassingleprocesses,butthatsuppositionisbasedmoreonsecond-handreportsthanonfirst-handexperience.WeintendtouseDragonasatoolforinvestigatinghowDragon-stylemultiprocessingcanbeusedtobestadvantage.FasterexecutionSpeedisn'teverything,butit'skilometersaheadofwhateverisinsecondplace.Processorspeedcanbeputtousedirectlyinthosefewplacesinaprogramwhereit'sneeded,andinotherplacestradedawayforclarityofexpression,compactnessofrepresentation,anextralevelofinterpretation,delayedbinding,garbagecollection,orahostofotherworthwhilethings.WehopedtoimprovethespeedofDragon,comparedwithourearliermachines,primarilyintwoareas.Thefirstisserialexecutionofbasicblocks,wherepipeliningandrichpipelinebypasspathsreducetheaveragenumberofcyclesperinstruction.Thegoal,likethatoftheIBM801,wasasimpleinstructionsetandastoragehierarchythatwouldpermitthemachinetoexecuteaninstructionnearlyeverymachinecycle.Thesecondareaofimprovementistheprocedurecall,wheresimplifiedparameterpassing,acachedcontrolstack,andeliminationofseveralindirectionsincommoncaseswouldprovideadramaticspeedimprovementoverourearlierimplementations.CodedensityOneofthemostnotableachievementsoftheMesamachineinstructionset,implementedinmicrocodeonsuchmachinesastheDoradoandtheXeroxStar,wastïg/îEÉ|ï_/îâ î¨îpîbî Àî#N î)dî+Kî0M î8î<¹î@pï]ˆîâîÂîî¡î î"±î%î'î,•î.Pî/‡î5Cî9µî?/ï[àîâî4îmîGîAîî#Éî&Tî+øî.òî2èî7� wî@Æï[à|ïZ9îâîwîÿîóîÚî#¤î%Uî'Iî-�î.ñî3î8µî>jïX’îâîßî€îÉîî#pî&¶î*>î/_î1êî7î9uî>·ïVêîâîDî î÷î$ î('î)Sî/hî3Kî6;î9Cî<î=úïUCîâîGîþîCî‘î"î#ðî&8î*‡î/Ýî3Yî4Äî6Éî;N ïSœîâî«îíî“î$½î&—î,% î2ôî5hî:gî< î>øïQôîâîIî×î�îæî"Wî&Üî,‹î2/î6î8ƒî=üî?¾ïPMîâîšî¿ î"†î$î'C î/zî5[î8 î=úïN¦îâîöî: î<î#Nî&¾î(€î+ïî-°î0#î4›î:î=ïLþîâîeî.îßî ˜ î'/î(Þî-dî2pî8B ïJƒî¤î•î?î�î!î$¾î)Ë î0î1ßî3"î8¿î?÷ïHÜîâîBî î@ î#Ëî.^î2Nî6î;6î=�ïG4îâîîîùîî! î#Ÿ î+j î5Sî8@ïE�îâîMî0î~îTî$-î(+î*²î,î.Hî2êî5¾î7áî8ð ïCæîâ î´îä î#Öî'þî,&î2€î4Œî6î;óïB>îâî îÁîÅîç î(Ïî.Ôî0sî6£î9Åî=�ï@—îâî¬ îjî@î = î&Çî(öî.ºî1ýî6¢î8Cî< ï>ðîâîöîî«îlînî#Žî%qî+ î-î6þî<¾î>×ï=Hîâîºîhî·î" î%v î-Hî/Í î8„î;‚î>^ï;¡îâîAîýî“î&ï9&î¤î­ îfî?î øî#® î*qî/óî6ëî:”î=¢ï7îâî:î7îrî î"Šî%î(9î2>î9¼î?ï5×îâîNî�îkîØî� î(ªî.¢î3:î6.î8Eî;³ï40îâîÈîíî6î÷îû î'äî*�î,Jî0�î5óî8ãî:[î;èî@oï2‰îâîrî˜îYîåî%õî).î*ïî.í î5Uî7éî:Ê ï0áîâîMî-î¿îÄ î!Èî&oî)”î+™ î1ã î9—îâï-“îâî�ît zï*Dîâî%|ï&õî¤îÁî´ îÉî"Dî$p î+î/î0Åî6›î8î9§î>2ï%Mîâî î÷î�îˆî î!Íî$Mî)Mî+î.°î1\î5î78î8lî>ï#¦îâî'îZî$îäî•î"Àî'"î*±î-î1Aî3 î:/ ï!ÿîâîyî¦îsîÄî!çî#~î,Sî1Gî6’î;‘ ï Wîâî²îçîìî±î\ î!�î&šî)0î-vî/0î4©î7î;î<Æï°îâî�îÚî£î %î&Äî,ÿî.ëî1Õî6ªî9Àî<Öî>€ï îâî4î î™îRî#‡ î*%î,ùî/ãî5Mî9Úî=¢ïaîâîZîrî·î‰î!™î$' î,î/î2jî5.î8î9æwî<_ïaïaî<É|ïaî?0ïºîâî�îºî îýî î"Óî#þî(²î.Çî1—î5Çî:9î<™ïîâîî…îõ î Pî$ýî)1î/5î4ƒî7Ûî<ìî@eïkîâ îîîŸî"Mî%[î)� î03î6àî<7î=‹ïÄîâî}î2îÒ î ÷î"™î' î.qî0î5 î8üî=ïîâî î½îž î"î%*î'µî+øzïÎîâîk|ï î¤î×îÀîOîÜî!ö î*˜î,�î/î2êî8ž î?©ï Øîâ î"î½îZî!Nî$mî*cî+ÿî.Mî3Eî5êî88î·ï[àîâîÔî·îAî î#î%bî':î)wî+œï[àï[àî,|ï[àî.î4± î;¶î?ïZ9îâ îîî�îKî"Žî%ƒî(ýî.;î3î4Šî7vî8½î<�ïX’îâîùî5î¤îžî´î$Óî)î+î1úî5Œî:€î=wïVêîâ îîÂî[î…î 9î$@î'¸î*î0î2èî5cî8xî:6î?©ïUCîâî1îQî îùî Kî#šî%;î(Šî,î2Xwî9+ïUC|ïUCî:uî<ýïSœîâî¢î&î îƒîcî ¥î&Lî((î*Ÿî-Lî4@î5Äî;lî=2î@ÈïQôîâî2îÇîDîÜîIî"™î%qî'î,·î0î5]î6õî;î>RïPMîâî� îkïMÑî¤îpîmîî™î"6î$î)gî+@î/Bî1âî3zî6\î9`î:sî>3ïL*îâîËîØîãî"´î&0î(� î0}î3Kî5©î9R î?fïJƒîâîËî�îËîzyïCåîâîM|ï@•î¤îNî½îî0î$;î&.î'“î,>î1xî7Eî:Wî?ï>îîâîjîãwîPï>î|ï>îîaîhî î# î)¸î.î3!î8/î;Wî>øï=Fîâwî}ï=F|ï=Fî�îæîWîƒîwî ïî"Jwî$æï=F|ï=Fî%÷î(öî*”î+­î0ãwî3ªï=F|ï=Fî4¼î7»î9î:0 ï;Ÿîâîpîäî�î"Èî%ªî* î,Jî2;î6Áî8þîÝî@ôï8Pîâî# î;wî!4ï8P|ï8Pî"Eî%« î-�î0+ î:Kî<§î>'ï6©îâ îïîwîî Aî"/î$€î*›î0Iî26î4ˆwî9Cï6©|ï6©î:Tî=Vï5îâî^îjwîÐï5|ï5îáî÷î Pî# î&î+3î-ðî1î3Øî97î=4ï3ZîâîwîYï3Z|ï3ZîÃwîsï3Z|ï3ZîÔî‹ï0ßî¤î…wî¡ï0ß|ï0ßî²îÌ î&Uî(²î.¡î07î4+î6ëî8£î; ï/7îâîñîpîî¥î"qî'î-÷î0Lzî1üï/7ï/7î2­|î6åï/7ï/7î8Iî;õï-�îâîî¦ în î Íî#Eî(•î*É{î,Xï-�ï-�î,¼|î/Âï-�ï-�î0äî4Mî8áî:-îRï&¬î'îD î"î$×î+�î.ïî2àî6zî8§î;o ï%î'î:îÅî%kî(§î,ï#î'zîÕï#ï#îÒ{ï#î˜|ï!(î'îˆî ï:î'î3 {î%äï:ï:î&• |ïKî'{î3ïKïKîä}î( ïKïKî){ïKî+Y }î5+ïKïKî6;{ïKî8y|ï]î'{î3ï]ï]îä}î( ï]ï]î){ï]î+Y }î5+ï]ï]î6;{ï]î8y|ïoî'{î3ïoïoîä}î( ïoïoî){ïoî+Y }î5+ïoïoî6;{ïoî8y|ï€îî¢îÅî"!î&î)î-'î.Ñî5î7äî<Êî@-ïÙî' îÔî�wî"ƒïÙïÙî#”|ïÙî%Ùî'çî)gî+Åî11î5~ î@pï2î'î˜îÊîvî"î%?î'�î*ª î1¤î4-î;î<±î?ïŠî'î½î"cî$æî( î/9î2Úî6Eî8Èî<_î?¾ïãî'îkî ‘î,î6Rî9eîî@Èï ”î'î{î5î"‚î$æî'mî-î.Öî3Yî8Îî;îî?Êï íî' xTVm$µ60:WriteQuadaddress1:data[address]2:data[address+1]3:data[address+2]4:WriteQuadReadydata[address+3]iii.WriteSinglebroadcastsasinglewordinthememoryaddressspace.TheMastercachedoesthisbecauseitwantstochangeaword,andtheitsSharedflag(tobedescribedshortly)forthatwordisset,indicatingthatacopyofthatwordmayexistinothercaches.Thiswordisnotwrittentomemory,andthereisnoflowcontrol.0:WriteSingleaddress1:data[address]iv.IOReadreadsasinglewordintheI/Oaddressspace.0:IOReadaddress{anythingbutIOReadDone}*w+1:IOReadDonedatav.IOWritewritesasinglewordintheI/Oaddressspace.IftheaddressedSlaverespondswithIOWriteDoneincycle1asshown,thenthenexttransactioncancommenceinthenextcycle.OtherwisethenexttransactionwaitsuntilthecycleaftertheSlaveresponds.0:IOWriteaddress1:IOWriteDonedataInterprocessoratomicityisimplementedbyallowingtheM-busmastertolockthearbiter.Thereisnoautomatictimeout,soprocessors(orcaches)mustbedesignedsotheycannotlocktoolong.CachesDragoncaches,likeothercaches,havetworelatedpurposes.Acacheprovidesitsprocessorwithfasteraccesstomostfrequentlyaccesseddatathanthememorysystemcould.ThisisdoublyeffectiveinDragon'scase,becauseevenwhenaDragoncachedoesnotcontainthedatarequestedbyitsprocessor,itcanoftenimplementbyitselfthevirtual-to-realmappingthatisrequiredinordertofindthatdata.ItcandothisbecauseoursolutiontothecacheconsistencyproblemrequiresthataDragoncacheentrycontainnotonlyvirtualaddressanddata,butrealpagenumberaswell,whichisnearlyalltheinformationinthemappingtableentry.Byaddingtherestofthemappinginformationtoeachcacheentry,weenabledourcachetomapanyvirtualaddressforwhichitcontainsanentryinthesamepage.ThesecondpurposeofthecachesistoreducetheM-busbandwidthneededbyasingleprocessor.ThisistheonlywaythatmodestnumbersofprocessorscanshareacommonM-buswithoutcripplingmutualinterference.CacheArchitectureADragoncacheintermediatesbetweenaprocessor'sP-bus(thecache's"front"door)andthesystem'scommonM-bus(thecache's"back"door).Acachecontains64associativeentries,eachofwhichcomprisesthevirtualpagenumber,therealpagenumber,theaddressoftheblockwithinthepage,theblockof1632-bitwordsofdata,andvariouspropertybitsforthepageandforeachgroupoffourwordstïg/îEÉ|ï_,î'zîÕï_,ï_,î5{ï_,îû|ï]>î'{îÕï]>ï]>î… |ï[Pî'{îÕï[Pï[Pî… |ïYbî'{îÕïYbïYbî… |ïWtî'îÕ {ïWtî#È|ïU‡îî î¦ î#_î$’î(†î,î-Ïî08î5¯î:¢î?FïSßî'îÄî’î"Ãî%fî*‰î+áî/Ãî1sî6î7Hî;*î=âî@CïR8î'îñîÉî!î#%î)rî.Ÿî0þî3îî7˜î9&î;¼ ïP‘î'îüî-î‡î Gî#î&¬î)·î,ïî.¤î2Kî7†î:§î>7zî?ªïP‘ïP‘î@e|ïNéî'îÚîˆî#Mî&î)Žî*úî-î0ïLûî'zîÕïLûïLûî5 {ïLûî t|ïK î'{îÕïK ïK î… |ïIîîôî+îÉîóî"Þî&gî(î*tî-Aî2+ïG2î'zîÕïG2ïG2îY{ïG2î|ïEDî'îˆî ïCVî'î3 {ïCVî#±|ïAhîî¡î*î=îwî#sî' î(Ëî+;î.î3î7Åî9Wî;Çï?Áî'îÚî «î#Ï î,˜î.Pî1Íî3 î4Äî9uî<¥î?ï>î' îuî!Sî(€î*€î-2î0”î5ˆî<\î?ïî¨î£îðî yî%ßî'nî-+î0Sî5Vî8}î<î=ï'9îâî»îøîzîgîÓî"åî)3î+<î-# î3œî4ÿî7˜î;9ï%’îâîòîcîÖî”î%dî(Fî)Æî/jî1-î4öî6¸î9»î<�î@¦ï#êîâî†î¦î`î›î?î#™î%aî'Ùî+¾ î3 î8§î> î@ôï"CîâîÖî—îîóî"\î%jî)¹î.˜î1Dî4–î7 î9¶î<ñï œîâî˜îæîüîpî¥î�î" î)—î+Mî-µî3xî6èî;hî=ŒïôîâîRîîÎî?î î%¦î'fî*§î.„î2�î4ºî9÷î<“î@oïMîâîüî�îøîâî î$-î%ƒî*æî,×î0jî2î4xî7õïÒî¤îuîî=îðî"Iî&“î'øî) î.wî0oïÒ|ïÒî1€î4Šî;_î@"ï+îâî5îI îŠîÍî bî"êî&-î).î,%î1î6ðî8Ò î?“ïƒîâî�îªwîZïƒ|ïƒîlî|î"ˆî(Yî- {ï5îâî |ïæî¤î-î*îô î$oî)Ûî+ î1ðî5Îî8¥î=Jï?îâî—îDî™îæî"Œî&çî)µî.Sî2ñî7wî8ùî<ºï —îâîï îÐîÁî î!ûî&1î,ºî/Bî3Äî73î<àî?gï ðîâîî•îèîÆî sî"Æî&zî*³î-î0™î2ìî6 î8Mî:&î>ï Iîâî¶î.îîäî!™î$Vî&®î)(î,Šî/\î1µî5î9î:òî>ÿZTVm$ 7withintheblock.Acache'sP-busconsistsofa32-bitphase-multiplexedvirtualaddress/datafield,aparitybit,acommandfield,areadybit,andanerrorfield.ThereisonlyoneprocessoronaP-bus,anditisalwaysmaster.Oneormorecaches,andthefloating-pointacceleratorchip(s),areslavesontheP-bus.AP-busslavedecodesitsinstructionsfromacombinationoftheP-buscommandandvirtualaddressfields.Commandstocachesinclude{Normal|Locked|IO}{Read|Write}.Aslaverespondsbysettingthereadybitandtheerrorfield.Whenacachecontainsdatabeingreadorwritten,itassertsreadyinthephasefollowingthereadorwriteoperation,sothatinthebest(and,wehope,mostlikely)case,acachereadorwritetakesonemachinecycle.CacheerrorsincludePageFaultandWriteProtectFault.Atthemoment,thecachereplacementalgorithmreplacesentriesinstrictlysequentialorderwithoutregardtowhethertheirdataisdirty,althoughthismaychange.Acache'scommanddecodingcanberestrictedtoasubsetofvirtualaddressesviaabit-serialinitialsetuppath.ThismechanismallowsmultiplecachechipstobeattachedtoaP-bus,therebyimplementingalargerbutset-associativecache,andimprovingthehitratio.CacheConsistencyAsystemofcachesisconsistent,orcoherent,ifallcopiesofthevalueineachmemorylocationareidentical.AnobviouswaytomaintainconsistencyistobroadcastallstorestotheM-bus.Sincetypicallyone-thirdofdatareferencesarestores,atbestthissolutionreducestheM-busbandwidthrequirementsofaprocessorbyafactorofthree,independentofcachesize.ThisfactorisnotlargeenoughforDragon.AbettersolutionistobroadcastontheM-busonlythosestoresthataffectdataexistinginmorethanonecache.DashiellandThackeratXeroxwereamongthefirsttodiscoverawaytoimplementthissolution,andGoodmanattheUniversityofWisconsindiscoveredasimilaroneataboutthesametime.Bothsolutionsdependonhavingasecondassociatorineachcache,calledtheback-doorassociator,orthe"snoopy"associator.ThissecondassociatormonitorsM-busreads,andvolunteersdatathatitknows.Ifthedatacomesfromanothercache,insteadoffromthemainmemory,thenallcachesinvolvedmarktheircopiesasshared.AnychangetocachedatathatismarkedsharedisbroadcasttotheM-bus.TheDragonimplementationusesaSharedDatalineintheM-bus,andaSharedflagineachcacheentry.DuringtheReadQuadM-bustransaction,iftherealaddressofsomeentryinanon-mastercachematchestherealaddressontheM-bus,thatcachesetsthatentry'sSharedbit,assertsSharedDataontheM-Bus,andprovidesthatentry'sdataduringdatatransport.DuringWriteSingle(causedbyaprocessorstoringtoacacheentrywhoseSharedflagisset),iftherealaddressofsomeentryinaslavecachematchestherealaddressontheM-bus,thatcacheassertsSharedData,andoverwritesthatentry'sdataduringdatatransport.ThemastercacheentryalwaysloadsitsSharedflagfromthevalueoftheSharedDataM-Busline.Inthismanneracacheisconstantlyawareofshareddata,andeventuallydiscoverswhensharingstops.CachePerformancetïg/îEÉ|ï_/îâî'î†ï\³î¤îî¬îvî `î"î#î&öî2Mî6‘ î>•ï[ îâî'î:îÊîî‹î"/î#tî'Zî)ëî,¾î.Éî2Vî6™î:¶î<=î?rïYeîâîBî•î î‘î •î"7î#ïî( î.…î1Öî3æî7Æî<»î?¾ïW½îâ îx îUî#,î%wî)Yî+Wî-®î2Yî3Ýî7¶î;î@CïVîâ îXîÖî î#î$ëî'bî+Zî1Òî4 î9î>ïToîâî:îùîZî!Iî"Žî'¸î(¤î-žwî.‹ïToïToî.õ|ïToî0fî2\î6 î6øî:éî=î>·ïRÇîâîµî¾î1î�î!uî#Ÿî&cî(Ïî,Nî0tî4™î5Ðî9©î?ïQ îâîêîBîCîŒîî#¬î'´î)Ÿî,<î0[î6ªî9Gî<Ÿî> ïOyîâ î]îîáîˆîàî ½î$>î&_î*#î-xî1©î4éî6 î9Ðî<ãî> ïMÑîâî`î î�îßî# î'î+ãî2Zî5ïKVî¤îÚîuîvîî# î+î1�î7 î;¹î=¢ïI®îâ î�îkî î#î$ïî*fî-Õî1î2˜î6kîRïD¸îâî—îfîwîîáwî+ïD¸|ïD¸îÓî#[î(| î1\î2¦î6²î9SïCîâîî½î`î¿î Ü{ï?Áîâî wïíï:Êîâî¡î*îÏ î#ßî&„î+öî/ î1 î7- î>²î@oï9#îâî(î3î.îøwîrï9#|ï9#î „î$¦î(vî.î4:î6î9. î?Êï7|îâîîˆîWîãîî#úwî&Dï7||ï7|î'Vî*Pî1 î9Sî:öî< ï5Ôîâîàî îúî´î˜ î#‰î%Dî)î,�î/¹î3§î5î7Œî:õî?áï4-îâï1±î¤î%îîJî«îOî%oî'kî)Àî.î1*î4¾î8”î;Xî?ï0 îâîîÂîhî¢îaî$0î)§î,rî1Þî3Šî7Àî;%î?¾ï.cîâîÇî‚îñî(î îÇî%¹î(gî. î0Ñî7_î9î;p ï,»îâîÍî— î™îõî$­î'‹î)Vî-jî/üî3¬î8Èî·ï&îâî/î™îKî^î;î#yî(ÿî,î/³î3Ïî5jî:…î=vï$wîâî�î\îaî/î›î ›î%î&lî,—î.Ewî0¥ï$w|ï$wî1¶ï!ûî¤înî_ î#0î&î'7 î.ªî1Sî2ówî5Eï!û|ï!ûî6Vî9°îwî:ºï¬|ï¬î;Ëî?PïîâîËî‰îtîî!Çî$Yî(Å î0dî2‡wî5ï|ïî6î9ºî<�ï^îâî¶î-î8î®î ¹ î'~î,M î3Ýî8Ùî:Ûî< ï¶îâîxî+îYî*îÂî!õî&¢î)]î*Îî-Áî/&î1‹î4Fî95î:òî>ŠïîâîpîzîÁîmî›îÛî"qî';î)"wî+aï|ïî,sî/»î2iî6î:D ïhîâîÖ î©î´î `î#¡î(Nî+� î2Áî5Õî:‚î>ŠïÀîâîOîêîÌî}î ;î#ªî&î)Ãî+„î-ì î5uî:î=¥î?|ïîâîî>îîž î!4î%?î' î+…î.öî1 î8nî>iïrîâîµ{ï zîâî  ¤TVm$ç8Theultimategoalisfortheentiresystemtoexecuteasetofprogramsasfastaspossible.Systemperformanceisdeterminedbytheinteractionofprocessors,caches,andM-bus,sowecannotdiscusscacheperformanceinisolation.Althoughwehaven'ttalkedmuchaboutaDragonprocessoryet,weconcentrateourattentiononhowourcachesbehavewhenattachedtoaDragonprocessor,sincewebelievethatthatbehaviorwillhavethegreatestinfluenceontotalsystemperformance.Othercontributionswillcomefromotherprocessors:themapprocessor,thedisplaycontroller,andtheI/Oprocessor.ADragonprocessorattachestotwocaches.Itfetchesitsinstructionsfromone,andfetchesandstoresitsdataintheother.Weexpectthesetwocachestodiffersignificantlyinsuchperformancestatisticsashitratioandaveragemachinecyclesbetweenreferences,becausetheprocessorusesthetwocachesquitedifferently.AtthemomenteachDragoncacheisplannedtocontain64entries,eachentryincludingavirtualaddress(divisiblebyfourwords),acomparator,andfourdatawords.Thatisafairlysmallcache,andweareconsideringenlargingit,butfordefinitenesswewillassumethatsizethroughouttherestofthissection.Ourowndataaboutcacheperformancearefromtwosources.Oneisacycle-by-cycleDragonsimulation.FromthissimulationweknowquitealotabouttheDragon'sperformanceonafewsimplebenchmarkprograms,notablyBaskett'swidely-circulatedPuzzle.SomestatisticsforPuzzlearelikelytoapplyaswellformore"typical"programs(likecompilersortextformatters),whileothersprobablywillnot.WeexpectthatPuzzle'saverageof7machinecyclesperdatacachereferenceand1.8machinecyclesperinstructioncachereferenceisfairlyrobust.Ontheotherhand,weexpectthatcachehitratioswillvaryconsiderablyfrombenchmarktobenchmark.Asanextremeexample,thePuzzleinstructioncachehitratiowasveryhighbecausenearlytheentireprogramfitwithintheinstructioncache.Onewouldnotexpectsuchbehaviorfromamorecomplexprogram.Ideally,cycle-by-cyclesimulationwouldtelluseveryperformancestatisticweneed.Practically,itsuffersfromtwolimitations.OurDragonCedarcompilerisnotready,sonotmuchDragoncodeexists,andwhatdoesexistishand-coded.Furthermore,evenifwehadplentyofinterestingprogramsexpressedasDragoncode,oursimulator'sspeedlimitsthenumberofinstructionswecansimulate.OurotherperformancedataaremeasurementstakenbyN.Suzukitwoyearsago.HemodifiedourstandardDoradomicrocodetocollectstatisticsonDragoncacheperformance.HepretendedthattheDragonwasexecutingtheDoradoMesainstructionset,andhecollectedstatisticsonlyfordatareferences.Thetwokindsofperformancedatamakequitedifferentassumptions,sothefactthattheyagreeverycloselyonPuzzle'saveragedatacachehitratio(89.7%vs.89.8%)shouldberegardedasaccidental.Suzuki'sdataalsoindicatesthattheMesacompiler(a"typical"program)hasadatacachehitratiothatis7%worsethanPuzzle.Thissuggeststhata"typical"programmightachieveanaverage83%datacachehitratio.Ifweassumethatacacheoperationhappensonceeverysevencycles,andthattheaveragecachemisscostssixcycles,thenDragonshouldrun14%slowerona"typical"programwithourdatacachethanwithaninfinitedatacachethatnevermisses.Performancewilllikelybeworsefortheinstructioncachethanforthedatacache.Unfortunately,atthemomentallourinstructioncacheperformancedatafor"typical"programsissecond-hand.J.SmithandJ.Goodmanmeasuredaverageinstructioncachehitratiosoverthreeprograms,NROFF,CACHE,andCOMPACT,alltïg/îEÉ|ï_/î¤îŠîýîî~î Êî#8î'3î+½î-zî2~î3¶î5âî7©î=Ëî?ˆï]ˆîâîÁîAî/ î$dî& î-{î/¨î28 î9Dî;. ï[àîâî�îGîîÍî÷î#vî(î+ä î3êî5› î;ÿïZ9îâîîÒîïîÀî!œî"¿î'¹î-Æî0bî2ƒ î9ÒîSïMÒîâ î¦îmî· î#Ô î)Qî+î-Mî0¡î3qî8‰î>'ïL*îâîO î(î Hî"¦î(¸î+°î.î0¹î5î8� î@#ïJƒîâî'îzî�îuî"&î#wî(ªî*>î/î0Íî5zî8‘î< ïHÜîâîþîKî( î î úî#ñî(Âî)Þ î1rî4î7î: î>×ïG4îâîZî�î9îãîîÖî" î$h î+Çî1Ûî3•î6"î8k î?öïE�îâî�îVî$îÏ î"øî%Xî'ùî)²î,SïCî¤îÙî/î†îºî#Ø î,/î.Ôî2Žî5Œî;àî?6î@ôïAkîâ î°î³ î$Lî($î*È î1„î3®î7oî:üî<(î><ï?ÃîâîPî: îLî!aî"™î%Hî)»î0ñî7jîîâîŸîî"ï î(jî*¿î//î1šî5oî75î;î<Üî?áïRï9&îâîÏîvî£îî"þî%b î,-î/éî5Öî72î:¿î?¿ï7îâîîšîMîRî~î!*î$Òî&Ìî*hî,ñî/Ü î7²î:öï5×îâî¥ îÓîùîþî"Uî(;î*°î/ î6î9ðî<"î?rï40îâîî:îmî¬î!î%î*»î,œî0òî3c î:Oî?ï2‰îâîî…îÖîî"·î&î'Hî*Ûî0_ï0 î¤î¨ îŽ î&bî*«î-$î/î2Ý î:üî?öï.fîâîS îjîÝî iî#ìî&´ î.Œî1‹î6§î:Ûî@²ï,¿îâî‰îÞîÓîzîƒî#´î'-î+kî.Tî1ãî5Eî8¨î:E ï+îâ îƒîîîrî¾î!šî%÷î'Ô î.±î4èî;Lî=ï)pîâî�î îüîÝî#¨î&î+4î,í î4Lî6sî8ÿï&õî¤î§îf î Šî#®î&" î/8î3wî54ï&õ|ï&õî6î7î;Êî>–ï%Nîâî�îôîîî–î#Nî(vî/Aî1 î5z î:ûî=ï#¦îâî§ îyî¼î$8î&ÿî)Xî.Pî0õî7î9qî>tï!ÿîâ î½î2îéîÚî"– î'úî+î-Qî0V ï„î¤îœîgî<î î%9î(]î,1î/Ûî5  î=Ûî?¾ïÜîâîšîsîŽîBî\î"âî$óî*4î/>î2Nî6%î8Mî;”î@ ï5îâîOîÉî¸îqî! î(bî-Îî0Ñî3œî9Kî<î>tïŽîâîÏî£î¦î"àî%†î&áî*î.î0cî3Ðî6Ïî8lî:Ûî>øïæîâî,îPî§îî ³î&�î,(î0)î5î7îSï˜îâî$îÍîŽîàîÑî#�î&›î)ßî+îî0/î3Hî8:î<¨î?0ïðîâî2î;îfî:î!Ëî$èî'uî*{î.Iî1qî4Žî6�î;Kî>RïIîâî°î{ïÎî¤ îßî·î £î"Àî&Ùî)Cî+Ï î2×î6Ðî:"î<�î?ï&îâîu î¯î<î ‘î%õî'Úî*[ î1+î4í î<æî?áï îâîßîî¶ wî%îï |ï î&jî'qî+«wî.Žï |ï î/ î0î6¾î=ï Øîâ îÌî¦îÒî î"Éî&awî,Ûï Øï Øî-Ã|î0æï Øï Øwî1Ñï Øï Øî2œ|î5Úï Øï Øî6Åwî9‹ï Øï Øî:V|î?Cï Øï Øî@. |TVm$K9compiledfromCandrunningonaVAX-11underUNIX.Theirresultsindicatea90%hitratioforaDragoncache.Basedontheirmeasurements,theyarguethatcachesizeisthemostimportantfactorindetermininghitratio,andthatforcachesthesizeofours,randomreplacementisbetterthanLRUorFIFO,anddirectmappingisnearlyasgoodasfullassociativelookup.D.Patterson,etal.,measuredthehitratioofasimulatedRISCIIexecutingthePortableCcompilerwithacachesimilarto(butwithanarrowerentrythan)ours.Theirresultsindicatedahitratioof87%.Thissuggeststhatourinstructioncachehitratiowillbesomewhatbetterthanourdatacachehitratio.Ontheotherhand,wewilllikelyspendmanymorecycleswaitingforinstructioncachemissesthanfordatacachemisses,becauseoursimulationindicatesthatDragonaccessestheinstructioncachealmostfourtimesasoftenasthedatacache.Ifourcachehitratiosprovetobeunacceptablylow,wehavetheboardspaceandthearchitecturalflexibilitytoattachtwomorecachechipstoeachprocessor.Atthemoment,weexpecttoachieveinstruction/datacachebalance(suchthatgivinganewcacheentrytoeithercachesavesequalnumbersofcycles)withtwiceasmanyentriesforinstructionsasfordata.AnimportantissueishowmanyDragonprocessorsanM-buscansupport.ThenumbersabovesuggestthatasingleDragonprocessor,withonecachechipforinstructionsandonefordata,insteadystateonatypicalprogram,islikelytomissthecacheaboutonceevery13machinecycles.Sinceaquadwordreadtakesaminimum(andtheaverageisprobablyquiteneartheminimum)offivemachinecycles,thelimitofsystemthroughputis2.6processors'worth,independentofhowmanyprocessorsareavailable.AccordingtoSmithandGoodman'sdata,thislimitwouldincreaseto7.2ifasecondcachechipforinstructionswereaddedtoeachprocessor.ThisisthemainargumentforincreasingthesizeofDragon'scaches.Virtual-to-RealMappingAsmentionedabove,addressesontheM-busarereal.Cachescaninterceptandimplementmanyofthevirtual-to-realmappingoperationsrequiredbytheirprocessors.Butwhathappenswhentheycan't?Whenitneedstoknowmapinformation,acachedoesanIOReadfromanaddressthatincludesthevirtualpagenumbertobemapped.(Thisisonereasonwhyweneeda32-bitI/Oaddressspace.)ThemapprocessorrespondstotheIOReadbyprovidingthemapinformation.Whileformulatingitsresponse,themapprocessormaydowiththeM-busasitpleases,aslongasIOReadDoneisneverasserteduntiltheresponseisready.Thismeansthattherealmemoryitselfcanholdthemaptableentriesforthosepagesofvirtualmemorythatarepresentinrealmemory.Oneideaistoorganizetheresidentmapasahashtableoccupyingaconstantsmallfractionofrealmemory.Therewouldbeanentryinthemapcorrespondingtoeachvirtualpagepresentinrealmemory.Thehashfunctionwouldprobablybethelow-orderbitsofvirtualpagenumber.Collisionswouldberesolvedbyrootingabalancedtreeofmapentries,keyedbyvirtualpagenumber,atthesiteofacollisioninthehashtable.Othernodesofthebalancedtreewouldbestoredinotherwiseemptylocationsinthehashtable.Thisyieldsanexpectednumberofprobesarbitrarilycloseto1,dependingonhowbigandemptythehashtableis.Italsoyieldslog(virtualpagecount/hashtablesize)probesintheworstcase.Otherideasarealsoundertïg/îEÉ|ï_/îâîwîˆï_/|ï_/î÷îÏî"&î$Mwî%—ï_/ï_/î&b|î( ï_/ï_/î(‚î*ˆwî.«ï_/ï_/î/�|î1·ï_/ï_/î3Wî77î;§î@ôï]ˆîâîíî(î�îÜî$î Aî%$î)Dî+hî.Í î89î;gî?Pï[àîâî±î_îÍî/î�î"óî&âî(“ î0Lî2lî6î8½î;Žî=ÎïZ9îâî/îÈîoîÄîÒ î%‚î&Üî*Áwî-ÕïZ9ïZ9î.Ž|ïZ9î0ºwî2kïZ9ïZ9î3$|î5$ïZ9ïZ9î5îî8“îÙïSœîâî îhîFîá î#Ìî'§î)Ôî-î/Úî1Úî8Vî<]î?“ïQôîâî îûî<îšîî! î%cî)]î+©î.xî2[î6�î:pî>'ïPMîâîŒîŸ îQîóî$ î' î)î+øî/šî4 î9î;e ïN¦îâî³î¡îÀî"î$– î+‘î/|î4î7%î:ïî<¼î@pïLþîâîAîFïJƒî¤î/îÄîšîÁîŠî#uî%-î'( î/zî2|î4®î7þî:gî>iïHÜîâî¸î6 î: î"‚î$Oî(|î+Gî.øî2ãî6–î8cî;³ ïG4îâî¿îî©î²îäî uî%Aî//î2Üî7¿î;Kî=ûïE�îâîüîÚî–îî¹î–î#Rî&Êî*{î0î1Åî6&î91î<µî>SïCæîâîRî� îïî�î ÚïAkî¤îâî/îwîÏî!¾î%tî*` î0ãî2¿î7î9‡î?Fï?ÃîâîÉîîî!î"hî&Šî+À î2cî5´î8—î<™î?áï>îâ îFîî´îöî!Xî# î'Jî*€î,‹î-ºî20î8î9�î=Qî?ïî9õî=Cî@ôï:ÍîâîTî¡îî 8î!Àî'®î+Tî.Šî1î7ñî9Æî<™ï9&îâî8î�îêî©î* î&eî'×î* î1î5e î=Zî?ï7îâî± îMî¥ î"Eî(ìî*Ÿî.²î1nî8Ðî<2î>Øï5×îâî4îšîlîÍîRîŸî$Uî(Eî+yî-Ú î5]î8Òî=î>íï40îâ îÑîëîWî¶î 4î&^î(› î/î1qî4î5Õî;±zï/9îâîR|ï+ëî¤îÓîÍîFî%yî'žî*î.¢î1î4åî9·î×ï(œîâ îUî÷îTî!Ãî%xî(ˆï&!î¤îåîeîpîGî!0î$t î,€î-Óî1Éî5#î7<î<�î@-ï$yîâîáîÄî=î±î#!î&|î+¾î-�î/‡î5Úî9ƒî;î=Äï"Òîâîîqîîeî”î —î%¸î+0î.@î1‘î7Ûî=Ùî?¾ï!+îâîîêîî_î!d î)Ÿî-¢ î5 î6Ñî<¹î?ïƒîâîîEîqî²î 7î$Âî&–î(î-8î/ î2Kî4 î<Âî>SïÜîâîî`îÀîeî Ðïaî¤îµîðîµî î ¹î&î)qî+ôî/î1rî4„î7ãîï¹îâî¹î~îäî]î!7î#—î(wî*1î,óî3Tî6dî9iî:àî<›ïîâî/îTî\îøîî9î"�î) î*"î/î3 î8î9µî^ïÍîâîìîõîÀî2î! î#àî(!î*$î.Zî0î6Vî:¢î@pï&îâî_î¸îØîî!î#&î(ÿî.Iî0î4¸ î;Aî>Åî@‘ï îâîªî´î»îîØî$î&xî)·î-"î/pî0ëî3»î7ªî:î>×ï ×îâ î€îGîÊî"¥î$±î'pî+ƒî0 î4aî8>î:ðî>ÿ }TVm$d10consideration,andtheprototypemachinewillprobablyhaveamapprocessorthatimplementstheidentityfunction.Itissometimesnecessarytonotifyallcachesthatthemaphaschanged,andChangeFlagsisaspecialM-bustransactionforthispurpose.ChangeFlagsbehaveslikeanIOWritewithnodatathatrequiresnoacknowledgment.ThemostcommonuseofChangeFlagsistobreakthevirtual/realassociationofarealpageinallcaches.Thisisdonejustbeforewritingapagetodisk,forexample,topreventprocessorsfromchangingdataasitisbeingwritten.Suzuki'smeasurementsindicatethatabout3%ofthedatareferencesofatypicalprogramrequireamaptransactionontheM-bus.Ifthemapprocessorisdesignedtocacheanysignificantfractionofrecentlyactivemapentries,itwillrespondtomostinquiriesintwocycles.Fromthis,andtheaverageof7machinecyclespermemoryoperation,weexpecttheaveragecostofmappingtobelessthan1%inexecutionspeed.DragonProcessorsInprevioussectionswehavedealtwiththeM-busthatbindsDragontogether,andwiththecachesthatattachtotheM-bus.Inthissection,wedealwiththeprocessors,seeninfigure1,thatattachtothecaches.OneoftheseistheI/Oprocessor,acommercialmicroprocessorthatinterfacestheM-bustoaVMEbus(anindustry-standard32-bitmicrocomputerbus)fordealingwithpurchasedI/Ocontrollers.Oneisthemappingprocessor,andoneisthedisplaycontroller.TheremainingonesareidenticalDragonprocessors,andtheyarethetopicofthissection.DragonInstructionSetTheDragonprocessorhasanewinstructionset.Thisinstructionsethadtobeconsiderablyreducedinsemanticcomplexityfrompreviousmachines,sothatwecouldimplementitinafastpipelinedtwo-chipengine,andhandletheresultinginter-instructionpipelinehazards.Atthesametime,wewantednottolosethecodedensitythatMesahadachieved.ThevariablestateofaDragonprocessorcanbeviewedasconsistingofthefollowingregisters:PC,a32-bitbyteprogramcounter.R,a128-wordx32-bitoperandstackcache.L,a7-bitregisterthatindexesR.ListhebaseofawindowofsixteenregistersinRthatareeasytoaddress.S,a7-bitregisterthatindexesR.SisthetopoftheexpressionevaluationstackinR.Manyinstructionsimplicitly(orexplicitly)addressR[S-2]..R[S+1],andincrementSby[-2..1].SLimit,a7-bitregisterthatiscomparedagainstStoknowwhentheoperandcacheisgettingclosetofull.A,a16-wordx32-bitgroupofeasily-addressedglobalvariables.IStack,acontrolstackcacheupto16elementslongcontainingsavedPCandLvalues.afewotherspecial-purposeregistersthatcontainfielddescriptors,quotienttïg/îE|ï_/îâ î¼îƒîòî#Cî(×î+’î1sî4Éî6î9-î?Pï]ˆîâ îLî«î·ï[ î¤î;îÆîŸî!Òî#¡î'Âî)Òî.Bî11î3°î6êî9î?gïYeîâ îî‡î¶î6î"¡ î)¢î+äî.Šî4² î<çïW¾îâî†înîßîòîñî îî#´î(úî*øî6Iî9îJî@.ïToîâî]îŸî2îÍî–î$ î(æî*8î-¦î/|î2êî5Oî;Hî=ïRÈîâ îzîáî½î!Âî#pî$Çî&2î)ýïPLî¤îý îßî$÷î'±î+~î-§î/Kî1–î4† î:óî<˜î=­ïN¥îâîrî;îfî� î$~î&…wî(åïN¥|ïN¥î)öî-ãî/fî1Æî4âî:öîî@pïHîâîyïAjîâîÓ |ï>î¤îrîî"î Iî#�î&öî*î,pî0Õî3£î7cîî3tî5µî9 î:¦î=*zï0àîâîÕ îÙ|ï-‘î¤îxîsî‚î!óî#î& î,Ùî/Êî2à î9·î;Ïî>ƒî@-ï+êîâ îîmîCî$ î+Hî.×î4�î;î=î?öï*Bîâî×îçîgî?î’î!Rî'�î-kî2]î5>î9ïî×ï&ôîâî înîîÏï$xî¤î£îî[î;î �î%´î+ðî.£î0»î5Šî7` î=Þî?¾ï"Ñîâîô ï ãîî°îÚîÑîáî#pïõîîêîî'î[î!Sî&¶î*)ïîîûîWîÐîáî!áî'î)Öî+tî-î/¤î2ñî4Üî68î;–î=�ï_î'î‰î7îÅî"“î$æî'êî)™ïqîî¹îóîKî:î!î&î(©î*î+�î-ñî0xî2Aî4² î;{ ïÊî'îîDî ªî% î,ü î3™î6U î=4ï#î'î!î#Ñî*Hî+“î-�ï5îîLîcî–î!bî$î%uî+Äî0Mî1…î3 î6Ìî:nî<ºï�î'îóî^î ðî$Wî&ïŸîîéîîuîªî ¡î$¤î&]î0rî4• ï±îîŠî¨îOî µî$uî&{î(î)÷î/¦î2³ î9`î=î?gï î'î’ï îîJîîÁî$�î*î,øî1óî5? î<¤ÿ TVm$11orproduct,faultedmemoryaddresses,whethertheRescheduleinterruptisenabled,etc.Dragoninstructionsconsistofaone-byteopcodeandzero,one,two,orfourbytesofadditionaloperands.Theopcodesnowdefinedfallintoseveralgeneralcategories:Unconditionaljumpsorcallsto{I|[S]},returns.Conditionalrelativejumps,decidedbycomparing[S]against{I|[S]|[L]|[A]}.Memoryreads{[S]|[L]|[A]}:=[{[S]|[L]|[A]}+I]^Memorywrites[{[S]|[L]|[A]}+I]^:={[S]|[L]|[A]}Densely-encodedoperationsthatproduceanewtop-of-stack[S]:={I|C|[L]|[S]opI|[S]op[S-1]}Densely-encodedoperationsthatcopytop-of-stacktoregisterwindow[L]:=[S].Generalthree-operandinstructionswithlessdensity{[S]|[L]|[A]}:={[S]|[L]|[A]}op{[S]|[L]|[A]}Inthistable,Istandsforimmediatedata(ofseverallengths)withintheinstruction,andCisagroupof12registerscontainingpopularconstantslike0and-1.Thenotation{a|b}means"eitheralternativeaoralternativeb",[a]meansthecontentsofregistera,anda^meansthevalueinmemorylocationa.TheremainingopcodesarecalledXOP'sandtreatedasprocedurecallstoavectorofruntimesupportroutines.Sucharound-tripprocedurecallcostsfourmachinecycles,soitisreasonabletoimplementmanycomplexoperationsbyXOP'sinsteadofbyspecialcontrolwithintheprocessor,exceptforthepurgativeeffectsoftheirimplementationsontheinstructioncache.Dragon'sstackcacheRissimilartothestackcacheintheCmachineproposedbyDitzel,etal.,andreminiscentof(butmoreflexible,efficient,andcomplicatedthan)thatintheRISC.Themostinteresting(asestimatedbythecompiler)parameters,localvariables,temporariesoftheseveralmost-recently-calledandstill-activeproceduresoftheexecutingprocessarekeptwithinR.Onoverflow,theleastrecentlyusedregistersinRareflushedtomemory,andonunderflow,theyarereloadedfrommemory.Thisoverflowandunderflowdetectionisautomatic(usingSLimitandIStack),andflushingandreloadingisimplementedbycodeintraphandlers.Acallingprocedurecansendparameterstoacalledproceduresimplybypushingthemonthestack.ThefirstinstructionofthecalledprocedureloadsLwithS-(numberofparameters-1),andtheparametersbecomeitsfirstfewlocalvariables.Thecalledprocedurereturnsresultstoitscallingprocedurebystoringtheminitsfirstfewlocalvariables.TheReturninstructionthenloadsSwithL+(numberofresults-1),placingtheresultsontopofthecaller'sstack.IStackisacacheforcontrolasRisfordata.Itisalsoflushedandrefilledfrommemoryviatraphandlers,anditspurposeistoaccelerateCallandReturninstructions.Conditionaljumpscomeintwoforms,onepredictedtojump,andonepredictedtïg/îE|ï_/î'î„î™î$Ûî*â î1èî7Ðî:É ï]ˆî'îîîZî#Þï[ î¤îÀ î=î"Öî$¬î%óî+Áî0¨î3}î6öî:î=8î?ïYeîâîŸî€ î î"4î%4î*ªî-×î2ÿî5‘î8’î=KïW¾îâ ïUÏî îî 5î!ùî%î&¶wî'ëïUÏ|ïUÏî(Ùî)¶wî*ïUÏ|ïUÏî*¸î+Ÿî-,ïSáî î£î–î$&î)\î+lî2Owî2³ïSá|ïSáî3Rî4Mî8þwî:GïSá|ïSáî;Jî<:wî<žïSá|ïSáî==î>9î?)wî?ŒïSá|ïSáî@FîAAïR:î'wîŠïR:|ïR:î]îEïPLîîžïN]î'î[wî¾ïN]|ïN]î^îEî"wî…ïN]|ïN]î>î%îwîeïN]|ïN]î8î î!Tî#³î$šî%Ïwî&2ïN]|ïN]î&Ñî'¹î(•wî(øïN]|ïN]î)±î*™î+uwî+ØïN]|ïN]î,¬î-“wî/¤ïN]|ïN]î1ïLoîîžïJ�î'îîCwî¦ïJ�|ïJ�îEî,î wîlïJ�|ïJ�î%î îéwîLïJ�|ïJ�î î!wî#ïJ�|ïJ�î$‹î&"î(�î)¶wî*ïJ�|ïJ�î*¸î+Ÿî,|wî,ßïJ�|ïJ�î-˜î.€î/\wî/¿ïJ�|ïJ�î0’î1zïH“îîÀ î$nî'<î,•î-¿î0­ ïF¥î'wîŠïF¥|ïF¥î)îîowî£ïF¥|ïF¥î’wînïF¥|ïF¥î½î šwî ýïF¥|ïF¥î!¶î"�î#zwî#ÝïF¥|ïF¥î$|î%dwî'jïF¥|ïF¥î(Xî)5wî)˜ïF¥|ïF¥î*7î+î-%wî-ˆïF¥|ïF¥î.(î09ïD·îîÀ î$nî'<î*Ž î2î3Èî8¦ïBÈî'wîŠïBÈ|ïBÈîCî*î‰wîìïBÈ|ïBÈî‹ï@ÚîîQ î!2 î(’î+­î.Bï>ìî'î[wî¾ï>ì|ï>ìî^îEî"wî…ï>ì|ï>ìî>î%îwîeï>ì|ï>ìî8î î!Tî#³î$çwî%Kï>ì|ï>ìî%êî&Ñî'®wî(ï>ì|ï>ìî(Êî)±î*Žwî*ñï>ì|ï>ìî+Äî,¬î-àî/çî1wî1ï>ì|ï>ìî2î3î3âwî4Eï>ì|ï>ìî4þî5æî6Âwî7%ï>ì|ï>ìî7ùî8àï2î?gï9"îâîhî?î«îÞîîáî+î^î# î(; î.óî0î1Ý î8”î:æî;Ìî<ôî=Úï7{îâîAî°îiîHîÊî!�î#[î'Ÿî)ÿî-¨î/Vî4Äî9úï4ÿî¤î¯îcî ãî#iwî'”ï4ÿï4ÿî(h|î)ìï4ÿï4ÿî*Dî+î.jî3:î5î;Ñî?î@ôï3Xîâî6îî†îÂî&Lî)ðî+J î2)î8Üî;˜î?ï1°îâîbî®înîÀî' î#òî%œî,}î0Dî5Ä îeï1°ï1°î?9|î@½ï1°ï1°îAï0 îâîŒî<î/î¢î Kî$‡î&Þ î-@î1ˆî3¼î6î<î@eï.bîâî)îŒî’î ò î'Íï+æî¤îwîáî¤î (î!‹î&î'¬î*î-mî10î2Õî5+î6¤î< ï*?îâîùî…î8î�îc î#Ýî%±î(Çî,uî1Ò î7žî:q ï(˜îâîÕî÷îùî¬î î#1î&á î-îî0iî6çî96î;éï&ðîâ î§îS î Ë î(±î*Ðî-•î2Œî?gï%Iîâ î_ îaîî nî&“î+bî-°î0Æî5î7cî9¼î?¾ï#¢îâîûî%îTîªî!Lî"Ìî%î)åî+‡î1@î3êî5ä î<Çî?Êï!úîâî†îìî3î!Lî&úî)±î0Hî6:î7¥î=ûï Sîâî©î—îØîÅî$Hî'6î-~î/ î7¨î9Ùî=Vî?:ï¬îâï0î¤î îKî©î î#% î*î+�î,•î0gî6Åî;î<æï‰îâî´îîªî‰îªî"Ê î)îî+ïî.—î2Öî9¡wî=}ï‰|ï‰î?wïâîâ|î�ïâïâîûîžîT î Sî#î%e î,iî1|î3Tî6*î8Èî< ï:îâîËîÓîfî!*î%Šî'Iî)4î-©î4=î6Iî:ëî>…î@Cï“îâîÏî…îà î î!�î&U î-Eî0€wî4(ï“|ï“î5awî8�ï“|ï“î9Jî@eïìîâ î-îöîUî ¥î"«î% î&Ùî)9î-Êïpî¤îþîŠîÔîÀîî#ñî%Àî'mî(ùî+Wî/xî1î2œî5‰î:‰î=aïÉîâîlîýî^îeî#pî&Kî(Iî-¯î/>î1 î7î:�î=kï!îâ ï ¦î¤ îîî ¥î"6î$Åî(ìî+{î1sî3î6ßî9zî< ÿ ^TVm$´12nottojump.Theprocessorinitiallybehavesasiftheconditionaljumpwillhappeninthepredicteddirection,andusesthepipelinebackuphardware(thatmustbepresenttohandlepagefaults)torecoverfrommis-predictions.Correctly-predictedcontroltransfersofallkindstakeonemachinecycle,plusinstructionbufferrefilltime.Mis-predictedconditionaljumpscostfourcyclesplusrefilltime.Thisputsarealpremiumoncorrectprediction,aninterestingchallengeforcompilerwriters.TocheckwhetherdensecodewasstillpossibleinDragon'sinstructionset,wetranslatedtheCedarversionofPuzzlebyhand,tryingtosimulateaveragecompilertechnology.Hereistheresult,comparedwithsimilarresultsforothermachines(32-bitaddressesunlessnoted):CodebytesMachineLanguageRemarks1214AltoMesa(early)16-bitaddress,nochecks1369LilithModula216-bitaddress,nochecks1534DoradoCedarMixed16/32-bitaddress,range&NILchecks1938DragonCedarRange&NILchecks2080VAX11/780CPointersinsteadofsubscripts,nochecks250068000CNochecks2736RISCCNochecks3592MIPSPascalGlobaloptimization,rangechecks4744IBM370PascalAtthismomentonlyabouthalfofthe256possibleDragonopcodesaredefined;therestareimplementedasXOP's.AswefurthertuneDragon'sinstructionsetweexpectcodedensitytoimprove.StructureAstandardDragonprocessorclusterconsistsoffiveorsixlargechips.TwoofthesechipsarecachesthatmediatebetweentheprocessorandtheM-bus,oneforinstructionsandonefordata.Oneortwoarefloating-pointacceleratorchips.TheremainingtwochipsformtheheartoftheDragonfixed-pointexecutionengine.Thetwochipsthatconstitutethefixed-pointexecutionengineformasinglelogicalentity,shownschematicallyinFigure2.Instructionsanddataflowdownwardinthisdiagram.Dragonusesatwo-phaseclock;theheavyhorizontallinesmarkedAindicatelatchesthatareopenduringtheAphase,whilethosemarkedBshowlatchesopenduringB.OneofthechipsistheInstructionFetchUnit(IFU),whichreadsmachineinstructions,decodesthem,expandthemintomicroinstructions,andcontrolsthepipeliningofthesemicroinstructions.Theotherchipistheexecutionunit(EU)thatcontainsa160-register3-portdatamemory,apipelinedALU/Masker/Shifterwithhardwaretoassistmultiplyanddivide,theaddressanddatapathwaytothedatacache(butnotitscontrol),andseveralmultiplexerstoselectoperandsandimplementpipelineshort-circuits.Theheavyjaggeddiagonallinedenotestheinterfacebetweenthetwochips.Thelineisshownasdiagonalbecauseasamicroinstructionprogressesthroughthepipeline,ateachstagethereislessworkbeingdoneintheIFUandmorebeingdoneintheEUforthatinstruction.Aswescanfigure2fromtoptobottom,thefirstmajorblockweencounterisIFetch.Thisblockcontainsanasynchronously-filled6-wordbufferofinstructions.tïg/îE|ï_/îâîQîúîjî<î Jî%Cî*uî,î-xî/Ò î6ôî:�î=3ï]ˆîâî½îJîŒ îÙî"½î%äî(pî-ëî2íî9#î<˜î@-ï[àîâî»îoîûîGî!…î#9î(î+ˆî6 ïZ9îâî±î\î2î>î!î$$î&ìî,�î0uî3‹ î:‚î>ÍïX’îâîe î6 î"cî&�î)`î,jî0gî3fî6½î:Éî=éî@ôïVêîâî™î‹î‘î$ î% î&ú î-³î3Çî6î;¿ïToî¤îÔî¾îî ÿî$Oî'î)®î.øî0¯î6” î=xî?öïRÈîâ î,î‰îŸî eî"î&tî(mî,Bî0Bî1îî7eîSïF_îâwîzïF_ïF_îb|ïF_î ïD¸îâïD¸î8ïD¸î#ŽïD¸î-äî23wî3ÊïD¸ïD¸î4³|ïD¸î6ZïCîâwïCî8|ïCî.wïCî#Ž|ïCî-äî3+î7Ïî9x î@ïAiîâï?Áîâï?Áî8wï?Áî#Ž|ï?Áî-äî0Fï>îâwï>î8ï>î#Ž|ï>î-äî0FïSï:Ëîâï9#îâwï9#î8|ï9#îñï9#î#Žï6¨îîÞî\î§îžî"]î%î&žî(Úî+Mî0lî5Iî:tî<¤ï5îâîGîîîH îŸwî Sï5ï5î!'|î"«ï5ï5î#î$óî' î)7î-åî1î6ó î=Ôî?öï3Yîâî2îyî7îåzï0 îâ|ï,»î¤î7îÙîßî#úî(gî-mî/-î1ëî3¶î5Øî9Fî=9î@eï+îâîvîîsîÎî§î$éî*bî,Íî2ëî5­wî8ï+|ï+î9(î=*î?áï)lîâ î=îñî˜îÑî!ªî$ªî&jî)î+a î3ü î:Ýî?Fï'Åîâîcîî¤î î!jî$óî&¬î) î. î5î;Rï%Iî¤î¤îyî6î- î$—î' î.Zî4¸î9Pî<àî>3ï#¢îâî î>îq î#½î%Pî)¤î+} î2âî5}î8gî;eï!ûîâî�î0îaî`î!Xî"�î)î-î/nî3d î9äî=wï Sîâ|ï Sîaî´îbîXîÒî#lî(wî*Šï S|ï Sî,î0iî4Dî8 wî=1ï S|ï Sî>•ï¬îâîmîäwîYï¬|ï¬îîzî ‚î"?î$£î(;î)«î, î3î6õî:4wî:®ï¬ï¬î;|î<¶ï¬ï¬î=/î>ïîâî‡î îÑî%î(÷î-Òî1bî4Aî?gï]îâî(î— î(îðî"‰î.Jî11î4ßî7ÿî9zî;éï¶îâî›wîï¶ï¶îÍ|î³ï¶ï¶î…î)î aî"` î*žî/–î3pî: î< wïîâ|îTïïî îÄîî%.î&ÿî*«î0Sî3-î7×î:Yî?gïgîâîîºî•î!îRî#Jî&qî)î+î0Êî3®î8k î@oïÀîâî¹î¸î†î"‚î'æî1!î4î8î<�ïîâî½îîîrî<î$Ðî'Tî*%î.ßî1Üî4¸î6Hî:¼î<�ïqîâîî±îÚî! î'³î,ëî/Jî4îî6‡î9·î=)î@²ïÊîâî_îÃîtîÎîcîªî" î%>î(¹î,jî/Äî1Yî3 î6î86î:ë ï Nî¤î»îéîÿîîCî!°î$,î%áî+ î-oî0Nî4Jî8î:?î@²ï §îâî3îUîî ‡î"î/¶î4pî8¦î:g  èTVm$›13Whenawholeinstructionisready,itisbyte-alignedbyIFetcherandmadeavailabletoLevel0.PipelineLevel0generatesfromeachinstructionasequence(usuallyoflengthone)offairlywidemicroinstructions.TheregistersholdingLandSareatthislevel,andmidwaythroughthislevelthetwofetchaddressesfortheEURAMareformed.Unconditionaljumps,callstoliteraladdresses,andreturnsarecompletelyimplementedatLevel0.Theseoperationstakeonemachinecycleatthatlevel,plusthetimeneededtorefilltheinstructionbufferfromthetargetaddress,whichisonecycleinthebestcase.InLevel1thetwoEURAMfetchaddressespasstotheEU,andsomewhatlaterliteraldatafromtheinstruction,andinformationaboutthesourceoftheALUoperands,passtotheEU.InLevel2theALUoperationandinformationaboutwhatBooleanconditionisofinterestpassestotheEU,andsomewhatlatertheEUdoestheALUoperationandcomputestheBooleancondition.InLevel3adatacacheoperationisinitiatedifappropriate.TheaddresscameoutoftheALUinthepreviouslevel.ThewidedatapathfromEUtoIFUattheendofLevel3cancarrynewcontentsforanIFUregister,suchastheprogramcounter.WechosetoputdatacacheoperationsinapipelinestagefollowingtheALU,ratherthaninthesamepipelinestage,eventhoughthepipelineislongerthatway.Wedidthisbecauseaverylargefractionofmemoryinstructionsuseanaddressformedas"baseregisterplusoffset",sothecacheoperationisprecededbyaddressarithmetic.IfALUanddatacacheoperationswereininthesamepipelinestage,suchmemoryinstructionswouldrequireanextracycle.Amicroinstructioncanfailduetoapagefault,anarithmeticoverflow,ortherealizationthataconditionaljumphasbeenmis-predicted.BetweenLevel3andLevel4,acrucialdecisionismade.Onlybythispointisitcertainwhetheramicroinstructionwillcompletesuccessfully.Ifitcannot,thennotonlythatmicroinstruction,butallpreviousmicroinstructionsfortheinstructionthatgeneratedit,aswellasallmicroinstructionsforfollowinginstructions,mustbeaborted.Theprocessormustattainastateasifallmicroinstructionsforpreviousinstructionshadsuccessfullyexitedthepipeline(whichtheyhave),andallmicroinstructionsfortheinstructioncurrentlyatLevel3-4hadneverenteredthepipeline(acondition,alas,quitecontrarytofact).InLevel4,successfulinstructionsstorenewdatabackintheEURAM(seeLevel1),andsuccessfulcallsorreturnsarerecordedintheIStack.PipeliningDragonderivesmuchofitsspeedfromitsIFUandEUpipelining,andthefactthataverageinstructions(inPuzzle,forexample)operatewithapipelineheadwayoflessthantwocycles,eventhoughthepipelineisfourcycleslong.Unfortunatelythisspeedisnotfree.Wemustdetectandresolveinter-stagedependencies(hazards).Inaddition,todealwithfaultsindatacachereferences,arithmeticfaultsofvariouskinds,andmis-predictedconditionaljumps,weneedawaytoabortinstructions.Thisinvolvesrecoveringmuchoftheprocessorstatetoitsvaluethreepipelinestepsago.Hazardstïg/îE|ï_/îâîêîî îÊî &î$8î%~î&Ú î.¢î0�î6 î8³î€ïW¾îâî‰î£îËî[î!‘î#ßî&{î)Þî/áî2 î4\î6Öî:°î<óïUCî¤ î îßî#Gî%Oî)” î0Yî3iî8vî;" ïSœîâ î%î®îiî[î"N î(íî+×î.sî3éî7Mî8Öî;•î?$ïQôîâî8îSîî·îþî T î'%î+Jî.§î0üî4Ôî: î>î?rïPMîâîUîîcîFïMÒî¤î�îwîÉîEîî ¶î$¾î(Oî.€î1–î3aî5Þî8Þî;²ïL+îâîîçîåîFîŸ î%Ìî(} î0î3Ýî66î:î<2î>‹ïJƒîâî"îîÊî)ïHî¤î�îYîœî îªî$áî'§ î/?î3/î6šî;ÿïFaîâîHîûîÔîñî™îóî!Ïî$€î*æî.î0_î2äî6î8gî;ôïDºîâî™îÄî#î{ ïB?î¤îoî5îeî‹îŒî Tî&yî'áî-@î.� î6Ðî9¤î>Šï@—îâî]îî€îîÌî1î"Åî&ñî)Ïî-&î00î3\î6Èî9Xî; î> î?¾ï>ðîâî¾îœîŠîäî”î6î"Iî'Üî*>î,Sî/‡î4âî88î: î<�ï=Iîâîïî‘îuî;îÔî"òî&Ö î-œî/bî0¤î6 î9”î?¾ï;¡îâîÁîÂîÜî~îÒî!Cî&„î*Bî-}î2$î4xî9¹î;î?Pï9úîâî îÌî{îVî ±î"î%]î(ýî.Mî0?î5æ î=î@-ï8SîâîËî�îJîî"ñî%éî*¼î,~î.Ýî2¨î8Ðî:;î@"ï6«îâîÉ î!îŸî /î"ãî%äî)­ î0Wî3¥î5Pî6ûî9Wî<Ñï5îâî­îÞîK î"«î&Ùî+¢î-’î1ï2‰î¤î=î�î &î"�î%bî'î(Uî+©î/Jî1H î7Øî=íî?¾ï0âîâ îªî’î× î!î$Òî'bî*Ù î4‰î:3î>î?gï/:îâîäî©î î³î Cî!æî&ñî*›î,Îî/¨î3~î5"î6°î;nî@ôï-“îâî—î¶î# î,=î.2î/ûî5Bî8Ûî;Ãî?Pï+ìîâîhîÕî±î#+î-Þî0î2R î9î;Óï*Dîâî™îOîEîüîôî#Ãî& î,$ î3äî7Tî9Nî?Fï(�îâîóîYî-îUî „î"0î#Žî%|î0Aî2|î8 î?fï&öîâ îTîtîÛî"/î&¾î)Õî-õî0´î2«î=zî?¾ï%Nîâ îÇî®îPî!$î#Œî&Nî*"î/!î1Šî6áî8Ž î?ï#§îâîlîÚîˆï!,î¤î•î�î/ î¨ î')î*§î-·î0Þî4Fî6î8˜î;Dî?Qï„îâî¬î²îj îÀî Ðî"”î'Gî)šî/Vî1î3czï6îâ |ïçî¤î–î<îî ²î"€î&Tî)¯î+|î.~î1)î3§ î:tî=î?qï@îâîÄî× îJî …î%Kî'œî-¢î2 î5Ïî7 î¶ï Tîâ{ï îâ ŠTVm$�14Ourdesigndealswithinter-microinstructionpipelinehazardsinthreeways.Thesimplestistoavoidthem.MIPSavoidshazardsbyasetofprogrammingrulesthatarefollowedbythecompiler.WiththissolutioncomesthechoiceofaverysmartcompileroralotofextraneousNo-Op's.Wedidn'twanttointroducesuchrules(andtheirattendantincreaseincodesize)atthemachineinstructionlevel.Wedoavoidsomehazardsbyimplementingafewinfrequently-executedinstructionswithawfulsideeffects(StoreIFURegister,forexample)byacarefullycodedsequenceofmicroinstructionsthatclearsmicroinstructionsforprecedinginstructionsoutofsensitiveplacesinthepipelinebeforethekillermicroinstructiondoesitsdirtydeed,andthenpreventsmicroinstructionsforsucceedinginstructionsfromenteringsensitiveplacesinthepipelinewhilethedeedisstillinprogress.Anothercaseofhazardavoidanceisdelay-matchinginparallelpaths.Dragonhasasimpleloop-freepipelineinwhichnearlyeverycomputationalresource(gate,bus,etc.)isusedatonlyonepipelinestage.Thisgreatlysimplifiespipelinescheduling,butitalsomeansthatsomepathsthroughthepipelinearelongerthantheywouldotherwiseneedtobe.Forexample,considerthestore-backpathtotheEURAM.Forordinaryarithmetic,thiscouldbelocatedatLevel3.ButbecauseweputtheALUoperationsanddatacachereferencesintandem,ratherthaninparallel,fordatacachereferencestheEURAMstore-backpathhastobeatLevel4.AhazardisavoidedbyinsertinganextrapipelinestagebetweenALUoutputandEURAMstore-backpath,sothatitisalwaysusedatLevel4.AnotherwayDragondealswithhazardsistodetectthem,andtopreventsomeupperendangeredsegmentofthepipelinefromadvancing,whileallowingthelowerdanger-freesegmenttoadvancenormally.AmicrocodeNo-Op,whichchangesnostateandparticipatesinnohazards,isinsertedinthepipelinegapthuscreated.Theboundarybetweenthestationaryinitialpipelinesegmentandtheadvancingfinalpipelinesegmentischosenashighinthepipelineaspossible,butsothatatleastoneofthetwoparticipantsinanyhazardisonthestationarysideoftheboundary.InDragon,therearethreesuchboundaries.OneisatLevel0,anddealswithnextinstructionnotready,oraCall-Returnhazard.OneisatLevel1,anddealswiththosecasesofEURAMWrite-Readhazardthatcannotbeshort-circuited.AndoneisatStage3,anddealswithdatacachenotready.ThefinalwayDragondealswithhazardsistodetectthem,andtoachievethedesiredeffectinanotherway,withoutintroducingdelay.Thedatapathround-trip,fromtheEURAM,throughtheALU,throughabest-casedatacacheoperation(ortheparallelcollision-avoidingpipelinestage),andbackintotheEURAM,takesthreepipelinestages.DuringthattimeapotentialWrite-ReadhazardexistsontheEUregisterthatisspecifiedasthedestinationofamicroinstruction,becauseafollowingmicroinstructioncanreadthewrongvalue.ManyofthesehazardscanbehandledwithoutwastedcyclesbymeansofEUpipelineshort-circuits,whichareadditionaldatapathwaysintheEUthatcarrydatabackwardoneortwopipelinestages.Forexample,thereisashort-circuitfromtheoutputoftheALUbacktoeitherinput,sothataninstructionmayusethearithmeticresultofthepreviousinstruction.Theuseoftheseshort-circuitpathsisgovernedbytheIFU.Itmatchesthesourceregisteraddressesofaninstructionabouttoenterpipelinestage1againstthedestinationregisteraddressesofinstructionsfurtherdownthepipeline.Short-circuitpathsareexpensive,bothinareaandcomplexity,sowehaveincludedthemonlywheretheywillspeedupcommoninstructionsequences.InstructionAborttïg/îE|ï_/î¤î¿îFîüî Oî.î3‹î8Ãî:©î>jï]ˆîâî´îîlîîÏî"(î&î*Wî/Qî1Gî2kî4‚î65 î>Áï[àîâîÈî2îîîîxî%>î(Óî+Œî0åî5+î7¡î;þî=Îî?ïZ9îâîºî‚îSî‰î¨în î&`î,èî/€î3�î6ùî8µî>ìïX’îâî+îIî|î~î#­î%Hî(|î+�î-î/_î4Ð î;˜î?“ïVêîâîîýî»îåî î(õî*Jî-î:¾ ïUCîâîBîSîqîî"dî%¹î+ºî.<î4tî6¶î8%î>ïSœîâî¹îaî!î#Óî'˜î2Mî4yî:¾ ïQôîâîHîñîfînî î ]î%›î)Úî,*î/­î9àî=î>ÌïPMîâî˜îPîwîüî(Ãî+ î1ó î9Sî<»ïN¦îâîfî~î,îŒî!Ùî%Žî'íî+Jî,¶î/Wî1ïL*î¤îîîÑî Tî&Èî(< î1áî3—î8ˆî=ïJƒîâî[îˆîñîÜî"-î#ßî'ñî,"î/Ú î8áî>^ïHÛîâî+î‰îOîäî×î Kî#Pî(÷î-úî1nî6N î<ÑïG4îâ îî¨îîÜî!)î$î'œî+Pî0‘î2ùî8Oî:«î>øïE�îâîïîîBîœî!Hî$î&·î,†î1üî4Y î:ïî>î?¾ïCåîâîuîNîî™ î%}î('î+üî-õî2¼î4]î80î:Rî<üïB>îâî2îÛîcî î ôî#Ôî'î*õ î1Ÿî3vî8ìî=!î@pï@—îâî*înîzîM î#Öî&<î(Íî,¿ î3_î6Œî9î:½î<´î>Tï>ïîâî#îÈî\îàî$î 8î%öî'þî+‰î0ïî4zî:î=¬ï=Hîâî™î$î î¨î"&î#êî&¸î(î)zî-ßî1î2³î6~ï:Íî¤î îÚîÑî"Gî%Zî*Rî+¶î-\î1cî5<î7ìî9’î>‹ï9%îâî× î2î‡î!2î#ƒî(Âî, î2çî6Žî<î>Tï7~îâ î=î¨î^î"³î)nî+î1¸î6Îî:äî@ï5×îâîî£ îÚîtîgî$¬î&î+(î,Âî/î4Hî6Öî9Çî?Fï4/îâî?îÔî[ î#Íî'àî-Uî2ßî5¾î8Dî>îï2ˆîâîEî¾î?îçî!«î$æî&ªî)î.‚î0Fî5öî8Œî:fî=Jî>øï0áîâî�îFî¥îQ î¼î!jî$ î(†î)ñî+÷î.W î4¡î7yî92î;‘ï/9îâî®îî‰îÚî`î"� î*wî-xî.àî0vî4=î5Çî8|î;öî?ï-’îâ îÒî]î•înî­ î'Xî,Úî/óî1tî3"î7î8¤î;pî?ï+ëîâîoîÐîvîïîÈ î%+î)”î,Pî0ºî2™î ï!*îâîiî´îƒî!Jî$î'9î(aî. î5Žî:î=ºî?¾ïƒîâî­îËîÙî…î!�î#oî& î-Uî/Nî0¸î;’î@ôïÜîâîéî!î!¡î$°î'î+2î/¡î3Œî5:î8¸î=­î@-ï4îâîVî‰î6î"Tî$wî(áî*Áî-rî2åî;–î?Êï�îâ îqî�î¥î kî"ãî%†î(lî,î/î5lî80î: î<Ñïæîâîàî¢îˆî (î!©î"é î*¬î.)î0žî5&î6õî9jî=î@oï>îâîøî%îî î% î%*î(Xî*÷î-� î4-î8"î:î<�ï—îâ î|îFî­îXî Ò î(rî,î-kî3Zî5Hî7™î;gî<Ðïðîâî6îzîMî Vî"î#è î*¸î.Žî02î3¯î8ñî¬ïX’îâî@îšîZîeîÞî&]î)]î,î/iî4œî8çî;C ïVêîâî©îîuîî±î"Öî%. î,î-¨î/‘ î6éî:îÁïOyîâîe î”îkîô î&5î)6î0’î2& î:¡îïL*îâîâî.îvî!ªî$¾î(mî*!î/‰î3î4fî78î<•î?ïJƒîâî& îî·î%¡î'%î(ì î2¡î7Uî<°ïHÜîâîPîòî*îçî Àî"î#Àî$ùî*¸î-¿î0…î5sî7áî;‚î=?ïG4îâîßî³îoî*î"Öî$¬î'úî+~î0±î4˜î:úî?¾ïE�îâîUîÀî•î0î$”î&Cî)î*~î/ìî1�î5fî6§î9î>·ïCæîâî×îîžîhïAjî¤îiî î|îÕî!!î$ùî)™î,ùî1 î5úî9î<ºï?Ãîâî8î¿îäî.îÛî =î$bî&•î(ëî,>î0Xî2ïî8=î>¶ï>îâî˜îl îÐ î#„î%Wî(£î,î-Øî0Gî5 î:îî=%î@ôïî/uî0šî3Ûî66î:äî>Rï7~îâî*î¶îî î„î#,î'sî*6î,î-R î5î9“î=_î@-ï5×îâî�îîö zï2‡îâ î |ï/8î¤î™î:î&îE î&-î*÷ î1Ç î8Îî;Þï-‘îâî? î‚îoî î#î(#î*Ìî.Pî4‡î7|î=vï+êîâîzîÏîîî )î$L î+Íî.Çî0^î4`î6;î8V î?î@ôï*Bîâî*îúî’îöîî" î(äî,Ó î4Vî7îî:´ ï(›îâî îUîCîªîcî#ßî)L~ï&îówîï&~ï&î¦îžîýwî`ï&~ï&îÿwî:ï&ï&î¤~ï&îáwîDï&~ï&îäwî#ï&~ï&î#»wî$¢ï&ï&î%\~ï&î(hwî(Ëï&~ï&î)jî,,î.Šwî.íï&~ï&î/Œwî2ï&~ï&î3:wî5™ï&~ï&î68|ï#¤î¤î€ î`î!¤î#î(ëî,¥ î3þî5oî;î>ôî@ôï!ýîâîËîÈîvî[î¥î"[ î)î-î/×î5ˆî8£î> ï Uîâî2î›îëîKîÀî î!uî&î'»î+ÿî-2î2î6Rî«ï®îâî|îöî éî#Mî)¾î,œî/èî3?î4�î;8î=êî?¾ïîâ î)î'î/î"iî%¢î+%î,Æî1˜î3êî8 î>Íï_îâîDîòîîXîîÅî" î(Ôî-gî1î2•î6Ûî9‰î< ï¸îâîbîîUîÉî ±î#“î&î,Fî/î0Ôî4ßî7«î:åî@œïîâîUîtîëî^ î%Mî(±î*î/Pî1Ãî6 î;‡î@oïiîâîèî¼î\î rî"kî% î+wî0ãî4?î6ßî=JïÂîâ îoîoî! î%�î+î-x î4Ðî7‰î:Óî>iïîâîÍî îÉîúî#î(î*B î1*î5ßî7nî=ïsîâîAî“îJî�îî!)î#àî&úî)Zî..î/Üî2; î9+î=Þïøî¤îvîoînîî#Ìî(î+*î. î1ˆî2ã î9tî;uî=äï Qîâî½îî.îî Äî"Zî'Ñî,‚î1Ãî3 î4úî8Œî:É ï ©îâîèî‘îAîyîÓ î$¨î'œî.î1½î3î5sî;�î<ç ÕTVm$(16theidleprocessthanifitisnot.Thismeansthatifthereareanyidleprocessors,oneofthembecomethescheduler,andtheotherswillonlyswitchprocessesifforcedbytheschedulercode.CedarThedesignersofDragonhadtheCedarlanguageuppermostinmindasthelanguagefromwhichDragonprogramswouldbecompiled.MuchoftheorganizationofDragonisintendedtooptimizetheexecutionofcommonCedarconstructs.Ofcourse,similarconstructscanbefoundinotherlanguagesaswell.HillarguesthattheBellLabsCmachine,withwhichDragonsharesmanyfeatures,isespeciallywellsuitedtoexecutingawidevarietyoflanguages.ProceduresandlocalframesCedarisasuccessorofPascal.Itdependsheavilyonthenotionthatabstractionisimplementedbyprocedurecall.AprocesscanbeviewedasaLIFOstackofsuspendedactivationrecordsandonecurrentactivationrecord.Eachactivationrecord(or"frame")typicallycontainsaprogramcounterandsomevariables.Tocallaprocedure,thecurrently-activeproceduregeneratesanewactivationrecordforthecalledprocedure,computessomearguments,storestheminthenewactivationrecord,suspendsitsownactivationrecord,andmakesthenewactivationrecordcurrent.Whenacurrentactivationfinishes,itsendsanumberofresultstothe(suspended)caller'sactivationrecord,destroysitsownactivationrecord,andmakesthecaller'sactivationrecordcurrent.ItisthiscomputationalparadigmforwhichDragonisheavilyoptimized.WithintheIFUchipisaLIFOcacheofprogramcountersandregisterindexeswithintheEUchipwherethevariablesofsuspendedactivationrecordsbegin.MostactivationrecordvariablescanbeimplementedasEUregisters,andparameterandresultpassingisdonebyindexadjustmentratherthandatacopying.SuchotherlanguagesasLispandSmalltalkalsofitthiscomputationalparadigmmoreorless,andDragonshouldbeaneffectiveengineforthemaswell.Butthereareothercomputationalparadigms,suchasProlog,forwhichanequivalentamountofhardware,organizeddifferently,wouldprobablydosignificantlybetterthanDragon.Strongtypingand"Safety"Cedarisastrongly-typedlanguagelikePascal.Thismeansthatthecompilercanknowagreatdealaboutwhatmighthappenduringexecution,andwhatcannot.Cedaralsohasagarbagecollector,likeLisp.Thismeansthatitmustbepossible,atrun-time,tofollowallpointers,andtoknowthesyntactictypesoftheirtargets.In"safe"Cedar(anautomatically-checkedsubsetofthelanguage)theuseofthegeneral"Address-Of"operatorisprohibited,asareoverlaidvariantrecords,andotherdevicesthatcanconfusethecompileraboutthesemanticsofexecution.Theresultisthatthecompilerknowsmanysituationswhenavariableinanactiveprocessdoesnotneedamemoryaddress.Suchvariablescanbeimplementedinmachineregisterswithoutfearthataprogrammightreferencethembymemoryaddress"alias"andgetaninconsistentcopy.tïg/îE|ï_/îâîQîîûî0î îî �î#ñî'î+nî.Kî/¼î3Tî5·î8hî;. ï]ˆîâîÄî³îrî¾îS î& î(úî+�î/èî2Êî6î:Šî@½ï[àîâî'î"î‚î¬yïUCîâ|ïQôî¤î¡îÄî¢î!Çî$¤î')î+gî1Sî8Sî:'î=ëî?¾ïPLîâî~îºîžî sî&\î*`î,&î2«î6ƒî8î:G ïN¥îâî§î²î)îñî«î$\î&Çî-î.Íî4ˆî8¬ î@ ïLþîâîŒî îƒî!î#î'î(Ãî,dî2±î4aî8/î:þî?PïKVîâî0î÷îBî³î~î!ˆî%…î*sî.…î2?î7²î9 î?0ïI¯îâîðîžîÉîòîDî#Êî%ƒ zïF`îâ îýî�îù|ïCî¤î©îîîøî�î$vî%Úî+6î/àî1Óî4 î8fî;" ïAjîâîv îðîî!¿wî&#ïAj|ïAjî'£î, î/Sî1lî6<î8wî9dïAjïAjî:|ïAjî<Éî@eï?ÃîâîÓ îJî!Tî$Bî'$î,% î2›î84î;Þ ï>îâîKî¢î�î!+î&¨î'ìî-”î2¯î5€î9- î?÷ïSï+îâîµî!î”î�îZ î%mî)zî, î/¥ï(œî¤îî�îÇî bî#hî& î, î.Åî0‚î3 î;ÿï&ôîâîmî*îîÀî·î#,î%î&þî,{î0ãî3î6šî8Aî;ûî>•ï%Mîâî/îÈ îÄ î$¹î'äî)Œî.Bî0yî4€î6j î=ï#¦îâîïî¤îC î%¨î*+î0Qî2¬ î:¬î>øï!þîâzï¯îâîgî‰î)|ï`î¤îÒîSî“ î!·î'“î*Tî/î2¯î7 î9íîíî@oï[àîâî–îîW î"î$Iî)nî+lî08î2Ò î:lî@œïZ9îâîôîåî�î"Wî$êî*î, î/¤î1ôî7¡î=›î?:ïX’îâîGîî™ î!´î$å î.Ùî3î5$ î=‚î@½ïVêîâîî- î¯îî"ïTnî¤î®î î¦ î|î!%î#uî(9 î/‡î2Fî3`î7î<ÇïRÆîâîîZ î�î"aî%î'&î*.î+¨î-î/§î1Yî4˜î7^î;ôïQîâ îpîvîžîdî Ìî&î)î/ î5™î8Áî:q ïOxîâ îËîbîLî×î!…î%Éî)ªî, î.îî0¾î33 î8Äî:àïMÐîâ îîÏî%î¡î"Jî%e zïHÖîâî†î&î²|ïE…î¤îeînî™î" î&]î)ôî-Tî0sî5w î< ïCÞîâ îÀîæî• î&î)%î/— î6 î7Éî:Bî>tïB7îâ î²îÃîßî‹î!î!Áî$æî&“î1ôî8kî:ë wï@�îâ |î;ï@�ï@�î”îî#™ î,î/šî5Oî9 ï>èîâî†î1îâî›î"áî&î+2î0À î7º î@"ï=Aîâ îÐî~î 6î&2î(Ôî*‚î-pî/Ïî2½î8Lî>(ï;™îâîîîˆî!î î%Ðî(Wî*Óî.c î4Àî7Áî:Ùî?rï9òîâîŠîÓîÞî"s î(Gî)Áî*Ìî/î1Îî3hî5öî;E ï8KîâîÅîwî-îîî#Mî)Úî,pî1†î8?î<î>ï6£îâî¬îiî0îî×îî!{î'Ìî*”î-~î1±î4Ýî9 ï4üîâ îwîÕîÃwî#œï4üï4üî$U |ï4üî-¨î/Òî6¯ î=åï3Uîâîãwîàï3Uï3Uîš |î#9ï3Uï3Uî#’î$šî({ï0Øî¤î”îµîýî…î!î%åî'¿î,\wî.6ï0Øï0Øî.ï |î7�ï0Øï0Øî8Œî;eî=­ï/1îâî¤îrî î!& î)öî+}î1î2™î7áî9h ï-‰îâwîPï-‰|ï-‰î¹î�wî®ï-‰ï-‰î g |ï-‰î)œî+î-àî1…î62î8î;Âî>Šï+âîâwîFï+âï+âî |ï+âî)î¹î® î'î(Ðî*nî-˜î1&î6Ñî;î@eï*;îâî÷î‡îÕî_îî!¶î#‰î$×î(óî,(î27î5vî:çî=ï(“îâî* î‡îîÙî!î#Üî)Fî.yî0Õî2î4æ î<°ï&ìîâî&îÃîSî�î †î"³î$]wî&‹ï&ìï&ìî'_|ï&ìî)¥î,ýî.dî4«î<,wî?Bï&ìï&ìî@|ï%Eîâ î´î­îáîBî%oî'î(Kî-î.Æî/òî3Êî9 î?¾ï#�îâîÁîšîî¼îŠî!›î& î*!î,¡ î4 î9 î;fî=åï!öîâî%îÚîÀîî!€î(çî*“î0î1jî2‘ î9î< ï OîâîÄîkî¨îªî2îÿî!î$öî*®î,½î-ûî0ºî3Þî:tî=ï§îâîîyîìzï­îâ|ï\î¤î×îÅî Dî!ˆî''î-*î/bî16 î7¼î:î?ïµîâî°îaîcîâî !î%`wî)ãïµïµî*‹|î.ýïµïµwî0.ïµïµî0è|î3ïµïµwî4°ïµïµî5,|î7Zïµïµwî8‹ïµïµî9¦|î;œïµïµwî<Íïµïµî=µ|îAAïµwïîâ|îŒïïî·î&îR î#& î)æî-uî0ã î74î8Èî>ïfîâîÅî-îî%vî)âî,÷î1Çî3Þî:$ ï¿îâ îNî”î7î#/ÿ TVm$�18ConclusionsWehavepresentedthecurrentstateofthedesignofahigh-performancegeneral-purposepersonalcomputersystemforuseinprogrammingresearch.Weareoptimisticthatitsperformancewillbequitegoodinasingle-processorconfiguration,anddependingonthetasksathandandthecachesizesused,modestnumbersofprocessorsinteractinginthesamevirtualaddressspacemaynotseriouslyimpedeeachother.Furtherconclusionsawaitfurtherexperiencewiththemachine.AcknowledgmentsDragonwasconceivedin1981byC.Thacker,B.Lampson,P.Petit,N.Wilhelm,andF.Baskett.Today'sarchitectsanddesignersincludeR.Atkinson,R.Barth,D.Curry,J.Gasbarro,L.Monier,M.Overton,andmyself.Whenthefinalstoryistold,therewillbemanyothers.GoodICdesigntoolsfromPARC'sComputerScienceLaboratory,andacooperativespiritandfunctionalsiliconfromPARC'sIntegratedCircuitLaboratory,havebeenandwillcontinuetobeessentialinwhateversuccesswemayachieve.Figure2wasprovidedbyD.Curry.BibliographyCensier,L.M.,andFeautrier,P.ANewSolutiontoCoherenceProblemsinMulticacheSystemsIEEETransactionsonComputers,C-27(12),pages1112-1118,December,1978.Ditzel,D,andH.R.McLellan.RegisterAllocationforFree:TheCMachineStackCacheACMSIGPLANNotices,XVII(4):48-56,1982.Goodman,JamesR.UsingCacheMemorytoReduceProcessor-MemoryTrafficComputerArchitectureSymposiumProceedings,IEEE,pages124-131,1983.Hennessy,John,withNormanJouppi,StevenPrzybylski,Christopher.Rowen,andThomasGross.DesignofaHigh-PerformanceVLSIProcessorThirdCaltechConferenceonVeryLargeScaleIntegration,pages33-54.EditedbyRandalBryant,ComputerSciencePress,1983.DescribestheStanfordMIPSmachine.Hill,DwightD.AnAnalysisofCMachineSupportforOtherBlock-StructuredLanguagesComputerArchitectureNews,publishedbyACMSpecialInterestGrouponComputerArchitecture,XI(4):6-16,1982.Kogge,PeterM.TheArchitectureofPipelinedMachinesMcGraw-Hill,1981.tïg/îEyï^õîâ |ï[¦î¤îƒîî´î!hî&†î* î,î.Ïî3rî5€î6ÿïYÿîâîî³î$þî)›î+ùî.�î0^ î9î?“ïXXîâî¶ îŒîÛî5 î&¹î)åî,Vî0`î4Rî6€î8*ïV°îâ î¦îWî!î#î%oî(Åî*Wî-Ïî0î2Ùî6žî9Çî=UïU îâîxî î“ î#Hî$Ûî'î*‚î.Áî3‘î7+î:î¶îâî)î…î=îèî Žî"<î$-î)¦î+Tî11î5äî8 î;ï<:î¤îîHîôîÆî!Áî#¼yï5�îâ |ï2Nîî\îî©î` î%¶ï0§îî‘îÛî_îî%èî+ûî-© î4Ç{ï.ÿîî× î¦î t|î&¹ï.ÿï.ÿî'pî-Rî0÷ î7ªî>€ï+°îîuîpî(î#î ï* îîg î î!Gî$ûî'Óî)Uî/î2¼{ï(bîîØî½|î"ï(bï(bî"ëî(›î,²ï%æîîÞîöï$?îîî5î Îî"|î'}î3*{ï"˜îîI î üî(3 |î/'ï"˜ï"˜î0î4î7åî=]ï îîmî îÿî%Wî*î.u î5J î=ïuîî¼îýïÎîî¬îeîŽî&î)Å{ï&îî¤î| î"jî$=î'cî+:î.Ä |î5Pï&ï&î6 î9¶î=­ïîîîÉîœî%*î*î.wïØîîîêîoî!›|ï\îî*îïµîîWîÏwîˆïµ|ïµî×î#ˆî(×î+î/ î9§{ïîîq î!K|î$eïïî%iî+èwî. ïïî.ß|ïî1gî6Mî;tî@ïfîî’ î!Îî%üî)cï ëîîÃîW{ï DîîÈ î{îî%|ï œî îåêTVm$Ý19Patterson,DavidA.,andCarloH.Sequin.AVLSIRISCComputer,IEEE,XV(9):8-21,September,1982.Patterson,DavidA.,withPhilGarrison,MarkHill,DimitrisLioupis,ChrisNyberg,TimSippel,andKorbinVanDyke.ArchitectureofaVLSIInstructionCacheforaRISCComputerArchitectureSymposiumProceedings,IEEE,pages108-116,1983.Radin,George.The801MinicomputerIBMJournalofResearchandDevelopment,XXVII(3):237-246,1983.Sites,RichardHowtoUse1000RegistersCaltechConferenceonVLSI,pages527-532.EditedbyCharlesSeitz,1983.Smith,AlanJayCacheMemoriesACMComputingSurveys,XIV(3):473-530,1982.Smith,JamesE.,andJamesR.Goodman.AStudyofInstructionCacheOrganizationsandReplacementPoliciesComputerArchitectureSymposiumProceedings,IEEE,pages132-137,1983.tïg/îE|ï_/î îeî‰îÅî"|î&Fî(Bï]€îî‘îE{ï[Ñî|îÅï[Ñï[Ñî¡î¸î"`î%Ç î-ïYFî îrwî£ïYF|ïYFîvî Hî#pî&`î,‹î0Wî3Šî9î>iïWŸîîUîNîëî"¢î'wî*eïUðî îéî¢wîËïUðïUðî–|ïUðî Ý î'Ùî,î.Ewî/oïUðïUðî0C{ïTAîîI î üî(3 |î/'ïTAïTAî0î4î7åî=]ïQ¶îî€ïPîîÜîr {ïNXîîkîNîñî"¹î%] |ïNXî-Áî4zî9òïKÍîî£ïJîîaîîÝî#{ïHoîîü î î þ|î$fïHoïHoî%Bî) î.„î2õî4ñî9ñî=¦ïEåîîjîÆïD6îî3{ïB†îîØîÐ|î"MïB†ïB†î#)î(Uî-Íï?üîîjîƒîžî Uî$mî&Rï>Mîî‘î‰îB î!>î%m î.!î0Ø î9{ï<žîîI î üî(3 |î/'ï<žï<žî0î4î7åî=]ÿºTVm$M20IFUEUDataCacheCacheInstr.P-busP-busaddr/datacontroladdr/datacontrolDragonProcessorM-busCacheBuscouplerVME BusI/OprocessorDiskinterfaceinterfaceEthernetetc.Mappingprocessorwith mapcacheDragon Processor ClusterDragon Processor Clusteretc.Memory ModuleModuleMemory etc.Display Controlleretc.D r a g o n S y s t e mF i g u r e 1Boot ROMFlt. Pt.tïg/îEî4Éï †þŽUîåï5Hþ9$îåï0Öþ]$î äï)þ$•î äï)þ]$îï)2þ$rî äï-€þ9$îï2�îï*¹îåï-€þ9$îï)2þ$rîåï)þ]$îåï)þ$•î:ï-¤þ$Uî:ï&ùþ$9î)¬ï)þ$•î)¬ï)þ]$î0åï)2þ$rî)¬ï-€þ9$î*Éï+Öî*Éï*+î*Éï1òî)¬ï5Hþ9$î0åï0ùþ$rî)¬ï0Öþ]$î)¬ï0Öþ$•î*Éï3�îï4+þ �$îï1òþ �$î'sï&Öþ$yî'sï*+þ9$îsï.Àþ$9î(ï-þ$«î(ï,òþ«$î:ï&ùþ$9î0åï+Gþä$î �ï6ÏþVGî �ï%NþGÈî �ï%þVGî!åï%NþGÈîVï.þ $îVï-¤þ$Žî�ï/Oþ$«î�ï/+þ $$î�ï-¤þ$«îWï-¤þ$Uî%:ï+Gî%:ï2�ÿ%TVm$ pî#�ï0ùî#�ï4Oî#�ï%Ýî#�ï.Àî:ï&Öþ:$& TVm$ î «ï4ºî Èï3îåï0ùþ$rîï0ùþ$rî/Éï *î0åïX×þä$î)¬ïVžþ$•î)¬ïVžþ]$î0åïVÂþ$rî)¬ï[þ9$î+WïXIî!Wï[þ9$î(�ïVÂþ$rî!WïVžþ]$î!WïVžþ$•î#�ïYeî"sïW»î(�ïX×þ$îsïX×þ$îsï<¤þŽ"sîï=�î:ï]×þä$îïY‰þ$rî:ïYeþ $î:ïYeþ$•îsï\-îVïZ‚îï[žþU$îïTóþU$î:ïR»þ$•î:ïR»þ $îïRÞþ$rî:ïW,þä$îsïU‚îVïS×îäïMºî:ïQþä$îïLÁþ$rî:ïLžþ $î:ïLžþ$•îïN×þU$îäïOeîïHºþU$î:ïF�þ$•î:ïF�þ $îïF¥þ$rî:ïJóþä$îïBî:ïD×þä$îï@ˆþ$rî:ï@eþ $î:ï@eþ$•îïBžþU$î$ïOóþ È$î0åïG3þ$äî$ïGþ ë$î$ïGþ$ î%:ïNIî&WïLžî'sïJóî(�ïIHî)¬ïGžî0åïK�þä$î rï7ëþ)¬Gî3ï!kþGÈî rï!$þ)óGî rï!$þGî0åï3þ$î2ï+kþ$Çîï"dî�ï\þ�Gî3ï‡þGî�ï@þÖGî�ï@þGdî Èï\þGî Èï+î3ï¹þ«$î3ïñþ«$î Èï•þGî�ïxþGdî�ïxþÖGî3ïÀþGî�ï•þ�Gî&åïcî5WïS×þä$î9;ïXIþV$îK‘ïO‰þ$äî9;ïOeþy$î9;ïOeþ$ î=­ïTóî?æïR»î?æïGžî=­ïI×î9;ïDHþ$ î9;ïDHþy$îK‘ïDlþ$äî9;ïM,þV$î5WïHºþä$î5Wï=�þä$î9;ïBþV$îK‘ï9Oþ$äî9;ï9+þy$î9;ï9+þ$ î?æï=î9;ï$�þ$ î9;ï$�þy$îK‘ï$Àþ$äî9;ï-€þV$î5Wï)þä$î<ï)î?æïÕî9;ïòþ$ î9;ïòþy$îK‘ïþ$äî9;ï!ÕþV$î5Wïcþä$î#ïñî%:ï¸îVïHºî�ï*¹î:ï.�þÈ$î:ï-¤þ$ÿFTVm$j21LSBSLLSAALBBCABBIFetchSLLSSLLSSLResult1Result2Result3ABBALU / FieldABAAluAAluBStore3AddrCacheBRamcDataEUIFUABqq>>qrqABBAABBAABMacro Instruction AMicro Instruction BrABAAAABBAPLS-BLevel 2Level 3MuxTopBA>>AluOpMuxBotCacheCmndABAB>Wt to Cache>>ABBAACr3<>IStackLevel 4Level 0Level 1F i g u r e 2D r a g o n P r o c e s s o r P i p e l i n eX BusPCPCPCPCPCPCPCPCPCPC160 x 32 RAMtïg/îETVm$pî:ï:úîäï:úîïL3þ$9î «ïLþ$]î «ïLþ $î�ïL3þ$9îïMÞîäïLÁî:ïLÁî:ïT‰îäïT‰î�ïSûþ$9î «ïS×þ$]îïSûþ$9îïU¥îäïÜîVïþ$Uî «ïñþ$yî¬ïÀîäï‡îsïL3þ$9îïLþ•$ÿ TVm$pî@tïLžî¬ïLžî�ï=Áþ$9î «ï=�þ $î «ï=�þ$]îï=Áþ$9îG­ïL3þ$9î>ÉïLþ $î>ÉïLþ$]îEtïLžÿTVm$>pîH<ïMÞî¬ï\PÿTVm$î+Wï[î «ïUìþäGî «ïN%þäGîïN%þrGî>ÉïN%þäGî Èï<]þ9Gî «ï<]þ Gî «ï#þ«Gî «ïÎþ«Gî «ï:lþ$9îï:lþ$9îÈï:lþ$9î «ï:Hþ $î Èï:lþ$9î Èï:Hþ9$î#ï:Hþ$]î#ï4ºþ$]î Èï4ºþ9$î Èï4Ýþ$9î «ï4ºþ $îÈï4Ýþ$9îï4Ýþ$9î «ï4Ýþ$9î «ï6Ïþ Gî Èï6Ïþ9GTVm$”pîäï5kî:ï5kî:ï(îäï(î Èï)yþ9Gî «ï)yþ Gî «ï'‡þ$9îï'‡þ$9îÈï'‡þ$9î «ï'dþ $î Èï'‡þ$9î Èï'dþ9$î#ï'dþ$]î#ï,òþ$]î Èï,òþ9$î Èï-þ$9î «ï,òþ $îÈï-þ$9îï-þ$9î «ï-þ$9î «ï/þ Gî Èï/þ9Gîäï-¤î:ï-¤î:ï!kîäï!kî Èï"Îþ9Gî «ï"Îþ Gî «ï Üþ$9îï Üþ$9îÈï Üþ$9î «ï ¹þ $î Èï Üþ$9î Èï ¹þ9$î#ï ¹þ$]î «ïþ $îÈï2þ$9îï2þ$9î «ï2þ$9î «ï#þ GîäïÀî:ïÀî «ï?Öþä$î äï<¤þ$î4Éï/þ«Gî=­ï,òþ�$îM<ï)Àþ$Uî=­ï)�þ$yîF‘ï"Îþ«GîBï#þ«Gÿ TVm$ îC;ï'òîGï!GîB­ïœ$TVm$pîMÊï"‡îMÊï)2îIXïÜ:TVm$îA‘ï+G > TVm$pîMÊï.Àî=­ï/þ«GîMÊï6ˆîMÊï2îF‘ï/þ«GJTVm$"îH<ï-€î?Xï-€î5æï!Gî4Éï)yþòGî4Éï"Îþ«GNTVm$"pî?æï!k\TVm$î>Éï +îEtï%NþG9îAï#þG9îAï%þäGîIæï#þG9î8ï)ÀþGUî8ï#þGrîIæï/OþGŽîAï/OþGŽî?æï/þGdî9;ï0$þòGî8ï/þGòî8ï0²þäGî8ïkþGrîIæï‡þGUîF‘ï@þ�GîF‘ïkþGîAï‡þGîAï@þUGîDXïkþGÿ`TVm$ypîAïÜfTVm$îDXïhTVm$pîCÊïÀlTVm$îNæï5ÖîNXï8�ÿrTVm$pî<ï"‡î<ï)2î7ï/+þ$ëî7ï1òþ�$î7�ï1dþä$îC;ï/Oþ$9îBï/Oþ$ÇîHÊï/Oþ$ÇîKï/Oþ$9îOuï%Nþ$ 9îIæï%+þ²$îEtïÕþ $îP‘ïùþ$qîNæï, îPïÐîOuï%îNXï!{î=­ï6Ïþ�Gî=­ï4–þÖGî9;ï$þV$îKï#þ$îOuï ^î4Éï,òþ«$pî<ï.ÀîDæï.ÀîDæïÿx TVm$‰î5æï'òî5æï-€î7�ï/Oþ$9î�ï Gîsï Gî «ï\—þrGî «ïZ‚þ$]î «ïZ‚þ•$îïZ¥þ$9îF‘ï-þ$9îM<ï-þ$9îDXï-þ$9î=­ï-þ$9î;tï-þ$9î4Éï-þ$9îM<ï'‡þ$9î=­ï'‡þ$9î;tï'‡þ$9î4Éï'‡þ$9î=­ï'dþ²$î4Éï'dþÎ$î7ï6ÏþrGî7ï4Ýþ$9î7ï4ºþr$î;tï4ºþ$]î;tï:Hþ$]î7ï:Hþr$î7ï:lþ$9î7ï<]þrG‚TVm$¤pî<Øï<î&Wï,òþ$]î$ï,òþ9$î$ï-þ$9î$ï/þ9Gî$ï<]þ9Gî$ï:lþ$9î$ï:Hþ9$î&Wï:Hþ$]î&Wï4ºþ$]î$ï4ºþ9$î$ï4Ýþ$9î$ï6Ïþ9Gî=­ï)yþ�Gî$ï)yþ9Gî$ï'‡þ$9î$ï'dþ9$î&Wï'dþ$]î9;ï#þ$î*Éï ¹þ$]î(�ï ¹þ9$î(�ï Üþ$9î(�ï"Îþ9Gî;tï Üþ$9î4Éï Üþ$9î4Éï ¹þ«$îF‘ï Üþ$9îF‘ï ¹þ«$îM<ï Üþ$9î=­ï"Îþ«GîDXï¤þ$rî=­ï¤þ$rîDæï"‡î4Éïòþ«$î4Éïþ$Uî;tïþ$Uî4Éï#þ«Gî7ïÀÿ”TVm$Øî5æï€šTVm$pî<ïÜî=­ï\þ«Gî?æï¤îBï2þ$9îBïþ«$îHÊï2þ$9îEtïjþGÇî+Wï"‡îG­ïñþ$yîC;ïñþr$îC;ïþ$UîC;ï#þrGîH<ïÜî=­ï4Ýþ$9îM<ï4Ýþ$9îïMÞî¬ïS×þ¬$î¬ïSûþ$9î¬ïUìþ¬GîïLþ$]îï:úîï5kîï-¤îï(îï!k  TVm$‚î*;ïGžî)¬ïP‚î:XïZ¥þ$9î¬ïZ‚þÏ$î¬ïZ‚þ$]î¬ï\—þ¬Gî-ï\—þG€îï ÜþGR<î «ïS×þ $îHÊïR»þ«$îOuïO‰þ$UîHÊïOeþÎ$îHÊïOeþ$yî'sïÀþGŽîWïyþ GîWï ÜþGäî<�ï7ëþGî8­ï:Öî8­ï5Hî2�ï2]þ Gî<�ï2]þGÖ®TVm$xpî9Éï32î;»ï<î;»ï6ˆî2�ï6Ïþ9Gî2�ï4Ýþ$9î2�ï4ºþ9$î4Éï4ºþ$]î4Éï:Hþ$]î2�ï:Hþ9$î2�ï:lþ$9î2�ï<]þ9Gî'sï%þ9GîVïV4þ$9îVï?úþ$ 9îC;ïNlþ$ îEtï7þ$UîKïPîIæïQ3î¬ïR»þ¬$î:XïO‰þ$Uî¬ïOeþÏ$î¬ïOeþ$yî ÈïHPî �ïFìî «ïI×þŽ$î:ïF¥þ$Uî «ïF�þ²$î «ïF�þ$yî äïIúþG9îï?úþGrî äï\ÞþG9î',ï<î',ï6ˆî5ï6ˆî5ï<î Öï6ˆî Öï<î Öï.Àî ÖïÜî Öï"‡îóï"‡î&åï)2î&åï.2î:ï²þ�Gqî4Éï%î4Éïcþ$î5æïjþ$î4ÉïGþ@$î4ÉïGþ$@î5æï²þÖGî9;ï0kþGrî�ï2þ$9î�ï Üþ$9î�ï-þ$9î�ï'‡þ$9î�ï4Ýþ$9î�ï:lþ$9pîïÀîVï<¤þ$îVïÜîïGþ$@îïGþ@$î:ïjþ$îïcþ$qîï%îï²þdGî «ïœþ«$îï‡þ$9î «ïcþ$]î «ïcþÎ$î äïÀþGrî ÈïÀþG9î¬ïÀþ$9pî:ï‡î:ïjþ$î äïjþ$îVïcþ$@îVïcþ@$îsï‡þ$îVï€þ$qîVïAîäïùþ$Žîäï£þ$ŽîVï‡þ$9îÈïÀþ$rî:ï‡þ$Žî¬ï %î¬ïcþ$îÈï jþ$î¬ï Gþ@$î¬ï Gþ$@î:ï Üþ$Žî Vï Gþ$@î Vï Gþ@$îsï jþ$î Vïcþ$î Vï %î äï •þGÕî äï‡þGŽîï •þ 9Gîsïcþ$@îsïcþ@$î�ï‡þ$îsï€þ$îsïAîï²þGÕîï£þGŽpî¬ïî¬ïF�þ$yî¬ïF�þÏ$î:XïF¥þ$Uî¬ïI×þ¬$qîKïAµîK‘ïT îB­ïK'îLïEeþ$ $îK‘ïK'îLïRÞþ$Žî äïV4þGrî äï?úþG«pî :ï.Àî :ï)2î :ï6ˆî :ï<îžï<îžï6ˆîžï)2îžï.Àîžï"‡î¬ïLþ$]î:æïMÞî¬ïN%þ¬Gî¬ïLþÏ$î:XïL3þ$9îVïEeþ9É$îVïXIþ9É$î:XïSûþ$9Â@TVm$¬î&WïTeî&åïLžÿ&TVm$qîB­ï9_î>Éï<]þäGÿ(TVm$îEtï:Öî>Éï:Hþ$]î>Éï:Hþ $îG­ï:lþ$9î@tï:Ö*TVm$$pîGôï<îAï7þ$Uî:æïU¥î�ïU¥î ÖïU¥î ÖïMÞî �ï‡î �ïÜîsïDl, TVm$.îï+GîïòîïD%þrGî �ïD%þUGî rïD×þ$î �ïCÞþ$î rïCºþ@$î rïCºþ$@ÿ8TVm$5qî rï@˜pîVïEˆîï^ÐþK‘GîP‘ïCOþGÈî9;ïCþ�Gî9;ïAþG9î7ï@óþr$î;tï>Ýþ$9î7ï>ºþ•$î7ï>ºþ$]î9;ï<¤þG9îOuïPìþGî3­ï.2þ$«qî3­ï*_pî2ï=3î1tï6ˆî1tï<î.¬ï6Ïþ9Gî.¬ï4Ýþ$9î.¬ï4ºþ9$î0åï4ºþ$]î0åï:Hþ$]î.¬ï:Hþ9$î.¬ï:lþ$9î.¬ï<]þ9Gî0åï,òþ$]î.¬ï,òþ9$î.¬ï-þ$9î.¬ï/þ9Gî/Éï*Ýþ$9î/Éï*¹þä$qî2�ï' î2�ï+ùþG«î.¬ï+²þ+Gî.¬ï%NþG«î+åï!ùþ$Žî+åï!ÕþÇ$î2�ï%pî.ï>Ýî3­ï.þ$î*Éï/þ9Gî*Éï-þ$9î*Éï,òþ9$î-ï,òþ$]î-ï'dþ$]î*Éï'dþ9$î*Éï'‡þ$9î*Éï)yþ9Gî*Éï6Ïþ9Gî*Éï4Ýþ$9î*Éï4ºþ9$î-ï4ºþ$]î-ï:Hþ$]î*Éï:Hþ9$î*Éï:lþ$9î*Éï<]þ9Gî*;ï=3î$ï>Oî$ï=3î-�ï.Àî-�ï)2î-�ï<î-�ï6ˆî$ï"Îþ9Gî$ï Üþ$9î$ï ¹þ9$î&Wï ¹þ$]î%:ï¤þ$9î%:ï€þV$qî;tïÐpî*Éï¤ î%:ï#þ$rî%:ï&Gþr$î)¬ï#þ$UqîAïzîsï{îï +þr$îï#þ9Gîï2þ$9îïþ9$î:ïþ$]pîï<îï6ˆîï)2îï.ÀîÈï"‡îï ¹þ9$îï Üþ$9îï"Îþ9Gîï/þ9Gîï-þ$9îï,òþ9$î:ï,òþ$]î:ï'dþ$]îï'dþ9$îï'‡þ$9îï)yþ9Gîï6Ïþ9Gîï4Ýþ$9îï4ºþ9$î:ï4ºþ$]î:ï:Hþ$]îï:Hþ9$îï:lþ$9îï<]þ9GÿF=TVm$!î�ï:Ö„TVm$pî!Wï=3î!åï‡þ$Uî>ÉïNþ$9î>Éï+þU$îïþ$îsïòþÎ$qîsïAî�ïÀþ$ rî�ïœþ$¬$îBï ìî�ïkþ$äî�ïþ$î¬ïþ$]îsïþ9$îsï2þ$9îsï#þ9Gî!åïcþä$î:ï Üþ$9îïkþ$rÿ†TVm$pîsïîïîïP‚îï8î&åï îC;ï<¤þ$�îïFð1î�ï]IŠ`TVm$+pî äïT‰î äïLÁî äï:úî äï5kî äï-¤î äï(î äï!kî äïÀî äïî VïÀÿêTVm$0îAï5H þ TVm$22tïg/îETVm$ÿGATES ÿ HELVETICAÿ HELVETICA ÿLAURELþŸ ÿ TIMESROMANþæ ÿ TIMESROMANþŸ ÿ TIMESROMANþŸ ÿ TIMESROMANþŸ ÿ TIMESROMANþYÿLOGOü´ÿ TIMESROMANþæÿ HELVETICAþŸÿMATHþæÿ HELVETICAþŸÿ HELVETICAþæÿ HELVETICAþYÿ HELVETICAþÿ HELVETICAý…à  ÿ Œ Ž# Æ, Æ7 vC ÜO cX œc pm -w bƒ ì� ³™ c£­ªU­¾²ÁÁîÂj/ÆÄ�áÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[]<>dragonoverview.tioga$Friday, December 7, 1984 5:30 pm PST