Kompiuterio Nasumas

Download Report

Transcript Kompiuterio Nasumas

Loginiai kompiuterio veikimo
principai
Interpretatoriumi aprašomos
mašinos struktūra
T - laikinojo saugojimo (papildomas) registras; IR - komandos registras;
PC - programos skaitiklis; M – atmintis; AR - jos adreso registras;
DR - jos duomenų registras.
Kompiuterio Našumas
Jei kompiuteris dirba multiprograminiu režimu, reikia atminti, kad, kol
vykdomos vieno uždavinio įvedimo-išvedimo operacijos, CPU vykdo
kito uždavinio skaičiavimus. Todėl kompiuteryje vieno uždavinio
sprendimo laikas nebūtinai bus minimaliai galimas.
CPU laikas gali būti padalintas į dvi dalis:
1) CPU laiką, skirtą šio uždavinio skaičiavimams, vadinamą vartotojo
CPU laiku;
2) sistemos CPU laiką, kai atitinkamas užduotis, susijusias su
vartotojo uždaviniu, vykdo operacinė sistema.
Programai vykdyti reikalingas CPU laikas TCPU gali būti išreikštas
dviem būdais:
TCPU = NCPU * T
arba
TCPU = NCPU / F ;
čia pažymėta:
· NCPU - programai vykdyti reikalingas taktų skaičius,
· T - takto periodas,
· F - taktų dažnis ( T = 1/F ).
Vietoje programos CPU taktų skaičiaus galima naudoti įvykdytų
komandų skaičių. Žinodami abu šiuos dydžius, galime paskaičiuoti
vidutinį komandos taktų skaičių:
CPI = NCPU / N,
čia pažymėta:
 CPI - vidutinis komandos taktų skaičius (Clock Per Instruction),
 N - programai vykdyti reikalingų komandų skaičius.
Apjungę abi formules, galime užrašyti:
TCPU = N * CPI * T arba TCPU = N * CPI / F.
Taigi, CPU našumas priklauso nuo trijų parametrų: taktų periodo (T,
dažnio), komandai įvykdyti reikalingo (CPI, vidutinio) taktų skaičiaus
ir programos komandų skaičiaus (N).
Jie yra priklausi nuo kitų dalykų:
 taktų dažnis priklauso nuo aparatūros technologijos ir organizacijos;
 CPI priklauso nuo organizacijos ir komandų sistemos architektūros;
 komandų skaičius priklauso nuo komandų sistemos architektūros ir
kompiliatorių kūrimo technologijos.
MIPS ir MFLOPS
Vienu iš populiarių rodiklių, apibūdinančių kompiuterių našumą, yra
MIPS metrika:
MIPS = N / (T * 106) = F / (CPI * 106 ).
Tačiau reikia atminti, kad:
 MIPS priklauso nuo komandų sistemos, todėl sunku palyginti
kompiuterius, turinčių skirtingas komandų sistemas; net ir tam
pačiam kompiuteriui MIPS priklauso nuo programos, naudojamos
rodikliui nustatyti; atskirais atvejais MIPS netgi veikia atvirkščiai nei
našumas. Kitas populiarus rodiklis, apibūdinantis kompiuterių našumą
apdorojant slankaus kablelio skaičius, yra MFLOPS metrika:
MFLOPS = N / (T * 106) .
Nustatant šio rodiklio reikšmę, kompiuteris vykdo programas, kuriose
apdorojami slankaus kablelio duomenys. Žinoma, ir šis rodiklis
priklauso ir nuo programos. Reikia atminti, kad:
 skirtingi kompiuteriai dažnai turi skirtingus slankaus kablelio
operacijų rinkinius;
 pačių slankaus kablelio operacijų trukmė kinta plačiose ribose.
Kompiuterio našumo testai
Visus dabar žinomus kompiuterių našumo įvertinimo testus pagal jų
"kilmę" priimta skirstyti į tris grupes:
1. Gamintojų testai; juos kuria kompiuterius gaminančios firmos
"vidiniam" naudojimui - savo produktų įvertinimui. Pavyzdžiui, IBM
sukūrė specialų testų paketą LSPR System/370 ir System/390 šeimų
kompiuteriams įvertinti, o taip pat testus RAMP-C - AS/400
kompiuteriams. Tokie testai geriausiai parodo šeimos kompiuterių
galimybes, tačiau jų tiesiogiai negalima panaudoti kitiems
kompiuteriams, nes testai pernelyg orientuoti į konkrečią architektūrą.
2. Standartiniai testai; jie pretenduoja į plataus spektro kompiuterių
našumo įvertinimą ir dažnai laikomi universaliais. Šiuos testus kuria
nepriklausomi specialistai, turintys autoritetą kompiuterių pasaulyje.
Tokiais yra SPEC, TPC, Linpack testai.
3. Vartotojų testai; juos kuria garsios kompiuterių firmos,
besispecializuojančios įvairių kompiuterinių technologijų diegimo
srityje, arba panašios krypties vartotojų grupės. Todėl šie testai
orientuoti į kompiuterių ir programinės įrangos, geriausiai tinkančių
konkretiems taikymo uždaviniams spręsti, parinkimą.
Kompiuterio našumo testai
Pagal testavimui naudojamų programų tipą skiriami 4 testų tipai, kuriuos
išvardinsime jų pasikliautinumo mažėjimo tvarka.
1) Realios programos. Tai gali būti populiarių programavimo kalbų
kompiliatoriai, tekstų procesoriai, CAD programos (pvz., Spice).
2) Branduoliai - tai realių programų fragmentai, panaudojami
našumui įvertinti. Jie geriausiai išryškina realioms programoms
svarbias kompiuterio savybes. Tokie yra Livermoro ciklai ir Linpack
testas.
3) Žaidimų tipo testai - tai trumpos (10-100 eilučių) programos,
kurios turi suskaičiuoti iš anksto žinomą rezultatą. Jas lengva įvesti ir
paleisti bet kokiame kompiuteryje. Tokių testų pavyzdžiu gali būti
Erastoteno rėtis, Hanojaus bokštai, greito rūšiavimo programos.
4) Dirbtiniai (sintetiniai) testai - programos, kuriose bandoma
pasiekti operacijų ir operandų tipų dažnių santykį, būdingą plačiai
uždavinių klasei. Populiarūs buvo Whetstono ir Dhrystono testai.
SPEC testai
Pirmieji SPEC testai (SPEC89) buvo skirti mikroprocesorių galimybių įvertinimui
sprendžiant uždavinius, kuriems reikalingi intensyvūs skaičiavimai.
Formuodama šį testų rinkinį, SPEC vadovavosi tokiais sumetimais:
 galimybė testuoti įvairias kompiuterių architektūras (32 ir 64 bitų, įskaitant Alpha,
Intel, PA-RISC, Rxx00, Sparc ir kt.);
 galimybė dirbti įvairiose operacinėse sistemose (UNIX, NT, VMS);
 testai neturi apimti įvedimo ir išvedimo;
 testai neturi apimti tinklo darbo arba grafikos;
 testai turi būti vykdomi 64MB RAM be informacijos mainų su išorine atmintimi
(SPEC mano, kad 64MB yra minimali atminties talpa intensyviems skaičiavimams
atlikti nesikreipiant į diską);
 testai turi būti vykdomi ne mažiau kaip 5 minutes DEC firmos kompiuteryje Alpha,
dirbančiame 200 MHz dažniu;
 ne daugiau kaip 5 procentai testavimo laiko gali tekti ne SPEC pateikto kodo
apdorojimui;
 kompiliatorių projektuotojai įsigudrino realizuoti priemones, optimizuojančias
kompiuterio našumą kai kurių testų atžvilgiu.
Operacinis ir valdymo įtaisas
Procesorius = Operacinis įtaisas + Valdymo įtaisas:
Valdymo įtaisas
Projektuojamas naudojant klasikinio baigtinio automato struktūrinės sintezės metodiką:
1) detalizuojamas algoritmas (kiekvienas jo žingsnis);
2) išskiriamos ir pažymimos baigtinio automato būsenos;
3) sudaroma baigtinio automato perėjimo ir išėjimo signalų lentelė(s);
4) koduojamos būsenos, įėjimo ir išėjimo signalai;
5) užrašomos Būlio funkcijos, aprašančios baigtinio automato perėjimo ir išėjimo signalus;
6) sintezuojama loginė schema, realizuojanti sudarytąsias Būlio funkcijas; ši schema
papildoma atminties elementais, saugančiais būsenas.
Ši loginė schema gali būti realizuota naudojant ROM:
Valdymo įtaisas
1951 m. Uilksas (M.Wilkes) pasiūlė
mikroprograminio valdymo principą,
kurio esmę galima būtų nusakyti
taip:
 įtaiso darbo algoritmas išskaidomas į
žingsnius, aprašančius vieną jo darbo
ciklą;
 signalai, reikalingi žingsnio
veiksmams valdyti, vadinami
mikrooperacijomis;
 žingsnį atitinkančių mikrooperacijų
rinkinys sudaro mikrokomandą;
 mikrokomanda papildoma
