Fundamentos de Arquitectura de Computadoras

Explora los fundamentos de arquitectura de computadoras: álgebra booleana, circuitos lógicos, UAL, representación de datos y ciclo de instrucción. ¡Domina los conceptos clave!

La Arquitectura de Computadoras es la columna vertebral que define cómo los componentes de un sistema informático interactúan entre sí. Comprender sus fundamentos de arquitectura de computadoras es esencial para cualquier estudiante o entusiasta que desee profundizar en el mundo de la informática. Este artículo ofrece un resumen completo, ideal para quienes buscan una explicación clara y concisa de los conceptos clave.

Conceptos Fundamentales de Arquitectura de Computadoras

Desde la lógica booleana hasta los intrincados ciclos de instrucción de la CPU, la arquitectura de computadoras abarca una vasta gama de principios. Aquí exploraremos cómo se representan y procesan los datos, cómo funcionan los circuitos lógicos, la importancia de la Unidad Aritmética y Lógica (UAL), y el ciclo de vida de una instrucción dentro del procesador.

Álgebra de Boole y Funciones Booleanas

El Álgebra de Boole es la base de la lógica digital, permitiendo representar y manipular operaciones lógicas. Se utiliza para diseñar circuitos que controlan el flujo de datos en la computadora. Una función booleana vincula variables booleanas mediante operadores lógicos como suma (OR), producto (AND) y complementación (NOT).

  • Tabla de Verdad: Es una forma tabular de expresar una función booleana, mostrando todas las posibles combinaciones de entradas y sus salidas correspondientes.
  • Ejemplo del Sistema de Seguridad contra Incendios: Consideremos un sistema con sensores S0, S1, S2. Una alarma luminosa (AL) se activa si al menos dos sensores están en '1'. Una alarma sonora (AS) se activa si S2 está en '1' (además de los dos sensores para AL).
  • Minitérminos: Las expresiones literales completas en suma de productos representan cada combinación de entrada que produce una salida '1'. Por ejemplo, para AL se pueden identificar los minitérminos m3, m5, m6, m7. Para AS, los minitérminos m4, m5, m6, m7.
  • Forma Canónica: Cuando todos los términos de una expresión polinómica contienen todas las variables, se denomina expresión canónica. La simplificación de estas expresiones es crucial para diseñar circuitos eficientes.

Circuitos Lógicos Combinacionales

Estos circuitos producen una salida que depende únicamente de sus entradas actuales. Son la base para realizar operaciones aritméticas y lógicas.

  • Circuito Semisumador (Half Adder - HA): Suma dos bits de entrada (A y B) sin considerar un acarreo previo. Genera dos salidas: la suma (S = A XOR B) y el acarreo (C = A AND B).
  • Circuito Sumador Completo (Full Adder - FA): Suma tres bits: dos bits de datos (A, B) y un bit de acarreo de entrada (Ci). Produce un bit de suma (S) y un bit de acarreo de salida (Co). Es fundamental para construir sumadores de números binarios de múltiples bits.
  • Sumador Binario en Paralelo: Permite sumar números binarios de n bits utilizando n sumadores completos en paralelo. Los acarreos se propagan de una etapa a la siguiente (acarreo serie), realizando la suma de manera eficiente.

Unidad Aritmética y Lógica (UAL): El Cerebro Numérico

La Unidad Aritmética y Lógica (UAL) o ALU (Arithmetic Logic Unit) es un componente clave de la CPU. Su función es realizar operaciones aritméticas (suma, resta) y lógicas (AND, OR, XOR, NOT). Podemos visualizarla con operadores básicos, uno lógico (UL) y uno aritmético (UA), que reciben operandos y una orden de operación específica.

  • La Resta en la UAL: La resta se implementa a menudo mediante la suma utilizando el concepto de complemento. Para un número N en base b con p dígitos:
  • Complemento Directo (a la base menos uno) CD(N) = (b^p - 1) - N.
  • Complemento Auténtico (a la base) CA(N) = (b^p) - N, donde CA(N) = CD(N) + 1. En binario, el complemento directo de un número se obtiene invirtiendo todos sus bits. La resta A - B se convierte en A + CA(B).
  • Sumador-Restador en Complemento Auténtico: Un circuito que puede realizar tanto sumas como restas, controlando la operación mediante una señal de entrada (S/R). Si S/R es '0', realiza la suma; si es '1', realiza la resta.

Representación de Datos en la Computadora

