ES2357923B1 - Sistema de procesamiento de datos y dispositivo de computación. - Google Patents

Sistema de procesamiento de datos y dispositivo de computación. Download PDF

Info

Publication number
ES2357923B1
ES2357923B1 ES200902000A ES200902000A ES2357923B1 ES 2357923 B1 ES2357923 B1 ES 2357923B1 ES 200902000 A ES200902000 A ES 200902000A ES 200902000 A ES200902000 A ES 200902000A ES 2357923 B1 ES2357923 B1 ES 2357923B1
Authority
ES
Spain
Prior art keywords
data
column
synchronization
computing devices
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
ES200902000A
Other languages
English (en)
Other versions
ES2357923A1 (es
Inventor
Giulio Ruffini
Esteve Farres
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Starlab Barcelona SL
Original Assignee
Starlab Barcelona SL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Starlab Barcelona SL filed Critical Starlab Barcelona SL
Priority to ES200902000A priority Critical patent/ES2357923B1/es
Priority to EP10824491.4A priority patent/EP2490129A4/en
Priority to PCT/ES2010/000416 priority patent/WO2011048237A1/es
Publication of ES2357923A1 publication Critical patent/ES2357923A1/es
Application granted granted Critical
Publication of ES2357923B1 publication Critical patent/ES2357923B1/es
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)

Abstract

Sistema de procesamiento de datos y dispositivo de computación.#El sistema comprende:#- unos dispositivos de computación que procesan en paralelo parte de un algoritmo, de manera concurrente y sincronizada;#- unos medios de comunicación que interconectan a dichos dispositivos de computación entre sí;#- unos medios de control conectados con dichos medios de comunicación y con dichos dispositivos de computación y previstos para controlarlos;#- unos medios de sincronización que comprenden, en uno (T1) o más de dichos dispositivos de computación, una unidad de monitorización y desbloqueo (Ua) configurada para comparar los datos de las entradas (a, b) de su dispositivo de computación (T1) con una condición lógica determinada y, si existe coincidencia, generar una señal de desbloqueo de una unidad de procesamiento (U1) del dispositivo de computación (T1).#El dispositivo está configurado para formar, con otros dispositivos, un sistema de procesamiento como el propuesto.

Description

Sistema de procesamiento de datos y dispositivo de computación.
Sector de la técnica
La presente invención concierne, en general, y en un primer aspecto, a un sistema de procesamiento de datos formado por unos dispositivos de computación operando en paralelo para procesar, en su conjunto, un algoritmo, de manera concurrente y sincronizada, dividiendo el algoritmo en partes y distribuyéndolas entre los dispositivos de computación, y en particular a un sistema que comprende unos medios de sincronización integrados en los dispositivos de computación.
Un segundo aspecto de la invención concierne a un dispositivo de computación configurado para formar, con otros dispositivos de computación análogos, un sistema de procesamiento como el propuesto por el primer aspecto.
Estado de la técnica anterior
Son conocidos, desde hace mucho tiempo, sistemas de procesamiento en paralelo orientados a concurrencia que ejecutan una tarea, algoritmo o aplicación con un cierto grado de complicación, mediante la utilización de una pluralidad de procesadores interconectados, con una capacidad de procesamiento limitada, de manera que no se requiere de la inclusión de elementos con una alta capacidad de procesamiento, que en ocasiones, en función de las tareas a ejecutar, podrían estar infrautilizados, sino que el trabajo a realizar se reparte entre parte o la totalidad de los referidos procesadores de capacidad de procesamiento limitada.
Uno de tales procesadores de capacidad de procesamiento limitada que alcanzó gran fama tiempo atrás, para constituir dichos sistemas de procesamiento paralelo y concurrente, es el conocido como “transputer”, cuya utilización con el paso de los años disminuyó considerablemente.
Existen numerosos documentos de patente que describen propuestas relativas a dichos sistemas de procesamiento en paralelo. A continuación se exponen algunos de ellos, como muestra significativa del estado de la técnica.
En la solicitud de patente EP-A-0570729 se describen, en su apartado de estado de la técnica, diferentes propuestas de sistemas que incluyen procesadores trabajando en paralelo, incluyendo “transputers” (tal como el “Inmos Transputer T800”), topologías de interconexionado en forma de hipercubo, etc. En particular, en dicha solicitud se propone un sistema para procesar de manera masiva, y en paralelo, diferentes aplicaciones, que incorpora una pluralidad de elementos con capacidad de memoria y de multiprocesamiento, o PMEs, que en dicha solicitud se definen como unos elementos muy similares a los conocidos de manera convencional como “transputers”. Según un ejemplo de realización descrito en EP-A-0570729, se propone interconectar a los PMEs mediante una topología de hipercubo modificada, que básicamente consiste en combinar una topología de hipercubo con una de anillo. Asimismo, se indica que cada PME tiene capacidad para procesar tanto instrucciones SIMD como MIMD. También se indica en EP-A0570729 la posibilidad de “customizar”, es decir programar a medida, los diseños lógicos o las funciones a ejecutar por unas sub-secciones de cada PME.
La patente US5016163 propone un sistema de procesamiento en paralelo formado por una pluralidad de “transputers” interconectados, por ejemplo mediante un hipercubo. El sistema incluye unos medios de control que dividen un algoritmo en sub-algoritmos, los cuales asignan a cada uno de los “transputers”, con el fin de realizar un procesamiento en paralelo de dicho algoritmo.
Otros de tales procesadores de capacidad de procesamiento limitada son los denominados ASIP (Procesador de Aplicación de Instrucción Específica), los cuales en ocasiones incluyen además de unas instrucciones básicas unas instrucciones a medida, o “custom”, tal como se describe, por ejemplo, en los siguientes dos documentos de patente.
En la solicitud de patente EP-A-1701250 se propone un microordenador formado por un microprocesador con capacidad para funcionar en un modo ASIP, para el cual el microprocesador se diseña con un conjunto de instrucciones básicas y con un conjunto de instrucciones “custom”, es decir a medida, con su correspondiente hardware a medida. En dicha solicitud se indican como ASIPs disponibles comercialmente los siguientes: “Altera’s NIOS”, descrito en “Nios embedded processor system developement”, “Tensilica’s Xtensa”, descrito por R.E. González en “Xtensa: A configurable and extensible processor”, IEEE Micro, 20(2), 2000; y “HP’s and STMicroelectronics’ Lx”, descritos por P. Faraboschi et al. en “Lx: a technology platform for customizable VLIW embedded processing”, Proc. of ISCA, 2000.
En la patente US7398502 se propone un método y un sistema para realizar un procesamiento concurrente con una FPGA. En su apartado de estado de la técnica se dan por conocidas propuestas relativas a la utilización de un conjunto de instrucciones a medida en un ASIP, adicionales a un conjunto de instrucciones convencionales, así como de arquitecturas de memoria también a medida.
Uno de los grandes problemas que afectan a la mayoría de sistemas de procesamiento en paralelo orientados a concurrencia, y que hizo que los mismos no tuviesen tanto éxito como se preveía en un principio, es el relativo a la sincronización de los diferentes elementos del sistema, que puede provocar desde errores en los resultados, debidos por ejemplo a que el inicio del procesamiento por parte de un segundo procesador del sistema de unos datos disponibles en una memoria se produzca antes de que un primer procesador haya registrado el resultado de su procesamiento en dicha memoria, hasta una baja eficiencia del sistema en general, por ejemplo por tener trabajando a dicho segundo procesador antes de lo debido.
Es conocida la utilización, en tales sistemas, de mecanismos de sincronización implementados mediante software, en particular se tiene conocimiento de la utilización de la instrucción denominada “alting” en el lenguaje de procesos OCCAM.
Explicación de la invención
Los presentes inventores consideran que es necesario ofrecer una alternativa al estado de la técnica que supere los inconvenientes de los que adolecen los sistemas convencionales, en particular por lo que se refiere a los medios utilizados para llevar a cabo la mencionada sincronización.
Con tal fin, la presente invención concierne, en un primer aspecto, a un sistema de procesamiento de datos, que comprende de manera en sí conocida:
-
una pluralidad de dispositivos de computación operando en paralelo para procesar, cada uno de ellos, parte de un algoritmo, de manera concurrente y sincronizada;
-
unos medios de comunicación configurados para interconectar, por unas respectivas entradas y salidas de datos, a dichos dispositivos de computación entre sí; y
-
unos medios de control en conexión con dichos medios de comunicación y con dichos dispositivos de computación, y previstos para controlarlos.
A diferencia de los sistemas convencionales, el propuesto por el primer aspecto de la presente invención comprende unos medios de sincronización que comprenden, en parte o en la totalidad de dichos dispositivos de computación, una unidad de monitorización y desbloqueo, en conexión con las entradas de su respectivo dispositivo de computación y configurada para comparar los datos de dichas entradas con unos datos relativos a una condición lógica determinada, y para generar una señal de desbloqueo con el fin de desbloquear el funcionamiento, previamente bloqueado, de como mínimo una unidad de procesamiento del dispositivo de computación, en función de que exista coincidencia de datos en dicha comparación.
Se consigue así mantener en un estado de suspensión, o “standby”, a parte del dispositivo de computación, como mínimo a su unidad de procesamiento, mientras los datos disponibles en su entrada no son los adecuados para su procesamiento por su parte, es decir no cumplen la mencionada condición lógica determinada. Con ello se logra no hacer trabajar inútilmente a dicha unidad de procesamiento cuando no es necesario, disminuyendo así el consumo total del sistema y aumentando la eficiencia y el aprovechamiento de los recursos del sistema al mantener en suspensión a las unidades de procesamiento, y opcionalmente a otros elementos asociados a las mismas, de varios de los dispositivos de computación incluidos en el sistema, cuando no es necesario que estén operando.
Por lo que se refiere a la entrada en el mencionado estado de suspensión, es decir al bloqueo de la unidad de procesamiento de un dispositivo de computación, para llevarla a cabo en el sistema propuesto por el primer aspecto de la invención, los mencionados medios de sincronización comprenden, en parte o en todos los dispositivos de computación, unos medios de bloqueo/desbloqueo configurados para bloquear el funcionamiento de como mínimo dicha unidad de procesamiento de su respectivo dispositivo de computación.
Para un ejemplo de realización dichos medios de bloqueo/desbloqueo están en conexión con dichos medios de control y con dicha unidad de procesamiento de su respectivo dispositivo de computación, y están configurados para llevar a cabo dicho bloqueo del funcionamiento de como mínimo dicha unidad de procesamiento bajo el mando de dichos medios de control.
Los medios de bloqueo/desbloqueo están conectados, para un ejemplo de realización, con una salida de la unidad de monitorización y desbloqueo, y configurados para llevar a cabo dicho desbloqueo del funcionamiento de como mínimo dicha unidad de procesamiento, en respuesta a la recepción de dicha señal de desbloqueo.
En relación con el mencionado bloqueo, para un ejemplo de realización alternativo éste no se lleva a cabo bajo el mando de los medios de control, sino que los medios de bloqueo/desbloqueo comprenden a la unidad de monitorización y desbloqueo, estando ésta configurada también para generar una señal de bloqueo con el fin de bloquear el funcionamiento de como mínimo dicha unidad de procesamiento, en función de que exista discrepancia de datos en dicha comparación, es decir que si los datos de entrada no cumplen con la mencionada u otra condición lógica determinada, la propia unidad de monitorización y desbloqueo actúa también como una unidad de bloqueo, deteniendo el funcionamiento de la unidad de procesamiento.
En cuanto a la configuración de cada uno de los dispositivos de computación incluidos en el sistema propuesto por el primer aspecto de la invención, para un ejemplo de realización cada uno de ellos comprende como mínimo una unidad de procesamiento, una memoria interna, y, formando parte de dichos medios de comunicación, como mínimo dos puertos de entrada de datos y un puerto de salida de datos.
Según un ejemplo de realización los dispositivos de computación son unos respectivos “transputers”, o similar.
Para un ejemplo de realización preferido el conjunto de todas las memorias internas de todos los dispositivos de computación conforman el total de memoria del sistema utilizable para el procesamiento de dicho algoritmo, diferenciándose de los sistemas convencionales que incluyen memoria externa a los diferentes dispositivos de computación, cuyo acceso para registrar datos en la misma o para extraerlos, por parte de los dispositivos de computación, aumenta los problemas de sincronismo del sistema en general.
Los medios de control están configurados para controlar a los medios de comunicación para realizar una interconexión lógica entre los dispositivos de computación implementando una determinada topología, seleccionable de entre una pluralidad de topologías, en función del ejemplo de realización, siendo una de dichas topologías una topología de hipercubo de n dimensiones, y/o para que los medios de comunicación permitan que el sistema opere según una técnica de multidifusión.
Para un ejemplo de realización los medios de control tienen acceso a datos referentes a dicha pluralidad de topologías, las cuales son predeterminadas, y están configurados para seleccionar dicha topología determinada, de manera automática o previa intervención de un usuario, seleccionando los datos referentes a la misma.
Mediante la conexión con los dispositivos de computación, los medios de control están configurados, para un ejemplo de realización, para controlarlos para que adapten su funcionamiento a la topología implementada y/o a dicha multidifusión.
Si bien para un ejemplo de realización básico las conexiones entre dispositivos de conmutación pertenecientes a los medios de comunicación solamente transmiten datos, para otro ejemplo de realización más elaborado al menos parte de dichas conexiones están configuradas para implementar una función adicional a la de la simple transmisión de datos.
Para una variante de dicho ejemplo de realización más elaborado, dicha función adicional consiste en almacenar de manera temporal unos datos a transmitir a un dispositivo de computación, para lo cual cada una de dichas conexiones configuradas para implementar dicha función adicional comprende una memoria interna donde llevar a cabo dicho almacenamiento bajo el control de los medios de control.
En general todos dichos dispositivos de computación tienen una arquitectura interna igual en al menos la mayor parte de sus componentes.
Para un ejemplo de realización cada unidad de procesamiento es una unidad aritmético-lógica, ALU, y existen diferentes diseños de ALUs en función de la tarea a ejecutar para la cual se encuentre dedicado el dispositivo de computación al que pertenezcan.
El sistema propuesto por el primer aspecto de la invención, para un ejemplo de realización, es modular, siendo cada uno de los dispositivos de computación un módulo, y estando los medios de control configurados para seleccionar, de manera automática o previa intervención de un usuario, el número y tipo de módulos a incluir en el sistema, así como las conexiones entre los mismos, en función del algoritmo a ejecutar.
Una aplicación de interés del sistema propuesto, y para la cual se encuentra adaptado, es la conocida como “streaming”, es decir la consistente en realizar un procesamiento de datos en tiempo real.
Un segundo aspecto de la presente invención concierne a un dispositivo de computación configurado para procesar parte de un algoritmo, de manera concurrente y sincronizada con otros dispositivos de computación análogos.
El dispositivo de computación propuesto por el segundo aspecto de la invención comprende, a diferencia de los dispositivos de computación convencionales, unos medios de sincronización que comprenden una unidad de monitorización y desbloqueo, en conexión con las entradas de dicho dispositivo de computación y configurada para comparar los datos de dichas entradas con unos datos relativos a una condición lógica determinada, y para generar una señal de desbloqueo con el fin de desbloquear el funcionamiento, previamente bloqueado, de como mínimo una unidad de procesamiento del dispositivo de computación, en función de que exista coincidencia de datos en dicha comparación.
Para un ejemplo de realización preferido, el dispositivo de computación propuesto por el segundo aspecto de la invención reúne las características técnicas de uno de los dispositivos de computación del sistema propuesto por el primer aspecto de la invención.
Breve descripción de los dibujos
Las anteriores y otras ventajas y características se comprenderán más plenamente a partir de la siguiente descripción detallada de unos ejemplos de realización con referencia a los dibujos adjuntos, que deben tomarse a título ilustrativo y no limitativo, en los que:
la Fig. 1 es un diagrama de bloques que ilustra de manera esquemática el dispositivo de computación propuesto por el segundo aspecto de la invención, a incluir en el sistema propuesto por el primer aspecto, para un ejemplo de realización;
las Figs. 2a y 2b ilustran, también de manera esquemática, al sistema propuesto por el primer aspecto de la invención, para un ejemplo de realización para el que éste está aplicado al procesamiento de señales provinentes de un sistema GNSS-R;
la Fig. 3 ilustra en detalle al microsecuenciador del dispositivo de computación de la Fig. 1;
la Fig. 4 muestra al sistema de procesamiento de señales digitales de un sistema GNSS-R aplicado a la determinación del mapeo Doppler de retardo DDM (Delay Doppler Map) de una superficie, ilustrándose dicho sistema de procesamiento dividido en módulos o bloques, la función de cada uno de los cuales es llevada a cabo por uno o más respectivos dispositivos de computación del sistema propuesto por el primer aspecto de la invención, según el ejemplo de realización de las Figs. 2a y 2b o según otro ejemplo de realización distinto al menos en parte;
la Fig. 5a ilustra uno de los registros de la unidad de “alting” Ua incluida en el dispositivo de computación de la Fig. 1, para un ejemplo de realización; y
la Fig. 5b ilustra la parte del registro de la Fig. 5a correspondiente a los bits etiquetados como “máscara”.
Descripción detallada de unos ejemplos de realización
Haciendo en primer lugar referencia a la Fig. 1, en ella se ilustra de manera esquemática a un dispositivo de computación T1 representativo tanto del propuesto por el segundo aspecto de la invención, para un ejemplo de realización para el que éste es un transputer denominado en el presente apartado como transputer WARP, como de cualquiera de los incluidos en el sistema propuesto por el primer aspecto de la invención, o sistema WARP (siglas de los términos en inglés: “WAveform Rendering Process”).
El transputer WARP es un ASIP (“Application Specific Instruction Set Processor”: “Procesador de Aplicación de conjunto de Instrucciones Específicas”), con un conjunto de instrucciones configurables hechas a medida para implementar efectivamente una aplicación específica. Esta especialización del núcleo proporciona un compromiso entre la flexibilidad de una CPU de propósito general y el rendimiento de un ASIC (“Specific Application Integrated Circuit”: “Circuito Integrado de Aplicación Específica”).
Siguiendo con la descripción de la Fig. 1, en ella puede verse cómo el transputer T1 comprende unos medios de sincronización que comprenden una unidad de monitorización y desbloqueo, o unidad de “alting” Ua, en conexión con las entradas a, b y configurada para comparar los datos de dichas entradas a, b con unos datos relativos a una condición lógica determinada (como por ejemplo a<b, a>b, a=b, etc.), y para generar una señal de desbloqueo con el fin de desbloquear el funcionamiento, previamente bloqueado, de como mínimo la unidad de procesamiento U1 (y opcionalmente de otros componentes internos de T1), en función de que exista coincidencia de datos en dicha comparación.
La mencionada unidad de procesamiento U1 es, para un ejemplo de realización preferido, una ALU, la cual proporciona recursos para ejecutar la parte del algoritmo que le corresponde a T1, parte la cual en general se encuentra en la forma de un micro-algoritmo, constituyendo la suma de todos los micro-algoritmos implementados por los diferentes transputers del sistema el algoritmo a ejecutar.
Por lo que se refiere a la unidad de “alting” Ua, tal y como se ha indicado anteriormente, ésta mantiene bloqueado el proceso, es decir la operación de la ALU, como mínimo, esperando que se cumplan unas condiciones específicas en las entradas de datos a las cuales se encuentra conectada, habiéndose producido el bloqueo mediante la implementación de cualquiera de los ejemplos de realización descritos en un apartado anterior, es decir por parte de la propia unidad de “alting” Ua, por orden de los medios de control (por ejemplo enviándole una instrucción “alting”), o por otro mecanismo. La unidad de “alting” Ua proporciona soporte para implementar el álgebra de procesos secuenciales de comunicación.
En general dicha unidad de “alting” Ua tiene acceso a los datos presentes en las entradas “a” y “b” comentadas a través de sendas memorias (no ilustradas), o memorias de entrada A y B, esperando que se cumpla la referida condición lógica determinada en una o en ambas de dichas memoriasAyB.
Para un ejemplo de realización la unidad Ua es controlada por una instrucción “custom”, que en particular es la siguiente, en lenguaje ensamblador:
custom 51, rC, rA, rB
Haciendo referencia rC, rA y rB a unos registros internos de la unidad Ua, cuyo significado es el siguiente:
-
rA: Condición y Guarda para la memoria de entrada A
-
rB: Condición y Guarda para la memoria de entrada B.
-
rC: Datos de resultado.
En la Fig. 5a se ilustra uno de los registros rA o rB (ambos son iguales). Puede verse cómo éste comprende dieciséis bits, ocho de los cuales formando la parte indicada como “Máscara”, y el resto la parte indicada como “Guarda”.
La “Máscara” indica la condición lógica por la que esperar, teniendo cada bit de la misma su propio significado, indicado en la Fig. 5b, en la cual se ilustra solamente la parte del registro correspondiente a la “Máscara”. Los significados de cada uno de dichos bits de la Fig. 5b son los siguientes:
-
aneb. la dirección indicada en el campo “Guarda” es diferente de la señalada por el puntero de escritura de la memoria.
-
aleb: la dirección en “Guarda” es menor o igual que la señalada por el puntero de escritura de la memoria.
-
alb: la dirección en “Guarda” es menor que la señalada por el puntero de escritura de la memoria.
-
ageb: la dirección en “Guarda” es mayor o igual que la señalada por el puntero de escritura de la memoria.
-
agb: la dirección en “Guarda” es mayor que la señalada por el puntero de escritura de la memoria.
-
aeb: la dirección en “Guarda” es igual que la señalada por el puntero de escritura de la memoria.
-
datanew: Nuevos datos acaban de llegar a la memoria. Solamente actúa cuando el Transputer está esperando datos. Si los datos llegan antes de que se le ordene a la unidad Ua actuar (por ejemplo mediante el mencionado envío de una instrucción “alting” por parte de los medios de control), estos datos no serán considerados como nuevos.
-
and/or: Si este bit está a “1”, la unidad de “alting” Ua esperará que se cumpla la condición lógica indicada en cada uno de los registros rA y rB, en las respectivas memoriasAyB, antes de desbloquear al transputer WARP (al menos a su ALU U1). En ambos registros rA y rB este bit debe estar a “1”. Si está a “0” se producirá el desbloqueo cuando se cumpla la condición lógica en uno o en ambos registros rA o rB.
Para dicho ejemplo de realización los datos que se espera que cumplan la condición lógica determinada son los referentes al contenido del puntero de escritura de la memoria (A y/o B), que deben entenderse como parte de los datos incluidos en las entradas a y/o b. Para otros ejemplos de realización los datos a comparar, o dicho de otro modo a analizar para ver si cumplen o no una condición lógica determinada, son otros que no hacen referencia a dicho puntero, sino a otros campos de dichas memoriasAyB.
A continuación se describen el resto de bloques principales del dispositivo de computación T1 para el ejemplo de realización ilustrado en la Fig. 1, los cuales son los siguientes:
-
S: micro-secuenciador que controla la ejecución de cada micro-algoritmo, mediante el control de los distintos elementos internos del transputer WARP T1, mediante el envío de las señales adecuadas a través de las líneas de flecha discontinuas ilustradas en la Fig. 1. Incorpora una memoria de instrucciones MI, en la cual son descargados los microalgoritmos a través del puerto de comunicación Ps1.
-
M1, M2, M3: Memorias de datos, en particular M1, M2 son memorias de puerto dual para almacenar los datos de entrada al transputer WARP, y M3 es una memoria de puerto dual prevista para almacenar los resultados en forma de datos.
-
Interfaces, que forman parte de los denominados arriba como medios de comunicación:
-
Ps1: Puerto en comunicación, como esclavo, con una unidad de control de instrumentos ICU (ver Fig. 2a), incluida en los anteriormente denominados medios de control, la cual lo utiliza para descargar microalgoritmos, datos y parámetros, así como para controlar al transputer WARP T1. Para un ejemplo de realización éste es un puerto “Avalon Memory Mapped” de 32 bits, y proporciona acceso a los registros y memorias internas del transputer WARP T1, para controlar su funcionamiento por parte de la ICU.
-
Ps2a y Ps2b: Puertos esclavos de entrada de datos, que proporcionan datos a través de sus salidas a, b comunicadas con, respectivamente, las memorias M1 y M2. Para un ejemplo de realización éstos son puertos “Avalon Streaming” de 32 bits. La información de canal puede ser utilizada para direccionar los datos entrantes hacia los registros de propósito general R.
-
Pm: Puerto maestro de salida de datos, para suministrar el resultado de las operaciones realizadas en el transputer, es decir de la ejecución del micro-algoritmo. Para un ejemplo de realización éste es un puerto “Avalon Streaming” de 32 bits para salida de datos. El canal que constituye este puerto puede ser usado como un canal lógico o físico para control de flujo de datos. Opcionalmente puede disponerse de más de un puerto maestro de salida Pm.
-
Bs: Bus de sincronización, el cual constituye una interfaz con un dispositivo controlador/planificador (ver Fig. 2b), que forma parte de los medios de control, proporcionando características de sincronización e interrupción. Posibilita el inicio/parada de la operación del transputer a partir de las órdenes de dicho dispositivo controlador/planificador.
-
R: Registros de propósito general.
-
MUX1-MUX6: Multiplexores que, bajo el control del microsecuenciador S, dirigen los datos presentes en una de sus entradas hacia el elemento que se encuentra conectado en su salida, ya sea éste una de las memorias M1-M3, registros de propósito general R, ALU U1, o puerto PS1.
La unidad de “alting” Ua ilustrada en la Fig. 1 se encuentra comunicada con el microsecuenciador S, al cual le envía la mencionada señal de desbloqueo, para que éste, en respuesta a dicha señal, actúe sobre los diferentes elementos a desbloquear (mediante las conexiones indicadas por las líneas discontinuas de flecha ilustradas) para que vuelvan a estar operativos. El microsecuenciador también es el encargado de bloquear dichos elementos ya sea por orden de la unidad Ua, o por orden de los medios de control, enviada a través del bus Ps1 o mediante una instrucción recibida a través del bus Bs.
En las Figs. 2a y 2b se ilustra el sistema propuesto por el primer aspecto de la invención para un ejemplo de realización. Algunos de los elementos ilustrados se han indicado mediante unas referencias textuales cuyo significado indica la denominación, y función, de los elementos a los que hacen referencia. En particular, en dichas Figs. 2a y 2b, se ilustra un sistema de procesamiento de datos que comprende:
-
Una pluralidad de dispositivos de computación T1-T5, o transputers, operando en paralelo para procesar, cada uno de ellos, parte de un algoritmo, de manera concurrente y sincronizada. Aunque en la Fig. 2b solamente se ilustran cinco transputers T1-T5, la línea de puntos entre los transputers T2 y T3 indica la existencia de un mayor número de transputers interconectados en serie por sus puertos de salida y entrada;
-
Unos medios de comunicación configurados para, entre otros, interconectar, por unas respectivas entradas y salidas de datos, a dichos dispositivos de computación T1-T5 entre sí. Dichos medios de comunicación comprenden, para el ejemplo de realización ilustrado por dichas Figs. 2a y 2b, todas las conexiones entre los diferentes elementos ilustrados, así como la matriz de conmutación y comunicaciones a la que se encuentran conectados de manera bidireccional, por un lado los transputers T1-T5, y por otro parte de los medios de control representados mediante tres unidades de procesamiento que implementan tres correspondientes capas de software que se describirán posteriormente con mayor detalle, y que se implementan en uno o varios sistemas de computación, entre ellos la mencionada anteriormente ICU;
-
Unos medios de control en conexión con dichos medios de comunicación y con dichos dispositivos de computación T1-T5, y previstos para controlarlos. Para el ejemplo de realización ilustrado por las Figs. 2a y 2b, dichos medios de control comprenden a los mencionados sistemas de computación, que incluyen a la ICU, que implementan dichas tres capas de software, así como al transputer T5, el cual actúa, mediante la ejecución de un microprograma, como un controlador/planificador de la ejecución general, paradas y arranques sincronizados, del resto de los transputers T1-T5, mediante el envío del resultado del procesamiento de dicho microprograma a través de la interfaz indicada en la Fig. 2b por la referencia textual “WARP VLIW MIMD”, ya que suministra palabras de instrucción muy largas, o MIMD fVery Long Instruction Word”) mediante mecanismos de instrucción múltiple, flujo de datos múltiples (Múltiple Instruction, Múltiple Data stream).
En la Fig. 2a se han representado a nivel de bloques las mencionadas tres unidades de procesamiento, indicadas como:
-
Unidad para capa de aplicación GNSS-R;
-
Unidad ICU, o unidad de control de instrumentos ICU, para capa de aplicación Instrumento; y
-
Unidad para capa puente.
La definición de las capas de software indicadas está hecha de acuerdo a las pautas de diseño del modelo de siete capas de OSI. Cada capa proporciona un conjunto de puntos de acceso (SAP) entre capas de software, indicados en la Fig. 2a como SAP GNSS-R, para comunicar entre sí las capas de software implementadas en las unidades para capa de aplicación GNSS-R y la unidad ICU, y SAP Núcleo WARP para comunicar entre sí las capas de software implementadas por la unidad ICU y por la unidad para capa puente.
En el interior de la unidad para capa de aplicación GNSS-R se ha representado un bloque denominado Solución GNSS-R que hace referencia a una solución de software para una aplicación específica relativa al análisis de señales GNSS-R (“Global Navigation Satellite System Reflections”: Reflexiones de un sistema de navegación global por satélite). Esta capa proporciona servicios y librerías de rutinas de alto nivel de abstracción, orientados al desarrollo de la aplicación. Es una implementación de las capas de presentación y aplicación OSI.
Por lo que se refiere a la unidad ICU, en el interior de ésta también se ha representado un bloque que representa a la capa de software ICU con una interfaz de control y acceso WARP que alberga al SAP Núcleo WARP. Esta capa proporciona una abstracción de hardware para acceder y controlar los recursos de hardware y software del instrumento en cuestión, en este caso de un instrumento GNSS-R. Es una implementación de las capas de red, sesión y transporte OSI.
Finalmente la unidad para capa puente incluye un bloque que representa la capa de software “puente núcleo WARP” que gestiona el hardware, el núcleo WARP de transputers T1-T5, y proporciona independencia en cuanto a la implementación de la plataforma de la comunicación PHY, es decir de la capa física. Su diseño responde a las especificaciones de la implementación de una capa de enlace de datos OSI.
Los mencionados puntos de acceso, SAP, para conectar las diferentes capas responden también a las especificaciones de los marcados con la etiqueta identificatoria SAP para los puntos extremos (“endpoints”) de una red OSI. El SAP es una localización conceptual en la cual una capa WARP puede requerir los servicios de otra capa WARP.
Aunque en la presente descripción se han indicado tres unidades de procesamiento para implementar las tres capas de software descritas, ello solamente se ha hecho con el fin de exponer un ejemplo de realización, pero para otros ejemplos de realización la implementación de dichas capas de software se realiza utilizando otro número de unidades de procesamiento inferior o superior a tres.
Asimismo las tres unidades de procesamiento citadas forman parte de uno o más sistemas de computación, en función de la variante del ejemplo de realización descrito.
Asimismo, para otros ejemplos de realización, los medios de control comprenden uno o más sistemas de computación que implementan una arquitectura distinta a la descrita, tanto por lo que se refiere al hardware como al software, no necesariamente realizando la división en capas descrita.
Aunque no se han ilustrado, como mínimo parte de los transputers T1-T4 mostrados en la Fig. 2b incluyen una unidad de “alting” Ua como la ilustrada en el transputer T1 de la Fig. 1, con el fin de que un transputer no procese los datos existentes en sus entradas hasta que éstos no sean los considerados como adecuados por la unidad de “alting” correspondiente, es decir hasta que éstos no cumplan con una condición lógica determinada.
En dicha Fig. 2b se han ilustrado solamente parte de los elementos internos de los transputers, de manera simplificada, incluyendo los puertos de entrada esclavos Ps2T1 a Ps2T4 (que en realidad están formados, cada uno de ellos, por dos puertos a y b, tal y como se ilustra para el transputer T1 en la Fig. 1), los puertos esclavos Ps1T1 a Ps1T4 en comunicación bidireccional con la ICU (en realidad con todos los sistemas de computación, incluida la ICU, que implementan las tres capas de software ilustradas en la Fig. 2a), los puertos maestros de salida PmT1-PmT3 de los tres primeros transputers T1-T3 para salida de datos (en este caso el transputer T4 suministra la salida de datos a través de PsT4), así como los buses de sincronización BsT1-BsT4 a través de los cuales los respectivos microsecuenciadores (no ilustrados) reciben las VLIW de T5, tras pasar por el bus indicado como “Bus de instrucciones VLIW WARP”. Tales puertos BsT1-BsT4 son puertos SIMD, es decir de instrucción sencilla, flujo de datos múltiples (Singles Instruction, Múltiple Data stream), por lo que cada uno de ellos recibe parte de la MIMD enviada en la VLIW, y están comunicados con un respectivo microsecuenciador S (no ilustrado en la Fig. 2b).
Para un ejemplo de realización los puertos maestros de salida, por ejemplo PmT1, son de 32 bits y cada uno de los puertos esclavos a y b de, por ejemplo Ps2T2, son de 16 bits, por lo que 16 bits de la salida de PmT1 se envían al puerto a de Ps2T2 y los otros 16 bits al puerto b. Para otro ejemplo de realización los puertos maestros de salida PmT1-PmT3 tienen el mismo número de bits que cada uno de los de entrada a y b de PsT1-PsT4, enviándose en este caso, por ejemplo, los 16 bits presentes en PmT1 a la entrada a de PsT2 en un ciclo de reloj, y los presentes en un ciclo de reloj consecutivo a la entrada b.
La ausencia de alguno de dichos elementos en algunos de los transputers ilustrados no pretende indicar que algunos de dichos transputers carezcan de los mismos, sino simplemente que no los utilizan para la aplicación ilustrada en dichas Figs. 2a y 2b, es decir que, por ejemplo, el transputer T5 puede tener o no los puertos de entrada esclavos Ps2T5 (no ilustrados) para entrada de datos, simplemente en ese caso no se están utilizando.
De hecho, ventajosamente, todos los transputers T1-T5 son prácticamente iguales en cuanto a su arquitectura interna, a excepción de las ALU, las cuales están diseñadas en función de la tarea a ejecutar para la cual se encuentre dedicado el dispositivo de computación T1-T5 al que pertenezcan, con el fin de ejecutarla más eficientemente, en particular para las instrucciones a medida (“custom instructions”) a ejecutar.
Para un ejemplo de realización representativo de una implementación que se ha llevado a la práctica, la interfaz de cada ALU cumple con las especificaciones de la ALU de Instrucción a medida del microcontrolador Nios II con control de procesos multi-ciclo, aunque sin implementar las interfaces opcionales con memorias externas, FIFO, etc., ya que estos elementos no se encuentran en el sistema propuesto por la invención.
La ALU es así una unidad aritmético-lógica de pocos recursos y alta velocidad que implementa, para un ejemplo de realización, una aritmética firmada de datos de 16 bits, siendo optimizada para cada transputer WARP, pero en todos los casos proporcionando las operaciones y aritmética requeridas para soportar la ejecución del microalgoritmo y el control de flujo de datos.
Por defecto todas las instrucciones de cada ALU son ejecutadas en dos ciclos de reloj, pero en el caso de instrucciones a medida que requieran de una ejecución de reloj adicional, un bloque de registro interno de la ALU almacena los datos de la llamada a la instrucción a medida anterior.
Las instrucciones a medida (“custom”) aceptadas por la ALU pueden ser tanto SIMD como MIMD, siendo necesario utilizar, para las instrucciones MIMD, los registros internos de la ALU.
Cada uno de dichos transputers T1-T5 constituye un módulo, o DSP (procesador de señal digital), algunos de los cuales previstos para ejecutar las mismas funciones, en particular T1, T2 y T3, etiquetados como “módulos de banda base WARP”, y otros otras funciones, T1 por ejemplo realiza una función etiquetada como “WARP DDC”, y T5 procesa el anteriormente descrito microprograma controlador/planificador.
Todo el conjunto de transputers T1-T5 junto con el bus de instrucciones VLIW WARP constituyen, para el ejemplo de realización ilustrado en la Fig. 2b, el denominado como núcleo WARP, que agrupa a los transputers WARP que en su conjunto ejecutan el algoritmo.
La aplicación para la que está configurado el sistema ilustrado en las Figs. 2a y 2b es la relativa al procesamiento de información contenida en unas señales RF, en particular de un sistema GNSS, recibidas por T1, a través del elemento indicado como frontal de RF asociado a la antena ilustrada, el cual es un bloque convertidor reductor digital, o DDC, cuyo resultado es procesado por T2 a T3, que en su conjunto realizan un procesado en banda base de las señales resultantes del procesador de T1.
Aunque solamente se ha representado una línea de salida para el frontal RF ilustrado en la Fig. 2b, en realidad éste le suministra dos señales de entrada al puerto esclavo Ps2T1, una al puerto a y otra al b, en este caso provinentes de un sistema GNSS-R.
Con posterioridad se describirá con más detalle, con referencia a la Fig. 4, la aplicación del sistema propuesto por el primer aspecto de la invención para una sistema de tal tipo, es decir para implementar un sistema de procesamiento de un sistema GNS-R, indicando cómo dividir el sistema de procesamiento en módulos o bloques con diferentes funciones, cada una de las cuales a realizar por uno o más respectivos transputers WARP.
Obviamente ésta es solamente una aplicación, y las Figs. 2a y 2b podrían ilustrar el sistema de procesamiento de cualquier otra clase de señales RF, en cuyo caso la aplicación y solución GNSS-R indicadas en la Fig. 2a serían de otra clase, adecuadas al sistema de procesamiento al que se encontrasen aplicadas.
Tal y como se ha indicado anteriormente el sistema propuesto está aplicado al procesamiento masivo en paralelo de algoritmos que en el caso de ser procesados mediante un único microprocesador o DSP harían que el sistema fuese demasiado lento y de dimensiones demasiado grandes. Los transputers WARP proporcionan también una estructura completa para diseños críticos en el tiempo donde diseñar y construir una máquina de estados a medida incrementaría el plazo de comercialización de manera excesiva.
Los transputers WARP son, por tanto, unos pequeños procesadores dedicados que procesan una pequeña parte de un algoritmo, trabajan en paralelo con otros transputers WARP, y so supervisados por un dispositivo controlador/planificador WARP, que para el ejemplo de realización de la Fig. 2b es el transputer T5.
Se puede considerar a cada transputer WARP como un máquina computerizada RISC que emplea un conjunto mínimo de instrucciones ISA para ejecutar pequeñas partes de los algoritmos: los microalgoritmos. La característica de los microalgoritmos es el comportamiento extremadamente determinístico del flujo de datos y de la operación de los datos.
Tal y como se ha indicado anteriormente, para un ejemplo de realización preferido, los transputers WARP están conectados mediante una topología de hipercubo implementada por los medios de comunicación, también denominados como “WARP Fabric”, los cuales permiten la interconexión de los transputers WARP para realizar un paralelismo de computación con control de flujo de datos concurrente.
Siguiendo con la descripción del dispositivo de computación propuesto por el segundo aspecto de la invención, y en particular del transputer WARP T1 ilustrado por la Fig. 1, en la Fig. 3 se ilustra en detalle al microsecuenciador S de dicho transputer T1, para un ejemplo de realización, cuya descripción, que se realizará seguidamente tanto para su arquitectura como para sus conexiones y las funciones de los diferentes bloques que lo integran, es también válida para el microsecuenciador de cualquier transputer incluido en el sistema propuesto por el primer aspecto de la invención.
El microsecuenciador S ilustrado en la Fig. 3, o microsecuenciador WARP, es un microsecuenciador de alta velocidad, baja utilización de recursos con soporte aritmético firmado de datos de 16 bits y control de caminos de datos internos de alta capacidad.
Para un ejemplo de realización, o implementación práctica, el diseño del microsecuenciador WARP ha sido inspirado por el del microsecuenciador Avalon® introducido por ALTERA® en el 2003, de manera que el microsecuenciador WARP dispone de un conjunto de instrucciones cercano al conjunto de instrucciones del procesador Nios II (implementado haciendo uso de lógica FPGA), el cual también ha inspirado, para un ejemplo de realización, al diseño del transputer WARP, obviamente teniendo este último una arquitectura mucho más simplificada que la del Nios II, así como un controlador de programa y un generador de instrucciones también simplificados para adecuarlos a unos requerimientos mínimos.
Por lo que se refiere a la implementación de los medios de comunicación, o “WARP Fabric”, éstos están basados, para un ejemplo de realización, en las interfaces Avalon® y proporcionan unas interfaces estandarizadas en el desarrollo del núcleo WARP (ver Fig. 2b).
Las principales características de la arquitectura del microsecuenciador WARP S, para el ejemplo de realización ilustrado por la Fig. 3, son las siguientes:
-
Memoria de instrucciones indicada como MI en la Fig. 3 (y en la Fig. 1), en la cual se encuentran registradas las instrucciones del micro-algoritmo a ejecutar.
-
Registro de puntero de Instrucciones IP, indicado como IP en la Fig. 3, el cual está encargado de apuntar, en la memoria MI, a la instrucción siguiente a ejecutar;
-
Interfaz con la ALU WARP (con los registros de estado “Status” y Z), es decir con U1 para el caso del transputer T1, indicada como “Interfaz con U1” en la Fig. 3; A través de esta interfaz la ALU proporciona información sobre las posibles ramas o bifurcaciones;
-
Bloque “Controlador de ejecución”, el cual se encarga de controlar al registro IP;
-
Interfaz con el dispositivo controlador/planificador (indicada como tal en la Fig. 3), en comunicación con el controlador de ejecución, para proporcionar una sincronización adicional entre los componentes del núcleo WARP (ver Fig. 2b).
El microsecuenciador S trabaja mediante la ejecución paso a paso de un microcódigo de 32 bits almacenado en una memoria interna síncrona ROM/RAM, la referida en la Fig. 3 como memoria de instrucciones MI. La palabra de instrucción de 32 bits es compatible con las palabras de instrucciones de 32 bits del microcontrolador Nios II. El tamaño de la memoria de instrucciones MI ROM es configurable (hasta 64K de palabras de instrucción).
Tal y como se ha dicho anteriormente el microsecuenciador WARP dispone de un conjunto de instrucciones cercano al conjunto de instrucciones del procesador Nios II. Tal conjunto de instrucciones están codificadas en unas palabras de 32 bits y definen las instrucciones aritméticas y lógicas implementadas en el sistema propuesto por el primer aspecto de la invención.
En la Fig. 3 pueden verse los formatos de los diferentes tipos de instrucciones utilizadas en el sistema WARP, tres de ellas son palabras de instrucciones, en concreto las instrucciones de tipo I (I-type), de tipo J (J-type) y de tipo R (Rtype), y otra es una instrucción “custom”, o a medida.
Por lo que se refiere a la palabra de instrucción de tipo I, ésta se define porque utiliza un valor inmediato encapsulado dentro de la palabra de instrucción, y contiene, tal y como se ilustra en la Fig. 3:
-
un campo de código de operación de seis bits denominado OPCODE;
-
dos campos de registroAyB,de cinco bits cada uno; y
-
un campo de datos inmediatos de dieciséis bits, denominado IMM16.
En la mayoría de los casos, los campos A e IMM16 especifican los operandos fuente, y el campo B específica el registro de destino. IMM16 se considera firmado a excepción de para operaciones lógicas. Las instrucciones de tipo I incluyen operaciones aritméticas y lógicas como “add” y “and”, operaciones de rama o bifurcación, de carga y almacenamiento y operaciones de gestión de memoria caché.
La palabra de instrucción de tipo R se define porque todos los argumentos y resultados están especificados como registros, y contiene, tal y como se ilustra en la Fig. 3:
-
un campo de código de operación de seis bits denominado OPCODE;
-
tres campos de registro A, B y C, de cinco bits cada uno; y
-
un campo de extensión de código de operación de doce bits, denominado OPX.
En la mayoría de los casos, los campos A y B especifican los operandos fuente, y el campo C específica el registro de destino. Algunas instrucciones de tipo R integran un valor inmediato pequeño en los bits de orden más bajo de OPX. Las instrucciones de tipo R incluyen operaciones aritméticas y lógicas como “add” y “and”, operaciones de comparación como “cmpeq” y “cmplt”, la instrucción “custom”, y otras operaciones que necesitan solamente operandos de registro.
En cuanto a la palabra de instrucción de tipo J se refiere, ésta contiene, tal y como se ilustra en la Fig. 3:
-
un campo de código de operación de seis bits denominado OPCODE; y
-
un campo de datos inmediatos de veintiséis bits, denominado IMMED26.
Las instrucciones de tipo J, como por ejemplo las instrucciones “cali” y “jmpi”, transfieren una ejecución a cualquier sitio dentro de un rango de 256 MBytes. Esta dirección larga se mapea en el transputer WARP haciendo el módulo de la dirección de memoria en relación al tamaño de la memoria de programa.
Por lo que se refiere a las instrucciones “custom”, o a medida, éstas están basadas en las instrucciones nativas de Nios II (el cual únicamente proporciona lógica “custom” integrada en la ALU), y de manera similar pueden tomar valores de hasta dos registros fuente y opcionalmente escribir el resultado en un registro de destino, con la diferencia, respecto a Nios II, que en este caso todos estos registros son internos al transputer WARP.
En la Fig. 3 puede verse cómo la instrucción “custom” incluye:
-
un campo de código de operación de seis bits, denominado OPCODE;
-
tres campos de índice de registro A,ByC,de cinco bits cada uno;
-
tres campos, de un bit cada uno, para los puertos “readra”, “readrb” y “writerc”; y
-
un campo N de 8 bits, utilizado para el índice de la instrucción “custom” (extensión de código de operación), y que incluye de manera opcional, un sub-campo de selección de función.
La sintaxis de las instrucciones “custom” de los transputer WARP es compatible, para el ejemplo de realización descrito, con la de la interfaz en ensamblador de las instrucciones “custom” de Nios II.
Siguiendo con la descripción de la Fig. 3, en ella puede verse cómo el microsecuenciador S incluye un bloque denominado “Controlador de ejecución”, el cual lleva a cabo el control de la secuencia de ejecución de las instrucciones almacenadas en MI. Dicho bloque actualiza el registro IP de acuerdo a los siguientes datos:
-
Los del registro indicado como “OPCODE”, que almacena la instrucción en ejecución;
-
Los del resultado de la instrucción lógico aritmética o a medida (“custom”) en el caso de que la instrucción sea de tipo I (“l-type”) o tipo-R (“R-type”).
-
La dirección de la instrucción de tipo J (“J-type”).
-
La instrucción SIMD extraída de la palabra de instrucción VLIW enviada por el dispositivo controlador/planificador, que para el ejemplo de realización de la Fig. 2b es el transputer WARP T5.
En cuanto a la mencionada “Interfaz con U1”, ésta está prevista tanto para suministrarle las instrucciones a ejecutar, con el fin de controlar la ejecución del micro-algoritmo, como para recibir en unos correspondientes registros incluidos en la interfaz, indicados como “STATUS” y “ALU” en la Fig. 3, el estado de U1 y su salida, respectivamente. En función de los valores de dichos registros el controlador de ejecución actúa de una u otra manera, deteniendo la ejecución o saltando a la siguiente dirección proporcionada por la ALU.
El registro “STATUS” proporciona información en forma de bits para llevar a cabo una concurrencia de ejecución.
Por lo que se refiere a la interfaz con el dispositivo controlador/planificador, que en el ejemplo de realización de la Fig. 2b es el transputer WARP T5, ésta permite el control externo de la ejecución con el fin de proporcionar parte de la sincronización entre los diferentes transputers WARP, mediante el ya descrito envío de la instrucción MIMD, parte de la cual es recibida por el microsecuenciador S en la forma de una SIMD que, tal y como se muestra en la Fig. 3, le llega al bloque controlador de ejecución.
Se ha estimado que un tamaño adecuado para la memoria de instrucción MI, la cual es configurable, debe ser de cómo mínimo suficiente para almacenar treinta y dos palabras, y como máximo 256.
A continuación se describe el funcionamiento del microsecuenciador S para la ejecución de una instrucción, según un ejemplo de realización.
El núcleo del microsecuenciador WARP S expide una única instrucción cada vez. Las instrucciones son expedidas y retiradas en orden. Solamente en el caso relativo a la evaluación de una rama o bifurcación el controlador de ejecución espera a que una instrucción sea completada antes de cargar y expedir una nueva instrucción; en este caso el controlador de ejecución se detiene durante seis ciclos de reloj.
Debido a que cada instrucción de rama o bifurcación se completa antes de que la siguiente instrucción sea expedida, una predicción de rama o bifurcación no es necesaria. Esto simplifica enormemente la consideración de las paradas del procesador. Los ciclos por valor de instrucción determinan la tasa máxima a la cual la ALU, es decir U1 para T1, puede expedir instrucciones y producir cada resultado. El valor de latencia determina cuándo el resultado está disponible. Si no existe una dependencia de datos entre los resultados y los operandos para instrucciones adosadas, entonces la latencia no afecta al flujo de datos. Sin embargo, si una instrucción depende del resultado de una instrucción previa, entonces el “Controlador de ejecución” del microsecuenciador S debe permanecer detenido a lo largo de cualesquiera de los ciclos de latencia de resultado hasta que el resultado esté listo. Cuándo y cuanto debe mantener el microsecuenciador S (mediante el controlador de ejecución) el proceso de ejecución, es decir no enviar una nueva instrucción a la ALU, depende del contenido del registro “STATUS” que incluirá una señal conveniente cuando la ALU haya acabado de procesar su instrucción y el microsecuenciador S deba seguir con el proceso canalizado, o “pipeline”.
El proceso “pipeline” debe mantenerse detenido para las siguientes condiciones:
1.
Instrucciones multiciclo.
2.
Dependencias de datos en instrucciones de latencia largas (por ejemplo multiplicación, desplazamiento, etc.).
Por defecto, el microsecuenciador S no implementa paradas del “pipeline”, en general el ingeniero de software introduce un conjunto de instrucciones NOP (“No Operation”), es decir relativas a la no realización de ninguna operación, para notificar que la última instrucción de la ALU U1 que implican los datos está completada. En algunos casos en los que el flujo de ejecución no es crítico el ingeniero de software puede habilitar el control de detención de la ALU U1. En este modo de operación la ALU U1 detendrá al microsecuenciador S en cada fase de ejecución para todas las instrucciones, proporcionando la integridad de los datos. La máxima penalización en el rendimiento del microsecuenciador S por instrucción es la provocada por los ciclos de instrucciones de ejecución de la ALU. La ejecución típica de una instrucción por parte de la ALU es de un ciclo, pero podría ser de seis ciclos en casos de larga latencia.
La ejecución de operaciones de desplazamiento depende de la opción de hardware de la ALU del transputer WARP. Cuando tiene presente un multiplicador hardware, la ALU consigue realizar operaciones de desplazamiento y rotación en tres o cuatro ciclos de reloj. De lo contrario, la ALU incluye circuitería de desplazamiento dedicada que consigue una ejecución de desplazamiento y rotación de un bit por ciclo.
El microsecuenciador S solamente requiere de las funciones de la ALU para el caso de evaluación de rama o bifurcación condicional, y una ejecución de tiempo debe ser considerada en el caso de la utilización de saltos de dirección de registro. El resto de las instrucciones de los microalgoritmos son ejecutadas en un solo pulso de reloj.
La sincronización de datos y el control de flujo de datos es un elemento esencial en un sistema multi-núcleo. La arquitectura del sistema propuesto por la presente invención, es decir la arquitectura WARP, gestiona estas cuestiones combinando la comunicación síncrona física/lógica entre los transputers WARP con protecciones o guardas y declaraciones de selección que detienen/inician la ejecución del microalgoritmo. La instrucción “Alting” y las anteriormente descritas unidades de “alting” Ua de los transputers proporcionan soporte para este esquema de comunicaciones que está definido en los lenguajes de programación como “rendezvous” (mecanismo para compartir de datos entre tareas de una manera sincronizada). Ejemplos de lenguajes de programación con comunicación “rendezvous” son Ada05, CSP y OCCAM.
Finalmente, y tal y como se ha indicado anteriormente, a continuación se describe, con referencia a la Fig. 4, el sistema de procesamiento de señales digitales, o procesador digital de señales DSP, de un sistema GNSS-R aplicado a la determinación del DDM (“Delay Doppler Map”) de una superficie, dividido en módulos o bloques, la función de cada uno de los cuales es llevada a cabo por un respectivo transputer con su respectiva ALU hecha a medida, es decir adaptada para ejecutar unas determinadas instrucciones “custom”, para realizar la función para la que está previsto.
En la Fig. 4 se ilustran algunos de los transputers con una entrada y dos salidas, o con dos entradas y dos salidas, lo cual es representativo, para un ejemplo de realización preferido, de que, siendo los transputers WARP ilustrados en la Fig. 4 como el de la Fig. 1, en cuanto a número y tipo de puertos de entrada y salida, el denominado anteriormente como “WARP Fabric” implementa una serie de multiplexores y/o distribuidores en conexión con los puertos referidos, de manera que, por ejemplo, la entrada SD asociada al Transputer DDC se distribuye a sus dos puertos de entrada esclavos Ps2a, Ps2b (ver Fig. 1), y de manera análoga por lo que se refiere al resto de puertos.
Aunque anteriormente se ha indicado que cada transputer WARP dispone de dos puertos esclavos de entrada (Ps2a y Ps2b para T1 en la Fig. 1) y uno maestro de salida (Pm para T1 en la Fig. 1), tal indicación no es limitativa, pudiendo para otros ejemplos de realización utilizarse transputers con más o menos puertos esclavos de entrada y más o menos puertos maestros de salida.
Para otros ejemplos de realización, con referencia a la Fig. 4, el hecho de que en ella se hayan ilustrado transputers con un número de puertos de entrada y salida distintos a los del de la Fig. 1, es representativo de:
-
lo comentado en el párrafo anterior, es decir de que alguno de los transputers dispone de más o menos puertos maestros de salida y de más o menos puertos esclavos de entrada, o
-
que los puertos esclavos de entrada son de la mitad de bits que los puertos conectados a los mismos, ya sean los de salida de otro transputer o los de otra clase de dispositivo (como es el caso de los dispositivos no ilustrados cuyas salidas se comunican con las entradas de los transputers DDC de la Fig. 4), o
-
que siendo los puertos esclavos de entrada iguales, en número de bits, a los puertos conectados a los mismos, se utilizan dos ciclos de reloj para enviar los datos a cada uno de los dos puertos de entrada, de manera alternada.
El ejemplo de realización ilustrado en la Fig. 4 es de particular interés para el presente solicitante, por estar aplicado a un instrumento diseñado por el mismo, dentro de un proyecto denominado RETO, de las siglas en inglés de “Real Time DDM Oceanpal”, para monitorización de superficies marítimas, basado en el diseño de Oceanpal®, un sistema diseñado por el presente solicitante con el mismo fin.
RETO ha sido desarrollado con el soporte del cuarto “GSTP Announcement of opportunity” de la ESA (Agencia espacial europea), y su objetivo es el de implementar un procesador embebido para mapeo Doppler de retardo. RETO es un instrumento basado en GNSS-R desarrollado por el presente solicitante.
El mapeo Doppler de retardo es el punto de partida para los algoritmos de inversión capaces de estimar el cuadrado de la pendiente direccional media de la superficie del mar, a partir del cual se puede obtener información respecto al viento que sopla sobre la superficie del mar.
Para realizar la implementación del instrumento RETO se han utilizado veinticuatro transputers WARP, en una plataforma FPGA de alta densidad de medio de núcleo con un procesador embebido. No todos dichos veinticuatro transputers se ilustran en la Fig. 4, solamente los principales.
El instrumento RETO analiza la señal directa SD provinente de un satélite GPS, y dicha señal GPS una vez reflejada SR en la superficie del mar, cada una de dichas señales siendo captadas por un frontal RF que incluyen una respectiva antena GPS, formando en su conjunto amos frontales una la sección de radiofrecuencia del sistema de mapeo, cuyas salidas se encuentran conectadas a las entradas del sistema de procesamiento, o DSP, implementado por el instrumento RETO, que se encarga de procesar las señales provinentes de dicha sección de radiofrecuencia, es decir SD y SR. En la Fig. 4 se ilustra al instrumento RETO con sus dos correspondientes entradas para dichas dos señales SR, SD, así como los diferentes bloques o módulos para el tratamiento de las mismas.
Para implementar en hardware los módulos del instrumento RETO se ha dividido el DSP RETO tal y como se ilustra en la Fig. 4, es decir agrupando dichos módulos en grupos que incluyen uno o más módulos, habiéndose representado las distintas agrupaciones por unos rectángulos grises. Tal y como se ha indicado anteriormente solamente se indican los transputers encargados de llevar a cabo las tareas principales.
Se puede decir que en dicha Fig. 4 se representa un mapeo de los bloques del DSP en los diferentes transputers WARP incluidos en el sistema propuesto por el primer aspecto de la invención.
Cada uno de dichos grupos representa a uno o más respectivos transputers WARP, es decir que la función o funciones que realizan los distintos bloques incluidos en cada uno de los rectángulos grises, es realizada, según la presente invención, por uno o más respectivos transputers con las instrucciones a medida necesarias para llevarlas a cabo de manera eficiente.
En particular, por lo que se refiere al canal directo, es decir al que sigue la señal directa SD, éste requiere de como mínimo seis transputers WARP para realizar el seguimiento de cada PRN, o código de ruido pseudo-aleatorio (“Pseudo Random Noise”).
Las tareas asignadas a cada uno de dichos seis transputers WARP son:
1.
DDC, o conversión reductora digital. Esta tarea es realizada por el Transputer DDC superior, y consiste en realizar la conversión de la señal IF a banda base. Un conjunto de filtros digitales extraen el ruido fuera de la banda de interés.
2.
Filtrado adaptado. Para realizar esta tarea se necesitan dos transputers, uno para cada una de las señales en cuadratura (I y Q). Estos transputers, indicados como Transputers MFA en la parte superior de la Fig. 4, implementan el filtrado adaptado de los datos entrantes con la réplica interna, una para la componente en fase (I) y la otra para la componente en cuadratura (Q).
3.
Recuperación de portadora. El transputer encargado de realizar esta función, indicado como Transputer PLL, sigue la forma de onda compleja para recuperar su frecuencia portadora, afectada por el desplazamiento Doppler.
4.
Seguimiento del código C/A. Esta tarea, consistente en controlar la generación de la réplica para obtener la alineación del código C/A, se divide en las dos tareas siguientes:
-
Enganche del retardo, tarea la cual es llevada a cabo por el Transputer DLL que implementa un lazo de enganche del retardo; y
-
Generación de código C/A, llevada a cabo mediante el Transputer C/A.
Por lo que se refiere al canal de reflexión, es decir al que sigue la señal reflejada SR, para su procesado se requieren como mínimo cuatro transputers WARP para realizar las siguientes tareas:
1.
DDC. Esta tarea es realizada por el Transputer DDC ilustrado en la parte inferior de la Fig. 4, y realiza la misma función que el Transputer DDC superior pero aplicado a la señal SR, y trabaja en sincronía con dicho Transputer DDC aplicado a SD.
2.
Doppler (DDM). Esta función es llevada a cabo por el denominado Transputer de fase, el cual proporciona el desplazamiento de Doppler del canal de reflexión con respecto al canal directo, mediante los mezcladores y bloque de control DDC ilustrados. Un conjunto de bloques Doppler como éste proporcionan diversos planos Doppler en el mapeo de retardo Doppler, DDM.
3.
Filtrado adaptado: Igual que en el canal directo, esta tarea es llevada a cabo por dos transputers, indicados en la parte inferior de la Fig. 4 como Transputers MFA, que realizan la misma función que los del canal directo pero aplicada al canal de reflexión.
Mediante el referido filtrado adaptado junto con la función indicada como Doppler, aplicados al canal de reflexión, proporcionan, junto con la misión llevada a cabo por el bloque indicado como “Integración incoherente”, el mapeo de retardo Doppler. En la Fig. 4 se observan cómo el rectángulo indicado como “Mapeo de retardo” se encuentra solapado a otros dos rectángulos análogos. Cada uno de dichos rectángulos representa unos de los respectivos planos Doppler mencionados, en este caso tres, y los anteriormente referidos como Transputer de fase y Transputers MFA pueden realizar el procesado para los tres planos, o pueden utilizarse un mayor número de transputers, uno para cada plano Doppler.
En la Fig. 4 se ha incluido a dicho bloque de integración incoherente junto con el bloque DDM, ambos del interior del DSP, agrupados mediante un rectángulo gris indicado como “Proceso ICU” junto con el bloque ICU que forma parte de los medios de control. Ello es indicativo de que, para un ejemplo de realización, la función llevada a cabo por dichos bloques, uno de los cuales es externo al DSP, está relacionada con el control de la operación de los transputers ilustrados en dicha Fig. 4, llevándose a cabo dicho control, para un ejemplo de realización, de manera análoga a la descrita con referencia a la Fig. 2, incluyendo un dispositivo controlador/planificador (no ilustrado en la Fig. 4), o de manera distinta, para otro ejemplo de realización.
Para otro ejemplo de realización la función de dicho bloque de integración incoherente y la de dicho bloque DDM se llevan a cabo mediante otros transputers WARP adicionales.
Un experto en la materia podría introducir cambios y modificaciones en los ejemplos de realización descritos sin salirse del alcance de la invención según está definido en las reivindicaciones adjuntas.

Claims (21)

  1. REIVINDICACIONES
    1. Sistema de procesamiento de datos, del tipo que comprende:
    -
    una pluralidad de dispositivos de computación (T1-T5) operando en paralelo para procesar, cada uno de ellos, parte de un algoritmo, de manera concurrente y sincronizada;
    -
    unos medios de comunicación configurados para interconectar, por unas respectivas entradas y salidas de datos, a dichos dispositivos de computación (T1-T5) entre sí;
    -
    unos medios de control en conexión con dichos medios de comunicación y con dichos dispositivos de computación (T1-T5), y previstos para controlarlos;
    estando dicho sistema de procesamiento de datos caracterizado porque comprende unos medios de sincronización que comprenden, en al menos parte (T1-T4) de dichos dispositivos de computación (T1-T5), una unidad de monitorización y desbloqueo (Ua), en conexión con las entradas (a, b) de su respectivo dispositivo de computación (T1-T4) y configurada para comparar los datos de dichas entradas (a, b) con unos datos relativos a una condición lógica determinada, y para generar una señal de desbloqueo con el fin de desbloquear el funcionamiento, previamente bloqueado, de al menos una unidad de procesamiento (U1) del dispositivo de computación (T1-T4), en función de que exista coincidencia de datos en dicha comparación.
  2. 2.
    Sistema según la reivindicación 1, caracterizado porque dichos medios de sincronización comprenden, en al menos parte (T1-T4) de dichos dispositivos de computación (T1-T5), unos medios de bloqueo/desbloqueo configurados para bloquear el funcionamiento de al menos dicha unidad de procesamiento (U1) de su respectivo dispositivo de computación (T1-T4).
  3. 3.
    Sistema según la reivindicación 2, caracterizado porque dichos medios de bloqueo/desbloqueo están en conexión con dichos medios de control y con dicha unidad de procesamiento (U1) de su respectivo dispositivo de computación (T1-T4), y configurados para llevar a cabo dicho bloqueo del funcionamiento de al menos dicha unidad de procesamiento (U1) bajo el mando de dichos medios de control.
  4. 4.
    Sistema según la reivindicación 2 ó 3, caracterizado porque dichos medios de bloqueo/desbloqueo están conectados con una salida de dicha unidad de monitorización y desbloqueo (Ua), y configurados para llevar a cabo dicho desbloqueo del funcionamiento de al menos dicha unidad de procesamiento (U1), en respuesta a la recepción de dicha señal de desbloqueo.
  5. 5.
    Sistema según la reivindicación 2, caracterizado porque dichos medios de bloqueo/desbloqueo comprenden a dicha unidad de monitorización y desbloqueo (Ua), y porque ésta (Ua) está configurada también para generar una señal de bloqueo con el fin de bloquear el funcionamiento de al menos dicha unidad de procesamiento (U1), en función de que exista discrepancia de datos en dicha comparación.
  6. 6.
    Sistema de procesamiento de datos según cualquiera de las reivindicaciones anteriores, caracterizado porque cada uno de dichos dispositivos de computación (T1-T5) comprende al menos una unidad de procesamiento (U1), al menos una memoria interna (M1-M3), y, formando parte de dichos medios de comunicación, al menos dos puertos de entrada de datos (Ps2a, Ps2b) y al menos un puerto de salida de datos (Pm).
  7. 7.
    Sistema según la reivindicación 6, caracterizado porque el conjunto de todas las memorias internas (M1-M3) de todos los dispositivos de computación (T1-T5) conforman el total de memoria del sistema utilizable para el procesamiento de dicho algoritmo.
  8. 8.
    Sistema según cualquiera de las reivindicaciones anteriores, caracterizado porque dichos medios de control están configurados para controlar a dichos medios de comunicación para realizar una interconexión lógica entre dichos dispositivos de computación (T1-T5) implementando una determinada topología, seleccionable de entre una pluralidad de topologías, y/o para que dichos medios de comunicación permitan que el sistema opere según una técnica de multidifusión.
  9. 9.
    Sistema según la reivindicación 8, caracterizado porque dichos medios de control tienen acceso a datos referentes a dicha pluralidad de topologías, las cuales son predeterminadas, y porque están configurados para seleccionar dicha topología determinada, de manera automática o previa intervención de un usuario, seleccionando los datos referentes a la misma.
  10. 10.
    Sistema según la reivindicación 9, caracterizado porque dicha topología determinada es una topología de hipercubo de n dimensiones.
  11. 11.
    Sistema según la reivindicación 8, 9 y 10, caracterizado porque dichos medios de control están configurados para controlar a dichos dispositivos de conmutación (T1-T5) para que adapten su funcionamiento a la topología implementada y/o a dicha multidifusión.
  12. 12.
    Sistema según cualquiera de las reivindicaciones8a11, caracterizado porque al menos parte de las conexiones entre dispositivos de conmutación (T1-T5) pertenecientes a dichos medios de comunicación, están configuradas para implementar una función adicional a la de la simple transmisión de datos.
  13. 13.
    Sistema según la reivindicación 12, caracterizado porque cada una de dichas conexiones configuradas para implementar dicha función adicional comprende una memoria interna para almacenar de manera temporal unos datos a transmitir a un dispositivo de computación (T1-T5), bajo el control de dichos medios de control.
  14. 14.
    Sistema según cualquiera de las reivindicaciones anteriores, caracterizado porque cada uno de dichos dispositivos de computación (T1-T5) es un transputer.
  15. 15.
    Sistema según cualquiera de las reivindicaciones anteriores, caracterizado porque todos dichos dispositivos de computación (T1-T5) tienen una arquitectura interna igual en al menos la mayor parte de sus componentes.
  16. 16.
    Sistema según la reivindicación 15, caracterizado porque dicha unidad de procesamiento (U1) es una unidad aritmético-lógica, ALU, y porque existen diferentes diseños de ALUs en función de la tarea a ejecutar para la cual se encuentre dedicado el dispositivo de computación (T1-T5) al que pertenezcan.
  17. 17.
    Sistema según la reivindicación 15 ó 16, caracterizado porque es modular, siendo cada uno de dichos dispositivos de computación (T1-T5) un módulo, y estando dichos medios de control configurados para seleccionar, de manera automática o previa intervención de un usuario, el número y tipo de módulos a incluir en el sistema, así como las conexiones entre los mismos, en función del algoritmo a ejecutar.
  18. 18.
    Sistema según cualquiera de las reivindicaciones anteriores, caracterizado porque está previsto para realizar un procesamiento de datos en tiempo real.
  19. 19.
    Dispositivo de computación, del tipo que está configurado para procesar parte de un algoritmo, de manera concurrente y sincronizada con otros dispositivos de computación análogos, caracterizado porque comprende unos medios de sincronización que comprenden una unidad de monitorización y desbloqueo (Ua), en conexión con las entradas (a, b) de dicho dispositivo de computación (T1) y configurada para comparar los datos de dichas entradas (a, b) con unos datos relativos a una condición lógica determinada, y para generar una señal de desbloqueo con el fin de desbloquear el funcionamiento, previamente bloqueado, de al menos una unidad de procesamiento (U1) del dispositivo de computación (T1), en función de que exista coincidencia de datos en dicha comparación.
  20. 20.
    Dispositivo de computación según la reivindicación 19, caracterizado porque reúne las características técnicas de uno de dichos dispositivos de computación (T1-T5) del sistema propuesto según cualquiera de las reivindicaciones 1 a 18.
    OFICINA ESPAÑOLA DE PATENTES Y MARCAS
    N.º solicitud: 200902000
    ESPAÑA
    Fecha de presentación de la solicitud: 16.10.2009
    Fecha de prioridad:
    INFORME SOBRE EL ESTADO DE LA TECNICA
    51 Int. Cl. : G06F15/163 (2006.01) G06F15/80 (2006.01)
    DOCUMENTOS RELEVANTES
    Categoría
    Documentos citados Reivindicaciones afectadas
    A
    US 5222229 A (FUKUDA et al.) 22.06.1993, columna 2, línea 49 – columna 3, línea 7; columna 3, 1-20
    línea 55 – columna 4, línea 4; columna 4, líneas 46-54.
    A
    US 5404550 A (HORST) 04.04.1995, columna 6, líneas 31-63; figuras 2,4. 1-20
    A
    US 4574348 A (SCALLON) 04.03.1986, columna 1, línea 59 – columna 2, línea 3; columna 5, 1-20
    líneas 19-53; figura 5.
    A
    US 5175824 A (SODERBERY et al.) 29.12.1992, columna 1, línea 66 – columna 2, línea 20; 1-20
    columna 4, líneas 25-50.
    Categoría de los documentos citados X: de particular relevancia Y: de particular relevancia combinado con otro/s de la misma categoría A: refleja el estado de la técnica O: referido a divulgación no escrita P: publicado entre la fecha de prioridad y la de presentación de la solicitud E: documento anterior, pero publicado después de la fecha de presentación de la solicitud
    El presente informe ha sido realizado • para todas las reivindicaciones • para las reivindicaciones nº:
    Fecha de realización del informe 24.03.2011
    Examinador M. Alvarez Moreno Página 1/4
    INFORME DEL ESTADO DE LA TÉCNICA
    Nº de solicitud: 200902000
    Documentación mínima buscada (sistema de clasificación seguido de los símbolos de clasificación) G06F Bases de datos electrónicas consultadas durante la búsqueda (nombre de la base de datos y, si es posible, términos de
    búsqueda utilizados) INVENES, EPODOC, WPI
    Informe del Estado de la Técnica Página 2/4
    OPINIÓN ESCRITA
    Nº de solicitud: 200902000
    Fecha de Realización de la Opinión Escrita: 24.03.2011
    Declaración
    Novedad (Art. 6.1 LP 11/1986)
    Reivindicaciones Reivindicaciones 1-20 SI NO
    Actividad inventiva (Art. 8.1 LP11/1986)
    Reivindicaciones Reivindicaciones 1-20 SI NO
    Se considera que la solicitud cumple con el requisito de aplicación industrial. Este requisito fue evaluado durante la fase de examen formal y técnico de la solicitud (Artículo 31.2 Ley 11/1986).
    Base de la Opinión.-
    La presente opinión se ha realizado sobre la base de la solicitud de patente tal y como se publica.
    Informe del Estado de la Técnica Página 3/4
    OPINIÓN ESCRITA
    Nº de solicitud: 200902000
    1. Documentos considerados.-
    A continuación se relacionan los documentos pertenecientes al estado de la técnica tomados en consideración para la realización de esta opinión.
    Documento
    Número Publicación o Identificación Fecha Publicación
    D01
    US 5222229 A (FUKUDA et al.) 22.06.1993
    D02
    US 5404550 A (HORST) 04.04.1995
    D03
    US 4574348 A (SCALLON) 04.03.1986
    D04
    US 5175824 A (SODERBERY et al.) 29.12.1992
  21. 2. Declaración motivada según los artículos 29.6 y 29.7 del Reglamento de ejecución de la Ley 11/1986, de 20 de marzo, de Patentes sobre la novedad y la actividad inventiva; citas y explicaciones en apoyo de esta declaración
    Los documentos D01, D02, D03 y D04 se citan a efectos de mostrar el estado de la técnica. Todos ellos se refieren a sistemas de procesamiento paralelo y solucionan el problema de sincronización de formas diferentes. El documento D01 [columna 2, línea 49 -columna 3, línea 7; columna 3, línea 55 -columna 4, línea 4; columna 4, líneas 46-54] incorpora un "controlador de sincronización" asociado a cada procesador. Un procesador entra en estado de espera cuando detecta (mediante las instrucciones a ejecutar) que debe sincronizarse con otros procesadores. El "controlador de sincronización" es el encargado de generar una señal de sincronización y detectar las solicitudes de sincronización de otros procesadores; el procesador reanuda el procesamiento cuando se lo notifica su "controlador de sincronización" asociado. Por lo tanto el bloqueo (parada) y el desbloqueo (reanudación) se realizan en función de las instrucciones programación. El documento D02 [figuras 2 y 4; columna 6, líneas 31-63] dispone de una "lógica de sincronización" común que se encarga de proporcionar las señales de sincronización a los procesadores en función de una señal de indicación de estado recibida desde el resto de los procesadores. En el documento D03 [columna 1, línea 59 -columna 2, línea 3; columna 5, líneas 19 53; figura 5] la sincronización se consigue mediante la utilización de una única instrucción compleja, transmitida simultáneamente a las unidades de procesamiento, que fuerza la sincronización en la ejecución. El documento D04 [columna 1, línea 66 -columna 2, línea 20; columna 4, líneas 25 -50] muestra una arquitectura basada en el flujo de tareas. Existe una lista enlazada de paquetes de memoria, los cuales contienen un elemento de datos, la siguiente instrucción a ejecutar y un enlace al siguiente paquete de memoria. Dentro del paquete de memoria existe un bit de bloqueo que es utilizado por las diversas instrucciones a ejecutar para realizar la sincronización. Puede verse que todos los documentos anteriores muestran sistemas donde la sincronización viene determinada por elementos externos a la unidad de procesamiento (instrucciones del programa o controladores que manejan señales de sincronización) lo cual difiere completamente de la solución aportada por la solicitud en estudio. En ninguno de los casos cada unidad de procesamiento dispone, de forma independiente, de medios para comparar dos datos de entrada y en función de una condición lógica determinada generar una señal de desbloqueo.
    A la vista de los documentos anteriores, tanto el sistema como el dispositivo definidos en las reivindicaciones independientes 1 y 19 se considera que tienen novedad y actividad inventiva según los artículos 6.1 y 8.1 de la Ley de Patentes.
    De igual forma las sucesivas reivindicaciones dependientes 2-18 y 20 tienen novedad y actividad inventiva según los artículos 6.1 y 8.1 de la Ley de Patentes.
    Informe del Estado de la Técnica Página 4/4