informacija, būtina "sekančios"
mikrokomandos išrinkimui;
 mikrokomandų seka, atitinkanti
algoritmą ar jo užbaigtą dalį, sudaro
mikroprogramą.
Mikroprogramos saugomos pastovioje
atmintyje (ROM):
DLX komandų vykdymo
algoritmas
DLX komandų formatai
DLX Komandos vykdymas
1. Komandos išrinkimas:
MAR  PC; IR  M[MAR]
2. Komandos dekodavimas/registrų išrinkimas:
A  Rs1; B  Rs2; PC  PC + 4
3. Vykdymas/EA skaičiavimas:
a) išrinkimas iš atminties:
MAR  A + (IR16)16##IR16..31; MDR  Rd
b) ALU komanda:
ALUout  A op (B or (IR16)16##IR16..31)
c) perėjimas:
ALUout  PC + (IR16)16##IR16..31); cond  (A op 0)
4. Atminties išrinkimas/perėjimas:
a) išrinkimas/įrašymas:
MDR  M[MAR] arba M[MAR]  MDR
b) perėjimas:
IF (cond) PC  ALUout
5. Rezultato įrašymas:
Rd  ALUout or MDR
Paaiškinimai: MAR - atminties adresų registras; PC - programos skaitiklis; IR komandos registras; A,B - procesoriaus registrai; Rs1, Rs2 – registrai; MDR atminties duomenų registras; Rd - atminties ląstelė.
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) būna 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ą?
Vidinės CPU atminties tipas yra pagrindinis skiriamasis požymis.
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.
Yra dvi pagrindinės charakteristikos, kurios skiria bendrosios paskirties registrų
architektūras:
1) aritmetinių komandų operandų skaičius - 2 ar 3; pirmu atveju rezultatas talpinamas į
vieno iš operandų vietą);
2) kiek operandų komandoje gali būti atmintyje; šis skaičius gali būti nuo 0 iki 3.
Tuomet turime tokias šių dviejų charakteristikų reikšmių kombinacijas:
Atminties adresų skaičius tipinėje
ALU komandoje
M aksimalus operandų
skaičius
Pavyzdžiai
0
2
3
IBM RT-PC
SPARC, M IPS
1
2
3
M C68000, dalis IBM
360
dalis IBM 360 (RS)
2
2
3
PDP-11, dalis IBM
360 (SS)
3
3
VAX
Taigi, yra 7 galimos kombinacijos. Trys iš jų būdingesnės ir naudojamos klasifikuojant
daugumą egzistuojančių kompiuterių:
 registras-registras,
 registras-atmintis,
 atmintis-atmintis.
Tipas
Registrasregistras(0,3)
Privalumai
Paprastos, fiksuoto ilgio
komandos. Paprastas kodo
generavimo modelis. Komandų
vykdymo trukmė maždaug
vienoda
Trūkumai
Didesnis komandų skaičius
programoje. Trumpų komandų
kodavimas perteklinis
Registrasatmintis(1,2)
Operandai ne ekvivalentiški.
Duomenis galima panaudoti be
Vienas iš šaltinių pakeičiamas
išanstinio jų įkrovimo į registrus.
rezultatu, todėl jis prarandamas.
Komandų formatai nesudėtingi,
Komandų vykdymo trukmė
pakankamai koompaktiškas kodas
priklauso nuo operandų vietos
Atmintisatmintis(3,3)
Kompaktiškiausia programa.
Nereikia registrų tarpiniams
rezultatams saugoti
Labai įvairus komandų ilgis, ypač
3 operandų komandų. Daug
kreipinių į atmintį, todėl ji labai
apkrauta
Atminties adresavimas
Nepriklausomai nuo to, kokio tipo komandų
sistemos architektūrą (registras-registras,
registras-atmintis ar atmintis-atmintis)
turime, duomenys turi būti skaitomi iš
atminties. Kaip interpretuojamas atminties
adresas? Kaip duomenys išrenkami iš
atminties?
Dauguma kompiuterių vieno kreipinio į atmintį
metu išrenka baitus, pusžodžius (16 bitų),
žodžius ar net dvigubus žodžius (64 bitus).
Panagrinėkime, kokią įtaką išrinkimo
procedūrai turi baitų tvarka atminties
žodyje ir atminties žodžio ilgis.
Yra du skirtingi baitų išdėstymo atminties
žodyje variantai:
1) Little Endian, kai žodžio adresą
atitinkantis baitas yra žemiausioje atminties
žodžio pozicijoje - dešinėje (žr. paveikslą,
virš.);
2) Big Endian, kai žodžio adresą
atitinkantis baitas yra aukščiausioje
atminties žodžio pozicijoje - kairėje (žr.
paveikslą, apač.).
Adresavimo būdai
Operandų vietos nurodymui 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 lastelę, kurios adresas A.
1. Registrinė - operandai yra registre, kurio numeris nurodytas komandoje, pavyzdžiui:
ADD R4, R1 R4 := R4 + R1
2. Netiesioginė registrinė - operando adresas yra registre, kurio numeris nurodytas komandoje, pavyzdžiui:
ADD R4, (R1) R4 := R4 + M[R1]
Tinka išrenkant rodykle (pointer) nurodytą operandą arba operandą pagal paskaičiuotą adresą.
2a. Netiesioginė atmintyje - operando adresas yra atminties lastelėje, kurios adresas nurodytas registre, kurio
numeris duotas komandoje, pavyzdžiui:
ADD R4, @(R1) R4 := R4 + M[M[R1]]
Čia R1 galėtų būti rodyklės adresas.
3. Autoinkrementinė - kaip ir netiesioginėje registrinėje, operando adresas yra registre, kurio numeris
nurodytas komandoje; išrinkus operandą, šio registro turinys padidinamas dydžiu, atitinkančiu operando
ilgį (l). Pavyzdžiui:
ADD R4, (R1)+ R4 := R4 + M[R1]; R1 := R1 + l
Šis būdas gerai tinka nuosekliam masyvo elementų išrinkimui.
4. Autodekrementinė - kaip ir autoinkrementinėje, operando adresas yra registre, kurio numeris nurodytas
komandoje; prieš išrenkant operandą, šio registro turinys sumažinamas dydžiu, atitinkančiu operando ilgį
(l). Pavyzdžiui:
ADD R4, -(R1) R1 := R1 - l;
R4 := R4 + M[R1] Šis būdas tinka nuosekliam masyvo elementų išrinkimui atvirkščia tvarka. Abu pastarieji
būdai gali būti panaudoti stekui realizuoti kaip push ir pop operacijos.
5. Bazinė arba su poslinkiu - operando adresas paskaičiuojamas prie registro turinio
pridedant nurodytą poslinkio rekšmę; tinka lokaliniams kintamiesiems pasiekti.
Pavyzdžiui:
ADD R4, 9(R1) R4 := R4 + M[R1+9]
6. 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]
6a. Indeksinė masteliuota- nuo indeksinės skiriasi tik tuo, kad indekso reikšmė
padauginama iš koeficiento, atitinkančio duomenų elemento ilgį (l). Pavyzdžiui:
ADD R4, (R1) [R2] R4 := R4 + M[R1+R2*l]
7. 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]
8. 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
Valdymo perdavimo komandose reikia nurodyti perėjimo adresą. Dažniausiai tam
naudojama santykinė adresacija komandų skaitiklio atžvilgiu. Tai naudinga, nes:
1) dažniausiai pasitaiko perėjimai, esantys arti perėjimo vietos atmintyje; tokiems
perėjimams nurodyti pakanka trumpo poslinkio (offset);
2) toks kodas yra nepriklausomas nuo jo talpinimo vietos atmintyje.
Tais atvejais, kai kompiliavimo metu negalima nustatyti perėjimo vietos, naudojamas
netiesioginės adresacijos būdas, perėjimo adresą nurodant registre.
Pertraukiai
Pertraukių rūšys
4
P
R
I
E
V
A
D
A
I
1 I/O
Įrenginys
ROM
2
CP
1 DMA
Įrenginys
2
2
3
3
RAM
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
Programinės (sinchroniškos procesui):
 programiniai (pertr. sistemai tikrinti)
 derinimo (po kiekvienos komandos analizė)
Vykdymo variantai:
 po komandos (dažniausiai)
 komandoje (dažniausiai)
* kai negalima užbaigti (puslapio
klaida)
* ilgai trunkančioms komandoms
Apdorojama:
 mikroprograma (kartais)
 paprograme (dažniausiai)
 aparatūra (retai)
Informacijos perdavimas
kompiuteryje
Sinchroninis
Asinchroninis
Kešavimas
Nepriklausomai nuo to, koks yra kešo organizacijos būdas, kešo ar jo
dalies (vienos krypties) struktūra atrodo taip:
Eilutės dešinėje dalyje yra duomenų laukas (4-128 baitai). Eilutės kairėje
- tegas, tai yra informacija, kuri padeda nustatyti, kuris iš daugelio
galimų pagrindinės atminties blokų yra kopijuotas į šią eilutę. Be to, į
tego sudėtį įeina ir kita informacija
Kešo organizavimas