Первые инструкции не обязательно «выполняются последовательно» даже на ISA без VLIW, выполнение только должно выглядеть последовательным. Суперскалярная реализация по порядку может выполнять более одной инструкции параллельно с другой. Чтобы сделать это эффективно, аппаратное обеспечение для команд декодирования должно быть увеличено (расширено), должно быть добавлено аппаратное обеспечение, чтобы гарантировать независимость данных для команд, которые должны выполняться параллельно, ресурсы для выполнения должны быть увеличены, а количество портов файла регистра обычно увеличено. Все они добавляют транзисторы.
Реализация не по порядку, которая позволяет выполнять более поздние инструкции раньше, чем более ранние, до тех пор, пока отсутствуют зависимости от данных, использует дополнительное оборудование для обработки планирования команд, как только становятся доступными данные, и добавляет регистры переименования и оборудование для отображения, выделение и освобождение их (больше транзисторов), чтобы избежать опасностей записи после чтения и записи после записи. Внеочередное выполнение позволяет процессору избежать зависания.
Переупорядочение загрузок и хранилищ в процессоре не по порядку требует, чтобы хранилища ранее в программном порядке пересылали результаты на последующие загрузки по тому же адресу. Это подразумевает логику сравнения адресов, а также хранилище для адресов (и размера) хранилищ (и хранилище для данных) до тех пор, пока хранилище не будет выделено в память (кэш). (Для ISA с менее слабой моделью согласованности памяти также необходимо проверить, правильно ли упорядочены нагрузки по отношению к хранилищам от других процессоров - больше транзисторов.)
Конвейерная обработка добавляет некоторые дополнительные затраты на управление и буферизацию и предотвращает повторное использование логики для разных частей обработки команд, но позволяет различным частям обработки инструкций перекрываться во времени для разных команд.
Конвейерная обработка и суперскалярное выполнение увеличивают влияние контрольных опасностей (то есть условных ветвей и скачков). Конвейерная обработка (а также выполнение не по порядку) может задержать доступ к цели даже для безусловных переходов, поэтому добавление аппаратного обеспечения для прогнозирования целей (и направления для условных переходов) позволяет извлекать инструкции для продолжения без ожидания части выполнения процессор, чтобы сделать необходимые данные доступными. Более точные предикторы, как правило, требуют больше транзисторов.
Для процессора, вышедшего из строя, может быть желательно разрешить выполнение загрузки из памяти до того, как будут вычислены адреса всех предыдущих хранилищ, поэтому требуется некоторое оборудование для обработки таких предположений, потенциально включая предиктор.
Кэши могут уменьшить задержку и увеличить пропускную способность обращений к памяти, но добавить транзисторы для хранения данных и для хранения тегов (и сравнивать теги с запрошенным адресом). Дополнительное оборудование также необходимо для реализации политики замены. Аппаратная предварительная выборка добавит больше транзисторов.
Реализация функциональности в аппаратном обеспечении, а не в программном обеспечении может повысить производительность (при этом требуется больше транзисторов). Например, управление TLB, сложные операции, такие как операции умножения или вычисления с плавающей запятой, специализированные операции, такие как подсчет ведущих нулей. (Добавление инструкций также увеличивает сложность декодирования инструкций и, как правило, сложность выполнения, например, для управления тем, какие части аппаратного обеспечения исполнения будут использоваться.)
SIMD / векторные операции увеличивают объем работы, выполняемой для каждой инструкции, но требуют большего хранения данных (более широкие регистры) и обычно используют больше ресурсов выполнения.
(Умозрительная многопоточность может также позволить нескольким процессорам быстрее выполнять однопотоковую программу. Очевидно, что добавление процессоров в микросхему увеличит количество транзисторов.)
Наличие большего количества транзисторов может также позволить компьютерным архитекторам обеспечить ISA большим количеством регистров, видимых для программного обеспечения, потенциально уменьшая частоту обращений к памяти, которые, как правило, медленнее, чем обращения к регистрам, и включают некоторую степень косвенности (например, добавление смещения в стек указатель), который увеличивает задержку.
Интеграция, которая увеличивает количество транзисторов в микросхеме, но не в системе, уменьшает задержку связи и увеличивает пропускную способность, что, очевидно, позволяет повысить производительность. (Существует также снижение энергопотребления, которое может быть преобразовано в повышение производительности.)
Даже на уровне выполнения команд добавление транзисторов может повысить производительность. Например, сумматор выбора переноса добавляет старшие биты дважды параллельно с различными допущениями переноса из младших битов, выбирая правильную сумму старших битов, когда перенос из младших битов доступен, очевидно, что требуется больше транзисторов, чем простого суммирующее устройство, но уменьшающее задержку при получении полной суммы. Аналогично, множитель с одной строкой сумматоров с сохранением переноса использует меньше транзисторов (но медленнее), чем множитель дерева Дадды (или Уоллеса), и его нельзя конвейеризовать (поэтому его необходимо будет реплицировать, чтобы другое умножение могло начать выполнение, пока раньше умножение происходило).
Вышесказанное может быть утомительным, но не исчерпывающим!