Por qué gpu solo no puede soportar la carga de gráficos; ¿Por qué hay necesidad de rendimiento de la CPU? [duplicar]


0

Posible duplicado:
¿Por qué seguimos usando CPU en lugar de GPU?

A pesar de tener una GPU de alta gama, siempre se requiere una CPU de alta gama similar para jugar juegos de alta gama.

Sin una CPU igual o equivalente, ¿la GPU no se parece a nada?

Por qué para jugar una CPU debería ser una necesidad, ya que se trata de cálculos. Una GPU es la que se ocupa de todos los gráficos en el juego.

Entonces, la GPU no debería depender de la CPU para jugar.


44
Dibujar imágenes bonitas no es lo único que hace un programa de juego.
EBGreen

En cualquier caso, los gráficos son cálculos.
terdon el

Respuestas:


2

La GPU es un gran motor para pequeñas operaciones altamente predecibles, del tipo de las cuales se requieren por miles para pintar una sola imagen en un lienzo (búfer de memoria) para que se muestre en una pantalla.

La GPU puede realizar cientos de operaciones en un solo búfer de memoria simultáneamente usando lo que se conoce como programas de sombreado, esto se usa para hacer que las imágenes sean bonitas, agregando características que hacen que los juegos modernos se vean tan impresionantes. El problema es que debido a su requerimiento de alta velocidad y rendimiento de datos, estos programas necesitan ser cambiados continuamente, apuntados a nuevos datos y generalmente administrados.

Esta es solo una de las cosas que hace una CPU para los juegos modernos. La tarjeta gráfica lo hace ver bonito, mientras que la CPU le dice cómo hacerlo bonito. Muchos juegos de estrategia también requieren el seguimiento en tiempo real de miles de objetos en el juego y lo que esos objetos están haciendo en un momento dado.

Por ejemplo, te daré una idea usando un juego, Supreme Commander.

Tienes una sola unidad. Suficientemente simple.

Esa unidad puede moverse, en cuyo caso debe realizar un seguimiento de los vectores de dirección y velocidad para ese objeto.

La unidad tiene una pistola, en cuyo caso debe rastrear si está disparando o no.

El arma dispara balas, por cada bala disparada el juego tiene que crear un objeto que detalle la dirección y la velocidad de esa bala, o al menos crear una línea virtual desde el arma y luego probar para ver si otros objetos en el juego se cruzan con esa línea.

Digamos que no es un arma simple, sino que es algo así como un lanzador balístico, necesita una simulación balística más realista. La bala necesita ser rastreada mientras cruza el mapa, teniendo su velocidad y altura constantemente simuladas por un modelo balístico (cercano) del mundo real. Eso tendrá que hacerse cientos de veces por segundo para que el proyectil se vea bien.

Todo esto es al mismo tiempo que decirle a la tarjeta gráfica qué pintar donde más le importe.

El proyectil necesita ser probado constantemente para ver si está ocupando el mismo espacio que una unidad enemiga, en cuyo caso tiene un impacto, de lo contrario continúe.

Si ocurre un golpe, entonces debes calcular qué sucede, ¿la unidad sufre daño o muere? En cualquier caso, ¿debemos mostrarle al usuario algún tipo de animación "explosiva"? Trozos de metralla volando, ese tipo de cosas ... En cuyo caso, cada uno de esos pedazos de metralla necesita ser rastreado y animado y eventualmente destruido para que ya no necesite simularse.

Ahora imagine que cada jugador puede tener hasta 500 unidades, todas potencialmente capaces de moverse, disparar múltiples armas o lanzadores de misiles, para tener que probar si hay enemigos cercanos para disparar en primer lugar. Potencialmente miles de interacciones de balas, rutas de misiles y proyectiles balísticos que deben crearse, rastrearse, probarse y tener acciones visibles que sucedan como resultado. Pon a 8 jugadores en ese juego y rápidamente tendrás varios miles de unidades con decenas de miles de proyectiles en juego, todos con "objetos" de programación asociados que deben crearse, rastrearse y destruirse durante la vida útil del objeto.

Esa es una cantidad enorme de cálculos que se necesitan para mostrar todos y cada uno de los cuadros de gráficos, y eso es antes de decirle a la tarjeta gráfica lo que puede mostrar.

