La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Un exemple de processeur embarqué Le MSP430

Présentations similaires


Présentation au sujet: "Un exemple de processeur embarqué Le MSP430"— Transcription de la présentation:

1 Un exemple de processeur embarqué Le MSP430
M1Info-ASE

2 Présentation générale
Famille de microcontrôleurs 16bits (Texas Instruments) Orientés très basse consommation (<mW) À partir de 1Kbytes ROM, 128 bytes RAM (approx. $0.5 ) Jusqu'à 60Kbytes ROM, 10Kbytes RAM ($10) Remarque : microcontrôleurs = petit processeur autonome Machine à jeu d’instruction RISC 27 instructions et 7 mode d’adressage Jeu d’instruction orthogonal : tous les modes utilisables avec toutes les instructions Possibilité d’accéder à tous les registres de la machine (PC, registres de status, pointeur de pile, etc.) Utilisation d’un générateur de constante pour remplacer l’adressage immédiat M1Info-ASE

3 MSP430 et basse consommation
Plusieurs mode de fonctionnement Modes « veilles » plus ou moins profonds En le MSP430 consomme 1mW (rappel : P4 ~70W) En mode veille, le MSP430 consomme de 1 à 3 uW (10 ans d’autonomie sur une batterie lithium) M1Info-ASE

4 Application typiques (in english)
Handheld Measurement Air Flow measurement Alcohol meter Barometer Data loggers Emission/Gas analyser Humidity measurement Temperature measurement Weight scales Medical Instruments Blood pressure meter Blood sugar meter Breath measurement EKG system Utility Metering Gas Meter Water Meter Heat Volume Counter Heat Cost Allocation Electricity Meter Meter reading system (RF) Sports equipment Altimeter Bike computer Diving watches Security Glass break sensors Door control Smoke/fire/gas detectors Home environment Air conditioning Control unit Thermostat Boiler control Shutter control Irrigation system White goods (Washing machine,..) Misc Smart card reader Taxi meter Smart Batteries M1Info-ASE

5 Gamme des MSP430 M1Info-ASE

6 Architecture du MSP430 Exécution des instructions prend de 1 à 6 cycles 1 cycle pour les instructions à opérandes registres, 16 registres pour limiter le nombre d’accès mémoire. Instruction de copie mémoire-mémoire Pas de DMA sur ce genre de machine ! M1Info-ASE

7 Jeu d‘instructions Nombre d’instruction réduit pour simplifier la conception Jeu d’instruction RISC mais avec des caractéristiques qui le rapprochent des machines CISC. Trois format d’instructions différents Contrairement à la philosophie RSIC, les instructions du MSP430 ont une taille qui varie de 2 à 6 octets M1Info-ASE

8 Modes d’adressages Modes d’adressages offerts par le MSP430 M1Info-ASE

9 Générateurs de constantes
Sur le DLX, x86, etc. on utilise une opérande immédiate Il faut prévoir un champ immédiat dans le format d’instruction Seule une faible fraction des bits de ce champs est vraiment utilise (les valeurs immédiates sont souvent petites) Le MSP430 utilise un générateur de constantes Permet d’ améliorer la « densité » de code M1Info-ASE

10 Vers des réseaux de capteurs
Réseaux de capteurs+MSP430 reliés par liaison radio Problématiques systèmes distribués + consommation, architecture basse consommation, etc. Telos 4/04 Robust Low Power 250kbps Easy to use Small microcontroller kB code B data Simple, low-power radio kbps ASK EEPROM (32 KB) Simple sensors WeC 99 “Smart Rock” Rene 11/00 Designed for experimentation sensor boards power boards Mica 1/02 NEST open exp. Platform 128 kB code, 4 kB data 40kbps OOK/ASK radio 512 kB Flash Dot 9/01 Demonstrate scale Before we jump in to the technical material, I would like to give you one more bit of context. Mica2 12/02 38.4kbps radio FSK Spec 6/03 “Mote on a chip” Commercial Off The Shelf Components (COTS) M1Info-ASE

11 Les processeurs DSP M1Info-ASE

12 Chaîne de Traitement Numérique
Signal original Grandeur physique Vitesse, Pression, Température Onde électromagnétique… Signal Traité Capteur Adaptation du signal d’entrée Gain + Démodulation Signal analogique G DSP Ports E/S Mem fs CAN CNA Filtre de lissage Filtre anti-repliement Reconstruction du signal Echantillonage Quantification Signal analogique Signal numérique M1Info-ASE

13 Chaîne de Traitement Numérique
Signal numérique Signal = son, onde radio (télécom sans fils), sonar , radar, image (flux de pixels) Représentés par une suite de valeur numériques, arrivant à intervalles régulière (de quelques KEch/s à plusieurs GEch/s) Notion de fréquence d’échantillonnage Fech qui définie la cadence d’arrivée des données Contraintes Le traitement doit être capable de traiter les données à la volée. Charge de calcul importante (convolution, FFT…) Traitements répétitifs (très peu de structures de contrôle) Maîtrise de la précision des calculs (utilisation de virgule fixe) M1Info-ASE

14 On raisonne souvent en # d’opérations MAC (Multiply-ACcumulate)
Traitement typiques x * + pointeur sur x pointeur ++ mémoire MAC Energie Convolution Corrélation Produit scalaire Distance x h pointeur sur x pointeur ++ mémoire pointeur sur h * + MAC On raisonne souvent en # d’opérations MAC (Multiply-ACcumulate) M1Info-ASE

15 Applications des processeurs DSP
Parts de marché vente DSP programmables (2003) M1Info-ASE

16 Applications des DSP Communications Audio Image / vidéo Militaire
Filaire (DSL, cable) Sans fil (cellulaires, télévision numérique, radio numérique) Modem Cryptage Audio Mixage et édition Effets Suppression de bruit Annuleur d’echo Image / vidéo Compression/Codage Composition Traitement Militaire Imagerie radar, sonar… Cryptographie Guidage de missiles Navigation M1Info-ASE

17 Applications des DSP Biomédical Instrumentation Automatisation
Equipements de monitoring Signaux biophysiques ElectroEncéphaloGramme (EEG) ElectroCardioGramme (ECG) Radiographie Instrumentation Analyseurs de spectre Générations de fonctions Analyseurs de régimes transitoires Automatisation Commande de machines Contrôle de moteurs Robots Servomécanismes Electronique Automobile Contrôle du moteur Assistance au freinage Aide à la navigation Commandes vocales M1Info-ASE

18 Constructeurs de processeurs DSP
Chiffres 2002 Source : Forward Concepts Source: société d’étude Forward Concepts revue Electronique, janvier 2004, n°143, dossier « Les processeurs numériques du signal » Parts de marché vente DSP programmables (2003) Environ 17 constructeurs Marché de 8.2 Milliards de $ en 2005 (société d’étude Forward Concepts) M1Info-ASE

19 Deux profils extrêmes d’utilisation
Embarqué Faible coût unitaire A partir de 3€ pièce Faible consommation Part importante de la consommation pour la mémoire Temps réel Sûreté de fonctionnement Non prioritaires: Performance brute Facilité de programmation Haute performance Puissance brute Calcul intensif Parallélisme Multiplication des unités de calcul internes Interfaces multi-DSP Non prioritaires: Coût (jusqu’à 300€) Utilisation mémoire Consommation M1Info-ASE

20 La famille de processeurs DSP Texas Instrument TMS320C5x
M1Info-ASE

21 Présentation générale
Processeur DSP à arithmétique en virgule fixe ALU opérant sur des données 40 bits Multiplieur 17x17 bits avec recadrage programmable de la sortie Décalage bit à bit programmable (barrel shifter) Possibilité de réaliser des opérations en parallèle Plusieurs bus pour l’accès aux données/instructions 1 bus pour l’accès aux instructions du programme 3 bus internes pour l‘accès au données Deux unités de génération d’adresses (avec registres associés) Processeur DSP « moyenne gamme » M1Info-ASE

22 Variantes du TMS320C5x C5409 C5510 100 MIPS @ 100 MHz.
Espace d’adressage Data 64K words. Program 8M words. Mémoire système RAM 16K words. ROM 32K words. 3 ports série 1 timer. C5510 MHz. Espace d’adressage 8 M Words. Mémoire système RAM 160K words. ROM 16K words. 2 timers. M1Info-ASE

23 Architecture du C5x Program A/D Bus (P) Data Read A/D Bus (C)
Data Read A/D Bus (D) PC MULT+ ADD/SUB ALU Unité de génération d’adresses AR0-7 Decodage Registre A Registre B Data Write A/D Bus (E) M1Info-ASE

24 Organisation du Multiplieur/ACcumulateur
Peut réaliser (en 1 cycle) les opérations suivantes : T*M[]+A ou T*M[]+B T*M[]-A ou T*M[]-B M[]*M[]+A ou M[]*M[]+B M[]*M[]-A ou M[]*M[]-B M[]*M[] ou T*M[] Registre T Gestion de l’arrondi Recadrage de virgule Gestion de la saturation (évite les débordements) Accumulation en double précision M1Info-ASE

25 Pipeline d’exécution et accès mémoire
Internal Memory External Memory Program A/D Bus (P) Data Read A/D Bus (D) Data Read A/D Bus (C) Data Write A/D Bus (E) A D Ext’l Mem I/F Memory interactions and the limitation of having a single access to external memory. In the pipeline diagram, the instruction usually “operates”in the execute phase. So it needs operands, which need addresses, which need … working backwards towards prefetch. Remember that the slide says 4 accesses per cycle, not 4 accesses per instruction. P, D, C and E. Jusqu’à 4 accès mémoire par cycle en interne En externe: 1 accès / cycle Jqu’à 16Mo de code programme Etages de Pipeline P F D A R X P F D A R X P - generate program address F - get opcode D - decode instruction A - generate read address R - read operands X - execute M1Info-ASE

26 Accès mémoire et pipeline
Program ROM Data ROM SARAM DARAM P Bus A D D Bus Ext’l Mem I/F C Bus E Bus Pas d’aléas structurels si on respecte les règles ci-desous ROM/SARAM - 1 accès par cycle DARAM accès par cycle M1Info-ASE

27 Modes d’adressages Le C5x offre des modes d’adressages complexes
Permet d’éliminer les instructions de calcul d’adresses M1Info-ASE

28 Instructions parallèles
La plupart des instructions du C5x peuvent exécuter plusieurs opérations en parallèle. On peut ainsi réaliser jusqu’à un accès mémoire, une addition, et une multiplication à chaque cycle. Exemples : LD || MAC[R] LD || MAS[R] ST || MPY ST || MAC[R] ST || MAS[R] ST || ADD ST || SUB ST || LD Lecture et Multiplication/Accumulation Lecture et Multiplication/Soustraction Écriture et Multiplication Ecriture et Multiplication/Accumulation Ecriture et Multiplication/Soustraction Etc.. Lecture et Écriture M1Info-ASE - 28

29 Gestion matérielle des boucles
Pour une exploitation max. de la puissance de calcul On souhaite masquer le coût de gestion des boucles de type for(), en économisant des instructions de saut. Sur le DSP TMS320C5x on dispose des instructions : RPT #n : répète n fois l’instruction suivante Attention : on exécutera donc au total n+1 fois l’instruction qui suit. Pénalité : un cycle de perdu (instruction RPT), mais plus de gestion de boucle à réaliser. RPTBD label : répète un bloc d’instruction Le nombres d’instruction à répéter est stocké dans un autre registre (BRC) de la machine. Pénalité : 4 cycles de perdu (instruction RPT), mais plus de gestion de boucle à réaliser. Instructions très utiles pour le software pipeline M1Info-ASE - 29

30 Exercice Réalisation d’un filtre numérique FIR
Les données xt arrivent avec une cadence de 10MEch/s Pour chaque nouvelle valeur xn calcule une valeur de yn Les coefficients du filtre sont stockés dans un tableau C[128] Les valeurs xt à xt-127 sont stockées dans un tableau x[128] Les valeurs de xn arrivent codées en Q0.15, les coefficients sont codés en Q0.15 et on souhaite conserver le même format pour les sorties yn Complétez la mise en œuvre en C (cf tableau) NB : on souhaite minimiser le nombre de copies mémoire M1Info-ASE

31 Exercice La machine cible : VLIW-DLX simplifié
La machine ne dispose que de 4 slots d’exécutions 1 slot pour les sauts et les opérations entières (sauf multiplication) 2 slots pour la lecture/écriture en mémoire 1 slot pour les multiplications entières Les instr. ont une latence de 1 cycle, sauf la mult (2 cycles) Proposez une MEO sur VLIW Attention, ici on n’ignorera pas la gestion des sauts et des adresses mémoire ! Le programme doit occuper moins de 16 macro-instructions VLIW en mémoire (rappel : 1 macro inst = 4 opérations) M1Info-ASE

32 Exercice On ajoute maintenant les modes d’adressages suivant
{sw|lw} rdest,offs(rb)++ : adressage post-incrémenté (+4) {sw|lw} rdest,offs(rb)-- : adressage post-décrémenté (-4) {sw|lw} rdest,offs(rb)% : adressage circulaire, avec : r22 : contient adresse de début du buffer circulaire r23 : taille du buffer circulaire On accède alors à l’emplacement mem[r22+(rb+offs)%r23] et on met à jour rb=(rb+offs)%r23 {sw|lw} rdest,ofs(rb)++% : adressage circulaire, avec : On accède alors à l’emplacement mem[r22+(rb+4)%r23] et on met à jour rb=(rb+4)%r23 On suppose par ailleurs que l’on dispose sur le slot n°1 d’une ALU qui réalise des calculs en précision étendue (40 bits). M1Info-ASE

33 Exercice On ajoute l’instruction ci-dessous
RPTP label : cette instruction va répéter le code compris entre l’instruction suivant immédiatement le RPTB et le label opérande. Le nombre de répétitions est stocké dans le registre r24 Reprendre la question précédente M1Info-ASE

34 Exercice Si on accumule directement les produits partiels xn-i*cn, on risque d’avoir un débordement passager au cours du calcul de yi On est donc contraints de faire un recadrage vers la droite pour augmenter le nombre de bits alloués à la partie entière du codage codage Qm,n de l’accumulateur M1Info-ASE

35 La famille de processeurs DSP Texas Instrument TMS320C6xx
M1Info-ASE

36 Exemple du TMS320C62x Famille de processeurs VLIW de chez Texas Instrument Orientés pour le traitement de signal DSP processor (DSP = Digital signal Processor) Haut de gamme (système télécom/multimédia) M1Info-ASE

37 Exemple du TMS320C62x Machine VLIW à 8 slots
L units: arithmetic, compare, and logical ops S units: arithmetic, logical, branches, constant generation M units: multiplies D units: address generation / memory accesses File de registres partitionnée Les unités L1,S1,M1 n’ accèdent qu’à A0-15, L1,S2,M2 n’accèdent qu’à A0-15 Les unités D1 et D2 accèdent aux deux files B Registres A0-A15 Registres B0-B15 Forward Unités d’exécution L1 S1 M1 D1 L2 S2 M2 D2 M1Info-ASE

38 8 sous-instructions de 32 bits
Exemple du TMS320C62x Instruction de 256 bits 8 sous-instructions de 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits L1 M2 D2 S2 L2 S1 + x M1 D1 M1Info-ASE

39 Encodage des instructions
Code des machine VLIW utilise beaucoup de nop Mauvais pour la taille de programme (coût mémoire), pour l’énergie (transferts de 256 bits/ cycle), pour le cache, etc. Le C6x utilise un mécanisme de compression de code Mécanisme de compression basé sur la notion de paquet Un bit de chaque instruction indique si l’instruction suivante peut-être exécutée en parallèle (0 = “EOP”) Une instruction dans un slot peut ainsi être acheminée vers n’importe quelle unité fonctionnelle. M1Info-ASE

40 Exemple Exemple Limitations 1 1 1 1 1 1 1 1 1 1 1 1
Un paquet doit « tenir » sur 8x32 bits Les combinaisons d’instruction encodées dans un paquets doivent respecter les contraintes de ressources d’exécution Instruction VLIW contenant trois « paquets » 1 1 1 1 1 1 1 1 1 1 1 Les instruction de ces paquets sont exécutées séquentiellement. Dans cet exemple on a ainsi économisé 66% de mémoire 1 M1Info-ASE

41 Pipeline d’exécution du C6x
11 étages de pipeline ! PG generate program address PS program address send PW program memory access PR fetch reaches CPU boundary DP instruction dispatch DC instruction decode E1 execute 1 E2 execute 2 E3 execute 3 E4 execute 4 E5 execute 5 M1Info-ASE

42 Gestions des aléas de données
Pas de gestion des aléas de données Le programmeur doit s’assurer de l’absence d’aléas en prenant en compte les latences d’exécution des opérations. Multiply – 1 delay slot Load – 4 delay slots Branch – 5 delay slots B5 := B3 * B2 B5 := B3 * B2 B7 := B5 + B1 B7 := B5 + B1 Correct Incorrect M1Info-ASE

43 Exécution prédiquée Principe Intérêt
On stocke dans un registre de condition le résultat d’une opération de comparaison. On utiliser ensuite la valeur de ce registre pour conditionner l’exécution d’une ou plusieurs instructions. Intérêt Limiter l’utilisation d’instructions de branchement, car sur le C6x, ces branchements on un delay slot de 5 ! cmp B3, B4 bge L2 <nop> B3 := B3+1 b DONE L2: B4 := B4+1 DONE: cmplt B3, B4 -> B0 [B0] B3 := B3+1 [!B0] B4 := B4+1 if (B3<B4) B3++ else B4++ Avec l’exécution prédiquée, on peut exécuter les deux branches en parallèle ! Exemple Avec branchements M1Info-ASE

44 Liste des MMR M1Info-ASE Addr. Name (Hex) Description
IMR 0000 Interrupt Mask Register IFR 0001 Interrupt Flag Register Reserved ST Status 0 Register ST Status 1 Register AL 0008 A accumulator low (A[15:00]) AH 0009 A accumulator high (A[31:16]) AG 000A A accumulator guard (A[39:32]) BL 000B B accumulator low (B[15:00]) BH 000C B accumulator high (B[31:16]) BG 000D B accumulator guard (B[39:32]) T 000E Temporary Register TRN 000F Transition Register Addr. Name (Hex) Description AR Address Register 0 AR Address Register 1 AR Address Register 2 AR Address Register 3 AR Address Register 4 AR Address Register 5 AR Address Register 6 AR Address Register 7 SP 0018 Stack Pointer Register BK 0019 Circular Size Register BRC 001A Block Repeat Counter RSA 001B Block Repeat Start Address REA 001C Block Repeat End Address PMST 001D PMST Register E-01F Reserved M1Info-ASE

45 Registres de Travail M1Info-ASE IMR Registre Masque d’Interruption
TREG Registre Temporaire IFR Registre de Statut d’Interruption TRN Registre de Transition ST0 Registre d’Etat 0 AR0 Registre Auxiliaire 0 (Index) ST1 Registre d’Etat 1 AR1-7 Registres Auxiliaires 1 à 7 PMST Registre de Contrôle de la Mémoire BK Registre d’Addressage Circulaire AL Accumulateur A (0-15) RC Compteur Répétion 1 Instruction AH Accumulateur A (16-31) RSA Première Addresse Répétition Bloc AG Accumulateur A (32-39) REA Dernière Addresse Répétition Bloc BRC Compteur Répétion d’un Bloc BL Accumulateur B (0-15) BH Accumulateur B (16-31) TIM Registre du Timer BG Accumulateur B (32-39) PRD Compteur de la Période de Timer TCR Registre de Contrôle du Timer SP Registre Pointeur de Pile M1Info-ASE

46 Adressage de la mémoire
Adressage immédiat #k Adressage absolu Registres MMR M1Info-ASE

47 Adressage immédiat : #k et #lk
L’instruction contient la valeur de l’opérande Addressage court #k Instruction complète codée sur un mot Entier codé sur 3, 5, 8, ou 9 bits Adressage long #lk L’instruction prend plus d’un mot Entier long codé sur 16 bits Exemple LD #87, A ; L’accumulateur A est chargé avec l’entier court k=87=75h ; instruction codée sur un mot de 16 bits LD #1F4A, AR1 ; Le registre AR1 est chargé avec l’entier long lk=1F4Ah ; instruction codé sur deux mots de 16 bits M1Info-ASE

48 Adressage absolu : pmad, dmad, PA, *(lk)
L’instruction contient l’adresse où chercher la valeur Plusieurs notations selon le type d’adresse mémoire données à l’adresse dmad mémoire programme à l’adresse pmad ports d’entrée/sortie d’adresse PA mémoire données à l’adresse lk M1Info-ASE

49 Adressage absolu Certaines instructions de transferts entre mémoires exigent l’adressage absolu : (voir la documentation pour savoir lesquelles et pour quel opérande) MVKD 105h, *AR5 ; Transfert de la mémoire donnée à l’adresse dmad=105h ; vers la mémoire donnée pointée par AR5 ; dm(AR5) ← dm(105h) MVDP *AR5, 243h ; Transfert de la mémoire données pointée par AR5 ; vers la mémoire programme à l’adresse pmad=243h ; pm(243h) ← dm(AR5) PORTR 10h, *AR5 ; Transfert depuis le port d’entrée/sorties à l’adresse PA=10h ; vers la mémoire donnée pointée par AR5 ; dm(AR5) ← portio(10h) dmad pmad PA En remplacement de l’adressage indirect à un seul opérande : LD *(105h), A ; Charge depuis la mémoire donnée à l’adresse lk=105h ; vers l’accumulateur ; A ← dm(105h) *(lk) M1Info-ASE

50 Les registres mappés en mémoire (MMR = Memory Mapped Registers)
Certains registres sont accessibles de façon spécifique (accumulateur / ARx …) La plupart des registres sont mappés en mémoire, à la page 0. L’accès à ces MMR se fait grâce aux instructions suivantes : Exemples: STM #0, BK ; mettre 0 dans le registre BK STM #100h, AR2 : mettre l'adresse 100h dans le registre AR2 LDM, STLM MMR « Acc STM # ® MMR PSHM, POPM MMR « Stack MVDM, MVMD MMR « Dmem MVMM AR, SP « AR, SP 0000h 0060h 007Fh MMRs Scratch Permet aussi d’accéder à une zone « scratch » pour y stocker des données temporaires M1Info-ASE

51 Sauvegarde des MMR dans la pile
SubProg: PSHM PMST ;Sauvegarde de PMST dans la pile PSHM ST0 ;Sauvegarde de ST0 dans la pile PSHM ST1 ;Sauvegarde de ST1 dans la pile ….. sous-programme POP ST1 ;Restitution de ST1 POP ST0 ;Restitution de ST0 POP PMST ;Restitution de PMST RET ;Retour au programme principal Adresse Contenu SP 1201 ST1 SP 1202 ST0 SP 1203 PMST SP 1204 PC Sauvegarde du contexte lors de l'appel d'un sous-programme, afin que les registres modifiés par le sous-programme puissent être restitués avant le retour au programme principal. M1Info-ASE

52 Liste des MMR M1Info-ASE Addr. Name (Hex) Description
IMR 0000 Interrupt Mask Register IFR 0001 Interrupt Flag Register Reserved ST Status 0 Register ST Status 1 Register AL 0008 A accumulator low (A[15:00]) AH 0009 A accumulator high (A[31:16]) AG 000A A accumulator guard (A[39:32]) BL 000B B accumulator low (B[15:00]) BH 000C B accumulator high (B[31:16]) BG 000D B accumulator guard (B[39:32]) T 000E Temporary Register TRN 000F Transition Register Addr. Name (Hex) Description AR Address Register 0 AR Address Register 1 AR Address Register 2 AR Address Register 3 AR Address Register 4 AR Address Register 5 AR Address Register 6 AR Address Register 7 SP 0018 Stack Pointer Register BK 0019 Circular Size Register BRC 001A Block Repeat Counter RSA 001B Block Repeat Start Address REA 001C Block Repeat End Address PMST 001D PMST Register E-01F Reserved M1Info-ASE

