Coprocesadores & excepciones/traps

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

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

Coprocesadores & excepciones/traps

Mensaje por m0skit0 »

Propongan ideas sobre cómo implementar los coprocesadores y las excepciones/traps :)

- Coprocesador -> componente aparte miembro de cAllegrex.
- Excepciones -> delegadas completamente en el COP0
- Traps -> ?
Imagen

davidgf
Desarrollador
Desarrollador
Mensajes: 65
Registrado: 26 Feb 2010, 23:53

Re: Coprocesadores & excepciones/traps

Mensaje por davidgf »

La FPU y la VFPU aparte no? La VFPU es un tocharraco de código, tiene 128 registros y las operaciones más complicadas son productos de matrices!
El COP0 no se si será muy largo, la mayoría de los registros son de la TLB que como no hay pues digo yo que seran de uso generico? No tengo ni idea ...
Habéis pensado en un esquema de memoria diferente? Más sencillo quizás (juntar con mapeo?) dado que sólo debe comprobar los rangos de direcciones de kernel/uncached para poder avisar a la CPU de un acceso no valido, no alineado, etc para poder generar la excepción correspondiente.

Saludos!

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

Re: Coprocesadores & excepciones/traps

Mensaje por m0skit0 »

davidgf escribió:La FPU y la VFPU aparte no? La VFPU es un tocharraco de código, tiene 128 registros y las operaciones más complicadas son productos de matrices!
El COP0 no se si será muy largo, la mayoría de los registros son de la TLB que como no hay pues digo yo que seran de uso generico? No tengo ni idea ...

Clases aparte por supuesto, pero atributos privadísimos (no métodos de acceso público) de cAllegrex, que de todas formas es el único que puede acceder a ellos. Sino cAllegrex va a ser un monstruo... De todas formas la FPU y VFPU pueden esperar a que esté el cop0 que es el más nos interesa por el tema de excepciones.

davidgf escribió:Habéis pensado en un esquema de memoria diferente? Más sencillo quizás (juntar con mapeo?) dado que sólo debe comprobar los rangos de direcciones de kernel/uncached para poder avisar a la CPU de un acceso no valido, no alineado, etc para poder generar la excepción correspondiente.

Esto es off-topic. Es mejor crearse otro hilo para este tipo de preguntas, pero bueno... Es que no sólo debe comprobar eso. Debe comprobar: caché, scratchpad, vram, registros hardware... Meter todo eso en la clase cMemoria es como meter la FPU y VFPU en la clase cAllegrex. Yo no uniría dichas clases para nada, ni tampoco veo ninguna razón para hacerlo realmente...

Saludos y a por ellos
Imagen

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Coprocesadores & excepciones/traps

Mensaje por Yn$an€ »

Bueno, le he dedicado todo mi tiempo disponible hasta ahora (7 min :lol:) a leer los manuales y creo que he entendido casi todo. Pero me faltan 2 cosas:

Ponme un ejemplo de excepción.
Habría que comprobar cada operación que se ejecuta y sea susceptible de uno de los tipos de excepción dados?

Las excepciones de tiempo hay que implementarlas a parte. Junto con el sistema de tiempos.

Creo que ya tengo algo en mente. Ahora te toca a ti devolverme a la realidad. :mrgreen:
... after all, we're all alike.

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

Re: Coprocesadores & excepciones/traps

Mensaje por m0skit0 »

Has escrito en el foro, yujuuuuuu :lol: :oki: :pinta: :canuto:

Yn$an€ escribió:Ponme un ejemplo de excepción.

División por cero.

Yn$an€ escribió:Habría que comprobar cada operación que se ejecuta y sea susceptible de uno de los tipos de excepción dados?

Sólo las que puedan generar alguna excepción, obviamente

Yn$an€ escribió:Las excepciones de tiempo hay que implementarlas a parte. Junto con el sistema de tiempos.

Perdón, no entiendo lo de "excepciones de tiempo".
Imagen

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Coprocesadores & excepciones/traps

Mensaje por Yn$an€ »

Sólo las que puedan generar alguna excepción, obviamente


Eso es lo que he dicho io :canuto:

Perdón, no entiendo lo de "excepciones de tiempo".


No, perdona tu. Interrupciones de tiempo eran. Mezclé los temas.

-- Doble Post --

A ver. Aproximación a la idea. Creamos en la clase que corresponda una lista con las operaciones (se puede omitir si se hace como al decodificar). Otra con los tipos de excepciones. Asignamos cada operación con la excepción que corresponda. Añadimos un nuevo miembro en el struct de depuración que yo creé, que sería si existe la necesidad de comprobar la operacion (un simple booleano).

Luego en cAllegrex, si es verdadero, se envían a revisar a la clase los datos de la instrucción. En la clase que maneja las excepciones (cop0) los datos se verifican con las comprobaciones que se correspondan para los tipos de excepciones que pueda haber (que estarían guardados en la tabla) excepcion que puede presentar.

Que te parece?
... after all, we're all alike.

Responder