Why is superscalar processor SISD? From Wiki - Superscalar processor:


  (Line 1): superscalar processor is a CPU that implements a form of parallelism called instruction-level parallelism within a single processor. In contrast to a scalar processor that can execute at most one single instruction per clock cycle, a superscalar processor can execute more than one instruction during a clock cycle *by simultaneously dispatching multiple instructions* to different execution units on the processor.





  (Line 8): In Flynn's taxonomy, a single-core superscalar processor is classified as an *SISD* processor (Single Instruction stream, Single Data stream)


I understand ILP, which means two instructions executed at the same time. My problem is that: If one doesn't fetch two instructions simultaneously, how can it dispatch multiple instructions to different execution units...? Or I misunderstand the meaning of instruction stream, which it's single stream but one can fetch two instructions at the same time, why sounds so counter-intuitive?



From Wiki - SISD:


  (Line1): In computing, SISD (single instruction stream, single data stream) is a computer architecture in which a single uni-core processor, executes *a single instruction stream*, to operate on data stored in a single memory.
There is a single instruction stream. Modern processors just manage to pick up multiple instructions from the instruction stream simultaneously. 

For something like a POWER processor, where each instruction is always four bytes in size, that is quite easy. Instructions are loaded into cache lines, and if a cache line holds 8 or 16 instructions, it is quite easy to read four instructions at the same time. 

For an x86 processor, it is more difficult because instructions have different sizes. Still, it is possible (with a lot of effort) to read several consecutive simple instructions simultaneously.