De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda
Parte inferior de un Intel 80486DX2 , mostrando sus pines
En marzo de 2021 , AMD Ryzen Threadripper 3990X es el procesador de escritorio de consumo más rápido de AMD.

Una unidad central de procesamiento ( CPU ), también llamada procesador central , procesador principal o simplemente procesador , es el circuito electrónico que ejecuta instrucciones que comprenden un programa de computadora . La CPU realiza operaciones básicas de aritmética , lógica, control y entrada / salida (E / S) especificadas por las instrucciones del programa. Esto contrasta con los componentes externos como la memoria principal y los circuitos de E / S , [1] y los procesadores especializados como las unidades de procesamiento de gráficos (GPU).

La forma, el diseño y la implementación de las CPU han cambiado con el tiempo, pero su operación fundamental permanece casi sin cambios. Los componentes principales de una CPU incluyen la unidad aritmética 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 organiza la recuperación (desde la memoria) y la ejecución. de instrucciones dirigiendo las operaciones coordinadas de la ALU, registros y otros componentes.

La mayoría de las CPU modernas se implementan en microprocesadores de circuito integrado (IC) , con una o más CPU en un solo chip IC de semiconductor de óxido metálico (MOS). Los chips de microprocesadores con varias CPU son procesadores de varios núcleos . Las CPU físicas individuales, los núcleos del procesador , también pueden ser multiproceso para crear CPU virtuales o lógicas adicionales. [2]

Un IC que contiene una CPU también puede contener memoria , interfaces periféricas y otros componentes de una computadora; dichos dispositivos integrados se denominan de diversas formas microcontroladores o sistemas en un chip (SoC).

Los procesadores de matriz o los procesadores vectoriales tienen varios procesadores que operan en paralelo, sin que ninguna unidad se considere central. Las CPU virtuales son una abstracción de recursos computacionales agregados dinámicos. [3]

Historia [ editar ]

EDVAC , una de las primeras computadoras con programa almacenado

Las primeras computadoras como la ENIAC tuvieron que volver a cablearse físicamente para realizar diferentes tareas, lo que provocó que estas máquinas se llamaran "computadoras de programa fijo". [4] El término "unidad central de procesamiento" se ha utilizado desde 1955. [5] [6] Dado que el término "CPU" se define generalmente como un dispositivo para la ejecución de software (programa de computadora), los primeros dispositivos que podría llamarse con razón CPU vino con el advenimiento de la computadora de programa almacenado .

La idea de una computadora con programa almacenado había sido ya presente en el diseño de J. Presper Eckert y John William Mauchly 's ENIAC , pero fue omitida inicialmente para que pudiera ser terminado antes. [7] El 30 de junio de 1945, antes de que se hiciera ENIAC, el matemático John von Neumann distribuyó el documento titulado Primer borrador de un informe sobre el EDVAC . Era el esquema de una computadora con programa almacenado que eventualmente se completaría en agosto de 1949. [8] EDVAC fue diseñado para realizar un cierto número de instrucciones (u operaciones) de varios tipos. Significativamente, los programas escritos para EDVAC debían almacenarse en la memoria de la computadora de alta velocidad.en lugar de lo especificado por el cableado físico de la computadora. [9] Esto superó una grave limitación de ENIAC, que fue el considerable tiempo y esfuerzo necesarios para reconfigurar la computadora para realizar una nueva tarea. [10] Con el diseño de von Neumann, el programa que ejecutaba EDVAC podía cambiarse simplemente cambiando el contenido de la memoria. Sin embargo, EDVAC no fue la primera computadora con programa almacenado; el Manchester Baby , una computadora experimental de programa almacenado a pequeña escala, ejecutó su primer programa el 21 de junio de 1948 [11] y el Manchester Mark 1 ejecutó su primer programa durante la noche del 16 al 17 de junio de 1949 [12].

Las primeras CPU eran diseños personalizados que se usaban como parte de una computadora más grande y, a veces, distintiva. [13] Sin embargo, este método de diseñar CPU personalizadas para una aplicación en 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 miniordenadores de transistores discretos y se ha acelerado rápidamente con la popularización del circuito integrado  (IC). El IC ha permitido diseñar y fabricar CPU cada vez más complejas con tolerancias del orden de los nanómetros . [14]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 máquinas informáticas dedicadas. Los microprocesadores modernos aparecen en dispositivos electrónicos que van desde automóviles [15] hasta teléfonos móviles [16] y, a veces, incluso en juguetes. [17] [18]

Si bien a von Neumann se le atribuye con mayor frecuencia el diseño de la computadora de programa almacenado debido a su diseño de EDVAC, y el diseño se conoció como la arquitectura de von Neumann , otros antes que él, como Konrad Zuse , habían sugerido e implementado ideas similares. [19] La llamada arquitectura de Harvard del Harvard Mark I , que se completó antes de EDVAC, [20] [21] también utilizó un diseño de programa almacenado utilizando cinta de papel perforada en lugar de memoria electrónica. [22]La diferencia clave entre las arquitecturas de von Neumann y Harvard es que la última separa el almacenamiento y el tratamiento de las instrucciones y los datos de la CPU, mientras que la primera usa el mismo espacio de memoria para ambos. [23] La mayoría de las CPU modernas son principalmente de diseño von Neumann, pero las CPU con la arquitectura de Harvard también se ven, especialmente en aplicaciones integradas; por ejemplo, los microcontroladores Atmel AVR son procesadores de arquitectura de Harvard. [24]

Los relés y los tubos de vacío ( tubos termoiónicos) se usaban comúnmente como elementos de conmutación; [25] [26] 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 tubo de vacío como EDVAC tendían a promediar ocho horas entre fallas, mientras que las computadoras de retransmisión como la (más lenta, pero anterior) Harvard Mark I fallaban muy raramente. [6] Al final, las CPU basadas en tubos se convirtieron en dominantes porque las importantes ventajas de velocidad que ofrecían en general superaban los problemas de fiabilidad. La mayoría de estas primeras CPU síncronas se ejecutaban a velocidades de reloj bajasen comparación con los diseños microelectrónicos modernos. Las frecuencias de las señales de reloj que van desde 100 kHz a 4 MHz eran muy comunes en este momento, limitadas en gran medida por la velocidad de los dispositivos de conmutación con los que fueron construidos. [27]

CPU de transistores [ editar ]

Procesador IBM PowerPC 604e

La complejidad del diseño de las CPU aumentó a medida que varias tecnologías facilitaron la construcción de dispositivos electrónicos más pequeños y confiables. La primera mejora de este tipo se produjo con la llegada del transistor . Las CPU transistorizadas durante las décadas de 1950 y 1960 ya no tenían que construirse con elementos de conmutación voluminosos, poco confiables y frágiles como tubos de vacío y relés . [28] Con esta mejora, se construyeron CPU más complejas y confiables en una o varias placas de circuito impreso que contienen 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 diferente velocidad y rendimiento. [29] Esto fue significativo en un momento en que la mayoría de las computadoras electrónicas eran incompatibles entre sí, incluso las del 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. [30] La arquitectura System / 360 fue tan popular que dominó el mercado de computadoras mainframe durante décadas y dejó un legado que aún continúa en computadoras modernas similares como IBM zSeries. [31] [32] En 1965, Digital Equipment Corporation (DEC) introdujo otra computadora influyente dirigida a los mercados científicos y de investigación, la PDP-8 . [33]

Placa Fujitsu con procesadores SPARC64 VIIIfx

Las computadoras basadas en transistores tenían varias ventajas distintas 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 funcionaran a velocidades mucho más altas debido al corto tiempo de conmutación de un transistor en comparación con un tubo o relé. [34] El aumento de la confiabilidad y el drástico aumento de la velocidad de los elementos de conmutación (que en ese momento eran casi exclusivamente transistores); Las velocidades de reloj de la CPU en decenas de megahercios se obtuvieron fácilmente durante este período. [35] Además, mientras que los transistores discretos y las CPU IC se usaban mucho, comenzaron a aparecer nuevos diseños de alto rendimiento como los procesadores vectoriales SIMD (Single Instruction Multiple Data) . [36]Estos diseños principios experimentales dieron lugar más adelante a la era de los especializados superordenadores , como los hechos por Cray Inc. y Fujitsu Ltd . [36]

CPU de integración a pequeña escala [ editar ]

CPU, memoria central e interfaz de bus externo de un DEC PDP-8 / I, hecho de circuitos integrados de escala media

