Articulo de referencia

unidad central de procesamiento

Un procesador de gama alta para consumidores fabricado por Intel : un Intel Core i9-14900KF. Dentro de una unidad central de procesamiento: El circuito integrado del Intel Xeon ...

Página semiprotegida

Un procesador de gama alta para consumidores fabricado por Intel : un Intel Core i9-14900KF.
Dentro de una unidad central de procesamiento: El circuito integrado del Intel Xeon 3060 , fabricado por primera vez en 2006.

Una unidad central de procesamiento ( CPU ), también conocida como procesador central , procesador principal o simplemente procesador , es el procesador principal en una computadora . [ 1 ] [ 2 ] Su circuito electrónico ejecuta las instrucciones de un programa de computadora , tales como operaciones aritméticas , lógicas, de control y de entrada/salida (E/S). [ 3 ] [ 4 ] [ 5 ] Esta función contrasta con la de los componentes externos, tales como la memoria principal y los circuitos de E/S, [ 6 ] y los coprocesadores especializados tales como las unidades de procesamiento gráfico (GPU).

La forma, el diseño y la implementación de las CPU han cambiado con el tiempo, pero su funcionamiento fundamental permanece casi inalterado. [ 7 ] Los componentes principales de una CPU incluyen la unidad aritmético-lógica (ALU) que realiza operaciones aritméticas y lógicas , los registros del procesador que suministran operandos a la ALU y almacenan los resultados de las operaciones de la ALU, y una unidad de control que orquesta la búsqueda (desde la memoria) , la decodificación y la ejecución (de instrucciones) dirigiendo las operaciones coordinadas de la ALU, los registros y otros componentes. Las CPU modernas dedican una gran área de semiconductores a cachés y paralelismo a nivel de instrucción para aumentar el rendimiento y a modos de CPU para admitir sistemas operativos y virtualización .

La mayoría de las CPU modernas se implementan en microprocesadores de circuitos integrados (CI) , con una o más CPU en un solo chip CI. Los chips de microprocesador con múltiples CPU se denominan procesadores multinúcleo ( MCP ). [ 8 ] Las CPU físicas individuales, llamadas núcleos de procesador , también pueden ser multihilo para admitir el multihilo a nivel de CPU. [ 9 ]

Un CI que contiene una CPU también puede contener memoria , interfaces periféricas y otros componentes de una computadora; [ 10 ] estos dispositivos integrados se denominan de diversas maneras microcontroladores o sistemas en chip (SoC).

Historia

EDVAC , una de las primeras computadoras con programa almacenado.

Las primeras computadoras, como la ENIAC, tuvieron que ser recableadas físicamente para realizar diferentes tareas, lo que provocó que estas máquinas se denominaran "computadoras de programa fijo". [ 11 ] El término "unidad central de procesamiento" se ha utilizado desde al menos 1955. [ 12 ] [ 13 ] Dado que el término "CPU" se define generalmente como un dispositivo para la ejecución de software (programa informático), los primeros dispositivos que podrían llamarse correctamente CPU surgieron con la llegada de la computadora de programa almacenado .

La idea de una computadora de programa almacenado ya estaba presente en el diseño de ENIAC de John Presper Eckert y John William Mauchly , pero inicialmente se omitió para que pudiera terminarse antes. [ 14 ] El 30 de junio de 1945, antes de que se fabricara ENIAC, el matemático John von Neumann distribuyó un documento titulado Primer borrador de un informe sobre EDVAC . Era el esquema de una computadora de programa almacenado que finalmente se completaría en agosto de 1949. [ 15 ] EDVAC fue diseñada para realizar un cierto número de instrucciones (u operaciones) de varios tipos. Significativamente, los programas escritos para EDVAC se almacenarían en la memoria de la computadora de alta velocidad en lugar de estar especificados por el cableado físico de la computadora. [ 16 ] Esto superó una grave limitación de ENIAC, que era el considerable tiempo y esfuerzo requeridos para reconfigurar la computadora para realizar una nueva tarea. [ 17 ] Con el diseño de von Neumann, el programa que ejecutaba EDVAC podía cambiarse simplemente modificando el contenido de la memoria. EDVAC no fue la primera computadora de programa almacenado; la Manchester Baby , que era una computadora experimental de programa almacenado a pequeña escala, ejecutó su primer programa el 21 de junio de 1948 [ 18 ] y la Manchester Mark 1 ejecutó su primer programa durante la noche del 16 al 17 de junio de 1949. [ 19 ]

Las primeras CPU eran diseños personalizados que se utilizaban como parte de un ordenador más grande y, a veces, distintivo. [ 20 ] Sin embargo, este método de diseñar CPU personalizadas para una aplicación particular ha dado paso en gran medida al desarrollo de procesadores multipropósito producidos en grandes cantidades. Esta estandarización comenzó en la era de los mainframes y minicomputadoras de transistores discretos y se ha acelerado rápidamente con la popularización del circuito integrado (CI). El CI ha permitido diseñar y fabricar CPU cada vez más complejas con tolerancias del orden de los nanómetros . [ 21 ] Tanto la miniaturización como la estandarización de las CPU han aumentado la presencia de dispositivos digitales en la vida moderna mucho más allá de la aplicación limitada de las máquinas de computación dedicadas. Los microprocesadores modernos aparecen en dispositivos electrónicos que van desde automóviles [ 22 ] hasta teléfonos móviles, [ 23 ] e incluso a veces en juguetes. [ 24 ] [ 25 ]

Aunque a von Neumann se le suele atribuir el diseño de la computadora de programa almacenado debido a su diseño de EDVAC, y dicho diseño se conoció como la arquitectura von Neumann , otros antes que él, como Konrad Zuse , habían sugerido e implementado ideas similares. [ 26 ] La llamada arquitectura Harvard de la Harvard Mark I , que se completó antes que EDVAC, [ 27 ] [ 28 ] también utilizaba un diseño de programa almacenado con cinta perforada en lugar de memoria electrónica. [ 29 ] La diferencia clave entre ambas es que la arquitectura Harvard separa el almacenamiento y el procesamiento de las instrucciones y los datos de la CPU, mientras que la arquitectura von Neumann utiliza el mismo espacio de memoria para ambos. [ 30 ] La mayoría de las CPU modernas son principalmente de diseño von Neumann, pero también se encuentran CPU con la arquitectura Harvard, especialmente en aplicaciones embebidas; por ejemplo, los microcontroladores Atmel AVR son procesadores con arquitectura Harvard. [ 31 ]

Antes de la invención del transistor, los relés y los tubos de vacío (tubos termoiónicos) se usaban comúnmente como elementos de conmutación; [ 32 ] [ 33 ] una computadora útil requiere miles o decenas de miles de dispositivos de conmutación. La velocidad general de un sistema depende de la velocidad de los interruptores. Las computadoras de tubos de vacío como EDVAC tendían a tener un promedio de ocho horas entre fallas, mientras que las computadoras de relés, como la más lenta pero anterior Harvard Mark I, fallaban muy raramente. [ 13 ] Al final, las CPU basadas en tubos se volvieron dominantes porque las importantes ventajas de velocidad que ofrecían generalmente compensaban los problemas de confiabilidad. La mayoría de estas primeras CPU síncronas funcionaban a bajas frecuencias de reloj en comparación con los diseños microelectrónicos modernos. Las frecuencias de señal de reloj que oscilaban entre 100 kHz y 4  MHz eran muy comunes en ese momento, limitadas en gran medida por la velocidad de los dispositivos de conmutación con los que se construían. [ 34 ]

CPU de transistores

Procesador IBM PowerPC 604e

La complejidad del diseño de las CPU aumentó a medida que diversas tecnologías facilitaron la construcción de dispositivos electrónicos más pequeños y fiables. La primera de estas mejoras se produjo con la llegada del transistor . Las CPU transistorizadas de las décadas de 1950 y 1960 ya no tenían que construirse con elementos de conmutación voluminosos, poco fiables y frágiles, como tubos de vacío y relés . [ 35 ] Con esta mejora, se construyeron CPU más complejas y fiables en una o varias placas de circuito impreso que contenían componentes discretos (individuales).

En 1964, IBM presentó su arquitectura de computadora IBM System/360 , que se utilizó en una serie de computadoras capaces de ejecutar los mismos programas con diferentes velocidades y rendimientos. [ 36 ] Esto fue significativo en un momento en que la mayoría de las computadoras electrónicas eran incompatibles entre sí, incluso las fabricadas por el mismo fabricante. Para facilitar esta mejora, IBM utilizó el concepto de microprograma (a menudo llamado "microcódigo"), que todavía se usa ampliamente en las CPU modernas. [ 37 ] La arquitectura System/360 fue tan popular que dominó el mercado de las computadoras centrales durante décadas y dejó un legado que continúa en computadoras modernas similares como la IBM zSeries . [ 38 ] [ 39 ] En 1965, Digital Equipment Corporation (DEC) presentó otra computadora influyente dirigida a los mercados científico y de investigación: la PDP-8 . [ 40 ]

Placa Fujitsu con procesadores SPARC64 VIIIfx

Las computadoras basadas en transistores tenían varias ventajas distintivas sobre sus predecesoras. Además de facilitar una mayor confiabilidad y un menor consumo de energía, los transistores también permitieron que las CPU operaran a velocidades mucho más altas debido al corto tiempo de conmutación de un transistor en comparación con un tubo o relé. [ 41 ] La mayor confiabilidad y el aumento drástico de la velocidad de los elementos de conmutación, que para entonces eran casi exclusivamente transistores, permitieron obtener fácilmente frecuencias de reloj de CPU de decenas de megahercios durante este período. [ 42 ] Además, mientras que las CPU de transistores discretos y circuitos integrados se usaban ampliamente, comenzaron a aparecer nuevos diseños de alto rendimiento, como los procesadores vectoriales de instrucción única, datos múltiples (SIMD) . [ 43 ] Estos primeros diseños experimentales dieron lugar más tarde a la era de las supercomputadoras especializadas como las fabricadas por Cray Inc. y Fujitsu Ltd. [ 43 ]

CPU de integración a pequeña escala

CPU, memoria principal e interfaz de bus externo de un DEC PDP-8 /I, fabricado con circuitos integrados de tamaño medio.

Durante este período, se desarrolló un método para fabricar muchos transistores interconectados en un espacio compacto. El circuito integrado (CI) permitió fabricar una gran cantidad de transistores en un solo chip semiconductor . Al principio, solo se miniaturizaron circuitos digitales básicos no especializados, como las puertas NOR, en CI. [ 44 ] Las CPU basadas en estos CI "bloques de construcción" se conocen generalmente como dispositivos de "integración a pequeña escala" (SSI). Los CI SSI, como los utilizados en la computadora de guía del Apolo , solían contener hasta unas pocas docenas de transistores. Para construir una CPU completa a partir de CI SSI se requerían miles de chips individuales, pero aun así consumían mucho menos espacio y energía que los diseños anteriores de transistores discretos. [ 45 ]

El System/370 de IBM , sucesor del System/360, utilizó circuitos integrados SSI en lugar de módulos de transistores discretos de Solid Logic Technology . [ 46 ] [ 47 ] Los PDP-8 /I y KI10 PDP-10 de DEC también cambiaron los transistores individuales utilizados por el PDP-8 y el KA PDP-10 a circuitos integrados SSI, [ 48 ] y su línea extremadamente popular PDP-11 se construyó originalmente con circuitos integrados SSI, pero finalmente se implementó con componentes LSI una vez que estos se volvieron prácticos.

CPU de integración a gran escala

Lee Boysel publicó artículos influyentes, incluido un "manifiesto" de 1967, que describía cómo construir el equivalente de una computadora central de 32 bits a partir de un número relativamente pequeño de circuitos de integración a gran escala (LSI). [ 49 ] [ 50 ] La única forma de construir chips LSI, que son chips con cien o más puertas, era construirlos utilizando un proceso de fabricación de semiconductores de óxido metálico (MOS) (ya sea lógica PMOS , lógica NMOS o lógica CMOS ). Sin embargo, algunas empresas continuaron construyendo procesadores a partir de chips de lógica de transistor-transistor bipolar (TTL) porque los transistores de unión bipolar eran más rápidos que los chips MOS hasta la década de 1970 (algunas empresas como Datapoint continuaron construyendo procesadores a partir de chips TTL hasta principios de la década de 1980). [ 50 ] En la década de 1960, los circuitos integrados MOS eran más lentos e inicialmente se consideraban útiles solo en aplicaciones que requerían baja potencia. [ 51 ] [ 52 ] Tras el desarrollo de la tecnología MOS de puerta de silicio por Federico Faggin en Fairchild Semiconductor en 1968, los circuitos integrados MOS reemplazaron en gran medida a los TTL bipolares como tecnología de chips estándar a finales de la década de 1970. [ 53 ]

A medida que avanzaba la tecnología microelectrónica , se colocaba un número cada vez mayor de transistores en los circuitos integrados (CI), lo que reducía la cantidad de CI individuales necesarios para una CPU completa. Los CI MSI y LSI aumentaron la cantidad de transistores a cientos, y luego a miles. Para 1968, la cantidad de CI necesarios para construir una CPU completa se había reducido a 24 CI de ocho tipos diferentes, y cada CI contenía aproximadamente 1000 MOSFET. [ 54 ] En marcado contraste con sus predecesores SSI y MSI, la primera implementación LSI del PDP-11 contenía una CPU compuesta por solo cuatro circuitos integrados LSI. [ 55 ]

Microprocesadores

Chip de un microprocesador Intel 80486DX2 (tamaño real: 12 × 6,75  mm) en su embalaje.
Dentro de una computadora portátil, con la CPU extraída del zócalo.

Desde su introducción, los microprocesadores han superado casi por completo a todos los demás métodos de implementación de unidades centrales de procesamiento. El primer microprocesador disponible comercialmente, fabricado en 1971, fue el Intel 4004. El Intel 4004 fue una de las primeras CPU orientadas al consumidor que integraba la unidad aritmético-lógica , la unidad de control y la unidad de registro en un chip. [ 56 ] El primer microprocesador de uso generalizado, fabricado en 1974, fue el Intel 8080. Los fabricantes de mainframes y minicomputadoras de la época lanzaron programas de desarrollo de circuitos integrados propietarios para actualizar sus arquitecturas informáticas más antiguas y, finalmente, produjeron microprocesadores compatibles con el conjunto de instrucciones que eran retrocompatibles con su hardware y software anteriores. Combinado con la llegada y el eventual éxito de la omnipresente computadora personal , el término CPU se aplica ahora casi exclusivamente [ a ] ​​a los microprocesadores. Varias CPU (denominadas núcleos ) pueden combinarse en un solo chip de procesamiento. [ 57 ]

Las generaciones anteriores de CPU se implementaban como componentes discretos y numerosos circuitos integrados (CI) pequeños en una o más placas de circuito. [ 58 ] Los microprocesadores, por otro lado, son CPU fabricadas en un número muy pequeño de CI; generalmente solo uno. [ 59 ] El tamaño general más pequeño de la CPU, como resultado de estar implementada en un solo chip, significa un tiempo de conmutación más rápido debido a factores físicos como la capacitancia parásita de puerta reducida . [ 60 ] [ 61 ] Esto ha permitido que los microprocesadores síncronos tengan frecuencias de reloj que van desde decenas de megahercios hasta varios gigahercios. Además, la capacidad de construir transistores extremadamente pequeños en un CI ha aumentado la complejidad y el número de transistores en una sola CPU muchas veces. Esta tendencia ampliamente observada se describe mediante la ley de Moore , que había demostrado ser un predictor bastante preciso del crecimiento de la complejidad de la CPU (y otros CI) hasta 2016. [ 62 ] [ 63 ]

Aunque la complejidad, el tamaño, la construcción y la forma general de las CPU han cambiado enormemente desde 1950, [ 64 ] el diseño y la función básicos no han cambiado mucho en absoluto. Casi todas las CPU comunes de hoy en día pueden describirse con mucha precisión como máquinas de programa almacenado de von Neumann. [ 65 ] [ b ] Dado que la ley de Moore ya no se cumple, han surgido preocupaciones sobre los límites de la tecnología de transistores de circuitos integrados. La miniaturización extrema de las puertas electrónicas está provocando que los efectos de fenómenos como la electromigración y la fuga subumbral se vuelvan mucho más significativos. [ 67 ] [ 68 ] Estas nuevas preocupaciones se encuentran entre los muchos factores que llevan a los investigadores a investigar nuevos métodos de computación, como la computadora cuántica , así como a expandir el uso del paralelismo y otros métodos que extienden la utilidad del modelo clásico de von Neumann.

Operación

La función fundamental de la mayoría de las CPU, independientemente de su forma física, es ejecutar una secuencia de instrucciones almacenadas que se denomina programa. Las instrucciones que se van a ejecutar se guardan en algún tipo de memoria del ordenador . Casi todas las CPU siguen los pasos de búsqueda, decodificación y ejecución en su funcionamiento, que en conjunto se conocen como ciclo de instrucción .

Tras la ejecución de una instrucción, todo el proceso se repite, y el siguiente ciclo de instrucción normalmente busca la siguiente instrucción en la secuencia debido al incremento del contador de programa . Si se ejecuta una instrucción de salto, el contador de programa se modifica para contener la dirección de la instrucción a la que se saltó y la ejecución del programa continúa con normalidad. En las CPU más complejas, se pueden buscar, decodificar y ejecutar varias instrucciones simultáneamente. Esta sección describe lo que generalmente se conoce como la " segmentación RISC clásica ", bastante común en las CPU sencillas utilizadas en muchos dispositivos electrónicos (a menudo llamados microcontroladores). Ignora en gran medida el papel importante de la caché de la CPU y, por lo tanto, la etapa de acceso de la segmentación.

Algunas instrucciones manipulan el contador de programa en lugar de producir datos de resultado directamente; estas instrucciones generalmente se denominan "saltos" y facilitan el comportamiento del programa, como bucles , ejecución condicional del programa (mediante el uso de un salto condicional) y la existencia de funciones . [ c ] En algunos procesadores, algunas otras instrucciones cambian el estado de los bits en un registro de "banderas" . Estas banderas se pueden usar para influir en cómo se comporta un programa, ya que a menudo indican el resultado de varias operaciones. Por ejemplo, en dichos procesadores, una instrucción de "comparación" evalúa dos valores y establece o borra bits en el registro de banderas para indicar cuál es mayor o si son iguales; una de estas banderas podría ser utilizada luego por una instrucción de salto posterior para determinar el flujo del programa.

Buscar

La operación de búsqueda implica recuperar una instrucción (representada por un número o secuencia de números) de la memoria del programa. La ubicación (dirección) de la instrucción en la memoria del programa está determinada por el contador de programa (PC; denominado "puntero de instrucción" en los microprocesadores Intel x86 ), que almacena un número que identifica la dirección de la siguiente instrucción que se va a buscar. Tras la búsqueda de una instrucción, el PC se incrementa en la longitud de la instrucción para que contenga la dirección de la siguiente instrucción en la secuencia. [ d ] A menudo, la instrucción que se va a buscar debe recuperarse de una memoria relativamente lenta, lo que provoca que la CPU se detenga mientras espera a que se devuelva la instrucción. Este problema se soluciona en gran medida en los procesadores modernos mediante cachés y arquitecturas de segmentación (véase más adelante).

Descodificar

La instrucción que la CPU obtiene de la memoria determina su función. En la etapa de decodificación, realizada por un circuito decodificador binario conocido como decodificador de instrucciones , la instrucción se convierte en señales que controlan otras partes de la CPU.

La forma en que se interpreta la instrucción está definida por la arquitectura del conjunto de instrucciones (ISA) de la CPU. [ e ] A menudo, un grupo de bits (es decir, un "campo") dentro de la instrucción, llamado código de operación , indica qué operación se debe realizar, mientras que los campos restantes generalmente proporcionan información suplementaria necesaria para la operación, como los operandos. Estos operandos pueden especificarse como un valor constante (llamado valor inmediato) o como la ubicación de un valor que puede ser un registro del procesador o una dirección de memoria, según lo determine algún modo de direccionamiento .

En algunos diseños de CPU, el decodificador de instrucciones se implementa como un circuito decodificador binario cableado e inmutable. En otros, se utiliza un microprograma para traducir las instrucciones en conjuntos de señales de configuración de la CPU que se aplican secuencialmente durante múltiples pulsos de reloj. En algunos casos, la memoria que almacena el microprograma es regrabable, lo que permite modificar la forma en que la CPU decodifica las instrucciones.

Ejecutar

Tras las fases de búsqueda y decodificación, se lleva a cabo la fase de ejecución. Dependiendo de la arquitectura de la CPU, esta puede consistir en una sola acción o en una secuencia de acciones. Durante cada acción, las señales de control habilitan o deshabilitan eléctricamente distintas partes de la CPU para que puedan realizar la operación deseada, total o parcialmente. La acción se completa, normalmente en respuesta a un pulso de reloj. Con frecuencia, los resultados se escriben en un registro interno de la CPU para un acceso rápido por parte de las instrucciones posteriores. En otros casos, los resultados pueden escribirse en la memoria principal, que es más lenta, pero menos costosa y de mayor capacidad .

Por ejemplo, si se va a ejecutar una instrucción que realiza una suma, se activan los registros que contienen los operandos (números que se van a sumar), así como las partes de la unidad aritmético-lógica (ALU) que realizan la suma. Cuando se produce el pulso de reloj, los operandos fluyen desde los registros de origen hacia la ALU, y la suma aparece en su salida. En los pulsos de reloj subsiguientes, otros componentes se habilitan (y deshabilitan) para transferir la salida (la suma de la operación) a la memoria (por ejemplo, un registro o memoria). Si la suma resultante es demasiado grande (es decir, es mayor que el tamaño de palabra de salida de la ALU), se activará un indicador de desbordamiento aritmético, lo que afectará a la siguiente operación.

Estructura e implementación

