Karakteristike RISC procesora

Slides:



Advertisements
Similar presentations
Isti upit iskazan na različite načine 2 - Zamena NOT IN (SELECT...) izraza
Advertisements

CS/COE0447 Computer Organization & Assembly Language
FrontPage program za izradu web stranica
Prof: doc.dr. Samir Lemeš student: Samir Hrnjić. System restore je komponenta Microsoftovih operativnih sistema Windows Serveri ne podržavaju opciju System.
MIPS Assembly Language Programming
MIPS Coding Continued.
Isti upit iskazan na različite načine
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
ENGR 3410 – Computer Architecture Mark L. Chang Fall 2006
Arhitektura i organizacija računara
Mikroprocesorski sistemi
Programiranje kroz aplikacije
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
Struktura i princip rada računara
Programi zasnovani na prozorima
Petlje WHILE – WEND.
Arhitektura i organizacija računara
Arhitektura i organizacija računara
MIPS coding.
Struktura i princip rada računara
Java Hello world !.
Algoritamske/programske strukture
Arhitektura računarskog sistema
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
Grafičke kartice.
Arhitektura i organizacija računara
Programiranje - Blokovi naredbi i logički tipovi –
OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU
IP šema adresiranja.
CheckBox RadioButton RadioGroup
Naredbe ciklusa.
IF NAREDBA – naredba grananja
SOFTVERSKI RAZVOJ APLIKACIJE Aplikacija je projektovana tako da je
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
KREIRANJE OBJEKATA.
Uvod u programiranje - matematika – X predavanje
Reference ćelije i opsega
LABORATORIJSKA VEŽBA VEŽBA 4
Elektrotehnički fakultet – Podgorica Operativni sistemi
Elementi programskog jezika PASCAL
Arhitektura računarskog sistema
Arrays and strings -1 (nizovi i znakovni nizovi)
Predstavljanje instrukcija i načini adresiranja
Arhitektura računarskog sistema
Struktura MAC adrese i Ethernet okvira
Naredba Case Višestruko grananje.
Organizacija sistema zasnovana na
32-bitni mikrokontroleri i primena
ECE232: Hardware Organization and Design
M-datoteke.
MessageBox.
Ključne reči,identifikatori, konstante i promenljive
Mikroprocesori i programiranje
Internet FTP usluga.
PROGRAMSKI JEZIK PASCAL
ELEKTRONIČKA POŠTA ( ) OTVARANJE RAČUNA.
Lazarus okruženje TIPOVI UNIT-a
Osnovni simboli jezika Pascal
Do While ... Loop struktura
MagistralA (bus) Milan Milovanovic I6.
Objektno-orijentirano programiranje
5. Baze podataka Postavke MS Accessa.
Skup instrukcija procesora
ARHITEKTURA NA RAZINI LOGIČKIH SKLOPOVA
PRETRAŽIVANJE INTERNETA
MIPS Coding.
MIPS Instruction Set Architecture
MIPS coding.
Dvostruka autentifikacija
Presentation transcript:

Karakteristike RISC procesora format instrukcije fiksna 32-bitna instrukcija taktna frekvenca do 1 GHz polje registara 32-192 registra opšte namene, izdvojeni integer i float-point registri broj instrukcija i tipovi oko 100, najveći broj je registarski zasnovan sa izuzetkom Load/Store adresni način rada ograničen na 3-5, samo Load/Store adresiraju memoriju dizajn keša najveći broj koristi podeljeni keš za instrukcije i podatke CPI, prosečni CPI 1 ciklus za jednostavne operacije, 1.5 ciklus u proseku upravljačka jedinica CPU-a najveći broj koristi direktno upravljanje bez upravljačke memorije tipični reprezentativni procesori Sun Ultra Spars, MIPS R10000, Power PC 604, HP PA-8000, Digital 21264

Arhitektura MIPS procesora MIPS procesori su tipični predstavnici RISC koncepta sa Load/Store arhitekturom. To zapravo znači da se sve operacije izvršavaju nad operandima koji se nalaze u registrima na čipu, a memoriji se pristupa isključivo preko Load (memorija-registar) i Store (registar-memorija) instrukcija. Na taj način značajno se poboljšavaju performanse procesora jer je vreme pristupa memoriji znatno duže od vremena pristupa registrima. Takođe, spoljnu magistralu MIPS procesora čine dve posebne magistrale, jedna za pristup instrukcijama, a druga za pristup podacima. Time se pristup podacima obavlja paralelno sa pribavljanjem instrukcija čime se eliminišu konflikti između instrukcija i podataka koji realno postoje kod sistema zasnovanih na jedinstvenoj magistrali.

