COURS_1 JC LP MD 1 Evolution des machines JC LP MD 2 Les 8 bits • Machines de type load/store avec au minimum 1 accumulateur (registre) • Machines à 1 opérande • Load lire la mémoire et charger l’accumulateur • Store écrire le contenu de l’accumulateur en mémoire • Peu de modes d’adressage Immédiat Direct Indirect Indirect indexé JC LP MD 3 Familles microprocesseurs 8 bits • Intel 8008, 8080 • Motorola 6800 • Zilog Z80 JC LP MD 4 Mainframes • Machines multi users (16/32 bits) • IBM • CDC • DEC (Digital Equipment Corporation) famille PDP UNIX Langage C JC LP MD 5 Les 16 bits • • • • • Machines de type move avec 8/16 registres Machines à 2 opérandes Ex: add R1,R2 R1+R2->R2 Beaucoup de modes d’adressage Immédiat, direct, indirect, register, indirect register, indirect register post incrémenté, indirect register prés décrémenté ….. JC LP MD 6 Familles microprocesseurs 16 bits • Machines dites CISC • Intel 8086 architecture interne 16 bits data et adresse • Motorola 68000 architecture interne 32 bits data et adresse (fortement inspiré du PDP) • Zilog Z800 et Texas 9900: pas survécus JC LP MD 7 Problèmes des CISC • Machines microprogrammées (lenteur d’exécution, mais facilité de rectifier des bugs de conception) • Taille des instructions variable et temps d’exécution variable • Difficile de faire du parallélisme pour l’exécution des instructions • Difficultés pour tester les puces en usine • Les compilateurs ne savaient pas utiliser toutes les ressources des boitiers • Il fallait augmenter la fréquence de l’horloge pour augmenter la performance (chaufferettes!!!!) JC LP MD 8 Idée du RISC • • • • • • • Machines à 3 opérandes Beaucoup de registres Machines 32/64 bits Taille des instructions unique Parallélisme d’exécution Machines câblées de type load/store But visé au début: 1 instruction par clock JC LP MD 9 Familles microprocesseurs RISC • • • • SUN architecture SPARC HP architecture PRECISION Silicon Graphics architecture MIPS IBM+Motorola architecture POWER PC • Architecture ARM vendue à divers fondeurs Architecture tres simple, adaptée à la mobilité (Intel, Freescale (ex Motorola), Texas…..) JC LP MD 10 Microcontrôleurs PPC • Famille IBM Boitier généraliste: famille 4XX (dont le 403) • Famille Freescale Boitier pour les télécom: famille 8xx (dont le 860)puis 8XXX Boitier pour l’automobile: famille 5xx puis 5XXX, PXR4040 JC LP MD 11 PPC PXR4040 introduction JC LP MD 12 PXR4040 bloc diagram JC LP MD 13 General Purpose Register GPR0 …..GPR31 Appelés en assembleur r0…..r31 JC LP MD 14 Special Purpose Register • Registres système • Accessibles par des instructions spécifiques MSR mtmsr,mfmsr LR mtlr,mflr CTR mtctr, mfctr IVPR mfivpr,mtivpr JC LP MD 15 EABI JC LP MD 16 Accès mémoire en assembleur lis r3,MEM@h // Chargement de 32 bits dans un registre ori r3,r3,MEM@l lbz r5,d(r3) lwz r5,d(r3) stb r6,d(r3) stw r6,d(r3) // lecture d’un byte (poids forts à 0) // lecture d’un word (poids forts à 0) // écriture d’un byte // écriture d’un word (pour 16 bits: lhz et sth) JC LP MD 17 Utilisation du link register LR Appel de sous programme bl Retour de sous programme blr Chargement du LR mtlr rx Lecture du LR mflr rx JC LP MD 18 Boucles (CTR) • Décrément de CTR et branch target • bdz target si CTR=0 • bdnz target si CTR#0 JC LP MD 19 Utilisation d’assembleur avec le C Fonction en assembleur appelée par un programme C __asm int Read_IVPR(void) { mfivpr r3 //lecture du pointeur de la table d’interruptions blr } //passage de paramètres in et out avec r3 Instruction assembleur dans un programme en C asm ("rfi"); //return from interrupt JC LP MD 20 siu System Integration Unit JC LP MD 21 Rôle du SIU JC LP MD 22 Registres du SIU à étudier pour le 1er TP • Pad Configuration Register PCR (il y a 512 PCR) pour configurer la fonction de la PIN • Registre de data en sortie (il y en a 512) pour donner un niveau à la PIN programmée en sortie JC LP MD 23 SIU_PCR JC LP MD 24 PXR4040.h en tête /****************************************************************************/ /* MODULE : SIU */ /****************************************************************************/ struct SIU_tag { #define SIU } (*( volatile struct SIU_tag *) JC LP MD 0xC3F90000 ) 25 PXR4040.h SIU_PCRn union { /* Pad Configuration Registers */ vuint16_t R; struct { vuint16_t:3; vuint16_t PA:3; vuint16_t OBE:1; vuint16_t IBE:1; vuint16_t DSC:2; vuint16_t ODE:1; vuint16_t HYS:1; vuint16_t SRC:2; vuint16_t WPE:1; vuint16_t WPS:1; } B; } PCR[512]; JC LP MD 26 PXR4040.h SIU_GPD i/o union { /* GPIO Pin Data Output Registers */ vuint8_t R; struct { vuint8_t:7; vuint8_t PDO:1; } B; } GPDO[512]; union { /* GPIO Pin Data Input Registers */ vuint8_t R; struct { vuint8_t:7; vuint8_t PDI:1; } B; } GPDI[256]; JC LP MD 27 Liaison série JC LP MD 28 Principe de la RS232 JC LP MD 29 Trame RS232 en transmit sur la ligne JC LP MD 30 Gestion de flux JC LP MD 31 Types de liaisons JC LP MD 32 Module eSCI (A,B,C) JC LP MD 33 Paramètres de trame • • • • Nombre de bits de Data Nombre de bits de STOP Parité Vitesse de transmission en bauds • Pour TP2 • 8bits DATA,1 bit de STOP, pas de parité, vitesse:9600 bauds (clock pour le baud rate générateur à 30 MHz) JC LP MD 34 Types d’erreurs possibles • Parity error • Framing error • Overrun error JC LP MD 35