Diagrama de bloques de una computadora básica con un solo procesador. Las líneas negras indican el flujo de datos, mientras que las líneas rojas indican el flujo de control; las flechas indican las direcciones del flujo.

Integrado en el circuito de la CPU se encuentra un conjunto de operaciones básicas que puede realizar, denominado conjunto de instrucciones . Estas operaciones pueden incluir, por ejemplo, sumar o restar dos números, comparar dos números o saltar a una parte diferente de un programa. Cada instrucción está representada por una combinación única de bits , conocida como código de operación en lenguaje máquina . Al procesar una instrucción, la CPU decodifica el código de operación (mediante un decodificador binario ) en señales de control, que coordinan el comportamiento de la CPU. Una instrucción completa en lenguaje máquina consta de un código de operación y, en muchos casos, bits adicionales que especifican los argumentos de la operación (por ejemplo, los números que se van a sumar en el caso de una suma). En términos de complejidad, un programa en lenguaje máquina es una colección de instrucciones en lenguaje máquina que ejecuta la CPU.

La operación matemática propiamente dicha para cada instrucción la realiza un circuito lógico combinacional dentro del procesador de la CPU, conocido como unidad aritmético-lógica o ALU. En general, una CPU ejecuta una instrucción recuperándola de la memoria, utilizando su ALU para realizar una operación y, a continuación, almacenando el resultado en la memoria. Además de las instrucciones para operaciones matemáticas y lógicas con números enteros, existen diversas instrucciones de máquina, como las de carga y almacenamiento de datos desde la memoria, operaciones de bifurcación y operaciones matemáticas con números de coma flotante realizadas por la unidad de coma flotante (FPU) de la CPU. [ 69 ]

Unidad de control

La unidad de control (UC) es un componente de la CPU que dirige el funcionamiento del procesador. Indica a la memoria, la unidad aritmético-lógica y los dispositivos de entrada y salida del ordenador cómo responder a las instrucciones enviadas al procesador.

Dirige el funcionamiento de las demás unidades proporcionando señales de temporización y control. La mayoría de los recursos informáticos son gestionados por la unidad de control (UC). Dirige el flujo de datos entre la CPU y los demás dispositivos. John von Neumann incluyó la unidad de control como parte de la arquitectura von Neumann . En los diseños informáticos modernos, la unidad de control suele ser una parte interna de la CPU, y su función y funcionamiento generales no han cambiado desde su introducción. [ 70 ]

Unidad aritmético-lógica

Representación simbólica de una ALU y sus señales de entrada y salida.

La unidad aritmético-lógica (ALU) es un circuito digital dentro del procesador que realiza operaciones aritméticas con números enteros y lógicas bit a bit . Las entradas de la ALU son las palabras de datos sobre las que se va a operar (denominadas operandos ), información de estado de operaciones anteriores y un código de la unidad de control que indica qué operación realizar. Dependiendo de la instrucción que se ejecute, los operandos pueden provenir de registros internos de la CPU , memoria externa o constantes generadas por la propia ALU.

Cuando todas las señales de entrada se han estabilizado y propagado a través del circuito de la ALU, el resultado de la operación realizada aparece en las salidas de la ALU. Este resultado consta de una palabra de datos, que puede almacenarse en un registro o en la memoria, e información de estado, que normalmente se almacena en un registro interno especial de la CPU reservado para este fin.

Las CPU modernas suelen contener más de una ALU para mejorar el rendimiento.

Unidad de generación de direcciones

La unidad de generación de direcciones (AGU), también conocida como unidad de cálculo de direcciones (ACU), [ 71 ] es una unidad de ejecución dentro de la CPU que calcula las direcciones que esta utiliza para acceder a la memoria principal . Al realizar los cálculos de direcciones mediante circuitos independientes que operan en paralelo con el resto de la CPU, se reduce el número de ciclos de CPU necesarios para ejecutar diversas instrucciones de máquina , lo que mejora el rendimiento.

Al realizar diversas operaciones, las CPU necesitan calcular las direcciones de memoria necesarias para obtener datos de la memoria; por ejemplo, se deben calcular las posiciones en memoria de los elementos de un array antes de que la CPU pueda obtener los datos de las ubicaciones de memoria reales. Estos cálculos de generación de direcciones implican diferentes operaciones aritméticas de enteros , como suma, resta, operaciones de módulo o desplazamientos de bits . A menudo, el cálculo de una dirección de memoria implica más de una instrucción de máquina de propósito general, que no necesariamente se decodifican y ejecutan rápidamente. Al incorporar una AGU en el diseño de una CPU, junto con la introducción de instrucciones especializadas que utilizan la AGU, se pueden descargar varios cálculos de generación de direcciones del resto de la CPU y, a menudo, ejecutarlos rápidamente en un solo ciclo de CPU.

Las capacidades de una AGU dependen de la CPU y su arquitectura . Por lo tanto, algunas AGU implementan y exponen más operaciones de cálculo de direcciones, mientras que otras incluyen instrucciones especializadas más avanzadas que pueden operar con múltiples operandos simultáneamente. Algunas arquitecturas de CPU incluyen varias AGU, lo que permite ejecutar más de una operación de cálculo de direcciones al mismo tiempo, lo que proporciona mejoras adicionales en el rendimiento gracias a la naturaleza superescalar de los diseños de CPU avanzados. Por ejemplo, Intel incorpora varias AGU en sus microarquitecturas Sandy Bridge y Haswell , lo que aumenta el ancho de banda del subsistema de memoria de la CPU al permitir la ejecución en paralelo de múltiples instrucciones de acceso a memoria.

Unidad de gestión de memoria (MMU)

Muchos microprocesadores (en teléfonos inteligentes y computadoras de escritorio, portátiles y servidores) cuentan con una unidad de gestión de memoria (MMU), que traduce direcciones lógicas a direcciones físicas de RAM, proporcionando protección de memoria y capacidades de paginación , útiles para la memoria virtual . La MMU suele estar integrada en el procesador, pero en algunos casos se encuentra en un circuito integrado (CI) separado. [ 72 ] Los procesadores más sencillos, especialmente los microcontroladores , generalmente no incluyen una MMU.

Cache

Una caché de CPU es una memoria utilizada por la unidad central de procesamiento (CPU) de una computadora para reducir el costo promedio (tiempo o energía) para acceder a los datos de la memoria principal . [ 73 ] Una caché es una memoria más pequeña y rápida, más cercana a un núcleo del procesador , que almacena copias de los datos de ubicaciones de memoria principal de uso frecuente . La mayoría de las CPU tienen diferentes cachés independientes, generalmente organizadas como una jerarquía de varios niveles de caché (L1, L2, L3, L4, etc.). Cada nivel de caché ascendente suele ser más lento pero más grande que el nivel anterior, siendo L1 el más rápido y el más cercano a la CPU. En el nivel L1 generalmente hay cachés de instrucciones y de datos separadas .

La mayoría de las CPU modernas (rápidas) (con pocas excepciones especializadas [ f ] ) ​​tienen múltiples niveles de caché de CPU. Las primeras CPU que usaban caché tenían un solo nivel de caché; a diferencia de las cachés de nivel 1 posteriores, no estaba dividida en L1d (para datos) y L1i (para instrucciones). Casi todas las CPU actuales con caché tienen una caché L1 dividida. También tienen cachés L2 y, para procesadores más grandes, también cachés L3. La caché L2 generalmente no está dividida y actúa como un repositorio común para la caché L1 ya dividida. Cada núcleo de un procesador multinúcleo tiene una caché L2 dedicada y generalmente no se comparte entre los núcleos. La caché L3, y las cachés de nivel superior, se comparten entre los núcleos y no están divididas. Una caché L4 es actualmente poco común y generalmente está en memoria de acceso aleatorio dinámica (DRAM), en lugar de en memoria de acceso aleatorio estática (SRAM), en un chip o matriz separada. Históricamente, esto también ocurría con la caché L1, mientras que los chips más grandes han permitido su integración y, en general, la de todos los niveles de caché, con la posible excepción del último. Cada nivel adicional de caché tiende a ser más grande y su optimización es diferente.

Existen otros tipos de cachés (que no se tienen en cuenta para el "tamaño de caché" de las cachés más importantes mencionadas anteriormente), como el búfer de traducción anticipada (TLB) que forma parte de la unidad de gestión de memoria (MMU) que tienen la mayoría de las CPU.

Las cachés generalmente tienen un tamaño que es potencia de dos: 2, 8, 16, etc. KiB o MiB (para tamaños mayores que no son L1), aunque el IBM z13 tiene una caché de instrucciones L1 de 96 KiB. [ 74 ]

frecuencia del reloj

La mayoría de las CPU son circuitos síncronos , lo que significa que utilizan una señal de reloj para regular el ritmo de sus operaciones secuenciales. Esta señal es generada por un circuito oscilador externo que produce un número constante de pulsos por segundo en forma de onda cuadrada periódica . La frecuencia de los pulsos de reloj determina la velocidad a la que la CPU ejecuta las instrucciones y, por lo tanto, cuanto más rápido sea el reloj, más instrucciones ejecutará la CPU por segundo.

Para garantizar el correcto funcionamiento de la CPU, el periodo del reloj es mayor que el tiempo máximo necesario para que todas las señales se propaguen a través de ella. Al establecer el periodo del reloj en un valor muy superior al retardo de propagación en el peor de los casos , es posible diseñar toda la CPU y la forma en que mueve los datos alrededor de los "bordes" de la señal de reloj ascendente y descendente. Esto tiene la ventaja de simplificar significativamente la CPU, tanto desde el punto de vista del diseño como del número de componentes. Sin embargo, también conlleva la desventaja de que toda la CPU debe esperar a que sus elementos más lentos se completen, aunque algunas partes sean mucho más rápidas. Esta limitación se ha compensado en gran medida mediante diversos métodos para aumentar el paralelismo de la CPU (véase más adelante).

Sin embargo, las mejoras arquitectónicas por sí solas no solucionan todos los inconvenientes de las CPU con sincronización global. Por ejemplo, una señal de reloj está sujeta a los retrasos de cualquier otra señal eléctrica. Las frecuencias de reloj más altas en las CPU cada vez más complejas dificultan mantener la señal de reloj en fase (sincronizada) en toda la unidad. Esto ha llevado a que muchas CPU modernas requieran múltiples señales de reloj idénticas para evitar que una sola señal se retrase lo suficiente como para provocar un mal funcionamiento de la CPU. Otro problema importante, a medida que las frecuencias de reloj aumentan drásticamente, es la cantidad de calor que disipa la CPU . El reloj, que cambia constantemente, hace que muchos componentes cambien de estado independientemente de si se están utilizando en ese momento. En general, un componente que cambia de estado consume más energía que un elemento en estado estático. Por lo tanto, a medida que aumenta la frecuencia de reloj, también aumenta el consumo de energía, lo que hace que la CPU requiera una mayor disipación de calor mediante soluciones de refrigeración .

