SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Alberto Perojo Parás


                                Tecnología GPU para las tarjetas gráficas

Con este trabajo se pretende dar unas nociones básicas sobre la tecnología GPU usada en las tarjetas gráficas y
profundizar en la última arquitectura propuesta por nVidia para los modelos GTX200.


El concepto

GPU es un acrónimo utilizado para abreviar Graphics Processing Unit, que significa "Unidad de Procesado de Gráficos".
Una GPU es un procesador dedicado exclusivamente al procesamiento de gráficos, para aligerar la carga de trabajo del
procesador central en aplicaciones como los videojuegos y o aplicaciones 3D interactivas. De esta forma, mientras gran
parte de lo relacionado con los gráficos se procesa en la GPU, la CPU puede dedicarse a otro tipo de cálculos (como la
inteligencia artificial o los cálculos mecánicos en el caso de los videojuegos).


Diferencias con la CPU
Una GPU implementa ciertas operaciones gráficas llamadas primitivas optimizadas para el procesamiento gráfico. Una
de las primitivas más comunes para el procesamiento gráfico en 3D es el antialiasing, que suaviza los bordes de las
figuras para darles un aspecto más realista. Adicionalmente existen primitivas para dibujar rectángulos, triángulos,
círculos y arcos. Las GPU actualmente disponen de gran cantidad de primitivas, buscando mayor realismo en los
efectos.
Si bien en un computador genérico no es posible reemplazar la CPU por una GPU, hoy en día las GPU son muy
potentes y pueden incluso superar la frecuencia de reloj de una CPU antigua (más de 500MHz). Pero la potencia de las
GPU y su dramático ritmo de desarrollo reciente se deben a dos factores diferentes. El primer factor es la alta
especialización de las GPU, ya que al estar pensadas para desarrollar una sola tarea, es posible dedicar más silicio en
su diseño para llevar a cabo esa tarea más eficientemente. Por ejemplo, las GPU actuales están optimizadas para
cálculo con valores en coma flotante, predominantes en los gráficos 3D.
Por otro lado, muchas aplicaciones gráficas conllevan un alto grado de paralelismo inherente, al ser sus unidades
fundamentales de cálculo (vértices y píxeles) completamente independientes. Por tanto, es una buena estrategia usar la
fuerza bruta en las GPU para completar más calculos en el mismo tiempo. Los modelos actuales de GPU suelen tener
una media docena de procesadores de vértices (que ejecutan vertex shaders), y hasta dos o tres veces más
procesadores de fragmentos o píxeles (que ejecutan fragment shaders). De este modo, una frecuencia de reloj de unos
500-600MHz (el estándar hoy en día en las GPU de más potencia), muy baja en comparación con lo ofrecido por las
CPU (3.8-4 GHz en los modelos más potentes[no necesariamente más eficientes]), se traduce en una potencia de
cálculo mucho mayor gracias a su arquitectura en paralelo.
Una de las mayores diferencias con la CPU estriba en su arquitectura. A diferencia del procesador central, que tiene una
arquitectura Eckert-Mauchly, la GPU se basa en el Modelo Circulante. Este modelo facilita el procesamiento en paralelo,
y la gran segmentación que posee la GPU para sus tareas.


