In this case, are each of the execution contexts shared?
This slide again gives an ALU-centric visualization of the execution (similar to the previous slide). Additionally, this slide also illustrates that two instructions from the same thread that exhibit ILP can be executed in two different ALUs simultaneously.
This shows that the execution of each thread is not restricted to one particular ALU.
@paracon, I don't think the execution contexts would be treated any differently here than in the last slide or elsewhere. If I understand this correctly, the cases highlighted in red would just mean only one execution context is active at that time instead of two.
@ask and @ctabrizi are correct. This is just a different visualization of a program with four threads running on the same machine as shown in slide 085.
It should be noted that slide 85 and this slide show the same processor, but different program executions on the processor. (Which of the four threads are running at each point in time is different --- in hindsight it might have been clearer to illustrate the same execution sequence in both slides.)
I am somewhat confused here. How can multiple instructions from same thread can execute at same time on different execution units? I was under the impression that instructions in a thread can map to only one execution unit at any given point of time.
In the case of multiple instructions from same thread mapping to different execution units, who takes the responsibility of distributing work between execution units? Is it the compiler?