Contenido Checked

Unidad Central de procesamiento

Acerca de este escuelas selecci??n Wikipedia

SOS Children hizo esta selecci??n Wikipedia junto a otros recursos de escuelas . El apadrinamiento de ni??os ayuda a los ni??os uno por uno http://www.sponsor-a-child.org.uk/ .

Una Intel 80486DX2 CPU desde arriba.
Un Intel 80486DX2 desde abajo

Una unidad de procesamiento central (CPU), tambi??n se refiere como una unidad central de procesador, es el hardware dentro de un equipo que lleva a cabo la instrucciones de un programa de ordenador mediante la realizaci??n de la aritm??tica b??sica, l??gica y operaciones de entrada / salida del sistema. El t??rmino ha estado en uso en la industria inform??tica, al menos desde la d??cada de 1960. La forma, dise??o e implementaci??n de CPUs han cambiado a lo largo de su historia, pero su operaci??n fundamental sigue siendo la misma.

En los equipos m??s antiguos, CPUs requieren uno o m??s placas de circuito impreso. Con la invenci??n de la microprocesador, un CPU podr??a estar contenida dentro de un solo chip de silicio . Los primeros ordenadores de uso microprocesadores eran los ordenadores personales y estaciones de trabajo peque??as. Desde los a??os 1970 la clase microprocesador de CPUs ha desplazado casi totalmente otras implementaciones de la CPU, en la medida en que incluso ordenadores centrales utilizan uno o m??s microprocesadores. Los microprocesadores modernos son a gran escala de circuitos integrados en paquetes normalmente menos de cuatro cent??metros cuadrados, con cientos de clavijas de conexi??n.

Una computadora puede tener m??s de una CPU; se llama multiprocesamiento. Algunos microprocesadores pueden contener varias CPU en un solo chip; los microprocesadores se denominan procesadores multi-core.

Dos componentes t??picos de una CPU son la unidad aritm??tica l??gica (ALU), que realiza operaciones aritm??ticas y l??gicas, y la unidad de control (CU), que extrae las instrucciones de la memoria y la decodifica y los ejecuta, llamando a la ALU cuando sea necesario.

No todos los sistemas computacionales se basan en una unidad central de procesamiento. Un procesador de matriz o procesador vectorial tiene varios elementos de computaci??n en paralelo, sin una unidad considerado el "centro". En el modelo de computaci??n distribuido, los problemas se resuelven mediante un conjunto interconectado distribuida de procesadores.

Historia

EDVAC, uno de los equipos del programa primero almacenados.

Ordenadores, como el ENIAC ten??a que ser reconectado f??sicamente para realizar diferentes tareas, que causaron estas m??quinas que se llamar??n "ordenadores-programa fijo." Dado que el t??rmino "CPU" se define generalmente como un dispositivo para software (programa inform??tico) la ejecuci??n, los primeros dispositivos que con raz??n se podr??an llamar CPUs vino con el advenimiento de la computadora con programa almacenado.

La idea de una computadora con programa almacenado ya estaba presente en el dise??o de J. Presper Eckert y John William Mauchly de ENIAC, pero se omiti?? inicialmente de modo que pudiera ser terminado antes. El 30 de junio de 1945, antes de ENIAC fue hecho, el matem??tico John von Neumann distribuy?? el trabajo titulado Primer borrador de un informe sobre la EDVAC. Era el contorno de una computadora con programa almacenado que finalmente ser??a terminado en agosto de 1949. EDVAC fue dise??ado para realizar un determinado n??mero de instrucciones (u operaciones) de varios tipos. Estas instrucciones pod??an combinarse para crear programas ??tiles para el EDVAC se ejecute. Significativamente, los programas escritos para el EDVAC fueron almacenados en alta velocidad memoria de la computadora en lugar de lo especificado por el cableado f??sico de la computadora. Esto super?? una severa limitaci??n del ENIAC, que fue el tiempo y esfuerzo considerable necesario para volver a configurar el ordenador para realizar una nueva tarea. Con el dise??o de von Neumann, el programa o software, que EDVAC corr??a, pod??a ser cambiado simplemente cambiando el contenido de la memoria.

Los primeros CPU fueron dise??ados a medida como parte de una m??s grande,, ordenador a veces uno-de-uno-bueno. Sin embargo, este m??todo de dise??o de CPU a la medida para una aplicaci??n particular ha dado paso al desarrollo de los procesadores de producci??n masiva que se hacen para muchos prop??sitos. Esta estandarizaci??n comenz?? en la era de la discreta transistor mainframes y minicomputadoras y se ha acelerado r??pidamente con la popularizaci??n del circuito integrado (IC). El CI ha permitido CPUs cada vez m??s complejas para ser dise??ados y fabricados con tolerancias del orden de nan??metros. Tanto la miniaturizaci??n como la estandarizaci??n de los CPU han aumentado la presencia de dispositivos digitales en la vida moderna mucho m??s all?? de las aplicaciones limitadas de m??quinas de computaci??n dedicadas. Los microprocesadores modernos aparecen en todo, desde autom??viles hasta tel??fonos celulares y juguetes de los ni??os.

Mientras que von Neumann es acreditado m??s frecuentemente por el dise??o de la computadora con programa almacenado debido a su dise??o de EDVAC, otros antes que ??l, como Konrad Zuse, hab??a sugerido y aplicado ideas similares. El llamado Arquitectura de la Universidad de Harvard Harvard Mark I, que se complet?? antes de EDVAC, tambi??n utiliz?? un dise??o de programa almacenado utilizando cinta de papel perforada en vez de memoria electr??nica. La diferencia clave entre las arquitecturas de von Neumann y Harvard es que la ??ltima separa el almacenamiento y tratamiento de las instrucciones de la CPU y los datos, mientras que el primero utiliza el mismo espacio de memoria para ambos. La mayor??a de los CPU modernos son von Neumann en el dise??o, pero los elementos de la arquitectura de Harvard se observan con frecuencia tambi??n.

Rel??s y tubos de vac??o (v??lvulas termoi??nicos) eran usados com??nmente como elementos de conmutaci??n; un ordenador ??til requiere miles o decenas de miles de dispositivos de conmutaci??n. La velocidad global de un sistema depende de la velocidad de los interruptores. Las computadoras de tubo como EDVAC tend??a a un promedio de ocho horas entre fallas, mientras que las computadoras de rel??s como el (m??s lento, pero m??s temprano) Harvard Mark I, fallaban muy raramente. Al final, las CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban m??s los problemas de fiabilidad. La mayor parte de estos tempranos CPU s??ncronos corr??an a baja velocidades de reloj en comparaci??n con los modernos dise??os microelectr??nicos (ver m??s abajo para una discusi??n de la velocidad del reloj). Frecuencias de la se??al de reloj que van desde 100 kHz a 4 MHz era muy com??n en este momento, limitada en gran medida por la velocidad de los dispositivos de conmutaci??n los que fueron construidos.

Transistor y CPUs de circuitos integrados

CPU, memoria de base, y interfaz de bus externo de un diciembre PDP-8 / I. Hecho de circuitos integrados de peque??a o mediana.

La complejidad de dise??o de CPU se increment?? a medida que varias tecnolog??as facilitaron la construcci??n de dispositivos electr??nicos m??s peque??os y confiables. La primera de esas mejoras vino con el advenimiento de la transistor. CPU transistorizados durante los a??os 1950 y 1960 ya no ten??an que ser construido a partir de elementos de conmutaci??n abultados, no fiables, y fr??giles como tubos de vac??o y rel??s el??ctricos. Con esta mejora CPUs m??s complejos y confiables fueron construidos sobre una o varias tarjetas de circuitos impresos con componentes discretos (individuales).

Durante este per??odo, se desarroll?? un m??todo de fabricar muchos transistores interconectados en un espacio compacto. El circuito integrado (IC) permiti?? un gran n??mero de transistores para ser fabricado en un solo semiconductor basado morir, o "chips". A primeros circuitos digitales no especializado s??lo muy b??sicos como Puertas NOR fueron miniaturizados en ICs. CPU basadas en estos IC de "bloques de construcci??n" se conocen en general como (SSI) dispositivos de "integraci??n a peque??a escala". ICs SSI, tales como los utilizados en el Apolo equipo de orientaci??n, por lo general contiene hasta un par de transistores de puntuaci??n. Construir un CPU completo de SSI ICs requerido miles de chips individuales, pero todav??a se consume mucho menos espacio y energ??a que dise??os anteriores de transistores discretos. A medida que avanzaba la tecnolog??a microelectr??nica, se colocaron un creciente n??mero de transistores en circuitos integrados, lo que disminuye la cantidad de ICs individuales necesarios para un CPU completo. MSI y LSI (integraci??n a mediana y gran escala) ICs aumentaron el n??mero de transistores a cientos, y luego miles de personas.

En 1964 IBM introdujo su / Arquitectura 360 equipo que fue utilizado en una serie de computadores que pod??an correr los mismos programas con diferente velocidad y el rendimiento del sistema. Esto fue significativo en un momento cuando la mayor??a de las computadoras electr??nicas eran incompatibles entre s??, incluso las realizadas por el mismo fabricante. Para facilitar esta mejora, IBM utiliz?? el concepto de microprograma (a menudo llamado "microc??digo"), que todav??a ve un uso generalizado en las CPU modernas. El / La arquitectura del sistema 360 era tan popular que domin?? el mercado del mainframe durante d??cadas y dej?? un legado que a??n se continu?? por los ordenadores modernos similares como el IBM zSeries. En el mismo a??o (1964), Digital Equipment Corporation (DEC) introdujo otro computador influyente dirigido a los mercados cient??ficos y de investigaci??n, la PDP-8. Diciembre introducir??a m??s adelante la extremadamente popular L??nea PDP-11 que originalmente fue construido con ICs SSI pero eventualmente fue implementado con componentes LSI cuando llegaron a ser pr??cticos. En marcado contraste con sus predecesores SSI y MSI, la primera implementaci??n LSI del PDP-11 contuvo un CPU integrado por solamente cuatro circuitos integrados LSI.

Computadores basados en transistores ten??an varias ventajas sobre sus predecesores. Aparte de facilitar una mayor fiabilidad y menor consumo de energ??a, los transistores tambi??n permit??an CPU operar a velocidades mucho m??s altas debido al corto tiempo de conmutaci??n de un transistor en comparaci??n a un tubo o rel??. Gracias a tanto el aumento de la fiabilidad, as?? como el aumento de forma espectacular la velocidad de los elementos de conmutaci??n (que eran casi exclusivamente transistores por este tiempo), se obtuvieron velocidades de reloj de la CPU en las decenas de megahercios durante este per??odo. Adem??s, mientras que el transistor discreto y CPUs IC estaban en uso pesado, nuevo alto rendimiento dise??a como SIMD (Single Instruction Multiple Data) procesadores vectoriales comenzaron a aparecer. Estos tempranos dise??os experimentales dieron lugar m??s adelante a la era de la especializada superordenadores como los realizados por Cray Inc.

Microprocesadores

Muere de un Intel 80486DX2 microprocesador (tama??o real: 12 ?? 6,75 mm) en su embalaje
Intel Core i5 CPU en una placa base del ordenador port??til Vaio serie E (a la derecha, debajo de la tubo de calor).

