Pregunta para nota: Z80 vs mc6809

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 640
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 22 veces
Gracias recibidas: 29 veces

Pregunta para nota: Z80 vs mc6809

Mensajepor jotego » 19 Sep 2014, 15:27

Como podéis comprobar arrancando el Ghosts'n Goblins con el MAME, este lleva dos procesadores:

control del juego y procesador principal: mc6809 a 1,5MHz
reproductor de la música: Z80 a 4MHz

Y aquí la pregunta: ¿Alguien sabe qué criterio se debió seguir para hacer esta elección? ¿Por qué un 6809 en vez de un Z80, siendo el Z80 más rápido? ¿Qué ventajas aportaba el mc6809? ¿precio, diferencias en la arquitectura del procesador? Para ponernos en contexto, una recreativa ligeramente anterior, el 1942, usaba dos Z80. El 6809 irrumpió más tarde y se quedó muchos años. En su versión original o encriptado en la mayoría de máquinas de Konami, como Super Contra y Chequered Flag. Sin embargo, en los 90 el mc6809 ya no se veía porque el M68000 era el procesador principal de moda y el Z80 aguantó el tipo en su papel de músico secundario.

¿Qué tenía el 6809 para tirar al Z80 como procesador principal?

Avatar de Usuario
scooter
Amiga 1200
Amiga 1200
Mensajes: 1027
Registrado: 17 Jul 2012, 09:25
primer_sistema: C64
Ubicación: Alicante

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor scooter » 19 Sep 2014, 15:50

Estamos en lo mismo de siempre, el duelo intel - motorola o 6502 vs z80
Un z80 a 4MHz NO es cuatro veces mas rápido que un 6502 a 1MHz. Son aproximadamente igual de rápidos. El z80 será levemente mas potente pero ni de lejos cuatro veces mas.
El 6809 es como un 6502 o mejor dicho 6802 con esteroides. Es realmente mas potente, dos punteros de pila de 16bits, multiplicador en hardware, varios punteros de 16bits dos acumuladores de 8bits que en ocasiones actúan como uno de 16 bits.
Así que casi con toda seguridad un 6809 a 1.5MHz machaque mas números que un z80 a 4MHz

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2824
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 25 veces
Gracias recibidas: 14 veces

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor mentalthink » 19 Sep 2014, 16:16

Básicamente pienso que el asunto sería económico , siendo volúmenes tan grandes de producción una pequeña variación se podría convertir en ganancias millonarias para la empresa....

Avatar de Usuario
Metalbrain
MSX Turbo R
MSX Turbo R
Mensajes: 434
Registrado: 22 Nov 2008, 00:30
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Gracias recibidas: 1 vez

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor Metalbrain » 19 Sep 2014, 16:41

En general estoy de acuerdo con scooter, tan solo profundizar (discrepando un poquito) en este detalle:

scooter escribió:Un z80 a 4MHz NO es cuatro veces mas rápido que un 6502 a 1MHz. Son aproximadamente igual de rápidos. El z80 será levemente mas potente pero ni de lejos cuatro veces mas.


En general, el 6502 es más simple y tiene menos registros, por lo que muchas de sus instrucciones se ejecutan en un estado, mientras que las instrucciones más simples del z80 consumen como poco 4 estados, con lo que sus megaherzios dan mucho menos de sí. Pero el Z80 al contar con más registros e instrucciones más complejas puede realizar algunas tareas ejecutando menos instrucciones, de modo que tampoco se puede decir que sean igual de rápidos: el Z80 a 4MHz es más rápido (y algo más que levemente) que el 6502 a 1MHz, que podría ser equivalente digamos que a un Z80 entre 2.50-3.00MHz (esto por supuesto depende de las tareas en concreto que se ejecuten). Hay que tener en cuenta que hacer por ejemplo cálculos para 3D se le suele dar mejor a un Spectrum con Z80 a 3.57MHz que a un C64 con 6502 a 1MHz.

Avatar de Usuario
javu61
Atari 1040 STf
Atari 1040 STf
Mensajes: 981
Registrado: 08 Abr 2010, 21:30
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias recibidas: 3 veces

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor javu61 » 19 Sep 2014, 17:34

Creo que el Z80 a 3'5 es mas o menos equivalente en velocidad de proceso real a un 6805, la ventaja del MOS es el acceso a memoria, que ocupa menos ciclos de reloj, lo que hace que los programas se ejecuten con pocos registros a buena velocidad (igual que en los Intel 8086). La ventaja del Z80 es que puede ejecutar muchas instrucciones usando registros internos, lo que hace muy rápido.

Podemos decir que un Spectrum a 3.5 Mhz es un poco menos rápido que un Oric a 1 Mhz, pero conformes aumentes el reloj aumentas la velocidad de acceso a memoria y eso hace al Z80 mejorar bastante, mientras que el MOS lo hace linealmente.

El uso de uno u otro procesador es mas por otros factores, el precio del MOS era un poco inferior, pero el factor dominante creo que es que estaban mas acostumbrados a programar en un MOS que en un Z80, y por eso eligieron uno u otro.
Imagen
old8bits.blogspot.com __ Va-de-retro.com __ Mis películas en webs.ono.com/javu61

Avatar de Usuario
scooter
Amiga 1200
Amiga 1200
Mensajes: 1027
Registrado: 17 Jul 2012, 09:25
primer_sistema: C64
Ubicación: Alicante

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor scooter » 19 Sep 2014, 20:49

El principal éxito del 6502 vino del precio, era muuuucho mas barato que un 6802.
El 6809 apenas se usó en comparación al z80 o el 6502. Yo hice alguna cosilla en el año 91 o así y me pareció un cañón. Todo el "encanto" del 6502 pero prácticamente en 16bits.
He de decir que yo aprendí código maquina con el 6502, posteriormente usé el 8085 y muy poco el z80. Comprendo que desde la filosofía del capazo de registros del 8085/z80 ver el 6502 puede parecer desoladoramente simple, yo a cambio echaba de menos la pagina cero en el z80. Por eso me gustó tanto programar el 8052, era como un 6502 con opcodes intel, y la ram interna era totalmente la pagina cero.

Luego respecto a la velocidad la resolución también influye, el c64 cuenta con muchísimo apoyo en hardware pero en 2D, como el scroll suave por hardware, disponer de pantalla shadow; el vic se puede cambiar de "sitio" etc.
Pero en 3D no y calcular una pantalla de 320x200 son 8000bytes frente a 256x192=6100 lo cual es un 25% mas de bytes a "pokear".
Además en un spectrum un pixel y el que está debajo de él está justo 256 bytes mas adelante, y eso es MUY eficiente para direccionarlo, porque basta con incrementar el byte alto para ir a él.
En un C64 el pixel inferior está 320 bytes después y eso supone un cálculo de 16 bits.
Eso así a bulto da que al c64 le costará prácticamente el doble calcular una imagen.
Sin embargo una imagen en falso 3d en perspectiva no debería de ser muy complicado, el scroll por hard debe de valer para eso. Pero ese formato fue muy poco común en el c64 y mucho en el speccy y en amstrad

niko2
Acorn Atom
Acorn Atom
Mensajes: 1
Registrado: 19 Abr 2016, 03:43
primer_sistema: C64
Gracias dadas: 1 vez
Gracias recibidas: 3 veces

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor niko2 » 19 Abr 2016, 04:58

El 6809 es un procesador mucho mejor que el Z80; de hecho ese Motorola 6809 es el mejor procesador de 8 bits de la historia, con diferencia, pero llegó más tarde y era más caro, así que en ordenadores quien se comió el mercado fueron el MOS 6502 y el Zilog Z80.

