stringtranslate.com

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

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

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

Чтобы это работало, необходимо соблюдение нескольких критериев:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внешние ссылки