Dom > Razstava > Vsebine

Večjedrni procesorji Učinki programske opreme

Mar 14, 2019

Zastarela različica protivirusne aplikacije lahko ustvari novo nit za postopek optičnega branja, medtem ko njena GUI nit čaka na ukaze uporabnika (npr. Prekliče skeniranje). V takih primerih je večjedrna arhitektura le malo koristna za samo aplikacijo, saj posamezna nit opravlja vse težko dvigovanje in nezmožnost uravnotežiti delo enakomerno po več jedrih. Programiranje resnično večnitne kode pogosto zahteva kompleksno koordinacijo niti in lahko preprosto uvede subtilne in težko najti napake zaradi prepletanja obdelave podatkov, ki si jih delijo niti (glej varnost-nit). Zato je takšno kodo veliko težje razreševati kot enojna koda, ko se pokvari. Zaradi relativne redkosti povpraševanja na ravni potrošnikov za maksimalno uporabo računalniške strojne opreme je bilo opaziti pomanjkanje motivacije za pisanje navtičnih aplikacij na ravni potrošnikov. Čeprav navojne aplikacije povzročajo majhno dodatno zmogljivostno škodo za enoprocesorske stroje, je bilo dodatno obremenitev razvoja težko upravičiti zaradi prevlade enoprocesorskih strojev. Tudi serijske naloge, kot so dekodiranje algoritmov za entropijsko kodiranje, ki se uporabljajo v video kodekih, ni mogoče vzporedno razporediti, ker se vsak ustvarjeni rezultat uporabi za ustvarjanje naslednjega rezultata algoritma za dekodiranje entropije.


Glede na vse večji poudarek na oblikovanju večjedrnih čipov, ki izhaja iz težkih težav s toploto in porabo energije, ki jih povzroča nadaljnje znatno povečanje hitrosti procesorja, je verjetno, da bo programska oprema večnitna za izkoriščanje teh novih čipov. največja omejitev delovanja računalnika v prihodnosti. Če razvijalci ne morejo oblikovati programske opreme, ki bi v celoti izkoristila vire, ki jih zagotavlja več jeder, potem bodo na koncu dosegli nepremostljivo zgornjo mejo učinkovitosti.


Trg telekomunikacij je bil eden prvih, ki je potreboval novo zasnovo paralelne obdelave paketov podatkovnih datotek, ker je bilo zelo hitro sprejetje teh večjedrnih procesorjev za podatkovno povezavo in nadzorno ravnino. Ti MPU bodo nadomestili tradicionalne omrežne procesorje, ki so temeljili na lastniški mikrokodi ali pikokodi.


Paralelne tehnike programiranja lahko neposredno izkoristijo več jeder. Nekateri obstoječi vzporedni programski modeli, kot so Cilk Plus, OpenMP, OpenHMPP, FastFlow, Skandium, MPI in Erlang, se lahko uporabljajo na večjedrnih platformah. Intel je predstavil novo abstrakcijo za paralelizem C ++, imenovan TBB. Druga raziskovalna prizadevanja vključujejo sistem za sito kodiranja, Crayovo kapelo, sončno trdnjavo in IBM-ov X10.


Večjedrna obdelava je vplivala tudi na zmožnost sodobnega računalniškega razvoja programske opreme. Razvijalci, ki programirajo v novejših jezikih, lahko ugotovijo, da njihovi moderni jeziki ne podpirajo večjedrnih funkcij. To nato zahteva uporabo numeričnih knjižnic za dostop do kode, napisane v jezikih, kot sta C in Fortran, ki izvajajo matematične izračune hitreje kot novejši jeziki, kot je C #. Intelove MKL in AMD ACML so napisane v teh maternih jezikih in izkoriščajo večjedrno obdelavo. Uravnoteženje delovne obremenitve aplikacij med procesorji je lahko problematično, zlasti če imajo različne lastnosti delovanja. Obstajajo različni konceptualni modeli za reševanje problema, na primer z uporabo koordinacijskega jezika in gradnikov programov (programiranje knjižnic ali funkcij višjega reda). Vsak blok ima lahko drugačno izvedbo za vsak tip procesorja. Uporabniki preprosto programirajo uporabo teh abstrakcij in inteligentni prevajalnik izbere najboljšo izvedbo na podlagi konteksta.


Upravljanje vzporednosti pridobi osrednjo vlogo pri razvoju vzporednih aplikacij. Osnovni koraki pri oblikovanju vzporednih aplikacij so:


Razdelitev

Faza delitve modela je namenjena razkrivanju možnosti za vzporedno izvajanje. Zato je poudarek na opredelitvi velikega števila majhnih nalog, da bi dosegli tisto, kar se imenuje drobna razgradnja problema.

Komunikacija

Naloge, ki jih generira particija, so namenjene hkratni izvedbi, vendar se na splošno ne morejo izvajati neodvisno. Izračun, ki ga je treba izvesti v eni nalogi, običajno zahteva podatke, povezane z drugo nalogo. Podatke je treba nato prenesti med nalogami, da se omogoči nadaljevanje računanja. Ta tok informacij je določen v komunikacijski fazi načrta.

Aglomeracija

V tretji fazi se razvoj giblje od abstraktnega do konkretnega. Razvijalci ponovno pregledajo odločitve, sprejete v fazah particioniranja in komunikacije, da bi pridobili algoritem, ki se bo učinkovito izvajal na nekem razredu vzporednega računalnika. Predvsem razvijalci pretehtajo, ali je koristno združiti ali združiti naloge, ki jih identificira faza razdelitve, da bi zagotovili manjše število nalog, vsak večji. Prav tako določajo, ali je smiselno podvojiti podatke in računanje.

Preslikava

V četrti in zadnji fazi oblikovanja vzporednih algoritmov razvijalci določijo, kje naj se opravi vsaka naloga. Ta težava preslikavanja se ne pojavi na uniprocesorjih ali na računalnikih s souporabo pomnilnika, ki omogočajo samodejno razporejanje nalog.

Po drugi strani pa so na strežniški strani večjedrni procesorji idealni, ker omogočajo številnim uporabnikom, da se istočasno povežejo z mestom in imajo neodvisne niti izvajanja. To omogoča spletnim strežnikom in aplikacijskim strežnikom, ki imajo veliko boljšo prepustnost.


Licenciranje

Prodajalci lahko licencirajo programsko opremo "na procesor". To lahko povzroči dvoumnost, ker lahko "procesor" vsebuje bodisi eno jedro bodisi kombinacijo jeder.


Sprva je Microsoft za nekatere svoje programske opreme še naprej uporabljal sistem licenciranja na podnožje. Vendar pa je za nekatere programe, kot sta BizTalk Server 2013, SQL Server 2014 in Windows Server 2016, Microsoft prešel na licenciranje po jedru.

Oracle Corporation šteje AMD X2 ali dual-core CPU Intel kot en sam procesor, vendar uporablja druge metrike za druge vrste, zlasti za procesorje z več kot dvema jederoma.