Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Duisembiev-Parallel-esep.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.86 Mб
Скачать

§1.2.2 Компьютерді басқарудың интеллектуалдығын жоғарылату

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

Іс жүзінде барлық дерлік жағдайда келесі тұжырым орынды: «компьютердің архитектурасындағы параллельділік дәрежесін көтеру оның шектік өнімділігінің жоғарылауына алып келуімен қатар, бір мезгілде шектік өнімділігі мен нақты өнімділігі арасындағы айырмашылықтың да артуына әкеледі». Бұл түсінікті де, мысалға, барлық бағдарламалар ILLIAC IV компьютерінің барлық 64 процессорлық элементін бірдей тиімді қолдана алмайтыны анық.

Егер бағдарлама векторлық түрге келмесе, онда ол Gray сияқты векторлы-конвейерліқ машиналарының архитектурасындағы артықшылықтарын толық қанды пайдалана алмайды.

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

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

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

Сонымен, бағдарлама жұмысының тиімділігін көтеру туралы айтатын болсақ, бірінші - арнайыпроцессорларды құрастыру жайында айтылу керек.

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

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

Арнайы процессорлардың жоғары мамандандырылуын ескерсек, олардың өнімділік көрсеткішін бағалау аса үлкен ұқыптылықты қажет ететіні айқын.

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

Алғашқылардың бірі және осы уақытқа дейін кең қолданыста жүрген арнайы процессорлардың қатарына, Фурье түрлендіруін тез іске асыруға аппараттық қолдау негізінде құрылған процессорларды жатқызуға болады. Пайдаланушыдан жасырын параллельділік - машиналық команда деңгейіндегі параллельділікті (Instruction–Level Parallelism) пайдалану идеясы параллельділіктің даму бағытына қызықты серпін берді. Пайда өте көп, олардың ішіндегі ең бастыларының қатарына пайдаланушыға арнайы параллель бағдарлама жасау қажеттілігінің жоқтығын айтуға болады. Сонымен қатар, мұнда тасымалдау мәселесі тізбекті машиналар класындағы бағдарламаны тасымалдаудың жалпы мәселелерінің деңгейінде қалады.

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

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

Тәжірибе жүзінде VLIW–процессорлары (Very Large Instruction Word) негізінен фон-неймандық компьютері ережесімен жұмыс істейді. Айырмашылығы: процессорге әр цикл сайын берілетін команда, бір ғана операцияны емес, бірден бірнешеуін анықтайды.

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

Осыған ұқсас архитектуралы компьютерлер қатарына Floating Point Systems фирмасының АР–120В компьютерін мысалға келтіруге болады. Оны алғаш пайдалану 1976 жылы басталып, 1980 жылы дүние жүзі бойынша 1600 –ден аса данасы орнатылды. АР–120В компьютерінің командасы 64 разрядтан тұрады және ол машинаның барлық құрылғыларының жұмысын басқарады. Әрбір тактіде (167 нс) бір команда беріледі, бұл бір секунд ішінде 6 миллион команданың орындалуына эквивалентті. Әрбір команда бір уақытта бірнеше операцияларды басқара алатындықтан, нақты өнімділік жоғары болуы мүмкін. АР–120 В командасының барлық 64 разряды, әрбірі өз операциялар жиынына жауап беретін алты топқа бөлінеді: 16-разрядты бүтін санды берілгендер және регистрлермен операциялар, нақты сандарды қосу, енгізу/шығаруды басқару, өту командалары, нақты сандарды көбейту және басты жадтағы жұмыс командалары.

VLIW-процессоры үшін бағдарлама әрқашанда параллельділік туралы нақты, дәл ақпаратты қамтиды. Мұнда, компилятор, әрдайым бағдарламадағы параллельділікті өзі анықтап, қандай операциялар бір-біріне тәуелсіз екені туралы ақпаратты аппаратураға айқын түрде хабарлайды.

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

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

50–ші жылдардың соңында суперскалярлық өңдеу идеясының дамуына IBM фирмасының STRECH жобасы үлкен ықпал етті, қазіргі таңда көптеген микропроцессорлардың архитектурасы осы қағидаға сүйеніп құрылған. VLIW-компьютерінің айқын өкілдері: Multiflow және Cydra компьютерлері ұрпағы.

Жоғарыда келтірілген екі қағида да жеке процессорлардың өнімділігін арттыруға қатысты, олардың негізінде өз кезегінде көппроцесссорлы конфигурациялар құруға болады. Параллель компьютерлердің архитектурасы компьютерлік индустрияның пайда болуынан бастап, адам нанғысыз темппен және әртүрлі бағыттарда дамуда [24].

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]