VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Why Mathematics? | Branch Prediction, History Tables, Misprediction Cost and Pipeline Flow

Three learners review open books together at a classroom table, with stacks of textbooks, stationery and a whiteboard in the bright room.

Mathematics matters in branch prediction because a modern processor must keep work flowing before it knows the outcome of every decision. An instruction such as “if the value is negative, jump” can redirect the next instruction address, but the comparison may finish several stages after fetching. Waiting every time would leave pipeline capacity unused. Predicting a direction and target keeps work moving; measuring mistakes reveals whether the gamble pays.

For students asking why mathematics is important in computing, branch prediction connects probability, finite-state machines, binary history, indexing and expected cost. A two-bit counter remembers a little about recent outcomes. A history table uses patterns to make conditional guesses. Accuracy alone is not enough: a rare error in a deep pipeline can cost many cycles, while a complicated predictor consumes area and energy.


A Branch Changes Control Flow

Programs normally proceed to the next sequential instruction address. A branch can choose another address.

Conditional branches

A conditional branch depends on a result such as equal, less than or loop-not-finished. It is taken when control jumps to its target and not taken when execution continues sequentially.

Unconditional and indirect transfers

Calls and unconditional jumps do not need direction prediction, but the processor may still need to predict a target early. Indirect branches choose a target held in a register or memory-derived value, so the target can vary.

Returns

Function returns are indirect transfers whose likely targets follow call nesting. A return-address stack can predict them more accurately than one generic indirect-target table when calls and returns are properly nested.


Quick Reading Routes

  • Students can begin with pipeline flow, one-bit and two-bit counters, and the CPI example.
  • Parents and teachers can use the paper simulation and learning plan to connect percentages with real computation.
  • Computing learners can focus on global history, gshare indexing, aliasing and target prediction.
  • Practitioners can review measurement, code layout, phase changes, energy and security boundaries.

Pipelines Need the Next Address Early

A simple instruction path can include fetch, decode, execute, memory access and retirement. Real processors may use more stages and execute several instructions in parallel.

The control hazard

The fetch unit needs an address every cycle. For a conditional branch, the correct next address may depend on operands or flags that are not ready yet. This uncertainty is a control hazard.

Predict and proceed

The processor predicts the branch direction and target, then fetches along that path. Later execution resolves the actual outcome.

Correct prediction

When the prediction is correct, useful instructions are already moving through the pipeline. Prediction metadata still has hardware cost, but the control-flow gap is largely hidden.

Misprediction

When the guess is wrong, younger wrong-path instructions must not change architectural results. The processor redirects fetch to the correct path and discards or squashes inappropriate speculative work. The lost time is the misprediction penalty.


A First Expected-Cost Model

Let b be conditional branches per retired instruction, m the branch misprediction rate and P the average penalty in cycles per misprediction. A simple contribution to cycles per instruction is b×m×P.

Suppose base CPI without these misses is 1.0, conditional branches are 20% of instructions, the miss rate is 5%, and the penalty is 15 cycles. The added CPI is 0.20×0.05×15 = 0.15. Estimated CPI becomes 1.15.

Convert accuracy carefully

A 95% prediction accuracy means a 5% miss rate only for the measured branch population. Do not multiply 0.95 by the penalty. Cost comes from mistakes.

The model is simplified

Some penalty overlaps with other stalls, branch types differ, and out-of-order execution changes visible cost. Use the formula as a baseline, then validate with performance counters and experiments.

Small rate, large effect

Five per cent sounds small. Yet when branches are frequent and recovery is costly, the product materially changes throughput. Multiplication makes the interaction visible.


Static Prediction Needs No Learned History

A static rule predicts from the instruction or code layout.

Always taken or always not taken

The simplest rule chooses one direction. Its accuracy equals the fraction of branches with that outcome in the workload.

Direction heuristics

Backward branches often represent loops and are frequently taken until the final iteration. Forward branches often represent conditional skips. A backward-taken, forward-not-taken heuristic can beat one universal direction on some code.

Compiler information

A compiler may arrange likely code fall-through or provide hints on architectures that support them. A profile from one workload can mislead another, so training inputs should resemble deployment.

Static rules remain useful

Dynamic predictors begin without history, and new code can experience cold misses. Static defaults supply an initial guess and a fallback when table entries are absent.


