ES2300633T3 - Coprocesador canalizado. - Google Patents

Coprocesador canalizado. Download PDF

Info

Publication number
ES2300633T3
ES2300633T3 ES03781552T ES03781552T ES2300633T3 ES 2300633 T3 ES2300633 T3 ES 2300633T3 ES 03781552 T ES03781552 T ES 03781552T ES 03781552 T ES03781552 T ES 03781552T ES 2300633 T3 ES2300633 T3 ES 2300633T3
Authority
ES
Spain
Prior art keywords
data
accelerator
pipeline
central processor
memory
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 - Lifetime
Application number
ES03781552T
Other languages
English (en)
Inventor
Chandan Mathur
Scott Hellenbach
John W. Rapp
Larry Jackson
Mark Jones
Troy Cherasaro
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.)
Lockheed Martin Corp
Original Assignee
Lockheed Corp
Lockheed Martin Corp
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
Priority claimed from US10/684,102 external-priority patent/US7418574B2/en
Application filed by Lockheed Corp, Lockheed Martin Corp filed Critical Lockheed Corp
Application granted granted Critical
Publication of ES2300633T3 publication Critical patent/ES2300633T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a secondary processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a secondary processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Microcomputers (AREA)
  • Programmable Controllers (AREA)
  • Bus Control (AREA)
  • Complex Calculations (AREA)

Abstract

Máquina de transferencia de vectores entre entidades pares (40), que comprende: un procesador central (42) que se puede hacer funcionar para ejecutar un programa, y, en respuesta al programa, se puede hacer funcionar para generar unos primeros datos principales; un acelerador de canalización (44) que comprende canalizaciones de conexiones permanentes y que está acoplado al procesador central (42) y que se puede hacer funcionar para recibir los primeros datos principales y para generar unos primeros datos de canalización a partir de los primeros datos principales, presentando el acelerador de canalización unas interconexiones internas configurables y una memoria de microprograma (52) que se puede hacer funcionar para almacenar un microprograma de configuración para configurar las interconexiones internas, caracterizada porque la máquina de vectores entre pares (40) comprende además un registro de configuración (70) del acelerador acoplado al procesador central (42) y que se puede hacer funcionar para almacenar información de configuración del acelerador de canalización que es independiente con respecto al programa, y el procesador central (42) se puede hacer funcionar para recibir la información de configuración a partir del registro (70) y para configurar el acelerador de canalización (44) con vistas a generar los primeros datos de canalización mediante el suministro de la información de configuración al acelerador de canalización antes de ejecutar el programa descargando la información de configuración en la memoria del microprograma, y porque se proporciona un único bus (50) para la comunicación del procesador central con el acelerador de canalización y el procesador central y el acelerador de canalización se comunican a través de mensajes que comprenden los primeros datos principales y un encabezamiento que contiene la canalización de conexiones permanentes deseada de destino de los datos.

Description

