1 / 34

Karakteristike RISC procesora

Karakteristike RISC procesora. Arhitektura MIPS procesora

elliot
Download Presentation

Karakteristike RISC procesora

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. Karakteristike RISC procesora

  2. 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.

  3. Pojednostavljena arhitektura MIPS procesora

  4. 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.

  5. 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.

  6. 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

  7. Načini adresiranja operanada Procesor MIPSxx koristi sledeća četiri adresna načina rada: 1. registarsko adresiranje:operand je u registru 2. bazno adresiranjesa 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

  8. 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

  9. Regularne instrukcije za manipulisanje integer vrednostima

  10. Lista pseudo (makro) instrukcija

  11. 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.

  12. Absolute Value:abs Rd, Rs3/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 skip:

  13. 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: ...

  14. Load Immediate:li Rd, value2/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

  15. 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

  16. 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

  17. 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.

  18. 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 .end_macro poziv makroa: addx2 ($t2, $t1, $t0) Slede primeri instrukcija koje bi se mogle definisati kao makro naredbe.

  19. Add with Shift by 1 : addx2 Rd, Rs, Rt2/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

  20. Branch if All Bits Set: ball Rs, Rt, Label3/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

  21. 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:

  22. 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.

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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.

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

  30. 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.

  31. 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).

More Related