Casa > Exposició > Contingut

Efectes de programari del processador multi-nucli

Mar 14, 2019

Una versió obsoleta d’una aplicació antivirus pot crear un nou fil per a un procés d’exploració, mentre que el seu fil GUI espera comandes de l’usuari (per exemple, cancel·lar l’exploració). En aquests casos, una arquitectura multicèntrica té pocs beneficis per a la pròpia aplicació a causa del fil simple que fa tot el pes elevat i la incapacitat per equilibrar el treball de manera uniforme a través de múltiples nuclis. La programació de codi realment multifilat requereix sovint una complexa coordinació de fils i pot introduir fàcilment errors subtils i difícils de trobar a causa de l'entrecreuament del processament de dades compartides entre els fils (vegeu la seguretat del fil). En conseqüència, aquest codi és molt més difícil de depurar que el codi amb un sol fil quan es trenca. Hi ha hagut una manca de motivació per escriure aplicacions de temàtica personalitzada a nivell de consumidor a causa de la relativa raresa de la demanda a nivell de consumidor d’utilitzar al màxim el maquinari de l’ordinador. Tot i que les aplicacions roscades no tenen cap penalització de rendiment addicional en màquines de processador únic, el cost addicional del desenvolupament ha estat difícil de justificar a causa de la preponderància de les màquines amb un sol processador. A més, les tasques en sèrie com la descodificació dels algorismes de codificació d’entropia utilitzats en els còdecs de vídeo són impossibles de paralelitzar, ja que cada resultat generat s’utilitza per crear el següent resultat de l’algoritme de descodificació d’entropia.


Tenint en compte l’augment de l’èmfasi en el disseny de xips multi-nucli, derivat dels greus problemes de consum tèrmic i tèrmic que suposa un augment significatiu de la velocitat del rellotge del processador, el grau en què el programari pot ser multifilat per aprofitar aquests nous xips serà probable la restricció més gran en el rendiment de l’ordinador en el futur. Si els desenvolupadors no poden dissenyar programari per explotar completament els recursos proporcionats per múltiples nuclis, finalment arribaran a un sostre de rendiment insuperable.


El mercat de les telecomunicacions havia estat un dels primers que necessitava un nou disseny de processos de paquets de dades paral·lels, ja que hi havia una adopció molt ràpida d'aquests processadors de nucli múltiple per a la ruta de dades i el pla de control. Aquestes MPU substituiran els processadors de xarxa tradicionals basats en un microcodi propietari o en un picocode.


Les tècniques de programació paral·lela poden beneficiar-se de múltiples nuclis directament. Alguns models de programació paral·lels existents com Cilk Plus, OpenMP, OpenHMPP, FastFlow, Skandium, MPI i Erlang es poden utilitzar en plataformes multi-nucli. Intel va introduir una nova abstracció per al paral·lelisme C ++ anomenat TBB. Altres esforços d'investigació són el Codeplay Sieve System, el Cray's Chapel, el Sun's Fortress i l'IBM X10.


El processament multi-nucli també ha afectat la capacitat del desenvolupament de programari computacional modern. La programació dels desenvolupadors en idiomes més recents podria trobar que els seus idiomes moderns no admeten funcionalitats multicèntrics. Això requereix l'ús de biblioteques numèriques per accedir al codi escrit en llenguatges com C i Fortran, que realitzen càlculs matemàtics més ràpidament que els idiomes més nous, com ara C #. El MKL d’Intel i l’ACML d’AMD s’escriuen en aquests idiomes nadius i aprofiten el processament de múltiples nuclis. L’equilibri entre la càrrega de treball de l’aplicació entre els processadors pot ser problemàtic, especialment si tenen característiques de rendiment diferents. Hi ha diferents models conceptuals per fer front al problema, per exemple, utilitzant un llenguatge de coordinació i elements bàsics de programació (biblioteques de programació o funcions d’ordre superior). Cada bloc pot tenir una implementació nativa diferent per a cada tipus de processador. Els usuaris simplement programen utilitzant aquestes abstraccions i un compilador intel·ligent tria la millor implementació en funció del context.


La gestió de la concurrència adquireix un paper central en el desenvolupament d'aplicacions paral·leles. Els passos bàsics per dissenyar aplicacions paral·leles són:


Fer particions

L’etapa de partició d’un disseny pretén exposar oportunitats d’execució paral·lela. Per tant, l’enfocament consisteix a definir un gran nombre de petites tasques per tal de produir el que es denomina descomposició de gra fi de problema.

Comunicació

Les tasques generades per una partició estan destinades a ser executades simultàniament, però en general no es poden executar de manera independent. El càlcul a realitzar en una tasca normalment requereix dades associades a una altra tasca. Les dades s’haurien de transferir entre tasques per permetre el procés de càlcul. Aquest flux d’informació s’especifica en la fase de comunicació d’un disseny.

Aglomeració

A la tercera etapa, el desenvolupament passa de l’abstracte cap al concret. Els desenvolupadors revisiten les decisions preses en les fases de partició i comunicació amb l'objectiu d'obtenir un algorisme que s'executi de manera eficient en alguna classe d’ordinador paral·lel. En particular, els desenvolupadors consideren si és útil combinar o aglomerar tasques identificades per la fase de partició, de manera que proporcioni un nombre menor de tasques, de major mida. També determinen si val la pena reproduir dades i computació.

Cartografia

A la quarta i última etapa del disseny d’algoritmes paral·lels, els desenvolupadors especifiquen on s’executa cada tasca. Aquest problema de mapatge no apareix en uniprocessadors ni en ordinadors de memòria compartida que proporcionin una planificació de tasques automàtica.

D'altra banda, al costat del servidor, els processadors multi-nucli són ideals perquè permeten que molts usuaris es connectin a un lloc simultàniament i tinguin fils d'execució independents. Això permet que servidors web i servidors d'aplicacions tinguin un rendiment molt millor.


Llicències

Els venedors poden llicenciar alguns programes "per processador". Això pot donar lloc a ambigüitats, ja que un "processador" pot consistir en un sol nucli o en una combinació de nuclis.


Inicialment, per a alguns dels seus programes empresarials, Microsoft va continuar utilitzant un sistema de llicència per socket. No obstant això, per a alguns programes com BizTalk Server 2013, SQL Server 2014 i Windows Server 2016, Microsoft ha canviat a les llicències per nucli.

Oracle Corporation compta amb una CPU AMD X2 o Intel dual-core com a un sol processador, però utilitza altres mètriques per a altres tipus, especialment per a processadors amb més de dos nuclis.