Coprocesador canalizado.
Reivindicación de prioridad
La presente solicitud reivindica prioridad con respecto a la solicitud provisional US nº de serie 60/422.503, presentada el 31 de octubre de 2002, la cual se incorpora a la presente a título de referencia.
Referencias cruzadas con solicitudes relacionadas
La presente solicitud está relacionada con la publicación US nº 2004/0181621 titulada COMPUTING MACHINE HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD; nº 2004/013
6241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD; nº 2004/0170070 titulada PROGRAMMABLE CIRCUIT AND RELATED COMPUTING MACHINE AND METHOD; y nº 2004/0130927 titulada PIPELINE ACCELERATOR HAVING MULTIPLE PIPELINE UNITS AND RELATED COMPUTING MACHINE AND METHOD; presentadas todas ellas el 9 de octubre de 2003, y que tienen un propietario común.
Antecedentes
Una arquitectura informática habitual para procesar cantidades relativamente grandes de datos en un periodo de tiempo relativamente breve comprende múltiples procesadores interconectados que comparten la carga de procesado. Al compartir la carga de procesado, estos múltiples procesadores normalmente pueden procesar los datos más rápidamente que un único procesador para una frecuencia de reloj determinada. Por ejemplo, cada uno de los procesadores puede procesar una parte respectiva de los datos o ejecutar una parte respectiva de un algoritmo de procesado.
La Fig. 1 es un diagrama de bloques esquemático de una máquina informática 10 convencional que presenta una arquitectura multiprocesador. La máquina 10 comprende un procesador maestro 12 y coprocesadores 14_{1} a 14_{n}, los cuales se comunican entre ellos y con el procesador maestro a través de un bus 16, un puerto de entrada 18 para recibir datos brutos de un dispositivo remoto (no mostrado en la Fig. 1), y un puerto de salida 20 para proporcionar datos procesados a la fuente remota. La máquina 10 comprende además una memoria 22 para el procesador maestro 12, unas memorias respectivas 24_{1} a 24_{n} para los coprocesadores 14_{1} a 14_{n}, y una memoria 26 que es compartida por el procesador maestro y los coprocesadores a través del bus 16. La memoria 22 actúa como memoria tanto de programa como de trabajo para el procesador maestro 12, y cada una de las memorias 24_{1} a 24_{n} actúa como memoria tanto de programa como de trabajo para un coprocesador respectivo 14_{1} a 14_{n}. La memoria compartida 26 permite que el procesador maestro 12 y los coprocesadores 14 se transfieran datos entre ellos, y desde/hacia el dispositivo remoto a través, respectivamente, de los puertos 18 y 20. El procesador maestro 12 y los coprocesadores 14 reciben además una señal de reloj común que controla la velocidad a la cual la máquina 10 procesa los datos brutos.
En general, la máquina informática 10 divide eficazmente el procesado de los datos brutos entre el procesador maestro 12 y los coprocesadores 14. La fuente remota (no mostrada en la Fig. 1), tal como un conjunto de elementos de sónar (Fig. 5), carga los datos brutos a través del puerto 18 en una sección de la memoria compartida 26, la cual actúa como una memoria intermedia (no mostrada) del tipo primero en entrar, primero en salir (FIFO) para los datos brutos. El procesador maestro 12 recupera los datos brutos de la memoria 26 a través del bus 16, y a continuación el procesador maestro y los coprocesadores 14 procesan los datos brutos, transfiriendo datos entre ellos según resulte necesario a través del bus 16. El procesador maestro 12 carga los datos procesados en otra memoria intermedia FIFO (no mostrada) definida en la memoria compartida 26, y la fuente remota recupera los datos procesados de esta FIFO a través del puerto 20.
En un ejemplo de operación, la máquina informática 10 procesa los datos brutos realizando secuencialmente n + 1 operaciones respectivas sobre los datos brutos, en la que estas operaciones constituyen conjuntamente un algoritmo de procesado tal como una Transformada Rápida de Fourier (FFT). Más específicamente, la máquina 10 forma una canalización (pipeline) de procesado de datos a partir del procesador maestro 12 y los coprocesadores 14. Para una frecuencia determinada de la señal de reloj, dicha canalización permite normalmente que la máquina 10 procese los datos brutos de forma más rápida que una máquina que tenga solamente un único procesador.
Después de recuperar los datos brutos a partir de la FIFO de datos brutos (no mostrada) en la memoria 26, el procesador maestro 12 realiza una primera operación, tal como una función trigonométrica, sobre los datos brutos. Esta operación produce un primer resultado, el cual es almacenado por el procesador 12 en una FIFO de primeros resultados (no mostrada) definida dentro de la memoria 26. Típicamente, el procesador 12 ejecuta un programa almacenado en la memoria 22, y realiza las acciones antes descritas bajo el control del programa. El procesador 12 también puede usar la memoria 22 como memoria de trabajo para almacenar temporalmente datos que son generados por el procesador en intervalos intermedios de la primera operación.
Seguidamente, después de recuperar el primer resultado a partir de la FIFO de primeros resultados (no mostrada) en la memoria 26, el coprocesador 14_{1} realiza una segunda operación, tal como una función logarítmica, sobre el primer resultado. Esta segunda operación produce un segundo resultado, el cual es almacenado por el coprocesador 14_{1} en una FIFO de segundos resultados (no mostrada) definida dentro de la memoria 26. Típicamente, el coprocesador 14_{1} ejecuta un programa almacenado en la memoria 24_{1}, y realiza las acciones antes descritas bajo el control del programa. El coprocesador 14_{1} también puede usar la memoria 24_{1} como memoria de trabajo para almacenar temporalmente datos que son generados por el coprocesador en intervalos intermedios de la segunda operación.
A continuación, los coprocesadores 24_{2} a 24_{n} realizan secuencialmente unas terceras operaciones n^{ésimas} sobre los segundos resultados (n-1)^{ésimos} de una forma similar a la descrita anteriormente para el coprocesador 24_{1}.
La operación n^{ésima}, la cual es realizada por el coprocesador 24_{n}, produce el resultado final, es decir, los datos procesados. El coprocesador 24_{n} carga los datos procesados en una FIFO de datos procesados (no mostrada) definida dentro de la memoria 26, y el dispositivo remoto (no mostrado en la Fig. 1) recupera los datos procesados a partir de esta FIFO.
Como el procesador maestro 12 y los coprocesadores 14 están realizando simultáneamente diferentes operaciones del algoritmo de procesado, normalmente la máquina informática 10 puede procesar los datos brutos de forma más rápida que una máquina informática que disponga de un único procesador que realiza secuencialmente las diferentes operaciones. Específicamente, el procesador único no puede recuperar un conjunto nuevo de los datos brutos hasta que realiza la totalidad de las n + 1 operaciones sobre el conjunto anterior de datos brutos. Sin embargo, usando la técnica de canalización antes descrita, el procesador maestro 12 puede recuperar un conjunto nuevo de datos brutos después de realizar únicamente la primera operación. Por consiguiente, para una frecuencia de reloj determinada, esta técnica de canalización puede incrementar la velocidad a la cual la máquina 10 procesa los datos brutos en un factor de aproximadamente n + 1, en comparación con una máquina de un solo procesador (no mostrada en la
Fig. 1).
Alternativamente, la máquina informática 10 puede procesar los datos brutos en paralelo ejecutando simultáneamente n + 1 instancias de un algoritmo de procesado, tal como una FFT, sobre los datos brutos. Es decir, si el algoritmo comprende n + 1 operaciones secuenciales tal como se ha descrito anteriormente en el ejemplo previo, en ese caso cada uno de entre el procesador maestro 12 y los coprocesadores 14 realizan secuencialmente la totalidad de las n + 1 operaciones sobre conjuntos respectivos de los datos brutos. Por consiguiente, para una frecuencia de reloj determinada, esta técnica de procesado en paralelo, tal como la técnica de canalización antes descrita, puede incrementar la velocidad a la cual la máquina 10 procesa los datos brutos en un factor de aproximadamente n + 1 en comparación con una máquina de un solo procesador (no mostrada en la Fig. 1).
Desafortunadamente, aunque la máquina informática 10 puede procesar datos más rápidamente que una máquina informática de un solo procesador (no mostrada en la Fig. 1), la velocidad de procesado de datos de la máquina 10 normalmente es de forma significativa menor que la frecuencia del reloj del procesador. Específicamente, la velocidad de procesado de datos de la máquina informática 10 está limitada por el tiempo que requieren el procesador maestro 12 y los coprocesadores 14 para procesar datos. En aras de una mayor brevedad, se describe un ejemplo de esta limitación de la velocidad en combinación con el procesador maestro 12, aunque se entiende que esta descripción se aplica también a los coprocesadores 14. Tal como se ha descrito anteriormente, el procesador maestro 12 ejecuta un programa que controla al procesador para manipular datos de una manera deseada. Este programa comprende una secuencia de instrucciones que son ejecutadas por el procesador 12. Desafortunadamente, el procesador 12 requiere típicamente múltiples ciclos de reloj para ejecutar una única instrucción, y con frecuencia debe ejecutar múltiples instrucciones para procesar un único valor de datos. Por ejemplo, supóngase que el procesador 12 debe multiplicar un primer valor de datos A (no mostrado) por un segundo valor de datos B (no mostrado). Durante un primer ciclo de reloj, el procesador 12 recupera una instrucción de multiplicación de la memoria 22. Durante el segundo y el tercer ciclos de reloj, el procesador 12 recupera respectivamente A y B de la memoria 26. Durante un cuarto ciclo de reloj, el procesador 12 multiplica A y B, y, durante un quinto ciclo de reloj, almacena el producto resultante en la memoria 22 ó 26 o proporciona el producto resultante al dispositivo remoto (no mostrado). Ésta es la mejor situación posible, ya que en muchos casos el procesador 12 requiere ciclos de reloj adicionales para tareas suplementarias tales como la inicialización y el cierre de contadores. Por esta razón, en el mejor de los casos el procesador 12 requiere cinco ciclos de reloj, o una media de 2,5 ciclos de reloj por valor de datos, para procesar
A y B.
Por consiguiente, la velocidad a la cual la máquina informática 10 procesa datos es normalmente de forma significativa menor que la frecuencia del reloj que controla al procesador maestro 12 y a los coprocesadores 14. Por ejemplo, si el procesador 12 se activa mediante impulsos de reloj a 1,0 Gigahercios (GHz) aunque requiere una media de 2,5 ciclos de reloj por valor de datos, en ese caso la velocidad de procesado de datos efectiva es igual a (1,0 GHz)/2,5 = 0,4 GHz. Normalmente, esta velocidad de procesado de datos efectiva se caracteriza en unidades de operaciones por segundo. Así, en este ejemplo, para una velocidad de reloj de 1,0 GHz, al procesador 12 se le asignaría un valor nominal de la velocidad de procesado de datos de 0,4 Gigaoperaciones/segundo (Gops).
La Fig. 2 es un diagrama de bloques de una canalización de datos de conexión permanente 30 que típicamente puede procesar datos de forma más rápida que un procesador para una frecuencia de reloj determinada, y normalmente de forma sustancial a la misma velocidad a la cual se activa mediante impulsos de reloj la canalización. La canalización 30 comprende unos circuitos operadores 32_{1} a 32_{n} que realizan cada uno de ellos una operación respectiva sobre datos respectivos sin ejecutar instrucciones de programa. Es decir, la operación deseada se "quema" en un circuito 32 de tal manera que el mismo implementa la operación automáticamente, sin la necesidad de instrucciones de programa. Al eliminar la carga suplementaria asociada a la ejecución de instrucciones de programa, la canalización 30 puede realizar típicamente más operaciones por segundo que un procesador para una frecuencia de reloj determinada.
Por ejemplo, la canalización 30 con frecuencia puede resolver la siguiente ecuación más rápidamente que un procesador para una frecuencia de reloj determinada:
(1)Y(x_{k}) = (5x_{k} + 3)2^{xk}
en la que x_{k} representa una secuencia de valores de datos brutos. En este ejemplo, el circuito operador 32_{1} es un multiplicador que calcula 5x_{k}, el circuito 32_{2} es un sumador que calcula 5x_{k}+3, y el circuito 32_{n} (n=3) es un multiplicador que calcula (5x_{k}+3)2^{xk}.
Durante un primer ciclo de reloj k=1, el circuito 32_{1} recibe el valor de datos x_{1} y lo multiplica por 5 para generar 5x_{1}.
Durante un segundo ciclo de reloj k=2, el circuito 32_{2} recibe 5x_{1} del circuito 32_{1} y suma 3 para generar 5x_{1}+3. Además, durante el segundo ciclo de reloj, el circuito 32_{1} genera 5x_{2}.
Durante un tercer ciclo de reloj k=3, el circuito 32_{3} recibe 5x_{1}+3 del circuito 32_{2} y realiza una multiplicación por 2^{x1} (concretamente desplaza 5x_{1}+3 hacia la derecha x_{1} posiciones) para generar el primer resultado (5x_{1}+3)2^{x1}. También durante el tercer ciclo de reloj, el circuito 32_{1} genera 5x_{3} y el circuito 32_{2} genera 5x_{2}+3.
La canalización 30 continúa con el procesado de valores de datos brutos subsiguientes x_{k} de esta manera hasta que se han procesado todos los valores de datos brutos.
Por consiguiente, después de un retardo de dos ciclos de reloj tras recibir un valor de datos brutos x_{1} -a este retardo normalmente se le denomina latencia de la canalización 30- la canalización genera el resultado (5x_{1}+3)2^{x1}, y después de esto genera un resultado por cada ciclo de reloj.
De este modo, omitiendo la latencia, la canalización 30 presenta una velocidad de procesado de datos igual a la velocidad del reloj. En comparación, suponiendo que el procesador maestro 12 y los coprocesadores 14 (Fig. 1) presentan velocidades de procesado de datos que son 0,4 veces la velocidad del reloj tal como en el ejemplo anterior, la canalización 30 puede procesar datos 2,5 veces más rápido que la máquina informática 10 (Fig. 1) para una velocidad de reloj determinada.
Haciendo referencia todavía a la Fig. 2, un diseñador puede seleccionar la implementación de la canalización 30 en un IC de lógica programable (PLIC), tal como una matriz de puertas programable in situ (FPGA), ya que un PLIC permite una flexibilidad del diseño y de las modificaciones mayor que un IC de aplicación específica (ASIC). Para configurar las conexiones permanentes dentro de un PLIC, el diseñador simplemente establece registros de configuración de interconexiones dispuestos dentro del PLIC en estados binarios predeterminados. A la combinación de todos estos estados binarios se le denomina normalmente "microprograma". Típicamente, el diseñador carga este microprograma en una memoria no volátil (no mostrada en la Fig. 2) que está acoplada al PLIC. Cuando se "enciende" el PLIC, el mismo descarga el microprograma desde la memoria hacia los registros de configuración de interconexiones. De este modo, para modificar el funcionamiento del PLIC, el diseñador simplemente modifica el microprograma y permite que el PLIC descargue el microprograma modificado en los registros de configuración de interconexiones. Esta capacidad de modificar el PLIC simplemente modificando el microprograma resulta particularmente útil durante la fase de pruebas de prototipos y para actualizar la canalización 30 "in situ".
Desafortunadamente, la canalización de conexiones permanentes 30 no puede ejecutar típicamente todos los algoritmos, particularmente los que conllevan una toma de decisiones significativa. Típicamente, un procesador puede ejecutar una instrucción de toma de decisión (por ejemplo, instrucciones condicionales tales como "si A, entonces ir a B, si no ir a C") aproximadamente de forma tan rápida como la que puede ejecutar una instrucción de una operación (por ejemplo, "A + B") de una longitud comparable. No obstante, aunque la canalización 30 puede que sea capaz de tomar una decisión relativamente sencilla (por ejemplo, "A > B?"), típicamente no puede ejecutar una decisión relativamente compleja (por ejemplo, "si A, entonces ir a B, si no ir a C"). Además, aunque es posible que se pueda diseñar la canalización 30 para ejecutar dicha decisión compleja, el tamaño y la complejidad de la circuitería requerida con frecuencia hace que dicho diseño resulte poco práctico, particularmente cuando un algoritmo comprende múltiples decisiones complejas diferentes.
Por consiguiente, los procesadores se usan típicamente en aplicaciones que requieren una toma de decisiones significativa, y las canalizaciones de conexiones permanentes se limitan típicamente para aplicaciones de "cálculo intensivo" que conllevan una toma de decisiones reducida o inexistente.
Además, tal como se describe posteriormente, de forma típica resulta mucho más sencillo diseñar/modificar una máquina informática basada en procesadores, tal como la máquina informática 10 de la Fig. 1, que diseñar/modificar una canalización de conexiones permanentes tal como la canalización 30 de la Fig. 2, particularmente cuando la canalización 30 comprende múltiples PLIC.
Típicamente, los componentes informáticos, tales como procesadores y sus periféricos (por ejemplo, una memoria), comprenden interfaces de comunicación normalizadas industrialmente que facilitan la interconexión de los componentes para formar una máquina informática basada en procesadores.
Típicamente, una interfaz de comunicación normalizada comprende dos capas: una capa física y una capa de servicio.
La capa física comprende la circuitería y las interconexiones de circuitos correspondientes que forman la interfaz y los parámetros de funcionamiento de esta circuitería. Por ejemplo, la capa física comprende los pins que conectan el componente a un bus, las memorias intermedias que retienen datos recibidos desde los pins, y los controladores que impulsan datos sobre los pins. Los parámetros de funcionamiento comprenden el intervalo de voltaje aceptable de las señales de datos que reciben los pins, la temporización de las señales para escribir y leer datos, y los modos de funcionamiento soportados (por ejemplo, modo de ráfagas, modo de búsqueda). Las capas físicas convencionales comprenden la lógica transistor-transistor (TTL) y RAMBUS.
La capa de servicio comprende el protocolo mediante el cual un componente informático transfiere datos. El protocolo define el formato de los datos y la manera según la cual el componente envía y recibe los datos formateados. Entre los protocolos de comunicación convencionales se comprenden el protocolo de transferencia de archivos (FTP) y el TCP/IP (expand).
Por consiguiente, como los fabricantes y otros proveedores típicamente diseñan componentes informáticos que disponen de capas de comunicación normalizadas industrialmente, típicamente es posible diseñar la interfaz de dicho componente e interconectarla a otros componentes informáticos con un esfuerzo relativamente reducido. Esto permite dedicar la mayor parte del tiempo al diseño de las otras partes de la máquina informática, y modificar fácilmente la máquina mediante la adición o eliminación de componentes.
El diseño de un componente informático que soporte una capa de comunicación normalizada industrialmente permite ahorrar tiempo de diseño mediante el uso de un diseño de capa física existente a partir de una biblioteca de diseños. Esta opción garantiza además que el componente se pueda comunicar fácilmente mediante interfaz con otros componentes informáticos disponibles comercialmente.
Además, el diseño de una máquina informática usando componentes informáticos que soportan una capa de comunicación habitual normalizada industrialmente permite que el diseñador interconecte los componentes con un tiempo y un esfuerzo reducidos. Como los componentes soportan una capa de interfaz común, el diseñador puede interconectarlos a través de un bus del sistema con un esfuerzo de diseño reducido. Además, como la capa de interfaz soportada está normalizada industrialmente, la máquina se puede modificar fácilmente. Por ejemplo, se pueden añadir componentes y periféricos diferentes a la máquina a medida que el diseño del sistema evolucione, o se pueden añadir/diseñar fácilmente componentes de la siguiente generación a medida que la tecnología evolucione. Además, como los componentes soportan una capa de servicio normalizada industrialmente común, al software de la máquina informática se le puede incorporar un módulo de software existente que implemente el protocolo correspondiente. De este modo, los componentes se pueden comunicar mediante interfaz con un esfuerzo reducido ya que el diseño de la interfaz se encuentra esencialmente ya realizado, y por lo tanto es posible concentrarse en el diseño de las partes (por ejemplo, el software) de la máquina que consiguen que la máquina realice la(s) función(es) deseada(s).
No obstante, desafortunadamente, no existen capas de comunicación normalizadas industrialmente y conocidas para componentes, tales como los PLIC, usados para formar canalizaciones de conexiones permanentes tales como la canalización 30 de la Fig. 2.
Por consiguiente, para diseñar una canalización que presente múltiples PLIC, típicamente se consume una cantidad significativa de tiempo y se requiere un esfuerzo significativo diseñando y depurando la capa de comunicación entre los PLIC "desde cero". Típicamente, una capa de comunicación ad hoc de este tipo depende de los parámetros de los datos que se estén transfiriendo entre los PLIC. De forma similar, para diseñar una canalización que comunique mediante interfaz con un procesador, se debería consumir una cantidad de tiempo significativa y ejercer un esfuerzo significativo en el diseño y la depuración de la capa de comunicación entre la canalización y el procesador desde cero.
De modo similar, para modificar dicha canalización mediante la adición de un PLIC en la misma, típicamente se consume una cantidad de tiempo significativa y se ejerce un esfuerzo significativo diseñando y depurando la capa de comunicación entre el PLIC añadido y los PLIC existentes. Del mismo modo, para modificar una canalización mediante la adición de un procesador, o para modificar una máquina informática mediante la adición de una canalización, se debería consumir una cantidad de tiempo significativa y ejercer un esfuerzo significativo en el diseño y la depuración de la capa de comunicación entre la canalización y el procesador.
Por consiguiente, haciendo referencia a las Figs. 1 y 2, debido a las dificultades de la comunicación mediante interfaz de múltiples PLIC y de la comunicación mediante interfaz de un procesador con una canalización, con frecuencia los usuarios se ven obligados a llegar a soluciones de compromiso importantes cuando se diseña una máquina informática. Por ejemplo, con una máquina informática basada en procesadores, el usuario se ve obligado a ceder velocidad de cálculo intensivo por capacidad de toma de decisiones complejas y flexibilidad de diseño/modificación. A la inversa, con una máquina informática basada en canalizaciones de conexiones permanentes, el usuario se obligado a ceder capacidad de toma de decisiones complejas y flexibilidad de diseño/modificación por velocidad de cálculo intensivo. Además, debido a las dificultades de la comunicación mediante interfaz de múltiples PLIC, con frecuencia resulta poco práctico que un usuario diseñe una máquina basada en canalizaciones cuyo número de circuitos PLIC no sea reducido. Como consecuencia, normalmente una máquina práctica basada en canalizaciones presenta una funcionalidad limitada. Además, debido a las dificultades de la comunicación mediante interfaz de un procesador con un PLIC, resultaría poco práctico comunicar mediante interfaz un procesador con más de un PLIC. Como consecuencia, las ventajas obtenidas al combinar un procesador y una canalización serían mínimas.
Por esta razón, ha surgido la necesidad de una nueva arquitectura informática que permita la combinación de la capacidad de toma de decisiones de una máquina basada en procesadores con la velocidad del cálculo intensivo de una máquina basada en canalizaciones de conexiones permanentes.
El documento EP-A-0 945 788 da a conocer un sistema de procesado de datos que comprende un núcleo de un procesador digital de la señal y un coprocesador, que responde a órdenes provenientes del núcleo del procesador digital de la señal. El solicitante observa que las órdenes enviadas por el procesador digital de la señal comprenden códigos de operación que definen el tipo de cálculo, con lo que las órdenes son instrucciones de programación para el coprocesador, y dicho coprocesador debe ejecutar estas instrucciones de programación para procesar y generar datos resultantes. El solicitante observa también que, durante su funcionamiento, el núcleo del procesador digital de la señal controla los datos y coeficientes usados por el coprocesador cargando los datos a procesar en la memoria de datos y los coeficientes en la memoria de coeficientes. Después de la transferencia de datos a procesar, el núcleo del procesador digital de la señal señaliza al coprocesador la orden correspondiente al algoritmo deseado de procesado de la señal. De este modo, las órdenes enviadas por el núcleo del procesador digital de la señal hacia el coprocesador son parte del código de programa que es ejecutado por el núcleo del procesador digital de la señal en el proceso de generación de los datos a alimentar hacia el coprocesador.
S. Bakshi et al., "Partitioning and Pipelining for Performance-Constrained Hardware/Software Systems", IEEE Trans. on VLSI Systems, vol. 7, nº 4, diciembre de 1999, páginas 419 a 432, dan a conocer (Figura 2) una arquitectura con canalizaciones que comprende uno o más procesadores, uno o más ASIC, y uno o más chips de memoria que se comunican todos ellos a través de uno o más buses. El presente solicitante observa que los ASIC son circuitos de conexiones permanentes, que no se pueden (re)configurar posteriormente.
G. Lecurieux-Lafayette, "Un seul FPGA dope le traitement d'images", Electronique, CEP Communication, París, nº 55, 1996, páginas 98, 101 a 103, describen un "Ordenador de imágenes" que comprende un microprocesador y un coprocesador basado en una FPGA, en la que la FPGA es reconfigurable durante su funcionamiento.
Sumario
En una de las formas de realización de la invención, se proporcionan una máquina con transferencia de vectores entre pares según se expone en la reivindicación 1, y un método según se expone en la reivindicación 7.
Como la máquina de vectores entre pares comprende tanto un procesador como un acelerador de canalizaciones de conexiones permanentes, la misma normalmente puede procesar datos de forma más eficaz que una máquina informática que incluya solamente procesadores o solamente canalizaciones de conexiones permanentes. Por ejemplo, se puede diseñar la máquina de vectores entre pares de manera que el procesador central realice la toma de decisiones y operaciones no intensivas matemáticamente mientras que el acelerador realiza las operaciones intensivas matemáticamente. Trasladando las operaciones intensivas matemáticamente al acelerador, la máquina de vectores entre pares, para una frecuencia de reloj determinada, puede procesar normalmente datos a una velocidad que supera la velocidad a la que una máquina de un solo procesador puede procesar los datos.
Breve descripción de los dibujos
La Fig. 1 es un diagrama de bloques de una máquina informática que presenta una arquitectura multiprocesador convencional.
La Fig. 2 es un diagrama de bloques de una canalización de conexiones permanentes convencional.
La Fig. 3 es un diagrama de bloques esquemático de una máquina informática que presenta una arquitectura de vectores entre pares según una de las formas de realización de la invención.
La Fig. 4 es un diagrama de bloques esquemático de un sistema electrónico que incorpora la máquina informática de vectores entre pares de la Fig. 3 según una de las formas de realización de la invención.
Descripción detallada
La Fig. 3 es un diagrama de bloques esquemático de una máquina informática 40, que presenta una arquitectura de vectores entre pares según una de las formas de realización de la invención. Además de un procesador central 42, la máquina de vectores entre pares 40 comprende un acelerador de canalización 44, que realiza por lo menos una parte del procesado de datos, y que sustituye, por lo tanto, de forma efectiva al banco de coprocesadores 14 de la máquina informática 10 de la Fig. 1. De este modo, el procesador central 42 y el acelerador 44 son "entidades pares" que pueden transferir vectores de datos de un lado a otro. Como el acelerador 44 no ejecuta instrucciones de programa, el mismo típicamente realiza operaciones matemáticamente intensivas sobre los datos de forma significativamente más rápida que un banco de coprocesadores para una frecuencia de reloj determinada. Por consiguiente, al combinar la capacidad de toma de decisiones del procesador 42 y la capacidad de cálculo intensivo del acelerador 44, la máquina 40 presenta las mismas capacidades que una máquina informática convencional tal como la máquina 10, aunque normalmente puede procesar datos más rápidamente que esta última. Además, tal como se describe en las publicaciones US anteriormente citadas nº 2004/0181621 titulada COMPUTING MACHINE HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD y 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD, el hecho de suministrar al acelerador 44 la misma capa de comunicación que el procesador central 42 facilita el diseño y la modificación de la máquina 40, particularmente cuando la capa de comunicaciones se corresponda con una norma industrial. Además, cuando el acelerador 44 incluya múltiples componentes (por ejemplo, circuitos PLIC), el hecho de suministrar a estos componentes esta misma capa de comunicación facilita el diseño y la modificación del acelerador, particularmente cuando la capa de comunicación se corresponda con una norma industrial. Por otra parte, la máquina 40 puede proporcionar además otras ventajas según se describe posteriormente y en las solicitudes de patente citadas anteriormente.
Además del procesador central 42 y del acelerador de canalización 44, la máquina informática de vectores entre pares 40 comprende una memoria de procesador 46, una memoria de interfaz 48, un bus 50, una memoria de microprograma 52, puertos opcionales de entrada de datos brutos 54 y 92 (mostrándose el puerto 92 en la Fig. 4), puertos opcionales de salida de datos procesados 58 y 94 (mostrándose el puerto 94 en la Fig. 4), y un encaminador opcional 61.
El procesador central 42 comprende una unidad de procesado 62 y un manejador de mensajes 64, y la memoria 46 del procesador comprende una memoria de unidad de procesado 66 y una memoria 68 del manejador, las cuales actúan respectivamente como memorias tanto de programa como de trabajo para la unidad del procesador y el manejador de mensajes. La memoria 46 del procesador comprende además un registro de configuración 70 del acelerador y un registro de configuración de mensajes 72, los cuales almacenan datos de configuración respectivos que permiten que el procesador central 42 configure el funcionamiento del acelerador 44 y la estructura de los mensajes que genera el manejador de mensajes 64.
El acelerador de canalización 44 está dispuesto en por lo menos un PLIC (no mostrado) e comprende canalizaciones de conexiones permanentes 74_{1} a 74_{n}, las cuales procesan datos respectivos sin ejecutar instrucciones de programa. La memoria de microprograma 52 almacena el microprograma de configuración correspondiente al acelerador 44. Si el acelerador 44 se dispone en múltiples PLIC, estos PLIC y sus memorias de microprograma respectivas se pueden disponer en múltiples placas de circuito, es decir, tarjetas hija (no mostradas). El acelerador 44 y las tarjetas hija se describen adicionalmente en las publicaciones US citadas anteriormente nº 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD y 2004/0130927 titulada PIPELINE ACCELERATOR HAVING MULTIPLE PIPELINE UNITS AND RELATED COMPUTING MACHINE AND METHOD. Alternativamente, el acelerador 44 se puede disponer en por lo menos un ASIC, y por lo tanto puede tener unas interconexiones internas que no sean configurables. En esta alternativa, la máquina 40 puede omitir la memoria de microprograma 52. Además, aunque el acelerador 44 se muestra de manera que comprende múltiples canalizaciones 74, el mismo puede comprender solamente una única canalización.
Haciendo referencia todavía a la Fig. 3, a continuación se describirá el funcionamiento de la máquina de vectores entre pares 40 según una de las formas de realización de la invención.
Configuración de la máquina de vectores entre pares
Cuando se activa por primera vez la máquina de vectores entre pares 40, la unidad de procesado 62 configura el manejador de mensajes 64 y el acelerador de canalización 44 (cuando el acelerador sea configurable) de manera que la máquina ejecute el algoritmo deseado. Específicamente, la unidad de procesado 62 ejecuta un programa de aplicación principal que está almacenado en la memoria 66 y que consigue que la unidad de procesado configure el manejador de mensajes 64 y el acelerador 44 tal como se describe a continuación.
Para configurar el manejador de mensajes 64, la unidad de procesado 62 recupera información de formato de mensajes a partir del registro 72 y proporciona esta información de formato al manejador de mensajes, el cual almacena esta información en la memoria 68. Cuando la máquina 40 procesa datos tal como se describirá posteriormente, el manejador de mensajes 64 usa esta información de formato para generar y descifrar mensajes de datos que tienen un formato deseado. En una de las formas de realización, la información de formato se escribe en el Lenguaje de Marcado Extensible (XML), aunque la misma se puede escribir en otro lenguaje o formato de datos. Como la unidad de procesado 62 configura el manejador de mensajes 64 cada vez que se activa la máquina de vectores entre pares 40, el formato del mensaje se puede modificar simplemente modificando la información de formato almacenada en el registro 72. Alternativamente, una biblioteca de configuración de mensajes externa (no mostrada) puede almacenar información correspondiente a múltiples formatos de mensaje, y la aplicación principal se puede diseñar y/o modificar de manera que la unidad de procesado 62 actualice el registro 72 a partir de partes seleccionadas de la biblioteca, y que a continuación descargue la información de formato deseada desde el registro actualizado al manejador de mensajes 64. El formato de los mensajes y la generación y el descifrado de los mismos se describen de forma adicional posteriormente y en la publicación US citada anteriormente nº 2004/0181621 titulada COMPUTING MACHINE HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
De forma similar, para configurar la distribución de las interconexiones del acelerador de canalización 44, la unidad de procesado 62 recupera un microprograma de configuración a partir del registro 70 y descarga este microprograma en la memoria 52 a través del manejador de mensajes 64 y del bus 50. A continuación, el acelerador 44 se configura a sí mismo descargando el microprograma desde la memoria 52 hacia sus registros de configuración de interconexiones (no mostrados). Como la unidad de procesado 62 configura el acelerador 44 cada vez que se activa la máquina de vectores entre pares 40, la distribución de las interconexiones -y por lo tanto el funcionamiento- del acelerador 44 se pueden modificar simplemente modificando el microprograma almacenado en el registro 70. Alternativamente, una biblioteca de configuración del acelerador externa (no mostrada) puede almacenar un microprograma correspondiente a múltiples configuraciones del acelerador 44, y la aplicación principal se puede diseñar y/o modificar de manera que la unidad de procesado 62 actualice el registro 70 a partir de partes seleccionadas de la biblioteca, y que a continuación descargue el microprograma deseado desde el registro actualizado hacia la memoria 52. Además, la biblioteca externa o el registro 70 puede almacenar módulos de microprograma que definan partes y/o funciones diferentes del acelerador 44. De este modo, estos módulos se pueden usar para facilitar el diseño y/o la modificación del acelerador 44. Adicionalmente, la unidad de procesado 62 puede usar estos módulos para modificar el acelerador 44 mientras la máquina 40 está procesando datos. La configuración de las interconexiones del acelerador 44 y los módulos de microprograma se describen adicionalmente en la publicación US citada anteriormente nº 2004/0170070 titulada PROGRAMMABLE CIRCUIT AND RELATED COMPUTING MACHINE AND METHOD.
Además, la unidad de procesado 62 puede "configurar superficialmente" el acelerador de canalización 44 mientras la máquina de vectores entre pares 40 está procesando datos. Es decir, la unidad de procesado 62 puede configurar el funcionamiento del acelerador 44 sin alterar la distribución de interconexiones del acelerador. Dicha configuración superficial se describe de forma adicional posteriormente y en la publicación US nº 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
Procesado de datos con la máquina de vectores entre pares
En general, la máquina de vectores entre pares 40 divide de forma eficaz el procesado de datos brutos entre el procesador central 42 y el acelerador de canalización 44. Por ejemplo, el procesador central 42 puede realizar la mayor parte o la totalidad de las operaciones de toma de decisiones relacionadas con los datos, y el acelerador 44 puede realizar la mayor parte o la totalidad de las operaciones matemáticamente intensivas sobre los datos. No obstante, la máquina 40 puede dividir el procesado de datos según cualquier manera deseada.
Funcionamiento del procesador central
En una de las formas de realización, el procesado central 42 recibe los datos brutos desde y proporciona los datos procesados resultantes a un dispositivo remoto tal como una matriz de elementos de sónar (Fig. 4).
El procesador central 42 en primer lugar recibe los datos brutos desde el dispositivo remoto a través del puerto de entrada 54 ó el bus 50. La máquina de vectores entre pares 40 puede comprender una FIFO (no mostrada) para almacenar temporalmente los datos brutos recibidos.
Seguidamente, la unidad de procesado 62 prepara los datos brutos para ser procesados por el acelerador de canalización 44. Por ejemplo, la unidad 62 puede determinar, por ejemplo, cuáles de los datos brutos se van a enviar al acelerador 44 ó en qué secuencia se van a enviar los datos brutos. Alternativamente, la unidad 62 puede procesar los datos brutos para generar datos intermedios con vistas a enviarlos hacia el acelerador 44. La preparación de los datos brutos se describe adicionalmente en la publicación US citada anteriormente nº 2004/0181621 titulada COMPUTING HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
Mientras se preparan los datos brutos, la unidad de procesado 54 también puede generar una o más órdenes de "configuración superficial" para modificar el funcionamiento del acelerador 44. A diferencia del microprograma que configura la distribución de las interconexiones del acelerador 44 cuando se activa la máquina 40, una orden de configuración superficial controla el funcionamiento del acelerador sin alterar la distribución de sus interconexiones. Por ejemplo, una orden de configuración superficial puede controlar el tamaño de las cadenas de datos (por ejemplo, 32 bits ó 64 bits) que son procesadas por el acelerador 44. La configuración superficial del acelerador 44 se describe adicionalmente en la publicación US citada anteriormente nº 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
A continuación la unidad de procesado 62 carga los datos preparados y/o la(s) órden(es) de configuración superficial en una posición correspondiente de la memoria de interfaz 48, la cual actúa como una memoria intermedia FIFO entre la unidad 62 y el acelerador 44.
Seguidamente, el manejador de mensajes 64 recupera los datos preparados y/o la(s) órden(es) de software a partir de la memoria de interfaz 48 y genera objetos mensaje que comprenden los datos y/o la(s) órden(es) e información relacionada. Típicamente, el acelerador 44 necesita cuatro identificadores que describen los datos/orden(es) y la información relacionada (en conjunto denominada "información"): a) el destino deseado de la información (por ejemplo, la canalización 74_{1}), b) la prioridad (por ejemplo, si el acelerador procesa estos datos antes o después de los datos recibidos previamente), c) la longitud o el final del objeto mensaje, y d) la instancia exclusiva de los datos (por ejemplo, la señal del sensor número nueve de una matriz de elementos de mil sensores). Para facilitar esta determinación, el manejador de mensajes 64 genera objetos mensaje que presentan un formato predeterminado tal como se ha descrito anteriormente. Además de los datos preparados/la(s) órden(es) de configuración superficial, un objeto mensaje comprende típicamente un encabezamiento que comprende los cuatro identificadores antes descritos y que también puede comprender identificadores que describan el tipo de información que comprende el objeto (por ejemplo, datos, orden), y el algoritmo mediante el cual se van a procesar los datos. Este último identificador resulta útil cuando la canalización de destino 74 implementa múltiples algoritmos. El manejador 64 puede recuperar la información de los encabezamientos a partir de la memoria de interfaz 48, o puede generar el encabezamiento basándose en la posición de la memoria de interfaz a partir de la cual recupera los datos preparados o la(s) orden(es). Al descifrar el encabezamiento del mensaje, el encaminador 61 y/o el acelerador 44 puede dirigir la información que se encuentra dentro del objeto mensaje al destino deseado, y conseguir que el destino procese la información en una secuencia deseada.
Existen formas de realización alternativas para generar los objetos mensaje. Por ejemplo, aunque cada objeto mensaje se describe de manera que comprende bien datos o bien una orden de configuración superficial, un objeto mensaje individual puede comprender tanto datos como una o más órdenes. Además, aunque el manejador de mensajes 64 se describe de manera que recibe los datos y las órdenes a partir de la memoria de interfaz 48, el mismo puede recibir los datos y las órdenes directamente desde la unidad de procesado 54.
La generación de objetos mensaje se describe adicionalmente en la publicación US anteriormente citada nº 2004/
0181621 titulada COMPUTING MACHINE HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
Acelerador de canalización
El acelerador de canalización 44 recibe y descifra los objetos mensaje del manejador de mensajes 64 y dirige eficazmente los datos y/u órdenes que se encuentran dentro de los objetos hacia el(los) destino(s) deseado(s). Esta técnica resulta particularmente útil cuando el número de algoritmos implementados por la unidad de procesado 62 y las canalizaciones 74 es relativamente pequeño, y por lo tanto se puede omitir el encaminador 61. Alternativamente, cuando el número de algoritmos implementados por la unidad de procesado 62 ó las canalizaciones de números 74 sea relativamente elevado, el encaminador 61 recibe y descifra los objetos mensaje del manejador de mensajes 64 y dirige eficazmente los datos y/u órdenes que se encuentran dentro de los objetos hacia el(los) destino(s) deseado(s) dentro del acelerador 44.
En una de las formas de realización en la que hay un número reducido de algoritmos de las unidades de procesado y canalizaciones 74, cada canalización recibe simultáneamente un objeto mensaje y analiza el encabezamiento para determinar si el mismo es o no un destinatario deseado del mensaje. Si el objeto mensaje está destinado a una canalización específica 74, en ese caso dicha canalización descifra el mensaje y procesa los datos/la(s) orden(es) recuperados. No obstante, si el objeto mensaje no está destinado a una canalización específica 74, en ese caso dicha canalización ignora el objeto mensaje. Por ejemplo, supóngase que un objeto mensaje comprende datos para ser procesados por la canalización 74_{1}. Por lo tanto la canalización 74_{1} analiza el encabezamiento del mensaje, determina que es un destino deseado para los datos, recupera los datos del mensaje, y procesa los datos recuperados. A la inversa, cada una de las canalizaciones 74_{2} a 74_{n} analiza el encabezamiento del mensaje, determina que no es un destino deseado para los datos, y por lo tanto no recupera ni procesa los datos. Si los datos que se encuentran dentro del objeto mensaje están destinados a múltiples canalizaciones 74, en ese caso el manejador de mensajes 64 genera y envía una secuencia de objetos mensaje respectivos que comprenden los mismos datos, un mensaje para cada canalización de destino. Alternativamente, el manejador de mensajes 64 puede enviar simultáneamente los datos a todas las canalizaciones de destino 74 mediante el envío de un único objeto mensaje que presente un encabezamiento que identifique la totalidad de las canalizaciones de destino. La recuperación de datos y de órdenes de configuración superficial a partir de objetos mensaje se describe adicionalmente en la publicación US citada anteriormente nº 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
En otra de las formas de realización en la que existe un número elevado de procesos de las unidades de procesado o canalizaciones 74, cada canalización recibe objetos mensaje del encaminador 61. Aunque el encaminador 61 idealmente debería enviar objetos mensaje únicamente hacia la canalización objetivo 74, la canalización objetivo sigue analizando el encabezamiento para determinar si ella es o no un destinatario deseado del mensaje. Dicho análisis identifica errores potenciales del encaminamiento del mensaje, es decir, excepciones. Si el objeto mensaje está destinado a una canalización objetivo 74, en ese caso dicha canalización descifra el mensaje y procesa los datos/la(s) orden(es) recuperados. No obstante, si el objeto mensaje no está destinado a la canalización objetivo 74, en ese caso dicha canalización ignora el procesado correspondiente a ese objeto mensaje, y además puede emitir un mensaje nuevo hacia el procesador central 42 indicando que se ha producido una excepción del encaminamiento. El tratamiento de excepciones del encaminamiento se describe en la publicación US citada anteriormente nº 2004/0181621 titulada COMPUTING MACHINE HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD.
\newpage
Seguidamente, el acelerador de canalización 44 procesa los datos y/u órdenes entrantes recuperados a partir de los objetos mensaje.
Cuando se trata de datos, la canalización o canalizaciones de destino 74 realizan una operación u operaciones respectivas sobre los mismos. Tal como se ha descrito en combinación con la Fig. 2, como las canalizaciones 74 no ejecutan instrucciones de programa, las mismas normalmente pueden procesar los datos a una velocidad que es sustancialmente igual a la frecuencia del reloj de canalización.
En una primera forma de realización, una única canalización 74 genera datos resultantes mediante el procesado de los datos entrantes.
En una segunda forma de realización, múltiples canalizaciones 74 generan datos resultantes procesando en serie los datos entrantes. Por ejemplo, la canalización 74 puede generar unos primeros datos intermedios realizando una primera operación sobre los datos entrantes. Seguidamente, la canalización 74_{2} puede generar unos segundos datos intermedios realizando una segunda operación sobre los primeros datos intermedios, y así sucesivamente, hasta que la canalización final 74 de la cadena genere los datos que sean el resultado.
En una tercera forma de realización, múltiples canalizaciones 74 generan los datos resultantes procesando los datos entrantes en paralelo. Por ejemplo, la canalización 74_{1} puede generar un primer conjunto de datos resultantes realizando una primera operación sobre un primer conjunto de los datos entrantes. Al mismo tiempo, la canalización 74_{2} puede generar un segundo conjunto de datos resultantes realizando una segunda operación sobre un segundo conjunto de los datos entrantes, y así sucesivamente.
Alternativamente, las canalizaciones 74 pueden generar datos resultantes a partir de los datos entrantes según cualquier combinación de las anteriores tres formas de realización. Por ejemplo, la canalización 74_{1} puede generar un primer conjunto de datos resultantes realizando una primera operación sobre un primer conjunto de los datos entrantes. Al mismo tiempo, las canalizaciones 74_{2} y 74_{n} pueden generar un segundo conjunto de datos resultantes realizando en serie una segunda y tercera operaciones sobre un segundo conjunto de los datos entrantes.
En cualquiera de las formas de realización y alternativas anteriores, una única canalización 74 puede realizar múltiples operaciones. Por ejemplo, la canalización 74_{1} puede recibir datos, generar unos primeros datos intermedios realizando una primera operación sobre los datos recibidos, almacenar temporalmente los primeros datos intermedios, generar unos segundos datos intermedios realizando una segunda operación sobre los primeros datos intermedios, y así sucesivamente, hasta que genere los datos del resultado. Se dispone de una serie de técnicas para conseguir que la canalización 74_{1} pase de realizar la primera operación a realizar la segunda operación, y así sucesivamente. Dichas técnicas se describen en la solicitud de patente US citada anteriormente nº de serie 10/683.929 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD (expediente nº 1934-12-3).
Para una orden de configuración superficial, el acelerador 44 fija los bits en el(los) registro(s) de configuración superficial correspondiente(s) (no mostrados) según indique el encabezamiento del mensaje. Tal como se ha descrito anteriormente, la fijación de estos bits típicamente cambia el funcionamiento del acelerador 44 sin cambiar la distribución de sus interconexiones. Esta situación es similar a la fijación de bits en un registro de control de un procesador para, por ejemplo, fijar un pin externo como pin de entrada o pin de salida o seleccionar un modo de direccionamiento. Además, una orden de configuración superficial puede dividir un registro o tabla (una matriz de registros) para contener datos. Otra orden de configuración superficial o una operación realizada por el acelerador 44 puede cargar datos en el registro o tabla configurado de forma superficial. La configuración superficial del acelerador 44 se describe adicionalmente en la publicación US citada anteriormente nº 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPRO-
VED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD (expediente nº 1934-13-3).
Seguidamente, el acelerador de canalización 44 proporciona los datos resultantes al procesador central 42 a través del encaminador 61 (o directamente en caso de que se omita el encaminador) para su posterior procesado.
Alternativamente, el acelerador 44 proporciona los datos resultantes al destino remoto (Fig. 4) bien directamente a través del puerto de salida 94 (Fig. 4), o bien indirectamente a través del encaminador 61 (en caso de que el mismo esté presente), el bus 50, el procesador central 42, y el puerto de salida 58. Por consiguiente, en esta forma de realización alternativa, los datos resultantes generados por el acelerador 44 son los datos procesados finales.
Cuando el acelerador 44 proporciona los datos resultantes al procesador central 42 -bien para su posterior procesado o bien para trasladarlos al dispositivo remoto (Fig. 4)- envía estos datos en un objeto mensaje que tiene el mismo formato que los objetos mensaje generados por el manejador de mensajes 64. Tal como los objetos mensaje generados por el manejador de mensajes 64, los objetos mensaje generados por el acelerador 44 comprenden encabezamientos que especifican, por ejemplo, el destino y la prioridad de los datos resultantes. Por ejemplo, el encabezamiento puede ordenar al manejador de mensajes 64 que traslade los datos resultantes hacia el dispositivo remoto a través del puerto 58, o puede especificar qué parte del programa ejecutado por la unidad de procesado 62 va a controlar el procesado de los datos. Mediante el uso del mismo formato de mensaje, el acelerador 44 presenta la misma capa de interfaz que el procesador central 42. Esta situación facilita el diseño y la modificación de la máquina de vectores entre pares 40, particularmente en el caso de que la capa de interfaz sea una norma industrial.
La estructura y el funcionamiento del acelerador de canalización 44 y de las canalizaciones 66 se describen adicionalmente en la publicación US citada anteriormente nº 2004/0136241 titulada PIPELINE ACCELERATOR FOR IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD (expediente nº 1934-13-3).
Recepción y procesado a partir del acelerador de canalización con el procesador central
Cuando el manejador de mensajes 64 recibe un objeto mensaje proveniente del acelerador 44, el mismo en primer lugar descifra el encabezamiento del mensaje y dirige los datos recuperados hacia el destino indicado.
Si el encabezamiento indica que los datos se van a trasladar hacia el dispositivo remoto (Fig. 4) a través del puerto 58, en ese caso el manejador de mensajes 64 puede proporcionar los datos directamente al puerto 58, o a una memoria intermedia FIFO (no mostrada) del puerto formada en la memoria de interfaz 48 ó en otra memoria y a continuación desde la memoria intermedia hacia el puerto 58. Se contemplan también múltiples puertos 58 y múltiples dispositivos remotos respectivos.
No obstante, si el encabezamiento indica que la unidad de procesado 62 va a procesar adicionalmente los datos, en ese caso el manejador de mensajes 62 almacena los datos en una posición de la memoria de interfaz 48 que se corresponde con la parte del programa de la unidad de procesado que va a controlar el procesado de los datos. Más específicamente, en este momento el mismo encabezamiento indica indirectamente qué parte(s) del programa ejecutado por la unidad de procesado 54 va(n) a controlar el procesado de los datos. Por consiguiente, el manejador de mensajes 64 almacena los datos en la posición (por ejemplo en una FIFO) de la memoria de interfaz 48 correspondiente a esta parte del programa.
Tal como se ha descrito anteriormente, la memoria de interfaz 48 actúa como una memoria intermedia entre el acelerador 44 y la unidad de procesado 62, y de este modo permite la transferencia de datos cuando la unidad de procesado no está sincronizada con el acelerador. Por ejemplo, esta falta de sincronización se puede producir cuando el acelerador 44 procesa datos más rápidamente que la unidad de procesado 62. Al usar la memoria de interfaz 48, el acelerador 44 no se ralentiza por la respuesta más lenta de la unidad de procesado 62. Esto evita además las penalizaciones de ineficacia asociadas al tiempo de respuesta indeterminado de la unidad de procesado a las interrupciones de tratamiento. El tratamiento indeterminado, por parte de la unidad de procesado 62, de los mensajes de salida del acelerador 44 complicaría de forma innecesaria el diseño del acelerador obligando al diseñador a proporcionar: a) bien unos medios de almacenamiento y tratamiento para los mensajes de salida de los que se ha realizado una copia de seguridad, ó b) bien unos controles de reposo en toda la canalización para evitar la sobrescritura de los mensajes de los que se ha realizado una copia de seguridad. Por lo tanto, el uso de la memoria de interfaz 48, la cual actúa como una memoria intermedia entre el acelerador 44 y la unidad de procesado 62, tiene varias consecuencias deseables a) los aceleradores resultan más sencillos de diseñar, b) los aceleradores necesitan una infraestructura menor y pueden contener aplicaciones PLIC mayores, c) los aceleradores se pueden racionalizar para funcionar más rápidamente ya que los datos de salida no quedan "bloqueados" por un procesador más lento.
A continuación, para datos que han sido almacenados por el manejador de mensajes 64 en la memoria de interfaz 48, la unidad de procesado 62 recupera los datos de la memoria de interfaz. La unidad de procesado 62 puede interrogar a la memoria de interfaz 48 para determinar cuándo han llegado datos nuevos a una posición específica, o el manejador de mensajes 64 puede generar una interrupción u otra señal que notifique a la unidad de procesado la llegada de los datos. En una de las formas de realización, antes de que la unidad de procesado 62 recupere datos, el manejador de mensajes 64 genera un objeto mensaje que comprende los datos. Más específicamente, el programa ejecutado por la unidad de procesado 62 se puede diseñar para recibir datos en objetos mensaje. De este modo, el manejador de mensajes 64 podría almacenar un objeto mensaje en la memoria de interfaz 48 en lugar de almacenar únicamente los datos. No obstante, típicamente un objeto mensaje ocupa un espacio de memoria significativamente mayor que los datos que contiene. Por consiguiente, para ahorrar memoria, el manejador de mensajes 64 descifra un objeto mensaje del acelerador de canalización 44, almacena los datos en la memoria 48, y a continuación regenera de forma efectiva el objeto mensaje cuando la unidad de procesado 62 está preparada para recibir los datos. A continuación, la unidad de procesado 62 descifra el objeto mensaje y procesa los datos bajo el control de la parte de programa identificada en el encabezamiento del mensaje.
Seguidamente, la unidad procesadora 62 procesa los datos recuperados bajo el control de la parte de destino del programa, genera datos procesados, y almacena los datos procesados en una posición de la memoria de interfaz 48 que se corresponde con el destino deseado de los datos procesados.
A continuación, el manejador de mensajes 64 recupera los datos procesados y los proporciona al destino indicado. Para recuperar los datos procesados, el manejador de mensajes 64 puede interrogar a la memoria 48 para determinar cuándo han llegado los datos, o la unidad de procesado 62 puede notificar al manejador de mensajes la llegada de los datos con una interrupción u otra señal. Para proporcionar los datos procesados a su destino deseado, el manejador de mensajes 64 puede generar un objeto mensaje que comprende los datos, y enviar el objeto mensaje de vuelta al acelerador 44 para un procesado posterior de los datos. Alternativamente, el manejador 56 puede enviar los datos al puerto 58, o a otra posición de la memoria 48 para su posterior procesado por parte de la unidad de procesado
62.
La recepción y el procesado de datos, por parte del procesado central, provenientes del acelerador de canalización 44 se describe adicionalmente en la publicación US anteriormente citada nº 2004/0181621 titulada COMPUTING MACHINE HAVING IMPROVED COMPUTING ARCHITECTURE AND RELATED SYSTEM AND METHOD (expediente nº 1934-12-3).
Técnicas alternativas de procesado de datos usando la máquina de vectores entre pares
Haciendo referencia todavía a la Fig. 3, existen alternativas a las formas de realización antes descritas en las cuales el procesador central 42 recibe y procesa datos, y a continuación envía los datos al acelerador de canalización 44 para su posterior procesado.
En una de las alternativas, el procesador central 42 realiza todo el procesado sobre por lo menos parte de los datos, y de este modo envía estos datos al acelerador de canalización 44 para su posterior procesado.
En otra de las alternativas, el acelerador de canalización 44 recibe los datos brutos directamente del dispositivo remoto (Fig. 4) a través del puerto 92 (Fig. 4) y procesa los datos brutos.
A continuación el acelerador 44 puede enviar los datos procesados directamente de vuelta al dispositivo remoto a través del puerto 94, o puede enviar los datos procesados al procesador central 42 para su posterior procesado. En este último caso, el acelerador 44 puede encapsular los datos en objetos mensaje tal como se ha descrito anteriormente.
Todavía en otra de las alternativas, el acelerador 44 puede comprender, además de las canalizaciones de conexiones permanentes 74, uno o más procesadores ejecutadores de instrucciones, tales como un Procesador Digital de la Señal (DSP), para complementar las capacidades de cálculo intensivo de las canalizaciones.
Ejemplo de implementación de la máquina de vectores entre pares
Haciendo referencia todavía a la Fig. 3, en una de las formas de realización, el bus de canalización 50 es un bus normalizado PCI 133 MHz, las canalizaciones 74 están comprendidas en una o más tarjetas PMC normalizadas, y la memoria 52 es una de las memorias flash que están ubicadas cada una de ellas en una tarjeta PMC respectiva.
Ejemplo de aplicación de la máquina de vectores entre pares
La Fig. 4 es un diagrama de bloques de un sistema de sónar 80 que incorpora la máquina de vectores entre pares 40 de la Fig. 3 según una de las formas de realización de la invención. Además de la máquina 40, el sistema 80 comprende una matriz 82 de elementos transductores 84_{1} a 84_{n} para recibir y transmitir señales de sónar, conversores digital-a-analógico (conversores DAC) 86_{1} a 86_{n}, conversores analógico-a-digital (conversores ADC) 88_{1} a 88_{n}, y una interfaz de datos 90. Como normalmente la generación y el procesado de señales de sónar son funciones matemáticamente intensivas, la máquina 40 normalmente puede realizar estas funciones de forma más rápida y eficaz que una máquina informática convencional -tal como la máquina multiprocesador 10 (Fig. 1)- para una frecuencia de reloj determinada tal como se ha descrito anteriormente en combinación con la Fig. 3.
Durante un modo de funcionamiento de transmisión, la matriz 82 transmite una señal de sónar en un medio tal como agua (no mostrado). En primer lugar, la máquina de vectores entre pares 40 convierte datos de señales brutos recibidos en el puerto 92 en n señales digitales, una por cada uno de los elementos de matriz 84. Las magnitudes y fases de estas señales dictaminan el patrón del haz de transmisión de la matriz 82. Seguidamente, la máquina 40 proporciona estas señales digitales a la interfaz 90, la cual proporciona estas señales a los DAC respectivos 86 para su conversión en señales analógicas respectivas. Por ejemplo, la interfaz 90 puede actuar como una memoria intermedia que recibe en serie las señales digitales de la máquina 40, almacena estas señales hasta que recibe y almacena temporalmente las n en su totalidad, y a continuación proporciona simultáneamente estas muestras de señales secuenciales a los DAC respectivos 86. A continuación, los elementos transductores 84 convierten estas señales analógicas en ondas sonoras respectivas, las cuales interfieren mutuamente para formar los haces de una señal de sónar.
Durante un modo de funcionamiento de recepción, la matriz 82 recibe una señal de sónar proveniente del medio (no mostrado). La señal de sónar recibida está compuesta por la parte de la señal de sónar transmitida que es reflejada por objetos remotos y la energía sonora emitida por el entorno y los objetos remotos. En primer lugar, los elementos transductores 84 reciben ondas sonoras respectivas que componen la señal de sónar, convierten estas ondas sonoras en n señales analógicas, y proporcionan estas señales analógicas a los ADC 88 para su conversión en n señales digitales respectivas. Seguidamente, la interfaz 90 proporciona estas señales digitales a la máquina de vectores entre pares 40 para su procesado. Por ejemplo, la interfaz 90 puede actuar como una memoria intermedia que recibe las señales digitales de los ADC 88 en paralelo y que a continuación proporciona en serie estas señales a la máquina 40. El procesado que realiza la máquina 40 sobre la señal digital dictamina el patrón de haz de recepción de la matriz 82. A las señales digitales se les aplican etapas de procesado adicionales tales como un filtrado, un desplazamiento de banda, una transformación espectral (por ejemplo, la Transformada de Fourier). A continuación la máquina 40 proporciona los datos de las señales procesadas a través del puerto 94 a otro aparato tal como un dispositivo de visualización para ver la ubicación de los objetos.
\newpage
La máquina de vectores entre pares 40 también puede incorporar otros sistemas que no sean de sónar, aunque la misma se haya descrito conjuntamente con el sistema de sónar 80.
La descripción anterior se presenta para permitir que un experto en la materia materialice la invención y haga uso de la misma. Para aquellos expertos en la materia se pondrán claramente de manifiesto varias modificaciones de las formas de realización, y los principios genéricos del presente documento se pueden aplicar a otras formas de realización y aplicaciones. De este modo, la presente invención no está limitada a las formas de realización que acaban de ser descritas, sino que se le debe conceder el alcance más amplio de acuerdo con los principios y características dados a conocer en el presente documento.

Claims (9)

1. Máquina de transferencia de vectores entre entidades pares (40), que comprende:
un procesador central (42) que se puede hacer funcionar para ejecutar un programa, y, en respuesta al programa, se puede hacer funcionar para generar unos primeros datos principales;
un acelerador de canalización (44) que comprende canalizaciones de conexiones permanentes y que está acoplado al procesador central (42) y que se puede hacer funcionar para recibir los primeros datos principales y para generar unos primeros datos de canalización a partir de los primeros datos principales, presentando el acelerador de canalización unas interconexiones internas configurables y una memoria de microprograma (52) que se puede hacer funcionar para almacenar un microprograma de configuración para configurar las interconexiones internas,
caracterizada porque
la máquina de vectores entre pares (40) comprende además un registro de configuración (70) del acelerador acoplado al procesador central (42) y que se puede hacer funcionar para almacenar información de configuración del acelerador de canalización que es independiente con respecto al programa, y
el procesador central (42) se puede hacer funcionar para recibir la información de configuración a partir del registro (70) y para configurar el acelerador de canalización (44) con vistas a generar los primeros datos de canalización mediante el suministro de la información de configuración al acelerador de canalización antes de ejecutar el programa descargando la información de configuración en la memoria del microprograma, y porque
se proporciona un único bus (50) para la comunicación del procesador central con el acelerador de canalización y el procesador central y el acelerador de canalización se comunican a través de mensajes que comprenden los primeros datos principales y un encabezamiento que contiene la canalización de conexiones permanentes deseada de destino de los datos.
2. Máquina de vectores entre pares (40) según la reivindicación 1, en la que el procesador central (40) se puede hacer funcionar además para:
recibir unos segundos datos; y
generar los primeros datos principales a partir de los segundos datos.
3. Máquina de vectores entre pares (40) según cualquiera de las reivindicaciones anteriores, en la que el procesador central (42) se puede hacer funcionar además para:
recibir los primeros datos de canalización del acelerador de canalización; y
procesar los primeros datos de canalización.
4. Máquina de vectores entre pares (40) según cualquiera de las reivindicaciones anteriores, que comprende además:
una memoria de interfaz (48) acoplada al procesador central (42) y al acelerador de canalización (44) y que presenta una primera sección de memoria;
en la que el procesador central (42) se puede hacer funcionar para,
almacenar los primeros datos principales en la primera sección de memoria, y
proporcionar los primeros datos principales de la primera sección de memoria al acelerador de canalización (44).
5. Máquina de vectores entre pares (40) según cualquiera de las reivindicaciones anteriores, que comprende además:
una memoria de interfaz (48) acoplada al procesador central (42) y al acelerador de canalización (44) y que presenta una primera y una segunda secciones de memoria;
en la que el procesador central (42) se puede hacer funcionar para
almacenar los primeros datos principales en la primera sección de memoria,
proporcionar los primeros datos principales desde la primera sección de memoria al acelerador de canalización (44),
recibir los primeros datos de canalización del acelerador de canalización (44),
almacenar los primeros datos de canalización en la segunda sección de memoria,
recuperar los primeros datos de canalización de la segunda sección de memoria hacia el procesador central (42), y
procesar los primeros datos de canalización.
6. Máquina de vectores entre pares (40) según cualquiera de las reivindicaciones anteriores, en la que:
el acelerador de canalización (44) comprende un circuito integrado de lógica programable; y
la información de configuración comprende un microprograma que se puede hacer funcionar para configurar el circuito integrado de lógica programable.
7. Método, que comprende:
generar unos primeros datos principales ejecutando un programa con un procesador central (42); y
generar unos primeros datos de canalización a partir de los primeros datos principales con un acelerador de canalización (44) que comprende canalizaciones de conexiones permanentes y que está acoplado al procesador central
caracterizado porque
se recibe desde un registro (70) con el procesador central (42) información de configuración del acelerador de canalización que es independiente con respecto al programa, y
se configura el acelerador de canalización (44) para generar los primeros datos de canalización mediante el suministro de la información de configuración al acelerador de canalización con el procesador central (42) antes de ejecutar el programa, en el que dicho suministro de la información de configuración comprende la descarga de la información de configuración en una memoria de microprograma que se puede hacer funcionar para almacenar un microprograma de configuración con vistas a configurar interconexiones internas del acelerador de canalización, y
en el que dicha generación de los primeros datos de canalización comprende el envío, hacia el acelerador de canalización, de un mensaje que comprende los primeros datos principales y un encabezamiento que contiene la canalización de conexiones permanentes de destino deseada.
8. Método según la reivindicación 7, en el que la generación de los primeros datos principales comprende la generación de los primeros datos principales a partir de los segundos datos de canalización generados por el acelerador de canalización (44).
9. Método según las reivindicaciones 7 u 8, que comprende además la generación de los segundos datos principales a partir de los primeros datos de canalización ejecutando el programa con el procesador central (42).
ES03781552T 2002-10-31 2003-10-31 Coprocesador canalizado. Expired - Lifetime ES2300633T3 (es)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US42250302P 2002-10-31 2002-10-31
US422503P 2002-10-31
US10/684,102 US7418574B2 (en) 2002-10-31 2003-10-09 Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction
US684102 2003-10-09
US683929 2003-10-09
US683932 2003-10-09
US10/684,053 US7987341B2 (en) 2002-10-31 2003-10-09 Computing machine using software objects for transferring data that includes no destination information
US10/684,057 US7373432B2 (en) 2002-10-31 2003-10-09 Programmable circuit and related computing machine and method
US684057 2003-10-09
US10/683,932 US7386704B2 (en) 2002-10-31 2003-10-09 Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US684053 2003-10-09
US10/683,929 US20040136241A1 (en) 2002-10-31 2003-10-09 Pipeline accelerator for improved computing architecture and related system and method
PCT/US2003/034557 WO2004042560A2 (en) 2002-10-31 2003-10-31 Pipeline coprocessor

