Final AC


1. Explique los métodos de pasaje de argumentos a procedimientos o funciones.

El pasaje de argumentos a procedimientos o funciones pueden ser:

  • Vía Registros: El número de registros es la principal limitación. Es importante documentar qué registros se usan.
  • Vía Memoria: Se usa un área definida de memoria (RAM). Difícil de estandarizar
  • Vía Pila (Stack): Es el método más ampliamente usado. El verdadero “pasaje de parámetros”. Independientemente de memoria y registros. Hay que comprender bien cómo funciona porque la pila es usada tanto por el usuario como por el sistema.
2. ¿Qué es una pila? Describir el comportamiento con anidamiento de múltiples procedimientos/funciones utilizando pila.

La pila o stack es una estructura de datos que sigue el principio LIFO y se utiliza para gestionar la ejecución de programas y el uso de memoria de manera eficiente. Es un bloque de direcciones de memoria reservado para esta funcionalidad.

Consta de dos operaciones básicas:

  • PUSH -> Agregar (apilar) un elemento en la parte superior de la pila.
  • POP -> Retirar (desapilar) el elemento superior de la pila.

Cuando anidamos múltiples procedimientos o funciones utilizando una pila, se está agregando llamadas a funciones dentro de otras funciones. Cada vez que se llama a una nueva función, se agrega un nuevo “marco de pila”, que contiene variables locales, parámetros, la dirección de retorno, y cualquier otra información necesaria para la ejecución de esa función.

A medida que las funciones anidadas se completan, sus marcos de pila se retiran de la pila, y el control regresa a la función que las llamó.

Se debe:

  • 1) Salvar el estado del BP
  • 2) Salvar el estado de SP
  • 3) Reservar espacio para datos locales (opcional)
  • 4) Salvar valores de otros registros (opcional)
  • 5) Acceder a parámetros

Luego, para retornar:

  • Los registros salvados deben ser descargados en orden inverso
  • Si se reservó espacio para variables locales, se debe reponer SP con el valor de BP que no cambió durante el procedimiento
  • Reponer BP
  • Volver al programa que llamó al procedimiento con RET.
1. ¿Qué es una interrupción? ¿Cuál es la función de un controlador de interrupciones?

Una interrupción es el mecanismo mediante el cual se puede interrumpir el procesamiento normal de la CPU. Pueden ser origen interno o externo a la misma.

La función de un controlador de interrupciones es gestionar y coordinar las interrupciones. Se encarga de determinar qué dispositivo o evento generó la interrupción, priorizarlas en caso de múltiples interrupciones simultáneas y luego redirigir el flujo de ejecución del procesador hacia un programa de manejo de interrupciones específico.

2. Describa el mecanismo de interrupción.

El mecanismo de interrupción funciona de la siguiente manera:

  • 1) Generar la interrupción: Un dispositivo o componente del sistema detecta un evento que requiere atención, por lo que genera una señal de interrupción.
  • 2) Interrupción del procesador: Cuando se genera una interrupción, el procesador suspende temporalmente la ejecución del programa actual y cambia su enfoque hacia el controlador de interrupciones.
  • 3) Guarda el estado: Antes de manejar la interrupción, el procesador guarda el estado actual del programa en ejecución. Esto incluye la posición del programa en la que se detuvo, los registros de la CPU y otros datos relevantes.
  • 4) Rutina de manejo de interrupciones: El controlador de interrupciones determina la naturaleza de la interrupción y consulta una tabla de vectores de interrupción que contiene direcciones de memoria de rutinas específicas de manejo de interrupciones. Estas rutinas son porciones de código que se encargan de gestionar el evento específico asociado con la interrupción.
  • 5) Ejecución de la rutina de manejo: El procesador comienza a ejecutar la rutina de manejo de interrupciones correspondiente. Esta rutina se encarga de procesar el evento que generó la interrupción. Una vez que la rutina ha sido ejecutada, el control es devuelto al punto en el programa donde se detuvo inicialmente.
  • 6) Restauración del estado: Después de que se maneja la interrupción, el procesador restaura el estado previo guardado, incluyendo los registros y la posición del programa, permitiendo que el programa original se reanude como si la interrupción nunca hubiera ocurrido.
  • 7) Continuación de la ejecución: Con el estado restaurado, el programa original continúa su ejecución desde el punto en el que se interrumpió.

El mecanismo de interrupción permite a los sistemas manejar eventos en tiempo real, realizar tares de gestión de dispositivos y responder eficazmente a situaciones imprevistas sin detener por completo la operación del sistema.

3. ¿Cuáles son las diferencias en la terminación de una subrutina y un gestor de interrupción?

La subrutina regresa al programa principal utilizando la instrucción de retorno RET. En cambio, un gestor de interrupción lo hace después de manejar dicha interrupción, o con la instrucción de retorno IRET.

La instrucción IRET es similar a una instrucción RET, por utilizar la pila, pero recupera una copia del registro de estado y la dirección de retorno

4. Explique características y tratamiento de interrupciones múltiples.

Las interrupciones múltiples se refiere a la situación en la que ocurren varias interrupciones mientras se está manejando una interrupción previa.

Las características a tener en cuenta son:

  • Prioridad de interrupciones: Las interrupciones suelen tener un nivel de prioridad asignado. Cuando se producen múltiples interrupciones, el sistema debe determinar cuál de ellas se manejará primero en función de su prioridad.
  • Máscara de interrupciones: En algunos sistemas, es posible desactivar temporalmente ciertas interrupciones (de menor prioridad) utilizando máscaras de interrupción.
  • Nivel de anidación: El sistema debe ser capaz de manejar múltiples niveles de anidación de interrupciones. Si se está manejando una interrupción y ocurre otra de mayor prioridad, el sistema debe ser capaz de suspender temporalmente la primera interrupción, manejar la segunda y luego regresar al manejo de la primera.
  • Protección del estado del sistema: Durante un manejo de una interrupción, se deben tomar medidas para proteger el estado actual del sistema.

Esto generalmente implica guardar los registros y datos críticos antes de comenzar a manejar la interrupción y restaurarlos después de que se haya completado el manejo de la interrupción.

El tratamiento de interrupciones múltiples puede variar, pero en general sigue un enfoque de manejo de interrupciones en cascada. Los pasos que suele seguir son los siguientes:

  • 1) El sistema determina la prioridad de las interrupciones en cola y selecciona la de mayor prioridad para manejarla primero.
  • 2) Se guarda el estado actual del sistema, incluidos los registros y otros datos relevantes, para que pueda restaurarse más tarde.
  • 3) Se ejecuta la rutina de manejo de la interrupción correspondiente a la interrupción seleccionada.
  • 4) Después de que se complete el manejo de la interrupción, se restaura el estado del sistema que se guardó previamente.
  • 5) Si aún quedan interrupciones en cola, el sistema selecciona la siguiente interrupción de mayor prioridad y repite el proceso.
  • 6) Cuando no quedan interrupciones en cola o cuando se han manejado todas las interrupciones necesarias, se reanuda la ejecución normal del programa.
5. Describa las características y el funcionamiento de un PIC.

Un PIC (Controlador Programable de Interrupciones) es un dispositivo usado para combinar varias fuentes de interrupciones sobre una o más líneas del CPU, mientras que permite que los niveles de prioridad sean asignados a sus salidas de interrupción.

Los PICs tienen un conjunto común de registros:

  • IRR, petición de interrupciones, especifica qué interrupciones están pendientes de reconocimiento, suele ser un registro interno que no puede ser accedido directamente.
  • ISR, interrupción en servicio, especifica qué interrupciones han sido reconocidas, pero todavía están esperando por un final de interrupción (EOI).
  • IMR, máscara de interrupciones, especifica qué interrupciones deben ser ignoradas y no reconocidas.
  • INT0…INT7, cada uno de estos registros se relaciona con un vector de interrupción.

El funcionamiento de un PIC implica varios pasos:

  • 1) Detección de interrupciones: El PIC monitorea constantemente las líneas de interrupción de los dispositivos periféricos y otros eventos en busca de cambios en su estado. Cuando se detecta una interrupción, se genera una solicitud de interrupción hacia el procesador.
  • 2) Priorización: Si hay múltiples interrupciones pendientes, el PIC selecciona la de mayor prioridad según su configuración. Esto se basa en las prioridades asignadas a las líneas de interrupción.
  • 3) Enmascaramiento: Antes de notificar al procesador sobre una interrupción, verifica si la línea de interrupción está habilitada o enmascarada. Si la línea está enmascarada, la interrupción se ignora.
  • 4) Vectorización: Una vez que se determina la interrupción que debe atenderse, el PIC envía un vector de interrupción a la CPU. Este vector contiene información sobre la fuente de la interrupción y apunta a la dirección de memoria de la rutina de manejo de interrupciones correspondiente.
  • 5) Procesamiento de interrupción: La CPU recibe el vector de interrupción y ejecuta la rutina de manejo de interrupciones asociada. Esta rutina es la encargada de gestionar la interrupción, guardar el estado necesario y realizar cualquier acción requerida.
  • 6) Fin de interrupción (EOI): Después de manejar la interrupción, la CPU envía una señal de Fin de Interrupción (EOI) al PIC para indicar que ha completado el manejo de la interrupción actual. Esto permite que el PIC se prepare para la siguiente interrupción si la hubiera.
6. Describa las distintas fuentes de interrupción (tipos de interrupción) que conozca y el tratamiento a realizar cuando hay múltiples interrupciones.

Las interrupciones son el mecanismo mediante el cual se puede interrumpir el procesamiento normal de la CPU. Estas pueden ser de origen interno o externo a la CPU. Las interrupciones pueden ser:

  • Por Hardware: Son las llamadas “verdaderas” interrupciones. Son generadas por dispositivos de E/S (como teclado o mouse) para señalar eventos (como la pulsación de una tecla). El tratamiento implica determinar la fuente de la interrupción, ejecutar la rutina de manejo correspondiente y, si hay múltiples interrupciones de hardware, priorizarlas según su importancia y manejarlas secuencialmente en función de su prioridad.
  • Traps/Excepciones: Son interrupciones por hardware creadas por el procesador en respuesta a ciertos eventos como: condiciones excepcionales (overflow en la ALU), falla de programa (tratar de ejecutar una instrucción no definida), fallas de hardware (error de paridad de memoria) o, accesos no alineados o a zonas de memoria restringidas.
  • Por Software: Son generadas por instrucciones explícitas que afectan al procesador de la misma manera que las interrupciones por hardware, generalmente usadas para hacer llamadas a funciones del sistema operativo

Cuando hay múltiples interrupciones puede que al atender una se inhabiliten las otras, por lo que las interrupciones se manejan en orden secuencial, o que se hayan definido prioridades, por lo que una interrupción de prioridad más alta puede interrumpir a un gestor de interrupción de prioridad menor, cuando se ha gestionado la de mayor prioridad el procesador vuelve a las interrupciones previas, y terminadas todas las rutinas de interrupción se retorna a la ejecución normal.

7. Describa las limitaciones existentes al paralelismo a nivel de instrucciones.

El paralelismo a nivel de instrucciones es una técnica que permite que múltiples instrucciones se ejecuten en paralelo dentro de un procesador. Algunas de sus limitaciones son:

  • Dependencias de Datos: Las dependencias de datos ocurren cuando una instrucción depende de los resultados de una o más instrucciones anteriores. Esto puede limitar la cantidad de instrucciones que pueden ejecutarse en paralelo, ya que algunas de ellas deben esperar a que se completen las instrucciones precedentes.
  • Dependencias de Control: Las dependencias de control se refieren a las instrucciones condicionales, como las instrucciones de salto condicional. El procesador no puede prever de antemano cuál será la próxima instrucción a ejecutar hasta que se resuelva la condición.
  • Limitaciones de Ancho de Bande de Memoria: El acceso a memoria principal es una operación que puede restringir el paralelismo a nivel de instrucción. Si el procesador necesita acceder repetidamente a la memoria, es posible que deba esperar a que se completen las operaciones de lectura/escritura antes de poder avanzar con otras instrucciones.
  • Tamaño de Ventana de Ejecución: La cantidad máxima de instrucciones que se pueden emitir y ejecutar en paralelo puede ser limitada por cuestiones de diseño de hardware o por la arquitectura del procesador.
  • Saltos y Llamadas a Subrutinas: Las instrucciones de salto y las llamadas a subrutinas cambian el flujo de ejecución y pueden requerir la cancelación de instrucciones en vuelo que ya no son válidas debido al salto. Esto puede llevar a penalizaciones de tiempo significativas.
8. ¿A que método de atención lo conocemos como de interrupciones vectorizadas?¿Cuándo, por qué, para qué y cómo utiliza una de las denominadas interrupciones por software?

En el método de interrupciones vectorizadas, cuando se produce una interrupción, se utiliza un vector de interrupción para direccionar directamente la ejecución del procesador a la ubicación de memoria de la rutina de manejo de interrupciones correspondiente. Se utiliza el número de identificación de la interrupción como índice para buscar en la tabla de vectores, luego el procesador salta directamente a esa dirección de memoria y comienza a ejecutar la rutina de manejo de la interrupción.

9. Esquematice y describa la estructura interna de un controlador programable de interrupciones y describa cómo funciona la gestión E/S programada con espera de respuesta

image

Componentes de la estructura interna de un controlador programable de interrupciones:

  • IRR (Interrupt Request Register): Registro de petición de interrupción, indica con bit en 1 las interrupciones demandadas hasta el momento.
  • ISR (In Service Register): Registro de interrupción en servicio, indica con bit en 1 cuál es la interrupción que está siendo atendida.
  • IMR (Interrupt Mask Register): Registro de máscara de interrupciones, permite el enmascaramiento selectivo de cada una de las entradas de interrupción, indicando con bit en 1 (Indica cuáles deben ser ignoradas). Tras un reset los bits de este registro quedarán en 0.
  • EOI (End of Interruption): Fin de interrupción. Como consecuencia, se pone en 0 el bit del ISR correspondiente. Sirve para indicarle al PIC que ya fue atendida la interrupción y la CPU vuelve a la ejecución normal del programa.
  • INT0 … INT7: 8 registros, donde se cargan los id de interrupciones.

La gestión de E/S programada con espera de respuesta se refiere a un método en el que un programa solicita una operación de E/S y luego espera activamente hasta que se complete la operación. Esto se utiliza en situaciones en las que el programa necesita el resultado de la operación antes de continuar su ejecución. El funcionamiento de este proceso es el siguiente:

  • 1) Solicitud de E/S: El programa emite una solicitud de E/S al dispositivo periférico o al controlador correspondiente.
  • 2) Inicio de la operación: El controlador de E/S inicia la operación y se pone en marcha para realizar la tarea solicitada.
  • 3) Espera activa: Mientras la operación de E/S está en curso, el programa entra en un bucle de espera activa (verifica continuamente el estado de la operación).
  • 4) Finalización de la operación: Cuando la operación de E/S se completa, el controlador de E/S indica su finalización al programa. Esto podría ser a través de una interrupción por hardware o mediante el establecimiento de una bandera de estado.
  • 5) Procesamiento de datos: Una vez que el programa recibe la notificación de que la operación de E/S ha finalizado, puede procesar los datos obtenidos de la operación, si es necesario, y luego continuar con su ejecución normal.
1. ¿Qué es segmentación de cauce?

La segmentación de cauce (pipelining) es una forma de organizar el hardware de la CPU para realizar más de una operación al mismo tiempo. Consiste en descomponer el proceso de ejecución de las instrucciones en fases o etapas que permitan una ejecución simultánea.

2. ¿Qué ventajas proporciona su implementación?

La implementación de la segmentación de cauce proporciona varias ventajas, entre ellas:

  • Mejora el rendimiento -> La ejecución en paralelo acelera la velocidad de ejecución de las instrucciones.
  • Aprovechamiento de recursos -> Mientras una unidad de ejecución realiza una operación, las etapas anteriores y posteriores pueden estar ocupadas con otras instrucciones, lo que permite un uso más completo de las unidades funcionales.
  • Mayor paralelismo -> Al permitir que múltiples instrucciones se ejecuten al mismo tiempo, la segmentación de cauce aumenta el nivel de paralelismo a nivel de instrucciones en un procesador.
  • Reducción del ciclo de reloj por instrucción -> Reduce el tiempo necesario para ejecutar una instrucción completa al dividirla en etapas más pequeñas.
  • Mejora de la predicción de saltos -> Puede combinarse con técnicas de predicción de saltos para reducir las penalizaciones por fallos de predicción de saltos, lo que resulta en una ejecución más eficiente en las instrucciones.
3. Tres motivos de retardo de cauce en segmentación de cauce

Hay tres motivos comunes de retardo de cauce en segmentación de cauce:

  • 1) Dependencia de Datos: Ocurre cuando una instrucción depende de los resultados de una instrucción anterior que aún no ha completado su etapa de ejecución. Los tipos de dependencia de datos son:
    • a) RAW – Read after Write
    • b) WAR – Write after Read
    • c) WAW – Write after Write
  • 2) Dependencia de Control: Ocurren debido a las decisiones de salto condicional en el flujo de control del programa. Cuando una instrucción de salto condicional se encuentra en el cauce, el procesador puede no conocer la dirección de la próxima instrucción hasta que se resuelva la condición.
  • 3) Dependencias Estructurales: Ocurren cuando dos o más instrucciones compiten por el mismo recurso funcional en una etapa específica del cauce.

Para mitigar estos retrasos y mejorar el rendimiento en la segmentación de cauce, se utilizan técnicas como la ejecución fuera de orden, el renombramiento de registros y la predicción de saltos avanzada.

4. Describa las dependencias de los datos que pueden afectar un cauce segmentado.

Los tipos de dependencias de datos son:

  • Read After Write (RAW): Ocurre cuando una instrucción en el cauce necesita leer un registro o dato que está siendo escrito por una instrucción anterior en el mismo cauce.
  • Write After Read (WAR): Ocurre cuando una instrucción en el cauce necesita escribir un registro o dato que está siendo leído por una instrucción anterior en el mismo cauce. A veces se denominan “antidependencias”.
  • Write After Write (WAW): Ocurre cuando dos instrucciones en el cauce necesitan escribir en el mismo registro o dato. A veces se denominan “dependencias de salida”.
5. Explique los atascos producidos por saltos

Los atascos producidos por saltos son situaciones en las que la ejecución de instrucciones en un cauce segmentado se ve afectado negativamente debido a la presencia de instrucciones de salto condicional o incondicional. Hay tres tipos principales de atascos de control causados por saltos:

  • Salto condicional tomado, cuando la condición se resuelve como verdadera, lo que significa que se debe tomar el salto. Las instrucciones que siguen al salto condicional y ya han avanzado deben descartarse, lo que conduce a un desperdicio de ciclos de reloj y una penalización en el rendimiento.
  • Salto condicional no tomado, cuando la condición se resuelve como falsa, lo que significa que no se toma el salto. Las instrucciones que siguen al salto deben continuar su ejecución.
  • Salto incondicional, ocurre cuando se encuentra una instrucción de salto incondicional. Las instrucciones que siguen ya han avanzado en el cauce y se encuentra en diferentes etapas de ejecución. Cuando se toma el salto, estas instrucciones en etapas posteriores deben ser descartadas, lo que resulta en un desperdicio de ciclos de reloj y una penalización en el rendimiento.
