ES2339920T3 - Aparato y metodo para procesar datos encauzados. - Google Patents

Aparato y metodo para procesar datos encauzados. Download PDF

Info

Publication number
ES2339920T3
ES2339920T3 ES01941347T ES01941347T ES2339920T3 ES 2339920 T3 ES2339920 T3 ES 2339920T3 ES 01941347 T ES01941347 T ES 01941347T ES 01941347 T ES01941347 T ES 01941347T ES 2339920 T3 ES2339920 T3 ES 2339920T3
Authority
ES
Spain
Prior art keywords
processing
instruction
block
data
argument
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
ES01941347T
Other languages
English (en)
Inventor
Lars-Olov Svensson
Joachim Roos
Thomas Stromqvist
Par Westlund
Peter Holm
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.)
Xelerated AB
Original Assignee
Xelerated AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xelerated AB filed Critical Xelerated AB
Application granted granted Critical
Publication of ES2339920T3 publication Critical patent/ES2339920T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

Método de procesamiento encauzado, que comprende una pluralidad de fases (9a-9e) de procesamiento encauzado, caracterizado por las etapas de: recibir un bloque (4) de datos en una primera unidad (11) lógica en un medio (3) de procesamiento; consultar una primera instrucción (13a) correspondiente a un primer contador (7a) de programa, asociado con el bloque (4) de datos en una primera tabla (12a) de instrucciones que comprende al menos la primera instrucción (13a); ejecutar al menos una operación asociada con la primera instrucción (13a) en la primera unidad (11) lógica; crear en la primera unidad (11) lógica un segundo contador (7b) de programa, asociado con el bloque (4) de datos, recibir el bloque (4) de datos en una segunda unidad (14) lógica en el medio (3) de procesamiento; consultar una instrucción (13f) adicional correspondiente al segundo contador (7b) de programa en una segunda tabla (12b) de instrucciones que comprende al menos la instrucción (13f) adicional; y ejecutar al menos una operación asociada con la instrucción (13f) adicional en la segunda unidad (14) lógica.

Description

Aparato y método para procesar datos encauzados.
Campo técnico de la invención
La presente invención se refiere a un método para procesar datos encauzados, a un medio de procesamiento para datos encauzados, a un módulo para procesar datos encauzados, a un circuito integrado y a una unidad de orde-
nador.
Descripción de la técnica relacionada
Muchos procesadores usan una técnica denominada encauzamiento o procesamiento encauzado, en la que los procesadores empiezan a ejecutar una segunda instrucción antes de que se haya completado una primera instrucción. Esto es, varias instrucciones están en una "segmentación de cauce" simultáneamente, cada una en una fase de procesamiento diferente. La segmentación de cauce está dividida en fases, es decir, segmentos, y cada fase puede ejecutar sus operaciones, es decir, acciones definidas asociadas con una instrucción, de forma concurrente con las otras fases. Cuando una fase completa una operación, pasa el resultado a la siguiente fase en la segmentación de cauce y obtiene la siguiente operación de la fase anterior. Los resultados finales de cada instrucción emergen al final de la segmentación de cauce en sucesión rápida.
No sólo los microprocesadores de alto rendimiento y basados en RISC (Reduced Instruction Set Computer, ordenador de conjunto de instrucciones reducidas) usan encauzamiento de instrucciones. El RISC proporciona una alta capacidad de programación para las instrucciones realizadas por el microprocesador y mayores demandas respecto al software que para microprocesadores basados en CISC (Complex Instructíon Set computer, ordenador de conjunto de instrucciones complejas). Aunque los microprocesadores basados en RISC tienen una frecuencia de reloj más rápida que los microprocesadores basados en CISC, son más lentos para determinados propósitos especiales, para los que puede configurarse un CISC. Sin embargo, en general para propósitos especiales, tanto los RISC como los CISC son más lentos que un ASIC (Aplication Specific Integrated Circuit, circuito integrado de aplicación especifica), ya que el ASIC está adaptado especialmente para un propósito especifico. Puesto que el ASIC está optimizado para un trabajo predeterminado especifico, tiene la desventaja de no estar adaptado para otros propósitos y de este modo carece de la flexibilidad de los microprocesadores de propósito general.
El documento US-6157955-A da a conocer una plataforma de procesamiento de paquetes programable de propósito general para acelerar aplicaciones de infraestructura de red. La aceleración se consigue, por ejemplo, dividiendo las etapas del procesamiento de paquetes en una multitud de fases de segmentación de cauce y proporcionando motores de clasificación especializados adaptados y un microprocesador de propósito general, denominado un procesador de política, para ejecutar las acciones arbitrarias deseadas por determinadas aplicaciones. Sin embargo, el procesador de política tiene que realizar la acción deseada antes de que pueda empezar una ejecución de una acción solicitada subsiguiente.
Sumario
Es un objeto general de la presente invención proporcionar una arquitectura de ordenador que, para aplicaciones especificas, permita una ejecución de instrucciones más rápida que en general microprocesadores basados en RISC y CISC y que sea más flexible que un ASIC respecto a la capacidad de programación.
La presente invención proporciona por lo tanto un método para procesamiento encauzado según la reivindicación 1.
El primer contador de programa es una variable usada para hacer un seguimiento de la dirección de la siguiente instrucción.
Consultar significa seleccionar dentro de una tabla predefinida de valores (serie, matriz, etc.).
De este modo se consigue que cada fase en el procesamiento encauzado de bloques entrantes se asocie con una tabla de instrucciones, en la que puede editarse una instrucción especificada para una aplicación de modo que se configura de forma adaptada cada fase para una aplicación específica.
De manera adecuada, la al menos una fase de procesamiento encauzado comprende la etapa de:
\quad
recibir al menos un argumento, es decir, una variable, en el medio de procesamiento, estando el al menos un argumento asociado con el bloque; y
\quad
la ejecución de la al menos una operación en la unidad lógica se realiza en el al menos un argumento, el bloque o tanto el al menos un argumento como el bloque. De este modo se consigue que puedan programarse instrucciones más complejas y diferentes en la tabla de instrucciones.
Preferiblemente, antes de la fase o fases anteriormente mencionadas, el método comprende las etapas de:
\quad
recibir un vector de búsqueda asociado con el bloque en un medio de clasificación;
\quad
comparar el vector de búsqueda con datos almacenados en una memoria asociativa, comprendiendo los datos el primer contador de programa y el al menos un argumento; y
\quad
enviar el al menos un argumento y el primer contador de programa al medio de procesamiento antes de la al menos una fase de procesamiento.
De este modo se consigue una fase de clasificación antes de la fase de procesamiento, en la que el al menos un argumento y el primer contador de programa, que pueden ser diferentes para cada tipo de bloque que se envía al medio de clasificación, determinan una posible modificación del bloque en la primera fase en el medio de procesamiento. La memoria asociativa, es decir, una memoria a la que se accede comparando el contenido de los datos almacenados en la misma en lugar de dirigirse a ubicaciones predeterminadas, es programable, lo que hace que el procesamiento de encauzamiento sea incluso más flexible en comparación con el procesamiento en un ASIC.
De manera ventajosa, el método comprende las etapas de:
\quad
crear un segundo contador de programa en una primera fase, y
\quad
crear un tercer contador de programa en una segunda fase.
De este modo se consigue que sean posibles saltos condicionales cuando se ejecuta una posible instrucción de salto condicional correspondiente en la primera o la segunda fase.
La invención se refiere también a un medio de procesamiento para procesar datos encauzados según la reivindicación 5.
De manera adecuada, la al menos una unidad lógica en la al menos una fase de procesamiento encauzado está adaptada para recibir al menos un argumento asociado con el bloque y ejecutar la al menos una operación en el bloque, el al menos un argumento o tanto el bloque como el al menos un argumento.
Preferiblemente, la tabla de instrucciones comprende al menos una segunda instrucción. De este modo se consigue la opción de usar saltos condicionales durante el procesamiento encauzado.
En un primer aspecto del medio de procesamiento según la invención, el bloque es una PDU (Protocol Data unit, unidad de datos de protocolo), por ejemplo una parte de un paquete IP. De este modo se consigue que el medio de procesamiento pueda usarse, por ejemplo, en un aparato en una red de comunicaciones, tal como Internet.
En un segundo aspecto del medio de procesamiento, el bloque comprende una representación digital de una secuencia de señales analógicas. De este modo se consigue que el medio de procesamiento pueda usarse para el procesamiento de señales digitales.
De manera adecuada, la unidad lógica comprende una ALU y medios para extraer una parte o partes del bloque.
Además, la invención se refiere a un módulo para procesar datos encauzados. El módulo comprende un medio de clasificación para correlacionar o identificar un bloque de datos y un medio de procesamiento para procesar el bloque. El medio de procesamiento comprende medios de almacenamiento y al menos una unidad lógica para ejecutar operaciones en el bloque, que se suministra desde el medio de clasificación al medio de procesamiento. El medio de clasificación está adaptado para enviar un contador de programa asociado con el bloque al medio de procesamiento y el medio de almacenamiento comprende una tabla de instrucciones que comprende al menos una instrucción. La al menos una unidad lógica está en al menos una fase de procesamiento encauzado adaptada para recibir el bloque y una primera instrucción de la al menos una instrucción y ejecutar al menos una operación asociada con la primera instrucción.
De manera adecuada, el medio de clasificación está adaptado para enviar al menos un argumento asociado con el bloque al medio de procesamiento, y la al menos una unidad lógica en la al menos una fase de procesamiento encauzado está adaptada para recibir el al menos un argumento y ejecutar la al menos una operación en el bloque, el al menos un argumento, o tanto el bloque como el al menos un argumento.
Además, la invención también se refiere a un circuito integrado, que comprende al menos un módulo según lo anterior.
Además, la invención se refiere a una unidad de ordenador, tal como una unidad de ordenador de red o una unidad de ordenador de procesamiento de señales, que comprende al menos un circuito integrado, comprendiendo el al menos un circuito integrado al menos un módulo según lo anterior.
Breve descripción de los dibujos
Los objetos, ventajas y efectos así como características de la presente invención se entenderán más fácilmente a partir de la siguiente descripción detallada de una realización preferida de la invención, así como de otras realizaciones, leída junto con los dibujos adjuntos, en los que:
la figura 1 muestra de manera esquemática un módulo para procesamiento encauzado de datos según la invención;
la figura 2 ilustra la función de un medio de clasificación según la invención;
la figura 3 muestra de manera esquemática una visión global del método de operación de un medio de procesamiento según la invención;
la figura 4 muestra en más detalle dos fases de procesamiento en el medio de procesamiento según la figura 3;
la figura 5 muestra una vista esquemática de un conjunto de placa de circuito según una realización de la invención;
la figura 6 muestra de manera esquemática un encaminador según la invención; y
la figura 7 muestra un diagrama de bloques esquemático de componentes en una tarjeta de línea según la invención.
Descripción detallada de realizaciones
Aunque la invención cubre diversas modificaciones y métodos y sistemas alternativos, realizaciones preferidas de la invención se muestran en los dibujos y se describirán en detalle a continuación en el presente documento. Debe entenderse, sin embargo, que no se pretende que la descripción especifica y los dibujos limiten la invención a las formas especificas dadas a conocer. Al contrario, se pretende que el alcance de la invención reivindicada incluya todas las modificaciones y construcciones alternativas de la misma que entran dentro del espíritu y alcance de la invención tal como se expresa en las reivindicaciones adjuntas en toda la extensión de sus equivalentes.
Un módulo 1, que comprende un medio 2 de clasificación y un medio 3 de procesamiento para procesamiento encauzado según la invención, se ilustra de manera esquemática en la figura 1. Un bloque 4 en forma de una PDU, tal como una parte de un paquete IP (Internet Protocol packet, paquete de protocolo de Internet), se recibe por el medio 2 de clasificación. Un vector 5 de búsqueda asociado y recuperado del bloque 4 también se recibe por el medio 2 de clasificación. El bloque 4 se reenvía por el medio 2 de clasificación al medio 3 de procesamiento sin cambiar el bloque 4. El medio 3 de procesamiento también recibe al menos un argumento 6 y un primer contador 7a de programa desde el medio 2 de clasificación. A continuación, el medio 3 de procesamiento puede realizar diferentes operaciones en el bloque 4, dependiendo de, por ejemplo, el tipo de bloque que se ha clasificado por el medio de clasificación. El medio 3 de procesamiento emite el bloque 4 cambiado o sin cambiar desde el módulo 1. Para realizar una tarea deseada, varios módulos pueden acoplarse en serie entre si, creando así una arquitectura de medios 2 de clasificación y medios 3 de procesamiento alternativos. Para el propósito de módulos acoplados en serie, se crea un segundo vector de búsqueda (no mostrado) por el medio de procesamiento y puede enviarse a un posible segundo módulo acoplado en serie (no mostrado).
El medio 2 de clasificación se describirá ahora con más detalle con referencia a la figura 2. En este caso, el vector 5 de búsqueda se compara con cadenas de caracteres en al menos una columna en una memoria 8 asociativa (CAM = Content Addressable Memory, memoria de contenido direccionable). Una memoria asociativa la conoce el experto en la técnica y por lo tanto no se describe con más detalle. Tras la comparación, el primer contador 7a de programa y el argumento/los argumentos 6 correspondientes al vector 5 de búsqueda se envían desde el medio 2 de clasificación al medio 3 de procesamiento. El bloque 4 se reenvía a través del medio 2 de clasificación sin cambiarse. El reenvió se retarda para enviar el bloque 4 al medio 3 de procesamiento sustancialmente al mismo tiempo que el argumento/los argumentos 6 y el primer contador 7a de programa. A continuación, la descripción sólo se refiere a un argumento 6, aunque debe entenderse que podrían enviarse, almacenarse y editarse varios argumentos para cada bloque en el medio de procesamiento.
La figura 3 muestra de manera esquemática el método de operación básico del medio 3 de procesamiento. En este caso, el procesamiento de los bloques de datos encauzados comprende cinco fases 9a-9e de procesamiento, procesándose cada fase en un ciclo de reloj, aunque evidentemente el procesamiento encauzado en el medio 3 de procesamiento puede comprender hasta tan sólo una fase o mucho más de cinco fases. Los principios de encauzamiento los conoce el experto en la técnica, y por lo tanto sólo se describe el procesamiento de un bloque y sus contadores de programa y argumento asociados. Antes y después de cada fase 9a-9e, los datos de entrada y los datos de salida se almacenan en un registro respectivamente, es decir, un circuito de ordenador de alta velocidad, pequeño, que contiene valores de operaciones internas. El flujo superior de los tres flujos paralelos, separados, mostrados en la figura 3 a través del medio 3 de procesamiento, ilustra el procesamiento del bloque 4. El flujo central ilustra el procesamiento del argumento 6 asociado y el flujo más inferior ilustra la recepción de un contador de programa para cada fase. Tal como se explicará a continuación, el bloque puede cambiarse en cada fase, el argumento puede cambiarse en cada fase, y se crea un nuevo contador de programa en cada nueva fase.
La figura 4 muestra las dos primeras fases, 9a y 9b, de las cinco fases mostradas en la figura 3. Debe entenderse que las otras tres fases 9c-9e operan principalmente del mismo modo que las dos primeras fases, 9a y 9b, y por lo tanto se han omitido. En analogía a la figura 3, los tres tipos de flujos descritos en conexión con la figura 3 también se muestran en la figura 4. El bloque 4 se recibe y se almacena en un primer registro 10a. Sustancialmente al mismo tiempo, el argumento se recibe y almacena en un segundo registro 10b y el primer contador 7a de programa se recibe y se almacena en un tercer registro 10c. Al inicio de un tic de reloj, una unidad 11 lógica recibe el bloque 4 y el argumento 6 desde el primer y el segundo registro respectivamente. El primer contador 7a de programa se usa para consultar una instrucción correspondiente almacenada en una primera tabla 12a de instrucciones editable, que está contenida en medios de almacenamiento incluidos en el medio 3 de procesamiento. La primera tabla 12a de instrucciones comprende al menos una primera instrucción 13a, aunque en este caso la primera tabla 12a de instrucciones también se ilustra con una segunda y tercera instrucción, 13b y 13c, respectivamente. Evidentemente la primera tabla 12a de instrucciones puede comprender un número arbitrario de instrucciones. Cada una de las instrucciones 13a-c comprende campos de instrucción editables (no mostrados). Cuando se encuentra una instrucción correspondiente al primer contador 7a de programa, la instrucción se envía a la unidad 11 lógica para la ejecución de operaciones correspondientes a la instrucción. En la figura 4, la primera instrucción 13a corresponde al primer contador 7a de programa. Por lo tanto, la primera instrucción 13a se envía a la unidad 11 lógica para la ejecución de las operaciones correspondientes a la primera instrucción 13a. Un campo de instrucción puede por ejemplo comprender una instrucción de condición de salto.
La unidad 11 lógica comprende medios, es decir, una subunidad lógica, para crear nuevos contadores de programa y medios para ejecutar las operaciones asociadas con una instrucción recibida. En la primera fase en este ejemplo, los medios para ejecutar las operaciones y calcular saltos condicionales es una ALU (Arithmetic Logic Unit, unidad lógica aritmética). Una ALU la conoce un experto en la técnica y por lo tanto no se describe con más detalle. Ejemplos de medios adicionales o alternativos para ejecutar las operaciones son medios para extraer una parte o partes del bloque, medios para insertar datos en un bloque, tal como añadir una nueva cabecera a un paquete, y una FPU (Floating Point Unit, unidad de coma flotante) para el tratamiento de operaciones de coma flotante. Una vez recibida la primera instrucción 13a por la unidad 11 lógica, se ejecutan las operaciones necesarias para llevar a cabo la primera instrucción 13a. A modo de ejemplo, puede modificarse el campo TOS (Type of Service, tipo de servicio) en un paquete IP. La unidad 11 lógica también puede editar el argumento 6. Además, basándose en el bloque 4, el argumento 6, las operaciones realizadas en el bloque 4 y/o el argumento 6 y/o saltos condicionales deseados, la unidad 11 lógica crea un segundo contador 7b de programa. Antes de que haya finalizado el tic de reloj, y por tanto la primera fase 9a, el bloque 4 cambiado o sin cambiar se almacena en un cuarto registro 10d, el argumento 6 cambiado o sin cambiar se almacena en un quinto registro 10e y el segundo contador de programa se almacena en un sexto registro 10f.
La segunda fase 9b durante un tic de reloj subsiguiente funciona de una manera similar a la primera fase 9a. En este caso, una segunda unidad 14 lógica recibe el bloque 4 modificado o sin modificar y el argumento 6 del cuarto y quinto registro, respectivamente. El segundo contador 7b de programa se compara con instrucciones en una segunda tabla 12b de instrucciones editable, que en la figura 4 comprende tres instrucciones: una cuarta instrucción 13d, una quinta instrucción 13e y una sexta instrucción 13f. Evidentemente las instrucciones 13d-13f pueden ser similares o idénticas a las instrucciones 13a-13c en la primera tabla 12a de instrucciones. En la figura 4, la sexta instrucción 13f corresponde al segundo contador 7b de programa. Por tanto, la segunda unidad 15 lógica recibe la sexta instrucción 13f y ejecuta las operaciones correspondientes a la sexta instrucción 13f en el bloque 4 y/o argumento 6 recibidos y envía el bloque 4 a un séptimo registro 10g y el argumento 6 a un octavo registro 10h. La segunda unidad 14 lógica crea también un tercer contador 7c de programa, que se envía y almacena en un noveno registro 10i.
Tal como se indica mediante la figura 4, se crea un nuevo contador de programa en cada nueva fase de procesamiento en el medio 3 de procesamiento. Si un segundo módulo se acopla en serie al primer módulo, un último argumento de un primer medio de procesamiento se almacena en un registro y constituye un vector de búsqueda para un segundo medio de clasificación contenido en el segundo módulo. La figura 4 también indica el hecho de que pueden usarse tablas de instrucciones editables y diferentes unidades lógicas, tanto en cuanto a unidades lógicas diferentes físicamente como en cuanto a tipos de componentes completa o parcialmente diferentes contenidos en cada unidad lógica, para cada una de las fases en el medio 3 de procesamiento. Alternativamente, en lugar de usar diferentes unidades lógicas para cada fase, algunas o todas las fases pueden compartir la misma unidad lógica. La invención también abarca el uso de sólo una tabla de instrucciones editable para algunas o para cada fase en el medio de procesamiento. Sin embargo, una realización de este tipo puede limitar la velocidad de procesamiento. También debe indicarse que una instrucción puede ordenar sólo la ejecución de una operación que no afecta ni al bloque 4, ni al argumento 6. Una instrucción de este tipo podría usarse, por ejemplo, cuando un bloque sólo se ha identificado como uno que sólo tiene que transportarse a través de una fase, algunas fases o todos los medios de procesamiento.
Debe apreciarse que los medios de almacenamiento que comprenden las tablas de instrucciones editables usadas por el medio 3 de procesamiento, puede estar contenido en el medio 3 de procesamiento o fuera del medio 3 de procesamiento, aunque en el módulo 1, o integrados en un IC (Integrated Circuit, circuito integrado) 15, que también comprende al menos un módulo 1. Un conjunto 16 de placa de circuito se ilustra de manera esquemática en la figura 5. En este caso el conjunto 16 de placa de circuito comprende una CPU 17 local, el IC 15 y un primer y segundo dispositivo 18a y 18b de interfaz, respectivamente. Un ejemplo de una aplicación para un conjunto de placa de circuito de este tipo es en unidades de ordenador para mecanismos cortafuegos. El IC 15 comprende el primer módulo 1 acoplado en serie y un segundo módulo 19. Tal como se ilustra mediante una flecha 20 de cabeza doble, el IC 15 puede comunicarse con la CPU 17 local a través de un bus. Un ejemplo más detallado de una comunicación entre el IC 15 y la CPU 17 local se describe más adelante en conexión con la figura 7. A lo largo de toda la descripción, la CPU 17 local es de un tipo conocido por un experto en la técnica y por lo tanto no se describe más. Una flecha 21 ilustra bloques que entran en el IC 15 desde el primer dispositivo 18a de interfaz. Los bloques entrantes se procesan por el primer y segundo módulo 1 y 19 acoplados en serie, y a continuación se envían de vuelta al primer dispositivo 18a de interfaz. Aunque no se muestra, bloques desde el segundo dispositivo 18b de interfaz evidentemente pueden procesarse de una manera similar.
Ahora se describirá un ejemplo de una unidad 22 de ordenador que comprende módulos según la invención. Este ejemplo se refiere a un encaminador, es decir, un ordenador que reenvía paquetes desde una LAN (Local Area Network, red de área local) o WAN (Wide Area Network, red de área amplia) a otra. La figura 6 ilustra de manera esquemática partes de una estructura en el encaminador, estando dispuestas varias tarjetas de línea, es decir, conjuntos de placa de circuito, dotada cada una de una parte de transmisión/recepción para un protocolo particular. En este caso sólo se muestran tres tarjetas 23a-23c de línea, aunque evidentemente puede haber más o menos de las mismas en el encaminador. Cada tarjeta de línea comprende al menos un IC 15, que comprende al menos un módulo 1 según la invención. Tal como también se muestra en la figura 5, la CPU 17 local asociada con cada IC 15 puede estar situada en cada tarjeta 23a-23c de línea. Para aplicaciones que requieren un procesamiento rápido de muchos datos, se usan fibras ópticas para conectar las tarjetas 23a-23c de línea con una red de comunicaciones (no mostrada). Cara tarjeta 23a-23c de línea comprende por lo tanto un primer conjunto de puertos, es decir, hay tres conjuntos del primer conjunto de puertos, que en la figura 6 sólo se simbolizan mediante las tres líneas 24a-24c con dos cabezas de flecha a la izquierda de las tarjetas 23a-23c de línea. Las tarjetas de línea se comunican entre si a través de una tarjeta 25 de matriz de conmutación, es decir, una tarjeta que comprende la arquitectura usada por el encaminador para redireccionar datos que entran por uno de los puertos de la tarjeta y salen hacia otro de sus puertos. Así, la tarjeta 25 de matriz conmutación sirve como conmutador y como unión para las tarjetas 23a-23c de línea. Cada tarjeta 23a-23c de línea comprende un segundo conjunto de puertos, es decir, hay tres conjuntos del segundo conjunto de puertos en la figura 6, para la comunicación con la tarjeta de matriz de conmutación. Cada segundo conjunto de puertos está simbolizado mediante líneas 26a-26c con dos cabezas de flecha entre la tarjeta 23a-23c de línea asociada y la tarjeta 25 de matriz de conmutación. Un dispositivo 27 se usa por ejemplo para calcular tablas de encaminamiento, es decir, tablas de base de datos en el encaminador que contienen información de una red de comunicaciones actual. A través del dispositivo 27, un proveedor del IC 15 puede actualizar las instrucciones en las tablas 12a-12b de instrucciones editables dadas a conocer anteriormente. Sin embargo, la actualización no forma parte de esta invención y por lo tanto no se describe con más detalle.
La figura 7 muestra de manera esquemática un ejemplo de una arquitectura de circuito en una de las tarjetas 23a-23c de línea, que incluye una pluralidad de módulos según la invención. En este caso, el primer conjunto de puertos está conectado a un multiplexor 28. Una pluralidad de módulos están acoplados en serie al multiplexor 28 y conducen a una unidad 29 para operaciones tales como puesta en cola, planificación y conformación. Estas operaciones las conoce un experto en la técnica y no forman parte de esta invención. Módulos adicionales siguen tras la unidad 29, antes de que los paquetes encauzados se suministren a un multiplexor 30 inverso y hacia fuera a través del segundo conjunto de puertos, que se corresponden con el primer conjunto de puertos. También puede realizarse una realimentación al multiplexor 28. Además, los paquetes pueden reenviarse desde el multiplexor 30 inverso a la CPU 17 local para su procesamiento. Además, la CPU 17 puede enviar paquetes al multiplexor 28.
Ejemplos de tareas que pueden realizarse en uno de los módulos en la figura 7 son:
\quad
decodificar diferentes tipos de paquetes, tales como células ATM y paquetes de Ethernet;
\quad
usar un cortafuegos para determinar si un paquete debe reenviarse a un módulo subsiguiente o eliminarse mediante filtrado;
\quad
usar un cortafuegos con el fin de reenviar sólo determinados tipos de paquetes desde la tarjeta de línea;
\quad
acondicionar tráfico, es decir, medir la longitud del paquete entrante y tener una condición que puede ser que sólo se le permite reenviar una determinada cantidad de datos a una determinada dirección en la red de comunicaciones y que se descartan todos los datos por encima de un límite;
\quad
reenviar el paquete a otra tarjeta de línea usando la tabla de encaminamiento;
\quad
identificar prioridad de cola, por ejemplo en caso de que diferentes paquetes tengan diferentes prioridades respecto a una transmisión rápida a través de la red de comunicaciones; y
\quad
añadir o eliminar una cabecera a o de un paquete entrante.
El medio 3 de procesamiento, el método para el medio 3 de procesamiento y el módulo 1 descritos anteriormente pueden aplicarse evidentemente a todo tipo de unidades de ordenador, diferentes de las unidades de ordenador y encaminador, para mecanismos cortafuegos descritos anteriormente, en los que las unidades de ordenador se beneficiarían del encauzamiento. Ejemplos de unidades de ordenador de este tipo son unidades de ordenador de red tales como: conmutadores; pasarelas, es decir, unidades de ordenador que realizan conversión de protocolo entre diferentes tipos de redes y aplicaciones; y unidades de equilibrio de carga para servidores Web.
La invención también puede aplicarse para unidades de ordenador implicadas en el procesamiento de señales digitales, es decir, el análisis y/o la modificación de señales desde fuentes tales como monitores de terremotos, de satélites meteorológicos y de sonido. El bloque 4 de datos recibido por un módulo 1 puede ser en este caso una representación digital de una secuencia de señales analógicas. Campos en los que se usa procesamiento de señales digitales en conexión con la invención son, por ejemplo, la biomedicina, el procesamiento de sonar, de radar, de sismología, de voz y de música, la formación de imágenes y las comunicaciones.

Claims (15)

1. Método de procesamiento encauzado, que comprende una pluralidad de fases (9a-9e) de procesamiento encauzado, caracterizado por las etapas de:
\quad
recibir un bloque (4) de datos en una primera unidad (11) lógica en un medio (3) de procesamiento;
\quad
consultar una primera instrucción (13a) correspondiente a un primer contador (7a) de programa, asociado con el bloque (4) de datos en una primera tabla (12a) de instrucciones que comprende al menos la primera instrucción (13a);
\quad
ejecutar al menos una operación asociada con la primera instrucción (13a) en la primera unidad (11) lógica;
\quad
crear en la primera unidad (11) lógica un segundo contador (7b) de programa, asociado con el bloque (4) de datos,
\quad
recibir el bloque (4) de datos en una segunda unidad (14) lógica en el medio (3) de procesamiento;
\quad
consultar una instrucción (13f) adicional correspondiente al segundo contador (7b) de programa en una segunda tabla (12b) de instrucciones que comprende al menos la instrucción (13f) adicional; y
\quad
ejecutar al menos una operación asociada con la instrucción (13f) adicional en la segunda unidad (14) lógica.
2. Método según la reivindicación 1, en el que la al menos una fase (9a-9e) de procesamiento encauzado comprende la etapa de:
\quad
recibir al menos un argumento (6) en la primera unidad (11) lógica, estando el al menos un argumento (6) asociado con el bloque (4) de datos; y
\quad
la ejecución de la al menos una operación en la primera unidad (11) lógica se realiza en el al menos un argumento (6), el bloque (4) de datos o tanto el al menos un argumento (6) como el bloque (4) de datos.
3. Método según la reivindicación 2, que comprende las etapas de:
\quad
recibir un vector (5) de búsqueda asociado con el bloque (4) de datos en un medio (2) de clasificación;
\quad
comparar el vector (5) de búsqueda con datos almacenados en una memoria (8) asociativa, comprendiendo los datos el primer contador (7a) de programa y el al menos un argumento (6); y
\quad
enviar el al menos un argumento (6) y el primer contador (7a) de programa al medio (3) de procesamiento antes de cualquiera de las fases de la pluralidad de fases de procesamiento encauzado.
4. Método según una cualquiera de las reivindicaciones anteriores, que comprende las etapas de:
\quad
crear un segundo contador (7b) de programa en una primera fase (9a), y
\quad
crear un tercer contador (7c) de programa en una segunda fase (9b).
5. Medio (3) de procesamiento para procesar datos encauzados, que comprende medios (12a, 12b) de almacenamiento y una pluralidad de unidades (11, 14) lógicas para ejecutar operaciones en un bloque (4) de datos, caracterizados porque los medios (12a, 12b) de almacenamiento comprenden una pluralidad de tablas (12a, 12b) de instrucciones, comprendiendo cada una al menos una instrucción, porque una primera unidad (11) lógica de la pluralidad de unidades lógicas en una primera fase (9a) de procesamiento encauzado está adaptada para recibir el bloque (4) de datos y una primera instrucción (13a) correspondiente a un primer contador (7a) de programa asociado con el bloque (4) de datos, desde una primera tabla (12a) de instrucciones de la pluralidad de tablas de instrucciones y ejecutar al menos una operación asociada con la primera instrucción (13a), y porque una segunda unidad (14) lógica de la pluralidad de unidades lógicas en una segunda fase (9b) de procesamiento encauzado está adaptada para recibir el bloque (4) y una instrucción (13f) adicional correspondiente a un segundo contador (7b) de programa creado en la primera unidad (11) lógica y asociado con el bloque (4) de datos, desde una segunda tabla (12b) de instrucciones de la pluralidad de tablas de instrucciones y ejecutar al menos una operación asociada con la instrucción (13f) adicional.
6. Medio (3) de procesamiento según la reivindicación 5, en el que la al menos una de las unidades (11) lógicas está adaptada para recibir al menos un argumento (6) asociado con el bloque (4) de datos y ejecutar la respectiva al menos una operación en el bloque (4) de datos, el al menos un argumento (6) o tanto el bloque (4) de datos como el al menos un argumento (6).
7. Medio (3) de procesamiento según la reivindicación 5 ó 6, en el que al menos una de las tablas (12a) de instrucciones comprende también al menos una segunda instrucción (13b).
8. Medio (3) de procesamiento según una cualquiera de las reivindicaciones 5 a 7, en el que el bloque (4) de datos es una PDU, por ejemplo una parte de un paquete IP.
9. Medio (3) de procesamiento según una cualquiera de las reivindicaciones 5 a 7, en el que el bloque (4) de datos comprende una representación digital de una secuencia de señales analógicas.
10. Medio (3) de procesamiento según una cualquiera de las reivindicaciones 5 a 9, en el que al menos una de las unidades (11) lógicas comprende una ALU.
11. Medio (3) de procesamiento según la reivindicación 10, en el que la primera unidad (11) lógica comprende medios para extraer una parte o partes del bloque (4) de datos.
12. Módulo (1) para procesar datos encauzados, que comprende un medio (2) de clasificación para correlacionar o identificar un bloque (4) de datos y un medio (3) de procesamiento según la reivindicación 5 para procesar el bloque (4) de datos, comprendiendo el medio (3) de procesamiento medios (12a, 12b) de almacenamiento y al menos una unidad (11) lógica para ejecutar operaciones en el bloque (4) de datos, que se suministra desde el medio (2) de clasificación a los medios (3) de procesamiento,
caracterizado porque el medio (2) de clasificación está adaptado para enviar un contador (7a) de programa asociado con el bloque (4) de datos al medio (3) de procesamiento.
13. Módulo (1) según la reivindicación 12, en el que el medio (2) de clasificación está adaptado para enviar al menos un argumento (6) asociado con el bloque (4) de datos al medio (3) de procesamiento, y
la al menos una unidad (11) lógica en la al menos una fase de procesamiento encauzado está adaptada para recibir el al menos un argumento (6) y ejecutar la al menos una operación en el bloque (4) de datos, el al menos un argumento (6), o tanto el bloque (4) de datos como el al menos un argumento (6).
14. Circuito (15) integrado, caracterizado por al menos un módulo (1) según la reivindicación 12.
15. Unidad (22) de ordenador, tal como una unidad de ordenador en red o una unidad de ordenador de procesamiento de señales, que comprende al menos un circuito (15) integrado, caracterizada porque el al menos un circuito (15) integrado comprende al menos un módulo (1) según la reivindicación 12.
ES01941347T 2001-01-25 2001-05-21 Aparato y metodo para procesar datos encauzados. Expired - Lifetime ES2339920T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SE0100221A SE521697C2 (sv) 2001-01-25 2001-01-25 Anordningar och förfarande för behandling av data i en logisk rörledning
SE2001100221 2001-01-25

Publications (1)

Publication Number Publication Date
ES2339920T3 true ES2339920T3 (es) 2010-05-27

Family

ID=20282730

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01941347T Expired - Lifetime ES2339920T3 (es) 2001-01-25 2001-05-21 Aparato y metodo para procesar datos encauzados.

Country Status (8)

Country Link
US (1) US7010673B2 (es)
EP (1) EP1360602B1 (es)
CN (1) CN100492341C (es)
AT (1) ATE463012T1 (es)
DE (1) DE60141713D1 (es)
ES (1) ES2339920T3 (es)
SE (1) SE521697C2 (es)
WO (1) WO2002059767A1 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE525183C2 (sv) * 2002-04-04 2004-12-21 Xelerated Ab Förfarande och medel för behandling med pipelining av datapaket
US20070070077A1 (en) * 2005-09-26 2007-03-29 Silicon Integrated Systems Corp. Instruction removing mechanism and method using the same
US8179896B2 (en) * 2006-11-09 2012-05-15 Justin Mark Sobaje Network processors and pipeline optimization methods
CN102364432B (zh) * 2011-10-25 2013-12-18 中国科学院苏州纳米技术与纳米仿生研究所 使用双程序计数器计算待处理指令地址的系统
CN106325248B (zh) * 2016-09-06 2018-12-07 凌云光技术集团有限责任公司 一种视觉检测流水线调控方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
US5509123A (en) * 1994-03-22 1996-04-16 Cabletron Systems, Inc. Distributed autonomous object architectures for network layer routing
US5524258A (en) 1994-06-29 1996-06-04 General Electric Company Real-time processing of packetized time-sampled signals employing a systolic array
US5566170A (en) 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
US5666487A (en) * 1995-06-28 1997-09-09 Bell Atlantic Network Services, Inc. Network providing signals of different formats to a user by multplexing compressed broadband data with data of a different format into MPEG encoded data stream
JPH09106389A (ja) * 1995-10-12 1997-04-22 Sony Corp 信号処理装置
IT1288076B1 (it) * 1996-05-30 1998-09-10 Antonio Esposito Multicalcolatore elettronico numerico parallelo multiprocessore a ridondanza di processori accoppiati
US6252610B1 (en) * 1998-05-29 2001-06-26 Silicon Graphics, Inc. Method and apparatus for efficiently switching state in a graphics pipeline
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
KR100352981B1 (ko) * 1999-05-21 2002-09-18 유혁 엠펙-1 데이터 전송 장치 및 그 방법
US6836808B2 (en) * 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing

Also Published As

Publication number Publication date
CN1494692A (zh) 2004-05-05
US20040133673A1 (en) 2004-07-08
SE521697C2 (sv) 2003-11-25
US7010673B2 (en) 2006-03-07
ATE463012T1 (de) 2010-04-15
EP1360602B1 (en) 2010-03-31
SE0100221D0 (sv) 2001-01-25
EP1360602A1 (en) 2003-11-12
CN100492341C (zh) 2009-05-27
WO2002059767A1 (en) 2002-08-01
SE0100221L (sv) 2002-07-26
DE60141713D1 (de) 2010-05-12

Similar Documents

Publication Publication Date Title
US7418536B2 (en) Processor having systolic array pipeline for processing data packets
US7069372B1 (en) Processor having systolic array pipeline for processing data packets
US11038993B2 (en) Flexible processing of network packets
US20070217453A1 (en) Data Processing Architectures
US7237058B2 (en) Input data selection for content addressable memory
Allen et al. IBM PowerNP network processor: Hardware, software, and applications
US9083641B2 (en) Method and apparatus for improving packet processing performance using multiple contexts
US7937495B2 (en) System and method for modifying data transferred from a source to a destination
ES2339920T3 (es) Aparato y metodo para procesar datos encauzados.
US8824468B2 (en) System and method for parsing frames
Pionteck et al. A dynamically reconfigurable packet-switched network-on-chip
US8477780B2 (en) Processing packet information using an array of processing elements
Carlstrom et al. Synchronous dataflow architecture for network processors
US20240345953A1 (en) Content-Addressable Memory based Nondeterministic Finite Automata Accelerator
Chen et al. Trellis-search based dynamic multi-path connection allocation for TDM-NoCs
CN120215876A (zh) Alu阵列、基于alu阵列的处理器以及报文处理方法
US9098262B2 (en) Efficient arithimetic logic units
US6768336B2 (en) Circuit architecture for reduced-synchrony on-chip interconnect
US20040168041A1 (en) Flexible interface device
Karras et al. A folded pipeline network processor architecture for 100 Gbit/s networks
Coss et al. The network processor decision
JPWO2008123406A1 (ja) データ駆動型処理装置及びその順序合流制御装置
EP4427405A1 (en) A device and a method for a gateway controller of user equipment
KR20110024132A (ko) 멀티캐스팅 네트워크 온 칩, 그 시스템 및 네트워크 스위치
JP2010033336A (ja) 信号処理装置及び信号処理方法