Hi,

I have a question on free entry reservation in coherent cache module.
Following the code, it seems to reserve some entries for
eviction/writeback, which needs additional pending queue entries in the
middle of request processing.

bool is_full(bool fromInterconnect = false) const {
    if(fromInterconnect) {
        // We keep some free entries for interconnect
        // so if the queue is 100% full then only
        // return false else return true
        return (pendingRequests_.count() >= (
                    pendingRequests_.size() - 6));
    }
    // Otherwise we keep 10 entries free for interconnect
    // or some internal requests (for example, memory update
    // requests are created internally)
    if(pendingRequests_.count() >= (
                pendingRequests_.size() - 20)) {
        return true;
    }
    return false;
}

In my understanding of coherent cache design, if I allows many simultaneous
memory accesses (e.g. 1000s read/write ports), the queue might run out. I
haven't encountered such event, but I am just curious about the rationale
of the number reserved entries.How do you determine the number of free
entries (6 and 20 in the above code)? Is it safe value for various
configurations such as many cores above 100s? Is it empirical or is there
any theory it is based on?

Thanks,
Hanhwi
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel

Reply via email to