Кіріспе

x86 негізіндегі компьютер жүйесінің жүйелік шинасындағы сигнал

A20, немесе 20-адрестік желі – x86 негізіндегі компьютер жүйесінің жүйелік шинасын құрайтын электр желілерінің бірі. A20 желісі адрестік шинадағы 21-ші битті тарату үшін арналған. Микропроцессордың адрестік желілерінің саны әдетте оның физикалық адрестік кеңістігіндегі сөздер санының екілік логарифміне тең болады. Мысалы, 4 ГБ байттық адрестелетін физикалық кеңістігі бар процессорға 32 желі қажет (log2(4 ГБ) = log2(232 байт) = 32), олар A0-ден A31-ге дейін деп аталады. Желілер олар тарататын адрестегі биттің нөлдік нөмірімен аталады. Ең кіші маңызды бит бірінші болып келеді, сондықтан ол 0-шы бит деп саналады және A0 желісінде көрсетіледі. A20 20-шы битті (21-ші бит) жібереді және адрестер 1 МБ немесе 220-ға жеткенде қосылады.

Шолу

Intel 8086, Intel 8088 және Intel 80186 процессорларында 20 адрес жолы бар, олар A0-ден A19-ға дейін нөмірленген; осылар арқылы процессор 220 байтқа немесе 1 МБ жадқа қол жеткізе алады. Мұндай процессорлардың ішкі адрес тіркегіштері тек 16 биттен тұрады. 20 биттік адрес кеңістігіне қол жеткізу үшін сыртқы жадқа жүгіну кезінде 16 биттік офсеттік адрес 16 биттік сегмент нөміріне қосылады және 20 биттік физикалық адрес алу үшін 4 бит солға жылдырылады. Нәтижедегі адрес сегмент × 16 + офсетке тең. A20 қақпасы бастапқыда жүктеуден кейін жабылып болғандықтан, қорғалған режимдегі операциялық жүйелер әдетте жүктеу процесінің басында A20 қақпасын ашып, оны ешқашан қайта жаппайды. Мұндай операциялық жүйелерде оны жабық ұстаудың қажеттілігі болмады, және олар оны ашу арқылы барлық қолжетімді физикалық адрес диапазонына қол жеткізді. Intel 80486 және Pentium процессорлары A20M# деп аталатын арнайы қосқышты қосты, ол физикалық адрес бітінің 20-шы битін чиптегі кэш немесе сыртқы жадқа қол жеткенде нөлге мәжбүрлейді. Бұл қажет болды, өйткені 80486 чипке кэш енгізді, сондықтан бұл битті сыртқы логикада жасыру мүмкін болмады. Бағдарламалық жасақтама әлі де қақпаны басқаруы керек және осы үшін сыртқы перифериялық құрылғылармен (чипсетпен) жұмыс істеуі керек. A20 қақпасының қолдауы Nehalem микроархитектурасында өзгертілді (кейбір дереккөздер A20 қолдауы алынып тасталды деп қате айтады). A20 битін маскалау немесе маскаламау туралы сигналды қабылдайтын арнайы A20M# қосқышы бар CPU-дың орнына, бұл виртуалдандырылды, сондықтан ақпарат шеткі жабдықтан арнайы шина циклдары арқылы CPU-ға жіберіледі. Бағдарламалық тұрғыдан алғанда, механизм бұрынғыдай жұмыс істейді, және операциялық жүйе әлі де сыртқы жабдықты бағдарламалауы керек (ол өз кезегінде жоғарыда аталған шина циклдарын CPU-ға жібереді) A20 маскасын өшіру үшін. Intel енді A20 қақпасын қолдамайды, Haswell процессорларынан бастап. Intel System Programmers Manual Vol. 3A, 2013 жылғы маусымның 271-бетінде былай делінген: "A20M# функционалдығы негізінен ескі операциялық жүйелерде қолданылады және қазіргі заманғы операциялық жүйелерде қолданылмайды. Жаңа Intel 64 процессорларында A20M# болмауы мүмкін".