PHY 569A PC « Systèmes intégrés multi-processeurs » On s’intéresse au fonctionnement d’un système intégré multi-processeurs à mémoire partagée construit autour du PI-BUS. Les processeurs sont des processeurs RISC capables de démarrer une instruction à chaque cycle. Chaque processeur possède deux caches séparés pour les instructions et pour les données, et chaque cache accède indépendamment au bus. La largeur de la ligne de cache est de 16 octets (4 mots). La stratégie d’écriture en mémoire est de type ‘’write-through’’ (écriture systématique en mémoire). La capacité des caches est telle que – pour les applications considérées - le taux de MISS est de 4% pour le cache instruction, et de 10% pour le cache des données. Un tampon d’écriture ‘’ postées’’ permet d’éviter les gels du processeur lors des écritures. On suppose, que pour les applications visées, 10% des instructions sont des écritures, et 20% des instructions sont des lectures. On observe qu’à cause des cycles de gel des processeurs liés aux MISS sur les caches, le nombre moyen de cycles par instruction est égal à 2 (le processeur démarre en moyenne une instruction tous les deux cycles). Le système est synchrone et contrôlé par une horloge à 50 MHZ. Tous les temps sont mesurés en cycles du processeur. La fréquence d’un événement est mesurée en nombre d’événements par cycle. Par exemple, la fréquence moyenne des requêtes d’écriture émises par un processeur est de 0.05 écriture par cycles, car 10% des instructions sont des écritures, et le processeur démarre une instruction tous les deux cycles. Chaque unité de calcul (constituée d’un processeur et de ses deux caches) effectue trois types de transactions sur le PI-Bus : RI lecture d’une ligne de cache instruction RD lecture d’une ligne de cache donnée WD écriture d’un mot en mémoire On cherche à évaluer le trafic généré par chaque unité de calcul pour en déduire le nombre maximal de processeurs. Q1) Calculer la fréquence de chacun des trois types de requêtes (RI, RD, WD). Q2) Calculer la durée de chacune de ces trois transactions du point de vue de l’occupation du bus, en tenant compte du fonctionnement pipe-line du PI-Bus, et du cycle inutilisé entre deux transactions. (Attention : la durée d’occupation du bus n’est pas égale au nombre de cycles de gel du processeur !) On fera l’hypothèse que le contrôleur mémoire répond en un cycle sans insérer de cycle d’attente. Q3) Calculer le trafic généré sur le PI-Bus par une seule unité de traitement en pourcentage de la bande passante totale du bus. En déduire le nombre maximal de processeurs. On cherche maintenant à évaluer le coût du MISS en nombre de cycles dans le cas d’un système à quatre processeurs, et à analyser l’effet des MISS de cache sur la performance du processeur. Il faut pour cela évaluer le nombre de cycles d’attente entre l’émission d’une requête suite à un MISS (signal REQi) et l’obtention du bus (signal GNTi). Le contrôleur du bus (BCU) réalise un mécanisme de priorité tournante : le maître qui obtient le bus passe en dernière priorité à la fin de la transaction. Q4) Expliquer pourquoi un système de priorité fixe n’est pas acceptable, et calculer la durée maximale d’attente avec le mécanisme de priorité tournante. Q5) Evaluer la durée moyenne d’attente d’allocation du bus. En déduire- le coût du MISS. Q6) Calculer DCPI(I) et DCPI(D), qui sont les accroissements du nombre moyen de cycles par instruction causés par les MISS du cache instruction.et les MISS du cache de données respectivement. Ce calcul est-il cohérent avec ce qui est observé ? On souhaite ajouter au système un contrôleur d’entrées/sorties capable d’accéder directement à le mémoire en lecture ou en écriture pour transférer des blocs de 512 octets. Le périphérique qui accède au bus gràce à ce contrôleur supporte un débit maximum de 20 M octets par seconde. Il possède des registres tampon qui lui permettent de transférer un bloc en une seule rafale sans relâcher le bus. Q7) Quelle est la fréquence maximale des requêtes émises par le contrôleur d’entrées/sorties (une requête par rafale) ? Quelle est la durée d’une rafale ? Q8) Quel est le trafic généré en pourcentage de la bande passante par le contrôleur d’entrées/sorties ? Quelle est la conséquence de l’introduction de ce nouveau composant sur les autres processeurs du système ? PHY569 Corrigé PC « systèmes intégrés multiprocesseurs » R1) f(RI) = 0.04x 0.5 = 0.02 f(RD) = 0.2 x 0.1 x 0.5 = 0.01 f(WD) = 0.1 x 0.5 = 0.05 R2) T(RI) = 4 + 1 = 5 T(RD) = 4 + 1 = 5 T(WD) = 1 + 1 = 2 R3) P(PROC)=(0.02 x 5) + (0.01 x 5) +( 0.05 x 2) P(PROC) = 0.25 Le taux d’utilisation du bus correspond au produit de la fréquence des requêtes par la durée de chaque requête.Chaque processeur consommant 1/4 de la bande passante, le nombre maximal de processeurs est 4. R4) En cas de priorité fixe, la durée d’attente n’est pas bornée, ce qui crée un risque de famine. Chaque processeur possède deux caches. Il y a donc 8 maîtres. En cas de priorité tournante, le pire cas est celui où les sept autres maîtres sont prioritaires et effectuent des requêtes RI ou RD : T = 5 x 7 ΔT = 35 cycles R5) La durée moyenne d’une transaction est la somme pondérée 0.02x5 + 0.01 x 5 + 0.05 x 2 = 3 cycles 0.08 Le calcul exact du temps d’attente moyen est délicat. Le calcul ci-dessous est une évaluation grossière pessimiste : T = 1/8 [0+3 + 6 +……21] = 10.5 cycles Coût du MISS : 10.5 + 6 = 16.5 cycles R6) DCPI(I) = 0.04 * 16.5 = 0.66 DCPI(D) = 0.10 * 0.2 * 19.5 = 0.33 L’accroissement du nombre moyen de cycles par instruction dûs aux MISS de cache est donc de 0.99 cycles, ce qui explique la valeur CPI = 2. R7) Soit f(IOC) la fréquence des rafales 512 octets x f(IOC) = 20 M octets /s f(IOC) = 2 x 107 requêtes /s 512 f(IOC) = 0.0008 requête/cycle R8) T(IOC) = 129 cycles p(IOC) = 129 x 0.0008 P(IOC) = 10% Ce nouveau composant consomme une partie significative de la bande passante, et les transactions sont longues. Ceci augmente le temps moyen d’attente du bus et le CPI.