Ya hemos dado cuenta en unocero.com de un proyecto con microcontroladores para formar un cluster que pueda hacer cómputo en paralelo. Sin embargo, hay otras ideas que simplifican un proyecto de esta naturaleza y que, además, ayudan a entender lo que significa el paralelismo y cómo implementarlo en equipos de bajísimo costo.
En este caso, el proyecto usa múltiples microcontroladores (MCUs) que cooperan para resolver un problema. Esta ‘computadora paralela’ puede ser usada como un sistema educativo para ayudar a desarrollar, entender y, además, refinar algoritmos en paralelo. Incluso con un poco de esfuerzo puede ser usado para desarrollar soluciones a problemas de procesamiento de señales digitales.
La computadora se construyó usando muchos microcontroladores del tipo PIC24FJ16GA002-I/SP. Sin embargo, el uso eficiente requiere de más esfuerzo, ya que el desarrollo y la implementación de algoritmos en paralelo es una tarea difícil. En este caso, la computadora paralela es del tipo SIMD (Single Instruction Multiple Data), lo que significa que todos los MCUs ejecutan el mismo programa, pero cada uno de los microcontroladores trabajan con datos diferentes. Todos los MCUs ejecutan el código de su memoria interna flash.
Un punto clave en este caso para la implementación del paralelismo es que todos los MCUs deben ejecutar el programa en sincronización absoluta entre ellos. Esto se logra usando un reloj externo común a todos los MCUs y forzándolos a iniciar la ejecución al mismo tiempo. Esto es posible de hacer en la familia PIC24FJxx y se logra controlando las entradas del CLK (reloj) y las entradas de RESET de cada MCU. Hay también un interruptor que prende o apaga el reloj para que se pueda ‘congelar’ la ejecución de código en cualquier momento ya que la computadora en paralelo se ha creado por motivos educativos.
Los MCUs se comunican con los otros MCUs para intercambiar datos, por lo que estamos hablando de una red de MCUs. La topología de la red afecta el diseño de los algoritmos para ser ejecutados estos en la máquina paralela y, además, hay temas de suma importancia como la eficiencia que se puede alcanzar en este tipo de sistemas. Cada MCU de esta computadora en paralelo puede comunicarse a lo más con otros 12 MCUs. Es posible construir redes complejas con mucho más poder de procesamiento (por ejemplo 212 = 4096 MCUs, que pueden ser conectados con una topología de hipercubo). La comunicación de los MCUs se desarrolla a través de una conexión serial usando un UART interno.
A quien le interese este tema, vea los siguientes enlaces, en donde se habla de la descripción del sistema y los archivos asociados al mismo.
Referencia: Uelectronics