520 likes | 840 Views
Kompiuterių architektūra ir operacin ė s sistemos. Doc. Stasys Maciulevičius Kompiuterių katedra stasys@ecdl.lt stasys.maciulevicius@ktu.lt. Ant rosios paskaitos santrauka. Informacijos tipai kompiuter iuose P ozicinės skaičiavimo sistemos
E N D
Kompiuterių architektūra ir operacinės sistemos Doc. Stasys Maciulevičius Kompiuterių katedra stasys@ecdl.lt stasys.maciulevicius@ktu.lt
Antrosios paskaitos santrauka • Informacijos tipaikompiuteriuose • Pozicinės skaičiavimo sistemos • Dvejetainiai, aštuonetainiai, šešioliktainiai sveikieji skaičiai • Dvejetainėstrupmenos • Neigiamųskaičių kodavimas • Sveikųjų skaičių sudėtis ir atimtis • Slankaus kablelio skaičiai • Dešimtainiai skaičiai • Simbolių kodavimas • Grafinės informacijos kodavimas S.Maciulevičius
Trečiosios paskaitos turinys KOMANDŲ SISTEMA • komandųsistemossamprata • pagrindiniai komandųsistemų tipai • bendrosios paskirties registrų tipo architektūra • komandų formatai • operandų adresavimo būdai • komandų formatų pavyzdžiai • CISC ir RISC KOMANDŲ VYKDYMO KONVEJERIS • konvejerio esmė • kliūtys konvejeryje S.Maciulevičius
Kompiuterių architektūra ir operacinės sistemos KOMANDŲ SISTEMA S.Maciulevičius
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. Komanda – informacinis žodis, nurodantis procesoriaus atliekamą operaciją ir jai reikalingus operandus Daugumos kompiuterių komandų sistemos apima tokias komandų grupes: S.Maciulevičius
Komandų sistema • Aritmetinės ir loginės(sveikųjų skaičių: +. -, *, /; loginės: IR, ARBA) • Duomenų persiuntimo (registrų įkrovimas, įrašymas į atmintį) • Valdymo (perėjimai, procedūrų iškvietimas ir grįžimas, ciklai) • Slankaus kablelio (slankaus kablelio skaičių: +. -, *, /) • Dešimtainės(dešimtainių skaičių: +. -, *, /) • Eilučių apdorojimo(eilučių persiuntimas, palyginimas, paieška) • Sisteminės (OS iškvietimas, virtualios atminties valdymas) S.Maciulevičius
Operandų tipai ir dydis Kadangi kompiuteriai apdoroja įvairių tipų duomenis (sveikuosius ir slankaus kablelio skaičius, dešimtainius skaičius, logines reikšmes ir simbolius), kaip nurodomas operando tipas? Žinomi du būdai: 1) duomenys yra palydimi požymių (vadinamų tegais), kuriuos analizuoja procesorius; pagal jų reikšmes procesorius sužino, kokia operacija turi būti vykdoma (rečiau naudojamas); 2) operandų tipas užkoduojamas operacijos kode - dažniausiai naudojamas būdas. S.Maciulevičius
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ą? S.Maciulevičius
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) S.Maciulevičius
SR SR Stekas SR ALU ALU Steko tipo architektūra Procesorius Procesorius Stekas: operandai saugomi steke, rezultatas - taip pat, operandų išrinkimas ir įrašymas - procedūros push, pop. Pavyzdys: B5500 push pop SR – steko rodyklė ALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit) Atmintis Atmintis S.Maciulevičius
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 Registrų grupė: operandai saugomi registruose, rezultatas - taip pat, operandų išrinkimas irįrašymas - load, store. Pavyzdžiai: IBM 370, DEC VAX, PowerPC. S.Maciulevičius
SR SR ALU Akumuliatoriaus tipo architektūra Procesorius Procesorius Akumuliatorius: specialus registras (kaupiantysis registras), į kurį informacija įrašoma prieš operaciją; iš jo rezultatai grąžinami į atmintį. AC ALU store load AC – akumuliatorius ALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit) Atmintis Atmintis S.Maciulevičius
Procesorius 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 ALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit) S.Maciulevičius
Procesorius Procesorius Rk SR Rj SR Ri store load ALU ALU Atmintis Atmintis load-store tipo architektūra Registrų failas: 8-16-32-… registrų grupė procesoriuje, į kuriuos abu operandai įrašomi prieš operaciją; Ri, Rj,Rk – registrai ALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit) S.Maciulevičius
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 CSTORE 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 S.Maciulevičius
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, greitesni, nei atmintis; 2) kompiliatoriai juos panaudoja kodo generavimui efektyviau, nei kitas vidines CPU atminties formas (pvz., steką); 3) saugant operandus ir tarpinius rezultatus registruose, sumažėja kreipinių į atmintį skaičius, tuo atlaisvinant ją kitiems tikslams (pvz., įvedimui ar išvedimui); 4) generuojamas kompaktiškesnis kodas, nes registrams nurodyti reikia mažiau vietos. S.Maciulevičius
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 S.Maciulevičius
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. S.Maciulevičius
Komandų formatai Bendruoju atveju procesoriaus 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. S.Maciulevičius
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 ilgis. registras ar ląstelė, nurodomi adresu S.Maciulevičius
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ą. M[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 S.Maciulevičius
Operandų adresavimo būdai 2. Netiesioginė registrinė - operando adresas yra registre, kurio numeris nurodytas komandoje, pavyzdžiui: Add R4, (R1) R4 := R4 + M[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 + M[R1+9] S.Maciulevičius
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 + M [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 + M[8+ R1 + R2*m] S.Maciulevičius
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 + M[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 S.Maciulevičius
Operandų adresavimo būdai 7a. Autoinkrementinė - operando adresas yra registre, kurio turinys automatiškai didinamas, pvz.: Add R4, (R1)+ R4 := R4 + M[R1] R1 := R1 + d 7b. Autodekrementinė - operando adresas yra registre, kurio turinys automatiškai didinamas, pvz.: Add R4, -(R1)R1 := R1-d R4 := R4 + M[R1] Patogu apdorojant masyvus. Pradžios adresas įrašomas į lauke R1 nurodytą registrą S.Maciulevičius
Komandų adresavimo būdai Perėjimo komandos leidžia pakeisti komandų vykdymo tvarką. Jose paskesnės (“sekančios”) komandos adresui nurodyti naudojami du būdai: 1. Tiesioginė adresacija - komandoje nurodomas paskesnės komandos adresas, pavyzdžiui: Jmp Adr PC := Adr 2. Santykinė adresacija - komandoje nurodomas poslinkis, kurį reikia pridėti prie programos skaitiklio turinio, pavyzdžiui: Jmp Posl PC := PC + Posl S.Maciulevičius
IBM/360 komandų formatai Kai kurie IBM/360 šeimos kompiuterių komandų formatai: S.Maciulevičius
IBM/360 komandų pavyzdžiai IBM/360 šeimos kompiuterių sudėties komandų variantai: AR 5, 9 A 4, 8(1,2) S.Maciulevičius
Intel komandų formatai Intel šeimos procesorių komandų formatai: Kaip matome, 8088 ir 80286 formatai panašūs, o 80386 - jau skiriasi: a) čia į kai kurias komandas įvestas SIB (Scale, Index, Base) baitas, specifikuojantis indeksaciją; b) kai kurie laukai gali būti ilgesni. S.Maciulevičius
+ + Išrink. teisė SS Riba Bazės adresas Išrink. teisė GS Riba Bazės adresas Išrink. teisė FS Riba Bazės adresas Išrink. teisė ES Riba Bazės adresas Išrink. teisė DS Riba Bazės adresas + Išrink. teisė CS Riba Bazės adresas x86 adresų skaičiavimo schema Bazės registras Segmentų registrai Selektorius Indekso registras SS Selektorius GS Selektorius FS Selektorius ES Selektorius DS Selektorius Mastelis (1,2,4,8) CS Poslinkis(komandoje) LA (loginis adresas) ATM Objekto vieta Segmentų deskriptoriai Segmento riba Segmento pradžia FA (fizinis adresas) S.Maciulevičius
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 S.Maciulevičius
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 – 10-20 % S.Maciulevičius
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 S.Maciulevičius
CISC ir RISC architektūrų palyginimas S.Maciulevičius
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 S.Maciulevičius
Kompiuterių architektūra ir operacinės sistemos KONVEJERIS S.Maciulevičius
Komanda Komanda Rezultatai Komandos išrinkimas Operacijos vykdymas Laukti Naujas adresas Komanda Komanda Rezultatai Komandos išrinkimas Operacijos vykdymas Atmesti Komandos vykdymospartinimas Komandos vykdymo procesą galima paspartinti: Tiksliau: Laukti S.Maciulevičius
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 suskirstymas į fazes nėra vienintelis. S.Maciulevičius
F D O X W Konvejeris 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 S.Maciulevičius
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) ? S.Maciulevičius
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) S.Maciulevičius
IQ-7 IQ-6 IQ-5 IQ-4 IQ-3 IQ-2 IQ-1 IQ-0 (IU dekod.) FPU buferis IU buferis FPU dekodavimas IU vykdymas BPU dekodavimas/ vykdymas FPU vykdymas 1 Load/Store FPU vykdymas 2 Įrašymas Įrašymas Įrašymas PowerPC komandos vykdymas Konvejeriai: Iš vidinės spartinančiosios atminties S.Maciulevičius
F D O: r1 X W Duomenųkliūtys add r1, r2, r3 ; r1 := r2 + r3 sub r4, r1, r5 ; r4 := r1 – r5 ld r1, a ; r1 := ATM[a] add r4, r1, r5 ; r4 := r1 + r5 F D O X W: r1 S.Maciulevičius
F D O X W: r1 F D O: r1 X Duomenųkliūtys Galimos išeitys: • programinės: – įterpti NOOP – pakeisti komandų eilės tvarką • aparatinės: – blokuoti konvejerio darbą – pridėti papildomas duomenų linijas – apylankas S.Maciulevičius
Duomenųkliūtys Apylankos Duomenų magistralė Apylanka duomenųįkrovimui Registrų failas Apylanka rezultatui Pagrindinė atmintis Mux Mux ALU Rezultato buferis S.Maciulevičius
F D O X:PC W F BLOK BLOK X W i+1 F D O: r1 X W BLOK BLOK BLOK F X D W O: r1 X i+2 BLOK BLOK BLOK F D O: r1 i+3 BLOK BLOK BLOK F D i+4 Valdymo kliūtys Sąlyginiai ir besąlyginiai perėjimai branch Atpažinus branch, konvejeris blokuojamas. S.Maciulevičius
Valdymo kliūtys Ką daryti, kad sumažinti galimus laiko nuostolius? • anksčiau išsiaiškinti, ar bus perėjimas • anksčiau paskaičiuoti naują PC reikšmę Priemonės perėjimo vėlinimui sumažinti: • Prognozuojama, kad perėjimo nebus • Komandų eilės tvarkos pakeitimas. S.Maciulevičius
F D O X W F1 F2 D O X1 X2 W1 W2 Superkonvejeris Konvejerio ritmą galima pasiekti ir kitaip: Etapo (fazės) trukmė:tF tD tO tX tW • • = max(tX/2, tD) S.Maciulevičius
F1 F1 F1 F1 F1 F1 F2 F2 F2 F2 F2 F2 D D D D D D O O O O O O X1 X1 X1 X1 X1 X1 X2 X2 X2 X2 X2 X2 W1 W1 W1 W1 W1 W1 W2 W2 W2 W2 W2 W2 Superkonvejeris Tokio superkonvejerio darbas: S.Maciulevičius
Kitą kartą PROCESORIUS • programos rengimas ir vykdymas • procesoriaus struktūra • procesorių vystymasis PROCESORIAUS NAŠUMAS • bendrosios procesorių našumo didinimo priemonės S.Maciulevičius