A barrel processzor – magyarul körülírva kb. forgótáras processzor, vagy gyorstüzelő processzor, de a többkontextusú processzor kifejezés is jól leírja a fogalmat – egy olyan CPU, amelyik minden egyes utasításciklusban egy következő végrehajtási szálra vált, körkörös rendszerben. A szálak száma egy előre rögzített szám, pl. 10, és a processzor minden órajelciklusban a következő szál soron következő utasítását kezdi el (vagy folytatja), és a 11. órajelciklusban visszatér az első szál soron következő végrehajtandó műveletéhez. Ez a CPU-tervezési technika más néven „átlapolt / összefésült” vagy „finomszemcsés” temporális többszálú működésként is ismert; a processzort pedig nevezik még többkontextusú processzornak is. A modern szuperskalár architektúrák szimultán többszálas végrehajtásával ellentétben ez a technika általában nem engedi meg egy ciklus alatt több utasítás végrehajtását.
A preemptív többfeladatos működéshez hasonlóan, a barrel processzorban minden végrehajtási szálhoz saját külön programszámláló és hardver-regiszterek tartoznak, ezek alkotják a szál architekturális állapotát. A barrel processzor képes garantálni, hogy n ciklus alatt minden szál végrehajt egy utasítást, nem úgy, mint a preemptív többfeladatos működés esetében, ahol a szálak jellemzően több száz vagy több ezer ciklust átfogó időben futnak és ezalatt a többi szál várakozik, hogy sorra kerüljön.
Az egyfeladatos processzorkialakításokból a C-slowing nevű technikával lehetséges az annak megfelelő barrel processzor-kialakítás automatikus generálása. Egy ilyen módon előállított n-utas barrel processzor úgy működik, mint az eredeti egyfeladatos processzor n különálló többfeladatos másolata, amelyek mind az eredeti sebesség 1/n-ed részéhez közeli sebességen futnak.
A barrel processzor legkorábbi példáinak egyike a CDC 6000 sorozat szuperszámítógépeinek be-/kimeneti feldolgozórendszere volt. Ez egyetlen kiépített processzorhardver segítségével 10 külön virtuális processzor működését valósította meg, a fent említett módon: a valódi processzor minden egyes órajelütem alatt a soron következő virtuális processzor egy utasítását hajtja végre (vagy az utasítás egy részét, mivel néhány utasítás végrehajtása több órajelciklust igényel), míg a végrehajtás a 10-ik órajelütem után visszatér az első processzorhoz. Ezek a virtuális processzorok a CDC 6000-esben a periferiális processzor nevet kapták, feladatuk után.
Barrel processzor technikával nagyméretű központi processzorokat is készítettek. A Tera MTA (1988) központi egysége egy ilyen nagyméretű barrel processzor kialakítás, magonként 128 végrehajtási szállal. Az MTA architektúra fejlesztését a rákövetkező termékekben is folytatták, ilyen például a 2012-ben bemutatott YarcData uRiKA platform, amit adatbányászati alkalmazások futtatására használnak.
A barrel processzorok a hardverköltségek csökkentésére is alkalmasak. A Xerox Alto (1973) mikrokódját egy barrel processzor futtatja, amely két CPU-t, egy videocsatolót, Ethernet vezérlőket, egy lemezvezérlő egységet, és más bemeneti/kimeneti egységeket szolgál ki, ugyanazzal a mikrogéppel és regiszterkészlettel. (Az Alto központi egysége bitszelet-technikával készült, 74181 MSI integrált áramkörökkel épült fel.)
A barrel processzorok beágyazott rendszerekben is megtalálhatóak, ahol különösen hasznosak determinisztikus valós idejű szál-sebességük miatt. Erre egy példa az XMOS XCore XS1 (2007), amelyben egy négyfokozatú barrel processzor működik, magonként nyolc szállal. Az XS1 Ethernet, USB, audio- és egyéb vezérlőeszközökben található, és olyan alkalmazásokban, ahol a bemeneti/kimeneti teljesítmény kritikus. A barrel processzorokat használják még olyan speciális eszközökben is, mint például a nyolcszálas Ubicom IP3023 hálózati bemeneti/kimeneti processzor (2004).
Az egyfeladatos processzor sok időt tölt tétlenül, semmilyen hasznos tevékenységet nem végezve, mikor gyorsítótár-tévesztés vagy futószalag-leállás (elakadás) lép fel. A barrel processzorok használatának előnyei az egyfeladatos processzorokkal szemben a következők:
A barrel processzoroknak van néhány hátrányuk is.
The Alto was powered by a custom16-bit bit-slice processor consisting of 4 TTL 74181 ALU's ...
{{cite web}}: Check date values in: |accessdate= (súgó)