Conception de circuits numériques
et architecture des ordinateurs
Frédéric Pétrot et Sébastien Viardot
Année universitaire 2009-2010
Conception de circuits numériques et architecture des ordinateurs
Structure du cours
C1 Codage des nombres en base 2, logique booléenne,
circuits combinatoires
C2 Optimisation combinatoire, circuits séquentiels
C3 Circuits séquentiels, suite
C4 Construction circuits complexes
C5 Machines à état
C6 Synthèse de circuits PC/PO
C7 Synthèse de circuits PC/PO
C8 Conception de circuits élémentaires CMOS
C9 Micro-architecture et fonctionnement des mémoires
C10 Interprétation d’instructions
C11 Interprétation d’instructions
C12 Interprétation d’instructions
2 / 22
Conception de circuits numériques et architecture des ordinateurs
Plan
Plan détaillé du cours d’aujourd’hui
1Processeur 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
Plan
1Processeur 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
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
Introduction
Moyens de communications
Bus d’adresses
Bus de données
Bus de contrôle
instructions
Bus d’adresses
Bus de données
Bus de contrôle
entrées/sorties
Bus d’adresses
Bus de données
Bus de contrôle
données
RESETNCK interruptions
Processeur
6 / 22
Conception de circuits numériques et architecture des ordinateurs
Processeur et jeu d’instruction
Système intégré
Exemple de système : iPhone (OMAP 3430)
OMAP-L138 Low-Power Applications Processor
JTAG Interface ARM Subsystem DSP Subsystem
16 KB
I-Cache
16 KB
D-Cache
32 KB
L1 Pgm
32 KB
L1 RAM
256 KB L2 RAM
1024 KB L2 ROM
8 KB RAM
(Vector Table)
64 KB ROM
Internal Memory
128 KB
RAM
Switched Central Ressources
Serial Interface Display
LCD
Ctrl
External Memory InterfacesConnectivity
Control Timers
DMA Audio Ports
EDMA
(x2)
ARM926 C674x
4KB IET AET
Power/Sleep
Controller
Input
Clock(s)
System Control
McASP
w/FIFO
PLL/Clock
Generator
General
Purpose
Timer (x3)
Peripherals
RTC/
32-kHz
OSC
McBSP
(x2)
SPI
(x2)
UART
(x3)
I2C
(x2) VPIF uPP
Video Parallel Port
USB
2.0
USB
1.1 SATA
MDIO MMC/SD Flash
NAND
DDR2
Controller
EMAC
10/100
MB/s
ePWM
(x2)
eCAP
(x3) HPI
7 / 22
Conception de circuits numériques et architecture des ordinateurs
Processeur et jeu d’instruction
Système intégré
Plan mémoire du L138 - en partie
Start Address End Address Size ARM Mem DSP Mem Map EDMA Master
Map Mem Map Peripheral
Mem Map
0x0000 0000 0x006F FFFF Reserved
0x0070 0000 0x007F FFFF 1024K DSP L2 ROM
0x0080 0000 0x0083 FFFF 256K DSP L2 RAM
0x0084 0000 0x00DF FFFF Reserved
0x00E0 0000 0x00E0 7FFF 32K DSP L1P RAM
0x00E0 8000 0x00EF FFFF Reserved
0x00F0 0000 0x00F0 7FFF 32K DSP L1D RAM
0x0000 0000 0x006F FFFF Reserved
0x.... .... 0x.... .... ........
0x01BC 0000 0x01BC 0FFF 4K ARM ETB Reserved
memory Reserved
0x01BC 1000 0x01BC 17FF 2K ARM ETB Reserved
reg Reserved
0x01BC 1800 0x01BC 18FF 256 ARM Ice Reserved
Crusher Reserved
0x01BC 1900 0x01BF FFFF Reserved
0x01C0 0000 0x01C0 7FFF 32K EDMA3 CC
0x01C0 8000 0x01C0 83FF 1K EDMA3 TC0
0x01C0 8400 0x01C0 87FF 1K EDMA3 TC1
0x01C0 8800 0x01C0 FFFF Reserved
0x01C1 0000 0x01C1 0FFF 4K PSC 0
0x01C1 1000 0x01C1 1FFF 4K PLL Controller 0
0x01C1 2000 0x01C1 3FFF Reserved
0x01C1 4000 0x01C1 4FFF 4K SYSCFG0
0x01C1 5000 0x01C1 FFFF Reserved
0x01C2 0000 0x01C2 0FFF 4K Timer0
0x.... .... 0x.... .... ........ 8 / 22
Conception de circuits numériques et architecture des ordinateurs
Processeur et jeu d’instruction
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 noctets
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
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
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
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
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
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]
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
Conception de circuits numériques et architecture des ordinateurs
Processeur et jeu d’instruction
Jeu d’instructions
ISA
Usage : a×b(a+c×b)
stack accu 2-addr 3-addr 3-addr-ld/st
push a clear add %r1, b mult %r1, b, c ld %r1, c
push b add c mult %r1, c add %r1, %r1, a ld %r2, b
mult mult b add %r1, a mult %r2, a, b mult %r1, %r1, %r2
push a add a add %r2, b sub %r2, %r2, %r1 ld %r3, a
push c st x mult %r2, a add %r1, %r1, %r3
push b clear sub %r2, %r1 mult %r2, %r2, %r3
mult add a sub %r3, %r2, %r1
add mult b
sub sub x
15 / 22
Conception de circuits numériques et architecture des ordinateurs
Processeur et jeu d’instruction
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
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
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
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 1110 65 0
Format R : opcode RS RT RD SH FUNC
Format I : opcode RS RT IMM16
Format J : opcode 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
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
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
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
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !