uhh esos 8 procesadores(COGs) suenan más que interesantes...
Positivo:
+Los 8 procesadores son mas que un aspecto positivo;
+
El mapa de memoria es plano; no hay necesidad de esquemas que paginan con los bloques del código, de los datos o de las variables. Esto realmente ahorra tiempo en el desarrollo de la aplicación.
Excelente! Esta es una gran ventaja sobre los PICs;
Negativo:
-Lamentablemente en el reporte he leido algo que me ha llamado la atencion: que ciertas zonas del microcontrolador(registros "mutuo-exclusivos") son accedibles solo de a un COG a la vez. Lo que no era del todo malo.
Ya comenzó a pintar malo cuando describió cuales eran los registos "mutuo exclusivos": RAM/ROM principal, registros de configuración. Es decir TODOS excepto los pines I/O y el System Counter.
La pesadilla fue leer que al acceso se lo da un HUB, que va contando todo el tiempo de 0 a 7...
Para que el COG pueda acceder al registro "mutuo-exclusivo" su numero(es decir, el numero de COG) debe coincidir con el numero actual que está "rifando" el HUB. Sino debe esperar a su turno.
Eso fue lo que interpreté de la breve descripción del experto de TodoBasicStamp.
Mi curiosidad hizo que me leyera parte del datasheet del microcontrolador, para que no haga mas que confirmar verazmente mi suposicion:
El PEOR escenario ocurre cuando por ejemplo: Haces una petición de escribir un registro "mutuo exclusivo" con el COG 0, y en ese mismo instante el semaforo(HUB) tiene un valor 0(es decir que es el turno del COG 0).Obviamente como el COG tarda al menos un ciclo en procesar la instruccion, no llega a tiempo...
Asi que el COG se pierde el tren por poco...y el proximo tren no pasa hasta dentro de 15 ciclos. A esto le tenemos que agregar un maximo de 7 ciclos que llevara ejecutar la instruccion. Total de tiempo para ejecutar la instruccion: 22 ciclos.
Por lo tanto, como bien dice el datasheet, para lograr un codigo que no tenga que esperar tanto hay que asegurarse que en el codigo las peticiones se hagan dentro de un bastante estricto periodo de tiempo.
Esto ya me pone los pelos de punta.
Sobre que la programacion en ASM se hace muchas veces tediosa, agreguemosle este nuevo y estricto factor a tener en cuenta para lograr mantener cierta coordinacion entre las peticiones de los COGs y el HUB para lograr codigo rapido...
-Otra cosa que me ha parecido negativa es ver que el microcontrolador no posee interrupciones.
Además de ser rápido, el Propeller™ proporciona flexibilidad a través de sus ocho procesadores (llamados "cogs") numerados del 0 al 7. Cada "cog" contiene los mismos componentes (un procesador, RAM local de 2 K -512 registros de 32 bits cada uno-, dos asistentes de I/O y PLLs, un generador de video, un registro de la salida de I/O, un registro de dirección de I/O y otros registros más) y pueden realizar simultáneamente tareas independientes o cooperativas, mientras mantiene una arquitectura relativamente simple fácil de aprender y de utilizar. No tiene ninguna necesidad de usar interrupciones: asigna individualmente tareas de peso a algunos "cogs", mientras que mantiene libres a otros "cogs".
Esta parte:
asigna individualmente tareas de peso a algunos "cogs", mientras que mantiene libres a otros "cogs".
¿Mantener libre a un COG?¿Y eso como se logra?
Hay dos estados: El COG encendido o el COG apagado(se puede encender y apagar un COG cuando se desee desde el codigo de programa).
Si el COG esta apagado, no hace nada. No genera consumo, pero tampoco me aporta beneficio alguno.
Si el COG esta encendido...no veo forma de "mantener libre" a un COG. Al menos de manera que no genere consumo.
Si quiero reemplazar por ejemplo la ausencia de una interrupcion en determinado PIN, esto implica que tengo que tener a un COG constantemente revisando ese PIN hasta que adquiera el estado que deseo.
A mi esto no me parece "mantener libre al COG". Simplemente me parece mantenerlo ocupado(y generando consumo electrico) testeando constantemente el PIN.
Por lo tanto, no logro comprender a que se refiere el autor(el datasheet dice lo mismo, en ingles) con esta parte.
Le doy un 7/10 a mi parecer, al menos hasta que logre echarle las manos encima. Probablemente una vez que lo haya probado, me enamorare y le subire el puntaje.
Si estoy equivocado, por favor indiquenmelo que se los agradecere.
Zaphyrus: Aca tenes el datasheet:
http://www.parallax.com/dl/docs/prod/prop/WebPM-v1.01.pdfPrecios:
P8X32A-D40 (40-pin DIP) chip Order Now $12.95
P8X32A-Q44 (44-pin QFP) chip Order Now $12.95
P8X32A-M44 (44-pin QFN) chip Order Now $12.95
PICmouse, tu que tienes entre manos uno, por favor cuentanos tus experiencias.
Saludos y gracias por la noticia.