Publications (1)

Publication Number Publication Date
ES2300633T3 true ES2300633T3 (es) 2008-06-16

Family

ID=34280226

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03781552T Expired - Lifetime ES2300633T3 (es) 2002-10-31 2003-10-31 Coprocesador canalizado.

Country Status (8)

Country Link
EP (5) EP1570344B1 (es)
JP (9) JP2006518057A (es)
KR (5) KR101062214B1 (es)
AU (5) AU2003287319B2 (es)
CA (5) CA2503613C (es)
DE (1) DE60318105T2 (es)
ES (1) ES2300633T3 (es)
WO (4) WO2004042574A2 (es)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095508B2 (en) 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US7418574B2 (en) 2002-10-31 2008-08-26 Lockheed Martin Corporation Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction
CA2503613C (en) * 2002-10-31 2011-10-18 Lockheed Martin Corporation Pipeline accelerator having multiple pipeline units and related computing machine and method
EP2511787B1 (en) 2003-05-23 2017-09-20 IP Reservoir, LLC Data decompression and search using FPGA devices
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US7602785B2 (en) 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
WO2006039710A2 (en) 2004-10-01 2006-04-13 Lockheed Martin Corporation Computer-based tool and method for designing an electronic circuit and related system and library for same
US7917299B2 (en) 2005-03-03 2011-03-29 Washington University Method and apparatus for performing similarity searching on a data stream with respect to a query string
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
WO2007011203A1 (en) * 2005-07-22 2007-01-25 Stichting Astron Scalable control interface for large-scale signal processing systems.
US7702629B2 (en) 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
JP2007164472A (ja) * 2005-12-14 2007-06-28 Sonac Kk 待ち合わせ機構を有する演算装置
US7954114B2 (en) * 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US7636703B2 (en) 2006-05-02 2009-12-22 Exegy Incorporated Method and apparatus for approximate pattern matching
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
JP5138040B2 (ja) * 2008-07-30 2013-02-06 パナソニック株式会社 集積回路
JP5871619B2 (ja) 2008-12-15 2016-03-01 アイ・ピー・リザブワー・エル・エル・シー 金融市場深度データの高速処理のための方法および装置
US8478965B2 (en) 2009-10-30 2013-07-02 International Business Machines Corporation Cascaded accelerator functions
EP2649580B1 (en) 2010-12-09 2025-02-26 Exegy Incorporated Method and apparatus for managing orders in financial markets
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
FR2996657B1 (fr) * 2012-10-09 2016-01-22 Sagem Defense Securite Organe electrique generique configurable
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
EP2912579B1 (en) 2012-10-23 2020-08-19 IP Reservoir, LLC Method and apparatus for accelerated format translation of data in a delimited data format
US10133802B2 (en) 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
KR101753866B1 (ko) 2013-05-10 2017-07-04 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 메모리 액세스의 가속
WO2015164639A1 (en) 2014-04-23 2015-10-29 Ip Reservoir, Llc Method and apparatus for accelerated data translation
US9846426B2 (en) * 2014-07-28 2017-12-19 Computational Systems, Inc. Parallel digital signal processing of machine vibration data
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
JP2017135698A (ja) * 2015-12-29 2017-08-03 株式会社半導体エネルギー研究所 半導体装置、コンピュータ及び電子機器
DE112016006516T5 (de) * 2016-02-29 2018-11-15 Olympus Corporation Bildverarbeitungsvorrichtung
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
JP6781089B2 (ja) * 2017-03-28 2020-11-04 日立オートモティブシステムズ株式会社 電子制御装置、電子制御システム、電子制御装置の制御方法
GB2570729B (en) * 2018-02-06 2022-04-06 Xmos Ltd Processing system
IT202100020033A1 (it) * 2021-07-27 2023-01-27 Carmelo Ferrante Sistema di interfacciamento tra due dispositivi a controllo elettronico e unità a controllo elettronico comprendente tale sistema di interfacciamento

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703475A (en) * 1985-12-04 1987-10-27 American Telephone And Telegraph Company At&T Bell Laboratories Data communication method and apparatus using multiple physical data links
US4811214A (en) * 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
JP2522048B2 (ja) * 1989-05-15 1996-08-07 三菱電機株式会社 マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP2858602B2 (ja) * 1991-09-20 1999-02-17 三菱重工業株式会社 パイプライン演算回路
US5283883A (en) * 1991-10-17 1994-02-01 Sun Microsystems, Inc. Method and direct memory access controller for asynchronously reading/writing data from/to a memory with improved throughput
US5268962A (en) * 1992-07-21 1993-12-07 Digital Equipment Corporation Computer network with modified host-to-host encryption keys
US5440687A (en) * 1993-01-29 1995-08-08 International Business Machines Corporation Communication protocol for handling arbitrarily varying data strides in a distributed processing environment
JPH06282432A (ja) * 1993-03-26 1994-10-07 Olympus Optical Co Ltd 演算処理装置
US5583964A (en) * 1994-05-02 1996-12-10 Motorola, Inc. Computer utilizing neural network and method of using same
US5568614A (en) * 1994-07-29 1996-10-22 International Business Machines Corporation Data streaming between peer subsystems of a computer system
US5692183A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5748912A (en) * 1995-06-13 1998-05-05 Advanced Micro Devices, Inc. User-removable central processing unit card for an electrical device
US5752071A (en) * 1995-07-17 1998-05-12 Intel Corporation Function coprocessor
JP3156562B2 (ja) * 1995-10-19 2001-04-16 株式会社デンソー 車両用通信装置及び走行車両監視システム
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
JPH1084339A (ja) * 1996-09-06 1998-03-31 Nippon Telegr & Teleph Corp <Ntt> ストリーム暗号による通信方法、ならびに通信システム
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
JPH10304184A (ja) * 1997-05-02 1998-11-13 Fuji Xerox Co Ltd 画像処理装置および画像処理方法
DE19724072C2 (de) * 1997-06-07 1999-04-01 Deutsche Telekom Ag Vorrichtung zur Durchführung eines Blockchiffrierverfahrens
JP3489608B2 (ja) * 1997-06-20 2004-01-26 富士ゼロックス株式会社 プログラマブル論理回路システムおよびプログラマブル論理回路装置の再構成方法
US6216191B1 (en) * 1997-10-15 2001-04-10 Lucent Technologies Inc. Field programmable gate array having a dedicated processor interface
JPH11120156A (ja) * 1997-10-17 1999-04-30 Nec Corp マルチプロセッサシステムにおけるデータ通信方式
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US6049222A (en) * 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
EP0945788B1 (en) * 1998-02-04 2004-08-04 Texas Instruments Inc. Data processing system with digital signal processor core and co-processor and data processing method
JPH11271404A (ja) * 1998-03-23 1999-10-08 Nippon Telegr & Teleph Corp <Ntt> プログラムによって再構成可能な回路における自己試験方法および自己試験装置
US6282627B1 (en) * 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
JP2000090237A (ja) * 1998-09-10 2000-03-31 Fuji Xerox Co Ltd 描画処理装置
SE9902373D0 (sv) * 1998-11-16 1999-06-22 Ericsson Telefon Ab L M A processing system and method
JP2000278116A (ja) * 1999-03-19 2000-10-06 Matsushita Electric Ind Co Ltd Fpga用コンフィギュレーションインターフェース
JP2000295613A (ja) * 1999-04-09 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 再構成可能なハードウェアを用いた画像符号化方法,画像符号化装置および画像符号化のためのプログラム記録媒体
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
US6308311B1 (en) * 1999-05-14 2001-10-23 Xilinx, Inc. Method for reconfiguring a field programmable gate array from a host
EP1061438A1 (en) * 1999-06-15 2000-12-20 Hewlett-Packard Company Computer architecture containing processor and coprocessor
US20030014627A1 (en) * 1999-07-08 2003-01-16 Broadcom Corporation Distributed processing in a cryptography acceleration chip
JP3442320B2 (ja) * 1999-08-11 2003-09-02 日本電信電話株式会社 通信方式切替無線端末及び通信方式切替方法
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US6326806B1 (en) * 2000-03-29 2001-12-04 Xilinx, Inc. FPGA-based communications access point and system for reconfiguration
JP3832557B2 (ja) * 2000-05-02 2006-10-11 富士ゼロックス株式会社 プログラマブル論理回路への回路の再構成方法および情報処理システム
US6982976B2 (en) * 2000-08-11 2006-01-03 Texas Instruments Incorporated Datapipe routing bridge
US7196710B1 (en) * 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
JP2002207078A (ja) * 2001-01-10 2002-07-26 Ysd:Kk レーダ信号処理装置
WO2002057921A1 (fr) * 2001-01-19 2002-07-25 Hitachi,Ltd Dispositif a circuit electronique
US6657632B2 (en) * 2001-01-24 2003-12-02 Hewlett-Packard Development Company, L.P. Unified memory distributed across multiple nodes in a computer graphics system
JP2002269063A (ja) * 2001-03-07 2002-09-20 Toshiba Corp メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム
JP3873639B2 (ja) * 2001-03-12 2007-01-24 株式会社日立製作所 ネットワーク接続装置
JP2002281079A (ja) * 2001-03-21 2002-09-27 Victor Co Of Japan Ltd 画像データ伝送装置
CA2503613C (en) * 2002-10-31 2011-10-18 Lockheed Martin Corporation Pipeline accelerator having multiple pipeline units and related computing machine and method
US7373528B2 (en) * 2004-11-24 2008-05-13 Cisco Technology, Inc. Increased power for power over Ethernet applications

