3.3 Memoria virtuale generalità

40
Central Process Unit Architettura degli elabor atori 1 - A. Memo 1 3.3 Memoria virtuale 3.3 Memoria virtuale generalità generalità Il principio della memoria virtuale scaturisce da due esigenze distinte e convergenti: permettere l’allocazione in memoria di più program- mi diversi permettere l’esecuzione di un programma di dimen- sioni maggiori della memoria principale inoltre consente un utilizzo più efficiente e semplifi- cato della memoria fisica

description

3.3 Memoria virtuale generalità. Il principio della memoria virtuale scaturisce da due esigenze distinte e convergenti: permettere l’allocazione in memoria di più program- mi diversi permettere l’esecuzione di un programma di dimen- sioni maggiori della memoria principale - PowerPoint PPT Presentation

Transcript of 3.3 Memoria virtuale generalità

Page 1: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

1

3.3 Memoria virtuale3.3 Memoria virtualegeneralitàgeneralità

Il principio della memoria virtuale scaturisce da due esigenze distinte e convergenti: permettere l’allocazione in memoria di più program-

mi diversi permettere l’esecuzione di un programma di dimen-

sioni maggiori della memoria principale inoltre consente un utilizzo più efficiente e semplifi-

cato della memoria fisica

Page 2: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

2

3.3 Memoria virtuale3.3 Memoria virtualespazio virtuale e fisicospazio virtuale e fisico

Vanno distinti gli indirizzi virtuali, quelli utilizzati dal pro-

grammatore che suppone di avere a disposizione una memoria illimitata (spazio di indirizzamento virtuale)

indirizzi fisici, quelli in cui è realmente allocato in quel momento il dato cercato (spazio di indirizzamento fisico)

Page 3: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

3

3.3 Memoria virtuale3.3 Memoria virtualegestionegestione

La gestione della memoria virtuale è molto simile a quella della cache:

memoria principale più veloce e memoria secondaria molto piu estesa ed economica

suddivisione in blocchi di memoria se il dato cercato non è in memoria

principale, si preleva un blocco dalla secondaria e lo si alloca in principale

Page 4: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

4

3.3 Memoria virtuale3.3 Memoria virtualefunzione di traduzionefunzione di traduzione

Deve essere creata una funzione di traduzione f() tra indirizzo fisico e logico.

Sv = {0, 1, ..., N-1} spazio indirizzamento virtuale

Sf = {0, 1, ..., M-1} spazio indirizzamento fisico

Sv f() Sf

inoltre tale funzione deve verificare se il dato relativo ad un certo indirizzo virtuale è presente in memroia fisica.

Page 5: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

5

3.3 Memoria virtuale3.3 Memoria virtualecache cache memoria virtualememoria virtuale

La cache differisce dalla memoria virtuale: i blocchi di memoria della cache hanno

dimensioni molto inferiori la cache viene gestita integralmente dalla

CPU o da un dispositivo hardware dedicato la memoria virtuale interagisce a livelli più

alti (influenza anche il sistema operativo)

Page 6: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

6

3.3 Memoria virtuale3.3 Memoria virtualepaginazione 1paginazione 1

Suddivisione delle memorie primaria e secondaria in blocchi della stessa dimensione prestabilita.

Caratteristiche: Funzione di traduzione semplificata Frammentazione interna

Page 7: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

7

3.3 Memoria virtuale3.3 Memoria virtualepaginazione 2paginazione 2

0000-00FF

0100-01FF

0200-02FF

0300-03FF

memoria secondaria suddivisa inpagina da 1KB ciascuna

indirizzi logici

f() 0000-03FF

0400-07FF

memoria principalesuddivisa in frameda 1KB ciascuno

indirizzi fisici00

01

02

03

numerodi pagina

Page 8: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

8

3.3 Memoria virtuale3.3 Memoria virtualepaginazione 3paginazione 3

page L offset

indirizzo logico

tabella di traduzionev pageL diritti pageFv pageL diritti pageF v pageL diritti pageF

page F offset

indirizzo fisico

al controlloredegli accessi

Page 9: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

9

3.3 Memoria virtuale3.3 Memoria virtualepaginazione 4paginazione 4

Page Fault, quando la pagina richiesta non è in memoria fisica

Protection Fault, quando il richiedente non ha i diritti per quella richiesta.

il controllore degli accessi può essere direttamente la CPU, o un dispositivo dedicato, o direttamente il Sistema Operativo

Page 10: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

10

3.3 Memoria virtuale3.3 Memoria virtualeframmentazione internaframmentazione interna

Difficilmente la richiesta di memoria coincide con un multiplo esatto della dimensione di una pagina. Lo spazio residuo non può essere utilizzato da altri.

Maggiore è la dimensione della pagina e maggiore è l’incidenza della fram-mentazione

Page 11: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

11

3.3 Memoria virtuale3.3 Memoria virtualedimensione della paginadimensione della pagina

Una pagina di grandi dimensioni implica: alta frammentazione minor numero di elementi nella tabella ma

campi pageL e pageF più ampi maggiore velocità (bit per secondo) di

trasferimento tra memoria principale e secondaria

dimensione tipica attuale 4 KB

Page 12: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

12

3.3 Memoria virtuale3.3 Memoria virtualerimpiazzo delle paginerimpiazzo delle pagine

Least Recently Used– pagina usata meno recentemente– difficile da valutare (lista ordinata, dove ogmi

pagina referenziata viene posta in cima, e l’LRU è l’ultimo della lista)

Not Recently Used– pagina non utilizzata recentemente– bit di utilizzo, periodicamente azzerato

Page 13: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

13

3.3 Memoria virtuale3.3 Memoria virtualerichiesta delle paginerichiesta delle pagine

per riferimento (on demand)– ogni volta che viene richiesto un dato di una

pagina non presente in memoria principale precaricata (prefetching)

– basandoci sulla proprietà di località spaziale, anticipare la richiesta delle pagine adiacenti a quella in uso

– non sempre funziona e può creare ulteriori fault

Page 14: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

14

3.3 Memoria virtuale3.3 Memoria virtualecongruenza delle paginecongruenza delle pagine

Anche con la memoria virtuale c’è il problema della scrittura dei dati e quindi della congruenza delle pagine tra memoria principale e secondaria.

Data la notevole lentezza della memoria secondaria si adotta quasi sempre la tecnica del write back.

Page 15: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

15

3.3 Memoria virtuale3.3 Memoria virtualeTranslation Lookaside BufferTranslation Lookaside Buffer

La tabella di traduzione è generalmente molto grande, deve essere allocata in memoria e spesso è a sua volta paginata

Per velocizzare la funzione di traduzione si ricorre ad una cache speciale in cui memorizzare le pagine richieste recentemente, composta da N elementi con i campi pageL, pageF, dirty bit, use bit, controlli.

Page 16: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

16

3.3 Memoria virtuale3.3 Memoria virtualequantificazionequantificazione

dimensione del blocco 512 - 8192 Byte

durata hit 1 - 10 cicli machina

durata miss 100.000 - 600.000 cicli (tempo di accesso) (100.000 - 500.000 cicli)

(tempo di trasferimento) (10.000 - 100.000 cicli)

percentuale miss 0,000001% - 0,001%

dimensione DRAM 4 - 1024 MByte

Page 17: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

17

3.3 Memoria virtuale3.3 Memoria virtualesegmentazione 1segmentazione 1

Allocazione di un blocco di memoria della dimensione (qualsiasi) richiesta.

Caratteristiche: funzione di traduzione complicata frammentazione esterna controllo più efficace dei diritti d’uso

Page 18: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

18

03F1-03FF

0500-05FF

memoria secondariacontenente 2 segmenti

indirizzi logici

f()

0000-000E

000F-010E

memoria principalecontenente 2 segmenti

indirizzi fisici

3.3 Memoria virtuale3.3 Memoria virtualesegmentazione 1segmentazione 1

Page 19: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

19

3.3 Memoria virtuale3.3 Memoria virtualesegmentazione 2segmentazione 2

seg L

offset

indirizzo logico

tabella di traduzionev seg L diritti lung seg Fv seg L diritti lung seg F v seg L diritti lung seg F

indirizzo fisico

al controlloredegli accessi

seg F

offset

Page 20: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

20

3.3 Memoria virtuale3.3 Memoria virtualesegmentazione 3segmentazione 3

traduzione complicata e più ingombrante scelta critica di dove allocare il segmento in

memoria principale– best-fit, worst-fit, first-fit

frammentazione esterna, con necessità di periodiche ricompattazione (garbage collection)

Page 21: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

21

3.3 Memoria virtuale3.3 Memoria virtualeconsiderazioniconsiderazioni

la memoria virtuale può essere vista come un’estensione dell’organizzazione gerarchi-ca della memoria

viene utilizzata per condividere l’unica memoria tra più processi, onsentendo buoni schemi di protezione

l’ampia memoria virtuale a disposizione richiede tabelle paginate e TLB

rilevante l’ottimizzazione dei compilatori

Page 22: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

22

3.4 Architettura RISC3.4 Architettura RISCgeneralità 1generalità 1

A cavallo degli anni ‘70 e ’80 Cocke (IBM), Patterson (Berkley) e Hennessy (Stanford) analizzarono i codici eseguibili di molti programmi e scoprirono che la grande maggioranza di istruzioni utilizzate erano quelle più semplici (assegnazioni, salti condizionati e chiamate a routine) messe a disposizioni di CPU sempre più complesse.

Page 23: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

23

3.4 Architettura RISC3.4 Architettura RISCgeneralità 2generalità 2

L’evoluzione tecnologica era stata utilizzata per fare CPU con istruzioni sempre più complesse, ma venivano usate molto poco.

Progettarono allora una CPU che sfruttasse la tecnologia per fare più velocemente quello che facevano le prime CPU.

Nacque la disputa CISC - RISC.

Page 24: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

24

3.4 Architettura RISC3.4 Architettura RISCgeneralità 3generalità 3

Complex Instruction Set Reduced Instruction Set ComputerIBM 370 VAX 11 IBM 801 RISC 1 MIPS SPARC

anno 1973 1978 1980 1981 1983 1987# istr. 208 303 120 3 55 58microcod 54 K 61 K 0 0 0 0dim. instr. 2 - 6 2 - 57 4 4 4 4

reg-reg reg-regmodello reg-mem reg-mem reg-reg reg-reg reg-reg reg-reg

mem-mem mem-mem

Page 25: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

25

3.4 Architettura RISC3.4 Architettura RISCcaratteristiche 1caratteristiche 1

Oltre al ridotto set di istruzioni, le RISC : sono architetture Load/Store hanno solo istruzioni che durano un ciclo hanno istruzioni a formato fisso hanno ridotte modalità di indirizzamento riescono facilmente a bilanciare il pipeline sono hardwired

Page 26: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

26

3.4 Architettura RISC3.4 Architettura RISCcaratteristiche 2caratteristiche 2

adottano grandi banchi di registri passaggio parametri tramite overlapping

register windows eseguono le istruzioni (ridotte) 2 - 4 volte

più velocemente delle equivalenti CISC il control path occupa meno spazio le prestazioni dipendono

dall’ottimizzazione del software

Page 27: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

27

3.4 Architettura RISC3.4 Architettura RISCcaratteristiche 3caratteristiche 3

è più facile realizzzare i compilatori servono più istruzioni semplici per sostituire

un’istruzione complessa (code expansion) sono ideali per il superpipeline, il supersca-

lare, la speculative execution e l’out-of-order execution

è diventato più un problema di filosofia che strutturale e tecnologico

Page 28: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

28

3.4 Architettura RISC3.4 Architettura RISCfusione RISC - CISCfusione RISC - CISC

Il 486 dell’Intel ha un set di istruzioni di core implementate RISC e un set di istruzioni compatibili microprogrammate

Fast cache decoder

ALU eregistri

control pathmicroprog.

coreinstr.

comp. instr.

codice

Page 29: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

29

3.5 L’architettura x863.5 L’architettura x86cronologia 1cronologia 1

8086 versione a 16 bit dell’8080, [‘78]; registrigeneral purpose con compiti preferenziali ead accumulatore (mista), AB da 20 bit

8087 coprocessore matematico per 8086, [‘80]architettura a stack, modalità reg/mem

80186 poche innovazioni, fallimento [‘81]80286 spazio di indirizzabilità a 24 bit, [‘82]

schemi di protezione della memoria,real mode e protected mode

Page 30: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

30

3.5 L’architettura x863.5 L’architettura x86cronologia 2cronologia 2

80386 AB e DB a 32 bit, [‘85], virtual mode, nuove

istruzioni e indirizzamenti, paginazione

80486 aumento delle prestazioni, cache interna [‘89]

Pentium (P5), superscalare con doppia pipeline [‘92]

Pentium Pro (P6), doppia cavità, L2 integrata [‘96]

predizione efficiente dei salti

Pentium MMX , introduzione istruzioni MMX [‘97]

Pentium II, nuovo socket e bus (Pro + MMX), [‘97]

Page 31: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

31

3.5 L’architettura x863.5 L’architettura x86il futuro ?il futuro ?

Deuschutes, clock 300-400 MHz, P II per portatili

Katmai, P II con estensioni MMX2, DB da 100 MHz

cache L1 maggiore

Willamette, P Pro potenziato

Merced, Intel ed HP progettano di realizzare un set

di istruzioni compatibile x86 e PA-RISC

(IA-64) con DB a 64 bit e clock elevatissimo

Page 32: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

32

3.5 L’architettura x863.5 L’architettura x86i registrii registri

8 32 bit general purpose register preferenziali(EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP)

6 16 bit registri speciali (CS, SS, DS, ES, FS, GS)

1 32 bit program counter (EIP)

1 32 bit registro di flag (EFLAGS)

8 80 bit registri Floating Point organizzati a stack

(R0, R1, R2, R3, R4, R5, R6, R7)

altri registri di livello sistema e di controllo FP

Page 33: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

33

3.5 L’architettura x863.5 L’architettura x86modalità di indirizzamento 1modalità di indirizzamento 1

immediato tramite registro indiretto tramite registro (BX, SI, DI) con base e spiazzamento 8/16 bit (BP, BX, SI, DI) indicizzato (BX+SI, BX+DI, BP+SI, BP+DI) indicizzato con base e spiazzamento 8/16 bit con fattore di scala (SI/DI *1/2/4/8)

Page 34: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

34

3.5 L’architettura x863.5 L’architettura x86modalità di indirizzamento 2modalità di indirizzamento 2

le istruzioni a due operandi ammettono: sorgente/destinazione sorgente

registro registroregistro immediatoregistro memoriamemoria registromemoria immediato

gli operandi possono essere ad 8, 16 o 32 bit la lunghezza delle istruzioni varia da 1 a 17 Byte

Page 35: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

35

3.5 L’architettura x863.5 L’architettura x86set di istruzioniset di istruzioni

trasferimento dati (MOV, PUSH, POP, IN, OUT) aritmetiche (ADD, ADC, AND, OR, SUB, INC) spostamento bit (ROL, RCL, SHL, SAR, BSWAP) manipolazione di bit (BTS, BTR, SET) controllo (JMP, CALL, RET, JZ, JNZ) di stringa (MOVS, STOS, CMPS, REP) supporto ai linguaggi di alto livello ( LOOP) supporto al sistema operativo (CLTS, LTR, SGDT) controllo del processore (NOP, LOCK, HLT, WAIT) floating point (FLD, FST, FXCH, FADD, FSIN)

Page 36: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

36

3.5 L’architettura x863.5 L’architettura x86considerazioniconsiderazioni

la compatibilità verso il basso è stata la mossa commerciale vincente, ma è un’ostacolo enorme all’evoluzione dell’architettura

le prestazioni sono migliorate dalla prima CPU, buoni i risultati nelle operazioni intere, meno brillanti nel settore floating point per l’organizzazione rigidamente a stack

è comunque la piattaforma più diffusa nel mondo

Page 37: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

37

3.5 L’architettura x863.5 L’architettura x86MMX 1MMX 1

Estensione dell’ultima generazione che fornisce tipi di dati e istruzioni atte alla gestione multimediale.Le esigenze della multimedialità sono: dati di piccole dimensioni (8 o 16 bit) cicli ripetitivi di estensione contenuta operazioni concorrenti a basso grado di parallelismo quali prodotti e sommatorie di piccoli vettori

Page 38: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

38

3.5 L’architettura x863.5 L’architettura x86MMX 2MMX 2

Nuovi tipi di dati implementati: packed byte : vettore di 8 elementi byte racchiuso

in un registro a 64 bit packed word : vettore di 4 elementi word

racchiuso in un registro a 64 bit packet doubleword : vettore di 2 elementi

doubleword racchiuso in un registro a 64 bit quadword : un elemento a 64 bit

Page 39: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

39

3.5 L’architettura x863.5 L’architettura x86MMX 3MMX 3

Ci sono 57 nuove istruzioni che operano sui nuovi dati: trasferimento: move arithmetiche: add, subtract, multiply, multiply-add logiche: and, and not, or di spostamento: left, right, arithmetic di confronto: compare equal, compare greater than di conversione: pack and unpack

Page 40: 3.3 Memoria virtuale generalità

Central Process Unit Architettura degli elaboratori 1 - A. Memo

40

3.5 L’architettura x863.5 L’architettura x86MMX 4MMX 4

in alcune applicazioni (poche), tipo compressione MPEG, raddoppiano di velocità; nelle altre + 20%

sono ancora pochi i programmi compilati per l’estensione MMX, e quindi è difficile valutare in opera le prestazioni

probabilmente il futuro è orientato all’implementazione di istruzioni parallele, e Intel è stata la prima a proporle a livello di massa