Quin és el sistema de processadors multi?

La gran part de la discussió en aquest curs ha considerat que el sistema operatiu s' està executant un processador de temps fet... i aquesta perspectiva és adequada per entendre completament la majoria de Aquests temes. Però cada vegada més, molts sistemes informàtics moderns són ara multiprocessadors:

CPU d' un propòsit general múltiple (com s' oposat a les GPU) que són capaces de executant programes no relacionats o fils (com processadors de matriu SIMD) i (a alguns graus) comparteixen la memòria i els dispositius I/O.

Aquests sistemes són interessants perquè són Prou independent per trobar-se amb molts dels problemes associat amb el càlcul distribuït... però (perquè comparteixen la memòria) I els dispositius I/O fan coses que empenyen el sobre dels sistemes distribuïts. Com que la gent desenvolupa aplicacions per explotar aquestes Les plataformes, és important que entenguin els problemes que presentaven.

Per què construir sistemes multi-Processor

Continuem buscant aplicacions que requereixen més energia informàtica. De vegades aquests problemes es poden resoldre amb sistemes escalats horitzontalment (p. ex. milers de Servidors web). Però alguns problemes reclamen, no més ordinadors, sinó ordinadors més ràpids. Considereu una base de dades enorme, que cada any, ha de gestionar el doble de operacions A mesura que va servir l'any anterior. Bloqueig distribuït, per a molts assentaments paral· leles en una única base de dades, Pot ser prohibitiument car. L'alternativa seria comprar una Ordinador més gran cada any.

Fa molt de temps va ser possible fer que els ordinadors s'encongeixssin les portes, millorar la rellotge, i millora la refrigeració. Però, al final, arribem a un punt d'enfosquiment. retorna on la física (la velocitat de la llum, La teoria de la informació, la termodinàmica) fa que cada vegada sigui més difícil de construir més ràpid CPU. Recentment, la majoria de les nostres millores en la velocitat de processament han arribat de:

  • Poseu més nuclis per xips, més fitxes per tauler, i més taulers per sistema d' ordinadors.

Però és raonable preguntar si les instruccions 16x3B per segon són realment És equivalent a instruccions 48B per segon? La resposta (mireu La llei de Amdahl ) Dependrà de si la vostra aplicació pot dividir- se en 16 o més Subtasca d' executable paral· lely. Per sort, els sistemes operatius moderns tendeixen a tenir en compte per executar grans números de processos, i els càlculs cars són Cada vegada està dissenyat per ser executable en múltiples fils paral· leles.

Per aquestes raons, el multiprocessador és l' arquitectura dominant per a servidors poderosos i escriptoris. I, com a arquitectura dominant, els sistemes operatius han de fer-ho bé La feina d'explotar-los.

Maquinari multi- procésorStencils

La definició general cobreix una àmplia varietat d'arquitectura, que en realitat Tenen característiques molt diferents. I per tant és útil, per veure la majoria de les coses D'arquitectura prominents.

Hyper-Threading

Les CPU són molt més ràpides que la memòria. Una CPU de 2.5GHz pot ser capaç d'executar més de 5 milions d' instruccions per segon. Malauradament, la memòria dels 80 n'hi ha prou amb 12 milions d'euros o botigues per segon. Això és gairebé una coincidència de 1000x errònia en funció de l'actuació. La CPU té múltiples nivells de memòria cau per assegurar-nos que poques vegades hem d'anar a la memòria, Però fins i tot així, la CPU passa molt de temps esperant la memòria.

La idea d'una hiperexistència és donar a cada dos conjunts de registres generals, i l'habilitat per executar dos fils independents. Quan un d' aquests fils està bloquejat (s' està esperant la memòria) L' altre fil pot usar el motor d' execució. Pensa en això com una nopreventiva Compartició de temps al nivell de microcodi. És comon per a un parell d'hiper-fils per aconseguir 1.2.8 vegades les instruccions per segon que un sol fil s'hagués posat el mateix nucli. És teòricament possible tenir 2x hiperting, però un fil podria s' ha esgotat de la memòria cau de L1 durant molt de temps sense bloquejar, o potser tots dos hiper-fils Estan plens d'espera per a la memòria.

Des d'un punt de vista de rendiment, és important entendre que tots dos Els índexs s'estan executant en el mateix nucli, i per tant comparteixen el mateix L1 i a la memòria cau de L2. D' aquesta manera hiper-filtes que utilitzen el mateix espai d' adreça que farà exhibir millor localitatitat, i per tant Corre molt millor que hipertós que utilitzen espais d'adreça diferents.

Commutadors multi- processos simètrics

Un procés multi-Processor simètric té alguns quants nuclis, tots connectats la mateixa memòria i buss E/O. A diferència dels hiper-fils aquests nuclis són Motor d'execució completament independent, i (odulo limitacions En memòria i bus a través de rendiment) els nuclis haurien de ser capaços d' executar Hi ha tantes instruccions per segon com un únic nucli.

Coherència de la memòria cau

Tal i com s' ha mencionat anteriorment, gran part del rendiment del processador és un resultat De cau de cau. En la majoria de sistemes SMP, cada processador té la seva pròpia L1/L2 Cau. Això crea un potencial Cerca de memòria cau problema si (per exemple) Processador 1 actualitza una ubicació de memòria on s' han guardat els continguts per processador 2. L' execució del programa basada en les entrades de memòria cau estable El resultat en els resultats incorrectes, així que s' ha de prevenir. Hi ha alguns enfocaments generals de mantenir la calidesa de la memòria cau (enfortir que no hi ha diferències sobre el contingut actual de qualsevol línia de memòria cau), i la majoria de sistemes SMP amb la cau del connector per tal que s' obrin algunes Coherència de memòria cau de Mechanisme adreçar aquest problema.

Arquitectures de memòria cau sense parella

No es poden crear controladors de memòria ràpids que poden proporcionar Accés recurrent a gran quantitat de nuclis, i finalment memòria Amplada de banda esdevé el coll d'ampolla que evita l' escalat a major Nombre de CPU. Adreces d' arquitectura de memòria no nul· la aquest problema donant a cada node o CPU la seva pròpia memòria local d'alta velocitat, i interconnexió amb tots els buss de memòria amb un més lent però més xarxa escalable.

Les operacions a la memòria local poden ser diverses vegades més ràpides que Operacions a la memòria remota, i el màxim a través de La xarxa escalable pot ser una petita fracció de la Amplada de banda de memòria local per node. Aquesta arquitectura pot proporcionar un escalat gairebé lineal a Molts números més grans de processadors, però només si podem assegurar-ho La majoria de les referències de memòria són locals. El sistema operatiu pot tractar amb velocitats d' accés a la memòria diferents S' està intentant assignar memòria per a cada procés des de la CPU en la qual El procés s' està executant. Però encara hi haurà situacions en les quals múltiples situacions Les CPU necessiten accedir a la mateixa memòria. Per assegurar l'execució correcta, nosaltres Ha de mantenir la cooperació entre tots els pernode/per-CU Cau. Això vol dir que, a més de llegir la memòria remota i escriu peticions, la xarxa escalable que interconnexió Els nodes també han de proporcionar coherència al cau. Aquestes arquitectures S' anomenen Arquitectures de memòria cau sense parella (CC-NUMA), i s'anomenen les xarxes d'execució Interconnexió de Coherent escalable . El millor conegut Inter connexions escalables És probable que sigui de l'Intel Interconnexió ràpida del camí (QPI), i ADM HiperTransportCity name (optional, probably does not need a translation) .

Gestió d' energia

La memòria i les interconnexió de la memòria cau probablement són la part més interessant d' un sistema multiprocessador, però la gestió d'energia és una altra cosa molt important característica. Un sistema multi-core pot consumir una gran quantitat de poder... i la majoria d'energia De vegades no necessita la majoria dels nuclis. Molts sistemes multiprocessadors Inclou mecanismes per a alentir (o aturar) els rellotges dels nuclis no necessaris, que Redueix dramàticament el consum d'energia del sistema. No és un procés lent. Com un somni i un reinici. Un nucli es pot tornar a la màxima velocitat ràpidament.

Sistemes operatius multi- processor

Per a explotar un sistema multiprocessador, el sistema operatiu ha de ser capaç de gestionar actualment múltiples fils/ processos de cada un de els nuclis de la CPU disponibles. Un dels primers enfocaments era executar El sistema operatiu en un nucli, i aplicacions en totes les Els altres. Això funciona raonablement per a un petit nombre de nuclis, però Mentre el nombre de nuclis augmenta, l' OSM esdevé el primari A través d'un coll d'ampolla. Escalar fins a grans quantitats de nuclis que requereixen El sistema operatiu mateix per executar- se amb múltiples nuclis. En execució Una eficientment en múltiples nuclis requereix que el sistema operatiu Escolliu amb cura quins fils/ processos s' han d' executar en els nuclis i Quins recursos s'han d'utilitzar per a ells.

