Dom > Izložba > Sadržaj

Višejezgreni procesor Softverski učinci

Mar 14, 2019

Zastarjela verzija antivirusne aplikacije može stvoriti novu nit za proces skeniranja, dok njegova GUI nit čeka naredbe od korisnika (npr. Otkazivanje skeniranja). U takvim slučajevima, multi-core arhitektura je od male koristi za samu aplikaciju, jer jedna nit radi sve teže podizanje i nemogućnost da ravnotežu rada ravnomjerno na više jezgri. Programiranje doista višenitnog koda često zahtijeva složenu koordinaciju niti i može lako uvesti suptilne i teško pronađene bugove zbog preplitanja obrade podataka koji se dijele između niti (vidi sigurnost-nit). Prema tome, takav kôd je mnogo teže otkloniti od jednonitnog koda kada se razbije. Došlo je do uočenog nedostatka motivacije za pisanje aplikacija s navojem na razini potrošača zbog relativne rijetkosti potražnje na razini korisnika za maksimalno korištenje računalnog hardvera. Iako aplikacije s navojem uzrokuju malu dodatnu kaznu za performanse na strojevima s jednim procesorom, dodatni dodatni troškovi razvoja teško je opravdati zbog nadmoći strojeva s jednim procesorom. Također, serijski zadaci kao što je dekodiranje algoritama entropijskog kodiranja koji se koriste u video kodecima je nemoguće paralelizirati jer se svaki dobiveni rezultat koristi kako bi se stvorio sljedeći rezultat algoritma za entropijsko dekodiranje.


S obzirom na sve veći naglasak na dizajniranju višejezgrenih čipova, koji proizlaze iz ozbiljnih problema s toplinskom potrošnjom i potrošnjom energije koji nastaju zbog daljnjeg značajnog povećanja brzina procesorskog takta, vjerojatnost da će softver biti višenitan kako bi iskoristio ove nove čipove vjerojatno će biti najveće ograničenje performansi računala u budućnosti. Ako programeri ne mogu dizajnirati softver kako bi u potpunosti iskoristili resurse koje osiguravaju višestruka jezgra, oni će u konačnici dosegnuti nepremostive stropove izvedbe.


Tržište telekomunikacija bilo je jedno od prvih kojemu je bio potreban novi dizajn paralelne obrade paketa podataka, jer je vrlo brzo usvojeno više procesorskih procesora za podatkovnu i upravljačku ravninu. Ovi MPU-ovi će zamijeniti tradicionalne mrežne procesore koji se temelje na vlasničkom mikrokode ili picocode-u.


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


Obrada više jezgri također je utjecala na sposobnost razvoja modernog računalnog softvera. Programeri programiranja na novijim jezicima možda smatraju da njihovi suvremeni jezici ne podržavaju funkcionalnost više jezgri. To onda zahtijeva upotrebu numeričkih knjižnica za pristup kodu pisanom na jezicima poput C i Fortran, koji obavljaju matematičke izračune brže od novih jezika kao što je C #. Intelovi MKL i AMD ACML pisani su na tim izvornim jezicima i koriste prednosti obrade više jezgri. Uravnoteženje aplikativnog opterećenja između procesora može biti problematično, osobito ako imaju različite karakteristike izvedbe. 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 izvornu implementaciju za svaki tip procesora. Korisnici jednostavno programiraju pomoću ovih apstrakcija, a inteligentni prevodilac odabire najbolju implementaciju na temelju konteksta.


Upravljanje konkurentnošću dobiva središnju ulogu u razvoju paralelnih aplikacija. Osnovni koraci u dizajniranju paralelnih aplikacija su:


Particioniranje

Faza particioniranja dizajna je namijenjena otkrivanju mogućnosti za paralelno izvršavanje. Stoga je fokus na definiranju velikog broja malih zadataka kako bi se dobilo ono što se naziva fino zrnato razlaganje problema.

Komunikacija

Zadaci koje generira particija namijenjeni su za izvršavanje istodobno, ali se općenito ne mogu izvršavati neovisno. Izračunavanje koje treba 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 određen je u fazi komunikacije dizajna.

Aglomeracija

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

kartografija

U četvrtom i završnom stadiju oblikovanja paralelnih algoritama, programeri navode gdje se svaki zadatak izvršava. Problem s mapiranjem ne pojavljuje se na uniprocesorima ili na računalima s dijeljenom memorijom koja omogućuju automatsko raspoređivanje zadataka.

S druge strane, na strani poslužitelja, višejezgreni procesori su idealni jer dopuštaju mnogim korisnicima da se istovremeno povežu s web-lokacijom i da imaju neovisne niti izvršenja. To omogućuje web poslužitelje i aplikacijske poslužitelje koji imaju mnogo bolju propusnost.


licenciranje

Prodavatelji 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 koristiti sustav licenciranja po utičnici. 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 jezgri.

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