Выполнить на месте

редактировать

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

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

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

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

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

Содержание
  • 1 XIP во время загрузки загрузки
  • 2 XIP как файловая система
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
XIP во время загрузки загрузки

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

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

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

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

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

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

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

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

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

A Реализация NetBSD также находится в стадии разработки.

См. Также
Ссылки
  1. ^Samsung S3C2416X иметь встроенную SRAM объемом 64 КБ, доступную на системной шине.
  2. ^Broadcom BCM2835 использует свой кэш 2-го уровня в качестве оперативной памяти загрузчика до инициализации SDRAM
  3. ^Патент США 4485457A, Ричард К. Баласка, Роберт Л. Хантер и Скотт С. Робинсон, «Система памяти, включая ОЗУ и ПЗУ с переключаемой страницей», выпущенный 27 ноября 1984 года, передан CBS Inc.
  4. ^Уэбаяси, Масао (05 апреля 2010 г.). «Поддержка eXecute-In-Place (XIP) для NetBSD» (PDF).
Внешние ссылки
Последняя правка сделана 2021-05-19 09:35:10
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте