Բազմապրոցեսոր և բազմամիջուկ կազմակերպություն


Բազմաթիվ պրոցեսորներով կամ պրոցեսորային միջուկներով համակարգիչների համակարգեր ստեղծելու երկու եղանակ կա՝ բազմապրոցեսորային կազմակերպում և բազմամիջուկ կազմակերպում: Երկու ռազմավարություններն էլ նպատակ ունեն բարձրացնել համակարգչի մշակման հզորությունը՝ հնարավորություն տալով նրան միաժամանակ մի քանի առաջադրանք կատարել:

Մի քանի առանձին պրոցեսորներ, որոնք կապված են կապի ցանցի միջոցով, շատ դեպքերում կազմում են բազմապրոցեսորային համակարգ: Յուրաքանչյուր պրոցեսոր կարող է իրականացնել հրահանգների եզակի հավաքածու և ունի առանձին տեղական հիշողություն: Ամբողջ համակարգի թողունակությունը կարող է մեծացվել այս պրոցեսորների միջոցով, որոնք միաժամանակ աշխատում են մի քանի առաջադրանքների վրա:

Այս հոդվածում մենք կուսումնասիրենք Multiprocessor-ը և Multicore կազմակերպությունը, դրանց օգտագործման դեպքերը, օրինակները Python-ում, ինչպես նաև դրանց առավելություններն ու թերությունները:

Ի՞նչ է բազմապրոցեսորային համակարգը:

Բազմապրոցեսոր ունեցող համակարգն ունի մի քանի պրոցեսոր կամ պրոցեսոր: Այս համակարգերը միաժամանակ կատարում են մի քանի հրահանգներ: Արդյունքում բարելավվում է թողունակությունը: Մնացած պրոցեսորները կշարունակեն աշխատել նորմալ, նույնիսկ եթե պրոցեսորներից մեկը ձախողվի: Հետևաբար, բազմապրոցեսորներն ավելի հուսալի են:

Բազմապրոցեսորային համակարգերը կարող են օգտվել բաշխված կամ համօգտագործվող հիշողությունից: Հրահանգները միաժամանակ կատարելու համար ընդհանուր հիշողության բազմապրոցեսորում յուրաքանչյուր պրոցեսոր կիսում է հիմնական հիշողությունը և ծայրամասային սարքերը: Այս համակարգերում հիմնական հիշողությունը հասանելի է բոլոր պրոցեսորներին մեկ ավտոբուսի միջոցով: Քանի որ ավտոբուսների երթևեկությունը մեծանում է, պրոցեսորների մեծ մասը անգործուն է լինելու: Սիմետրիկ բազմապրոցեսորը այս տեսակի բազմապրոցեսորի մեկ այլ անուն է: Այն յուրաքանչյուր պրոցեսորի հնարավորություն է տալիս մուտք գործել հիշողության մեկ տարածք:

Բաշխված հիշողության բազմապրոցեսորը պարունակում է անձնական հիշողություն յուրաքանչյուր պրոցեսորի համար: Հաշվարկային պարտականությունները կատարելու համար բոլոր պրոցեսորները կարող են օգտագործել տեղական տվյալներ: Եթե հեռավոր տվյալներ են պահանջվում, պրոցեսորը կարող է մուտք գործել հիմնական հիշողություն կամ փոխազդել այլ պրոցեսորների հետ ավտոբուսի միջոցով:

Օգտագործեք բազմապրոցեսորային կազմակերպման դեպքեր

Այժմ քննարկենք բազմապրոցեսորային կազմակերպության օգտագործման որոշ դեպքեր:

Բարձր արդյունավետության հաշվողական կլաստերներ − Բազմապրոցեսորային համակարգերն օգտագործվում են կլաստերներում՝ հաշվողական առաջադրանքները մի քանի պրոցեսորների միջև բաշխելու համար, ինչը հնարավորություն է տալիս բարձր արդյունավետությամբ հաշվարկել գիտական սիմուլյացիաների, եղանակի կանխատեսման և ֆինանսական մոդելավորման համար:

Տվյալների բազայի կառավարման համակարգեր − Բազմապրոցեսորային համակարգերն օգտագործվում են տվյալների բազայի սերվերներում՝ միաժամանակ օգտագործողների հարցումները կարգավորելու և տվյալների արդյունավետ մշակումն ու որոնումն ապահովելու համար:

Վեբ սերվերներ− Բազմապրոցեսորային համակարգերն օգտագործվում են վեբ սերվերներում՝ սպասառուների մեծ թվով միաժամանակյա միացումներ սպասարկելու և արագ արձագանքման ժամանակներ ապահովելու համար:

Վիրտուալիզացիա և ամպային հաշվարկ − Բազմապրոցեսորային համակարգերն օգտագործվում են վիրտուալացված միջավայրերում և ամպային հաշվողական հարթակներում՝ մի քանի վիրտուալ մեքենաների կամ բեռնարկղերի համար մասշտաբային և արդյունավետ հաշվողական ռեսուրսներ ապահովելու համար:

Իրական ժամանակի համակարգեր − Բազմապրոցեսորային համակարգերն օգտագործվում են իրական ժամանակի ծրագրերում, ինչպիսիք են թռիչքի կառավարման համակարգերը և գործընթացների կառավարման համակարգերը՝ կարևոր իրադարձություններին ժամանակին և կանխատեսելի արձագանք ապահովելու համար:

Օրինակ

Եկեք ուսումնասիրենք Java-ի մի օրինակ Java-ում բազմապրոցեսորային կազմակերպության համար ստորև:

Այս օրինակում ThreadPoolExecutor-ը ստեղծվում է չորս թելերով, որոնք ներկայացնում են բազմապրոցեսորային համակարգ: Կատարող ծառայությանը ներկայացվում է տասը առաջադրանք, և յուրաքանչյուր առաջադրանք կատարվում է միաժամանակ առկա թելերից մեկի վրա: Արդյունքը ցույց է տալիս յուրաքանչյուր առաջադրանքի կատարումը պրոցեսորի (թելի) անվան հետ մեկտեղ:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MultiprocessorExample {
   public static void main(String[] args) {
      ExecutorService executorService = Executors.newFixedThreadPool(4);

      for (int i = 0; i < 10; i++) {
         final int taskId = i;
         executorService.execute(() -> {
               System.out.println("Executing task: " + taskId + " on processor: " + Thread.currentThread().getName());
         });
      }
      executorService.shutdown();
   }
}

Արդյունք

Executing task: 0 on processor: pool-1-thread-1
Executing task: 1 on processor: pool-1-thread-2
Executing task: 2 on processor: pool-1-thread-3

Բազմապրոցեսորային համակարգի առավելությունները

Մեկ պրոցեսորային համակարգի դեպքում բազմապրոցեսորային համակարգը մի շարք առավելություններ ունի, օրինակ՝ -

  • Բազմապրոցեսորային համակարգի վերամշակման հզորությունը զգալիորեն մեծանում է, քանի որ ավելի շատ առաջադրանքներ կարող են իրականացվել միաժամանակ ավելի շատ պրոցեսորների կողմից, որոնք աշխատում են զուգահեռ:

  • Բազմապրոցեսորային համակարգի ավելի մեծ մշակման հնարավորությունը հնարավորություն է տալիս ավելի արդյունավետ մշակել հսկայական քանակությամբ տվյալներ, ինչը մեծացնում է համակարգի թողունակությունը:

  • Աշխատանքային բեռները կարող են ավելի հավասարաչափ բաշխվել մի քանի պրոցեսորների միջև բազմապրոցեսորային համակարգում՝ առավելագույնի հասցնելով համակարգի ռեսուրսների օգտագործումը:

  • Թույլ տալով աշխատանքն ավտոմատ կերպով տեղափոխել այլ պրոցեսորներ խափանման դեպքում, բազմապրոցեսորային համակարգը կարող է ապահովել սխալների հանդուրժողականություն:

Բազմապրոցեսորային համակարգի թերությունները

