ES2285415T3 - Conjunto ordenado de procesadores. - Google Patents

Conjunto ordenado de procesadores. Download PDF

Info

Publication number
ES2285415T3
ES2285415T3 ES04705111T ES04705111T ES2285415T3 ES 2285415 T3 ES2285415 T3 ES 2285415T3 ES 04705111 T ES04705111 T ES 04705111T ES 04705111 T ES04705111 T ES 04705111T ES 2285415 T3 ES2285415 T3 ES 2285415T3
Authority
ES
Spain
Prior art keywords
bus
primary
delay
processors
ordered set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES04705111T
Other languages
English (en)
Inventor
John Matthew Nolan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Picochip Designs Ltd
Original Assignee
Picochip Designs Ltd
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 Picochip Designs Ltd filed Critical Picochip Designs Ltd
Application granted granted Critical
Publication of ES2285415T3 publication Critical patent/ES2285415T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Eye Examination Apparatus (AREA)
  • Bus Control (AREA)

Abstract

Un conjunto ordenado de procesadores, que comprende: una pluralidad de buses primarios (8), cada uno conectado a un activador (1) de bus primario, y teniendo cada uno una pluralidad respectiva de nodos (2) de bus primario en el mismo; pluralidades respectivas de buses secundarios (7), conectadas a dichos nodos (2) de bus primario; y una pluralidad de elementos (4) de procesador cada uno conectado a uno de los buses secundarios (7); caracterizado por elementos de retardo, asociados con los nodos (2) de bus primario, para retardar las comunicaciones con los elementos (4) de procesador conectados a diferentes buses de los buses secundarios (7) por cantidades diferentes, con el fin de lograr un grado de sincronización entre la operación de dichos elementos (4) de procesador.

Description

Conjunto ordenado de procesadores.
Este invento se refiere a un conjunto ordenado de procesadores, y en particular a un gran conjunto ordenado de procesadores que requiere comunicación multi-bit, bidireccional y de elevado ancho de banda a un procesador en una vez, a todos los procesadores al mismo tiempo o a un sub-conjunto de procesadores al mismo tiempo. Esta comunicación se podría necesitar para transferencia de datos, tal como cargar un programa en un procesador o volver a extraer información de estado o información de resultados de un procesador, o para control del conjunto ordenado de procesadores, tal como la puesta en marcha, parada o el escalonamiento único sincrónicos de los procesadores individuales.
El documento GB-A-2370380 describe un gran conjunto ordenado de procesadores, en el que cada procesador (elemento de conjunto ordenado) necesita guardar las instrucciones que constituyen un programa operativo, y luego necesita ser controlable de tal manera que ejecute el programa operativo según se desee. Como los elementos de conjunto ordenado pasan datos de uno a otro, es esencial que los procesadores estén sincronizados al menos aproximadamente. Por tanto, se deben poner en marcha (es decir, comenzar a ejecutar su programa) al mismo tiempo. Análogamente, si tienen que detenerse en algún instante y luego volver a ponerse en marcha, necesitan detenerse al mismo tiempo.
Debido al gran número de elementos de conjunto ordenado, y a las dimensiones relativamente grandes de sus memorias de instrucciones, memorias de datos, archivos de registro, etc., es ventajoso que se pueda cargar rápidamente el programa para cada elemento de conjunto ordenado.
Debido al tamaño del conjunto ordenado de procesadores, es difícil minimizar la cantidad de sesgo del reloj entre cada elemento de conjunto ordenado y, de hecho, es ventajoso desde el punto de vista de suministrar energía a los elementos de conjunto ordenado tener una cierta cantidad de sesgo del reloj. Es decir, es necesario para los elementos de conjunto ordenado estar sincronizados hasta dentro de aproximadamente un ciclo de reloj entre sí.
Para el control sincrónico de un conjunto ordenado de procesadores, la solución más sencilla sería conexionar las señales de control a todos los elementos de conjunto ordenado en una divergencia de salida en paralelo. Esto tiene la limitación de que llega a ser difícil de manejar una vez que el conjunto ordenado es mayor de un tamaño determinado. Una vez que la distancia que las señales tienen que recorrer es tan larga que causa que las señales tarden más de un ciclo de reloj en llegar a los elementos de conjunto ordenado más distantes, se hace difícil conducir las señales de control eficientemente y equilibrar los tiempos de llegada a punto final sobre todas las condiciones operativas. Esto impone un límite superior sobre la velocidad de reloj que se puede usar, y por tanto sobre el ancho de banda de las comunicaciones. Adicionalmente, esta solución no se adapta bien a poder hablar justo a un procesador cada vez en un modo y luego a todos los procesadores enseguida en otro modo.
Para comunicaciones de elevado ancho de banda a múltiples puntos finales, las redes conmutadas por paquetes o conmutadas por circuitos son una buena solución. Sin embargo, esta solución tiene el inconveniente de que generalmente no es sincrónica en todos los puntos finales. El retraso en comunicación hasta los puntos finales más alejados es mayor que a los puntos finales que están muy próximos. Esto requiere también que los nodos de la red sean bastante inteligentes, y por tanto complejos.
Es también necesario considerar el tema de la escalabilidad. Un diseño que funcione bien en un conjunto ordenado de procesadores podría tener que rediseñarse por completo para un conjunto ordenado ligeramente mayor, y podría resultar relativamente ineficaz para un conjunto ordenado menor.
El documento JP08297652 describe un conjunto ordenado de procesadores que comprende buses primarios con buses secundarios conectados a los mismos. Esto tiene el efecto de reducir el área de conexionado necesaria para conectar todos los elementos de procesador del conjunto ordenado, pero no tiene en cuenta diferencias en el retraso en comunicación entre elementos muy próximos al excitador del bus y los que están lejos de él.
De acuerdo con el presente invento, se provee lo especificado en las reivindicaciones.
La Figura 1 es un diagrama esquemático de bloques de un conjunto ordenado de procesadores de acuerdo con el presente invento.
La Figura 2 es un diagrama esquemático de bloques de una primera realización de un nodo primario en el conjunto ordenado de la Figura 1.
La Figura 3 es un diagrama esquemático de bloques de una segunda realización de un nodo primario en el conjunto ordenado de la Figura 1.
La Figura 4 es un diagrama esquemático de bloques de un nodo secundario en el conjunto ordenado de la Figura 1.
La Figura 5 es un diagrama esquemático de bloques, más detallado, de una parte del conjunto ordenado de la Figura 1.
La Figura 6 es un diagrama esquemático de bloques, más detallado, de una segunda parte del conjunto ordenado de la Figura 1.
Las Figuras 7 y 8 muestran partes del conjunto ordenado de la Figura 1, en uso.
La Figura 1 muestra un conjunto ordenado de procesadores 4, que están conectados todos a un activador 1 de columna sobre buses 5. Como se ha ilustrado, el conjunto ordenado está constituido por filas horizontales y columnas verticales de elementos 4 de conjunto ordenado, aunque las posiciones físicas reales de los elementos de conjunto ordenado no son importantes para este invento. Cada fila de elementos de conjunto ordenado se ha dividido en sub-grupos 6. Los elementos 4 de conjunto ordenado dentro de un sub-grupo 6 están conectados juntos en un segmento 7 de bus horizontal por medio de los respectivos nodos 3 de fila. Los segmentos 7 de bus horizontal están conectados buses verticales 8 por medio de respectivos nodos 2 de columna. Cada sub-grupo 6 contiene elementos de conjunto ordenado con los que el nodo 2 de columna puede comunicar fácilmente dentro de un único ciclo de reloj. De este modo, los buses verticales 8 actúan como buses primarios, los nodos 2 de columna actúan como nodos de bus primario, los segmentos 7 de bus horizontal actúan como nodos de bus secundario y los nodos 3 de fila actúan como nodos de bus secundario.
Cada bus vertical 8 se activa individualmente mediante el activador 1 de columna, como se describirá con más detalle más adelante con referencia a la Figura 5. Esto sirve como parte del encaminamiento de comunicación y como un medio de conservar energía.
Cada uno de los buses 5, 7, 8 es de hecho un par de buses multidireccionales multibit, uno en cada dirección, aunque para mayor claridad de la exposición se han mostrado como una sola línea.
Los nodos 2 de columna adoptan dos formas diferentes, mostradas respectivamente en las Figuras 2 y 3. La Figura 2 muestra un nodo de columna sin una etapa de canalización vertical, mientras que la Figura 3 muestra un nodo de columna con una etapa de canalización vertical.
En el nodo 10 de columna mostrado en la Figura 2, la parte de salida del bus vertical 8, que transporta datos del activador 1 de columna, se propaga directamente a través del nodo 10 desde una entrada 12 hasta una salida 15. Tiene también una derivación, en una conexión 26, a un bus adicional 25. El bus 25 está conectado a una parte 13 de salida del segmento 7 de bus horizontal por medio de una corta línea de retardo 18 con derivación. La línea de retardo derivada 18 permite que la señal que va al segmento 7 de bus horizontal se retarde por un número entero predeterminado de ciclos de reloj. La parte 14 de camino de retorno del segmento 7 de bus horizontal, que transporta datos al activador 1 de columna, se hace pasar también a través de una corta línea de retardo derivada 19 para conectar a un bus 20. La línea de retardo 19 retarda la señal de retorno por un número predeterminado de ciclos de reloj. El retardo en la línea de retardo 19 es preferiblemente el mismo que el retardo en la línea de retardo 18, aunque el retardo en la línea de retardo 19 se podría elegir de modo que fuese diferente del retardo en la línea de retardo 18, con tal que los retardos en los diferentes nodos 10 se configuren para que exista el mismo retardo total cuando se envía la señal a todos los puntos finales, y cuando se reciban señales procedentes de todos los puntos finales. El bus 20 se combina con el camino de retorno del bus vertical recibido en una entrada 16 en una función lógica "O" 17 a nivel de bit, para formar una señal de bus vertical de camino de retorno para la salida 11.
La Figura 3 presenta una forma alternativa de nodo 22 de columna. Las características del nodo 22 de columna, que tiene las mismas funciones que las características del nodo 10 de columna mostradas en la Figura 2, se han indicado mediante los mismos números de referencia, y no se volverán a describir más adelante. Comparado con el nodo 19 de columna, el nodo 22 de columna tiene una etapa de canalización vertical. Es decir, existe un registro 23 de canalización insertado en la parte de salida del bus vertical 8, que retarda las señales de salida en un ciclo de reloj, y un registro 24 de canalización insertado en el camino de retorno del bus vertical 8, que similarmente retarda las señales de retorno en un ciclo de reloj.
Ambos tipos de nodo de columna 10, 22 proveen una unión entre el bus vertical 8 y los segmentos 7 de bus horizontal para los sub-grupos 6 de elementos 4 de conjunto ordenado. El nodo 22 de columna que tiene una etapa de canalización vertical permite que el camino total de bus vertical sea más largo que un solo ciclo de reloj. El nodo 10 de columna sin la etapa de canalización vertical permite la unión a proveer sin la adición de una etapa de canalización al camino de bus vertical. El uso de los dos tipos de nodo de columna conjuntamente entre sí, como se describe más adelante con mayor detalle, permite canalización suficiente para habilitar comunicaciones de elevado ancho de banda sin tener que reducir la velocidad del reloj, pero sin una profundidad total de canalización innecesariamente grande y por tanto ineficaz.
La Figura 4 muestra con más detalle un nodo 3 de fila, del tipo representado en la Figura 1. La parte de salida del bus horizontal 7, que transporta datos del activador 1 de columna, se propaga directamente a través del nodo desde una entrada 51 hasta una salida 53. También tiene una derivación, en una conexión 50, a un bus adicional 60. El bus 60 está conectado a una interfaz 57 de elemento de conjunto ordenado.
El elemento 57 de conjunto ordenado se conecta a uno de los elementos de conjunto ordenado, como se muestra en la Figura 1, a través de los buses 55 y 56. La interfaz 57 de elemento de conjunto ordenado interpreta el protocolo de bus para determinar si las comunicaciones recibidas están destinadas al elemento específico de conjunto ordenado, que está conectado a este nodo de fila. La información que se vuelve a extraer del elemento de conjunto ordenado conectado a este nodo 3 de fila se recibe en la interfaz 57, y se descarga como salida sobre un bus 59. Una parte de camino de retorno del bus horizontal 7, que transporta datos hacia el activador 1 de columna, se recibe en una entrada 54. El bus 59 se combina con el camino de retorno del bus horizontal en una función lógica "O" a nivel de bit, 58, para formar una señal horizontal de camino de retorno para la salida 52.
La Figura 5 muestra con más detalle uno de los subgrupos 6 de fila, mostrados en la Figura 1. En este ejemplo ilustrado, el sub-grupo 6 contiene cuatro elementos 4 de conjunto ordenado, aunque podrían existir más o menos de cuatro elementos en un subgrupo, dependiendo del número de elementos con los que puede comunicar efectivamente el activador 1 de columna en un solo ciclo de reloj. Los cuatro elementos 4 de conjunto ordenado están conectados al bus horizontal 7 a través de respectivos nodos 3 de fila. Los datos se reciben en el segmento 13 de bus horizontal de salida (mostrado en las Figuras 2 y 3). y se descargan como salida en la parte 14 de camino de retorno (mostrada también en las Figuras 2 y 3) del segmento de bus horizontal 13. El segmento de bus horizontal de salida se deja sin conectar en el extremo lejano 62. El segmento de bus horizontal de camino de retorno se termina con todo ceros lógicos, o con puesta a tierra, en su extremo lejano 63. Esto es para evitar la corrupción de cualesquiera datos de camino de retorno, que podrían introducirse por la función lógica "O" en el bus 7 a través de cualquiera de los nodos horizontales 3.
La Figura 6 muestra con más detalle el activador 1 de columna de la Figura 1. En este ejemplo ilustrado, el número de columnas es cuatro, pero podría ser mayor o menor de cuatro. Los datos de salida para los elementos 4 de conjunto ordenado se reciben de un procesador de control de conjunto ordenado (no mostrado) en un bus 31, que está conexionado en paralelo a las partes de salida 33, 35, 37, 39 de cada uno de los cuatro buses verticales conectados a las columnas respectivas. El bus 31 está conectado a las partes de salida 33, 35, 37, 39 a través de las respectivas funciones lógicas 43 "Y" a nivel de bit. Las funciones lógicas "Y" 43 reciben también señales de habilitación 44 de un bloque 42 de obtención de información de protocolo. El bloque 42 de obtención de información de protocolo vigila las comunicaciones en el bus 31 y, basándose en las señales de dirección entre los datos, genera señales de habilitación que habilitan cada columna individualmente o todas juntas según sea apropiado.
Las partes de camino de retorno 34, 36, 38, 40 de cada uno de los cuatro buses verticales conectados a las columnas respectivas se combinan en una función "O" lógica 41 a nivel de bit para generar el bus 32 de camino de retorno global con el fin de transferir datos desde los elementos 4 de conjunto ordenado al procesador de control de conjunto ordenado.
Como se muestra en la Figura 6, el activador de columna se conecta a cuatro columnas. Sin embargo, cuando el conjunto ordenado contiene un gran número de elementos 4, y/o los sub-grupos 6 solamente contienen pequeños números de elementos 4, el número de columnas podría llegar a ser grande. En ese caso, se podrían requerir etapas adicionales de canalización para asegurar que los retardos a y desde todos los puntos finales siguen siendo los mismos. Por ejemplo, se podrían proveer registros adicionales de canalización en uno o más de los ramales 33-40, y/o en una o más de las entradas a la puerta "O" 41, y/o en las entradas a una o más de las puertas "Y" 43.
Por tanto, el bus de camino de salida total es una simple conexión en paralelo con la adición de algunas etapas de canalización y de cierta conmutación de alto nivel. La conmutación de alto nivel realiza parte de la función de asignación de dirección de elementos de conjunto ordenado, y ayuda a conservar energía.
El bus de camino de retorno total es una simple convergencia de entrada lógica "O" con la adición de algunas etapas de canalización. No es necesario arbitraje debido al retraso constante en comunicación del bus, porque el procesador de control de conjunto ordenado solamente extraerá información de un elemento de conjunto ordenado cada vez, y debido a que los elementos de conjunto ordenado que no están siendo controlados transmiten señales lógicas todo ceros en el bus.
Esto todavía permite una canalización apretada de accesos de extracción de información, y evita el uso de buses de tres estados.
Las Figuras 7 y 8 presentan dos disposiciones posibles de nodos de columna. En ambas disposiciones, los nodos de columna que están más próximos al activador de bus de columna introducen retardos más largos, por medio de sus líneas de retardo derivadas, que los nodos de columna que están más lejos del activador de bus de columna.
En la Figura 7, el nodo de columna que está más cerca del activador de bus de columna es un nodo 22 con una etapa de canalización vertical, como se muestra en la Figura 3 y se ha representado en la Figura 7 por un círculo de trazo lleno, y cada cuarto nodo de columna a partir de entonces tiene también una etapa de canalización vertical, mientras que los otros nodos de columna son nodos 10 que no tienen una etapa de canalización vertical, como se ha mostrado en la Figura 2 y representado en la Figura 7 por un círculo. En la Figura 8, el nodo de columna que está más próximo al activador de bus de columna es un nodo 22 con una etapa de canalización vertical, como se ha mostrado en la Figura 3 y representado en la Figura 8 por un circulo de trazo lleno,. y cada tercer nodo de columna a partir de entonces tiene también una etapa de canalización vertical, mientras que los otros nodos de columna son nodos 10 que no tienen una etapa de canalización vertical, como se ha mostrado en la Figura 2 y representado en la Figura 8 por un círculo. La separación real de los nodos con una etapa de canalización vertical dependerá de la implementación física. La separación debería elegirse con el fin de usar el mínimo número de nodos con etapas de canalización vertical, manteniendo al mismo tiempo el funcionamiento correcto del bus sobre todas las condiciones operativas. Los nodos con etapas de canalización vertical podrían estar espaciados regularmente, o espaciados irregularmente, si se requiere. Esto ilustra la escalabilidad de esta solución, puesto que todo lo que varía es el retraso total en comunicación, no el ancho de banda.
Las Figuras 7 y 8 ilustran también configuraciones ejemplares de las líneas de retardo 18, 19 con derivaciones en cada nodo de columna. En la Figura 7, comenzando en el nodo de columna que está más distante del activador 1 de bus de columna, es decir, el nodo 74, las líneas de retardo 18, 19 con derivaciones tienen un tiempo de retardo, D, que se configura al mínimo tiempo de retardo, a saber ciclos de reloj 0 en este ejemplo. Luego, se asignan tiempos de retardo mediante el movimiento ascendente de la columna, e incrementando el tiempo de retardo en 1 ciclo de reloj cada vez que se pasa un nodo 22 de canalización. Así, en la Figura 7, las líneas de retardo 18, 19 con derivaciones en el nodo canalizado 75 tienen todavía un tiempo de retardo D = 0, puesto que el ramal horizontal en este nodo está después de los registros 23, 24 de canalización. El nodo siguiente se configura con las líneas de retardo 18, 19 con derivaciones teniendo un tiempo de retardo D = 1 ciclo de reloj, Este proceso se repite hasta que se alcanza el nodo de columna más cercano al activador de bus de columna. De este modo, todos los puntos finales, sobre los segmentos de bus horizontal, tienen el mismo retraso en comunicación a y desde la parte más alta de la columna.
En la Figura 8 se puede ver un patrón similar de configuración de línea de retardo con derivaciones. Así, en el nodo 78 de columna que está más distante del activador 1 de bus de columna, las líneas de retardo 18, 19 con derivaciones tienen un tiempo de retardo, D, que se configura al mínimo tiempo de retardo, a saber 0 ciclos de reloj en este ejemplo, De nuevo, se asignan los tiempos de retardo mediante el movimiento ascendente de la columna, e incrementando el tiempo de retardo en 1 ciclo de reloj cada vez que se pasa un nodo canalizado 22. De ese modo, en la Figura 8, el nodo 79 está configurado con las líneas de retardo 18, 19 con derivaciones teniendo un tiempo de retardo D = 1 ciclo de reloj. Este proceso se puede repetir hasta que se haya alcanzado el nodo de columna más cercano al activador de bus de columna.
Cuando el tiempo de retardo de una línea de retardo 18 con derivaciones se configura a 0 ciclos de reloj, los puntos finales conectados a esa línea de retardo con derivaciones están activados de hecho por el registro precedente 23 de canalización de bus vertical Esto podría aumentar excesivamente la carga sobre el registro de canalización. Por tanto, en la práctica, el mínimo tiempo de retardo en las líneas de retardo 18, 19 con derivación se podría elegir como 1 ciclo de reloj, en lugar de 0, con el fin de reducir esta carga.
La asignación de dirección de elementos individuales de conjunto ordenado se codifica en las señales transferidas sobre esta estructura de bus como fila, columna de bus vertical y columna de sub-grupo. El activador 1 de bus de columna puede descodificar la información de columna de bus vertical para habilitar selectivamente las columnas, o bien, si se usa una dirección del tipo de emisión, entonces puede habilitar todas las columnas. Los nodos 3 de fila descodifican la información de fila y la información de columna de sub-grupo. de aquí que deban configurarse con esta información, obtenida a partir de su situación. Los nodos 2 de columna no descodifican activamente información de fila en esta realización ilustrada del invento, dado que el ahorro de energía no compensa el encabezamiento de complejidad en esta granularidad. Sin embargo, en otras realizaciones, los nodos de columna podrían descodificar esta información del mismo modo que lo hacen los activadores de columna mediante la investigación de protocolo de
bus.
A un elemento de conjunto ordenado se le asigna una dirección si la actividad de bus llega a él, y todos los aspectos de la dirección coinciden. Si se usa la asignación de dirección única, el elemento de conjunto ordenado de destino descodifica la comunicación si la asignación de dirección de fila y la asignación de dirección de columna de sub-grupo coinciden entre sí. Si se usa una asignación de dirección del tipo de emisión, con el fin de comunicar a más de un elemento de conjunto ordenado, entonces los nodos de fila tienen que discriminar basándose en algún otro parámetro de identificación, tal como el tipo de elemento de conjunto ordenado. La asignación de dirección de emisión se puede señalizar o bien mediante un hilo de control separado, o bien mediante el uso de asignaciones de dirección "reservadas", dependiendo de cuál es la más eficaz.
El control de elementos de conjunto ordenado, tal como la puesta en marcha, la parada o el escalonamiento único, se logra mediante la introducción de información de datos específicos en puntos del registro de control dentro de los elementos de conjunto ordenado. Para asignar dirección a estos conjuntamente, en una comunicación de emisión, estos puntos de control deben estar por tanto en el mismo plano en cada representación gráfica de memoria de elemento de conjunto ordenado. Es útil poder emitir una orden de ejecución de control de una sola etapa, dando instrucciones al elemento de conjunto ordenado de empezar durante una etapa y luego parar, porque el encabezamiento de paso de testigo de la asignación de direcciones en el protocolo de comunicaciones impide que las órdenes de ejecución de comenzar y parar estén tan próximas conjuntamente.
También puede ser ventajoso, con el fin de evitar problemas causados por grandes sesgos del reloj, por ejemplo violaciones de configuración de registro o de retención, instalar almacenamientos provisionales (para acelerar o retardar señales) en ciertos puntos de los nodos. Por ejemplo, en el caso de un nodo de columna como el mostrado en las Figuras 2 ó 3, se podrían insertar almacenamientos provisionales de retardo para impedir violaciones de retención en los buses 20 y 25, y en el bus vertical 8 antes y después del punto de derivación 26 y después de la puerta "O" 17. En el caso de un nodo de fila como el mostrado en la Figura 4, se podrían insertar almacenamientos provisionales de retardo para impedir violaciones de retención en el bus 59.
Por tanto, se ha provisto una disposición que logra un retraso en comunicación aproximadamente constante. Las comunicaciones hacia y desde los elementos de conjunto ordenado más alejados se canalizan adecuadamente para la distancia, mientras que las comunicaciones hacia y desde elementos de conjunto ordenado más cercanos se "sobre-canalizan" deliberadamente de tal manera que el retraso en comunicación a todos los elementos de punto final tenga el mismo número de ciclos de reloj. Esto permite obtener un elevado ancho de banda, y es escalable sin tener que rediseñar.
La comunicación en sí toma la forma de una corriente con pasos de testigos y el conjunto ordenado de procesadores se ve como una representación gráfica de memoria jerárquica, es decir, una representación gráfica de memoria de elementos de conjunto ordenado, cada uno de los cuales tiene su propia representación gráfica de memoria de ubicaciones de programa, datos y control. Los pasos de testigos se usan para señalizar direcciones de elemento de conjunto ordenado, sub-direcciones y datos de extracción/introducción de información. Hay direcciones reservadas especiales para asignar direcciones a todos los elementos (o subconjuntos) de conjunto ordenado en paralelo para funciones de control.
A continuación se describe un protocolo de comunicaciones con pasos de testigo, que se podría usar en conjunción con este conjunto ordenado de procesadores.
El bus de salida es un bus de 20 bits que comprende 4 señales de alta actividad y un campo de datos de 16 bits.
\vskip1.000000\baselineskip
1
\newpage
El camino de retorno es un bus de 17 bits que comprende una señal válida de alta actividad y un campo de datos de 16 bits:
2
La señal VÁLIDA se necesita cuando el espacio total de asignación de direcciones de los elementos de conjunto ordenado no está completamente poblado. De lo contrario, podría ser difícil diferenciar entre una dirección fallada y datos que sucede que son cero.
\global\parskip0.900000\baselineskip
Operación básica de introducción de información: la secuencia de órdenes de ejecución para enviar el bus de salida es la siguiente:
AEID, <asignación de dirección de elemento de conjunto ordenado>
ADDR, <ubicación de registro/memoria>
WRITE, <palabra de datos>
El usuario podría introducir información a múltiples ubicaciones, una tras otra, mediante la repetición de la secuencia anterior tantas veces como fuese necesario:
AEID, <asignación de dirección de elemento 1 de conjunto ordenado>
ADDR, <ubicación de registro/memoria en el elemento 1 de conjunto ordenado>
WRITE, <palabra de datos>
etc.
Si la AEID va a ser la misma, no hay necesidad de repetirla:
AEID, <asignación de dirección de elemento 1 de conjunto ordenado>
ADDR, <ubicación 1 de registro/memoria>
WRITE, <palabra de datos para ubicación 1 en elemento 1 de conjunto ordenado>
ADDR, <ubicación 2 de registro/memoria>
WRITE, <palabra de datos para ubicación 2 en elemento 1 de conjunto ordenado>
etc.
En cada caso, los datos se introducirán a la ubicación de elemento de conjunto ordenado siempre que exista el elemento de conjunto ordenado y la ubicación de registro o de memoria existan y se puedan introducir como información (algunas ubicaciones podrían ser de sólo extracción de información, algunas podrían ser solamente de introducción de información si el elemento de conjunto ordenado se ha detenido y no cuando se está desplazando).
Operación de introducción de información con incremento automático: Para ahorrar tiempo cuando se está introduciendo información a múltiples ubicaciones contiguas y sucesivas de registro o de memoria dentro de un único elemento de conjunto ordenado - como se podría hacer a menudo cuando se cargue un programa de elemento de conjunto ordenado, por ejemplo - usar órdenes de ejecución repetidas de WRITE (INTRODUCIR INFORMACIÓN). La interfaz en el nodo de fila incrementará automáticamente la asignación de dirección usada dentro del elemento de conjunto ordenado Por ejemplo:
AEID, <asignación de dirección d elemento de conjunto ordenado>
ADDR, <comenzar ubicación de registro o memoria - "A">
WRITE, <datos para ubicación A>
WRITE, <datos para ubicación A + 1>
WRITE, <datos para ubicación A + 2>
WRITE, <datos para ubicación A + 3>
etc.
Cuando hay espacios intermedios en la representación gráfica de memoria, o cuando se requiere desplazarse a otro elemento de conjunto ordenado, usar otra vez la señal ADDR o la señal AEID para configurar un nuevo punto de partida para el incremento automático, por ejemplo:
AEID, <asignación de dirección d elemento de conjunto ordenado>
ADDR, <iniciar ubicación "A" de registro o memoria>
WRITE, <datos para ubicación A>
WRITE, <datos para ubicación A + 1>
WRITE, <datos para ubicación A + 2>
ADDR, <iniciar nueva ubicación "b" de registro o memoria>
WRITE, <datos para ubicación B>
WRITE, <datos para ubicación B + 1>
AEID, <asignación de dirección de nuevo elemento de conjunto ordenado>
ADDR, <ubicación de registro o memoria>
WRITE, <palabra de datos>
etc.
Operación de introducción de información sin incremento:
Cuando se requiere suprimir los incrementos automáticos de la dirección de ubicación de registro o de memoria, mantener la señal ADDR, junto con la señal WRITE:
AEID, <asignación de dirección de elemento de conjunto ordenado>
ADDR, <ubicación "A" de registro>
ADDR, WRITE, <datos para ubicación A>
ADDR, WRITE, <nuevos datos para ubicación A>
Debe hacerse notar que podría existir un largo período de inactividad de bus entre las órdenes de ejecución 3 y 4 cuando el conjunto ordenado de procesadores continúa corriendo. De hecho, no hay necesidad de que ninguna de estas operaciones de bus sean de una ráfaga contigua. Pueden existir espacios intermedios de cualquier duración en cualquier punto. El protocolo funciona como una máquina de estado sin ningún tipo de tiempo muerto.
Operación de introducción de información de emisión: - Es posible introducir información a todos los elementos de conjunto ordenado a la vez, o a subconjuntos de elementos de conjunto ordenado por grupo. Esta asignación de direcciones de emisión se podría indicar mediante una señal extra de control, u obtenerse mediante el uso de miembros especiales para la dirección AEID.
En la implementación del ejemplo, usada para el conjunto ordenado de procesadores descrito en el documento GB-A- 2370380, a todo el conjunto ordenado se le podrían asignar direcciones sobre una base de elementos individuales bien dentro de 15 bits, con lo que el bit más alto de la dirección AEID de 16 bits se podría reservar para indicar que estaba desarrollándose una comunicación del tipo de emisión.
\global\parskip1.000000\baselineskip
Para seleccionar asignación de dirección "de emisión" en lugar de asignación de dirección por elemento individual de conjunto ordenado, configurar el bit más significativo (en adelante MSB) del campo de datos de AEID. Los bits más bajos pueden representar entonces a qué tipos de elemento de conjunto ordenado se desea asignar dirección. En el conjunto ordenado de procesadores del ejemplo, se dispone de 8 tipos de elemento de conjunto ordenado, y sus designaciones se han conexionado por segmentos alámbricos a la configuración de sus nodos de fila:
3
Así, por ejemplo, para asignar dirección a todos los elementos de conjunto ordenado del tipo 7:
AEID, <0x8040>
ADDR, <....>
etc.
Para asignar dirección a todos los elementos juntos de conjunto ordenado Tipo 1, Tipo 2 y Tipo 4:
AEID, <0x800b>
ADDR, <....>
etc.
Operación básica de solicitud de extracción de información: - La operación básica de extracción de información es muy similar a la operación básica de introducción de información, siendo la diferencia la última señal, y que se ignora el campo de datos:
AEID, <asignación de dirección de elemento de conjunto ordenado>
ADDR, <ubicación de registro o de memoria>
READ, <no importa>
La ubicación se extraerá como información de modo satisfactorio siempre que el elemento de conjunto ordenado exista y la ubicación de registro o de memoria existan y se puedan extraer (algunas ubicaciones solamente se pueden extraer si el elemento de conjunto ordenado está detenido y no cuando se está desplazando). La palabra de datos extraida del elemento de conjunto ordenado se volverá a enviar hasta el bus de camino de retorno, en este ejemplo a guardarse para su posterior recuperación en un dispositivo de "lo primero en entrar es lo primero en salir" (en adelante FIFO).
Operación de extracción de información con incremento automático: De nuevo, muy similar a la correspondiente operación de introducción de información:
AEID, <asignación de dirección de elemento de conjunto ordenado>
ADDR, <comienzo de ubicación "A" de registro o de memoria>
READ, <no importa> (los datos se capturarán de la ubicación A)
READ, <no importa>, (los datos se capturarán de la ubicación A + 1),
etc.
Operación de extracción de información sin incremento: Cuando se requiere suprimir el incremento automático de la asignación de dirección de ubicación de registro o de memoria, mantener la señal ADDR, junto con la señal READ:
AEID, <asignación de dirección de elemento de conjunto ordenado>
ADDR, <ubicación "A" de registro>
ADDR, READ, <no importa> (los datos se capturarán de la ubicación A)
ADDR, READ, <no importa> (los datos se capturarán de la ubicación A)
Esto podría ser útil si se desea interrogar un registro para información de diagnóstico - por ejemplo, un valor métrico de velocidad de variación de error de bit.
Operación de extracción de información de emisión: -El hardware en el ejemplo de conjunto ordenado de procesadores de la presente memoria no excluye realizar una extracción de información de emisión, aunque su utilidad es más bien limitada. Los datos de reextracción de información de múltiples elementos de conjunto ordenado se pasarán juntos por la puerta "O" a nivel de bit. Quizá sea útil para comprobar rápidamente si el mismo registro en múltiples elementos de conjunto ordenado no es cero antes de pasar a través de cada uno individualmente para averiguar cuáles son específicamente.
Operaciones compuestas:
Como se ha visto anteriormente, el estilo con pasos de testigo del bus permite realizar muchas permutaciones de órdenes de ejecución de duración arbitraria, y permite tomar con bastante frecuencia caminos abreviados en encabezamientos de órdenes de ejecución. Por ejemplo, podría ser útil generar una corriente para realizar parte de una prueba de memoria - extracción e introducción de información de cada ubicación sucesiva de una memoria:
AEID, <asignación de dirección de elemento de conjunto ordenado>
ADDR, <comienzo de ubicación "A" de memoria>
ADDR, READ, <no importa> (los datos se capturarán de la ubicación A, la asignación de dirección NO SE incrementará)
WRITE, <palabra de datos> (la palabra de datos se introducirá como información a la ubicación A, la asignación de dirección SE incrementará)
ADDR, READ, <no importa> (los datos se capturarán de la ubicación A + 1, la asignación de dirección NO SE incrementará)
WRITE, <otra palabra de datos> se introducirá como información otra palabra de datos a la ubicación A + 1, la asignación de dirección SE incrementará)
Por tanto, se ha descrito un conjunto ordenado de procesadores, y un protocolo de comunicaciones para uso en el mismo, que permite una operación sincronizada eficiente de los elementos del conjunto ordenado.

Claims (14)

1. Un conjunto ordenado de procesadores, que comprende:
una pluralidad de buses primarios (8), cada uno conectado a un activador (1) de bus primario, y teniendo cada uno una pluralidad respectiva de nodos (2) de bus primario en el mismo;
pluralidades respectivas de buses secundarios (7), conectadas a dichos nodos (2) de bus primario; y
una pluralidad de elementos (4) de procesador cada uno conectado a uno de los buses secundarios (7); caracterizado por
elementos de retardo, asociados con los nodos (2) de bus primario, para retardar las comunicaciones con los elementos (4) de procesador conectados a diferentes buses de los buses secundarios (7) por cantidades diferentes, con el fin de lograr un grado de sincronización entre la operación de dichos elementos (4) de procesador.
2. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 1, en el que cada uno de dichos buses primarios (8) y secundarios (7) es un bus bidireccional, para transferir datos desde el activador (1) de bus primario hacia los elementos (4) de procesador, y para transferir datos desde los elementos (4) de procesador hacia el activador (1) de bus primario.
3. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 1, en el que cada nodo (2) de bus primario comprende una derivación (26) para derivar una señal desde el activador (1) de bus primario en el bus primario respectivo (8) y una línea de retardo (18) para retardar las señales derivadas.
4. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 3, en el que al menos algunos de dichos nodos (2) de bus primario comprenden un elemento (23) de retardo para retardar las señales procedentes del activador (1) de bus primario en el respectivo bus primario (8).
5. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 1, en el que cada nodo (2) de bus primario comprende un dispositivo para combinar una señal procedente del respectivo bus secundario (7) en el bus primario respectivo (8), y una línea de retardo (19) para retardar las señales del bus secundario respectivo (7).
6. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 5, en el que el dispositivo para combinar comprende una puerta lógica "O" 17 a nivel de bit.
7. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 5, en el que al menos algunos de dichos nodos (2) de bus primario comprenden un elemento (24) de retardo para retardar las señales hacia el activador (1) de bus primario en el respectivo bus primario (8).
8. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 1, en el que cada elemento (4) de procesador está conectado al respectivo bus secundario (7) en un respectivo nodo (3) de bus secundario.
9. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 8, en el que cada nodo (3) de bus secundario comprende una derivación (50) para derivar una señal procedente del activador (1) de bus primario en el respectivo bus secundario (7), y una interfaz para determinar si las señales derivadas están destinadas para el elemento (4) de procesador conectado en la misma.
10. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 8, en el que cada nodo (3) de bus secundario comprende un dispositivo para combinar una señal procedente del respectivo elemento (4) de procesador en el respectivo bus secundario (3).
11. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 10, en el que el dispositivo para combinar comprende una puerta lógica "O" (58) a nivel de bit.
12. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 1, en el que el activador (1) de bus primario tiene un bus de entrada (31), y un detector para determinar cuál de dicha pluralidad de buses primarios (8) debería recibir datos en dicho bus de entrada (31).
13. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 12, en el que el bus de entrada (31) del activador (1) de bus primario tiene una conexión a cada uno de dicha pluralidad de buses primarios (8) a través de una primera entrada de una respectiva puerta "Y" (43), y dicho detector (42) está destinado a enviar una señal de habilitación a una segunda entrada de la respectiva puerta "Y" (43) si se determina que uno de dicha pluralidad de buses primarios (8) debería recibir datos en dicho bus de entrada (31).
14. Un conjunto ordenado de procesadores como el reivindicado en la reivindicación 1, en el que los elementos (23, 24) de retardo asociados con los nodos (2) de bus primario que se encuentran físicamente más cercanos al activador (1) de bus primario, retardan las comunicaciones con los elementos (4) de procesador conectados a los buses secundarios (7) conectados a los nodos más cercanos (2) de bus primario, mediante tiempos de retardo más largos que los elementos (23, 24) de retardo, asociados con nodos (2) de bus primario que se encuentran físicamente más lejanos del activador (1) de bus primario, retardan las comunicaciones con los elementos (4) de procesador conectados a los buses secundarios (7) conectados a los nodos más lejanos (2) de bus primario.
ES04705111T 2003-01-27 2004-01-26 Conjunto ordenado de procesadores. Expired - Lifetime ES2285415T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0301863A GB2397668B (en) 2003-01-27 2003-01-27 Processor array
GB0301863 2003-01-27

