Systèmes multi-processeurs intégrés sur puce version 1.0 PHY 568 Alain Greiner
Pla n Architectures multi-processeurs à mémoire partagée Applications parallèles embarquées Bus système / exemple du PIBUS 2
Bu t Un système multiprocesseurs intégré sur puce (MPSoC), cherche à exploiter le parallélisme «gros grain» d une unique application embarquée. Exemple : contrôle d un téléphone portable Une même puce contient plusieurs processeurs exécutant en parallèle différentes tâches. Ces tâches communiquent généralement entre elles à travers un espace d adressage partagé, suivant un schéma producteur/consommateur. 3
Espace d adressage partagé Les maîtres (ou initiateurs) démarrent une transaction en effectuant une lecture ou une écriture à une adresse particulière. Les esclaves (ou cibles) terminent la transaction en renvoyant la donnée demandée (lecture), ou en renvoyant un acquittement (écriture) Esclaves RAM ROM TTY I/O Interconnect Maîtres P0 P1 P2 P3 Une transaction est un couple (commande / réponse). 4
Décodage des adresses Tous les composants du système ont la même vision de l implantation des cibles dans l espace d adressage. ROM FFFF FFFF L interconnect décode les bits de poids fort de l adresse pour pour acheminer la commande vers la cible concernée. 31 0 MSB LSB La cible décode les poids faible de l adresse pour adresser la case mémoire visée, en lecture ou en écriture. RAM TTY I/O 0000 0000 5
Pla n Architectures multi-processeurs à mémoire partagée Applications parallèles embarquées Bus système / exemple du PIBUS Principe des mémoires caches 6
Caractéristiques Générales Les applications logicielles sont souvent décrite sous forme d un réseau de tâches communicant entre elles à travers des canaux de communication. Une tâche est un programme séquentiel «infini» qui utilise des fonctions de communication prédéfinies : Un canal de communication est très souvent un tampon mémoire circulaire, géré comme une FIFO logicielle, et protégé par par un verrou d accès exclusif. while(1) { send(channel, buffer) } while(1) { receive(channel, buffer) } Tâche productrice Canal Tâche consommatrice 7
Parallélisme de type «pipe- line» T0 T1 T2 T3 Cette structure se retrouve fréquemment dans les applications de type «traitement de flux video», telles que décodage MPEG Lorsque le temps de calcul pour traiter une image est supérieur à la période de l image, on découpe le traitement en plusieurs tâches. Chaque tâche i a une durée inférieure à la période image, et est exécutée sur un processeur particulier. La durée d exécution de chaque tâche est variable (elle dépend généralement de l image), mais toutes les tâches doivent avoir des durées moyennes peu assez voisines, pour «équilibrer» le pipe-line. 8
Parallélisme de type «task- farm» Cette structure se retrouve fréquemment dans les applications de type «télécommunication», telles que classification de paquets dans un flux Gigabit Ethernet. T0 Tin T1 Tout Tn Toutes les tâches Ti accomplissent le même traitement, mais sur des paquets différents. 9
Parallélisme mixte On peut évidemment combiner les deux structures : T00 T01 Tin T10 T11 Tout Tn0 Tn1 Dans tous les cas, l expression du parallélisme «gros grain» (découpage en tâches et définition du schéma de communication) est à la charge du concepteur du système. 10
Pla n Architectures multi-processeurs à mémoire partagée Applications parallèles embarquées Bus système / exemple du PIBUS 11
Bus système L interconnect est réalisé comme un ensemble de nappes de fils partagées par plusieurs émetteurs. La limitation de ce type d interconnect est de ne permettre qu une seule transaction à la fois Esclaves RAM ROM TTY I/O BCU Maîtres P0 P1 P2 P3 12
NRESET CK Les signaux du PIBUS commande A[31:0] OPC[3:0] READ LOCK Cible j Maître i D[31:0] ACK[2:0] réponse GNTi REQi BCU SELj 13
Caractéristiques Générales Synchrone : Tous les composants connectés au bus doivent être cadencés par la même horloge et respecter les mêmes contraintes de setup-time et hold-time. Pipeliné : Il existe des nappes de fils séparées pour transporter les adresses et pour transporter les données. Rafales : il est possible de lire ou d écrire plusieurs mots de 32 bits en une seule transaction. 14
Fonctionnement pipe- line GNT GNT GNT AD AD0 AD1 AD2 AD3 AD DT DT0 DT1 DT2 DT3 DT LOCK ~ 0 ~ 1 1 1 0 ~ 0 Recouvrement entre 2 transactions consécutives : L allocation du bus à un nouveau maître (GNT) se fait pendant le dernier cycle de la transaction précédente. Recouvrement entre transferts au sein d une rafale : L adresse correspondant au transfert (i+1) est transmise durant le même cycle que la donnée (i) 15
Fonctionnement «asynchrone» La durée d une transaction n est pas garantie : - le nombre de cycles d attente pour obtenir l allocation du bus (entre l activation du signal REQ et l obtention du signal GNT) est généralement non prédictible -la cible peut insérer des cycles d attente si elle n est pas capable de répondre en un cycle GNT GNT AD AD0 AD1 AD1 AD1 AD2 AD3 XXX DT XXX XXX DT0 DT1 DT2 DT3 ACK ~ wait ready ~ wait wait ready ready ready ready 16
Les trois fonctions du contrôleur de bus 1/ Allocation du bus (et arbitrage entre les différents maîtres, en cas de requêtes simultanées). 2/ Décodage des bits de poids fort de l adresse, et sélection de la cible concernée par la transaction. 3/ Gestion «d un chien de garde» permettant de terminer la transaction, lorsque la cible sélectionnée ne répond pas. 17
Allocation du bus Le mécanisme d arbitrage possède une topologie en étoile. Chaque maître est connecté au BCU par deux signaux«privés» : - REQi est une demande d allocation du bus par le maître i - GNTi est une autorisation d utilisation du bus pour le maître i BCU REQ0 GNT0 P0 REQ1 GNT1 P1 REQ2 GNT2 P2 18
Automate du contrôleur de bus Le BCU est contrôlé par un automate à 4 états. IDLE REQ REQ L allocation du bus se fait dans les états IDLE et DT. AD LOCK DTAD LOCK RDY + LOCK RDY.LOCK DT RDY.REQ RDY RDY.REQ 19
Politiques d arbitrage La politique d arbitrage n est pas définie par le protocole du PIBUS : elle est spécifique à chaque système intégré. Il existe de nombreuses politiques possibles : priorité tournante (round robin) priorité fixe (cablées dans le BCU) réservation de bande passante 20