Arquitectura de Computadoras: Señales, Buses, Interrupciones y Ensamblador

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 13,87 KB

Módulo 10: Arquitectura de Computadoras

1. Tipos de Señales

  • Continuas: Su valor permanece constante a lo largo del tiempo, como en una pila de 1.5 V.
  • Alternas: Varían en el tiempo y pueden ser periódicas, repitiendo su patrón en intervalos constantes. Ejemplo: señal senoidal.
  • Analógicas: Pueden tomar infinitos valores dentro de un rango continuo.
  • Digitales: Pueden tomar solo valores discretos. Ejemplo: señal rectangular.

2. Señal de Reloj del CPU

  • Generada por un oscilador de cristal, sincroniza las operaciones del procesador.
  • Es una señal digital rectangular con una frecuencia medida en Hertz (MHz o GHz).
  • A mayor frecuencia, mayor capacidad de procesamiento de instrucciones por segundo.
  • La velocidad del procesador no depende solo de la frecuencia, sino también de factores como el IPC (Instrucciones por Ciclo) y la cantidad de núcleos.

3. Concepto y Características de la Interconexión de Bus

La interconexión de bus es el conjunto de conexiones que permiten la comunicación entre los componentes de un sistema (CPU, memoria y dispositivos de E/S).

Características:

  • Puede ser paralelo (varias líneas de datos simultáneas) o serial (datos en una sola línea).
  • Puede estar compartido entre múltiples dispositivos o ser un enlace dedicado a un solo dispositivo.
  • Incluye un conjunto de líneas para datos, direcciones y control, permitiendo la sincronización y gestión de las transferencias de datos.

4. Tipos de Buses en el Bus de Sistema

  • Bus de Datos: Transporta los datos entre CPU, memoria y E/S. Su ancho determina cuántos bits se transmiten simultáneamente (e.g., 16, 32, 64 bits).
  • Bus de Direcciones: Transporta la dirección de memoria o del puerto de E/S al que accede la CPU. El ancho del bus de direcciones define la capacidad de direccionamiento.
  • Bus de Control: Lleva señales de control para coordinar las operaciones, como Memory read, Memory write, I/O read, I/O write, y señales de sincronización como Clock y Reset.

5. Características de los Buses

  • Ancho del bus: Depende de la cantidad de líneas o bits que posea el bus para transmitir información (16, 32, 64, etc.).
  • Ancho de Banda: La cantidad de datos que puede transmitir el bus por unidad de tiempo. Depende del ancho y la velocidad del bus.
  • Velocidad de bus: Se refiere a la frecuencia de transferencia de datos, medida en Hz. Por ejemplo, un bus que funciona a una frecuencia de 1 GHz que transmite 1 bit por ciclo de reloj, será capaz de transmitir 1 Gbit por segundo.
  • Tipo de transmisión: Puede ser paralelo (varios bits simultáneamente) o serial (bits en secuencia).
  • Sincronización: Los buses pueden ser sincrónicos (con una señal de reloj común) o asincrónicos (cada dispositivo regula su sincronización).

6. Interconexión Punto a Punto

En la interconexión punto a punto, cada dispositivo tiene un enlace dedicado, eliminando la necesidad de arbitraje y proporcionando mayor ancho de banda y menor latencia. Ejemplos: PCIe, SATA, USB, HDMI. Esta conexión es adecuada para procesadores modernos, donde se requiere alta velocidad y baja latencia.

7. Comparación con un Bus Paralelo

  • Bus paralelo: Este tipo de bus permite la comunicación compartida entre varios dispositivos, lo que puede llevar a congestión y reducir la eficiencia.
  • Interconexión punto a punto: Es una conexión exclusiva entre dos componentes, lo que resulta en una comunicación más rápida y sin interferencias causadas por otros dispositivos.

8. Jerarquía de Buses

