
- •Isbn 978-601-217-247-8
- •Есептеу машиналары
- •§1.1.1 Параллель виртуалды машиналар
- •1 Сурет. Vm/sp, vм/ха, vn/еsа машиналары
- •2 Сурет. Виртуалды машина жүйесі
- •3 Сурет. VMware терезесі
- •4 Сурет. Бір компьютерде бірнеше операциялық жүйе
- •5 Сурет. Вм консолынің мысалы
- •6 Сурет. Виртуалды машиналар жүйесінің архитектурасы
- •§1.1.2 Виртуалды машиналардың түрлері
- •§1.1.3 Виртуаландыру - ақпараттық жүйелерді реттеудің басты жолы
- •§1.2.1 Компьютердің аппараттық құрылымын жетілдіру
- •7 Сурет. Бір операцияны бес тактіде орындайтын тізбекті құрылғының
- •8 Сурет. Бір операцияны әрбірі бес тактіде орындайтын екі бірдей тізбекті
- •10 Сурет. Конвейерлік құрылғы өнімділігінің кіріс деректер
- •11 Сурет. Illiac IV матрицалық жүйесінің жобасы
- •§1.2.2 Компьютерді басқарудың интеллектуалдығын жоғарылату
- •12 Сурет. Ортақ жадылы параллель компьютерлер
- •13 Сурет. Таратылған жадылы параллель компьютерлер
- •14 Сурет. Ортақ шиналы мультипроцессорлық жүйе.
- •15 Сурет. Матрицалық коммутаторлардағы
- •16 Сурет. Омега - желі мультипроцессорлық жүйесі.
- •17 Сурет. Мультикомпьютерлерлік жүйелер байланыс топологияларымен: а – сызықша; б – дөңгелек; в – жұлдызша
- •18 Сурет. Процессорлардың байланыс топологияларының нұсқалары
- •19 Сурет. Сm* есептеу жүйесінің сызбасы
- •20 Сурет. Bbn Butterfly есептеу жүйесінің сызбасы
- •§1.2.3 Функционалды құрылғылар жүйесі
- •§1.3.1 Параллель компьютерлер және жүйелер классификациясы
- •21 Сурет. М. Флин классификациясының sisd және simd кластары
- •22 Сурет. М. Флин классификациясының misd және mimd кластары
- •23 Сурет. Mimd класына р. Хокнидың қосымша
- •§1.3.2 Векторлы-конвейерлік компьютелер
- •24 Сурет. Cray c90 компьютерінің жалпы сүлбесі
- •25 Сурет. Cray c90 компьютері жадысының бөлінуі
- •26 Сурет. Cray c90 компьютерінде векторлық операциялардың орындалуы
- •27 Сурет. Cray c90 компьютерінде векторлық операциялардың ілінісуі
- •§1.3.3 Ортақ жадылы параллель компьютерлер
- •28 Сурет. Hewlett Packard Superdome компьютері
- •29 Сурет. Hewlett Packard Superdome компьютерінің
- •§1.3.4 Таратылған жадылы есептеу жүйелері
- •30 Сурет. Cray t3e компьютерінің коммуникациялық торы
- •31 Сурет. Cray т3d/t3e компьютерлеріндегі барьерлі синхрондау
- •32 Сурет. Есептеу кластерінің жалпы схемасы
- •33 Сурет. Мвс-1000м суперкомпьютерінің құрылымы
- •34 Сурет. Коммуникациялық ортаның латенттілігі және өткізу қабілеті
- •§1.3.5 Метакомпьютинг
- •§2.1.1 Үлкен есептер және үлкен компьютерлер
- •35 Сурет. Сандық эксперименттің этаптары
- •§ 2.1.2 Алгоритм графы және параллель есептеулер
- •§ 2.1.3 Шексіз параллелділік концепциясы
- •§ 2.1.4 Ішкі параллельділік
- •37 Сурет. Матрицаларды көбейту графы
- •38 Сурет. Үшбұрышты жүйелерге арналған графтар
- •39 Сурет. Блокты-екідиагоналды жүйеге арналған Макрограф
- •40 Сурет. Блокты-екідиагоналды жүйеге арналған граф
- •41 Сурет. Жалпыланған пралллель форманың ярустары
- •42 Сурет. Графтағы микро және макропараллельділік
- •§2.2.1 Дәстүрлі тізбекті тілдерді пайдалану.
- •§2.2.2 OpenMp бағдарламалау технологиясы
- •44 Сурет. ОреnМр: бағдарламаның орындалу процесі
- •§2.2.3 Хабарлама жіберу негізіндегі бағдарламалау жүйелері. Mpi бағдарламалау жүйесі
- •Int mpi_Comm_rank(mpi_Comm comm, int *rank)
- •Int mpi_Send(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm)
- •Integer count, datatype, dest, msgtag, comm, request, ierr
- •Int mpi_Isend(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Irecv(void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, source, msgtag, comm, request, ierr
- •Int main(argc,argv)
- •Int argc;
- •Include 'mpif.H’
- •Integer ierr, rank, size, prev, next, reqs(4), buf(2)
- •Integer stats(mpi_status_size, 4)
- •Int mpi_Waitany( int count, mpi_Request *requests, int *index, mpi_Status *status)
- •Integer count, requests(*), index, status(mpi_status_size), ierr
- •Int mpi_Waitsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Integer incount, requests(*), outcount, indexes(*), ierr,
- •Int mpi_Test(mpi_Request *request, int *flag, mpi_Status *status)
- •Integer request, ierr, status(mpi_status_size)
- •Int mpi_Testall( int count, mpi_Request *requests, int *flag, mpi_Status *statuses)
- •Integer count, requests(*), statuses(mpi_status_size,*), ierr
- •Int mpi_Testany(int count, mpi_Request *requests, int *index, int *flag, mpi_Status *status)
- •Integer count, requests(*), index, status(mpi_status_size), ierr
- •Int mpi_Testsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Integer incount, requests(*), outcount, indexes(*), ierr,
- •Int mpi_Iprobe( int source, int msgtag, mpi_Comm comm, int *flag, mpi_Status *status)
- •Include 'mpif.H’
- •Integer ierr, rank, size, n, nl, I, j
- •Integer irr, status(mpi_status_size), req(maxproc*2)
- •If(ir .Ne. Rank)
- •Int mpi_Send_init( void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, dest, msgtag, comm, request, ierr
- •Int mpi_Recv_init( void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, source, msgtag, comm, request, ierr
- •Integer сомм, ierr
- •Include 'mpif.H’
- •Integer ibuf(maxproc)
- •Integer req(2*maxproc), statuses(mpi_status_size, maxproc)
- •Integer count, datatype, root, comm, ierr
- •Integer scount, stype, rcount, rtype, root, comm, ierr
- •Integer scount, stype, rcounts(*), displs(*), rtype, root, comm, ierr
- •Integer scount, stype, rcount, rtype, root, comm, ierr
- •Int mpi_Bcast(void *buf, int count, mpi_Datatype datatype, int source, mpi_Comm comm)
- •Int mpi_Gather( void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int dest, mpi_Comm comm)
- •Int mpi_Scatter(void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int source, mpi_Comm comm)
- •Int main(argc,argv)
- •Int argc;
- •Int numtasks, rank, sendcount, recvcount, source;
- •Int mpi_Barrier (mpi_Comm comm)
- •§ 2.2.4 Бағдарламалаудың басқа тілдері және жүйелері.
- •Параллель есептеуде қолданылатын қысқаша қазақша-орысша терминологиялық сөздік
- •Параллель есептеуде қолданылатын қысқаша орысша-қазақша терминологиялық сөздік
- •Және орта айнымалылары
- •Mpi функциялары
25 Сурет. Cray c90 компьютері жадысының бөлінуі
Сонда да, жадының осындай құрылымы аса типті жағдайларды максималды тез өңдеуге бағытталған. Тізбектей орналасқан деректерді оқу/жазу операциялары шиелініссіз өтеді. Мысалы, барлық бір өлшемді массивтерді өңдеу дәл осылай жүргізіледі. Кезкелген тақ қадаммен орналасқан деректерді таңдау кезінде де шиеленістер туындамайды. Жалпы жағдайда, деректерді таңдау қадамы екі есе дәрежесінен көп болған сайын, соғұрлым пайда болған шиеліністерді шешуге уақыт көбірек қажет етіледі.
Енгізу/шығару секциясы
Компьютердің бұл бөлігі сыртқы құрылғылармен жұмыс істеу үшін, деректерді жіберу (алмасу) жылдамдығы әр түрлі, үш канал түрін пайдаланады:
Low-speed (LOSP) channels — 6 Мбайт/с;
High-speed (HISP) channels — 200 Мбайт/с;
Very high-speed (VHISP) channels — 1800 Мбайт/с.
Процессораралық арақатынас секциясы
Бұл секцияның негізгі қызметі, процессорлардың бір-бірімен арақатынасын бірге ұйымдастыру жұмысын синхронизациялау үшін деректерді және процессорлар арасында басқарушы ақпаратты жіберу (алмасу) болып табылады. Процессор аралық ара-қатынас секциясы, кластерлерге – бірдей топтарға біріктірілген, бөлінетін регистрлер мен семафорлардан тұрады. Әрбір кластер сегіз 32-разрядтық бөлінген адрестік регистрлерден (SB), сегіз 64-разрядтық бөлінген скалярлық регистрлерден (ST) және 32 бірбиттік семафорлардан құралған. Жүйедегі кластерлер саны компьютердің конфигурациясымен анықталады.
Енді жеке процессордың құрылымын қарастыралық. Барлық процессорлар регистрлер мен функционалдық құрылғылардан тұратын бірдей есептеу секцияларынан тұрады. Әртүрлі регистрлер және функционалды құрылғылар деректердің үш класын сақтай және өңдей алады: адрестер, скалярлар және векторлар.
Процессордың регистрлік құрылымы
Әрбір процессорда негізгі және аралық регистрлер жиыны болады. Негізгі регистрлерге адрестік регистрлер А, скалярлық регистрлер S және векторлық регистрлер V жатады. Жады және негізгі регистрлер арасындағы аралық сақтаушы рөлін атқаратын аралық В және Т регистрлері, сәйкесінше А және S регистрлері үшін де қарастырылған. Барлық негізгі регистрлер жадымен және функционалдық құрылғылармен байланысқан, ал А және S регистрлері сәйкес аралық регистрлермен қосымша байланыс түзейді. Аралық регистрлер тек жадымен және негізгі регистрлермен байланысқан, олардың функционалдық құрылғылармен тікелей байланысы жоқ. Айта кету керек, бұл компьютерде дәстүрлі кэш-жады да қарастырылмаған.
Компьютер құрылымында 8 адрестік регистрлер, негізінен А жиынында және 64 регистр аралық В жиынында қарастырылған. Адрестік регистрлер адрестерді, ығысулар шамасын көрсету, цикл итерациялар санын және т.б. есептеуге және сақтауға арналған. Осы топтағы барлық регистрлерде 32 разрядтан бар.
Адрестік регистрлер жағдайындағы сияқты скалярлық регистрлердің S негізгі жиынында 8 регистр және аралық Т жиынында тағы 64 регистр бар. Бұл регистрлер, скалярлық арифметика нәтижелерін және аргументтерін сақтауға арналған, бірақ оларда векторлық командалар үшін операндалар болуы мүмкін. Яғни, бұл дегеніміз, скалярлық регистрлер скалярлық та, векторлық та командаларды орындау үшін пайдаланылады деген сөз. Барлық скалярлық регистрлер 64 разрядты.
Әрбір векторлық V регистр 128-ге дейін 64-разрядты сөз сақтай алады. Процессорда барлығы 8 векторлық регистр бар. Аралық регистрлер V жиыны үшін қарастырылмаған. Векторлық регистрлер тек қана векторлық командаларды орындау үшін пайдаланылады.
Векторлық командалардың орындалуына қолдау көрсету үшін екі қосымша регистрлер және VM қарастырылған. Вектор ұзындығы регистрі VL векторлық регистрлерде сақталатын және векторлық операцияларға қатысатын векторлардың нақты ұзындығын қамтиды. Бұл регистр 8 разрядты. Вектор маскасы регистрі VM, кірістік вектор элементтерімен (бәрімен емес) векторлық операцияларды орындауға мүмкіндік береді және ол 128 разрядтан тұрады. Егер маска разряды 1-ге тең болса, онда сәйкес элементтермен операция орындалады, кері жағдайда – орындалмайды. Бұл мүмкіндік, шартты операторларды қамтитын фрагменттерді векторлау кезінде аса пайдалы.
Функционалдық құрылғылар
Cray C90 компьютерінің барлық функционалды құрылғылары конвейерлік болып табылады. Олардағы баспалдақ саны әртүрлі, бірақ әрбір құрылғының әрбір баспалдағы әрқашанда бір тактіде қосылады. Бұл дегеніміз, дербес жағдайда, толық жүктелу кезінде барлық құрылғылар әрбір тактіде нәтиже бере алады дегенді білдіреді. Сонымен қатар, барлық функционалды құрылғылар тәуелсіз және бір мезгілде бір-бірімен жұмыс істей алады.
Cray C90 компьютерінің функционалды құрылғылары төрт топқа бөлінеді: адрестік, скалярлық, векторлық және нақты сандармен операциялар орындауға арналған функционалды құрылғылар.
Адрестік екі функционалдық құрылғы 32-разрядты бүтін сандарды қосуға, азайтуға және көбейтуге арналған. Процессордағы скалярлық құрылғылар саны әрдайым төртеу. Олар бүтін санды қосу/азайту, логикалық разрядтық операциялар, ығысу операциясын орындау және сөздегі бірінші бірге дейінгі нөлдер санын табу үшін пайдаланылады. Скалярлық құрылғылар 64-разрядты деректермен операциялар орындайды және де олар тек қана скалярлық командаларды орындауға арналған.
Компьютердің конфигурациясына байланысты векторлық құрылғылар саны бестен жетіге дейін өзгереді. Олардың қатарына бүтін санды қосу/азайту, логикалық разрядтық операциялар, ығысу операциясын орындау құрылғылары және сөздегі бірінші бірге дейінгі нөлдер санын табатын және биттік матрицаларды көбейтуге арналған құрылғы кіруі мүмкін. Барлық векторлық функционалдық құрылғылар тек қана векторлық командаларды ғана орындауға арналған.
Нақты арифметикаға арналған үш функционалдық құрылғы жылжымалы үтір қалпында берілген 64-разрядты сандарман жұмыс істейді. Олар қосу/азайту, көбейту және санның кері шамасын табу үшін арналған. Нақты сандарға анық бөлу операциясын орындауға арналған жеке құрылғы жоқ. Бұл топтағы барлық құрылғылардың векторлық және скалярлық та командаларды орындай алу мүмкіндіктері бар.
Қызығы, функционалдық құрылғылардың әрбір тобында қосу операциясын орындауға арналған құрылғы қарастырылған. Алайда, әрбір жағдайда операция форматы әртүрлі. Адрестік функционалдық құрылғы 32-разрядты бүтін сандарды скаляр қосуды орындайды. Скалярлық құрылғы 64-разрядты бүтін сандарды скаляр қосуға арналған. Векторлық топтағы қосу құрылғысы 64-разрядты бүтін сандардан тұратын векторлармен операциялар орындайды. Соңғы топтағы қосу құрылғысы екі нақты сандарды және векторларды қосу үшін де пайдаланылады. Бұл түрлердің әрқайсысына Cray C90 компьютерінің командалар жүйесінде өз командасы сәйкес келеді, яғни қандай топтың құрылғысында қандай операция орындау қажет екенін, берілген код бойынша аппаратура анықтай алады (түсіне алады). Бұндай ситуация тек қосынды үшін ғана туындамайды. Ол тұтас алғанда компьютер архитектурасына тән және көптеген басқа операциялардың орындалуы кезінде де байқалады деуге болады.
Бұл компьютерде векторлық командаларды орындаудың қызықты ерекшеліктері бар. Әрбір векторлық және нақты арифметикаға арналған құрылғыларда барлық конвейерлер қайталанған (26 сурет). Жұп нөмірлі кірістік векторлардың элементтері әрқашанда 0-ші конвейерге келіп түседі, ал тақ нөмірлі кірістік векторлардың элементтері 1-ші конвейерге түседі. Алғашқы уақыт мезетінде V1 және V2 векторлық регистрлерінің нөлінші элементтері 0-ші конвейердің бірінші баспалдағына келіп түседі және дәл осы мезетте V1 және V2 векторлық регистрлерінің бірінші элементтері 1-ші конвейердің бірінші баспалдағына түседі. Келесі тактіде бірінші баспалдақтың нәтижесі екіншіге орын ауыстырылады (көшіріледі), ал 0-ші және 1-ші конвейерлердің бірінші баспалдағына V1 және V2 векторлық регистрлерінің екінші және үшінші элементтері келіп түседі. Осылайша, алынған нәтижелер V3 регистрінде орналастырылады: 0-ші конвейерден олар жұп нөмірлі элементтерге жазылады, ал 1-ші конвейерден тақтарына жазылады. Нәтижесінде, функционалдық құрылғы максималды жүктелу кезінде әрбір тактіде біреу емес енді екі нәтиже береді.
Нақты арифметикаға арналған функционалдық құрылғыларды пайдаланатын скалярлық операцияларда тек бір, 0-ші конвейер ғана жұмыс істейді.
Cray C90 компьютерінің архитектурасы, бір векторлық операцияның нәтижелері регистрін келесі векторлық операция үшін кірістік регистр ретінде пайдалануға мүмкіндік береді. Бір операцияның шығысы бірден келесінің кірісіне беріледі және де соңғысы біріншінің аяқталуын күтуі міндетті емес, ал қандай да бір уақыттан кейін онымен бір мезгілде жұмыс істей бастайды. Бұндай ситуация векторлық операциялардың ілінісуі деп аталады.
Жалпы алғанда, ілінісу тереңдігі кезкелген болуы мүмкін, мысалы, векторларды оқу, қосу операциясын орындау, көбейту операциясын орындау, векторларды жазу және т.б.