Arquitectura de Harvard: Ejecución de Instrucciones y Jerarquía de Memoria


Ejecución de Instrucciones en la Arquitectura de Harvard

La ejecución de instrucciones máquina en un ordenador basado en la arquitectura de Harvard es muy similar a la ejecución de una arquitectura estándar. La única diferencia es que, en esta arquitectura, al tener una memoria para instrucciones y una para datos, se podría leer de ambas memorias simultáneamente (la instrucción y el dato). Asimismo, también podríamos leer la siguiente instrucción mientras que guardamos el dato resultante de la operación anterior. En ambos casos, se ganaría en velocidad.

Centrándonos en la respuesta de la pregunta formulada, pasaremos a describir las fases:

  1. La UC envía a la MP de instrucciones la dirección de la instrucción a ejecutar (y almacenada en el CP). En este momento, es muy complicado que podamos leer datos de la memoria, ya que hasta que la instrucción no sea decodificada en la UC, esta no podrá solicitar los datos necesarios (que estarán almacenados en la memoria de instrucciones).
  2. La UC recibe la instrucción, la analiza y, si fuese necesario, lee los operandos solicitándolos a la memoria principal de datos.
  3. La UC ordena realizar la operación sobre los operandos. Si lo requiere dicha instrucción, se puede guardar el dato en la memoria de datos. Pero dado que las instrucciones se almacenan en la otra memoria (la de instrucciones), al mismo tiempo se podrá leer la siguiente instrucción a ejecutar, con lo que directamente pasaríamos a la fase de análisis y ejecución de la instrucción.

Jerarquía de la Memoria

Las memorias se clasifican en 4 niveles si atendemos a su jerarquía:

  1. Registros internos del procesador

    Es el primer nivel. Se encuentran dentro del procesador. Son un banco de registros (normalmente en número reducido, 32-64), con una alta velocidad de acceso. El tamaño de dichos registros debe coincidir con el tamaño de la palabra de la CPU. Su uso es muy elevado dentro de los programas, ya que se utilizan de forma directa como operando de las instrucciones máquina.

  2. Memoria caché

    Son dispositivos semiconductores tipo SRAM, de alta velocidad, pero tamaño pequeño debido a su alto coste. Se sitúan entre la memoria caché y la memoria principal, pero para el procesador su funcionamiento es transparente. Es decir, la CPU solicita datos a la memoria principal, pero esas solicitudes pasan a través de la memoria caché, la cual, si dispone de esa información, la suministra en lugar de tener que enviar dicha solicitud a la memoria principal, aumentando de esta forma la velocidad efectiva de la memoria.

  3. Memoria principal

    Son dispositivos semiconductores tipo DRAM, con una velocidad más reducida que la SRAM, pero normalmente de un mayor tamaño. Normalmente no proporciona los datos de forma directa a la CPU, sino que los envía a la memoria caché que actúa como intermediario. Como características técnicas, citaremos que esta memoria requiere refresco dinámico para mantener la información.

  4. Memoria secundaria

    Son los discos duros y dispositivos de almacenamiento de alta capacidad. Se encarga de almacenar todo el código y los datos. Normalmente es una memoria no volátil, es decir, su información no desaparece al suprimir la alimentación, de gran capacidad y bajo coste, pero como inconveniente tiene su baja velocidad de acceso. A veces se utiliza para emular memoria virtual, pero si se utiliza mucho esta técnica, la velocidad efectiva del computador baja notablemente.

Ciclo de Vida del Software

El ciclo clásico de la ingeniería del software abarca 5 fases de desarrollo. Este ciclo es lineal (se pasa por todas las fases de forma secuencial) aunque puede volverse a cualquier fase anterior desde cualquier otra fase si esta no se realiza correctamente. Las fases son:

  1. Análisis

    En esta fase se establece el producto a desarrollar. Para ello, se especificarán los procesos y estructuras de datos a emplear en las fases posteriores. Debemos destacar que es muy importante una gran comunicación entre el usuario y el analista, y si esta fuera compleja, se podría aumentar la claridad sobre qué quiere el cliente mediante el desarrollo de algún prototipo del sistema.

  2. Diseño

    El objetivo es alcanzar una solución óptima y detallada para el posterior desarrollo de la aplicación. En esta fase se tendrán en cuenta ya los recursos físicos y lógicos del sistema. Para representar los algoritmos, utilizaremos cualquiera de las técnicas posibles (organigramas, ordinogramas, etc.) y toda esta información se documenta en el cuaderno de carga que será la guía a seguir para la fase siguiente.

  3. Codificación

    Aquí se traduce la información del cuaderno de carga a código en un determinado lenguaje de programación. El resultado son instrucciones ejecutables en el sistema deseado. En esta fase, deberán efectuarse también las pruebas necesarias para garantizar la calidad del producto y eliminar, por tanto, la máxima cantidad de errores posibles.

  4. Explotación

    Tras la fase anterior, pasaremos a implantar las aplicaciones en el entorno operativo o sistema físico en el que va a ser utilizado. Incluye una gran cantidad de tareas: instalación del software, pruebas globales, actualización de versión anterior, formación del usuario, etc.

  5. Mantenimiento

    Concluye el ciclo de vida y consiste en la realización de las correcciones necesarias para subsanar errores y deficiencias del producto desarrollado. Puede implicar el regreso a una fase anterior del ciclo de desarrollo.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *