La Computadora Digital y sus Niveles de Abstracción
Una Computadora Digital ejecuta un conjunto de instrucciones que conforman un programa. Los niveles más bajos de abstracción utilizan el lenguaje máquina, mientras que los niveles más altos son utilizados por los programadores de aplicaciones. La computadora es capaz de realizar operaciones aritméticas (restar, sumar y multiplicar), lógicas (verificar si un número es igual a cero) y de movimiento de datos (copiar datos de un sector a otro).
Cada nivel de la arquitectura posee su propio lenguaje, y el nivel subsiguiente debe interpretarlo o traducirlo para su ejecución.
Niveles de la Arquitectura de la Computadora
Los niveles del 0 al 3 son numéricos (lenguaje máquina) y son utilizados principalmente por los programadores de sistemas. Los siguientes niveles (4 y 5), basados en palabras y abreviaturas, facilitan el entendimiento y son usados por los programadores de aplicaciones.
Niveles de Lenguaje Máquina (0-3)
- Nivel 0: Lógica Digital (Electrónica). Compuesto por compuertas (basadas en transistores) AND, OR y NOT, que dan como resultado 1 o 0 en su salida. El conjunto de salidas puede formar una memoria de un bit. Estas memorias se agrupan en 16, 32 o 64 bits para formar registros, cada uno con un valor no mayor a 264. La combinación de compuertas forma la máquina calculadora. (A nivel industrial, representa el “proceso físico”).
- Nivel 1: Nivel de Microarquitectura. Almacena los registros (de 8 a 32) que forman una memoria local dentro de la CPU. Opera uno o dos registros mediante un circuito ALU (Unidad Lógico-Aritmética) y guarda el resultado en otro registro, formando una trayectoria de datos. Esta trayectoria se controla mediante un programa llamado microprograma, que maneja el intérprete, o directamente por hardware. (A nivel industrial, representa los sensores y actuadores).
- Nivel 2: Nivel de Arquitectura del Conjunto de Instrucciones (ISA). Es el manual del lenguaje de la máquina, que describe las instrucciones que son interpretadas por hardware o por un microprograma. (A nivel industrial, muestra el proceso en tiempo real, obteniendo información de los niveles anteriores, como el control de supervisión “PLC” y el monitoreo “SCADA”).
- Nivel 3: Nivel de Máquina del Sistema Operativo. Es un nivel híbrido, ya que utiliza parte del Nivel 2 para leer instrucciones ISA con el microprograma/hardware, y las demás instrucciones las lee con su sistema operativo (Windows, Linux, etc.). Tiene la capacidad de ejecutar dos o más programas al mismo tiempo.
Niveles de Lenguaje de Aplicación (4-5)
- Nivel 4: Lenguaje Ensamblador. Utiliza un método traductor. El código se escribe en un lenguaje simbólico y los niveles anteriores lo interpretan.
- Nivel 5: Lenguajes de Alto Nivel. Utiliza intérpretes o traductores mediante compiladores para programas de aplicaciones escritos en lenguajes como C++, Java, etc. Estos códigos aportan datos y operaciones para resolver problemas complejos.
Hardware y Software: Conceptos Fundamentales
- HARDWARE
- Conjunto de registros, compuertas, y dispositivos de Entrada/Salida (E/S). Son objetos tangibles que priorizan la rapidez y la confiabilidad, operando a menudo en “tiempo real”.
- SOFTWARE
- Algoritmos e instrucciones sobre cómo realizar una tarea (ej. un programa). El software, en comparación con la implementación por hardware, suele ser de menor costo y permite una mayor frecuencia de cambios.
Sucesos Históricos Clave en la Computación
- 1834 – Máquina Analítica (Babbage): Primer intento de construir una computadora digital. Contaba con memoria, unidad de cómputo, entradas y salidas.
- 1936 – Z1 (Zuse): Primera máquina calculadora de relés funcional.
- 1943 – COLOSSUS (Gobierno inglés): Primera computadora electrónica.
- 1946 – ENIAC I (Eckert/Mauchley): Inicio de la historia moderna de la computación.
- 1952 – IAS (Von Neumann): Diseño base de casi todas las computadoras actuales. Tenía memoria, unidad aritmética lógica, equipo de control, entradas y salidas.
- 1964 – IBM 360 (IBM): Primera línea de productos diseñada como familia.
- 1965 – CDC 6600 (CDC): Primera supercomputadora.
- 1974 – Intel 4004 (Intel): Primera computadora de uso general de 8 bits con chip.
- 1974 – CRAY-1 (Cray): Primera supercomputadora vectorial.
- 1978 – VAX (DEC): Creación de la primera minicomputadora de 32 bits.
- 1978 – Intel 8086: Lanzamiento de un microprocesador de 16 bits, cuya arquitectura es la base de todas las PC modernas.
- 1981 – IBM PC (IBM): Inicio de la era de la computadora personal moderna.
- 1985 – MIPS (MIPS): Primera máquina RISC comercial.
Arquitectura del Procesador (CPU)
El CPU (Unidad Central de Procesamiento) es el cerebro de la computadora. Ejecuta los programas siguiendo sus instrucciones, las cuales están almacenadas en la memoria. Sus componentes internos están conectados a través de un bus, que también puede ser externo al conectarse a la memoria principal y a los dispositivos de E/S.
Componentes Internos del CPU
El CPU se compone de dos partes principales:
- Unidad de Control y ALU: La unidad de control busca instrucciones de la memoria principal (registros) y la ALU ejecuta las operaciones aritméticas y lógicas.
- Memoria Interna (Caché) y Registros: Posee una memoria interna pequeña y veloz (caché). Contiene registros clave como el Registro de Instrucciones (IR), que almacena la instrucción que se está ejecutando, y el Contador de Programa (PC), que apunta a la próxima instrucción a ejecutar.
La parte interna contiene el camino o la trayectoria de datos (registros), la ALU y la unidad de control. La parte externa contiene los buses externos hacia memorias RAM, etc. Estos buses son de Dirección (indican la ubicación de memoria para leer o escribir), de Datos (para el envío de información) y de Control (para indicar la operación de lectura o escritura).
RISC vs. CISC
Estas son dos filosofías de diseño de conjuntos de instrucciones:
- RISC (Reduced Instruction Set Computer): Se diferencia del CPU convencional y se implementa en chips que no tienen que seguir productos existentes, permitiendo a los fabricantes crear nuevas instrucciones propias. Lee las instrucciones muy velozmente ya que no las interpreta, pero solo puede inicializar pocas instrucciones. El programa realiza la ejecución instrucción por instrucción.
- CISC (Complex Instruction Set Computer): El sistema tradicional (utilizado por IBM, VAX, Intel) puede inicializar instrucciones más complejas y en mayor cantidad. El programa realiza todas las instrucciones de manera integrada.
Con el tiempo, las arquitecturas se han vuelto híbridas; por ejemplo, Intel incorpora un núcleo RISC para ejecutar las instrucciones más sencillas y utiliza CISC para las más complejas.
Little-endian vs. Big-endian
Define el orden en que se almacenan los bytes de una palabra en memoria:
- Big-endian (IBM): Los bytes se ordenan de izquierda a derecha (el byte más significativo primero).
- Little-endian (INTEL): Los bytes se ordenan de derecha a izquierda (el byte menos significativo primero).
Ambos métodos leen correctamente enteros y caracteres. El problema surge cuando una máquina envía datos a otra máquina a través de la red. En estos casos, se utiliza una función que invierte el orden de los bytes para asegurar la coherencia en la red. Las PC basadas en procesadores Intel (IBM PC, AT, XT, etc.) usan little endian, tal como lo definió Intel desde el 8086.
Jerarquía de Memorias
La solución para almacenar grandes cantidades de memoria es dividirla por jerarquía, optimizando la velocidad y el costo:
- Registros del CPU: Máxima velocidad, capacidad mínima.
- Caché: Típicamente 32 KB o más.
- Memoria Principal (RAM): > 16 MB a varios GB.
- Discos Magnéticos: Almacenamiento permanente.
- Cintas y Discos Ópticos: Almacenan archivos de respaldo.
Al descender en la pirámide, el tiempo de acceso (latencia) aumenta, la capacidad de memoria asciende y el costo por bit desciende.
RAID (Redundant Array of Independent Disks)
El desempeño de las CPU creció rápidamente, pero el de los discos no. RAID busca acelerar el procesamiento y mejorar la confiabilidad mediante la implementación de procesamiento y E/S en paralelo al disco general.
RAID se genera con un conjunto de discos de bajo costo que sustituyen al controlador de disco. Los datos se copian en estos discos, y el software los percibe como un solo disco lógico. Los datos e instrucciones se distribuyen en todas las unidades para operar en paralelo.
Niveles de RAID
Los niveles 0 y 1 dividen el disco virtual en tiras (sectores):
- NIVEL 0 (Striping): Utilizado para datos grandes. Es deficiente en confiabilidad; si un conjunto de cuatro discos soporta 20,000 horas, un disco fallará a las 5,000 horas, perdiéndose la información (no es redundante). Su rival fue SLED (Single Large Expensive Disk), que era más costoso, pero si duraba 20,000 horas, tardaba cuatro veces más en romperse y era más confiable.
- NIVEL 1 (Mirroring): Realiza copias exactas de los discos originales (total de ocho unidades para cuatro discos lógicos). Nunca se pierden datos. La desventaja es que se escribe dos veces la misma información, pero se puede leer tanto en el disco original como en la copia.
- NIVEL 2: Funciona en base a palabras o bytes. El rendimiento es bueno y no importa si se pierde un bit. La desventaja es que todas las unidades deben estar sincronizadas y exige al controlador aplicar código Hamming a los bits.
- NIVEL 3: Similar al Nivel 2, pero aplica un bit de paridad. Detecta errores aleatorios, pero solo corrige errores de bit de paridad.
- NIVEL 4 y 5: Funcionan con tiras. El Nivel 4 agrega paridad a cada tira en una unidad extra. Si un bit falla, se puede recuperar gracias a esta paridad. Es lento frente a actualizaciones porque tiene que leer todo, recalcular la paridad y volver a escribirla. Para mitigar esto, se aplica el Nivel 5, donde la paridad se coloca distribuida en cada unidad, aunque si una unidad falla, el proceso de reconstrucción es complejo.
Buses y Dispositivos de Entrada/Salida (E/S)
El bus es la vía de comunicación para la CPU, las memorias y los dispositivos de E/S.
Cada dispositivo de E/S tiene dos partes: los circuitos electrónicos denominados controlador y la unidad física de E/S (como una unidad de disco).
El controlador domina su dispositivo de E/S y maneja el bus. Cuando el disco requiere datos, el controlador lee la orden y realiza el envío.
Acceso Directo a Memoria (DMA)
Un controlador que lee o escribe datos en la memoria sin intervención de la CPU está realizando un Acceso Directo a Memoria (DMA). Una vez realizada la transferencia, el controlador interrumpe y obliga al CPU a detener el programa actual para ejecutar el manejador de interrupciones. Este manejador verifica errores, efectúa acciones e informa al Sistema Operativo (SO) que la operación de E/S ha finalizado, permitiendo que el programa detenido se reanude.
Arbitraje de Bus y Robo de Ciclos
Si se utiliza el mismo bus para la CPU y el controlador de E/S, las E/S tienen prioridad (decidida por el “árbitro de bus”), ya que los discos y dispositivos móviles pierden datos si se detienen, mientras que la CPU puede parar y seguir.
Si el CPU se utiliza hasta que la E/S se activa y lo frena, esto ralentiza la PC y se denomina robo de ciclos.
Evolución de los Buses
Debido al aumento de velocidad del CPU, las memorias y las E/S, el bus tradicional dejó de manejar la carga. IBM PC fabricó una máquina “PS/2” con un bus nuevo, pero las fábricas siguieron utilizando el bus antiguo llamado ISA (Arquitectura Estándar de la Industria). Tras el fracaso del nuevo bus, se volvió a adaptar el bus ISA.
La solución fue crear múltiples buses, como el bus PCI (Interconexión de Componentes Periféricos) desarrollado por Intel. Su configuración permite que el controlador se conecte con la CPU y con el bus ISA (sin que los datos del CPU fluyan por este). Además, se conecta a periféricos de gran ancho de banda (tasa de datos elevada) como discos SCSI, y tiene un puente con el bus ISA que permite utilizar controladores ISA y sus dispositivos.
Servidores y Sistemas de Control
Servidores
Son equipos informáticos que proporcionan servicios e información a otros servidores y usuarios, generalmente de mayores dimensiones que una PC. Cuentan con varios procesadores y núcleos, mayor RAM y múltiples discos duros.
Tipos de Servidores
Existen servidores de impresión, web, bases de datos, comunicación y seguridad. Se utilizan para gestionar recursos, datos y aplicaciones en una red.
- Local: Gestionado físicamente por la empresa.
- En la Nube: Ubicado en centros de datos remotos y es escalable.
SCADA (Supervisory Control and Data Acquisition)
Es un software de monitoreo que accede a datos remotos de un proceso y, con herramientas de comunicación, realiza el control del mismo. Es económico, flexible y de mantenimiento sencillo.
A diferencia del HMI (Interfaz Hombre-Máquina), SCADA ya incluye el HMI, además de bases de datos, servidores y control de diversos procesos.