Аппараттық және бағдарламалық қамтамасыз етуді орнату

Көп ағынды ойын қозғалтқышының архитектурасын жүзеге асыру. Операциялық жүйелер және топология

Көп ағындылық теориясын қарастыра отырып, практикалық мысалды қарастырайық - Pentium 4. Осы процессорды әзірлеу сатысында Intel инженерлері бағдарлама интерфейсіне өзгерістер енгізбестен оның өнімділігін арттыру бойынша жұмысты жалғастырды. Бес қарапайым әдіс қарастырылды:
1. Сағат жиілігін арттыру.
2. Екі процессорды бір чипке орналастыру.
3. Жаңа функционалды блоктарды енгізу.
1. Конвейерді ұзарту.
2. Көп ағынды пайдалану.
Өнімділікті жақсартудың ең айқын жолы - арттыру тактілік жиілікбасқа параметрлерді өзгертпей. Әдетте, әрбір келесі процессор үлгісі алдыңғыға қарағанда біршама жоғары тактілік жиілікке ие. Өкінішке орай, сағат жылдамдығының түзу сызықты ұлғаюымен әзірлеушілер екі мәселеге тап болады: қуатты тұтынудың жоғарылауы (бұл ноутбуктер мен басқа батареямен жұмыс істейтін есептеуіш құрылғыларға қатысты) және қызып кету (тиімді жылу қабылдағыштарды қажет етеді).
Екінші әдіс - екі процессорды чипке орналастыру - салыстырмалы түрде қарапайым, бірақ ол чип алып жатқан аумақты екі есеге арттыруды қамтиды. Егер әрбір процессор өзінің кэш жадымен қамтамасыз етілсе, бір вафлиге арналған чиптер саны екі есе азаяды, бірақ бұл сонымен қатар өндіріс құнының екі есе азаюын білдіреді. Егер екі процессорда да ортақ кэш жады болса, басып алынған аймақтың айтарлықтай ұлғаюын болдырмауға болады, бірақ бұл жағдайда басқа мәселе туындайды - бір процессорға арналған кэш жадының көлемі екі есе азаяды және бұл сөзсіз өнімділікке әсер етеді. Сонымен қатар, кәсіби серверлік қосымшалар бірнеше процессорлардың ресурстарын толығымен пайдалануға қабілетті болғанымен, қарапайым жұмыс үстелі бағдарламаларының ішкі параллелизмі әлдеқайда аз.
Жаңа функционалды блоктарды енгізу де қиын емес, бірақ бұл жерде тепе-теңдікті сақтау маңызды. Егер чип барлық блоктарды жүктей алатын жылдамдықпен құбырға командалар бере алмаса, ондаған ALU мәні неде?
Тапсырмаларды кішігірім сегменттерге бөлуге және оларды қысқа мерзімде өңдеуге қабілетті кезеңдердің саны ұлғайған құбыр, бір жағынан, өнімділікті жақсартады, екінші жағынан, ауысуларды қате болжаудың, кэшті өткізіп алудың жағымсыз салдарын арттырады, процессордағы қалыпты курс нұсқауларын өңдеуді бұзатын үзілістер және басқа оқиғалар. Сонымен қатар, ұзартылған құбырдың мүмкіндіктерін толығымен іске асыру үшін тактілік жиілікті арттыру қажет және бұл, біз білетініміздей, электр энергиясын тұтынуды және жылуды бөлуді арттыруға әкеледі.
Соңында, көп ағынды енгізуге болады. Бұл технологияның артықшылығы - бұл аппараттық ресурстарды іске қосуға мүмкіндік беретін қосымша бағдарламалық қамтамасыз ету ағынын енгізу. әйтпесеорнында тұрар еді. Эксперименттік зерттеулердің нәтижелеріне сүйене отырып, Intel әзірлеушілері көптеген қосымшалар үшін көп ағынды енгізу кезінде чип аймағының 5%-ға ұлғаюы өнімділіктің 25%-ға артатынын анықтады. Алғашқы көп ағынды Intel процессоры 2002 жылғы Xeon болды. Кейіннен, 3,06 ГГц жиіліктен бастап, Pentium 4 желісіне көп ағындылық енгізілді.Intel Pentium 4 гиперағынында көп ағынды енгізуді атайды.
Гипертрейдингтің негізгі принципі – екі бағдарлама ағынын бір уақытта орындау (немесе процестер – процессор процестер мен бағдарлама ағындарын ажыратпайды). Операциялық жүйе Pentium 4 гипер-ағынды процессорын ортақ кэш пен негізгі жады бар екі процессорлы кешен ретінде қарастырады. Операциялық жүйе әрбір бағдарлама ағыны үшін бөлек жоспарлауды орындайды. Осылайша, екі қолданба бір уақытта жұмыс істей алады. Мысалы, пайдаланушы интерактивті қолданбамен, яғни демонмен және пайдаланушы бағдарламасыжүйеде екі процессор қол жетімді сияқты бір уақытта орындалады.
Бірнеше ағындарда орындауға қабілетті қолданбалы бағдарламалар «виртуалды процессорларды» да пайдалана алады. Мысалы, бейне өңдеу бағдарламалары әдетте пайдаланушыларға барлық кадрларға сүзгілерді қолдануға мүмкіндік береді. Мұндай сүзгілер кадрлардың жарықтығын, контрастын, түс балансын және басқа да қасиеттерін түзетеді. Мұндай жағдайда бағдарлама бір виртуалды процессорды жұп кадрларды өңдеуге, ал екіншісін тақ кадрларды өңдеуге тағайындай алады. Бұл жағдайда екі процессор бір-бірінен толығымен тәуелсіз жұмыс істейді.
Бағдарламалық қамтамасыз ету ағындары бірдей аппараттық ресурстарға қатынасатындықтан, бұл ағындарды үйлестіру қажет. Hyperthreading контекстінде Intel әзірлеушілері ресурстарды ортақ пайдалануды басқарудың төрт пайдалы стратегиясын анықтады: ресурстарды қайталау және қатты, шекті және толық ресурстарды ортақ пайдалану. Осы стратегияларды қарастырайық.
Ресурстарды қайталаудан бастайық. Өздеріңіз білетіндей, бағдарлама ағындарын ұйымдастыру үшін кейбір ресурстар қайталанады. Мысалы, әрбір бағдарлама ағыны жеке басқаруды қажет ететіндіктен, екінші бағдарлама есептегіші қажет. Сонымен қатар, сәулет регистрлерін (EAX, EBX және т.б.) физикалық регистрлерге кескіндеу үшін екінші кестені енгізу қажет; сол сияқты, үзу контроллері қайталанады, өйткені әр ағын үшін үзілістерді өңдеу жеке орындалады.
Одан кейін бағдарлама ағындары арасында ресурстарды қатты бөлу (бөлімделген ресурстарды ортақ пайдалану) әдісі қолданылады. Мысалы, егер процессорда құбырдың екі функционалдық сатысы арасында кезек болса, онда слоттардың жартысы 1 жіпке, екінші жартысы 2 жіпке берілуі мүмкін. Ресурстарды ортақ пайдалану оңай жүзеге асырылады, теңгерімсіздікке әкелмейді және бағдарлама ағындарының бір-бірінен толық тәуелсіздігін қамтамасыз етеді. Барлық ресурстардың толық бөлінуімен бір процессор шын мәнінде екіге айналады. Екінші жағынан, бір бағдарлама ағыны екінші ағынға пайдалы болуы мүмкін ресурстарды пайдаланбайтын, бірақ оған кіру құқығы жоқ жағдай туындауы мүмкін. Нәтижесінде, басқаша пайдаланылуы мүмкін ресурстар бос қалады.
Қатты ортақ пайдаланудың қарама-қарсысы - толық ресурстарды ортақ пайдалану. Бұл схемада дұрыс ресурстаркез келген бағдарлама ағыны қатынаса алады және оларға қол жеткізу сұраулары қабылданатын ретпен қызмет көрсетіледі. Негізінен қосу және алу амалдарынан тұратын жылдам ағынның көбейту және бөлу амалдарын жүзеге асыратын баяу ағынмен қатар өмір сүретін жағдайды қарастырайық. Егер жадтан командалар көбейту және бөлу операцияларын орындауға қарағанда тезірек шақырылса, баяу ағынның ішінде шақырылатын және құбырда кезекке тұрған нұсқаулардың саны біртіндеп артады. Сайып келгенде, бұл пәрмендер кезекті толтырады, нәтижесінде бос ағынның жетіспеушілігіне байланысты жылдам ағын тоқтайды. Толық ресурстарды ортақ пайдалану ортақ ресурстарды оңтайлы пайдаланбау мәселесін шешеді, бірақ оларды тұтынуда теңгерімсіздік тудырады - бір ағын екіншісін баяулатуы немесе тоқтатуы мүмкін.
Аралық схема шекті ресурстарды ортақ пайдалану шеңберінде жүзеге асырылады. Бұл схемаға сәйкес кез келген бағдарлама ағыны ресурстардың белгілі (шектелген) көлемін динамикалық түрде ала алады. Қайталанатын ресурстарға қолданылғанда, бұл тәсіл ресурстарды алу мүмкін еместігіне байланысты бағдарлама ағындарының бірінің жұмыссыз қалу қаупінсіз икемділікті қамтамасыз етеді. Егер, мысалы, ағындардың әрқайсысына пәрмен кезегінің 3/4-тен астамын алуға тыйым салынса, баяу ағынмен ресурстарды тұтынудың жоғарылауы жылдамды орындауға кедергі жасамайды.
Pentium 4 гипертрейдинг моделі ресурстарды ортақ пайдаланудың әртүрлі стратегияларын біріктіреді. Осылайша, әрбір стратегияға байланысты барлық мәселелерді шешуге талпыныс жасалады. Қайталау екі бағдарлама ағыны да үнемі қол жеткізуді қажет ететін ресурстарға қатысты жүзеге асырылады (атап айтқанда, бағдарлама есептегішіне, регистрлерді салыстыру кестесіне және үзу контроллеріне қатысты). Бұл ресурстардың қайталануы микросұлбаның ауданын тек 5% арттырады - бұл көп ағынды өткізу үшін өте қолайлы баға екеніне келісесіз. Бір ағынмен (мысалы, кэш сызықтары) түсіру іс жүзінде мүмкін емес көлемде болатын ресурстар динамикалық түрде бөлінеді. Құбырдың жұмысын бақылайтын ресурстарға қол жеткізу (атап айтқанда, оның көптеген кезектері) бөлінген - әрбір бағдарлама ағынына жарты слоттар беріледі. Pentium 4 жүйесінде енгізілген Netburst архитектурасының негізгі құбыры суретте көрсетілген. 8.7; бұл суреттегі ақ және сұр аймақтар ақ және сұр бағдарлама ағындары арасындағы ресурстарды бөлу механизмін білдіреді.
Көріп отырғаныңыздай, бұл суреттегі барлық кезектер бөлінген - әрбір бағдарлама ағынына жарты слоттар бөлінген. Ешбір ағын екіншісінің жұмысын шектей алмайды. Бөлу және алмастыру блогы да бөлінеді. Жоспарлағыш ресурстары динамикалық түрде ортақ пайдаланылады, бірақ кейбір шекті мәнге негізделеді - осылайша, ешбір ағын кезектің барлық ұяшықтарын ала алмайды. Конвейердің барлық басқа сатылары үшін толық бөлу бар.
Дегенмен, көп ағынды пайдалану оңай емес. Тіпті бұл жетілдірілген техниканың да кемшіліктері бар. Ресурстарды қатты бөлу елеулі шығындармен байланысты емес, бірақ динамикалық бөлу, әсіресе шекті мәндерге қатысты, орындау уақытында ресурстарды тұтынуды бақылауды қажет етеді. Сонымен қатар, кейбір жағдайларда бағдарламалар көп ағынсыз онымен салыстырғанда әлдеқайда жақсы жұмыс істейді. Мысалы, екі бағдарлама ағыны болса, олардың әрқайсысы дұрыс жұмыс істеуі үшін кэштің 3/4 бөлігін қажет етеді делік. Егер олар кезекпен орындалса, олардың әрқайсысы кэшті жіберіп алудың аз санымен (олар қосымша үстеме шығындармен байланысты екені белгілі) жақсы жұмыс істейтін еді. Параллель орындалған жағдайда, әрқайсысы үшін кэшті жіберіп алу айтарлықтай көп болады және соңғы нәтиже көп ағынсыздан гөрі нашаррақ болады.
RepPit 4 көп ағынды механизмі туралы қосымша ақпаратты қараңыз.

Бірақ жиілік көрсеткіштерінің жаңа шыңдарын бағындырған кезде оны арттыру қиындай түсті, өйткені бұл процессорлардың TDP артуына әсер етті. Сондықтан әзірлеушілер процессорларды ені бойынша өсіре бастады, атап айтқанда, ядроларды қосу үшін көп ядролы тұжырымдама пайда болды.

Осыдан 6-7 жыл бұрын көп ядролы процессорлар іс жүзінде естімеген еді. Жоқ, сол IBM компаниясының көп ядролы процессорлары бұрын болған, бірақ бірінші екі ядролы процессордың пайда болуы жұмыс үстелі компьютерлері, тек 2005 жылы өтті және шақырылды берілген процессор Pentium D. Сондай-ақ, 2005 жылы AMD екі ядролы Opteron шығарылды, бірақ серверлік жүйелер үшін.

Бұл мақалада біз тарихи фактілерді егжей-тегжейлі қарастырмаймыз, бірақ қазіргі заманғы көп ядролы процессорларды орталық процессордың сипаттамаларының бірі ретінде қарастырамыз. Ең бастысы - бұл көп ядролы процессор үшін және сіз бен маған өнімділік тұрғысынан не беретінін анықтауымыз керек.

Көп ядромен өнімділікті арттыру

Бірнеше ядролардың арқасында процессор өнімділігін арттыру принципі ағындардың (әртүрлі тапсырмалардың) орындалуын бірнеше ядроларға бөлу болып табылады. Қорытындылай келе, жүйеде жұмыс істейтін әрбір дерлік процесте бірнеше ағындар бар.

Мен операциялық жүйе іс жүзінде өзі үшін көптеген ағындарды жасай алатынын және процессор физикалық бір ядролы болса да, барлығын бір уақытта жасай алатынын бірден ескертемін. Бұл принцип бірдей Windows көп тапсырманы жүзеге асырады (мысалы, бір уақытта музыка тыңдау және теру).


Мысалға алайық антивирустық бағдарлама. Бір жіп біз компьютерді сканерлейміз, екіншісі жаңартылады антивирустық мәліметтер базасы(жалпы ұғымды түсіну үшін біз оны көп жеңілдеттік).

Екі түрлі жағдайда не болатынын қарастырыңыз:

а) Бір ядролы процессор.Екі ағын бір уақытта жұмыс істейтіндіктен, біз пайдаланушы үшін (визуалды) орындаудың дәл осы бір мезгілделігін жасауымыз керек. Операциялық жүйе күрделі:осы екі ағынның орындалуы арасында ауысу бар (бұл қосқыштар лездік және уақыт миллисекундпен көрсетіледі). Яғни, жүйе жаңартуды аздап «орындады», содан кейін кенет сканерлеуге, содан кейін жаңартуға қайта ауысты. Осылайша, сіз бен біз үшін бұл екі тапсырма қатар атқарылып жатқан сияқты. Бірақ не жоғалып жатыр? Әрине, өнімділік. Сонымен, екінші нұсқаны қарастырайық.

б) Процессор көп ядролы.Бұл жағдайда бұл қосқыш орын алмайды. Жүйе әрбір жіпті бөлек өзекке нақты жібереді, нәтижесінде өнімділікке зиян келтіретін жіптен жіпке ауысудан құтылуға мүмкіндік береді (жағдайды идеализациялайық). Екі ағын бір уақытта жұмыс істейді, бұл көп ядролы және көп ағынды принципі. Сайып келгенде, біз сканерлеуді және жаңартуларды бір ядролы процессорға қарағанда көп ядролы процессорда әлдеқайда жылдам орындаймыз. Бірақ бір нәрсе бар - барлық бағдарламалар көп ядролы бағдарламаларды қолдамайды. Әрбір бағдарламаны осылай оңтайландыру мүмкін емес. Және бәрі біз сипаттағандай мінсіз болмайды. Бірақ күн сайын әзірлеушілер коды көп ядролы процессорларда орындау үшін тамаша оңтайландырылған бағдарламаларды жасайды.

Көп ядролы процессорлар қажет пе? Күнделікті парасаттылық

Сағат процессорды таңдаукомпьютер үшін (яғни, ядролардың саны туралы ойлаған кезде) ол орындайтын тапсырмалардың негізгі түрлерін анықтау керек.

Компьютерлік жабдық саласындағы білімді жетілдіру үшін сіз туралы материалды оқуға болады процессор розеткалары .

Бастапқы нүктені екі ядролы процессорлар деп атауға болады, өйткені бір ядролы шешімдерге оралудың мағынасы жоқ. Бірақ екі ядролы процессорлар әртүрлі. Бұл «ең» жаңа Celeron болмауы мүмкін немесе AMD - Sempron немесе Phenom II сияқты Ivy Bridge-дегі Core i3 болуы мүмкін. Әрине, басқа көрсеткіштерге байланысты олардың өнімділігі өте әртүрлі болады, сондықтан сіз бәрін жан-жақты қарап, көп ядроны басқалармен салыстыруыңыз керек. процессордың сипаттамалары.

Мысалы, Ivy Bridge-тегі Core i3 бір уақытта 4 ағынды өңдеуге мүмкіндік беретін Hyper-Treading технологиясына ие (операциялық жүйе 2 физикалық емес, 4 логикалық ядроны көреді). Сол Селерон мұндаймен мақтанбайды.

Бірақ қажетті тапсырмалар туралы ойларға тікелей оралайық. Егер компьютер қажет болса кеңсе жұмысыжәне Интернетті шарлау, содан кейін оған екі ядролы процессор жеткілікті.

Ойын өнімділігіне келетін болсақ, көптеген ойындарда ыңғайлы болу үшін сізге 4 немесе одан да көп ядро ​​қажет. Бірақ бұл жерде ең қызықты нәрсе пайда болады: барлық ойындарда 4 ядролы процессорлар үшін оңтайландырылған код жоқ, және олар оңтайландырылған болса, ол біз қалағандай тиімді емес. Бірақ, негізінен, қазір ойындар үшін оңтайлы шешім дәл 4-ші ядролық процессор болып табылады.


Бүгінгі күні бірдей 8 ядролы AMD процессорлары, ойындар үшін артық болып табылады, бұл артық болып табылатын ядролардың саны, бірақ өнімділігі тең емес, бірақ олардың басқа артықшылықтары бар. Дәл осы 8 ядро ​​жоғары сапалы көп ағынды жүктемемен қуатты жұмыс қажет болатын тапсырмаларда көп көмектеседі. Бұған, мысалы, бейнені көрсету (есептеу) немесе серверлік есептеулер кіреді. Сондықтан мұндай тапсырмалар үшін 6, 8 немесе одан да көп ядролар қажет. Жақында ойындар жоғары сапада 8 немесе одан да көп ядроларды жүктей алады, сондықтан болашақта бәрі өте қызғылт болады.

Бір ағынды жүктемені жасайтын көптеген тапсырмалар бар екенін ұмытпаңыз. Сіз өзіңізге сұрақ қоюыңыз керек: маған бұл 8 ядро ​​керек пе, жоқ па?

Кішкене қорытындылай келе, көп ядроның артықшылықтары «ауыр» есептеу көп ағынды жұмыс кезінде көрінетінін тағы бір рет атап өткім келеді. Ал егер сіз аса талаптары бар ойындарды ойнамасаңыз және жақсы есептеу қуатын қажет ететін белгілі бір жұмыс түрлерін жасамасаңыз, онда қымбат көп ядролы процессорларға ақша жұмсаудың мағынасы жоқ (

  • оқу құралы

Бұл мақалада мен бірнеше бағдарламаларды параллель орындауға қабілетті жүйелерді сипаттау үшін қолданылатын терминологияны сипаттауға тырысамын, яғни көп ядролы, көп процессорлы, көп ағынды. Түрлі түрлер IA-32 процессорындағы параллелизм әртүрлі уақытта және біршама сәйкес келмейтін тәртіпте пайда болды. Мұның бәрінде шатастыру оңай, әсіресе операциялық жүйелер күрделі емес қолданбалы бағдарламалардан мәліметтерді жасыруға мұқият болатынын ескерсек.

Мақаланың мақсаты - оларда жұмыс істейтін бағдарламалар үшін көп процессорлы, көп ядролы және көп ағынды жүйелердің мүмкін болатын конфигурацияларының барлық алуан түрлілігімен абстракциялау (айырмашылықтарды елемеу) үшін де, ерекшеліктерді ескеру үшін де мүмкіндіктер жасалатынын көрсету ( конфигурацияны бағдарламалы түрде үйрену мүмкіндігі).

Мақалада ®, ™ белгілері туралы ескерту

Mine компания қызметкерлері неліктен қоғамдық коммуникацияларда авторлық құқық белгілерін пайдалану керектігін түсіндіреді. Бұл мақалада оларды жиі қолдануға тура келді.

Орталық Есептеуіш Бөлім

Әрине, ең көне, ең жиі қолданылатын және түсініксіз термин - «процессор».

AT қазіргі әлемпроцессор - бұл біз әдемі бөлшек қорапта немесе өте әдемі емес OEM пакетінде сатып алатын (бума). Аналық платадағы розеткаға енгізілген бөлінбейтін нысан. Тіпті қосқыш болмаса және оны алып тастау мүмкін болмаса, яғни ол тығыз дәнекерленген болса, бұл бір чип.

Мобильді жүйелер (телефондар, планшеттер, ноутбуктер) және көптеген жұмыс үстелдерінде бір процессор бар. Жұмыс станциялары мен серверлер кейде бір аналық платада екі немесе одан да көп процессорлармен мақтана алады.

Бір жүйедегі бірнеше процессорларды қолдау көптеген дизайн өзгерістерін талап етеді. Кем дегенде, олардың физикалық қосылымын қамтамасыз ету (аналық платада бірнеше розеткаларды қамтамасыз ету), процессорды сәйкестендіру мәселелерін шешу (осы мақаланы кейінірек қараңыз, сонымен қатар менің ескертуім), жадқа кіруді үйлестіру және үзілістерді жеткізу ( үзу контроллері үзілістерді бірнеше процессорларға бағыттай алуы керек) және, әрине, операциялық жүйенің қолдауы. Өкінішке орай, Intel процессорларында бірінші мультипроцессорлық жүйенің жасалған сәті туралы құжатталған жазбаны таба алмадым, дегенмен Wikipedia Sequent Computer Systems оларды 1987 жылы Intel 80386 процессорлары арқылы қамтамасыз еткен деп мәлімдейді.Бір жүйедегі бірнеше микросхемаларға кең таралған қолдау осы күннен бастап қолжетімді болады. Intel® Pentium көмегімен.

Егер бірнеше процессор болса, онда олардың әрқайсысының тақтада өз қосқышы болады. Сонымен бірге олардың әрқайсысында регистрлер, орындаушы құрылғылар, кэштер сияқты барлық ресурстардың толық тәуелсіз көшірмелері бар. Олар ортақ жадты бөліседі - жедел жады. Жадты олармен әртүрлі және тривиальды емес тәсілдермен байланыстыруға болады, бірақ бұл мақаланың шеңберінен тыс бөлек әңгіме. Ең бастысы, кез келген жағдайда орындалатын бағдарламалар жүйедегі барлық процессорлардан қол жетімді біртекті ортақ жад елесін жасауы керек.


Ұшуға дайын! Intel® жұмыс үстелі тақтасы D5400XS

Ядро

Тарихи түрде Intel IA-32 көп ядросы Intel® HyperThreading-тен кейінірек пайда болды, бірақ ол логикалық иерархияда келесі орында келеді.

Жүйеде көп процессорлар болса, оның өнімділігі жоғарырақ (барлық ресурстарды пайдалана алатын тапсырмаларда) көрінетін сияқты. Алайда, егер олардың арасындағы байланыс құны тым жоғары болса, онда параллелизмнен түсетін барлық пайда жалпы деректерді берудегі ұзақ кідірістермен жойылады. Бұл дәл мультипроцессорлық жүйелерде байқалады - физикалық және логикалық тұрғыдан олар бір-бірінен өте алыс. Мұндай жағдайларда тиімді байланысу үшін Intel® QuickPath Interconnect сияқты мамандандырылған автобустарды ойлап табу керек. Энергияны тұтыну, түпкілікті шешімнің мөлшері мен бағасы, әрине, мұның бәрінен төмендемейді. Құрамдас бөліктердің жоғары интеграциясы көмекке келуі керек - бөлшектерді орындайтын тізбектер параллельді бағдарлама, оларды бір-біріне жақындату керек, жақсырақ бір кристалдан. Басқаша айтқанда, бір процессор бірнеше рет ұйымдастыруы керек ядролар, барлығында бір-біріне ұқсас, бірақ өз бетінше жұмыс істейді.

Intel компаниясының алғашқы IA-32 көп ядролы процессорлары 2005 жылы шығарылды. Содан бері сервердегі, жұмыс үстеліндегі және қазір ядролардың орташа саны мобильді платформалартұрақты өсуде.

Бір жүйедегі тек жадты ортақ пайдаланатын бір ядролы екі процессордан айырмашылығы, екі ядро ​​да кэштерді және жадпен әрекеттесу үшін жауапты басқа ресурстарды ортақ пайдалана алады. Көбінесе бірінші деңгейдің кэштері жеке болып қалады (әр ядроның өзіндік бар), ал екінші және үшінші деңгейлер ортақ немесе бөлек болуы мүмкін. Жүйенің бұл ұйымдастырылуы көрші ядролар арасындағы деректерді жеткізудің кешігуін азайтады, әсіресе олар ортақ тапсырмада жұмыс істеп жатқан болса.


Төрт ядролы микросурет Intel процессорыкодтық аты Нехалем. Бөлек ядролар, ортақ L3 кэш, сондай-ақ басқа процессорларға және ортақ жад контроллеріне QPI сілтемелері бөлектелген.

гиперағын

Шамамен 2002 жылға дейін екі немесе одан да көп бағдарламаларды қатар орындай алатын IA-32 жүйесін алудың жалғыз жолы арнайы мультипроцессорлық жүйелерді пайдалану болды. Intel® Pentium® 4, сондай-ақ Foster (Netburst) кодтық атымен Xeon желісі енгізілді. жаңа технология- гиперағындар немесе гиперағындар, - Intel® HyperThreading (бұдан әрі HT).

Күн астында жаңа ештеңе жоқ. HT - әдебиетте бір мезгілде көп ағынды (SMT) деп аталатын ерекше жағдай. Толық және тәуелсіз көшірмелер болып табылатын «нақты» ядролардан айырмашылығы, HT жағдайында ішкі түйіндердің бір бөлігі ғана бір процессорда қайталанады, ең алдымен архитектуралық күйді - регистрлерді сақтауға жауапты. Деректерді ұйымдастыруға және өңдеуге жауапты атқарушы түйіндер сингулярлы күйде қалады және кез келген уақытта ағындардың көбінде біреуі пайдаланылады. Ядролар сияқты, гиперағындар кэштерді өзара бөліседі, бірақ қандай деңгейден бастап нақты жүйеге байланысты.

Мен жалпы SMT дизайндарының және атап айтқанда HT дизайндарының барлық артықшылықтары мен кемшіліктерін түсіндіруге тырыспаймын. Қызығушылық танытқан оқырман технология туралы егжей-тегжейлі талқылауды көптеген дереккөздерден және, әрине, Уикипедиядан таба алады. Дегенмен, мынаны ескертемін маңызды нүкте, нақты өндірістегі гипертрейдтер санының ағымдағы шектеулерін түсіндіреді.

Жіп шектеулері
ХТ түріндегі «адалсыз» көп ядроның болуы қандай жағдайларда негізделген? Егер бір қолданбалы ағын ядро ​​ішіндегі барлық орындаушы түйіндерді жүктей алмаса, онда оларды басқа ағынға «қарыз алуға» болады. Бұл есептеулерде емес, деректерге қол жеткізуде, яғни кэшті жіберіп алуды жиі генерациялайтын және деректердің жадтан жеткізілуін күтуге тура келетін қолданбаларға тән. Осы уақыт ішінде HT жоқ ядро ​​бос тұруға мәжбүр болады. HT болуы бос орындаушы түйіндерді басқа архитектуралық күйге жылдам ауыстыруға (өйткені ол жай ғана көшіріледі) және оның нұсқауларын орындауға мүмкіндік береді. Бұл кідіріс жасыру деп аталатын трюктің ерекше жағдайы, оның барысында пайдалы ресурстар бос тұрған бір ұзақ операция басқа тапсырмаларды қатар орындау арқылы жасырылады. Қолданба ядро ​​ресурстарын пайдаланудың жоғары дәрежесіне ие болса, гипертрейдингтің болуы жеделдетуге мүмкіндік бермейді - мұнда «адал» ядролар қажет.

Жалпы мақсаттағы машина архитектурасына арналған жұмыс үстелі және серверлік қолданбаларға арналған типтік сценарийлер HT арқылы іске асырылған параллельдік әлеуетке ие. Дегенмен, бұл әлеует тез «пайдаланады». Мүмкін осы себепті, барлық дерлік IA-32 процессорларында аппараттық гиперағындардың саны екіден аспайды. Әдеттегі сценарийлерде үш немесе одан да көп гипер ағынды пайдаланудан түсетін пайда аз болар еді, бірақ қалып өлшеміндегі, қуат тұтынудағы және шығындардағы жоғалту маңызды.

Бейне үдеткіштерде орындалатын типтік тапсырмаларда тағы бір жағдай байқалады. Сондықтан бұл архитектуралар ағындардың көп санымен SMT технологиясын қолданумен сипатталады. Intel® Xeon Phi сопроцессорлары (2010 жылы енгізілген) идеялық және генеалогиялық тұрғыдан бейне карталарға өте жақын болғандықтан, оларда төртӘрбір ядродағы гипертрейдинг - IA-32-ге ғана тән конфигурация.

логикалық процессор

Сипатталған параллелизмнің үш «деңгейінің» (процессорлар, ядролар, гипертрейдерлер) кейбіреулері немесе тіпті барлығы белгілі бір жүйеде жоқ болуы мүмкін. Бұл әсер етеді BIOS параметрлері(көп ядролы және көп ағынды тәуелсіз ажыратылады), микроархитектуралық ойлар (мысалы, HT Intel® Core™ Duo жүйесінде болмаған, бірақ Nehalem шығарылымымен қайтарылды) және жүйелік оқиғалар (көп процессорлы серверлер мүмкін ақаулар болған жағдайда істен шыққан процессорларды өшіріп, ұшуды жалғастыру) қалғандарында). Бұл параллельдік көпқабатты хайуанаттар бағы амалдық жүйеге және, сайып келгенде, қолданбаларға қалай көрінеді?

Одан әрі, ыңғайлы болу үшін кейбір жүйедегі процессорлардың, ядролардың және ағындардың санын үш есе деп белгілейміз ( x, ж, z), қайда xпроцессорлар саны болып табылады жәрбір процессордағы ядролардың саны және zәрбір ядродағы гиперағындардың саны. Бұдан әрі мен осы үштікке сілтеме жасаймын топология- математика бөліміне қатысы шамалы қалыптасқан термин. Жұмыс б = xyzаталған нысандардың санын анықтайды логикалық процессорларжүйелер. Ол параллель орындалатын ортақ жады жүйесінде операциялық жүйе қарастыруы тиіс тәуелсіз қолданба процесі мәтінмәндерінің жалпы санын анықтайды. Мен «мәжбүрлі» деп айтамын, себебі ол әртүрлі логикалық процессорлардағы екі процестің орындалу ретін басқара алмайды. Бұл гипертрансляцияларға да қатысты: олар бір ядрода «дәйектілікпен» орындалатын болса да, нақты тәртіп аппараттық құралмен белгіленеді және көрінбейді немесе бағдарламалармен басқарылмайды.

Көбінесе операциялық жүйе соңғы қолданбалардан өзі жұмыс істейтін жүйенің физикалық топологиясының мүмкіндіктерін жасырады. Мысалы, келесі үш топология: (2, 1, 1), (1, 2, 1) және (1, 1, 2) - ОЖ екі логикалық процессор ретінде көрсетіледі, бірақ олардың біріншісінде екі процессор бар. , екіншісінде екі ядро ​​бар, ал үшіншісі тек екі ағын.


Windows тапсырмалар менеджері 8 логикалық процессорды көрсетеді; бірақ бұл процессорларда, ядроларда және гипер ағындарда қанша тұрады?


Linux жоғарғы жағында 4 логикалық процессор көрсетілген.

Бұл қолданбалы қолданбаларды жасаушылар үшін өте ыңғайлы - олар үшін жиі елеусіз аппараттық мүмкіндіктермен айналысудың қажеті жоқ.

Топологияның бағдарламалық анықтамасы

Әрине, топологияны логикалық процессорлардың жалғыз санына абстракциялау кейбір жағдайларда шатасу мен түсінбеушілік үшін жеткілікті негіз жасайды (қызған Интернет дауларында). Аппараттық құралдардан ең көп өнімділікті алғысы келетін есептеуіш қолданбалары олардың ағындарының қай жерде орналасатынын нақты бақылауды қажет етеді: көрші гиперағындарда бір-біріне жақынырақ немесе керісінше, әртүрлі процессорларда одан әрі алыс. Бір ядродағы немесе процессордағы логикалық процессорлар арасындағы байланыс жылдамдығы процессорлар арасындағы мәліметтерді тасымалдау жылдамдығынан әлдеқайда жылдам. ЖЖҚ ұйымдастырудағы гетерогенділік мүмкіндігі де суретті қиындатады.

Жалпы жүйе топологиясы, сондай-ақ IA-32-дегі әрбір логикалық процессордың орны туралы ақпарат CPUID нұсқауы арқылы қол жетімді. Алғашқы мультипроцессорлы жүйелер пайда болғаннан бері логикалық процессорды анықтау схемасы бірнеше рет кеңейтілді. Бүгінгі күні оның бөліктері CPUID 1, 4 және 11 парақтарында қамтылған. Парақтардың қайсысын қарау керектігін мақаладан алынған келесі блок-схемадан анықтауға болады:

Мен мұнда осы алгоритмнің жеке бөліктерінің барлық мәліметтерімен жалықпаймын. Егер қызығушылық болса, онда осы мақаланың келесі бөлімін осыған арнауға болады. Мен бұл мәселе мүмкіндігінше егжей-тегжейлі талданған қызығушылық танытқан оқырманға сілтеме жасаймын. Мұнда мен алдымен APIC деген не екенін және оның топологияға қалай қатысы барын қысқаша сипаттаймын. Содан кейін қосулы 0xB (ондық он бір) парағымен жұмыс істеуді қарастырыңыз осы сәт«апико-құрылыстағы» соңғы сөз.

APIC идентификаторы
Жергілікті APIC (кеңейтілген бағдарламаланатын үзіліс контроллері) - бұл нақты логикалық процессорға келетін үзулермен жұмыс істеуге жауапты құрылғы (қазір процессордың бөлігі). Әрбір логикалық процессордың өзінің APIC бар. Және олардың әрқайсысы жүйеде болуы керек бірегей құндылық APICID. Бұл нөмірді хабарламаларды жеткізу кезінде адрестеу үшін үзу контроллері және логикалық процессорларды анықтау үшін барлық басқа адамдар (мысалы, операциялық жүйе) пайдаланады. Бұл үзу контроллерінің спецификациясы Intel 8259 PIC-тен Dual PIC, APIC және xAPIC арқылы x2APIC-ке дейін дамыды.

Қазіргі уақытта APIC идентификаторында сақталған санның ені толық 32 битке жетті, дегенмен бұрын ол 16, тіпті бұрын 8 битпен шектелген. Бүгінгі күні ескі күндердің қалдықтары бүкіл CPUID бойынша шашыраңқы, бірақ APIC идентификаторының барлық 32 биттері CPUID.0xB.EDX ішінде қайтарылады. CPUID нұсқаулығын дербес орындайтын әрбір логикалық процессор басқа мәнді қайтарады.

Отбасылық байланыстарды нақтылау
APIC ID мәні топология туралы ештеңе айтпайды. Қандай екі логикалық процессор бір физикалық процессордың ішінде (яғни, олар гиперағындардың «ағалары»), қайсысы бір процессордың ішінде және қайсысы мүлдем басқа процессорлар екенін білу үшін олардың APIC идентификатор мәндерін салыстыру қажет. Қарым-қатынас дәрежесіне қарай олардың кейбір биттері сәйкес келеді. Бұл ақпарат ECX ішінде операндпен кодталған CPUID.0xB ішкі тізімдерінде қамтылған. Олардың әрқайсысы EAX топология деңгейлерінің бірінің разрядтық өрісінің орнын сипаттайды (дәлірек айтқанда, топологияның төменгі деңгейлерін жою үшін APIC идентификаторында оңға жылжыту қажет биттердің саны), сондай-ақ ECX-де осы деңгейдің түрі ретінде - гипертрейд, ядро ​​немесе процессор.

Бір ядродағы логикалық процессорлар SMT өрісіндегілерден басқа барлық APIC ID биттеріне сәйкес келеді. Бір процессорда орналасқан логикалық процессорлар үшін Core және SMT өрістерінен басқа барлық биттер. CPUID.0xB үшін ішкі парақтардың саны өсуі мүмкін болғандықтан, бұл схемаегер болашақта қажеттілік туындаса, деңгейлері көбірек топологиялардың сипаттамасын қолдауға мүмкіндік береді. Оның үстіне бұрыннан барлар арасында аралық деңгейлерді енгізуге болады.

Бұл схеманы ұйымдастырудың маңызды салдары жүйенің барлық логикалық процессорларының барлық APIC идентификаторларының жиынтығында «саңылаулар» болуы мүмкін, яғни. олар кезекпен жүрмейді. Мысалы, HT өшірілген көп ядролы процессорда барлық APIC идентификаторлары жұп болып шығуы мүмкін, өйткені гиперағын нөмірін кодтауға жауапты ең аз маңызды бит әрқашан нөлге тең болады.

CPUID.0xB операциялық жүйеге қолжетімді логикалық процессорлар туралы ақпараттың жалғыз көзі емес екенін ескеріңіз. Оған қолжетімді барлық процессорлардың тізімі олардың APIC идентификаторының мәндерімен бірге MADT ACPI кестесінде кодталған.

Операциялық жүйелер және топология

Операциялық жүйелер логикалық процессор топологиясы туралы ақпаратты қолданбаларға өздерінің интерфейстері арқылы береді.

Linux жүйесінде топология туралы ақпарат /proc/cpuinfo псевдофайлында, сондай-ақ dmidecode пәрменінің шығысында қамтылған. Төмендегі мысалда мен топологияға қатысты жазбаларды ғана қалдырып, HT жоқ төрт ядролы жүйеде cpuinfo мазмұнын сүзіп жатырмын:

Жасырын мәтін

[электрондық пошта қорғалған]:~$ cat /proc/cpuinfo |grep "процессор\|физикалық\ идентификатор\|бауырлар\|ядро\|ядролар\|apicid" процессоры: 0 физикалық идентификатор: 0 бауырластар: 4 ядро ​​идентификаторы: 0 процессор өзегі: 2 апицид: 0 бастапқы апицид: 0 процессор: 1 физикалық идентификатор: 0 ағайынды: 4 ядро ​​идентификаторы: 0 процессор өзегі: 2 апицид: 1 бастапқы апицид: 1 процессор: 2 физикалық идентификатор: 0 ағайынды: 4 ядро ​​идентификаторы: 1 процессор өзегі: 2 апицид: 2 бастапқы апицид: 2 процессор: 3 физикалық идентификатор: 0 ағайынды: 4 ядро ​​идентификаторы: 1 процессор ядросы: 2 апицид: 3 бастапқы апицид: 3

FreeBSD жүйесінде топология XML ретінде kern.sched.topology_spec айнымалысындағы sysctl механизмі арқылы хабарланады:

Жасырын мәтін

[электрондық пошта қорғалған]:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 THREAD тобыSMT тобы 2, 3 THREAD тобыSMT тобы 4, 5 THREAD тобыSMT тобы 6, 7 THREAD тобыSMT тобы

MS Windows 8 жүйесінде топология туралы ақпаратты Тапсырмалар реттеушісінен көруге болады.

Кіріспе. Компьютерлік технология қарқынды дамып келеді. Есептеу құрылғылары қуаттырақ, кішірейген, ыңғайлырақ болып келеді, бірақ соңғы уақытта құрылғылардың өнімділігін арттыру үлкен мәселеге айналды. 1965 жылы Гордон Мур (Intel негізін салушылардың бірі) «интегралдық микросхемадағы чипке орналастырылған транзисторлар саны әр 24 ай сайын екі есе өседі» деген қорытындыға келді.

Көппроцессорлық жүйелерді құру саласындағы алғашқы әзірлемелер 70-жылдары басталды. ұзақ уақытәдеттегі бір ядролы процессорлардың өнімділігі микросхемадағы транзисторлар санының бір мезгілде ұлғаюымен тактілік жиілікті ұлғайту арқылы (өнімділіктің 80% дейін тек тактілік жиілікпен анықталды) артты. Физиканың іргелі заңдары бұл процесті тоқтатты: чиптер қызып кете бастады, технологиялық кремний атомдарының өлшеміне жақындай бастады. Осы факторлардың барлығы мыналарға әкелді:

  • ағып кету токтары өсті, нәтижесінде жылуды бөлу және қуат тұтыну өсті.
  • Процессор жадқа қарағанда әлдеқайда «жылдамырақ» болды. Жедел жадқа қол жеткізудегі және деректерді кэшке жүктеудегі кідіріс салдарынан өнімділік төмендеді.
  • «фон Нейманның тығырыққа тірелуі» сияқты нәрсе бар. Бұл программаны орындау кезінде процессор архитектурасының тиімсіздігін білдіреді.

