Unidade central de procesamento

Unha unidade central de procesamento (UCP) ou CPU (inglés: central processing unit) é un circuíto electrónico dunha computadora que leva a cabo as instrucións dun programa informático realizando as tarefas básicas aritméticas, lóxicas, de control e de entrada/saída especificadas polas instrucións.
O termo CPU comezouse a empregar na industria informática a comezos da década dos 60, e adoita empregarse tradicionalmente para referirse ao propio procesador e á unidade de control, facendo distinción entre estes elementos e outros coma a memoria ou os compoñentes de entrada/saída.
O formato, deseño e posta en funcionamento das CPU foron evolucionando ó longo da súa historia, pero o seu funcionamento fundamental segue sendo o mesmo que nos seus comezos. Os dous compoñentes principais dunha CPU son a unidade aritmético-lóxica (ALU), que realiza operacións aritméticas e lóxicas, e a unidade de control (CU), que extrae, descodifica e executa as instrucións dende a memoria, empregando a ALU cando é necesario. Historia
As primeiras CPU foron deseñadas a medida como parte dun computador máis grande, no entanto, este custoso método de deseñar as CPU a medida, por unha aplicación particular, desapareceu e foi substituído polo desenvolvemento de clases de CPU baratas e estandarizadas adaptadas para diferentes propósitos. Esta estandarización empezou na era dos transistores discretos, computadoras centrais, e microcomputadores, e acelerouse rapidamente coa popularización do circuíto integrado, este permitiu que sexan deseñados e fabricados procesadores máis complexos en espazos pequenos. Tanto a miniaturización como a estandarización das CPU aumentaron a presenza destes dispositivos dixitais na vida moderna moito máis alá das aplicacións limitadas de máquinas de computación dedicadas. Os microprocesadores modernos están presentes por todas partes.
Antes da chegada das máquinas parecidas ás unidades centrais de proceso de hoxe en día, os computadores como o ENIAC tiñan que ser recableados fisicamente antes de executar cada tarefa, por iso foron denominados 'computadores de programa fixo' (fixed-program computers), dado que tiñan que ser reconfigurados para poder executar un novo programa. Dado que o termo 'unidade central de proceso' defínese habitualmente como un dispositivo para a execución de software (Programa informático), os primeiros programas que podían recibir esta denominación chegaron cos computadores con programas gravados.
A idea de almacenar os programas informáticos xa estaba presente nos deseños de J. Presper Eckert e John William Mauchly no ENIAC, pero fora descartada para poder finalizar a máquina máis rapidamente. O 30 de xuño de 1945, antes de remtar o ENIAC, o matemático John von Neumann difundiu o documento titulado First Draft of a Report on the EDVAC (Primeiro borrador dun informe sobre o EDVAC). Neste documento describiu o deseño dun computador con programa almacenado que foi completado en agosto de 1949. O EDVAC foi deseñado para executar un certo número de instrucións de diferentes tipos. Estas instrucións podían ser combinados para crear programas útiles para o funcionamento do EDVAC. De maneira significativa, os programas escritos polo EDVAC foron almacenados na memoria de alta velocidade do ordenador no canto de ser definidos por medio do cableado físico no computador. Con isto superouse unha das limitacións importantes do ENIAC que necesitaba unha gran cantidade de tempo e esforzo para reconfigurar o ordenador para poder executar unha nova tarefa. Co deseño de von Neumann o programa, ou software, que executaba o EDVAC podía ser cambiado de maneira sinxela cambiando o contido da memoria do computador.
A pesar de que habitualmente se atribúe o deseño dos programas almacenados no computador a von Neumann debido ao seu deseño do EDVAC, antes outros investigadores como Konrad Zuse xa suxeriran e implementaran ideas parecidas. Ademais a denominada arquitectura Harvard do Harvard Mark E, que foi finalizado antes do EDVAC, tamén utilizara un deseño de programa almacenado utilizando cinta perforada no canto de memoria electrónica. A diferenza fundamental entre as arquitecturas de von Neumann e Harvard é que a última separa o almacenamento e o tratamento das instrucións e os datos, mentres que a primeira utiliza o mesmo espazo de memoria para ambas. A maioría das unidades centrais de proceso de hoxe en día seguen o deseño de von Neumann pero tamén é habitual atopar elementos da arquitectura Harvard.
Como todos os dispositivos dixitais, as unidades centrais de proceso só poden tratar un número limitado de estados e, xa que logo, requiren algúns elementos de conmutación para poder diferenciar e cambiar estes estados. Antes do desenvolvemento comercial do transistor os elementos de conmutación que se utilizaban habitualmente eran os relés e as válvulas de baleiro ou termoiónicas. A pesar de que estes dispositivos presentaban vantaxes de velocidade sobre os precedentes, puramente mecánicos, eran poucos fiables por diferentes razóns, por exemplo, para realizar un circuíto de lóxica secuencial en corrente continua con relés era necesario corrixir o problema do cimbreo do contacto. A pesar de que as válvulas termoiónicas non sufrían o problema do cimbreo do contacto, tiñan que ser quentadas antes de poder chegar a ser totalmente operativas e eventualmente deixaban de funcionar debido á pequena contaminación dos seus cátodos que se producía co funcionamento normal. Cando fallaba a estanqueidade acelerábase a contaminación do cátodo. Cando unha válvula fallaba había que proceder a un diagnóstico da CPU para localizar o compoñente afectado para proceder á súa substitución. En consecuencia, os primeiros computadores electrónicos baseados en válvulas termoiónicas eran máis rápidos pero menos fiables que os computadores electromecánicos baseados en relés.
Os computadores construídos baseándose nas válvulas termoiónicas, como o EDVAC, funcionaban unha media de oito horas seguidas sen avarías, mentres que os computadores baseados en relés, máis lentos pero máis antigos, como o Harvard Mark I raramente fallaban. Finalmente as CPU baseadas en válvulas de baleiro acabaron para substituír as de relés, a pesar dos problemas de fiabilidade, debido á diferenza substancial da velocidade de proceso que ofrecían. A maioría das primeiras CPU eran síncronas e traballaban en baixas frecuencias de reloxo en comparación cos deseños da microelectrónica actual. As frecuencias do sinal de reloxo de entre 100 quilohertz (kHz) e 4 megahercios (MHz) eran comúns na época e estaban limitadas en gran parte pola velocidade de conmutación dos dispositivos que utilizaban.
A expresión "unidade central de proceso" é, en termos xerais, unha descrición dunha certa clase de máquinas de lóxica que poden executar complexos programas de computador. Esta ampla definición pode facilmente ser aplicada a moitos dos primeiros computadores que existiron moito antes que o termo "CPU" estivese en amplo uso. Con todo, o termo en si mesmo e o seu acrónimo estiveron en uso na industria da informática como mínimo desde principios dos anos 1960.
CPU a base de transistores e circuítos integrados
A complexidade dos deseños das CPU foise incrementando a medida que a tecnoloxía permitía a construción de dispositivos electrónicos cada vez máis pequenos e fiables. A primeira destas melloras tecnolóxicas chegou coa aparición do transistor. As CPU transistorizadas das décadas de 1950 e 1960 xa non necesitaban os dispositivos de conmutación fráxiles e pouco fiables como as válvulas de baleiro ou os relés electromecánicos. Cos transistores construíronse CPU sobre un ou varios circuítos impresos que contiñan compoñentes discretos.
Durante este período apareceu un novo método de fabricación de transistores que permitía crear grupos de transistores sobre material semicondutor ocupando moi pouco espazo, era o nacemento dos circuítos integrados. Estes dispositivos permitían a creación dun gran número de transistores nun único bloque de material semicondutor (die) ou chip. Ao principio só se fixeron integracións miniaturizadas de circuítos moi básicos como as portas lóxicas de tipos NOR. As CPU baseadas nestes bloques son coñecidas habitualmente como dispositivos de baixa integración (SSI, nas siglas inglesas de small-scale integration). Este tipo de circuítos de 'baixa integración', como os que foron utilizados nos computadores das naves do programa Apollo, normalmente incorporaban unha decena de transistores en cada bloque. Polo tanto, a construción dunha CPU requiría a utilización de miles de chips, pero aínda así o espazo e a enerxía requiridos eran moi inferiores que no caso das baseadas en transistores discretos. A medida que avanzaba a tecnoloxía da microelectrónica e se incrementaba o número de transistores que se podían integrar nos circuítos, foi diminuíndo o número de circuítos integrados necesarios para construír unha CPU completa. Os circuítos de mediana integración (MSI de Medium-scale integration) traían un centenar de transistores mentres que os de grande integración (LSI de Large-scale integration) xa podían chegar aos 10. 000.
En 1964 IBM presentou a arquitectura System/360 que foi utilizada nunha serie de computadores que podían executar os mesmos programas a diferentes velocidades e rendemento. Este feito foi unha novidade significativa dado que entón a maioría dos computadores, incluídos os dun mesmo fabricante, eran incompatibles entre eles. Para facer posible esta mellora IBM utilizou o concepto de microcódigo que aínda é habitual nas CPU modernas. A arquitectura System/360 chegou a ser tan popular que dominou o mercado dos computadores centrais durante décadas e deixou un legado que continúa sendo utilizado en computadores modernos como a serie System z (2000) de IBM. O mesmo ano 1964, Digital Equipment Corporation (DEC) presentou outro computador que tivo unha grande influencia, o PDP-8, destinado ao mercado dos computadores científicos e de investigación. Máis tarde DEC presentaría a liña PDP-11, que chegou a ser moi popular, e que orixinalmente se baseaba en circuítos de baixa integración pero que pasou a utilizar compoñentes de grande integración cando estiveron ao alcance. En contraste cos seus predecesores baseados en circuítos de baixa e mediana integración, o primeiro desenvolvemento do PDP-11 que utilizaba compoñentes de grande integración traía unha CPU só baseada en catro circuítos integrados.
Os computadores baseados en transistores presentaban moitas vantaxes respecto dos seus predecesores, ademais da mellor fiabilidade e o menor consumo de enerxía, os transistores permitiron que as CPU puidesen funcionar a velocidades moito máis elevadas grazas ao feito que o tempo de conmutación dun transistor é aínda máis pequeno que o das válvulas de baleiro ou os relés. Grazas a estes dous elementos, o incremento da fiabilidade e o enorme incremento da velocidade de conmutación, a frecuencia de reloxo das CPU incrementouse ata chegar a lograr decenas de megahertzs. Mentres a utilización dos transistores e os circuítos integrados facíase habitual, empezouse a experimentar en novos deseños de alto rendemento como o SIMD (Single Instruction Multiple Data) utilizado nos procesadores vectoriais. Estes modelos experimentais levarían ao desenvolvemento dos Supercomputadorasupercomputadores como os fabricados pola empresa Cray Inc.
Microprocesadores
A aparición dos microprocesadores na década de 1970 afectou de maneira significativa aos deseños e a introdución das CPU. Desde a introdución en 1970 do primeiro microprocesador, o Intel 4004, e o primeiro que se utilizou de maneira habitual nas CPU, o Intel 8080 no 1974, a introdución de CPU baseándose en microprocesadores substituíu case de maneira completa todos os outros métodos alternativos. Os fabricantes de miniordenadores e computadores centrais daquela época adoptaron os seus propios programas de desenvolvemento dos seus propios circuítos integrados para actualizar as súas antigas arquitecturas e produciron microprocesadores cun xogo de instrucións que aseguraban a compatibilidade co software dos seus modelos antigos.
As anteriores xeracións de CPU foran desenvolvidas como un conxunto de compoñentes discretos e numerosos circuítos integrados sobre un ou máis circuítos impresos. Pola súa banda, os microprocesadores son construídos cun pequeno número de circuítos integrados, habitualmente un só, cun nivel moi alto de integración (VLSI de Very Large Scale Integration). O tamaño reducido das CPU é o resultado de seren desenvolvidas sobre un único bloque de material semicondutor (die), de forma que o factor de forma comporta un tempo de conmutación máis pequeno ao mesmo tempo que diminúe a capacidade parasita das portas.
Isto permitiu aos microprocesadores síncronos ter frecuencias de reloxo desde varias decenas de megahertzs ata varios xigahertzs. De maneira adicional, a medida que a evolución da tecnoloxía permitiu a construción de transistores de tamaño extremadamente pequeno sobre un circuíto integrado, a complexidade e o número de transistores que contén unha CPU incrementouse exponencialmente. Esta tendencia é descrita pola lei de Moore, que demostrou ser bastante certeira nas súas predicións sobre o crecemento da complexidade das CPU e outros tipos de circuítos integrados.
Mentres que a complexidade, o tamaño, a construción e a forma xeral das CPU cambiou drasticamente durante o últimos sesenta anos, hai que remarcar que o deseño de base e a función non cambiaron demasiado. Case todas as CPU actuais poden ser descritas de maneira coidadosa como máquinas con programa almacenado de von Neumann. Mentres que a lei de Moore, citada máis arriba, continúa sendo válida empezaron a xurdir cuestións ao redor dos límites dos circuítos integrados de transistores. A extrema miniaturización das portas electrónicas fixo que algúns efectos antes desprezables, se volvan cada vez máis importantes, son exemplos a electromigración (a degradación progresiva das interconexións metálicas que comporta unha perda da fiabilidade dos circuítos integrados) e as correntes de escape (que son os responsables dun sobreconsumo de enerxía eléctrica). Estes novos problemas son, entre moitos outros, algúns dos factores que trouxeron aos investigadores en busca de novas tecnoloxías como a computación cuántica ao mesmo tempo que se avanza na utilización da computación paralela e outros métodos que expanden a utilización do modelo clásico de von Neumann.
Os recentes procesadores multi núcleo comportan a presenza de varios núcleos dentro dun só circuíto integrado, a súa eficacia depende moito da topoloxía da interconexión entre os núcleos. Algunhas novas aproximacións como a superposición da memoria (memory stacking) están en estudo e terían que conducir a unha mellora do rendemento. As previsións baseadas na tendencia dos últimos 10 anos indicarían que os procesadores terían que lograr o petaflop ao redor do ano 2010 nos servidores e cara ao 2012 nos computadores persoais. O supercomputador militar IBM Roadrunner foi o primeiro en pasar esta barreira en xuño de 2008 e pouco máis tarde, en novembro do mesmo ano, o supercomputador Jaguar de Cray Inc. tamén o fixo. Elementos
Os microprocesadores modernos están integrados por millóns de transistores e outros compoñentes empaquetados nunha cápsula de tamaño variable segundo as necesidades da aplicación da CPU e que van actualmente desde o tamaño dunha lentella ata o de case unha galleta. As partes lóxicas que compoñen un microprocesador son, entre outras:
Unidade aritmético-lóxica
a UAL ou ALU, Arithmetic Logical Unit, en inglés, realiza unha operación segundo o opcode (operation code) indicado pola Unidade de Control. Esta operación pode ser aritmética (suma, resta, división, multiplicación), lóxica (AND, OR, NOT, XOR. .. ), ou un desprazamento dos bits da variable (shift).
Unidade de control
Unidade incluída na CPU encargada de ler as instrucións máquina gardadas na memoria principal e de xerar os sinais de control necesarios para controlar e coordinar o resto das unidades funcionais dun computador co propósito de executar as instrucións lidas.
Rexistros
Son pequenas unidades que almacenan datos do procesador, a capacidade dos rexistros será depende da arquitectura. Por exemplo en arquitecturas de 64 bits, os rexistros son de 64 bits, en procesadores Pentium, son de 32 bits, e en microcontroladores, adoitan ser de 8 bits. Pódense desenvolver con flip-flops ou, actualmente, con ficheiros de rexistros (Static RAM).
Memoria caché
Como o acceso a memoria principal é moi lento en comparación coas velocidades do procesador, en procesadores con maiores prestacións adóitase a usar unha memoria a medio camiño que mantén unha copia dos datos de memoria principal, chamada memoria caché, para suavizar esta diferenza de velocidades. Características
A UCP dota ao computador da súa capacidade máis fundamental, a capacidade de programalo, e é un dos compoñentes absolutamente necesarios para montar calquera computador xunto cos portos de entrada e saída. Unha UCP pode estar integrada nun sistema como foi o caso dos primeiros computadores ou nun só chip, e se é así denomínase microprocesador. A primeiros dos anos 70 os microprocesadores cada vez foron máis complexos e aos poucos substituíron o resto de deseños que usaban varios chips facendo que hoxe en día o termo procesador ou UCP úsense habitualmente para referirnos a calquera microprocesador.
A forma e de deseño das UCP variaron drasticamente ao longo dos anos pero as características básicas do funcionamento non o fixeron tanto.
As antigas UCP eran montadas en computadores dun só propósito (por exemplo unha máquina expendedora de bebidas) isto facía que había que deseñar unha UCP específica para cada tipo de tarefa encarecendo moito o custo, máis adiante conseguiríase fabricar UCPs preparadas para executar máis dun programa sendo o primeiro paso para chegar ao que hoxe coñecemos como ordenador persoal (PC). Coa expansión dos transistores CMOS e o uso dos circuítos integrados chegou a estandarización na fabricación das UCP. Así, o circuíto integrado permitiu ir aumentando a complexidade dos microprocesadores continuamente (seguindo a lei de Moore) ata conseguir deseñalos en pequenos espazos de só uns milímetros. A miniaturización e estandarización das UCPs incrementou a presenza de dispositivos dixitais na vida moderna lonxe das limitadas aplicacións das primeiras UCP. Os microprocesadores modernos aparecen en case calquera dispositivo, desde automóbiles a computadores pasando por teléfonos móbiles, reprodutores de música portátiles ou xoguetes para os nenos por exemplo.
Os investigadores están a estudar novos métodos de computación como a computación cuántica, a ampliación do paralelismo, e outros máis. Rendemento
O rendemento ou velocidade dunha CPU depende entre outros factores da frecuencia do reloxo e das instrucións por reloxo (IPC), que no seu conxunto determinan as instrucións por segundo (IPS) que pode executar a CPU. Debido a diversos factores que poden alterar a frecuencia de execución de instrucións, existen varias probas estandarizadas, chamadas benchmarks, que usan aplicacións de ampla difusión para medir e comparar o rendemento efectivo das CPU.
A mellora no rendemento dos procesadores acádase habitualmente empregando procesadores multinúcleo, que esencialmente xuntan dous ou máis procesadores individuais (núcleos) nun só circuíto integrado. Idealmente, un procesador de dobre núcleo debería ser o dobre de rápido que un dun só núcleo, pero na práctica a mellora no rendemento é menor, do rango do 50%, debido a algoritmos imperfectos e limitacións na posta en funcionamento.
Por mor de diversas capacidades específicas das CPU modernas, como o hyper-threading e o uncore, que axudan no repartimento de recursos e mellora de utilización das CPU, a monitorización do rendemento faise cada vez máis complicada. Como resposta a este problema, algunhas CPU introducen lóxica de hardware adicional que monitoriza o uso real de varias das súas partes e prové de contadores accesibles para o software, como por exemplo a tecnoloxía Performance Counter Monitor de Intel.