
UNIVERZITET "Sv. Kiril i Metodij"
Prirodno matemati~ki Fakultet - Skopje
Institut za Informatika
![]()
VEKTORSKI
PROCESORI
Predmet:
Organizacija na digitalni smeta~ki ma{ini
Izrabotila: Nata{a Biqarska
Mentor: d-r Marjan Gu{ev
Skopje, noemvri 1997
![]()
REZIME
Predmet na ovaa seminarska rabota e
vektorska ma{ina - {to e, kako raboti, kade se koristi i kako da
se izvle~e maksimalnata mo} na procesirawe. Vo nea }e gi najdete
osnovnite postavki na vektorskata tehnologija, zo{to postoi i
dali go opravduva svoeto postoewe.
SODR@INA
Sinhroniziraweto na proto~nosta ima
potreba od pove}e instrukcii za vreme od eden ciklus, a pogolema
proto~nost na procesorot mo`e da gi duplira performansite na
ma{inata. No postojat granici za podobruvawata {to mo`e da se
postignat preku proto~nosta. Ovie granici se podeleni spored dva
osnovni faktori:
| Vreme na ciklus - Vremeto na ciklusot mo`e da bide namaleno so pravewe na pogolema proto~nost, no so toa se zgolemuvaat zavisnostite {to rezultira so povisok CPI (clock cycle per insruction). Na odredna to~ka, sekoe zgolemuvawe na proto~nosta ima soodvetno zgolemuvawe na CPI. | |
| Obezbeduvawe na instrukcija i vreme na dekodirawe - Ova ograni~uvawe, poznato i kako mala propusnost-grlo (Flynn bottleneck), go spre~uva obezbeduvaweto i predavaweto na pove}e od nekolku instrukcii za vreme od eden takt. |
Ova dvojno ograni~uvawe predizvikano od pogolemata proto~nost i obrabotkata na pove}e instrukcii mo`e da bide razgleduvano od gledna to~ka na vremeto za eden takt ili od strana na CPI. Toa zna~i deka e isto tolku te{ko da se sinhronizira proto~nost n pati pogolema, kolku {to e te{ko da se sinhronizira ma{ina koja obrabotuva n instrukcii za eden ciklus.
Brzite ma{ini so golema proto~nost se posebno korisni za nau~ni i in`enerski programi. Ovie ma{ini naj~esto jo koristat ke{ memorijata za se izbegne golema latentnost na instrukcite za obra}awe kon memorijata. Golemite nau~ni programi ~esto imaat mnogu golemi aktivni podatoci kon koi se pristapuva na razli~ni mesta vo memorijata (low locality), davaj}i slabi performansi od memoriskata hierarhija. Rezultat na ova e namaluvawe na performansite na ke{ memorijata. Ovoj problem mo`e da bide nadminat so navremeno otkrivawe na sledniot pristap kon podatocite.
Vektorskite ma{ini obezbeduvaat visoko-nivovski operacii koi rabotat na vektori - linearni listi od broevi. Tipi~na vektorska operacija mo`e da sobere dva 64 elementni FP vektori so broevi so podvi`na zapirka za da se dobie eden 64 elementen vektorski rezultat. Vektorskata instrukcija e ekvivalentna na edna cela jamka, so sekoja iteracija se presmetuva eden od 64-te elementi na rezultatot, se a`uriraat indeksite, i se vra}a na po~etokot.
Vektorskite operacii imaat nekolku va`ni osobini koi re{avaat pove}e problemi:
| Presmetuvaweto na sekoj rezultat e nezavisno od presmetuvaweto na prethodnite rezultati, ovozmo`uva mnogu golema proto~nost bez sozdavawe na kakov i da e podato~en konflikt. Vsu{nost, nedostatokot na konflikti e odreden od strana na kompajlerot ili od programerot so odlukata deka mo`e da bide upotrebena vektorska instrukcija. | |
| Edna vektorska instrukcija opredeluva golema rabota - ova e ekvivalentno na izvr{uvawe na cela jamka. Vaka potrebata za instrukciski propusen opseg e namalena, a i Flnovoto tesno grlo (Flynn bottleneck) e zna~itelno namaleno. | |
| Vektorskite instrukcii {to pristapuvaat na memorijata imaat poznata pristapna {ema. Ako vektorskite elementi se site sosedni, toga{ obezbeduvaweto na vektorot od kompletot na prekopeni (interleaved) memoriski banki raboti mnogu dobro. Visokata latentnost na inicijalizacijata za pristap kon glavnata memorija nasproti pristapuvaweto na ke{ memorijata e amortizirano, bidej}i eden pristap e pokrenat za celiot vektor namesto kon eden zbor. Vaka cenata na latentnosta na glavnata memorija e vidliva samo edna{ za celiot vektor, namesto edna{ za sekoj zbor na vektorot. | |
| Bidejki celata jamka e zameneta so vektorska instrukcija ~ie odnesuvawe e predodredeno, konfliktot za kontrolnite instrukcii koj normalno }e se pojavi od jamkata e nepostoe~ki. |
Poradi ovie pri~ini, vektorskite operacii mo`at da bidat pobrzi od sekvenca na skalarni operacii na istiot broj na podato~ni elementi, a dizajnerite se motivirani da vklu~uvaat vektorski edinici ako tie mo`e da se upotrebuvaat po~esto voo aplkaciite.
Vektorskite ma{ini gi podlo`uvaat na proto~na obrabotka operaciite na poedini elementi na eden vektor. Proto~nata obrabotka-cevka gi sodr`i ne samo aritmeti~kite operacii (mno`ewe, sobirawe itn.), tuku isto taka i memoriskite pristapi i efektivnite adresni presmetki. Kako dodatok, pove}eto (high-end) vektorski ma{ini ovozmo`uvaat pove}ekratni vektorski operacii da bidat izvr{eni istovremeno, sozdavaj}i paralelnost pome|u operaciite vrz razli~ni elementi.
DLX (Deluxe) kako i site ponovi ma{ini se sostoi od :
| trieset i tri 32-bitni registri za generalna upotreba (GPR general purpose regisers), vrednosta na 0-tiot register R0 e sekoga{ 0; mno`estvo od 32 bitni registri za broevi so podvi`na zapirka (FPR floating point registers) imenuvani kako F0, F2, ...., F28, F30 za izveduvawe na operacii so edine~na (32 bitni single) i dvojna to~nost (64 bitni double precision). Broevite so dvojna to~nost se smestuvaat vo sosedni registri od koi prviot e paren vtoriot neparen (par-nepar even - odd). | |
| memorija byte adresibilna vo Big Endian mode so 32 bitna adresa. | |
| 32 bitni instrukcii | |
| specijalni registri kako registerot vo koj se smestuva informacija za rezultatot od operacija vrz broevi so podvi`na zapirka. |
Postojat ~etiri klasi na iinstrukcii so koi operira DLX i toa: v~ituvawe i vpi{uvawe (load/store), ALU operacii, granawa i skokovi (branches and jumps) i operacii so broevi so podvi`na zapirka.
V~ituvaweto i vpi{uvaweto mo`e da se izvr{i vo bilo koj od registrite za generalna upotreba osven {to v~ituvaweto vo R0 registerot nema nikakov efekt. Adresiraweto e so bazen register + 16 bitno pomestuvawe so znak (signed offset). V~ituvaweto na poluzbor (halfword) i byte ja smestuvaat sodr`inata vo dolniot del na registerot a ostatokot se popolnuva so 0 ili so ekstenzijata za znak na v~itanata vrednost, zavisno od operaciskiot kod (opcode). Broevite so podvi`na zapirka zavzemaat eden, odnosno dva registra, zavisno od toa dali se so edine~na , odnosno so dvojna preciznost.
ALU instrukciite se register-registerski instrukcii. Operaciite so koi operira ALU se ednostavnite aritmeti~ki i logi~ki operacii: sobirawe (ADD), odzemawe (SUB), logi~ko I (AND), ILI (OR), isklu~itelno ILI (XOR) i pomestuvawa (SHIFTS). Ovozmo`eni se operaciite so konstanta (immediate). Postojat i operacii za sporeduvawe (=,<>,<,>,<=,>=) vo koi isto taka e dozvoleno koristewe na konstanta. Ako uslovot e to~en toga{ se smestuva 1 vo odredi{niot register, vo sprotivno se smestuva 0.
Kontrolata se realizira preku mno`estvo granawa i skokovi (branches and jumps). ^etirite instrukcii za skok se delat spored toa dali sodr`at odredi{na adresa ili dali postoi povratna vrska (link). Dve instrukcii koristat 26 bitno pomestuvawe so znak (signed offset) koe se dodava na vrednosta vo programskiot broja~ (program counter) za opredeluvawe na odredi{nata aderesa; drugite dve instrukcii specificiraat register koj ja sodr`i odredi{nata adresa. Postojat dva vida skokovi: obi~en i skok so povratna vrska (za povikuvawe na proceduri). Site granawa se uslovni i se specificiraat vo samata instrukcija koja go testira izvorniot register za vrednost nula ili nenula (mo`e da bide vrednost na podatok ili rezultat od sporedba). Odredi{nata adresa od granaweto se specificira so 16 bitno pomestuvawe so znak {to se sobira so vrednosta na programskiot broja~.
Instrukciite za broevi so podvi`na zapirka operiraat so registrite za broevi so podvi`na zapirka i ozna~uvaat dali operacijata e so edine~na ili so dvojna to~nost. Rezultite od operaciite so edine~na to~nost mo`e da se smestat vo bilo koj register dodeka onie so dvojna to~nost se smestuvaat vo par-nepar registri i se ozna~eni so brojot na parniot register. Operacii vrz broevite so podvi`na zapirka se sobirawe, odzemawe, mno`ewe i delewe.
I-tip na instrukcija
| 6 | 5 | 5 | 16 |
| opcode | rs1 | rd | Immediate |
~itawe i zapi{uvawe na byte, word, half-word
(rd<- rs1 op immediate)
uslovni granawa (rs1 e register , rd neupotrben)
register za skok, odnosno skok so povratna vrska
(rd=0, rs=odredi{te,
konstanta=0)
R- tip na instrukcija
| 6 | 5 | 5 | 5 | 11 |
| opcode | rs1 | rs2 | rd | Function |
register - register ALU operacii : rd<- rs1 func rs2
J- tip na instrukcija
| 6 | 26 |
| opcode | Offset added to PC |
skok i skok so povratna vrska