810 likes | 1.23k Views
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:
E N D
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: Pribaviti instrukciju iz memorije Izvršiti instrukciju Zapamtiti rezultat u memoriju Instruction Fetch Instruction Decode Operand Fetch Execute Result Store Next Instruction
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.
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
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
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.
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
Š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)
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)
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
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.
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
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
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
Direktno adresiranje Instrukcija Opcode Adresa A Memorija Operand
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
Indirektno adresiranje Instrukcija Opcode Adresa A Memorija Pointer na operand Operand
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)
Registarsko adresiranje Instrukcija adresa (oznaka) registra R Opcode Registri Operand
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
Registarsko indirektno Instrukcija Opcode adresa (oznaka) registra R Memorija Registri Operand Pointer na Operand
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
Adresiranje sa pomerajem (displacement) Instrukcija Adresa A Opcode Registar R Memorija Registri + Pointer na Operand Operand
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)
Autoinkrementno/autodekrementno • Izvedeno iz registarsko indirektnog adresiranja • Vrši se dodavanje (oduzimanje) inkrementa posle (pre) obraćanja memoriji
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)
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
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
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
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
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
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
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
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)
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
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
Primeri aritmetičkih naredbi • ADD Ri,Rj,Rk RiRj+Rk , • SUB Ri,Rj,Rk RiRj-Rk , • MUL Ri,Rj,Rk RiRj×Rk , • DIV Ri,Rj,Rk RiRj/Rk , • COMP Ri,Rj Razlika Ri-Rj utiče na stanja indikatora Z i S, • INC Ri RiRi+d , • NEG Ri Ridvoični komplement(Ri),
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
Primeri logičkih instrukcija • Neka su Rj i Rk osmobitni registri sa sadržajima • (Rj)=01001110 i • (Rk)=11010101 • AND Ri,Rj,Rk RiRj Rk , (Ri)=01000100 • OR Ri,Rj,Rk RiRj Rk , (Ri)=11011111 • XOR Ri,Rj,Rk RiRj Rk , (Ri)=10011011 • NOT Ri Ri invertovan_svaki_bit(Ri) • pre instrukcije (Ri)= 10011110 • posle instrukcije NOT Ri (Ri)= 01100001
Primeri instrukcija pomeranja • SHL Ri,Rj,bp RiRj « bp (SHift Left – SHL) • Primer SHL Ri,Rj,5 • (Rj)=1010 1111 0101 0011 • (Ri)= 1110 1010 0110 0000, • SHR Ri,Rj,bp RiRj » p (SHift Right – SHR) • Primer SHR Ri,Rj,3 • (Rj)=1010 1111 0101 0011 • (Ri)= 0001 0101 1110 1010, • SHRA Ri,Rj,bp RiRj » bp (aritmetičko pomeranje) • Primer SHRA Ri,Rj,3 • (Rj)=1010 1111 0101 0011 • (Ri)= 1111 0101 1110 1010, • ROL Ri,Rj,bp RiRj «! bp (ciklično pomeranje) • Primer ROL Ri,Rj,5 • (Rj)=1010 1111 0101 0011 • (Ri)= 1110 1010 0111 0101
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.
Instrukcije za upravljanje tokom programa na tipičnom RISC procesoru i njihova dejstva
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).