ES2381233T3 - Método y aparato para procesamiento de datos usando el campo de disposición en cola - Google Patents
Método y aparato para procesamiento de datos usando el campo de disposición en cola Download PDFInfo
- Publication number
- ES2381233T3 ES2381233T3 ES08783243T ES08783243T ES2381233T3 ES 2381233 T3 ES2381233 T3 ES 2381233T3 ES 08783243 T ES08783243 T ES 08783243T ES 08783243 T ES08783243 T ES 08783243T ES 2381233 T3 ES2381233 T3 ES 2381233T3
- Authority
- ES
- Spain
- Prior art keywords
- queue
- packets
- thread
- determination
- read
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims description 70
- 230000000903 blocking effect Effects 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims description 19
- 230000006870 function Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Storage Device Security (AREA)
- Communication Control (AREA)
- Multi Processors (AREA)
Abstract
Dispositivo informático (50) que comprende: una memoria de acceso aleatorio; una memoria de sólo lectura; y una unidad de procesamiento central interconectada con dicha memoria de acceso aleatorio y dicha memoria de sólo lectura mediante un bus; estando configurada dicha unidad de procesamiento central para ejecutar una pluralidad de instrucciones de programación (70) que representan una pluralidad de objetos de software, comprendiendo dichos objetos de software una cola de lectura (74) para almacenar paquetes no procesados; incluyendo además dichos objetos de software una cola sin bloqueo (86) y un subproceso de lector (82) para leer cada uno de dichos paquetes no procesados de dicha cola de lectura a dicha cola sin bloqueo si dicha cola sin bloqueo (86) no está llena; incluyendo además dichos objetos de software una pluralidad de subprocesos de procesador (94), cada subproceso de procesador para realizar una operación en al menos uno de dichos paquetes no procesados en dicha cola sin bloqueo (86); incluyendo además dichos objetos de software una cola de escritura (78) y un subproceso de escritor (84) para escribir paquetes que se han procesado por dicha pluralidad de subprocesos de procesador (94) de dicha cola sin bloqueo (86) a dicha cola de escritura (78) .
Description
Método y aparato para procesamiento de datos usando el campo de disposición en cola
La presente memoria descriptiva se refiere, en general, al procesamiento de datos informáticos y más particularmente se refiere a un método y a un aparato para el procesamiento de datos usando la disposición en cola.
Existe una necesidad creciente de procesamiento en tiempo real. (Tal como se utiliza en el presente documento, la expresión “en tiempo real” también pretende hacer referencia a casi en tiempo real y sustancialmente en tiempo real.) Esta necesidad se ilustra ampliamente en el sector de las telecomunicaciones en el que los servicios en tiempo real son comunes. El ejemplo clásico de un servicio en tiempo real son los servicios de telefonía de voz tradicionales, sin embargo, a medida que los dispositivos portátiles de comunicación inalámbrica se han vuelto más potentes, está surgiendo la demanda de transmitir en flujo continuo vídeo, audio y otros servicios en tiempo real.
En telecomunicaciones, junto a la demanda de servicios en tiempo real está la demanda de facturación en tiempo real, que es particularmente importante en el caso de servicios de prepago, aunque también es relevante para servicios de pospago. La invocación y rendimiento de un servicio en tiempo real también debe tener lugar junto a la gestión en tiempo real de un balance del abonado. Por consiguiente, son necesarias mejoras para que las técnicas de disposición en cola de datos actuales satisfagan tal demanda, o al menos mejoren la satisfacción de tal demanda. Qie et al “Scheduling computations on a software based router”, Performance Evaluation Review, vol. 29, n.º 1, páginas 13-24 (16 de junio de 2001), describe la implementación de un encaminador basado en software, que se centra en la planificación de los ciclos de CPU del encaminador. La solicitud de patente estadounidense publicada 20020101876 A1 describe un sistema para evitar el bloqueo de cabeza de línea, que implementa una barra cruzada de no bloqueo, para su uso con sistemas de red que emplea paquetes que tienen una prioridad asociada.
Se proporciona un dispositivo informático que tiene una unidad de procesamiento central, memoria de acceso aleatorio y memoria de sólo lectura interconectadas mediante un bus. La unidad de procesamiento central está configurada para ejecutar una pluralidad de instrucciones de programación que representan una pluralidad de objetos de software. Los objetos de software comprenden una cola de lectura para almacenar paquetes no procesados y una cola de escritura para almacenar paquetes procesados. Los objetos de software incluyen un subproceso de lector para leer paquetes de la cola de lectura y una cola sin bloqueo para recibir paquetes recibidos a través del subproceso de lector. Los objetos de software incluyen también al menos un subproceso de procesador para realizar una operación en los paquetes en la cola sin bloqueo. Los objetos de software incluyen un subproceso de escritor para escribir paquetes que se han procesado por el al menos un subproceso de procesador a la cola de escritura.
La figura 1 muestra un aparato para procesamiento de datos usando la disposición en cola.
La figura 2 muestra una representación esquemática de software que se ejecuta en el aparato de la figura 1.
La figura 3 muestra un diagrama de flujo que representa un método de disposición en cola de paquetes.
La figura 4 muestra un diagrama de flujo que representa un método de retirada de paquetes de la cola.
La figura 5 muestra un diagrama de flujo que representa un método de procesamiento de paquetes.
Descripción detallada de las realizaciones
Haciendo referencia a la figura 1, un aparato para procesamiento de datos se indica generalmente en 50. En una presente realización, el aparato 50 es un servidor, aunque en otras realizaciones el aparato 50 puede basarse en otros tipos de entorno informático. El aparato 50 es normalmente un dispositivo informático tal como un servidor que tiene un teclado y ratón (u otros dispositivos de entrada), un monitor (u otro dispositivo de salida) y un módulo de sobremesa que conecta el teclado, el ratón y el monitor y que aloja una o más unidades de procesamiento central, memoria volátil (es decir, memoria de acceso aleatorio), memoria persistente (es decir, dispositivos de disco duro) e interfaces de red para permitir al aparato 50 comunicarse a través de una red. Por ejemplo, el aparato 50 puede ser un servidor Sun 480R de Sun Microsystems, Inc. de Palo Alto, California, con una pluralidad de CPU y, dado que una parte significativa del procesamiento se realiza en la memoria de acceso aleatorio, un servidor de este tipo podría configurarse con aproximadamente ocho hasta aproximadamente dieciséis gigabytes de memoria de acceso aleatorio. Sin embargo, debe resaltarse que este servidor particular es meramente a modo de ejemplo, una enorme variedad de otros tipos de entornos informáticos para el aparato 50 están dentro del alcance de la invención.
El aparato 50 está situado entre una fuente de datos 54 y un destino de datos 58. Así, el aparato 50 se conecta a la fuente de datos 54 a través de un primer enlace 62 y al destino de datos 58 a través de un segundo enlace 66. Los enlaces 62 y 66 se conectan al aparato 50 a través de una o más interfaces de red en el aparato 50. Los enlaces 62 y 66 se muestran por separado por motivos de conveniencia y pueden, de hecho, estar en el mismo enlace de datos y/o físico y/o topología de red según se desee.
La fuente de datos 54 puede ser cualquier fuente de paquetes de datos que se suministran al aparato 50, mientras que el destino de datos 58 puede ser cualquier destino de paquetes de datos al que se dirigen o están destinados los paquetes de datos finalmente desde la fuente de datos 54. En efecto, la fuente de datos 54 puede representar una pluralidad de fuentes de datos mientras que el destino de datos 58 puede representar una pluralidad de destinos de datos. La fuente de datos 54 y el destino de datos 58 se basan a su vez normalmente en infraestructura de hardware informático, tal como un servidor o un encaminador o cualquier otro componente de red o similar.
El aparato 50 está configurado para ejecutar una aplicación de software 70 que puede procesar paquetes que provienen de la fuente de datos 54 de camino al destino de datos 58. Tal como se utiliza en la frase anterior, el término “proceso” no pretende ser limitativo, y puede hacer referencia a cualquier tipo de operación u algoritmo o similar que puedan realizarse en tales paquetes. Un ejemplo específico pero no limitativo de procesamiento es el análisis de paquetes llevados a cabo a través de una red de telecomunicación. Por ejemplo, los paquetes de la fuente de datos 54 pueden incluir paquetes que contienen una petición de servicios desde un terminal móvil (no mostrado) conectado a la fuente de datos 54, pudiendo estar ubicados los servicios que están solicitándose por el terminal móvil en un servidor de aplicación (no mostrado) conectado al destino de datos 58. El aparato 50 puede estar incorporado en la infraestructura de la red de telecomunicación y estar configurado para determinar si la petición del paquete está autorizada y/o de otro modo es conforme al acuerdo entre el abonado que opera el terminal móvil y la empresa que opera la red de telecomunicación a la que se conecta el terminal móvil. En una presente realización, como parte de su función en el procesamiento de paquetes, la aplicación 70 está configurada por tanto para “abandonar” paquetes que provienen de la fuente de datos 54 que no están autorizados y para “reenviar” paquetes que provienen de la fuente de datos 54 que están autorizados al destino de datos 58.
La figura 2 muestra una representación esquemática de la aplicación 70. La aplicación 70, tal como se muestra en la figura 2, hace uso de hardware y/u otro software que se ejecuta en el aparato 50 con el fin de cumplir su función. La aplicación 70 incluye así una cola de entrada 74 y una cola de salida 78. La cola de entrada 74 está asociada con la fuente de datos 54 y por tanto los paquetes de datos de la fuente de datos 54 llenan la cola de entrada 74 basándose en el enfoque de primero en entrar primero en salir (“FIFO”) (u otro enfoque deseado). De forma similar, la cola de salida 78 está asociada con el destino de datos 58 y por tanto los paquetes de datos que pasan a través de la aplicación 70 y se ponen en la cola de salida 78 con una etiqueta de “reenviar” se pasan de la cola de salida 78 al destino de datos 58, pero aquellos paquetes de datos que pasan a través de la aplicación 70 y se ponen en la cola de salida 78 con una etiqueta de “abandonar” nunca salen de la cola de salida 78 al destino de datos 58. Tales paquetes con la etiqueta de “abandonar” pueden almacenarse para un análisis posterior, o usarse para generar un mensaje de error para el terminal móvil que envió el paquete abandonado, o usarse con algún otro fin, y/o esos paquetes pueden ser eliminados conjuntamente.
Los componentes de la aplicación 70 que se encuentran entre las colas 74 y 78 realizan la función de procesamiento de marcar paquetes con bien una etiqueta de “reenviar” o bien una etiqueta de “abandonar”. Tales componentes de la aplicación 70 incluyen un subproceso de lector 82 y un subproceso de escritor 84. El subproceso de lector 82 está configurado para leer paquetes de datos de la cola 74 y disponer en cola esos paquetes en una cola intermedia 86. El subproceso de escritor 84 está configurado para leer paquetes de la cola 86 que se han procesado y escribirlos en la cola 78.
La aplicación 70 también incluye un controlador de subprocesos 90 que está configurado para acceder a la cola 86 y coordinar el procesamiento de paquetes en la cola 86 con una pluralidad de subprocesos de procesador 94.
Cada subproceso de procesador está a su vez configurado para coordinarse con una cola FIFO 98 que es una cola sin bloqueo mapeada en memoria usada por la aplicación externa para realizar posprocesamiento de paquetes. A su vez, la cola FIFO 98 es accesible para otra aplicación 102 que puede acceder la cola FIFO 98 y realizar operaciones en paquetes almacenados en la misma. La aplicación 102 puede estar configurada para realizar procesamiento adicional pero no es necesario. Los subprocesos 94 están configurados tanto para retirar de la cola 86 como para disponer en la cola 98. En otras realizaciones, la aplicación 102 y la cola 98 pueden omitirse totalmente dependiendo de la funcionalidad deseada del aparato 50.
Al explicar la aplicación 70 en mayor detalle, la cola 86 es un almacenamiento en memoria intermedia asignado previamente. Los índices constituidos por una pluralidad de variables que está asociada con la cola 86, denominados en el presente documento como TAIL, WRITHEAD y PROCHEAD, se usan para disponer en cola y retirar datos de la cola 86. TAIL se controla por el subproceso de lector 82. WRITHEAD se controla por el subproceso de escritor 84. PROCHEAD se controla por el controlador de subprocesos 90 conjuntamente con un subproceso 94 particular. (Obsérvese que, en lo sucesivo en el presente documento, cuando se usa el término “HEAD” en el presente documento, se usa para hacer referencia a o bien WRITHEAD o bien PROCHEAD según requiera el contexto).
El tamaño de cola 86 se selecciona para que corresponda con las colas 74 y 78. (Por ejemplo, cada elemento puede alinearse con el mismo tamaño. (es decir, con lo cual el más cercano 2^n >= maxsize(tamaño de elemento). El uso de un tamaño fijo que se alinea con 2^n puede mejorar el rendimiento y eficacia globales cuando se mueve el puntero para HEAD y TAIL). Tal como se utiliza en el presente documento, el término “elemento” se refiere a un bloque de memoria con tamaño fijo en una cola, mientras que un paquete es el contenido de un elemento.
TAIL es el último índice usado para disponer en cola elementos en la cola 86. WRITHEAD y PROCHEAD son el último índice usado para retirar de la cola elementos de un subproceso de procesador 94 diferente. Se prefiere actualmente que sólo uno de los subprocesos 94 debe disponer en cola en cualquier momento dado, y sólo dos de los subprocesos 94 deben retirar de la cola al mismo tiempo en cualquier momento dado.
Conceptualmente, TAIL y HEAD sólo pueden avanzar pero nunca retroceder. Sin embargo, puesto que el tamaño de la cola 86 es limitado, cuando TAIL y HEAD alcanzan la limitación de la cola 86, se pondrán a cero. Cuando se compara el valor de tail y head, el valor se ajusta según lo siguiente:
i) Para comprobar si la cola 86 está llena se usan las siguientes condiciones: si (tail-head+1)==0; ==cola->maxsize; == -cola->maxsize, entonces la cola 86 está llena.
ii) Para comprobar si la cola 86 está vacía se usan las siguientes condiciones: (tail-head)==0; ==cola->maxsize; ==- cola->maxsize, entonces la cola 86 está vacía.
La disposición en cola en la cola 86 por el subproceso de lector 82 se realiza de la siguiente manera:
Si WRITHEAD o PROCHEAD es mayor o igual que TAIL, entonces la cola 86 está llena. Se devuelve inmediatamente un mensaje que indica que la cola 86 está LLENA.
Si WRITHEAD o PROCHEAD es menor que TAIL, el elemento se dispondrá en cola copiando datos de la cola 74 a la cola 86 y TAIL avanzará.
La disposición en cola en la cola 86 puede realizarse mediante la reserva, refiriéndose “reserva” al hecho de que con el fin de leer paquetes de 74, debe proporcionarse un bloque de memoria para almacenar paquetes, pero no es deseable asignar un bloque de memoria temporal cuando se lee un paquete de la cola 74. Por consiguiente, se usa memoria directamente de la cola 86, y antes de usar esa memoria, esa memoria se “reserva” de modo que se declara que el bloque de memoria reservado se reservará de modo que otros subprocesos no deben usar ese bloque de memoria “reservado” en absoluto. Después de leer los paquetes, estos bloques de memoria reservados están “consignados” y el índice tail avanza, y la “reserva” puede cancelarse de modo que esos bloques de memoria pueden estar listos para usarse por otros subprocesos. La “reserva” puede realizarse de la siguiente manera:
Si WRITHEAD o PROCHEAD es mayor o igual que TAIL, significa que la cola está llena. Se devuelve inmediatamente un mensaje que indica que la cola 86 está LLENA.
Si WRITHEAD o PROCHEAD es menor que TAIL, entonces se devolverá el puntero del índice TAIL actual para la cola 86. No hay copiado de memoria ni asignación de memoria.
Cuando un bloque de cola 86 se llena con datos, debe llamarse a un método para avanzar TAIL.
La retirada de la cola 86 se realiza de la siguiente manera:
La función de retirada de la cola usando WRITHEAD o PROCHEAD es la misma excepto que cada una usa un puntero HEAD diferente para retirar de la cola los datos.
- 1.
- Si TAIL es igual que HEAD, significa que la cola está vacía. En esta circunstancia la función de retirada de la cola devuelve inmediatamente NULL.
- 2.
- Si TAIL es mayor que HEAD, significa que la cola no está vacía. El elemento al que hace referencia el Índice HEAD se retirará y HEAD avanzará 1.
La retirada de un lote de paquetes de la cola 86 se realiza de la siguiente manera:
- 1.
- Si TAIL es igual que HEAD, significa que la cola está vacía. En la circunstancia la retirada de la cola devuelve inmediatamente NULL.
- 2.
- Si TAIL es mayor que HEAD, significa que la cola no está vacía. Se devolverán el resto de elementos en cola que se calcula mediante la ecuación TAIL - HEAD, y el puntero de índice HEAD actual. Los números de elementos disponibles también se devolverán. Los números de elementos disponibles dependen del valor mínimo entre TAIL - HEAD y el tamaño de lote.
- 3.
- Después de retirar de la cola los elementos y copiar los datos a otra memoria para su procesamiento, debe llamarse a DequeueConfirm (confirmar retirada de la cola) para avanzar head (HEAD=HEAD+AVAIL).
En referencia ahora a la figura 3, se representa un método para disponer en cola paquetes en una cola, en forma de un diagrama de flujo y se indica a nivel general en 300. El método 300 puede realizarse por el subproceso de lector
82.
Cuando se realiza por el lector 82, la etapa 305 del método 300 verifica en primer lugar si la aplicación 70 está ocupada disponiendo en cola elementos en la cola 86. No existe retardo si la cola 86 no está llena y la cola 74 no está vacía. Cuando la cola 74 está vacía, el lector 82 está configurado para esperar una notificación de que la cola 74 no está vacía. Cuando la cola 86 está llena, el lector 82 está configurado para avanzar a la etapa 310 y para ceder el paso actual y seguir intentando poner paquetes procedentes de la cola 86. En una presente realización no existe espera de subproceso (es decir, un conmutador de notificación o contexto) para intentar continuamente y retirar elementos de la cola 86. (“Ceder el paso actual” se refiere a una condición mediante la cual el subproceso seguirá reintentando sin espera y/o bloqueo. El único retardo es la cesión de paso del subproceso actual para permitir que otros subprocesos accedan a la(s) unidad(es) de procesamiento central (CPU) con el fin de continuar el procesamiento. El retardo es la fracción de tiempo de conmutación de subproceso).
El lector 82 está configurado para comprobar si la cola 86 está llena antes de leer los paquetes de la cola 74. Si la cola 86 está llena, el lector 82 sigue cediendo el paso en la etapa 310 para permitir que subprocesos de procesador 94 y el subproceso de escritura 84 retiren de la cola paquetes hasta que la cola no esté llena.
El lector 82 está configurado para reservar un espacio (etapa 315), leer paquetes (etapa 320) y avanzar tail de la cola (etapa 325). (Obsérvese que tal reserva en la etapa 315 no cambia el propio valor de TAIL, pero una consignación avanzará TAIL). El lector 82, en una presente realización está configurado de modo que no necesita realizar ningún copiado o asignación de memoria para hacer el lector 82 tan rápido como sea posible. Esto se efectúa por el hecho de que no se usa almacenamiento en memoria intermedia para leer paquetes de la cola 74, de modo que no hay asignación o copiado de memoria y la misma memoria se reutilizará por diferentes subprocesos.
En la etapa 335, el lector 82 está configurado para notificar a aquellos subprocesos 94 que están en espera cuando una condición predefinida, denominada en el presente documento como “etiqueta Worker_waiting”, se ajusta a verdadero. Se prefiere actualmente que sólo haya como máximo un subproceso de proceso 94 en modo de espera en cualquier momento. El subproceso de procesador 94 está, en una presente realización, configurado para pasar sólo al modo de espera sólo cuando actualmente es el único subproceso de proceso 94 activo. Los paquetes en el subproceso de proceso 94 se procesan todos y el subproceso de procesador cedió el paso NoopTime veces. (“NoopTime” se refiere a un lazo vacío, que no hace más que ceder el paso en el subproceso actual. NoopTime todavía consume tiempo de CPU para ejecutar el lazo vacío. Sin embargo, con el fin de evitar un uso de CPU del 100%, se configura un tiempo Noop máximo, después de eso, el subproceso pasará al modo dormido. El beneficio es que si hay paquetes entrantes durante Noop, se tomará inmediatamente para su procesamiento.
En referencia ahora a la figura 4 se representa un método para retirar paquetes de una cola a otra cola, en forma de un diagrama de flujo y se indica generalmente en 400. El método 400 puede realizarse por el subproceso de escritor
84. (El subproceso de escritor 84 también puede describirse como un subproceso de veredicto).
El subproceso de escritor 84 está configurado para leer paquetes de la cola 86 y reenviar esos paquetes a la cola
78. Tal reenvío de la cola 86 se producirá normalmente después de que un paquete dado se haya procesado por un subproceso de procesador 94, pero también se reenviará en cualquier caso después de un periodo de tiempo de expiración predefinido en caso de que un subproceso de procesador 94 no procese un paquete particular dentro de ese periodo de tiempo de expiración predefinido. En el escenario de tiempo de expiración, en una presente realización el subproceso de escritor 84 se configurará para realizar una suposición acerca de cómo ese paquete particular se habría procesado. Por ejemplo, en el escenario de “reenvío” o “abandono” de un entorno de telecomunicación, el subproceso de escritor 84 puede configurarse para suponer que un paquete particular se procesó para ser un paquete de “reenvío”.
En una presente realización, el subproceso de escritor 84 está configurado para seleccionar un periodo de tiempo de expiración basándose en cuántas veces el subproceso 84 cede el paso para determinar cuándo el subproceso de escritor 84 debe expirar. Aunque es posible el uso de un valor de tiempo absoluto para el periodo de tiempo de expiración, se prefiere actualmente evitar un valor de tiempo absoluto ya que el coste de incluso una pérdida de un nanosegundo puede ser demasiado grande.
El subproceso de escritor 84 está configurado de modo que después de un intento de leer un paquete por el subproceso de escritor 84 desde la cola 86 da como resultado que el subproceso de escritor 84 determina que el paquete no se ha procesado, entonces el subproceso de escritor 84 supondrá que el paquete se procesará dentro de muy poco tiempo por el subproceso de procesador 94. Los subprocesos 84 y 94 están configurados para ejecutarse simultáneamente y hay una pluralidad de subprocesos 94 que se ejecutan simultáneamente. Cuando el subproceso 84 lee un paquete y éste no se ha procesado, entonces ese paquete podría procesarse por el subproceso 94 al mismo tiempo o podría estar en la cola 86 a la espera de que el siguiente subproceso 94 lo tome y lo procese. Por consiguiente, se supone que el paquete debe procesarse por el subproceso 94 muy pronto. Sin embargo, en caso de que el subproceso 94 sea lento, y se tarde mucho tiempo en procesar paquetes en el subproceso 94, entonces el subproceso 84 “expirará” e ignorará la etiqueta procesada del paquete y continuará.
En una presente realización, la aplicación 70 está configurada de modo que hay un subproceso de escritor 84 para corresponder con el único subproceso de lector 82. Tal configuración se realiza de modo que se garantiza que el subproceso de escritor 84 retirará de la cola 86 en el mismo orden en que el subproceso de lector 82 dispone en la cola 86.
El subproceso de escritor 84 está configurado para entrar en un modo de espera/dormido si la cola 86 está vacía. El subproceso de escritor 84 recibirá notificación cuando la cola 86 se vuelva no vacía.
El subproceso de escritor 84 también está, en una presente realización, configurado para retirar paquetes de la cola 86 en un modo por lotes. En los modos por lotes, se retiran una pluralidad de paquetes de la cola 86 en lugar de retirar cada paquete de la cola 86 uno cada vez.
La etapa 405 de la figura 4 representa el comienzo de las etapas de retirada de la cola, o bien uno cada vez o bien en modo por lotes, aunque, tal como se indica, el modo por lotes es opcional.
La etapa 410 de la figura 4 representa la determinación por el subproceso de escritor 84 en cuanto a si hay o no en realidad algún paquete disponible para retirarse de la cola 86.
La etapa 415 representa el estado de espera o dormido que adoptará el subproceso de escritor 84 si no hay paquetes disponibles según se determine en la etapa 405.
La etapa 420 representa el comienzo de un lazo mediante el cual los paquetes se retiran realmente de la cola 86. En la etapa 425 se hace una determinación en cuanto a si se ha procesado o no un paquete particular en la cola 86. Si no, entonces el método 400 avanza a la etapa 430 en la que el subproceso de escritor 84 cede el paso. En la etapa 435, si no se logra una cesión de paso máxima entonces el método vuelve a la etapa 425. Si en la etapa 435 se logra una cesión de paso máxima, entonces la cesión de paso expira y el método avanza a la etapa 440. La etapa 440 también puede alcanzarse directamente tras una determinación afirmativa de que un paquete dado en la cola 86 se ha procesado en la etapa 425. Obsérvese que si el método 400 alcanza la etapa 440 a través de la etapa 435, entonces el subproceso de escritor 84 hará una suposición en cuanto a cómo se ha procesado el paquete. (Por ejemplo, el subproceso de escritor 84 puede suponer que los paquetes que no se han procesado son todos paquetes de “reenvío” y ninguno son paquetes de “abandono”).
Por tanto, en la etapa 440, independiente de cómo se alcance la etapa 440; el/los paquete(s) se retiran de la cola 86 y se ponen realmente en la cola 78, con un veredicto particular (por ejemplo, “reenviar” o “abandonar”) unido al mismo.
La etapa 445 representa una terminación del lazo comenzado en la etapa 420, con lo cual el lazo en la etapa 420 volverá a comenzará hasta que ya no haya paquetes disponibles para retirar de la cola 86.
En la etapa 450, hay una confirmación de que los paquetes se han retirado de la cola avanzando WRITHEAD.
En referencia ahora a la figura 5 se representa un método para procesar paquetes en una cola tal como la cola 86, en forma de un diagrama de flujo y se indica generalmente en 500. El método 400 puede realizarse por los subprocesos 94 conjuntamente con el controlador de subprocesos 90.
En la etapa 502, la variable Qsize para el controlador de subprocesos 94 se ajusta al tamaño de la cola 86.
En la etapa 504, se realiza una determinación en cuanto a si el tamaño de la cola ha excedido un valor máximo. Si la determinación en la etapa 504 es ‘sí’, entonces el método 500 avanza a la etapa 506, punto en el cual se realiza una retirada de la cola por lotes según el método 400. Por tanto, en la etapa 506, el proceso 94 notificará al subproceso de escritor 84 que realice una retirada de la cola por lotes según el método 400. En la etapa 508, se ajusta una etiqueta para indicar que un paquete particular se ha procesado. La etapa 508 es la última etapa en el proceso 94 para indicar que se procesan paquetes. Obsérvese, sin embargo, que la etiqueta procesada podría ajustarse después del procesamiento normal, o podría ajustarse si el sistema está congestionado y se ignoran paquetes sin el procesamiento.
En la etapa 510 se determina si se ha producido suficiente retirada de la cola con el fin de llevar la variable Qsize por debajo de un valor mínimo predefinido. Si es así, entonces el método 500 avanza desde la etapa 510 a la etapa 502. Si no, entonces el método 500 entra en un ciclo desde la etapa 510 de vuelta a la etapa 506.
Volviendo a la etapa 504, si se realiza una determinación negativa, entonces el método 500 avanza desde la etapa 504 a la 512, momento en el cual se realiza una determinación en cuanto a si hay alguna capacidad de procesamiento disponible por parte de los subprocesos 94. Una determinación de este tipo puede basarse en si Qsize es inferior a un umbral. Los paquetes disponibles para su procesamiento, activeWorkers y etiqueta activa se usan para determinar cuándo el subproceso 94 debe pasar al modo dormido. Se trata de una determinación en dos etapas, en la que la primera etapa es usar QSize para determinar si el sistema está demasiado ocupado, y la segunda etapa es determinar cuántos procesos 94 se requieren para procesar paquetes disponibles en la cola 86 o si todos los subprocesos 94 ya están ocupados en el procesamiento.
Si la determinación en la etapa 512 es afirmativa entonces el método 500 avanza desde la etapa 512 a la etapa 514, momento en el cual se realiza una retirada de la cola por lotes según el método 400. Después de la etapa 514 el método 500 avanza a la etapa 518 y se devuelve AVAIL.
Si la determinación en la etapa 512 es negativa entonces el método 500 avanza directamente a la etapa 516 pasando de largo la etapa 514.
En la etapa 516 se realiza una determinación (“AVAIL”) en cuanto a cuántos paquetes se han devuelto de la cola 86 y si hay algún subproceso de procesador 94 disponible. Por ejemplo, se supone que un tamaño de lote es cien, y hay más de cien paquetes disponibles en la cola 86. Por consiguiente, AVAIL será cien, y PRODSIZE será más de cien. (PRODSIZE significa cuántos paquetes están disponibles en la cola 86 listos para su procesamiento. PRODSIZE difiere de QSize que es cuántos paquetes están disponibles en 86 listos para su procesamiento o veredicto). En este caso, el subproceso actual 94 no puede procesar todos los paquetes, y se necesitan más subprocesos 94 para procesar todos los paquetes.
Si en la etapa 516 se determina que no hay disponibilidad de subprocesos de procesador 94 (es decir, Avail = 0) entonces el método 500 avanza desde la etapa 516 a la etapa 518.
En la etapa 518 se realiza una determinación que comprueba si un subproceso 94 actual es el único subproceso activo que procesa paquetes y ese subproceso 94 particular no ha estado inactivo durante un periodo de tiempo definido.
Si la determinación en la etapa 518 es “sí” entonces el método 500 avanza desde la etapa 518 a la etapa 520, entonces se realiza una retirada de la cola por lotes según el método 400 y entonces el método 500 avanza desde la etapa 520 de vuelta a la etapa 516.
Si la determinación en la etapa 520 es “no” entonces el método 500 avanza desde la etapa 518 a la etapa 522. En la etapa 522 se realiza una determinación basándose en las mismas condiciones que se describieron previamente en relación a la etapa 512.
Si la determinación en la etapa 522 es “sí” entonces el método 500 avanza desde la etapa 522 a la etapa 520 y se realiza etapa 520 tal como se comentó previamente.
Si la determinación en la etapa 522 es “no” entonces el método 500 avanza desde la etapa 522 a la etapa 524. En la etapa 524 se realiza una determinación en cuanto a si hay más paquetes disponibles en la cola 86 para su procesamiento y el subproceso 94 actual está todavía activo en ejecución. Si es así, se pasa al modo dormido.
Además, si la determinación en la etapa 524 es “sí” entonces el método 500 avanza desde la etapa 524 a la etapa 526 y la variable de estado active worker se ajusta a falso y entonces en la etapa 528 la variable de worker waiting se ajusta a verdadero. Estos ajustes se usan durante determinaciones posteriores realizadas en la etapa 518 y etapa 524 y 530. Desde la etapa 530 el método 500 entra en un ciclo de vuelta a la etapa 516.
Si la determinación en la etapa 524 es “no” entonces el método 500 avanza desde la etapa 524 a la etapa 532.
Volviendo ahora a la etapa 516, si en la etapa 516 se determina que hay paquetes disponibles para su procesamiento (es decir, Avail <>0) entonces el método 500 avanza desde la etapa 516 a la etapa 538. En la etapa 538 se realiza una determinación en cuanto a si un subproceso de procesador 94 dado está activo. Si no es así, entonces el método avanza desde la etapa 538 a la etapa 540, momento en el cual la variable de active worker se aumenta y se ajusta una etiqueta que indica el subproceso de procesador 94 dado está ahora activo.
La etapa 542 se alcanza o bien directamente por una determinación de “sí” desde la etapa 538 o indirectamente a través de la etapa 540. Independientemente de cómo se alcance la etapa 542, el procesamiento real de un paquete dado se realiza en la etapa 542 por el subproceso de procesador 94 particular. Nuevamente, tal como se describió en el ejemplo de telecomunicación previo, el procesamiento realizado puede ser una determinación en cuanto a si un paquete particular debe “abandonarse” o “reenviarse” a otro elemento de red para su procesamiento adicional. Por tanto, el subproceso de procesador 94 puede interactuar con otros elementos de red de telecomunicación, tales como información de suscripción y/o facturación asociada con un abonado particular con el fin de determinar si un paquete particular debe “abandonarse” o “reenviarse”. Finalmente, el subproceso de escritor 84 pasará el paquete y el veredicto particular (“abandonar” o “reenviar”) a lo largo de la cola 78 en el momento apropiado según las enseñanzas en el presente documento.
En la etapa 544 se ajusta una etiqueta en la cola 86 que indica que un paquete particular se ha procesado. Esta etiqueta se usa en la etapa 425 del método 400 tal como se comentó previamente.
En la etapa 546 el lazo que comenzó por la etapa 516 se termina y el método 500 entra en un ciclo de vuelta a la etapa 502.
Cuando la aplicación 70 está operando, los paquetes pueden procesarse sin necesidad de bloquear la cola 86. A continuación se reproducen en varias tablas ejemplos sencillos de cómo los paquetes en la cola 74 puede
procesarse para su eventual escritura en la cola 76 a medida que pasan a través de la cola 86.
Procesamiento de paquete normal sin usar el modo por lotes en cola
Procesamiento de paquete normal con modo por lotes. (Tamaño de lote = 2).
Procesamiento de paquete si el proceso de veredicto ha retirado de la cola el paquete antes de que se procese el paquete.
El procesamiento de paquete expira si el subproceso de procesador no es lo suficientemente rápido para procesar el paquete.
Aunque lo anterior proporciona determinadas realizaciones, debe entenderse que tales realizaciones son meramente a modo de ejemplo y que se contemplan variaciones, combinaciones y/o subconjuntos de las mismas.
Claims (13)
- REIVINDICACIONES1. Dispositivo informático (50) que comprende:una memoria de acceso aleatorio;una memoria de sólo lectura; yuna unidad de procesamiento central interconectada con dicha memoria de acceso aleatorio y dicha memoria de sólo lectura mediante un bus;estando configurada dicha unidad de procesamiento central para ejecutar una pluralidad de instrucciones de programación (70) que representan una pluralidad de objetos de software, comprendiendo dichos objetos de software una cola de lectura (74) para almacenar paquetes no procesados;incluyendo además dichos objetos de software una cola sin bloqueo (86) y un subproceso de lector (82) para leer cada uno de dichos paquetes no procesados de dicha cola de lectura a dicha cola sin bloqueo si dicha cola sin bloqueo (86) no está llena;incluyendo además dichos objetos de software una pluralidad de subprocesos de procesador (94), cada subproceso de procesador para realizar una operación en al menos uno de dichos paquetes no procesados en dicha cola sin bloqueo (86);incluyendo además dichos objetos de software una cola de escritura (78) y un subproceso de escritor (84) para escribir paquetes que se han procesado por dicha pluralidad de subprocesos de procesador (94) de dicha cola sin bloqueo (86) a dicha cola de escritura (78).
-
- 2.
- Dispositivo (50) según la reivindicación 1, en el que dicha operación incluye una determinación en cuanto a si cada uno de dichos paquetes debe abandonarse o reenviarse y dicho subproceso de escritor (84) está configurado para escribir dicha determinación en dicha cola de escritura (78).
-
- 3.
- Dispositivo (50) según la reivindicación 2, en el que dichos paquetes no procesados provienen de un terminal móvil (54) y están destinados a un servidor de destino (58).
-
- 4.
- Dispositivo (50) según la reivindicación 2, en el que se indica mediante dicha determinación que los paquetes que no están autorizados deben abandonarse.
-
- 5.
- Dispositivo (50) según la reivindicación 2, en el que se indica mediante dicha determinación que los paquetes que están autorizados deben reenviarse para su entrega a dicho servidor de destino.
-
- 6.
- Dispositivo (50) según la reivindicación 2, en el que determinados servicios están permitidos mientras que otros servicios no están permitidos y dicha operación incluye una determinación del tipo de servicios asociados con un paquete particular.
-
- 7.
- Dispositivo (50) según la reivindicación 2, en el que dichos objetos de software comprenden adicionalmente un temporizador mediante el cual si dicho al menos un subproceso de procesador no procesa uno de dichos paquetes no procesados según un criterio de tiempo de expiración definido, entonces dicho subproceso de escritor supone que dicha determinación es que dicho paquete debe reenviarse.
-
- 8.
- Método para procesar dichos paquetes en un dispositivo informático (50) que tiene una unidad de procesamiento central, una memoria de acceso aleatorio y una memoria de sólo lectura interconectadas mediante un bus, estando configurada dicha unidad de procesamiento central para ejecutar una pluralidad de instrucciones de programación (70) que representan una pluralidad de objetos de software, comprendiendo dichos objetos de software una cola de lectura (74), un subproceso de lector (82), una cola sin bloqueo (86), una pluralidad de subprocesos de procesador (94), un subproceso de escritor (84) y una cola de escritura (78); comprendiendo el método:
almacenar paquetes no procesados en dicha cola de lectura (74);leer, a través de dicho subproceso de lector (82), paquetes no procesados de dicha cola de lectura y, para cada uno de dichos paquetes no procesados, disponer en cola dichos paquetes no procesados en dicha cola sin bloqueo (86) si dicha cola sin bloqueo no está llena;realizar una operación en al menos uno de dichos paquetes no procesados en dicha cola sin bloqueo (86) a través de al menos uno de dichos subprocesos de procesador (94);escribir, a través de dicho subproceso de escritor (84), paquetes que se han procesado de dicha cola sin bloqueo a dicha cola de escritura (78). -
- 9.
- Método según la reivindicación 8, en el que dicha operación incluye una determinación en cuanto a si cada
uno de dichos paquetes debe abandonarse o reenviarse y dicho subproceso de escritor está configurado para escribir dicha determinación en dicha cola de escritura. -
- 10.
- Método según la reivindicación 9, en el que dichos paquetes no procesados provienen de un terminal móvil
(54) y están destinados a un servidor de destino (58).5 11. Método según la reivindicación 9, en el que se indica mediante dicha determinación que los paquetes que no están autorizados deben abandonarse. -
- 12.
- Método según la reivindicación 9, en el que se indica mediante dicha determinación que los paquetes que están autorizados deben reenviarse para su entrega ha dicho servidor de destino.
-
- 13.
- Método según la reivindicación 12, en el que determinados servicios están permitidos mientras que otros
10 servicios no están permitidos y dicha operación incluye una determinación del tipo de servicios asociados con un paquete particular. - 14. Método según la reivindicación 10, en el que dichos objetos de software comprenden adicionalmente un temporizador mediante el cual si dicho al menos un subproceso de procesador no procesa uno de dichos paquetes no procesados según un criterio de tiempo de expiración definido entonces dicho subproceso de15 escritor supone que dicha determinación es que dicho paquete debe reenviarse.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/781,820 US8645960B2 (en) | 2007-07-23 | 2007-07-23 | Method and apparatus for data processing using queuing |
US781820 | 2007-07-23 | ||
PCT/CA2008/001329 WO2009012572A2 (en) | 2007-07-23 | 2008-07-18 | Method and apparatus for data processing using queuing |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2381233T3 true ES2381233T3 (es) | 2012-05-24 |
Family
ID=40281872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES08783243T Active ES2381233T3 (es) | 2007-07-23 | 2008-07-18 | Método y aparato para procesamiento de datos usando el campo de disposición en cola |
Country Status (6)
Country | Link |
---|---|
US (1) | US8645960B2 (es) |
EP (1) | EP2171934B1 (es) |
AT (1) | ATE543308T1 (es) |
CA (1) | CA2697994C (es) |
ES (1) | ES2381233T3 (es) |
WO (1) | WO2009012572A2 (es) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090073981A1 (en) * | 2007-09-18 | 2009-03-19 | Sensory Networks, Inc. | Methods and Apparatus for Network Packet Filtering |
US9069566B1 (en) * | 2012-02-22 | 2015-06-30 | Hudku Technosoft Private Limited | Implementation of a multiple writer single reader queue in a lock free and a contention free manner |
CA2819539C (en) * | 2013-06-21 | 2021-01-12 | Ibm Canada Limited - Ibm Canada Limitee | Dynamic management of integration protocols |
US9953006B2 (en) | 2015-06-23 | 2018-04-24 | International Business Machines Corporation | Lock-free processing of stateless protocols over RDMA |
US10108466B2 (en) | 2015-06-29 | 2018-10-23 | International Business Machines Corporation | Optimizing the initialization of a queue via a batch operation |
CN108170758A (zh) * | 2017-12-22 | 2018-06-15 | 福建天泉教育科技有限公司 | 高并发数据存储方法及计算机可读存储介质 |
CN110554924A (zh) * | 2019-07-30 | 2019-12-10 | 视联动力信息技术股份有限公司 | 一种报文处理方法和装置 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995026089A1 (en) * | 1994-03-18 | 1995-09-28 | Research In Motion Limited | Method and apparatus for maximizing the transmission of data in a wireless data communication network |
US5721914A (en) * | 1995-09-14 | 1998-02-24 | Mci Corporation | System and method for hierarchical data distribution |
US5638448A (en) * | 1995-10-24 | 1997-06-10 | Nguyen; Minhtam C. | Network with secure communications sessions |
US6201789B1 (en) * | 1996-12-30 | 2001-03-13 | Compaq Computer Corporation | Network switch with dynamic backpressure per port |
US6240140B1 (en) * | 1997-02-24 | 2001-05-29 | Picturetel Corporation | Channel aggregation having low latency and overhead |
US6317837B1 (en) * | 1998-09-01 | 2001-11-13 | Applianceware, Llc | Internal network node with dedicated firewall |
US6907470B2 (en) * | 2000-06-29 | 2005-06-14 | Hitachi, Ltd. | Communication apparatus for routing or discarding a packet sent from a user terminal |
US6862282B1 (en) * | 2000-08-29 | 2005-03-01 | Nortel Networks Limited | Method and apparatus for packet ordering in a data processing system |
GB2368247A (en) * | 2000-10-18 | 2002-04-24 | Power X Ltd | Method and apparatus for regulating process state control messages |
US6941370B2 (en) * | 2000-12-20 | 2005-09-06 | International Business Machines Corporation | Dynamic proxy reconfiguration system and method to support sharing of extra capacity |
US7424027B2 (en) | 2001-01-09 | 2008-09-09 | Lucent Technologies Inc. | Head of line blockage avoidance system and method of operation thereof |
KR100469706B1 (ko) * | 2001-03-06 | 2005-02-02 | 삼성전자주식회사 | 이동통신시스템의 패킷 서비스 장치 및 방법 |
US20020157090A1 (en) * | 2001-04-20 | 2002-10-24 | Anton, Jr. Francis M. | Automated updating of access points in a distributed network |
US7020143B2 (en) * | 2001-06-18 | 2006-03-28 | Ericsson Inc. | System for and method of differentiated queuing in a routing system |
US7512780B1 (en) * | 2001-08-31 | 2009-03-31 | Verizon Corporate Services Group, Inc. | Packet-parallel high performance cryptography systems and methods |
US7360217B2 (en) * | 2001-09-28 | 2008-04-15 | Consentry Networks, Inc. | Multi-threaded packet processing engine for stateful packet processing |
US6977943B2 (en) * | 2001-10-04 | 2005-12-20 | Tropic Networks Inc. | Method and system for traffic management in packet networks using random early marking |
US20030088721A1 (en) * | 2001-11-05 | 2003-05-08 | Sharma Debendra Das | Method and system for controlling flow of ordered, pipelined transactions between intercommunicating electronic devices |
US7362749B2 (en) * | 2002-03-01 | 2008-04-22 | Verizon Business Global Llc | Queuing closed loop congestion mechanism |
US7290054B2 (en) * | 2002-04-26 | 2007-10-30 | Redback Networks Inc. | Dynamic modification of a subscriber connection |
US7206857B1 (en) * | 2002-05-10 | 2007-04-17 | Altera Corporation | Method and apparatus for a network processor having an architecture that supports burst writes and/or reads |
US7339943B1 (en) * | 2002-05-10 | 2008-03-04 | Altera Corporation | Apparatus and method for queuing flow management between input, intermediate and output queues |
US7296067B2 (en) * | 2002-12-19 | 2007-11-13 | Research In Motion Limited | Wireless/LAN router queuing method and system |
US7379460B2 (en) | 2003-06-06 | 2008-05-27 | Intel Corporation | Packet processing system |
US20050114700A1 (en) * | 2003-08-13 | 2005-05-26 | Sensory Networks, Inc. | Integrated circuit apparatus and method for high throughput signature based network applications |
US7590058B1 (en) * | 2003-12-09 | 2009-09-15 | At&T Intellectual Property Ii, L.P. | Method and apparatus for controlling the quality of service of voice and data services over variable bandwidth access networks |
US7562364B2 (en) * | 2003-12-30 | 2009-07-14 | Intel Corporation | Adaptive queue scheduling |
US7474661B2 (en) * | 2004-03-26 | 2009-01-06 | Samsung Electronics Co., Ltd. | Apparatus and method for distributing forwarding table lookup operations among a plurality of microengines in a high-speed routing node |
US7602720B2 (en) | 2004-10-22 | 2009-10-13 | Cisco Technology, Inc. | Active queue management methods and devices |
US7738424B2 (en) * | 2004-11-12 | 2010-06-15 | Nortel Networks | Clientless mobile subscribers with seamless roaming over scalable wide area wireless networks |
US20070110011A1 (en) * | 2005-11-14 | 2007-05-17 | Joakim Nelson | Mobile communication apparatus for operation in a wireless local area network |
US20070121499A1 (en) | 2005-11-28 | 2007-05-31 | Subhasis Pal | Method of and system for physically distributed, logically shared, and data slice-synchronized shared memory switching |
US20070127480A1 (en) * | 2005-12-02 | 2007-06-07 | Via Technologies Inc. | Method for implementing packets en-queuing and de-queuing in a network switch |
US20080066066A1 (en) * | 2006-09-08 | 2008-03-13 | Macpherson Michael B | Task queue suitable for processing systems that use multiple processing units and shared memory |
-
2007
- 2007-07-23 US US11/781,820 patent/US8645960B2/en not_active Expired - Fee Related
-
2008
- 2008-07-18 AT AT08783243T patent/ATE543308T1/de active
- 2008-07-18 WO PCT/CA2008/001329 patent/WO2009012572A2/en active Application Filing
- 2008-07-18 CA CA2697994A patent/CA2697994C/en not_active Expired - Fee Related
- 2008-07-18 ES ES08783243T patent/ES2381233T3/es active Active
- 2008-07-18 EP EP08783243A patent/EP2171934B1/en not_active Not-in-force
Also Published As
Publication number | Publication date |
---|---|
WO2009012572A3 (en) | 2009-05-07 |
WO2009012572A2 (en) | 2009-01-29 |
EP2171934A2 (en) | 2010-04-07 |
US8645960B2 (en) | 2014-02-04 |
EP2171934A4 (en) | 2010-08-04 |
ATE543308T1 (de) | 2012-02-15 |
CA2697994C (en) | 2015-12-29 |
US20090031306A1 (en) | 2009-01-29 |
EP2171934B1 (en) | 2012-01-25 |
CA2697994A1 (en) | 2009-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2381233T3 (es) | Método y aparato para procesamiento de datos usando el campo de disposición en cola | |
US20240160584A1 (en) | System and method for facilitating dynamic command management in a network interface controller (nic) | |
US6904507B2 (en) | Buffer management architecture and method for an infiniband subnetwork | |
US8861515B2 (en) | Method and apparatus for shared multi-bank memory in a packet switching system | |
US7913034B2 (en) | DRAM access command queuing | |
US8099521B2 (en) | Network interface card for use in parallel computing systems | |
US7555579B2 (en) | Implementing FIFOs in shared memory using linked lists and interleaved linked lists | |
US6618390B1 (en) | Method and apparatus for maintaining randomly accessible free buffer information for a network switch | |
US20150188850A1 (en) | Ultra Low Latency Network Buffer Storage | |
JP4894670B2 (ja) | スイッチの出力キュー構造をバイパスする方法、論理装置及びシステム | |
EP0617368A1 (en) | Arbitration process for controlling data flow through an I/O controller | |
KR20170012400A (ko) | 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들 | |
US10397144B2 (en) | Receive buffer architecture method and apparatus | |
US7447872B2 (en) | Inter-chip processor control plane communication | |
US7675930B2 (en) | Chip circuit for combined and data compressed FIFO arbitration for a non-blocking switch | |
JP4248661B2 (ja) | バス・ブリッジ | |
JP2004242334A (ja) | 高速交換環境でマルチキャストするシステム、方法及び論理 | |
KR100821125B1 (ko) | 매체접근제어 하드웨어 및 소프트웨어 처리장치 간의버퍼관리 및 수신 인터럽트 처리를 위한 장치 및 그 방법 | |
JP2010035245A (ja) | 高速交換環境でマルチキャスティングするシステム、方法及び論理 | |
US20240163222A1 (en) | Virtual Channel Buffer Bypass | |
CN110727632A (zh) | 一种数据处理方法和装置 | |
CN117914811A (zh) | 用于网络中的输入输出节流的系统及方法 | |
JP2012103946A (ja) | 要求転送装置及び要求転送方法 |