# Multiprocés simètric

SMP és la sigla de Symmetric Multi-Processing , multiprocés simètric. Es tracta d'un tipus d'arquitectura d'ordinadors en què dos o més processadors comparteixen una única memòria central.

## Explicació detallada

L'arquitectura SMP (Multi-simètric, també anomenada UMA, de Uniform Memory Access), es caracteritza pel fet que diversos microprocessadors comparteixen l'accés a la memòria. Tots els microprocessadors competeixen en igualtat de condicions per aquest accés, d'aquí la denominació "simètric".
Els sistemes SMP permeten que qualsevol processador treballi en qualsevol tasca sense importar la seva localització en memòria, amb un propici suport del sistema operatiu, aquests sistemes poden moure fàcilment tasques entre els processadors per garantir eficientment el treball.
Un ordinador SMP es compon de microprocessadors independents que es comuniquen amb la memòria a través d'un bus compartit. Aquest bus és un recurs d'ús comú. Per tant, ha de ser arbitrat perquè només un microprocessador el sempre a cada instant de temps. Si els ordinadors amb un sol microprocessador tendeixen a gastar considerable temps esperant que arribin les dades des de la memòria, SMP empitjora aquesta situació, ja que hi ha diversos aturats en espera de dades.

## Conceptes relacionats

* Arquitectura NUMA
Multiprocés simètric, una de les formes més fàcils i barates d'augmentar el rendiment del maquinari és posar més d'una CPU a la placa. Això es pot realitzar fent que CPU diferents tinguin treballs diferents (multiprocés asimètric) o fent que tots s'executin en paral·lel, realitzant la mateixa feina (multiprocés simètric o SMP). El fer multiprocés asimètric requereix un coneixement especialitzat sobre les tasques que l'ordinador ha d'executar, que no és fàcilment discernible en un sistema operatiu de propòsit general com Linux. En canvi el multiprocés simètric és relativament fàcil d'implementar.
En un entorn de multiprocés simètric, les CPU comparteixen la mateixa memòria, i com a resultat, el codi que corre en una CPU pot afectar la memòria utilitzada per una altra. No es pot estar segur que una variable que s'ha establert a un cert valor a la línia anterior encara tingui el mateix valor, l'altra CPU pot modificar el valor de la variable. No és possible programar una mica d'aquesta manera.
En el cas de la programació de processos això no sol ser un problema, perquè un procés normalment només s'executarà en una CPU a la vegada. El nucli, però, podria ser cridat per diferents processos executant-se en CPU diferents.
En la versió 2.0.x del nucli de Linux, això no és un problema perquè el nucli sencer està en un gran spinlock '. Això significa que si una CPU està dins del nucli i una altra CPU vol entrar-hi, per exemple per una trucada al sistema, ha d'esperar fins que la primera CPU hagi acabat. Això és el que fa el SMP a Linux, és segur, però ineficient.
En la versió 2.2.x, diverses CPU poden estar dins del nucli al mateix temps. Això és una cosa que els escriptors de mòduls han de tenir en compte.

## Vegeu també

* Arquitectura Harvard
* Arquitectura Eckert-Mauchly
* Sistemes redundants

## Referències

* The Intel Microprocessors 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, and Pentium Pro Processor Architecture, Programming, and Inter- facing (ISBN: 9780139954085), Prentice Hall (2000), Autor:Brey. Barry B.
* Multiprocessing online community Arxivat 2012-01-07 a Wayback Machine.
* Chip_Multiprocessing Arxivat 2011-06-05 a Wayback Machine.

## Enllaços externs

* multiprocessing online community Arxivat 2012-01-07 a Wayback Machine.