Issue Queues vs Reservation Stations: How Hardware Chose Between Two Ways to Wake Up Ready Instructions

2026-09-04

Every out-of-order CPU needs a place to park decoded instructions until their operands are ready. Two architectural choices dominate: reservation stations (Tomasulo-style) and issue queues (modern designs like Intel Skylake and ARM Neoverse). Both solve the same problem — pick ready instructions and fire them — but they store operands differently, and that difference cascades into gate count, power, and clock frequency.

Reservation stations hold the actual operand values. When a producer broadcasts its result on the common data bus, every waiting RS entry compares the result tag against its source tags and, on a match, latches the value into the entry itself. When both operands are present, the entry becomes ready. The value lives in the RS until issue.

Issue queues hold only tags — pointers into a separate physical register file (PRF). Entries track "am I waiting on physical register p42?" with a ready bit per source. When p42 completes, a wake-up bus asserts, matching entries flip their ready bit, and the select logic picks a winner. On issue, the queue reads operands from the PRF then, not before. The value never lives in the queue.

The tradeoff is brutal. Reservation stations need wide storage per entry — two 64-bit operand slots plus tags — so a 60-entry RS burns real silicon and burns power on every CDB broadcast (every entry does a full comparator + latch). Issue queues cut per-entry width to a handful of tag bits and ready bits, so you can build a 97-entry queue (Skylake) in the area of a 40-entry RS. The cost: an extra pipeline stage to read the PRF between select and execute, and a much larger PRF read port count.

Real example: The original Pentium Pro (1995) used reservation stations with 20 entries. Modern Intel Golden Cove uses a unified scheduler of ~97 issue queue entries feeding a PRF with 280+ integer physical registers. The industry moved to issue queues once out-of-order windows grew past ~40 entries because RS area scales as (entries × operand_width) while issue queue area scales as (entries × log(PRF_size)).

Rule of thumb: Wake-up power in a modern scheduler is roughly N × M × C, where N is queue entries, M is wake-up buses (one per issue port), and C is a comparator's switching energy (~5 fJ in 7nm). A 100-entry, 8-wide scheduler dissipates ~4 pJ per cycle just on tag matching — about 5% of total core power at 4 GHz.

See it in action: Check out CompTIA A+ Core 1 (220-1201) Full Certification Course by PowerCert Animated Videos to see this theory applied.
Key Takeaway: Reservation stations store operand values in-place for fast issue but don't scale; modern schedulers store only tags in the issue queue and pay one extra cycle to read the physical register file, trading latency for the entries needed to keep a wide back-end fed.

All newsletters