Transcript Document
Mikroprocesorski sistemi Mikroprocesorska elektronika Osnovi o računarima I poglavlje 1 deo -Opšti principi rada- Računarski sistemi-definicija pojmova Računarski sistemi su mašine koje vrše brzo izračunavanje i čije su akcije upravljane od strane programa Program se sastoji od unapred pripremljene liste instrukcija Softver, hardver, podaci, i komunikacije su komponente koje čine računarski sistem The Big Picture Since 1946 all computers have had 3, 4, 5, or 6 components Memory Control Processor Input Link Datapath CPU Input/Output Output To/from network I/O Komponente računarskog sistema Podaci sa kojima se manipuliše - predstavljaju fundamentalnu prezentaciju činjenica i opservacija. Hardver - obezbedjuje fizičke mehanizme za: i) unošenje (generisanje) podataka iz (ka) spoljnjeg sveta; ii) procesiranje podataka putem izvršenja instrukcija; iii) memorisanje podataka; iv) kopiranje podataka izmedju različitih ulazno-izlaznih uredjaja; v) elektronsko upravljanje različitim ulaznim, izlaznim, i memorijskim komponentama. Komponente računarskog sistema produžetak Softver - čine ga sistemski i aplikacioni programi, a definišu ga instrukcije koje se izvršavaju od strane hardvera. Komunikaciona komponenta - čine je hardver i softver koji obavljaju transport programa i podataka izmedju medjusobno povezanih računara From Components to Applications Highlevel view Circuit designer Logic designer Electronic components Hardware Computer designer System designer Application designer Application domains Software Computer archit ecture Computer organization Subfields or views in computer system engineering Lowlevel view Arhitektura i organizacija računara Pojam arhitektura računara tiče se funkcionalnog ponašanja računarskog sistema i uključuje one atribute sistema koji su vidljivi programeru, tj. atribute koji imaju direktan uticaj na logičko izvršenje programa kao što su: broj bitova koji se koriste za predstavljanje različitih tipova podataka skup instrukcija tehnike za adresiranje memorije ulazno-izlazni (U/I) mehanizmi Arhitektura i organizacija računara (produžetak) Pojam organizacija računara odnosi se na operativne jedinice i njihovo medjusobno povezivanje, tj. detalje koji nisu direktno vidljivi programeru, kakvi su na primer: interfejsi izmedju računara i perifernih uredjaja, taktna frekvencija, tehnologija instalirane memorije, namena i naponski nivoi raznih upravljačkih signala, i dr. Pojam organizacija se alternativno, od strane većeg broja autora, naziva implementacija Arhitektura i organizacija računara (produžetak) U toku svog životnog veka arhitektura računara se ne menja (ne menja se obim podataka, skup instrukcija, adresni načini rada itd.). Kada je arhitektura dobro projektovana, dobro se prilagodjava budućim tehnologijama, a prihvaćena je od strane tržišta, tada ona može da egzistira nekoliko desetina godina (kao na primer PC mašina). Organizacija računara obično pretrpi veći broj promena (promene se gabariti uredjaja, taktna frekvencija rada, tehnologija izrade ploča i modula itd.). What is “Computer Architecture” Computer Architecture = Instruction Set Architecture + Machine Organization + ….. What is “Computer Architecture” ? Application Operating System Compiler Firmware Instr. Set Proc. I/O system Instruction Set Architecture Datapath & Control Digital Design Circuit Design Layout Coordination of many levels of abstraction Under a rapidly changing set of forces Design, Measurement, and Evaluation Analogija sa piano arhitekturom Piano arhitektura se definiše specifikacijom tastature. Tastatura je interfejs ovog muzičkog instrumenta prema korisniku. Tastatura se sastoji od 88 dirki, 36 crnih i 52 belih. Pritiskom na dirku generiše se ton. Note: Uredjenje dirki je identično za sve tipove piana (arhitektura), tako da onaj koji zna da svira na jednom tipu piana zna i na svim ostalim tipovima. (organizacije, tj. implementacije) Implementation Domains An implementation domain is the collection of devices, logic levels, etc. which the designer uses. Possible implementation domains: VLSI on silicon TTL or ECL chips Gallium Arsenide chips PLA’s or sea-of-gates arrays Fluidic logic or optical switches Three Different Implementation Domains 2 to 1 multiplexer in three different implementation domains – generic logic gates (abstract domain) – National Semiconductor FAST Advanced Schottky TTL (VLSI on Si) – Fiber optic directional coupler switch (optical signals in LiNbO3) Hijerarhijska organizacija računara Računar je kompleksan sistem sastavljen od velikog broja elektronskih komponenata. Kako se funkcionisanje računara može najefikasnije opisati i rad sa njim uspešno savladati ? Rešenje se ogleda u hijerarhijskoj organizaciji. Svaki korisnik treba da poznaje detalje koji su njemu od interesa. Hijerarhijska organizacija računara – struktura i funkcija Na svakom nivou projektant se suočava sa : strukturom – ukazuje na medjusobni odnos komponenata funkcijom – opisuje rad svake individualne komponente koja predstavlja deo sistema Hijerarhijska organizacija računara – funkcija Osnovne funkcije koje računar treba da obavi su: obrada podataka memorisanje podataka premeštanje podataka upravljanje Operacije koje obavlja računar Operacije koje obavlja računar – prod. Hijerarhijska organizacija računara – struktura Funkcionalne komponente računara: centralna procesorska jedinica (CPU) glavna memorija ulazno-izlazni podsistem sprežni sistem Globalna struktura računara Osnovi o računarima I poglavlje 2. deo -Jezici i prevodioci- Odnos hardver, sistremski softver i aplikacioni softver kod računara Modern Computer Systems Application S/W Computing Problems Operating System Algorithms And Data Structures Mapping H/W Architecture Programming High-level Languages Binding Performance evaluation Categorization of software with examples in each class Software Application: word processor, spreadsheet, circuit simulator, .. . System Operating system Translator: Manager: Enabler: Coordinator: MIPS assembler, C compiler, .. . virtual memory, security, file system, .. . disk driver, display driver, printing, .. . scheduling, load balancing, diagnostics, .. . Models and abstractions in programming More abstract, machine-independent; easier to write, read, debug, or maintain One task = many statements add add add lw lw sw sw jr One statement = several instructions $2,$5,$5 $2,$2,$2 $2,$4,$2 $15,0($2) $16,4($2) $16,0($2) $15,4($2) $31 Assembler temp=v[i] v[i]=v[i+1] v[i+1]=temp Assembly language instructions, mnemonic Compiler Swap v[i] and v[i+1] High-level language statements Interpreter Very high-level language objectives or tasks More conc rete, machine-specific, error-prone; harder to write, read, debug, or maintain Machine language instructions, binary (hex) 00a51020 00421020 00821020 8c620000 8cf20004 acf20000 ac620004 03e00008 Mostly one-to-one Pascal iskaz preveden u asemlerski jezik, a nakon toga asembliran u mašinski jezik Levels of Representation temp = v[k]; High Level Language Program v[k] = v[k+1]; v[k+1] = temp; Compiler lw $15, lw $16, sw $16, sw $15, Assembly Language Program Assembler Machine Language Program 0000 1010 1100 0101 1001 1111 0110 1000 1100 0101 1010 0000 0($2) 4($2) 0($2) 4($2) 0110 1000 1111 1001 1010 0000 0101 1100 1111 1001 1000 0110 0101 1100 0000 1010 1000 0110 1001 1111 Machine Interpretation Control Signal Specification ° ° ALUOP[0:3] <= InstReg[9:11] & MASK A Programmer’s View • High-level languages versus low-level languages • In C: • result = count1 + count2 + count3 + count4 • In Pentium assembly language: • mov AX,count1 • add AX,count2 • add AX,count3 • add AX,count4 • mov result,AX A Programmer’s View • Some simple high-level language instructions can be expressed by a single assembly instruction • • • • • Assembly Language inc result mov size,45 and mask1,128 add marks,10 C result++; size = 45; mask1 &= 128; marks += 10; A Programmer’s View • Most high-level language instructions need more than one assembly instruction • C Assembly Language • • • • • • • size = value; sum += x + y + z; mov mov mov add add add mov AX,value size,AX AX,sum AX,x AX,y AX,z sum,AX Advantages of High-Level Languages • Program development is faster • High-level instructions – Fewer instructions to code • Program maintenance is easier • For the same reasons as above • Programs are portable • Contain few machine-dependent details – Can be used with little or no modifications on different types of machines • Compiler translates to the target machine language • Assembly language programs are not portable Why Program in Assembly Language? • Two main reasons: – Efficiency • Space-efficiency • Time-efficiency – Accessibility to system hardware • Space-efficiency – Assembly code tends to be compact • Time-efficiency – Assembly language programs tend to run faster • Only a well-written assembly language program runs faster – Easy to write an assembly program that runs slower than its high-level language equivalent Architect’s View Processor Processor (cont.) • Variations of the ISA-level can be implemented by changing the microprogram The build and load process for desktop application programs Object Files Executable Image File Compiler Loader Linker Assembler Run-Time Library: Operating System Image: Boot Process Read-Write Memory (RAM) Hijerarhijska organizacija računara - koncept nivoa Nivo aplikacionog programa Nivo višeg programskog jezika Nivo mašinskog kôda (asemblerski jezik) Upravljački nivo Nivo funkcionalne jedinice Logička kola, tranzistori i veze A Programmer’s View Generacije računarskih jezika Globalno razlikujemo četiri klase računarskih jezika Generacija Opis prva generacija mašinski jezik druga generacija asemblerski jezik treća generacija viši programski jezici (HLL) četvrta generacija novi jezici Evolucija programskih jezika jezik detalji prva generacija mašinski kôd binarni (0,1) i hardversko zavisni druga generacija asemblerski jezik hardversko zavisna prezentacija odgovarajućeg binarnog mašinskog kôda treća generacija jezici visokog nivoa (HLL – High Level Language) / proceduralni jezici jezici visokog nivoa podsećaju na standardne jezičke konstrukcije a prenosivi su, tipični jezici su C, Pascal, ... četvrta generacija jezici veoma visokog nivoa (VHLL – Very High Level Language) / neproceduralni jezici jezici veoma visokog nivoa: objektno orijentisani jezici (C++, Java, ...), jezici za manipulisanje bazama podataka (SQL), ... peta generacija prirodni jezici programiranje je slično konverzacionim jezicima, obično se koriste kod veštačke inteligencije (AI), još su u fazi razvoja Prva generacija – mašinski jezik Karakteristike: svaka instrukcija, na hardverskom nivou, direktno upravlja radom mašine, tj. pojedinim gradivnim blokovima. instrukcije su numeričke, predstavljene u formi binarnih oblika od 0 i 1 programiranje je naporno i podložno velikom broju grešaka efikasnost programiranja je niska programi nerazumljivi korisniku direktno se pristupa resursima mašine veća brzina izvršenja programa efikasnije korišćenje memorije Druga generacija – asemblerski jezik Karakteristike: svaka instrukcija se predstavlja mnemonikom, kao na primer ADD korespondencija izmedju asemblerskih i mašinskih instrukcija je jedan-na-prema-jedan postoje i direktive koje nemaju izvršno dejstvo, ali programu na asemblerskom jeziku olakšavaju prevodjenje, dodelu memorije i segmentaciju programa direktno se pristupa resursima mašine veća brzina izvršenja programa efikasnije korišćenje memorije Treća generacija – HLL Karakteristike: kompajler prevodi programske iskaze u odgovarajuće sekvence instrukcija na mašinskom nivou u principu jedan iskaz na HLL-u (High Level Language) se prevodi u n (n >= 1) instrukcija na mašinskom (asemblerskom) jeziku programiranje je jednostavnije efikasnost je veća ispravljanje grešaka lakše nema direktni pristup resursima mašine neefikasno iskorišćenje memorije duži programi Četvrta generacija – novi jezici Novi tipovi računarskih jezika se karakterišu sledećim osobinama: implementiraju veštačku inteligenciju (primer je LISP) jezici za pristup bazama podataka (primer je SQL) objektno-orijentisani jezici (primeri su C++, Java i dr.) Mehanizmi za prevodjenje sa HLL-a na mašinski kôd kompilacija – kompilator je program koji na svom ulazu prihvata program napisan na nekom od programskih jezika nazvan izvorni program, a na svom izlazu generiše ekvivalentan program na mašinskom kôdu nazvan objektni program, tj. program u formi mašinskog kôda koji se može direktno izvršavati od strane hardvera računara Generisanje programa od kompilacije do loadovanja HLL kôd kompajler asemblerski kôd kompajler asemblerski kôd linker izvršenje loader izvršivi binarni kôd A Programmer’s View Ciklus kompilacije Objektni program koji se generiše na izlazu kompilatora upisuje se u sekundarnu memoriju Korisnički program poznat kao punilac (loader) smešta program iz sekundarne meorije u glavnu čime je objektni program spreman za izvršenje Proces kompilacije Proces kompilacije se može podeliti na dva glavna dela: analiza izvornog programa sinteza objektnog programa Interpretacija Interpreter uzima jednu instrukciju iz programa PH, analizira je i uslovljava da se sa istim efektom izvrši niz instrukcija sa nivoa LL. Ovaj proces se nastavlja sve dok se ne izvrši kompletan program Interpretacija - prednosti i nedostaci Prednost interpeterskog mehanizma konverzije je ta što je interpreter relativno mali i što se u odnosu na kompilator lakše imlementira na nivou mašine. Nedostatak je taj što je izvršenje izvornih programa postupkom interpetacije sporije u odnosu na kompilovane programe. Razlika u brzini izvršenja je reda 10. Kombinovanje interpetacije i kompilacije Kombinovani mehanizam kompilacija-interpretacija koristi među-jezik LI, koji se nalazi izme|u nivoa LL i LH. Program PH, napisan na jeziku LH, kompajlira se u program PI na jeziku LI. Program PI se zatim intepretira na nivou LL pomoću interpretera Prednost ove metode ogleda se u boljoj prenosivosti programa, kao i u tome što se zadržavaju ostale dobre osobine tehnika kompilacije i interpretacije Proces kompilacije za Java aplete Dodatne informacije o kompilaciji Translation Hierarchy Compiler Phase Intermediate Code Generation Preview: Code Optimisation Code Optimisation Optimizing Compilers Limitations of Optimizing Compilers Constant Folding Constant Propagation Constant Propagation – cont. Reduction in Strenght Reduction in Strenght – cont. Common Sub-Expression Elimination Common Sub-Expression Elimination – cont. Induction Variable Elimination Register Allocation & Assignement Assembly Code Generation Assembler Pseudoinstructions Object File Linker Loader Osnovi o računarima I poglavlje 3. deo -Tipičan računarski sistem – Tipičan računarski sistem flopi disk (floppy disk) CD-ROM komunikacioni interfejs kruti disk (hard disk) CPU memorija tastatura (keyboard) U/I interfejs štampač (printer) računar zvučnik (speaker) monitor jedinica trake (tape unit) miš (mouse) Packaging of processor, memory, and other components Backplane Die PC board Interlayer connections deposited on the outside of the stack Bus CPU Connector Memory (a) 2D or 2.5D packaging now common Stacked layers glued together (b) 3D packaging of the future Trends in processor performance and DRAM memory chip capacity (Moore’s law) TIPS Tb Processor performance 1.6 / yr 2 / 18 mos 10 / 5 yrs Memory GIPS 80486 R10000 Pentium II Pentium 256Mb 68040 64Mb Gb 1Gb 16Mb 80386 68000 MIPS 80286 4Mb 1Mb 256kb Mb 4 / 3 yrs 64kb kIPS 1980 1990 2000 Calendar year kb 2010 Memory chip capacity Processor Magnetic and optical memory units Typically 2-9 cm Floppy disk . . . .. (a) Cutaway view of a hard disk drive CD-ROM .. . Magnetic tape cartridge (b) Some removable storage media Hardverske komponente računarskog sistema Hardversku organizaciju računarskog sistema čine sledeća četiri podsistema: Memory magistrala (link) CPU ulazno-izlazni podsistem memorijski podsistem Control Processor Input Link Datapath CPU Input/Output Output To/from network I/O Hardverske komponente -magistrala Magistrala predstavlja skup veza (linija) po kojima se u paralelnoj formi prenose signali i napajanje. obezbedjuje put preko koga sastavni delovi sistema mogu komunicirati. može biti jednosmerna ili dvosmerna trostatička magistrala – označava da svaka linija može biti u stanju 0, 1, ili isključeno svakom magistralom mogu se prenositi tri/četiri grupe signala: podaci adrese upravljački signali takt i napajanje Buses as Multiplexers Interconnections are very important to computer Most connections are shared A bus is a time-shared connection or multiplexer A bus provides a data path and control Buses may be serial, parallel, or a combination Serial buses transmit one bit at a time Parallel buses transmit many bits simultaneously on many wires Hardverska organizacija jednog tipičnog računarskog sistema sa aspekta magistrala CPU registarsko polje PC ALU sistemska magistrala memorijska magistrala Interfejs magistrale U/I most Glavna memorija U/I magistrala USB kontroler miš tastatura Grafički adapter kontroler diska slotovi proširenja za druge uređaje kakvi su mrežni adapteri displej Disk zdravo izvršivi fajl smešten na disku One and Two Bus Architecture Examples Tipične magistrale kod jednog računarskog sistema Hardverske komponente- ulazno-izlazni podsistem Ulazno izlazni podsistem čine ulazno-izlazni uredjaji koji povezuju računar sa spoljnim svetom. Kod tipičnih sistema U/I podsistem čine sledeći U/I uredjaji: tastatura i miš - unos podataka i komandi od strane korisnika displej - izlaz za korisnika disk - dugoročno memorisnje podataka i programa Ulazno-izlazni uredjaji Svaki U/I uredjaj je povezan na U/I magistralu preko kontrolera ili adaptera Kontroleri su čip-setovi (jedinstveno ili skup integrisanih kola) koji su locirani na glavnoj sistemskoj ploči (često nazvanoj motherboard) Adapter je kartica koja se smešta u slot na sistemskoj ploči. Obično na svaki U/I kontroler ili adapter moguće je povezati više od jednog uredjaja ili tzv. periferala Ulazno-izlazni uredjaji - interfejsi U/I interfejsi ne predstavljaju samo mehaničke konektore koji povezuju periferal na U/I magistralu, nego sadrže i odredjeni iznos "inteligencije" U/I periferali ne povezuju direktno na magistralu iz sledećih razloga : postoji širok dijapazon periferala koji se razlikuju po načinu rada brzina prenosa podataka koja karakteriše periferale je često sporija u odnosu na brzinu prenosa podataka izmedju memorije i CPU-a periferali često koriste različite formate podataka i obim reči u odnosu na računar na koji se priključuju Hardverske komponente - CPU Centralna procesorska jedinica – CPU ili jednostavno rečeno procesor je mašina koja interpretira (ili izvršava) instrukcije smeštene u glavnoj memoriji CPU se može podeliti na sledeće gradivne blokove: programsko-upravljačka jedinica (control unit) staza podataka (datapath) – sadrži sledeće gradivne blokove: izvršne jedinice kakve su ALU, množači, pomerači itd. registre opšte namene vidljive korisniku (R0 ... Rn), programski brojač (PC), programsko statusni registar (PSW), instrukcioni registar (IR), i td. Osnovi o računarima I poglavlje 4. deo -Principi rada CPU-a – Princip rada CPU-a – osnovni koraci čita instrukciju iz glavne memorije na koju pokazuje PC, interpretira bitove instrukcija, obavlja neku jednostavnu operaciju diktiranu od strane instrukcije, i ažurira PC da bi ukazao na narednu instrukciju, koja može, ali ne mora biti kao naredna u memoriji u odnosu na instrukciju, koja se tekuće izvršava. Operacije koje obavlja CPU Neke od jednostavnih aktivnosti koje CPU obavlja po nalogu instrukcije su sledeće: punjenje (load) pamćenje (store) ažuriranje (update) U/I čitanje (I/O read) U/I upis (I/O write) grananje (jump) Osnovi o računarima I poglavlje 5. deo -Memorija – Hardverske komponente - memorija Memorija – koristi se za čuvanje programa, konstanti, medjurezultata, i rezultata izračunavanja. Postoji razlika u brzini rada procesora sa jedne i memorije sa druge strane koju projektanti teže da reše odgovarajućom hijerarhijskom organizacijom Jedan tipični računarski sistem sadr`i nekoliko tipova memorije, počev od brzih i skupih internih registara pa sve do sporih i jeftinih prenosivih diskova i traka CPU C ache M e m or y T ape M ain M e mory Disk M e mory M e m or y Hijerarhijska organizacija memorije Memorijske komponente u okviru računarskog sistema su hijerarhijski organizovane L0: registri Manji, brži i skuplji (po bajtu) uređaj za memorisanje L1: On-chip L1 keš (SRAM) CPU-ovi registri čuvaju reči podataka iz keš memorije. L1 keš čuva keš linije izbavljene iz L2 keša. L2: On-chip L2 keš (SRAM) L2 keš čuva keš linije izbavljene iz glavne memorije. L3: Veći, sporiji I jeftiniji (po bajtu) uređaj za memorisanje Glavna memorija DRAM Glavna memorija čuva disk blokove podataka izbavljene sa lokalnih diskova. L4: Lokalna sekundarna memorija (lokalni diskovi) Lokalni diskovi čuvaju fajlove izbavljene sa diskova od udaljenih mrežnih servera. L5: Udaljena sekundarna memorija (distribuirani fajl sistemi, Web serveri) Memorijski sistem - karakteristike med.mem tACC BW (B/s) kapacitet obim bloka upravljanje tehno registri CPU-a 200 ps-1 ns 0.5–60 GB/s 256 B – 1 kB reč 2 ili 4 B CPU CMOS SRAM L1 keš memorija 5 – 10 ns 0.1-0.8 GB/s 16 – 64 kB linija 4 – 32 B primarni keš kontroler CMOS SRAM L2 keš memorija 15 –40 ns 0.1-0.3 GB/s 128 kB – 1GB linija 4 – 128 B sekundarni keš kontroler CMOS SRAM glavna memorija-GM 50 – 100 ns 20-80 MB/s 256 MB – 1GB stranica 4 kB MMU CMOS DRAM slotovi proširenja GM 75 – 500 ns 800 kB/s300 MB/s 1 – 10 GB stranica 4 kB MMU CMOS DRAM disk keš 60 – 500 ns 900 kB/s30MB/s 1 – 10 MB stranica 4 kB kontroler uredjaja CMOS DRAM kruti disk 5 – 50 ms 12006000 kB/s 100 – 500 GB fajlovi obima MB kontroler uredjaja magnetni medijum flopi disk 95 ms 100200 kB/s 1.44 MB fajlovi obima kB kontroler uredjaja magnetni medijum CD-ROM 100 – 500 ms 5004000 kB/s 600 MB–20 GB fajlovi obima MB kontroler uredjaja optički zapis trake (cartrige) 0.5 s pa naviše 2000 kB/s 1 – 10 TB fajlovi obima MB kontroler uredjaja magnetni medijum Osnovne karakteristike glavne memorije Glavna memorija – često se naziva primarna ili radna memorija, koristi se za čuvanje programa i podataka kojima se pristupa od strane CPU-a Obim podatka (reči) koji se čuva u memoriji odgovara obimu magistrale Kapacitet glavne memorije odredjuje maksimalni broj instrukcijskih re~i i re~i podataka koje se mogu istovremeno napuniti (~uvati) u memoriju Sekundarna memorija čine je uredjaji za masovno memorisanje kakvi su kruti diskovi, trake, CD, i dr. koristi ne-nestalan (non-volatile) tip memorisanja – informacija se ne gubi nakon isključenja napajanja karakteriše je veliki kapacitet Keš memorija Princip rada keša se zasniva na lokalnosti- koja može biti: vremenska lokalnost prostorna lokalnost Keš kontroler posreduje izmedju CPU-a i memorijskog sistema koga čine keš i glavna memorija. podaci adrese CPU keš podaci kontroler keš adrese podaci glavna memorija Princip rada keš memorije Keš kontroler predaje zahtev za ~itanje memorije prema kešu i glavnoj memoriji. Ako se sadr`aj zahtevane lokacije nalazi u kešu, keš kontroler prosledjuje taj sadr`aj CPU-u i ukida zahtev prema glavnoj memoriji. Ovaj uslov se naziva keš pogodak (cache hit). U slu~aju kada lokacija kojoj se obra}amo nije prisutna u kešu, prvo se kreira slobodna lokacija u kešu pa se referencirana re~ iz glavne memorije dobavlja prvo u keš, a zatim se iz keša dostavlja CPU-u. Ova situacija se naziva keš promašaj (cache miss). Nivoi keš memorije Kod savremenih ra~unarskih sistema postoje nekoliko nivoa keša, poznatih kao nivo L1, nivo L2, a u odredjenim slu~ajevima i nivo L3. CPU čip Registarsko polje L1 keš (SRAM) ALU Sistemska magistrala Memorijska magistrala L2 keš (SRAM) Interfejs magistrale U/I most Glavna memorija (DRAM) Osnovi o računarima I poglavlje 6. deo -Softverske komponente – Softverska komponenta Pored hardvera ra~unarskom sistemu je potreban i softver. Softver ~ine programi koji ukazuju ra~unaru šta da radi Postoje dve glavne kategorije softvera: sistemski softver aplikacioni softver Sistemski softver nam omogu}ava da manipulišemo fajlovima, punimo i izvršavamo programe, i prihvatamo podatke sa miša i tastature Sistemsko-softverski programi koji upravljaju računarom nazivaju se operativni sistem Aplikacioni softver čine programi, kakvi su Microsoft Word, Netscape, ili programi koje je korisnik kreirao, a karakteristični su po tome što izvršavaju specifi~ne zahteve korisnika Pojednostavljeni operativni sistem korisnik aplikacioni program korisnički interfejs aplikaciono programski interfejs sistem za upravljanje fajlovima U/I drajveri hardver kernel mrežni modul mreža Osnovi o računarima I poglavlje 7. deo -Komunikacione komponente– Komunikaciona komponenta Veliki broj savremenih ra~unara danas ne radi samostalno. Umesto toga oni se povezuju sa drugim ra~unarima preko mre`nog adaptera na mre`u CPU Registarsko polje PC ALU Sistemska magistrala Memorijska magistrala Interfejs magistrale U/I most Glavna memorija Slotovi proširenja U/I magistrala USB kontroler miš tastatura Grafički adapter Kontroler diska Mrežni adapter displej Mreža Disk Osnovi o računarima I poglavlje 8. deo -Evolucija i klasifikacija– generacija period Evolucija prva 1946-1956 arhitekture računara druga 1956-1967 treća 1967-1978 četvrta 1978-1989 peta 1990danas tehnologija i arhitektura vakuumske cevi i relei kao memorijski elementi, jedno-bitni CPU sa akumulatorsko baziranim skupom instrukcija diskretni tranzistori, mamorijska jezgra, akceleratori za rad sa brojevima pokretnog zareza, U/I kanali integrisana kola, protočno organizovan CPU, mikroprogramsko upravljanje softver i operativni sistem reprezentati vni sistemi mašinsko/asemblerski jezici, programi bez potprograma ENIAC, IBM 701, Princeton IAS Algol i Fortran sa kompajlerima, batch operativni sistem IBM 7030, CDC 1604, Univac LARC C jezik, multiprogramiranje, time-scharing operativni sistem PDP 11, IBM 360/370, CDC 6600 VLSI mikroprocesori, poluprovodničke memorije, multiprocesori, vektor procesori simetrično multiprocesiranje, paralelni kompajleri, message-passing biblioteke ULSI kola, skalabilni paralelni računari, cluster računari, Intranet i Internet Java, mikrokarneli, multithreading, distribuirani operativni sistem, World Wide Web IBM PC, VAX 9000, Cray X/MP IBM SP2, SGI Origin 2000, Digital TruCluster Klasifikacija računarskih arhitektura Klasifikovati objekte koji se u vremenu dinami~ki menjaju veoma je te`ak posao jer uklju~uje predvidjanje pravaca razvoja ovih objekata u budu}nosti. Klasifikacija zahteva pa`ljivo prou~avanje i najsitnijih detalja kao i sagledavanje svih aspekata na osnovu kojih je mogu}e ustanoviti kriterijume za klasifikaciju. Kada se govori o ra~unarima, njihov izbor na svetskom tr`ištu danas je tako veliki da je ponekad veoma teško uo~iti one elemente koji su zajedni~ki za ve}i broj ra~unara, kao i one koji ih ~ine razli~itim. Spektar računarskih sistema Computer Analog Digital Fixed-function Stored-program Electronic General-purpose Number cruncher Nonelectronic Special-purpose Data manipulator Klasifikacione šeme Analiziraćemo tri klasifikacione šeme: Prva, razliku izme|u ra~unara prave na osnovu fizi~kog obima, kapaciteta i performansi, Druga, se zasniva na identifikaciji dva razli~ita nezavisna koncepta: toka instrukcija i toka podataka. Tre}a pravi razliku u obimu obrade koja se, kod izvršenja programa napisanih na nekom od viših programskih jezika, obavlja od strane hardvera ili softvera. Prva klasifikaciona šema Medju in`enjerima, proizvodja~ima i korisnicima ra~unara standardizovano je grupisanje ra~unara u pet glavnih klasa: mikroračunari miniračunari super-miniračunari veliki računari super-računari Classifying computers by computational power and price range (dollars) Super $Millions Mainframe $100s Ks Server Differences in scale, not in substance Workstation Personal Embedded $10s Ks $1000s $100s $10s Embedded computers Impact sensors Brakes Airbags Engine Cent ral controller Navigation & entert ainment Embedded computers are ubiquitous, yet invisible. They are found in our automobiles, appliances, and many other places. Druga klasifikaciona (Fllyn-ova) šema Zasniva na identifikaciji dva nezavisna koncepta: toka podataka – definiše se kao sekvenca podataka koji se pozivaju od strane toka instrukcija (uključujući ulazne podatke i privremene podatke) toka instrukcija – se definiše kao sekvenca instrukcija koja se obavlja od strane računara Postoje četiri klase računara: SISD SIMD MISD MIMD jednostruki tok podataka višestruki tok podataka jednostruki tok instrukcija SISD SIMD višestruki tok instrukcija MISD MIMD SISD, SIMD, MISD i MIMD SISD - jedinstveni tok instrukcija - jedinstveni tok podataka (Single Instruction stream Single Data stream) klasu računara čine konvencionalne von Neumann-ove arhitekture. Kod ovih računara u jednom trenutku procesira se samo jedna instrukcija koja operiše nad jedinstvenim tokom podataka, operanada i rezultata. SIMD - jedinstveni tok instrukcija i višestruki tok podataka (Single Instruction stream Multiple Data stream). Kod ovih računara jednom instrukcijom simultano se operiše nad nekoliko elemenata podataka. MISD - višestruki tok instrukcija i jedinstveni tok podataka (Multiple Instruction stream Single Data stream). Kod ove klase računara nad jedinstvenim podacima operiše se od strane većeg broja instrukcija. MIMD - višestruki tok instrukcija višestruki tok podataka (Multiple Instruction stream Multiple Data stream). Ova klasa ra~unara je veoma široka jer pokriva sve multiprocesorske i multikompjuterske sisteme, tj. sisteme sa privatnom ili deljivom memorijom, slabo, umereno ili čvrsto spregnute sisteme itd. MIMD MISD SIMD Treća klasifikaciona šema Ovaj kriterijum za klasifikaciju arhitektura bazira se na iznosu obrade koji se, kod izvršenja HLL programa, obavlja od strane softvera ili hardvera Appendix A Digitalna logička kola Register transfers can be mapped to Digital Logic Circuits Implementing the RTN statement A B Multiple Bit Register Transfer Implementing Am..1 Bm..1 Data Transmission View of Logic Gates Logic gates can be used to control the transmission of data: Multiplexer as a 2 Way Gated Merge Data from multiple sources can be selected for transmission m-bit Multiplexer and Symbol Multiplexer gate signals Gi may be produced by a binary to one-out-of-n decoder Separating Merged Data Merged data can be separated by gating at the right time It can also be strobed into a flip-flop when valid Multiplexed Register Transfers using Gates and Strobes Selected gate and strobe determine which Register is Transferred to where. AC, and BC can occur together, but not AC, and BD Open-Collector NAND Gate Output Circuit Wired AND Connection of Open-Collector Gates Open Collector Wired OR Bus DeMorgan’s OR by not of AND of nots Pull-up resistor removed from each gate - open collector One pull-up resistor for whole bus Forms an OR distributed over the connection Tri-state Gate Internal Structure and Symbol Registers Connected by a Tri-state Bus Can make any register transfer R[i] R[j] Can’t have Gi = Gj = 1 for i≠j Violating this constraint gives low resistance path from power supply to ground—with predictable results! Registers and Arithmetic Connected by One Bus Example Abstract RTN R[3] R[1]+R[2]; Concrete RTN Y R[2]; Z R[1]+Y; R[3] Z; Combinational Logic—no memory Control Sequence R[2]out, Yin; R[1]out, Zin; Zout, R[3]in; Notice that what could be described in one step in the abstract RTN took three steps on this particular hardware Timing of the Register Transfers Discuss: difference between gating signals and strobing signals Discuss factors influencing minimum clock period. Principles of Computer Architecture Arithmetic Ripple Carry Adder Two binary numbers A and B are added from right to left, creating a sum and a carry at the outputs of each full adder for each bit position. Constructing Larger Adders A 16-bit adder can be made up of a cascade of four 4-bit ripplecarry adders. Full Subtractor Truth table and schematic symbol for a ripple-borrow subtractor : Ripple-Borrow Subtractor A ripple-borrow subtractor can be composed of a cascade of full subtractors. Two binary numbers A and B are subtracted from right to left, creating a difference and a borrow at the outputs of each full subtractor for each bit position. Combined Adder/Subtractor A single ripple-carry adder can perform both addition and subtraction, by forming the two’s complement negative for B when subtracting. (Note that +1 is added at c0 for two’s complement.) Multiplication Example Multiplication of two 4-bit unsigned binary integers produces an 8-bit result. Multiplication of two 4-bit signed binary integers produces only a 7-bit result (each operand reduces to a sign bit and a 3-bit magnitude for each operand, producing a sign-bit and a 6-bit result). A Serial Multiplier Example of Multiplication Using Serial Multiplier Example of Base 2 Division (7 / 3 = 2)10 with a remainder R of 1. Equivalently, (0111/ 11 = 10)2 with a remainder R of 1. Serial Divider Division Example Using Serial Divider Multiplication of Signed Integers Sign extension to the target word size is needed for the negative operand(s). A target word size of 8 bits is used here for two 4-bit signed operands, but only a 7-bit target word size is needed for the result. Carry-Lookahead Addition Carries are represented in terms of Gi (generate) and Pi (propagate) expressions. Gi = aibi and Pi = ai + bi c0 = 0 c1 = G0 c2 = G1 + P1G0 c3 = G2 + P2G1 + P2P1G0 c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 Carry Lookahead Adder Maximum gate delay for the carry generation is only 3. The full adders introduce two more gate delays. Worst case path is 5 gate delays. The Booth Algorithm Booth multiplication reduces the number of additions for intermediate results, but can sometimes make it worse as we will see. Positive and negative numbers treated alike. A Worst Case Booth Example A worst case situation in which the simple Booth algorithm requires twice as many additions as serial multiplication. Bit-Pair Recoding (Modified Booth Algorithm) Coding of Bit Pairs Parallel Pipelined Array Multiplier Addition Example Using BCD Addition is performed digit by digit (not bit by bit), in 4-bit groups, from right to left. Example (255 + 63 = 318)10: Subtraction Example Using BCD Subtraction is carried out by adding the ten’s complement negative of the subtrahend to the minuend. Ten’s complement negative of subtrahend is obtained by adding 1 to the nine’s complement negative of the subtrahend. Consider performing the subtraction operation (255 - 63 = 192)10: Excess 3 Encoding of BCD Digits Using an excess 3 encoding for each BCD digit, the leftmost bit indicates the sign. A BCD Full Adder Circuit adds two base 10 digits represented in BCD. Adding 5 and 7 (0101 and 0111) results in 12 (0010 with a carry of 1, and not 1100, which is the binary representation of 1210). Ten’s Complement Subtraction Compare: the traditional signed magnitude approach for adding decimal numbers vs. the ten’s complement approach, for (21 - 34 = -13)10: BCD Floating Point Representation Consider a base 10 floating point representation with a two digit signed magnitude exponent and an eight digit signed magnitude fraction. On a calculator, a sample entry might look like: -.37100000 10-12 We use a ten’s complement representation for the exponent, and a base 10 signed magnitude representation for the fraction. A separate sign bit is maintained for the fraction, so that each digit can take on any of the 10 values 0–9 (except for the first digit, which cannot be zero). We should also represent the exponent in excess 50 (placing the representation for 0 in the middle of the exponents, which range from -50 to +49) to make comparisons easier. The example above now looks like this (see next slide): BCD Floating Point Arithmetic The example in the previous slide looks like this: Sign bit: 1 Exponent: 0110 1011 Fraction: 0110 1010 0100 0011 0011 0011 0011 0011 0011 Note that the representation is still in excess 3 binary form, with a two digit excess 50 exponent. To add two numbers in this representation, as for a base 2 floating point representation, we start by adjusting the exponent and fraction of the smaller operand until the exponents of both operands are the same. After adjusting the smaller fraction, we convert either or both operands from signed magnitude to ten’s complement according to whether we are adding or subtracting, and whether the operands are positive or negative, and then perform the addition or subtraction operation. 16-bit Group Carry Lookahead Adder A16-bit GCLA is composed of four 4-bit CLAs, with additional logic that generates the carries between the fourbit groups. GG0 = G3 + P3G2 + P3P2G1 + P3P2P1G0 GP0 = P3P2P1P0 c4 = GG0 + GP0c0 c8 = GG1 + GP1c4 = GG1 + GP1GG0 + GP1GP0c0 c12 = GG2 + GP2c8 = GG2 + GP2GG1 + GP2GP1GG0 + GP2GP1GP0c0 c16 = GG3 + GP3c12 = GG3 + GP3GG2 + GP3GP2GG1 + GP3GP2GP1GG0 + GP3GP2GP1GP0c0 A Programmer’s View