Archivo

Posts Tagged ‘CPU’

Guía de Microprocesadores 2010

24 junio 2010 Los comentarios están cerrados

Comprar un microprocesador hoy en día puede ser una tarea laboriosa, Ghz, núcleos, TDPs, buses, caches, … y una enorme cantidad de marcas y modelos. ¿Cómo elegir el procesador más apropiado para mis necesidades?, ¿Cuál es el significado de esos términos extraños? En este guía explicaré los conceptos básicos sobre las características de un procesador, esperando te sea de utilidad para tus próximas compras.

Para una mejor lectura he divido este artículo en las siguientes secciones:

  • Introducción
  • Frecuencia del Reloj
  • Multi-Procesamiento (Multi-Threading)
  • Calentamiento y Consumo de Energía
  • Memorias
    • Cache
    • RAM
  • Socket Tarjeta Madre y Buses
  • Software

Introducción

Microprocesador

El Microprocesador, CPU o simplemente procesador, es lo que muchos llaman el cerebro de la computadora. La velocidad y las capacidades de nuestros equipos dependen principalmente de este. En realidad es un pequeño chip aproximadamente del tamaño de una uña, normalmente lo encontraremos en un empaquetado como el de la izquierda. Tener un buen CPU puede ser crucial para desarrollar nuestras tareas de forma rápida y eficiente, para ello deberemos elegir el más apropiado para el trabajo a realizar.
En los equipos actuales no todas las tareas son ejecutadas por el CPU. Cierto tipo de tareas como: reproducción de videos, animación, videojuegos y en general todas las aplicaciones que requieren procesamiento gráfico son principalmente ejecutadas en la tarjeta de video. Podemos pensar en esta última como un segundo procesador dentro del equipo que, incluso en ciertos ámbitos, puede llegar a ser más importante que el CPU. Si deseas saber más sobre chips de video te recomiendo revisar la Guía para Tarjetas Gráficas.

Antes que otra cosa, quisiera resaltar que hoy en día es muy difícil (o imposible) comparar la velocidad de dos procesadores solo por el modelo o sus características. Para tener un valor más aproximado a la realidad se requiere la realización de pruebas, no solo con el hardware, sino también con el software que vamos a utilizar. Afortunadamente muchos sitios de internet se dedican a realizar estas pruebas de rendimiento (benchmarks) con muchas combinaciones de hardware y software disponibles en el mercado. Existen una enorme cantidad de sitios muy recomendables donde podemos encontrar benchmarks, solo por mencionar algunos:

Notemos que no solo el desempeño puede ser importante al momento de elegir un microprocesador, otros factores como: consumo de energía, calentamiento y costo pueden ser igualmente importantes. Si pensamos actualizar el equipo a futuro, el socket y el tipo de memoria soportada también pueden ser de interés.

Una de muchas formas de clasificar a los procesadores es por el tipo de instrucciones. Estas instrucciones se pueden pensar como el lenguaje para comunicamos con el chip, con nombres como: x86, x86-64, ARM, MIPS, SPARC, etc. En esta guía solo nos enfocaremos en los procesadores que podemos encontrar comercialmente en equipos de computo personal, como son equipos de escritorio, laptops, netbooks, … estos chips son de tipo x86 ó x86-64 (de 32 y 64 bits).

Frecuencia del Reloj

Todos los procesadores actuales cuentan con un reloj el cual marca el ritmo de trabajo del chip y permite sincronizar todos los procesos que se desarrollan en su interior. Entre más rápido trabaje el reloj más rápidamente ejecutará las tareas. Actualmente la frecuencia con la que operan estos relojes se encuentra en el rango de los Ghz o mil millones de pulsos por segundo. Si pensamos que el procesador es capaz de ejecutar una instrucción por cada pulso de reloj, podremos darnos una idea del enorme potencial de los equipos de computo actuales.

Desafortunadamente entre más rápido trabaje el reloj, el chip se calentará más, al mismo tiempo que consumirá más energía. De aquí que los procesadores varían su frecuencia de acuerdo a la carga de trabajo, reduciéndola cuando el equipo esta inactivo e incrementándola para procesar rápidamente nuevas tareas. Hay que mencionar que esta variación de frecuencia no funcionará a menos que se instale el driver apropiado en el sistema operativo.

En la mayoría de los chips comerciales o al comprar un equipo de cómputo, encontraremos dentro de las especificaciones la frecuencia máxima de este reloj. Por ejemplo: 3.2 Ghz nos indica que el reloj del CPU puede emitir hasta 3 mil dos cientos millones de pulsos por segundo. Podemos decir que un chip a 3.2 Ghz es “aproximadamente” el doble de rápido que uno a 1.6 Ghz, sin embargo, esta comparación solo se puede aplicar con ciertas precauciones en chips de la misma familia, por ejemplo: un Phenom II X2 a 3.0 Ghz es en general un poco más rápido que un Athlon II X2 a 3.0 Ghz. a pesar de operar a la misma frecuencia, pues pertenecen a familias distintas.

Multi-Procesamiento (Multi-Threading)

Hace algunos años los procesadores no podían ejecutar más de una tarea al mismo tiempo, sin embargo gracias a su capacidad para procesar instrucciones muy rápidamente, cambiaban de una tarea a otra sin que el usuario se diera cuenta, dando la apariencia de realizar varias tareas de forma simultanea.

En la actualidad se sigue aplicando este mismo truco, solo que ahora también se cuenta con multi-procesamiento. Es posible que encontremos alguna de las siguientes tecnologías de multi-procesamiento en nuestros chips:

  • Múltiples Núcleos (multi-core). Consiste en poner varios procesadores en un solo paquete o en un solo chip. A los procesadores dentro del paquete se les llaman núcleos. Esto puede incrementar dramáticamente el desempeño del equipo. Teóricamente un procesador de 4 núcleos puede realizar 4 veces más trabajo que uno solo. Esta característica también nos permite darnos una idea del desempeño del chip, por ejemplo: un Core 2 Quad (4 núcleos) podría ser “aproximadamente” el doble de rápido que un Core 2 Duo (2 núcleos), cuando los dos trabajan a la misma frecuencia y además pertenecen a la misma familia. La mayoría de los microprocesadores actuales cuenta con múltiples núcleos, sin embargo, como veremos un poco más adelante, tener más núcleos no significa que un programa se ejecutará necesariamente más rápido.
  • Bloques Compartidos (hyper-threading o HT). En esta técnica los recursos de un núcleo que sean desperdiciados por un proceso podrán ser utilizados por otro proceso distinto. De esta forma un solo núcleo puede ejecutar 2 o más procesos de forma simultanea dependiendo del chip. En este caso es muy difícil comparar dos núcleos con y sin bloques compartidos. Para darnos una idea de esto, debemos preguntarnos ¿Cuantos recursos desperdicia X proceso en este núcleo?. Bajo ciertas condiciones poco comunes tener Bloques Compartidos puede incluso alentar la ejecución de una aplicación.

Existen otras muchas técnicas para procesar múltiples tareas de forma simultanea pero las dos anteriores son las disponibles en chips x86 y x86-64. Algunas procesadores que encontramos en el mercado utilizan las dos técnicas anteriores de forma simultanea.

Calentamiento y Consumo de Energía

Todos los CPUs se calientan, pero si la temperatura es demasiado alta podría llegar a quemarse. De aquí que todos los chips actuales cuentan con mecanismos de protección, apagándose así mismos si se supera cierta temperatura. El calor que produce un procesador se mide en Watts y el valor máximo de éste es indicado en las especificaciones del procesador, normalmente bajo el nombre TDP (Thermal Design Power). Aunque la forma en la que los fabricantes establecen este valor es muchas veces cuestionada, puede servir como un punto de partida para comprar otros componentes. Por ejemplo; una tarjeta madre puede indicar que solo soporta chips de hasta 95W TDP. Este valor también nos da una idea sobre el nivel de enfriamiento que requiere nuestro equipo. Notemos que la disipación térmica de un chip puede variar ampliamente:

  • Core 2 Solo U2200 – TDP: 4 W
  • Core 2 Duo T7800 – TDP 35 W
  • Core 2 Duo E8600 – TDP 65 W
  • Core 2 Quad Q6700 – TDP 105 W
  • Core 2 Extreme QX9775 – TDP 150 W

Puedes encontrar una lista detallada del TDP de todos los procesadores aquí.

Para mantener el CPU a una temperatura adecuada (normalmente menos de 75 grados C) es necesario enfriarlo utilizando algún sistema de disipación de calor. La mayoría de estos sistemas utilizan a final de cuentas el aire que hay en la habitación, por lo cual es conveniente tener nuestro equipo en una habitación con buena ventilación. El disipador es normalmente el primer elemento que encontramos para enfriar nuestro procesador, tienen muchas formas y tamaños, la mayoría están formados por una aleación de Cobre, Aluminio y Níquel.

Cortecia de Clawed http://en.wikipedia.org/wiki/User:Clawed

Son colocados sobre el microprocesador usando una pasta térmica, como el de la foto de abajo, que permite conducir el calor del chip al disipador. Algunas de estas pastas son altamente tóxicas y es necesario tener cuidado al manipularlas.

Cuando el TDP es muy bajo, por ejemplo 10 W o menos, puede no ser necesario un ventilador, sin embargo la mayoría de los disipadores cuentan con uno.. En los equipos pequeños como netbooks, nettops, htpcs, laptops y tablets, los sistemas de enfriamiento son pequeños y ofrecen poca disipación, por esto solo procesadores de 45W TDP o menos son colocados en este tipo de computadoras. En general los gabinetes grandes ofrecen una mejor disipación térmica y permiten tener procesadores con mayores TDPs.

Cortesía de Fosnez http://en.wikipedia.org/wiki/User:Fosnez

Finalmente el consumo de energía de un procesador siempre es mayor que la disipación térmica (notemos que el TDP es el valor máximo de esta disipación y no el valor promedio, AMD sugiere utilizar el ACP para este tipo de mediciones). Y puede ser un factor a tomar en cuenta cuando pensamos en la duración de la batería de un equipo móvil o en el pago del servició de energía eléctrica.

Memoria

El procesador requiere tener un acceso rápido a la información, es por esto que existen varios niveles de memoria.

Cache

Es el tipo de memoria más rápida, se encuentra directamente en el procesador, la cantidad de esta se establece de fábrica y no puede cambiarse. Existen varios niveles de memoria cache:

  • Nivel 1. Es la más rápida pero la de menor capacidad apenas unas docenas de KB.
  • Nivel 2. Más lenta que la de Nivel 1 pero con mayor capacidad. Desde 512 KB hasta algunos MB.
  • Nivel 3. Es la más lenta pero también la de mayor capacidad. En los procesadores AMD actuales es usada para compartir información entre núcleos dentro de un mismo chip.

En general entre más memoria cache tenga un procesador será más rápido, pues tendrá a su disposición mayor cantidad de información y de una forma muy rápida. Aunque frecuentemente esto dependerá de la aplicación de software que estemos ejecutando.

RAM

Es un tipo de memoria de gran capacidad aunque mucho más lenta que la cache. Es posible expandirla ya que se coloca en módulos sobre la tarjeta madre. Existen varios tipos de memoria RAM como son el DDR2 y DDR3, estos pueden operar a distintas frecuencias y ofrecer distintos tiempos de respuesta.

Algunos procesadores actuales tienen el controlador de memoria RAM integrado. En estos casos el soporte de memoria es dictado por el procesador, tanto en tipo como en frecuencia. Algunos procesador pueden llegar a soportar varios tipos, por ejemplo aquellos de socket AM3 soportan memoria DDR2 y DDR3.

Antes de comprar es importante revisar el tipo y frecuencia de la memoria que soporta un procesador, y asegurarse que la tarjeta madre también la soporta.

Finalmente la cantidad de memoria RAM puede afectar de manera importante el desempeño de nuestro equipo, si el sistema operativo y los programas que utilizamos no cuenta con la cantidad de memoria RAM que requieren, el sistema se verá forzado a utilizar el disco duro para almacenar datos temporales, reduciendo considerablemente la ejecución de los programas. Es recomendable tomar en cuenta el sistema operativo y los programas que se van a utilizar antes de comprar.

Puedes ver más sobre los tipos y tecnologías de memoria RAM aquí.

Socket, Tarjeta Madre y Buses


Se llama socket a la parte de la tarjeta madre donde es colocado el procesador. Cuando elegimos un procesador es importante revisar que la tarjeta madre tenga el mismo socket, o un socket compatible. Por ejemplo: Los procesadores AM3 también son compatibles con tarjetas de socket AM2 y AM2+. Sin embargo es necesario revisar la documentación del fabricantes de la tarjeta madre para verificar el soporte.

La tarjeta madre tiene dos componentes principales (Chipset o conjunto de chips) el Puente Norte y el Puente Sur.

El Puente Norte se comunica con:

  • El procesador, mediante algún bus de alta velocidad como: FSB o QuickPath en procesadores Intel y HyperTransport en procesadores AMD.
  • La memoria RAM, usando uno o varios canales, con un tipo acorde al de la memoria (DDR2 ó DDR3 en la mayoría de los casos).
  • La tarjeta de video, usando el bus PCI-Express
  • El puente sur, mediante algún bus dependiendo del fabricante, como por ejemplo el DMI en chipsets Intel.

El Puente Sur se comunica con:

  • Disco Duro, con el bus Serial ATA (SATA).
  • Otros Dispositivos, con buses de menor velocidad como USB, PCI, PCI-E 1x, etc.

Como ya hemos visto antes, algunos procesadores integran el controlador de memoria, esto significa que se comunica directamente con la memoria RAM, sin que la información pase por el puente norte. Algunos procesadores de Intel incluso integran completamente el puente norte en el mismo chip. En este caso el procesador se comunica directamente con la RAM, la tarjeta de video y el puente sur.

Entre más rápidos sean los buses de comunicación más rápidamente se podrá comunicar el procesador con otros componentes, eliminando posibles cuellos de botella.

Software

Como ya he mencionado antes, la velocidad de un equipo no depende completamente del hardware, el software cada vez juega un papel más relevante en este sentido.

Uno de los primero factores a tomar en cuenta es el sistema operativo. Windows, Linux, Mac, … y cada una de sus variantes se comportan de formas distintas, algunos de los factores que pueden hacer variar el desempeño son:

  • Consumo de Memoria, algunos sistemas operativos consumen más memoria RAM que otros, por lo tanto si el equipo no cuenta con suficiente memoria se tendrá un sistema lento.
  • Drivers, cada sistema operativo utiliza sus propios drivers, por lo tanto, el hardware no se comportará necesariamente de igual forma en cada sistema, un claro ejemplo de esto lo tenemos en los drivers de video.
  • Antivirus, mientras que el uso de antivirus en sistemas Windows es completamente necesario, en otros sistemas no lo es tanto. El antivirus puede reducir el desempeño del equipo ya que realiza una actividad continua, además de que consumir memoria RAM. Si necesitamos un antivirus es recomendable tener uno que sea bueno y también eficiente.
  • Arquitectura, cada sistema ha sido programado de forma distinta o bien esta compuesto por bloques distintos, por lo tanto podemos esperar a que los programas no funcionen de la misma forma.

Otro factor a tomar en cuenta es el soporte de multi-procesamiento en un programa. Por ejemplo: si tenemos un procesador de 4 núcleos, y una aplicación que no puede auto-dividirse, esta solo se ejecutará utilizando 1 núcleo, manteniendo los otros 3 inactivos. Cuando un programa soporta multi-procesamiento puede auto-dividir para aprovechar todos núcleos. Es importante mencionar que algunos programas solo pueden auto-dividirse en número fijo de procesos, el cual podría ser menor que el número de núcleos, en cuyo caso también tendremos núcleos inactivos. Esta característica es particular de cada programa, es necesario consultar la documentación del proveedor del software para verificar si cuenta con este soporte.

Al igual que el multi-procesamiento existen varias tecnologías disponibles en el procesador que pueden ser aprovechadas por un programa para ejecutarse más rápidamente (SSE3, SSE4,…).

Puedes encontrar especificaciones detalladas sobre los microprocesadores más nuevos en los siguientes links:

Espero que esta guía te haya sido de utilidad y como siempre espero tus comentarios y sugerencias.

Categorías:Tutoriales Etiquetas: , ,

Cómputo Eficiente: Diseñando Mejores Chips – Parte I

29 septiembre 2009 Los comentarios están cerrados

En esta miniserie trataré de resumir a grandes rasgos el transfondo cultural, económico y tecnológico que ha dado como fruto a las nuevas tecnologías y productos que comenzamos a ver en el mercado de cómputo como son: netbooks, las familias de procesadores Sun Microsystems UltraSPARC Tx, Fujitsu SPARC64 Venus, IBM Power7, Cell, Intel Atom, Larrabee y ARM Cortex-A9, GPGPU’s de ATI e Nvidia, y OpenCL.

Durante muchos años la industria de microprocesadores nos quiso vender la idea de que lo único que importaba al comprar una nueva computadora eran los Ghz que ofrecía, y desde hace unos 4 años nos vienen diciendo que lo importante ahora es el número de núcleos. Sin embargo las condiciones del mercado han traído a una nueva generación de usuarios, más preocupados por el costo, el gasto energético, la duración de la batería en equipos móviles y la velocidad con la que sus aplicaciones responden a sus comandos. Provocando una gran innovación, la creación de nuevos mercados y de nuevos productos radicales.

“El número de transistores que puede ser colocado en un chip se duplicará cada 2 años”

Gordon E. Moore

Esto es lo que nos dice la ya famosa ley de Moore, no obstante, aún no sabemos que hacer con todos estos transistores, ¿Cuál es la forma más eficiente de usar estos transistores para procesar X tipo de información? aún nadie lo sabe.

Los Ghz y el procesamiento secuencial
La máquina de Turing nos muestra una forma sencilla de escribir cualquier algoritmo, una operación después de la otra, llevándonos a lo que se conoce como programación secuencial; el paradigma de desarrollo de software más exitoso, adoptado por la industria del software a nivel mundial y donde se han invertido hasta hoy en día billones de dolares en la creación de software bajo este principio elemental.

Esto impulso a los fabricantes de chips a crear procesadores cuyo objetivo principal era ejecutar lo más rápidamente posible este tipo de programas. Todo el diseño de estos chips se basaba en su capacidad para ejecutar una o más instrucciones cada vez que un reloj central hacía un tick-tack, y buscando que cada vez, todo el sistema se moviera al ritmo de relojes más y más rápidos, llevándonos a una vertiginosa carrera por frecuencias de reloj más altas. Más Ghz.

Ejecutar este tipo de programas no resultó fácil, ni tampoco eficiente. Diseñadores de procesadores tuvieron que recurrir a toda una serie de ingeniosos métodos para ejecutar instrucciones más rápidamente: pipelines, out of order execution, caches, branch prediction, speculative execution,… que se enfocaban más en “administrar” el código que en realizar trabajo útil para el programador. Al mismo tiempo, conforme aumentaban las frecuencias de operación, así también aumentaban la temperaturas de los chips, esto provocado por los constantes cambios de estado de los componentes, al ritmo del reloj. Requiriendo continuamente soluciones de enfriamiento más eficientes.

Finalmente las altas temperaturas desaceleraron el ritmo con el que avanzaban los Ghz. Debido no solamente a las altas frecuencias, sino también a las crecientes corrientes de fuga provocadas por las escalas de fabricación tan increíblemente pequeñas de los nuevos chips, a lo que se conoció como la barrera térmica.

Esta nueva limitación provocó grandes fracasos en el mercado de microprocesadores como se vio con el Intel Pentium 4/ Tejas y forzó grandes cambios en la industria. Como podemos apreciar en la última conferencia de Hot Chips 2009, el procesamiento secuencial a muerto, la última linea de procesadores enfocándose en este tipo de arquitecturas, IBM Power, ha preferido dar un cambio de rumbo e ir en la dirección del Throughput-Computing.