Yes, it looks like the condition guarding the update to
num_threads_fetched is too strict:
if(num_fetched[proc] != 0 && m_fetch_status[proc] !=
PSEQ_FETCH_ITLBMISS){
should probably be:
if(num_fetched[proc] != 0){
I'll make a note of this bug for a future update.
Luke
On Wed, 10 Sep 2008, Daniel Sánchez Pedreño wrote:
Dear list, as I've seen in config/config.defaults,
CONFIG_FETCH_THREADS_PER_CYCLE "*specifies how many threads to fetch from
in each cycle*". However, I've seen that instructions from different threads
can be fetched in the same cycle. This situation happens when a thread
fetches some instructions normally but the final one is not because of a
cache or itlb miss. The problem is that altough this thread has fetched
normally several instructions *num_thread_fetched* is not incremented so
another thread is able to fetch.
I think this behaviour is not correct if we have set
CONFIG_FETCH_THREADS_PER_CYCLE to 1, but I would like a confirmation.
|