Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Handshaking, Apuntes de Introducción a los Ordenadores

Asignatura: Introducció als Computadors, Profesor: , Carrera: Enginyeria Informàtica, Universidad: UPC

Tipo: Apuntes

2014/2015

Subido el 08/01/2015

minervaa9299
minervaa9299 🇪🇸

5

(1)

1 documento

1 / 3

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Copyright © 2006, Juan J. Navarro, Universitat Politècnica de Catalunya.
1
Capitulo 6 (parte 2)
6.4 Handshaking
Vamos a definir ahora un protocolo de comunicación entre dos subsistemas asíncronos entre sí, con un
reloj distinto en cada subsistema, que resuelve las dos situaciones anteriores no deseadas. Este tipo de
protocolos se denomina de handshaking (literalmente, darse la mano). Veamos un protocolo para
comunicar un dato de un subsistema que denominamos emisor a otro que denominamos receptor.
Pequeñas variantes del protocolo, cambio de nombre de las señales, cambio de nombre de
emisor/receptor por Master/Slave, Cliente/Servidor, etc. se pueden dar en otros ámbitos como por ejemplo
al comunicar un procesador con una memoria o con un co-procesador aritmético que efectúa operaciones
complejas, como veremos en esta práctica.
La comunicación entre emisor y receptor se establece mediante dos señales de control Req y Ack (de un
bit cada una) y un bus de datos BUS (de n bits), como muestra la Figura 1.
Figura 1. Conexión entre dos subsistemas que se comunican mediante handshaking
-----------------------------------------------------------------------------------------------------------------
Vamos a considerar el caso de la Fig 1 en el que la señal de control Req (Request, petición) es una señal
de salida del emisor y de entrada para el receptor (es generada, activada, mantenida, alimentada,... por el
emisor) mientras que la señal Ack (Acknowledgement, reconocimiento, acuse de recibo) va del receptor al
emisor (es generada por el receptor). El caso contrario, en el que Req va del receptor al emisor y Ack del
emisor al receptor es igualmente posible. En cualquier caso el bus de datos va del emisor al receptor (los
datos son activados por el emisor). El protocolo tiene cuatro pasos (se denomina Four-Cycle
Handshaking) para comunicar cada dato. La comunicación la inicia el subsistema que genera la señal
Req, en nuestro caso el emisor. El emisor realiza el paso 1, terminado este, el receptor realiza el paso 2,
después el emisor realiza el 3 y por último el receptor el 4. A partir de este momento el emisor ya puede
comenzar por el paso 1 para iniciar el envío de otro dato. La transacción correcta de los datos la
proporciona el hecho de que con este protocolo ninguno de los dos subsistemas avanza al paso siguiente
hasta que el otro subsistema no le ha asegurado que ya ha terminado el paso anterior. Por ello, en este
tipo de protocolos de Handshaking no es necesario hacer ninguna presuposición sobre el tiempo que
tarda cada subsistema en actuar.
En la Figura 2 puede verse un cronograma con los cuatro pasos del protocolo. Empezamos la explicación
suponiendo que las dos señales de control, Req y Ack, están a 0.
Figura 2. Cronograma de las señales de un protocolo de handshaking de 4 pasos
-------------------------------------------------------------------------------------------------------------
pf3

Vista previa parcial del texto

¡Descarga Handshaking y más Apuntes en PDF de Introducción a los Ordenadores solo en Docsity!

Capitulo 6 (parte 2)

6.4 Handshaking

Vamos a definir ahora un protocolo de comunicación entre dos subsistemas asíncronos entre sí, con un reloj distinto en cada subsistema, que resuelve las dos situaciones anteriores no deseadas. Este tipo de protocolos se denomina de handshaking (literalmente, darse la mano). Veamos un protocolo para comunicar un dato de un subsistema que denominamos emisor a otro que denominamos receptor. Pequeñas variantes del protocolo, cambio de nombre de las señales, cambio de nombre de emisor/receptor por Master/Slave , Cliente/Servidor, etc. se pueden dar en otros ámbitos como por ejemplo al comunicar un procesador con una memoria o con un co-procesador aritmético que efectúa operaciones complejas, como veremos en esta práctica.

La comunicación entre emisor y receptor se establece mediante dos señales de control Req y Ack (de un bit cada una) y un bus de datos BUS (de n bits), como muestra la Figura 1.

Figura 1. Conexión entre dos subsistemas que se comunican mediante handshaking

Vamos a considerar el caso de la Fig 1 en el que la señal de control Req ( Request , petición) es una señal de salida del emisor y de entrada para el receptor (es generada, activada, mantenida, alimentada,... por el emisor) mientras que la señal Ack ( Acknowledgement , reconocimiento, acuse de recibo) va del receptor al emisor (es generada por el receptor). El caso contrario, en el que Req va del receptor al emisor y Ack del emisor al receptor es igualmente posible. En cualquier caso el bus de datos va del emisor al receptor (los datos son activados por el emisor). El protocolo tiene cuatro pasos (se denomina Four-Cycle Handshaking ) para comunicar cada dato. La comunicación la inicia el subsistema que genera la señal Req, en nuestro caso el emisor. El emisor realiza el paso 1, terminado este, el receptor realiza el paso 2, después el emisor realiza el 3 y por último el receptor el 4. A partir de este momento el emisor ya puede comenzar por el paso 1 para iniciar el envío de otro dato. La transacción correcta de los datos la proporciona el hecho de que con este protocolo ninguno de los dos subsistemas avanza al paso siguiente hasta que el otro subsistema no le ha asegurado que ya ha terminado el paso anterior. Por ello, en este tipo de protocolos de Handshaking no es necesario hacer ninguna presuposición sobre el tiempo que tarda cada subsistema en actuar.

En la Figura 2 puede verse un cronograma con los cuatro pasos del protocolo. Empezamos la explicación suponiendo que las dos señales de control, Req y Ack, están a 0.

Figura 2. Cronograma de las señales de un protocolo de handshaking de 4 pasos

  1. El emisor , comprueba que Ack valga 0 y si no lo vale se espera hasta que pase a valer 0 (la necesidad de esto se entiende mejor después de explicado el protocolo completo). Alimenta el bus de datos con el dato que desea enviar. Cuando las señales del bus están estables pone a 1 la señal Req. Esta señal le indica al receptor que tiene un nuevo dato válido en el bus de datos. El emisor no puede presuponer nada al respecto del tiempo que tardará el receptor en enterarse de que Req vale 1 ni del tiempo que tardará en leer el dato. Por ello, tiene que seguir alimentando la señal Req y el dato en el bus hasta el paso 3, que es cuando recibe notificación del receptor de que ha leído el dato (acuse de recibo).
  2. El receptor , al ver Req a 1 se entera de que hay un nuevo dato válido en el bus, lee el dato (posiblemente lo almacene en un registro) y cuando ya no necesita que el emisor mantenga el dato en el bus, pone a 1 la señal Ack (acuse de recibo). El receptor tampoco puede presuponer el tiempo que tardará el emisor en enterarse de que la señal Ack vale 1, por lo que debe mantenerla hasta que el emisor le indique que ya la ha visto, lo que ocurre en el paso 4.
  3. El emisor , al ver la señal Ack a 1 pone a 0 la señal de Req. Poniendo a 0 la señal Req, el emisor le notifica al receptor que ha visto Ack a 1 y que ya no necesita que la mantenga a 1 por más tiempo. Además, como el emisor ha visto Ack a 1, sabe que puede dejar de mantener los datos en el bus, pues el receptor ya los ha leído.
  4. El receptor , al ver que el emisor ha puesto a 0 la señal Req, sabe que el emisor ya ha visto la señal Ack activada y que no necesita mantenerla por más tiempo, por lo que la pone a 0.

Ahora las dos señales de control están a 0:  El emisor puede iniciar otra comunicación poniendo Req a 1, y se repite el proceso...  El receptor mira Req esperando que valga 1 para leer un nuevo dato, y se repite el proceso,...

Finalizada la explicación del protocolo se ve más claro que el emisor, antes de empezar una nueva comunicación debe esperar a que Ack valga 0. Si no lo hace y después de poner Req a 0 (paso 3) pone un nuevo dato en el bus y pone a 1 Req sin asegurarse de que Ack está a 0 (paso 1 mal iniciado), al pasar al paso 3 puede ver Ack a 1 (si el receptor todavía no la ha puesto a 0) y creer que el receptor ya ha leído el nuevo dato, cosa que no es cierta, ya que este Ack es del dato anterior.

La Figura 3 muestra los fragmentos de los grafos de estados de las unidades de control del emisor y del receptor, encargados de gestionar las señales Req y Ack del protocolo que acabamos de ver. En estos dos grafos no se especifican las acciones del emisor y del receptor con el dato a transmitir. Hablaremos de esto ahora, pero antes comentar que respecto a las señales Req y Ack, si el sistema estuviera en un bucle, transmitiendo un dato detrás de otro, el estado E2 podría juntarse con el E0 y formar un bucle de dos estados. En este caso haría falta una señal de entrada, proveniente por ejemplo de un contador, para salir del bucle por el estado E0 cuando ya se hubieran enviado todos los datos. Igualmente pasa con el grafo del receptor, R2 podría juntarse con R0. No obstante, cualquier sistema emisor (o receptor) suele requerir más estados, pues tiene que generar los datos a enviar, cargar los datos a enviar en el registro de salida, etc. (cargar el dato recibido en un registro, procesarlo, etc.).

Hablemos ahora de las acciones del emisor y receptor con el dato a comunicar. El bus de datos es unidireccional y dedicado, va del emisor al receptor y solamente a este receptor. El bus sale de un registro fuente de la unidad de proceso del emisor y llega a la entrada de un registro destino del receptor, posiblemente atravesando circuitos combinacionales en el emisor y/o en el receptor.