unidad central de procesamiento

13
Unidad central de procesamiento Vista superior de una CPU Intel 80486DX2 en un paquete PGA de cerámica. Vista posterior de una Intel 80486DX2. La unidad central de procesamiento (del inglés cen- tral processing unit o CPU), es el hardware dentro de una computadora 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 en sí mismo y su acrónimo han estado en uso en la in- dustria de la Informática por lo menos desde el principio de los años 1960. [1] La forma, el diseño y la implemen- tación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental sigue siendo la misma. Una computadora puede tener más de una CPU; esto se llama multiprocesamiento. Todas las CPU modernas son microprocesadores, lo que significa que contienen un so- lo circuito integrado (chip). Algunos circuitos integrados pueden contener varias CPU en un solo chip; estos son denominados procesadores multinúcleo. Un circuito inte- grado que contiene una CPU también puede contener los dispositivos periféricos, y otros componentes de un sis- tema informático; a esto se llama un sistema en un chip (SoC). Dos componentes típicos de una CPU son la unidad arit- mético lógica (ALU), que realiza operaciones aritméticas y lógicas, y la unidad de control (CU), que extrae instruc- ciones de la memoria, las decodifica y las ejecuta, llaman- do a la ALU cuando sea necesario. No todos los sistemas computacionales se basan en una unidad central de procesamiento. Una matriz de proce- sador o procesador vectorial tiene múltiples elementos cómputo paralelo, sin una unidad considerada el “centro”. En el modelo de computación distribuido, se resuelven problemas mediante un conjunto interconectado y distri- buido de procesadores. 1 Historia El EDVAC, una de las primeras computadoras de programas al- macenados electrónicamente. Ordenadores, como el ENIAC tenían que ser físicamen- te recableados para realizar diferentes tareas, que cau- saron que estas máquinas se llamarán “ordenadores de programas fijo”. Dado que el término “CPU” general- mente se define como un dispositivo para la ejecución de software (programa informático), los primeros dispositi- 1

Upload: leila-morales

Post on 08-Nov-2015

22 views

Category:

Documents


0 download

DESCRIPTION

Unidad

TRANSCRIPT

  • Unidad central de procesamiento

    Vista superior de una CPU Intel 80486DX2 en unpaquete PGA de cermica.

    Vista posterior de una Intel 80486DX2.

    La unidad central de procesamiento (del ingls cen-tral processing unit o CPU), es el hardware dentro deuna computadora u otros dispositivos programables, queinterpreta las instrucciones de un programa informticomediante la realizacin de las operaciones bsicas aritm-ticas, lgicas y de entrada/salida del sistema. El trminoen s mismo y su acrnimo han estado en uso en la in-dustria de la Informtica por lo menos desde el principiode los aos 1960.[1] La forma, el diseo y la implemen-tacin de las CPU ha cambiado drsticamente desde losprimeros ejemplos, pero su operacin fundamental siguesiendo la misma.Una computadora puede tener ms de una CPU; esto sellama multiprocesamiento. Todas las CPU modernas sonmicroprocesadores, lo que signica que contienen un so-lo circuito integrado (chip). Algunos circuitos integradospueden contener varias CPU en un solo chip; estos sondenominados procesadores multincleo. Un circuito inte-grado que contiene una CPU tambin puede contener losdispositivos perifricos, y otros componentes de un sis-tema informtico; a esto se llama un sistema en un chip(SoC).

    Dos componentes tpicos de una CPU son la unidad arit-mtico lgica (ALU), que realiza operaciones aritmticasy lgicas, y la unidad de control (CU), que extrae instruc-ciones de la memoria, las decodica y las ejecuta, llaman-do a la ALU cuando sea necesario.No todos los sistemas computacionales se basan en unaunidad central de procesamiento. Una matriz de proce-sador o procesador vectorial tiene mltiples elementoscmputo paralelo, sin una unidad considerada el centro.En el modelo de computacin distribuido, se resuelvenproblemas mediante un conjunto interconectado y distri-buido de procesadores.

    1 Historia

    El EDVAC, una de las primeras computadoras de programas al-macenados electrnicamente.

    Ordenadores, como el ENIAC tenan que ser fsicamen-te recableados para realizar diferentes tareas, que cau-saron que estas mquinas se llamarn ordenadores deprogramas jo. Dado que el trmino CPU general-mente se dene como un dispositivo para la ejecucin desoftware (programa informtico), los primeros dispositi-

    1

  • 2 1 HISTORIA

    vos que con razn podramos llamar CPU vinieron con eladvenimiento del ordenador con programa almacenado.La idea de un ordenador con programa almacenado yaestaba presente en el diseo de John Presper Eckert y enel ENIAC de John William Mauchly, pero se omiti ini-cialmente de modo que pudiera ser terminado antes. El 30de junio de 1945, antes de que se construyera la ENIAC,el matemtico John von Neumann distribuy el trabajotitulado First Draft of a Report on the EDVAC (PrimerBorrador de un Reporte sobre el EDVAC). Fue el esbozode un ordenador de programa almacenado que en agostode 1949 fue nalmente terminado.[2] EDVAC fue dise-ado para realizar un cierto nmero de instrucciones (uoperaciones) de varios tipos. Signicativamente, los pro-gramas escritos para el EDVAC se crearon para ser alma-cenados en la memoria de alta velocidad del ordenador yno especicado por el cableado fsico del ordenador. Estosuper una severa limitacin del ENIAC, que era el im-portante tiempo y esfuerzo requerido para volver a con-gurar el equipo para realizar una nueva tarea. Con el dise-o de von Neumann, el programa o software, que corraEDVAC podra ser cambiado simplemente cambiando elcontenido de la memoria. Sin embargo, EDVAC no fue elprimer ordenador de programa almacenado; la MquinaExperimental de Pequea Escala de Mnchester, un pe-queo prototipo de ordenador de programa almacenado,corri su primer programa el 21 de junio de 1948[3] y laManchester Mark I corri su primer programa en la no-che del 16 hasta el 17 junio de 1949.Las primeras CPU fueron diseadas a medida como par-te de un ordenador ms grande, generalmente un orde-nador nico en su especie. Sin embargo, este mtodo dedisear las CPU a medida, para una aplicacin particu-lar, ha desaparecido en gran parte y se ha sustituido porel desarrollo de clases de procesadores baratos y estanda-rizados adaptados para uno o varios propsitos. Esta ten-dencia de estandarizacin comenz generalmente en laera de los transistores discretos, computadoras centralesy microcomputadoras y fue acelerada rpidamente conla popularizacin del circuito integrado (IC), ste ha per-mitido que sean diseados y fabricados CPU ms com-plejas en espacios pequeos en la orden de nanmetros).Tanto la miniaturizacin como la estandarizacin de lasCPU han aumentado la presencia de estos dispositivosdigitales en la vida moderna mucho ms all de las apli-caciones limitadas de mquinas de computacin dedica-das. Los microprocesadores modernos aparecen en todo,desde automviles hasta telfonos mviles o celulares yjuguetes de nios.Si bien von Neumann muchas veces acreditado por el di-seo de la computadora con programa almacenado de-bido a su diseo del EDVAC, otros antes que l, comoKonrad Zuse, haban sugerido y aplicado ideas similares.La denominada arquitectura Harvard del Harvard Mark I,que se complet antes de EDVAC, tambin utiliz un di-seo de programa almacenado usando cinta de papel per-forada en vez de memoria electrnica. La diferencia clave

    entre las arquitecturas de von Neumann y la de Harvardes que la ltima separa el almacenamiento y tratamientode instrucciones de la CPU y los datos, mientras que elprimero utiliza el mismo espacio de memoria para am-bos. La mayora de los CPU modernos son de diseo vonNeumann, pero los CPU con arquitectura Harvard se venas, sobre todo en aplicaciones embebidas; por ejemplo,los microcontroladores Atmel AVR son procesadores dearquitectura Harvard.Los rels elctricos y los tubos de vaco (vlvulas termoi-nicas) eran usados comnmente como elementos de con-mutacin; un ordenador til requiere miles o decenas demiles de dispositivos de conmutacin. La velocidad glo-bal de un sistema depende de la velocidad de los con-mutadores. Los ordenadores de tubo, como el EDVAC,tendieron en tener un promedio de ocho horas entre fa-llos, mientras que los ordenadores de rels, (anterioresy ms lentos), como el Harvard Mark I, fallaban muyraramente.[1] Al nal, los CPU basados en tubo llegaron aser dominantes porque las signicativas ventajas de velo-cidad producidas generalmente pesaban ms que los pro-blemas de conabilidad. La mayor parte de estas tempra-nas CPU sncronas corran en frecuencias de reloj bajascomparadas con los modernos diseos microelectrnicos.Eran muy comunes en este tiempo las frecuencias de laseal del reloj con un rango desde 100 kHz hasta 4 MHz,limitado en gran parte por la velocidad de los dispositivosde conmutacin con los que fueron construidos.

    1.1 CPU de transistores y de circuitos in-tegrados discretos

    CPU, memoria de ncleo e interfaz de bus externo de un MSIPDP-8/I. Hecho de circuitos integrados de mediana escala.

    La complejidad del diseo de las CPU aument junto confacilidad de la construccin de dispositivos electrnicosms pequeos y conables. La primera de esas mejorasvino con el advenimiento del transistor. Las CPU transis-torizadas durante los aos 1950 y los aos 1960 no tuvie-ron que ser construidos con elementos de conmutacinabultados, no ables y frgiles, como los tubos de vaco y

  • 1.2 Microprocesadores 3

    los rels elctricos. Con esta mejora, fueron construidasCPU ms complejas y ms conables sobre una o variastarjetas de circuito impreso que contenan componentesdiscretos (individuales).Durante este perodo, gan popularidad un mtodo de fa-bricar muchos transistores en un espacio compacto. Elcircuito integrado (IC) permiti que una gran cantidadde transistores fueran fabricados en una simple oblea ba-sada en semiconductor o chip. Al principio, solamentecircuitos digitales muy bsicos, no especializados, comolas puertas NOR fueron miniaturizados en IC. Las CPUbasadas en estos IC de bloques de construccin general-mente son referidos como dispositivos de pequea escalade integracin small-scale integration (SSI). Los cir-cuitos integrados SSI, como los usados en el computadorgua del Apollo (Apollo Guidance Computer), usualmen-te contenan transistores que se contaban en nmeros demltiplos de diez. Construir un CPU completo usandoIC SSI requera miles de chips individuales, pero toda-va consuma mucho menos espacio y energa que dise-os anteriores de transistores discretos. A medida que latecnologa microelectrnica avanz, en los IC fue coloca-do un nmero creciente de transistores, disminuyendo asla cantidad de IC individuales necesarios para una CPUcompleta. Los circuitos integrados MSI y el LSI (de me-diana y gran escala de integracin) aumentaron el nmerode transistores a cientos y luego a miles.En 1964, IBM introdujo su arquitectura de ordenadorSystem/360, que fue usada en una serie de ordenadoresque podan ejecutar los mismos programas con veloci-dades y desempeos diferentes. Esto fue signicativo enun tiempo en que la mayora de los ordenadores elec-trnicos eran incompatibles entre s, incluso las hechaspor el mismo fabricante. Para facilitar esta mejora, IBMutiliz el concepto de microprograma, a menudo llama-do microcdigo, ampliamente usado an en las CPUmodernas.[4] La arquitectura System/360 era tan popu-lar que domin el mercado del mainframe durante las si-guientes dcadas y dej una herencia que todava an per-dura en los ordenadores modernos, como el IBM zSeries.En el mismo ao de 1964, Digital Equipment Corporation(DEC) introdujo otro ordenador que sera muy inuyen-te, dirigido a los mercados cientcos y de investigacin,el PDP-8. DEC introducira ms adelante la muy popu-lar lnea del PDP-11, que originalmente fue construidocon IC SSI pero eventualmente fue implementado concomponentes LSI cuando se convirtieron en prcticos. Enfuerte contraste con sus precursores hechos con tecnolo-ga SSI y MSI, la primera implementacin LSI del PDP-11 contena una CPU integrada nicamente por cuatrocircuitos integrados LSI.[5]

    Los ordenadores basados en transistores tenan variasventajas frente a sus predecesores. Aparte de facilitar unacreciente abilidad y un menor consumo de energa, lostransistores tambin permitan que CPU operara a veloci-dades mucho ms altas debido al corto tiempo de conmu-tacin de un transistor en comparacin a un tubo o rel.

    Gracias tanto a esta creciente abilidad como al dramti-co incremento de velocidad de los elementos de conmuta-cin que por este tiempo eran casi exclusivamente transis-tores, se fueron alcanzando frecuencias de reloj de la CPUde decenas de megahertz. Adems, mientras que las CPUde transistores discretos y circuitos integrados se usabancomnmente, comenzaron a aparecer los nuevos diseosde alto rendimiento como procesadores vectoriales SIMD(single instruction multiple data instruccin nica, datosmltiples). Estos primeros diseos experimentales dieronlugar ms adelante a la era de los superordenadores espe-cializados, como los hechos por Cray Inc.

    1.2 Microprocesadores

    Oblea de un microprocesador Intel 80486DX2 (tamao:126,75 mm) en su empaquetado.

    CPU Intel Core i5 en una placa madre del ordenadorporttil Vaio serie E (a la derecha, debajo del tubotermosifn bifsico.

    En la dcada de 1970 los inventos fundamentales deFederico Faggin (ICs Silicon Gate MOS con puertas au-toalineadas junto con su nueva metodologa de diseode lgica aleatoria) cambi el diseo e implementacinde las CPU para siempre. Desde la introduccin del pri-mer microprocesador comercialmente disponible, el Intel4004, en 1970 y del primer microprocesador ampliamen-te usado, el Intel 8080, en 1974, esta clase de CPU hadesplazado casi totalmente el resto de los mtodos deimplementacin de la Unidad Central de procesamiento.Los fabricantes de mainframes y miniordenadores de esetiempo lanzaron programas de desarrollo de IC propie-tarios para actualizar sus arquitecturas de computadorasms viejas y eventualmente producir microprocesadores

  • 4 2 OPERACIN

    con conjuntos de instrucciones que eran retrocompatiblescon sus hardwares y softwares ms viejos. Combinadocon el advenimiento y el eventual vasto xito de la ahoraubicua computadora personal, el trmino CPU es apli-cado ahora casi exclusivamente[nota 1] a los microprocesa-dores.Las generaciones previas de CPU fueron implementadascomo componentes discretos y numerosos circuitos in-tegrados de pequea escala de integracin en una o mstarjetas de circuitos. Por otro lado, los microprocesado-res son CPU fabricados con un nmero muy pequeode IC; usualmente solo uno. El tamao ms pequeo delCPU, como resultado de estar implementado en una sim-ple pastilla, signica tiempos de conmutacin ms rpi-dos debido a factores fsicos como el decrecimiento dela capacitancia parsita de las puertas. Esto ha permitidoque los microprocesadores sncronos tengan tiempos dereloj con un rango de decenas de megahercios a varios gi-gahercios. Adicionalmente, como ha aumentado la capa-cidad de construir transistores excesivamente pequeosen un IC, la complejidad y el nmero de transistores enun simple CPU tambin se ha incrementado dramtica-mente. Esta tendencia ampliamente observada es descritapor la ley de Moore, que ha demostrado hasta la fecha,ser una prediccin bastante exacta del crecimiento de lacomplejidad de los CPUs y otros IC.[6]

    Mientras que, en los pasados sesenta aos han cambiadodrsticamente, la complejidad, el tamao, la construcciny la forma general de la CPU, es notable que el diseoy el funcionamiento bsico no ha cambiado demasiado.Casi todos los CPU comunes de hoy se pueden describircon precisin como mquinas de programa almacenadode von Neumann.[nota 2] A medida que la ya menciona-da ley del Moore contina mantenindose verdadera,[6]se han presentado preocupaciones sobre los lmites de latecnologa de transistor del circuito integrado. La minia-turizacin extrema de puertas electrnicas est causandolos efectos de fenmenos que se vuelven mucho ms sig-nicativos, como la electromigracin y el subumbral deprdida. Estas nuevas preocupaciones estn entre los mu-chos factores que hacen a investigadores estudiar nuevosmtodos de computacin como la computacin cuntica,as como ampliar el uso de paralelismo y otros mtodosque extienden la utilidad del modelo clsico de von Neu-mann.

    2 OperacinLa operacin fundamental de la mayora de las CPU esejecutar una secuencia de instrucciones almacenadas lla-madas programa. El programa es representado por unaserie de nmeros que se mantienen en una cierta clase dememoria de ordenador. Hay cuatro pasos que casi todoslas CPU de arquitectura de von Neumann usan en su ope-racin: fetch, decode, execute, y writeback, (leer, decodi-car, ejecutar y escribir).

    MIPS32 Add Immediate Instruction

    Equivalent mnemonic: addi $r1, $r2 , 350

    001000 00001 00010 0000000101011110OP Code Addr 1 Addr 2 Immediate value

    Diagrama mostrando como es decodicada una instruccin delMIPS32. (MIPS Technologies 2005)

    2.1 Fetch

    El primer paso, leer, implica el recuperar una instruccin,(que es representada por un nmero o una secuencia denmeros), de la memoria de programa. La localizacin enla memoria del programa es determinada por un contadorde programa (PC), que almacena un nmero que identi-ca la direccin de la siguiente instruccin que se debebuscar. Despus se lee una instruccin, el PC es incre-mentado por la longitud de la instruccin en trminosde unidades de memoria de modo que contendr la di-reccin de la siguiente instruccin en la secuencia.[nota 3]Frecuentemente, la instruccin a ser leda debe ser recu-perada de memoria relativamente lenta, haciendo deteneral CPU mientras espera que la instruccin sea devuelta.Esta cuestin se trata en gran medida en los procesadoresmodernos por los cachs y las arquitecturas pipeline (verabajo).

    2.2 Decode

    En el paso de decodicacin, la instruccin es divididaen partes que tienen signicado para otras unidades dela CPU. La manera en que el valor de la instruccin nu-mrica es interpretado est denida por la arquitecturadel conjunto de instrucciones (el ISA) de la CPU.[nota 4]A menudo, un grupo de nmeros en la instruccin, lla-mados opcode, indica qu operacin realizar. Las partesrestantes del nmero usualmente proporcionan informa-cin requerida para esa instruccin, como por ejemplo,operandos para una operacin de adicin. Tales operan-dos se pueden dar como un valor constante (llamado valorinmediato), o como un lugar para localizar un valor, quesegn lo determinado por algn modo de direccin, pue-de ser un registro o una direccin de memoria. En diseosms viejos las unidades del CPU responsables de deco-dicar la instruccin eran dispositivos de hardware jos.Sin embargo, en CPUs e ISAs ms abstractos y compli-cados, es frecuentemente usado un microprograma paraayudar a traducir instrucciones en varias seales de con-guracin para el CPU. Este microprograma es a vecesreescribible de tal manera que puede ser modicado paracambiar la manera en que el CPU decodica instruccio-nes incluso despus de que haya sido fabricado.

  • 52.3 Execute

    InstructionFetcher

    MemoryInterface

    InstructionDecoder

    Registersto

    memory

    ALU

    Diagrama de bloques de un CPU simple.

    Despus de los pasos de lectura y decodicacin, es lle-vado a cabo el paso de la ejecucin de la instruccin.Durante este paso, varias unidades del CPU son conecta-das de tal manera que ellas pueden realizar la operacindeseada. Si, por ejemplo, una operacin de adicin fue so-licitada, una unidad aritmtico lgica (ALU) ser conec-tada a un conjunto de entradas y un conjunto de salidas.Las entradas proporcionan los nmeros a ser sumados, ylas salidas contendrn la suma nal. La ALU contiene lacircuitera para realizar operaciones simples de aritmti-ca y lgica en las entradas, como adicin y operaciones debits (bitwise). Si la operacin de adicin produce un re-sultado demasiado grande para poder ser manejado porel CPU, tambin puede ser ajustada una bandera (ag)de desbordamiento aritmtico localizada en un registrode banderas (ver abajo la seccin sobre rango de nme-ros enteros).

    2.4 WritebackEl paso nal, la escritura, simplemente escribe los re-sultados del paso de ejecucin a una cierta forma de me-moria. Muy a menudo, los resultados son escritos a algnregistro interno del CPU para acceso rpido por subse-cuentes instrucciones. En otros casos los resultados pue-den ser escritos a una memoria principal ms lenta pe-ro ms barata y ms grande. Algunos tipos de instruc-ciones manipulan el contador de programa en lugar de

    directamente producir datos de resultado. stas son lla-madas generalmente saltos (jumps) y facilitan compor-tamientos como bucles, la ejecucin condicional de pro-gramas (con el uso de saltos condicionales), y funcionesen programas.[nota 5] Muchas instrucciones tambin cam-biarn el estado de dgitos en un registro de banderas.Estas banderas pueden ser usadas para inuenciar cmose comporta un programa, puesto que a menudo indicanel resultado de varias operaciones. Por ejemplo, un tipode instruccin de comparacin considera dos valores yja un nmero, en el registro de banderas, de acuerdo acul es el mayor. Entonces, esta bandera puede ser usadapor una posterior instruccin de salto para determinar elujo de programa.Despus de la ejecucin de la instruccin y la escriturade los datos resultantes, el proceso entero se repite conel siguiente ciclo de instruccin, normalmente leyendola siguiente instruccin en secuencia debido al valor in-crementado en el contador de programa. Si la instruc-cin completada era un salto, el contador de programaser modicado para contener la direccin de la instruc-cin a la cual se salt, y la ejecucin del programa con-tina normalmente. En CPUs ms complejos que el des-crito aqu, mltiples instrucciones pueden ser ledas, de-codicadas, y ejecutadas simultneamente. Esta seccindescribe lo que es referido generalmente como el en-tubado RISC clsico (Classic RISC pipeline), que dehecho es bastante comn entre los CPU simples usadosen muchos dispositivos electrnicos, a menudo llamadosmicrocontroladores.[nota 6]

    3 Diseo e implementacin

    3.1 Rango de enterosLa manera en que un CPU representa los nmeros es unaopcin de diseo que afecta las ms bsicas formas en queel dispositivo funciona. Algunas de las primeras calcula-doras digitales usaron, para representar nmeros interna-mente, un modelo elctrico del sistema de numeracindecimal comn (base diez). Algunas otras computadorashan usado sistemas de numeracin ms exticos como elternario (base tres). Casi todos los CPU modernos repre-sentan los nmeros en forma binaria, en donde cada d-gito es representado por una cierta cantidad fsica de dosvalores, como un voltaje alto o bajo.[nota 7]

    Con la representacin numrica estn relacionados el ta-mao y la precisin de los nmeros que un CPU puederepresentar. En el caso de un CPU binario, un bit se re-ere a una posicin signicativa en los nmeros con quetrabaja un CPU. El nmero de bits (o de posiciones nu-mricas, o dgitos) que un CPU usa para representar losnmeros, a menudo se llama tamao de la palabra, an-cho de bits, ancho de ruta de datos, o precisin delnmero entero cuando se ocupa estrictamente de nme-ros enteros (en oposicin a nmeros de coma otante).

  • 6 3 DISEO E IMPLEMENTACIN

    Microprocesador MOS 6502 en un dual in-line package (enca-pasulado en doble lnea), un diseo extremadamente popular de8 bits.

    Este nmero diere entre las arquitecturas, y a menudodentro de diferentes unidades del mismo CPU. Por ejem-plo, un CPU de 8 bits maneja un rango de nmeros quepueden ser representados por ocho dgitos binarios, cadadgito teniendo dos valores posibles, y en combinacin los8 bits teniendo 28 256 nmeros discretos. En efecto, eltamao del nmero entero ja un lmite de hardware enel rango de nmeros enteros que el software corre y queel CPU puede usar directamente.[nota 8]

    El rango del nmero entero tambin puede afectar el n-mero de posiciones en memoria que el CPU puede direc-cionar (localizar). Por ejemplo, si un CPU binario utiliza32 bits para representar una direccin de memoria, y ca-da direccin de memoria representa a un octeto (8 bits),la cantidad mxima de memoria que el CPU puede di-reccionar es 232 octetos, o 4 GB. sta es una vista muysimple del espacio de direccin del CPU, y muchos di-seos modernos usan mtodos de direccin mucho mscomplejos como paginacin para localizar ms memoriaque su rango entero permitira con un espacio de direc-cin plano.Niveles ms altos del rango de nmeros enteros requie-ren ms estructuras para manejar los dgitos adicionales,y por lo tanto, ms complejidad, tamao, uso de energa,y generalmente costo. Por ello, no es del todo infrecuen-te, ver microcontroladores de 4 y 8 bits usados en aplica-ciones modernas, aun cuando estn disponibles CPU conun rango mucho ms alto (de 16, 32, 64, e incluso 128bits). Los microcontroladores ms simples son general-mente ms baratos, usan menos energa, y por lo tantodisipan menos calor. Todo esto pueden ser consideracio-nes de diseo importantes para los dispositivos electr-nicos. Sin embargo, en aplicaciones del extremo alto, losbenecios producidos por el rango adicional, (ms a me-nudo el espacio de direccin adicional), son ms signi-cativos y con frecuencia afectan las opciones del diseo.Para ganar algunas de las ventajas proporcionadas por laslongitudes de bits tanto ms bajas, como ms altas, mu-chas CPUs estn diseadas con anchos de bit diferentespara diferentes unidades del dispositivo. Por ejemplo, elIBM System/370 us un CPU que fue sobre todo de 32bits, pero us precisin de 128 bits dentro de sus unidadesde coma otante para facilitar mayor exactitud y rango denmeros de coma otante.[4] Muchos diseos posterioresde CPU usan una mezcla de ancho de bits similar, espe-cialmente cuando el procesador est diseado para usos

    de propsito general donde se requiere un razonable equi-librio entre la capacidad de nmeros enteros y de comaotante.

    3.2 Frecuencia de reloj

    La mayora de los CPU, y de hecho, la mayora delos dispositivos de lgica secuencial, son de naturalezasncrona.[nota 9] Es decir, estn diseados y operan en fun-cin de una seal de sincronizacin. Esta seal, conocidacomo seal de reloj, usualmente toma la forma de unaonda cuadrada peridica. Calculando el tiempo mximoen que las seales elctricas pueden moverse en las variasbifurcaciones de los muchos circuitos de un CPU, los di-seadores pueden seleccionar un perodo apropiado parala seal del reloj.Este perodo debe ser ms largo que la cantidad de tiempoque toma a una seal moverse, o propagarse en el peor delos casos. Al jar el perodo del reloj a un valor bastantemayor sobre el retardo de la propagacin del peor caso,es posible disear todo el CPU y la manera que muevelos datos alrededor de los bordes de la subida y baja-da de la seal del reloj. Esto tiene la ventaja de simpli-car el CPU signicativamente, tanto en una perspectivade diseo, como en una perspectiva de cantidad de com-ponentes. Sin embargo, esto tambin tiene la desventajaque todo el CPU debe esperar por sus elementos ms len-tos, an cuando algunas unidades de la misma son muchoms rpidas. Esta limitacin ha sido compensada en granparte por varios mtodos de aumentar el paralelismo delCPU (ver abajo).Sin embargo, las mejoras arquitectnicas por s solas, nosolucionan todas las desventajas de CPUs globalmentesncronas. Por ejemplo, una seal de reloj est sujeta a losretardos de cualquier otra seal elctrica. Velocidades dereloj ms altas en CPUs cada vez ms complejas hacenms difcil de mantener la seal del reloj en fase (sincro-nizada) a travs de toda la unidad. Esto ha conducido quemuchos CPU modernos requieran que se les proporcionemltiples seales de reloj idnticas, para evitar retardaruna sola seal lo suciente como para hacer al CPU fun-cionar incorrectamente. Otro importante problema cuan-do la velocidad del reloj aumenta dramticamente, es lacantidad de calor que es disipado por el CPU. La sealdel reloj cambia constantemente, provocando la conmu-tacin de muchos componentes (cambio de estado) sinimportar si estn siendo usados en ese momento. En ge-neral, un componente que est cambiando de estado, usams energa que un elemento en un estado esttico. Porlo tanto, a medida que la velocidad del reloj aumenta, aslo hace tambin la disipacin de calor, causando que elCPU requiera soluciones de enfriamiento ms efectivas.Un mtodo de tratar la conmutacin de componentes in-necesarios se llama el clock gating, que implica apagar laseal del reloj a los componentes innecesarios, efectiva-mente desactivndolos. Sin embargo, esto es frecuente-

  • 3.3 Paralelismo 7

    mente considerado como difcil de implementar y por lotanto no ve uso comn fuera de diseos de muy baja po-tencia. Un notable diseo de CPU tardo que utiliza unaamplia compuerta del reloj para reducir los requisitos depotencia de la consola de videojuegos es la de la Xbox360 basada en la PowerPC de IBM.[7] Otro mtodo detratar algunos de los problemas de una seal global de re-loj es la completa remocin de la misma. Mientras quequitar la seal global del reloj hace, de muchas maneras,considerablemente ms complejo el proceso del diseo,en comparacin con diseos sncronos similares, los di-seos asincrnicos (o sin reloj) tienen marcadas ventajasen el consumo de energa y la disipacin de calor. Aun-que se trate de algo infrecuente, las CPUs completas sehan construido sin utilizar una seal global de reloj. Dosnotables ejemplos de esto son el AMULET, que imple-menta la arquitectura del ARM, y el MiniMIPS, com-patible con el MIPS R3000. En lugar de remover total-mente la seal del reloj, algunos diseos de CPU permi-ten que ciertas unidades del dispositivo sean asincrnicas,como por ejemplo, usando ALU en conjuncin con pi-pelining superescalar para alcanzar algunas ganancias enel desempeo aritmtico. Mientras que no est completa-mente claro si los diseos totalmente asincrnicos puedendesempearse a un nivel comparable o mejor que sus con-trapartes sncronas, es evidente que por lo menos sobre-salen en las operaciones matemticas ms simples. Esto,combinado con sus excelentes caractersticas de consumode energa y disipacin de calor, los hace muy adecuadospara sistemas embebidos.[8]

    3.3 Paralelismo

    Modelo de un CPU subescalar. Note que toma quince ciclos paraterminar tres instrucciones.

    La descripcin de la operacin bsica de un CPU ofre-cida en la seccin anterior describe la forma ms simpleque puede tomar un CPU. Este tipo de CPU, usualmentereferido como subescalar, opera sobre y ejecuta una solainstruccin con una o dos piezas de datos a la vez.Este proceso da lugar a una inecacia inherente en CPUsubescalares. Puesto que solamente una instruccin esejecutada a la vez, todo el CPU debe esperar que esa ins-truccin se complete antes de proceder a la siguiente ins-truccin. Como resultado, la CPU subescalar queda pa-ralizado en instrucciones que toman ms de un ciclo dereloj para completar su ejecucin. Incluso la adicin deuna segunda unidad de ejecucin (ver abajo) no mejoramucho el desempeo. En lugar de un camino quedandocongelado, ahora dos caminos se paralizan y aumenta elnmero de transistores no usados. Este diseo, en dondelos recursos de ejecucin de la CPU pueden operar con

    solamente una instruccin a la vez, solo puede, posible-mente, alcanzar el desempeo escalar (una instruccinpor ciclo de reloj). Sin embargo, el desempeo casi siem-pre es subescalar (menos de una instruccin por ciclo).Las tentativas de alcanzar un desempeo escalar y mejor,han resultado en una variedad de metodologas de diseoque hacen comportarse al CPU menos linealmente y msen paralelo. Cuando se reere al paralelismo en los CPU,generalmente son usados dos trminos para clasicar es-tas tcnicas de diseo.

    El paralelismo a nivel de instruccin, en ingls ins-truction level parallelism (ILP), busca aumentar latasa en la cual las instrucciones son ejecutadas den-tro de un CPU, es decir, aumentar la utilizacin delos recursos de ejecucin en la pastilla.

    El paralelismo a nivel de hilo de ejecucin, en in-gls thread level parallelism (TLP), que se proponeincrementar el nmero de hilos (efectivamente pro-gramas individuales) que un CPU pueda ejecutar si-multneamente.

    Cada metodologa se diferencia tanto en las maneras enlas que estn implementadas, como en la efectividad re-lativa que producen en el aumento del desempeo de laCPU para una aplicacin.[nota 10]

    3.3.1 ILP: Segmentacin y arquitectura superesca-lar

    Tubera bsica de cinco etapas. En el mejor de los casos, estatubera puede sostener un ratio de completado de una instruccinpor ciclo.

    Uno de los mtodos ms simples para lograr incremen-tar el paralelismo es comenzar los primeros pasos de leery decodicar la instruccin antes de que la instruccinanterior haya terminado de ejecutarse. Esta es la formams simple de una tcnica conocida como segmentacin(instruction pipelining en ingls), y es utilizada en casi to-das los CPU de propsito general modernos. Al dividirla ruta de ejecucin en etapas discretas, la tubera permi-te que ms de una instruccin sea ejecutada en cualquiertiempo. Esta separacin puede ser comparada a una lneade ensamblaje, en la cual una instruccin es hecha mscompleta en cada etapa hasta que sale de la tubera deejecucin y es retirada.Sin embargo, la tubera introduce la posibilidad de unasituacin donde es necesario terminar el resultado de la

  • 8 3 DISEO E IMPLEMENTACIN

    operacin anterior para completar la operacin siguien-te; una condicin llamada a menudo como conicto dedependencia de datos. Para hacer frente a esto, debe sertomado un cuidado adicional para comprobar estas cla-ses de condiciones, y si esto ocurre, se debe retrasar unaporcin de la tubera de instruccin. Naturalmente, lo-grar esto requiere circuitera adicional, los procesadoresentubados son ms complejos que los subescalares, pe-ro no mucho. Un procesador entubado puede llegar a sercasi completamente escalar, solamente inhibido por lasabruptas paradas de la tubera (una instruccin durandoms de un ciclo de reloj en una etapa).

    Segmentacin superescalar simple. Al leer y despachar dos ins-trucciones a la vez, un mximo de dos instrucciones por ciclopueden ser completadas.

    Una mejora adicional sobre la idea del entubado de ins-truccin (instruction pipelining) condujo al desarrollo deun mtodo que disminuye incluso ms el tiempo ociosode los componentes del CPU. Diseos que se dice que sonsuperescalares incluyen una larga tubera de instruccin ymltiples unidades de ejecucin idnticas.[9] En una tube-ra superescalar, mltiples instrucciones son ledas y pa-sadas a un despachador, que decide si las instrucciones sepueden o no ejecutar en paralelo (simultneamente). Deser as, son despachadas a las unidades de ejecucin dis-ponibles, dando por resultado la capacidad para que va-rias instrucciones sean ejecutadas simultneamente. Engeneral, cuanto ms instrucciones un CPU superescalares capaz de despachar simultneamente a las unidades deejecucin en espera, ms instrucciones sern completadasen un ciclo dado.La mayor parte de la dicultad en el diseo de una arqui-tectura superescalar de CPU descansa en crear un despa-chador ecaz. El despachador necesita poder determinarrpida y correctamente si las instrucciones pueden eje-cutarse en paralelo, tan bien como despacharlas de unamanera que mantenga ocupadas tantas unidades de eje-cucin como sea posible. Esto requiere que la tubera deinstruccin sea llenada tan a menudo como sea posibley se incrementa la necesidad, en las arquitecturas super-escalares, de cantidades signicativas de cach de CPU.Esto tambin crea tcnicas para evitar peligros como laprediccin de bifurcacin, ejecucin especulativa, y laejecucin fuera de orden, cruciales para mantener altosniveles de desempeo. Tratando de predecir qu rama (o

    trayectoria) tomar una instruccin condicional, la CPUpuede minimizar el nmero de veces que todo el canaldebe esperar hasta que se complete una instruccin con-dicional. Frecuentemente, la ejecucin especulativa pro-porciona aumentos modestos del desempeo al ejecutarporciones de cdigo que no puede ser necesario despusde completarse una operacin condicional. Fuera de la or-den de ejecucin cambia de algn modo el orden en quese ejecutan las instrucciones para reducir retardos debi-do a las dependencias de datos. Tambin en el caso deinstrucciones individuales de datos mltiples los pro-cesadores modernos, en caso de que se hayan procesa-do una gran cantidad de datos del mismo tipo, puedendesactivar partes de la tubera de manera que cuando seejecuta una sola sentencia muchas veces, la CPU salta lacaptacin y decodica fases y por lo tanto aumenta consi-derablemente el rendimiento en ciertas ocasiones, sobretodo en los motores de programas altamente montonoscomo el software de creacin de video y procesamientode fotografas.En el caso donde una porcin de la CPU es superescalary una parte no lo es, la parte que no es superescalar sufreen el desempeo debido a las paradas de horario. El IntelPentium original (P5) tena dos ALUs superescalares quepodan aceptar, cada una, una instruccin por ciclo de re-loj, pero su FPU no poda aceptar una instruccin porciclo de reloj. As el P5 era superescalar en la parte denmeros enteros pero no era superescalar de nmeros decoma (o punto [decimal]) otante. El sucesor a la arqui-tectura del Pentium de Intel, el P6, agreg capacidadessuperescalares a sus funciones de coma otante, y por lotanto produjo un signicativo aumento en el desempeode este tipo de instrucciones.Tanto el diseo superescalar como el entubado simple au-mentan el ILP de una CPU al permitir a un solo proce-sador completar la ejecucin de instrucciones en ratiosque sobrepasan una instruccin por ciclo (IPC).[nota 11] Lamayora de los modernos diseos de CPU son por lo me-nos algo superescalares, y en la ltima dcada, casi todoslos diseos de CPU de propsito general son superesca-lares. En los ltimos aos algo del nfasis en el diseo decomputadores de alto ILP se ha movido del hardware delCPU hacia su interfaz de software, o ISA. La estrategiavery long instruction word o VLIW, causa a algn ILP aser implcito directamente por el software, reduciendo lacantidad de trabajo que el CPU debe realizar para darleun empuje signicativo al ILP y por lo tanto reducir lacomplejidad del diseo.

    3.3.2 Paralelismo a nivel de hilos

    Otra estrategia para lograr el rendimiento es ejecutar va-rios programas o hilos en paralelo. Esta rea de investi-gacin se conoce como computacin paralela. En la taxo-noma de Flynn, esta estrategia se conoce como mltiplesinstrucciones de varios datos o MIMD.

  • 9Una tecnologa utilizada para este propsito fue elmultiprocesamiento (MP). El puntapi inicial de esta tec-nologa se conoce como multiprocesamiento simtrico(SMP), donde un pequeo nmero de CPU compartenuna visin coherente de su sistema de memoria. En es-te esquema, cada CPU tiene un hardware adicional pa-ra mantener una visin constantemente actualizada de lamemoria. Para evitar visitas rancias de la memoria, lasCPU pueden cooperar en el mismo programa y los pro-gramas pueden migrar desde una CPU a otra. Para au-mentar el nmero de CPUs que cooperan ms all de unaspocas, se introdujeron en 1990, los esquemas tales comoel non-uniform memory Access (acceso no uniforme amemoria) (NUMA) y los protocolos de coherencia ba-sados en directorios. Los sistemas SMP se limitan a unpequeo nmero de CPU mientras que los sistemas NU-MA se han construido con miles de procesadores. Inicial-mente, el multiprocesamiento se construy usando mlti-ples CPUs discretas y tableros para implementar la inter-conexin entre los procesadores. Cuando los procesado-res y su interconexin hayan sido implementadas en unnico chip de silicio, la tecnologa se conoce como unprocesador multincleo.Posteriormente, se reconoci que exista un paralelismomuy estrecho con un nico programa. Un nico progra-ma podra tener varios hilos (o funciones) que podranser ejecutadas por separado o en paralelo. Algunos de losprimeros ejemplos de esta tecnologa implementaba pro-cesamiento de entrada/salida tales como el acceso direc-to a memoria como un hilo separado del hilo computado.En la dcada de 1970, se introdujo un enfoque ms gene-ral a esta tecnologa, cuando se disearon sistemas paraejecutar mltiples hilos de computacin en paralelo. Estatecnologa se conoce como multihilo (MT).Este enfoque se considera ms rentable que la del multi-procesamiento, ya que solo se replica un pequeo nmerode componentes dentro de una CPU para soportar MT enoposicin a la totalidad de la CPU en el caso de MP. EnMT, las unidades de ejecucin y el sistema de memoriaincluyendo los cachs son compartidos entre varios hilos.La desventaja de MT es que el soporte de hardware paramultihilo es ms visible para el software que la de MP ypor lo tanto el software supervisor como el de los siste-mas operativos tienen que someterse a los cambios msgrandes para apoyar MT. Un tipo de MT que se imple-ment es conocido como bloque multihilo, donde se eje-cuta un hilo hasta que se paralice esperando que regresenlos datos desde la memoria externa. En este esquema, laCPU tendra luego que cambiar rpidamente a otro hiloque est listo para funcionar, el interruptor muchas vecesrealiza un ciclo de reloj de la CPU, como la tecnologaUltraSPARC. Otro tipo de MT se denomina multihilo si-multneo, en donde las instrucciones de mltiples hilosse ejecutan en paralelo dentro de un ciclo de reloj de laCPU.

    3.3.3 Paralelismo de datos

    Un menos comn pero cada vez ms importante paradig-ma de CPU (y de hecho, de computacin en general) tratacon vectores. Los procesadores de los que se ha habla-do anteriormente son todos referidos como cierto tipo dedispositivo escalar.[nota 12] Como implica su nombre, losprocesadores vectoriales se ocupan de mltiples piezas dedatos en el contexto de una instruccin, esto contrasta conlos procesadores escalares, que tratan una pieza de datopor cada instruccin. Estos dos esquemas de ocuparse delos datos son generalmente referidos respectivamente co-mo SISD (single instruction, single data) y SIMD (singleinstruction, multiple data). La gran utilidad en crear CPUque se ocupen de vectores de datos radica en la optimi-zacin de tareas que tienden a requerir la misma opera-cin, por ejemplo, una suma, o un producto escalar, a serrealizado en un gran conjunto de datos. Algunos ejem-plos clsicos de este tipo de tareas son las aplicacionesmultimedia (imgenes, vdeo, y sonido), as como mu-chos tipos de tareas cientcas y de ingeniera. Mientrasque una CPU escalar debe completar todo el proceso deleer, decodicar, y ejecutar cada instruccin y valor en unconjunto de datos, una CPU vectorial puede realizar unasimple operacin en un comparativamente grande con-junto de datos con una sola instruccin. Por supuesto,esto es solamente posible cuando la aplicacin tiende arequerir muchos pasos que apliquen una operacin a unconjunto grande de datos.La mayora de las primeras CPU vectoriales, como elCray-1, se asociaron casi exclusivamente a aplicacionesde investigacin cientca y criptografa. Sin embargo,a medida que la multimedia se desplaz en gran parte amedios digitales, ha llegado a ser signicativa la necesi-dad de una cierta forma de SIMD en CPUs de propsi-to general. Poco despus de que comenzara a ser comnincluir unidades de coma otante en procesadores de usogeneral, tambin comenzaron a aparecer especicacionese implementaciones de unidades de ejecucin SIMD paralas CPU de uso general. Algunas de estas primeras espe-cicaciones SIMD, como el MMX de Intel, fueron sola-mente para nmeros enteros. Esto demostr ser un im-pedimento signicativo para algunos desarrolladores desoftware, ya que muchas de las aplicaciones que se bene-ciaban del SIMD trataban sobre todo con nmeros decoma otante. Progresivamente, stos primeros diseosfueron renados y rehechos en alguna de las comunes,modernas especicaciones SIMD, que generalmente es-tn asociadas a un ISA. Algunos ejemplos modernos no-tables son el SSE de Intel y el AltiVec relacionado con elPowerPC (tambin conocido como VMX).[nota 13]

    4 DesempeoEl desempeo o la velocidad de un procesador dependede, entre muchos otros factores, la velocidad del reloj (ge-

  • 10 6 NOTAS

    neralmente dada en mltiplos de hertz) y las instruccio-nes por ciclo de reloj (IPC), que juntos son los factorespara las instrucciones por segundo (IPS) que el CPU pue-de rendir.[10] Muchos reportes de valores IPS han repre-sentado tasas de ejecucin pico en secuencias de ins-trucciones articiales con pocas ramas, mientras que lascargas de trabajo realistas consisten en una combinacinde instrucciones y de aplicaciones, algunas de las cualesrequieren ms tiempo para ejecutar que otras. El rendi-miento de la jerarqua de memoria tambin afecta en granmedida al rendimiento del procesador, un tema muy pocotenido en cuenta en los clculos de MIPS. Debido a estosproblemas, para este n, se han desarrollado varios ex-menes estandarizados, tales como SPECint muchas vecesllamados "puntos de referencia" - para tratar de medirel rendimiento real efectivo en aplicaciones de uso coti-diano.El desempeo de procesamiento de las computadoras seincrementa utilizando procesadores multincleo, que enesencia es conectar dos o ms procesadores individuales(llamados ncleos en este sentido) en un solo circuito in-tegrado.[11] Idealmente, un procesador de doble ncleosera casi dos veces tan potente como un procesador dencleo nico. En la prctica, la ganancia de desempeoes mucho menor, slo alrededor del 50%, [cita requerida] de-bido a la implementacin de algoritmos imperfectos desoftware.[12] El aumento del nmero de ncleos en unprocesador (es decir, dual-core, quad-core, etc) aumen-ta la carga de trabajo que se puede manejar. Esto sig-nica que el procesador ahora puede manejar numerososeventos asncronos, interrupciones, etc que pueden tomarun peaje en la CPU (Central Processing Unit) cuandose abruma. Estos ncleos pueden considerarse como di-ferentes plantas en una planta de procesamiento, con elmanejo de cada piso una tarea diferente. En ocasiones,estos ncleos se manejan las mismas tareas que los n-cleos adyacentes a ellos si un solo ncleo no es sucientepara manejar la informacin.Debido a las capacidades especcas de las CPU moder-nas, como Hyper-Threading y Uncore, que implican elintercambio de recursos reales de la CPU mientras queel objetivo de una mayor utilizacin, supervisar los ni-veles de rendimiento y la utilizacin del hardware se fueconvirtiendo gradualmente en una tarea ms compleja.Como respuesta, algunas CPUs implementan lgica dehardware adicional que controla la utilizacin real de lasdiversas partes de una CPU y proporciona varios conta-dores accesibles a software; un ejemplo es la tecnologaPerformance Counter Monitor (Monitor de contador derendimiento) de Intel.[13]

    5 Vase tambin

    6 Notas[1] Integrated circuits are now used to implement all CPUs,

    except for a few machines designed to withstand largeelectromagnetic pulses, say from a nuclear weapon.

    [2] The so-called 'von Neumann' memo expounded the ideaof stored programs, stored say, on punch cards, paper tape,or magnetic tape

    [3] Since the program counter counts memory addresses andnot instructions, it is incremented by the number of me-mory units that the instruction word contains. In the caseof simple xed-length instruction word ISAs, this is al-ways the same number. For example, a xed-length 32-bit instruction word ISA that uses 8-bit memory wordswould always increment the PC by 4 (except in the caseof jumps). ISAs that use variable length instruction wordsincrement the PC by the number of memory words co-rresponding to the last instructions length.

    [4] Because the instruction set architecture of a CPU is fun-damental to its interface and usage, it is often used as aclassication of the type of CPU. For example, a Po-werPC CPU uses some variant of the PowerPC ISA. Asystem can execute a dierent ISA by running an emula-tor.

    [5] Some early computers like the Harvard Mark I did notsupport any kind of jump instruction, eectively limi-ting the complexity of the programs they could run. It islargely for this reason that these computers are often notconsidered to contain a CPU proper, despite their closesimilarity as stored program computers.

    [6] This description is, in fact, a simplied view even of theClassic RISC pipeline. It largely ignores the important ro-le of CPU cache, and therefore the access stage of thepipeline. See the respective articles for more details.

    [7] The physical concept of voltage is an analog one by itsnature, practically having an innite range of possible va-lues. For the purpose of physical representation of binarynumbers, set ranges of voltages are dened as one or ze-ro. These ranges are usually inuenced by the operationalparameters of the switching elements used to create theCPU, such as a transistor's threshold level.

    [8] While a CPUs integer size sets a limit on integer ran-ges, this can (and often is) overcome using a combinationof software and hardware techniques. By using additio-nal memory, software can represent integers many mag-nitudes larger than the CPU can. Sometimes the CPUsISA will even facilitate operations on integers larger thatit can natively represent by providing instructions to ma-ke large integer arithmetic relatively quick. While thismethod of dealing with large integers is somewhat slo-wer than utilizing a CPU with higher integer size, it is areasonable trade-o in cases where natively supporting thefull integer range needed would be cost-prohibitive. SeeArbitrary-precision arithmetic for more details on purelysoftware-supported arbitrary-sized integers.

  • 11

    [9] In fact, all synchronous CPU use a combination ofsequential logic and combinatorial logic. (See boolean lo-gic)

    [10] Neither ILP nor TLP is inherently superior over the ot-her; they are simply dierent means by which to increaseCPU parallelism. As such, they both have advantages anddisadvantages, which are often determined by the type ofsoftware that the processor is intended to run. High-TLPCPUs are often used in applications that lend themselveswell to being split up into numerous smaller applications,so-called "embarrassingly parallel problems. Frequently,a computational problem that can be solved quickly withhigh TLP design strategies like SMP take signicantly mo-re time on high ILP devices like superscalar CPUs, andvice versa.

    [11] Best-case scenario (or peak) IPC rates in very superscalararchitectures are dicult to maintain since it is impossibleto keep the instruction pipeline lled all the time. There-fore, in highly superscalar CPU, average sustained IPC isoften discussed rather than peak IPC.

    [12] Earlier the term scalar was used to compare most theIPC (instructions per cycle) count aorded by various ILPmethods. Here the term is used in the strictly mathema-tical sense to contrast with vectors. See scalar (mathema-tics) and vector (spatial).

    [13] Although SSE/SSE2/SSE3 have superseded MMX in In-tels general purpose CPU, later IA-32 designs still sup-port MMX. This is usually accomplished by providingmost of the MMX functionality with the same hardwa-re that supports the much more expansive SSE instructionsets.

    7 Referencias[1] Weik, Martin H. (1961).AThird Survey of Domestic Elec-

    tronic Digital Computing Systems (en ingls). Ballistic Re-search Laboratories.

    [2] First Draft of a Report on the EDVAC (en ingls). MooreSchool of Electrical Engineering, Universidad de Pennsyl-vania. 1945.

    [3] Enticknap, Nicholas (Verano de 1998), ComputingsGolden Jubilee (en ingls), Resurrection (The ComputerConservation Society) 20, ISSN 0958-7403, http://www.cs.man.ac.uk/CCS/res/res20.htm#d, consultado el 19 deabril de 2008

    [4] Amdahl, G. M., Blaauw, G. A., & Brooks, F. P. Jr. (1964).Architecture of the IBM System/360 (en ingls). IBM Re-search.

    [5] Digital Equipment Corporation (Noviembre de 1975).LSI-11 Module Descriptions. LSI-11, PDP-11/03 usersmanual (en ingls) (2da edicin). Maynard, Massachu-setts: Digital Equipment Corporation. pp. 43.

    [6] Excerpts from A Conversation with Gordon Moore: Moo-res Law (PDF) (en ingls). Intel. 2005. Consultado el 25de julio de 2012.

    [7] Brown, Jeery (2005). Application-customized CPUdesign (en ingls). IBM developerWorks. Consultado el17 de diciembre de 2005.

    [8] Garside, J. D., Furber, S. B., & Chung, S-H (1999).AMULET3 Revealed (en ingls). University of Manches-ter Computer Science Department.

    [9] Huynh, Jack (2003). The AMD Athlon XP Processorwith 512KB L2 Cache (en ingls). University of Illinois Urbana-Champaign. pp. 611. Consultado el 6 de oc-tubre de 2007.

    [10] CPU Frequency. CPUWorld Glossary (en ingls). CPUWorld. 25 de marzo de 2008. Consultado el 1 de enero de2010.

    [11] What is (a) multi-core processor?. Data Center Deni-tions (en ingls). SearchDataCenter.com. 27 de marzo de2007. Consultado el 1 de enero de 2010.

    [12] Quad Core Vs. Dual Core. http://www.buzzle.com/''.Consultado el 26 de noviembre de 2014.

    [13] Thomas Willhalm; Roman Dementiev; Patrick Fay (18 dediciembre de 2014). Intel Performance Counter Moni-tor A better way to measure CPU utilization (en ingls).Consultado el 17 de febrero de 2015.

    8 Bibliografa Amdahl, G. M., Blaauw, G. A., & Brooks, F. P.

    Jr. (1964). Architecture of the IBM System/360. IBMResearch.

    Brown, Jeery (2005). Application-customizedCPU design. IBM developerWorks. Consultado el17 de diciembre de 2005.

    Digital Equipment Corporation (noviembre de1975). LSI-11 Module Descriptions. LSI-11,PDP-11/03 users manual (2da edicin edicin).Maynard, Massachusetts: Digital Equipment Corpo-ration. pp. 43.

    Garside, J. D., Furber, S. B., & Chung, S-H(1999). AMULET3 Revealed. University of Man-chester Computer Science Department.

    Hennessy, John A.; Goldberg, David (1996). Com-puter Architecture: A Quantitative Approach. Mor-gan Kaufmann Publishers. ISBN 1-55860-329-8.

    MIPS Technologies, Inc. (2005). MIPS32 Archi-tecture For Programmers Volume II: The MIPS32Instruction Set. MIPS Technologies, Inc.

    Smotherman, Mark (2005). History of Multithrea-ding. Consultado el 19 de diciembre de 2005.

    von Neumann, John (1945). First Draft of a Reporton the EDVAC. Moore School of Electrical Engi-neering, University of Pennsylvania.

  • 12 9 ENLACES EXTERNOS

    Weik, Martin H. (1961).AThird Survey of DomesticElectronic Digital Computing Systems. Ballistic Re-search Laboratories.

    9 Enlaces externos

    Wikimedia Commons alberga contenido mul-timedia sobre Unidad central de procesamiento.Commons

    9.1 Diseos de microprocesador

    Wikiversidad alberga proyectos de apren-dizaje sobre Unidad central de procesamien-to.Wikiversidad (en ingls)

    Como trabajan los microprocesadores enHowStuWorks. (en ingls)

    25 Microchips que sacudieron al mundo un artcu-lo del Instituto de Ingeniera Elctrica y Electrnica.(en ingls)

    Advanced Micro Devices - Advanced Micro De-vices, un diseador de principalmente CPU de lacomputadora personal compatible con x86. (en in-gls)

    ARM Ltd - ARM Ltd, uno de los pocos diseadoresde CPU que se benecian nicamente por licenciarsus diseos en lugar de fabricarlos. Los micropro-cesadores de arquitectura ARM se encuentran en-tre los ms populares en el mundo para aplicacionesembebidas. (en ingls)

    Freescale Semiconductor (antes de Motorola) -Freescale Semiconductor, diseador de varios pro-cesadores embebidos basados en PowerPC y SoC.(en ingls)

    IBM Microelectronics - Divisin de Microelectr-nica de IBM, que es responsable de mucho en di-seos basados en POWER y PowerPC, incluyendomuchas de las CPU utilizada en las ltimas consolasde videojuegos de 2012. (en ingls)

    Intel Corp - un fabricante de varias lneas de CPUnotables, incluyendo IA-32, IA-64, y XScale. Tam-bin es un fabricante de chips de diferentes perif-ricos para su uso con su CPU. (en ingls)

    MIPS Technologies - MIPS Technologies, desarro-lladores de la arquitectura MIPS, pionero en diseosRISC. (en ingls)

    Sun Microsystems - Sun Microsystems, desarrolla-dores de la arquitectura SPARC, un diseo RISC.(en ingls)

    Texas Instruments - Texas Instruments divisin se-miconductores. Disea y fabrica varios tipos de mi-crocontroladores de bajo consumo entre sus muchosotros productos semiconductores. (en ingls)

    Transmeta - Transmeta Corporation. Creadores dex86 de baja potencia compatibles, como Crusoe yEceon. (en ingls)

    9.2 Lectura adicional Diseo del procesador: Una introduccin - Introduc-

    cin detallada al diseo de microprocesadores. (eningls)

    Cmo trabajan los microprocesadores. (en ingls) Pipelining: An Overview - Buena introduccin y vi-

    sin general acerca de las tcnicas de tuberas deCPU por el personal de Ars Technica. (en ingls)

    SIMD Architectures - Introduccin y explicacin deSIMD, sobre todo cmo se relaciona con las compu-tadoras personales. Tambin por Ars Technica. (eningls)

    Listado de procesadores - Nombres de CPUs y prin-cipales caractersticas. (en ingls)

    Esta obra deriva de la traduccin total de Centralprocessing unit de Wikipedia en ingls, concreta-mente de esta versin, publicada por sus edito-res bajo la Licencia de documentacin libre deGNU y la Licencia Creative Commons Atribucin-CompartirIgual 3.0 Unported.

  • 13

    10 Texto e imgenes de origen, colaboradores y licencias10.1 Texto

    Unidad central de procesamiento Fuente: http://es.wikipedia.org/wiki/Unidad_central_de_procesamiento?oldid=82693687 Colabora-dores: Joseaperez, Fibonacci, Sabbut, JorgeGG, Tostadora, RGLago, Petronas, Airunp, Yrithinnd, Taichi, Orgullobot~eswiki, Dagavi, Os-car ., Vitamine, Dangarcia, Olea, GermanX, Wewe, KnightRider, The Photographer, Claudio Segovia, Jesuja, Santiperez, Txo, Leitzaran,Baneld, Isra00, Kepler Oort, Gtz, Er Komandante, Raidentk, Chlewbot, Jarke, Makahaxi, The worst user, BOTpolicia, l, Burgales,CEM-bot, Sr Beethoven, Retama, Antur, Willicab, Dorieo, Esoya, Alvaro qc, PabloCastellano, Roberto Fiadone, Escarbot, Yeza, RoyFoc-ker, Botones, Cratn, Isha, Egaida, Bernard, JAnDbot, Jugones55, Mansoncc, Satin, Muro de Aguas, Gsrdzl, TXiKiBoT, Cronos x, Merce-nario97, Kotxe, Elisardojm, Humberto, Nioger, Plux, Snakefang, MarisaLR, Biasoli, Bucephala, Cinevoro, VolkovBot, Javiermhlo, Raiz-Raiz, Technopat, Queninosta, Matdrodes, Elabra sanchez, Synthebot, DJ Nietzsche, Shooke, Vatelys, King of Hearts, Muro Bot, Edmenb,SieBot, Mushii, Marianox, PaintBot, Loveless, Rimac, FolkenX, Cobalttempest, Drinibot, Tonyslash60, BOTarate, Er conde, Fcosegura,NKLAVE, Mafores, Tirithel, Prietoquilmes, M S, Jarisleif, Javierito92, Marcecoro, HUB, Antn Francho, Piero71, Dario nar, McMalamu-te, Eduardosalg, Fanattiq, Leonpolanco, Pan con queso, Alejandrocaro35, Botito777, Petruss, Poco a poco, Juanito1, SilvonenBot, Camilo,UA31, Ucevista, AVBOT, David0811, LucienBOT, A ver, Gabriel Fernando Rosso R., Speedplus, Diegusjaimes, Willi4m, Melancholie-Bot, Oscaroe, TraveHacks, Arjuno3, Fernando Rosso R, Luckas-bot, Nallimbot, Galindojotaka, FariBOT, Julio Cardmat, Nixn, Marcavia,SuperBraulio13, Ortisa, Xqbot, Jkbw, Rubinbot, Dreitmen, FrescoBot, Ricardogpn, Igna, Botarel, Kristianpaul, TiriBOT, TobeBot, Half-drag, RedBot, Kizar, Jerowiki, Leugim1972, TorQue Astur, PatruBOT, KamikazeBot, Almiux2009, TjBot, Tarawa1943, Instigate cjsc(Narine), Dark Bane, Foundling, GrouchoBot, Miss Manzana, EmausBot, Quemeseho, Savh, Gargula~eswiki, ZroBot, HRoestBot, SergioAndres Segovia, Africanus, Grillitus, JackieBot, Mjgarciav1, Jcaraballo, Khiari, MadriCR, Waka Waka, Banck, Movses-bot, Kasirbot, Xa-naG, MerlIwBot, Brayan151, KLBot2, Sebrev, Travelour, MetroBot, Invadibot, Scott9000*, Camomen3000, Allan Aguilar, Nklave003,Harpagornis, Darlin007, Creosota, Alexandrufp, Charlesito, Justincheng12345-bot, Helmy oved, Akdkiller, YFdyh-bot, EduLeo, Sherson-Lazaro, Marsvolta~eswiki, MaKiNeoH, EDP10000, Tommyboylounge, Lautaro 97, Addbot, Rolemk, Lfmexi, Ola k asiendo, Serralex9,JacobRodrigues, Albyline, Elwikipedistaprofesional, Dany Becerra, Locoro, Jarould, Aaron santiago, Andrwiu19999, Alferdele, GonzaloRodriguez Zabala, LAZaRiNbO, Unprosoy094, Lectorina, Arianator26693 y Annimos: 489

    10.2 Imgenes Archivo:80486dx2-large.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/0/02/80486dx2-large.jpg Licencia: CC-BY-SA-

    3.0 Colaboradores: ? Artista original: ? Archivo:CPU_block_diagram.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/5/52/CPU_block_diagram.svg Licencia:

    CC-BY-SA-3.0 Colaboradores: Este archivo se deriv de: CPU block diagram.pngArtista original: File:CPU block diagram.png: R. S. Shaw

    Archivo:Commons-logo.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg Licencia: Public domainColaboradores: This version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions used to be slightlywarped.) Artista original: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier PNG version, created byReidab.

    Archivo:EBIntel_Corei5.JPG Fuente: http://upload.wikimedia.org/wikipedia/commons/5/52/EBIntel_Corei5.JPG Licencia:CC BY-SA3.0 Colaboradores: Trabajo propio Artista original: highwycombe (talk)

    Archivo:Edvac.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/1/17/Edvac.jpg Licencia: Public domain Colaboradores:Photo located at: http://ftp.arl.mil/ftp/historic-computers/ Artista original: ?

    Archivo:Fivestagespipeline.png Fuente: http://upload.wikimedia.org/wikipedia/commons/2/21/Fivestagespipeline.png Licencia: CC-BY-SA-3.0 Colaboradores: ? Artista original: ?

    Archivo:Intel_80486DX2_bottom.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/e/e7/Intel_80486DX2_bottom.jpg Li-cencia: CC BY-SA 2.0 Colaboradores: ? Artista original: ?

    Archivo:Intel_80486DX2_top.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/d/dc/Intel_80486DX2_top.jpg Licencia:CC BY-SA 2.0 Colaboradores: ? Artista original: ?

    Archivo:MOS_6502AD_4585_top.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/4/49/MOS_6502AD_4585_top.jpgLicencia: CC-BY-SA-3.0 Colaboradores: ? Artista original: ?

    Archivo:Mips32_addi.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/2a/Mips32_addi.svg Licencia: CC-BY-SA-3.0Colaboradores: http://en.wikipedia.org/wiki/Image:Mips32_addi.svg Artista original: en:User:Booyabazooka

    Archivo:Nopipeline.png Fuente: http://upload.wikimedia.org/wikipedia/commons/2/2c/Nopipeline.png Licencia: CC-BY-SA-3.0 Cola-boradores: ? Artista original: ?

    Archivo:PDP-8i_cpu.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/0/03/PDP-8i_cpu.jpg Licencia: Public domain Co-laboradores: http://en.wikipedia.org/wiki/Image:PDP-8i_cpu.jpg Artista original: Robert Krten

    Archivo:Superscalarpipeline.png Fuente: http://upload.wikimedia.org/wikipedia/commons/c/ce/Superscalarpipeline.png Licencia: CC-BY-SA-3.0 Colaboradores: ? Artista original: ?

    Archivo:Wikiversity-logo-Snorky.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/1/1b/Wikiversity-logo-en.svg Licen-cia: CC BY-SA 3.0 Colaboradores: Trabajo propio Artista original: Snorky

    10.3 Licencia de contenido Creative Commons Attribution-Share Alike 3.0

    Historia CPU de transistores y de circuitos integrados discretos Microprocesadores

    Operacin Fetch Decode ExecuteWriteback

    Diseo e implementacin Rango de enteros Frecuencia de reloj Paralelismo ILP: Segmentacin y arquitectura superescalar Paralelismo a nivel de hilos Paralelismo de datos

    Desempeo Vase tambin Notas Referencias Bibliografa Enlaces externos Diseos de microprocesador Lectura adicional

    Texto e imgenes de origen, colaboradores y licenciasTextoImgenesLicencia de contenido