Unidá central de procesamientu

La unidá central de procesamientu o unidá de procesamientu central (conocida poles sigles CPU, del inglés: central processing unit), ye'l hardware dientro d'un ordenador o otros dispositivos programables, qu'interpreta les instruiciones d'un programa informáticu por aciu la realización de les operaciones básiques aritmétiques, lóxiques y d'entrada salida del sistema. El términu, y el so acrónimu, tuvieron n'usu na industria de la Informática a lo menos dende'l principiu de los años 1960. La forma, el diseñu de CPU y la implementación de les CPU camudó drásticamente dende los primeros exemplos, pero la so operación fundamental sigue siendo la mesma.

Un ordenador puede tener más d'una CPU; esto llámase multiprocesamiento. Toles CPU modernes son microprocesadores, lo que significa que contienen un solu circuitu integráu (chip). Dellos circuitos integraos pueden contener delles CPU nun solu chip; estos son denominaos procesadores multinucleu. Un circuitu integráu que contién una CPU tamién puede contener los dispositivos periféricos, y otros componentes d'un sistema informáticu; a esto llámase un sistema nun chip (SoC).

Dos componentes típicos d'una CPU son la unidá aritméticu lóxica (ALU), que realiza operaciones aritmétiques y lóxiques, y la unidá de control (CU), qu'estraye instruiciones de la memoria, les decodifica y les executa, llamando a la ALU cuando sía necesariu.

Non tolos sistemes computacionales tán basaos nuna unidá central de procesamientu. Una matriz de procesador o procesador vectorial tien múltiples elementos cómputu paralelu, ensin una unidá considerada'l "centru". Nel modelu de computación distribuíu, resuélvense problemes por aciu d'un conxuntu interconectáu y distribuíu de procesadores.

 Historia 

Los primeros ordenadores, como'l ENIAC, teníen que ser físicamente recableaos pa realizar distintes xeres, lo que fizo qu'estes máquines denominárense "ordenadores de programa fixu". Yá que el términu "CPU" xeneralmente defínese como un dispositivu pa la execución de software (programa informáticu), los primeros dispositivos que con razón podríamos llamar CPU vinieron col advenimiento del ordenador con programa almacenáu.

La idea d'un ordenador con programa almacenáu yá taba presente nel diseñu de John Presper Eckert y nel ENIAC de John William Mauchly, pero esta carauterística omitióse primeramente por que el aparatu pudiera tar llistu antes. El 30 de xunu de 1945, primero que se construyera la ENIAC, el matemáticu John von Neumann distribuyó'l trabayu tituláu First Draft of a Report on the EDVAC (Primer Borrador d'un Reporte sobre'l EDVAC). Foi l'esbozu d'un ordenador de programa almacenáu, que se terminó n'agostu de 1949. EDVAC foi diseñáu pa realizar un ciertu númberu d'instruiciones (o operaciones) de dellos tipos. Significativamente, los programes escritos pal EDVAC crear pa ser almacenaos na memoria d'alta velocidá del ordenador y non por que los especificara'l cableaxe físicu del ordenador. Esto superó una severa llimitación del ENIAC, que yera l'importante tiempu y esfuerciu riquíu pa volver configurar l'equipu pa realizar una nueva xera. Col diseñu de von Neumann, el programa o software que corría EDVAC podría ser camudáu a cencielles camudando'l conteníu de la memoria. Sicasí, EDVAC nun foi'l primer ordenador de programa almacenáu; la Máquina Esperimental de Pequeña Escala de Mánchester, un pequeñu prototipu d'ordenador de programa almacenáu, executó'l so primer programa'l 21 de xunu de 1948 y la Manchester Mark I executó'l so primer programa na nueche del 16 al 17 xunu de 1949.

Les primeres CPU fueron diseñaes a midida como parte d'un ordenador más grande, xeneralmente un ordenador únicu na so especie. Sicasí, esti métodu de diseñar les CPU a midida, pa una aplicación particular, sumió en gran parte y sustituyóse pol desenvolvimientu de clases de procesadores baratos y estandarizados afechos pa unu o dellos propósitos. Esti enclín d'estandarización empezó xeneralmente na era de los transistores discretos, ordenadores centrales y microcomputadores y foi acelerada rápido cola popularización del circuitu integráu (IC), este dexó que sían diseñaos y fabricaos CPU más complexes n'espacios pequeños na orde de nanómetros. Tanto la miniaturización como la estandarización de les CPU aumentaron la presencia d'estos dispositivos dixitales na vida moderna muncho más allá de les aplicaciones llindaes de máquines de computación dedicaes. Los microprocesadores modernos apaecen en tou, dende automóviles hasta teléfonos móviles y xuguetes de neños.

Magar von Neumann munches vegaes acreditáu pol diseñu del ordenador con programa almacenáu por cuenta del so diseñu del EDVAC, otros primero qu'él, como Konrad Zuse, suxirieren y aplicáu idees similares. La denomada arquiteutura Harvard del Harvard Mark I, que se completó antes de EDVAC, tamién utilizó un diseñu de programa almacenáu usando cinta de papel furada en cuenta de memoria electrónica. Estremar clave ente les arquitectures de von Neumann y la de Harvard ye que la postrera dixebra l'almacenamientu y tratamientu d'instruiciones de la CPU y los datos, ente que'l primeru utiliza'l mesmu espaciu de memoria pa dambos. La mayoría de los CPU modernos son de diseñu von Neumann, pero los CPU con arquiteutura Harvard vense asina, sobremanera n'aplicaciones enfiñíes; por casu, los microcontroladores Atmel AVR son procesadores d'arquiteutura Harvard.

Los relés llétricos y los tubos de vacíu (válvules termoiónicas) yeren usaos comúnmente como elementos de conmutación; un ordenador útil rique miles o decenes de miles de dispositivos de conmutación. La velocidá global d'un sistema depende de la velocidá de los conmutadores. Los ordenadores de tubu, como'l EDVAC, tendieron en tener un permediu d'ocho hores ente fallos, ente que los ordenadores de relés, (anteriores y más lentos), como'l Harvard Mark I, fallaben bien raramente. A la fin, los CPU basaos en tubu aportaron a dominantes porque les significatives ventayes de velocidá producíes xeneralmente pesaben más que los problemes de confiabilidad. La mayor parte d'estes tempranes CPU síncronas corríen en frecuencies de reló baxes comparaes colos modernos diseños microelectrónicos. Yeren bien comunes nesti tiempu les frecuencies de la señal del reló con un rangu dende 100 kHz hasta 4 MHz, llindáu en gran parte pola velocidá de los dispositivos de conmutación colos que fueron construyíos.

 CPU de transistores y de circuitos integraos discretos 

