! INSA-3IF Architecture des Ordinateurs! Séance 2! Christian Wolf,! INSA-Lyon, Dép. IF! # 1 C. Wolf Au Menu! CM1! ISA : Introduction. Jeux d’instructions, assembleur.! TD! La « Micromachine » : réalisation d’un processeur simple sur papier! CM2! ISA : Encodage; Histoire! TP! Réalisation de la micromachine sous Logicworks! CM3! Approfondissements, typologie, comparaisons! CM4! Parallélisme : pipeline, processeurs superscalaires ! CM5! Hiérarchie mémoire! TP! Prise en main du controleur MSP 430 CM6! Les GPU ! TD! Micromachine sur papier : les interruptions TP! MSP 430 : pile, timer, interruptions # 2 C. Wolf Sommaire de la séance! ! ! Encodage! ! ! ! Histoire; familles d’architectures proposées par l’industrie! ! ! ! # 3 C. Wolf Encodage! mov r3, r7 1110 0001 1010 0000 0011 0000 0000 0111 # 4 C. Wolf Que doit on encoder?! - Le type d’instruction (mov, cmp, b, ldr) - Les modes d’adressage (direct, immédiat, indexé, indirect etc.)! - Le choix des registres, le cas échéant! - La valeur immédiate, le cas échéant! - Les conditions éventuelles (égale, inférieur, carry etc.)! - Le plus compact que possible ! – 32 bit pour ARM! – 16 bit pour ARM en mode « THUMB »! – Variable pour x86 (jusqu’à 120 bit)! # 5 C. Wolf Adressage … revisité! mov mov cmp ble r2, #3 r3, #5 r2, r3 .L1: mov r4, #2 b .L2 L’assembleur calculera l’adresse de la destination du branchement.! Quelle est la taille de cette adresse et combien de place prend-elle dans l’instruction?! L’encodage de l’instruction est importante.! .L1: mov r4, #3 .L2: ! # 6 C. Wolf Encodage des instructions! - Objectifs : minimiser la taille des instructions! - Problème des tailles des adresses et des valeurs immédiates! - Philosophie « RISC » :! – instructions à tailles fixes, e.g. 32 bit! – Problème :! • les adresses sont plus longues que les instructions (ou longueur égale)! • les valeurs immédiates sont parfois plus longues que les instructions (ou longueur égale)! - Solution ARM : ! – 12 bits disponibles pour encoder une valeur immédiate! – Construction d’une valeur par rotation binaire à droite :! • • • • N=8 bit pour une valeur de base! R=4 bit pour un décalage! V= ROR (N, 2*R)! Toutes les valeurs ne peuvent pas être représentées!! # 7 C. Wolf Taille des adresses! Les restrictions sur les adresses ne posent pas forcement de problèmes majeurs :! - Utilisation du mode PC-relative (surtout pour les sauts)! - Utilisation du mode indexé relatif au SP (variables locales)! - Données complexes : utilisation de pointeurs (mode registre indirect)! # 8 C. Wolf Encodage : types de données! Les types ne sont pas encodés en mémoire.! Les types sont désignés par l’instruction.! – Octet! – Entiers : demi-mot, mot, entier 64bit (complément à deux: IEEE 754) ! – Float simple et double précision.! – Chaines de caractères (certaines architectures, comme x86)! - ARM : toute opération A/L est sur 32 bit; les types sont gérés par les transferts entre registres et mémoire.! # 9 C. Wolf L’encodage des instructions ARM! Reproduit de : Mark McDermott, U. Texas # 10 C. Wolf Instructions pour le traitement de données! # 11 C. Wolf Encodage des conditions! # 12 C. Wolf Démo : assemblage d’une instruction ARM! mov r3, r7! mov r3, #0x80000001! (Décomposition en 4bit ROR (*2) + 8bit valeur)! mov r3, r7 à e1a03007 1110 0001 1010 0000 0011 0000 0000 0111 mov r3, #0x80000001 à e3a03106 1110 0011 1010 0000 0011 0001 0000 0110 Value field = 0000 0110! ROR field = 1 ==> rotation par 2 bits => ! 1000 0000 …. 0001 = 0x80000001! # 13 C. Wolf Sommaire de la séance! ! ! Encodage! ! ! ! Histoire; familles d’architectures proposées par l’industrie! ! ! ! # 14 C. Wolf C’est l’heure de l’histoire (1/7)! - Premier micro-processeur intégré : 4bit! – Intel 4004 (introduit en 1971) ! – 740khz, 2300 transistors, adresses de 12bit! - Ère 8 bit (Z80, MOS 6510 (Apple II, Commodore 64))! ! – Développé en 1982 sans CAO avec des cutters « Stanley » sur sur une grande table (circuit en 6 couches)! – ~ 1 Mhz, ! – Accumulateur + deux registres d’indexation! – Adresses 16bit (64kb mémoire max)! – 56 instructions. Pas de multiplications, pas de flottants! # 15 C. Wolf C’est l’heure de l’histoire (2/7)! - Ère 16bit : Intel 8086! – Fondateur de l’architecture x86 ! – Introduit en 1978, développé « rapidement sous pression »! – La variante 8088 est adoptée par IBM pour son premier PC! – 5 Mhz à 10 Mhz, 20 000 transistors! – Registres 16 bit, bus externe de 20 bit (8bit pour le 8088)! – Mémoire segmentée en segments de 64ko (adresses de 16 bit)! – 4 registres générales + 4 registres pour l’indexation! – Modèle registre-mémoire! – Multiplexage entre bus d’adresses et bus de données! ! # 16 C. Wolf C’est l’heure de l’histoire (3/7)! - Ère 32bit : Motorola 68000 ! – – – – – – – Commodore Amiga, Apple Macintosh, Atari ST etc.! Stations UNIX (Sun, Apollo) ! Registres et opérations en 32 bit! Bus externe de 16 bit, adresses de 24 bit! 8 registres de données, 8 registres « d’adresses »! 56 instructions! Instructions à deux opérandes, une source est modifiée! # 17 C. Wolf C’est l’heure de l’histoire (4/7)! - Ère 32bit : Intel 80386! – Introduit en 1987! – Ce jeu d’instruction (« i386 ») est toujours le dénominateur le plus commun de nos PC! – Registres 32 bit, max 40 Mhz.! – Possibilité d’avoir une mémoire « flat » (segmentation)! – Support de mémoire virtuelle (paging)! – Protection accès mémoire (depuis le 80286)! # 18 C. Wolf C’est l’heure de l’histoire (5/7)! - Ère 32bit : ARM! – En 1987, Acorn Computers (UK) introduit l’Acorn Archimedes, un home computer basé sur une nouvelle architecture ARM (« Acorn RISC Machine »).! – En 1987 : 8Mhz, 512Kb-16MB RAM! – 32 bit, 16 registres, j’en passe car vous le connaissez bien l’ISA …! # 19 C. Wolf C’est l’heure de l’histoire (6/7)! - Ère 64bit : x86-64! – Intel ne souhaite pas étendre x86 à 64 bit, privilégiant une nouvelle architecture « IA64 »! – En 2003, AMD saute sur le créneau et propose une extension, proposée avec le processeur « Opteron »! – Intel cède sur la pression du marché et adopte la solution AMD pour ses propres processeurs! – Registres de 64bit, adresses virtuelles de 64 bit! – 16 registres au lieu de 8! ! # 20 C. Wolf C’est l’heure de l’histoire (6/7)! - Ère 64bit : ARM 64 bit! – Introduit en 2011, nommée ARM-v8-A! – Premier produit : iPhone! – Nouveau jeu d’instruction dans un mode différent! – Mode compatibilité pour les applications 32 bit! – 31 registres de 64 bit! – Instructions de taille 32 toujours, quasiment identiques! – Toutes les instructions ne sont pas conditionnelles! – Pas d’accès direct au PC! # 21 C. Wolf Intel x86 Intel IA64 IBM Power ARM Sun/Oracle SPARC TI MSP430 # 22 C. Wolf Intel x86! - Intel x86 : nos chers PC avec processeurs Intel ou AMD.! - Usine à gaz ! - Plusieurs couches de registres issues de plusieurs évolutions, à taille variables (16bit, 32bit, 64bit)! - Instructions à taille variable! - Une opérande des instructions arithmétiques peut se trouver en mémoire ! - Modèle registre-mémoire pour les entiers! - Modèle pile pour les flottants! # 23 C. Wolf Intel IA64! - - - - - - Architecture 64 bit à ne pas confondre avec x86-64! Conçu pour le calcul de haute performance! VLIW (« Very long Instruction Word »)" Paquets de 128 bits pour 3 instructions! Indications claires sur le parallélisme! Beaucoup d’informations passées du compilateur au processeur de manière explicite! - La performance est au rendez-vous! - Pas de succès sur le marché! # 24 C. Wolf IBM Power! - Jeu d’instruction 32 bits dédiés pour les serveurs! - Aussi utilisé pour le processeur Cell utilisé dans la Sony playstation 3 (la PS4 reprend une architecture x86)! - Jusqu’à 2006 utilisé par les ordinateurs Apple! - Possibilités d’avoir 4 opérandes :! – Fused multiply and add (FMA)" – Rd := Rx * Ry + Rz! # 25 C. Wolf Sun/Oracle SPARC! - Jeu d’instruction conçu pour les serveurs! - 32 bits à trois opérandes! - Originalité : une fenêtre glissante de registres (idée reprise plus tard par IA64)! # 26 C. Wolf ARM! - Utilisé pour le calcul embarqué : téléphones portables, tablettes! - Des cartes embarquées de performance assez élevée existent avec des processeurs ARM associées à des GPU Nvidia (Nvidia Jetson)! - RISC 32bit (un mode 16bit est disponible)! - Pas d’opérations arithmétique/logique directement sur la mémoire! - Pas de division! - Toutes les instructions peuvent être conditionnelles! - Barrel shifter : Toutes les valeurs peuvent être décalées sans cout! ! # 27 C. Wolf MSP 430! - Processeur traité en TP! - Jeu d’instructions pour micro-contrôleurs de très basse consommation! - Un MC embarque processeur, mémoire, quelques périphériques (timers), et interfaces E/S sur la même puce! - Jeu d’instruction RISC 16 bit avec 16 registres. ! - 1 ou 2 opérandes. ! - Les adresses sont stockées dans un mot supplémentaire.! # 28 C. Wolf MSP 430! # 29 C. Wolf MSP 430! # 30 C. Wolf # 31 C. Wolf