Todo mundo sabe que a velocidade da computação aumentou drasticamente desde sua invenção e parece que deve continuar. Mas uma coisa está me intrigando: se você passasse uma corrente elétrica através de um material hoje, ela viajaria na mesma velocidade como se você fizesse isso com o mesmo material há 50 anos.
Com isso em mente, como os computadores se tornaram mais rápidos? Qual é a principal área de design do processador que deu esses incríveis aumentos de velocidade?
Eu pensei que talvez pudesse ser um ou mais dos seguintes:
- Processadores menores (menos distância para a corrente viajar, mas me parece que você só poderá obter ganhos marginais aqui).
- Melhores materiais
computer-architecture
leylandski
fonte
fonte
Respostas:
Você obtém conclusões errôneas porque sua hipótese inicial está errada: você acha que a velocidade da CPU é equivalente à velocidade dos elétrons na CPU.
De fato, a CPU é uma lógica digital síncrona. O limite para sua velocidade é que a saída de uma equação lógica seja estável dentro de um período de relógio. Com a lógica implementada com transistores, o limite está principalmente relacionado ao tempo necessário para fazer os transistores mudarem. Ao reduzir o tamanho do canal, conseguimos alternar mais rapidamente. Esta é a principal razão para a melhoria na frequência máxima de CPUs por 50 anos. Hoje, também modificamos a forma dos transistores para aumentar sua velocidade de comutação, mas, até onde eu sei , apenas Intel, Global Foundries e TSMC são capazes de criar FinFETs hoje.
No entanto, existem outras maneiras de melhorar a velocidade máxima de clock de uma CPU: se você dividir sua equação lógica em várias menores, poderá acelerar cada passo e ter uma velocidade de clock mais alta. Você também precisa de mais períodos de relógio para executar a mesma ação, mas, usando técnicas de pipelining , você pode fazer com que a taxa de instruções por segundo siga sua taxa de relógio.
Hoje, a velocidade dos elétrons tornou-se um limite: a 10 GHz, um sinal elétrico não pode ser propagado em mais de 3 cm. Esse é aproximadamente o tamanho dos processadores atuais. Para evitar esse problema, você pode ter vários domínios síncronos independentes no seu chip, reduzindo as restrições na propagação do sinal. Mas este é apenas um fator limitante, entre velocidade de comutação de transistor, dissipação de calor, EMC e provavelmente outros (mas eu não estou no setor de fundição de silício).
fonte
Existem muitas variáveis complexas que afetam a velocidade geral da CPU, mas a principal é a velocidade do clock, que aumentou em meados dos anos 2000 e depois foi nivelada devido a limitações físicas. O consumo de energia por chip também aumentou durante esse período para compensar as perdas / vazamentos de chips. Os chips da CPU ficaram muito quentes e a tecnologia de resfriamento se tornou mais importante, e mais potência não pôde ser aplicada (sem literalmente derretê-los!).
O Extremetech.com fornece uma boa pesquisa que aponta que a lei de Moore é pensada para ser realmente alimentada principalmente pela escala de Dennard . Este último entrou em colapso em meados dos anos 2000. Existem muitos outros fatores / melhorias de design envolvidos na "velocidade" do chip (em que a "velocidade" é medida como o tempo geral de execução do código e não apenas na velocidade do relógio) que tendem a mascarar o ponto de inflexão na capacidade do hardware, como caches, paralelismo da CPU / multicore , previsão de ramificação etc., que foram adicionados com menores larguras de porta (e, portanto, muito mais portas por chip para funcionalidade adicional). As larguras das portas também tendem a parar de diminuir ou, pelo menos, diminuir menos rapidamente a cada geração.
Por que essas tendências limitantes não são muito conhecidas? Algumas das entidades que têm mais conhecimento dessas tendências "têm mais a perder" e são realmente as menos propensas a publicá-las. Por exemplo, a Intel, no valor de bilhões de dólares, provavelmente não publicará dados internos proprietários apontando para limites ou diminuições no desempenho futuro.
Existem novas possibilidades no horizonte que podem levar a tendências totalmente novas (mas algumas envolvem tecnologias / técnicas de fabricação quase completamente diferentes), incluindo chips fotônicos, chips 3D onde os chips são dispostos em várias camadas, computação quântica, nanotecnologia como nanotubos transistores, etc.
fonte
Delegação para processadores adicionais
Outra consideração (além das outras ótimas respostas) é a delegação de tarefas a outros processadores. Nos primeiros dias da computação, havia apenas um processador. Para gráficos, o cálculo foi compartilhado com outros cálculos na mesma CPU. Agora, temos processadores separados para processamento gráfico.
Núcleos múltiplos
Muitos dos processadores modernos têm vários núcleos, na mesma peça de silício. Como eles compartilham o mesmo pedaço de silício, eles não são afetados tanto pela lentidão da saída do chip para outro núcleo / processador. Exemplo: Processadores gráficos.
Expansão de memória e endereço
Os primeiros microprocessadores de 8 bits tinham um alcance de endereçamento menor do que os atuais processadores de 32 e 64 bits. Os processadores modernos têm uma faixa de memória aumentada, o que significa que mais computação pode ser realizada na memória do que ter que acessar o armazenamento externo.
Isso também se aplica à memória no chip também. O espaço de endereçamento maior permite memórias maiores mais próximas do núcleo central, deixando um espaço de endereçamento grande fora do silício.
Tubulações e caches
Com a memória ficando mais barata, os computadores modernos agora estão implementando canais de dados e instruções mais sofisticados, bem como caches de dados e instruções. Isso acelera a execução, reduzindo a necessidade de buscar da memória mais lenta (fora do silício) para o cache interno. Alguns processadores têm a capacidade de conter
for
loops em seus caches de instruções.Sumário
Os computadores de hoje são muito mais rápidos, não apenas devido aos avanços nas tecnologias de transistor e silício, mas também devido à delegação de tarefas a outros processadores / núcleos. A memória cada vez mais rápida e barata permite que os processadores tenham muita memória próxima à CPU. Os intervalos de endereçamento permitem mais memória, o que significa menos buscas no armazenamento externo. Tamanhos maiores de registro permitem que mais dados sejam buscados por ciclo (4 bytes com um sistema de 32 bits, 1 byte com um sistema de 8 bits). Vários núcleos permitem operações paralelas, em vez de serializá-las.
fonte
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:
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:
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.
fonte
Quando os computadores podem fazer mais cálculos por unidade de tempo, eles são vistos como sendo mais rápidos. Cada cálculo pode não ser feito mais rápido do que antes, mas há mais cálculos sendo feitos. Uma boa analogia seria o número de etapas que um corredor executa. Se um corredor se comportasse de acordo com a lei de Moore, ele poderia dar o dobro de passos a cada dois anos. Em essência, o corredor estaria cobrindo o dobro da distância na mesma quantidade de tempo que o corredor fazia dois anos atrás. A distância dividida pelo tempo é igual à velocidade. 2 X Distância é igual a 2 X Velocidade.
fonte
O poder de processamento de um computador / CPU é realmente a rapidez com que a eletricidade viaja, mas a rapidez com que pode ser ligada e desligada. Quanto mais rápido você alternar entre o fluxo atual e o não fluxo, mais informações você poderá processar dentro de uma CPU ou transmitir pela linha.
fonte
Para processadores típicos usados em PCs, a dissipação de calor é um fator limitante há mais de uma década, onde os processadores refrigerados a ar nos PCs são limitados a cerca de 4 ghz. O resfriamento a água eleva isso para cerca de 5 ghz, e o resfriamento a nitrogênio tem sido usado para elevar as taxas de clock de 6 a 6,5 ghz.
A taxa de clock é basicamente uma função da tensão versus o tamanho lógico do circuito (quanto tempo leva para que um comutador mude de estado). Quanto maior a tensão ou menor a lógica do circuito, mais rápida a taxa, mas isso apresenta um problema de dissipação de calor, pois as densidades geralmente aumentam junto com a redução no tamanho da lógica do circuito. Com a alta densidade, não resta muito espaço para o material condutor de calor dissipar o calor. A redução da densidade aumenta o custo e também aumenta os atrasos de propagação devido a comprimentos mais longos do circuito.
Os processadores não ficaram muito mais rápidos nos últimos anos, o atual Intel i7 4790K (4.0 ghz, 4.4 ghz turbo) não é muito mais rápido que a segunda geração Intel i7 2700K (3.5 ghz, 3.9 ghz turbo), outros do que a taxa de clock mais rápida (14,3% mais rápida). Por outro lado, como os gráficos 3D podem tirar proveito de operações paralelas, as placas de vídeo aumentaram o desempenho em um fator em torno de 3 nos últimos 4 ou 5 anos, algumas têm o equivalente a mais de 3.000 sub-núcleos.
fonte
Embora as respostas já dadas sejam boas, todas parecem muito complicadas!
A resposta rápida "TLDR" é "número de portas lógicas" e "com que rapidez essas portas lógicas são acionadas". Pense nos portões lógicos como 1s e 0s. Este é apenas um transistor / tubo de vácuo / o que quer que seja ligado ou desligado. 1 está ativado 0 está desativado.
A eletricidade não se move mais rápido ou mais devagar, mas você pode colocar mais zeros e zeros no chip, porque os zeros e zeros são menores. E você pode fazê-los girar mais rápido com o tempo. Isso faz uma resposta um pouco mais simples?
fonte
Os dois maiores fatores de longe são o fato de que os transistores encolheram em um nível ridículo e, portanto, agora temos smartphones com mais de um bilhão de transistores, e o fato de trocar um transistor de um estado para outro tornou-se muito mais rápido. A troca mais rápida se traduz diretamente em mais velocidade. O número mais alto de transistores aumenta a velocidade indiretamente porque é um facilitador de muitas outras melhorias mencionadas: Temos caches porque temos mais transistores. Temos mais e maiores registros porque temos mais transistores. Temos instruções de vetor porque temos mais transistores. Temos processadores dual, quad core ou dez núcleos porque temos mais transistores.
Em um grau muito menor, temos melhorias de velocidade devido a um melhor design. Por exemplo, um multiplicador não é apenas mais rápido porque temos mais transistores, mas porque usamos métodos melhores. A previsão de ramificação melhorou além de apenas ter mais transistores disponíveis. Mas, em suma, esse é um efeito pequeno comparado à potência bruta de um bilhão de transistores.
(O processador no primeiro Mac foi chamado de processador Motorola 68000 porque tinha 68000 transistores. Um novo iPad possui cerca de 20.000 vezes mais).
fonte
Eu sou engenheiro mecânico, então não estou familiarizado com o quanto isso afeta a velocidade de um processador ou se ele se tornou um fator limitante ou não, mas a física por trás disso é sólida. A indutância e capacitância do circuito afetará a rapidez com que os sinais digitais de tensão podem subir e descer - afetando assim a velocidade de comutação. Idealmente, os sinais de comutação seriam boas ondas quadradas. Na realidade, eles são ligeiramente deformados e inclinados nas bordas. Os sinais precisam ser altos e altos o suficiente para serem lidos antes do próximo ciclo do relógio. Essencialmente, a onda de sinal precisa de um "ponto plano" na parte superior. Se você mudar muito rápido, receberá um sinal de onda pontudo. Aqueles que estão mais familiarizados com os sinais digitais podem esclarecer, se necessário, mas a idéia está certa.
fonte