La complexidá del diseñu de les CPU aumentó xunto cola facilidá de la construcción de dispositivos electrónicos más pequeños y confiables. La primera d'eses meyores vieno col advenimiento del transistor. Les CPU transistorizadas mientres los años 1950 y los años 1960 nun tuvieron que ser construyíos con elementos de conmutación abuitaos, non fiables y fráxiles, como los tubos de vacíu y los relés llétricos. Con esta meyora, fueron construyíes CPU más complexes y más confiables sobre una o delles tarxetes de circuitu impresu que conteníen componentes discretos (individuales).

Mientres esti periodu, ganó popularidá un métodu de fabricar munchos transistores nun espaciu compactu. El circuitu integráu (IC) dexó qu'una gran cantidá de transistores fueren fabricaos nuna simple oblea basada en semiconductor o "chip". De primeres, solamente circuitos dixitales bien básicos, non especializaos, como les puertes NOR fueron miniaturizados en IC. Les CPU basaes nestos IC de "bloques de construcción" xeneralmente son referíos como dispositivos de pequeña escala d'integración "small-scale integration" (SSI). Los circuitos integraos SSI, como los usaos nel ordenador guía del Apollo (Apollo Guidance Computer), usualmente conteníen transistores que se cuntaben en númberos de múltiplos de diez. Construyir un CPU completu usando IC SSI riquía miles de chips individuales, pero inda consumía muncho menos espaciu y enerxía que diseños anteriores de transistores discretos. A midida que la teunoloxía microelectrónica avanzó, nos IC foi asitiáu un númberu creciente de transistores, menguando asina la cantidá de IC individuales necesarios pa una CPU completa. Los circuitos integraos MSI y el LSI (de mediana y gran escala d'integración) aumentaron el númberu de transistores a cientos y depués a miles.

En 1964, IBM introdució la so arquiteutura d'ordenador System/360, que foi usada nuna serie d'ordenadores que podíen executar los mesmos programes con velocidaes y desempeños distintos. Esto foi significativu nun tiempu en que la mayoría de los ordenadores electrónicos yeren incompatibles ente sigo, inclusive les feches pol mesmu fabricante. Pa facilitar esta meyora, IBM utilizó'l conceutu de microprograma, de cutiu llamáu «microcódigo», llargamente usáu entá nes CPU modernes. L'arquiteutura System/360 yera tan popular qu'apoderó'l mercáu del mainframe mientres les siguientes décades y dexó un heriedu qu'inda entá perdura nos ordenadores modernos, como'l IBM zSeries. Nel mesmu añu de 1964, Digital Equipment Corporation (DEC) introdució otru ordenador que sería bien influyente, dirixíu a los mercaos científicos y d'investigación, el PDP-8. DEC introduciría más palantre la bien popular llinia del PDP-11, que orixinalmente foi construyíu con IC SSI pero eventualmente foi implementáu con componentes LSI cuando se convirtieron en práuticos. En fuerte contraste colos sos precursores fechos con teunoloxía SSI y MSI, la primera implementación LSI del PDP-11 contenía una CPU integrada namái por cuatro circuitos integraos LSI.

Los ordenadores basaos en transistores teníen delles ventayes frente a los sos predecesores. Amás de facilitar una creciente fiabilidá y un menor consumu d'enerxía, los transistores tamién dexaben que CPU operara a velocidaes muncho más altes debíu al curtiu tiempu de conmutación d'un transistor en comparanza a un tubu o relé. Gracies tantu a esta creciente fiabilidá como a la dramática medría de velocidá de los elementos de conmutación que por esti tiempu yeren casi puramente transistores, fuéronse algamando frecuencies de reló de la CPU de decenes de megahercios. Amás, ente que les CPU de transistores discretos y circuitos integraos usábense comúnmente, empezaron a apaecer los nuevos diseños d'altu rendimientu como procesadores vectoriales SIMD (single instruction multiple data – instruición única, datos múltiples). Estos primeros diseños esperimentales dieron llugar más palantre a la era de los superordenadores especializaos, como los fechos por Cray Inc.

 Microprocesadores 

Na década de 1970 los inventos fundamentales de Federico Faggin (ICs Silicon Gate MOS con puertes autoalineadas xunto cola so nueva metodoloxía de diseñu de lóxica aleatoria) camudó'l diseñu y implementación de les CPU pa siempres. Dende la introducción del primer microprocesador comercialmente disponible, el Intel 4004, en 1970 y del primer microprocesador llargamente usáu, el Intel 8080, en 1974, esta clase de CPU movió casi totalmente el restu de los métodos de implementación de la Unidá Central de procesamientu. Los fabricantes de mainframes y miniordenadores d'esi tiempu llanzaron programes de desenvolvimientu de IC propietarios p'actualizar los sos arquitectures d'ordenadores más vieyes y eventualmente producir microprocesadores con conxuntu d'instruiciones conxuntos d'instruiciones que yeren retrocompatibles coles sos hardwares y softwares más vieyos. Combináu col advenimiento y l'eventual vastu ésitu de l'agora ubicua ordenador personal, el términu "CPU" ye aplicáu agora casi puramenteIntegrated circuits are now used to implement all CPUs, except for a few machines designed to withstand large electromagnetic pulsies, say from a nuclear weapon. a los microprocesadores.

Les xeneraciones previes de CPU fueron implementaes como componentes discretos y numberosos circuitos integraos de pequeña escala d'integración nuna o más tarxetes de circuitos. Per otru llau, los microprocesadores son CPU fabricaos con un númberu bien pequeñu de IC; usualmente solo unu. El tamañu más pequeñu del CPU, como resultáu de tar implementáu nuna simple pastilla, significa tiempos de conmutación más rápidos por cuenta de factores físicos como'l decrecimiento de la capacitancia parásita de les puertes. Esto dexó que los microprocesadores síncronos tengan tiempos de reló con un rangu de decenes de megahercios a dellos gigahercios. Adicionalmente, como aumentó la capacidá de construyir transistores descomanadamente pequeños nun IC, la complexidá y el númberu de transistores nun simple CPU tamién s'amontó dramáticamente. Esti enclín llargamente reparáu ye descrita pola llei de Moore, que demostró hasta la fecha, ser una predición bastante exacta de la crecedera de la complexidá de los CPUs y otros IC.

Ente que, nos pasaos sesenta años camudaron drásticamente, la complexidá, el tamañu, la construcción y la forma xeneral de la CPU, ye notable que'l diseñu y el funcionamientu básicu nun camudó demasiáu. Casi tolos CPU comunes de güei pueden describise con precisión como máquines de programa almacenáu de von Neumann.The so-called 'von Neumann' avantu expounded the idea of stored programs, stored say, on punch cards, paper tape, or magnetic tape A midida que la yá mentada llei del Moore sigue calteniéndose verdadera, presentáronse esmoliciones sobre les llendes de la teunoloxía de transistor del circuitu integráu. La miniaturización estrema de puertes electróniques ta causando los efeutos de fenómenos que se vuelven muncho más significativos, como la electromigración y el subumbral de perda. Estes nueves esmoliciones tán ente los munchos factores que faen a investigadores estudiar nuevos métodos de computación como la computación cuántica, según ampliar l'usu de paralelismu y otros métodos qu'estienden la utilidá del modelu clásicu de von Neumann.

 Operación 
La operación fundamental de la mayoría de les CPU ye executar una secuencia d'instruiciones almacenaes llamaes «programa». El programa ye representáu por una serie de númberos que se caltienen nuna cierta clase de memoria d'ordenador. Hai cuatro pasos que casi toles CPU d'arquiteutura de von Neumann usen na so operación: fetch, decode, execute, y writeback, (lleer, decodificar, executar y escribir).


 Fetch 
El primer pasu, lleer, implica'l recuperar una instruición, (que ye representada por un númberu o una secuencia de númberos), de la memoria de programa. La llocalización na memoria del programa ye determinada por un contador de programa (PC), qu'almacena un númberu qu'identifica la direición de la siguiente instruición que se debe buscar. Dempués lléese una instruición, el PC ye amontáu pol llargor de la instruición en términos d'unidaes de memoria de cuenta que va contener la direición de la siguiente instruición na secuencia. Since the program counter counts memory addresses and not instructions, it is incremented by the number of memory units that the instruction word contains. In the case of simple fixed-length instruction word ISAs, this is always the same number. For example, a fixed-length 32-bit instruction word ISA that uses 8-bit memory words would always increment the PC by 4 (except in the case of jumps). ISAs that use variable length instruction words increment the PC by the number of memory words corresponding to the last instruction's length. Frecuentemente, la instruición a ser lleida ten de ser recuperada de memoria relativamente lenta, faciendo detener al CPU mientres espera que la instruición sía devuelta. Esta cuestión tratar en gran midida nos procesadores modernos polos caxés y les arquitectures pipeline (ver embaxo).

 Decode 
Nel pasu de decodificación, la instruición ye estremada en partes que tienen significáu pa otres unidaes de la CPU. La manera en que'l valor de la instruición numbérica ye interpretáu ta definida pola arquiteutura del conxuntu d'instruiciones (el ISA) de la CPU.Because the instruction set architecture of a CPU is fundamental to its interface and usage, it is often used as a classification of the "type" of CPU. For example, a "PowerPC CPU" uses some variant of the PowerPC ISA. A system can execute a different ISA by running an emulator. De cutiu, un grupu de númberos na instruición, llamaos opcode, indica qué operación realizar. Les partes restantes del númberu usualmente apurren información riquida pa esa instruición, como por casu, operandos pa una operación d'adición. Tales operandos pueden dase como un valor constante (llamáu valor inmediatu), o como un llugar p'alcontrar un valor, que según lo determinao por dalgún manera de direición, pue ser un rexistru o una direición de memoria. En diseños más vieyos les unidaes del CPU responsables de decodificar la instruición yeren dispositivos de hardware fixos. Sicasí, en CPUs y ISAs más astractos y complicaos, ye frecuentemente usáu un microprograma p'ayudar a traducir instruiciones en delles señales de configuración pal CPU. Esti microprograma ye dacuando reescribible de tal manera que puede ser modificáu pa camudar la manera en que'l CPU decodifica instruiciones inclusive dempués de que fuera fabricáu.

 Execute 

Dempués de los pasos de llectura y decodificación, ye lleváu a cabu'l pasu de la execución de la instruición. Mientres esti pasu, delles unidaes del CPU son coneutaes de tal manera qu'elles pueden realizar la operación deseyada. Si, por casu, una operación de adición foi solicitada, una unidá aritméticu lóxica (ALU) va ser coneutada a un conxuntu d'entraes y un conxuntu de salíes. Les entraes apurren los númberos a ser sumaos, y les salíes van contener la suma final. La ALU contién la circuitería pa realizar operaciones simples d'aritmética y lóxica nes entraes, como adición y operaciones de bits (bitwise). Si la operación de adición produz un resultáu demasiada grande pa poder ser remanáu pol CPU, tamién puede ser afecha una bandera (flag) de llena aritmética alcontrada nun rexistru de banderes (ver embaxo la seición sobre rangu de númberos enteros).

 Writeback 
El pasu final, la escritura, a cencielles «escribe» los resultaos del pasu d'execución a una cierta forma de memoria. Bien de cutiu, los resultaos son escritos a dalgún rexistru internu del CPU p'accesu rápidu por subsecuentes instruiciones. N'otros casos los resultaos pueden ser escritos a una memoria principal más lenta pero más barata y más grande. Dellos tipos d'instruiciones manipolien el contador de programa en llugar de direutamente producir datos de resultancia. Estes son llamaes xeneralmente "saltos" (jumps) y faciliten comportamientos como bucles, la execución condicional de programes (col usu de saltos condicionales), y funciones en programes.Some early computers like the Harvard Mark I did not support any kind of "jump" instruction, effectively limiting the complexity of the programs they could run. It is largely for this reason that these computers are often not considered to contain a CPU proper, despite their close similarity as stored program computers. Munches instruiciones tamién van camudar l'estáu de díxitos nun rexistru de "banderes". Estes banderes pueden ser usaes pa influyir cómo se porta un programa, yá que de cutiu indiquen la resultancia de delles operaciones. Por casu, un tipu d'instruición de "comparanza" considera dos valores y afita un númberu, nel rexistru de banderes, d'alcuerdu a cuál ye'l mayor. Entós, esta bandera puede ser usada por una posterior instruición de saltu pa determinar el fluxu de programa.

Dempués de la execución de la instruición y l'escritura de los datos resultantes, el procesu enteru repitir col siguiente ciclu d'instruición, de normal lleendo la siguiente instruición en secuencia debíu al valor amontáu nel contador de programa. Si la instruición completada yera un saltu, el contador de programa va ser modificáu pa contener la direición de la instruición a la cual saltóse, y la execución del programa sigue de normal. En CPUs más complexos que'l descritu equí, múltiples instruiciones pueden ser lleíes, decodificadas, y executaes simultáneamente. Esta seición describe lo que ye referíu xeneralmente como'l "entubado RISC clásicu" (Classic RISC pipeline), que de fechu ye abondo común ente los CPU simples usaos en munchos dispositivos electrónicos, de cutiu llamaos microcontroladores.This description is, in fact, a simplified view even of the Classic RISC pipeline. It largely ignores the important role of CPU cache, and therefore the access stage of the pipeline. See the respective articles for more details.

 Diseñu y implementación 

 Rangu d'enteros 
La manera en qu'un CPU representa los númberos ye una opción de diseñu qu'afecta les más básiques formes en que'l dispositivu funciona. Dalgunes de les primeres calculadores dixitales usaron, pa representar númberos internamente, un modelu llétricu del sistema de numberación decimal común (base diez). Dellos otros ordenadores usaron sistemes de numberación más exóticos como'l ternariu (base trés). Casi tolos CPU modernos representen los númberos en forma binaria, onde cada díxitu ye representáu por una cierta cantidá física de dos valores, como un voltaxe "alto" o "so".The physical concept of voltage is an analog one by its nature, practically having an infinite range of possible values. For the purpose of physical representation of binary numbers, set ranges of voltages are defined as one or zero. These ranges are usually influenced by the operational parameters of the switching elements used to create the CPU, such as a transistor's threshold level.

250px|thumb|left|Microprocesador MOS 6502 nun dual in-line package (encapasulado en doble llinia), un diseñu desaxeradamente popular de 8 bits.

Cola representación numbérica tán rellacionaos el tamañu y la precisión de los númberos qu'un CPU puede representar. Nel casu d'un CPU binariu, un bit referir a una posición significativa nos númberos con que trabaya un CPU. El númberu de bits (o de posiciones numbériques, o díxitos) qu'un CPU usa pa representar los númberos, de cutiu llámase "tamañu de la pallabra", "anchu de bits", "anchu de ruta de datos", o "precisión del númberu enteru" cuando s'ocupa puramente de númberos enteros (n'oposición a númberos de coma flotante). Esti númberu difier ente les arquitectures, y de cutiu dientro de distintes unidaes del mesmu CPU. Por casu, un CPU de 8 bits remana un rangu de númberos que pueden ser representaos por ocho díxitos binarios, cada díxitu teniendo dos valores posibles, y en combinación los 8 bits teniendo 2⁸ o 256 númberos discretos. N'efeutu, el tamañu del númberu enteru afita una llende de hardware nel rangu de númberos enteros que'l software cuerre y que'l CPU puede usar direutamente.While a CPU's integer size sets a limit on integer ranges, this can (and often is) overcome using a combination of software and hardware techniques. By using additional memory, software can represent integers many magnitúes larger than the CPU can. Sometimes the CPU's ISA will even facilitate operations on integers larger that it can natively represent by providing instructions to make large integer arithmetic relatively quick. While this method of dealing with large integers is somewhat slower than utilizing a CPU with higher integer size, it is a reasonable trade-off in cases where natively supporting the full integer range needed would be cost-prohibitive. See Arbitrary-precision arithmetic for more details on purely software-supported arbitrary-sized integers.

El rangu del númberu enteru tamién puede afectar el númberu de posiciones en memoria que'l CPU puede direccionar (alcontrar). Por casu, si un CPU binariu utiliza 32 bits pa representar una direición de memoria, y cada direición de memoria representa a un octeto (8 bits), la cantidá máxima de memoria que'l CPU puede direccionar ye 232 octetos, o 4 GB. Esta ye una vista bien simple del espaciu de direición del CPU, y munchos diseños modernos usen métodos de direición muncho más complexos como paxinación p'alcontrar más memoria que'l so rangu enteru dexaría con un espaciu de direición planu.

Niveles más altos del rangu de númberos enteros riquen más estructures pa remanar los díxitos adicionales, y poro, más complexidá, tamañu, usu d'enerxía, y xeneralmente costu. Por ello, nun ye del tou infrecuente, ver microcontroladores de 4 y 8 bits usaos n'aplicaciones modernes, entá cuando tán disponibles CPU con un rangu muncho más alto (de 16, 32, 64, ya inclusive 128 bits). Los microcontroladores más simples son xeneralmente más baratos, usen menos enerxía, y polo tanto estenen menos calor. Tou esto pueden ser considerancies de diseñu importantes pa los dispositivos electrónicos. Sicasí, n'aplicaciones del estremu altu, los beneficios producíos pol rangu adicional, (más de cutiu l'espaciu de direición adicional), son más significativos y con frecuencia afecten les opciones del diseñu. Pa ganar delles de les ventayes proporcionaes polos llargores de bits tantu más baxes, como más altes, munches CPUs tán diseñaes con anchos de bit distintos pa distintes unidaes del dispositivu. Por casu, el IBM System/370 usó un CPU que foi sobremanera de 32 bits, pero usó precisión de 128 bits dientro de les sos unidaes de coma flotante pa facilitar mayor exactitú y rangu de númberos de coma flotante. Munchos diseños posteriores de CPU usen un amiestu d'anchu de bits similar, especialmente cuando'l procesador ta diseñáu pa usos de propósitu xeneral onde se riquir un razonable equilibriu ente la capacidá de númberos enteros y de coma flotante.

 Frecuencia de reló 

La mayoría de los CPU, y ello ye que la mayoría de los dispositivos de lóxica secuencial, son de naturaleza síncrona.In fact, all synchronous CPU use a combination of sequential logic and combinatorial logic. (See boolean logic) Esto ye, tán diseñaos y operen en función d'una señal de sincronización. Esta señal, conocida como señal de reló, usualmente toma la forma d'una onda cuadrada periódica. Calculando'l tiempu máximu en que les señales llétriques pueden movese nes varies bifurcaciones de los munchos circuitos d'un CPU, los diseñadores pueden escoyer un periodu apropiáu pa la señal del reló.

Esti periodu tien de ser más llargu que la cantidá de tiempu que toma a una señal movese, o arrobinase nel peor de los casos. Al afitar el periodu del reló a un valor bastante mayor sobre'l retardo del espardimientu del peor casu, ye posible diseñar tol CPU y la manera que mueve los datos alredor de los "cantos" de la xubida y baxada de la señal del reló. Esto tien la ventaya de simplificar el CPU significativamente, tantu nuna perspeutiva de diseñu, como nuna perspeutiva de cantidá de componentes. Sicasí, esto tamién tien la desventaxa que tol CPU tien d'esperar polos sos elementos más lentos, entá cuando delles unidaes de la mesma son muncho más rápides. Esta llimitación foi compensada en gran parte por dellos métodos d'aumentar el paralelismu del CPU (ver embaxo).

Sicasí, les meyores arquiteutóniques por sigo soles, nun solucionen toles desventaxes de CPUs globalmente síncronas. Por casu, una señal de reló ta suxeta a los retardos de cualesquier otra señal llétrica. Velocidaes de reló más altes en CPUs cada vez más complexes faen más malo de caltener la señal del reló en fase (sincronizada) al traviés de tola unidá. Esto condució que munchos CPU modernos rican que se-yos apurra múltiples señales de reló idéntiques, pa evitar retardar una sola señal lo suficiente como pa faer al CPU funcionar incorreutamente. Otru importante problema cuando la velocidá del reló aumenta dramáticamente, ye la cantidá de calor que ye estenáu pol CPU. La señal del reló camuda constantemente, provocando la conmutación de munchos componentes (cambéu d'estáu) ensin importar si tán siendo usaos nesi momentu. Polo xeneral, un componente que ta camudando d'estáu, usa más enerxía qu'un elementu nun estáu estáticu. Poro, a midida que la velocidá del reló aumenta, asina lo fai tamién la disipación de calor, causando que'l CPU rica soluciones d'enfriamientu más efeutives.

Un métodu de tratar la conmutación de componentes innecesarios llámase'l clock gating, qu'implica apagar la señal del reló a los componentes innecesarios, efeutivamente desactivándolos. Sicasí, esto ye frecuentemente consideráu como malo d'implementar y polo tanto nun ve usu común fora de diseños de bien baxa potencia. Un notable diseñu de CPU tardíu qu'utiliza una amplia compuerta del reló p'amenorgar los requisitos de potencia de la consola de videoxuegos ye la de la Xbox 360 basada na PowerPC de IBM. Otru métodu de tratar dalgunos de los problemes d'una señal global de reló ye la completa remoción de la mesma. Ente que quitar la señal global del reló fai, de munches maneres, considerablemente más complexu'l procesu del diseñu, en comparanza con diseños síncronos similares, los diseños asincrónicos (o ensin reló) tienen marcaes ventayes nel consumu d'enerxía y la disipación de calor. Anque se trate de daqué infrecuente, les CPUs completes construyéronse ensin utilizar una señal global de reló. Dos notables exemplos d'esto son el AMULET, qu'implementa l'arquiteutura del ARM, y el MiniMIPS, compatible col MIPS R3000. En llugar de remover totalmente la señal del reló, dellos diseños de CPU dexen que ciertes unidaes del dispositivu sían asincrónicas, como por casu, usando ALU en conxunción con pipelining superescalar p'algamar delles ganancies nel desempeñu aritméticu. Ente que nun tea dafechu claru si los diseños totalmente asincrónicos pueden desempeñase a un nivel comparable o meyor que los sos contrapartes síncronas, rescampla qu'a lo menos sobresalen nes operaciones matemátiques más simples. Esto, combináu coles sos escelentes carauterístiques de consumu d'enerxía y disipación de calor, facer bien fayadizos para sistemes enfiñíos.

 Paralelismu 


La descripción de la operación básica d'un CPU ufiertada na seición anterior describe la forma más simple que puede tomar un CPU. Esti tipu de CPU, usualmente referíu como subescalar, opera sobre y executa una sola instruición con una o dos pieces de datos al empar.

Esti procesu da llugar a una ineficacia inherente en CPU subescalares. Yá que solamente una instruición ye executada al empar, tol CPU tien d'esperar qu'esa instruición complétese antes de dar en la siguiente instruición. Como resultancia, la CPU subescalar queda "paralizáu" n'instruiciones que tomen más d'un ciclu de reló pa completar la so execución. Inclusive la adición d'una segunda unidá d'execución (ver embaxo) nun ameyora enforma'l desempeñu. En llugar d'un camín quedando conxeláu, agora dos caminos paralícense y aumenta el númberu de transistores ensin usar. Esti diseñu, onde los recursos d'execución de la CPU pueden operar con solamente una instruición al empar, solo puede, posiblemente, algamar el desempeñu angular (una instruición por ciclu de reló). Sicasí, el desempeñu casi siempres ye subescalar (menos d'una instruición por ciclu).

Les tentatives d'algamar un desempeñu angular y meyor, resultaron nuna variedá de metodoloxíes de diseñu que faen portase al CPU menos linealmente y más en paralelu. Cuando se refier al paralelismu nos CPU, xeneralmente son usaos dos términos pa clasificar estes téuniques de diseñu.

 El paralelismu a nivel d'instruición, n'inglés instruction level parallelism (ILP), busca aumentar la tasa na cual les instruiciones son executaes dientro d'un CPU, esto ye, aumentar l'usu de los recursos d'execución na pastilla.
 El paralelismu a nivel de filo d'execución, n'inglés thread level parallelism (TLP), que se propón amontar el númberu de filos (efeutivamente programes individuales) qu'un CPU pueda executar simultáneamente.

Cada metodoloxía estrémase tantu nes maneres nes que tán implementaes, como na efeutividá relativa que producen nel aumentu del desempeñu de la CPU pa una aplicación.Neither ILP nor TLP is inherently cimeru over the other; they are simply different means by which to increase CPU parallelism. As such, they both have advantages and disadvantages, which are often determined by the type of software that the processor is intended to run. High-TLP CPUs are often used in applications that lend themselves well to being split up into numerous smaller applications, so-called "embarrassingly parallel problems". Frequently, a computational problem that can be solved quickly with high TLP design strategies like SMP take significantly more time on high ILP devices like superscalar CPUs, and vice trata.

 ILP: Segmentación y arquiteutura superescalar 


Unu de los métodos más simples pa llograr amontar el paralelismu ye empezar los primeros pasos de lleer y decodificar la instruición primero que la instruición anterior terminara d'executase. Esta ye la forma más simple d'una téunica conocida como segmentación (instruction pipelining n'inglés), y ye utilizada en casi tolos CPU de propósitu xeneral modernos. Al estremar la ruta d'execución n'etapes discretes, la tubería dexa que más d'una instruición sía executada en cualquier tiempu. Esta separación puede ser comparada a una llinia d'ensamblaxe, na cual una instruición ye fecha más completa en cada etapa hasta que sale de la tubería d'execución y ye retirada del mesmu.

Sicasí, la tubería introduz la posibilidá d'una situación onde ye necesariu terminar la resultancia de la operación anterior pa completar la operación siguiente; una condición llamada de cutiu como conflictu de dependencia de datos. Pa faer frente a esto, ten de ser tomáu un cuidu adicional pa comprobar estes clases de condiciones, y si esto asocede, tien de retrasase una porción de la tubería d'instruición. Naturalmente, llograr esto rique circuitería adicional, el procesadores entubados son más complexos que los subescalares, pero non muncho. Un procesador entubado puede aportar a casi dafechu angular, solamente tornáu poles abruptas paraes de la tubería (una instruición durando más d'un ciclu de reló nuna etapa).


Una meyora adicional sobre la idea del entubado d'instruición (instruction pipelining) condució al desenvolvimientu d'un métodu que mengua inclusive más el tiempu ociosu de los componentes del CPU. Diseños que se diz que son superescalares inclúin una llarga tubería d'instruición y múltiples unidaes d'execución idéntiques. Nuna tubería superescalar, múltiples instruiciones son lleíes y pasaes a un espachador, que decide si les instruiciones puédense o nun executar en paralelu (simultáneamente). De ser asina, son espachaes a les unidaes d'execución disponibles, dando por resultancia la capacidá por que delles instruiciones sían executaes simultáneamente. Polo xeneral, cuanto más instruiciones un CPU superescalar ye capaz d'espachar simultáneamente a les unidaes d'execución n'espera, más instruiciones van ser completaes nun ciclu dau.

La mayor parte de la dificultá nel diseñu d'una arquiteutura superescalar de CPU fuelga en crear un espachador eficaz. L'espachador precisa poder determinar rápida y correutamente si les instruiciones pueden executase en paralelu, tan bien como espachales d'una manera que caltenga ocupaes tantes unidaes d'execución como sía posible. Esto rique que la tubería d'instruición sía enllenada tan de cutiu como sía posible y amóntase la necesidá, nes arquitectures superescalares, de cantidaes significatives de caxé de CPU. Esto tamién crea téuniques pa evitar peligros como la predición de bifurcación, execución especulativa, y la execución fora d'orde, cruciales pa caltener altos niveles de desempeñu. Tratando de predicir qué caña (o trayeutoria) va tomar una instruición condicional, la CPU puede embrivir el númberu de vegaes que tou la canal tien d'esperar hasta que se complete una instruición condicional. Frecuentemente, la execución especulativa apurre aumentos modestos del desempeñu al executar porciones de códigu que nun puede ser necesariu dempués de completase una operación condicional. Fora de la orde d'execución camuda de dalguna manera l'orde en que s'executen les instruiciones p'amenorgar retardos por cuenta de les dependencies de datos. Tamién nel casu d'instruiciones individuales de datos múltiples — el procesadores modernos, en casu de que se procesaren una gran cantidá de datos del mesmu tipu, pueden desactivar partes de la tubería de manera que cuando s'executa una sola sentencia munches vegaes, la CPU salta la captación y decodifica fases y polo tanto aumenta considerablemente'l rendimientu en ciertes ocasiones, sobremanera nos motores de programes altamente monótonos como'l software de creación de video y procesamientu de fotografíes.

Nel casu onde una porción de la CPU ye superescalar y una parte nun lu ye, la parte que nun ye superescalar sufre nel desempeñu por cuenta de les paraes d'horariu. El Intel Pentium orixinal (P5) tenía dos ALUs superescalares que podíen aceptar, caúna, una instruición por ciclu de reló, pero'l so FPU nun podía aceptar una instruición por ciclu de reló. Asina'l P5 yera superescalar na parte de númberos enteros pero nun yera superescalar de númberos de coma (o puntu [decimal]) flotante. El socesor a l'arquiteutura del Pentium d'Intel, el P6, amestó capacidaes superescalares a les sos funciones de coma flotante, y polo tanto produció un significativu aumentu nel desempeñu d'esti tipu d'instruiciones.

Tanto'l diseñu superescalar como'l entubado simple aumenten el ILP d'una CPU al dexar a un solu procesador completar la execución d'instruiciones en ratios que devasen una instruición por ciclu (IPC).Best-case scenario (or peak) IPC rates in very superscalar architectures are difficult to maintain since it is impossible to keep the instruction pipeline filled all the time. Therefore, in highly superscalar CPU, average sustained IPC is often discussed rather than peak IPC. La mayoría de los modernos diseños de CPU son a lo menos daqué superescalares, y na última década, casi tolos diseños de CPU de propósitu xeneral son superescalares. Nos últimos años daqué del énfasis nel diseñu d'ordenadores d'altu ILP movióse del hardware del CPU escontra'l so interfaz de software, o ISA. La estratexa very long instruction word o VLIW, causa a dalgún ILP a ser implícitu direutamente pol software, amenorgando la cantidá de trabayu que'l CPU tien de realizar pa da-y un emburrie significativu al ILP y polo tanto amenorgar la complexidá del diseñu.

 Paralelismu a nivel de filos 
Otra estratexa pa llograr el rendimientu ye executar dellos programes o filos en paralelu. Esta área d'investigación conozse como computación paralela. Na taxonomía de Flynn, esta estratexa conozse como múltiples instruiciones de dellos datos o MIMD.

Una teunoloxía utilizada pa esti propósitu foi'l multiprocesamiento (MP). El puntapié inicial d'esta teunoloxía conozse como multiprocesamiento simétricu (SMP), onde un pequeñu númberu de CPU comparten una visión coherente del so sistema de memoria. Nesti esquema, cada CPU tien un hardware adicional pa caltener una visión constantemente actualizada de la memoria. Pa evitar visites rancies de la memoria, les CPU pueden cooperar nel mesmu programa y los programes pueden migrar dende una CPU a otra. P'aumentar el númberu de CPUs que cooperen más allá d'unes poques, introducir en 1990, los esquemes tales como'l non-uniform memory Access (accesu non uniforme a memoria) (NUMA) y los protocolos de coherencia basaos en direutorios. Los sistemes SMP llindar a un pequeñu númberu de CPU ente que los sistemes NUMA construyéronse con miles de procesadores. Primeramente, el multiprocesamiento construyóse usando múltiples CPUs discretes y tableros pa implementar la interconexón ente los procesadores. Cuando los procesadores y el so interconexón fueren implementaes nun únicu chip de siliciu, la teunoloxía conozse como un procesador multinucleu.

Darréu, reconocióse qu'esistía un paralelismu bien estrechu con un únicu programa. Un únicu programa podría tener dellos filos (o funciones) que podríen ser executaes por separáu o en paralelu. Dalgunos de los primeros exemplos d'esta teunoloxía implementaba procesamientu de entrada/salida tales como'l accesu direutu a memoria como un filo separáu del filo computáu. Na década de 1970, introducióse un enfoque más xeneral a esta teunoloxía, cuando se diseñaron sistemes pa executar múltiples filos de computación en paralelu. Esta teunoloxía conozse como multihilo (MT).

Esti enfoque considérase más rentable que la del multiprocesamiento, yá que solo retrúcase un pequeñu númberu de componentes dientro d'una CPU pa soportar MT n'oposición a la totalidá de la CPU nel casu de MP. En MT, les unidaes d'execución y el sistema de memoria incluyendo los caxés son compartíos ente dellos filos. La desventaxa de MT ye que'l soporte de hardware pa multihilo ye más visible pal software que la de MP y polo tanto'l software supervisor como'l de los sistemes operativos tienen que sometese a los cambeos más grandes pa sofitar MT. Un tipu de MT que s'implementó ye conocíu como bloque multihilo, onde s'executa un filo hasta que se paralice esperando que tornen los datos dende la memoria esterna. Nesti esquema, la CPU tendría entós que camudar rápido a otru filo que ta llistu pa funcionar, el interruptor munches vegaes realiza un ciclu de reló de la CPU, como la teunoloxía UltraSPARC. Otru tipu de MT denominar multihilo simultáneu, onde les instruiciones de múltiples filos executar en paralelu dientro d'un ciclu de reló de la CPU.

 Paralelismu de datos 

Un menos común pero cada vez más importante paradigma de CPU (y ello ye que de computación polo xeneral) trata con vectores. El procesadores de los que se faló enantes son toos referíos como ciertu tipu de dispositivu angular.Earlier the term scalar was used to compare most the IPC (instructions per cycle) count afforded by various ILP methods. Here the term is used in the strictly mathematical sense to contrast with vectors. See scalar (mathematics) and vector (spatial). Como implica'l so nome, el procesadores vectoriales ocupar de múltiples pieces de datos nel contestu d'una instruición, esto oldea con el procesadores angulares, que traten una pieza de datu per cada instruición. Estos dos esquemes d'ocupase de los datos son xeneralmente referíos respeutivamente como SISD (single instruction, single data) y SIMD (single instruction, multiple data). La gran utilidá en crear CPU que s'ocupen de vectores de datos anicia na optimización de xeres que tienden a riquir la mesma operación, por casu, una suma, o un productu angular, a ser realizáu nun gran conxuntu de datos. Dellos exemplos clásicos d'esti tipu de xeres son les aplicaciones multimedia (imáxenes, videu, y soníu), según munchos tipos de xeres científiques y d'inxeniería. Ente que una CPU angular tien de completar tol procesu de lleer, decodificar, y executar cada instruición y valor nun conxuntu de datos, una CPU vectorial puede realizar una simple operación nun comparativamente grande conxuntu de datos con una sola instruición. De xacíu, esto ye solamente posible cuando l'aplicación tiende a riquir munchos pasos qu'apliquen una operación a un conxuntu grande de datos.

La mayoría de les primeres CPU vectoriales, como'l Cray-1, acomuñáronse casi puramente a aplicaciones d'investigación científica y criptografía. Sicasí, a midida que la multimedia mover en gran parte a medios dixitales, aportó a significativa la necesidá d'una cierta forma de SIMD en CPUs de propósitu xeneral. Poco dempués de qu'empezara a ser común incluyir unidaes de coma flotante en procesadores d'usu xeneral, tamién empezaron a apaecer especificaciones y implementaciones d'unidaes d'execución SIMD pa les CPU d'usu xeneral. Dalgunes d'estes primeres especificaciones SIMD, como'l MMX d'Intel, fueron solamente pa númberos enteros. Esto demostró ser una torga significativa pa dellos desarrolladores de software, una y bones munches de les aplicaciones que se beneficiaben del SIMD trataben sobremanera con númberos de coma flotante. Progresivamente, estos primeros diseños fueron refinaos y rehechos en dalguna de les comunes, modernes especificaciones SIMD, que xeneralmente tán acomuñaes a un ISA. Dellos exemplos modernos notables son el SSE d'Intel y el AltiVec rellacionáu col PowerPC (tamién conocíu como VMX).Although SSE/SSE2/SSE3 have superseded MMX in Intel's xeneral purpose CPU, later IA-32 designs still support MMX. This is usually accomplished by providing most of the MMX functionality with the same hardware that supports the much more expansive SSE instruction sets.

 Desempeñu 
El "desempeñu" (performance) o la velocidá d'un procesador depende de, ente munchos otros factores, la velocidá del reló (xeneralmente dada en múltiplos de hertz) y les instruiciones por ciclu de reló (IPC), que xuntos son los factores pa les Millones d'instruiciones per segundu instruiciones per segundu (IPS) que'l CPU puede rindir.
Munchos reportes de valores IPS representaron tases d'execución "picu" en secuencies d'instruiciones artificiales con poques cañes, ente que les cargues de trabayu realistes consisten nuna combinación d'instruiciones y d'aplicaciones, dalgunes de les cuales riquen más tiempu pa executar qu'otres. El rendimientu de la xerarquía de memoria tamién afecta en gran midida al rendimientu del procesador, una tema bien poca teníu en cuenta nos cálculos de MIPS. Por cuenta de estos problemes, pa esti fin, desenvolviéronse dellos exámenes estandarizados, tales como SPECint munches vegaes llamaos "puntos de referencia" - pa tratar de midir el rendimientu real efeutivu n'aplicaciones d'usu cotidianu.

El desempeñu de procesamientu de los ordenadores amóntase utilizando procesadores multinucleu, que n'esencia ye coneutar dos o más procesadores individuales (llamaos nucleos nesti sentíu) nun solu circuitu integráu. Idealmente, un procesador de doble nucleu sería casi dos veces tan potente como un procesador de nucleu únicu. Na práutica, la ganancia de desempeñu ye enforma menor, solo alredor del 50%,  por cuenta de la implementación d'algoritmos imperfectos de software. L'aumentu del númberu de nucleos nun procesador (esto ye, dual-core, quad-core, etc) aumenta la carga de trabayu que puede remanase. Esto significa que'l procesador agora puede remanar numberosos eventos asíncronos, interrupciones, etc que pueden tomar un "peaxe" na CPU (Central Processing Unit) cuando s'acorvia. Estos nucleos pueden considerase como distintes plantes nuna planta de procesamientu, col manexu de cada pisu una xera distinta. N'ocasiones, estos nucleu remanen les mesmes xeres que los nucleos axacentes a ellos si un solu nucleu nun ye abondu pa remanar la información.

Por cuenta de les capacidaes específiques de les CPU modernes, como Hyper-Threading y Uncore, qu'impliquen l'intercambiu de recursos reales de la CPU ente que l'oxetivu d'un mayor usu, supervisar los niveles de rendimientu y l'usu del hardware foise convirtiendo gradualmente nuna xera más complexa. Como respuesta, delles CPUs implementen lóxica de hardware adicional que controla l'usu real de les diverses partes d'una CPU y apurre dellos contadores accesibles a software; un exemplu ye la teunoloxía Performance Counter Monitor ("Monitor de contador de rendimientu") d'Intel.

 Ver tamién 

 Accelerated processing unit
 Maneres de direccionamientu
 Complex instruction set computing (CISC)
 Bus (informática)
 Inxeniería en computación
 Voltaxe del nucleu de la CPU

 Zócalo de CPU
 Procesador dixital de señal
 HyperThreading
 Microprocesador
 Procesador multinucleu
 Aniellu de seguridá
 Reduced instruction set computing (RISC)

 Notes 

 Referencies 

 Bibliografía 










 Enllaces esternos 

 Diseños de microprocesador 
 (n'inglés)
 . (n'inglés)
 25 Microchips que solmenaron al mundu – un artículu del Institutu d'Inxeniería Llétrica y Electrónica. (n'inglés)
 Advanced Micro Devices - Advanced Micro Devices, un diseñador de principalmente CPU del ordenador personal compatible con x86. (n'inglés)
 ARM Ltd - ARM Ltd, unu de los pocos diseñadores de CPU que se beneficien namái por llicenciar los sos diseños en llugar de fabricalos. Los microprocesadores d'arquiteutura ARM atopar ente los más populares nel mundu p'aplicaciones enfiñíes. (n'inglés)
 Freescale Semiconductor (antes de Motorola) - Freescale Semiconductor, diseñador de dellos procesadores enfiñíos basaos en PowerPC y SoC. (n'inglés)
 IBM Microelectronics - División de Microelectrónica d'IBM, que ye responsable d'enforma en diseños basaos en POWER y PowerPC, incluyendo munches de les CPU utilizada nes postreres consoles de videoxuegos de 2012. (n'inglés)
 Intel Corp - un fabricante de delles llinies de CPU notables, incluyendo IA-32, IA-64, y XScale. Tamién ye un fabricante de chips de distintos periféricos pal so usu col so CPU. (n'inglés)
 MIPS Technologies - MIPS Technologies, desarrolladores de l'arquiteutura MIPS, pioneru en diseños RISC. (n'inglés)
 Sun Microsystems - Sun Microsystems, desarrolladores de l'arquiteutura SPARC, un diseñu RISC. (n'inglés)
  - Texas Instruments división semiconductores. Diseña y fabrica dellos tipos de microcontroladores de baxu consumu ente los sos munchos otros productos semiconductores. (n'inglés)
 Transmeta - Transmeta Corporation. Creadores de x86 de baxa potencia compatibles, como Crusoe y Efficeon. (n'inglés)

 Llectura adicional 
 Diseñu del procesador: Una introducción - Introducción detallada al diseñu de microprocesadores. (n'inglés)
 Cómo trabayen los microprocesadores. (n'inglés)
 Pipelining: An Overview - Bona introducción y visión xeneral alrodiu de les téuniques de tuberíes de CPU pol personal d'Ars Technica. (n'inglés)
 SIMD Architectures - Introducción y esplicación de SIMD, sobremanera cómo se rellaciona colos ordenadores personales. Tamién por Ars Technica. (n'inglés)
 Llistáu de procesadores - Nomes de CPUs y principales carauterístiques. (n'inglés)