1 / 60

KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS

KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS. Doc. Stasys Maciulevičius Kompiuterių katedra stama@ifko.ktu.lt. Ant rosios paskaitos santrauka. kompiuterių našum as į vertinimo principai kompiuterių našumo įvertinimo testai duomenų kodavimas sveikieji skaičiai

cyrah
Download Presentation

KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS

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. KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS Doc. Stasys Maciulevičius Kompiuterių katedra stama@ifko.ktu.lt

  2. Antrosios paskaitos santrauka • kompiuterių našumas • įvertinimo principai • kompiuterių našumo įvertinimo testai • duomenų kodavimas • sveikieji skaičiai • slankaus kablelio skaičiai; standartas IEEE 754 • dešimtainiai skaičiai • simbolių kodavimas

  3. Trečiosios paskaitos turinys • komandų sistema • pagrindiniai komandųsistemų tipai • bendrosios paskirties registrų tipo architektūra • komandų formatai • operandų adresavimo būdai • komandų formatų pavyzdžiai • CISC ir RISC • konvejeris • konvejerio esmė • kliūtys konvejeryje

  4. KOMANDŲ SISTEMA

  5. Programuotojo požiūris į skaičiavimus Taikomieji uždaviniai Nuo mašinos nepriklausoma Aukšto lygmens kalba Asemblerio kalba Nuo mašinos priklausoma Žemo lygmens kalbos Mašinos kalba Kompiuterio techninė įranga

  6. Programos pavyzdys Aukšto lygmens programavimo kalba išraiška užrašoma paprastai, pavyzdžiui: A = B + C  D – E + F + A; Asembleriu ta pati išraiška užrašoma išskaidyta į smulkesnius veiksmus, pavyzdžiui: operacijos mnemonika Komanda kommentaras mult T,C,D; T = CD add T,T,B; T = B+CD sub T,T,E; T = B+CD-E add T,T,F; T = B+CD-E+F add A,T,A; A = B+CD-E+F+A rezultatas operandai

  7. Komandų sistema Skaičiavimams reikalingą operacijų rinkinį kompiuteryje realizuoja komandų sistema, kurioje vieną operaciją gali atitikti ir kelios komandos, besiskiriančios operandų tipais, adresacijos būdais ir pan. Daugumos kompiuterių komandų sistemos apima tokias komandų grupes:

  8. Komandų sistema • Duomenų persiuntimo (registrų įkrovimas, įrašymas į atmintį) • Aritmetinės ir loginės(sveikųjų skaičių: +, -, *, /; loginės: IR, ARBA, ...) • Slankaus kablelio (slankaus kablelio skaičių: +, -, *, /) • Dešimtainės(dešimtainių skaičių: +, -, *, /) • Valdymo (perėjimai, procedūrų iškvietimas ir grįžimas, ciklai) • Eilučių apdorojimo(eilučių persiuntimas, palyginimas, paieška) • Sisteminės (OS iškvietimas, virtualios atminties valdymas)

  9. Pagrindiniai komandų sistemų tipai Nagrinėjant komandų sistemas, galima išskirti 5 požymius,pagal kuriuos būtų galima jas klasifikuoti: 1) Operando saugojimas CPU: kur dar (be atminties) saugomi operandai? 2) Komandoje aiškiai nurodomų operandų skaičius. 3) Operandų vieta: ar aritmetinių ir loginių komandų operandai gali būti atmintyje, ar visi operandai turi būti CPU viduje (registruose)? Jei operandai yra atmintyje, tai kaip nurodoma jų vieta? 4) Operandų tipas ir dydis: kokie ir kaip jie nurodomi? 5)Operacijos: kokios operacijos įeina į komandų sistemą?

  10. Pagrindiniai komandų sistemų tipai Vidinės CPU atminties tipas yra pagrindinis skiriamasis požymis. Čia yra 3 alternatyvos: 1) stekas, 2) akumuliatorius, 3) registrų grupė. Stekas – specialiai suprojektuota atmintis, į kurią informacija įrašoma nuosekliai, iš jos informacija perskaitoma taip pat tik nuosekliai. Informacijos vietą steke rodo steko rodyklė (stack pointer)

  11. SR SR ALU Steko tipo architektūra Procesorius Procesorius Stekas: operandai saugomi steke, rezultatas - taip pat, operandų išrinkimas ir įrašymas - procedūros push, pop Stekas SR ALU push pop SR – steko rodyklė ALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit) Atmintis Atmintis

  12. Pagrindiniai komandų sistemų tipai Akumuliatorius: vienas iš operandų saugomas akumuliatoriuje, rezultatas - taip pat, operandų išrinkimas ir įrašymas - load, store. Pavyzdžiai: PDP-8,Motorola 6809 Kai kuriuose procesoriuose (pvz., Intel 8080) tai vienas iš registrų

  13. Procesorius Procesorius SR SR AC ALU ALU store load Atmintis Atmintis Akumuliatoriaus tipo architektūra Akumuliatorius: specialus registras (kaupiantysis registras), į kurią informacija įrašoma prieš operaciją; iš jo rezultatai grąžinami į atmintį AC – akumuliatorius

  14. Pagrindiniai komandų sistemų tipai Registrų grupė: operandai saugomi registruose, rezultatas - taip pat, operandų išrinkimas irįrašymas - load, store. Pavyzdžiai: IBM 370, DEC VAX, PowerPC Galimi du atvejai: • Registre privalo būti tik vienas iš operandų • Registruose privalo būti abu operandai

  15. Procesorius Rk SR SR Ri ALU ALU store load Atmintis Atmintis Reg-Atm tipo architektūra Registrų failas: 8-16-32-…- registrų grupė procesoriuje, į kuriuos vienas iš operandų įrašomas prieš operaciją Ri, Rk – registrai

  16. Procesorius Procesorius Rk SR Rj SR Ri ALU ALU store load Atmintis Atmintis load-store tipo architektūra Ri, Rj,Rk – registrai Abu operandai prieš aritmetinę ar loginę operacija turi būti įkelti į registrus

  17. Pagrindiniai komandų sistemų tipai Operatorius C := A + B šiose keturiose klasėse realizuojamas tokiomis komandų sekomis: Steko Akumuliatoriaus Reg-Atm load-store PUSH A LOAD A LOAD R1, A LOAD R1, A PUSH B ADD B ADD R3, R1, B LOAD R2, B ADDSTORE C STORE C, R3 ADD R3,R1,R2 POP CSTORE C, R3 Čia vienos ar kitos architektūros pranašumai nėra akivaizdūs. IšraiškaiA*B + B*C - A*D paskaičiuoti juos jau pastebėtume

  18. Bendrosios paskirties registrų tipo architektūra Pastaruoju metu vyrauja bendrosios paskirties registrų tipo architektūra. Tai paaiškinama tuo, kad: 1) registrai, kaip ir kiti CPU mazgai, pasiekiami greičiau, nei atmintis; 2) kompiliatoriai efektyviau juos panaudoja kodo generavimui, nei kitas vidines CPU atminties formas (pvz., steką); 3) saugant operandus ir tarpinius rezultatus registruose, sumažėja kreipinių į atmintį skaičius, tuo išlaisvinant ją kitiems tikslams (pvz., įvedimui ar išvedimui); 4) generuojamas kompaktiškesnis kodas, nes registrams nurodyti reikia mažiau vietos.

  19. Bendrosios paskirties registrų tipo architektūra Kiek gi registrų turėtų būti procesoriuje? Atsakymas priklauso nuo to, kaip juos panaudoja kompiliatorius. Dauguma kompiliatorių dalį registrų rezervuoja išraiškoms skaičiuoti, kai kuriuos naudoja parametrams perduoti, o likusius - kintamiesiems saugoti. Kiek gi registrų yra žinomuose procesoriuose? • x86 procesoriuose – 8 • IBM/360 sistemos procesoriuose - 16 • RISC procesoriuose - 32 • IA-64 procesoriuose - 128

  20. Komandų formatai • Aukščiau pateiktuose pavyzdžiuose sutikome tokias procesorių komandas: • LOAD A • LOAD R1, A • ADD • ADD B • ADD R3, R1, B • ADD R3,R1,R2 • Kaip matome, visose pirmojoje pozicijoje yra operacijos pavadinimas (LOAD – įkrovimas, ADD – sudėtis), o po jos – operandų nuorodos, kurių skaičius pateiktuose pavyzdžiuose įvairus – nuo 0 iki 3

  21. Komandų formatai Bendruoju atveju procesorių komandų formatą galima būtų pavaizduoti taip: • Čia: • OpK – operacijos kodo laukas, • Op1, …, Opn – operandų nuorodos • Nuorodų skaičius priklauso nuo konkretaus atvejo ir gali būti lygus 0, 1, 2 ir t.t.

  22. registras ar ląstelė, nurodomi adresu Operandų nuorodos • Operando nuorodos pavidalas priklauso nuo to, koks yra operandas, kur jis saugomas. • Operandu gali būti: • kurio nors registro turinys, • atminties ląstelės turinys, • konstanta, • adresas, • sąlyga. • Nuo to priklausooperando nuorodai skirto lauko ar laukų skaičius ir ilgis

  23. Operandų adresavimo būdai Operandų vietai nurodyti kompiuteriuose naudojama daug įvairių adresavimo būdų, kurie tinka vienai ar kitai situacijai. Aprašydami juos, pateiksime ir pavyzdžius, iliustruojančius operando išrinkimą. ATM[A] žymės atminties ląstelę, kurios adresas A 1. Registrinė adresacija - operandas yra registre, kurio numeris nurodytas komandoje, pavyzdžiui: Add R4, R1 R4 := R4 + R1

  24. Operandų adresavimo būdai 2. Netiesioginė registrinė - operando adresas yra registre, kurio numeris nurodytas komandoje, pavyzdžiui: Add R4, (R1) R4 := R4 + ATM[R1] 3. Santykinė (bazinė arba su poslinkiu)- operando adresas paskaičiuojamas prie registro turinio pridedant nurodytą poslinkio reikšmę; tinka lokaliniams kintamiesiems pasiekti. Pavyzdžiui: AddR4, 9(R1) R4 := R4 + ATM[R1+9]

  25. Operandų adresavimo būdai 4. Indeksinė - operando adresas paskaičiuojamas sumuojant bazės ir indekso registrų turinius; tinka masyvo elementams išrinkti (R1 - masyvo bazinis adresas, R2 - indekso reikšmė). Pavyzdžiui: AddR4, (R1)[R2]R4 := R4 + ATM[R1 +R2] 4a. Indeksinė masteliuоta - nuo indeksinės skiriasi tik tuo, kad indekso reikšmė padauginama iš koeficiento, atitinkančio duomenų elemento ilgį (m). Pavyzdžiui: AddR4, 8(R1) [R2] R4 := R4 + ATM[8+R1+R2*m]

  26. Operandų adresavimo būdai 5. Tiesioginė arba absoliutinė - adreso reikšmė (pilna ar jo dalis) nurodoma komandoje; tinka statiniams duomenims nurodyti. Pavyzdžiui: AddR4, (704) R4 := R4 + ATM[704] 6. Betarpiškoji - operandas yra komandos formato dalis. Tai gali būti interpretuojama, kaip adreso nuoroda yra komandų skaitiklyje. Pavyzdžiui: AddR4, #7 R4 := R4 + 7

  27. Operandų adresavimo būdai 7a. Autoinkrementinė - operando adresas yra registre, kurio turinys automatiškai didinamas, pvz.: Add R4, (R1)+ R4 := R4 + ATM[R1] R1 := R1 + d 7b. Autodekrementinė - operando adresas yra registre, kurio turinys automatiškai mažinamas, pvz.: Add R4, -(R1)R1 := R1 -d R4 := R4 + ATM[R1] Patogu apdorojant masyvus. Pradžios adresas įrašomas į lauke R1 nurodytą registrą

  28. Komandų adresavimo būdai • Komandoms adresuoti perėjimuose gali būti naudojami tokie būdai: • Tiesioginėarba absoliutinė adresacija- perėjimo adresas nurodomas komandoje. Pavyzdžiui: • Jmp addr PC := addr • Santykinė PC atžvilgiu - komandoje nurodomas poslinkis PC atžvilgiu. Pavyzdžiui: • Jmp offset PC := PC + offset

  29. IBM/360 komandų formatai Kai kurie IBM/360 šeimos kompiuterių komandų formatai:

  30. IBM/360 komandų pavyzdžiai IBM/360 šeimos kompiuterių sudėties komandų variantai: AR 5, 9 A 4, 8(1,2)

  31. Intel 8080 procesoriaus komandos OpK Registrų kodai: 000 - B 100 - H 001 - C 101 - L 010 - D 110 - M 011 - E 111 - A Registrų porų kodai: 00 - BC 10 - HL 01 - DE 11 - SP Santrumpos: DDD - imtuvas (Destination) SSS - šaltinis (Source) OpK - operacijos kodas RP - registrų pora I - operandas (Immediate) B0, B1 - adreso baitai OpK DDD SSS OpK DDD OpK OpK SSS OpK RP OpK OpK DDD OpK I B1 OpK RP OpK B0

  32. Intel komandų formatai Intel šeimos procesorių komandų formatai: Kaip matome, 32 bitų procesorių komandų formatai skiriasi: a) čia į kai kurias komandas įvestas SIB (Scale, Index, Base) baitas, specifikuojantis indeksaciją; b) kai kurie laukai gali būti ilgesni.

  33. Intel x86 procesorių komandos d = 0 - imtuvas - r/m, d = 1 - imtuvas - reg w = 0 - baitas, w = 1 - žodis

  34. Intel x86 komandų pavyzdžiai • add r/m, m/r :000000dw mod reg r/m • variantai: • add ax, bx (ax:= ax + bx):0000001111000011 • add ah, bl (ah := ah + bl):0000001011100011 • add adr, ax(ATM(adr) := ATM(adr) + ax; vieta atmintyje nustatoma sumuojant bp, si ir poslinkio disp8=96turinį):0000001101 000001 01100000 • add ax, adr (ax := ATM(adr) + ax; vieta atmintyje nustatoma sumuojant bp, si ir poslinkio disp8=96turinį):0000000101 000001 01100000 w bitas d bitas

  35. Itanium Čia VLIW komanda - 3“normalių” komandų grupė (bundle): 2 komanda 1 komanda 0 komandaT 41 41 41 5 T – Templatelaukas, nurodantis: • komandų nukreipimą į funkcinius įtaisus • stops – galimus konvejerio darbo trikius dėl resursų priklausomybės tarp prieš ir po “stop” esančių komandų Galimos ir išplėstos komandos (long intermediate integer, long branch), kurios užima dvi pozicijas komandų grupėje

  36. CISC ir RISC CISC - Complex Instruction Set Computing - sudėtinga komandų sistema RISC - Reduced Instruction Set Computing - supaprastinta komandų sistema Kodėl CISC?Prielaidos: • turtingesnė sistema - trumpesnė programa (pvz., 8080 - nėra daugybos) • turtingesnė sistema - lengviau sukurti kompiliatorių Pasekmė - kuriami kompiuteriai, orientuoti aukšto lygmens programavimo kalboms palaikyti

  37. CISC požymiai Siūlomi tokie 8 požymiai: • komandų skaičius – kiek galima daugiau • adresacijos būdų skaičius – kiek galima daugiau • komandų formatų skaičius – kiek galima daugiau • komandų trukmė taktais – CPI>1 • į atmintį kreipiasi įvairių tipų komandos • yra specialios paskirties registrai • valdymas – mikroprograminis • komandos būna aukštesnio lygio, artimos aukšto lygio programavimo kalboms (ALPK)

  38. CISC ir RISC Ką parodė praktika? • sunku pasiekti komandų visišką atitikimą ALPK operatoriams • CISC atveju sunkiau optimizuoti kodą, užtikrinti efektyvų konvejerio darbą • kompiliatoriaus sugeneruotame kode panaudojama tik dalis komandų • programos ilgis (komandų skaičius) svyruoja nedaug:

  39. CISC ir RISC Šie duomenys paimti iš D.Patterson tyrimo (11 C kalba parašytų programų). Ar tik dėl 10-20% verta rinktis CISC?

  40. CISC ir RISC Kodėl RISC? • trumpos komandos (dauguma įvykdomos per 1 ciklą) • registras-registras tipo komandos (load/store architektūra) • paprastesni adresavimo būdai • paprastesni komandų formatai • efektyvūs kompiliatoriai • efektyvus konvejerizavimas

  41. CISC ir RISC architektūrų palyginimas

  42. OpK D/S A immediate OpK D/S A B OpK RC OpK D/S A B C OpK RC RISC: PowerPC PowerPC: • 3 operaciniai įtaisai • 32 bendrosios paskirties registrai • 32 bitų komandos; jų formatų pavyzdžiai: 0 5 6 10 11 15 16 20 21 31 RC=1 – požymių reikšmės įrašomos į požymių registrą, RC=0 – ne

  43. KONVEJERIS

  44. Komanda Komanda Rezultatai Komandos išrinkimas Operacijos vykdymas Laukti Naujas adresas Komanda Komanda Rezultatai Komandos išrinkimas Operacijosvykdymas Atmesti Komandos vykdymo spartinimas Komandos vykdymo procesą galima paspartinti: Tiksliau:

  45. Komandos vykdymas Kompiuteryje vykdomi procesai - tai mašinos komandų sekos I1, I2, I3, ... , In. Kiekvieną komandą Ii logiškai sudaro kelios fazės, kurias, pavyzdžiui, galima nusakyti taip: • F -komandos išrinkimas, • D - komandos dekodavimas, • O - operandų išrinkimas, • X - operacijos vykdymas, • W - rezultato įrašymas. Toks komandos fazių išskyrimas nėra vienintelis

  46. F D O X W F D O X W F D Nuoseklus komandų vykdymas Esant nuosekliam komandų vykdymui, (i+1)-ji komanda pradedama vykdyti tik po to, kai baigiama vykdyti i-ji komanda: Apie etapų trukmę

  47. F D O X W F D O X W Konvejeris Konvejerizuotam komandų vykdymui reikia, kad konvejeris dirbtų ritmingai: Etapo (fazės) trukmė:tF tD tO tX tW •     • = max(tF, tD , tO, tX , tW) ?

  48. F F F F D D D D O O O O X X X X W W W W Konvejeris Tuomet (i+1)-ji komanda pradedama vykdyti vienu etapu vėliau, nei i-ji komanda: i) i+1) i+2) i+3)

  49. Fiksatorius Fiksatorius Pakopos schemos Pakopos schemos Fiksatorius Pakopos schemos Fiksatorius Duomenys Sinchr. Konvejerio realizacija Konvejerizuotam komandų vykdymui reikia, kad informacija konvejeryjetarp jo pakopų būtų perduodama korektiškai: Žinoma, tarp konvejerio pakopų atminties elementų gali ir nebūti, tačiau tokio konvejerio projektavimas sudėtingesnis, o pats konvejeris dirba sparčiau

  50. Registrų failas R3, Rezultatas R1 R2 Reikšmės Komanda PC ALU ADD R3 R2 R1 ADD R3 Reikšmė Reikšmė R3 Rez. Adresas X W F O Sinchr. Konvejerio pavyzdys 4 pakopų konvejeris galėtų atrodyti taip:

More Related