KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS

Download Report

Transcript KOMPIUTERIŲ ARCHITEKTŪRA ir OPERACINĖS SISTEMOS

KOMPIUTERIŲ
ARCHITEKTŪRA ir
OPERACINĖS SISTEMOS
Doc. Stasys Maciulevičius
Kompiuterių katedra
[email protected]
1
Ankstesnės paskaitos santrauka
 kompiuterių našumas




įvertinimo principai
MIPS, MFLOPS, ...
procesorių numeriai
pagreitėjimas
 kompiuterių našumo įvertinimo testai
 SPEC
 TPC
 procesorių testai
2009-2013
S.Maciulevičius
2
Šios 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
2009-2013
S.Maciulevičius
3
Programuotojo požiūris į
skaičiavimus
Taikomieji uždaviniai
Nuo mašinos
nepriklausoma
Nuo mašinos
priklausoma
Aukšto lygmens kalba
Asemblerio kalba
Žemo lygmens
kalbos
Mašinos kalba
Kompiuterio
techninė įranga
2009-2013
S.Maciulevičius
4
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
add
sub
add
add
T,C,D;
T,T,B;
T,T,E;
T,T,F;
A,T,A;
rezultatas
2009-2013
T
T
T
T
A
=
=
=
=
=
CD
B+CD
B+CD-E
B+CD-E+F
B+CD-E+F+A
operandai
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.
Daugumos kompiuterių komandų sistemos
apima tokias komandų grupes:
2009-2013
S.Maciulevičius
6
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)
2009-2013
S.Maciulevičius
7
Komanda
Taigi, kompiuterio komanda yra
dvejetaine forma koduotas žodis, kuris
procesoriui nurodo vieną veiksmą, kuris
turi būti atliktas sprendžiant uždavinį
Todėl kompiuterio komandoje gali būti
nurodyta tokia informacija:
 kokia operacija turi būti atlikta (tai būtinoji kiekvienos
komandos dalis)
 operacijoje dalyvaujančių operandų nuorodos,
 sąlyga, apsprendžianti perėjimą prie paskesnės
operacijos
 paskesnės operacijos adresas
2009-2013
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-2013
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-2013
S.Maciulevičius
10
Stekas
Steku vadinama speciali
duomenų ir atminties
struktūra (last in, first out LIFO)
Informacija į steką įrašoma
nuosekliai, iš jo
nuskaitoma – taip pat
nuosekliai
Informacijos vietą steke
nurodo steko rodyklė
(stack pointer - SP)
2009-2013
S.Maciulevičius
SP
11
Stekas
Sutarsime, kad:
 SP rodo steko viršūnę –
laisvą elementą steke
 operacija Push SP
reikšmę padidina vienetu
ir į steką įrašo žodį
 operacija Pop iš steko
nuskaito žodį ir SP
reikšmę sumažina vienetu
2009-2013
S.Maciulevičius
SP
12
Steko funkcionavimas
Operacija
Steko
viršūnė
2009-2013
push A push B push C pop D pop E push C push A
X
A
B
C
B
A
C
A
X
X
A
B
A
X
A
B
X
X
X
A
X
X
X
A
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
S.Maciulevičius
13
Steko tipo architektūra
Procesorius
SR
SR
Stekas
SR
push
pop
ALU
ALU
Atmintis
2009-2013
Stekas: operandai saugomi
steke, rezultatas - taip pat,
operandų išrinkimas ir
įrašymas - procedūros
push, pop
 SR – steko rodyklė
 ALU – aritmetinisloginis įtaisas