Көппроцессорлық жүйелер (мәселені шешу жолдарының бірі ретінде) кеңінен қолданылмады, өйткені олар қымбат және күрделі көп процессорлы аналық платаларды жасауды қажет етті. Осының негізінде еңбек өнімділігі басқа жолдармен өсті. Көп ағынды концепция тиімді болып шықты – командалардың бірнеше ағынын бір уақытта өңдеу.

Процессорға бір ядрода бірнеше бағдарлама ағындарын іске қосуға мүмкіндік беретін Hyper-Threading технологиясы (HTT) немесе суперағын технологиясы. Бұл HTT, көптеген сарапшылардың пікірінше, құрудың алғышарты болды көп ядролы процессорлар. Процессордың бірнеше бағдарлама ағындарын бір уақытта орындауы ағындық деңгейлік параллелизм (TLP – жіп деңгейіндегі параллелизм) деп аталады.

Көп ядролы процессордың әлеуетін ашу үшін орындалатын бағдарламабарлық есептеуіш ядроларды қамтуы керек, бұл әрқашан қол жеткізе бермейді. Тек бір ядроны пайдалана алатын ескі сериялық бағдарламалар бұдан былай процессорлардың жаңа буынында жылдам жұмыс істемейді, сондықтан бағдарламашылар жаңа микропроцессорларды әзірлеуге көбірек қатысады.

1. Жалпы түсініктер

Кең мағынада архитектура – ​​бұл көптеген элементтерден тұратын күрделі жүйенің сипаттамасы.

Даму процесінде жартылай өткізгішті құрылымдар (микросұлбалар) дамиды, сондықтан процессорларды құру принциптері, олардың құрамына кіретін элементтердің саны, олардың өзара әрекеттесуі қалай ұйымдастырылады, үнемі өзгеріп отырады. Осылайша, құрылымының негізгі принциптері бірдей орталық процессорлар әдетте бір архитектураның процессорлары деп аталады. Және бұл принциптердің өзі процессор архитектурасы (немесе микроархитектура) деп аталады.

Микропроцессор (немесе процессор) компьютердің негізгі құрамдас бөлігі болып табылады. Ол ақпаратты өңдейді, бағдарламаларды орындайды және жүйедегі басқа құрылғыларды басқарады. Процессордың қуаты бағдарламалардың қаншалықты жылдам жұмыс істейтінін анықтайды.

Ядро кез келген микропроцессордың негізі болып табылады. Ол кремний чипінде орналасқан миллиондаған транзисторлардан тұрады. Микропроцессор арнайы ұяшықтарға бөлінеді, олар жалпы мақсаттағы регистрлер (РОН) деп аталады. Жалпы процессордың жұмысы жадтан белгілі бір реттілікпен командалар мен мәліметтерді шығарып алу және оларды орындаудан тұрады. Сонымен қатар, ДК жылдамдығын арттыру үшін микропроцессор ішкі кэш жадымен жабдықталған. кэш жады болып табылады ішкі жадыпроцессор, буфер ретінде пайдаланылады (ЖЖҚ-мен байланыстағы үзілістерден қорғау үшін).

IBM-үйлесімді дербес компьютерлерде қолданылатын Intel процессорлары мыңнан астам нұсқауларға ие және кеңейтілген командалар жинағы бар процессорларға жатады - CISC-процессорлар (CISC - Complex Instruction Set Computing).

1.1 Жоғары өнімділікті есептеу. Параллелизм

Есептеу техникасының даму қарқыны оңай: секундына бірнеше мың операцияны орындайтын ENIAC-тан (бірінші жалпы мақсаттағы электрондық цифрлық компьютер) Тяньхэ-2 суперкомпьютеріне дейін (секундына 1000 триллион өзгермелі нүкте операциясы). Бұл 60 жылда есептеу жылдамдығы триллион есе өскенін білдіреді. Жоғары өнімді есептеу жүйелерін құру ең күрделі ғылыми-техникалық міндеттердің бірі болып табылады. Есептеу жылдамдығы кезінде техникалық құралдарбірнеше миллион есе ғана өсті, есептеудің жалпы жылдамдығы триллион есе өсті. Бұл әсерге есептеудің барлық кезеңдерінде параллелизмді қолдану арқылы қол жеткізіледі. Параллельді есептеулер жадты ұтымды бөлуді іздеуді талап етеді, сенімді жолдарақпаратты беру және есептеу процестерін үйлестіру.

1.2 Симметриялық көп өңдеу

Symmetric Multiprocessing (қысқартылған SMP) немесе симметриялық мультипроцессинг - бірнеше процессорлардың ортақ жадыға рұқсаты бар көппроцессорлық жүйелердің арнайы архитектурасы. Бұл соңғы уақытта кеңінен қолданылған өте кең таралған архитектура.

SMP пайдалану кезінде компьютерде бір уақытта бірнеше процессорлар жұмыс істейді, олардың әрқайсысы өз тапсырмасы бойынша. Жоғары сапалы операциялық жүйесі бар SMP жүйесі процессорлар арасында тапсырмаларды ұтымды бөледі, олардың әрқайсысына біркелкі жүктемені қамтамасыз етеді. Дегенмен, жадты өзгерту мәселесі бар, өйткені тіпті бірпроцессорлық жүйелер бұл үшін салыстырмалы түрде ұзақ уақытты қажет етеді. Осылайша, SMP-де ЖЖҚ-ға қол жеткізу дәйекті түрде жүреді: алдымен бір процессор, содан кейін екіншісі.

Жоғарыда аталған мүмкіндіктерге байланысты SMP жүйелері тек ғылыми салада, өндірісте, бизнесте, өте сирек жұмыс кеңселерінде қолданылады. Аппараттық құралдарды енгізудің жоғары құнынан басқа, мұндай жүйелер тапсырмалардың көп ағынды орындалуын қамтамасыз ететін өте қымбат және жоғары сапалы бағдарламалық қамтамасыз етуді қажет етеді. Тұрақты бағдарламалар (ойындар, мәтіндік редакторлар) SMP жүйелерінде тиімді жұмыс істемейді, себебі олар параллелизмнің мұндай дәрежесін қамтамасыз етпейді. Егер сіз кез келген бағдарламаны SMP жүйесіне бейімдесеңіз, бір процессорлы жүйелерде жұмыс істеу өте тиімсіз болады, бұл әртүрлі жүйелер үшін бір бағдарламаның бірнеше нұсқасын жасау қажеттілігіне әкеледі. Ерекшелік, мысалы, мультипроцессорлық жүйелерді қолдайтын ABLETON LIVE бағдарламасы (музыка жасауға және Dj-жиындарын дайындауға арналған). Жүгірсе тұрақты бағдарламакөппроцессорлық жүйеде ол бір процессорға қарағанда сәл жылдамырақ жұмыс істейді. Бұл басқа бос процессорда орындалатын аппараттық үзіліс (ядромен өңдеуге арналған бағдарламаны тоқтату) деп аталады.

SMP жүйесі (параллельді есептеулерге негізделген кез келген басқа жүйе сияқты) жад шинасы өткізу қабілеттілігі сияқты жад параметріне жоғары талаптар қояды. Бұл көбінесе жүйедегі процессорлардың санын шектейді (қазіргі SMP жүйелері 16 процессорға дейін тиімді жұмыс істейді).

Процессорларда ортақ жад болғандықтан, оны ұтымды пайдалану және деректерді үйлестіру қажет болады. Көппроцессорлық жүйеде ортақ жад ресурсы үшін бірнеше кэш жұмыс істейтіні белгілі болды. Кэш когеренттілігі – ортақ ресурс үшін жеке кэштерде сақталған деректердің тұтастығын қамтамасыз ететін кэш қасиеті. Бұл тұжырымдама- жад когеренттігі концепциясының ерекше жағдайы, мұнда бірнеше ядролардың ортақ жадыға қол жеткізуі (ол қазіргі көп ядролы жүйелерде барлық жерде кездеседі). Егер бұл ұғымдарды жалпы түрде сипаттайтын болсақ, онда сурет келесідей болады: деректердің бір блогын әртүрлі кэштерге жүктеуге болады, онда деректер әртүрлі өңделеді.

Кез келген деректерді өзгерту хабарландырулары пайдаланылмаса, қате орын алады. Кэш когеренттігі осындай қайшылықтарды шешуге және кэштердегі деректердің сәйкестігін сақтауға арналған.

SMP жүйелері Флинн (Стэнфорд университетінің профессоры, Palyn Associates негізін қалаушы) бойынша есептеу жүйелерінің MIMD (көп нұсқаулықты көп деректерді есептеу жүйесі) классификациясының ішкі жиынтығы болып табылады. Осы классификацияға сәйкес параллельді жүйелердің барлық дерлік түрлерін MIMD-ге жатқызуға болады.

Көппроцессорлық жүйелерді түрлерге бөлу жадты пайдалану принципі бойынша бөлу негізінде жүреді. Бұл тәсіл келесі маңызды түрлерді ажыратуға мүмкіндік берді

көппроцессорлық жүйелер – мультипроцессорлар (ортақ жадысы бар көппроцессорлық жүйелер) және мультикомпьютерлер (жеке жады бар жүйелер). Параллельді есептеулерде пайдаланылатын ортақ деректер синхрондауды қажет етеді. Мәліметтерді синхрондау міндеті ең маңызды мәселелердің бірі болып табылады және оны көппроцессорлы және көп ядролы және сәйкесінше қажетті бағдарламалық қамтамасыз етуді әзірлеуде шешу инженерлер мен бағдарламашылар үшін басымдық болып табылады. Деректерді физикалық жадты бөлу арқылы ортақ пайдалануға болады. Бұл тәсіл біркелкі емес жадқа қол жеткізу (NUMA) деп аталады.

Бұл жүйелерге мыналар жатады:

  • Деректерді көрсету үшін тек жеке процессор кэші пайдаланылатын жүйелер (тек кэшті жады архитектурасы).
  • Әртүрлі процессорлар үшін жергілікті кэш когеренттігі бар жүйелер (кэш-когерентті NUMA).
  • Қамтамасыз етілген жүйелер жалпыға қолжетімділікаппараттық деңгейде кэшсіз когерентті NUMA іске асырусыз процессорлардың жеке жадына.

Көппроцессорлық жүйелерді құру мәселесін жеңілдету үлестірілген ортақ жадты пайдалану арқылы жүзеге асырылады, бірақ бұл әдіс параллельді бағдарламалаудың күрделілігін айтарлықтай арттыруға әкеледі.

1.3 Бір мезгілде көп ағынды беру

Симметриялық көп өңдеудің жоғарыда аталған барлық кемшіліктеріне сүйене отырып, өнімділікті жақсартудың басқа жолдарын әзірлеу және дамыту мағынасы бар. Егер сіз процессордағы әрбір жеке транзистордың жұмысын талдасаңыз, сіз өте назар аудара аласыз қызықты факт- есептеу операцияларының көпшілігін орындау кезінде процессордың барлық құрамдас бөліктері қатыспайды (соңғы зерттеулерге сәйкес - барлық транзисторлардың шамамен 30%). Осылайша, егер процессор орындаса, айталық, қарапайым арифметикалық операция, содан кейін процессордың көп бөлігі жұмыссыз, сондықтан оны басқа есептеулер үшін пайдалануға болады. Сонымен, егер кірсе осы сәтпроцессор нақты операцияларды орындайды, содан кейін бос бөлікке бүтін арифметикалық операцияны жүктеуге болады. Процессорға жүктемені ұлғайту үшін операциялардың алыпсатарлық (немесе кеңейтілген) орындалуын жасауға болады, бұл процессордың аппараттық қисынының үлкен күрделілігін талап етеді. Егер бағдарлама бір-бірінен тәуелсіз орындалатын ағындарды (командалар тізбегі) алдын ала анықтаса, онда бұл тапсырманы айтарлықтай жеңілдетеді ( бұл әдісаппараттық құралда оңай жүзеге асырылады). Дин Тулсенге тиесілі бұл идея (1955 жылы Вашингтон университетінде әзірлеген) бір мезгілде көп ағынды деп аталады. Кейінірек оны Intel гипертрейдинг деген атпен әзірледі ( гипер жіп). Осылайша, көптеген ағындарды орындайтын бір процессор операциялық ретінде қабылданады Windows жүйесібірнеше процессорлар сияқты. Бұл технологияны пайдалану бағдарламалық жасақтаманың тиісті деңгейін қайтадан талап етеді. Көп ағынды технологияны қолданудың максималды әсері шамамен 30% құрайды.

1.4 Көп ядролы

Multithreading технологиясы - бағдарламалық жасақтама деңгейінде көп ядроны жүзеге асыру. Өнімділікті одан әрі арттыру, әдеттегідей, процессордың аппараттық құралдарын өзгертуді талап етеді. Жүйелер мен архитектуралардың күрделенуі әрқашан тиімді бола бермейді. Қарама-қарсы пікір бар: «Тапқырдың бәрі қарапайым!». Шынында да, процессордың өнімділігін арттыру үшін оның тактілік жиілігін арттыру, логикалық және аппараттық құрамдас бөліктерді қиындату мүлдем қажет емес, өйткені бар технологияны ұтымды және нақтылау жеткілікті. Бұл әдіс өте тиімді - процессордың жылу бөлуін арттыру мәселесін шешудің қажеті жоқ, микросұлбаларды өндіру үшін жаңа қымбат жабдықты әзірлеу. Бұл тәсіл көп ядролы технологияның бір бөлігі ретінде жүзеге асырылды - бір микросхемада бірнеше есептеуіш ядроларды жүзеге асыру. Түпнұсқа процессорды алып, өнімділікті бірнеше жақсартуларды енгізуден түскен өнімділікті салыстырсаңыз, көп ядролы технология ең жақсы нұсқа екені анық.

Егер симметриялық көппроцессор мен көп ядролының архитектурасын салыстыратын болсақ, олар дерлік бірдей болып шығады. Ядролардың кэш жады көп деңгейлі болуы мүмкін (жергілікті және ортақ, ал ЖЖҚ деректерін тікелей екінші деңгейлі кэш жадына жүктеуге болады). Процессорлардың көп ядролы архитектурасының қарастырылған артықшылықтарына сүйене отырып, өндірушілер оған назар аударады. Бұл технологияны іске асыру өте арзан және әмбебап болып шықты, бұл оны кең нарыққа шығаруға мүмкіндік берді. Сонымен қатар, бұл архитектура Мур заңына өзіндік түзетулер енгізді: «процессордағы есептеуіш ядролардың саны әр 18 ай сайын екі есе өседі».

Қазіргі нарыққа қарап компьютерлік технология, төрт және сегіз ядролы процессорлары бар құрылғылардың басым екенін көруге болады. Сонымен қатар, процессор өндірушілері жақын арада нарықта жүздеген өңдеу ядролары бар процессорлар пайда болатынын айтады. Бұрын бірнеше рет айтылғандай, көп ядролы архитектураның толық әлеуеті жоғары сапалы бағдарламалық қамтамасыз ету арқылы ғана ашылады. Осылайша, компьютерлік техника мен бағдарламалық қамтамасыз етуді өндіру саласы өте тығыз байланысты.

Үшін ақпараттық индустрияХХІ ғасырдың басы «тектоникалық» деп сипаттауға болатын жылжулармен тұспа-тұс келді. Жаңа дәуірдің белгілері қызмет көрсетуге бағытталған архитектураларды (қызметке бағытталған архитектура, SOA), кластерлік конфигурацияларды және көп ядролы процессорларды қоса алғанда, тағы басқаларды пайдалануды қамтиды. Бірақ, әрине, болып жатқан жағдайдың түбегейлі себебі жартылай өткізгіштер физикасының дамуы болып табылады, бұл Гордон Мур заңына бағынатын аудан бірлігіне логикалық элементтердің санының артуына әкелді. Чиптегі транзисторлардың саны қазірдің өзінде жүздеген миллионды құрайды және көп ұзамай миллиардтық белгіні еңсереді, нәтижесінде диалектиканың белгілі заңының әрекеті сандық және сапалық өзгерістердің байланысын постулату арқылы сөзсіз көрінеді. Өзгертілген жағдайларда жаңа категория алдыңғы орынға шығады - күрделілік, ал жүйелер микродеңгейде де (процессорлар) да, макродеңгейде де (корпоративтік ақпараттық жүйелер) күрделі болады.

Белгілі бір дәрежеде қазіргі заманда не болып жатыр компьютерлік әлеммиллиондаған жылдар бұрын көп жасушалы организмдер пайда болған эволюциялық ауысумен салыстыруға болады. Осы уақытқа дейін бір ұяшықтың күрделілігі белгілі бір шекке жетті, ал кейінгі эволюция инфрақұрылымдық күрделіліктің даму жолын ұстанды. Дәл солай болады компьютерлік жүйелер: бір процессор ядросының күрделілігі, сондай-ақ корпоративтік монолитті архитектура ақпараттық жүйелербелгілі максимумға жетті. Қазір макродеңгейде монолитті жүйелерден құрамдас жүйелерге (немесе қызметтерден тұратын) көшу жүріп жатыр, ал әзірлеушілердің назары инфрақұрылымдық аралық бағдарламалық құралға аударылады, ал микродеңгейде процессорлардың жаңа архитектуралары пайда болуда.

Жақында күрделілік идеясы тәуелсіз факторға айналып, өзінің жиі қолданылатын мағынасын жоғалта бастады. Осыған байланысты күрделілік әлі толық түсінілген жоқ және оған деген көзқарас толық анықталған жоқ, дегенмен, 50 жылға жуық уақыт бойы «күрделі жүйелер теориясы» деп аталатын жеке ғылыми пән болды. . (Естеріңізге сала кетейік, теорияда «күрделі» жеке құрамдас бөліктері сызықтық емес түрде біріктірілген жүйені білдіреді; мұндай жүйе мынада орын алатындай жай ғана құрамдастардың қосындысы емес. сызықтық жүйелер.) Жүйелер теориясын қызметі ақпараттық технологиялардың көмегімен осы күрделі жүйелерді құруға әкелетін мамандар мен компаниялар әлі қабылдамағанына таң қалуға болады.

Фон Нейман сәулетінің тар мойны

Микродеңгейде бір ядролы процессорлардан көп ядролы процессорларға (Chip MultiProcessors, CMP) өту біржасушалыдан көпжасушалыға өтуге ұқсас болуы мүмкін. CMP қазіргі заманғы процессорлардың тән әлсіздігін - фон Нейман архитектурасының «тарыл тұстарын» жеңу тәсілдерінің бірін ұсынады.

1977 жылы Тьюринг сыйлығын алу рәсімінде Джон Бэкустың айтқаны: «Фон Нейман компьютері дегеніміз не? Джон фон Нейман және басқалары 30 жыл бұрын өздерінің түпнұсқа архитектурасын ұсынған кезде, идея талғампаз, практикалық болып көрінді және инженерлік және бағдарламалау мәселелерінің кең ауқымын жеңілдетеді. Жарияланған кездегі жағдайлар содан бері түбегейлі өзгерсе де, біз компьютерлер туралы идеяларымызды осы ескі тұжырымдамамен сәйкестендіреміз. Қарапайым түрде фон Нейман компьютері үш бөліктен тұрады: Орталық Есептеуіш Бөлім(CPU немесе CPU), жады және оларды қосатын арна, ол орталық процессор мен жад арасында және шағын бөліктерде (әрқайсысы бір сөзден ғана) деректер алмасуға қызмет етеді. Мен бұл арнаны «Вон Нейманның тар жолы» деп атауды ұсынамын. Әрине, «тар бөтелке мойны» арқылы деректердің үлкен көлемін айдаудан гөрі қарапайым шешім болуы керек. Мұндай арна трафикке қиындық тудырып қана қоймайды, сонымен қатар бағдарламашыларға «сөз» ойлауын жүктеп, олардың жоғары концептуалды категорияларда ойлауына кедергі келтіретін «интеллектуалдық тығырық» болып табылады.

Backus 1950 жылдардың ортасында Фортран тілін жасаумен танымал болды, ол келесі бірнеше онжылдықтарда есептеу бағдарламаларын жасаудың ең танымал құралы болды. Бірақ кейінірек, шамасы, Бэкус оның әлсіз жақтарын терең түсінді және барлық тілдердің ішінде «ең фон-неймандық тілді» жасағанын түсінді. жоғары деңгей. Сондықтан оның сынының негізгі пафосы ең алдымен жетілмеген бағдарламалау әдістеріне бағытталды.

Бэкус сөз сөйлегеннен бері функционалдық және объектілі-бағытталған технологиялардың пайда болуымен программалауда елеулі жетістіктер болды және олардың көмегімен Бэкус «зияткерлік фон Нейманның тығырыққа тірелуі» деп атаған жағдайды жеңу мүмкін болды. Дегенмен, бұл құбылыстың архитектуралық түпкі себебі, жад пен процессор арасындағы арнаның өзіне тән ауруы – оның шектеулі өткізу қабілеттілігі – содан бері соңғы 30 жыл ішінде технология жетістіктеріне қарамастан жойылған жоқ. Жылдар өткен сайын бұл мәселе қиындап барады, өйткені жад жылдамдығы процессорлардың өнімділігіне қарағанда әлдеқайда баяу өседі және олардың арасындағы алшақтық ұлғаяды.

Фон Нейманның компьютер архитектурасы жалғыз мүмкін емес. Процессор мен жады арасындағы командалар алмасуды ұйымдастыру тұрғысынан барлық компьютерлерді төрт класқа бөлуге болады:

  • SISD (Бірыңғай нұсқаулық бір деректер)- «бір командалар ағыны, бір деректер ағыны»;
  • SIMD (бір нұсқаулықты көбейту деректері)- бір команда ағыны, көптеген деректер ағыны;
  • MISD (бірнеше нұсқаулық деректер)- көптеген командалық ағындар, бір деректер ағыны;
  • MIMD (бірнеше нұсқаулық көп деректер)- көптеген командалық ағындар, көптеген деректер ағындары.

Бұл классификациядан фон Нейман машинасының SISD санатына жататын ерекше жағдай екенін көруге болады. SISD архитектурасындағы мүмкін жақсартулар құбырларды және басқа қосымша функционалды түйіндерді қосумен, сондай-ақ әртүрлі кэштеу әдістерін қолданумен шектеледі. Архитектураның басқа екі санаты (векторлық процессорларды қамтитын SIMD және MISD құбырының архитектурасы) бірнеше жобаларда жүзеге асырылды, бірақ жаппай сипатқа ие болмады. Егер біз осы классификацияның шеңберінде қалатын болсақ, онда «тарылдың» шектеулерін еңсерудің жалғыз жолы MIMD класындағы архитектураларды дамыту болып қала береді. Олардың шеңберінде көптеген тәсілдер табылған: бұл әртүрлі параллельді және кластерлік архитектуралар және көп ағынды процессорлар болуы мүмкін.

Бірнеше жыл бұрын технологиялық шектеулерге байланысты барлық көп ағынды процессорлар бір ядро ​​негізінде құрастырылды және мұндай көп ағынды «бір уақытта» деп аталды - Бір уақыттағы көп ағын (SMT). Көп ядролы процессорлардың пайда болуымен көп ағынның балама түрі пайда болды - Чипті мультипроцессорлар (CMP).

Көп ағынды процессорлардың ерекшеліктері

Қарапайым бір ағынды процессорлардан логикалық тұрғыдан күрделірек көп ағынды процессорларға көшу бұрын кездеспеген нақты қиындықтарды жеңуді қамтиды. Орындау процесі агенттерге немесе ағындарға (жіптерге) бөлінген құрылғының жұмыс істеуі екі ерекшелікке ие:

  • детерминацияланбау принцип і ( анықталмағандық принцип і. Көп ағынды қолданбада процесс алдын ала анықталған сенімділіксіз өзара әрекеттесетін агент ағындарына бөлінеді;
  • белгісіздік принципі. Ресурстардың агент ағындары арасында нақты қалай бөлінетіні де алдын ала белгісіз.

Осы ерекшеліктерге байланысты көп ағынды процессорлардың жұмысы фон Нейман схемасы бойынша детерминирленген есептеулерден түбегейлі ерекшеленеді. Бұл жағдайда Қазіргі күйпроцесті алдыңғы күй мен кіріс деректерінің сызықтық функциясы ретінде анықтау мүмкін емес, дегенмен процестердің әрқайсысын фон Нейман микромашинасы ретінде қарастыруға болады. (Жіптердің мінез-құлқына қатысты қолданғанда, тіпті кванттық физикада қолданылатын «біртүрлілік» терминін қолдануға болады.) Бұл мүмкіндіктердің болуы көп ағынды процессорды күрделі жүйе тұжырымдамасына жақындатады, бірақ таза практикалық тұрғыдан. , процестің орындалу деңгейінде детерминизмнің жоқтығы немесе белгісіздік, одан да оғаштық туралы мәселе болуы мүмкін емес екені анық. Дұрыс орындалған бағдарлама біртүрлі болуы мүмкін емес.

Өте жалпы көрінісКөп ағынды процессор примитивтердің екі түрінен тұрады. Бірінші түрі – ағынның орындалуын қолдайтын ресурс, ол мутекс деп аталады (Mutual Exclusion – «өзара алып тастау»), ал екіншісі – оқиға. Белгілі бір мутекс физикалық түрде қалай жүзеге асырылатыны таңдалған схемаға байланысты - SMT немесе CMP. Кез келген жағдайда, процестің орындалуы келесі ағынның оның орындалу уақытында мутексті басып алуына, содан кейін оны босатуына дейін төмендейді. Егер мутекс бір ағынмен тұрса, екінші жіп оны ала алмайды. Мутекс иелігін бір ағыннан екіншісіне берудің арнайы процедурасы кездейсоқ болуы мүмкін; ол басқаруды жүзеге асыруға байланысты, мысалы, белгілі бір операциялық жүйеде. Кез келген жағдайда басқаруды мутекстен тұратын ресурстар дұрыс бөлетін және белгісіздік әсері басылатындай етіп құру керек.

Оқиғалар - сыртқы ортаның өзгеруі туралы сигнал беретін объектілер (оқиғалар). Олар басқа оқиға орын алғанша күту режиміне қоя алады немесе күйін басқа оқиғаға хабарлай алады. Осылайша, оқиғалар бір-бірімен өзара әрекеттесе алады және оқиғалар арасындағы деректер үздіксіздігі қамтамасыз етілуі керек. Күтудегі агентке деректердің оған дайын екендігі туралы хабарлау қажет. Мутексті бөлуде белгісіздік әсері басу керек сияқты, оқиғалармен жұмыс істеу кезінде де белгісіздік әсері басу керек. SMT схемасы алғаш рет Compaq Alpha 21464 процессорларында, сондай-ақ Intel Xeon MP және Itanium құрылғыларында іске асырылды.

Логикалық тұрғыдан алғанда, CMP қарапайым: мұнда параллелизм ағындардың әрқайсысының өз ядросымен өңделуімен қамтамасыз етіледі. Бірақ егер қосымшаны ағындарға бөлу мүмкін болмаса, онда ол (арнайы шаралар болмаған жағдайда) бір ядромен өңделеді, бұл жағдайда жалпы өнімділікпроцессор бір ядроның жылдамдығымен шектеледі. Бір қарағанда, SMT схемасына сәйкес жасалған процессор икемді, сондықтан бұл схема жақсырақ. Бірақ мұндай мәлімдеме транзисторлардың төмен тығыздығында ғана дұрыс. Егер жиілік мегагерцпен өлшенсе және микросхемадағы транзисторлар саны миллиардқа жақындаса және сигнал берудің кешігулері коммутация уақытынан көп болса, онда байланысты есептеу элементтері локализацияланған CMP микроархитектурасы артықшылыққа ие болады.

Дегенмен, физикалық параллелизация CMP дәйекті есептеулерде өте тиімді емес екеніне әкеледі. Бұл кемшілікті жою үшін алыпсатарлық көп ағындық деп аталатын тәсіл қолданылады. Орыс тілінде «спекулятивтік» сөзінің теріс мағынасы бар, сондықтан біз мұндай көп ағынды «шартты» деп атаймыз. Бұл тәсіл аппараттық құралдарды немесе бағдарламалық қамтамасыз етуді қолдаудәйекті қосымшаны шартты ағындарға бөлу, олардың орындалуын үйлестіру және нәтижелерді жадыға біріктіру.

CMP эволюциясы

Алғашқы жаппай шығарылған CMP процессорлары сервер нарығына арналған. Жеткізушіге қарамастан, олар бір субстратта екі тәуелсіз суперскалярлық процессорлар болды. Бұл конструкциялардың негізгі мотивациясы дыбыс көлемін азайту болып табылады, осылайша көп процессорларды бір дизайнға «орауға» болады, бұл бірліктің көлеміне қуат тығыздығын арттыру (бұл бүгінгі деректерді өңдеу орталықтары үшін өте маңызды). Содан кейін, жалпы жүйе деңгейінде кейбір қосымша үнемдеуге қол жеткізіледі, өйткені бір чиптегі процессорлар ортақ пайдаланады. жүйелік ресурстаржоғары жылдамдықты байланыс сияқты. Әдетте, көршілес процессорлар арасында тек ортақ жіп бар. жүйелік интерфейс (күріш. бір, б).

CMP процессорларын пайдалану үшін апологтар ядролар санының одан әрі (екіден астам) өсуін сервер жүктемесінің ерекшеліктерімен негіздейді, бұл компьютердің бұл түрін енгізілген немесе массивтік есептеулерге арналған жүйелерден ерекшелендіреді. Серверден үлкенірек жалпы өнімділік қажет, бірақ жүйеге бір рет қоңырау шалудың кешігуі соншалықты маңызды емес. Тривиальды мысал: пайдаланушы жаңартылған веб-беттің пайда болуының миллисекундтық кешігуін байқамауы мүмкін, бірақ сервердің шамадан тыс жүктелуіне өте сезімтал, бұл қызмет үзілістерін тудыруы мүмкін.

Жүктеменің ерекшелігі CMP процессорларына тағы бір елеулі артықшылық береді. Мысалы, бір ядролы процессорды екі ядролы процессорға ауыстыру арқылы бірдей өнімділікте сағат жылдамдығын екі есе азайтуға болады. Бұл жағдайда бір сұранысты өңдеу уақыты теориялық тұрғыдан екі есеге артуы мүмкін, бірақ ағындардың физикалық бөлінуі фон Нейман архитектурасының тығырыққа тірелген шектеуін азайтатындықтан, жалпы кідіріс екі еседен әлдеқайда аз болады. Бір ядроның төменгі жиілігі мен күрделілігімен энергияны тұтыну айтарлықтай төмендейді, ал ядролар санының ұлғаюымен CMP пайдасына жоғарыда келтірілген дәлелдер тек күшейе түседі. Сондықтан келесі логикалық қадам бірнеше ядроларды жинау және оларды жалпы кэш жадымен біріктіру болып табылады, мысалы, Hydra жобасындағы сияқты (1-сурет, в). Содан кейін сіз өзектерді күрделендіріп, оларды көп ағынды ете аласыз, ол Ниагара жобасында жүзеге асырылды (1-сурет, г).

Процессорлардың күрделілігі тағы бір маңызды көрініске ие. Миллиардтаған құрамдас бөліктері бар өнімді жобалау автоматтандыру құралдарын қолдануға қарамастан, уақытты қажет ететін міндетке айналуда. Біз IA-64 архитектурасын он жылдан астам уақыт бойы «еске түсірудің» куәсі болып отырғанымыз маңызды. CMP процессорын жобалау әлдеқайда қарапайым: егер дамыған ядро ​​болса, онда оны қажетті мөлшерде қайталауға болады, ал дизайн кристалдың ішкі инфрақұрылымын құрумен шектеледі. Сонымен қатар, ядролардың біркелкілігі дизайнды жеңілдетеді аналық платалар, бұл масштабтауға түседі және сайып келгенде, енгізу-шығару ішкі жүйелерінің көрсеткіштері өзгереді.

Осы аргументтерге қарамастан, CMP-тің SMT-дан артықшылығын бір мәнді түрде айту үшін әлі жеткілікті дәлелдер жоқ. SMT жүзеге асыратын процессорларды жасау тәжірибесі әлдеқайда көп: 80-жылдардың ортасынан бастап бірнеше ондаған тәжірибелік өнімдер мен бірнеше сериялық процессорлар жасалды. CPM даму тарихы әлі де қысқа: егер сіз Texas Instruments TMS 320C8x мамандандырылған сигнал процессорларының тобын есепке алмасаңыз, онда бірінші сәтті жобаСтэнфорд университетінде жасалған Hydra болды. CMP процессорларын құруға бағытталған университеттік ғылыми жобалардың ішінде тағы үшеуі белгілі - Wisconsin Multiscalar, Carnegie-Mellon Stampede және MIT M-машинасы.

Гидра микропроцессоры

Hydra матрицасы белгілі MIPS RISC архитектурасына негізделген төрт процессор өзегінен тұрады. Әрбір ядрода нұсқаулық кэші және деректер кэш бар және барлық ядролар жалпы L2 кэшіне біріктірілген. Процессорлар синхрондау примитивтерін іске асыру үшін MIPS нұсқауларының әдеттегі жинағын және Шартты сақтау немесе SC нұсқауларын орындайды. Процессорлар мен L2 кэш оқу/жазу шиналары арқылы қосылған, сонымен қатар көмекші адрес және басқару шиналары бар. Бұл автобустардың барлығы виртуалды, яғни олар сымды шиналар арқылы логикалық түрде бейнеленген және ядролардың жылдамдығын арттыруға мүмкіндік беретін қайталағыштар мен буферлердің көмегімен физикалық түрде көптеген сегменттерге бөлінген.

Оқу/жазу шинасы жүйелік шинаның рөлін атқарады. Кристалл ішінде орналасуына байланысты ол жеткілікті өткізу қабілетібір циклде кэш жадымен алмасуды қамтамасыз ету. Сыртқы процессор түйреуіштерінің санына физикалық шектеулер болғандықтан, тіпті ең қымбат дәстүрлі мультипроцессорлық архитектураларда мұндай алмасу өнімділігіне қол жеткізу қиын. Тиімді кэш шиналары ядролар мен жад арасындағы қиындықтарды болдырмайды.

Hydra-ны әдеттегі веб-сайтта және серверлік қолданбаларбір ядромен салыстырғанда төрт ядроның өнімділігі 3-3,8 есеге, яғни сызықтық дерлік өсетінін көрсетті. Бұл осы типтегі процессорлар SMP архитектурасы бар серверлерді пайдаланатын қолданбаларға сәтті «сәйкес келеді» деуге негіз береді. Бірақ процессор дәйекті қосымшалармен жеткілікті тиімді жұмыс істеуі керек екені анық, сондықтан ең маңызды міндеттердің бірі шартты көп ағынды енгізу болып табылады. Гидрада ол аппараттық деңгейде жүзеге асырылады және бұл тәсілді таңдау параллельді қосымшаларды бағдарламалау үшін қосымша шығындарды қажет етпейтіндігімен негізделеді.

Шартты көп ағындылық бағдарлама командаларының тізбегін параллель орындалатын ағындарға бөлуге негізделген. Әрине, мұндай ағындар арасында логикалық өзара тәуелділік болуы мүмкін және оларды үйлестіру үшін процессорға арнайы синхрондау механизмі салынған. Оның жұмысының мәні мынада: егер қандай да бір ағынға параллель ағыннан деректер қажет болса, бірақ олар әлі дайын болмаса, онда мұндай ағынның орындалуы тоқтатылады. Шындығында, жоғарыда талқыланған детерминизмнің элементтері осы жерде көрінеді. Синхрондау процесі өте күрделі, өйткені ағындар мен синхрондау шарттары арасындағы барлық мүмкін тәуелділіктерді анықтау қажет. Шартты синхрондау бағдарламаларды олардың қасиеттерін алдын ала білмей-ақ параллельдеуге мүмкіндік береді. Синхрондау механизмінің динамикалық болуы маңызды, ол бағдарламалаушының немесе компилятордың араласуынсыз жұмыс істейді, ол тек қосымшаларды ағындарға статикалық түрде бөлуге қабілетті. Түрлі сынақтарға негізделген модельді сынақтар шартты көп ағынды құралдар процессордың өнімділігін бірнеше есе арттыра алатынын көрсетті, ал тест неғұрлым айқын параллелизммен сипатталса, соғұрлым бұл мән төмен болады.

2000 жылы Афара қатаң құпияда құрылды. Оның негізін Intel және Sun Microsystems компанияларында тәжірибесі бар Стэнфорд университетінің профессоры Кунле Олукотун және белгілі процессор дизайнері Лес Кон салды. Кон осы корпорациялардың біріншісінде i860 және i960 RISC процессорларының және екіншісінде UltraSPARC-I авторларының бірі болды. Оның басшылығымен Hydra SPARC процессоры негізінде процессор өзектері үшін қайта жасалды. 2002 жылы Афараны Sun Microsystems сатып алды, бұл Hydra жобасының соңы және Ниагараның басы болды.

Ниагара - MAJC және Hydra «біріктіру».

UltraSPARC T1 процессоры, Niagara деген атпен белгілі, екі негізгі предшественнигі бар - Hydra және MAJC.

1990 жылдардың ортасында мамандандырылған Java процессорларына деген құштарлықтан кейін Sun Microsystems өте ұзақ нұсқау сөзі (VLIW) процессорын жасауға әрекеттенді. Бұл бастама MAJC (Java Computing үшін микропроцессорлық архитектура) деп аталады. Сол кезде басталған басқа жобалар сияқты (Intel IA-64 Itanium), бұл ең күрделі операциялардың кейбірін компиляторға жылжыту туралы болды. Босатылған транзисторлық логиканы орталық процессор, кэш жады және негізгі жады арасында пәрмендер мен деректердің өнімді алмасуын қамтамасыз ету үшін тиімдірек функционалды блоктарды құру үшін пайдалануға болады. Осылайша, фон Нейман тығырыққа тірелді.

MAJC процессорлардың көпшілігінен мамандандырылған сопроцессорлардың (ішкі процессорлардың) болмауымен ерекшеленді, олар әдетте бүтін сандармен, өзгермелі нүктелермен және мультимедиялық деректермен операцияларды орындауға арналған функционалдық құрылғылар деп аталады. Онда барлық функционалдық құрылғылар бірдей болды, кез келген операцияларды орындауға қабілетті, бұл бір жағынан жеке операцияларды орындау тиімділігін төмендетсе, екінші жағынан бүкіл процессорды пайдалануды арттырды.

Ниагара көп ағынды жүргізудің екі балама тәсілдерінің ең жақсысын қамтиды - SMT және CMP. Бір қарағанда, ол Гидраға өте ұқсайды, бірақ Гидраны Ниагараның «макети» деп атауға болады. Соңғысының екі есе көп өзегі бар екеніне қоса, олардың әрқайсысы төрт ағынды өңдей алады.

Niagara процессоры сегіз топқа (әрқайсысы төрт ағын) бөлінген 32 ағынды орындау үшін аппараттық қолдауды қамтамасыз етеді. Әр топтың SPARC өңдеу арнасының өзіндік құбыры бар ( сурет 2). Бұл SPARC V9 архитектурасына сәйкес жасалған процессор өзегі. Әрбір SPARC конвейері командалар мен деректерге арналған бірінші деңгейдегі кэшті қамтиды. Бірге 32 ағын төрт банкке бөлінген 3 Мбайт L2 кэшпен бөліседі. Коммутатор сегіз ядроны, екінші деңгейлі кэш банктерін және басқа ортақ CPU ресурстарын қосады және 200 ГБ/с тасымалдау жылдамдығын қолдайды. Сонымен қатар, коммутаторда 20 ГБ/с алмасу жылдамдығын қамтамасыз ететін DDR2 DRAM жадына енгізу/шығару жүйелері мен арналары үшін порты бар; максималды жад сыйымдылығы 128 ГБ дейін.

Niagara жобасы Solaris операциялық жүйесіне бағытталған, сондықтан Solaris жүйесінде жұмыс істейтін барлық қолданбалар ешқандай өзгеріссіз жаңа процессорда жұмыс істей алады. Қолданылған бағдарламалық қамтамасыз етуНиагараны 32 дискретті процессор ретінде қабылдайды.

Жасуша жобасы

IBM корпорациясы Ұяшық жобасы «гетерогенді чип мультипроцессоры» деп аталатын көп ядролы процессорларды құрудың өзіндік тәсілін ұсынды. Ұяшық архитектурасы ұялы кең жолақты қозғалтқыш архитектурасы (CBEA) деп те аталады. Ұяшық мультипроцессоры IBM 64-бит Power Architecture ядросынан және «бір нұсқау, көп деректер» схемасын жүзеге асыратын сегіз арнайы сопроцессорлардан тұрады. IBM бұл архитектураны Synergistic Processor Unit (SPU) деп атайды. Оны үлкен деректер ағындарын өңдеу қажет болған кезде сәтті қолдануға болады, мысалы, криптографияда, әртүрлі мультимедиялық және ғылыми қолданбаларда, мысалы, Фурьенің жылдам түрлендіруі немесе матрицалық операциялар. Ұяшық архитектурасын IBM Research зерттеушілер тобы, IBM Systems Technology Group, Sony және Toshiba әріптестерімен бірге жасаған және оның бірінші қолданбасы үлкен көлемдегі есептеулерді қажет ететін мультимедиялық құрылғылар болуы керек.

Синергетикалық процессор бірлігінің негізін нұсқаулар жинағы архитектурасы (ISA) құрайды. Нұсқаулардың ұзындығы 32 бит және әрқайсысы 128 биттен тұратын 128 регистрден тұратын регистрлер пулындағы үш операндты адрестейді.

Болашақта Cell қолдану тек ойын жүйелерімен шектелмейді. Келесі кезекте ажыратымдылығы жоғары теледидар, үй серверлері және тіпті суперкомпьютерлер бар.

Әдебиет
  1. Леонид Черняк. Негізгі қағидаларды қайта қарау – тоқыраудың соңы ма? // ашық жүйелер. - 2003, №5.
  2. Михаил Кузьминский. Микропроцессорлардың көп ағынды архитектурасы // Ашық жүйелер. - 2002 ж., № 1.
  3. Раджат А Дуа, Бхушан Лоханде. SMT және CMP мультипроцессорларының салыстырмалы зерттеуі. -
Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!