5 / 20 · Concepto
El contrato en un flanco ascendente
Fija la numeración de flancos, el reenvío registrado, la acumulación y la prioridad de inicialización.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
La convención temporal usada en todo este curso
El reinicio y el borrado terminan antes de E0, el primer flanco ascendente que consume datos. Las entradas son estables inmediatamente antes de E_t. En ese flanco, un PE acumula un producto de sus entradas anteriores al flanco y almacena esas mismas entradas en sus registros de reenvío hacia la derecha y hacia abajo. Los nuevos valores del acumulador y del reenvío son observables inmediatamente después de E_t. Un vecino consume los valores registrados en E_(t+1).
Esta base no tiene un registro de entrada independiente, un multiplicador segmentado ni una etapa de serialización de salida. Añadir uno exige revisar la planificación y la latencia del resultado. «Un resultado en el flanco cero» significa el acumulador actualizado después de E0, no antes. Los flancos de inicialización se excluyen del recuento de flancos de cálculo. Clear tiene prioridad sobre MAC, así que activar clear con el primer par de datos descarta ese par; borra primero y alimenta los datos en el siguiente flanco.
Dos responsabilidades en un PE
Con A=1 y B=5 en E0, PE(0,0) actualiza su acumulador a cinco y reenvía los operandos a los registros. En E1, los operandos de borde 2 y 7 añaden catorce y producen diecinueve. En ese mismo flanco, los PE vecinos pueden consumir los primeros operandos registrados. Permitir que un token atraviese dos PE en un solo flanco invalidaría nuestras ecuaciones posteriores de desfase.
Las asignaciones no bloqueantes expresan este comportamiento de lectura antes del flanco y escritura después del flanco. Un banco de pruebas también debe muestrear de forma coherente después de actualizar el estado, usando un bloque de reloj adecuado o una región de muestreo del simulador. No dependas del orden accidental de los procesos de la región activa.
Prioridad y pausa global
La prioridad es reset, después clear y después advance. Reset y clear vacían los acumuladores y el estado de validez. Cuando advance=0, cada PE conserva su acumulador, sus valores de reenvío, sus indicadores de validez y sus etiquetas. El planificador del borde también conserva su posición. Un flanco con avance realiza un paso lógico. Un cero válido es un operando real; un token no válido se ignora independientemente de sus bits de datos.
Si un acumulador vale cinco y la matriz se pausa durante dos flancos físicos, sigue valiendo cinco. El siguiente flanco con avance realiza el siguiente paso lógico. Informa de los flancos físicos de reloj por separado de los pasos lógicos de avance. La inicialización sigue teniendo efecto durante una pausa, evitando que los tokens antiguos se filtren al siguiente trabajo.
Inténtalo tú
El borrado termina en E−1. Consume (1,5) en E0, pausa en E1 y consume (2,7) en E2. Indica el acumulador posterior al flanco y los números de paso lógico.
Leer la explicación
Después de E0, acc=5 y se ha completado el paso lógico cero. E1 conserva acc=5. Después de E2, acc=19 y se ha completado el paso lógico uno. Hubo tres flancos físicos y dos flancos con avance.