Upload
rama-lawson
View
129
Download
2
Embed Size (px)
DESCRIPTION
KOMPIUTERIŲ ARCHITEKTŪRA. Doc. Stasys Maciulevičius Kompiuterių katedra sta sys. ma ciulevicius @ktu.lt. Ankstesnėje paskaitoje. I š orin ė a t mintis C D DVD Naujieji DVD tipai Magistralės HyperTransport, QPI PCI Express USB Magistralės arbitražas Valdymo schem ų rinkiniai - PowerPoint PPT Presentation
Citation preview
©S.Maciulevičius 22013
Ankstesnėje paskaitoje
Išorinė atmintis CD DVD Naujieji DVD tipai
Magistralės HyperTransport, QPI PCI Express USB Magistralės arbitražas Valdymo schemų rinkiniai
Išorinių įtaisų sąsajos IDE, SATA SCSI
©S.Maciulevičius 32013
Šioje paskaitoje
Pertrauktys Pertraukčių tipai Pertraukčių apdorojimas
Įvestis ir išvestis Įvesties ir išvesties problemos Periferinio įtaiso kontroleris Programa valdomi duomenų mainai Tiesioginiai duomenų mainai
©S.Maciulevičius 42013
Pertrauktys
Procesoriui dirbant savo darbą (vykdant programos komandas) tenka kreipti dėmesį ir į kitų kompiuterio komponentų darbą
Galima tai atlikti taip – reguliariai paklausti, ar kuris nors komponentas nereikalauja dėmesio ar jame nesusidarė situacija, reikalaujanti dėmesio ir atitinkamo sprendimo
Toks reguliarus tikrinimas vadinamas apklausa arba polinguTačiau kur kas tikslingiau naudoti signalus, kuriais
kompiuterio komponentai patys informuotų apie juose susidariusią situaciją, reikalaujančią dėmesio
Tokie signalai vadinami pertraukties signalais
©S.Maciulevičius 52013
Pertrauktys
Pertraukiančios (pertrauktį apdorojančios) programos
Pertraukties signalai
Pagrindinėprogra
ma
Procesorius
Aplinka
©S.Maciulevičius 62013
Pertraukčių tipai
Išorinės (asinchroniškos procesui): • techniniai gedimai (įtampa, …)• laikrodis• kiti procesai ar procesoriai• procesai išoriniuose įtaisuose• vartotojas, operatoriusVidinės (sinchroniškos procesui): • adresavimo klaidos• operandų klaidos (/0, …)• operacijos klaidos (perpildymas, …)• negalima operacija• režimo pakeitimas
©S.Maciulevičius 72013
Pertraukčių tipai
Programinės (sinchroniškos procesui): • programinės (pertr. sistemai tikrinti)• derinimo (po kiekvienos komandos - analizė)
Vykdymo variantai: • po komandos (dažniausiai)• komandoje (rečiau, kai negalima užbaigti):
• puslapio klaida• ilgai trunkančioms komandoms
Apdorojama: • mikroprograma (anksčiau)• paprograme (dažniausiai)
©S.Maciulevičius 82013
Pertrauktys: terminai
Aparatinės pertrauktys – iššaukiamos elektriniais signalais procesoriaus įėjimuose.
• maskuojamos (įėjimas INTR) – reakcija priklauso nuo IF reikšmės
• nemaskuojamos (įėjimas NMI)Programinės pertrauktys – iš esmės tai speciali priemonė tam
tikroms procedūroms iškviesti.Išskirtinės situacijos (Exceptions) – trijų tipų ypatingi atvejai:
• klaidos (faults) – aptinkamos prieš vykdant komandą (pvz., page fault)
• “spąstai” (traps) – aptarnaujamos įvykdžius komandą (pvz., programinės pertrauktys)
• avarinės situacijos (aborts) – neaišku, kuri komanda kalta
©S.Maciulevičius 92013
Pertrauktys
Parametrai:• įėjimo signalų skaičius• reakcijos laikas• perjungimo laikas• gylis
Pagr.progr.
Signalas
Pertr. apdor.Reakcijos
Perjungimolaikas laikas
©S.Maciulevičius 102013
Pertraukčių lygiai
321
321
3
22
11
Užklausos
Vieno lygiosistema
Kelių lygių sistema
Pertraukčių prioritetaiAptarnavimo tvarka:
Čia 1 pertrauktis turi žemiausią prioritetą, 3 - aukščiausią
©S.Maciulevičius 112013
Pertrauktys
Apdorojimo procedūra:• pertraukties signalo priėmimas• pertraukties atpažinimas• būsenos įsiminimas• pertrauktį apdorojančios programos vykdymas• būsenos atstatymas
©S.Maciulevičius 122013
PSW (IBM/360)
Išorinių pertraukčių kaukė
Įvedimo / išvedimo kaukė
Valdymo režimas Kontrolės schemų pertraukties kaukė Laukimas / skaičiavimas Uždavinys / supervizorius
Būsena
Sistemos kaukė
0 5 6 7 8 11 12 13 14 15 16 31
Kanalų Programos Pertraukties
kaukė raktas kodas
32 33 34 35 36 39 40 63
Progr. ILC CC pertr. Komandos adresas
kaukė
Programinių pertraukčių kaukė:[36] - sveikųjų skaičių perpildymas[37] - dešimtainių skaičių perpildymas[38] - eilės išnykimas [39] - mantisės išnykimas
Sistemos kaukė:[0] - multipl. kan. kaukė[1-5] - selekt. kan. kaukė[6] - >5 kan. kaukė
Rezultato požymis
Komandos ikgio kodas
©S.Maciulevičius 132013
CC formavimas IBM/360
CC reikšmės formavimo pavyzdys:
Komanda 00 01 10 11Kodų sudėtis =0,C=0 0,C=0 = 0,C0
0,C0 Pusžodžių sudėtis =0 <0 >0 Perpild.
IR =0 0 - - Sąlyginis perėjimas n e k e i č i a m a Palyginimas = Op1<OP2 Op1>OP2
©S.Maciulevičius 142013
Pertraukčių realizacija IBM/360
P.užklausa (2 klasės)
Naujieji PSW
1
2
3
4
5
Pertraukiančioji programa
Senieji PSW
1
2
3
4
5
Pertrauk-toji
programa
Pertrau-kiamoji
programaBūsenos
išsaugojimas
Programa
Būsenos atstatymas
PSW registras1
2
5
6
3
4
©S.Maciulevičius 152013
Pertraukčių kontroleris (Intel)
INTA INT
D7 - D0
IR0IR1IR2IR3IR4IR5IR6IR7
Valdymo logika
Pertr. užklaus.regist-
ras
(IRR)
Prioriteto schema
Aptarn. pertr. regist-
ras
(ISR)
Pertr. kaukės registras(IMR)
Duom. magistr. buferis
Skait./ Įrašymo logika
Kaskadinio jungimo
valdymas
RD
WR
A0
CS
CAS0
CAS1
CAS2
SP/EN
©S.Maciulevičius 162013
Pertraukčių kontroleris
IOWCIORCINTA
Pertraukčių įėjimai
Duomenų magistralė
Adreso selektoriu
s
Adreso magistralė
Į P
Kaskadiniam jungimui
CS A0 INT D7-D0
WR
RD 8259A CASINTA
IR0 IR7
©S.Maciulevičius 172013
Pertraukčių kontrolerio naudojimas
IR0IR1 INTIR2…IR7 CAS
Išor. įtaisas 00
Išor. įtaisas 01
Išor. įtaisas 07
IR0IR1 INTIR2…IR7 CAS
IR0IR1 INTIR2…IR7 CAS
Išor. įtaisas 08
Išor. įtaisas 09
Išor. įtaisas 15
Išor. įtaisas 56
Išor. įtaisas 57
Išor. įtaisas 63
IR0IR1 INTIR2…IR7CAS
NMIINTR
Vedantysis(Master)8259A
Vedamieji (Slaves)8259A
Procesorius
©S.Maciulevičius 182013
Pertraukčių kontrolerio naudojimas AT
IR0IR1 INTIR2…IR7 CAS
Išor. įtaisas 02
Išor. įtaisas 03
Išor. įtaisas 09
Išor. įtaisas 10
Išor. įtaisas 11
Išor. įtaisas14
IR0IR1 INTIR2IR3IR4IR5IR6IR7 CAS
NMIINTR
Vedantysis8259A
Vedamasis8259A
Procesorius
Išor. įtaisas 00
Išor. įtaisas 01
PC/XT kompiuteriuose buvo tik viena mikroschema 8259A
PC/AT kompiuteriuose buvo 2 mikroschemos 8259A, sujungtos tokiu būdu:
©S.Maciulevičius 192013
Modernus pertraukčių kontroleris
Multiprocesorinėms sistemoms buvo sukurti
modernūs pertraukčių kontroleriai (APIC -
advanced programmable interrupt controllers),
kurie turėjo padidinti pertraukčių apdorojimo
efektyvumą tokiose sistemose
Intel APIC sistemose yra du komponentai -
lokalus APIC (LAPIC) ir I/O APIC
©S.Maciulevičius 202013
Modernus pertraukčių kontroleris
LAPIC valdo visas savojo procesoriaus išorines pertrauktis SMP sistemoje. Be to, jis gali priimti ir generuoti tarpprocesorines pertrauktis (IPI) tarp LAPIC
LAPIC gali palaikyti iki 224 pertraukčių vektorių iš I/O APIC. Vektoriai, kurių numeriai 0 - 31, yra rezer-vuoti pertraukčių apdorojimui x86 procesoriuose
I/O APIC turi specialią lentelę, kuri naudojama iš I/O magistralių gautoms pertrauktims nukreipti į vieną ar kelis lokalius APIC
©S.Maciulevičius 212013
Pentium pertrauktys ir išskirtinės situacijos
Pertraukties (vektoriaus) numeris – 8 bitų kodas, identifikuojantis pertraukties vektorių.
Pertraukties vektorius – įrašas pertraukčių deskriptorių lentelėje IDT, kuris nurodo pertrauktį aptarnaujančią programą (paprogramę).
0-31 numeriais pažymėtas pertrauktis atpažįsta CPU, o 32-255 numeriais pažymėtos pertrauktys atpažįstamos tik programiškai
©S.Maciulevičius 222013
Įvesties ir išvesties problemos
Galimybė prijungti įvairius PĮ Lygiagretus įvesties ir išvesties
sistemos darbas su procesoriumi Maksimaliai supaprastintas įvesties ir
išvesties procesų programavimas Reakcija į įvairias kritines situacijas bei
iškilusias problemas
©S.Maciulevičius 232013
Problemų sprendimo keliai
PĮ moduliškumas (konstruktyvus išbaigtumas, paprastas prijungimas)
Unifikuoti duomenų formatai Unifikuota sąsaja (interfeisas) Unifikuoti komandų formatai ir tipai
©S.Maciulevičius 242013
Kompiuteris ir jo I/O įtaisai
CPU
Kešas
Pagrindinėatmintis
Įvesties ir išvesties magistralė
I/O kontroleris
MD MD
I/O kontroleris
I/O kontroleris
Grafikos išvesties
įtaisas LAN
Pertraukčių signalai
©S.Maciulevičius 252013
Periferinių įtaisų darbo sparta
Įtaisas Įv. - išv. Partneris Sparta (KB/s)
Klaviatūra Įvestis Žmogus 0,01Pelė Įvestis Žmogus 0,02Skeneris Įvestis Žmogus 200Nuoseklus spausdintuvas Išvestis Žmogus 1Lazerinis spausdintuvas Išvestis Žmogus 100 Grafinis displėjus Išvestis Žmogus 100 000 Vietinis tinklas (LAN) Įvest/išv. Kompiuteris 200Optinis diskas Atmintis Kompiuteris 1 000 Magnetinis diskas Atmintis Kompiuteris 40 000
©S.Maciulevičius 262013
Pagrindinės sąvokos
periferinis įtaisas (I/O įtaisas) I/O magistralė I/O kanalas I/O kontroleris I/O sąsaja (interfeisas) programa valdomi duomenų mainai tiesioginiai mainai su atmintimi
©S.Maciulevičius 272013
Periferinio įtaiso kontroleriofunkcijos valdymas ir sinchronizavimas ryšis su CPU ryšis su periferiniu įtaisu
adreso atpažinimas komandų dekodavimas informacijos apie būseną pateikimas duomenų perdavimas
duomenų buferizavimas klaidų kontrolė
©S.Maciulevičius 282013
Periferinių įtaisų adresavimasa) atskiros adresų b) persidengiančios sritys (PDP) adresų sritys
RAM
I/O prievadai
000000
777400
777777
RAM
I/O prievadai0000
00FF
FFFFFFFF
©S.Maciulevičius 292013
Periferinių įtaisų adresavimas ir I/O komandos
Komandos:
a) move - universali (ir kreipiantis į atmintį, ir į PĮ); vieta atskiriama pagal adreso reikšmę
b) load/store - kreipiantis į atmintį, in/out - kreipiantis į PĮ; vieta atskiriama pagal magistralės signalus
©S.Maciulevičius 302013
Prievadai (portai)
Įvesties prievadas – bet koks duomenų šaltinis, kuris gali būti išrinktas vykdant įvesties komandą.
Išvesties prievadas – bet koks duomenų imtuvas, kuris gali būti išrinktas vykdant išvesties komandą.
Prievadai adresuojami per adreso magistralę (ar jos dalį).
©S.Maciulevičius 312013
Prievadai (portai)
7 0išrinkimas
į periferinį įtaisą
išvesti
įvesti
A magistralė
D magistralė
7 0
L
L
iš periferinio įtaiso
selektorius
&
&
7 0
Išvesties prievadas
Įvesties prievadas
tribūvis buferis
©S.Maciulevičius 322013
Duomenų mainai su PĮ
Atsižvelgiant į persiunčiamų duomenų kiekį bei PĮ darbo spartą, pasirenkamas vienas iš dviejų mainų tipų:
a) programa valdomi duomenų mainai – kai perduodama mažai duomenų ir kreipiantis į atmintį, ir PĮ darbo sparta nedidelė
b) tiesioginiai duomenų mainai - kai perduodamų duomenų apimtis didelė ar PĮ darbo sparta didelė
©S.Maciulevičius 332013
Programa valdomi duomenų mainai
Šiuo atveju mainus valdo procesorius, tam naudodamas įvesties ir išvesties komandas IN ir OUT
Priklausomai nuo įtaiso tipo ir jo darbo ypatumų skiriami trys atvejai:
a) besąlyginiai mainai,
b) sąlyginiai mainai,
c) mainai pagal pertraukties signalą
©S.Maciulevičius 342013
Programa valdomi duomenų mainai
a) besąlyginiai mainai b) sąlyginiai mainai
in/out port
in/out port
Pasi-rengęs?
Ne
Taip
©S.Maciulevičius 352013
Programa valdomi duomenų mainai
c) mainai pagal pertraukties signalą
Pagrindinė programa
Pertr. sistemos parengimas
Mainų parengimas
Mainų papro-gramė
INTR
INTR
...
©S.Maciulevičius 362013
Tiesioginiai duomenų mainai
Tiesioginiais duomenų mainais vadinamas toks duomenų įvedimas ir išvedimas, kuris vyksta tarp sistemos pagrindinės atminties ir įvesties ar išvesties įtaisų, nedalyvaujant (tiesiogiai) procesoriui
Visas duomenų mainų valdymo funkcijas atlieka specialus įtaisas, kurį vadiname kanalu (klasika – didieji kompiuteriai) ar tiesioginių mainų su atmintimi kontroleriu (mikroprocesorinėse sistemose)
©S.Maciulevičius 372013
Tiesioginiai duomenų mainai
Procesorius parengia duomenų mainus, nusiųsdamas reikalingą informaciją (duomenų adresą atmintyje, baitų skaičių, operacijos tipą ir t.t.) kanalui ar kontroleriui, parengia pertraukčių sistemą ir toliau dirba kitą darbą
Bet kuriuo pagrindinės programos vykdymo momentu, kai periferinis įrenginys pasiruošęs tiesioginiams duomenų mainams, kanalas siunčia tiesioginių mainų reikalavimo signalą, kadangi jam reikalinga magistralė (vienam žodžiui perduoti)
©S.Maciulevičius 382013
Tiesioginiai duomenų mainai
Procesorius leidžia atlikti duomenų mainus (perduoti žodį), leisdamas valdyti magistralę kanalui ar kontroleriui; tai vadinama ciklo užėmimu
Duomenų mainų procesas tęsiasi tol, kol perduodamas nustatytas baitų skaičius (duomenų masyvo ilgis)
Pabaigus įvesti ar išvesti nustatyto ilgio duomenų masyvą, kanalas siunčia pabaigos signalą į PĮ bei pertraukties signalą į CPU, informuodamas juos apie duomenų mainų pabaigą
©S.Maciulevičius 392013
Tiesioginiai duomenų mainai
CPU vykdo kitą procesą
CPU parengia mainus, progr. TKA kontrolerį
TKA valdo mainus
tarp disko ir atminties
INTR
...
Cik- lų
už-ėmi-mas
©S.Maciulevičius 402013
Klasika: IBM kanalai
Procesorius
KanalasPagrindinė
atmintisI/O
kontroleris
©S.Maciulevičius 412013
Pagrindinės kanalo funkcijos
nurodyti duomenų masyvo adresą atmintyje; nurodyti duomenų masyvo ilgį; formuoti (nuosekliai) atminties adresus; skaičiuoti perduodamų duomenų kiekį; nustatyti operacijos pabaigą; buferizuoti duomenis; keisti duomenų formatus (pagal PĮ ir Atm); įgalinti praleisti atskirus duomenų srauto gabalus; minimizuoti procesoriaus įsikišimą, kai sudaromos
komandų grandinėlės; formuoti pertraukties užklausimo signalą; perduoti informaciją apie periferinio įtaiso būseną.
©S.Maciulevičius 422013
Tiesioginių mainų su atmintimi kontroleris (8237A)
0 kanalasDuomenų
magistralės buferis
1 kanalasKontr. vald.
blokas
2 kanalasRežimų vald.
blokas
3 kanalas
TR(16)
CR(8)
SR(8)
RR(4)
MASK(4)
CAR (16)
BAR (16)
CWR (16)
MR (6)
WCR (16)
DREQ0
DACK0
D
Valdymo signalai
DREQ1
DACK1
DREQ2
DACK2
DREQ3
DACK3
A
©S.Maciulevičius 432013
Registrai
Registrai: CR – Command Register CAR – Current Address Register SR – Status Register BAR – Basic Address Register SR – Request Register CWR – Current WordCount Register MASK – Mask Register WCR – Basic WordCount Register
©S.Maciulevičius 442013
Uždaviniai
©S.Maciulevičius 452013
Dviejų krypčių kešo dydis - 256 KB, jo eilutės ilgis - 32 baitai.
Vietai eilutėje nurodyti reikės log232 = 5 bitų.Eilutės numeriui (indeksui) nurodyti reikės
log2(256K/(2x32)) = log24K = 12 bitų.Tegui lieka 32 – 5 – 12 = 15 bitųAtminties adreso struktūra:
tegas eilutės numeris (indeksas) vieta eilutėje
31 17 16 5 4 0
Informacijos adresavimas keše
©S.Maciulevičius 462013
Pakeiskime krypčių skaičių:
Aštuonių krypčių kešo dydis - 256 KB, jo eilutės ilgis - 32 baitai.
Vietai eilutėje nurodyti reikės log232 = 5 bitų.Eilutės numeriui (indeksui) nurodyti reikės
log2(256K/(8x32)) = log21K = 10 bitų.Tegui lieka 32 – 5 – 10 = 17 bitųAtminties adreso struktūra:
tegas eilutės numeris (indeksas) vieta eilutėje
31 15 14 5 4 0
Informacijos adresavimas keše
©S.Maciulevičius 472013
Sparčiosios transliacijos buferis
Puslapių lentelė
Loginio puslapio numeris Baito poslinkis
Fizinio puslapio numeris Baito poslinkis
Sparčiosios transliacijos
buferis
ORPuslapio atmintyje nėra
Loginis adresas iš procesoriaus
Miss
Įkrauti TLB
Hit
Puslapių mainai su disku
Fizinis adresas į atmintį
©S.Maciulevičius 482013
Keturių krypčių TLB dydis - 32 įrašai,
VA puslapio ilgis - 2 Kbaitai.
Vietai puslapyje nurodyti reikės log22KB = 11 bitų.
Tai turime įvertinti aiškindamiesi atminties adreso struktūrą, nes šie bitai nėra transliuojami (žr. ankstesnę skaidrę)
Eilutės numeriui (indeksui) nurodyti reikės log2(32/2) = log216 = 4 bitų.
Tegui lieka 32 – 11 – 4 = 17 bitų
Informacijos adresavimas TLB
©S.Maciulevičius 492013
Taigi: Vietai puslapyje nurodyti - 11 bitų Indeksui nurodyti - 4 bitų Tegui lieka 32 – 11 – 4 = 17 bitųAtminties adreso struktūra:
tegas ind vieta puslapyje31 15 14 11 10 0
Informacijos adresavimas TLB
Įrašo struktūra:
V ir kt. Tegas (17 bitų) Fizinio psl. Nr.(21 bitas)??? 38 37 21 20 0