Univerzitet u Novom Sadu Fakultet tehničkih nauka POSTUPAK PROJEKTOVANJA CENTRALNOG PROCESORA LPRS2
Logičko projektovanje centralnog procesora Formalan postupak koji Na početku ima definiciju arhitekture Format podataka, skup registara, skup instrukcija Na kraju daje izvedenu organizaciju procesora Na toj osnovi, moguće je nastaviti postupak Razradom detaljne električne šeme Pripremom realizacije integrisanog kola Kompleksnost realnih procesora je izvor složenosti postupka projektovanja Ipak, sam postupak projektovanja ima tok suštinski istovetan kao u sledećem primeru 2
Primer: Projektovanje procesora sa nepotpunim skupom instrukcija Definicija arhitekture Registri i memorija, 8bita Skup instrukcija Nepotpun Proširiv Osnovni adresni režimi Ilustracija postupka PC IR Dekoder operacija q n q 3 q 2 q 1 t 7 t 3 t 2 t 1 A Dekoder takta Briši MAR Memorija 256x8 bita MBR R T KOP Mnemonik Opis Funkcija 00000001 LDA R Napuni registar A sadržajem iz registra R A R 00000010 LDA =OPR Napuni operand u registar A A OPR 00000011 LDA ADR Napuni operand određen adresom u registar A A M[ADR] 3
Faza pribavljanja instrukcije Uslov Mikroinstrukcije Komentar t 0 : MAR PC prenos adrese t 1 : MBR M[MAR], PC PC + 1 čitanje KOP, uvećanje PC t 2 : IR MBR postavljanje q i 4
Izvršenje instrukcija Instrukcija Uslov Lista mikroinstrukcija Komentar LDA R q 1 =1 LDA =OPR q 2 =1 LDA ADR q 3 =1 q 1 t 3 : A R, T 0 prenos u A, kraj instrukcije (t 0 =1) q 2 t 3 : MAR PC adresiranje reči o p e r a n d a q 2 t 4 : MBR M, PC PC + 1 učitavanje, uvećanje PC q 2 t 5 : A MBR, T 0 prenos u A, kraj instrukcije q 3 t 3 : MAR PC adresiranje reči adrese operanda q 3 t 4 : MBR M, PC PC + 1 učitavanje adrese, uvećanje PC q 3 t 5 : MAR MBR q 3 t 6 : MBR M[MAR] q 3 t 7 : A MBR, T 0 prenos adrese u MAR učitavanje operanda prenos u A, kraj instrukcije 5
Lista mikroinstrukcija i složenih uslova Uslov Mikroinstrukcija Komentar x 1 = t 0 + q 2 t 3 + q 3 t 3 : MAR PC prenos sadržaja x 2 = q 3 t 5 : MAR MBR prenos sadržaja x 3 = t 1 + q 2 t 4 + q 3 t 4 : PC PC + 1 uvećanje PC x 4 = t 1 + q 3 t 6 : MBR M očitavanje memorije x 5 = t 1 + q 2 t 5 + q 3 t 7 : A MBR prenos sadržaja x 6 = q 1 t 3 : A R prenos sadržaja x 7 = x 5 + x 6 : T 0 kraj instrukcije x 8 = t 2 : IR MBR prenos sadržaja 6
Organizacija procesora Uvećanje PC Memorija Čitaj Unos MAR 1 MUX 0 s IR MBR Unos DEK R 1 0 s x 8 q 3 q 2 q 1 MUX x 1 x 2 UJ x 5 x 6 Unos A x 3 x 7 x 4 t 7 t 6 t 0 DEK T Uvećaj Briši 7
Projektovanje MIPS procesora Projektovanje "realnog" mikroprocesora MIPS (Microprocessor Without Interlocked Pipeline Stages) 32 bita, 1982. godine, Univerzitet Stanford, SAD Danas raspoloživ u brojnim varijantama, uključujući i 64 bitnu Trećina svih proizvedenih RISC procesora imaju MIPS jezgro Odlikuje se jasnim i konzistentnim skupom instrukcija Razmotriće se (projektovati) sledeće varijante: Konvencionalni MIPS sa izvršenjem instrukcije u jednom taktu Konvencionalni MIPS sa izvršenjem instrukcije u više taktova Protočno organizovan MIPS procesor 8
Organizacija MIPS procesora CPU modul Kernel i User mode Koprocesor 0 Kontrola procesora mfc0, mtc0 Koprocesor 1 Tekući zarez Memorijski prostor 2 30 reči 2 32 Byte 9
MIPS 32-bitna arhitektura Skup registara, $broj Postoje i dodatni registri, nevidljivi za programera Broj Ime Opis 0 zero Vrednost 0, nepromenljiva 1 $at Rezervisano za asembler (assembler temporary) 2-3 $v0 - $v1 Smeštanje rezultata proračuna i funkcijskih poziva (values) 4-7 $a0 - $a3 Prenos argumenata ka potprogramima (arguments) 8-15 $t0 - $t7 Privremene vrednosti (temporaries) 16-23 $s0 - $s7 Sačuvane vrednosti (saved values) 24-25 $t8 - $t9 Privremene vrednosti (temporaries), nastavak prvih osam 26-27 $k0 - $k1 Rezervisano za jezgro OS (kernel scratch) 28 $gp Pokazivač na 64KB segment statičkih podataka (global pointer) 29 $sp Pokazivač na poslednju lokaciju "stack-a" (stack pointer) 30 $s8/$fp $s8, ili pokazivač na okvir steka (frame pointer) 31 $a Povratna adresa (return address) 10
Memorijski prostor Obuhvata 2 30 memorijskih reči Reči se adresiraju po oktetima, tj. adrese dve uzastopne reči razlikuju se za četiri Pristup memoriji isključivo load/store instrukcijama Pristup se može ostvariti i na nivou polureči (16-bita) ili okteta Memorijski "stack" je opadajući, tj. raste na dole jer se pri punjenju steka ukazivač umanjuje. 11
MIPS Instrukcije Sve instrukcije su fiksne dužine 32 bita Format instrukcije sa 3 operanda Izvršavaju se po segmentima trajanja uvek 1 ciklus takta Pristup memoriji isključivo preko load/store instrukcija Pristup se može ostvariti i na nivou polureči (16-bita) ili okteta Nije podržana aritmetika na nivou bajta ili polureči Ima jedinicu za množenje / deljenje Memorijski "stack" nije HW podržan (nema push i pop) Minimalna je podrška rukovanju prekidima i izuzecima 12
Tipovi instrukcija MIPS procesora kop rs, rt, rd pomeraj funkcija adresa/ direktna vrednost odredišna adresa kod operacije koju instrukcija izvršava; izvorni i odredišni registri koji učestvuju u izvršenju; vrednost pomeraja; izbor varijante operacije zadate poljem kop; adresno odstojanje, ili neposredna vrednost koja se unosi u registar; ciljna adresa instrukcije skoka. 13
Adresni režimi MIPS procesora Registarsko adresiranje op rs rt rd... Registar Neposredno adresiranje op rs rt operand Bazno adresiranje op rs rt odstojanje Registar Memorija byte + Reč polureč PC-relativno adresiranje op rs rt odstojanje Memorija + Reč PC Pseudodirektno adresiranje op adresa 31:26 25 : 0 PC + Memorija Reč 14
Adresni režimi 1/3 Registarsko adresiranje 5-bitni kod za jedan od 32 registra Neposredno adresiranje operanda Koristi 16-bitne konstante Punjenje 32-bitnog registra - dve instrukcije Registarsko adresiranje op rs rt rd... Registar Neposredno adresiranje op rs rt operand 15
Adresni režimi 2/3 Bazno i PC-relativno adresiranje Vrednost registra dopunjava se 16-bitnim odstojanjem u rečima, ne u bajtima štede se dva bita u instrukciji i proširuje adresni prostor registar gp na sredinu 64kW prostora Bazno adresiranje koriste load/store, i omogućava adresiranje polureči/bajta PC-relativno adresiranje koriste instrukcije uslovnog grananja Bazno adresiranje op rs rt odstojanje Registar Memorija byte + Reč polureč PC-relativno adresiranje op rs rt odstojanje Memorija + Reč PC 16
Adresni režimi 3/3 Pseudodirektno adresiranje Referencira memorijske reči korišćenjem (26+2)=28-bitne pseudoadrese Ona se mora proširiti sa gornja četiri bita programskog brojača PC(31:28) Pseudodirektno adresiranje op adresa 31:28 25 : 0 PC + Memorija Reč 17
Osnovni skup MIPS instrukcija Ime Sintaksa Značenje Tip Aritmetičke instrukcije Kop/ Fun Komentar Add add r1,r2,r3 r1 r2 + r3 R 00/20 Sabiranje dva registra Subtract add r1,r2,r3 r1 r2 - r3 R 00/22 Oduzimanje dva registra hex Add immediate addi r1,r2,const r1 r2 + const I 08/- Pristup memoriji i prenos između registara Load word lw r1,const(r2) r1 M[r2+const] I 23/- Store word sw r1,const(r2) M[r2+const] r1 I 2b/- Load byte lb r1,const(r2) r1 M[r2+const] I 24/- Store byte sb r1,const(r2) M[r2+const] r1 I 28/- Load upper immediate lui r1,const r1 const * 2 16 I 0f/- Logičke i instrukcije pomeranja Dodavanje konstante ili kopiranje registra (npr. addi rs1, rs2, 0 ) Punjenje registra rečju iz memorije sa adrese (r2+const) Upis reči u memoriju počev od (r2+const) Punjenje registra bajtom sa adrese (r2+const) Upis bajta u memoriju na adresu (r2+const) Puni 16-bitnu vrednost neposrednog operanda u u gornju polovinu registra Set on less than slt r1,r2,r3 r1 test(r2 < r3) R 00/2a Uporedi r2 i r3; r1 0 ili 1 Set on less than immediate slti r1,r2,const r1 test(r2<const) And and r1, r2, r3 r1 r2 r3 R 00/24 Logičko I I 0a/- Uporedi r2 sa konstantom; r1 0 ili 1 Or or r1,r2,r3 r1 r2 r3 R 00/25 Logičko ILI Shift left logical sll r1,r2,const r1 r2 << const R 00/00 Shift right logical Branch on equal Branch on not equal Jump srl r1,r2,const r1 r2 >> const R 00/02 Uslovno grananje beq r1,r2,const bne r1,r2,const Bezuslovni skok j const if (r1 == r2) go to PC+4+const if (r1!= r2) go to PC+4+const goto address const Pomeranje u levo *Nije realizovano u primerima Pomeranje u desno *Nije realizovano u primerima I 04/- Grananje ako su dva registra ista I 05/- Grananje ako dva registra nisu ista J 02/- Bezuslovni skok na zadatu adresu Jump register jr r1 goto address r1 R 00/08 Bezuslovni skok na adresu iz registra Jump and link jal const $31 PC + 4; goto const J 03/- Poziv procedure. Povratak se radi sa: jr $31. 18
Primer asemblerskog programa i njegove kopije u memoriji Početna adresa 80000 (20000 x 4) Čita vektor iz memorije (početna adresa u $s6), indeks u $s3 Izlazi čim se pročitana vrednost razlikuje od registra $s5 bne i j instrukcije koriste odstojanja (adrese) na reč MIPS adrese su poravnate na reč (ne na byte), ili se generiše izuzetak 19
MIPS procesor sa izvršenjem instrukcije u jednom taktu 20
Skup instrukcija MIPS-1T Redukovan skup instrukcija: Memorijske instrukcije: lw, sw Aritmetičko logičke instrukcije R-tipa: add, sub, and, or, slt Uslovno grananje: beq Skok: j Pokriva sva tri tipa instrukcija i osnovne elemente MIPS arhitekture 21
Polazna struktura MIPS-1T procesora s 1 4 MUX + + s 3 MUX Ulaz wr Izlaz1 alk MemWrite PC Adresa Instrukcija Programska memorija rd1 rd2 Registri Izlaz2 RegWrite s 2 MUX ALJ Adresa Podaci Ulaz Memorija podataka Izlaz MemRead Dve memorije, programska i za podatke PC deo: +4, +deo_inst, Zero bit iz ALJ kontrola MUX1 ALJ ima drugi ulaz iz registarskog bloka ili instrukcije 22
Izvršenje instrukcija procesora MIPS-1T Aritmetičko logičke, R-tip Primer: add $t1, $t2, $t3 Očitavaju se registri zadati sa i[25:21, 20:16]. ALJ izvršava operaciju prema i[5:0]. MUX3 propušta izlaz ALJ. Zapis rezultata u registar zadat sa i[15:11]. Grananje, I-tip Primer: beq $t1, $t2, offset Očitavaju se registri zadati sa i[25:21, 20:16] i oduzimaju pomoću ALJ. Odstojanje i[15:0] se proširuje znakom i pomera ulevo za dva mesta (x4). Sabiranjem sa PC formira se adresa grananja. MUX1 kontrolisan Zero bitom stanja određuje koji od izlaza sabirača daje novu vrednost PC. Memorijske, I-tip Primer: lw $t1, offset($t2) Očitava se registar zadat sa i[25:21]. Odstojanja i[15:0] se proširuje znakom. ALJ računa memorijsku adresu kao zbir pročitanog registra i proširenog odstojanja. Očitana mem. reč se prosleđuje preko MUX3. Zapis učitane reči u registar zadat sa i[20:16]. Primer: j adresa Skok, J-tip 32-bitna adresa skoka se formira na sledeći način: Najviši biti [31:28] adrese su preslikani iz vrednosti PC + 4 Biti [27:2] adrese su neposredni operand iz instrukcije skoka i[25:0] Najniži biti [1:0] se postavljaju na vrednost 00 (pristup reči) 23
Detaljna blok šema MIPS-1T procesora 4 PC+4 i[25:0] 28 <<2 PC+4[31:28] adresa skoka[31:0] <<2 + 0 1 s 1 Mux1 1 0 s 4 Mux4 + PC Instrukcija [31:0] Adresa Programska memorija i[15:11] i[20:16] i[25:21] Mux5 1 0 s 5 Ulaz wr rd2 rd1 Izlaz1 Registri Izlaz2 RegWrite 1 0 s 3 Mux3 Mux2 0 1 s 2 alk ALJ Zero Adresa Memorija podataka Podaci Ulaz MemWrite Izlaz UJ i[31:26] i[15:0] Proširivač 16/32 bita MemRead ALUop s2 - s5 i[5:0] ALJ UJ ALJ kontrola Branch MemRead, MemWrite RegWrite Instrukcija beq - proširivač odstojanja i pomerač, Zero bit Instrukcija j - pomerač i MUX4 MUX 5 - zbog adresiranja odredišnog registra, koji se u instrukcijama I-tipa određuje poljem rt, a ne poljem rd 24
Zavisnost ALJ upravljačkih signala Logička šema upravljačke jedinice ALJ Ulazi Izlazi Mnemonik Tip ALJ operacija kop(5:0) ALUop(1:0) funkcija(5:0) alk(2:0) lw I saberi 100011 00 010 sw I saberi 101011 00 010 beq I oduzmi 000100 01 110 add R saberi 000000 10 100000 010 sub R oduzmi 000000 10 100010 110 and R logičko I 000000 10 100100 000 or R logičko ILI 000000 10 100101 001 slt R test(a < B) 000000 10 101010 111 j J - 000010 - - ALUop:0 ALUop[1:0] ALUop:1 f:3 alk:2 f:2 alk:1 alk[2:0] f[5:0] f:1 f:0 alk:0 25
Kombinaciona tabela upravljačke jedinice MIPS-1T 26
PLA Upravljačka jedinica MIPS-1T kop:5 kop:4 kop:3 kop:2 kop:1 kop:0 R-tip lw sw beq j s5 s4 s3 s2 RegWrite MemRead MemWrite Branch ALUop:1 ALUop:2 27
Komentar MIPS-1T Ovako projektovan procesor, bez značajnijeg povećanja kompleksnosti, može obuhvatiti kompletan repertoar instrukcija MIPS arhitekture. Ipak, ovakvo rešenje, iako korektno, nije prihvatljivo za moderne procesore. Osnovni razlog je neefikasnost u izvršenju instrukcija, jer vreme izvršavanja svih instrukcija zavisi od najduže putanje u strukturi procesora (u ovom slučaju lw). To vreme ograničava i vremenski period takta MIPS-1T procesora. Proučićemo dva standardna rešenja ovog problema: Izvršenje instrukcija u više taktova Protočna organizacija procesora 28
MIPS procesor sa izvršenjem instrukcije u više taktova 29
Osnovna blok šema MIPS-MT procesora PC PCLoad MemWrite Adresa Memorija Podaci MemRead IR IRWrite Izlaz MRP Ulaz wr rd2 rd1 Izlaz1 Registri Izlaz2 RegWrite A B alk ALJ Zero C Prednosti: promenljivo trajanje izvršenja instrukcije i mogućnost deljenja funkcionalnih jedinica Za PC više nije neophodan poseban sabirač Omogućeno je uvođenje jedinstvene memorije Zbog korišćenja rezultata izvršenja iz prethodnog takta, uvode se dodatni registri IR, MRP, i ALJ registri ulazni A i B, i izlazni registar C. Sem IR, svi oni su privremeni jer menjaju sadržaj iz takta u takt 30
Koraci tokom izvršenja instrukcije Korak 1: Prihvat instrukcije Korak 2: Dekodiranje instrukcije i čitanje registara Korak 3: Izvršenje, izračunavanje adrese ili završetak grananja/skoka Korak 4: Pristup memoriji ili završetak instrukcije R-tipa Korak 5: Završetak čitanja memorije sext označava proširenje znaka (sign-extension) do 32-bitne vrednosti 31
Funkcionalna šema MIPS-MT procesora PC[31:28] Mux6 PC Mux1 0 1 s 1 kop[5:0] Podaci Memorija Adresa MemW MemR UJ s 2 - s 4 S 5, S 6 IR i[31:26] i[25:21] i[20:16] i[15:0] IRWrite MRP i[15:11] i[15:0] Mux2 i[25:0] 0 1 s 2 1 0 s 3 Mux3 rd1 rd2 wr Ulaz Izlaz1 Registri Proširivač 16/32 bita Izlaz2 RegWrite 32 A B <<2 4 26 Mux4 0 1 s 4 0 1 2 3 S 5 Mux5 <<2 28 alk ALJ Zero 32 C 2 0 1 S 6 RegWrite ALUop i[5:0] ALJ UJ ALJ kontrola PCWrite Branch 32
Komentar šeme MIPS-MT Mux1 - izbor adrese kojom se pristupa memoriji Radi čitanja instrukcije (izvor PC) Radi podatka za čitanje/upis (izvor registar C) Mux2 - adresiranje odredišnog registra u instrukcijama I-tipa Mux3 - bira izvor podatka za upis u registar - MRP ili C Mux4 - izabira kao polazni registar A ili PC Mux5 - propušta jedan od ulaza: B, vrednost 4, znakom prošireno odstojanje, ili isto pomereno za dva bita ulevo Mux6 - bira izvor sledećeg sadržaja PC: direktno iz ALJ (PC + 4), adresa grananja iz ALJ, ili adresa skoka Upravljanje ALJ jedinicom se radi na isti način kao i u prethodnom primeru Kombinaciona mreža upravljačkih signala za upis u PC obezbeđuje: uslovni upis (signali Branch i Zero) u slučaju instrukcije uslovnog grananja bezuslovni upis (signal PCWrite) u slučajevima prelaza na sledeću instrukciju i instrukcije skoka 33
Upravljački signali MIPS-MT procesora 34
Konačni automat stanja za MIPS-MT Start S0: Prihvat instrukcije MemRead s4=0,s5=01 ALUop=00 IRWrite, PCWrite S6=00 S1: Dekodiranje instrukcije i čitanje registara s4=0 S5=11 ALUop=00 S2: Računanje memorijske adrese s4=1 S5=10 ALUop=00 lw, sw S6: Izvršenje s4=1 S5=00 ALUop=10 R-tip s4=1 S5=00 ALUop=10 Branch S6=01 beq j PCWrite S6=10 S9: Skok S3: Čitanje lw sw S5: Upis S8: Grananje S4: Upis u registar MemRead s1=1 s2=0 RegWrite s3 MemWrite s1=1 s2=1 RegWrite s3=0 S7: Upis rezultata R-instrukcije u registar 35
Blok šema UJ zasnovane na konačnom automatu stanja s1, s2, s3, s4 S5,S6 IR[kop] Registar stanja St3 St2 St1 St0 Kombinaciona logika: ROM, PLA RegWrite IRWrite, PCWrite MemW, MemR Branch ALUop nst3 nst2 nst1 nst0 Za skup instrukcija posmatran u primeru, imajući u vidu mali broj potrebnih stanja, ovakvo rešenje upravljačke jedinice je optimalno 36
Mikroprogramska UJ procesora MIPS-MT Branch S6 1 PCWrite s1 MemR MemW s3 IRWrite + 17 Uravljacka memorija (Memorija mikrokoda) ROM, PLA Registar stanja Mux 3 2 1 0 2 0 0 ALUop S5 s4 RegWrite s2 AdrCtrl Registar stanja - mikroprogramski brojač MUX - 4 izvora sledeće adrese Početna adresa 0 novi ciklus Adresa iz ROM1/ROM2 Konverzija KOP u početnu adresu mikroprograma Sledeća adresa mikroprograma Adresni ROM2 Adresni ROM1 IR[kop] 37
Mikroprogram UJ-e MIPS-MT procesora Adr Labela ALJ kontrola Prvi ALJ operand Drugi ALJ operand Kontrola registara Kontrola memorije Upis u PC Sledeća adresa 0 Fetch saberi PC 4 čitajpc ALJ Sledeća 1 saberi PC sext<<2 čitaj arom1 2 Mem1 saberi A sext arom2 3 LW čitajc Sledeća 4 Upiši MRP Fetch 5 SW upišic Fetch 6 TipR F-kod A B Sledeća 7 Upiši C Fetch 8 Beq oduzmi A B uslovno Fetch 9 Jump skok Fetch Mikroprogram je organizovan na osnovu prethodne tabele, koja je ovde ponovljena radi lakšeg razumevanja 38
Binarni sadržaj ROM memorija μprog. UJ Adresni ROM1 Adresa (kop) Sadržaj Instrukcija 000000 0110 R-tip 000010 1001 j 000100 1000 beq 100011 0010 lw 101011 0010 sw Adresni ROM2 Adresa (kop) Sadržaj Instrukcija 100011 0011 lw 101011 0101 sw Mikroprogramski ROM Adresa Biti 17-2 Biti 1-0 0 1001010000001000 11 1 0000000000011000 01 2 0000000000010100 10 3 0011000000000000 11 4 0000001000000010 00 5 0010100000000000 00 6 0000000001000100 11 7 0000000000000011 00 8 0100000010100100 00 9 1000000100000000 00 Glavni ROM podeljen je na dva polja biti 17-2 upravljački signali ka spoljnim funkcionalnim jedinicama biti 1-0 adresni kontrolni signali Veličina glavnog ROM-a je 10x18=180bita Veličina adresnih memorija 2x2 6 x4=512bita. 39
MIPS-MT sa izuzecima Vrsta događaja Izvor MIPS Zahtev U/I uređaja spolja prekid Poziv operativnog sistema iz korisničkog programa iznutra izuzetak Aritmetičko prekoračenje iznutra izuzetak Korišćenje nedefinisane instrukcije iznutra izuzetak Otkaz elemenata fizičke arhitekure iznutra i spolja izuzetak i prekid MIPS-MT može generisati 2 izuzetka: korišćenje nedefinisane instrukcije aritmetičko prekoračenje Registar EPC (Exception Program Counter) čuva adresu instrukcije koja je izazvala izuzetak Upravljanje procesorom se prebacuje operativnom sistemu, posredstvom fiksne adrese 80000180 16 Registar Cause pamti uzrok izuzetka, gde je najniži bit 0 - izvršenje nedefinisane instrukcija 1 - aritmetičko prekoračenje 40
PC Mux1 0 1 s 1 kop[5:0] Overflow MIPS-MT sa podrškom za 2 tipa izuzetka Podaci Memorija Adresa MemW UJ MemR s 2 - s 4 S 5, S 6 RegWrite ALUop IR i[31:26] i[25:21] i[20:16] i[15:0] IRWrite MRP i[15:11] i[15:0] i[5:0] Mux2 i[25:0] 0 1 s 2 1 0 s 3 Mux3 ALJ UJ rd1 rd2 wr Ulaz Izlaz1 Registri Proširivač 16/32 bita Izlaz2 RegWrite 32 ALJ kontrola A B <<2 4 PC[31:28] 26 Mux4 0 1 s 4 0 1 2 3 S 5 Mux5 <<2 alk Zero 28 ALJ 0 1 8000 0180 32 C 3 2 0 1 S6 EPC EPCWrite Cause Mux6 CauseWrite Mux7 0 1 s 7 PCWrite Branch EPCWrite, CauseWrite, s7 Mux7 postavlja/briše najniži bit Cause registra Mux6 puni adresu obrade izuzetka u PC Pošto se PC uvećava po učitavanju instrukcije, potrebno ga je umanjiti za 4 pre upisa u EPC registar, i zato je izlaz iz ALJ povezan na ulaz EPC 41
Konačni automat stanja UJ za MIPS-MT procesor sa izuzecima Start S0: Prihvat instrukcije MemRead s4=0,s5=01 ALUop=00 IRWrite, PCWrite S6=00 S1: Dekodiranje instrukcije i čitanje registara s4=0 S5=11 ALUop=00 Nepoznat KOP S2: Računanje memorijske adrese s4=1 S5=10 ALUop=00 lw, sw S6: Izvršenje s4=1 S5=00 ALUop=10 R-tip s4=1 S5=00 ALUop=10 Branch S6=01 beq j PCWrite S6=10 S9: Skok S3: Čitanje lw sw S5: Upis S7: Upis rezultata S8: Grananje S4: Upis u registar MemRead s1=1 MemWrite s1=1 s2=1 RegWrite s3=0 Overflow s7=1, s4=0 S5=01 ALUop=01 CauseWrite EPCWrite PCWrite S6=11 s7=0, s4=0 S5=01 ALUop=01 CauseWrite EPCWrite PCWrite S6=11 s2=0 RegWrite s3 S10: Prekoračenje S11: Nepoznata instrukcija 42
MIPS sa protočnom obradom 43
Polazne postavke s 1 Početna struktura je kao i za MIPS-1T Instrukcija se izvodi kroz pet segmenata PC 4 + Adresa MUX Instrukcija Programska memorija + Ulaz wr rd1 rd2 Izlaz1 Registri Izlaz2 RegWrite s 3 MUX s 2 MUX alk ALJ Adresa Memorija podataka Podaci Ulaz MemWrite Izlaz MemRead 44
Segmentiranje instrukcija iz posmatranog skupa Instrukcija IF ID EX MEM WB Trajanje lw 8 ns sw - 7 ns R-tip - 6 ns beq, j - - 5 ns Teorijsko ubrzanje obrade jednako je broju segmenata Ono je nešto manje usled nejednakog trajanja pojedinih instrukcija Realno ubrzanje je još manje, u zavisnosti od pojave rizika podataka ili kontrole Realni programi izvršavaju veliki broj instrukcija, zato i statistika pojave određenih instrukcija može uticati na ubrzanje protočne strukture 45
Logička podela procesora na 5 segmenata 4 + Proširivač 16/32 bita <<2 + Instrukcija wr Izlaz1 Mux PC Adresa Programska memorija Registri rd1 rd2 Izlaz2 Ulaz Mux ALJ Adresa Ulaz Memorija podataka Izlaz Mux IF ID EX MEM WB Segmenati se izvode sleva na desno Sem povratnih (plavo obojenih) putanja kod ažuriranja PC i upisa u registar 46
Protočna struktura MIPS-PL procesora 4 + Proširivač 16/32 bita <<2 + rd1 Mux PC Adresa Instrukcija Programska memorija rd2 wr Ulaz Izlaz1 Registri Izlaz2 Mux ALJ Adresa Ulaz Memorija podataka Izlaz Mux IF/ID ID/EX EX/MEM MEM/WB Izolacioni registri, sinhrono rukovanje: zapis na prednju a čitanje na zadnju ivicu takta PC je protočni registar za ulaz u prvi segment Povratne veze u poslednja dva segmenta označavaju da u njihovom izvršenju učestvuju i elementi fizički prisutni u drugim segmentima Obezbeđeno je izbegavanje strukturnih rizika, odnosno situacija kada bi se iz različitih segmenata pokušala istovremena upotreba istih fizičkih elemenata Registarsko polje se iz segmenta ID samo čita, a iz WB se vrši upis Sinhronim rukovanjem registarskim poljem postiže se i vremenska razdvojenost predmetnih mikrooperacija 47
Upravljačka jedinica MIPS- PL Mogu se u celini preuzeti upravljački signali i upravljačka jedinica MIPS-1T procesora Jedini je problem vremenska distribucija upravljačkih signala do odredišnih komponenti, smeštenih u različitim segmentima Najjednostavnije rešenje za to je proširenje izolacionih registara Slično adresi odredišnog registra, oni mogu preneti i upravljačke signale od segmenta ID (kad se vrši njihovo postavljanje) do odredišnog segmenta i trenutka njihove upotrebe 48
Blok šema MIPS-PL UJ W B kop M W B E X ALUop, s2 M s 4 W B 4 + Proš. 16/32 <<2 + Branch 0 1 s 1 1 0 s 4 PC Adresa Instrukcija Programska memorija rd1 rd2 wr Ulaz RegWrite Izlaz1 Registri Izlaz2 s 2 1 0 Zero ALJ Adresa Ulaz MemRead MemWrite Memorija podataka Izlaz 0 1 s 3 i[15:11] i[20:16] 1 0 s 5 IF/ID ID/EX EX/MEM MEM/WB 49
Rizik podataka primer_zavisnosti: sub $2, $1, $3 # register $2 prima novu vrednost and $12, $2, $5 # prvi operand ($2) zavisi od sub or $13, $6, $2 # drugi operand ($2) zavisi od sub add $14, $2, $2 # prvi ($2) i drugi operand ($2) zavise od sub sw $15, 100($2) # bazna adresa zavisi od sub Vreme takt 1 2 3 4 5 6 7 8 9 Registar $2 10 10 10 10 10/-20-20 -20-20 -20 sub $2, $1, $3 IM Reg ALJ MP Reg and $12, $2, $5 IM Reg ALJ MP Reg or $13, $6, $2 IM Reg ALJ MP Reg add $14, $2, $2 IM Reg ALJ MP Reg sw $15, 100($2) IM Reg ALJ MP Reg 50
Prosleđivanje podatka Data forwarding Instrukcija iz EX segmenta traži registar čija će vrednost biti zapisana tek u WB segmentu Tražena vrednost se prosleđuje sa izlaza ALJ ili nekog od sledećih protočnih registara Tip Uslov 1.a EX/MEM.RegRd = ID/EX. RegRs 1.b EX/MEM.RegRd = ID/EX. RegRt 2.a MEM/WB.RegRd = ID/EX. RegRs 2.b MEM/WB.RegRd = ID/EX. RegRt Rizik podataka se može prosleđivanjem preduprediti, ako je neki od polaznih registara (Rs, Rt) nove instrukcije jednak odredišnom registru (Rd) još nezavršene instrukcije. Tada se ispravna vrednost registra može naći u jednom od dva zadnja razdvojna registra (EX/MEM ili MEM/WB). 51
Jedinice za prosleđivanje (forwarding unit) ID/EX EX/MEM MEM/WB Mux Zbog jednostavnosti, samo za R-instrukcije Zadatak jedinice: Detekcija rizika Transfer operanda iz jednog od protočnih registara na ulaz ALJ Deo je EX segmenta Zato je do njega potrebno propustiti adresu operand-registra iz segmenta ID, preko ID/EX Registri IF/ID.RegRs IF/ID.RegRt IF/ID.RegRd Mux ForwB ALJ ForwA Mux Prosleđivač Memorija podataka EX/MEM.RegRd MEM/WB.RegRd Mux MUX kontrola Izvor Objašnjenje Forward = 00 ID/EX Operand dolazi iz registarskog polja Forward = 10 EX/MEM Operand je rezultat prethodne instrukcije Forward = 01 MEM/WB Operand je rezultat instrukcije druge unazad 52
Pseudo-kod za ispitivanje uslova rizika i generisanje upravljačkih signala za prosleđivanje 1. EX rizik: if ( EX/MEM.RegWrite and (EX/MEM.RegRd 0) and (EX/MEM.RegRd = ID/EX.RegRs) ) ForwardA = 10 if ( EX/MEM.RegWrite and (EX/MEM.RegRd 0) and (EX/MEM.RegRd = ID/EX.RegRt) ) ForwardB = 10 2. MEM rizik: if ( MEM/WB.RegWrite and (MEM/WB RegRd 0) and (MEM/WB.RegRd = ID/EX.RegRs) ) ForwardA = 01 if ( MEM/WB.RegWrite and (MEM/WB RegRd 0) and (MEM/WB.RegRd = ID/EX.RegRt) ) ForwardB = 01 53
Dodatna mogućnost pojave rizika podataka add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Između Rezultata instrukcije u WB segmentu, Rezultata instrukcije u MEM segmentu i... Rs operanda instrukcije u EX segmentu Podatak se prosleđuje iz MEM segmenta, jer je tu najsvežiji Modifikacija uslova if ( MEM/WB.RegWrite and (MEM/WB RegRd 0) and (EX/MEM.RegRd ID/EX.RegRs) and (MEM/WB.RegRd = ID/EX.RegRs) ) ForwardA = 01 if ( MEM/WB.RegWrite and (MEM/WB RegRd 0) and (EX/MEM.RegRd ID/EX.RegRt) and (MEM/WB.RegRd = ID/EX.RegRt) ) ForwardB = 01 54
Rizik podataka i zaustavljanje Vreme takt 1 2 3 4 5 6 7 8 9 lw $2, 20($1) IM Reg ALJ MP Reg and $4, $2, $5 IM Reg ALJ MP Reg or $8, $2, $6 IM Reg ALJ MP Reg add $9, $4, $2 IM Reg ALJ MP Reg slt $1, $6, $7 IM Reg ALJ MP Reg Zadržavanje (stall) je neophodno kada Traženog podatka nema u protočnoj strukturi Jedinica za detekciju rizika, radi u ID segmentu Da li je reč o instrukciji čitanja (lw), koja je trenutno u EX segmentu Da li njena Rt odredišna adresa odgovara bilo kom polaznom registru sledeće instrukcije, koja je trenutno u segmentu ID. if ( ID/EX.MemRead and ((ID/EX.RegRt = IF/ID.RegRs) or (ID/EX.RegRt = IF/ID.RegRt)) ) zadrži_protočnu_strukturu 55
Stall ciklus Vreme takt 1 2 3 4 5 6 7 8 9 10 lw $2, 20($1) IM Reg ALJ MP Reg and postaje nop IM Reg ALJ MP Reg and $4, $2, $5 IM Reg ALJ MP Reg or $8, $2, $6 IM Reg ALJ MP Reg add $9, $4, $2 IM Reg ALJ MP Reg slt $1, $6, $7 IM Reg ALJ MP Reg IF i ID segmenti se zaustavljaju tako što se sprečava promena PC i IF/ID registara, postavljanjem kontrolnog signala za unos (Write) na vrednost 0 Preostala tri segmenta moraju izvršavati NOP instrukciju, koja nema nikakav efekat. To se radi tako što se u ID/EX protočnom registru postavljaju na nulu svi upravljački signali (polja EX, MEM i WB), koji se kasnije prenose do kraja protočne strukture. Ovakva kombinacija onemogućava bilo kakve efekte izvršenja, jer vrednost nula sprečava upis u registarsko polje ili memoriju podataka. 56
57 MIPS-PL sa prosleđivanjem i detekcijom rizika podataka IF/ID Programska memorija PC Registri ALJ Memorija podataka Mux ID/EX EX/MEM MEM/WB IF/ID.RegRd IF/ID.RegRt IF/ID.RegRs Mux Mux Mux Prosleđivač EX/MEM.RegRd ForwA ForwB MEM/WB.RegRd UJ E X M W B M W B W B kop Detektor rizika Mux 0 ID/EX.MemRead Ulaz rd1 rd2 wr PCWrite IF/IDWrite ID/EX.RegRt Rs,Rt
Rizici grananja Adr Vreme takt 1 2 3 4 5 6 7 8 9 40 beq $1, $3, 28 IM Reg ALJ MP Reg 44 and $12, $2, $5 IM Reg ALJ MP Reg 48 or $13, $6, $2 IM Reg ALJ MP Reg 52 add $14, $2, $2 IM Reg ALJ MP Reg 72 lw $4, 50($7) IM Reg ALJ MP Reg Iako se pojavljuje ređe od rizika podataka, rešenja su manje efikasna Kombinuju se dva pristupa Pražnjenje protočne strukture u slučaju grananja Smanjenje "cene" izvršenog skoka 58
Pražnjenje protočne strukture Pretpostavlja se do grananja neće doći Sledeća instrukcija se prihvata i dekodira Ako je uslov grananja ispunjen, ta instrukcija se mora odbaciti Brisanjem upravljačkih signala u sva tri protočna registra Sva tri segmenta (IF, ID i EX) se tako "prazne" (brišu) od instrukcija (flush instruction). 59
Smanjenje "cene" izvršenog skoka Pomeranjem izvršenja grananja ranije u protočnoj strukturi, manje segmenata će biti ispražnjeno Izvršenje grananja podrazumeva Izračunavanje adrese grananja i Proveru uslova grananja To se može izvršiti u ID segmentu (umesto u EX), ako se omogući sabiranje PC i neposrednog operanda iz IF/ID protočnog registra Provera uslova grananja je mnogo teža za realizaciju Upoređenje dva registra iz ID segmenta ($1:$3) nije problem Problem je potencijalna potreba za prosleđivanjem podataka u ID segment, te se postojeća jedinica za prosleđivanje mora modifikovati Takođe, operandi beq instrukcije se porede u ID segmentu, a mogu biti generisani kasnije u vremenu, te je moguć rizik podataka i zaustavljanje protočne strukture Unapređenje ipak, jer se u slučaju izvršenja grananja, odbacuje samo instrukcija koja je trenutno u fazi dobavljanja (u IF segmentu). 60
Konačan izgled MIPS-PL Detektor rizika ID/EX.MemRead ID/EX.RegRt Rs,Rt W B EX/MEM 4 + kop UJ + rd1 rd2 Registri wr Ulaz 0 Mux = M E X Mux Mux ALJ W B M Memorija podataka MEM/WB W B Mux Mux PC Programska memorija <<2 Proš. 16/32 IF.Flush IF/ID IF/ID.RegRs IF/ID.RegRt IF/ID.RegRd ID/EX Mux Prosleđivač EX/MEM.RegRd MEM/WB.RegRd Prikazani su novi elementi Signal IF.Flush koji briše instrukcijsko polje IF/ID registra Deo za proračun adrese grananja i poređenje registara Nije prikazana izmena jedinice za prosleđivanje 61
Izvršenje sekvence iz primera Vreme takt 1 2 3 4 5 6 7 40 beq $1, $3, 28 IM Reg ALJ MP Reg 44 and $12, $2, $5 IM Reg ALJ MP Reg 72 lw $4, 50($7) IM Reg ALJ MP Reg U drugoj periodi takta određuje se da grananja mora biti, pa se: PC puni adresom grananja (dec 72) Polje instrukcije u IF/ID registru se postavlja na 0, tj. tekuća instrukcija pretvara u nop U taktu 3, grananje je izvršeno, a izvršenje nop zadržava protočnu obradu za jedan takt 62
Rukovanje izuzecima... 0x40 sub $11, $2, $4 0x44 and $12, $2, $5 0x48 or $13, $2, $6 0x4C add $1, $2, $1 0x50 slt $15, $6, $7 0x54 lw $16, 50($7)... obrada_izuzetka: 0x80000180 sw $25, 1000($0) 0x80000184 sw $26, 1004($0)... Dodatan oblik rizika kontrole je moguć kod pojave izuzetaka Pretpostavimo da add generiše aritmetičko prekoračenje Ono se detektuje u EX segmentu tokom šeste periode takta Reakcija na izuzetak pretpostavlja Prenos upravljanja rutini za obradu izuzetka, i Sprečavanje upisa netačnog rezultata u registar ili memoriju Pre punjenja adrese rutine za obradu izuzetka, mora se Isprazniti protočna struktura od instrukcija koje slede iza add, i Onemogućiti prenos lošeg rezultata do segmenta WB Prethodne instrukcije (and i or) treba pustiti da se normalno izvrše To se postiže postavljanjem Flush upravljačkih signala na 0 63
MIPS-PL struktura koja podržava izuzetke PCWrite 4 + IF/IDWrite Rs,Rt Detektor rizika ID.Flush UJ + rd1 rd2 wr Ulaz 0 = W B M E X 0 Mux Mux EX.Flush 0 Cause EPC ALJ EX/MEM W B M Memorija podataka MEM/WB W B Mux Mux PC 8000 0180 Programska memorija IF.Flush IF/ID <<2 Proš. 16/32 IF/ID.RegRs IF/ID.RegRt IF/ID.RegRd ID/EX ForwA ForwB Mux Prosleđivač EX/MEM.RegRd MEM/WB.RegRd ID.Flush zajedno sa starim IF.Flush zaustavlja protočnu strukturu EX.Flush obavlja isto u EX i sprečava upis rezultata u WB segmentu PC se puni adresom potprograma za obradu izuzetka (0x80000180) EPC čuva adresu PC + 4; Cause registar čuva uzrok izuzetka. 64
Upravljanje protočnom strukturom Po uočavanju izuzetka, u istom taktu, čuva se adresa iz programskog brojača PC i aktiviraju svi Flush signali. U sledećem taktu ulazi se u stall ciklus, i u njemu se ostaje do pražnjenja poslednjeg segmenta protočne strukture. 65
Hvala na pažnji, bila nam je potrebna! 66