Tarjeta perforada
Una tarjeta perforada es un trozo de papel rígido que contiene datos digitales representados por la presencia o ausencia de agujeros en posiciones... (leer más)
La arquitectura de Harvard es una arquitectura informática con vías de almacenamiento y señales separadas para instrucciones y datos. Contrasta con la arquitectura de von Neumann, donde las instrucciones y los datos del programa comparten la misma memoria y rutas.
El término se originó en la computadora basada en relés Harvard Mark I, que almacenaba instrucciones en cinta perforada (24 bits de ancho) y datos en contadores electromecánicos. Estas primeras máquinas tenían almacenamiento de datos completamente contenido dentro de la unidad central de procesamiento y no proporcionaban acceso al almacenamiento de instrucciones como datos. Los programas debían ser cargados por un operador; el procesador no pudo inicializarse.
Al usuario le parece que los procesadores modernos son sistemas con arquitecturas de von Neumann, con el código del programa almacenado en la misma memoria principal que los datos. Por razones de rendimiento, internamente y en gran medida invisibles para el usuario, la mayoría de los diseños tienen memorias caché de procesador separadas para las instrucciones y los datos, con rutas separadas hacia el procesador para cada uno. Esta es una forma de lo que se conoce como la arquitectura Harvard modificada.
La arquitectura de Harvard se divide histórica y tradicionalmente en dos espacios de direcciones, pero tener tres, es decir, dos adicionales (y se accede a todos en cada ciclo) también se hace, aunque es raro.
En una arquitectura Harvard, no hay necesidad de hacer que las dos memorias compartan características. En particular, el ancho de palabra, el tiempo, la tecnología de implementación y la estructura de direcciones de memoria pueden diferir. En algunos sistemas, las instrucciones para tareas preprogramadas se pueden almacenar en la memoria de solo lectura, mientras que la memoria de datos generalmente requiere memoria de lectura y escritura. En algunos sistemas, hay mucha más memoria de instrucciones que memoria de datos, por lo que las direcciones de instrucciones son más anchas que las direcciones de datos.
En un sistema con una arquitectura de von Neumann pura, las instrucciones y los datos se almacenan en la misma memoria, por lo que las instrucciones se obtienen a través de la misma ruta de datos utilizada para obtener los datos. Esto significa que una CPU no puede leer simultáneamente una instrucción y leer o escribir datos desde o hacia la memoria. En una computadora que utiliza la arquitectura Harvard, la CPU puede leer una instrucción y realizar un acceso a la memoria de datos al mismo tiempo, incluso sin caché. Por lo tanto, una computadora con arquitectura Harvard puede ser más rápida para una complejidad de circuito determinada porque las búsquedas de instrucciones y el acceso a datos no compiten por una sola ruta de memoria.
Además, una máquina con arquitectura Harvard tiene códigos distintos y espacios de dirección de datos: la dirección de instrucción cero no es lo mismo que la dirección de datos cero. La dirección de instrucción cero podría identificar un valor de veinticuatro bits, mientras que la dirección de datos cero podría indicar un byte de ocho bits que no forma parte de ese valor de veinticuatro bits.
Una máquina con arquitectura Harvard modificada es muy parecida a una máquina con arquitectura Harvard, pero relaja la separación estricta entre instrucciones y datos, al mismo tiempo que permite que la CPU acceda simultáneamente a dos (o más) buses de memoria. La modificación más común incluye cachés de datos e instrucciones separadas respaldadas por un espacio de direcciones común. Si bien la CPU se ejecuta desde la memoria caché, actúa como una máquina Harvard pura. Al acceder a la memoria de respaldo, actúa como una máquina de von Neumann (donde el código se puede mover como si fueran datos, lo cual es una técnica poderosa). Esta modificación está muy extendida en los procesadores modernos, como la arquitectura ARM, Power ISA y los procesadores x86. A veces se le llama vagamente arquitectura de Harvard, pasando por alto el hecho de que en realidad está "modificada".
Otra modificación proporciona un camino entre la memoria de instrucciones (como ROM o memoria flash) y la CPU para permitir que las palabras de la memoria de instrucciones se traten como datos de solo lectura. Esta técnica se utiliza en algunos microcontroladores, incluido el Atmel AVR. Esto permite acceder a datos constantes, como cadenas de texto o tablas de funciones, sin tener que copiarlos primero en la memoria de datos, preservando la memoria de datos escasa (y que consume mucha energía) para las variables de lectura/escritura. Se proporcionan instrucciones especiales en lenguaje de máquina para leer datos de la memoria de instrucciones, o se puede acceder a la memoria de instrucciones mediante una interfaz periférica. (Esto es distinto de las instrucciones que en sí mismas incorporan datos constantes, aunque para las constantes individuales los dos mecanismos pueden sustituirse entre sí).
En los últimos años, la velocidad de la CPU ha crecido muchas veces en comparación con la velocidad de acceso a la memoria principal. Se debe tener cuidado para reducir la cantidad de veces que se accede a la memoria principal para mantener el rendimiento. Si, por ejemplo, cada instrucción que se ejecuta en la CPU requiere acceso a la memoria, la computadora no gana nada con el aumento de la velocidad de la CPU, un problema conocido como límite de memoria.
Es posible crear una memoria extremadamente rápida, pero esto solo es práctico para pequeñas cantidades de memoria por razones de costo, energía y enrutamiento de la señal. La solución es proporcionar una pequeña cantidad de memoria muy rápida conocida como caché de CPU que contiene los datos a los que se accedió recientemente. Siempre que los datos que necesita la CPU estén en la memoria caché, el rendimiento es mucho mayor que cuando la CPU tiene que obtener los datos de la memoria principal. Sin embargo, por otro lado, aún puede estar limitado a almacenar programas o datos repetitivos y aún tiene una limitación de tamaño de almacenamiento y otros problemas potenciales asociados con él.
Los diseños modernos de chips de CPU de alto rendimiento incorporan aspectos de la arquitectura Harvard y von Neumann. En particular, la "caché dividida" La versión modificada de la arquitectura de Harvard es muy común. La memoria caché de la CPU se divide en una caché de instrucciones y una caché de datos. La arquitectura Harvard se utiliza cuando la CPU accede a la memoria caché. Sin embargo, en el caso de una pérdida de caché, los datos se recuperan de la memoria principal, que no está formalmente dividida en secciones separadas de instrucciones y datos, aunque es posible que tenga controladores de memoria separados que se usen para el acceso simultáneo a RAM, ROM y (NOR).) memoria flash.
Por lo tanto, mientras que una arquitectura de von Neumann es visible en algunos contextos, como cuando los datos y el código pasan por el mismo controlador de memoria, la implementación del hardware obtiene la eficiencia de la arquitectura de Harvard para los accesos a la memoria caché y al menos algunos accesos a la memoria principal.
Además, las CPU a menudo tienen búferes de escritura que permiten que las CPU continúen después de escribir en regiones no almacenadas en caché. La naturaleza de von Neumann de la memoria es entonces visible cuando la CPU escribe las instrucciones como datos y el software debe garantizar que los cachés (datos e instrucciones) y el búfer de escritura estén sincronizados antes de intentar ejecutar esas instrucciones recién escritas.
La principal ventaja de la arquitectura pura de Harvard (acceso simultáneo a más de un sistema de memoria) se ha reducido mediante procesadores Harvard modificados que utilizan sistemas modernos de caché de CPU. Las máquinas con arquitectura Harvard relativamente pura se utilizan principalmente en aplicaciones en las que las ventajas y desventajas, como el ahorro de costos y energía al omitir cachés, superan las penalizaciones de programación al presentar espacios de dirección de datos y códigos distintos.
Incluso en estos casos, es común emplear instrucciones especiales para acceder a la memoria del programa como si fueran datos para tablas de solo lectura o para reprogramación; esos procesadores son procesadores de arquitectura Harvard modificados.
Una tarjeta perforada es un trozo de papel rígido que contiene datos digitales representados por la presencia o ausencia de agujeros en posiciones... (leer más)
En la terminología informática y de telecomunicaciones basadas en máquinas, un carácter es una unidad de información que corresponde aproximadamente a un... (leer más)
En informática, un proceso es la instancia de un programa informático que está siendo ejecutado por uno o varios subprocesos. Hay muchos modelos de... (leer más)