Los sistemas modernos usan una jerarquía de buses para manejar eficientemente el ancho de banda. En los CPUs actuales, el bus de sistema está jerárquicamente organizado para minimizar los cuellos de botella. Por ejemplo, los buses internos del procesador son más rápidos que los buses de expansión de E/S. El bus interno del microprocesador, que lo conecta con su memoria caché, es el más rápido de la jerarquía. Le sigue el bus de sistema (en amarillo), compuesto por los buses de datos, control y direcciones que salen del CPU. Este bus conecta al CPU con la memoria principal y con el bus de E/S. Por último, para la conexión de E/S implementa un bus de expansión PCI (Peripheral Component Interconnect en verde) paralelo que tiene conectadas interfaces controladoras y sirve de puente (Bridge) a los restantes buses más lentos del sistema. El bus PCI y el ISA actualmente son obsoletos y se dejaron de utilizar, sin embargo ilustran perfectamente la jerarquía de buses.

9. Ejemplos de Buses de E/S en la PC

  • PCI Express (PCIe): Interconexión punto a punto serial que conecta componentes de alta velocidad, como tarjetas gráficas y SSDs. Soporta versiones como PCIe 3.0, 4.0 y 5.0.
  • SATA: Conexión serial para almacenamiento, utilizada en discos duros y SSDs. Las versiones más comunes son SATA 3.0 y SATA Express.
  • USB: Interfaz para periféricos como teclados, ratones y discos externos. Los estándares incluyen USB 2.0, 3.0, 3.1, 3.2 y USB4.
  • HDMI y DisplayPort: Para transmisión de video y audio. HDMI es popular en monitores y televisores, mientras que DisplayPort permite conexión en cadena de múltiples monitores.
  • Ethernet: Para redes locales (LAN), con velocidades de hasta 1 Gbit/s en conexiones Gigabit Ethernet.

Módulo 12: Interrupciones y Excepciones

1. Diferencia entre Interrupciones y Excepciones

  • Interrupciones: Son eventos externos al CPU (como una solicitud de E/S) que causan una transferencia de control hacia una rutina de atención de interrupciones (ISR). Las interrupciones pueden ser enmascarables o no enmascarables y son causadas principalmente por hardware.
  • Excepciones: Son eventos generados internamente por el software, como un error de ejecución (e.g., división por cero detectada) o una instrucción específica que genera una excepción (e.g., instrucciones INT programada). Las excepciones no respetan esquemas de prioridad y se manejan mediante software.

2. Etapas de las Interrupciones Enmascarables

  • Solicitud: Un dispositivo envía una señal de solicitud de interrupción (INTR) al CPU.
  • Reconocimiento: La CPU verifica el estado del flag IF (Interrupt Flag). Si el flag está en 1, se acepta la interrupción, y se envía la señal INTA (Interrupt Acknowledge).
  • Atención: La CPU ejecuta la ISR correspondiente, interactuando con el dispositivo solicitante.
  • Retorno: Al finalizar la ISR, se restaura el contexto del programa interrumpido, devolviendo el control a este mediante la instrucción IRET.

3. Función del Flag IF

El Flag IF es un bit en el registro de estado del CPU que habilita o deshabilita las interrupciones enmascarables. IF=1 permite que el CPU reconozca y atienda interrupciones enmascarables, mientras que IF=0 hace que el CPU ignore estas interrupciones.

4. Señales durante la Solicitud y el Reconocimiento

  • INTR (Interrupt Request): Enviada por un dispositivo para solicitar una interrupción.
  • INTA (Interrupt Acknowledge): Enviada por el CPU al dispositivo para confirmar que la solicitud ha sido reconocida y que la interrupción será atendida.

5. Dato para Leer la Posición del Vector de Interrupciones

El CPU recibe un número de tipo de interrupción del dispositivo solicitante. Este número identifica el tipo de interrupción y se utiliza para acceder a la posición correspondiente en la Tabla de Vector de Interrupciones (IVT). La IVT contiene las direcciones de memoria de las rutinas de servicio de interrupción (ISR) para cada tipo de interrupción.

6. Contenido del Vector de Interrupciones

Cada entrada en la Tabla de Vector de Interrupciones (IVT) contiene un puntero o dirección formado por el segmento de código (CS) y el puntero de instrucción (IP) que apunta a la ubicación en memoria de la ISR correspondiente al tipo de interrupción.

