Унутрыпрацэсарная шматпаточнасьць

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі
Перайсьці да навігацыі Перайсьці да пошуку

Унутрыпрацэсарная шматпаточнасьць (па-ангельску: on-chip multithreading) дазваляе працэсару адначасова кіраваць некалькімі праграмнымі патокамі, такім чынам маскаваць прастоі. Сьцісла прынцып унутрыпрацэсарнай шматпаточнасьці можна выказаць так: калі праграмны паток блякуецца, працэсар можа забясьпечыць поўную загрузку апаратуры, запусьціўшы праграмны паток 2.

Два асноўных спосабы рэалізацыі ўнутрыпрацэсарнай шматпаточнасьці:

  • Дробнамодульная шматпаточнасьць;
  • Буйнамодульная шматпаточнасьць.

Дробнамодульная шматпаточнасьць[рэдагаваць | рэдагаваць крыніцу]

Дробнамодульная шматпаточнасьць (па-ангельску: fine-grained multithreading) дазваляе выкарыстаць некалькі патокаў, нават калі адзін зь іх прастойвае.

Пры дробнамодульнай шматпаточнасьці затрымка працэсара на зварот у кэш маскуецца шляхам выкананьня патокаў «па коле», гэта значыць у сумежных цыклях запускаюцца розныя патокі.

Паколькі розныя праграмныя патокі ніяк паміж сабой не зьвязаныя, кожнаму зь іх патрэбны свой набор рэгістраў. Ён павінен быць распрацаваны для кожнай выкліканай каманды, і тады апаратнае забесьпячэньне будзе ведаць, да якога набору рэгістраў пры неабходнасьці трэба зьвяртацца. Такім чынам, максымальная колькасьць адначасова выкананых праграмных патокаў вызначаецца ў пэрыяд распрацоўкі мікрасхемы.

Агульнае правіла фармулюецца так: калі ў канвэеры k прыступак, але па крузе можна запусьціць, па меншай меры, k праграмных патокаў, то ў адным патоке ў любы асобна ўзяты момант ня можа выконвацца больш адной каманды, таму канфлікты паміж імі выключаныя. У такой сытуацыі працэсар можа працаваць на поўнай хуткасьці, без прастою.

Таму для прастою ў k тактаў трэба k+1 патокаў.

Буйнамодульная шматпаточнасьць[рэдагаваць | рэдагаваць крыніцу]

У дадзеным выпадку праграмны паток працягвае выконвацца пасьлядоўна, да звароту ў кэш. Пры гэтым губляецца адзін цыкль, так як кожны раз пры прастоі каманды губляецца адзін цыкль, па сваёй эфэктыўнасьці буйнамодульная шматпаточнасьць (па-ангельску: coarse-grained multithreading), здавалася б, саступае дробнамодульнай, аднак у яе ёсьць адна істотная перавага - дзякуючы меншай колькасьць праграмных патокаў значна скарачаецца выдатак рэсурсаў працэсара. Пры недастатковай колькасьці актыўных патокаў гэтая мэтодыка аптымальная.

Прынылежнасьць апэрацый да патокаў[рэдагаваць | рэдагаваць крыніцу]

У незалежнасьці ад варыянту шматпаточнасьці, неабходна як-небудзь адсочваць прыналежнасьць кожнай апэрацыі да таго ці іншага праграмнага патоку. У рамках дробнамодульнай шматпаточнасьці кожнай апэрацыі прысвойваецца ідэнтыфікатар патока, таму пры перасоўваньнях па канвэеры яе прыналежнасьць не выклікае сумневаў.

Буйнамодульная шматпаточнасьць прадугледжвае магчымасьць ачысткі канвэера перад запускам кожнага наступнага патока. У такім разе выразна вызначаецца ідэнтычнасьць патока, які выконваецца ў дадзены момант.