Also Published As

Publication number Publication date
AU2003287321B2 (en) 2010-11-18
CA2503622A1 (en) 2004-05-21
KR100996917B1 (ko) 2010-11-29
WO2004042561A3 (en) 2006-03-02
CA2503613A1 (en) 2004-05-21
CA2503620A1 (en) 2004-05-21
AU2003287317A1 (en) 2004-06-07
AU2003287321A1 (en) 2004-06-07
EP1573515A2 (en) 2005-09-14
JP2011170868A (ja) 2011-09-01
DE60318105T2 (de) 2008-12-04
WO2004042574A3 (en) 2005-03-10
KR20050086424A (ko) 2005-08-30
CA2503611A1 (en) 2004-05-21
AU2003287320B2 (en) 2010-12-02
AU2003287318B2 (en) 2010-11-25
KR101012744B1 (ko) 2011-02-09
CA2503622C (en) 2015-12-29
JP2006515941A (ja) 2006-06-08
JP2011181078A (ja) 2011-09-15
KR101062214B1 (ko) 2011-09-05
EP1576471A2 (en) 2005-09-21
AU2003287319B2 (en) 2010-06-24
AU2003287320A1 (en) 2004-06-07
AU2003287318A1 (en) 2004-06-07
EP1573514A2 (en) 2005-09-14
KR20050084628A (ko) 2005-08-26
KR101035646B1 (ko) 2011-05-19
WO2004042561A2 (en) 2004-05-21
JP2006518057A (ja) 2006-08-03
KR20050084629A (ko) 2005-08-26
EP1559005A2 (en) 2005-08-03
KR20050088995A (ko) 2005-09-07
JP2011154711A (ja) 2011-08-11
KR101012745B1 (ko) 2011-02-09
EP1570344A2 (en) 2005-09-07
JP2011175655A (ja) 2011-09-08
CA2503617A1 (en) 2004-05-21
AU2003287319A1 (en) 2004-06-07
DE60318105D1 (de) 2008-01-24
WO2004042569A2 (en) 2004-05-21
JP2006518495A (ja) 2006-08-10
AU2003287317B2 (en) 2010-03-11
JP2006518056A (ja) 2006-08-03
JP2006518058A (ja) 2006-08-03
JP5568502B2 (ja) 2014-08-06
WO2004042560A2 (en) 2004-05-21
CA2503613C (en) 2011-10-18
WO2004042574A2 (en) 2004-05-21
WO2004042560A3 (en) 2005-03-24
KR20050086423A (ko) 2005-08-30
CA2503611C (en) 2013-06-18
EP1570344B1 (en) 2007-12-12
WO2004042569A3 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
ES2300633T3 (es) Coprocesador canalizado.
US11609769B2 (en) Configuration of a reconfigurable data processor using sub-files
US11983140B2 (en) Efficient deconfiguration of a reconfigurable data processor
US20230042521A1 (en) Highly Scalable Quantum Control
US20040133763A1 (en) Computing architecture and related system and method
US10768899B2 (en) Matrix normal/transpose read and a reconfigurable data processor including same
TWI784845B (zh) 對可重配置處理器之資料流功能卸載
US11580397B2 (en) Tensor dropout using a mask having a different ordering than the tensor
US11675588B2 (en) Tile-based result buffering in memory-compute systems
US12481618B2 (en) Context load mechanism in a coarse-grained reconfigurable array processor
CN103793340A (zh) 串行数据处理器
JP2023533795A (ja) レジスタデータの消去
US11328209B1 (en) Dual cycle tensor dropout in a neural network
CN116635824A (zh) 桶式处理器中的线程调度控制及存储器分割
WO2022086732A1 (en) Static identifiers for a synchronous interface
CN115145635A (zh) 用于并行正弦和余弦确定的硬件
GB2529892A (en) Efficient loading and storing of data