# The ITTAGE indirect branch predictor

DevFeed: [The ITTAGE indirect branch predictor](<https://devfeed.tech/articles/the-ittage-indirect-branch-predictor-21953.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/ittage-branch-predictor/>)

Author: Nelson Elhage

Published: 2025-07-04T21:30:00Z

Content type: article

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [cpu](<https://devfeed.tech/topics/cpu.md>), [Python](<https://devfeed.tech/topics/python.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Python 3.14](<https://devfeed.tech/topics/python-3-14.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [performance](<https://devfeed.tech/tags/performance.md>), [python](<https://devfeed.tech/tags/python.md>), [python-3-14](<https://devfeed.tech/tags/python-3-14.md>)

## AI overview

An explanatory article about ITTAGE indirect branch prediction and how modern CPUs predict bytecode-dispatch jumps. It connects the topic to Python 3.14's tail-calling interpreter and describes ITTAGE as a TAGE variant that predicts indirect jump destinations using program-counter history and multiple history-length tables.

## Source excerpt

While investigating the performance of the new Python 3.14 tail-calling interpreter, I learned (via this very informative comment from Sam Gross) new (to me) piece of performance trivia: Modern CPUs mostly no longer struggle to predict the bytecode-dispatch indirect jump inside a "conventional" bytecode interpreter loop. In steady-state, assuming the bytecode itself is reasonable stable, modern CPUs achieve very high accuracy predicting the dispatch, even for "vanilla" while / switch-style interpreter loops1!