Notes Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot et Sébastien Viardot Année universitaire 2010-2011 Conception de circuits numériques et architecture des ordinateurs Structure du cours Notes C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 Codage des nombres en base 2, logique booléenne, circuits combinatoires Optimisation combinatoire, circuits séquentiels Circuits séquentiels, suite Construction circuits complexes Machines à état Synthèse de circuits PC/PO Synthèse de circuits PC/PO Conception de circuits élémentaires CMOS Micro-architecture et fonctionnement des mémoires Interprétation d’instructions Interprétation d’instructions Interprétation d’instructions 2 / 22 Conception de circuits numériques et architecture des ordinateurs Plan Notes Plan détaillé du cours d’aujourd’hui 1 Processeur et jeu d’instruction Introduction Système intégré Jeu d’instructions 3 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Plan 1 Processeur et jeu d’instruction Introduction Système intégré Jeu d’instructions 4 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Introduction Introduction Problématique : Comment exécuter des programmes ? Solution : définir un jeu d’instruction ⇒ aujourd’hui l’implanter sous forme PC/PO ⇒ les 2 prochains cours 5 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Introduction Moyens de communications CK RESETN interruptions Bus d’adresses Bus de données instructions Bus de contrôle Bus d’adresses Processeur Bus de données données Bus de contrôle Bus d’adresses Bus de données entrées/sorties Bus de contrôle 6 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Système intégré Exemple de système : iPhone (OMAP 3430) OMAP-L138 Low-Power Applications Processor JTAG Interface DSP Subsystem ARM Subsystem System Control PLL/Clock Generator Input Clock(s) C674x ARM926 4KB IET General Purpose Timer (x3) 16 KB 16 KB I-Cache D-Cache Power/Sleep Controller RTC/ 32-kHz OSC AET 32 KB L1 Pgm 32 KB L1 RAM 8 KB RAM (Vector Table) 256 KB L2 RAM 64 KB ROM 1024 KB L2 ROM Switched Central Ressources Peripherals DMA Audio Ports EDMA (x2) McASP w/FIFO Serial Interface McBSP (x2) Control Timers ePWM (x2) eCAP (x3) Display Video Parallel Port Internal Memory LCD Ctrl VPIF uPP 128 KB RAM UART (x3) SPI (x2) I2C (x2) Connectivity USB 2.0 USB 1.1 EMAC 10/100 MB/s MDIO External Memory Interfaces HPI MMC/SD SATA DDR2 Controller Flash NAND 7 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Système intégré Plan mémoire du L138 - en partie Start Address 0x0000 0x0070 0x0080 0x0084 0x00E0 0x00E0 0x00F0 0x0000 0x.... 0x01BC 0000 0000 0000 0000 0000 8000 0000 0000 .... 0000 End Address 0x006F 0x007F 0x0083 0x00DF 0x00E0 0x00EF 0x00F0 0x006F 0x.... 0x01BC FFFF FFFF FFFF FFFF 7FFF FFFF 7FFF FFFF .... 0FFF 0x01BC 1000 0x01BC 17FF 0x01BC 1800 0x01BC 18FF 0x01BC 0x01C0 0x01C0 0x01C0 0x01C0 0x01C1 0x01C1 0x01C1 0x01C1 0x01C1 0x01C2 0x.... 0x01BF 0x01C0 0x01C0 0x01C0 0x01C0 0x01C1 0x01C1 0x01C1 0x01C1 0x01C1 0x01C2 0x.... 1900 0000 8000 8400 8800 0000 1000 2000 4000 5000 0000 .... FFFF 7FFF 83FF 87FF FFFF 0FFF 1FFF 3FFF 4FFF FFFF 0FFF .... Size ARM Mem Map 32K 32K 2K 256 EDMA Mem Map Master Peripheral Mem Map Reserved DSP L2 ROM DSP L2 RAM Reserved DSP L1P RAM Reserved DSP L1D RAM Reserved ........ 1024K 256K 4K DSP Mem Map ARM ETB memory ARM ETB reg ARM Ice Crusher 32K 1K 1K 4K 4K 4K 4K Reserved Reserved Reserved Reserved Reserved Reserved Reserved EDMA3 CC EDMA3 TC0 EDMA3 TC1 Reserved PSC 0 PLL Controller 0 Reserved SYSCFG0 Reserved Timer0 ........ 8 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Contenu de la mémoire Tout est affaire d’interprétation ! cf cours numéro 1 données de tous types instructions Instructions Suite de n octets interprétés par le matériel précisant : les opérations à effectuer et leurs opérandes opération op_dest, op_src1, op_src2, ... le séquencement entre instructions par défaut l’instruction suivante 9 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Ressources Opérateurs Unités fonctionnelles usuelles : ALU (+, −, ∨, ∧, ⊕, ...) √ Unités plus complexes : ×, ÷, ≡, 2 , ... Entières ou « flottantes » Opérandes registres cases mémoires 10 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Registres Toujours pointeur de programme (program counter ou PC) : adresse de l’instruction en cours d’exécution ou à exécuter registre d’état : flags, interruptions, exceptions, etc. Spécifiques accumulateur : registre destination des opérations de l’ALU pointeur de pile : indique base de la pile Utile pour les appels de fonctions Généralistes registres à usage général : organisés en « banc de registres » peuvent être utilisés comme accumulateurs et pointeur de pile en fonction des processeurs 11 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions ISA vs ABI ISA : Instruction Set Architecture définition de l’ensemble exhaustif des instructions supportées par le processeur : sémantique : ce que fait l’instruction syntaxe : comment spécifier l’instruction et ses opérandes ABI : Application Binary Interface définition de l’usage des instructions pour un compilateur : convention d’utilisation des registres convention d’appel de fonction détaillé dans le cours de logiciel de base 12 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions ISA Différents types d’instructions Opérations arithmétiques et logiques add, sub, sll, sra, inc, mov, ... Transfert de données entre registre et mémoire ldw, ldb, stw, stb, ... Déroutement du programme Sauts inconditionnels : jmp, ba Sauts conditionnels : jcc, bcc (cc : code conditions) Appel et retour de fonction : call, jal return, jr 13 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions ISA Choix dans la définition d’un ISA : Critère doit fournir un support efficace aux langages de programmation doit pouvoir être implanté efficacement régulier et complet Exemples : Nombre d’opérandes explicite : 0, 1, 2, 3 à pile : add stack[top] ← stack[top − 1] + stack[top] acc ← acc + mem[addr] accumulateur : add addr « 2 adresses » : add %ri, %rj %ri ← %ri + %rj « 3 adresses » : add %ri, %rj, %rk %ri ← %rj + %rk 14 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions ISA Usage : a × b − (a + c × b) stack push a push b mult push a push c push b mult add sub accu clear add c mult b add a st x clear add a mult b sub x 2-addr add %r1, b mult %r1, c add %r1, a add %r2, b mult %r2, a sub %r2, %r1 3-addr mult %r1, b, c add %r1, %r1, a mult %r2, a, b sub %r2, %r2, %r1 3-addr-ld/st ld %r1, c ld %r2, b mult %r1, %r1, %r2 ld %r3, a add %r1, %r1, %r3 mult %r2, %r2, %r3 sub %r3, %r2, %r1 15 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Modes d’adressage Définit ou l’on va chercher une instruction Absolu jmp address : pc ← address Relatif à PC jmp offset : pc ← pc + offset Indirect registre jmp %ri : pc ← %ri 16 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Modes d’adressage Ou un opérande Registre mov %ri, %rj : %rj ← %ri Immédiat mov $12, %rj : %rj ← 12 Absolu ou direct mov %ri, address : mem[address] ← %ri mov address, %ri : %ri ← mem[address] Indirect mov %ri, (address) : mem[mem[address]] ← %ri 17 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Modes d’adressage Indirect registre + déplacement mov offset(%ri), %rj : %rj ← mem[%ri + offset] Indirect registre + auto-incrément / auto-décrément mov (%ri)+, %rj : %rj ← mem[%ri], %ri ← %ri + 1 mov (%ri)-, %rj : %rj ← mem[%ri], %ri ← %ri − 1 Indirect registre + index + déplacement mov offset(%ri,%rk), %rj : %rj ← mem[%ri + %rk + offset] Et encore d’autres ! 95% des besoins couvert par immédiat et indirect registre + déplacement 18 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Encodage des instructions Langage machine Traduction des mnémoniques textuels en suites d’octets MIPS : 3-adresses ld/st, 32 registres, instruction sur 32 bits 3 formats d’instruction 31 2625 2120 1615 Format R : opcode RS RT Format I : opcode RS RT Format J : opcode 1110 65 RD SH 0 FUNC IMM16 IMM26 1 seule taille d’instruction, très régulier, 3 modes d’adressage 19 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Encodage des instructions 2-adresses, 4 registres, instruction sur 8 bits 2 bits par registre MSB à 0, opérations entre 2 registres MSB à 1, opérations entre 1 registre et la mémoire opérande stocké après l’instruction (1 ou 2 octets) Exemples : add %r1, %r0 add %r2, $12 add %r3, addr 20 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions ISA Pas de portabilité du code binaire Chaque processeur (ou famille) possède son ISA et son ABI propre un code pour un processeur ne tourne pas sur un autre processeur Langages de programmation Assurent une certaine portabilité du code Compilateur : génère du code optimisé adapté à la machine Assembleur : transforme les mnémoniques en code binaire Éditeur de lien : fusionne les fichiers binaire en un exécutable 21 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Notes Jeu d’instructions Hall of fame Quelques processeurs de ce type ayant marqué leur époque : Intel 8080 MOSTech 6502 Motorola 6800 Zilog Z80 22 / 22 Notes Notes