A One-Bit Predictor

A one-bit predictor stores the most recent outcome for a branch. If the bit is 1, predict taken; if 0, predict not taken. After resolution, replace the bit with the actual outcome.

A loop pattern

Imagine a loop branch with outcomes T,T,T,T,N for each five-iteration run. Starting in taken state, the first four are correct and the exit N is wrong. The bit changes to N.

When the loop is entered again, its first outcome is T but the predictor says N, causing another miss. The bit returns to T, and middle iterations are correct. The predictor tends to miss both the exit and the next entry.

Accuracy for repeated runs

For long loops, two misses per run may still be a small fraction. For a five-outcome pattern, two misses give 60% accuracy after steady repetition. The exact first run depends on initial state.

Too sensitive to one exception

One unusual outcome immediately reverses the prediction. A two-bit counter adds hysteresis so a single exception weakens confidence without instantly changing the preferred direction.


The Two-Bit Saturating Counter

A common teaching model uses four states:

  • 00: strongly not taken.
  • 01: weakly not taken.
  • 10: weakly taken.
  • 11: strongly taken.

Predict not taken in states 00 and 01, and taken in states 10 and 11. A taken result increments the counter unless it is already 11. A not-taken result decrements it unless it is already 00.

Saturation

The counter stops at the endpoints instead of wrapping. Repeated taken outcomes keep 11 at 11; they do not wrap to 00. This is why it is called saturating.

Hysteresis

From strongly taken, one not-taken outcome moves to weakly taken, so the next guess remains taken. Two consecutive not-taken outcomes are needed to cross into a not-taken prediction state.

The loop again

For T,T,T,T,N repeated, a counter in strongly taken predicts the four taken iterations and misses the exit. The exit moves it only to weakly taken. The next loop entry is correctly predicted taken and returns it to strongly taken. In steady state, there is about one miss per run rather than two.

Finite-state machine

The four states and transitions form a deterministic finite-state machine. A tiny amount of discrete mathematics produces a useful memory of tendency.


Branch Identity Indexes a Table

Keeping a counter for every possible instruction address would be expensive. Hardware uses a finite prediction table indexed by selected address bits or a hash.

Pattern history table

Each entry can hold a two-bit counter. On fetch, address-derived bits select an entry and its state supplies the direction prediction.

Aliasing

Different branch addresses can map to the same entry. Their updates interfere. If both have similar bias, interference can be harmless or occasionally beneficial. If one is usually taken and the other usually not taken, they can repeatedly spoil each other.

Capacity

A larger table reduces some collisions but consumes more area, access energy and potentially timing budget. Index choice and hashing can matter as much as raw entry count.

Partial tags

Some predictor structures attach tag bits to distinguish competing histories. Tags reduce destructive aliasing but add storage. Design is a budget allocation problem.


Local History Learns One Branch’s Pattern

A branch can depend on its own recent outcomes. A local-history predictor records the last h outcomes for that branch as an h-bit string.

History as an index

If h=3 and recent outcomes are T,N,T, encode them as 101. That pattern selects a counter predicting what tends to follow 101 for this branch.

Periodic patterns

A branch with repeating outcomes T,T,N may defeat a simple bias counter. Two bits of local history can distinguish where the branch is in its cycle, if training observes enough repetitions and the table avoids harmful aliasing.

History length

There are 2^h possible h-bit histories. Increasing h can capture longer patterns but grows the potential state space exponentially. With limited training, many entries remain cold or noisy.

Per-branch storage

A local-history table also needs an entry mapping the branch to its recent pattern. This creates two levels: branch-to-history and history-to-prediction.


Global History Learns Correlation

The outcome of one branch can predict another. A global history register shifts in recent outcomes from the instruction stream.

Correlated decisions

Suppose an earlier branch checks whether a pointer is null and a later branch tests a field only when it was non-null. The earlier outcome can correlate with the later one. Global history can capture such relationships.

Exponential patterns again

An h-bit global register has 2^h patterns. The predictor maps a pattern, often combined with branch-address bits, to a counter.

Path interference

Unrelated branches also enter the history. Context switches, library code or different paths can make the same history bits mean different things. Longer history is not automatically more accurate.

Warm-up

After startup or a phase change, counters reflect little relevant evidence. Accuracy often improves as repeated contexts train the tables.