6. Describa el problema y posibles soluciones ante riesgos por transferencia de control de programa.

Los riesgos por transferencia de control de programa se refiere a situaciones en las que la ejecución de instrucciones en un procesador segmentado se ve afectada negativamente debido a saltos de programa, como instrucciones de salto condicional o incondicional. Estos riesgos pueden dar lugar a retrasos en la ejecución de instrucciones y pueden afectar el rendimiento general del procesador.

Los riesgos por transferencia de control pueden ser:

  • Salto condicional tomado
  • Salto condicional no tomado
  • Salto incondicional

Las posibles soluciones:

  • Adelantar la resolución de los saltos a la etapa de decodificación

    • En ella se decodifican y se sabe que es un salto
    • Se puede evaluar la condición de salto (con restador)
    • Se puede calcular la dirección de salto (con sumador)
  • Para tratamiento de saltos hay:

    • Técnica Hardware -> Predicción de saltos:
      • Técnicas estáticas:
        • Predecir que nunca se salta: Asume que el salto no se producirá y siempre capta la siguiente instrucción.
        • Predecir que siempre se salta: Asume que el salto se producirá y siempre capta la instrucción destino del salto.
      • Técnicas dinámicas:
        • Conmutador saltar/no saltar: Basado en la historia de las instrucciones. Es eficaz en bucles.
        • Tabla de historia de saltos (Branch-target buffer): Pequeña cache asociada a la etapa de búsqueda (F). Tiene 3 campos, dirección de una instrucción de bifurcación, información de la instrucción destino y N bits de estado (historia de uso).
      • Predecir según el código de operación:
        • Hay instrucciones con más probabilidades de saltar.
      • Flujos múltiples:
        • Varios cauces (uno por cada opción de salto). Precaptan cada salto en diferentes cauces. Se debe utilizar el cauce correcto.
      • Precaptar el destino de salto:
        • Se precapta la instrucción destino del salto, además de las instrucciones siguientes a la bifurcación. La instrucción se guarda hasta que se ejecute la instrucción de bifurcación.
      • Buffer de bucles:
        • Es una memoria muy rápida, gestionada por la etapa de captación de instrucción del cauce. Comprueba el buffer antes de hacer la captación de memoria.
  • Técnica Software -> Salto retardado o de relleno de ranura de retardo:

    • El compilador introduce instrucciones que se ejecutarán en cualquier caso después de la instrucción de salto, y de no ser posible se utilizan instrucciones NOP.
    • Requiere reordenar las instrucciones.
1. Describa las características funcionales del Acceso Directo a Memoria (DMA) (Etapas de transferencia).

El Acceso Directo a Memoria permite que un dispositivo periférico acceda a memoria principal (RAM) directamente sin la intervención de la CPU. El DMA acelera la transferencia de datos entre la memoria y los dispositivos periféricos, lo que libera recursos de la CPU para otras tareas. Las características funcionales del DMA incluyen varias etapas de transferencia:

  • Solicitud: La primera etapa implica que un dispositivo periférico envíe una solicitud de acceso a la memoria al controlador DMA. Esta solicitud incluye información sobre la dirección de memoria de origen y destino, la cantidad de datos a transferir y el sentido de la transferencia.
  • Selección del Canal DMA: Los sistemas informáticos pueden tener múltiples canales, cada uno dedicado a un tipo específico de dispositivo o función. En esta etapa, el sistema debe asignar el canal DMA a la solicitud entrante.
  • Configuración: Una vez seleccionado el canal DMA, se configura para que coincida con los requisitos de la transferencia de datos. Esto incluye la configuración de las direcciones de inicio y finalización en la memoria, el tamaño de la transferencia y otras características relevantes.
  • Acceso Directo: El controlador DMA se comunica directamente con la memoria principal y el dispositivo periférico para iniciar la transferencia de datos. La CPU no participa en la transferencia en sí, lo que permite que la CPU realice otras tareas mientras se lleva a cabo la transferencia.
  • Transferencia de Datos: El controlador DMA transfiere datos entre la memoria y el dispositivo periférico utilizando el canal DMA configurado previamente. La transferencia puede ser en una dirección o bidireccional.
  • Finalización: Cuando se completa la transferencia, el controlador DMA notifica al dispositivo periférico y actualiza cualquier estado relevante. La CPU puede ser notificada de la finalización de la transferencia mediante una interrupción o un mecanismo similar.
  • Liberación del Canal DMA: Después de completar la transferencia, el canal DMA se libera para su uso posterior. Esto permite que otros dispositivos o solicitudes utilicen el canal DMA según sea necesario.
2. ¿Cómo es la estructura de un módulo de E/S? (Esquematice y describa)
3. Describa las posibles técnicas que puede utilizar una CPU para realizar operaciones de E/S.
4. Desarrolle cómo es el funcionamiento del DMA y los usos que de él se hacen.
5. Describa cómo funciona la gestión de E/S programada con espera de respuesta.
6. ¿La coherencia de datos de un sistema jerárquico de memoria se ve afectado por el uso de DMA?
7. ¿Cuáles son los modos de ubicación de los módulos de entrada salida? Describir.
1. Memoria Caché. Describa el mapeo asociativo por conjuntos.
2. Analice las políticas de escritura desde el punto de vista de la coherencia de datos.
3. Describa los elementos a tener en cuenta en el diseño de una memoria caché. Analice ventajas y desventajas de poseer varios niveles de caché.
4. Describa los algoritmos de reemplazo de bloque y políticas de escritura en la cache.
5. Si se pretende mejorar el tiempo de acceso medio a memoria cache. ¿Sobre qué parámetros será necesario trabajar y propone como medida para hacerlo?
6. Describa y compare las correspondencias entra la memoria principal y la caché. ¿Cómo se determina, en cada caso, la hilera/fila de ubicación de un bloque de palabras provenientes de la memoria principal? Ejemplifique.
7. Justifique el uso de dos niveles de caché.
1. Describa tres características que usted considere las más importantes de las arquitecturas RISC.
2. Describa las características que diferencian los procesadores RISC respectos a los CISC.
1. ¿Qué son los procesadores superescalares?
2. ¿De qué depende el paralelismo de una máquina superescalar?
3. ¿Cuál es el objetivo de usar la técnica de Renombre de Registros en un procesador superescalar?
4. ¿Qué características tienen los procesadores superescalares?
5. ¿Qué características posee un procesador supersegmentado frente a un superescalar?
6. Compare las políticas de emisión de instrucciones.
7. Elija una alternativa de emisión/finalización y justifique.
1. ¿Qué es un bus? Describa los diferentes tipos de modos de arbitraje y sincronización.
2. Mencione las principales diferencias entre un bus PCI y SCSI.
3. ¿Qué elementos característicos definen un bus?
4. Tipos de buses, temporización y métodos de arbitraje
1. ¿Qué son los MIMD de la taxonomía de Flynn?
2. Describa las 4 variantes de arquitectura de la Taxonomía de Flynn.
1. Describa las características que diferencian los SMP respecto a los Cluster.
2. Características de los Cluster.
3. Compare los sistemas MP y Cluster.
4. Funcionamiento de un Cluster.