Arquitecturas de Computación: Von Neumann vs. Harvard
En la arquitectura de Von Neumann hay una única memoria que contiene los datos y las instrucciones de los programas, mientras que en la de Harvard hay una memoria de datos y otra de instrucciones. Esto permite una mayor velocidad, pero presenta el inconveniente de que puede haber memoria de sobra de un tipo y faltar del otro tipo.
Sistemas SIMD
Un sistema SIMD (Single Instruction, Multiple Data) tiene una única unidad de control que toma una instrucción cada vez y varias unidades de proceso.
El Computador Digital
Computador digital: Máquina programable para el tratamiento de información (datos), almacenamiento de datos y relación con el exterior mediante periféricos de entrada/salida. Es digital porque la información se transforma, si es necesario, y se almacena como secuencias de dígitos binarios (bits).
- Uso de transistores: Corresponde a la 2ª generación.
- Microcontroladores vs. SoC: Los microcontroladores suelen ser más pequeños que los sistemas en un chip (SoC). FALSO.
Instrucciones de Salto
BRA realiza un salto relativo respecto a la dirección contenida en el PC (Program Counter), mientras que JUMP salta a una dirección de memoria concreta. Por tanto, BRA permite usar código completamente reubicable y JUMP no.
Registros del Microprocesador 6809
A continuación se detallan los registros, sus funciones y nombres:
- DP (Direct Page): Página directa.
- CC (Condition Codes): Códigos de condición. Sus bits son:
- E (Entire state): Marca si tras una interrupción se guardaron todos los registros en la pila.
- F (Interrupt mask): Para inhibir o permitir las interrupciones rápidas.
- H (Half carry): Indica si hay acarreo del bit 3 al 4.
- I (Interrupt mask): Para inhibir o permitir las interrupciones normales.
- N (Negative/Sign): Se activa cuando el resultado de una operación es negativo.
- Z (Zero): Se activa si el resultado de una operación es cero.
- V (Overflow): Se activa si hay desbordamiento.
- C (Carry): Se activa cuando hay acarreo en sumas y restas.
- Acumulador D: Se utiliza para operaciones de transferencia de datos, aritméticas enteras y lógicas.
- Índices X e Y: Sirven para almacenar direcciones de memoria.
- Punteros de pila: Puntero de pila de usuario U y puntero de pila de sistema S. Apuntan a la dirección del último dato que se introdujo en la pila.
- PC (Program Counter): Contador de programa. Es un apuntador que contiene la dirección de memoria de la instrucción que se va a ejecutar a continuación.
Modos de Direccionamiento
- Inherente: Los datos no están especificados en la instrucción porque no hay o porque la localización es única.
- Inmediato: Los datos aparecen en el propio código máquina de la instrucción.
- Directo: En la instrucción aparece el modo de localizar los datos directamente, bien dando una dirección de memoria o bien especificando uno de los registros.
- Indirecto: Se especifica una dirección de memoria que contiene, a su vez, la dirección del dato definitivo.
- Indizado directo: Se especifica la dirección base y un desplazamiento.
- Indizado indirecto: Funciona como combinación del indizado directo y el indirecto.
- Indizado al PC: Consiste en realizar direccionamiento indizado tomando como dirección base el PC.
Nota: La instrucción cmpu 0xA00A del 6809 emplea direccionamiento Directo.
Fases de Ejecución de una Instrucción
- IF (Instruction Fetch): Toma de instrucción. El PC sale al bus de direcciones y se va incrementando.
- ID (Instruction Decode): Decodificación. El procesador identifica la instrucción leída y se dispone a ejecutarla.
- OP (Operand Fetch): Toma de operandos. Se buscan los operandos necesarios.
- EX (Execute): Ejecución. Se ejecuta la instrucción. Al principio de esta fase, el PC ya apunta a la siguiente instrucción.
- WB (Write Back): Escritura del resultado. Si la instrucción calcula o mueve un dato, se escribe el resultado en el destino.
- II (Interrupt Interrogation): Interrupciones. Si se ha activado alguna señal de interrupción, es ahora cuando se atiende.
Niveles de Ejecución y Conceptos Avanzados
Modos de Funcionamiento
Las CPUs modernas tienen al menos dos modos de funcionamiento: usuario y supervisor. Desde el modo usuario no se pueden efectuar operaciones de entrada/salida y algunas de las instrucciones de la CPU no están permitidas. Existirá una instrucción para pasar del modo supervisor al usuario, y se pasará de nuevo al modo supervisor tras una interrupción. Estas interrupciones se producen, por ejemplo, cuando se trata de ejecutar una instrucción privilegiada en modo usuario o cuando se accede a una zona de memoria no permitida.
Ortogonalidad y Direccionamiento
- Ortogonalidad: Se dice que un juego de instrucciones es ortogonal si cada operación se puede hacer con cualquier tipo de operando y en cualquier modo de direccionamiento. Es una característica altamente deseable.
- Dirección efectiva: Se denomina dirección efectiva a la dirección de memoria que resulta del cálculo de una indización, sin llegar a tomar el dato.
- Mapa de memoria: Son representaciones gráficas de los rangos de direcciones lógicos que tienen asignados cada uno de los chips que constituyen la memoria física.
- Dirección física: Es el valor que el microprocesador coloca en el bus de direcciones (AB).
- Dirección lógica: Es con lo que trabaja el microprocesador; cada byte en memoria tiene una asignada. El conjunto de direcciones lógicas determina el espacio de direccionamiento.
Rendimiento y Jerarquía
- Orden de velocidad (de más rápida a más lenta): Registros (R) > Caché (C) > Memoria Principal (MP) > Memoria Secundaria (MS) > Archivo (AR).
- Palabras en 64KB: 65.536.
- Camino crítico: Es el recorrido de la señal eléctrica que provoca el máximo retardo en una operación elemental. Un ciclo de reloj debe durar lo suficiente para que se complete la operación de camino crítico mayor, pero lo suficientemente pequeño para garantizar el rendimiento. Se debe intentar que los caminos críticos de todas las operaciones sean similares para evitar cuellos de botella.
Operaciones de la CPU
- Operaciones de transferencia: Necesitan dos elementos de almacenamiento: origen y destino. Se debe establecer un camino físico entre la salida del origen y la entrada del destino. Una vez establecidos los elementos y su interconexión, se activa una señal para la transferencia. El origen queda inalterado.
- Operaciones de proceso: La información de origen se transforma al pasar por un operador combinacional. Pueden ser:
- Diádicas: Con dos operandos (dos orígenes y un destino).
- Monódicas: Con un solo operando (un origen y un destino).
Unidades de Control: Lógica Cableada vs. Programada
En la lógica cableada se diseña un circuito mediante alguno de los métodos clásicos de diseño lógico y el uso de puertas lógicas. En cambio, en la lógica programada se emplea una memoria, llamada micromemoria, que almacena en sus palabras (microinstrucciones) el estado de cada una de las señales de control en cada periodo.
Las unidades de control de lógica cableada son mucho más rápidas, pero su diseño es más complicado, costoso y rígido (requiere rediseño completo ante cambios). Las de lógica programada son más fáciles de diseñar, modificar y mantener, pero son más lentas y su circuitería es más costosa.
Secuenciamiento Explícito
Una vez ejecutada una microinstrucción de bifurcación, se debe poder elegir entre dos direcciones diferentes. En lugar de usar dos direcciones completas, estas difieren en un único bit que se obtendrá del resultado de la comparación.
Buses de Comunicación
En las transferencias de información por buses existen dos agentes:
- Maestro: El que origina la transferencia.
- Esclavo: El que responde a la transferencia.
Ciclo o Transacción de Bus
Es la operación básica para la transferencia elemental de un dato. Se compone de:
- Fase de direccionamiento: Petición de bus por parte de los maestros.
- Control: Se decide quién será el maestro de la transferencia.
- Direccionamiento: Se determina cuál va a ser el esclavo.
- Fase de transferencia: Movimiento del dato de la fuente al destino.
- Finalización: Detección de errores y cierre.
Las puertas triestado permiten, además de 0 y 1, un estado Hi-Z (alta impedancia), que actúa como si no hubiera conexión física, permitiendo compartir líneas de bus entre varios dispositivos.
Características y Tipos de Buses
- Paralelismo: Bus serie, bus paralelo y bus multiplexado.
- Temporización:
- Ciclo completo: El bus se ocupa durante todas las fases.
- Ciclo partido: Se divide el tiempo en ranuras (slots).
- Tipos según estructura:
- Paralelo: El ancho de palabra coincide con la información a transmitir.
- Multiplexado: Mismos hilos para distinta información mediante señales de control.
- Serie: Codificación de información en forma de onda.
Jerarquía de Buses
- Tipo 0: Internos de los chips.
- Tipo 1: Interconexión entre componentes de la placa.
- Tipo 2: Interconexión entre placas.
- Tipo 3: Interconexión entre módulos (bus del sistema).
- Tipo 4: Buses paralelos para periféricos.
- Tipo 5: Buses serie para periféricos.
Sincronismo en el Bus
- Bus síncrono: Comandado por una señal de reloj. Fácil implementación pero poca flexibilidad. Requiere buses cortos para evitar el clock skew.
- Bus asíncrono: Sin señal de reloj. Flexible en velocidades pero más lento y complejo (protocolo handshake).
- Bus semisíncrono: Síncrono con señales adicionales (READY, BUSY o WAIT) para ajustar la velocidad.
Señales de Control
- FRAME: Manejada por el maestro para indicar inicio y duración de la transacción.
- IRDY (Initiator Ready): Maestro preparado.
- TRDY (Target Ready): Esclavo preparado.
- Señales del 8259: INT, INTA, CS, RD, WR, A0, D0-D7 e IR0-IR7.
Gestión de Interrupciones y DMA
Interrupciones
La interrupción por hardware se produce por un elemento externo a la unidad de control, mientras que la de software es producida internamente. En hardware, el dispositivo indica la dirección; en software, se usa una dirección prefijada.
Señales Daisy Chain
- Dos señales: REQUEST y GRANT.
- Tres señales: Añade BUS BUSY.
- Cuatro señales: Añade BUS ACK.
Modos de Atención del 8259
- Completamente anidado: Prioridades fijas (0 máx, 7 mín).
- Prioridades rotatorias: La prioridad cambia tras atender una interrupción.
- Máscara especial: Permite prohibir interrupciones selectivamente.
- Sondeo (Polling): La CPU pregunta al 8259 qué líneas están activas.
Acceso Directo a Memoria (DMA)
El DMA permite la transferencia de datos entre memoria y dispositivos sin pasar por los registros de la CPU.
- Mecanismos:
- Memoria multipuerta: Puertas dedicadas (caro).
- Robo de ciclo: El controlador de DMA compite con la CPU por los buses (barato).
- Tipos de DMA:
- Simple: Un byte por ciclo robado.
- En ráfaga: Transferencia de bloques completos.
- Disperso: Bloques no contiguos en memoria.
- Gobernado por memoria: Órdenes escritas en memoria en lugar de puertos I/O.
- Opciones: Autoincremento/fijo y reinicio automático.