7. Datos Guardados en la Pila antes de Ejecutar la ISR

Antes de ejecutar la ISR, el CPU guarda en la pila el contador de programa (registro CS e IP) y el registro de estado (flags). Esto permite al CPU retomar el programa interrumpido en el mismo punto donde fue interrumpido una vez finalizada la ISR.

8. Retorno de la ISR

Tras ejecutar la ISR, el CPU usa la instrucción IRET para restaurar los registros CS, IP y flags desde la pila, retomando la ejecución del programa interrumpido como si la interrupción no hubiera ocurrido.

9. Interrupciones Enmascarables y No Enmascarables

  • Enmascarables: Controladas por el flag IF, el cual puede habilitar o deshabilitar su reconocimiento.
  • No enmascarables: No dependen del flag IF y siempre deben ser atendidas debido a su prioridad. Generalmente usadas para errores críticos como fallos de paridad.

10. Anidamiento de Interrupciones

El anidamiento ocurre cuando una interrupción interrumpe a otra ISR en ejecución. Para permitir anidamiento, la primera instrucción de la ISR debe habilitar interrupciones STI (Set Interrupt Flag). Si no se desea anidamiento, no se incluye la instrucción STI, y las interrupciones adicionales no serán atendidas hasta finalizar la ISR en curso.

11. Tipos Dedicados del Vector de Interrupción

Algunos tipos dedicados en la CPU Intel x86 incluyen:

  • Tipo 0: División por cero.
  • Tipo 1: Paso a paso, usado en depuración.
  • Tipo 2: Interrupción no enmascarable (NMI).
  • Tipo 3: Punto de interrupción para depuración.
  • Tipo 4: Desbordamiento (overflow).

12. Administración de Prioridades en Interrupciones Múltiples

En sistemas con múltiples interrupciones, se utiliza un controlador de interrupciones programable (PIC), como el 8259A, que permite manejar prioridades y definir el orden de atención. Las interrupciones de mayor prioridad pueden interrumpir a otras de menor prioridad.

13. Excepciones Programadas o Interrupciones por Software

Estas son instrucciones que el software ejecuta para forzar una interrupción específica, como las instrucciones INT en ensamblador. Las interrupciones por software no dependen de hardware y son predecibles, usadas comúnmente para comunicación entre programas y el sistema operativo.

14. Modelo de Interrupciones Señalizadas por Mensaje (MSI)

En lugar de usar una línea física de señal, el sistema MSI (Message Signaled Interrupts) permite que los dispositivos generen interrupciones mediante mensajes escritos en posiciones específicas de memoria. Este método es común en interfaces modernas como PCIe y reduce la latencia, ya que elimina la necesidad de un pin físico para cada línea de interrupción.

15. Comandos y Instrucciones en Ensamblador

Comandos:

  • r: muestra los registros.
  • d: muestra la memoria como datos.
  • u: muestra las instrucciones en memoria.
  • a: ensamblar (programar).
  • e: editar.
  • MOV: copiar.
  • ADD: sumar.
  • SUB: restar.
  • DEC: decrementar.
  • INC: incrementar.
  • INT: interrumpir.
  • p: ejecuta una instrucción a la vez.
  • g: ejecuta todo de una.

Instrucciones:

  • MOV AH,8: Cargar el registro AH con el valor 8.
  • ADD AH,3: Sumarle, al contenido de AX, el valor 3.
  • SUB AH,4: Restarle, al contenido de AX, el valor 3.
  • e b320: edita la posición de memoria b320.
  • a 0200: programa en la dirección de memoria 0200.
  • INC AX tiene direccionamiento implícito, ya que el operando está implícito en la instrucción.
  • MOV AX,12 tiene direccionamiento inmediato, ya que el operando “12h” está en la instrucción. En esta copia o lectura, el origen es 12h y el destino es el registro AX.
  • MOV AX,[1100] tiene direccionamiento directo, ya que el operando está en la dirección de memoria especificada entre corchetes (1100 en este caso, es una dirección donde está el operando y no el operando).

Entradas relacionadas: