Arhitectura Calculatoarelor
1
Evaluare 1. Într e bări 1
Explicați notiunea – compilator. compilator.
Program special care asigură traducerea în calculatorul electronic a unui program scris într -un nivel înalt în limbaj de asamblare sau în limbaj de mașină. 2
interpretor. Explicați notiunea – interpretor. Translatează fiecare instrucţiune în limbajul de nivel înalt într -o succesiune de instrucţiuni maşină,
acestea fiind executate imediat. În acest caz nu se generează un program executabil. Viteza de execuţie este însă redusă, deoarece fiecare instrucţiune trebuie interpretată chiar dacă ea este executată în mod repetat. 3
Explicați notiunea – mașină – mașină virtuală. Masina virtuala este un calculator imaginar, dotat cu un set de instructiuni ce constituie limbajul (codul) virtual. Este un program de software cu functii speciale, care permite instalarea de sisteme de operare multiple sau de programe diverse fara a mai fi necesara instalarea lor propriu-zisa pe hard-disk.
4
Explicați diferența între compilare și interpretare.
– Compilare: – Compilare: codul sursă este translatat de un program denumit compilator în cod maşină, după care poate fi executat
– Interpretare: – Interpretare: un program este executat direct din cod sursă prin intermediul unui interpretor 5
Destinația registrelor generali (AX, BX, CX, DX, SP, BP, SI, DI).
Regiştrii de uz general sunt implicaţi impli caţi în operarea majorităţii instrucţiunilor, drept operanzi sursă sau destinaţie pentru calcule, copieri de date, pointeri la locaţii de memorie sau cu rol de contorizare. 6
Destinația registrelor segment. Denumirile registrelor de segment sunt: CS-registru de segment de cod (code segment), DS-registru de segment de date (data segment), SS- registru de segment de stivă (stack segment), ES -registru de
segment de date suplimentar (extra segment). regiştrilor de segment sunt în strânsă legătură cu noţiunea de segmentare a memoriei. segmentare a memoriei presupune utilizarea unor adrese de memorie formate din două părţi. Prima parte reprezintă adresa segmentului iar cea de -a doua porţiune reprezintă adresa de deplasament, deplasament, sau sau offset -ul. 7
8
Destinația registrului Flags.
Registrul indicatorilor de stare (FLAGS) pe 16 biţi conţine informaţii legate de starea microprocesorului precum şi de rezultatele ultimilor instrucţiuni executate. Un indicator de stare (flag) este în sine o locaţie de memorie de 1 bit ce indică starea curentă a microprocesorului şi modalitatea sa de operare. Un indicator se spune că “este setat” dacă are valoarea 1 şi “nu este setat” în caz contrar. Destinația registrului IP.
Registrul pointer de instrucţiuni (IP – Instruction Pointer) este folosit, întotdeauna, pentru a stoca adresa următoarei instrucţiuni ce va fi executată de către microprocesor. Pe măsură ce o i nstrucţiune este executată, pointerul de instrucţiune este incrementat şi se va referi la următoarea adresă de memorie.
9
Ce indică perechea de registre (CS:IP)?
va indica totdeauna adresa următoarei instrucţiuni care se va executa
10 Ce indică perechea de registre (SS:SP)?
indică totdeauna adresa vârfului stivei
Arhitectura Calculatoarelor
2
11 Formarea adresei fizice.
Formarea adresei fizice (pe 20 de biţi) este realizată automat (prin hardware) de către o componentă a procesorului. Concret, adresa fizică se obţine prin deplasarea adresei de segment cu 4 biţi la stânga şi prin adunarea deplasamentului. Pentru specificarea unei adrese complete (de 32 de biţi), se foloseşte notaţia (segment:offset) sau (registru_segment:offset). De exemplu, putem specifica o adresă prin (18A3:5B27) sau prin (DS:5B27).
12 Scrieți un program ce definește date pe 16, 64 și 80 biți. INCLUDE Irvine32.inc .data variabila1 WORD 0 variabila2 QWORD 0 variabila3 TBYTE 8 DUP(0) .code main PROC exit main ENDP END main 13 Scrieți un program ce definește date pe 8, 32 biți și în format BCD (împachetat, despachetat). INCLUDE Irvine32.inc .data v1 BYTE 02h,03h ; 32 in format BCD neimpachet at v2 BYTE 32h, 12h ; 1232 in format BCD impachetat v3 dword 0123h,0222h ;222123 in format BCD neimpachetat v4 dword 1235h,4567h ; 45671235 in format BCD impachetat .code main PROC exit main ENDP END main 14 Numiți componentele funcționale ale unui calculato r (hardware). 1. Un i tatea centr ala de pr el ucr are: - prelucreaza datele din memoria interna - controlul activităţii întregului calculator 2. M E M O R I A - din punctul de vedere al sistemului pe care îl definim, o secvenţă de locaţii pentru stocarea informaţiei. Dispozitivele de intrare/ ieșire (I/O) sunt constituite din circuitele prin care se
realizează legătura între calculator şi lumea exterioară. 3. M agistr ala de control - permite circulaţia, bidirecţională, microprocesor, în calitatea sa de Unitate centrală.
a semnalelor de comandă şi control de la/la
Arhitectura Calculatoarelor
3
15 Explicați noțiunea – magistrală.- un set de conexiuni fizice între blocuri prin care informaţia care
circulă are o semnificaţie prestabilită. 16 Caracterizați circuitele RFID.
Această tehnologie presupune stocarea informaţiilor nu prin codurile de bare, ci prin intermediul unor cipuri electronice integrate, de ex. în etichete, ecusoane, ambalaje de marfă, corpurile animalelor etc. Aceste informaţii, ce reprezintă un cod unic din 128 biți, pot fi citite de la distanţă de câţiva metri prin unde radio. Dimensiunea acestor circuite este mai mică de 0,5mm, costul fiind de câțiva cenți. Circuitele nu utilizează surse de alimentare și pot stoca informația mult timp.
17 Caracterizați grupa de calculatoare – servere. Un server este o un calculator, care operează continuu
în rețeaua sa și așteaptă solicitări din partea altor calculatoare din rețea, pentru a asigura accesul la toată paleta de forme de conectare și servicii. Serverele deservesc resurse hardware care sunt partajate și pot uneori fi comandate de către calculatoarele-client, cum ar fi imprimante (atunci serverul se numește print server) sau sisteme de fișiere (atunci el se numește file server). Această partajare permite un acces și o securitate mai bune. Cu toate că serverele pot fi construite, din comoditate, din componente obișnuite de calculatoare, este necesar ca, pentru operații rapide și de mare amploare, serverele să folosească configurații hardware optimizate pentru aceste cerințe. Cu toate că serverele oferă mult spațiu pe disc, pentru mărirea siguranței în funcționare sunt folosite hard -discuri de capacitate redusă, numeroase, interconectate în mod special.
18 Caracterizați grupa de calculatoare – mainframe. Calculatoarele mainframe sunt calculatoare ce pot exploata volume imense de date şi pot suporta lucrul a mii de utilizatori simultan. Un calculator mainframe se distinge mai ales prin capacitatea de
stocare şi memoria internă. El poate rula ani întregi fără întrerupere, Unele calculatoare pot rula mai multe sisteme de operare simultan, operând astfel ca o mulţime de “maşini virtuale”. Preţul unui astfel de calculator este de ordinul sutelor de mii de dolari. Este solicitat de companiile care
vehiculează şi prelucrează un volum foarte mare de informaţie 19 Clasificarea lui Flynn. Arhitectura SISD.
Instrucţiunile sunt executate secvenţial, însă pot exista suprapuneri între acestea dacă este implementat conceptul de bandă de asamblare (pipeline) – majoritatea sistemelor SISD actuale utilizează conceptul de bandă de asamblare. Calculatoarele SISD pot avea mai multe unităţi funcţionale (ex: coprocesor matematic, procesor grafic, procesor de intrare/ieşire, etc.), însă acestea sunt văzute ca o singură unitate de execuţie. 20 Clasificarea lui Flynn. Arhitectura SIMD.
Această categorie de arhitecturi cuprinde sistemele de calcul compuse din mai multe unităţi de execuţie identice aflate sub comanda unei singure unităţi de control. Unitatea de control transmite acelaşi flux de instrucţiuni, simultan, tuturor unităţilor de execuţie. Toate unităţile de execuţie execută simultan aceeaşi instrucţiune asupra datelor din memoria proprie (există sisteme ce au şi o memorie partajată pentru comunicaţii). Unitatea de control trebuie să permită tuturor elementelor de procesare să-şi termine instrucţiunea curentă înainte de iniţierea unei noi instrucţiuni, astfel că execuţia instrucţiunilor trebuie sincronizată între toate unităţile de execuţie. Ca şi ordin de mărime numărul procesoarelor implicate într -o structură SIMD este de câtev a mii. 21 Clasificarea lui Flynn. Arhitectura MISD.
Arhitecturile MISD au mai multe elemente de procesare, fiecare executând un set diferit de instrucţiuni asupra unui singur flux de date. Acest lucru este realizabil în două moduri: acelaşi element din fluxul de date este prelucrat de toate procesoarele, fiecare executând propriile operaţii asupra respectivei date; un element din fluxul de date este prelucrat de primul procesor, rezultatul obţinut este pasat mai departe celui de -al doilea procesor ş.a.m.d., formându -se astfel o macro- bandă de asamblare.
Arhitectura Calculatoarelor
4
22 Clasificarea lui Flynn. Arhitectura MIMD.
Majoritatea sistemelor multiprocesor se pot încadra în această categorie. Un sistem de calcul MIMD are mai multe elemente de procesare interconectate, fiecare avân d propria unitate de control. Procesoarele lucrează fiecare asupra propriilor date executând asupra lor propriile instrucţiuni. Sistemele MIMD pot avea şi memorie partajată. Operaţiile executate de fiecare procesor sunt independente intre ele, deci modul lor de operare este asincron.
23 Explicați diferența între microprocesoarele CISC și RISC. Procesoarele RISC au inaugurat un nou set de principii arhitecturale: setul deinstructiuni sa fie simplu, instructiunile trebuie sa ruleze la cea mai mare viteza posibila, notiunea de pipeline este mai importanta decit dimensiunea setului de instructiuni, tehnologia compilatorului este un element critic intr-un proceso RISC. Punctele relevante ale arhitecturii RISC reprezinta si diferentele dintre procesoarele CISC. Ca principiu, arhitectura RISC are mai multi registri generali, in timp ce CISC are mai multi speciali.
24 Definiți noţiunile ”arhitectura scalară, superscalară”.
Microprocesoarele ce includ o Bandă de asamblare se numesc microprocesoare cu scalara, cele ce includ două şi mai multe - microprocesoare cu arhitectura suprascalară.
arhitectura
25 Explicați funcționarea unei benzi de asamblare cu 5 segmente.
Ciclul maşină „fetch”(Citirea instrucţiunii din cache sau din memoria internă);Decodificarea instrucţiunii – decodifică în microinstrucțiuni;Generarea adresei pentru localizarea operanzilor în memorie;Prelucrarea instrucţiunii în UAL;Înscrierea rezultatului ( unde va fi înscris rezultatul depinde de formatul instucţiunii).Toate aceste segmente sunt executate în paralel. Din unitatea „prefetch” instrucţiunea se transferă în unitatea pentru decodificarea instrucţiuni, şi unitatea „prefetch” este liberă şi poate citi următoarea instrucţiune. Deci, în interiorul microprocesorului se află 5 instrucţiuni în diferite segmente de execuţie. Aceste segmente formează o Bandă de asamblare (pipeline). Segmentul 1 extrage instructi unea din memorie si o plaseaza într -un registru tampon. Segmentul 2 o decodifica, determinându -i tipul si operanzii. Segmentul 3 localizeaza si extrage operanzii, fie din registri, fie din memorie. Segmentul 4 executa instructiunea, de obicei
rulând operanzii prin calea de date, iar segmentul 5 scrie rezultatul în registri. 26 Explicați funcționarea unei benzi de asamblare duale cu 5 segmente.
Pentru a putea lucra în paralel, cele 2 instructiuni nu trebuie să -și dispute resursele (de exemplu registrele) și nici una nu trebuie să depindă de rezultatul celeilalte. Fie compilatorul trebuie să garanteze că ipoteza anterioara e respectată, fie conflictele sunt detectate și eliminate pe parcursul execuției, cu ajutorul unui hardware suplimentar. 27 Explicați funcționarea unei benzi de asamblare cu 5 unități funcționale.
Arhitectura Calculatoarelor
5
Procesorul Pentium II are o structură asemănătoare (sunt și diferențe) cu cea din fig. 3.10. Unitațile funcționale UAL din segmentul S4 pot executa instrucțiuni timp de un ciclu de ceas, iar cele c are accesează memoria sau care lucrează în virgulă mobilă (mai lente), au nevoie de mai mult timp decât un ciclu de ceas pentru a -și executa funcția. După cum se poate observa, pot exista mai multe unități funcționale în segmentul S4.
1.
Assembler Instrucţiunea mov word ptr [bx],0: a) încarcă registrul bx cu valoarea 0 b) încarcă în locaţia adresată de bx valoarea 0 pe un octet c) încarcă în locaţia adresată de bx valoarea 0 pe un cuvânt
2. Implementaţi Instrucţiunea xchg bx,cx folosind stiva push bx push cx pop bx pop cx 3. Implementaţi Instrucţiunea xchg bx,cx folosind instrucţiuni de tip mov mov ax,cx mov cx,bx mov bx,ax 4. Instrucţiunea in al,71h: a) încarcă în registrul al valoarea 71h b) citeşte în registrul al un octet de la portul 71h c) scrie valoarea din registrul al la portul 71h 5. Instrucţiunea out 71h,al a) încarcă în registrul al valoarea 71h b) citeşte în registrul al un octet de la portul 71h c) scrie valoarea din registrul al la portul 71h 6. Instrucţiunea adc dest, sursă realizează operaţia: a) sursă<--dest+ sursă b) dest<--dest+ sur să c) dest<--dest+ sursă+carry d) sursă<--dest+ sursă+carry 7. Instrucţiunea add dest, sursă realizează operaţia: a) sursă<--dest+ sursă b) dest<--dest+ sursă c) sursă<--dest+ sursă+carry d) dest<--dest+ sursă+carry
Arhitectura Calculatoarelor
6
8. Instrucţiunea sub dest, sursă realizează operaţia: a) sursă<--dest+ sursă b) dest<--dest- sursă c) dest<--dest+ sursă d) sursă<--dest- sursă 9. Instrucţiunea sbb dest, sursă realizează operaţia: a) sursă<--dest- sursă b) dest<--dest- sursă c) dest<--dest- sursă+carry d) dest<--dest- sursă-carry 10. Instrucţiunea cmp dest, sursă realizează operaţia: a) compara operanzii sursă si destinaţie prin aplicarea funcției logice "si" b) compara operanzii sursă si destinaţie prin aplicarea funcției logice "sau" c) compara operanzii sursă si destinaţie prin scădere. 11. Care este sintaxa corectă a Instrucţiunii dec? a) dec dest, sursă b) dec dest c) dec 12. Care este sintaxa corectă a Instrucţiunii not? a) not dest, sursă b) not dest c) not 13. Dacă în registrul AL este stocată valoarea 11001001, după Instrucţiunea shl al,3 se va obţine:
a) 00011001 b) 01001000 c) 00100100 d)11001000 14. Dacă în registrul AL este stocată valoarea 11001001, după Instrucţiunea shr al,3 se va obţine:
a) 00011001 b) 01001000 c) 00010010 d)11001000 15. Dacă în registrul AL este stocată valoarea 11001001, după Instrucţiunea rol al,3 se va obține:
a) 01001010 b) 01001110 c) 00111001 d)11001000 16. Dacă în registrul AL este stocată valoarea 11001001, după Instrucţiunea ror al,3 se va obține:
a) 01001010 b) 01001110 c) 00111001 d)11001000 17. Dacă în val este stocată valoarea 0F000h, iar în registrul AX - 0F000h , după Instrucţiunea shld val,ax,4 în val se va obține:
Arhitectura Calculatoarelor
a) b) c) d)
7
0FF00h 00FFh 0F00Fh 000Fh
18. Dacă în val este stocată valoarea 0F000h, iar în registrul AX - 0F000h, după Instrucţiunea shrd val,ax,4 în val se va obține:
a) b) c) d)
0FF00h 00FFh 0F00h 0F0Fh
19. Care este starea indicatorului carry după Instrucţiunea rcl al,2 dacă în AL se afla 00100101?
CF de la etapa precedenta a) 0 b) 1 20. Care este starea indicatorului carry după Instrucţiunea rcr al,2 dacă în AL se afla 00100101?
CF de la etapa precedenta a) 0 b) 1 21. Dacă în AL avem 11011110, în urma instrucțiunii and al,0fh se obține valoarea: a) 11011111
Arhitectura Calculatoarelor
8
b) 00001110 c) 11010001 22. Dacă în AL avem 11011110, în urma instrucțiunii or al,0fh se obține valoarea: a) 11011111 b) 00001110 c) 11010000 23. Dacă în AL avem 11011110, în urma instrucțiunii test al,0fh se obține valoarea: a) 11011111 b) 00001110 c) 11010001 d) 11011110 24. La instrucţiunile pentru manipularea şirurilor: a) şirul sursă este pointat de ESI b) şirul destinaţie e pointat de ESI c) şirul sursă e pointat de EDI d) şirul destinaţie e pointat de EDI 25. Se poate seta sensul de parcurgerea şirurilor de caracte re? a) Da b) nu c) uneori
26. Contorul pentru i nstrucţiunile cu şiruri se află în registrul: a) AX b) BX c) CX d) DX 27. Ce operaţie realizează Instrucţiunea MOVSB? MOVSB(Move(copy)bytes) Transfer pe 8 biţi, din zona de memorie indicată de ESI, în zona de memorie indicată de re gistrul EDI. După transferul primului byte dacă flag -ul DF=0, se petrece autoincrementarea ESI←ESI+1; EDI←EDI+1 (decrementare pentru DF=1). 28. Ce operaţie realizează Instrucţiunea CMPSB? CMPSB(compare bytes) Comparare pe 8 biţi, din zona de memorie indicată de ESI, cu zona de memorie indicată de registrul EDI. După compararea primului byte dacă flag -ul DF=0, se petrece autoincrementarea ESI←ESI+1; EDI←EDI+1 (decrementare pentru DF=1).
29. Ce operaţie realizează Instrucţiunea SCASB? SCASB(SCAS- scan a string) Instrucţiunile compară valoarea din AL/AX/EAX cu byte, din zona Instrucţiunile sunt utile la căutarea unui singur element într -un şir.
de memorie indicată de EDI.
30. Ce operaţie realizează Instrucţiunea LODSB? LODSB(LODS- load accumulator from string) Instr ucţiunile încarcă valoarea din byte, din memorie idicat de ESI, în AL/AX/EAX respectiv. Instrucţiunile sunt utile la căutarea unui singur element într -un şir. 31. Ce operaţie realizează Instrucţiunea STOSB? STOSB(STOS-store string data)
Arhitectura Calculatoarelor
9
Instrucţiunile încarcă valoarea din AL/AX/EAX , în memorie cu offset -ul indicat de EDI. Incrementarea se petrece conform flag-ului DF (DF=0- incrementarea, DF=1- decrementarea). 32. Instrucţiunea jmp et realizează: a) un salt necondiţionat la et b) un salt condiţionat la et c) apelul rutinei et 33. Ce operaţii se realizează la execuţia instrucțiunii CALL? Apel de procedura. Poate apărea sub una din formele: CALL nume_proc CALL NEAR PTR nume_proc CALL FAR PTR nume_proc Tipul apelului poate fi dedus din tipul procedurii (primul caz) sau specifi cat
explicit prin NEAR şi FAR. Tipul apelului trebuie să coincidă cu tipul procedurii şi cu tipul instructiunii RETURN din interiorul procedurii.
34. Ce operaţii se realizează la execuţia instrucțiunii RET?
Forma generală:
RET [n] unde n este o constantă întreagă opțională.
Dacă instrucțiunea RET este de tip NEAR semnificația sa este: [IP] SS: [[SP] + 1: [SP]] [SP] [SP] + 2 [[SP] [SP] + n]
adică se reface (IP) prin copierea conținutului vârfului stivei şi incrementarea cu 2 a lui (SP). Dacă în instrucțiunea RET apare şi constanta n atunci această constantă se adună la (SP), adică se descarcă stiva.
35. Instrucţiunea JZ et realizează saltul la et dacă: a) flagul Zero este 1 b) flagul Zero este 0 c) flagul Sign este 1 d) flagul Sign este 0 36. Instrucţiunea JNZ et realizează saltul la et dacă: a) flagul Zero este 1 b) flagul Zero este 0 c) flagul Sign este 1 d) flagul Sign este 0
37. Instrucţiunea JC et realizează saltul la et dacă: a) flagul Zero este 1 b) flagul Zero este 0 c) flagul Carry este 1 d) flagul Carry este 0
Arhitectura Calculatoarelor
10
38. Instrucţiunea JNC et realizează saltul la et dacă: a) flagul Zero este 1 b) flagul Zero este 0 c) flagul Carry este 1 d) flagul Carry este 0 39. Instrucţiunea JCXZ et realizează saltul la et dacă: a) flagul Zero este 1 b) flagul Zero este 0 c) flagul Carry este 0 d) registrul CX este 0 40. Instrucţiunea corespunzătoare etichetei et din LOOP et se află: a) înaintea instrucțiunii LOOP b) după Instrucţiunea LOOP c) nu se afla în programul respectiv 41. Instrucţiunea STC: a) activează sistemul de întreruperi b) dezactivează sistemul de întreruperi c) pune carry pe 0 d) pune carry pe 1
42. Instrucţiunea CLC: a) activează sistemul de întreruperi b) dezactivează sistemul de întreruperi c) pune carry pe 0 d) pune carry pe 1 43. Complementul față de doi se utilizează pentru: a) reprezentarea numerelor naturale b) reprezentarea numerelor întregi negative c) reprezentarea numerelor reale negative 44. Cum sunt reprezentate în memorie caracterele? In categoria datelor alfanumerice intra caracterele alfabetice, caracterele numerice, semnele de
punctuație şi caracterele de control. Codificarea acestora se face conform codului standard ASCII (American Standard Code for
Information Interchange). Codul ASCII standard este un cod pe 7 biți (128 combinații distincte). Ca atare un caracter ASCII se reprezintă pe un octet in care bitul cel mai semnificativ este zero.Domeniul de valori este de la 0 la 127 (in hexazecimal de la 00h la 07fh). Exemplu: Caracterul 'a' are codul 61h, 'A' are codul 41h, '5' are codul 35h, '+' are codul 02Bh.
Șirurile de caractere sunt reprezentate prin succesiuni de octeți ce cuprind codurile caracterelor res pective. De exemplu șirul de caractere “Aa4+b” se reprezintă pe 5 octeți ce vor conține 41 61 34 2B 42h. 45. Cum sunt reprezentate numerele reale: a) în mărime şi semn b) în format BCD c) în format virgula mobila