Amphithéâtre Maurice Halbwachs, Site Marcelin Berthelot
En libre accès, dans la limite des places disponibles
-

Résumé

Ce premier cours parisien présentera d’abord brièvement les divers sujets traités dans l’ensemble des cours de l’année. Il sera ensuite consacré aux problèmes délicats des circuits multi-horloges.

Alors que les circuits digitaux du XXe siècle avaient le plus souvent une seule horloge, les systèmes sur puce du XXIe siècle en comportent en général plusieurs, en particulier pour cadencer des composants de fréquences intrinsèques différentes et pour abaisser la consommation d’énergie en réduisant la vitesse de certaines horloges selon la charge locale des circuits qu’elles cadencent. Les rapports temporels de ces horloges peuvent être variés : synchronisées, en décalage de phase, harmoniques ou encore vraiment asynchrones, ce dernier cas étant le plus complexe en terme d’échange d’information. En effet, quand une donnée produite sur une horloge doit être lue par un système cadencé sur une autre horloge asynchrone, il se peut qu’un front d’horloge réceptrice commandant l’échantillonnage d’une entrée par un registre arrive au moment où l’entrée elle-même est en train de changer. Dans ce cas, le registre peut rendre une valeur booléenne aléatoire ou rester métastable entre les deux valeurs booléennes pendant un temps aléatoire. Nous étudierons deux montages fondamentaux qui permettent de contourner cette difficulté intrinsèque à l’aide de protocoles spécifiques : les synchroniseurs multi-horloges et les files FIFO multi-horloges. Nous verrons que ces montages sont délicats et coûteux, et que diverses optimisations apparemment habiles peuvent s’avérer radicalement fausses.