Al 6809 yo lo veo como una gigantesca mejora sobre su antecesor -el 6800 (éste sí que era malo)- y como una gran mejora sobre el MOS 6502 -que era su enemigo comercial-.

El primer procesador que programé fue un 6502, y le tengo un cariño especial. Además tanto el 6502 como el Z80 son los usados en los mejores ordenadores de 8 bits, con lo que ello implica. No obstante lo anterior no me impide alabar al 6809 y ver su superioridad.

Pongo algunos ejemplos de por qué ese 6809 es tan maravilloso, comparándolo especialmente con los otros 8 bits que sí se comieron el mercado:

-El 6809 tiene dos pilas (stacks) ambas de 16 bits: una para el usuario y otra para el sistema. En los 8 bits lo normal es tener solo una: el Z80 tiene una de 16 bits y el 6502 una de 8 bits (sí, solo tiene una capacidad de 256 bytes).

-Lo que es la página cero, que es un área de 256 bytes, puede fijarse en cualquier posición (múltiplo de 256) de la memoria. En el 6502 esa página está fija en la posición 0 [nota 1], ocupa 256 bytes, de la posición 0 de memoria hasta la 255; por contra en el 6809 esa importantísima página se puede ubicar en cualquier posición múltiplo de 256.

¿Por qué es tan importante esa "página cero" (en el 6809 no es ya la página "cero" porque puede estar en cualquier otra página -áreas de 256 bytes empezando por una dirección múltiplo-? Pues porque el acceso a esos datos es más rápido, además de que un progama manipulándolos no solo es más rápido, sino que también requiere menos memoria [Nota 2], y porque además esos 256 bytes se usan como punteros (tienes hasta 128 punteros listos para ser usados).

El Z80 no tiene esa "maravilla" de la página CERO/DIRECTA de los 6502/6809. Y esta página es algo básico dentro de estos procesadores, tanto que a veces no hay que ver por ejm al 6502 como un procesador con 3 registros principales (A, X, Y), sino como un procesador con 256 "registros", los de la página cero, siendo los otros 3 temporales. Y es que esos registros se usan, entre otras cosas, para el direccionamiento como punteros a otras posiciones de memoria.

[nota 1]: En el Commodore 128 esa página (y también la de la pila) puede reubicarse donde se quiera, pero no es gracias a su CPU 8502 (es como un 6502/6510) sino a un chip gestor de memoria (MMU) externo, que hace la relocalización de esas posiciones de memoria de acuerdo a sus registros.

[Nota 2]: La instrucción para cargar por ejm el contenido de una posición de memoria cualquier ocupa 3 bytes (por ejm LDA $1234, que carga el acumulador con la posición de memoria 1234h); por contra la misma instrucción para cargar una posición de la página cero ocupa solo 2 bytes (por ejm LDA $12, para cargar la posición $0012), y se ejecuta más rápidamente.


-El 6809, a diferencia del 6502, tiene casi todos sus registros de 16 bits: el acumulador puede usarse como dos registros de 8 bits o como uno de 16 bits; los registros X e Y son de 16 bits.

-El 6809 tiene los potentes modos de direccionamiento de memoria típicos de un 6502, además con muchas más mejoras, y encima con registros de 16 bits como el Z80. Y encima manteniendo la característica de ser más eficiente: un 6502 o un 6809 necesitan menos ciclos de reloj que un Z80 para completar una misma instrucción (el Z80 compensa yendo a más frecuencia).

-El juego de instrucciones y sus registros complementarios son muy ortogonales en el 6809. Esto quiere decir que por ejm en casi todas las instrucciones tienes los mismos formatos de direccionamiento, lo cual lo hace muy cómodo de programar. En otros procesadores 6502/Z80/Intel 8086 ocurre lo contrario: cierta instrucciones solo soportan ciertos modos de direccionamiento, o ciertas operaciones o direccionamientos solo pueden hacerse en ciertos registros, lo que es "incómodo".

Hablando de ortogonalidad: el Motorola 68000, que fue desarrollado en paralelo por otro equipo (realmente no es una evolución del 6809), lleva ese concepto aún más fuertemente.

-El 6809 permitía hacer código independiente de su posición en memoria; es decir programas (o trozos de programas) que pueden reubicarse en cualquier posición de memoria sin que esa reubicación afecte al resultado. En un 6502 o un Z80 eso es ciencia-ficción, :) también en un Intel 8086 (que tiene muchas reminiscencias de 8 bits, en vez de ser un 16 bits puro).


He citado unas cuantas cuestiones -y otras que me dejo- que hacen que el Motorola 6809 sea una impresionante maravilla dentro de los 8 bits, y el mejor procesador de 8 bits con diferencia, y una delicia para el programador (yo no lo he usado, pero puedo imaginar la delicia que es hacerlo, habiendo usado muchos otros).

En cuanto a la velocidad: «6809 a 1,5MHz vs Z80 a 4MHz»: la frecuencia del reloj (los MHz), como sabes, no nos indica la velocidad del procesador ni su potencia, pues ésta depende de la potencia de sus instrucciones y de cuántos ciclos de reloj necesita cada instrucción. El 6809 es mucho más potente en muchos aspectos, y sus instrucciones necesitan menos ciclos de reloj que las del Z80. Yo lo tendría claro: me quedaría a ciegas con el 6809.

También el usar el Z80 para el sonido puede deberse a que ya tenían rutinas para manejar los chips de sonido, en código del Z80, y no tendrían motivo para cambiarlo, pues ese código igual era reutilizado de una máquina anterior, con lo cual se ahorraban ese coste.

Sin duda el 6809 sería el preferido por los programadores... todo un placer para ellos. Y si un programador tiene un procesador que le permite disfrutar mucho más y ser más productivo, se supone que eso debería notarse :)

Sobre el precio, al menos el original del 6809 era bastante más elevado que el de los otros, pero igual en el precio total de una máquina arcade era algo poco relevante.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1270
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 12 veces

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor na_th_an » 19 Abr 2016, 08:36

Supongo que la respuesta será algo tan simple como que los programadores estarían más acostumbrados a trabajar con el 6509. Se programan de forma totalmente diferente, hay que cambiar mucho el chip de uno a otro (no pun intended). Muchas veces ese es el motivo principal, dejando de lado qué procesador es más potente o está más indicado para qué tipo de tareas.

Por otro lado, el Z80 se ha usado muchísimo para que se encargase del tema sonoro desde siempre. Probablemente esta parte de la placa (Z80 + sinte) viniese como un "todo" que se incorporó al diseño final.

Avatar de Usuario
robcfg
Amiga 1200
Amiga 1200
Mensajes: 1893
Registrado: 07 May 2009, 15:34
Sistema Favorito: Amstrad CPC
primer_sistema: Atari 800XL/600XL
Ubicación: Estocolmo
Gracias dadas: 273 veces
Gracias recibidas: 82 veces

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor robcfg » 19 Abr 2016, 09:57

Bienvenido Niko!

Muy interesante la información sobre el 6809, pero por favor, lee con calma las normas que has aceptado al registrarte y preséntate en el hilo correspondiente.

Un saludo!

Avatar de Usuario
GXY
Atari 1040 STf
Atari 1040 STf
Mensajes: 971
Registrado: 05 Oct 2013, 08:21
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sony PlayStation 1
Gracias dadas: 19 veces
Gracias recibidas: 33 veces

Re: Pregunta para nota: Z80 vs mc6809

Mensajepor GXY » 19 Abr 2016, 13:00

la discusion tecnica esta muy bien. pero estoy casi seguro que esa configuracion de procesadores no fue elegida por esos criterios tecnicos de los que estais hablando xD
RetroPescando... :mrgreen:


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados