تولزبازار
معماری Power FSM و Power Sequencer در PMU اپل؛ بررسی Stateها و توالی توان Brooklands
1405/05/05 6 دقیقه مطالعه

معماری Power FSM و Power Sequencer در PMU اپل؛ بررسی Stateها و توالی توان Brooklands

مجموعه مقالات تخصصی معماری PMU در دستگاه‌های اپل

معماری Power FSM و Power Sequencer در PMU اپل؛ بررسی Stateها و توالی توان Brooklands

در چهارمین مقاله از مجموعه معماری PMU اپل، منطق Power FSM و Power Sequencer در Brooklands را بررسی می‌کنیم؛ از RESET، PMU_OFF و PMU_ACTIVE گرفته تا AWAKE، Sleep Stateها، POWER_UP، POWER_DOWN، Secure Firmware، Enable Bitها، Slotها، Slot Timerها و ترتیب واقعی روشن و خاموش‌شدن Railها.

دامنه این مقاله

این مقاله بر Chapter 7 سند Brooklands با عنوان Power FSM متمرکز است. Brooklands دارای Power-FSM قابل پیکربندی است و در معماری مرجع به‌عنوان Leader PMU عمل می‌کند. Follower Mode برای خود Brooklands پشتیبانی نمی‌شود؛ با این حال Leader می‌تواند منابع PMUهای Follower دیگر را از طریق SGPIO و vGPIO در توالی توان هماهنگ کند.

چرا داشتن یک Buck یا LDO سالم برای تولید Rail کافی نیست؟

تولید ولتاژ فقط زمانی اتفاق می‌افتد که منطق State و Sequencing اجازه فعال‌شدن منبع را بدهد.

در مقالات قبلی دیدیم Buck و LDO چگونه ولتاژهای مختلف را تولید می‌کنند. اما وجود یک مبدل سالم به این معنی نیست که خروجی آن باید در تمام لحظات دستگاه حاضر باشد.

Brooklands باید بداند سیستم در چه وضعیت توانی قرار دارد، چه Transitionی در حال انجام است، چه Railهایی برای State مقصد لازم هستند و هرکدام در چه زمانی باید روشن یا خاموش شوند.

Power FSM

State فعلی PMU و Transitionهای مجاز میان حالت‌های توان را مدیریت می‌کند.

Power Sequencer

تغییر واقعی Railها و منابع را با ترتیب و Timing مشخص اجرا می‌کند.

Power FSM = State Decision    |    Power Sequencer = Ordered Execution

سه Hardware State اصلی Brooklands

ساختار اصلی Power FSM حول سه State سخت‌افزاری پایدار شکل گرفته است.

RESET

State بازنشانی سخت‌افزاری و نقطه ورود PMU پس از POR یا برخی Crash Sequenceها.

PMU_OFF

Host خاموش است و PMU در کم‌مصرف‌ترین State طراحی‌شده قرار دارد، اما منطق لازم برای Wakeup همچنان فعال است.

PMU_ACTIVE

Secure Firmware فعال است و Virtual Stateهای AWAKE و SLEEP در این Hardware State میزبانی می‌شوند.

Hardware Transitional Stateها

بین Stateهای اصلی چند State انتقالی وجود دارد که هرکدام وظیفه مشخصی در Startup، Shutdown یا Recovery دارند.

OTP_READ
بارگذاری OTP
POWER_DOWN
Settling و انتقال
POWER_UP
آماده‌سازی سیستم
SECURE_FW_BOOT
Boot میکروکنترلر امن
CRASH_DLY
Crash Recovery Delay
Figure 7.1 Chip Power State Transition Diagram
برای مشاهده کامل دیاگرام، تصویر را به چپ و راست حرکت دهید.
شکل ۱ — دیاگرام کلی Transition میان Stateهای اصلی Power FSM شامل RESET، OTP_READ، POWER_DOWN، PMU_OFF، POWER_UP، SECURE_FW_BOOT و PMU_ACTIVE.

مسیر Startup؛ از RESET تا AWAKE

Startup Brooklands یک روشن‌شدن مستقیم نیست و چند مرحله سخت‌افزاری و نرم‌افزاری پشت سر هم اجرا می‌شوند.

RESET → OTP_READ → POWER_DOWN → PMU_OFF → POWER_UP → SECURE_FW_BOOT → PMU_ACTIVE → PWR_SEQ_OFF_TO_AWAKE → AWAKE

RESET؛ بازگرداندن PMU به وضعیت شناخته‌شده

Power FSM هنگامی وارد RESET می‌شود که Power-On Reset فعال باشد یا پس از برخی Crash Sequenceها نیاز به بازنشانی سیستم وجود داشته باشد.

ورود به RESET باعث می‌شود Reset Domainهای مربوطه PMU را به وضعیت شناخته‌شده‌ای برگردانند تا فرآیند Initialization دوباره آغاز شود.

OTP_READ؛ تنظیمات PMU پیش از کار عادی

در OTP_READ، داده‌های OTP در Registerهای Configuration و Trim بارگذاری می‌شوند.

این تنظیمات می‌توانند رفتار Power Stateها، Rail Configuration، Timerها، Protection، Sequencing و بسیاری از قابلیت‌های PMU را تعیین کنند.

یک PMIC می‌تواند از نظر Power Stage سالم باشد، اما اگر Initialization و State Configuration به‌درستی کامل نشود، سیستم الزاماً به AWAKE نمی‌رسد.

POWER_DOWN؛ فقط برای Shutdown نیست

نام POWER_DOWN ممکن است این تصور را ایجاد کند که این State تنها هنگام خاموش‌شدن دستگاه استفاده می‌شود؛ در حالی که در Startup نیز پس از OTP_READ به‌عنوان یک State انتقالی به کار می‌رود.

نقش اصلی در Startup

فراهم‌کردن زمان لازم برای Settling بخش‌های Analog و Digital پس از بارگذاری OTP، پیش از ادامه فرآیند ورود به PMU_OFF.

PMU_OFF؛ خاموش اما نه بدون منطق

در PMU_OFF، Host خاموش است و سیستم برای کمترین مصرف طراحی شده است؛ اما PMU باید همچنان بتواند Wakeup Eventهای معتبر را دریافت و فرآیند Power-Up را آغاز کند.

Wake Event
Reset Logic
Always-On
PFSM Logic

POWER_UP

POWER_UP یک State مبتنی بر Timer است. در Leader Mode زمان لازم برای آماده‌شدن PMUهای همراه جهت دریافت SGPIO فراهم می‌شود.

SGPIO_READY_WAIT_TIMER

SECURE_FW_BOOT

Secure Cortex-M23 فعال می‌شود، Bootloader کد Secure Firmware را از OTP به SRAM منتقل می‌کند و پس از Initialization اجازه ورود به PMU_ACTIVE صادر می‌شود.

PMU_ACTIVE با AWAKE یک State نیست

PMU_ACTIVE یک Hardware State است که Secure Firmware در آن فعال است. اما AWAKE یک Virtual Power State است که درون PMU_ACTIVE مدیریت می‌شود.

پس از ورود به PMU_ACTIVE، Secure Firmware توالی PWR_SEQ_OFF_TO_AWAKE را اجرا می‌کند. با پایان این توالی PMU عملاً وارد AWAKE می‌شود.

PMU_ACTIVE → Secure Firmware Power Sequence → AWAKE
Figure 7.5 Chip Power Virtual State Transition Diagram
برای مشاهده کامل دیاگرام، تصویر را به چپ و راست حرکت دهید.
شکل ۲ — دیاگرام Virtual Stateها و مسیرهای Transition میان AWAKE، SLEEP1، SLEEP1P5، SLEEP2، SLEEP3 و SLEEP4.

Virtual Stateهای Brooklands

زمانی که PMU در Hardware State فعال قرار دارد، Secure Firmware وضعیت‌های منطقی توان را مدیریت می‌کند.

State نام نقش کلی
AWAKE Active حالت فعال Virtual
SLEEP1 SLP_DDR اولین سطح Sleep
SLEEP1P5 SLP_CACHE State میانی Cache Sleep
SLEEP2 SLP_S2R حالت کم‌مصرف عمیق‌تر
SLEEP3 SLP_SMC مسیر Sleep مستقل از AWAKE
SLEEP4 LPEM Low Power Energy Mode

مسیرهای اصلی میان AWAKE و Sleep Stateها

همه Sleep Stateها مستقیماً به یکدیگر متصل نیستند. Transition مجاز توسط Virtual FSM و Secure Firmware تعریف می‌شود.

AWAKE ⇄ SLEEP1 ⇄ SLEEP1P5 ⇄ SLEEP2
AWAKE → SLEEP3
AWAKE → SLEEP4
Transition میان Stateها باید بر اساس مسیر تعریف‌شده انجام شود؛ مثلاً مسیر عادی خروج از SLEEP2 به سمت AWAKE از Stateهای میانی عبور می‌کند.

