inf6500 : structures des ordinateurswiki.polymtl.ca/nano/fr/images/6/64/inf6500cours1.pdf ·...

79
Sylvain Martel - INF6500 1 INF6500 : Structures des ordinateurs

Upload: vokhanh

Post on 12-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Sylvain Martel - INF6500 1

INF6500 : Structures des ordinateurs

Sylvain Martel - INF6500 2

Cours 1 : Processeur et unitécentrale de traitement

Sylvain Martel - INF6500 3

Répertoire d’instructionsPileAccumulateur

Registre-mémoireChargement-rangement

Nbre reg.GPRSpecial use

Type d’instructionsRISCCISC(Hybride)

Format (Nombre d’opérandes)23

Nombre et types de modes d’adressage

InstructionsLongueur pipeline

Pipeline

AléasStructurelsDonnéesContrôle

RésoudreBullesBus Istr/DataRegistresOrdonnancementEnvoi (forwarding)Branchement prisBranchement non-prisBranchement différé

TypesLAEEAEEAL

Sylvain Martel - INF6500 4

L’ordinateur moderne:UCT, Mémoire et E/S + Bus

Sylvain Martel - INF6500 5

Carte mère (Motherboard)

Sylvain Martel - INF6500 6

Processeur (UCT)

Sylvain Martel - INF6500 7

Pentium

MémoireE/S

Sylvain Martel - INF6500 8

Mémoire (DRAM)

Sylvain Martel - INF6500 9

Bus

ISA

PCI

AGPUSB (Universal Serial Bus)

Sylvain Martel - INF6500 10

E/SLPT

FloppyIDE

(HD)

DIOA/DD/A

Sylvain Martel - INF6500 11

BIOS (Basic Input/Output System)

Sylvain Martel - INF6500 12

Contrôleurs

Contrôleurs

Sylvain Martel - INF6500 13

Misc.

Batterie

Alimentation

DriversBuffers

Sylvain Martel - INF6500 14

Embedded ComputerIR Transceiver

64Kx16 SRAM

48 MIPS DSP48 MHz Oscillator

Outside Layer

Central Controller (CPLD)

STM Scan TubeDriving Section

PowerAmplifiers

High Power Rectification Bridge(Outside Section)

High Power Input Voltage Regulation

STM Interface (I/V Amplifier and A/D Converter)

Analog Section Power Converters

TemperatureSensor

Piezo-Drive SwitchingCircuit (One Leg)

IR Emitters

15 mm

Sylvain Martel - INF6500 15

Simple UCT

0101

0001

SRAMAdresse

00

01

Compteur

Décodeur EXEC 0

EXEC 15Data 0Data 1

Oscillateur

Décodeur

Sylvain Martel - INF6500 16

Simple UCT (Codes pour les instructions)

0101

0001

SRAM

Sylvain Martel - INF6500 17

Pentium

MultiplicationDivision

Sylvain Martel - INF6500 18

Pentium

Barrel Shifter

Sylvain Martel - INF6500 19

Pentium

SRAM (Cache)

Sylvain Martel - INF6500 20

Flot de conception VHDL

Sylvain Martel - INF6500 21

Conception VHDL

Sylvain Martel - INF6500 22

VHDL – Exemple: DFF

Sylvain Martel - INF6500 23

L’UCT

Horloge (oscillateur)

Pipeline (UCT)

Mémoire

Instructions

Résultats

Opérandes

Sylvain Martel - INF6500 24

Répertoire d’instructions et modes d’adressage

Sylvain Martel - INF6500 25

Le jeux ou la liste d’instructions dépend du type d’applications supporté par le processeur et le type de processeur

Applications du type:Général (PC)CommunicationGraphique (jeux vidéo)Traitements de signaux (radar, etc.)Gadgets, équipements simples, etc.

Type de processeurs (UCT)Général (Pentium)DSP (Digital Signal Processor)« Micro-controller », etc.

Sylvain Martel - INF6500 26

La classification des jeux d’instructions

Définition d’un jeu d’instructions: Portion visible de la machine pour les programmeurs ou les créateurs de compilateursLa principale différence entre les différents jeux d’instructions réside dans le type interne de stockage dans l’UCT

Sous forme d’une pile (stack)Sous forme d’un accumulateur (accumulator)Sous forme de registres (registers)

Registre mémoire (register memory)Chargement rangement ou registre registre (resister register)

Sylvain Martel - INF6500 27

Pile

A BA

BC

ADDPUSH A PUSH B

POP C

Pile

UCT (ALU)

Sylvain Martel - INF6500 28

Pile (suite)

Pour une expression du type: (A*B) – (B*C) – (A*D),le système doit l'évaluer dans un ordre fixe,donc souvent moins efficace et doit souventre-charger la même opérande plusieurs fois.

Sylvain Martel - INF6500 29

Accumulateur

ACCB

ADDLOAD A

MEM

ACCB

ADDMEM

Accumulateur

A A

Sylvain Martel - INF6500 30

Registre (registre-mémoire)

R2B

ADD

LOAD A

MEM R11 2

2C3

A

Sylvain Martel - INF6500 31

Registre-registre/Chargement-rangement (Load-store)

R2ADDLOAD R1,A

MEM

R11

R4R3

LOAD R2,B 2

ADD R3,R1,R2 3C

AB

STORE C,R3 4

Sylvain Martel - INF6500 32

Avantages/désavantages

Pile (stack)Avantage: le plus petit encodage parce que pas de locations pour opérandes ourésultat est spécifiées.Désavantage: Généralement les opérandes doivent être dans le bon ordre.

Sylvain Martel - INF6500 33

Avantages/désavantages

AccumulateurAvantage: Petit encodage d‘instructions parce que seulement une opérande et location sont spécifiées.Désavantage: Généralement les opérandes doivent être dans le bon ordre.

Sylvain Martel - INF6500 34

Avantages/désavantages

(Registre) Chargement-rangementAvantage: Les opérandes peuvent êtredans un ordre flexible à cause des registres.Désavantage: Encodage d‘instructions avec un format plus large.

Sylvain Martel - INF6500 35

La classification des jeux d’instructions (suite)

Après les années 80, l’ensemble des systèmes ont étéconçus suivant l’architecture chargement rangement car:

Un registre est plus rapide qu’une mémoire.Il est plus facile et plus efficace de manipuler des registres pour un compilateur.Contrairement au système de pile, une expression avec l’emplois de registres peut s’évaluer dans n’importe quel ordre (a*b)-(c*d)-(e*f).Ce système réduit le trafic mémoire vu que les registres peuvent contenir des variables.

Sylvain Martel - INF6500 36

Example: accès externes –sans un registre

UCT

A

B

C = A + BC = C + 5

C

1

2

3

5

4

5

6

6 accès externes

Sylvain Martel - INF6500 37

Example: accès externes –avec un registre

UCT

A

B

C = A + BC = C + 5

C

1

2

53

4

R1 = A + BC = R1 + 5

CompilateurR1

4 accès externes

Sylvain Martel - INF6500 38

La classification des jeux d’instructions (suite)

Le nombre de registres à utiliser dépend de leur usage par le compilateur:

Evaluer des expressionsPasser des paramètres Conserver des variables

Types de registres:Utilisation générale (general purpose register (GPR)): registres utilisés par le compilateurUtilisation spécifique (special use): utilisation spécifique au processeur

Compteur de bouclesAdresse de retour, etc.

Sylvain Martel - INF6500 39

La classification des jeux d’instructions (suite)

Autre décision architecturale: Le nombre d’opérandes pour les instructions:

Format 3 opérandes : instr. contient 1 résultat et 2 sources; (ADD R3,R1,R2) Format 2 opérandes : une opérande est la source et le résultat durant l’opération; (ADD R1,R2)

….

Sylvain Martel - INF6500 40

Avantages et désavantages des 3 types d‘ordinateurs les plus connusbasés sur les GPR (M: opérandes mémoires,N: nombre total d'opérandes)

Grande variation de la longueur des instructions, surtout pour 3 opérandes, aussi grande variation de travail par instruction, accèsmémoire créer “bottleneck”

Plus compacte, ne gaspille pas de GPR pour les temporaires

23

23

Mémoire-mémoire(pas utilisé)

Encoder un numéro de registre et une adresse de mémoire danschaque instruction peut restreindre le nombre de registres. Le nombre de cycle horloge par instruction peut varier par location de l‘opérande

Les opérandes peuvent êtreaccédées sans uneinstruction “load”. les instructions tendent à êtrefaciles à encoder et donnentun bonne densité

21Registre-mémoire

Plus grand nombre d‘instructionsqu‘avec références mémoires doncprogrammes plus longs

Simple, longueur fixe d‘encodage d‘instructions

30Registre-registre

DésavantagesAvantagesNMType

Sylvain Martel - INF6500 41

L’adressage mémoire

La représentation de l’information en informatique se fait sur une base binaire (0 ou 1). L’unité de stockage est le bit.Ce stockage de l’information nécessite plusieurs bits que l’on classe suivant l’échelle suivante (celle-ci peut varier selon l’architecture).

1 octet (byte) = 8 bits1 demi mot (half word) = 16 bits1 mot (word) = 32 bits1 double mot (double word) = 64 bits

Il existe deux conventions pour l’ordre des octets:Little Endian : le bit le moins significatif se trouve à droite et le plus significatif à gauche dans un nombre binaire.Big Endian : le bit le moins significatif se trouve à gauche et le plus significatif à droite dans un nombre binaire.

Sylvain Martel - INF6500 42

L’adressage mémoire (suite)

Modes d’adressage (addressing modes) Registre (Registers)Immédiat ou littéral (Immediate) (pour les constantes)Déplacement (Displacement)(pour les variables)Indirect par registre (Register referred)Indexé (Indexed)Direct ou absolu (Direct or absolute)Indirect via mémoire (Memory indirect)Auto-Incrémenté (Autoincrement)Auto-décrémenté (Autodecrement)Indexé étendu (Scaled)(DSP – Circular addressing, FFT, etc.)

Malgré leur grand nombre les plus utilisés sont les modes déplacement, immédiat et indirect par registre (75% à 99% des modes utilisés dans les programmes).

Sylvain Martel - INF6500 43

L’adressage mémoire - Mode registre

ADD R4,R3: Regs[R4] <- Reg[R4] + Regs[R3]

R3 R4

Fig. 2.6

Sylvain Martel - INF6500 44

Instructions 2 opérandes (Mode registre)

Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bitsADD R1,R2

0101 01 10 8 bits non utilisés

ADD R1 R1

Sylvain Martel - INF6500 45

Instructions 3 opérandes (Mode registre)

Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bitsADD R3,R1,R2

0101 11 01 6 bits non utilisés

ADD R3 R1

10

R2

Sylvain Martel - INF6500 46

L’adressage mémoire - Mode immédiat

ADD R4,#3: Regs[R4] <- Reg[R4] + 3

R4

Fig. 2.6

3

CTE

Sylvain Martel - INF6500 47

Instructions (Mode immédiat)

Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bitsADD R1,#?

0101 01 10 bits disponibles pour une constante

ADD R1

Maximum 210-1 sans signe

Signe (0=+, 1 =-)

9 bits disponibles pour une constante

Sylvain Martel - INF6500 48

L’adressage mémoire (suite)

Pour ce qui est du nombre de bits pour le champ de déplacement, il convient d’avoir 12 à 16 bits et de 8 à 16 bits pour la taille du champ immédiat.

Pourquoi? Pour diminuer le nombre d’accès à la mémoire maisceci complique l’architecture de l’UCT et peut augmenter le CPI moyen ou rallonger le temps de cycle (diminuer la fréquencehorloge)

Horloge (oscillateur)

Pipeline (UCT)

Sylvain Martel - INF6500 49

Ex. Si pas assez de bits pour constante ou accès à une variable en mémoire

Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bits

0101 01 10 bits disponibles pour une constante

ADD R1

Maximum 210-1 sans signe

Signe (0=+, 1 =-)

9 bits disponibles pour une constante

Pas assez

Sylvain Martel - INF6500 50

L’adressage mémoire (suite)

Displacement: ADD R4,100(R1): Regs[R4] <- Regs[R4] + Mem[100+Regs[R1]]Register indirect: ADD R4,(R1): Regs[R4] <- Regs[R4] + Mem[Regs[R1]] : Pointeur en langage C/C++Indexed: ADD R3,(R1+R2): Regs[R3] <- Regs[R3] + Mem[Regs[R1]+Regs[R2]]

ETC…

R3

DATA

MEM

DATA

R2R1

GEN. ADDR.

ADDR

Sylvain Martel - INF6500 51

Instructions (Mode indexé)

Exemple: total 16 instructions (Add = 0101), 4 GPR (16 bits) (R0-R3), dans le répertoire et processeur de 16 bitsADD R3,(R1+R2)

0101 11 01 3 bits non utilisés

ADD R3 R1

10

R2

001

Indexé

0101 11001 Maximum 27 ou 128 adresses

Maximum 232 adresses de mémoire

VS.

Mais plus complexeOPCODE

Sylvain Martel - INF6500 52

Simple UCT

0101

0001

SRAMAdresse

00

01

Compteur

Décodeur EXEC 0

EXEC 15Adresse

Oscillateur

Décodeur

Décodeur

Type instruction

Adressage

Data

Sylvain Martel - INF6500 53

Longueur de OPCODE

Nombre de bits dépend du nombre de differentes instructions et modes d‘adressage que le processeursupporte

Instruction

OPCODE

Mode adressage

Champ Opérandes

Sylvain Martel - INF6500 54

Longueur du code (OPCODE) reduitpour processeurs de type RISC versus processeurs de type CISC

Avec RISCChaque instruction est plus simple donc exécute plus rapidement (vitesse horlogeaugmente)Besoin d‘un plus grand nombred‘instructions pour exécuter la mêmetâchePlus grand nombre d‘accès à la mémoireBlocs EXEC plus simples mais circuit décodage plus complexe

Sylvain Martel - INF6500 55

Les opérations dans le jeu d’instructions (standard)

Il existe différents types d’opérateurs:Arithmétique et logique (ALU) (addition,soustraction)Transfert de données (Load and Store) (chargements et rangements)Contrôle (Branches and Jumps)(branchement, saut, appel de procédure)Système (appel au système d’exploitation)Flottant (Opérations flottantes : addition, multiplication)Décimal (Addition décimal, multiplication décimale, conversion décimal vers caractère)Chaînes (Transfert de chaînes, comparaison de chaînes, recherche de chaînes)Graphique (Opérations sur pixels, opérations de compression/décompression)

Sylvain Martel - INF6500 56

Les opérations dans le jeu d’instructions (suite)

Les instructions de contrôleLe branchement conditionnel (conditionnal branch) (très utilisés)Les sauts (jumps) (souvent utilisés)Les appels de procédure (procedure calls) (moins utilisés)Les retours de procédures (procedure returns) (moins utilisés)

Les instructions les plus utilisées:1) Chargement (22% des instructions totales exécutées)2) Branchements conditionnels (20% des instructions totales exécutées)3) Comparaisons (16% des instructions totales exécutées)4) Rangement (12% des instructions totales exécutées)5) Additions (8% des instructions totales exécutées)

Sylvain Martel - INF6500 57

Les opérations dans le jeu d’instructions (suite)

Les sauts indirects sont utiles lorsque l’adresse de destination est inconnue à la compilation. Certaines structures de plus haut niveaux rencontrent justement ce besoin:

Les opération de ‘case’ et ‘switch’ dans les langages de haut niveau.Les fonctions virtuelles, les méthodes.Les pointeurs de fonction.Les librairies dynamiques (DLLs)

Les branchements et les sauts conditionnels, sont souvent optimisés au niveau des architectures en raison de la grande fréquence des tests simples (x=0?, x<y?).

Sylvain Martel - INF6500 58

3 variations de base d‘encodaged‘instructions

Opération

Longueur fixe (même nombre d‘opérandes, format du code plus large)

Addr. Field 1 Addr. Field 2 Addr. Field 3

Opération

Longueur variable (nombre d‘opérandes varie)

Addr. Spec. 1 Addr. Field 1 Addr. Spec. n Addr. Field n…

(Specifier) Mode d‘adressage

Hybride: plusieurs format dépendant du OPCODE

Sylvain Martel - INF6500 59

Simple exemple

xxxx 0 xx

Instructiontype ADD

Mode R?

xx

R?

xxxx 1 xx xx xx

R? R? R?

0: 2 opérandes1: 3 op érandes

Sylvain Martel - INF6500 60

Type et taille des opérandes

Pour connaître le type d’une opérande, on peut regarder son codage dans le code opération (opcode). Il existe plusieurs types d’opérandes:

Entier (Integer)Simple précision (Single precision)Flottant (Floating point)Double précision (Double precision)Caractère (Char)

Sylvain Martel - INF6500 61

Point flottant (Floating Point) versus entier (Integer)

Floating Point Unit

Integer

Sylvain Martel - INF6500 62

Avantages/désavantages (plus oumoins de bits

Plus de bits - Plus de mémoire (plus large)Plus de bits - Bus plus large (PCB routing, $)Plus de bits - HDW (hardware) plus complexe

Sylvain Martel - INF6500 63

Le pipeline

Sylvain Martel - INF6500 64

Stratégies pour accélérer l`exécution d`un programme

P1 P2

M1

Architecture parallèle

Sous-tâche

Sous-tâche

Sous-tâche

Sous-tâche

Pipeline

Pipeline1

P1Pipeline2

« Superscalar »

P1

Sylvain Martel - INF6500 65

Pentium

Pipeline

Sylvain Martel - INF6500 66

Temps par étage du pipeline

T1 T2 T3

Horloge

FREQ = 1 / MAX (T1, T2, T3)

Registre

Sylvain Martel - INF6500 67

Les obstacles du pipeline :les aléasIl existe des situations, appelées aléas (hazards), qui empêchent l’instruction suivante de flux d’instruction de s’exécuter au cycle d’horloge prévu.Il existe trois types d’aléas:

Aléas structurels (structural hazards)Lorsque le matériel ne peut gérer toutes les combinaisons possibles de recouvrement d’instructions au moment de l’exécution.

Aléas de données (data hazards)Lorsqu’une instruction dépend du résultat d’une instruction précédente.

Aléas de contrôle (control hazards)Résultent de l’exécution en pipeline des branchements et des autres instructions qui modifient le compteur de programme (CP)

Sylvain Martel - INF6500 68

Forwarding

Illustration de la technique de l’envoi

MUX

EX

0/1 0 1

Sylvain Martel - INF6500 69

Forwarding (suite)

MUX

EX

0/1 0 1

INSTR1: EX 5 cyclesINSTR2: EX 1 cycle

INSTR2 a besoin durésultat de INSTR1

INSTR1NOPNOPNOPNOPINSTR2

NOP (NO Operations) ou bulles sont générées par le compilateur

Sylvain Martel - INF6500 70

Ordonnancement

L’ordonnancement du compilateur pour les aléas de données pour augmenter la performance

INSTR1NOPNOPNOPNOPINSTR2INSTR3INSTR4INSTR5INSTR6

INSTR1INSTR3INSTR4INSTR5INSTR6INSTR2

Si INSTR3,4,5,6 sont indépendants

Sylvain Martel - INF6500 71

Branchement

CP (PC-Program Counter)

ADDRRegistre

(Branch) (Return)

Sylvain Martel - INF6500 72

Branchement (suite)Si un branchement modifie l’adresse du CP pour y mettre l’adresse destination, il s’agit d’un branchement pris, sinon il est non pris. Si un branchement est pris, le CP de l’instruction n’est pas modifié avant la fin de l’étage MEM. Pour résoudre ce problème, il existe 4 solutions:

INSTR1

INSTR2

Sylvain Martel - INF6500 73

Branchement (suite)1) On suspend donc le pipeline jusqu’à l’étage MEM, qui détermine le nouveau CP. Cette décision doit cependant se faire après que l’instruction soit décodée est reconnue comme un branchement. Il faut alors suspendre le pipeline pendant trois cycle (un cycle est une répétition de LI, et deux cycles ne font rien).Cette méthode est coûteuse en nombre de cycle et la performance du pipeline diminue.

LI

DI

EX

INSTR1

INSTR2

MEM

NOPNOPNOPBRANCH?

Sylvain Martel - INF6500 74

Branchement (suite)2) Une autre méthode un peu plus complexe consiste àtraiter chaque branchement comme non pris. Si il y effectivement un branchement, on procède comme en 1), en transformant l’instruction lue en NOP (aucune instruction).

LI

DI

EX

INSTR1

INSTR2INSTR6INSTR7INSTR8

MEM

INSTR4INSTR3INSTR1BRANCH? INSTR3

INSTR4INSTR5

BRANCH?

Non Oui

INSTR4INSTR3INSTR1BRANCH?

NOPNOPNOPBRANCH?

Sylvain Martel - INF6500 75

Branchement (suite)3) On peut également considérer le branchement comme toujours pris. Vu qu’il est impossible de connaître l’adresse de destination du branchement avant le décodage, cette approche n’offre aucun avantage pour une architecture qui ne connaît pas l’adresse cible plus tôt.

LI

DI

EX

INSTR1

INSTR2INSTR6INSTR7INSTR8

MEM

INSTR7INSTR6INSTR2BRANCH? INSTR3

INSTR4INSTR5

BRANCH?

Non Oui

INSTR7INSTR6INSTR2BRANCH?

NOPNOPNOPBRANCH?

Sylvain Martel - INF6500 76

Branchement (suite)4) Certaines machines utilisent un schéma appelé le branchement différé (delayed branch). Dans un tel concept, on retrouve un certain nombre d’instructions après l’instruction de branchement qui sont exécutées que le branchement soit pris ou non. Celles-ci constituent des délais de branchement. Le compilateur tente alors d’optimiser ces délais, de plusieurs façons.

Instruction avant (from before):le délai est rempli par une instruction indépendante provenant d’avant le branchement. Les autres solutions sont utilisées uniquement si celle-ci est impossible.

Sylvain Martel - INF6500 77

Branchement (suite)

Instruction cible (from target):le délai est remplacé par l’instruction cible du branchement.Instruction après (from fall-through): le délai est remplacé par une instruction du chemin non pris.

La prédiction de branchement statique: utiliser la technologie des compilateurs.

Considérons:LW R1,0(R2)DSUB R1,R1,R3BEQZ R1,LOR R4,R5,R6………

L : ADD R7,R8,R9

Au lieu de NOP (taken)(not taken/or taken)

Sylvain Martel - INF6500 78

Branchement (suite)

La présence d’une instruction de chargement rangement suivi d’une instruction ALU utilisant le registre R1 nécessite une suspension. Supposons que le branchement (BEZQ) est presque toujours pris et que la valeur de R7 ne soit pas critique dans le chemin en séquence. On pourrait accélérer le code en déplaçant l’instruction ADD R7,R8,R9 juste derrière LWPour effectuer de tel changements, on doit connaître la statistique de branchement à la compilation. Il existe deux méthodes:

Examiner la structure du programme Utiliser des informations collectées sur des exécutions précédentes du programme (plus précis).

Sylvain Martel - INF6500 79