Publicidad:
Terra
La Coctelera

placa basede wikipedia enciclopedia libre redirigido desde

Placa base

De Wikipedia, la enciclopedia libre

(Redirigido desde Placa madre)

Placa ASUS en formato µATX.

Placa ASUS en formato µATX.

La placa base, placa madre, tarjeta madre o Board (en inglés motherboard, mainboard ) es la tarjeta de circuitos impresos que sirve como medio de conexión entre el microprocesador, los circuitos electrónicos de soporte, las ranuras para conectar parte o toda la RAM del sistema, la ROM y las ranuras especiales (slots) que permiten la conexión de tarjetas adaptadoras adicionales. Estas tarjetas de expansión suelen realizar funciones de control de periféricos tales como monitores, impresoras, unidades de disco, etc...
Se diseña básicamente para realizar tareas específicas vitales para el funcionamiento de la computadora, como por ejemplo las de:

  • Conexión física.
  • Administración, control y distribución de energía eléctrica.
  • Comunicación de datos.
  • Temporización.
  • Sincronismo.
  • Control y monitoreo.

Para que la placa base cumpla con su cometido, lleva instalado un software muy básico denominado BIOS.

Tabla de contenidos

[ocultar]

Tipos de placas [editar]

A continuación se describen los tipos de placas más usuales.

  • XT (8.5 × 11" ó 216 × 279 mm)
  • AT (12 × 11"–13" ó 305 × 279–330 mm)
  • Baby-AT (8.5" × 10"–13" ó 216 mm × 254-330 mm)
  • ATX (Intel 1996; 12" × 9.6" ó 305 mm × 244 mm)
  • EATX (12" × 13" ó 305mm × 330 mm)
  • Mini-ATX (11.2" × 8.2" ó 284 mm × 208 mm)
  • microATX (1996; 9.6" × 9.6" ó 244 mm × 244 mm)
  • LPX (9" × 11"–13" ó 229 mm × 279–330 mm)
  • Mini-LPX (8"–9" × 10"–11" ó 203–229 mm × 254–279 mm)
  • NLX (Intel 1999; 8"–9" × 10"-13.6" ó 203–229 mm × 254–345 mm)
  • FlexATX (Intel 1999; 9.6" × 9.6" ó 244 × 244 mm max.)
  • Mini-ITX (VIA Technologies 2003; 6.7" × 6.7" ó 170 mm × 170 mm max.; 100W max.)
  • Nano-ITX (VIA Technologies 2004; 120 mm × 120 mm max.)
  • BTX (Intel 2004; 12.8" × 10.5" ó 325 mm × 267 mm max.)
  • MicroBTX (Intel 2004; 10.4" × 10.5" ó 264 mm × 267 mm max.)
  • PicoBTX (Intel 2004; 8.0" × 10.5" ó 203 mm × 267 mm max.)
  • WTX (Intel 1998; 14" × 16.75" ó 355.6 mm × 425.4 mm)
  • ETX y PC/104, utilizados en sistemas embebidos.

Formato de Placa AT [editar]

El factor de forma AT es el empleado por el IBM AT y sus clones en formato sobremesa completo y torre completo. Su tamaño es de 12 pulgadas (305 mm) de ancho x 11-13 pulgadas de profundo. Su gran tamaño dificultaba la introducción de nuevas unidades de disco. Además su conector con la fuente de alimentación inducía fácilmente al error siendo numerosos los casos de gente que freía la placa al conectar indebidamente los dos juegos de cables (contar con un código de color para situar 4 cables negros en la zona central). El conector de teclado es el mismo DIN 5 del IBM PC original. Actualmente están todas descatalogadas, excepto un par, que se encuentran en el museo de la informática.

Formato de Placa Baby AT [editar]

IBM presenta en 1985 el formato Baby AT, que es funcionalmente equivalente a la AT, pero significativamente menor: 8,5 pulgadas de ancho y de 10 a 13 pulgadas de profundo, su menor tamaño favorece las cajas más pequeñas y facilita la ampliación, por lo que toda la industria se vuelca en él abandonando el formato AT. No obstante sigue heredando los problemas de diseño del AT, con la multitud de cables que dificultan la ventilación (algo que se va volviendo más crítico a medida que sube la potencia de los microprocesadores) y con el micro alejado de la entrada de alimentación. Todo esto será resuelto por el formato ATX. Pero dado el gran parque existente de equipos en caja Baby AT, durante un tiempo se venderán placas Super Socket 7 (que soportan tanto los Pentium MMX como los AMD K6-2 y otros micros, hasta los 500 Mhz, e incluyen slot AGP) en formato Baby AT pero con ambos conectores de fuente de alimentación (AT y ATX). Las cajas ATX, incluso hoy, soportan en sus ranuras el formato Baby AT.

Formato de Placa ATX [editar]

El formato ATX (siglas de Advanced Technology Extended') es presentado por Intel en 1995. con un tamaño de 12 pulgadas de ancho por 9,6 pulgadas de profundo, en este nuevo formato se resuelven todos los inconvenientes que perjudicaron a la ya mencionada placa. Los puertos más habituales (impresora Centronics, RS-232 en formato DE-9, la toma de joystick/midi DA-15 y de tarjeta de sonido, los puertos USB y RJ-45 (para red a 100) y en algunos casos incluso la salida de monitor VGA, se agrupan en el lado opuesto a los slots de ampliación. El puerto DIN 5 de teclado es sustituido por las tomas PS/2 de teclado y ratón (llamadas así por introducirlas IBM en su gama de computadoras PS/2 y rápidamente adoptada por todos los grandes fabricantes) y situados en el mismo bloque. Todo esto conlleva el que muchas tarjetas necesarias se integren en la placa madre, abaratando costes y mejorando la ventilación. Inmediatamente detrás se sitúa el zócalo o slot de procesador y las fijaciones del ventilador (que al estar más próxima a la fuente de alimentación y su ventilador, actúa más eficientemente), justo al lado de la nueva conexión de fuente de alimentación (que elimina el quemado accidental de la placa). Tras él vienen los slots de memoria RAM y justo detrás los conectores de las controladoras IDE, SCSI (principalmente en servidores y placas de gama alta) y de controladora de disquete, justo al lado de las bahías de disco de la caja (lo que reduce los cables)
La nueva fuente, además del interruptor físico de corriente como en la AT, tiene un modo de apagado similar al de los electrodomésticos de consumo, alimentando a la placa con una pequeña corriente que permite que responda a eventos (como una señal por la red o un mando a distancia) encendiéndose o, si se ha habilitado el modo de hibernado heredado de los portátiles, restablecer el trabajo en el punto donde se dejó.

Formato de Placa microATX [editar]

El formato microATX (también conocida como µATX) es un formato de placa base pequeño con un tamaño máximo de 9,6 x 9,6 pulgadas (244 mm x 244 mm) empleada principalmente en cajas tipo cubo y SFF. Debido a sus dimensiones sólo tiene sitio para 1 ó 2 slots PCI y/o AGP, por lo que suelen incorporar puertos FireWire y USB 2 en abundancia (para permitir conectar unidades externas y regrabadoras de DVD). Es la más moderna de todas y sus prestaciones son impresionantes. Al comienzo de la comercialización de la placa daba fallos (bugs) al conectar componentes a los puertos USB, aunque esto se solucionó de manera efectiva en posteriores modelos.
Especificaciones de microATX (PDF)

Componentes de la placa base [editar]

cpude wikipedia enciclopedia libresaltar navegaciain

CPU

De Wikipedia, la enciclopedia libre

Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6.75mm) es su empaquetado

Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6.75mm) es su empaquetado

La unidad central de procesamiento, CPU, o, simplemente, el procesador. Es el componente en una computadora digital que interpreta las instrucciones y procesa los datos contenidos en los programas de computadora. Los CPU proporcionan la característica fundamental de la computadora digital, la programabilidad, y son uno de los componentes necesarios encontrados en las computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores.
La expresión "unidad central de proceso" es, en términos generales, una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computadora. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros ordenadores que existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término sí mismo y su acrónimo han estado en uso en la industria de la informática por lo menos desde el principio de los años 1960 . La forma, el diseño y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar.
Las primeras CPU fueron diseñadas a la medida como parte de una computadora más grande, generalmente una computadora única en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, computadoras centrales, y microcomputadoras, y fue acelerada rápidamente con la popularización del circuito integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejos en espacios pequeños (en la orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares, juguetes, entre otros.

Tabla de contenidos

[ocultar]

Historia [editar]

El EDVAC, una de los primeras computadores de programas almacenados electrónicamente.

El EDVAC, una de los primeras computadores de programas almacenados electrónicamente.

Artículo principal: Historia del hardware

Antes del advenimiento de las máquinas parecidas a los CPU de hoy, computadores como el ENIAC tenían que ser físicamente recableados para poder realizar tareas diferentes. Estas máquinas eran a menudo referidas como "computadores de programa fijo", puesto que tenían que ser reconfiguradas físicamente para correr un programa diferente. Puesto que el término "CPU" es generalmente definido como un dispositivo de ejecución de software (programa de computadora), los primeros dispositivos que podían ser llamados correctamente como CPU vinieron con el advenimiento de la computadora con programa almacenado.
La idea de una computadora con programa almacenado ya estaba presente durante el diseño del ENIAC, pero fue omitida inicialmente para que la máquina pudiera ser terminada más pronto. El 30 de junio de 1945, antes de que el ENIAC incluso fuera terminado, el matemático John von Neumann distribuyó el trabajo titulado "Primer Borrador de un Reporte sobre el EDVAC". Este trabajo, cuya autoría principal hoy se les reconoce a John Presper Eckert y John William Mauchly[1] , esbozó el diseño de una computadora con programa almacenado que finalmente sería terminado en agosto de 1949 . El EDVAC fue diseñado para efectuar un número determinado de instrucciones (u operaciones) de varios tipos. Estas instrucciones podían combinarse para crear programas útiles para ser ejecutados por el EDVAC. Significativamente, los programas escritos para el EDVAC fueron almacenados en memoria de la computadora de alta velocidad en lugar de ser especificados por el cableado físico de la computadora. Esto superó una severa limitación del ENIAC, que era la gran cantidad de tiempo y esfuerzo que tomaba reconfigurar el computador para realizar una nueva tarea. Con el diseño de Eckert-Mauchly, el programa, o el software, que el EDVAC corría, podía ser reemplazado simplemente cambiando el contenido de la memoria del computador [2] .
Debe ser notado que mientras que von Neumann es acreditado más frecuentemente por el diseño del computador con programa almacenado debido a su diseño del EDVAC, otros antes de él, como Konrad Zuse, habían sugerido ideas similares. Además, la llamada arquitectura Harvard del Harvard Mark I, que fue terminada antes del EDVAC, también utilizó un diseño con programa almacenado empleando cinta de papel perforada en vez de memoria electrónica. La diferencia clave entre las arquitecturas de Eckert-Mauchly y la de Harvard es que la última separa el almacenamiento y el tratamiento de las instrucciones y de los datos del CPU, mientras que la primera usa el mismo espacio de memoria para ambos. La mayoría de los CPU modernos son diseños de Eckert-Mauchly en su mayor parte, pero también son vistos comúnmente elementos de la arquitectura de Harvard.
Siendo dispositivos digitales todos los CPU tratan con estados discretos, y por lo tanto requieren una cierta clase de elementos de conmutación para diferenciar y cambiar estos estados. Antes de la aceptación comercial del transistor, los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados comúnmente como elementos de conmutación. Aunque éstos tenían distintas ventajas de velocidad sobre los anteriores diseños puramente mecánicos, no eran fiables por varias razones. Por ejemplo, hacer circuitos de lógica secuencial de corriente directa requería hardware adicional para hacer frente al problema del rebote de contacto. Por otro lado, mientras que los tubos de vacío no sufren del rebote de contacto, éstos deben calentarse antes de llegar a estar completamente operacionales y eventualmente fallan y dejan de funcionar por completo [3] . Generalmente, cuando un tubo ha fallado, el CPU tendría que ser diagnosticado para localizar el componente que falla para que pueda ser reemplazado. Por lo tanto, los primeros computadores electrónicos, (basados en tubos de vacío), generalmente eran más rápidas pero menos confiables que las computadoras electromecánicas, (basadas en relés). Las computadoras de tubo, como el EDVAC, tendieron en tener un promedio de ocho horas entre fallas, mientras que las computadoras de relés, (anteriores y más lentas), como el Harvard Mark I, fallaban muy raramente . Al final, los CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban más que los problemas de confiabilidad. La mayor parte de estos tempranos CPU síncronos corrían en frecuencias de reloj bajas comparadas con los modernos diseños microelectrónicos, (ver más abajo para una exposición sobre la frecuencia de reloj). Eran muy comunes en este tiempo las frecuencias de la señal del reloj con un rango desde 100 kHz hasta 4 MHz, limitado en gran parte por la velocidad de los dispositivos de conmutación con los que fueron construidos.

CPU de transistores y de circuitos integrados discretos [editar]

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.

La complejidad del diseño de los 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 del transistor. Los CPU transistorizados durante los años 1950 y los años 1960 no tuvieron que ser construidos con elementos de conmutación abultados, no fiables, y frágiles, como los tubos de vacío y los relés eléctricos. Con esta mejora, fueron construidos CPUs más complejos y más confiables sobre una o varias tarjetas de circuito impreso que contenían componentes discretos (individuales).
Durante este período, ganó popularidad un método de fabricar muchos transistores en un espacio compacto. El circuito integrado (IC) permitió que una gran cantidad de transistores fueran fabricados en una simple oblea basada en semiconductor o "chip". Al principio, solamente circuitos digitales muy básicos, no especializados, como las puertas NOR fueron miniaturizados en ICs. Los CPU basadas en estos IC de "bloques de construcción" generalmente son referidos como dispositivos de pequeña escala de integración "small-scale integration" (SSI). Los circuitos integrados SSI, como los usados en el computador guía del Apollo (Apollo Guidance Computer), usualmente contenían transistores que se contaban en números de múltiplos de diez. Construir un CPU completo usando ICs SSI requería miles de chips individuales, pero todavía consumía mucho menos espacio y energía que diseños anteriores de transistores discretos. A medida que la tecnología microelectrónica avanzó, en los IC fue colocado un número creciente de transistores, disminuyendo así la cantidad de ICs individuales necesarios para un CPU completo. Los circuitos integrados MSI y el LSI (de mediana y gran escala de integración) aumentaron el número de transistores a cientos, y luego a miles.
En 1964, IBM introducido su arquitectura de computador System/360, que fue usada en una serie de computadores que podían correr los mismos programas con velocidades y desempeños diferentes. Esto fue significativo en un tiempo en que la mayoría de las computadoras electrónicas eran incompatibles una con la otra, incluso las hechas 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 extenso en los CPU modernos . La arquitectura System/360 era tan popular que dominó el mercado del mainframe por las siguientes décadas y dejó una herencia que todavía es continuada por computadores modernos similares como el IBM zSeries. En el mismo año de 1964, Digital Equipment Corporation (DEC) introdujo otro computador influyente dirigido a los mercados científicos y de investigación, el PDP-8. DEC introduciría más adelante la extremadamente popular línea del PDP-11, que originalmente fue construido con ICs SSI pero eventualmente fue implementado con componentes LSI cuando llegaron a ser prácticos. En fuerte contraste con sus precursores hechos con tecnología SSI y MSI, la primera implementación LSI del PDP-11 contuvo un CPU integrado por solamente cuatro circuitos integrados LSI .
Los computadores basados en transistores tenían varias ventajas distintas sobre sus predecesores. Aparte de facilitar una creciente confiabilidad y un más bajo consumo de energía, los transistores también permitían al 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 tanto a la creciente confiabilidad como a la dramáticamente incrementada velocidad de los elementos de conmutación que por este tiempo eran casi exclusivamente transistores, fueron obtenidas frecuencias de reloj del CPU de decenas de megahertz. Además, mientras que los CPU de transistores discretos y circuitos integrados estaban en fuerte uso, comenzaron a aparecer los nuevos diseños de alto rendimiento como procesadores vectoriales SIMD (Single Instruction Multiple Data) (Simple Instrucción Múltiples Datos). Estos tempranos diseños experimentales dieron lugar más adelante a la era de los supercomputadoras especializados, como los hechos por Cray Inc.

Microprocesadores [editar]

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Artículo principal: Microprocesador

Desde la introducción del primer microprocesador, el Intel 4004, en 1970, y del primer microprocesador ampliamente usado, el Intel 8080, en 1974. Esta clase de CPUs ha desplazado casi totalmente el resto de los métodos de implementación de la Unidad Central de Proceso. Los fabricantes de mainframes y minicomputadores de ese tiempo lanzaron programas de desarrollo de ICs propietarios para actualizar sus más viejas arquitecturas de computador, y eventualmente produjeron microprocesadores con conjuntos de instrucciones que eran compatibles hacia atrás con sus más viejos hardwares y softwares. Combinado con el advenimiento y el eventual vasto éxito del ahora ubicuo computadora personal, el término "CPU" es aplicado ahora casi exclusivamente a los microprocesadores.
Las generaciones previas de CPUs fueron implementadas como componentes discretos y numerosos circuitos integrados de pequeña escala de integración en una o más tarjetas de circuitos. Por otro lado, los microprocesadores son CPUs fabricados con un número muy pequeño de ICs; usualmente solo uno. El tamaño más pequeño del CPU, como resultado de estar implementado en una simple pastilla, significa tiempos de conmutación más rápidos debido a factores físicos como el decrecimiento de la capacitancia parásita de las puertas. Esto ha permitido que los microprocesadores síncronos tengan ratas de reloj con un rango de decenas de megahertz a varios gigahertz. Adicionalmente, como ha aumentado la capacidad de construir transistores excesivamente pequeños en un IC, la complejidad y el número de transistores en un simple CPU también se ha incrementado dramáticamente. Esta tendencia ampliamente observada es descrita por la ley de Moore, que ha demostrado hasta la fecha, ser una predicción bastante exacta del crecimiento de la complejidad de los CPU y otros ICs.
Mientras que, en los pasados sesenta años han cambiado drásticamente, la complejidad, el tamaño, la construcción, y la forma general del CPU, es notable que el diseño y el funcionamiento básico no ha cambiado demasiado. Casi todos los CPU comunes de hoy se pueden describir con precisión como máquinas de programa almacenado de Eckert-Mauchly.
A medida que la a mencionada ley del Moore continúa manteniéndose verdadera, se han presentado preocupaciones sobre 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 que se vuelven mucho más significativos, como la electromigración, y el subumbral de pérdida. Estas más nuevas preocupaciones están entre los muchos factores que hacen a investigadores estudiar nuevos métodos de computación como la computadora cuántica, así como ampliar el uso de paralelismo, y otros métodos que extienden la utilidad del modelo clásico de Eckert-Mauchly.

Operación del CPU [editar]

La operación fundamental de la mayoría de los CPU, sin importar la forma física que tomen, es ejecutar una secuencia de instrucciones almacenadas llamadas "programa". Aquí se habla sobre los dispositivos conformes con la arquitectura Eckert-Mauchly común. El programa es representado por una serie de números que se mantentienen en una cierta clase de memoria de computador. Hay cuatro pasos que casi todos los CPU de Eckert-Mauchly usan en su operación: fetch, decode, execute, y writeback, (leer, decodificar, ejecutar, y escribir).

Diagrama mostrando como es decodificada una instrucción del MIPS32. (MIPS Technologies 2005)

Diagrama mostrando como es decodificada una instrucción del MIPS32. (MIPS Technologies 2005)

El primer paso, leer (fetch), implica el recuperar una instrucción, (que es representada por un número o una secuencia de números), de la memoria de programa. La localización en la memoria del programa es determinada por un contador de programa (PC), que almacena un número que identifica la posición actual en el programa. En otras palabras, el contador de programa indica al CPU, el lugar de la instrucción en el programa actual . Después de que se lee una instrucción, el PC es incrementado por la longitud de la palabra de instrucción en términos de unidades de memoria [4] . Frecuentemente la instrucción a ser leída debe ser recuperada de memoria relativamente lenta, haciendo detener al CPU mientras espera que la instrucción sea retornada. Este problema es tratado en procesadores modernos en gran parte por los cachés y las arquitecturas pipeline (ver abajo).
La instrucción que el CPU lee desde la memoria es usada para determinar qué deberá hacer el CPU. En el paso de decodificación, la instrucción es dividida en partes que tienen significado para otras porciones del CPU. La manera en que el valor de la instrucción numérica es interpretado está definida por la arquitectura del conjunto de instrucciones (el ISA) del CPU [5] . 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, como por ejemplo, operandos para una operación de adición. Tales operandos se pueden dar como un valor constante (llamado valor inmediato), o como un lugar para localizar un valor, que según lo determinado por algún modo de dirección, puede ser un registro o una dirección de memoria. En diseños más viejos las 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, es frecuentemente usado un microprograma para asistir en traducir instrucciones en varias señales de configuración para el CPU. Este microprograma es a veces reescribible de tal manera que puede ser modificado para cambiar la manera en que el CPU decodifica instrucciones incluso después de que haya sido fabricado.

Diagrama de bloques de un CPU simple

Diagrama de bloques de un CPU simple

Después de los pasos de lectura y decodificación, es llevado a cabo el paso de la ejecución de la instrucción. Durante este paso, varias porciones del CPU son conectadas de tal manera que ellas pueden realizar la operación deseada. Si, por ejemplo, una operación de adición fue solicitada, una unidad aritmético lógica (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 operaciones simples de aritmética y lógica en las entradas, como adición y operaciones de bits (bitwise). Si la operación de adición produce un resultado demasiado grande para poder ser manejado por el CPU, , también puede ser ajustada una bandera (flag) de desbordamiento aritmético localizada en un registro de banderas (ver abajo la sección sobre rango de números enteros).
El paso final, la escritura (writeback), simplemente "escribe" los resultados del paso de ejecución a una cierta forma de memoria. Muy a menudo, los resultados son escritos a algún registro interno del CPU para acceso rápido por subsecuentes instrucciones. En otros casos los resultados pueden ser escritos a una memoria principal más lenta pero más barata y más grande. Algunos tipos de instrucciones manipulan el contador de programa en lugar de directamente producir datos de resultado. Éstas son llamadas generalmente "saltos" (jumps) y facilitan comportamientos como bucles (loops), la ejecución condicional de programas (con el uso de saltos condicionales), y funciones en programas [6] . Muchas instrucciones también cambiarán el estado de dígitos en un registro de "banderas". Estas banderas pueden ser usadas para influenciar cómo se comporta un programa, puesto que a menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de instrucción de "comparación" considera dos valores y fija un número, en el registro de banderas, de acuerdo a cual es el mayor. Entonces, esta bandera puede ser usada por una posterior instrucción de salto para determinar el flujo de programa.
Después de la ejecución de la instrucción y la escritura de los datos resultantes, el proceso entero se repite con el 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 a la cual 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. Esta sección describe lo que es referido generalmente como el "entubado RISC clásico" (Classic RISC pipeline), que de hecho es bastante común entre los CPU simples usados en muchos dispositivos electrónicos, a menudo llamados microcontroladores [7] .

Diseño e implementación [editar]

Prerequisitos
Arquitectura informática
Circuitos digitales
Artículo principal: Diseño del CPU

Rango de enteros [editar]

La manera en que un CPU representa los números es una opción de diseño que afecta las más básicas formas en que el dispositivo funciona. Algunas de las primeras calculadoras digitales usaron, para representar números internamente, un modelo eléctrico del sistema de numeración decimal común (base diez). Algunas otras computadoras han usado sistemas de numeración más exóticos como el ternario (base tres). Casi todas los CPU modernos representan los números en forma binaria, en donde cada dígito es representado por una cierta cantidad física de dos valores, como un voltaje "alto" o "bajo" [8] .

Microprocesador MOS 6502 en un dual in-line package (paquete en línea dual), un diseño extremadamente popular de 8 bits.

Microprocesador MOS 6502 en un dual in-line package (paquete en línea dual), un diseño extremadamente popular de 8 bits.

Con la representación numérica están relacionados 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 una posición significativa en los números con que trabaja un CPU. El número de bits (o de posiciones numéricas, o dígitos) que un CPU usa para representar los números, a menudo se llama "tamaño de la palabra", "ancho de bits", "ancho de ruta de datos", o "precisión del número entero" cuando se ocupa estrictamente de números de números enteros (en oposición a números de punto flotante). Este número difiere entre las arquitecturas, y a menudo dentro de diferentes partes del mismo CPU. Por ejemplo, un CPU de 8 bits maneja un rango de números que pueden ser representados por ocho dígitos binarios, cada dígito teniendo dos valores posibles, y en combinación los 8 bits teniendo 28 ó 256 números discretos. En efecto, el tamaño del número entero fija un límite de hardware en el rango de números enteros que el software corre y que el CPU puede usar directamente [9] .
El rango del número entero también puede afectar el número de posiciones en memoria que el CPU puede direccionar (localizar). Por ejemplo, si un CPU binario utiliza 32 bits para representar una dirección de memoria, y cada dirección de memoria representa a un octeto (8 bits), la cantidad máxima de memoria que el CPU puede direccionar es 232 octetos, o 4 GB. Ésta es una vista muy simple del espacio de dirección del CPU, y muchos diseños modernos usan métodos de dirección mucho más complejos como paginación para localizar más memoria que su rango entero permitiría con un espacio de dirección plano.
Niveles más altos del rango de números enteros requieren más estructuras para manejar los dígitos adicionales, y por lo tanto, más complejidad, tamaño, uso de energía, y generalmente costo. Por ello, no es del todo infrecuente, ver microcontroladores de 4 y 8 bits usados en aplicaciones modernas, aun cuando están disponibles CPU con un rango mucho más alto (de 16, 32, 64, e incluso 128 bits). Los microcontroladores más simples son generalmente más baratos, usan menos energía, y por lo tanto disipan menos calor. Todo esto pueden ser consideraciones de diseño importantes para los dispositivos electrónicos. Sin embargo, en aplicaciones del extremo alto, los beneficios producidos por el rango adicional, (más a menudo el espacio de dirección adicional), son más significativos y con frecuencia afectan las opciones del diseño. Para ganar algunas de las ventajas proporcionadas por las longitudes de bits tanto más bajas, como más altas, muchos CPUs están diseñados con anchos de bit diferentes para diferentes porciones del dispositivo. Por ejemplo, el IBM Sistem/370 usó un CPU que fue sobre todo de 32 bits, pero usó precisión de 128 bits dentro de sus unidades de punto flotante para facilitar mayor exactitud y rango de números de punto flotante . Muchos diseños posteriores de CPU usan una mezcla de ancho de bits similar, especialmente cuando el procesador está diseñado para usos de propósito general donde se requiere un razonable equilibrio entre la capacidad de números enteros y de punto flotante.

Frecuencia de reloj [editar]

Artículo principal: Frecuencia de reloj

La mayoría de los CPU, y de hecho, la mayoría de los dispositivos de lógica secuencial, son de naturaleza síncrona [10] . Es decir, están diseñados y operan en función de una señal de sincronización. Esta señal, conocida como señal de reloj, usualmente toman la forma de una onda cuadrada periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden seleccionar un período apropiado para la señal del reloj.
Este período debe ser más largo que la cantidad de tiempo que toma a una señal moverse, o propagarse, en el peor de los casos. En fijar el período del reloj a un valor bastante sobre el retardo de la propagación del peor caso, es posible diseñar todo el CPU y la manera que mueve los datos alrededor de los "bordes" de la subida y bajada de la señal del reloj. Esto tiene la ventaja de simplificar el CPU significativamente, tanto en una perspectiva de diseño, como en una perspectiva de cantidad de componentes. Sin embargo, esto también tiene la desventaja que todo el CPU debe esperar por sus elementos más lentos, aun cuando algunas porciones del mismo son mucho más rápidas. Esta limitación ha sido compensada en gran parte por varios métodos de aumentar el paralelismo del CPU (ver abajo).
Sin embargo, las solamente mejoras arquitectónicas no solucionan todas las desventajas de CPUs globalmente síncronos. Por ejemplo, una señal de reloj está sujeta a los retardos de cualquier otra señal eléctrica. Ratas de reloj más altas en CPUs cada vez más complejos hacen más difícil de mantener la señal del reloj en fase (sincronizada) a través de toda la unidad. Esto ha conducido que muchos CPU modernos requieran que se les proporcione múltiples señales de reloj idénticas, para evitar retardar una sola señal lo suficiente significativamente como para hacer al CPU funcionar incorrectamente. Otro importante problema cuando las ratas del reloj aumentan dramáticamente, es la cantidad de calor que es disipado por el CPU. La constantemente cambiante señal del reloj causa la conmutación de muchos componentes (cambian de estado) sin importar si están siendo usados en ese momento. En general, un componente que está conmutando usa más energía que un elemento en un estado estático. Por lo tanto, a medida que la rata del reloj aumenta, así lo hace también la disipación de calor, causando que el CPU requiera soluciones de enfriamiento más efectivas.
Un método de tratar la conmutación de componentes innecesarios se llama el clock gating, que implica apagar la señal del reloj a los componentes innecesarios, efectivamente desactivándolos. Sin embargo, esto es frecuentemente considerado como difícil de implementar y por lo tanto no ve uso común afuera de diseños de muy baja potencia [11] . Otro método de tratar algunos de los problemas de una señal global de reloj es la completa remoción de la misma. Mientras que quitar la señal global del reloj hace, de muchas maneras, considerablemente más complejo el proceso del diseño, en comparación con diseños síncronos similares, los diseños asincrónicos (o sin reloj) tienen marcadas ventajas en el consumo de energía y la disipación de calor. Aunque algo infrecuente, CPUs completos se han construido sin utilizar una señal global de reloj. Dos notables ejemplos de esto son el AMULET, que implementa la arquitectura del ARM, y el MiniMIPS, compatible con el MIPS R3000. En lugar de remover totalmente la señal del reloj, algunos diseños de CPU permiten a ciertas porciones del dispositivo ser asincrónicas, como por ejemplo, usar ALUs asincrónicas en conjunción con pipelining superescalar para alcanzar algunas ganancias en el desempeño aritmético. Mientras que no está completamente 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 por lo menos sobresalen en las más simples operaciones matemáticas. Esto, combinado con sus excelentes características de consumo de energía y disipación de calor, los hace muy adecuados para los computadores empotrados .

Paralelismo [editar]

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

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

Artículo principal: Computación paralela

La descripción de la operación básica de un CPU ofrecida en la sección anterior describe la forma más simple que puede tomar un CPU. Este tipo de CPU, usualmente referido como subescalar, opera sobre y ejecuta una sola instrucción con una o dos piezas de datos a la vez.
Este proceso da lugar a una ineficacia inherente en CPUs subescalares. Puesto que solamente una instrucción es ejecutada a la vez, todo el CPU debe esperar que esa instrucción se complete antes de proceder a la siguiente instrucción. Como resultado, el CPU subescalar queda "paralizado" en instrucciones que toman más de un ciclo de reloj para completar su ejecución. Incluso la adición de una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. En lugar de un camino quedando congelado, ahora dos caminos se paralizan y aumenta el número de transistores no usados. Este diseño, en donde los recursos de ejecución del CPU pueden operar con solamente una instrucción a la vez, solo puede, posiblemente, alcanzar el desempeño escalar (una instrucción por ciclo de reloj). Sin embargo, el desempeño casi siempre es subescalar (menos de una instrucción por ciclo).
Las tentativas de alcanzar un desempeño escalar y mejor, han resultado en una variedad de metodologías de diseño que hacen comportarse al CPU menos linealmente y más en paralelo. Cuando se refiere al paralelismo en los CPU, generalmente son usados dos términos para clasificar estas técnicas de diseño.

  • El paralelismo a nivel de instrucción, en inglés Instruction Level Parallelism (ILP), busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un CPU, es decir, aumentar la utilización de los recursos de ejecución en la pastilla
  • El paralelismo a nivel de hilo de ejecución, en inglés thread level parallelism (TLP), que se propone incrementar el número de hilos (efectivamente programas individuales) que un CPU pueda ejecutar simultáneamente. Cada metodología diferencia tanto en las maneras en las que están implementadas, como en la efectividad relativa que producen en el aumento del desempeño del CPU para una aplicación [12] .

ILP: Entubado de instrucción y arquitectura superescalar [editar]

Tubería básica de cinco etapas. En el escenario del mejor caso, esta tubería puede sostener un rata de completado de una instrucción por ciclo.

Tubería básica de cinco etapas. En el escenario del mejor caso, esta tubería puede sostener un rata de completado de una instrucción por ciclo.

Artículo principal: Entubado de instrucción y superescalar
Uno de los más simples métodos usados para lograr incrementar el paralelismo es comenzar los primeros pasos de leer y decodificar la instrucción antes de que la instrucción anterior haya terminado de ejecutarse. Ésta es la forma más simple de una técnica conocida como instruction pipelining (entubado de instrucción), y es utilizada en casi todos los CPU de propósito general modernos. Al dividir la ruta de ejecución en etapas discretas, la tubería permite que más de una instrucción sea ejecutada en cualquier tiempo. Esta separación puede ser comparada a una línea de ensamblaje, en la cual una instrucción es hecha más completa en cada etapa hasta que sale de la tubería de ejecución y es retirada.
Sin embargo, la tubería introduce la posibilidad de una situación donde es necesario terminar el resultado de la operación anterior para completar la operación siguiente; una condición llamada a menudo como conflicto de dependencia de datos. Para hacer frente a esto, debe ser tomado un cuidado adicional para comprobar estas clases de condiciones, y si esto ocurre, se debe retrasar una porción de la tubería de instrucción. Naturalmente, lograr esto requiere circuitería adicional, los procesadores entubados son más complejos que los subescalares, pero no mucho. Un procesador entubado puede llegar a ser casi completamente escalar, solamente inhibido por las abruptas paradas de la tubería (una instrucción durando más de un ciclo de reloj en una etapa).

Tubería superescalar simple. Al leer y despachar dos instrucciones a la vez,un máximo de dos instrucciones por ciclo pueden ser completadas.

Tubería superescalar simple. Al leer y despachar dos instrucciones a la vez,un máximo de dos instrucciones por ciclo pueden ser completadas.

Una mejora adicional sobre la idea del entubado de instrucción (instruction pipelining) condujo al desarrollo de un método que disminuye incluso más el tiempo ocioso de los componentes del 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 o no ejecutar en paralelo (simultáneamente). De ser así, son despachadas a las unidades de ejecución disponibles, dando por resultado la capacidad para que varias instruccione

ocultar este mensaje mostrar este mensaje cpude wikipedia

[Ocultar este mensaje]

CPU

De Wikipedia, la enciclopedia libre

Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6.75mm) es su empaquetado

Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6.75mm) es su empaquetado

La unidad central de procesamiento, CPU, o, simplemente, el procesador. Es el componente en una computadora digital que interpreta las instrucciones y procesa los datos contenidos en los programas de computadora. Los CPU proporcionan la característica fundamental de la computadora digital, la programabilidad, y son uno de los componentes necesarios encontrados en las computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores.
La expresión "unidad central de proceso" es, en términos generales, una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computadora. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros ordenadores que existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término sí mismo y su acrónimo han estado en uso en la industria de la informática por lo menos desde el principio de los años 1960 . La forma, el diseño y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar.
Las primeras CPU fueron diseñadas a la medida como parte de una computadora más grande, generalmente una computadora única en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, computadoras centrales, y microcomputadoras, y fue acelerada rápidamente con la popularización del circuito integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejos en espacios pequeños (en la orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares, juguetes, entre otros.

Tabla de contenidos

[ocultar]

Historia [editar]

El EDVAC, una de los primeras computadores de programas almacenados electrónicamente.

El EDVAC, una de los primeras computadores de programas almacenados electrónicamente.

Artículo principal: Historia del hardware

Antes del advenimiento de las máquinas parecidas a los CPU de hoy, computadores como el ENIAC tenían que ser físicamente recableados para poder realizar tareas diferentes. Estas máquinas eran a menudo referidas como "computadores de programa fijo", puesto que tenían que ser reconfiguradas físicamente para correr un programa diferente. Puesto que el término "CPU" es generalmente definido como un dispositivo de ejecución de software (programa de computadora), los primeros dispositivos que podían ser llamados correctamente como CPU vinieron con el advenimiento de la computadora con programa almacenado.
La idea de una computadora con programa almacenado ya estaba presente durante el diseño del ENIAC, pero fue omitida inicialmente para que la máquina pudiera ser terminada más pronto. El 30 de junio de 1945, antes de que el ENIAC incluso fuera terminado, el matemático John von Neumann distribuyó el trabajo titulado "Primer Borrador de un Reporte sobre el EDVAC". Este trabajo, cuya autoría principal hoy se les reconoce a John Presper Eckert y John William Mauchly[1] , esbozó el diseño de una computadora con programa almacenado que finalmente sería terminado en agosto de 1949 . El EDVAC fue diseñado para efectuar un número determinado de instrucciones (u operaciones) de varios tipos. Estas instrucciones podían combinarse para crear programas útiles para ser ejecutados por el EDVAC. Significativamente, los programas escritos para el EDVAC fueron almacenados en memoria de la computadora de alta velocidad en lugar de ser especificados por el cableado físico de la computadora. Esto superó una severa limitación del ENIAC, que era la gran cantidad de tiempo y esfuerzo que tomaba reconfigurar el computador para realizar una nueva tarea. Con el diseño de Eckert-Mauchly, el programa, o el software, que el EDVAC corría, podía ser reemplazado simplemente cambiando el contenido de la memoria del computador [2] .
Debe ser notado que mientras que von Neumann es acreditado más frecuentemente por el diseño del computador con programa almacenado debido a su diseño del EDVAC, otros antes de él, como Konrad Zuse, habían sugerido ideas similares. Además, la llamada arquitectura Harvard del Harvard Mark I, que fue terminada antes del EDVAC, también utilizó un diseño con programa almacenado empleando cinta de papel perforada en vez de memoria electrónica. La diferencia clave entre las arquitecturas de Eckert-Mauchly y la de Harvard es que la última separa el almacenamiento y el tratamiento de las instrucciones y de los datos del CPU, mientras que la primera usa el mismo espacio de memoria para ambos. La mayoría de los CPU modernos son diseños de Eckert-Mauchly en su mayor parte, pero también son vistos comúnmente elementos de la arquitectura de Harvard.
Siendo dispositivos digitales todos los CPU tratan con estados discretos, y por lo tanto requieren una cierta clase de elementos de conmutación para diferenciar y cambiar estos estados. Antes de la aceptación comercial del transistor, los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados comúnmente como elementos de conmutación. Aunque éstos tenían distintas ventajas de velocidad sobre los anteriores diseños puramente mecánicos, no eran fiables por varias razones. Por ejemplo, hacer circuitos de lógica secuencial de corriente directa requería hardware adicional para hacer frente al problema del rebote de contacto. Por otro lado, mientras que los tubos de vacío no sufren del rebote de contacto, éstos deben calentarse antes de llegar a estar completamente operacionales y eventualmente fallan y dejan de funcionar por completo [3] . Generalmente, cuando un tubo ha fallado, el CPU tendría que ser diagnosticado para localizar el componente que falla para que pueda ser reemplazado. Por lo tanto, los primeros computadores electrónicos, (basados en tubos de vacío), generalmente eran más rápidas pero menos confiables que las computadoras electromecánicas, (basadas en relés). Las computadoras de tubo, como el EDVAC, tendieron en tener un promedio de ocho horas entre fallas, mientras que las computadoras de relés, (anteriores y más lentas), como el Harvard Mark I, fallaban muy raramente . Al final, los CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban más que los problemas de confiabilidad. La mayor parte de estos tempranos CPU síncronos corrían en frecuencias de reloj bajas comparadas con los modernos diseños microelectrónicos, (ver más abajo para una exposición sobre la frecuencia de reloj). Eran muy comunes en este tiempo las frecuencias de la señal del reloj con un rango desde 100 kHz hasta 4 MHz, limitado en gran parte por la velocidad de los dispositivos de conmutación con los que fueron construidos.

CPU de transistores y de circuitos integrados discretos [editar]

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.

La complejidad del diseño de los 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 del transistor. Los CPU transistorizados durante los años 1950 y los años 1960 no tuvieron que ser construidos con elementos de conmutación abultados, no fiables, y frágiles, como los tubos de vacío y los relés eléctricos. Con esta mejora, fueron construidos CPUs más complejos y más confiables sobre una o varias tarjetas de circuito impreso que contenían componentes discretos (individuales).
Durante este período, ganó popularidad un método de fabricar muchos transistores en un espacio compacto. El circuito integrado (IC) permitió que una gran cantidad de transistores fueran fabricados en una simple oblea basada en semiconductor o "chip". Al principio, solamente circuitos digitales muy básicos, no especializados, como las puertas NOR fueron miniaturizados en ICs. Los CPU basadas en estos IC de "bloques de construcción" generalmente son referidos como dispositivos de pequeña escala de integración "small-scale integration" (SSI). Los circuitos integrados SSI, como los usados en el computador guía del Apollo (Apollo Guidance Computer), usualmente contenían transistores que se contaban en números de múltiplos de diez. Construir un CPU completo usando ICs SSI requería miles de chips individuales, pero todavía consumía mucho menos espacio y energía que diseños anteriores de transistores discretos. A medida que la tecnología microelectrónica avanzó, en los IC fue colocado un número creciente de transistores, disminuyendo así la cantidad de ICs individuales necesarios para un CPU completo. Los circuitos integrados MSI y el LSI (de mediana y gran escala de integración) aumentaron el número de transistores a cientos, y luego a miles.
En 1964, IBM introducido su arquitectura de computador System/360, que fue usada en una serie de computadores que podían correr los mismos programas con velocidades y desempeños diferentes. Esto fue significativo en un tiempo en que la mayoría de las computadoras electrónicas eran incompatibles una con la otra, incluso las hechas 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 extenso en los CPU modernos . La arquitectura System/360 era tan popular que dominó el mercado del mainframe por las siguientes décadas y dejó una herencia que todavía es continuada por computadores modernos similares como el IBM zSeries. En el mismo año de 1964, Digital Equipment Corporation (DEC) introdujo otro computador influyente dirigido a los mercados científicos y de investigación, el PDP-8. DEC introduciría más adelante la extremadamente popular línea del PDP-11, que originalmente fue construido con ICs SSI pero eventualmente fue implementado con componentes LSI cuando llegaron a ser prácticos. En fuerte contraste con sus precursores hechos con tecnología SSI y MSI, la primera implementación LSI del PDP-11 contuvo un CPU integrado por solamente cuatro circuitos integrados LSI .
Los computadores basados en transistores tenían varias ventajas distintas sobre sus predecesores. Aparte de facilitar una creciente confiabilidad y un más bajo consumo de energía, los transistores también permitían al 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 tanto a la creciente confiabilidad como a la dramáticamente incrementada velocidad de los elementos de conmutación que por este tiempo eran casi exclusivamente transistores, fueron obtenidas frecuencias de reloj del CPU de decenas de megahertz. Además, mientras que los CPU de transistores discretos y circuitos integrados estaban en fuerte uso, comenzaron a aparecer los nuevos diseños de alto rendimiento como procesadores vectoriales SIMD (Single Instruction Multiple Data) (Simple Instrucción Múltiples Datos). Estos tempranos diseños experimentales dieron lugar más adelante a la era de los supercomputadoras especializados, como los hechos por Cray Inc.

Microprocesadores [editar]

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Artículo principal: Microprocesador

Desde la introducción del primer microprocesador, el Intel 4004, en 1970, y del primer microprocesador ampliamente usado, el Intel 8080, en 1974. Esta clase de CPUs ha desplazado casi totalmente el resto de los métodos de implementación de la Unidad Central de Proceso. Los fabricantes de mainframes y minicomputadores de ese tiempo lanzaron programas de desarrollo de ICs propietarios para actualizar sus más viejas arquitecturas de computador, y eventualmente produjeron microprocesadores con conjuntos de instrucciones que eran compatibles hacia atrás con sus más viejos hardwares y softwares. Combinado con el advenimiento y el eventual vasto éxito del ahora ubicuo computadora personal, el término "CPU" es aplicado ahora casi exclusivamente a los microprocesadores.
Las generaciones previas de CPUs fueron implementadas como componentes discretos y numerosos circuitos integrados de pequeña escala de integración en una o más tarjetas de circuitos. Por otro lado, los microprocesadores son CPUs fabricados con un número muy pequeño de ICs; usualmente solo uno. El tamaño más pequeño del CPU, como resultado de estar implementado en una simple pastilla, significa tiempos de conmutación más rápidos debido a factores físicos como el decrecimiento de la capacitancia parásita de las puertas. Esto ha permitido que los microprocesadores síncronos tengan ratas de reloj con un rango de decenas de megahertz a varios gigahertz. Adicionalmente, como ha aumentado la capacidad de construir transistores excesivamente pequeños en un IC, la complejidad y el número de transistores en un simple CPU también se ha incrementado dramáticamente. Esta tendencia ampliamente observada es descrita por la ley de Moore, que ha demostrado hasta la fecha, ser una predicción bastante exacta del crecimiento de la complejidad de los CPU y otros ICs.
Mientras que, en los pasados sesenta años han cambiado drásticamente, la complejidad, el tamaño, la construcción, y la forma general del CPU, es notable que el diseño y el funcionamiento básico no ha cambiado demasiado. Casi todos los CPU comunes de hoy se pueden describir con precisión como máquinas de programa almacenado de Eckert-Mauchly.
A medida que la a mencionada ley del Moore continúa manteniéndose verdadera, se han presentado preocupaciones sobre 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 que se vuelven mucho más significativos, como la electromigración, y el subumbral de pérdida. Estas más nuevas preocupaciones están entre los muchos factores que hacen a investigadores estudiar nuevos métodos de computación como la computadora cuántica, así como ampliar el uso de paralelismo, y otros métodos que extienden la utilidad del modelo clásico de Eckert-Mauchly.

Operación del CPU [editar]

La operación fundamental de la mayoría de los CPU, sin importar la forma física que tomen, es ejecutar una secuencia de instrucciones almacenadas llamadas "programa". Aquí se habla sobre los dispositivos conformes con la arquitectura Eckert-Mauchly común. El programa es representado por una serie de números que se mantentienen en una cierta clase de memoria de computador. Hay cuatro pasos que casi todos los CPU de Eckert-Mauchly usan en su operación: fetch, decode, execute, y writeback, (leer, decodificar, ejecutar, y escribir).

Diagrama mostrando como es decodificada una instrucción del MIPS32. (MIPS Technologies 2005)

Diagrama mostrando como es decodificada una instrucción del MIPS32. (MIPS Technologies 2005)

El primer paso, leer (fetch), implica el recuperar una instrucción, (que es representada por un número o una secuencia de números), de la memoria de programa. La localización en la memoria del programa es determinada por un contador de programa (PC), que almacena un número que identifica la posición actual en el programa. En otras palabras, el contador de programa indica al CPU, el lugar de la instrucción en el programa actual . Después de que se lee una instrucción, el PC es incrementado por la longitud de la palabra de instrucción en términos de unidades de memoria [4] . Frecuentemente la instrucción a ser leída debe ser recuperada de memoria relativamente lenta, haciendo detener al CPU mientras espera que la instrucción sea retornada. Este problema es tratado en procesadores modernos en gran parte por los cachés y las arquitecturas pipeline (ver abajo).
La instrucción que el CPU lee desde la memoria es usada para determinar qué deberá hacer el CPU. En el paso de decodificación, la instrucción es dividida en partes que tienen significado para otras porciones del CPU. La manera en que el valor de la instrucción numérica es interpretado está definida por la arquitectura del conjunto de instrucciones (el ISA) del CPU [5] . 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, como por ejemplo, operandos para una operación de adición. Tales operandos se pueden dar como un valor constante (llamado valor inmediato), o como un lugar para localizar un valor, que según lo determinado por algún modo de dirección, puede ser un registro o una dirección de memoria. En diseños más viejos las 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, es frecuentemente usado un microprograma para asistir en traducir instrucciones en varias señales de configuración para el CPU. Este microprograma es a veces reescribible de tal manera que puede ser modificado para cambiar la manera en que el CPU decodifica instrucciones incluso después de que haya sido fabricado.

Diagrama de bloques de un CPU simple

Diagrama de bloques de un CPU simple

Después de los pasos de lectura y decodificación, es llevado a cabo el paso de la ejecución de la instrucción. Durante este paso, varias porciones del CPU son conectadas de tal manera que ellas pueden realizar la operación deseada. Si, por ejemplo, una operación de adición fue solicitada, una unidad aritmético lógica (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 operaciones simples de aritmética y lógica en las entradas, como adición y operaciones de bits (bitwise). Si la operación de adición produce un resultado demasiado grande para poder ser manejado por el CPU, , también puede ser ajustada una bandera (flag) de desbordamiento aritmético localizada en un registro de banderas (ver abajo la sección sobre rango de números enteros).
El paso final, la escritura (writeback), simplemente "escribe" los resultados del paso de ejecución a una cierta forma de memoria. Muy a menudo, los resultados son escritos a algún registro interno del CPU para acceso rápido por subsecuentes instrucciones. En otros casos los resultados pueden ser escritos a una memoria principal más lenta pero más barata y más grande. Algunos tipos de instrucciones manipulan el contador de programa en lugar de directamente producir datos de resultado. Éstas son llamadas generalmente "saltos" (jumps) y facilitan comportamientos como bucles (loops), la ejecución condicional de programas (con el uso de saltos condicionales), y funciones en programas [6] . Muchas instrucciones también cambiarán el estado de dígitos en un registro de "banderas". Estas banderas pueden ser usadas para influenciar cómo se comporta un programa, puesto que a menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de instrucción de "comparación" considera dos valores y fija un número, en el registro de banderas, de acuerdo a cual es el mayor. Entonces, esta bandera puede ser usada por una posterior instrucción de salto para determinar el flujo de programa.
Después de la ejecución de la instrucción y la escritura de los datos resultantes, el proceso entero se repite con el 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 a la cual 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. Esta sección describe lo que es referido generalmente como el "entubado RISC clásico" (Classic RISC pipeline), que de hecho es bastante común entre los CPU simples usados en muchos dispositivos electrónicos, a menudo llamados microcontroladores [7] .

Diseño e implementación [editar]

Prerequisitos
Arquitectura informática
Circuitos digitales
Artículo principal: Diseño del CPU

Rango de enteros [editar]

La manera en que un CPU representa los números es una opción de diseño que afecta las más básicas formas en que el dispositivo funciona. Algunas de las primeras calculadoras digitales usaron, para representar números internamente, un modelo eléctrico del sistema de numeración decimal común (base diez). Algunas otras computadoras han usado sistemas de numeración más exóticos como el ternario (base tres). Casi todas los CPU modernos representan los números en forma binaria, en donde cada dígito es representado por una cierta cantidad física de dos valores, como un voltaje "alto" o "bajo" [8] .

Microprocesador MOS 6502 en un dual in-line package (paquete en línea dual), un diseño extremadamente popular de 8 bits.

Microprocesador MOS 6502 en un dual in-line package (paquete en línea dual), un diseño extremadamente popular de 8 bits.

Con la representación numérica están relacionados 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 una posición significativa en los números con que trabaja un CPU. El número de bits (o de posiciones numéricas, o dígitos) que un CPU usa para representar los números, a menudo se llama "tamaño de la palabra", "ancho de bits", "ancho de ruta de datos", o "precisión del número entero" cuando se ocupa estrictamente de números de números enteros (en oposición a números de punto flotante). Este número difiere entre las arquitecturas, y a menudo dentro de diferentes partes del mismo CPU. Por ejemplo, un CPU de 8 bits maneja un rango de números que pueden ser representados por ocho dígitos binarios, cada dígito teniendo dos valores posibles, y en combinación los 8 bits teniendo 28 ó 256 números discretos. En efecto, el tamaño del número entero fija un límite de hardware en el rango de números enteros que el software corre y que el CPU puede usar directamente [9] .
El rango del número entero también puede afectar el número de posiciones en memoria que el CPU puede direccionar (localizar). Por ejemplo, si un CPU binario utiliza 32 bits para representar una dirección de memoria, y cada dirección de memoria representa a un octeto (8 bits), la cantidad máxima de memoria que el CPU puede direccionar es 232 octetos, o 4 GB. Ésta es una vista muy simple del espacio de dirección del CPU, y muchos diseños modernos usan métodos de dirección mucho más complejos como paginación para localizar más memoria que su rango entero permitiría con un espacio de dirección plano.
Niveles más altos del rango de números enteros requieren más estructuras para manejar los dígitos adicionales, y por lo tanto, más complejidad, tamaño, uso de energía, y generalmente costo. Por ello, no es del todo infrecuente, ver microcontroladores de 4 y 8 bits usados en aplicaciones modernas, aun cuando están disponibles CPU con un rango mucho más alto (de 16, 32, 64, e incluso 128 bits). Los microcontroladores más simples son generalmente más baratos, usan menos energía, y por lo tanto disipan menos calor. Todo esto pueden ser consideraciones de diseño importantes para los dispositivos electrónicos. Sin embargo, en aplicaciones del extremo alto, los beneficios producidos por el rango adicional, (más a menudo el espacio de dirección adicional), son más significativos y con frecuencia afectan las opciones del diseño. Para ganar algunas de las ventajas proporcionadas por las longitudes de bits tanto más bajas, como más altas, muchos CPUs están diseñados con anchos de bit diferentes para diferentes porciones del dispositivo. Por ejemplo, el IBM Sistem/370 usó un CPU que fue sobre todo de 32 bits, pero usó precisión de 128 bits dentro de sus unidades de punto flotante para facilitar mayor exactitud y rango de números de punto flotante . Muchos diseños posteriores de CPU usan una mezcla de ancho de bits similar, especialmente cuando el procesador está diseñado para usos de propósito general donde se requiere un razonable equilibrio entre la capacidad de números enteros y de punto flotante.

Frecuencia de reloj [editar]

Artículo principal: Frecuencia de reloj

La mayoría de los CPU, y de hecho, la mayoría de los dispositivos de lógica secuencial, son de naturaleza síncrona [10] . Es decir, están diseñados y operan en función de una señal de sincronización. Esta señal, conocida como señal de reloj, usualmente toman la forma de una onda cuadrada periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden seleccionar un período apropiado para la señal del reloj.
Este período debe ser más largo que la cantidad de tiempo que toma a una señal moverse, o propagarse, en el peor de los casos. En fijar el período del reloj a un valor bastante sobre el retardo de la propagación del peor caso, es posible diseñar todo el CPU y la manera que mueve los datos alrededor de los "bordes" de la subida y bajada de la señal del reloj. Esto tiene la ventaja de simplificar el CPU significativamente, tanto en una perspectiva de diseño, como en una perspectiva de cantidad de componentes. Sin embargo, esto también tiene la desventaja que todo el CPU debe esperar por sus elementos más lentos, aun cuando algunas porciones del mismo son mucho más rápidas. Esta limitación ha sido compensada en gran parte por varios métodos de aumentar el paralelismo del CPU (ver abajo).
Sin embargo, las solamente mejoras arquitectónicas no solucionan todas las desventajas de CPUs globalmente síncronos. Por ejemplo, una señal de reloj está sujeta a los retardos de cualquier otra señal eléctrica. Ratas de reloj más altas en CPUs cada vez más complejos hacen más difícil de mantener la señal del reloj en fase (sincronizada) a través de toda la unidad. Esto ha conducido que muchos CPU modernos requieran que se les proporcione múltiples señales de reloj idénticas, para evitar retardar una sola señal lo suficiente significativamente como para hacer al CPU funcionar incorrectamente. Otro importante problema cuando las ratas del reloj aumentan dramáticamente, es la cantidad de calor que es disipado por el CPU. La constantemente cambiante señal del reloj causa la conmutación de muchos componentes (cambian de estado) sin importar si están siendo usados en ese momento. En general, un componente que está conmutando usa más energía que un elemento en un estado estático. Por lo tanto, a medida que la rata del reloj aumenta, así lo hace también la disipación de calor, causando que el CPU requiera soluciones de enfriamiento más efectivas.
Un método de tratar la conmutación de componentes innecesarios se llama el clock gating, que implica apagar la señal del reloj a los componentes innecesarios, efectivamente desactivándolos. Sin embargo, esto es frecuentemente considerado como difícil de implementar y por lo tanto no ve uso común afuera de diseños de muy baja potencia [11] . Otro método de tratar algunos de los problemas de una señal global de reloj es la completa remoción de la misma. Mientras que quitar la señal global del reloj hace, de muchas maneras, considerablemente más complejo el proceso del diseño, en comparación con diseños síncronos similares, los diseños asincrónicos (o sin reloj) tienen marcadas ventajas en el consumo de energía y la disipación de calor. Aunque algo infrecuente, CPUs completos se han construido sin utilizar una señal global de reloj. Dos notables ejemplos de esto son el AMULET, que implementa la arquitectura del ARM, y el MiniMIPS, compatible con el MIPS R3000. En lugar de remover totalmente la señal del reloj, algunos diseños de CPU permiten a ciertas porciones del dispositivo ser asincrónicas, como por ejemplo, usar ALUs asincrónicas en conjunción con pipelining superescalar para alcanzar algunas ganancias en el desempeño aritmético. Mientras que no está completamente 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 por lo menos sobresalen en las más simples operaciones matemáticas. Esto, combinado con sus excelentes características de consumo de energía y disipación de calor, los hace muy adecuados para los computadores empotrados .

Paralelismo [editar]

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

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

Artículo principal: Computación paralela

La descripción de la operación básica de un CPU ofrecida en la sección anterior describe la forma más simple que puede tomar un CPU. Este tipo de CPU, usualmente referido como subescalar, opera sobre y ejecuta una sola instrucción con una o dos piezas de datos a la vez.
Este proceso da lugar a una ineficacia inherente en CPUs subescalares. Puesto que solamente una instrucción es ejecutada a la vez, todo el CPU debe esperar que esa instrucción se complete antes de proceder a la siguiente instrucción. Como resultado, el CPU subescalar queda "paralizado" en instrucciones que toman más de un ciclo de reloj para completar su ejecución. Incluso la adición de una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. En lugar de un camino quedando congelado, ahora dos caminos se paralizan y aumenta el número de transistores no usados. Este diseño, en donde los recursos de ejecución del CPU pueden operar con solamente una instrucción a la vez, solo puede, posiblemente, alcanzar el desempeño escalar (una instrucción por ciclo de reloj). Sin embargo, el desempeño casi siempre es subescalar (menos de una instrucción por ciclo).
Las tentativas de alcanzar un desempeño escalar y mejor, han resultado en una variedad de metodologías de diseño que hacen comportarse al CPU menos linealmente y más en paralelo. Cuando se refiere al paralelismo en los CPU, generalmente son usados dos términos para clasificar estas técnicas de diseño.

  • El paralelismo a nivel de instrucción, en inglés Instruction Level Parallelism (ILP), busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un CPU, es decir, aumentar la utilización de los recursos de ejecución en la pastilla
  • El paralelismo a nivel de hilo de ejecución, en inglés thread level parallelism (TLP), que se propone incrementar el número de hilos (efectivamente programas individuales) que un CPU pueda ejecutar simultáneamente. Cada metodología diferencia tanto en las maneras en las que están implementadas, como en la efectividad relativa que producen en el aumento del desempeño del CPU para una aplicación [12] .

ILP: Entubado de instrucción y arquitectura superescalar [editar]

Tubería básica de cinco etapas. En el escenario del mejor caso, esta tubería puede sostener un rata de completado de una instrucción por ciclo.

Tubería básica de cinco etapas. En el escenario del mejor caso, esta tubería puede sostener un rata de completado de una instrucción por ciclo.

Artículo principal: Entubado de instrucción y superescalar
Uno de los más simples métodos usados para lograr incrementar el paralelismo es comenzar los primeros pasos de leer y decodificar la instrucción antes de que la instrucción anterior haya terminado de ejecutarse. Ésta es la forma más simple de una técnica conocida como instruction pipelining (entubado de instrucción), y es utilizada en casi todos los CPU de propósito general modernos. Al dividir la ruta de ejecución en etapas discretas, la tubería permite que más de una instrucción sea ejecutada en cualquier tiempo. Esta separación puede ser comparada a una línea de ensamblaje, en la cual una instrucción es hecha más completa en cada etapa hasta que sale de la tubería de ejecución y es retirada.
Sin embargo, la tubería introduce la posibilidad de una situación donde es necesario terminar el resultado de la operación anterior para completar la operación siguiente; una condición llamada a menudo como conflicto de dependencia de datos. Para hacer frente a esto, debe ser tomado un cuidado adicional para comprobar estas clases de condiciones, y si esto ocurre, se debe retrasar una porción de la tubería de instrucción. Naturalmente, lograr esto requiere circuitería adicional, los procesadores entubados son más complejos que los subescalares, pero no mucho. Un procesador entubado puede llegar a ser casi completamente escalar, solamente inhibido por las abruptas paradas de la tubería (una instrucción durando más de un ciclo de reloj en una etapa).

Tubería superescalar simple. Al leer y despachar dos instrucciones a la vez,un máximo de dos instrucciones por ciclo pueden ser completadas.

Tubería superescalar simple. Al leer y despachar dos instrucciones a la vez,un máximo de dos instrucciones por ciclo pueden ser completadas.

Una mejora adicional sobre la idea del entubado de instrucción (instruction pipelining) condujo al desarrollo de un método que disminuye incluso más el tiempo ocioso de los comp

CPU

[Ocultar este mensaje]

CPU

De Wikipedia, la enciclopedia libre

Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6.75mm) es su empaquetado

Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6.75mm) es su empaquetado

La unidad central de procesamiento, CPU, o, simplemente, el procesador. Es el componente en una computadora digital que interpreta las instrucciones y procesa los datos contenidos en los programas de computadora. Los CPU proporcionan la característica fundamental de la computadora digital, la programabilidad, y son uno de los componentes necesarios encontrados en las computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores.
La expresión "unidad central de proceso" es, en términos generales, una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computadora. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros ordenadores que existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término sí mismo y su acrónimo han estado en uso en la industria de la informática por lo menos desde el principio de los años 1960 . La forma, el diseño y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar.
Las primeras CPU fueron diseñadas a la medida como parte de una computadora más grande, generalmente una computadora única en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, computadoras centrales, y microcomputadoras, y fue acelerada rápidamente con la popularización del circuito integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejos en espacios pequeños (en la orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares, juguetes, entre otros.

Tabla de contenidos

[ocultar]

Historia [editar]

El EDVAC, una de los primeras computadores de programas almacenados electrónicamente.

El EDVAC, una de los primeras computadores de programas almacenados electrónicamente.

Artículo principal: Historia del hardware

Antes del advenimiento de las máquinas parecidas a los CPU de hoy, computadores como el ENIAC tenían que ser físicamente recableados para poder realizar tareas diferentes. Estas máquinas eran a menudo referidas como "computadores de programa fijo", puesto que tenían que ser reconfiguradas físicamente para correr un programa diferente. Puesto que el término "CPU" es generalmente definido como un dispositivo de ejecución de software (programa de computadora), los primeros dispositivos que podían ser llamados correctamente como CPU vinieron con el advenimiento de la computadora con programa almacenado.
La idea de una computadora con programa almacenado ya estaba presente durante el diseño del ENIAC, pero fue omitida inicialmente para que la máquina pudiera ser terminada más pronto. El 30 de junio de 1945, antes de que el ENIAC incluso fuera terminado, el matemático John von Neumann distribuyó el trabajo titulado "Primer Borrador de un Reporte sobre el EDVAC". Este trabajo, cuya autoría principal hoy se les reconoce a John Presper Eckert y John William Mauchly[1] , esbozó el diseño de una computadora con programa almacenado que finalmente sería terminado en agosto de 1949 . El EDVAC fue diseñado para efectuar un número determinado de instrucciones (u operaciones) de varios tipos. Estas instrucciones podían combinarse para crear programas útiles para ser ejecutados por el EDVAC. Significativamente, los programas escritos para el EDVAC fueron almacenados en memoria de la computadora de alta velocidad en lugar de ser especificados por el cableado físico de la computadora. Esto superó una severa limitación del ENIAC, que era la gran cantidad de tiempo y esfuerzo que tomaba reconfigurar el computador para realizar una nueva tarea. Con el diseño de Eckert-Mauchly, el programa, o el software, que el EDVAC corría, podía ser reemplazado simplemente cambiando el contenido de la memoria del computador [2] .
Debe ser notado que mientras que von Neumann es acreditado más frecuentemente por el diseño del computador con programa almacenado debido a su diseño del EDVAC, otros antes de él, como Konrad Zuse, habían sugerido ideas similares. Además, la llamada arquitectura Harvard del Harvard Mark I, que fue terminada antes del EDVAC, también utilizó un diseño con programa almacenado empleando cinta de papel perforada en vez de memoria electrónica. La diferencia clave entre las arquitecturas de Eckert-Mauchly y la de Harvard es que la última separa el almacenamiento y el tratamiento de las instrucciones y de los datos del CPU, mientras que la primera usa el mismo espacio de memoria para ambos. La mayoría de los CPU modernos son diseños de Eckert-Mauchly en su mayor parte, pero también son vistos comúnmente elementos de la arquitectura de Harvard.
Siendo dispositivos digitales todos los CPU tratan con estados discretos, y por lo tanto requieren una cierta clase de elementos de conmutación para diferenciar y cambiar estos estados. Antes de la aceptación comercial del transistor, los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados comúnmente como elementos de conmutación. Aunque éstos tenían distintas ventajas de velocidad sobre los anteriores diseños puramente mecánicos, no eran fiables por varias razones. Por ejemplo, hacer circuitos de lógica secuencial de corriente directa requería hardware adicional para hacer frente al problema del rebote de contacto. Por otro lado, mientras que los tubos de vacío no sufren del rebote de contacto, éstos deben calentarse antes de llegar a estar completamente operacionales y eventualmente fallan y dejan de funcionar por completo [3] . Generalmente, cuando un tubo ha fallado, el CPU tendría que ser diagnosticado para localizar el componente que falla para que pueda ser reemplazado. Por lo tanto, los primeros computadores electrónicos, (basados en tubos de vacío), generalmente eran más rápidas pero menos confiables que las computadoras electromecánicas, (basadas en relés). Las computadoras de tubo, como el EDVAC, tendieron en tener un promedio de ocho horas entre fallas, mientras que las computadoras de relés, (anteriores y más lentas), como el Harvard Mark I, fallaban muy raramente . Al final, los CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban más que los problemas de confiabilidad. La mayor parte de estos tempranos CPU síncronos corrían en frecuencias de reloj bajas comparadas con los modernos diseños microelectrónicos, (ver más abajo para una exposición sobre la frecuencia de reloj). Eran muy comunes en este tiempo las frecuencias de la señal del reloj con un rango desde 100 kHz hasta 4 MHz, limitado en gran parte por la velocidad de los dispositivos de conmutación con los que fueron construidos.

CPU de transistores y de circuitos integrados discretos [editar]

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.

La complejidad del diseño de los 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 del transistor. Los CPU transistorizados durante los años 1950 y los años 1960 no tuvieron que ser construidos con elementos de conmutación abultados, no fiables, y frágiles, como los tubos de vacío y los relés eléctricos. Con esta mejora, fueron construidos CPUs más complejos y más confiables sobre una o varias tarjetas de circuito impreso que contenían componentes discretos (individuales).
Durante este período, ganó popularidad un método de fabricar muchos transistores en un espacio compacto. El circuito integrado (IC) permitió que una gran cantidad de transistores fueran fabricados en una simple oblea basada en semiconductor o "chip". Al principio, solamente circuitos digitales muy básicos, no especializados, como las puertas NOR fueron miniaturizados en ICs. Los CPU basadas en estos IC de "bloques de construcción" generalmente son referidos como dispositivos de pequeña escala de integración "small-scale integration" (SSI). Los circuitos integrados SSI, como los usados en el computador guía del Apollo (Apollo Guidance Computer), usualmente contenían transistores que se contaban en números de múltiplos de diez. Construir un CPU completo usando ICs SSI requería miles de chips individuales, pero todavía consumía mucho menos espacio y energía que diseños anteriores de transistores discretos. A medida que la tecnología microelectrónica avanzó, en los IC fue colocado un número creciente de transistores, disminuyendo así la cantidad de ICs individuales necesarios para un CPU completo. Los circuitos integrados MSI y el LSI (de mediana y gran escala de integración) aumentaron el número de transistores a cientos, y luego a miles.
En 1964, IBM introducido su arquitectura de computador System/360, que fue usada en una serie de computadores que podían correr los mismos programas con velocidades y desempeños diferentes. Esto fue significativo en un tiempo en que la mayoría de las computadoras electrónicas eran incompatibles una con la otra, incluso las hechas 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 extenso en los CPU modernos . La arquitectura System/360 era tan popular que dominó el mercado del mainframe por las siguientes décadas y dejó una herencia que todavía es continuada por computadores modernos similares como el IBM zSeries. En el mismo año de 1964, Digital Equipment Corporation (DEC) introdujo otro computador influyente dirigido a los mercados científicos y de investigación, el PDP-8. DEC introduciría más adelante la extremadamente popular línea del PDP-11, que originalmente fue construido con ICs SSI pero eventualmente fue implementado con componentes LSI cuando llegaron a ser prácticos. En fuerte contraste con sus precursores hechos con tecnología SSI y MSI, la primera implementación LSI del PDP-11 contuvo un CPU integrado por solamente cuatro circuitos integrados LSI .
Los computadores basados en transistores tenían varias ventajas distintas sobre sus predecesores. Aparte de facilitar una creciente confiabilidad y un más bajo consumo de energía, los transistores también permitían al 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 tanto a la creciente confiabilidad como a la dramáticamente incrementada velocidad de los elementos de conmutación que por este tiempo eran casi exclusivamente transistores, fueron obtenidas frecuencias de reloj del CPU de decenas de megahertz. Además, mientras que los CPU de transistores discretos y circuitos integrados estaban en fuerte uso, comenzaron a aparecer los nuevos diseños de alto rendimiento como procesadores vectoriales SIMD (Single Instruction Multiple Data) (Simple Instrucción Múltiples Datos). Estos tempranos diseños experimentales dieron lugar más adelante a la era de los supercomputadoras especializados, como los hechos por Cray Inc.

Microprocesadores [editar]

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Artículo principal: Microprocesador

Desde la introducción del primer microprocesador, el Intel 4004, en 1970, y del primer microprocesador ampliamente usado, el Intel 8080, en 1974. Esta clase de CPUs ha desplazado casi totalmente el resto de los métodos de implementación de la Unidad Central de Proceso. Los fabricantes de mainframes y minicomputadores de ese tiempo lanzaron programas de desarrollo de ICs propietarios para actualizar sus más viejas arquitecturas de computador, y eventualmente produjeron microprocesadores con conjuntos de instrucciones que eran compatibles hacia atrás con sus más viejos hardwares y softwares. Combinado con el advenimiento y el eventual vasto éxito del ahora ubicuo computadora personal, el término "CPU" es aplicado ahora casi exclusivamente a los microprocesadores.
Las generaciones previas de CPUs fueron implementadas como componentes discretos y numerosos circuitos integrados de pequeña escala de integración en una o más tarjetas de circuitos. Por otro lado, los microprocesadores son CPUs fabricados con un número muy pequeño de ICs; usualmente solo uno. El tamaño más pequeño del CPU, como resultado de estar implementado en una simple pastilla, significa tiempos de conmutación más rápidos debido a factores físicos como el decrecimiento de la capacitancia parásita de las puertas. Esto ha permitido que los microprocesadores síncronos tengan ratas de reloj con un rango de decenas de megahertz a varios gigahertz. Adicionalmente, como ha aumentado la capacidad de construir transistores excesivamente pequeños en un IC, la complejidad y el número de transistores en un simple CPU también se ha incrementado dramáticamente. Esta tendencia ampliamente observada es descrita por la ley de Moore, que ha demostrado hasta la fecha, ser una predicción bastante exacta del crecimiento de la complejidad de los CPU y otros ICs.
Mientras que, en los pasados sesenta años han cambiado drásticamente, la complejidad, el tamaño, la construcción, y la forma general del CPU, es notable que el diseño y el funcionamiento básico no ha cambiado demasiado. Casi todos los CPU comunes de hoy se pueden describir con precisión como máquinas de programa almacenado de Eckert-Mauchly.
A medida que la a mencionada ley del Moore continúa manteniéndose verdadera, se han presentado preocupaciones sobre 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 que se vuelven mucho más significativos, como la electromigración, y el subumbral de pérdida. Estas más nuevas preocupaciones están entre los muchos factores que hacen a investigadores estudiar nuevos métodos de computación como la computadora cuántica, así como ampliar el uso de paralelismo, y otros métodos que extienden la utilidad del modelo clásico de Eckert-Mauchly.

Operación del CPU [editar]

La operación fundamental de la mayoría de los CPU, sin importar la forma física que tomen, es ejecutar una secuencia de instrucciones almacenadas llamadas "programa". Aquí se habla sobre los dispositivos conformes con la arquitectura Eckert-Mauchly común. El programa es representado por una serie de números que se mantentienen en una cierta clase de memoria de computador. Hay cuatro pasos que casi todos los CPU de Eckert-Mauchly usan en su operación: fetch, decode, execute, y writeback, (leer, decodificar, ejecutar, y escribir).

Diagrama mostrando como es decodificada una instrucción del MIPS32. (MIPS Technologies 2005)

Diagrama mostrando como es decodificada una instrucción del MIPS32. (MIPS Technologies 2005)

El primer paso, leer (fetch), implica el recuperar una instrucción, (que es representada por un número o una secuencia de números), de la memoria de programa. La localización en la memoria del programa es determinada por un contador de programa (PC), que almacena un número que identifica la posición actual en el programa. En otras palabras, el contador de programa indica al CPU, el lugar de la instrucción en el programa actual . Después de que se lee una instrucción, el PC es incrementado por la longitud de la palabra de instrucción en términos de unidades de memoria [4] . Frecuentemente la instrucción a ser leída debe ser recuperada de memoria relativamente lenta, haciendo detener al CPU mientras espera que la instrucción sea retornada. Este problema es tratado en procesadores modernos en gran parte por los cachés y las arquitecturas pipeline (ver abajo).
La instrucción que el CPU lee desde la memoria es usada para determinar qué deberá hacer el CPU. En el paso de decodificación, la instrucción es dividida en partes que tienen significado para otras porciones del CPU. La manera en que el valor de la instrucción numérica es interpretado está definida por la arquitectura del conjunto de instrucciones (el ISA) del CPU [5] . 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, como por ejemplo, operandos para una operación de adición. Tales operandos se pueden dar como un valor constante (llamado valor inmediato), o como un lugar para localizar un valor, que según lo determinado por algún modo de dirección, puede ser un registro o una dirección de memoria. En diseños más viejos las 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, es frecuentemente usado un microprograma para asistir en traducir instrucciones en varias señales de configuración para el CPU. Este microprograma es a veces reescribible de tal manera que puede ser modificado para cambiar la manera en que el CPU decodifica instrucciones incluso después de que haya sido fabricado.

Diagrama de bloques de un CPU simple

Diagrama de bloques de un CPU simple

Después de los pasos de lectura y decodificación, es llevado a cabo el paso de la ejecución de la instrucción. Durante este paso, varias porciones del CPU son conectadas de tal manera que ellas pueden realizar la operación deseada. Si, por ejemplo, una operación de adición fue solicitada, una unidad aritmético lógica (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 operaciones simples de aritmética y lógica en las entradas, como adición y operaciones de bits (bitwise). Si la operación de adición produce un resultado demasiado grande para poder ser manejado por el CPU, , también puede ser ajustada una bandera (flag) de desbordamiento aritmético localizada en un registro de banderas (ver abajo la sección sobre rango de números enteros).
El paso final, la escritura (writeback), simplemente "escribe" los resultados del paso de ejecución a una cierta forma de memoria. Muy a menudo, los resultados son escritos a algún registro interno del CPU para acceso rápido por subsecuentes instrucciones. En otros casos los resultados pueden ser escritos a una memoria principal más lenta pero más barata y más grande. Algunos tipos de instrucciones manipulan el contador de programa en lugar de directamente producir datos de resultado. Éstas son llamadas generalmente "saltos" (jumps) y facilitan comportamientos como bucles (loops), la ejecución condicional de programas (con el uso de saltos condicionales), y funciones en programas [6] . Muchas instrucciones también cambiarán el estado de dígitos en un registro de "banderas". Estas banderas pueden ser usadas para influenciar cómo se comporta un programa, puesto que a menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de instrucción de "comparación" considera dos valores y fija un número, en el registro de banderas, de acuerdo a cual es el mayor. Entonces, esta bandera puede ser usada por una posterior instrucción de salto para determinar el flujo de programa.
Después de la ejecución de la instrucción y la escritura de los datos resultantes, el proceso entero se repite con el 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 a la cual 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. Esta sección describe lo que es referido generalmente como el "entubado RISC clásico" (Classic RISC pipeline), que de hecho es bastante común entre los CPU simples usados en muchos dispositivos electrónicos, a menudo llamados microcontroladores [7] .

Diseño e implementación [editar]

Prerequisitos
Arquitectura informática
Circuitos digitales
Artículo principal: Diseño del CPU

Rango de enteros [editar]

La manera en que un CPU representa los números es una opción de diseño que afecta las más básicas formas en que el dispositivo funciona. Algunas de las primeras calculadoras digitales usaron, para representar números internamente, un modelo eléctrico del sistema de numeración decimal común (base diez). Algunas otras computadoras han usado sistemas de numeración más exóticos como el ternario (base tres). Casi todas los CPU modernos representan los números en forma binaria, en donde cada dígito es representado por una cierta cantidad física de dos valores, como un voltaje "alto" o "bajo" [8] .

Microprocesador MOS 6502 en un dual in-line package (paquete en línea dual), un diseño extremadamente popular de 8 bits.

Microprocesador MOS 6502 en un dual in-line package (paquete en línea dual), un diseño extremadamente popular de 8 bits.

Con la representación numérica están relacionados 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 una posición significativa en los números con que trabaja un CPU. El número de bits (o de posiciones numéricas, o dígitos) que un CPU usa para representar los números, a menudo se llama "tamaño de la palabra", "ancho de bits", "ancho de ruta de datos", o "precisión del número entero" cuando se ocupa estrictamente de números de números enteros (en oposición a números de punto flotante). Este número difiere entre las arquitecturas, y a menudo dentro de diferentes partes del mismo CPU. Por ejemplo, un CPU de 8 bits maneja un rango de números que pueden ser representados por ocho dígitos binarios, cada dígito teniendo dos valores posibles, y en combinación los 8 bits teniendo 28 ó 256 números discretos. En efecto, el tamaño del número entero fija un límite de hardware en el rango de números enteros que el software corre y que el CPU puede usar directamente [9] .
El rango del número entero también puede afectar el número de posiciones en memoria que el CPU puede direccionar (localizar). Por ejemplo, si un CPU binario utiliza 32 bits para representar una dirección de memoria, y cada dirección de memoria representa a un octeto (8 bits), la cantidad máxima de memoria que el CPU puede direccionar es 232 octetos, o 4 GB. Ésta es una vista muy simple del espacio de dirección del CPU, y muchos diseños modernos usan métodos de dirección mucho más complejos como paginación para localizar más memoria que su rango entero permitiría con un espacio de dirección plano.
Niveles más altos del rango de números enteros requieren más estructuras para manejar los dígitos adicionales, y por lo tanto, más complejidad, tamaño, uso de energía, y generalmente costo. Por ello, no es del todo infrecuente, ver microcontroladores de 4 y 8 bits usados en aplicaciones modernas, aun cuando están disponibles CPU con un rango mucho más alto (de 16, 32, 64, e incluso 128 bits). Los microcontroladores más simples son generalmente más baratos, usan menos energía, y por lo tanto disipan menos calor. Todo esto pueden ser consideraciones de diseño importantes para los dispositivos electrónicos. Sin embargo, en aplicaciones del extremo alto, los beneficios producidos por el rango adicional, (más a menudo el espacio de dirección adicional), son más significativos y con frecuencia afectan las opciones del diseño. Para ganar algunas de las ventajas proporcionadas por las longitudes de bits tanto más bajas, como más altas, muchos CPUs están diseñados con anchos de bit diferentes para diferentes porciones del dispositivo. Por ejemplo, el IBM Sistem/370 usó un CPU que fue sobre todo de 32 bits, pero usó precisión de 128 bits dentro de sus unidades de punto flotante para facilitar mayor exactitud y rango de números de punto flotante . Muchos diseños posteriores de CPU usan una mezcla de ancho de bits similar, especialmente cuando el procesador está diseñado para usos de propósito general donde se requiere un razonable equilibrio entre la capacidad de números enteros y de punto flotante.

Frecuencia de reloj [editar]

Artículo principal: Frecuencia de reloj

La mayoría de los CPU, y de hecho, la mayoría de los dispositivos de lógica secuencial, son de naturaleza síncrona [10] . Es decir, están diseñados y operan en función de una señal de sincronización. Esta señal, conocida como señal de reloj, usualmente toman la forma de una onda cuadrada periódica. Calculando el tiempo máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones de los muchos circuitos de un CPU, los diseñadores pueden seleccionar un período apropiado para la señal del reloj.
Este período debe ser más largo que la cantidad de tiempo que toma a una señal moverse, o propagarse, en el peor de los casos. En fijar el período del reloj a un valor bastante sobre el retardo de la propagación del peor caso, es posible diseñar todo el CPU y la manera que mueve los datos alrededor de los "bordes" de la subida y bajada de la señal del reloj. Esto tiene la ventaja de simplificar el CPU significativamente, tanto en una perspectiva de diseño, como en una perspectiva de cantidad de componentes. Sin embargo, esto también tiene la desventaja que todo el CPU debe esperar por sus elementos más lentos, aun cuando algunas porciones del mismo son mucho más rápidas. Esta limitación ha sido compensada en gran parte por varios métodos de aumentar el paralelismo del CPU (ver abajo).
Sin embargo, las solamente mejoras arquitectónicas no solucionan todas las desventajas de CPUs globalmente síncronos. Por ejemplo, una señal de reloj está sujeta a los retardos de cualquier otra señal eléctrica. Ratas de reloj más altas en CPUs cada vez más complejos hacen más difícil de mantener la señal del reloj en fase (sincronizada) a través de toda la unidad. Esto ha conducido que muchos CPU modernos requieran que se les proporcione múltiples señales de reloj idénticas, para evitar retardar una sola señal lo suficiente significativamente como para hacer al CPU funcionar incorrectamente. Otro importante problema cuando las ratas del reloj aumentan dramáticamente, es la cantidad de calor que es disipado por el CPU. La constantemente cambiante señal del reloj causa la conmutación de muchos componentes (cambian de estado) sin importar si están siendo usados en ese momento. En general, un componente que está conmutando usa más energía que un elemento en un estado estático. Por lo tanto, a medida que la rata del reloj aumenta, así lo hace también la disipación de calor, causando que el CPU requiera soluciones de enfriamiento más efectivas.
Un método de tratar la conmutación de componentes innecesarios se llama el clock gating, que implica apagar la señal del reloj a los componentes innecesarios, efectivamente desactivándolos. Sin embargo, esto es frecuentemente considerado como difícil de implementar y por lo tanto no ve uso común afuera de diseños de muy baja potencia [11] . Otro método de tratar algunos de los problemas de una señal global de reloj es la completa remoción de la misma. Mientras que quitar la señal global del reloj hace, de muchas maneras, considerablemente más complejo el proceso del diseño, en comparación con diseños síncronos similares, los diseños asincrónicos (o sin reloj) tienen marcadas ventajas en el consumo de energía y la disipación de calor. Aunque algo infrecuente, CPUs completos se han construido sin utilizar una señal global de reloj. Dos notables ejemplos de esto son el AMULET, que implementa la arquitectura del ARM, y el MiniMIPS, compatible con el MIPS R3000. En lugar de remover totalmente la señal del reloj, algunos diseños de CPU permiten a ciertas porciones del dispositivo ser asincrónicas, como por ejemplo, usar ALUs asincrónicas en conjunción con pipelining superescalar para alcanzar algunas ganancias en el desempeño aritmético. Mientras que no está completamente 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 por lo menos sobresalen en las más simples operaciones matemáticas. Esto, combinado con sus excelentes características de consumo de energía y disipación de calor, los hace muy adecuados para los computadores empotrados .

Paralelismo [editar]

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

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

Artículo principal: Computación paralela

La descripción de la operación básica de un CPU ofrecida en la sección anterior describe la forma más simple que puede tomar un CPU. Este tipo de CPU, usualmente referido como subescalar, opera sobre y ejecuta una sola instrucción con una o dos piezas de datos a la vez.
Este proceso da lugar a una ineficacia inherente en CPUs subescalares. Puesto que solamente una instrucción es ejecutada a la vez, todo el CPU debe esperar que esa instrucción se complete antes de proceder a la siguiente instrucción. Como resultado, el CPU subescalar queda "paralizado" en instrucciones que toman más de un ciclo de reloj para completar su ejecución. Incluso la adición de una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. En lugar de un camino quedando congelado, ahora dos caminos se paralizan y aumenta el número de transistores no usados. Este diseño, en donde los recursos de ejecución del CPU pueden operar con solamente una instrucción a la vez, solo puede, posiblemente, alcanzar el desempeño escalar (una instrucción por ciclo de reloj). Sin embargo, el desempeño casi siempre es subescalar (menos de una instrucción por ciclo).
Las tentativas de alcanzar un desempeño escalar y mejor, han resultado en una variedad de metodologías de diseño que hacen comportarse al CPU menos linealmente y más en paralelo. Cuando se refiere al paralelismo en los CPU, generalmente son usados dos términos para clasificar estas técnicas de diseño.

  • El paralelismo a nivel de instrucción, en inglés Instruction Level Parallelism (ILP), busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un CPU, es decir, aumentar la utilización de los recursos de ejecución en la pastilla
  • El paralelismo a nivel de hilo de ejecución, en inglés thread level parallelism (TLP), que se propone incrementar el número de hilos (efectivamente programas individuales) que un CPU pueda ejecutar simultáneamente. Cada metodología diferencia tanto en las maneras en las que están implementadas, como en la efectividad relativa que producen en el aumento del desempeño del CPU para una aplicación [12] .

ILP: Entubado de instrucción y arquitectura superescalar [editar]

Tubería básica de cinco etapas. En el escenario del mejor caso, esta tubería puede sostener un rata de completado de una instrucción por ciclo.

Tubería básica de cinco etapas. En el escenario del mejor caso, esta tubería puede sostener un rata de completado de una instrucción por ciclo.

Artículo principal: Entubado de instrucción y superescalar
Uno de los más simples métodos usados para lograr incrementar el paralelismo es comenzar los primeros pasos de leer y decodificar la instrucción antes de que la instrucción anterior haya terminado de ejecutarse. Ésta es la forma más simple de una técnica conocida como instruction pipelining (entubado de instrucción), y es utilizada en casi todos los CPU de propósito general modernos. Al dividir la ruta de ejecución en etapas discretas, la tubería permite que más de una instrucción sea ejecutada en cualquier tiempo. Esta separación puede ser comparada a una línea de ensamblaje, en la cual una instrucción es hecha más completa en cada etapa hasta que sale de la tubería de ejecución y es retirada.
Sin embargo, la tubería introduce la posibilidad de una situación donde es necesario terminar el resultado de la operación anterior para completar la operación siguiente; una condición llamada a menudo como conflicto de dependencia de datos. Para hacer frente a esto, debe ser tomado un cuidado adicional para comprobar estas clases de condiciones, y si esto ocurre, se debe retrasar una porción de la tubería de instrucción. Naturalmente, lograr esto requiere circuitería adicional, los procesadores entubados son más complejos que los subescalares, pero no mucho. Un procesador entubado puede llegar a ser casi completamente escalar, solamente inhibido por las abruptas paradas de la tubería (una instrucción durando más de un ciclo de reloj en una etapa).

Tubería superescalar simple. Al leer y despachar dos instrucciones a la vez,un máximo de dos instrucciones por ciclo pueden ser completadas.

Tubería superescalar simple. Al leer y despachar dos instrucciones a la vez,un máximo de dos instrucciones por ciclo pueden ser completadas.

Una mejora adicional sobre la idea del entubado de instrucción (instruction pipelining) c

el mouse

Elementos de Windows:
El Mouse o Ratón

Título: Jan's Illustrated Computer Literacy 101


Mouse o Ratón

Antes de que pueda explorar el Escritorio y la Barra de Tareas, deberá saber como usar su mouse. Este es un dispositivo puntero. Se usa para apuntar a las cosas en la pantalla de la computadora.

Un mouse tiene por lo menos dos botones - izquierdo y derecho. Algunos tienen un botón en el medio o una rueda para lograr desplazamientos entre los dos botones. El que más se usa es el botón izquierdo pero, desde el Win95, Windows también usa el botón derecho.

La forma normal del puntero del mouse es una flecha.Puntero: Normal


Dónde están:
JegsWorks > Lecciones > Windows
Antes de que comience...
Proyecto 1: Elementos de Windows Flecha a subtema
Escritorio & Barra de Tareas
Ventana
MouseFlecha a subtema
PisadaEncendido
PisadaApagado
PisadaControl Mouse
PisadaControl Ventana
PisadaMenús Contexto
Cuadro de Diálogo Flecha a subtema
Ayuda para WindowsFlecha a subtema
Sumario
Examen
EjerciciosFlecha a subtema
Proyecto 2: Archivos y CarpetasFlecha a subtema


Buscar
Glosario



Que es lo que se hace con un Mouse?


Mover el puntero/cursor Al mover alrededor al mouse, también se mueve el puntero en la pantalla.
Clic Consiste en pulsar un botón y soltarlo. Usualmente el botón izquierdo.
Clic derecho Consiste en pulsar un botón derecho del mouse y soltarlo.
Doble-clic Pulsar rápidamente dos veces el botón del mouse
Arrastrar Mantener apretado un botón del mouse mientras se lo mueve. Cuando hace esto, usualmente se moverá lo que estuviese debajo del mouse en la pantalla.
Desplazar Haciendo girar la rueda que tienen algunos ratones, se hará desplazar al documento en la ventana actual.

Practique su destreza con el Mouse

(Trabaje en el Explorador de Internet. El Netscape 4 no reconoce las imágenes en el marco abajo. Netscape 6 y Mozilla Firefox ven el marco pero no responden a las acciones del ráton en lo.)

Refresque su ventana para volver al diseño original. Tenga cuidado en como hace el clic. Las cosas pueden moverse!

  • Su buscador no soporta los marcos o está actualmente configurado para no mostrar los marcos. Mueva al puntero de su mouse sobre cada imagen a la derecha. Después de una corta pausa, aparecerá un consejo.
  • Clic en los vehículos. Algo cambia. Hacer un clic sobre otras imágenes. ¿Cuál unos cambian?

  • Doble-clic en el pez. Otro cambio. Doble-clic en otras imágenes. ¿Cuál unos cambian?

  • Clic derecho en un dibujo. Clic derecho pero no sobre un dibujo. Se le presentan dos distintas clases de menús de contexto.

  • Arrastrar la barra de desplazamiento a la derecha de las imágenes hacia abajo. Se ve un nuevo conjunto de imágenes.

  • Clic y doble-clic estas imágenes también. ¿Cambian ellos?

  • Arrastrar la imagen por los alrededores. Puede ponerlas en unas sola pila...con bordes parejos? Que otros arreglos puede crear?

  • Si su mouse tiene una ruedita de desplazar, ponga al mismo encima del área del marco. Haga girar ahora la rueda de desplazar. Puede mover las imágenes hacia arriba o abajo dentro del marco, igual que lo hacía con la barra de desplazamiento. Cuando llega al tope o al fondo del documento con marcos, si sigue haciendo girar la rueda se moverá toda la página.

Estas imágenes son las de las barajas del Solitario en WinXP.


Formas del Puntero

Lista de formas de punterosLa forma del puntero cambia, dependiendo de donde se encuentra y de lo que esté pasando. El término cursor se usa cuando la forma muestra el lugar donde va a aparecer lo que se escriba. De lo contrario, el término puntero es una mejor definición.

La forma de una mano Cursor-Mano usualmente significa que el puntero está pasando por encima de un vínculo, como sucede en una página web.

ConsejoPara usar cómodamente el mouse debe practicar, practicar, practicar. Esta es una destreza física que utiliza los músculos de su mano, del antebrazo y hasta del pecho y que puede ser que de esa manera no haya usado nunca bastante. Al principio podría esperar quedar algo dolorido o también cuando tenga alguna sesión inusualmente larga o intensa con

el teclado

Teclado

El teclado es un componente al que se le da poca importancia, especialmente en los ordenadores clónicos. Si embargo es un componente esencial, pues es el que permitirá que nuestra relación con el ordenador sea fluida y agradable, de hecho, junto con el ratón son los responsables de que podamos interactuar con nuestra máquina.

Así, si habitualmente usamos el procesador de textos, hacemos programación, u alguna otra actividad en la que hagamos un uso intensivo de este componente, es importante escoger un modelo de calidad. En el caso de que seamos usuarios esporádicos de las teclas, porque nos dediquemos más a juegos o a programas gráficos, entonces cualquier modelo nos servirá, eso sí, que sea de tipo mecánico. No acepteis ningún otro.

Parámetros importantes a tener en cuenta son el tacto, no debe de ser gomoso, y el recorrido, no debe de ser muy corto. También es importante la ergonomía, es aconsejable que disponga de una amplia zona en la parte anterior, para poder descansar las muñecas. Y hablando de la ergonomía, este es uno de los parámetros que más destaca en un teclado, uno de los ya clasicos en este aspecto es el "Natural keyboard" de Microsoft.

Los mejores teclados que yo haya visto jamás son los de IBM, sobre todo los antiguos, aunque para entornos no profesionales, quizá puedan resultar incluso incómodos, por la altura de las teclas, su largo recorrido, y sus escandalosos "clicks". Estos teclados, fabricados después por Lexmark, y ahora por Unicomp, tienen una bien ganada fama de "indestructibles".

Y ya pasando a aspectos más técnicos, vamos a describir en detalle sus características.

Actualmente sólo quedan dos estándares en cuanto a la distribución de las teclas, el expandido, que IBM lo introdujo ya en sus modelos AT, y el de Windows95, que no es más que una adaptación del extendido, al que se le han añadido tres teclas de más, que habitualmente no se usan, y que sólo sirven para acortar la barra espaciadora hasta límites ridículos.

En cuanto al conector, también son dos los estándares, el DIN, y el mini-DIN. El primero es el clásico de toda la vida, y aún es el habitual en equipos clónicos.
El segundo, introducido por IBM en sus modelos PS/2, es usado por los fabricantes "de marca" desde hace tiempo, y es el habitual en las placas con formato ATX.
De todas formas, no es un aspecto preocupante, pues hay convertidores de un tipo a otro.
Nos dejamos otro tipo de conector cada vez más habitual, el USB, pero la verdad es que de momento apenas hay teclados que sigan este estándar.

el monitor

Monitor de computadora

De Wikipedia, la enciclopedia libre

Monitor LCD

Monitor LCD

El monitor o pantalla de computadora, es un dispositivo de salida que, mediante una interfaz, muestra los resultados del procesamiento de una computadora.

Tabla de contenidos

[ocultar]

Parámetros de una pantalla

  • Píxel: Unidad mínima representable en un monitor.
  • Tamaño de punto o (dot pitch): El tamaño de punto es el espacio entre dos fósforos coloreados de un pixel. Los tamaños de punto más pequeños producen imágenes más uniformes. Un monitor de 14 pulgadas suele tener un tamaño de punto de 0,28 mm o menos. en LCD y en CRT de apertura de rejilla, es la distancia en horizonontal, mientras que en los CRT de mascara de sombra, se mide casi en diagonal.
  • Área Útil: El tamaño de la pantalla no coincide con el área real que se utiliza para representar los datos.
  • Resolucion maxima: es la resolucion maxima o nativa (y unica) en el caso de los LCD que es capaz de representar el monitor, esta relaccionada con el tamaño dfe la pantalla y el tamaño del punto
  • Tamaño de la pantalla: Es la distancia en diagonal de un vertice de la pantalla al opuesto, que puede ser distinto del area visible.
  • Ancho de banda: Frecuencia maxima que es capaz de soportar el monitor
  • Hz o frecuencia de refresco vertical: son 2 valores entre los cuales el monitor es capaz de mostrar imagenes estables en la pantalla.
  • Hz o frecuencia de refresco horizontal : similar al anterior pero en sentido horizontal, para dibujar cada una de las líneas de la pantalla.
  • Blindaje: Un monitor puede o no estar blindando ante interferencias electricas externas y ser mas o menos sensible a ellas, por lo que en caso de estar blindando, o semiblindado por la parte trasera llevara cubriendo practicamente la totalidad del tubo una plancha metalica en contanto con tierra o masa.
  • Tipo de monitor: en los CRT pueden existir 2 tipos, de apertura de rejilla o de mascara de sombra.
  • Líneas de tensión: Son unas líneas horizontales, que tienen los monitores de apertura de rejilla para mantener las líneas que permiten mostrar los colores perfectamente alineadas; en 19 pulgadas lo habitual suelen ser 2, aunque también los hay con 3 líneas, algunos monitores pequeños incluso tienen una sola.

Nota: Dot Pitch: También conocido como Tamaño de Punto. Es un parámetro que mide la nitidez de la imagen, midiendo la distancia entre dos puntos del mismo color; resulta fundamental a grandes resoluciones. En ocasiones es diferente en vertical que en horizontal, o se trata de un valor medio, dependiendo de la disposición particular de los puntos de color en la pantalla, así como del tipo de rejilla empleada para dirigir los haces de electrones. Lo mínimo exigible en este momento es que sea de 0,28mm. Para CAD o en general para diseño, lo ideal sería de 0,25mm o menos. 0,21 en mascara de sombra es el equivalente a 0.24 en apertura de rejilla. Nota: no todos los monitores estando apagados tienen un color negro si los miramos, algunos tienen un ligero tono que tiende a uno u otro color, viendo una imagen reflejada en él se nota el cambio de color.
Limpieza de monitores: los CRT se pueden limpiar con cualquier limpiacristales, pero los LCD son más sensibles, ya que son porosos y pueden atrapar la suciedad y los líquidos que le apliquemos, en los manuales de instrucciones de los LCD pueden existir notas al respecto. Métodos para limpiar monitores de LCD:

  • Agua destilada y un paño que no suelte pelusas como los de limpiar las gafas, ligeramente humedecido.
  • Productor especificos para limpiar pantallas de LCD,
  • Limpiador antiestático.
  • Por internet dicen también que las toallitas de limpiar la cola de los niños pequeños sirven, pero no se recomienda, por no ser un producto diseñado para limpiar una pantalla (ver negrita).

Hay que tener en cuenta que existen 2 tipos de pantallas, mates y brillantes, en cualquier caso mire en el manual de instrucciones de la pantalla, como limpiarlo, o en su defecto al fabricante, ya que la limpieza de un monitor con productos no destinados a tal fin pueden dejar manchas en la pantalla de forma permanente.

Ventajas y Desventajas

  • Ventajas de las pantallas LCD:
    • El grosor es inferior por lo que pueden utilizarse en portatiles.
    • Cada punto se encarga de dejar o no pasar la luz, por lo que no hay moire.
    • La geometria es siempre perfecta, lo determina el tamaño del pixel
  • Desventajas de las pantallas LCD:
    • Solo pueden reproducir fielmente la resolucion nativa, con el resto, se ve un borde negro, o se ve difuminado por no poder repruducir medios pixels.
    • Por si solas no producen luz, necesitan una fuente externa.
    • Si no se mira dentro del cono de visibilidad adecuado, desvirtuan los colores.
    • El ADC y el DAC de un monitor LCD para reproducir colores limita la cantidad de colores representable.
      • El ADC (Convertidor Digital a Analogico) en la entrada de video analogica (cantidad de colores a representar).
      • El DAC (Convertidor Analogico a Digital) dentro de cada pixel (cantidad de posibles colores representables).
      • en los CRT es la tarjeta grafica la encargada de realizar esto, el monitor no influye en la cantidad de colores representables, salvo en los primeros modelos de monitores que tenian entradas digitales TTL en lugar de entradas analogicas.
  • Ventajas de las pantallas CRT:
    • Permiten reproducir una mayor variadad cromatica.
    • Distintas resoluciones se pueden ajustar al monitor.
    • El los monitores de apertura de rejilla no hay moire vertical.
  • Desventajas de las pantallas CRT:
    • Ocupan más espacio, (cuanto mas fondo, mejor geometria).
    • Los modelos antiguos tienen la pantalla curva.
    • Los campos electricos afectan al monitor (la imagen vibra).
    • Para disfrutar de una buena imagen necesitan ajustes por parte del usuario.
    • En los monitores de apertura de rejilla se pueden apreciar varias líneas de tensión muy finas y difíciles de apreciar que cruzan la pantalla horizontalmente, se pueden apreciar con fondo blanco.
  • Datos tecnicos, comparativos entre si:
    • En los CRT, la frecuencia de refresco es la que tiene la tarjeta grafica, en los LCD no siempre es la que se le manda
    • Los CRT pueden tener modo progresivo y entrelazado, los LCD tiene otro metodo de representacion.
    • En los CRT se pierde aproximadamente 1 pulgada del tamaño, que se utiliza para la sujeccion del tubo, en los CRT es practicamente lo que ocupa el LCD.
    • El peso de un LCD se ve incrementado por la peana para darle estabilidad, pero el monitor en si no pesa practicamente nada.
    • Los LCD suelen necesitar de un transformador externo al monitor, en los CRT toda la electronica va dentro del monitor.
    • En los LCD el consumo es menor, y la tension de utilizacion por parte de la electronica tambien.
    • En los CRT pueden aparecer problemas de "quemar" el fosforo de la pantalla, esto ocurre al dejar una imagen fija durante mucho tiempo, como la palabra "insert coin" en las recreativas, en los LCD los problemas pueden ser de pixels defectuosos (siempre encendido o, siempre apagado), aparte de otros daños.
    • El parpadeo de ambos tipos de pantallas es debido a la baja frecuencia de refresco, unido a la persistencia del brillo del fosforo, y a la memoria de cada pixel en un CRT y LCD respectivamente, que mitigan este defecto.
      • Con baja velocidad de refresco y un tiempo grande de persistencia del fosforo, no hay parpadeo, pero si la persistencia del fosforo es baja y el refresco es bajo, se produce este problema. Sin emabargo esto puede causar un efecto de desvanecimiento o vision borrosa, al permanecer aun encendido un punto, en el siguiente refresco de la pantalla.