A20 желісі – x86 жүйесінің басқару шинасының маңызды бөлігі. 21-біт адресті тасымалдайды, 4ГБ жадты қолдауға мүмкіндік береді. Компьютер архитектурасы туралы біліңіз!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
x86 негізіндегі компьютер жүйесінің жүйелік шинасындағы сигнал
Signal in the system bus of an x86 based computer system
A20, немесе 20-адрестік желі – x86 негізіндегі компьютер жүйесінің жүйелік шинасын құрайтын электр желілерінің бірі. A20 желісі адрестік шинадағы 21-ші битті тарату үшін арналған. Микропроцессордың адрестік желілерінің саны әдетте оның физикалық адрестік кеңістігіндегі сөздер санының екілік логарифміне тең болады. Мысалы, 4 ГБ байттық адрестелетін физикалық кеңістігі бар процессорға 32 желі қажет (log2(4 ГБ) = log2(232 байт) = 32), олар A0-ден A31-ге дейін деп аталады. Желілер олар тарататын адрестегі биттің нөлдік нөмірімен аталады. Ең кіші маңызды бит бірінші болып келеді, сондықтан ол 0-шы бит деп саналады және A0 желісінде көрсетіледі. A20 20-шы битті (21-ші бит) жібереді және адрестер 1 МБ немесе 220-ға жеткенде қосылады.
The A20, or address line 20, is one of the electrical lines that make up the system bus of an x86 based computer system. The A20 line in particular is used to transmit the 21st bit on the address bus. A microprocessor typically has a number of address lines equal to the base two logarithm of the number of words in its physical address space. For example, a processor with 4 GB of byte addressable physical space requires 32 lines (log2(4 GB) = log2(232 B) = 32), which are named A0 through A31. The lines are named after the zero based number of the bit in the address that they are transmitting. The least significant bit is first and is therefore numbered bit 0 and signaled on line A0. A20 transmits bit 20 (the 21st bit) and becomes active once addresses reach 1 MB, or 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# болмауы мүмкін".
The Intel 8086, Intel 8088, and Intel 80186 processors had 20 address lines, numbered A0 to A19; with these, the processor can access 220 bytes, or 1 MB. Internal address registers of such processors only had 16 bits. To access a 20 bit address space, an external memory reference was made up of a 16 bit offset address added to a 16 bit segment number, shifted 4 bits to the left so as to produce a 20 bit physical address. The resulting address is equal to segment × 16 + offset. As the gate was initially closed right after boot, protected mode operating systems typically opened the A20 gate early during the boot process to never close it again. Such operating systems had no compatibility reasons for keeping it closed, and they gained access to the full range of physical addresses available by opening it. The Intel 80486 and Pentium added a special pin named A20M#, which when asserted low forces bit 20 of the physical address to be zero for all on chip cache or external memory accesses. It was necessary, since the 80486 introduced an on chip cache and so masking this bit in external logic was no longer possible. Software still needs to manipulate the gate and must still deal with external peripherals (the chipset) for that. Support for the A20 gate was changed in the Nehalem microarchitecture (some sources incorrectly claim that A20 support was removed). Rather than the CPU having a dedicated A20M# pin that receives the signal whether or not to mask the A20 bit, it has been virtualized so that the information is sent from the peripheral hardware to the CPU using special bus cycles. From a software point of view, the mechanism works exactly as before, and an operating system must still program external hardware (which in turn sends the aforementioned bus cycles to the CPU) to disable the A20 masking. Intel no longer supports the A20 gate, starting with Haswell. Page 271 of the Intel System Programmers Manual Vol. 3A from June 2013 states: "The functionality of A20M# is used primarily by older operating systems and not used by modern operating systems. On newer Intel 64 processors, A20M# may be absent."