1
0
Commit Graph

24 Commits

Author SHA1 Message Date
832e56d3c7 Fix toBits/toUInt/toSInt deprecation warnings 2016-07-31 17:13:52 -07:00
f34b0b0447 make sure L2 tracker doesn't read data array again if data buffer already filled 2016-07-29 16:47:31 -07:00
fbcc7317cf make sure PseudoLRU is given power of 2 ways 2016-07-27 18:39:33 -07:00
15d1aa9346 make sure TrackerAllocationIO addr_block has correct direction set 2016-07-27 16:47:22 -07:00
82bbbf908d Fix L2 Writeback deadlock issue
The deadlock condition occurs when the acquire tracker attempts to
request a writeback while the writeback unit is still busy and a
voluntary release for the block to be written back is coming in.

The voluntary release cannot be accepted because it conflicts with the
acquire tracker. The acquire tracker can't merge the voluntary release
because it is waiting to send the writeback. The writeback can't
progress because the release it is waiting on is behind the voluntary
release.

The solution to this is to break the atomicity guarantee between the
acquire tracker and the writeback unit. This allows the voluntary
release tracker to take the voluntary release before the writeback unit
accepts the conflicting request. This causes a potential race condition
for the metadata array. The solution to this is to have the writeback
unit re-read the metadata after accepting a request.
2016-07-26 12:31:08 -07:00
9168f35971 clean up the requirements in StatelessBridge
* No need to check that release ID bits and acquire ID bits the same
 * Check that inner and outer coherence policies match
2016-07-21 19:41:56 -07:00
12067a3b8d make sure outer probe and finish lines are disconnected 2016-07-21 15:15:44 -07:00
c38dff0855 add some more warnings about the StatelessBridge 2016-07-21 15:07:10 -07:00
eb9e998c08 Add ManagerToClientStatelessBridge 2016-07-21 13:49:16 -07:00
86e31be820 fix lockup from back to back releases with data 2016-07-21 12:06:58 -07:00
9eeb1112d4 fix Bufferless irel_vs_iacq_conflict signal 2016-07-18 17:38:20 -07:00
e5cccc0526 don't update xact_vol_irel if not a voluntary irel 2016-07-18 17:05:23 -07:00
70b677ecda Vec considered harmful; use isOneOf instead (#64)
Vec is heavyweight and really should only be used for I/O and
dynamic indexing.  A recurring pattern in uncore is

    Vec(const1, const2, const3) contains x

which is nice but has a deleterious effect on simulation copilation
and execution time.  This patch proposes an alternative:

    x isOneOf (const1, const2, const3)
    x isOneOf seqOfThings

I think it's also more idiomatic.

This is just a prototype; I'm not wed to the name or implementation.
2016-07-07 19:25:57 -07:00
b10d306b4a add option to log L2 cache transactions for easier debugging 2016-07-06 14:59:09 -07:00
64afc795fd make sure voluntary releases don't get allocated to L2WritebackUnit 2016-07-06 14:10:45 -07:00
702444709a make sure pending bits updated for all releases 2016-07-05 12:08:22 -07:00
06ed9c5794 add a single-entry queue in front of acquire and release for bufferless broadcast hub 2016-07-05 12:08:22 -07:00
67bac383e3 hopefully fixed last bugs in Bufferless 2016-07-05 12:08:22 -07:00
a35388bc27 fix merging of same xact ID puts/gets 2016-07-05 12:08:22 -07:00
51f7bf1511 fix Bufferless voluntary release issue 2016-07-05 12:08:22 -07:00
85808f8cbb Clean up PseudoLRU code 2016-07-02 15:09:12 -07:00
61e3e5b45a more WIP on fixing Bufferless 2016-06-30 18:29:51 -07:00
0eedffa82f WIP: Fix BufferlessBroadcastHub 2016-06-30 18:29:51 -07:00
b936aa9826 refactor uncore files into separate packages 2016-06-28 13:10:46 -07:00