Device Sleep (DevSleep) u SATA zařízení

Potřeba nižší spotřeby energie a delší výdrže baterie je důležitou součástí dnešních mobilních zařízení. Aby bylo možné splnit stále agresivnější požadavky na spotřebu energie a životnost baterie v tomto novém prostředí, rozhraní SATA se zdokonaluje. DevSleep je nový doplněk specifikace SATA, který umožňuje úložným řešením založeným na rozhraní SATA dosáhnout nové úrovně provozu s nízkou spotřebou energie.

Device Sleep (DevSleep) u SATA zařízení

Ve specifikaci SATA může hostitel nebo zařízení uvést rozhraní (PHY) do stavů se sníženou spotřebou energie následujícím způsobem:

  • Částečný - PHY je v režimu snížené spotřeby; doba ukončení < 10 mikrosekund.
  • Slumber - PHY v režimu sníženého výkonu (nižší výkon než Partial); doba ukončení < 10 milisekund.

Kompromisem pro přechod do stavu sníženého napájení rozhraní je to, že zařízení SATA nemůže reagovat na příkazy tak rychle, jako když je rozhraní plně napájeno; to znamená, že při použití stavů napájení rozhraní dochází ke kompromisu mezi zpožděním při ukončení a úsporou energie. Oba stavy rozhraní, částečný i spánkový, používají takzvanou signalizaci "in band"; to znamená, že příkazy používané hostitelem a zařízením ke změně stavu napájení rozhraní jsou přenášeny po samotné sběrnici SATA.

Syndrom "Šípkové Růženky"; tak označujeme nespecifické stavy u pevných disků, kdy vlivem poškození firmware dojde po inicializaci funkce DevSleep k situaci, kdy disk není "probuzen" a zůstává permanentně off-line. Obnova dat z disku má u MyBluedDay v těchto případech díky specializovanému vybavení vynikající prognózu na úspěch.

Stávající schéma řízení napájení rozhraní SATA "in-band" znamená, že rozhraní SATA PHY nemůže být zcela vypnuto; musí zůstat napájeno, aby mohlo zpracovávat příkazy pro změnu stavu. Pokud si tedy hostitel přeje ušetřit další energii na rozhraní SATA, existují pouze dvě možnosti:

  • Na straně hostitelského řadiče lze příslušný hostitelský port uvést do stavu offline (pokud to architektura SATA HBA podporuje). Bohužel uvedení hostitelského portu SATA do režimu offline neznamená také uvedení PHY přidruženého úložného zařízení do podobného stavu.
  • Úplné vypnutí zařízení SATA; to však může způsobit mnohem delší zpoždění při ukončení a může dokonce spotřebovat více čisté energie (v závislosti na frekvenci odebírání napájení) než setrvání v režimu částečného nebo spánku, a to kvůli vypnutí a opětovnému zapnutí celého zařízení.

S přidáním funkce DevSleep mají hostitelé/zařízení novou možnost správy napájení, při které mohou hostitel a zařízení zcela vypnout své příslušné PHY a další obvody související s linkou. Zařízení se také mohou rozhodnout vypnout další podsystémy, zatímco jsou v režimu DevSleep, což umožňuje ještě větší úsporu energie. Latence při ukončení a celková energie při přechodu do/ze stavu DevSleep je však ve srovnání s vypnutím mnohem nižší.

Se zapnutou funkcí DevSleep má hostitel střední cestu mezi dnešními stavy správy napájení rozhraní (částečný a spánek) a vypnutím. Nyní může přejít do režimu napájení s nízkou latencí, ve kterém může být hostitel i PHY zařízení zcela vypnuto, stejně jako případně další subsystémy, ale stále si zachovává výstupní latenci mnohem bližší stavu Slumber než úplnému vypnutí. Specifikace DevSleep neuvádí, jakých úrovní spotřeby bude zařízení ve stavu DevSleep dosahovat, ale SSD se zaměřují na 5 mW nebo méně.

Teorie fungování režimu DevSleep

DevSleep funguje tak, že definuje nový signál (DEVSLP), který je připojen mezi hostitelem a úložným zařízením. Když hostitel potvrdí signál DEVSLP, zařízení přejde do stavu napájení rozhraní DevSleep na dobu, po kterou hostitel potvrzuje signál DEVSLP. Když hostitel signál DEVSLP neguje, zařízení se vrátí ze stavu DevSleep. Specifikace DevSleep umožňuje implementátorům flexibilitu, pokud jde o to, co zařízení skutečně dělá, když je signál DEVSLP potvrzen. Zařízení může zcela vypnout svůj PHY a může se také rozhodnout vypnout jiné subsystémy, pokud dokáže splnit požadavky na latenci ukončení.

Funkce DevSleep funguje následovně:

Hostitel může signál DEVSLP vyvolat z libovolného stavu za předpokladu, že:

  • zařízení podporuje funkci Device Sleep (podle příkazu ATA IDENTIFY DEVICE)
  • hostitel povolil funkci Device Sleep (podle příkazu ATA SET FEATURES)
  • nejsou žádné nevyřízené příkazy

Při aktivaci DEVSLP

  • Hostitel musí potvrdit DEVSLP po dobu >= 10 ms nebo jak je uvedeno v Identify Device Data Log;
  • Hostitel a zařízení mohou vypnout PHY a další systémy (např. PLL, hodiny, média);
  • Hostitel ani zařízení nesmí zahájit komunikaci PHY, pokud je DEVSLP potvrzeno.
  • Veškerá komunikace PHY je hostitelem a zařízením ignorována, dokud je DEVSLP potvrzen.

Při negaci DEVSLP

  • Zařízení musí detekovat OOB za <= 20ms nebo jak je uvedeno v protokolu Identify Device Data.
  • Hostitel a zařízení mohou pro opětovné vyjednávání použít COMWAKE nebo COMRESET/COMINIT.

Shrnutí problematiky SATA DevSleep

Aby bylo možné vyhovět stále agresivnějším požadavkům na napájení/životnost baterií dnešních mobilních zařízení, rozhraní SATA se vyvíjí přidáním stavu napájení rozhraní DevSleep. DevSleep umožňuje hostitelům a zařízením zcela vypnout rozhraní SATA a ušetřit tak více energie oproti stávajícím stavům napájení rozhraní Partial a Slumber, které vyžadují, aby PHY zůstal napájen. DevSleep pomůže vytvořit novou generaci mobilních zařízení s rozhraním SATA, která budou šetrná k napájení.

Nové systémy s přísnými požadavky na spotřebu energie budou navíc klást zvýšený důraz na schopnost systému a operačního systému zcela vypnout úložná zařízení a řadič úložiště během dlouhých období nečinnosti. Implementace podpory DevSleep na obou platformách poskytuje hierarchické řešení správy napájení, které umožňuje systému dynamicky a efektivně volit mezi výkonem a latencí.