Review Board 2.0.15


cpu: o3: Merging haltContext with suspendContext

Review Request #2846 - Created May 26, 2015 and updated

Information
Alexandru Dutu
gem5
default
Reviewers
Default
Changeset 10857:5dd0809b9662
---------------------------
cpu: o3: Merging haltContext with suspendContext
This patch improves suspendContext by flushing the pipeline, which frees
resources for other hardware threads. Secondly, it makes haltContext call
suspendContext which is not freeing architectural registers mappings on halt.
Something that haltContext previously did and was not realistic.
For example, in SMT implementations the architectural registers for a
particular hardware thread will always have mapped some physical registers and
having one thread finish execution will never create more available physical
registers for other hardware threads as there will be scheduled a different
software thread to execute on that hardware thread anyway.
As a consequence, this patch helps enabling SMT in x86 by not putting the
physical registered mapped to the ZeroRegister on the freeList for a different
thread to pick up when one of the threads has finished executing and called
exit.

Quick regressions passed.

Review request changed
Updated (May 28, 2015, 12:02 p.m.)

Change Summary:

Solved the first 2 issues Joel raised.

Description:

~  

Changeset 10858:2fb10c49dd93

  ~

Changeset 10857:5dd0809b9662

   
   

cpu: o3: Merging haltContext with suspendContext

    This patch improves suspendContext by flushing the pipeline, which frees
    resources for other hardware threads. Secondly, it makes haltContext call
    suspendContext which is not freeing architectural registers mappings on halt.
    Something that haltContext previously did and was not realistic.
    For example, in SMT implementations the architectural registers for a
    particular hardware thread will always have mapped some physical registers and
    having one thread finish execution will never create more available physical
    registers for other hardware threads as there will be scheduled a different
    software thread to execute on that hardware thread anyway.
    As a consequence, this patch helps enabling SMT in x86 by not putting the
    physical registered mapped to the ZeroRegister on the freeList for a different
    thread to pick up when one of the threads has finished executing and called
    exit.

Diff:

Revision 2 (+25 -83)

Show changes

Ship it!
Posted (May 29, 2015, 8:35 a.m.)

Looks good. Thanks for investigating where to reset the stalls!