ES2268455T3 - Sincronizador de elementos de procesamiento semisincronos. - Google Patents
Sincronizador de elementos de procesamiento semisincronos. Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures 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.
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.
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.
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)
| 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)
| 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 | 株式会社安川電機 | マスター・スレーブ同期通信方式 |
-
2002
- 2002-12-20 GB GB0229788A patent/GB2396446B/en not_active Expired - Fee Related
-
2003
- 2003-12-12 US US10/539,337 patent/US7603541B2/en not_active Expired - Lifetime
- 2003-12-12 DE DE60307513T patent/DE60307513T2/de not_active Expired - Lifetime
- 2003-12-12 EP EP03780386A patent/EP1573574B1/en not_active Expired - Lifetime
- 2003-12-12 AT AT03780386T patent/ATE336043T1/de not_active IP Right Cessation
- 2003-12-12 ES ES03780386T patent/ES2268455T3/es not_active Expired - Lifetime
- 2003-12-12 WO PCT/GB2003/005451 patent/WO2004057487A2/en not_active Ceased
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 |