Кіріспе
Суперскалярлы процессорлардың тиімділігін арттату техникасы. Бір мезгілде көп өрістік (SMT) – аппараттық көп өрістікті қолдану арқылы суперскалярлы процессорлардың жалпы тиімділігін жақсартуға бағытталған техника. SMT заманауи процессор архитектуралары ұсынатын ресурстарды тиімді пайдалану үшін бірнеше тәуелсіз орындалу тізбектерін пайдалануға мүмкіндік береді.
Simultaneous multithreading (SMT) is a technique for improving the overall efficiency of superscalar CPUs with hardware multithreading. SMT permits multiple independent threads of execution to better use the resources provided by modern processor architectures.
Егжей-тегжейлер
Көптірістілік термині мағынасы кең, себебі бір CPU ядросында бірнеше жіптер (thread) бір мезгілде орындалуы мүмкін, сонымен қатар бірнеше тапсырмалар (әр түрлі беттік кестелер, әр түрлі тапсырма күйінің сегменттері, әр түрлі қорғау сақиналары, әр түрлі I/O рұқсаттары және т.б.) орындалуы мүмкін. Бір ядрода жұмыс істесе де, олар бір-бірінен толыққанды оқшауланған. Көптірістілік тұжырымдамасы алдын ала көп тапсырмалылыққа (preemptive multitasking) ұқсас, бірақ қазіргі заманғы суперскалярлы процессорларда орындалу деңгейінде іске асырылады. Бір мезгілдегі көптірістілік (Simultaneous Multithreading - SMT) – көптірістіліктің екі негізгі түрінің бірі, екіншісі – уақытша көптірістілік (Temporal Multithreading), сонымен қатар супертірістілік деп те аталады. Уақытша көптірістілікте, кез келген құбыржол сатысында бір уақытта тек бір жіптен нұсқаулар орындалуы мүмкін. Ал бір мезгілдегі көптірістілікте, бірнеше жіптен келген нұсқаулар кез келген құбыржол сатысында бір уақытта орындалуы мүмкін. Бұл процессор архитектурасына елеулі өзгерістер енгізбей жасалады: қажетті негізгі толықтырулар – цикл ішінде бірнеше жіптен нұсқауларды алу мүмкіндігі және бірнеше жіптен деректерді сақтау үшін үлкен регистрлік файл. Бір мезгілде орындалатын жіптердің санын чип жасаушылар анықтайды. CPU ядросына екі жіп жиі кездеседі, бірақ кейбір процессорлар одан да көп жіпті қолдайды. Ортақ ресурстарда қақтығыстарды күшейтетіндіктен, оның тиімділігін өлшеу немесе келісу қиын болуы мүмкін. Дегенмен, 130 нм-ден 32 нм-ге дейінгі Intel SMT (гипертірістілік) жүзеге асыруларындағы өлшемдер, SMT энергия тиімділігінің жоғары екенін көрсетті, тіпті Atom процессорларымен де, ал 45 нм және 32 нм жүзеге асыруларында SMT өте энергия тиімді болып шықты. Қазіргі жүйелерде SMT өте аз қосымша динамикалық қуатпен қатарлылықты тиімді пайдаланады. Яғни, өнімділік жоғарыласа да, қуатты үнемдеу айтарлықтай болуы мүмкін. SMT технологиясымен жасалған алғашқы ірі коммерциялық микропроцессор Alpha 21464 (EV8) болды. Бұл микропроцессорды DEC, Калифорния университетінің Сан-Диегодағы филиалындағы Диан Талльсенмен, сондай-ақ Вашингтон университетіндегі Сьюзан Эггерс және Генри Левимен бірлесіп әзірледі. Микропроцессор ешқашан шығарылмады, себебі Alpha процессорлар желісі HP компаниясы Compaq-ты, ал Compaq DEC-ті сатып алғаннан кейін тоқтатылды. Диан Талльсеннің жұмысы Intel Pentium 4 микропроцессорларының гипертірістілік нұсқаларын, мысалы "Northwood" және "Prescott" сияқтыларын әзірлеу үшін де пайдаланылды.
Заманауи коммерциялық іске асырулар
Intel Pentium 4 – 2002 жылы шығарылған 3.06 ГГц модельінен бастап бір мезгілде көп тірістіктерді іске асырған алғашқы заманауи үстел процессоры, және содан бері олардың көптеген процессорларына енгізілген. Intel бұл мүмкіндікті Hyper Threading Technology деп атайды және негізгі екі жіпті SMT қозғалтқышын ұсынады. Intel жылдамдықты 30%-ға дейін арттыратынын мәлімдейді, бұл басқа ұқсас, SMT емес Pentium 4-ке қарағанда. Көрінетін өнімділіктің жақсаруы қолданбаға байланысты; алайда, процессордың толық назарын қажет ететін екі бағдарламаны іске қосқанда, Hyper Threading қосылған кезде бағдарламалардың бірі немесе екеуі де сәл баяулаған сияқты көрінеді. Бұл Pentium 4-тің қайта ойнату жүйесінің құнды орындау ресурстарын тоқтатуына байланысты, бұл жолақтың ені, кэштер, TLB-лер, қайта тапсыру буферлері және екі бағдарлама арасында процессор ресурстарын теңестіруге байланысты, бұл орындау уақытын өзгертеді. Pentium 4 Prescott ядросы қайта ойнату кезегін алды, бұл қайта ойнату жүйесіне қажетті орындау уақытын қысқартады. Бұл өнімділіктің төмендеуін толық жеңуге жеткілікті болды. Imagination Technologies MIPS архитектурасының соңғы жобаларына "MIPS MT" деп аталатын SMT жүйесі кіреді. MIPS MT ауыр виртуалды өңдеу элементтеріне және жеңіл аппараттық микрожіптерге мүмкіндік береді. Купертинодағы RMI стартапы MIPS-ті сегіз ядроға негізделген процессор SOC-мен қамтамасыз еткен алғашқы өнім беруші болып табылады, олардың әрқайсысы төрт жіпте жұмыс істейді. Жіптерді әр цикл сайын басқа жіпті орындау үшін ұсақ түйірлі режимде іске қосуға болады. Жіптерге басымдық беруге де болады. Imagination Technologies MIPS процессорларында әр ядрода екі SMT жіпі бар. IBM-нің Blue Gene/Q-да 4 жолды SMT бар. 2004 жылдың мамырында жарияланған IBM POWER5 екі ядролы екі чипті модуль (DCM) немесе төрт ядролы немесе сегіз ядролы көп чипті модуль (MCM) болып келеді, әр ядро екі жіпті SMT қозғалтқышын қамтиды. IBM-нің іске асыруы бұрынғыларына қарағанда күрделірек, өйткені ол әртүрлі жіптерге әртүрлі басымдық бере алады, ұсақ түйірлі және SMT қозғалтқышын динамикалық түрде қосу және сөндіруге болады, SMT процессоры өнімділікті арттырмайтын жұмыс жүктемесін жақсы орындау үшін. Бұл IBM-нің жалпы қолжетімді аппараттық көп тірістік бағдарламасының екінші іске асырылуы. 2010 жылы IBM POWER7 процессорына негізделген сегіз ядролы жүйелерді шығарды, олардың әрқайсысында төрт бір мезгілдегі интеллектуалды жіп бар. Бұл процесстерді бір жіптік, екі жіптік немесе төрт жіптік режимдерде ауыстырады, бұл сол уақытта жоспарланған процесстердің санына байланысты. Бұл ең аз жауап беру уақытын немесе ең жоғары өткізу қабілетін пайдалануды оңтайландырады. IBM POWER8 бір ядроға 8 интеллектуалды бір мезгілдегі жіптер (SMT8) бар. 2013 жылы z13 процессорынан бастап IBM Z-де әр ядроға екі жіп бар (SMT 2). Көптеген адамдар Sun Microsystems-тің UltraSPARC T1 (2005 жылдың 14 қарашасына дейін "Niagara" деп аталатын) және "Rock" (алғашқыда 2005 жылы жарияланды, бірақ көптеген кешігулерден кейін 2010 жылы тоқтатылды) процессорлары SPARC-тің SMT және CMP әдістерін пайдалануға бағытталған іске асырылуы деп мәлімдегенмен, Niagara іс жүзінде SMT қолданбайды. Sun бұл біріктірілген тәсілдерді "CMT" деп атайды, ал жалпы ұғымды "Throughput Computing" деп атайды. Niagara-ның сегіз ядросы бар, бірақ әр ядрода тек бір ғана құбыр жолы бар, сондықтан ол ұсақ түйірлі көп тірістікті пайдаланады. SMT-дан айырмашылығы, онда бірнеше жіптердегі нұсқаулар әр циклде шығарылым терезесін бөліседі, процессор келесі белсенді жіптен нұсқауларды шығару үшін дөңгелек робин саясатын қолданады. Бұл оны баррельді процессорға ұқсатады. Sun Microsystems Rock процессоры басқаша: оның бірден көп құбыр жолы бар күрделі ядролары бар. Oracle Corporation SPARC T3 әр ядроға сегіз ұсақ түйірлі жіпке ие; SPARC T4, SPARC T5, SPARC M5, M6 және M7 әр ядроға сегіз ұсақ түйірлі жіпке ие, олардың екеуі бір мезгілде орындалуы мүмкін. Fujitsu SPARC64 VI-да дөңгелек зерделі вертикальді көп тірістілік (VMT) SPARC VII және жаңалары 2 жолды SMT бар. Intel Itanium Montecito ірі түйірлі көп тірістікті, Tukwila және жаңалары 2 жолды SMT (қос доменді көп тірістік) қолданады. Intel Xeon Phi-де 4 жолды SMT (уақытша мультиплекстелген көп тірістілік) бар, ол әдеттегі Hyper Threading-тен айырмашылығы, аппараттық негіздегі жіптерді өшіруге болмайды. Intel Atom, алғаш рет 2008 жылы шығарылған, екі бағытты SMT (Hyper Threading ретінде сатылады) нұсқауларды қайта реттеуді, болжамды орындауды немесе тізілімді қайта атауды қолдамайтын алғашқы Intel өнімдері. Intel Hyper Threading-ті Nehalem микроархитектурасымен қайта енгізді, оның Core микроархитектурасында болмаған. AMD Bulldozer микроархитектурасы FlexFPU және ортақ L2 кэші көп тірістік, бірақ модульдегі бүтін сан ядролары бір тірісті, сондықтан бұл тек жартылай SMT іске асырылуы. AMD Zen микроархитектурасы 2 жолды SMT бар. VISC архитектурасы Global Front End-ке бір жіптік нұсқауларды жіберу үшін Virtual Software Layer (көшіру қабатын) пайдаланады, ол нұсқауларды виртуалды аппараттық тірістіктерге бөледі, содан кейін олар жеке виртуалды ядроларға жіберіледі. Бұл виртуалды ядролар оларды кез келген физикалық ядродағы қол жетімді ресурстарға жібере алады. Бір физикалық ядроның қайта тапсыру буферіне бірнеше виртуалды ядролар тірістіктерді жіберуі мүмкін, бұл бірнеше тірістіктерден жартылай нұсқаулар мен деректерді орындау порттары арқылы бір уақытта жіберуге мүмкіндік береді. Әр виртуалды ядро салыстырмалы шығыстың орнын қадағалайды. Бұл көп тірістік түрі бір тірістік өнімділігін арттыруға мүмкіндік береді, өйткені бір тірістік CPU-дың барлық ресурстарын пайдалана алады. Ресурстарды бөлу динамикалық түрде шамамен бір циклдық кешігу деңгейінде (1–4 цикл, жеке қолданбаның қажеттіліктеріне байланысты өзгеріске байланысты) жүзеге асырылады. Сондықтан, егер екі виртуалды ядро ресурстар үшін бәсекелес болса, ресурстарды қайда бөлу керектігін анықтау үшін тиісті алгоритмдер бар.
Кемшіліктер
Процессордың дизайны мен архитектурасына байланысты, бір мезгілде көп жіпті өңдеу, егер ортақ ресурстардың кез келгені өнімділікке бөгет болса, өнімділікті төмендетуі мүмкін. Сынаушылар бағдарламалық жасақтаманы дамытушыларға бір мезгілде көп жіпті өңдеудің олардың қолданбалары үшін түрлі жағдайларда пайдалы немесе зиянды екенін тексеру және егер ол өнімділікті төмендетсе, оны өшіру үшін қосымша логиканы енгізудің үлкен жауапкершілік екенін айтады. Қазіргі операциялық жүйелерде осы мақсатта және әртүрлі приоритетті процестердің бір-бірінен ресурстарды тартып алуына жол бермеу үшін қолайлы API шақырулары жоқ. Кейбір бір мезгілде көп жіпті өңдеуді іске асыруларда қауіпсіздік мәселелері де бар. NetBurst негізіндегі процессорлардағы Intel гипертізбегі, бір қолданбаның кэшін пайдалануын қадағалап, сол процессорда жұмыс істейтін басқа қолданбадан криптографиялық кілтті ұрлау мүмкіндігін ұсынады. Сонымен қатар, Black Hat 2018 конференциясында түсіндірілген HT іске асыруда машиналық оқытудың күрделі әдістері қолданылады.