Käskude tüübid - Arvuti komponendid ja arhitektuurid Lk

Mitmesiiniline mälu
Käskude tüübid
Protsessori poolt teostatavad masinkäskudele vastavad operatsioonid on tavaliselt liigitatavad järgmiselt:
andmete ülekanne (registritest registritesse, mälust registrisse ja vastupidi)
loogilis-aritmeetilised tehted (liitmine, lahutamine, operandi bittide rotatsioon, paremnihutus, vasaknihutus jne)
bittide käitlus
stringide käitlus
käsuvoog (tingimuslikud ja mittetingimuslikud hargnemised, alamprogrammid jne)
eranditöötlus
Sisendi/väljundi haldus
protsessori töö juhtimine
Mälupiirkonnad ja pinu
Arvutisüsteemi põhimälu on üldiselt korraldatud erinevate piirkondadena, millest igaüks toetab mingit spetsiifilist funktsiooni. Programmi käivitamine võib näiteks jaotada selle mälu "koodi" piirkonnaks, mis sisaldab programme, ning "andmete" piirkonnaks.
Kasutada oleva mälu lihtsamaks jagamiseks spetsialiseeritud piirkondadeks kasutavad protsessorid tavaliselt spetsialiseeritud registreid, mis haldavad eri alade siseseid aadresse.
Peaaegu kõik protsessorid toetavad põhimälu struktuuri, mida kutsutakse pinuks. Mõned protsessorid, nagu näiteks Motorola 68000, suudavad toetada erisuguseid pinusid, sõltuvalt täitmise viisist (näit kasutaja/haldur). Sellisel juhul tehakse vahet kasutaja pinu ja halduri pinu vahel.
Alamprogrammid
Tavaliselt sisaldab programm käskude jadasid, mida täidetakse rohkem kui üks kord programmi töötamise ajal. Tüüpiliseks näiteks on koodifragment, mis võtab sisendina vastu tähtede jada ning teisendab kõik jadas ilmnevad suurtähed väiketähtedeks.
Sellisel juhul ei korrata iga kord vajaduse tekkides koodisegmenti uuesti, lihtsam on tekitada mehhanism, mis võimaldab täita sama segmenti erinevatel puhkudel ja võimalusel ka erinevate andmete puhul.
Koodi segmente nimetatakse alamprogrammideks ja nende korralikuks haldamiseks vajatakse teatud mehhanisme (masinkäske), mis toetavad:
lülitused alamprogrammile ja naasmine kutseprogrammi juurde
andmete parameetri vahetamine
alamprogrammile võimaluse andmine mõne teise alamprogrammi väljakutsumiseks
Katkestused ja erandid
Von Neumanni mudel itereerib lõpmatuseni tsüklit väljakutse/dekodeering/rakendamine.
Selle alusmudeliga pole võimalik toime tulla sellistes olukordades (nimetatakse eranditeks), kus süsteem peab reageerima välistele sündmustele juhtumitel, mis pole programmile teada.
Tüüpilisteks näideteks on suhtlemine operatsioonisüsteemiga, andmevahetus välisseadmetega, silumise operatsioonid, viga, käsu viga jne.
Erandite korralikuks haldamiseks on vaja spetsiaalseid käske, mis suudavad katkestada protsessorit (st. ajutiselt peatada programmi rakendamist), käivitada alamprogrammi, mis haldab seda spetsiifilist erandit (katkestusrutiin ISR) ning kui katkestusrutiin on lõpetanud, taastada katkestatud programmi täpselt samas punktis, kus see oli peatatud.
CISC ja RISC lähenemine protsessori ülesehituses
Protsessori arhitektuuri paradigmad on tavaliselt jagatud kaheks: CISC ja RISC (vastavalt komplekskäsustikuga (täisprotsessoriga) ja kärbitud käsustikuga arvuti). Põhimõtteliselt erinevad need käsustiku iseloomult, mida nende keskprotsessor tõlgendab.
CISC protsessorite peamiseks iseloomustavaks jooneks on nende kalduvus vähendada käskude arvu programmis, pakkudes suurt hulka käske, mis hõlmavad suurt valikut erinevaid ülesandeid. Käsud tõlgitakse sageli keskprotsessori poolt reaks mikrokäskudeks, mis teostavad keerulisemaid CISC käsu poolt nõutud operatsioone. Teostatavate ülesannete eripalgelisuse tõttu vajavad CISC käsud muutuval arvul bittide kodeerimist ja rohkem kui üht hankimise ja rakendamise tsüklit.
RISC -süsteemidel on aga kalduvus lühendada aega, mis kulub elementaaroperatsioonidele (takt), lihtsustades protsessori poolt toetavaid käske. Sellisel juhul selliseid käske ei tõlgita mikrokäskudeks vaid need rakendatakse otse riistvara skeemide poolt. Varjuküljeks on selle lähenemise juures tavaliselt see, et mingi programmi teostamiseks vajatakse rohkem käske võrreldes CISC-protsessoritega ning tõlkimine programmide ja masinkäskude vahel on tavaliselt keerulisem. Teisalt sobivad RISC-süsteemid paremini protsessi käskude töötlemiseks paralleelselt konveierrakendustes. Sellisel juhul keskprotsessor töötab korraga rohkem kui ühe käsuga, osaliselt kattuvate järjestikuste käskude teostamisega, mis suurendab tunduvalt läbilaskevõimet. Sellel põhjusel on RISC-süsteemide puhul usutud, et need on kiiremad kui CISC -süsteemid.
Motorola 680x0 perekonna protsessorid on näiteks CISC -tüüpi lahendusest. RISC -protsessorite näiteks võiks esitada ka PowerPC, SPARC, MIPS ja Alpha. Protsessorid Intel x86 (IA-32) perekonnast on sageli liigitatud CISC-protsessorite hulka. Oma sisemistes rakendustes kalduvad need ühendama mõlemat lähenemisviisi.
C.1.2.2 Käsukonveierid ja käsu taseme parallelism Konveier
Konveieri meetod kasutab ära seda seika, et mis tahes käsku võib vaadelda kui eraldiseisvat mikrooperatsioonide jada. Konveiermeetodi aluseks on mikrooperatsioonide ajaline kattuvus, mis vastavad eri käskudele, just nagu koosteliinil (konveieril). Näiteks laetakse iga käsk eraldi dekodeerimisregistrisse (väljakutsumine), dekodeeritakse ja lõpuks täidetakse. Samaaegselt suudab protsessor hallata kolme erinevat käsku, millest üks on väljakutsumise astmel, üks dekodeerimise astmel ja üks täitmise astmel.
Konveierid koosnevad tavaliselt kolmest astmest:
väljakutsumise juhendid mälust
registrite lugemine ja käskude dekodeerimine
käsu täitmine ja aadressi arvutamine
operandi juurdepääs andmete mälus
tulemuste kirjutamine registritesse.
Alati pole konveieris võimalik kasutada järgnevate käskude osalist kattumist. See võib juhtuda siis, kui näiteks järgneva käsu täitmine sõltub käsiolevate käskude tulemustest (tingimusliku hargnemise käsk). Sellisel juhul on ikkagi vajalik oodata käsioleva käsu lõpetamist enne uue käsu täitmise alustamist. Sellises olukorras öeldakse, et konveieril on seisak.
Seisak võib veel juhtuda siis, kui mingi käsk nõuab operandina eelmise käsu tulemust. Loomulikult vähendab konveieri peatumine süsteemi jõudlust. On olemas mitmesuguseid tehnikaid, kuidas seisakuid vältida, muuhulgas käskude järjekorra ümberkorraldamine (püüdes vältida olukorda, kus mingile käsule eelnevad vahetult sellised käsud, millest selle täitmine sõltub).
Käsutaseme parallelism
Käsutaseme parallelism (ILP) viitab võimalusele täita mitut käsku samaaegselt. On olemas kaks varianti ILP lahendusteks:
Rohkemate käskude samaaegne täitmine, mis peavad siiski olema erineval täitmise astmetel. Sellisel juhul on tegemist konveieriga.
Eri käskude samal astmel oleku võimaldamine. See lahendus muidugi nõuab täitmise ressursside mitmekordistamist. Seda lahendust pakub superskalaarne protsessor.
Erinevat lähenemist kasutab ilmutatud paralleelkäskudega arvutamine (EPIC), eriti just ülipikk käsusõna (VLIW) kasutavad arhitektuurid, kus üks makrokäsk rühmitab enda alla rohkem käskusid, kasutades erinevaid funktsionaalseid seadmeid.
Superskalaarsed arhitektuurid
Me nimetame superskalaarseteks selliseid arhitektuure, mis on varustatud rohkem kui ühe konveieriga. Selliste arhitektuuride puhul on funktsionaalsed seadmed konveieris dubleeritud. Seega peale rohkem kui käsu samaaegsele täitmisele on käsil erinevad käsud samal täitmise astmel. On olemas kaks lahendust superskalaarses protsessoris:
sõltumatud konveierid: iga funktsionaalne seade kuulub mingi kindla konveieri juurde
osaliselt kattuvad konveierid: funktsionaalsete seadmete osas kulude kokkuhoidmiseks on mõned seadmed eri konveierite jaoks ühised.
Teisel juhul vajatakse täiendavaid riistvara komponente, mis võimaldaksid lahendada konflikte, kus konveierid üritavad juurdepääsu samale jagatud seadmele üheaegselt.
Intel Pentiumi protsessoril on konveier u, mida saab kasutada ükskõik milliseks operatsiooniks, ning konveier v, mida saab kasutada ainult lihtoperatsioonideks, mis teostatakse täisarvulistel operandidel.
C.1.2.3 Mikroprotsessori omadused ja jõudlus
Erinevate arhitektuuride võrdlemiseks on väga oluline suuta mõõta protsessori jõudlust nii projekteerija kui kasutaja perspektiivist. Kaasaegsete protsessorite keeruline ehitus muudab aga raskeks protsessori jõudluse võrreldava mõõtmise. Minevikus võeti taktsagedus, st. pöördimpulsi pikkus (takti lõpule viimise aeg) kasutusele protsessori jõudluse mõõtühikuna. Kaasaegsetes süsteemides ei ole taktsagedusel enam nii määravat tähendust, sest näiteks konveiersüsteem, milles teostatakse n astet, võib olla niisama kiire kui n kordse kiirusega protsessor ilma konveierita.
Hiljem võeti mõõtühikuna kasutusele MIPS ehk miljon käsku sekundis. Kui ka see ühik osutus ebakohaseks erinevate arhitektuuride võrdlemisel.
Praegu toetutakse sobivatele tarkvarakomplektidele, mida nimetatakse reeperiteks). Kui neid rakendatakse erinevates süsteemides, siis võimaldavad need arvutite projekteerijatel võrrelda jõudlusi eksperimentaalsel teel saadud tulemuste põhjal.
C.1.3 Arvutiarhitektuurid C.1.3.1 Üldotstarbelise arvuti arhitektuur
Arvutisüsteem koosneb põhimõtteliselt järgmistest funktsionaalsetest seadmetest:
Sisend/väljundseadmed, mis võimaldavad andmevahetust välismaailmaga (kasutajad, välisseadmed, teised arvutid jne), millega arvuti peab suhtlema. Need kohandavad vajadusel sellise informatsiooni arvutisiseselt kasutatavasse formaati.
Mäluseade, mis on vajalik töödeldava tarkvara ja andmete (sisend- ja väljundandmete ning vahetulemuste) salvestamiseks.
Töötlusseade (protsessor), ms dekodeerib ja täidab mäluseadmesse salvestatud programmi käske.
Sidumisseade (Bus), mis on vajalik ülalnimetatud seadmete ühendamiseks, et võimaldada andmevahetust.
Mälu on arvutisüsteemi funktsionaalne seade, mis salvestab programme ja andmeid. Mälus teostatavateks elementaarseteks operatsioonideks on: valik, lugemine ja kirjutamine. Operatsioonide valimine määrab ära mälu füüsilise osa (“asukoht” või “pesa”), kuhu andmed salvestatakse (kirjutamise operatsiooni abil) või kust andmed hangitakse (lugemise operatsiooni abil). Mälus füüsilise osa valimise aluseks on väärtus, mis on unikaalne ning kinnistatud selle osa juurde (“aadress”).
Hinna ja jõudluse optimeerimiseks sisaldavad arvutisüsteemid sageli mitut tüüpi mälusid, millel on erinev tehnika ja juurdepääsuviisid ning neid kasutatakse eri puhkudel erinevate ülesannete täitmiseks. Näiteks sisaldab süsteem tavaliselt põhimälu, mis on enamasti valmistatud RAM-komponentidest, mis sisaldavad hetkel täidetavaid programme ja sellega seatud andmeid, ning massmälu, milleks tavaliselt on magnetkettad, mida kasutatakse andmete ja programmide arhiveerimiseks, mida hetkel ei kasutata.
Sisend/väljundseadmed või välisseadmed vastutavad arvuti ja välismaailma infovahetuse ja andmete sisestamise / väljastamise eest.
Nad peavad ka teisendama informatsiooni sellistesse formaatidesse, mis oleks arusaadav nii protsessorile kui välismaailmale. Tüüpilisteks sisendseadmete näideteks on klaviatuurid ja hiired, väljundseadmeteks on aga monitorid, printerid ja valjuhääldid. Lisaks on olemas ka seadmeid, mis võivad toimida nii sisend- kui väljundseadmena, näiteks modemid ja võrguliidesed.
Et protsessor saaks vahetada andmeid välisseadmetega, vajame me:
füüsilist meediumi (“siin”)
kohast "liidest, mis võimaldaks protsessoril vahetada signaale välisseadmetega
signaalide jada (“protokoll”) protsessori ja välisseadme vahelise suhtlemise haldamiseks.
Kasutatakse mitmesuguseid parameetreid, mis mõjutavad arvutisüsteemi jõudlust. Nendeks on muuhulgas:
protsessori parallelism: sisemiste registrite ja funktsionaalsete seadmete ribalaius bittides; tüüpilisteks väärtusteks on 8, 16, 32, 64 bitti.
mälu parallelism: mälu masinasõna bittides, st, bittide arv, millele saab korraga ligipääsu ühe kirjutamise või lugemise operatsiooniga
Siini parallelism: siini ribalaius bittides
Taktsagedus: sünkroniseerimissignaali (kella) sagedus, mis juhib funktsionaalseid seadmeid protsessoris
Masina tsükkel: aeg, mis kulub protsessoril väljakutse-rakendamise-dekodeerimise tsükli läbimiseks. Selle pikkust mõjutab nii protsessori taktsagedus kui ka mälu kiirus.
C.1.3.2 Arvutisüsteemi siinide tüübid
Siin on füüsiline tarind, tavaliselt konnektorite kogum, mis ühendab kaht või enamat seadet. Siin on jagatud tarind selles mõttes, et väärtused, mille seade on kirjutanud siinile, on kättesaadavad kõigile selle siiniga ühendatud seadmetele.
Põhimõtteliselt kasutatakse siine enamasti kolme tüüpi informatsiooni vahetamiseks: andmed, aadress ja olekut/juhtimist puudutav info. Seetõttu kirjelduse lihtsustamiseks kõneldakse kolme tüüpi siinidest: andmesiin, aadressisiin ja juhtsignaalide siin. Praktikas pindalale seatud piirangute tõttu kasutatakse eri ajahetkedel ühte füüsilist struktuuri sageli eri tüüpi informatsiooni vahendamiseks (andmed, aadressid, olekut/juhtimist puudutav info).
Viimase põlvkonna arvutisüsteemides on jõudluse optimeerimiseks sageli kasutatud sellist arhitektuurilist lahendust, mis sarnaneb . peatükis toodud joonisel esitatule, kus on kasutatud mitmel tasemel siine.
Mitmesiinilise lahenduse põhjuseks on seik, et me vajame kiiremaid rakendusi mälusiini jaoks, mis on kriitiline üldise jõudluse seisukohast, sest see haldab andmevahetust protsessori ja mälu vahel, samas kui sisend/väljundsiinid on tavaliselt vähem kriitilised, kuna neid rakendatakse aeglasemate välisseadmetega ühendamiseks.
Siini standardid
Selles peatükis antakse peamiste siini tüüpide lühikesed kirjeldused.
ISA (Industry Standard Architecture) on siinide süsteem IBM PC-de ja sarnastele seadmetele. Algne 1981. aastast pärit standard sisaldas 8 bitist siini, mis töötas sagedusel 4,77 MHz. 1984. aastal pärast IBM AT-arvuti tootmise alustamist (mis kasutas Inteli protsessorit 80286 aastast 1982), laiendati ISA siini 16 bitiseks ja sagedus kasvaas 8,3 MHz-ni.
MCA (Micro Channel Architecture) IBM-i poolt 1987. aastal kasutuselevõetud 32-bitine siin, mis lisati nende arvutile PS/2 ja kasutati koos Inteli 80386 protsessoriga. IBM püüdis litsentseerida MCA siini ka teistele tootjatele, kuid need lükkasid selle tagasi, sest see ei ühildunud paljude olemasolevate ISA-seadmetega. IBM jätkab MCA kaasaegse versiooni kasutamist mõnedes oma serveri lahendustest.
EISA (Extended Industry Standard Architecture) ehk laiendatud tööstusstandardi arhitektuur on 8,3 MHz taktsagedusel töötav 32-bitine siin, mis loodi tööstuse poolt vastuseks MCA siinile. EISA on tagasiulatuvalt kokkusobiv, nii et ISA siiniga seadmeid saab sellega ühendada. EISA suudab ka automaatselt seadistada adapteri kaartide konfiguratsiooni, vabastades sellega kasutajad käsitsi lülitite seadmisest.
NuBus on 32-bitine siin, mille lõi firma Texas Instruments ja seda on kasutatud Macintosh II ja teistes 680x0 alusega Macintosh arvutites. NuBus toetab automaatset konfigureerimist (“plug and play” ehk isehäälestuv).
VL-siin (VESA lokaalsiin) lõi 1992. aastal Video Electronics Standards Association protsessorile Intel 80486. VL-siin on 32-bitine ja selle taktsageduseks on 33 MHz. VL-siini kasutamisel on vaja käsitsi lülitid seada.
PCI (Peripheral Component Interconnect) on välisseadmeühendus, mille lõi Intel 1993. aastal. PCI-siinid võivad olla nii 32-bitised sagedusega 33 MHz kui ka 64-bitised sagedusega 66 MHz. PCI toetab automaahäälestust. PCI kontrollib automaatselt andmevahetuses esinevaid vigu. PCI kasutab kiirendusrežiimi, suurendades siini jõudlust mitme paketi saatmisega ühele aadressile.
DIB (Dual Independent Bus) kaherealine iseseisev siin loodi Inteli poolt esisiini L2 puhvermälu jõudluse suurendamiseks.
SECC (Single Edge Contact Cartridge) ühe kontaktservaga kassett, mille lõi Intel suure kiirusega tagasiini L2 puhvermälu jaoks.
AGP (Accelerated Graphics Port) kiirendatud graafikaport loodi Inteli poolt jõudlused suurendamiseks, lahutades videoandmed ülejäänud andmetest PCI sisend/väljundsiinidel. AGP on 32-bitine ja taktsageduseks 66 MHz. AGP 2X kahekordistab andmevahetust sama siinilaiuse ja kiiruse juures. AGP 4X puhul läbib neli andmepaketti ühe takti jooksul, neljakordistades sellega läbilaskevõimet.
DRDRAM oli mälusiin, mille lõi Rambus eesmärgiga suurendada protsessori ja mälu vahelise ühenduse kiirust. DRDRAM on 33-bitine siin ja selle taktsageduseks on 800 MHz. 16 bitti on mõeldud andmetele ja ülejäänud 17 bitti on reserveeritud aadressifunktsioonidele.
|