Página 1 de 1

Coordinación de CPUs

Publicado: 16 Feb 2018 12:55
por WhatIsAMan
Hola!

Hacía tiempo que no escribía. Querría romper el silencio exponiendo una pregunta.
He visto que hay ordenadores con múltiples CPUs con distinta arquitectura (por ejemplo el CBM-9000 o el C128). Me gustaría conocer un circuito sencillo para coordinar una 68K y una Z80 al estilo Megadrive. He estado revisando Megadrive y Neo-Geo, porque ambas usan estos dos procesadores, pero parece ser que su coordinación está "oculta" por componentes propietarios.

Gracias!

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 15:01
por BlackHole
¿A qué llamas "coordinar"? Justamente los circuitos que acompañan a un procesador nunca han sido sencillos, por la multitud de señales que gestionan.
En el caso de la Megadrive, se dedican a cosas diferentes: el Z80 gestiona el código del sonido y de los juegos SMS, mientras que el del programa principal lo lleva el 68000.
En el C-128, los dos procesadores no pueden funcionar simultáneamente: o activas uno u otro.

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 15:17
por Chema
Eso mismo iba a preguntar yo. Lo más simple que se me ocurre es que ambos gestionen espacios de memoria separados y que se use algún método para que se comuniquen. Por ejemplo mediante una zona de memoria pequeña compartida, pero hay que asegurarse de que ambos no acceden a la vez. Creo que el 68000 tenía chips compañeros que ayudaban (igual que el 6502 con las VIA) y el Z80 supongo que también.

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 17:32
por minter
Chema escribió:Eso mismo iba a preguntar yo. Lo más simple que se me ocurre es que ambos gestionen espacios de memoria separados y que se use algún método para que se comuniquen. Por ejemplo mediante una zona de memoria pequeña compartida, pero hay que asegurarse de que ambos no acceden a la vez. Creo que el 68000 tenía chips compañeros que ayudaban (igual que el 6502 con las VIA) y el Z80 supongo que también.


Exactamente como funciona el Fujitsu FM-7. Con los dos 6809 y una ventana de comunicación en una zona de memoria. -drinks

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 17:58
por WhatIsAMan
Gracias por estas respuestas tan rápidas!

Tenía en mente dos mapas de memoria separados con una zona común. Lo que me intriga seria el "árbitro" de bus.

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 19:11
por Jinks
¿Y no sería más sencillo que se comuniquen mediante puertos de E/S?

Cada uno con su memoria sin compartir nada, así evitas árbitros o contiendas. Por ejemplo con dos puertos, A y B, el 68000 puede leer el A y escribir en el B, y el Z80 al revés.

Claro, eso para coordinarse, para enviarse señales, si tuvieran que compartir muchos datos entonces no creo que fuera práctico.

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 19:29
por WhatIsAMan
Ok.

Gracias!

Re: Coordinación de CPUs

Publicado: 16 Feb 2018 19:34
por ron
Creo que blackhole lo explicó bastante bien en el caso del C128, y hay algo sobre la softcard en un Apple ][-

En principio comparten los datos y el bus de direcciones del C128, por lo que solo pueden ejecutarse de forma exclusiva en un momento determinado. El bus de direcciones aparentemente está conectado directamente, el bus de datos del Z80 a través de un conjunto de enganches al bus de datos del resto del sistema.

Es decir, en modo CP/M, el 8502 maneja el teclado, la pantalla, la impresora, y los puertos seriales, mientras que el Z80 "ejecuta los programas". Mientras una CPU se está ejecutando, la otra necesita estar en HALT.