Sunteți pe pagina 1din 159

Limbajul mainii

Principii de proiectare

Introducere
Limbajul unui calculator = cuvinte + vocabular
Cuvintele -> instruciuni Vocabularul -> set de instruciuni

Operaiile hardware-ului
Orice calculator trebuie s fie capabil s efectueze operaii aritmetice: add a, b, c Exemplu: a = b + c + d + e
add a, b, c add a, a, d add a, a, e CONCLUZIE: Este nevoie de 3 instruciuni

Hardware-ul pentru implementarea unei operaii cu 3 operanzi este mai simplu dect hardware-ul necesar implementrii unei operaii cu un numr variabil de operanzi

PRINCIPIUL DE PROIECTARE 1 - Simplitatea favorizeaz uniformitatea


Exerciiu: Se d urmtoarea comand C: f = (g+h) - (I+j) Ce cod va produce un compilator C ?

Operaiile hardware-ului
Orice calculator trebuie s fie capabil s efectueze operaii aritmetice: add a, b, c Exemplu: a = b + c + d + e
add a, b, c add a, a, d add a, a, e CONCLUZIE: Este nevoie de 3 instruciuni

Hardware-ul pentru implementarea unei operaii cu 3 operanzi este mai simplu dect hardware-ul necesar implementrii unei operaii cu un numr variabil de operanzi

PRINCIPIUL DE PROIECTARE 1 - Simplitatea favorizeaz uniformitatea


Exerciiu: Se d urmtoarea comand C: f = (g+h) - (I+j) Ce cod va produce un compilator C ?

Operanzii hardware-ului
Operanzii instruciunilor aritmetice provin dintr-un numr limitat de locaii speciale denumite registre

Dimensiunea unui registru este de 32 bii => un cuvnt va avea 32 de bii Numrul de registre este limitat ntr-un calculator - 32 de registre generale

PRINCIPIUL DE PROIECTARE 2 - Mai mic nseamn mai rapid

Notaii: $s0, $s1 registre folosite pentru variabile; $t0, $t1 registre temporare necesare compilrii unui program n instruciuni MIPS Exerciiu: Se d urmtoarea comand C: f = (g+h) - (I+j) Ce cod va produce un compilator C ? Soluie: add $t0, $s1, $s2 add $t1, $s3, $s4 add $s0, $t0, $t1

Structurile de date foarte mari: matricile i vectorii sunt inute n pstrate n memorie => necesitatea existenei instruciunilor care s realizez transferul datelor ntre memorie i registre INSTRUCIUNI DE TRANFER DE DATE

Instruciunea care deplaseaz datele din memorie ntr-un registru este numit LOAD Formatul instruciunii: Numele operaiei Registrul ce trebuie ncrcat Constant Registrul folosit pentru accesarea memoriei Exerciiu: A este un tablou de 100 de cuvinte, iar variabilele g i h sunt asociate cu registrele $s1 i $s2. Adresa de baz este n $s3. Cum se translateaz g=h+A[8] ?

Compilatorul aloc structurile de date loca iilor din memorie, apoi pun adresa corect de nceput n instruciunea de transfer de date. Cuvintele secveniale difer prin 4. Cuvntul n MIPS trebuie s nceap la o adres care este multiplu de 4: RESTRICIE DE ALINIERE Calculatoare pot folosi adresele celui mai din stnga octet - BIG END - ca adres a cuvntului, sau folosesc octetul cel mai din dreapta - LITTLE END Adresarea la nivel de octet afecteaz din nou indexarea tablourilor => offset -ul care trebuie adugat registrului de baz $s3 trebuie s fie 4x8=32 bi i pentru a selecta A[8] i nu A[8/4] Instruciunea complementar intsruciunii LOAD este instruciunea STORE (memoreaz)

Formatul instruciunii STORE este urmtorul: Nume operaie Registrul de memorat Offset-ul pentru selectarea elementului din tablou Registrul de baz

Exerciiu: Variabila h este asociat cu registrul $s2 I adresa de baz a tabloului A este n $s3. Detaliai A[12] = h + A[8] Memoriile actuale sunt foarte mari => adresa de baz a unui tablou este introdus ntr -un registru deoarece n u este loc suficient n zona rezervat pentru offset.

Reprezentarea instruciunilor
Instruciunile sunt pstrate n calculator ca o serie de semnale electronice nalte sau joase => pot fi reprezentate ca numere

op rs rt rd shamt funct

OPCODE registru surs pentru primul operand registru surs pentru al doilea operand registrul operandului de destinaie ce primete rezultatul operaiei numrul deplasrilor selecteaz varianta specific a operaiei din cmpul op

PRINCIPIUL DE PROIECTARE 3 - Proiectarea bun necesit compromisuri bune

Instruciunea de tip R

Instruciunea de tip I

Folosirea mai multor tipuri de instruciuni => complicarea hardware-ului, dar putem reduce complexitatea dac pstrm formate asemntoare

PRINCIPII DE BAZ
Instruciunile sunt reprezentate ca numere Programele pot fi pstrate n memorie pentru a putea fi citite/scrise precum numerele

INSTRUCIUNI DE DECIZIE
Ramificaii condiionale

beq
bne

registru_1, registru_2, L1 #dac registru_1 = registr_2 dute la eticheta L1


registru_1, registru_2, L1 # dac registru_1 registru_2 dute la eticheta L1

Asamblorul este cel care calculeaz adresele pentru ramifica ii, calculeaz adresele instruciunilor de ncrcare/memorare

Exerciiu: Folosind registrele $s0 $s4 pentru cele 5 variabile de mai jos, s se detalieze codul generat pentru

If (i==j) f=g+h; else f=g-h

Proceduri
Execuia unei proceduri presupune urmtorii pai Pune parametrii ntr-un loc unde pot fi accesai de ctre procedur Transfer controlul procedurii Obine resursele de memorie necesare procedurii Efectuare sarcin Pune valoarea rezultat ntr-un loc de unde poate fi accesat de ctre programul apelant ntoarce controlul la punctul de plecare

Registrele folosite:

$a0 - $a3 $v0 - $v1 $ra

patru registre de argumente n care se comunic parametrii dou registre de valori n care s ntoarc rezultatul un registru al adresei de ntoarcere

Folosirea mai multor registre


Compilatorul are nevoie pentru o procedur de mai mult de 4 registre pentru argumente i 2 pentru ntoarcerea rezultatului.

Structura de date ideal pentru transferul n memorie al registrelor este stiva

$sp - pointer-ul stivei


PUSH

POP

Proceduri imbricate
Procedura A are in teriorul ei procedura B sau cazurile de recursivitate

Introducem n stiv toate registrele care trebuie pstrate dup apel. Apelantul introduce n stiv registrul adresei de ntoarcere $ra i orice registru salvat folosit de apelant.

Pointer-ul stivei $sp este corectat pentru a lua n evidennumrul registrelor puse n stiv. La ntoarcere, registrele sunt refcute din memorie, iar pointer-ul stivei este ajutat.

Modurile de adresare MIPS


MIPS are urmtoarele moduri de adresare Adresare a registrelor

Adresare prin baz sau deplasare


Adresare imediat Adresare relativ la PC Adresare pseudodirect

Cei 4 pai necesari pentru conversia unui program

Proiectarea UAL
Operaii logice cu coresponden direct n hardware AND c=a*b SAU c=a+b INV c = not a MUX dac d==0, c=a altfel c=b Unitatea logic pentru 1 bit liniile albastre sunt linii de comand

Realizarea operaiei de adunare presupune existena unui sumator complet


Realizarea operaiei de scdere presupune introducerea unui inversor

Hardware-ul rezultat este foarte simplu => cc2 standard universal pentru aritmetica numerelor ntregi

Ce operaie nc nu se poate realiza ?

Operaia slt produce 1 dac rs < rt i 0 altfel


Se observ c este suficient s determinm bitul de semn al operaiei a -b

Cum se poate modifica figura alturat astfel nct s implementm ramificarea condiional ?

Sumatorul este implementat cu ajutorul unui CLA - Carry Look Ahead prezentat la CN 1
Operaiile de nmulire/mprire inclusiv virgula mobil au prezentate n CN 1

Calea de date i de control Durata perioadei de ceas precum i numrul de cicluri/instruciune sunt date de implementarea procesorului.

