You are on page 1of 29

VON NEUMANN vs HARVARD

CONVENTION : 1 CPI = 1 CYCLE D’HORLOGE

Types d’architecture Von Neumann Harvard


µ-contrôleur : circuit =1 µ-CPU + RAM + PROM + PIA + Timer
-PIA = Peripheral Interface Adapter : circuit à interfaçage E/S en //
Domaines d’exploitation PC actuels -Digital Signal Processor (DSP) :
µ-CPU spécialisé en traitement numérique du signal
-Peripheral Interface Controller (PIC) : contrôleur de périphérique

Schéma

-1 SEULE mémoire contenant les données et les -2 mémoires DISTINCTES : 1 pour les données, 1 pour les
Organisation instructions instructions
Mémoire
-Séparation virtuelle possible des mémoires -Séparation physique des mémoires
Accès Accès en série simple Accès en parallèle long
Nom CISC : Complex Instruction Set Computer RISC : Reduced Instruction Set Computer
Taille Chaque instruction a sa propre taille Toutes les instructions ont une même taille (4 octets dans un PIC)
Exécution Exécution difficile en plusieurs CPI Exécution facile en 1 seul CPI
Instructions
Compilation Facile Difficile
Systèmes Nombres Infini Limité
d’instructions Nature des programmes Complexe Compact
-Correction des bugs - Facile de prévoir la durée d’exécution
Qualités
-Programmation simple - Instructions rapides
-Processeur plus compliqué à accélérer - Diminution de lisibilité du code
Défauts
-Difficile de prévoir la durée d’exécution -
 Non programmable
 Programmable : PROM
o FPROM (Fuse PROM) : PROM non modifiable après programmation
ROM o OTP (One Time PROM) : Programmable une fois
(Rémanente) o EPROM : PROM programmable et effaçable
 EEPROM : EPROM effaçable électriquement
 UV-PROM : EPROM effaçable par exposition aux UV
 EPROM flash : rapide, effaçable électriquement et totalement par blocs
TYPES COMPLEMENTS
 Statique : SRAM  Barrette de mémoire à correction d’erreurs :
o Synchrone : SSRAM
 Dynamique : DRAM o 1 Bit de parité : dans N bits de mémoire, (N-1)
o Asynchrone : intervalle temporel entre 2 accès consécutifs à la mémoire irrégulier bits sont utilisées pour les données et 1 bit
 FPM (Fast Page Mode) pour stocker la somme des (N-1) bits
 EDO (Extended Data Out) : amélioration de la FPM
o Synchrone (SDRAM) : intervalle temporel entre 2 accès consécutifs à la mémoire
régulier
 DR-SDRAM (Direct Rambus SDRAM) :
Mémoires

 transfert des données sur un bus de 16 bits à une cadence de 800Mhz


RAM (Volatile)

 bande passante : 1,6 Go/s


 SDR-SDRAM (Single Data Rate SDRAM) : transfert de données à chaque front
MONTANT d’horloge
 DDR-SDRAM (Double Date Rate SDRAM) : transfert de données à chaque front o Bits de contrôle :
d’horloge mémoire ECC (Error Coding Correction)
 DDR2-SDRAM : amélioration de la DDR-SDRAM
 Séparation physique du canal de lecture et celui d’écriture o Tampon : registre entre la DRAM et le
 2 fois plus rapide que la DDR-SDRAM contrôleur mémoire
 DDR3-SDRAM : DDR2-SDRAM moins énergivore  Le registre retient les données avant leur
 Graphique : utilisée sur les GPU envoi au contrôleur de mémoire
o 2 canaux de transfert permettant la lecture et l'écriture des données en un seul CPI.
o Informations à stocker reçus à partir du GPU  RAM rémanente :
o VRAM (Video RAM) : o Utilisation d’un circuit de contrôle intelligent
 Plus rapide que la DRAM pour se connecter aux batteries internes en
 Utilisée sur les GPU lithium en cas de coupure d’alimentation
o WRAM (Window DRAM) : VRAM 25% plus rapide externe
o SGRAM (Synchronous Graphic RAM) :
 SDRAM à usage graphique
 Pas de lecture/écriture en simultané
 Modification des données par blocs (mode rafales)
Caractéristiques d’une mémoire
Capacité : volume global d’informations (en bits) stockable
Temps d’accès : intervalle de temps entre la demande de lecture/écriture et la disponibilité de la donnée
Temps de cycle : intervalle de temps minimal entre 2 accès consécutifs
Débit : volume d’information échangé par unité de temps, exprimé en bits par seconde
Rémanence/Volatilité

Hiérarchie des mémoires

Comparaison SRAM vs DRAM


Type de RAM SRAM DRAM
Composition 6 transistors 2 à 3 transistors avec 1 condensateur
Vitesse Rapide Lente
Rafraîchissement périodique INUTILE NECESSAIRE
Lecture destructive Non Oui
Prix Chère Peu chère
Densité d’intégration Faible Grande
Utilisation Mémoire cache Mémoire centrale/principale
µ-CPU

Circuit intégré complexe Capable d'effectuer séquentiellement et automatiquement des suites d'opérations élémentaires

o Unité de commandes : lire, décoder et envoyer les instructions à l’unité d’exécution


 Horloge
 Séquenceur : exécution séquentielle des instructions
 Registre d’instruction (RI = iR = instruction Register) : registre contenant l’instruction
en cours d’exécution
 Compteur Ordinal (CO = PC = Program Counter) : registre pointant sur la prochaine
instruction à exécuter
 Mémoire
 Registre d’adresse (RA = AR = Adress Register) : registre contenant l'adresse de la case
mémoire lue ou écrite lors d'un accès à la mémoire
 Registre tempon

o Unité d’exécution : effectuer les tâches provenant de l’unité de commande


 Unité arithmétique et logique (UAL) : calcul binaire et logique
 Accumulateur : registre mémoire de l’UAL

 Unité de virgule flottante (FPU) : calcul sur les réels


 Registre d’état (SR=State Register) : décrire l'état du CPU à l’aide de bit-flag

o Unité de gestion d’E/S : gestion des flux de données échangées entre les E/S et la RAM
Schéma synoptique de base de l’architecture de Von Neumann :
architecture du 1er ordinateur

1-15 : Entrées d’aiguillage=µ-opérations=µ-ops=MOPS

BD = Bus Driver

R0 = Registre d’entrée de l’UAL

R1 = Accumulateur

micro-Mem= micro-mémoire (stockage des micro-instructions)

1 : initialiser le µ-PC (pointeur des µ-instructions)

2 : charger à partir du décodeur d’instruction

3 : charger le contenu de la mémoire dans le bus de données

4 : choix du mode lecture ou écriture

5 : charger le contenu du PC dans le BD

6 : charger le PC avec une valeur ou une adresse

7 : incrémenter le PC

8 : charger le contenu de R1 dans la mémoire

9 : charger le registre d’adresse

10 : charger le contenu du registre d’adresse dans le bus d’adresse

11 : charger le contenu du bus d’adresse dans R0

12 : charger le résultat de l’UAL dans R1

13 à 15 : choix d’une opération à faire dans l’UAL ( + - * /… )


PRISE EN CONSIDERATION DES SAUTS CONDITIONNELS

- 6 : entrée BRA

- 16 : entrée du bit N Z V C

- 17 : jump if negative

- 18 : jump if zero

- 19 : jump if carry

- 20 : jump if overflow
PRISE EN CONSIDERATION DE LA RECURSIVITE AVEC UNE PILE

- 21 : charger le registre de donnée avec une donnée

- 22 : charger le contenu du registre de donnée dans le bus de données

- 23 : incrémenter la pile

- 24 : décrémenter la pile

- 25 : charger le contenu du pointeur de pile dans le bus d’adresse


PRISE EN CONSIDERATION DE « JSR »

- 21 : charger le registre de donnée avec une donnée

- 22 : charger le contenu du registre de donnée dans le bus de données


MICRO-PROGRAMMES DES MICRO-INSTRUCTIONS USUELLES

Fetch : charger et décoder une instruction


o MOP 2,3,5,7 à 1

NOP (No OPeration) : réinitialiser le µ-PC


o MOP 1 à 1

LDIMM (LoaD IMMediate) : charger des constantes dans des registres


o MOP 1,3,5,7,11 à 1

LD (LoaD) : charger une variable d’adresse connue dans R0


