I came across several references to the concept of a dual issue processor (I hope this even makes sense in a sentence). I can't find any explanation of what exactly dual issue is. Google gives me links to micro-controller specification, but the concept isn't explained anywhere. Here's an example of such reference. Am I looking in the wrong place? A brief paragraph on what it is would be very helpful.
Dual issue means that each clock cycle the processor can move two instructions from one stage of the pipeline to the next stage. Where this happens depends on the processor and the company's terminology: it can mean that two instructions are moved from a decode queue to a reordering queue (Intel calls this issue) or it could mean moving instructions (or micro-operations or something) from a reordering queue to an execution port (afaik IBM calls this issue, while Intel calls it dispatch)
But really broadly speaking it should usually mean you can sustain executing two instructions per cycle.
Since you tagged this ARM, I think they're using Intel's terminology. Cortex-A8 and Cortex-A9 can, each cycle, fetch two instructions (more in Thumb-2), decode two instructions, and "issue" two instructions. On Cortex-A8 there's no out of order execution, although I can't remember if there's still a decode queue that you issue to - if not you'd go straight from decoding instructions to inserting them into two execution pipelines. On Cortex-A9 there's an issue queue, so the decoded instructions are issued there - then the instructions are dispatched at up to 4 per cycle to the execution pipelines.
In simple terms dual issue means that the peak instruction execution rate of a CPU core is of two instructions per clock cycle.
This can be achieved with some sort of hardware instruction level parallelism (as explained with some nice examples in the other answer). Superscalar architectures are the typical way to achieve instruction level parallelism with duplication of execution units.
add x0, x1, x1
in the same cycle as add x2, x2, x1
so it needs two integer execution units (ALUs). –
Amaryl © 2022 - 2024 — McMap. All rights reserved.