Durante este período, se desarrolló un método para fabricar muchos transistores interconectados en un espacio compacto. El circuito integrado (IC) permitió un gran número de transistores para ser fabricado en un solo semiconductor basado en matriz , o "chip". Al principio, solo los circuitos digitales no especializados muy básicos, como las puertas NOR, se miniaturizaron en circuitos integrados. [37] Las CPU basadas en estos circuitos integrados de "bloques de construcción" se denominan generalmente dispositivos de "integración a pequeña escala" (SSI). Circuitos integrados SSI, como los que se utilizan en la computadora de guía Apollo, por lo general contiene hasta unas pocas docenas de transistores. Para construir una CPU completa a partir de circuitos integrados SSI se requerían miles de chips individuales, pero aún consumía mucho menos espacio y energía que los diseños de transistores discretos anteriores. [38]

El System / 370 de IBM , que siguió al System / 360, utilizó circuitos integrados SSI en lugar de módulos de transistores discretos de Solid Logic Technology . [39] [40] PDP-8 / I y KI10 PDP-10 de DEC también cambiaron de los transistores individuales utilizados por PDP-8 y PDP-10 a circuitos integrados SSI, [41] y su extremadamente popular línea PDP-11 fue originalmente construido con SSI IC, pero finalmente se implementó con componentes LSI una vez que se volvieron prácticos.

CPU de integración a gran escala [ editar ]

El MOSFET (transistor de efecto de campo semiconductor de óxido metálico), también conocido como transistor MOS, fue inventado por Mohamed Atalla y Dawon Kahng en Bell Labs en 1959, y demostrado en 1960. [42] Esto llevó al desarrollo del Circuito integrado MOS (metal-óxido-semiconductor), propuesto por Atalla en 1960 [43] y Kahng en 1961, y luego fabricado por Fred Heiman y Steven Hofstein en RCA en 1962. [42] Con su alta escalabilidad , [44] y mucho menor consumo de energía y mayor densidad que los transistores de unión bipolar ,[45] el MOSFET hizo posible la construcción de circuitos integrados de alta densidad . [46] [47]

Lee Boysel publicó artículos influyentes, incluido un "manifiesto" de 1967, que describía cómo construir el equivalente a una computadora central de 32 bits a partir de un número relativamente pequeño de circuitos de integración a gran escala (LSI). [48] [49] La única forma de construir chips LSI, que son chips con cien o más puertas, era construirlos usando un proceso de fabricación de semiconductores MOS (ya sea lógica PMOS , lógica NMOS o lógica CMOS ). Sin embargo, algunas empresas continuaron construyendo procesadores con 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 compañías comoDatapoint continuó construyendo procesadores con chips TTL hasta principios de la década de 1980). [49] En la década de 1960, los IC MOS eran más lentos e inicialmente se consideraban útiles solo en aplicaciones que requerían poca potencia. [50] [51] Tras el desarrollo de la tecnología MOS de puerta de silicio por Federico Faggin en Fairchild Semiconductor en 1968, los IC MOS reemplazaron en gran medida al TTL bipolar como tecnología de chip estándar a principios de la década de 1970. [52]

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

Microprocesadores [ editar ]

Die de un Intel 80486Dx2 microprocesador (tamaño real: 12 × 6,75 mm) en su embalaje
CPU Intel Core i5 en una placa base para computadora portátil de la serie Vaio E (a la derecha, debajo del tubo de calor )
Dentro de la computadora portátil, con la CPU extraída del zócalo

Los avances en la tecnología MOS IC llevaron a la invención del microprocesador a principios de la década de 1970. [55] Desde la introducción del primer microprocesador disponible comercialmente, el Intel 4004 en 1971, y el primer microprocesador ampliamente utilizado, el Intel 8080 en 1974, esta clase de CPU ha superado casi por completo a todos los demás métodos de implementación de la unidad central de procesamiento. Los fabricantes de mainframes y miniordenadores de la época lanzaron programas de desarrollo de circuitos integrados patentados para actualizar sus arquitecturas de computadoras más antiguas y, finalmente, produjeron un conjunto de instruccionesmicroprocesadores compatibles que eran compatibles con versiones anteriores de su hardware y software más antiguos. Combinado con el advenimiento y el eventual éxito de la omnipresente computadora personal , el término CPU ahora se aplica casi exclusivamente [a] a los microprocesadores. Se pueden combinar varias CPU ( núcleos indicados ) en un solo chip de procesamiento. [56]

Las generaciones anteriores de CPU se implementaron como componentes discretos y numerosos circuitos integrados pequeños (IC) en una o más placas de circuito. [57] Los microprocesadores, por otro lado, son CPU fabricadas en un número muy pequeño de circuitos integrados; generalmente solo uno. [58] El tamaño general de CPU más pequeño, como resultado de ser implementado en un solo dado, significa un tiempo de conmutación más rápido debido a factores físicos como la disminución de la capacitancia parásita de la puerta . [59] [60]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 IC ha aumentado la complejidad y el número de transistores en una sola CPU muchas veces. Esta tendencia ampliamente observada se describe en la ley de Moore , que ha demostrado ser un predictor bastante preciso del crecimiento de la complejidad de la CPU (y otros CI) hasta 2016. [61] [62]

Si bien la complejidad, el tamaño, la construcción y la forma general de las CPU han cambiado enormemente desde 1950, [63] el diseño básico y la función no han cambiado mucho en absoluto. Casi todas las CPU habituales de la actualidad pueden describirse con mucha precisión como máquinas de programa almacenado de von Neumann. [64] [b] Como la ley de Moore ya no es válida, han surgido preocupaciones sobre los límites de la tecnología de transistores de circuito integrado. La miniaturización extrema de las puertas electrónicas está provocando que los efectos de fenómenos como la electromigración y las fugas por debajo del umbral se vuelvan mucho más significativos. [66] [67]Estas nuevas preocupaciones se encuentran entre los muchos factores que hacen que los investigadores investiguen nuevos métodos de computación como la computadora cuántica , así como para expandir el uso del paralelismo y otros métodos que amplían la utilidad del modelo clásico de von Neumann.

Operación [ editar ]

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

Después de 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 secuencia debido al valor incrementado en el contador del programa . Si se ejecutó una instrucción de salto, el contador del programa se modificará para contener la dirección de la instrucción a la que se saltó y la ejecución del programa continuará normalmente. En CPU más complejas, se pueden buscar, decodificar y ejecutar múltiples instrucciones simultáneamente. Esta sección describe lo que generalmente se conoce como la " tubería RISC clásica ", que es bastante común entre las CPU simples utilizadas en muchos dispositivos electrónicos (a menudo llamados microcontroladores). En gran medida, ignora el papel importante de la caché de la CPU y, por lo tanto, la etapa de acceso de la canalización.

Algunas instrucciones manipulan el contador del programa en lugar de producir datos de resultados directamente; estas instrucciones generalmente se denominan "saltos" y facilitan el comportamiento del programa como bucles , la 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". Estos indicadores se pueden utilizar para influir en el comportamiento de un programa, ya que a menudo indican el resultado de varias operaciones. Por ejemplo, en tales procesadores una instrucción "comparar" 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 por una instrucción de salto posterior para determinar el flujo del programa.

Obtener [ editar ]

