ES2200877T3 - Separacion y mezcla de tramas de datos en continuo. - Google Patents

Separacion y mezcla de tramas de datos en continuo.

Info

Publication number
ES2200877T3
ES2200877T3 ES00928447T ES00928447T ES2200877T3 ES 2200877 T3 ES2200877 T3 ES 2200877T3 ES 00928447 T ES00928447 T ES 00928447T ES 00928447 T ES00928447 T ES 00928447T ES 2200877 T3 ES2200877 T3 ES 2200877T3
Authority
ES
Spain
Prior art keywords
modules
data
module
subframes
restructuring
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
ES00928447T
Other languages
English (en)
Inventor
Rafael Lisitsa
George H. J. Shaw
Dale A. Sather
Bryan A. Woodruff
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/310,610 external-priority patent/US6748440B1/en
Priority claimed from US09/310,597 external-priority patent/US6658477B1/en
Priority claimed from US09/310,596 external-priority patent/US7007096B1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2200877T3 publication Critical patent/ES2200877T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Circuits Of Receivers In General (AREA)
  • Meat, Egg Or Seafood Products (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Power Steering Mechanism (AREA)
  • Bus Control (AREA)

Abstract

Un método para procesar tramas (F401-F511) mediante módulos (113, 302-304, 331-334, M4A-M5D) en un ordenador digital (120), caracterizado porque las tramas son tramas de datos en continuo y el método incluye: construir un conducto (400, 500) como un grupo conectado de múltiples módulos de los módulos, siendo al menos uno de los módulos un módulo reestructurante; asignar tramas compuestas (420, F421, ...) que tienen subtramas predefinidas (F419, F420, ...); transportar los datos en continuo a través de diferentes módulos de los módulos en el grupo en diferentes subtramas de las subtramas; y reestructurar los datos entre al menos algunas subtramas en el módulo reestructurante (M4A-M4C, M4G, M4H, M4I; M5C, M5D).

Description

Separación y mezcla de tramas de datos en continuo.
Campo de la invención
La presente invención se refiere a procesado electrónico de datos, y se refiere más específicamente a administrar el flujo de datos en continuo mediante múltiples módulos de procesado de hardware y/o software en un ordenador.
Antecedentes de la invención
Los datos en continuo son un flujo continuo de datos que debe ser presentado en último término a un usuario en una secuencia particular en tiempo real. Muestras digitales que representan una señal audio, por ejemplo, se deben convertir a una onda sonora en la misma secuencia en que se transmitieron, y exactamente a la espaciación temporal en que se generaron, o alguna alternativa especificada por el usuario. Los datos digitales que representan tramas vídeo deben ser ensamblados en la secuencia apropiada en la trama para presentación en una pantalla, y las tramas sucesivas se deben presentar a la velocidad correcta en tiempo real.
Los datos en continuo no tienen que mantener necesariamente la secuencia o temporización correcta a través de una cadena completa de comunicación entre varios transmisores, procesadores, memorias y receptores. En efecto, los clips de vídeo y audio se guardan frecuentemente como datos estáticos en medios de registro, memorias informáticas, y memorias intermedias de red. Los sistemas de conmutación de paquetes también podrían transportar partes de los mismos datos en continuo por recorridos diferentes e incluso en diferentes secuencias de tiempo. Los procesadores, tal como los filtros digitales, pueden ensamblar partes del flujo de datos, modificarlas como una unidad estática, enviándolas después a otras unidades en el sistema. Eventualmente, sin embargo, el flujo se debe oír o ver en la secuencia correcta en los tiempos relativos apropiados.
Los datos en continuo casi siempre implican cantidades muy grandes de datos. Los datos en continuo casi siempre desafían la capacidad de los buses digitales en ordenadores para acceder a ellos, transportarlos y conmutarlos. Los datos en continuo casi siempre lastran la potencia de procesado de las unidades funcionales, tanto de software como de hardware, para recibirlos, convertirlos y pasarlos a otras unidades. Los expertos en la técnica hablan de la necesidad de "conductos grandes" para datos en continuo.
Una arquitectura denominada WDM-CSA (Modelo de Controladores de Windows-Arquitectura de Conexiones y en Continuo) introduce el concepto de un grafo para especificar las conexiones entre las facilidades de un ordenador donde un flujo de datos debe pasar de manera eficiente por varias unidades de procesado. El protocolo WDM-CSA también simplifica el desarrollo de controladores para tales datos. Básicamente, WDM-CSA especifica el flujo de tramas de datos mediante un grafo, y también los protocolos de control por los que módulos adyacentes en el grafo comunican entre sí para pedir y aceptar las tramas de datos.
La Solicitud de Patente de Estados Unidos, del mismo cesionario, 09/310.610, titulada "Mejora del flujo de datos en continuo mediante múltiples unidades de procesado", presentada en la misma fecha que la presente (expediente 777.183US1), introduce el concepto de conductos de datos para mejorar el flujo de tramas de datos en continuo mediante un grafo de módulos interconectados en WDM-CSA y en otros entornos de datos en continuo. Básicamente, los conductos de datos evitan el almacenamiento redundante y la copia de datos cuando varios módulos procesan las tramas, y la asignación directa de las tramas en la que se empaqueten los datos. Otra Solicitud de Estados Unidos, del mismo cesionario, 09/310.597, "Mejora del control de datos en continuo mediante múltiples procesadores", presentada en la misma fecha que la presente (expediente 777.184US1), presenta un mecanismo para controlar el flujo de tramas mediante múltiples módulos por mejorar el control en el grafo entero, en vez de optimizando cada módulo individual por separado.
En muchas aplicaciones de datos en continuo, el procesado se podría simplificar y mejorar añadiendo capacidades para dividir una trama grande en múltiples subtramas y para mezclar múltiples tramas en una sola trama grande. Por ejemplo, las presentaciones multimedia tienen de ordinario una sola colección de datos que representan diferentes modalidades que se han de presentar juntas a un usuario. Una trama de datos del tipo de televisión puede representar un campo completo de una señal NTSC, incluyendo datos vídeo en varias líneas de escaneo, datos audio, una trama de imagen en imagen en partes de algunas líneas de escaneo, y datos en un intervalo de borrado vídeo (VBI). Los datos VBI podrían incluir códigos de caracteres para audiencia cautiva, datos digitales que representa información de Web-TV, y un número variable de otros campos secundarios. Estas tramas requieren una mezcla compleja de datos cuando se generan, y después se deben dividir para procesar por diferentes módulos de hardware o software simultáneamente para presentación a un observador. Aunque los datos audio en una subtrama se filtran en controles de tono y comprimen/expanden en volumen, los datos vídeo son redimensionados y equilibrados en color, la audiencia cautiva se formatea y pone, y así sucesivamente.
Los sistemas descritos en las solicitudes de patentes antes citadas describen capacidades primitivas para dividir tramas grandes en tramas más pequeñas para procesado separado. Sin embargo, la necesidad creciente de multimedia y flujos de datos similares que tienen tipos múltiples de datos demanda la capacidad adicional de combinar, fusionar o mezclar múltiples tramas a una sola trama, y también requiere un flujo eficiente de datos y control de tramas divididas y mezcladas de datos en continuo.
US 5.471.603 describe un dispositivo de almacenamiento masivo de datos, de estado sólido, que es modular, empleando una arquitectura modular de conductos. El dispositivo incluye un módulo de formato de datos, y la arquitectura modular de conductos permite configurar fácilmente el número de módulos de controlador/memoria en cada canal. La arquitectura modular de conductos también simplifica la complejidad. La técnica se describe en el contexto de la formación de imágenes gráficas y animación, procesado de datos sísmicos, previsión del tiempo, automatización de diseño y simulación científica. También se describe que el dispositivo de almacenamiento masivo de datos de estado sólido se puede usar en un dispositivo de presentación vídeo de alta resolución cuando se combina con una memoria intermedia de trama.
Resumen de la invención
El objeto de la invención es proporcionar un método mejorado para procesar tramas mediante módulos en un ordenador digital y un sistema informático para procesar datos en continuo.
Este objeto se logra con la invención reivindicada en las reivindicaciones independientes.
Las realizaciones preferidas se definen en las reivindicaciones dependientes.
La presente invención mejora el procesado general de datos en continuo mediante una red o grafo de múltiples módulos de procesado de hardware y software proporcionando un mecanismo simple y eficiente para dividir una sola trama de datos en continuo en múltiples tramas y para mezclar múltiples tramas de datos en continuo en una sola trama.
Un conducto tiene múltiples módulos de procesado interconectados, de los que uno o varios realizan una operación que divide, mezcla o reestructura de otro modo datos en continuo. Una trama compuesta asignada físicamente tiene subtramas que contienen partes diferentes de los datos en los que operan diferentes módulos de los módulos.
Otro aspecto de la invención construye un conducto y asigna un asignador para proporcionar las tramas compuestas. Otro aspecto emite transacciones de control a un módulo solamente cuando están disponibles todas las subtramas suministradas a que módulo. Otros aspectos se refieren a la construcción de tablas para especificar la estructura de las subtramas en la trama compuesta, la estructura de los módulos en el conducto, y la terminación de operaciones por los módulos.
Breve descripción del dibujo
La figura 1 es un diagrama de bloques de un entorno ilustrativo para la presente invención.
La figura 2 detalla una memoria multipuerto de la figura 1.
La figura 3 detalla componentes de la figura 1 relevantes para la invención.
La figura 4, incluyendo las figuras 4A-4C, es un diagrama de bloques de un conducto ejemplar de datos en continuo manejado por la invención, y representaciones de datos que fluyen en él.
La figura 5, incluyendo las figuras 5A-5E, es un diagrama de bloques de otro conducto de datos en continuo, y representaciones de tramas de datos compuestas alternativas en el mismo.
La figura 6, incluyendo las figuras 6A y 6B, es un diagrama de flujo de un método para establecer y controlar un grafo que tiene tramas compuestas según la invención.
La figura 7, incluyendo las figuras 7A-7B, muestra tablas construidas en el método de la figura 6.
La figura 8 muestra otra tabla construida en el método de la figura 6.
Descripción detallada
La siguiente descripción detallada de las realizaciones preferidas se refiere a los dibujos acompañantes que forman parte de la misma, y muestra a modo de ilustración realizaciones específicas de la presente invención. Estas realizaciones se describen con detalle suficiente para que los expertos en la materia pongan en práctica la invención. Los expertos en la materia pensarán en modificaciones estructurales, lógicas y procedimentales dentro del espíritu y alcance de la invención. Igualmente, las formas específicas y la secuencia en que la descripción presenta el hardware, software y operaciones de las realizaciones no implican interconexiones específicas u orden temporal. Por lo tanto, la descripción siguiente no ha de tomarse en un sentido limitativo, y el alcance de las invenciones se define solamente por las reivindicaciones anexas.
Entorno operativo
La figura 1 es un diagrama de alto nivel de un entorno ilustrativo 100 en el que se implementa la invención como instrucciones ejecutables, datos, y/o hardware en un ordenador de propósito general programable tal como el ordenador personal (PC) 120. Los expertos en la materia pensarán en otros entornos adecuados y variaciones del entorno descrito.
Un PC convencional 120 incluye típicamente varios componentes acoplados por uno o varios buses de sistema 121 para transportar instrucciones, datos, y varias señales de control. Estos buses pueden asumir varias formas, tal como los buses ISA, PCI y AGP convencionales. Algunas o todas las unidades acopladas a un bus pueden actuar como un bus maestro para iniciar transferencias a otras unidades.
La unidad de procesado 130 puede tener uno o varios microprocesadores 131 movidos por un reloj del sistema 132 y acoplados a uno o varios buses 121 por controladores 133. El sistema de memoria interna 140 envía instrucciones y datos a la unidad de procesado 130. La RAM de alta velocidad 141 guarda alguno o todos los elementos de software 110. La ROM 142 guarda comúnmente un software básico de sistema entrada/salida (BIOS) para arrancar el PC 120 y para controlar operaciones de bajo nivel entre sus componentes. El subsistema de almacenamiento masivo 150 guarda uno o varios elementos de software 110. La unidad de disco duro 151 guarda software 110 en forma no volátil. Drivers 152 leen y escriben software en medios extraíbles tal como el disquete magnético 153 y el disco óptico 154. También se conocen en la técnica otras tecnologías para almacenamiento masivo. Adaptadores 155 acoplan los dispositivos de almacenamiento a buses de sistema 121, y a veces directamente entre sí. Otras unidades de hardware y adaptadores, indicados en general en 160, pueden realizar funciones especializadas tal como encriptado de datos, procesado de señal, y análogos, bajo el control del procesador u otra unidad en los buses.
El subsistema de entrada/salida (E/S) 170 tiene varios adaptadores especializados 171 para conectar el PC 120 a dispositivos externos para interface con un usuario. Un monitor 172 crea una representación visual de datos gráficos en alguna de varias formas conocidas. Altavoces 173 emiten datos audio que pueden llegar a un adaptador 171 como muestras de onda digitales, flujos de interface digital de instrumento musical (MIDI) u otros formatos. El teclado 174 acepta pulsaciones de tecla del usuario. Un ratón u otro dispositivo puntero 175 indica dónde se ha de producir una acción del usuario. El bloque 176 representa otros dispositivos de entrada y/o salida, tal como una cámara pequeña o micrófono para convertir señales de entrada vídeo y audio en datos digitales. Otros dispositivos de entrada y salida, tal como impresoras y escáneres conectan comúnmente con puertos estandarizados 177. Estos puertos incluyen paralelo, serie, SCSI, USB, FireWire y otras formas convencionales.
Los ordenadores personales conectan frecuentemente con otros ordenadores en redes. Por ejemplo, la red de área local (LAN) 180 conecta el PC 120 a otros PCs 120' y/o a servidores remotos 181 mediante un adaptador de red 182 en el PC 120, usando un protocolo estándar tal como Ethernet o token-ring. Aunque la figura 1 muestra un cable físico 183 para interconectar la LAN, también están disponibles tecnologías inalámbricas, ópticas y otras. Otras redes, tal como una red de área amplia (WAN) 190 también pueden interconectar PCs 120 y 120', e incluso servidores 181, a ordenadores remotos 191. La figura 1 ilustra una instalación de comunicaciones 192 tal como una red telefónica pública conmutada para una WAN 190 tal como Internet. El PC 120 puede emplear un módem interno o externo 193 acoplado al puerto serie 177; sin embargo, otras tecnologías conocidas como ISDN, modo de transferencia asíncrona (ATM), frame-relay, y otras se están difundiendo más. En un entorno informático en red o distribuido parte del software 110 se puede almacenar en los otros PCs similares 120', o en ordenadores 181 y 191, cada uno de los cuales tiene sus propios dispositivos y medios de almacenamiento.
Los elementos de software 110 pueden estar divididos en varios tipos, cuyas designaciones se solapan en cierto grado. Por ejemplo, la BIOS antes mencionada incluye a veces rutinas de alto nivel o programas que también se podría clasificar como parte de un sistema operativo (OS) en otros entornos. La finalidad principal del OS 111 es proporcionar un entorno de software para ejecutar programas de aplicación 112. Un OS tal como Windows® de Microsoft Corp. implementa comúnmente interfaces de programa de aplicación de alto nivel (APIs), sistemas de archivos, protocolos de comunicaciones, conversiones de datos de entrada/salida, y otras funciones. También conserva recursos informáticos y supervisa la ejecución de varios programas. Los programas de aplicación 112 realizan funciones más directas para el usuario. El usuario las reclama normalmente de forma explícita, aunque se pueden ejecutar implícitamente en conexión con otras aplicaciones o por asociación con archivos o tipos de datos particulares. Los módulos 113 son paquetes de instrucciones ejecutables y datos que pueden realizar funciones para OSs 111 o para aplicaciones 112. Éstas podrían tomar la forma de librerías de enlace dinámico (.dll). Finalmente, los ficheros de datos 114 incluyen colecciones de datos no ejecutables tal como documentos de texto, bases de datos, y medios tal como imágenes gráficas y registros sonoros. De nuevo, las categorías anteriores de software 110 no son ni exhaustivas ni mutuamente excluyentes.
La figura 2 es un diagrama de bloques de un tipo de memoria convencional 200 que se emplea a menudo al procesar datos de alta velocidad tal como datos en continuo. El módulo de memoria 210 es una memoria multipuerto 210 que tiene tres puertos de lectura/escritura 211-213, cada uno de los cuales puede recibir datos para almacenamiento en el módulo 210 y recuperar datos guardados en él. Son posibles más o menos puertos, y algunos de los puertos pueden ser de escritura solamente o de lectura solamente. Las operaciones en los puertos múltiples pueden producirse simultáneamente, aunque la operación interna del módulo 210 podría serializarlas y/o sincronizarlas. La memoria 200 puede formar una parte de sistema de memoria de PC 140, figura 1, o se podría incorporar en cualquiera de los otros bloques, tal como las funciones 160 o los adaptadores 170. Las memorias multipuerto funcionan frecuentemente para poner en memoria intermedia grandes cantidades de datos para transferencia de un bus a otro en un sistema. La figura 2 ilustra un grupo de buses 220, que se puede incluir en el grupo de buses 121 en la figura 1. Los puertos 211-213 acoplan con buses individuales 221-223, respectivamente. Esta conexión permite, por ejemplo, que un bus PCI deposite una trama de datos en el módulo de memoria 210, y que un bus vídeo AGP o dedicado recupere la trama.
Manejo de tramas compuestas
La figura 3 muestra los componentes relevantes 300 que emplea la presente invención. A efectos de ilustración solamente, algunos de los componentes descritos se hallan en el sistema operativo (OS) Windows-2000 de Microsoft Corp. Los componentes 310-330 se encuentran en la capa núcleo, aunque pueden residir en otros lugares en la arquitectura de un OS particular. Aunque todo el procesado en este ejemplo tiene lugar en un único ordenador, las operaciones de datos en continuo según la invención se podrían distribuir entre múltiples máquinas y/o sistemas operativos.
El componente de interface 310 conecta con otros componentes en la capa núcleo, con software tal como los programas 301 y 302 fuera de LOS OS, y con dispositivos de hardware tal como los dispositivos 303-304 y adaptador de hardware 305. El programa de aplicación 301 podría ser, por ejemplo, una utilidad de observador por la que un usuario selecciona algunos datos en continuo para presentación. Un programa u otro módulo que pida o especifique un flujo de datos se denominará un cliente. El programa 302 representa un módulo de software para transformar datos de alguna forma, tal como un filtro digital de software o compresor-extensor. El dispositivo 303 podría ser un módulo de hardware tal como una memoria o un decodificador MPEG-2. El dispositivo 304 podría representar un dispositivo de almacenamiento fuera de línea, tal como un reproductor de DVD o TV por cable, con su adaptador de interface de hardware 305.
Las memorias físicas en el sistema 100 tienen componentes de administrador de memoria 320 para organizar los datos almacenados en ellas. Un único módulo de memoria física puede tener múltiples administradores para organizar datos diferentes en tiempos diferentes o en partes diferentes del módulo. Un administrador único también puede servir a múltiples memorias físicas. La función significativa de los administradores 320 en el contexto presente es asignar y desasignar bloques de memoria para almacenar tramas u otras unidades de datos en continuo. Por esta razón, los administradores 320 se denominarán aquí frecuentemente asignadores de memoria. Una trama es asignada siempre que datos recién llegados lo piden, o puede estar preasignada. La trama transporta los datos mediante uno o varios filtros en un recorrido, y es desasignada cuando todos los filtros en el recorrido han terminado el procesado de dichos datos. Las tramas se pueden destruir, pero se reciclan generalmente con nuevos datos que llegan al recorrido.
En Windows-2000, un subsistema de E/S 330 supervisa tanto el almacenamiento de archivos como otros dispositivos de E/S y facilidades. Las peticiones de servicios de archivo o E/S son enrutadas desde un programa de aplicación u otra fuente a dispositivos de hardware tal como 303 y 304 mediante una o varias capas de drivers de dispositivo tal como 331 y 332. A lo largo del camino, controladores de filtro tal como 333 y 334 pueden interceptar los datos, manejos de archivos, paquetes de peticiones de E/S, y otra información, en base a algunas características o eventos. Los controladores de filtro pueden procesar datos internamente como se muestra en 333. También pueden pasar información hacia atrás y hacia adelante a programas tal como 302, que pueden estar dentro de la capa núcleo de OS o en cualquier otro punto en la arquitectura de software del sistema 100. Los componentes pueden estar dedicados a una sola función, o, más frecuentemente, pueden estar programados para realizar múltiples funciones, secuencial o simultáneamente. Un procesador de señal digital, por ejemplo, puede ejecutar muchas funciones diferentes tal como filtración de frecuencia, cambio de ganancia y efectos acústicos.
El bloque 340 representa los componentes WDM-CSA que crean y administran grafos para datos en continuo, e incluye un administrador de flujo de datos de grafos 341 y un administrador de flujo de control de grados 342. El bloque 340 también incluye un administrador de conducto que construye varios objetos usados por la invención, como se explica con detalle a continuación. Los administradores 341-343 no tiene que implementarse en módulos únicos de software o hardware; sus funciones se pueden distribuir fácilmente entre muchos módulos.
La figura 4A muestra un conducto 400 de un grafo tal como se muestra en el expediente de solicitud 777.183US1 para transferir uno o varios flujos de datos mediante los componentes seleccionados 300 para lograr una o más transformaciones generales de los datos. Los módulos individuales de procesado por hardware o software, que suelen denominarse filtros, se representan como rectángulos claros que rodean bloques de función más pesados. En las convenciones del protocolo WDM-CSA, las funciones comunican datos entre sí por medio de patillas lógicas, marcadas P. A los efectos presentes, los filtros son de dos tipos generales. Los filtros no reestructurantes realizan una función o transformación en datos. Los filtros reestructurantes tienen tres o más patillas, y son capaces de dividir o mezclar tramas de datos en continuo. Algunos pueden mezclar múltiples tramas de entrada y dividir una trama en múltiples salidas. El término "reestructurar" se usará para referirse a mezclar, dividir, y otras operaciones que alteran la estructura de trama de sus datos. El término "divisor/mezclador" se refiere a un módulo que realiza una o varias operaciones de reestructuración. Las flechas intensas significan la transferencia de datos entre las funciones diferentes.
Las funciones de filtro que mezclan o dividen tramas de datos se están convirtiendo en mucho más comunes a medida que los datos en continuo son más complejos. Sin embargo, estas funciones reestructurantes son difíciles de integrar eficientemente en un grafo. Uno de los conceptos de la solicitud 777.183US1 es incrementar la eficiencia general dividiendo un grafo en conductos. Es difícil, sin embargo, incorporar divisores y mezcladores en cascada o múltiples en un conducto único. Ninguno de los conductos en dicha solicitud incluyen más de una función reestructurante.
Usando esta invención, el conducto único 400 incluye nueve filtros, de los que seis son reestructurantes: cinco mezcladores y un divisor. El módulo de filtro M4A mezcla tramas de datos en continuo de entrada que llegan a las patillas P401 y P402 para producir una trama combinada en la patilla P403, mientras que el módulo M4B mezcla tramas de entrada en las patillas P404 y P405 en una trama mezclada en P406. Otro mezclador M4C acepta estas dos tramas en las patillas P407 y P408 y envía otra trama mezclada en P409. Los módulos M4A, M4B, y M4C también podrían realizar alguna otra función de procesado o transformación, tal como compresión o filtración de señal, además de mezcla. El módulo M4D es una función simple que procesa tramas en la patilla P410 y las envía a la P411. Los módulos WE y M4F procesan tramas de entrada en las patillas P412 y P414 en las entradas P416 y P417 del mezclador M4G, que las combina en P418. El módulo mezclador M4H acepta tramas de P411 y P418 en las patillas de entrada conectadas P419 y P420, mezclándolas en una trama compuesta única en la patilla P421. Finalmente, el módulo divisor M41 produce múltiples salidas en las patillas P423 y P424. Este módulo podría realizar también el tratamiento además de dividir una sola trama en subtramas.
Cada conducto de datos en continuo incluye un asignador de memoria para asignar y desasignar tramas de memoria para los datos en continuo que pasan por un conducto. La trama general asignada se denomina una trama física, porque ocupa espacio físico en una memoria. Las subtramas dentro de la trama general se denominan tramas virtuales, porque están dentro de la trama general, y no requieren espacio de memoria físico separado o adicional. El recuadro de trazos 410 indica una posición para un asignador 410 para el conducto 400; en este ejemplo, el asignador se asigna a la patilla P421 del módulo M4H. La solicitud 777.183US1 describe cómo seleccionar la posición y las especificaciones de un asignador para un conducto dado. Como se explica a continuación, un asignador a los efectos presentes puede asignar más tramas complejas que las de la solicitud 777.183US1.
La figura 4B simboliza una trama compleja de datos 420 para uso con el conducto ejemplar 400 de la figura 4A. En esta descripción, el término "trama" se puede referir a cualquier trama, ya forme o no una parte de otra trama o tenga otras tramas dentro de ella. El término "trama compuesta" se refiere a una trama que tiene o puede tener otras tramas anidadas dentro de ella. Una "subtrama" es una trama que está o puede estar anidada dentro de otra trama. La trama compuesta 420 se denomina F421, porque representa la trama general de datos manejada por el asignador 410 situado en la patilla P421. Las dos subtramas de la trama F421 se marcan F419 y F420 porque se producen en las patillas P419 y P420. F419 a su vez tiene más subtramas F407 y F408. Las tramas de entrada F401, F402 y F404, F405 son subtramas de F407 y F408, respectivamente. Las subtramas de F420 son tramas de entrada F412 y F414.
La figura 4C muestra otra representación 430 de la estructura de la trama general compuesta para el conducto 400. El árbol de anidamiento de tramas compuestas 430 tiene bordes dirigidos que representan la dirección de flujo de datos. Hay tres casos posibles, dependiendo de las posiciones relativas de grafo de las patillas que están asociadas con las tramas. Una patilla puede estar hacia arriba, hacia abajo, o al mismo nivel que la otra patilla. Las subtramas de entrada F401 y F402 fluyen a un nodo que contiene una trama que puede estar marcada como F403, referenciada a la patilla de salida P403, o como F407, referenciada a la patilla P407. Las subtramas de entrada F404 y F405 fluyen igualmente al nodo F406/F408. Las subtramas F407 y F408 se mezclan igualmente en una trama marcada F409, F410, F411, o F419, porque la misma trama sale a las cuatro patillas correspondientes. Igualmente, las mismas subtramas F416 y F417 también pueden estar marcadas F412, F413 y F414, F415, respectivamente. Éstas son también subtramas de F418, también denominadas F420. Este flujo ascendente termina en la fusión de F419 y F420 a la trama compuesta entera F421, F422. El flujo de datos hacia abajo de esta trama completa prosigue a sus subtramas F423 y F424.
Las tramas de datos en continuo a través de un conducto usando una sola trama general física tal como F421 requiere que el administrador de continuo 340, figura 3, realice la administración y el control de la memoria de trama. Esto requiere resolver las dependencias del asignador de trama, lo que se puede hacer construyendo los árboles de anidamiento tal como 430. Las facilidades convencionales de datos en continuo de sistema operativo no proporcionan suficientes condiciones para generar un anidamiento único en algunos casos. La información relevante suministrada por WDM-CSA, por ejemplo, se limita a las propiedades de trama de patillas de módulo individuales, la topología del grafo, y los límites de los conductos de datos.
La figura 5 ilustra una situación problemática. En la figura 5A, el conducto 500 incluye dos funciones simples M5A y M5B y dos funciones reestructurantes, un mezclador/divisor M5C y un mezclador M5D. La convención para nombrar las patillas y las tramas sigue la de la figura 4.
Una ventaja de la invención es que reduce el número de conductos en muchos grafos de datos en continuo, evitando la colocación de mezcladores y divisores en cascada en conductos separados. Sin embargo, un único grafo general todavía puede incluir múltiples conductos de trama compuesta según la invención. En ese caso, los conductos se unen entre sí de la misma manera que la descrita en el expediente de solicitud 777.183US1.
La figura 5B muestra una disposición posible 510 de una trama compuesta que sirve al conducto 500. La porción mezclador del módulo MSC mezcla la subtrama F502 (la misma que F505) con la subtrama F507 (F504) en la trama compuesta F506 y la trama F508. El mezclador MSD combina después estas dos tramas en otra trama compuesta F510 en la patilla de salida P510 del conducto. El diagrama de árbol de anidamiento 520, figura 5C, muestra esta solución de la misma forma que los árboles 430 representan la disposición de trama del conducto 400, figura 4.
La figura 5D muestra otra configuración 530 para el mismo conducto 500. La disposición de trama 531 tiene subtramas F502, F504, y F508 anidadas en una trama compuesta F506 en un punto donde el módulo M5C ha terminado de mezclarlas, pero antes de que el módulo M5D comience a fusionar sus datos de entrada en las patillas P509 y P511. El árbol de anidamiento 540 en la figura 5E demuestra que el módulo M5D no tiene que asignar realmente más memoria para su trama compuesta de salida F510 que la memoria requerida para sus entradas F509 y F511; puede enviar los datos mezclados directamente a la trama compuesta F509 (la misma que la trama F506).
Así, una primera configuración, figuras 5B y 5C, tiene la trama F510 como la trama física general asignada por el módulo de función M5D para el conducto 500. En una segunda configuración, figuras 5D y 5E, el módulo M5C asigna la trama F506 como la única trama general física. Ambas configuraciones cumplen la topología de grafo y los límites de conducto 500. Por lo tanto, el caso general necesita limitaciones adicionales para especificar asignadores de trama para tramas compuestas. El administrador de continuo 340, que tiene acceso a las funciones gráficas generales, puede suministrar esta información en forma de árboles de anidamiento de trama compuesta adicionales.
El primer objetivo al mejorar el flujo de datos en continuo es asignar un asignador a cada conducto para administrar la trama general para dicho conducto. La solicitud 777.183US1 describe la operación de asignadores de memoria 320, figura 3, para tramas simples, y cómo colocarlas dentro de conductos. La presente invención amplía tales asignadores para manejar tramas anidadas complejas.
La figura 6 recapitula el proceso general de flujo de datos de la solicitud 777.183US1, y añade un método para mejorar el flujo de datos de trama compuesta. El bloque 601 de la figura 6A asigna valores de algunos parámetros a cada unidad de función en un grafo de datos en continuo. En el bloque 602, el usuario, programa de aplicación, u otro software de cliente establece las finalidades generales para el grafo.
El bloque 603 construye el grafo deseado, incluyendo definir un conjunto preliminar de conductos. Los bloques 610 realizan operaciones adicionales para tramas compuestas. El bloque 611 recoge datos de parámetros asignados a los filtros en el bloque 602 relativos a las subtramas de los módulos del grafo. Un parámetro es la topología de conducto sugerida por filtro: la asociación entre patillas y conductos para cada filtro. Un filtro expresa esta información como propiedades opcionales para mezcladores y divisores, como el conjunto de listas de las patillas de filtro que corresponden a un conducto particular. Por ejemplo, el mezclador M4G, figura 4, especifica que las patillas P416, P417, y P418 pueden pertenecer a un conducto único. Un filtro puede especificar múltiples topologías en orden de su preferencia. El administrador de continuo WDM-CSA 340 selecciona una topología de conducto para cada filtro de la lista sugerida por filtro cuando construye los conductos para el grafo completo. Un señalizador de "desplazamiento constante" puede prometer que un filtro mantendrá una subtrama en la misma posición dentro de su trama compuesta en todo momento cuando se reproduzca el grafo. Este señalizador se establece como una propiedad de trama de la patilla de filtro asociada con la subtrama. Si el señalizador está puesto, un valor de desplazamiento de subtrama especifica el desplazamiento constante. (Estos dos se pueden combinar, por ejemplo, un valor de desplazamiento negativo puede actuar como un señalizador de que no se garantiza que el desplazamiento de subtrama sea constante). El valor de desplazamiento es varios bytes con relación a la dirección de trama compuesta del mismo filtro. El administrador de grafos 340 calculará las direcciones de subtrama con relación a la trama física real de su conducto del árbol de anidamiento de anchura de conducto y cada desplazamiento de subtrama del filtro. En muy pocos casos, tal como cuando el cliente de grafo requiere transformaciones de memoria insólitas, se debe suministrar un árbol de anidamiento adicional; ésta es la situación ilustrada en las figuras 5D y 5E.
El bloque 612 construye un árbol de anidamiento único para cada conducto que tiene una trama compuesta. Cuando se establece una aplicación 112 para reproducir un grafo, adquiere el grafo en el bloque 604.
El bloque 605 finaliza los conductos. Los bloques 620 establecen tramas compuestas dentro del proceso general del bloque 605. El bloque 621 selecciona los tamaños de la trama general y de cualesquiera subtramas, si es compuesta.
El bloque 622 determina si el conducto tiene o no mezcladores en cascada, tal como M4A-M4C-M4D-M4H y M4G-M4H en la figura 4A. Si es así, el bloque 623, realizado por el administrador de conducto 343, figura 3, construye dos tablas 700 que especifican la disposición de una trama compuesta. Como se muestra en la figura 7A, la tabla de desplazamiento 710 tiene una entrada 711 para cada patilla de cada módulo en un conducto y una columna 712 que lista una cantidad de desplazamiento para cada entrada. Las entradas ilustrativas en la figura 7 siguen el conducto ejemplar 400 mostrado en la figura 4. La subtrama F401 en la patilla P401 en la figura 4A está desplazada del comienzo de la trama general compuesta F421 una cantidad de bytes simbolizada por la cantidad Desplazamiento #01, e igualmente para las otras subtramas. Las subtramas en algunas patillas son naturalmente las mismas que las de otras patillas, de manera que múltiples entradas tienen el mismo desplazamiento. La tabla de control de conducto 720 en la figura 7B tiene una entrada 721 para cada módulo de filtro en el conducto. La columna 722 lista otros módulos en el mismo conducto que suministran tramas de datos a dicho módulo. Por ejemplo, el módulo M4C recibe datos en continuo de los módulos de filtro M4A y M4B. Los módulos en la sección "Inicio" 723 aceptan datos de fuera del conducto. Las entradas 724 indican módulos dependientes. Las tablas 710 y 720 no tienen que reconstruirse o modificarse después de finalizar el grafo. El uso de estas tablas para mejorar el flujo de control del grafo en continuo se explica a continuación, en conexión con la figura 6B.
Los bloques 630 ponen el asignador de memoria de conducto. Si 631 halla algún mezclador dentro del conducto, el bloque 632 asigna el asignador a la patilla de salida del mezclador más hacia abajo en el flujo de datos. En el conducto ejemplar 400, ésta es la patilla P421 del módulo M4H. Si el bloque 633 halla que el conducto no contiene mezcladores pero no incluye divisores, el bloque 634 asigna el asignador a la patilla de entrada del divisor más hacia arriba en el conducto. En el conducto ejemplar 400, ésta sería la patilla P422 del módulo M41. Si no hay mezcladores ni divisores, el bloque 635 asigna un asignador como se describe en la solicitud 777.183US1.
El grafo está listo para reproducción, es decir, listo para procesar datos en continuo mediante sus módulos, en el bloque 606 de la figura 6B.
El control del grafo durante la reproducción puede emplear los mecanismos descritos en el expediente de solicitud 777.184US1 en tramitación, usando paquetes de petición de E/S (IRP) enviados desde una patilla a otra para enviar una trama de datos y devolver tramas completadas.
Donde un conducto tiene mezcladores en cascada como se ha descrito anteriormente, la invención no solamente mejora el flujo de datos, sino también puede mejorar el flujo de control para reducir la carga de procesado cuando se reproduce el grafo. Un aspecto importante de los grafos en continuo es minimizar el número general de transacciones de control necesarias para administrar el flujo de tramas compuestas para propagar datos en continuo en un conducto. El control ya es eficiente para divisores en cascada en un conducto, porque los datos y el control fluyen en la misma dirección. Sin embargo, para mezcladores en cascada dentro de un conducto, el flujo de datos y control tienen direcciones opuestas, porque las tramas se dividen en subtramas en una dirección hacia arriba, hacia las fuentes de los datos. El control convencional de grafos en continuo iniciaría transacciones de control en la raíz del árbol de anidamiento de trama compuesta, y propagaría hacia arriba con relación al flujo de datos. Esto puede crear una cantidad considerable de carga. Por ejemplo, el conducto entero 400 de la figura 4 debe propagar un paquete de petición de E/S (IRP) u otra transacción de control mediante todos los filtros antes de poder comenzar a tomar datos de cualquiera de las fuentes M4A, M4B, M4E, y M4F a las subtramas F401, F402, F404, y F405. Una secuencia de control convencional para conducto 400 proseguiría como sigue:
* M4H asigna la trama física F421 y la divide para asignar tramas F419 y F420.
* M4H envía IRP al filtro situado hacia arriba M4D, pasando el desplazamiento de F419.
* M4H envía IRP al filtro situado hacia arriba M4G, pasando el desplazamiento de F420.
* M4D envía IRP al filtro situado hacia arriba M4C, pasando el desplazamiento de F419.
* M4G divide F420 para asignar tramas F416 y F417.
* M4G envía IRP al filtro situado hacia arriba M4E, pasando el desplazamiento de F416.
* M4G envía IRP al filtro situado hacia arriba M4F, pasando el desplazamiento de F417.
* M4C divide F419 para asignar tramas F407 y F408.
* M4C envía IRP al filtro situado hacia arriba M4A, pasando el desplazamiento de F407.
* M4C envía IRP al filtro situado hacia arriba M4B, pasando el desplazamiento de F408.
Por lo tanto, los filtros M4C, M4D, M4H, y M4G deben procesar cada subtrama dos veces: una vez para asignar una subtrama, y de nuevo para procesar los datos. Cuando alguno del conjunto de filtros situados hacia arriba completa su subtrama, el filtro emisor debe comprobar si sus otros filtros situados hacia arriba han terminado. Por ejemplo, si M4A devuelve la subtrama completada F407 a M4C, M4C debe comprobar si su subtrama F408 está completa.
Con el sistema presente de tramas compuestas, un conducto puede soportar múltiples subtramas asignadas y que circulan simultáneamente. En el caso común donde las subtramas mantienen una relación fija a la trama general, es posible mejorar el flujo de control dentro de un conducto realizando transacciones de control justo a tiempo. Poner el señalizador de desplazamiento constante antes mencionado indica que no se requiere sincronización o administración personalizada, y que los desplazamientos de las subtramas del comienzo de la trama compuesta nunca cambian.
La figura 6B muestra cómo mejorar el control de flujo en un conducto que tiene subtramas de desplazamiento constante evitando atravesar el conducto entero y el envío de una transacción de control a cada tiempo de transacción, es decir, siempre que cualquier filtro completa una subtrama, tanto si dicha terminación permite que tenga lugar otro procesado adicional como si no. Cuando los filtros en un conducto tienen puestos sus señalizadotes de desplazamiento constante, se realizan los bloques 640-660 para ejecutar transacciones solamente en los tiempos necesarios para el flujo real de datos. Además, la información de estado de trama registrada en estas tramas proporciona información clara y de contexto de tiempo de ejecución a lo ancho del conducto que es útil a quienes diseñan y mantienen sistemas en continuo, que son complejos, asíncronos y distribuidos. La figura 6B muestra solamente la operación de un conducto único; frecuentemente un grafo contiene conductos múltiples que se ejecutan al mismo tiempo.
Los bloques 640 se ejecutan asíncronamente para cada trama en un conducto, como se simboliza en el bloque 641; un conducto puede tener múltiples tramas que circulan al mismo tiempo. Siempre que el bloque 642 detecta que el conducto necesita una trama nueva, el bloque 643 hace que el asignador 410, figura 4, la cree. El bloque 644 construye e inicializa una nueva tabla de control para dicha trama. La figura 8 muestra tablas de control de trama 800 para varias tramas activas. La tabla 810, asociada por la lengüeta 811 con una primera trama circulante, tiene una entrada 812 para cada módulo de filtro M4A-M41, usando de nuevo el conducto 400 como ejemplo ilustrativo. La columna 813 contiene un señalizador para cada entrada, indicando si cada módulo ha procesado o no dicha trama particular. La tabla 820, asociada por la lengüeta 821 con otra trama en circulación al mismo tiempo, tiene las mismas entradas 822, aunque naturalmente los valores de los señalizadotes 823 serán normalmente diferentes. Una tabla recién creada tiene todos los señalizadotes quitados.
Los bloques 650 son realizados por cada módulo de filtro enumerado en la sección de "Inicio" 723 de la tabla de control de conducto 720, figura 7, como se simboliza en el bloque 651. Después de que los bloques 640 han emitido una trama nueva, cada módulo de inicio comienza una operación de suministro de datos 652 para llenar su subtrama de la trama nueva desde fuera del conducto -desde otro conducto o de un otro dispositivo de almacenamiento o hardware.
Los bloques 660 se ejecutan repetidas veces y de forma asíncrona por cada módulo de conducto, cuando los filtros realizan sus operaciones. Siempre que el bloque 661 halle que un filtro particular ha terminado su operación en una trama o subtrama, el bloque 662 pone un señalizador de terminación 813 ó 823 en la entrada 812 ó 822 de la tabla 810 ó 820 para dicha trama circulante. Para cada entrada 721 en la que aparece como una fuente en columna 722, el bloque 663 hace que un módulo verifique la tabla de control de trama para determinar si todos los otros módulos que suministran datos al mismo módulo situado hacia abajo han terminado sus operaciones en dicha trama. Si el bloque 664 halla que todos estos otros módulos han terminado sus operaciones en dicha trama (es decir, si están puestos los señalizadores de terminación para sus entradas), el bloque 665 inicia una transacción de control para el módulo siguiente hacia abajo en el conducto. Es decir, se reclama un módulo situado hacia abajo solamente cuando todos sus datos han quedado disponibles.
Por ejemplo, cuando el módulo M4B, figura 4, ha terminado de adquirir y procesar la subtrama F406, pone su señalizador de terminación en la tabla de control de trama apropiada. Después consulta la tabla de control de conducto y halla que el filtro situado hacia abajo M4C también depende de la subtrama F403 del módulo M4A. El módulo M4B lee la misma tabla de control de trama para determinar si el módulo M4A ya ha referido la terminación de la subtrama F403 poniendo el señalizador para su entrada de tabla de control de trama. Si es así, M4B inicia una transacción de control a M4C para empezar a mezclar tramas F403 y F406. De otro modo, no se produce transacción de control en ese tiempo. Después, en un tiempo posterior cuando M4A completa el procesado de la subtrama F403 y pone el señalizador M4A, consulta y halla que M4B ya ha puesto su señalizador. Por lo tanto, M4A llama al módulo M4C. Es decir, el último módulo en terminar una subtrama requerida por un módulo situado hacia abajo es el único que inicia una transacción de control para dicho módulo.
Como se ha indicado anteriormente, este método se realiza para cada conducto en un grafo que tiene tramas compuestas. En el caso más general, conductos múltiples pueden pasar por el mismo filtro; para tener en cuenta esta situación, es posible basar las tablas de control de trama y la tabla de control de conductos en patillas de módulo individuales, en vez de en los filtros propiamente dichos. Cualquier dependencia entre conductos, tal como requisitos de tamaño de datos, sincronización de tiempo, uso de recursos, finalidades generales del grafo, y así sucesivamente, es resuelta por los administradores de conducto entre ellos de manera convencional.
Conclusión
La presente invención mejora el flujo de datos y el control de datos en continuo mediante un grafo que tiene módulos de procesado de divisor/mezclador para reestructurar los datos así como para transformarlos.
Aunque solamente se han explicado específicamente divisores y mezcladores, se pueden considerar como casos de una clase más amplia de operaciones reestructurantes en las que la invención también tiene utilidad. Por ejemplo, un filtro de envío podría transferir múltiples subtramas a un filtro receptor mediante una única patilla de salida. Una aplicación práctica es un filtro de compresión de silencio que tiene una única patilla de entrada y una única patilla de salida. Tal filtro recibe una trama de datos audio en su patilla de entrada, analiza los datos para saltar todos los períodos de silencio, y después pasa los segmentos sin silencio a un filtro situado hacia abajo mediante la única patilla de salida. Este subgrafo -el compresor de silencio y su consumidor situado hacia abajo. Se pueden implementar usando un conducto único con múltiples subtramas. La trama de entrada del compresor de silencio es la trama compuesta, las múltiples subtramas de salida del compresor de silencio son las partes de la trama compuesta de entrada. Tal implementación reduce la memoria usada por el subgrafo, porque emplea una trama compuesta única para el subgrafo entero. También puede reducir la carga de procesado de la CPU, si el compresor de silencio no anula muchos datos.

Claims (73)

1. Un método para procesar tramas (F401-F511) mediante módulos (113, 302-304, 331-334, M4A-M5D) en un ordenador digital (120), caracterizado porque las tramas son tramas de datos en continuo y el método incluye:
construir un conducto (400, 500) como un grupo conectado de múltiples módulos de los módulos, siendo al menos uno de los módulos un módulo reestructurante;
asignar tramas compuestas (420, F421, ...) que tienen subtramas predefinidas (F419, F420, ...);
transportar los datos en continuo a través de diferentes módulos de los módulos en el grupo en diferentes subtramas de las subtramas; y
reestructurar los datos entre al menos algunas subtramas en el módulo reestructurante (M4A-M4C, M4G, M4H, M4I; M5C, M5D).
2. El método de la reivindicación 1, donde la trama compuesta es una trama física en una memoria.
3. El método de la reivindicación 1 ó 2, donde las subtramas son tramas virtuales definidas en la misma memoria que la trama física.
4. El método de una de las reivindicaciones 1 a 3, incluyendo además asignar un asignador (410) para las tramas compuestas a uno de los módulos en el conducto.
5. El método de la reivindicación 4, donde el asignador se asigna al módulo reestructurante situado más hacia arriba en el conducto.
6. El método de la reivindicación 4, donde el asignador se asigna al módulo reestructurante situado más hacia abajo en el conducto.
7. El método de una de las reivindicaciones 1 a 6, incluyendo además construir un árbol de anidamiento de tramas que especifica cómo se han de reestructurar los datos en el módulo reestructurante.
8. El método de la reivindicación 1, incluyendo además:
repetir los pasos anteriores para más conductos incluyendo más módulos en el ordenador; y
unir los conductos en un grafo.
9. El método de una de las reivindicaciones 1 a 8, donde transportar los datos en continuo incluye emitir una transacción de control al módulo reestructurante solamente cuando todas las subtramas procesadas por dicho módulo están disponibles.
10. El método para una de las reivindicaciones 1 a 9, incluyendo además:
realizar operaciones en las subtramas en cualquiera de los módulos que suministran datos al módulo reestructurante;
después de la terminación de las operaciones para todas las subtramas que suministran datos al módulo reestructurante, emitir una transacción de control al módulo reestructurante; y
realizar operaciones en las subtramas suministradas al módulo reestructurante en respuesta a la transacción de control.
11. El método de la reivindicación 10, donde asignar la trama compuesta incluye construir una tabla de control de trama que tiene una entrada para cada módulo en el conducto y un señalizador para cada uno de los módulos que indican si un módulo particular ha terminado una operación en la trama.
12. El método de la reivindicación 11, incluyendo además poner uno de los señalizadores siempre que un módulo ha terminado una operación en una trama.
13. El método de una de las reivindicaciones 10 a 12, incluyendo además construir una tabla de desplazamiento que especifica la estructura de las subtramas dentro de la trama compuesta.
14. El método de una de las reivindicaciones 10 a 13, incluyendo además construir una tabla de control de conducto que especifica la estructura de los módulos en el conducto.
15. El método de la reivindicación 14, donde la tabla de control de conducto tiene una entrada para al menos algunos de los módulos en el conducto, y donde cada entrada especifica qué otro módulo o módulos suministran datos a uno de los módulos en el conducto.
16. El método de la reivindicación 14, donde la tabla de control de conducto tiene una entrada para cada módulo en el conducto que suministra datos desde fuera del conducto.
17. El método de una de las reivindicaciones 10 a 16, incluyendo además repetir los pasos anteriores solapados en el tiempo de tal manera que una pluralidad de tramas compuestas circulen simultáneamente dentro del conducto.
18. El método de la reivindicación 17, incluyendo además construir una tabla separada de control de trama para cada una de las tramas compuestas.
19. El método de una de las reivindicaciones 1 a 18, donde dicho ordenador digital tiene múltiples módulos reestructurantes, donde dichas subtramas predefinidas están asociadas con los respectivos módulos reestructurantes.
20. El método de la reivindicación 19, incluyendo además recoger un señalizador de desplazamiento constante para cada módulo.
21. El método de la reivindicación 20, incluyendo además recoger un valor de desplazamiento para cualquier módulo cuyo señalizador constante está puesto.
22. El método de la reivindicación 20, incluyendo además construir una tabla de desplazamiento que especifica relaciones de las subtramas a la trama compuesta.
23. El método de la reivindicación 20, incluyendo además especificar tamaños de memoria para cada una de las subtramas dentro de la trama compuesta.
24. El método de una de las reivindicaciones 19 a 23, donde una pluralidad de los módulos reestructurantes son de un tipo único en una cascada en el conducto.
25. El método de la reivindicación 24, donde el asignador se asigna a un módulo particular en respuesta al tipo de módulos en cascada.
26. El método de la reivindicación 24, donde la pluralidad de módulos en cascada son mezcladores, y donde el asignador se asigna a un mezclador situado hacia abajo de los mezcladores en cascada.
27. El método de la reivindicación 24, donde la pluralidad de módulos en cascada son divisores, y donde el asignador se asigna a un divisor situado hacia arriba de los divisores en cascada.
28. El método de una de las reivindicaciones 19 a 27, donde transportar los datos en continuo incluye emitir transacciones de control a los módulos reestructurantes solamente cuando todas las subtramas procesadas por los respectivos módulos resultan disponibles.
29. El método de una de las reivindicaciones 19 a 28, incluyendo además:
asignar una trama compuesta que tiene múltiples subtramas para los diferentes módulos reestructurantes;
realizar operaciones de suministro de datos en algunas de las subtramas en módulos fuente de los módulos;
cuando ha terminado cada una de las operaciones de suministro de datos, determinar si uno de los módulos reestructurantes tiene todas las subtramas requeridas para realizar una operación;
si es así, emitir una transacción de control al módulo reestructurante;
realizar una operación en los módulos reestructurantes después de recibir una transacción de control.
30. El método de la reivindicación 29, donde los módulos fuente de los módulos son los que reciben datos de fuera del conducto.
31. El método de la reivindicación 29 ó 30, donde una pluralidad de módulos reestructurantes son mezcladores.
32. El método de la reivindicación 31, donde una pluralidad de mezcladores se ponen en cascada en el conducto.
33. El método de una de las reivindicaciones 29 a 32, incluyendo además:
cuando ha terminado cada una de las operaciones de suministro de datos, determinar si otros de los módulos reestructurantes tienen todas las subtramas requeridas para que realicen operaciones;
si es así, emitir transacciones de control a los otros módulos reestructurantes;
realizar operaciones en los otros módulos reestructurantes después de recibir las transacciones de control.
34. El método de una de las reivindicaciones 29 a 33, incluyendo además:
almacenar un señalizador de terminación separado para cada uno de los módulos en el conducto;
poner uno de los señalizadores de terminación cuando un módulo correspondiente de los módulos ha terminado una operación en la trama.
35. El método de la reivindicación 34, incluyendo además:
leer una tabla que lista todos los otros módulos que suministran datos al módulo reestructurante;
determinar si se ha puesto un señalizador de terminación para todos los otros módulos.
36. El método de una de las reivindicaciones 29 a 35, incluyendo además repetir los pasos anteriores solapados en el tiempo de tal manera que una pluralidad de tramas compuestas circulen dentro del conducto simultáneamente.
37. El método de la reivindicación 36, incluyendo además construir una tabla separada de control de trama para cada una de las tramas compuestas.
38. Un medio legible por ordenador que lleva instrucciones y datos para hacer que un ordenador digital ejecute el método de una de las reivindicaciones 1 a 37.
39. El medio legible por ordenador de la reivindicación 38, que almacena una estructura de datos utilizables para procesar datos en continuo mediante múltiples módulos de procesado reestructurante en un grafo, incluyendo la estructura de datos:
una trama compuesta única asignada físicamente en una memoria; y
una pluralidad de subtramas virtuales asignadas dentro de la trama compuesta.
40. El medio legible por ordenador de la reivindicación 39, donde diferentes subtramas contienen diferentes tipos de datos.
41. El medio legible por ordenador de la reivindicación 40, donde un tipo de datos son datos vídeo.
42. El medio legible por ordenador de la reivindicación 40, donde otro tipo de datos son datos audio.
43. El medio legible por ordenador de la reivindicación 39, incluyendo además una tabla de desplazamiento para localizar las subtramas con respecto a la trama compuesta.
44. El medio legible por ordenador de la reivindicación 43, donde la tabla de desplazamiento incluye una entrada para cada una de las subtramas y una columna para especificar las posiciones de las subtramas dentro de la trama compuesta.
45. El medio legible por ordenador de la reivindicación 39, incluyendo además una tabla de control de conducto que representa la estructura de un conducto de módulos para procesar datos en continuo en la estructura de datos.
46. El medio legible por ordenador de la reivindicación 45, donde la tabla de control de conducto incluye una entrada para cada uno de los módulos en el conducto.
47. El medio legible por ordenador de la reivindicación 46, donde la tabla de control de conducto incluye una columna fuente para listar otros módulos que suministran datos a los módulos en cada una de las entradas.
48. El medio legible por ordenador de la reivindicación 46, donde la tabla de control de conducto incluye una sección de arranque que lista los módulos que suministran datos desde fuera del conducto.
49. El medio legible por ordenador de la reivindicación 39, incluyendo además una tabla de control de trama para seguir el estado de la trama con respecto a los módulos de procesado.
50. El medio legible por ordenador de la reivindicación 49, donde la tabla de control de trama incluye una entrada para cada uno de los módulos en el conducto.
51. El medio legible por ordenador de la reivindicación 50, donde la tabla de control de trama incluye una columna para mantener señalizadores que indican que cada uno de los módulos ha terminado de procesar la trama.
52. El medio legible por ordenador de la reivindicación 49, incluyendo además una tabla separada de control de trama para cada trama que circula en el conducto en un tiempo particular.
53. Un sistema informático para procesar datos en continuo, incluyendo:
una pluralidad de módulos (113, 302-304, 331-334, M4A-M5D) dispuestos en un conducto (400, 500) para procesar los datos en continuo, reestructurándose al menos algunos de los módulos;
una pluralidad de administradores de memoria (320) para asignar tramas compuestas conteniendo subtramas para contener datos en continuo, estando asociadas diferentes subtramas con diferentes módulos de los módulos;
un administrador de control (340) para emitir transacciones de control para iniciar operaciones de procesado en los módulos.
54. El sistema de la reivindicación 53 donde el administrador de control envía una de las transacciones de control a un módulo particular solamente cuando algunas de las subtramas asociadas con dicho módulo están disponibles.
55. El sistema de la reivindicación 54, donde algunas subtramas incluyen todas las subtramas que suministran datos al módulo particular.
56. El sistema de la reivindicación 54, donde algunos módulos reciben datos desde fuera del conducto.
57. El sistema de la reivindicación 56, donde el administrador de control emite una transacción de control a algunos módulos cuando una de las tramas compuestas ha sido asignada.
58. El sistema de una de las reivindicaciones 53 a 57, donde al menos algunos de los módulos reestructurantes son mezcladores para combinar múltiples subtramas.
59. El sistema de la reivindicación 58, donde una pluralidad de mezcladores se ponen en cascada en el conducto.
60. El sistema de la reivindicación 59, donde el administrador de control emite una de las transacciones de control a cualquiera de los mezcladores solamente cuando todas las subtramas combinadas por dicho mezclador están disponibles.
61. El sistema de una de las reivindicaciones 53 a 60, incluyendo además una memoria para almacenar las tramas compuestas.
62. El sistema de la reivindicación 61, incluyendo además un procesador que implementa uno o varios módulos reestructurantes.
63. El sistema de la reivindicación 62, incluyendo además un sistema de entrada/salida que implementa uno o varios módulos.
64. El sistema de una de las reivindicaciones 53 a 63, incluyendo además:
un administrador de flujo (341, 342) para construir un grafo que tiene al menos un conducto incluyendo una pluralidad de los módulos reestructurantes, y para asignar uno de los administradores de memoria al conducto.
65. El sistema de la reivindicación 64, donde las subtramas se asignan dentro de las tramas compuestas en la memoria.
66. El sistema de la reivindicación 64 ó 65, incluyendo además un procesador.
67. El sistema de la reivindicación 66, incluyendo además un sistema de entrada/salida.
68. El sistema de una de las reivindicaciones 64 a 67, incluyendo además un administrador de conducto (343) para construir representaciones de las estructuras de las tramas compuestas.
69. El sistema de la reivindicación 68, donde una de las representaciones especifica posiciones de las subtramas con respecto a la trama compuesta.
70. El sistema de la reivindicación 68, donde una de las representaciones especifica relaciones de los módulos dentro del conducto.
71. El sistema de una de las reivindicaciones 64 a 70, donde el administrador de control es para transportar los datos en continuo mediante los módulos en varias subtramas.
72. El sistema de la reivindicación 71, donde el administrador de control emite una transacción de control a un módulo reestructurante para iniciar el procesado de una subtrama solamente cuando todas las subtramas procesadas por dicho módulo están disponibles.
73. El sistema de una de las reivindicaciones 53 a 72, dispuesto para realizar el método de una de las reivindicaciones 1 a 37.
ES00928447T 1999-05-12 2000-04-26 Separacion y mezcla de tramas de datos en continuo. Expired - Lifetime ES2200877T3 (es)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US09/310,610 US6748440B1 (en) 1999-05-12 1999-05-12 Flow of streaming data through multiple processing modules
US310596 1999-05-12
US310597 1999-05-12
US09/310,597 US6658477B1 (en) 1999-05-12 1999-05-12 Improving the control of streaming data through multiple processing modules
US09/310,596 US7007096B1 (en) 1999-05-12 1999-05-12 Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US310610 1999-05-12

Publications (1)

Publication Number Publication Date
ES2200877T3 true ES2200877T3 (es) 2004-03-16

Family

ID=27405466

Family Applications (1)

Application Number Title Priority Date Filing Date
ES00928447T Expired - Lifetime ES2200877T3 (es) 1999-05-12 2000-04-26 Separacion y mezcla de tramas de datos en continuo.

Country Status (8)

Country Link
EP (1) EP1190302B1 (es)
JP (1) JP4536266B2 (es)
AT (1) ATE243865T1 (es)
AU (1) AU4668800A (es)
DE (1) DE60003557T2 (es)
DK (1) DK1190302T3 (es)
ES (1) ES2200877T3 (es)
WO (1) WO2000070442A2 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347954B (zh) * 2019-05-24 2021-06-25 因特睿科技有限公司 面向复杂Web应用的服务化方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0782539B2 (ja) * 1988-07-14 1995-09-06 株式会社エイ・ティ・アール通信システム研究所 瞳孔画像撮影装置
US5016282A (en) * 1988-07-14 1991-05-14 Atr Communication Systems Research Laboratories Eye tracking image pickup apparatus for separating noise from feature portions
JPH02224637A (ja) * 1988-11-16 1990-09-06 A T R Tsushin Syst Kenkyusho:Kk 視線検出方法
US5289377A (en) * 1991-08-12 1994-02-22 Trw Inc. Fault-tolerant solid-state flight data recorder
JP2521016B2 (ja) * 1991-12-31 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチメディア・デ―タ処理システム
US6167156A (en) * 1996-07-12 2000-12-26 The United States Of America As Represented By The Secretary Of The Navy Compression of hyperdata with ORASIS multisegment pattern sets (CHOMPS)
US5928331A (en) * 1997-10-30 1999-07-27 Matsushita Electric Industrial Co., Ltd. Distributed internet protocol-based real-time multimedia streaming architecture

Also Published As

Publication number Publication date
EP1190302B1 (en) 2003-06-25
WO2000070442A3 (en) 2002-01-17
EP1190302A2 (en) 2002-03-27
AU4668800A (en) 2000-12-05
JP2002544739A (ja) 2002-12-24
DK1190302T3 (da) 2003-10-13
DE60003557D1 (de) 2003-07-31
JP4536266B2 (ja) 2010-09-01
DE60003557T2 (de) 2004-01-08
WO2000070442A2 (en) 2000-11-23
ATE243865T1 (de) 2003-07-15

Similar Documents

Publication Publication Date Title
US7984448B2 (en) Mechanism to support generic collective communication across a variety of programming models
US7869440B2 (en) Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US5859981A (en) Method for deadlock-free message passing in MIMD systems using routers and buffers
US5566321A (en) Method of managing distributed memory within a massively parallel processing system
Valiant A bridging model for parallel computation
US7257816B2 (en) Digital data processing apparatus and methods with dynamically configurable application execution on accelerated resources
Mellor-Crummey et al. A new vision for Coarray Fortran
EP1492015A2 (en) Information processing system including processors and memory managing method used in the same system
JP2003178039A (ja) 分散共有仮想メモリーとその構成方法
KR20040004542A (ko) 다차원 고속 푸리에 변환 구현 방법, 시스템 및 프로그램기억장치와 다차원 어레이 재배치를 수행하기 위한 방법,시스템 및 프로그램 기억 장치
JP2004192622A (ja) クラスタベースのマルチプロセッサ無線ネットワークでのマイクロプロセッサ通信の方法およびデータ処理システム
JPH09325944A (ja) I/oデバイス及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o
US9930006B2 (en) Method for assigning logical addresses to the connection ports of devices of a server cluster, and corresponding computer program and server cluster
US6877145B2 (en) Automatic generation of interconnect logic components
KR20020064285A (ko) 병렬 컴퓨터의 구조 및 그 구조를 이용한 정보처리유닛
ES2200877T3 (es) Separacion y mezcla de tramas de datos en continuo.
JP3836839B2 (ja) クラスタベースのマルチプロセッサ・システムでのマイクロプロセッサ通信の方法およびデータ処理システム
US20050125486A1 (en) Decentralized operating system
US10839121B1 (en) Data processing engine (DPE) array detailed mapping
Willenberg et al. A heterogeneous gasnet implementation for fpga-accelerated computing
JP6915434B2 (ja) 情報処理システム、情報処理方法及びプログラム
Ward et al. The NuMesh: A modular, scalable communications substrate
Kessler et al. RAVEL, a support system for the development of distributed, multi-user VE applications
Hinrichs Compiler directed architecture-dependent communication optimizations
Dannenberg et al. A system supporting flexible distributed real-time music processing