domingo, 14 de novembro de 2010

Modelo de Von Neumann

Modelo de Von Neumann


É o modelo de design da maioria dos computadores actuais.
Consiste num CPU, memória e periféricos de I/O. sendo que a memória contem programas (instruções) assim como dados. Ambos são representados como valores numéricos (bits). Cada instrução tem o respectivo opcode em binário.
Este tipo de organização da memória é denominado de stored-program.
Os primeiros computadores tinham programas "fixos" quer fosse por uma questão de simplicidade quer fosse por uma questão de treino.
calculadora de secretária - "Fixed program Computer", pois trata-se de um computador que foi
programado para um único fim: fazer cálculo matemático básico e não pode ser reprogramada facilmente.
Nos primeiros computadores quando era possível reprograma-los, este processo era muito manual porque envolvia bastante esforço mental e físico de quem o pretendia fazer.
O conceito de computador stored-program mudou tudo isso. O facto de se ter criado uma arquitectura com um conjunto de instruções e por se ter descrito a computação como uma série de instruções (programa), a máquina tornou-se muito mais flexível.
Devido ao facto de se tratar as instruções da mesma maneira como os dados, uma máquina do tipo storedprogram
pode facilmente alterar o programa, e pode faze-lo sob controlo do programa.("under program
control").
Uma máquina do tipo stored-program também permite aos programas modificarem-se durante a sua execução, com isto permitindo ao computador programar-se a si próprio.
No entanto, com a evolução da arquitectura estas funcionalidades foram postas de parte por vários motivos.
A possibilidade de tratar instruções da mesma forma que dados é o que torna os assemblers, compiladores e outras ferramentas de programação possíveis.
"Escrever programas que escrevem programas"
"on the fly compilation technology " -> programas que geram código - uma forma de o código se automodificar que continuou popular.


Defeitos do modelo de Von Neumann:
As modificações feitas pelos programas podem causar danos consideráveis, quer seja por acidente, quer seja por uma questão de design. Em alguns computadores com design do tipo stored-program, um programa mal escrito ou escrito com fins malignos pode provocar danos nele próprio, noutros programas, ou até no sistema operativo, podendo levar o computador a "crashar".
Esta possibilidade dos programas poderem criar e modificar outros programas é também frequentemente aproveitada por malware. Um overflow do buffer é um exemplo muito comum de uma "mal formação" de código. Software de malware pode usar o overflow do buffer para destruir a stack, reescrever o programa existente e posteriormente modificar outros ficheiros dos programas no sistema tendo em vista a posterior propagação do malware para outras máquinas.
Protecções na memória e outras formas de controlo de acessos podem ajudar a proteger contra modificações de programas quer seja de forma acidental ou com fins malignos.
1º Modelo com Arq.de Von Neumann - EDVAC - 1945
1º modelo a correr um programa guardado na memória - Manchester SSEM ("the Baby"). 21 Junho 1948
O principal defeito deste modelo:
A separação entre o CPU e a memória leva ao "von Neumann bottleneck", que consiste no baixo fluxo transferência de dados (throughput) entre o CPU e a memória comparada com a quantidade de memória.
Nas máquinas modernas, o throughtput é muito inferior à velocidade a que o CPU pode trabalhar. Este fenómeno afecta seriamente a velocidade de processamento quando o CPU tem de fazer processamento mínimo em grandes quantidades de dados.
O computador é continuamente forçado a esperar que dados vitais sejam transferidos para e da memória.
À medida que a velocidade do CPU e a quantidade de memória aumentaram muito mais depressa que o throughput entre eles, o bottleneck tornou-se num grande problema.
O impacto deste problema é reduzido através do uso de uma cache entre o CPU e a memória central, e pelo desenvolvimento de algoritmos de "branch predicition".



Sem comentários:

Enviar um comentário