Conceptos Clave en Arquitectura de Computadoras: Pipeline, Hazards y Sumadores Binarios
Clasificado en Informática
Escrito el en español con un tamaño de 5,89 KB
Solucionario de Conceptos Fundamentales en Arquitectura de Computadoras
1. Tabla de Verdad de un Sumador Completo de un Bit
Pregunta: Escriba la tabla de verdad de un sumador completo (con acarreo) de un bit.
Solución: La tabla de verdad se encuentra detallada en las diapositivas impresas del curso.
2. Función de la Unidad Generadora de Bits de Acarreo en un Sumador Binario
Pregunta: Para un sumador binario, ¿qué función cumple la unidad generadora de bits de acarreo?
Solución: La unidad generadora de bits de acarreo se encarga de producir los bits de acarreo de salida correspondientes a la suma binaria de los datos de entrada (por ejemplo, los bits A y B) y el bit de acarreo de entrada (Cin).
3. Tipos de Peligros (Hazards) en un Camino de Datos Encauzado (Pipeline)
Pregunta: En un camino de datos encauzado (pipeline), se pueden producir tres tipos de peligros (hazards). Mencione cuáles son, cuándo ocurren y dé un ejemplo de cada uno.
Solución: Los tres tipos de peligros son: Estructurales, de Datos y de Control (o Salto).
Peligros Estructurales
- Ocurrencia: Se producen cuando el hardware no soporta una combinación específica de instrucciones que intentan usar el mismo recurso simultáneamente.
- Ejemplo: En la analogía de la lavandería, se produce un peligro estructural si la lavadora y la secadora están en la misma máquina, impidiendo que dos prendas se procesen en paralelo en esas etapas.
Peligros de Datos
- Ocurrencia: Ocurren cuando una instrucción debe esperar el resultado de una instrucción anterior para poder ejecutarse correctamente.
- Ejemplo: Una operación de suma seguida de una resta que depende del resultado de esa suma.
En este caso, la instrucciónadd $s0, $t0, $t1 sub $t2, $s0, $t3
sub
no puede ejecutarse hasta queadd
haya escrito su resultado en$s0
.
Peligros de Control o Salto
- Ocurrencia: Se producen cuando el flujo de ejecución del programa no es el esperado, generalmente debido a instrucciones de bifurcación o salto. El pipeline no sabe qué instrucción buscar a continuación hasta que se resuelve el salto.
- Soluciones Comunes:
- Detención (Stall): Detener el pipeline cuando se realiza la fase de búsqueda (fetch) de una instrucción de salto hasta que se determine el destino.
- Predicción Simple: Intentar predecir el resultado del salto. Por ejemplo, asumir que nunca se toman los saltos y, si se toma, vaciar el pipeline y reiniciar.
- Predicción con Historial: Utilizar un predictor de saltos que mantenga un historial de los saltos tomados o no tomados para mejorar la precisión de la predicción.
4. Rol del Compilador en la Solución de Peligros (Hazards)
Pregunta: Explique cómo puede ayudar el compilador en la solución de los peligros (hazards).
Solución: El compilador puede disminuir significativamente la ocurrencia de peligros reordenando o adelantando instrucciones en el orden de ejecución. Esto se conoce como planificación de instrucciones o reordenamiento de código, donde se insertan instrucciones independientes entre las que tienen dependencias para evitar detenciones del pipeline.
5. Función y Nomenclatura de los Registros de Pipeline en MIPS
Pregunta: Explique qué función cumplen los registros de pipeline en un camino de datos encauzado, cuántos hay y cómo se llaman en MIPS.
Solución: Los registros de pipeline son elementos de almacenamiento intermedios que permiten descomponer la ejecución de cada instrucción en varias etapas. Su función principal es transferir los datos y el estado de una etapa a la siguiente, permitiendo que múltiples instrucciones se procesen simultáneamente en diferentes fases del pipeline.
Estos registros necesitan ser lo suficientemente anchos (grandes) como para albergar todos los bits necesarios para transferir información de una etapa a otra (por ejemplo, 64, 128 o 97 bits) durante un ciclo de reloj. Las instrucciones avanzan desde un registro de pipeline al siguiente en cada ciclo.
Etapas del Pipeline MIPS y sus Registros Asociados:
- IF/ID (Instruction Fetch / Instruction Decode): Registro entre la etapa de búsqueda de instrucción y la de decodificación.
- IF (Instruction Fetch): Carga la instrucción a ejecutar desde la memoria de instrucciones.
- ID (Instruction Decode y Register File Read): Decodifica la instrucción y lee los valores de los registros necesarios.
- ID/EX (Instruction Decode / Execute): Registro entre la etapa de decodificación y la de ejecución.
- EX (Execution o Address Calculation): Ejecuta la operación ALU o calcula la dirección de memoria.
- EX/MEM (Execute / Memory Access): Registro entre la etapa de ejecución y la de acceso a memoria.
- MEM (Data Memory Access): Realiza operaciones de lectura o escritura en la memoria de datos.
- MEM/WB (Memory Access / Write Back): Registro entre la etapa de acceso a memoria y la de escritura de resultados.
- WB (Write Back): Almacena el resultado final de la instrucción en un registro del procesador.