O gargalo de Von Neumann é o resultado natural do uso de um barramento para transferir dados entre o processador, a memória, o armazenamento de longo prazo e os dispositivos periféricos. Por mais rápido que o ônibus execute sua tarefa, sobrecarregá-la - ou seja, formar um gargalo que reduz a velocidade - é sempre possível. Com o tempo, as velocidades do processador continuam a aumentar, enquanto as melhorias de memória e outros dispositivos se concentram na densidade - a capacidade de armazenar mais em menos espaço. Consequentemente, o gargalo se torna mais um problema a cada melhoria, fazendo com que o processador passe muito tempo ocioso.
Dentro do razoável, você pode superar alguns dos problemas que cercam o gargalo de Von Neumann e produzir aumentos pequenos, mas perceptíveis, na velocidade do aplicativo. Aqui estão as soluções mais comuns:
- Cache: quando os problemas com a obtenção de dados da memória com rapidez suficiente com a Arquitetura Von Neumann tornaram-se evidentes, os fornecedores de hardware responderam rapidamente adicionando memória localizada que não exigia acesso ao barramento. Essa memória parece externa ao processador, mas como parte do pacote do processador. O cache de alta velocidade é caro, portanto, os tamanhos do cache tendem a ser pequenos.
- Cache do processador: Infelizmente, os caches externos ainda não fornecem velocidade suficiente. Mesmo usando a RAM mais rápida disponível e cortando completamente o acesso ao barramento, não atende às necessidades de capacidade de processamento do processador. Consequentemente, os fornecedores começaram a adicionar memória interna - um cache menor que o cache externo, mas com acesso ainda mais rápido porque faz parte do processador.
- Pré-busca: O problema com caches é que eles são úteis apenas quando contêm os dados corretos. Infelizmente, os acessos ao cache são baixos em aplicativos que usam muitos dados e realizam uma ampla variedade de tarefas. A próxima etapa para tornar os processadores mais rápidos é adivinhar quais dados o aplicativo exigirá em seguida e carregá-los no cache antes que o aplicativo os solicite.
- Usando RAM especial: você pode ser enterrado pela sopa de letrinhas RAM porque há mais tipos de RAM do que a maioria das pessoas imagina. Cada tipo de RAM pretende resolver pelo menos parte do problema de gargalo de Von Neumann e eles funcionam - dentro de certos limites. Na maioria dos casos, as melhorias giram em torno da ideia de obter os dados da memória e colocá-los no barramento com mais rapidez. Dois fatores principais (e muitos menores) afetam a velocidade: velocidade da memória (a rapidez com que a memória move os dados) e latência (quanto tempo leva para localizar um determinado dado). Leia mais sobre a memória e os fatores que a afetam.
Como em muitas outras áreas da tecnologia, o exagero pode se tornar um problema. Por exemplo, multithreading, o ato de quebrar um aplicativo ou outro conjunto de instruções em unidades de execução discretas que o processador pode manipular uma de cada vez, é muitas vezes apresentado como um meio de superar o gargalo de Von Neumann, mas na verdade não o faz nada mais do que adicionar sobrecarga (tornando o problema pior). O multithreading é a resposta para outro problema: tornar o aplicativo mais eficiente. Quando um aplicativo adiciona problemas de latência ao gargalo de Von Neumann, todo o sistema fica lento. O multithreading garante que o processador não perca ainda mais tempo esperando pelo usuário ou pelo aplicativo, mas, em vez disso, tenha algo para fazer o tempo todo. A latência do aplicativo pode ocorrer com qualquer arquitetura de processador, não apenas com a Arquitetura Von Neumann. Mesmo assim,