Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Технология Execute In Place (XIP).

Технология Execute In Place (XIP).

В широком смысле технология Execute In Place – это выполнение программы непосредственно из исходного носителя (микросхемы ROM) без копирования кода в оперативную память. По сути, современный термин XIP эквивалентен олдскульному подходу, известному еще со времен первых персональных компьютеров до эпохи «теневой» памяти. В современных системах с момента старта платформы до инициализации ОЗУ (либо до инициализации режима Cache-as-RAM), код UEFI BIOS также выполняется в режиме Execute In Place. Другими словами, особой новизны здесь нет.

Разумеется, для универсальной микросхемы ROM не имеет значения, какая информация читается из нее: выполняемый код, данные, либо идет побайтное копирование образа ROM в оперативную память. Неверно утверждать, что есть ROM с поддержкой XIP, а есть ROM без поддержки XIP. Любой ROM поддерживает XIP, поэтому правильнее говорить о том, что некоторые ROM (в частности микросхема W25Q64FV) оптимизированы для ускорения XIP.

Имеется в виду следующее. Производительность памяти, в том числе постоянных запоминающих устройств, характеризуется двумя параметрами: пропускной способностью (количество данных, прочитанных за единицу времени при чтении непрерывного блока) и латентностью (время реакции на изменившийся адрес).

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

При выполнении программного кода (это и есть XIP), наоборот, имеют место ветвления (условные переходы), выборочный доступ к мелким фрагментам, частое изменение адреса по нерегулярному закону. В этом случае важнее минимизировать латентность, а опережающее чтение байтов, явно не затребованных для чтения, может принести вред, так как мы с высокой вероятностью потратим время работы SPI интерфейса на чтение данных, которые не потребуются, например, прочитаем инструкции, расположенные в программе после инструкции передачи управления JMP.

Смысл XIP-оптимизированных режимов чтения в том, чтобы обеспечить низкую латентность (это важно при чтении мелко разбросанных данных), а также «умерить инициативу» микросхемы ROM и контроллера SPI по чтению данных, которые не затребованы явно.

В документе W25Q64FV Data Sheet принято некоторое отступление от теоретических канонов и маркетинговое упрощение, согласно которому любой быстрый ROM можно называть XIP-оптимизированным, просто потому, что если Shadow не используется, то производительность ROM в большей степени влияет на производительность устройства. Поэтому XIP-оптимизацией в документе названы и такие оптимизации, которые повлияют не только на доступ в режиме XIP, но и на непрерывный блоковый доступ, имеющий место при копировании содержимого ROM в Shadow RAM. В частности расширения SPI-протокола: Dual SPI, Quad SPI.

Режим Dual SPIувеличивает разрядность передаваемых данных от одного бита (классической реализации) до двух. Согласно документации, функциональность контактов микросхемы флеш-памяти переопределяется следующим образом:

  • DI (Data Input, контакт 5) = IO0

  • DO (Data Output, контакт 2) = IO1

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

  • DI (Data Input, контакт 5) = IO0

  • DO (Data Output, контакт 2) = IO1

  • WP (Write Protect, контакт 3) = IO2

  • HOLD (State hold, контакт 7) = IO3

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

Серии микросхем памяти Winbond W25X и WQ имеют популярный последовательный периферийный интерфейс (SPI), плотности от 512 Кбит до 512 Мбит, небольшие стираемые сектора и самую высокую производительность. Семейство W25X поддерживает Dual-SPI, удваивая стандартные частоты SPI. Семейство W25Q является «надстройкой» семейства 25X с Dual-I/O и Quad-I/O SPI с еще большей производительностью. Тактовые частоты до 104 МГц достигают эквивалента 416 МГц (со скоростью передачи данных 50 Мбайт/с) при использовании Quad-SPI. Это более чем в восемь раз превышает производительность обычной последовательно Flash памяти (50 МГц) и даже превосходит асинхронные параллельные Flash памяти при использовании меньшего количества выводов и меньшего места.

А вот режим QPI (Quad Peripheral Interconnect) в чипе W25Q64FV по праву можно назвать XIP-оптимизацией. Он использует тот же набор сигналов, что и Quad SPI, описанный выше. Отличие в том, что в режиме QPI, увеличение разрядности шины в 4 раза затрагивает не только передачу адреса и данных, но и управляющих команд: 8-битная команда передается не за восемь, а за два такта. В результате снижается латентность (минимизируется потеря времени на восприятие новой команды). Как было показано выше, латентность особенно важна для XIP при доступе к мелко-разбросанным данным.

Для декларирования функциональных различий микросхема изменяет код идентификатора устройства (Device ID). В документации на SPI Flash ROM производства Winbond указано, что чип W25Q64FV может менять код идентификатора устройства Device ID, если включен режим Quad Peripheral Interconnect (QPI). В штатном режиме SPI код Device ID = 4017h, но если задействована технология Execute In Place (XIP), чип меняет свой ID на 6017h.


Лицензия