(Arithmetic-Logic Unit)
S.Maciulevičius
14
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ų
2009-2013
S.Maciulevičius
15
Akumuliatoriaus tipo architektūra
Procesorius
Procesorius
Akumuliatorius
(AC): specialus
SR
ALU
Atmintis
2009-2013
load
store
SR AC
registras (kaupiantysis
registras), į kurią
informacija įrašoma
prieš operaciją; iš jo
rezultatai grąžinami į
atmintį
S.Maciulevičius
16
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:
1) Registre privalo būti tik vienas iš operandų
2) Registruose privalo būti abu operandai
2009-2013
S.Maciulevičius
17
Reg-Atm tipo architektūra
Procesorius
Rk
SR
ALU
ALU
Atmintis
Registre privalo būti tik vienas
iš operandų, o kitas imamas
tiesiai iš atminties
Ri
load
store
SR
Registrų failas: 8-16-32-…
- registrų grupė procesoriuje, į
kuriuos vienas iš operandų
įrašomas prieš operaciją
Ri, Rk – registrai
2009-2013
S.Maciulevičius
18
load-store tipo architektūra
Procesorius
Procesorius
Rk
SR
Rj
Ri
ALU
ALU
Atmintis
2009-2013
load
store
SR
Čia abu operandai prieš
aritmetinę ar loginę
operaciją turi būti įkelti į
registrus
Ri, Rj, Rk – registrai
S.Maciulevičius
19
Pagrindiniai komandų
sistemų tipai
Operatorius C := A + B šiose keturiose klasėse
realizuojamas tokiomis komandų sekomis:
Steko
Akumuliatoriaus Reg-Atm
PUSH A LOAD A
LOAD R1, A
PUSH B ADD
B
ADD
R3, R1, B
ADD
STORE C
STORE C, R3
POP C
load-store
LOAD R1, A
LOAD R2, B
ADD R3,R1,R2
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-2013
S.Maciulevičius
20
Steko tipo komandų sistema
Operatorius F = A×B + B×C - A×D šiuo atveju galėtų būti
realizuojamas tokia komandų seka:
Steko
viršūnė
PUSH
PUSH
MULT
PUSH
PUSH
MULT
PUSH
PUSH
MULT
ADD
SUB
POP
A
D
A
B
B
C
A
D
A
D×A
A
D×A
B
A
B× A
D×A
B
B×A
C
B
C×B
B×A
C×B+B×A D× A
C×B+B×A-D× A
D×A
D×A
B×A
D× A
D×A
F
2009-2013
S.Maciulevičius
21
Akumuliatoriaus tipo komandų sistema
Operatorius F = A×B + B×C - A×D šiuo atveju
galėtų būti realizuojamas tokia komandų seka:
Akumuliatoriaus
turinys
T turinys
LOAD A
MULT D
STORE T
LOAD A
MULT B
SUB T
STORE T
LOAD B
MULT C
ADD T
STORE F
2009-2013
A
D×A
D×A
A
B×A
B×A - D×A
B×A - D×A
B
B×C
C×B+B×A - D×A
C×B+B×A - D×A
?
?
D×A
D×A
D×A
D×A
B×A - D×A
B×A - D×A
B×A - D×A
B×A - D×A
B×A - D×A
S.Maciulevičius
22
Reg-Atm tipo komandų sistema
Operatorius F = A×B + B×C - A×D šiuo atveju
galėtų būti realizuojamas tokia komandų seka:
LOAD R1, A
MULT R1, B
LOAD R2, A
MULT R2, D
SUB R1, R2
LOAD R2, B
MULT R2, C
ADD R1, R2
STORE F, R1
2009-2013
R1
R2
turinys
turinys
A
?
B×A
?
B×A
A
B×A
D×A
B×A - D×A
D×A
B×A - D×A
B
B×A - D×A
B×C
B×A - D×A + B×C B×C
B×A - D×A + B×C B×C
S.Maciulevičius
23
Load-Store tipo komandų sistema
Operatorius F = A×B + B×C - A×D šiuo atveju
galėtų būti realizuojamas tokia komandų seka:
LOAD R1, A
LOAD R2, B
LOAD R3, C
LOAD R4, D
MULT R4, R1
MULT R3, R2
MULT R1, R2
SUB R1, R4
ADD R1, R3
STORE F, R1
2009-2013
R1
R2
turinys
turinys
A
?
A
B
A
B
A
B
A
B
A
B
B×A
B
B×A - D×A
B
B×A - D×A + B×C B
B×A - D×A + B×C B
R3
R3
turinys turinys
?
?
?
?
C
?
C
D
C
D×A
B×C
D×A
B×C
D×A
B×C
D×A
B×C
D×A
B×C
D×A
S.Maciulevičius
24
Palyginkime skirtingų tipų
architektūras
Palyginkite šio operatoriaus realizacijas
skirtingų tipų architektūrose:
1) komandų skaičiaus atžvilgiu;
2) kreipinių į atmintį skaičiaus atžvilgiu
2009-2013
S.Maciulevičius
25
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.
2009-2013
S.Maciulevičius
26
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-2013
S.Maciulevičius
27
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-2013
S.Maciulevičius
28
Komandų formatai
Bendruoju atveju procesorių 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-2013
S.Maciulevičius
29
Operandų nuorodos
Operando nuorodos pavidalas priklauso nuo to, koks yra
operandas, kur jis saugomas.
Operandu gali būti:
• kurio nors registro turinys,
registras ar ląstelė,
• atminties ląstelės turinys,
nurodomi adresu
• konstanta,
• adresas,
• sąlyga.
Nuo to priklauso operando nuorodai skirto lauko ar laukų
skaičius ir ilgis
2009-2013
S.Maciulevičius
30
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
2009-2013
S.Maciulevičius
31
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:
Add R4, 9(R1)
2009-2013
R4 := R4 + ATM[R1+9]
S.Maciulevičius
32
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 + 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:
Add R4, 8(R1) [R2]
2009-2013
R4 := R4 + ATM[8+R1+R2*m]
S.Maciulevičius
33
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 + ATM[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-2013
S.Maciulevičius
34
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ą
2009-2013
S.Maciulevičius
35
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
2009-2013
S.Maciulevičius
36
IBM/360 komandų formatai
Kai kurie IBM/360 šeimos kompiuterių komandų
formatai (procesorius turi 16 registrų):
RR
OpK
8 bitai
RS
OpK
8 bitai
RX
OpK
8 bitai
2009-2013
R1
R2
4 bitai 4 bitai
R3
R1
B2
4 bitai 4 bitai 4 bitai
R1
X2
B2
4 bitai 4 bitai 4 bitai
S.Maciulevičius
D2
12 bitų
D2
12 bitų
37
IBM/360 komandų pavyzdžiai
IBM/360 šeimos kompiuterių sudėties komandų
variantai:
RR 0001 1010 0101 1001
AR 5, 9
RX 0101 1010 0100 0001 0010 0000 0000 1000
A 4, 8(1,2)
2009-2013
S.Maciulevičius
38
Intel 8080 procesoriaus komandos
OpK
OpK
DDD
SSS
OpK
DDD
OpK
OpK
OpK RP
OpK
DDD
OpK RP
2009-2013
SSS
Santrumpos:
Registrų kodai:
DDD - imtuvas
(Destination)
SSS - šaltinis (Source)
OpK - operacijos kodas
RP - registrų pora
I
- operandas
(Immediate)
B0, B1 - adreso baitai
000
001
010
011
-B
-C
-D
-E
100
101
110
111
-H
-L
-M
-A
Registrų porų kodai:
00 - BC 10 - HL
01 - DE 11 - SP
OpK
OpK
OpK
I
B0
S.Maciulevičius
B1
39
Intel komandų formatai
Intel šeimos procesorių komandų formatai:
Dalys
Prefix
OpK
Mode
SIB
Displ
Immed
16 bitų
0-3
1
0-1
0
0-2
0-2
32 bitų
0-5
1-2
0-1
0-1
0-4
0-4
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.
2009-2013
S.Maciulevičius
40
Intel x86 procesorių komandos
Operacija
OpCode baitas:
d
Mode baitas:
mod
reg
r/m
SIB baitas:
sc
index
base
w
d = 0 - imtuvas - r/m, d = 1 - imtuvas - reg
w = 0 - baitas, w = 1 - žodis
2009-2013
S.Maciulevičius
41
Intel x86 komandų pavyzdžiai
add r/m, m/r : 000000dw mod reg r/m
variantai:
w bitas
• add ax, bx (ax := ax + bx): 00000011 11 000 011
• add ah, bl (ah := ah + bl): 00000010 11 100 011
• add adr, ax (ATM(adr) := ATM(adr) + ax; vieta
atmintyje nustatoma sumuojant bp, si ir poslinkio
disp8=96 turinį): 00000011 01 000 001 01100000
• add ax, adr (ax := ATM(adr) + ax; vieta atmintyje
nustatoma sumuojant bp, si ir poslinkio disp8=96 turinį):
00000001 01 000 001 01100000
d bitas
2009-2013
S.Maciulevičius
42
Itanium
Čia VLIW komanda - 3 “normalių”
komandų grupė (bundle):
2 komanda
41
1 komanda
41
T – Template laukas, nurodantis:
0 komanda
T
41
5
 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
2009-2013
S.Maciulevičius
43
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-2013
S.Maciulevičius
44
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)
2009-2013
S.Maciulevičius
45
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:
2009-2013
S.Maciulevičius
46
CISC ir RISC
Procesorius
Santykinis komandų
s
RISC I
VAX-11/780
PDP-11/70
M6800
k
a
i
č
i
u
s
1.0
0.8
0.9
0.9
Šie duomenys paimti iš D.Patterson tyrimo (11 C
kalba parašytų programų).
Ar tik dėl 10-20% verta rinktis CISC?
2009-2013
S.Maciulevičius
47
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-2013
S.Maciulevičius
48
CISC ir RISC architektūrų
palyginimas
CISC
Parametras
Sukurta
RISC
IBM
VAX
Intel SPARC MIPS
370/168 11/780 80486
R4000
1973
1978 1989 1987 1991
208
303
235
69
94
Komandos ilg. 2-6
2-57
1-11
4
4
Komandų sk.
Adres. būdų
4
22
11
1
1
Registrų sk.
16
16
8
40-520
32
2009-2013
S.Maciulevičius
49
RISC: PowerPC
PowerPC :
 3 operaciniai įtaisai
 32 bendrosios paskirties registrai
 32 bitų komandos; jų formatų pavyzdžiai:
OpK
0
D/S
56
A
10 11
immediate
15 16
20 21
31
OpK
D/S
A
B
OpK
OpK
D/S
A
B
C
RC
OpK
RC
RC=1 – požymių reikšmės įrašomos į požymių registrą,
RC=0 – ne
2009-2013
S.Maciulevičius
50