Programado
Docs» Длинный режим (Long Mode)

Длинный режим (Long Mode)

Длинный режим (Long Mode) — этот режим позволяет запускать приложения в 64-битной операционной системе, которая может получить доступ к 64-разрядным инструкциям и регистрам . Длинный режим состоит из двух подрежимов: 64-битного режима (64-bit mode) и режима совместимости (Compatibility mode). 64-битный режим поддерживает все функции и регистровые расширения архитектуры AMD64. Режим совместимости поддерживает двоичную совместимость с существующими 16-битными и 32-битными приложениями. Программы реального режима или виртуального режима 8086 не могут запускаться в длинном режиме.

Процессор x86-64 действует так же, как процессор IA-32(i386) при работе в реальном режиме или защищенном режиме, которые доступны как подрежимы процессора, когда процессор не находится в длинном режиме.

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

На компьютере с устаревшим BIOS, BIOS и загрузчик работают в реальном режиме, затем ядро ​​64-разрядной операционной системы проверяет и переключает процессор в длинный режим, после чего ОС запускает новые потоки режима ядра, выполняющие 64-разрядный код. На компьютере с UEFI, прошивка UEFI (кроме устаревших), загрузчик UEFI и ядро ​​операционной системы работают сразу в режиме Long Mode.

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

Ограничение в 1 ТБ (40 бит) для физической памяти для достаточно велико по стандартам типичных персональных компьютеров, но могло быть ограничением для использования в суперкомпьютерах. Поэтому суперкомпьютеры реализует 48-битные физические адреса и, таким образом, могут адресовать до 256 ТБ ОЗУ. Для будущего расширения архитектура поддерживает расширение виртуального адресного пространства до 64 бит и адресацию физической памяти до 52 бит (ограничено форматом записи таблицы страниц). Это позволит процессору адресовать 264 байта (16 экзабайт) виртуального адресного пространства и 252 байта (4 петабайта) физического адресного пространства.

В длинном режиме не поддерживаются некоторые анахронизмы архитектуры x86-32, как-то: режим виртуального 8086, сегментная модель памяти (но можно использовать сегменты FS и GS), аппаратная многозадачность, некоторые инструкции, например, работающие с BCD-числами, которые очень редко использовались. Длинный режим активируется установкой флага CR0.PG, который используется для включения страничного блока управления памятью (MMU) (при условии что такое переключение разрешено (EFER.LME=1), в противном случае просто произойдет включение MMU в «унаследованном» режиме). Таким образом, невозможно исполнение 64-битного кода с запрещённым страничным преобразованием. Это создаёт определённые трудности в программировании, поскольку при переключении из длинного в Унаследованный режим (Legacy mode) и обратно (например, для вызова функций BIOS или DOS, монитором виртуальной машины требуется двойной сброс MMU, для чего код переключения должен находиться в тождественно отображённой странице.

Previous Next

Programado

Table of Contents

Содержание

  • Kivy
  • Процессор_x86-64
  • Вход