1MemoryControllerSpec.tiogaCopyrightc1986byXeroxCorporation.Allrightsreserved.LastEditedby:GasbarroSeptember24,19864:09:13pmPDTJune87MemoryControllerBoardTheJune87DragonMemoryControllerboardsupportsfourbanksofrandomaccessmemory.Banksoperateindependentlysothattotalmemorybandwidthisroughlyproportionaltothenumberofbanksinthesystem.Eachbankwillinitiallyconsistof8MBytesofSingle-Error-Correct,Double-Error-Detect(SECDED)memoryusingSingleInlineMemoryModule(SIMM)mounted1MbitDRAMs.TherearenineRAMspermoduleandeightmodulesperbankforatotalof72RAMchips(64data+8ECC).Thecontrollerchipallowsforexpansionuptoamaximumof16banks,thoughthereisnospaceorpowerprovisionsinthecurrentpackagetoaccommodatethismuchmemory.Banksmustbeaddedinincrementsofpowersoftwo.ThecontrollerchipalsoprovidesextendedaddressingcapabilitytoprovideforfuturegenerationsofDRAMs.The1MbitSIMMscanbeupgradedwith4,16,or64Mbitparts.AcompletebankofmemoryconsistsoftheeightSIMMs,thecontrollerchip,threeAS-TTLdriversfortheRAMaddressandcontrollinesandpossiblyanadditionalchipprovidingtimingfortheRAM.Thesepartswilloccupytentofifteensquareinchesofboardspace.ChipDynaBusInterfaceThememorycontrollerrespondstothefollowingDynaBuscommands:ReadBlockRequest-readsfour64-bitwordsfrommemoryWriteBlockRequest-writesfour64-bitwordsfrommemoryWriteSingleRequest-reflectsreplyanddatatocachesbelowIOReadRequest-returnsfirstfailingaddressandsyndromeBroadcastIOWriteRequest-reflectsreplyanddatatocachesbelowThememorycontrollermaintainsaqueueofthoseDynabuscommandswhichitmustacton.Thesecommandsareexecutedintheorderinwhichtheywerereceived.Ifthequeueissofullthatanothercommandcouldcauseittooverflow,thememorycontrollernegotiateswiththearbitertostopincomingrequests.DataPathThedatapathofthememorycontrollerchip,illustratedintheblockdiagram[1],isfairlystraightforward.ThememorycontrollergeneratestheerrorcorrectingcheckbitsforeverywordthatisplacedontheDynabus.Inparalleltothisgeneration,thewordisdecodedbytheInputpïg/îEÉqï_,î gï]„îxrîÅï]„qï]„î«îñîËîä î(Nî*—î.dï[Ýîxî”îÛî.îÿî$›î&Øî*î/î1RsïS˜î gîî³ ïLúî gtïI«î)îXîaî¸î"¨ î)¡î-ïî3Öî71î;î=�îCïHî gî­îÃî¬ î$­î&pî)=î,aî1Íî8§î:î?& ïF]î gîjîî î­îùîüî!°î'±î+yî/@î2@î7”îrî?üîE[ïDµî gîÙî'-î.Ïî4•î8˜î= îAzïCî gîtîÃîuî‹î ßî' î*îî-"î0î4mî6Ãî;¤î><îA�ïAgî gî î¨îîhîºî î±î!Éî%Šî(î+Gî-Yî.ºî3Ïî6Ô î=@î@}îD×ï?¿î gîìî îÈîî�î Vî"Iî&¦î+hî.ÿî0yî2�î6Pî8"î<^ îBøîD´ï>î gîMî¬îw î!>î#üî'ïî.qî2¥î6*î87îC îE[ïî?ÆîD×ï:Éî gî© îîçî Žî#„î$×î(hî-†î0/î2>î8|î;µî=`î?»îAžîC¡ï9"î gîîÌîæîŠîuî$î)Eî+/î-Áî1eî6îî9 î?ñîC‹ï7{î gîÔîNîuî¾î“î#gî&î*¤î-Èî0iî5 î7z î=Ûî@Ôï5Óî gîÁîþî^î%î'î!�î$:î(îî+Mî,ûî1Vî5¼î9õî;®î?¥sï/6î guï+çî gîMtï(˜î)îîn î­î#tî%"î'‚î-”î3‡ï&î)îùîöî•î"™î&�î*�î.ï#¡î)î:î8î :î#>î'5î+Bî.©ï!&î)îˆî…î!Cî$Ìî'ƒî*ˆî,7î0‡ï«î) î4î2îåî!½î&î*ëî-¢ï0î)î=î :î$øî(�î+8î.=î/ëî4<ïµî)îî� îÜî$+î%dî)˜î+aî/î4ñî;æî@îAiîDàï î gî:î5îî_î"î#»î&î)Áî+gî/nî2wî5Àî;üî=wî?ÏîCìîEPïfî gîçîªî«îî Âî$lî%·î'[î-Xî/¬î5 î;C îA¤îD´ï¿î gîØî†î€îˆuïpî gîÙtï!î)îî!îUîîˆî" î(Pî+Æ î2@î3üî6iî:7î?œîAýîCvï yî gî¿î�îð î%%î+#î-xî0ß î7Aî;î=¯î?âîC‹ï Òî gî4îŸîùîþî\î î!Õî&¾î(kî+ î2&î4„î8 î9vî>ïî@êîCH”TVm$12ControlFSMtodetermineifitisacommandintendedforthisbankandifso,howmanydatawordsfollow.OnlyvalidcommandanddatawordsareenteredintotheinputFIFO.WhenavalidcommandpropagatestothefrontoftheFIFOtheCommandDecodeFSMdetermineswhatRAMoperationshouldtakeplace,assemblesanyneededdataintheWriteBuffer,andinitiatestheRAMtimingsequence.WhentheRAMoperationhasfinishedandanyresulthasbeenlatchedintheReadbuffertheCommandDecodeFSMregistersareplyrequestwiththeRequestQueueFSM.Thisstatemachinekeepstrackofthenumberofpendingreplysandthenumberofcycleseachrequires.ItinturnissuesarequesttotheReplyControlFSMtonegotiatefortheDynabusandshiptheReplyCommandandData.InordertoimprovetheutilizationoftheRAM,theReadbufferisimplementedasdual-portedping-pongbuffer.Thus,whileonecommandiswaitingforit'sreplytobesent,anotherRAMoperationcanbeinitiatedandtheresultsstoredintheotherhalfoftheReadbuffer.TheBufferControlFSMhandleswhichportofthebuffershouldberead/writtennext.ControlMostofthecontrolcircuitryofthememorycontrollerisimplementedinthefivefinitestatemachines.Ofthesefive,twohavebeenimplementedwithhardwiredlogic.Theremainingthreewill(hopefully)beautomaticallygenerated.RAMTimingTheexactimplementationfortheRAMtiminggeneratorhasyettobedetermined.Therearethreepossiblecandidates:anexternaltiminggeneratorchip(Am2971),aninternalphase-lockedloopdelaycircuit,andaninternalsynchronousstatemachinegenerator.Therearemanyfactorsuponwhichtobasetheselectionfortheimplementationmethod,includingrisk,cost,numberofpins,boardspace,andaccesstime.Fortunatelythedecisioncanbedelayedforquitesometimewhileotheraspectsofthesystembecomemoreclear.DelayThemostimportanttimingspecforthememorycontrolleristheminimumdelayfromaReadBlockRequestonthebustothefirstwordofdatadelivered.Thisdelayisthesumofthefollowingdelays:fivepipelinestagesbetweenthebusandthetimethattheCommandDecodeFSMinitiatestheRAMcycle,thetotalRAMaccesstime(fromRAStothelastnibble),andtheoutputpipelinedelay.TheRAMaccesstimedependsonhowthetiminggeneratorisimplementedandonwhatspeedRAMswechoosetobuy.Upperandlowerlimitsare450-300ns.Theoutputpipedelayismoreinteresting.SincethedataisdeliveredfromtheRAMinthesamecyclicorderthatitmustbeshippedonthebusitispossibletobeginfillingtheoutputpipebeforetheendoftheRAMaccesstime.Thus,theoutputpipedelayisactuallynegativethreecycles.InadditiontothedatadelaythereistheconcernthatOwnerandSharedmustbereceivedbeforeRequestcanbeasserted.Thesesignalsarenotvaliduntilten(?)cyclesaftertheRequestcycle.AddedtothisistheminimumdelayfromRequesttoGrantasdeterminedbytheArbiter(3cycles?).Thetotaldelaythenis:MAX[(2cycles+300-450ns),13cycles]Assumingabuscycletimeof25nsandthefastestRAMaccesstime,theminimumRequesttodatadelaythenis350ns.Throughputpïg/îEÉtï_/î gî~îî¸î<îžîöî!cî"Žî(ñî.®î0íî3�î7î9½î; î==î@CîDï]ˆî gîyî—îîzî"àî%œî(¦î,¸î/î4 î6èî9Mî<üîAÍîEêï[àî gîñît î|îLî!Îî%cî'>î)Àî-Íî0Oî75î)î@ÏîDŸïVêî gîÍî¡îXîÂîjî £î# î)Ùî.îî2€î7ìî9 î<²îA�îD´ïUCî gî¿î.î�î©î Ùî&\î*1î-£î/Zî1¹î6äî8›î=óîAþîD´ïSœî gîyîîóî îýî!Yî"íî%×î)�î*¬î/eî0ùî3>î70î<+î?™îA,ïQôî gî´î#îîËîÔîCî#_î*2î,ùî1Qî3/î6óî8±î>.î@� ïPMî gîîkî¥îúî�î´î  î(]î* î1mî7ûî<ñî@¾îDhïN¦î gîÚîXî>î�îÒî!mî#-î%0î(~î-›î1™î7Õî:rîî gî=tï:Ëî)îî� îqî!±î$î(î,^î2î4÷î7Cî8ôî:ç îCï9$î gîBîTî î Ùî#Qî)î-ýî4£î8;î?†îAþï7}î g î–î¯îLîÓî"~î$aî)k î1Mî4qî9é î@ËîDÀï5Õî gîFîËîtî–îYî!ˆî#üî)¶î,î.| î8oî=èîDï4.î gî…îªî\î¦î–î!œî$Lî(Rî,D î3²î6 î;[î=ßî?ÈîD×ï2‡î gîñî„î©î^îýî"¥î$^î&¾î+9î0Oî3âuï/7î gtï+èî)îîŒîî vî#�î%òî(iî-í î4Dî5Çî8>î>«îBlîEêï*Aî gî:îDî¦î@î òî#Tî&0î)¼î+xî.€ î5`î8}î<*î=™î?üîBøîD´ï(™î gîOîÌîYî{î"Hî'Œî)Âî,.î.»î0ðî3ëî6�î8Åï&òî gî¶îCî\îUîâî"5î&Nî*‰î-Ýî1ëî5uî7Qî9Þî<ŒîAÏîD´ï%Kî gîAî÷îMî�î#áî(Wî+åî1¼î4+î7—î:_î?!îE¨ï#£î g îœî7î!îaî &î$yî&„î*îî,€î/æî4$î6¿î:lî>î@Q ï!üî gîZîçîîáîhî  î'àî+°î.+î1Jî2Ñî8éîåîBëîD´ï Uî gîýîáî®î•îî„î!�î&Óî(òî+jî.î/‡î1 î6fî8-î<î@*îB¢ï­î gqî‘ï­ï­îAtî®ï­ï­îîîâîªîî!î%0î)Oî-4î/¢î4#î7Mî;î<€îA¦ïî gîíîºî†îòî�îúî"ûî&¢î*(î+‘î-íî3î5âî:eî=îA¾îE#ï_î gîÐîînîôîßî%èî)äî.Oî0�î3 î6oî9°î=ŒîA~îD´ï·î gîÏî=îÓî‘îBî ½î#,î)�î-Iî0Àî6(î7æî<î=À îEïî gîÆîšîHî$îüî!!î$Ëî'ñï•îUî"Íî&Åî(ª î/æî1Ëïžî)î€î¡î/îšî¶î!gî$Žî'=î)”î-ºî1�î5¢î9î;nîA»ïöî gîîîÄîêîVuï §î g  vTVm$¶3AssumingminimumtimingforthebusandRAM,thethroughputforasinglebankofmemoryislimitedbytheabilitytocycletheRAM.Therearethreecyclesofoverheadinthestatemachineinadditiontothecycletimeandtheprechargetime.PrechargetimeforthefastestRAMsis100ns,sotheminimumcycletimefortheRAMisthreecyclesplus400nstodeliverfour64bitwords.Thethroughputthenis:4words/(3cycles+400ns)=8.5MWords/secondDebugInterfaceThesystem'sDBuswillbeusedtodownloadvariousregistersatsysteminitializationtime.TheMemoryandIOaddressspacewhichtheMemoryControlleroccupiesmustbeprogrammedbeforeanyaccessescanoccur.TheDBusisalsousedtoinitializeparametersspecifyingthesizeandspeedoftheRAMsusedandtherefreshrate.FeaturesYetToBeImplementedOwner,SharedFifoRAMTimingGeneratorDBusControllerReferences[1]Blockdiagram[Indigo]MemoryController>BlockDiagram.dale[2]Schematic(inprogress)[Indigo]MemoryController>MC.dalepïg/îEÉtï_/î)î¸î=î Çî#4î%Ãî(‰î+pî/äî2s î9×îî1Jî3¨î7;î;<î=îBüîD´ï[àî gî¸î\î*î¹î‡î!î$™î(ƒî+Zî-Úî4Pî8‘î?îBWîD´ïZ9î gîªî.î®îüîÔîHî%²î)9î,sî.Åî19î59î6¹î:Wî>bîAqîEeïX’î gîøîüîáîÿîçî¿ î&ôî*ïVî Nî!ƒî%�î&Äî(rî,jî.OïSœî"kî$Pî&Œ uïMÒî gîÀtïJƒî)î îiîGîûîôî#8î$ïî+Mî0î5ˆî7)î;¬ îC—ïHÜî gî-î´îYîcî:î!Ýî%Ùî(&î-­ î4=î9»î=î>ï ïG5î gî®îFîtî÷î‚î"Rî&î'ƒî*Fî-zî/ î4¥ î;£ îBîDiïE�î gîîî¹îîˆîÄî!{î#Ûî(wsï>ðî gî,îGîëît uï;¡î gî/îÖï8Sî gî=îúï5î gî< sï.gî g tï+î‰î îéï)*î¬ð2ï'<î‰î î—î¾ï%Nî¬ð(gTVm$~ÿ TIMESROMANþŸÿ TIMESROMANþŸÿ TIMESROMANþYÿMATHþŸÿ TIMESROMANþŸÿ HELVETICAþŸ Íj/¡A½³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3[]<>Users>Gasbarro.pa>MC>MemoryControllerSpec.tioga'Wednesday, September 24, 1986 4:09 pm P