THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.

A new Flyspray task has been opened.  Details are below.

User who did this: - Steve Reinhardt (stever)

Attached to Project - M5 Bugs
Summary - Dynamic thread creation in O3 is broken
Task Type - Bug
Category - CPU
Status - New
Assigned To - Korey Sewell
Operating System - All
Severity - Medium
Priority - Normal
Reported Version - 2.0beta5
Due in Version - 
Due Date - Undecided
Details - Although there's code to allow new threads to be created on
the fly in O3, there are multiple bugs that prevent it from working.

The basic idea is that O3ThreadContext<Impl>::activate() in
src/cpu/o3/thread_context_impl.hh checks to make sure there are enough
resources to activate an additional thread if the thread's status is
Unallocated.  (Threads that are in the Suspended state are assumed to
already be holding the needed resources and just need to be woken up.)
 This check is done by calling FullO3CPU<Impl>::activateWhenReady() in
src/cpu/o3/cpu.cc, which returns a bool indicating whether the
resources are available.  However this test is broken in at least two
ways:

1. All the comparisons in this function are backwards ('>=' should be
'<' in each if)
2. LSQ<Impl>::numFreeEntries() is broken in that it calculates the
total free entries by summing up the free entries for each active
thread, which means that if there are no active threads it returns
0... so if there are no active threads, you cannot activate the first
thread since there never appear to be any free LSQ entries for it.

I think this second bug is symptomatic of some deeper thinking that
needs to take place... for example, most of the SMT resources have
multiple allocation policies (Dynamic, Partitioned, and Threshold),
and whether or not there are enough resources available for a new
thread would seem to depend on the policy, but the activateWhenReady()
and numFreeEntries() functions are independent of that policy setting.


More information can be found at the following URL:
http://www.m5sim.org/flyspray/task/317

You are receiving this message because you have requested it from the
Flyspray bugtracking system.  You can be removed from future
notifications by visiting the URL shown above.

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to