Кіріспе

Көп өңдеуді қолдайтын компьютерлік жад дизайны (Non uniform memory access, NUMA) – көп өңдеуді қолдайтын компьютерлік жад дизайны, онда жадқа қол жеткізу уақыты процессорға қатысты жадтың орналасуына байланысты. NUMA жүйесінде процессор өзінің жергілікті жадына, басқа процессордың жергілікті жадына немесе процессорлар арасында ортақ жадқа қарағанда жылдамырақ қол жеткізе алады. NUMA-ның артықшылықтары нақты жұмыс жүктемелерімен шектеледі, әсіресе деректер белгілі бір міндеттермен немесе пайдаланушылармен тығыз байланысты серверлерде. NUMA архитектуралары логикалық тұрғыдан симметриялық көп процессорлы (SMP) архитектураларынан дамуда. Олар 1990 жылдары Unisys, Convex Computer (кейін Hewlett Packard), Honeywell Information Systems Italy (HISI) (кейін Groupe Bull), Silicon Graphics (кейін Silicon Graphics International), Sequent Computer Systems (кейін IBM), Data General (кейін EMC, қазір Dell Technologies), Digital (кейін Compaq, кейін HP, қазір HPE) және ICL компаниялары тарапынан коммерциялық мақсатта әзірленді. Бұл компаниялардың әзірлеген технологиялары кейін Unix сияқты операциялық жүйелерде, сондай-ақ Windows NT жүйесінде де қолданылды. NUMA негізіндегі Unix жүйесінің алғашқы коммерциялық іске асырылуы – Honeywell Information Systems Italy үшін VAST Corporation компаниясының Дэн Гиелан жасаған симметриялық көп процессорлы XPS 100 серверлер отбасы болды.

Шолу

Қазіргі заманғы процессорлар пайдаланатын негізгі жадтан едәуір жылдам жұмыс істейді. Компьютерлік және деректерді өңдеудің алғашқы кезеңдерінде процессор көбінесе өз жадынан баяу жұмыс істеген. Процессорлар мен жадтың өнімділік көрсеткіштері 1960 жылдары алғашқы суперкомпьютерлердің пайда болуымен қабаттасты. Содан бері процессорлар жиі «деректерге аш» күйге түсіп, жадтан деректерді күтіп, тоқтап қалуға мәжбүр болады (мысалы, Фон Нейман архитектурасына негізделген компьютерлер үшін, Фон Нейманның тұйыққа тірелуіне қараңыз). 1980 және 1990 жылдардағы көптеген суперкомпьютерлердің дизайны жылдам процессорларға қарағанда жоғары жылдамдықты жадқа қол жеткізуге бағытталды, бұл компьютерлерге басқа жүйелерге жетпес жылдамдықпен үлкен деректер жиынтығымен жұмыс істеуге мүмкіндік берді. Жадына қол жеткізулер санын шектеу – заманауи компьютерден жоғары өнімділік алудың кілті болды. Бұл коммерциялық процессорлар үшін жоғары жылдамдықты кэш жадының көлемін үнемі арттыру және кэш қателіктерін болдырмау үшін күрделі алгоритмдерді пайдалануды білдірді. Алайда, операциялық жүйелердің және оларда іске қосылатын қосымшалардың көлемінің күрт өсуі көбінесе осы кэш өңдеудің жақсаруларын жойды. NUMA қолданбаған көппроцессорлық жүйелер бұл мәселені одан бетерлетеді. Қазір жүйе бір уақытта бірнеше процессорды деректерден айырды, себебі компьютер жадына бір уақытта тек бір процессор ғана кіре алады. NUMA бұл мәселені әр процессор үшін жеке жадты қарастыру арқылы шешуге тырысады, соның арқасында бірнеше процессорлар бір жадқа қол жеткізуге тырысқанда өнімділіктің төмендеуінен сақтайды. Серверлер және осыған ұқсас қосымшалар үшін кең таралған деректерді қамтитын мәселелер үшін NUMA бір ортақ жадтан процессорлар санына пропорционал (немесе жеке жад банктері) өнімділікті арттыра алады. Бұл мәселені шешудің тағы бір тәсілі – көп арналы жад архитектурасы, онда жад арналарының санының артуы жадқа қол жеткізудің параллельдігін пропорционалды түрде арттырады. Әрине, барлық деректер бір ғана тапсырмамен шектелмейді, яғни бір процессордан артық бірдей деректерді қажет етуі мүмкін. Мұндай жағдайларды шешу үшін NUMA жүйелері жад банктері арасында деректерді жылжыту үшін қосымша аппараттық немесе бағдарламалық құралдарды қамтиды. Бұл операция осы банктерге қосылған процессорларды баяулатады, сондықтан NUMA арқасындағы жалпы жылдамдық артуы іске қосылатын тапсырмалардың сипатына тікелей байланысты. Intel процессорларының екі отбасы да ортақ чипсетті пайдаланады; өзара байланыс Intel QuickPath Interconnect (QPI) деп аталады, ол жоғары кеңейтімділікті қамтамасыз ететін өте жоғары өткізу қабілетіне ие және 2017 жылы Skylake нұсқасымен Intel UltraPath Interconnect деп аталатын жаңа нұсқамен алмастырылды.

Кэшке сәйкес келетін NUMA (ccNUMA)

Дерлік барлық CPU архитектуралары жадқа қол жеткендегі сілтемелік локальдылықты пайдалану үшін өте жылдам, ортақ емес жадтың шағын көлемін пайдаланады. NUMA-мен ортақ жадта кэш сәйкестігін сақтау айтарлықтай шығынды тудырады. NUMA жүйелерін жобалау және құру оңай болғанымен, кэшсіз үйлесімді NUMA жүйелері стандартты фон Нейман архитектурасының бағдарламалау моделінде бағдарламалау үшін тым күрделі болады. Әдетте, ccNUMA бірнеше кэш бір жад орнында сақталғанда жадтың біркелкі кескінін сақтау үшін кэш контроллерлері арасындағы процессорлік байланысты пайдаланады. Осы себепті, бірнеше процессорлар бір жад аймағына тікелей және үзіліссіз қол жеткізуге тырысқанда ccNUMA нашар жұмыс істей алады. Операциялық жүйелердегі NUMA қолдауы процессорлар мен жадты NUMA-ға қолайлы тәсілдермен бөлу арқылы және NUMA-ға қолайсыз қол жеткізуді қажет ететін жоспарлау және құлыптау алгоритмдерін болдырмау арқылы мұндай қол жеткізудің жиілігін азайтуға тырысады. МЭСИФ протоколы сияқты кэш сәйкестігін қамтамасыз ететін протоколдар кэш сәйкестігін сақтау үшін қажетті байланысты азайтуға бағытталған. Масштабталатын когерентті интерфейс (SCI) – бұл IEEE стандарты, ол бұрынғы көппроцессорлық жүйелерде кездесетін масштабталу шектеулерінен сақтану үшін каталогқа негізделген кэш когеренттілік протоколын анықтайды. Мысалы, SCI NumaConnect технологиясының негізі ретінде қолданылады.

Жабдықтық қолдау

2011 жылдан бастап ccNUMA жүйелері – сыртқы логикасыз іске асырылатын AMD Opteron процессоры, сондай-ақ NUMA қолдауын қажет ететін Intel Itanium процессоры негізіндегі көппроцессорлық жүйелер болып табылады. ccNUMA мүмкіндігі бар чипсеттердің мысалдары: SGI Shub (Super hub), Intel E8870, HP sx2000 (Integrity және Superdome серверлерінде қолданылады) және NEC Itanium процессорларына негізделген жүйелерде кездеседі. Silicon Graphics сияқты бұрынғы ccNUMA жүйелері MIPS процессорлары мен DEC Alpha 21364 (EV7) процессоры негізінде құрылған.