Parte 7. Cap 10 Flashcards
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.
Cuando se genera el out of sequence ?
Cuando por algún bit modificado en el link se pierde el TLP es un correctable error y se maneja con un Nak.
Cuando puede ocurrir un error de duplicidad de un TLP ?
Cuando el tiempo que espera el transmisor para recibir un Ack o Nak expira entonces hace un replay y el receptor lee el nuevo TLP con una secuencia menor a la esperada y descarta ese TLP.
No es error grave pero consume tiempo
Cuales son las reglas para evitar deadlocks o livelocks?
- Cuando el receptor detecta un TLP malo, se descarta y el resto de los TLP esperan hasta que se detecta un replay
- Se descartan los TLPs duplicados
- Mientras se espera el TLP perdido o corrupto los otros TLPs que se reciban serán descartados (no se debe perder la secuencia)
Que eventos pueden limpiar el estatus del NAK_SCHEDULED Flag?
- Recibir el TLP con la secuencia esperada
2. Con un RESET en el link ( no retraining si no un reset)
Si está programado un Nak que paquetes podrían pasar antes y hacer delay al Nak programado?
Los paquetes que ya estén en trayecto y sean de mayor prioridad como:
TLPs, ordered sets y DLLPS
Que errores pueden generarse en la transmisión?
Del tipo:
LCRC
TLPs lost
Corrupted Ack/Nak
Ack o Nak no se presenten
Cuál es la prioridad de paquetes en el protocolo Ack/Nak?
- Completions en tránsito de algún TLP, DLLP (highest Priority)
- Ordered sets
- Nak
- Ack
- Flow Control
- Replay buffer retransmissions
- TLPs esperando en la capa de transacciones
- El resto de transacciones DLLP
Que significa el término Cut-through mode?
Es una característica de los switches en la topología de PCIE y se puede utilizar para mejorar la latencia en la transferencia de TLPs largos que van a través de un switch.
Explica donde se da el LCRC error y solución?
Error en el TLP.
Solución. Receptor detecta el error y se programa un Nak con el sequence number de NEXT_RCV_SEQ -1.
El transmisor efectúa un replay de Por lo menos un TLP comenzando por el que falló.
Explica el error TLP lost y solución ?
Se da en camino a la capa de enlace. La capa física detecta el error y descarta/tira el paquete.
Solución. El receptor detecta un TLP faltante en la secuencia por lo que deja de aceptar más TLPs y programa un Nak con secuencia de NRS-1.
Explica el error corrupted Ack o Nak y Solucion.
Se da en el trayecto al transmisor.
Solución. El transmisor detecta el error de CRC en el Ack/Nak DLLP y descarta el paquete y simplemente espera el siguiente.
Donde se genera el error no Ack/Nak seen y Solucion ?
Dentro del tiempo esperado.
Solución. El REPLAY_TIMER del transmisor expira, no detectó ningún ack/Nak y dispara un replay.
Cuales son los paquetes o secuencias Ordered sets ?
TS1OS, TS2OS EIOS FTSOS SOS EIEOS
Qué función tiene el Ordered set TS1/TS2?
Sirven para la inicialización del link, los dispositivos en los extremos del link se ponen de acuerdo con estas secuencias para negociar, la velocidad del link, y otras variables asociadas a la operación del link, esto cuando se logra un bit-lock y un symbol-lock.
Para que se utiliza el EIOS?
Electrical idle ordered set Se usa cuando el transmisor desea pasara a un low-power link state, cuando los receptores ven esta instrucción se preparan para un estado low-power, se forma de cuatro símbolos COM seguido de tres Idle’s.
Cómo se prepara el receptor para que el link entre a un Electrical Idle?
Ignorar la entrada de errores hasta que se salga del Electrical Idle, poco después de enviar EIOS, el transmisor reduce el voltaje diferencial a 20 mV.
Para que se utilizan los FTSOS ?
Consiste en 4 símbolos, sirve para traer nuevamente el link de un low-power state L0s a un estado full-on L0.
El transmisor envía un número apropiado de FTS el valor mínimo de estas secuencias se pacta durante el Training con el vecino en el link.
El receptor detecta estos FTS y asume que el link intensa salir de Electrical idle y Usa estas secuencias para recuperar el bit lock y symbol lock.
Qué función tiene implementar SKIP ordered set (SOS)?
Se transmiten en intervalos regulares y sirve para la lógica de compensación del reloj.
Como utiliza el receptor los SOS?
Básicamente evalúa los SOS e internamente suma o remueve símbolos SKP como sean necesarios para prevenir que sus regiones de elastic buffer tengan un underFlow o un Overflow.
Como se implementan los Electrical Idle Exit Ordered set (EIEOS)?
Fue definido para proveer una secuencia a una baja frecuencia lo que permite al receptor detectar la salida del Electrical Idle.
En codificación 8b/10b aparecen strings de cinco 1’s y cinco 0’s.
Qué es el Serializer ?
Extrae los símbolos manteniendo orden en los bits que se transmiten, donde el bit menos significativo es “a” y el más significativo es al “j” que va al final.
En la codificación 8b/10b Cómo es la velocidad de transmisión de los símbolos y en términos de bits en los Lanes?
En cada Lane los símbolos serán llevados al serializador a 250MHz o 500MHz ( por símbolo) y en bits es 10 veces mayor así que será 2.5GHz o 5.0GHz.
Cómo funciona el Driver diferencial?
El controlador diferencial que envía la secuencia de Bits al cable o hilo maneja una codificación NRZ, lo que indica que no hay niveles de voltajes intermedios.
Principal ventaja de una señal diferencial?
Mejora la integridad de la señal y permite una frecuencia alta y voltajes bajos.
Que hace el reloj del transmisor (Tx Clock)?
Extrae la salida serializada para cada lane.
Esta frecuencia de reloj debe ser precisa 300ppm cerca de la frecuencia central.
Cómo es el reloj según la Spec.?
Para tarjetas periféricas incluye un reloj de 100MHz de referencia que lo provee la board. Si se desea otro valor del reloj internamente se deriva del de referencia multiplicando o dividiendo y así generar el reloj local necesario para la lógica y el Tx clock que utiliza el serializer.
Cómo es Logical Idle en el transmisor?
Que mientras no se estén transmitiendo paquetes del tipo TLP, DLLP y Ordered sets, se están inyectando caracteres de Logical Idle.
Cuáles son las propiedades de los caracteres de Logical Idle?
- Son 8-bit, 00h
- Se envían en todos los lanes simultáneamente.
- Este carácter si es scrambled pero cómo está fuera de la trama, fuera del END o EDB y antes de un STP o SDP.