KA_Isv_ivestis - KTU

Download Report

Transcript KA_Isv_ivestis - KTU

KOMPIUTERIŲ
ARCHITEKTŪRA
Doc. Stasys Maciulevičius
Kompiuterių katedra
[email protected]
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
2013
©S.Maciulevičius
2
Šioje paskaitoje

Pertrauktys
 Pertraukčių
 Pertraukčių

tipai
apdorojimas
Įvestis ir išvestis
 Įvesties ir išvesties problemos
 Periferinio įtaiso kontroleris
 Programa valdomi duomenų mainai
 Tiesioginiai duomenų mainai
2013
©S.Maciulevičius
3
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 polingu
Tačiau kur kas tikslingiau naudoti signalus, kuriais
kompiuterio komponentai patys informuotų apie juose
susidariusią situaciją, reikalaujančią dėmesio
Tokie signalai vadinami pertraukties signalais
2013
©S.Maciulevičius
4
Pertrauktys
Pagrindinė
programa
Procesorius
Pertraukties
signalai
Pertraukiančios
(pertrauktį
apdorojančios)
programos
Aplinka
2013
©S.Maciulevičius
5
Pertraukčių tipai
Išorinės (asinchroniškos procesui):
•
techniniai gedimai (įtampa, …)
•
laikrodis
•
kiti procesai ar procesoriai
•
procesai išoriniuose įtaisuose
•
vartotojas, operatorius
Vidinės (sinchroniškos procesui):
•
adresavimo klaidos
•
operandų klaidos (/0, …)
•
operacijos klaidos (perpildymas, …)
•
negalima operacija
•
režimo pakeitimas
2013
©S.Maciulevičius
6
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)
2013
©S.Maciulevičius
7
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
2013
©S.Maciulevičius
8
Pertrauktys
Parametrai:
• įėjimo signalų skaičius
• reakcijos laikas
• perjungimo laikas
• gylis
Pagr.progr.
Signalas
Pertr. apdor.
Reakcijos
laikas
2013
Perjungimo
laikas
©S.Maciulevičius
9
Pertraukčių lygiai
Pertraukčių prioritetai
Aptarnavimo tvarka:
Užklausos
2
1
3
1
2
Vieno lygio
sistema
3
2
Kelių lygių
sistema
3
1
2
1
Čia 1 pertrauktis turi žemiausią prioritetą, 3 - aukščiausią
2013
©S.Maciulevičius
10
Pertrauktys
Apdorojimo procedūra:
• pertraukties signalo priėmimas
• pertraukties atpažinimas
• būsenos įsiminimas
• pertrauktį apdorojančios programos vykdymas
• būsenos atstatymas
2013
©S.Maciulevičius
11
PSW (IBM/360)
Išorinių pertraukčių
kaukė
Valdymo režimas
Kontrolės schemų pertraukties kaukė
Laukimas / skaičiavimas
Uždavinys / supervizorius
Įvedimo / išvedimo
kaukė
Kanalų
Programos
kaukė
0
raktas
5 6 7 8
Sistemos kaukė
kodas
11 12 13 14 15 16
Komandos adresas
39 40
63
Sistemos kaukė:
Rezultato požymis [0] - multipl. kan. kaukė
[1-5] - selekt. kan. kaukė
Komandos ikgio kodas [6] - >5 kan. kaukė
2013
31
Būsena
Progr.
ILC CC pertr.
kaukė
32 33 34 35 36
Pertraukties
©S.Maciulevičius
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
12
CC formavimas IBM/360
CC reikšmės formavimo pavyzdys:
Komanda
00
01
10
11
Kodų sudėtis
=0,C=0 0,C=0 = 0,C0 0,C0
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
2013
©S.Maciulevičius
13
Pertraukčių realizacija IBM/360
Pertraukiančioji
programa
1
2
Pertraukiamoji
programa
Senieji 3
PSW
4
5
Būsenos
išsaugojimas
3
5
1
PSW registras
P.užklausa
(2 klasės) 1
2
Naujieji
PSW 3
4
Programa
4
2
Pertrauktoji
programa
6
Būsenos
atstatymas
5
2013
©S.Maciulevičius
14
Pertraukčių kontroleris (Intel)
INTA
D7 - D0
RD
WR
A0
Duom.
magistr.
buferis
Skait./
Įrašymo
logika
CS
CAS0
CAS1
CAS2
Kaskadinio
jungimo
valdymas
INT
Valdymo logika
Aptarn.
pertr.
registras
(ISR)
Prioriteto
schema
Pertr.
užklaus.
registras
(IRR)
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
Pertr. kaukės registras
(IMR)
SP/EN
2013
©S.Maciulevičius
15
Pertraukčių kontroleris
Adreso magistralė
Duomenų magistralė
Adreso
selektorius
CS
IOWC WR
IORC
Į P
A0
INT
D7-D0
8259A
RD
INTA INTA
IR0
CAS
Kaskadiniam
jungimui
IR7
Pertraukčių įėjimai
2013
©S.Maciulevičius
16
Pertraukčių kontrolerio naudojimas
Išor. įtaisas 00
Išor. įtaisas 01
Išor. įtaisas 07
Išor. įtaisas 08
Išor. įtaisas 09
Išor. įtaisas 15
Išor. įtaisas 56
Išor. įtaisas 57
Išor. įtaisas 63
2013
IR0
IR1 INT
IR2
…
IR7 CAS
IR0
IR1 INT
IR2
…
IR7 CAS
Vedamieji (Slaves)
8259A
Vedantysis
(Master)
8259A
IR0
IR1 INT
IR2
…
IR7CAS
Procesorius
NMI
INTR
IR0
IR1 INT
IR2
…
IR7 CAS
©S.Maciulevičius
17
Pertraukčių kontrolerio
naudojimas AT
PC/XT kompiuteriuose buvo tik viena mikroschema
8259A
PC/AT kompiuteriuose buvo 2 mikroschemos 8259A,
sujungtos tokiu būdu:
Vedamasis
8259A
Išor. įtaisas 02
Išor. įtaisas 03
Išor. įtaisas 09
IR0
IR1 INT
IR2
…
IR7 CAS
Vedantysis
8259A
Išor. įtaisas 00
Išor. įtaisas 01
Išor. įtaisas 10
Išor. įtaisas 11
Išor. įtaisas14
2013
©S.Maciulevičius
IR0
IR1 INT
IR2
IR3
IR4
IR5
IR6
IR7 CAS
Procesorius
NMI
INTR
18
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
2013
©S.Maciulevičius
19
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 rezervuoti 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
2013
©S.Maciulevičius
20
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
2013
©S.Maciulevičius
21
Į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
2013
©S.Maciulevičius
22
Problemų sprendimo keliai
 PĮ
moduliškumas (konstruktyvus
išbaigtumas, paprastas prijungimas)
 Unifikuoti duomenų formatai
 Unifikuota sąsaja (interfeisas)
 Unifikuoti komandų formatai ir tipai
2013
©S.Maciulevičius
23
Kompiuteris ir jo I/O įtaisai
Pertraukčių signalai
CPU
Kešas
Įvesties ir išvesties magistralė
I/O
kontroleris
Pagrindinė
atmintis
2013
MD
MD
I/O
kontroleris
Grafikos
išvesties
įtaisas
©S.Maciulevičius
I/O
kontroleris
LAN
24
Periferinių įtaisų darbo sparta
Įtaisas
Įv. - išv.
Klaviatūra
Pelė
Skeneris
Nuoseklus spausdintuvas
Lazerinis spausdintuvas
Grafinis displėjus
Vietinis tinklas (LAN)
Optinis diskas
Magnetinis diskas
Įvestis
Įvestis
Įvestis
Išvestis
Išvestis
Išvestis
Įvest/išv.
Atmintis
Atmintis
2013
©S.Maciulevičius
Partneris
Sparta
(KB/s)
0,01
0,02
200
Žmogus
Žmogus
Žmogus
Žmogus
1
Žmogus
100
Žmogus
100 000
Kompiuteris
200
Kompiuteris
1 000
Kompiuteris 40 000
25
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

2013
©S.Maciulevičius
26
Periferinio įtaiso kontrolerio
funkcijos
valdymas ir sinchronizavimas
ryšis su CPU
ryšis su periferiniu įtaisu









2013
adreso atpažinimas
komandų dekodavimas
informacijos apie būseną pateikimas
duomenų perdavimas
duomenų buferizavimas
klaidų kontrolė
©S.Maciulevičius
27
Periferinių įtaisų adresavimas
a) atskiros adresų
sritys (PDP)
b) persidengiančios
adresų sritys
0000
000000
I/O prievadai
00FF
RAM
RAM
777400
FFFFFFFF
777777 I/O prievadai
2013
©S.Maciulevičius
28
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
2013
©S.Maciulevičius
29
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į).

2013
©S.Maciulevičius
30
Prievadai (portai)
A magistralė
į periferinį įtaisą
Išvesties
prievadas 7
D magistralė
tribūvis
buferis 7
selektorius
L
&
0
išrinkimas
0
&
išvesti
įvesti
Įvesties
7
prievadas
0
L
iš periferinio
įtaiso
2013
©S.Maciulevičius
31
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ė
2013
©S.Maciulevičius
32
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ą
2013
©S.Maciulevičius
33
Programa valdomi duomenų
mainai
a) besąlyginiai mainai b) sąlyginiai mainai
Pasirengęs?
in/out port
Ne
Taip
in/out port
2013
©S.Maciulevičius
34
Programa valdomi duomenų
mainai
c) mainai pagal pertraukties signalą
Mainų
parengimas
Pertr. sistemos
parengimas
INTR
Pagrindinė
programa
2013
INTR
...
©S.Maciulevičius
Mainų
paprogramė
35
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)
2013
©S.Maciulevičius
36
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)
2013
©S.Maciulevičius
37
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ą
2013
©S.Maciulevičius
38
Tiesioginiai duomenų mainai
CPU parengia
mainus, progr.
TKA kontrolerį
CPU vykdo
kitą procesą
...
Ciklų
užėmimas
TKA valdo
mainus
tarp disko
ir atminties
INTR
2013
©S.Maciulevičius
39
Klasika: IBM kanalai
Procesorius
Pagrindinė
atmintis
2013
Kanalas
I/O
kontroleris
©S.Maciulevičius
40
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ą.
2013
©S.Maciulevičius
41
Tiesioginių mainų su atmintimi
kontroleris (8237A)
D
0 kanalas
Duomenų
magistralės
buferis
CAR (16)
BAR (16)
DREQ0
DACK0
CWR (16)
WCR (16)
A
MR (6)
Kontr. vald.
blokas
TR(16)
1 kanalas
DREQ1
DACK1
Valdymo
signalai
Režimų vald.
blokas
CR(8)
2 kanalas
DREQ2
DACK2
SR(8)
RR(4)
3 kanalas
MASK(4)
2013
DREQ3
DACK3
©S.Maciulevičius
42
Registrai
Registrai:








2013
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
43
Uždaviniai
2013
©S.Maciulevičius
44
Informacijos adresavimas keše
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:
31
17 16
tegas
2013
eilutės numeris (indeksas)
©S.Maciulevičius
5 4
0
vieta eilutėje
45
Informacijos adresavimas keše
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:
31
15 14
tegas
2013
eilutės numeris (indeksas)
©S.Maciulevičius
5 4
0
vieta eilutėje
46
Sparčiosios transliacijos buferis
Loginis adresas
iš procesoriaus
Loginio puslapio numeris Baito poslinkis
Miss
Puslapių
lentelė
Puslapio
atmintyje
nėra
Puslapių
mainai su
disku
2013
Sparčiosios
transliacijos
buferis
Įkrauti
TLB
Hit
OR
Fizinis adresas
į atmintį
Fizinio puslapio numeris Baito poslinkis
©S.Maciulevičius
47
Informacijos adresavimas TLB
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ų
2013
©S.Maciulevičius
48
Informacijos adresavimas TLB
Taigi:
 Vietai puslapyje nurodyti - 11 bitų
 Indeksui nurodyti - 4 bitų
 Tegui lieka 32 – 11 – 4 = 17 bitų
Atminties adreso struktūra:
31
15 14
tegas
11 10
ind
0
vieta puslapyje
Įrašo struktūra:
???
V ir kt.
2013
38 37
21 20
Tegas (17 bitų)
0
Fizinio psl. Nr.(21 bitas)
©S.Maciulevičius
49