ES2237667T3 - Adaptador de red. - Google Patents

Adaptador de red.

Info

Publication number
ES2237667T3
ES2237667T3 ES02712095T ES02712095T ES2237667T3 ES 2237667 T3 ES2237667 T3 ES 2237667T3 ES 02712095 T ES02712095 T ES 02712095T ES 02712095 T ES02712095 T ES 02712095T ES 2237667 T3 ES2237667 T3 ES 2237667T3
Authority
ES
Spain
Prior art keywords
memory
fcb
control
unit
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES02712095T
Other languages
English (en)
Inventor
Jean Louis Calvignac
Marco C/O Ibm United Kingdom Ltd. Heddes
Joseph Franklin Logan
Fabrice Jean Verplanken
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2237667T3 publication Critical patent/ES2237667T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Liquid Developers In Electrophotography (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Computer And Data Communications (AREA)
  • Glass Compositions (AREA)

Abstract

Un sistema que comprende: - un procesador (100) configurado para tratar cuadros de datos, cuyo procesador comprende: - una unidad (110) de flujo de datos configurada para recibir y transmitir dichos cuadros de datos, y en la que cada uno de dichos cuadros de datos tiene un bloque de control de cuadro asociado, y cada uno de dichos bloques de control de cuadro comprende unos bloques de control primero y segundo; - una primera memoria (210) acoplada a dicha unidad de flujo de datos, cuya primera memoria comprende una primera unidad de control de memoria intermedia de cuadro, y dicha primera unidad de control de memoria intermedia de cuadro almacena información de campo para dicho primer bloque de control de dicho bloque de control de cuadro; y - un planificador de ejecución (130) acoplado a dicha unidad de flujo de datos, cuyo planificador está configurado para planificar cuadros de datos recibidos por dicha unidad de flujo de datos, y en el que dicho planificador comprende una segunda memoria (224), la cual comprende una segunda unidad de control de memoria intermedia de cuadro, y dicha segunda unidad de control de memoria intermedia de cuadro almacena información de campo para dicho segundo bloque de control del citado bloque de control de cuadro.

Description

Adaptador de red.
Campo técnico de la invención
La presente invención se refiere al campo de un sistema de comunicaciones de operaciones en la red, y más particularmente a la reducción al mínimo de los accesos a memorias.
Antecedentes de la invención
Una red de conmutación o transmisión por paquetes tiene unos puntos de conmutación o nudos para la transmisión de datos entre transmisores y receptores conectados a la red. La conmutación efectuada por estos puntos de conmutación es, en efecto, la acción de pasar paquetes o "cuadros" de datos recibidos en un punto de conmutación o nudo, a otro nudo en la red. Dichas acciones de conmutación son los medios mediante los cuales, datos de comunicación son movidos a través de la red de conmutación de paquetes.
Cada nudo puede comprender un procesador de paquete configurado para tratar paquetes o cuadros de datos. Cada cuadro de datos puede estar asociado a un Bloque de Control de Cuadro (FCB) configurado para describir el cuadro asociado de datos. Típicamente, los FCBs comprenden varios campos de información que son suministrados por una memoria, por ejemplo, Memoria de Acceso Aleatorio Estática con Velocidad de Transmisión de Datos Cuádruple (QDR SRAM), en el procesador del paquete. Es decir, que los campos de información en los FCBs son obtenidos mediante el acceso a la memoria, por ejemplo, una QDR SRAM en el procesador del paquete.
Por tanto, sería deseable limitar el número de campos en los bloques de control de campo que requieren información, para reducir así el número de accesos a la memoria y mejorar la eficiencia del espacio de dicha memoria, es decir, la eficiencia de la anchura de banda de la memoria.
La solicitud de EP núm. EP 0797 335 A2 describe un adaptador de red con el cual los datos transmitidos y recibidos son almacenados en zonas de memoria intermedias definidas en unas memorias primera y segunda de un sistema residente en una red. Las zonas de memoria intermedia son señaladas por múltiples anillos descriptores, que están almacenados también en las memorias. Las dos memorias residen en enlaces comunes separados conectados a un enlace común que contiene un procesador. Dicho procesador comunica con una u otra memoria mediante un protocolo de establecimiento de comunicación. Los datos recibidos entrantes en el sistema son dispersados entre descriptores múltiples, en función del código de características portado por el cuadro, por ejemplo, en un campo de control de cuadro. El tamaño del primer descriptor, menor que el de los otros, es programado para corresponder al tamaño del encabezamiento de cada cuadro. La sincronización entre encabezamientos y datos de un cuadro es mantenida mediante un número de cuadro almacenado en cada descriptor. Otro aspecto evita el bloqueo del camino de recepción al producirse el bloqueo de un anillo descriptor de recepción.
Exposición de la invención
La presente invención proporciona un Bloque de Control de Campo (FCB) lógico representado por unos bloques de control primero y segundo, en el que el primer bloque de control puede estar asociado a una primera memoria, y el segundo bloque de control puede estar asociado a una segunda memoria. Cada memoria, es decir, las memorias primera y segunda, pueden estar asociadas también a una unidad de flujo de datos y al planificador de ejecución del procesador de paquete, respectivamente. Una unidad de flujo de datos del procesador de paquete puede estar configurada para recibir y transmitir cuadros de datos. Un planificador de ejecución del procesador de paquete puede estar configurado para planificar la transmisión de los cuadros de datos a otro conmutador o puerta en una red de conmutación de paquetes. Cuando el FCB se halla en una cola de la unidad de flujo de datos, la información puede ser almacenada en los campos del primer bloque de control, y no en los del segundo bloque de control. Dado que a la segunda memoria no se accede para leer o escribir en los campos del segundo bloque de control, se mejora así la eficiencia de la anchura de banda de dicha segunda memoria. Cuando el FCB se halla en una cola del planificador de ejecución, la información puede ser almacenada en los campos del segundo bloque de control, y no en los campos del primer bloque de control. Dado que a la primera memoria no se accede para leer o escribir en los campos del primer bloque de control, se mejora así la eficiencia de la anchura de banda de la primera memoria.
De acuerdo con un aspecto, la presente invención proporciona un sistema que comprende: un procesador configurado para tratar cuadros de datos, cuyo procesador comprende: una unidad de flujo de datos configurada para recibir y transmitir dichos cuadros de datos, en la que cada uno de dichos cuadros de datos tiene un bloque de control de cuadro asociado, y cada uno de dichos bloques de control de cuadro comprende un primero y un segundo bloque de control; una primera memoria acoplada a dicha unidad de flujo de datos, cuya primera memoria comprende una primera unidad de control de memoria intermedia de cuadro, y en la que dicha primera unidad de control de memoria intermedia de cuadro almacena información de campo para dicho primer bloque de control del bloque de control de cuadro; y un planificador de ejecución acoplado a dicha unidad de flujo de datos, cuyo planificador está configurado para planificar cuadros de datos recibidos por dicha unidad de flujo de datos, y en el que dicho planificador comprende una segunda memoria la cual comprende a su vez una segunda unidad de control de memoria intermedia de cuadro, cuya segunda unidad de control de memoria intermedia de cuadro almacena información para dicho segundo bloque de control del citado bloque de control de cuadro.
Preferiblemente, la unidad de flujo de datos comprende una pluralidad de colas, en la que uno o más de dichos bloques de control de cuadro se halla en una de dicha pluralidad de colas. En una realización preferida, la información en los campos de dicho primer bloque de control de uno o más de los citados bloques de control de cuadro que se hallan en una de dicha pluralidad de colas de la citada unidad de flujo de datos, es almacenada en dicha primera unidad de control de memoria intermedia de cuadro de la citada primera memoria.
De manera apropiada, el planificador de ejecución comprende una primera cola en la que uno o más de dichos bloques de control de cuadro se hallan en la citada primera cola. Más apropiadamente, la información en los campos de dicho segundo bloque de control de uno o más de los citados bloques de control de campo que se hallan en dicha primera cola, es almacenada en la citada segunda unidad de control de memoria intermedia de cuadro de dicha segunda memoria.
De acuerdo con otro aspecto, la presente invención proporciona un método para reducir el número de accesos a la memoria para obtener la información deseada en los bloques de control de cuadro, en el que cada uno de dichos bloques de control de cuadro comprende un primer bloque de control de cuadro y un segundo bloque de control, cuyo primer bloque de control está asociado a una primera memoria, y el segundo bloque de control está asociado a una segunda memoria, y en el que dicha primera memoria comprende una primera unidad de control de memoria intermedia de cuadro, y dicha primera unidad de control de memoria intermedia de cuadro almacena la información de campo para dicho primer bloque de control del citado bloque de control de cuadro, y cuya segunda memoria comprende una segunda unidad de control de memoria intermedia de cuadro, y en el que dicha segunda unidad de control de memoria intermedia de cuadro almacena información de campo para dicho segundo bloque de control del citado bloque de control de cuadro, y cuyo método comprende las operaciones de: acceder a dicha primera memoria para leer o escribir la información en campos de dicho primer bloque de control de uno o más de los citados bloques de control de cuadro; y acceder a dicha segunda memoria para leer o escribir la información en los campos de dicho segundo bloque de control de uno o más de los citados bloques de control de cuadro.
Se prefiere que uno o más de dichos bloques de control de cuadro se hallen en una de la pluralidad de colas en la unidad de flujo de datos, y cuya unidad de flujo de datos está asociada a dicha primera memoria. Más preferiblemente, a la primera memoria se accede para leer o escribir la información en campos de dicho primer bloque de control de uno o más de dichos bloques de control de cuadro, cuando uno o más bloques de control de cuadro se hallan en una de dicha pluralidad de colas en la citada unidad de flujo de datos. Aún más preferiblemente, uno o más de dichos bloques de control de cuadro se hallan en una cola de un planificador de ejecución, y éste está asociado a dicha segunda memoria. De manera adecuada, a la segunda memoria se accede para leer o escribir la información en campos de dicho segundo bloque de control de uno o más de dichos bloques de control de cuadro, cuando los citados uno o más bloques de control de cuadro se hallan en la citada cola de dicho planificador.
De acuerdo con otro aspecto más, la presente invención proporciona un producto de programa de ordenador que comprende medios de código de programa destinados a ejecutar las operaciones del método antes descrito, cuando dicho programa es puesto en marcha en un ordenador.
Breve descripción de los dibujos
Seguidamente se describirá la invención, tan sólo a título de ejemplo, con referencia a realizaciones preferidas de ella como se ilustran en los dibujos adjuntos, en los que:
- la fig. 1 ilustra un procesador de paquetes configurado de acuerdo con la presente invención;
- la fig. 2 ilustra una unidad de flujo de datos configurada de acuerdo con la presente invención;
- la fig. 3 es una tabla de flujo de acciones de un método para reducir el número de accesos a la memoria, para obtener la información deseada en bloques de control de cuadro;
- la fig. 4 ilustra una realización de la presente invención de un FCB (bloque de control de cuadro) básico de un FCB que se halla en la cola libre de FCB de la unidad de flujo de datos;
- la fig. 5 ilustra una realización de la presente invención de un FCB de flujo de un FCB que se halla en la cola libre de FCB de la unidad de flujo de datos.
- la fig. 6 ilustra una realización de la presente invención de un FCB básico de un FCB que se halla en las colas Gqs de la unidad de flujo de datos;
- la fig. 7 ilustra una realización de la presente invención de un FCB de flujo de un FCB que se halla en las colas Gqs de la unidad de flujo de datos;
- la fig. 8 ilustra una realización de la presente invención de FCB básico de un FCB que se halla en las colas de flujo de un planificador de ejecución:
- la fig. 9 ilustra una realización de la presente invención de un FCB de flujo de un FCB que se halla en las colas de flujo del planificador de ejecución;
- la fig. 10 ilustra una realización de la presente invención de un FCB básico de un FCB que se halla en las colas TBQs de la unidad de flujo de datos; y
- la fig. 11 ilustra una realización de la presente invención de un FCB de flujo de un FCB que se halla en las colas TBQs de la unidad de flujo de datos.
Descripción detallada de la invención
La presente invención proporciona un método y sistema para reducir el número de accesos a la memoria para obtener la información de campo deseada en bloques de control de cuadros. En una realización de esta invención, un sistema comprende un procesador configurado para tratar cuadros de datos. El procesador puede comprender una unidad de flujo de datos configurada para recibir y transmitir cuadros de datos, cada uno de los cuales puede tener un bloque de control de cuadro asociado. Cada bloque de control de cuadro puede comprender unos bloques de control primero y segundo. El procesador puede comprender también una primera memoria acoplada a la unidad de flujo de datos, cuya primera memoria comprende una primera unidad de control de memoria intermedia de cuadro. La primera unidad de control de memoria intermedia de cuadro puede almacenar información de campo para el primer bloque de control del bloque de control de cuadro. El procesador puede comprender también un planificador de ejecución acoplado a la unidad de flujo de datos, cuyo planificador puede estar configurado para planificar los cuadros de datos recibidos por la unidad de flujo de datos. El planificador puede comprender una segunda memoria que comprende una segunda unidad de control de memoria intermedia de cuadro. Dicha segunda unidad de control de memoria intermedia de cuadro puede almacenar información de campo para el segundo bloque de control del bloque de control de cuadro. Cuando el bloque de control de cuadro se halla en una cola en la unidad de flujo de datos, la información puede estar almacenada en los campos del primer bloque de control, y no en los campos del segundo bloque de control. Dado que a la segunda memoria no se accede para leer o escribir en los campos del segundo bloque de control, se mejora así la eficiencia de la anchura de banda de la segunda memoria. Cuando el bloque de control de cuadro se halla en una cola en el planificador de ejecución, la información puede estar almacenada en los campos del segundo bloque de control, y no en los campos del primer bloque de control. Dado que a la primera memoria no se accede para leer o escribir en los campos del primer bloque de control, se mejora así la eficiencia de la anchura de banda de la segunda memoria.
La fig. 1 ilustra un procesador 100 de paquete. Dicho procesador 100 de paquete puede comprender una unidad 110 de flujo de datos configurada para recibir paquetes digitales, es decir, cuadros, de datos desde un conmutador particular (no mostrado) o puerta (no mostrada) de una red de conmutación de paquetes, y transmitir los paquetes digitales, es decir, cuadros, de datos a otro conmutador o puerta, es decir, el conmutador/puerta 120, en la red de conmutación de paquetes. Cada cuadro de datos puede estar asociado a un Bloque de Control de Cuadro (FCB), el cual describe el cuadro de datos asociado. Cada FCB asociado a un cuadro de datos puede estar asociado a uno o más Bloques de Control de Memoria Intermedia (BCB), y cada BCB asociado a un FCB puede estar asociado a una memoria intermedia en la unidad 140 de almacenamiento de datos. Un BCB puede estar configurado para describir la memoria intermedia asociada al siguiente BCB encadenado, como se describe en la solicitud de patente de EE.UU. núm. de serie 09/791.336 (solicitud de PCT también pendiente con referencia del apoderado RAL000095). En una realización, la unidad 110 de flujo de datos puede hallarse en un circuito integrado, es decir, una microplaqueta o chip integrada. La unidad 110 de flujo de datos puede estar acoplada a la unidad 140 de almacenamiento de datos, configurada para almacenar temporalmente cuadros de datos recibidos por la unidad 110 de flujo de datos procedentes de un conmutador (no mostrado) o puerta (no mostrada) en la red de conmutación de paquetes. La unidad 110 de flujo de datos puede estar acoplada también a un planificador de ejecución 130 configurado para planificar la transmisión de cuadros de datos desde la unidad 110 de flujo de datos al conmutador o puerta 120. En una realización, el planificador 130 puede hallarse en un circuito integrado, es decir, un chip integrado. Además, la unidad 110 de flujo de datos puede estar acoplada también a un procesador incorporado 150, configurado para tratar cuadros de datos recibidos por la unidad 110 de flujo de datos.
La fig. 2 ilustra con más detalle la unidad 110 de flujo de datos. Dicha unidad puede comprender un controlador de recepción 203 configurado para recibir y almacenar temporalmente paquetes, es decir, cuadros, de datos recibidos procedentes de un conmutador o puerta (no mostrados) en una red de conmutación de paquetes. La unidad 110 de flujo de datos puede comprender también un controlador de transmisión 201 configurado para modificar los datos de cuadro, así como para transmitir los datos de cuadro modificados a un conmutador o puerta (no mostrados) en una red de conmutación de paquetes. La unidad 110 de flujo de datos puede comprender también un controlador 202 de interfaz incorporado, configurado para el intercambio de cuadros que han de ser tratados por el procesador incorporado 150.
Paquetes, es decir, cuadros, de datos pueden ser recibidos por una unidad de interfaz 221 de puerta/conmutador. Dicha unidad de interfaz 221 de puerta/conmutador puede recibir datos procedentes de un conmutador (no mostrado) en la red de conmutación de paquetes cuando la unidad 110 de flujo de datos trabaja en modalidad de salida. De otro modo, la unidad 221 de interfaz de puerta/conmutador puede recibir datos procedentes de una puerta (no mostrada) que trabaja como interfaz para la red de conmutación de paquetes cuando la unidad 110 de flujo de datos trabaja en modalidad de entrada. Los datos recibidos por la unidad 110 de flujo de datos pueden ser almacenados temporalmente en un área de memoria 220 de preparación, antes de ser almacenados en la unidad 140 de almacenamiento de datos, que puede ser representada por una pluralidad de elementos o plaquetas 205AF. Dichos elementos 205AF pueden ser citados colectiva o individualmente como elementos 205 o elemento 205, respectivamente. El número de elementos 205 en la fig. 2 es ilustrativo, y una realización de la unidad 110 de flujo de datos de acuerdo con la presente invención puede tener otro número predeterminado de elementos 205. Cada elemento puede comprender una pluralidad de memorias intermedias. Cada elemento puede representar un elemento de memoria, por ejemplo, Memoria de Acceso Aleatorio Dinámica (DRAM), de modo que los datos de cuadro pueden ser escritos en memorias intermedias diferentes en elementos diferentes, con objeto de maximizar la anchura de banda de la memoria. Un árbitro 204 de memoria puede estar configurado para reunir las peticiones, por ejemplo, lectura, escritura, procedentes del controlador 203 de recepción, del controlador 201 de transmisión, y del controlador 202 de interfaz del ordenador incorporado, y subsiguientemente planificar el acceso a elementos de memoria de almacenamiento de datos particulares, es decir, memorias intermedias particulares en elementos particulares 205. Por ejemplo, el controlador de recepción 203 puede estar configurado para emitir peticiones de grabación al árbitro de memoria 204, con objeto de escribir los datos recibidos en las memorias intermedias individuales en un elemento particular 205.
Como antes se ha dicho, los datos de cuadro pueden ser almacenados en una unidad 150 de almacenamiento de datos, es decir, una pluralidad de plaquetas o elementos 205. En una realización, los datos de cuadro pueden ser almacenados en una o más memorias intermedias de uno o más elementos 205, de tal manera que los datos de cada cuadro particular puedan ser recompuestos al tener las memorias intermedias encadenas juntas. Es decir, que los datos de un cuadro particular pueden ser almacenados en una o más memorias intermedias que están encadenas juntas en el orden en que son escritos los datos dentro de una o más memorias intermedias. El encadenamiento de una o más memorias intermedias puede ser controlado por una Unidad de Bloque de Control de Memoria Intermedia (BCBU) 208 en una memoria 229, por ejemplo, una Memoria de Acceso Aleatorio Estática de Velocidad de Datos Cuádruple (QDR SRAM) acoplada a la unidad 110 de flujo de datos. LA BCBU 208 puede estar configurada para comprender las direcciones de cada una de las una o más memorias intermedias encadenas juntas, en el orden en que los datos fueron escritos en las memorias intermedias. Las diferentes memorias intermedias que comprenden datos de los mismos cuadros pueden ser enlazadas entre sí por medio de unos señalizadores almacenados en la BCBU 208.
Como antes se ha dicho, cada cuadro de datos puede estar asociado a un bloque de control de cuadro (FCB), cuyo FCB describe el cuadro de datos asociado. La Unidad 1 de Bloque de Control de Cuadro (FCBU1) 209 en una memoria 210, por ejemplo, QDR SRAM, puede estar configurada para almacenar la información, por ejemplo, de control de cuadro, para ser archivada en los campos de los FCBs. Es decir, que los campos de información de los FCBs pueden ser obtenidos por acceso a la memoria 210, es decir, FCBU1 209 de la memoria 210. Detalles adicionales correspondientes a la FCBU1 209 de la memoria que almacena campos de información, se exponen en la descripción de la fig. 3.
Los datos de cuadro almacenados en las memorias intermedias pueden ser tratados por el procesador incorporado 150, mediante la transmisión del encabezamiento de cada cuadro que ha de ser tratado al procesador incorporado 150. Como ya se ha dicho, cada cuadro de datos puede ser representado por un FCB. Estos FCBs pueden ser almacenados temporalmente en las colas G (Gqs) 218. La lógica 217 del distribuidor puede estar configurada para retirar de la cola G 218 el siguiente FCB. Una vez que dicha lógica 217 del distribuidor retira de la cola el siguiente FCB. dicha lógica emite una petición de lectura al árbitro 204 de memoria para leer los datos del comienzo del cuadro, es decir, el encabezamiento de dicho cuadro, almacenados en la unidad 140 de almacenamiento de datos asociada al FCB retirado de la cola. Los datos leídos por la lógica 217 del distribuidor son tratados luego por el procesador incorporado 150.
Una vez tratados los datos de cuadro por el procesador incorporado 150, dichos datos pueden ser almacenados temporalmente en la unidad 140 de almacenamiento de datos, es decir, los elementos o plaquetas 205, mediante la lógica 216 del procesador incorporado que emite una petición de grabación al árbitro 204 de memoria, para escribir los datos de cuadro tratados en las memorias individuales de una o más de los elementos 205.
Una vez que los datos de cuadro han sido tratados por el procesador incorporado 150, la lógica 216 de él emite también el FCB asociado al cuadro tratado, al planificador de ejecución 130. El planificador 130 puede estar configurado para comprender unas colas de flujo 233 configuradas para almacenar FCBs. El planificador 130 puede comprender también una Unidad de Bloque de Control de Cuadro 2 (FCBU2) 225, dentro de una memoria 224, por ejemplo, una QDR SRAM configurada para trabajar de modo similar a la FCBU1 209. La FCBU2 225 puede estar configurada para almacenar la información que se ha de archivar en los campos de los FCBs cuando éstos se hallan temporalmente en las colas de flujo 223. Detalles adicionales relativos al FCBU2 225 dentro de la memoria 224 del planificador 130 que almacena campos de información se exponen en la descripción de la fig. 3. El planificador de ejecución 130 puede estar configurado para transmitir los FCBs almacenados en las colas de flujo 223 a las Colas de Hoja de Objetivo (TBQs), con la lógica 227 de colocación en colas configurada para situar en las colas los FCBs recibidos en las TBQs 215.
Los FCBs de las colas TBQs 215 pueden ser planificados para ser retirados de las colas TBQs 215 mediante el planificador de ejecución 228 de TBQ, y cargados dentro del Bloque de Control de Puerta (PCB) 224. El planificador 228 de TBQ puede estar configurado para retirar el siguiente FCB de las TBQs 215 y poner en cola ese FCB en el PCB 224. Una vez que el siguiente FCB es puesto en cola en el PCB 224, éste puede emitir una petición de lectura al árbitro 204 de memoria, para leer los datos del comienzo del cuadro, es decir, el encabezamiento del cuadro, almacenado en la unidad 140 de almacenamiento de datos asociada al FCB retirado de la cola. Los datos leídos por el FCB 224 pueden ser almacenados temporalmente en la memoria 214 de área de preparación de datos, antes de la transmisión de los datos de cuadro tratados a un conmutador o una puerta (no mostrados) en una red de conmutación de paquetes. A efectos de claridad ha de hacerse notar que el PCB 224 puede estar configurado para leer una parte de los datos almacenados en el cuadro tratado en cada petición de lectura particular. Es decir, que la totalidad de los datos almacenados en el cuadro tratado pueden ser leídos en múltiples peticiones de lectura proporcionadas por el PCB 224. Una vez leídos la totalidad de los datos almacenados en el cuadro tratado, la unidad 140 de almacenamiento de datos puede almacenar datos de cuadro adicionales.
El controlador 201 de transmisión puede comprender también una memoria 213 de área de preparación de alteración de cuadro, configurada para recibir órdenes que modifiquen los cuadros tratados almacenados temporalmente en la memoria 214 de área de preparación de datos. Estas órdenes son citadas comúnmente como órdenes de modificación de cuadro, que son emitidas por el procesador incorporado 150 y son almacenadas en un banco particular de una memoria intermedia particular por la lógica 216 del procesador incorporado, como se describe con todo detalle en la solicitud de patente de EE.UU. núm. de serie 09/792.557. En una realización. el PCB 224 puede estar configurado para recuperar las órdenes de modificación de cuadro almacenadas en un banco particular de una memoria intermedia particular, y almacenarlas en una memoria 213 de área de preparación de alteración de cuadro. Una unidad lógica 212 de Alteración de Cuadro (FA) puede estar configurada para ejecutar las órdenes almacenadas en la memoria 213 de área de preparación de alteración de cuadro, para modificar los contenidos de los cuadros tratados almacenados temporalmente en la memoria 214 del área de preparación de datos. Una lógica 212 de FA ha modificado el contenido de los cuadros tratados, y dichos cuadros tratados y modificados pueden ser transmitidos a través de una unidad de interfaz 211 de conmutador/puerta. Dicha unidad de interfaz 211 de conmutador/puerta puede transmitir datos a una puerta (no mostrada) que trabaje como interfaz para la red de conmutación de paquetes, cuando la unidad 110 de flujo de datos trabaje en modalidad de salida. De otro modo, la unidad de interfaz 211 de conmutador/puerta puede transmitir datos a un conmutador (no mostrado) en la red de conmutación de paquetes, cuando la unidad 110 de flujo de datos trabaje en modalidad de entrada.
La unidad 110 de flujo de datos puede comprender también un árbitro 207 de Bloque de Control de Memoria Intermedia (BCB), configurado para arbitrar entre peticiones de BCB diferentes procedentes del controlador 201 de transmisión, el controlador 202 de interfaz del ordenador incorporado, y el controlador 203 de recepción, para leer o escribir en la BCBU 208. El árbitro 207 de BCB puede estar configurado para planificar accesos diferentes con objeto de utilizar la anchura de banda de las memorias tan eficientemente como sea posible. La unidad 110 de flujo de datos puede comprender también un árbitro 206 de Bloque de Control de Cuadro (FCB) configurado para arbitrar entre diferentes FCB procedentes del controlador 202 de interfaz del ordenador incorporado, el controlador de recepción 203, y el controlador de transmisión 201, para leer o escribir en la FCBU1 209.
Como antes se ha dicho, cada cuadro de datos puede estar asociado a un FCB. A medida que los cuadros tratados son leídos en la unidad 140 de almacenamiento de datos, por ejemplo, DDR DRAM, y los cuadros tratados son modificados y transmitidos a un conmutador o puerta (no mostrados) en la red de conmutación de paquetes, el FCB asociado a dicho cuadro tratado cesa de representar ese cuadro particular de datos. Una vez que el FCB ya no está asociado a unos datos de cuadro, el FCB puede ser almacenado en la cola libre 222 de FCB dentro del árbitro 286 de FCB. Dicha cola libre 222 de FCB puede estar configurada para comprender una pluralidad de FCBs que ya no están asociados a unos datos de cuadro particulares. Ha de apreciarse que la cola libre 222 de FCB puede comprender cualquier número de FCBs que ya no están asociados a unos datos de cuadro particulares. Una vez que la unidad 110 de flujo de datos recibe un paquete, es decir, un cuadro, de datos, un Bloque de Control de Nuevo montaje (RCB) 219 del controlador de recepción 203 puede asociar un FCB particular de la cola libre 222 de FCB al cuadro de datos recibido, y el FCB recién asociado puede entonces ser puesto en cola en las colas GQs 218 por el RCB 219.
Como antes se ha dicho, cada cuadro de datos puede estar asociado a un FCB. Cada FCB asociado a un cuadro de datos puede estar asociado a uno o más BCBs, y cada BCB asociado a un FCB puede estar asociado a una memoria intermedia particular de almacenamiento de datos 140. Una vez que los datos de cuadro tratados almacenados en una memoria intermedia de la unidad 140 de almacenamiento de datos han sido recuperados mediante el controlador 201 de transmisión, y subsiguientemente modificados y transmitidos a un conmutador o puerta (no mostrados) de la red de conmutación de paquetes, el BCB asociado a esa memoria intermedia particular que ya no incluye cualquier dato de cuadro, deja de comprender cualquier información válida. Es decir, que el BCB asociado a la memoria intermedia particular que ya no incluye datos de cuadro, incluye datos que no son útiles, ya que la memoria intermedia particular asociada al BCB ya no incluye cualesquiera datos de cuadro. Una vez que el BCB deja de comprender cualquier información válida, es decir, una vez que los datos de cuadro de una memoria particular han sido transmitidos, el BCB puede ser almacenado en una cola libre 226 de BCB dentro del árbitro 296 de BCB. Dicha cola libre 226 de BCB puede estar configurada para comprender una pluralidad de BCBs que no comprendan cualquier información válida. Ha de tenerse en cuenta que la cola libre 226 de BCB puede comprender cualquier número de BCBs que no comprendan cualquier información válida. Una vez que el controlador 203 de recepción escribe los datos de cuadro recibidos en una memoria intermedia particular de la unidad 140 de almacenamiento de datos, el RCB 219 del controlador de recepción 203 puede escribir información válida en el BCB particular, en la cola libre 226 de BCB que está asociada a la memoria intermedia particular que almacenaba el cuadro de datos recibido.
Como antes se ha dicho, un FCB puede hallarse temporalmente en la cola libre 222 de FCB, o puede hallarse temporalmente en una de las otras colas, por ejemplo, las colas GQ 218, las colas de flujo 223, o las TBQs 215. Una descripción más detallada del "ciclo de vida" del FCB, el cual puede ser almacenado inicialmente en la cola libre 222 de FCB y transferido a través de otras colas, por ejemplo, las colas GQs 218, las colas de flujo 223, las colas TBQs 215, hasta ser puesto en la cola libre 222 de FCB, es expuesta en la descripción de la fig. 3. Puede decirse que un FCB es "alquilado" desde la cola libre 222 de FCB, ya que el FCB puede ser retirado temporalmente de la cola libre 222 de FCB durante el "ciclo de vida" de dicho FCB. Ha de apreciarse que cada una de las colas, por ejemplo, las colas GQs 218, las colas de flujo 223, las colas TBQs 215, o la cola libre 222 de FCB, puede comprender concurrentemente uno o más FCBs diferentes. Ha de apreciarse también que los FCBs se hallan temporalmente en cada una de las colas, por ejemplo, las colas GQs 218, las colas de flujo 223, las colas TBQs 215, o la cola libre 222 de FCB, durante su "ciclo de vida".
Como se ha expuesto en la Sección de Información de Antecedentes, Los FCBs comprenden varios campos de información, los cuales son suministrados por la memoria 210 o 224 del procesador 100 de paquete. Es decir, que los campos de información en los FCBs son obtenidos mediante acceso a la memoria 210, por ejemplo, la QDR SRAM, en el procesador 100 de paquete. Sería deseable por tanto limitar el número de campos en los bloques de control de campo que requieran información, para reducir así el número de accesos a las memorias, y con ello las demandas de anchura de banda en las memorias 210 y 224, como se expone seguidamente.
La fig. 3 ilustra una tabla de flujo de acciones de un método 300 para reducir el número de accesos a las memorias, por ejemplo, las memorias 210 o 224, para obtener la información de campo deseada en los bloques de control de cuadro, con lo que se mejora la eficiencia de la anchura de banda de la memoria, por ejemplo, las memorias 210 o 224. La memoria 210 está asociada a la unidad 110 de flujo de datos, mientras que la memoria 224 está asociada al planificador de ejecución 130.
Como antes de ha dicho, cada cuadro de datos puede estar asociado a un bloque de control de cuadro (FCB). En una realización de la presente invención, un FCB lógico puede ser representado como dos bloques de control diferentes, ya que hay dos memorias, 210 y 224. Por ejemplo, un FCB básico (BFCB) puede estar asociado a la memoria 210. Un FCB de flujo (FFCB) puede estar asociado a la memoria 224. Estos dos bloques de control diferentes, es decir, BFCB y FFCB, pueden compartir la misma dirección de memoria, es decir, dirección de memoria física, pero los datos que han de ser proporcionados a los campos de los dos bloques de control diferentes pueden residir en memorias separadas, por ejemplo, la 210 o la 224.
En la operación 301, un FCB que se halla en la cola libre 222 de FCB del árbitro 206 de FCB, puede ser retirado de la cola libre 222 de FCB por el RCB 219, La fig. 4 ilustra los campos del BFCB 400, del FCB que se halla en la cola libre 222 de FCB. El BFCB 400 puede comprender dos entradas o filas en las que cada una de ellas tiene treinta y seis bitios. Ha de hacerse notar que el BFCB 400 puede comprender cualquier número de campos y cualquier número de filas, que a su vez comprenden cualquier número de bitios, y que la fig. 4 es sólo ilustrativa.
El BFCB 400 del FCB que se halla en la cola libre 222 de FCB puede comprender dos campos, por ejemplo, NFA (dirección del siguiente FCB) y ECC (código de corrección de error). El campo NFA señala la siguiente dirección FCB, lo que permite el encadenamiento de FCBs. El campo ECC puede comprender el código de corrección de error, como se describe en la solicitud de patente de EE.UU. núm. de serie 09/792.533.
La fig. 5 ilustra los campos del FFCB 500 del FCB que se halla en la cola libre 222 de FCB. El FFCB 500 puede comprender una entrada o fila que tiene treinta y seis bitios. Ha de hacerse notar que el FFCB 500 puede comprender cualquier número de campos y cualquier número de filas, que a su vez comprenden cualquier número de bitios, y que la fig. 5 es sólo ilustrativa.
El FFCB 500 del FCB que se halla en la cola libre 222 de FCB pueden comprender dos campos, por ejemplo, NFA, Cuenta de octetos (BCNT) de una o más memorias intermedias asociadas al FCB, así como un bitio de paridad (PTY). El campo NFA puede comprender un señalador de la dirección del siguiente FCB, lo que permite así el encadenamiento de los FCBs en la cola libre 222 de FCB. El campo BCNT puede comprender la longitud de cuenta de octetos del uno o más BCBs asociados al FCB. No obstante, no puede accederse al FCBU2 225 de la memoria 224 para recuperar información a almacenar en los campos del FFCB 500 del FCB que se halla en la cola libre 222 de FCB, ya que el FFCB 500 de dicho FCB que se halla en la citada cola libre 222 de FCB puede no estar asociado a un cuadro de datos. Es decir, que los campos del FFCB 500 del FCB que se halla en la cola libre 222 de FCB no son importantes, y por tanto no hay necesidad de acceder al FCBU2 225 de la memoria 224 asociada al FFCB 500. Detalles adicionales relativos a la asociación de un FCB a uno o más BCBs, así como la información almacenada en los campos FCBs, se describen en la solicitud de patente de EE.UU. núm. de serie 09/791.336. Los detalles del bitio de paridad en el FCB se proporcionan en la solicitud de patente de EE.UU. núm. de serie 09/792.533.
La información puede ser almacenada en el BFCB 400 y no en el FFCB 500, ya que la cola libre 222 de FCB es manejada por la unidad 110 de flujo de datos, y no por el planificador 130, como se explica más adelante. Por tanto, los campos del BFCB 400 del FCB que se halla en la cola libre 222 de FCB pueden comprender información válida, mientras que los campos del FFCB 500 del FCB que se halla en la cola libre de FCB pueden comprender información no válida.
Como antes se ha dicho, cuando la unidad 110 de flujo de datos recibe datos de cuadro por la unidad de interfaz 221 de puerta/conmutador procedentes de un conmutador (no mostrado) en una red de conmutación de paquetes o una puerta (no mostrada), que trabaja como interfaz para una red de conmutación de paquetes, un FCB es retirado de la cola libre 222 de FCB por el RCB 219 de la unidad 110 de flujo de datos, con objeto de asociar los datos de cuadro recibidos con un FCB en la operación 301. El FCB es retirado de la cola libre 222 de FCB por el RCB 219, que emite una petición de lectura al FCBU1 209 de la memoria 210, para recuperar información para los campos NFA y ECC en BFCB 400 del FCB en la cola libre 222. El RCB 219 de la unidad 110 de flujo de datos puede emitir una petición de lectura sólo al FCBU1 209 de la memoria 210, y no al FCBU2 225 de la memoria 224, ya que la memoria 210 está asociada a la unidad 110 de flujo de datos, y la memoria 224 está asociada al planificador 130. Por tanto, el RCB 219 no accede al FCBU2 225 de la memoria 224 para recuperar información para los campos, por ejemplo, NFA, BCNT, del FFCB 500 del FCB que se halla en la cola libre 222 de FCB. Al no acceder a la memoria 224, se mejora así la eficiencia de la anchura de banda de dicha memoria 224.
En la operación 302, el FCB retirado de la cola libre 222 de FCB puede ser puesto en las colas GQs 218 por el RCB 219. La fig. 6 ilustra los campos del BFCB 600 del FCB que se halla en las colas GQs 218. El BFCB 600 puede comprender dos entradas en las que cada una de ellas es de treinta y seis. Ha de hacerse notar que el BFCB 600 puede comprender cualquier número de entradas, que a su vez comprendan cualquier número de bitios, y que la fig. 6 es sólo ilustrativa.
El BFCB 600 del FCB que se halla en las colas GQs 218 puede comprender dos campos, por ejemplo, la dirección del siguiente FCB (NFA), la longitud de cuenta de octetos (BCNT), y el bitio de paridad (PTY) en la primera entrada. La segunda entrada del BFCB 600 del FCB que se halla en las colas GQs 218 puede comprender tres campos, por ejemplo, dirección del primer BCB, posición del octeto de arranque (SBP) de la memoria intermedia asociada al primer BCB que está asociado al FCB, posición del octeto final (EBP) de la memoria intermedia asociada al primer BCB que está asociado al FCB, así como un bitio de paridad (PTY), un bitio de tipo FCB (FTO), y un bitio de aborto (ABORT). El campo NFA puede señalar la dirección del siguiente FCB en las colas GQs 218, lo que permite el encadenamiento de los FCBs en dichas colas GQs 218. El campo BCNT puede comprender la longitud de la cuenta de octetos de uno o más BCBs asociados al FCB. El FBA puede comprender la dirección del primer BCB asociado al FCB. El SBP puede comprender la posición del octeto de arranque de la memoria intermedia asociada al primer BCB asociado al FCB. La EBP puede comprender la posición del octeto final de la memoria intermedia asociada al primer BCB asociado al FCB. Como antes se ha dicho, detalles adicionales relativos a la información almacenada en los campos de los FCBs, por ejemplo, FBA, SBP, ESP, son descritos en la solicitud de patente de EE.UU. núm. de serie 09/791.336. El bitio FTO puede comprender el tipo de FCB. El bitio de aborto puede indicar que los datos de cuadro asociados al FCB han encontrado una condición de excepción, y que el FCB no debe ser considerado válido.
La fig. 7 ilustra los campos del FFCB 700 del FCB situado en las colas GQs 218. EL FFCB 700 comprende una entrada que tiene treinta y seis bitios. Ha de apreciarse que el FFCB 700 comprende cualquier número de entradas que a su vez comprendan cualquier número de bitios, y que la fig. 7 es sólo ilustrativa.
El FFCB 700 del FCB situado en las colas GQs 218 puede comprender dos campos, por ejemplo, NFA, y cuenta de octetos de cuadro (BCNT), así como un bitio de paridad (PTY). El campo NFA puede señalar a la siguiente dirección de FCB, lo que permite así el encadenamiento de los FCBs en las colas GQs 218. El campo BCNT puede comprender la longitud de cuenta de octetos de uno o más BCBs asociados al FCB. No obstante, la FCBU2 225 de la memoria 224 puede no ser accesible para la recuperación de información a almacenar en los campos del FFCB 700 del FCB que se halla en las colas GQs 218, ya que el FFCB 700 del FCB que se halla en dichas colas 218 puede no estar asociado a un cuadro de datos. Es decir, que los campos del FFCB 700 del FCB que se halla en las colas GQs 218 no son importantes, y por tanto no hay necesidad de acceder a la FCBU2 225 de la memoria 224 que está asociada al FFCB
700.
La información puede ser almacenada en el BFCB 600, y no en el FFCB 700, ya que las colas 218 son manejadas por la unidad 110 de flujo de datos, y no por el planificador 130, como se explica en detalle más adelante. Por tanto, los campos del BFCB 600 del FCB que se halla en las colas GQs 218 pueden comprender información válida, mientras que los campos del FFCB 700 del FCB que se halla en las colas GQs 218 pueden comprender información no válida.
Como antes se ha dicho, el RCB 219 pone en cola el FCB retirado de la cola libre 222 de FCB en las colas GQs 218. El RCB 219 puede emitir dos peticiones de grabación a la FCBU1 209 de la memoria 210, para escribir la información en los campos del BFCB 600 del FCB en las colas GQs 218. La primera petición de grabación es escribir la información en los campos de la primera entrada, por ejemplo, NFA, BCNT. La segunda petición de grabación es para escribir la información en los campos de la segunda entrada, por ejemplo, FBA, SBP, EBP, RCB 219. El RCB puede emitir dos peticiones de grabación sólo a la FCBU1 209 de la memoria 210, y no al FCBU2 de la memoria 224, ya que la memoria 210 está asociada a la unidad 110 de flujo de datos, y la memoria 224 está asociada al planificador 130. Por tanto, el RCB 219 no accede a la FCBU 225 de la memoria 224 para recuperar información para los campos, por ejemplo, NFA, BCNT, del FFCB 500 del FCB que se halla en la cola libre 222 de FCB. Al no tener que acceder a la memoria 224 se mejora así la eficiencia de la anchura de banda de dicha memoria.
En la operación 303, el FCB de las colas GQs 218 puede ser retirado de dichas colas por el distribuidor lógico 217, de modo que los datos de cuadro asociados al FCB puedan ser tratados por el procesador incorporado 150, como se expone en la descripción de la fig. 2. La lógica 217 del distribuidor puede emitir dos peticiones de lectura a la FCBU1 209 de la memoria 210, para leer la información en los campos del BFCB 600 del FCB en las colas GQs 218. La primera petición de lectura puede ser leer la información en los campos de la primera entrada, por ejemplo, NFA, BCNT. La segunda petición de lectura es para leer la información en los campos de la segunda entrada, por ejemplo, FBA, SBP, EBP. El distribuidor lógico 217 puede emitir dos peticiones de lectura sólo a la FCBU1 209 de la memoria 210, y no a la FCBU2 225 de la memoria 224, ya que la memoria 210 está asociada a la unidad 110 de flujo de datos, y la memoria 224 está asociada al planificador 130. Es decir, que el distribuidor lógico 217 puede emitir peticiones de lectura sólo a la FCBU1 209 de la memoria 210, y no a la FCBU2 de la memoria 224, ya que la información en los campos del FFCB 700 del FCB en las colas GQs 218 no tiene importancia, es decir, que no es información válida. Al no acceder a la memoria 224, se mejora así la eficiencia de la anchura de banda de dicha memoria 224.
En la operación 304, el FCB puede ser puesto en las colas de flujo 223 del planificador 130. Como antes se ha dicho, la lógica del procesador incorporado 216 emite el FCB asociado a los datos de cuadro tratados al planificador 130. Dicho planificador 130 puede estar configurado para almacenar los FCBs recibidos en las colas 223 de flujo. La fig. 8 ilustra los campos del BFCB 800 del FCB situado en las colas de flujo 223. El BFCB puede comprender dos entradas, cada una de las cuales tiene treinta y seis bitios. Ha de hacerse notar que el BFCB 800 puede comprender cualquier número de campos, y cualquier número de filas puede comprender a su vez cualquier número de bitios, y que la fig. 8 es sólo ilustrativa.
El BFCB 800 del FCB que se halla en las colas de flujo 223 puede comprender un campo, por ejemplo, siguiente dirección de memoria intermedia de control de cuadro (NFA) en la primera entrada y tres campos, por ejemplo, primera dirección de BCB (FBA), posición del octeto de arranque (SBP) de la memoria intermedia asociada al primer BCB, cuando éste se halla asociado al FCB, posición del octeto final (EBP) de la memoria intermedia asociada al primer BCB cuando el primer BCB está asociado al FCB en la segunda entrada. El campo NFA puede señalar la dirección del FCB siguiente en las colas de flujo 223. La FBA puede comprender la dirección del primer BCB asociado al FCB. La SBP puede comprender la posición del octeto de arranque de la memoria intermedia asociada al primer BCB asociado al FCB. La EBP puede comprender la posición del octeto final de la memoria intermedia asociada al primer BCB asociado al FCB. No obstante, la FCBU1 209 de la memoria 210 puede no ser accesible para recuperar información a almacenar en los campos del BFCB 800 del FCB que se halla en las colas 223 de flujo, ya que el BFCB 800 del FCB que se halla en las colas 223 de flujo puede no estar asociado al cuadro de datos. El campo en la primera entrada del BFCB 800 del FCB que se halla en las colas 223 de flujo puede comprender información que no sea importante, y los campos en la segunda entrada pueden comprender información que necesite ser recordada. En consecuencia, no hay necesidad de acceder a la FCBU1 209 de la memoria 210 que está asociada al BFCB 800.
Es decir, que los campos del BFCB 800 del FCB que se halla en las colas de flujo 223 no son importantes, y por tanto no hay necesidad de acceder a la FCBU1 209 de la memoria 210 que está asociada al BFCB 800.
La fig. 9 ilustra los campos del FFCB 900 del FCB que se halla en las colas de flujo 223. El FFCB 900 puede comprender una entrada de treinta y seis bitios. Ha de apreciarse que el FFCB 900 puede comprender cualquier número de campos y cualquier número de filas, que a su vez comprendan cualquier número de bitios, y que la fig. 9 es sólo ilustrativa.
El FFCB 900 del FCB que se halla en las colas de flujo 223 puede comprender dos campos, por ejemplo, NFA y cuenta de octetos de cuadro (BCNT), así como un bitio de paridad (PTY). El campo de NFA puede señalar la dirección del siguiente FCB, lo que permite el encadenamiento de los FCBs en las colas de flujo 332. El campo de BCNT puede comprender la longitud de la cuenta de octetos de uno o más BCBs asociados al FCB.
La información puede ser almacenada en el FFCB 900, y no en el BFCB 800, debido a que las colas de flujo 223 son manejadas por el planificador 139, y no por la unidad 110 de flujo de datos, como se expone más adelante.
Como antes se ha dicho, la lógica 216 del ordenador incorporado envía el FCB asociado a los datos de cuadro tratados al planificador 130, después de tratar dichos datos de cuadro. El planificador 130 puede estar configurado que poner en cola los FCBs recibidos en las colas de flujo 223, en la operación 304. El planificador 130 puede emitir una petición de grabación a la FCBU2 225 de la memoria 224, para escribir la información en los campos del FFCB 900 del FCB en las colas de flujo 223. La petición de grabación puede ser para escribir la información en los campos del FFCB 900, por ejemplo, NFA, BCNT. El planificador 130 puede emitir una petición de lectura sólo a la FCBU2 de la memoria 224, y no a la FCBU1 de la memoria 210, ya que la memoria 224 está asociada al planificador 130, y la memoria 210 está asociada a la unidad 110 de flujo de datos. Al no acceder a la memoria 210, se mejora así la eficiencia de la anchura de banda de dicha memoria 210.
En la operación 305, el FCB de las colas de flujo 223 puede ser separado de la cola por el planificador 130. Dicho planificador 130 puede emitir una petición de lectura a la FCBU2 225 de la memoria 224, para leer la información en los campos del FFCB 900 del FCB en las colas de flujo 223. La petición de lectura es para leer la información en los campos del FFCB 900, por ejemplo, NFA, BCNT. El planificador 130 puede emitir una petición de lectura sólo a la FCBU2 225 de la memoria 224, y no a la FCBU1 de la memoria 219, ya que la memoria 224 está asociada al planificador 130, y la memoria 210 está asociada a la unidad 110 de flujo de datos. Es decir, que el planificador 130 puede emitir una petición de lectura a la FCBU2 de la memoria 224 y no a la FCBU1 209 de la memoria 210, ya que la información en los campos del BFCB 800 del FCB en las colas de flujo 223 no es importante, es decir, es información no válida. Al no tener que acceder a la memoria 210, se mejora así la eficiencia de la anchura de banda de dicha memoria 210.
En la operación 306, el FCB retirado de las colas de flujo 223 puede ser puesto en las colas TBQs 215 por la lógica 227 de puesta en cola de TBQs del controlador de transmisión 201. La fig. 10 ilustra los campos del BFCB 1000 del FCB que se halla en las colas TBQs 215. El BFCB 1000 puede comprender dos entradas, en las que cada una de ellas tiene treinta y seis bitios. Ha de apreciarse que el BFCB 1000 puede comprender cualquier número de campos y de filas, que a su vez comprenden cualquier número de bitios, y que la fig. 10 es sólo ilustrativa.
El BFCB 1000 del FCB que se halla en las colas TBQs 215 puede comprender dos campos, por ejemplo, dirección del siguiente cuadro de memoria intermedia de control (NFA), longitud de cuenta de octetos (BCNT) de uno o más BCBs asociados al FCB, y bitio de paridad (PTY) en la primera entrada; y cuatro campos, por ejemplo, dirección (FBA) del primer BCB, posición del octeto de arranque (SBP) de la memoria intermedia asociada al primer BCB que está asociado al FCB, posición del octeto final (EBP) de la memoria intermedia asociada al primer BCB que está asociado al FCB, campo de tipo de cuadro (FT), así como bitio de paridad (PTY), en la segunda entrada. El campo NFA puede señalar la dirección del siguiente FCB en las colas TBQs 215, lo que permite el encadenamiento de los FCBs en dichas colas TBQs 215. El campo BCNT puede comprender la longitud de cuenta de octetos de uno o más BCBs asociados al FCB. La FBA puede comprender la dirección del primer BCB asociado al FCB. La SBP puede comprender la posición del octeto de arranque de la memoria intermedia asociada al primer BCB asociado al FCB. La EBP puede comprender la posición del octeto final de la memoria intermedia asociada al primer BCB asociado al FCB. El campo FT puede comprender el tipo del FCB.
La fig. 11 ilustra los campos del FFCB 1100 del FCB que se halla en las colas TBQs 215. El FFCB puede comprender una entrada de treinta y seis bitios. Ha de apreciarse que el FFCB 1100 puede comprender cualquier número de campos y cualquier número de filas, que a su vez pueden comprender cualquier número de bitios, y que la fig. 11 es sólo ilustrativa.
El FFCB 1100 del FCB que se halla en las colas TBQs 215 puede comprender dos campos, por ejemplo, NFA, longitud de cuenta octetos (BCNT) de uno o más BCBs asociados al FCB, así como un bitio de paridad (PTY). El campo NFA puede señalar la dirección del siguiente FCB, lo que permite el encadenamiento de los FCBs en las TBQs 215. El campo BCNT puede comprender la longitud de cuenta de octetos de uno o más BCBs asociados al FCB. No obstante, la FCBU2 225 de la memoria 224 puede no ser accesible para recuperar información a almacenar en los campos del FFCB 1100 del FCB que se halla en la colas TBQs 215, ya que el FFCB 1100 del FCB que se halla en dichas colas TBQs puede no estar asociado a un cuadro de datos. Es decir, que los campos del FFCB 1100 del FCB que se halla en la colas RBQs 215 no son importantes, por lo que no hay necesidad de acceder a la FCBU2 225 de la memoria 224 asociada al FFCB 1100.
La información puede ser almacenada en el BFCB 1000, y no en el FFCB 1100, ya que las colas TBQs 215 son manejadas por la unidad 119 de flujo de datos, y no por el planificador 120, como se explica en detalle más adelante. Por tanto, los campos del BFCB 1000 del FCB que se halla en las colas TBQs 215 pueden comprender información válida, mientras que los campos del FFCB 1100 del FCB que se halla en las colas TBQs 215 pueden no comprender información válida.
Como antes se ha dicho, la lógica 227 de situación en las colas TBQs, sitúa en ellas el FCB recibido del planificador 130. Dicha lógica 227 puede emitir una petición de grabación a la FCBU1 209 de la memoria 210, para escribir la información en los campos, por ejemplo, NFA, BCNT, del BFCB 1000 del FCB en las colas TBQs 215. Dicha lógica 227 de situación en las colas TBQs puede recibir una copia de la información en el campo de BCNT del FFCB 900 procedente del planificador 130, cuando el controlador de transmisión 201 recibe el FCB procedente del planificador 130. La lógica 227 de situación en las colas TBQs puede estar configurada entonces para grabar la información del campo BCNT del FFCB 900 en el campo BCNT del BFCB 1000. Dicha lógica 227 de situación en las colas TBQs no emite otra petición de grabación para escribir la información en los campos de la segunda entrada, ya que la información en dichos campos del BFCB 800 no fue actualizada mientras estaba en las colas de flujo 223. En consecuencia, la lógica 227 de situación en las colas TBQs sólo accede a la FCBU1 de la memoria 210 una vez, en vez de dos, con lo que se mejora así la eficiencia de la anchura de banda de la memoria 210. Además, dicha lógica 227 de situación en las colas TBQs puede emitir una petición de grabación sólo a la FCBU1 209 de la memoria 210, y no a la FCBU2 de la memoria 224, ya que la memoria 210 está asociada a la unidad 110 de flujo de datos, y la memoria 224 está asociada al planificador 130. Por tanto, la lógica 227 de situación en las colas TBQs no accede a la FCBU2 225 de la memoria 224 para grabar información en los campos, por ejemplo, NFA, BCNT, del FFCB 1100 del FCB que se halla en las colas TBQs 215. Al no acceder a la memoria 224, se mejora así la eficiencia de su anchura de banda.
En la operación 307, el FCB en las colas TBQs 215 puede ser retirado de la cola por el planificador de ejecución 228, de modo que los datos de cuadro asociados al FCB puedan ser leídos por dicho planificador 228 de la TBQ, como se expone en la descripción de la fig. 2. El planificador 228 de la TBQ puede emitir dos peticiones de lectura a la FCBU1 209 de la memoria 210, para leer la información en los campos del BFCB 1000 del FCB en las colas TBQ 215. La primera petición de lectura puede ser para leer la información en los campos de la primera entrada, por ejemplo, NFA, BCNT. La segunda petición de lectura puede ser para leer la información en los campos de la segunda entrada, por ejemplo, FBA, FT, SBP, EBP. El planificador 228 de la cola TBQ puede emitir dos peticiones de lectura a sólo la FCBU1 209 de la memoria 210, y no a la FCBU2 225 de la memoria 224, ya que la memoria 210 está asociada a la unidad 110 de flujo de datos, y la memoria 224 está asociada al planificador 130. Por tanto, el planificador 228 de TBQ no accede a la FCBU2 225 de la memoria 224, para recuperar información para los campos, por ejemplo, NFA, BCNT, del FFCB 1100 del FCB que se halla en las colas TBQs 215. Al no acceder a la memoria 224 puede mejorarse así la anchura de banda de dicha memoria 224.
En la operación 308, el FCB puede ser situado en la cola libre 222 del árbitro 206 de FCB, una vez que los datos de cuadro tratados asociados al FCB han sido transmitidos a través de la unidad de interfaz 211 de conmutador/puerta a un conmutador (no mostrado) en la red de conmutación de paquetes, o a una puerta (no mostrada) que trabaje como una interfaz para la red de conmutación de paquetes. El árbitro 206 de FCB puede estar configurado para recibir el FCB asociado a los datos de cuadro tratados y transmitidos desde el PCB 224 del controlador de transmisión, donde el FCB puede ser situado en la cola libre 222 de FCB por el PCB 224.
Como antes se ha dicho, la fig. 4 ilustra los campos del BFCB 400 del FCB que se halla en la cola libre 222 de FCB. El BFCB 400 del FCB que se halla en dicha cola libre 222 puede comprender dos campos, por ejemplo, NFA (dirección siguiente del primer FCB), ECC (código de corrección de error). El campo NFA señala la dirección del siguiente FCB, lo que permite el encadenamiento de los FCBs en la cola libre 222. El campo ECC puede comprender el código para la corrección de error, como se describe en la solicitud de patente de EE.UU. núm. de serie 09/792.533.
Como antes se ha dicho. la fig. 5 ilustra los campos del FFCB 500 del FCB que se halla en la cola libre 222 de FCB. El FFCB 500 puede comprender una entrada de treinta y seis bitios. El FFCB 500 del FCB que se halla en la cola libre 222 de FCB puede comprender dos campos, por ejemplo, NFA, longitud de la cuenta de octetos (BCNT) de uno o más BCBs asociados al FCB, así como un bitio de paridad (PTY). El campo NFA señala la siguiente dirección de FCB, lo que permite el encadenamiento de los FCBs en la cola libre 222 de FCB. El campo BCNT puede comprender la longitud de la cuenta de bitios de uno o más BCBs asociados al FCB.
La información puede ser almacenada en el BFCB 400, y no en el FFCB 500, debido a que la cola libre 222 de FCB es manejada por la unidad 110 de flujo de datos, y no por el planificador 130, como se explica más adelante. Por tanto, los campos en el BFCB 400 del FCB que se halla en la cola libre 222 de FCB pueden comprender información válida, mientras que los campos del FFCB 500 del FCB que se halla en la cola libre 222 de FCB pueden comprender información no válida.
Como antes se ha dicho, el árbitro 206 de FCB puede estar configurado para recibir el FCB asociado a los datos de cuadro tratados y transmitidos desde el PCB 224 del controlador de transmisión, donde el FCB puede ser puesto en la cola libre 222 de FCB mediante el FCB 224. El PCB 224 puede emitir una petición de grabación a la FCBU1 209 de la memoria 210, para escribir la información para los campos NFA y ECC en el BFCB 400 del FCB en la cola libre 222. El PCB 224 puede emitir una petición de grabación a sólo la FCBU1 209 de la memoria 210, y no a la FCBU2 225 de la memoria 224, ya que la memoria 210 está asociada a la unidad 110 de flujo de datos, y la memoria 224 está asociada al planificador 130. Por tanto, el PCB 224 no accede a la FCBU2 225 de la memoria 224 para recuperar información para los campos, por ejemplo, NFA, BCNT, del FFCB 500 del FCB situado en la cola libre 222 de FCB. Al no acceder a la memoria 224, se mejora así la eficiencia de anchura de banda de dicha memoria.
Ha de apreciarse que el método 300 describe el "ciclo de vida" de un FCB. También ha de apreciarse que el método 300 puede describir el "ciclo de vida" de los otros FCBs en el procesador 100 de la red. Igualmente, ha de tenerse en cuenta que uno o más FCBs diferentes pueden hallarse temporal y concurrentemente en cada cola, por ejemplo, las colas GQs 218, las colas de flujo 223, las colas TBQs 215, y la cola libre 222 de FCB.

Claims (11)

1. Un sistema que comprende:
- un procesador (100) configurado para tratar cuadros de datos, cuyo procesador comprende:
- una unidad (110) de flujo de datos configurada para recibir y transmitir dichos cuadros de datos, y en la que cada uno de dichos cuadros de datos tiene un bloque de control de cuadro asociado, y cada uno de dichos bloques de control de cuadro comprende unos bloques de control primero y segundo;
- una primera memoria (210) acoplada a dicha unidad de flujo de datos, cuya primera memoria comprende una primera unidad de control de memoria intermedia de cuadro, y dicha primera unidad de control de memoria intermedia de cuadro almacena información de campo para dicho primer bloque de control de dicho bloque de control de cuadro; y
- un planificador de ejecución (130) acoplado a dicha unidad de flujo de datos, cuyo planificador está configurado para planificar cuadros de datos recibidos por dicha unidad de flujo de datos, y en el que dicho planificador comprende una segunda memoria (224), la cual comprende una segunda unidad de control de memoria intermedia de cuadro, y dicha segunda unidad de control de memoria intermedia de cuadro almacena información de campo para dicho segundo bloque de control del citado bloque de control de cuadro.
2. El sistema de la reivindicación 1, en el que dicha unidad de flujo de datos comprende una pluralidad de colas, y en el que uno o más de dichos bloques de control de cuadro se hallan en una de dicha pluralidad de colas.
3. El sistema de la reivindicación 2, en el que la información en los campos de dicho primer bloque de control de uno o más de los citados bloques de control de cuadro, que se hallan en una de dicha pluralidad de colas de la citada unidad de flujo de datos, está almacenada en dicha primera unidad de control de memoria intermedia de cuadro de la citada primera memoria.
4. El sistema de cualquiera de las reivindicaciones 1 a 3, en el que dicho planificador de ejecución comprende una primera cola en cuya primera cola se hallan uno o más de dichos bloques de control de cuadro.
5. El sistema de la reivindicación 4, en el que la información en los campos de dicho segundo bloque de control de uno o más de los citados bloques de control de cuadro que se hallan en la primera cola, está almacenada en dicha segunda unidad de control de memoria intermedia de cuadro de la citada segunda memoria.
6. Un método para reducir el número de accesos a las memorias, para obtener la información deseada en los bloques de control de cuadro, en el que cada uno de dichos bloques de control comprende un primer bloque de control y un segundo bloque de control, cuyo primer bloque de control está asociado a una primera memoria (210), y en el que dicho segundo bloque de control está asociado a una segunda memoria (224), cuya primera memoria comprende una primera unidad de control de memoria intermedia de cuadro, y dicha primera unidad de control de memoria intermedia de cuadro almacena información de campo para dicho primer bloque de control del citado bloque de control de cuadro, y en el que la segunda memoria comprende una segunda unidad de control de memoria intermedia de cuadro, cuya segunda unidad de control de memoria intermedia de cuadro almacena información de campo para dicho segundo bloque de control del citado bloque de control de cuadro, y cuyo método comprende las operaciones
de:
- acceder a dicha primera memoria para leer o escribir la información en los campos de dicho primer bloque de control de uno o más de los citados bloques de control de cuadro; y
- acceder a dicha segunda memoria para leer o escribir la información en los campos de dicho segundo bloque de control de uno o más de dichos bloques de control de cuadro.
7. El método de la reivindicación 6, en el que uno o más de dichos bloques de control de cuadro se halla en una de la pluralidad de colas en la unidad de flujo de datos, cuya unidad de flujo de datos está asociada a dicha primera memoria.
8. El método de la reivindicación 7, en el que se accede a dicha primera memoria para leer o escribir la información en campos de dicho primer bloque de control de uno o más de los citados bloques de control de cuadro, cuando dichos uno o más bloques de control de cuadro se hallan en una de la citada pluralidad de colas en dicha unidad de flujo de datos.
9. El método según cualquiera de las reivindicaciones 6 u 8, en el que uno o más de dichos bloques de control de cuadro se halla en una cola en un planificador de ejecución, cuyo planificador está asociado a dicha segunda memoria.
10. El método de la reivindicación 9, en el que se accede a dicha segunda memoria para leer o escribir la información en los campos de dicho segundo bloque de control de uno o más de los citados bloques de control de cuadro, cuando dichos uno o más bloques de control de cuadro se hallan en dicha cola del citado planificador de ejecución.
11. Un producto de programa de ordenador, que comprende medios de código de programa destinados a ejecutar las operaciones de cualquiera de las reivindicaciones 6 a 10, cuando dicho programa es ejecutado en un ordenador.
ES02712095T 2001-02-23 2002-02-20 Adaptador de red. Expired - Lifetime ES2237667T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/792,494 US7072347B2 (en) 2001-02-23 2001-02-23 Assignment of packet descriptor field positions in a network processor
US792494 2001-02-23

Publications (1)

Publication Number Publication Date
ES2237667T3 true ES2237667T3 (es) 2005-08-01

Family

ID=25157073

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02712095T Expired - Lifetime ES2237667T3 (es) 2001-02-23 2002-02-20 Adaptador de red.

Country Status (13)

Country Link
US (1) US7072347B2 (es)
EP (1) EP1362464B1 (es)
JP (1) JP3880520B2 (es)
KR (1) KR100560277B1 (es)
CN (1) CN100479450C (es)
AT (1) ATE293864T1 (es)
AU (1) AU2002232002A1 (es)
CZ (1) CZ20032126A3 (es)
DE (1) DE60203785T2 (es)
ES (1) ES2237667T3 (es)
HU (1) HUP0303240A3 (es)
PL (1) PL363474A1 (es)
WO (1) WO2002069563A2 (es)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7072347B2 (en) 2001-02-23 2006-07-04 International Business Machines Corporation Assignment of packet descriptor field positions in a network processor
US7200696B2 (en) * 2001-04-06 2007-04-03 International Business Machines Corporation System method structure in network processor that indicates last data buffer of frame packet by last flag bit that is either in first or second position
US7099325B1 (en) * 2001-05-10 2006-08-29 Advanced Micro Devices, Inc. Alternately accessed parallel lookup tables for locating information in a packet switched network
US7535845B2 (en) * 2004-10-28 2009-05-19 Alcatel Lucent Intelligent selective flow-based datapath architecture
US7376809B2 (en) * 2005-03-09 2008-05-20 International Business Machines Corporation Systems and methods for multi-frame control blocks
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US7787463B2 (en) * 2006-01-26 2010-08-31 Broadcom Corporation Content aware apparatus and method
DE102008018670A1 (de) 2008-04-14 2009-10-15 Merck Patent Gmbh Neue Materialien für organische Elektrolumineszenzvorrichtungen
US10225196B2 (en) 2013-02-15 2019-03-05 Nxp Usa, Inc. Apparatus, system and method for controlling packet data flow
CN111654746B (zh) 2020-05-15 2022-01-21 北京百度网讯科技有限公司 视频的插帧方法、装置、电子设备和存储介质
CN113835891B (zh) * 2021-09-24 2023-05-23 哲库科技(北京)有限公司 资源分配方法、装置、电子设备及计算机可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817054A (en) 1985-12-04 1989-03-28 Advanced Micro Devices, Inc. High speed RAM based data serializers
US5136582A (en) 1990-05-29 1992-08-04 Advanced Micro Devices, Inc. Memory management system and method for network controller
US5983004A (en) 1991-09-20 1999-11-09 Shaw; Venson M. Computer, memory, telephone, communications, and transportation system and methods
US5604884A (en) 1993-03-22 1997-02-18 Compaq Computer Corporation Burst SRAMS for use with a high speed clock
EP0622922B1 (en) 1993-04-29 2000-11-29 International Business Machines Corporation Method and device of multicasting data in a communications system
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
JPH08328949A (ja) 1995-06-06 1996-12-13 Mitsubishi Electric Corp 記憶装置
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
JP3788867B2 (ja) 1997-10-28 2006-06-21 株式会社東芝 半導体記憶装置
US6035360A (en) 1997-10-29 2000-03-07 International Business Machines Corporation Multi-port SRAM access control using time division multiplexed arbitration
JP4182180B2 (ja) * 1999-02-24 2008-11-19 株式会社日立製作所 ネットワーク中継装置及びネットワーク中継方法
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6754216B1 (en) * 2000-05-08 2004-06-22 Nortel Networks Limited Method and apparatus for detecting congestion and controlling the transmission of cells across a data packet switch
US6751704B2 (en) * 2000-12-07 2004-06-15 International Business Machines Corporation Dual-L2 processor subsystem architecture for networking system
US7072347B2 (en) 2001-02-23 2006-07-04 International Business Machines Corporation Assignment of packet descriptor field positions in a network processor

Also Published As

Publication number Publication date
CN1528078A (zh) 2004-09-08
EP1362464B1 (en) 2005-04-20
KR20030076679A (ko) 2003-09-26
HUP0303240A2 (hu) 2003-12-29
WO2002069563A2 (en) 2002-09-06
CZ20032126A3 (cs) 2004-01-14
DE60203785D1 (de) 2005-05-25
ATE293864T1 (de) 2005-05-15
US7072347B2 (en) 2006-07-04
JP2004530323A (ja) 2004-09-30
CN100479450C (zh) 2009-04-15
US20020118690A1 (en) 2002-08-29
DE60203785T2 (de) 2006-03-09
EP1362464A2 (en) 2003-11-19
AU2002232002A1 (en) 2002-09-12
PL363474A1 (pl) 2004-11-15
KR100560277B1 (ko) 2006-03-10
WO2002069563A3 (en) 2003-04-17
HUP0303240A3 (en) 2005-05-30
JP3880520B2 (ja) 2007-02-14

Similar Documents

Publication Publication Date Title
ES2237667T3 (es) Adaptador de red.
TWI582588B (zh) 用於在記憶體系統中提高效率之系統及方法
US8713220B2 (en) Multi-bank queuing architecture for higher bandwidth on-chip memory buffer
US6091707A (en) Methods and apparatus for preventing under-flow conditions in a multiple-port switching device
KR20040002922A (ko) 네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을수행하기 위한 컴퓨터 프로그램 및 멀티캐스트 전송 지원네트워크 프로세서
EP1471699B1 (en) Frame processing
US20100290466A1 (en) Routing of data streams
WO2001004770A2 (en) Method and architecture for optimizing data throughput in a multi-processor environment using a ram-based shared index fifo linked list
TWI912464B (zh) 整合計算元件之間的信息通訊的整合計算元件、方法及計算系統
US20150199298A1 (en) Storage and network interface memory share
ES2240807T3 (es) Recepcion de mensajes de datos en sistemas de comunicaciones que comprendan rutas de redes redundantes.
KR100554825B1 (ko) 메모리에 대한 액세스 감소 방법, 시스템 및 기록 매체
JP5497743B2 (ja) 複数のプロセスからメモリ領域へのアクセスを制御する方法、及び、本方法を実現するためのメッセージメモリを備えた通信モジュール
US5948079A (en) System for non-sequential transfer of data packet portions with respective portion descriptions from a computer network peripheral device to host memory
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
US20140281043A1 (en) System and method for transferring data between components of a data processor
ES2307789T3 (es) Metodo y disposicion para procesamiento asincrono de datos de cctrch.
US7522621B2 (en) Apparatus and method for efficiently modifying network data frames
US7161950B2 (en) Systematic memory location selection in Ethernet switches
EP3244582B1 (en) Switch and data accessing method thereof
ES2461179T3 (es) Red de automatización con componente de sistema de control distribuido
US7254654B1 (en) Split-FIFO multi-station data transfer system
CN115173990A (zh) 一种数据包传输方法
US20060259665A1 (en) Configurable multiple write-enhanced direct memory access unit
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing