Skip to content

Where and how to guarantee that the mshr has entry for the miss req when allocate a entry? #235

Closed Answered by gxflying
gxflying asked this question in Q&A
Discussion options

You must be logged in to vote

yeah I have get the point
every time BaseCache::allocateMissBuffer() is called, in the function will check the mshrQueue and set blocked flage if the queue is full.

        if (mshrQueue.isFull()) {
            setBlocked((BlockedCause)MSHRQueue_MSHRs);
        }

and every time the cache receive a request, the function BaseCache::CpuSidePort::recvTimingReq is called, and in the function where before BaseCache::recvTimingReq is called, tryTiming is called to check the blocked flag, if it set true, the BaseCache::recvTimingReq will not be called in which mshr entry may be allocated

} else if (tryTiming(pkt)) {

    } else if …

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by BobbyRBruce
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
classic caches Classic Caches and Coherence
1 participant
Converted from issue

This discussion was converted from issue #234 on August 29, 2023 06:38.