You are on page 1of 19

Historia De La CPU

El procesador o microprocesador, es el componente del computador y otros dispositivos
programables, que interpreta las instrucciones contenidas en los programas y procesa los
datos
Los CPU proporcionan la característica fundamental de la computadora digital (la
programabilidad) y son uno de los componentes necesarios encontrados en las
computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos
de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con
circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo
chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término
"CPU" es aplicado usualmente a todos los microprocesadores.
La expresión "unidad central de proceso" es, en términos generales, una descripción de una
cierta clase de máquinas de lógica que pueden ejecutar complejos programas de
computadora.
Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros
computadores que existieron mucho antes que el término "CPU" estuviera en amplio uso.
Sin embargo, el término en sí mismo y su acrónimo han estado en uso en la industria de la
informática por lo menos desde el principio de los años 1960 . La forma, el diseño y la
implementación de los CPU ha cambiado drásticamente desde los primeros ejemplos, pero
su operación fundamental ha permanecido bastante similar.
Los primeros CPU fueron diseñados a la medida como parte de una computadora más
grande, generalmente una computadora única en su especie. Sin embargo, este costoso
método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en
gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y
estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización
comenzó generalmente en la era de los transistores discretos, computadoras centrales,
ymicrocomputadoras, y fue acelerada rápidamente con la popularización del circuito
integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejos en
espacios pequeños (en la orden de milímetros). Tanto la miniaturización como la
estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la
vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación
dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles,
televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares, juguetes,
entre otros.
Casi todos los CPU tratan con estados discretos, y por lo tanto requieren una cierta clase de
elementos de conmutación para diferenciar y cambiar estos estados. Antes de la aceptación
comercial del transistor, los relés eléctricos y los tubos de vacío (válvulas termoiónicas)
eran usados comúnmente como elementos de conmutación. Aunque éstos tenían distintas
ventajas de velocidad sobre los anteriores diseños puramente mecánicos, no eran fiables por
varias razones. Por ejemplo, hacer circuitos de lógica secuencial de corriente directa
requería hardware adicional para hacer frente al problema del rebote de contacto. Por otro
lado, mientras que los tubos de vacío no sufren del rebote de contacto, éstos deben
calentarse antes de llegar a estar completamente operacionales y eventualmente fallan y
dejan de funcionar por completo.1 Generalmente, cuando un tubo ha fallado, el CPU

que interpreta las instrucciones de un programa informático mediante la realización de las operaciones básicas aritméticas. (anteriores y más lentas). del inglés: central processing unit). Al final. Un circuito integrado que contiene una CPU también puede contener los dispositivos periféricos. mientras que las computadoras de relés. lo que significa que contienen un solo circuito integrado (chip). y otros componentes de un sistema informático. y la unidad de control (CU). pero su operación fundamental sigue siendo la misma.tendría que ser diagnosticado para localizar el componente que falla para que pueda ser reemplazado. Una computadora puede tener más de una CPU. a esto se llama un sistema en un chip (SoC). lógicas y de entrada/salida del sistema. fallaban muy raramente . tendieron en tener un promedio de ocho horas entre fallas. Las computadoras de tubo. Por lo tanto. los CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban más que los problemas de confiabilidad. los primeros computadores electrónicos. generalmente eran más rápidas pero menos confiables que las computadoras electromecánicas. esto se llama multiprocesamiento. La unidad central de procesamiento o unidad de procesamiento central (conocida por las siglas CPU. que extrae instrucciones de la memoria. es el hardware dentro de una computadora u otros dispositivos programables. No todos los sistemas computacionales se basan en una unidad central de procesamiento.1 La forma. que realiza operaciones aritméticas y lógicas. El término en sí mismo y su acrónimo han estado en uso en la industria de la Informática por lo menos desde el principio de los años 1960. se resuelven problemas mediante un conjunto interconectado y distribuido de procesadores. sin una unidad considerada el "centro". las decodifica y las ejecuta. Índice . como el EDVAC. Una matriz de procesador o procesador vectorial tiene múltiples elementos cómputo paralelo. (basados en tubos de vacío). Algunos circuitos integrados pueden contener varias CPU en un solo chip. como el Harvard Mark I. llamando a la ALU cuando sea necesario. (basadas en relés). el diseño de CPU y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos. estos son denominados procesadores multinúcleo. Dos componentes típicos de una CPU son la unidad aritmético lógica (ALU). En el modelo de computación distribuido. Todas las CPU modernas son microprocesadores.

1 Historia 1.2 Lectura adicional Historia El EDVAC. Ordenadores. una de las primeras computadoras de programas almacenados electrónicamente.1 CPU de transistores y de circuitos integrados discretos 1.2 Frecuencia de reloj 3.1 Rango de enteros 3.3 Execute 2.3 Paralelismo de datos 4 Desempeño 5 Véase también 6 Notas 7 Referencias 8 Bibliografía 9 Enlaces externos 9.3 Paralelismo 3.3.1 Fetch 2.2 Microprocesadores 2 Operación 2.2 Decode 2.1 Diseños de microprocesador 9.4 Writeback 3 Diseño e implementación 3. que causaron que estas máquinas se llamarán "ordenadores de programas fijo".3.1 ILP: Segmentación y arquitectura superescalar 3.2 Paralelismo a nivel de hilos 3.3. Dado que el término "CPU" generalmente se . como el ENIAC tenían que ser físicamente recableados para realizar diferentes tareas.

define como un dispositivo para la ejecución de software (programa informático). este método de diseñar las CPU a medida. La . Tanto la miniaturización como la estandarización de las CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Sin embargo. Las primeras CPU fueron diseñadas a medida como parte de un ordenador más grande. pero se omitió inicialmente de modo que pudiera ser terminado antes. que corría EDVAC podría ser cambiado simplemente cambiando el contenido de la memoria. Fue el esbozo de un ordenador de programa almacenado que en agosto de 1949 fue finalmente terminado. La idea de un ordenador con programa almacenado ya estaba presente en el diseño de John Presper Eckert y en el ENIAC de John William Mauchly. Sin embargo. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos. como Konrad Zuse. computadoras centrales y microcomputadoras y fue acelerada rápidamente con la popularización del circuito integrado (IC). para una aplicación particular. corrió su primer programa el 21 de junio de 19483 y la Manchester Mark I corrió su primer programa en la noche del 16 hasta el 17 junio de 1949. generalmente un ordenador único en su especie.2 EDVAC fue diseñado para realizar un cierto número de instrucciones (u operaciones) de varios tipos. El 30 de junio de 1945. los programas escritos para el EDVAC se crearon para ser almacenados en la memoria de alta velocidad del ordenador y no especificado por el cableado físico del ordenador. Esto superó una severa limitación del ENIAC. Los microprocesadores modernos aparecen en todo. Significativamente. habían sugerido y aplicado ideas similares. la Máquina Experimental de Pequeña Escala de Mánchester. Con el diseño de von Neumann. otros antes que él. EDVAC no fue el primer ordenador de programa almacenado. el programa o software. el matemático John von Neumann distribuyó el trabajo titulado First Draft of a Report on the EDVAC (Primer Borrador de un Reporte sobre el EDVAC). desde automóviles hasta teléfonos móviles o celulares y juguetes de niños. ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o varios propósitos. un pequeño prototipo de ordenador de programa almacenado. Si bien von Neumann muchas veces acreditado por el diseño de la computadora con programa almacenado debido a su diseño del EDVAC. que era el importante tiempo y esfuerzo requerido para volver a configurar el equipo para realizar una nueva tarea. antes de que se construyera la ENIAC. este ha permitido que sean diseñados y fabricados CPU más complejas en espacios pequeños en la orden de nanómetros). los primeros dispositivos que con razón podríamos llamar CPU vinieron con el advenimiento del ordenador con programa almacenado.

La diferencia clave entre las arquitecturas de von Neumann y la de Harvard es que la última separa el almacenamiento y tratamiento de instrucciones de la CPU y los datos.denominada arquitectura Harvard del Harvard Mark I. CPU de transistores y de circuitos integrados discretos CPU. como el EDVAC. por ejemplo. memoria de núcleo e interfaz de bus externo de un MSI PDP-8/I. solamente circuitos digitales muy básicos. mientras que los ordenadores de relés. ganó popularidad un método de fabricar muchos transistores en un espacio compacto. La velocidad global de un sistema depende de la velocidad de los conmutadores.1 Al final. Las CPU transistorizadas durante los años 1950 y los años 1960 no tuvieron que ser construidos con elementos de conmutación abultados. Las CPU basadas en estos IC de "bloques de construcción" generalmente son referidos . Al principio. como los tubos de vacío y los relés eléctricos. mientras que el primero utiliza el mismo espacio de memoria para ambos. los CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban más que los problemas de confiabilidad. Durante este período. un ordenador útil requiere miles o decenas de miles de dispositivos de conmutación. Con esta mejora. también utilizó un diseño de programa almacenado usando cinta de papel perforada en vez de memoria electrónica. no especializados. que se completó antes de EDVAC. El circuito integrado (IC) permitió que una gran cantidad de transistores fueran fabricados en una simple oblea basada en semiconductor o "chip". fueron construidas CPU más complejas y más confiables sobre una o varias tarjetas de circuito impreso que contenían componentes discretos (individuales). no fiables y frágiles. La mayor parte de estas tempranas CPU síncronas corrían en frecuencias de reloj bajas comparadas con los modernos diseños microelectrónicos. pero los CPU con arquitectura Harvard se ven así. La primera de esas mejoras vino con el advenimiento del transistor. Hecho de circuitos integrados de mediana escala. fallaban muy raramente. La complejidad del diseño de las CPU aumentó junto con facilidad de la construcción de dispositivos electrónicos más pequeños y confiables. tendieron en tener un promedio de ocho horas entre fallos. (anteriores y más lentos). limitado en gran parte por la velocidad de los dispositivos de conmutación con los que fueron construidos. Los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados comúnmente como elementos de conmutación. los microcontroladores Atmel AVR son procesadores de arquitectura Harvard. sobre todo en aplicaciones embebidas. Los ordenadores de tubo. La mayoría de los CPU modernos son de diseño von Neumann. Eran muy comunes en este tiempo las frecuencias de la señal del reloj con un rango desde 100 kHz hasta 4 MHz. como el Harvard Mark I. como las puertas NOR fueron miniaturizados en IC.

Los circuitos integrados MSI y el LSI (de mediana y gran escala de integración) aumentaron el número de transistores a cientos y luego a miles. DEC introduciría más adelante la muy popular línea del PDP-11. que fue usada en una serie de ordenadores que podían ejecutar los mismos programas con velocidades y desempeños diferentes. IBM introdujo su arquitectura de ordenador System/360. pero todavía consumía mucho menos espacio y energía que diseños anteriores de transistores discretos. . usualmente contenían transistores que se contaban en números de múltiplos de diez. Para facilitar esta mejora. Aparte de facilitar una creciente fiabilidad y un menor consumo de energía. ampliamente usado aún en las CPU modernas. disminuyendo así la cantidad de IC individuales necesarios para una CPU completa. se fueron alcanzando frecuencias de reloj de la CPU de decenas de megahertz. dirigido a los mercados científicos y de investigación. como el IBM zSeries. como los hechos por Cray Inc. IBM utilizó el concepto de microprograma. los transistores también permitían que CPU operara a velocidades mucho más altas debido al corto tiempo de conmutación de un transistor en comparación a un tubo o relé. Los circuitos integrados SSI. En fuerte contraste con sus precursores hechos con tecnología SSI y MSI. Digital Equipment Corporation (DEC) introdujo otro ordenador que sería muy influyente. como los usados en el computador guía del Apollo (Apollo Guidance Computer). Además.4 La arquitectura System/360 era tan popular que dominó el mercado del mainframe durante las siguientes décadas y dejó una herencia que todavía aún perdura en los ordenadores modernos. Esto fue significativo en un tiempo en que la mayoría de los ordenadores electrónicos eran incompatibles entre sí. A medida que la tecnología microelectrónica avanzó. En 1964.5 Los ordenadores basados en transistores tenían varias ventajas frente a sus predecesores. Construir un CPU completo usando IC SSI requería miles de chips individuales. Estos primeros diseños experimentales dieron lugar más adelante a la era de los superordenadores especializados.como dispositivos de pequeña escala de integración "small-scale integration" (SSI). mientras que las CPU de transistores discretos y circuitos integrados se usaban comúnmente. que originalmente fue construido con IC SSI pero eventualmente fue implementado con componentes LSI cuando se convirtieron en prácticos. en los IC fue colocado un número creciente de transistores. a menudo llamado «microcódigo». incluso las hechas por el mismo fabricante. el PDP-8. Gracias tanto a esta creciente fiabilidad como al dramático incremento de velocidad de los elementos de conmutación que por este tiempo eran casi exclusivamente transistores. En el mismo año de 1964. comenzaron a aparecer los nuevos diseños de alto rendimiento como procesadores vectoriales SIMD (single instruction multiple data – instrucción única. la primera implementación LSI del PDP-11 contenía una CPU integrada únicamente por cuatro circuitos integrados LSI. datos múltiples).

en los pasados sesenta años han cambiado drásticamente. el tamaño.75 mm) en su empaquetado. Los fabricantes de mainframes y miniordenadores de ese tiempo lanzaron programas de desarrollo de IC propietarios para actualizar sus arquitecturas de computadoras más viejas y eventualmente producir microprocesadores con conjuntos de instrucciones que eran retrocompatibles con sus hardwares y softwares más viejos. como ha aumentado la capacidad de construir transistores excesivamente pequeños en un IC. el Intel 4004. Por otro lado. la complejidad y el número de transistores en un simple CPU también se ha incrementado dramáticamente. El tamaño más pequeño del CPU. Adicionalmente. Combinado con el advenimiento y el eventual vasto éxito de la ahora ubicua computadora personal. la complejidad. el Intel 8080. en 1974. los microprocesadores son CPU fabricados con un número muy pequeño de IC. el término "CPU" es aplicado ahora casi exclusivamentenota 1 a los microprocesadores. . en 1970 y del primer microprocesador ampliamente usado. ser una predicción bastante exacta del crecimiento de la complejidad de los CPUs y otros IC. debajo del tubo termosifón bifásico. como resultado de estar implementado en una simple pastilla. Esto ha permitido que los microprocesadores síncronos tengan tiempos de reloj con un rango de decenas de megahercios a varios gigahercios. Las generaciones previas de CPU fueron implementadas como componentes discretos y numerosos circuitos integrados de pequeña escala de integración en una o más tarjetas de circuitos.6 Mientras que. En la década de 1970 los inventos fundamentales de Federico Faggin (ICs Silicon Gate MOS con puertas autoalineadas junto con su nueva metodología de diseño de lógica aleatoria) cambió el diseño e implementación de las CPU para siempre. usualmente solo uno. Desde la introducción del primer microprocesador comercialmente disponible.Microprocesadores Artículo principal: Microprocesador Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6. esta clase de CPU ha desplazado casi totalmente el resto de los métodos de implementación de la Unidad Central de procesamiento. CPU Intel Core i5 en una placa madre del ordenador portátil Vaio serie E (a la derecha. significa tiempos de conmutación más rápidos debido a factores físicos como el decrecimiento de la capacitancia parásita de las puertas. la construcción y la forma general de la CPU. que ha demostrado hasta la fecha. Esta tendencia ampliamente observada es descrita por la ley de Moore. es notable que el diseño y el funcionamiento básico no ha cambiado demasiado.

decodificar. Esta cuestión se trata en gran medida en los procesadores modernos por los cachés y las arquitecturas pipeline (ver abajo). un grupo de .nota 2 A medida que la ya mencionada ley del Moore continúa manteniéndose verdadera. leer. de la memoria de programa. (que es representada por un número o una secuencia de números). (MIPS Technologies 2005) Fetch El primer paso. La localización en la memoria del programa es determinada por un contador de programa (PC). ejecutar y escribir).6 se han presentado preocupaciones sobre los límites de la tecnología de transistor del circuito integrado. Operación La operación fundamental de la mayoría de las CPU es ejecutar una secuencia de instrucciones almacenadas llamadas «programa». (leer. la instrucción es dividida en partes que tienen significado para otras unidades de la CPU.nota 3 Frecuentemente. y writeback. Hay cuatro pasos que casi todos las CPU de arquitectura de von Neumann usan en su operación: fetch. Después se lee una instrucción. Estas nuevas preocupaciones están entre los muchos factores que hacen a investigadores estudiar nuevos métodos de computación como la computación cuántica. así como ampliar el uso de paralelismo y otros métodos que extienden la utilidad del modelo clásico de von Neumann.Casi todos los CPU comunes de hoy se pueden describir con precisión como máquinas de programa almacenado de von Neumann. como la electromigración y el subumbral de pérdida. El programa es representado por una serie de números que se mantienen en una cierta clase de memoria de ordenador. la instrucción a ser leída debe ser recuperada de memoria relativamente lenta. decode. La miniaturización extrema de puertas electrónicas está causando los efectos de fenómenos que se vuelven mucho más significativos. Decode En el paso de decodificación. que almacena un número que identifica la dirección de la siguiente instrucción que se debe buscar.nota 4 A menudo. el PC es incrementado por la longitud de la instrucción en términos de unidades de memoria de modo que contendrá la dirección de la siguiente instrucción en la secuencia. execute. implica el recuperar una instrucción. Diagrama mostrando como es decodificada una instrucción del MIPS32. La manera en que el valor de la instrucción numérica es interpretado está definida por la arquitectura del conjunto de instrucciones (el ISA) de la CPU. haciendo detener al CPU mientras espera que la instrucción sea devuelta.

y funciones en programas. una operación de adición fue solicitada. varias unidades del CPU son conectadas de tal manera que ellas pueden realizar la operación deseada. En diseños más viejos las unidades del CPU responsables de decodificar la instrucción eran dispositivos de hardware fijos. es llevado a cabo el paso de la ejecución de la instrucción. los resultados son escritos a algún registro interno del CPU para acceso rápido por subsecuentes instrucciones. Este microprograma es a veces reescribible de tal manera que puede ser modificado para cambiar la manera en que el CPU decodifica instrucciones incluso después de que haya sido fabricado. o como un lugar para localizar un valor.nota 5 Muchas instrucciones también cambiarán el estado de dígitos en un registro de "banderas". operandos para una operación de adición. puesto que a menudo indican el resultado de varias operaciones. simplemente «escribe» los resultados del paso de ejecución a una cierta forma de memoria. la ejecución condicional de programas (con el uso de saltos condicionales). Las partes restantes del número usualmente proporcionan información requerida para esa instrucción. llamados opcode.números en la instrucción. Writeback El paso final. una unidad aritmético lógica (ALU) será conectada a un conjunto de entradas y un conjunto de salidas. Por ejemplo. En otros casos los resultados pueden ser escritos a una memoria principal más lenta pero más barata y más grande. Estas son llamadas generalmente "saltos" (jumps) y facilitan comportamientos como bucles. Las entradas proporcionan los números a ser sumados. Si la operación de adición produce un resultado demasiado grande para poder ser manejado por el CPU. Durante este paso. Sin embargo. La ALU contiene la circuitería para realizar operaciones simples de aritmética y lógica en las entradas. Muy a menudo. como adición y operaciones de bits (bitwise). Si. Después de los pasos de lectura y decodificación. la escritura. es frecuentemente usado un microprograma para ayudar a traducir instrucciones en varias señales de configuración para el CPU. y las salidas contendrán la suma final. por ejemplo. Execute Diagrama de bloques de un CPU simple. que según lo determinado por algún modo de dirección. también puede ser ajustada una bandera (flag) de desbordamiento aritmético localizada en un registro de banderas (ver abajo la sección sobre rango de números enteros). Algunos tipos de instrucciones manipulan el contador de programa en lugar de directamente producir datos de resultado. en CPUs e ISAs más abstractos y complicados. Tales operandos se pueden dar como un valor constante (llamado valor inmediato). Estas banderas pueden ser usadas para influenciar cómo se comporta un programa. como por ejemplo. puede ser un registro o una dirección de memoria. un tipo de instrucción de "comparación" considera . indica qué operación realizar.

a menudo llamados microcontroladores. Entonces. Con la representación numérica están relacionados el tamaño y la precisión de los números que un CPU puede representar. múltiples instrucciones pueden ser leídas. un diseño extremadamente popular de 8 bits. "ancho de bits". En CPUs más complejos que el descrito aquí. Rango de enteros La manera en que un CPU representa los números es una opción de diseño que afecta las más básicas formas en que el dispositivo funciona. normalmente leyendo la siguiente instrucción en secuencia debido al valor incrementado en el contador de programa. y a menudo dentro de diferentes unidades del mismo CPU. el contador de programa será modificado para contener la dirección de la instrucción a la cual se saltó. un CPU de 8 bits . Por ejemplo. o dígitos) que un CPU usa para representar los números. y ejecutadas simultáneamente. Después de la ejecución de la instrucción y la escritura de los datos resultantes.nota 6 Diseño e implementación Véanse también: Arquitectura de computadoras y Circuito digital. un bit se refiere a una posición significativa en los números con que trabaja un CPU. Si la instrucción completada era un salto. de acuerdo a cuál es el mayor.dos valores y fija un número. para representar números internamente. decodificadas. El número de bits (o de posiciones numéricas. el proceso entero se repite con el siguiente ciclo de instrucción. esta bandera puede ser usada por una posterior instrucción de salto para determinar el flujo de programa. que de hecho es bastante común entre los CPU simples usados en muchos dispositivos electrónicos. en el registro de banderas. y la ejecución del programa continúa normalmente. Este número difiere entre las arquitecturas. un modelo eléctrico del sistema de numeración decimal común (base diez). Esta sección describe lo que es referido generalmente como el "entubado RISC clásico" (Classic RISC pipeline). Algunas otras computadoras han usado sistemas de numeración más exóticos como el ternario (base tres). Algunas de las primeras calculadoras digitales usaron. En el caso de un CPU binario. Casi todos los CPU modernos representan los números en forma binaria. a menudo se llama "tamaño de la palabra". en donde cada dígito es representado por una cierta cantidad física de dos valores. como un voltaje "alto" o "bajo". o "precisión del número entero" cuando se ocupa estrictamente de números enteros (en oposición a números de coma flotante).nota 7 Microprocesador MOS 6502 en un dual in-line package (encapasulado en doble línea). "ancho de ruta de datos".

el tamaño del número entero fija un límite de hardware en el rango de números enteros que el software corre y que el CPU puede usar directamente. usualmente toma la forma de una onda cuadrada periódica. y en combinación los 8 bits teniendo 28 ó 256 números discretos. los beneficios producidos por el rango adicional. En efecto. Frecuencia de reloj Artículo principal: Frecuencia de reloj La mayoría de los CPU. y generalmente costo. muchas CPUs están diseñadas con anchos de bit diferentes para diferentes unidades del dispositivo. son más significativos y con frecuencia afectan las opciones del diseño. 64. Por ejemplo.4 Muchos diseños posteriores de CPU usan una mezcla de ancho de bits similar. Los microcontroladores más simples son generalmente más baratos. la cantidad máxima de memoria que el CPU puede direccionar es 232 octetos. si un CPU binario utiliza 32 bits para representar una dirección de memoria. aun cuando están disponibles CPU con un rango mucho más alto (de 16. Por ejemplo. el IBM System/370 usó un CPU que fue sobre todo de 32 bits. ver microcontroladores de 4 y 8 bits usados en aplicaciones modernas. y por lo tanto. Todo esto pueden ser consideraciones de diseño importantes para los dispositivos electrónicos. y cada dirección de memoria representa a un octeto (8 bits).maneja un rango de números que pueden ser representados por ocho dígitos binarios. pero usó precisión de 128 bits dentro de sus unidades de coma flotante para facilitar mayor exactitud y rango de números de coma flotante.nota 8 El rango del número entero también puede afectar el número de posiciones en memoria que el CPU puede direccionar (localizar). Por ello. en aplicaciones del extremo alto. . especialmente cuando el procesador está diseñado para usos de propósito general donde se requiere un razonable equilibrio entre la capacidad de números enteros y de coma flotante. conocida como señal de reloj. no es del todo infrecuente. Para ganar algunas de las ventajas proporcionadas por las longitudes de bits tanto más bajas. tamaño. Niveles más altos del rango de números enteros requieren más estructuras para manejar los dígitos adicionales. son de naturaleza síncrona. uso de energía. y de hecho. cada dígito teniendo dos valores posibles. como más altas. más complejidad.nota 9 Es decir. y por lo tanto disipan menos calor. usan menos energía. y muchos diseños modernos usan métodos de dirección mucho más complejos como paginación para localizar más memoria que su rango entero permitiría con un espacio de dirección plano. 32. o 4 GB. Esta es una vista muy simple del espacio de dirección del CPU. la mayoría de los dispositivos de lógica secuencial. Sin embargo. están diseñados y operan en función de una señal de sincronización. (más a menudo el espacio de dirección adicional). Esta señal. e incluso 128 bits).

7 Otro método de tratar algunos de los problemas de una señal global de reloj es la completa remoción de la misma. Otro importante problema cuando la velocidad del reloj aumenta dramáticamente. esto es frecuentemente considerado como difícil de implementar y por lo tanto no ve uso común fuera de diseños de muy baja potencia. En general. Al fijar el período del reloj a un valor bastante mayor sobre el retardo de la propagación del peor caso. es posible diseñar todo el CPU y la manera que mueve los datos alrededor de los "bordes" de la subida y bajada de la señal del reloj. Por lo tanto. en comparación con diseños síncronos .Calculando el tiempo máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones de los muchos circuitos de un CPU. Esto ha conducido que muchos CPU modernos requieran que se les proporcione múltiples señales de reloj idénticas. Este período debe ser más largo que la cantidad de tiempo que toma a una señal moverse. no solucionan todas las desventajas de CPUs globalmente síncronas. que implica apagar la señal del reloj a los componentes innecesarios. considerablemente más complejo el proceso del diseño. Velocidades de reloj más altas en CPUs cada vez más complejas hacen más difícil de mantener la señal del reloj en fase (sincronizada) a través de toda la unidad. así lo hace también la disipación de calor. Sin embargo. los diseñadores pueden seleccionar un período apropiado para la señal del reloj. es la cantidad de calor que es disipado por el CPU. una señal de reloj está sujeta a los retardos de cualquier otra señal eléctrica. esto también tiene la desventaja que todo el CPU debe esperar por sus elementos más lentos. provocando la conmutación de muchos componentes (cambio de estado) sin importar si están siendo usados en ese momento. Sin embargo. efectivamente desactivándolos. un componente que está cambiando de estado. tanto en una perspectiva de diseño. Un notable diseño de CPU tardío que utiliza una amplia compuerta del reloj para reducir los requisitos de potencia de la consola de videojuegos es la de la Xbox 360 basada en la PowerPC de IBM. a medida que la velocidad del reloj aumenta. aún cuando algunas unidades de la misma son mucho más rápidas. Esto tiene la ventaja de simplificar el CPU significativamente. causando que el CPU requiera soluciones de enfriamiento más efectivas. para evitar retardar una sola señal lo suficiente como para hacer al CPU funcionar incorrectamente. Sin embargo. como en una perspectiva de cantidad de componentes. usa más energía que un elemento en un estado estático. las mejoras arquitectónicas por sí solas. Mientras que quitar la señal global del reloj hace. Un método de tratar la conmutación de componentes innecesarios se llama el clock gating. o propagarse en el peor de los casos. Por ejemplo. Esta limitación ha sido compensada en gran parte por varios métodos de aumentar el paralelismo del CPU (ver abajo). La señal del reloj cambia constantemente. de muchas maneras.

Aunque se trate de algo infrecuente. Puesto que solamente una instrucción es ejecutada a la vez. ahora dos caminos se paralizan y aumenta el número de transistores no usados. Esto. solo puede. Como resultado. han resultado en una variedad de metodologías de diseño que hacen comportarse al CPU menos linealmente y más en paralelo. generalmente son usados dos términos para clasificar estas técnicas de diseño. el desempeño casi siempre es subescalar (menos de una instrucción por ciclo). Dos notables ejemplos de esto son el AMULET. Incluso la adición de una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. opera sobre y ejecuta una sola instrucción con una o dos piezas de datos a la vez. Sin embargo. Este diseño. usando ALU en conjunción con pipelining superescalar para alcanzar algunas ganancias en el desempeño aritmético. Este proceso da lugar a una ineficacia inherente en CPU subescalares. es evidente que por lo menos sobresalen en las operaciones matemáticas más simples. En lugar de un camino quedando congelado. Las tentativas de alcanzar un desempeño escalar y mejor. combinado con sus excelentes características de consumo de energía y disipación de calor. Mientras que no esté completamente claro si los diseños totalmente asincrónicos pueden desempeñarse a un nivel comparable o mejor que sus contrapartes síncronas. los hace muy adecuados para sistemas embebidos. que implementa la arquitectura del ARM. como por ejemplo. Este tipo de CPU.8 Paralelismo Artículo principal: Computación paralela Modelo de un CPU subescalar. En lugar de remover totalmente la señal del reloj. y el MiniMIPS. La descripción de la operación básica de un CPU ofrecida en la sección anterior describe la forma más simple que puede tomar un CPU. Cuando se refiere al paralelismo en los CPU. en donde los recursos de ejecución de la CPU pueden operar con solamente una instrucción a la vez. usualmente referido como subescalar. posiblemente. la CPU subescalar queda "paralizado" en instrucciones que toman más de un ciclo de reloj para completar su ejecución. compatible con el MIPS R3000. alcanzar el desempeño escalar (una instrucción por ciclo de reloj). algunos diseños de CPU permiten que ciertas unidades del dispositivo sean asincrónicas. Note que toma quince ciclos para terminar tres instrucciones.similares. los diseños asincrónicos (o sin reloj) tienen marcadas ventajas en el consumo de energía y la disipación de calor. todo el CPU debe esperar que esa instrucción se complete antes de proceder a la siguiente instrucción. las CPUs completas se han construido sin utilizar una señal global de reloj. .

Naturalmente.nota 10 ILP: Segmentación y arquitectura superescalar Artículos principales: Segmentación (electrónica) y Superescalar. . Sin embargo.El paralelismo a nivel de instrucción. Al leer y despachar dos instrucciones a la vez. lograr esto requiere circuitería adicional. Al dividir la ruta de ejecución en etapas discretas. Un procesador entubado puede llegar a ser casi completamente escalar. un máximo de dos instrucciones por ciclo pueden ser completadas. se debe retrasar una porción de la tubería de instrucción. pero no mucho. en inglés thread level parallelism (TLP). Tubería básica de cinco etapas. en la cual una instrucción es hecha más completa en cada etapa hasta que sale de la tubería de ejecución y es retirada. una condición llamada a menudo como conflicto de dependencia de datos. El paralelismo a nivel de hilo de ejecución. solamente inhibido por las abruptas paradas de la tubería (una instrucción durando más de un ciclo de reloj en una etapa). es decir. debe ser tomado un cuidado adicional para comprobar estas clases de condiciones. la tubería introduce la posibilidad de una situación donde es necesario terminar el resultado de la operación anterior para completar la operación siguiente. En el mejor de los casos. aumentar la utilización de los recursos de ejecución en la pastilla. Para hacer frente a esto. Esta es la forma más simple de una técnica conocida como segmentación (instruction pipelining en inglés). los procesadores entubados son más complejos que los subescalares. la tubería permite que más de una instrucción sea ejecutada en cualquier tiempo. y es utilizada en casi todas los CPU de propósito general modernos. Segmentación superescalar simple. en inglés instruction level parallelism (ILP). Esta separación puede ser comparada a una línea de ensamblaje. esta tubería puede sostener un ratio de completado de una instrucción por ciclo. Uno de los métodos más simples para lograr incrementar el paralelismo es comenzar los primeros pasos de leer y decodificar la instrucción antes de que la instrucción anterior haya terminado de ejecutarse. como en la efectividad relativa que producen en el aumento del desempeño de la CPU para una aplicación. Cada metodología se diferencia tanto en las maneras en las que están implementadas. que se propone incrementar el número de hilos (efectivamente programas individuales) que un CPU pueda ejecutar simultáneamente. y si esto ocurre. busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un CPU.

Frecuentemente. una instrucción por ciclo de reloj. más instrucciones serán completadas en un ciclo dado. en caso de que se hayan procesado una gran cantidad de datos del mismo tipo. ejecución especulativa. la CPU salta la captación y decodifica fases y por lo tanto aumenta considerablemente el rendimiento en ciertas ocasiones. cuanto más instrucciones un CPU superescalar es capaz de despachar simultáneamente a las unidades de ejecución en espera. Esto también crea técnicas para evitar peligros como la predicción de bifurcación. son despachadas a las unidades de ejecución disponibles. tan bien como despacharlas de una manera que mantenga ocupadas tantas unidades de ejecución como sea posible. pero su FPU no podía aceptar una instrucción por ciclo de reloj. y la ejecución fuera de orden. dando por resultado la capacidad para que varias instrucciones sean ejecutadas simultáneamente. pueden desactivar partes de la tubería de manera que cuando se ejecuta una sola sentencia muchas veces. cruciales para mantener altos niveles de desempeño. Esto requiere que la tubería de instrucción sea llenada tan a menudo como sea posible y se incrementa la necesidad. Tratando de predecir qué rama (o trayectoria) tomará una instrucción condicional. Diseños que se dice que son superescalares incluyen una larga tubería de instrucción y múltiples unidades de ejecución idénticas.Una mejora adicional sobre la idea del entubado de instrucción (instruction pipelining) condujo al desarrollo de un método que disminuye incluso más el tiempo ocioso de los componentes del CPU. El Intel Pentium original (P5) tenía dos ALUs superescalares que podían aceptar. Así el P5 era superescalar en la parte de números enteros pero no era superescalar de números de coma (o punto .9 En una tubería superescalar. múltiples instrucciones son leídas y pasadas a un despachador. sobre todo en los motores de programas altamente monótonos como el software de creación de video y procesamiento de fotografías. Fuera de la orden de ejecución cambia de algún modo el orden en que se ejecutan las instrucciones para reducir retardos debido a las dependencias de datos. la parte que no es superescalar sufre en el desempeño debido a las paradas de horario. La mayor parte de la dificultad en el diseño de una arquitectura superescalar de CPU descansa en crear un despachador eficaz. que decide si las instrucciones se pueden o no ejecutar en paralelo (simultáneamente). de cantidades significativas de caché de CPU. la ejecución especulativa proporciona aumentos modestos del desempeño al ejecutar porciones de código que no puede ser necesario después de completarse una operación condicional. cada una. la CPU puede minimizar el número de veces que todo el canal debe esperar hasta que se complete una instrucción condicional. De ser así. El despachador necesita poder determinar rápida y correctamente si las instrucciones pueden ejecutarse en paralelo. En general. También en el caso de instrucciones individuales de datos múltiples — los procesadores modernos. en las arquitecturas superescalares. En el caso donde una porción de la CPU es superescalar y una parte no lo es.

[decimal]) flotante. Esta área de investigación se conoce como computación paralela. reduciendo la cantidad de trabajo que el CPU debe realizar para darle un empuje significativo al ILP y por lo tanto reducir la complejidad del diseño. y por lo tanto produjo un significativo aumento en el desempeño de este tipo de instrucciones. En este esquema. se introdujeron en 1990. Una tecnología utilizada para este propósito fue el multiprocesamiento (MP). agregó capacidades superescalares a sus funciones de coma flotante. los esquemas tales como el non-uniform memory Access (acceso no uniforme a memoria) (NUMA) y los protocolos de coherencia basados en directorios. Cuando los procesadores y su interconexión hayan sido implementadas en un único chip de silicio. Tanto el diseño superescalar como el entubado simple aumentan el ILP de una CPU al permitir a un solo procesador completar la ejecución de instrucciones en ratios que sobrepasan una instrucción por ciclo (IPC). Para evitar visitas rancias de la memoria. Los sistemas SMP se limitan a un pequeño número de CPU mientras que los sistemas NUMA se han construido con miles de procesadores. el P6. El sucesor a la arquitectura del Pentium de Intel. cada CPU tiene un hardware adicional para mantener una visión constantemente actualizada de la memoria. La estrategia very long instruction word o VLIW. En los últimos años algo del énfasis en el diseño de computadores de alto ILP se ha movido del hardware del CPU hacia su interfaz de software. la tecnología se conoce como un procesador multinúcleo. causa a algún ILP a ser implícito directamente por el software. Paralelismo a nivel de hilos Otra estrategia para lograr el rendimiento es ejecutar varios programas o hilos en paralelo. o ISA. Inicialmente. el multiprocesamiento se construyó usando múltiples CPUs discretas y tableros para implementar la interconexión entre los procesadores. En la taxonomía de Flynn. casi todos los diseños de CPU de propósito general son superescalares. las CPU pueden cooperar en el mismo programa y los programas pueden migrar desde una CPU a otra. El puntapié 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. esta estrategia se conoce como múltiples instrucciones de varios datos o MIMD. y en la última década. Para aumentar el número de CPUs que cooperan más allá de unas pocas.nota 11 La mayoría de los modernos diseños de CPU son por lo menos algo superescalares. .

Algunos de los primeros ejemplos de esta tecnología implementaba procesamiento de entrada/salida tales como el acceso directo a memoria como un hilo separado del hilo computado. cuando se diseñaron sistemas para ejecutar múltiples hilos de computación en paralelo. Algunos ejemplos clásicos de este tipo de tareas son las aplicaciones multimedia (imágenes. así como muchos tipos de tareas científicas y de ingeniería. donde se ejecuta un hilo hasta que se paralice esperando que regresen los datos desde la memoria externa. una suma. en donde las instrucciones de múltiples hilos se ejecutan en paralelo dentro de un ciclo de reloj de la CPU. por ejemplo. que tratan una pieza de dato por cada instrucción. los procesadores vectoriales se ocupan de múltiples piezas de datos en el contexto de una instrucción. En este esquema. y sonido). decodificar. multiple data). las unidades de ejecución y el sistema de memoria incluyendo los cachés son compartidos entre varios hilos. ya que solo se replica un pequeño número de componentes dentro de una CPU para soportar MT en oposición a la totalidad de la CPU en el caso de MP. Este enfoque se considera más rentable que la del multiprocesamiento. Los procesadores de los que se ha hablado anteriormente son todos referidos como cierto tipo de dispositivo escalar. una CPU vectorial puede realizar una simple operación en . a ser realizado en un gran conjunto de datos. vídeo. o un producto escalar. En MT. La gran utilidad en crear CPU que se ocupen de vectores de datos radica en la optimización de tareas que tienden a requerir la misma operación. Mientras que una CPU escalar debe completar todo el proceso de leer. Un único programa podría tener varios hilos (o funciones) que podrían ser ejecutadas por separado o en paralelo. y ejecutar cada instrucción y valor en un conjunto de datos. Paralelismo de datos Artículos principales: Procesador vectorial y SIMD. la CPU tendría luego que cambiar rápidamente a otro hilo que está listo para funcionar. el interruptor muchas veces realiza un ciclo de reloj de la CPU. Un tipo de MT que se implementó es conocido como bloque multihilo. Estos dos esquemas de ocuparse de los datos son generalmente referidos respectivamente como SISD (single instruction. La desventaja de MT es que el soporte de hardware para multihilo es más visible para el software que la de MP y por lo tanto el software supervisor como el de los sistemas operativos tienen que someterse a los cambios más grandes para apoyar MT. como la tecnología UltraSPARC. Un menos común pero cada vez más importante paradigma de CPU (y de hecho. se reconoció que existía un paralelismo muy estrecho con un único programa.Posteriormente. En la década de 1970.nota 12 Como implica su nombre. single data) y SIMD (single instruction. se introdujo un enfoque más general a esta tecnología. Esta tecnología se conoce como multihilo (MT). Otro tipo de MT se denomina multihilo simultáneo. esto contrasta con los procesadores escalares. de computación en general) trata con vectores.

esto es solamente posible cuando la aplicación tiende a requerir muchos pasos que apliquen una operación a un conjunto grande de datos. Poco después de que comenzara a ser común incluir unidades de coma flotante en procesadores de uso general. como el Cray-1. que generalmente están asociadas a un ISA.un comparativamente grande conjunto de datos con una sola instrucción. que en esencia es conectar dos o más procesadores individuales (llamados núcleos en este sentido) en un solo circuito integrado. que juntos son los factores para las instrucciones por segundo (IPS) que el CPU puede rendir. Esto demostró ser un impedimento significativo para algunos desarrolladores de software.10 Muchos reportes de valores IPS han representado tasas de ejecución "pico" en secuencias de instrucciones artificiales con pocas ramas. Por supuesto. la velocidad del reloj (generalmente dada en múltiplos de hertz) y las instrucciones por ciclo de reloj (IPC). La mayoría de las primeras CPU vectoriales. fueron solamente para números enteros. algunas de las cuales requieren más tiempo para ejecutar que otras. ha llegado a ser significativa la necesidad de una cierta forma de SIMD en CPUs de propósito general. a medida que la multimedia se desplazó en gran parte a medios digitales. se han desarrollado varios exámenes estandarizados. El rendimiento de la jerarquía de memoria también afecta en gran medida al rendimiento del procesador. tales como SPECint muchas veces llamados "puntos de referencia" . también comenzaron a aparecer especificaciones e implementaciones de unidades de ejecución SIMD para las CPU de uso general. entre muchos otros factores. para este fin. Algunas de estas primeras especificaciones SIMD. estos primeros diseños fueron refinados y rehechos en alguna de las comunes. El desempeño de procesamiento de las computadoras se incrementa utilizando procesadores multinúcleo. se asociaron casi exclusivamente a aplicaciones de investigación científica y criptografía.para tratar de medir el rendimiento real efectivo en aplicaciones de uso cotidiano. un tema muy poco tenido en cuenta en los cálculos de MIPS. Algunos ejemplos modernos notables son el SSE de Intel y el AltiVec relacionado con el PowerPC (también conocido como VMX).nota 13 Desempeño Véase también: Benchmark (informática) El "desempeño" (performance) o la velocidad de un procesador depende de. Sin embargo. modernas especificaciones SIMD. como el MMX de Intel. mientras que las cargas de trabajo realistas consisten en una combinación de instrucciones y de aplicaciones.11 Idealmente. un procesador de doble núcleo sería casi dos veces tan potente . ya que muchas de las aplicaciones que se beneficiaban del SIMD trataban sobre todo con números de coma flotante. Progresivamente. Debido a estos problemas.

[cita requerida] debido a la implementación de algoritmos imperfectos de software. Estos núcleos pueden considerarse como diferentes plantas en una planta de procesamiento. supervisar los niveles de rendimiento y la utilización del hardware se fue convirtiendo gradualmente en una tarea más compleja. Como respuesta. dual-core. solo alrededor del 50%. que implican el intercambio de recursos reales de la CPU mientras que el objetivo de una mayor utilización. En ocasiones.12 El aumento del número de núcleos en un procesador (es decir. estos núcleos se manejan las mismas tareas que los núcleos adyacentes a ellos si un solo núcleo no es suficiente para manejar la información. un ejemplo es la tecnología Performance Counter Monitor ("Monitor de contador de rendimiento") de Intel . algunas CPUs implementan lógica de hardware adicional que controla la utilización real de las diversas partes de una CPU y proporciona varios contadores accesibles a software. En la práctica. con el manejo de cada piso una tarea diferente. Debido a las capacidades específicas de las CPU modernas. la ganancia de desempeño es mucho menor. etc que pueden tomar un "peaje" en la CPU (Central Processing Unit) cuando se abruma. etc) aumenta la carga de trabajo que se puede manejar.como un procesador de núcleo único. quad-core. interrupciones. como HyperThreading y Uncore. Esto significa que el procesador ahora puede manejar numerosos eventos asíncronos.