MXPA03003528A - Estructura de interconexion escalable para operaciones de computo paralelas y acceso paralelo a memoria. - Google Patents

Estructura de interconexion escalable para operaciones de computo paralelas y acceso paralelo a memoria.

Info

Publication number
MXPA03003528A
MXPA03003528A MXPA03003528A MXPA03003528A MXPA03003528A MX PA03003528 A MXPA03003528 A MX PA03003528A MX PA03003528 A MXPA03003528 A MX PA03003528A MX PA03003528 A MXPA03003528 A MX PA03003528A MX PA03003528 A MXPA03003528 A MX PA03003528A
Authority
MX
Mexico
Prior art keywords
data
node
logic
interconnection
nodes
Prior art date
Application number
MXPA03003528A
Other languages
English (en)
Inventor
Coke S Reed
Original Assignee
Interactic Holdings Llc
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 Interactic Holdings Llc filed Critical Interactic Holdings Llc
Publication of MXPA03003528A publication Critical patent/MXPA03003528A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

Procesadores multiples son capaces de tener acceso a los mismos datos en paralelo utilizando varias tecnicas innovadoras; primero, varios procesadores remotos pueden solicitar leer de la misma ubicacion de datos y las solicitudes pueden ser cumplidas en periodos traslapantes; segundo, varios procesadores pueden tener acceso a un elemento de datos localizado en la misma posicion, y pueden leer, escribir, o realizar operaciones multiples en los mismos tiempos traslapantes de elementos de datos; tercero, un paquete de datos puede ser transmitido a varias ubicaciones y una pluralidad de paquetes puede ser transmitida a una pluralidad de conjuntos de ubicaciones objetivo.

Description

ESTRUCTURA DE INTERCONEXION ESCALABLE PARA ACCESO DE COMPUTO PARALELO Y PARA ACCESO DE MEMORIA PARALELA ANTECEDENTES DE LA INVENCION Un problema persistente que se incrementa en sistemas de cómputo masivamente paralelos es el suministro de un flujo de datos suficiente para los procesadores. La Patente de E.U.A. No. 5,996,020 y la Patente de EUA No. 6,289,021 , describen unas estructuras de interconexión de latencia baja de ancho de banda elevado que mejoran significativamente el flujo de datos en una red. Lo que se necesita es un sistema que explote completamente las estructuras de interconexión de latencia baja de ancho de banda elevado soportando el acceso de memoria paralela y de cómputo en una red.
BREVE DESCRIPCION DE LA INVENCION Los procesadores múltiples tienen la capacidad de tener acceso a los mismos datos en paralelo utilizando varias técnicas innovadoras. En primer lugar, varios procesadores remotos pueden solicitar leer de la misma ubicación de datos y solicitar ser ejecutados en períodos de tiempo que se traslapan. En segundo, varios procesadores pueden tener acceso a un artículo de datos localizado en la misma posición, y pueden leer, escribir, o realizar operaciones múltiples en el mismo artículo de datos durante tiempos que se traslapan. En tercer lugar, un paquete de datos puede ser multidifundido a diversas ubicaciones y una pluralidad de paquetes puede ser multidifundida a una pluralidad de grupos de ubicaciones objetivo. En la descripción que se encuentra a continuación, el término "paquete" se refiere a una unidad de datos, preferentemente en forma de serie. Los ejemplos de paquetes incluyen paquetes de Protocolo Internet (IP) cuadros Ethernet, celdas ATM, segmentos de mallas de interruptor que incluyen una porción de un cuadro o paquete más extenso, mensajes de procesador interno de supercomputadora, y otros tipos de mensajes de datos que tienen un límite superior a la longitud del mensaje. El sistema descrito en la presente descripción resuelve problemas similares en las comunicaciones cuando llegan paquetes múltiples a un interruptor de acceso de datos en la misma ubicación. Otras estructuras de la Red Lógica de Niveles Mínimos Múltiples pueden ser utilizadas como un bloque de construcción fundamental en varios dispositivos y sistemas altamente útiles que incluyen dispositivos lógicos, dispositivos de memoria y, computadoras y procesadores de varios tipos y características. Los ejemplos específicos de tales dispositivos y sistemas incluyen las memorias de acceso aleatorio paralelo (PRAMs) y los procesadores de cómputo paralelo. Estos dispositivos y sistemas incluyen la estructura de interconexión de red como un bloque de construcción fundamental con almacenaje incrustado o memoria y lógica. El almacenaje de datos puede tener la forma de anillos primera entrada- primera salida (FIFO).
BREVE DESCRIPCION DE LOS DIBUJOS Las características de las modalidades descritas que se considera serán novedosas son establecidas específicamente en las reivindicaciones anexas. Sin embargo, las modalidades de la invención que se refieren tanto a la estructura como al método de operación, pueden ser entendidas mejor haciendo referencia a la siguiente descripción y a los dibujos que las acompañan. La Figura 1 , es un diagrama de bloque esquemático que muestra un ejemplo de un sistema genérico construido a partir de bloques de construcción que incluyen una pluralidad de estructuras de interconexión de red. La Figura 2, es un diagrama de bloque esquemático que ilustra una estructura de memoria paralela, tal como una memoria de acceso aleatorio paralela (PRAM) que es construida utilizando las estructuras de interconexión de red como elementos fundamentales. La Figura 3, es un diagrama del nivel inferior del interruptor superior que muestra conexiones para un anillo de comunicación, una pluralidad de módulos lógicos, un anillo de almacenaje de datos FIFO distribuidos, y conexiones para el nivel superior del interruptor inferior.
Las Figuras 4A, 4B y 4C son diagramas de bloque que describen el movimiento de los datos a través del anillo de comunicación y el anillo de almacenaje de datos FIFO distribuidos. La Figura 4A, emplea tanto las solicitudes de LECTURA como de ESCRITURA. Las Figuras 4B y 4C emplean a una solicitud de LECTURA en progreso. La Figura 5, ilustra una porción de la estructura de interconexión mientras está ejecutando dos operaciones de lectura, lectura desde el mismo anillo de almacenaje de datos distribuidos que ocurre durante intervalos de tiempo traslapados y el ingreso a un segundo interruptor en donde los datos de lectura son dirigidos a diferentes objetivos. La Figura 6, ilustra una porción de la estructura de interconexión mientras está ejecutando una instrucción de ESCRITURA. La Figura7, es un diagrama de bloque esquemático que ilustra una estructura y una técnica para realizar una operación de multidifusión utilizando direccionamiento indirecto.
DESCRIPCION DETALLADA DE LA INVENCION Haciendo referencia a la Figura 1 , un diagrama de bloque esquemático ilustra un ejemplo de un sistema genérico 100, construido a partir de bloques de construcción que incluyen una o más estructuras de interconexión de red. En el ejemplo ilustrativo, el sistema genérico 100 incluye un interruptor superior 1 10 y un interruptor inferior 112, los cuales están formados a partir de las estructuras de interconexión de red. El término "estructura de interconexión de red" se puede referir a otras estructuras de interconexión. Otros sistemas pueden incluir elementos adicionales que son formados a partir de las estructuras de interconexión de red. El sistema genérico 100 describe varios componentes que pueden ser incluidos como elementos centrales de un sistema de ejemplo básico. Algunas modalidades incluyen otros elementos además de los elementos centrales. Pueden ser incluidos otros elementos, tales como: 1 ) memoria compartida, 2) conexiones directas 130 entre el interruptor superior y el interruptor inferior; 3) conexiones directas 140 entre ambos interruptores y el l/O, y 4) un concentrador conectado entre las unidades lógicas 1 14 y el interruptor inferior 1 12. El sistema genérico 100 tiene un interruptor superior 1 10 que funciona como una terminal de entrada para recibir paquetes de datos de entrada desde líneas de entrada 136 ó barras colectoras de datos 130 desde fuentes externas y posiblemente desde el interruptor inferior, y la distribución de los paquetes a módulos lógicos de memoria en procesador dinámico (DPIM) 1 14. El interruptor superior 1 10 enruta los paquetes dentro del sistema genérico 100 de acuerdo con la información de comunicación contenida dentro de los encabezados de los paquetes. Los paquetes son enviados desde el interruptor superior 110 a los módulos DPIM 114. Las señales de control que van de los módulos DPIM 1 14 al interruptor superior 110 controlan el cronometraje del paquete de inyección para evitar coaliciones. Por consiguiente, se pueden evitar las coaliciones que, de otra forma podrían ocurrir con los datos en las DPIMs ó con datos en el interruptor inferior. El sistema puede pasar información a los elementos de cómputo adicionales, de comunicación, de almacenaje, y otros elementos (no mostrados) utilizando las líneas de salida y las barras colectoras de datos 130, 132, 134 y 136. Los paquetes de datos ingresan al interruptor superior 110 y prosiguen a las DPIMs objetivo 1 14 con base en un campo de dirección en cada paquete. La información contenida en un paquete puede ser utilizada, posiblemente en combinación con otra información, para determinar la operación realizada por las DPIMs lógicas 114, con respecto a los datos contenidos en el paquete y en la memoria DPIM. Por ejemplo, la información contenida en el paquete puede modificar los datos almacenados en la memoria PDIM, debido a que la información contenida dentro de la memoria PDIM será enviada a través del interruptor inferior 112, o debido a que otros datos son generados por un módulo lógico DPIM para salir desde el interruptor inferior. Los paquetes que provienen de la DPIM son pasados al interruptor inferior. Otra opción en el sistema genérico 100 es la inclusión de unidades de cómputo, unidades de memoria, o ambas. Las unidades de cómputo 126 pueden ser colocadas para enviar paquetes de datos a través de la unidad l/O 124 al exterior del sistema 100, ó al interruptor superior 110, a ambos. En el caso de que el interruptor inferior esté enviando un paquete al interruptor superior, el paquete puede ser enviado directamente o puede ser enviado a través de uno o más módulos de interconexión ( no mostrados) que manejan el cronometraje y control entre circuitos integrados que son subcomponentes del sistema 00. El almacenaje de datos en un ejemplo del sistema, tiene la forma de anillos de almacenaje de datos R primera entrada-primera salida (FIFO) en la DPIM 1 14, y el almacenaje de datos convencionales asociados con unidades de cómputo (CUs) 126. Un anillo FIFO es un grupo conectado en forma circular de registros de cambio de bit sencillo. Un anillo FIFO incluye dos tipos de componentes. En un primer ejemplo que es convencional, el anillo FIFO incluye registros de cambio de bit sencillo que son conectados únicamente al siguiente registro de cambio de bit sencillo para formar un FIFO 310 simple. En un segundo ejemplo, otros registros de cambio del anillo son registros de bits múltiples o de bits sencillos contenidos dentro de otros elementos de sistema, tales como los módulos lógicos 114. Tomados en conjunto ambos tipos de componentes están conectados en serie para formar un anillo. Como un ejemplo, la longitud total de FLde un anillo FIFO puede ser de 200 bits con 64 bits almacenados en una pluralidad de módulos lógicos L y los 36 bits restantes almacenados en registros conectados en serie del FIFO. Un reloj de sistema amplio es conectado a los elementos FIFO y cambia los registros y produce bits de datos para avanzar a la siguiente posición en un modo de "brigada de cubo". Un período del ciclo es definido para ser el tiempo en períodos de reloj necesarios para que los datos completen precisamente un ciclo de un anillo FIFO. El valor entero del período del ciclo es el mismo que la longitud en componentes del anillo FIFO. Por ejemplo, para un anillo de 200 componentes (longitud de 200), el período de ciclo es de 200 períodos de reloj del sistema. El sistema también puede incluir fuentes de cronometraje locales o relojes que avanzan a una proporción diferente. En algunas modalidades, todos los anillos F1FO en el sistema tienen la misma longitud, o varían en enteros múltiples de una longitud mínima previamente determinada. En modalidades alternativas, un anillo es una estructura de barra colectora de datos con una pluralidad de trayectorias paralelas con la cantidad de datos contenidos en el anillo, que son un múltiplo entero de una longitud del anillo Fi_. En el sistema genérico 100, un interruptor superior tiene la capacidad de manejar paquetes que tienen diversas longitudes superiores a una longitud máxima de sistema. En algunas aplicaciones, todos los paquetes pueden tener la misma longitud. Más comúnmente, los paquetes que tienen diferentes longitudes pueden ser ingresados al interruptor superior. La longitud de un paquete determinado es PL, en donde PL, no es más grande que FL. De manera similar, el interruptor inferior puede manejar paquetes de diversas longitudes. Las modalidades típicas del sistema genérico 100 generan datos que tienen diferentes longitudes de bits de acuerdo con las funciones y operación de los módulos lógicos DPIM 1 14 y CUs 126. Las DPIMs pueden funcionar de forma independiente o pueden ser una pluralidad de sistemas, no mostrados, que acumulan datos para las DPIMs y pueden emitir datos para las DPIMs o para otros elementos contenidos en el interior o exterior del sistema 100. Haciendo referencia a la Figura 2, un diagrama de bloque esquemático ilustra un ejemplo de un sistema de memoria de acceso aleatorio paralelo (PRAM) 200, construido a partir de bloques de construcción menores que aquellos incluidos en la Figura 1. El sistema PRAM incluye un interruptor superior 110, un concentrador 150, y un interruptor inferior 1 12, los cuales están formados a partir de estructuras de interconexión de red. El sistema también incluye las DPIMs 114 que almacenan datos. Las unidades de la DPIM normalmente tienen la capacidad de ejecutar funciones de LECTURA Y ESCRITURA , de tal manera que el sistema puede ser utilizado como una memoria de acceso aleatorio. En una modalidad ilustrativa, un paquete de datos que ingresa al interruptor superior 1 10 tiene la siguiente forma: Carga útil | Código de operación 2 | Dirección 2 I Código de operación 1 | Dirección 1 | BIT de Cronometraje, Abreviado como: CARGA UTIL | OP2 | AD2 | OP1 | AD1 | BIT. Los números de bits en el campo de CARGA ÚTIL son designados como PayL. El número de bits en OP2 y OP1 , son designados como OP1 L y OP2L, respectivamente. Los números de bits en AD2 y AD1 son designados como AD2L y AD1 L, respectivamente. El campo de BIT es un bit simple en longitud en las modalidades preferidas. siguiente cuadro es una breve descripción de los campos de paquetes.
Campo Descripción BIT El valor '1' indica que un paquete está presente, el valor '0' indica que no está presente un paquete. AD1 Dirección utilizada por el interruptor superior 110 para enrutar el paquete al DPIMADI objetivo 1 14 OP1 Código de operación utilizado por el DPIM objetivol 14, el cual especifica qué acción o proceso ejecuta el DPIM con los objetos de la acción o procedimiento que está en el campo de carga útil y el contenido de datos almacenados en uno o más anillos de almacenaje R colocados en el DPIM objetivo. AD2 Dirección utilizada por el interruptor inferior 1 12 para enrutar la salida DPIM a un dispositivo extemo a través de enlaces de salida 132 ó a una unidad de cómputo 126. En algunas operaciones, el campo AD2 no es utilizado. Si es utilizado, el campo AD2 incluye un campo BIT2 conductor que es ajustado a "1". OP2 El código de operación utilizado por la unidad de cómputo 126 ó el dispositivo externo localizado en el puerto de salida del interruptor inferior 24 que tiene la dirección AD2. En algunas operaciones, el campo OP2 no es utilizado. CARGA UTIL El contenido de datos o "carga útil" del paquete que es enrutado por el interruptor de salida 110 al DPIM objetivo 1 14 en dirección AD1. En algunas operaciones, el campo de CARGA ÚTIL puede ser alterado por el DPIM 1 14 y además transmitido por el interruptor inferior 12 al puerto de salida especificado por AD2. En algunas operaciones, el campo de carga útil no es utilizado.
El campo BIT ingresa primero al interruptor, y siempre está ajustado a 1 para indicar que está presente un paquete. El campo BIT también es descrito como "bit de tráfico". El campo AD1 es utilizado para enrutar el paquete a través del interruptor superior a la DPIM objetivo del paquete. El interruptor superior 110 puede ser colocado en una pluralidad de niveles y columnas jerárquicas con paquetes que pasan a través de los niveles. Cada vez el paquete ingresa un nuevo nivel del interruptor superior 1 10, un bit del campo AD1 es removido, y por lo tanto, el campo es recortado. El sistema 200 utiliza la misma técnica. Cuando el paquete sale del interruptor superior 10, no quedan bits en el campo AD1. Por lo tanto, el paquete abandona el interruptor superior teniendo la siguiente forma: CARGA UTIL | OP2 | AD2 | OP1 | BIT. Los sistemas 100 y 200 incluyen unidades DPIM. La Figura 3, es un diagrama de bloque esquemático que ilustra un ejemplo de una unidad DPIM 114 y que muestra las trayectorias de conexión de datos y control entre la DPIM y los interruptores supenor 110 e inferior 112. La Figura 3, ilustra cuatro estructuras de interconexión de datos Z, C, R y B. La estructura de interconexión Z puede ser un anillo FIFO ubicado en el interruptor superior 110. Las estructuras de interconexión C y R son anillos FIFO ubicados en el módulo DPIM. En algunas modalidades, las DPIMs envían datos directamente al interruptor inferior. En dichas modalidades, si el interruptor inferior es una estructura de interconexión, entonces la estructura de interconexión B es un anillo FIFO. En otras modalidades, las DPIMs envían datos a un concentrador que posteriormente envía los datos al interruptor inferior. En dichas modalidades, si el concentrador es una estructura de interconexión, entonces B es un dato FIFO que puede o no ser un anillo. Las Figuras 1 y 7, ilustran sistemas que no incluyen concentradores. Las Figuras 2, 3, 4A y 5 ilustran sistemas que contienen concentradores. Los datos viajan a través del interruptor superior 110 y llegan a un anillo de salida objetivo Zj, en donde J = AD1. El anillo Z = Zj, tiene una pluralidad de nodos 330 conectados a las líneas de salida 326. El módulo DPIM incluye un anillo receptor de paquetes C 302 al que se hará referencia como el "anillo de comunicación de datos" y uno o más " anillos de almacenaje de datos" R 304. La Figura 3, ilustra una DPIM con un anillo de almacenaje de datos simples R. Cada una de las estructuras Z, C, R y B son FIFOs que incluyen nodos FIFO de bit simple interconectados. Algunos de los nodos en la estructura tienen un puerto de entrada de datos simple y un puerto de salida de datos simple y están interconectados para formar un FIFO de múltiples nodos simples. Otros nodos en las estructuras tienen un puerto de entrada de datos adicional, un puerto de salida de datos adicional, o ambos. Los nodos también pueden contener puertos de salida de señal de control o puertos de entrada de señal de control. El anillo Z recibe señales de control desde el anillo C y envía datos a los módulos lógicos L 314. Los anillos C y R reciben y envían datos a los módulos lógicos L 314. El FIFO B 380, envía señales de control a los módulos lógicos L y recibe datos desde los módulos lógicos L. Una DPIM puede contener módulos lógicos múltiples con capacidad para enviar datos a múltiples puertos de entrada en la estructura de interconexión o el FIFO B. Los datos de una DPIM pueden ser inyectados a múltiples filas en el nivel superior del sistema B. El número de DPIMs puede ser el mismo que el número de ubicaciones de memoria, en donde cada DPIM tiene un anillo de almacenaje simple R que contiene una palabra de datos. De manera alternativa, una unidad DPIM puede contener una pluralidad de anillos de almacenaje R. Un anillo de almacenaje particular puede ser identificado por una porción del campo de dirección AD1 ó mediante una porción de campo de operación OP1 . El cronometraje del movimiento del paquete es sincronizado en los cuatro anillos. Conforme circulan los paquetes en los anillos, los paquetes son alineados con respecto al campo BIT. Como una consecuencia ventajosa de la alineación, el anillo C envía la señal de control 328 al anillo Z que ya sea permite o evita que un nodo en Z envíe un paquete a C. Ya que se permite la recepción desde un nodo 330 en el anillo C, un nodo 312 en el anillo Z puede enviar un paquete a un módulo lógico L, de tal manera que el módulo lógico L es colocado para procesar inmediatamente el paquete en forma de serie de bits. De manera similar, los paquetes que circulan en el anillo de almacenaje de datos R son sincronizados con el anillo C, de tal manera que el módulo lógico L pueda procesar de manera ventajosa los bits respectivos como paquetes que circulan en los anillos respectivos. Los anillos R de almacenaje de datos funcionan como elementos de memoria que pueden ser utilizados en varias aplicaciones novedosas que están descritas en la presente descripción.
Un anillo de comunicación de datos separado (no mostrado) entre los nodos del anillo Z y los módulos lógicos L, puede ser utilizado para el cronometraje inter-chips y el control en donde las DPIMs no están en el mismo chip que el interruptor superior. Los datos contenidos en el anillo de almacenaje R pueden ser accesados desde el interruptor superior 1 10 mediante una pluralidad de paquetes, alineados y traslapados con las porciones de los paquetes en el anillo Z 306 del interruptor superior, y que coinciden en el período del ciclo. Una pluralidad de módulos lógicos 314 está asociada con el anillo de comunicación de datos C y el anillo de almacenaje de datos R. Un módulo lógico L tiene la capacidad de leer los datos desde los anillos C y R, realizando operaciones en los datos bajo ciertas condiciones y escribiendo en los anillos C y R. El módulo lógico L, además tiene la capacidad de enviar un paquete a un nodo 320 en el FIFO 308 en el interruptor inferior 1 2 ó el concentrador. Un anillo de comunicación de datos separado (no mostrado) entre los módulos lógicos L 314 y los nodos 320 de la estructura de interconexión B puede ser utilizado para el cronometraje y control inter-chips en casos en los que las DPIMs no se encuentran en el mismo chip que el interruptor inferior. Un anillo de comunicación de datos separado también puede ser utilizado para las operaciones de cronometraje y control cuando un dispositivo simple necesita accesar varios bits del anillo de comunicación en un solo período del ciclo.
Los paquetes ingresan al anillo de comunicación C a través de los módulos lógicos 314. Los paquetes abandonan los módulos lógicos L e ingresan al interruptor inferior a través de los canales de entrada en diferentes ángulos. En algunos ejemplos del sistema genérico 100, todos los módulos lógicos a lo largo de los anillos C y R de una DPIM 1 4 son del mismo tipo y realizan una función lógica similar. Otros ejemplos utilizan una pluralidad de diferentes tipos de módulos lógicos, permitiendo funciones lógicas múltiples para operar a partir de los datos almacenados en el anillo R de una DPIM particular. Conforme circulan los datos alrededor del anillo R, los módulos lógicos L 314 pueden modificar los datos. Un módulo lógico opera sobre bits de datos que pasan de forma serie a través del módulo desde el anillo C y el anillo R, y desde un nodo en el anillo Z. Las funciones lógicas típicas incluyen (1 ) operaciones de transferencia de datos tales como cargas, almacenajes, lecturas, y escrituras; (2) operaciones lógicas tales como Y, O , NI, TAMPOCO Y, EXCLUSIVO O, pruebas de bits y similares; y (3), operaciones aritméticas tales como sumas, restas, multiplicaciones, divisiones, funciones trascendentales, y similares. Muchos otros tipos de operaciones lógicas pueden ser incluidos. La funcionalidad del módulo lógico puede ser estructurada en el módulo o la funcionalidad lógica puede ser basados en el software que es cargado en los módulos lógicos desde paquetes enviados al módulo lógico. En algunas modalidades, los módulos lógicos asociados con un anillo de almacenaje de datos R particular actúan de manera independiente. En otras modalidades, los grupos de módulos lógicos son controlados mediante un sistema separado (no mostrado) que puede recibir datos desde un grupo de módulos lógicos. Todavía en otras modalidades, los grupos de módulos lógicos son controlados mediante un sistema de control de módulos lógicos. Aún en otras modalidades, los sistemas de control de módulos lógicos ejecutan las instrucciones de control en los datos recibidos desde los módulos lógicos. En las Figuras 1 y 2, cada DPIM incluye un anillo R y un anillo C. En modalidades alternas del sistema 100, una DPIM particular 114 incluye anillos R múltiples. En las modalidades de anillos R múltiples, un módulo lógico 314 puede accesar simultáneamente datos desde el anillo C y todos los anillos R. El acceso simultáneo permite a un módulo lógico modificar los datos en uno o más de los anillos R con base en el contenido de los anillos R y también con base en el contenido del paquete recibido y el anillo de comunicación C asociado. Una función normal realizada por los módulos lógicos es la ejecución de una operación especificada en el campo OP1 que opera sobre datos colocados en el campo de CARGA ÚTIL del paquete, en combinación con los datos colocados en el anillo R. En un ejemplo específico, la operación OP1 puede especificar que los datos en el campo de CARGA ÚTIL del paquete son agregados a los datos contenidos en el anillo R ubicado en dirección AD1. La suma que resulta es enviada al puerto objetivo del interruptor inferior en la dirección AD2. Como fue especificado por la instrucción colocada en el campo de datos de la operación OP1 , el módulo lógico puede realizar varias operaciones. Por ejemplo, el módulo lógico puede abandonar a los datos en el anillo R 304 sin haberlos cambiado. El módulo lógico puede reemplazar los datos en el anillo R 304 con el contenido del campo CARGA ÚTIL. De manera alternativa, el módulo lógico L puede reemplazar la información que se coloca en el campo CARGA ÚTIL con el resultado de una función que opera previamente en el contenido dentro del anillo R 304 y el campo CARGA ÚTIL. En otros ejemplos, una memoria FIFO puede almacenar instrucciones de programa así como también los datos. Un sistema genérico 100, que incluye más que un tipo de módulo lógico 314 asociado con un anillo de comunicación C y un anillo de almacenaje R, puede utilizar uno o más bits del campo OP1 para denominar a un módulo lógico específico que es utilizado en la ejecución de una operación. En algunas modalidades los múltiples módulos lógicos realizan operaciones en los mismos datos. El conjunto de módulos lógicos en la dirección AD1 = x puede realizar operaciones diferentes a las del conjunto de módulos lógicos en dirección AD1 = y. El movimiento eficiente del paquete de datos a través del sistema genérico 100 depende del cronometraje del flujo de datos. En algunos sistemas, las unidades de memoria intermedia (no mostradas) asociados con el módulo lógico ayudan a mantener el cronometraje de la transferencia de datos. En varias modalidades, el cronometraje es mantenido sin colocar los datos en unidades de memoria intermedia. La estructura de interconexión del sistema genérico 100 ventajosamente tiene un cronometraje de operación que da como resultado el eficiente cómputo de datos en paralelo, la generación de datos y el acceso de datos. Un sistema genérico 100, compuesto a partir de múltiples componentes que incluyen por lo menos un interruptor, una colección de anillos de almacenaje de datos 304, y módulos lógicos asociados 314, puede ser utilizado para construir diversos interruptores de cómputo y de comunicación. Los ejemplos de interruptores de cómputo y de comunicación incluyen un enrutador de paquete IP ó interruptor utilizado en un sistema de intercambio de Internet, un procesador de clasificación de propósitos especiales, una computadora de propósito general, o varios sistemas de cómputo paralelos que tienen un propósito general o una función específica. Haciendo referencia a la Figura 2, un diagrama de bloque esquemático ilustra una memoria de acceso aleatorio paralelo (PRAM) que es construida utilizando estructuras de interconexión de red como elementos fundamentales. La PRAM almacena datos que pueden ser accesados simultáneamente desde fuentes múltiples y enviados simultáneamente a destinos múltiples. La PRAM tiene un interruptor superior 1 10 y puede o no tener anillos de comunicación que reciben paquetes desde el anillo objetivo del interruptor superior 1 10. En estructuras de interconexión que no tienen anillo de comunicación, el anillo Z pasa a través de los módulos lógicos. El interruptor superior 1 10 tiene puertos de salida T 210 desde cada uno de los anillos objetivo. En un sistema PRAM 200 normal, el número de ubicación de direcciones será mayor que el número de puertos l/O del sistema. Como un ejemplo, un sistema PRAM puede tener 128 puertos l/O que accesan palabras de 64K de datos almacenados en las DPIMs. El campo AD1 es de 16 bits de largo para acomodar 64K de direcciones DPIM 114. El campo AD2, es de 8 bits de largo para acomodar los 128 puertos de salida 204, donde 7 bits mantienen la dirección, y 1 bit es la porción BIT2 de la dirección. El interruptor superior tiene 128 puertos de entrada 202, y 64K de anillos Z (no mostrados) cada uno con conexiones múltiples a una unidad DPIM a través de los puertos de salida 206. El concentrador 150 tiene 64K (65,536) puertos de entrada 208 y 128 puertos de salida 210. El interruptor inferior 1 2 tiene 128 puertos de salida 204. El concentrador sigue el mismo cronometraje de control y las mismas reglas de señalización para la entrada y la salida que los interruptores superior e inferior y los módulos lógicos. De manera alternativa, un interruptor superior puede tener menos anillos de salida Z y unidades asociadas DPIM. Las unidades DPIM pueden contener múltiples anillos R, de tal manera que el mismo tamaño de datos totales permanece sin cambiar. La PRAM ilustrada en la Figura 2, incluye unidades DPIM 114 que contienen módulos lógicos 314 que conectan directamente al anillo de comunicación C 302 y anillo de almacenaje R 304. Las unidades DPIM 114 se conectan concentrador de paquete 150 que alimenta datos de salida dentro del interruptor inferior 12.
Haciendo referencia a la Figura 3, los nodos 330 en el anillo C envían señales de control a los nodos 312 en el anillo Z del interruptor superior, permitiendo a los nodos individuales 312 del anillo Z enviar un paquete a los módulos lógicos L. Cuando un módulo lógico L recibe el paquete desde el anillo Z, el módulo lógico L puede realizar una de varias acciones. En primer lugar, el módulo lógico L, puede empezar por colocar el paquete en el anillo C. En segundo lugar, el módulo lógico L, puede empezar inmediatamente a utilizar los datos en el paquete. En tercer lugar, el módulo lógico L, puede empezar inmediatamente a enviar un paquete generado dentro del concentrador 150 sin colocar el paquete en el anillo C. Un módulo lógico Li, puede empezar a colocar un paquete P en el anillo C. Después de que el módulo lógico Li ha colocado varios bits en el anillo, otro módulo lógico Lk, en donde k > i, puede empezar procesando y removiendo los bits. En algunos casos, el paquete entero P nunca es colocado en el anillo C. Los módulos lógicos pueden insertar datos ya sea al anillo C ó al anillo R, o pueden enviar datos al concentrador 150. El control de un paquete que ingresa al concentrador es auxiliado por señales de control en la línea 324 desde el concentrador. Los módulos lógicos 314 asociados con un anillo R 304 pueden incluir interconexiones de envío y recepción adicionales a un dispositivo auxiliar (no mostrado) que puede ser asociado con el anillo R. El dispositivo auxiliar puede tener varias estructuras y realizar varias funciones, dependiendo del propósito y la funcionalidad del sistema. Un ejemplo de un dispositivo auxiliar es un controlador de sistema.
En algunas modalidades, la PRAM 200 tiene DPIMs que contienen módulos lógicos 314 que tienen todos el mismo tipo de lógica y realizan la misma función. En otras modalidades, una primera DPIM S en una dirección particular puede tener módulos lógicos de diferente tipo y función. Una segunda DPIM T puede tener un módulo lógico del mismo tipo o de diferente tipo en comparación con la primera DPIM S. En un ejemplo de aplicación de la PRAM, una palabra de datos es almacenada en un anillo de almacenaje simple R. Conforme los datos circulan en el anillo R, los módulos lógicos pueden modificar los datos. En la PRAM, los módulos lógicos alteran el contenido del anillo de almacenaje R, el cual puede almacenar las instrucciones del programa así como también los datos. La PRAM almacena y recupera los datos utilizando paquetes definidos para incluir campos, definidos de la siguiente forma. CARGA UTIL | OP21 AD2 | OP1 | AD1 | BIT. EL campo BIT es ajustado a 1 para indicar que un paquete que está presente ingresa en el sistema genérico 100. El campo AD1 designa la dirección de una DPIM especifico, el cual incluye un anillo de almacenaje R 304 que contiene los datos deseados. El interruptor superior enruta el paquete a una DPIM(AD1 ) especificada por la dirección AD1. En el ejemplo ilustrativo, el campo OP1 es un bit sencillo que designa la operación que será ejecutada. Por ejemplo, un valor lógico 1 especifica una solicitud de LECTURA y un valor lógico 0 especifica una solicitud de ESCRITURA.
En la solicitud de LECTURA, el módulo lógico de recepción en la DPIM en la ubicación AD1 , envía los datos almacenados en el anillo R a la dirección AD2 del interruptor inferior 1 12. En la solicitud de ESCRITURA, el campo CARGA UTIL del paquete es colocado en el anillo R en la dirección AD1. AD2, es una designación de dirección que es utilizada para enrutar datos a través del interruptor inferior 112, únicamente en una solicitud de LECTURA y especifica la ubicación a la cual el contenido de la memoria es enviado. OP2, opcionalmente describe la operación que va a realizar un dispositivo en la dirección AD2 sobre los datos enviados al dispositivo AD2. Sí la operación de OP1 es una solicitud de LECTURA, el módulo lógico que ejecuta la operación de LECTURA no utiliza el campo CARGA UTIL. En la implementación ilustrativa, la PRAM incluye únicamente un solo tipo de módulo lógico - un tipo que ejecuta tanto las operaciones de LECTURA como de ESCRITURA. En otros ejemplos de las impiementaciones de la PRAM, son utilizados otros tipos de módulos lógicos, incluyendo aquellos tipos con elementos de LECTURA y elementos de ESCRITURA separados. Haciendo referencia a las Figuras 2 y 3, la PRAM ilustrativa 200 empieza una operación recibiendo un paquete dentro del interruptor superior 110 en un momento adecuado. El paquete P es enrutado a través del interruptor superior y llega a un anillo objetivo Z ubicado en la dirección AD1. El campo AD1 del paquete especifica al anillo objetivo Zj 306 del interruptor superior, en donde J = AD1. Un nodo S (no mostrado) y un nodo T (no mostrado) son definidos para describir el cronometraje del mensaje. El nodo S es definido como un nodo 330 del anillo Rj y un nodo T es definido como un nodo 312 del anillo Zj, de tal manera que el nodo S es colocado para enviar una señal de control al nodo T en la línea de control 328. Con base en una señal de cronometraje global, un nodo S 330 del anillo Rj determina la ocurrencia del momento de llegada del bit de cronometraje al nodo S. Si un bit de cronometraje con valor 1 llega al nodo S en un momento de llegada del bit de cronometraje, entonces el nodo S envía una señal de bloqueo sobre la línea 328 al nodo T 312 del anillo Z, prohibiendo al nodo T enviar un paquete en forma descendente a una línea 326 para una unidad lógica L. Si el nodo S no recibe un bit con valor 1 en el momento de llegada del bit de cronometraje, entonces no ingresa ningún mensaje al nodo S desde el nodo C y el nodo S envía una señal de control de no bloqueo al nodo T. El cronometraje global es de tal manera que, la señal de control de momento de llegada en el nodo T es concurrente con un momento de llegada del mensaje al nodo T desde el anillo Z ó desde un nodo U colocado un nivel arriba del anillo Z en el interruptor superior. El paquete abandona el interruptor superior 1 10 desde el nodo 312 en la trayectoria 326 con dirección al módulo lógico. El módulo lógico puede colocar el paquete en el anillo de comunicación C 302, o puede procesar el paquete inmediatamente sin colocar el paquete en el anillo C. En este punto, el paquete P tiene la forma de: CARGA UTIL | OP2 | AD2 | OP1 | BIT.
El paquete P viaja en forma descendente en la línea 326 desde el anillo Z al módulo lógico L. Cuando el paquete P empieza a viajar al módulo lógico L, un nodo Nz en el anillo Z envía una señal de control para informar a un nodo de nivel más alto W en el interruptor superior de una condición de no bloqueo en el nodo Nz. La señal de señal de control garantiza al nodo W el derecho de enrutar los datos al nodo ?? colocado para recibir datos desde el nodo Nz. El módulo lógico L opera en paquetes que llegan en la línea 326 y paquetes que llegan en el anillo C, de la misma forma con respecto al cronometraje. El paquete P ingresa al módulo lógico L, el cual analiza y ejecuta el comando en el campo OP1. En la modalidad ilustrativa, el anillo de comunicación C tiene la misma longitud que el anillo de almacenaje R. Los bits viajan a través de anillo C y R en una forma de serie de bits a una proporción regida por un reloj común. El primer bit del campo CARGA UTIL del paquete es alineado con el primer bit del campo de DATOS en el anillo R. Por lo tanto, en el caso de una solicitud de LECTURA, los datos en el anillo R pueden ser copiados en la sección carga útil del paquete. En el caso de una solicitud de ESCRITURA, los datos en la sección de carga útil del paquete pueden ser transferidos desde el paquete al anillo de almacenaje R.
Solicitud de LECTURA En una solicitud de LECTURA, un paquete P tiene la forma de: CARGA UTIL | OP2 | AD2 | OP1 | AD1 | BIT.
El paquete es ingresado dentro del interruptor superior. En general, un módulo lógico de la DPIM en la dirección AD1 , identifica una solicitud de LECTURA examinando el código de operación del campo OP1. El módulo lógico reemplaza el campo CARGA UTIL del paquete con el campo de DATOS del anillo R. El paquete actualizado es entonces enviado a través del concentrador dentro del interruptor inferior que conduce al paquete a una unidad de computo (CU) 126 u otro dispositivo en la dirección AD2. La CU u otro dispositivo pueden ejecutar la instrucción designada por el código de operación 2 (OP2) en conjunto con los datos contenidos en el campo CARGA UTIL El paquete P ingresa un nodo T 312 en el anillo Z. El nodo T, en respuesta al bit de cronometraje del paquete P que ingresa el nodo T y a una señal de control de no bloqueo recibida desde un nodo 330 en el anillo C, empieza a enviar un paquete P en forma descendente en una trayectoria de datos 326 a un módulo lógico L. Cuando los campos BIT y OP1 han ingresado al módulo lógico L, una señal de control en la línea 324 también llega al módulo lógico L, indicando si el concentrador 150, o el interruptor inferior cuando la estructura no incluye el concentrador, puede aceptar un mensaje. Si la señal de control indica que el concentrador no puede aceptar un mensaje, entonces el módulo lógico L empieza a transferir del paquete P al anillo C. El paquete P se mueve al siguiente módulo lógico en el anillo C. En algún punto, uno de los módulos lógicos L en el anillo C recibe una señal de control de no ocupado desde un nivel más bajo en la jerarquía. En ese momento, el módulo lógico L empieza la transferencia del paquete P a un nodo de entrada 320 en la estructura interconexión B. En una solicitud de LECTURA, el módulo lógico limpia el campo OP1 del paquete y empieza a enviar el paquete en la trayectoria 322 a un nodo de entrada 320 del concentrador. En primer lugar, el módulo lógico envía el campo BIT, seguido por el campo AD2, seguido por el campo OP2. El cronometraje es ajustado de tal manera que el último bit del campo OP2, abandona el módulo lógico al mismo tiempo que el primer bit del campo DATOS en el anillo de almacenaje R llega al módulo lógico. El módulo lógico abandona el campo DATOS en el anillo de almacenaje R no cambiado, coloca una copia del campo DATOS en el campo CARGA UTIL del paquete enviado en dirección descendente, y continúa enviando el paquete en una forma de bit de serie dentro del concentrador. Los datos en el anillo R permanecen sin cambios. El paquete ingresa y abandona el concentrador sin cambios, e ingresa al interruptor inferior 112 que tiene la forma de: DATOS | OP2 | AD2 | BIT. El campo CARGA UTIL ahora contiene la información del campo DATOS que proviene del anillo R. Conforme el paquete es enrutado a través del interruptor inferior, el campo AD2 es removido. El paquete sale del puerto de salida 204 en la dirección AD2 del interruptor inferior. A partir de su salida, el paquete tiene la forma de: DATOS | OP2 | BIT.
El campo OP2 es un código que puede ser utilizado en una variedad de formas. Uno de sus usos es para indicar la operación que realiza un dispositivo de salida del interruptor inferior con los datos contenidos en el campo CARGA UTIL. Las estructuras interconectadas de la PRA inherentemente tienen un cronometraje circular que da como resultado la generación y acceso de datos los datos en forma paralela y eficiente. Por ejemplo, una pluralidad de recursos externos en diferentes puertos de entrada 202 puede solicitar operaciones de LECTURA para el mismo campo de DATOS en una DPIM 114 particular. Una pluralidad de solicitudes de LECTURA puede ingresar a un anillo Z 306 objetivo particular del interruptor superior en diferentes nodos 312, y subsecuentemente ingresar a diferentes módulos lógicos L de la DPIM objetivo. La solicitud de LECTURA puede ingresar a diferentes módulos lógicos en el anillo C durante el mismo período del ciclo. El anillo de comunicación C 320 y el anillo de memoria R 304, siempre están sincronizados con respeto al movimiento de los paquetes en el anillo Z objetivo del interruptor superior y la estructura de interconexión de entrada B del concentrador. Una solicitud de LECTURA siempre llega a un módulo lógico en el momento correcto para que los datos que provienen del anillo R sean ¡ndexados en la ubicación CARGA UTIL adecuada del paquete enviado. El resultado tiene la ventaja de que pueden ser emitidas solicitudes múltiples para los mismos datos en el anillo R al mismo tiempo. El mismo campo DATOS se puede accesar mediante una pluralidad de solicitudes. Los datos provenientes del anillo R son enviados a destinos finales múltiples. La pluralidad de operaciones de LECTURA se ejecutan en paralelo y los paquetes enviados alcanzan una pluralidad de puertos de salida 204 al mismo tiempo. Las múltiples solicitudes de LECTURA son ejecutadas de una forma traslapada mediante las lecturas de manera simultánea desde diferentes ubicaciones en el anillo R mediante los diferentes módulos lógicos. Además, otras solicitudes de LECTURA múltiples son ejecutadas en el mismo período del ciclo en diferentes direcciones de la memoria PRAM. Las solicitudes de LECTURA son ejecutadas en una forma traslapada, eficiente y paralela debido al cronometraje del sistema. Las Figuras 4A, 4B y 4C, ilustran el cronometraje para una LECTURA simple. El anillo de almacenaje R es de la misma longitud que el anillo de comunicación C. El anillo R, contiene datos distribuidos 414 de longitud PayL. Los elementos del almacenaje que permanecen en el anillo R, contienen ceros, o "espacio en blanco", o son ignorados y pueden tener cualquier valor. El campo ESPACIO EN BLANCO 412 es el ajuste de bits que no están contenidos en el campo DATOS 414. Haciendo referencia a la Figura 4A, las porciones de cada anillo C y R pasan a través de módulos lógicos de una DPIM particular. Un módulo lógico contiene por lo menos dos bits del ajuste de registros de cambio que constituyen el anillo C, y por lo menos dos bits de los registros de cambio que constituyen el anillo R. En algunas modalidades, la DPIM 314 contiene una pluralidad de módulos lógicos 314. Un módulo lógico es colocado para leer dos bits del anillo de comunicación 302 en un período de reloj sencillo. En un momento indicado por una señal global (no mostrada), el módulo lógico examina el campo BIT y el campo OP1. En la modalidad ilustrada, el módulo lógico lee juntos la totalidad del campo OP1 y del campo BIT. En otras modalidades, los campos OP1 y BIT pueden ser leídos en operaciones múltiples. En una solicitud de LECTURA un módulo lógico no bloqueado 314 envía el paquete dentro del concentrador o del interruptor inferior en el momento correcto para alinear el paquete con otros bits en la entrada del concentrador o interruptor inferior. En la solicitud de LECTURA, un módulo lógico bloqueado coloca el paquete en el anillo C, en donde el paquete se moverá al siguiente módulo lógico. El siguiente módulo lógico puede estar bloqueado o no bloqueado. Si un módulo lógico subsecuente es bloqueado, del módulo lógico bloqueado envía de manera similar el paquete en el anillo C al siguiente módulo. Si el paquete ingresa al módulo lógico LR que se encuentra más hacia la derecha que se encuentra bloqueado, entonces el módulo lógico LR envía el paquete a través de FIFO en el anillo C. En el momento en que sale el FIFO, el paquete ingresa el módulo lógico que se encuentra más hacia la izquierda. El paquete circula hasta que encuentra un módulo lógico que no está bloqueado. La longitud del anillo C es ajustada de tal manera que un paquete en circulación siempre se ajusta completamente al anillo. Como se estableció de manera alternativa, la longitud del paquete P|_, nunca es mayor que la longitud del anillo Fi_. En una operación de LECTURA, un paquete tiene la forma de: I CARGA UTIL | OP21 AD2 | OP1 | AD1 | BIT | . El paquete es insertado en el interruptor superior. El campo de la dirección AD1 , indica la dirección objetivo del anillo R 304 que contiene los datos deseados. El campo de operación OP1 , indica una solicitud de LECTURA. El campo de la dirección AD2, es la dirección objetivo del puerto de salida 204 del interruptor inferior, a donde son enviados los resultados. El código de operación OP2 designa una función que será realizada por el dispositivo de salida. En una modalidad típica, el dispositivo de salida es el mismo que el dispositivo de entrada. Por lo tanto, un dispositivo simple está conectado a un puerto de entrada 202 y un puerto de salida 204 de la PRAM. Para una solicitud de LECTURA, el campo CARGA UTIL es ignorado por el módulo lógico y puede tener cualquier valor. En contraste, durante una operación de ESCRITURA, el campo CARGA UTIL contiene datos que serán colocados en el anillo R 304 asociado con la DPIM en la dirección AD1 . El paquete alterado que sale del módulo lógico tiene la forma de: | DATOS | OP2 | AD2 | BIT | . Los datos que ingresan al interruptor inferior tienen la forma de: I DATOS I OP2 i BIT I .
Los datos abandonan el interruptor inferior a través del puerto de salida designado por el campo de la dirección AD2, en donde DATOS, es el campo de datos 414 del anillo R. Las Figuras 4A, 4B y 4C ¡lustran la coordinación de cronometraje entre el anillo de comunicación C, el anillo de almacenaje de datos R y el concentrador B. En una modalidad con anillos que contienen una pluralidad de FIFOs paralelas en una disposición de barra colectora de datos, un módulo lógico 314 tiene la capacidad de leer bits múltiples en un momento. En el ejemplo actual, el módulo lógico L recibe únicamente un bit por período de reloj. El concentrador B incluye una pluralidad de nodos de entrada 320 en una FIFO 308 que puede aceptar un paquete desde un módulo lógico. Un módulo lógico es colocado para inyectar datos en el nivel superior del concentrador a través del puerto de entrada 322. Haciendo referencia a la Figura 4A, el campo BIT 402 es ajustado a 1 y llega al módulo lógico al mismo tiempo que el primer bit, Bo 408, del campo ESPACIO EN BLANCO 412 del anillo de datos R. El cronometraje relativo de datos distribuidos está dispuesto de tal manera que el primer bit de DATOS en el anillo R es alineado (como se muestra mediante la línea 410) con el primer bit del campo carga útil del paquete de solicitud en el anillo C. Los datos que ya están dentro del concentrador B que ingresan al nodo 316 desde otro nodo en el concentrador tienen prioridad sobre los datos que ingresan al nodo 316 desde arriba en la trayectoria 322. Una señal de cronometraje de llegada de paquete global (no mostrada) informa al nodo 316 de un momento en el que los paquetes pueden ingresar. Si un paquete que ya se encuentra en el concentrador ingresa al nodo 316, entonces el nodo 316 envía una señal de bloqueo en la trayectoria 324 a un módulo lógico conectado al nodo 316. En respuesta a la señal de bloqueo, el módulo lógico L envía un paquete de solicitud de LECTURA en el anillo de comunicación C, como se describió anteriormente en la presente descripción. Si no llega ninguna señal de bloqueo desde un nivel más bajo en la jerarquía, entonces el módulo lógico L envía un paquete en la línea 322 a un nodo de entrada 320 en concentrador B en corriente descendente desde el nodo 316. La Figura 4A, ilustra una solicitud de LECTURA en un tiempo T = 0, el tiempo en que el módulo lógico que ha recibido la solicitud inicia el proceso de la solicitud. En este punto, el módulo lógico tiene información suficiente para determinar que el módulo lógico ha recibido una solicitud de LECTURA y que la solicitud no ha estado bloqueada desde un nivel más bajo. En particular, el módulo lógico examina los campos BIT y OP1 , y responde a tres condiciones. No es recibida la señal de ocupado en la línea 324 desde un nivel más bajo, BIT = 1 , y OP1 = una solicitud de LECTURA. Cuando las tres condiciones son satisfechas, el módulo lógico está listo para el siguiente paso de tiempo cuando el módulo lógico inicia el proceso de LECTURA. En el caso OP1 = ESCRITURA, el módulo lógico inicia el proceso de ESCRITURA en el siguiente paso de tiempo. Las Figuras 4B y 4C, ilustran una solicitud de LECTURA en progreso cuando ninguna señal de bloqueo es enviada desde el nodo 316 al módulo lógico. La Figura 4B, ¡lustra una solicitud de LECTURA en tiempo T = 1. Todos los bits de datos en los anillos Z, C y R cambian una posición a la derecha. Los bits que se encuentran más hacia la derecha del anillo ingresan a FIFO. La FIFO suministra un bit al elemento que está más hacia la izquierda. El módulo lógico L, envía el campo BIT en forma descendente en la línea 322 a un puerto de entrada del concentrador. Después del cambio, los registros del anillo C contienen el segundo y tercero bits del paquete, el bit sencillo del campo OP1 y el primer bit del campo AD2, respectivamente. El módulo lógico también contiene el segundo y tercero bits, B1 y B2, del campo ESPACIO EN BLANCO del anillo R. En una operación normal de la PRAM 200, el paquete que proviene del anillo Z puede haber ingresado a un módulo lógico (no mostrado) a la izquierda del módulo lógico ilustrado. Por lo tanto, el paquete no está completamente contenido dentro del anillo C. El resto del paquete está dentro del interruptor superior 1 10 o puede permanecer en el proceso de transferencia de velocidad constante o sincronizada de un puerto de entrada a través del interruptor superior y saliendo del anillo Z, mientras aún está ingresando al módulo lógico L 314. Las Figuras 4A, 4B y 4C, muestran el paquete de solicitud de LECTURA contenido completamente en el anillo C para su fácil comprensión. En los siguientes pasos AD2L + OP2L, el módulo lógico L lee y copia los campos AD2 y OP2 al puerto de entrada 320. En este punto, el concentrador ya ha recibido el campo BIT, el campo AD2 y el campo OP2, en forma de bit de serie. El concentrador recibe y procesa la secuencia de transferencia de velocidad constante o sincronizada antes de que el primer bit del campo DATOS 414 alcance el módulo lógico L. Aunque un módulo lógico L lee AD2 y OP2 en el anillo C, el campo ESPACIO EN BLANCO 412 en el anillo R pasa a través del módulo lógico L y es ignorado. El módulo lógico L es colocado para leer el primer bit de la sección CARGA UTIL del paquete en el anillo de comunicación C al mismo tiempo (mostrado por ia línea 410) que llega el primer bit del campo DATOS del anillo R. Ei módulo lógico L envía datos de salida en dos direcciones. En primer lugar, el módulo lógico L regresa un paquete ajustado a cero de vuelta al anillo C. En segundo lugar, el módulo lógico L envía el campo DATOS en forma descendente. Todos los bits enviados al anillo C son ajustados a cero 430, de tal manera que los módulos lógicos subsecuentes en el anillo C no repitan la operación de LECTURA. Como se estableció de manera alternativa, el paquete de solicitud es limpiado desde el anillo de comunicaciones C, cuando un módulo lógico procesa de manera exitosa la solicitud, permitiendo de manera ventajosa que otros módulos lógicos en el mismo anillo tengan la oportunidad de aceptar otros paquetes de solicitud durante el mismo período del ciclo. Los paquetes son procesados de manera deseable en forma de transferencia de velocidad constante o sincronizada mediante los módulos lógicos, y una pluralidad de los diferentes paquetes de solicitud pueden ser procesados por una DPIM particular durante un período del ciclo. En el momento K + 1 , el primer bit de la carga útil está en una posición que será colocada en cero por el L y que el primer bit de datos Di en el anillo R, éste es colocado para ser enviado al interruptor inferior o a un concentrador que transfiere datos al interruptor inferior. El proceso continua como se mostró en la Figura 4C. El módulo lógico envía un segundo bit DATOS D2 al concentrador mientras que el módulo lógico lee un tercer bit DATOS D3 desde el anillo de datos R. Al final del procedimiento, el paquete completo ha sido removido del anillo de comunicación R y un paquete tiene la forma de: | DATOS | OP2 | AD2 | BIT | . El paquete es enviado al puerto de entrada 320 del concentrador o al interruptor inferior. DATOS es copiado del campo DATOS del anillo R al concentrador. El campo DATOS 414 en el anillo de datos R queda sin cambios. Haciendo referencia a la Figura 5, los módulos lógicos L1 504 y L2 502, ejecutan solicitudes de LECTURA simultáneas. Los diferentes paquetes de solicitud P1 y P2 son generalmente enviados desde diferentes puertos de entrada 202 e ingresan al interruptor superior, dando como resultado el procesamiento de una pluralidad de solicitudes de LECTURA en una forma de transferencia de velocidad constante o sincronizada en una DPIM simple. Todas las solicitudes en el ejemplo ilustrativo son para la misma dirección PRAM, especificada en el campo AD1 de los respectivos paquetes de solicitud. Los paquetes P1 y P2 alcanzan diferentes módulos lógicos L1 y L2, respectivamente, en la DPIM objetivo. Los módulos lógicos respectivos procesan la solicitud de manera independiente entre sí. En el ejemplo ilustrativo, la solicitud de LECTURA que llega primero P2 es procesada por un módulo L2 502. El módulo L2 ha leído y procesado previamente el campo BIT, el campo OP1 y los cinco bits del campo AD2. El módulo L2 ha enviado previamente el campo BIT y los 4 bits del campo AD2 dentro del nodo de entrada 512 del concentrador. De manera similar, el módulo L1 ha leído y procesado previamente dos bits de campo AD2 del paquete P1 , y enviado el primer bit AD2 dentro del nodo 514 a un nivel más bajo. Los campos AD2 de los paquetes respectivos son diferentes, en consecuencia, el campo DATOS 414 es enviado a dos puertos de salida diferentes del interruptor inferior. El procesamiento de las dos solicitudes ocurre en forma traslapada con la segunda solicitud que ocurre únicamente unos pocos períodos del reloj después de la primera solicitud. La DPIM tiene módulos lógicos T y puede procesar potencialmente las solicitudes de LECTURA T en el mismo período del ciclo. Como un resultado del procesamiento de una solicitud de LECTURA, el módulo lógico siempre coloca ceros 430 en el anillo C.
El enrutamiento de transferencia de velocidad constante o sincronizada de solicitudes y respuestas a través de los interruptores superior e inferior, respectivamente, permite que cualquier puerto de entrada envíe paquetes de solicitud al mismo tiempo que los otros puertos de entrada. Se estableció de manera general que, cualquier puerto de entrada 202 puede enviar una solicitud de LECTURA a cualquier DPIM independientemente de que la solicitud simultánea esté siendo enviada desde otros puertos de entrada. La PRAM 200 soporta acceso traslapado paralelo para una base de datos simple desde solicitantes múltiples, soportando una pluralidad de solicitudes en la misma ubicación de datos.
Solicitud de ESCRITURA En una solicitud de ESCRITURA, el campo AD1 de un paquete es utilizado para enrutar el paquete a través del interruptor superior. El paquete abandona el nodo 312 del interruptor superior en posición para ingresar al anillo C. El campo OP1 designa una solicitud de ESCRITURA. En la solicitud de ESCRITURA, ningún dato es enviado al concentrador. Por lo tanto, el módulo lógico ignora una señal de control del concentrador. El módulo lógico envía un ?' al puerto de entrada 320 del concentrador para comunicar la información de que el paquete no está siendo enviado. A una solicitud de ESCRITURA en el anillo Z siempre se le permite ingresar al primer módulo lógico que se encuentra en el anillo C.
Con el objeto de simplificar la ilustración, el paquete de solicitud es mostrado en el anillo C. En una operación más típica, la solicitud puede hacer una transferencia de velocidad constante o sincronizada a través del interruptor superior en del módulo lógico. Para una solicitud de ESCRITURA, el módulo lógico ignora la información en otros campos diferentes al campo OP1 y al campo CARGA UTIL. La Figura 6 ilustra, una solicitud de ESCRITURA en tiempo T = K+5. El paquete de ESCRITURA en el anillo C y los datos en el anillo R giran juntos en sincronización a través del módulo lógico. El último bit del campo OP2 es descartado por el módulo lógico al mismo tiempo que el módulo lógico es alineado con el último bit del campo ESPACIO EN BLANCO del anillo de almacenaje R. Cuando el primer bit del campo CARGA UTIL del paquete llega al módulo lógico L, el módulo lógico L remueve el primer bit del anillo C y coloca el primer bit en el campo DATOS del anillo R. El proceso continua hasta que la totalidad del campo CARGA UTIL es transferido desde el anillo de comunicación al campo de DATOS del anillo R. El módulo lógico L coloca en ceros el paquete, removiendo de manera deseable el paquete del anillo C, de tal manera que otros módulos lógicos no repitan la operación de ESCRITURA. Para facilitar la visualización, la Figura 6 ilustra el paquete de datos durante el movimiento realizado del anillo C al anillo R. Los datos normalmente llegan desde el interruptor superior. Más específicamente, el dato es diseminado sobre el interruptor superior.
En otra modalidad con anillos R múltiples en una DPIM simple, la dirección del módulo DPIM es almacenada en el campo AD1 , y la dirección de un anillo R determinado en el módulo DPIM es almacenada como parte del campo extendido OP1. En un ejemplo, con ocho anillos R en un módulo de memoria DPIM, el campo OP1 es de cuatro bits de largo con el primer bit que indica la operación de LECTURA o ESCRITURA y los siguientes tres bits que indican a cuál de los anillos R será dirigida la solicitud. Cuando los múltiples anillos R, están contenidos en cada una de las DPIMs, el número de niveles en el interruptor superior es reducido, así como también el número de niveles en el concentrador. La inclusión de múltiples anillos R en una DPIM, también permite operaciones más complicadas que requieren más datos y más lógica en los módulos y códigos OP1 más complicados. Por ejemplo, una solicitud de una DPIM puede ser una solicitud para enviar un valor más extenso en todos los anillos R, o una solicitud para enviar la suma de los valores en un subconjunto de anillos R. De manera alternativa, una solicitud DPIM puede ser una solicitud para enviar cada copia de una palabra que contiene un subcampo especificado para una dirección de cómputo, permitiendo de este modo una búsqueda eficiente de cierto tipo de datos. En el sistema PRAM de ilustración, el campo ESPACIO EN BLANCO es ignorado, y puede tener cualquier valor. En otras modalidades, el campo ESPACIO EN BLANCO puede ser definido para asistir varias operaciones. En un ejemplo, el campo ESPACIO EN BLANCO es utilizado para una función de tablero de registro. Un sistema incluye procesadores N con el número de procesadores N menor al número BL. Todos los procesadores N deben leer el campo DATOS antes de que al campo DATOS se le permita ser sobrescrito. Cuando un nuevo valor DATOS es colocado en el anillo de almacenaje R, el campo ESPACIO EN BLANCO es ajustado a ceros. Cuando el procesador W de los procesadores N lee los datos, entonces el bit W del campo ESPACIO EN BLANCO es ajustado a 1. Únicamente cuando el bit N adecuado del subcampo ESPACIO EN BLANCO es ajustado a la condición todo igual, la porción DATOS del anillo R puede ser sobrescrita. El campo ESPACIO EN BLANCO es ajustado de nuevo a ceros. La función de tablero de registros es únicamente uno de varios tipos de uso del campo ESPACIO EN BLANCO. Aquellos expertos en la materia tendrán la capacidad de utilizar de manera efectiva el campo ESPACIO EN BLANCO para varias aplicaciones en cómputo y comunicaciones. En algunas aplicaciones, los módulos lógicos múltiples en una DPIM deben tener la capacidad de intercomunicarse. Un ejemplo de tal aplicación es el algoritmo del cubo con fuga para ser utilizado en interruptores de Internet en modo de transferencia asincrono (ATM). En la memoria de acceso paralelo ilustrativa 200, un módulo lógico de cómputo 314 envía una señal al contador local (no mostrado) al recibir el ingreso de una solicitud de LECTURA. Ninguno de los dos módulos lógicos de cómputo en una sola DPIM recibe el primer bit de un paquete de lectura al mismo tiempo, de tal manera que una barra colectora de datos común DPIM (no mostrado) convenientemente es utilizada para pasar un contador conectado a todos los módulos lógicos. El contador puede responder a todos los módulos lógicos de cómputo de tal manera que cuando el "cubo de fuga pasa por encima" de todos los módulos lógicos adecuados que son notificadas, y responde a la información modificando los campos AD2 y el OP2 para generar una respuesta conveniente al destino adecuado. Haciendo referencia a la Figura 1 , un diagrama de bloque esquemático ilustra un procesador de cómputo 100 que es construido utilizando estructuras de interconexión de red como elementos fundamentales. Varias modalidades del procesador de cómputo incluyen elementos centrales del sistema genérico 100 descrito en el planteamiento de la Figura 1. Para una modalidad de un procesador de cómputo que es un sistema de cómputo, un interruptor inferior 1 12 envía los paquetes a las unidades de cómputo 126 incluyendo uno o más procesadores y memoria o almacenaje. Haciendo referencia también a la Figura 3, los módulos lógicos de cómputo asociados con el anillo R ejecutan parte de las funciones globales del sistema. Las unidades de cómputo 126 que reciben los datos desde el interruptor inferior 1 2 ejecutan operaciones lógicas adicionales. Los módulos lógicos ejecutan las operaciones del procesador tanto convencionales como novedosas dependiendo de las funciones globales deseadas para el procesador de cómputo.
Un primer ejemplo del sistema 100 es un sistema de cómputo paralelo escalable. En un aspecto de la operación, el sistema ejecuta una CLASIFICACION paralela que incluye una sub-operación de comparación paralela de la operación CLASIFICACION. Un módulo lógico L acepta un primer elemento de datos desde un paquete y un segundo elemento de datos desde el anillo de almacenaje R 304. El módulo lógico coloca el más grande de los dos elementos en un anillo de almacenaje R, colocando el valor más pequeño en el campo CARGA UTIL y enviando el valor más pequeño a una dirección prescrita en el campo AD2 del paquete. Si dichos dos módulos lógicos están conectados en serie, tal como se muestra en la Figura 3, el segundo módulo lógico puede ejecutar una segunda comparación de los datos que llegan desde el primer módulo lógico dentro de únicamente unos pocos ciclos del reloj. El proceso de comparación y reemplazo es una unidad común de trabajo en varios algoritmos de clasificación, y un experto en el arte previo puede integrar el proceso de comparación y reemplazo en un procesador de clasificación paralelo más grande. Un experto en la materia tendrá la capacidad para construir varios módulos lógicos útiles 314, que se ajusten de manera eficiente a un amplio rango de aplicaciones del sistema. Un módulo lógico simple puede realizar un número de operaciones o tipos diferentes de operaciones de los módulos lógicos pueden ser construidos de tal manera que cada unidad realiza un número más pequeño de tareas.
Dos tipos de unidades de procesamiento están incluidos en el sistema 100, unidades en las DPIMs 114 y unidades en las unidades de cómputo CU 126. Las DPIMs manejan movimiento de datos de bit de serie y realizan los cálculos de un tipo que mueve una gran cantidad de datos. Una CU incluye uno o más procesadores, tal como un procesador de propósito general y una RAM convencional. La CU ejecuta efectivamente operaciones de "trituración de número" en un conjunto local de datos para la CU, y genera, transmite y recibe paquetes. Una función importante de las DPIMs es suministrar datos a las CUs en un modo paralelo de latencia baja y en una forma que es conveniente para el procesamiento futuro. En un ejemplo de funcionalidad, una gran región de un problema de cómputo puede ser descompuesta en una colección de subregiones que no se traslapan. Una CU puede ser seleccionada para recibir un tipo de datos predeterminados desde cada subregión que contribuye en una forma significativa para un cálculo que será realizado por la CU. Las DPIMs preparan los datos y envían los resultados a las CUs adecuadas. Por ejemplo, la región podría ser todas las posiciones de ajedrez posibles que son posibles en diez movimientos. Y cada una de las subregiones contiene todas las posiciones posibles en ocho movimientos de un par determinado de movimientos. Las DPIMs regresan únicamente pares del primer movimiento prometedor a la CU, con los datos ordenados desde el más prometedor hasta el menos prometedor.
En otra aplicación, la región que contiene una representación de objetos en espacio tridimensional, y una sub-región es una partición del espacio. En un ejemplo especifico, una condición de interés es definida como una condición de una fuerza gravitacional que excede un umbral en un cuerpo de interés. Las DPIMs envían datos desde las sub-regiones que contienen datos consistentes con la condición de interés a la CU. El sistema escalable mostrado en la Figura 1 y las modalidades que utilizan elementos centrales del sistema escalables, pueden ser configurados para aplicaciones de supercomputadoras. En aplicaciones de supercomputadoras, las CUs reciben datos en paralelo en una forma conveniente y oportuna. Las CUs procesan los datos en paralelo, envían los resultados que se obtuvieron del procesamiento, y generan solicitudes de interacciones subsecuentes. Las DPIMs son útiles como contadores y programadores de tareas. Un ejemplo es un programador de tareas que utiliza una pluralidad de unidades de cómputo (CUs) K en una colección H. La colección H de las CUs normalmente realiza una variedad de tareas en cómputo paralelo. A partir de que las tareas han sido terminadas, N de los K de las CUs son asignados a una nueva tarea. Un anillo de almacenaje de datos R que tiene la capacidad de almacenar por lo menos bits K de datos, coloca en cero una palabra W con una longitud K. Cada ubicación de un bit en la palabra W es asociada con una CU particular en la colección H. Cuando una CU termina una tarea asignada, la CU envía un paquete M a la DPIM que contiene el anillo R. Un módulo lógico L1 en el anillo de almacenaje de datos R modifica la palabra W insertando un 1 en la ubicación del bit asociada con la CU que envía el paquete M. Otro módulo lógico L2 en el anillo de almacenaje de datos R rastrea el número de unos en la palabra W. Cuando la palabra W tiene bits N, el N inactivo de las CUs en H empieza a realizar tareas nuevas. Las tareas nuevas son iniciadas al multidifundir un paquete a los procesadores N. Un método eficiente para multidifundir una sub-colección de una colección H, será planteado más adelante. Haciendo referencia a la Figura 7, un diagrama de bloque esquemático ilustra una estructura y una técnica realizar de una operación de multidifusión utilizando direccionamiento indirecto. La multidifusión de un paquete para una pluralidad de destinos designados por una dirección correspondiente es una función altamente útil en aplicaciones de cómputo y de comunicación. Una primera dirección simple indica un conjunto de segundas direcciones. Las segundas direcciones son destinos para copias multidifundidas del paquete de carga útil. En algunas modalidades, un sistema de estructura de interconexión tiene una colección C de puertos de salida con la característica de que, bajo algunas condiciones, el sistema envía una carga útil de paquete predeterminado a todos los puertos de salida en la colección C0. Cada una de las colecciones C0, C-j , C2,... , Cj.-i, es un conjunto de puertos de salida, de tal manera que para un número entero particular N menor que J, todos los puertos en el conjunto C pueden recibir el mismo paquete particular como resultado de una solicitud de multidifusion simple. Una estructura de interconexión de multidifusion 700 almacena un conjunto de direcciones de salida del conjunto CN en un anillo de almacenaje R 704. Cada uno de los anillos tienen una capacidad de direcciones FMAX. En el ejemplo ilustrativo, el anillo R mostrado en la Figura 7, tiene una capacidad de direcciones FMAX = 5. Varias configuraciones y tamaños de interruptores pueden ser utilizados. En un ejemplo ilustrativo, un interruptor inferior incluye 64 puertos de salida. La dirección del puerto de salida puede ser almacenada en un patrón binario de 6 bits. El anillo R incluye cinco campos 702 etiquetados como Fo, F-i , F2, F3 y F4 que mantienen las ubicaciones del puerto de salida en la colección C . Cada uno de los campos tiene siete bits de longitud. El primer bit en el campo de siete bits es ajustado a 1 si una localización de CN es almacenada en los siguientes seis bits del campo. De otra manera, el primer bit es ajustado a 0. Al menos dos tipos de paquetes pueden llegar al módulo lógico de multidifusión MLM 714, incluyendo paquetes de MULTIDIFUSION DE LECTURA y MULTIDIFUSION DE ESCRITURA. Un primer tipo de paquete PW, tiene un campo OP1 que significa una operación de MULTIDIFUSION DE ESCRITURA. El paquete de ESCRITURA llega al anillo de comunicación 302 y tiene la forma de: | CARGA UTIL | OP1 | BIT | .
La CARGA UTIL es igual a los campos concatenados F0, F-i, F2, F3 y F4. El paquete PW llega al anillo de comunicación 302 a una ubicación adecuada para el MLM 714 para leer el primer bit de F0 al momento apropiado. El MLM escribe el primer bit de CARGA UTIL al anillo R, de una forma similar a la operación de ESCRITURA mencionada anteriormente con referencia a la Figura 6. La Figura 7, ilustra un módulo lógico que es conectado a un hardware especial de DPIM 714 que soporta una capacidad de multidifusión. En respuesta a una solicitud de ESCRITURA, el sistema realiza una operación en donde los campos Fo, F-¡, F2, F3 y F4, son transferidos desde los anillos Z y C a un anillo de almacenaje de datos R 304. Un paquete es indicado por un BIT = 1 ; cuando BIT = 0, el resto del paquete siempre es ignorado. El campo de código de operación OP1 sigue al campo BIT. En la operación de MULTIDIFUSION DE ESCRITURA, OP1 indica que la carga útil será transferida desde el paquete al anillo de almacenaje, reemplazando cualesquiera datos que se encuentra actualmente en el anillo de almacenaje. Los datos son transferidos en serie desde el MLM al anillo de almacenaje R. Ilustrativamente, los datos son transferidos a través de la línea que se encuentra más hacia la derecha 334. Los datos llegan en el formato correcto y en el momento y localización adecuados para ser colocados en el anillo de almacenaje 704. En la operación de MULTIDIFUSION DE ESCRITURA, puede ser ignorada una señal de control en la línea 722 que va desde el interruptor inferior al MLM.
Otro tipo de paquete PR, que significa una solicitud de MULTIDIFUSION DE LECTURA, puede llegar a un anillo de comunicación 302, y tiene la forma de: I CARGA UTIL | OP21 ESPACIO EN BLANCO | OP11 BIT | . La sección ESPACIO EN BLANCO, en el ejemplo, es de seis bits de longitud. El campo ESPACIO EN BLANCO es remplazado con una dirección objetivo, de uno de los campos de CN. El campo OP1 puede o no ser utilizado para un paquete o aplicación particulares. Un grupo de paquetes ingresa al interruptor inferior 112 con la forma de: | CARGA UTIL | OP2 | AD2 | BIT | . La dirección del campo AD2 se origina desde un campo del anillo R. EL campo de operación OP2 y CARGA UTIL se originan desde un paquete de MULTIDIFUSION DE LECTURA. En el ejemplo ilustrativo, el anillo de almacenaje R 704 ubicado en una dirección objetivo AD1 almacena las tres direcciones de puertos de salida, por ejemplo 3, 8 y 17. Las 3 direcciones de salida son almacenadas en el campo F0. El bit más significativo de las 3 direcciones aparece primero, seguido por los siguientes bits más significativos y así continúa. Por consiguiente, el patrón binario de seis bits estándar que representa 3 enteros con base en diez es 0000 . Los bits de encabezado son utilizados en el orden que va desde el bit más significativo hasta el bit menos significativo. Más adecuadamente, los bits del encabezado son almacenados con los bits más significativos almacenados primero, de tal manera que en el campo F0, el campo que representa las 3 salidas objetivo, es representado por el patrón de seis bits 110000. El campo F0 completo que incluye el bit de cronometraje que tiene un patrón de 7 bits 1 100001. De manera similar, el campo F-i almacena el número 8 decimal en el patrón 0001001. El campo F2 almacena el número 17 decimal como 1000101. Debido a que ningún otro puerto de salida adicional es direccionado, los campos F3 y F4 son ajustados todos a ceros, 0000000. Las señales de control en la línea 722 indican una condición de no bloqueado en el interruptor inferior, permitiendo a los paquetes ingresar al interruptor en la línea 718. Si una señal de control en la linea 722 que proviene del interruptor inferior hacia el módulo lógico 714, indica una condición de ocupado, entonces no se envía ningún dato en forma descendente. Cuando llega una señal de control de "no ocupado" a un MLM, el campo de datos de direcciones en el anillo R es colocado adecuadamente para generar y enviar respuestas en forma descendente a las unidades de lectura 708 y al interruptor inferior 1 12. En un momento adecuado a continuación de la llegada de la señal de "no ocupado" en el módulo lógico, el MLM empieza a enviar una pluralidad de paquetes de respuesta de MULTIDIFUSION DE LECTURA a la colección CN de direcciones a través del interruptor inferior 1 12. El sistema tiene la capacidad para enviar un paquete de MULTIDIFUSION DE LECTURA al DPIM en la dirección AD1 y entonces multidifundirlo al campo CARGA UTIL del paquete a las direcciones múltiples almacenadas en la colección C almacenada en el anillo R 704. Normalmente, el sistema de multidifusión contiene hardware que tiene la capacidad de realizar una gran variedad de tares de almacenaje y cálculo de datos. En el ejemplo ilustrativo, una capacidad de multidifusión es alcanzada a través del uso de una unidad DPIM 700 que es configurada especialmente para soportar y transmitir direcciones de multidifusión. Una generalización de la función de multidifusión descrita en la presente descripción es un modo específico en el cual, un paquete simple M es transmitido a un subconjunto predeterminado de los puertos de salida que tienen direcciones que designan membresías en la colección CN. Un bit enmascarado que indica cuáles miembros serán enviados, es llamado un envío enmascarado. En un ejemplo, las direcciones 3, 8 y 17, son tres miembros de la colección CN. Un envío enmascarado 0,0,1 ,0,1 indica que el primer y tercer puertos de salida en la lista CN recibirán paquetes. Los paquetes de respuesta son multidifundidos a los puertos de salida 3 y 17. En un ejemplo, una señal de control indica si todos los puertos de entrada están listos para recibir un paquete, o si uno o más puertos de entrada están bloqüeados. En otro ejemplo, una lista de puertos de salida no bloqueados es almacenada. La lista es una máscara denominada bloqueo enmascarado. El valor 1 en la posición N en el envío enmascarado indica que el miembro N de CN se desea enviar. El valor 1 en la posición N del bloqueo enmascarado indica que el miembro N de CN no está bloqueado, y por lo tanto, está libre para ser enviado. Para un valor 1 en la posición N de ambas máscaras, el paquete M será enviado al puerto de salida N en la lista. El paquete que será multidifundido a un subconjunto de los puertos de salida enlistados en C para el subconjunto indicado por el envío enmascarado tiene la forma de: CARGA UTIL | OP21 Máscara | OP de multidifusión | AD 1 | BIT | . El paquete es insertado en el interruptor superior del sistema. El campo de dirección AD2 no es utilizado debido a que, normalmente, la dirección en el campo AD2 está contenida en los datos almacenados en el campo la dirección AD1 . Haciendo referencia a la Figura 7, el campo BIT y el código OP1 son enviados dentro del módulo lógico 714 desde el anillo C ó el anillo Z. El envío enmascarado y el bloqueo enmascarado ingresan al módulo lógico al mismo tiempo. La información de CARGA UTIL es enviada a la dirección Fj si el bit J del envío enmascarado es ajustado a 1 y el bit J del bloqueo enmascarado es ajustado también a 1 . El resto de la operación continúa en la forma de multidifusión sin máscara. El ajuste de los puertos de salida en la colección CN es denotado como po, p-i , ... Pm- Los puertos de salida son divididos en grupos que contienen, cuando más, el número de miembros de C que pueden ser almacenados en un anillo de almacenaje de datos R. En caso que un anillo de datos R tenga cinco direcciones de salida y la colección C tenga nueve puertos de salida, entonces los primeros cuatro puertos de salida son almacenados en el grupo 0, los siguientes cuatro puertos de salida son almacenados en el grupo 1 , y los últimos puertos de salida son almacenados en el grupo 3. La secuencia del puerto de salida p0 Pi,... pg, puede de otra manera ser indexada como q0o, qoi, qo2, q03, q-??, Qii> Qi2, qi3> 20- De esta manera, la dirección física de un objetivo puede ser descrita completamente por los dos enteros que indican el número de grupo y el índice de campo de dirección. Para algunas aplicaciones, la carga útil del paquete transporta la siguiente información: La suscripción N de CN que indica cual puerto de las configuraciones de puertos de salida fue utilizado para ubicar la dirección, el grupo de CN, en el cual fue ubicada la dirección, el miembro del grupo al cual pertenece la dirección, y el puerto de entrada del interruptor superior dentro del cual fue insertado el paquete. Los artículos de información (2) y (3) indican dos índices de un miembro de q y a partir de los dos índices, el índice de p puede ser fácilmente calculado. Para un paquete que transporta esta información, el campo CARGA UTIL tuvo la forma de: N i primera suscripción de q | segunda suscripción de q | número de puerto de entrada | .
La Figura 7, también ¡lustra un sistema para utilizar direcciones indirectas en la multidifusión. Una operación más simple, es direccionar indirectamente a un puerto de salida simple. En un ejemplo de direccionamiento indirecto, el anillo de almacenaje de datos R contiene un campo simple que representa la dirección indirecta. Como un ejemplo, el anillo de almacenaje R de la DPIM en la dirección 17 contiene el valor 153. Un paquete enviado a la dirección 17 es enviado al puerto de salida 153 del interruptor inferior. En las modalidades descritas en la presente descripción, todos los módulos lógicos asociados con un anillo R determinado, envían datos al interruptor inferior 112. En caso de que una DPIM envíe un despliegue abrupto de tráfico, mientras que otras unidades DPIM envían una cantidad comparativamente más pequeña de tráfico al interruptor inferior, los anillos R individuales envían paquetes a un grupo de anillos B en lugar de hacerlo al mismo anillo. Todavía en otro ejemplo, los anillos R envían paquetes a un concentrador 150 que entrega los datos al interruptor inferior 1 12. En el sistema descrito en la presente descripción, la información que se encuentra tanto en el anillo de almacenaje de datos 304 como en el anillo de comunicación R 302 circula en la forma de un FIFO conectado circularmente. Una variación es un sistema en el cual, la información que se encuentra en el anillo R 704 es estática. Los datos en la unidad de memoria intermedia estática pueden interactuar en una forma que es equivalente en lógica con la del modelo de circulación descrito anteriormente. Una ventaja del modelo estático es que el almacenaje de datos posiblemente es más eficiente. En la presente descripción, los datos X son enviados a un anillo R que mantiene los datos Y. Un anillo de cómputo recibe tanto la corriente de datos X como la corriente de datos Y como señales de entrada, ejecuta una función matemática F en los datos X y Y, y envía el resultado del cálculo a un puerto de salida objetivo. El objetivo puede ser almacenado en el campo del anillo R, o en el campo AD2 del paquete. De manera alternativa, el objetivo puede ser condicional con base en el resultado de F(X,Y), o puede ser generado por otra función G(X,Y). En otras aplicaciones, las operaciones múltiples pueden ser realizadas en los datos X y en los datos Y, y los resultados de las múltiples operaciones pueden ser transferidos a una pluralidad de destinos. Por ejemplo, el resultado de la función F(X,Y) es enviado al destino designado por la dirección AD2. El resultado de la función H(X,Y) puede ser enviado al destino designado por una dirección AD3 en el paquete. La operación múltiple, permite de manera ventajosa al sistema 00 realizar eficientemente una amplia variedad de conversiones en paralelo. Además de realizar las funciones aritméticas más complicadas sobre dos fundamentos X y Y, pueden ser realizadas tareas más simples, de tal manera que la función F es una función de X ó de Y aislada. El resultado de una función simple F(X) ó F(Y) es enviado al destino designado por la dirección AD2, o es generado por otra función G(X).
Aunque la presente invención ha sido descrita haciendo referencia a diversas modalidades, se deberá entender que dichas modalidades son ilustrativas y que el alcance de la invención no está limitado por ellas. Muchas variaciones, modificaciones, adiciones y mejoras de las modalidades descritas son posibles. Por ejemplo, aquellos con habilidades ordinarias en la materia, fácilmente podrán implementar los pasos necesarios para proporcionar las estructuras y métodos aquí descritos, y entenderán que los parámetros, los materiales y las dimensiones del procedimiento son determinadas únicamente como medios para un ejemplo, y pueden ser ajustados para lograr las características funcionales deseadas, así como también las modificaciones que se encuentran dentro del alcance de la presente invención. Las variaciones y modificaciones de las modalidades aquí descritas pueden ser realizadas con base en la descripción establecida en esta publicación, sin alejarse del alcance y espíritu de la presente invención como se establece en las siguientes Reivindicaciones. Aquellos que tienen habilidades ordinarias en la materia podrían ser capaces de realizar varias modificaciones y variaciones útiles que se encuentran dentro del alcance de la presente invención. Varios ejemplos de dichas variaciones y modificaciones están enlistados pero podrían extenderse a otros sistemas. En las Reivindicaciones, a menos que se indique de otra forma, el artículo "un" se refiere a "uno o más de uno".

Claims (1)

  1. NOVEDAD DE LA INVENCIÓN REIVINDICACIONES 1.- Un aparato para procesamiento de datos en paralelo caracterizado porque comprende: una estructura de interconexión (100) que interconecta una pluralidad de ubicaciones; uno o más elementos de almacenaje (114) acoplados a la estructura de interconexión y accesibles, como ubicaciones, mediante la estructura de interconexión, en donde los elementos de almacenaje incluyen un elemento de almacenaje W en una ubicación L, en donde el elemento de almacenaje W tiene una pluralidad de secciones de almacenaje; y una pluralidad de unidades de cómputo (126) acopladas a la estructura de interconexión y accesibles como ubicaciones de la estructura de interconexión, en donde la pluralidad de unidades de cómputo tienen la capacidad de accesar datos desde uno o más elementos de almacenaje por medio de la estructura de interconexión, en donde las unidades de cómputo incluyen una unidad de cómputo C1 y una unidad de cómputo C2, en donde las unidades de cómputo C1 y C2 tienen la capacidad de leer desde diferentes secciones de almacenaje del elemento de almacenaje W de manera simultánea y tienen la capacidad de enviar contenidos de datos de las secciones de almacenaje del elemento de almacenaje W a diferentes ubicaciones objetivo. 2. - Un aparato de procesamiento de datos en paralelo, caracterizado porque comprende: una estructura de interconexión (100) que interconecta una pluralidad de ubicaciones; uno o más elementos de almacenaje (114) acoplados a la estructura de interconexión y accesibles, como ubicaciones, mediante la estructura de interconexión, en donde los elementos de almacenaje incluyen elementos de almacenaje W1 y W2 en las ubicaciones respectivas L1 y L2; y una pluralidad de unidades de cómputo (126) acopladas a la estructura de interconexión y accesibles como ubicaciones de la estructura de interconexión, en donde la pluralidad de unidades de cómputo tienen la capacidad de accesar datos desde uno o más elementos de almacenaje por medio de la estructura de interconexión, en donde las unidades de cómputo incluyen una unidad de cómputo C1 y una unidad de cómputo C2, en donde la unidad de cómputo C1 tiene la capacidad de realizar la lectura y operación en datos desde los elementos de almacenaje W1 y W2 simultáneamente, en donde la unidad de cómputo C2 tiene la capacidad de realizar la lectura y operación en datos desde los elementos de almacenaje W1 y W2 en un momento en que se traslapa la lectura y operación de la unidad de cómputo C1. 3. - Un aparato de procesamiento de datos en paralelo, caracterizado porque comprende: una estructura de interconexión (100) que interconecta una pluralidad de ubicaciones; uno o más elementos de almacenaje (114) acoplados a la estructura de interconexión y accesibles, como ubicaciones, mediante la estructura de interconexión, en donde los elementos de almacenaje incluyen un registro de cambio de distribución R1 , en donde el registro de cambio R1 almacena una palabra W1 que tiene una pluralidad de secciones de almacenaje; y una pluralidad de unidades de cómputo (126) acopladas a la estructura de interconexión y accesibles como ubicaciones de la estructura de interconexión, en donde la pluralidad de unidades de cómputo tienen la capacidad de operar en secciones de almacenaje separadas de la palabra W1 simultáneamente. 4.- El aparato de conformidad con la Reivindicación 3, caracterizado además porque: los elementos de almacenaje incluyen un registro de cambio de circulación R2 (302), en donde el registro de cambio R2 almacena una palabra W2 que tiene una pluralidad de secciones de almacenaje; y la pluralidad de unidades de cómputo tiene la capacidad de usar la información en la palabra W1 para operar en la palabra W2. 5 - Un aparato de procesamiento de datos en paralelo, caracterizado porque comprende: una estructura de interconexión ( 00) para transportar datos que incluyen una pluralidad de nodos (330) interconectados en una jerarquía, en donde la estructura de interconexión incluye una lógica (1 14) que anticipa las colisiones de datos en un nodo y resuelve las colisiones de datos de acuerdo con una prioridad determinada por la jerarquía; un primer interruptor (110) acoplado a la estructura de interconexión que distribuye datos a la estructura de interconexión de acuerdo con la información de comunicación contenida dentro de los datos; una pluralidad de módulos lógicos (114) acoplados a la estructura de interconexión, en donde los módulos lógicos tienen la capacidad de ejecutar operaciones en los datos; y un segundo interruptor (112) acoplado a la pluralidad de módulos lógicos y que recibe datos desde la pluralidad de módulos lógicos. 6. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque comprende: una pluralidad de módulos de interconexión acoplados a la pluralidad de módulos lógicos y acoplados al primer interruptor, en donde la pluralidad de módulos de interconexión tiene la capacidad de monitorear el tráfico de datos en los módulos lógicos y controlar el cronometraje de la inyección de datos por el primer interruptor para evitar colisiones de datos. 7. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque el primer interruptor tiene una pluralidad de puertos de salida, en donde el aparato además comprende: una pluralidad'de módulos de interconexión acoplados a la pluralidad de módulos lógicos y acoplados al primer interruptor, en donde la pluralidad de módulos de interconexión es asociada respectivamente con la pluralidad de los puertos de salida del primer interruptor. 8. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque: la pluralidad de módulos lógicos incluye lógica que utiliza la información contenida dentro de los datos para determinar una operación que será realizada por un módulo lógico de la pluralidad de módulos lógicos. 9. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque: la pluralidad de módulos lógicos tiene múltiples tipos de elementos lógicos diferentes con funcionalidades lógicas seleccionadas de entre las operaciones de transferencia de datos que incluyen cargas, almacenaje, lectura y escritura; las operaciones lógicas que incluyen y, o, ni, tampoco y, y exclusivos, y o, pruebas de bits; y operaciones aritméticas que incluyen sumas, restas, multiplicaciones, divisiones, funciones trascendentales. 10. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque comprende: una pluralidad de módulos de interconexión acoplados a la pluralidad de módulos lógicos y acoplados al primer interruptor, en donde la pluralidad de módulos de interconexión tiene la capacidad de monitorear el tráfico de datos en los módulos lógicos, incluyendo a las unidades de memoria intermedia y a los concentradores para mantener y concentrar los datos y controlar el cronometraje de la inyección de datos mediante el primer interruptor, para evitar colisiones de datos. 1 1. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque el primer y segundo interruptores, la pluralidad de estructuras de interconexión, y la pluralidad de módulos lógicos forman una unidad de interconexión, en donde el aparato además comprende: una o más unidades de cómputo (126) acopladas a la estructura de interconexión y colocadas para enviar datos al exterior de la estructura de interconexión y para enviar datos al interruptor superior. 12. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque el primer y segundo interruptores, la pluralidad de estructuras de interconexión, y la pluralidad de módulos lógicos forman una unidad de interconexión, en donde el aparato además comprende: una o más unidades de memoria acopladas a la estructura de interconexión y colocadas para enviar datos al exterior de la unidad de interconexión y para enviar datos al interruptor superior. 13. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque: el interruptor superior y el interruptor inferior manejan datos de múltiples longitudes diferentes en bits. 14 - El aparato de conformidad con la Reivindicación 5, caracterizado además porque: los módulos lógicos son módulos lógicos de memoria en programa dinámica. 15.- El aparato de conformidad con la Reivindicación 5, caracterizado además porque: el aparato opera sobre mensajes de datos con una pluralidad de información y campos de datos que incluyen un campo de carga útil con la capacidad de transportar datos de carga útil, en donde una primera dirección que designa una ubicación de almacenaje que mantiene los datos para ser operados, un primer código de operación que designa una operación que será ejecutada en los datos mantenidos en la primera dirección, una segunda dirección que designa un dispositivo opcional para operar sobre los datos de la primera dirección de ubicación de almacenaje, y un segundo código de operación que designa una operación que realizará el segundo dispositivo de dirección sobre los datos de la primera ubicación de almacenaje de datos. 16. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque: el aparato opera sobre mensajes de datos con una pluralidad de información y campos de datos que incluyen un campo que indica que un paquete de datos está presente, un campo de carga útil con la capacidad de transportar un dato de carga útil, una primera dirección que designa una ubicación de almacenaje que mantiene los datos sobre los que será realizada la operación, un primer código de operación que designa una operación que será realizada en los datos mantenidos en la primera dirección, una segunda dirección que designa un dispositivo opcional para operar sobre los datos desde la primera ubicación de almacenaje de dirección, y un segundo código de operación que designa una operación que va a realizar el segundo dispositivo de dirección sobre los datos de la primera ubicación de almacenaje de dirección. 17. - El aparato de conformidad con la Reivindicación 5, caracterizado además porque también comprende: una o más unidades de cómputo (126) acopladas al segundo interruptor, en donde el segundo interruptor tiene la capacidad de enviar paquetes de datos a una o más unidades de cómputo, en donde el aparato es un procesador de cómputo. 18. - El aparato de conformidad con la Reivindicación 5, caracterizado porque además comprende: uno o más elementos de almacenaje acoplados a la estructura de interconexión y accesibles, como ubicaciones, mediante la estructura de interconexión, en donde los elementos de almacenaje tienen una pluralidad de secciones de almacenaje; y una pluralidad de unidades de cómputo (126) acopladas a la estructura de interconexión y accesibles como ubicaciones de la estructura de interconexión, en donde la pluralidad de unidades de cómputo tienen la capacidad de accesar datos desde uno o más elementos de almacenaje por medio de la estructura de interconexión, en donde las unidades de cómputo incluyen una primera unidad de cómputo y una segunda unidad de cómputo, en donde la primera y segunda unidades de cómputo tienen la capacidad de leer desde diferentes secciones de almacenaje de un elemento de almacenaje simultáneamente y con capacidad de enviar contenidos de datos de diferentes secciones de almacenaje a diferentes ubicaciones objetivo. 19.- El aparato de conformidad con la Reivindicación 5, caracterizado porque además comprende: uno o más elementos de almacenaje (1 16) acoplados a la estructura de interconexión y accesibles, como ubicaciones, mediante la estructura de interconexión; y una pluralidad de unidades de cómputo (126) acopladas a la estructura de interconexión y accesibles como ubicaciones de la estructura de interconexión, en donde la pluralidad de unidades de cómputo tienen la capacidad de accesar datos desde uno o más elementos de almacenaje por medio de la estructura de interconexión, en donde las unidades de cómputo incluyen una primera unidad de cómputo y una segunda unidad de cómputo, en donde la primera unidad de cómputo tiene la capacidad de leer y operar sobre datos desde dos de los elementos de almacenaje simultáneamente, en donde la segunda unidad de cómputo tiene la capacidad de leer y operar sobre los datos desde los dos elementos de almacenaje en un momento que se traslapa la lectura y operación de la primera unidad de cómputo. 20.- Una memoria de acceso paralelo caracterizada porque comprende: una pluralidad de módulos lógicos (114) conectados a una estructura de interconexión jerárquica que tiene la capacidad de transportar datos y anticipar colisiones de datos en un nodo y resolver las colisiones de datos de acuerdo con una prioridad determinada por lo menos parcialmente por la jerarquía; un primer interruptor (110) acoplado a la estructura de interconexión que distribuye datos a la pluralidad de módulos lógicos de acuerdo con la información de comunicación contenida dentro de los datos; y un segundo interruptor (1 12) acoplado a la pluralidad de módulos lógicos y recibiendo datos desde la pluralidad de módulos lógicos. 21.- La memoria de conformidad con la Reivindicación 20, caracterizada además porque: un módulo lógico de la pluralidad de módulos lógicos incluye un anillo de comunicación de datos (306), y un anillo de almacenaje de datos (304), en donde el anillo de comunicación y el anillo de almacenaje de datos están distribuyendo las FIFOs. 22.- La memoria de conformidad con la Reivindicación 20, caracterizada además porque: un módulo lógico de la pluralidad de módulos lógicos incluye un anillo de comunicación de datos (302), y un anillo de almacenaje de datos (304), en donde el anillo de comunicación y el anillo de almacenaje de datos están distribuyendo las FIFOs, en donde un elemento de datos es mantenido en una memoria FIFO sencilla, en donde los datos son modificados por el módulo lógico conforme el elemento de datos se mueve alrededor del anillo de almacenaje de datos. 23.- La memoria de conformidad con la Reivindicación 20, caracterizada además porque: un módulo lógico de la pluralidad de módulos lógicos incluye un anillo de comunicación de datos (302), y un anillo de almacenaje de datos (304), en donde el anillo de comunicación y el anillo de almacenaje de datos está distribuyendo los FIFOs, en donde un elemento de datos es mantenido en una memoria FIFO sencilla, en donde la memoria FIFO sencilla tiene la capacidad de almacenar tanto instrucciones de programa como los datos. 24. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque: un módulo lógico de la pluralidad de módulos lógicos incluye un anillo de comunicación de datos y un anillo de almacenaje de datos, en donde el anillo de comunicación es una imagen de espejo de un anillo en un nivel inferior del primer interruptor que está acoplado al anillo de comunicación. 25. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque también comprende: un anillo de comunicación de datos; y una pluralidad de anillos de almacenaje de datos, uno o más módulos lógicos de la pluralidad de módulos lógicos que son asociados con el anillo de comunicación de datos y con los anillos de almacenaje de datos. 26. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque comprende: un anillo de comunicación de datos; y una pluralidad de anillos de almacenaje de datos, en donde uno o más de los módulos lógicos de la pluralidad de módulos lógicos son asociados con el anillo de comunicación de datos y con los anillos de almacenaje de datos, en donde la pluralidad de módulos lógicos tiene un mismo tipo de elemento lógico. 27. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque comprende: un anillo de comunicación de datos; y una pluralidad de anillos de almacenaje de datos, en donde uno o más de los módulos lógicos de la pluralidad de módulos lógicos están asociados con el anillo de comunicación de datos y con los anillos de almacenaje de datos, en donde la pluralidad de módulos lógicos tienen múltiples tipos diferentes de elementos lógicos. 28.- La memoria de conformidad con la Reivindicación 20, caracterizada además porque comprende: un anillo de comunicación de datos; y una pluralidad de anillos de almacenaje de datos, en donde uno o más de los módulos lógicos de la pluralidad de módulos lógicos están asociados con el anillo de comunicación de datos y con los anillos de almacenaje de datos, en donde la pluralidad de módulos lógicos tienen múltiples tipos diferentes de elementos lógicos con funcionalidades lógicas seleccionadas de entre las operaciones de transferencia de datos que incluyen y, o, tampoco, tampoco y, y exclusivos, y o, pruebas de bits; operaciones aritméticas que incluyen sumas, restas, multiplicaciones, divisiones, funciones trascendentales. 29. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque comprende: una pluralidad de módulos de interconexión acoplados a la pluralidad de módulos lógicos y acoplados al primer interruptor, en donde la pluralidad de módulos de interconexión tienen la capacidad de monitorear el tráfico de datos en los módulos lógicos e incluyen unidades de memoria intermedia y concentradores para mantener y concentrar los datos y controlar el cronometraje para la inyección de datos mediante el primer interruptor para evitar colisiones de datos. 30. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque comprende: un anillo de comunicación de datos (302); y una pluralidad de anillos de almacenaje de datos (304), en donde los anillos de almacenaje de datos almacenan datos que pueden ser accesados simultáneamente desde fuente múltiples y enviados simultáneamente a destinos múltiples. 31. - La memoria de conformidad con la Reivindicación 20, caracterizada además porque: los módulos lógicos son módulos lógicos de memoria en programa dinámico (1 14). 32.- Una memoria de acceso múltiple y dispositivo de cómputo caracterizados porque comprenden: una pluralidad de dispositivos lógicos, en donde los dispositivos lógicos incluyen dispositivos de memoria; y una estructura de interconexión acoplada a los dispositivos lógicos para enrutar datos y códigos de operación a los dispositivos lógicos, en donde la estructura de interconexión además incluye: una pluralidad de nodos (330); una pluralidad de elementos lógicos (114) asociados con la pluralidad de nodos; una pluralidad de trayectorias de interconexión de mensaje, en donde las trayectorias individuales acoplan a nodos seleccionados de una pluralidad de nodos para enviar datos desde un nodo que opera como un nodo de envío a un nodo que opera como un nodo de recepción; una pluralidad de trayectorias de interconexión de señal de control, en donde las trayectorias individuales acoplan a los nodos seleccionados de la pluralidad de nodos para enviar señales de control desde los nodos de envío a elementos lógicos asociados con los nodos de recepción; la pluralidad de nodos incluyen: diferentes nodos A, B, y X; una lógica I_B asociada con el nodo B que determina las decisiones de enrutamiento para el nodo B; una trayectoria de interconexión de mensaje desde el nodo B que opera como un nodo de envío al nodo X que opera como un nodo de recepción; una trayectoria de interconexión de mensaje desde el nodo A que opera como un nodo de envío a un nodo X que opera como un nodo de recepción; una trayectoria de interconexión de señal de control desde el nodo A que opera como un nodo de envío a la lógica LB, en donde la señal de control refuerza una prioridad para enviar datos desde el nodo A al nodo X sobre el envío de datos desde el nodo B al nodo X. 32.- Una memoria de acceso múltiple y dispositivo de cómputo caracterizados porque comprenden: una pluralidad de dispositivos lógicos (1 4), en donde los dispositivos lógicos incluyen dispositivos de memoria; y una estructura de interconexión acoplada a los dispositivos lógicos para enrutar datos y códigos de operación a los dispositivos lógicos, en donde la estructura de interconexión además incluye: una pluralidad de nodos (330) que incluyen diferentes nodos A, B, X, y Y; una pluralidad de trayectorias de interconexión que acoplan selectivamente nodos de la pluralidad de nodos, en donde las trayectorias de interconexión incluyen trayectorias de interconexión de control para enviar una señal de control desde un nodo de envío señal de control a una lógica asociada con el nodo que utiliza señal de control, y que incluye trayectorias de interconexión de datos para enviar datos desde un nodo de envío de datos a un nodo de recepción de datos; el nodo B que incluye trayectorias de interconexión de datos para enviar datos al nodo X y al nodo Y; el nodo A que incluye trayectorias de interconexión de control para enviar una señal de control a una lógica LB asociada con el nodo B, en donde la lógica LB se puede operar de tal manera que para un mensaje M que llega al nodo B, el nodo A envía una señal de control C a la lógica LB, en donde la lógica LB utiliza la señal de control C para determinar si envía el mensaje M al nodo X ó al nodo Y. 34. - La memoria de acceso múltiple y dispositivo de cómputo de conformidad con la Reivindicación 33, caracterizados además porque: la lógica LB se puede operar de tal manera que un mensaje M' que llega al nodo B es enrutado a un nodo D diferente a los nodos X, Y y B. 35. - Una memoria de acceso múltiple y dispositivo de cómputo caracterizados porque comprenden: una pluralidad de dispositivos lógicos (1 14), en donde los dispositivos lógicos incluyen dispositivos de memoria; y una estructura de interconexión (100) acoplada a los dispositivos lógicos para enrutar datos y códigos de operación a los dispositivos lógicos, en donde la estructura de interconexión además incluye: una pluralidad de nodos (330) que incluyen un nodo A, un nodo B y un conjunto de nodos P, en donde los nodos A y B son nodos distintos que son excluidos del conjunto de nodos P, en donde el nodo B tiene la capacidad de enviar datos a todos los nodos en el conjunto de nodos P; y una pluralidad de trayectorias de interconexión que acoplan selectivamente a nodos de la pluralidad de nodos, siendo los nodos seleccionados en pares que incluyen un nodo de envío y un nodo de recepción, en donde el nodo de envío es para enviar datos al nodo de recepción, en donde la pluralidad de trayectorias de interconexión que incluyen trayectorias de interconexión de datos y trayectorias de interconexión de control, en donde la pluralidad de trayectorias de interconexión de control acoplan selectivamente a los nodos de la pluralidad de nodos como un nodo de envío de señal de control para enviar señales de control a una lógica asociada con un nodo que utiliza la señal de control, la pluralidad de trayectorias de interconexión de control que incluyen una trayectoria de interconexión de control desde un nodo a una lógica I_B asociada con el nodo B, en donde la lógica LB utiliza una señal de control de un nodo A para determinar a cual nodo del conjunto de nodos P envía datos el nodo B. 36.- Una memoria de acceso múltiple y dispositivo de cómputo caracterizados porque comprenden: una pluralidad de dispositivos lógicos (114), en donde los dispositivos lógicos incluyen dispositivos de memoria; y una estructura de interconexión (100) acoplada a los dispositivos lógicos para enrutar datos y códigos de operación a los dispositivos lógicos, en donde la estructura de interconexión comprende además: una pluralidad de nodos (330) que incluyen un nodo A, un nodo B y un conjunto de nodos P, en donde los nodos A y B son diferentes nodos excluidos del conjunto de nodos P, en donde el nodo B tiene la capacidad de enviar datos a todos los nodos en el conjunto de nodos P; una pluralidad de trayectorias de interconexión que acoplan selectivamente nodos de la pluralidad de nodos, en donde los nodos son seleccionados en pares que incluyen un nodo de envío y un nodo de recepción, en donde el nodo de envío es para enviar datos al nodo de recepción; una lógica LA asociada con el nodo A que tiene la capacidad de determinar a dónde enrutar los datos del nodo A; una lógica LB asociada con el nodo B que tiene la capacidad de determinar a dónde enrutar los datos del nodo B, en donde la lógica LA es distinta de la lógica LB, en donde la lógica LB utiliza información determinada por la lógica LA para determinar a cuál nodo del conjunto de nodos P envía los datos el nodo B. 37. - La memoria de acceso múltiple y dispositivo de cómputo de conformidad con la Reivindicación 36, caracterizados además porque: el nodo B tiene la capacidad de enviar datos a un nodo de salida del conjunto de nodos P. 38. - La memoria de acceso múltiple y dispositivo de cómputo, caracterizados porque comprenden: una pluralidad de dispositivos lógicos (1 14), en donde los dispositivos lógicos incluyen dispositivos de memoria; y una estructura de interconexión (100) acoplada a los dispositivos lógicos para enrutar datos y códigos de operación a los dispositivos lógicos, en donde la estructura de interconexión además incluye: una pluralidad de nodos (330), en donde los nodos individuales incluyen una pluralidad de puertos de entrada de datos, una pluralidad de puertos de salida de datos y un elemento lógico que controla el flujo de datos a través del nodo; la pluralidad de nodos incluye nodos A, B, X, y Y mutuamente distintos; una pluralidad de trayectorias de interconexión que acoplan selectivamente a nodos de la pluralidad de nodos, en donde las trayectorias de interconexión incluyen trayectorias de interconexión de control para enviar una señal de control desde un nodo de envío de señal de control a una lógica asociada con un nodo que utiliza señal de control, y que incluye trayectorias de interconexión de datos para enviar datos desde un nodo de envío de datos a un nodo de recepción de datos, en donde las trayectorias de interconexión de datos acoplan selectivamente a los puertos de entrada de datos y los puertos de salida de datos, en donde la pluralidad de trayectorias de interconexión de control acoplan nodos y elementos lógicos para enviar señales de control desde un nodo de envío de señal de control a un elemento lógico asociado con un nodo que tiene un flujo de datos que depende de las señales de control; el nodo B estando asociado con un elemento lógico LB que utiliza una señal de control desde el nodo A para determinar el enrutamiento de un mensaje M que pasa a través del nodo B, una señal de control C recibida desde el nodo A que produce el envío del ¾ mensaje M al nodo X, y una señal de control C recibida desde el nodo A que produce el envío del mensaje M desde el nodo B al nodo Y. 39. - La memoria de acceso múltiple y dispositivo de cómputo de conformidad con la Reivindicación 38, caracterizados además porque: el 5 enrutamiento de un mensaje M' que pasa a través del nodo B es lo mismo sí la señal de control del nodo A es la señal de control C ó la señal de control C 40. - La memoria de acceso múltiple y dispositivo de cómputo de conformidad con la Reivindicación 38, caracterizados además porque: la señal de control enviada al nodo B está bifurcada desde el puerto de salida de datos 10 del nodo A. 41. - Una memoria de acceso múltiple y dispositivo de cómputo caracterizados porque comprenden: una pluralidad de dispositivos lógicos (1 14), en donde los dispositivos lógicos incluyen dispositivos de memoria; y una estructura de interconexión (100) acoplada a los dispositivos lógicos para 15 enrutar datos y códigos de operación a los dispositivos lógicos, en donde la estructura de interconexión además incluye: una pluralidad de nodos (330) que incluyen un nodo X y un conjunto de nodos P, en donde el conjunto de nodos P incluye una pluralidad de nodos que tienen la capacidad de enviar datos al nodo X; y una pluralidad de trayectorias de interconexión que acoplan 20 selectivamente nodos de la pluralidad de nodos, en donde las trayectorias de interconexión incluyen trayectorias de interconexión de datos para enviar datos desde el nodo de envío a un nodo de recepción, en donde los nodos en el conjunto de nodos P tienen una relación de prioridad para enviar datos al 4 ¿ nodo X, en donde el nodo tiene la prioridad más alta para enviar datos al nodo X, que nunca es bloqueado para enviar datos al nodo X. 42. - La memoria de acceso múltiple y dispositivo de cómputo de conformidad con la Reivindicación 41 , caracterizados además porque: un 5 nodo A del conjunto de nodos P no está bloqueado para enviar datos al nodo X por los datos enviados al nodo X desde el nodo B que tiene una prioridad más baja que el nodo A para enviar datos al nodo X. 43. - La memoria de acceso múltiple y dispositivo de cómputo de conformidad con la Reivindicación 41 , caracterizados además porque: la 10 relación de prioridad entre los nodos en el conjunto de nodos P tiene capacidad para enviar datos al nodo X dependiendo de la posición de los nodos individuales en el conjunto de nodos P dentro de la estructura de interconexión.
MXPA03003528A 2000-10-19 2001-10-19 Estructura de interconexion escalable para operaciones de computo paralelas y acceso paralelo a memoria. MXPA03003528A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US69360300A 2000-10-19 2000-10-19
PCT/US2001/050543 WO2002033565A2 (en) 2000-10-19 2001-10-19 Scaleable interconnect structure for parallel computing and parallel memory access

Publications (1)

Publication Number Publication Date
MXPA03003528A true MXPA03003528A (es) 2005-01-25

Family

ID=24785344

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA03003528A MXPA03003528A (es) 2000-10-19 2001-10-19 Estructura de interconexion escalable para operaciones de computo paralelas y acceso paralelo a memoria.

Country Status (7)

Country Link
EP (1) EP1360595A2 (es)
JP (1) JP4128447B2 (es)
CN (1) CN100341014C (es)
AU (1) AU2002229127A1 (es)
CA (1) CA2426422C (es)
MX (1) MXPA03003528A (es)
WO (1) WO2002033565A2 (es)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8605099B2 (en) 2008-03-31 2013-12-10 Intel Corporation Partition-free multi-socket memory system architecture
CN101833439B (zh) * 2010-04-20 2013-04-10 清华大学 基于分合思想的并行计算硬件结构
CN102542525B (zh) * 2010-12-13 2014-02-12 联想(北京)有限公司 一种信息处理设备以及信息处理方法
US10168923B2 (en) 2016-04-26 2019-01-01 International Business Machines Corporation Coherency management for volatile and non-volatile memory in a through-silicon via (TSV) module
US10236043B2 (en) * 2016-06-06 2019-03-19 Altera Corporation Emulated multiport memory element circuitry with exclusive-OR based control circuitry
FR3083350B1 (fr) * 2018-06-29 2021-01-01 Vsora Acces memoire de processeurs
US10872038B1 (en) * 2019-09-30 2020-12-22 Facebook, Inc. Memory organization for matrix processing
CN117294412B (zh) * 2023-11-24 2024-02-13 合肥六角形半导体有限公司 基于单比特位移的多通道串转并自动对齐电路及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4977582A (en) * 1988-03-31 1990-12-11 At&T Bell Laboratories Synchronization of non-continuous digital bit streams
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
US5923654A (en) * 1996-04-25 1999-07-13 Compaq Computer Corp. Network switch that includes a plurality of shared packet buffers
US6289021B1 (en) * 1997-01-24 2001-09-11 Interactic Holdings, Llc Scaleable low-latency switch for usage in an interconnect structure

Also Published As

Publication number Publication date
AU2002229127A1 (en) 2002-04-29
WO2002033565A3 (en) 2003-08-21
CA2426422C (en) 2012-04-10
WO2002033565A2 (en) 2002-04-25
CN100341014C (zh) 2007-10-03
CN1489732A (zh) 2004-04-14
JP4128447B2 (ja) 2008-07-30
EP1360595A2 (en) 2003-11-12
JP2004531783A (ja) 2004-10-14
CA2426422A1 (en) 2002-04-25

Similar Documents

Publication Publication Date Title
EP0733237B1 (en) Multidimensional interconnection and routing network for an mpp computer
US4621359A (en) Load balancing for packet switching nodes
Dally et al. Deadlock-free adaptive routing in multicomputer networks using virtual channels
KR900006791B1 (ko) 패킷 스위치식 다중포트 메모리 n×m 스위치 노드 및 처리 방법
US5533198A (en) Direction order priority routing of packets between nodes in a networked system
Chien et al. Planar-adaptive routing: low-cost adaptive networks for multiprocessors
EP0821816B1 (en) Adaptive routing mechanism for torus interconnection network
US5170482A (en) Improved hypercube topology for multiprocessor computer systems
AU667797B2 (en) Generating communication arrangements for massively parallel processing systems
Scheideler Universal routing strategies for interconnection networks
MXPA03003528A (es) Estructura de interconexion escalable para operaciones de computo paralelas y acceso paralelo a memoria.
US20050036445A1 (en) Processing data packets
EP0294890A2 (en) Data processing system
Rahman et al. Dynamic communication performance of a TESH network under the nonuniform traffic patterns
US20040158663A1 (en) Interconnect topology for a scalable distributed computer system
Prakash et al. VLSI implementation of a wormhole router using virtual channels
Krichene Check for AINOC: New Interconnect for Future Deep Neural Network Accelerators Hana Krichene (), Rohit Prasad®, and Ayoub Mouhagir Université Paris-Saclay, CEA, List, 91120 Palaiseau, France
Lay High-performance communication in parallel computers
Gaizauskas et al. Formation of multiple filaments in transparent solids
Wang et al. An Effective Approach for Multicast on Multi-core Architecture
Sharif-Kashani Using interconnection-processor combining to reduce hot spots and tree saturation in multistage interconnection networks
WO1989001665A1 (en) Hypercube topology for multiprocessor systems with added communication paths between nodes or substituted corner topologies
Park et al. An efficient routing scheme for scalable hierarchical networks
Ashraf Routing in multicomputer networks: A classification and comparison
Ravikumar VLSI Implementation of a Wormhole Router Using Virtual Channels

Legal Events

Date Code Title Description
FG Grant or registration