viernes, 14 de diciembre de 2012

Arquitecturas Harvard y Princeton-Von Neumann



En el mundo de las computadoras existen dos vías de aproximación a cómo se relacionan las CPUs con las instrucciones y los datos.


El primer procedimiento consiste en separar ambas informaciones, las cuales usan buses distintos, pudiendo en ese caso acceder simultáneamente la CPU a ambas. Este diseño recibe el nombre de arquitectura Harvard, por la computadora Harvard Mk.1 que fue la primera en implementarlo.














Si bien en principio es el sistema más rápido, tiene varios inconvenientes: la frecuencia de actividad en ambos buses debe ser aproximadamente idéntica para optimizar el rendimiento, y las instrucciones suelen estar almacenadas en formatos de difícil modificación, además de ser los programas casi incapaces de adaptar su funcionamiento a cambios internos o externos en su estado. No obstante, en una versión modificada, es la arquitectura primaria de todos aquellos componentes electrónicos e informáticos que precisan de realizar con rapidez y eficacia tareas siempre similares, como por ejemplo las videocámaras digitales, las tarjetas de sonido de los ordenadores, unidades de memoria cache, etc.


La lógica más extendida en el diseño de CPUs para computadoras, por contra, considera tanto a los datos como a las instrucciones una misma cosa (las instrucciones, los programas, no dejan de ser datos almacenables), por lo que comparten un único bus para su transmisión y un único espacio de almacenamiento.



Esta aproximación recibe el nombre de arquitectura Princeton o Von Neumann, por ser el matemático John von Neumann, entre otros, el primer proponente de la misma. Al estar ambos grupos de información limitados a una única vía de contacto con la CPU, ésta no puede actuar simultáneamente sobre ambos, con el resultado de ser cualquier proceso, teóricamente, más lento siempre que para un procesador Hardvard de similares prestaciones; peor aún, con el incremento de las velocidades de los procesadores muy por encima de las de los buses de memoria, la capacidad de una máquina con arquitectura Von Neumann se ve constreñida por un "cuello de botella" (bottleneck). A cambio, la versatilidad del concepto de integración de instrucciones y datos permite no sólo que se puedan realizar mayor variedad de tareas, sino también que los programas puedan adaptarse y "cambiar" a medida que van avanzando en su ejecución.