El primer paso, buscar, implica recuperar una instrucción (que está 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 del programa (PC; llamado "puntero de instrucción" en los microprocesadores Intel x86 ), que almacena un número que identifica la dirección de la siguiente instrucción a buscar. Después de obtener una instrucción, la 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 hace que la CPU se detenga mientras espera que se devuelva la instrucción. Este problema se aborda en gran medida en los procesadores modernos mediante cachés y arquitecturas de canalización (ver más abajo).

Decodificar [ editar ]

La instrucción que la CPU obtiene de la memoria determina lo que hará la CPU. En el paso de decodificación, realizado por el circuito 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 de la CPU (ISA). [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 va a realizar, mientras que los campos restantes generalmente proporcionan información complementaria requerida para la operación, como el operandos. Esos operandos pueden especificarse como un valor constante (llamado valor inmediato) o como la ubicación de un valor que puede ser un registro de procesador o una dirección de memoria, según lo determinado por algún modo de direccionamiento .

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

Ejecutar [ editar ]

Después de los pasos de búsqueda y decodificación, se realiza el paso de ejecución. Dependiendo de la arquitectura de la CPU, esto puede consistir en una sola acción o una secuencia de acciones. Durante cada acción, varias partes de la CPU están conectadas eléctricamente para que puedan realizar toda o parte de la operación deseada y luego la acción se completa, generalmente en respuesta a un pulso de reloj. Muy a menudo, los resultados se escriben en un registro de CPU interno para un acceso rápido mediante instrucciones posteriores. En otros casos, los resultados pueden escribirse en una memoria principal más lenta, pero menos costosa y de mayor capacidad .

Por ejemplo, si se va a ejecutar una instrucción de suma, las entradas de la unidad aritmética lógica (ALU) se conectan a un par de fuentes de operandos (números a sumar), la ALU está configurada para realizar una operación de suma de modo que la suma de sus las entradas del operando aparecerán en su salida y la salida de la ALU se conectará al almacenamiento (por ejemplo, un registro o memoria) que recibirá la suma. Cuando se produce el pulso de reloj, la suma se transferirá al almacenamiento y, si la suma resultante es demasiado grande (es decir, es mayor que el tamaño de la palabra de salida de la ALU), se establecerá un indicador de desbordamiento aritmético.

Estructura e implementación [ editar ]

Diagrama de bloques de una computadora básica uniprocesador-CPU. Las líneas negras indican el flujo de datos, mientras que las líneas rojas indican el flujo de control; las flechas indican direcciones de flujo.

Cableado en los circuitos de una CPU hay un conjunto de operaciones básicas que puede realizar, llamado conjunto de instrucciones . Tales operaciones pueden implicar, por ejemplo, sumar o restar dos números, comparar dos números o saltar a una parte diferente de un programa. Cada operación básica está representada por una combinación particular de bits , conocida como código de operación en lenguaje máquina.; mientras ejecuta instrucciones en un programa en lenguaje de máquina, la CPU decide qué operación realizar "decodificando" el código de operación. Una instrucción completa en lenguaje de máquina consta de un código de operación y, en muchos casos, bits adicionales que especifican argumentos para la operación (por ejemplo, los números que se sumarán en el caso de una operación de suma). Subiendo la escala 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 real para cada instrucción se realiza mediante un circuito lógico combinatorio dentro del procesador de la CPU conocido como unidad lógica aritmética o ALU. En general, una CPU ejecuta una instrucción extrayéndola de la memoria, usando su ALU para realizar una operación y luego almacenando el resultado en la memoria. Además de las instrucciones para operaciones lógicas y matemáticas enteras, existen otras instrucciones de máquina, como las que sirven para cargar datos de la memoria y almacenarlos de nuevo, operaciones de ramificación y operaciones matemáticas en números de punto flotante realizadas por la unidad de punto flotante de la CPU (FPU ). [68]

Unidad de control [ editar ]

La unidad de control (CU) es un componente de la CPU que dirige el funcionamiento del procesador. Le dice a la unidad de memoria, aritmética y lógica de la computadora y a los dispositivos de entrada y salida cómo responder a las instrucciones que se han enviado al procesador.

Dirige el funcionamiento de las otras unidades proporcionando señales de control y temporización. La mayoría de los recursos informáticos son administrados por la CU. Dirige el flujo de datos entre la CPU y los otros dispositivos. John von Neumann incluyó la unidad de control como parte de la arquitectura de 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. [69]

Unidad aritmética lógica [ editar ]

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

La unidad lógica aritmética (ALU) es un circuito digital dentro del procesador que realiza operaciones aritméticas enteras y lógicas bit a bit . Las entradas a la ALU son las palabras de datos sobre las que se operará (llamadas 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 esté ejecutando, los operandos pueden provenir de los registros internos de la CPU o de la memoria externa, o pueden ser constantes generadas por la propia ALU.

Cuando todas las señales de entrada se han asentado y propagado a través de los circuitos de la ALU, el resultado de la operación realizada aparece en las salidas de la ALU. El resultado consta tanto de una palabra de datos, que puede almacenarse en un registro o memoria, como de información de estado que normalmente se almacena en un registro de CPU interno especial reservado para este propósito.

Unidad de generación de direcciones [ editar ]

La unidad de generación de direcciones ( AGU ), a veces también llamada unidad de cálculo de direcciones ( ACU ), [70] es una unidad de ejecución dentro de la CPU que calcula las direcciones utilizadas por la CPU para acceder a la memoria principal . Al tener los cálculos de direcciones manejados por circuitos separados que operan en paralelo con el resto de la CPU, el número de ciclos de CPU requeridos para ejecutar varias instrucciones de la máquina se puede reducir, lo que trae mejoras de rendimiento.

Al realizar varias operaciones, las CPU necesitan calcular las direcciones de memoria necesarias para obtener datos de la memoria; por ejemplo, las posiciones en memoria de los elementos de la matriz deben calcularse antes de que la CPU pueda recuperar los datos de las ubicaciones reales de la memoria. Esos cálculos de generación de direcciones involucran diferentes operaciones aritméticas de enteros , como suma, resta, operaciones de módulo o cambios 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 decodifica y ejecutarápidamente. Al incorporar una AGU en un diseño de CPU, junto con la introducción de instrucciones especializadas que usan la AGU, se pueden descargar varios cálculos de generación de direcciones del resto de la CPU y, a menudo, se pueden ejecutar rápidamente en un solo ciclo de CPU.

Las capacidades de una AGU dependen de una CPU en particular y su arquitectura . Por lo tanto, algunas AGU implementan y exponen más operaciones de cálculo de direcciones, mientras que algunas también incluyen instrucciones especializadas más avanzadas que pueden operar en múltiples operandos a la vez. Además, algunas arquitecturas de CPU incluyen múltiples AGU, por lo que se puede ejecutar más de una operación de cálculo de direcciones simultáneamente, lo que brinda más mejoras de rendimiento al capitalizar la naturaleza superescalar de los diseños avanzados de CPU. Por ejemplo, Intel incorpora múltiples AGU en sus microarquitecturas Sandy Bridge y Haswell. , que aumentan el ancho de banda del subsistema de memoria de la CPU al permitir que se ejecuten en paralelo varias instrucciones de acceso a la memoria.

Unidad de gestión de memoria (MMU) [ editar ]

La mayoría de los microprocesadores de gama alta (en computadoras de escritorio, portátiles, servidores) tienen una unidad de administración de memoria, que traduce direcciones lógicas en direcciones RAM físicas, brinda protección de memoria y capacidades de paginación , útiles para la memoria virtual . Los procesadores más simples, especialmente los microcontroladores , generalmente no incluyen una MMU.

Caché [ editar ]

Un caché de CPU [71] es un caché de hardware utilizado 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 . Una caché es una memoria más pequeña y rápida, más cercana a un núcleo de procesador , que almacena copias de los datos de las ubicaciones de la memoria principal de uso frecuente . La mayoría de las CPU tienen diferentes cachés independientes, incluidos cachés de instrucciones y datos , donde el caché de datos generalmente se organiza como una jerarquía de más niveles de caché (L1, L2, L3, L4, etc.).

Todas las CPU modernas (rápidas) (con pocas excepciones especializadas [72] ) tienen varios niveles de cachés de CPU. Las primeras CPU que usaron caché tenían solo un nivel de caché; a diferencia de las memorias caché de nivel 1 posteriores, no se dividió en L1d (para datos) y L1i (para instrucciones). Casi todas las CPU actuales con cachés tienen un caché L1 dividido. También tienen cachés L2 y, para procesadores más grandes, también cachés L3. La caché L2 generalmente no se divide y actúa como un repositorio común para la caché L1 ya dividida. Cada núcleo de un procesador de múltiples núcleos tiene una caché L2 dedicada y, por lo general, 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 se dividen. Actualmente, una caché L4 es poco común y generalmente se encuentra en una memoria dinámica de acceso aleatorio.(DRAM), en lugar de en la memoria estática de acceso aleatorio (SRAM), en un chip o chip separado. Ese también fue el caso históricamente con L1, mientras que los chips más grandes han permitido la integración de él y, en general, todos los niveles de caché, con la posible excepción del último nivel. Cada nivel adicional de caché tiende a ser más grande y se optimiza de manera diferente.

Existen otros tipos de cachés (que no se cuentan para el "tamaño de caché" de los cachés más importantes mencionados anteriormente), como el búfer de búsqueda de traducción (TLB) que es parte de la unidad de administración de memoria (MMU) que tienen la mayoría de las CPU.

Los cachés generalmente se clasifican en potencias de dos: 4, 8, 16, etc. KiB o MiB (para tamaños más grandes que no sean L1), aunque el IBM z13 tiene un caché de instrucciones L1 de 96 KiB. [73]

Frecuencia de reloj [ editar ]

La mayoría de las CPU son circuitos síncronos , lo que significa que emplean una señal de reloj para marcar el ritmo de sus operaciones secuenciales. La señal de reloj es producida por un circuito oscilador externo que genera 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 una CPU ejecuta las instrucciones y, en consecuencia, cuanto más rápido sea el reloj, más instrucciones ejecutará la CPU por segundo.

Para garantizar el funcionamiento adecuado de la CPU, el período de reloj es más largo que el tiempo máximo necesario para que todas las señales se propaguen (se muevan) a través de la CPU. Al establecer el período de reloj en un valor muy por encima del retardo de propagación del 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 una perspectiva de diseño como desde una perspectiva de recuento de componentes. Sin embargo, también tiene la desventaja de que toda la CPU debe esperar en sus elementos más lentos, aunque algunas partes son mucho más rápidas. Esta limitación se ha compensado en gran medida mediante varios métodos para aumentar el paralelismo de la CPU (ver más abajo).

Sin embargo, las mejoras arquitectónicas por sí solas no resuelven todos los inconvenientes de las CPU sincrónicas a nivel mundial. Por ejemplo, una señal de reloj está sujeta a los retrasos de cualquier otra señal eléctrica. Las velocidades de reloj más altas en CPU cada vez más complejas hacen que sea más difícil mantener la señal de reloj en fase (sincronizada) en toda la unidad. Esto ha llevado a muchas CPU modernas a requerir que se proporcionen múltiples señales de reloj idénticas para evitar retrasar una sola señal lo suficiente como para causar 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 independientemente de si se están utilizando en ese momento. En general, un componente que se conmuta utiliza más energía que un elemento en estado estático. Por lo tanto, a medida que aumenta la frecuencia del reloj, también lo hace el consumo de energía, lo que hace que la CPU requiera más disipación de calor en forma de soluciones de refrigeración de la CPU .

Un método para lidiar con la conmutación de componentes innecesarios se llama compuerta de reloj , que implica apagar la señal de reloj a componentes innecesarios (deshabilitarlos efectivamente). Sin embargo, esto a menudo se considera difícil de implementar y, por lo tanto, no se usa comúnmente fuera de los diseños de muy baja potencia. Un diseño de CPU reciente y notable que utiliza una gran frecuencia de reloj es el Xenon basado en IBM PowerPC que se utiliza en la Xbox 360 ; de esa manera, los requisitos de energía de la Xbox 360 se reducen considerablemente. [74]Otro método para abordar algunos de los problemas con una señal de reloj global es la eliminación total de la señal de reloj. Si bien la eliminación de la señal de reloj global hace que el proceso de diseño sea considerablemente más complejo de muchas maneras, los diseños asíncronos (o sin reloj) tienen ventajas marcadas en el consumo de energía y la disipación de calor en comparación con diseños sincrónicos similares. Si bien es algo poco común, se han construido CPU asíncronas enteras sin usar una señal de reloj global. Dos ejemplos notables de esto son la ARM compatible amuleto y las MIPS MiniMIPS compatibles R3000.

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 canalización superescalar para lograr algunas ganancias de rendimiento aritmético. Si bien no está del todo claro si los diseños totalmente asíncronos pueden funcionar a un nivel comparable o mejor que sus contrapartes síncronas, es evidente que al menos sobresalen 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 . [75]

Módulo regulador de voltaje [ editar ]

Muchas CPU modernas tienen un módulo de administración de energía integrado que regula el suministro de voltaje bajo demanda a los circuitos de la CPU, lo que le permite mantener el equilibrio entre el rendimiento y el consumo de energía.

Intervalo de enteros [ editar ]

Cada CPU representa valores numéricos de una manera específica. Por ejemplo, algunos ordenadores digitales primeros representados números como familiarizado decimal (base 10) del sistema numeral valores, y otros han empleado representaciones más inusuales, tales como ternario (base tres). Casi todas las CPU modernas representan números en forma binaria , y cada dígito está representado por una cantidad física de dos valores, como un voltaje "alto" o "bajo" . [F]

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 una potencia 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 puede representar una CPU. En el caso de una CPU binaria, esto se mide por el número de bits (dígitos significativos de un entero codificado en binario) que la CPU puede procesar en una operación, que comúnmente se llama tamaño de palabra , ancho de bit , ancho de ruta de datos , precisión de entero. o tamaño entero . El tamaño entero de una CPU determina el rango de valores enteros en los que puede operar directamente. [g] Por ejemplo, una CPU de 8 bits puede manipular directamente números enteros representados por ocho bits, que tienen un rango de 256 ( 28 ) valores enteros discretos.

El rango de números enteros también puede afectar el número de ubicaciones de memoria que la CPU puede abordar 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 32 ubicaciones de memoria. Para eludir esta limitación y por varias otras razones, algunas CPU utilizan mecanismos (como el cambio de banco ) que permiten abordar la memoria adicional.

Las CPU con tamaños de palabra más grandes requieren más circuitos y, en consecuencia, 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, los microcontroladores más pequeños de 4 u 8 bits se utilizan comúnmente en aplicaciones modernas, aunque se encuentran disponibles CPU con tamaños de palabra mucho más grandes (como 16, 32, 64, incluso 128 bits). Sin embargo, cuando se requiere un mayor rendimiento, los beneficios de un tamaño de palabra más grande (rangos de datos y espacios de direcciones más grandes) pueden superar las desventajas. Una CPU puede tener rutas de datos internas más cortas que el tamaño de la palabra para reducir el tamaño y el costo. Por ejemplo, aunque el conjunto de instrucciones IBM System / 360 era un conjunto de instrucciones de 32 bits, System / 360 Model 30 y Model 40tenía rutas de datos de 8 bits en la unidad lógica aritmética, por lo 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 un conjunto de instrucciones de 32 bits, el Motorola 68000 y Motorola 68010 tenían rutas de datos de 16 bits en la unidad aritmética lógica, de modo que un 32-bit complemento requiere 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 que las CPU que implementan ese conjunto de instrucciones tengan diferentes anchos de bits para diferentes partes del dispositivo. Por ejemplo, el conjunto de instrucciones IBM System / 360 era principalmente de 32 bits, pero admitía valores de coma flotante de 64 bits para facilitar una mayor precisión y rango en números de coma flotante. [30] El System / 360 Modelo 65 tenía un sumador de 8 bits para aritmética decimal y binaria de coma fija y un sumador de 60 bits para aritmética de coma flotante. [76] Muchos diseños de CPU posteriores utilizan un ancho de bits mixto similar, especialmente cuando el procesador está diseñado para un uso de propósito general donde se requiere un equilibrio razonable de capacidad de punto flotante y entero.

Paralelismo [ editar ]

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 tomar una CPU. Este tipo de CPU, generalmente denominado subescalar , opera y ejecuta una instrucción en una o dos piezas de datos a la vez, es decir, menos de una instrucción por ciclo de reloj ( IPC <1 ).

Este proceso da lugar a una ineficacia 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 "cuelga" de las instrucciones que necesitan más de un ciclo de reloj para completar la ejecución. Incluso agregar una segunda unidad de ejecución (ver más abajo) no mejora mucho el rendimiento; en lugar de colgar una vía, ahora se cuelgan dos vías y aumenta el número de transistores no utilizados. Este diseño, en el que los recursos de ejecución de la CPU pueden operar en solo 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 de lograr un rendimiento escalar y mejor han dado como resultado una variedad de metodologías de diseño que hacen que la CPU se comporte de manera menos lineal y más en paralelo. Cuando se hace referencia al paralelismo en las CPU, generalmente se utilizan dos términos para clasificar estas técnicas de diseño:

  • paralelismo a nivel de instrucción (ILP), que busca aumentar la velocidad a la que se ejecutan las instrucciones dentro de una CPU (es decir, aumentar el uso de recursos de ejecución en el dado);
  • paralelismo a nivel de tarea (TLP), cuyo propósito es aumentar la cantidad de subprocesos o procesos que una CPU puede ejecutar simultáneamente.

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. [h]

Paralelismo a nivel de instrucción [ editar ]

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

Uno de los métodos más simples utilizados para lograr un mayor paralelismo es comenzar los primeros pasos de búsqueda y decodificación de instrucciones antes de que la instrucción anterior termine de ejecutarse. Esta es la forma más simple de una técnica conocida como canalización de instrucciones y se utiliza en casi todas las CPU modernas de propósito general. La canalización permite que se ejecute más de una instrucción en un momento dado al dividir la ruta de ejecución en etapas discretas. Esta separación se puede comparar con una línea de montaje, en la que una instrucción se hace más completa en cada etapa hasta que sale de la tubería de ejecución y se retira.

Sin embargo, la canalización introduce la posibilidad de una situación en la que se necesita el resultado de la operación anterior para completar la siguiente operación; una condición que a menudo se denomina conflicto de dependencia de datos. Para hacer frente a esto, se debe tener cuidado adicional para verificar este tipo de condiciones y retrasar una parte del proceso de instrucción si esto ocurre. Naturalmente, lograr esto requiere circuitos adicionales, por lo que los procesadores canalizados son más complejos que los subescalares (aunque no de manera muy significativa). Un procesador de canalización puede volverse casi escalar, inhibido solo por bloqueos de canalización (una instrucción que gasta más de un ciclo de reloj en una etapa).

Una tubería superescalar simple. Al buscar y enviar dos instrucciones a la vez, se puede completar un máximo de dos instrucciones por ciclo de reloj.

La mejora adicional de la idea de canalización de instrucciones condujo al desarrollo de un método que reduce aún más el tiempo de inactividad de los componentes de la CPU. Los diseños que se dice que son superescalar incluyen una tubería de instrucción de largo y múltiples idénticas unidades de ejecución , tales como unidades de carga del almacén , unidades aritmético-lógicas , unidades de punto flotante y unidades de generación de direcciones . [77]En una tubería superescalar, se leen varias instrucciones y se pasan a un despachador, que decide si las instrucciones se pueden ejecutar en paralelo (simultáneamente). Si es así, se envían a las unidades de ejecución disponibles, lo que da como resultado la capacidad de ejecutar varias instrucciones simultáneamente. En general, cuantas más instrucciones pueda enviar una CPU superescalar simultáneamente a las unidades de ejecución en espera, más instrucciones se completarán en un ciclo dado.

La mayor parte de la dificultad en el diseño de una arquitectura de CPU superescalar radica en crear un despachador eficaz. El despachador debe poder determinar rápida y correctamente si las instrucciones se pueden ejecutar en paralelo, así como enviarlas de tal manera que mantenga ocupadas tantas unidades de ejecución como sea posible. Esto requiere que la canalización de instrucciones se complete con la mayor frecuencia posible y da lugar a la necesidad en arquitecturas superescalares de cantidades significativas de caché de CPU . También hace peligro de técnicas como -evitando predicción de bifurcación , ejecución especulativa , renombrado de registros , ejecución fuera de orden y la memoria transaccionalcrucial para mantener altos niveles de rendimiento. Al intentar predecir qué rama (o ruta) tomará una instrucción condicional, la CPU puede minimizar el número de veces que toda la tubería debe esperar hasta que se complete una instrucción condicional. La ejecución especulativa a menudo proporciona aumentos de rendimiento modestos al ejecutar partes de código que pueden no ser necesarias después de que se completa una operación condicional. La ejecución fuera de orden reordena de alguna manera el orden en el que se ejecutan las instrucciones para reducir los retrasos debidos a las dependencias de los datos. También en el caso de un solo flujo de instrucciones, múltiples flujos de datos—Un caso en el que se deben procesar muchos datos del mismo tipo—, los procesadores modernos pueden deshabilitar partes de la canalización de modo que cuando una sola instrucción se ejecuta muchas veces, la CPU omite las fases de recuperación y decodificación y, por lo tanto, aumenta considerablemente el rendimiento. en determinadas ocasiones, especialmente en motores de programas muy monótonos, como el software de creación de vídeos y el procesamiento de fotografías.

En el caso de que una parte de la CPU sea superescalar y una parte no, la parte que no lo sea sufre una penalización de rendimiento debido a las paradas de programación. El 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 podía aceptar una instrucción por ciclo de reloj. Por lo tanto, el P5 era superescalar entero pero no superescalar de coma flotante. El sucesor de Intel a la arquitectura P5, P6 , agregó capacidades superescalares a sus características de punto flotante y, por lo tanto, proporcionó un aumento significativo en el rendimiento de las instrucciones de punto flotante.

Tanto la canalización simple como el diseño superescalar aumentan el ILP de una CPU al permitir que un solo procesador complete la ejecución de instrucciones a velocidades que superan una instrucción por ciclo de reloj. [i] La mayoría de los diseños de CPU modernos son al menos algo superescalares, y casi todas las CPU de propósito general diseñadas en la última década son superescalares. En años posteriores, parte del énfasis en el diseño de computadoras con alto ILP se ha trasladado del hardware de la CPU a su interfaz de software, o arquitectura de conjunto de instrucciones (ISA). La estrategia de la palabra de instrucción muy larga (VLIW) hace que el software implique directamente algunos ILP, lo que reduce la cantidad de trabajo que debe realizar la CPU para aumentar el ILP y, por lo tanto, reduce la complejidad del diseño.

Paralelismo a nivel de tareas [ editar ]

Otra estrategia para lograr el rendimiento es ejecutar varios subprocesos o procesos en paralelo. Esta área de investigación se conoce como computación paralela . [78] En la taxonomía de Flynn , esta estrategia se conoce como flujo de instrucciones múltiples, flujo de datos múltiples (MIMD). [79]

Una tecnología utilizada para este propósito fue el multiprocesamiento (MP). [80] El sabor inicial de esta tecnología se conoce como multiprocesamiento simétrico (SMP), donde un pequeño número de CPU comparten una visión 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 las 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 la cantidad de CPU que cooperan más allá de unas pocas, esquemas como el acceso a memoria no uniforme (NUMA) y los protocolos de coherencia basados ​​en directorios.se introdujeron en la década de 1990. Los sistemas SMP están limitados a una pequeña cantidad de CPU, mientras que los sistemas NUMA se han construido con miles de procesadores. Inicialmente, el multiprocesamiento se construyó utilizando múltiples CPU y placas discretas 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) y el chip único como un procesador de múltiples núcleos .

Más tarde se reconoció que existía un paralelismo más fino con un solo programa. Un solo programa puede tener varios subprocesos (o funciones) que se pueden ejecutar por separado o en paralelo. Algunos de los primeros ejemplos de esta tecnología implementaron procesamiento de entrada / salida , como el acceso directo a la memoria, como un hilo separado del hilo de cálculo. Un enfoque más general de esta tecnología se introdujo en la década de 1970 cuando los sistemas se diseñaron para ejecutar múltiples subprocesos de cálculo en paralelo. Esta tecnología se conoce como multihilo.(MONTE). Este enfoque se considera más rentable que el multiprocesamiento, ya que solo una pequeña cantidad de componentes dentro de una CPU se replica para admitir MT en lugar de toda la CPU en el caso de MP. En MT, las unidades de ejecución y el sistema de memoria, incluidos los cachés, se comparten entre varios subprocesos. La desventaja de MT es que el soporte de hardware para subprocesos múltiples es más visible para el software que el de MP y, por lo tanto, el software supervisor, como los sistemas operativos, tiene que sufrir cambios más importantes para admitir MT. Un tipo de MT que se implementó se conoce como multiproceso temporal, donde se ejecuta un hilo hasta que se detiene esperando que los datos regresen de la memoria externa. En este esquema, la CPU cambiaría rápidamente de contexto a otro subproceso que está listo para ejecutarse, el cambio a menudo se realiza en un ciclo de reloj de la CPU, como el UltraSPARC T1 . Otro tipo de MT es el multiproceso simultáneo , en el que las instrucciones de varios subprocesos 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 ILP a través de tecnologías como canalización, cachés, ejecución superescalar, ejecución fuera de orden, etc. , CPU que consumen mucha energía, como Intel Pentium 4 . A principios de la década de 2000, los diseñadores de CPU se vieron frustrados de lograr un mayor rendimiento de las técnicas de ILP debido a la creciente disparidad entre las frecuencias operativas de la CPU y las frecuencias operativas de la memoria principal, así como a la creciente disipación de potencia de la CPU debido a técnicas ILP más esotéricas.

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

Esta inversión de énfasis se evidencia por la proliferación de diseños de procesadores duales y con más núcleos y, en particular, los diseños más nuevos de Intel se asemejan a su arquitectura P6 menos superescalar . Los últimos diseños en varias familias de procesadores exhiben CMP, incluyendo el x86-64 Opteron y Athlon 64 X2 , el SPARC UltraSPARC T1 , IBM POWER4 y POWER5 , así como varias CPU de consola de videojuegos como el diseño PowerPC de triple núcleo de Xbox 360 , y el microprocesador Cell de 7 núcleos de PlayStation 3 .

Paralelismo de datos [ editar ]

Un paradigma de procesadores menos común pero cada vez más importante (y de hecho, la informática en general) se ocupa del paralelismo de datos. Los procesadores discutidos anteriormente se conocen como algún tipo de dispositivo escalar. [j] Como su nombre lo indica, los procesadores vectoriales tratan con múltiples datos en el contexto de una instrucción. Esto contrasta con los procesadores escalares, que tratan con un dato por cada instrucción. Utilizando la taxonomía de Flynn , estos dos esquemas de manejo de datos generalmente se denominan flujo de instrucciones único , flujo de datos múltiples ( SIMD ) y flujo de instrucciones único, flujo de datos único ( SISD), respectivamente. La gran utilidad de crear procesadores que manejen vectores de datos radica en optimizar tareas que tienden a requerir que la misma operación (por ejemplo, una suma o un producto escalar ) se realice en un gran conjunto de datos. Algunos ejemplos clásicos de este tipo de tareas incluyen aplicaciones multimedia (imágenes, video 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 obtención, 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 comparativamente grande con una instrucción. Esto solo es posible cuando la aplicación tiende a requerir muchos pasos que aplican una operación a un gran conjunto de datos.

La mayoría de los primeros procesadores de vectores, como el Cray-1 , se asociaron casi exclusivamente con la investigación científica y las aplicaciones de criptografía . Sin embargo, como la multimedia se ha desplazado 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 punto flotante comenzara a ser algo común en los procesadores de propósito general, también comenzaron a aparecer especificaciones e implementaciones de unidades de ejecución SIMD para los procesadores de propósito general. [ cuando? ] Algunas de estas primeras especificaciones de SIMD, como Multimedia Acceleration eXtensions (MAX) de HP y MMX de Intel- eran solo enteros. Esto resultó ser un impedimento significativo para algunos desarrolladores de software, ya que muchas de las aplicaciones que se benefician de SIMD tratan principalmente con números de punto flotante . Progresivamente, los desarrolladores refinaron y rehicieron estos primeros diseños en algunas de las especificaciones SIMD modernas comunes, que generalmente se asocian con una arquitectura de conjunto de instrucciones (ISA). Algunos ejemplos modernos notables incluyen Streaming SIMD Extensions (SSE) de Intel y AltiVec relacionado con PowerPC (también conocido como VMX). [k]

CPU virtuales [ editar ]

La computación en nube puede implicar la subdivisión de funcionamiento de la CPU en unidades virtuales de procesamiento central [81] ( vCPU s [82] ).

Un host es el equivalente virtual de una máquina física, en la que está funcionando un sistema virtual. [83] Cuando hay varias máquinas físicas que operan en tándem y se administran como un todo, los recursos informáticos y de 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 de clúster se pueden dividir en grupos de recursos con granularidad fina .

Rendimiento [ editar ]

El rendimiento o la velocidad de un procesador depende, entre muchos otros factores, de la frecuencia de reloj (generalmente expresada en múltiplos de hercios ) y las instrucciones por reloj (IPC), que en conjunto son los factores para las instrucciones por segundo (IPS) que el La CPU puede funcionar. [84] Muchos valores IPS reportados han representado tasas de ejecución "máximas" en secuencias de instrucciones artificiales con pocas ramas, mientras que las cargas de trabajo realistas consisten en una combinación de instrucciones y aplicaciones, algunas de las cuales tardan más en ejecutarse que otras. El desempeño de la jerarquía de la memoria.también afecta en gran medida el rendimiento del procesador, un problema que apenas se considera en los cálculos de MIPS. Debido a estos problemas, se han desarrollado varias pruebas estandarizadas, a menudo llamadas "puntos de referencia" 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 mediante el uso de procesadores de múltiples núcleos , que esencialmente conectan dos o más procesadores individuales (llamados núcleos en este sentido) en un circuito integrado. [85] 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 la implementación y los algoritmos de software imperfectos. [86]Aumentar la cantidad de núcleos en un procesador (es decir, de doble núcleo, de cuatro núcleos, etc.) aumenta la carga de trabajo que se puede manejar. Esto significa que el procesador ahora puede manejar numerosos eventos asincrónicos, interrupciones, etc., lo que puede afectar a la CPU cuando está abrumado. Estos núcleos se pueden considerar como diferentes pisos en una planta de procesamiento, y cada piso se encarga de una tarea diferente. A veces, estos núcleos manejarán las mismas tareas que los núcleos adyacentes a ellos si un solo núcleo no es suficiente para manejar la información.

Debido a las capacidades específicas de las CPU modernas, como el subproceso múltiple simultáneo y la falta de núcleo , que implican compartir los recursos reales de la CPU mientras se apunta a una mayor utilización, monitorear los niveles de rendimiento y el uso del hardware se convirtió gradualmente en una tarea más compleja. [87] Como respuesta, algunas CPU implementan lógica de hardware adicional que monitorea el uso real de varias partes de una CPU y proporciona varios contadores accesibles al software; un ejemplo es la tecnología de monitor de contador de rendimiento de Intel . [2]

Ver también [ editar ]

  • Modo de direccionamiento
  • Unidad de procesamiento acelerado de AMD
  • CISC
  • Bus de computadora
  • Ingeniería Informática
  • Voltaje del núcleo de la CPU
  • Zócalo de la CPU
  • Procesador de señal digital
  • GPU
  • Lista de conjuntos de instrucciones
  • Anillo de protección
  • RISC
  • Procesamiento de flujo
  • Índice de rendimiento real
  • TPU
  • Estado de espera

Notas [ editar ]

  1. ^ Los circuitos integrados ahora se utilizan para implementar todas las CPU, excepto algunas máquinas diseñadas para soportar grandes pulsos electromagnéticos, por ejemplo, de un arma nuclear.
  2. El memorando llamado "von Neumann" expuso la idea de programas almacenados, [65] que, por ejemplo, pueden almacenarse en tarjetas perforadas , cinta de papel o cinta magnética.
  3. ^ Algunas de las primeras computadoras, como Harvard Mark I, no admitían ningún tipo de instrucción de "salto", lo que limitaba efectivamente la complejidad de los programas que podían ejecutar. Es en gran parte por esta razón que a menudo no se considera que estas computadoras contengan una CPU adecuada, a pesar de su gran similitud con las computadoras con programas almacenados.
  4. ^ Dado que el contador de programa cuenta las direcciones de memoria y no las instrucciones , se incrementa según el número de unidades de memoria que contiene la palabra de instrucción. En el caso de ISA de palabras de instrucción de longitud fija simple, este es siempre el mismo número. Por ejemplo, una palabra de instrucción ISA de 32 bits de longitud fija que utiliza palabras de memoria de 8 bits siempre incrementaría la PC en cuatro (excepto en el caso de saltos). Las ISA que utilizan palabras de instrucción de longitud variable incrementan la PC en el número de palabras de memoria correspondientes a la longitud de la última instrucción.
  5. ^ Debido a que la arquitectura del conjunto de instrucciones de una CPU es fundamental para su interfaz y uso, a menudo se usa como una clasificación del "tipo" de CPU. Por ejemplo, una "CPU PowerPC" utiliza alguna variante de PowerPC ISA. Un sistema puede ejecutar un ISA diferente ejecutando un emulador.
  6. ^ El concepto físico de voltaje es analógico por naturaleza, y tiene prácticamente un rango infinito de valores posibles. A los efectos de la representación física de números binarios, se definen dos rangos específicos de voltajes, uno para el "0" lógico y otro para el "1" lógico. Estos rangos están dictados por consideraciones de diseño, como los márgenes de ruido y las características de los dispositivos utilizados para crear la CPU.
  7. ^ Si bien el tamaño de los números enteros de una CPU establece un límite en los rangos de números enteros, esto puede (y a menudo se supera) mediante una combinación de técnicas de software y hardware. Al usar memoria adicional, el software puede representar números enteros de muchas magnitudes mayores que la CPU. A veces, el conjunto de instrucciones de la CPUincluso facilitará las operaciones con enteros más grandes de lo que puede representar de forma nativa al proporcionar instrucciones para hacer que la aritmética de enteros grandes sea relativamente rápida. Este método para tratar con números enteros grandes es más lento que utilizar una CPU con un tamaño de número entero más alto, pero es una compensación razonable en los casos en los que el soporte de forma nativa del rango entero de enteros necesario sería prohibitivo en cuanto a costos. Consulte Aritmética de precisión arbitraria para obtener más detalles sobre enteros de tamaño arbitrario puramente compatibles con software.
  8. ^ Ni ILP ni TLP son inherentemente superiores al otro; son simplemente diferentes medios para aumentar el paralelismo de la CPU. Como tales, ambos tienen ventajas y desventajas, que a menudo están determinadas por el tipo de software que el procesador debe ejecutar. Las CPU de alto TLP se utilizan a menudo en aplicaciones que se prestan bien a dividirse en numerosas aplicaciones más pequeñas, los llamados "problemas vergonzosamente paralelos ". Con frecuencia, un problema computacional que se puede resolver rápidamente con estrategias de diseño de alto TLP, como el multiprocesamiento simétrico, lleva mucho más tiempo en dispositivos de alto ILP como CPU superescalares, y viceversa.
  9. ^ Las tasas de IPC en el mejor de los casos (o pico) en arquitecturas muy superescalares son difíciles de mantener, ya que es imposible mantener el flujo de instrucciones lleno todo el tiempo. Por lo tanto, en las CPU altamente superescalares, a menudo se discute el IPC sostenido promedio en lugar del IPC pico.
  10. ^ Anteriormente, el término escalar se utilizó para comparar el recuento de IPC proporcionado por varios métodos de ILP. Aquí el término se usa en el sentido estrictamente matemático para contrastar con los vectores. Consulte escalar (matemáticas) y vector (geométrico) .
  11. ^ Aunque SSE / SSE2 / SSE3 han reemplazado a MMX en los procesadores de propósito general de Intel, losdiseños IA-32 posterioresaún admiten MMX. Esto generalmente se hace proporcionando la mayor parte de la funcionalidad MMX con el mismo hardware que soporta los conjuntos de instrucciones SSE mucho más expansivos.

Referencias [ editar ]

  1. ^ Kuck, David (1978). Computadoras y Computaciones, Vol 1 . John Wiley & Sons, Inc. pág. 12. ISBN 978-0471027164.
  2. ^ a b Thomas Willhalm; Roman Dementiev; Patrick Fay (18 de diciembre de 2014). "Intel Performance Counter Monitor: una mejor manera de medir la utilización de la CPU" . software.intel.com . Consultado el 17 de febrero de 2015 .
  3. Liebowitz, Kusek, Spies, Matt, Christopher, Rynardt (2014). Rendimiento de VMware vSphere: diseño de CPU, memoria, almacenamiento y redes para cargas de trabajo intensivas en rendimiento . Wiley. pag. 68. ISBN 978-1-118-00819-5.CS1 maint: multiple names: authors list (link)
  4. ^ Regan, Gerard (2008). Una breve historia de la informática . pag. 66. ISBN 978-1848000834. Consultado el 26 de noviembre de 2014 .
  5. ^ Weik, Martin H. (1955). "Una encuesta de sistemas informáticos digitales electrónicos domésticos" . Laboratorio de Investigaciones Balísticas . Cite journal requires |journal= (help)
  6. ↑ a b Weik, Martin H. (1961). "Una tercera encuesta de sistemas informáticos digitales electrónicos domésticos" . Laboratorio de Investigaciones Balísticas . Cite journal requires |journal= (help)
  7. ^ "Poco a poco" . Universidad de Haverford. Archivado desde el original el 13 de octubre de 2012 . Consultado el 1 de agosto de 2015 .
  8. ^ "Primer borrador de un informe sobre el EDVAC" (PDF) . Escuela Moore de Ingeniería Eléctrica , Universidad de Pennsylvania . 1945. Cite journal requires |journal= (help)
  9. ^ Universidad de Stanford. "La historia moderna de la informática" . La Enciclopedia de Filosofía de Stanford . Consultado el 25 de septiembre de 2015 .
  10. ^ "Cumpleaños de ENIAC" . La prensa del MIT. 9 de febrero de 2016 . Consultado el 17 de octubre de 2018 .
  11. ^ Enticknap, Nicholas (verano de 1998), "Computing's Golden Jubilee" , Resurrection , The Computer Conservation Society (20), ISSN 0958-7403 , consultado el 26 de junio de 2019 
  12. ^ "El Manchester Mark 1" . Universidad de Manchester . Consultado el 25 de septiembre de 2015 .
  13. ^ "La primera generación" . Museo de Historia de la Computación . Consultado el 29 de septiembre de 2015 .
  14. ^ "La historia del circuito integrado" . Nobelprize.org . Consultado el 29 de septiembre de 2015 .
  15. ^ Turley, Jim. "Automovilismo con microprocesadores" . Embebido . Consultado el 15 de noviembre de 2015 .
  16. ^ "Guía de procesadores móviles - verano de 2013" . Autoridad de Android. 2013-06-25 . Consultado el 15 de noviembre de 2015 .
  17. ^ "Sección 250: microprocesadores y juguetes: una introducción a los sistemas informáticos" . Universidad de Michigan . Consultado el 9 de octubre de 2018 .
  18. ^ "Procesador ARM946" . BRAZO. Archivado desde el original el 17 de noviembre de 2015.
  19. ^ "Konrad Zuse" . Museo de Historia de la Computación . Consultado el 29 de septiembre de 2015 .
  20. ^ "Cronología de la historia de la computadora: computadoras" . Museo de Historia de la Computación . Consultado el 21 de noviembre de 2015 .
  21. ^ Blanco, Stephen. "Una breve historia de la informática - Computadoras de primera generación" . Consultado el 21 de noviembre de 2015 .
  22. ^ "Marca de la Universidad de Harvard - Unidad de perforación de cinta de papel" . Museo de Historia de la Computación . Consultado el 21 de noviembre de 2015 .
  23. ^ "¿Cuál es la diferencia entre una arquitectura de von Neumann y una arquitectura de Harvard?" . BRAZO . Consultado el 22 de noviembre de 2015 .
  24. ^ "Arquitectura avanzada optimiza la CPU Atmel AVR" . Atmel . Consultado el 22 de noviembre de 2015 .
  25. ^ "Interruptores, transistores y relés" . BBC. Archivado desde el original el 5 de diciembre de 2016.
  26. ^ "Presentación del transistor de vacío: un dispositivo hecho de nada" . Espectro IEEE . 2014-06-23 . Consultado el 27 de enero de 2019 .
  27. ^ ¿Qué es el rendimiento de la computadora? . Prensa de las Academias Nacionales. 2011. doi : 10.17226 / 12980 . ISBN 978-0-309-15951-7. Consultado el 16 de mayo de 2016 .
  28. ^ "1953: Surgen las computadoras transistorizadas" . Museo de Historia de la Computación . Consultado el 3 de junio de 2016 .
  29. ^ "IBM System / 360 fechas y características" . IBM. 2003-01-23.
  30. ^ a b Amdahl, GM ; Blaauw, GA ; Brooks, FP Jr. (abril de 1964). "Arquitectura del IBM System / 360". IBM Journal of Research and Development . IBM . 8 (2): 87–101. doi : 10.1147 / rd.82.0087 . ISSN 0018-8646 . 
  31. ^ Brodkin, John. "Hace 50 años, IBM creó un mainframe que ayudó a enviar hombres a la Luna" . Ars Technica . Consultado el 9 de abril de 2016 .
  32. ^ Clarke, Gavin. "¿Por qué no mueres? IBM S / 360 y su legado en 50" . El registro . Consultado el 9 de abril de 2016 .
  33. ^ "Página de inicio de PDP-8 en línea, ejecutar un PDP-8" . PDP8 . Consultado el 25 de septiembre de 2015 .
  34. ^ "Transistores, relés y control de cargas de alta corriente" . Universidad de Nueva York . Computación Física ITP . Consultado el 9 de abril de 2016 .
  35. Lilly, Paul (14 de abril de 2009). "Una breve historia de las CPU: 31 años asombrosos de x86" . Jugador de PC . Consultado el 15 de junio de 2016 .
  36. ^ a b Patterson, David A .; Hennessy, John L .; Larus, James R. (1999). Organización y diseño de computadoras: la interfaz hardware / software (2. ed., 3rd print. Ed.). San Francisco: Kaufmann. pag. 751 . ISBN 978-1558604285.
  37. ^ "1962: Los sistemas aeroespaciales son las primeras aplicaciones para circuitos integrados en computadoras" . Museo de Historia de la Computación . Consultado el 9 de octubre de 2018 .
  38. ^ "Los circuitos integrados en el programa de aterrizaje lunar tripulado Apolo" . Administración Nacional de Aeronáutica y del Espacio . Consultado el 9 de octubre de 2018 .
  39. ^ "Anuncio del sistema / 370" . Archivos de IBM . 2003-01-23 . Consultado el 25 de octubre de 2017 .
  40. ^ "System / 370 Modelo 155 (continuación)" . Archivos de IBM . 2003-01-23 . Consultado el 25 de octubre de 2017 .
  41. ^ "Modelos y opciones" . The Digital Equipment Corporation PDP-8 . Consultado el 15 de junio de 2018 .
  42. ^ a b https://www.computerhistory.org/siliconengine/metal-oxide-semiconductor-mos-transistor-demonstrated/
  43. ^ Moskowitz, Sanford L. (2016). Innovación de materiales avanzados: gestión de la tecnología global en el siglo XXI . John Wiley e hijos . págs. 165-167. ISBN 9780470508923.
  44. Motoyoshi, M. (2009). "Through-Silicon Via (TSV)". Actas del IEEE . 97 (1): 43–48. doi : 10.1109 / JPROC.2008.2007462 . ISSN 0018-9219 . S2CID 29105721 .  
  45. ^ "Los transistores mantienen viva la ley de Moore" . EETimes . 12 de diciembre de 2018.
  46. ^ "¿Quién inventó el transistor?" . Museo de Historia de la Computación . 4 de diciembre de 2013.
  47. ^ Hittinger, William C. (1973). "Tecnología de semiconductores de óxido de metal". Scientific American . 229 (2): 48–59. Código bibliográfico : 1973SciAm.229b..48H . doi : 10.1038 / scientificamerican0873-48 . ISSN 0036-8733 . JSTOR 24923169 .  
  48. ^ Ross Knox Bassett (2007). Hacia la era digital: laboratorios de investigación, empresas emergentes y el auge de la tecnología MOS . Prensa de la Universidad Johns Hopkins . págs. 127-128, 256 y 314. ISBN 978-0-8018-6809-2.
  49. ^ a b Ken Shirriff. "El Texas Instruments TMX 1795: el primer microprocesador olvidado" .
  50. ^ "Velocidad y potencia en familias lógicas" ..
  51. ^ TJ Stonham. "Técnicas de lógica digital: principios y práctica" . 1996. p. 174.
  52. ^ "1968: tecnología de puerta de silicio desarrollada para circuitos integrados" . Museo de Historia de la Computación .
  53. ^ RK Booher. "Computadora MOS GP" . afips, págs. 877, 1968 Actas de la Conferencia Conjunta de Computación de Otoño, 1968 doi : 10.1109 / AFIPS.1968.126
  54. ^ "Descripciones del módulo LSI-11" (PDF) . LSI-11, PDP-11/03 manual del usuario (2ª ed.). Maynard, Massachusetts: Corporación de equipos digitales . Noviembre de 1975. págs. 4-3.
  55. ^ "1971: el microprocesador integra la función de la CPU en un solo chip" . Museo de Historia de la Computación .
  56. ^ Margaret Rouse (27 de marzo de 2007). "Definición: procesador multinúcleo" . TechTarget . Consultado el 6 de marzo de 2013 .
  57. ^ Richard Birkby. "Una breve historia del microprocesador" . computermuseum.li . Archivado desde el original el 23 de septiembre de 2015 . Consultado el 13 de octubre de 2015 .
  58. ^ Osborne, Adam (1980). Introducción a las microcomputadoras . Volumen 1: Conceptos básicos (2ª ed.). Berkeley, California: Osborne-McGraw Hill. ISBN 978-0-931988-34-9.
  59. Zhislina, Victoria (19 de febrero de 2014). "¿Por qué ha dejado de crecer la frecuencia de la CPU?" . Intel . Consultado el 14 de octubre de 2015 .
  60. ^ "Transistor MOS - Ingeniería eléctrica e informática" (PDF) . Universidad de California . Consultado el 14 de octubre de 2015 .
  61. ^ Simonita, Tom. "La ley de Moore ha muerto. ¿Y ahora qué?" . Revisión de tecnología del MIT . Consultado el 24 de agosto de 2018 .
  62. ^ "Extractos de una conversación con Gordon Moore: Ley de Moore" (PDF) . Intel. 2005. Archivado desde el original (PDF) el 29 de octubre de 2012 . Consultado el 25 de julio de 2012 . Cite journal requires |journal= (help)
  63. ^ "Una historia detallada del procesador" . Adicto a la tecnología. 15 de diciembre de 2016.
  64. ^ 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 .
  65. ^ Aspray, William (septiembre de 1990). "El concepto de programa almacenado". Espectro IEEE . Vol. 27 no. 9. doi : 10.1109 / 6.58457 .
  66. ^ Saraswat, Krishna. "Tendencias en tecnología de circuitos integrados" (PDF) . Consultado el 15 de junio de 2018 .
  67. ^ "Electromigración" . Universidad Técnica de Oriente Medio . Consultado el 15 de junio de 2018 .
  68. ^ Ian Wienand (3 de septiembre de 2013). "Ciencias de la computación desde abajo hacia arriba, Capítulo 3. Arquitectura de la computadora" (PDF) . bottomupcs.com . Consultado el 7 de enero de 2015 .
  69. ^ "Introducción de la unidad de control y su diseño" . GeeksforGeeks . 2018-09-24 . Consultado el 12 de enero de 2021 .
  70. ^ Cornelis Van Berkel; Patrick Meuwissen (12 de enero de 2006). "Unidad de generación de direcciones para un procesador (solicitud de patente US 2006010255 A1)" . google.com . Consultado el 8 de diciembre de 2014 .[ verificación necesaria ]
  71. ^ Gabriel Torres (12 de septiembre de 2007). "Cómo funciona la memoria caché" .[ verificación necesaria ]
  72. ^ Algunas CPU, aceleradores o microcontroladores especializados no tienen caché. Para ser rápidos, si es necesario / deseado, todavía tienen una memoria de bloc de notas en el chip que tiene una función similar, mientras se administra el software. Por ejemplo, en microcontroladores, puede ser mejor para un uso duro en tiempo real, tener eso o al menos no tener caché, ya que con un nivel de memoria las latencias de las cargas son predecibles. [ verificación necesaria ]
  73. ^ "Introducción técnica de IBM z13 e IBM z13s" (PDF) . IBM . Marzo de 2016. p. 20. [ verificación necesaria ]
  74. ^ Brown, Jeffery (2005). "Diseño de CPU a medida de la aplicación" . IBM developerWorks . Consultado el 17 de diciembre de 2005 .
  75. ^ Garside, JD; Furber, SB; Chung, SH (1999). "AMULET3 Revelado" . Departamento de Informática de la Universidad de Manchester . Archivado desde el original el 10 de diciembre de 2005. Cite journal requires |journal= (help)
  76. ^ "Características funcionales de IBM System / 360 Modelo 65" (PDF) . IBM . Septiembre de 1968. págs. 8–9. A22-6884-3.
  77. ^ Huynh, Jack (2003). "El procesador AMD Athlon XP con caché L2 de 512 KB" (PDF) . Universidad de Illinois, Urbana-Champaign. págs. 6-11. Archivado desde el original (PDF) el 28 de noviembre de 2007 . Consultado el 6 de octubre de 2007 .
  78. ^ Gottlieb, Allan; Almasi, George S. (1989). Computación altamente paralela . Redwood City, California: Benjamin / Cummings. ISBN 978-0-8053-0177-9.
  79. ^ Flynn, MJ (septiembre de 1972). "Algunas organizaciones informáticas y su eficacia". IEEE Trans. Computación. C-21 (9): 948–960. doi : 10.1109 / TC.1972.5009071 . S2CID 18573685 .  
  80. ^ Lu, N.-P .; Chung, C.-P. (1998). "Explotación del paralelismo en multiprocesamiento superescalar". Actas de la IEE - Computadoras y técnicas digitales . Institución de Ingenieros Eléctricos. 145 (4): 255. doi : 10.1049 / ip-cdt: 19981955 .
  81. ^ Anjum, Bushra; Perros, Harry G. (2015). "1: Partición del presupuesto de QoS de un extremo a otro para los dominios" . Asignación de ancho de banda para video bajo restricciones de calidad de servicio . Focus Series. John Wiley e hijos. pag. 3. ISBN 9781848217461. Consultado el 21 de septiembre de 2016 . [...] en la computación en la nube, donde varios componentes de software se ejecutan en un entorno virtual en la misma hoja, un componente por máquina virtual (VM). A cada VM se le asigna una unidad de procesamiento central [...] virtual que es una fracción de la CPU del blade.
  82. ^ Fifield, Tom; Fleming, Diane; Dulce, 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. Consultado el 20 de septiembre de 2016 . Unidad de procesamiento central virtual (vCPU) [:] Subdivide las CPU físicas. Las instancias pueden usar esas divisiones.
  83. ^ "Descripción general de la arquitectura de infraestructura de VMware: documento técnico" (PDF) . VMware . VMware. 2006.
  84. ^ "Frecuencia de CPU" . Glosario mundial de CPU . CPU World. 25 de marzo de 2008 . Consultado el 1 de enero de 2010 .
  85. ^ "¿Qué es (un) procesador de múltiples núcleos?" . Definiciones de centros de datos . SearchDataCenter.com . Consultado el 8 de agosto de 2016 .
  86. ^ "Quad Core vs. Dual Core" .
  87. ^ Tegtmeier, Martin. "Explicación de la utilización de CPU de arquitecturas multiproceso" . Oracle . Consultado el 29 de septiembre de 2015 .

Enlaces externos [ editar ]

  • Cómo funcionan los microprocesadores en HowStuffWorks .
  • 25 Microchips que sacudieron al mundo : un artículo del Instituto de Ingenieros Eléctricos y Electrónicos .