34
7. Не себепті конвейерлік компьютердің шектік ӛнімділігіне
практика
жүзінде дәл жету мүмкін емес?
8. Соңғы компьютерлердің жады иерархиясында қандай деңгейлер
пайдаланылады?
35
§1.2.2 Компьютерді басқарудың интеллектуалдығын жоғарылату
Сонымен, алдыңғы параграфтан шығатын қорытынды - «компьютер
архитектурасындағы параллельділік – бұл уақытша емес, ол мәңгі –
бақилық»
десе
болады.
Қазіргі
жаңа
технологиялар
мыңдаған
процессорларды бір ғана есептеу жүйесіне жеңіл түрде біріктіруге мүмкіндік
береді. Алайда, паралель компьютерлерді қолданудың осы уақытқа дейінгі
тәжірибесі оларды толық игерудің идеал жағдайлардан
қашық екендігін
кӛрсетеді.
Іс жүзінде барлық дерлік жағдайда келесі тұжырым орынды:
«компьютердің архитектурасындағы параллельділік дәрежесін кӛтеру оның
шектік ӛнімділігінің жоғарылауына алып келуімен қатар, бір мезгілде шектік
ӛнімділігі мен нақты ӛнімділігі арасындағы айырмашылықтың да артуына
әкеледі». Бұл түсінікті де, мысалға, барлық бағдарламалар ILLIAC IV
компьютерінің барлық 64 процессорлық элементін бірдей тиімді қолдана
алмайтыны анық.
Егер бағдарлама векторлық түрге келмесе, онда ол Gray сияқты векторлы-
конвейерліқ машиналарының архитектурасындағы артықшылықтарын толық
қанды пайдалана алмайды.
Кейде алгоритм структурасы оны тиімді іске асыруға мүмкіндік бермейді,
бірақ мұндай жағдайлар жиі кездесе бермейді. Кӛп жағдайда бағдарламаның
нақты ӛнімділігін
жоғарылатуға болады, бірақ бұл процестің қиыншылығы
есептеуіш
жүйенің
аппараттық-бағдарламалық
ортасының
параллельділікті қаншалықты қолдай алатынына тікелей байланысты. Бұл
жерде барлығы маңызды: операциялық жүйелер және компиляторлар,
параллель бағдарламалау технологиясы және бағдарламаның орындалу
уақыты жүйелері, процессордың параллелизмді
қаншалықты қолдауы және
жадымен жұмыс істеу ерекшеліктері. Егер бір нәрселер ескерілмеген,
қарастырылмаған жағдай бола қалса, онда тиімді бағдарламаны алу үшін
қолданушының ӛзі қамдану керек: егер компилятор нашар болса, онда
ассемблер
тілінде жазу керек, егер аппараттық деңгейде әртүрлі
процессорлардағы кэш жадыларда сақталған мазмұндарда келіспеушілік
болса, онда кэш жадыны босататын арнайы функциялар тұрақты түрде кодқа
қойылады және т.б.
Қазіргі таңда, компьютердің бағдарламалық – аппараттық ортасындағы
паралельділікті қолдауда айрықша мәнді тәжірибе жинақталды десе болады.
Осы ортаның «параллель» бӛліктерімен танысумен қатар, сұрақтың кері
жағының да маңыздылығы кем емес. Егер бағдарламаның тиімділігі тӛмен
болса, онда оның себебі барлық жерде жасырынып тұруы мүмкін. Бұл үшін
бір дегеннен пайдалынылған алгоритмге немесе ӛзіміздің
бағдарлама құру
қабілетімізге ренжіп қажеті жоқ.
Бұған себепші нашар компилятор немесе оны дұрыс пайдаланбау,
аппаратура деңгейінде жадыға қатынастың бұғатталуы, нашар іске
асырылған
параллельді
енгізу/шығару,
коммуникациялық
ортадан