Los datos deben codificarse para que la computadora pueda procesarlos. Existen diferentes formatos y códigos para caracteres, números y otros tipos de información.

  • Código Alfanumérico: Convención que asigna una combinación binaria a cada símbolo a representar (letras, números, caracteres especiales).
  • Formato de una Entidad Binaria: Se refiere a la estructura y cantidad de bits de un tipo de dato específico para su tratamiento interno en la computadora.
  • Datos Primitivos en C: Lenguajes de programación como C definen tipos de datos con tamaños y rangos específicos (char, int, float, double, long, short, unsigned, long double).
  • Códigos de Representación de Caracteres: Uno de los más usados es ASCII.
  • ASCII (Código Estándar Americano para Intercambio de Información): Originalmente de 7 bits (128 combinaciones). El ASCII extendido de 8 bits permite 256 combinaciones para incluir más caracteres.
  • Bits de Zona y Bits de Dígito: En la tabla ASCII, los primeros 4 bits de mayor significación son los bits de zona, y los últimos 4 bits son los bits de dígito.
  • Código de Representación Decimal (BCD - Binary-Coded Decimal): Convención que representa los números decimales del 0 al 9 en bloques de 4 bits. El BCD puro o natural (8421) es el más común.
  • Suma y Resta en BCD 8421: Si el resultado de una suma o resta de 4 bits es mayor a 9 (decimal), se le suma 6 (0110 binario) para corregir el valor y generar un acarreo.

Circuitos Secuenciales: Memoria en la Lógica Digital

Los circuitos secuenciales son aquellos cuyas salidas dependen no solo de las entradas actuales, sino también del estado anterior del circuito (tienen memoria). Se caracterizan por lazos de realimentación.

  • Circuitos Secuenciales Asincrónicos: Los cambios de estado se producen por la activación de alguna entrada, sin una señal de reloj.
  • Circuitos Secuenciales Sincrónicos: Los cambios de estado ocurren cuando se establecen las entradas y, además, se genera una transición de una señal de reloj (flanco).

Biestables o Flip-Flops: Celdas de Memoria Básicas

Un biestable (o flip-flop) es una celda binaria capaz de almacenar un bit de información. Tiene dos salidas: el bit almacenado (Q) y su complemento (Q').

  • Biestable R-S Asincrónico: Las entradas R (Reset) y S (Set) controlan el estado. S=1 pone Q en '1', R=1 pone Q en '0'. La combinación S=1, R=1 es indeterminada.
  • Biestable R-S Sincrónico: Similar al asincrónico, pero los cambios en las entradas solo tienen efecto cuando la señal de reloj (CLK) está activa (generalmente en '1' o en un flanco).
  • Biestable J-K Sincrónico: Más versátil que el R-S. J y K son las entradas. J=0, K=0 mantiene el estado; J=0, K=1 pone Q en '0'; J=1, K=0 pone Q en '1'; J=1, K=1 invierte el estado (alterna entre '0' y '1').
  • Biestable T Sincrónico: Derivado del J-K. Cuando T=0, mantiene el estado; cuando T=1, invierte el estado anterior (T de Toggle).
  • Biestable D Sincrónico: D de Delay (retardo). La salida Q adquiere el valor de la entrada D en el flanco del reloj. Retrasa la señal de entrada un ciclo de reloj.

Registros: Almacenamiento y Manipulación de Datos

Los registros son grupos de biestables que almacenan múltiples bits y facilitan el movimiento y la manipulación de datos dentro de la CPU.

  • Registro Paralelo-Paralelo: Transfiere información de entradas en paralelo a salidas en paralelo. Se utilizan biestables D para este fin.
  • Registro Contador: Cuenta eventos o ciclos. Un contador progresivo de 3 bits con biestables T, por ejemplo, puede registrar 8 estados (000 a 111).
  • Registros con Facilidad de Desplazamiento: Cruciales para operaciones como multiplicación y división.
  • Desplazamientos Lógicos (SHL, SHR): Rellenan con '0' el bit del extremo que queda libre. No conservan el signo. SHL (Shift Left) y SHR (Shift Right).
  • Desplazamientos Aritméticos (SAL, SAR): Parecidos a los lógicos, pero mantienen el bit de signo. Multiplican o dividen por potencias de 2. SAL (Shift Arithmetic Left) y SAR (Shift Arithmetic Right).
  • Desplazamientos Circulares (ROL, ROR): Los bits que salen por un extremo vuelven a entrar por el otro, sin pérdida de información. ROL (Rotate Left) y ROR (Rotate Right).
  • Desplazamientos Concatenados: Afectan a un conjunto de dos o más elementos (registros, biestables de acarreo, biestables de signo).
  • Rotación con Acarreo (RCL, RCR): Incluyen el bit de acarreo (CF - Carry Flag) del registro de banderas como una extensión del registro durante la rotación. RCL (Rotate Left Through Carry) y RCR (Rotate Right Through Carry).

Ciclo de Instrucción: Cómo la CPU Ejecuta Programas

El ciclo de instrucción describe los pasos que sigue la CPU para ejecutar cada instrucción de un programa. Se compone principalmente de dos fases.

  • Fase de Búsqueda (Fetch): La Unidad de Control (CU) calcula la dirección física de la instrucción en la memoria principal (usando el Segmento de Código (CS) y el Puntero de Instrucciones (IP)). Envía una orden de lectura (RD) y la instrucción se carga en el Registro de Instrucción (IR).
  • Fase de Ejecución (Execute): La CU interpreta el código de la instrucción. El IP se incrementa para apuntar a la siguiente instrucción. Si la instrucción requiere un dato, se busca (RD) o se guarda (WR) en la memoria o registros. La UAL realiza la operación si es aritmética o lógica. Los resultados pueden actualizar los registros y banderas.
  • Registros Importantes: MAR (Registro de Dirección de Memoria), MDR (Registro de Datos de Memoria), IP (Puntero de Instrucciones), IR (Registro de Instrucción), Registros de Segmento (CS, DS), Registros de Propósito General (AX, BX).
  • Banderas o Flags: Son bits especiales que indican el estado de la CPU o el resultado de una operación. Ejemplos: CF (Carry Flag), ZF (Zero Flag), SF (Sign Flag), OF (Overflow Flag).

Detección y Corrección de Errores

Los errores en la transmisión o almacenamiento de datos son comunes. Los códigos de paridad añaden bits redundantes para detectarlos y corregirlos.

  • Paridad Vertical Simple (a Nivel Carácter): Agrega un bit de paridad a cada byte o palabra para asegurar que el número total de '1's sea par o impar. Detecta errores impares.
  • Paridad Entrelazada: Combina paridad vertical y horizontal en una matriz de datos. Esto permite no solo detectar errores, sino también corregir un solo bit erróneo, identificando la fila y columna del error mediante bits verificadores.

Preguntas Frecuentes sobre Arquitectura de Computadoras

¿Qué es el Álgebra de Boole y por qué es importante en arquitectura de computadoras?

El Álgebra de Boole es un sistema matemático para analizar y simplificar circuitos lógicos. Es crucial porque permite diseñar y entender cómo funcionan los componentes digitales de una computadora, como las compuertas lógicas, que son la base de todas las operaciones y el procesamiento de datos.

¿Cuál es la diferencia entre un circuito combinacional y uno secuencial?

Los circuitos combinacionales, como los sumadores, producen una salida que depende únicamente de sus entradas actuales. Por el contrario, los circuitos secuenciales, como los biestables y registros, tienen memoria y sus salidas dependen tanto de las entradas actuales como del estado anterior del circuito. Esto les permite almacenar información.

¿Cómo se representan los números negativos en una computadora?

Para representar números negativos, las computadoras utilizan principalmente el complemento a 2 (C2). En este sistema, el bit más significativo (MSB) indica el signo (0 para positivo, 1 para negativo). Los números positivos se representan en su magnitud binaria, mientras que los negativos se representan como el complemento a 2 de su magnitud, lo que facilita la suma y resta utilizando el mismo hardware del sumador. Para obtener el complemento a 2, se invierten todos los bits del número binario y se le suma uno.

¿Qué función cumple la UAL en la CPU?

La UAL (Unidad Aritmética y Lógica) es el componente de la CPU responsable de ejecutar todas las operaciones aritméticas (como suma, resta) y lógicas (como AND, OR, NOT). Esencialmente, es el "cerebro" que realiza los cálculos y toma de decisiones básicas dentro del procesador, bajo la dirección de la Unidad de Control (CU).

¿Qué es el ciclo de instrucción y cuáles son sus fases principales?

El ciclo de instrucción es el proceso fundamental que una CPU sigue para ejecutar una sola instrucción de un programa. Sus fases principales son la Fase de Búsqueda (Fetch), donde la CPU recupera la instrucción de la memoria, y la Fase de Ejecución (Execute), donde la CPU decodifica la instrucción, obtiene los datos necesarios y realiza la operación especificada.

Temas relacionados