En muchos juegos puedes (un poco) ignorar cualquier cosa que esté fuera de la pantalla o fuera del área en ese momento, pero no es así con un juego de estrategia en tiempo real, cada unidad puede moverse, disparar y morir independientemente de lo que estás viendo. momento. Cada unidad también tiene una "IA" incorporada para indicarle cómo debe moverse, cómo evitar obstáculos, cómo llegar al enemigo, cuándo debe disparar, cómo puede disparar.

Estas cosas no se prestan al tipo de cosas que una tarjeta gráfica podría hacer fácilmente. Las tarjetas gráficas funcionan bien ejecutando cientos de copias de un solo programa pequeño contra grandes bloques de datos y no funcionan demasiado bien con el tipo de cálculos grandes y largos que cada paso de calcular el estado de una sola unidad está haciendo. Claro que podría manejar los proyectiles balísticos y cosas así, pero por cada bit que rastrea de esa manera pierde energía que podría usarse para mostrar imágenes.

Las CPU son bastante potentes y pueden manejar programas de ramificación mucho más complejos que una tarjeta gráfica, y son mucho más adecuadas para la administración a gran escala de un sistema general, mientras que las tarjetas gráficas son buenas para el crujido de números y mostrar imágenes bonitas.


4

La CPU hace mucho para jugar en realidad. Voy a enumerar algunas cosas que puedo pensar en la parte superior de mi cabeza.

  • La CPU debe ser lo suficientemente rápida como para manejar el rendimiento de su GPU. Por ejemplo, su CPU debe ser lo suficientemente rápida como para manejar el tráfico que va a su GPU. Es por eso que los jugadores overclockean sus CPU. Su tarjeta de video puede ser embotellada por su CPU, esta es una gran posibilidad, y la razón por la que desea comprar CPU de gama alta al comprar GPU de gama alta. Ejemplo:En el pasado tuve un Phenom II x4 955 y un GTX275. (Ambos de mayor nivel en ese momento) Estaba probando mi cuello de botella en un punto de referencia de Crysis. Para probar el cuello de botella, simplemente cambie la resolución a la que marca su banco. Si está obteniendo el mismo FPS a 1920x1080, como a 1024x768, entonces tiene el cuello de botella. Teóricamente, tu FPS debería disparar cohetes aéreos a una resolución tan baja. Este fue el caso para mí con mi Phenom II, tan pronto como mi CPU se aceleró más allá de 3.6GHz, pude ver un ENORME aumento en FPS al marcar en el banco en 1024x768.
  • Inteligencia artificial (IA): tu CPU maneja la IA y realiza todo el procesamiento técnico detrás de cómo actúan tus unidades que no son jugadores en el juego. Para los juegos modernos, esta no es una tarea pequeña para su CPU.
  • Physics Engine: Sí, si tiene Nvidia, puede ejecutar PhysX en su tarjeta, sin embargo, de forma predeterminada, se ejecuta desde su CPU. Una vez más, la suma de números para tu juego.

Debo decir que mi primer punto es la razón principal por la que su CPU se está utilizando en los juegos. Está transfiriendo esos datos a su GPU, y tiene que ser lo suficientemente rápido para mantenerse al día.

Espero que esto ayude.


1

El trabajo de la GPU es representar (es decir, "dibujar") objetos en un framebuffer que eventualmente se transmite a la pantalla.

El trabajo de la CPU es decirle a la GPU qué renderizar y dónde.

Representar la escena es solo una pequeña parte del juego (no debería decir "pequeño" pero definitivamente no todo lo que es un juego). Necesita una representación interna de los objetos, lo que están haciendo y lo que sucede cuando interactúan. Incluso si no aparecen en la pantalla y se dibujan. Los cálculos son necesarios para la mayor parte de eso y algunas GPU tienen aceleradores "físicos" que pueden ayudar. Sin embargo, la toma de decisiones (es decir, la ramificación) también es necesaria, y eso es algo en lo que las GPU no son buenas, programas de propósito general que se ramifican por todas partes.


0

Realmente no se puede comparar la GPU con la CPU de esa manera. Es como decir que solo necesitas la parte de tu cerebro que descifra la imagen enviada desde tus ojos. La GPU hace un trabajo increíble al calcular números de coma flotante, pero hay mucho más detrás de escena que solo calcular números. La CPU todavía está ejecutando el código necesario para alimentar a la GPU con datos para procesar.

Aquí hay un buen artículo sobre el tema. http://www.cs.virginia.edu/kim/docs/ispass11.pdf

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.