LA CARRERA DE LOS BITS Y MEGAHERCIOS. (v2)

Por David Senabre Albujer . Julio de 2006.


LA IDEA DE POTENCIA.

Con este documento planeo empezar una serie de breves artículos sobre el rendimiento de los sistemas en general. Cuando yo era pequeño, digamos 9 años, no tenía la noción de “potencia” en mi mente, respecto a una máquina. No sabía que había máquinas más potentes o rápidas que otras, videos o televisiones mejores que otros, o incluso tostadoras. Pero vivimos en un mundo tecnológico donde hay muchas versiones de cada aparato, unos mejores que otros, y a precios diferentes.

Tendría unos 5 o 6 años, cuando conocí los videojuegos, gracias a un Spectrum+ que mi padre compró años antes con mi tío. Para cuando yo le eché el guante, lo habían dejado completamente de lado, así que digamos que me lo agencié. Tenía un par de juegos en cintas, y en aquella época me parecían muy entretenidos. Pero poco después algunos amigos míos se compraron una videoconsola, un término nuevo para mí. La llamaban Nintendo , y no iba con cintas, ni tenía teclado. Yo quería una. Y la pedí, aunque aún tardarían en comprármela (ya se sabe, padres que lo veían inútil, y pensaban que era tirar el dinero). Como estaba pesado, me compraron una Atari 2600 clónica con cientos de juegos. Eran cutres, pero a mí me seguían pareciendo muy entretenidos. Aunque cada vez que veía la NES me daba cuenta de que en realidad sus juegos eran mejores. Había visto la Master System en casa de un amigo, y el Alex Kidd era sin duda un juego muy   divertido.

Creo que así empecé a tener la idea de superioridad técnica en mi cabeza. Cuando me compraron la NES, yo estaba encantado. La había pedido durante más de un año, y tuve la “mala” suerte de que me la regalaran un año antes de salir la Super Nintendo . Entonces el concepto de superioridad quedó claro como el agua. Por todas partes se oía

hablar de la potencia de las consolas, de la calidad de cada juego, de la rivalidad, y la lucha por ser el mejor. Sobretodo oía hablar de “bits”, respecto a las consolas, y de “ megabits ”, respecto a los juegos,

Me daba la sensación de que una consola de más bits, y un juego de más megabits , eran siempre mejor. Pero el tema del rendimiento no es tan sencillo.

Ahora he crecido, y tengo una considerable formación en software y hardware, que me han permitido entender la “potencia”. Y mi primer objetivo será discutir y explicar un poco en detalle, de qué depende.

Empezaré tratando temas muy básicos, y discutiendo las falacias más habituales, para ir subiendo la dificultad, y acabar hablando del rendimiento de la XBOX 360 y la PS3, pasando por una comparativa de rendimiento de un PC y una consola, o cómo puede ser que con sólo 300MHz, la PS2 pueda mover todos lo polígonos que mueve, o cómo la NES con una CPU de menos de 2MHz puede hacer “algo”. :-)

En principio cualquier con mínimos de conocimientos de informática, puede leer este artículo, así que ya sabes. Las entregas que tengo pensadas son:

1ª parte (esta): La carrera de los bits y megahercios.

2ª parte: Una consola y un PC desde la perspectiva del juego. Ancho de banda y cálculos SIMD, la clave de las 3D.

3ª parte: Comparativa de rendimiento de la Super Nintendo y la Megadrive . ¿Cuál era más potente?

4ª parte: La Xbox 360 y la PS3. ¿Cómo hacen para “comer” polígonos?


LA CONFUSIÓN DE LOS MEGAHERCIOS.

Sobretodo desde la proliferación de los PCs , la gente, que cada vez más disponía de ordenador, parecía asociar MHz con velocidad. Y esto es cierto y falso.

Gran parte del procesamiento en un ordenador lo lleva a cabo la CPU. Si ésta es más rápida, más veloz se ejecutarán los programas. La CPU realiza todas los procesos, en pequeños pasos. Divide el trabajo en diminutas acciones elementales, y las ejecuta una tras otra muy rápidamente. Y cada una de ellas requiere que los circuitos internos de la CPU cambien varias veces de estado. Estos cambios de estado no pueden ocurrir en cualquier momento. Están sincronizados.

  Los MHz a los que trabaja una CPU, indica los millones de cambios de estado que puede haber en ella, cada segundo. 1 MHz quiere decir, 1 millón de cambios. 10Mhz, 10 millones. En este sentido, más MHz sí indica mayor velocidad de trabajo.

