Dom > Izložba > Sadržaj

Multi-core procesor Softverski efekti

Mar 14, 2019

Zastarela verzija antivirusne aplikacije može kreirati novu nit za proces skeniranja, dok njegova GUI nit čeka naredbe od korisnika (npr. Poništiti skeniranje). U takvim slučajevima, multi-core arhitektura je od male koristi za samu aplikaciju zbog toga što jedna nit radi sve teže podizanje i nemogućnost da balansira rad ravnomerno na više jezgara. Programiranje istinski višenitnog koda često zahtijeva složenu koordinaciju niti i može lako uvesti suptilne i teške za pronalaženje grešaka zbog preplitanja obrade podataka koji se dijele između niti (vidi sigurnost-nit). Shodno tome, takav kôd je mnogo teže otkloniti od jednog kôda kada se prekida. Došlo je do uočenog nedostatka motivacije za pisanje aplikacija sa navojem na nivou potrošača zbog relativne retkosti zahteva potrošača za maksimalnim korišćenjem računarskog hardvera. Iako aplikacije sa navojem imaju malu dodatnu kaznu performansi na strojevima sa jednim procesorom, dodatni dodatni troškovi razvoja teško je opravdati zbog nadmoćnosti jednog procesora. Takođe, serijski zadaci kao što je dekodiranje algoritama entropijskog kodiranja koji se koriste u video kodecima je nemoguće paralelizirati, jer se svaki generisani rezultat koristi kako bi se stvorio sljedeći rezultat algoritma za dekodiranje entropije.


S obzirom na sve veći naglasak na dizajnu višejezgrenih čipova, koji proizilazi iz ozbiljnih problema sa termičkom i energetskom potrošnjom, koji nastaju uslijed daljnjeg značajnog povećanja brzine procesorskog takta, u kojoj mjeri softver može biti višenitan kako bi iskoristio prednosti ovih novih čipova najveće ograničenje na performanse računara u budućnosti. Ako programeri nisu u stanju da dizajniraju softver koji bi u potpunosti iskoristio resurse koje pruža više jezgara, oni će u konačnici doseći nepremostive performanse.


Tržište telekomunikacija bilo je jedno od prvih koje su trebale novi dizajn paralelne obrade paketa podataka, jer je bilo vrlo brzo usvajanje ovih višejezgrenih procesora za datapat i kontrolu. Ovi MPU-ovi će zamijeniti tradicionalne mrežne procesore koji su zasnovani na vlasničkom mikrokode ili picocode-u.


Tehnike paralelnog programiranja mogu imati koristi od više jezgara direktno. Neki postojeći modeli paralelnog programiranja kao što su Cilk Plus, OpenMP, OpenHMPP, FastFlow, Skandium, MPI i Erlang mogu se koristiti na multi-core platformama. Intel je predstavio novu apstrakciju za C ++ paralelizam zvanu TBB. Ostali istraživački napori uključuju sistem za sito šifriranja, Crayovu kapelu, Sunčevu tvrđavu i IBM-ov X10.


Obrada više jezgara takođe je uticala na sposobnost razvoja savremenog računarskog softvera. Programeri programiranja na novijim jezicima mogu otkriti da njihovi moderni jezici ne podržavaju funkcionalnost više jezgara. To onda zahtijeva upotrebu numeričkih biblioteka za pristup kodu napisanom na jezicima kao što su C i Fortran, koji obavljaju matematičke izračune brže od novih jezika kao što je C #. Intelovi MKL i AMD ACML su napisani na ovim maternjim jezicima i koriste prednosti obrade više jezgara. Balansiranje radnog opterećenja aplikacije između procesora može biti problematično, posebno ako imaju različite karakteristike performansi. Postoje različiti konceptualni modeli za rješavanje problema, na primjer pomoću koordinacijskog jezika i programskih blokova (programiranje knjižnica ili funkcija višeg reda). Svaki blok može imati različitu nativnu implementaciju za svaki tip procesora. Korisnici jednostavno programiraju korišćenje ovih apstrakcija i inteligentni kompajler bira najbolju implementaciju na osnovu konteksta.


Upravljanje konkurentnošću dobija centralnu ulogu u razvoju paralelnih aplikacija. Osnovni koraci u dizajniranju paralelnih aplikacija su:


Partitioning

Faza particioniranja dizajna ima za cilj da otkrije mogućnosti za paralelno izvršenje. Dakle, fokus je na definisanju velikog broja malih zadataka kako bi se dobilo ono što se naziva fino razgranata dekompozicija problema.

Komunikacija

Zadaci koje generira particija imaju namjeru da se izvršavaju istovremeno, ali ne mogu se izvršiti nezavisno. Obračun koji će se izvršiti u jednom zadatku obično će zahtijevati podatke povezane s drugim zadatkom. Podaci se zatim moraju prenositi između zadataka kako bi se omogućilo nastavak računanja. Ovaj protok informacija je specificiran u fazi komunikacije dizajna.

Aglomeracija

U trećoj fazi, razvoj se kreće od apstraktnog ka konkretnom. Razvojni inženjeri ponovo razmatraju odluke donesene u fazama particioniranja i komunikacije s ciljem dobivanja algoritma koji će se efikasno izvršavati na nekoj klasi paralelnog računala. Konkretno, programeri razmatraju da li je korisno kombinirati, ili aglomerirati, zadatke identificirane fazom particioniranja, kako bi se osigurao manji broj zadataka, svaki veći. Oni takođe utvrđuju da li je vredno replicirati podatke i računanje.

Mapiranje

U četvrtoj i završnoj fazi projektovanja paralelnih algoritama, programeri navode gdje se svaki zadatak izvršava. Ovaj problem mapiranja se ne pojavljuje na uniprocesorima ili na računarima sa zajedničkom memorijom koji pružaju automatsko raspoređivanje zadataka.

S druge strane, na strani servera, multi-core procesori su idealni jer dozvoljavaju mnogim korisnicima da se istovremeno povežu na lokaciju i da imaju nezavisne niti izvršenja. Ovo omogućava Web serverima i aplikacijskim serverima koji imaju mnogo bolji protok.


Licenciranje

Prodavci mogu licencirati neki softver "po procesoru". To može dovesti do dvosmislenosti, jer "procesor" može sadržavati ili jednu jezgru ili kombinaciju jezgara.


U početku, za neke od svojih korporativnih softvera, Microsoft je nastavio da koristi sistem licenciranja po priključku. Međutim, za neki softver kao što je BizTalk Server 2013, SQL Server 2014 i Windows Server 2016, Microsoft je prešao na licenciranje po jezgru.

Oracle Corporation računa AMD X2 ili Intel dual-core CPU kao jedan procesor, ali koristi druge metrike za druge tipove, posebno za procesore s više od dvije jezgre.