Sleep همیشه به معنی خاموش‌شدن Rail نیست

در برخی Sleep Stateها، منبع توان می‌تواند همچنان روشن باشد اما وارد Low-Power Mode شود.

Rail Enabled
Low-Power Mode
Lower Bandwidth
Reduced Monitoring
بنابراین ولتاژ یا رفتار Transient یک Rail در Sleep State نباید بدون درنظرگرفتن Mode عملیاتی با شرایط AWAKE مقایسه شود.

Power Sequencer؛ اجرای واقعی Transition

در Brooklands، Power Sequenceهای عادی توسط Secure Firmware مدیریت می‌شوند. Rapid Crash استثنای اصلی است که Sequence معمولی Firmware را دنبال نمی‌کند.

هر Sequence از مجموعه‌ای Slot تشکیل می‌شود و منبع یا Signal موردنظر می‌تواند به یکی از این Slotها اختصاص پیدا کند.

BUCK
LDO
Load Switch
GPIO
RESET_L
ACTIVE_READY
OUT_32K
vGPIO / SGPIO
Figure 7.7 Power Sequencer Software PD Control Diagram
برای مشاهده کامل دیاگرام، تصویر را به چپ و راست حرکت دهید.
شکل ۳ — دیاگرام کنترل نرم‌افزاری Power Sequencer و ارتباط میان ON/OFF Registerها، Secure Firmware، Stateها و خروجی‌های PD_EN.

تعداد Slotها در Power Sequenceهای مختلف

تمام Transitionها تعداد Slot یکسان ندارند.

۲۴
Slot
OFF_TO_AWAKE
TO_OFF
AWAKE_TO_SLEEP4
CRASH
۱۶
Slot

بیشتر Transitionهای دیگر Brooklands.

۸
Slot
SLEEP1P5_TO_SLEEP2
SLEEP2_TO_SLEEP1P5

Enable Bitها؛ هر Rail برای هر State Configuration مستقل دارد

Power Sequencer برای بیشتر منابع مجموعه‌ای ON/OFF Configuration دارد که مشخص می‌کند Rail در هر State چه وضعیتی داشته باشد.

OFF_STATE AWAKE_STATE SLEEP1_STATE SLEEP1P5_STATE SLEEP2_STATE SLEEP3_STATE SLEEP4_STATE
مثال مفهومی

یک Rail می‌تواند در AWAKE فعال، در SLEEP1 همچنان فعال، در SLEEP2 وارد Low-Power Mode و در SLEEP4 کاملاً غیرفعال باشد.

Hardware Control و Firmware Control چگونه جابه‌جا می‌شوند؟

در PMU_ACTIVE، Virtual Stateها تحت کنترل Secure Firmware هستند. Firmware هنگام اجرای Power Sequence می‌تواند کنترل مستقیم PD_EN را در دست بگیرد و پس از پایان Sequence، کنترل را به ON/OFF Configuration State مقصد بازگرداند.

Select FW Control → Select Target State → Execute Slot Sequence → Restore State-Based HW Control

Sequencer فقط Enable را کنترل نمی‌کند

State Configuration می‌تواند پارامترهای دیگری را نیز همراه با روشن و خاموش‌شدن منابع تغییر دهد.

pulldown_disable
رفتار Pulldown برای Buck، LDO و Switch.
low_power_mode
تنظیم State-dependent برای Buckها.
RESET_IN
غیرفعال در Transition و قابل تنظیم در State پایدار.

Slot؛ واحد زمانی Power Sequence

تغییر Railها در یک Transition به Slotهای متوالی تقسیم می‌شود. هر Resource می‌تواند به Slot مشخصی اختصاص پیدا کند و چند Resource نیز می‌توانند یک Slot مشترک داشته باشند.

Slot 0
Slot 1
Slot 2
Slot N
Toggle resources → wait Slot Timer → continue

Slot Timer؛ ترتیب زمانی دقیق Railها

Slotها دارای Timer چهار بیتی هستند. بنابراین Sequencer نه‌تنها ترتیب منابع، بلکه فاصله زمانی میان تغییرات را نیز کنترل می‌کند.

Setting Delay Typical
00 µs
132 µs
264 µs
3128 µs
4320 µs
5640 µs
61.28 ms
72.56 ms
8250 µs
9500 µs
A1 ms
B2 ms
C5 ms
D10 ms
E20 ms
F50 ms
Setting صفر عملاً Slot را Skip می‌کند و نباید Resourceای برای Toggle شدن در آن Slot برنامه‌ریزی شود.
Table 7.14 Slot Timers
برای مشاهده کامل جدول، تصویر را به چپ و راست حرکت دهید.
شکل ۴ — جدول Slot Timerها و Delay متناظر هر Setting در Power Sequence.

