Simultaneous multithreading [1] ( eng. Simultaneous Multithreading - SMT ) on yksi monisäikeistyksen kahdesta päämuodosta , jotka voidaan toteuttaa prosessorien laitteistoissa. Toinen muoto on väliaikainen monisäikeistys . Samanaikaisen monisäikeistyksen tekniikka mahdollistaa käskyjen suorittamisen useista itsenäisistä suoritussäikeistä superskalaarimikroprosessorin toiminnallisten moduulien sarjassa yhdessä syklissä.
Dean Tullsen esitteli samanaikaisen monisäikeistyksen ensimmäisen kerran tutkimuskirjoissa vuonna 1995 ( UC San Diego ) [2] [3] [4] [5] .
Ensimmäinen prosessori, joka toteuttaa samanaikaisen monisäikeen, olisi DEC :n Alpha 21464 -mikroprosessori , joka julkistettiin vuonna 1999. Prosessorin kehitti pääarkkitehti Joel Emer johtama tiimi . Prosessori oli yksiytiminen, superskalaari ja 8 liukuhihnaa, siinä oli 4 sarjaa rekistereitä kontekstin vaihtamista varten ja se pystyi mahdollisesti suorittamaan 4 säiettä samanaikaisesti. Kaksinkertainen suorituskyvyn kasvu saavutettiin, kun logiikkaelementtien lukumäärä kasvoi vain 10 %. Prosessori ilmensi monella tapaa ehdotuksia ja lähestymistapoja, jotka hahmoteltiin Dean Tallsenin työssä, jonka työhön osallistuivat eräät Alpha-tiimin jäsenet (Joel Emer ja Rebecca Stamm). Alpha 21464 ei kuitenkaan koskaan tullut markkinoille, vaan se joutui yritysfuusioiden ja -kauppojen uhriksi [6] .
Näin ollen ensimmäinen samanaikaisen monisäikeistyksen toteutus markkinoilla oli Intelin Hyper-threading-tekniikka , joka esiteltiin vuonna 2002 Xeon -palvelinprosessoreissa ja Pentium 4 :ssä [7] ( NetBurst - mikroarkkitehtuuri ).
Kun Intel kääntyi moniytimisen mikroprosessoriarkkitehtuuriin, se ei siirtänyt hypersäikeistystekniikkaa uusiin prosessoreihin suunnittelun yksinkertaistamiseksi. Tuloksena oli IBM POWER5 -prosessori (2004) [8] , ensimmäinen moniytiminen prosessori, jossa jokaisessa ytimessä oli samanaikainen monisäikeistys . Lopulta Intel toi Hyper-threadingin takaisin prosessoreihinsa Nehalem -arkkitehtuurilla (2008) [9] .
Vuonna 2021 tutkijaryhmä, kuten Grazin teknillinen yliopisto , Georgia Institute of Technology ja voittoa tavoittelematon tutkimuskeskus Lamarr Security Research, löysi haavoittuvuuden AMD :n Zen- , Zen 2- ja Zen 3 -prosessoreihin toteutetussa SMT-tekniikassa . SQUIP [10] (Scheduler Queue Usage via Interference Probing - Scheduler Queue Usage via Interference Probing - Scheduler Queue Usage via Interference Probing - Scheduler Queue through Interference Analyysi ) -niminen haavoittuvuus mahdollistaa hyökkääjien pääsyn luottamuksellisiin tietoihin, joista AMD ilmoitti joulukuussa 2021. Haavoittuvuuden osoittamisen aikana tutkijat "särkivät" RSA-4096- salausavaimen [11] [12] . AMD, joka on määrittänyt haavoittuvuustunnuksen CVE-2021-46778 ja vakavuusluokituksen "keskikokoinen", julkaisi lieventämistä koskevan neuvoa-antavan tiedotteen elokuussa 2022 [13] .
Superskalaaristen mikroprosessorien suorituskykyä lisätään suorittamalla useita käskyjä samanaikaisesti yhdessä syklissä, mutta sitä rajoittavat käskyjen väliset riippuvuudet (jotka rajoittavat rinnakkaissuorituksen mahdollisuuksia, minkä seurauksena ei voida suorittaa suurinta mahdollista määrää käskyjä sykli) ja operaatiot, joilla on korkea latenssi yhden suoritussäikeen sisällä (jotka johtavat jaksojen ilmaantumiseen, joissa ei suoriteta yhtään käskyä - liukuhihna pysähtyy ).
Laitteiston monisäikeistystä käyttävät arkkitehtuurit suorittavat useita säikeitä ja voivat vaihtaa konteksteja nopeasti niiden välillä. Tällainen "perinteinen" monisäikeisyys piilottaa muistin ja toimintolohkon viiveet (vähentäen "tyhjien" jaksojen määrää), vaikka yhdestä säikeestä tulevat käskyt suoritetaan kussakin tietyssä syklissä. Samanaikaisesti suoritettavien käskyjen määrän kasvu heikentää kuitenkin perinteisen monisäikeisyyden ominaisuuksia.
Samanaikainen monisäikeistys yhdistää superskalaariarkkitehtuurikäskyjen rinnakkaissuorituksen laitteiston monisäikeistykseen. Samanaikaisen monisäikeistyksen käyttö, joka johtuu prosessorin toiminnallisten moduulien dynaamisesta jakautumisesta säikeiden välillä, lisää prosessorin käyttöä muistiviiveiden ja rajoitetun kyvyn suorittaa käskyjen rinnakkaissuoritus säikeessä.
Moniytimiset mikroprosessorit ovat organisaatiossaan lähinnä mikroprosessoreja, joissa on samanaikainen monisäikeistys - niillä on useita rekistereitä, useita toiminnallisia moduuleja ja kunkin ytimen superskalariteetti. Suurin ero näiden kahden välillä on resurssien allokointi - moniytimisessä prosessorissa jokainen säie vastaanottaa kiinteän määrän prosessorin toiminnallisia moduuleja, kun taas prosessorissa, jossa on samanaikainen monisäikeistys, moduulien jakautuminen muuttuu jokaisessa jaksossa. Tämän seurauksena prosessorit, joissa on samanaikainen monisäikeisyys, osoittavat parempaa suorituskykyä suurimmalla säikeen kuormituksella, ja säikeiden lukumäärän pienentyessä suorituskyky laskee hitaammin kuin moniytiminen prosessori.
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |