Paralelismo Flashcards
Si ya no se puede aumentar la frecuencia del clock ni optimizar el set de instrucciones ¿Cómo se poría aumentar el rendimiento del chip?
Implementando un esquema de multiprocesamiento paralelo masivo.
¿A qué se refiere el grado de acoplamiento?
Hace referencia a la cantidad de recursos que se comparten entre los procesadores.
¿Qué es un coprocesador?
Es un procesador auxiliar que asiste al CPU principal realizando ciertas operaciones específicas (ej: punto flotante, gráficos, etc).
¿Cuál es la diferencia entre un multiprocesador y una multicomputadora?
El multiprocesador tiene más de un núcleo pero comparte la memoria mientras que en las multicomputadoras la memoria es privada y los procesadores se comunican a través de una red de interconexión.
¿Cuál es la diferencia entre una multicomputadora y una grid?
La interacción entre las computadoras. En las multicomputadoras se debe interaccionar a alta velocidad mientras que en las grids las computadoras son más independientes.
¿Qué propone una arquitectura superescalar?
Propone tener muchas unidades de ejecución después de decodificar la instrucción. Esto permite despachar las operaciones a componentes de hardware independientes tal que puedan trabajar de forma simultánea.
¿Cuáles son las etapas de una arquitectura superescalar?
- Fetch: Extrae la instrucción de la memoria de programa.
- Decode: Decodifica la instrucción.
- Issue: Detecta cuál de las etapas paralelizadas se encuentra disponible y cuál es apropiada para ejecutar la instrucción pendiente.
- Execute: La instrucción se ejecuta en la unidad correspondiente.
- Retire: Se escribe en un registro o en memoria el resultado de la operación.
¿Qué proponen los sistemas VLIW?
Very Long Instruction Word (VLIW): Sistemas donde la palabra de instrucción es muy larga y puede contener muchas operaciones que son paralelizables. Entonces se decodifican todas juntas y la planificación de la paralelización se realiza en tiempo de compilación.
¿Qué son los bundles en VLIW?
Como no se utilizan todos los recursos en todo momento, quedaban muchas zonas desaprovechadas en la palabra de instrucción, ocupando más lugar en memoria.
Entonces se implementaron los bundles que buscan compactar el formato, son palabras de instrucción de largo variable que transmiten la misma información sin dejar huecos de memoria.
¿Qué significan las siglas EPIC?
Explicitly Parallel Instruction Computing (EPIC): Aprovecha el compilador para optimizar el código tal que sea paralalelizable y resolver la planificación de las instrucciones en tiempo de compilación. Se considera una mejora a la arquitectura VLIW.
¿Qué problema puede surgir cuando se resuelve el paralelismo en tiempo de compilación?
Como al compilar estamos optimizando un programa en particular y la carga del CPU es variable, puede haber problemas en procesadores de propósito general.
¿Qué tipo de procesador es el TriMedia?
Es un CPU que utiliza VLIW con 27 unidades para ejecutar operaciones en paralelo. Fue diseñado para tareas de multimedia por lo que el programa que va a ejecutar es fijo para la aplicación.
¿Cómo hace el multithreading para aumentar el rendimiento?
Busca aprovechar el tiempo mientras el pipeline está parado porque está ejecutando una tarea que tarda mucho. Si durante ese tiempo se ejecutan otras tareas independientes, se aprovechan los tiempos muertos.
¿Cuál es la diferencia entre el multithreading de grano fino y grano grueso?
En el de grano fino se intercalan las instrucciones de cada thread tal que siempre se aproveche el tiempo de espera entre instrucciones lentas. En cambio en grano grueso se ejecuta un mismo thread y salta sólo cuando tiene que esperar.
El grano fino requiere una cantidad de hilos acorde a la demora de las instrucciones más lentas pero permite una ejecución continua aprovechando todos los ciclos de máquina. Por otro lado, el grano grueso es más flexible en cuanto a la cantidad de threads pero puede tener ejecución no continua.
¿A qué se refiere el simultaneous multithreading?
A la combinación de las técnicas de multithreading con una arquitectura superescalar.
Aumenta el rendimiento pero complejiza el manejo de los hilos.
¿Cuál es la diferencia entre multiprocesadores homogéneos y heterogéneos?
En los homogéneos todos los núcleos son iguales y tienen la misma prioridad mientras que en los heterogéneos los procesadores pueden ser de diferente tipo y con distintos niveles de prioridad.
¿Qué es un multiprocesador simétrico?
Es cuando los núcleos son similares entre sí, tal que cualquier procesador puede realizar las tareas de otro.
¿Qué significa las sigla NOW?
Network of Workstation (NOW): Son las redes conformadas por sistemas multicomputadores para los puestos de trabajo interconectados.
¿Qué significa la sigla UMA?
Uniform Memory Access (UMA): Significa que cualquiera de los núcleos puede acceder a la memoria compartida de igual forma.
¿Qué significa la sigla NUMA?
Non Uniform Memory Access (NUMA): Significa que todos los procesadores pueden acceder a la memoria pero con distinta dificultad y prioridad.
Un mismo software podría tardar diferente tiempo en ser ejecutado según a qué procesador le toca.
¿Qué es un contrato de consistencia?
Se refiere a los distintos grados de libertad con los que se puede alterar el orden de las operaciones.
¿Cuáles son los tipos de consistencia?
- Consistencia Estricta: Las operaciones se ejecutan en el orden establecido por el programador.
- Consistencia Secuencial: La única restricción es que todos los procesadores vean la misma secuencia de operaciones ejecutadas.
- Consistencia a nivel de procesador: La combinación puede ser distinta en cada ejecución y otro procesador podría ver un orden distinto pero cada uno debe ver la secuencia de sus operaciones en orden.
- Consistencia Débil: Las operaciones se realizan en cualquier orden hasta que ocurre un evento de sincronización, donde se deben atender todas las instrucciones anteriores antes de continuar.
- Consistencia a nivel de “release”: Cierto proceso adquiere el contro sobre una determinada zona de memoria y hasta que no se libere nadie más la puede usar.
¿Qué propone el protocolo MESI?
El protocolo MESI busca mantener la consistencia del caché incorporando 4 flags a una fila de caché:
- Modified: El dato se modificó en caché pero no en la memoria principal. Todas las demás instancias de ese dato son inválidas hasta que se realice un write back.
- Exclusive: Sólo 1 procesador levantó el dato de la memoria principal.
- Shared: El dato se encuentra en la caché de 2 o más procesadores y está actualizada en la memoria principal.
- Invalid: El dato en caché no es válido.
¿Qué es un snooping caché?
Es un proceso dentro de la controladora del caché que se encarga de modificar los flags MESI, así se mantiene la coherencia sin tener que modificar muchos bits.