Pero una CPU de más MHz sólo es más rápida que otra de menos MHz si se trata del mismo tipo de CPU. Esto es debido a que las CPUs son circuitos muy complejos, que no están construidos de la misma forma, y por tanto cada una hace las cosas a su manera, de forma distinta, en distintos pasos, pudiendo darse el caso de que a menos MHz , sea más eficiente.

Aunque 2 personas hagan 20 viajes, la cantidad de cosas que pueden llevar puede no ser la misma. Dependerá de la fuerza de cada uno, de su resistencia, su estatura, etc ...

Un ejemplo son las CPUs de la NES (1.7MHz) y la Master system (3.50MHz). Parecería que la Master System es el doble de rápida, pero en la práctica el rendimiento de la CPU es similar.

Así que:

Falacia 1:

Más MHz necesariamente más rendimiento. FALSO.

Nota técnica:

La CPU sabe a cuantos MHz funcionar, porque los cambios internos de estado están sincronizados a una señal de reloj. Una señal de reloj alterna continuamente su valor, de 0 a 1. La CPU realiza uno de sus cambios internos sólo cuando el reloj pasa por cierto momento, por ejemplo, cuando pasa de 0 a 1.

Cada uno de las acciones elementales de una CPU se llama instrucción, y estas instrucciones son las que se ejecutan a través de varios cambios de estado. Las instrucciones no son más que una secuencia de 1 y 0, que indican a la CPU una operación particular.


LA CONFUSIÓN DE LOS BITS

Los bits de una CPU hacen referencia al número de bits que puede manejar al a vez. Esta característica sí que suele ser bastante representativa del rendimiento. Una CPU del doble de bits hace todo el doble de rápido que otra que sea idéntica pero de la mitad de bits. Sería como comparar la cantidad de cosas que pueden llevar dos personas, una de las cuales tiene 4 brazos.

Aunque casi siempre, y como norma general, una CPU de 64 bits será más potente que otra de 32 bits, esto no es una regla incondicional.

Por ejemplo, una CPU muy optimizada de 8 bits que funcione a 20MHz, podría fácilmente sobrepasar a una CPU de 16 bits no tan bien diseñada, y corriendo a 7MHz.

Pero hay otra fuente de confusiones al respecto cuando se oye una referencia al número de bits de una consola. ¿Bits de qué?

Cuando la guerra de las 16 bits entre la Super Nintendo y la Megadrive , se hacía mucha referencia a los bits de las nuevas consolas que aparecían, como la Jaguar, la Atari Lynx , la 32X, el CDi , la AmigaCD32 , y un largo etc.

Era equivalente a la comparación que se suele hacer en los MHz de dos PCs , donde los usuarios poco experimentados buscan habitualmente más MHz .

Pero cuando se dice que una consola es de 16 bits, no siempre se está hablando de lo mismo. Puede ser que hable de los bits de la CPU, como he dicho, o de los bits del bus de datos, o de los bits del procesador gráfico.

El bus de datos es el conjunto de líneas que tiene la CPU a su disposición para mandar y recibir datos. Y un bus de 16 bits indica que puede enviar y recibir 16 bits a la vez por el bus.

Los bits de un procesador gráfico indican lo mismo que los bits de una CPU; el número de bits que puede manejar simultáneamente, para hacer cálculos.

Ejemplo:

...................................................................................................................

Un PC típico, Athlon XP, con una tarjeta gráfica Radeon 9600, tendría;

CPU : 32 bits

Bus de datos : 64 bits

Procesador gráfico : 128 bits.

Por tanto, la CPU puede traer 64 bits de golpe, pero si quiere procesarlos, tendrá que operar primero sobre 32 bits, y luego sobre los otros 32 bits. De momento hablo de operaciones normales, con carácter ilustrativo. Más adelante veremos que realmente sí puede operar sobre los 64 bits a la vez, haciendo uso de cálculo vectorial. ¿Qué? MMX, 3DNow!, SSE, etc. Eso. :-)

Si no sabes de que va esto, no te preocupes, hablaré de ello cuando llegué el momento. Es la clave del alto rendimiento de cualquier consola potente 3D, como la Dreamcast , la PS2, la XBOX, la Gamecube , etc ...

...................................................................................................................

La Super Nintendo y la Megadrive , son consideradas de 16 bits. En este caso se están comparando los bits de la CPU. Pero hay diferencias en el bus de datos. Mientras la Megadrive es una máquina totalmente 16 bits (que además está optimizada para manejar 32 bits), el bus de datos de la SNES es de sólo 8 bits. Luego en este caso, la SNES tiene que leer dos veces la memoria para llevar a la CPU un valor de 16 bits sobre el que operar. Esto, unido a que la CPU de la Megadrive va al doble de MHz , podría hacer pensar que en cuanto rendimiento, la consola de SEGA se come a la de Nintendo . Muy pronto veremos que esto no es tan cierto, y explicaré el por qué.

Pero antes debo detenerme a comentar la falacia más típica en mi opinión, y que tiene a muchos usuarios poco informados debatiendo sobre el color del éter. Toda esta historia empezó cuando se acusó la designación de “generación de los 32 bits”, “generación de los 64 bits”, “generación de los 128 bits”,... Deberíamos ir ya por la de los 256, pero vamos a pararnos un momento a ver esto, que es muy interesante.

En primer lugar, aquí ya estamos mezclando cosas. Estos bits YA no se refieren a lo mismo. Ya no están hablando de los bits de la CPU de la consola (excepto la de los 32 bits). La Nintendo 64 tiene una CPU de 64 bits aunque con un bus de datos reducido a 32. Pero ni la DreamCast es de 128 bits, ni siquiera la PS2, ni la XBOX, ni la Gamecube . Una CPU de 128 bits es algo monstruoso. Mucha gente no tiene la debida formación al respecto, como para darse cuenta de lo que significa que una CPU sea de 128 bits.

La generación de los 128 bits se refiere a los bits del procesador gráfico, respecto a la cantidad de bits con los que puede operar, haciendo uso de operaciones vectoriales. Un truco de marketing muy chulo, pero que no cuela. No se puede de repente cambiar lo que nosotros queremos decir con bits a mitad de la partida, y seguir comparando la potencia de consolas viejas, con las nuevas. Antes de las generación de los 32 bits, se solía hablar de la CPU, después, cuando el juego se vuelve eminentemente 3D, lo que implica una masiva cantidad de operaciones que realizar, se empieza a referirse a los bits que pueden ser manejados para cálculos relativos al procesador de video, o las operaciones vectoriales de la CPU, y vete a saber si a alguna otra cosa. En definitiva, hay que entender de qué estamos hablando.


El caso de la Dreamcast , un genial ejemplo.

La Dreamcast es una gran consola. Su único fallo fue ser la sucesora de la Saturn , y la saga 32X/ MegaCD . Pero bueno, no se puede todo.

Su CPU, la SH-4, de Hitachi , una CPU de 200MHz muy interesante, porque en función de lo que nos interese decir, es de 16 de 32, de 64 y de 128 bits. Toma ya. Está claro que habrá que explicar un poco esto.

...................................................................................................................

* En el sentido habitual, en el que he venido hablando, sería de 32 bits .

- ¿Por qué? Porque es capaz de operar con enteros de 32 bits. En este sentido, se puede comparar con la SNES y la Megadrive , que son de 16 bits, o la NES y la Master System , de 8 bits

...................................................................................................................

* El bus de datos del SH-4 es de 64 bits , como en un PC.

- ¿Por qué? Porque la CPU es capaz de mandar o recibir 64 bits simultánemanete. En este sentido, se puede comparar con la Megadrive , de 16 bits, y la SNES, la NES o la Master System , de 8 bits.

También es de 64 bits si nos referimos a la precisión de sus operaciones en punto flotante.

...................................................................................................................

* Pero podemos vender el SH-4 como un 128 bits si nos referimos a su bus interno para operaciones en coma flotante. Pero seguro que esto no nos lo especificaron al compararla con las 32 bits.

- ¿Por qué? Porque no les interesa :-)

- No ya, pero ¿por qué es de 128 bits? Porque los datos ya almacenados en el interior de la CPU, pueden transferirse a las unidades de punto flotante en bloques de 128 bits simultáneamente.

...................................................................................................................

Hablaremos más adelante del hardware de esta gran consola.

Luego


Falacia 2:

Más bits significa más potencia. FALSO.

Primeramente habrá que ver que se refieren al mismo aspecto de la máquina.

Y además hay que tener en cuenta que, si se refieren a lo mismo, aunque sea un buen indicativo de superioridad, podría no ser así.


Nota técnica:

Cuando antes dije que la Dreamcast puede mover 128 bits desde los datos ya almacenados en la CPU, a las unidades de punto flotante, quiero decir que estos datos ya fueron traídos de la memoria RAM, y están guardados en la caché de la CPU.

Dentro de los procesadores hay, principalmente 2 almacenes de información que se deban conocer. La caché interna y los registros internos de la CPU.

La caché es una memoria pequeña, en este caso de 24Kb, y mucho más rápida que la memoria RAM. En ella el procesador mantiene una porción del código que está ejecutando, y de los datos con los que está trabajando, de manera que toda la información que requiera de la memoria RAM, si está en la caché, la tomará de allí, evitando tener que esperar a que la memoria RAM se la envíe.

Los registros internos son un conjunto de diminutos almacenes de datos, aún más veloces, donde se puede guardar un conjunto muy reducido de información, como operandos para los cálculos, resultados intermedios, etc. En definitiva, los datos con los que trabaja la CPU en ese instante. Normalmente el tamaño de los registros coincide con el ancho de palabra de la CPU, es decir, vulgarmente hablando, sus bits. En el caso del SH-4 de la Dreamcast , son 32 bits, luego en cada registro se puede guardar un valor de 32 bits, del rango de 0 a 4.294.967.296, o en otras palabras, puede almacenar un número que puede ir desde 0 a algo más de 4 mil millones (la mitad si es con signo, de -2 mil millones, hasta +2 mil millones).

Si un registro es más grande, permite manejar números enteros mayores, o números en punto flotante con mayor precisión. Una de las ventajas de un PC de 64 bits, como el Athlon 64, es que sus registros son de 64 bits, en lugar de 32 bits, como viene siendo desde el 386.

Por tanto, para unir un poco todo, el SH-4 de la Dreamcast puede:

Traer 64 bits de golpe desde memoria.

Almacenar valores de 32 bits en sus registros, uno cada vez.

Transferir desde su caché, 128 bits a la unidad de cálculo en punto flotante.

Como una consola 3D requiere un rendimiento en punto flotante muy elevado, es comprensible   mencionar estos 128 bits. Pero seguro que ahora está todo un poco más claro.


LA CONFUSIÓN DE LOS MEGABITS.

La última sección de esta primera parte la voy a dedicar a los megabits que se anunciaban antaño, cuando se hacía referencia a los cartuchos.

Básicamente todos estaréis familiarizados con los bytes . En un PC se mide cuanto ocupan las cosas por su tamaño en bytes , kilobytes y megabytes .

Cada byte está formado por 8 bits, y cada bit puede ser 1 o 0.

Ejemplo:

Los bits 00000000 forma el byte 0.

Los bits 00101110 forma el byte 46.

Los bits 10101100 forma el byte 172.

Los bits 11111111 forma el byte 255

 

Luego 8 bits nos permiten representar números del rango 0 a 255, o -127 a +128 si es con signo.

En la época de los cartuchos, el tamaño de los juegos se daba en bits, no en bytes , porque estaban almacenados en circuitos de memoria ROM, y es habitual usar los bits, ya que a priori se pueden usar en sistemas que no tienen porqué trabajar con 8 bits ( bytes ).

Esto quiere decir que si un cartucho de NES estaba anunciado como de 4Mbits, en realidad habrá que dividir por 8 para pasarlo a los bytes a los que normalmente estamos habituados.

4 / 8 = 0.5Mbytes

Medio megabyte , o 512Kbytes, como se quiera.

La mayoría de los juegos de SNES y Megadrive son de 16 Mbits (2Mbytes), y cuando salieron juegos como el Super Metroid (24Mbits), el Super Street Fighter II (32MBits) y posteriores Chrono Trigger (32MBits), Donkey Kong Country (32MBits), etc. A menudo se mencionaba esta cifra para impresionar. Para dejar claro que el juego era grande, y que merecía la pena.

Los juegos de la poderosa NeoGeo , o de los arcade , eran muy caros porque las ROMs eran enormes, para la época, alcanzando cientos de megabits . Pero la superioridad técnica de estas bestias de los 2D, se debía a muchos factores, como su CPU, sus coprocesadores, RAM, etc.

Que un juego ocupe más, significa eso. Que ocupa más. No tiene por qué estar relacionado con su calidad. Habitualmente, más Mbits se traduce en más espacio para los gráficos (y de más colores), niveles, música, etc. Pero no olvidemos que uno de los mejores plataformas de la historia (para mi gusto), el Super Mario World, es un juego de sólo 4Mbits. Un tamaño que tienen multitud de juegos de Master System y NES.


Falacia 3:

Más megabits implica mejor juego. FALSO

Más megabits implica más espacio, y por tanto posibilidad de aprovecharlo bien. Pero esa es otra historia :-)


CONCLUSIÓN TEMPORAL

Y con esto me despido hasta la próxima entrega, donde principalmente compararé al PC con las consolas, desde la perspectiva de la máquina, respecto a su modo de funcionar, y el diferente enfoque que tienen.

Analizaré el por qué una consola es adecuada para el juego, y cómo es posible que una Dreamcast , con una CPU de 200MHz, 16Mb de RAM, y 8Mb de video, pueda correr juegos de forma fluida, que habrían requerido de un PC con al menos un K6-2 a 400MHz, 64Mb de RAM, y una aceleradora gráfica de 16Mb, que por supuesto saldría mucho más caro.

Espero que esta primera parte os haya parecido interesante. :-)

Hasta la próxima !