# Multithreading simultani

El multithreading simultània (SMT) és una tècnica per millorar l'eficiència global de les CPU superescalars amb multfil de maquinari. SMT permet múltiples fils d'execució independents per utilitzar millor els recursos proporcionats per les arquitectures de processadors modernes.

## Detalls

El terme multithreading és ambigu, perquè no només es poden executar diversos fils simultàniament en un nucli de CPU, sinó també múltiples tasques (amb diferents taules de pàgines, diferents segments d'estat de tasques, diferents anells de protecció, diferents permisos d'E/S, etc.). Tot i que funcionen sobre el mateix nucli, estan completament separats entre si. El concepte multiprocés és similar a la multitasca preventiva, però s'implementa al nivell d'execució del fil en els processadors superescalars moderns.
El multithreading simultània (SMT) és una de les dues implementacions principals del multithreading, l'altra forma és el multithreading temporal (també conegut com a super-threading). En el multithreading temporal, només es pot executar un fil d'instruccions en qualsevol etapa de pipeline donada alhora. En el multithreading simultani, les instruccions de més d'un fil es poden executar en qualsevol etapa de pipeline donada alhora. Això es fa sense grans canvis a l'arquitectura bàsica del processador: les principals addicions necessàries són la capacitat d'obtenir instruccions de diversos fils en un cicle i un fitxer de registre més gran per contenir dades de diversos fils. El nombre de fils concurrents el decideixen els dissenyadors de xips. Són habituals dos fils concurrents per nucli de CPU, però alguns processadors en admeten molts més.
Com que augmenta inevitablement el conflicte sobre els recursos compartits, pot ser difícil mesurar o consensuar la seva eficàcia. Tanmateix, es va mesurar l'eficiència energètica de l'SMT amb càrregues de treball natives i gestionades en paral·leles de 130nm a 32nm. Les implementacions nm Intel SMT (hyper-threading) van trobar que en implementacions de 45nm i 32nm, SMT és extremadament eficient energèticament, fins i tot amb processadors Atom en ordre. En els sistemes moderns, SMT explota eficaçment la concurrència amb molt poca potència dinàmica addicional. És a dir, fins i tot quan els guanys de rendiment són mínims, l'estalvi de consum d'energia pot ser considerable. Alguns investigadors han demostrat que els fils addicionals es poden utilitzar de manera proactiva per sembrar un recurs compartit com una memòria cau, per millorar el rendiment d'un altre fil únic, i afirmen que això demostra que SMT no només augmenta l'eficiència. Altres utilitza SMT per proporcionar càlcul redundant, per a un cert nivell de detecció i recuperació d'errors.
Tanmateix, en la majoria dels casos actuals, SMT tracta d'amagar la latència de memòria, augmentar l'eficiència i augmentar el rendiment de càlculs per quantitat de maquinari utilitzat.

## Taxonomia

En el disseny del processador, hi ha dues maneres d'augmentar el paral·lelisme al xip amb menys requisits de recursos: una és la tècnica superescalar que intenta explotar el paral·lelisme a nivell d'instrucció (ILP); l'altre és l'enfocament multithreading que explota el paral·lelisme a nivell de fil (TLP).
Superescalar significa executar diverses instruccions al mateix temps, mentre que el paral·lelisme a nivell de fil (TLP) executa instruccions de diversos fils dins d'un xip de processador alhora. Hi ha moltes maneres de donar suport a més d'un fil dins d'un xip, a saber:
* Multithreading entrellaçat: problema intercalat de múltiples instruccions de diferents fils, també conegut com multithreading temporal. Es pot dividir a més en multiprocés de gra fi o multiprocés de gra gruixut depenent de la freqüència dels problemes intercalats. El multiprocés de gra fi, com en un processador de barril, emet instruccions per a diferents fils després de cada cicle, mentre que el multiprocés de gra gruixut només canvia per emetre instruccions d'un altre fil quan el fil en execució actual provoca alguns esdeveniments de latència llarga (com ara errors de pàgina, etc.). El multithreading de gra gruixut és més comú per a menys canvi de context entre fils. Per exemple, el processador Montecito d'Intel utilitza multithreading de gra gruixut, mentre que l'UltraSPARC T1 de Sun utilitza multithreading de gra fi. Per a aquells processadors que només tenen una canalització per nucli, el multiprocés entrellaçat és l'única manera possible, perquè pot emetre com a màxim una instrucció per cicle.
* Multiprocés simultània (SMT): emet diverses instruccions des de diversos fils en un cicle. El processador ha de ser superescalar per fer-ho.
* Multiprocessament a nivell de xip (CMP o multicore): integra dos o més processadors en un xip, cadascun executant fils de manera independent.
* Qualsevol combinació de multiprocés/SMT/CMP.
El factor clau per distingir-los és mirar quantes instruccions pot emetre el processador en un cicle i quants fils d'on provenen les instruccions. Per exemple, l'UltraSPARC T1 de Sun Microsystems és un processador multinucli combinat amb una tècnica de multiprocés de gra fi en lloc de multiprocés simultània perquè cada nucli només pot emetre una instrucció a la vegada.

## Implementacions històriques

Tot i que les CPU multithreading existeixen des de la dècada de 1950, IBM va investigar per primera vegada el multithreading simultani el 1968 com a part del projecte ACS-360. El primer microprocessador comercial important desenvolupat amb SMT va ser l'Alpha 21464 (EV8). Aquest microprocessador va ser desenvolupat per DEC en coordinació amb Dean Tullsen de la Universitat de Califòrnia, San Diego, i Susan Eggers i Henry Levy de la Universitat de Washington. El microprocessador mai es va llançar, ja que la línia Alpha de microprocessadors es va suspendre poc abans que HP adquirís Compaq, que al seu torn havia adquirit DEC. El treball de Dean Tullsen també es va utilitzar per desenvolupar les versions hiper-filades de l'Intel Pentium 4 microprocessadors, com el "Northwood" i el "Prescott".

## Implementacions comercials modernes

L'Intel Pentium 4 va ser el primer processador d'escriptori modern que va implementar multithreading simultani, a partir de la 3.06. Model de GHz llançat el 2002, i des de llavors introduït en diversos dels seus processadors. Intel anomena la funcionalitat Hyper-Threading Technology i proporciona un motor bàsic SMT de dos fils. Intel afirma una millora de velocitat de fins a un 30% en comparació amb un Pentium que no és SMT idèntic. 4. La millora del rendiment observada depèn molt de l'aplicació; tanmateix, quan s'executen dos programes que requereixen tota l'atenció del processador, pot semblar que un o tots dos programes s'alentiren lleugerament quan s'activa Hyper-threading. Això es deu al sistema de reproducció del Pentium 4 lligar recursos d'execució valuosos, augmentar la disputa per recursos com ara ample de banda, memòria cau, TLB, reordenar les entrades de memòria intermèdia i igualar els recursos del processador entre els dos programes, cosa que afegeix una quantitat variable de temps d'execució. El Pentium 4 Prescott core va obtenir una cua de reproducció, que redueix el temps d'execució necessari per al sistema de reproducció. Això va ser suficient per superar completament l'èxit de rendiment.
Els últims dissenys d'arquitectura MIPS d'Imagination Technologies inclouen un sistema SMT conegut com "MIPS MT". MIPS MT ofereix tant elements de processament virtuals pesats com microprocesos de maquinari més lleugers. RMI, una startup amb seu a Cupertino, és el primer venedor de MIPS que proporciona un SOC de processador basat en vuit nuclis, cadascun dels quals executa quatre fils. Els fils es poden executar en mode de gra fi on es pot executar un fil diferent a cada cicle. També es poden assignar prioritats als fils. Les CPU MIPS d'Imagination Technologies tenen dos fils SMT per nucli.
El Blue Gene /Q d'IBM té SMT de 4 vies.
L'IBM POWER5, anunciat el maig de 2004, es presenta com un mòdul de doble xip (DCM) o un mòdul multixip de quatre nuclis o oct-core (MCM), amb cada nucli que inclou un motor SMT de dos fils. La implementació d'IBM és més sofisticada que les anteriors, perquè pot assignar una prioritat diferent als diferents fils, és més fina i el motor SMT es pot activar i apagar de manera dinàmica, per executar millor aquelles càrregues de treball on un SMT. processador no augmentaria el rendiment. Aquesta és la segona implementació d'IBM de multiprocés de maquinari disponible generalment. El 2010, IBM va llançar sistemes basats en el processador POWER7 amb vuit nuclis, cadascun amb quatre fils intel·ligents simultanis. Això canvia el mode de fil entre un fil, dos fils o quatre fils depenent del nombre de fils de procés que s'estan programant en aquell moment. Això optimitza l'ús del nucli per obtenir un temps de resposta mínim o un rendiment màxim. IBM POWER8 té 8 fils intel·ligents simultanis per nucli (SMT8).
L'IBM Z que va començar amb el processador z13 el 2013 té dos fils per nucli (SMT-2).
Tot i que molta gent va informar que l'UltraSPARC T1 de Sun Microsystems (conegut com "Niagara" fins al seu llançament el 14 de novembre de 2005) i el processador ara desaparegut amb nom en clau " Roca " (anunciat originalment el 2005, però després de molts retards cancel·lats el 2010) són implementacions d'SPARC. centrat gairebé completament en l'explotació de tècniques SMT i CMP, Niagara no utilitza realment SMT. Sun es refereix a aquests enfocaments combinats com a "CMT" i el concepte general com a "informàtica de rendiment". El Niagara té vuit nuclis, però cada nucli només té una canonada, de manera que en realitat utilitza multiprocés de gra fi. A diferència de l'SMT, on les instruccions de diversos fils comparteixen la finestra d'emissió cada cicle, el processador utilitza una política round robin per emetre instruccions del següent fil actiu cada cicle. Això fa que sigui més semblant a un processador de barril. El processador Rock de Sun Microsystems és diferent: té nuclis més complexos que tenen més d'una canonada.

## Inconvenients

Depenent del disseny i l'arquitectura del processador, el multithreading simultani pot disminuir el rendiment si algun dels recursos compartits és un coll d'ampolla per al rendiment. Els crítics argumenten que és una càrrega considerable posar als desenvolupadors de programari que han de provar si el multithreading simultani és bo o dolent per a la seva aplicació en diverses situacions i inserir una lògica addicional per desactivar-lo si disminueix el rendiment. Els sistemes operatius actuals no disposen de trucades d'API convenients per a aquest propòsit i per evitar que processos amb prioritat diferent s'agafen recursos els uns dels altres.
També hi ha un problema de seguretat amb determinades implementacions simultànies de multiprocés. L'hiperthreading d'Intel en processadors basats en NetBurst té una vulnerabilitat a través de la qual és possible que una aplicació robi una clau criptogràfica d'una altra aplicació que s'executa al mateix processador supervisant l'ús de la memòria cau. També hi ha explotacions d'aprenentatge automàtic sofisticades per a la implementació d'HT que es van explicar a Black Hat 2018.

## Referències

* ↑ Upadhyay, Abhinav. «Two Threads, One Core: How Simultaneous Multithreading Works Under the Hood» (en anglès). [Consulta: 28 gener 2025].
* ↑ «The First Direct Mesh-to-Mesh Photonic Fabric» (en anglès). Arxivat de l'original el 2024-02-08. [Consulta: 8 febrer 2024].
* ↑ Smotherman, Mark. «End of IBM ACS Project». School of Computing, Clemson University, 25-05-2011. [Consulta: 19 gener 2013].
* ↑ Marr, Deborah Intel Technology Journal, 6, 1, 14-02-2002, pàg. 4. DOI: 10.1535/itj [Consulta: 25 setembre 2015].
* ↑ «CPU performance evaluation Pentium 4 2.8 and 3.0» (en anglès). Arxivat de l'original el 2021-02-24. [Consulta: 22 abril 2011].
* 1 2 «Replay: Unknown Features of the NetBurst Core. Page 15» (en anglès). Replay: Unknown Features of the NetBurst Core.. xbitlabs.com. Arxivat de l'original el 14 May 2011. [Consulta: 24 abril 2011].
* ↑ «MIPS MT ASE description» (en anglès).