As primeiras instruções não são necessariamente "executadas sequencialmente", mesmo em um ISA não-VLIW, a execução precisa apenas parecer sequencial. Uma implementação superescalar em ordem pode executar mais de uma instrução em paralelo com outra. Para fazer isso de forma eficaz, o hardware para instruções de decodificação deve ser aumentado (ampliado), o hardware deve ser adicionado para garantir a independência dos dados das instruções a serem executadas em paralelo, os recursos de execução devem ser aumentados e o número de portas dos arquivos de registro geralmente aumentado. Todos esses adicionam transistores.
Uma implementação fora de ordem, que permite que instruções posteriores sejam executadas antes de versões anteriores, desde que não haja dependências de dados, usa hardware adicional para lidar com o agendamento de instruções assim que os dados ficam disponíveis e adiciona registros e hardware de renomeação para mapeamento, alocando e liberando-os (mais transistores) para evitar riscos de gravação após leitura e gravação após gravação. A execução fora de ordem permite que o processador evite o bloqueio.
A reordenação de cargas e armazenamentos em um processador fora de ordem exige a garantia de que os armazenamentos anteriores à ordem do programa encaminhem os resultados para carregamentos posteriores do mesmo endereço. Isso implica lógica de comparação de endereços, bem como armazenamento para os endereços (e tamanho) das lojas (e armazenamento para os dados) até que a loja tenha sido confirmada na memória (o cache). (Para um ISA com um modelo de consistência de memória menos fraco, também é necessário verificar se as cargas estão ordenadas corretamente em relação aos armazenamentos de outros processadores - mais transistores.)
O pipelining adiciona algum controle adicional e sobrecarga de buffer e evita a reutilização da lógica para diferentes partes do manuseio de instruções, mas permite que as diferentes partes do manuseio de uma instrução se sobreponham no tempo para instruções diferentes.
Pipelining e execução superescalar aumentam o impacto dos riscos de controle (ou seja, ramificações e saltos condicionais). O pipelining (e também a execução fora de ordem) pode atrasar a disponibilidade do destino mesmo de saltos incondicionais, portanto, adicionar hardware para prever destinos (e direção para ramificações condicionais) permite que a busca de instruções continue sem aguardar a parte de execução do processador para disponibilizar os dados necessários. Preditores mais precisos tendem a exigir mais transistores.
Para um processador fora de ordem, pode ser desejável permitir que uma carga da memória seja executada antes que os endereços de todos os armazenamentos anteriores tenham sido computados; portanto, é necessário algum hardware para lidar com essa especulação, incluindo potencialmente um preditor.
Os caches podem reduzir a latência e aumentar a largura de banda dos acessos à memória, mas adicionam transistores para armazenar os dados e armazenar tags (e comparar tags com o endereço solicitado). Também é necessário hardware adicional para implementar a política de substituição. A pré-busca de hardware adicionará mais transistores.
A implementação da funcionalidade no hardware, em vez do software, pode aumentar o desempenho (enquanto exige mais transistores). Por exemplo, gerenciamento TLB, operações complexas, como operações de multiplicação ou ponto flutuante, operações especializadas, como zeros à esquerda na contagem. (A adição de instruções também aumenta a complexidade da decodificação de instruções e, geralmente, também a complexidade da execução - por exemplo, para controlar quais partes do hardware de execução serão usadas.)
As operações SIMD / vetor aumentam a quantidade de trabalho realizado por instrução, mas exigem mais armazenamento de dados (registros mais amplos) e geralmente usam mais recursos de execução.
(O multithreading especulativo também pode permitir que vários processadores executem um único programa encadeado mais rapidamente. Obviamente, adicionar processadores a um chip aumentará a contagem de transistores.)
Ter mais transistores disponíveis também pode permitir que os arquitetos de computadores forneçam ao ISA mais registros visíveis ao software, reduzindo potencialmente a frequência de acessos à memória, que tendem a ser mais lentos que os acessos a registros e envolvem algum grau de indireção (por exemplo, adicionar um deslocamento à pilha ponteiro) que aumenta a latência.
A integração - que aumenta o número de transistores em um chip, mas não no sistema - reduz a latência da comunicação e aumenta a largura de banda, obviamente permitindo um aumento no desempenho. (Também há uma redução no consumo de energia que pode ser traduzida em aumento de desempenho.)
Mesmo no nível de execução das instruções, adicionar transistores pode aumentar o desempenho. Por exemplo, um somador de seleção de transporte adiciona bits superiores duas vezes em paralelo com diferentes suposições da transferência a partir dos bits inferiores, selecionando a soma correta de bits superiores quando a execução a partir dos bits inferiores está disponível, obviamente exigindo mais transistores do que um simples o ripple carrega o adicionador, mas reduz o atraso na produção da soma total. Da mesma forma, um multiplicador com uma única linha de adicionadores de carry-save usa menos transistores (mas é mais lento) do que um multiplicador de árvore Dadda (ou Wallace) e não pode ser canalizado (portanto, teria que ser replicado para permitir que outro multiplicador inicie a execução enquanto um anterior multiplicar estava em andamento).
O exposto acima pode ser cansativo, mas não exaustivo!