Выполнить на месте - Execute in place

В Информатика, выполнить на месте (XIP) - это метод выполнения программ непосредственно из долговременного хранилища, а не их копирование в баран. Это расширение использования Общая память чтобы уменьшить общий объем требуемой памяти.

Его общий эффект заключается в том, что текст программы не потребляет доступную для записи память, сохраняя его для динамических данных, и что все экземпляры программы запускаются из одной копии.

Чтобы это сработало, должны быть выполнены несколько критериев:

  • Хранилище должно иметь интерфейс, аналогичный ЦПУ как обычная память (или должен присутствовать адаптивный слой).
  • Этот интерфейс должен обеспечивать достаточно быстрые операции чтения с произвольный доступ шаблон.
  • В файловая система, если он используется, необходимо предоставить соответствующие функции отображения.
  • Программа должна быть связаны знать адрес хранилища в системе или быть независимый от позиции.
  • Программа не должна изменять данные в загруженном изображении.

Требования к хранилищу обычно выполняются с помощью НЕ флэш-память или же EEPROM, который может быть адресован как отдельные слова для операций чтения, хотя в большинстве настроек он немного медленнее, чем обычная системная RAM.

XIP во время загрузки

Как правило, загрузчик первой ступени представляет собой программу XIP, которая связана для запуска по адресу, по которому микросхемы флэш-памяти отображаются при включении питания, и содержит минимальную программу для настройки системной ОЗУ (которая зависит от компонентов используется на отдельных платах и ​​не может быть достаточно обобщенным, чтобы правильная последовательность могла быть встроена в аппаратное обеспечение процессора), а затем загружает загрузчик второго этапа или ОС ядро в оперативную память.

Во время этой инициализации записываемая память может быть недоступна, поэтому все вычисления должны выполняться в регистрах процессора. По этой причине загрузчики первой ступени обычно пишутся на языке ассемблера и делают только минимум, чтобы обеспечить нормальную среду выполнения для следующей программы. Некоторые процессоры либо встраивают небольшой объем SRAM в сам чип, либо[1] или разрешить использование встроенной кэш-памяти в качестве ОЗУ,[2] чтобы упростить написание этого загрузчика первого этапа с использованием языка высокого уровня.

Для ядра или загрузчика: адресное пространство обычно назначается внутренне, поэтому для использования XIP для них достаточно указать компоновщику разместить неизменяемые и изменяемые данные в разных диапазонах адресов и предоставить механизм для копирования изменяемых данных в доступную для записи память до запуска любого кода это предполагает, что к данным можно получить доступ в обычном режиме. Это можно сделать как часть предыдущего этапа или в небольшом сегменте кода в начале программы.

Если адресное пространство назначается извне, например, в прикладной программе, запускаемой в системе, не обеспечивающей виртуальная память компилятору необходимо получить доступ ко всем изменяемым данным, добавив смещение к указателю на частную копию области данных. В этом случае внешний загрузчик отвечает за настройку конкретных областей памяти экземпляра.

BIOS и UEFI используйте XIP для инициализации основная память.

XIP как файловая система

XIP предъявляет требования к файловым системам, которые часто трудно удовлетворить. В системах без таблица страниц, весь файл должен храниться в последовательных байтах и ​​не должен быть фрагментирован, в то время как файловые системы на основе флэш-памяти часто стремятся распределить данные по секторам флэш-чипа, которые имеют наименьшее количество циклов стирания и выровнять износ на чипе, продлевая срок его службы.

Все эти сложности и компромисс скорости означают, что XIP обычно используется только для загрузчиков первой ступени или когда ОЗУ крайне не хватает. В частности, игровые приставки второго-четвертого поколений подключают ПЗУ картридж адрес и шину данных к консоли,[3] что позволяет (например) Atari 2600 работать только с 128 байтами ОЗУ в своем ИС интерфейса джойстика.

Относительно новая файловая система для Linux, называемая AXFS (Расширенная файловая система XIP), направлена ​​на устранение некоторых недостатков, связанных с XIP, особенно в отношении выполнения на месте пользовательское пространство Приложения. Это позволяет, например, разбить исполняемый двоичный файл на «области XIP», избегая, таким образом, ограничения фрагментации, упомянутого выше.

А NetBSD реализация также находится в стадии разработки.[4]

Смотрите также

Рекомендации

  1. ^ Samsung S3C2416X имеет встроенную SRAM объемом 64 КБ, доступную на системной шине
  2. ^ Broadcom BCM2835 использует кэш уровня 2 в качестве ОЗУ загрузчика перед инициализацией SDRAM.
  3. ^ Патент США 4485457A, Ричард К. Баласка, Роберт Л. Хантер и Скотт С. Робинсон, «Система памяти, включая ОЗУ и ПЗУ с переключением страниц», выпущенный 27 ноября 1984 г., переданный CBS Inc. 
  4. ^ Уэбаяси, Масао (05.04.2010). "Поддержка eXecute-In-Place (XIP) для NetBSD" (PDF). BSDCan.

внешняя ссылка