o Exécution en 2 CPI car utilisation de 2 adresses différentes en RAM avec un seul bus de données et un seul bus d’adresse
o 1er CPI : MOP 3,5,7,9 à 1
o 2ème CPI : MOP 1,3,10,11 à 1
ACC Cycle d’exécution d’une instruction
C1
Séquenceur
UAL B1

C1 Code Adresse RI
C1

A4 B2 C1
RM
UC
B3 CO

A3 A2
A1 +1
Opérande
RA
Instruction
Mémoire centrale
A1 : CO dans RA (adresse prochaine instruction dans RA)
A2 : incrémentation de 1 de CO (prochaine instruction à l’adresse suivante)
A3 : lecture de l’instruction et rangement dans RM CHERCHER
A4 : transfert de l’instruction de RM à RI pour décodage
B1 : analyse du code instruction ; envoi des signaux de commande DECODER
B2 : adresse de l’opérande dans RA
B3 : lecture de l’opérande en mémoire et rangement dans RM EXECUTER
C1 : calcul sur opérandes dans RM et ACC (a été précédé par un transfert du 1er opérande de la
O mémoire vers ACC et est suivie d’un transfert du résultat de ACC vers la mémoire).
U C1 : branchement adresse est rangée dans CO (devient la prochaine instruction à exécuter).
Méthode de gestion des E/S
Scrutation/Spolling: application du « handshaking »
o Le processeur interroge chaque dispositif pour déterminer la routine
dont il a besoin
o Simple mais coûteux

Interruptions : signaux de requêtes envoyés au processeur


o Interruptions logicielles : trappes/déroutements
 𝐸𝑟𝑟𝑒𝑢𝑟 𝑑𝑢𝑟𝑎𝑛𝑡 𝑙 ′ 𝑒𝑥é𝑐𝑢𝑡𝑖𝑜𝑛(𝑒𝑥 : 𝑑𝑖𝑣𝑖𝑠𝑜𝑛 𝑝𝑎𝑟 0)
 𝑃𝑒𝑟𝑡𝑒 𝑝𝑎𝑟𝑡𝑖𝑒𝑙𝑙𝑒 𝑑𝑢 𝑐𝑜𝑛𝑡𝑒𝑥𝑡𝑒 𝑑′ 𝑒𝑥é𝑐𝑢𝑡𝑖𝑜𝑛 Causes :
-l’horloge en cédant
 𝐴𝑟𝑟ê𝑡 𝑑′ 𝑢𝑛 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑚𝑒 𝑝𝑜𝑢𝑟 𝑒𝑥é𝑐𝑢𝑡𝑒𝑟 𝑢𝑛𝑒 𝑟𝑜𝑢𝑡𝑖𝑛𝑒 𝐵𝐼𝑂𝑆/𝐷𝑂𝑆 la main à l’OS,
o Interruptions matérielles : l’overflow
 Le périphérique envoie un signal sur la ligne IRQ (Interruption ReQuest) du contrôleur d’interruption (PIC) de périphérique -accès à une zone
 Ce contrôleur associe un numéro à ce signal pour être identifiable par le CPU mémoire
 Le CPU exécute la routine d’interruption associé à ce numéro (ISR : Interrup Service Routine) en examinant protégée/inexistante
le vecteur d’interruption (zone de la RAM contenant les adresses des routines d’interruptions) -exécution d’une
 Type masquable (INTR=INTerrupt Request) : instruction inconnue
ou (privilégié en
 Demande d’interruption masquable (une interruption qui ne sera prise en compte immédiatement, mais traitée plus tard) mode slave)
 Utilisée lors de l’arrivée d’un signal
 Type non masquable (NMI=Non Maskable Interrupt) :
 Demande d’interruption non masquable (à traiter immédiatement lors de sa réception)
 Utilisée lors de la détection d’erreur matérielle (ex : RAM défaillante)
 Type INTA (INTerrupt Aknowledge) : une INTR traitée

DMA : Accès Direct à la Mémoire


o Transfert bidirectionnel de données via un Contrôleur de DMA (DMAC doté de 8 canaux)
entre la RAM et les périphériques
o Le CPU fournit au DMAC les infos de l’échange (taille du bloc à transférer, adresse de
début du bloc, sens de l’échange) et l’autorise
o Modes d’échange :
 BLOCK : le DMAC réserve le bus mémoire et transfert en une seule fois
 Mode le plus rapide mais interdit au CPU d’accéder à la mémoire
 Cycle Stealing (CS) : transfert d’un octet à la fois avant de céder la mémoire au CPU
 Transparent : le DMAC accéde à la mémoire si le CPU ne l’utilise pas
o Extension du concept DMA : PPU (Peripheral Process Unit)=Un autre processeur gère
les transferts de données entre les périphériques au lieu du DMAC
Optimisation des performances : PIPELINE
PIPELINE :
o Décomposition de l’exécution d’une instruction en sous-opérations s’exécutant indépendamment les unes des autres
o Chaque sous-opération est affectée à une sous-unité du CPU qui la traite,
d’où une organisation en étages
o Amélioration du temps moyen par tâche (throughput)
o Performances limitées par l’étage le plus lent
o Avantages :
 Meilleur utilisation du CPU
 Parallélisme ente instructions
 ↑ fréquence ⟹↑ performances
o Inconvénients :
 Effet joule car ↑ fréquence
 Besoin d’indépendance entre les sous-opérations (problème à
résoudre à l’aide du compilateur ou du matériel)
o Aléas : perturbateurs du pipeline
 Structure : matériel incompatible avec quelques combinaisons d’instructions
 Solution : bulle de pipeline (suspendre le piepline + dupliquer les unités du chemin de données)
 Données : instruction dépendant des résultats non encore disponibles
 Solution :
1. Suspendre le pipeline
2. Réordonnancement à la compilation ou par le CPU à la volée
3. Court-circuiter le pipeline (injecter le contenu de la sortie de l’UAL dans une de ses entrées)
 Contrôle : instruction ou Bcc à issue inconnue
 Solution :
1. Dupliquer le pipeline
2. Précharger l’instruction de branchement (même si elle n’est pas utilisée)
3. Prévoir les Bcc :
 Supposer qu’un Bcc particulier est toujours/jamais pris
 Supposer qu’il exite des codes d’opérations favorisant les Bcc
 Se baser sur un historique des Bcc
4. Générer un NOP après le Bcc le temps que ce Bcc s’achève
EXEMPLES DE PIPELINE
Alternatives au pipeline :
Architecture VLIW vs Architecture Superscalaire
Architecture Superscalaire VLIW
Décider des instructions à exécuter en parallèle
Principe
Lors de l’exécution du programme Lors de la compilation
Contrôle des
dépendances
Par matériel Par logiciel (compilateur)
de données et
des instructions
On lit en même temps des blocs d’instructions séquentielles On définit des groupes de plusieurs instructions, qui sont lues, décodées et
compilées. exécutées en parallèle.
Méthode
Le CPU décide dynamiquement des instructions du bloc à exécuter en Chaque groupe devient une « super-instruction » destinée à être lue d’un bloc
parallèle. par le processeur VLIW.
- Plus grande marge de manœuvre pour le scheduling des instructions - Pas de scheduling des instructions fait par le CPU
Avantages
- Un compilateur traditionnel pour produire le code exécutable - Un CPU plus simple à concevoir et plus rapide.

Schéma
CONNECTIQUE : CHIPSET & BUS
CHIPSET : circuit intégré préprogrammé permettant de gérer les flux de données entre le processeur, la mémoire et les périphériques
o Synchronisation des E/S avec le CPU
BUS : système de communication entre les composants d'un ordinateur
o Caractéristiques :
 Largeur en bits : nombre de lignes parallèles (1 ligne transmet 1 SEUL BIT)
 Fréquence en MHz : nombre d’accès au bus par seconde
 Bande passante théorique maximal: Largeur du bus x fréquence en Mo/s
o Types :
 Bus processeur/système (FSB=Front Side Bus):
bus le plus rapide, gérant les échanges entre le CPU et le northbridge
 Bus mémoire : bus gérant les échanges entre le CPU et la RAM
 Bus de données : bus véhiculant les données et les instructions à traiter
 Bus d’adresse : bus indiquant l’adresse des cases mémoires lors du transfert de données
 Bus de commandes : bus synchronisant le bus de données et celui d’adresse
 Bus d’E/S :bus assurant la communication entre les différents éléments de l’ordinateur
 Bus de périphériques : communication entre les périphériques et l’ordinateur
 USB : Universal Serial Bus
 SCSI : Small Computer System Interface
 Firewire
 PCMCIA : Personal Computer Memory Card International Association

 Bus d’extension :
 ISA (Industry Standard Architecture) : bus traitant les informations indépendamment des performances du CPU
 MCA (Micro Channel Architecture) : bus plus performant que l’ISA
 EISA (Extended ISA) : bus plus performant que l’ISA, concurrençant le MCA

 Bus locaux :
 PCI(-X) ( (eXtended) Peripheral Component Interconnect) : bus synchrone permettant une architecture Plug & Play
 AGP (Accelerated Graphical Port) : bus permettant l’insertion d’une carte graphique dans la carte mère
 VLB (Video Electronics Standards Association Local Bus): bus de connexion de cartes d’extension avec des performances meilleurs que chez l’ISA
Schéma d’une carte mère actuelle
Mémoires Caches
Mémoires statiques, rapides et très chères, accélérant les échanges entre la RAM et le CPU.
Principe de fonctionnement: coopération avec la RAM
o Les mots de mémoire centrale les plus fréquemment utilisés sont placés dans le cache.
o Le processeur cherche d’abord le mot dans le cache () :
 Si le mot est présent (succès = cache hit) il l’obtient rapidement ().

 Si le mot n’est pas présent (échec = cache miss), le processeur fait un accès à la mémoire centrale (, plus lent) et place ce mot dans le cache ().

 Ultérieurement si ce mot est demandé il sera obtenu plus rapidement ().

Principe de localité : les données les plus souvent utilisées sont co-localisées.
o Localité spatiale : un programme utilise des instructions et des données avec des adresses proches
o Localité temporelle : un programme travaille avec les instructions et les données déjà utilisées
Schéma de lecture & d’écriture dans le cache
Lecture Ecriture

HIT

MISS
Principe de lecture
Algorithme Commentaire
Le processeur cherche d’abord si le mot mémoire
adressé est dans le cache (mot présent).

Si l’information est présente on parle de succès


(cache hit).

Sinon l’information n’est pas dans le cache, on


parle alors d’échec (cache miss).

Dans ce cas, il faut aller chercher l’information


dans la mémoire centrale et placer celle-ci dans
le cache (charger cache) avec éventuellement un
remplacement d’informations actuellement
présentes dans le cache puisque sa taille est finie
( charger cache (remplacer) ).

Enfin, le processeur est chargé avec l’information


maintenant disponible dans le cache.

Principe d’écriture
Algorithme Commentaire
Le processeur doit accéder à la mémoire cache
pour vérifier si l’information est présente dans le
cache (mot présent) et éventuellement la
modifier (modifier cache).

Si toutes les informations sont dans la RAM, alors


il faut maintenir la cohérence des informations
entre le cache et la RAM, en modifiant les 2
mémoires lors de l’écriture dans le cache.

Sinon, il faut modifier directement la RAM


(modifier mémoire principale).
Structure de la mémoire cache :

 Nombre de blocs du cache : M= 2(n-p)


 Longueur d’une adresse : n bits
 Nombre de lignes d’adresse : C = 2n
 Taille d’un bloc : K= 2p mots

 On a en général C >> M.

𝒏𝒐𝒎𝒃𝒓𝒆 𝒅𝒆 𝒃𝒍𝒐𝒄𝒔 𝒅𝒂𝒏𝒔 𝒍𝒂 𝑹𝑨𝑴


 Chaque ligne contient une étiquette, de taille T = 𝒍𝒐𝒈𝟐 (𝒏𝒐𝒎𝒃𝒓𝒆 𝒅𝒆 𝒍𝒊𝒈𝒏𝒆𝒔 𝒅𝒂𝒏𝒔 𝒍𝒆 𝒄𝒂𝒄𝒉𝒆),
composée d’une partie de l’adresse de la mémoire principale, qui identifie le bloc stocké.

Structure de la RAM :

 Si on lit un mot d’un bloc de mémoire, on transfère ce bloc dans l’une des lignes du cache.

 Si les lignes de cache sont moins nombreuses que les blocs de mémoire principal,
on utilise des algorithmes de correspondance entre les blocs de la RAM et les lignes de cache

 Nombre de blocs de la RAM: M = 2(N-P)


 Longueur d’une adresse : N bits
 Nombre de lignes d’adresse : 2N
 Taille d’un bloc : K= 2Pmots
Algorithmes de correspondance :

o Correspondance directe :

 La mémoire utile contient les données, où chaque ligne a une longueur de K mots.
 Le répertoire comporte K lignes.
 Chaque ligne L contient un bit de validité indiquant si des données sont disponibles dans L.
 Chaque ligne L contient une clé permettant d’identifier la ligne souhaitée dans la RAM.
 Le comparateur compare la clé et l’étiquette.

 1 ligne du cache = un bit de validité, une clé et une ligne de données.

 Lorsqu’une adresse est présentée au cache, le contrôleur de cache


décompose cette adresse en 3 parties :

 L’index qui repère une entrée du cache.


 l’offset (déplacement en nombre de mots) qui repère un mot à
l’intérieur d’une ligne de cache.
 L’étiquette qui correspond à la clé souhaitée dans le répertoire

 Adresse = Etiquette + index + offset

 Pour vérifier si une donnée est dans le cache :

1. Le contrôleur de cache extrait la valeur d’index de l’adresse


2. Le comparateur vérifie que l’entrée pointée par l’index contient
bien l’étiquette

 Avantages :
 Simple, facile à réaliser
 Bon résultats

 Inconvénients :
 Collisions (des adresses différentes ayant le même numéro d’index)
Correspondance associative :

 Une ligne de données entre dans n’importe quelle entrée libre du cache
 Adresse = étiquette + offset

 Le contrôleur de cache vérifie en une seule opération si une étiquette est présente dans une des lignes du répertoire.

 C’est pourquoi il y a autant de comparateurs que de lignes.

 Inconvénients :
 Cher
 Complexe
o Correspondance mixte/associative par blocs :

 Le cache est divisé en blocs gérés comme des caches directs.


 Il existe un comparateur par bloc.

 Adresse = étiquette + index + offset

 Lorsqu’une adresse est présentée au cache, l’index référence simultanément une ligne par bloc

 En une seule opération les comparateurs vérifient si l’étiquette est dans une des lignes

 Avantages :

 Performances du cache associatif à prix moindre


Algorithmes de remplacement des lignes : algorithmes utilisés lorsqu’une ligne de la mémoire cache doit être remplacée.

o FIFO (First In, First Out) : la ligne remplacée est la ligne la plus anciennement chargée.

o LRU (Least Recently Used) : la ligne remplacée est la ligne la moins récemment accédée.
 Avantage : Cette politique est meilleure que la précédente car elle tient compte des accès effectués par le processeur au cache
 Inconvénient : elle est coûteuse car nécessite de maintenir l’ordre des accès réalisés.

o NMRU (Not Most Recently Used) : la ligne remplacée n’est pas la plus récemment utilisée.
 Dans cette politique, la ligne remplacée est une ligne choisie au hasard dans l’ensemble des lignes du cache, hormis la ligne la plus récemment accédée.
 Avantage : implémentation facile, la plus performante

Facteur de performances d’un cache : Délai d’un miss et nombre de miss

Type de miss :
o Obligatoires : lors de l’accès à une adresse pour la 1ère fois
o De capacité : cache plein
o De conflit : 2 adresses distinctes désignent une même ligne du cache

Niveaux de cache :

o L1 : cache petit, très rapide, dans le CPU


 Le plus souvent, au niveau 1, il existe 2 caches séparés, un pour les
instructions et un pour les données.
 Ces deux caches fonctionnent en parallélisme total et profitent au
maximum des techniques de pipeline.

o L2 :cache plus grand , très rapide, en dehors du CPU


 Le cache de niveau 2 est unique et mélange données et instructions.

o L3 : la RAM
Circuits de l’arithmétique binaire
Opération Algorithme/Formules Schéma

𝑆𝑖 = (𝐴𝑖 ⨁𝐵𝑖 )⨁𝐶𝑖


1 bit
𝐶𝑖+1 = 𝐴𝑖 𝐵𝑖 + 𝐶𝑖 (𝐴𝑖 ⨁𝐵𝑖 )
Addition

N bits
Additionneur
Soustracteur

𝑎 − 𝑏 = 𝑎 + 𝑏̅ + 1
Multiplication

Réseau Séquentielle Binaire


Divison binaire

You might also like