Diseño/normas del software

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Diseño/normas del software

Mensaje por m0skit0 »

soulless escribió:Sera el CPU Core el unico que se comunicara con la ram???

Nop, casi todos los demás componentes también trabajan directamente sobre la RAM.

yosoy_bostero escribió:no veo para que la clase bus, son simplemente registros de 32bits.. ya hay atributos (tanto busdir como busdatos) en la clase memoria y en el procesador, en todo caso sera la clase "placa madre" " main " o como sea que la llamemos, la que se ocupara de "linkear (vincular)" dichos atributos, leer de uno escribir en el otro y viceversa.

Lo que había pensado es eliminar la clase "placa base" y hacer que los componentes tengan punteros a los otros componentes que necesiten tocar. Por ejemplo cAllegrex tendría un puntero a cMemoria. De esta forma accede directamente, y sobre todo, no tiene que esperar a placa base. Usar "buses" a través de "placa base" es un follón, sobre todo si hay buses comunes (como el de la memoria principal). Si tenéis alguna idea de cómo "arbitrar" el bus, soy todo oídos. De todas formas me parece algo superfluo y que sólo va ralentizar el conjunto.

~Rdavid~ escribió:¿Por qué es necesario eliminar los 4 pasos con los que funciona el CPU? ¿no sería mejor hacerlo justo como lo hace el procesador para no tener problemas después?

No digo eliminarlos, digo fusionarlos. Mi idea era la siguiente:

Clase placa base:

  1. cAllegrex ejecuta siguiente estado
  2. Validar cMemoria

Repitiendo estos pasos de forma infinita.

El problema radica a la hora de ejecutar instrucciones, ya que algunas instrucciones realizan más accesos a memoria, mientras que otras a lo mejor no realizan ninguno. Por tanto, no podrían recuperar los datos que necesitan dichas instrucciones a menos que se insertaran más estados a cAllegrex, algo que no me parecía coherente.

Si se elimina el uso de buses, cAllegrex puede acceder cuando quiere a cMemoria.
Imagen

yosoy_bostero
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 12 Ene 2011, 16:55

Re: Diseño/normas del software

Mensaje por yosoy_bostero »

tecnicamente punteros a que ? que la instancia de cMemoria haga un malloc y le pase esa dirección al micro? o como sino? puntero a objeto?

soulless
Desarrollador
Desarrollador
Mensajes: 64
Registrado: 23 Oct 2009, 07:56

Re: Diseño/normas del software

Mensaje por soulless »

yosoy_bostero escribió:tecnicamente punteros a que ? que la instancia de cMemoria haga un malloc y le pase esa dirección al micro? o como sino? puntero a objeto?


Un puntero a objeto y pasar ese puntero a cada clase que necesite acceder a memoria, o podría hacerse cMemoria un singleton, cualquiera de las dos formas daria el mismo resultado.
"Quiero irme cuando quiero. Es de mal gusto prolongar artificialmente la vida. He hecho mi parte, es hora de irse. Yo lo haré con elegancia." -Albert Einstein.-

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Diseño/normas del software

Mensaje por m0skit0 »

Código: Seleccionar todo

class cAllegrex
{
private:
    cMemoria* memoria;
}

Sería una clase externa la encargada de rellenar este puntero, por ejemplo que el constructor obligue a pasar un puntero a cMemoria.

Código: Seleccionar todo

class cAllegrex
{
private:
    cMemoria* memoria;
public:
    cAllegrex(cMemoria* memoria);
}
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: Diseño/normas del software

Mensaje por arisma »

Por otro lado:

Se supone que cogemos un fichero que contiene las instrucciones(codigo maquina psp) o también contiene graficos y etc.(De momento eso da lo mismo)

Tenemos que meterlo en la memoria(el mapa de la clase), y de ahí ir cogiendo las instrucciones.
Lo que no me gusta es que memoria defina unos buses y el procesador otros.
Una clase estática para los buses no me gusta como solución, y eso que está bien porque no se puede instanciar, pero podría ser una solución.
Vale que los buses pueden servir tál como está con una variable, pero en esa clase podríamos poner la gestión de los buses y ella controlaría si está disponible o no, y controlar el acceso a la memoria.

La memoria podría ser una clase a heredar si más adelante usamos los 32 mb extra de los nuevos modelos.(no fat)

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Diseño/normas del software

Mensaje por m0skit0 »

Los buses están descartados. Se accederá a cada componente con los métodos que éste defina. Intentaremos que sean métodos parecidos para todos los componentes (¿heredar de cComponente?).

EDITO: he subido un pequeño esbozo del nuevo diseño sin buses. También he eliminado cMemoria, hay que rehacerla.
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: Diseño/normas del software

Mensaje por arisma »

Pero creo que siguen estando todos los ficheros. Son validos todos?

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Diseño/normas del software

Mensaje por m0skit0 »

Ya los he rehecho según lo discutido, arisma.

Por cierto, si alguien quiere meterle mano al código que me lo diga y le doy permisos de escritura en el SVN.
Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Diseño/normas del software

Mensaje por m0skit0 »

Doble posteo. Subo la última revisión del código en un momento. Aquí dejo un esquema de la estructura actual, para que sea más visual y para poder discutir sobre ello de forma más gráfica.

Spoiler:
path4829.png


EDITO: rectifico el gráfico
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: Diseño/normas del software

Mensaje por arisma »

Sé que es muy pronto, pero has podido compilarlo?.

A mí me da error en la linea 57 de cMemoria.cpp

Responder