Pierwsze instrukcje niekoniecznie są „wykonywane sekwencyjnie”, nawet na ISA innym niż VLIW, wykonanie musi wyglądać tylko sekwencyjnie. W superskalarnej implementacji w kolejności można wykonać więcej niż jedną instrukcję równolegle z inną. Aby to zrobić skutecznie, należy zwiększyć (rozszerzyć) sprzęt do instrukcji dekodowania, dodać sprzęt, aby zapewnić niezależność danych od instrukcji wykonywanych równolegle, zwiększyć zasoby wykonawcze i ogólnie zwiększyć liczbę portów plików rejestrów. Wszystkie te dodają tranzystory.
Implementacja poza kolejnością, która pozwala na wykonanie późniejszych instrukcji wcześniejszych, o ile nie ma zależności danych, wykorzystuje dodatkowy sprzęt do obsługi planowania instrukcji, gdy tylko dane staną się dostępne, oraz dodaje rejestry zmiany nazw i sprzęt do mapowania, przydzielanie i zwalnianie ich (więcej tranzystorów), aby uniknąć zagrożeń zapisu po zapisie i zapisu po zapisie. Wykonywanie poza kolejnością pozwala procesorowi uniknąć przeciągnięcia.
Zmiana kolejności obciążeń i zapisów w procesorze poza kolejnością wymaga upewnienia się, że zapisy wcześniej w kolejności programowej będą przekazywać wyniki do późniejszych ładunków o tym samym adresie. To implikuje logikę porównywania adresów, a także przechowywanie adresów (i rozmiarów) sklepów (i przechowywania danych), dopóki sklep nie zostanie przydzielony do pamięci (pamięci podręcznej). (W przypadku modelu ISA o mniej słabym modelu spójności pamięci należy również sprawdzić, czy obciążenia są odpowiednio uporządkowane względem zapasów z innych procesorów - więcej tranzystorów.)
Przetwarzanie potokowe dodaje pewne dodatkowe koszty sterowania i buforowania i zapobiega ponownemu wykorzystaniu logiki do różnych części obsługi instrukcji, ale pozwala, aby różne części obsługi instrukcji nakładały się w czasie dla różnych instrukcji.
Rurociągi i wykonywanie superskalarne zwiększają wpływ zagrożeń związanych z kontrolą (tj. Warunkowe rozgałęzienia i skoki). Przetwarzanie potokowe (a także wykonywanie poza kolejnością) może opóźnić dostępność celu nawet bezwarunkowych skoków, więc dodanie sprzętu do przewidywania celów (i kierunku rozgałęzień warunkowych) pozwala na pobieranie instrukcji, aby kontynuować bez oczekiwania na część wykonawczą procesor, aby udostępnić niezbędne dane. Dokładniejsze predyktory zwykle wymagają więcej tranzystorów.
W przypadku procesora poza kolejnością pożądane może być umożliwienie wykonania ładowania z pamięci przed obliczeniem adresów wszystkich poprzednich sklepów, więc wymagany jest sprzęt do obsługi takich spekulacji, potencjalnie zawierający predyktor.
Pamięci podręczne mogą zmniejszyć opóźnienie i zwiększyć przepustowość dostępu do pamięci, ale dodają tranzystory, aby przechowywać dane i przechowywać tagi (i porównywać tagi z żądanym adresem). Potrzebny jest również dodatkowy sprzęt do wdrożenia zasad wymiany. Wstępne pobieranie sprzętu doda więcej tranzystorów.
Wdrożenie funkcji w sprzęcie zamiast w oprogramowaniu może zwiększyć wydajność (wymagając więcej tranzystorów). Np. Zarządzanie TLB, złożone operacje, takie jak mnożenie lub operacje zmiennoprzecinkowe, operacje specjalistyczne, takie jak liczenie zer wiodących. (Dodanie instrukcji zwiększa również złożoność dekodowania instrukcji i zazwyczaj również złożoność wykonania - np. W celu kontroli, które części sprzętu wykonawczego będą używane).
Operacje SIMD / wektorowe zwiększają ilość pracy wykonanej na instrukcję, ale wymagają więcej miejsca na dane (szersze rejestry) i zwykle wymagają więcej zasobów wykonawczych.
(Wielowątkowość spekulacyjna może również pozwolić wielu procesorom na szybsze wykonanie jednego wątkowego programu. Oczywiście dodanie procesorów do układu zwiększy liczbę tranzystorów.)
Posiadanie większej liczby tranzystorów może również pozwolić architektom komputerów na zapewnienie ISA większej liczby rejestrów widocznych dla oprogramowania, potencjalnie zmniejszając częstotliwość dostępu do pamięci, które zwykle są wolniejsze niż dostęp do rejestru i wymagają pewnego stopnia pośrednictwa (np. Dodając przesunięcie do stosu wskaźnik), który zwiększa opóźnienie.
Integracja - która zwiększa liczbę tranzystorów w układzie, ale nie w systemie - zmniejsza opóźnienia komunikacyjne i zwiększa przepustowość, co oczywiście pozwala na zwiększenie wydajności. (Zmniejsza się również zużycie energii, co może przełożyć się na zwiększenie wydajności).
Nawet na poziomie wykonywania instrukcji dodanie tranzystorów może zwiększyć wydajność. Na przykład sumator wyboru przeniesienia dodaje górne bity dwa razy równolegle z różnymi założeniami przeniesienia z niższych bitów, wybierając prawidłową sumę górnych bitów, gdy dostępne jest przeniesienie z niższych bitów, co oczywiście wymaga większej liczby tranzystorów niż prosty adder carry marszczyć, ale zmniejszając opóźnienie w uzyskaniu pełnej sumy. Podobnie mnożnik z jednym rzędem sumatorów przenoszenia przeniesienia używa mniejszej liczby tranzystorów (ale jest wolniejszy) niż mnożnik drzewa Dadda (lub Wallace'a) i nie można go potokować (więc musiałby zostać zreplikowany, aby umożliwić kolejnemu mnożeniu rozpoczęcie wykonywania wcześniejszego mnożenie było w toku).
Powyższe może być wyczerpujące, ale nie wyczerpujące!