Кіріспе
Intel компаниясының эксклюзивті бір мезгілде көп жіпті өңдеу (SMT) технологиясы.
Intel's proprietary SMT implementation
Hyper Threading (ресми түрде Hyper Threading Technology немесе HT Technology деп аталады және HTT немесе HT деп қысқартылады) – Intel компаниясының x86 микропроцессорларында есептеулерді параллельдетуді (бірнеше тапсырманы бір уақытта орындау) жақсарту үшін қолданылатын эксклюзивті бір мезгілде көп жіпті өңдеу (SMT) технологиясы. Алғаш рет 2002 жылдың ақпан айында Xeon серверлік процессорларында, ал 2002 жылдың қараша айында Pentium 4 десктоптық процессорларында пайда болды. Содан бері Intel бұл технологияны Itanium, Atom және Core 'i' сериялы процессорларының ішінде де қолданып келеді. Әрбір физикалық процессорлық ядро үшін операциялық жүйе екі виртуалды (логикалық) ядроны көрсетеді және мүмкіндігі шектес болса, жұмыс жүктемесін олардың арасында бөліседі. Hyper Threading-тің басты міндеті – құбыржолдағы тәуелсіз командалардың санын арттыру; ол суперскалярлық архитектураның артықшылықтарын пайдаланады, онда бірнеше командалар параллель түрде жеке деректермен жұмыс істейді. HTT арқылы бір физикалық ядро операциялық жүйеге екі процессор ретінде көрінеді, бұл әрбір ядроға екі процестің бір уақытта жоспарлануына мүмкіндік береді. Сонымен қатар, екі немесе одан да көп процесс бірдей ресурстарды пайдалана алады: егер бір процесс үшін ресурстар қолжетімді болмаса, онда екінші процесс, егер оның ресурстары бос болса, жұмысын жалғастыра береді. Операциялық жүйеде бір мезгілде көп жіпті өңдеуді қолдау қажеттілігімен қатар, Hyper Threading тек осы технологияға арнайы оптимизацияланған операциялық жүйеде тиімді пайдаланылуы мүмкін.
Шолу
Hyper Threading Technology – Intel компаниясы ұсынған бір мезгілде көп тізбекті өңдеу технологиясының бір түрі, ал технологияның тұжырымдамасы Sun Microsystems компаниясымен патенттелген. Архитектуралық тұрғыдан алғанда, Hyper Threading Technology процессоры әрбір ядроға екі логикалық процессордан тұрады, олардың әрқайсысының өз процессор архитектуралық күйі бар. Әрбір логикалық процессорды жеке тоқтатуға, үзіліс жасауға немесе бір физикалық ядроны бөлісетін басқа логикалық процессордан тәуелсіз, белгілі бір тізбекті орындауға бағыттауға болады. Екі жеке физикалық процессорды пайдаланатын дәстүрлі екі процессорлық конфигурациядан айырмашылығы, гипертізбекті ядродағы логикалық процессорлар орындау ресурстарын бөліседі. Бұл ресурстарға орындау механизмі, кэштер және жүйелік шина интерфейсі кіреді; ресурстарды ортақтастыру екі логикалық процессордың бір-бірімен тиімді жұмыс істеуіне мүмкіндік береді және логикалық процессорға тоқтап тұрған логикалық ядродан ресурстарды алуға мүмкіндік береді (егер екі логикалық ядро да бір физикалық ядромен байланысты болса). Процессор қазіргі тізбекті өңдеуді аяқтау үшін күтіп тұрған деректерді күтуге мәжбүр болған кезде тоқтап қалады. Гипертізбекті немесе көп ядролы процессорды пайдаланудан алынатын пайда деңгейі бағдарламалық қамтамасының қажеттіліктеріне және процессорды тиімді басқару үшін оның және операциялық жүйенің қаншалықты жақсы жазылғанына байланысты. Бұл технология операциялық жүйелер мен бағдарламалар үшін көрінбейді. Гипертізбекті пайдалану үшін ең аз талап – операциялық жүйеде симметриялық көппроцессорлық (SMP) қолдауы болуы, себебі логикалық процессорлар операциялық жүйеге физикалық процессорлардан ешқандай айырмашылығы жоқ сияқты көрінеді. Операциялық жүйенің көппроцессорлық, гипертізбекті жүйелердегі әрекетін оңтайландыруға болады. Мысалы, екі физикалық процессордан тұратын SMP жүйесін қарастырайық, екеуі де гипертізбекті (барлығы төрт логикалық процессор үшін). Егер операциялық жүйенің тізбек жоспарлаушысы гипертізбек туралы білмесе, ол төрт логикалық процессорды бірдей қарастырады. Егер орындалуға тек екі тізбек ғана лайықты болса, ол осы тізбектерді бір физикалық процессорға тиесілі екі логикалық процессорда жоспарлауды таңдауы мүмкін. Бұл процессор өте жүктеліске түседі және орындау ресурстарын бөліседі, ал екінші процессор бос күйде қалады, бұл тізбектер әртүрлі физикалық процессорларда жоспарланғаннан нашар өнімділікке әкеледі. Бұл мәселені жоспарлаушыны логикалық процессорларды физикалық процессорлардан өзгеше қарастыру үшін жақсарту арқылы болдырмауға болады, бұл белгілі бір мағынада NUMA жүйелері үшін қажетті жоспарлаушы өзгерістерінің шектеулі түрі.
Тарих
Жалпы мақсаттағы компьютерде гипертілемдеу деп аталатын нәрсені сипаттаған алғашқы жарияланған мақаланы Эдвард С. Дэвидсон мен Леонард Е. Шар 1973 жылы жазды. Denelcor, Inc. 1982 жылы Гетерогенді элементтік процессормен (HEP) көп жіптілікті енгізді. HEP құбыр желісі бір процестен бірнеше нұсқауды сақтай алмайды. Бір уақытта құбыржолда тек бір процеске қатысты бір ғана нұсқау болуына рұқсат етілді. Егер белгілі бір процестің нұсқауы құбырды тоқтатса, құбыр босағаннан кейін басқа процестердің нұсқаулары жалғаса береді. Гипертілемдеу технологиясы бойынша АҚШ патенты 1994 жылдың қарашасында Sun Microsystems компаниясының Кеннет Окинге берілді. Сол кезде CMOS технологиясы тиімді іске асыруға жеткілікті деңгейде дамымаған еді. Intel 2002 жылы Xeon негізіндегі Foster MP процессорда x86 архитектурасында гипертілемдеуді іске асырды. Ол сол жылы 3.06 ГГц Нортвуд негізіндегі Pentium 4 процессорларында да қолданылды және содан бері барлық Pentium 4 HT, Pentium 4 Extreme Edition және Pentium Extreme Edition процессорларында стандартты мүмкіндік ретінде сақталды. Pentium 4 модельдерінің орнына келген Intel Core & Core 2 процессорларының (2006) сериясы гипертілемдеуді пайдаланбады. Core микроархитектурасына негізделген процессорларда гипертілемдеу болған жоқ, себебі Core микроархитектурасы ескі P6 микроархитектурасының тікелей ұрпағы еді. P6 микроархитектурасы Pentium процессорларының алдыңғы буындарында, атап айтқанда Pentium Pro, Pentium II және Pentium III (сондай-ақ сол кездегі олардың Celeron және Xeon нұсқаларында) қолданылған. Windows 2000 SP3 және Windows XP SP1 гипертілемдеуді қолдауды қосты. Intel 2008 жылдың қарашасында Nehalem микроархитектурасын (Core i7) шығарды, онда гипертілемдеу қайтадан пайда болды. Nehalem процессорларының бірінші буыны төрт физикалық ядроны қамтиды және тиімді түрде сегіз жіпке дейін кеңейтілді. Содан бері екі және алты ядролы модельдер де шығарылды, тиісінше төрт және он екі жіпке дейін кеңейтілді. Алдыңғы Intel Atom ядролары төмен қуатты мобильді компьютерлер мен арзан бағалы десктоптық компьютерлер үшін, кейде гипертілемдеу мүмкіндігімен, реттік процессорлар болды. Itanium 9300 процессор жетілдірілген гипертілемдеу технологиясы арқылы процессорға сегіз жіппен (әр ядроға екі жіптен) іске қосылды. Келесі модель, Itanium 9500 (Poulson), 12 кең мәселелік архитектураны ұсынады, онда сегіз CPU ядросы бар, сонымен қатар гипертілемдеу арқылы тағы сегіз виртуалды ядроны қолдайды. Intel Xeon 5500 серверлік чиптері де екі жолды гипертілемдеуді пайдаланады.
Орындау талаптары
Intel-дің мәліметінше, алғашқы гипертілемдік жүзеге асыру, салыстырмалы гипертілемсіз процессорға қарағанда тек 5% көбірек чиптік аумақты пайдаланды, бірақ өнімділік 15–30% жақсы болды. Intel компаниясы, басқаша жағдайда бірдей, бір уақытта емес көп өзекті Pentium 4 процессормен салыстырғанда өнімділікті 30% дейін арттыратынын мәлімдейді. Tom's Hardware мынадай мәлімдейді: «Кейбір жағдайларда 3.0 ГГц жиілікте жұмыс істейтін P4, HT қосылған күйде, 3.6 ГГц жиілікте жұмыс істейтін, бірақ HT өшірілген P4-тен де жақсы нәтиже бере алады». Intel сондай-ақ, кейбір жасанды интеллект алгоритмдерінде гипертілемді Pentium 4 процессорының өнімділігін айтарлықтай жақсартатынын мәлімдейді. Жалпы, гипертілемдік технологияның бастапқы кезеңдегі өнімділік тарихы әр түрлі болды. 2002 жылғы қарашадағы жоғары өнімділіктегі есептеулерге қатысты бір пікірде: Гипертілемдік кейбір MPI қолданбаларының өнімділігін жақсарта алады, бірақ барлығын емес. Кластердің конфигурациясына және, ең бастысы, кластерде іске қосылған қолданбаның ерекшеліктеріне байланысты өнімділіктегі артықшылықтар әртүрлі болуы мүмкін, тіпті теріс те болуы мүмкін. Келесі қадам – өнімділікті арттыратын және төмендететін факторларды анықтау үшін өнімділік құралдарын пайдалану. Соның салдарынан, өнімділікті жақсарту қолданбаға тікелей байланысты; алайда, процессордың толық назарын қажет ететін екі бағдарламаны бірдей іске қосқанда, Hyper Threading Technology қосылған кезде бағдарламалардың бірі немесе екеуі де сәл баяулау сияқты көрінеді. Бұл Pentium 4 процессордың қайта ойнату жүйесінің құнды орындау ресурстарын тозақтығына және екі бағдарлама арасында процессор ресурстарын тең бөлуіне байланысты, бұл орындау уақытын ұзартады. Pentium 4 "Prescott" және Xeon "Nocona" процессорлары қайта ойнату кезегін алды, бұл қайта ойнату жүйесіне қажетті орындау уақытын қысқартып, өнімділіктегі кемшілікті толыққанды жояды. Intel компаниясының 2009 жылғы қарашадағы талдауына сәйкес, гипертілемдік технологияның өнімділікке әсері, егер орындалған операциялардың жалпы өтімділігі айтарлықтай арта қоймаса, жалпы жауап уақытын ұзартады. Желілік трафикті басқаруға қатысты тапсырмаларды орындау үшін гипертілемдік қолданған кезде де ұқсас өнімділік талдауы бар, мысалы, желілік интерфейс контроллерінен (NIC) келетін үзіліс сұрауларын өңдеу үшін. Тағы бір мақалада гипертілемдік технологияны үзіліспен жұмыс істеу үшін пайдаланғанда өнімділікте жақсару байқалмайды деп мәлімделеді.
Hyper Threading can improve the performance of some MPI applications, but not all. Depending on the cluster configuration and, most importantly, the nature of the application running on the cluster, performance gains can vary or even be negative. The next step is to use performance tools to understand what areas contribute to performance gains and what areas contribute to performance degradation. As a result, performance improvements are very application dependent; however, when running two programs that require full attention of the processor, it can actually seem like one or both of the programs slows down slightly when Hyper Threading Technology is turned on. This is due to the replay system of the Pentium 4 tying up valuable execution resources, equalizing the processor resources between the two programs, which adds a varying amount of execution time. The Pentium 4 "Prescott" and the Xeon "Nocona" processors received a replay queue that reduces execution time needed for the replay system and completely overcomes the performance penalty. According to a November 2009 analysis by Intel, performance impacts of hyper threading result in increased overall latency in case the execution of threads does not result in significant overall throughput gains, which vary A similar performance analysis is available for the effects of hyper threading when used to handle tasks related to managing network traffic, such as for processing interrupt requests generated by network interface controllers (NICs). Another paper claims no performance improvements when hyper threading is used for interrupt handling.
Кемшіліктері
Алғашқы HT процессорлары шыққан кезде көптеген операциялық жүйелер гипертілемдеу технологиясына (мысалы, Windows 2000 және 2.4-тен ескі Linux) оңтайландырылмаған. 2006 жылы гипертілемдеу энергия тиімділігі тұрғысынан сынға алынды. Мысалы, ARM (арнайы, төмен қуатты CPU жобалау компаниясы) бір мезгілдегі көп өрістілік қарапайым екі ядролы жобаларға қарағанда 46%-ға дейін көбірек қуатты пайдаланатынын мәлімдеді. Сонымен қатар, олар SMT кэштің қақтығысын 42%-ға дейін арттырады, ал екі ядролы дизайн 37%-ға дейін азайтады деп мәлімдеді. 2010 жылы ARM болашақ чиптерінде бір мезгілдегі көп өрістілікті қолдану мүмкіндігін айтты; алайда, бұл олардың 2012 жылғы 64 биттік дизайнына қайшы болды. ARM SMT ядроларын 2018 жылы шығарды. 2013 жылы Intel Silvermont процессорлық ядролары үшін SMT-ні қолданудан бас тартып, оның орнына тапсырыссыз орындауды таңдады, себебі бұл төменгі ядролы сандарға қарағанда жақсы өнімділік пен энергия тиімділігін қамтамасыз етті. 2017 жылы Intel-дің Skylake және Kaby Lake процессорларындағы гипертілемдеуді іске асыруда дерек жоғалтуға әкелетін қателік анықталды. Бұл мәселені жою үшін кейіннен микрокод жаңартулары шығарылды. 2019 жылы Coffee Lake процессорларымен Intel Core i7 үстел процессорларында гипертілемдеуді уақытша қолданудан бас тартты, ең жоғары деңгейдегі Core i9 процессорларын немесе Pentium Gold процессорларын қоспағанда. Сондай-ақ, жаңа CPU осалдықтарын азайтуға болатынын анықтағаннан кейін, гипертілемдеуді өшіруді ұсына бастады.
Қауіпсіздік
2005 жылдың мамырында Колин Персиваль Pentium 4 процессордағы зиянды бағдарламаның, ортақ кэшпен бөлісетін басқа бағдарламаның жадқа қол жеткізу үлгілерін бақылау үшін уақытқа негізделген жанама арналық шабуылды пайдалана алатынын көрсетті, бұл криптографиялық ақпаратты ұрлауға мүмкіндік береді. Бұл, іс жүзінде, уақыттық шабуыл емес, өйткені зиянды бағдарлама тек өзінің орындалу уақытын ғана өлшейді. Мұндай жағдайға ықтимал шешімдер процессордың кэштен шығару стратегиясын өзгерту немесе операциялық жүйенің бір физикалық ядрода әртүрлі құқықтарға ие бағдарламаларды бір уақытта орындауын болдырмауы мүмкін. 2018 жылы OpenBSD операциялық жүйесі Foreshadow/L1TF осалдықтарынан туындаған "қосымшалардан басқа бағдарламаларға деректердің ағып кетуіне жол бермеу мақсатында" гипертілемдеуді өшірді. 2019 жылы қауіпсіздік сарапшылары барлық құрылғыларда гипертілемдеуді өшіруді ұсынған бірнеше осалдықтар анықталды.