ES2268455T3 - Sincronizador de elementos de procesamiento semisincronos. - Google Patents

Sincronizador de elementos de procesamiento semisincronos. Download PDF

Info

Publication number
ES2268455T3
ES2268455T3 ES03780386T ES03780386T ES2268455T3 ES 2268455 T3 ES2268455 T3 ES 2268455T3 ES 03780386 T ES03780386 T ES 03780386T ES 03780386 T ES03780386 T ES 03780386T ES 2268455 T3 ES2268455 T3 ES 2268455T3
Authority
ES
Spain
Prior art keywords
semi
synchronous
connection
processor elements
elements
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
ES03780386T
Other languages
English (en)
Inventor
John Matthew Nolan
Roger Paul Dealtry
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 ES2268455T3 publication Critical patent/ES2268455T3/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)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Led Device Packages (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

Un conjunto de procesadores, que comprende un conjunto de elementos de procesador (10, 12, 14, 16) semisíncronos, caracterizado porque cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos comprende un contador (30) de ciclos de módulo-n, y donde al menos uno de dichos elementos de procesador (10) semisíncronos es capaz de transmitir señales de órdenes de control a cada uno de los otros elementos de procesador (12, 14, 16) semisíncronos, siendo cada uno de los elementos (12, 14, 16) de procesador semisíncronos tal que, al recibir una señal de orden de control, actúa ante esa señal sólo cuando su contador (30) de ciclos de módulo-n alcanza unvalor predeterminado, y dicho uno de dichos elementos de procesador (10) semisíncronos es tal que transmite señales de órdenes de control sólo cuando su contador (30) de ciclos de módulo-n adquiere un valor que está dentro de un intervalo predeterminado, comprendiendo además el conjunto de procesadores una primera conexión (20) entrecada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos, donde dicho uno de dichos elementos de procesador (10) semisíncronos es capaz de transmitir señales de órdenes de control de sincronización en dicha primera conexión (20) y donde cada elemento de procesador (10, 12, 14, 16) semisíncrono actúa ante una señal de orden de control de sincronización recibida en dicha primera conexión (20) reiniciando su contador 30 de ciclos de módulo-n

Description

Sincronización de elementos de procesamiento semisíncronos.
Esta invención se refiere a un método para lograr la sincronización de un conjunto de dispositivos, y a un conjunto que puede ser sincronizado de este modo.
Se conocen circuitos electrónicos, por ejemplo un conjunto de elementos de proceso, los cuales funcionan en paralelo. A fin de asegurar que estos elementos funcionan correctamente, es necesario lograr un grado de sincronización entre ellos. Por ejemplo, cuando los elementos de proceso deben entrar en comunicación entre sí, o deben enviar datos a otro dispositivo, es necesario asegurarse de que se reciben los datos en los momentos esperados.
Una forma de intentar y lograr esto es transmitir las señales de control directamente a cada dispositivo del conjunto, como en el documento WO 02/50700. Así, cada dispositivo tiene una línea de control individual, la cual está cableada en paralelo con las líneas de control usadas por los otros dispositivos. Las líneas de control pueden ser hilos o pistas de circuito impreso, por ejemplo. A fin de asegurarse de que las señales de control lleguen en forma coincidente en todos los dispositivos, estas líneas de control deben ser equilibradas en retraso con una tolerancia relativamente estrecha. Es decir, las líneas de control deben ser diseñadas de forma que sus longitudes sean efectivamente iguales, o se deben introducir memorias intermedias en las líneas de control para cancelar cualquier diferencia que hubiera en las longitudes.
En particular, se conocen conjuntos de dispositivos semisíncronos (M. R. Greenstreet "Realización de un chip STARI", ISBN 0-8186-7165-3), los cuales funcionan de manera nocional a la misma frecuencia de reloj, pero cuyas fases relativas no se pueden garantizar y no son constantes. Se puede formar un conjunto de este tipo en los casos en los que los dispositivos reciben cada uno una entrada de reloj común, pero multiplican la frecuencia de reloj internamente por medio de un bucle enclavado en fase para generar el reloj real que se usa dentro del dispositivo. El efecto de esto será que las fases relativas de los relojes internos en dos dispositivos cualesquiera serán desconocidas, y variarán debido a la inestabilidad.
En el caso de un conjunto de dispositivos semisíncronos, incluso unas líneas de control bien equilibradas a los dispositivos del conjunto pueden no ser suficientes para asegurar un funcionamiento correcto. Como resultado del efecto descrito anteriormente, si dos dispositivos reciben señales de control que les dan la instrucción de iniciar un proceso y de parar un proceso, entonces los dos dispositivos pueden operar ese proceso durante diferentes números de ciclos de reloj.
Además, en el caso de los dispositivos semisíncronos, existe un problema en cuanto a que las comunicaciones de datos de un dispositivo a otro se recibirán con incertidumbre sobre las temporizaciones relativas de los procesos en marcha en los dos dispositivos.
Según un primer aspecto de la presente invención, se proporciona:
un conjunto de procesadores, que comprende un conjunto de elementos de procesador semisíncronos, en el que cada uno de dichos elementos de procesador semisíncronos comprende un contador de ciclos de módulo-n, y donde al menos uno de dichos elementos de procesador semisíncronos es capaz de transmitir señales de órdenes de control a cada uno de los otros elementos de procesador semisíncronos, siendo cada uno de los elementos de procesador semisíncronos tal que, al recibir una señal de orden de control, actúa ante esa señal sólo cuando su contador de ciclos alcanza un valor predeterminado y dicho uno de dichos elementos de procesador semisíncronos es tal que transmite señales de órdenes de control sólo cuando su contador de ciclos adquiere un valor que está dentro de un intervalo predeterminado. El conjunto de procesadores comprende además una conexión entre cada uno de dichos elementos de procesador semisíncronos, donde dicho uno de dichos elementos de procesador semisíncronos es capaz de transmitir señales de órdenes de control de sincronización sobre dicha conexión y donde cada uno de dichos elementos de procesador semisíncronos actúa ante una señal de orden de control de sincronización recibida en dicha conexión reiniciando su contador de ciclos.
Esto tiene la ventaja de que, estableciendo adecuadamente el intervalo predeterminado, cuando uno de dichos elementos de procesador transmite una señal de orden de control a cada uno de los otros elementos de procesador, se puede garantizar que se actúa ante esas señales de orden de control en los momentos correspondientes dentro de los otros elementos de procesador.
A continuación se hace referencia, a título de ejemplo, a los dibujos anexos, en los cuales:
La Figura 1 es un diagrama de bloques esquemático de una parte de un conjunto según la presente invención.
La Figura 2 ilustra la sincronización dentro de un dispositivo del conjunto de la Figura 1.
La Figura 3 ilustra las temporizaciones relativas de los dispositivos de la parte del conjunto mostrada en la Figura 1.
La Figura 4 es un diagrama de bloques esquemático de una parte de uno de los dispositivos mostrados en la Figura 1.
La Figura 5 es un diagrama de bloques esquemático de partes de dos dispositivos de un conjunto según la presente invención.
La Figura 6 es un diagrama de temporización que ilustra el funcionamiento de los dispositivos mostrados en la Figura 5.
La invención se refiere a unos dispositivos que incluyen un conjunto de elementos de procesamiento. Por ejemplo, se puede aplicar la invención al dispositivo descrito en el documento GB-A-2370380, el cual incluye un conjunto de elementos de procesamiento, los cuales actúan en paralelo ante los datos recibidos. En la práctica, el conjunto puede incluir varios cientos de elementos de procesamiento de este tipo, o más.
La Figura 1 muestra una parte muy pequeña del conjunto, que tiene justamente cuatro elementos 10, 12, 14, 16 para una fácil ilustración. Cada uno de estos elementos pueden ser, por ejemplo, procesadores, los cuales reciben los datos de uno o más de los otros elementos, y transmiten los datos de salida a uno o más de los otros elementos del conjunto. A fin de asegurarse de que el conjunto funciona como se pretende, es necesario que exista un grado de sincronización entre los elementos. Los elementos del conjunto son de hecho dispositivos semisíncronos, los cuales funcionan de manera nocional a la misma frecuencia de reloj, pero cuyas fases relativas no se pueden garantizar y no son constantes.
Uno de los elementos 10, 12, 14, 16 está diseñado para el elemento de sincronización maestro, mientras que los otros actúan como elementos de sincronización esclavos. El elemento maestro se selecciona por medio de una señal en su entrada de Maestro/No Esclavo. En el ejemplo ilustrado, se ha designado al elemento 10 como el elemento maestro, mientras que los elementos 12, 14, 16 han sido designados como elementos esclavos. Preferiblemente, todos los elementos han sido diseñados de tal manera que cualquiera de ellos puede ser designado como el elemento maestro, según se desee. Una vez se ha determinado que elemento va a ser el elemento maestro, se derivan de esa decisión otras características del diseño, como se describe a continuación.
Aunque, en este caso, se muestra el elemento maestro como uno de los elementos de procesamiento del conjunto, que tiene la misma funcionalidad que los otros elementos del conjunto, es posible proporcionar un elemento maestro que no tenga toda la funcionalidad de los otros elementos del conjunto.
Existe una interfaz 18 de cuatro hilos entre los elementos 10, 12, 14, 16, y estos hilos proporcionan las comunicaciones de sincronización disponibles entre los elementos. Las comunicaciones de datos entre los elementos del conjunto tienen lugar sobre un conjunto de líneas de datos separadas, como se describe con detalle en el documento GB-A-2370380, y no se describirá aquí con mayor detalle este aspecto del funcionamiento del conjunto. Los cuatro hilos son una línea de sincronización 20, una línea de marcha 22, una línea de etapas 24 y una línea de parada 26. Cada uno de los elementos 10, 12, 14, 16 está conectado a estos hilos en paralelo. En un gran conjunto, pueden existir memorias intermedias en los hilos. La línea de sincronización 20 tiene una entrada a los elementos esclavos 12, 14, 16, y tanto una salida del elemento maestro 10 como una entrada al mismo. La línea de marcha 22 y la línea de etapas 24 tienen ambas salidas del elemento maestro 10 y entradas a los elementos esclavos 12, 14, 16. La línea de parada 26 tiene un drenaje abierto, y es detectada también como una entrada en el elemento maestro 10.
Cada uno de los elementos 10, 12, 14, 16 mantiene un contador 30 de ciclos de módulo-n respectivo, como se describe con mayor detalle a continuación. Se debería escoger el número "n" de forma que fuera suficientemente grande para afrontar los tiempos de comunicación y la dispersión de tiempos debida al tamaño y a la naturaleza del conjunto, pero que se mantuviera lo más pequeño posible para minimizar la latencia y la resolución del control. El valor "n" es escalable, y permite que el tamaño del conjunto sea escalable.
Estos contadores de ciclos de módulo-n controlan tanto cuando se puede transmitir una orden de control del elemento maestro 10, como cuando se debería actuar ante la misma en el elemento maestro 10 y en los dispositivos esclavos 12, 14, 16. En términos generales, la señal de orden de control se envía en un momento anticipado, para tener en cuenta las longitudes del camino general a cada dispositivo y las longitudes de camino diferenciales entre los dispositivos. El contador de módulo-n en cada dispositivo circula dando vueltas (de 0 a n-1, 0 a n-1, 0 a n-1,...) y sólo se actúa ante las señales de órdenes de control recibidas cuando el contador de ciclos pasa por cero la vez siguiente.
El resultado es que existe una ventana segura, dentro de la cual el dispositivo maestro puede transmitir las señales de órdenes de control. Como se muestra en la Figura 2, la ventana segura se inicia en algún instante T0 después de cero y acaba en algún instante T1 antes de cero. Para las señales de control de órdenes transmitidas dentro de la ventana segura W, no existirá ambigüedad en ninguno de los dispositivos receptores. Esto es, no existirá incertidumbre en cuanto a si el dispositivo receptor detectará la señal de orden de control antes o después del punto cero pretendido.
Todos los parámetros que definen la ventana segura son de software y, aunque el conjunto puede ser dotado de valores por defecto en la fabricación, se pueden reconfigurar los valores de los parámetros apartándose de los valores por defecto si fuera necesario para una implantación física concreta.
Es necesario que el contador de ciclos de cada uno de los dispositivos del conjunto esté sincronizado dentro de menos de +/-n ciclos de reloj, e idealmente dentro de +/-1 ciclo de reloj, aunque se pueden soportar márgenes más amplios, si eso es todo lo que requiere la aplicación. Esta sincronización se logra sobre la línea de sincronización 20 de la interfaz 18 de cuatro hilos, usando el método convencional de un árbol en paralelo que está equilibrado en retrasos con una buena tolerancia para propagar la señal "sinc" necesaria. El equilibrado de retrasos de este árbol en paralelo se determina en base a cual de los elementos del conjunto se designa como el elemento maestro.
Sólo la señal de sincronización requiere este grado de sincronización. Las otras señales de órdenes de control pueden ser limitadas de forma muy suelta y por tanto sus hilos respectivos de la interfaz 18 de cuatro hilos se realizan en hardware de manera más fácil y barata.
El elemento maestro 10 transmite un impulso corto en su salida a la línea de sincronización 20 en todos los elementos esclavos 12, 14, 16, y también de vuelta a su propia entrada desde la línea de sincronización 20. La alimentación de la señal "sinc" de vuelta al elemento maestro 10 a través del mismo árbol que la señal que conecta a los elementos esclavos significa que todos los dispositivos reciben juntos la señal "sinc". Esto mantiene el sistema escalable.
Al recibir la señal "sinc", cada dispositivo del conjunto reinicia su contador de ciclos desde cero. Esta operación de sincronización debería ser la primera operación que realiza el sistema después de que se le ha aplicado la alimentación de potencia, y se han estabilizado los efectos transitorios. Se debería realizar antes de cualquier otra operación de control. La operación de sincronización sólo se realiza una vez, de manera que no se introduzcan errores porque varíen las fases relativas de los relojes de los dispositivos de una vez a otra.
Una vez los dispositivos del conjunto tienen sus contadores de ciclos sincronizados, se pueden emitir señales de órdenes de inicio y de parada del elemento maestro 10 para controlar los procesos en marcha en los dispositivos del conjunto de una manera por etapas cerradas.
La Figura 3 muestra el funcionamiento del conjunto a este respecto. Así, dentro de cada uno de los dispositivos 10, 12, 14, 16, la figura 3 muestra la historia en el tiempo de un proceso concreto en el dispositivo. Así, dentro de cada dispositivo existe un ciclo de ceros igualmente espaciados, aunque éstos no están sincronizados entre los dispositivos. En cada ciclo, existe una ventana segura, y el dispositivo maestro 10 sólo transmite señales de órdenes de control dentro de ese periodo de tiempo. Así, cuando se determina en el dispositivo maestro que se debería iniciar un proceso en cada uno de los dispositivos esclavos, en la ventana segura disponible siguiente, el dispositivo maestro 10 emite una orden de inicio tomando la señal alta de marcha en la línea 22 de marcha.
Cada uno de los dispositivos esclavos 12, 14, 16 ve este cambio de nivel en algún punto posterior y, como se muestra en la Figura 3, comienzan a poner en marcha sus procesos conforme sus contadores de ciclos pasan por cero la siguiente vez.
De manera similar, cuando se determina en el dispositivo maestro que se debería parar un proceso en cada uno de los dispositivos esclavos, el dispositivo maestro 10 toma la señal baja de marcha en la línea 22 de marcha, y los dispositivos esclavos 12, 14, 16 responden parando sus procesos conforme sus contadores de ciclos pasan por cero la vez siguiente.
Se puede ver en la Figura 3 que todos los dispositivos funcionan exactamente la misma cantidad de tiempo, en este caso durante n ciclos, o una rotación completa del contador de módulo-n. Esto se logra transmitiendo las señales de orden de control dentro de la ventana segura del dispositivo maestro 10, habiéndose asegurado de que esta ventana segura está definida de tal manera que las señales de órdenes de control transmitidas se ejecutan por los dispositivos esclavos en los momentos correspondientes de sus ciclos respectivos. De manera óptima, se deberían sincronizar todos los contadores de módulo-n de los dispositivos para que estuvieran dentro de +/- 1 ciclo de los contadores de módulo-n de los otros dispositivos, pero se puede adaptar a márgenes de sincronización más amplios ajustando la duración de la ventana segura, a fin de asegurarse de la imposibilidad de ambigüedad en la temporización de las señales de control.
Esto es, el tiempo entre el fin de la ventana segura en el dispositivo maestro 10 y el punto de cero en cualquier otro dispositivo debe ser positivo y mayor que el tiempo de propagación de las señales de órdenes de control, aun permitiendo una cierta incertidumbre. La sincronización más estrecha de los contadores de módulo-n de los dispositivos permite la duración máxima posible de la ventana segura.
Por tanto, como se describió, el sistema permite a cada dispositivo ser controlado para que funcione durante el mismo número de ciclos de proceso, pero es evidente que esto sólo permite una resolución de "n" en el número de ciclos en que el sistema puede estar en marcha. Por ejemplo, en el caso de un sistema en el que cada dispositivo tiene un contador de ciclos de módulo-32, el sistema sólo se puede detener después de 32, 54, 96, 128, etc. ciclos. (Esto supone que los ciclos de proceso son de la misma duración que los ciclos de los contadores de módulo-n, aunque debería ser también posible que la cadencia de los ciclos de proceso fuera algún múltiplo por número entero de la cadencia de los ciclos de los contadores de módulo-n).
Para permitir funcionar a los dispositivos durante un número arbitrario de ciclos, el resto de la cuenta de ciclos requerida después de iniciar y parar como se describe anteriormente durante (k x n) ciclos de proceso (donde k es un número entero escogido para hacer que (k x n) sea menor que la cuenta de ciclos requerida, pero tan próximo a ella como sea posible) se puede realizar mediante etapas únicas. Para lograr esto, el dispositivo maestro 10 emite un impulso de etapa en la línea de etapas 24, en la siguiente ventana segura disponible y todos los dispositivos avanzan en un ciclo de marcha de proceso conforme sus contadores de ciclos pasan por cero la vez siguiente. Se puede repetir esto múltiples veces hasta que se haya logrado el número requerido de ciclos de marcha. Todos los dispositivos habrán estado en marcha exactamente el mismo número de ciclos de proceso. En el caso del sistema descrito anteriormente, con los contadores de módulo-32, si se pretende que los dispositivos marchen durante 74 ciclos, se puede hacer esto mediante dos ciclos de marcha completos, cada uno de 32 ciclos de proceso, y diez etapas únicas, puesto que 32 + 32 + 10 = 74.
Así, como se describe, esta disposición permite detener un proceso mientras está en marcha. Por ejemplo, en el caso del proceso de 74 ciclos anteriormente mencionado, sería posible detener este proceso después de 32 ciclos, o después de 64 ciclos, o después de 65 ciclos, etc. Puede pasar un tiempo antes de que se produzca la parada, pero todos los dispositivos habrán marchado exactamente el mismo número de ciclos. Existe una máquina de estado dentro del dispositivo maestro que calcula que órdenes emitir y en que momento emitirlas en base a las exigencias del usuario. A fin de maximizar la eficiencia de esta disposición, se podría diseñar la máquina de estado de forma que dé como salida una orden de parada y una orden de etapa al mismo tiempo.
En algunas situaciones, puede ser deseable que cualquier dispositivo, incluyendo los dispositivos esclavos, sea capaz de invocar una parada. Por ejemplo, esto puede deberse a que se detecte una condición de error o de punto de ruptura, a algún tipo de interrupción, o a cualquier otra razón. A fin de mantener la paridad de ciclos de marcha entre todos los dispositivos, el dispositivo que solicite la parada no puede hacerlo directamente. La línea de parada 26 es una línea de drenaje abierta de los dispositivos 12, 14, 16, que normalmente es mantenida en posición alta pero que se puede bajar por cualquiera de los dispositivos 10, 12, 16 de la línea, y esto puede ser entonces detectado por el dispositivo maestro 10. Esto es escalable simplemente cableando hasta un punto, y para conjuntos muy grandes se pueden usar memorias intermedias o pórticos lógicos. Cuando el dispositivo maestro 10 detecta una señal en la línea de parada 26, genera entonces una parada, como se describió anteriormente, en la siguiente ventana segura. Por tanto, esto permite detener un proceso mientras está en marcha. Existe potencialmente un plazo de hasta (2.n) ciclos de marcha de proceso, después de que la línea de parada 26 haya sido bajada, antes de que se produzca la parada en los dispositivos, pero se asegura que todos los dispositivos habrán marchado exactamente el mismo número de ciclos de marcha de
proceso.
La temporización de las señales de control que llegan a cada uno de los dispositivos respecto al reloj de muestreo de ese dispositivo es desconocida e incierta. Si la señal tiene una transición demasiado próxima a la transición del reloj de muestreo, entonces la señal muestreada resultante puede ser metaestable. Esta metaestabilidad se puede propagar y causar que se introduzcan errores.
Además, si se exige al sistema que sea particularmente estricto, o es difícil el equilibrio de tiempos externo de la señal sinc, debido a restricciones físicas, entonces tiene sentido tener provisiones dentro de los dispositivos para tener esto en cuenta.
La Figura 4 muestra una parte de uno de los dispositivos 10, 12, 14, 16, todos los cuales son similares a este respecto, que trata los aspectos de inestabilidad y equilibrado de retrasos. Se hace pasar una señal de control de orden de entrada a un multiplexor 51 y a un registro 50 de reloj invertido. La salida del registro 50 de reloj invertido forma la segunda entrada al multiplexor 51. La salida del multiplexor 51 se hace pasar a una cadena de tres registros 52 anti-metaestabilidad y a continuación a una cadena de registros que forman una línea de retraso 53 corta, con derivaciones. Se puede tomar entonces la salida de cualquiera de los registros 53, a través de un multiplexor 54 de salida.
Así, los registros 52 anti-metaestabilidad forman parte de una línea de retraso con derivaciones, la cual tiene un retraso mínimo establecido en 3 periodos de reloj. Esto reduce la probabilidad de error (y por tanto el tiempo medio entre fallos) a un nivel aceptable.
La línea de retraso con derivaciones permite que el tiempo de llegada efectivo de las señales de control sea alterado para cada dispositivo individualmente, a fin de ecualizar los diferentes retrasos de llegada del camino externo.
El registro 50 de reloj invertido actúa efectivamente como un registro adicional de ½ ciclo a la entrada de la línea de retraso. Esto es lo mismo que los otros registros de la línea de retraso, excepto que se refiere a un reloj invertido. Esto da una línea de retraso con derivaciones con una precisión de ½ ciclo en cada dispositivo que puede ser configurada en software para sintonizar finamente el sistema para requisitos particularmente estrictos, o simplemente se puede dejar en la configuración por defecto para el caso general.
Se puede establecer los retrasos en los dispositivos dentro del conjunto cuando se diseña el conjunto, o después de medir los retrasos que surgen en conjuntos prototipo.
Como se ha descrito hasta aquí, la invención proporciona un modo de lograr la sincronización entre dos o más dispositivos, dentro de límites conocidos, y de transmitir señales de orden de control entre los dispositivos de tal modo que actúen durante el número deseado de ciclos de marcha de proceso. Un aspecto adicional de la invención proporciona la comunicación de datos entre dos o más dispositivos, a fin de asegurar que los dispositivos semisíncronos operen sus procesos en los datos en que se pretende.
La Figura 5 es un diagrama de bloques esquemático de partes de dos dispositivos 90, 95, los cuales pueden ser, por ejemplo, cualesquiera dos de los dispositivos semisíncronos anteriormente descritos. El primer dispositivo 90 tiene un registro 101 de envíos, y los datos se temporizan en el registro 101 de envíos a una primera frecuencia definida por el reloj del primer dispositivo 90, reloj_1. El primer dispositivo 90 incluye también un bloque 102 de codificación de reloj N, el cual contiene una máquina de estado. La máquina de estado es temporizada también por el reloj del primer dispositivo 90, reloj_1, y produce uno de N estados cíclicamente durante ciclos consecutivos del reloj_1. La secuencia de N estados preferiblemente forma un código de Gray. La máquina de estado es también preestablecida en un valor conocido en un tiempo T1 por una señal sync_1 de sincronización generada dentro del primer dispositivo 90.
Se comunican los datos al segundo dispositivo 95 sobre la conexión 107, y se comunica la información de estado del bloque 102 de codificación de reloj N al segundo dispositivo 95 sobre la conexión 108.
Dentro del segundo dispositivo 95, existe un bloque 103 de descodificación de reloj N, el cual recibe la información de estado y genera secuencias de N señales 109, las cuales se usan para cargar los datos recibidos cíclicamente en los registros R1, R2, R3, ..., RN bajo el control de la información de estado recibida. Así, cada palabra de datos recibida está disponible en uno de los registros R1 a RN durante N ciclos de reloj.
Este proceso, en el segundo dispositivo 95, funciona por tanto bajo el control de la señal de reloj del primer dispositivo 90, reloj_1, y está efectivamente en un dominio del primer reloj. Por el contrario, el proceso para recuperar los datos de los registros funciona bajo el control de la señal de reloj del segundo dispositivo 95, reloj_2, y está efectivamente en un dominio del segundo reloj.
El segundo dispositivo 95 incluye un bloque 104 de selección de entrada del multiplexor, el cual produce señales de salida 110 que describen uno de los N estados cíclicamente durante los ciclos consecutivos del reloj_2. También se preestablece en un valor conocido como un tiempo T2 por una señal de sincronización sync_2 generada dentro del segundo dispositivo 95.
La señal 110 es enviada a un bloque 105 de multiplexor N:1, el cual selecciona las palabras de datos almacenadas en los registros R1 a RN, en el mismo orden secuencial en el cual se actualizan estos registros. Las palabras de datos seleccionadas son las suministradas en una salida 111 del multiplexor a un registro 106, el cual está temporizado con el reloj del segundo dispositivo 95, reloj_2.
El funcionamiento de estos bloques es tal que se garantiza que los datos de la señal 111 son estables en la entrada al registro 106, cuando se temporizan con el reloj del segundo dispositivo, reloj_2, siempre que la discrepancia de tiempos entre los dos dispositivos 90, 95 sea menor que N ciclos de reloj. Como se mencionó anteriormente, se puede lograr este grado de sincronización por medio del esquema descrito anteriormente haciendo referencia a las Figuras 1-4.
El contador 30 de módulo-n del primer dispositivo 90 puede ser temporizado de forma ventajosa por la señal de reloj del primer dispositivo, reloj_1, mientras que el contador 30 de módulo-n del segundo dispositivo 95 puede ser temporizado de forma ventajosa por la señal de reloj del segundo dispositivo, reloj_2. Sin embargo, como se mencionó anteriormente, también sería posible que reloj_1 y/o reloj_2 fueran algún múltiplo por número entero de la frecuencia de ciclo de sus respectivos contadores de módulo-n.
La Figura 6 es un diagrama de temporización que ilustra el caso en que N=4 de la Figura 5. Así, el reloj del primer dispositivo 90, reloj_1, produce una serie de impulsos de reloj a una primera frecuencia,, y una serie de palabras de datos A, B, C, D, E... es temporizada en el registro 101 de envíos del primer dispositivo 90 a la misma frecuencia definida por el reloj del primer dispositivo 90, reloj_1. Al mismo tiempo, el bloque 102 de codificación del reloj N, el cual está también temporizado por el reloj del primer dispositivo 90, reloj_1, produce cuatro estados S1, S2, S3, S4, S1.... cíclicamente durante los ciclos consecutivos de reloj_1.
Se comunican las palabras de datos A, B, C, D, E... al segundo dispositivo 95 sobre la conexión 107 y se comunica la información de estado S1, S2, S3, S4, S1... al segundo dispositivo 95 sobre la conexión
108.
Dentro del segundo dispositivo 95, las se usan las señales de descodificación del reloj N para cargar los datos recibidos cíclicamente en los registros R1, R2, R3, ..., RN bajo el control de la información de estado recibida. Así, la palabra de datos A es cargada en el registro R1, la palabra de datos B es cargada en el registro R2, la palabra de datos C es cargada en el registro R3, y la palabra de datos D es cargada en el registro R4, a continuación, la palabra de datos E es cargada en el registro R1, y así sucesivamente, de tal modo que cada palabra de datos recibida se encuentra disponible en uno de los registros R1 a R4 durante 4 ciclos de reloj.
El segundo dispositivo 95 incluye un generador de señales de reloj, el cual produce impulsos de reloj, reloj_2. El bloque 104 de selección de entrada del multiplexor produce señales de salida s1, s2, s3, s4, s1, ... en la línea 110 cíclicamente durante los ciclos consecutivos de reloj_2.
Las señales de la línea 110 son enviadas a un bloque 105 de multiplexor N:1, el cual selecciona una de las palabras de datos almacenadas en los registros R1, R2, R3 y R4, dependiendo de que la señal de la línea 110 tome el valor s1, s2, s3, o s4, respectivamente. Las palabras de datos seleccionadas son suministradas sobre una salida 111 de multiplexor a un registro 106, el cual está temporizado con el reloj del segundo dispositivo 95, reloj_2.
Puesto que cada palabra de datos permanece en el registro respectivo de los registros R1 a R4 durante 4 ciclos (en el caso en el que N=4), no es necesario que las dos señales de reloj, reloj_1 y reloj_2, estén sincronizadas exactamente. Sólo es necesario que estén sincronizadas dentro de 4 ciclos de reloj, puesto que la palabra de datos se encuentra disponible para ser cargada desde el registro durante esta longitud de tiempo.
Por tanto, se ha descrito un sistema que asegura que se pueden sincronizar dos dispositivos dentro de un número requerido de ciclos, y un sistema que asegura una transferencia correcta de datos entre dos dispositivos, los cuales están sincronizados dentro de un número de ciclos conocido.

Claims (9)

1. Un conjunto de procesadores, que comprende un conjunto de elementos de procesador (10, 12, 14, 16) semisíncronos, caracterizado porque cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos comprende un contador (30) de ciclos de módulo-n, y donde al menos uno de dichos elementos de procesador (10) semisíncronos es capaz de transmitir señales de órdenes de control a cada uno de los otros elementos de procesador (12, 14, 16) semisíncronos,
siendo cada uno de los elementos (12, 14, 16) de procesador semisíncronos tal que, al recibir una señal de orden de control, actúa ante esa señal sólo cuando su contador (30) de ciclos de módulo-n alcanza un valor predeterminado, y
dicho uno de dichos elementos de procesador (10) semisíncronos es tal que transmite señales de órdenes de control sólo cuando su contador (30) de ciclos de módulo-n adquiere un valor que está dentro de un intervalo predeterminado,
comprendiendo además el conjunto de procesadores una primera conexión (20) entre cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos, donde dicho uno de dichos elementos de procesador (10) semisíncronos es capaz de transmitir señales de órdenes de control de sincronización en dicha primera conexión (20) y donde cada elemento de procesador (10, 12, 14, 16) semisíncrono actúa ante una señal de orden de control de sincronización recibida en dicha primera conexión (20) reiniciando su contador (30) de ciclos de módulo-n.
2. Un conjunto de procesadores como el de la reivindicación 1, que comprende una segunda conexión (22) entre cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos, donde dicho uno de dichos elementos de procesador (10) semisíncronos es capaz de transmitir señales de órdenes de control de inicio y parada sobre dicha segunda conexión (22) y donde cada elemento de procesador (10, 12, 14, 16) semisíncrono actúa ante las señales de órdenes de control de inicio y parada recibidas en dicha segunda conexión (22).
3. Un conjunto de procesadores como el de la reivindicación 2, en el que una señal de orden de control de inicio comprende un primer nivel de señal binaria en dicha segunda conexión (22), y una señal de orden de control de parada comprende un segundo nivel de señal binaria en dicha segunda conexión (22).
4. Un conjunto de procesadores como el de las reivindicaciones 2 ó 3, que comprende una tercera conexión (26) entre cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos, donde cada uno de dichos elementos de procesador (12, 14, 16) semisíncronos es capaz de colocar una señal de solicitud de parada en dicha tercera conexión (26) y dicho uno de dichos elementos de procesador (10) semisíncronos detecta cualquier señal de solicitud de parada colocada en dicha tercera conexión (26), y actúa ante una señal de solicitud de parada detectada transmitiendo una señal de orden de control de parada sobre dicha segunda conexión (22).
5. Un conjunto de procesadores como el de la reivindicación 1, que comprende una cuarta conexión (24) entre cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos, donde dicho uno de dichos elementos de procesador (10) semisíncronos es capaz de transmitir señales de orden de control de etapa en dicha cuarta conexión (24), y donde cada uno de dichos elementos de procesador (10, 12, 14, 16) semisíncronos actúa ante una señal de orden de control de etapa recibida sobre dicha cuarta conexión (24) realizando una etapa de proceso.
6. Un conjunto de procesadores como el de la reivindicación 1, en el que cada elemento de procesador (10, 12, 14, 16) semisíncrono comprende una línea de retraso (53) programable para aplicar un retraso programado a las señales de órdenes de control recibidas.
7. Un conjunto de procesadores como el de la reivindicación 6, en el que cada línea de retraso (53) programable tiene un retraso mínimo programable.
8. Un conjunto de procesadores como el de la reivindicación 1, en el que dichos elementos de procesador (10, 12, 14, 16) semisíncronos incluyen un elemento transmisor y un elemento de receptor, y donde:
dicho elemento transmisor comprende unos medios para transmitir las palabras de datos asociadas a las palabras de código respectivas, usándose dichas palabras de código en una secuencia predeterminada; y dicho elemento receptor comprende:
unos medios para almacenar las palabras de datos recibidas en los registros respectivos (R1, R2, ..., RN), siendo determinados los registros respectivos (R1, R2, ..., RN) en base a las palabras de código asociadas a las palabras de datos, de tal manera que las palabras de datos es almacenada en su registro respectivo (R1, R2, ..., RN) el tiempo de duración de dicha secuencia de palabras de código predeterminada, y
unos medios para recuperar las palabras de datos de los registros respectivos (R1, R2, ..., RN).
9. Un conjunto de procesadores como el de la reivindicación 8, en el que dichos medios para recuperar las palabras de datos de los registros (R1, R2, ..., RN) respectivos comprenden un multiplexor (105), conectado a todos los registros (R1, R2, ..., RN), y unos medios para seleccionar una salida de cada uno de los registros (R1, R2, ..., RN) sucesivamente.
ES03780386T 2002-12-20 2003-12-12 Sincronizador de elementos de procesamiento semisincronos. Expired - Lifetime ES2268455T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0229788A GB2396446B (en) 2002-12-20 2002-12-20 Array synchronization
GB0229788 2002-12-20

Publications (1)

Publication Number Publication Date
ES2268455T3 true ES2268455T3 (es) 2007-03-16

Family

ID=9950140

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03780386T Expired - Lifetime ES2268455T3 (es) 2002-12-20 2003-12-12 Sincronizador de elementos de procesamiento semisincronos.

Country Status (7)

Country Link
US (1) US7603541B2 (es)
EP (1) EP1573574B1 (es)
AT (1) ATE336043T1 (es)
DE (1) DE60307513T2 (es)
ES (1) ES2268455T3 (es)
GB (1) GB2396446B (es)
WO (1) WO2004057487A2 (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7639764B2 (en) * 2005-08-17 2009-12-29 Atmel Corporation Method and apparatus for synchronizing data between different clock domains in a memory controller
US11936393B1 (en) 2022-06-06 2024-03-19 Amazon Technologies, Inc. Cooperative timing alignment using synchronization pulses
US12271511B1 (en) * 2022-06-06 2025-04-08 Amazon Technologies, Inc. Security protection for synchronization pulses
US12050486B1 (en) * 2022-06-06 2024-07-30 Amazon Technologies, Inc. System halt support for synchronization pulses

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589066A (en) * 1984-05-31 1986-05-13 General Electric Company Fault tolerant, frame synchronization for multiple processor systems
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US4937741A (en) * 1988-04-28 1990-06-26 The Charles Stark Draper Laboratory, Inc. Synchronization of fault-tolerant parallel processing systems
US4974146A (en) * 1988-05-06 1990-11-27 Science Applications International Corporation Array processor
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
EP0424618A3 (en) * 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
US5233615A (en) * 1991-06-06 1993-08-03 Honeywell Inc. Interrupt driven, separately clocked, fault tolerant processor synchronization
JP2601591B2 (ja) * 1991-11-26 1997-04-16 富士通株式会社 並列計算機およびその全対全通信方法
JPH06188850A (ja) * 1992-10-23 1994-07-08 Fujitsu Ltd データ転送方式及びデータ転送装置
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
EP0731945B1 (en) * 1993-12-01 2000-05-17 Marathon Technologies Corporation Fault resilient/fault tolerant computing
DE69430793T2 (de) * 1994-01-27 2003-02-20 Sun Microsystems, Inc. Asynchrone serielle kommunickationsschaltung
US6381293B1 (en) * 1996-04-03 2002-04-30 United Microelectronics Corp. Apparatus and method for serial data communication between plurality of chips in a chip set
US5963609A (en) * 1996-04-03 1999-10-05 United Microelectronics Corp. Apparatus and method for serial data communication between plurality of chips in a chip set
US6055285A (en) 1997-11-17 2000-04-25 Qlogic Corporation Synchronization circuit for transferring pointer between two asynchronous circuits
US5923615A (en) * 1998-04-17 1999-07-13 Motorlola Synchronous pipelined burst memory and method for operating same
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
JP4178552B2 (ja) * 2003-07-24 2008-11-12 株式会社安川電機 マスター・スレーブ同期通信方式

Also Published As

Publication number Publication date
US7603541B2 (en) 2009-10-13
EP1573574B1 (en) 2006-08-09
WO2004057487A2 (en) 2004-07-08
GB2396446A (en) 2004-06-23
GB0229788D0 (en) 2003-01-29
GB2396446B (en) 2005-11-16
DE60307513T2 (de) 2007-03-15
EP1573574A2 (en) 2005-09-14
DE60307513D1 (de) 2006-09-21
ATE336043T1 (de) 2006-09-15
US20060168423A1 (en) 2006-07-27
WO2004057487A3 (en) 2005-02-10

Similar Documents

Publication Publication Date Title
JP3727778B2 (ja) データ高速転送同期システム及びデータ高速転送同期方法
US8862925B2 (en) Pseudo synchronous serial interface synchronization method
TWI723006B (zh) 使用經校準、單一時脈來源同步串列器-解串列器協定之高速資料傳輸
JPH06103881B2 (ja) クロックスキュー補正回路
KR20150119546A (ko) 반도체 장치
ES2268455T3 (es) Sincronizador de elementos de procesamiento semisincronos.
ES2294366T3 (es) Aparato de procesamiento de datos que identifica una frecuencia de reloj de comunicacion.
WO2012078341A1 (en) Memory components and controllers that utilize multiphase synchronous timing references
US20080263381A1 (en) Dynamic phase alignment
US10090965B2 (en) Electronic circuit and method for transferring data between clock domains
ES2387100T3 (es) Método de intercambio de información entre unidades digitales en un sistema distribuido
ES2285415T3 (es) Conjunto ordenado de procesadores.
KR101187639B1 (ko) 집적회로
KR101455253B1 (ko) 메모리 컨트롤러
KR20160139496A (ko) 반도체장치 및 반도체시스템
ES2525422T3 (es) Arquitectura genérica de radar
KR20150104339A (ko) 반도체 장치 및 그를 포함하는 반도체 시스템
ES2231354T3 (es) Procedimiento para el funcionamiento de un modulo que presenta elementos logicos y elementos de memoria.
Rovere et al. Design of a QDI asynchronous AER serializer/deserializer link in 180nm for event-based sensors for robotic applications
US20150207581A1 (en) Communication system, and corresponding integrated circuit and method
US20210152325A1 (en) Subscriber of a data network
US6201414B1 (en) Pulse width modulation circuit
US20150221350A1 (en) Memory Interface
JP3408486B2 (ja) 装置間の同期回路
US9018999B2 (en) Multi-point analog to single-line input for a PLC system