Parte 7. Cap 10 Flashcards
(52 cards)
Para que sirve el sequence number del TLP
Para saber en orden en que fue enviado esto facilita detectar Lost TLPs o errores.
Que campos revisa la capa de enlace cuando recibe un TLP?
Primero checa el LCRC y segundo en sequence number del paquete
Elementos del bloque del Transmisor en el protocolo Ack/Nak?
NEXT_TRANSMIT_SEQ counter LCRC generator Replay Buffer REPLAY_TIMER_count REPLAY_NUM count ACKD_SEQ Register
Que función tiene en el transmisor el NEXT_TRANSMIT_SEQ Counter
Es un contador de 12-bit que genera el número de secuencia que será asignada al siguiente TLP, inicia en 0 y cuando el contador alcanza su límite 4095 hace rollover a 0
Que consiste el bloque del transmisor LCRC generator.
Es el que genera el código CRC para detectar errores en la transmisión y se calcula con los datos del TLP.
Qué se hace en el Replay buffer ?
O Retry buffer almacena una copia de los TLPs y respetando el orden como un FIFO. Al recibir un Ack se hace flush a los TLP con el número de secuencia que viene en el Ack y anteriores.
Que se hace en el REPLAY_TIMER Count?
Si se han enviado uno o más TLPs y no se ha recibido paquetes de Ack/Nak se inicia este timer y al expirar ejecuta un Replay del buffer.
Que es el REPLAY_NUM Count? En el transmisor
Es un número de 2 bits (00-11)b que lleva un conteo de 4 intentos de hacer un Replay del buffer, ante un Nak o un REPLAY_TIMER timeout. Después de superar los 4 intentos la DLL avisa a la capa física del error para que entre a un Recovery state y reentrenar el link.
Que es el ACKD_SEQ Register? En el transmisor
Es un registro de 12 bits que almacena el número de secuencia del último paquete de Ack/Nak recibido.
Cuales son los elementos del receptor en el protocolo de Ack/Nak?
LCRC error check NEXT_RCV_SEQ counter ACK/NAK LATENCY_TIMER NAK_SCHEDULED Flag AckNak Generator
Qué se hace en el bloque del receptor en NEXT_RCV_SEQ counter
Está en 0 cuando hay un reset y DLL está inactiva. Se incrementa cuando llega un good TLP que viaja a la capa de transacciones.
Para que sirve en Ack\Nak LATENCY_TIMER ?
Desde que llega el primer good TLP inicia su conteo y cuando el tiempo expira Se envía el Ack que representa a todos los good TLPs recibidos
Qué es el Nak_SCHEDULED Flag?
Cuando ocurre un error y se envía un Nak se activa esta bandera y mientras esté activa no se envía ni un Nak más tampoco se reciben TLPs hasta que se recibe el TLP con el sequence number esperado se limpia esta bandera y continúa
AckNak Generator en que consiste?
Se crea con el número de secuencia del NRS-1 del último good TLP que recibió
Quien añade el sequence number
La capa de enlace (DLL) es un número de 12-bit e incrementa secuencialmente y el tope es 4095 de ahí haría rollover a 0.
Quien añade el LCRC?
Este lo añade el transmisor, genera el Link CRC de 32-bit calculado en relación al contenido del TLP
Qué datos del TLP es la copia que almacena el Replay Buffer?
También llamado Retry Buffer que almacena una copia completa del TLP con todos sus campos que son:
- Sequence number (12-bit wide, 2 bytes)
- Header (hasta 16 bytes)
- Data Payload opcional (hasta 4KB)
- Un ECRC opcional (4 bytes)
- Un LCRC (4 bytes)
Que determina el tamaño del replay buffer?
La spec lo dejo a criterio del diseñador sin embargo, recomienda que sea de bajo costo mediante un tamaño reducido pero suficiente para evitar bloqueos a causa de TLPs que no han sido acknowledged aún.
Qué criterios ve el diseñador para elegir el tamaño óptimo de buffer.
Ack DLLP latency from the receiver
Delays caused by the physical link
Receiver L0s exit latency to L0
Como se controla la latencia del receptor cuando está en L0s y debe pasar a L0?
Que el buffer debe ser del tamaño suficiente para contener los TLPs sin que exista bloqueo mientras el Link regresa del estado L0s a L0.
Que ocurre si el REPLAY_NUM counter supero los 11b intentos de replay y se hizo un Rollover?
Cuando ocurre un rollover se asume qué hay un problema en el Link y la capa física pasa a recovery state para reentrenar el link
Qué pasa si hay varios intentos de reentrenar el link sin haber corregido el error ?
Se recomienda un device que registre el conteo de intentos.
Después de varios intentos este dispositivo avisaría al SW de un Uncorrectable Fatal error.
Como se manejan los TLPs recibidos en la capa física ?
Son revisados de errores como:
Framing
Disparity
Invalid symbols
Que casos pueden surgir si el número de secuencia de un TLP es menor o mayor que el NEXT_RCV_SEQ count?
Puede ser que si es menor el receptor detecte duplicidad (duplicated TLP) o si es mayor este out of sequence.