| |||
| Home > Instruction Cycle Timing > Dual-instruction issue restrictions | |||
Calculating likely instruction pairings is part of the hand calculation process required to determine the timing for a sequence of instructions. The processor issues a pair of instructions unless it encounters an issue restriction. Table 16.12 shows the most common issue restriction cases. This table contains references to pipeline 0 and pipeline 1. The first instruction always issues in pipeline 0 and the second instruction, if present, issues in pipeline 1. If only one instruction issues, it always issues in pipeline 0.
Table 16.12. Dual-issue restrictions
Restriction type | Description | Example | Cycle | Restriction |
|---|---|---|---|---|
Load/store resource hazard | There is only one LS pipeline. Only one LS instruction can be issued per cycle. It can be in pipeline 0 or pipeline 1 |
| 1 2 2 | Wait for LS unit Dual issue possible |
Multiply resource hazard | There is only one multiply pipeline, and it is only available in pipeline 0. |
| 1 2 3 | Wait for pipeline 0 Wait for multiply unit |
Branch resource hazard | There can be only one branch per cycle. It can be in pipeline 0 or pipeline 1. A branch is any instruction that changes the PC. |
| 1 2 2 | Wait for branch Dual issue possible |
Data output hazard | Instructions with the same destination cannot be issued in the same cycle. This can happen with conditional code. |
| 1 2 2 | Wait because of output dependency Dual issue possible |
Data source hazard | Instructions cannot be issued if their data is not available. See the scheduling tables for source requirements and stages results. |
| 1 2 4 | Wait for r1 Wait two cycles for r4 |
Multi-cycle instruction | Multi-cycle instructions must issue in pipeline 0 and can only dual issue in their last iteration. |
| 1 2 3 4 4 | Wait for pipeline 0, transfer r4 Transfer r5, r6 Transfer r7 Dual issue possible on last transfer |