Treating Multiple CPU Cores as One
It all works fine until the blue core needs a data value at the start of its instruction that the red core hasn't finished producing yet.

You get much the same sort of difficulty with a pipelined single core, where the data value from one instruction is required for the next. The deeper the pipeline, the more cycles are lost in the stall while the second instruction waits for the results of the first. 

A mitigation for the second problem, and it would also be applicable to the first if you ever tried to build it, is micro-threading. If the data is not available yet, work on something else for a while. 

Unfortunately, this requires multiple independent processes to be offered to the processor. This is perhaps what's behind a resurgence in the popularity of a pure functional programming style, where side-effect-free functions can be run in parallel automatically without human prodding.