What is meant by "requires additional independent work in a program (more independent work that ALUs!)"?
@sstritte I think it means that you need more independent work (for example loops) to fully utilize all the ALUs.
@sstritte. Consider a CPU with four cores and no multi-threading. Well typically if you created four threads, you'd "fill the machine".
Now consider a CPU with four cores and two threads per core. Well, this new CPU offers the potential for hiding some hiding for your application via heard-ware multi-threading, but in order to take advantage of this capability, you'd want to fill the machine with eight threads instead of just four. So your application needs to have more parallelism in it.
In other words, you better have many independent things to juggle (a property of the application), if you want to implement the ability to juggle many things at once.