Os computadores modernos são baseados no modelo Von Neumann?

5

Eu li no livro de base de Ciência da Computação (por Behrouz A. Forouzan) que o programa de um modelo de Von Neumann deve executar sequencialmente e o computador moderno executa o código na ordem que é mais eficiente. Mas não disse que a abordagem seqüencial de Von Neumann é a mais eficiente.

O computador moderno executa o código dessa maneira?

    
por RexYuan 25.09.2014 / 12:14

5 respostas

5

Arquitetonicamente, isto é, com relação ao que o software vê, os processadores modernos usam o modelo serial von Neumann. No entanto, a maioria dos processadores de alto desempenho usa a execução fora de ordem , que permite que as operações sejam executadas em uma forma não serial, mas seus efeitos são confirmados na ordem do programa.

(Alguns processadores anteriores, em ordem, tinham exceções imprecisas causadas por operações iniciando a ordem em ordem, mas os resultados sendo confirmados à medida que eram disponibilizados. Isso significa que uma operação de latência mais curta, como uma adição de inteiro, vem após um longo Uma operação de latência, como uma multiplicação de ponto flutuante, pode gravar seu resultado em um registrador antes que a operação de latência mais longa seja concluída. Se uma interrupção ou exceção ocorreu antes da conclusão da operação de latência mais longa, o estado do programa seria inconsistente.

Uma arquitetura de fluxo de dados não executa programas em série, mas o escalonamento do hardware de manipulação de dependências é problemático (até mesmo o desempenho moderno de alto desempenho). processadores fora de ordem têm janelas de execução a partir das quais as operações candidatas são programadas para menos de 100 operações) e a garantia de correção (particularmente para software, onde os métodos formais são menos comuns) também é difícil. Para ter uma ideia do design, cada operação é tratada como um thread separado que pode começar a execução assim que seus operandos de origem estiverem disponíveis e pode confirmar seu resultado assim que a operação for concluída (permitindo que as operações aguardem apenas esse resultado para iniciar a execução ). No nível de linguagem de máquina, isso poderia ser visto como o código de espaguete multithread final.

Processadores que usam execução fora de ordem são como arquiteturas de fluxo de dados em operação, mas com janelas de execução limitadas e visibilidade garantida em ordem dos resultados dentro do mesmo thread de execução. (Os modelos de consistência de memória mais fracos permitirão que os resultados se tornem visíveis para outros processadores em uma ordem que não seja estritamente seqüencial.)

    
por 25.09.2014 / 13:54
2

A principal distinção entre as principais arquiteturas de Von Neumann e Harvard é que, com Harvard, as memórias de dados e programas são separadas. Os PCs de hoje estão usando uma memória compartilhada para isso, embora certas regiões da memória possam ser marcadas como não-executáveis, o mesmo barramento de dados é usado para elas. Então, desse ponto de vista, as arquiteturas de PC são definitivamente Von Neumann.

Os modernos processadores para PCs de mesa, no entanto, reordenarão as instruções com base na eficiência, mas isto é, pelo que aprendi, não o ponto-chave para uma arquitetura Von Neumann.

    
por 25.09.2014 / 12:40
0

Von Neumann model's program must execute sequentially

modern computer execute code in the order that's most efficient.

As modernas CPUs de uso geral ainda consomem um único fluxo de instrução (por CPU lógica) e enquanto as CPUs Intel / AMD fazem internamente as operações de reordenamento (particularmente operações de memória lenta) para melhorar o desempenho, ele faz isso apenas quando não afeta os resultados do fluxo de instruções.

As CPUs modernas ainda funcionam sequencialmente - eu acho que a solução "oficial" para isso foi introduzir CPUs lógicas - a tecnologia hyperthreading da Intel permitiu que muitas operações se sobrepusessem e ocorressem de uma vez, e a interface apresentada ao fluxo de instruções era segunda CPU lógica.

But it did not say the Von Neumann sequential approach IS the most efficient.

Bem, com computadores se tornando dispositivos de mídia, se uma CPU tiver que processar uma grande quantidade de dados, mas com operações simples que não exigem muita tomada de decisão, a abordagem sequencial pura não é eficiente. Assim, foram introduzidas instruções SIMD que permitem que a CPU carregue vários valores e ative uma operação em todos eles em um ciclo. E, claro, as GPUs funcionam de forma diferente, com muitos "núcleos" que fazem operações matemáticas simples em grandes quantidades de dados paralelamente.

    
por 25.09.2014 / 14:20
-1

De wikipedia :

The design of a Von Neumann architecture is simpler than the more modern Harvard architecture which is also a stored-program system but has one dedicated set of address and data buses for reading data from and writing data to memory, and another set of address and data buses for fetching instructions.

    
por 25.09.2014 / 12:24
-2

Os computadores modernos não se afastaram do gargalo da garrafa de Von Neumann. Mesmo se usássemos milhares de CPUs em uma matriz super paralela, elas ainda assim incorporariam o princípio de uma ULA, de modo que ainda são amplamente baseadas nos mesmos conceitos. Criando múltiplos gargalos paralelos, nós aliviamos o problema, mas os blocos de construção individuais são fundamentalmente os mesmos.

    
por 29.12.2016 / 18:53