Un método para gestionar la conmutación de componentes innecesarios se denomina " clock gating" (desactivación del reloj), que consiste en apagar la señal de reloj de los componentes no necesarios (deshabilitándolos efectivamente). Sin embargo, esto suele considerarse difícil de implementar y, por lo tanto, no se utiliza comúnmente fuera de diseños de muy bajo consumo. Un diseño de CPU notable que utiliza ampliamente el "clock gating" es el Xenon basado en IBM PowerPC utilizado en la Xbox 360 ; esto reduce los requisitos de energía de la Xbox 360. [ 75 ]

CPU sin reloj

Otro método para abordar algunos de los problemas con una señal de reloj global es eliminarla por completo. Si bien eliminar la señal de reloj global hace que el proceso de diseño sea considerablemente más complejo en muchos aspectos, los diseños asíncronos (o sin reloj) ofrecen ventajas notables en el consumo de energía y la disipación de calor en comparación con diseños síncronos similares. Aunque es poco común, se han construido CPU asíncronas completas sin utilizar una señal de reloj global. Dos ejemplos notables de esto son el AMULET compatible con ARM y el MiniMIPS compatible con MIPS R3000. [ 76 ]

En lugar de eliminar por completo la señal de reloj, algunos diseños de CPU permiten que ciertas partes del dispositivo sean asíncronas, como el uso de ALU asíncronas junto con la segmentación superescalar para lograr algunas mejoras en el rendimiento aritmético. Si bien no está del todo claro si los diseños totalmente asíncronos pueden tener un rendimiento comparable o superior al de sus contrapartes síncronas, es evidente que al menos destacan en operaciones matemáticas más simples. Esto, combinado con su excelente consumo de energía y propiedades de disipación de calor, los hace muy adecuados para computadoras integradas . [ 77 ]

módulo regulador de voltaje

Muchos procesadores modernos incorporan un módulo de gestión de energía integrado en el chip que regula el suministro de voltaje bajo demanda a los circuitos de la CPU, lo que permite mantener un equilibrio entre el rendimiento y el consumo de energía.

Rango de enteros

Cada CPU representa los valores numéricos de una manera específica. Por ejemplo, algunas de las primeras computadoras digitales representaban los números como valores del sistema numérico decimal (base 10) , mientras que otras empleaban representaciones más inusuales, como el decimal codificado biquinario (base 2-5 ) o el ternario (base 3). Casi todas las CPU modernas representan los números en formato binario , donde cada dígito se representa mediante una magnitud física de dos valores , como un voltaje "alto" o "bajo " .

Una palabra de seis bits que contiene la representación codificada en binario del valor decimal 40. La mayoría de las CPU modernas emplean tamaños de palabra que son potencias de dos, por ejemplo, 8, 16, 32 o 64 bits.

Relacionado con la representación numérica está el tamaño y la precisión de los números enteros que una CPU puede representar. En el caso de una CPU binaria, esto se mide por la cantidad de bits (dígitos significativos de un entero codificado en binario) que la CPU puede procesar en una operación, lo que comúnmente se denomina tamaño de palabra , ancho de bits , ancho de ruta de datos , precisión de enteros o tamaño de enteros . El tamaño de enteros de una CPU determina el rango de valores enteros sobre los que puede operar directamente. [ h ] Por ejemplo, una CPU de 8 bits puede manipular directamente enteros representados por ocho bits, que tienen un rango de 256 (2 8 ) valores enteros discretos.

El rango de enteros también puede afectar la cantidad de ubicaciones de memoria que la CPU puede direccionar directamente (una dirección es un valor entero que representa una ubicación de memoria específica). Por ejemplo, si una CPU binaria usa 32 bits para representar una dirección de memoria, entonces puede direccionar directamente 2³² ubicaciones de memoria. Para sortear esta limitación y por otras razones, algunas CPU utilizan mecanismos (como la administración de memoria o la conmutación de bancos ) que permiten direccionar memoria adicional.

Las CPU con tamaños de palabra mayores requieren más circuitos y, por consiguiente, son físicamente más grandes, cuestan más y consumen más energía (y, por lo tanto, generan más calor). Como resultado, en las aplicaciones modernas se suelen usar microcontroladores más pequeños de 4 u 8 bits , aunque existen CPU con tamaños de palabra mucho mayores (como 16, 32, 64 e incluso 128 bits). Sin embargo, cuando se requiere un mayor rendimiento, las ventajas de un tamaño de palabra mayor (mayores rangos de datos y espacios de direcciones) pueden compensar las desventajas. Una CPU puede tener rutas de datos internas más cortas que el tamaño de palabra para reducir el tamaño y el costo. Por ejemplo, aunque la arquitectura del conjunto de instrucciones del IBM System/360 era de 32 bits, los modelos System/360 30 y 40 tenían rutas de datos de 8 bits en la unidad aritmético-lógica, de modo que una suma de 32 bits requería cuatro ciclos, uno por cada 8 bits de los operandos; y, aunque el conjunto de instrucciones de la serie Motorola 68000 era de 32 bits, los modelos Motorola 68000 y 68010 tenían rutas de datos de 16 bits en la unidad aritmético-lógica, de modo que una suma de 32 bits requería dos ciclos.

Para obtener algunas de las ventajas que ofrecen las longitudes de bits más bajas y más altas, muchos conjuntos de instrucciones tienen diferentes anchos de bits para datos enteros y de punto flotante, lo que permite a las CPU que implementan ese conjunto de instrucciones tener diferentes anchos de bits para diferentes partes del dispositivo. Por ejemplo, el conjunto de instrucciones del IBM System/360 era principalmente de 32 bits, pero admitía valores de punto flotante de 64 bits para facilitar una mayor precisión y rango en números de punto flotante. [ 37 ] El System/360 Modelo 65 tenía un sumador de 8 bits para aritmética decimal y binaria de punto fijo y un sumador de 60 bits para aritmética de punto flotante. [ 78 ] Muchos diseños de CPU posteriores utilizan anchos de bits mixtos similares, especialmente cuando el procesador está destinado a un uso de propósito general donde se requiere un equilibrio razonable de capacidad de entero y punto flotante.

Paralelismo

Modelo de una CPU subescalar, en la que se necesitan quince ciclos de reloj para completar tres instrucciones.

La descripción del funcionamiento básico de una CPU que se ofrece en la sección anterior describe la forma más simple que puede adoptar una CPU. Este tipo de CPU, generalmente denominada subescalar , opera y ejecuta una instrucción en uno o dos datos a la vez, es decir, menos de una instrucción por ciclo de reloj ( IPC < 1 ).

Este proceso genera una ineficiencia inherente en las CPU subescalares. Dado que solo se ejecuta una instrucción a la vez, toda la CPU debe esperar a que esa instrucción se complete antes de pasar a la siguiente. Como resultado, la CPU subescalar se "bloquea" en instrucciones que tardan más de un ciclo de reloj en completarse. Incluso añadir una segunda unidad de ejecución (véase más abajo) no mejora mucho el rendimiento; en lugar de bloquearse una sola ruta, ahora se bloquean dos rutas y aumenta el número de transistores no utilizados. Este diseño, en el que los recursos de ejecución de la CPU solo pueden operar con una instrucción a la vez, solo puede alcanzar un rendimiento escalar (una instrucción por ciclo de reloj, IPC = 1 ). Sin embargo, el rendimiento es casi siempre subescalar (menos de una instrucción por ciclo de reloj, IPC < 1 ).

Los intentos por lograr un rendimiento escalar y superior han dado lugar a diversas metodologías de diseño que provocan que la CPU se comporte de forma menos lineal y más paralela. Al referirse al paralelismo en las CPU, generalmente se utilizan dos términos para clasificar estas técnicas de diseño:

Cada metodología difiere tanto en la forma en que se implementan como en la efectividad relativa que ofrecen para aumentar el rendimiento de la CPU para una aplicación. [ i ]

Paralelismo a nivel de instrucción

Segmentación básica de cinco etapas. En el mejor de los casos, esta segmentación puede mantener una tasa de finalización de una instrucción por ciclo de reloj.

Uno de los métodos más sencillos para aumentar el paralelismo consiste en iniciar los primeros pasos de búsqueda y decodificación de instrucciones antes de que la instrucción anterior termine de ejecutarse. Esta técnica se conoce como segmentación de instrucciones y se utiliza en casi todas las CPU modernas de propósito general. La segmentación permite ejecutar varias instrucciones simultáneamente dividiendo la ruta de ejecución en etapas discretas. Esta separación se puede comparar con una cadena de montaje, en la que una instrucción se va completando en cada etapa hasta que sale de la segmentación de ejecución y se descarta.

Sin embargo, la segmentación introduce la posibilidad de que el resultado de la operación anterior sea necesario para completar la siguiente; una condición que a menudo se denomina conflicto de dependencia de datos. Por lo tanto, los procesadores segmentados deben verificar este tipo de condiciones y retrasar una parte de la segmentación si es necesario. Un procesador segmentado puede llegar a ser casi escalar, limitado únicamente por bloqueos de la segmentación (una instrucción que permanece más de un ciclo de reloj en una etapa).

Una sencilla arquitectura de procesamiento en paralelo superescalar. Al obtener y enviar dos instrucciones a la vez, se puede completar un máximo de dos instrucciones por ciclo de reloj.

Las mejoras en la segmentación de instrucciones llevaron a una mayor disminución del tiempo de inactividad de los componentes de la CPU. Los diseños que se denominan superescalares incluyen una larga segmentación de instrucciones y múltiples unidades de ejecución idénticas , como unidades de carga-almacenamiento , unidades aritmético-lógicas , unidades de punto flotante y unidades de generación de direcciones . [ 79 ] En una segmentación superescalar, las instrucciones se leen y se pasan a un despachador, que decide si las instrucciones pueden ejecutarse en paralelo (simultáneamente). Si es así, se envían a las unidades de ejecución, lo que resulta en su ejecución simultánea. En general, el número de instrucciones que una CPU superescalar completará en un ciclo depende del número de instrucciones que puede enviar simultáneamente a las unidades de ejecución.

La mayor parte de la dificultad en el diseño de una arquitectura de CPU superescalar reside en la creación de un despachador eficaz. Este debe ser capaz de determinar rápidamente si las instrucciones pueden ejecutarse en paralelo, así como de distribuirlas de manera que se mantenga ocupada la mayor cantidad posible de unidades de ejecución. Esto requiere que la tubería de instrucciones se llene con la mayor frecuencia posible y exige cantidades significativas de caché de CPU . También hace que las técnicas para evitar riesgos , como la predicción de bifurcaciones , la ejecución especulativa , el cambio de nombre de registros , la ejecución fuera de orden y la memoria transaccional , sean cruciales para mantener altos niveles de rendimiento. Al intentar predecir qué bifurcación (o ruta) tomará una instrucción condicional, la CPU puede minimizar la cantidad de veces que toda la tubería debe esperar hasta que se complete una instrucción condicional. La ejecución especulativa a menudo proporciona modestos aumentos de rendimiento al ejecutar partes del código que pueden no ser necesarias después de que se complete una operación condicional. La ejecución fuera de orden reorganiza en cierta medida el orden en que se ejecutan las instrucciones para reducir los retrasos debidos a las dependencias de datos. Asimismo, en el caso de un único flujo de instrucciones y múltiples flujos de datos , es decir, cuando se debe procesar una gran cantidad de datos del mismo tipo, los procesadores modernos pueden deshabilitar partes de la tubería de procesamiento para que, cuando una sola instrucción se ejecuta muchas veces, la CPU omita las fases de búsqueda y decodificación, lo que aumenta considerablemente el rendimiento en ciertas ocasiones, especialmente en motores de programas muy monótonos, como el software de creación de vídeo y el procesamiento de fotografías.

Cuando una fracción de la CPU es superescalar, la parte que no lo es sufre una penalización de rendimiento debido a las pausas en la planificación. El procesador Intel P5 Pentium tenía dos ALU superescalares que podían aceptar una instrucción por ciclo de reloj cada una, pero su FPU no. Por lo tanto, el P5 era superescalar para enteros, pero no para coma flotante. El sucesor de la arquitectura P5 de Intel, el P6 , añadió capacidades superescalares a sus funciones de coma flotante.

El diseño simple de segmentación y superescalar aumenta el paralelismo a nivel de instrucción (ILP) de una CPU al permitirle ejecutar instrucciones a velocidades superiores a una instrucción por ciclo de reloj. La mayoría de los diseños de CPU modernos son, al menos en cierta medida, superescalares, y casi todas las CPU de propósito general diseñadas en la última década lo son. En los últimos años, parte del énfasis en el diseño de computadoras con alto ILP se ha desplazado del hardware de la CPU a su interfaz de software, o arquitectura del conjunto de instrucciones (ISA). La estrategia de la palabra de instrucción muy larga (VLIW) hace que parte del ILP se infiera directamente del software, lo que reduce el trabajo de la CPU para aumentar el ILP y, por lo tanto, reduce la complejidad del diseño.

Paralelismo a nivel de tareas

Otra estrategia para lograr un buen rendimiento consiste en ejecutar múltiples hilos o procesos en paralelo. Esta área de investigación se conoce como computación paralela . [ 80 ] En la taxonomía de Flynn , esta estrategia se conoce como flujo de instrucciones múltiples, flujo de datos múltiples (MIMD). [ 81 ]

Una tecnología utilizada para este propósito es el multiprocesamiento (MP). [ 82 ] El tipo inicial de esta tecnología se conoce como multiprocesamiento simétrico (SMP), donde un pequeño número de CPU comparten una vista coherente de su sistema de memoria. En este esquema, cada CPU tiene hardware adicional para mantener una vista de la memoria constantemente actualizada. Al evitar vistas obsoletas de la memoria, las CPU pueden cooperar en el mismo programa y los programas pueden migrar de una CPU a otra. Para aumentar el número de CPU que cooperan más allá de un puñado, en la década de 1990 se introdujeron esquemas como el acceso a memoria no uniforme (NUMA) y los protocolos de coherencia basados ​​en directorios . Los sistemas SMP están limitados a un pequeño número de CPU, mientras que los sistemas NUMA se han construido con miles de procesadores. Inicialmente, el multiprocesamiento se construyó utilizando múltiples CPU discretas y placas para implementar la interconexión entre los procesadores. Cuando los procesadores y su interconexión se implementan en un solo chip, la tecnología se conoce como multiprocesamiento a nivel de chip (CMP, por sus siglas en inglés) y el chip individual como procesador multinúcleo .

Posteriormente se reconoció que existía un paralelismo de grano más fino dentro de un mismo programa. Un solo programa podía tener varios hilos (o funciones) que podían ejecutarse por separado o en paralelo. Algunos de los primeros ejemplos de esta tecnología implementaban el procesamiento de entrada/salida , como el acceso directo a memoria, como un hilo independiente del hilo de cálculo. En la década de 1970 se introdujo un enfoque más general de esta tecnología, cuando se diseñaron sistemas para ejecutar múltiples hilos de cálculo en paralelo. Esta tecnología se conoce como multihilo (MT). Este enfoque se considera más rentable que el multiprocesamiento, ya que solo se replica un pequeño número de componentes dentro de una CPU para admitir MT, a diferencia de la CPU completa en el caso del MP. En MT, las unidades de ejecución y el sistema de memoria, incluidas las cachés, se comparten entre múltiples hilos. La desventaja de MT es que la compatibilidad del hardware con el multihilo es más visible para el software que la del MP, por lo que el software supervisor, como los sistemas operativos, debe sufrir mayores modificaciones para admitir MT. Un tipo de multihilo implementado se conoce como multihilo temporal , donde un hilo se ejecuta hasta que se bloquea esperando datos de la memoria externa. En este esquema, la CPU cambia rápidamente de contexto a otro hilo listo para ejecutarse, cambio que a menudo se realiza en un ciclo de reloj de la CPU, como en el UltraSPARC T1 . Otro tipo de multihilo es el multihilo simultáneo , donde las instrucciones de varios hilos se ejecutan en paralelo dentro de un ciclo de reloj de la CPU.

Durante varias décadas, desde la década de 1970 hasta principios de la década de 2000, el enfoque en el diseño de CPU de propósito general de alto rendimiento se centró principalmente en lograr un alto paralelismo a nivel de instrucción (ILP) mediante tecnologías como la segmentación, las cachés, la ejecución superescalar, la ejecución fuera de orden, etc. Esta tendencia culminó en CPU grandes y de alto consumo energético, como el Intel Pentium 4. A principios de la década de 2000, los diseñadores de CPU se vieron limitados en su intento de lograr un mayor rendimiento mediante técnicas de ILP debido a la creciente disparidad entre las frecuencias de operación de la CPU y las de la memoria principal, así como al aumento de la disipación de potencia de la CPU debido a técnicas de ILP más complejas.

Los diseñadores de CPU tomaron prestadas ideas de mercados informáticos comerciales, como el procesamiento de transacciones , donde el rendimiento agregado de múltiples programas, también conocido como computación de alto rendimiento , era más importante que el rendimiento de un solo hilo o proceso.

Este cambio de enfoque se evidencia en la proliferación de diseños de procesadores de doble núcleo y de más núcleos y, en particular, en los diseños más recientes de Intel que se asemejan a su arquitectura P6 menos superscalar . Los diseños más recientes de varias familias de procesadores presentan multiprocesamiento a nivel de chip, incluidos el x86-64 Opteron y el Athlon 64 X2 , el SPARC UltraSPARC T1 , el IBM POWER4 y POWER5 , así como varias CPU de consolas de videojuegos como el diseño PowerPC de triple núcleo de la Xbox 360 y el microprocesador Cell de 7 núcleos de la PlayStation 3 .

paralelismo de datos

Un paradigma menos común pero cada vez más importante de los procesadores (y, de hecho, de la computación en general) se ocupa del paralelismo de datos. Los procesadores mencionados anteriormente se denominan todos dispositivos escalares. [ j ] Como su nombre indica, los procesadores vectoriales manejan múltiples datos en el contexto de una sola instrucción. Esto contrasta con los procesadores escalares, que manejan un dato por cada instrucción. Según la taxonomía de Flynn , estos dos esquemas de manejo de datos se denominan generalmente flujo de instrucciones único , flujo de datos múltiple ( SIMD ) y flujo de instrucciones único , flujo de datos único ( SISD ), respectivamente. La gran utilidad de crear procesadores que manejan vectores de datos radica en la optimización de tareas que tienden a requerir que se realice la misma operación (por ejemplo, una suma o un producto escalar ) en un gran conjunto de datos. Algunos ejemplos clásicos de este tipo de tareas incluyen aplicaciones multimedia (imágenes, vídeo y sonido), así como muchos tipos de tareas científicas y de ingeniería. Mientras que un procesador escalar debe completar todo el proceso de búsqueda, decodificación y ejecución de cada instrucción y valor en un conjunto de datos, un procesador vectorial puede realizar una sola operación en un conjunto de datos relativamente grande con una sola instrucción. Esto solo es posible cuando la aplicación requiere muchos pasos que aplican una sola operación a un conjunto de datos extenso.

La mayoría de los primeros procesadores vectoriales, como el Cray-1 , se asociaban casi exclusivamente con la investigación científica y las aplicaciones de criptografía . Sin embargo, a medida que la multimedia se ha trasladado en gran medida a los medios digitales, la necesidad de alguna forma de SIMD en los procesadores de propósito general se ha vuelto significativa. Poco después de que la inclusión de unidades de coma flotante comenzara a ser común en los procesadores de propósito general, las especificaciones e implementaciones de unidades de ejecución SIMD también comenzaron a aparecer para estos procesadores a mediados de la década de 1990. Algunas de estas primeras especificaciones SIMD, como las Extensiones de Aceleración Multimedia (MAX) de HP y MMX de Intel , solo admitían números enteros. Esto resultó ser un impedimento significativo para algunos desarrolladores de software, ya que muchas de las aplicaciones que se benefician de SIMD trabajan principalmente con números de coma flotante . Progresivamente, los desarrolladores refinaron y rehicieron estos primeros diseños hasta convertirlos en algunas de las especificaciones SIMD modernas más comunes, que generalmente se asocian con una arquitectura de conjunto de instrucciones (ISA). Algunos ejemplos modernos notables incluyen las Extensiones SIMD de Transmisión (SSE) de Intel y AltiVec (también conocido como VMX), relacionado con PowerPC . [ k ]

Contador de rendimiento de hardware

Muchas arquitecturas modernas (incluidas las embebidas) suelen incluir contadores de rendimiento de hardware (HPC), que permiten la recopilación, evaluación comparativa , depuración o análisis de métricas de software en ejecución a bajo nivel (nivel de instrucción). [ 83 ] [ 84 ] Los HPC también pueden utilizarse para descubrir y analizar actividades inusuales o sospechosas del software, como exploits de programación orientada a retorno (ROP) o programación orientada a retorno de señal (SROP), etc. [ 85 ] Esto lo suelen hacer los equipos de seguridad de software para evaluar y encontrar programas binarios maliciosos. [ 86 ]

Muchos proveedores importantes (como IBM , Intel , AMD y Arm ) proporcionan interfaces de software (generalmente escritas en C/C++) que se pueden usar para recopilar datos de los registros de la CPU con el fin de obtener métricas. [ 87 ] Los proveedores de sistemas operativos también proporcionan software como perf(Linux) para registrar, evaluar o rastrear eventos de la CPU en ejecución de núcleos y aplicaciones.

Los contadores de hardware proporcionan un método de bajo costo para recopilar métricas de rendimiento completas relacionadas con los elementos centrales de una CPU (unidades funcionales, cachés, memoria principal, etc.), una ventaja significativa sobre los analizadores de rendimiento por software. [ 88 ] Además, generalmente eliminan la necesidad de modificar el código fuente subyacente de un programa. [ 89 ] Debido a que los diseños de hardware difieren entre arquitecturas, los tipos específicos y las interpretaciones de los contadores de hardware también cambiarán.

Modos privilegiados

La mayoría de las CPU modernas cuentan con modos privilegiados para dar soporte a los sistemas operativos y la virtualización.

La computación en la nube puede utilizar la virtualización para proporcionar una unidad central de procesamiento virtual [ 90 ] ( vCPU ) para usuarios separados; [ 91 ] vCPU no debe confundirse con un servidor privado virtual (VPS).

Un host es el equivalente virtual de una máquina física, en la que opera un sistema virtual. [ 92 ] Cuando varias máquinas físicas operan en tándem y se administran como un todo, los recursos de computación y memoria agrupados forman un clúster . En algunos sistemas, es posible agregar y eliminar dinámicamente de un clúster. Los recursos disponibles a nivel de host y clúster se pueden particionar en grupos de recursos con granularidad fina .

Actuación

El rendimiento o la velocidad de un procesador depende, entre muchos otros factores, de la frecuencia de reloj (generalmente dada en múltiplos de hercios ) y las instrucciones por ciclo de reloj (IPC), que en conjunto son los factores de las instrucciones por segundo (IPS) que la CPU puede ejecutar. [ 93 ] [ 94 ] Muchos valores de IPS reportados han representado tasas de ejecución "máximas" en secuencias de instrucciones artificiales con pocas bifurcaciones, mientras que las cargas de trabajo realistas consisten en una mezcla de instrucciones y aplicaciones, algunas de las cuales tardan más en ejecutarse que otras. El rendimiento de la jerarquía de memoria también afecta en gran medida al rendimiento del procesador, un aspecto que apenas se considera en los cálculos de IPS. Debido a estos problemas, se han desarrollado varias pruebas estandarizadas, a menudo llamadas " benchmarks " para este propósito , como SPECint , para intentar medir el rendimiento efectivo real en aplicaciones de uso común.  

El rendimiento de procesamiento de las computadoras aumenta al usar procesadores multinúcleo , que esencialmente consiste en conectar dos o más procesadores individuales (llamados núcleos en este sentido) a un circuito integrado. [ 95 ] Idealmente, un procesador de doble núcleo sería casi el doble de potente que un procesador de un solo núcleo. En la práctica, la ganancia de rendimiento es mucho menor, solo alrededor del 50%, debido a algoritmos de software e implementación imperfectos. [ 96 ] Aumentar el número de núcleos en un procesador (es decir, doble núcleo, cuádruple núcleo, etc.) aumenta la carga de trabajo que puede manejar. Esto significa que el procesador ahora puede manejar numerosos eventos asíncronos, interrupciones, etc., que pueden afectar a la CPU cuando se sobrecarga. Estos núcleos pueden considerarse como diferentes pisos en una planta de procesamiento, donde cada piso maneja una tarea diferente. A veces, estos núcleos manejarán las mismas tareas que los núcleos adyacentes si un solo núcleo no es suficiente para manejar la información. Las CPU multinúcleo mejoran la capacidad de una computadora para ejecutar varias tareas simultáneamente al proporcionar potencia de procesamiento adicional. Sin embargo, el aumento de velocidad no es directamente proporcional al número de núcleos añadidos. Esto se debe a que los núcleos necesitan interactuar a través de canales específicos, y esta comunicación entre núcleos consume una parte de la velocidad de procesamiento disponible. [ 97 ]

Debido a las capacidades específicas de las CPU modernas, como el multihilo simultáneo y uncore , que implican compartir los recursos reales de la CPU con el objetivo de aumentar su utilización, la monitorización de los niveles de rendimiento y el uso del hardware se ha vuelto gradualmente una tarea más compleja. [ 98 ] En respuesta, algunas CPU implementan lógica de hardware adicional que monitoriza el uso real de varias partes de la CPU y proporciona varios contadores accesibles al software; un ejemplo es la tecnología Performance Counter Monitor de Intel . [ 9 ]

Overclocking

El overclocking es un proceso que consiste en aumentar la velocidad de reloj de una CPU (y otros componentes) más allá de sus velocidades nominales. Aumentar la frecuencia de reloj de un componente hace que realice más operaciones por segundo. [ 99 ] El overclocking puede aumentar la temperatura de la CPU y provocar su sobrecalentamiento , por lo que la mayoría de los usuarios no lo realizan y mantienen la velocidad de reloj sin cambios. Los fabricantes pueden limitar el grado de overclocking de un componente, por ejemplo, limitando las relaciones de reloj , el consumo máximo de energía o ambos.

Errores

El diseño de algunos procesadores se ha vuelto tan complejo que resulta difícil probarlos completamente , y esto ha causado problemas en los grandes proveedores de servicios en la nube. [ 100 ]

Véase también

Notas

  1. Actualmente, los circuitos integrados se utilizan para implementar todas las CPU, excepto algunas máquinas diseñadas para soportar grandes pulsos electromagnéticos, por ejemplo, los de un arma nuclear.
  2. El llamado memorándum "von Neumann" expuso la idea de los programas almacenados, [ 66 ] que, por ejemplo, pueden almacenarse en tarjetas perforadas , cinta de papel o cinta magnética.
  3. Algunas computadoras antiguas, como la Harvard Mark I, no admitían ningún tipo de instrucción de "salto", lo que limitaba la complejidad de los programas que podían ejecutar. Es principalmente por esta razón que a menudo no se considera que estas computadoras contengan una CPU propiamente dicha, a pesar de su gran similitud con las computadoras de programa almacenado.
  4. Dado que el contador de programa cuenta direcciones de memoria y no instrucciones , se incrementa en la cantidad de unidades de memoria que contiene la palabra de instrucción. En el caso de las arquitecturas de conjunto de instrucciones (ISA) simples con palabras de instrucción de longitud fija, este valor siempre es el mismo. Por ejemplo, una ISA de 32 bits con palabras de instrucción de longitud fija que utiliza palabras de memoria de 8 bits siempre incrementaría el contador de programa en cuatro (excepto en el caso de saltos). Las ISA que utilizan palabras de instrucción de longitud variable incrementan el contador de programa en la cantidad de palabras de memoria correspondiente a la longitud de la última instrucción.
  5. Dado que la arquitectura del conjunto de instrucciones de una CPU es fundamental para su interfaz y uso, se utiliza a menudo para clasificar el "tipo" de CPU. Por ejemplo, una "CPU PowerPC" utiliza alguna variante de la arquitectura del conjunto de instrucciones PowerPC. Una CPU con una arquitectura del conjunto de instrucciones determinada puede ejecutar una arquitectura diferente mediante un emulador.
  6. Algunos procesadores, aceleradores o microcontroladores especializados no tienen memoria caché. Para mayor velocidad, si se requiere, disponen de una memoria intermedia integrada que cumple una función similar, aunque gestionada por software. En microcontroladores, por ejemplo, para aplicaciones de tiempo real estricto, puede ser mejor contar con memoria caché o, al menos, no tenerla, ya que con un solo nivel de memoria, las latencias de carga son predecibles.
  7. El concepto físico de voltaje es analógico por naturaleza, con un rango prácticamente infinito de valores posibles. Para la representación física de números binarios, se definen dos rangos específicos de voltaje: uno para el nivel lógico '0' y otro para el nivel lógico '1'. Estos rangos vienen determinados por consideraciones de diseño, como los márgenes de ruido y las características de los dispositivos utilizados para crear la CPU.
  8. Si bien el tamaño de enteros de una CPU impone un límite a los rangos de enteros, esto puede superarse (y a menudo se supera) mediante una combinación de técnicas de software y hardware. Al usar memoria adicional, el software puede representar enteros de magnitudes mucho mayores que las que puede representar la CPU. En ocasiones, el conjunto de instrucciones de la CPU incluso facilita las operaciones con enteros mayores de los que puede representar de forma nativa, proporcionando instrucciones para que la aritmética de enteros grandes sea relativamente rápida. Este método para manejar enteros grandes es más lento que utilizar una CPU con mayor capacidad de enteros, pero es una compensación razonable en los casos en que admitir de forma nativa todo el rango de enteros necesario sería prohibitivo en términos de costos. Consulte Aritmética de precisión arbitraria para obtener más detalles sobre enteros de tamaño arbitrario admitidos exclusivamente por software.
  9. Ni ILP ni TLP sonintrínsecamente superiores; son simplemente métodos diferentes para aumentar el paralelismo de la CPU. Por lo tanto, ambos tienen ventajas y desventajas, que a menudo dependen del tipo de software que el procesador esté diseñado para ejecutar. Las CPU con alto TLP se utilizan con frecuencia en aplicaciones que se prestan bien a dividirse en numerosas aplicaciones más pequeñas, los llamados " problemas fácilmente paralelizable ". A menudo, un problema computacional que se puede resolver rápidamente con estrategias de diseño de alto TLP, como el multiprocesamiento simétrico, requiere mucho más tiempo en dispositivos con alto ILP, como las CPU superescalares, y viceversa.
  10. Anteriormente, el término escalar se utilizaba para comparar el recuento IPC que ofrecían diversos métodos ILP. Aquí, el término se utiliza en un sentido estrictamente matemático para contrastarlo con los vectores. Véase escalar (matemáticas) y vector (geometría) .
  11. Si bien SSE/SSE2/SSE3 han reemplazado a MMX en los procesadores de propósito general de Intel, los diseños IA-32 más recientes aún son compatibles con MMX. Esto generalmente se logra proporcionando la mayor parte de la funcionalidad de MMX con el mismo hardware que admite los conjuntos de instrucciones SSE, mucho más amplios.

Referencias

  1. Equipo, Experto en YCT. Dibujo Técnico y Ciencias Básicas . Youth Competition Times. pág.  425.
  2. Nagpal, DP (2008). Fundamentos de informática . S. Chand Publishing. pág. 33. ISBN  978-81-219-2388-0.
  3. "¿Qué es un procesador (CPU)? Una definición de WhatIs.com" . WhatIs . Informa TechTarget. 14 de agosto de 2019. Archivado del original el 15 de marzo de 2024. Consultado el 15 de marzo de 2024 .
  4. Chesalov, Alexander (12 de abril de 2023). El glosario de la cuarta revolución industrial: más de 1500 de los términos más importantes que usarás para crear el futuro . Litres. ISBN 978-5-04-541163-9.
  5. Jagare, Ulrika (19 de abril de 2022). Operating AI: Bridging the Gap Between Technology and Business . John Wiley & Sons. ISBN 978-1-119-83321-5.
  6. ^ Kuck, David (1978). Computadoras y Computaciones, Vol 1 . John Wiley & Sons, Inc. pág. 12.ISBN  978-0471027164.
  7. Prabhat, Equipo (13-04-2023). Guía definitiva para el examen preliminar y principal de nivel de posgrado combinado SSC CGL Tier-I y Tier II (con los últimos exámenes resueltos). Libro de guía en inglés: Libro superventas del equipo Prabhat: Guía definitiva para el examen preliminar y principal de nivel de posgrado combinado SSC CGL Tier-I y Tier II (con los últimos exámenes resueltos). Libro de guía en inglés . Prabhat Prakashan. pág. 95. ISBN  978-93-5488-527-3.
  8. "¿Qué es un procesador multinúcleo y cómo funciona?" . TechTarget . 2022-03-07 . Consultado el 2026-07-05 .
  9. 1 2 Dementiev, Roman; Willhalm, Thomas; Bruggeman, Otto; Fay, Patrick; Ungerer, Patrick; Ott, Austen; Lu, Patrick; Harris, James; Kerly, Phil; Konsor, Patrick; Semin, Andrey; Kanaly, Michael; Brazones, Ryan; Shah, Rahul; Dobkins, Jacob (30 de noviembre de 2022). "Intel® Performance Counter Monitor: una mejor manera de medir la utilización de la CPU" . Intel . Consultado el 5 de julio de 2026 .
  10. Herres, David (6 de octubre de 2020). Osciloscopios: Manual para estudiantes, ingenieros y científicos . Springer Nature. pág. 130. ISBN  978-3-030-53885-9.
  11. Regan, Gerard (2008). Breve historia de la informática . Springer. pág. 66. ISBN  978-1848000834Consultado el 26 de noviembre de 2014 .
  12. Weik, Martin H. (1955). "Un estudio de los sistemas informáticos digitales electrónicos domésticos" . Sitio web del misil Nike de Ed Thelen . Laboratorio de Investigación Balística . Archivado del original el 26 de enero de 2021. Recuperado el 5 de julio de 2026 .
  13. 1 2 Weik, Martin H. (1961). "Un tercer estudio de los sistemas informáticos digitales electrónicos domésticos" . Sitio web del misil Nike de Ed Thelen . Laboratorio de Investigación Balística . Archivado del original el 11 de septiembre de 2017. Recuperado el 16 de diciembre de 2005 .
  14. "Bit By Bit" . Haverford College. Archivado del original el 13 de octubre de 2012. Consultado el 1 de agosto de 2015 .
  15. Primer borrador de un informe sobre el EDVAC (PDF) (Informe técnico). Escuela de Ingeniería Eléctrica Moore , Universidad de Pensilvania . 1945. Archivado (PDF) del original el 9 de marzo de 2021. Consultado el 31 de marzo de 2018 .
  16. Copeland, B. Jack (2020), "La historia moderna de la informática" , en Zalta, Edward N. (ed.), La enciclopedia de filosofía de Stanford ( edición de invierno de 2020), Laboratorio de Investigación en Metafísica, Universidad de Stanford , consultado el 5 de julio de 2026. 
  17. "Cumpleaños de ENIAC" . The MIT Press. 9 de febrero de 2016. Archivado del original el 17 de octubre de 2018. Recuperado el 17 de octubre de 2018 .
  18. Enticknap, Nicholas (verano de 1998), "El jubileo de oro de la informática" , Resurrection (20), The Computer Conservation Society, ISSN 0958-7403 , archivado del original el 17 de marzo de 2019 , consultado el 26 de junio de 2019. 
  19. "The Manchester Mark 1" . La Universidad de Manchester . Archivado del original el 25 de enero de 2015. Recuperado el 25 de septiembre de 2015 .
  20. "La primera generación" . Museo de Historia de la Computación. Archivado del original el 22 de noviembre de 2016. Consultado el 5 de julio de 2026 .
  21. "La historia del circuito integrado" . Nobelprize.org . Archivado del original el 22 de mayo de 2022. Consultado el 5 de julio de 2026 .
  22. Turley, Jim (11 de agosto de 2003). "Motorización con microprocesadores" . Embedded. Archivado del original el 14 de octubre de 2022. Recuperado el 5 de julio de 2026 .
  23. Triggs, Robert (25 de junio de 2013). "Guía de procesadores móviles - Verano de 2013" . Android Authority. Archivado del original el 17 de noviembre de 2015. Recuperado el 5 de julio de 2026 .
  24. Quinn, Krista. "Sección 250: Microprocesadores y juguetes: Una introducción a los sistemas informáticos" . Universidad de Michigan. Archivado del original el 13 de abril de 2021. Recuperado el 9 de octubre de 2018 .
  25. "Procesador ARM946" . ARM. Archivado del original el 17/11/2015.
  26. «Konrad Zuse» . Museo de Historia de la Computación. 2025-08-18 . Consultado el 5 de julio de 2026 .
  27. "Cronología de la historia de la informática: Computadoras" . Museo de Historia de la Informática. Archivado del original el 29/12/2017 . Consultado el 05/07/2026 .
  28. White, Stephen. "Una breve historia de la informática: ordenadores de primera generación" . Trillian . Archivado del original el 2 de enero de 2018. Consultado el 5 de julio de 2026 .
  29. "Unidad perforadora de cinta de papel Mark I de la Universidad de Harvard" . Museo de Historia de la Computación. Archivado del original el 22 de noviembre de 2015. Consultado el 5 de julio de 2026 .
  30. "¿Cuál es la diferencia entre una arquitectura von Neumann y una arquitectura Harvard?" . ARM. 9 de septiembre de 2008. Archivado del original el 2 de octubre de 2015. Consultado el 22 de noviembre de 2015 .
  31. "La arquitectura avanzada optimiza la CPU Atmel AVR" . Atmel. Archivado del original el 14 de noviembre de 2015. Consultado el 22 de noviembre de 2015 .
  32. "Interruptores, transistores y relés" . BBC. Archivado del original el 5 de diciembre de 2016.
  33. Han, Jin-Woo; Meyyappan, Meyya (23 de junio de 2014). "Presentación del transistor de vacío: un dispositivo hecho de la nada" . IEEE Spectrum . Archivado del original el 23 de marzo de 2018. Consultado el 5 de julio de 2026 .
  34. ¿Qué es el rendimiento informático? The National Academies Press. 2011. doi : 10.17226/12980 . ISBN 978-0-309-15951-7Archivado del original el 5 de junio de 2016. Consultado el 5 de julio de 2026 .
  35. "1953: Surgen las computadoras transistorizadas" . Museo de Historia de la Computación . Archivado del original el 1 de junio de 2016. Consultado el 5 de julio de 2026 .
  36. "Fechas y características del IBM System/360" . IBM. 23 de enero de 2003. Archivado del original el 21 de noviembre de 2017. Consultado el 13 de enero de 2016 .
  37. 1 2 Amdahl, GM ; Blaauw, GA ; Brooks, FP Jr. (abril de 1964). "Arquitectura del IBM System/360". IBM Journal of Research and Development . 8 (2). IBM : 87– 101. doi : 10.1147/rd.82.0087 . ISSN 0018-8646 . 
  38. Brodkin, Jon (7 de abril de 2014). "Hace 50 años, IBM creó el ordenador central que ayudó a enviar hombres a la Luna" . Ars Technica . Archivado del original el 8 de abril de 2016. Consultado el 5 de julio de 2026 .
  39. Clarke, Gavin (7 de abril de 2014). "¿Por qué no te mueres? El S/360 de IBM y su legado a los 50 años" . The Register . Recuperado el 5 de julio de 2026 .
  40. "Página principal en línea de PDP-8, Ejecutar un PDP-8" . PDP8 . Archivado del original el 11 de agosto de 2015. Recuperado el 25 de septiembre de 2015 .
  41. "Transistores, relés y control de cargas de alta corriente" . Universidad de Nueva York . ITP Physical Computing. Archivado del original el 21 de abril de 2016. Consultado el 5 de julio de 2026 .
  42. Lilly, Paul (14 de abril de 2009). "Una breve historia de las CPU: 31 años increíbles de x86" . PC Gamer . Consultado el 5 de julio de 2026 .
  43. 1 2 Patterson, David A.; Hennessy, John L.; Larus, James R. (1999). Organización y diseño de computadoras: la interfaz hardware/software (3.ª impresión de la 2.ª ed.). San Francisco, California: Kaufmann. pág . 751. ISBN   978-1558604285.
  44. "1962: Los sistemas aeroespaciales son las primeras aplicaciones de los circuitos integrados en las computadoras" . Museo de Historia de la Computación . Archivado del original el 5 de octubre de 2018. Consultado el 5 de julio de 2026 .
  45. "Los circuitos integrados en el programa de alunizaje tripulado Apolo" . Administración Nacional de Aeronáutica y del Espacio. Archivado del original el 21 de julio de 2019. Consultado el 9 de octubre de 2018 .
  46. "Anuncio del sistema/370" . Archivos de IBM . 23 de enero de 2003. Archivado del original el 20 de agosto de 2018. Consultado el 25 de octubre de 2017 .
  47. "System/370 Modelo 155 (Continuación)" . Archivos de IBM . 23 de enero de 2003. Archivado del original el 20 de julio de 2016. Consultado el 25 de octubre de 2017 .
  48. "Modelos y opciones" . The Digital Equipment Corporation PDP-8. Archivado del original el 26 de junio de 2018. Consultado el 5 de julio de 2026 .
  49. Bassett, Ross Knox (2007). Hacia la era digital: laboratorios de investigación, empresas emergentes y el auge de la tecnología MOS . The Johns Hopkins University Press . págs. 127–128 , 256 y 314. ISBN  978-0-8018-6809-2.
  50. 1 2 Shirriff, Ken. "El Texas Instruments TMX 1795: el primer microprocesador olvidado" . Blog de Ken Shirriff . Archivado del original el 26 de enero de 2021. Consultado el 5 de julio de 2026 .
  51. "S2 Velocidad y potencia en familias lógicas" . Universidad de Brown . Archivado del original el 26 de julio de 2017.
  52. Stonham, TJ (1996). Técnicas de lógica digital: principios y práctica . Taylor & Francis. pág. 174. ISBN  9780412549700.
  53. "1968: Desarrollo de la tecnología de puerta de silicio para circuitos integrados" . Museo de Historia de la Computación . Archivado del original el 29 de julio de 2020. Consultado el 5 de julio de 2026 .
  54. Booher, RK (1968). MOS GP Computer (PDF) . Taller internacional sobre gestión del conocimiento de requisitos. AFIPS . pág. 877. doi : 10.1109/AFIPS.1968.126 . Archivado (PDF) del original el 14 de julio de 2017. 
  55. "Descripciones de los módulos LSI-11". Manual del usuario de LSI-11, PDP-11/03 ( PDF) (2.ª ed.). Maynard, Massachusetts: Digital Equipment Corporation . Noviembre de 1975. págs. 4-3 . Archivado (PDF) del original el 10 de octubre de 2021. Consultado el 20 de febrero de 2015 .  
  56. Cass, Stephen (2 de julio de 2018). "Salón de la Fama de los Chips: Microprocesador Intel 4004" . IEEE Spectrum . Consultado el 5 de julio de 2026 .
  57. Bigelow, Stephen J. (7 de marzo de 2022). "¿Qué es un procesador multinúcleo y cómo funciona?" . TechTarget. Archivado del original el 11 de julio de 2022. Consultado el 5 de julio de 2026 .
  58. Birkby, Richard. "Una breve historia del microprocesador" . computermuseum.li . Archivado del original el 23 de septiembre de 2015. Consultado el 13 de octubre de 2015 .
  59. Osborne, Adam (1980). Introducción a los microordenadores . Vol. 1: Conceptos básicos (2.ª ed.). Berkeley, California: Osborne-McGraw Hill. ISBN   978-0-931988-34-9.
  60. Zhislina, Victoria (19 de febrero de 2014). "¿Por qué ha dejado de crecer la frecuencia de la CPU?" . Intel. Archivado del original el 21 de junio de 2017. Recuperado el 14 de octubre de 2015 .
  61. "Transistor MOS – Ingeniería Eléctrica e Informática" (PDF) . Universidad de California. Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 14 de octubre de 2015 .
  62. Simonite, Tom (13 de mayo de 2016). "La ley de Moore ha muerto. ¿Y ahora qué?" . MIT Technology Review . Archivado del original el 22 de agosto de 2018. Consultado el 5 de julio de 2026 .
  63. Moore, Gordon (2005). «Extractos de Una conversación con Gordon Moore: La ley de Moore» (PDF) (Entrevista). Intel. Archivado del original (PDF) el 29 de octubre de 2012. Recuperado el 25 de julio de 2012 .
  64. Adam (15 de diciembre de 2016). "Una historia detallada del procesador" . Tech Junkie. Archivado del original el 14 de agosto de 2019. Consultado el 14 de agosto de 2019 .
  65. Eigenmann, Rudolf; Lilja, David (1998). "Computadoras Von Neumann". Enciclopedia Wiley de Ingeniería Eléctrica y Electrónica . doi : 10.1002/047134608X.W1704 . ISBN 047134608X. S2CID 8197337 . 
  66. Aspray, William (septiembre de 1990). "El concepto de programa almacenado". IEEE Spectrum . Vol. 27, n.º 9, pág. 51. doi : 10.1109/6.58457 .   
  67. Saraswat, Krishna. "Tendencias en la tecnología de circuitos integrados" (PDF) . Universidad de Stanford. Archivado del original (PDF) el 24 de julio de 2015. Consultado el 15 de junio de 2018 .
  68. "Electromigración" . Laboratorio de Simulación por Computadora . Universidad Técnica de Oriente Medio. 24 de agosto de 2011. Archivado del original el 31 de julio de 2017. Consultado el 15 de junio de 2018 .
  69. Wienand, Ian (2013-09-03). "Informática desde abajo hacia arriba, Capítulo 3. Arquitectura de computadoras" (PDF) . Informática desde abajo hacia arriba . Archivado (PDF) del original el 2016-02-06 . Recuperado el 2026-07-05 .
  70. "Introducción a la unidad de control y su diseño" . GeeksforGeeks . 24 de septiembre de 2018. Archivado del original el 15 de enero de 2021. Consultado el 5 de julio de 2026 .
  71. US20060010255A1 , Berkel, Cornelis Van y Meuwissen, Patrick, "Unidad de generación de direcciones para un procesador", publicada el 12 de enero de 2006. 
  72. "¿Qué es la Unidad de Gestión de Memoria (MMU)?" . GeeksforGeeks . 23-07-2025 . Consultado el 05-07-2026 .
  73. S., Mike (12 de septiembre de 2007). "Cómo funciona la memoria caché" . Hardware Secrets . Consultado el 5 de julio de 2026 .
  74. "Introducción técnica a IBM z13 e IBM z13s" (PDF) . IBM . Marzo de 2016. pág. 20. Archivado (PDF) del original el 9 de octubre de 2022. 
  75. Brown, Jeffery (2005). "Diseño de CPU personalizado para aplicaciones" . IBM developerWorks. Archivado del original el 12 de febrero de 2006. Recuperado el 17 de diciembre de 2005 .
  76. Martin, AJ; Nystrom, M.; Wong, CG (noviembre de 2003). "Tres generaciones de microprocesadores asíncronos". IEEE Design & Test of Computers . 20 (6): 9– 17. Bibcode : 2003IDTC...20....9M . doi : 10.1109/MDT.2003.1246159 . ISSN 1558-1918 . 
  77. Garside, JD; Furber, SB; Chung, SH (1999). "AMULET3 Revealed" . Actas del Quinto Simposio Internacional sobre Investigación Avanzada en Circuitos y Sistemas Asíncronos . Departamento de Informática de la Universidad de Manchester . doi : 10.1109/ASYNC.1999.761522 . Archivado del original el 10 de diciembre de 2005.
  78. Características funcionales del IBM System/360 Modelo 65 (PDF) . IBM . Septiembre de 1968. págs. 8–9 . A22-6884-3. Archivado (PDF) del original el 9 de octubre de 2022. 
  79. Huynh, Jack (2003). "El procesador AMD Athlon XP con caché L2 de 512 KB" (PDF) . Urbana-Champaign, Illinois: Universidad de Illinois. págs. 6-11 . Archivado del original (PDF) el 28 de noviembre de 2007. Consultado el 6 de octubre de 2007 . 
  80. Gottlieb, Allan; Almasi, George S. (1989). Computación altamente paralela . Redwood City, California: Benjamin/Cummings. ISBN 978-0-8053-0177-9Archivado del original el 7 de noviembre de 2018. Consultado el 25 de abril de 2016 .
  81. Flynn, Michael J. (septiembre de 1972). "Algunas organizaciones informáticas y su eficacia". IEEE Transactions on Computers . C-21 (9): 948– 960. Bibcode : 1972ITCmp.100..948F . doi : 10.1109/TC.1972.5009071 . ISSN 1557-9956 . 
  82. Lu, N.-P.; Chung, C.-P. (1998). "Explotación del paralelismo en el multiprocesamiento superescalar" . IEE Proceedings - Computers and Digital Techniques . 145 (4): 255. doi : 10.1049/ip-cdt:19981955 (inactivo el 9 de julio de 2026).{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2026 ( enlace )
  83. Uhsadel, Leif; Georges, Andy; Verbauwhede, Ingrid (agosto de 2008). «Aprovechamiento de los contadores de rendimiento del hardware». 5.º Taller de 2008 sobre diagnóstico y tolerancia a fallos en criptografía . págs. 59-67 . Bibcode : 2008fdtc.conf...15U . doi : 10.1109/FDTC.2008.19 . ISBN  978-0-7695-3314-8.
  84. Rohou, Erven (septiembre de 2012). "Tiptop: Contadores de rendimiento de hardware para todos". 41.ª Conferencia Internacional sobre Talleres de Procesamiento Paralelo de 2012. págs. 404–413 . Bibcode : 2012icpp.conf...69R . doi : 10.1109/ICPPW.2012.58 . ISBN  978-1-4673-2509-7.
  85. Herath, Nishad; Fogh, Anders (2015). "Contadores de rendimiento de hardware de CPU para seguridad" (PDF) . EE. UU.: Black Hat. Archivado (PDF) del original el 5 de septiembre de 2015.
  86. Jøsang, Audun (21 de junio de 2018). ECCWS 2018 17.ª Conferencia Europea sobre Guerra Cibernética y Seguridad V2 . Academic Conferences and publishing limited. ISBN 978-1-911218-86-9.
  87. DeRose, Luiz A. (2001), "The Hardware Performance Monitor Toolkit" , en Sakellariou, Rizos; Gurd, John; Freeman, Len; Keane, John (eds.), Euro-Par 2001 Parallel Processing , Lecture Notes in Computer Science, vol. 2150, Berlín, Heidelberg: Springer Berlin Heidelberg, pp. 122–132 , doi : 10.1007/3-540-44681-8_19 , ISBN   978-3-540-42495-6Archivado del original el 1 de marzo de 2023 , consultado el 30 de diciembre de 2021.
  88. Garcia, Adriano Marques (2019). "HACIA UN REFERENTE PARA LA EVALUACIÓN DEL RENDIMIENTO Y EL CONSUMO DE ENERGÍA DE LAS INTERFACES DE PROGRAMACIÓN PARALELA" (en portugués brasileño). Universidade Federal do Pampa . Recuperado el 5 de julio de 2026 .
  89. Chawdhury, Tarun Kumar; Banerjee, Joyanta; Gupta, Vipul; Poddar, Debopam (04/03/2024). Dominando las aplicaciones Java seguras: Navegando la seguridad en la nube y los microservicios para Java ( edición en inglés). BPB Publications. pág. 117. ISBN   978-93-5551-884-2.
  90. Anjum, Bushra; Perros, Harry G. (2015). "1: Particionamiento del presupuesto de QoS de extremo a extremo en dominios" . Asignación de ancho de banda para vídeo bajo restricciones de calidad de servicio . Serie Focus. John Wiley & Sons. pág. 3. ISBN  9781848217461. Recuperado el 21/09/2016 . [...] en computación en la nube donde múltiples componentes de software se ejecutan en un entorno virtual en el mismo blade, un componente por máquina virtual (VM). A cada VM se le asigna una unidad central de procesamiento virtual [...] que es una fracción de la CPU del blade.
  91. Fifield, Tom; Fleming, Diane; Gentle, Anne; Hochstein, Lorin; Proulx, Jonathan; Toews, Everett; Topjian, Joe (2014). «Glosario» . Guía de operaciones de OpenStack . Pekín: O'Reilly Media, Inc. pág. 286. ISBN  9781491906309. Recuperado el 20/09/2016 . Unidad Central de Procesamiento Virtual (vCPU)[:] Subdivide las CPU físicas. Las instancias pueden entonces usar esas divisiones.
  92. "Descripción general de la arquitectura de infraestructura de VMware: Libro blanco" (PDF) . VMware . 2006. Archivado del original (PDF) el 9 de octubre de 2022.
  93. "Frecuencia de CPU" . Glosario de CPU World . CPU World. 25 de marzo de 2008. Archivado del original el 9 de febrero de 2010. Consultado el 5 de julio de 2026 .
  94. "AMD Ryzen 7 vs Intel i5: ¿Cuál es mejor?" . GEEKOM . 28-03-2021 . Consultado el 05-07-2026 .
  95. "¿Qué es un procesador multinúcleo?" . TechTarget . 27-03-2007. Archivado del original el 05-08-2010 . Consultado el 08-08-2016 .
  96. Phatak, Omkar (8 de abril de 2010). "Quad Core Vs. Dual Core" . Tech Spirited . Archivado del original el 4 de julio de 2019. Consultado el 7 de noviembre de 2019 .
  97. Wieclaw, Marcin (14 de diciembre de 2024). "Factores que afectan el rendimiento de los procesadores multinúcleo" . PCSite . Consultado el 5 de julio de 2026 .
  98. Tegtmeier, Martin. "Explicación de la utilización de la CPU en arquitecturas multihilo" . Oracle . Consultado el 17 de julio de 2022 .{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace )
  99. Thomas, Diljo; Shanmugasundaram, M (marzo de 2018). «Un estudio sobre diferentes métodos de overclocking». Segunda Conferencia Internacional de 2018 sobre Electrónica, Comunicación y Tecnología Aeroespacial (ICECA) . págs. 1588–1592 . doi : 10.1109/ICECA.2018.8474921 . ISBN  978-1-5386-0965-1.
  100. "Para tu información: los chips de computadora actuales son tan avanzados que son más 'volubles' que precisos, y aquí está la prueba" . 4 de junio de 2021. Archivado del original el 13 de febrero de 2024. Consultado el 13 de febrero de 2024 .