Analyse temporelle et CDC
Dans une FIFO asynchrone, le pointeur de l'autre côté est utilisé après synchronisation, si bien que la valeur visible a 2 à 3 cycles de retard. Quel est l'effet correct de ce retard sur la détection de full/empty ?
- ALa levée de full ou d'empty est seulement retardée ; il ne se produit ni débordement ni lecture à vide
- BLa détection de full étant retardée, on peut écrire de trop et faire déborder les données
- CLa détection d'empty étant retardée, on peut lire une FIFO vide
Afficher la réponse et l'explication
Réponse : A. La levée de full ou d'empty est seulement retardée ; il ne se produit ni débordement ni lecture à vide
Le pointeur de lecture vu par le côté écriture est une valeur ancienne : la lecture semble moins avancée qu'en réalité, et la FIFO est jugée plus remplie qu'elle ne l'est. Autrement dit, full est toujours activé quand la FIFO est réellement pleine, et seule sa levée après libération de place est un peu retardée. Il en va de même pour empty côté lecture : les données nouvellement écrites deviennent simplement visibles avec retard. Les deux effets jouent dans le sens de la sécurité (pessimiste), donc les données ne sont pas corrompues, mais on prévoit une marge de profondeur pour compenser ce retard et préserver les performances.
Continuer : 9 autres questions sur Analyse temporelle et CDC