1 / 79

Arhitektura i organizacija računara

Arhitektura i organizacija računara. Skup instrukcija procesora. Računar na nivou pet funkcionalnih blokova. Centralni procesor. Staza podataka. Ulazni uređaji. Memorija. Upravljačka jedinica. Izlazni uređaji. Osnovni princip rada. Formulisao John von Neuman:

olive
Télécharger la présentation

Arhitektura i organizacija računara

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arhitektura i organizacija računara Skup instrukcija procesora

  2. Računar na nivou pet funkcionalnih blokova Centralni procesor Staza podataka Ulazni uređaji Memorija Upravljačka jedinica Izlazni uređaji

  3. Osnovni princip rada Formulisao John von Neuman: Pribaviti instrukciju iz memorije Izvršiti instrukciju Zapamtiti rezultat u memoriju Instruction Fetch Instruction Decode Operand Fetch Execute Result Store Next Instruction

  4. Projektovanje skupa naredbi: • Najvažnija projektantsa pitanja a) repertoar operacija • koje su to operacije,koliko ih ima i koje su složenosti b) tipovi podataka – • sa kojim tipovima podataka se operiše c) format naredbi – • odredjuje dužinu naredbi, broj adresa, obim različitih polja ... d) registri – • odredjujebrojCPU- ovihregistarakojimasemože pristupati od strane naredbi i način njihovog korišćenja e) adresiranje – • odredjujenačin ili načine rada pomoću kojih se specificira adresa operanda.

  5. Registri CPUa • Registri CPUa se nalaze na vrhu memorijske hijerarhije računara • Registri su memorijski elementi velike brzine • Koriste se za privremeno pamćenje podataka i kontrolnih informacija • Korisnički vidljivi registri • Na raspolaganju su aplikativnim (asembleskim) programerima i koriste se da bi se smanjio broj obraćanja memoriji. Instrukcijama programa može se vršiti direktan uticaj na sadržaje ovih registara. • Upravljački (control) i statusni registri • koriste se za upravljanje radom CPUa • većina nije (lako) vidljiva korisnicima

  6. Korisnički vidljivi registri • Registri opšte namene (General purpose registers) • mogu se koristiti za privremeno pamćenje celobrojnih operanada instrukcije, za adresiranje, za prenos parametara pri pozivu procedura. • broj registara: 8 do 64 • Registri za podatke u pokretnom zarezu (floating point – FP) • Veličina registra od 32 do 64 bita • Broj registara 4 do 32 • Adresni registri • Sadrže samo adresne informacije • Bazni registri, segmentni registri, indeksni registri, stack pointeri

  7. Korisnički vidljivi registri (nast.) • Registar koda uslova (Condition Code Register -CCR) • Vidljivi korisniku, ali im sadržaj postavlja CPU kao rezultat izvršenja neke operacije. • Sadrži više bitova (engl. flags) sa određenim značenjem (zovu se još i statusni bitovi) • statusni bitovi se mogu testirati nakon izvršenja ALU operacije • Primeri flegova • S (Sign) - indikator znaka, postavlja se ako je rezultat negativan, • Z (Zero) - indikator nule, postavlja se ako je rezultat nula, • C (Carry) - indikator prenosa, postavlja se ako se javi prenos, • V (oVerflow) - indikator prekoračenja, postavlja se ako rezultat prekorači kapacitet formata, • P (Parity Flag) - indikator parnosti, postavlja se ako je rezultat paran, • Idr.

  8. Primer registra koda uslova

  9. Kontrolni i statusni registri • Ovi registri se koriste u toku pribavljanja, dekodiranja i izvršenja instrukcija. • Mnogi od njih nisu vidljivi korisniku ili programeru • neki su vidljivi, ali se ne mogu (lako) modifikovati • Tipični registri • Programski brojač (PC - Program counter) • ukazuje na adresu sledeće instrukcije koja treba da se izvrši next • Instrukcioni registar (IR - Instruction register) • pamti instrukciju koja se trenutno izvršava • Registar memorijskle adrese (MAR - Memory address register) • Pamti adresu podatka koji treba da se pribavi iz (ili upiše u) memorije • Prihvatni registar podaraka iz memorije (MDR - Memory data register) • Podatak koji se čita iz memorije se prvo smešta u MDR a zatim u neki od registara opšte namene • Podatak koji treba da se upiše u mem oriju prvo se upisuje u MDR a odatle u memoriju • Program status word(s) • nadskup registra koda uslova (CCR - condition code register) • Koristi se za maskiranje prekida, za supervizorski režim rada, itd. • Sadrži statusne informacije

  10. Šta instrukcija treba da sadrži? Informaciju o tome koja operacija treba da se obavi (opcode) Adresni deo sadrži operande ili reference (adrese) operanada Adresni deo opcode • Operandi instrukcije se mogu naći u: • samaj instrukciji, • nekom od registara procesora, i • memoriji procesora • Koliko polja treba da bude u adresnom delu ako su u pitanju binarne operacije? • Ove informacije mogu biti eksplicitno ili implicitno sadržane u instrukciji: • Dva izvorna operanda • Lokacija rezultata • Adresa sledeće instrukcije koja treba da se obavi • To znači da adresni deo treba da sadrži 4 polja • 4-adresni računari se ne sreću u praksi • Informacija o sledećoj instrukciji se pamti u posebnom registru CPUa – u programskom brojaču (PC)

  11. Podela procesora u odnosu na broj adresa u adresnom delu instrukcije • Tro – adresni • U adresnom delu instrukcije se nalaze refernce dva izvorna operanda i odredišnog operanda • Svi operandi su eksplicitno navedeni i nalaze se ili u registrima opšte namene ili u memoriji • Npr. ADD R1, R2, R3 (dejstvo R1[R2]+[R3]) • ADD A,B,C (dejstvo Mem[A] Mem[B]+Mem[C] ) • Dvo – adresni • Jedan operand ima dvostruku ulogu: jednovremeno predstavlja oznaku izvornog i odredišnog operanda • Npr. ADD R1, R2 (dejstvo R1 [R1]+[R2]) • Jedno – adresni (akumulatorske arhitekture) • Jedan operand i rezultat se nalaze u posebnom registru CPUa koji se zove akumulator (ACC) • Npr. LOAD A (dejstvo ACC  Mem[A]) • ADD B (ACC  ACC +Mem[B]) • Nula – adresni (stek arhitekture) • Operandi se implicitno nalaze na vrhu stack-a • Npr. PUSH A (instrukcija push smešta podatak na vrh stacka) • PUSH B • ADD • POP C (instrukcija pop čita podatak sa vrha stack-a)

  12. Formati 3- , 2-, 1- i 0- adresnih instrukcija

  13. Akumulatorske i stack arhitekture su deo istorije • Dvo- i tro-adresne arhitekture se zovu registarske • Dve klase: • Memoriji se može pristupati preko bilo kojih instrukccija • tvz. Registarsko-memorijske arhitekture • Jedine instrukcije koje mogu direktno pristupati memoriji su LOAD i STORE, a sve ostale instrukcije su tipa registar-u-registar • Zovu se load-store ili registarsko-registarske arhitekture • Od 1980-ih sve arhitekture su load-store, jer je pristup registrima CPUa mnogo brži od pristupa memoriji

  14. Primer C=A+B

  15. Adresni režimi (načini adresiranja) • Govore o tome kako se određuje lokacija operanda • Ove informacije se nalaze u adresnom delu instrukcije • Informacija na osnovu koje se pronalazi podatak u memoriji zove se efektivna adresa (EA) • U odnosu na način određivanja efektivne adrese može se razlikovati više adresnih režima rada procesora • Broj adresnih režima se razlikuje od procesora do procesora.

  16. Najčešće korišćeni adresni režimi rada • Neposredno adresiranje (Immediate) • Direktno • Indirektno (memorijsko) • Registarsko • Registarsko indirektno • Sa pomerajem • bazno • indeksno • PC-relativno • Sa autoinkrementiranjem/dekrementiranjem

  17. Neposredno adresiranje • Operand je deo instrukcije, tj. nalazi se u samoj instrukciji u adresnom polju • Npr. ADD #5 • dodaje 5 sadržaju akumulatora • 5 je vrednost operanda • Nema nikakvog obraćanja memoriji da bi se pribavio podatak • Brz pristup operandu Instrukcija Opcode Operand

  18. Direktno adresiranje • adresno polje sadrži adresu operanda • Adresa na osnovu koje se pronalazi podatak u memoriji zove se efektivna adresa (EA) • EA = A (adresno polje instrukcije) • npr. ADD A • dodaj sadržaj memorijske lokacije sa adrese A akumulatoru • Jedno obraćanje memoriji je potrebno da bi se pribavio operand • nisu potrebna nikakva dodatna izračunavanja da bi se odredila efektivna adresa. • Ograničena je veličina adresnog prostora brojem bitova koji se koristi u adresnom polju • npr ako se koristi 5 bitova za adresu operanda, onda se može adresirati samo 25 =32 memorijskih lokacija

  19. Direktno adresiranje Instrukcija Opcode Adresa A Memorija Operand

  20. Indirektno adresiranje • Adresni deo instrukcije ukazuje na adresu memorijske lokacije u kojoj se nalazi adresa operanda • EA = (A) • npr. ADD (A) • zagrade uvek označavaju indirekciju • Veliki adresni prostor • 2ngde je n = širini reči (npr 32 bita) • Potrebna su dva pristupa memoriji da bi se pribavio operand • Sporije nego direktno adresiranje

  21. Indirektno adresiranje Instrukcija Opcode Adresa A Memorija Pointer na operand Operand

  22. Registarsko adresiranje • Operand se nalazi u registru čije ime se nalazi u adresnom delu instrukcije • EA = R • Na raspolaganju je relativno mali broj registara opšte namene • Potreban je mali broj bitova u adresnom polju • kraće instrukcije, brže izvršenje • Brži pristup operandima (nema obraćanja memoriji) • s obzirom na ograničeni broj registara opšte namene, kompajler igra važnu ulogu u efikasnom korišćenju registara (ili programer ako programira na asembleru)

  23. Registarsko adresiranje Instrukcija adresa (oznaka) registra R Opcode Registri Operand

  24. Registarsko indirektno • u adresnom delu instrukcije je ime registra u kome se nalazi efektivna adresa operanda • EA = (R) • Veliki adresni prostor (2n) • manje obraćanja memoriji nego kod memorijski indirektnog adresiranja

  25. Registarsko indirektno Instrukcija Opcode adresa (oznaka) registra R Memorija Registri Operand Pointer na Operand

  26. Adresiranje sa pomerajem (displacement) • EA = A + (R) • Adresno polje sadrži dve vrednosti • A = bazna vrednost • R = registar koji sadrži pomeraj (displacement) u odnosu na baznu vrednost • ili obrnuto (u registru R je bazna vrednost, a A je pomeraj) • Tri varijante: • bazno adresiranje • indeksno • PC – relativno adresiranje • R = Program counter, PC • EA = A + (PC) • najčešće se koristi kod naredbi grananja

  27. Adresiranje sa pomerajem (displacement) Instrukcija Adresa A Opcode Registar R Memorija Registri + Pointer na Operand Operand

  28. Bazno adresiranje • A sadrži pomeraj (displacement) • R sadrži pointer na bazni registar • R može biti implicitno ili eksplicitno naveden (u zavisnosti od konkretne arhitekture) • omogućava relokativnost programa • Indeksno adresiranje • A = baza (najčešće startna adresa polja) • R = registar koji sadrži pomeraj (displacement) • EA = A + (R)

  29. Autoinkrementno/autodekrementno • Izvedeno iz registarsko indirektnog adresiranja • Vrši se dodavanje (oduzimanje) inkrementa posle (pre) obraćanja memoriji

  30. Primer: neposredno (immediate) prog. brojac reg. opšte namene indeksni reg. U adresnom delu se nalazi vrednost operanda, tj nema pribavljanja Vrednost operanda : 500 (polje Mode definiše adresni režim)

  31. Primer: direktno adresiranje prog. brojac reg. opšte namene indeksni reg. U adresnom polju je adresa memorijske lokacije na kojoj se nalazi operand. Pribavljena vrednost sa adrese EA=500 je 800

  32. Primer: memorijsko indirektno prog. brojac reg. opšte namene indeksni reg. U adresnom delu instrukcije se nalazi adresa memorijske lokacije u kojoj je adresa operanda. Operand se pribavlja sa adrese EA=800, pribavljena vrenost je 300

  33. Primer: registarsko adresiranje R1 prog. brojac reg. opšte namene indeksni reg. U adresnom delu je oznaka registra u kome se nalazi operand Pribavljena vrednost je 400

  34. Primer: registarsko indirektno R1 prog. brojac reg. opšte namene indeksni reg. U adresnom delu je oznaka registra u kome je zapamćena memorijska adresa operanda Operand se pribavlja sa adrese EA=400 Pribavljena vrednost je 700

  35. Primer: indeksno adresiranje prog. brojac reg. opšte namene indeksni reg. U adresnom polju je startna adresa (najčešće polja)a u indeksnom registru XR pomeraj u odnosu na startnu adresu Operand se pribavlja sa adrese EA=100+500=600 Pribavljena vrednost je 900

  36. Primer: PC relativno prog. brojac reg. opšte namene indeksni reg. Vrednost PC nakon pribavljanja tekuće instrukcije se povećava za 2, pa je PC=PC+2=202 U adresnom delu instrukcije je pomeraj u koji se dodaje vrednosti PC Operand se pribavlja sa adrese EA=202+500=702 Pribavljena vrednost je 325

  37. Primer: sa autodekrementiranjem R1 prog. brojac reg. opšte namene indeksni reg. Vrednost registra R1 se dekrementira (smanji) za 1 , a zatim se sa te adrese pribavlja operand EA=400-1=399 Pribavljena vrednost je 450

  38. Tipovi operanada • Tip operanda nam govori o tome koje operacije se mogu izvršavati nad operandom, opseg vrednosti, i način predstavljanaja u memoriji računara • Tip podatka je kodiran samom instrukcijom • Tj. na osnovu koda operacije se zna kog tipa su operandi • Najčešći tipovi operanada • Celobrojni (intrger) • Celobrojni podaci se najčešće predstavljaju u dvojičnom komplementu, mogu biti veličine polu-reči (16 bitova) ili reči (32 bita) • Realni predstavljeni u pokretnom zarezu (floating point - FP) jednostruke tačnosti (single precision) • Za FP podatke se najčešće korist standard IEEE 754 (podaci se predstavljaju u obliku nirmalizovane mantise i eksponenta • 32 bita – jedna reč • Realni predstavljeni u pokretnom zarezu (floating point - FP) dvostruke tačnosti (double precision) • 64 bita – dve reči • Karakteri • najčešće kodurani ASCII kodom dužine 8 bitova (byte)

  39. Tipovi naredbi • Skup naredbi jedne arhitekture treba da bude kompletan, tj. da omogući korisniku da definiše bilo koji zadatak • Pet grupa naredbi (instrukcija) • aritmetičke (sabiranje, oduzimanje, množenje, deljenje za celobrojne i FP podatke) • logičke (i, ili, ne, pomeranje, ...) • instrukcije za prenos podataka unutar sistema (load, store, move, push, pop) • U/I instrukcije (prenos podataka između računara i U/I) • upravljačke instrukcije (utiču na redosled izvršenja instrukcija u programu: instrukcije uslovnog grananja, bezuslovnog skoka, poziva procedura, povratka iz procedura) • Postoje dva prilaza u projektovanju skupa instrukcija (ISA) • arhitekture sa malim brojem instrukcija • arhitekture sa velikim brojem instrukcija

  40. Aritmetičke naredbe • najveći broj mašina poseduje osnovne aritmetičke operacije kao što su: sabiranje, oduzimanje, množenje i deljenje. • Često u ovu grupu spadaju i jedno-operandske naredbe: a) apsolutna vrednost b) negacija c) inkrementiranje d) dekrementiranje. • Aritmetičke naredbe obavlja ALU ili specijalno projektovani hardver, dobija se rezultat i postavljaju se markeri (u CCR registru) čije se stanje u daljem programskom toku može testirati

  41. Primeri aritmetičkih naredbi • ADD Ri,Rj,Rk RiRj+Rk , • SUB Ri,Rj,Rk RiRj-Rk , • MUL Ri,Rj,Rk RiRj×Rk , • DIV Ri,Rj,Rk RiRj/Rk , • COMP Ri,Rj Razlika Ri-Rj utiče na stanja indikatora Z i S, • INC Ri RiRi+d , • NEG Ri Ridvoični komplement(Ri),

  42. Logičke naredbe • Naredbe pomoću kojih se manipuliše sa individualnim bitovima podataka, a zasnivaju se na Boolean-operacijama. • Osnovne operacije iz ove grupe su NOT, OR, XOR, i AND. • Tu spadaju još i naredbe za logičko i aritmetičko pomeranje ulevo i udesno, kao i rotiranje ulevo i udesno

  43. Primeri logičkih instrukcija • Neka su Rj i Rk osmobitni registri sa sadržajima • (Rj)=01001110 i • (Rk)=11010101 • AND Ri,Rj,Rk RiRj  Rk , (Ri)=01000100 • OR Ri,Rj,Rk RiRj  Rk , (Ri)=11011111 • XOR Ri,Rj,Rk RiRj  Rk , (Ri)=10011011 • NOT Ri Ri invertovan_svaki_bit(Ri) • pre instrukcije (Ri)= 10011110 • posle instrukcije NOT Ri (Ri)= 01100001

  44. Primeri instrukcija pomeranja • SHL Ri,Rj,bp RiRj « bp (SHift Left – SHL) • Primer SHL Ri,Rj,5 • (Rj)=1010 1111 0101 0011 • (Ri)= 1110 1010 0110 0000, • SHR Ri,Rj,bp RiRj » p (SHift Right – SHR) • Primer SHR Ri,Rj,3 • (Rj)=1010 1111 0101 0011 • (Ri)= 0001 0101 1110 1010, • SHRA Ri,Rj,bp RiRj » bp (aritmetičko pomeranje) • Primer SHRA Ri,Rj,3 • (Rj)=1010 1111 0101 0011 • (Ri)= 1111 0101 1110 1010, • ROL Ri,Rj,bp RiRj «! bp (ciklično pomeranje) • Primer ROL Ri,Rj,5 • (Rj)=1010 1111 0101 0011 • (Ri)= 1110 1010 0111 0101

  45. Primeri instrukcija za prenos podataka • LW R1, 30(R2) dejstvo R1 Mem[30 +[R2]] • MOVE R1, R2 R1 R2 Naredbe za rad sa stekom PUSH : POP: dejstvo:SP  SP-1, dejstvoDReg S[SP], S[SP]  DReg. SP  SP+1.

  46. Tipične instrukcije za prenos podataka

  47. Instrukcije za upravljanje tokom programa na tipičnom RISC procesoru i njihova dejstva

  48. Pozivanje procedura Pri pozivu i izvršenju procedure treba obaviti sledeće aktivnosti: • Smestiti parametre na mesto gde im procedura može pristupiti, • za prenos parametara (argumenata) i vraćanje rezultata, kao i za čuvanje adrese povratka u pozivajući program, koriste se registri procesora • U MIPS arhitekturi za prenos parametara (argumenata) koriste se registri R4-R7 • Preneti upravljanje proceduri, (naredbe JAL i JALR sa prethodnog slajda) • Zatražiti memorijske resurse potrebne proceduri, • Izvršiti proceduru, • Smestiti rezultate procedure na mesto gde im pozivajući program može pristupiti, • U MIPS arhitekturi za vraćanje rezultata u pozivajući program koriste se registri R2-R3 • Vratiti upravljanje na pozivnom programu • adresa povratka iz procedure pamti se u registru određenom arhitekturom (u MIPS arhitekuri to je registar R31: povratak iz procedure u pozivajući program vrši se instrukcijom JR R31).

More Related