Usindikaji wa data sambamba unatokana na kanuni zipi? Aina za usawa. Maswala ya jumla ya kutatua "shida kubwa"

"Sambamba kama njia usindikaji sambamba data"

Kotovsk2010

Utangulizi

Ukuaji wa haraka wa sayansi na kupenya kwa mawazo ya mwanadamu katika maeneo mapya kabisa, pamoja na suluhisho la shida zilizoletwa hapo awali, mara kwa mara husababisha mtiririko wa maswali na huleta kazi mpya, ambazo kawaida ni ngumu zaidi. Wakati wa kompyuta za kwanza, ilionekana kuwa kuongeza kasi yao kwa mara 100 kungetatua matatizo mengi, lakini utendaji wa gigaflop wa kompyuta za kisasa za kisasa ni wazi haitoshi kwa wanasayansi wengi. Umeme na hydrodynamics, uchunguzi wa seismic na utabiri wa hali ya hewa, mfano wa misombo ya kemikali, utafiti ukweli halisi- sio mbali orodha kamili nyanja za sayansi ambazo watafiti wake wanachukua kila fursa ili kuharakisha programu zao.

Mwelekeo wa kuahidi zaidi na wenye nguvu wa kuongeza kasi ya kutatua matatizo yaliyotumika ni kuanzishwa kwa mawazo ya usawa katika uendeshaji wa mifumo ya kompyuta. Hadi sasa, mamia yameundwa na kujaribiwa kompyuta mbalimbali, kwa kutumia aina moja au nyingine ya usindikaji wa data sambamba katika usanifu wao. Katika fasihi ya kisayansi na nyaraka za kiufundi unaweza kupata majina zaidi ya kumi na mbili ambayo yana sifa ya kanuni za jumla za utendakazi wa mashine sambamba: bomba la vekta, sambamba sana, kompyuta zilizo na neno la amri pana, safu za systolic, hypercubes, wasindikaji maalum na wasindikaji anuwai, wa hali ya juu na kompyuta za nguzo, mtiririko wa data, kompyuta za matrix na zingine nyingi. Ikiwa, ili kukamilisha maelezo, tunaongeza data kuhusu vile vigezo muhimu, kama vile, kwa mfano, shirika la kumbukumbu, topolojia ya mawasiliano kati ya wasindikaji, maingiliano ya uendeshaji wa vifaa vya mtu binafsi, au njia ya kufanya shughuli za hesabu, kisha nambari. usanifu mbalimbali itakuwa isiyoonekana kabisa.

Majaribio ya kupanga mpangilio mzima wa usanifu ulianza baada ya M. Flynn kuchapisha toleo la kwanza la uainishaji wa mifumo ya kompyuta mwishoni mwa miaka ya 60 na inaendelea hadi leo. Uainishaji ni muhimu sana kwa uelewa bora wa eneo la somo linalosomwa, lakini kupata uainishaji uliofaulu kunaweza kuwa na matokeo kadhaa muhimu.

Swali kuu la uainishaji - nini cha kuunda msingi wake - linaweza kutatuliwa tofauti, kulingana na nani uainishaji huu imeundwa na ni shida gani inalenga kutatua. Kwa hivyo, mgawanyiko unaotumiwa mara kwa mara wa kompyuta ndani kompyuta za kibinafsi, vituo vya kazi, kompyuta ndogo, kompyuta za mfumo mkuu, kompyuta ndogo zaidi na kompyuta bora zaidi, labda huturuhusu kukadiria takriban gharama ya kompyuta. Hata hivyo, haileti mtumiaji karibu na kuelewa kile kinachohitajika kwake kuandika programu ambayo inafanya kazi kwa kikomo cha utendaji wa kompyuta sambamba, i.e. kile aliamua kuitumia.

Uainishaji unapaswa kusaidia kuelewa kila usanifu ni nini, jinsi unavyounganishwa, na ni nini kinachohitajika kuzingatiwa ili kuandika. programu zenye ufanisi au ni darasa gani la usanifu linapaswa kulenga kutatua darasa linalohitajika la shida. Wakati huo huo, uainishaji uliofanikiwa unaweza kupendekeza njia zinazowezekana kuboresha kompyuta na kwa maana hii inapaswa kuwa na maana kabisa. Ni ngumu kutarajia kupata "matangazo" yasiyo ya kawaida, kwa mfano, katika uainishaji kwa gharama, lakini kufikiria juu ya ujasusi unaowezekana katika suala la unyenyekevu na utengenezaji wa programu inaweza kuwa muhimu sana katika kuamua mwelekeo wa utaftaji mpya. usanifu.

1. Mifumo ya kompyuta sambamba

Mifumo ya kompyuta sambamba ni kompyuta ya kimwili, pamoja na mifumo ya programu, kutekeleza kwa njia moja au nyingine usindikaji wa data sambamba kwenye nodi nyingi za kompyuta.

Wazo la kompyuta sambamba ni msingi wa wazo kwamba shida nyingi zinaweza kugawanywa katika seti ya shida ndogo ambazo zinaweza kutatuliwa wakati huo huo. Kwa kawaida, kompyuta sambamba inahitaji uratibu. Kompyuta sambamba huja katika aina kadhaa: usambamba wa kiwango kidogo, usambamba wa kiwango cha maagizo, usambamba wa data, na usambamba wa kazi. Kompyuta sambamba imetumika kwa miaka mingi haswa katika utendakazi wa hali ya juu, lakini katika Hivi majuzi riba imeongezeka ndani yao kutokana na kuwepo kwa vikwazo vya kimwili juu ya ukuaji mzunguko wa saa wasindikaji. Kompyuta sambamba imekuwa dhana kuu katika usanifu wa kompyuta, haswa katika mfumo wa wasindikaji wa msingi mwingi.

Kuandika programu kwa mifumo sambamba ni ngumu zaidi kuliko ile inayofuatana, kwani ushindani wa rasilimali huleta darasa jipya la makosa yanayowezekana katika programu(mende), kati ya ambayo hali ya mbio ni ya kawaida. Mawasiliano na maingiliano kati ya michakato huleta kizuizi kikubwa cha kupata utendaji wa juu mifumo sambamba. Katika miaka ya hivi karibuni, suala la matumizi ya nguvu ya kompyuta sambamba pia imeanza kuzingatiwa. Asili ya ongezeko la kasi ya programu kama matokeo ya ulinganifu inaelezewa na sheria ya Amdahl.

Ikiwa hesabu haihusishi vitendo vya mzunguko (kurudia), basi moduli za kompyuta N hazitawahi kufanya kazi mara N haraka kuliko moduli moja ya kompyuta.

Kwa mfano, ili kupanga haraka safu kwenye mashine ya-processor mbili, unaweza kugawanya safu kwa nusu na kupanga kila nusu kwenye processor tofauti. Kupanga kila nusu kunaweza kuchukua wakati tofauti, kwa hivyo maingiliano ni muhimu.

2. Aina za usawa

2.1 Usambamba wa kiwango kidogo

Aina hii ya usambamba inategemea kuongeza ukubwa wa neno la mashine. Kuongeza ukubwa wa neno la mashine hupunguza idadi ya shughuli inahitajika na processor kufanya vitendo kwenye vigeuzi ambavyo ukubwa wake unazidi saizi ya neno la mashine. Kwa mfano: kwenye processor ya 8-bit unahitaji kuongeza nambari mbili za 16-bit. Ili kufanya hivyo, kwanza unahitaji kuongeza bits 8 za chini za nambari, kisha uongeze bits 8 za juu na uongeze thamani ya bendera ya kubeba kwa matokeo ya kuongeza yao. Jumla ya maagizo 3. Kwa processor ya 16-bit, unaweza kufanya operesheni hii kwa maagizo moja.

Kwa kihistoria, 4-bit microprocessors ilibadilishwa na microprocessors 8-bit, ikifuatiwa na 16-bit na 32-bit microprocessors. 32-bit wasindikaji kwa muda mrefu walikuwa kiwango katika kompyuta ya kila siku. Pamoja na ujio wa teknolojia ya x86-64, wasindikaji wa 64-bit walianza kutumika kwa madhumuni haya.

2.2 Usambamba wa kiwango cha maagizo

Programu ya kompyuta kimsingi ni mtiririko wa maagizo yanayotekelezwa na processor. Lakini unaweza kubadilisha mpangilio wa maagizo haya, uwasambaze kwa vikundi ambavyo vitatekelezwa kwa sambamba, bila kubadilisha matokeo ya programu nzima. Mbinu hii inayojulikana kama usawa wa kiwango cha maagizo. Maendeleo katika ukuzaji wa usawa wa kiwango cha mafundisho katika usanifu wa kompyuta yalitokea katikati ya miaka ya 1980 hadi katikati ya miaka ya 1990.

Wasindikaji wa kisasa wana bomba la maagizo ya hatua nyingi. Kila hatua ya bomba inalingana na hatua maalum iliyofanywa na processor katika maagizo haya katika hatua hii. Kichakataji chenye hatua za bomba la N kinaweza kuwa na hadi N maelekezo mbalimbali juu katika viwango tofauti ukamilifu. Mfano mzuri wa kichakataji bomba ni kichakataji cha RISC kilicho na hatua 5: kuleta maagizo (IF), kusimbua maagizo (Kitambulisho), kutekeleza maagizo (EX), ufikiaji wa kumbukumbu (MEM), andika matokeo kwa rejista (WB) . Kichakataji cha Pentium 4 ina conveyor ya hatua 35.

Wasindikaji wengine, pamoja na kutumia bomba, wana uwezo wa kutekeleza maagizo mengi wakati huo huo, ambayo hutoa usawa wa ziada katika kiwango cha maagizo. Utekelezaji unaowezekana njia hii kwa kutumia superscalarity, ambapo maagizo yanaweza kuwekwa pamoja kwa ajili ya utekelezaji sambamba (mradi tu hayana utegemezi wa data). Utekelezaji kwa kutumia usawa wa kiwango cha maagizo pia unawezekana: VLIW na EPIC.

2.3 Usambamba wa data

Wazo kuu la mbinu kulingana na usawa wa data ni kwamba operesheni moja inafanywa kwa vitu vyote vya safu ya data mara moja. Vipande tofauti vya safu kama hiyo vinasindika kwenye processor ya vector au kwenye wasindikaji tofauti wa mashine inayofanana. Programu inasambaza data kati ya wasindikaji. Vectorization au usawazishaji katika kesi hii mara nyingi hufanywa katika hatua ya mkusanyiko - kutafsiri maandishi ya chanzo cha programu kuwa maagizo ya mashine. Jukumu la mtayarishaji programu katika kesi hii kwa kawaida huja chini ya kubainisha vekta au mipangilio ya utoshelezaji sambamba ya mkusanyaji, maagizo ya ujumuishaji sambamba, na utumiaji wa lugha maalum kwa kompyuta sambamba.

2.4 Usambamba wa kazi (usomaji mwingi)

Mtindo wa upangaji kulingana na ulinganifu wa kazi unamaanisha kuwa kazi ya kompyuta imegawanywa katika kazi ndogo kadhaa zinazojitegemea na kila kichakataji hupakiwa na kazi yake ndogo.

2.5 Mifumo ya uendeshaji iliyosambazwa

Mfumo wa Uendeshaji uliosambazwa, unaosambaza kazi kwa nguvu na kiotomatiki kwenye mashine mbali mbali za mfumo kwa usindikaji, hulazimisha seti ya mashine za mtandao fanya kazi kama uniprocessor pepe. Mtumiaji wa OS iliyosambazwa, akizungumza kwa ujumla, hana habari kuhusu mashine ambayo kazi yake inafanywa.

Mfumo wa Uendeshaji uliosambazwa upo kama mfumo mmoja wa uendeshaji kwenye mizani mfumo wa kompyuta. Kila kompyuta kwenye mtandao unaoendesha OS iliyosambazwa hufanya sehemu ya kazi za Mfumo huu wa Uendeshaji wa kimataifa. Mfumo wa Uendeshaji uliosambazwa huunganisha kompyuta zote kwenye mtandao kwa maana kwamba zinafanya kazi kwa ushirikiano wa karibu na kila mmoja matumizi yenye ufanisi rasilimali zote za mtandao wa kompyuta.

Kuongeza utendaji wa kompyuta kwa sababu ya nini?

Kwa nini kompyuta kubwa huhesabu haraka sana? Kunaweza kuwa na chaguzi kadhaa za jibu, kati ya hizo mbili zina faida wazi: maendeleo msingi wa kipengele na utumiaji wa suluhisho mpya katika usanifu wa kompyuta.

Wacha tujaribu kujua ni ipi kati ya sababu hizi inayoamua kufikia utendakazi wa rekodi. Wacha tugeukie ukweli wa kihistoria unaojulikana. Kwenye moja ya kompyuta za kwanza ulimwenguni - EDSAC, ambayo ilionekana mnamo 1949 huko Cambridge na ilikuwa na wakati wa saa wa microseconds 2 (sekunde 2 * 10-6), iliwezekana kufanya 2 * n shughuli za hesabu katika 18 * n milliseconds. , yaani, kwa wastani shughuli 100 za hesabu kwa sekunde. Linganisha na nodi moja ya kompyuta kompyuta kubwa ya kisasa Hewlett-Packard V2600: muda wa saa ni takriban nanosekunde 1.8 (sekunde 1.8*10-9), na utendaji wa kilele takriban shughuli za hesabu bilioni 77 kwa sekunde.

Nini kinatokea? Zaidi ya nusu karne, utendaji wa kompyuta umeongezeka kwa zaidi ya milioni mia saba mara moja. Wakati huo huo, faida ya utendakazi inayohusishwa na kupunguza muda wa mzunguko wa saa kutoka sekunde 2 hadi nanoseconds 1.8 ni takriban mara 1000 pekee. Hayo mengine yalitoka wapi? Jibu ni dhahiri - matumizi ya ufumbuzi mpya katika usanifu wa kompyuta. Mahali kuu kati yao inachukuliwa na kanuni ya usindikaji wa data sambamba, ambayo inajumuisha wazo la utekelezaji wa wakati mmoja (sambamba) wa vitendo kadhaa.

Usindikaji wa data sambamba, unaojumuisha wazo la utekelezaji wa wakati huo huo wa vitendo kadhaa, una aina mbili: bomba na usawa halisi. Aina zote mbili za usindikaji sambamba ni angavu, kwa hivyo tutatoa maelezo madogo tu.

Usindikaji Sambamba. Ikiwa kifaa fulani hufanya operesheni moja kwa kitengo cha wakati, basi kitafanya shughuli elfu katika vitengo elfu. Ikiwa tunadhania kuwa kuna vifaa vitano vinavyofanana vinavyoweza kufanya kazi wakati huo huo, basi mfumo wa vifaa vitano unaweza kufanya shughuli elfu sawa si kwa elfu, lakini kwa vitengo mia mbili vya wakati. Vile vile, mfumo wa vifaa vya N utafanya kazi sawa katika vitengo 1000/N vya wakati. Analogi zinazofanana zinaweza kupatikana katika maisha: ikiwa askari mmoja anachimba bustani kwa masaa 10, basi kampuni ya askari hamsini wenye uwezo sawa, wanaofanya kazi wakati huo huo, wataweza kukabiliana na kazi sawa katika dakika 12 - kanuni ya usawa katika hatua!

Kwa njia, mwanzilishi katika usindikaji sambamba wa mitiririko ya data alikuwa Msomi A.A. Samarsky, ambaye alifanya hesabu zinazohitajika kuiga milipuko ya nyuklia katika miaka ya 50 ya mapema. Samarsky alitatua shida hii kwa kuketi wanawake kadhaa wachanga na kuongeza mashine kwenye meza. Wanawake wachanga walihamisha data kwa kila mmoja kwa maneno tu na kuweka nambari zinazohitajika kwenye mashine za kuongeza. Kwa hiyo, hasa, mageuzi ya wimbi la mlipuko lilihesabiwa. Kulikuwa na kazi nyingi, wanawake wachanga walikuwa wamechoka, na Alexander Andreevich alitembea kati yao na kuwatia moyo. Hii, mtu anaweza kusema, ilikuwa ya kwanza mfumo sambamba. Ingawa mahesabu ya bomu ya hidrojeni yalifanywa kwa ustadi, usahihi wao ulikuwa mdogo sana, kwa sababu kulikuwa na nodi chache kwenye gridi ya taifa iliyotumiwa, na wakati wa kuhesabu ulikuwa mrefu sana.



Usindikaji wa conveyor. Ni nini kinachohitajika kuongeza mbili nambari za kweli, iliyowakilishwa katika fomu ya hatua inayoelea? Idadi nzima ya shughuli ndogo kama vile kulinganisha agizo, upatanishi wa mpangilio, nyongeza ya mantissas, kuhalalisha, n.k. Wasindikaji wa kompyuta za kwanza walifanya "operesheni ndogo" hizi zote kwa kila jozi ya hoja, moja baada ya nyingine, hadi kufikia matokeo ya mwisho, na kisha tu kuendelea na usindikaji. jozi inayofuata masharti.

Wazo la usindikaji wa bomba ni kutenganisha hatua za mtu binafsi za kufanya operesheni ya jumla, na kila hatua, baada ya kumaliza kazi yake, itapitisha matokeo kwa inayofuata, wakati huo huo ikipokea sehemu mpya ya data ya pembejeo. Tunapata faida dhahiri katika kasi ya usindikaji kwa kuchanganya shughuli zilizopangwa hapo awali. Wacha tufikirie kuwa kuna shughuli ndogo tano katika operesheni, ambayo kila moja inafanywa kwa kitengo kimoja cha wakati. Ikiwa kuna kifaa kimoja cha serial kisichoweza kugawanywa, basi kitachakata jozi 100 za hoja katika vitengo 500. Ikiwa kila operesheni ndogo imegawanywa katika hatua tofauti (au vinginevyo inaitwa hatua) ya kifaa cha kupitisha, basi kwenye kitengo cha tano cha wakati, katika hatua tofauti za usindikaji wa kifaa kama hicho, jozi tano za kwanza za hoja zitapatikana. , na seti nzima ya jozi mia moja itasindika kwa 5 + 99 = vitengo 104 wakati - kuongeza kasi ikilinganishwa na kifaa cha serial ni karibu mara tano (kulingana na idadi ya hatua za conveyor).

Inaweza kuonekana kuwa usindikaji wa bomba unaweza kubadilishwa kwa mafanikio na usawa wa kawaida, ambao tunaiga kifaa kikuu mara nyingi kama idadi ya hatua za bomba zinapaswa kutengwa. Kwa kweli, vifaa vitano katika mfano uliopita vitashughulikia jozi 100 za hoja katika vitengo 100 vya muda, ambayo ni kasi zaidi kuliko wakati wa uendeshaji wa kifaa cha conveyor! Kuna nini? Jibu ni rahisi: kwa kuongeza idadi ya vifaa mara tano, tunaongeza kwa kiasi kikubwa kiasi cha vifaa na gharama yake. Hebu fikiria kwamba mmea wa gari uliamua kuondoa mstari wa mkutano wakati wa kudumisha kiwango cha uzalishaji wa gari. Ikiwa hapo awali kulikuwa na magari elfu kwenye mstari wa kusanyiko wakati huo huo, basi, kwa mfano na mfano uliopita, ni muhimu kuajiri timu elfu, ambayo kila moja (1) ina uwezo wa kukusanya gari kabisa tangu mwanzo. kumaliza, kufanya mamia ya aina tofauti za shughuli, na (2) kufanya hivyo kwa wakati ule ule ambao gari lilikuwa hapo awali kwenye mstari wa kusanyiko. Unaweza kufikiria gharama ya gari kama hilo? Hapana? Nakubali, ni vigumu, isipokuwa Lamborghini inakuja akilini, lakini ndiyo sababu usindikaji wa mstari wa mkutano ulitokea ...

Hesabu rahisi zinaonyesha kuwa usanidi wa mifumo kama hiyo unaweza kugharimu zaidi ya dola milioni moja za Kimarekani - kwa kufurahisha, kadiria ni kiasi gani, tuseme, gharama 4 tu za TB. kumbukumbu ya ufikiaji bila mpangilio? Maswali kadhaa ya asili hutokea: Ni kazi gani ni muhimu sana hivi kwamba zinahitaji kompyuta za mamilioni ya dola? Au, ni kazi gani ni ngumu sana kwamba Pentium nzuri haitoshi? Ningependa kupata majibu yanayofaa kwa maswali haya na sawa na hayo.

Ili kutathmini ugumu wa matatizo kutatuliwa katika mazoezi, hebu tuchukue maalum eneo la somo, kwa mfano, uboreshaji wa mchakato wa uzalishaji wa mafuta. Tuna hifadhi ya mafuta ya chini ya ardhi na idadi fulani ya visima vya kuchimba: moja inasukuma mafuta kwenye uso, na nyingine inasukuma maji nyuma. Ni muhimu kuiga hali katika hifadhi fulani ili kukadiria hifadhi ya mafuta au kuelewa haja ya visima vya ziada.

Tutakubali mpango uliorahisishwa ambapo eneo la mfano limechorwa katika mchemraba; hata hivyo, itatosha kukadiria idadi ya shughuli muhimu za hesabu. Saizi za mchemraba zinazofaa ambapo matokeo yanayokubalika yanaweza kupatikana ni 100*100*100 pointi. Katika kila hatua ya mchemraba, ni muhimu kuhesabu kutoka kwa kazi 5 hadi 20: vipengele vitatu vya kasi, shinikizo, joto, mkusanyiko wa vipengele (maji, gesi na mafuta - hii ni seti ya chini ya vipengele; katika mifano ya kweli zaidi, kwa mfano, sehemu tofauti za mafuta huzingatiwa). Zaidi ya hayo, maadili ya kazi hupatikana kwa kutatua hesabu zisizo za mstari, ambazo zinahitaji shughuli za hesabu 200 hadi 1000. Na hatimaye, ikiwa mchakato usio wa stationary unasomwa, i.e. unahitaji kuelewa jinsi mfumo huu unavyofanya kwa wakati, basi hatua za muda 100-1000 zinachukuliwa. Nini kimetokea:

10 6 (pointi za gridi)*10(kazi)*500(operesheni)*500(hatua za wakati) = 2.5*10 12

bilioni 2500 shughuli za hesabu kufanya hesabu moja tu! Vipi kuhusu kubadilisha vigezo vya mfano? Vipi kuhusu kufuatilia hali ya sasa wakati data ya uingizaji inabadilika? Mahesabu hayo lazima yafanyike mara nyingi, ambayo inaweka mahitaji magumu sana juu ya utendaji wa mifumo ya kompyuta inayotumiwa.

Mifano ya matumizi ya kompyuta kubwa inaweza kupatikana si tu katika sekta ya mafuta. Hapa kuna orodha ndogo tu ya maeneo ya shughuli za wanadamu ambapo utumiaji wa kompyuta kubwa ni muhimu sana:

  • sekta ya magari
  • uzalishaji wa mafuta na gesi
  • pharmacology
  • utabiri wa hali ya hewa na modeli za mabadiliko ya hali ya hewa
  • uchunguzi wa seismic
  • muundo wa kifaa cha elektroniki
  • awali ya nyenzo mpya
  • na wengine wengi

Mnamo 1995, mwili wa Nissan Maxima ulifanywa 10% ya nguvu zaidi kutokana na matumizi ya kompyuta kuu ya Cray (Jarida la Atlanta, Mei 28, 1995). Kwa msaada wake, sio tu pointi dhaifu za mwili zilipatikana, lakini pia zaidi njia ya ufanisi kuondolewa kwao.

Kulingana na Mark Miller (Kampuni ya Ford Motor), kufanya vipimo vya ajali, ambapo magari halisi hugonga ukuta wa zege wakati huo huo kupima vigezo muhimu, kupiga sinema na kisha kusindika matokeo, Ford ingehitaji kutoka kwa prototypes 10 hadi 150 za aina mpya na. jumla ya gharama kutoka $4 milioni hadi $60 milioni. Utumiaji wa kompyuta kubwa umepunguza idadi ya prototypes kwa theluthi moja.

Mfano wa hivi majuzi sana ni kutengenezwa kwa mojawapo ya mifumo mikubwa zaidi ya kuhifadhi nafasi duniani, Amadeus, inayotumiwa na maelfu ya mashirika yenye vituo 180,000 katika zaidi ya nchi mia moja. Ufungaji wa seva mbili za Hewlett-Packard T600 zenye vichakataji 12 kila moja ilifanya iwezekane kuongeza kiwango cha upatikanaji wa uendeshaji. mfumo wa kati hadi 99.85% na mzigo wa sasa wa maombi milioni 60 kwa siku.

Na mifano kama hiyo inaweza kupatikana kila mahali. Wakati mmoja, watafiti wa DuPont walikuwa wakitafuta mbadala wa klorofluorocarbon. Ilikuwa ni lazima kupata nyenzo ambazo zilikuwa na sifa nzuri sawa: zisizo na moto, upinzani wa kutu na sumu ya chini, lakini bila. madhara kwenye safu ya ozoni ya Dunia. Katika wiki moja zilifanyika mahesabu muhimu kwenye kompyuta kubwa yenye gharama ya jumla ya dola elfu 5. Kulingana na wataalamu wa DuPont, utumiaji wa mbinu za utafiti wa kimajaribio wa kimajaribio ungehitaji takribani miezi mitatu na dola elfu 50, na hii haizingatii muda unaohitajika ili kuunganisha na kutakasa kiasi kinachohitajika cha dutu hii.

Kuongeza utendaji wa kompyuta kwa sababu ya nini?

Kwa nini kompyuta kubwa huhesabu haraka sana? Kunaweza kuwa na chaguzi kadhaa za jibu, kati ya hizo mbili zina faida wazi: maendeleo ya msingi wa kipengele na matumizi ya ufumbuzi mpya katika usanifu wa kompyuta.

Wacha tujaribu kujua ni ipi kati ya sababu hizi inayoamua kufikia utendakazi wa rekodi. Wacha tugeukie ukweli wa kihistoria unaojulikana. Kwenye moja ya kompyuta za kwanza ulimwenguni - EDSAC, ambayo ilionekana mnamo 1949 huko Cambridge na ilikuwa na wakati wa saa wa microseconds 2 (sekunde 2 * 10-6), iliwezekana kufanya 2 * n shughuli za hesabu katika 18 * n milliseconds. , yaani, kwa wastani shughuli 100 za hesabu kwa sekunde. Wacha tulinganishe na nodi moja ya kompyuta ya kompyuta kuu ya kisasa ya Hewlett-Packard V2600: wakati wa saa ni takriban nanoseconds 1.8 (sekunde 1.8 * 10-9), na utendaji wa kilele ni karibu shughuli za hesabu bilioni 77 kwa sekunde.

Nini kinatokea? Zaidi ya nusu karne, utendaji wa kompyuta umeongezeka kwa zaidi ya milioni mia saba mara moja. Wakati huo huo, faida ya utendakazi inayohusishwa na kupunguza muda wa mzunguko wa saa kutoka sekunde 2 hadi nanoseconds 1.8 ni takriban mara 1000 pekee. Hayo mengine yalitoka wapi? Jibu ni dhahiri - matumizi ya ufumbuzi mpya katika usanifu wa kompyuta. Mahali kuu kati yao inachukuliwa na kanuni ya usindikaji wa data sambamba, ambayo inajumuisha wazo la utekelezaji wa wakati mmoja (sambamba) wa vitendo kadhaa.

Usindikaji wa data sambamba kwenye kompyuta

Usindikaji wa data sambamba, unaojumuisha wazo la utekelezaji wa wakati huo huo wa vitendo kadhaa, una aina mbili: bomba na usawa halisi. Aina zote mbili za usindikaji sambamba ni angavu, kwa hivyo tutatoa maelezo madogo tu.

Usindikaji Sambamba. Ikiwa kifaa fulani hufanya operesheni moja kwa kitengo cha wakati, basi kitafanya shughuli elfu katika vitengo elfu. Ikiwa tunadhania kuwa kuna vifaa vitano vinavyofanana vinavyoweza kufanya kazi wakati huo huo, basi mfumo wa vifaa vitano unaweza kufanya shughuli elfu sawa si kwa elfu, lakini kwa vitengo mia mbili vya wakati. Vile vile, mfumo wa vifaa vya N utafanya kazi sawa katika vitengo 1000/N vya wakati. Analogi zinazofanana zinaweza kupatikana katika maisha: ikiwa askari mmoja anachimba bustani kwa masaa 10, basi kampuni ya askari hamsini wenye uwezo sawa, wanaofanya kazi wakati huo huo, wataweza kukabiliana na kazi sawa katika dakika 12 - kanuni ya usawa katika hatua!

Kwa njia, mwanzilishi katika usindikaji sambamba wa mitiririko ya data alikuwa Msomi A.A. Samarsky, ambaye alifanya hesabu zinazohitajika kuiga milipuko ya nyuklia katika miaka ya 50 ya mapema. Samarsky alitatua shida hii kwa kuketi wanawake kadhaa wachanga na kuongeza mashine kwenye meza. Wanawake wachanga walihamisha data kwa kila mmoja kwa maneno tu na kuweka nambari zinazohitajika kwenye mashine za kuongeza. Kwa hiyo, hasa, mageuzi ya wimbi la mlipuko lilihesabiwa. Kulikuwa na kazi nyingi, wanawake wachanga walikuwa wamechoka, na Alexander Andreevich alitembea kati yao na kuwatia moyo. Huu, mtu anaweza kusema, ulikuwa mfumo wa kwanza wa sambamba. Ingawa mahesabu ya bomu ya hidrojeni yalifanywa kwa ustadi, usahihi wao ulikuwa mdogo sana, kwa sababu kulikuwa na nodi chache kwenye gridi ya taifa iliyotumiwa, na wakati wa kuhesabu ulikuwa mrefu sana.

Usindikaji wa conveyor. Ni nini kinachohitajika ili kuongeza nambari mbili halisi zinazowakilishwa katika fomu ya sehemu inayoelea? Shughuli nyingi ndogo ndogo kama vile kulinganisha maagizo, kupanga maagizo, kuongeza mantissas, kurekebisha, n.k. Wasindikaji wa kompyuta za kwanza walifanya "operesheni ndogo" hizi zote kwa kila jozi ya hoja, moja baada ya nyingine, hadi kufikia matokeo ya mwisho, na kisha tu kuendelea na mchakato wa masharti ya pili.

Wazo la usindikaji wa bomba ni kutenganisha hatua za mtu binafsi za kufanya operesheni ya jumla, na kila hatua, baada ya kumaliza kazi yake, itapitisha matokeo kwa inayofuata, wakati huo huo ikipokea sehemu mpya ya data ya pembejeo. Tunapata faida dhahiri katika kasi ya usindikaji kwa kuchanganya shughuli zilizopangwa hapo awali. Wacha tufikirie kuwa kuna shughuli ndogo tano katika operesheni, ambayo kila moja inafanywa kwa kitengo kimoja cha wakati. Ikiwa kuna kifaa kimoja cha serial kisichoweza kugawanywa, basi kitachakata jozi 100 za hoja katika vitengo 500. Ikiwa kila operesheni ndogo imegawanywa katika hatua tofauti (au vinginevyo inaitwa hatua) ya kifaa cha kupitisha, basi kwenye kitengo cha tano cha wakati, katika hatua tofauti za usindikaji wa kifaa kama hicho, jozi tano za kwanza za hoja zitapatikana. , na seti nzima ya jozi mia moja itasindika kwa 5 + 99 = vitengo 104 wakati - kuongeza kasi ikilinganishwa na kifaa cha serial ni karibu mara tano (kulingana na idadi ya hatua za conveyor).

Inaweza kuonekana kuwa usindikaji wa bomba unaweza kubadilishwa kwa mafanikio na usawa wa kawaida, ambao tunaiga kifaa kikuu mara nyingi kama idadi ya hatua za bomba zinapaswa kutengwa. Kwa kweli, vifaa vitano katika mfano uliopita vitashughulikia jozi 100 za hoja katika vitengo 100 vya muda, ambayo ni kasi zaidi kuliko wakati wa uendeshaji wa kifaa cha conveyor! Kuna nini? Jibu ni rahisi: kwa kuongeza idadi ya vifaa mara tano, tunaongeza kwa kiasi kikubwa kiasi cha vifaa na gharama yake. Hebu fikiria kwamba mmea wa gari uliamua kuondoa mstari wa mkutano wakati wa kudumisha kiwango cha uzalishaji wa gari. Ikiwa hapo awali kulikuwa na magari elfu kwenye mstari wa kusanyiko wakati huo huo, basi, kwa mfano na mfano uliopita, ni muhimu kuajiri timu elfu, ambayo kila moja (1) ina uwezo wa kukusanya gari kabisa tangu mwanzo. kumaliza, kufanya mamia ya aina tofauti za shughuli, na (2) kufanya hivyo kwa wakati ule ule ambao gari lilikuwa hapo awali kwenye mstari wa kusanyiko. Unaweza kufikiria gharama ya gari kama hilo? Hapana? Nakubali, ni vigumu, isipokuwa Lamborghini inakuja akilini, lakini ndiyo sababu usindikaji wa mstari wa mkutano ulitokea ...

Historia fupi ya Kuibuka kwa Usambamba katika Usanifu wa Kompyuta

Leo, usawa katika usanifu wa kompyuta utashangaza watu wachache. Microprocessors zote za kisasa, iwe Pentium III au PA-8700, MIPS R14000, E2K au Power3, tumia aina moja au nyingine ya usindikaji sambamba. Katika msingi wa Pentium 4, hadi shughuli ndogo 126 zinaweza kuwa wakati huo huo katika hatua tofauti za utekelezaji. Katika maonyesho ya chips mpya na katika matoleo ya vyombo vya habari kutoka kwa mashirika, hii inawasilishwa kama neno la mwisho teknolojia na makali ya sayansi, na hii ni kweli kesi kama sisi kuzingatia utekelezaji wa kanuni hizi katika miniature mipaka ya kioo moja.

Wakati huo huo, mawazo haya yenyewe yalionekana muda mrefu sana uliopita. Hapo awali, zilitekelezwa katika kompyuta za hali ya juu zaidi, na kwa hivyo moja, za wakati wao. Kisha, baada ya maendeleo sahihi ya teknolojia na uzalishaji wa bei nafuu, walikwenda kwenye kompyuta za kati, na hatimaye leo hii yote imejumuishwa kikamilifu katika vituo vya kazi na kompyuta za kibinafsi.

Kuhakikisha kwamba ubunifu wote kuu katika usanifu wasindikaji wa kisasa kwa kweli, zimetumika tangu wakati ambapo hakuna microprocessors wala dhana ya kompyuta kubwa haikuwepo;

