Non-Uniform Memory Access

**Не-единствен мемориски пристап** или **Не-единствена мемориска архитектура** е дизајн на компјутерска меморија користена во мултиобработувачите, каде што времето за пристап до меморијата зависи од локацијата на меморијата во однос на обработувачот.  Со *NUMA*, обработувачот може да пристапи до сопствената локална меморија побрзо од нелокалната меморија, тоа е, меморија локална за друг обработувач или меморија поделена помеѓу повеќе обработувачи.
Архитектурата NUMA  во скалата на архитектури, логички следува после архитектурата на симетричната мултиобработка (SMP). Нивниот комерцијален развој дошол како резултат на работат на Burroughs (подоцна Unisys), Convex Computer(подоцна Hewlett-Packard), Silicon Graphics, Sequent Computer System, Data General и Digital во текот на ’90 години. Техниките развиени од овие компании подоцна ќе бидат вклопени во оперативните системи на Unix, и оние слични на него, и на некој начин во Windows NT.

## Основен концепт
Модерните обработувачи работат значително побрзо отколку главната меморија на која тие се прикачени. Во раните денови на пресметувањето и обработката на податоците, обработувачот работел побавно отколку неговата меморија. Со настапувањето на првиот супер-комјутер и брза пресметка во ’60 години, се преминало на погорно ниво на обработка. До тогаш, обработувачите “гладувале за податоци”, морале да закочат додека чекале пристапот до меморијата за биде завршен. Многу од дизајните на суперкомпјутери во периодот на ’80 и ’90 години биле фокусирани на обезбедување на мемориски пристап со голема брзина, како спротивност на брзите обработувачи, дозволувајќи им да работат на големи количества на податоци со брзина на која други системи не можат да им се приближат.
Огранигувањето на бројот на мемориски пристапи го овозможи клучот  за обезбедување на висок перформанс од модерните компјутери. Ова значи инсталирање на постојано растечка големина на кеш-меморија со голема брзина и користење на по софистицирани алгоритми за да се избегнат “кеш-пропусти”. Но драматицното зголемување на големината на оперативните системи и на апликациите кои работат на нив, генерално ги  имаат совладано овие подобрувања на кеш-обработката. Мултиобработувачските системи го прават проблемот знацително полош. На овој начин, во еден одреден момент само еден обработувач може да пристапи до меморијата. NUMA се обидува да го лоцира овој проблем преку обезбедување посебна меморија за секој обработувач, избегнувајќи го судирот кога неколку обработувачи се обидуваат да пристапат до истата меморија. За проблеми кои вклучуваат ширење на податоци (заедничко за опслужувачи и слични апликации), NUMA може да го подобри перформансот преку единствена поделена меморија , преку поделбана мемориските банки.
Секако, не секој податок завршува ограничен на една задача, што значи дека повеќе од еден обработувач може да ги бара истиот податок. За справување со овие случаи, NUMA системите вклучуваат дополнителен хардвер или софтвер за движење на податоците помеѓу мемориските банки. Оваа операција предизвикува ефект на успорување на обработувачите прикачени на тие банки, така да целосната брзина зголема преку НУМА ќе зависи од точниот број на задачи кои се извршуваат на системот во одреден момент.

## Ќеш кохерентна NUMA (ccNUMA)
Скоро сите архитектури на обработувачите користат мал износ на многу мала не-поделена меморија позната како КЕШ. Со НУМА, одржувањето на кохерентноста на кеш меморијата преку поделена меморија, има значајни административни трошоци. Иако наједноставна да се издизајнира и изгради, некохерентните-кеш NUMA системи стануваа премногу сложени да програмираат во стандардниот програмерски модел на VON NEUMANN архитектурата. Како резултат на тоа, сите НУМА компјутери продадени на пазарот користат специјално наменски хардвер за да ја одржуваат кохерентноста на кешот, и така се сврстуваат како ќеш кохерентна NUMA, или ccNUMA. 
Типично, ова се случува со користење на интер-обработувачска комуникација помеѓу кеш контролерите  за да се задржи доследен мемориски облик кога повеќе од еден кеш ја меморија истата моемориска локација. Од таа причина, ccC може да работи лошо кога повеќе обработувачи се обидуваат да пристапат до истата мемориска област во брз редослед. Поддршката од оперативниот систем за NUMA се обидува да ја намали честотата на овој тип на пристап  преку алокација на обработувачите и меморијата на начин близок за NUMA и преку избегнување на алгоритми за распоредување и заклучување кои го прават пристапот кој не е блисок на NUMA потрабен. Алтернативно, кеш-кохеренстност протоколите како MESIF протоколот се обидува да ја намали потребната комуникација за одржување на кеш-кохерентноста. Scalable Coherent Interface (SCI) е IEEE стандард кој го дефинира протоколот за кеш кохерентност за да се избегнат ограничувањата за скаларност пронајдени во раните мултиобработувачски системи. SCI е користен како основа за Numascale, NumaConnect технологијата.
Сегашните ccNUMA системи се мултиобработувачски системи засновани на AMD Opteron, кој може да биде применет без надворешна логика, и Intel Italium, кој бара чип-сетови за да го подржи НУМА. Примери на ccNUMA чип-сетови се SGI Shub (Super hub), Intel E8870, HP sx2000, и оние пронајдени во системите засновани на NEC Itanium. Раните ccNUMA системи како оние од Silicon Graphics засновани на MIPS обработувачите и DEC Alpha 21364 (EV7) обработувачот.
Интел го објави воведувањето на НУМА во неговиот x86 и Itanium опслужувачи во доцната 2007 со Nehalem и Tukwila обработувачи. И двете семејста на обработувачи ќе делат заеднички чип-сет; интерконекцијата е нарецена Quick Path Interconnect (QPI).

## Наводи
Оваа статија оригинално е заснована на материјали од Free On-line Dictionari of Computing, кој е лиценциран под GFDL. 
* Intel Corp. (2008). Intel QuickPath Architecture. Retrieved from http://www.intel.com/pressroom/archive/reference/whitepaper_QuickPath.pdf
* Intel Corporation. (September 18th, 2007). Gelsinger Speaks To Intel And High-Tech Industry's Rapid Technology Caden. Retrieved from http://www.intel.com/pressroom/archive/releases/2007/20070918corp_b.htm

## Надворешни врски
* NUMA FAQ
* Page-based distributed shared memory 
* OpenSolaris NUMA Project 
* More videos related to EV7 systems: CPU, IO, etc
* NUMA optimization in Windows Applications 

Категорија:Сметачки мрежи