190 likes | 356 Views
Arhitektura ra č unarskih sistema 7 . Procesori Prof. dr Sonja Klenak Literatura: Wiliam Starllings: Organizacija i arhitektura računara , CET, 2006.
E N D
Arhitektura računarskih sistema 7. Procesori Prof. dr Sonja Klenak Literatura: Wiliam Starllings: Organizacija i arhitektura računara, CET, 2006.
Kompanija AMD (Advanced Micro Devices) osnovana je 1. maja 1969. godine i njen tadašnji glavni cilj bio je izgradnja uspešne kompanije za proizvodnju poluprovodnika. Njen osnivač bio je Jerry Sanders sa svojih 7 saradnika. Prvi AMD-ov proizvod (1969.) bio je AMD9300, tzv. „shift registar“1.
Već pete godine poslovanja, AMD je brojao 1500 zaposlenih i tada je proizvodio više od 200 različitih proizvoda. Godišnji profit AMD-a tada je bio oko 26,5 miliona dolara. Godine 1975, AMD postaje poznat po svoja dva proizvoda: svom prvom memorijskom čipu Am9102, kao i procesoru 8080A, koji je predstavljao alternativu Intel-ovom procesoru 8080. Navedeni procesor je bio prvi AMD-ov procesor. Drugi značajni proizvod koji datira iz iste godine jeste familija procesora Am2900, koja pripada „bit-slice“2 familiji procesora. Za potrošače,Am2900 značio je smanjeno zagrijevanje i povećanu brzinu, zahvaljujući bipolarnoj čip tehnologiji. Za programere, ova familija procesora je predstavljala mogućnost pisanja sopstvenih setova instrukcija za aplikacije, kao i značajno povećanje fleksibilnosti programiranja. Te iste, 1975 godine, stopa rasta preduzeća premašila je 60%.
U tom periodu, Flash memorija je počela masovno da se koristi, umesto dotadašnje EEPROM, kao dominantno postojano memorijsko rješenje. Tada je AMD razvio sopstvene algoritme za sigurnije skladištenje podataka.Shift registar je elektronsko kolo koje se sastoji iz serije memorijskih lokacija. Tokom svakog ciklusa časovnika, informacija iz svake lokacije se pomjera (shiftuje) u susednu lokaciju.Bit-slice predstavlja tehniku konstruisanja procesora iz modula, gdje svaki procesira jedno bit-polje, odnosno „slice“ operanda.EEPROM (eng. Electrically Erasable Programmable Read-Only Memory) predstavlja memoriju koju je moguće brisati i reprogramirati.CMOS (eng. Complementary Metal Oxide Semiconductor) je tehnologija za poluprovodničke elementesa veoma malom potrošnjom energije.
2. Arhitektura 32 bitnih procesora2.1. AM486 DX familija procesoraProcesori iz familije procesora AM486DX su 32 bitni, izrađeni u 0.7 mikronskoj tehnologiji i baziraju se na RISC arhitekturi. Njih karakteriše 100 % kompatibilnost sa 386 arhitekturom (tzv. downward compatibility). Navedeni procesori sadrže preko milion tranzistora. Često korišćene instrukcije izvršavaju se u jednom ciklusu. U poređenju sa starijim procesorima, AM486 familiju karakteriše write-back cache. To je metoda keširanja kod koje se promjene u cache-memoriji ne kopiraju u izvor keširanja (primarnu memoriju), sve dok to nije neophodno. Ova metoda se razlikuje od write-through metode kod koje se podaci u primarnu memoriju i L1 cache upisuju istovremeno. Takođe, ova familija procesora sadrži i jedinicu za rad sa operacijama sa pokretnim zarezom. Kod ovih procesora, RISC arhitektura se koristi radi smanjenja broja ciklusa potrebnih za izvršavanje instrukcije.
AM486 procesori mogu da rade u dva režima: real address mode (real mode)i virtualaddress mode (protected mode). U real mode-u, AM486 procesor radi kao veoma brz 8086 procesor. On prvenstveno služi za podešavanje procesora za rad u protected mode-u. Protected mode omogućava upravljanje memorijskim straničenjem (eng. paging).
2.1.1. RegistriTreba napomenuti da AM486 procesori sadrže veliki broj registara koji mogu da se grupišu u nekoliko grupa:- Osnovni registriRegistri opšte namenePokazivač instrukcija (Instruction Pointer)Registri sa flag-ovimaSegmentni registri- System Level registriKontrolni registriRegistri sistemskih adresa- Registri za rad sa operacijama u pokretnom zarezuRegistri podatakaTag WordStatus WordPokazivači na instrukcije i podatke (Instruction And Data Pointers)- Control Word- Debug i Test registri
Postoji osam registara opšte namjene. Oni mogu da skladište adrese ili podatke. Podržavaju operande podataka dužine od 1, 8, 16 ili 32 bita, dužina polja može biti između 1 i 32 bita. Adresni operandi mogu biti 16 ili 32 bita. Registri opšte namjene su: EAX, EBX, ECX, EDX, ESI, EDI,EBP i ESP.Pokazivač instrukcija je 32-bitan registar EIP i on sadrži adresu slijedeće instrukcije koja će biti izvršena. Drugačije se naziva brojač naredbi (Program Counter). Procesorski flag-ovi skladište informacije o pojedinim procesorskim funkcijama. Oni se nalaze u registrima sa flag-ovima. Kod AM486, naziv ovog registra je EFLAGS (sl. 2.1.2). On kontroliše pojedine operacije i informiše o statusu procesora. Registar EFLAGS sadrži i podregistar FLAGS (od 0. do 15. bita) koji se najviše koristi za izvršavanje 8086 i 80286 koda. Ukratko ćemo analizirati pojedine bitove EFLAGS registra.
AC (alignment check, bit 18) omogućava generisanje grešaka pri pozivanju adrese koja nije složena (misaligned). VM (virtual 8086 mode, bit 17), ukoliko se uključi (postavi na vrijednost 1), omogućava 8086 virtuelni režim u Protected Mode-u rada procesora.RM (resume flag, bit 16) se koristi kod breakpoint-a debug registra. Ukoliko se uključi, svaka greška kod debug-ovanja se ignoriše pri izvršavanju slijedeće instrukcije.NT (nested task, bit 14) je flag koji se koristi u Protected Mode-u. On služi kao indikator da li je trenutno izvršavan zadatak povezan sa nekim drugim zadatkom. IOPL (Input/Output Privilege Level, bitovi 13 i 12) pokazuje najveću vrijednost CPL (current privilege level) dozvoljenu za izvršavanje ulazno-izlaznih instrukcija bez generisanja izuzetka broj 13 ili konsultovanja IO Permission Bitmape.OF (overflow flag, bit 11) dobija vrednost 1 ukoliko se umjesto rezultata operacije dobije greška overflow. Do overflow greške može doći, recimo, pri traženju veoma velikog stepena nekog broja.
DF (direction flag, bit 10) definiše da li se ESI i/ili EDI registri inkrementiraju ili dekrementiraju u toku izvršavanja string instrukcija.IF (INTR enable flag, bit 9, kada je uključen, dozvoljava detekciju spoljnih prekida signaliziranih na INTR pinu.TF (trap enable flag, bit 8) kontroliše generalizaciju izuzetka 1 pri debugovanju.SF (sign flag, bit 7) je uključen ako je prvi bit rezultata jedan (ako je rezultat negativan). U protivnom, SF se resetuje.ZF (zero flag, bit 6) ima vrijednost jedan ukoliko su svi bitovi rezultata 0.AF (auxilliary carry flag, bit 4) koristi se radi pojednostavljenja operacija sabiranja i oduzimanja PF (parity flags, bit 2) je uključen ukoliko je poslednjih osam bitova operacije sadržan neparan broj jedinica.CF (carry flag, bit 0) je uključen ako operacija rezultuje sabiranjem ili oduzimanjem u high-order bitu.
Segmentni registri (ima ih 6, to su: CS, SS, DS, ES, FS i GS) skladišti vrijednosti segment selector-a koje identifikuju trenutno adresibilne segmente memorije.System Level registri kontrolišu operacije na on-chip cache memoriji, zatim on-chip jedinici za rad sa pokretnim zarezom, kao i mehanizme za straničenje i segmentaciju.Set registara za rad sa operacijama u pokretnom zarezu (slika 2.1.3) sastoji se od registara podataka, tag word registra, kontrolnog registra, statusnog registra i pokazivača na instrukcije i podatke. Razmotrićemo neke od ovih registara.
Kao što se vidi na slici, postoji 8 registara podataka (od R0 do R7) dužine po 80 bita. Svaki od ovih registara je podijeljen na tri polja: znak (dužine 1 bita), eksponent (15 bitova) i mantisu (64 bita). FPU registrima je moguće pristupiti na dva načina: kao steku ili fiksnom setu registara gdje se instrukcije izvršavaju uz pomoć posebnih registara.
TOP polje statusne riječi identifikuje trenutni registar vrha steka (sl. 2.1.4).
Operacija PUSH dekrementira TOP polje i učitava vrijednost u novi registar na vrhu, a operacija POP sklanja vrijednost sa vrha steka i zatim inkrementira TOP. Tag word obilježava sadržaj svakog numeričkog registra podataka. On prvenstveno služi da optimizuje performanse FPU-a i upravljanja stekom tako što smanjuje razliku između praznih i punih registarskih lokacija. Status word (statusna riječ) je 16-bitni registar koji ima ulogu da prati ukupno stanje rada FPU. Debug registri, kojih ima šest, omogućavaju on-chip podršku za debugovanje. Oni služe za postavljanje breakpoint-a.
2.1.2. Instrukcije • Setovi instrukcija AM486 DX procesora mogu da se podijele u jedanaest kategorija operacija: • Transferi podataka • Aritmetičke • Operacije pomeranja i rotiranja (Shift i Rotate) • Manipulacija sa stringovima • Manipulacija sa bitovima • Kontrolni transferi • Podrška viših programskih jezika • Podrška operativnog sistema • Kontrola procesora • Operacije za rad u pokretnom zarezu • Kontroler operacija za rad u pokretnom zarezu
Instrukcije AM486 procesora mogu da rade sa 0, 1, 2 ili 3 operanda, što u stvari znači da mogu biti nulaadresne, jednoadresne, dvoadresne ili troadresne. Većina nulaadresnih instrukcija je veličine od samo jednog bajta (npr. CLI, STI). Jednoadresne instrukcije obično su dužine 2 bajta, a prosječna veličina instrukcija je 3.2 bajta. Pošto AM486 DX procesori imaju 32 bajtni red čekanja instrukcija, odjednom se u prosjeku može uzeti deset instrukcija. Primjeri opštih instrukcija sa dva operanda su: Register to Register Memory to Register Memory to Memory Immediate to Register Register to Memory Immediate to Memory
3. Arhitektura 64 bitnih procesora Pojava 64 bitnih procesora u svakom slučaju predstavlja svojevrsnu revoluciju u svijetu računarskih tehnologija. Prvi 64-bitni procesor je bio R4000, proizvođača MIPS Technologies, koji datira iz davne 1991. godine. On se koristio za SGI grafičke radne stanice i pokretao je 64-bitni operativni sistem IRIX, zasnovan na UNIX-u. Nakon ovog procesora, kompanije kao što su IBM, SUN i HP, napravile su svoje 64 bitne procesore. Međutim, oni su bili namijenjeni velikim serverskim sistemima. Možemo reći da su 64 bitni procesori počeli masovnije da se proizvode tek kada je Intel 2001. objavio svoj serverski 64 bitni procesor Itanium. Godine 2003, AMD je proizveo procesore Opteron i Athlon 64, koji je već namijenjen za krajnje korisnike. Trenutno je to jedini 64-bitni procesor za krajnje kućne korisnike.
Sada, kada je počeo proces migracije sa 32 bitne na 64 bitnu arhitekturu, susrećemo se sa brojnim problemima. Prvo, većinu operativnih sistema je potrebno modifikovati da bi mogli da upravljaju novom arhitekturom. Zatim, javlja se problem nekompatibilnosti starih, 32 bitnih aplikacija. Ovaj problem je moguće rješiti na dva načina: pomoću režima hardverske kompatibilnosti, što se rešava softverskom emulacijom, ili hardverskom implementacijom 32 bitnog jezgra u 64 bitne procesore. Iako nema sumnje da je primjena 64 bitnih procesora značajna kod 64 bitnih programa koji rade sa velikom količinom podataka (npr. rad sa velikim bazama podataka), još uvijek je diskutabilno da li se 32 bitne aplikacije brže izvršavaju na 32 bitnim procesorima ili na 64 bitnim (pokrenutim u režimu kompatibilnosti).