doc. stasys maciulevičius kompiuterių katedra [email protected] [email protected]
DESCRIPTION
Kompiuterių architektūra ir operacin ė s sistemos. Doc. Stasys Maciulevičius Kompiuterių katedra [email protected] [email protected]. Ant rosios paskaitos santrauka. Informacijos tipai kompiuter iuose P ozicinės skaičiavimo sistemos - PowerPoint PPT PresentationTRANSCRIPT
1
Doc. Stasys MaciulevičiusKompiuterių katedra
[email protected] [email protected]
Kompiuterių architektūra ir operacinės sistemos
2009-2010 S.Maciulevičius 2
Antrosios paskaitos santrauka
• Informacijos tipai kompiuteriuose• Pozicinės skaičiavimo sistemos• Dvejetainiai, aštuonetainiai, šešioliktainiai sveikieji
skaičiai• Dvejetainės trupmenos• 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
2009-2010 S.Maciulevičius 3
Trečiosios paskaitos turinys
KOMANDŲ SISTEMA• komandų sistemos samprata• pagrindiniai komandų sistemų tipai• bendrosios paskirties registrų tipo architektūra• komandų formatai• operandų adresavimo būdai• komandų formatų pavyzdžiai• CISC ir RISCKOMANDŲ VYKDYMO KONVEJERIS• konvejerio esmė• kliūtys konvejeryje
2009-2010 S.Maciulevičius 4
KOMANDŲ SISTEMA
Kompiuterių architektūra ir operacinės sistemos
2009-2010 S.Maciulevičius 5
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 operandusDaugumos kompiuterių komandų sistemos apima tokias komandų grupes:
2009-2010 S.Maciulevičius 6
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)
2009-2010 S.Maciulevičius 7
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.
2009-2010 S.Maciulevičius 8
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ą?
2009-2010 S.Maciulevičius 9
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)
2009-2010 S.Maciulevičius 10
Steko tipo architektūra
Stekas: operandai saugomi steke, rezultatas - taip pat, operandų išrinkimas ir įrašymas - procedūros push, pop. Pavyzdys: B5500
SR – steko rodyklėALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit)
Procesorius
SR
SR
ALU
Atmintis
Procesorius
StekasSR
ALU
Atmintis
pus
h po
p
2009-2010 S.Maciulevičius 11
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.
2009-2010 S.Maciulevičius 12
Akumuliatoriaus tipo architektūra
Akumuliatorius: specialus registras (kaupiantysis registras), į kurį informacija įrašoma prieš operaciją; iš jo rezultatai grąžinami į atmintį.
AC – akumuliatoriusALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit)
Procesorius
SR
SR
ALU
Atmintis
Procesorius
AC
ALU
Atmintis
loa
d sto
re
2009-2010 S.Maciulevičius 13
Reg-Atm tipo architektūra
Registrų failas: 8-16-32-… registrų grupė procesoriuje, į kuriuos vienas iš operandų įrašomas prieš operaciją;
Ri, Rk – registraiALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit)
Procesorius
SR
SR
ALU
Atmintis
Procesorius
Ri
ALU
Atmintis
Rk
loa
d sto
re
2009-2010 S.Maciulevičius 14
load-store tipo architektūra
Registrų failas: 8-16-32-… registrų grupė procesoriuje, į kuriuos abu operandai įrašomi prieš operaciją;
Ri, Rj, Rk – registraiALU – aritmetinis-loginis įtaisas (Arithmetic-Logic Unit)
Procesorius
SR
SR
ALU
Atmintis
Procesorius
Ri
ALU
Atmintis
Rj
Rk
loa
d sto
re
2009-2010 S.Maciulevičius 15
Pagrindiniai komandų sistemų tipai
Operatorius C := A + B šiose keturiose klasėse realizuojamas tokiomis komandų sekomis:
Steko Akumuliatoriaus Reg-Atm load-storePUSH A LOAD A LOAD R1, A LOAD R1, APUSH B ADD B ADD R3, R1, B LOAD R2, BADD STORE C STORE C, R3 ADD R3,R1,R2POP C STORE C, R3
Čia vienos ar kitos architektūros pranašumai nėra akivaizdūs. Išraiškai A*B + B*C - A*D paskaičiuoti juos jau pastebėtume
2009-2010 S.Maciulevičius 16
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.
2009-2010 S.Maciulevičius 17
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
2009-2010 S.Maciulevičius 18
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.
2009-2010 S.Maciulevičius 19
Komandų formatai
Bendruoju atveju procesoriaus komandų formatą galima būtų pavaizduoti taip:
OpK Op1 Op2 … Opn
Č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.
2009-2010 S.Maciulevičius 20
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 priklauso operando nuorodai skirto lauko ilgis.
registras ar ląstelė,nurodomi adresu
2009-2010 S.Maciulevičius 21
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
2009-2010 S.Maciulevičius 22
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:
Add R4, 9(R1) R4 := R4 + M[R1+9]
2009-2010 S.Maciulevičius 23
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:
Add R4, (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:
Add R4, 8(R1) [R2] R4 := R4 + M[8 + R1 + R2*m]
2009-2010 S.Maciulevičius 24
Operandų adresavimo būdai
5. Tiesioginė arba absoliutinė - adreso reikšmė (pilna ar jo dalis) nurodoma komandoje; tinka statiniams duomenims nurodyti. Pavyzdžiui:
Add R4, (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:
Add R4, #7 R4:= R4 + 7
2009-2010 S.Maciulevičius 25
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ą
2009-2010 S.Maciulevičius 26
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
2009-2010 S.Maciulevičius 27
IBM/360 komandų formatai
Kai kurie IBM/360 šeimos kompiuterių komandų formatai:
RR OpK R1 R28 bitai 4 bitai 4
bitai
RS OpK R3 R1 B2 D28 bitai 4 bitai 4
bitai4
bitai12 bitų
RX OpK R1 X2 B2 D28 bitai 4 bitai 4
bitai4
bitai12 bitų
2009-2010 S.Maciulevičius 28
IBM/360 komandų pavyzdžiai
IBM/360 šeimos kompiuterių sudėties komandų variantai:
RR 0001 1010 0101 1001
RX 0101 1010 0100 0001 0010 0000 0000 1000
AR 5, 9
A 4, 8(1,2)
2009-2010 S.Maciulevičius 29
Intel komandų formatai
Intel šeimos procesorių komandų formatai:
Dalys Prefix OpK Mode SIB Displ Immed
8088 0-3 1 0-1 0 0-2 0-2
80286 0-3 1 0-1 0 0-2 0-2
80386 0-5 1-2 0-1 0-1 0-4 0-4
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.
2009-2010 S.Maciulevičius 30
x86 adresų skaičiavimo schema
ATM
FA (fizinis adresas)
LA (loginis adresas)
Indekso registras
Bazės registras
SelektoriusSelektorius
SelektoriusSelektorius
SelektoriusSelektorius
CSESDS
FSGS
SS
Išrink. teisė SSRibaBazės adresas
Išrink. teisė GSRibaBazės adresas
Išrink. teisė FSRibaBazės adresas
Išrink. teisė ESRibaBazės adresas
Išrink. teisė DSRibaBazės adresas
Segmentų registrai
Segmentų deskriptoriai
Išrink. teisė CSRibaBazės adresas
Objekto vieta
Mastelis (1,2,4,8)
+
+ Poslinkis (komandoje)
+
Segmento riba
Segmento pradžia
2009-2010 S.Maciulevičius 31
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
2009-2010 S.Maciulevičius 32
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 %
2009-2010 S.Maciulevičius 33
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
2009-2010 S.Maciulevičius 34
CISC ir RISC architektūrų palyginimas
CISC RISC
Parametras IBM 370/168
VAX 11/780
Intel 80486
SPARC MIPS R4000
Sukurta 1973 1978 1989 1987 1991
Komandų sk. 208 303 235 69 94
Komandos ilg. 2-6 2-57 1-11 4 4
Adresav. būdų 4 22 11 1 1
Registrų sk. 16 16 8 40-520 32
2009-2010 S.Maciulevičius 35
RISC: PowerPC
PowerPC :• 3 operaciniai įtaisai• 32 bendrosios paskirties registrai• 32 bitų komandos; jų formatų pavyzdžiai:
OpK D/S A immediate
OpK D/S A B OpK RC
0 5 6 10 11 15 16 20 21 31
OpK D/S A B C OpK RC
RC=1 – požymių reikšmės įrašomos į požymių registrą,RC=0 – ne
2009-2010 S.Maciulevičius 36
KONVEJERIS
Kompiuterių architektūra ir operacinės sistemos
2009-2010 S.Maciulevičius 37
Komandos vykdymo spartinimas
Komandos vykdymo procesą galima paspartinti:
Komandos išrinkimas
Operacijos vykdymas
Komanda Komanda Rezultatai
Komandos išrinkimas
Komanda Komanda RezultataiOperacijos vykdymas
LauktiNaujas adresas
Atmesti
Tiksliau:Laukti
2009-2010 S.Maciulevičius 38
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.
2009-2010 S.Maciulevičius 39
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 O X W
F D
2009-2010 S.Maciulevičius 40
Konvejeris
Konvejerizuotam komandų vykdymui reikia, kad konvejeris dirbtų
ritmingai:
F D O X W
F D O X W
Etapo (fazės) trukmė: tF tD tO tX tW
= max(tF, tD , tO, tX , tW) ?
2009-2010 S.Maciulevičius 41
Konvejeris
Tuomet (i+1)-ji komandapradedama vykdyti vienu etapu vėliau, nei i-ji komanda: i) i+1)
i+2)
i+3)
F D O X W
F D O X W
F D O X W
F D O X W
2009-2010 S.Maciulevičius 42
PowerPC komandos vykdymas
Konvejeriai: Iš vidinės spartinančiosios atminties
IQ-7IQ-6IQ-5IQ-4IQ-3IQ-2IQ-1
IQ-0 (IU dekod.)
IU buferis
IU vykdymas
Įrašymas
FPU buferisFPU dekodavimas
FPU vykdymas 1
FPU vykdymas 2
Įrašymas
BPU dekodavimas/ vykdymas
Įrašymas
Load/Store
2009-2010 S.Maciulevičius 43
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
F D O: r1 X W
2009-2010 S.Maciulevičius 44
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
F D O X W: r1
F D O: r1 X
2009-2010 S.Maciulevičius 45
Duomenų kliūtys
ApylankosDuomenų magistralė
Pagrindinė atmintis
Registrų failas
Mux Mux
Rezultato buferis
ALU
Apylanka duomenų įkrovimui Apylank
a rezultatui
2009-2010 S.Maciulevičius 46
Valdymo kliūtys
Sąlyginiai ir besąlyginiai perėjimai
branch
Atpažinus branch, konvejeris blokuojamas.
F D O X:PC W
F BLOK X W
X W
F D O: r1
F D
F D O: r1 X W
F D O: r1 X
BLOK
BLOK BLOK
BLOK BLOK
BLOK BLOK
i+1
i+2
i+3
i+4
BLOK
BLOK
BLOK
2009-2010 S.Maciulevičius 47
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.
2009-2010 S.Maciulevičius 48
Superkonvejeris
Konvejerio ritmą galima pasiektiir kitaip:
F D O X WEtapo (fazės) trukmė: tF tD tO tX tW
= max(tX/2, tD)
F1 D O X1 W1F2 X2 W2
2009-2010 S.Maciulevičius 49
Superkonvejeris
Tokio superkonvejerio darbas:
F1 D O X1 W1F2 X2 W2
F1 D O X1 W1F2 X2 W2
F1 D O X1 W1F2 X2 W2
F1 D O X1 W1F2 X2 W2
F1 D O X1 W1F2 X2 W2
F1 D O X1 W1F2 X2 W2
2009-2010 S.Maciulevičius 50
Kitą kartą
PROCESORIUS• programos rengimas ir vykdymas• procesoriaus struktūra• procesorių vystymasis
PROCESORIAUS NAŠUMAS• bendrosios procesorių našumo
didinimo priemonės