D$: eliminate a data ECC -> dirty-bit path
The previous logic suppressed dirty-bit writes in the event of a data error. This is a good thing, because if the error had been uncorrectable, and the line had been clean, we could just discard the line and refetch it, rather than being forced to report an uncorrectable error. Unfortunately, that logic creates a critical path from the data ECC check to the tag RAM. Instead, allow the dirty-bit write to proceed, but then immediately victimize the line, so that the tag will be set to invalid. The ultimate effect is the same as before. A side effect of 46e0fcb481ef3b1fdd47bdae1b27e1b31e5e8d07 is that the cache is guaranteed to enter the victimization state machine whenever this scenario occurs (which is a requisite property to preserve the uncorrectable error behavior).
parent
e8f7734c
Please register or sign in to comment