Worked examples — CISC vs RISC philosophies
This page is the hands-on companion to CISC vs RISC philosophies. There we built the philosophy; here we compute it. Every example nails one cell of the matrix below, so that by the end there is no CISC-vs-RISC arithmetic question an exam can throw that you have not already seen worked.
Before we touch a single number, let us re-anchor the one tool everything rests on.
We will lean on this constantly, so let's picture it once.

Read the figure as a volume: is the depth, the width, the height, and CPU time is the box they enclose. Grow one edge and shrink two, and the box can still shrink — that is why RISC can afford to grow if it shrinks CPI and harder. The number under each box is its volume = the CPU time.
The scenario matrix
Every CISC-vs-RISC computation you will ever be asked lives in one of these cells. Each row is a case class; the last column names the example that covers it.
| # | Case class | What makes it tricky | Covered by |
|---|---|---|---|
| A | RISC wins (the "normal" bet pays off) | more , but CPI + dominate | Example 1 |
| B | CISC wins (the bet fails) | when RISC's blow-up is too big | Example 2 |
| C | Exact tie | boundary — neither is faster | Example 3 |
| D | Mixed units ( vs frequency ) | you're given GHz, not ns | Example 4 |
| E | Degenerate: everywhere | limiting "ideal RISC" | Example 5 |
| F | Zero / pathological input | , or a stall makes CPI blow up | Example 6 |
| G | Real-world word problem | translate English → the equation | Example 7 |
| H | Exam twist: solve for the unknown | given the answer, find a factor | Example 8 |
| I | Instruction-count from code (μop expansion) | count RISC lines vs one CISC line | Example 9 |
Example 1 — Cell A: the RISC bet pays off
Step 1 — Compute CISC time. Why this step? We just apply the one equation — no shortcuts. We convert to milliseconds at the end so the two numbers are comparable at a glance (, so we move the decimal 6 places).
Step 2 — Compute RISC time. Why this step? Same equation, RISC's numbers. Notice the bigger first factor but smaller other two. Again via the same conversion.
Step 3 — Take the ratio (slower on top). Why this step? "By what factor" is answered by a ratio, not a difference — it tells us how many times faster, independent of units. We put CISC (the slower, bigger time) on top so the answer reads "RISC is 3.03× faster."
Recall Verify
Units: ✓. RISC is faster despite 50% more instructions — the extra was crushed by the CPI drop and cycle-time drop. This is the whole RISC argument in one ratio.
Example 2 — Cell B: the bet fails, CISC wins
Step 1 — CISC time. Why this step? Same equation. CISC's high CPI is its weakness — but watch its tiny . Convert: .
Step 2 — RISC time. Why this step? RISC's exploded 12× because one CISC string instruction needed a whole software loop. That is more than its CPI/ advantage can repay. Convert: .
Step 3 — Ratio (slower on top). Why this step? Here RISC is the slower one, so RISC's time goes on top; the result reads "RISC is 1.8× slower than CISC." Always place the bigger time on top so the factor is .
Recall Verify
RISC is 1.8× slower here. The lesson: RISC's bet is a bet, not a law. When a workload maps onto exactly the specialised instruction CISC provides (string moves, REP MOVSB on x86), the blow-up can overwhelm everything. This is why modern RISC ISAs added richer extensions — see x86 vs ARM.
Example 3 — Cell C: the exact tie
Step 1 — CISC time. Why this step? We start with CISC because we always compute both raw times first, then compare. Convert to ms with the rule so the two are read on the same scale: .
Step 2 — RISC time. Why this step? Same equation for RISC. The products land on the same number — both give after the identical conversion, which is the whole point of this boundary case.
Step 3 — Ratio (either on top). Why this step? When neither is slower, the ratio is exactly whichever time we put on top — the unambiguous fingerprint of a tie.
Recall Verify
Ratio → dead tie. This is the boundary case: RISC's on exactly cancels its on CPI (). Boundary cases like this prove the equation is a genuine trade-off surface, not a one-sided win.
Example 4 — Cell D: given frequency, not cycle time
Step 1 — Convert frequency to cycle time. The clock frequency counts ticks per second; the cycle time is just its reciprocal, because "seconds per tick" is the flip of "ticks per second": Why this step? The equation needs seconds per cycle; the problem handed us cycles per second. We must flip it first or every unit downstream is wrong. This is the single most common exam trap.
Step 2 — CISC time. Why this step? Now that is in nanoseconds, we can multiply the three factors as usual. Convert the result with the rule: .
Step 3 — RISC time. Why this step? Same equation with RISC's converted . We keep the same units (ns) for both machines so the comparison is apples-to-apples; then convert: .
Step 4 — Ratio (slower on top). Why this step? CISC is the slower machine here, so its time goes on top; reads directly as "RISC is 3.72× faster." A ratio also cancels the shared ms unit, leaving a pure number.
Recall Verify
, so ✓ — the reciprocal genuinely produces a time. RISC faster. If you had forgotten to flip GHz and plugged and directly as if they were times, every answer would be off by a factor of — the units are your alarm bell.
Example 5 — Cell E: the ideal-RISC limit,
Step 1 — Cycle time. Why this step? Frequency → time, same reciprocal as before, because the equation demands seconds per cycle.
Step 2 — Total time at the CPI floor. Why this step? With , the middle factor multiplies by 1 and effectively disappears — time collapses to , i.e. exactly one tick per instruction. We compute it explicitly to see that collapse, then convert . This is the limiting best case a single-issue pipeline can reach; you cannot go below CPI without issuing more than one instruction per cycle (superscalar, out of scope here). See Pipelining.
Recall Verify
✓ — identical, confirming CPI makes the equation collapse to "one cycle each." The degenerate case behaves exactly as the picture predicts.
Example 6 — Cell F: pathological inputs (zero, and a stall blow-up)
Step 1 — (a) The zero case. Why this step? kills the whole product regardless of the other factors — no instructions, no time. It's the trivial floor, and it confirms is a genuine multiplicative factor (a sum-based formula would misbehave here).
Step 2 — (b) Build the effective CPI from a weighted average. Non-load instructions cost 1 cycle; loads cost cycles. Half and half: Why this step? CPI is an average over the instruction mix, so when instruction classes cost different amounts we must weight each class by how often it occurs — here 50% cheap ( cycle) and 50% expensive ( cycles). A plain average of the two costs only works because the split happens to be 50/50; in general you weight by each class's frequency. This is the honest real CPI, not the ideal.
Step 3 — Total time with the blown-up CPI. Why this step? We feed the effective CPI (not the fantasy CPI of 1) into the master equation, because that is the CPI the hardware actually experiences. Convert with the rule: .
Recall Verify
(a) ms ✓. (b) A CPI of is worse than most CISC — proof that RISC's low-CPI promise is conditional on the memory system keeping up. When it doesn't, RISC's "1 cycle each" fantasy collapses. This is exactly why real chips spend transistors on caches, not just on the ISA.
Example 7 — Cell G: real-world word problem
Step 1 — Recover CISC's instruction count from its known time. From , solve for : . Why this step? We aren't told directly, but the word problem gives us the time, so we invert the equation to extract the hidden instruction count. This is the bridge from English to arithmetic.
Step 2 — Scale to RISC's instruction count. Why this step? "1.3× as many instructions" is a direct multiplier on — the compiler's expansion factor. We must convert the CISC instruction count into the RISC one before computing RISC's time, because the two machines run different amounts of work. See Compiler Optimization.
Step 3 — RISC cycle time and total time. Why this step? We flip RISC's frequency to a cycle time (same reciprocal rule as Example 4), then apply the master equation with RISC's own , CPI and . We keep everything in seconds here because the laptop's baseline is already in seconds — matching units means no conversion at the end.
Recall Verify
vs → the phone finishes in under half the laptop's time. Sanity: the CPI dropped (), which alone would beat the instruction growth and the slower clock. Gut confirmed.
Example 8 — Cell H: exam twist, solve for the unknown
Step 1 — Invert the equation for CPI. Why this step? The unknown is now CPI, and we're given the target time — so we rearrange the master equation to isolate CPI rather than multiplying forward. Same equation, different unknown solved for.
Step 2 — Plug in. Why this step? The denominator is "time if CPI were 1." Dividing the target by it gives, in one shot, how much CPI headroom we have. Note the seconds cancel top-and-bottom, correctly leaving CPI dimensionless.
Recall Verify
is a huge budget — the RISC chip could stall an average of 4 cycles per instruction and still tie. So this RISC design has enormous slack; with realistic CPI it would demolish the CISC baseline. Reverse-check: ✓.
Example 9 — Cell I: counting instructions from actual code (μop expansion)
Step 1 — Count instructions.
CISC: one ADD [A],[B] per task → .
RISC: LOAD, LOAD, ADD, STORE = 4 per task → .
Why this step? is a literal count of executed instructions, so we must first read the code and count. RISC's load/store rule forbids memory operands in ADD, so it must spend 4 lines where CISC spends 1 — see Addressing Modes.
Step 2 — CISC time. Why this step? Master equation on CISC. Its one instruction is expensive (8 cycles) because internally its microcode hides two loads and a store. Convert: .
Step 3 — RISC time. Why this step? Master equation on RISC, using the counted . Each of its four instructions is cheap (1 cycle, short ). Convert: .
Step 4 — Ratio (slower on top). Why this step? CISC is slower, so its time goes on top; reads "RISC is 3.33× faster." The shared ms unit cancels, leaving a clean factor.

The bars show it visually: RISC's tower is 4 bricks tall (more instructions) but each brick is short and fast, while CISC is one brick, 8× as costly per cycle. The short-brick tower still ends up shorter.
Recall Verify
RISC faster even at 4× the instruction count, because the CISC ADD — hiding two memory loads and a store inside microcode — cost 8 cycles. This is Example 1's story told at the level of actual assembly, closing cell I of the matrix.
Wrapping up the matrix
Every cell A–I now has a worked example: RISC wins (1), CISC wins (2), a tie (3), unit-flipping from frequency (4), the CPI limit (5), zero and stall-blown inputs (6), a word problem (7), solving-for-the-unknown (8), and counting instructions from real μop expansion (9). The single thread through all of them: never judge by one factor — always form the product, watch the units, and compare with a ratio.
Recall Self-test
Given only , , , find CPI. ::: (Example 8). A chip at GHz — what is ? ::: ns (Example 4). Half the instructions stall 100 cycles, rest cost 1 — effective CPI? ::: (Example 6).