Documente Academic
Documente Profesional
Documente Cultură
(a)
S1
S2
S3
S4
S5
1 2 3 4 6 5 7 8 9 timp
(b)
Fig. 1.3. O bandă de asamblare de 5 segmente (a)
Starea fiecărui segment în funcţie de timp (b)
2.2.1. Magistrale sincrone
Costul magistralelor asincrone este mai ridicat, ceea ce influenţează alegerea lor.
Magistralele asincrone sunt mai greu de depanat şi interfeţele pentru magistrale asincrone
mai greu de realizat
2.11.2. Conceptul magistralei locale
Pentru a creşte rata de transfer la operaţiile de actualizare a memoriei video,
adaptorul video se poate conecta la magistrala locală a procesorului în locul
magistralei de extensie. Adaptorul video este reproiectat pentru conectarea directă la
magistrala locală şi minimizarea sau eliminarea stărilor de aşteptare inserate în
ciclurile de magistrală atunci când procesorul face acces la memoria video şi la
registrele de I/E ale adaptorului. În plus, adaptorul video conţine şi un procesor local
care poate executa comenzi grafice de nivel înalt.
Există trei metode de bază pentru conectarea unui dispozitiv la magistrala locală a
procesorului.
Conectarea directă
- Dispozitivul va trebui reproiectat pentru a fi utilizat cu procesoarele din
generaţiile viitoare (dacă structura magistralei sau protocolul vor fi modificate).
- Nu se poate conecta mai mult de un dispozitiv din cauza încărcării suplimentare a
magistralei locale.
- În cazul modernizării ulterioare a sistemului prin instalarea unui procesor de tip
"overdrive", sistemul poate funcţiona incorect datorită încărcării suplimentare a
magistralei locale.
- Procesorul nu poate efectua transferuri cu un dispozitiv, în timp ce dispozitivul
de pe magistrala locală execută un transfer cu un alt dispozitiv.
USB este proiectată pentru dispozitive de viteză redusă cum ar fi tastaturi, mouse-
uri, camere de luat vederi, scanere, telefoane digitale şi altele.
Sistemul USB poate fi văzut ca un set de canale de biţi, din punct de vedere logic,
de la hub-ul central la dispozitivele de I/E. Fiecare dispozitiv împarte canalul său în cel
mult 16 subcanale, pentru diferite tipuri de date (de exemplu, audio şi video). Pe fiecare
canal sau subcanal, datele merg de la hub-ul central la dispozitiv sau invers. Nu există
trafic între două dispozitive de I/E.
USB este conceput pentru a suporta patru tipuri de cadre: control, izocron, transfer
cantităţi mari de date (bulk) şi întrerupere.
3.3. Registrele generale şi stiva
Registrele generale cuprind:
1) registre de utilizare generală. AX, BX, CX, DX adresabile direct pe 16 biţi,
fiecare putând servi ca destinaţie a datelor (acumulator);
AX - este utilizat pentru operaţiile de înmulţire şi împărţire, pe 16 biţi, respectiv
pentru operaţii de intrare/ieşire pe 16 biţi;
AL - este utilizat, pentru aceleaşi operaţii ca şi AX dar pe 8 biţi; în plus se utilizează
pentru operaţii BCO (binary coded decimal) şi conversii de cod;
AH - este folosit pentru înmulţire şi împărţire pe 8 biţi;
BX - se utilizează în conversii de cod şi ca registru de bază la adresare;
CX - are rol de contor de ciclu în cazul structurilor repetitive cu incrementare, utilizat
fiind şi în operaţiile cu şiruri;
DX - este utilizat ca registru de adresare indirectă la porturile de intrare/ieşire,
precum şi la operaţiile de înmulţire/împărţire.
2) registrul indicator de stivă de 16 biţi, conţinând adresa vărfului stivei (SP- Stack
Pointer); este utilizat implicit în toate operaţiile cu stiva.
3) registrul indicator de bază de 16 biţi, conţine adresa de baza (BP - Base
Pointer).
3.4. Registrul indicatorilor de condiţie
12
10
RAM
10
adresă
+ fizică pagină
210 selectată
+
210 adresă fizică a
pag. selectare
+
Adresă adresă de bază a
fizică de tabelelor de pagini
bază
Din cele spuse este esenţial ca atunci când se fac predicţii acestea să fie corecte.
Acest lucru permite UCP să lucreze la viteză maximă permisă de banda de asamblare
O posibilă abordare este ca UCP să menţină o tabelă a istoriei într-un hardware
special, în care plasează ramificaţiile condiţionate pe măsură ce acestea apar, astfel încât
acestea pot fi căutate dacă apar din nou. (desen)
Utilizând această schemă, predicţia constă în a spune pur şi simplu că ramificaţia
va urma aceeaşi cale ca ultima dată. Dacă predicţia este greşită, bitul din tabela istoriei
este schimbat.
Dacă apare o coincidenţă între adresa memorată şi adresa ramificaţiei, bitul de
predicţie este utilizat pentru predicţia ramificaţiei. Dacă este prezentă eticheta greşită sau
intrarea este invalidă, se produce ceea ce se numeşteo ratare, la fel ca la memoria
intermediară. În acest caz, poate fi utilizată regula ramificaţiei înainte/înapoi.
Programele pentru calculatoare se pot sparge în blocuri de bază (basic blocks), fiecare
bloc de bază constând într-o secvenţă liniară de cod cu un punct de intrare în capătul de
sus şi o ieşire în capătul de jos. Un bloc de bază nu conţine nici un fel de structuri de
control (de exemplu instrucţiuni if sau while) astfel încât translatarea sa în limbaj maşină
nu conţine nici un fel de ramificaţii. Blocurile de bază sunt conectate prin instrucţiuni de
control.
Utilizarea acestei tehnici necesită sprijin din partea compilatorului şi a hardware-ului,
precum şi anumite extensii arhitecturale. În majoritatea cazurilor, reordonarea
instrucţiunilor peste graniţele blocurilor de bază este mai presus de capacitatea hardware-
ului, deci compilatorul trebuie să mute instrucţiunile explicit.
Execuţia speculativă introduce anumite probleme interesante:
Prima ar fi că, este esenţial ca în nici una din instrucţiunile speculative să nu existe
rezultate irevocabile, pentru că s-ar putea constata mai târziu că n-ar fi trebuit executate.
Există însă şi o altă problemă introdusă de codul speculativ, care nu se poate
rezolva prin redenumirea registrelor.
O posibilă soluţie ce se găseşte într-o serie de maşini moderne este să se dispună de o
instrucţiune specială SPECULATIVE_LOAD care încearcă să citească cuvântul din
memoria intermediară, iar dacă nu este acolo, renunţă. Dacă valoarea este acolo când este
de fapt necesară, se poate folosi, dar dacă nu, hardware-ul trebuie să o aducă imediat.
evensum = 0;
evensum = 0; oddsum = 0;
oddsum = 0; i = 0;
i = 0;
i >=limit
while (i < while (i<limit)
limit){
k=i*i*i k=i*i*i
if ((i/2)*2==0) if ((i/2)*2)==0)
T F
evensum =
evensum+k evensum = evensum+k; oddsum = oddsum +k;
else
oddsum =
oddsum + k
i=i+1 i = i +1;
}
(a) (b)
Fig. 4.9.(a) Un fragment de program.
(b) Graful corespunzător blocului
Unitatea Citire/Decodificare
Aceasta este probabil cea mai simplă dintre noile arhitecturi DRAM. EDRAM-
urile sunt mai rapide şi se obţin din DRAM-urile obţinute prin adăugarea unor blocuri
mici de memorie cache statică pe cip.
Producătorul tehnologiei EDRAM (Ramtron) descrie 4 avantaje:
- legarea cache-ului SRAM cu DRAM-ul pe acelaşi cip presupune folosirea unei
magistrale largi de 16384 biti, ce poate determina rată de umplere de aproximativ
60GB/sec. Timpul de umplere este de aproape 7 ori mai mic la EDRAM faţă de page-
mode DRAM (35 s faţă de 250s);
- modelul Ramtron foloseşte o structură de control ce permite ca memoria să fie
încărcată în timp ce sistemul face transferul în modul burst din cache, fapt ce reduce
timpul de acces;
- scrierea în memoria principală poate fi făcută cu timp de aşteptare 0. Prima operaţie
de scriere necesită 7 s, iar ciclul de scriere pentru o pagină normală este de 15 s.
- proiectarea EDRAM permite accesul la bank-urile de cache separate.
CDRAM (Cached Dram)
Este metoda cea mai răspândită astăzi şi permite ca pe disc să fie înregistrate cu 50% mai
multe informaţii decât cu metoda MFM şi de trei ori mai multe informaţii decât prin metoda FM.
Deosebirea principală faţă de metodele anterioare este aceea că prin metoda RLL nu se
codifică un singur bit, ci un grup de biţi în acelaşi timp. Această metodă reprezintă de fapt o
familie de tehnici de codificare, deoarece există doi parametri care definesc modul de codificare,
şi prin urmare există mai multe variante posibile.
Limita minimă, care indică gradul de apropiere între două tranziţii de flux consecutive,
este necesară din cauza densităţii de înregistrare limitate a suportului magnetic. Limita maximă
este necesară pentru păstrarea sincronizării între unitate şi controler.
Pentru toate cele trei metode de codificare prezentate, distanţa minimă şi cea maximă între
două tranziţii de flux consecutive este aceeaşi. Densitatea tranziţiilor de flux este deci
neschimbată, deşi cantitatea informaţiilor codificate este diferită, ceea ce însemnă că acelaşi disc
poate avea capacităţi diferite în funcţie de metoda de codificare utilizată.
Formatarea fizică
Formatarea fizică (sau de nivel scăzut) reprezintă operaţia propriu-zisă de formatare,
deoarece prin această formatare se creează structurile fizice utilizate pentru înregistrarea
datelor pe disc. În timpul acestei operaţii, se definesc poziţiile pistelor şi se împart pistele
într-un număr de sectoare, fiind înscrise structurile de control corespunzătoare pistelor şi
sectoarelor. Aceste structuri cuprind zonele de prefix şi de sufix ale sectoarelor,
intervalele dintre sectoare şi intervalele de la începutul şi sfârşitul pistelor. Octeţii din
zona de date a fiecărui sector sunt iniţializaţi cu o anumită valoare.
La primele unităţi de discuri, controlerele nu erau incluse în unitate. Formatarea
fizică era executată în aceste cazuri de controlerele de interfaţă. Un anumit controler de
interfaţă utiliza acelaşi număr de sectoare de pistă, indiferent de tipul unităţii conectate la
interfaţă. Controlerele interfeţei ESDI au permis utilizarea unui număr de sectoare pe
pistă cuprins între 32 şi 80. Unităţile de discuri cu interfaţă IDE sau SCSI, care au
controlerul inclus în unitate, pot avea un număr de sectoare pe pistă care depinde de tipul
controlerului inclus.
Unităţile mai noi utilizează structuri interne complexe, ca de exemplu înregistrarea
zonată, pentru a plasa un număr mai mare de sectoare pe pistele exterioare faţă de cele
interioare, şi informaţii servo dedicate sau încorporate pentru controlul mecanismului de
poziţionare. Datorită acestei complexităţi, toate unităţile moderne sunt formatate fizic de
către producător.
Formatarea logică
Distincţia dintre formatarea logică şi cea fizică este importantă. De exemplu pentru
ştergerea completă a unui disc nu este necesară formatarea fizică a acestuia, formatarea
logică fiind suficientă. Prin iniţializarea structurilor de date utilizate de sistemul de
fişiere, deşi datele rămân pe disc, ele nu mai pot fi accesate.
În timpul formatării logice (sau la nivel înalt) sistemul de operare creează structurile
de date necesare sistemului de fişiere utilizat. Aceste structuri de date permit sistemului
de operare gestionarea spaţiului de pe disc, gestionarea fişierelor şi marcarea zonelor
defecte de pe disc astfel încât ele să nu fie utilizate pentru memorarea datelor.
Diferitele sisteme de operare utilizează diferite utilitare de formatare logică, deoarece
ele utilizează diferite sisteme de fişiere. De exemplu, în cazul sistemului de operare DOS,
care utilizează sistemul de fişiere FAT, formatarea logică este executată prin comanda
FORMAT. Această comandă creează pe fiecare unitate logică un sector de boot al
volumului (VBS - Volume Boot Sector), o tabelă de alocare a fişierelor (FAT - File
Allocation Table), şi un director rădăcină.
S1 S2 S3 S4 S5
(a)
S1
S2
S3
S4
S5
1 2 3 4 6 5 7 8 9 timp
(b)
Fig. 1.3. O bandă de asamblare de 5 segmente (a)
Starea fiecărui segment în funcţie de timp (b)
Ciclu de citire
T1 T2 T3
Tact
TAD
ADR Adresa
TDS
DATA
TML TMH
MREQ
TM
TRH
RD
TRL THD
ADR Adresa
MREQ
RD
MSYN
DATA
DATA
SSYN
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-- NT IO PL OF DF IF TF SF ZF -- AF -- PE -- CF
31 22 21 12 11 0
adresă Director adrese
liniară 32 biţi tabele pag. Tabelă Offset
12
10
RAM
10
adresă
+ fizică pagină
210 selectată
+
210 adresă fizică a
pag. selectare
+
Adresă adresă de bază a
fizică de tabelelor de pagini
bază
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
(a) (b) (c)
Figua 4.5. Predictia dinamica (a) Istorie de 1 bit a ramificaţiilor (b). Istorie pe 2 biţi a
ramificaţiilor. (c) corespondenţa între adresa instrucţiunii de ramificaţie şi adresa ţintă.
evensum = 0;
evensum = 0; oddsum = 0;
oddsum = 0; i = 0;
i = 0;
i >=limit
while (i < while (i<limit)
limit){
k=i*i*i k=i*i*i
if ((i/2)*2==0) if ((i/2)*2)==0)
T F
evensum =
evensum+k evensum = evensum+k; oddsum = oddsum +k;
else
oddsum =
oddsum + k
i=i+1 i = i +1;
}
(a) (b)
Fig. 4.9.(a) Un fragment de program.
(b) Graful corespunzător blocului
Memorie intermediară I nivel 1
Secvenţiator de
ID0 0 1 2 microoperaţii