Publications (1)

Publication Number Publication Date
ES2285415T3 true ES2285415T3 (es) 2007-11-16

Family

ID=9951897

Family Applications (1)

Application Number Title Priority Date Filing Date
ES04705111T Expired - Lifetime ES2285415T3 (es) 2003-01-27 2004-01-26 Conjunto ordenado de procesadores.

Country Status (9)

Country Link
US (1) US7574582B2 (es)
EP (1) EP1588276B1 (es)
JP (1) JP4338730B2 (es)
CN (1) CN100422977C (es)
AT (1) ATE359558T1 (es)
DE (1) DE602004005820T2 (es)
ES (1) ES2285415T3 (es)
GB (1) GB2397668B (es)
WO (1) WO2004068362A1 (es)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004090716A1 (en) * 2003-04-07 2004-10-21 Koninklijke Philips Electronics N.V. Data processing system with clustered ilp processor
JP4388557B2 (ja) * 2007-01-11 2009-12-24 株式会社日立製作所 画像処理システム
US7902862B2 (en) * 2007-09-14 2011-03-08 Agate Logic, Inc. High-bandwidth interconnect network for an integrated circuit
CN101320364A (zh) * 2008-06-27 2008-12-10 北京大学深圳研究生院 一种阵列处理器结构
US8122226B2 (en) * 2009-04-16 2012-02-21 Vns Portfolio Llc Method and apparatus for dynamic partial reconfiguration on an array of processors
KR101565172B1 (ko) * 2010-01-15 2015-11-02 삼성전자주식회사 대규모 병렬 프로세서 어레이 시스템의 데이터 처리 장치 및 방법
CN102446157B (zh) * 2010-10-12 2013-09-18 无锡江南计算技术研究所 基于阵列结构的处理器核心的通信方法及通信装置
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
GB2580165B (en) 2018-12-21 2021-02-24 Graphcore Ltd Data exchange in a computer with predetermined delay

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US4574345A (en) * 1981-04-01 1986-03-04 Advanced Parallel Systems, Inc. Multiprocessor computer system utilizing a tapped delay line instruction bus
US4622632A (en) * 1982-08-18 1986-11-11 Board Of Regents, University Of Washington Data processing system having a pyramidal array of processors
JPS59132070A (ja) * 1983-01-18 1984-07-30 Mitsubishi Electric Corp アレイ演算用デ−タ処理装置
US5152000A (en) * 1983-05-31 1992-09-29 Thinking Machines Corporation Array communications arrangement for parallel processor
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4736291A (en) * 1985-11-22 1988-04-05 Texas Instruments Incorporated General-purpose array processor
US5036453A (en) * 1985-12-12 1991-07-30 Texas Instruments Incorporated Master/slave sequencing processor
IT1184015B (it) * 1985-12-13 1987-10-22 Elsag Sistema multiprocessore a piu livelli gerarchici
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
US4943912A (en) * 1987-10-13 1990-07-24 Hitachi, Ltd. Parallel processor system having control processor and array control apparatus for selectively activating different processors
US4890279A (en) * 1988-09-26 1989-12-26 Pacific Bell Multiplexer and computer network using the same
ATE121208T1 (de) * 1990-01-30 1995-04-15 Johnson Service Co Vernetztes betriebsmittelverwaltungssystem.
US6928500B1 (en) * 1990-06-29 2005-08-09 Hewlett-Packard Development Company, L.P. High speed bus system that incorporates uni-directional point-to-point buses
US5265207A (en) * 1990-10-03 1993-11-23 Thinking Machines Corporation Parallel computer system including arrangement for transferring messages from a source processor to selected ones of a plurality of destination processors and combining responses
US5713037A (en) * 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
US5790879A (en) * 1994-06-15 1998-08-04 Wu; Chen-Mie Pipelined-systolic single-instruction stream multiple-data stream (SIMD) array processing with broadcasting control, and method of operating same
GB2293468B (en) * 1994-09-21 1999-09-29 Sony Uk Ltd Data processing systems
JPH08297652A (ja) * 1995-04-25 1996-11-12 Nippon Steel Corp アレイプロセッサ
US5570045A (en) * 1995-06-07 1996-10-29 Lsi Logic Corporation Hierarchical clock distribution system and method
KR100197407B1 (ko) * 1995-12-28 1999-06-15 유기범 전전자 교환기에 있어서 프로세서들간 통신버스구조
US5805839A (en) * 1996-07-02 1998-09-08 Advanced Micro Devices, Inc. Efficient technique for implementing broadcasts on a system of hierarchical buses
US5719445A (en) * 1996-12-23 1998-02-17 Sgs-Thomson Microelectronics, Inc. Input delay control
JP2976932B2 (ja) * 1997-06-09 1999-11-10 日本電気株式会社 画像照合回路および画像照合集積回路
US6122677A (en) * 1998-03-20 2000-09-19 Micron Technology, Inc. Method of shortening boot uptime in a computer system
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
GB2370380B (en) * 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture

Also Published As

Publication number Publication date
EP1588276B1 (en) 2007-04-11
JP2006518069A (ja) 2006-08-03
JP4338730B2 (ja) 2009-10-07
DE602004005820D1 (de) 2007-05-24
EP1588276A1 (en) 2005-10-26
ATE359558T1 (de) 2007-05-15
US20060155956A1 (en) 2006-07-13
WO2004068362A1 (en) 2004-08-12
GB2397668B (en) 2005-12-07
GB2397668A (en) 2004-07-28
US7574582B2 (en) 2009-08-11
DE602004005820T2 (de) 2008-01-10
CN1761954A (zh) 2006-04-19
CN100422977C (zh) 2008-10-01
GB0301863D0 (en) 2003-02-26

Similar Documents

Publication Publication Date Title
KR101375763B1 (ko) 상호접속 시스템
US9582449B2 (en) Interconnection system
US7016213B2 (en) Method for initializing a system including a host and plurality of memory modules connected via a serial memory interconnect
ES2285415T3 (es) Conjunto ordenado de procesadores.
KR20110089321A (ko) 직렬 포트 메모리 통신 레이턴시 및 신뢰성을 향상시키기 위한 방법 및 시스템
US11730325B2 (en) Dual mode interconnect
US10990552B1 (en) Streaming interconnect architecture for data processing engine array
US6385258B1 (en) Viterbi decoder for use in a mobile communication system
US7190631B2 (en) Multi-port memory
US10222992B2 (en) Synchronization method and apparatus for an interconnection network using parallel-headerless TDMA routing