SmallCacheProblemLog.tioga
Written by: Pradeep Sindhu, August 28, 1987 4:04:06 pm PDT
Last Edited by:
Pradeep Sindhu, May 16, 1988 3:44:30 am PDT
DRAGON SMALL CACHE PROBLEM LOG
DRAGON SMALL CACHE PROBLEM LOG
DRAGON SMALL CACHE PROBLEM LOG
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
Dragon Small Cache
Problem Log
Release as [Indigo]<Dragon>SmallCache>Documentation>SmallCacheProblemLog.tioga, .press
© Copyright 1985 Xerox Corporation. All rights reserved.
Abstract: This document contains a log of problems discovered while debugging the design of the small cache.
XEROX Xerox Corporation
Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, California 94304
For Internal Xerox Use Only
Note: Strike font indicates problems that have been resolved.
Bugs To Fix (From SCActionItems.tioga)
1. Check that AVM, ASh, and ARM are latched in such a way that they are valid for two cycles. This is to make it impossible for latches in PInterfaceCtl driven by PCycle1, PCycle2, etc. to glitch because of AVM and ASh.
2. Provide a way to load the FIFO header from the input to the RBuf.
3. Provide a way to cancel an FBRqst in the FIFO when the Snooper says so.
4. In PInterfaceCtl LdPAdrs is not generated correctly in case of a fault. The problem is that a command in the following PhA will see a reject.
5. The cache needs to distinguish between BIO and IO. One way to do this is to not put the Id part of an IO address in the array but put it outside. Lets call this the IOITdMatcher. The signal that it produces is IOITdMatch.
6. Take care of Set and Clr owner from bus side.
7. Make BCtlSelWSData depend on CWSEq with a hardwire mux.
8. Optimize the bus side microprogram (factor common terms).
9. Make sure that in the SharedOwner interface layout, the pullup transistor is able to overcome the weak transistor in the latch.
10. Prepare streamlined victim cell for Lochner.
11. Think some more about SharedOwnerCell to see if it can be made smaller.
Stuff to Add (From SCActionItems.tioga)
1. Add the pristine bit, which indicates that there has been no write into the cache from the processor side. The advantage of having this bit is that the IFU will never contend for its RAM with RBRqst's coming over the bus. Since RB's are the most frequent transactions, we've essentially eliminated RAM contention for the IFU cache
Problem
1 (April '87)
Resolve status of strange IO line in IO array. This line was supposed to be used to reply fault in case the cache received a bad transaction.
Status:
Unresolved
There needs to be circuitry to check if there is a protection violation on IO, and if there is, to make the funny line match. The ram contents of this line are supposed to be the second word of the IORply that should be generated to indicate a fault.
Fix:
Problem
2 (April '87)
Need to complete the design of the statistics counters.
Status: Resolved
Fix:
Counters will not be put into the first version of the cache, sorry.
Problem
3 (June '87)
Snooper not loaded for RBRqst when AOw=0.
Status: Done
Fix:
Snooper is now loaded on MyRBRqst rather than on MyFBRqst which was causing the above problem.
Problem
4 (July '87)
The simple circuit to set and clear InterruptStatus bits in the IORam didn't work because whether the bit got set or not depended on the bit line, and the bit lines went to their non-precharged state only after the select line went high; by that time the damage had been done.
Status: Resolved
Fix:
Implemented a master/slave solution to setting and clearing. The old value is saved in a master latch while RamSelect is low, and the new value is put into the slave while RamSelect is high.
Problem
5 (July '87)
It takes almost one cycle to compute match. This means that ARM/AVM are probably indeterminate when the clock edge comes, raising the possibilty of instability in the receiving flop.
Status: Resolved
Fix:
Changed inverter in RCamInterface and FlagsInterface to a NOR to force ARM low during match cycles.
Problem
6 (August 10 '87)
Looks as though BCtlClrOw and BCtlSetOw are not generated anywhere. Should go into BCtl.
Status: Done
Problem
7 (August 11 '87)
The decoding of PCmdWtBit and PMode was not being done correctly. Furthermore, the flags were not getting written properly because only one of the write drivers was enabled (due to the requirements of partial match).
Status: Resolved
Fix:
Moved most of the control out of the interface into a separate FlagsInterfaceCtl. Created a special gate to allow all three to get written and only one of them to be matched.
Problem
8 (August 17 '87)
Select lines in IOHole were left floating. Also, Victim was left floating.
Status: Resolved
Fix:
Connected them to Gnd/Vdd as appropriate.
Problem
9 (August 17 '87)
Select lines in IOHole were left floating. Also, Victim was left floating.
Status: Resolved
Fix:
Connected them to Gnd/Vdd as appropriate.
Problem
10 (August 17 '87)
The signals LVM, LRM, and Victim were connected to two muxes, the RSMux, and the CSMux. These muxes were constructed using pass gates, which made them conduct signals both ways. Furthermore, since the gates needed Cmd and nDCmd to operate, and there was a delay in generating nDCmd, it was possible for more than one pass gate in a given mux to be on temporarily. This meant that this mux would put an X on one or more of the lines LVM, LRM, Victim, and on the output of the mux. Furthermore, since we wanted the operation of the two muxes to be completely independent (one for the bus, and the other for the processor), we could not impose a condition that imposed some timing relation between the use of the two muxes.
Status: Resolved
Fix:
Put inverters before the pass gates in both muxes to prevent backward propagation. This caused us to flip the sense of the incoming signals to nLVM, nLRM, nVictim. As a result, the following cells needed to change in addition to the two muxes: AMCell, Victim.
Problem
11 (August 17 '87)
The EnRS signal is to far back in the chain from LVM to RamSelect; this leaves a smaller time for the Ram to read or write, and it forces us to make the last gate be a nand which would be too large.
Status: Resolved
Fix:
Moved EnRS from RSMux to SharedOwner.
Problem
12 (August 23 '87)
The transistor strength of the pullup in the SharedOwnerInterface was weak, which was fighting with the weak inverter in the latch. The fighting took place only when the pass gate was on.
Status: Resolved
Fix:
Changed pullup to medium-weak.
Problem
13 (August 23 '87)
This problem was Rosemary related, but we need to make sure that the timing in the real circuit is such that the problem doesn't happen. The timing of PWtInProgB is the same as EnRS. Suppose that EnRS comes slightly earlier than PWtInProgB when writing to a shared line. What could happen is that the line will get written into even though we don't want this to happen.
Status: Unresolved
Fix:
In the simulations, we've simply made PWtInProgB span EnRS.
Problem
14 (August 23 '87)
This problem was also Rosemary related, but we need to make sure that the timing in the real circuit is such that the problem doesn't happen. When EnRS goes down, the latch in the RSMuxInterface changes, thereby changing RSCmd. At the same time, the