Arquitectura de ordenadores
La arquitectura de ordenadores describe la organización lógica y física de los componentes que permiten almacenar y procesar información. El modelo de referencia es la arquitectura de Von Neumann, propuesta por John von Neumann (físico y matemático húngaro-estadounidense). Define un ordenador digital de programa almacenado: una máquina que mantiene tanto sus instrucciones de programa como sus datos en una misma memoria de acceso aleatorio (RAM) de lectura-escritura.
Unidades funcionales de Von Neumann
-
Unidad Central de Proceso (CPU) o microprocesador: ejecuta las instrucciones de los programas y coordina las operaciones del sistema. Es el componente principal que ejecuta las instrucciones de un conjunto especificado.
-
Memoria principal: almacena los programas y datos necesarios para el procesador. Durante la ejecución, la CPU accede continuamente a la memoria principal para obtener datos e instrucciones y almacena allí los resultados parciales o finales.
-
Unidad de entrada/salida (E/S): facilita la comunicación entre el ordenador y los dispositivos externos (teclados, monitores, dispositivos de almacenamiento).
-
Buses: proveen una ruta compartida para la transmisión de datos entre componentes. Las líneas del bus del sistema se clasifican en datos, dirección y control. Muchas arquitecturas soportan Bus Mastering, que permite a un dispositivo iniciar operaciones de acceso directo a memoria (DMA, Direct Memory Access), leyendo o escribiendo en memoria de forma independiente de la CPU principal.
La arquitectura Harvard, por contraste, utiliza memorias separadas para datos e instrucciones, con buses independientes, de modo que la RAM queda dividida en dos espacios distintos. Se emplea hoy en cachés privadas de niveles bajos, cercanas a los núcleos. La limitación de Von Neumann es el uso de un único canal para datos e instrucciones, origen del cuello de botella de Von Neumann: una limitación en la velocidad de comunicación entre la CPU y la memoria. Puede aliviarse por varias vías (cachés, prebúsqueda, buses más anchos).
Componentes internos de la CPU
Los elementos fundamentales de una CPU son la Unidad Aritmético-Lógica (ALU), la Unidad de Control (CU) y los registros internos.
-
ALU: realiza todas las operaciones aritméticas y lógicas (AND, OR, NOT, etc.). Recibe como datos de entrada operandos. Su diseño influye en las operaciones que la ISA (Arquitectura del Conjunto de Instrucciones) puede soportar. Las ALU actuales incorporan capacidad para operaciones de punto flotante. La ALU no almacena ni recupera información de la memoria del sistema (eso corresponde a la CU y a la memoria) y no contiene el registro de instrucciones.
-
Unidad de Control (CU): supervisa la transferencia de información e indica a la ALU qué operación ejecutar; regula las señales de escritura/lectura y el estado de funcionamiento de la memoria interna, e inicia el entorno de ejecución de los programas.
-
Registros: el contador de programa contiene la dirección de la instrucción a ejecutar; el registro de instrucciones contiene la instrucción que se está ejecutando; el registro de dirección de memoria determina la capacidad de memoria direccionable (según su número de bits). El primer paso para escribir un dato es transferir la dirección de escritura al registro de dirección.
El ancho de palabra es el número de bits que el ordenador maneja en paralelo. El ciclo de instrucción consta de las fases fetch, decode, execute y writeback. Según cómo se acceda al operando, el direccionamiento puede ser inmediato (el dato está dentro de la propia instrucción), directo, indirecto e indexado.
Jerarquía de memoria y caché
La memoria secundaria y auxiliar se refiere a la capacidad de almacenamiento en disco duro y soportes ópticos y magnéticos, frente a la memoria principal (rápida y volátil). La memoria caché almacena temporalmente datos e instrucciones de uso frecuente para reducir la latencia de acceso a la memoria principal. Las cachés se organizan por niveles: cuanto más cerca del núcleo, más rápidas y de menor capacidad. La caché L1 está integrada en cada núcleo del procesador (cada núcleo tiene la suya, privada, normalmente dividida en caché de instrucciones y caché de datos): es la más rápida y la de menor capacidad (decenas de KB por núcleo). La L2 tiene mayor capacidad y es algo más lenta que la L1; en muchos procesadores actuales también es privada de cada núcleo. La L3 (o caché de último nivel, LLC) tiene mayor capacidad pero es más lenta que L2 y L1, y suele estar compartida entre todos los núcleos. Un fallo de caché (miss) ocurre cuando los datos solicitados no están en la caché. En la caché exclusiva, los datos se eliminan de la caché de procedencia una vez transferidos al nuevo nivel. La ubicación de bloques puede ser asociativa por conjuntos (la caché se divide en conjuntos con un número fijo de bloques). Las cachés web se clasifican en privadas, compartidas y de pasarela (gateway).
RISC, CISC, ARM y RISC-V
Los procesadores CISC (Complex Instruction Set Computing) disponen de un conjunto complejo de instrucciones. Los RISC (Reduced Instruction Set Computer) tienen un conjunto limitado de instrucciones simples, lo que aporta mayor eficiencia energética. La técnica de pipeline (segmentación) reduce el número de ciclos de reloj necesarios por instrucción. ARM significa Advanced RISC Machine: una arquitectura avanzada para microprocesadores RISC, la más utilizada en dispositivos móviles (smartphones y tabletas); usa un conjunto limitado de instrucciones simples. RISC-V es una arquitectura ISA de hardware libre.
Paralelismo, multiprocesamiento y computación distribuida
La taxonomía de Flynn clasifica según el número de flujos de instrucciones y datos: la arquitectura de Von Neumann encaja en SISD (una instrucción, un dato); MIMD designa varios procesadores autónomos que ejecutan simultáneamente instrucciones diferentes sobre datos diferentes. La segmentación (instruction pipelining) es la técnica frecuente para incrementar el paralelismo; el paralelismo a nivel de instrucción (ILP) busca aumentar la tasa de ejecución de instrucciones y la utilización de recursos. Una operación pipelined en la ALU divide las suboperaciones de una tarea entre varios ciclos de reloj.
Los sistemas multiprocesador utilizan dos o más procesadores en un mismo equipo. El multiprocesamiento simétrico (SMP) o de memoria compartida (MMC) comparte recursos como la memoria del sistema; se subdivide en UMA y NUMA. Con ocho o más procesadores aparecen cuellos de botella y ralentización. Sistemas operativos preparados para SMP: Windows 2000, XP y Linux. Un clúster es un sistema paralelo distribuido de ámbito local; la arquitectura en malla (GRID) utiliza de forma coordinada recursos heterogéneos. La escalabilidad vertical consiste en incrementar hardware en uno de los nodos.
Lógica y rendimiento
El álgebra de Boole cumple, entre otras, la propiedad conmutativa. Con a=1 y b=1, a OR b = 1; la OR exclusiva (XOR) se representa como a⊕b. La Ley de Amdahl describe la limitación del rendimiento por la presencia de un componente lento. FLOPS indica el número de operaciones de coma flotante por segundo, y MIPS, los millones de instrucciones de máquina por segundo.
Evolución histórica
El transistor aparece por primera vez en la segunda generación (1959-1964). La ALU integrada en un microprocesador surge por primera vez en la cuarta generación. Teclado y ratón son periféricos de entrada; los auriculares son de salida.
Fuentes
-
Michael J. Flynn — Flynn's taxonomy (SISD/SIMD/MISD/MIMD): https://en.wikipedia.org/wiki/Flynn%27s_taxonomy
-
RISC-V International — free and open ISA: https://riscv.org/specifications/ratified/
-
Arm — What is RISC / Advanced RISC Machine: https://www.arm.com/glossary/risc
-
IETF RFC 9111 — HTTP Caching (private/shared caches): https://datatracker.ietf.org/doc/html/rfc9111
-
MDN Web Docs — HTTP caching: https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching
-
Wikipedia — Segunda generación de computadoras (transistor, 1959-1964): https://es.wikipedia.org/wiki/Segunda_generaci%C3%B3n_de_computadoras
-
Intel — What Is the Difference in Cache Memory Between CPUs for Intel® Xeon® Scalable Processors? (L1/L2 por núcleo, L3 compartida): https://www.intel.com/content/www/us/en/support/articles/000027820/processors/intel-xeon-processors.html
-
Arm — Learn the Architecture, A-profile: Caches: https://developer.arm.com/documentation/den0024/a/Caches