53 Registres de Travail M1Info-ASE IMR Registre Masque d’Interruption
TREG Registre Temporaire IFR Registre de Statut d’Interruption TRN Registre de Transition ST0 Registre d’Etat 0 AR0 Registre Auxiliaire 0 (Index) ST1 Registre d’Etat 1 AR1-7 Registres Auxiliaires 1 à 7 PMST Registre de Contrôle de la Mémoire BK Registre d’Addressage Circulaire AL Accumulateur A (0-15) RC Compteur Répétion 1 Instruction AH Accumulateur A (16-31) RSA Première Addresse Répétition Bloc AG Accumulateur A (32-39) REA Dernière Addresse Répétition Bloc BRC Compteur Répétion d’un Bloc BL Accumulateur B (0-15) BH Accumulateur B (16-31) TIM Registre du Timer BG Accumulateur B (32-39) PRD Compteur de la Période de Timer TCR Registre de Contrôle du Timer SP Registre Pointeur de Pile M1Info-ASE

54 Le Registre d’état ST0 M1Info-ASE ST0 Registre d’Etat 0 15-13 12 11 10
9 8-0 ARP TC C OVA OVB DP Pointeur de Page Drapeau de saturation de B Drapeau de saturation de A Bit de retenue (Carry) Résultat logique (Test Carry) Pointeur de Registre aux. M1Info-ASE

55 Le Registre d’état ST1 Pour les bits de mode de fonctionnement
Registre d’Etat 1 15 14 13 12 11 10 9 8 7 6 5 4-0 FRT CPL XF HM INTM OVM SXM C16 FRC CMP Mode de décalage de l’accumulateur ASM Mode double présicion 16 ou 40 bits Mode d’extension de signe Autorisation globale des interruptions Mode de saturation Active le bit de sortie exterieur Autorise le mode de répétition M1Info-ASE

56 Adressage de la mémoire
Adressage indirect *ARx M1Info-ASE

57 Adressage indirect : *ARx
L’instruction contient un numéro de registre auxiliaire ARx Ce registre contient l’adresse en mémoire données Analogue aux pointeurs en C Possibilité de modifier la valeur du registre MPY *AR4, *AR3, A ; Multiplication de la donnée à l’addresse contenue dans AR4 ; par celle pointée par AR3 et stockage du résultat en A ; On remarque l’accès simultané à deux données ; A ← dm(AR4) × dm(AR3) M1Info-ASE

58 ARAU (Unité d’adressage indirect)
Unités de calcul spécialisées Registres d'adressage Ecriture sur les bus d'adresse des bus C, D et E M1Info-ASE

59 Adressage indirect avec incrément *ARx+, et *ARx+0
Post-incrémentation : *ARx+ , *AR- Préincrémentation : *+ARx Incrémenation par AR0 : *ARx+0 La modification du registre est réalisé par les générateurs d’addresses ou par des unités arithmétiques associées aux registres MPY *AR4+, *AR3+, A ; Multiplication de la donnée pointée par AR4 ; par celle pointée par AR3 et stockage du résultat en A ; (AR4 et AR3 sont incrémentés après l’exécution) ; A ← dm(AR4) × dm(AR3); AR4 ← AR4+1; AR3 ← AR3+1 LD *AR4+0, A ; Chargement de la donnée pointée par AR4 dans l’accu A ; AR4 est incrémenté de la valeur de AR0 après exécution ; A ← dm(AR4) + dm(AR3); AR4 ← AR4+AR0 M1Info-ASE

60 Modes de Répétition (zero overhead loops)
Répétition d’une Instruction (N) fois RPTZ A, #54 ;Mise à 0 de A et RC  54 MAC *AR2+, *AR3+, A ;La valeur pointée par ;AR2 est additionnée à la ;valeur pointée par AR3, ;55 fois RC N - 1 Avant exécution RPT ou RPTZ Répétition d’un Bloc d’Instructions (N + 1) fois STM #54, BRC ;Répétition 55 fois RPTB endblk-1 ;RSA est chargé avec ;PC+2 et REA est chargé ;avec endblk-1 MPY *AR2+0%, A LMS *AR3, *AR2 ST A, *AR3+ endblk : STH A, *AR3 BRC N Première Adresse RSA Dernière Adresse REA Instructions RPTB et RPTBD M1Info-ASE

61 Déplacement de données
Déplacement de Mémoire à Mémoire (donnée  donnée) ; Transfert de 1024 mots de l’espace donnée 3000h à l’adresse donnée 1000h Debut: STM #3000h, AR2 ;AR2 pointe sur la zone de départ STM #1000h, AR3 ;AR3 pointe sur la zone de arrivée RPT #1023 ;Répétition 1024 fois MVDD *AR2+, *AR3+ ;Transfert de la mémoire pointée par AR2 ;vers la mémoire pointée par AR3 Déplacement de Mémoire à Mémoire (donnée  programme) ; Transfert de 1024 mots de l’espace donnée 3000h à l’adresse programme 1000h Debut: STM #3000h, AR1 ;AR1 pointe sur la zone de départ RPT #1023 ;Répétition 1024 fois MVDD *AR1+, 1000h ;Transfert de la mémoire pointée par AR1 ;vers l’adresse mémoire programme 1000h ;l’adresse est auto-incrémentée dans le ;mode RPT M1Info-ASE

62 Adressage indirect circulaire : *ARx+%, *ARx+0%
ARx est incrémenté modulo BK Le registre BK : Stocke la taille N du buffer circulaire Est initialisé avant emploi Il peut y avoir plusieurs tampons circulaires simultanés, à condition qu’ils aient la même taille Exemple: LD #300h, AR2 ; Le Registre AR2 est chargé avec l’addresse de départ STM #3, BK ; Le registre BK (L) est chargé pour l’addresage modulo STM #1, AR0 ; Le registre AR0 (M) est chargé avec le pas de modification ST #0, A ; Initialise l’accumulateur: A ← 0 ADD *AR2+0%, A ; Additionne la donnée pointée par AR2 à A, ; post-incrémente AR2 modulo BK : AR2 (AR2 + AR0) % BK ; i.e. AR2 301h ADD *AR2+0%, A ; idem, puis AR2 ← 302h ADD *AR2+0%, A ; idem, puis AR2 ← 300h etc… M1Info-ASE

