A pesar de que los microprocesadores actuales continúan desempeñando la misma función básica que el histórico 8088 —procesar datos—, hoy lo hacen con una eficiencia incomparable. A lo largo del tiempo, los ingenieros han innovado y perfeccionado las CPU mediante diversas mejoras. En esta sección, exploraremos ocho características clave que definen su evolución.
Exploraremos las tecnologías de los procesadores de una forma sencilla, centrándonos en tres aspectos clave: velocidad, capacidad de procesamiento bruto y eficiencia energética. A lo largo de este artículo, utilizaremos este enfoque para analizar las CPU. Además, hacia el final, destacaré conceptos y tecnologías diferenciadoras que cobran especial importancia cuando se trasciende el uso de una computadora de escritorio convencional.
1. Multiplicadores de reloj
Hoy en día, todas las CPU modernas operan a un múltiplo de la velocidad del reloj del sistema. Por ejemplo, el bus de sistema en mi equipo Ryzen 7 trabaja a 100 MHz, mientras que el multiplicador de reloj puede alcanzar x32 bajo máxima carga, permitiendo velocidades de hasta 3,2 GHz. En un principio, las CPU trabajaban al ritmo del bus del sistema, pero los ingenieros pronto se dieron cuenta de que la CPU era el componente que realizaba la mayor parte del trabajo en todo momento.
Si lograban acelerar únicamente las operaciones internas de la CPU, sin afectar a los demás componentes, podían optimizar significativamente el rendimiento general del sistema.
Las CPU modernas comunican su configuración a la placa base a través de una función conocida como CPUID (identificador de CPU). A partir de esta información, la placa base ajusta automáticamente la velocidad y el multiplicador. Sin embargo, en muchas placas base, es posible personalizar estas configuraciones de forma manual.
2. Procesamiento de 64 bits
A lo largo de las diferentes generaciones de microprocesadores, los ingenieros han realizado avances significativos en las características físicas de las CPUs. Por ejemplo, el bus de datos externo (EDB) aumentó progresivamente su capacidad, pasando de 8 bits a 32 y, finalmente, a 64 bits de ancho. De manera similar, el bus de direcciones evolucionó, ampliándose de 20 a 24 bits, luego a 32 bits, donde permaneció durante una década.
También se introdujeron cambios en las tecnologías integradas. Los ingenieros añadieron nuevos registros y funciones mejoradas, como las extensiones multimedia (MMX) y las extensiones SIMD en flujo continuo (SSE). Uno de los cambios más significativos, que aún sigue evolucionando, fue la transición hacia la computación de 64 bits.
Actualmente, la mayoría de las CPU modernas son compatibles con el procesamiento de 64 bits. Esto significa que pueden ejecutar sistemas operativos de 64 bits, como Windows 10 o Windows 11, y aplicaciones diseñadas específicamente para esta arquitectura. Aun así, también mantienen compatibilidad con sistemas operativos y aplicaciones de 32 bits, como algunas distribuciones de Linux. Además, los registros de propósito general se han ampliado a 64 bits.
El principal beneficio de la informática de 64 bits radica en su capacidad para soportar más de los 4 GB de memoria que limita el procesamiento de 32 bits. Con un bus de direcciones de 64 bits, las CPU pueden acceder a hasta 18,446,744,073,709,551,616 bytes de memoria, es decir, 16 exabytes (EB).
Este salto abre posibilidades impresionantes, especialmente para aplicaciones que manejan archivos grandes, como los programas de edición de video. La diferencia en rendimiento es notable al pasar de 4 GB a 8 GB o 16 GB de RAM.
2.1 La transición de x86 a x64
En sus inicios, las CPU basadas en la arquitectura x86 utilizaban un conjunto de instrucciones que se remontaba a los antiguos procesadores de los años 90, como el 80386. Con la llegada de las CPU de 64 bits, surgió la necesidad de etiquetar de forma clara las aplicaciones, sistemas operativos y otros elementos para que los consumidores pudieran identificar fácilmente su compatibilidad.
El término x64 fue introducido para distinguir las nuevas tecnologías de 64 bits, mientras que las de 32 bits seguían comercializándose como x86. Sin embargo, este sistema de nombres puede resultar confuso, ya que las CPU de 64 bits no solo son compatibles con software de 64 bits, sino que también manejan código de 32 bits sin problemas. Por esta razón, es común referirse a estas CPU como x86-64, un término que abarca tanto su compatibilidad con tecnologías antiguas como sus capacidades modernas.
La informática de 64 bits representa un avance esencial para las aplicaciones modernas, permitiendo un acceso más amplio a la memoria y un rendimiento mejorado en tareas que demandan recursos significativos.
3. Soporte de virtualización
Tanto Intel como AMD han integrado en sus CPU la capacidad de ejecutar múltiples sistemas operativos simultáneamente, una funcionalidad conocida como soporte de virtualización. En el pasado, este proceso se realizaba completamente a través del software, lo que representaba un desafío significativo para los programadores.
El problema radicaba en que las CPU originalmente estaban diseñadas para manejar un único sistema operativo a la vez. Para superar esta limitación, los programadores debían desarrollar extensos fragmentos de código que permitieran gestionar aspectos complejos, como la asignación de memoria o la identificación del sistema operativo que debía recibir las actualizaciones cuando el usuario escribía o hacía clic en un icono.
Con la incorporación del soporte de virtualización basado en hardware, las CPU han asumido gran parte de estas tareas, aliviando la carga sobre los programadores. Esto no solo simplificó el proceso de virtualización, sino que también lo hizo mucho más eficiente y accesible, permitiendo a los usuarios disfrutar de entornos virtuales más robustos y fáciles de manejar.
4. Ejecución paralela
Las CPU actuales son capaces de manejar múltiples instrucciones y fragmentos de ellas de manera simultánea, un proceso conocido como ejecución paralela. A diferencia de los primeros procesadores, que debían seguir un enfoque estrictamente lineal para completar cada tarea, las CPU modernas aprovechan varias tecnologías avanzadas para optimizar su rendimiento.
Este paralelismo se logra mediante el uso de múltiples canales, memoria caché dedicada y la capacidad de gestionar varios subprocesos o programas al mismo tiempo. Para apreciar plenamente la enorme mejora en eficiencia que ofrece la ejecución paralela, es importante comprender las diferentes etapas que intervienen en el procesamiento de datos.
4.1 Canalización (Pipelining)
Para procesar un comando proveniente del bus de datos, realizar el cálculo correspondiente y devolver la respuesta al bus, una CPU debe ejecutar al menos cuatro etapas:
Cada una de estas etapas es gestionada por los circuitos inteligentes y discretos dentro de la CPU. En las primeras generaciones de CPU, cuando un comando se colocaba en el bus de datos, cada etapa se ejecutaba secuencialmente, y la CPU no iniciaba un nuevo comando hasta que el proceso de las cuatro etapas no se completaba, lo que requería al menos cuatro ciclos de reloj. Durante este tiempo, tres de los cuatro circuitos permanecían inactivos.
Hoy en día, los circuitos dentro de la CPU están organizados en lo que se conoce como «canalización», un proceso similar a una cinta transportadora. Gracias a la canalización, cada etapa realiza su trabajo con cada pulso del ciclo de reloj, lo que mejora significativamente la eficiencia del proceso. La CPU dispone de múltiples circuitos que trabajan simultáneamente en diferentes tareas.
Los pipelines mantienen ocupadas todas las etapas del procesador en cada clic del reloj, lo que hace que la CPU funcione de manera más eficiente sin necesidad de aumentar la velocidad del reloj. Es importante señalar que una CPU siempre tiene al menos cuatro etapas: búsqueda, decodificación, ejecución y escritura, lo que se conoce como un pipeline de cuatro etapas. A lo largo del tiempo, los avances en almacenamiento en caché han permitido aumentar el número de etapas, y algunas CPUs actuales pueden tener hasta 20 etapas en su pipeline.
4.1.1 La canalización no es perfecta
La canalización, aunque eficiente, no está exenta de limitaciones. En ocasiones, una etapa de la CPU ejecuta un comando complejo que requiere más de un ciclo de reloj, lo que puede causar una interrupción en el proceso. La CPU intenta minimizar estas pausas o bloqueos en la canalización.
La etapa de decodificación es la que más frecuentemente genera estos bloqueos, ya que algunos comandos son más complicados de decodificar que otros. Para reducir la posibilidad de estos bloqueos debido a una decodificación complicada, los procesadores actuales implementan varias etapas de decodificación.
El interior de la CPU está formado por distintos bloques de circuitos especializados en los diferentes cálculos que necesita realizar su computadora. Por ejemplo, la unidad lógica aritmética (ALU), también conocida como la unidad de números enteros, se encarga de las operaciones matemáticas con números enteros, es decir, matemáticas básicas para números sin decimales. Un ejemplo clásico de cálculo con números enteros sería 3 + 4 = 7. La CPU dedica la mayor parte de su capacidad a realizar estos cálculos.
Además, las CPUs cuentan con circuitos especializados para manejar operaciones con números en punto flotante, conocidos como la unidad de punto flotante (FPU). En las primeras generaciones de CPU, solo la ALU o la FPU podían operar en una etapa de ejecución a la vez. Esto generaba un problema, ya que los cálculos con punto flotante solían requerir varios ciclos de reloj para completarse, lo que obligaba a la CPU a detener el procesamiento hasta que la FPU terminara su tarea.
Las CPU modernas solucionan este inconveniente al permitir múltiples secuencias de comandos, lo que permite mantener el flujo de procesamiento sin interrupciones.
4.2 La Caché
Cuando ejecutas un programa en la CPU, en realidad estás procesando múltiples programas pequeños de manera simultánea. Para ser más precisos, no estás ejecutando cada uno de esos programas de forma independiente, sino que al hacer doble clic en un ícono, como el de tu navegador web, Windows comienza a enviar diversas instrucciones a la CPU.
Cada uno de estos programas se descompone en pequeños fragmentos llamados subprocesos, que son series de instrucciones diseñadas para realizar tareas específicas con los datos.
Las CPU modernas no siguen un flujo secuencial de ejecución (paso 1, paso 2, etc.), sino que procesan una amplia variedad de instrucciones a la vez. Esto se debe a que muchas aplicaciones contienen instrucciones y datos que se reutilizan con frecuencia, a veces varias veces durante su ejecución.
Las CPUs con pipeline funcionan de manera óptima cuando los pipelines están llenos de instrucciones. Sin embargo, dado que la CPU procesa las instrucciones más rápido de lo que la RAM puede suministrarlas, inevitablemente se producen bloqueos en el pipeline (conocidos como estados de espera) debido a que la RAM no puede seguir el ritmo.
Para mitigar estos bloqueos, las CPUs cuentan con una RAM extremadamente rápida integrada, conocida como RAM estática (SRAM). Esta memoria precarga tantas instrucciones como sea posible y conserva copias de aquellas instrucciones y datos que ya han sido procesados, para que la CPU pueda reutilizarlos cuando sea necesario. A esta memoria se le llama caché.
El caché SRAM en las primeras CPUs era muy pequeño, de apenas unos 16 KB, pero su impacto en el rendimiento fue significativo. De hecho, mejoró tanto la eficiencia que muchos fabricantes de placas base empezaron a incorporar caché directamente en las mismas, con capacidades mucho mayores, generalmente entre 128 y 512 KB.
Cuando la CPU necesitaba buscar una línea de código, primero accedía al caché integrado (caché L1). Si no encontraba la información allí, la CPU consultaba el caché de la placa base, lo que ayudaba a acelerar aún más el proceso.
4.2.1 La Caché de la Placa Base
El caché de la placa base se conocía como caché L2, no porque estuviera físicamente en la placa base, sino porque era el segundo caché al que la CPU recurría. Con el tiempo, los ingenieros llevaron este concepto más allá al integrar el caché L2 directamente en el paquete de la CPU, y posteriormente, incluso en el propio chip de la CPU.
Hoy en día, muchas CPUs modernas incluyen tres niveles de caché: L1, L2 y L3 (este último es conocido como Smart Cache en los procesadores Intel).
En las primeras CPUs que incorporaban el caché L2 dentro del paquete de la CPU, este funcionaba a una velocidad de reloj más baja que el caché L1. Esto se debía a que el caché L1 estaba dentro de la CPU, por lo que operaba a la misma velocidad que la CPU. En cambio, el caché L2 se conectaba a la CPU mediante un pequeño conjunto de cables, y generalmente funcionaba a la mitad de la velocidad de la CPU.
La integración del caché L2 en el chip introdujo nuevos términos para describir las conexiones entre la CPU, el controlador de memoria (MCC), la RAM y el caché L2. El bus de direcciones y el bus de datos, que conectaban la CPU con el MCC y la RAM, se agruparon en un término único llamado bus frontal, mientras que la conexión entre la CPU y el caché L2 se denominó bus posterior. Sin embargo, estos términos han quedado obsoletos en las computadoras modernas, ya que las arquitecturas actuales no los utilizan.
Para adaptarse a los procesadores más rápidos, los fabricantes de placas base comenzaron a duplicar e incluso cuadruplicar el rendimiento del bus frontal. Este tipo de buses se conocen comúnmente como buses frontales de doble bombeo y cuádruple bombeo, términos que hacen referencia a la capacidad de transferir más datos en cada ciclo de reloj.
4.3 Multithreading (Multiprocesamiento)
En la era dorada de la computación de 32 bits con una sola CPU, Intel dio un gran paso adelante con la introducción de la CPU Pentium 4, que llevó el paralelismo a un nuevo nivel gracias a su tecnología Hyper-Threading.
Esta innovación permitió que el Pentium 4 ejecutara múltiples subprocesos simultáneamente, un proceso conocido como multithreading, lo que convirtió efectivamente a la CPU en dos unidades de procesamiento en un solo chip, utilizando un truco técnico.
El multithreading mejora la eficiencia de la CPU al permitir la ejecución de varias tareas de manera simultánea. Sin embargo, existen un par de limitaciones a tener en cuenta. Primero, tanto el sistema operativo como las aplicaciones deben estar diseñados para aprovechar esta funcionalidad.
Segundo, aunque la CPU simula la ejecución de un segundo procesador, no duplica la potencia de procesamiento, ya que los recursos principales de ejecución no se duplican, lo que significa que la mejora en el rendimiento no es proporcional a la adición de «un segundo procesador».
5. Procesamiento Multinúcleo
En 2002, la microarquitectura de las CPU alcanzó un punto de estancamiento, ya que las velocidades de reloj se acercaron a un límite práctico de alrededor de 4 GHz. Esto impulsó a los fabricantes de CPU a buscar nuevas formas de obtener mayor potencia de procesamiento.
Aunque Intel y AMD tenían enfoques distintos respecto a las CPU de 64 bits, ambos decidieron, prácticamente al mismo tiempo, dar un paso más allá de las CPU de un solo núcleo y combinar dos núcleos (o CPUs) en un solo chip, dando origen a la arquitectura de doble núcleo.
Una CPU de doble núcleo consta de dos unidades de ejecución (dos conjuntos de canales), pero estos comparten ranuras y memoria RAM. En cambio, una CPU de un solo núcleo solo tiene un conjunto de todo.
Hoy en día, las CPUs multinúcleo, con configuraciones de cuatro, seis u ocho núcleos, son comunes, y los modelos de gama alta pueden contar con hasta 32 núcleos. A lo largo de cada generación de procesadores multinúcleo, Intel y AMD han experimentado en cómo asignar la memoria caché entre los núcleos de manera más eficiente.
Un ejemplo concreto de cómo funciona esta asignación de memoria caché en los procesadores multinúcleo es el Intel Core i7. Este modelo tiene caché L1, L2 y L3 de 320 KB, 2 MB y 8 MB, respectivamente. La memoria caché L1 se divide en 48 KB para manejar datos (caché D) y 32 KB para instrucciones (caché I).
Cada núcleo tiene su propia memoria caché L1 y L2, mientras que los cuatro núcleos comparten la enorme memoria caché L3. Esta distribución permite que los núcleos se comuniquen y trabajen de manera más eficiente sin depender excesivamente de la RAM principal, que es mucho más lenta.
El diseño de las CPUs multinúcleo se orienta a dividir el trabajo entre los núcleos de forma independiente al sistema operativo, lo que se conoce como procesamiento multinúcleo. Esto es distinto de la tecnología Hyper-Threading, donde el sistema operativo y las aplicaciones deben estar específicamente programados para gestionar los múltiples subprocesos.
Es importante señalar que, aunque los procesadores multinúcleo son potentes, las aplicaciones deben estar optimizadas para aprovechar el paralelismo y obtener un verdadero incremento en el rendimiento.
Para mejorar aún más el rendimiento, tanto Intel como AMD han integrado Hyper-Threading en sus CPUs multinúcleo. Un ejemplo destacado es el Intel Core i9-12900k, que cuenta con 16 núcleos, Hyper-Threading, 16 MB de caché L2 y 30 MB de caché L3, además de Turbo Boost, que permite aumentar la velocidad del reloj por encima de los 5 GHz cuando el sistema lo requiere.
6. Controlador de Memoria Integrado (IMC)
Hoy en día, todos los microprocesadores incluyen un controlador de memoria integrado (IMC), que se desplaza del chip de la placa base a la propia CPU, mejorando así el flujo de información que entra y sale del procesador. Este IMC permite un control más eficiente, especialmente en elementos como la enorme caché L3, que se comparte entre varios núcleos.
Al igual que con otros componentes en el mundo de la informática, los fabricantes implementan diferentes tipos de IMC en sus CPUs, lo que significa que cada procesador maneja distintos tipos y capacidades de memoria RAM, lo que afecta su rendimiento y compatibilidad.
7. Unidad de Procesamiento Gráfico Integrada (GPU)
Tradicionalmente, el procesamiento de video de una computadora, es decir, la parte encargada de mostrar imágenes en el monitor, era realizado por un microprocesador discreto, diferente tanto en función como en arquitectura de las CPUs diseñadas para tareas generales. Este procesador gráfico es conocido como unidad de procesamiento gráfico (GPU).
Los procesadores gráficos pueden realizar ciertas tareas con más eficiencia que una CPU estándar, por lo que integrar una GPU directamente en la CPU mejora el rendimiento general del sistema. Además, reduce el consumo de energía, el tamaño y el costo del equipo. En un mundo cada vez más dominado por dispositivos móviles y computadoras portátiles, estas ventajas se han vuelto particularmente relevantes.
8. Seguridad
Todos los procesadores modernos incluyen la tecnología de bits NX, que permite a la CPU proteger secciones específicas de la memoria, evitando así que los ataques maliciosos afecten archivos esenciales del sistema operativo. Esta característica, en conjunto con la implementación del sistema operativo, protege los datos del sistema. Microsoft la denomina Prevención de Ejecución de Datos (DEP), y está activada por defecto en todos los sistemas operativos.
Dependiendo del fabricante, esta tecnología se conoce de diferentes maneras:
- No Te Pierdas Este Contenido Relacionado: 5 tipos de servidores esenciales: Amenazas y vulnerabilidades
Los avances tecnológicos en los microprocesadores han transformado la forma en que las computadoras gestionan tareas complejas y mejoran su rendimiento. Desde el controlador de memoria integrado que optimiza el flujo de datos, hasta la integración de unidades de procesamiento gráfico que mejoran la eficiencia, cada componente trabaja en conjunto para ofrecer un rendimiento más rápido y eficiente.
Además, las mejoras en seguridad, como la tecnología de bits NX, protegen nuestros sistemas de amenazas maliciosas. Estos avances no solo han hecho a las computadoras más poderosas, sino también más accesibles y seguras para el usuario