b'\n_START_ARTICLE_\nArquitetura de von Neumann\n_START_SECTION_\nDescri\xc3\xa7\xc3\xa3o\n_START_PARAGRAPH_\nAs primeiras m\xc3\xa1quinas de computa\xc3\xa7\xc3\xa3o tinham programas fixos. Alguns computadores muito simples ainda usam este projeto, quer para fins de simplicidade ou de forma\xc3\xa7\xc3\xa3o. Por exemplo, uma calculadora de mesa (em princ\xc3\xadpio) \xc3\xa9 um programa de computador fixo. Ele pode fazer a matem\xc3\xa1tica b\xc3\xa1sica, mas n\xc3\xa3o pode ser usado como um processador de texto ou um emulador de console de videogame. Alterar o programa de uma m\xc3\xa1quina de programa fixo exige religa\xc3\xa7\xc3\xa3o, reestrutura\xc3\xa7\xc3\xa3o ou reprojetar a m\xc3\xa1quina. Os primeiros computadores n\xc3\xa3o eram t\xc3\xa3o "programados", como eles foram "desenhados". Era um processo trabalhoso, come\xc3\xa7ando com fluxogramas e c\xc3\xa9dulas de papel, seguido de desenhos detalhados de engenharia e, em seguida o processo muitas vezes penoso fisicamente de religa\xc3\xa7\xc3\xa3o e reconstru\xc3\xa7\xc3\xa3o da m\xc3\xa1quina. Podendo levar tr\xc3\xaas semanas para criar um programa no ENIAC e come\xc3\xa7ar a trabalhar._NEWLINE_A ideia do computador de programa armazenado, mudou tudo isso: um computador que pelo projeto inclui um conjunto de instru\xc3\xa7\xc3\xb5es e pode armazenar na mem\xc3\xb3ria um conjunto de instru\xc3\xa7\xc3\xb5es (programa) que detalha o c\xc3\xa1lculo. Um projeto de programa armazenado tamb\xc3\xa9m permite que os programas possam se  modificar durante a execu\xc3\xa7\xc3\xa3o. Uma motiva\xc3\xa7\xc3\xa3o precoce para uma instala\xc3\xa7\xc3\xa3o desse tipo foi a necessidade de um programa para incrementar ou modificar a por\xc3\xa7\xc3\xa3o do endere\xc3\xa7o das instru\xc3\xa7\xc3\xb5es, o que tinha que ser feito manualmente em projetos adiantados. Isto tornou-se menos importante quando registradores de \xc3\xadndice e endere\xc3\xa7amento indireto foram as caracter\xc3\xadsticas usuais da arquitetura da m\xc3\xa1quina. C\xc3\xb3digo de Automodifica\xc3\xa7\xc3\xa3o foi amplamente ca\xc3\xaddo em desuso, j\xc3\xa1 que normalmente \xc3\xa9 dif\xc3\xadcil de entender e depurar, bem como sendo ineficiente em pipelining processador moderno, e esquemas de cache._NEWLINE_Em grande escala, a capacidade de tratar as instru\xc3\xa7\xc3\xb5es como os dados \xc3\xa9 o que faz montadores, compiladores e outras ferramentas de programa\xc3\xa7\xc3\xa3o automatizada poss\xc3\xadveis. Pode-se "escrever programas que escrevem programas." Em uma escala menor, instru\xc3\xa7\xc3\xb5es de I / O da m\xc3\xa1quina intensiva, como o BitBlt primitivos usados para modificar imagens em um display bitmap. Foi mostrado posteriormente que estas instru\xc3\xa7\xc3\xb5es podem ser implementadas de forma eficiente por "na compila\xc3\xa7\xc3\xa3o fly" ("just-in-time de compila\xc3\xa7\xc3\xa3o) de tecnologia, por exemplo, gera\xc3\xa7\xc3\xa3o de c\xc3\xb3digo de programas, uma forma de c\xc3\xb3digo de auto-modifica\xc3\xa7\xc3\xa3o que se manteve popular._NEWLINE_H\xc3\xa1 desvantagens para a concep\xc3\xa7\xc3\xa3o de von Neumann. Al\xc3\xa9m do gargalo de von Neumann descrito abaixo, alterar o programa pode ser bastante prejudicial, quer por acidente ou design. Em alguns projetos simples computador de programa armazenado, um programa com defeito pode danificar outros programas, ou o sistema operacional, possivelmente levando a uma pane no computador. Prote\xc3\xa7\xc3\xa3o de mem\xc3\xb3ria e outras formas de controle de acesso._NEWLINE_O matem\xc3\xa1tico Alan Turing, que tinha sido alertado para um problema de l\xc3\xb3gica matem\xc3\xa1tica pelas palestras de Max Newman na Universidade de Cambridge, escreveu um artigo em 1936 intitulado On Computable Numbers, com um aplicativo para o Entscheidungsproblem, que foi publicado nos Anais da Sociedade Matem\xc3\xa1tica de Londres. Nela, ele descreveu uma m\xc3\xa1quina hipot\xc3\xa9tica que ele chamou de "m\xc3\xa1quina de computa\xc3\xa7\xc3\xa3o universal", e que agora \xc3\xa9 conhecida como a "m\xc3\xa1quina de Turing universal". A m\xc3\xa1quina hipot\xc3\xa9tica tinha um armazenamento infinito (mem\xc3\xb3ria, na terminologia de hoje instru\xc3\xa7\xc3\xb5es e dados). O engenheiro alem\xc3\xa3o Konrad Zuse, independentemente escreveu sobre este conceito em 1936. John von Neumann tornou-se familiarizado com Turing, quando ele era professor visitante na Universidade de Cambridge em 1935 e tamb\xc3\xa9m durante o ano que Turing passou na Universidade de Princeton, em 1936-1937._NEWLINE_Von Neumann estava envolvido no Projeto Manhattan no Los Alamos National Laboratory, que exigiu enormes quantidades de c\xc3\xa1lculo. Isso o levou para o projeto ENIAC, no ver\xc3\xa3o de 1944. L\xc3\xa1 ele se juntou ao debate em curso sobre a concep\xc3\xa7\xc3\xa3o deste computador de programa armazenado, o EDVAC. Como parte desse grupo, ele se ofereceu para escrever uma descri\xc3\xa7\xc3\xa3o do mesmo. O termo "arquitetura de von Neumann" surgiu a partir de uma publica\xc3\xa7\xc3\xa3o de von Neumann, o primeiro esbo\xc3\xa7o de um relat\xc3\xb3rio sobre o EDVAC datado de 30 de junho de 1945, que inclu\xc3\xada ideias de Eckert e Mauchly. O esbo\xc3\xa7o estava inacabado quando seu colega Herman Goldstine que circulou somente com o nome de von Neumann sobre ele, para a consterna\xc3\xa7\xc3\xa3o de Eckert e Mauchly. O documento foi lido por dezenas de colegas de von Neumann nos Estados Unidos e Europa, influenciando a pr\xc3\xb3xima rodada de modelos de computador._NEWLINE_Ambas publica\xc3\xa7\xc3\xb5es de von Neumann e Turing descreveram um programa armazenado para computadores, mas a publica\xc3\xa7\xc3\xa3o de von Neumann alcan\xc3\xa7ou maior circula\xc3\xa7\xc3\xa3o e a arquitetura do computador que ele exp\xc3\xb4s ficou conhecida como a "arquitetura de von Neumann". Von Neumann foi, ent\xc3\xa3o, o criador da arquitetura de programa armazenado, mas Jack Copeland considera que \xc3\xa9 "historicamente inadequado" referir-se a eletr\xc3\xb4nica de programa armazenado e computadores digitais como "m\xc3\xa1quinas de von Neumann"\n_START_SECTION_\nGargalo de Von Neumann\n_START_PARAGRAPH_\nO canal de transmiss\xc3\xa3o de dados entre a CPU e a mem\xc3\xb3ria leva ao gargalo de von Neumann, a troca de dados limitada (taxa de transfer\xc3\xaancia) entre a CPU e a mem\xc3\xb3ria em rela\xc3\xa7\xc3\xa3o \xc3\xa0 quantidade de mem\xc3\xb3ria. Na maioria dos computadores modernos, a troca de dados entre o processador e a mem\xc3\xb3ria \xc3\xa9 muito menor do que a taxa com que o processador pode trabalhar. Isso limita seriamente a velocidade eficaz de processamento, principalmente quando o processador \xc3\xa9 exigido para realizar o processamento de grandes quantidades de dados. A CPU \xc3\xa9 constantemente for\xc3\xa7ada a esperar por dados  que precisam ser transferidos para, ou a partir da, mem\xc3\xb3ria. Como a velocidade da CPU e o tamanho da mem\xc3\xb3ria t\xc3\xaam aumentado muito mais rapidamente que a taxa de transfer\xc3\xaancia entre eles, o gargalo se tornou mais um problema, um problema cuja gravidade aumenta com cada gera\xc3\xa7\xc3\xa3o de CPU._NEWLINE_O termo "gargalo de von Neumann" foi cunhado por John Backus em sua palestra Award 1977 ACM Turing. Segundo Backus:_NEWLINE_Certamente deve haver uma maneira menos primitiva de se fazer grandes altera\xc3\xa7\xc3\xb5es na mem\xc3\xb3ria, do que empurrando um grande n\xc3\xbamero de palavras, de um lado a outro, do gargalo de von Neumann. N\xc3\xa3o \xc3\xa9 somente um gargalo literal para o tr\xc3\xa1fego de dados, mas, o mais importante, \xc3\xa9 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 unidades conceituais maiores. Assim, a programa\xc3\xa7\xc3\xa3o \xc3\xa9 basicamente o planejamento e detalhamento do enorme tr\xc3\xa1fego de palavras atrav\xc3\xa9s do gargalo de von Neumann e grande parte desse tr\xc3\xa1fego n\xc3\xa3o diz respeito aos dados propriamente ditos, e sim a onde esses dados s\xc3\xa3o encontrados._NEWLINE_O problema de desempenho pode ser aliviado (at\xc3\xa9 certo ponto) por diversos mecanismos. Colocando uma mem\xc3\xb3ria  cache entre o processador e a mem\xc3\xb3ria principal, proporcionando caches separados com os caminhos de acesso separado para dados e instru\xc3\xa7\xc3\xb5es (a chamada arquitetura Harvard Modificada), utilizando um algor\xc3\xadtmo preditor de salto e l\xc3\xb3gica. O problema tamb\xc3\xa9m pode ser contornado usando um pouco de computa\xc3\xa7\xc3\xa3o paralela, por exemplo a arquitetura NUMA, esta abordagem \xc3\xa9 geralmente utilizada em supercomputadores.'