Arquitectura de la GPU
Una GPU está altamente segmentada, lo que indica que posee gran cantidad de unidades funcionales. Estas unidades
funcionales se pueden dividir principalmente en dos: aquéllas que procesan vértices, y aquéllas que procesan píxeles.
Por tanto, se establecen el vértice y el píxel como las principales unidades que maneja la GPU.
Adicionalmente, y no con menos importancia, se encuentra la memoria. Ésta destaca por su rapidez, y va a jugar un
papel relevante a la hora de almacenar los resultados intermedios de las operaciones y las texturas que se utilicen.
Inicialmente, a la GPU le llega la información de la CPU en forma de vértices. El primer tratamiento que reciben estos
vértices se realiza en el vertex shader. Aquí se realizan transformaciones como la rotación o el movimiento de las
figuras. Tras esto, se define la parte de estos vértices que se va a ver (clipping), y los vértices se transforman en píxeles
mediante el proceso de rasterización. Estas etapas no poseen una carga relevante para la GPU.
Donde sí se encuentra el principal cuello de botella del chip gráfico es en el siguiente paso: el pixel shader. Aquí se
realizan las transformaciones referentes a los píxeles, tales como la aplicación de texturas. Cuando se ha realizado todo
esto, y antes de almacenar los píxeles en la caché, se aplican algunos efectos como el antialiasing, blending y el efecto
niebla.
Otras unidades funcionales llamadas ROP toman la información guardada en la caché y preparan los píxeles para su
visualización. También pueden encargarse de aplicar algunos efectos. Tras esto, se almacena la salida en el frame
buffer. Ahora hay dos opciones: o tomar directamente estos píxeles para su representación en un monitor digital, o
generar una señal analógica a partir de ellos, para monitores analógicos. Si es este último caso, han de pasar por un
DAC, Digital-Analog Converter, para ser finalmente mostrados en pantalla.
Programación de la GPU
Al inicio, la programación de la GPU se realizaba con llamadas a servicios de interrupción de la BIOS. Tras esto, la
programación de la GPU se empezó a hacer en el lenguaje ensamblador específico a cada modelo. Posteriormente, se
situó un nivel más entre el hardware y el software, diseñando las API (Application Program Interface), que
proporcionaban un lenguaje más homogéneo para los modelos existentes en el mercado. El primer API usado
ampliamente fue estándar abierto OpenGL (Open Graphics Language), tras el cuál Microsoft desarrolló DirectX.
Tras el desarrollo de APIs, se decidió crear un lenguaje más natural y cercano al programador, es decir, desarrollar un
lenguajes de alto nivel para gráficos. Por ello, de OpenGL y DirectX surgieron estas propuestas. El lenguaje estándar de
alto nivel, asociado a la biblioteca OpenGL es el "OpenGL Shading Language", GLSL, implementado en principio por
todos los fabricantes. La empresa californiana NVidia creó un lenguage propietario llamado Cg (del inglés, "C for
graphics"), con mejores resultados que GLSL en las pruebas de eficiencia. En colaboración con NVidia, Microsoft
desarrolló su "High Level Shading Language", HLSL, prácticamente idéntico a Cg, pero con ciertas incompatibilidades
menores.



                                              Última GPU de nVidia


La última arquitectura desarrollada por nVidia es la GT200.

Tamaño y consecuencias

El GPU GT200 es grande, extremadamente grande y esto combinado con el hecho de que la arquitectura de GPUs es
más compleja que la de un CPU, tiene una cantidad importante de consecuencias.

A nVIDIA le ha costado controlar el tamaño de sus GPUs y sus desarrollos les están comenzando a salir un poco de las
manos. La razón de esto, es que mientras más grande sea el tamaño del cuadrado de silicio, se pueden obtener menos
chips por cada oblea (wafer) que se procesa. Esto es obvio, pues la oblea no ha crecido en diámetro - 300mm - en
muchos años. Si para el G80 cada disco tenía 121 GPUs de 484mm², siendo que el tamaño del GT200 es ahora de
576mm², la cantidad de ellos se reduce aproximadamente a 100. Junto con esto, la cantidad de chips sin defectos o en
otras palabras, su rendimiento productivo (yields) disminuye debido a que las impurezas ahora amenazan a la superficie
de un circuito impreso cuya área es mayor. Por ende, la cantidad de GPUs buenos se reduce en una buena cantidad
con respecto a los del G80 trayendo como resultando que el costo del GT200 sea significativamente más alto para la
empresa.

Adicionalmente, la cantidad de transistores en cada procesador gráfico ha aumentado a un ritmo considerablemente
más rápido que el de los CPUs.
Considerando que es Intel la empresa que utiliza los procesos de manufactura más modernos del mundo y no NVIDIA,
se puede ver como esta última esta estresando mucho más la tecnología a su límite. Esto se demuestra de forma muy
clara cuando se compara el consumo en watts de los más recientes desarrollos de ambas empresas: mientras el Intel
Core 2 Extreme QX9770 consume - según documentos de la empresa - 150w, el GT200 disipa 236w, un 57% más
aproximadamente. No solo esto, debido a que los transistores del GPU son en su gran mayoría unidades de
procesamiento a comparación del caso de Intel en donde la mayoría se emplean en memoria cache, la cantidad de
ruido eléctrico generado dentro de cada GPU está haciendo que cada vez sea más difícil que ellos logren frecuencias
más elevadas.
Las consecuencias de lo anterior hacen fácil preveer que NVIDIA está llegando al límite de lo que pueden hacer en un
solo chip para su siguiente generación de GPUs, tanto por factibilidad como por costos.
Arquitectura GTX200




1. Manejo de hilos (threads)

En la arquitectura unificada de NVIDIA no existen unidades específicas que cumplan las funciones de por ejemplo, pixel
shaders o vertex shaders o cualquier otro conjunto de instrucciones. La forma como se procesan estas instrucciones es
por medio de unidades que asignan hilos atadas a su característica y son enviados a los streaming processors a ser
procesados. Por ejemplo, si se va a procesar un programa de pixel shader, la unidad de pixel shader crea los hilos
marcados con esa función para ser procesados posteriormente. Las diferencias de esta unidad entre su modo
computacional y su modo gráfico se verán en el siguiente apartado.


2. Area de procesamiento principal
Un resumen de lo que hace es el siguiente: en esta área del GPU se encuentran los procesadores de hilo (streaming
processors o SP) que son agrupados de 8 en 8 en multiprocesdores de flujo (streaming multiprocessors o SM) los
cuales incluyen elementos adicionales dependiendo de si se usa el chip en modo computacional o gráfico. Finalmente,
los SMs están agrupados de a 3 en grupos de procesamiento de hilo (thread processing clusters o TPC) que
adicionalmente incluyen las unidades de texturización y el cache L1 - de primer nivel - compartido. Teniendo en cuenta
que hay 10 TPCs en el GPU podemos llegar a esta sencilla ecuación: 10x3x8= 240.
Este número representa la cantidad de SPs (núcleos de procesamiento del GPU) que posee la arquitectura, un salto
considerable con respecto a los 128 SPs (8 TPC x 2 SM x 8 SP) del G80.


3. ROP
Para el subsistema de ROPs (encargados de hacer el procesamiento final de los pixeles) el GT200 adiciona dos
particiones más de ellas con lo cual pasa a tener 8 ROPS a comparación de 6, lo que le permite procesar hasta 32
píxeles por reloj. Esto implica que técnicamente el GT200 debería tener un rendimiento superior al aplicar filtros (de
alisado de lineas y anisotrópico) en comparación a G80.
En la generación anterior, cada ROP estaba conectado a un canal de memoria de 64-bit, en esta generación se da el
mismo caso, por lo que ahora el bus de memoria pasó de tener 384 bits a tener 512-bit.
Aparte de algunas otras optimizaciones menores para ciertos tipos de píxeles, los ROPs se mantienen estructuralmente
iguales a los anteriores, lo cual implica que todos los modos de Anti-Aliasing / Alisado (MSAA, SSAA, AA de
transparencia adaptiva y CSAA) que existían en la generación anterior, son soportados por el nuevo GPU, pero no se
agregan nuevos modos.
4. Canales de memoria
Es interesante que NVIDIA habla de que se optimizaron las rutas críticas de memoria para que esta pueda operar a una
velocidad máxima de 1,2 GHz GDDR3, algo que probablemente viene del G92 pues la velocidad de las memorias en la
GeForce 8800 GTX era de 900MHz, que luego subieron a 1080MHz con la GeForce 8800 Ultra y posteriormente a
1100MHz con la GeForce 9800 GTX. Sin embargo, esto también quiere decir que el controlador de memoria está al
límite de sus capacidades para GDDR3. NVIDIA cuando tuvo que decidir sobre que tecnología de memorias tendría
para su siguiente GPU, decidió ser conservador manteniendo el uso de GDDR3, la cual a estas alturas está
ampliamente disponible y por ende es más económica, confiando en que el mayor ancho de banda surgiría por agregar
un par de controladores de memoria más en vez de depender del aumento de frecuencia de la memoria. La decisión
tomada por la empresa es muy razonable pues disminuye los costos de investigación y desarrollo de un nuevo
controlador de memoria, mientras se toman una mayor cantidad de tiempo en hacer las pruebas correspondientes para
desarrollarlo y optimizarlo al mismo tiempo que disminuyen los costos por tarjeta de video armada.
También, NVIDIA hizo algunos ajustes en la razón o ratio de ancho de banda entre las texturas y la memoria para que
esté más acorde a las cargas de trabajo actuales y futuras y así mantener a las unidades de textura siempre trabajando
pues siempre los datos están disponibles.
Por otra parte, se aumentaron en 6 veces la cantidad de estructuras internas para los buffers de salida lo que hace que
las operaciones de los shaders de geometría y las operaciones stream out (útiles para modo cómputo) sean
considerablemente más rápidas que las del G80 y un poco más rápidas que las de la Radeon HD 3870 X2. Esto es
destacable, porque en las pruebas de rendimiento que utilizaban shaders de geometría eran consistentemente más
lentos los GPUs de NVIDIA. Siendo que la arquitectura del G80 tenía un rendimiento superior en todas las pruebas de
rendimiento vistas en benchmarks y análisis (en donde no se emplean mucho los shaders de geometría pues estos solo
fueron recién introducidos con DirectX 10 y las arquitecturas compatibles de NVIDIA y ATI) la empresa se aseguro de
corregir una de las pocas cosas en la cual estaba en franca desventaja con la competencia.

El producto

El GT200 viene en dos versiones, el modelo GTX280 y el modelo GTX260. Al igual que en la generación pasada, la
diferencia entre cada modelo radica en las velocidades de reloj, en que se deshabilitan dos TCPs completamente, lo
que implica que disminuye el número de shaders y se deshabilita un ROP.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Tarjeta grafica
Tarjeta graficaTarjeta grafica
Tarjeta grafica
 
GPU
GPUGPU
GPU
 
Gpu Cod 2008252147 Andres Torres
Gpu Cod 2008252147 Andres TorresGpu Cod 2008252147 Andres Torres
Gpu Cod 2008252147 Andres Torres
 
Presentac..
Presentac..Presentac..
Presentac..
 
Mi Primer Trabajo
Mi Primer TrabajoMi Primer Trabajo
Mi Primer Trabajo
 
Tarjetas de video 2014
Tarjetas de video 2014Tarjetas de video 2014
Tarjetas de video 2014
 
Tarjetas graficas
Tarjetas graficas  Tarjetas graficas
Tarjetas graficas
 
Presentación tarjetas gráficas
Presentación tarjetas gráficasPresentación tarjetas gráficas
Presentación tarjetas gráficas
 
La tarjeta grafica
La tarjeta graficaLa tarjeta grafica
La tarjeta grafica
 
Tarjetas
TarjetasTarjetas
Tarjetas
 
Trabajo Tarjetas graficas
Trabajo Tarjetas graficasTrabajo Tarjetas graficas
Trabajo Tarjetas graficas
 
Tarjeta De Video
Tarjeta De VideoTarjeta De Video
Tarjeta De Video
 
GPU
GPUGPU
GPU
 
Tarjetas de video
Tarjetas de videoTarjetas de video
Tarjetas de video
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
 
Tarjetas de video
Tarjetas de videoTarjetas de video
Tarjetas de video
 
tarjetas de video
tarjetas de videotarjetas de video
tarjetas de video
 
Procesador
ProcesadorProcesador
Procesador
 

Similar a G P Un Vidia

Diana katherine morales_mejia_2009152033_-_gpu2
Diana katherine morales_mejia_2009152033_-_gpu2Diana katherine morales_mejia_2009152033_-_gpu2
Diana katherine morales_mejia_2009152033_-_gpu2
katikaone
 
Prueba Conferencia
Prueba ConferenciaPrueba Conferencia
Prueba Conferencia
guest988f714
 
Tarjetas Graficas
Tarjetas GraficasTarjetas Graficas
Tarjetas Graficas
klmnt
 
Computación paralela con gp us cuda
Computación paralela con gp us cudaComputación paralela con gp us cuda
Computación paralela con gp us cuda
Javier Zarco
 
Tarjeta graficadora gpu
Tarjeta graficadora gpuTarjeta graficadora gpu
Tarjeta graficadora gpu
jomanor74
 
Presentación Proyecto Tarjeta Gráfica.pdf
Presentación Proyecto Tarjeta Gráfica.pdfPresentación Proyecto Tarjeta Gráfica.pdf
Presentación Proyecto Tarjeta Gráfica.pdf
davidgamezlopez10
 
Hardware gráfico
Hardware gráficoHardware gráfico
Hardware gráfico
0CaroGuef
 

Similar a G P Un Vidia (20)

GPUs para Científicos
GPUs para CientíficosGPUs para Científicos
GPUs para Científicos
 
Diana katherine morales_mejia_2009152033_-_gpu2
Diana katherine morales_mejia_2009152033_-_gpu2Diana katherine morales_mejia_2009152033_-_gpu2
Diana katherine morales_mejia_2009152033_-_gpu2
 
Prueba Conferencia
Prueba ConferenciaPrueba Conferencia
Prueba Conferencia
 
Tarjetas Graficas
Tarjetas GraficasTarjetas Graficas
Tarjetas Graficas
 
Tarjetas graficas-119672189840656-4
Tarjetas graficas-119672189840656-4Tarjetas graficas-119672189840656-4
Tarjetas graficas-119672189840656-4
 
Tarea1234
Tarea1234Tarea1234
Tarea1234
 
Computación paralela con gp us cuda
Computación paralela con gp us cudaComputación paralela con gp us cuda
Computación paralela con gp us cuda
 
Tarjeta graficadora gpu
Tarjeta graficadora gpuTarjeta graficadora gpu
Tarjeta graficadora gpu
 
Trabajo mics
Trabajo micsTrabajo mics
Trabajo mics
 
Presentación Proyecto Tarjeta Gráfica.pdf
Presentación Proyecto Tarjeta Gráfica.pdfPresentación Proyecto Tarjeta Gráfica.pdf
Presentación Proyecto Tarjeta Gráfica.pdf
 
EL Gpu.
EL Gpu.EL Gpu.
EL Gpu.
 
Nvidia Pascal
Nvidia PascalNvidia Pascal
Nvidia Pascal
 
Turbo cache techbrief_v02_032105_es
Turbo cache techbrief_v02_032105_esTurbo cache techbrief_v02_032105_es
Turbo cache techbrief_v02_032105_es
 
Trabajo S.I.M.M.
Trabajo S.I.M.M.Trabajo S.I.M.M.
Trabajo S.I.M.M.
 
Gpu Lorena[1]
Gpu Lorena[1]Gpu Lorena[1]
Gpu Lorena[1]
 
Cuestionario sobre Placas de Video y Monitores
Cuestionario sobre Placas de Video  y MonitoresCuestionario sobre Placas de Video  y Monitores
Cuestionario sobre Placas de Video y Monitores
 
Tarjeta graficadora gpu
Tarjeta graficadora gpuTarjeta graficadora gpu
Tarjeta graficadora gpu
 
Tarjetavideo (1)
Tarjetavideo (1)Tarjetavideo (1)
Tarjetavideo (1)
 
Tarjetavideo (1)
Tarjetavideo (1)Tarjetavideo (1)
Tarjetavideo (1)
 
Hardware gráfico
Hardware gráficoHardware gráfico
Hardware gráfico
 

Más de albertoperojoparas (8)

Tema 6 DiagnóStico VirolóGico
Tema 6 DiagnóStico VirolóGicoTema 6 DiagnóStico VirolóGico
Tema 6 DiagnóStico VirolóGico
 
Transpar Tema1a
Transpar Tema1aTranspar Tema1a
Transpar Tema1a
 
Alberto Perojo Multi Core
Alberto Perojo  Multi CoreAlberto Perojo  Multi Core
Alberto Perojo Multi Core
 
G P Un Vidia
G P Un VidiaG P Un Vidia
G P Un Vidia
 
06 Voraces 3en1
06 Voraces 3en106 Voraces 3en1
06 Voraces 3en1
 
Supercomputadores
SupercomputadoresSupercomputadores
Supercomputadores
 
Libro Matlab Web
Libro Matlab WebLibro Matlab Web
Libro Matlab Web
 
Alberto Perojo Multi Core
Alberto Perojo  Multi CoreAlberto Perojo  Multi Core
Alberto Perojo Multi Core
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

G P Un Vidia

  • 1. Alberto Perojo Parás Tecnología GPU para las tarjetas gráficas Con este trabajo se pretende dar unas nociones básicas sobre la tecnología GPU usada en las tarjetas gráficas y profundizar en la última arquitectura propuesta por nVidia para los modelos GTX200. El concepto GPU es un acrónimo utilizado para abreviar Graphics Processing Unit, que significa "Unidad de Procesado de Gráficos". Una GPU es un procesador dedicado exclusivamente al procesamiento de gráficos, para aligerar la carga de trabajo del procesador central en aplicaciones como los videojuegos y o aplicaciones 3D interactivas. De esta forma, mientras gran parte de lo relacionado con los gráficos se procesa en la GPU, la CPU puede dedicarse a otro tipo de cálculos (como la inteligencia artificial o los cálculos mecánicos en el caso de los videojuegos). Diferencias con la CPU Una GPU implementa ciertas operaciones gráficas llamadas primitivas optimizadas para el procesamiento gráfico. Una de las primitivas más comunes para el procesamiento gráfico en 3D es el antialiasing, que suaviza los bordes de las figuras para darles un aspecto más realista. Adicionalmente existen primitivas para dibujar rectángulos, triángulos, círculos y arcos. Las GPU actualmente disponen de gran cantidad de primitivas, buscando mayor realismo en los efectos. Si bien en un computador genérico no es posible reemplazar la CPU por una GPU, hoy en día las GPU son muy potentes y pueden incluso superar la frecuencia de reloj de una CPU antigua (más de 500MHz). Pero la potencia de las GPU y su dramático ritmo de desarrollo reciente se deben a dos factores diferentes. El primer factor es la alta especialización de las GPU, ya que al estar pensadas para desarrollar una sola tarea, es posible dedicar más silicio en su diseño para llevar a cabo esa tarea más eficientemente. Por ejemplo, las GPU actuales están optimizadas para cálculo con valores en coma flotante, predominantes en los gráficos 3D. Por otro lado, muchas aplicaciones gráficas conllevan un alto grado de paralelismo inherente, al ser sus unidades fundamentales de cálculo (vértices y píxeles) completamente independientes. Por tanto, es una buena estrategia usar la fuerza bruta en las GPU para completar más calculos en el mismo tiempo. Los modelos actuales de GPU suelen tener una media docena de procesadores de vértices (que ejecutan vertex shaders), y hasta dos o tres veces más procesadores de fragmentos o píxeles (que ejecutan fragment shaders). De este modo, una frecuencia de reloj de unos 500-600MHz (el estándar hoy en día en las GPU de más potencia), muy baja en comparación con lo ofrecido por las CPU (3.8-4 GHz en los modelos más potentes[no necesariamente más eficientes]), se traduce en una potencia de cálculo mucho mayor gracias a su arquitectura en paralelo. Una de las mayores diferencias con la CPU estriba en su arquitectura. A diferencia del procesador central, que tiene una arquitectura Eckert-Mauchly, la GPU se basa en el Modelo Circulante. Este modelo facilita el procesamiento en paralelo, y la gran segmentación que posee la GPU para sus tareas. Arquitectura de la GPU Una GPU está altamente segmentada, lo que indica que posee gran cantidad de unidades funcionales. Estas unidades funcionales se pueden dividir principalmente en dos: aquéllas que procesan vértices, y aquéllas que procesan píxeles. Por tanto, se establecen el vértice y el píxel como las principales unidades que maneja la GPU. Adicionalmente, y no con menos importancia, se encuentra la memoria. Ésta destaca por su rapidez, y va a jugar un papel relevante a la hora de almacenar los resultados intermedios de las operaciones y las texturas que se utilicen. Inicialmente, a la GPU le llega la información de la CPU en forma de vértices. El primer tratamiento que reciben estos vértices se realiza en el vertex shader. Aquí se realizan transformaciones como la rotación o el movimiento de las figuras. Tras esto, se define la parte de estos vértices que se va a ver (clipping), y los vértices se transforman en píxeles mediante el proceso de rasterización. Estas etapas no poseen una carga relevante para la GPU. Donde sí se encuentra el principal cuello de botella del chip gráfico es en el siguiente paso: el pixel shader. Aquí se realizan las transformaciones referentes a los píxeles, tales como la aplicación de texturas. Cuando se ha realizado todo esto, y antes de almacenar los píxeles en la caché, se aplican algunos efectos como el antialiasing, blending y el efecto niebla. Otras unidades funcionales llamadas ROP toman la información guardada en la caché y preparan los píxeles para su visualización. También pueden encargarse de aplicar algunos efectos. Tras esto, se almacena la salida en el frame buffer. Ahora hay dos opciones: o tomar directamente estos píxeles para su representación en un monitor digital, o generar una señal analógica a partir de ellos, para monitores analógicos. Si es este último caso, han de pasar por un DAC, Digital-Analog Converter, para ser finalmente mostrados en pantalla.
  • 2. Programación de la GPU Al inicio, la programación de la GPU se realizaba con llamadas a servicios de interrupción de la BIOS. Tras esto, la programación de la GPU se empezó a hacer en el lenguaje ensamblador específico a cada modelo. Posteriormente, se situó un nivel más entre el hardware y el software, diseñando las API (Application Program Interface), que proporcionaban un lenguaje más homogéneo para los modelos existentes en el mercado. El primer API usado ampliamente fue estándar abierto OpenGL (Open Graphics Language), tras el cuál Microsoft desarrolló DirectX. Tras el desarrollo de APIs, se decidió crear un lenguaje más natural y cercano al programador, es decir, desarrollar un lenguajes de alto nivel para gráficos. Por ello, de OpenGL y DirectX surgieron estas propuestas. El lenguaje estándar de alto nivel, asociado a la biblioteca OpenGL es el "OpenGL Shading Language", GLSL, implementado en principio por todos los fabricantes. La empresa californiana NVidia creó un lenguage propietario llamado Cg (del inglés, "C for graphics"), con mejores resultados que GLSL en las pruebas de eficiencia. En colaboración con NVidia, Microsoft desarrolló su "High Level Shading Language", HLSL, prácticamente idéntico a Cg, pero con ciertas incompatibilidades menores. Última GPU de nVidia La última arquitectura desarrollada por nVidia es la GT200. Tamaño y consecuencias El GPU GT200 es grande, extremadamente grande y esto combinado con el hecho de que la arquitectura de GPUs es más compleja que la de un CPU, tiene una cantidad importante de consecuencias. A nVIDIA le ha costado controlar el tamaño de sus GPUs y sus desarrollos les están comenzando a salir un poco de las manos. La razón de esto, es que mientras más grande sea el tamaño del cuadrado de silicio, se pueden obtener menos chips por cada oblea (wafer) que se procesa. Esto es obvio, pues la oblea no ha crecido en diámetro - 300mm - en muchos años. Si para el G80 cada disco tenía 121 GPUs de 484mm², siendo que el tamaño del GT200 es ahora de 576mm², la cantidad de ellos se reduce aproximadamente a 100. Junto con esto, la cantidad de chips sin defectos o en otras palabras, su rendimiento productivo (yields) disminuye debido a que las impurezas ahora amenazan a la superficie de un circuito impreso cuya área es mayor. Por ende, la cantidad de GPUs buenos se reduce en una buena cantidad con respecto a los del G80 trayendo como resultando que el costo del GT200 sea significativamente más alto para la empresa. Adicionalmente, la cantidad de transistores en cada procesador gráfico ha aumentado a un ritmo considerablemente más rápido que el de los CPUs. Considerando que es Intel la empresa que utiliza los procesos de manufactura más modernos del mundo y no NVIDIA, se puede ver como esta última esta estresando mucho más la tecnología a su límite. Esto se demuestra de forma muy clara cuando se compara el consumo en watts de los más recientes desarrollos de ambas empresas: mientras el Intel Core 2 Extreme QX9770 consume - según documentos de la empresa - 150w, el GT200 disipa 236w, un 57% más aproximadamente. No solo esto, debido a que los transistores del GPU son en su gran mayoría unidades de procesamiento a comparación del caso de Intel en donde la mayoría se emplean en memoria cache, la cantidad de ruido eléctrico generado dentro de cada GPU está haciendo que cada vez sea más difícil que ellos logren frecuencias más elevadas. Las consecuencias de lo anterior hacen fácil preveer que NVIDIA está llegando al límite de lo que pueden hacer en un solo chip para su siguiente generación de GPUs, tanto por factibilidad como por costos.
  • 3. Arquitectura GTX200 1. Manejo de hilos (threads) En la arquitectura unificada de NVIDIA no existen unidades específicas que cumplan las funciones de por ejemplo, pixel shaders o vertex shaders o cualquier otro conjunto de instrucciones. La forma como se procesan estas instrucciones es por medio de unidades que asignan hilos atadas a su característica y son enviados a los streaming processors a ser procesados. Por ejemplo, si se va a procesar un programa de pixel shader, la unidad de pixel shader crea los hilos marcados con esa función para ser procesados posteriormente. Las diferencias de esta unidad entre su modo computacional y su modo gráfico se verán en el siguiente apartado. 2. Area de procesamiento principal Un resumen de lo que hace es el siguiente: en esta área del GPU se encuentran los procesadores de hilo (streaming processors o SP) que son agrupados de 8 en 8 en multiprocesdores de flujo (streaming multiprocessors o SM) los cuales incluyen elementos adicionales dependiendo de si se usa el chip en modo computacional o gráfico. Finalmente, los SMs están agrupados de a 3 en grupos de procesamiento de hilo (thread processing clusters o TPC) que adicionalmente incluyen las unidades de texturización y el cache L1 - de primer nivel - compartido. Teniendo en cuenta que hay 10 TPCs en el GPU podemos llegar a esta sencilla ecuación: 10x3x8= 240. Este número representa la cantidad de SPs (núcleos de procesamiento del GPU) que posee la arquitectura, un salto considerable con respecto a los 128 SPs (8 TPC x 2 SM x 8 SP) del G80. 3. ROP Para el subsistema de ROPs (encargados de hacer el procesamiento final de los pixeles) el GT200 adiciona dos particiones más de ellas con lo cual pasa a tener 8 ROPS a comparación de 6, lo que le permite procesar hasta 32 píxeles por reloj. Esto implica que técnicamente el GT200 debería tener un rendimiento superior al aplicar filtros (de alisado de lineas y anisotrópico) en comparación a G80. En la generación anterior, cada ROP estaba conectado a un canal de memoria de 64-bit, en esta generación se da el mismo caso, por lo que ahora el bus de memoria pasó de tener 384 bits a tener 512-bit. Aparte de algunas otras optimizaciones menores para ciertos tipos de píxeles, los ROPs se mantienen estructuralmente iguales a los anteriores, lo cual implica que todos los modos de Anti-Aliasing / Alisado (MSAA, SSAA, AA de transparencia adaptiva y CSAA) que existían en la generación anterior, son soportados por el nuevo GPU, pero no se agregan nuevos modos.
  • 4. 4. Canales de memoria Es interesante que NVIDIA habla de que se optimizaron las rutas críticas de memoria para que esta pueda operar a una velocidad máxima de 1,2 GHz GDDR3, algo que probablemente viene del G92 pues la velocidad de las memorias en la GeForce 8800 GTX era de 900MHz, que luego subieron a 1080MHz con la GeForce 8800 Ultra y posteriormente a 1100MHz con la GeForce 9800 GTX. Sin embargo, esto también quiere decir que el controlador de memoria está al límite de sus capacidades para GDDR3. NVIDIA cuando tuvo que decidir sobre que tecnología de memorias tendría para su siguiente GPU, decidió ser conservador manteniendo el uso de GDDR3, la cual a estas alturas está ampliamente disponible y por ende es más económica, confiando en que el mayor ancho de banda surgiría por agregar un par de controladores de memoria más en vez de depender del aumento de frecuencia de la memoria. La decisión tomada por la empresa es muy razonable pues disminuye los costos de investigación y desarrollo de un nuevo controlador de memoria, mientras se toman una mayor cantidad de tiempo en hacer las pruebas correspondientes para desarrollarlo y optimizarlo al mismo tiempo que disminuyen los costos por tarjeta de video armada. También, NVIDIA hizo algunos ajustes en la razón o ratio de ancho de banda entre las texturas y la memoria para que esté más acorde a las cargas de trabajo actuales y futuras y así mantener a las unidades de textura siempre trabajando pues siempre los datos están disponibles. Por otra parte, se aumentaron en 6 veces la cantidad de estructuras internas para los buffers de salida lo que hace que las operaciones de los shaders de geometría y las operaciones stream out (útiles para modo cómputo) sean considerablemente más rápidas que las del G80 y un poco más rápidas que las de la Radeon HD 3870 X2. Esto es destacable, porque en las pruebas de rendimiento que utilizaban shaders de geometría eran consistentemente más lentos los GPUs de NVIDIA. Siendo que la arquitectura del G80 tenía un rendimiento superior en todas las pruebas de rendimiento vistas en benchmarks y análisis (en donde no se emplean mucho los shaders de geometría pues estos solo fueron recién introducidos con DirectX 10 y las arquitecturas compatibles de NVIDIA y ATI) la empresa se aseguro de corregir una de las pocas cosas en la cual estaba en franca desventaja con la competencia. El producto El GT200 viene en dos versiones, el modelo GTX280 y el modelo GTX260. Al igual que en la generación pasada, la diferencia entre cada modelo radica en las velocidades de reloj, en que se deshabilitan dos TCPs completamente, lo que implica que disminuye el número de shaders y se deshabilita un ROP.