Tema 3. Componentes, estructura y funcionamiento de la Unidad Central de Proceso
1. Índice
2. Vinculación curricular
- SMR / Montaje y mantenimiento de equipos → identifica la arquitectura, los componentes y las características del microprocesador para ensamblar e intervenir equipos.
- ASIR / Fundamentos de hardware → reconoce los bloques funcionales y sus parámetros de rendimiento para evaluar y configurar sistemas informáticos.
3. Introducción
En 1945, el matemático John von Neumann propuso una arquitectura de ordenadores que definió la separación física entre la memoria (el dispositivo que retiene los datos y los programas) y la unidad de procesamiento (el sistema lógico que realiza los cálculos).
Antes de este diseño, operar una máquina exigía reconfigurar cables a mano para cada tarea diferente. Al aislar la memoria, los ordenadores pasaron a almacenar las secuencias de órdenes en formato digital, lo que simplificó el desarrollo de la informática.
La Unidad Central de Proceso (o CPU) es el circuito electrónico principal que funciona como cerebro del sistema. La CPU lee, interpreta y ejecuta de forma secuencial las instrucciones (órdenes lógicas y aritméticas) dictadas por los programas de software. Además de procesar información, la CPU coordina el flujo de los datos entre el resto de dispositivos del sistema, como los discos de almacenamiento y las tarjetas de red.
Para procesar la información, la CPU sigue una pauta de trabajo denominada ciclo de instrucción. Primero, el procesador recupera la instrucción almacenada en la memoria. Después, la unidad de control interna traduce el código binario de la instrucción para entender la operación requerida. Finalmente, los circuitos de procesamiento realizan el cálculo matemático solicitado y guardan el resultado final en la memoria o en los registros internos.
Los ordenadores iniciales empleaban miles de válvulas de vacío o transistores individuales y llegaban a ocupar plantas enteras de edificios. En 1971, la compañía Intel diseñó el microprocesador Intel 4004.
Este avance tecnológico integró por primera vez todos los componentes físicos de una CPU dentro de un único circuito integrado (una pastilla semiconductora de silicio). La integración en un solo chip redujo el consumo eléctrico, abarató los costes de producción y aumentó la velocidad de las operaciones matemáticas.
Dentro de los ciclos de formación profesional, comprender la estructura interna del procesador tiene una aplicación técnica directa. Conocer cómo interactúan los componentes físicos permite al técnico diagnosticar averías cuando un equipo muestra un comportamiento errático. Ayuda a interpretar señales de error específicas, como los pitidos de la placa base al detectar fallos de hardware, y orienta la sustitución de piezas dañadas.
Aprender la arquitectura del procesador también aporta herramientas matemáticas para medir el rendimiento de un sistema informático.
El técnico evalúa métricas mediante ecuaciones como (donde representa el tiempo total, el número de instrucciones, los ciclos por instrucción y el periodo del reloj). Finalmente, este conocimiento resulta útil al ensamblar equipos, pues guía la selección de componentes que trabajen en equilibrio y eviten demoras en el procesamiento de los datos.
4. Desarrollo
4.1. Concepto y arquitecturas base
4.1.1. Definición y función de la unidad central de proceso
El procesador o unidad central de procesamiento (CPU) actúa como la entidad física que interpreta y ejecuta las instrucciones de los programas. Esta unidad coordina las transferencias de datos e interacciona con los módulos de memoria y los periféricos de entrada y salida. El procesador extrae cada instrucción del almacenamiento principal, determina la acción solicitada por el código de operación y realiza el cálculo lógico o aritmético correspondiente.
Los componentes de hardware del procesador se dividen en tres grandes bloques funcionales. La unidad de control (CU) extrae las instrucciones, decodifica la operación y genera las señales eléctricas necesarias para dirigir el flujo de la información.
La unidad aritmético-lógica (ALU) ejecuta las sumas, restas, multiplicaciones y operaciones booleanas sobre los operandos recibidos. Los registros forman una memoria interna de alta velocidad que almacena resultados intermedios, direcciones y señales de estado.
La comunicación de la CPU con el exterior ocurre mediante el bus del sistema. Este canal se subdivide en tres categorías lógicas. El bus de datos mueve la información bidireccionalmente. El bus de direcciones señala la ubicación física específica de lectura o escritura. El bus de control sincroniza las operaciones y emite las señales temporales.
La CPU sigue un patrón de operaciones repetitivo conocido como ciclo de instrucción. El proceso inicia con la lectura de la memoria, donde el contador de programa señala la ubicación del código ejecutable. La CPU interpreta el dato numérico recibido, extrae los operandos de los registros, ejecuta la instrucción matemática en la ALU y guarda el resultado devuelto.
4.1.2. El concepto de programa almacenado
Los primeros computadores electromecánicos dependían de la reconexión manual de cables para configurar la tarea matemática a resolver. El diseño de los ordenadores evolucionó profundamente al introducir el concepto de programa almacenado, documentado inicialmente por John von Neumann en 1945. Este enfoque propone que el software de control adopte un formato numérico digital.
El modelo estipula que las instrucciones operativas deben residir en la misma memoria física que los datos de entrada de la aplicación. La CPU carga las instrucciones de forma secuencial y dinámica mediante el sistema de buses. Esta configuración elimina la necesidad de alterar el hardware físico de la máquina para ejecutar distintos algoritmos informáticos.
El cambio de programa se reduce a sustituir los valores binarios alojados en el almacenamiento principal. Este diseño dotó a las máquinas de la capacidad de tratar el código ejecutable como información numérica común. El sistema informático puede modificar su propio flujo de ejecución en tiempo real mediante instrucciones de salto condicional que alteran el valor del registro contador de programa.
4.1.3. Arquitectura de Von Neumann
La arquitectura de Von Neumann define la topología clásica de los computadores de propósito general modernos. El diseño original especifica un sistema compuesto por una memoria principal unificada, una unidad central de procesamiento y un subsistema de controladores de entrada y salida de datos.
El rasgo distintivo de esta topología es la compartición física y lógica del espacio de almacenamiento. El computador aloja las instrucciones compiladas y los datos estructurales en una sola matriz de memoria de lectura y escritura. El procesador interactúa con esta memoria a través de un único canal de comunicación bidireccional.
El uso de un canal único genera una restricción temporal de hardware conocida como el cuello de botella de Von Neumann. El procesador no puede solicitar una instrucción y operar sobre un dato alojado en la memoria en el mismo ciclo de reloj. La CPU trabaja a mayor frecuencia que la memoria externa, lo que genera estados de inactividad mientras los circuitos esperan la respuesta del bus.
4.1.4. Arquitectura Harvard
La arquitectura Harvard separa físicamente el subsistema de almacenamiento en dos componentes independientes. Un bloque de memoria de programa guarda exclusivamente las instrucciones compiladas, mientras que el segundo bloque de memoria de datos se dedica a los valores numéricos y cadenas generadas por la aplicación.
La separación de los espacios de direccionamiento obliga a la CPU a disponer de dos conjuntos de buses diferenciados. El primer conjunto de señales vincula la unidad de control con la memoria de programa. El segundo conjunto conecta la unidad de ejecución con la memoria de datos en operaciones de lectura y modificación.
Este aislamiento permite al procesador extraer el código de una operación y acceder a un operando en paralelo durante el mismo ciclo de reloj. La topología previene las colisiones en los buses de información. Los microcontroladores industriales utilizan este diseño para garantizar una ejecución eficiente y determinista.
Los procesadores de propósito general implementan un modelo híbrido, aplicando la arquitectura Harvard internamente al dividir la memoria caché de nivel 1 en dos bloques asimétricos, y utilizando el modelo Von Neumann para el acceso externo a la memoria RAM principal.
4.1.5. Comparativa entre arquitecturas base
La arquitectura de Von Neumann simplifica la integración de la placa base al requerir menos pistas de conexión físicas. El uso de un único espacio lógico facilita el desarrollo del sistema operativo, que asigna los bloques de direcciones libres a código de aplicaciones o a áreas de memoria de forma flexible.
La arquitectura Harvard incrementa el número de terminales en el encapsulado del procesador y multiplica la circuitería externa de control. La división estática de la memoria física impide que el área no consumida por el programa se asigne temporalmente al almacenamiento de matrices de datos.
La topología Harvard compensa la mayor densidad de cableado con un ancho de banda sostenido superior. El diseño evita que un error en el software, como un desbordamiento de búfer, logre sobreescribir el área de código ejecutable con información temporal.
| Característica | Arquitectura Von Neumann | Arquitectura Harvard |
|---|---|---|
| Organización de memoria | Unificada (comparte datos e instrucciones). | Separada (bloques aislados). |
| Sistema de buses | Único conjunto multiplexado. | Dos conjuntos paralelos independientes. |
| Acceso simultáneo | Imposible (provoca retrasos estructurales). | Posible (lectura concurrente permitida). |
| Complejidad del hardware | Menor número de pistas y pines. | Mayor cantidad de líneas de conexión. |
| Uso del espacio físico | Dinámico y adaptable a las necesidades. | Estático y susceptible a fragmentación. |
4.1.6. Evolución del paralelismo a nivel de hardware
Las barreras térmicas y la disipación de calor limitan la capacidad de escalar la frecuencia del reloj en los chips de silicio. Los ingenieros de arquitectura de computadores exploran mecanismos de procesamiento paralelo para aumentar el número de operaciones por segundo sin requerir consumos eléctricos inviables.
El hardware aplica el paralelismo temporal superponiendo la extracción y decodificación de diferentes operaciones mediante técnicas de segmentación del cauce de ejecución. El diseño añade unidades multiplicadoras independientes para operar sobre conjuntos de números simultáneamente en el mismo dominio espacial.
El estudio del paralelismo se clasifica analizando el concepto de los flujos de máquina. Una secuencia de instrucciones o instruction stream representa la lista de operaciones de control generada por un contador de programa. Una secuencia de datos o data stream define el conjunto de los valores numéricos sobre los que operan las instrucciones en un paso de reloj.
4.1.7. Taxonomía de Flynn
El investigador Michael J. Flynn formuló en 1966 un esquema que categoriza el diseño informático según el paralelismo de las secuencias de control y memoria. La taxonomía de Flynn segmenta los procesadores en cuatro topologías teóricas y prácticas.
El modelo SISD (Single Instruction, Single Data) engloba los procesadores que ejecutan un solo flujo de código sobre una única secuencia de valores. Esta categoría clasifica el ordenador secuencial mononúcleo tradicional. Las técnicas de segmentación interna introducen paralelismo en los ciclos intermedios, pero la estructura sigue dictando un procesamiento escalar.
El diseño SIMD (Single Instruction, Multiple Data) emplea una unidad de control central que coordina múltiples unidades de cálculo idénticas. El hardware extrae una instrucción y la aplica concurrentemente sobre elementos de vectores independientes. Las instrucciones multimedia actuales y los multiprocesadores de las tarjetas gráficas de renderizado implementan este esquema matemático.
La arquitectura MISD (Multiple Instruction, Single Data) inyecta un solo flujo de valores en unidades de procesamiento donde cada bloque aplica secuencias de operaciones diferentes sobre esa información común. Las implementaciones funcionales comerciales de este modelo son inusuales, limitándose a arquitecturas tolerantes a fallos en entornos de misión espacial donde varios equipos verifican asíncronamente el cálculo principal.
El modelo MIMD (Multiple Instruction, Multiple Data) contempla escenarios donde varios procesadores operan de forma independiente e interactúan libremente. Cada procesador gestiona su propio contador de programa y accede a sus bloques de datos locales o compartidos de manera autónoma. Los multiprocesadores simétricos o SMP, la arquitectura de acceso no uniforme a memoria o NUMA, y la computación distribuida en clústeres conforman esta categoría.
4.2. Componentes de la unidad central de proceso
4.2.1. Arquitectura y distribución funcional del procesador
El procesador aloja diferentes bloques físicos que operan en conjunto para ejecutar programas informáticos. Esta arquitectura distribuye el trabajo en unidades de cálculo, áreas de almacenamiento local y sistemas de enrutamiento de señales. Las implementaciones electrónicas actuales integran la totalidad de estos elementos dentro de un único circuito integrado de silicio. El diseño interno de la CPU agrupa los circuitos lógicos según la naturaleza de su operación electromecánica. Un primer bloque interpreta y dirige el flujo de acciones, otro ejecuta las matemáticas solicitadas, un tercero retiene la información inmediata de trabajo y un cuarto gestiona la interconexión. Podemos representar esta división organizativa mediante un diagrama de bloques funcionales orientados al flujo de datos.
4.2.2. La unidad de control y secuenciación de instrucciones
La unidad de control (CU) captura las instrucciones de la memoria, determina el tipo de formato y dirige el funcionamiento general del sistema. Este componente decodifica el código de operación binario y emite las señales de control hacia el resto de los módulos internos y externos. Estas señales eléctricas configuran los multiplexores y abren o cierran compuertas lógicas específicas. El circuito genera la temporización de estas secuencias utilizando un reloj del sistema. En cada transición del pulso de reloj, la unidad fuerza la transferencia de datos entre registros o activa funciones concretas de la ALU. Las unidades modernas dividen las instrucciones largas en secuencias de microoperaciones más elementales. La duración temporal de cada paso de ejecución depende de la frecuencia del reloj maestro. Podemos calcular el tiempo de ciclo del procesador aplicando una fórmula matemática directa.
Donde equivale al tiempo del ciclo medido en segundos y representa la frecuencia del oscilador de cuarzo medida en hercios. La unidad de control emplea este intervalo temporal para permitir que las señales eléctricas se estabilicen antes de fijar su estado. El diseño interno de este bloque obedece a dos paradigmas constructivos principales. La lógica cableada utiliza redes de puertas lógicas combinacionales puras, favoreciendo la velocidad de conmutación. La lógica microprogramada lee palabras de control desde una memoria ROM integrada, ejecutando rutinas pregrabadas para cada instrucción de máquina.
4.2.3. La unidad aritmético-lógica en la ejecución de datos
La unidad aritmético-lógica (ALU) concentra el trabajo computacional del procesador. Los operandos de origen viajan desde el banco de registros hacia los circuitos combinacionales de entrada, los cuales transforman las corrientes eléctricas en un nuevo resultado binario. Las operaciones aritméticas implementadas por el hardware abarcan las sumas, restas, multiplicaciones y rotaciones de bits. El bloque funcional lógico aplica álgebra booleana a nivel de bit sobre los operandos de entrada. La ALU utiliza compuertas AND, OR, NOT y XOR de forma simultánea a todos los bits que conforman la palabra. El decodificador de la unidad de control selecciona qué circuito aritmético conectará su valor final al bus de salida de resultados.
| Operación | Expresión | Descripción de la compuerta lógica interna |
|---|---|---|
| AND | Producto lógico. Emite 1 solo si ambos bits de entrada valen 1. | |
| OR | Suma lógica. Emite 1 si al menos un bit de entrada vale 1. | |
| XOR | OR exclusiva. Emite 1 si los bits de entrada difieren entre sí. | |
| NOT | Complemento. Invierte el valor binario de la señal eléctrica. |
La circuitería de la ALU carece de almacenamiento interno para retener los operandos entre distintos ciclos de reloj. El procesador ubica registros de entrada temporales para mantener constantes los voltajes mientras las señales se propagan por los sumadores.
El resultado eléctrico aparece en los terminales de salida y se propaga de vuelta al banco de registros. En las arquitecturas actuales, un coprocesador integrado llamado unidad de coma flotante (FPU) procesa los números con formato decimal.
4.2.4. El banco de registros y el almacenamiento local
Los registros configuran la capa de memoria más veloz dentro de la arquitectura de von Neumann. Funcionan con los mismos transistores que el procesador lógico y retienen las cadenas de bits durante el proceso de ejecución. El banco de registros engloba todas las celdas de almacenamiento local que el código del lenguaje ensamblador direcciona explícitamente. El compilador utiliza los registros de propósito general para mantener a mano variables matemáticas, índices de iteración y resultados provisionales. La cantidad física y el ancho de estas celdas define las características del repertorio de instrucciones, integrando entre dieciséis y cientos de registros de 32 o 64 bits. Mantener los datos de trabajo recluidos en los registros evita los ciclos de parada que impone el acceso a la memoria RAM dinámica. El sistema transfiere los datos desde la memoria hasta el banco de registros, opera con ellos repetidas veces, y finalmente escribe el resultado consolidado hacia la memoria principal.
4.2.5. Los registros de control y estado específicos
El procesador destina celdas de registro exclusivas a la gestión y supervisión del estado del propio sistema. El contador de programa (PC) retiene la dirección de memoria exacta que aloja la instrucción binaria a leer a continuación. Tras efectuar cada extracción desde la memoria, el hardware suma el tamaño en bytes de la instrucción al valor del PC para autoincrementarlo. El registro de instrucción (IR) conserva de manera temporal la palabra binaria que la unidad de control decodifica y evalúa en ese momento. El procesador utiliza el registro de dirección de memoria (MAR) para posicionar las direcciones en el bus físico, y el registro de datos de memoria (MBR) para acoplar la información saliente o entrante. El registro de estado (PSW) empaqueta una colección de bits independientes que recogen variables de condición originadas en la ALU.
- Cero (Z): El hardware fija este bit a 1 si el cómputo final de la ALU arroja un cero exacto.
- Signo (S): El circuito clona el bit más significativo del resultado, registrando un valor negativo según la aritmética de complemento a dos.
- Desbordamiento (V): El procesador marca este bit si la suma o resta excede la capacidad de representación temporal del registro de destino.
- Acarreo (C): El sumador completo activa este indicador si la operación genera un sobrante en el bit de mayor peso numérico.
El código del programa instruye a la unidad de control para examinar estos bits y evaluar el cumplimiento de condiciones matemáticas. Las instrucciones de salto condicional leen los indicadores del PSW y bifurcan la ejecución alterando el contenido del contador de programa.
4.2.6. Los buses internos del procesador y su enrutamiento
Los módulos del interior de la CPU precisan vías de interconexión eléctrica compartidas para enviar y recibir palabras binarias. Un bus interno traslada datos lógicos y señales desde un bloque de transistores a otro sin abandonar el encapsulado del procesador. El sistema desacopla el tráfico de las operaciones locales frente a los buses que enlazan con el subsistema de memoria o los periféricos externos. El bus de datos interno transporta el valor de las variables desde los biestables del banco de registros hacia las entradas funcionales de la ALU y conduce los resultados. El bus de control distribuye las señales de apertura de puertas, habilitación de escritura y pulsos del reloj del sistema. El bus de direcciones interno ajusta los números de celda requeridos por las estructuras matriciales internas del silicio.
El ancho eléctrico de los buses internos dictamina el volumen de bits que se trasladan de forma paralela en cada oscilación de reloj. Una topología configurada con tres buses independientes capacita a la CPU para volcar dos registros origen y absorber un resultado destino simultáneamente. Las arquitecturas con bus único obligan a la unidad de control a secuenciar cada trasvase en intervalos separados, incrementando los ciclos invertidos por instrucción.
4.2.7. La jerarquía de memoria caché integrada
La memoria caché atenúa los retardos físicos que la circuitería externa experimenta al consultar la memoria RAM principal. Esta memoria embebida integra celdas estáticas (SRAM) con capacidades medidas en kilobytes o megabytes, pero latencias asimilables al rendimiento bruto de los registros. El subsistema hardware de la caché interviene el tráfico, duplicando los bloques de información que la unidad de control lee de manera repetitiva. Su éxito operativo recae sobre las propiedades de localidad de los algoritmos de software. La localidad espacial describe la tendencia estadística de la CPU a leer palabras contiguas a la recién extraída. La localidad temporal señala que un operando al que se accede cuenta con altas probabilidades matemáticas de ser leído de nuevo a corto plazo.
Podemos formular el rendimiento temporal de lectura sopesando los aciertos y fallos. El tiempo de acceso efectivo del procesador se obtiene mediante la ecuación de la latencia ponderada.
En la fórmula descrita, la variable indica la tasa de aciertos, que refleja la probabilidad empírica de encontrar el byte dentro de la caché. El valor representa el tiempo de consulta a la celda SRAM, y concentra el retardo adicional asumido al volcar bloques completos desde la memoria principal por un fallo. Los procesadores dividen las celdas caché en niveles integrados concéntricos. La caché L1 fracciona su circuito interno para confinar las rutas de instrucciones y de datos, previniendo colisiones eléctricas. La caché L2 unifica ambos tipos de accesos y recoge los bloques que el nivel L1 expulsa bajo su política de reemplazo. La caché L3 funciona de modo compartido para todos los núcleos de cálculo, rastreando los fallos antes de volcar las peticiones al controlador de memoria externo.
4.3. Estructura e interacción de componentes
4.3.1. Sincronización mediante el reloj del sistema
La sincronización de operaciones recae en el reloj del sistema, un circuito oscilador que emite pulsos eléctricos cuadrados a intervalos regulares. La unidad de control utiliza estos pulsos para marcar el inicio y el fin de cada microoperación dentro del procesador.
El ciclo de reloj define el tiempo que transcurre entre dos flancos de subida consecutivos de la señal eléctrica. Durante este periodo, las tensiones cruzan las puertas lógicas y se estabilizan antes de la llegada del siguiente pulso temporal.
La duración del ciclo determina el ritmo de interacción entre todos los componentes de la arquitectura. La relación entre el periodo y la frecuencia de oscilación se rige por la fórmula matemática:
El diseño del procesador dimensiona el camino de datos más largo para que ninguna señal eléctrica demore más de un ciclo en estabilizarse. Los elementos de memoria y registro se actualizan únicamente cuando el sistema detecta una transición de voltaje en el reloj.
El ciclo de reloj se divide en una parte alta y una parte baja, relación que se denomina ciclo de trabajo. En arquitecturas de doble tasa, el sistema activa componentes tanto en el flanco de subida como en el de bajada, logrando transferir datos dos veces por cada oscilación.
Para tareas que requieren múltiples pasos, la unidad de control asigna secuencias de ciclos de reloj consecutivos. La métrica que evalúa este comportamiento se denomina ciclos por instrucción (CPI), que cuantifica la cantidad de pulsos requeridos para finalizar un comando completo.
4.3.2. Ciclo de instrucción y flujo de control
La interacción entre componentes sigue un esquema secuencial denominado ciclo de instrucción. Este proceso divide el trabajo de procesamiento de la CPU en fases definidas, dirigidas íntegramente por las señales emitidas por la unidad de control.
En la fase de captación, el hardware lee la instrucción que se procesará a continuación. El contador de programa (PC) contiene la dirección en memoria de esta instrucción y transfiere su valor hacia los buses de comunicación del procesador.
Durante la decodificación, los circuitos interpretan los bits de la instrucción para determinar la operación concreta y los registros involucrados. La unidad de control configura las líneas de selección interna para preparar la ejecución del cálculo.
El PC se incrementa mediante un sumador interno dedicado de forma automática tras leer la dirección. Una instrucción de salto altera el contenido del PC en la fase final si el estado de los indicadores lógicos cumple la condición programada.
En la fase de ejecución, la unidad de control ordena a la unidad aritmético-lógica que opere sobre los datos recibidos. Tras efectuar el cálculo, el ciclo concluye con la fase de escritura, donde el sistema almacena el resultado en la memoria o en un registro.
4.3.3. Transferencia entre memoria y registros a través del bus
La transferencia de datos desde la memoria hasta los registros requiere transitar obligatoriamente por el bus del sistema. Este subsistema coordina señales de dirección, datos y control entre el procesador central y la memoria principal.
La unidad de control emplea el registro de dirección de memoria (MAR) para especificar la ubicación de lectura o escritura. El valor binario depositado en el MAR viaja directamente al bus de direcciones del sistema.
Una vez estabilizada la dirección, la unidad de control emite una orden de lectura por el bus de control. El módulo de memoria procesa la solicitud de acceso y deposita el dato requerido en el bus de datos.
Para garantizar el sincronismo, la memoria emite una señal de reconocimiento cuando el dato se encuentra disponible. Si la memoria demora la entrega, la unidad de control inserta estados de espera, que consisten en ciclos de reloj inactivos donde el procesador detiene su actividad.
El dato viaja por el bus de datos y se aloja temporalmente en el registro de datos de memoria (MBR). Desde ese punto, el procesador transfiere el contenido del MBR hacia el registro de destino en el banco de registros general.
La interacción con el bus del sistema exige un mecanismo de arbitraje cuando múltiples componentes compiten por transmitir información. La unidad de control reclama la propiedad del bus, resolviendo colisiones de hardware mediante líneas de solicitud y concesión de acceso.
| Señal de Control | Elemento Origen | Elemento Destino | Descripción de la acción técnica |
|---|---|---|---|
| Lectura de Memoria | Unidad de Control | Bus de Control | Indica a la memoria que vuelque el dato solicitado en las líneas del bus. |
| Carga de MAR | Unidad de Control | Registro MAR | Habilita la copia de una dirección desde el bus interno hacia el MAR. |
| Escritura de MBR | Unidad de Control | Registro MBR | Permite que el dato del bus externo ingrese en el circuito del registro MBR. |
| Selección de Registro | Unidad de Control | Banco de Registros | Dirige el flujo de información del MBR hacia el registro interno de destino final. |
4.3.4. Decodificación y generación de señales hacia la unidad aritmético-lógica
La generación de señales hacia la unidad aritmético-lógica responde al formato binario de la instrucción leída. El código de operación dicta la transformación matemática que los circuitos aplicarán sobre los operandos entrantes.
La instrucción extraída de la memoria se aloja en el registro de instrucción (IR). Un circuito combinacional integrado, denominado decodificador de instrucción, recibe los bits que conforman el campo del código de operación.
Este decodificador transforma una combinación de bits de entrada en una única línea de control activa en la salida. La cantidad máxima de operaciones distintas que la unidad puede desencadenar se calcula con la expresión:
La línea de salida del decodificador ingresa a la lógica de control de la ALU, habilitando las compuertas necesarias. Si la instrucción demanda una suma entera, la señal energiza el circuito sumador interno y bloquea el paso de datos hacia las puertas de evaluación lógica.
Las instrucciones con valores inmediatos reciben un trato diferente a las que operan de registro a registro. La unidad de control extrae el valor constante directamente del IR y lo encamina hacia la segunda entrada de la ALU mediante una señal de habilitación especial.
Al finalizar el cálculo, la ALU genera tensiones que actualizan los biestables del registro de estado. Estos indicadores almacenan el resultado de la operación para que la unidad de control evalúe condiciones de resultado nulo, signo negativo o desbordamiento aritmético.
4.3.5. Rutas de datos internas del procesador
El entramado por el que transita la información dentro de la CPU constituye la ruta de datos. Este conjunto físico integra a la unidad aritmético-lógica, los registros de propósito general y los buses internos del microprocesador.
El bus interno interconecta los registros con la ALU para aislar las comunicaciones locales del tráfico externo. El número de buses internos que el fabricante diseña condiciona el grado de concurrencia de las microoperaciones del procesador.
En una arquitectura de un solo bus interno, la transferencia de dos operandos a la ALU exige dos ciclos de reloj diferenciados. El sistema utiliza registros temporales intermedios para retener el voltaje del primer operando mientras el segundo transita por la vía.
Una arquitectura de tres buses internos dispone de dos vías paralelas para inyectar operandos a la ALU simultáneamente. La tercera vía dedicada devuelve el resultado del cálculo al banco de registros en el mismo periodo temporal.
El uso de un registro temporal de salida elude la inestabilidad eléctrica en los diseños de realimentación. Dado que la ALU carece de capacidad de almacenamiento, sus señales de entrada deben permanecer fijas hasta que el resultado cruce el bus de retorno con seguridad.
La unidad aritmético-lógica integra bloques para operaciones diferentes. Contiene un módulo aritmético, un módulo lógico para aplicar máscaras y un desplazador para aplicar corrimientos de bits. El bus interno transporta el operando de manera exclusiva hacia el sub-bloque activado.
4.3.6. Multiplexación y selección de operandos
El diseño del procesador requiere orientar información desde diversas fuentes hacia las entradas de la unidad aritmético-lógica. Para efectuar este enrutamiento sin provocar colisiones en los cables, la ruta de datos implementa redes de conmutación.
Un multiplexor (MUX) centraliza múltiples entradas de datos en paralelo y habilita la propagación de una sola de ellas hacia el canal de salida. La unidad de control suministra la tensión eléctrica necesaria a las líneas de selección del multiplexor.
El esquema ubica un multiplexor justo antes de cada entrada principal de la ALU. Alterando los bits de selección, la unidad de control decide si la ALU evalúa el valor de un registro general, el estado del contador de programa o un número constante inmediato.
Si la arquitectura integra fuentes potenciales para una misma entrada, el multiplexor precisa un número de líneas de control que responde a la relación logarítmica:
A la salida de la unidad aritmético-lógica, el circuito recurre a memorias con salidas de alta impedancia o implementa un demultiplexor. Esta configuración desconecta eléctricamente las terminales inactivas, asegurando que el resultado del cálculo penetre únicamente en el registro indicado por el secuenciador.
La multiplexación reduce el volumen de interconexiones físicas impresas en la placa base del silicio. El sistema sustituye las uniones punto a punto por un esquema de nodos centralizados bajo el mando estricto del bloque de control central.
4.3.7. Representación visual de la arquitectura interna
La representación en diagramas de bloques modela la estructura física y la sincronización de las unidades funcionales revisadas. Estos esquemas distinguen visualmente los conductos de información de las líneas que transportan órdenes de control.
Los trazos de mayor grosor en el diagrama figuran buses paralelos, diseñados para trasladar palabras de información completas en un solo evento. Las líneas delgadas ilustran las señales de control individuales originadas en los decodificadores de la unidad de control.
En implementaciones microprogramadas, la memoria de control emite una palabra de control extensa en cada ciclo. Esta palabra agrupa arreglos binarios donde cada bit se conecta físicamente a una compuerta o multiplexor específico de la ruta de datos.
La unidad de control recolecta variables del reloj, del registro de instrucción y de los indicadores de la ALU. A partir de estas señales lógicas de entrada, el autómata de estado emite una nueva configuración de cables para la fase siguiente de la instrucción.
La temporalidad de estas transferencias se mapea mediante el uso de cronogramas. Este formato temporal expone cómo los registros, las vías de bus y los bloques combinacionales se activan y desactivan de modo escalonado durante el tiempo de ejecución.
4.4. Funcionamiento: ejecución de instrucciones e interrupciones
4.4.1. Tipos de instrucciones soportadas
El procesador ejecuta programas formados por secuencias de instrucciones máquina. Una instrucción máquina es un código binario que ordena al procesador realizar una operación elemental. Estas operaciones se agrupan en tres categorías según su funcionalidad específica en el sistema.
Las instrucciones de transferencia de datos mueven información entre los registros internos, la memoria principal y los puertos de entrada/salida. Las operaciones de lectura trasladan datos desde la memoria hasta un registro interno. Las operaciones de escritura trasladan datos desde un registro hasta una posición de memoria. Estas transferencias exigen especificar las direcciones correspondientes mediante distintos modos de direccionamiento.
Las instrucciones aritmético-lógicas emplean la unidad aritmético-lógica para procesar los datos almacenados en los registros del hardware. Las operaciones aritméticas abarcan sumas, restas, multiplicaciones y divisiones. Los procesadores incluyen unidades físicas específicas para ejecutar cálculos con números enteros y cálculos matemáticos con coma flotante.
Las operaciones lógicas aplican funciones booleanas a los bits de los operandos involucrados en la instrucción. Las operaciones más habituales incluyen la conjunción AND, la disyunción OR y la disyunción exclusiva XOR. Esta categoría también agrupa las operaciones de desplazamiento y rotación de bits. Los desplazamientos modifican la posición de los bits para multiplicar o dividir valores binarios de forma rápida.
Las instrucciones de control de flujo alteran la secuencia de ejecución normal del programa. El procesador actualiza el contador de programa con la dirección de una nueva instrucción, rompiendo la linealidad. Estas instrucciones incluyen saltos incondicionales, saltos condicionales y llamadas a subrutinas. Los saltos condicionales verifican previamente los indicadores de estado de la unidad aritmético-lógica.
Las instrucciones de llamada a subrutina guardan la dirección de retorno en una estructura de pila en memoria antes de efectuar el salto. La instrucción de retorno recupera esa dirección de la pila para reanudar el flujo del programa original. Las arquitecturas modernas combinan instrucciones de dos y tres operandos para facilitar este control.
| Categoría | Ejemplo | Acción principal del procesador |
|---|---|---|
| Transferencia | Lectura (Load) | Copia el contenido de una dirección de memoria en un registro interno. |
| Transferencia | Escritura (Store) | Sobrescribe una dirección de memoria con el valor de un registro interno. |
| Aritmética | Suma (Add) | Suma dos operandos en la unidad aritmético-lógica y guarda el resultado. |
| Lógica | Negación (NOT) | Invierte el valor de todos los bits de un operando específico. |
| Control | Salto (Jump) | Modifica el contador de programa para apuntar a otra dirección de memoria. |
4.4.2. Fase de búsqueda de la instrucción
El ciclo de instrucción comienza siempre con la fase de búsqueda. El procesador accede a la jerarquía de memoria para extraer la instrucción que debe procesar. El contador de programa contiene la dirección de memoria exacta de la próxima instrucción pendiente.
El procesador copia la dirección del contador de programa en el registro de dirección de memoria. A continuación, sitúa esta información binaria en el bus de direcciones. La unidad de control emite una señal de lectura eléctrica a través del bus de control del sistema.
La memoria responde colocando el código binario de la instrucción en el bus de datos. En los sistemas modernos, el procesador busca primero en la memoria caché de nivel 1. Si la instrucción no se encuentra allí, la solicitud se propaga a la memoria principal.
El procesador captura el código desde el bus de datos y lo almacena temporalmente en el registro de datos de memoria. Acto seguido, transfiere el código completo al registro de instrucción. Este registro mantiene la información estable para su evaluación en las siguientes fases del ciclo.
El procesador incrementa el contador de programa para que apunte a la siguiente instrucción de la secuencia en memoria. El valor del incremento coincide con el tamaño en bytes de la instrucción recién leída.
Los procesadores incorporan técnicas de prebúsqueda para acelerar este proceso secuencial. Una unidad especializada capta instrucciones por adelantado y las deposita en un búfer interno. Esta anticipación oculta el retraso originado por la latencia de respuesta de los módulos de memoria.
4.4.3. Fase de decodificación de la instrucción
La unidad de control lee el contenido del registro de instrucción para iniciar la decodificación. El objetivo principal consiste en identificar la operación solicitada y determinar la ubicación de los operandos asociados.
La unidad de control aísla el código de operación del resto de los bits. Este código numérico indica la acción exacta que el hardware debe ejecutar. Un circuito decodificador traduce este código en un conjunto de señales de control internas que activan las vías de datos.
El resto de los bits de la instrucción especifican los operandos. Los operandos representan los datos sobre los que actúa el comando. Pueden encontrarse incrustados en la propia instrucción como valores inmediatos, almacenados en registros internos o ubicados en posiciones de memoria.
La unidad de control evalúa el modo de direccionamiento de cada operando implicado. Si la instrucción utiliza direccionamiento indirecto, el procesador requiere un subciclo de búsqueda adicional. El procesador realiza un acceso previo a la memoria para recuperar la dirección efectiva donde reside el dato definitivo.
En procesadores superescalares con segmentación de cauce, la decodificación distribuye las instrucciones hacia distintas unidades funcionales. El circuito decodificador analiza las posibles dependencias de datos entre instrucciones consecutivas para evitar conflictos estructurales durante el procesamiento paralelo.
4.4.4. Fase de ejecución y escritura de operandos
La fase de ejecución moviliza los componentes lógicos del procesador para completar la operación decodificada. La unidad de control distribuye señales que dirigen el movimiento de los datos a través de los buses internos del microprocesador.
En las instrucciones aritmético-lógicas, los operandos viajan desde los registros de lectura hasta las entradas de la unidad aritmético-lógica. Esta unidad procesa los valores matemáticos o booleanos y deja el resultado disponible en su registro de salida transitorio.
El procesador examina el resultado matemático recién calculado y actualiza el registro de indicadores de estado. Estos indicadores registran propiedades del resultado final. Los indicadores de estado señalan si el resultado es negativo, si su valor es exactamente cero, si existe acarreo o si se ha producido un desbordamiento.
Las instrucciones de control de flujo utilizan estos indicadores de estado para resolver decisiones en saltos condicionales. La unidad de control evalúa la condición requerida y actualiza el contador de programa únicamente si la condición se cumple en los indicadores.
La última tarea del ciclo de instrucción consiste en la escritura del operando. El procesador traslada el resultado definitivo desde la unidad aritmético-lógica hasta un registro de destino. En el caso de las operaciones de escritura externas, el resultado se transfiere a través del bus de datos hasta la memoria principal.
4.4.5. Concepto y clasificación de las interrupciones
El procesador gestiona eventos asíncronos y errores mediante el mecanismo de interrupciones. Una interrupción detiene el programa en ejecución para ejecutar una rutina de atención del sistema operativo. Este mecanismo evita que el procesador deba comprobar continuamente el estado de los periféricos mediante espera activa.
Las interrupciones se clasifican según su origen y su sincronía con el reloj. Las interrupciones hardware se originan en los dispositivos de entrada/salida o en los temporizadores del sistema. Constituyen eventos asíncronos porque suceden de forma impredecible e independiente del ciclo de instrucción del programa actual.
Las excepciones representan interrupciones síncronas generadas internamente por el propio hardware del procesador. Suceden cuando la ejecución de una instrucción provoca una anomalía o un error de cálculo. La arquitectura x86 divide las excepciones en fallos, trampas y abortos.
Los fallos, como la ausencia de una página en memoria, permiten reanudar la instrucción exacta tras corregir el problema subyacente. Las trampas se activan justo después de ejecutar una instrucción específica y sirven para la depuración de software. Los abortos ocurren ante errores hardware irreversibles y provocan la terminación del proceso.
Las interrupciones software se disparan voluntariamente a través de instrucciones específicas programadas en el código. Los programas de usuario utilizan este mecanismo explícito para solicitar llamadas al sistema. El procesador cambia su modo de ejecución para brindar servicios de núcleo a la aplicación.
4.4.6. Mecanismo de gestión y atención de interrupciones
El procesador evalúa la presencia de interrupciones justo al término de cada fase de ejecución, antes de iniciar una nueva búsqueda de instrucción. Para ello comprueba el estado de unas líneas de señal eléctricas específicas conectadas a los controladores de interrupciones.
El controlador de interrupciones prioriza las peticiones emitidas por los distintos dispositivos periféricos. Si varios dispositivos demandan atención simultáneamente, el controlador resuelve el conflicto y envía al procesador únicamente la petición con el mayor nivel de prioridad.
El sistema diferencia estrictamente entre interrupciones enmascarables y no enmascarables. El procesador ignora las interrupciones enmascarables si el indicador lógico de habilitación de interrupciones se encuentra desactivado. Las interrupciones no enmascarables eluden este indicador y obligan al hardware a responder de forma inmediata.
Cuando el procesador acepta una petición válida, suspende la secuencia del ciclo de instrucción normal. Emite una señal de reconocimiento hacia el controlador del dispositivo a través del bus de control. El controlador detecta esta señal de confirmación y retira su petición de la línea de interrupción.
El procesador inicia un procedimiento de salvaguarda automática del contexto mínimo. Copia el contenido actual del contador de programa y el registro de indicadores de estado en la pila del sistema operativo. Este respaldo asegura que el programa interrumpido pueda reanudarse de manera transparente tras solucionar la interrupción.
4.4.7. Rutinas de servicio y cambio de contexto
Para localizar la subrutina adecuada, el procesador utiliza un número identificador enviado por el controlador del dispositivo. El procesador emplea este código numérico como índice para consultar el vector de interrupciones. Este vector es una tabla estructurada en memoria que asocia los identificadores con las direcciones base de los gestores del sistema operativo.
El procesador extrae la dirección de la tabla y la escribe directamente en el contador de programa. La ejecución del código prosigue con la primera instrucción de la rutina de servicio de interrupción. Durante esta alteración del flujo, el procesador pasa a operar en modo supervisor para obtener acceso absoluto al hardware.
La rutina de servicio ejecuta un cambio de contexto completo antes de procesar el evento del periférico. Guarda los valores de todos los registros de propósito general del procesador en la pila de control del sistema. Esta acción previene la pérdida y corrupción de datos del programa original que sufrió la interrupción.
El sistema operativo consolida todo este estado dentro del bloque de control de proceso. Esta estructura de datos registra toda la información de la tarea suspendida. El planificador de procesos utiliza esta estructura cuando decide asignar el procesador a un programa distinto del interrumpido inicialmente.
Una vez salvaguardado el contexto completo, la rutina ejecuta el código que atiende la causa específica de la petición. Transfiere el bloque de datos solicitado desde el dispositivo de entrada/salida a la memoria, o documenta la condición de error detectada. En configuraciones con interrupciones anidadas, una rutina de servicio puede interrumpirse temporalmente por otra petición de mayor prioridad.
Al finalizar el procesamiento de los datos, la rutina recupera los valores originales de los registros desde la pila del sistema. La última instrucción de la rutina consiste en un código especializado de retorno de interrupción. El hardware del procesador extrae el contador de programa y el registro de estado originalmente apilados, y el programa intercedido reanuda su ejecución en el punto exacto del corte.
4.5. Tipos de direccionamiento y juegos de instrucciones
4.5.1. Concepto de modo de direccionamiento y dirección efectiva
El diseño de un procesador obliga a definir cómo se localizan los datos en la memoria. Un modo de direccionamiento determina la técnica que emplea la arquitectura de la unidad central de procesamiento para calcular la ubicación física de un operando. Las instrucciones máquina destinan un conjunto de bits para especificar el código de operación y otros campos adicionales para indicar los operandos sobre los que actúa.
La longitud de la instrucción define el límite del rango de memoria que el sistema direcciona de forma directa. La arquitectura emplea varios modos de direccionamiento para superar esta restricción y dotar al programador de mayor flexibilidad. El objetivo de estas técnicas consiste en calcular la dirección efectiva (), que representa la ubicación real en la memoria principal o en un registro donde reside el dato.
El cálculo de esta dirección se expresa mediante una función matemática que combina el campo de dirección de la instrucción con el contenido de los registros internos. La relación se representa con la siguiente notación:
En esta ecuación, equivale al valor del campo de dirección incluido en la instrucción, mientras que corresponde al contenido de uno o más registros de la CPU. El diseñador de la arquitectura ajusta esta función para reducir el número de referencias a memoria y optimizar el tiempo de ejecución.
4.5.2. Direccionamiento inmediato, directo e indirecto
Las arquitecturas implementan tres formas básicas para localizar operandos en función de la proximidad del dato a la instrucción. El direccionamiento inmediato codifica el operando dentro de la propia instrucción. El sistema no realiza ninguna lectura adicional en la memoria de datos, ya que el valor se obtiene durante la fase de captación de la instrucción. Su principal desventaja reside en que el tamaño del número está limitado por la longitud del campo de dirección.
El direccionamiento directo almacena la dirección exacta del operando en el campo de dirección de la instrucción. El hardware localiza el dato con una única referencia a memoria. Esta técnica se define mediante la ecuación matemática:
El direccionamiento indirecto emplea el campo de dirección para referenciar una posición de memoria que contiene la dirección final del operando. Esta técnica amplía el espacio de direcciones disponible, ya que la palabra de memoria almacena una dirección de longitud completa. El sistema requiere dos accesos a memoria: uno para leer la dirección y otro para extraer el dato.
4.5.3. Direccionamiento por registro y combinaciones
El direccionamiento de registros funciona de manera idéntica al direccionamiento directo, pero el campo de la instrucción apunta a un registro interno del procesador en lugar de a la memoria principal. El tiempo de acceso disminuye drásticamente porque los registros operan a la misma velocidad que el núcleo de la CPU.
La limitación de este modo radica en el escaso número de registros disponibles en la arquitectura. El programador o el compilador asignan los valores más utilizados a los registros para evitar accesos lentos a la memoria principal.
El direccionamiento indirecto por registro combina ambas técnicas. El campo de la instrucción selecciona un registro que almacena la dirección de memoria donde se encuentra el operando real.
Esta técnica requiere una sola referencia a memoria para obtener el dato final, a diferencia del direccionamiento indirecto tradicional que requiere dos. Los lenguajes de programación utilizan este modo constantemente para implementar punteros y manipular direcciones de memoria en tiempo de ejecución.
4.5.4. Direccionamiento basado en desplazamientos: indexado y relativo
El direccionamiento con desplazamiento combina las capacidades del direccionamiento directo y el indirecto por registro. La instrucción incluye dos campos: un valor explícito de dirección y una referencia a un registro. El hardware suma ambos componentes para generar la dirección efectiva final.
El direccionamiento relativo utiliza el contador de programa (PC) como registro implícito. El sistema suma la dirección de la instrucción actual con el desplazamiento especificado en el campo de dirección.
Esta técnica reduce el tamaño de las instrucciones y permite generar código reubicable, ya que las referencias a memoria se calculan en relación con la posición del código en ejecución.
El direccionamiento indexado suma un desplazamiento al contenido de un registro índice. El campo de dirección proporciona una dirección base, mientras que el registro índice almacena un valor positivo que se incrementa en cada iteración. El sistema emplea esta técnica para recorrer matrices, vectores y bloques de datos estructurados de forma eficiente.
| Modo de Direccionamiento | Algoritmo de Cálculo | Ventaja Principal | Desventaja Principal |
|---|---|---|---|
| Inmediato | Operando = A | Sin accesos a memoria | Rango de magnitud muy limitado |
| Directo | Implementación sencilla | Espacio de direcciones restringido | |
| Indirecto | Amplio espacio direccionable | Múltiples accesos a memoria | |
| Registro | Ejecución muy rápida | Escasez de registros | |
| Relativo | Facilita código reubicable | Rango de salto limitado |
4.5.5. Diseño del juego de instrucciones y el salto semántico
El juego de instrucciones (ISA, por sus siglas en inglés) constituye la interfaz entre el hardware del procesador y el software que lo controla. Su diseño determina el conjunto de operaciones que la máquina comprende y el formato binario que emplea para ejecutarlas. La elección de las instrucciones afecta al tamaño de los programas, la complejidad del procesador y la velocidad del sistema.
Históricamente, los lenguajes de alto nivel introdujeron abstracciones complejas que las máquinas no podían ejecutar directamente. Esta diferencia de abstracción se denomina salto semántico. Los ingenieros intentaron cerrar esta brecha dotando a los procesadores de operaciones nativas que se correspondían con sentencias de lenguajes como C o Pascal.
Este enfoque generó juegos de instrucciones enormes con decenas de modos de direccionamiento. Con el tiempo y la mejora de los compiladores, el diseño se bifurcó en dos filosofías de arquitectura que abordan la ejecución del software desde perspectivas opuestas: arquitecturas complejas y arquitecturas reducidas.
4.5.6. Arquitectura CISC: instrucciones complejas y ciclos múltiples
La arquitectura CISC (Computador de Juego de Instrucciones Complejo) dota al procesador de un soporte para instrucciones complejas y operaciones de alto nivel. La filosofía de diseño busca reducir el número de instrucciones que componen un programa compilado y minimizar el uso de memoria RAM, que antiguamente suponía un recurso muy costoso.
Un procesador CISC incorpora formatos de instrucción de longitud variable. Una instrucción de suma puede ocupar dos bytes si opera entre registros, o extenderse a diez bytes si emplea direccionamientos indirectos y desplazamientos largos. Este formato irregular dificulta la etapa de decodificación en la unidad de control.
El sistema ejecuta las operaciones en ciclos múltiples. Una única instrucción macroscópica se descompone en una secuencia de microoperaciones almacenadas en una memoria de control interna. El microprograma gestiona la lectura de memoria, la suma en la unidad aritmético-lógica y el guardado del resultado sin requerir nuevas instrucciones del exterior.
La ejecución de una instrucción como el movimiento de un bloque de memoria consume decenas de ciclos de reloj. Las instrucciones CISC combinan operaciones de carga y almacenamiento con cálculos matemáticos. La familia de procesadores x86 representa el ejemplo más conocido de esta arquitectura en el mercado actual.
4.5.7. Arquitectura RISC: simplicidad, regularidad y ejecución rápida
La arquitectura RISC (Computador de Juego de Instrucciones Reducido) basa su diseño en instrucciones reducidas, regulares y de ejecución rápida. El modelo delega la complejidad al compilador de software y simplifica el hardware al máximo para acelerar la velocidad del reloj del procesador.
El sistema RISC emplea un formato de instrucción de longitud fija, habitualmente de 32 bits. La unidad de control extrae los campos de operación y registro siempre en las mismas posiciones binarias. La decodificación se ejecuta mediante lógica cableada directa, sin requerir una memoria de microcódigo intermedia.
El modelo implementa una arquitectura de carga y almacenamiento (load/store). Solo dos instrucciones específicas acceden a la memoria principal. Las instrucciones aritméticas y lógicas operan exclusivamente sobre los datos almacenados en los registros internos. La CPU requiere un banco de registros de gran capacidad para minimizar las lecturas externas.
La uniformidad de las instrucciones permite aprovechar la segmentación de cauce (pipelining). El procesador divide la ejecución en etapas independientes (captación, decodificación, ejecución, acceso a memoria y escritura). El hardware procesa varias instrucciones de forma simultánea en distintas etapas y finaliza una instrucción por cada ciclo de reloj.
4.6. Rendimiento y segmentación
4.6.1. Ecuación de rendimiento de la CPU
El tiempo de ejecución de la CPU representa el tiempo real que el procesador dedica a procesar un programa. Esta métrica excluye los tiempos de espera causados por dispositivos de entrada/salida o pausas del sistema operativo.
El tiempo de ejecución depende de tres variables que el sistema multiplica entre sí. El primer factor es el recuento de instrucciones (IC), que representa la cantidad total de instrucciones ejecutadas. El segundo es el ciclos por instrucción (CPI), que indica el número promedio de ciclos de reloj necesarios para completar una instrucción. El tercero es el tiempo de ciclo de reloj, que define la duración de un pulso eléctrico del sistema.
El procesador determina su velocidad en hercios mediante la frecuencia de reloj, que es la inversa del tiempo de ciclo. La ecuación adaptada a la frecuencia se expresa mediante la siguiente fórmula:
El hardware también mide el IPC (instrucciones por ciclo), valor que resulta de invertir el CPI. Un procesador con un IPC mayor completa más operaciones dentro de un mismo ciclo. El rendimiento final depende del tipo de instrucciones que ejecuta el programa, ya que cada categoría posee un coste en ciclos distinto.
4.6.2. Concepto de segmentación de instrucciones
La segmentación o pipeline es una técnica de implementación de hardware que permite a la CPU solapar la ejecución de múltiples instrucciones. El sistema divide el procesamiento de cada instrucción en secuencias independientes.
Cada fase de la segmentación emplea recursos de hardware distintos. Esta separación física permite que el procesador introduzca una nueva instrucción en el sistema antes de que la instrucción anterior finalice su recorrido completo.
La técnica incrementa el rendimiento global (throughput), que define la cantidad total de instrucciones completadas por unidad de tiempo. La segmentación no disminuye la latencia, que representa el tiempo total requerido para procesar una instrucción individual desde el inicio hasta su conclusión.
El diseño teórico asume que todas las etapas consumen la misma cantidad de tiempo. El límite de aceleración del sistema equivale directamente al número total de etapas del cauce de ejecución. El reloj del sistema sincroniza el avance de los datos basándose siempre en el retardo de la etapa más lenta.
4.6.3. Etapas del cauce de ejecución
La arquitectura RISC divide el cauce de ejecución clásico en cinco etapas físicas. La sincronización avanza exactamente una etapa durante cada ciclo de reloj del sistema.
La primera etapa define la búsqueda de instrucción (IF). El sistema localiza la instrucción en la memoria principal y actualiza el contador de programa para apuntar al siguiente bloque.
La segunda etapa efectúa la decodificación y lectura de registros (ID). La unidad de control interpreta el código de operación mientras el hardware extrae simultáneamente los operandos del archivo de registros.
La tercera etapa gestiona la ejecución (EX). La ALU procesa las operaciones aritmético-lógicas solicitadas o calcula la dirección efectiva de memoria requerida.
La cuarta etapa controla el acceso a memoria (MEM). El procesador lee el dato requerido desde la memoria o escribe el valor calculado, actuando únicamente en instrucciones de transferencia de datos.
La quinta etapa realiza la escritura de resultados (WB). El hardware guarda el valor final calculado en la etapa de ejecución, o el dato leído en la etapa de memoria, dentro del archivo de registros.
4.6.4. Riesgos estructurales en la segmentación
El solapamiento del cauce introduce problemas técnicos definidos como riesgos. Un riesgo describe cualquier condición temporal que impide que la siguiente instrucción de un programa avance durante su ciclo de reloj designado.
Un riesgo estructural aparece cuando el hardware físico no soporta la combinación específica de instrucciones que intentan ejecutarse concurrentemente. Varios componentes del cauce compiten por el mismo recurso de la máquina en un mismo instante.
El procesador sufre un riesgo estructural grave si utiliza una única memoria compartida para instrucciones y datos. La lectura de datos de la etapa MEM colisiona directamente con la etapa IF que intenta buscar la siguiente instrucción.
El controlador del hardware resuelve estas colisiones deteniendo temporalmente el avance de la instrucción más reciente. El sistema introduce una burbuja o parada (stall), que representa un ciclo de reloj perdido donde no ocurre trabajo productivo.
La arquitectura moderna elude los riesgos de memoria implementando cachés separadas para instrucciones y datos. Sin embargo, las operaciones aritméticas multiciclo, como la división en coma flotante, todavía generan riesgos estructurales temporales en la unidad de ejecución.
4.6.5. Dependencias de datos y adelantamiento
Un riesgo de datos surge porque el orden secuencial de ejecución se solapa, alterando el momento en que los operandos se actualizan. La instrucción en proceso necesita un valor que una instrucción anterior todavía no ha almacenado.
La variante de dependencia más común representa la lectura después de escritura (RAW). El código exige leer un registro en la etapa ID antes de que la instrucción previa escriba el resultado en la etapa WB.
| Variación de riesgo | Descripción funcional | Mecanismo de resolución |
|---|---|---|
| RAW (Read After Write) | Lectura de un dato antes de su escritura previa. | Rutas de adelantamiento y paradas. |
| WAW (Write After Write) | Escritura de un dato antes de su escritura previa. | Renombramiento de registros. |
| WAR (Write After Read) | Escritura de un dato antes de su lectura previa. | Renombramiento de registros. |
El procesador esquiva los riesgos RAW incorporando una técnica llamada adelantamiento (forwarding o bypassing). El hardware añade multiplexores y rutas internas directas que transportan el dato desde la salida de la ALU hasta su entrada.
El adelantamiento permite que las instrucciones aritméticas posteriores operen sin ciclos de parada. La técnica falla cuando la instrucción anterior carga un dato de memoria, generando un riesgo de carga y uso (load-use).
El dato cargado se obtiene al finalizar la etapa MEM, pero la instrucción siguiente requiere ese valor al inicio de la etapa EX que ocurre simultáneamente. El procesador inyecta una burbuja obligatoria para sincronizar ambos eventos.
4.6.6. Dependencias de control y saltos
Un riesgo de control o riesgo de salto detiene la eficiencia del cauce debido a las alteraciones del flujo del programa. El hardware recupera instrucciones continuas y necesita evaluar la condición de un salto condicional.
El procesador ignora el destino de la ejecución hasta que decodifica la instrucción y calcula las direcciones. La máquina avanza por defecto recuperando la siguiente instrucción secuencial en la etapa IF.
El hardware resuelve la condición del salto en las etapas ID o EX. Si el salto resulta efectivo, el procesador constata que las instrucciones entrantes al cauce pertenecen al camino equivocado del código.
La unidad de control emite un vaciado del cauce (flush) que descarta las operaciones en curso. El hardware sustituye las señales de control de las instrucciones incorrectas por ceros absolutos, convirtiéndolas en burbujas inofensivas.
El tiempo desperdiciado genera una métrica conocida como penalización de salto. Los procesadores que emplean cauces muy largos sufren penalizaciones de múltiples ciclos, destruyendo el rendimiento matemático del sistema.
4.6.7. Técnicas de predicción de saltos
La mitigación de las penalizaciones de salto recae sobre la predicción de saltos. El mecanismo anticipa la dirección final de un salto condicional antes de que la unidad aritmético-lógica evalúe el código.
El sistema ejecuta operaciones preventivas basándose en patrones conocidos. La predicción estática asume un comportamiento matemático fijo; el procesador evalúa que los saltos hacia direcciones pasadas siempre se ejecutan, favoreciendo el procesamiento de bucles de código.
La predicción dinámica almacena el historial temporal del programa utilizando estructuras en memoria. El sistema reserva un búfer de historial de saltos (BHT) que archiva si los saltos recientes modificaron el flujo del programa.
El predictor básico emplea un único bit de historial, el cual falla frecuentemente durante la salida de bucles anidados. La ingeniería implementa un predictor de dos bits que tolera una anomalía antes de modificar su estado predictivo permanente.
El procesador expande este modelo utilizando un búfer de destino de saltos (BTB). La estructura opera como una memoria caché especializada que archiva las direcciones exactas de destino, permitiendo a la etapa IF recuperar instrucciones alternativas instantáneamente.
El compilador aplica soluciones exclusivas de software como el salto retardado (delayed branch). El algoritmo reordena instrucciones útiles e independientes para que se ejecuten detrás de un salto condicional, rellenando la ranura inactiva de la CPU.
4.7. Tendencias actuales
4.7.1. Límite del escalado de frecuencia y barrera térmica
El aumento continuo de la frecuencia de reloj en los procesadores alcanzó un límite físico derivado de la miniaturización de los transistores. Los fabricantes frenaron la escalada de megahercios para evitar daños en el silicio por sobrecalentamiento. A este límite de diseño se le conoce como barrera térmica. El consumo de energía de un procesador y el calor que disipa mantienen una relación directa con su frecuencia de funcionamiento. Podemos expresar esta relación de consumo de potencia dinámica mediante la siguiente ecuación física:
En la fórmula, representa la potencia, la capacitancia de los transistores, el voltaje y la frecuencia de reloj. Un incremento en la variable eleva linealmente el consumo, pero exige aumentar el voltaje, lo que eleva el calor generado de forma cuadrática. Al llegar a niveles de disipación de calor difíciles de gestionar con los sistemas de refrigeración convencionales, la industria replanteó la arquitectura. La mejora de rendimiento dejó de basarse en hacer funcionar un solo núcleo más rápido de forma aislada. Las arquitecturas migraron hacia el paralelismo a gran escala para mantener el aumento de rendimiento sin elevar las temperaturas.4.7.2. Evolución hacia procesadores multicore
La respuesta de la industria a la barrera térmica consiste en integrar varias unidades de procesamiento completas en una sola pastilla de silicio. A esta tecnología de integración física se la define como procesador multicore o multinúcleo. Cada uno de los núcleos funciona como un procesador independiente capaz de captar, decodificar y ejecutar su propia secuencia de instrucciones. El sistema operativo percibe un procesador multicore como si fuesen múltiples procesadores físicos individuales, lo que permite dividir la carga del sistema. Esta arquitectura delega la ganancia de velocidad en el paralelismo a nivel de hilo (TLP). El TLP permite que varias aplicaciones diferentes, o diversas tareas dentro de una misma aplicación, se ejecuten de forma simultánea en distintos núcleos físicos. La técnica requiere que el software esté diseñado para dividirse en hilos independientes, una práctica conocida como programación concurrente. Los sistemas sin optimizar para el multihilo no obtienen mejoras de rendimiento en estos procesadores, ya que un solo núcleo ejecuta la tarea mientras el resto permanece inactivo. Los procesadores multicore actuales utilizan un modelo de multiprocesamiento simétrico (SMP) integrado en el mismo circuito. En un diseño SMP, todos los núcleos tienen acceso uniforme a la memoria principal y comparten la jerarquía de memoria caché superior mediante un bus de sistema.
4.7.3. Procesamiento de múltiples hilos concurrentes
Además de añadir más núcleos físicos, los diseñadores modificaron la microarquitectura interna de cada núcleo para maximizar la ocupación de sus recursos. La técnica de multihilo simultáneo (SMT) duplica el estado arquitectónico de un núcleo físico para simular dos o más núcleos lógicos. El estado arquitectónico incluye todos los registros de propósito general y el contador de programa. Al tener dos estados arquitectónicos duplicados en el hardware, el núcleo físico gestiona y alterna la ejecución de dos hilos concurrentes. Las unidades de ejecución internas del procesador, como las unidades aritmético-lógicas o las unidades de coma flotante, se comparten físicamente entre ambos hilos lógicos. El hardware de despacho de instrucciones selecciona en cada ciclo de reloj de qué hilo extrae las operaciones a ejecutar. El objetivo del SMT consiste en ocultar la latencia de acceso a la memoria principal o las penalizaciones de la canalización. Si un hilo se detiene porque necesita buscar un dato externo, el planificador del hardware cambia inmediatamente al otro hilo disponible.
| Arquitectura interna | Núcleos físicos | Hilos por núcleo | Procesadores lógicos para el SO |
|---|---|---|---|
| Mononúcleo secuencial | 1 | 1 | 1 |
| Multicore estándar | 4 | 1 | 4 |
| Multicore con soporte SMT | 4 | 2 | 8 |
4.7.4. Integración de sistemas en chip
La miniaturización de los componentes ha permitido integrar elementos que tradicionalmente ocupaban múltiples placas de circuito en una sola pieza de silicio. A este tipo de circuito de alta densidad se le denomina sistema en chip (SoC). Un SoC agrupa la CPU, la memoria principal, los procesadores de señales digitales, las unidades de hardware gráfico y los controladores de periféricos. Su uso reduce el espacio físico necesario y los costes logísticos de fabricación de los equipos informáticos. Esta integración reduce el consumo de energía y mejora el rendimiento general del ancho de banda. Al acortar las distancias físicas entre la CPU y la memoria, las señales eléctricas recorren caminos microscópicos que minimizan la latencia de transferencia. Los diseños tipo SoC predominan en el mercado de dispositivos móviles, los ordenadores embebidos y los sensores del internet de las cosas. La tendencia de diseño traslada también esta integración a los ordenadores personales y los sistemas de servidor.
4.7.5. Unidades de procesamiento gráfico para cálculo general
El procesamiento visual moderno requiere aplicar las mismas operaciones matemáticas a millones de píxeles o vértices de forma masiva. Para resolver este cálculo en paralelo se desarrollaron las unidades de procesamiento gráfico (GPU), dotadas de miles de núcleos aritméticos. Las GPU explotan el paralelismo de datos, que consiste en aplicar una única instrucción de código a un gran conjunto de operandos distintos. Este modelo difiere del enfoque de las CPU, optimizadas para la ejecución secuencial de código y la toma de decisiones. El uso de las GPU se ha expandido más allá de los gráficos de ordenador mediante el concepto GPGPU (cómputo de propósito general en GPU). Sectores como la investigación científica o el modelado financiero trasladan las rutinas de cálculo intensivo a la GPU. Para aprovechar la potencia matemática de una GPU, el desarrollador debe estructurar el código en bloques compuestos por miles de hilos de ejecución idénticos. El hardware de la GPU agrupa estos hilos y los procesa en ráfagas paralelas utilizando registros matriciales anchos.
4.7.6. Arquitecturas de dominio específico y aceleradores de inteligencia artificial
El límite del rendimiento de los procesadores de propósito general ha propiciado la aparición de las arquitecturas de dominio específico (DSA). Estos procesadores hardware sacrifican la flexibilidad de la CPU para ejecutar una clase concreta de algoritmos con mayor velocidad. Dentro de la categoría DSA destacan los aceleradores de inteligencia artificial, conocidos como unidades de procesamiento neuronal (NPU) o unidades de procesamiento tensorial (TPU). Estos chips se construyen para resolver las operaciones matemáticas matriciales que exigen las redes neuronales de aprendizaje profundo. Las NPU implementan estructuras internas de datos denominadas matrices sistólicas de cálculo. En una matriz sistólica, los operandos fluyen a través de una red de unidades aritméticas interconectadas de manera sincronizada. Este flujo directo calcula y acumula los resultados parciales transfiriéndolos al elemento físico vecino sin necesidad de acceder a los registros intermedios o a la caché. La inclusión de las NPU se utiliza tanto en infraestructuras de computación en la nube como en terminales de usuario. Esta especialización arquitectónica descarga a la CPU de las cargas de inferencia de los algoritmos de reconocimiento de voz o imagen. Al derivar estas tareas matemáticas repetitivas al hardware específico, se reduce el consumo energético general del sistema.
4.7.7. Gestión térmica, escalado dinámico y overclocking
El control dinámico del consumo eléctrico y la disipación térmica determinan el comportamiento operativo de los procesadores actuales. Los fabricantes definen la potencia de diseño térmico (TDP) como el límite de calor que el chip genera de manera sostenida. Para elevar el rendimiento sin modificar la topología de la arquitectura, los procesadores emplean técnicas de overclocking controlado por hardware. El procesador evalúa su propia temperatura y su consumo eléctrico mediante sensores internos distribuidos por el silicio. Si la carga de trabajo lo requiere y el chip se encuentra por debajo de los límites del TDP, el sistema eleva automáticamente la frecuencia de reloj. Cuando la demanda del software disminuye, el procesador aplica el escalado dinámico de voltaje y frecuencia (DVFS). El mecanismo DVFS disminuye el voltaje que alimenta físicamente a los núcleos inactivos y reduce la velocidad de los osciladores internos. Esta técnica ahorra energía, prolongando la autonomía en dispositivos portátiles y controlando los costes en centros de datos. Si un procesador alcanza su umbral de temperatura crítica de funcionamiento, activa un sistema de seguridad denominado estrangulamiento térmico. El chip fuerza una reducción inmediata de su velocidad operativa para enfriarse y evitar daños físicos por exceso de calor.
5. Conclusiones
La estructura interna de la Unidad Central de Proceso (CPU), el componente físico responsable de interpretar y ejecutar las instrucciones de los programas, mantiene los principios de las primeras arquitecturas informáticas.
Los elementos propuestos por el modelo de Von Neumann, que incluyen la unidad de control, la unidad aritmético-lógica (ALU) para operaciones matemáticas y los registros para almacenamiento temporal, siguen presentes. Los fabricantes adaptan hoy estos diseños a escalas nanométricas para concentrar miles de millones de transistores en un único chip.
El aumento del rendimiento actual ya no depende de incrementar la frecuencia de reloj, debido a las altas restricciones térmicas. La mejora del rendimiento se explica mediante la ecuación de tiempo de ejecución de CPU:
Para reducir el indicador CPI (Ciclos Por Instrucción), la ingeniería se centra en la ejecución en paralelo. Esta técnica permite procesar múltiples instrucciones de forma simultánea empleando arquitecturas superescalares o procesadores multinúcleo.
El diseño de la jerarquía de cachés influye de forma directa en la velocidad del sistema. Este sistema organiza memorias de acceso rápido en diferentes niveles (L1, L2 y L3) para reducir el tiempo que tarda el procesador en acceder a los datos de la memoria principal. La segmentación de instrucciones divide el ciclo de procesamiento en etapas independientes que operan como una cadena de montaje. Ambas tecnologías maximizan el uso de las unidades de ejecución de la CPU.
Las limitaciones físicas impulsan el desarrollo continuo de arquitecturas heterogéneas, que son sistemas de computación que combinan núcleos de propósito general con hardware especializado.
Las empresas de semiconductores integran aceleradores de hardware, circuitos diseñados específicamente para realizar tareas matemáticas complejas con mayor velocidad y menor consumo energético. Ejemplos representativos de esta tendencia son las unidades de procesamiento de gráficos (GPU) y las unidades de procesamiento tensorial (TPU).
Estos diseños orientados al dominio de la aplicación mejoran el procesamiento de las cargas de trabajo asociadas a modelos de aprendizaje automático y análisis de grandes volúmenes de datos. Las arquitecturas para dispositivos móviles también utilizan configuraciones heterogéneas, que agrupan núcleos de alto rendimiento con núcleos eficientes para optimizar el consumo de batería. El sistema operativo asigna el trabajo al núcleo más adecuado según las exigencias del programa en cada instante.
Para los currículos de Formación Profesional, comprender esta evolución del hardware tiene una aplicación directa en la administración de infraestructura tecnológica.
Los técnicos informáticos dimensionan la capacidad de procesamiento requerida al configurar servidores físicos, plataformas de virtualización y servicios de computación en la nube. El conocimiento detallado de las arquitecturas multinúcleo y los sistemas heterogéneos permite optimizar la asignación de recursos, planificar las actualizaciones del centro de datos y resolver problemas de rendimiento en entornos empresariales de producción.
6. Bibliografía
- Stallings, W. (2006). Organización y arquitectura de computadores. Prentice Hall. — Describe la estructura de la CPU, microoperaciones y características RISC/CISC.
- Tanenbaum, A. S. (2000). Organización de computadoras, un enfoque estructurado. Pearson. — Detalla las fases del ciclo de instrucción y la función de los registros.
- Patterson, D. A., & Hennessy, J. L. (2017). Computer organization and design RISC-V edition. Morgan Kaufmann. — Explica métricas de rendimiento, segmentación y jerarquía de memoria.
- Irvine, K. (2014). Assembly language for x86 processors. Pearson. — Relaciona los registros y la memoria con el desarrollo y ejecución de software.
- Mano, M. M. (2013). Digital design. Pearson. — Trata los circuitos integrados y las bases lógicas de los componentes de la CPU.
- Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating system concepts. Wiley. — Expone el funcionamiento de las interrupciones y el soporte a nivel de software.