• Aucun résultat trouvé

Architecture et Système

N/A
N/A
Protected

Academic year: 2022

Partager "Architecture et Système"

Copied!
22
0
0

Texte intégral

(1)

Architecture et Syst `eme

Stefan Schwoon

Cours L3, 2020/2021, ENS Cachan

(2)

Vue abstraite d’un ordinateur

mémoire processeur

registres

adresse données instructions

assembleur

Ceci est la machine abstraite propos ´ee au programmeur.

Jusqu’aux ann ´ees 70/80 : r ´ealisation plus au moins directe de cette architecture.

Depuis : gestion de plus en plus complexe derri `ere les sc `enes (micro-architecture)

(3)

Gestion m ´emoire/processeur avanc ´ee

Besoins d’un syst `eme d’exploitation :

partage du processeur entre diff ´erents processus/utilisateurs protection et partage m ´emoire

gestion de privil `eges (mode noyau/mode utilisateur) Optimisations :

parall ´elisation (pour acc ´el ´erer le calcul) m ´emoire rapide (cache)

r ´eordonnancement d’instructions / prediction de branches r ´eduction la consommation ´energ ´etique

(4)

Remarques :

Les d ´etails techniques varient pas mal entre les diff ´erents ordinateurs/syst `emes.

Quelques d ´etails de l’exposition suivante sont valables pour un processeur Intel i7 et les versions courantes de Linux, mais les principes sont applicables

`a tous les syst `emes courants.

(5)

M ´emoire virtuelle

mémoire réelle instructions

assembleur

adresse virtuelle

adresse réelle

données

traduction

processeur registres

Les adresses fournies par les instructions assembleur sont des adresses virtuelles.

Une unit ´e d ´edi ´ee (Memory management unit, MMU) les traduit vers des adresses physiques.

La traduction est telle qu’un processus n’a acc `es qu’ `a la m ´emoire qui lui est propre (au moins, en th ´eorie. . . ).

(6)

Traduction m ´emoire virtuelle ↔ r ´eelle

Exemple : traduction sur un processeur Intel 64-bit Espace virtuel :

adressage avec 48 bits (donc th ´eroriquement 256 Tera) d ´ecoup ´e en pages (bloc de m ´emoire contigu ¨e)

taille d’une page : 1 GB, 2 MB, 4KB, selon le cas une adresse se d ´ecoupe donc en:

– num ´ero de page (les bits les plus significatifs) – ´ecart/offset (les bits les moins significatifs)

(7)

Visualisation

Une m ´emoire virtuelle traduit donc le num ´ero d’une page virtuelle vers une page r ´eelle, en gardant l’ ´ecart: X

X X 7 X 5 X X X 3 4 X 6 1 2

page virtuelle

MEMOIRE

VIRTUELLE MEMOIRE

VIVE

cadre de page

0k-4k 4k-8k 8k-16k 16k-20k 20k-24k 24k-28k 28k-32k 32k-36k 36k-40k 40k-44k 44k-48k 48k-52k 52k-56k 56k-60k 60k-64k

0k-4k 4k-8k 8k-16k 16k-20k 20k-24k 24k-28k 32k-36k

(8)

Propri ´et ´es de la traduction:

partielle, injective

r ´ealis ´ee `a l’aide d’un tableau de pages propre `a chaque processus, cr ´e ´e et maintenu par le noyau

Un registre d ´edi ´e (CR3) contient le pointer vers le tableau du processus actuel.

Lorsque le syst `eme bascule entre deux processus, c’est ce registre qui change de valeur.

(9)

Remarques

Lors de l’ex ´ecution du processus, les acc `es m ´emoire se font ind ´ependamment du noyau, le mat ´eriel s’en occupe.

Certains appel syst `eme (p.ex. malloc, brk) modifient le tableau de traduction.

Traitement d’un acc `es m ´emoire ill ´egal :

le processeur d ´eclenche une interruption ;

le syst `eme rattrape cette exception et envoye un signal (SIGSEV) au processus ;

le signal termine le processus (sauf s’il le rattrape).

(10)

D ´etails de la pagination

Traduction r ´ealis ´ee `a l’aide d’un trie (tableau `a plusieurs niveaux).

Une partie des pages r ´eelles (de taille 4 KB) est utilis ´ee pour stocker les tableaux.

4 KB contiennent 512 = 29 adresses `a 64 bits.

Dans le tableau de premier niveau on utilise les 9 bits les plus significatifs pour obtenir l’adresse d’un bloc de niveau 2.

Apr `es 4 niveaux (4 × 9 = 36) on obtient l’adresse d’un bloc de 4 KB (4096 = 212).

Les 16 bits non-utilis ´es stockent des informations sur les privil ´eges:

acc `es en ´ecriture, page ex ´ecutable, acc `es privil ´egi ´e (en mode noyau seulement), . . .

(11)

Organisation de la m ´emoire virtuelle

Sous Linux, un processus vit dans la moiti ´e basse de la m ´emoire virtuelle (bit 47 = 0).

La partie haute est reserv ´e au noyau.

Organisation en code, tas et pile:

CODE TAS PILE

cache 0..FF

PARTITION SWAP CODE

TAS PILE

RAM 0..777

777...FFF FFF7...FFFF

(12)

Gestion du tas

Une grande partie de l’espace virtuelle ne correspond `a aucune page r ´eelle (et les acc `es `a ces adresses d ´eclenchent une violation de segment).

Un processus peut ´elargir la taille de son tas avec brk.

malloc / free : Fonctions en mode utilisateur qui organisent le tas (font appel `a brk si n ´ecessaire).

Ces fonctions utilisent un partie du tas pour organiser les allocations.

Les bogues (d ´ebordement de m ´emoire) peuvent corrompre cette information, m ´enant `a des effets secondaires non pr ´evisibles.

(13)

Translation lookaside buffer (TLB)

Avec le principe ´evoqu ´e pr ´ec ´edemment, chaque acc `es m ´emoire virtuel se traduit en cinq acc `es r ´eels → inefficace

Du coup, on m ´emorise les pages utilis ´ees le plus souvent dans le TLB (m ´emoire associative mais limit ´ee).

Attention, une m ˆeme adresse virtuelle correspond `a plusieurs adresses r ´eelles, en fonction du processus:

Certains processeurs r ´ecents offrent un r ´egistre stockant l’identifiant du processus actuel, pris en compte par le TLB.

Dans d’autres processuers, le TLB doit ˆetre invalid ´e quand on bascule vers un autre processus.

(14)

Les caches

registers

CPU L1

cache main IC

cacheL2 main

memory secondarymemory

Id ´ee: garder les donn ´ees utilis ´ees souvents dans une m ´emoire sp ´eciale rapide, mais de taille limit ´ee

Facteurs limitants : co ˆut, espace physique limit ´e

Cache `a plusieurs niveaux, les cache distants sont plus lents mais aussi plus grands

Transparent : Le programmeur acc `ede `a une adresse virtuelle, le contenu se trouve dans la m ´emoire principale ou dans l’un des caches.

(15)

DRAM vs SRAM

DRAM (dynamic random-access memory)

T C access

data

r ´ealisation compacte (p.ex. un seul transistor + capaciteur) interpr ´etation: capaciteur charg ´e = “1”

lecture d ´estructive, fuite dans les capaciteurs → r ´echarge p ´eriodique compact mais lent, typiquement utilis ´e pour m ´emoire principale

(16)

DRAM vs SRAM

SRAM (static random-access memory)

p.ex. r ´ealisation par une bascule D

moins compact mais plus rapide, utilis ´e pour les caches p.ex. L1 = int ´egr ´e dans le CPU, L2 = dans un autre chip

Une adresse dans le cache L1 est fournie tr ´es rapidement (∼ 4 cycles).

Pour r ´ecup ´erer une adresse dans la m ´emoire principale, il faut une centaine de cycles !

(17)

M ´emoire secondaire

(aussi appell ´ee va-et-vient, swap space)

zones de m ´emoire virtuelles stock ´ees (temporairement) sur disque dur m ´ecanisme sp ´ecial de pagination:

une page virtuelle peut ˆetre marqu ´ee comme “residant en m ´emoire virtuelle”

lors d’un acc `es `a une telle page, le processeur d ´eclenche une interruption l’interruption est capt ´ee par le noyau qui lib `ere une page m ´emoire r ´eelle pour y stocker la page virtuelle, puis change la table de pagination

le processeur r ´esume son travail et d ´elivre le r ´esultat transparent pour le processus, mais tr `es lent

(18)

R ´ealisation d’un cache

Grosso modo, le cache fonctionne comme une petite m ´emoire virtuelle : on d ´ecoupe la m ´emoire en petites pages (appell ´ees cache line),

p.ex. 64 octets pour le L1 au i7

le cache stocke un nombre limit ´e de lignes

lors d’un acc `es m ´emoire, on teste si la ligne de cache est stock ´e au cache (*) si oui, on utilise le cache

sinon, on r ´ecup `ere la ligne depuis la m ´emoire principale et on vire une autre ligne du cache.

(*) test par m ´emoire associatif, similaire au TLB

(19)

R ´eordonnancement d’instructions

Un processeur se trouvent face `a des instructions de dur ´ee variable : raisons inh ´erentes (instructions complexes vs simples)

d ´elais dus aux acc `es m ´emoire (et p ´eriph ´erique)

Pour acc ´el ´erer le calcul et mieux utiliser les r ´esources, les processeurs font de nombreuses optimisations derri `ere les sc `enes :

(d ´ecoupage d’instructions d’assembleur en micro-instructions)

r ´eordonnancement d’instructions consid ´er ´ees comme ind ´ependantes (read before write dans l’Intel, voir l’Algorithme de Peterson)

repartition entre plusieurs unit ´es d’ex ´ecution en parall `ele

(20)

Ex ´ecution sp ´eculative

Supposons que le processeur doit ex ´ecuter un branchement conditionnel, alors que le r ´esultat de la condition n’est pas encore connue (p.ex. en raison des

acc `es m ´emoire),

Il peut donc commencer `a ex ´ecuter une branche (ou les deux) en attendant l’ ´evaluation de la condition. Le r ´esultat de la mauvaise branche sera alors invalid ´ee.

Pour savoir quelle branche devrait ˆetre ex ´ecut ´ee, le processeur poss `ede une unit ´e pour la pr ´ediction des branches.

(21)

Failles Spectre et Meltdown

Failles d ´ecouvertes en 2017 / 2018 Principe de Spectre:

Un attaquant fournit un param `etre hors limite `a une fonction victime.

La fonction victime teste si le param `etre est bon et le rej `ete sinon.

Pourtant, la pr ´ediction de branche fait une ex ´ecution sp ´eculative avec le mauvais param `etre.

Le mauvais param `etre fait acc `eder la fonction `a une valeur s ´ecr `ete.

En fonction de la valeur s ´ecr `ete la performance du cache sera diff ´erente.

→ la valeur s ´ecr `ete peut ˆetre d ´ecouverte

(22)

Failles Spectre et Meltdown

Failles d ´ecouvertes en 2017 / 2018 Principe de Meltdown:

Le noyau garde toute la m ´emoire physique dans une partie de la m ´emoire virtuelle. Le descripteur de ces pages ne permet que des acc `es par le noyau.

Un attaquant y acc `ede quand m ˆeme.

Cette acc `es correspond `a plusieurs micro-instructions:

r ´ecup ´erer le descripteur de pages, tester le r ´esultat, obtenir la case m ´emoire ou rejeter l’acc `es, . . .

Effet de cache et d’ex ´ecution sp ´eculative: on r ´ecup `ere la case m ´emoire sp ´eculativement.

L’effet dans le cache peut ˆetre m ´esur ´e comme dans Spectre.

→ l’attaquant d ´ejoue la protection m ´emoire

Références

Documents relatifs

[r]

Les nouvelles conditions de versement des allocations à compter du 1er mars 2021 publiées dans l'additif auxconditions générales 2021 du 26 février 2021 sont applicables dans ce

Passage de param` etre par void* : on fournit l’emplacement m´ emoire contenant le param` etre sans en pr´ eciser

Nous en profitons également pour rappeler à vos enfants de faire preuve de la plus grande prudence sur internet et ne jamais répondre à des sollicitations les invitant

Donne les coordonnées de deux couples vérifiant les deux inégalités (et donc solutions du système d’inéquations) :. Donne les coordonnées du point d’intersection entre les

Nous en profitons également pour rappeler à vos enfants de faire preuve de la plus grande prudence sur internet et de ne jamais répondre à des sollicitations les invitant à exhiber

• Un signal ´ emis sur une condition peut r´ eveiller le processus et le faire passer dans l’´ etat prˆ et}. Etats d’un

1.2) Supposons que, quel que soit le choix de P sur la verticale, l’horizontale de P est unicolore. Alors, partant d’un point P quelconque, les parall` eles aux bissectrices des