Sunteți pe pagina 1din 16

Cap.

5
METODE DE INTERFAłARE ŞI PRELUCRARE A
DATELOR ACHIZIłIONATE ÎN SISTEME
MULTIPROCESOR

5.1. STADIUL ACTUAL DE INTERFAłARE ŞI


PRELUCRARE ÎN SISTEME MULTIPROCESOR

5.1.1. Arhitectura sistemelor de prelucrare şi achiziŃii de


date multimicroprocesor

Arhitectura sistemelor de achiziŃii de date multiprocesor influenŃează foarte


mult performanŃele sistemului trebuind să răspundă la numeroase probleme. În
principal acestea sunt: timpul de acces la memoria globală şi în general la resursele
sistemului pentru oricare procesor şi modul de conectare a magistralei între
multiplele procesoare. O soluŃie constă în creşterea frecvenŃei de lucru a
procesoarelor. Aceasta poate aduce îmbunătăŃiri majore ale performanŃelor
sistemului dar are o limită de viteză. În consecinŃă este necesară îmbunătăŃirea
arhitecturii microprocesoarelor care să permită divizarea sarcinilor în cadrul
sistemului multiprocesor şi activitatea separată fără a necesita accesul la memoria
globală sau la magistrala sistemului. Din studiile făcute [6, 16, 33, 35, 38, 55, 78],
rezultă că sistemele cu memorie locală, distribuită fiecărui procesor, asigură
performanŃe ridicate sistemului şi rezolvă cele două probleme. Se poate ajunge la o
bandă de acces la resursele sistemului de 200 MIPS astfel că raportul
performanŃă/cost se aproprie de cele mai multe supercomputere[4, 11, 15, 105].
Arhitectura unui sistem multiprocesor de achiziŃii de date în timp real este
prezentată în fig. 5.1. ReŃeaua de multiprocesoare este puternic cuplată cu o
memorie globală partajată şi o magistrală internă de comunicare foarte rapidă
pentru întreg sistemul. Un procesor cu prioritatea cea mai mare la un moment dat
comandă adresele şi preia controlul semnalelor de pe magistrala în vederea
transferului. Deoarece procesoarele CISC avansate pot controla singure magistrala,
nu este necesar un procesor separat care să asiste la transferul de date. Fiecare
procesor are o memorie locală care îi permite rezolvarea acelor procese care nu
necesită date de la memoria globală sau alte resurse. Procesorul prioritar poate avea
rezident o magistrală a memoriei foarte rapidă. Timpul consumat de procesorul
prioritar depinde numai de lăŃimea de bandă a magistralei, cererile de prioritate şi
încărcarea magistralei.
Conectarea modulelor de intrare/ieşire, specifice sistemelor de achiziŃie în
timp real, se face printr-o magistrală EISA (Extended Industry Standard
Architecture) sau MCA (Micro Channel Architecture) care au lăŃimea de bandă de
la 10 la 20 MIPS. De aceea este necesar un procesor de control al magistralei de
intrări/ieşiri care să asigure o lăŃime de bandă de transfer date la memoria
sistemului de 100 - 200 MIPS.

Fig. 5.1.

Procesoarele pe 32 de biŃi cu un set de instrucŃiuni complex cunoscute ca


procesoare CISC (complex - instruction - set computer) printr-o bază largă de
programe existente domină în ceea ce priveşte utilizarea în aplicaŃii de tipul:
calculator de birou sau personal, server de reŃea de calculatoare şi multe altele.
Pentru sistemele de achiziŃii de date în timp real, diagnosticarea şi
monitorizarea prin vibraŃii sau controlul roboŃilor în timp real unde timpul de
execuŃie a programelor este un parametru critic se obŃin performanŃe ridicate cu
procesoarele cu un set redus de instrucŃiuni cunoscute ca procesoare RISC
(reduced-instruction-set computer). Acestea sunt foarte rapide, majoritatea
instrucŃiunilor realizându-se prin implementare hard.
Procesoarele CISC avansate preiau avantajele de la procesoarele RISC prin
dezvoltarea unor noi arhitecturi cu îmbunătăŃirea vitezei de execuŃie la nivelul
procesoarelor RISC. Pe lângă asigurarea unei viteze ridicate de calcul au
suplimentar alte avantaje: spaŃiu larg de adresare, programare uşoară, moduri de
adresare flexibile, arhitectura orientată pe task-uri, răspuns rapid la cererile de
întrerupere şi arbitrare a magistralei, uşoară configurare a perifericelor sistemului.
Fiind conceput pentru a lucra într-un sistem multiprocesor cuplat puternic, rămâne
în continuare deficitar în ceea ce priveşte funcŃionarea task-urilor cu flux de date
paralele sau concurenŃiale.
EvoluŃia procesoarelor CISC avansate are o dezvoltare în timp
exponenŃială în ceea ce priveşte complexitatea şi performanŃele procesoarelor [72],
aşa cum se vede în fig. 5.2.
Prin creşterea frecvenŃei de ceas a procesorului de la 16 MHz la 200 Mhz
şi utilizând peste 120.000 de tranzistoare, se obŃin facilităŃile necesare
implementării sistemelor de achiziŃii de date pentru multe aplicaŃii.

Fig. 5.2.

PerformanŃele de viteză şi facilităŃile arhitecturilor multiprocesor cu


cuplare puternică sunt dependente de două probleme de programare: coerenŃa
memoriei globale a sistemului cu multiplele memorii locale şi încărcarea în mod
egal a sarcinilor procesoarelor. Mecanismele interne ale procesoarelor CISC
avansate ca preluarea magistralei şi modurile de adresare a memoriei locale,
discutate în capitolul următor, asigură ele însuşi coerenŃă memoriei locale. Astfel
că, proiectantului îi revine sarcina de a obŃine încărcarea egală a procesoarelor.
Principalele mecanisme care asigură îmbunătăŃirea performanŃelor
sistemelor multiprocesor CISC avansate sunt: generare de întreruperi, preluarea
magistralei, arbitrarea magistralei, modurile de adresare la memoria locală,
descriptori de pagină indirecŃi.
O sinteză a facilităŃilor şi mecanismelor care asigură îmbunătăŃirea
performanŃelor procesoarelor CISC avansate este prezentată în capitolele
următoare.

5.1.2. FacilităŃi oferite de sistemele multiprocesor avansate


pentru prelucrare date

Sistemele multiprocesor avansate sunt bazate pe microprocesoare de 32


biŃi de performanŃe ridicate, având ca principale caracteristici [18, 62, 76, 108]:
• adresare nemultiplexată cu magistrala de adrese şi date pe 32 biŃi;
• memorie locală de instrucŃiuni şi date cu accesare simultană;
• suport multimaster/multiprocesor prin mecanisme de preluare a
magistralei;
• conŃine unitate în virgulă mobilă cu execuŃie concurentă cu unitatea de
întregi;
• translatarea directă a adresei memoriei locale pentru date şi instrucŃiuni
ATC ;
• conŃine unitate de control a memoriei pentru date şi instrucŃiuni cu
funcŃionare paralelă;
• suportă arbore de translaŃie separat “utilizator” şi "supervizor";
• mod de selectare a memoriei locale pe pagini.

Prin includerea FPU (Floating Point Unit), cu execuŃie "pipe - line" cu unitatea
de întregi, se reduce timpul de execuŃie asigurând calcule cu numere reale în
simplă, dublă sau precizie extinsă iar cu numere întregi de la 1 byte la 16 byte (128
biŃi).

UNITATEA DE CONTROL MEMORIE (MMU). Unitatea de


control a memoriei - MMU (Menagement Memory Unit) este împărŃită, pentu a
asigura un răspuns rapid, în două unitaŃi independente, de date şi de instrucŃiuni,
amândouă suportând memorie virtuală paginată la cerere ("demand-paged").
Controlul memoriei se face la cerere, deoarece în program nu se specifică aria de
memorie necesară în avans, fiind cerută prin accesarea adresei logice. Memoria
este paginată, respectiv memoria fizică este împărŃită în blocuri egale de 4 kbyte,
8 kbyte, iar adresele logice în pagini de dimensiuni egale. Sistemul de operare
asigură corespondenŃa adresării memoriei la paginile create conform necesităŃilor
programului.
Caracteristicile principale ale MMU sunt:
• MMU de date şi instrucŃiuni independente;
• translatare adrese logice de 32 biŃi la adrese fizice de 32 biŃi (4 Gbyte);
• asigură 64 de intrări a patru căi asociative pentru fiecare ATC din MMU
(respectiv 128 intrări);
• suportă arbore de translaŃie separat pentru modul "super-vizor" şi
"utilizator";
• tabele ale arborelui de translaŃie pe trei nivele;
• protecŃie "super-vizor" şi la "scriere";
• selectarea modului de acces la memoria locală pe paginile de bază;
• conŃine patru registre de translaŃie transparente (DTTx, ITTx)
independente, cu translatare directă la adrese fizice în blocuri de cel puŃin
64Mbyte.

Fiecare MMU (fig. 5.3.) constă dintr-un ATC (Adress Translation Cache)
care asigură translatarea de la adresa logică la adresa fizică. După recepŃionarea
adresei logice de MMU de la unitatea de întregi, se caută în ATC dacă adresa
logică corespunde intrărilor ATC. Dacă corespunde (eveniment corect) ieşirile
ATC vor conŃine adresa fizică care în funcŃie de biŃii de stare ai accesului la
memoria locală pot fi folosite intern de microprocesor. Adresa fizică este scoasă pe
magistrala externă pentru asigurarea coerenŃei memoriei.
Dacă adresa logică nu corespunde la nici o intrare ATC ("eveniment
incorect"), MMU abandonează accesul curent şi caută în memorie arborele de
translaŃie pentru o translaŃie corectă prin folosirea tabelelor de translaŃie. Dacă
tabelul de translaŃie este parcurs fără erori, MMU memorează translaŃia în ATC şi
furnizează adresa fizică pentru acces şi încearcă o reintrare în accesul original.

Fig. 5.3.

Fiecare MMU conŃine câte două registre de translaŃie transparente


(ITTx, DTTx) pentru date şi instrucŃiuni care permit translatarea directă a
adreselor logice la adrese fizice. Mărimea unui bloc este de 364 Mbyte (64
blocuri), printr-un registru mască putându-se mări dimensiunea blocurilor.

MEMORIA LOCALĂ. Pentru un răspuns rapid la cererile de citire/scriere


multiprocesoarele avansate conŃin două memorii locale una de date şi una de
instrucŃiuni accesibile cu adrese fizice. Memoria locală creşte performanŃele
microprocesorului prin mărirea vitezei de lucru şi creşte disponibilităŃile
magistralei externe deoarece se reduc accesele externe, permiŃând folosirea unui
număr mai mare de procesoare de control al magistralei.
Pentru a creşte viteza de lucru se folosesc două memorii locale
independente, de date şi de instrucŃiuni, cu accesare simultană (fig. 5.4.).
Memoria locală este conceput ca o memorie asociativă de 4 căi de seturi
asociate, având 64 de seturi de 4 linii a 16 byte (patru cuvinte pe16 byte D0, D1, D2,
D3), respectiv 64 ⋅ 16 ⋅ 4 = 4kbyte . Fiecare linie a memoriei locale conŃine o
etichetă TAG, stări de informaŃii şi patru “long-word” de date (D0-D3). Liniile se
încarcă de la memorie prin accese “flux de date” prin care se citesc succesiv patru
cuvinte de 16 byte. Dacă memoria nu acceptă modul "flux de date", poate răspunde
prin activarea intrării TBI forŃând procesorul să completeze patru secvenŃe de
acces pe 16 byte.
ADRESA LOGICA
LINIA 3
31 12 9 3 LINIA 2
S CADRU PAGINA DECALAJ PAGINA
LINIA 1
LINIA 0
SELECTARE
SET FIZIC
BIT PA9-PA4
SUPERVIZOR
16 BITI
LA31-LA12
SET 0 TAG STARI D0 D1 D2 D3

PA11-PA10 SET 1

...

...

...
...
...
...
...
SET 63 TAG STARI D0 D1 D2 D3
DATE SAU
MEMORIE ADRESA INSTRUCTIUNE
FIZICA MUX
LOCALA PA31-PA12
TRANSLATARE TRANSLATATA
SELECTIE
ADRESE PA31-PA10
3 LINIE
HIT 3
2 HIT 2 HIT
1 HIT 1 OR LOGIC
COMPARATOR 0 HIT 0

Fig. 5.4.

FuncŃionare. Cererile de instrucŃiuni şi date de la unitatea de întregi sunt


servite independent prin MMU corespunzător, care translatează adresele logice la
adresele fizice. ATC furnizează biŃii PA12 - PA31, respectiv linii de blocuri ale
memoriei locale de 4 kbyte. Prin PA10 - PA11 se alege comparatorul iar prin PA4 -
PA9 unul din cele 64 de seturi din tabelele memoriei locale fiecare set conŃinând 4
cuvinte a 16 byte.
Dacă adresa translatată corespunde la una din intrările memoriei locale,
accesul este "corect" şi unitatea de memorie alimentează data la unitatea de întregi
(pentru citire) sau împrospătează memoria locală pentru scriere. Dacă accesul este
“incorect” la memoria locală, atunci MMU execută un acces extern pe magistrala
prin care se citeşte sau se scrie data cerută.
Dacă toate liniile memoriei locale sunt valide şi printr-un acces "incorect"
este necesară înscrierea unei noi linii se invalidează, printr-un algoritm pseudo-
aleator, o linie în memoria locală, iar una din linii se încarcă într-un registru repetor
şi se reînscriu în memoria globală.

MEMORIA LOCALĂ DE TRANSLATARE ADRESE (ATC).


Principalele caracteristici ale memoriei locale de translatare adrese - ATC (Address
Translation Cache) sunt :
• este o memorie asociativă cu patru căi de seturi asociative;
• asigură translatarea rapidă a adreselor logice la adrese fizice;
• operaŃia se desfăşoară simultan cu indexarea memoriei locale de date şi
instrucŃiuni;
Schema bloc este prezentată în fig. 5.5. FuncŃionarea este următoarea:
primii 16 biŃi (17 biŃi pentru pagina de 4k byte) se compară cu biŃi TAG din cele
16 seturi a patru căi (64 intrări ATC) ale memoriei ATC; dacă biŃii de adrese logice
corespund cu TAG-ul intrărilor ATC, accesul este "corect", la ieşire apărând
adresele fizice şi biŃii de stare ai liniei; dacă pagina este de 4 kbyte, atunci bitul 12
este folosit la setul de 16 intrări ATC, iar bitul 16 este folosit la comparator; când
ATC memorează o nouă linie, atunci el înlocuieşte o linie invalidă; dacă toate
liniile sunt valide, foloseşte un algoritm pseudo-aleator de înlocuire a liniilor din
ATC; fiecare linie din ATC conŃine o etichetă TAG de adresă logică, o adresă
fizică şi biŃi de stare corespunzător descriptorilor de pagină din care a provenit
linia;

Fig. 5.5.

Modurile de acces a memoriei locale sunt: scriere, copiere înapoi, invalide,


accese speciale.

ADRESARE MEMORIE VIRTUALĂ PAGINATĂ LA CERERE.


Sistemele avansate multi- microprocesor suportă adresare memorie
virtuală, respectiv memoria este adresată prin adrese logice:
• paginată - memoria fizică este împarŃită în blocuri de dimensiune egală iar
memoria virtuală în pagini egale, prin sistemul de protecŃie asigurându-se
corespondenŃa;
• paginată la cerere - programul nu specifică în avans aria necesară de
memorie, fiind necesară numai accesarea adresei logice.
Caracteristicile principale ale adresării memoriei virtuale sunt:
• adrese fizice şi logice de 32 byte (46 byte);
• arbore de translaŃie separat în mod "utilizator" şi "supervizor";
• tabele de translaŃie pe trei nivele;
• informaŃii de stare conŃinute în descriptorii de tabele;
• selectarea modului de acces la memoria locală pe paginile de bază;
• descriptori de tabele pe trei nivele: valid, indirect, invalid;
• protejarea blocurilor de memorie la scriere şi "supervizor";
• adresare directă prin patru registre de translaŃie transparente;
• adresare în paralel a datelor şi instrucŃiunilor.

GENERARE TABELĂ DE TRANSLAłII. Dacă o linie de intrare nu


are adresa logică în ATC procesorul caută în tabelul de translaŃii din memorie şi
obŃine adresa fizică precum şi biŃii de stare pentru pagina corespunzătoare.

Fig. 5.6.

Când o căutare a arborelui de translaŃie este necesară, CPU suspendă


execuŃia instrucŃiunii, caută tabele de translaŃii, memorează adresele fizice în ATC
şi se reâncarcă accesul. Accesele de căutare a tabelei de translaŃii se realizează într-
un singur ciclu de citire-modificare-scriere numit RMW (read-modify-write).
Modul de generare a tabelei de translaŃie este prezentat în fig. 5.6., unde
registrele URP (User Root Pointer) şi SRP (Supervision Root Pointer) conŃin
adresele de bază ale primului tabel (23 biŃi).
Tabelele se indexează prin înscrierea de adrese logice din câmpurile TTA,
TTB, TIC. La trecerea de la un nivel la altul biŃii superiori sunt folosiŃi prin
concatenare cu câmpurile de adrese logice TTA, TTB, TIC, iar biŃii inferiori ca
descriptori de tabel sau pagină.
Prin generarea arborelui de translaŃie se obŃine atât adresa fizică pe 32 biŃi,
din care 19 biŃi se memorează ca intrare ATC, cât şi descriptorii de tabel şi pagina
din care se formează biŃii necesari intrărilor ATC.
Descriptorii de tabele pot fi invalizi sau valizi; dacă descriptorul de tabel
are biŃi UTD pentru codificare "invalid" atunci nivelul următor nu este rezident în
memorie. În acest caz se crează o intrare ATC cu bitul R (rezident) şters.
Descriptorii de pagină conŃin mai multe informaŃii şi sunt de trei tipuri:
valizi, invalizi şi indirecŃi. Descriptorul de pagină valid şi invalid au acelaşi înŃeles
ca descriptorii de tabel.
Descriptorii indirecŃi de pagină permit folosirea în comun de mai multe
task-uri sau de mai multe procesoare ale aceleiaşi pagini, cu aceiaşi descriptori de
pagină. În acest caz adresele logice apar diferite pentru task-uri.

STRUCTURA ARBORELUI DE TRANSLAłIE. MMU conŃine două


registre de indicator rădăcina (root pointer registers) SRP, URP care memorează
punctul de pornire al structurii arborelui de translaŃie aflat în memorie.
Structura arborelui de translaŃie are trei nivele: primul şi al doilea este
format din tabele de pointere iar al treilea din tabele de pagini (fig. 5.7.) cu
următoarele caracteristici:
• tabelele de pointer de nivel A (TIA) definesc 128 descriptori de tabele şi
formează blocuri de 32 Mbyte;
• tabelele de pointer de nivel B (TIB) definesc 128 (7 biti) descriptori de
tabele şi folosesc blocuri de 256 kbyte;
• la nivele A si B tabelele pot fi rezidente sau invalide, iar la nivel C (pagină)
descriptorii pot fi rezidenŃi, invalizi sau indirecŃi;
• un descriptor indirect are în biŃii 2 - 31 adresa fizică a descriptorului de
pagină; acesta permite task-lui să împartă pagini de memorie, sau ca pagini
de adrese fizice să apară la adrese logice diferite.
Descriptorii de tabele conŃin informaŃiile de mai jos:
ADRESA TABEL INFERIOR | x | x | x | U | W | UDT |
unde:
UDT - invalid, valid;
W - protecŃie la scriere;
U - pagina utilizată (accesată).
Descriptorii de pagină pentru descriptor de pagină de 8 k conŃi informaŃiile:
ADRESA FIZICA | U1 | U0 | S | C | M | U | W | PDT |
unde:
PDT - invalid, valid, indirect;
CM - acces memorie locală;
U1 – U0 - user atributer;
S - protecŃie supervizor;
M - pagină modificată;
G - global.

Fig. 5.7.

Un descriptor invalid poate fi folosit la identificarea unei pagini sau a


unei ramuri a arborelui care a fost memorată pe un dispozitiv extern fară a fi
rezident în memorie, sau o porŃiune a arborelui de translaŃie care va fi definită.
MODURILE DE ADRESARE LA MEMORIA LOCALĂ. O altă
posibilitate oferită de procesoarele avansate pentru funcŃionare în sistem
multiprocesor este prelucrarea datelor diferit în funcŃie de interacŃiunea cu memoria
locală, asigurând coerenŃa accesării memoriei locale.
Modurile de adresare la memoria locală sunt specificate în descriprorii de
pagină prin biŃi CM şi sunt conŃinuŃi în intrările ATC sau în regimul de
translaŃie (TTx) corespunzator adresei logice de acces.
În funcŃie de accesurile efectuate, liniile memoriei locale pot fi în una din
următoarele trei stări: "invalid", "valid" sau "indirectă".
În funcŃie de modul de adresare la memoria locală liniile de intrare ATC
sau TTx pot fi: locale de înscriere (WT), locale de recopiere (CB), nelocale, accese
speciale.
Accesele locale de înscriere (WT) - permit folosirea datelor globale în
memorie de la mai multe procesoare, cu împrospătarea memoriei locale în vederea
coerenŃei datelor dintre memoria locală şi globală:
• Access WT de citire "incorect" - determină o cerere de magistrală externă
pentru împrospătarea memoriei locale cu date din memoria globală. Are loc
înlocuirea unei linii în memoria locală dacă toate intrările în ATC sunt
valide.
• Acces WT de scriere "incorecte" - se înscrie în memorie fără a afecta
memoria locală.
• Acces WT de citire "corecte" - data este alimentată prin memoria locală.
Nu are loc acces extern.
• Acces WT de scriere "corecte" - data este înscrisă atât în memoria locală
cât şi în memoria globală.
Accesele locale de recopiere (CB) - permit reducerea numărului acceselor
la magistrala externă prin folosirea structurii de date locale sau stivă. Intrările sunt
definite în CB ca "indirecte" ceea ce înseamnă că ar putea să nu fie coerente cu
memoria globală pentru un timp. Dacă are loc o reamplasare a liniilor de intrare la
memoria locală datorită unui acces "incorect" şi linia înlocuită este "indirectă", se
memorează linia într-un registru repertor, are loc încărcarea noii linii în memoria
locală, se răspunde la acces iar dacă accesul este fără eroare, se copiază înapoi în
memoria locală (copy back) linia "indirectă".
Datele "indirecte" se pot folosi în "preluarea" de magistrale, respectiv
datele pot fi citite sau înscrise de un alt procesor tip master prin inhibarea memoriei
globale de la răspuns. Aceasta permite folosirea datelor din memoria locală
partajate de alte procesoare.
• Accese de citire "corecte/ incorecte" - sunt prelucrate la fel ca în WT.
• Accese de scriere "incorecte" în CB determină procesul să efectueze un
transfer pe magistrala externă la linia corespunzătoare din memoria globală
şi să transfere linia în memoria locală păstrând biŃii "indirecŃi" la fiecare
cuvânt de 16 byte ( long-word).
• Accese de scriere "corecte" în CB, nu efectuează transfer pe magistrala
externă, împrospătând memoria locală şi înscriind toŃi biŃii drept biŃi
"indirecŃi".
Accesele de preluare a magistralei.
Accesele de citire / scriere "incorecte" nu afectează memoria locală.
Accesele de citire "corecte" - dacă linia este "indirectă" inhibă memoria globală de
la răspuns şi furnizează datele din memoria locală la alt procesor coordonator.
Accese de scriere "corecte" - dacă linia este "indirectă", inhibă memoria de la
răspuns şi înscrie datele în memoria locală.
Două instrucŃiuni CINV şi CPUSH permit invalidarea selectivă a liniilor
ATC. Mai mult, CPUSH încarcă un registru repetor cu date indirecte care pot fi
folosite prin preluare de magistrală la alt procesor sau încărcate în memorie.
Analizând tranziŃiile între cele trei stări ale liniilor memoriei locale
se obŃine diagrama de tranziŃii din fig. 5.8. din care se constată:
• în starea "indirectă" se poate ajunge numai prin CB;
• din starea "indirectă" se poate ajunge în "VALID" (congruenŃa memorie
locală-memorie globală) printr-o reactualizare a liniilor memoriei locale
("citire incorectă").
• în starea “invalid” se ajunge în general printr-un acces de preluare a
magistralei care specifică această situaŃie;
• accesele nespecificate ( scriere corectă/incorectă, citire de la CPU
incorectă) nu schimbă starea memoriei locale.

Fig. 5.8.

Accese care nu sunt de la memoria locală. Accesele care nu conŃin date


de memorie, ca adrese la dispozitive I/O sau anumite structuri de date protejate în
sistem multiprocesor (semafoare, cozi,etc.) pot fi proiectate ca "nelocale". În acest
caz accesele de scriere/citire ocolesc (by-pass) memoria locală şi nu alocă citiri sau
scrieri în memoria locală.
5.1.3. Principalele mecanisme de mărire a performanŃelor
sistemelor multiprocesor

Principalele mecanisme care măresc performanŃele multiprocesor sunt:


generare întreruperi, preluarea magistralei, arbitrarea magistralei, modurile de
adresare la memoria locală, descriptori de pagină indirecŃi [17,25,34,86,119].

MAGISTRALA DE ÎNTRERUPERI. Protocolul generării unei


întreruperi pentru sistemele multiprocesor avansate constă în aceea că dacă un
dispozitiv periferic cere o întrerupere, el va activa una din liniile IPL0-IPL 2
(Intrerupt Priority Level), iar dacă nivelul de prioritate este mai mare ca cel al
măştii de întreruperi, procesul recunoaşte întreruperea.
În general procesoarele avansate au un registru SR care conŃine o mască de
priorităŃi (biŃii I0, I1, I2). Valoarea din masca de priorităŃi este prioritatea cea mai
mare la care procesorul ignoră cererea de întrerupere. Când are loc o cerere de
întrerupere în curs, procesorul activează IPEND(INTERRUPT PENDING) şi
generează pe TM0 - TM2 (Transfer Modifier) nivelul întreruperii recunoscute
(adresele A0 – A1 sunt Ńinute la nivel ridicat).
O cerere de întrerupere este validată dacă se menŃine 2 perioade de ceas.
Prin IPEND se semnalizează unui dispozitiv exterior că o cerere de prioritate mai
mare este în curs. La procesarea unei întreruperi (fig. 5.9.), procesorul face o copie
internă a registrului SR, înscrie modul superior şi înscrie nivelul măştii de
întrerupere la nivelul întreruperii curente.
Procesorul încearcă să obŃină un număr de vector, care conŃine locaŃia de
start a rutinei de scriere, de la dispozitivul care a făcut întreruperea, folosind un
ciclu de recunoaştere.

Fig. 5.9.

Ciclul de recunoaştere/întrerupere este ciclul de citire, în care semnalele


TM0-TM2 indică nivelul cererii recunoscute, iar dispozitivul care răspunde plasează
pe magistrala de date vectorul număr (8 biŃi), ciclul terminându-se cu semnalul TA
activat de dispozitiv. Dacă dispozitivul nu poate alimenta numărul vector pe
magistrala de date, el va cere "AUTOVECTOR" prin activarea "AVEC" şi ciclul se
termină cu generarea TA. În acest caz procesorul ignoră magistrala de date şi
generează intern vectorul de întrerupere, care este suma între nivelul întreruperii şi
24 (18 H). Se obŃin 7 autovectori. Dacă dispozitivul nu răspunde la ciclul de
recunoaştere cu numărul vector sau "AVEC" şi logica externă generează o eroare
(semnalTEA), procesorul generează automat un vector fals cu numărul 24
(spurious înterrupt). Procesorul, cu numărul vector obŃinut, salvează rădăcina
vectorului, valoarea PC (POINT COUNTER) şi face o copie a registrului SR pe
stiva de memorie la nivelul superior. PC reprezintă adresa de reîntoarcere din
rutină.
În ultimul pas se execută rutina de întrerupere. Numărul de vector se adună
la valoarea memorată în VBR (Vector Base Register) pentru a obŃine adresa de
memorie a vectorului de întrerupere, după care procesorul încarcă PC cu vectorul
de întrerupere şi execută rutina de întrerupere. Se asigură un număr de 256 vectori
"excepŃionali" din care 64 se folosesc pentru “procesări excepŃionale” controlate de
microprocesor iar restul de utilizator.

PRELUAREA MAGISTRALEI. OperaŃia de preluare a magistralei


constă în capacitatea procesorului de a monitoriza transferurile de magistrale ale
unui alt procesor prioritar din sistemul multimicroprocesor şi de a interveni în
acces când este necesar.
Preluarea începe când magistrala este alocată altui procesor coordonator
(ALTMASTER) şi semnalul TS este activ (fig 5.10.) Procesorul memorează adresa
generată şi tipul datelor şi testează semnalele SC0 - SC1 pentru a vedea dacă este
necesară operaŃia de preluare. Dacă preluarea este permisă (SC0 – SC1 în S1, S2)
procesorul inhibă memoria de la răspuns (M1 activ) controlând memoria locală
dacă accesul este corect şi data din memorie modificată. În caz afirmativ,
procesorul continuă să inhibe memoria şi răspunde ca un procesor subordonat la
procesorul care a preluat magistrala.
Fig. 5.10. prezintă un exemplu de preluare magistrală, din diagrama de
timp observându-se:
• magistrala a fost cerută şi alocată la alt procesor coordonator (AM) care
activează semnalul BB (magistrala ocupată); de asemenea, generează SC0 -
SC1 şi renunŃă la magistrala pentru a putea citi datele (AMBG negat) din
memoria locală a procesorului. Procesorul raspunde ca procesor subordonat
respectiv BB activat de AM şi BG alocat procesorului;
• dacă adresa generată de AM corespunde la o linie a memoriei locale (acces
corect) şi linia conŃine date modificate, MI este în continuare activ iar
procesorul generează date pentru AM;
• procesorul generează o linie de 4 cuvinte - 32 biŃi la AM şi activează TA
pentru recunoaşterea transferului;
• după terminarea transferului de date, vechiul procesor poate să preia
controlul magistralei ca procesor coordonator.
Fig. 5.10.

Mecanismul de preluare al magistralei permite transferuri normale sau


blocuri de 16 byte (MOV 16). Memoria în sistem multimaster trebuie să accepte
semnalul MI pentru a aştepta apariŃiile preluării înainte de a răspunde.
În sistem multiprocesor cu mai mulŃi procesori prioritari cu memorii
locale, fiecare procesor coordonator trebuie să acceseze datele partajate, pentru a
permite monitorizarea transferurilor de alte procesoare subordonate.

MAGISTRALA DE ARBITRARE. Protocolul magistralei de arbitrare


pentru sistemele multiprocesor avansate presupune că un arbitru extern controlează
magistrala, iar celelalte procesoare sunt subordonate în cererea posesiei
magistralei.
Mecamismul de arbitrare pentru majoritatea multiprocesoarelor foloseşte
următoarele semnale de arbitrarea a magistralei (fig. 5.11.): BR (Bus Request), BG
( Bus Grant), BB (Bus Busy), în care:
• BR - activ, procesorul cere magistrala ca răspuns la cererile interne sau
întreruperi, şi continuă să fie activat până este alocată magistrala (BG -
activ); BR este activ la primul ciclu de magistrală (TS - activ);
• BG - activ, comandat de arbitrul extern, procesorul monitorizează BB
pentru a ocupa magistrala, după ce procesorul coordonator curent renunŃă
la ea, (BB - negat);
• BB - activ, pentru a indica că procesorul a ocupat magistrala şi efectuează
transferul.

Fig. 5.11.

Protocolul de arbitrare permite ca arbitrarea să se facă pe parcursul


ultimului transfer al procesorului coordonator curent, suprapus cu activitatea de
magistrală şi necesită un singur ceas mort pentru a transfera posesia magistralei.
Dacă BG este negat de arbitru în timpul unui ciclu de magistrală, procesorul
renunŃă la magistrală numai după ce termină ciclul de magistrală curent. Ciclurile
de tip "secvenŃa de date - inhibare" se consideră a fi un singur ciclu.
Dacă după un transfer de date apare o eroare de magistrală (TEA activ),
magistrala se va aloca altui procesor coordonator. Dacă, între timp, printr-o
operaŃie "retry" (TEA - negat), procesorul devine disponibil, el permite controlul
magistralei în cazul în care procesorul rămâne în continuare cel mai prioritar.

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