CPU vs GPU

Después de haber comentado en alguna entrada la posibilidad de implementar aplicaciones industriales como un SCADA en una GPU (Graphics Processing Unit), algunos de vosotros os habéis interesado por este tipo de procesador y por sus diferencias con una CPU (Central Processing Unit).

En los dos tipos de procesador los cuellos de botella hoy en día son:

  • El consumo de potencia.
  • La jerarquía de memoria (las memorias no pueden alimentar de instrucciones/datos al procesador a un ritmo suficiente).
  • El paralelismo a nivel de instrucción que permiten aprovechar.

Sin embargo, y aunque se utilizan las mismas técnicas para superar estas limitaciones, la filosofía de diseño en ambos tipos de procesador es bastante diferente. Hay que tener en cuenta que la CPU es el procesador de propósito general que gobierna nuestro sistema mientras que la GPU es un procesador de propósito específico diseñado, en principio, para un tipo de aplicación muy concreta y para ir montado sobre la tarjeta gráfica.

Para que comprendáis esta diferente filosofía, una imagen vale más que mil palabras.



Podéis ver que el paradigma de programación y el tipo de programas que ejecutan los dos tipos de procesador es completamente diferente, por lo que:

  • La GPU se centra en el rendimiento de ciertas operaciones concretas en FP.
  • Los operandos en una GPU pueden ser 1D, 2D o incluso 3D.
  • La GPU incorpora más elementos de proceso que una CPU.
  • Pero tiene integrada menos cantidad de memoria caché que además está optimizada para accesos secuenciales y no para explotar la localidad espacial/temporal.
Una vez vistas estas características, otro día hablaremos de cómo se puede emplear un procesador de tipo GPU en aplicaciones diferentes de las gráficas.
ffff

1 comentario:

Unknown dijo...

Realmente, como una imagen vale más que mil palabras aqui teneis un video donde se muestra una competición entre una CPU y una GPU:http://www.youtube.com/watch?v=fKK933KK6Gg
saludos