If a thread is blocked waiting for something, then at some point in the future it will be ready to continue execution. But what if some other thread is still running on that specific core? If there is some other core available and you can restart execution there with low overhead, that's a performance win.
I think that as asynchronous code becomes more and more common, this kind of capability becomes more and more beneficial.
Yes, I assume that it is better to spread the generated heat across the die. Migrating threads between clusters probably does have some cost (mostly cache misses, minimal cost to pausing and moving) but if done less than every second that is likely miniscule.
Kon-Peki|1 year ago
I think that as asynchronous code becomes more and more common, this kind of capability becomes more and more beneficial.
kevincox|1 year ago