Gshare Combines Address and Global History

Gshare computes an index by XORing selected branch-address bits with the global history register.

Why combine them

Using only global history makes every branch with the same recent history share an entry. Adding address information distinguishes branches. XOR spreads combinations across table indexes with very little hardware logic.

A tiny example

Let a four-bit address index be 1010 and global history be 0110. XOR gives 1100. That selects table entry 12.

Collisions remain

The mapping compresses more possible (address,history) pairs than the finite table has entries. Pigeonhole principle guarantees collisions. A good hash distributes them; it cannot eliminate them.

Constructive interference

If colliding contexts prefer the same direction, their training reinforces one another. Predictor evaluation should measure real workloads rather than assume every collision is harmful.


Tournament Predictors Choose Among Predictors

Some branches are best predicted by local history, others by global correlation or simple bias. A tournament predictor computes multiple predictions and trains a chooser.

The chooser is another state machine

A small saturating counter can favour local or global prediction. When the component predictors disagree, the actual outcome trains the chooser toward the one that was correct.

Agreement gives no chooser evidence

If both components predict the same direction, the outcome may train their counters but does not reveal which component was uniquely better for selection.

More components, more cost

Hybrid designs increase storage, lookup energy and update complexity. They can improve accuracy enough to justify the cost in high-performance processors, but mobile and embedded designs may choose a different balance.

Modern predictors are richer

Current commercial processors can use structures far more sophisticated than classroom two-bit or gshare models. The simple models remain valuable because they expose the mathematical trade-offs without pretending to document proprietary microarchitecture.


Predicting the Target

Direction says whether a branch is taken. Fetch also needs the destination address.

Branch target buffer

A branch target buffer caches target addresses associated with recently seen branch instructions. A hit can supply the target early.

Direction-correct, target-wrong

A processor can correctly predict that an indirect branch is taken but predict the wrong destination. Performance analysis should distinguish direction misses, target misses and frontend misses where the predictor lacks an entry.

Indirect branches

Virtual dispatch, interpreters and jump tables can produce multiple targets from one instruction. Target history and path context help predict which destination is likely.

Return-address stack limits

Deep recursion, unusual control transfers or mismatched calls and returns can overflow or confuse a finite return stack. It is a predictor, not an architectural call stack.


Speculation Must Preserve Correctness

Predicted instructions can execute before the branch is confirmed. Architectural state must look as if only the correct path executed.

Retirement in order

Out-of-order cores commonly track speculative results and retire instructions in program order. Wrong-path instructions are discarded before retirement.

Exceptions

A wrong-path instruction might encounter a fault condition. The machine must avoid exposing it as an architectural exception when that instruction should never have executed in the correct path.

Memory effects

Stores are controlled so wrong-path data does not become architectural memory state. Microarchitectural structures such as caches can still be influenced, which matters for security.

Performance and security are separate claims

A predictor can be architecturally correct and still contribute to a side channel. Security analysis asks what speculative activity leaves observable microarchitectural traces and what isolation or mitigation is required.


Accuracy Is Not the Only Metric

Overall accuracy weights every dynamic branch equally, but misses have different consequences.

MPKI

Mispredictions per thousand retired instructions, or MPKI, combines branch frequency and miss rate. If a program retires one billion instructions and has two million misses, MPKI is 2.

Lost cycles estimate

At 2 MPKI and a 15-cycle average penalty, a first estimate is 30 lost cycles per thousand instructions, or 0.03 cycles per instruction. This aligns with b×m×P when definitions match.

Tail effects

A miss on a dependency-critical path can cost more visible time than a miss overlapped with a cache stall. Report workload time and latency distributions alongside predictor counters.

Energy and area

Large prediction tables are accessed frequently. An accuracy gain may increase energy per fetch. Processor design optimises a multi-dimensional objective, not one percentage.


Worked Comparison of Two Predictors

Take the repeating outcome sequence T,T,T,N for one loop branch and assume both predictors start strongly taken.

Two-bit counter for the worked comparison

It predicts all three T outcomes correctly, misses N and moves to weakly taken. The next T is predicted correctly and restores strongly taken. In steady state it misses one of every four outcomes: 75% accuracy.

Two-bit local history

The two-bit histories in the repeating stream are TT, TT, TN and NT, with the subtle point that TT can be followed by both T and N. A two-bit history cannot uniquely identify every position in this pattern because T repeats three times. Accuracy depends on counter training and aliasing.

Three-bit local history

Three-bit histories distinguish TTT before N, TTN before T, TNT before T and NTT before T. After warm-up, separate counters can learn the next outcome for each context, approaching perfect prediction for this isolated stable pattern.

Cost of the improvement

The longer history creates eight possible contexts rather than four, and real hardware shares finite entries among many branches. A gain in one clean pattern may become a loss under aliasing or changing phases.


Program Phases Change the Distribution

A branch can behave differently during startup, steady service and shutdown.

Phase transition

A counter trained strongly taken needs two not-taken outcomes to change its predicted direction. Hysteresis prevents reaction to noise but delays adaptation to a genuine new phase.

Recency versus stability

A fast-adapting predictor follows change but is disturbed by exceptions. A stable predictor resists noise but adapts slowly. This is the same bias-variance style tension seen in many prediction problems.

Context separation

History can separate behaviours if phases create different preceding patterns. If they produce the same index, the predictor only sees conflicting outcomes and converges toward the majority.

Workload selection

Benchmark suites should include representative inputs. A branch that is 99% taken on one dataset can be 50% on another. Hardware does not predict abstract source code; it predicts dynamic executions.


Compilers and Programmers Influence Branches

Software structure shapes the branch stream.

Code layout

Placing the common path as fall-through can reduce taken-branch frontend work on some designs and improve instruction-cache layout. Profile-guided optimisation uses observed frequencies to arrange blocks.

Predication and conditional moves

A short conditional operation can sometimes be converted into data flow, executing or selecting results without a branch. This avoids mispredictions but may perform work from both paths or extend dependency chains.

Branchless is not automatically faster

Replacing a predictable branch with extra arithmetic can waste cycles and energy. It can also complicate code or create unsafe memory accesses if both paths are evaluated. Measure on the target processor and workload.

Inlining

Inlining can expose optimisation opportunities and remove call/return transfers, but increases code size and can harm instruction-cache behaviour. Performance decisions interact.

The companion article on Compiler Optimisation, Control-Flow Graphs and Data-Flow Analysis develops the software side.


Measuring on Real Hardware

Use elapsed workload time as the outcome and hardware performance counters as evidence.

Define the population

Counter names can include conditional, indirect or all retired branch instructions depending on processor and event. Read the architecture’s event documentation before computing a rate.

Warm up carefully

Separate cold-start behaviour from steady state if both matter. Repeated runs can warm caches and predictors; randomised inputs can change branch bias.

Control confounders

Frequency scaling, operating-system scheduling, cache misses and input variation affect timing. Pinning a task or repeating measurements can reduce noise, but report the environment and uncertainty.

Do not infer a predictor design from one counter

An observed miss rate does not prove which proprietary tables or algorithms a processor uses. It reports behaviour under the measured workload.

Intel’s official Software Developer Manuals and Optimization Reference Manual page links current primary documentation for Intel architectures and optimisation guidance. Consult the manual matching the actual processor; do not generalise one microarchitecture’s details to all CPUs.


Confidence, Entropy and Predictability

A branch that is taken with probability p and not taken with probability 1-p has binary entropy H=-p log2 p -(1-p) log2(1-p), under a simple independent model. Entropy is low near p=0 or p=1 and maximal at p=0.5.

Bias is easy information

If a branch is taken 99 times out of 100 independently, an always-taken predictor already reaches 99% accuracy. A saturating counter mainly needs to resist the rare exception.

Balanced does not mean unpredictable

An alternating branch has 50% taken frequency and therefore high uncertainty if outcomes are treated as independent. Yet one bit of recent history predicts the next outcome perfectly after warm-up. Conditional structure matters more than marginal percentage alone.

History reduces conditional uncertainty

The useful question is not only “How often is this branch taken?” but “How uncertain is the next outcome after the available context?” A local or global history predictor tries to partition executions into contexts with stronger bias.

Noise limits prediction

If the outcome depends on truly unavailable input or a high-entropy data bit with no accessible correlation, more history may not help. Extra table entries then spend energy learning noise.

Confidence is not probability calibration

A two-bit counter’s strong state signals persistence, but it is not automatically a calibrated 99% probability. Hardware states are control mechanisms. Treating them as precise probabilities would require separate validation.


Table Budgets and Index Arithmetic

Suppose a pattern table has 4,096 entries with two bits per counter. The raw counter array uses 8,192 bits, or 1,024 bytes, before tags, parity, access circuitry and other structures.

History storage

If 1,024 local-history entries each retain 10 bits, raw history is 10,240 bits, or 1,280 bytes. A second-level table indexed by ten history bits has 1,024 possible patterns; sharing it saves space but introduces aliasing.

Index bits

A table with 4,096 entries needs 12 index bits because 2^12=4,096. Address alignment means the lowest instruction-address bits may be constant and are usually not informative indexes.

Tags consume budget

Adding an eight-bit tag and one valid bit to every 4,096-entry target record costs 36,864 extra bits before storing any target addresses. Real structures include replacement and prediction metadata as well.

Storage is not the only limit

The fetch stage needs a prediction quickly. A table that is accurate but too slow to access cannot steer the next cycle. Predictors can be banked, pipelined or overridden by later components, creating latency-versus-accuracy layers.


Updates Need the Correct Context

Prediction happens at fetch, but resolution happens later. Many other branches may have been fetched in between.

Save the prediction record

The machine tracks which table entry, history and component choice produced each in-flight prediction. Updating from the current history at resolution could train a different context.

Speculative history

To predict several branches before older ones resolve, a processor may shift predicted outcomes into history speculatively. On a misprediction, it restores or repairs the history before continuing down the correct path.

Update timing

Training at resolution adapts earlier but must handle wrong-path state carefully. Training at retirement uses confirmed instructions but is later. Exact policies are microarchitecture-specific.

Wrong-path learning

Allowing wrong-path branches to train some structures can introduce noise and security concerns. Preventing every speculative effect may add complexity. Architecture documentation and empirical evaluation define the actual boundary.


A Small Alias Experiment

Use a table of four two-bit counters indexed by branch ID modulo 4. Let branch A have ID 1 and be usually taken. Let branch B have ID 5 and be usually not taken. Both map to entry 1.

Interleave the branches

Run A then B repeatedly. A increments the shared counter; B decrements it. The state can hover near the weak boundary, and both predictions suffer despite each branch being individually simple.

Change one ID

Move B to ID 6 so it maps to entry 2. Each branch now trains its own counter and approaches its bias. The accuracy gain came from reduced aliasing, not a new prediction algorithm.

Make interference constructive

Change B to usually taken and return it to entry 1. Both branches reinforce the same direction. Sharing is no longer destructive. This explains why table size alone cannot predict accuracy without the workload’s mapping and biases.


CPU Scheduling and Branch Prediction Interact

A program shares processors with the operating system and other tasks.

Context switches

Predictor state may be shared, preserved, tagged or affected in implementation-specific ways. A context switch can disturb warm history or create cross-context interference.

Migration

Moving a thread to another core can encounter a different predictor state and cache state. A timing change after migration does not identify one cause automatically.

Throughput versus latency

A server may have low branch misses but wait in a run queue. Conversely, a compute kernel with high misses may dominate its own CPU time. The article on CPU Scheduling, Clock Cycles, Run Queues and Response Time separates these layers.


Common Misconceptions

“The processor sees the future”

It uses patterns from past execution and program structure to guess. Resolution later checks the guess.

“Ninety-nine per cent accuracy means one per cent slowdown”

Slowdown depends on branch frequency, penalty, overlap and baseline CPI. The product can be smaller or much larger than one per cent.

“Two-bit means two previous branches”

A two-bit saturating counter has four confidence states. It is different from a two-bit history register storing two outcomes.

“A bigger table cannot hurt”

It may reduce aliasing but add energy, latency and area. If lookup cannot meet the fetch-stage timing budget, complexity has a direct cost.

“Branchless code is always faster”

Removing a branch can add instructions, memory traffic or dependencies. Predictable branches are often cheap. Benchmark the full workload.

“Speculation changes the correct answer”

Architectural mechanisms discard wrong-path results so correct program semantics remain. Security side effects are a separate concern and must not be dismissed.


A Paper Predictor Simulation

Choose an outcome string such as T,T,T,T,N repeated four times.

One-bit table

Start with T. For each outcome, write the prediction, mark correct or wrong, then replace the bit with the outcome. Count misses.