IBM 701 (1953), IBM 704 (1955): kumbukumbu kidogo-sambamba, hesabu kidogo-sambamba.
Kompyuta zote za kwanza kabisa (EDSAC, EDVAC, UNIVAC) zilikuwa na kumbukumbu ya mfuatano kidogo, ambayo maneno yalisomwa kwa kufuatana kidogo kidogo. Kwanza kibiashara kompyuta inayopatikana, kwa kutumia kumbukumbu kidogo-sambamba (kwenye CRT) na hesabu ya sambamba kidogo, ilikuwa IBM 701, na mfano maarufu zaidi ulikuwa IBM 704 (nakala 150 zilizouzwa), ambayo, pamoja na hapo juu, ilikuwa ya kwanza kutumia kumbukumbu. kwenye viini vya ferrite na sehemu ya kuelea ya vifaa vya AC.

IBM 709 (1958): wasindikaji huru wa I/O.
Wachakataji wa kompyuta za kwanza walisimamia pembejeo/pato wenyewe. Hata hivyo, kasi ya kifaa cha nje cha kasi zaidi, ambacho wakati huo kilikuwa mkanda wa sumaku, ilikuwa mara 1000 chini ya kasi ya processor, hivyo processor ilikuwa kimsingi bila kazi wakati wa shughuli za I/O. Mnamo 1958 Kwa Kompyuta ya IBM 704 iliambatanisha wasindikaji 6 wa pembejeo/pato huru, ambayo, baada ya kupokea amri, inaweza kufanya kazi sambamba na processor kuu, na kompyuta yenyewe iliitwa IBM 709. Mfano huu ilifanikiwa kwa kushangaza, kwani nakala 400 ziliuzwa pamoja na marekebisho, na ya mwisho ilizimwa mnamo 1975 - miaka 20 ya kuwepo!

IBM STRETCH (1961): kuangalia mbele, kumbukumbu striping.
Mnamo 1956, IBM ilisaini mkataba na Maabara ya Kisayansi ya Los Alamos kutengeneza kompyuta ya STRETCH, ambayo ina mambo mawili ya kimsingi. vipengele muhimu: Angalia kwa ajili ya kuleta maelekezo na kuweka kumbukumbu katika benki mbili ili kukidhi kasi ya chini ya uchukuaji wa kumbukumbu na kasi ya utekelezaji.

ATLAS (1963): bomba la amri.
Kanuni ya conveyor ya utekelezaji wa amri ilitumiwa kwanza katika mashine ya ATLAS, iliyotengenezwa katika Chuo Kikuu cha Manchester. Utekelezaji wa amri umegawanywa katika hatua 4: uchukuaji wa maagizo, hesabu ya anwani, uchukuaji wa operesheni, na utekelezaji wa operesheni. Uwekaji bomba ulifanya iwezekane kupunguza muda wa utekelezaji wa amri kutoka 6 μs hadi 1.6 μs. Kompyuta hii ilikuwa na athari kubwa kwa usanifu wa kompyuta na programu: ilikuwa ya kwanza kutumia OS ya programu nyingi kulingana na utumiaji wa kumbukumbu ya kawaida na mfumo wa kukatiza.

CDC 6600 (1964): vifaa vya kazi vya kujitegemea.
Shirika la Data la Kudhibiti (CDC), kwa ushiriki wa moja kwa moja wa mmoja wa waanzilishi wake, Seymour R. Cray, hutoa kompyuta ya CDC-6600 - kompyuta ya kwanza ambayo ilitumia vitengo kadhaa vya kazi vya kujitegemea. Kwa kulinganisha na leo, hapa kuna vigezo vya kompyuta:

  • muda wa saa 100ns,
  • utendaji kazi milioni 2-3 kwa sekunde,
  • RAM imegawanywa katika benki 32 za maneno 4096 60-bit,
  • mzunguko wa kumbukumbu 1µs,
  • Vitengo 10 vya kazi vya kujitegemea.
Mashine hiyo ilikuwa mafanikio makubwa katika soko la kisayansi, ikiondoa kikamilifu mashine kutoka kwa IBM.

CDC 7600 (1969): vifaa vya kazi vya conveyor huru.
CDC inatoa kompyuta ya CDC-7600 iliyo na vitengo vinane vya utendaji vilivyo na bomba - mchanganyiko wa usindikaji sambamba na bomba. Vigezo kuu:

  • saa 27.5 ns,
  • Operesheni milioni 10-15 kwa sekunde,
  • 8 vitengo vya conveyor,
  • Kumbukumbu ya ngazi 2.

ILLIAC IV (1974): wasindikaji wa matrix.

Mradi: vipengele 256 vya processor (PE) = 4 quadrants ya 64PE, reconfigurability: 2 roboduara ya 128PE au 1 roboduara ya 256PE, mzunguko wa saa 40ns, utendaji 1Gflop;

kazi ilianza mnamo 1967, hadi mwisho wa 1971 mfumo wa roboduara 1 ulitengenezwa, mnamo 1974. ilianza kutumika, urekebishaji mzuri ulifanyika hadi 1975;

sehemu ya kati: kifaa cha kudhibiti (CU) + matrix ya 64 PE;

  • Kitengo cha kudhibiti ni kompyuta rahisi na utendaji wa chini unaodhibiti matrix ya PE; matrices yote ya PE yalifanya kazi katika hali ya synchronous, kutekeleza kwa kila wakati amri sawa iliyopokea kutoka kwa kitengo cha kudhibiti, lakini kwa data zao wenyewe;
  • PE ilikuwa na ALU yake na seti kamili ya maagizo, OP - 2Kwords ya bits 64, mzunguko wa kumbukumbu 350ns, kila PE ilikuwa na upatikanaji wa moja kwa moja tu kwa OP yake;
  • mtandao wa usambazaji wa data: torus ya pande mbili na mabadiliko ya usawa ya 1 kando ya mpaka;

Licha ya matokeo kwa kulinganisha na mradi: gharama ni mara 4 zaidi, quadrant 1 tu inafanywa, mzunguko wa saa ni 80ns, tija halisi ni hadi 50Mflop - mradi huu ulikuwa na athari kubwa katika usanifu wa mashine zilizofuata zilizojengwa. kanuni sawa, hasa: PEPE, BSP ,ICL DAP.

Utawala wa kumbukumbu.
Utawala wa kumbukumbu hauhusiani moja kwa moja na usawa, hata hivyo, kwa hakika inahusu sifa hizo za usanifu wa kompyuta ambazo zina umuhimu mkubwa kwa kuongeza utendaji wao (kupunguza tofauti kati ya kasi ya processor na muda wa kufikia kumbukumbu). Viwango kuu: rejista, kumbukumbu ya kashe, RAM, kumbukumbu ya diski. Wakati wa sampuli kwa viwango vya kumbukumbu kutoka kwa kumbukumbu ya diski hadi rejista hupungua, gharama kwa neno 1 (byte) huongezeka. Hivi sasa, uongozi kama huo unasaidiwa hata kwenye kompyuta za kibinafsi.

Ni nini kinachotumika ulimwenguni sasa?

Maendeleo ya teknolojia ya utendakazi wa hali ya juu yanafanyika katika mwelekeo gani kwa sasa? Kuna njia nne kuu.

Tuseme kwamba katika programu yako sehemu ya shughuli zinazohitaji kutekelezwa kwa mpangilio ni f, ambapo 0

Ikiwa 9/10 ya programu inatekelezwa sambamba, na 1/10 bado ni mlolongo, basi kimsingi haiwezekani kufikia kasi ya zaidi ya mara 10, bila kujali ubora wa utekelezaji wa sehemu inayofanana ya kanuni na kanuni. idadi ya wasindikaji kutumika (ni wazi kwamba 10 hupatikana tu ikiwa kesi wakati wakati wa utekelezaji wa sehemu sambamba ni 0).

Wacha tuangalie shida kutoka upande mwingine: ni sehemu gani ya nambari inayohitaji kuharakishwa (na kwa hivyo kuchunguzwa hapo awali) ili kupata kuongeza kasi maalum? Jibu linaweza kupatikana katika muhtasari wa sheria ya Amdahl: ili kuharakisha utekelezaji wa programu katika q nyakati ni muhimu kuharakisha si chini ya q mara si chini ya (1-1/ q) sehemu ya programu. Kwa hivyo, ikiwa unataka kuharakisha programu kwa mara 100 ikilinganishwa na toleo lake la mlolongo, basi unahitaji kupata kasi ya chini kwa angalau 99.99% ya nambari, ambayo karibu kila wakati hufanya sehemu muhimu ya programu!

Kwa hivyo hitimisho la kwanza - kabla ya kurekebisha tena msimbo ili kubadili kompyuta sambamba (na kompyuta kubwa yoyote, haswa, ni kama hiyo), unahitaji kufikiria kwa uangalifu. Ikiwa, baada ya kutathmini algorithm iliyoingia kwenye programu, umegundua kuwa idadi ya shughuli za mlolongo ni kubwa, basi huwezi kutegemea kasi kubwa na unahitaji kufikiria juu ya kuchukua nafasi. vipengele vya mtu binafsi algorithm.