En la d??cada de 1970 los inventos fundamentales por Federico Faggin (ICs Silicio Puerta MOS con auto alineado puertas, junto con su nueva metodolog??a de dise??o de l??gica al azar) cambi?? el dise??o y la implementaci??n de los CPU siempre. Desde la introducci??n de la primera microprocesador disponible comercialmente (la Intel 4004) en 1970, y la primera ampliamente utilizados microprocesador (el Intel 8080) en 1974, esta clase de CPUs ha superado casi por completo todos los dem??s m??todos de implementaci??n unidad de procesamiento central. Mainframes y minicomputadores fabricantes de ese tiempo lanzaron programas propietarios desarrollo de circuitos integrados para actualizar su mayor arquitecturas de computadora, y produjeron finalmente conjunto de instrucciones microprocesadores compatibles que estaban al rev??s-compatible con su hardware antiguo y software. Combinado con el advenimiento y el eventual ??xito del ubicuo computadora personal , la CPU t??rmino se aplica ahora casi exclusivamente a los microprocesadores. Varios CPUs se pueden combinar en un solo chip de procesamiento.

Las generaciones anteriores de CPUs fueron implementadas como componentes discretos y numerosos peque??os circuitos integrados (CI) en una o m??s placas de circuito. Los microprocesadores, por otro lado, son CPUs fabricados en un n??mero muy peque??o de ICs; por lo general s??lo uno. El tama??o m??s peque??o del CPU como resultado de ser implementado en un solo dado significa tiempo de conmutaci??n m??s r??pido debido a factores f??sicos como la disminuci??n de la puerta capacitancia par??sita. Esto ha permitido que los microprocesadores s??ncronos tengan velocidades de reloj que van desde decenas de megahertz a varios gigahertz. Adem??s, como la capacidad de construir transistores excesivamente peque??os en un IC ha aumentado, la complejidad y el n??mero de transistores en un solo CPU se ha incrementado muchas veces. Esta tendencia ampliamente observada es descrita por la ley de Moore , que ha demostrado ser un predictor bastante exacta del crecimiento de la CPU (y otra IC) complejidad.

Aunque la complejidad, el tama??o, la construcci??n, y la forma general del CPU han cambiado enormemente desde 1950, es notable que el dise??o y el funcionamiento b??sico no ha cambiado mucho a todos. Casi todos los CPU comunes hoy en d??a puede ser descrito con precisi??n como m??quinas de programa almacenado de von Neumann. Como mencionada ley del Moore contin??a manteni??ndose verdadera, se han planteado acerca de los l??mites de la tecnolog??a de transistor del circuito integrado. La miniaturizaci??n extrema de puertas electr??nicas est?? causando los efectos de fen??menos como electromigraci??n y fugas subliminal para convertirse en mucho m??s significativo. Estas preocupaciones m??s recientes est??n entre los muchos factores que causan los investigadores para investigar nuevos m??todos de computaci??n como el ordenador cu??ntico , as?? como para ampliar el uso de paralelismo y otros m??todos que extienden la utilidad del modelo de von Neumann cl??sica.

Operaci??n

La operaci??n fundamental de la mayor??a de las CPU, independientemente de la forma f??sica que toman, es ejecutar una secuencia de instrucciones almacenadas llamadas de un programa. El programa est?? representado por una serie de n??meros que se mantienen en alg??n tipo de memoria de la computadora. Hay cuatro pasos que casi todas las CPUs usan en su operaci??n: fetch, decodificar, ejecutar y reescritura.

El primer paso, trae, supone la recuperaci??n de un instrucciones (que est?? representado por un n??mero o secuencia de n??meros) a partir de la memoria de programa. La ubicaci??n en la memoria de programa se determina por una contador de programa (PC), que almacena un n??mero que identifica la posici??n actual en el programa. Despu??s se lee una instrucci??n, el PC se incrementa en la longitud de la palabra de instrucci??n en t??rminos de unidades de memoria. A menudo, la instrucci??n a ser le??da debe ser recuperada de la memoria relativamente lenta, haciendo que la CPU para detener a la espera de la instrucci??n que se devuelve. Este problema se soluciona en gran medida en los procesadores modernos por los cach??s y las arquitecturas pipeline (ver abajo).

La instrucci??n que la CPU lee desde la memoria se utiliza para determinar lo que la CPU es de hacer. En la etapa de decodificaci??n, la instrucci??n es dividida en partes que tienen significado para otras porciones de la CPU. La forma en la que el valor de la instrucci??n num??rica es interpretado est?? definida por la arquitectura del conjunto de instrucciones de la CPU (ISA). A menudo, un grupo de n??meros en la instrucci??n, llamado opcode, indica qu?? operaci??n realizar. Las partes restantes del n??mero usualmente proporcionan informaci??n requerida para esa instrucci??n, tales como operandos para una operaci??n de adici??n. Tales operandos se pueden dar como un valor constante (llamado valor inmediato), o como un lugar para localizar un valor: un registrar o una direcci??n de memoria, como se determina por algunos modo de direccionamiento. En dise??os m??s viejos las porciones del CPU responsables de decodificar la instrucci??n eran dispositivos de hardware fijos. Sin embargo, en CPUs e ISAs m??s abstractos y complicados, una microprograma a menudo se utiliza para ayudar en la traducci??n de las instrucciones en varias se??ales de configuraci??n de la CPU. Este microprograma es a veces reescribible de tal manera que puede ser modificado para cambiar la forma de la CPU decodifica instrucciones incluso despu??s de que ha sido fabricado.

Despu??s de las etapas de lectura y decodificaci??n, se realiza la etapa de ejecuci??n. Durante este paso, varias porciones de la CPU est??n conectados para que puedan realizar la operaci??n deseada. Si, por ejemplo, se pidi?? a una operaci??n de adici??n, la unidad l??gica aritm??tica (ALU) ser?? conectada a un conjunto de entradas y un conjunto de salidas. Las entradas proporcionan los n??meros a ser sumados, y las salidas contendr??n la suma final. El ALU contiene la circuiter??a para realizar los c??lculos aritm??ticos simples y operaciones l??gicas en las entradas (como la suma y la operaciones bit a bit). Si la operaci??n de adici??n produce un resultado demasiado grande para la CPU de manejar, una bandera de desbordamiento aritm??tico en un registro de banderas tambi??n se pueden ajustar.

El paso final, reescritura, simplemente "escribe" los resultados del paso de ejecuci??n a una cierta forma de memoria. Muy a menudo los resultados son escritos a alg??n registro interno del CPU para acceso r??pido por subsecuentes instrucciones. En otros casos, los resultados pueden ser escritos a m??s lento, pero m??s barato y m??s grande, memoria principal. Algunos tipos de instrucciones manipulan el contador de programa en lugar de producir directamente los datos de resultado. Estos generalmente son llamados "saltos" y facilitan comportamientos como bucles, la ejecuci??n del programa condicional (mediante el uso de un salto condicional), y funciones en los programas. Muchas instrucciones tambi??n cambiar??n el estado de d??gitos en un "banderas" registro. Estas banderas pueden ser usados para influir en c??mo se comporta un programa, ya que a menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de "comparar" la instrucci??n considera dos valores y fija un n??mero en el registro de banderas seg??n la cual uno es mayor. Esta bandera podr??a entonces ser utilizado por una instrucci??n de salto m??s tarde para determinar el flujo del programa.

Despu??s de la ejecuci??n de la instrucci??n y la escritura de los datos resultantes, todo el proceso se repite, con la siguiente ciclo de instrucci??n, normalmente leyendo la siguiente instrucci??n en secuencia debido al valor incrementado en el contador de programa. Si la instrucci??n completada era un salto, el contador de programa ser?? modificado para contener la direcci??n de la instrucci??n que se salt??, y la ejecuci??n del programa contin??a normalmente. En CPUs m??s complejos que el descrito aqu??, m??ltiples instrucciones pueden ser le??das, decodificadas, y ejecutadas simult??neamente. En esta secci??n se describe lo que se conoce generalmente como la " cl??sico RISC pipeline ", que de hecho es bastante com??n entre los CPU simples usados en muchos dispositivos electr??nicos (a menudo llamado microcontrolador). Se ignora en gran medida el importante papel de cach?? de la CPU , y por lo tanto la etapa de acceso de la tuber??a.

Dise??o e implementaci??n

El concepto b??sico de una CPU es el siguiente:

Cableada en el dise??o de una CPU es una lista de las operaciones b??sicas que puede realizar, llamado conjunto de instrucciones. Estas acciones podr??n incluir la adici??n o sustracci??n de dos n??meros, comparaci??n de n??meros, o saltar a una parte diferente de un programa. Cada una de estas operaciones b??sicas est?? representado por una secuencia particular de pedacitos; esta secuencia se llama la c??digo de operaci??n para esa operaci??n en particular. Env??o de un c??digo de operaci??n particular a un CPU har?? que se realice la operaci??n representada por ese c??digo de operaci??n. Para ejecutar una instrucci??n en un programa de ordenador, la CPU utiliza el c??digo de operaci??n para esa instrucci??n, as?? como sus argumentos (por ejemplo los dos n??meros que se a??aden, en el caso de una operaci??n de adici??n). La Por lo tanto, programa de ordenador es una secuencia de instrucciones, con cada instrucci??n incluye un c??digo de operaci??n y los argumentos de esa operaci??n.

La operaci??n matem??tica real para cada instrucci??n se lleva a cabo por una subunidad de la CPU conocido como el unidad aritm??tica l??gica o ALU. Adem??s de utilizar su ALU para realizar operaciones, una CPU tambi??n es responsable de la lectura de la siguiente instrucci??n de la memoria, la lectura de los datos especificados en los argumentos de la memoria, y escribir los resultados a la memoria.

En muchos dise??os de CPU, un conjunto de instrucciones se diferenciar?? claramente entre las operaciones que los datos de carga de la memoria, y aquellos que realizan las matem??ticas. En este caso los datos cargados desde la memoria se almacenan en registros, y una operaci??n matem??tica no toma ning??n argumento pero simplemente realiza los c??lculos en los datos de los registros y la escribe en un nuevo registro, cuyo valor una operaci??n separada puede entonces escribir en la memoria.

Unidad de control

La unidad de control de la CPU contiene circuitos que utiliza se??ales el??ctricas para dirigir todo el sistema inform??tico para llevar a cabo instrucciones de programa almacenadas. La unidad de control no se ejecuta las instrucciones del programa; M??s bien, se dirige otras partes del sistema para hacerlo. La unidad de control debe comunicarse tanto con el / unidad aritm??tica l??gica y la memoria.

Rango de enteros

La forma en que un CPU representa los n??meros es una opci??n de dise??o que afecta a las formas m??s b??sicas en que las funciones del dispositivo. Algunas primeras computadoras digitales utilizan un modelo el??ctrico de la com??n decimal (base diez) sistema de numeraci??n para representar n??meros internamente. Algunas otras computadoras han usado sistemas de numeraci??n m??s ex??ticos como ternario (base tres). Casi todos los CPU modernos representan los n??meros en binario forma, con cada d??gito siendo representados por alguna cantidad f??sica de dos valores, como un "alto" o "bajo" tensi??n .

MOS 6502 en un microprocesador paquete dual en l??nea, un dise??o muy popular de 8 bits.

Con la representaci??n num??rica es el tama??o y la precisi??n de los n??meros que un CPU puede representar. En el caso de un CPU binario, un bit se refiere a un lugar significativo en los n??meros de una CPU trata. El n??mero de bits (o lugares numeral) un CPU usa para representar los n??meros es a menudo llamado " tama??o de la palabra "," ancho de bits "," ancho de ruta de datos ", o" precisi??n entero "cuando se trata de n??meros enteros estrictamente (en oposici??n a punto flotante). Este n??mero difiere entre las arquitecturas, ya menudo dentro de diferentes partes de la misma CPU. Por ejemplo, una Ofertas de CPU de 8 bits con un rango de n??meros que pueden ser representados por ocho d??gitos binarios (cada d??gito que tiene dos valores posibles), es decir, 2 o 8 256 n??meros discretos. En efecto, el tama??o del n??mero entero fija un l??mite de hardware en el rango de los enteros que el software corre por la CPU se puede utilizar.

Rango del n??mero entero tambi??n puede afectar el n??mero de ubicaciones en la memoria de la CPU puede direccionar (localizar). Por ejemplo, si un CPU binario utiliza 32 bits para representar una direcci??n de memoria, y cada direcci??n de memoria representa uno octeto (8 bits), la cantidad m??xima de memoria que el CPU puede direccionar es 2 32 octetos, o 4 GiB. Esta es una vista muy simple de CPU abordar el espacio, y muchos dise??os utilizan m??todos de direccionamiento m??s complejos como paginaci??n para localizar m??s memoria que su rango entero permitir??a con un espacio de direcci??n plana.

Los niveles m??s altos de n??mero entero gama requieren m??s estructuras para hacer frente a los d??gitos adicionales, y por lo tanto m??s la complejidad, el tama??o, el consumo de energ??a, y el gasto general. No es nada raro, por lo tanto, para ver de 4 u 8 bits microcontroladores utilizados en aplicaciones modernas, a pesar de CPU con un rango mucho m??s alto (por ejemplo, 16, 32, 64, incluso 128 bits) est??n disponibles. Los microcontroladores m??s simples son generalmente m??s baratos, utilizan menos energ??a, y por lo tanto generan menos calor, todos los cuales pueden ser importantes consideraciones de dise??o para dispositivos electr??nicos. Sin embargo, en aplicaciones de gama alta, los beneficios que ofrece la gama extra (m??s a menudo el espacio de direcci??n adicional) son m??s significativos y con frecuencia afectan las opciones de dise??o. Para obtener algunas de las ventajas proporcionadas por las longitudes inferiores y superiores bits, muchos CPUs est??n dise??ados con diferentes anchos de bit para diferentes porciones del dispositivo. Por ejemplo, el IBM System / 370 utiliza una CPU que fue principalmente de 32 bits, pero utiliza 128 bits de precisi??n dentro de su unidades de punto flotante para facilitar una mayor precisi??n y alcance en los n??meros de punto flotante. Muchos dise??os posteriores de CPU usan una anchura de bits mixta similar, especialmente cuando el procesador est?? destinado para el uso de prop??sito general donde se requiere un equilibrio razonable de n??mero entero y capacidad de punto flotante.

Frecuencia de reloj

La velocidad del reloj es la velocidad a la que un microprocesador ejecuta las instrucciones. Cada equipo contiene un reloj interno que regula la velocidad a la que se ejecutan las instrucciones y sincroniza todos los diversos componentes del ordenador. La CPU requiere un n??mero fijo de garrapatas de reloj (o ciclos de reloj) para ejecutar cada instrucci??n. Cuanto m??s r??pido el reloj, m??s instrucciones de la CPU puede ejecutar por segundo.

La mayor??a de las CPUs, y de hecho la mayor??a dispositivos de l??gica secuencial, son s??ncrona en la naturaleza. Es decir, que est??n dise??ados y operan en funci??n de una se??al de sincronizaci??n. Esta se??al, conocida como una se??al de reloj, por lo general toma la forma de un peri??dico ola cuadrada. Calculando el tiempo m??ximo que las se??ales el??ctricas pueden moverse en varias ramas de muchos circuitos de un CPU, los dise??adores pueden seleccionar un apropiado per??odo de la se??al de reloj.

Este per??odo debe ser m??s largo que la cantidad de tiempo que tarda una se??al para moverse, o propagarse, en el peor de los casos. Al establecer el per??odo de reloj a un valor muy por encima del peor de los casos retardo de propagaci??n, es posible dise??ar todo el CPU y la forma en que mueve los datos alrededor de los "bordes" de la se??al de reloj ascendente y descendente. Esto tiene la ventaja de simplificar el CPU significativamente, tanto desde una perspectiva de dise??o y una perspectiva de cantidad de componentes. Sin embargo, tambi??n conlleva la desventaja de que todo el CPU debe esperar en sus elementos m??s lentos, a pesar de que algunas porciones de la misma son mucho m??s r??pido. Esta limitaci??n ha sido ampliamente compensado por varios m??todos de aumentar el paralelismo CPU. (Vea abajo)

Sin embargo, las mejoras de arquitectura por s?? solos no resuelven todos los inconvenientes de CPUs globalmente s??ncronos. Por ejemplo, una se??al de reloj est?? sujeta a los retardos de cualquier otra se??al el??ctrica. Velocidades de reloj m??s altas en CPUs cada vez m??s complejas hacen que sea m??s dif??cil mantener la se??al de reloj en fase (sincronizado) en toda la unidad. Esto ha llevado a muchos CPU modernos requieran m??ltiples se??ales de reloj id??nticas a ser proporcionado para evitar retardar una sola se??al lo suficientemente significativa para hacer que la CPU no funcione correctamente. Otra cuesti??n importante como velocidades de reloj aumentan dram??ticamente es la cantidad de calor que es disipada por la CPU. El reloj en constante cambio hace que muchos de los componentes para cambiar independientemente de si se est??n utilizando en ese momento. En general, un componente que est?? cambiando utiliza m??s energ??a que un elemento en un estado est??tico. Por lo tanto, a medida que aumenta la velocidad del reloj, tambi??n lo hace el consumo de energ??a, haciendo que la CPU a requerir m??s la disipaci??n de calor en forma de Soluciones de refrigeraci??n de la CPU.

Se llama un m??todo de tratar con la conmutaci??n de componentes innecesarios clock gating, que consiste en apagar la se??al de reloj a los componentes innecesarios (desactivaci??n de manera efectiva). Sin embargo, esto es a menudo considerado como dif??cil de implementar y por lo tanto no ve uso com??n afuera de dise??os de muy baja potencia. Un dise??o tarde CPU notable que utiliza compuerta del reloj para reducir los requisitos de alimentaci??n de la consola de videojuegos es el de la IBM Basado en PowerPC Xbox 360. Se utiliza extensa gating reloj en el que se utiliza. Otro m??todo de abordar algunos de los problemas con una se??al de reloj global es la eliminaci??n de la se??al de reloj completo. Ventajas mientras se quita la se??al de reloj global hace que el proceso de dise??o mucho m??s compleja de muchas maneras, as??ncrono (o sin relojes) dise??os llevan marcadas en el consumo de energ??a y la disipaci??n de calor en comparaci??n con dise??os s??ncronos similares. Aunque algo infrecuente, toda CPU as??ncronos se han construido sin utilizar una se??al global de reloj. Dos notables ejemplos de esto son la ARM compatible AMULETO y la MiniMIPS compatibles MIPS R3000. En lugar de eliminar totalmente la se??al de reloj, algunos dise??os de CPU permiten ciertas partes del dispositivo ser asincr??nicas, tales como el uso as??ncrono ALU en conjunci??n con pipelining superescalar para alcanzar algunas mejoras de rendimiento aritm??ticas. Si bien no es del todo claro si los dise??os totalmente asincr??nicos pueden desempe??arse a un nivel comparable o mejor que sus contrapartes s??ncronas, es evidente que lo hacen por lo menos sobresalen en las operaciones matem??ticas simples. Esto, combinado con sus excelentes caracter??sticas de consumo de energ??a y disipaci??n de calor, los hace muy adecuados para ordenadores integrados.

Paralelismo

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

La descripci??n de la operaci??n b??sica de un CPU ofrecido en la secci??n anterior describe la forma m??s simple que puede tomar un CPU. Este tipo de CPU, normalmente se conoce como subescalar, opera sobre y ejecuta una instrucci??n en una o dos piezas de datos a la vez.

Este proceso da lugar a una ineficiencia inherente en CPUs subescalares. Dado que s??lo se ejecuta una instrucci??n a la vez, todo el CPU debe esperar a que la instrucci??n se complete antes de proceder a la siguiente instrucci??n. Como resultado, la CPU subescalar se "colg??" en instrucciones que toman m??s de un ciclo de reloj para completar su ejecuci??n. Incluso la adici??n de un segundo unidad de ejecuci??n (ver m??s abajo) no mejora el rendimiento tanto; en lugar de un camino quedando congelado, ahora dos caminos se paralizan y se incrementa el n??mero de transistores no utilizados. Este dise??o, en el que los recursos de ejecuci??n del CPU pueden operar en una sola instrucci??n a la vez, solo puede, posiblemente, alcanzar el desempe??o escalar (una instrucci??n por ciclo de reloj). Sin embargo, el rendimiento es casi siempre subescalar (menos de una instrucci??n por ciclo).

Los intentos para lograr escalar y un mejor rendimiento han resultado en una variedad de metodolog??as de dise??o que hacen que la CPU se comporte menos linealmente y m??s en paralelo. Cuando se hace referencia al paralelismo en las CPU, dos t??rminos se utilizan generalmente para clasificar estas t??cnicas de dise??o. Paralelismo a nivel de instrucciones (ILP) busca aumentar la velocidad a la que las instrucciones se ejecutan dentro de una CPU (es decir, para aumentar la utilizaci??n de recursos en la matriz de ejecuci??n), y paralelismo a nivel de hilo prop??sitos (TLP) para aumentar el n??mero de hilos (eficazmente los programas individuales) que un CPU puede ejecutar simult??neamente. Cada metodolog??a difiere tanto en las formas en que se apliquen, as?? como la eficacia relativa que producen en el aumento de rendimiento de la CPU para una aplicaci??n.

Paralelismo a nivel de instrucci??n

Ducto b??sico de cinco etapas.En el mejor de los casos, esta tubería puede sostener una tasa de finalización de una instrucción por ciclo.

Uno de los métodos más simples que se utilizan para lograr una mayor paralelismo es comenzar los primeros pasos de ir a buscar la instrucción y decodificación antes de la instrucción previa termine de ejecutarse. Esta es la forma más simple de una técnica conocida como pipelining instrucción, y se utiliza en casi todas las CPU de propósito general modernos. Canalización permite más de una instrucción que se ejecutará en un momento dado por romper la vía de la ejecución en etapas discretas. Esta separación puede ser comparado con una línea de montaje, en el que una instrucción se hace más completa en cada etapa hasta que sale de la tubería de ejecución y se retiró.

Canalización hace, sin embargo, introducir la posibilidad de una situación en la que el resultado de la operación anterior es necesario para completar la siguiente operación; una condición a menudo se denomina conflicto dependencia de datos. Para hacer frente a esto, el cuidado adicional se debe tomar para comprobar si este tipo de condiciones y retrasar una parte de la tubería de la instrucción si esto ocurre. Naturalmente, lograr esto requiere circuitería adicional, por lo que los procesadores segmentados son más complejos que los subescalares (aunque no muy significativa así). Un procesador entubado puede llegar a ser casi completamente escalar, solamente inhibido por puestos de la tubería (una instrucción de pasar más de un ciclo de reloj en una etapa).

Tubería superescalar simple. Por leer y despachar dos instrucciones a la vez, se puede completar un máximo de dos instrucciones por ciclo.

Una mejora adicional sobre la idea de pipelining instrucci??n condujo al desarrollo de un m??todo que reduce a??n m??s el tiempo de inactividad de los componentes de la CPU. Dise??os que se dice que son superescalares incluyen una larga tuber??a de instrucci??n y m??ltiples unidades de ejecuci??n id??nticas. En una tuber??a superescalar, m??ltiples instrucciones son le??das y pasadas a un despachador, que decide si las instrucciones se pueden ejecutar en paralelo (simult??neamente). Si por lo que se env??an a las unidades de ejecuci??n disponibles, dando lugar a la posibilidad de que varias instrucciones que se ejecutar??n simult??neamente. En general, cuanto m??s instrucciones un CPU superescalar es capaz de despachar simult??neamente a la espera unidades de ejecuci??n, m??s instrucciones ser??n completadas en un ciclo determinado.

La mayor parte de la dificultad en el dise??o de una arquitectura de CPU superescalar radica en la creaci??n de un despachador eficaz. El despachador tiene que ser capaz de determinar r??pida y correctamente si las instrucciones pueden ser ejecutadas en paralelo, as?? como enviarlos de manera tal de mantener la mayor cantidad de unidades de ejecuci??n ocupado como sea posible. Esto requiere que la tuber??a de instrucci??n se llena tan a menudo como sea posible y da lugar a la necesidad de arquitecturas superescalares de cantidades significativas de cach?? de la CPU . Tambi??n hace t??cnicas para evitar peligros como predicci??n de saltos, ejecuci??n especulativa, y fuera de la orden de ejecuci??n crucial para mantener altos niveles de rendimiento. Al tratar de predecir qu?? rama (o trayectoria) tomar?? una instrucci??n condicional, la CPU puede minimizar el n??mero de veces que toda la tuber??a debe esperar hasta que se complete una instrucci??n condicional. Ejecuci??n especulativa frecuentemente proporciona aumentos modestos del desempe??o al ejecutar las porciones de c??digo que no puede ser necesaria despu??s de completarse una operaci??n condicional. Ejecuci??n fuera de orden cambia en alg??n grado el orden en que se ejecutan las instrucciones para reducir los retrasos debidos a dependencias de datos. Tambi??n en el caso de las instrucciones individuales de datos m??ltiples - un caso en el que se ha procesado una gran cantidad de datos del mismo tipo, los procesadores modernos pueden desactivar las partes de la tuber??a de manera que cuando una sola instrucci??n se ejecuta muchas veces, la CPU salta el traer y decodificar fases y por lo tanto aumenta considerablemente el rendimiento en ciertas ocasiones, sobre todo en los motores de programas altamente mon??tono como el software de creaci??n de v??deo y procesamiento de fotograf??as.

En el caso de que una parte de la CPU es superescalar y una parte no lo es, la parte que no es sufre una penalizaci??n de rendimiento debido a las paradas de horario. El Intel P5 Pentium tenía dos ALU superescalar que podría aceptar una instrucción por ciclo de reloj cada uno, pero su FPU no podía aceptar una instrucción por ciclo de reloj. Así el P5 era superescalar entero pero no coma flotante superescalar. Sucesor de Intel a la arquitectura P5, P6, agregó capacidades superescalares a sus características de punto flotante, y por lo tanto proporcionó un aumento significativo en el rendimiento de instrucciones de coma flotante.

Tanto la canalización sencilla y el diseño superescalar aumentan el ILP de un CPU al permitir que un único procesador para completar la ejecución de las instrucciones a tasas que superan una instrucción por ciclo (IPC). La mayoría de los diseños de CPU modernos son al menos algo superescalares, y casi todos los CPU de propósito general diseñado en la última década son superescalar. En los últimos años algunos de los énfasis en el diseño de computadoras de alto ILP se ha movido de hardware de la CPU y en su interfaz de software, o ISA. La estrategia de la palabra de instrucción muy larga (VLIW) hace que algunos ILP para convertirse implicó directamente por el software, lo que reduce la cantidad de trabajo del CPU debe realizar para impulsar la ILP y reduciendo así la complejidad del diseño.

Paralelismo a nivel de Tema

Otra estrategia de lograr el rendimiento es ejecutar múltiples programas o hilos en paralelo. Esta área de investigación se conoce como computación paralela. En taxonomía de Flynn, esta estrategia se conoce como múltiples instrucciones de varios datos o MIMD.

Una tecnología utilizada para este propósito se multiprocesamiento (MP). El sabor inicial de esta tecnología se conoce como multiprocesamiento simétrico (SMP), donde un pequeño número de CPUs comparten una visión coherente de su sistema de memoria. En este esquema, cada CPU tiene hardware adicional para mantener una visión constantemente actualizada de la memoria. Al evitar vistas rancios de la memoria, las CPUs pueden cooperar en el mismo programa y los programas pueden migrar de una CPU a otra. Para aumentar el número de CPUs que cooperan más allá de un puñado, esquemas como el acceso no uniforme de memoria (NUMA) y protocolos de coherencia basados ??????en directorios se introdujeron en la década de 1990. Sistemas SMP se limitan a un pequeño número de CPU mientras que los sistemas NUMA se han construido con miles de procesadores. Inicialmente, el multiprocesamiento fue construido usando CPUs discreta múltiple y tableros para implementar la interconexión entre los procesadores. Cuando los procesadores y su interconexión se implementan en un único chip de silicio, la tecnología se conoce como un procesador multi-core.

Esta inversión de énfasis se pone de manifiesto por la proliferación de núcleo dual y múltiple (multiprocesamiento a nivel de chip) CMP diseña y sobre todo, nuevos diseños de Intel se asemeja a su menor superescalar arquitectura P6. Diseños de última hora en varias exposiciones familias de procesadores CMP, incluyendo el x86-64 Opteron y Athlon 64 X2, el SPARC UltraSPARC T1, IBM POWER4 y POWER5, así como varias consolas de videojuegos CPUs como el diseño PowerPC de tres núcleos de Xbox 360, y el 7-core de PS3 microprocesador Cell.

Paralelismo de datos

Un paradigma menos común pero cada vez más importante de las CPU (y de hecho, la computación en general) trata con vectores. Los procesadores discutidos anteriormente son todos referidos como cierto tipo de dispositivo escalar. Como su nombre lo indica, los procesadores vectoriales se ocupan de múltiples piezas de datos en el contexto de una instrucción. Esto contrasta con los procesadores escalares, que tratan de un dato por cada instrucción. Uso taxonomía de Flynn, estos dos esquemas de ocuparse de los datos se refiere generalmente como SIMD (Single Instruction, múltiples datos) y SISD (Single Instruction, los datos individuales), respectivamente. La gran utilidad en la creación de CPUs que tienen que ver con vectores de datos radica en la optimización de las tareas que tienden a requerir la misma operación (por ejemplo, una suma o un producto de punto) a realizar en un gran conjunto de datos. Algunos ejemplos clásicos de este tipo de tareas son las aplicaciones multimedia (imágenes, vídeo y sonido), así como muchos tipos de tareas científicas y de ingeniería. Mientras que un CPU escalar debe completar todo el proceso de ir a buscar, decodificar y ejecutar cada instrucción y valor en un conjunto de datos, un CPU vectorial puede realizar una operación en un comparativamente grande conjunto de datos con una instrucción. Por supuesto, esto sólo es posible cuando la aplicación tiende a requerir muchos pasos que se aplican una operación a un conjunto grande de datos.

La mayor??a de los primeros CPU vectoriales, como el Cray-1, fueron asociados casi exclusivamente con la investigación y científicos de criptografía aplicaciones. Sin embargo, como se ha desplazado en gran medida de multimedia a los medios digitales, la necesidad de una cierta forma de SIMD en CPUs de propósito general se ha convertido en importante. Poco después de la inclusión de unidades de ejecución de punto flotante comenzó a convertirse en un lugar común en los procesadores de propósito general, las especificaciones de e implementaciones de unidades de ejecución SIMD también comenzaron a aparecer para CPUs de propósito general. Algunas de estas especificaciones SIMD tempranas como de HP eXtensiones Aceleración Multimedia (MAX) y de Intel MMX eran enteros solamente. Esto resultó ser un impedimento significativo para algunos desarrolladores de software, ya que muchas de las aplicaciones que se benefician de SIMD tratar principalmente con números de punto flotante. Progresivamente, estos primeros diseños fueron refinados y rehechos en algunas de las especificaciones SIMD modernos comunes, que generalmente se asocian con un ISA. Algunos ejemplos modernos notables son de Intel SSE y la relacionada con el PowerPC AltiVec (también conocido como VMX).

Rendimiento

El rendimiento o la velocidad de un procesador depende de la velocidad de reloj (generalmente dada en múltiplos de hertz) y las instrucciones por ciclo de reloj (IPC), que en conjunto son los factores para las instrucciones por segundo (IPS) que la CPU puede realizar. Muchos informaron valores IPS han representado las tasas de ejecución "pico" en secuencias de instrucciones artificiales con pocas ramas, mientras que las cargas de trabajo realistas consisten en una combinación de instrucciones y aplicaciones, algunas de las cuales requieren más tiempo para ejecutar que otros. El rendimiento de la jerarquía de memoria también afecta en gran medida el rendimiento del procesador, un tema apenas considerado en los cálculos MIPS. Debido a estos problemas, diferentes pruebas estandarizadas, a menudo llamados "puntos de referencia" para este propósito, tales como SPECint - se han desarrollado para tratar de medir el rendimiento real efectivo en aplicaciones de uso común.

El rendimiento de procesamiento de las computadoras se incrementa mediante el uso de los procesadores multi-núcleo, que en esencia es conectar dos o más procesadores individuales (llamados núcleos en este sentido) en un solo circuito integrado . Idealmente, un procesador de doble núcleo sería casi dos veces tan potente como un procesador de núcleo único. En la práctica, sin embargo, la ganancia de rendimiento es mucho menor, sólo alrededor del 50%, debido a los algoritmos de software imperfectos y aplicación. Aumentar el número de núcleos en un procesador (es decir, de doble núcleo, cuatro núcleos, etc.) aumenta la carga de trabajo que puede ser manejado. Esto significa que el procesador puede ahora manejar numerosos eventos asíncronos, interrupciones, etc., que pueden tomar un peaje en la CPU (Central Processing Unit) cuando abrumado. Estos núcleos pueden ser considerados como diferentes plantas en una planta de procesamiento, con el manejo de cada planta una tarea diferente. A veces, estos núcleos se manejan las mismas tareas que los núcleos adyacentes a ellos si un solo núcleo no es suficiente para manejar la información.

Recuperado de " http://en.wikipedia.org/w/index.php?title=Central_processing_unit&oldid=545392486 "