Թեև բազմապրոցեսորային համակարգն ունի որոշ առավելություններ ընդամենը մեկ պրոցեսորային համակարգի նկատմամբ, կան նաև որոշ թերություններ, որոնք պետք է հաշվի առնել.

  • Բազմապրոցեսորային համակարգի նախագծումն ու իրականացումն ավելի դժվար է, քան մեկ պրոցեսորային համակարգի:

  • Առաջադրանքների համաժամացումը և համակարգումը բազմաթիվ պրոցեսորների միջև կարող են դժվար լինել, հատկապես, երբ օգտագործում եք ընդհանուր ռեսուրսներ:

  • Արդյունավետությունը կարող է ազդել լրացուցիչ հաղորդակցության և համաժամացման ավելորդ ծախսերի վրա, որոնք կարող են զգալ բազմաթիվ պրոցեսորներ ունեցող համակարգերը:

Ի՞նչ է բազմամիջուկ համակարգը:

Բազմամիջուկ պրոցեսորը բազմաթիվ միջուկներով մեկ հաշվողական սարք է (առանձին մշակման միավորներ): Այն ցույց է տալիս, որ համակարգն ունի մեկ պրոցեսոր՝ մի քանի միջուկներով: Այս միջուկները կարող են կարդալ և կատարել հրահանգներ համակարգչից: Չնայած միջուկներ են, քան պրոցեսորներ, դրանք գործում են այնպես, որ տպավորություն է ստեղծվում, որ համակարգչային համակարգն ունի բազմաթիվ պրոցեսորներ: Այս միջուկները կարող են իրականացնել պրոցեսորի կանոնավոր գործողություններ, ինչպիսիք են ճյուղը, տեղափոխել տվյալները և ավելացնել տվյալներ:

Բազմամիջուկ համակարգը թույլ է տալիս մեկ պրոցեսորին միաժամանակ կատարել բազմաթիվ հրահանգներ՝ բարձրացնելով համակարգի ընդհանուր ծրագրի կատարողականը: Այն մեծացնում է հրահանգների կատարման արագությունը՝ միաժամանակ նվազեցնելով պրոցեսորի կողմից արտադրվող ջերմության քանակը: Բազմամիջուկ պրոցեսորների կիրառությունները ներառում են ընդհանուր նշանակության, ներկառուցված, ցանցային և գրաֆիկական մշակման (GPU):

Օգտագործեք Multicore կազմակերպության դեպքերը

Այժմ քննարկենք Multicore կազմակերպության օգտագործման որոշ դեպքեր:

Անձնական համակարգիչներ և դյուրակիր համակարգիչներ− Multicore համակարգերը սովորաբար օգտագործվում են անհատական համակարգիչներում և դյուրակիր համակարգիչներում` ապահովելու բարելավված արդյունավետություն առօրյա հաշվողական առաջադրանքների համար, ինչպիսիք են վեբ զննարկումը, փաստաթղթերի մշակումը և մուլտիմեդիա նվագարկումը:

Շարժական սարքեր− Սմարթֆոններում և պլանշետներում օգտագործվում են բազմամիջուկ համակարգեր, որոնք հնարավորություն են տալիս սահուն բազմաֆունկցիոնալ աշխատանքը, հավելվածների արագ փոխարկումը և ռեսուրսներ պահանջող հավելվածների արդյունավետ կատարումը, ներառյալ խաղերը և տեսանյութերի խմբագրումը:

Ներկառուցված համակարգեր− Multicore համակարգերը կիրառումներ են գտնում ներկառուցված համակարգերում, ինչպիսիք են ավտոմոբիլային համակարգերը, բժշկական սարքերը և սպառողական էլեկտրոնիկան, միաժամանակ մի քանի առաջադրանքներ լուծելու համար, մինչդեռ իրական ժամանակի սահմանափակումները բավարարում են:

Տվյալների վերլուծություն և մեքենայական ուսուցում− Multicore համակարգերն օգտագործվում են տվյալների վերլուծության և մեքենայական ուսուցման հարթակներում՝ արագացնելու տվյալների մեծ հավաքածուների և բարդ ալգորիթմների մշակումը, բարելավելով կատարողականը և նվազեցնելով ուսուցման ժամանակը:

Սերվերի վիրտուալացում− Multicore համակարգերը օգտագործվում են սերվերների վիրտուալացման միջավայրերում՝ բարձրացնելու վիրտուալ մեքենաների արդյունավետությունն ու մասշտաբայնությունը, ինչը թույլ է տալիս ավելի լավ օգտագործել ռեսուրսները և համախմբել:

Օրինակ

Ահա Python-ում բազմաթիվ միջուկների օգտագործման օրինակ:

import multiprocessing

# Function to be executed by each core
def core_function(core_id):
   print("Executing task on core", core_id)

# Get the number of CPU cores
num_cores = multiprocessing.cpu_count()

# Create a process pool with all CPU cores
pool = multiprocessing.Pool(processes=num_cores)

# Submit tasks to the process pool
for core_id in range(num_cores):
   pool.apply_async(core_function, args=(core_id,))

# Close the pool and wait for all tasks to complete
pool.close()
pool.join()

Արդյունք

Executing task on core 0
Executing task on core 1
Executing task on core 2
Executing task on core 3

Այս օրինակում կոդը օգտագործում է Python-ի բազմամշակման մոդուլը: Այն որոշում է CPU միջուկների քանակը՝ օգտագործելով cpu_count() ֆունկցիան: Այնուհետև այն ստեղծում է պրոցեսորային լողավազան բոլոր պրոցեսորի միջուկներով՝ օգտագործելով Pool դասը բազմամշակումից: Յուրաքանչյուր միջուկ կատարում է հիմնական գործառույթը իր նշանակված միջուկի ID-ով: Արդյունքը ցուցադրում է գործառույթի կատարումը յուրաքանչյուր միջուկի վրա:

Multicore համակարգի առավելությունները

Համեմատած միամիջուկ համակարգի հետ՝ բազմամիջուկ համակարգն ունի մի շարք առավելություններ, ինչպիսիք են -

  • Բազմամիջուկ համակարգի մշակման հնարավորությունը զգալիորեն մեծանում է բազմաթիվ առաջադրանքներ միաժամանակ իրականացնելու ունակությամբ:

  • Թույլ տալով ավելի արդյունավետ համակարգի ռեսուրսների օգտագործումը և հեռացնելով խոչընդոտները՝ բազմամիջուկ համակարգերը կարող են բարձրացնել կատարողականությունը:

  • Բազմամիջուկ համակարգը կարող է ավելի արդյունավետ գործարկել առաջադրանքները և օգտագործել ավելի քիչ էներգիա, քան մեկ միջուկային համակարգը՝ բաժանելով ծանրաբեռնվածությունը բազմաթիվ միջուկների վրա:

  • Բազմաթիվ հավելվածներ և գործընթացներ կարող են միաժամանակ աշխատել բազմամիջուկ համակարգերի վրա՝ բարելավելով օգտվողների փորձը:

Multicore համակարգի թերությունները

Բազմամիջուկ համակարգերն ունեն մի շարք առավելություններ, սակայն կան նաև որոշակի թերություններ, որոնք պետք է հաշվի առնել, օրինակ՝ −

  • Բազմաթիվ պրոցեսորներով համակարգերի համար ծրագրային ապահովման մշակումը կարող է ավելի դժվար լինել, քան մեկ միջուկային համակարգերի համար, քանի որ ծրագրավորողները պետք է համոզվեն, որ իրենց կոդը կարող է օգտագործել բազմաթիվ միջուկներ և արդյունավետորեն կառավարել ընդհանուր ռեսուրսները:

  • Ավելի հին ծրագրակազմը, որը չի ստեղծվել բազմամիջուկ համակարգերի համար, կարող է առաջացնել համատեղելիության խնդիրներ և վատ կատարողականություն:

  • Քեշի համահունչությունը պետք է պահպանվի, երբ մի քանի միջուկներ վկայակոչում են հիշողության նույն տեղը, որպեսզի երաշխավորվի, որ յուրաքանչյուր միջուկը հասանելի է ամենավերջին տվյալներին: Արդյունավետությունը կարող է տուժել ավելի բարձր ծախսերի արդյունքում:

Եզրակացություն

Համակարգչային համակարգերում մշակման կարողությունը բարձրացնելու երկու հստակ ռազմավարություններ են բազմապրոցեսորային և բազմամիջուկ կազմակերպությունները: Բազմամիջուկ համակարգերը կատարում են նույն խնդիրը՝ օգտագործելով բազմաթիվ միջուկներ մեկ պրոցեսորի ներսում, մինչդեռ բազմապրոցեսորային համակարգերն օգտագործում են մի քանի պրոցեսորներ՝ միաժամանակ առաջադրանքներ կատարելու համար: