Глубокий сон (DevSleep)

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

В спецификации SATA хост или устройство могут переводить интерфейс в состояние пониженной мощности следующим образом:

  1. Partial (время пробуждения 10 микросекунд)
  2. Slumber (время пробуждения 10 миллисекунд, потребление энергии меньше чем при Partial)

Проблема перехода в состояние пониженного энергопотребления интерфейса заключается в том, что устройство SATA не может реагировать на команды так же быстро, как при полном питании интерфейса. То есть при использовании состояний питания интерфейса существует компромисс между задержкой на выход из энергосберегающего режима и экономией энергии. Оба состояния интерфейса (Partial и Slumber) используют так называемую "внутриполосную" сигнализацию, так как команды, используемые хостом и устройством для изменения состояния питания интерфейса, передаются по самой шине SATA.

Host-Device In-Band Signaling

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

  1. Отключение порта со стороны хост-контроллера. К сожалению, перевод хост-порта в автономный режим не переводит подключенное к нему устройство в аналогичное состояние.
  2. Полное выключение накопителя информации. К сожалению, включение накопителя требует большое количество времени, что приведет к большим задержкам и потребует даже больше энергии, чем выход из режимов Partial и Slumber.

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

Power vs Latency

При включенном DevSleep хост находится на среднем уровне между сегодняшними состояниями управления питанием интерфейса (Partial и Slumber) и отключением питания. Теперь он может перейти в режим энергосбережения с малой задержкой, при котором физическое питание хоста и накопителя могут быть полностью отключены, но при этом иметь задержку гораздо ближе к режиму Slumber, чем к полному отключению. В режиме DevSleep твердотельные накопители (SSD) потребляют всего 5 мВт или меньше.

Принцип работы режима DevSleep

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

DEVSLP Signal

Хост может подать сигнал DEVSLP из любого состояния при условии, что:

  • Накопитель поддерживает "Device Sleep feature" согласно данным возвращаемых командой "ATA IDENTIFY DEVICE"
  • "Device Sleep feature" включена хостом командой "ATA SET FEATURES"
  • Отсутствуют команды ожидающие выполнения