I have read some threads and the wiki articles, but still don't seem to understand what exactly the difference is between having multiple parallel pipelines and the superscalar architecture. I know that (in case of dynamical superscalarity) out-of-order-execution is used to fill the pipeline optimally and avoid hazards. But what keeps you from using such a dispatcher in combination with multiple independent (except for the instruction fetcher and dispatcher) pipelines? What is the difference then?
You may have several pipelines (say one for integer, one for floating point) but if you never issue more than one instruction per cycle, you don't have a superscalar processor.
To have a superscalar processor, it has to be able to issue several instructions in the same cycle, which implies to have several, more or less independent, execution units (which are probably pipelined).
In case of superpipelining, you will not be having multiple components (eg: multiple alu). In case of superscalar architecture, you will be having multiple resources to execute instructions in parallel