Pojednostavljena arhitektura MIPS procesora

Memorija Memorija je bajt adresabilna sa 32-bitnim adresama (od 0x00000000 do 0xffffffff). Koristi se tzv. little- endian način rada, što zapravo znači da se u memoriju na LS bajt poziciju upisuje bajt najmanje težine.

Registri MIPS arhitektura definiše sledeće CPU registre: - 32 registra opšte namene, svi obima 32 bita, ovi registri čine RF polje - par specijalnih registara HI i LO koji se koriste za čuvanje međurezultata kod izvršavanja operacija množenja i deljenja. - programski brojač (PC),koji čuva adresu naredne instrukcije. Kako su sve instrukcije MIPS arhitekture dužine 32 bita PC se nakon izvršenja svake instrukcije uveća za 4. Na sledećoj slici prikazani su registri RF polja i njihova namena.

Formati instrukcija Korišćeni su sledeći simboli: - op- 6-bitni opkod instrukcije - rs- 5-bitni specifikator izvorišnog registra - rd- 5-bitni specifikator odredišnog registra - rt - 5-bitni specifikator cilnog (izvorišnog/ odredišnog) registra ili uslova grananja - imm- 16-bitni neposredni razmeštaj koji se odnosi na grananje ili adresni razmeštaj - ciljna adresa - 26-bitna ciljna adresa grananja/skoka - shamt- 5-bitna informacija koja ukazuje na iznos pomeranja - funct- 6-bitno funkcijsko polje

Načini adresiranja operanada Procesor MIPSxx koristi sledeća četiri adresna načina rada: 1. registarsko adresiranje:operand je u registru 2. bazno adresiranje sa razmeštajem: operand je u memorijskoj lokaciji čija je adresa zbir sadržaja registra i polja "adresa" instrukcije 3. neposredno adresiranje: operand je konstanta i sastavni je deo instrukcije (polje "imm") 4. PC relativno adresiranje: adresa predstavlja zbir PC-a i sadršaja polja "adresa" instrukcije

Skup instrukcija Sve instrukcije MIPS arhitekture imaju fiksni obim od 32 bita i mogu se podeliti na sledeće tri grupe: - regularne instrukcije za manipulisanje integer vrednostima - makro-instrukcije ili tzv. pseudoinstrukcije - regularne instrukcije za manipulisanje float-point vrednostima

Regularne instrukcije za manipulisanje integer vrednostima

Lista pseudo (makro) instrukcija

Primeri pseudo instrukcije MIPSxx arhitekture Kao što je već naglašeno u MIPS arhitekturi postoji određen broj makro ili pseudo instrukcija za manipulisanje integer vrednostima. Svaku od ovih instrukcija asembler radi izvršenja prevodi u skup od jedne ili više osnovnih (regularnih) instrukcija. Na sledujućim slajdovima dat je detaljniji opis nekoliko pseudo instrukcija. Za svaku od njih naveden je naziv (na engleskom), sintaksa, broj reči koje instrukcija zauzima, vreme potrebno za izvršenje instrukcije (broj ciklusa), zatim kratak opis i skup regularnih instrukcija kojima se data pseudo­instrukcija zamenjuje.

Absolute Value: abs Rd, Rs 3/3 U registar Rd smešta se apsolutna vrednost sadržaja registra Rs. addu Rd, $0, Rs bgez Rs, skip sub Rd, $0, Rs skip: Primer: lui $1, 0xffff or $t1, $1, -5 # $t1 = -5 addu $t2, $0, $t1 # abs $t2, $t1 bgez $t1, skip sll $0, $0, 0 sub $t2, $0, $t1

Load Address: la Rd, Label 2/2 Adresa koja odgovara labeli Label se učitava u registar Rd. lui $1, HI(Label) ori Rd, $1, LO(Label) Primer: la $t0, target jr $t0 ... target:

Load Immediate: li Rd, value 2/2 32-bitna vrednost value se učitava u registar Rd. lui $1, HI(value) ori Rd, $1, LO(value) Primer: lui $1, 0xffff # negativne vrednosti or $t1, $1, -354 ori $t2, 45000 # pozitivne vrednosti # do 16 bita (0...65 536) lui $1, 0x1234 # pozitivne vrednosti od or $t3, $1, 0x5678 # 16 od 32 bita

Unaligned Load Word: ulw Rd, n(Rs) 2/2 Reč sa adrese n(Rs) se učitava u registar Rd. Adresa ne mora biti poravnata. lwl Rd, (n+3)(Rs) lwr Rd, n(Rs) Primer: lui $t0, 0x1000 # $t0=0x10000000 lui $1, 0x0123 ori $1, 0x4567 # $1=01234567 sw $1, 0($t0) lui $1, 0x89AB ori $1, 0xCDEF sw $1, 4($t0) # 0 1 2 3 4 5 6 7 # 67 45 23 01 EF CD AB 89 lwl $t1, 6($t0) # ulw $t1, 3($t0) lwr $t1, 3($t0) # $t1 = 0xABCDEF01

Unaligned Store Halfword: ush Rd, n(Rs) 3/3 Niža polureč iz registra Rd se smešta na adresu n(Rs). Adresa ne mora biti poravnata. sb Rd, n(Rs) srl $1, Rd, 8 sb $1, (n+1)(Rs) Primer: lui $t0, 0x1000 # $t0=0x10000000 ori $t1, 0x1234 # $t1=0x00001234 sb $t1, 3($t0) # ush $t1, 3($t0) srl $1, $t1, 8 sb $1, 4($t0) # 0 1 2 3 4 5 6 # 00 00 00 34 12 00 00

Makro naredbe Asemblerski jezik MIPS arhitekture pruža mogućnost korišćenja makro naredbi. Makro naredba predstavlja sekvencu regularnih instrukcija koja se definiše jedanput a može se koristiti više puta u toku izvornog programa. Svaka makro naredba sastoji se od 3 celine: - zaglavlje predstavlja zapravo ime makro naredbe sa zadatim formalnim parametrima (npr. addx2 ($rd, $rs, $rt) - telo čini sekvenca reglarnih instrukcija u koju asembler prevodi makro pri pozivu - direktiva koja se odnosi na kraj definicije Pri pozivu makroa zadaje se ime i aktuelni parametri.

Kod MIPS mikroprocesora makro naredbe imaju sledeću sintaksu: .macro ime naredbe ($parametri) sekvenca instrukcija koje čine makro .end_macro Primer: definisanje makroa: .macro addx2 ($rd, $rs, $rt) sll $1, $rs, 1 addu $rd, $1, $rt poziv makroa: addx2 ($t2, $t1, $t0) Slede primeri instrukcija koje bi se mogle definisati kao makro naredbe.

Add with Shift by 1 : addx2 Rd, Rs, Rt 2/2 Sadržaj registra Rs se množi sa 2, pa se sabira sa sadržajem registra Rt. Dobijeni rezultat se upisuje u registar Rd. sll $1, Rs, 1 addu Rd, $1, Rt Primer: ori $t0, $0, 8 # $t0 = 8 ori $t1, $0, 1 # $t1 = 1 sll $1, $t0, 1 # addx2 $t2, $t1, $t0 addu $t2, $1, $t1 # $t2 = 17

Branch if All Bits Set: ball Rs, Rt, Label 3/3 Ukoliko su postavljeni svi bitovi u registru Rs označeni maskom u registru Rt vrši se grananje na adresu Label. nor $1, Rs, $0 and $1, $1, Rt beq $1, $0, Label Primer: ori $t1, $0, 12 # $t1 = 1100 ori $t0, $0, 11 # $t0 = 1011 nor $1, $t1, $0 # ball $t1, $t0, lab and $1, $1, $t0 beq $1, $0, lab sll $0, $0, 0 ori $t2, $0, 1 # ako nije doslo do lab: # grananja $t2=1

Maximum Value: max Rd, Rs, Rt 4/4 U registar Rd se upisuje veća od vrednosti u registrima Rs i Rt. Sadržaji registara Rs i Rt se porede kao označeni brojevi. slt $1, Rs, Rt beq $1, $0, skip or Rd, Rs, $0 or Rd, Rt, $0 skip: Primer: lui $1, 0xffff ori $t0, $1, 0xfffb # t0 = -5 ori $t1, $0, 7 # t1 = 7 slt $1, $t1, $t0 # max $t2, $t1, $t0 beq $1, $0, labela or $t2, $t1, $0 # u slotu grananja or $t2, $t0, $0 labela:

Primer Dat je niz a od 4 elementa tipa reč (32 bita). Generisati nizove b i c čiji su elementi tipa polureč (16 bitova) tako što se u niz b smešta niža, a u niz c viša polureč odgovarajućeg elementa niza a. Pretpostaviti da su nizovi a, b i c smešteni počev od adresa NizA, NizB i NizC, respektivno, pri čemu ove adrese ne moraju biti poravnate.

Prvo definišemo nizove: .data NizA: .word 0x11112222, 0x33334444, 0x55556666, 0x77778888 NizB: .half 0, 0, 0, 0, 0 NizC: .half 0, 0, 0, 0, 0 .text

Rešenje: la $t0, NizA addi $t0, $t0, 16 # kraj niza a la $t1, NizB addi $t1, $t1, 8 # kraj niza b la $t2, NizC addi $t2, $t2, 8 # kraj niza c la $t7, NizA petlja: addi $t0, $t0, -4 # pomeramo se za addi $t1, $t1, -2 # jedan element unazad addi $t2, $t2, -2 # u svim nizovima ulw $t5, 0($t0) # ucitaj rec ush $t5, 0($t1) # sacuvaj nizu polurec u b srl $t5, $t5, 16 ush $t5, 0($t2) # sacuvaj visu polurec u c bne $t0, $t7, petlja # dok ne stignemo do # pocetka niza

korak 1: Pokrenuti MIPSter (Start→All Programs→MIPSter) korak 1: Pokrenuti MIPSter (Start→All Programs→MIPSter). Na označena mesta uneti rešenje primera koje je dato na predhodnom slajdu. Sekcija za definisanje podataka Sekcija za programsku sekvencu

korak 2: Selektovati file→save as iz padajućeg meny-ja i u dialog box-u koji se otvori upisati “primer.s” i kliknuti na taster save (ili pritisnuti taster enter). Ovde upisati: primer.s

korak 3: Pokrenuti program PCSpim (Start→All Programs→PCSpim) korak 3: Pokrenuti program PCSpim (Start→All Programs→PCSpim). Otvoriće se aplikaconi prozor koji je prikazan na slici. register Text segment data segment messages

Aplikacioni prozor sastoji se iz četiri dela: - sekcija na vrhu je meny-bar. Omogućava selekciju File operacije, postavljanje konfiguracije-opcijom Simulator, selekciju načina i vrste prikaza-opcijom Windows i dobijanje pomoćnih informacija-opcijom Help. - odmah ispod meny-bar-a je toolbar. Omogućava brzi bristup preko miša do svih alata koje koristi PCSpim. - najveća sekcija u sredini ekrana je sekcija prikaza koja ima četiri celine:Register (vrednosti svih registara CPU i MPU jedinica MIPS procesora), Text Segment (instrukcije iz korisničkog programa i sistemski kod), Data Segment (podaci koji se nalaze u memoriji i kojima korisnički program manipuliše) i Messages (ispisuju se pouke PCSpim-a). - na dnu velikog prozora nalazi se sekcija Status bar. Ova sekcija sadrži informacije o tekućim aktivnostima istatusu simulatora.

korak 4: Postaviti konfiguraciju simulatora selektovanjem Simulator→Settings iz menu bar-a tako da dialog box koji se otvori izgleda kao na slici

korak 5: Loadovati fajl primer korak 5: Loadovati fajl primer.s selekcijom Open tastera iz toolbar-a (alternativno može se selektovati File→Open iz menu bar-a). Ukoliko program ne može da se loaduje PCSpim će pružiti mogućnost promene konfiguracje okoline i automatski će izvršiti reload fajla. Po učitavanju dialog box za otvaranje fajlova se zatvara i pojavljuje se glavni aplikacioni prozor sa prikazima instrukcija i podataka. Ako to nije slučaj treba promeniti izgled ekrana selekcijom Windows→Tile iz menu bar-a. Svaka instrukcija u tekstualnom segmentu prikazana je u liniji sličnoj sledećoj: [0x0040000c] 0x00041080 sll $2, $4, 2 ; 143: sll $v0, $a0, 2 Prvi broj u liniji, smešten između uglastih zagrada je heksadecimalna memorijska adresa instrukcije. Drugi broj je heksadecimalni kod instrukcije. Iza tačke i zareza sledi linija iz fajla koja generiše instrukciju, a broj 143 je broj linije u fajlu. Ako iza tačke i zareza nema nikakve linije znači da je instrukciju generisao PCSpim u procesu prevođenja pseudonstrukcije ili makro naredbe.

korak 6: Pratiti izvršavanje programa uz pomoć tastera F10 ili selektovati Simulator→Single _Step iz menu bar-a (program se izvršava instrukcija po instrukcija). Izvršenje programa postiže se i pritiskom Go tastera iz toolbar-a (alternativno može se selektovati Simulator→Go iz menu bar-a).