Un exemple de processeur embarqué Le MSP430

Slides:



Advertisements
Présentations similaires
CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
Advertisements

TP 1 BIS Programmation structurée à l’aide de fonctions (FC) et de bloc fonctionnels (FB)
Comment utiliser le débogueur de Visual Studio /8/2015 INF145 1 Créé par Julien Galarneau Allaire, révisé par Eric Thé S.E.G.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille - mai Les microcontrôleurs PIC.
Formation Réseaux et Télécommunication Master 1 Matière : DSP & FPGA Par: ATOUI Hamza.
Mode noyau Appels Systèmes Interruptions Grégory Seront Institut Paul Lambin
UE2 - M22 Licence acoustique
ARCHITECTURE RESEAUX.
Acquisition Rapide Multivoies
La technologie des mémoires
CEMTEC Comment scénariser l’éclairage d’un escalier ?
La gestion des co-produits (niveau de version : C)
Technologie wifi.
LES TABLEAUX EN JAVA.
Métrologie Document de reference : “Incertitude en Science de la Nature” Cours : 360-ESZ-03 “Logiciels appliqués en sciences” La métrologie est la « science.
Ajouter le code dans une page html
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Représentation de l'information en binaire:
L’Instruction de Test Alternatif
Plan du cours Introduction : création de circuits
Les composants informatiques
Javadoc et débogueur Semaine 03 Version A16.
Les unités spécifiques des DSP
Bases de programmation en Python
Architecture de machines Le microprocesseur
Fonctions logiques et algèbre booléenne
Plans d’expériences: Plans factoriels
Virtualisation d’applications mobiles dans un réseau de Cloudlets
Algorithmique & Langage C
ECHANTILLONNAGE.
Plan du cours Introduction : création de circuits
Mesure de température par radiométrie photothermique
Semaine #4 INF130 par Frédérick Henri.
Codification et Représentation de l’information
Piloter un robot mbot à distance avec retour vidéo
Traitement du Signal TC 1 6. Architecture des DSP 1. Caractéristiques générales 2. Unités de calcul 4. Architecture mémoire 5. Architecture pipeline.
Traitement du Signal TC 1 6. Architecture des DSP 1. Caractéristiques générales 2. Unités de calcul 4. Architecture mémoire 5. Architecture pipeline.
1ers pas des utilisateurs migrés
Instructions et micro-instructions
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
1.2 dénombrement cours 2.
PROGRAMMATION ET ENSEIGNEMENT
Architecture de machines Le microprocesseur Cours
Bus et adressage GIF-1001: Ordinateurs: Structure et Applications
Composantes principales des ordinateurs
La Station de pompage.
Révision du format des données
Assembleur, Compilateur et Éditeur de Liens
NUMERATION et REPRESENTATION DES NOMBRES
B.Shishedjiev - Informatique
Introduction aux microprocesseurs
Architecture matérielle des ordinateurs
Introduction à l’assembleur ARM: arithmétique et conditions
Reconnaissance de formes: lettres/chiffres
Logiciel de présentation
Travaux Pratiques de physique
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
PROGRAMMATION ET ENSEIGNEMENT
Design, innovation et créativité
Python Nicolas THIBAULT
UC : Diagramme des cas d’utilisation Req : Diagramme d’exigence
Type Tableau Partie 1 : Vecteurs
Les données structurées et leur traitement
CR-GR-HSE-414 Exigences HSE pour l’opération des pipelines
Introduction aux Circuits Reconfigurables et FPGA.
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

Un exemple de processeur embarqué Le MSP430 M1Info-ASE

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

MSP430 et basse consommation Plusieurs mode de fonctionnement Modes « veilles » plus ou moins profonds En fonctionnement @1MHz,2.2V, 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

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

Gamme des MSP430 M1Info-ASE

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

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

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

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

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 8 kB code 512 B data Simple, low-power radio 10 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

Les processeurs DSP M1Info-ASE

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

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

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

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

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

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

Constructeurs de processeurs DSP Chiffres 2002 Source : Forward Concepts http://www.eetimes.fr/at/news/showArticle.jhtml?articleID=19505437 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

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

La famille de processeurs DSP Texas Instrument TMS320C5x M1Info-ASE

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

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 400 MIPS @ 200 MHz. Espace d’adressage 8 M Words. Mémoire système RAM 160K words. ROM 16K words. 2 timers. M1Info-ASE

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

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

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

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 - 2 accès par cycle M1Info-ASE

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

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

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

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

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

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

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

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

La famille de processeurs DSP Texas Instrument TMS320C6xx M1Info-ASE

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

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

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

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

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

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

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

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

Liste des MMR M1Info-ASE Addr. Name (Hex) Description IMR 0000 Interrupt Mask Register IFR 0001 Interrupt Flag Register ----- 2 - 5 Reserved ST0 0006 Status 0 Register ST1 0007 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 AR0 0010 Address Register 0 AR1 0011 Address Register 1 AR2 0012 Address Register 2 AR3 0013 Address Register 3 AR4 0014 Address Register 4 AR5 0015 Address Register 5 AR6 0016 Address Register 6 AR7 0017 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 ------- 01E-01F Reserved M1Info-ASE

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

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

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

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

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

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

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

Liste des MMR M1Info-ASE Addr. Name (Hex) Description IMR 0000 Interrupt Mask Register IFR 0001 Interrupt Flag Register ----- 2 - 5 Reserved ST0 0006 Status 0 Register ST1 0007 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 AR0 0010 Address Register 0 AR1 0011 Address Register 1 AR2 0012 Address Register 2 AR3 0013 Address Register 3 AR4 0014 Address Register 4 AR5 0015 Address Register 5 AR6 0016 Address Register 6 AR7 0017 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 ------- 01E-01F Reserved M1Info-ASE

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

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

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

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

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

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

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

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

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

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

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 = xxxx0000002 Pour N=3 ≤22, adresse de départ = xxxxx002 M1Info-ASE

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

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

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

Récapitulatif adressage indirect M1Info-ASE

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

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

Adressage de la mémoire Adressage direct @offset M1Info-ASE

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

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

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

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

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

Exercice sur l’adressage Au départ: DP=0 DP=4 DP=6 addr val addr val addr val 60 20 200 100 300 100 CPL=0 61 120 201 60 301 30 CMPT=0 62 202 40 302 60 M1Info-ASE

Annexe : assembleur du TMS320C54xx M1Info-ASE

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

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

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

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: ; data(@Smem+1) = Smem SQURA Smem, src ; src = src + (Smem*Smem) SQURS Smem, src ; src = src - (Smem*Smem) M1Info-ASE

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

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: data(@Smem+1)=Smem M1Info-ASE

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

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

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

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

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

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

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

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

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

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

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

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