Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent...

42
Périphériques, Interruptions & DMA Guillaume Duc <[email protected]> 2015–2016

Transcript of Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent...

Page 1: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Périphériques, Interruptions& DMA

Guillaume Duc<[email protected]>2015–2016

Page 2: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Plan

Introduction

Modèle générique

Attente active (Polling)

Interruptions

Direct Memory Access

2/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 3: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Objectifs du cours

Modèle générique d’interaction avec les périphériquesModes de communication

• Attente active (Polling)• Interruptions• Direct Memory Access (DMA)

3/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 4: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Exemple de périphériqueUART

RS-232 : standard (Electronic Industries Association) pourla communication série asynchrone point à point entredeux équipements (le plus souvent entre un ordinateur etun modem, une souris, une imprimante, etc.)

• Remplacé de nos jours par l’USB dans les ordinateurs maisencore largement utilisé dans le monde des systèmesembarqués car moins complexe

UART (Universal Asynchronous Receiver Transmitter ) :Périphérique gérant la transmission (émission et réception)

4/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 5: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Exemple de périphériqueUART — RS-232

Transmission asynchrone (sans horloge)Les données sont transmises en série sur deux fils (undans chaque sens)T = Durée d’un bit, déduit du débit préalablementconfiguré (exemple : 115 200 bits/s)

V

t

153

−3−15 Idle S 1 0 0 0 0 0 1 0 S Idle

Données

T

5/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 6: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Exemple de périphériqueUART — Fonctionnalités nécessaires (non exhaustif)

Gestion de la communication avec le processeurStockage du caractère à envoyer pendant sa transmissionStockage du caractère reçu en attendant son traitementpar le processeurGestion de la configuration (débit...)Signalisation au processeur d’une réceptionSignalisation au processeur d’une fin de transmissionSérialisation / Desérialisation des donnéesGénération de l’horloge d’échantillonage et d’émissionTraitement de la réception (détection du début de latransmission, échantillonage...)Traitement de l’émission (ajout des bits de start et destop...)

6/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 7: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Plan

Introduction

Modèle générique

Attente active (Polling)

Interruptions

Direct Memory Access

7/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 8: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Périphérique générique

Interface avec le processeur (générique)• Données reçues / Données à transmettre• État du périphérique• Configuration du périphérique• Commandes• Signalement d’évènements

Traitements propre au périphérique

8/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 9: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Flux d’informations

Données reçues par le périphérique (périphérique processeur)Données à transmettre au périphérique (processeur périphérique)État du périphérique (périphérique processeur)Configuration du périphérique (périphérique!processeur)Commandes (processeur périphérique)Signalement d’évènements (périphérique processeur)

9/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 10: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Analogie avec la mémoire

Lecture par le processeur• Données reçues par le périphérique• État du périphérique• Configuration du périphérique

Écriture par le processeur• Données à transmettre au périphérique• Commandes du périphérique• Configuration du périphérique

Notion d’adresse au sein du périphérique pour distinguerles informations à lire/écrire(données/état/configuration/commandes)

10/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 11: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Analogie avec la mémoire

Du point de vue du processeur, un périphérique peut doncêtre assimilé à un ensemble de “cases” mémoires,appelées registresLe contenu de ces registres peuvent correspondre à desdonnées, à l’état, la configuration ou les commandes dupériphériqueCes registres sont indexés par une adressePour dialoguer avec le périphérique, le processeur fait deslectures et des écritures dans ces registres

11/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 12: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Connexion avec le processeur

Un périphérique est connecté au processeur grâce à unbusPlusieurs cas possibles

• Un seul bus où sont connectés tous les périphériques et lamémoire

• Un bus rapide sur lequel est connecté le processeur, lamémoire et un pont (bridge) vers un bus plus lent où sontconnectés les périphériques

• Un bus entre le processeur et la mémoire et un bus dédiéentre le processeur et les périphériques

12/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 13: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

BusSamsung S3C44B0X (ARM7TDMI)

13/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 14: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

BusSTM32F100 (Cortex M3)

14/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 15: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Adressage des périphériques

Memory-Mapped I/O (MMIO)• Les adresses des registres du périphérique apparaissent

dans l’espace d’adressage du processeur cartographiemémoire

• Les transferts vers et depuis le périphériques (données,commandes, configuration ou statut) se réalisent de façonidentique avec les transferts mémoires (ex. instructionsload/store, modes d’adressage impliquant la mémoire, etc.)

Port-Mapped I/O (PMIO)• Deux espaces d’adressage distincts : un pour la mémoire

et un pour les périphériques• Les transferts vers et depuis les périphériques se réalisent

