Barrel processor

**Barrel processor** (doslova "sudový/barelový/bubnový procesor") alebo **interleaved temporal multithreading (processor)**  alebo **fine-grained multithreading (processor)** je procesor, ktorý prepína medzi vláknami výpočtu v každom cykle.  Ako opak simultánneho multithreadingu v moderných superskalárnych architektúrach spravidla nedovoľuje vykonávanie viacerých inštrukcií v jednom cykle. 

Napríklad periférny procesorový systém počítačov série CDC 6000 a jeho nasledovníkov vykonával jednu inštrukciu (alebo časť inštrukcie) na každom z 10 rôznych virtuálnych procesorov (zvaných periférne procesory) predtým ako sa vykonávanie vrátilo hlavnému procesoru..  Procesor IP3023 vyvinutý spoločnosťou Ubicom taktiež vykonáva jednu inštrukciu v každom z 8 rôznych vlákien a následne sa vracia k hlavnému vláknu. 

Podobne ako pri preemptívnom multitaskingu je ku každému vláknu priradené jeho vlastné počítadlo programu a iné registre. Barrel procesor je schopný zaručiť, že každé vlákno vykoná 1 inštrukciu každých N cyklov, na rozdiel od systémov s preemptívnym multitaskingom, v ktorých sa jedno vlákno zvyčajne vykonáva počas stoviek až tisícok cyklov, kým ostatné vlákna čakajú.

Technika zvaná C-slowing dokáže k bežnému single-tasking návrhu procesora automaticky vygenerovať korešpondujúci barrel návrh procesora. n-dielny barrel procesor vytvorený takýmto spôsobom pracuje ako n separátnych kópií pôvodného single-tasking procesora, pričom každá kópia pracuje rýchlosťou rovnajúcou sa zhruba 1/n pôvodnej rýchlosti.

## Výhody oproti jednovláknovým procesorom
Jednovláknový procesor strávi množstvo času čakaním a nerobením ničoho užitočného, pri každom výpadku cache alebo zastaveniu pipeline.  Výhody barrel procesorov oproti single-tasking procesorom zahŕňajú:
* Schopnosť robiť užitočnú prácu na ostatných vláknach, kým zastavené (stalled) vlákno čaká.  Návrh n-dielneho barrel procesora s pipeline hĺbky n je omnoho jednoduchší než návrh single-tasking procesora, pretože pri barrel procesore sa nikdy nevyskytne zastavenie pipeline a nevzniká potreba feed-forward obvodov.                                                                                         
* Pri real-time aplikáciach môže barrel procesor zaručiť, že "real-time" vlákno sa môže vykonávať s presným časovaním, nezávisle od toho, čo sa deje s ostatnými vláknami – i keď je niektoré z ostatných vlákien uviaznuté (deadlock),  v nekonečnom cykle alebo je prerušované hardvérovými prerušeniami. 

## Nevýhody oproti jednovláknovým procesorom
* Buď musia všetky vlákna zdieľať rovnakú cache, čo znižuje celkový výkon systému, alebo pre každé vlákno musí byť vyhradená jedna jednotka cache, ktorá dokáže značne zvýšiť počet tranzistorov (transistor count) takého CPU. Avšak, väčšina barrel procesorov je používaná na implementáciu tzv hard real-time vnorených systémov, kde náklady na prístup do pamäte sú zvyčajne vypočítavané s predpokladom najhoršieho správania sa cache.
Stav každého vlákna musí byť udržiavaný  on-chip (typicky v registroch), aby sa vyhlo off-chip kontextovému prepínaniu (context switch). Oproti bežným procesorom to vyžaduje veľké množstvo registrov. 

## Referencie


## Pozri aj
*Thread (multithreading)
*Simultánny multithreading
*multitasking (počítače) 
*Hyper Threading

## Zdroj
* 

Kategória:CPU