2 Лекция. Параллелизм. Программалау модельдері.
Параллелизм.
Деректер параллелизмі мен есептер параллелизмі.
Программалаудың негізгі параллель модельдері.
2.1. Деректер параллелизмі мен есептер параллелизмі
Қазіргі заманғы бірпроцессорлы машина бірнеше компоненттен тұратын белгілі.
Primary memory
Level 2 cache
Level 1 cache
CPU
2-сурет. Бірпроцессорлы машина.
● орталық процессор (CPU);
● алғашқы жады;
● бір және бірнеше деңгейдегі кэш-жады;
● екінші жады (дискідегі жады);
● әртүрлі сыртқы құрылғылар.
Программаның орындауына қатысты түйінді компоненттер: орталық процессор, кэш және жады.
Бірпроцессордың архитектурасын жақсартудың әртүрлі әдістері бар:
орталық процессордың бір ішкі бөлігінің орнына қосындаушы (көбейткіштердің) төрт модулін қолдану;
өткізу жолағын үлкейту үшін орталық процессорға екі немесе бірнеше жады блогын қосу;
уақыт өлшемінде орындалатынкомандалар санын үлкейту үшін бір жадының бір немесе бірнеше процессорды қосу;
барлық компьютерлердің жұмысы бірге бір ғана программаны шешуге бағытталатыңдай толық компьютерді (процессор, жады және енгізу-шығару құрылғысын қосу) машина желісіне қосу;
Параллелизм
Параллелизм әр түрлі деңгейде топталуы мүмкін:
● тапсырма деңгейіндегі параллелизм;
● программа деңгейіндегі параллелизм;
● команда деңгейіндегі параллелизм;
● арифметикалық және биттік туралайтын параллелизм.
Тапсырма деңгейіндегі параллелизм – параллелизмнің жоғарғы деңгейі.
Мысалы, лаборатория немесе компьютер орталығы берілген уақыт аралығында көптеген есептердіорындайды. Оған үлкен компьютерлік желілерді сатып алу арқылы жетуге болады, кез – келген уақытта көп тапсырма орындалады, және қолданушының кез-келген тапсырмасы басқаларға қарағанда тез орындалмайды.
Тапсырма деңгейіндегі параллелизм бір компьютер шегінде бір тапсырманы немесе бірнеше тапсырманың тәуелсіз есептер жиынтығы ретінде өңдей отырып қолданылады. Орталық процессор және енгізу – шығару жүйелері параллель жұмыс і стейді.
Берілген параллелизм түрінің мысалы: біруақытта жадыда бірнеше тапсырма болады, сонымен қатар кез – келген берілген уақытта олардың тек біреуі орындалады. Егер бұл тапсырма енгізу – шығару немесе дискіден оқу типті қызметті қажет етсе, онда амал инициалданады, жоғарыдағы қызметтің бірін қажет еткен тапсырма тоқтатылып, басқа тапсырма орындау күйіне орналастырылады. Ары қарай, енгізу – шығару амалы аяқталғаннан кейін, басқару кері алғашқы тапсырмаға оралып, орындалу жалғасады.
Программаның деңгейіндегі параллелизм
Программа деңгейіндегі параллелизмде пбір программа бөліктерге, оның құраушыларына бөлінеді.
Мысалы, матрицалардың көбейтіндісі: С=AxB матрицаларды квадраттарға бөлу жолымен есептеледі:
Жалпы, программа деңгейіндегі параллелизм екі әдіспен көрінеді:
● берілген программаның тәуелсіз бөліктердеге бөлу;
● итерациялар арасында ешқандай байланыс жоқ циклің жеке итерацияларын қолдану.
Параллелизмнің бұл түрін процессорлар жиынтығы немесе функциональды модулдер жиынтығын қолдануы мүмкін.
Программа деңегейіндегі параллелизмнің көруінуінің қарапайым мысалы: қосындыларын есептеу. Төменде екі массив элементтерінің қосындысын есептеу коды көрсетілген:
for (i=0; i
A[i]=B[i]+C[i]
Қосындылар тәуелсіз, яғни B[i]+C[i] есептеуі B[i]+C[i]-ге тәуелсіз, кез – келген j
Бұл олардың кез-келген ретпен есептелетініін білдіреді, және әсіресе, көппроцессорлы машина барлық берілген есептеулерді біруақытта орындай алуы мүмкін.
Достарыңызбен бөлісу: |