Autor Tema: IMX-31 dudas sobre la velocidad  (Leído 3103 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ARMadicto

  • PIC10
  • *
  • Mensajes: 6
IMX-31 dudas sobre la velocidad
« en: 21 de Octubre de 2010, 14:45:22 »
Primero presentar mis respetos a todos. Me llamo Manuel y os felicito por el foro.

He buscado por el foro algun tema parecido, pero o bien se me ha pasado de largo o realmente no existe, por lo que me atrevo a poner aqui mis dudas.

La gran duda que me surge es ¿A que velocidad realmente podemos usar el ARM 11 del IMX31? y mas aun ¿Como esta velocidad repercute en nuestro programa?

EL problema ha aparecido por lo siguiente,estoy escribiendo unas rutinas graficas para un Cortex M3 sin SO, por lo que yo controlo el frame buffer lo envio al TFT de 320x240 y preparo el back buffer para la siguiente imagen, esto lo estaba haciendo en unos 16 ms, y quedaba tiempo para las rutinas de draw, plot, box etc, (el cortex M3 corriendo a 48MHz), todo se empezo a complicar, al querer incluir Rotacion y texturas, Que paso, para poder hacer una rotacion de unos 240x240 pixeles en 24bit de color, necesitaba unas 20 instruciones por pixel que representaban unos 30 ciclos de reloj entre las de un ciclo y las dobles, por lo que 30*240*240 hacen unos 1728000 ciclos por rotacion que ha razon de 48 megas hacen unos 27 Frames por segundo maximo, en realidad si le sumas pasar el frame buffer hasta el TFT (16ms)  se quedan en unos escualidos 19 Frames, sin poder hacer nada mas.

POr todo esto quedo claro que habia que migrar a algo mas potente, selecione el IMX31, porque uno ARM11 a 532 Mhz, parecia al menos 10 veces mas potente que el debil Cortex M3 a 48Mhz, bien dicho y hecho, elegi la placa de Logic con un IMX31 que posteriormente me permitiria aprender a usar un procesador grafico incorporado y que en principio parecia potente.

Continuo en otro post

Desconectado ARMadicto

  • PIC10
  • *
  • Mensajes: 6
Re: IMX-31 dudas sobre la velocidad
« Respuesta #1 en: 21 de Octubre de 2010, 14:58:12 »
Bien continuo.

El problema o mejor dicho duda, aparece cuando al pasar el programa tras compilarlo para el ARM11 con el GNU tool chain y teniendo en cuenta que las rutinas importantes estaban en emsamblador, por lo que no se le puede achacar el problema al compilador, resulta que en el IMX11 el codigo va mas despacio. concretamente un 30% mas lento que en el M3, le he dado vueltas una semana, y como no le he encontrado explicacion, he terminado por no fiarme ni de mi programa y he escrito en ensamblador un bucle que simplemente have un millon de vueltas en un loop con 4 instrucciones dentro, dos de acceso a memoria y dos de movimiento de registro, solo para que sirvan de simulacion de trabajo, tras el bucle y tambien en emsamblador enciendo/apago un led y esto lo repido 50 veces es decir 50 millones de veces 6 ccilos de reloj mas el decremento de registro para el bucle y el salto condicional, vamos una verdadera tonteria, bien, pues corriendo en el CORTEX M3 esto lo hace en 9 segundos, y en el IMX31 a 532Mhz tarda 15 segundos, esto si uso la memoria externa DDRram de 166 Mhz, y 14 Segundos si paso la rutina a los 16Kbytes que tiene de memoria RAM interna, y la ejecuto hay en la Ox1FFFFCOO si no recuerdo mal.

Obviamente esto no tiene ningun sentido, y yo ya no doy mas de si, se os ocurre que puede pasar, podeis vosotros en vuestras placas hacer un bucle de 50 veces 1millon de vueltas que tengan dentro algo que consuma unos 6 ciclos de reloj y comprobais si el resultado practico os coincide con el teorico o bien como a mi me esta ocurriendo hay una diferencia de 10 mas o menos.

Muchas gracias por leer el ladrillo, y ojala a alguien se le encienda la luz, por que llevo una semanita "que pa que"

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: IMX-31 dudas sobre la velocidad
« Respuesta #2 en: 21 de Octubre de 2010, 17:43:59 »
seguramente ambos compiladores estan generando un .asm, porque no comparas que es lo que estan haciendo en cada caso?
por otra parte deberias verificar la velocidad de trabajo de los i/o en cada caso, tal vez cortex m3 con su acceso a nivel de bit al puerto  sea mas rapido que el imx31.
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado ARMadicto

  • PIC10
  • *
  • Mensajes: 6
Re: IMX-31 dudas sobre la velocidad
« Respuesta #3 en: 21 de Octubre de 2010, 18:35:16 »
Gracias por tu respuesta,

Quiza no lo he expresado bien, El codigo ASM los he escrito yo, el mismo codigo en ambos casos escrito en Ensamblador, por eso estoy seguro de que hay un bucle de salto condicional  y de que en el bucle se ejecutan cuatro instrucciones, dos de ciclo por instruccion y dos de dos ciclos por instruccion, es el mismo codigo en los dos micros, y es el mismo codigo corriendo en DDR ram y en a RAM interna que no debe estar afectada por limitacion de velocidad.

Respecto al uso de periferico exterior, solo se ejecuta el encender y apagar el led, cada millon de bucles. es decir en los 50 millones de vueltas se enciende y apaga 50 veces, el tiempo de acceso a los perifericos es despreciable en ambas configuraciones.

He comprobado que los registros de configuracion del PLL asi como los posdivisores estan correctos, de hecho usando la formula del IMX da exactamente 532 megas y el posdivisor esta en 000 s decir dividir por 1.

Es tan raro y lo he verificado en dos placas de IMX31 una de logicpd y la otra de Phitec, que o bien me estoy equivocando en algo y en vuestras placas los 50 milliones de bucles con 4 instrucciones dentro las ejecutan en menos de 1 o 2 segundos, o los ARM a 532mhz estan engañandonos a todos.

Un saludo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: IMX-31 dudas sobre la velocidad
« Respuesta #4 en: 21 de Octubre de 2010, 18:41:45 »
Hola lamento no poder ayudarte, porque no posteas la consulta en los foros de FreeScale ?

Saludos !

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: IMX-31 dudas sobre la velocidad
« Respuesta #5 en: 21 de Octubre de 2010, 20:06:13 »
no tengo experiencia con micros de freescale pero el depurador te deberia de poder hacer un trace y darte el tiempo de ejecucion de la rutina no?
que ide estas usando? no estara haciendote alguna optimizacion con impacto negativo en el rendimiento?

si bien es cierto que el nucleo de cortex es mas eficiente que los previos, aca estamos con muchisima diferencia de velocidad como para tenerlo en cuenta.
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado ARMadicto

  • PIC10
  • *
  • Mensajes: 6
Re: IMX-31 dudas sobre la velocidad
« Respuesta #6 en: 22 de Octubre de 2010, 06:51:02 »
Gracias a todos.

En FreeScale, no he visto para que tenga sentido. pero por preguntar no se pierde nada.

Leyendo y leyendo, en los libros del IMX31 podria ser que el L2 cache este desactivado al cargar el Uboot, y que por lo tanto el tiempo de lectura de la RAM (incluso su RAM interna) sea de unas 12 veces menos que el reloj del core.

En fin seguire buscando.

Un saludo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: IMX-31 dudas sobre la velocidad
« Respuesta #7 en: 22 de Octubre de 2010, 11:18:25 »
Hola podes postear aca:

http://forums.freescale.com/t5/i-MX-Microprocessors/bd-p/IMXCOMM

O podes directamente colocar un service request

https://www.freescale.com/webapp/servicerequest.create_SR.framework

Lo hice una vez y me ayudaron

Good luck !

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: IMX-31 dudas sobre la velocidad
« Respuesta #8 en: 24 de Octubre de 2010, 11:05:41 »
Gracias a todos.

En FreeScale, no he visto para que tenga sentido. pero por preguntar no se pierde nada.

Leyendo y leyendo, en los libros del IMX31 podria ser que el L2 cache este desactivado al cargar el Uboot, y que por lo tanto el tiempo de lectura de la RAM (incluso su RAM interna) sea de unas 12 veces menos que el reloj del core.

En fin seguire buscando.

Un saludo.
Estas usando un Sistema operativo???
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado ARMadicto

  • PIC10
  • *
  • Mensajes: 6
Re: IMX-31 dudas sobre la velocidad
« Respuesta #9 en: 27 de Octubre de 2010, 05:58:31 »
Hola buenos dias.

Respondiendo a vuestras preguntas, no, no estoy usando ningun SO.

POr lo que llevo estudiado hasta ahora, es 90% seguro que todo el problema esta en la L2CC, si esta cache no esta activada, un arm1136 o superior se convierte en algo muy proximo a un z80 a 8mhz. o menos ;-))

bueno bromas a parte, he conseguido un loader nuevo para una de las placas que activa la L2 y efectivamente el imx31 se convierte en unas 8 veces mas rapido que un cortex_m3

ahora solo me queda aprender como activar yo solito el cache de segundo nivel, os parecera facil, pero leyendo la documentacion, es un verdadero lio. pero.... no queda otra, que estudiar, buscar por la red, y esperar encontar un poco de luz o un ejemplo para aprender ha activarla.

un fuerte abrazo, y si lo consigo os pondre el source de la activacion, por que sera de gran ayuda para los que esteis con un arm11 o superior sin OS instalado (bare metal creo que lo llaman los sajones)


Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: IMX-31 dudas sobre la velocidad
« Respuesta #10 en: 27 de Octubre de 2010, 12:46:20 »
Excelente investigación !!! Como reflexión, no todo es oro en el mundo ARM.

Saludos !


 

anything