Sistemas Multiprocesador, Multicomputador y Arquitecturas de Procesadores
Clasificado en Informática
Escrito el en español con un tamaño de 4,74 KB
Sistemas Multiprocesador
Sistemas multiprocesador: No hay múltiples copias de página (solo hay 1 mem. ppal.)
Mem. Virt. Privada: Cada proceso tiene su espacio virtual privado mapeado en una memoria física común. Las direcciones virtuales que genera un proceso son privadas.
Desventajas: Sinónimos (varias direcciones virtuales apuntan a una página física), una dirección virtual apunta a varias páginas físicas.
Mem. virt. compartida: Cada proceso tiene un espacio de direcciones virtuales diferente.
Desventaja: Se restringe la memoria virtual del proceso.
Sistema Multicomputador
Sistema multicomputador: Hay varias copias de una página. ¿Coherencia?
Invalidación: Solo un proceso puede escribir en una página. Si otro escribe, invalida el resto de copias, modifica el nivel de acceso a escritura, (si no lo tiene) recibe una copia, y ya puede escribir (el proceso se hace propietario de la página). Si se lee, al proceso propietario se le cambia a lectura y al que quiere leer se le manda una copia para leer.
Actualización: Leer es igual, al escribir, en vez de invalidar, se envía una copia actualizada después de escribir.
Arquitecturas de Procesadores
Procesador VLIW
Procesador VLIW: No tiene mucha repercusión. Usa instrucciones muy grandes (mucha información). En una instrucción hay muchas operaciones distintas (una por cada unidad funcional).
Problemas: Mucho esfuerzo de programación, poco aprovechamiento de memoria (mucha información no dice nada).
Multihilo
Multihilo: Varios hilos de ejecución simultánea. Inversión en hardware mínima (guardar información de contexto de cada hilo). La mejora de rendimiento se debe a la rapidez de cambio de contexto. No puede trabajarse con dos hilos simultáneamente, el hardware se puede aprovechar más. Los cambios de contexto requieren tiempo.
Multicore
Multicore: El aumento de frecuencia de reloj es insostenible. Se baja un poco la frecuencia, se baja mucho el consumo. El software aún no aprovecha el 100%. Varios cores de menos potencia (peor caso: si una aplicación solo usa un core y un hilo).
Técnicas de Mapeo
Mapeo Completo
Mapeo completo: Por cada bloque de memoria principal hay una entrada para cada nodo/proceso de la máquina, cada entrada tiene un bit que dice si el nodo tiene o no copia. Las direcciones se implementan en memoria principal, gestionadas por el controlador de memoria. Un bit para bloque modificado (SÍ|NO), si es igual a 1, su copia es válida y el resto inválida. En cada caché hay dos bits: copia válida (SÍ|NO) y permiso de escritura (SÍ|NO). Política de invalidación (uno escribe, el resto inválido, uno lee y pasa de permiso de escritura a permiso de lectura) -> muchas modificaciones, operaciones redundantes. Mucha complejidad al escalar.
Mapeo Limitado
Mapeo limitado: Recortar la cantidad de instrucciones para ahorrar espacio. Se permite compartir una variable entre un máximo de procesadores. Hay tantos bits por entrada como log2 N (N = número de procesadores): 256 procesadores -> 8 bits. Para que sea rentable, el número de entradas tiene que ser muy bajo para que sea rentable codificar y decodificar las entradas en tiempo real. Esta solución es teórica, ya que es más compleja y no ahorra mucho.
Técnicas de Ejecución de Instrucciones
Scoreboard
Scoreboard: Replicar unidades funcionales. Cada unidad tiene un buffer de instrucciones. Cada instrucción se asocia a un buffer (da igual si no se puede ejecutar). La información se mantiene en espera y la unidad funcional como ocupada hasta que los registros tengan datos válidos, y se completa la instrucción.
Tomasulo
Tomasulo: Varias unidades funcionales. Cada una tiene una estación de reserva, con operandos de varias instrucciones. Cada operando tiene una etiqueta que hace referencia al origen -> nueva técnica: renombrado de registros: si el operando no está disponible, se referencia a la estación de reserva que se quiere construir, y los registros de resultados se marcan con la unidad funcional que deberá escribirlos. Hay un bus de datos común que escucha a todos los componentes de la estructura. En él, va el dato y el origen, y como todos saben quién les escribe, saben si es para ellos y lo incorporan.