Quan vam mirar sistemes distribuïts, vam veure (p. ex. Set Falacies de Deutschobject name (optional) ) que el fet de que una xarxa sigui capaç de distribuir totes les operacions a un node arbitrari No ho fa una bona idea. Es veurà que la mateixa cova s'aplica als sistemes multiprocessadors.

Planificació

Si hi ha fils (o processos) a executar, ens agradaria mantenir tots els nuclis ocupats. Si no hi ha fils (o processos) a executar, ens agradaria posar tants nuclis com sigui possible en el mode baix d' energia. És temptador pensar que podem executar cada procés de fil/processat en el següent nucli disponible (degut a un procés bloquejant o aconseguint un regal de temps). Però alguns nuclis poden executar alguns fils (o processos) molt més eficients que d'altres.

  • Enviant un fil des del mateix procés que l' anterior fil (a ocupar aquest nucli) pot ser molt menys car perquè Torna a carregar la taula de pàgines (i buidant totes les entrades TLB) És una operació molt cara.
  • Un fil en el mateix procés pot executar més eficientment perquè Codi compartit i dades poden L1/ L2 ja existeix.
  • Fils que estan dissenyats per a executar- se conactualment (p. ex. paral· lel El productor i el consum comunicant- se a través de la memòria compartida) haurien de Si s'executen en diferents nuclis.

Així doncs, l'elecció de quan executar el fil en el qual el nucli no és un arbitràriament. El planificador ha de considerar quin procés ha estat l' últim córrer en cada nucli. Pot tenir més sentit deixar un nucli inactiu, i el retard executant un fil fins que es faci el seu nucli preferit disponible. El sistema operatiu intentarà prendre decisions intel·ligents. però si els desenvolupadors entenen com es poden assignar millor el treball Entre els nuclis del multiprocessador, poden aconsellar el sistema operatiu amb operacions com ara sched_setfinity(2) i ptocap_setfinity_ np(3) .

Sincronització

Compartir dades entre processos és relativament estrany en el codi d' usuari. Però el sistema operatiu està ple de dades compartides (la taula de processos) Entrades, descriptors de fitxers, planificació i cues d' E/ S, etc.). En un desprocessador, les causes principals de les condicions racials són Planificació preventiva i interrupcions d' E/O. Ambdós d'aquests problemes Es pot gestionar deshabilitant (seleccionat) s' interrompen mentre s' executa Seccions crítics... i molts sistemes operatius simplement declaren que les preempcions no poden ocórrer en executar- se en l' operació sistema.

Aquestes tècniques deixen de ser efectives una vegada el sistema operatiu s' està executant en diverses CPU en un sistema multiprocessador. S' està deshabilitant No es pot interrompre un altre nucli des d' operacions d' execució en un sol objecte global (p. ex. I-node). Per tant multiprocessador Els sistemes operatius requereixen alguns altres mitjans per assegurar la integritat estructures globals de dades. Sistemes d'operacions primerencs del multiprocessador S' ha intentat crear un únic bloqueig global, global, nucli... per assegurar- vos que Només es pot executar un procés en l' operació sistema. Però això és essencialment equivalent a executar l'operacions sistema en una sola CPU. A mesura que el nombre de nuclis augmenta, el El sistema d'operacions es converteix en l'esclelabilitat Un coll d'ampolla.

