Кіріспе

Компьютерлік жүйеде маскалауға келмейтін үзіліс (NMI) – жүйедегі стандартты үзіліс маскалау әдістерімен елемеуге болмайтын аппараттық үзіліс. Әдетте, ол қалпына келтірілмейтін аппараттық қателерге назар аудару үшін туындайды. Кейбір NMI-лерді жасыруға болады, бірақ тек сол NMI-ге тән, эксклюзивті әдістерді қолдану арқылы. SPARC архитектурасында, ең жоғары басымдыққа ие болғанына қарамастан, NMI үзіліс маскасын пайдалану арқылы орын алуына жол бермеуге болады. NMI көбінесе жауап беру уақыты маңызды болғанда немесе жүйе қалыпты жұмыс істеген кезде үзіліс ешқашан тоқтатылмауы тиіс жағдайларда қолданылады. Мұндай қолданыстарға қалпына келтірілмейтін аппараттық қателер туралы хабарлау, жүйелік диагностика және профильдеу, сондай-ақ жүйелік қайта орналастыру сияқты ерекше жағдайларды басқару кіреді. Қазіргі заманғы компьютерлік архитектуралар NMI-ді дереу назар қажет ететін қалпына келтірілмейтін қателерді өңдеу үшін пайдаланады. Сондықтан, мұндай үзілістер жүйенің қалыпты жұмысында маскаланбауы керек. Бұл қателерге қалпына келтірілмейтін ішкі жүйелік чипсет қателері, жүйелік жадтағы партиттілік және ECC қателері сияқты зақымдану, сондай-ақ жүйелік және сыртқы шиналарда анықталған деректердің зақымдануы жатады. Кейбір жүйелерде компьютер пайдаланушысы аппараттық және бағдарламалық жөндеу интерфейстері мен жүйелік қайта орналастыру түймелері арқылы NMI-ді қолмен іске қоса алады. Бағдарламашылар әдетте, қате кодты диагностикалау және түзету үшін NMI-ді пайдаланады. Мұндай жағдайларда NMI арнайы монитор бағдарламасына басқаруды беруге қабілетті үзіліс процедурасын орындайды. Бұл бағдарламадан дамытушы машинаның жадын қарап, бағдарлама тоқтаған сәттегі ішкі күйін тексеруге мүмкіндік алады. Бұл сондай-ақ, тұрып қалған компьютерлерді жөндеуге немесе диагностикалауға да мүмкіндік береді.

Тарих

Ескі архитектураларда NMI үзілістер үшін пайдаланылды, олар қажетті жауап уақытына байланысты әдетте өшірілмейтін. Олар жасырын сигналдар еді. Мысалдарға Amstrad PCW-дегі дискета контроллері, IBM PC немесе оның үйлесімділерінде қолданылғанда x86-дағы 8087 копроцессоры (Intel оны стандартты үзіліске қосуды ұсынғанмен) және HP 95LX-дегі батареяның төмендеуі туралы сигнал жатады. IBM-нің бастапқы компьютерінде, егер жүйелік жадыда паритет қатесі байқалса немесе сыртқы құрылғыдан хабарланса, NMI іске қосылды. Екі жағдайда да компьютер қате хабарламасын көрсетіп, тоқтап қалады. Кейбір кейінгі ПК клондары стандартты ПК-дан аппараттық айырмашылықтарды жасыру үшін NMI-ді қолданды. Мұндай компьютерлерде бағдарлама үйлесімсіз аппаратқа қол жеткізуге тырысқан кезде NMI пайда болады. BIOS үзілістерін басқарушы бағдарламаның сұранысын іс жүзінде бар аппараттық жабдыққа сәйкес аударады. 386SL-дегі SMM бұған жақсы жол. Кейбір 8 биттік үй компьютерлері NMI желісін пайдаланып, жүйе тоқтап қалған жағдайда «жылы бастауға» мүмкіндік берді. Әдетте, бұл басқару регистрлерін ROM-да сақталған белгілі жақсы мәндерге қалпына келтіреді, пайдаланушы қазір жүктеген кез келген деректерді жоймайды. Commodore 8 бит машиналарында перне тікелей немесе жанама түрде 6502 сериялы CPU-дағы NMI желісіне қосылған, бірақ қайта орнату тек NMI-ді басқарушы режімінің ROM-да ұстап тұрғанын анықтаса ғана орын алады (бұл комбинация Commodore үш саусақпен салют жасау нұсқасы). Commodore сонымен қатар C64 және C128 процессорларындағы MOS Technology 6526 CIA #2 процессордың NMI желісіне қосылды, бұл 6551 ACIA бағдарламалық эмуляциясының құралының бір бөлігі болды. Atari-дің 8 биттік желісі осы мақсатта түймешікті қолданды. Дебюгтау NMI бірнеше нысанда пайда болды, соның ішінде Apple Macintosh-тың «программалаушы батырмасы» және Sun жұмыс станцияларындағы кейбір пернелер комбинациялары. Windows 2000 енгізілгеннен кейін, Microsoft NMI-ді пайдалану арқылы жүйені жөндеушіге кіргізуге немесе жадтың мазмұнын дискіге тастап, қайта жүктеуге мүмкіндік берді. Дебюгтау NMI-ді бос уақытты пайдаланушылар мен ойыншылар жұмыс істеп тұрған бағдарламаларды басқаруға мүмкіндік беретін құрылғылар да қолданды. NMI-ді құру үшін батырма қосылған құрылғылар, мысалы Romantic Robot's Multiface, 1980-ші жылдардағы 8 бит және 16 бит үй компьютерлерінде танымал аксессуар болды. Бұл перифериялық құрылғыларда аз мөлшерде ROM және NMI батырмасы болды. Батырманы басу арқылы басқаруды перифериялық құрылғының ROM-дағы бағдарламалық жасақтамаға көшіріп, тоқтатылған бағдарламаны дискіге сақтауға (дискіге қолдаусыз таспаға негізделген ойындар үшін өте пайдалы, сонымен қатар жүргізіліп жатқан ойындарды сақтау үшін), скриншотты сақтауға немесе басып шығаруға немесе жадыдағы мәндерді өзгертуге мүмкіндік береді – мысалы, қосымша өмірлерді алу үшін алдау әдісі. Барлық компьютерлер NMI-ді іске қосу механизмін қамтамасыз етпейді; дегенмен көптеген машиналар (әдетте, стойкаға орнатылған серверлер) осы мақсат үшін арнайы физикалық батырманы ұсынады. Басқа машиналар бұл функционалды кеңейту картасы арқылы көрсете алады. Miles Gordon Technology-дің ZX Spectrum үшін DISCiPLE және +D өнімдері «сыйлық батырманы» шығаратын NMI-ге ие болды. Nintendo Entertainment System-де әрбір тік сызық аралығында NMI құрылады. Бұл NMI (көбінесе «vblank interrupts» деп аталады) жиі, тұрақты аралықтарда пайда болғандықтан, ойынның графикасы мен аудиосын басқаратын код көбінесе NMI өңдеушісінің ішінде орындалады. PPU-ның 7-битін тазалау vblank үзілістерін өшіреді, ал оны орнату оларды іске қосады.