Power-Up Sequence

Slotهای Power-Up از شماره پایین به بالا اجرا می‌شوند.

U0 → U1 → U2 → ... → U23

Power-Down Sequence

Slotهای Power-Down در جهت معکوس شماره‌گذاری و اجرا می‌شوند.

D23 → D22 → ... → D1 → D0

Preemptive Bias Enable؛ آماده‌سازی Rail قبل از روشن‌شدن

برای سریع‌ترشدن برخی Power-Up Sequenceها، Sequencer می‌تواند Bias داخلی Buckها و بعضی LDOها را پیش از Enable واقعی Rail فعال کند.

در این حالت Bias در Slot 0 آماده می‌شود و Rail در Slot بعدی یا Slotهای بعدی روشن می‌شود. بنابراین بخشی از Startup Delay با Pipeline کردن مراحل پنهان می‌شود.

Slot 0: BIAS_EN → Slot 1: RAIL_EN → Startup → Regulation
اگر Bias و Rail در یک Slot هم‌زمان فعال شوند، مزیت اصلی Preemptive Bias برای کاهش زمان Startup از بین می‌رود.
Figure 7.8 Preemptive bias enable
برای مشاهده کامل نمودار، تصویر را به چپ و راست حرکت دهید.
شکل ۵ — دیاگرام Preemptive Bias Enable و فعال‌شدن Bias پیش از Rail Enable برای کاهش زمان Startup.

Anti Voltage Glitch؛ جلوگیری از Pulseهای کوتاه Enable/Disable

برخی Railها مکانیزم محافظتی در برابر تغییرات کوتاه و ناخواسته ON/OFF دارند.

BUCK.3 BUCK.6 BUCK.9 LDO.6 LDO.7 LDO.13 SWITCH.0 SWITCH.3

وقتی این حفاظت فعال باشد، پس از یک تغییر غیر privileged روی Rail، BUSY ایجاد می‌شود و برخی Writeهای بعدی تا پایان Timeout پذیرفته نمی‌شوند. Power Sequence یا دسترسی Privileged می‌تواند این وضعیت را Override کند.

Host چگونه State جدید را درخواست می‌کند؟

Host SoC از طریق SPMI می‌تواند درخواست Sleep یا Off State جدید را به PMU ارسال کند.

TARGET_SLEEP_STATE

برای درخواست Transition میان AWAKE و Sleep Stateهای مجاز استفاده می‌شود.

TARGET_OFF_STATE

برای درخواست Transitionهای مرتبط با Off و برخی Stateهای خاص استفاده می‌شود.

Host SoC → SPMI Command → Secure Firmware → Power FSM → Power Sequencer

نمونه Transition؛ AWAKE به SLEEP1

۱. Host مقدار Target Sleep State را از طریق SPMI درخواست می‌کند.
۲. Power FSM درخواست Transition را دریافت و اعتبارسنجی می‌کند.
۳. Secure Firmware کنترل منابع لازم را در اختیار می‌گیرد.
۴. Power Sequencer Slotها را با ترتیب برنامه‌ریزی‌شده اجرا می‌کند.
۵. Railها، GPIOها و سایر Resourceها به Configuration SLEEP1 می‌رسند.
۶. PMU وارد Virtual State برابر SLEEP1 می‌شود.

Wakeup؛ برگشت به AWAKE الزاماً Reverse ساده Sequence نیست

برای مثال SLEEP1 به AWAKE Sequence مخصوص خود را دارد:

SLEEP1 → PWR_SEQ_SLEEP1_TO_AWAKE → AWAKE

Power-Up و Power-Down الزاماً تصویر معکوس یکدیگر نیستند. Slot Assignment، Timing و Resource Configuration می‌توانند برای هر جهت Transition مستقل باشند.

Appendix C Figure C.1 Flow Diagrams Off to Awake
برای مشاهده کامل فلوچارت، تصویر را به چپ و راست حرکت دهید.
شکل ۶ — فلوچارت عملی Transition از OFF به AWAKE و اجرای مرحله‌به‌مرحله Power Sequence، Slotها و Event Handler.

Leader PMU و هماهنگی منابع Remote

Brooklands در Leader Mode می‌تواند علاوه بر منابع داخلی، Supplyهای PMUهای همراه را از طریق vGPIO و SGPIO کنترل کند.

POWER_UP نیز زمان لازم را برای آماده‌شدن PMUهای Remote جهت دریافت SGPIO در نظر می‌گیرد.

Brooklands Leader → SGPIO / vGPIO → Remote Follower PMU Resources

Crash Sequence؛ مسیر عادی Power Transition نیست

Brooklands برای Crash نیز مسیرهای مستقل دارد. CRASH_DLY یک State مبتنی بر Timer است که پس از Rapid Crash فرصت خاموش‌شدن Supplyها را فراهم می‌کند و سپس PMU می‌تواند به RESET بازگردد.

Crash → CRASH_DLY → RESET

عیب‌یابی Power Sequence از دید تعمیرکار

وقتی یک Rail وجود ندارد، بررسی Coil فقط بخشی از تشخیص است.

۱. PMU در حال حاضر در چه State قرار دارد؟
۲. Rail در State فعلی باید روشن باشد؟
۳. Target State موردنظر Host چیست؟
۴. Power Sequence مربوطه شروع شده است؟
۵. Sequencer به Slot مربوط به این Rail رسیده؟
۶. Bias موردنیاز پیش از Rail Enable آماده شده؟
۷. Supply بالادست آماده و پایدار است؟
۸. Secure Firmware Initialization کامل شده؟
۹. Protection، Crash یا Reset روند Transition را تغییر داده؟
۱۰. Rail در State فعلی Enabled است یا Low-Power؟
۱۱. SGPIO یا Resource Remote بخشی از Dependency است؟
۱۲. ON/OFF State Configuration همان Rail چیست؟

چند سناریوی مهم در تحلیل Power Sequence

یک Rail در AWAKE وجود ندارد

ON/OFF Configuration، Slot Assignment، Input Source، Startup Status و اینکه Sequence واقعاً به AWAKE رسیده بررسی شود.

دستگاه بخشی از Startup را طی می‌کند و متوقف می‌شود

باید مشخص شود FSM در RESET، OTP_READ، POWER_DOWN، PMU_OFF، POWER_UP، SECURE_FW_BOOT یا Power Sequence بعدی متوقف شده است.

Rail در Sleep هنوز ولتاژ دارد

این رفتار الزاماً Fault نیست؛ State Configuration ممکن است Rail را روشن یا در Low-Power Mode نگه دارد.

Rail روشن می‌شود اما خیلی زود خاموش می‌شود

Transition جدید، Crash، Protection، Reset Event یا Sequence بعدی می‌تواند Rail را مجدداً Disable کند.

سؤال ساده این است:
«چرا این Rail ولتاژ ندارد؟»
سؤال معماری این است:
PMU در چه State قرار دارد، Target State چیست، Power Sequence تا کدام Slot پیش رفته و آیا Configuration همان State اجازه فعال‌شدن این Rail را می‌دهد؟

جمع‌بندی

Brooklands یک PMIC نیست که تمام Railهای آن صرفاً با Enable ساده روشن و خاموش شوند. Power FSM State سیستم را مدیریت می‌کند و Power Sequencer Transition واقعی منابع را اجرا می‌کند.

RESET، PMU_OFF و PMU_ACTIVE ساختار Hardware State را تشکیل می‌دهند؛ در حالی که AWAKE و SLEEP1 تا SLEEP4 Virtual Stateهایی هستند که توسط Secure Firmware مدیریت می‌شوند.

Slot Assignment، Slot Timer، ON/OFF State Bitها، Preemptive Bias، Low-Power Mode، Pulldown Configuration، SGPIO و Protection همگی می‌توانند تعیین کنند یک Rail در چه لحظه‌ای و با چه رفتاری فعال شود.

از دید تعمیرات، نبود یک Rail همیشه به معنی خرابی Buck، LDO یا PMIC نیست؛ ممکن است سیستم هنوز هرگز به State و Slot موردنیاز آن Rail نرسیده باشد.

ادامه مجموعه

مقاله ۵: SPMI، SGPIO و DVC در Brooklands PMU

در مقاله بعدی رابط اصلی Host با PMU، ساختار SPMI، ارتباط Leader با منابع Remote از طریق SGPIO و vGPIO، DVC، Group-DVC و نحوه انتقال فرمان‌های کنترلی میان SoC و سیستم مدیریت توان Brooklands را بررسی می‌کنیم.

مرجع اصلی مقاله
Apple — Brooklands PMU Top Level Architecture Specification, Revision 2.1.0

دیدگاه‌ها (0)

برای ثبت دیدگاه لازم است

هنوز دیدگاهی برای این مقاله ثبت نشده است.