La solució a aquest problema és el bloqueig més fi. I com a el nombre de nuclis augmentades, la granularitat necessària per aconseguir El paral·lelisme es va tornar sempre més fi. Depenent del recurs i operacions compartides en particular, Es poden aconseguir sincronitzacions diferents amb diferents mecanismes (per exemple.g. Comparar i intercanviar, girs, interrompre deshabilita, Prova de bloqueigs o bloqueigs en silenci. A més a més per a cada recurs (i combinació Necessitem un pla per prevenir la mort. S' està canviant el codi complex que Inclou actualitzacions relatives a nombroses estructures de dades a implementar El bloqueig fi és difícil de fer (necessari necessari) Canvis de disseny) i relativament fràgil (com fan els mantenidors Canvis que no són l'honor de totes les regles de sincronització complexes). Si s' ha pres una decisió per travessar el sistema operatiu Bloqueig graciós, és molt més difícil per a una tercera festa Desenvolupadors per construir add-ons (p. ex. Controladors de dispositiu i sistemes de fitxers) Això funcionarà amb els esquemes de bloqueig més fi que hi ha al Atendre sistema operatiu.

A causa d'aquesta complexitat, hi ha relativament pocs operatius sistemes que són capaços d' escala eficient als nombres grans dels nuclis del multiprocessador. La majoria dels sistemes operatius han escollit La simplicitat i la seva incapacitat.

Dispositiu E/ S

Si s' ha de iniciar una operació d' E/ S, importa quina CPU ¿Va iniciar-lo? Quan una interrupció d' E/O entra en un sistema multiprocessador, Quin processador s' ha d' interrompre? Hi ha algunes raons per les que potser volem escollir amb cura que Els nuclis gestionen les operacions I/O:

  • com amb la planificació, enviar totes les operacions per a un particular dispositiu a un nucli particular pot resultar en més L1/ L2 La memòria cau colpeja i l' execució més eficient.
  • Sincronització entre els vèrtexs (repulsió) des de les trucades del sistema) i asíncron (repulsió de interrupcions d' un controlador de dispositiu si són Totes s' executen en la mateixa CPU.
  • Cada CPU té un índex limitat d' E/ S, i potser desitjarem per equilibrar l' activitat entre els nuclis disponibles.
  • Algunes CPU poden estar més a prop d'uns dispositius I/O, Així que les operacions van més ràpidament iniciades des de Alguns nuclis.

Moltes arquitectures multiprocessades tenen controladors d' interrupció que són configurables per a les quals s' han d' enviar les interrupcions a quins processadors.

Arquitectures de memòria no opcionals

CC-NUMA només és viable si podem garantir que la gran majoria Totes les referències de memòria es poden satisfer de la memòria local. Fent això Resulta que crear una gran complexitat per al sistema operatiu.

Quan discutim l'assignació de memòria d'un processador, vam observar que es poden aconseguir estalvis importants si compartim un sol Còpia d' un mòdul de càrrega (només de lectura) entre tots els processos que eren executant aquest programa. Això deixa de ser cert quan aquests processos S'estan executant amb diferents nodes de la NUMA. Codi i altres dades de només lectura Hauria de tenir una còpia separada (en memòria local) a cada node de NUMA. El cost (en termes de memòria perduda) és negliil en comparació El rendiment guanya per fer totes les referències de codi locals.

Quan un programa crida forquilla(2) per crear un nou procés, exec(2) per executar un nou programa, o sbrk(2) per expandir el seu espai d' adreces, La memòria requerida sempre s' ha d' assignar des de la La piscina de memòria local del node. Això crea una afinitat molt forta entre processos i nodes de NUMA. Si és necessari. Migra un procés a un nou node de NUMA, tots els seus assignats els segments de codi i dades s' han de copiar a la memòria local Al node de destí.

Com ja s' ha indicat anteriorment, el sistema operatiu està ple d' estructures de dades que són compartits entre molts nuclis. Com podem reduir el nombre o el cost de les referències a memòria remota associades amb aquestes compartides estructures de dades? Si les actualitzacions són poques, parsecs i aleatoris, aquí Pot ser que sigui poc que puguem fer per optimitzar-los... però els seus costos seran No ser alt. Quan s' usen més intenses estructures de dades compartides Es requereix, hi ha dos appoachs generals:

  • Moveu les dades al càlcul
  • Bloqueja l' estructura de dades.
  • Copiar-la a la memòria local.
  • Actualitza el punter global per reflectir la seva nova ubicació.
  • Allibera la còpia antiga (remote).
  • Fes totes les operacions subsegüents a la còpia local (ara).
  • mou el càlcul a les dades
  • Cerca el node que posseeix el recurs en qüestió.
  • Envia un missatge sol· licitant- lo per realitzar les operacions necessàries.
  • Espera una resposta.

A la pràctica, les dues tècniques s'utilitzen... la tria determinada per les particulars del recurs i el seu accés.

Com amb una sincronització fina de les estructures de dades del nucli, això Resulta que és extremadament complicat. Relatiument pocs sistemes operatius Ha estat disposat a pagar aquest preu, i un altre cop (més) la majoria de opten per la simplicitat i la simplicitat. mantébilitat sobre el rendiment i l'oblobilitat.

Artículos Relacionados:

- Processador -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +