Quase todos os avanços na velocidade do computador vêm de uma dessas áreas:
Transistores menores
Duas coisas resultam da redução dos transistores:
- Eles estão fisicamente mais próximos, portanto, o tempo que leva para um sinal elétrico viajar da fonte ao destino é menor. Portanto, embora os sinais elétricos não viajem mais rápido do que 50 anos atrás, eles frequentemente viajam distâncias mais curtas agora .
- Mais transistores podem ser incluídos em um chip, o que significa que mais "trabalho" pode ser feito ao mesmo tempo. Quanto mais transistores são adicionados, mais difícil é encontrar um trabalho útil para eles fazerem, mas muitos truques inteligentes são usados (veja abaixo).
Mais "trabalho útil" por instrução
Por exemplo, alguns processadores não possuem instruções para multiplicar ou dividir números inteiros; em vez disso, essa tarefa deve ser executada com rotinas de software lentas. A adição de instruções de multiplicação e divisão acelera consideravelmente as coisas. Adicionar instruções de ponto flutuante pode acelerar o software que requer números de ponto flutuante.
Uma maneira importante de realizar mais "trabalho útil" por instrução é aumentar o tamanho da palavra . As CPUs que podem executar operações em números de 32 bits geralmente exigem muito menos instruções para executar a mesma tarefa que as CPUs de 16 ou 8 bits.
Alguns processadores suportam instruções que fazem várias coisas ao mesmo tempo, em particular instruções que fazem a mesma operação em vários itens de dados ( SIMD ).
Mais instruções por ciclo
O "ciclo do relógio" é como o processador passa do estado atual para o próximo estado. Em certo sentido, é a menor unidade de trabalho que o processador pode executar por vez. No entanto, o número de ciclos de clock de uma instrução específica depende do design do processador.
Com o advento dos processadores em pipeline , tornou-se possível que instruções separadas "se sobrepusessem", ou seja, uma seria iniciada antes da conclusão da anterior. No entanto, certas instruções podem invalidar a próxima instrução, que não será conhecida até que a próxima instrução seja parcialmente executada, para que as coisas possam se complicar. (Os processadores em pipeline incluem lógica para garantir que tudo funcione bem - mas as características de desempenho são mais complexas.)
Os processadores superescalares levam isso para o próximo nível, literalmente permitindo que duas instruções sejam executadas ao mesmo tempo, e a execução fora de ordem leva um passo adiante, permitindo que as instruções sejam executadas fora de ordem. Esses recursos requerem análise do fluxo de instruções, descobrindo quais instruções não se chocam.
Embora existam outros truques (por exemplo , previsão de ramificação , execução especulativa ), o mais importante é o quadro geral:
- toda instrução leva um certo número de ciclos de clock para ser concluída (não necessariamente constante)
- mas várias instruções podem estar em andamento ao mesmo tempo
- portanto, existem " instruções por ciclo " mensuráveis > 1 para processadores de última geração
- mas isso depende muito da carga de trabalho
Mais ciclos por segundo
Em outras palavras, maior velocidade do relógio . O aumento da velocidade do relógio não apenas aumenta o calor gerado, mas também requer um design de chip muito mais disciplinado, porque há um limite de tempo menor para o circuito se estabilizar. Conseguimos muita quilometragem até esta década de 2000, quando atingimos alguns limites práticos.
Dados no lugar certo, na hora certa
Embora os componentes dentro da CPU tenham se aproximado cada vez mais devido aos transistores encolhidos, a CPU e a RAM ainda estão bem separadas por 5 a 10 cm. Se uma instrução precisar de algo da RAM, ela não levará 5 ou 6 ciclos para ser concluída, levará cerca de 200. Esse é o problema do gargalo de von Neumann .
Nossa principal arma contra isso é o cache . É mais provável que os dados acessados recentemente sejam acessados novamente, portanto, eles são mantidos na memória especial (chamada cache) que está dentro do chip da CPU, tornando o acesso muito mais rápido.
No entanto, outras técnicas (como pipelining e previsão de ramificação ) ajudam ao permitir que o processador faça um trabalho útil enquanto aguarda a chegada dos dados, além de prever quais dados poderão ser necessários em breve.
Processadores múltiplos e / ou especializados
É muito mais fácil escrever software para um único processador do que para vários processadores. No entanto, às vezes os benefícios de desempenho / custo / consumo de energia valem a pena.
Além disso, certos processadores são particularmente adequados para determinadas tarefas. Por exemplo, as GPUs são projetadas especificamente para os cálculos necessários para renderizar gráficos e efeitos 2D e 3D.
Os processadores multinúcleo são essencialmente múltiplos processadores em um único chip.