63 Adressage indirect circulaire : *ARx%
Contrainte sur l’adresse de départ du tampon: Si N prend n bits pour être codé en binaire, les n bits de poids faible de l’adresse de départ doivent être nuls Exemples: Pour N=32 =26, adresse de départ = xxxx Pour N=3 ≤22, adresse de départ = xxxxx002 M1Info-ASE

64 Boucle matérielle et adressage circulaire : application au filtre RIF
N .set 32 STM #(adr_x), AR2 STM #(coef)+N-1, AR3 STM #(adr_y), AR5 STM #N, BK STM #1, AR0 RPTZ A, #N-1 MAC *AR2+0%, *AR3-, A STH A, *AR5 adr_x x(n-N+d-1) Adresses Contenu …… adr_x + d -1 x(n-N+1) adr_x + d x(n) adr_x + N x(n-N+d) Mémoire Données coef h(N-1) Adresses Contenu coef + 1 h(N-2) coef + 2 h(N-3) …… coef + N-1 h(0) Mémoire Programme les log2(N) bits de poids faible de adr_x doivent être nuls M1Info-ASE

65 Adressage Bit-Reverse
Ce type d’adressage est utilisé dans le calcul de l’algorithme de la FFT, pour lequel est nécessaire un accès en “papillon” (symétrie de l’adresse binaire) 1 Ordre naturel Bit-Reverse N = 16 1 Exemple: LD #4, AR0 ; Adressage pour une FFT sur 8 bits (N/2) LD *AR2+0B, A ; Le accumulateur A est chargé avec la donnée pointée par ; AR2, lequel est post-incrémenté en mode bit-reverse Pour que l’opération soit correcte, il faut que la première adresse du tableau soit un multiple de N M1Info-ASE

66 Adressage indirect avec offset
Avec offset : *ARx(lk) l’adresse utilisée est ARx+lk Pré-incrémenté avec offset : *+ARx(lk) Adressage absolu : *(lk) L’adresse est spécifiée directement, sans passer par un registre auxiliaire: Adresse effective: 0+lk Voir transparent correspondant M1Info-ASE

67 Récapitulatif adressage indirect
M1Info-ASE

68 Adressage indirect à deux opérandes
Pour une instruction a deux opérandes à adressage indirect, il y a des limitations: seuls quelques types d’adressage sont disponibles registres utilisables limités (AR 2 à 5) Cas d’une instruction à deux opérandes Xmem et Ymem: OPCODE Xmem, Ymem, … exemple: MPY *AR4+%, *AR3, A n’est pas valide M1Info-ASE

69 Adressage par l’accumulateur
L’instruction spécifie explicitement ce mode Adresse mémoire prise dans l'accumulateur A Adressage indirect, en utilisant A au lieu d'un ARx Prend seulement la partie basse de l’accumulateur : les 16 bits de poids faible (15-0) Peu utilisé Exemple READA *AR2 ; Transfert entre la mémoire programme pointé par A(15-0) ; vers la mémoire de données pointée par AR2 ; dm(AR2) ← pm(A) WRITA *AR3 ; Transfert de la mémoire de données pointée par AR3 ; vers la mémoire pointée par A(15-0) ; pm(A) ← dm(AR3) M1Info-ASE

70 Adressage de la mémoire
Adressage M1Info-ASE

71 Adressage direct : @(offset)
L’instruction contient un décalage (offset) par rapport à une adresse de référence Dans les deux cas, seuls 7 bits d’adresse (0..128) sont spécifiés dans l’instruction. Mode paginé (CPL=0) Le registre DP contient un numéro de page sur 9 bits L’offset est relatif au début de la page Chaque page contient 128 mots Mode “compilateur” (CPL=1) Le registre SP contient le pointeur de pile L’offset est relatif au début de pile M1Info-ASE

72 Adressage direct par page (DP)
DP = 2, page 2 Offset = 1 Adresse = 0101 en hexadecimal Mode activé par: RSBX CPL M1Info-ASE

73 Adressage direct par page (DP)
DP relative, CPL = 0 Opcode I=0 dma 15 - 8 7 6 - 0 Instruction DP register 9-bit DP Address 9-bit DP 7-bit dma DP=2, CPL=0 LD 27h, A ; Charge A avec le contenu de l’addresse 127h=(80h*DP)+27h Attention, ne pas confondre avec LD #27h, A ; Charge A avec la valeur #27h M1Info-ASE

74 Adressage direct dans la pile (SP)
Utilisé par le compilateur C Utile pour stocker des données dans la pile Mode activé par: SSBX CPL M1Info-ASE

75 Adressage direct dans la pile (SP)
SP relative, CPL = 1 SP Register 16-bit Stack Pointer + 7-bit dma Address 16-bit Data Memory Address SP=FF02h, CPL=1 LD 27h, A ; Charge A avec le contenu de l’addresse FF29h=SP+27h Attention, ne pas confondre avec LD #27h, A ; Charge A avec la valeur #27h M1Info-ASE

76 Exercice sur l’adressage
Au départ: DP=0 DP=4 DP=6 addr val addr val addr val CPL= CMPT= M1Info-ASE

77 Annexe : assembleur du TMS320C54xx
M1Info-ASE

78 L’Assembleur Instruction Commentaire Etiquette Opérande M1Info-ASE
Les instructions sont codées sur une ligne, incluant une étiquette (optionnelle) Instruction Commentaire Start : LD #540, AR2 ; Premier opérande en AR2 LD #180, AR3 ; Deuxième opérande en AR3 MAC *AR2, *AR3, A ; Multiplication des opérandes Etiquette Opérande M1Info-ASE

79 Types d’instructions I - Calcul II - Mémoire
Opérations arithmétiques Addition, soustraction Multiplication Opérations unaires Opérations spéciales Opérations logiques AND, OR, … Tests Décalage II - Mémoire Chargement et sauvegarde Déplacement de données de mémoire à mémoire III – Contrôle du programme Branchement Répétition Appels et Retours Sous-programmes Interruptions Manipulation de la pile Divers NOP IV – Spécial Instructions parallèles M1Info-ASE

80 Opérations Arithmétiques I
ADD, SUB, ADDC, SUBC, ADDM, SUBM, ADDS, SUBS : Addition et Soustraction à l’Accumulateur Syntaxe: ADD Smem, src ; src = Smem + src SUB Smem, TS, src ; src = src - Smem*2TS ADD Smem, 16, src, dst ; dst = Smem*216 + src SUB Smem, n, src, dst ; dst = src - Smem*2n ADD #N, 16, src, dst ; dst = N*216 + src SUB Xmem, Ymem, dst ; dst = src - (Xmem+Ymem)*216 ADD src, ASM, dst ; dst = (src) ou (dst + src* 2ASM) ADDM #N, Smem ; Smem = N + Smem Exemple: ADD *AR2+, *AR3-, B ; Après accès aux deux mémoires, ; AR2 sera incrémenté et AR3 décrémenté M1Info-ASE

81 Opérations Arithmétiques II
MPY, MPYR, SQUR, MAC, MACD, MACP, SQURA, SQURS: Multiplications Syntaxe: MPY Xmem, Ymem, dst ; dst = Xmem*Ymem (sans arrondi) MPYR Xmem, Ymem, dst ; dst = rnd(Xmem*Ymem) (arrondi) SQUR Smem, dst ; dst = Smem*Smem MAC[R] Xmem, Ymem, src, dst ; dst = src + Xmem*Ymem MACP Smem, Padd, src ; src = src + Smem*prog(Padd) ; T = Smem MACD Smem, Padd, src ; idem à MACP avec recopie: ; = Smem SQURA Smem, src ; src = src + (Smem*Smem) SQURS Smem, src ; src = src - (Smem*Smem) M1Info-ASE

82 Opérations Arithmétiques III
ABS, CMPL, NEG, MAX, MIN, RND, SAT, EXP, NORM : Opérations unaires Syntaxe: ABS src, dst ; Calcule la valeur absolue de l’accumulateur src CMPL src, dst ; Complément à 1 de l’accumulateur src NEG src, dst ; Complément à 2 de l’accumulateur src MAX dst ; Maximum des deux accumulateurs MIN dst ; Minimum des deux accumulateurs RND src, dst ; Arrondi de l’accumulateur src par ajout de 215 SAT src ; Saturation de src sur 32 bits, indépendamment de OVM EXP src ; Calcul de l’exposant de l’accumulateur src. ; L’exposant est sauvé dans T NORM src, dst ; Normalise l’accumulateur src par un décalage de T bits ; Utilisé après EXP, converti du format fixe au format flottant M1Info-ASE

83 Opérations Arithmétiques Spéciales
ABDST, SQDST, FIRS, LMS, POLY, DELAY Syntaxe: ABDST Xmem, Ymem ; Répétée, permet de calculer la distance L1 ; entre deux vecteurs commençant en Xmem et Ymem SQDST Xmem, Ymem ; Répétée, permet de calculer la distance L2 ; entre deux vecteurs commençant en Xmem et Ymem FIRS Xmem, Ymem, Padd ; Implémentation de filtres FIR à coefficients symétriques LMS Xmem, Ymem ; Instruction utilisés dans la mise à jour des coefficients LMS POLY Smem ; Utilisée pour calculer la valeur d’un polynôme factorisé ; défini en Smem DELAY Smem ; Recopie le contenu de la mémoire pointée par Smem dans ; la case mémoire suivante: M1Info-ASE

84 Opérations Logiques M1Info-ASE Syntaxe:
AND, OR, XOR, ANDM, ORM, XORM : Et, Ou et Or exclusif Syntaxe: AND Smem, src ; src = Smem.AND.src OR #N, n, src, dst ; dst = N*2n.OR.src XOR src, n, dst ; dst = src*2n.XOR.src ANDM #N, Smem ; Smem = N.AND.Smem Exemple: ANDM 32h+, AR3 ; ET logique de AR3 avec 32h M1Info-ASE

85 Instructions de Décalage
ROL, ROLTC, ROR, SFTA, SFTC, SFTL : Rotations et décalages Syntaxe: ROL src, dst ; Rotation à gauche de l’accumulateur src ROLTC src ; Rotation à gauche de src, TC entre dans le bit 0 ROR src ; Rotation à droite de l’accumulateur src SFTA src, n, dst ; Décalage de src selon n = {-16, …, 15} SFTC src ; Décalage  de un bit si src(31)src(30) = 0 SFTL src, n, dst ; Décalage logique de l’accumulateur src M1Info-ASE

86 Instructions de Décalage
ROL, ROLTC, ROR, SFTA, SFTC, SFTL : Rotations et décalages AL AH AG C 31 ROL Décalage à gauche n fois AL AH AG TC 31 ROLTC C SFTA (n > 0) 39-n AG AH AL C AL AH AG C 31-n -n-1 SFTL (n < 0) Décalage à droite n fois AL AH AG C 31 ROR M1Info-ASE

87 Instructions de Test M1Info-ASE Syntaxe:
BIT, BITF, BITT, CMPM, CMPR Syntaxe: BIT Xmem, bitc ; Test bit, bitc = {0,..,15}, TC = Xmem(15-BITC) BITF Smem, #N ; N est un masque. Si (Smem. ET .N) = 0 TC = 0 ; sinon TC = 1 BITF Smem ; Identique à BIT, le numéro du bit est donnée par ; 15 – T(3-0) CMPM Smem, #N ; Si Smem = #N alors TC = 1 sinon TC = 0 CMPR CC, ARx ; Comparaison entre le registre auxiliaire AR0 et ARx Si CC = 0 Test si ARx = AR0 Si CC = 1 Test si ARx < AR0 Si CC = 2 Test si ARx > AR0 Si CC = 3 Test si ARx ≠ AR0 Si la condition est vraie TC = 1 sinon TC = 0 M1Info-ASE

88 Instructions de Chargement et Sauvegarde
LD, DLD, LDM, LDU, DST, ST, STH, STL, STM, CMPS Syntaxe: DLD Lmem, dst ; Charge dst une donnée (32 bits) situe en Lmem LD Smem, n, dst ; Charge dst après décalage de la donnée Smem LD #N, dst ; dst = #N LDM Reg, dst ; dst = Reg DST src, Lmem ; Le contenu de src est stocké en mémoire Lmem STM #N, Mem ; La valeur littérale N est stocké en mémoire CMPS src, Smem ; Si srcH > srcL, Smem = srcH sinon Smem = srcL M1Info-ASE

89 Déplacement de données de Mémoire à Mémoire
MVDD, MVKD, MVDP, MVPD, PORTR, PORTW, READA, WRITA Syntaxe: MVDD Xmem, Ymem ; Valeur pointée par Xmem  à l’addresse en Ymem MVKD Dadd, Smem ; Contenu de Dadd  à l’addresse Smem MVDP Smem, Padd ; Contenu pointé par Smem  à l’addresse en Padd MVPD Padd, Smem ; Contenu pointé par Padd  à l’addresse en Smem PORTR PA, Smem ; La valeur du port PA  à l’addresse en Smem PORTW Smem, PA ; Contenu pointé par Smem  au port PA READA Smem ; Contenu pointé par AL  à l’addresse en Smem WRITA Smem ; Contenu pointé par Smem  à l’addresse en AL M1Info-ASE

90 Instructions diverses de Contrôle
IDLE, NOP, RESET, RSBX, SSBX, XC Syntaxe: IDLE k ; Le programme s’arrête jusqu’à l’arrivée d’une interruption ; ou d’un RESET, k definit le mode d’ettente NOP ; Aucune opération n’est efectuée, seul PC = PC + 1 RESET ; Réinitialise le processeur (reset soft) RSBX n, sbit ; n (0,1) définit le registre d’état STn, sbit (4 bits) numéro de ; bit à être mis à 0 SSBX n, sbit ; n (0,1) définit le registre d’état STn, sbit (4 bits) numéro de ; bit à être mis à 1 XC n, cond ; Si cond se verifie, les n (1 ou 2) instructions sont exécutées ; sinon les n instructions sont remplacées par n NOP A = 0 AEQ B = 0 BEQ A ≠ 0 ANEQ B ≠ 0 BNEQ A < 0 ALT A  0 ALEQ A > 0 AGT A  0 AGEQ B < 0 BLT B  0 BLEQ B > 0 BGT B  0 BGEQ C = 0 NC C = 1 C AOV = 0 ANOV AOV = 1 AOV BIO = 0 BIO BIO = 1 NBIO BOV = 0 BNOV BOV = 1 BOV M1Info-ASE

91 Instructions de Répétition
RPT, RPTB[D], RPTZ Syntaxe: RPT Smem ; L’instruction suivante est répétée l’equivalent à la valeur ; contenue en Smem RPT #k ; k constante en 8 ou 16 bits RPTB[D] Padd RPTZ dst, #k ; L’accumulateur dst est mis à 0 et l’instruction suivante est ; répétée k+1 fois Exemple: RPT #4 MVDK 1000h, *AR1+ ; Si AR1 = 2000h, les 5 mots de l’addresse 1000h ; à la 1000h seront recopiés en 2000h jusqu’à 2004h ; respectivement M1Info-ASE

92 Branchement M1Info-ASE Syntaxe:
B, BD, BACC, BACCD, BANZ, BANZD, BC, BCD Syntaxe: B Padd ; PC  Padd, branchement immédiat B[D] Padd ; PC  Padd, branchement retardé de 1 ou deux instructions BACC src ; La partie basse de src devient l’addresse de branchement BACC[D] src ; Branchement antérieur retardé BANZ[D] Padd, ARx ; Le branchement se réalise si ARx ≠ 0 BC[D] Padd, cond ; Le branchement se réalise si cond se vérifie Exemple: BC 2000h, TC, NC, NBIO ; Branchement en 2000h si TC = 1, C = 0, ; BIO = 1 BC 2000h, AGT ; Branchement en 2000h si A > 0 M1Info-ASE

93 Appel et Retour de Sous-Programmes
CALA, CALAD, CALL, CALLD, CC, CCD, INTR, TRAP, RET, RETD, RETE, RETED Syntaxe: CALA[D] src ; PC est incrémenté puis sauvé dans la pile. PC est ; chargé avec les 16 bits de poids faible de src CALL[D] Padd ; PC  Padd, après sauvegarde dans la pile CC[D] Padd, cond ; PC  Padd si cond se vérifie INTR k ; k détermine la localisation du vecteur d’interruption ; k = 0,.., 31; TRAP k ; Identique a INTR mais elle n’est pas masquable RET[D] ; Sert à terminer l’exécution d’un sous-programme RETE[D] ; Idem. pour les interruptions RETF[D] ; Idem. RC[D] cond ; Retourne si cond est vérifiée M1Info-ASE

94 Manipulation de la Pile
FRAME, POPD, POPM, PSHD, PSHM Syntaxe: FRAME K ; Offset immédiat pointeur de pile, k = -128,.., 127; ; SP = SP + k POPD Smem ; Le mot en haut de la pile est copié dans la case ; mémoire donnée définie par l’addresse Smem, puis ; SP est incrémenté POPM MMR ; Le mot en haut de la pile est copié dans le registre ; défini par MMR , puis SP est incrémenté PSHD Smem ; SP est décrémenté, puis la donnée définie par ; l’addresse Smem est copiée dans la pile PSHM MMR ; SP est décrémenté, puis le registre définie par ; MMR est copié dans la pile M1Info-ASE

95 Instructions Parallèles
ST||ADD, ST||LD, ST||MAC[R], ST||MAS[R], ST||MPY, ST||SUB, LD||MAC[R], LD||MAS[R] Syntaxe: ST src, Ymem || ADD Xmem, dst ; Sauvegarde de l’accumulateur et ; addition en parallèle ST src, Ymem || LD Xmem, dst ; Sauvegarde de l’accumulateur et ; chargement en parallèle ST src, Ymem || MAC[R] Xmem, dst ; Sauvegarde de l’accumulateur et ; multiplication/addition avec ; arrondí optionnel en parallèle ST src, Ymem || MPY Xmem, dst ; Sauvegarde de l’accumulateur et ; multiplication en parallèle LD Xmem, dst || MAS[R] Ymem, dst ; Chargement de l’accumulateur et ; multiplication/soustraction avec ; arrondí optionnel en parallèle M1Info-ASE


Télécharger ppt "Un exemple de processeur embarqué Le MSP430"

Présentations similaires


Annonces Google