ES2339920T3 - Aparato y metodo para procesar datos encauzados. - Google Patents
Aparato y metodo para procesar datos encauzados. Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector 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.
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.
nador.
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.
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.
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.
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.
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)
| 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)
| 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 |
-
2001
- 2001-01-25 SE SE0100221A patent/SE521697C2/sv unknown
- 2001-05-21 AT AT01941347T patent/ATE463012T1/de not_active IP Right Cessation
- 2001-05-21 CN CNB018222854A patent/CN100492341C/zh not_active Expired - Lifetime
- 2001-05-21 ES ES01941347T patent/ES2339920T3/es not_active Expired - Lifetime
- 2001-05-21 US US10/470,096 patent/US7010673B2/en not_active Expired - Fee Related
- 2001-05-21 DE DE60141713T patent/DE60141713D1/de not_active Expired - Lifetime
- 2001-05-21 EP EP01941347A patent/EP1360602B1/en not_active Expired - Lifetime
- 2001-05-21 WO PCT/SE2001/001134 patent/WO2002059767A1/en not_active Ceased
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) | 信号処理装置及び信号処理方法 |