Conception de circuits numériques et architecture des ordinateurs Structure du cours Conception de circuits numériques et architecture des ordinateurs C1 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 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 Frédéric Pétrot et Sébastien Viardot Année universitaire 2009-2010 2 / 22 Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Plan Processeur et jeu d’instruction Plan détaillé du cours d’aujourd’hui 1 Plan Processeur et jeu d’instruction Introduction Système intégré Jeu d’instructions 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 4 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Introduction Introduction Introduction Moyens de communications CK RESETN interruptions Problématique : Comment exécuter des programmes ? Bus d’adresses Bus de données Solution : instructions Bus de contrôle définir un jeu d’instruction ⇒ aujourd’hui Processeur l’implanter sous forme PC/PO ⇒ les 2 prochains cours Bus d’adresses Bus de données données Bus de contrôle Bus d’adresses Bus de données entrées/sorties Bus de contrôle 5 / 22 6 / 22 Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Système intégré Système intégré Exemple de système : iPhone (OMAP 3430) Plan mémoire du L138 - en partie Start Address OMAP-L138 Low-Power Applications Processor JTAG Interface C674x ARM926 PLL/Clock Generator Input Clock(s) General Purpose Timer (x3) RTC/ 32-kHz OSC 4KB IET AET 16 KB 16 KB I-Cache D-Cache Power/Sleep Controller 0x0000 0x0070 0x0080 0x0084 0x00E0 0x00E0 0x00F0 0x0000 0x.... 0x01BC DSP Subsystem ARM Subsystem System Control 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) I2C (x2) ePWM (x2) eCAP (x3) Video Parallel Port Internal Memory LCD Ctrl VPIF uPP 128 KB RAM UART (x3) SPI (x2) Control Timers Display Connectivity USB 2.0 USB 1.1 EMAC 10/100 MB/s MDIO External Memory Interfaces HPI MMC/SD SATA Flash NAND DDR2 Controller 7 / 22 Conception de circuits numériques et architecture des ordinateurs 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 Size 1024K 256K 32K 32K 4K 0x01BC 1000 0x01BC 17FF 2K 0x01BC 1800 0x01BC 18FF 256 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 .... ARM Mem Map ARM ETB memory ARM ETB reg ARM Ice Crusher DSP Mem Map Reserved DSP L2 ROM DSP L2 RAM Reserved DSP L1P RAM Reserved DSP L1D RAM Reserved ........ 32K 1K 1K 4K 4K 4K 4K EDMA Mem Map Master Peripheral Mem Map 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 Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions Contenu de la mémoire Ressources Tout est affaire d’interprétation ! cf cours numéro 1 Opérateurs données de tous types Unités fonctionnelles usuelles : ALU (+, −, ∨, ∧, ⊕, ...) √ Unités plus complexes : ×, ÷, ≡, 2 , ... Entières ou « flottantes » instructions Instructions Suite de n octets Opérandes registres interprétés par le matériel précisant : cases mémoires 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 10 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions Registres ISA vs ABI Toujours ISA : Instruction Set Architecture définition de l’ensemble exhaustif des instructions supportées par le processeur : 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. sémantique : ce que fait l’instruction Spécifiques syntaxe : comment spécifier l’instruction et ses opérandes accumulateur : registre destination des opérations de l’ALU ABI : Application Binary Interface pointeur de pile : indique base de la pile Utile pour les appels de fonctions définition de l’usage des instructions pour un compilateur : convention d’utilisation des registres Généralistes registres à usage général : organisés en « banc de registres » convention d’appel de fonction détaillé dans le cours de logiciel de base peuvent être utilisés comme accumulateurs et pointeur de pile en fonction des processeurs 11 / 22 12 / 22 Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions ISA ISA Différents types d’instructions Choix dans la définition d’un ISA : Opérations arithmétiques et logiques add, sub, sll, sra, inc, mov, ... Critère doit fournir un support efficace aux langages de programmation doit pouvoir être implanté efficacement Transfert de données entre registre et mémoire ldw, ldb, stw, stb, ... régulier et complet Exemples : Déroutement du programme Nombre d’opérandes explicite : 0, 1, 2, 3 Sauts inconditionnels : jmp, ba Sauts conditionnels : jcc, bcc (cc : code conditions) Appel et retour de fonction : call, jal return, jr à pile : add stack[top] ← stack[top − 1] + stack[top] accumulateur : add addr acc ← acc + mem[addr] « 2 adresses » : add %ri, %rj %ri ← %ri + %rj « 3 adresses » : add %ri, %rj, %rk %ri ← %rj + %rk 14 / 22 13 / 22 Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions ISA Modes d’adressage 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 Définit ou l’on va chercher une instruction 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 Absolu jmp address : pc ← address Relatif à PC jmp offset : pc ← pc + offset Indirect registre jmp %ri : pc ← %ri 16 / 22 15 / 22 Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions Modes d’adressage Modes d’adressage Ou un opérande Indirect registre + déplacement Registre mov offset(%ri), %rj : %rj ← mem[%ri + offset] mov %ri, %rj : %rj ← %ri Indirect registre + auto-incrément / auto-décrément Immédiat mov $12, %rj : %rj ← 12 mov (%ri)+, %rj : %rj ← mem[%ri], %ri ← %ri + 1 mov (%ri)-, %rj : %rj ← mem[%ri], %ri ← %ri − 1 Absolu ou direct mov %ri, address : mem[address] ← %ri mov address, %ri : %ri ← mem[address] 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 Indirect mov %ri, (address) : mem[mem[address]] ← %ri 17 / 22 18 / 22 Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions Encodage des instructions Encodage des instructions Langage machine Traduction des mnémoniques textuels en suites d’octets 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 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 RD 65 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 20 / 22 Conception de circuits numériques et architecture des ordinateurs Processeur et jeu d’instruction Processeur et jeu d’instruction Jeu d’instructions Jeu d’instructions ISA Hall of fame 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 Quelques processeurs de ce type ayant marqué leur époque : Intel 8080 MOSTech 6502 Langages de programmation Motorola 6800 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 Zilog Z80 21 / 22 22 / 22