Ne propunem implementarea urmtoarelor instruc iuni instruciuni de referire a memoriei - ncrcare/memorare Instruciuni aritmetice i logice - add, sub, and, or i slt Instruciunile de ramificaie la egal i de salt

Indiferent de clasa instruciunii, primii pai de implementarea aunei instruciuni sunt la fel: se va trimite memoriei PC-ul i se va extrage instruciunea din memorie Se citesc 1 sau 2 registre - vom folosi cmpurile instruc iunii pentru selectarea registrelor

Unitile funcionale i legturile dintre ele

Dac instruciunea este de tip aritmetic sau logic => rezultatul din UAL trebuie scris ntr-un registru Dac operaia este de ncrcare/memorare => rezultatul UAL va fi o adres Pentru ramificaii vom folosi ieirea UAL n determinarea adresei urmtoarei Instruciuni de executat. Este necesar pentru aceasta s introducem o logic de control

Realizarea cii de date - determinarea instruciunii curente i trecerea la urmtoarea instruciune

Extragem instruciunea din memorie Incrementm CP-ul cu 4 pentru Trecerea la instruciunea urmtoare

Instruciunea urmtoare este situat la o distan de 4 octei

Realizarea cii de date - instruciunile aritmetice i logice

Instruciunile de tipul R add, sub, slt

Registre generale UAL care opereaz cu valorile citite din registre

Realizarea cii de date - instruciunile de ncrcare i memorare

Instruciunile sunt: lw $t1, valoare_deplasare($t2) sw $t1, valoare_deplasare($t2)

Este necesar o unitate pentru a extinde semnul cmpului de deplasare din instr.

Realizarea cii de date - instruciunea beq Instruciunea este format din 2 registre care sunt comparate pentru egalitate i o deplasare de 16 bii beq $t1, $t2, offset

n vederea implementrii acestei instruc iuni trebuie determinat adresa obiectiv pentru ramificaie => PC + cmpul de deplasare al instruc iunii cu semnul extins Particulariti: 1. Baza pentru calculul adresei de ramifica ie este adresa instruciunii care urmeaz ramificaiei => PC+4 valoarea ca baz 2. Cmpul deplasrii din instruc iune trebuie deplasat stnga cu 2 bi i deoarece deplasarea este la nivel de cuvnt => cre te domeniul efectiv al cmpului deplasrii cu un factor de 4.

Realizarea cii de date - instruciunea beq Operanzii sunt egali => adresa obiectiv pentru ramificaie devine noul PC

Operanzii sunt diferii => PC-ul incrementat este noul PC

Trebuie realizate 2 operaii: 1. Calcularea adresei obiectiv pentru ramifica ie 2. Compararea coninutului registrelor

Obiectiv final - calea de date pentru execuia ntr-un singur ciclu de ceas

Controlul UAL UAL are trei intrri de control din care folosite sunt 5 000 I 001 SAU 010 + 110 111 setare la mai mic dect Modalitatea de implementare - utilizm 2 bii (OpUAL) i cei 6 bii ai codului funciunii
OpUAL 00 00 01 Operaia ncrcare cuv Memorare cuv Ramificaie la egal Cmpul funciunii xxxxxx xxxxxx xxxxxx Aciunea UAL adunare adunare scdere Intrare de control UAL 010 010 110 etc

Schema controlului UAL complet

0 (31-26) 35 sau 43 (31-26) 4 (31-26)

rs (25-21) rs (25-21) rs (25-21)

rt (20-16) rt (20-16) rt (20-16)

rd (15-11) shamt(10-6) adresa(15-0) adresa(15-0)

funct(5-0)

Execuia instruciunii de tip R

Execuia instruciunii de ncrcare

Execuia instruciunii de ramificare la egal

Implementarea instruciunii de salt

2 (31-26)

adresa (25-0)

Calcularea PC-ului obiectiv cei 4 bii MSB vin de la PC+4; cmpul imediat de 26 bii ai instruciunii de salt; cei 2 bii inferiori ai unei adrese de salt sunt ntotdeauna 00

Folosim sau nu implementarea cu o singur perioad de ceas ?

n cazul proiectrii cu un singur ciclu de ceas, perioada ceasului trebuie s aib aceeai durat pentru fiecare instruciune => ciclul de ceas este determinat de cea mai lung cale posibil prin ma in Cazul cel mai frecvent nu are o execu ie rapid Fiecare unitate funcional poate fi utilizat o singur dat ntr -un ciclu de ceas => repetarea un itilor funcionale => creterea preului implementrii

Metode alternative :

implementarea cu mai multe cicluri


PIPELINE

Metod INEFICIENT, neutilizat n practic

IMPLEMENTAREA CU MAI MULTE CICLURI

ntr-o implementare cu mai multe cicluri, fiecare pas al execu iei va necesita o perioad de ceas. Unitatea funcional este utilizat mai mult dect o singur dat pe instruc iune utilizat evident n cicluri de ceas diferite Acestea sunt avantajele majore ale implementrii cu mai multe cicluri de ceas

La finalul unui ciclu de ceas toate datele care sunt folosite n ciclurile urmtoare trebuie memorate n elemente de stare
Datele folosite de instruciunile urmtoare ntr-un ciclu ulterior de ceas vor fi memorate n elementele de stare vizibile programatorului.

Datele folosite de aceeai instruciune ntr-un ciclu ulterior de ceas trebuie memorate n registrele suplimentare

SE PRESUPUNE
Durata ciclului de ceaspoate deservi cel mult: un acces la memorie un acces la fiierul de registre 2 citiri i o scriere o operaie UAL

Registrul de instructiuni (RI) i Registrul datelor de memorie (MDR)

Registrele A i B Registrul EUAL

Folosim mai multe uniti funcionale n comun, deci trebuie adugate multiplexoare Exp: Avem o singur memorie att pentru date ct i pentru instruciuni PC i OpUAL Folosim un singur UAL n loc de 3 ca n cazul implementrii cu un singur ciclu de ceas, deci vom avea urmtoarele schimbri

un multiplexor suplimentar adugat primei intrri n UAL multiplexorul celei de-a doua intrri n UAL din MUX2 se transform n MUX4

CE AM OBINUT ?

Reducerea numrului de un it i de memorie de la 2 la 1


Eliminarea a dou sumatoare AM OBINUT O REDUCERE SEMNIFICATIV A COSTULUI HARDWARE-ULUI

CE NU AM IMPLEMENTAT ?
ramificaiile

salturile

Avnd n vedere salturile precum i ramificaiile exist 3 surse posibile pentru PC

ieirea UAL PC + 4 registrul EUAL cel care memoreaz adresa obiectiv pentru ramifica ie evident dup determinarea sa
cei 26 de bii inferiori ai lui IR deplasai spre stnga cu 2 poziii i concatenai cu cei 4 bii superiori ai PC-ului incrementat sursa pentru instruciunea de salt CONCLUZIE PC-ul va trebui scris att condiionat ct i necondiionat !!!

Vom folosi magistrale partajate

Calea de date complet cu liniile de control necesare

Paii de execuie a instruciunii EXTRAGEREA INSTRUCIUNII

IR = Memorie(PC); PC = PC+4

DECODIFICAREA INSTRUCIUNII I EXTRAGEREA REGISTRELOR

A = Reg(IR(25-21)) B = Reg (IR(20-16)) EUAL = PC + (semn-extins(IR(15-0)) << 2);

Execuia, calculul adresei de memorie sau terminarea ramificaiei

Referin la memorie IeireUAL = A + semn-extins (IR(15-0))


Instruciune tip R IeireUAL = A op B Ramificaie dac (A==B) atunci PC=EUAL Salt PC = PC(31-28) || IR(25-0) << 2

Pasul de acces la memorie sau de terminare a instruc iunii de tip R O instruciune de ncrcare/memorare acceseaz memoria, iar o instruc iune aritmetic-logic i scrie rezultatul.

Valoarea citit din memorie este scris n MDR de unde va fi folosit n ciclul urmtor
MDR = Memorie (EUAL)

Reg(IR(15 -11)) = EUAL

Pasul de terminare a citirii memoriei Reg(IR(20-16)) = MDR

Definirea controlului

Instruciunea este extras i decodificat

Controlul instruciunilor de referire a memoriei

Instruciunile de tip R

Instruciunile de salt i ramificaie i de salt

MICROPROGRAMAREA

Microprogramarea este folosit pentru reducerea complexitii proiectrii controlului Fiecare microinstruciune definete setul de semnale de control ale cii de date care trebuie activate ntr-o singur stare dat Foarte important este succesiunea microinstruciunilor

Microinstruciunea poate fi privit ca o secven de cmpuri ale cror funciuni sunt corelate. Cum definim formatul microinstruciunii ?

Trebuie stabilite numrul de cmpuri dintr -o microinstruciune precum i semnalele de control afectate de fiecare cmp.
1. Formatul microinstruciunii trebuie ales astfel nct s se simplifice reprezentarea.

2. Trebuie ca scrierea microinstruciunilor consistente s fie imposibil Semnalele care nu sunt activate simultan niciodat pot folosi n comun acelai cmp

Exemplu de mprire pe cmpuri a unei microinstruciuni:


ControlUAL SRC1 SRC2 CtrlReg Memorie CtrlScriePC Secven

- specific operaia efectuat de UAL - surs operand 1 - surs operand 2 - scrire/citire a fiierului de registre i sursa valorii pt scriere - scrierea/citirea i sursa pentru memorie - specific scrierea PC-ului - modalitatea de alegere a urmtoarei instr.

ALEGEREA INSTRUCIUNII URMTOARE

1. Incrementarea microinstruciunii curente comportare secvenial (mod implicit) n cpul secve punem eticheta SEQ
2. Se transfer controlul la microinstruciunea care ncepe execuia urmtoarei instruciuni ciclu FETCH n cpul secven punem FETCH 3. Se alege urmtoarea microinstruciune pe baza intrrii n unitatea de control distribuie
Cmp Etichet Valori pt cmp Orice ir Funcie Folosit pentru specificarea etichetelor n controlul secvenelor de microcod. Etichetele terminate n 1 sau 2 sunt folosite pentru distribuie cu tabel de salt, indexat cu cod operaie

Control UAL

ADD

UAL adun

Subst Func code

UAL scade implementez comparaia Folosete cmpul funct

Cmp
SRC 1

Valori pt cmp
PC A

Funcie
PC intrare pentru UAL A folosit ca prim intrare n UAL

SRC 2

B 4
Extend Extshft

B a doua intrare n UAL Constanta 4 ca a doua intrare n UAL


Ieirea unitii de extindere semn ca a doua intrare n UAL Folosete ieirea unitii deplasare cu 2 ca a doua intrare n UAL Citete 2 registre folosind pentru identificarea lor cpurile rs i rt

Ctrl registru

Read

Write ALU
Write MDR Memorie Read PC Read ALU

Scrie fiierul de registre folosind pt numrul registrului cmpul rt din IR, iar pentru dat coninutul EUAL
Scrie fiierul de registre folosind pentru numrul registrului cmpul rt din IR iar pentru dat coninutul MDR Citete memoria avnd ca adres PC-ul; scrie rezultatul n IR i MDR Citete memoria avnd ca adres EUAL; scrie rezultat n MDR

Write ALU

Scrie memoria avnd ca adres EUAL i coninutul lui B ca dat

Cmp
Ctrl ScriePC

Valori pt cmp
ALU ALUOut-cond Jump address

Funcie
Scrie coninutul lui UAL n PC Dac ieirea UAL-Zero este activ, scrie n PC coninutul registrului EUAL Scrie n PC adresa de salt a instruciunii

Secven

seq
Fetch Dispatch i

Alege secvena urmtoare n microinstruciune


Merge la prima microinstruciune pentru a ncepe o instruciune nou Distribuie adresa folosind ROM-ul specificat de i (1 sau 2)

Crearea microprogramului

Se vor eticheta instruciunile din microprogram cu etichete simbolice care pot fi folosite pentru specificarea coninutului tablourilor de distribuie.
Paii 1 i 2 din execuia unei instruciuni: Extragerea instruciunilor

Decodificarea instruciunilor i calcularea PC -ului secvenial ct i a PC-ului obiectiv pentru ramificaie


Etch Fetch Ctrl UAL Add Add SRC1 PC PC SRC2 4 Extshft Read Ctrl Reg Mem Read PC Ctrl Secv ScriePC UAL Seq Dispat ch 1

Microprogramul pentru instruciunile de referire a memoriei Etch mem1 lw2 Write MDR sw2 Write ALU Ctrl UAL Add SRC1 A SRC2 Extend Read ALU Ctrl Reg Mem Ctrl ScriePC Secv Dispat ch 2 Seq Fetch fetch

Microinstruciunile pentru instruciunile de tip R Etch Ctrl UAL SRC1 SRC2 Ctrl Reg Mem Ctrl ScriePC Secv

Rformat Func 1 code

B Write ALU

Seq fetch

Instruciunea de ramificaie

Etch BEQ1

Ctrl UAL Subt

SRC1 A

SRC2 B

Ctrl Reg

Mem

Ctrl ScriePC

Secv

ALUOut - Fetch cond

De remarcat c avem doar o singur microinstruciune. DE CE ? Instruciunea de salt Etch Ctrl UAL SRC1 SRC2 Ctrl Reg Mem Ctrl ScriePC Secv

JUMP1

JUMP address

Fetch

Implementarea controlului microcodului

Unitate explicit pentru incrementare calculeaz starea secvenial urmtoare implicit

Memoria de microcod poate fi doar citit

PIPELINE

Introducere Pipeline execuia mai multor instruciuni se suprapune n timp

Etajul 1 extragerea instruciunii din memorie


Etajul 2 citirea registrelor n timp ce instruciunea este decodificat

Etajul 3 executarea operaiei sau calcularea adresei


Etajul 4 accesul la un operand din memorie Etajul 5 scrierea rezultatului ntr-un registru

Timpul ntre instruciuni pipeline = Timpul ntre instruciuni fr pipeline / nr de etaje

Pipeline-ul mbuntete performana prin creterea productivitii instruciunilor, nu prin micorarea timpului de execuie al unei instruciuni individuale

OBSERVAII Instruciunile au aceeai lungime => extragerea instruciunilor i decodificarea lor se poate face n doar dou etaje de pipe. Cpurile registrelor surs sunt localizate n acelai loc n cadrul instruciunii = > n etajul 2 putem ncepe citirea fiierului de registre n acelai timp n care hardware-ul determin instruciunea ce a fost extras. Operanzii din memorie apar numai n instruciunile de ncrcare i memorare = > putem utiliza etapa de execuie pentru calcularea adresei de memorie, iar accesul la memorie se efectueaz n etapa urmtoare.

Operanzii trebuie s fie aliniai n memorie = > data poate fi transferat ntre procesor i memorie ntr-o singur etap pipeline.

HAZARDURI PIPELINE

Evenimentul n urma cruia instruciunea urmtoare nu poate fi executat n urmtorul ciclu de ceas se numete hazard.
HAZARD SRUCTURAL

Hardware-ul nu poate suporta combinaia de instruciuni pe care dorim s le executm n acelai ciclu de ceas.
HAZARD DE CONTROL Apare din necesitatea de a lua o decizie pe baza rezultatelor unei instruciuni, n timp ce altele sunt n execuie SOLUII 1. Staionarea primul ciclu se va executa secvenial i apoi se va trece la execuia pipeline soluie viabil n practic dar prea lent n cazul pipe-urilor lungi

2. Predicia se presupune c ramificaiile nu vor reui = > c doar n cazul reuitelor pipe-ul va staiona.

Cursul urmtor pipeline superscalar i pipeline dinamic

CONCLUZII
1. Pipeline-ul crete numrul instruciunilor executate simultan i viteza cu care instruciunile sunt ncepute i terminate 2. Execuia pipeline nu reduce timpul necesar derulrii unei instruciuni individuale

Calea de date pipeline - continuare -

Calea de date cu un singur ciclu de ceas

Excepii: actualizarea PC-ului i pasul de rescriere

Fiecare instruciune are propia sa cale de date; MI = memoria de instruciuni + PC-ul din etapa extragerii instruciunii REG = fiierul de registre + unitatea de extindere a semnului din etapa DI

Registre pipeline separ fiecare etap de pipe

EI/DI separ etapele de extragere a instruc iunii i de decodificare a instruciunii

NU EXIST REGISTRE LA SFRITUL ETAPEI DE RESCRIERE

Fig. 1

N C R C A R E A

Extragerea instruciunii instruciunea este citit din memorie (folosind PC) i este pus n registrul EI/DI Adresa lui PC este incrementat cu 4 i rescris n PC. Aceast adres este salvat n EI/DI n vederea folosirii ei ulterioare spre exp. urmeaz instruciunea beq.

Calculatorul NU tie ce instruciune este extras.

Fig. 2

N C R C A R E A

Decodificarea instruciunii registrul EI/DI furnizeaz cmpul imediat de 16 bii cruia i se extinde semnul pn la 32 de bi i, i numerele registrelor pentru citirea celor dou registre.

Aceste valori mpreun cu adresa PC incrementat se regsesc n DI/EX


Sunt necesari toi cei 3 operanzi ?

N C R C A R E A

Execuia instruciunii instruciunea de ncrcare citete din registrul pipeline EI/DI coninutul registrului $t1 i cmpul imediat cu semnul extins i le adun cu ajutorul UAL-ului.

Suma se va pune n registrul pipeline EX/MEM.

N C R C A R E A

Accesul la memorie instruciunea de ncrcare citete memoria de datefolosind adresa din registrul pipeline EX/MEM i ncarc data n registrul pipeline MEM/RS.

N C R C A R E A

Rescrierea fiierului de registre citirea datei din registrul pipeline MEM/RS pe care o scrie n fiierul de registre. CONCLUZIE orice informaie necesar ntr-o etap ulterioar de pipeline trebuie transmis ctre etapa respectiv prin registrele pipeline.

INSTRUCIUNEA DE MEMORARE 1. EXTRAGEREA INTSRUCIUNII instruciunea este citit din memorie folosindu-se adresa din PC, apoi este pus n registrul pipeline EI/DI

2. DECODIFICAREA INTSRUCIUNII respect Fig. 2


3. EXECUIA INTSRUCIUNII adun ce se citete din registrul EI/DI, coninutul lui $t1, i cmpul imediat cu semnul extins

4. ACCESUL LA MEMORIE citete memoria de date folosind adresa din registrul Pipeline EX/MEM i ncarc data n registrul pipeline MEM/RS

5. RESCRIEREA FIIERULUI DE REGISTRE citirea datei din registrul pipeline MEM/RS pe care o scrie n fiierul de registre.

CONTROLUL PENTRU PIPELINE Fiecare linie de control este asociat cu o component care este activ doar ntr -o Singur etap pipeline.

Implementarea controlului

TEM S se arate trecerea prin pipeline a urmtoarelor 5 instruc iuni: lw sub and or add $10, 20 ($1) $11, $2, $3 $12, $4, $5 $13, $6, $7 $14, $8, $9

S se eticheteze instruciunile din pipeline care preced instruc iunea lw sub forma inainte <1>, inainte <2>, .. i instruciunile care urmeaz instruc iunii add sub forma
dupa <1>, dupa <2>

HAZARDURILE DE DATE I AVANSAREA

Soluia software introducere nop-uri => cicluri de ceas n care nu se face nimic

Detecia hazardului
1a. EX/MEM.RegistruRd = DI/EX.RegistruRs 1b. EX/MEM.RegistruRd = DI/EX.RegistruRt 2a. MEM/RS.RegistruRd = DI/EX.RegistruRs 2b. MEM/RS.RegistruRd = DI/EX.RegistruRt Dac intrrile UAL pot fi luate de la orice registru pipeline, nu numai de la EI/DI, atunci avansarea ar fi corect.

Soluia hardware

HAZARDURILE DE DATE I STAIONRILE

Pe lng unitatea de avansare trebuie s existe o unitate de detectare a hazardului. If (ID/EX.CiteteMem and ((ID/EX.RegistruRt = IE/ID.RegistruRs) or (ID/EX.RegistruRt = IE/ID.RegistruR))) staionare pipeline

Rezultatul final

Hazarduri de ramificaie

Exploatarea ierarhiei de memorie

Un exemplu intuitiv Un student aflat n biblioteca facultii are pe mas o serie de cri

Subiectul cutat nu se regsete n crile aflate pe mas


Studentul se rentoarce la rafturi i extrage o nou carte Existena unui numr mare de cri pe mas reduce timpul de cutare Probabilitatea de cutare nu este aceeai pentru toate crile din bibliotec Un program nu acceseaz toat seciunea sa de cod sau de date cu aceea i probabilitate.

Principiul localizrii - st la baza modului de operare a programelor stabilete faptul c programele acceseaz o por iune relativ redus a spaiului lor de adrese la orice moment de timp Localizarea temporal - localizare n timp - dac se face referire la un anumit obiect, este posibil ca acesta s fie refrit din nou ct de curnd Localizarea spaial - localizare n spaiu - dac se face referire la un anumit obiect din memorie, obiectele ale cror adrese sunt nvecinate cu acesta tind s fie adresate ct de curnd.

Principiul localizrii temporare este folosit la implementarea memoriei unui calculator sub forma unei ierarhii de memorie.
O ierarhie de memorii poate fi alctuit din mai multe niveluri, ns datele la un moment dat sunt copiate doar ntre dou niveluri adiacente.

Unitatea minim de informaie care poate fi prezent sau absent ntr -o ierarhie de memorie se numete bloc.

Unitatea minim de informaie care poate fi prezent sau absent ntr -o ierarhie de memorie se numete bloc. Regsirea informaiei necesare procesorului ntr-un bloc de memorie superior se numete HIT Neregsirea datelor pe nivelul superior se nume te MISS Rata de succes - fraciunea din accesele la memorie ce au gsit datele n nivelul superior de memorie.

Rata de eec = 1 - rata de succes fraciunea din accesele la memorie care nu au gsit datele n nivelul superior de memorie.
Timpul de succes - reprezint timpul necesar accesului la un nivel superior al ierarhiei de memorie, ce include i timpul necesar determinrii tipului de acces. Penalizarea de eec - reprezint timpul necesar nlocuirii blocului din nivelul superior cu blocul corespunztor din nivelul inferior, incluznd i timpul trimiterii acestui bloc ctre procesor. Construirea sistemelor de memorie afecteaz: 1. modul n care SO-ul administreaz memoria i perifericele 2. modul n care compilatoarele genereaz codul 3. modul n care aplicaiile folosesc maina de calcul

Principiu de baz Programele prezint localizare temporal ct i localizare spaial. Ierarhiile de memorie folosesc avantajul localizrii temporale pstrnd datele accesate recent ct mai aproape de procesor. Ierarhiile de memorie folosesc avantajullocalizrii spa iale prin mutarea blocurilor coninnd cuvinte nvecinate din memorie n nivelurile superioare ale ierarhiei.

n anii 60 s-a folosit cuvntul cache pentru a desemna nivelul ierarhiei de memorie aflat ntre UCP i memoria principal.

PRINCIPIILE DE BAZ ALE MEMORIILOR CACHE Iniial cuvntul de date Xn nu se gsete n cache

Cum se poate determina dac o dat este n memoria cache ?

Dac o dat exist n memoria cache cum poate fi ea gasit ?

!!!!! Fiecare cuvnt poate fi memorat doar ntr-o anumit locaie a memoriei cache => coresponden direct.

Corespondena dintre adrese i locaiile memoriei cache se determin astfel: (Adresa blocului) modulo (numrul de blocuri din memoria cache)

Cum determinm dac o dat este n memoria cache ?

Cum determinm dac o dat este valid sau nu ?


Metoda cea mai des folosit este cea de a aduna un bit de validare pentru a indica dac o locaie conine o adres valid.

Accesarea unei memorii cache cu coresponde direct


Cerere 22 Adresa 10110 HIT / MISS Blocul din cache

26 22
26 16 3 16 18

11010 10110
11010 10000 11 10000 10010

Index V Index V
0 1 N N

Marcaj

Date

Marcaj

Date

0
1 10 11 100 101 110

N
N N N N N Y 10 mem (10110)

10
11 100 101 110 111

N
N N N N N

111

Index V
0 1 10 11 100 101 110 111 N N Y N N N Y N

Marcaj

Date

Index 0 1

V Y N

Marcaj 10

Date mem (10110)

11

mem (11010)

10
11 100 101

Y
N N N Y N

11

mem (11010)

10

mem (10110)

110 111

10

mem (10110)

Acest tip de accesare permite folosirea principiului localizrii temporale cuvintele accesate recent le nlocuiesc pe cele accesate mai pu in recent.

Tag = Marcaj

1. indexul memoriei cache, folosit la selectarea blocului de memorie cache 2. cmpul marcajului, folosit la compararea cu valoarea din cmpul marcaj al memoriei cache

Numrul total de bii dintr-o memorie cache cu coresponden direct este:


2^n * (dimensiunea blocului de memorie + dimensiune marcaj + dimensiunea cmpului de validare).

TEM
Ci bii sunt necesari pentru o memorie cache cu coresponden direct avnd 64KB de date i blocuri de 1 cuvnt, folosind adrese de 32 de bii ?

Tratarea eecurilor
a). Soluia cea mai simpl presupune staionarea UCP-ul, nghend coninutul tuturor registrelor. O unitate de control separat trateaz eecul, aducnd data din memoria principal n memoria cache Execuia este reluat ncepnd cu ciclul care a cauzat eecul.

Tratarea eecului se face de ctre unitatea de control a procesorului i de ctre o unitate de control separat ce iniieaz accesul la memorie i aduce datele n memoria cache.

b). n cazul implementrii pipeline tratarea eecurilor la memoria cache este mai dificil deoarece execuia unor instruciuni trebuie continuat, n timp ce altele staioneaz.

1). se trimite valoarea original a PC-ului (PC-4) la memorie;


2). se instruiete memoria principal s execute o citire i ateapt pn cnd acesta termin accesul;

3). se scrie locaia memoriei cache, punnd datele din memorie n poriunea de date a acestei locaii, scriind biii cei mai semnificativi ai adresei (din UAL) n cmpul marcajului i setnd bitul de validare;

4). se repornete execuia instruciunii la primul pas, care va reextrage instruciunea - de data aceasta se regsete n memoria cache.

O metod de reducere a efectului eecurilor la memoria cache este folosirea tehnicii staionare la utilizare.

EXEMPLU

CITIREA
1 - se trimite adresa la memoria cache corespunztoare. Adresa vine fie de la PC (pt instruciuni) fie de la UAL (pt date).
2- daca HIT cuvntul este disponibil pe liniile de date. Dac MISS, se trimite adresa la memoria principal. Cnd memoria transmite datele de la adresa respectiv, acestea sunt scrise n memoria cache.

SCRIEREA
Dac se scrie doar n memoria cache i nu i n memoria principal => memoria principal i memoria cache sunt inconsistente. Cea mai simpl metod de evitare este scrierea n ambele memorii => scriere simultan - write through.

1. memoria cache este indexat folosind biii 15-2 ai adresei 2. se scriu biii 31-16 ai adresei n marcaj, se scrie cuvntul n zona de date i se seteaz bitul de validitate 3. se scrie cuvntul n memorie folosind ntreaga adres

SOLUIE - folosirea unor memorii tampon - write buffer

O soluie la metoda write through este schema write back - scrie la loc

FOLOSIREA LOCALIZRII SPAIALE

Se dorete ca blocul memoriei cache s fie mai mare dect lungimea unui cuvnt

Determinarea blocului din memoria cache pentru o anumit adres

(Adresa blocului) modulo (Numrul de blocuri din memoria cache)


unde Adresa blocului = adresa cuvntului / numrul de cuvinte din bloc

EXEMPLU

Se consider o memorie cache cu 64 de blocuri de date, fiecare cu dimensiunea de 16 octei. Care este numrul blocului corespunztor adresei de octet 1200 ?

Eecurile i succesele de scriere

Un bloc de date conine mai mult de un cuvnt => nu se poate s screim doar marcajele i datele.
Consideraii: 1. dou adrese de memorie X i Y au acelai bloc corespondent C n memloria cache 2. Blocul are 4 cuvinte i conine adresa Y 3. Scriem la adresa X prin simpla suprapunere a datelor i a marcajului din blocul C

Conform consideraiilor de mai sus, ce se ntampl dup opera ia de scriere ?

Memoria cache - continuare -

Pn acum am folosit doar schema de amplasare a blocurilor din memoria cache denumit coresponden direct. Schema n care un bloc de date poate fi amplasat n orice locaie din memoria cache se numete schem cu asociativitate total.

Regsirea blocului de date presupune examinarea tuturor locaiilor de memorie cache => paralelizarea cutrii O alt schem care este ntre cele dou se numete schema cu asociativitate parial .

n aceste tipuri de scheme memoria cache are un numr fix de locaii n care se poate amplasa fiecare bloc de date. Deci vom avea un numr de seturi fiecare format din n blocuri de date.

Pentru regsirea blocului este necesar s parcurgem toate blocurile unui set.

ntr-o memorie cache cu asociativitate parial, setul coninnd un anumit bloc de memorie este dat de relaia: (numrul blocului) modulo (numrul de seturi din memoria cache)

OBSERVAIE : Creterea gradului de asociativitate reduce rata de eec, dar crete timpul de HIT.

EXEMPLU Avem 3 memorii cache fiecare avnd 4 blocuri de cte 1 cuvnt. Cele trei memorii cache sunt cu asociativitate total, asociativitate cu 2 ci i coresponden direct. S se gseasc numrul de eecuri pentru fiecare dintre cele 3 scheme de amplasare avnd urmtoarea secven de adrese de bloc: 0,8, 0, 6, 8. SOLUIE Cazul 1 memoria cache cu coresponden direct Detectm blocul din memoria cache corespunztor adreselor date: Adresa blocului Blocul memoriei cache

0 6
8

0 modulo 4 = 0 6 modulo 4 = 2
8 modulo 4 = 0

Coninutul memoriei cache dup fiecare referin Adresa blocului HIT sau MISS Blocul de memorie 0 accesat Blocul Blocul 1 2 Blocul 3

0
8 0 6

Miss
Miss Miss Miss

Mem(0)
Mem(8) Mem(0) Mem(0) Mem(6)

Miss

Mem(8)

Mem(6)

Cazul 2. Memoria cache cu asociativitate parial cu 2 ci conine 2 seturi (indicii fiind 0 i 1), fiecare avnd 4 elemente. Vom determina setul corespunztor fiecrei adrese a blocurilor Adresa blocului 0 Blocul memoriei cache 0 modulo 2 = 0

6
8

6 modulo 2 = 0
8 modulo 2 = 0

Pentru nlocuire vom folosi LRU Adresa blocului HIT sau MISS Set 0 de memorie accesat Set 1 Set 2 Set 3

0
8

Miss
Miss

Mem(0)
Mem(0) Mem(8)

0 6
8

HIT Miss
Miss

Mem(0) Mem(0)
Mem(8)

Mem(8) Mem(6)
Mem(6)

Avem doar 4 eecuri, deci soluia aceasta este mai bun dect precedenta

Memoria cache cu asociativitate total Adresa blocului HIT sau MISS Set 0 de memorie accesat Set 1 Set 2 Set 3

0
8

Miss
Miss

Mem(0)
Mem(0) Mem(8)

0 6
8

HIT Miss
HIT

Mem(0) Mem(0)
Mem(0)

Mem(8) Mem(8)
Mem(8)

Mem(6)
Mem(6)

Aceasta este varianta optim avem doar 3 eecuri

Localizarea unui bloc n memoria cache cu asociativitate parial

Pstrm dimensiunea memoriei cache constant i ncercm s mrim asociativitatea => numrul de blocuri/set va crete => va crete numrul de comparaii efectuate n paralel.

Creterea asociativitii cu un factor de doi va dubla numrul blocurilor din set i va njumtii numrul de seturi => descreterea dimensiunii indexului cu 1 bit i o cretere a dimensiunii marcajului cu 1 bit.
Exemplu: Presupunem o memorie cache cu blocuri de 4Kb i adrese de 32 de bii. S se gseasc numrul total de seturi i de bii de marcaj pentru memoria cache cu coresponden direct, cu asociativitate parial cu 2 i 4 ci i cu asociativitate total. a). Nr. de seturi = nr. de blocuri => log2(4Kb) = 12 bii de index => (32-12)4K=80Kb numrul total al biilor din marcaj b). Cu 2 ci: 2K seturi i numrul total al biilor de marcaj este (32-11)*2*2K = 84Kb Cu 4 ci: 1K seturi i numrul total al biilor de marcaj este (32-10)*4*1K = 88Kb

c). 1 set cu 4K blocuri iar marcajul are 32 de bii => 32*4K*1 = 128 bii pentru marcaj

MEMORIA VIRTUAL

Memoria principal poate aciona ca o memorie cache pentru nivelul de stocare secundar uzual implementat cu discuri magnetice.

De ce avem nevoie de o memorie virtual ? 1. Permite folosirea n comun, eficient i sigur a memoriei de ctre mai multe programe

2. nlturarea problemelor de programare cauzate de o memorie principal mic

Memoria principal trebuie s conin doar poriunile active ale programelor, deci va fi necesar un mecanism de protecie a programelor ntre ele trebuie s ne asigurm c un program va scrie i va citi doar din memoria principala atribuit lui.

Memoria virtual implementeaz translatarea spaiului de adrese al programului n adrese fizice. Acest translatare asigur unicitatea spaiului de adrese al unui program fa de alte programe.

Pn la apariia acestui concept, depirea dimensiunii de memorie implica intervenia programatorului. Se mprea programul n componente i se trecerea la determinarea excluderilor mutuale. Suprapunerile erau ncrcate sau scoase din memorie n timpul execuiei programului. Apelurile dintre procedurile aflate n diferite module determinau suprapunerea unui modul cu altul. Un bloc de memorie virtual este denumit pagin, iar un eec la accesarea memoriei virtuale se numete page fault. Pentru memoria virtual vom avea adrese virtuale ce sunt translatate n adrese fizice.

Exemplu: Adresa virtual este numele unei cri iar adresa fizic reprezint locaia crii n bibliotec.

Procesorul genereaz adrese virtuale n timp ce memoria este accesat folosind adrese fizice Ambele memorii sunt compuse din pagini (virtuale/fizice) ntre care exist o coresponden de 1:1 Exist posibilitatea ca o pagin virtual s fie prezent numai pe disc = > imposibilitatea de a avea ca i coresponden o pagin fizic . O pagin fizic poate fi folosit n comun dou adrese virtuale fac referire la acceai adres fizic.

Memoria virtual ofer mecanismul de realocare se calculeaz corespondena dintre adresele virtuale folosite de program i diferitele adrese fizice , nainte ca adresele fizice s fie folosite de program.

Realocarea se face pe baz de blocuri de dimensiune fix.

Proiectarea sistemelor de memorie virtual Dimensiunea paginilor trebuie s fie mare pentru a amortiza timpul de acces ridicat 32KB sau 64KB spre exemplu Amplasarea complet asociativ a paginilor se reduce complet frecvena de page fault. Page fault-urile pot fi tratate prin intermediul software-ului. n memoria virtual, paginile sunt localizate prin folosirea unui tabel ce indexeaz memoria; acest structur se numete page table tabel de pagin. Fiecare program are tabelul su de pagini, ce conine corespondena dintre spaiul su de adrese virtuale i adresele memoriei principale.

Adresa unui tabel este memorat ntr -un registru ce indic adresa de nceput a tabelului page table register.
!!!! Presupunem c tabelul se gsete ntr -o regiune fix i continu din memorie

Page faults n cazul n care bitul de validare este 0 (apare page fault) controlul va fi preluat de SO prin intermediul unui mecanism de tratare a excepiilor SO-ul caut pagina n urmtorul nivel de memorie din ierarhie, adresa virtual nu poate indica unde se gsete pagina cerut. SO-ul creeaz un spaiu pe disc pentru toate paginile unui proces odat cu crearea acestuia, mpreun cu o structur de date pentru nregistrarea locului unde este memorat fiecare pagin virtual pe disc. SO-ul creeaz de asemenea, o structur de date ce ine evidena proceselor i adreselor virtuale folosite de ctre fiecare pagin fizic.

Tabelele cu adresele paginilor fizice i ale paginilor de pe disc vor fi memorate n dou structuri de date separate.

Cantitatea de memoria folosit pentru memorarea tabelor de pagini este mare.

Tehnici pentru reducerea volumului de memorie ocupat de tabelele de pagini i minimizarea memoriei principale alocate acestora

1. Utilizarea unui registru de limitare ce constrnge dimensiunea tabelului de pagini pentru un proces dat. 2. Majoritatea limbajelor necesit 2 poriuni expandabile una ce conine stiva i cealalt ce conine zona de acumulare (HEAP). Dezavantaj nu funcioneaz bine atunci cnd spaiul de adrese este folosit ntr-un mod discontinuu.

3. Aplicarea unei funcii de cutare HASHING pentru adresa virtual, astfel nct structura de date ce conine tabelul de pagini s aib o dimensiune egal doar cu numrul de pagini fizice existente n memoria principal.

4. Paginarea tabelor de pagini.


5. Utilizarea mai multor niveluri de tabele de pagini.

Memoria virtual - continuare -

Putem folosi scheme de memorii cache cu scrieri simultane doar dac implementm bufer-e de memorie (diferena dintre timpul de acces al memoriei cache i cel al memoriei principale este de ordinul zecilor de cicluri)

Sistemele de memorie virtual trebuie s implementeze scrierea la loc (copy back) se execut scrieri individuale n pagina de memorie i se copiaz aceast pagin napoi pe disc, atunci cnd este nlocuit n memorie.

Va trebui s determinm dac o pagin de memorie necesit transferul napoi atunci cnd ea este nlocuit n memorie.

Pentru aceasta adugm un bit de scriere dirty bit. Acest bit iniial 0 va deveni 1 n momentul n care se scrie prima dat n aceast pagin.

Mrirea vitezei de translatare a adresei

Unde sunt pstrate tabelele de pagini ? Ce accese la memorie sunt necesare pentru un program ? Ce principiu putem utiliza pentru mrirea performanei ?
Cnd este folosit o translatare pentru un numr de pagin virtual, aceasta va fi probabil necesar din nou n viitorul apropiat. De ce ?

Din aceste considerente, mainile moderne includ o memorie cache special care menine evidena translatrilor recente numit Translation Lookaside Buffer memorie tampon de translatare cu cutare lateral - TLB

TLB acioneaz ca i o memorie cache a tabelului de pagini doar pentru poziiile acestuia ce au corespondent n paginile fizice

La fiecare referin se va cuta numrul de pagin virtual din TLB. Daca avem HIT, numrul paginii fizice este utilizat pentru formarea adresei, iar bitul de referin corespunztor va fi setat. Bitul de scriere va fi setat i n cazul n care procesorul execut o scriere Dac avem MISS trebuie determinat cauza: greeal de pagin sau eec n TLB.

Cazul 1 eec n TLB, deci pagina este n memorie => c translatarea lipsete. UCP-ul va trata eroarea prin ncrcarea translatrii din tabelul de pagini n TLB i reluarea referinei.
Cazul 2 greeal de pagin, UCP-ul va invoca sistemul de operare folosind o excepie. Eecurile n TLB vor fi mult mai frecvente dect greelile de pagin. De ce ? Eecurile n TLB vor fi tratate software sau hardware. Ambele metode ofer performane similare.

Integrarea memoriilor Fig 1.

n timp ce memoria cache are coresponden direct, TLB -ul are asociativitate total. Implementarea asociativitii totale pentru TLB necesit ca fiecare marcaj din TLB i fie comparat cu valoarea indexului T deoarece poziia cutat poate fi oriunde n TLB.

Dac bitul de validare al poziiei corecte este setat, accesul la TLB este un succes i numrul de pagin mpreun cu deplasarea acesteia formeaz indexul ce este folosit pentru accesul la memoria cache.

Citirea sau scrierea cu un TLB i o memorie cache DEC Station 3100

Considerm ierarhia de memorie din figura 1 ce include: un TLB o memorie cache O referin la memorie poate avea urmtoarele 3 tipuri de eecuri: un eec al memoriei cache un eec al TLB-ului greeal de pagin
Memorie cache
MISS

TLB
HIT

Memorie virtual
HIT

Eveniment posibil ? n ce condiii ?


Posibil, tabelul de pagini nu este niciodat verificat la succes TLB

HIT
MISS MISS MISS HIT HIT

MISS
MISS MISS HIT HIT MISS

HIT
HIT MISS MISS MISS MISS

Eec TLB, dar poziia este gsit n tabelul de pagini; dup rencrcare, datele se vor gsi n memoria cache
Eec TLB, poziia este gsit n tabelul de pagini; dup rencrcare datele vor lipsi din cache Eec TLB urmat de o greeal de pagin; dup rencrcare datele trebuie s lipseasc din memoria cache Imposibil: TLB-ul nu poate conine o translatare dac pagina nu se gsete n memorie Imposibil: Imposibil

Exemplul prezentat presupune c adresele de memorie sunt translatate n adrese fizice nainte ca memoria cache s fie accesat => memoria cache este indexat i marcat fizic.

Timpul de acces la memorie (n cazul HIT) = timpul de acces TLB + timp acces memoria cache accesele pot fi executate n pipe.

O alternativ la aceast soluie este aceea ca UCP-ul s indexeze memoria cache cu o adres parial/complet virtual MEMORIE CACHE ADRESAT VIRTUAL.

n astfel de implementri, memoria cache este indexat i marcat virtual. Hardware-ul pentru translatarea adresei (exp. TLB-ul) nu este folosit n timpul accesului normal la memoria cache De ce ?

n cazul unor astfel de implementri, cnd paginile sunt folosite n comun de ctre programe, exist posibilitatea de suprapunere - ALIASING

Protecia folosind memoria virtual

Funcia cea mai important a unei memorii virtuale folosirea de ctre mai multe procese n comun a memoriei principale. Mecanismul de protecie trebuie s asigure: un proces nu poate s scrie n spaiul de adrese al altui proces sau n sistemul de operare nu trebuie s fie posibil situaia n care un proces citete datele altui proces
Pentru asigurarea acestor cerine hardware-ul trebuie s ofere: trebuie s suporte cel puin dou moduri ce indic dac procesul executat este un proces al utilizatorului sau un proces al sistemului de operare (kernel process sau supervisor process)

trebuie s furnizeze o poriune a strii UCP -ului pe care s o poat citi, dar nu i scrie un proces al utilizatorului sistemul de operare folosete instruciuni speciale oferite doar n modul supervizor
trebuie s ofere mecanisme prin care UCP poate trece din modul utilizator n cel supervizor i invers

Tratarea greelilor de pagin i a eecurilor n TLB Un eec TLB apare atunci cnd nici o poziie n TLB nu corespunde unei anumite adrese virtuale. Putem avea urmtoarele posibiliti: 1. Pagina este prezent n memorie i trebuie creat poziia lips din TLB 2. Pagina nu este prezent n memorie i trebuie ca SO-ul s s prelucreze aceast situaie Cum stabilim care situaie este situaia curent ?

Un eec TLB poate fi tratat software sau hardware va trebui o secven scurt de operaiuni pentru a copia o poziie valid din tabelul de pagini n TLB.

Excepia cauzat de greeala de pagin trebuie declarat pn la sfritul aceluiai ciclu de ceas n care se face accesul la memorie.

CONCLUZII

Memoria virtual reprezint numele unui nivel din ierarhia de memorie ce administreaz caching-ul dintre memoria principal i unitatea de disc. Permite unui singur program s i extind spaiul de adrese n afara limitelor memoriei principale. Memoria virtual permite folosirea n comun a memoriei principale de ctre mai multe procese simultan active oferind mecanisme de protecie a memoriei.

Tehnicile existente pentru administrarea ierarhiei de memorie ntre memoria principal i unitatea de disc sunt: 1. Folosirea de blocuri de date de dimensiuni mari (pagini) pentru folosirea principiului localizrii spaiale 2. Corespondena dintre adresele virtuale i cele fizice implementat printr-un tabel de pagini este total asociativ => o pagin virtual poate fi plasat oriunde n memoria principal. 3. SO-ul folosete LRU sau bitul de referin pentru alegerea paginii care trebuie nlocuit

Mecanismul memoriei virtuale ofer translatarea din adrese virtuale n adrese fizice. Acest translatare permite folosirea n comun n mod partajat a memoriei principale. TLB-ul acioneaz ca o memorie cache pentru translatrile din tabelul de pagini. Fiecare adres este translatat dintr-una virtual n una fizic folosind translatrile din TLB.

UNDE POATE FI AMPLASAT UN BLOC DE DATE ? Amplasarea blocului la nivelul superior al ierarhiei. Avantajul creterii gradului de asociativitate este acela al scderii ratei de eec.

Performana crete prea puin n cazul mririi dimensiunii memoriei cache deoarece rata de eec global a unei memorii cache de dimensiuni mari este mai redus. Dezavantajul schemelor cu asociativitate este dat de costurile crescute i de timpul de acces mai mare.
CUM SE POATE REGSI UN BLOC DE DATE ?

Implementarea unui grad nalt de asociativitate n memoriile cache nu este o soluie optim datorit costurilor comparatoarelor care cresc n timp ce rata mbuntirile ratei de eec sunt mici.
n sistemele de memorie virtual se pstreaz un tabel separat de coresponden pentru indexarea memoriei. Alegerea asociativitii totale i a acestui tabel sunt justificate de 4 factori. Care sunt aceeia ? Schemele de amplasare cu asociativitate parial sunt folosite pentru memoriile cache i TLB-uri, unde accesul combin indexarea i cutarea ntr -un set redus de locaii.

CE BLOC DE DATE TREBUIE NLOCUIT N CAZ DE MISS PENTRU MEMORIA CACHE ? n cazul n care memoria este cu asociativitate total, toate blocurile pot fi nlocuite. Dac memoria cache este parial asociativ, trebuie ales ntre blocurile din set. Dac avem memorie cu coresponden direct, atunci avem o singur posibilitate de nlocuire. Strategiile fundamentale de nlocuire sunt: aleatorie i LRU. LRU nu se implementeaz n ierarhii cu mai mult de 2-4 grade de asociativitate. Pentru restul de ierarhii LRU este doar aproximat. n memoriile cache algoritmul de nlocuire este codificat n hardware. Odat cu creterea dimensiunii memoriei cache rata de eec pentru ambele startegii de nlocuire scade i diferena devine foarte mic.

CE SE NTMPL N CAZUL SCRIERILOR ?

Exist 2 metode de baz: Scrierea simultan informaia este scris att n blocul de date din memoria cache ct i n blocul de date din nivelul inferior al ierarhiei. Scrierea la loc informaia este scris doar n blocul din memoria cache. Blocul modificat este scris la nivelul ierarhic inferior doar atunci cnd este nlocuit.

AVANTAJE pentru scrierea la loc: 1. Cuvintele individuale pot fi scrise de procesor la viteza cu care sunt acceptate de ctre memoria cache i nu de ctre memoria principal. 2. Scrierile multiple n interiorul blocului necesit o singur scriere n nivelul inferior al ierarhiei de memorie 3. Pentru scrierea blocurilor la nivelul inferior se folosete un transfer de band mare.

AVANTAJE pentru scrierea simultan: 1. Eecurile sunt mai simple i au un cost mai sczut, deoarece nu necesit scrierea unui bloc la loc n nivelul inferior de memorie

2. Este un sistem mai uor de implementat n hardware

I/O

Actualmente exist o mare varietate de dispozitive de I/O. Organizarea acestor dispozitive se poate face avnd n vedere urmtoarele caracteristici: 1. COMPORTAREA input (citire o singur dat); output (scriere odat); storage (citire i rescriere) 2. Partenerul om sau dispozitiv electronic

3. Rata datelor valoarea maxim cu care datele pot fi transferate ntre dispozitivul de I/O i memoria principal/procesor

Exp: Tastatura este un dispozitiv de intrare utilizat de ctre om cu o rat a datelor de peste 10 bytes/sec

Conexiunile ntre dispozitivele de I/O, procesor i memorie sunt denumite magistrale. Comunicaia ntre dispozitive i procesor presupune utilizarea ntreruperilor precum i folosirea unor protocoale de comunicaie.

Performana I/O depinde de limea de band existent ntre dispozitive. Limea de band poate fi msurat prin 2 metode: 1. Ct de multe date pot fi mutate prin sistem ntr-o anumit perioad de timp 2. Cte operaii de I/O pot fi efectuate ntr-o unitate de timp

Exemple: n cazul aplicaiilor multimedia limea de band este folosit n determinarea performanei; n cazul procesrilor unui numr foarte mare de accese al unui dispozitiv I/O, numrul de operaii I/O efectuate n unitatea de timp va fi factorul cheie n determinarea performanei.
n cazul calculatoarelor i al laptop-urilor, timpul de rspuns este considerat factorul cheie n determinarea performanei

n cazul dispozitivelor embedded ne intereseaz durata fiecrui task i numrul de task-uri ce pot fi procesate ntr/o secund.

Discurile magnetice platane rotitoare acoperite cu o suprafa magnetic ce utilizeaz micarea capetelor de citire/scriere pentru accesul la disk. Este nonvolatil datele rmn i dup ntreruperea alimentrii cu energie a dispozitivului.

1-4 platane, fiecare avnd 2 suprafee ce pot fi scrise;


Stiva de platane este rotit cu o vitez de 5400 15000 RPM.

Diametrul platanelor este de la 1 inch la peste 3,5 inch


Fiecare suprafa de disk este mprit n cercuri concentrice denumite piste. Ele sunt n numr de 10000 50000 pe o singur suprafa. Fiecare pist este mprit n sectoare (100-500). Fiecare sector are o dimensiune tipic de 512bytes. Secvena de scriere este urmtoarea: numr sector gap informaia pentru sector + codul de corecie eroare gap numrul umtorului sector

Iniial toate pistele aveau acelai numr de sectoare s-a introdus ZBR (zone bit record) Capetele de citire/scriere sunt conectate mpreun => micarea se face n conjuncie. Fiecare cap este peste aceeai pist indiferent de suprafa => cilindru. Accesarea unei date presupune: 1. Poziionarea capetelor deasupra pistei dorite seek seek time

2. Se ateapt pn cnd capetele ajung deasupra sectorului dorit delay sau rotational delay
Exp:

Average rotational latency =

0,5 5400 RPM

s 5400 RPM / (60 ) m

0,5 rotatii

0,0056 s 5,6 ms

Average rotational latency =

0,5 15000 RPM

s 5400 RPM / (60 ) m

0,5 rotatii

0,0020 s

2,0 ms

3. Timpul de transfer timpul necesar transferrii unui bloc de bii. Timpul de trasfer = f(dimensiune sector, viteza de rotaie, densitatea nregistrrilor a unei piste)

Controller-ul de disk are rol de control al discului precum i de control al transferului dintre disk i memorie.
La timpul de acces la disk se include i timpul necesar operrii controller-ului de disk Exp: S se determine timpul mediu de citire/scriere al unui sector de 512bytes pentru un disk care are o vitez de rotaie de 10000 RPM. Se cunosc: 1. 2. 3. 4. Timpul mediu de poziionare dat = 6 ms Rata de transfer = 50 MB/s Overhead-ul controller-ului este de 0,2 ms Presupunem c discul este idle => nu exist timp de ateptare

Soluie Timpul mediu de acces al discului = timpul mediu de poziionare + ntrzierea medie + timpul de transfer + overhead-ul controller-ului

6,0 ms

0,5 rot 10000 RPM

0,5 KB 50 MB / s

0,2 ms 6,0 3,0 0,01 0,2 9,2 ms

Dac timpul mediu de poziionare msurat este 25% din timpul mediu dat, atunci avem: 1,5 ms + 3,0 ms + 0,01 ms + 0,2 ms = 4,7 ms

RAID Redundant Arrays of Inexpensive Disks O organizare de disk-uri care utilizeaz o matrice de disk-uri mici (ca i capicate) i ieftine pentru creterea performanelor i a siguranei n utilizare. Ideea a fost de nlocuire a discurilor mari cu disk-uri mici. Disk-urile mici sunt mult mai eficiente per gigabyte dect disk-urile mari (evident ne referim la cantitatea de date stocat pe un astfel de disk) RAID 0 nu avem redundan striping Presupune rspndirea datelor pe mai multe disk-uri => acces automat la mai multe disk-uri simultan. Din punct de vedere al utilizatorului exist doar un singur disk, ceea ce simplific managementul informaiei. Performan mare pentru accese la informaie de dimensiune mare (sisteme de editare video) deoarece mai multe disk-uri funcioneaz ca unul singur.

RAID 1 toleran la defecte mirroring sau shadowing Este modalitatea aleas atunci cnd tolerana la defecte este un punct critic. Numrul de hardisk-uri utilizat este dublu fa de RAID 0. Cnd o dat este scris pe un disk, automat datele sunt scrise pe un alt disk redundant => ntotdeauna vom avea 2 copii ale informaiei. Dac un disk va prezenta un defect la un moment dat, atunci informaia va fi citit de pe discul oglind. CEA MAI SCUMP SOLIE RAID. RAID 2 detectare i corectare erori mprumut tehnicile de detecie i corecie a erorilor folosite n cazul memoriilor

RAID 3 grup de protecie bit-interleaved parity Costul unei disponibiliti mrite a datelor poate fi redus la 1/N, unde N este numrul de disk-uri care fac parte dintr-un grup de protecie. Dect s adugm disk-uri, mai simplu ar fi s adugm informaie redundant pentru restaurarea informaiei pierdute n caz de crash.

Citirile/scrierile se fac pe toate disk-urile din grup, dar vom avea 1 extra disk pentru meninerea informaiei de verificare n caz de crash. Schema folosit este determinarea paritii informaiei. RAID 3 este foarte folosit n cazul aplicaiilor care utilizeaz seturi de date foarte mari multimedia sau cod tiinific

RAID 4 block-interleaved parity Similar cu RAID 3, doar c utilizeaz un acces al datelor diferit. Paritatea este memorat ca blocuri i asociat cu un set de blocuri de date.

RAID 3 vs RAID 4 Sunt optimizate scrierile mici, deci vom avea un numr redus de accese la disk precum i un numr mic de disk-uri ocupate.

RAID 5 distributed block-interleaved parity Dezavantajul lui RAID 4 este faptul c paritatea disk-ului trebuie recalculat la fiecare scriere. O soluie ar fi s distribuim aceast informaie pe toate discurile astfel nct s nu mai avem un singur bottleneck.

Prin aceast soluie, anumite scrieri mici pot fi executate n paralel.

RAID 6 P + Q redundancy

Folosit n cazul n care o singur corecie nu este suficient. Putem generaliza paritatea pentru a avea o nou calulaie pentru date i o nou informaie pentru verificarea discului. Acest block secundar este folosit pentru recuperarea datelor n caz de eec multiplu. Overhead-ul este dublu fa de RAID 5.

Alte metode folosite n practic


1. HOT SWAPPING replasarea unei componente hardware ct timp sistemul este n stare de funcionare 2. STANDBY SPARES Cuplarea unor resurse hardware noi imediat ce o resurs hardware este defect

MAGISTRALE - BUSES

O magistral conine un set de linii de control i un set de linii de date. Liniile de control sunt utilizate pentru semnale de tip cerere i confirmare i ele indic tipul informaiei existent pe liniile de date. Liile de date sunt folosite la transportarea informaiei ntre surs i destinaie. Acest informaie poate s conin comenzi complexe, date i adrese.

Bus transaction o secven de operaii care include o cerere i poate include un rspuns. O tranzacie este iniiat de un singur request i poate avea mai multe operaii individuale de magistral. Processor-memory bus

Backplane Bus - o magistral care este proiectat pentru a permite coexistarea pe o singur magistral a urmatoarelor componente: procesor, echipamente I/O, memoria

Magistral sincron O magistral care include ceasul n liniile de control i un protocol fix pentru comunicarea relativ la frontul de ceas.

Magistral asincron O magistral care utilizeaz protocolul HANDSHAKING pentru coordonarea utilizrii n locul ceasului. Este folosit ca o punte de legtur ntre dispozitive care opereaz la viteze diferite

Firewire (1394)

USB 2.0

Protocolul - HANDSHAKING

Split Transaction Protocol Un protocol n care magistrala este eliberat pe durata unei transacii de magistral ct timp cel care a lansta cererea este n ateptare pentru datele ce vor fi transmise.

Studiu de caz PENTIUM 4

S-ar putea să vă placă și