//D1simmi.d -- memory and ifu declarations for the DMux simulator // Last edited: 3 June 1981 structure MC: [ g0 word 43B //40B words //!dPVAH Tn ge 2 & no clock //!dPVAL Tn ge 2 & no clock //!dMAPAD Never** //HIT g1 bit 7 MiscPCHPx bit //Tn ge 2 ColVic bit 2 //Tn ge 2 unless T1EcHasA % (Hit & T1Dbusy) HitColVApar bit //0 on miss HitColDirty bit //0 on miss Hita bit //(Tn ge 2) & ForceMiss //(**should also check when PairHasA false) g2 bit 3 //HOLD **Structure violated** g3 bit 2 HaveMC bit WantCHdlyx bit //Tn ge 1 MiscHoldx bit //Tn ge 2 MDholdx bit //Tn ge 2 RefHoldx bit //(Tn ge 2) & not miss with ForceMiss BLretry bit //Forced to 0 AwasFreex bit //Tn ge 2 Dbusy bit //Tn ge 2 DbufBusy bit //Tn ge 2 AtookST bit //Tn ge 2 SomeExtHoldx bit //On StkError % CHoldReq Afreex bit //EcHasA StartMapx bit //Always AwantsMapFSx bit //Always //PAIR **Structure violated** StoregInA bit //EcHasA % (Tn ge 2) IoStoreInA bit //EcHasA % (Tn ge 2) MapgInPairx bit //Tn ge 2 FlushInA bit //EcHasA % (Tn ge 2) PrefetchInA bit //EcHasA % (Tn ge 2) IfuRefInA bit //EcHasA % (Tn eq 2) IoRefInAx bit //EcHasA % (Tn ge 2) CacheRefInA bit //EcHasA % (Tn ge 2) g4 bit PrivRefInPair bit //Tn ge 2 VicInPairx bit //(Tn ge 2) & (WantVic' % ForceDirtyMiss) FSinPairx bit //(Tn ge 2) & (FlushInA' % Miss) bEcHasA bit //Tn ge 2 KillIfuRef bit //Always gPrVArow bit //Tn eq 2 PairFullx bit //Tn ge 2 //PIPEAD PipeAd bit 4 //Tn eq 2 CacheConfig bit 2 //Never PageConfig bit 2 //Never g5 byte g6 word 8 //MCR dVAgVic bit //Never ForceDirtyMiss bit //Never UseMcrV bit //Never Victim bit 2 //Never NextV bit 2 //Never DisBR bit //Never DisCflags bit //Never DisHold bit //Never NoRef bit //Never g7 bit 2 //Never WakeOnCL bit //Never ReportSEx bit //Never NoWakeups bit //Never //!dAAD never** //!dMEMB never** ] structure MD: [ g0 word 50B //MEMD0 SinD00 bit //Never CD00 bit //Never D0in00 bit D1in00 bit EcSout00x bit g1 bit 3 D00 bit dMD00 bit Fout00 bit g2 bit 5 //DAD--all bits predicted when ProcVA and Dad loaded identically; //Dad9=13 predicted on ClearWA. Dad bit 13 //2-9 low true Dad1 bit 3 //FD FgD bit //Tn ge 2 DgDbuf bit //Tn ge 1 SoutgD bit //Tn ge 1 FoutgD bit //Tn ge 1 DgCD bit //Tn ge 1 MDgD bit //Tn ge 1 MakeMDMgDx bit //Always from the equiv MemX signal bFastDgDbuf bit //Always Dbufgx bit //Tn ge 1 DadHgx bit //Tn ge 2 DontLoad1 bit //Always GenPh1 bit //(Tn ge 2) & EnEcGen DontWriteMDM bit //Tn eq 2 g3 bit 3 //EC g4 bit 4 StartEcChkx bit //Always StartEcGenx bit //Always g5 bit EcInD bit 2 //Never WordInErrorx bit //When DisableEc true DisableEcx bit //Not now--could predict at Tn eq 3 ChkPh1 bit //(Tn ge 2) & preEcEn ChkPH4x bit ChkLastPh6x bit DoubleErrorx bit ChkErrEnx bit //TSYN tSyn byte //tSyn0:6 and 7x g6 byte //MDMAD MDMadx word //Tn ge 2 //DADE DCExc bit 4 //Two chip enables always predicted false, //other two if (T1Transport & (Tn ge 2)) WriteD0xe bit //Tn ge 2 WriteD1xd bit //Tn ge 1 g7 bit 10 ] structure MX0: [ g0 word 61B //60B words, MAPBUF //Tn ge 2 //P34INEC Mapbuf1617 bit 2 //Tn ge 2 ProcTagInA bit //Tn ge 2 PrivRefinPair bit //Always--**copy of MemC** Pipe34Ad bit 4 //Tn ge 2 WPinEc1 bit //Tn ge 2 MapTroubleinEc1 bit //Tn ge 2 TagInEc2 bit //Never CacheRefInEc2 bit //Never StoregInEc2x bit //Never IFURefInEc2 bit //Never MapPEInEc2 bit //Never MapTroubleInEc2 bit //Tn ge 2 //MCDTSK MDMtagAd bit 4 //Always CurTask bit 4 //Always ProcTag bit //Always MDMtagx bit //CacheRefInPair & (Atask eq CurTask) AteqCurtx bit //Always DteqCurtx bit //Always Dtask bit 4 //Never //STA VictimInST bit //Tn ge 2 STIdlex bit //Always StartST bit //Always STWaitMemx bit //Tn ge 2 STState bit 4 //Tn ge 2 STfreex bit //Tn ge 2 VictimInA bit //Always--**Not much help since VicInPair on MemC** MapRfshDly bit //Tn ge 1 RefUsesDinEc1 bit //(Tn ge 2) & StartEc1 AWordRefToD bit //Always MapWantsPipe bit //Tn ge 2 MapFree bit //Tn ge 2 UseAsrn bit //Tn ge 2 //APESRN ASrn bit 4 //Tn ge 2 ProcSrn bit 4 //Tn ge 2 MapIs16K bit //Never MapIs64K bit //Never MapIs256K bit //Never RfshAd0 bit //Never Ec2Srn bit 4 //Tn ge 2 //STOUT LoadEnx bit //Never (**could predict at Tn eq 3) EcLoadEnx bit //Never (**could predict at Tn eq 3) ShiftEnx bit //Tn ge 2 EnEcGenx bit //Tn ge 2 MapWaitSTx bit //Tn ge 2 STPerrNowx bit //Never EnableAllMods bit //Never (**could predict at Tn eq 3) StartEc1 bit //Never PairFull bit //Always--**Copy of MemC signal** Transporta bit //Always ECFaultx bit //Never MemErrorx bit //Never g1 bit //Never ChipsAre25616K bit //Never ChipsAre64K bit //Never VicSTPerr bit //Never** ] structure MX1: [ g0 word 66B //TAGAT MemColSela bit //Never (**could predict at Tn eq 3) EcHasA bit //Tn ge 2 Ptag bit //Never MapWaitEc2 bit //Tn ge 2 Dtagx bit //Tn ge 2 sHold bit //Always MapWaitMemStatex bit //Always MapRfsh bit //Always AcanHaveD bit //Tn ge 2 CacheRefInPairx bit //Tn ge 2--**CacheRefInA on MemC** EcWordRefToD bit //Always ChkLastPh6 bit //Always Atask bit 4 //Tn ge 2 //MEMST MapWaitMemD bit //Tn ge 2 MapWaitMemIO bit //Always MemIdlex bit //Always MemFree bit //Tn ge 2 MemState bit 4 //Tn ge 2 FinNext bit //Tn ge 2 MemRfsh bit //Tn ge 2 StopFinTaskLoad bit //Tn ge 2 DdataGoodx bit //Tn ge 2 MakeSoutgD bit //Tn ge 2 MakeTransport bit 3 //***not yet*** g1 word //FLTMEM g2 bit 3 ProcSrngx bit //Tn ge 1 Faults bit //Never (**could predict sometimes) LoadFltSrn bit //If independent of FaultSrn eq 0 ReportFault bit //Always MapPEInMem bit //Never MapTroubleInMem bit //Never RfshInMem bit //Tn ge 2 WriteInMemx bit //Tn ge 2 MemWP bit //Never IOFetchInMemx bit //Tn ge 2 RefUsesD10InMemx bit //Tn ge 2 RefUsesDInMem bit //Tn ge 2 DirtyIOFetchInMem bit //Tn ge 2 //RFSSRN STPerr bit //Never (**could predict if NoWakeups % no clock) MapPerr bit //Never (**could predict if NoWakeups % no clock) HitPerr bit //Never (**could predict if NoWakeups % no clock) WantRfsh bit //Tn ge 2 NeedRfsh bit //Always StartMema bit //Tn ge 2 StkWake bit //Never gFaultInfoDlyx bit //Never (**could predict at Tn eq 3) MapSrn bit 4 //Tn ge 2 MemSrn bit 4 //Tn ge 2 ] structure MX2: [ g0 word 73B //EC1MAKE StartEc2x bit //Tn ge 2 Ec1Freex bit //Tn ge 2 Ec1Idle bit //Always Ec1FnState bit 5 //Tn ge 2 EcWantsAa bit //Tn ge 2 FoutNext bit //Tn ge 2 usually MakeFoutgD bit //Tn ge 2 usually MakeDgCD bit //Tn ge 2 usually MakeDgDbuf bit //Always MakeFgD bit //Always MakeMDgD bit //Always MakeMDMgDx bit //Tn ge 2 //MAPCTRL MapBufHi bit 2 //Never MapRASx bit //Tn ge 2 when forced high MapCASx bit //Tn ge 2 when forced high MapWEx bit //(Tn ge 2) % StartMap RefWEx bit //Tn ge 2 DirtyWEx bit //(Tn ge 2) % StartMap g1 bit MapWait bit //Always WantMapWaitx bit //Always ValidMapFltInEc2x bit //Tn ge 2 MapFnxState bit 5 //Tn ge 2 //PEEC PEsrn bit 4 //Always Ec1Srn bit 4 //Tn ge 2 CacheLoadx bit //Always Ec2Free bit //Tn ge 2 Ec2Idle bit //Always Ec2FnState bit 5 //Tn ge 2 //INMAP RefUsesDInMapx bit //DirtyIOFetchInMap % ((Tn ge 2) & StartMap) RefUsesD10InMapx bit //Tn ge 2 DirtyIOFetchInMapx bit //Never WriteInMapx bit //Tn ge 2 IOFetchInMapx bit //Tn ge 2 gMapInMap bit //Never StoregInMapx bit //Tn ge 2 EcWantsPipe4x bit //Tn ge 2 g2 byte ] structure IFU0: [ //K stable means no IFUM write and InstrSet doesn't change, and it implies //that Testing' remains false also. g0 word 120B //MEMRQ PcF815 byte //Tn eq 2 if K stable NewF bit //Tn eq 2 & Testing' (in D1SimMem) KillResponse bit //Tn ge 1 & Testing' Pause bit //Tn ge 2 if K stable RefOutstanding bit //Never (need TestMemAck) IncPcF bit //Never (Need TestMemAck) IncPcFGx bit //Always WantIfuRefx bit //Always ThreeOutOfFive bit //Always //LOADS ValidRam bit //Always JgOddF bit //Always RealPcFG15 bit //Tn eq 2 & K stable FDv bit //Tn eq 2 & K stable GDv bit //Tn eq 2 & K stable HDv bit //Tn eq 2 & K stable JDv bit //Tn ge 2 & K stable MDvx bit //Tn ge 2 & K stable EnableFGx bit //Always XLd bit //Always AlphaXLd bit //Always BrkLd bit //Tn ne 1 MLd bit //Always InstrAddrLd bit //Tn ge 2 JLda bit //Always GLdx bit //Always //HJ H byte //Never J byte //Tn ge 2 & Testing' unless IFUM write when //no clock or on J_H the 1's are simulated. //MX **Structure violated** TwoAlphaX bit //Tn ge 2 & Testing' JFault bit //Tn ge 2 & K stable & IfuReset' HFaultx bit //Tn eq 2 & Testing' NMeq17 bit //Tn ge 2 & K stable TwoAlphaM bit //Tn ge 2 & K stable TypeJumpMx bit //Tn ge 2 & K stable LengthM bit 2 //Tn ge 2 & K stable DSel bit 2 //Tn ge 2 & Testing' unless XShift with DSel eq 0 LengthX bit 2 //Tn ge 2 & Testing' NX bit 4 //Tn ge 2 & Testing' when unclocked or NM=17 //JMPEXC Exception bit //Always SayNotReady bit //Always WantResched bit //Tn ge 2 & Testing' SawRamParityErr bit //During Reset only ** SawFGParityErr bit //During Reset or when testing ** ReschedPending bit //Tn ge 2 & Testing' & ExceptionDispatch insignificant KReady bit //Always g1 bit ZapFGH bit //Always ZapJ bit //Always NewJ bit //Tn ge 2 & K stable DoJump bit //Tn ge 2 & K stable TurnOffAlu bit //Tn even NewGo bit //Always BMuxEnable bit //Tn even FGFault bit //Never (Need FFault muffled) ] structure IFU1: [ g0 word 125B //PCJ PcJ815 byte //Tn eq 2 & K stable MLdDlyx bit //Tn ge 2 & Testing' BetaInM bit //Tn ge 2 & Testing' FGErrDly bit //Tn ge 2 RamErrDly bit //Tn ge 1 InstrSet bit 2 //Never (could predict at Tn eq 3) OBJinJ bit //Tn ge 2 & Testing' OBJinJd bit //Tn ge 2 & Testing' //FFK Testg bit //Tn ge 1 GenOutgx bit //Tn ge 1 NewPcg bit //Tn ge 2 & Testing' IfuReset bit //Tn ge 2 BrkInsg bit //Tn ge 2 & Testing' Testing bit //Tn ge 2 SignXx bit //Never BrkPending bit //Tn eq 2 & Testing' g1 bit 3 TypeJumpKx bit //Never TypePauseKx bit //Never LengthK bit 2 //Never SignK bit //Never //IDLY **Structure violated** GDvDly bit //Tn eq 2 & Testing' HDvDly bit //Tn eq 2 & Testing' FDvDly bit //Tn eq 2 & Testing' KReadyDly bit //Tn ge 2 & K stable GLdDlyx bit //Tn eq 2 & K stable IncPcFGDlyx bit //Tn eq 2 & K stable GFaultDlyx bit //Never ExceptionDly bit //Tn ge 2 & Testing' g2 bit 2 TestMakeFgD bit //Tn ge 2 NK bit 4 //Never TwoAlphaK bit //Never ]