Fundamentos de Arquitectura de Computadoras

Domina los fundamentos de la arquitectura de computadoras con esta guía esencial. Aprende lógica booleana, circuitos, UAL, representación de datos y ciclo de instrucción. ¡Prepara tu examen!

La arquitectura de computadoras es el estudio fundamental de cómo se diseñan y funcionan los sistemas informáticos. Comprender sus principios es clave para cualquier estudiante de tecnología, abarcando desde la lógica digital básica hasta el ciclo de vida de una instrucción en la CPU. Este artículo explorará los fundamentos esenciales para una comprensión sólida.

Fundamentos de Arquitectura de Computadoras: Lógica Booleana y Circuitos Digitales

Los cimientos de la computación se encuentran en la Lógica booleana, un sistema matemático que permite representar y manipular valores de verdad (verdadero/falso o 1/0). Es crucial para el diseño de circuitos digitales.

Álgebra de Boole y Funciones Booleanas

El Álgebra de Boole se aplica para simplificar expresiones lógicas, lo que resulta en circuitos más eficientes. Las funciones booleanas se expresan de diversas formas:

  • Tabla de Verdad: Muestra todas las posibles combinaciones de entradas y sus salidas correspondientes.
  • Expresiones Literales: Como la suma de productos, que puede ser canónica si contiene todas las variables, como en AL = S2.S1.S0 + S2.S1'.S0 + S2.S1.S0' + S2.S1.S0 (donde ' indica negación).
  • Expresiones en Minitérminos: Una forma compacta de las expresiones canónicas, por ejemplo, AL = m3 + m5 + m6 + m7.

Un ejemplo clásico es el sistema de seguridad contra incendios de un depósito con tres sensores (S0, S1, S2). Una alarma luminosa (AL) se activa con dos sensores en '1', y una alarma sonora (AS) se enciende si S2 está activo.

Circuitos con Compuertas Lógicas

Las funciones booleanas se implementan físicamente con compuertas lógicas (AND, OR, NOT, XOR, XNOR, etc.). Estas compuertas realizan las operaciones lógicas y son los bloques constructivos de todos los circuitos digitales.

Las compuertas XNOR, por ejemplo, producen una salida '1' solo cuando el número de entradas en '1' es par.

Sumadores Binarios: Cómo las Computadoras Realizan Operaciones Aritméticas

Una parte esencial de la arquitectura de computadoras es la capacidad de realizar operaciones aritméticas, fundamentalmente la suma.

Semisumador (Half Adder - HA)

El semisumador es un circuito básico que suma dos bits sin considerar un acarreo de entrada. Produce dos salidas:

  • Suma (S0): a0 XOR b0
  • Acarreo (C0): a0 AND b0

Sumador Completo (Full Adder - FA)

El sumador completo expande la funcionalidad del semisumador al sumar dos bits y un acarreo anterior. Sus salidas son el resultado de la suma y un nuevo acarreo, lo que permite la suma de números binarios de múltiples bits.

Sumador Binario en Paralelo

Para sumar números binarios de más de un bit (ej. 4 bits), se utilizan varios sumadores completos conectados en serie, donde el acarreo de cada etapa se convierte en la entrada de acarreo de la siguiente. Esto forma un sumador binario en paralelo con acarreo serie.

La Unidad Aritmética y Lógica (UAL): El Cerebro de las Operaciones

La Unidad Aritmética y Lógica (UAL) es un componente vital de la CPU. Su función es ejecutar todas las operaciones lógicas (AND, OR, XOR) y aritméticas (suma, resta).

Consiste en una estructura con un operador lógico (UL) y uno aritmético (UA), que reciben operandos (datos) y una orden de operación para indicar la tarea a realizar.

Representación de Datos en Arquitectura de Computadoras

Las computadoras procesan datos en formato binario. La forma en que se representan estos datos es crucial para su correcto manejo.

Códigos Alfanuméricos: ASCII y Unicode

Los códigos alfanuméricos asignan combinaciones binarias a símbolos, letras y números. El más conocido es ASCII (Código Estándar Americano para el Intercambio de Información):

  • ASCII de 7 bits: 128 combinaciones (2^7) para 128 símbolos.
  • ASCII extendido (8 bits): 256 combinaciones (2^8) para más caracteres.

Los bits de zona (los 4 más significativos) y los bits de dígito (los 4 menos significativos) estructuran la tabla ASCII. Por ejemplo, 'A' es 0100 0001 en binario.

Para representar una gama más amplia de caracteres, como los de diferentes idiomas, se utiliza el código Unicode.

Formato de Datos y Tipos Primitivos

El formato de una entidad binaria define la estructura y cantidad de bits para un tipo de dato. Lenguajes como C tienen datos primitivos con formatos específicos:

  • char: Carácter (1 byte, -128 a 127)
  • int: Entero con signo (2 bytes, -32768 a 32767)
  • float: Flotante simple (4 bytes, +/- 3.4 x 10^-38 a 3.4 x 10^38)
  • double: Flotante doble (8 bytes, +/- 1.7 x 10^-308 a 1.7 x 10^308)
  • long: Entero largo con signo (4 bytes, -2147483648 a 2147483647)
  • short: Entero corto con signo (2 bytes, -32768 a 32767)
  • long double: Flotante extendido (10 bytes, +/- 3.4 x 10^-4932 a 1.1 x 10^4932)
  • unsigned: Entero sin signo (2 bytes, 0 a 65535)

Código de Representación Decimal (BCD)

El BCD (Binary Coded Decimal) es una convención que representa números decimales del 0 al 9 en bloques binarios de 4 bits. El BCD puro o natural es el 8421.

Para sumas y restas en BCD 8421:

  • Si el resultado de una suma de 4 bits es mayor a 9 (decimal 10), se le suma 6 (binario 0110) para corregirlo y generar el acarreo.
  • La resta se puede realizar sumando el complemento a 1 del sustraendo y ajustando con la suma de 6, si es necesario.

Representación de Números Enteros: Coma Fija

La representación de coma fija se usa para números enteros. Puede ser:

  • Sin signo: La totalidad de los n bits se usa para la magnitud. Rango: (0, 2^n - 1).
  • Con signo (Complemento a 2 - C2): El bit más significativo (MSB) indica el signo (0 para positivo, 1 para negativo). Los números positivos se representan por su magnitud. Los negativos se representan por el complemento a 2 de su magnitud. Rango: (-2^(n-1), 2^(n-1) - 1).

Por ejemplo, para n=8, un entero sin signo 10010100 es 148. Como entero en C2, 10010100 es -108 (primero se invierten los bits, se suma 1, y el resultado es negativo).

Circuitos Secuenciales y Biestables: Almacenamiento de Información

Los circuitos secuenciales son aquellos cuyas salidas dependen tanto de las entradas actuales como de su estado anterior, lo que implica lazos de realimentación. Son la base de la memoria digital.

  • Asincrónicos: Cambian solo por activación de entradas.
  • Sincrónicos: Cambian cuando las entradas están estables Y hay una transición en la señal de reloj (CLK).

Biestables o Flip-Flops: La Celda de Memoria

Un biestable (o flip-flop) es la unidad básica de memoria, capaz de almacenar un bit de información. Tienen dos salidas complementarias (Q y Q').

Existen varios tipos de biestables:

  • Biestable R-S (Set-Reset): El más básico, puede ser asincrónico (cambia instantáneamente) o sincrónico (requiere CLK). La combinación S=1, R=1 es un estado indeterminado.
  • Biestable J-K: Versátil. Permite mantener el estado (J=0, K=0), forzar Q=0 (J=0, K=1), forzar Q=1 (J=1, K=0) o invertir el estado (J=1, K=1).
  • Biestable T: Derivado del J-K. Si T=0, mantiene el estado; si T=1, lo invierte.
  • Biestable D (Delay): También derivado del J-K. La salida Q copia la entrada D con un retardo de un ciclo de reloj. Si D=0, Q* = 0; si D=1, Q* = 1.

Registros: Almacenamiento y Manipulación de Bits

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

Tipos de Registros

  • Registros Paralelo-Paralelo: Transfieren información de entrada en paralelo a salidas en paralelo, generalmente usando biestables D.
  • Registros Contadores: Cuentan eventos, como un contador progresivo de 3 bits con biestables T.
  • Registros con Facilidad de Desplazamiento: Cruciales para operaciones como la multiplicación (sumas y desplazamientos) y división (restas y desplazamientos). Permiten mover bits a la izquierda o derecha.

Tipos de Desplazamientos

Las instrucciones de desplazamiento manipulan bits dentro de un registro:

  • Desplazamientos Lógicos:
  • SHL (Shift Left): Desplaza bits a la izquierda, insertando un '0' en el LSB y el MSB va al bit de acarreo (CF).
  • SHR (Shift Right): Desplaza bits a la derecha, insertando un '0' en el MSB y el LSB va al CF.
  • Desplazamientos Aritméticos: Conservan el signo para números signados.
  • SAL (Shift Arithmetic Left): Similar a SHL, el MSB va al CF y se inserta '0' en el LSB.
  • SAR (Shift Arithmetic Right): Desplaza a la derecha, el LSB va al CF, pero el MSB (bit de signo) se mantiene.
  • Desplazamientos Circulares (Rotaciones): Los bits que salen por un extremo reingresan por el otro.
  • ROL (Rotate Left): El MSB va al CF y también al LSB.
  • ROR (Rotate Right): El LSB va al CF y también al MSB.
  • Rotaciones con Acarreo: Utilizan el bit de acarreo (CF) como una extensión del registro.
  • RCL (Rotate Left Through Carry): Los bits rotan a la izquierda arrastrando el CF. El CF se convierte en el LSB, y el MSB original se convierte en el nuevo CF.
  • RCR (Rotate Right Through Carry): Los bits rotan a la derecha arrastrando el CF. El CF se convierte en el MSB, y el LSB original se convierte en el nuevo CF.
  • Desplazamientos Concatenados: Afectan a dos o más elementos conectados, como dos registros o un registro y el biestable de acarreo o signo.

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

El ciclo de instrucción es el proceso fundamental que sigue la CPU para ejecutar cada instrucción de un programa. Se divide en varias fases:

Fases del Ciclo de Instrucción

  1. Fase de Búsqueda (Fetch):
  • Cálculo de la dirección física de la instrucción (a partir de Segmento:Desplazamiento, ej. CS:IP).
  • Orden de lectura (RD) a la memoria principal.
  • Carga de la instrucción en el Registro de Instrucción (IR).
  1. Fase de Ejecución (Execute):
  • Interpretación (decodificación) del código de la instrucción.
  • Incremento del Instruction Pointer (IP) para apuntar a la siguiente instrucción.
  • Búsqueda o almacenamiento del dato (RD/WR), si la instrucción lo requiere.
  • Generación de la orden al módulo correspondiente (ej. ALU) para operar con el dato.

CPU, Memoria y Registros

La CPU consta de la Unidad de Control (CU), que emite órdenes secuenciales y sincrónicas, y la UAL, que procesa datos. La Memory Management Unit (MMU) gestiona el acceso a la memoria.

La memoria principal se organiza en una matriz de M x N bits. El bus de direcciones (A líneas, 2^A = M), el bus de datos (N líneas) y el bus de control (líneas como CS para habilitar chips) permiten la comunicación.

Los registros dentro de la CPU (como AX, BX, CX, DX para datos; CS, DS, SS, ES para segmentos; IP para la siguiente instrucción) almacenan datos y direcciones temporalmente durante el ciclo.

Banderas y Registro de Estado (Flags)

El Registro de Estado (Flags Register) contiene bits que reflejan el resultado de las operaciones de la UAL o controlan el comportamiento de la CPU:

  • Carry Flag (CF): Acarreo en operaciones aritméticas.
  • Parity Flag (PF): Paridad par/impar del resultado.
  • Auxiliary Carry Flag (AF): Acarreo en el bit 3 para operaciones BCD.
  • Zero Flag (ZF): Resultado es cero.
  • Sign Flag (SF): Resultado es negativo.
  • Interruption Flag (IF): Habilita/deshabilita interrupciones.
  • Direction Flag (DF): Dirección para operaciones con cadenas (adelante/atrás).
  • Overflow Flag (OF): Desbordamiento en operaciones con signo.

Códigos de Detección y Corrección de Errores

Para asegurar la integridad de los datos, se utilizan códigos redundantes que añaden bits extra para detectar y corregir errores causados por el "ruido". La tasa de error determina el código a usar.

Paridad Vertical Simple

A nivel de carácter, se añade un bit de paridad para que el número total de '1's sea siempre par o impar. Detecta errores de un solo bit en un carácter.

Paridad Entrelazada (Vertical + Horizontal)

Combinando paridad vertical y horizontal, la paridad entrelazada permite no solo detectar sino también corregir errores. Si se detecta un error en la fila y columna de un bit, se invierte ese bit para corregirlo.

Preguntas Frecuentes sobre Arquitectura de Computadoras

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

El Álgebra de Boole es un sistema matemático para operaciones lógicas (verdadero/falso o 1/0). Es fundamental en la arquitectura de computadoras porque permite diseñar, analizar y simplificar los circuitos digitales que forman la base de todos los componentes de una computadora, como las compuertas lógicas y los sumadores.

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

Los números negativos en una computadora se representan comúnmente utilizando el convenio de Complemento a 2 (C2) en formatos de coma fija con signo. En este sistema, el bit más significativo (MSB) indica el signo (0 para positivo, 1 para negativo), y los números negativos se obtienen calculando el complemento a 2 de su magnitud positiva.

¿Cuál es la diferencia entre un biestable J-K y un biestable D?

La principal diferencia radica en su comportamiento y número de entradas. Un biestable J-K es muy versátil, permitiendo mantener el estado, forzar a 0 o 1, o invertir el estado de la salida Q. Un biestable D (Delay) es más simple, su salida Q copia el valor de su única entrada D, pero con un retardo de un ciclo de reloj. El biestable D es ideal para el almacenamiento de datos sencillos, mientras que el J-K se usa más en contadores y registros complejos.

¿Qué son los desplazamientos aritméticos y lógicos en los registros?

Los desplazamientos lógicos (SHL, SHR) mueven bits a la izquierda o derecha e insertan '0's en el extremo opuesto, sin considerar el signo del número. Son útiles para manipular bits. Los desplazamientos aritméticos (SAL, SAR) también mueven bits, pero están diseñados para operar con números signados, manteniendo el bit de signo. Los desplazamientos aritméticos a la izquierda multiplican por potencias de 2, y a la derecha dividen por potencias de 2.

Temas relacionados