Simulate the two-bit counter

Start at 11. Follow saturating transitions and count misses. Compare entry and exit behaviour with the one-bit predictor.

Change the pattern

Try alternating T,N or a biased random sequence. A two-bit counter is excellent for stable bias but not designed to predict strict alternation from one counter alone.

Add cost

Assume each miss costs 12 cycles. Multiply misses by 12 and compare total penalty. Then vary branch frequency to connect a local predictor experiment with program-level CPI.


A Practical Learning Plan

Stage one: percentages and expected value

Convert accuracy to miss rate. Multiply branch frequency, miss rate and penalty with explicit units.

Stage two: state machines

Draw the four saturating-counter states and transitions. Test long runs, alternating outcomes and isolated exceptions.

Stage three: binary history

Encode T and N as 1 and 0. Shift a history register and use it as an array index. Count how the number of possible patterns grows as 2^h.

Stage four: simulate aliasing

Map several branch IDs into a small table. Compare branches with matching and opposing biases. Increase table size and observe collision changes.

Stage five: measure code

Use a stable benchmark and the documented counters for the processor. Change one code layout or data distribution, repeat runs and report both time and miss evidence.


Guidance for Parents and Teachers

Branch prediction makes percentages and binary state tangible without requiring expensive hardware projects.

Ask for a trace

Have learners show every counter state, prediction and actual outcome. A final accuracy number without a trace can hide a transition error.

Compare models fairly

Use the same initial state and outcome sequence. Separate warm-up results from steady state. Fair comparison is a transferable statistical habit.

Celebrate a wrong prediction

A miss is evidence, not failure of learning. Ask which pattern the predictor lacked and whether more history would justify its hardware cost.

Keep careers open

These ideas support computer architecture, compilers, operating systems and performance work, but mathematics alone promises neither a specific course nor employment. It develops options and disciplined reasoning.


Did You Know?

A two-bit counter is useful precisely because it forgets slowly. One exceptional outcome changes confidence but not direction. That tiny piece of hysteresis—four states instead of two—can remove the extra loop-entry miss suffered by a one-bit predictor.


Frequently Asked Questions

Does every processor use a two-bit predictor?

No. It is a foundational model. Commercial designs vary and may combine many specialised structures. Use vendor documentation for a particular processor.

Why not wait for the branch result?

Waiting leaves fetch and downstream pipeline capacity idle. Prediction can preserve throughput when correct, at the cost of recovery when wrong.

Is branch prediction artificial intelligence?

It is prediction from stored patterns, but labels depend on context. Traditional counters and history tables are best understood as digital state machines and statistical heuristics. Some research uses more complex learning methods.

What accuracy is good?

There is no universal threshold. Evaluate MPKI, penalty, workload time, energy and hardware budget. A small accuracy improvement on frequent costly branches may be valuable.

Can software control the predictor?

Software influences dynamic control flow and code layout. Exact control over proprietary predictor state is usually limited. Profile-guided optimisation and measurement are more reliable than assuming one internal design.

Are mispredicted instructions executed?

They can be fetched and may execute speculatively, but they must not retire as architectural program results. Their microarchitectural effects motivate separate security analysis.

Does a deeper pipeline always mean a larger penalty?

Resolving later often increases work to discard, but actual penalty depends on where the branch resolves, frontend design and overlap. Measure the target processor rather than applying one universal number.


Useful Next Reading

Use Intel’s current manuals page for architecture-specific primary documentation, then consult the matching processor’s optimisation and performance-monitoring chapters. For software structure, continue with compiler optimisation. For whole-system latency, continue with CPU scheduling. These layers interact, but their counters answer different questions.


Final Takeaway

The importance of mathematics in branch prediction lies in turning uncertain control flow into a measurable decision. Finite-state counters encode bias and confidence. Binary histories encode context. Hashing maps enormous possible histories into finite tables, creating an aliasing trade-off. Expected-cost equations connect prediction mistakes with program performance.

No predictor guarantees the future, and no single accuracy number proves a program is fast or secure. Yet a clear model lets students and engineers trace every guess, quantify every miss and decide whether added history is worth its cost. That is mathematics keeping a processor’s pipeline—and our reasoning—moving forward.

Discover more from eduKate Singapore

Subscribe now to keep reading and get access to the full archive.

Continue reading