ES200902000A 2009-10-16 2009-10-16 Sistema de procesamiento de datos y dispositivo de computación. Expired - Fee Related ES2357923B1 (es)

Priority Applications (3)

Application Number Priority Date Filing Date Title
ES200902000A ES2357923B1 (es) 2009-10-16 2009-10-16 Sistema de procesamiento de datos y dispositivo de computación.
EP10824491.4A EP2490129A4 (en) 2009-10-16 2010-10-15 DATA PROCESSING SYSTEM AND COMPUTER DEVICE
PCT/ES2010/000416 WO2011048237A1 (es) 2009-10-16 2010-10-15 Sistema de procesamiento de datos y dispositivo de computación

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ES200902000A ES2357923B1 (es) 2009-10-16 2009-10-16 Sistema de procesamiento de datos y dispositivo de computación.

Publications (2)

Publication Number Publication Date
ES2357923A1 ES2357923A1 (es) 2011-05-03
ES2357923B1 true ES2357923B1 (es) 2012-03-12

Family

ID=43859203

Family Applications (1)

Application Number Title Priority Date Filing Date
ES200902000A Expired - Fee Related ES2357923B1 (es) 2009-10-16 2009-10-16 Sistema de procesamiento de datos y dispositivo de computación.

Country Status (3)

Country Link
EP (1) EP2490129A4 (es)
ES (1) ES2357923B1 (es)
WO (1) WO2011048237A1 (es)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574348A (en) * 1983-06-01 1986-03-04 The Boeing Company High speed digital signal processor architecture
GB8521672D0 (en) 1985-08-30 1985-10-02 Univ Southampton Data processing device
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
US5175824A (en) * 1989-05-08 1992-12-29 Trw Inc. Crossbar switch connected modular multiprocessor system with processor timing relationship selected and synchronized to be appropriate for function being performed
US5404550A (en) * 1991-07-25 1995-04-04 Tandem Computers Incorporated Method and apparatus for executing tasks by following a linked list of memory packets
EP0570729A3 (en) 1992-05-22 1994-07-20 Ibm Apap i/o programmable router
EP1701249A1 (en) 2005-03-11 2006-09-13 Interuniversitair Microelektronica Centrum Vzw Ultra low power ASIP (Application-Domain specific Instruction-set Processor) microcomputer
US7398502B1 (en) 2005-12-12 2008-07-08 Xilinx, Inc. Micro-coded processors for concurrent processing in a programmable logic device
US8214662B2 (en) * 2007-04-09 2012-07-03 Panasonic Corporation Multiprocessor control unit, control method performed by the same, and integrated circuit

