Conception de circuits numériques et architecture des

publicité
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
Téléchargement