610 likes | 1.07k Vues
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
E N D
KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS Doc. Stasys Maciulevičius Kompiuterių katedra stama@ifko.ktu.lt
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
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
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
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 = CD add T,T,B; T = B+CD sub T,T,E; T = B+CD-E add T,T,F; T = B+CD-E+F add A,T,A; A = B+CD-E+F+A rezultatas operandai
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:
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)
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ą?
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)
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
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ų
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
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
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
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
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
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.
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
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
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.
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
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
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]
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]
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
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ą
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
IBM/360 komandų formatai Kai kurie IBM/360 šeimos kompiuterių komandų formatai:
IBM/360 komandų pavyzdžiai IBM/360 šeimos kompiuterių sudėties komandų variantai: AR 5, 9 A 4, 8(1,2)
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
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.
Intel x86 procesorių komandos d = 0 - imtuvas - r/m, d = 1 - imtuvas - reg w = 0 - baitas, w = 1 - žodis
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
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
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
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)
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:
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?
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
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
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:
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
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ę
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) ?
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)
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
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: