Алдыңғы тарауда біз прогарммалаудың параллеь модельдерін қарастырдық. Бұл тарауда параллеь компьютерлер типтеріне тоқталамыз:
- Жалпы қатынау жадылы көппроцессорлы жүйелерге (бөлінетін жадылы);
- Хабар беру мультипроцессорына.
Жалпы қатынау жадылы көппроцессорлы жүйелерге (бөлінетін жадылы)
Жалпы қатынау жадылы конфигурациясы бар параллель компьютерлердің бірінші типін толық қарастырамыз. Бұл конфигурация көптеген жады модульдерімен байланысқан процессорлар жиынтығынан тұрады.
Процессорлар мен жады арасындағы байланыс өзарабайланыс желісінің кейбір формалары арқылы жүзеге асады. Қарастырылатын жүйе жеке адрестік кеңістікті қолданады. Жалпы қатынау жадылы конфигурациясы бар параллель компьютердің жалпы түрі 4- суретте келтірілген.
Бөлінетін жадылы мультипроцессорлар құрылымы.
Барлық жедел жадыдағы әрбір ұяшықтың ерекше адресі болады, және осы адресті әрбір процессор берілген ұяшыққа қатынау үшін қолданылады. Жады ұяшығының виртуальды және нақты орнына қатынау үшін қолданылады.
Вертуалды адресатция мен накты адрес арасында атау арасында атау бойынша іздедінапараттық кестесін қолданып автоматы аудару жүреді.ТLB (трансляцианы алдындағысының буфері)
Жалпыкатынау жадылы працессорлы жүйелердегі программалдауда орындалатын программа колды әрбір процессордың жадында сакталады да, одан кеиін орындалады.
Егер жады шинасы немесе матрицалық каммутатор болып саналатын жалғастырып тұратын желіде екіден 30 дейінгі процессоры бар, жадының кез-келген учаскесіне әрбір процессордың бірдей қатынау уақытысы болса, онда мұндай мультипроцессор түрі біртектес (UMA- uniform memory access) немесе симетриялы мультипроцессор деп аталады.
Басқа жағдайда, ондаған немесе жүздеген процессорлы үлкен мультипроцессорлар болса, ал жалғастыратын желілер ағаш тәрізді ауыстырғыштар жиыны мен жады облыстарынан, жады иерархиялық құрылымды болса, әртүрлі қатынау уақытына әкеледі. Мұндай бөлінетін жадылы мультипроцессорлар біртектес емес деп аталады(NUMA-non uniform memory access).
Екі типті машиналарда да өзінің жеке кэші болады. Егер екі процессор жадының әртүрлі облысына нұсқаса, олардың ішіндегісін олардың әрбіреуінің кэшіне қауіпсіз орналастыруға болады. Деректі бірмезгілде оқығанда, процессордың әрбір кэшіне деректер көшірмесін орналастыруға болады. Бірақ деректі біруақытта оқығанда және деректі басқа процессормен жазғанда кэші келісушілік проблемасы болуы мүмкін. Мұндай проблеманың шешімінің бірі — әрбір процессор адрестік шинасы «қадағалауы», ондағы жады облысына нұсқағышты табуы керек.
Сонда-ақ жады келісушілік проблемасы: алғашқы жады нақты қашан жаңғыртылады? Жады келісушілігінің бірнеше модулі бар:
- Тізбекті келісушілік;
- Поцессорлар келісушілігі;
- Басату келісушілігі.
Тізбекті келісушілік жадыны жаңарту белгілі бір ретпен жүреді деп кепіл береді, және де әрбір процессорға бір ғана тізбек «тізбек» көрінеді.
Поцессорлардың келісуі әрбір поцессор орындайтын жадыға жазу поцессор қандай ретпен іске асырса, сол ретпен қамтамасыз етіледі. Бірақ әртүрлі поцессорлармен алғашқы мәндері берілген жазулар, басқа поцессорларларға әр түрлі болып көрінуі мүмкін.
Босатуды келісушілік кезінде алғашқы жады программист көрсеткен синхрондаунүктелерінде жаңартылады. Жады келісушілігінің соңғы моделі жиі қолданыады, өйткені басқа жағдайларда іске асыру өте қымбат және жұмыс жалпы баяулайды. Поцессор жұмысының баяулауы, әрбір жазуда ақпараттық бөлік барлық кэш жадыны тексеруі керек және қажет болса оларды жаңарту немесе жарамсыз етуге, сонымен қатар алғашқы жадыны толықтыруға байланысты.
Сонымен, мультипоцессорлар жедел жадыны өнімділікті жақсарту үшін қолданылады. Бірақ жадының иерархиялықғы кэшті және жадыны келісушілік проблемаларын, сондай-ақ жалған бөлу мүмкіндігін тудырады. Сондықтан, программист берілген машинаның жады жүйесінің сипаттамасын білу керек және соларды ескере отырып программа жазуы керек.
Осындай типті программалау үшін бірнеше әдісі бар:
- Жаңа параллель программалау тілдері (Мысалы, Ada);
- Бар тізбекті тілді өзгерту (Мысалы,Fortran, C++)
- Бар тізбекті тілдердің көмекші программалар кітапханасын қолдану (Мысалы, Ptheards, Java).