Also Published As

Publication number Publication date
EP2490129A1 (en) 2012-08-22
WO2011048237A1 (es) 2011-04-28
ES2357923A1 (es) 2011-05-03
EP2490129A4 (en) 2013-08-21

Similar Documents

Publication Publication Date Title
EP3449359B1 (en) Out-of-order block-based processors and instruction schedulers
US20200026685A1 (en) Pipelined configurable processor
Cong et al. A fully pipelined and dynamically composable architecture of CGRA
US7818725B1 (en) Mapping communication in a parallel processing environment
Nicol A coarse grain reconfigurable array (CGRA) for statically scheduled data flow computing
US9275002B2 (en) Tile-based processor architecture model for high-efficiency embedded homogeneous multicore platforms
US8656141B1 (en) Architecture and programming in a parallel processing environment with switch-interconnected processors
TW202115575A (zh) 靜止可重組態的資料處理器
EP2728491A1 (en) Stream Data Processor
US9448967B2 (en) Stream data processor
Leibson et al. Configurable processors: a new era in chip design
ES2357923B1 (es) Sistema de procesamiento de datos y dispositivo de computación.
El Kateeb et al. Wireless sensor nodes processor architecture and design
Abdelhamid et al. MITRACA: A next-gen heterogeneous architecture
Odendahl et al. A next generation digital signal processor for European space missions
Kiełbik et al. Instructionless processor architecture using dynamically reconfigurable logic
Butts et al. Reconfigurable work farms on a massively parallel processor array
Yu High performance heterogeneous embedded computing: a review
Bosse Rule-based High-level Hardware-RTL Synthesis of Algorithms, Virtualizing Machines, and Communication Protocols with FPGAs based on Concurrent Communicating Sequential Processes and the ConPro Synthesis Framework
Rutzig Multicore platforms: Processors, communication and memories
Shah et al. DAG Processing Unit Version 1 (DPU): Efficient Execution of Irregular Workloads on a Multicore Processor
Saponara et al. DSPACE hardware architecture for on-board real-time image/video processing in European space missions
ES2247401T3 (es) Dispositivo hardware basado en un controlador y metodo para configurar el mismo.
Chen et al. Multi-mode sensor processing on a dynamically reconfigurable massively parallel processor array
Garzia et al. Control techniques for coupling a coarse-grain reconfigurable array with a generic RISC core

Legal Events

Date Code Title Description
FG2A Definitive protection

Ref document number: 2357923

Country of ref document: ES

Kind code of ref document: B1

Effective date: 20120312

FD2A Announcement of lapse in spain

Effective date: 20180924