Hyper-threading технологияны жне компьютерлік ойындар
Автор: Жармагамбетова Г.О.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Основной раздел
Статья в выпуске: 1 (19), 2017 года.
Бесплатный доступ
Осы мақалада Intel HT технологиясының пайдалану өнімділігін төмендетуі мүмкін. Кезде HT өнімділігінің түсуінің әлеуетті тағы бір себебі бар. Теориялық, операциялық жүйе автоматты түрде оңтайлы ағындарынан ағады, бірақ жақын ескі жүйесі және, негізінен, ол емес, болмашы нәрсе міндет болуы мүмкін емес.
Процессор, ht технологиясы, win32 api функциялар
Короткий адрес: https://sciup.org/140289353
IDR: 140289353
Текст научной статьи Hyper-threading технологияны жне компьютерлік ойындар
Кілт сөздер: процессор, HT технологиясы, Win32 API функциялар.
HT өнімділігінен пайда
Теория жүзінде, HT пайдалану өнімділігін төмендетуі мүмкін. Біріншіден, ол кейде алайда, кейде «дұрыс» қолданбасы жылдамдығын жоғалтып алады. HT үшін бағдарламалау кейбір ерекшеліктерін жоқ жазылған көп бұрандалы бағдарламалар орын алуы мүмкін.Мысалы, егер еске ететін және екі ағындары ортақ кэшті «бүлдіретін болса». Мүмкін, оның ішінде және осы себеппен, HT технологиясы күніне 512 Кбайт дейін өсті және одан кэш тек Pentium IV іске асырылды. Күніне 512 Кбайт жеткілікті, және сіз байланысты кэш өнімділігін жоғалту туралы алаңдатты мүмкін емес [1].
Кезде HT өнімділігінің түсуінің әлеуетті тағы бір себебі бар.Ол төрт логикалық процессор қос Xeon негізінде жүйелері үшін, атап айтқанда, пайдалы болып табылады. Операциялык жYЙенiц ек нег1зг1 аFындары бар көп бұрандалы өтінімдерді жағдайда қате бір физикалық сәйкес екі логикалық процессор осы екі тақырыпта қоюға құқылы.Содан кейін екі ағындары толық физикалық процессор оның иелігінде автоматты түрде алынған, өйткені содан кейін, өнімділігі, кеңсе HT сол жүйесіне қарағанда, эрине, темен болады.
Теориялық, операциялық жүйе автоматты түрде оңтайлы агындарынан аFады, б1рак жакын ескi жYЙесi жэне, непзшен, ол емес, болмашы нэрсе мiндет болуы мумкш емес. Агындарыныц каркындылыгын бақылауға алу керек, және т.б. Мұның арқасында оңтайлы, бұлақтардың саны, атап айтқанда, негізгі, логикалық процессорлар санына тең болып табылады.Терт - кос Xeon непзшде серверлер жаFдайда, ек1 - HT бар Pentium4 непзшде жумыс устелшщ жуйелершщ жаFдайында [2].
HT Yшiн косымшаларды косу
Бір қолдану өнімділікті жетістіктерге жету үшін, ол көпағынды болуы мүмкін. Ал, айтарлықтай көпағынды, параллель жұмыс салыстырмалы мелшерш орындайды.
Мумкш., бул ОЖ саналы колдау болмауы Intel дереу барлык HT процессорлар Pentium IV 1ске косу уш1н руксат жок болып табылады. Жара технологияларды енгізу өнімділігін төмендетеді, егер ол қолайсыз болар ед1. Жи1 оларды «уйыктап» деп аталатын спин-куту iлмектер агыны.
(жалауша == 0), ал;
Функциясы басқа процесс туын орнатылады сәттен күтеді.Жіп логикалық процессор жұмыс істеп тұрған кезде жад жүйесі автобус жүктер мен шараларды, олардың шексіз сұрау екінші логикалық процессор іске болып табылады. Бұл функция бір физикалық процессор жүзеге кезде, ол соншалықты жаман емес. Ал HT операциялық жүйесі туралы білмей, қате бір физикалық процессор, бұл «ұйқы» қозғалысы және жұмыс орналастырылған болуы мүмкін. Ал «ұйқы» жұмыс өнімділігін баяулатады.
Win32 API тиісінше WaitForMultipleObjects, және Семафоры, іс-шаралар мен, көптеген қолдау үшін басқа да құралдар пайдалануға болады. Бірақ кейде оларды пайдалану тым ебедейсіз болып табылады. Сіз арнайы монтаждық нұсқаулық үзіліс пайдалануыңға болады. Ол жай ғана осылайша бейбіт ұйқы ағып, аударма біраз уақыт ештеңе істемейді. Іс-шаралар, жүздеген, мүмкін тіпті мыңдаған саны - ол процессордың стандарттары бойынша ұзақ уақыт бойы ештеңе жасамайды, бұл анық.
PentiumIV арналған ол ғана емес үшін арнайы нұсқасы, кез келген бағдарламада пайдалануға болады, яғни бұл туралы, тек NOP бұрын процессорлар түсіндіріледі. Бұл нұсқаулық MSVC6.0 үшін IntelCompiler немесе MicrosoftProcessorPack енгізілген intrinsics пайдалана отырып деп аталатын болады. Бұл ProcessorPack жұмыс істеу үшін ServicePack5.0 қажет. Ол қазірдің өзінде қолдайды VisualStudio.Net.
ал (жалауша == 0)
_mm_pause ();
Бірақ бұл, өкінішке орай, барлық HT әсерін қол жеткізу үшін қажетті болып табылады. Бір жағымсыз нәрсе болуы мүмкін - факт, бұл кэш PentiumIV процессор бір мезгілде әр түрлі дәл 1Mb шешу екі жолға, болуы мүмкін емес. Міне, ол контроллер кэшінде болып табылады. Windows әдепкі бойынша тасқын стек мөлшері ғана 1MB болып табылады. Және бұл деректер мекенжайлар екі түзулер 1Мб ерекшеленеді екен. Бұл тұрақты жаңарту кэшін туғызады және ХТ бүкіл әсерін жояды. Бұл әсер бейтараптандыру жинақты ағыны функцияларды айнымалы мекенжайлар бөлу жылжытуға болады. Мысалға:
IntN = 0;
TreadFunction жарамсыз ()
{ егер (N> 0)
_alloca (N * 4096);
N ++;
}
Қайда N - белсенді арасында, әрине, ағынының саны. Әйтпесе, бірте-бірте жады жетіспей қалады. Маған ағымдағы жіп дестесін жады бөледі, жад автоматты түрде ThreadFunction шығу босатылған Сіз _alloca функциясын еске саламыз. Осылайша, жергілікті айнымалы мекенжайлар арасындағы айырмашылық жиі 1Мб бірнеше емес, және апатсыз болдырмауға болады. Кейде HT кез-келген әсерінсіз осы оңтайландыру алынуы мүмкін емес.
Орташа ең оңтайлы туралы 4КБ жылжу тексеру. Ондаған пайызға бірнеше - барлық осы Ережелерге сәйкес HT қазіргі заманғы жүйелерде өте жақсы ұтымды орындауға әкелуі тиіс [2].
Оңтайландыру үшін бағдарламалық қамтамасыз ету құралдары
Intel қосымшалары әдеттегі көппроцессорлы жүйелер үшін және Hyper-Threading бар жүйелер үшін қосымшаларды құру үшін қолайлы даму құралдарын ұсынды.Біріншіден, VTune жетінші нұсқасынан бастап, бағдарламаны талдау құралы барлық ағындар бірдей тиеледі және бос болып табылады ма, қалай жақсы параллель бағдарламасы ағып келеді.Үндестіру кезінде туындаған қателерді табу шектеулі құралы бар.Айнымалы мекенжайлар 1Мб еселігі сияқты нақты HT проблемаларын ұстау үшін мүмкіндігі бар.
Екіншіден, нұсқасы 6-7 жылдан бері Intel C++ компилятор және IntelFortranOpenMP үшін қолдау кіреді.төменгі сызық күнделікті жазу ауқымдылығы қоңырау Win32 API бастап многопоточные қосымшалар құру кезінде бағдарламашы босатылған болып табылады [2].
Мысалы, модульдер бойынша цикл бар делік, параллель қолданасыз, себебі функциялар тәуелсіз қолданылады. Былай жазуға болады:
үшін #pragma ОМП параллель
(Мен Ñ <Мен ++ I = 0) {
Unit function (і);
}
Қолданылған әдебиеттер:
-
1. Hyper-Threading технология. – 2002. Қол жеткiзудiң режiмi:
-
2. Технология Hyper-Threading и компьютерные игры. – 2014. - Қол жеткiзудiң режiмi: .
Список литературы Hyper-threading технологияны жне компьютерлік ойындар
- Hyper-Threading технология. - 2002. Қол жеткiзудiң режiмi: http://ryazan-4687-33.weyawet.ru/.
- Технология Hyper-Threading и компьютерные игры. - 2014. - Қол жеткiзудiң режiмi: http://www.dtf.ru/articles/read.php?id=113&page=2.