Beruflich Dokumente
Kultur Dokumente
las siglas CPU, del ingl�s: central processing unit), es el hardware dentro de un
ordenador u otros dispositivos programables, que interpreta las instrucciones de un
programa inform�tico mediante la realizaci�n de las operaciones b�sicas
aritm�ticas, l�gicas y de entrada/salida del sistema. El t�rmino, 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.1? La forma, el dise�o de CPU y la implementaci�n de las CPU ha
cambiado dr�sticamente desde los primeros ejemplos, pero su operaci�n fundamental
sigue siendo la misma.
Un ordenador puede tener m�s de una CPU; esto se llama multiprocesamiento. Todas
las CPU modernas son microprocesadores, lo que significa que contienen un solo
circuito integrado (chip). Algunos circuitos integrados pueden contener varias CPU
en un solo chip; estos son denominados procesadores multin�cleo. Un circuito
integrado que contiene una CPU tambi�n puede contener los dispositivos perif�ricos,
y otros componentes de un sistema inform�tico; a esto se llama un sistema en un
chip (SoC).
Dos componentes t�picos de una CPU son la unidad aritm�tico l�gica (ALU), que
realiza operaciones aritm�ticas y l�gicas, y la unidad de control (CU), que extrae
instrucciones de la memoria, las decodifica y las ejecuta, llamando a la ALU cuando
sea necesario.
�ndice
1 Historia
1.1 CPU de transistores y de circuitos integrados discretos
1.2 Microprocesadores
2 Operaci�n
2.1 Fetch
2.2 Decode
2.3 Execute
2.4 Writeback
3 Dise�o e implementaci�n
3.1 Rango de enteros
3.2 Frecuencia de reloj
3.3 Paralelismo
3.3.1 ILP: Segmentaci�n y arquitectura superescalar
3.3.2 Paralelismo a nivel de hilos
3.3.3 Paralelismo de datos
4 Desempe�o
5 V�ase tambi�n
6 Notas
7 Referencias
8 Bibliograf�a
9 Enlaces externos
9.1 Dise�os de microprocesador
9.2 Lectura adicional
Historia
Las primeras CPU fueron dise�adas a medida como parte de un ordenador m�s grande,
generalmente un ordenador �nico en su especie. Sin embargo, este m�todo de dise�ar
las CPU a 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 varios prop�sitos. Esta tendencia de
estandarizaci�n comenz� generalmente en la era de los transistores discretos,
computadoras centrales y microcomputadoras y fue acelerada r�pidamente con la
popularizaci�n del circuito integrado (IC), este ha permitido que sean dise�ados y
fabricados CPU m�s complejas en espacios peque�os en la orden de nan�metros. 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. Los microprocesadores modernos
aparecen en todo, desde autom�viles hasta tel�fonos m�viles o celulares y juguetes
de ni�os.
Si bien von Neumann muchas veces acreditado por el dise�o de la computadora con
programa almacenado debido a su dise�o del EDVAC, otros antes que �l, como Konrad
Zuse, hab�an sugerido y aplicado ideas similares. La denominada arquitectura
Harvard del Harvard Mark I, que se complet� antes de EDVAC, tambi�n utiliz� un
dise�o de programa almacenado usando cinta de papel perforada en vez de memoria
electr�nica. 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, mientras que el primero utiliza el mismo espacio de memoria
para ambos. La mayor�a de los CPU modernos son de dise�o von Neumann, pero los CPU
con arquitectura Harvard se ven as�, sobre todo en aplicaciones embebidas; por
ejemplo, los microcontroladores Atmel AVR son procesadores de arquitectura Harvard.
Los rel�s el�ctricos y los tubos de vac�o (v�lvulas termoi�nicas) eran usados
com�nmente como elementos de conmutaci�n; un ordenador �til requiere miles o
decenas de miles de dispositivos de conmutaci�n. La velocidad global de un sistema
depende de la velocidad de los conmutadores. Los ordenadores de tubo, como el
EDVAC, tendieron en tener un promedio de ocho horas entre fallos, mientras que los
ordenadores de rel�s, (anteriores y m�s lentos), como el Harvard Mark I, fallaban
muy raramente.1? Al final, 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. La mayor parte de estas tempranas CPU s�ncronas
corr�an en frecuencias de reloj bajas comparadas con los modernos dise�os
microelectr�nicos. Eran muy comunes en este tiempo las frecuencias de la se�al del
reloj con un rango desde 100 kHz hasta 4 MHz, limitado en gran parte por la
velocidad de los dispositivos de conmutaci�n con los que fueron construidos.
Microprocesadores
Art�culo principal: Microprocesador
CPU Intel Core i5 en una placa madre del ordenador port�til Vaio serie E (a la
derecha, debajo del tubo termosif�n bif�sico.
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. Desde
la introducci�n del primer microprocesador comercialmente disponible, el Intel
4004, en 1970 y del primer microprocesador ampliamente usado, el Intel 8080, en
1974, esta clase de CPU ha desplazado casi totalmente el resto de los m�todos de
implementaci�n de la Unidad Central de procesamiento. 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. Combinado con el advenimiento y el
eventual vasto �xito de la ahora ubicua computadora personal, el t�rmino "CPU" es
aplicado ahora casi exclusivamentenota 1? a los microprocesadores.
Decode
En el paso de decodificaci�n, la instrucci�n es dividida en partes que tienen
significado para otras unidades de la CPU. 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.nota 4? A menudo, un grupo de n�meros en la
instrucci�n, llamados opcode, indica qu� operaci�n realizar. Las partes restantes
del n�mero usualmente proporcionan informaci�n requerida para esa instrucci�n, como
por ejemplo, operandos para una operaci�n de adici�n. Tales operandos se pueden dar
como un valor constante (llamado valor inmediato), o como un lugar para localizar
un valor, que seg�n lo determinado por alg�n modo de direcci�n, puede ser un
registro o una direcci�n de memoria. En dise�os m�s viejos las unidades del CPU
responsables de decodificar la instrucci�n eran dispositivos de hardware fijos. Sin
embargo, en CPUs e ISAs m�s abstractos y complicados, es frecuentemente usado un
microprograma para ayudar a traducir instrucciones en varias se�ales de
configuraci�n para el CPU. 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.
Execute
Writeback
El paso final, la escritura, simplemente �escribe� los resultados del paso de
ejecuci�n a una cierta forma de memoria. Muy a menudo, los resultados son escritos
a alg�n registro interno del CPU para acceso r�pido por subsecuentes instrucciones.
En otros casos los resultados pueden ser escritos a una memoria principal m�s lenta
pero m�s barata y m�s grande. Algunos tipos de instrucciones manipulan el contador
de programa en lugar de directamente producir datos de resultado. Estas son
llamadas generalmente "saltos" (jumps) y facilitan comportamientos como bucles, la
ejecuci�n condicional de programas (con el uso de saltos condicionales), y
funciones en programas.nota 5? Muchas instrucciones tambi�n cambiar�n el estado de
d�gitos en un registro de "banderas". Estas banderas pueden ser usadas para
influenciar c�mo se comporta un programa, puesto que a menudo indican el resultado
de varias operaciones. Por ejemplo, un tipo de instrucci�n de "comparaci�n"
considera dos valores y fija un n�mero, en el registro de banderas, de acuerdo a
cu�l es el mayor. Entonces, esta bandera puede ser usada por una posterior
instrucci�n de salto para determinar el flujo de programa.
Dise�o e implementaci�n
V�anse tambi�n: Arquitectura de computadoras y Circuito digital.
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. Algunas de las primeras
calculadoras digitales usaron, para representar n�meros internamente, un modelo
el�ctrico del sistema de numeraci�n decimal com�n (base diez). Algunas otras
computadoras han usado sistemas de numeraci�n m�s ex�ticos como el ternario (base
tres). Casi todos los CPU modernos representan los n�meros en forma binaria, en
donde cada d�gito es representado por una cierta cantidad f�sica de dos valores,
como un voltaje "alto" o "bajo".nota 7?
El rango del n�mero entero tambi�n puede afectar el n�mero de posiciones en memoria
que el CPU puede direccionar (localizar). Por ejemplo, si un CPU binario utiliza 32
bits para representar una direcci�n de memoria, y cada direcci�n de memoria
representa a un octeto (8 bits), la cantidad m�xima de memoria que el CPU puede
direccionar es 232 octetos, o 4 GB. Esta es una vista muy simple del espacio de
direcci�n del CPU, 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.
Niveles m�s altos del rango de n�meros enteros requieren m�s estructuras para
manejar los d�gitos adicionales, y por lo tanto, m�s complejidad, tama�o, uso de
energ�a, y generalmente costo. Por ello, no es del todo infrecuente, ver
microcontroladores de 4 y 8 bits usados en aplicaciones modernas, aun cuando est�n
disponibles CPU con un rango mucho m�s alto (de 16, 32, 64, e incluso 128 bits).
Los microcontroladores m�s simples son generalmente m�s baratos, usan menos
energ�a, y por lo tanto disipan menos calor. Todo esto pueden ser consideraciones
de dise�o importantes para los dispositivos electr�nicos. Sin embargo, en
aplicaciones del extremo alto, los beneficios producidos por el rango adicional,
(m�s a menudo el espacio de direcci�n adicional), son m�s significativos y con
frecuencia afectan las opciones del dise�o. Para ganar algunas de las ventajas
proporcionadas por las longitudes de bits tanto m�s bajas, como m�s altas, muchas
CPUs est�n dise�adas con anchos de bit diferentes para diferentes unidades del
dispositivo. Por ejemplo, el IBM System/370 us� un CPU que fue sobre todo de 32
bits, 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.4? Muchos dise�os
posteriores de CPU usan una mezcla de ancho de bits similar, 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.
Frecuencia de reloj
Art�culo principal: Frecuencia de reloj
La mayor�a de los CPU, y de hecho, la mayor�a de los dispositivos de l�gica
secuencial, son de naturaleza s�ncrona.nota 9? Es decir, est�n dise�ados y operan
en funci�n de una se�al de sincronizaci�n. Esta se�al, conocida como se�al de
reloj, usualmente toma la forma de una onda cuadrada peri�dica. 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, los dise�adores pueden seleccionar
un per�odo apropiado para la se�al del reloj.
Este per�odo debe ser m�s largo que la cantidad de tiempo que toma a una se�al
moverse, o propagarse en el peor de los casos. 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. Esto tiene la ventaja de simplificar el CPU
significativamente, tanto en una perspectiva de dise�o, como en una perspectiva de
cantidad de componentes. Sin embargo, esto tambi�n tiene la desventaja que todo el
CPU debe esperar por sus elementos m�s lentos, aun cuando algunas unidades de la
misma son mucho m�s r�pidas. Esta limitaci�n ha sido compensada en gran parte por
varios m�todos de aumentar el paralelismo del CPU (ver abajo).
Sin embargo, las mejoras arquitect�nicas por s� solas, no solucionan todas las
desventajas de CPUs globalmente s�ncronas. Por ejemplo, una se�al de reloj est�
sujeta a los retardos de cualquier otra se�al el�ctrica. 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. Esto ha conducido que
muchos CPU modernos requieran que se les proporcione m�ltiples se�ales de reloj
id�nticas, para evitar retardar una sola se�al lo suficiente como para hacer al CPU
funcionar incorrectamente. Otro importante problema cuando la velocidad del reloj
aumenta dram�ticamente, es la cantidad de calor que es disipado por el CPU. La
se�al del reloj cambia constantemente, provocando la conmutaci�n de muchos
componentes (cambio de estado) sin importar si est�n siendo usados en ese momento.
En general, un componente que est� cambiando de estado, usa m�s energ�a que un
elemento en un estado est�tico. Por lo tanto, a medida que la velocidad del reloj
aumenta, as� lo hace tambi�n la disipaci�n de calor, causando que el CPU requiera
soluciones de enfriamiento m�s efectivas.
Paralelismo
Art�culo principal: Computaci�n paralela
Modelo de un CPU subescalar. Note que toma quince ciclos para terminar tres
instrucciones.
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. Este tipo de CPU, usualmente
referido como subescalar, opera sobre y ejecuta una sola instrucci�n con una o dos
piezas de datos a la vez.
Este proceso da lugar a una ineficacia inherente en CPU subescalares. Puesto que
solamente una instrucci�n es ejecutada a la vez, todo el CPU debe esperar que esa
instrucci�n se complete antes de proceder a la siguiente instrucci�n. Como
resultado, la CPU subescalar queda "paralizado" en instrucciones que toman m�s de
un ciclo de reloj para completar su ejecuci�n. Incluso la adici�n de una segunda
unidad de ejecuci�n (ver abajo) no mejora mucho el desempe�o. En lugar de un camino
quedando congelado, ahora dos caminos se paralizan y aumenta el n�mero de
transistores no usados. Este dise�o, en donde los recursos de ejecuci�n de la CPU
pueden operar con solamente una instrucci�n a la vez, solo puede, posiblemente,
alcanzar el desempe�o escalar (una instrucci�n por ciclo de reloj). Sin embargo, el
desempe�o casi siempre es subescalar (menos de una instrucci�n por ciclo).
Tuber�a b�sica de cinco etapas. En el mejor de los casos, 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. Esta es la forma m�s simple de una t�cnica
conocida como segmentaci�n (instruction pipelining en ingl�s), y es utilizada en
casi todas los CPU de prop�sito general modernos. Al dividir la ruta de ejecuci�n
en etapas discretas, la tuber�a permite que m�s de una instrucci�n sea ejecutada en
cualquier tiempo. Esta separaci�n puede ser comparada a una l�nea de ensamblaje, 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 del mismo.
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).nota 11? La mayor�a de los modernos
dise�os de CPU son por lo menos algo superescalares, y en la �ltima d�cada, casi
todos los dise�os de CPU de prop�sito general son superescalares. 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, o ISA. La estrategia very long
instruction word o VLIW, causa a alg�n ILP a ser impl�cito directamente por el
software, 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.
Este enfoque se considera m�s rentable que la del multiprocesamiento, 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. En MT, las unidades de
ejecuci�n y el sistema de memoria incluyendo los cach�s son compartidos entre
varios hilos. 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. Un tipo de MT que se implement� es conocido como bloque multihilo,
donde se ejecuta un hilo hasta que se paralice esperando que regresen los datos
desde la memoria externa. En este esquema, 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, como la tecnolog�a UltraSPARC. Otro tipo de MT
se denomina multihilo simult�neo, en donde las instrucciones de m�ltiples hilos se
ejecutan en paralelo dentro de un ciclo de reloj de la CPU.
Paralelismo de datos
Art�culos principales: Procesador vectorial y SIMD.
Un menos com�n pero cada vez m�s importante paradigma de CPU (y de hecho, de
computaci�n en general) trata con vectores. Los procesadores de los que se ha
hablado anteriormente son todos referidos como cierto tipo de dispositivo
escalar.nota 12? Como implica su nombre, los procesadores vectoriales se ocupan de
m�ltiples piezas de datos en el contexto de una instrucci�n, esto contrasta con los
procesadores escalares, que tratan una pieza de dato por cada instrucci�n. Estos
dos esquemas de ocuparse de los datos son generalmente referidos respectivamente
como SISD (single instruction, single data) y SIMD (single instruction, multiple
data). 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, por ejemplo,
una suma, o un producto escalar, a ser realizado en un gran conjunto de datos.
Algunos ejemplos cl�sicos de este tipo de tareas son las aplicaciones multimedia
(im�genes, v�deo, y sonido), as� como muchos tipos de tareas cient�ficas y de
ingenier�a. Mientras que una CPU escalar debe completar todo el proceso de leer,
decodificar, y ejecutar cada instrucci�n y valor en un conjunto de datos, una CPU
vectorial puede realizar una simple operaci�n en un comparativamente grande
conjunto de datos con una sola instrucci�n. Por supuesto, esto es solamente posible
cuando la aplicaci�n tiende a requerir muchos pasos que apliquen una operaci�n a un
conjunto grande de datos.
Desempe�o
V�ase tambi�n: Benchmark (inform�tica)
El "desempe�o" (performance) o la velocidad de un procesador depende de, entre
muchos otros factores, la velocidad del reloj (generalmente dada en m�ltiplos de
hertz) y las instrucciones por ciclo de reloj (IPC), que juntos son los factores
para las instrucciones por segundo (IPS) que el CPU puede rendir.10? Muchos
reportes de valores IPS han representado tasas de ejecuci�n "pico" en secuencias de
instrucciones artificiales con pocas ramas, mientras que las cargas de trabajo
realistas consisten en una combinaci�n de instrucciones y de aplicaciones, algunas
de las cuales requieren m�s tiempo para ejecutar que otras. El rendimiento de la
jerarqu�a de memoria tambi�n afecta en gran medida al rendimiento del procesador,
un tema muy poco tenido en cuenta en los c�lculos de MIPS. Debido a estos
problemas, para este fin, se han desarrollado varios ex�menes estandarizados, tales
como SPECint muchas veces llamados "puntos de referencia" - para tratar de medir el
rendimiento real efectivo en aplicaciones de uso cotidiano.