Katika hali nyingine, asili ya mpangilio wa algorithm sio ngumu sana kubadilika. Wacha tuseme kwamba programu ina sehemu ifuatayo ya kuhesabu jumla ya nambari za n:

S = 0 Je, i = 1, n s = s + a(i) EndDo (hilo linaweza kufanywa katika lugha nyingine yoyote)

Kwa asili yake, ni mlolongo madhubuti, kwani katika i-th iteration ya kitanzi matokeo kutoka (i-1) yanahitajika na marudio yote yanafanywa moja baada ya nyingine. Tuna 100% ya utendakazi wa mfuatano, ambayo inamaanisha hakuna athari kutoka kwa kutumia kompyuta sambamba. Wakati huo huo, njia ya nje ni dhahiri. Kwa kuwa katika programu nyingi za kweli (swali: kwa nini kwa wengi, na sio wote?) Hakuna tofauti kubwa katika utaratibu gani nambari zinaongezwa, tutachagua mpango tofauti wa kuongeza. Kwanza, tunapata jumla ya jozi za vipengele vya jirani: a(1)+a(2), a(3)+a(4), a(5)+a(6), n.k. Kumbuka kwamba kwa mpango huu, jozi zote zinaweza kuongezwa wakati huo huo! Katika hatua zifuatazo tutatenda kwa njia sawa, kupata toleo la algorithm inayofanana.

Inaweza kuonekana ndani kwa kesi hii matatizo yote yalitatuliwa. Lakini fikiria kwamba wasindikaji wanaopatikana kwako ni tofauti katika utendaji wao. Hii inamaanisha kutakuwa na wakati ambapo baadhi yao bado wanafanya kazi, wakati wengine tayari wamefanya kila kitu na kusimama bila maana. Ikiwa mtawanyiko katika utendaji wa kompyuta ni mkubwa, basi ufanisi wa mfumo mzima na mzigo hata wa processor utakuwa chini sana.

Lakini hebu tuende zaidi na kudhani kwamba wasindikaji wote ni sawa. Je, matatizo yamekwisha? Hapana tena! Wasindikaji wamekamilisha kazi yao, lakini matokeo lazima yahamishwe kwa mwingine ili kuendelea na mchakato wa majumuisho ... na uhamisho huchukua muda ... na kwa wakati huu wasindikaji hawana kazi tena ...

Kwa kifupi, fanya mfumo wa kompyuta sambamba au kompyuta kuu kufanya kazi nayo ufanisi mkubwa Kwa mpango maalum, hii, kusema ukweli, sio kazi rahisi, kwani ni muhimu kuratibu kwa uangalifu muundo wa programu na algorithms na sifa za usanifu wa mifumo ya kompyuta sambamba.

Swali la mwisho. Je, unadhani taarifa hiyo ni kweli: kuliko kompyuta yenye nguvu zaidi, haraka tatizo hili linaweza kutatuliwa juu yake?

Jibu la mwisho. Hapana, hiyo si kweli. Hii inaweza kuelezewa na mfano rahisi wa kila siku. Ikiwa mchimbaji mmoja humba shimo 1m * 1m * 1m kwa saa 1, basi wachimbaji wawili sawa watafanya hivyo kwa dakika 30 - unaweza kuamini. Itachukua muda gani wachimbaji 60 kufanya kazi hii? Katika dakika 1? Bila shaka hapana! Kuanzia hatua fulani, wataingiliana tu kwa kila mmoja, sio kuharakisha, lakini kupunguza kasi ya mchakato. Ni sawa katika kompyuta: ikiwa kazi ni ndogo sana, basi tutatumia muda mwingi kusambaza kazi, mchakato wa kusawazisha, kukusanya matokeo, nk, kuliko kazi muhimu moja kwa moja.

Ni wazi kuwa sio kila kitu ni rahisi sana ...

Maabara ya Sambamba Teknolojia ya habari, Kituo cha Utafiti cha Kompyuta MSU

1.2 Usindikaji wa data sambamba

1.2.1 Uwezekano wa kimsingi wa usindikaji sambamba

Takriban algorithms zote zilizotengenezwa hadi sasa zinafuatana. Kwa mfano, wakati wa kutathmini usemi a + b × c, lazima kwanza ufanye kuzidisha na kisha tu uongeze. Ikiwa kompyuta za elektroniki zina nodi za kuongeza na kuzidisha ambazo zinaweza kufanya kazi wakati huo huo, basi katika kesi hii nodi ya kuongeza itakuwa bila kazi kusubiri nodi ya kuzidisha kukamilisha kazi yake. Inawezekana kuthibitisha taarifa kwamba inawezekana kujenga mashine ambayo itashughulikia algorithm iliyotolewa kwa sambamba.

Inawezekana kujenga wasindikaji m kwamba, wakati kazi ya wakati mmoja suala matokeo yaliyotarajiwa katika mzunguko wa saa moja ya kompyuta.

Mashine kama hizo za "multiprocessor" zinaweza kujengwa kinadharia kwa kila algoriti maalum na inaonekana "kupita" asili ya mpangilio wa algoriti. Walakini, sio kila kitu ni rahisi sana - kuna algorithms nyingi maalum, kwa hivyo hoja ya kufikirika iliyoandaliwa hapo juu haihusiani moja kwa moja na umuhimu wa vitendo. Maendeleo yao yalitushawishi juu ya uwezekano mkubwa wa usawazishaji, iliunda msingi wa dhana ya usawa usio na kikomo, na ilifanya iwezekane kuzingatia kutoka kwa mtazamo wa jumla utekelezaji wa kinachojulikana mazingira ya kompyuta - mifumo ya multiprocessor iliyosanidiwa kwa nguvu kwa algorithm maalum.

1.2.2 Mifano ya mukhtasari kompyuta sambamba

Mfano wa kompyuta sambamba hutoa mbinu ya hali ya juu ya uhusikaji na ulinganisho wa wakati wa kukimbia programu mbalimbali, huku ukiondoa vifaa na maelezo ya utekelezaji. Kwanza mfano muhimu kompyuta sambamba ilianzishwa na mashine sambamba ya ufikiaji nasibu (PRAM - Mashine ya Ufikiaji wa Nasibu Sambamba), ambayo hutoa uondoaji wa mashine ya kumbukumbu iliyoshirikiwa (PRAM ni kiendelezi cha RAM - modeli ya Mashine ya Ufikiaji Nasibu ya mashine ya ufikiaji bila mpangilio). Muundo wa BSP (Bulk Synchronous Parallel) unachanganya vifupisho vya kumbukumbu vilivyoshirikiwa na kusambazwa. Wasindikaji wote wanadhaniwa kutekeleza maagizo kwa usawa; katika kesi ya kutekeleza maagizo sawa, PRAM ni mashine ya kufikirika ya SIMD (SIMD - Mkondo wa Maelekezo Moja / Mkondo wa Data Nyingi - mkondo mmoja wa maagizo pamoja na mtiririko wa data nyingi), hata hivyo, wasindikaji wanaweza kutekeleza maagizo tofauti. Amri kuu ni kusoma kutoka kwa kumbukumbu, kuandika kwa kumbukumbu na mantiki ya kawaida na shughuli za hesabu.

Mfano wa PRAM umeboreshwa kwa maana kwamba kila kichakataji kinaweza kufikia eneo lolote la kumbukumbu wakati wowote (Shughuli za Andika zinazofanywa na kichakataji kimoja zinaonekana kwa wasindikaji wengine wote kwa mpangilio ambao zilifanywa, lakini huandika na wasindikaji tofauti, inaweza kuonekana kwa mpangilio wowote). Kwa mfano, kila kichakataji katika PRAM kinaweza kusoma data kutoka kwa seli ya kumbukumbu au kuandika data kwa seli moja. Juu ya mashine halisi sambamba hii, bila shaka, haifanyiki, kwani moduli za kumbukumbu ni kiwango cha kimwili panga ufikiaji wa seli sawa ya kumbukumbu. Aidha, muda wa upatikanaji wa kumbukumbu kwenye mashine halisi si sawa kutokana na kuwepo kwa cache na iwezekanavyo shirika la kihierarkia moduli za kumbukumbu.

Mtindo wa msingi wa PRAM unaauni wakati huo huo (katika muktadha huu sambamba) kusoma na kuandika. Miundo ndogo ya PRAM inajulikana ambayo inazingatia sheria zinazoruhusu kuzuia hali za migogoro wakati wasindikaji kadhaa wanafikia wakati huo huo. kumbukumbu iliyoshirikiwa.

