CacheEntries.rose
Last edited by: Barth, May 22, 1984 8:17:28 pm PDT
Imports CacheEntry, IO, NumTypes;
Library CacheEntry;
CacheEntries: CELL[
Timing and housekeeping interface
Vdd, Gnd<BOOL,
Buffered timing and housekeeping interface
PhAb, PhBb, nPhBb<BOOL,
Resetb<BOOL,
CAM interface
VirtualPage, nVirtualPage<INT[24],
VirtualBlock, nVirtualBlock<INT[6],
RealPage, nRealPage<INT[24],
RealBlock, nRealBlock<INT[6],
CAMPageAccess, nCAMPageAccess=SWITCH[24],
CAMBlockAccess, nCAMBlockAccess=SWITCH[6],
RAM access
PBits, nPBits=SWITCH[66],
MBits, nMBits=SWITCH[66],
Cell control
nVirtualMatch, nMatchPageClean, nMatchCellShared=BOOL,
nMapValid, nRealMatch, nVictimClean=BOOL,
nMatchTIP=BOOL,
CellAdr, nCellAdr<INT[8],
VirtualAccess, nVirtualAccess, SelCell, SelVictimAdr, SelMapAdr, SelRealData, SelPageFlag, SelVictimData, SelRealAdr<BOOL,
FinishSharedStore<BOOL,
VPValid, nVPValid, RPValid, nRPValid, RPDirty, nRPDirty, Master, nMaster, Shared, nShared, Victim, nVictim, TIP, nTIP, Broken, nBroken=BIT,
MAdrLow, nMAdrLow<BOOL,
PAdrLow, nPAdrLow<BOOL,
PStore<BOOL,
VictimFeedback, nVictimFeedback, ShiftVictim, nShiftVictim<BOOL,
ForceDataSelect<BOOL
]
Expand
Cedar
[] ← RoseCreate.CreateNode[within: thisCell, name: "VictimData3", type: NumTypes.boolType];
FOR ce: CARDINAL IN [0..4) DO
IF ce#3 THEN [] ← RoseCreate.CreateNode[within: thisCell, name: IO.PutFR["VictimData%g", IO.card[ce]], type: NumTypes.boolType];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: IO.PutFR["CacheEntry%g", IO.card[ce]], className: "CacheEntry", interfaceNodes: IO.PutFR["VictimOut:VictimData%g, VictimIn:VictimData%g", IO.card[ce], IF ce=0 THEN IO.card[3] ELSE IO.card[ce-1]], initData: NEW[CacheEntry.CacheEntryInitRec ← [ce]]];
ENDLOOP;
ENDCELL