Унутрыпрацэсарная шматпаточнасьць
Унутрыпрацэ́сарная шматпато́чнасьць (па-ангельску: on-chip multithreading) дазваляе працэсару адначасова кіраваць некалькімі праграмнымі патокамі, такім чынам маскаваць прастоі. Сьцісла прынцып унутрыпрацэсарнай шматпаточнасьці можна выказаць так: калі праграмны паток блякуецца, працэсар можа забясьпечыць поўную загрузку апаратуры, запусьціўшы праграмны паток 2.
Два асноўныя спосабы рэалізацыі ўнутрыпрацэсарнай шматпаточнасьці:
- Дробнамодульная шматпаточнасьць;
- Буйнамодульная шматпаточнасьць.
Дробнамодульная шматпаточнасьць
рэдагавацьДробнамодульная шматпаточнасьць (па-ангельску: fine-grained multithreading) дазваляе выкарыстаць некалькі патокаў, нават калі адзін зь іх прастойвае.
Пры дробнамодульнай шматпаточнасьці затрымка працэсара на зварот у кэш маскуецца шляхам выкананьня патокаў «па коле», гэта значыць у сумежных цыклях запускаюцца розныя патокі.
Паколькі розныя праграмныя патокі ніяк паміж сабой не зьвязаныя, кожнаму зь іх патрэбны свой набор рэгістраў. Ён павінен быць распрацаваны для кожнай выкліканай каманды, і тады апаратнае забесьпячэньне будзе ведаць, да якога набору рэгістраў пры неабходнасьці трэба зьвяртацца. Такім чынам, максымальная колькасьць адначасова выкананых праграмных патокаў вызначаецца ў пэрыяд распрацоўкі мікрасхемы.
Агульнае правіла фармулюецца так: калі ў канвэеры k прыступак, але па крузе можна запусьціць, па меншай меры, k праграмных патокаў, то ў адным патоке ў любы асобна ўзяты момант ня можа выконвацца больш адной каманды, таму канфлікты паміж імі выключаныя. У такой сытуацыі працэсар можа працаваць на поўнай хуткасьці, без прастою.
Таму для прастою ў k тактаў трэба k+1 патокаў.
Буйнамодульная шматпаточнасьць
рэдагавацьУ дадзеным выпадку праграмны паток працягвае выконвацца пасьлядоўна, да звароту ў кэш. Пры гэтым губляецца адзін цыкль, так як кожны раз пры прастоі каманды губляецца адзін цыкль, па сваёй эфэктыўнасьці буйнамодульная шматпаточнасьць (па-ангельску: coarse-grained multithreading), здавалася б, саступае дробнамодульнай, аднак у яе ёсьць адна істотная перавага - дзякуючы меншай колькасьць праграмных патокаў значна скарачаецца выдатак рэсурсаў працэсара. Пры недастатковай колькасьці актыўных патокаў гэтая мэтодыка аптымальная.
Прынылежнасьць апэрацый да патокаў
рэдагавацьУ незалежнасьці ад варыянту шматпаточнасьці, неабходна як-небудзь адсочваць прыналежнасьць кожнай апэрацыі да таго ці іншага праграмнага патоку. У рамках дробнамодульнай шматпаточнасьці кожнай апэрацыі прысвойваецца ідэнтыфікатар патока, таму пры перасоўваньнях па канвэеры яе прыналежнасьць не выклікае сумневаў.
Буйнамодульная шматпаточнасьць прадугледжвае магчымасьць ачысткі канвэера перад запускам кожнага наступнага патока. У такім разе выразна вызначаецца ідэнтычнасьць патока, які выконваецца ў дадзены момант.