Введение

Режим работы для процессоров x86

В 64-битной компьютерной архитектуре x86, длинный режим – это режим, в котором 64-битная операционная система может обращаться к 64-битным инструкциям и регистрам. 64-битные программы выполняются в подрежиме, называемом 64-битным режимом, а 32-битные программы и программы защищенного режима 16 бит – в подрежиме, называемом режимом совместимости. Программы, работающие в реальном режиме или виртуальном режиме 8086, не могут быть запущены непосредственно в длинном режиме.

Обзор

Процессор x86-64 ведет себя идентично процессору IA-32 при работе в реальном или защищенном режиме, которые поддерживаются, когда процессор не находится в длительном режиме. Бит в поле расширенных атрибутов CPUID сообщает программам, работающим в реальном или защищенном режиме, о возможности перехода процессора в длинный режим, что позволяет программе определить, является ли процессор x86-64. Это аналогично биту атрибутов CPUID, используемому процессорами Intel IA-64, чтобы позволить программам определить, работают ли они в режиме эмуляции IA-32. В системе с устаревшей BIOS, BIOS и загрузчик работают в реальном режиме. После передачи управления ядру операционной системы, поддерживающему x86-64, ядро проверяет поддержку процессором длительного режима и затем выполняет инструкции для его активации. В системе с UEFI, прошивка UEFI (за исключением CSM и устаревших ROM-опций), любой загрузчик UEFI и ядро операционной системы работают в длительном режиме.

Ограничения памяти

В то время как размеры регистров увеличились до 64 бит по сравнению с предыдущей архитектурой x86, адресация памяти пока не расширена до полноценных 64 бит. На данный момент оснащение компьютеров достаточным объемом памяти, требующим полноценных 64 бита, не представляется целесообразным. До тех пор, пока это так, блоки загрузки/сохранения, теги кэша, MMU и TLB могут быть упрощены без потери полезного объема памяти. Несмотря на это ограничение, программное обеспечение разрабатывается с использованием 64-битных указателей, что позволит ему использовать всё более широкие адресные пространства по мере их поддержки будущими процессорами и операционными системами.

Текущие пределы

Первые процессоры, реализующие архитектуру x86-64, а именно AMD Athlon 64 / Opteron (K8), поддерживали 48-битное виртуальное и 40-битное физическое адресное пространство. Микроархитектуру можно последовательно расширять без влияния на программное обеспечение и при этом снижать стоимость реализации. Архитектура предусматривает возможность расширения виртуального адресного пространства до 64 бит и адресного пространства физической памяти до 52 бит (ограниченного форматом записи в таблицы страниц). Это позволит процессору адресовать 2<sup>64</sup> байта (16 эксабайт) виртуального адресного пространства и 2<sup>52</sup> байта (4 петабайта) физического адресного пространства.