CAMPO DE LA TÉCNICA
La presente invención se refiere a una arquitectura híbrida Simple InstrucciónMúltiples Datos (SIMD) /Múltiples Instrucciones-Múltiples Datos (MIMD) , dinámicamente reconfigurable, de un coprocesador que se emplea en sistemas de altas prestaciones para tareas de visión por computador.
La invención presenta una aplicación en sistemas de visión artificial para aplicaciones de vídeo-vigilancia inteligente, guiado de robots, procesado de imagen médica o dispositivos de seguridad en el automóvil, y en general a sistemas que se basen en el procesado de imágenes o vídeo digitales.
ANTECEDENTES DE LA INVENCIÓN
En la actualidad existen una gran variedad de técnicas para procesar imagen y vídeo digital que son ampliamente utilizadas en la industria, algunos ejemplos de estas técnicas son la detección y el seguimiento de objetos o la monitorización de procesos. Estas técnicas suelen tener un elevado coste computacional, que implican un elevado tiempo de cómputo cuando se procesan en sistemas convencionales, como puede ser un
"
ordenador personal, por lo que existe una gran demanda de dispositivos hardware que permiten reducir su tiempo de cómputo. La traslación de la implementación software en un ordenador a dispositivos hardware no es directa y en muchos casos hay que realizar una serie de simplificaciones que reducen la funcionalidad del sistema. Además, los elevados costes computacionales de estas técnicas van en contra de los requerimientos de bajo consumo de potencia, consumo de memoria y forma de las plataformas hardware.
La industria demanda aplicaciones de visión capaces de realizar tareas de
análisis sin afectar a la precisión o al rendimiento del sistema. Los recientes avances en la industria han permitido el desarrollo de sistemas de visión por computador que poseen una gran eficiencia y un gran poder de cómputo, así como bajo consumo de potencia y un reducido coste de ingeniería no recurrente. Debido al elevado coste computacional de muchas aplicaciones industriales, tales como vídeo-vigilancia, guiado de robots o dispositivos de seguridad en el automóvil, los campos de arquitectura de computadores, computación serie y paralela y sistemas inteligentes han sufrido un gran desarrollo durante estos últimos años. Los esfuerzos realizados en estas áreas han ido encaminados al desarrollo de sistemas de procesado de imagen y vídeo. Además de los requerimientos de precisión y rendimiento, a este tipo de sistemas también se les exige la obtención de prototipos en un corto período de tiempo y a un bajo precio.
Los circuitos programables Field Programmable Gate Array (FPGA) se usan ampliamente para reducir el tiempo de cómputo de las aplicaciones de visión por computador. Debido a que las FPGAs ofrecen unas prestaciones menores que los circuitos integrados para aplicaciones específicas, ASIC del inglés Application Specific Integrated Circuit, al permitir reconfigurar el hardware en aplicaciones que requieran que la respuesta del sistema sea un factor crítico el producto final suele ser un ASIC. Sin embargo, en los últimos años las FPGAs han dado un gran salto al incorporar más recursos, como pueden ser bloques de Procesador de Señal Digital, del inglés Digital Signal Processor (DSP) o bloques de memoria RAM, sin un incremento significativo del coste no recurrente. Los Sistemas en Chip, del inglés System on Chip (SoC) , se ven favorecidos, reduciendo el ciclo de desarrollo, por el uso de FPGAs. Así, el uso de uno u otro tipo de circuitos dependerá en gran medida del volumen de producción.
Los sistemas de visión por computador tienen que gestionar eficientemente una serie de operaciones, dependencias entre datos y flujo de datos. Las operaciones matemáticas que se deben realizar en los sistemas de visión por computador se pueden agrupar en:
• Operaciones de bajo nivel simples y repetitivas que trabajan sobre un conjunto de datos elevados, en las que se requiere gran paralelismo. Son operaciones con un patrón regular de acceso a los datos y de control.
• Operaciones de nivel medio en las que existe dependencias en el flujo de datos. Son operaciones que presentan un acceso regular a los datos pero en las que hay un flujo irregular de datos y control.
• Operaciones de alto nivel que trabajan sobre conjuntos complejos y reducidos de datos y que requieren una gran precisión. Debido a su complejidad este tipo de operaciones suelen ser llevadas a cabo por procesadores de propósito general.
Debido a la complejidad de los algoritmos de visión por computador cualquier sistema de propósito general debe ser capaz de abordar estos tres tipos de operaciones, . A causa de la variabilidad de operaciones con las que tienen que trabajar los sistemas de visión por computador se han desarrollado arquitecturas que permiten operar con la diversidad de operaciones empleadas en este tipo de sistemas. Así, se han desarrollado sistemas que permiten resolver operaciones de bajo y medio nivel de forma eficiente, en las que se puede explotar el paralelismo espacial ofrecido por una implementación hardware, y que actúan como aceleradores de procesadores de propósito general, que se encargan de llevar a cabo las operaciones de alto nivel.
Las operaciones de bajo nivel se enmarcan dentro del campo de procesadores SIMD, que están formados por un elevado conjunto de elementos de procesamiento, que realizan la misma operación sobre distintos datos y con los que obtienen un grado de paralelismo espacial elevado. Por contra, las operaciones de nivel medio son tratadas por procesadores MIMD, que están formados por varios elementos de procesamiento, en los que se ejecutan distintas instrucciones sobre distintos datos de acuerdo a flujos irregulares de datos y de control.
Los procesadores SIMD han sido ampliamente utilizados para la resolución de tareas de bajo nivel, pero el desarrollo de técnicas avanzadas de procesado de imágenes y vídeo han propiciado nuevas necesidades, por lo que el desarrollo de procesadores MIMD se ha visto favorecido. Recientemente, se han propuesto procesadores híbridos
que se engloban en la tipología SIMD y MIMD, que combinan características de ambos
tipos de procesadores.
En la [Refeferencia 1] se propone un sistema híbrido SIMD/MIMD cuya funcionalidad queda restringida a multiplicación de matrices, 10 que limita su aplicación en algoritmos de visión por computador complejos, reduciendo su aplicación a operaciones de convolución (operación de bajo nivel) . En la [Referencia 2] se propone un sistema híbrido SIMD/MIMD en el que la funcionalidad de los elementos de procesamiento se define mediante una serie de instrucciones almacenadas en un buffer. Se permite el paso de modo SIMD a MIMD y viceversa aplicando una serie de conmutadores. La principal desventaja de este sistema es que la memoria se encuentra separada de los elementos de procesamiento, con 10 que se reduce la eficiencia del sistema en términos de acceso a datos. En la [Referencia 3] se propone una arquitectura híbrida SIMD/MIMD en la que los elementos de procesamiento SIMD se agrupan en bloques MIMD, 10 que es ineficiente para tareas de visión por computador en las que la presencia de un gran número de elementos de procesamiento que funcionen en modo SIMD es de gran importancia. En la [Referencia 4] se propone un sistema formado por una matriz 2D de elementos de procesamiento, en el que las instrucciones se envían a los elementos de procesamiento mediante el uso de un decodificador de filas y columnas, 10 que es altamente ineficiente en términos de consumo de área. En la [Referencia 5] se propone un sistema en el que la funcionalidad de los elementos de procesamiento está almacenada en memorias dentro del sistema, y por medio de conmutadores se puede elegir la funcionalidad de los elementos de procesamiento. Esta estructura presenta el inconveniente del gran e~pacio de memoria requerida para dotar al sistema de una funcionalidad amplia, ya que se necesitaría un gran número de memorias, 10 que redundaría en el área ocupada. En la [Referencia 6] se propone un sistema híbrido SIMD/MIMD centrado en la gestión de la eficiencia de la comunicación de los elementos de procesamiento con la memoria, que acarrea una gestión complicada de la memoria y limita su aplicación en aplicaciones de visión por computador.
[Refeferencia 1] Xiaofang Wang and Sotirios G. Ziavras. "HERA: A Reconfigurable and Mixed-Mode Parallel Computing Engine on Platform FPGAs", en Proc. ofthe 16th
Intemational Conference on Parallel and Distributed Computing and Systems (PDCS) , MIT, Cambridge, MA, Nov. 9-11, 2004.
[Referencia 2] US 5, 535, 410. 09/1996. Watanabe T. et al. "Parallel processor having decoder for selecting switch from the group of switches and concurrently inputting MIMD instructions while performing SIMD operation".
[Referencia 3] US 7, 853, 775. 14/2010. Shorin Kyo. "Processing elements grouped in MIMD sets each operating in SIMD mode by controlling memor y portion as instruction cache and GPR portion as TAG".
[Referencia 4] US 7, 089, 436. 08/2006. Ming-Hau Lee and Fadi Kurdahi. "Power saving method and arrangement for a reconfigurable array".
[Referencia 5] US 7, 814, 296. 10/2010. Gun-Gi Luyet al. "Arithmetic units responsive to common control signal to generate signals to selectors for selecting instructions from among respective program memories for SIMD / MIMD processing control".
[Referencia 6] EP 2132645. OS/2011. Lieske Hanno and Kyo Shorin. "A data transfer network and control apparatus for a system with an array of processing elements each either self-or common controlled".
DESCRIPCIÓN DE LA INVENCIÓN
La presente invención hace referencia a una arquitectura híbrida SIMD/MIMD de un coprocesador que se puede emplear para el procesado de imagen o vídeo digital en el ámbito de aplicaciones de visión por computador. La arquitectura del coprocesador está diseñada para formar parte de un SoCo Una representación genérica de dicho sistema puede verse en la Figura 1. Un SoC genérico está formado por una unidad central de proceso, del inglés Central Process Unit (CPU) , 101, un coprocesador de imagen, que realiza operaciones de cálculo intensivo, 102, una serie de elementos de Entrada/Salida (E/S) , como son registro de propósito general de entrada y salida, del inglés Global Purpouse Input Output register, 103, un control visualizador, 103, un bus JTAG, 103, un puerto Ethernet, 103, un bus USB, 103, un controlador de memoria multipuerto, 103, y un subsistema Video Entrada/Salida (E/S) , 103, Y que permiten la comunicación del SoC con el exterior, ya sea con dispositivos de visualización o captura de datos o con una memoria externa, una memoria flash interna, 104, un gestor de control de interrupciones, 105, un módulo para gestionar el acceso directo a una memoria exterior; del inglés Direct Memor y Access (DMA) , 106. En este SoC el coprocesador, cuya realización es objeto de la presente invención, actúa como un acelerador de la CPU principal llevando a cabo aquellas tareas de procesado de imagen que requieran de un elevado rendimiento.
La arquitectura del coprocesador, Figura 2, comprende un conjunto de elementos de procesamiento, PE del inglés Processing Element, 201, formado por 2 o más elementos, un procesador de entrada programable, 202, PIP del inglés Programmable Input Processor, un procesador de salida programable, 203, POP del inglés Programmable Output Processor, una cola de entrada serie-salida paralela, 204, SIPO del inglés Serial Input-Parallel Output, una cola de entrada paralela-salida serie, PISO del inglés Parallel Input-Serial Output, 205, una interfaz para leer la memoria externa, 206, una interfaz para escribir en la memoria externa, 207, un módulo de control SIMD global, 208, un conjunto de interconexiones directas entre los elementos de procesamiento, 209, y una red de conexión local, 210.
En la presente invención, 201, se organizan pudiendo operar en dos modos diferentes, SIMD y MIMD. En el modo SIMD todos los elementos de procesamiento realizan la misma operación sobre distintos datos, mientras que en el modo MIMD cada elemento de procesamiento realiza una operación diferente sobre distintos datos. Los interfaces de lectura de memoria y de escritura de memoria se encargan, respectivamente, de obtener datos y enviar datos a una memoria externa en la que se almacenan los datos a procesar por el coprocesador (lectura) y los resultados obtenidos por el mismo (escritura) . Las conexiones directas entre elementos de procesamiento, 209, permiten el intercambio de datos entre un elemento de procesamiento y sus dos vecinos adyacentes, situados a izquierda y derecha cuando el sistema funciona en modo SIMD, organizándose los elementos de procesamiento de acuerdo a un array ID. La red local de conexión, 210, posibilita el intercambio de datos entre elementos de procesamiento adyacentes cuando el sistema funciona en modo MIMD, permitiendo la distribución de los elementos de procesamiento de acuerdo a organizaciones complejas, como una estructura de Toro o de Hipercubo, tal y como se detallarán más adelante. En esta arquitectura la cola SIPO, 204, se encarga de distribuir los datos provenientes de memoria, proporcionados por el PIP (202) , a los elementos de procesamiento cuando estos trabajan en modo SIMD. Por otro lado, la cola PISO, 205, se encarga de enviar los datos procesados por los elementos de procesamiento, cuando estos trabajan en modo SIMD, a la memoria externa a través del POP, 203.
El PIP, 202, se encarga de gestionar la comunicación con la memoria externa para obtener los datos que se procesarán, mientras que el POP, 203, se encarga de recoger los datos suministrados por los elementos de procesamiento y mandarlos a la memoria externa. Aunque la funcionalidad del PIP y el POP es complementaria, encargándose el primero de la lectura de datos de memoria y el segundo de escritura de datos en la memoria, su estructura es idéntica y se muestra en la Figura 3. Ambos procesadores trabajan en paralelo, posibilitando el solape de operaciones de acceso a memoria cuando sea posible. Para soportar los distintos patrones de acceso a memoria que presentan los distintos algoritmos de visión por computador, tanto el PIP como el POP calculan automáticamente direcciones de memoria usando un conjunto de registros reconfigurables, 302, y una unidad aritmética y lógica, 303, ALlJ del inglés Arithmetic and Logic Unit. Los procesadores PIP y POP tienen una memoria de Almacenamiento de programa, 301, en la que está almacenado el programa que ejecutan el PIP y el POP, la programación de estos procesadores la realiza la CPU, 101, adaptando de esta forma dinámicamente las necesidades de cómputo. Estos procesadores permiten el alineamiento automático de datos procedentes de la memoria externa, eligiendo de qué forma llegan estos a los elementos de procesamiento, facilitando así el desarrollo de algoritmos de visión por computador en esta arquitectura. Tanto el PIP como el POP incorporan una caché, 304, que permite el envío de ráfagas de datos entre la memoria externa y el PIP o el POP a través de la interfaz de red, 305, que permite la comunicación de la memoria caché con la cola entrada serie-salida paralela cuando los elementos de procesamiento trabajan en modo SIMD o con la red de conexión local cuando estos trabajan en modo MIMD. Para leer datos el sistema tiene una interfaz (306 y 307) que permite la comunicación de la memoria caché con una memoria externa para leer datos de la misma cuando los elementos de procesamiento trabajan en modo SIMD
(306) y MIMD (307) .
La generación de las direcciones de memoria se lleva a cabo empleando aritmética entera y un conjunto de registros, organizados en forma d{~ cuartetos, 302, que configuran el patrón de acceso a la memoria. El cuarteto de registros consiste en un registro base, que proporciona la dirección base del patrón de acceso a memoria, un registro índice, que proporciona el desplazamiento relativo dentro del conjunto de datos a los que se accede, un registro de incremento, que proporciona el incremento del índice después de cada operación de lectura, y un registro de módulo que indica el tipo de aritmética de generación de direcciones que se puede emplear, y que puede ser:
• Lineal: es el modo de generación de direcciones más sencillo y el empleado por defecto, consiste en incrementar o disminuir el índice de acuerdo al valor almacenado en el registro de incremento.
• Módulo: en este modo el valor del índice permanece dentro de unos márgenes de forma automática sin ninguna intervención de alguna instrucción de control específica, fijando el registro de módulo a un límite superior, M. Para obtener el valor del índice se incrementa o reduce su valor y se realiza una operación módulo M, que proporciona el nuevo valor, que queda restringido al rango O-M. Esta aritmética de direccionamiento es útil para buffers circulares, colas FIFO, del inglés First In First Out, o para aplicar el mismo algoritmo sobre distintos bloques de datos de la memoria.
• Acarreo inverso: en este caso el bit de acarreo se propaga en dirección inversa, desde el bit más significativo, del inglés Most Significative Bit (MSB) , al bit
menos significativo, del inglés Less Significative Bit (LSB) . Esta aritmética de direccionamiento es equivalente a cambiar el orden de los bits de los datos y del resultado y es útil para trabajar con algoritmos que empleen la transformada de Fourier rápida, del inglés Fast Fourier Transform (FFT)
El PIP Y el POP operan en paralelo, por 10 que cada uno de ellos puede proporcionar una dirección de memoria válida en cada ciclo. Para aumentar la flexibilidad del PIP Y el POP los registros del cuarteto de reglstros se pueden tratar como registros de datos y realizar sobre ellos operaciones de adiclón o substracción para modificar sus valores. Este tipo de operación se puede realizar en tiempo de ejecución. ASÍ, el PIP permite el envío de datos procedentes de la memoria externa hacia la cola SIPO (modo SIMD) ya la red de conexión local (modo MIMD) , mientras que el POP permite recibir datos de la cola PISO (modo SIMD) y la red de conexión local (modo MIMD) para enviarlos a la memoria externa.
El conjunto de PEs es la parte más importante de la presente arquitectura, ya que define la funcionalidad con la que se dota al sistema. El conjunto de PEs está formado por elementos de procesamiento conectados a través de una red de conexión local y de conexiones locales directas entre PEs adyacentes, como se muestra en la Figura 2. El PE tiene un conjunto de instrucciones reducido, del inglés Reduced Instruction Set Computer (RISC) , que permite segmentar y paralelizar los algoritmos de visión por computador de forma eficiente. El PE consiste esencialmente en una ALU, 407, que opera en punto fijo y punto flotante, un banco de registros, 402, que almacena datos, un elemento de memoria, 405, que consiste esencialmente en una memoria de acceso aleatorio, del inglés Random Access Memor y (RAM) , y que almacena datos con los que opera el elemento de procesamiento y varía su funcionamiento dependiendo de si el coprocesador trabaja en modo MIMD, 403, o SIMD, 404, como se detallará más adelante, un conjunto de colas FIFO, 401, que almacena los datos que vienen de la red de conexión local, 410, a través de la interfaz de red, 409, y permite realizar la sincronización de los distintos elementos de procesamiento cuando éstos operan en modo MIMD ya que permiten realizar la escritura y lectura de forma simultánea aunque las frecuencias de lectura y escritura sean distintas, un selector de datos, 411, que permite seleccionar los datos con los que opera la ALU de entre los datos provenientes de la red de conexión local a través de la cola de FIFO, del banco de registros, del elemento de memoria o de los elementos de procesamiento adyacentes, 406, una unidad de control MIMD, 408, que gestiona el comportamiento del elemento de procesamiento cuando opera en modo MIMD. En modo de funcionamiento SIMD un módulo de
control SIMD local (412) basado en banderas (Control Flag) permite programar la funcionalidad del elemento de procesamiento. La ALU, 407, puede operar con hasta 3 datos simultáneamente y permite la realización de 3 tipos de operaciones diferentes:
• Operaciones básicas aritméticas, que consisten en operaciones de suma, resta, multiplicación.
• Operaciones de DSP, que consisten en operaciones de multiplicaciónadición, adición-multiplicación, cálculo del valor absoluto, cálculo del valor absoluto-resta o comparaciones.
• Operaciones de cálculo del máximo y mínimo de un conjunto de datos.
• Operaciones booleanas, que consisten en operaciones de desplazamiento 15 y operaciones a nivel de bit (bitwise operations) .
• Operaciones de conversión del tipo de datos: conversión a punto flotante, punto fijo y entero.
A modo ilustrativo y sin limitar el alcance de la invención se muestran algunas instrucciones soportadas en la Tabla 1.
Tabla 1. Ejemplo de juego de instrucciones.
A+B
ADD Aritméticas
A-B
SUB A*B
MULT Max (A, B)
MAX
Cálculo máximos y mínimos
MIN (A, B)
MIN Abs (A)
ABS
A=A+B*C
MAC Operaciones DSP
(A+B) *C
AMUL Cmp=
CMPEQ Cmp<
CMPLT Cmp<=
CMPLE y
AND o
OR
Operaciones booleanas ANDNOT
yno
o exclusivo
XOR desplazamiento izquierda
SLL Operaciones de desplazamiento
desplazamiento derecha aritmética derecha
SRA
Se describen a continuación los dos modos de funcionamiento de la arquitectura de coprocesador: SIMD y MIMD.
ModoSIMD:
En este modo de funcionamiento todos los elementos de procesamiento realizan la misma operación sobre distintos datos y la estructura del conjunto de elementos de procesamiento adopta la forma mostrada en la Figura 5, en la que podemos identificar el PIP, 501, que suministra datos a los elementos de procesamiento, 506, a través de la cola SIPO, 503, el POP, 502, que recoge los resultados proporcionados por los elementos de procesamiento a través de la cola PISO, 504, la unidad de control SIMD global, 505, que indica la operación que realizan los elementos de procesamiento, y el conjunto de conexiones entre elementos de procesamiento adyacentes, 507, que permite el intercambio de datos entre elementos de procesamiento de forma rápida. La unidad de control SIMD global almacena el programa que ejecutan los elementos de procesamiento y realiza el cálculo de direcciones de memoria, mediante una ALU interna calcula 3 direcciones de memoria en cada ciclo. El cálculo de direcciones es idéntico al realizado por PIP y POP. Incluye un banco de registros para almacenar los valores de Base, Índice, Incremento y Módulo, aunque en este caso hacen referencia al banco de memoria interno de cada PE y no a la memoria RAM externa. El SIMD global también decodifica la instrucciones y aserta las banderas de control. La principal ventaja de este modo de operación es el elevado grado de paralelismo que se obtiene ya que todos los elementos de procesamiento realizan la misma tarea de forma conjunta. La cola PISO, que recoge los datos y los manda al POP permite que los elementos de procesamiento puedan seguir procesando datos sin tener que esperar a que los datos sean transferidos al exterior, ya que se almacenan en la cola PISO yes el POP el que gestiona el envío de los Jatos a la memoria externa.
El elemento de procesamiento, en este modo de funcionamiento, se organiza de acuerdo a la arquitectura mostrada en la Figura 6. En este modo de funcionamiento la ALU, 604, puede operar con datos provenientes de la cola SIPO, 607, que se almacenan en el elemento de memoria, 601, del banco de registros, 602, o de los vecinos adyacentes, 605 y 606. La selección de datos se realiza mediante un selector de datos,
603. El módulo de Banderas de Control recibe las señales de la unidad de control global SIMD, 208, que son decodificadas y definen la operación que realiza el elemento de procesamiento.
En la Fig. 7 se resume el modo de funcionamiento de la arquitectura cuando los elementos de procesamiento trabajan en modo SIMD. En primer lugar se cargan los programas a ejecutar en el PIP, POP y SIMD control, quedando estos en modo de esp~ra hasta que reciben una señal de inicio. A continuación el PIP busca el bloque de datos en la memoria externa indicado en los cuartetos de registros que proporcionan las direcciones de memoria. Los datos se copian en la cola SIPO hasta que ésta se llena, mientras tanto el resto de los módulos se encuentran en modo de espera, según se indica en la Fig. 7. Una vez que la cola SIPO se ha llenado los datos se envían a las memorias locales de los elementos de procesamiento. Una vez que los elementos de procesamiento han recibido los datos comienzan a operar sobre ellos de acuerdo a la funcionalidad con la que han sido programados. Simultáneamente con este proceso, la cola SIPO carga nuevos datos, que no se pueden mandar a los elementos de procesamiento ya que estos están ocupados procesando los datos recibidos anteriormente. Una vez que los elementos de procesamiento han finalizado envían los resultados a la cola PISO y al mismo tiempo la cola SIPO vuelca nuevos datos a los elementos de procesamiento. El POP extrae los datos de la cola PISO y los envía a la memoria externa de acuerdo a las direcciones proporcionadas por los cuartetos de registros de direcciones del POPo El proceso se repite hasta que el PIP, SIMD control y el POP generan una señal de finalización de programa.
En este modo de funcionamiento los elementos de procesamiento trabajan de forma coordinada pero cada uno ejecutando su propio conjunto de instrucciones sobre datos diferentes. En modo MIMD los elementos de procesamiento trabajan de acuerdo a una Red de Procesos de Kahn, del inglés Kahn Process Network (KPN) . Así, el algoritmo que ejecuta el coprocesador se divide en varias partes, una de las partes es la encargada de proporcionar datos a los elementos de procesamiento y está almacenada en el procesador PIP, otra parte es la encargada de extraer los resultados, que está almacenada en el procesador POP y finalmente otra parte proporciona un programa por elemento de procesamiento que incluye la funcionalidad, control de flujo de datos y acceso a la red de conexión local por parte de los distintos elementos de procesamiento. En este modo de funcionamiento la arquitectura del coprocesador se puede configurar como una estructura Toro 2-D, hipercubo u otra disposición de los elementos de procesado que se adapte mejor al conjunto de algoritmos que se pretenden desarrollar. En la Fig.8 se ilustra una realización de la arquitectura trabajando en modo MIMD en la que se ha adoptado una topología de conexiones de Toro 2-D. En cualquier caso, la red fisica quedará fijada y no puede modificarse. El elemento de procesamiento, en este modo de funcionamiento, adopta la estructura de la Fig. 9, que consiste esencialmente en un elemento de memoria, 901, que almacena tanto datos como el programa que ejecuta el elemento de procesamiento, una unidad de control MIMD, 902, que gestiona el funcionamiento del elemento de procesamiento, un interfaz de comunicación con la red de conexión local de entrada, 903, y de salida, 904, que permite el intercambio de datos entre los distintos elementos de procesamiento, un banco de registros, 909, que permite trabajar con datos provenientes del elemento de memoria evitando su latencia de acceso a los datos, un conjunto de colas FIFO, 907, tantas como vecinos estén conectados al elementos de procesamiento, que almacenan los datos provenientes de la red de conexión local, un valor inmediato, 909, que permite definir una constante predefinida con la que se puede operar, y que viene determinada en la propia instrucción que se carga en el elemento de procesamiento, una ALU, 905, que permite operar hasta con 3 elementos, un selector de datos, 906, que proporciona datos provenientes del banco de registros, de la red de conexión local o del valor inmediato a la ALU y un selector de datos, 908, que permite seleccionar qué cadena del flujo de datos proveniente de la red de conexión local se envía a la ALU.
En la Fig. 10 s, e puede ver el modo de funcionamiento de la arquitectura cuando los elementos de procesamiento trabajan en modo MIMD. En este caso se envían datos de distinto tamaño a los distintos elementos de procesamiento y cada uno de los elementos de procesamiento ejecuta sus propias operaciones sobre los datos recibidos. Así, el proceso se inicia con la carga de los programas en el PIP, POP y en los elementos de procesamiento. El PIP suministra los datos a los procesadores de acuerdo a la programación realizada. Una vez que los elementos de procesamiento reciben los datos comienzan a procesarlos. Finalmente, el POP extrae los resultados de los elementos de procesamiento y los envía a la memoria externa de acuerdo a las direcciones proporcionadas por los cuartetos de registros de direcciones del POP.
La descripción de la arquitectura se realiza mediante un lenguaje de descripción de hardware y permite su implementación directa sobre una FPGA o ASIC definiendo previamente la configuración de los parámetros del sistema, como son:
1. Número de elementos de procesamiento.
2. Longitud de las palabras de datos.
3. Capacidad de las memorias de los elementos de procesamiento.
4. Capacidad de los bancos de registros de los elementos de procesamiento.
5. Longitud de las colas.
6. Topología de interconexión entre los elementos de procesamiento.
7. Tipo de operaciones que implementan las ALUs de los elementos de procesamiento.
Este grado de configuración ofrece una funcionalidad muy elevada al coprocesador al permitir adaptar el funcionamiento a la aplicación específica.
BREVE DESCRIPCIÓN DE LAS FIGURAS
Las realizaciones de la invención son ilustradas a modo de ejemplo y no actúan de modo limitante, en las figuras que se acompañan:
La Fig. 1 muestra la arquitectura de un sistema para el procesado de imágenes y/o vídeo en sistemas de visión por computador.
La Fig. 2 muestra la arquitectura del coprocesador objeto de la presente invención, en la que se distinguen las distintas partes del mismo.
La Fig. 3 muestra la arquitectura de los procesadores que gestionan el intercambio de
información con la memoria, el PIP yel POPo La Fig. 4 muestra la arquitectura del elemento de procesamiento del coprocesador objeto de la presente invención.
La Fig. 5 muestra la arquitectura del coprocesador objeto de la presente invención
cuando funciona en modo SIMD. La Fig. 6 muestra la arquitectura de un elemento de procesamiento cuando trabaja en modo SIMD.
La Fig. 7 muestra el cronograma de operaciones de la arquitectura cuando los elementos
de procesamiento trabajan en modo SIMD. La Fig. 8 muestra una realización de la topología de conexiones en forma de Toro 2-D entre los elementos de procesamiento cuando estos trabajan en modo MIMD.
La Fig. 9 muestra la configuración de un elemento de procesamiento en modo MIMD. La Fig. 10 muestra el cronograma de operaciones de la arquitectura cuando los 15 elementos de procesamiento trabajan en modo MIMD.