

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Introducció als Computadors, Profesor: , Carrera: Enginyeria Informàtica, Universidad: UPC
Tipo: Apuntes
1 / 3
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


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.
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.
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.