avec des instructions dédiées (ex. instructions IN et OUT dux86

15/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 16: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

MMIO vs. PMIOMemory-Mapped I/O

• Un seul bus à gérer par le processeur• Toutes les instructions qui manipulent des opérandes en

mémoire peuvent de fait manipuler des opérandes enprovenance de périphériques

• Contrôle d’accès peut être géré par la MMU (maisgranularité d’une page)

Port-Mapped I/O• Pas de réduction de l’espace d’adressage qui peut être

occupé par de la mémoire (moins un problème avec lesarchitecture 32/64 bits)

• Contrôle d’accès souvent en tout ou rien (modesuperviseur)

• Instructions spécifiques souvent plus frustres (ex.architecture x86 : IN et OUT ne peuvent utiliser que leregistre (E)AX comme source ou destination du transfert)

16/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 17: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Plan

Introduction

Modèle générique

Attente active (Polling)

Interruptions

Direct Memory Access

17/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 18: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Lecture de données depuis un périphériqueExemple de l’UART du S3C44B0X

18/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 19: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Lecture de données depuis un périphériqueExemple de l’UART du S3C44B0X

19/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 20: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Lecture de données depuis un périphériqueExemple de l’UART du S3C44B0X

// Version en C#define UTRSTAT0 (*( volatile uint32_t *) 0x01D00010)#define URXH0 (*( volatile uint8_t *) 0x01D00024)

while (!( UTRSTAT0 & 0x1));char recv = URXH0;

// Version en Assembleur ARMldr r1, =0 x01D00010

loop: ldr r2, [r1]and r2, r2, #1cmp r2, #0beq loop

ldr r1, =0 x01D00024ldrb r2, [r1]

20/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 21: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Transferts de donnéesAttente active (Polling)

Déroulement• Interroger le registre de statut du périphérique jusqu’à ce

qu’une donnée soit disponible ou puisse être envoyée• Lire ou écrire la donnée

Méthode de l’attente active (Polling)Le processeur doit explicitement aller vérifier si unedonnée peut être lue ou écrite et ne peut rien faire d’autreen attendantEfficace si les données arrivent rapidement ou s’il n’y apas d’urgence (vérifications à intervalles longs)Alternative : interruptions

21/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 22: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Transferts de donnéesVolatilité des registres des périphériques

Le contenu des registres des périphériques peut variersans action explicite du processeurProblèmes

• Caches du processeur : Il ne faut pas que l’espaced’adressage occupé par les périphériques soit cachable(par construction ou par configuration du cache)

• Optimisations du compilateur : Il faut penser à déclarer lesdonnées du périphérique comme volatiles pour empêcherles optimisations du compilateur

22/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 23: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Plan

Introduction

Modèle générique

Attente active (Polling)

Interruptions

Direct Memory Access

23/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 24: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Interruptions

Signal émis par un périphérique indiquant au processeur lasurvenue d’un évènementAsynchrone vis-à-vis du flot d’exécution (peut survenirn’importe quand, non liée à une instruction particulière)Le flot d’exécution est interrompu et le contrôle donné à ungestionnaire d’interruption (Interrupt Handler ou InterruptService Routine)Une fois le traitement de l’interruption effectué, le flotd’exécution initial reprend là où il s’est interrompuMécanisme pour identifier l’origine de l’interruption (trèsnombreuses sources dans les systèmes modernes)

24/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 25: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Interruptions précises

Les interruptions en provenance de périphériques doiventêtre des interruptions précises

• Le compteur de programme est sauvegardé• Toutes les instructions précédant le PC sont complètement

achevées• Aucune instruction suivant le PC n’a été exécutée

Simplifie la vie du programmeur car il suffit, pour revenir del’interruption, de reprendre l’exécution à la valeur de PCsauvegardéePotentiellement compliqué à réaliser matériellement àcause du pipeline

25/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 26: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Déroulement d’une interruption

Une interruption non désactivée survientLe processeur sauvegarde le PC (et quelques autresregistres), soit dans un registre particulier, soit dans la pileLe cas échéant, le processeur change de mode (engénéral, passage en mode superviseur)Le PC est chargé avec l’adresse du gestionnaired’interruption

• Vecteur d’interruption : Adresse de base (fixe ouconfigurable) + n × numéro de l’interruption

• Adresse fixe, le numéro de l’interruption étant chargé dansun registre pour pouvoir être connu

26/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 27: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Déroulement (suite)

Le gestionnaire d’interruption• Sauvegarde éventuellement d’autres registres dans la pile

pour pouvoir travailler• Effectue le travail approprié (ex. transfert les données

reçues par le périphériques vers la mémoire)• Restaure les registres sauvegardés pour que le programme

initial puisse reprendre sans effets de bord

Retour d’interruption (en général une instruction dédiée),le processeur restaure le PC et le mode d’exécutionprécédent et le flot d’exécution initial reprend

27/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 28: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Premier problème

Le temps global de traitement de l’interruption ne doit pasêtre trop important ainsi que la fréquence de survenue desinterruptionsSinon, le flot d’exécution principal n’a plus le temps des’exécuter et est constamment interrompu (Interrupt storm)On risque également de perdre des données reçues parles périphériques

28/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 29: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Gestionnaires d’interruption modernes

Réduction du temps de traitement d’une interruption• Le traitement d’une interruption est souvent découpé en

deux parties afin de limiter le temps durant lequel le flotd’exécution est interrompu

• First-Level Interrupt Handler (FLIH) : fait le minimum dechoses et programme l’exécution du SLIH

• Second-Level Interrupt Handler (SLIH) : effectue le reste dutraitement, plus tard, lorsque l’ordonnanceur de tâches dusystème d’exploitation le décide

Réduction de la fréquence des interruptions• Certains systèmes d’exploitation désactivent

temporairement les interruptions (et font du polling régulier)pour les périphériques qui en génèrent trop

• Certains périphériques disposent d’un mécanisme delimitation de la fréquence des interruptions

29/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 30: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Réduction du risque de perte de données

Utilisation de files d’attente (FIFO) dans les périphériquesà la place d’un seul registre de réceptionPermet ainsi de stocker plusieurs données reçues enattendant que le processeur vienne les récupérerInterruptions associées à la FIFO (en général : FIFO àmoitié pleine, FIFO pleine, avec éventuellement despriorités différentes)Idem pour les données à transmettre au périphérique(permet de transmettre plusieurs données d’un coup sansavoir à attendre qu’elles soient traitées)

30/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 31: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Autre problème

Même avec les interruptions, le transfert des donnéesdepuis le périphérique vers la mémoire (ou vice-versa)reste à la charge du processeur qui ne peut rien fairependant ce tempsSolution : le Direct Memory Access (DMA)

31/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 32: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Plan

Introduction

Modèle générique

Attente active (Polling)

Interruptions

Direct Memory Access

32/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 33: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Présentation

Objectif : Décharger le processeur des transferts dedonnéesLe contrôleur de DMA est un module matériel capable deréaliser des transferts entre les périphériques et lamémoireUne fois le contrôleur configuré, le processeur n’intervientplus dans le transfertLa fin du transfert est généralement signalée par uneinterruption émise par le contrôleur de DMAAvantages

• Le processeur peut faire autre chose• Le transfert des données peut être plus rapide

33/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 34: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Configuration minimale

Adresse de source du transfertAdresse de destination du transfertNombre de données à transfererTaille des données (octets, mots...)

34/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 35: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Déclenchement du transfert

Déclenchement par logiciel (notamment dans le cas detransferts mémoire vers mémoire)Déclenchement sur événement d’un périphérique(exemple : données reçues par la carte réseau)

35/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 36: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Contrôleur de DMA

Plusieurs canaux (channels) pour effectuer plusieurstransferts en même temps (en provenance de plusieurspériphériques par exemple)Registres de configuration par canauxTransferts

• Périphérique vers mémoire• Mémoire vers périphérique• Périphérique vers périphérique• Mémoire vers mémoire

– Possibilité de remplir une zone mémoire avec un motif

36/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 37: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Modes d’opérationArbitrage DMA/Processeur

Rafale (Burst) : Le bloc de données est transféré en uneseule fois. Une fois que le contrôleur de DMA a accès aubus, il le conserve pendant tout le transfert. Le processeurne peut pas faire d’accès mémoire pendant ce tempsVol de cycle (Cycle Stealing) : Le processeur et lecontrôleur de DMA se partagent alternativement le bus (uncycle pour le processeur, un pour le contrôleur de DMA)Transparent : Le contrôleur de DMA n’a accès au bus quelorsque le processeur n’en a pas besoin

37/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 38: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Cohérence des caches

Problème de cohérence des caches pour la zone mémoiredestination du transfert DMA (ou même pour la zonesource en cas de politique write-back du cache)En fonction des architectures

• Soit le cache est invalidé matériellement• Soit il appartient au système d’exploitation d’invalider le

cache pour les zones concernées par le transfert

38/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 39: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

DMA et mémoire virtuelle

Utilisation des adresses physiques• Franchissement d’une frontière de page possible

uniquement si données consécutives en mémoire physique• Le système d’exploitation ne doit pas toucher aux pages

physiques concernées pendant le transfert• Plus simple

Utilisation des adresses virtuelles• Nécessite des TLB dans le contrôleur de DMA• Peut ainsi gérer des transferts de données consécutives

dans l’espace d’adressage virtuel (plusieurs pages)• Plus souple mais plus compliqué

39/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 40: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Scatter/Gather

Blocs source/destination non forcément consécutifs(exemple dans le cas d’un DMA utilisant des adressesphysiques)Contrôleurs récents : possibilité de copier depuis/versplusieurs blocs non consécutifsAu lieu d’une adresse de source/destination + taille,description de plusieurs blocs (adresse + taille) chaînés

40/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 41: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Plan

Sources / Références

41/42 Télécom ParisTech Guillaume Duc 2015–2016

Page 42: Périphériques, Interruptions & DMA · appelées registres Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique

Sources

Les images du cours sont issues des documentstechniques suivants

• Samsung S3C44B0X RISC Microprocessor Datasheet• ST STM32F100 Datasheet

42/42 Télécom ParisTech Guillaume Duc 2015–2016