Nadharia ya Brent inaturuhusu kuiga mizunguko ya vipengee vya utendaji kwa kutumia mashine sambamba za ufikiaji bila mpangilio (PRAMs). Vipengele vya kufanya kazi vinaweza kufanya kama 4 kuu (kutekeleza shughuli za kimantiki SI, NA, AU, XOR - kukanusha, kimantiki NA, kimantiki AU na ya kipekee AU, mtawalia), ngumu zaidi NAND na NOR (NAND na NOR), na utata wowote.

Katika kile kinachofuata, inadhaniwa kuwa kucheleweshwa (yaani, wakati wa majibu - wakati ambao maadili ya ishara yaliyokusudiwa yanaonekana kwenye matokeo ya kitu baada ya maadili kuanzishwa) ni sawa kwa vipengele vyote vya kazi.

Tunazingatia mzunguko wa vitu vya kufanya kazi vilivyounganishwa bila kuunda mizunguko (tunadhani kwamba vipengele vya kazi kuwa na idadi yoyote ya pembejeo, lakini pato moja - kipengele kilicho na matokeo kadhaa kinaweza kubadilishwa na vipengele kadhaa na pato moja). Idadi ya pembejeo huamua nguvu ya pembejeo ya kipengele, na idadi ya pembejeo ambayo pato la kipengele huunganishwa huamua nguvu zake za pato. Kwa kawaida inachukuliwa kuwa nguvu za pembejeo za vipengele vyote vinavyotumiwa zimefungwa kutoka juu, lakini nguvu za pato zinaweza kuwa yoyote. Saizi ya mzunguko inahusu idadi ya vitu ndani yake, idadi kubwa zaidi vipengele kwenye njia kutoka kwa pembejeo za mzunguko hadi pato la kipengele huitwa kina cha kipengele hiki (kina cha mzunguko ni sawa na kina cha kina cha vipengele vyake vinavyohusika).

Mchoro 1. Uigaji wa saizi ya 15, kina cha 5 na wasindikaji wawili kwa kutumia mashine ya kupata bila mpangilio sambamba (mashine ya PRAM)

Kielelezo cha 1 kinaonyesha matokeo ya kuiga saizi ya mzunguko (jumla ya idadi ya wasindikaji) n=15 na kina cha mzunguko ( idadi ya juu vipengele katika kila ngazi ya kina) d=5 na idadi ya wasindikaji p=2 (vipengee vilivyoigizwa kwa wakati mmoja vinajumuishwa katika vikundi na maeneo ya mstatili, na kwa kila kikundi hatua ambayo vipengele vyake huigwa huonyeshwa; uigaji hutokea kwa mfuatano kutoka juu hadi juu. chini kwa mpangilio unaoongezeka wa kina, kwa kila kina p vipande kwa wakati mmoja). Kulingana na nadharia ya Brent, kuiga mpango kama huo hautachukua zaidi ya ceil(15/2+1)=9 hatua.

Chini ya muda usindikaji sambamba tutaelewa utekelezaji wa wakati huo huo wa kazi, hatua za kazi (vitu), programu, subroutines, loops, waendeshaji na amri. Usindikaji wa habari sambamba unaweza kutumika kwa madhumuni mawili kuu:

1. Kuongeza tija ya kompyuta na ndege si kwa kuboresha msingi wa kipengele, lakini kupitia shirika la ufanisi la michakato ya kompyuta.

2. Kuhakikisha kuegemea juu kwa ndege kwa kunakili vifaa vya kompyuta.

Mchele. 5.1. Viwango vya usawa

Kuongeza utendaji wa kompyuta na kompyuta ni lengo kuu la kutumia usindikaji sambamba;

Usindikaji wa habari sambamba unaweza kufanyika katika ngazi kadhaa (Mchoro 5.1).

Kwa wazi, chini ya ngazi, finer kusagwa michakato ya programu, ndogo, kama wanasema, " nafaka ya usawa" Kwa ujumla, inawezekana kutekeleza usawa wote kwa kiwango kimoja na kwa kadhaa wakati huo huo. Usindikaji wa kujitegemea wa mchakato mmoja hutekeleza usawa katika ngazi ya 1. Usindikaji wa Vector una utekelezaji wa sambamba wa loops katika ngazi ya 2 na inaweza kufanywa kwa wasindikaji mmoja au kadhaa. Viwango vya 3 na 4 vinahusiana na kompyuta nyingi. Usambamba wa kiwango cha 5 ni kawaida kwa mifumo ya kompyuta ya mashine nyingi.



Kuna njia mbili kuu za kupanga usindikaji sambamba:

· Mchanganyiko wa wakati wa hatua za suluhisho kazi mbalimbali;

· suluhisho la wakati mmoja kazi mbalimbali au sehemu za kazi moja;

Njia ya kwanza- kuchanganya kwa wakati hatua za kutatua matatizo tofauti ni usindikaji wa programu nyingi habari. Usindikaji wa programu nyingi kwa muda mrefu umetumika sana kuboresha utendaji wa kompyuta na kompyuta. Mjadala wa kina wa usindikaji wa programu nyingi unarejelea mada " Mfumo wa Uendeshaji"na huenda zaidi ya upeo wa kitabu hiki.

Njia ya pili- ufumbuzi wa wakati huo huo wa kazi mbalimbali au sehemu za kazi moja - inawezekana tu ikiwa kuna vifaa kadhaa vya usindikaji. Katika kesi hii, vipengele fulani vya kazi au mtiririko wa kazi hutumiwa, ambayo inaruhusu usawa.

Aina zifuatazo za usawa zinaweza kutofautishwa, kuruhusu utekelezaji wa vipengele vya algorithmic vya kazi za kibinafsi na nyuzi zao.

1. Usambamba wa asili wa kazi za kujitegemea.

2. Usambamba wa vitu au data.

3. Usambamba wa matawi ya kazi au programu.

Hebu tuangalie aina hizi za usambamba.

1. Usambamba wa asili wa kazi za kujitegemea iko katika ukweli kwamba mkondo unaoendelea wa kazi zisizohusiana hupokelewa kwa pembejeo ya mfumo wa kompyuta, i.e. suluhisho la tatizo lolote halitegemei matokeo ya kutatua matatizo mengine. Katika kesi hiyo, matumizi ya vifaa kadhaa vya usindikaji na njia yoyote ya kuunganisha (kuunganishwa kwenye mfumo) huongeza utendaji wa mfumo.

Mfano wa kawaida wa usawa wa asili ni kuwasili kwa maombi ya mtumiaji kwenye tovuti ya habari. Kila ombi hutoa utaratibu tofauti wa utekelezaji wake, ambao hautegemei taratibu zingine zinazofanana.

2. Usambamba wa kitu au data hutokea wakati mpango huo huo (au karibu sawa) unapaswa kusindika seti fulani ya data inayoingia kwenye mfumo wakati huo huo.

Hizi zinaweza kuwa, kwa mfano, kazi za usindikaji wa ishara kutoka kwa kituo cha rada: ishara zote zinasindika kwa kutumia programu sawa. Mfano mwingine ni usindikaji wa habari kutoka kwa sensorer ambazo hupima wakati huo huo parameter sawa na imewekwa kwenye vitu kadhaa sawa.

Mipango ya aina hii inaweza kuwa ya ukubwa tofauti na utata, kuanzia rahisi sana yenye shughuli kadhaa hadi programu kubwa katika mamia na maelfu ya shughuli. Katika kesi hii, utekelezaji sambamba wa shughuli unapatikana kwa kuongeza idadi ya vifaa vya usindikaji, ambayo kila moja ina uwezo wa kutekeleza kwa uhuru mlolongo wa amri kwenye seti tofauti ya data. Mara nyingi kipengele kikuu cha programu kama hizo (haswa programu za usindikaji wa vekta na matiti) ni kwamba amri sawa lazima itekelezwe kwenye mkusanyiko mkubwa wa data ya msingi iliyounganishwa kwa njia fulani, na operesheni inayolingana inaweza kufanywa kwa data zote wakati huo huo. Katika kesi hii, wakati wa kutatua shida hupunguzwa kulingana na idadi ya vifaa vya usindikaji.

3. Usambamba wa matawi ya kazi au programu- moja ya aina za kawaida za usawa katika usindikaji wa habari. Iko katika ukweli kwamba wakati wa kutatua tatizo moja, sehemu zake za kibinafsi zinaweza kutenganishwa - matawi, ambayo, mbele ya vifaa kadhaa vya usindikaji, yanaweza kutekelezwa kwa sambamba. Katika kesi hii, tu matawi ya kujitegemea kazi, i.e. sehemu zake ambazo masharti yafuatayo yanatimizwa:

· hakuna maadili ya pato la matawi haya ya shida ni dhamana ya pembejeo kwa tawi lingine kama hilo (ukosefu wa miunganisho ya kazi);

· masharti ya kutekeleza tawi moja hayategemei matokeo au sifa zilizopatikana wakati wa utekelezaji wa matawi mengine (kudhibiti uhuru).

Wazo nzuri la usawa wa matawi hutolewa na fomu ya tier-sambamba (LPF) ya programu, mfano ambao unaonyeshwa kwenye Mtini. 5.2.

Mpango huo unawasilishwa kwa namna ya seti ya matawi iko katika ngazi kadhaa - tiers. Miduara iliyo na nambari ndani inaonyesha matawi. Urefu wa tawi unawakilishwa na nambari iliyo karibu na mduara na inaelezea ni vitengo vya saa ngapi tawi hili linatekelezwa. Mishale huonyesha data ya ingizo na matokeo ya kuchakata. Data ya pembejeo inaonyeshwa na ishara X, data ya pato kwa ishara Y. Alama za X zina fahirisi za chini za dijiti zinazoonyesha nambari za idadi ya pembejeo; Alama za Y zina fahirisi za kidijitali chini na juu; nambari iliyo juu inalingana na nambari ya tawi wakati matokeo yaliyotolewa yalipatikana, na nambari iliyo chini inamaanisha nambari ya serial ya matokeo yaliyopatikana wakati wa utekelezaji wa tawi hili la programu. Matawi ya kazi ya kujitegemea ambayo hayahusiani na kila mmoja yanawekwa kwenye safu moja, i.e. matokeo ya kutatua tawi lolote la daraja fulani sio data ya kuingiza kwa tawi lingine la kiwango sawa.

Mchele. 5.2. Mfano wa fomu ya mpango wa tiered-sambamba

Imeonyeshwa kwenye Mtini. 5.2 programu ina matawi 9 yaliyo kwenye tiers 3. Kutumia programu hii kwa ujumla rahisi kama mfano, mtu anaweza kutambua faida za mfumo wa kompyuta unaojumuisha vifaa kadhaa vya usindikaji, na shida zinazotokea.

Wacha tufikirie kuwa urefu i tawi la th linawakilishwa na idadi ya vitengo vya wakati t i ambazo zinahitajika kwa utekelezaji wake. Basi ni rahisi kuhesabu kuwa itachukua muda kutekeleza programu nzima kwenye processor 1 T 1:

T 1=S (10+20+15+30+55+10+15+25+15)=195

Ikiwa tunafikiri kwamba programu inatekelezwa na vifaa viwili vya usindikaji (wasindikaji) wanaofanya kazi kwa kujitegemea, basi wakati unaohitajika kutatua tatizo utapungua. Walakini, wakati huu, kama ni rahisi kuona, itatofautiana kulingana na mlolongo wa utekelezaji wa matawi huru.

Fikiria, kwa mfano, toleo hili la programu iliyoonyeshwa kwenye Mtini. 5.2. Acha kichakataji 1 kitekeleze matawi 1-3-4-6-7-9, na kichakataji 2 kitekeleze matawi 2-5-8. Katika Mtini. Mchoro 5.3 unaonyesha michoro ya muda ya utekelezaji wa processor ya matawi ya programu.

Mchele. 5.3. Mtengano wa matawi ya programu kwenye vichakataji 2

Ni rahisi kuhesabu kwamba processor 1 hutumia 105, na processor 2 - 100 vitengo vya muda. Katika kesi hii, kuna vipindi viwili vya wakati ambapo mmoja wa wasindikaji analazimika kufanya kazi - P1 na muda wa vitengo 10 na P2 na muda wa vitengo 5 vya muda. Muda wa P1, wakati ambapo processor 2 tu inafanya kazi, iliundwa kutokana na ukweli kwamba tawi la 7 linategemea tawi la 5 (wakati tawi la 6 limekamilika, data Y 5 1 bado haijawa tayari). Muda wa P1, wakati ambao processor 1 pekee hufanya kazi, iliundwa kwa sababu ya mwisho wa kuhesabu na processor 2.

Kwa hivyo, kwenye mfumo wa wasindikaji wawili, programu yetu itatekelezwa kikamilifu katika si chini ya vitengo 105 vya muda. Thamani inayoonyesha kupunguzwa kwa muda unaohitajika kutatua tatizo kwenye vichakataji kadhaa ikilinganishwa na kutumia kichakataji kimoja inaitwa. kuongeza kasi ya kuhesabu S na kuhesabu kama

Mgawo wa ulinganifu hutofautiana kutoka 0 hadi 1 (kutoka 0 hadi 100%) na huonyesha ufanisi wa kutumia rasilimali za kompyuta. Katika mfano wetu ni rahisi kuhesabu kwamba kuongeza kasi S= 195/105 = 1.86, na kipengele cha kusawazisha K uk= 0.93. Kama tunavyoona, kwa sababu ya kupunguzwa kwa moja ya wasindikaji, kasi ya hesabu ni chini ya 2, i.e. idadi ya wasindikaji kutumika. Kumbuka kuwa katika mfano wetu, ucheleweshaji wa wakati unaohusishwa na kubadilisha miktadha ya programu (kubadilisha matawi) na uhamishaji wa data kutoka tawi moja hadi lingine haukuzingatiwa. Hata hivyo, kutokana na vipengele vya algorithmic ya programu, sehemu ya mahesabu katika vipindi P1 na P2 inafanywa na processor moja tu, i.e. kwa kweli mfululizo.

Wacha tuzingatie kesi ya jumla ya programu ambayo kushiriki kialgorithm mahesabu ya mfululizo(uwiano wa muda wa hesabu za mfuatano kwa jumla ya muda wa kukokotoa wa programu) ni thamani fulani f. Katika kesi hii, wakati wa utekelezaji wa programu kwenye mfumo unatoka uk wasindikaji hawawezi kuwa chini ya

Uwiano huu unaitwa Sheria ya Amdahl. Kutumia mfano wa programu kwenye Mtini. 5.2 tunaweza kuona kwamba uwiano wa hesabu za mfuatano ni f= 15/195. Kubadilisha thamani hii katika fomula ya sheria ya Amdahl, tunapata kwa mfumo wa wasindikaji wawili kuongeza kasi ya mara 1.86, ambayo inalingana na thamani iliyohesabiwa hapo awali.

Ili kuonyesha utendakazi wa sheria ya Amdahl, tunatoa mfano ufuatao. Acha sehemu ya hesabu za mfuatano katika programu fulani iwe 10%. Kisha kasi ya juu ya hesabu kwenye wasindikaji 100 haitazidi 9.2. Mgawo wa kusawazisha utakuwa 9.2% tu. Kwa wasindikaji 10, kuongeza kasi itakuwa 5.3, na mgawo wa sambamba utakuwa 53%. Ni rahisi kuona kwamba hata sehemu ndogo kama hiyo ya mahesabu ya mlolongo, tayari katika kiwango cha kinadharia, bila kuzingatia ucheleweshaji usioepukika katika kompyuta halisi, hupunguza sana uwezo wa kuongeza programu.

Wacha tuamue ni sehemu gani ya juu inapaswa kuwa f mahesabu ya mlolongo katika programu ili iweze kupata kasi ya hesabu iliyotanguliwa S na mgawo wa juu zaidi wa ulinganifu K uk. Ili kufanya hivyo, tunaelezea sehemu ya hesabu za kufuatana kutoka kwa sheria ya Amdahl:

Uhusiano (5.6) huamua muhimu sana matokeo kutoka kwa sheria ya Amdahl. Ili kuharakisha programu katikaq mara, ni muhimu kuharakisha si chini yaq mara si chini ya () sehemu ya programu. Kwa mfano, ili kupata kasi ya 100x, unahitaji kusawazisha 99.99% ya programu nzima.

Mbali na usawa wa algorithmic, ili kutatua tatizo na matawi sambamba kwa kutumia vifaa kadhaa vya usindikaji, shirika linalofaa la mchakato ni muhimu, ambalo huamua njia za kutatua tatizo na hutoa taarifa muhimu kuhusu utayari wa kila tawi. Hata hivyo, haya yote ni rahisi kutekeleza wakati muda wa utekelezaji wa kila tawi unajulikana kwa usahihi kabisa. Katika mazoezi hii hutokea mara chache sana: in bora kesi scenario kuna makadirio ya wakati mmoja au mwingine. Kwa hivyo, kupanga ratiba bora au karibu na bora ya kazi ni kazi ngumu sana.

Inapaswa pia kuzingatiwa kuwa kuna matatizo fulani yanayohusiana na kutenganisha matawi ya kujitegemea wakati wa kuendeleza programu. Wakati huo huo, wakati wa kutatua matatizo mengi magumu, programu tu na uteuzi wa matawi ya kujitegemea inaweza kupunguza kwa kiasi kikubwa muda wa ufumbuzi. Hasa, matatizo ya algebra ya matrix, programu ya mstari, usindikaji wa ishara ya spectral, mabadiliko ya moja kwa moja na ya kinyume ya Fourier, nk. hujikopesha vizuri kwa usindikaji sambamba wa aina hii.