Back

ⓘ Вишенитна обрада




Вишенитна обрада
                                     

ⓘ Вишенитна обрада

Рачунарски процесори са вишенитном обрадом имају хардверску подршку за ефикасно извршавање вишеструких нити. Они се разликују од вишепроцесорских система у томе што нити морају да деле ресурсе једног језгра: рачунарске јединице, кеш и бафер асоцијативног превођења. Док вишепроцесорски системи укључују потпуно вишеструке процесне јединице, вишенитна обрада циља на повећање искоришћења једног језгра коришћењем паралелизма на нивоу нити и инструкција. Пошто се те технике међусобно допуњују, често се комбинују у системима са вишеструким вишенитним процесорима и код процесора са вишеструким вишенитним језгрима.

                                     

1. Преглед

Парадигма вишенитне обраде је постала популарнија откако је напредак на пољу паралелизма на нивоу инструкције достигао врхунац крајем 1990их. Ово је омогућило да се концепт проточног рачунарства врати на сцену из специјализованог поља обраде транскација:

  • Технике које би омогућиле убрзање пропусне моћи целог система са свим задацима би направиле значајно убрзање.
  • Иако је јако тешко додатно убрзати једну нит или један програм, већина рачунарских система у ствари обавља више ствари истовремено међу гомилом нити и програма.

Две главне технике пропусног рачунарства су вишеструки процесори и вишенитна обрада.

                                     

1.1. Преглед Предности

Неке од предности су:

  • Ако нит не може искористити све рачунарске ресурсе процесора јер инструкције зависе од међусобних резултата, покретање друге нити их може искористити.
  • Ако неколико нити обрађује исти скуп података, оне могу делити кеш, што доводи то боље искоришћености кеша или синхронизације њихових вредности.
  • Ако нит направи пуно промашаја кеша, друге нити могу наставити, користећи предност неискоришћених рачунарских ресурса, што може довести до бржег извршавања, с обзиром да би ти ресурси били неискоришћени да се само једна нит извршава.
                                     

1.2. Преглед Мане

Неке од критика вишенитне обраде су:

  • Вишеструке нити могу међусобно сметати једна другој при дељењу хардвера као што су кешеви или бафер асоцијативног превођења TLBs.
  • Извршно време једне нити није побољшано већ може бити смањено, чак и када се само једна нит извршава. Ово је због ниже фреквенције и/или додатних фаза проточне обраде које су неопходне да се реализује хардвер смене нити.
  • Хардверска подршка за вишенитну обраду је видљивија софтверу, стога захтева више промена на нивоу програма и оперативног система, за разлику од вишепроцесорских система.

Зато добитак доста варира; Intel тврди до 30 процената побољшања са својом Hyper-threading технологијом, док синтетички програм који само извршава петљу неоптимизованих зависних операција са покретним зарезом добија чак 100 процената побољшања када се извршава паралелно. С друге стране, ручно оптимизовани асемблерски програми који користе MMX или Altivec проширења и изводе предохват података као код видео енкодера, заобилазе промашаје у кешу и неискоришћеност ресурса. Такви програми стога немају корист од хардверске вишенитне обраде и могу добити и лошије перформансе услед дељења ресурса.

Хардверске технике за подршку вишенитне обраде често иду у пару са софтверским техникама за обраду више задатака истовремено код рачунарских програма.

  • Распоређивање нити је такође велики проблем код вишенитне обраде.


                                     

2. Типови вишенитне обраде

Терминологија

Овај тип вишенитне обраде је познат као блоковска или кооперативна или груба вишенитна обрада.

Примери

  • DEC касније Compaq EV8 није завршен
  • Sun Microsystems UltraSPARC T2
  • Интел Hyper-Threading
  • IBM POWER5
  • MIPS MT
  • CRAY XMT
                                     

2.1. Типови вишенитне обраде Концепт

Најједноставнији тип вишенитне обраде се дешава када једна нит ради све док не буде блокирана од стране догађаја који би иначе створио дуготрајно одуговлачење. То одуговлачење би могао бити промашај у кешу који мора да приступи меморији ван чипа, што може потрошити стотине процесорских циклуса док се податак не врати. Уместо да чека да се одуговлачење разреши, вишенитни процесор би ставио другу нит на извршење која је спремна. Тек када подаци за претходну нит стигну, она ће бити враћена на листу спремних нити.

На пример:

  • Циклус i+5: инструкција k+1 из нити B је издата
  • Циклус i: инструкција j из нити A је издата
  • Циклус i+2: инструкција j+2 из нити A је издата, load инструкција прави промашај у кешу
  • Циклус i+4: инструкција k из нити B је издата
  • Циклус i+1: инструкција j+1 из нити A је издата
  • Циклус i+3: позива се распоређивач нити, пребацује на нит B

Концептуално, то је слично кооперативној обради вишеструких задатака код оперативних система у реалном времену код којих задаци сами одустају од извршења када морају да чекају на неки догађај.

                                     

2.2. Типови вишенитне обраде Цена хардвера

Циљ хардверске подршке вишенитне обраде је да омогући брзу смену између блокираних нити и оних које су спремне за извршење. Да би се ово постигло, хардверска цена је у дуплирању програмски видљивих регистара као и неких процесорских контролних регистара као што је програмски бројач.

Смена са једне нити на другу значи да хардвер прелази са коришћења једног скупа регистара на други.

Предности таквог додатног хардвера су:

  • Смена нити се може одрадити у једном процесорском циклусу.
  • Свакој нити се чини да се сама извршава на процесору и да не дели никакве хардверске ресурсе са било којом другом нити. Ово минимизира количину софтверских промена неопходних на нивоу апликације и оперативног система у сврху подршке вишенитне обраде.

Ради ефикасне смене између активних нити, свака активна нит мора имати свој сопствени скуп регистара. На пример, за брзу смену између две нити, регистарски хардвер мора бити инстанциран двапут.



                                     

2.3. Типови вишенитне обраде Примери

  • Пуно породица микроконтролера и уграђених процесора имају вишеструке групе регистара у циљу брзе смене контекста у случају прекида. Такве шеме се могу сматрати типом блоковске вишенитне обраде између корисничке програмске нити и нити прекида.
                                     

2.4. Типови вишенитне обраде Испреплетана вишенитна обрада

  • Циклус i+1: инструкција из нити B је издата
  • Циклус i+2: инструкција из нити C је издата

Сврха испреплетане вишенитне обраде је уклањање свих застоја унутар проточне обраде услед зависности података. С обзиром да је једна нит релативно независна од других, мања је вероватноћа да ће инструкцији из једне фазе проточне обраде требати резултат старије инструкције у проточној обради.

Концептуално, то је слично обради више истовремених задатака са сменом контекста код оперативних система. Може се направити аналогија да је делић времена дат свакој активној нити један процесорски циклус.

                                     

2.5. Типови вишенитне обраде Терминологија

Овај тип вишенитне обраде је прво зван цилиндрична обрада, код које коморе цилиндра представљају фазе проточне обраде и њене извршне нити. Испреплетана или прекидна или фина или временска вишенитна обрада је модернија терминологија.

                                     

2.6. Типови вишенитне обраде Цена хардвера

Као додатак цени хардвера дискутованој код блоковске вишенитне обраде, испреплетана обрада носи и цену тога што свака фаза проточне обраде прати ID нити инструкције коју извршава. Такође, с обзиром да се више нити извршава истовремено, дељени ресурци као што су кешеви и TLBови морају бити већи да би се избегао конфлит између нити.

                                     

2.7. Типови вишенитне обраде Концепт

Најнапреднији тип вишенитне обраде се односи на суперскаларне процесоре. Обичан суперскаларни процесор издаје вишеструке инструкције из једне нити у сваком циклусу процесора. Код истовремене вишенитне обраде SMT, суперскаларни процесор може издати инструкције из вишеструких нити у сваком циклусу процесора. Препознајући да свака појединачна нит има ограничен ниво паралелизма на нивоу инструкције, овај тип вишенитне обраде покушава да искористи паралелизам на нивоу различитих нити ради смањења неискоришћених процесорских ресурса.

На пример:

  • Циклус i+2: инструкција j+3 из нити A; инструкцијаs m+1 и m+2 из нити C су све истовремено издате
  • Циклус i+1: инструкција j+2 из нити A; инструкција k+1 из нити B; инструкција m из нити C су све истовремено издате
  • Циклус i: инструкције j и j+1 из нити A; инструкција k из нити B су све истовремено издате
                                     

2.8. Типови вишенитне обраде Терминологија

Да би се разликовали други типови вишенитне обраде од SMT-а, израз временска вишенитна обрада се користи да назначи када се инструкција из само једне нити може извршавати у једном тренутку.

                                     

2.9. Типови вишенитне обраде Цена хардвера

Као додатак цени хардвера дискутованој код испреплетане вишенитне обраде, SMT носи додатну цену тога што свака фаза проточне обраде прати ID нити сваке инструкције која се обрађује. И овог пута, дељени ресурци као што су кешеви и TLBови морају бити довољно велики за велики број активних нити које се обрађују.

                                     

2.10. Типови вишенитне обраде Примери

  • DEC касније Compaq EV8 није завршен
  • Sun Microsystems UltraSPARC T2
  • Интел Hyper-Threading
  • IBM POWER5
  • MIPS MT
  • CRAY XMT
                                     

3. Специфичности имплементације

Главно поље истраживања је распоређивач нити који мора брзо изабрати за извршавање између листе спремних нити као и да одржава листе спремних и заустављених нити. Важна подтема су различите шеме приоритета нити које распоређивач може користити. Распоређивач може бити у потпуности имплементиран у софтверу, потпуно у хардверу, као и у комбинацији хардвера/софтвера.

Друго поље истраживања је који тип догађаја би требало да изазове смену нити - промашај у кешу, међу-нитна комуникација, DMA завршетак, итд.

Ако се вишенитна шема подудара са свим софтверски видљивим стањима, укључује привилеговане контролне регистре, TLBове, итд, то омогућује да се виртуелна машина прави за сваку нит. Ово омогућује свакој нити да извршава свој сопствени оперативни систем на истом процесору. С друге стране, ако је само стање корисничког режима сачувано, мање харвера је потребно што омогућује да више нити буде активно истовремено за исту површину чипа/цену.



                                     
  • Временска вишенитна обрада је једна од две главне форме вишенитне обраде која може бити имплементирана на рачунарском процесору, док је друга симултана
  • Супернитна обрада или вишенитна обрада са дељењем времена је тип вишенитне обраде који омогућује да се различите нити извршавају на једном процесору
  • Циклична вишенитна обрада додељује сваки ред засебној нити. Линијска вишенитна обрада додељује сваку колону засебној нити. Циклична вишенитна обрада паралелног
  • VLIW Explicitly Parallel Instruction Computing EPIC истовремена вишенитна обрада енгл. simultaneous multithreading, SMT и вишејезгарни процесори
  • Паралелна обрада је облик рачунања у којем су многи прорачуни спроведени истовремено, а ради на принципу да се велики проблеми често могу поделити на мање
  • нити се користи вишенитнама и или процесима. Тиме само дозвољава кооперативни мултитаскинг на заједничком процесору без паралелне обраде Да би се користили
  • микроархитектуру, са напреднијим обликом вишенитне обраде која користи чак две нити, за поправљање перформанси једнонитних и вишенитних захтева. Неке нове информације
  • имплементирати архитектуру такву као суперскаларну, VLIW, векторску обраду SIMD или вишенитно Вишејезгарни процесори имају широку употребу у многим областима