Logo Studenta

Arquitectura_de_Von_Newman_y_Harvard - Mauricio axel 20

Vista previa del material en texto

Tecnológico nacional de México.
Instituto tecnológico de acapulco.
Ingeniería en sistemas computacionales.
Arquitectura de computadoras.
Unidad 1.- Arquitecturas de cómputo
- Arquitectura de Von Newman y Arquitectura de Harvard
Profesor. - Felipe Sánchez abarca.
Alumnos. -
Sandoval Navarrete André Junior - 18320991
López García Roberto - 18320905
Gonzales Martínez Kevin Brandon - 18320871
López Anselmo mauricio Axel - 18320904
Domingo 1 de noviembre de 2020
Índice de contenido
Tema - Arquitectura de computadoras						Pág.
Arquitectura de Von Newman…………………………………………………….1
Mejora en la arquitectura………………………………………………………….1
Origen……………………………………………………………………………..1
Modelo…………………………………………………………………………….2
¿Cómo funciona la arquitectura von Neumann?......................................................4
Ventajas y desventajas…………………………………………………………….5
Arquitectura de Harvard…………………………………………………………..6
¿Cómo funciona la arquitectura Harvard?...............................................................7
Contraste con arquitecturas von Neumann………………………………………..9
Diseño externo vs interno…………………………………………………………9
Usos modernos de la arquitectura Harvard………………………………………..9
Ventajas y desventajas…………………………………………………………….10
Diferencias…………………………………………………………………………12
Referencias………………………………………………………………………..13
ARQUITECTURA VON NEUMANN
En esta arquitectura se observa que las computadoras utilizan el mismo dispositivo de almacenamiento para datos e instrucciones conectados mediante únicos bus de datos y bus de direcciones. Actualmente las computadoras de uso general utilizan esta arquitectura. 
Tienen el inconveniente que solamente puede llevar datos o instrucciones en un determinado momento, por lo que no es muy conveniente para sistemas que usan pipelines.
Mejora en la arquitectura
Debido a que no se puede acceder a la memoria de los datos y a la del programa a la vez, la arquitectura von Neumann es propensa a cuellos de botella y a que se debilite el rendimiento del computador. Esto es lo que se conoce como el cuello de botella de von Neumann, donde se afecta la potencia, el rendimiento y el costo.
Uno de los cambios realizados implicó reconsiderar la cantidad de datos que se debían enviar realmente a la memoria y la cantidad que se podría almacenar localmente.
Origen
En 1945, después de la Segunda Guerra Mundial, dos científicos plantearon de forma autónoma cómo construir una computadora más maleable. Uno de ellos fue el matemático Alan Turing y el otro fue el científico de igual talento John Von Neumann.
El británico Alan Turing había estado involucrado en descifrar el código Enigma en Bletchley Park, usando la computadora ‘Coloso’. Por otro lado, el estadounidense John Von Neumann había estado trabajando en el Proyecto Manhattan para construir la primera bomba atómica, que necesitaba una gran cantidad de cálculos manuales.
Hasta ese momento, las computadoras en tiempo de guerra se “programaban” más o menos reconectando toda la máquina para poder llevar a cabo una tarea diferente.
Por ejemplo, la primera computadora llamada ENIAC tardaba tres semanas en reconectarse para hacer un cálculo diferente.
El nuevo concepto consistía en que en una memoria no solo debían almacenarse los datos, sino que también el programa que procesaba esos datos debería estar almacenado en la misma memoria.
Esta arquitectura con el programa almacenado internamente se conoce comúnmente como arquitectura ‘Von Neumann’.
Modelo
El fundamento principal del modelo de Von Neumann es el pensamiento que el programa esté guardado internamente en una máquina. En la unidad de memoria se encuentran los datos y también el código del programa. El diseño de la arquitectura consiste en:
Unidad central de procesamiento (CPU)
Es el circuito digital que se encarga de ejecutar las instrucciones de un programa. Se le denomina también procesador. La CPU contiene la ALU, la unidad de control y un conjunto de registros.
Unidad aritmética lógica
Esta parte de la arquitectura está involucrada únicamente en la realización de operaciones aritméticas y lógicas sobre los datos.
Estarán disponibles los cálculos habituales de sumar, multiplicar, dividir y restar, pero también estarán disponibles las comparaciones de datos como ‘mayor que’, ‘menor que’, ‘igual a’.
Unidad de control
Controla el funcionamiento de la ALU, la memoria y los dispositivos de entrada/salida de la computadora, indicándoles cómo actuar ante las instrucciones del programa que acaba de leer desde la memoria.
La unidad de control gestionará el proceso de mover los datos y programas desde y hacia la memoria. También se ocupará de ejecutar las instrucciones del programa, una a la vez o secuencialmente. Esto incluye la idea de un registro para contener los valores intermedios.
Registros
Son áreas de almacenamiento de alta velocidad en la CPU. Todos los datos deben almacenarse en un registro antes de poder procesarse.
El registro de direcciones de memoria contiene la ubicación de memoria de los datos a los que se debe acceder. El registro de datos de memoria contiene los datos que se transfieren a la memoria.
Memoria
La computadora tendrá una memoria que puede contener datos, así como el programa que procesa esos datos. En las computadoras modernas esta memoria es la RAM o memoria principal. Esta memoria es rápida y accesible directamente por la CPU.
La RAM se divide en celdas. Cada celda consta de una dirección y su contenido. La dirección identificará de forma única cada ubicación en la memoria.
Entrada-salida
Esta arquitectura permite plasmar la idea que una persona necesita interactuar con la máquina, a través de los dispositivos de entrada-salida.
Bus
La información debe fluir entre las diferentes partes de la computadora. En una computadora con la arquitectura von Neumann, la información se transmite de un dispositivo a otro a lo largo de un bus, conectando todas las unidades de la CPU a la memoria principal.
El bus de direcciones transporta las direcciones de los datos, pero no los datos, entre el procesador y la memoria.
El bus de datos transporta los datos entre el procesador, la memoria y los dispositivos de entrada-salida.
¿Cómo funciona la arquitectura von Neumann?
El principio relevante de la arquitectura von Neumann es que en la memoria se almacenan tanto los datos como las instrucciones y se tratan de igual manera, lo que significa que las instrucciones y los datos son direccionales.
Funciona usando cuatro simples pasos: buscar, decodificar, ejecutar, almacenar, llamado el “Ciclo de la máquina”.
Las instrucciones son obtenidas por la CPU desde la memoria. La CPU luego decodifica y ejecuta estas instrucciones. El resultado es almacenado de nuevo en la memoria luego que se complete el ciclo de ejecución de las instrucciones.
Buscar
En este paso se obtienen las instrucciones desde la RAM y se las coloca en la memoria caché para que la unidad de control acceda a ellas.
Decodificar
La unidad de control decodifica las instrucciones de tal manera que la unidad aritmética lógica pueda comprenderlas, y luego las envía a la unidad aritmética lógica.
Ejecutar
La unidad lógica aritmética ejecuta las instrucciones y envía el resultado de nuevo a la memoria caché.
Almacenar
Una vez que el contador del programa indica detenerse, se descarga el resultado final a la memoria principal.
Cuello de botella
Si una máquina Von Neumann desea realizar una operación con datos en la memoria, estos se tienen que trasladar a través del bus hacia la CPU. 
Después de realizar el cálculo, se necesita mover el resultado a la memoria a través del mismo bus.
El cuello de botella de Von Neumann acontece cuando los datos que se introducen o se sacan de la memoria deben hacer tiempo mientras se completa la operación actual de la memoria.
Es decir, si el procesador acaba de completar un cálculo y está listo para realizar el siguiente tiene que escribir en la memoria el cálculo terminado, que ocupa el bus, antes de poder recuperar nuevos datos de la memoria, que también usan el mismo bus.
Este cuello de botellacon el tiempo ha venido empeorando, porque los microprocesadores han aumentado su velocidad y por otro lado la memoria no ha avanzado tan rápidamente.
Ventajas
– La unidad de control recupera los datos y las instrucciones de la misma manera desde la memoria. Por tanto, el diseño y desarrollo de la unidad de control está simplificado, siendo más barato y rápido.
– Los datos de los dispositivos de entrada/salida y de la memoria principal se recuperan de la misma manera.
– La organización de la memoria es realizada por los programadores, lo que permite utilizar toda la capacidad de la memoria.
– Manejar un solo bloque de memoria es más simple y fácil de lograr.
– El diseño del chip del microcontrolador es mucho más sencillo, ya que se accederá a una solo memoria. Lo más importante del microcontrolador es el acceso a la RAM y en la arquitectura von Neumann esta se podrá usar tanto para almacenar datos como para almacenar instrucciones del programa.
La principal ventaja de tener una misma memoria para los programas y los datos es que los programas se pueden procesar como si fueran datos. En otras palabras, se pueden escribir programas cuyos datos sean otros programas.
Un programa cuyos datos son otro programa no es más que un sistema operativo. De hecho, si no se permitieran los programas y los datos en el mismo espacio de memoria, como sí sucede con la arquitectura von Neumann, nunca se hubieran podido desarrollar los sistemas operativos.
Desventajas
Aunque las ventajas superan con creces las desventajas, el problema es que solo hay un bus que conecta la memoria con el procesador, por lo que solo se puede obtener una instrucción o un elemento de datos a la vez.
Esto significa que el procesador puede tener que esperar más tiempo para que lleguen los datos o las instrucciones. 
Esto se conoce como cuello de botella de von Neumann. 
Como la CPU es mucho más rápida que el bus de datos, esto significa que a menudo permanezca inactiva.
– Por el procesamiento secuencial de las instrucciones no se permite la implementación paralela del programa.
– Al compartir la memoria existe el riesgo que se escriba una instrucción sobre otra debido a un error en el programa, haciendo que se bloquee el sistema.
– Algunos programas con defectos no pueden liberar la memoria cuando terminan con ella, lo que podría causar que se bloquee la computadora debido a que la memoria se haga insuficiente.
Arquitectura de Harvard.
La arquitectura de Harvard es una arquitectura de computadora con pistas de almacenamiento y de señal físicamente separadas para las instrucciones y para los datos. El término proviene de la computadora Harvard Mark I basada en relés, que almacenaba las instrucciones sobre cintas perforadas (de 24 bits de ancho) y los datos en interruptores electromecánicos. 
Estas primeras máquinas tenían almacenamiento de datos totalmente contenido dentro la unidad central de proceso, y no proporcionaban acceso al almacenamiento de instrucciones como datos. Los programas necesitaban ser cargados por un operador; el procesador no podría arrancar por sí mismo.
En la actualidad la mayoría de los procesadores implementan dichas vías de señales separadas por motivos de rendimiento, pero en realidad implementan una arquitectura Harvard modificada, para que puedan soportar tareas tales como la carga de un programa desde una unidad de disco como datos para su posterior ejecución.
¿Cómo funciona la arquitectura Harvard?
La arquitectura Harvard tiene áreas diferentes de direcciones de memoria para el programa y para los datos.
Esto trae como consecuencia la capacidad de diseñar un circuito de tal manera que se pueda usar un bus y un circuito de control para manejar el flujo de información desde la memoria del programa y otro separado para manejar el flujo de información hacia la memoria de datos.
El uso de buses separados significa que es posible que la recuperación y ejecución de un programa se realice sin que haya ninguna interrupción por alguna transferencia ocasional de datos a la memoria de datos.
Por ejemplo, en una versión simple de esta arquitectura, la unidad de recuperación del programa podría estar ocupada recuperando la siguiente instrucción en la secuencia del programa y en paralelo realizar una operación de transferencia de datos que pudieron haber sido parte de la anterior instrucción del programa.
En este nivel la arquitectura Harvard tiene una limitación, ya que generalmente no es posible colocar el código del programa en la memoria de datos y ejecutarlo desde allí.
Adiciones en la arquitectura
A la forma simple de la arquitectura Harvard se pueden agregar muchas variantes existentes de mayor complicación.
Una adición común es agregar un almacenamiento caché de instrucciones al bus de datos del programa, que le permita a la unidad de ejecución de instrucciones un acceso más rápido al siguiente paso del programa, sin tener que ir a una memoria más lenta para obtener el paso del programa cada vez que se requiera.
Direcciones de memoria
Una computadora con arquitectura Harvard tiene distintas áreas de direcciones de datos y de instrucciones: la dirección uno de instrucciones no es la misma área que la dirección uno de datos.
La dirección uno de instrucciones podría contener un valor de veinticuatro bits, mientras que la dirección uno de datos podría indicar un byte de ocho bits, que no es parte de ese valor de veinticuatro bits.
Sistema de memoria
Como se tiene un área de memoria separado para las instrucciones y los datos, separando tanto las señales como el almacenamiento en memoria del código y los datos, esto hace posible acceder simultáneamente a cada uno de los sistemas de memoria.
Contraste con arquitecturas von Neumann
Bajo arquitectura de von Neumann pura, la CPU puede estar bien leyendo una instrucción o leyendo/escribiendo datos desde/hacia la memoria, pero ambos procesos no pueden ocurrir al mismo tiempo, ya que las instrucciones y datos usan el mismo sistema de buses. En una computadora que utiliza la arquitectura Harvard, la CPU puede tanto leer una instrucción como realizar un acceso a la memoria de datos al mismo tiempo, incluso sin una memoria caché. En consecuencia, una arquitectura de computadores Harvard puede ser más rápida para un circuito complejo, debido a que la instrucción obtiene acceso a datos y no compite por una única vía de memoria.
Además, las características de las dos memorias son distintas, por lo que la dirección del espacio cero de instrucciones no es lo mismo que la dirección del espacio cero de datos: La dirección cero de la memoria de instrucciones podría identificar un valor de veinticuatro bits, mientras que la dirección cero de la memoria de datos cero podría indicar un valor de ocho bits que no forma parte de ese valor de veinticuatro bits.
Diseño externo vs interno
Los diseños modernos de chips de CPU de alto rendimiento incorporan tanto aspectos de la arquitectura Harvard como de la von Neumann. 
En particular, está muy difundida la versión "caché split" de la arquitectura Harvard modificada. 
La memoria caché de la CPU se divide en una caché de instrucciones y una de datos. La arquitectura Harvard se utiliza cuando la CPU accede a la memoria caché. No obstante, en el caso de un fallo de caché, los datos son recuperados de la memoria principal, que no se divide formalmente en secciones separadas de instrucción y datos, aunque también pueda tener los controladores de memoria separados utilizados para el acceso simultáneo a la memoria RAM, ROM y memoria flash (NOR).
Así, aunque una arquitectura de von Neumann esté visible en algunos contextos, como cuando los datos y el código vienen por el mismo controlador de memoria, la implementación de hardware gana las eficiencias de la arquitectura de Harvard para accesos a caché y en parte para algunos accesos a la memoria principal.
Adicionalmente, las CPU suelen tener buffers de escritura que le permiten proceder después de escribir en regiones no almacenadas en caché. De este modo, se evidencia la naturaleza von Neumann dela memoria cuando la CPU escribe instrucciones como datos y el software debe garantizar que las cachés (datos e instrucciones) y la escritura de búfer están sincronizadas, antes de tratar de ejecutar esas instrucciones recién escritas.
Usos modernos de la arquitectura Harvard
La principal ventaja de la arquitectura Harvard pura
 — acceso simultáneo a más de una memoria del sistema—
se ha reducido por procesadores Harvard modificados utilizando sistemas de caché de CPU modernos. 
Las máquinas de arquitectura Harvard relativamente puras se utilizan principalmente en aplicaciones cuyas compensaciones, como los costes y el ahorro de energía de la omisión de caché, superan las desventajas de programación que vienen con tener espacios de direcciones de código y datos diferentes.
En general, los procesadores de señal digital (DSPs) ejecutan pequeños algoritmos altamente optimizados de procesamiento de audio o vídeo. Evitan cachés porque su comportamiento debe ser extremadamente reproducible. Las dificultades de lidiar con múltiples espacios de direcciones son una preocupación secundaria a la velocidad de ejecución. 
En consecuencia, algunos DSPs cuentan con múltiples memorias de datos en distintos espacios de direcciones para facilitar tanto el procesamiento SIMD como el VLIW. A modo de ejemplo, los procesadores Texas Instruments TMS320 C55x, cuentan con varios buses de datos en paralelo (dos de escritura, tres de lectura) y un bus de instrucciones.
Los microcontroladores se caracterizan por tener pequeñas cantidades de programa (memoria flash) y memoria de datos (SRAM), sin cache, y aprovechan la arquitectura de Harvard para acelerar el procesamiento por medio de acceso simultáneo a instrucciones y a datos. 
El almacenamiento separado significa que las memorias pueden diferir en anchos de bit, por ejemplo, utilizando instrucciones de 16 bits de ancho y los datos de 8 bits de ancho. 
Esto también significa que se pueden traer instrucciones antes de que se necesiten (prefetching) mientras que en paralelo se realizan otras actividades. Entre los ejemplos se incluyen el AVR de Atmel Corp y la PIC de Microchip Technology, Inc.
Incluso en estos casos, es común emplear instrucciones especiales con el fin de acceder a la memoria del programa como si fuera datos para la creación de tablas de solo lectura o para reprogramación, lo que los hace procesadores de arquitectura Harvard modificada.
Ventajas
– Hay menos posibilidades de corrupción en la transmisión, ya que los datos y las instrucciones se transfieren a través de diferentes buses.
– Se accede a los datos y a las instrucciones de la misma manera.
– Permite diferentes medios de almacenamiento para las instrucciones y los datos. Por ejemplo, se pueden poner las instrucciones en una ROM económica y los datos en una RAM costosa.
– Las dos memorias pueden usar diferentes tamaños de celda, con lo cual se hace un uso efectivo de los recursos.
– Se tiene un mayor ancho de banda de memoria, que es más predecible por tener memorias separadas para las instrucciones y datos.
Nivel de protección
En sistemas que no tengan una unidad de administración de memoria ofrece un nivel de protección adicional, ya que no se podrá comenzar a ejecutar datos como si fuera código, lo que expondría al sistema a numerosos problemas, tal como el desbordamiento de búfer.
Es por eso que es popular con los sistemas integrados pequeños, como el microondas o un reloj.
Mayor velocidad
La arquitectura Harvard puede leer una instrucción y también realizar el acceso a la memoria de datos simultáneamente a una velocidad rápida.
Ofrece un mayor rendimiento, ya que permite la obtención simultánea de datos e instrucciones por guardarse en memorias separadas y viajar a través de buses diferentes.
Una arquitectura Harvard generalmente ayudará a que una computadora con cierto nivel de complejidad funcione más rápido que una arquitectura Von Neumann, siempre que no sea necesario compartir recursos entre las memorias de datos y del código.
Si las limitaciones de pines u otros factores obligan al uso de un solo bus para acceder a ambos espacios de memoria, es probable que tales ventajas se anulen en gran medida.
Desventajas
Mayor complejidad y costo
El problema con la arquitectura Harvard es su gran complejidad y costo debido a que, en lugar de un bus de datos, ahora se necesitan dos.
La producción de una computadora con dos buses es mucho más costosa y lleva más tiempo fabricarla. Requiere una unidad de control para dos buses, que es más complicada y cuyo desarrollo es costoso y necesita más tiempo.
Esto significa una implementación más compleja para los fabricantes. Requiere más pines en la CPU, una tarjeta madre más compleja y tener que duplicar los chips de la RAM, así como un diseño de caché más complejo.
Poca utilización
La arquitectura Harvard no se usa mucho, por lo que es más difícil de implementar. Es por eso que rara vez se usa fuera de la CPU.
Sin embargo, esta arquitectura a veces se utiliza dentro de la CPU para manejar sus cachés.
Mal uso del espacio de memoria
Cuando hay espacio libre en la memoria de datos no se puede utilizar para almacenar instrucciones y viceversa.
Por tanto, las memorias particulares que se dedican a cada uno de ellos deben hacerse cuidadosamente equilibradas en su fabricación.
Diferencias
El diseño de una arquitectura Von Neumann es más simple que la arquitectura Harvard más moderna, que también es un sistema de programa almacenado, pero tiene un conjunto dedicado de direcciones y buses de datos para leer datos desde memoria y escribir datos en la misma, y otro conjunto de direcciones y buses de datos para ir a buscar instrucciones
Referencias
1.	List Differences (2019). Difference Between Von Neumann and Harvard Architecture? Tomado de: listdifferences.com.
2.	PC Magazine (2019). Definition of: Harvard architecture. Tomado de: pcmag.com.
3.	Techopedia (2019). Harvard Architecture. Tomado de: techopedia.com.
4.	Scott Thornton (2018). What’s the difference between Von-Neumann and Harvard architectures? Microcontroller Tips. Tomado de: microcontrollertips.com.
5.	Wikipedia, the free encyclopedia (2019). Harvard architecture. Tomado de: en.wikipedia.org.
6.	The Crazy Programmer (2019). Difference between Von Neumann and Harvard Architecture. Tomado de: thecrazyprogrammer.com.
7.	Semiconductor Engineering (2019). Von Neumann Architecture. Tomado de: semiengineering.com
8.	Scott Thornton (2018). What’s the difference between Von-Neumann and Harvard architectures? Microcontroller Tips. Tomado de: microcontrollertips.com.
9.	Teach ICT (2019). The Von Neumann machine. Tomado de: teach-ict.com.
10.	Computer Science (2019). Von Neumann Architecture. Tomado de: computerscience.gcse.guru.
11.	Learn IT with Mr C (2019). The Von Neumann machine. Tomado de: learnitwithmrc.co.uk.
12.	Solid State Media (2017). How do computers work? The Von Neumann Architecture. Tomado de: solidstateblog.com.

Otros materiales