In a superscalar CPU an instruction dispatcher reads instructions from memory and decides which ones can be run in parallel, dispatching them on the multiple duplicate functional units available inside the CPU.