MIPS R10000 имел кэш команд с задержкой в один цикл и мог извлекать непрерывный блок из четырех команд в блоке кэша без ограничений выравнивания.
Механически, это, вероятно, означало, что он использовал четыре банка SRAM с, по крайней мере, частично независимой адресацией (декодирование адресов набора кэша могло быть общим)
Поскольку каждый банк является независимо адресуемым, как можно видеть на диаграмме, можно получить доступ к любой смежной последовательности из четырех слов, содержащихся в шестнадцати словах. При адресации строк [0, 0, 0, 0] получаются слова [0, 1, 2, 3] (слова 0-3); row [1, 0, 0, 0] получает слова [4, 1, 2, 3] (слова 1-4); row [1, 1, 0, 0] получает слова [4, 5, 2, 3] (слова 2-5); ...; строки [3, 3, 3, 2] получают слова [12, 13, 14, 11] (слова 11-14); строки [3, 3, 3, 3] получают слова [12, 13, 14, 15] (слова 12-15).
(Один и тот же банк может пересекать границы блоков кеша, но тогда два совпадения блоков кеша должны были бы быть подтверждены параллельно. Запоминание пути для предыдущего доступа уменьшило бы это до одной проверки набора для общего случая последовательных обращений в большие блоки кеша; один набор будет использовать запоминаемый способ, а другой будет выполнять обычную проверку при вводе нового блока кеша. Пересечение страниц - аналогичная проблема.)
(Общая альтернатива для выборки нескольких команд имеет ограничение выравнивания естественно выровненного фрагмента, например, 16 байтов.)
Этот процессор не перенаправлял выборку команд до тех пор, пока ветвь не была обнаружена на втором этапе конвейера (декодирование), поэтому взявшаяся ветвь ввела пузырь из одного цикла даже с правильным прогнозом. Неправильный прогноз может быть определен только через несколько циклов, потому что выполнение началось на четвертом этапе конвейера , а инструкции были выполнены не по порядку. (Неправильно предсказанная принятая ветвь может декодировать инструкции, уже извлеченные в пузыре взятых ветвей, поскольку они были сохранены в «кэше возобновления».)
Буферизация инструкций может сгладить такие опасности, поскольку пропускная способность редко достигает максимума из-за зависимостей данных и других опасностей.
Как правило, кэш может предоставлять несколько слов на выборку (ограничение естественного выравнивания облегчает один банк, предоставляющий чанк) или может быть доступен несколько раз за цикл (например, более глубокий конвейер кеша команд, чем другие части конвейера или использование дорогой мультипортированной SRAM).
Пока новый адрес предоставляется в каждом цикле, выборка из нескольких смежных инструкций может быть выполнена в каждом цикле. Если два адреса доступны (предсказаны) за цикл, инструкции после взятой ветви могут быть получены в одном и том же цикле. (Еще один метод уменьшения принятого штрафа ветвления и предоставления других возможностей оптимизации после ветвления - это использование кеша трассировки.)