Optimización del Rendimiento en Sistemas Informáticos: Segmentación y Jerarquía de Memoria

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,73 KB

Segmentación (Pipelining)

La segmentación, o pipelining, es una técnica que mejora el rendimiento permitiendo que se procesen nuevas entradas antes de que las anteriores hayan terminado. Funciona como una tubería, donde cada instrucción se divide en etapas o microoperaciones de igual duración que se pueden ejecutar en paralelo.

Etapas Típicas de la Segmentación

  • Captación (Fetch)
  • Decodificación de la instrucción
  • Cálculo de la dirección de los operandos
  • Captación de los operandos
  • Ejecución de la instrucción
  • Escritura del operando (resultado)

Jerarquía de Memoria: Optimización y Gestión

Objetivo de la Gestión de la Jerarquía de Memoria

  • Optimizar el uso de la memoria.
  • Proporcionar al usuario la sensación de que la memoria tiene:
    • El tiempo de acceso del dispositivo más rápido.
    • Una capacidad como la del sistema de mayor tamaño.
    • Un coste por byte como el del sistema más económico.

Para lograr esto, la mayoría de los accesos a la información deben realizarse en los niveles más rápidos de la jerarquía (los más cercanos a la CPU).

Niveles Gestionados en la Jerarquía de Memoria

  • La gestión se centra principalmente en los niveles 1 (caché), 2 (memoria principal) y 3 (discos duros).
  • Los registros (nivel 0) son asignados por el compilador durante la compilación.
  • El nivel 4 (almacenamiento masivo) se utiliza generalmente para copias de seguridad.
  • La gestión de la memoria caché (MC) controla la transferencia de información entre la MC y la memoria principal (MP). Esto se realiza, por lo general, mediante hardware, a través de la Unidad de Gestión de Memoria (MMU).
  • La gestión de la memoria virtual controla la transferencia de información entre la MP y la memoria secundaria (disco duro). Esto se lleva a cabo mediante la MMU y el sistema operativo (SO).

Principios Fundamentales de la Jerarquía de Memoria

Inclusión

Cualquier información almacenada en un nivel inferior debe encontrarse también en los niveles superiores.

Coherencia

Las copias de una misma información existentes en los diferentes niveles deben ser consistentes. Si un bloque de información se modifica en un nivel, debe actualizarse en los niveles superiores. Existen dos métodos principales para la actualización:

  • Escritura directa (write-through o copy back): Cuando un bloque se modifica en un nivel, se modifica inmediatamente en el nivel superior.
  • Post-escritura (write-back): La actualización se retrasa hasta que el bloque modificado es reemplazado.

Localidad

Las referencias a memoria generadas por la CPU tienden a agruparse tanto en el tiempo como en el espacio.

  • Localidad temporal: Las direcciones de memoria referenciadas recientemente tienen una alta probabilidad de ser referenciadas de nuevo en un futuro próximo. Ejemplos: bucles, accesos a pilas, subrutinas.
  • Localidad espacial: Existe una tendencia a referenciar elementos de memoria cercanos a los últimos elementos referenciados. Ejemplos: arrays, programas secuenciales, variables locales de subrutinas.

Ciclos de Memoria

Ciclo de Lectura

Tiempo de acceso: Tiempo máximo que transcurre desde que se activan las líneas de dirección hasta que se obtiene una salida estable en las líneas de datos.

Ciclo de Escritura

Tiempo de establecimiento de los datos: Tiempo mínimo que los datos deben permanecer estables en el bus antes de la desactivación de las señales de control (CS y/o WE).

Políticas de Gestión de la Caché

Política de Sustitución (Reemplazo)

Determina qué bloque de la caché se reemplaza cuando se necesita espacio para un nuevo bloque.

  • Basadas en estadística:
    • LRU (Least Recently Used): Reemplaza el bloque menos recientemente utilizado.
    • LFU (Least Frequently Used): Reemplaza el bloque menos frecuentemente utilizado.
  • No basadas en estadística:
    • Random: Selección aleatoria.
    • FIFO (First-In, First-Out): Reemplaza el bloque que se cargó primero.

Políticas de Actualización (Escritura)

Determinan cuándo se escriben las modificaciones de la caché en la memoria principal.

  • Escritura Inmediata (write-through): Las escrituras se realizan simultáneamente en la caché y en la memoria principal. No hay incoherencia, pero puede generar una sobrecarga de tiempo y tráfico.
  • Escritura Diferida (copy-back): Las escrituras se realizan solo en la caché. La escritura en la memoria principal se retrasa hasta que el bloque modificado se reemplaza. Es más rápida y genera menos tráfico, pero puede haber incoherencia temporal.

Caché Compartida vs. Caché Separada

  • Compartida: Una única caché para instrucciones y datos. Ofrece un equilibrio automático entre instrucciones y datos, lo que puede resultar en una mayor tasa de aciertos. Es más simple de diseñar e implementar.
  • Separadas (Arquitectura Harvard, como en el Pentium L1): Cachés separadas para instrucciones y datos. En procesadores con prefetching y pipeline, permite el acceso a datos mientras se extrae la siguiente instrucción, mejorando el rendimiento.

Entradas relacionadas: