O Gargalo de Von Neumann: Limitações e Soluções

Classificado em Computação

Escrito em em português com um tamanho de 2,4 KB

O Gargalo de Von Neumann

O canal de transmissão de dados entre a CPU e a memória leva ao gargalo de Von Neumann, caracterizado pela troca de dados limitada (taxa de transferência) entre a CPU e a memória em relação à quantidade de memória disponível. Na maioria dos computadores modernos, a troca de dados entre o processador e a memória é muito menor do que a taxa com que o processador pode trabalhar. Isso limita seriamente a velocidade eficaz de processamento, principalmente quando o processador é exigido para realizar o processamento de grandes quantidades de dados. A CPU é constantemente forçada a esperar por dados que precisam ser transferidos para, ou a partir da, memória. Como a velocidade da CPU e o tamanho da memória têm aumentado muito mais rapidamente que a taxa de transferência entre eles, o gargalo se tornou um problema cada vez mais grave a cada geração de CPU.7

O termo "gargalo de Von Neumann" foi cunhado por John Backus em sua palestra do Prêmio Turing da ACM em 1977. Segundo Backus:

Certamente deve haver uma maneira menos primitiva de se fazer grandes alterações na memória, do que empurrando um grande número de palavras, de um lado para o outro, através do gargalo de Von Neumann. Não é somente um gargalo literal para o tráfego de dados, mas, o mais importante, é um gargalo intelectual que nos tem mantido atados a um pensamento de "uma palavra por vez" em vez de encorajar-nos a pensar em termos de unidades conceituais maiores. Assim, a programação é basicamente o planejamento e detalhamento do enorme tráfego de palavras através do gargalo de Von Neumann e grande parte desse tráfego não diz respeito aos dados propriamente ditos, e sim a onde esses dados são encontrados.8

O problema de desempenho pode ser aliviado (até certo ponto) por diversos mecanismos. Entre eles estão:

  • Colocação de uma memória cache entre o processador e a memória principal.
  • Proporcionar caches separados com caminhos de acesso separados para dados e instruções (a chamada arquitetura Harvard Modificada).
  • Utilização de um algoritmo preditor de salto e lógica.

O problema também pode ser contornado usando um pouco de computação paralela, por exemplo, a arquitetura NUMA, abordagem geralmente utilizada em supercomputadores.

Entradas relacionadas: