|
Magistrale sincrone
1 Magistrale sincrone
Ca exemplu despre modul de functionare al unei magistrale, consideram temporizarea din figura 4.11. In acest exemplu se va folosi un ceas cu frecventa de 40 Mhz, care da un ciclu de magistrala de 25 nanosecunde. In timp ce acesta poate parea mai putin rapid in comparatie cu un CPU la 1 Ghz sau chiar mai mult, pana de curand existau doar cateva magistrale cu mult mai rapide. De exemplu, magistrala ISA care se gasea pe toate PC-urile bazate pe tehnologie Intel lucrau la o frecventa de 8,33 Mhz si chiar popularul tip de magistrala PCI functioneaza la 33 sau 66 Mhz. Motivele din care multe tipuri de magistrale nu sunt atat de rapide pe cat sar dori sunt: probleme de proiectare cum ar fi desincronizarea magistralelor si necesitatea compatibilitatii cu modelele anterioare.
In exemplul nostru, vom accepta ca citirea din memorie dureaza 40 nanosecunde din momentul in care adresa este stabila. Va fi nevoie de trei cicli de magistrala pentru a citi un cuvant din memorie. Primul ciclu incepe la frontul crescator al lui T1, iar al treilea se termina la frontul crescator al lui T4, dupa cum apare in figura. Sa notam faptul ca niciunul dintre fronturile ascendente ori descendente n-a fost desenate vertical, deoarece nici un semnal electric nu-si poate schimba valoarea fara sa treaca o perioada de timp, oricat de mica. In acest exemplu vom presupune ca este nevoie de 1 ns pentru ca un semnal sa se schimbe dintr-o stare in alta. Ceasul, liniile de adresa, de date, MREQ, RD si WAIT sunt toate desenate pe aceeasi scala de timp.
Inceputul lui T1 este definit de frontul crescator al ceasului. In intervalul T1 CPU-ul pune adresa cuvantului pe care-l doreste extras din memorie pe liniile de adrese. Deoarece adresa nu este o singura valoare, precum ceasul, nu o putem desena ca o singura linie in figura: va apare ca 2 linii, cu o intersectare la momentul in care adresa se schimba. Mai mult, hasura anterioara intersectiei indica faptul ca valoarea hasurata nu este semnificativa. Folosind acelasi mod de hasurare, vom observa cum continutul liniilor de date nu este semnificativ pana in intervalul T3.
Dupa ce liniile de adrese au avut timp sa se stabilizeze la noile valori, sunt activate MREQ si RD. Primul semnal indica faptul ca memoria (spre deosebire de o componenta I/O) este accesata, iar al doilea semnal ca memoria este accesata pentru citire (negata pentru scriere). Avand in vedere faptul ca memoria necesita 40 ns. dupa ce adresa e stabila (in primul ciclu de ceas) aceasta nu poate furniza datele cerute in intervalul T2.
Pentru a-i spune CPU-ului sa nu astepte, memoria activeaza linia WAIT la inceputul lui T2. Aceasta actiune va insera timpi de asteptare - stari wait (cicli de magistrala suplimentari) - pana cand memoria a terminat lucrul la operatiunea curenta si WAIT devine negat. La inceputul lui T3, cand este sigur ca va avea datele in cursul ciclului curent,memoria furnizeaza WAIT negat.
In timpul primei jumatati a lui T3 memoria pune datele pe liniile de date.
La frontul descrescator al lui T3, CPU-ul citeste liniile de date, pastrand valorile intrun registru intern. Dupa citirea datelor, CPU-ul furnizeaza MREQ si RD negate. Daca e nevoie, un alt ciclu de memorie poate incepe la urmatorul front crescator al ceasului. In specificatiile de temporizare din figura 4.12, 8 simboluri care apar in diagrama de timp din figura 4.11 sunt explicate:
TAD este intervalul de timp intre frontul crescator al ceasului T1 si setarea liniilor de adresa. Potrivit specificatiilor de temporizare, TAD ≤ 11 ns Aceasta inseamna ca producatorul CPU-ului garanteaza ca in timpul oricarui ciclu de
citire, CPU-ul va furniza adresa spre a fi citita in cel mult 11 ns de la mijlocul frontului crescator al lui T1.
Specificatiile de temporizare indica deasemenea necesitatea ca datele sa fie pe liniile de date la cel putin TDS (5 ns) inainte de frontul descrescator al lui T3, pentru a-le acorda timp sa se stabilizeze inainte ca CPU-ul sa citeasca datele. Combinatia de reguli pe TAD si TDS inseamna ca, in cel mai rau caz, memoria va avea numai 62,5-11-5 = 46,5 ns de la momentul cand adresa apare pana cand trebuie sa furnizeze datele. Deoarece 40 ns sunt suficiente, chiar si in cel mai rau caz, o memorie de 40 ns poate intotdeauna raspunde in 3/8 timpul lui T3. O memorie de 50 nanosecunde ar trebui sa insereze o a doua stare wait si sa raspunda in timpul lui T4.
Specificatiile de temporizare garanteaza faptul ca adresa va fi setata cu cel putin 6 nsiainte ca MREQ sa fie activat. Acest interval de timp poate fi important daca MREQ faceselectia pe cipul de memorie deoarece unele memorii necesita un timp de setare a adreseianterior selectiei cipului. In mod normal, proiectantul de sisteme n-ar trebui sa aleaga un cipde memorie care necesita un timp de setare a adresei de 10 ns. Regulile impuse pentru TM si pe TRL inseamna ca MREQ si RD vor fi ambele activate in cele 8 ns de la frontul descrescator de ceas din T1. In cel mai rau caz, cipul de memorie va avea numai 25 + 25 - 8 -5 = 37 ns la dispozitie, dupa activarea lui MREQ siRD, pentru a pune datele pe magistrala. Aceasta regula este suplimentara si independenta fata de intervalul de 40 de ns necesar dupa ce adresa este stabila. TMH si TRH stabilesc cat de mult timp este necesar pentru negarea lui MREQ si RD dupa ce datele au fost citite.
In final TDH spune cat timp memoria trebuie sa tina datele pe magistrala dupa ce RD a fost negat. In ceea ce priveste CPU-ul din cazul nostru, memoria poate inlatura datele de pe magistrala imediat dupa ce RD a fost negat. Pentru unele CPU-uri datele trebuie tinute stabile ceva mai mult timp.
Figura 4.12 este o versiune foarte simplificata a regulilor de temporizare reale. In realitate, sunt specificate multe alte momente critice. Cu toate acestea, ne da o foarte buna idee despre modul de functionare al magistralelor.
O ultima idee ar fi ca semnalele de control pot fi accesate 'high' sau 'low'. Depinde de proiectantii de magistrale sa hotarasca cea mai convenabila varianta. Alegerea este arbitrara.
Unii pot privi acest fapt ca echivalent al alegerii unui programator de a reprezenta blocurile libere pe disc intr-un bitmap cu '0' sau '1'.