UNIVERZITET "Sv. Kiril i Metodij"

Prirodno matemati~ki Fakultet - Skopje

Institut za Informatika

 

SEMINARSKA RABOTA

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

  1. VEKTORSKI MO@NOSTI

    1.1 DLX ARHITEKTURA

    1.1.1 INSTRUKCISKI FORMAT NA DLX

  2. OSNOVNA VEKTORSKA ARHITEKTURA

    2.1 DLXV ARHITEKTURA

  3. STARTNO VREME I STAPKA NA INICIJALIZACIJA
  4. VEKTORSKA DOL@INA I VEKTORSKO RASTOJANIE

    4.1 KONTROLA NA VEKTORSKATA DOL@INA

  5. MODEL ZA VEKTORSKI PERFORMANSI
  6. TEHNOLOGIJA NA KOMPAJLIRAWE
  7. PODOBRUVAWE NA VEKTORSKITE PERFORMANSI

    7.1 POVRZUVAWE

    7.2 USLOVNO IZVR[UVANI IZRAZI I RETKI MATRICI

    7.3 REDUKCIJA NA VEKTOR

  8. OPREDELUVAWE NA PERFORMANSITE NA VEKTORSKI PROCESOR

    8.1 MERKI ZA VEKTORSKI PERFORMANSI

    8.2 POSTIGNATI PERFORMANSI NA LINPACK NA DLXV

  9. SAXPY PERFORMANSI NA ZASILEN DLXV
  10. ZAKLU^OK

1. VEKTORSKI MO@NOSTI

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.

1.1. DLX ARHITEKTURA

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.

1.1.1 INSTRUKCISKI FORMAT NA DLX

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