› Foros › Retro y descatalogado › Consolas clásicas
zarkon escribió:Aquí aparece una pequeña comparación:
http://westerndesigncenter.com/wdc/AN-0 ... risons.cfm
magno escribió:Estaría interesante tener una SNES en una FPGA y poder cambiar el microprocesador 65816 por un 68000 a ver cómo se comportaba. Claro que eso implicaría tener el código fuente de algún juego accesible para compilarlo con el 68000...
Sexy MotherFucker escribió:@titorino sí, a diferentes frecuencias, pero en este hilo harías mejor en dirigir tus dudas hacia gente como magno, gasega, o wwendigo, que son los que tienen experiencia de primera mano con el M68k.
Por la noche opino, muy didáctico e interesante todo lo expuesto.
Sexy MotherFucker escribió:@wwwendigo @gasega68k @magno , os invoco a este hilo para despejar algunas dudas y enterrar ciertos retro-mitos aprovechando que sois personas con experiencia y conocimiento sobre estos dos procesadores, ya que el seguir repitiendo dogmas fanboys desde la ignorancia no nos hace ningún bien a ciertas edades, ni al foro en general.
He querido debatir este tema en un hilo aparte para alejarnos del tóxico contexto SNES vs MD, dejando a un lado el ambiente de «patio de colegio», y estudiar a estos procesadores desde un punto de vista genérico como micros dentro del contexto de la época en que eran usados masivamente por muchos dispositivos. A vosotros os pido ante todo HONESTIDAD, y que no os dejéis llevar por animadversiones o preferencias personales.
Si bien he leído mucho sobre ambos chips, y debatido por épocas en foros de retroinformática, no voy a extenderme mucho; simplemente enumeraré las afirmaciones que desde mi (aún) básico conocimiento entiendo que son indiscutibles, y a partir de ahí vosotros expandís, corregís, o respondéis en la medida de lo que queráis/podáis.
Vamos al lío.
MOTOROLA-68.000:
Ventajas
- Lenguaje Ensamblador amigable. Todos los programadores con los que he hablado del M68k, entre ellos David Senabre Albujer (creador de los reportajes «La Carrera de los Bit y los Mhz») me han acabado diciendo lo mismo; el ensamblador del 68000 es muy cómodo, fiable, y relativamente fácil de pulir código a bajo nivel en comparación a otros más complicados, hubo un tipo en un foro anglosajón que lo describió como; «un buen lugar en el que estar a la hora de programar».
- No penaliza demasiado en C, por lo que se consiguen resultados aceptablemente óptimos con este lenguaje.
- Tiene un juego de instrucciones muy completo teniendo en cuenta su antiguedad, lo que lo hacía versátil y cómodo, además de ser compatible con sistemas operativos más modernos como Linux.
- Tiene un bus externo de 16 bits, lo cual hace que pueda llevar desde una memoria hasta la cpu valores de 16 bits con los que operar en un solo viaje. Entiendo que también lo vuelve más práctico a la hora de acoplarse a placas de la época.
- Sus registros de 32 bits son útiles para... ¿Cargas de trabajo muy pesadas?
- Las operaciones de punto fijo la hacen apta para optener resultados decentes en materia poligonal a una buena frecuencia, mismamente me parece loable lo que consiguió Gasega en su demo de StarFox usando un M68k a unos irrisorios 7,67 Mhz. Ya a 16 mhz, el ordenador Sharp X-68.000 consigue esto en videojuegos como Geograph Seal:
https://youtu.be/pNYLREOG52k
Ahí ya vemos colisiones, una velocidad de movimiento notable, cierta IA enemiga, y físicas; aunque ni idea de hasta qué punto tiene que ver el rendimiento vectorial con el sistema gráfico del Sharp.
DESVENTAJAS
- Sufre de una latencia horrible, es unànime donde trate de informarme. Tarda hasta 4 ciclos externos (32 mhz) en operar externamente; ¿Esto es así con cualquier tipo de memorias o bus externo? Internamente también he leído que necesita muchos ciclos para ejecutar multiplicaciones y divisiones, mismamente Fonzie (programador de Paprium) dijo en una entrevista que el 68.000 que monta la Megadrive era extremadamente lento (7,67 Mhz) para aprovechar esas instrucciones pragmáticamente, concretamente dijo; «olvidaos de utilizar la multiplicación mejor». ¿Estáis de acuerdo con él, consideráis que en un M68k a tan baja frecuencia no es conveniente usar m/d? ¿A qué velocidad creéis que debe estar clockeado para que esas instrucciones se ejecuten con la ligereza y solvencia adecuadas? ¿Qué se supone que puede hacer una MD con multis/divs; scaling, rotaciones por software, qué? Tened presente que Fonzie programa principalmente en C, aunque toca el ASM cuando lo ve conveniente.
- Por lo visto es un poco rígida para las microinterrupciones y no sé qué más. Tengo entendido que 68010 se lanzó para subsanar parcialmente algunas de estas taras, consiguiendo un 10% más de rendimiento que su predecesor a la misma frecuencia.
Pregunta; ¿Por qué en vuestra opinión fué el procesador de 16 bits más célebre, popular, y utilizado?
- Lo eligieron ATARI, AMIGA, o SHARP, para montar sus ordenadores personales de 16 bits. Y APPLE creo recordar que también lo incluyó en algún modelo.
- SEGA los incluyó en todas sus recreativas de 16 bits (hasta 2 y 3 micros para las especializadas en scaling), también en la placas de 32 bits como la STV, y en sistemas domésticos como la Megadrive, el Mega CD, o la propia Saturn.
- SNK y CAPCOM coronaron sus placas de 16 bits más potentes con Motorolas a diversas frecuencias; amén de muchas otras compañías para construirse sus propios custom en arcades.
¿Hubos más usos destacables del procesador fuera de los videojuegos y la informática?
Ricoh 65816
Ventajas
- Tiene una latencia extremadamente baja, ya que sólo necesita 1 ciclo de espera (8 Mhz) para poder operar externamente, e igualmente necesita muy pocos ciclos para ejecutar eficientemente su reducido set de instrucciones.
- Por lo visto es muy flexible y rápida realizando microinterrupciones.
- Opera con instruciones de 8 bits muy eficientemente.
No conozco más ventajas.
Desventajas
- Tiene un bus de 8 bits, lo cual limita su rendimiento potencial a la mitad cuando tiene que llevar valores de 16 bits con los que operar, ya que tiene que leer dos veces la memoria.
- Poco rendimiento bajo C.
- Está capado de instrucciones.
No conozco más desventajas
Pregunta; ¿Por qué el micro de 16 bits menos empleado y más vilipendiado de su generación?
Sexy MotherFucker escribió:- Lenguaje Ensamblador amigable.
Sexy MotherFucker escribió:- No penaliza demasiado en C, por lo que se consiguen resultados aceptablemente óptimos con este lenguaje.
Sexy MotherFucker escribió:además de ser compatible con sistemas operativos más modernos como Linux.
Sexy MotherFucker escribió:- Sus registros de 32 bits son útiles para... ¿Cargas de trabajo muy pesadas?
Sexy MotherFucker escribió:- Sufre de una latencia horrible, es unànime donde trate de informarme. Tarda hasta 4 ciclos externos (32 mhz) en operar externamente;
Samus de Arán escribió:Que respeto infunde el hilo, viendo como ha salido escaldado titorino ya no hay cojones a postear
Techies only
Manveru Ainu escribió:@Sexy MotherFucker Con el 68k olvídate de multiplicar y dividir durante el gameplay, salvo que te sobre CPU claro jeje, por eso se usan desplazamientos de bits, luts y trucos varios. Aquí el coste de todas instrucciones del 68k: http://md.squee.co/68k_Instruction_Reference
PD: el coste de usar valores de 32 bits es un 50% superior a usar 8 y 16 bits, hay que evitarlo siempre que se pueda, pero también hay que ver que a veces es rápido y útil, como por ejemplo cuando quieres usar coma fija con un dword en lugar de 2 words.
titorino escribió:Samus de Arán escribió:Que respeto infunde el hilo, viendo como ha salido escaldado titorino ya no hay cojones a postear
Techies only
Estaras de coña no?
Solo tenía una duda, que por cierto no era para crear otro versus y ya se me ha resuelto.
Me ha venido a la mente porque hoy he estado jugando al x68000.
Para que yo salga escaldao hace falta más que eso y estoy seguro que sexy no lo ha hecho con esa intención, es más he comprendido perfectamente su postura y no Le quería Joder el hilo.
Mejor dejarlo para gente que sepa
zarkon escribió:Supongo que en la realidad el M68000 es un poco más rápido pero no el doble de rápido.
En definitiva, es cierto que el 68000 es mejor, pero no mejor en todos los casos.
Señor Ventura escribió:Interrumpir el dibujado del line buffer para cambiar paletas de colores y obtener mas colores, es costoso si la cpu no es buena efectuando irq's, y esa es una ventaja palpable de la snes, por no hablar de lo que implica para cuestiones de diseño el poder dividir la pantalla en varias secciones verticalmente. Eso te lo da el 65816 con soltura, mientras que el 68000 se ahoga.
magno escribió:Señor Ventura escribió:Interrumpir el dibujado del line buffer para cambiar paletas de colores y obtener mas colores, es costoso si la cpu no es buena efectuando irq's, y esa es una ventaja palpable de la snes, por no hablar de lo que implica para cuestiones de diseño el poder dividir la pantalla en varias secciones verticalmente. Eso te lo da el 65816 con soltura, mientras que el 68000 se ahoga.
En ese ejemplo que has puesto no gana el 65816 porque la interrupción a la que te refieres debe de ser el HDMA, y en ella no interviene el micro. Al micro de la SNES sólo se le puede interrumpir por IRQ y por NMI, uno que salta por los contadores verticales y horizontales, y el NMI que salta cuando la pantalla ha terminado de dibujarse.
Señor Ventura escribió:Ahora entiendo lo de que dijiste sobre que podrías aspirar a ganar solo un color mas por scanline... es que el hdma solo dispone de 4 bytes
Señor Ventura escribió:, y estoy pensando que el número de interrupciones por línea es limitado, no se si va en ese sentido...
Señor Ventura escribió:No se me ocurre de que otra forma podrías lograr este efecto que interrumpiendo un scanline un buen número de veces:
https://youtu.be/MdBHjR1LMzI?t=1484
danibus escribió:Un poco de pimienta en este hilo, hay demasiado buen rollo jajaja
Mucho rollo con que el 65816 a menos frecuencia iguala al Motorola, que si es más eficiente, que si patatin, que si patatan... Saliendo la Snes más tarde que la MD, ¿Por qué no aumento Nintendo su frecuencia para pasar por encima a la MD? Porque son unos rácanos con el HW.
Sí las consolas hubiesen salido a la vez... pero no fue el caso.
danibus escribió:Hoy día programando a alto nivel estas cosas no se ven, a la velocidad que se mueve la industria "no vale la pena" tratar de sacar rendimiento, porque salen chips nuevos más baratos y potentes cada poco tiempo.
Recuerdo la época del Spectrum, amstrad, etc
Todos con un Z80 y qué diferentes parecían
magno escribió:Fácil, con un HMDA que cambia el BGScroll horizontal del plano donde esté el fondo ése de color turquesa. Así puedes cambiar en cada línea independientemente el offset horiztonal y dar ese efecto de zigzag. Tiene esa pinta, aunque como el movimiento es muy repetitivo, simplemente podría ser un BG que va cambiando con esa forma, sin necesidad de HDMA.
danibus escribió:desconozco si el Ricoh podéis trabajar a más velocidad con garantías.
la PPU tenía que funcionar a 21.47MHz para que pudiera tener listo cada frame con todo el procesamiento de video necesario. Con un PLL entero (no fraccional), sacas divisores de reloj de 2, 3, 4, 5, 6, 7 ú 8 (podrías más, pero no tiene sentido), así que tendrías para elegir 10.7 MHz, 7.15MHz, 5.36MHz, 4.29MHz, 3.578MHz, 3.06MHz y 2.68MHz.
danibus escribió:De la misma forma, podemos fantasear con que el Motorola de MD estuviese a 10-12 MHz en vez de 7.8MHz, pero eso implica que el resto del sistema pudiese trabajar también con dicha frecuencia.
La gente que overclokea la MD la suele poner, por lo que tengo entendido, a 10MHz, a más se ralla.
Según he leído el VDP de MD no está pensado para trabajar tan rápido y se hace la picha un lío.
Señor Ventura escribió:Pero no solo tiene un zig zag, sino que el plano está dividido en varias secciones ¡verticalmente!, eso obliga en teoría a interrumpir cada scanline un buen número de veces, hacer un desplazamiento, y volver a empezar. Me parece complejísimo.
danibus escribió:desconozco si el Ricoh podéis trabajar a más velocidad con garantías.
Señor Ventura escribió:@magno... dividor por 6?, influyendo en el sistema de vídeo?, esto es nuevo para mi... pero excluyendo al dma, no?.
Sexy MotherFucker escribió:Interesante, entiendo por lo remarcado en negrita que esa regla se aplica también a la ram; ¿Quiere decirse que la SNES perfectamente podría haber tenido una wram a 3,58 mhz que no le hiciese penalizar un ciclo interno al WDC para acceder a ella? Porque entonces a mi entender un 65816 standard a 5,36 Mhz con la memoria pareja hubiese sido una opción ideal para ese diseño, no creo que lo hubiese encarecido en exceso como si digamos le calzas un SA-1 a 10.7 mhz, el cual recuerdo que una vez explicaste no podía ser usado de CPU para la placa tal cual está diseñado actualmente.
Sexy MotherFucker escribió:¿Y en Megadrive qué tal van los accesos a la memoria desde la CPU? Partiendo de la base de que el 68000 tiene una latencia nativa de 4 ciclos externos (32 mhz entiendo), y de la baja frecuencia a la que va clockeado (7.67 mhz), el diseño de la 16 bits de SEGA es curioso porque tiene memorias rapidísimas para una consola de 1988:
FPM DRAM (16-bit, 5.263157 MHz): 64 KB workram. BANDWITCH: 10.526314 MB/s (5 MB/s CPU access) CPU access per frame: 81 KB (NTSC), 98 KB (PAL) (WTF?, imagino que no se refiere al ancho de banda nominal del DMA, sino a la comunicación Cpu-ram, ¿¿??).
VRAM: 64 kb dual external. VDP internal cache: 232 bytes.
CPU External data bus clock rate: 5 MHz ram/rom (5 MB/s external data access bandwidth)
W-T-F? Me he perdido, ¿Qué lugar juega la latencia del Motorola en estas cifras? Sacadas de Segaretro:
https://segaretro.org/Sega_Mega_Drive#T ... ifications
Teniendo en cuenta que para realizar rotaciones y scaling por software, el M68k accede a las memorias para manipular tiles, todo esto tiene que tener algún tipo dede orden...
Sexy MotherFucker escribió:CPU External data bus clock rate: 5 MHz ram/rom (5 MB/s external data access bandwidth)
magno escribió:No veo ese efecto que dices, macho... O no entiendo lo que dices... A mí lo que me parece es que el efecto es como si tuvieras un cañon, desfiladero o fosa debajo del avión; imaginate que un desfiladero recto, sin esquinas o curvas... pues eso es lo que se vería desplazándose la nave hacia arriba, pero si por HDMA cambias el scroll horizontal de cada línea, entonces el efecto es como si el desfiladero fuera sinuoso.
Las secciones verticales no las veo
magno escribió:No, he dicho justo lo contrario... la frecuencia del sistema de video influye en la frecuencia del reloj dividido.
magno escribió:El DMA no tiene nada que ver aquí; el DMA va entre el bus B (PPU) y el bus A (el de la CPU, que incluye RAM y ROM), así que su frecuencia se tiene que adaptar al más lento de los actores del DMA, que en este caso es la ROM externa. Como la ROM más lenta es de 200ns, pues el DMA funciona limitado por ese tiempo de acceso.
Con los cálculos que he hecho antes, sale que el caso más lento implica divisor x8, por tanto, 2.68MHz y por tanto el DMA ha de funcionar a 2.68MHz siempre.
Señor Ventura escribió:Pero vamos, que hay dos efectos diferentes ahí, el de serpenteo, y el del desplazamiento vertical del terreno a diferentes velocidades (el serpenteo es horizontal, y el desplazamiento es vertical).
Señor Ventura escribió:Y si la rom de 80ns, ¿la wram también bloquea el dma por tener una frecuencia de 2,68mhz?.
magno escribió:Lo de la latencia precisamente ayuda a aumentar la frecuencia de reloj. Piensa que la DRAM tiene un tiempo de acceso fijo, digamos 70 ns. Si la CPU espera el dato al ciclo siguiente de que ponga la dirección en el bus, la máxima frecuencia del micro es 14,285 MHz; la CPU espera el dato 2 ciclos después de que ponga la dirección, entonces 2 periodos de reloj han de ser menor de 70ns, por lo que tu máxima frecuencia de reloj sería 28,571 MHz.
Con 4 ciclos como el 68000, pues echa cuentas. Lo que pasa es que tiempos de 70ns en DRAM los teníamos hace 10~15 años, hace 30 no sé en cuánto estaríamos, pero supongo que mucho más.
Es por esto que la Megadrive puede tener un reloj más alto de funcionamiento sin penalizar lo rápido que hayan de ser las DRAM o las ROM.
A la frecuencia del 68000, con esos 4 ciclos de acceso, podrías tener ROM o DRAM de 500 ns de tiempo de acceso, aunque a eso hay que restar lo que tarden los decodificadores externos de memoria para mapear los periféricos.
Por ejemplo, una rutina VWF que se puede ver en cualquier juego de ROL necesita de muchos accesos a RAM para traer cada línea de píxeles de la letra; con el 68000 podrías traerte la línea de píxeles con mayor lentitud que el 65C816, pero una vez almacenada en el registro R0 del 68000, podrías desplazarla, hacer su sombra por arriba, por abajo y por la derecha y almacenar cada resultado en R1, R2 y R3. Luego almacenas el resultado en la salida de RAM, y la siguiente línea de píxeles que te traes ya tiene los resultados de la sombra de la línea superior en R2. Así te ahorras almacenar los 2 planos de píxeles en 2 ciclos como haría el 65C816, y para cada línea de píxeles, te ahorras traerte la sombra de la línea superior, por lo que en 68000 te podrías ahorrar 2 ciclos de acceso a RAM almacenando resultados intermedios en los registros disponibles, por lo que hace más ligero el algoritmo.
me mosquea porque yo tenía entendido que las ROMs en los cartuchos eran de 16 bits de bus de datos, lo cual implica 10MBytes/seg, no 5. Tampoco tengo muy claro qué son esos 5MHz, ya que normalmente se da en tiempo de acceso o en ciclos maestros del reloj (53.69 MHz en la Megadrive).
Por cierto, mira esto acerca del overclock:
http://www.sega-16.com/forum/archive/in ... -7138.html
El 68000 usado en la mega está especificado para 8MHz de frecuencia máxima... Meterle 10MHz es acortarle la vida a lo bestia.