Link PCI Express tidak perlu mempertahankan setiap blok transmitter dan receiver dalam kondisi aktif penuh saat tidak ada paket yang bergerak. Active State Power Management, atau ASPM, memungkinkan link memasuki state berdaya lebih rendah selama periode idle dan kembali ke L0 ketika traffic muncul lagi.

Mekanisme ini berada di bawah I/O aplikasi. Software dapat menjalankan operasi storage, network, atau perangkat yang sama tanpa bergantung pada state link saat itu, tetapi transaksi pertama setelah periode idle dapat menerima delay tambahan ketika link kembali ke operasi aktif.

Karena itu, ASPM merupakan mekanisme pertukaran daya dan latensi, bukan sekadar fitur aktif atau nonaktif.

L0 adalah state aktif normal

Link PCIe yang sudah terlatih biasanya memindahkan Transaction Layer Packets dan Data Link Layer Packets dalam L0. Link fisik aktif sehingga traffic dapat berjalan tanpa proses keluar dari low-power state terlebih dahulu.

ASPM menargetkan interval ketika link tidak memiliki traffic untuk dikirim. Dua state ASPM klasik adalah L0s dan L1.

traffic active
    |
    v
   L0
   |
   +---- idle ----> L0s
   |
   +---- idle ----> L1

L0s adalah state yang lebih ringan. State ini dapat mematikan sebagian blok pada satu arah link dan dirancang untuk pemulihan yang relatif singkat. L1 memungkinkan pengurangan daya link yang lebih dalam sehingga biaya keluarnya juga lebih besar.

Perilaku listrik dan timing yang tepat bergantung pada generasi PCIe, kemampuan komponen, dan state yang digunakan. Platform tidak dapat mengambil satu angka latensi universal hanya dari nama state.

Kedua ujung mengiklankan batas latensi

Konfigurasi ASPM tidak hanya bergantung pada kemampuan upstream port. Endpoint dan port di sisi lain link mengekspos capability yang digunakan software saat menentukan apakah suatu state sesuai.

PCIe configuration space memuat informasi tentang state ASPM yang didukung dan rentang exit latency. Endpoint juga mengekspos nilai acceptable latency yang terkait dengan operasinya.

Hal ini penting karena suatu state dapat didukung secara elektrik tetapi tetap menjadi pilihan kebijakan yang buruk bagi perangkat dengan batas layanan yang lebih ketat daripada interval pemulihan yang diperkirakan.

Sistem operasi atau firmware dapat membiarkan state yang didukung tetap nonaktif. Capability dan policy adalah dua properti terpisah.

L1 dapat diperluas ke substate yang lebih dalam

Manajemen daya PCIe modern juga mencakup L1 substates, yang umum disebut L1.1 dan L1.2. State ini memungkinkan circuitry tambahan dan resource reference clock masuk ke kondisi berdaya lebih rendah.

State yang lebih dalam dapat mengurangi daya idle lebih jauh, tetapi proses masuk dan keluar memerlukan koordinasi tambahan. Wiring platform dan dukungan komponen ikut menentukan, termasuk clock dan sideband signaling yang digunakan untuk mengoordinasikan transisi.

Perangkat yang mengiklankan dukungan L1 dasar tidak otomatis menyediakan setiap L1 substate. Seluruh jalur harus mendukung mekanisme yang dipilih.

L0
 |
 +-- L0s
 |
 +-- L1
      |
      +-- L1.1
      |
      +-- L1.2

Hierarki ini juga berarti pengaturan firmware yang hanya diberi label penghematan daya PCIe dapat menyembunyikan beberapa perilaku fisik yang berbeda.

State link PCIe dan state daya perangkat PCI menjelaskan batas yang berbeda.

Sebuah function dapat memakai state manajemen daya perangkat seperti D0 atau D3, sementara link-nya secara independen dapat berpindah di antara state link yang berlaku. Kedua mekanisme dapat berinteraksi, tetapi tidak dapat saling menggantikan.

device function: D0, D3hot, D3cold ...
link:            L0, L0s, L1, L1 substates ...

Sebagai contoh, perangkat yang tetap siap digunakan dapat berada di D0 dan masih memperoleh manfaat ASPM selama jeda antartransaksi. Sebaliknya, perangkat yang masuk ke state daya perangkat yang dalam dapat memungkinkan link dan platform di sekitarnya mengurangi daya melalui mekanisme tambahan.

Menganggap setiap penghematan daya sebagai state tidur perangkat akan menutupi sumber latensi. Delay dapat berasal dari device wake-up, pemulihan link, stabilisasi clock, scheduling controller, atau beberapa proses tersebut secara berurutan.

Jeda idle pendek dapat menghapus manfaat

Low-power state memiliki overhead transisi. Jika traffic berulang kali berhenti hanya dalam interval sangat singkat, link dapat menghabiskan banyak waktu untuk masuk dan keluar dari state tanpa bertahan cukup lama untuk menghemat banyak energi.

Bentuk workload karena itu berpengaruh. Dua perangkat dengan throughput rata-rata yang sama dapat menghasilkan perilaku daya berbeda:

bursty traffic:
████████          ████████          ████████

steady sparse traffic:
█  █  █  █  █  █  █  █  █  █  █  █

Jeda tenang yang lebih panjang membuka peluang lebih besar bagi deep idle state. Transaksi kecil yang sering dapat mempertahankan link tetap aktif atau memicu proses keluar berulang kali.

Tidak ada ambang throughput tetap yang merangkum perilaku ini. Timing paket, kebijakan platform, state yang didukung, dan aktivitas perangkat semuanya berkontribusi.

Exit latency muncul pada traffic pertama setelah idle

ASPM tidak menambahkan delay yang sama ke setiap transaksi. Penalti yang relevan muncul ketika traffic datang dan link harus keluar dari low-power state.

Pada perangkat storage, proses ini dapat menambah latensi I/O yang diterbitkan setelah periode idle. Pada network adapter, proses ini dapat memengaruhi pertukaran paket pertama setelah link tidak aktif. Delay lain dari perangkat dan software tetap merupakan komponen terpisah.

Latensi praktisnya bersifat kondisional:

request latency
= software path
+ device service time
+ optional link-state exit
+ other platform delays

Komponen ASPM tidak ada jika link sudah aktif. Perbedaan ini penting saat membandingkan tail latency atau perilaku idle-to-active, bukan performa transfer berkelanjutan.

Kebijakan firmware dan sistem operasi dapat berbeda

ASPM adalah capability hardware yang dinegosiasikan, tetapi pengaktifannya merupakan keputusan kebijakan platform. Firmware dapat mengonfigurasi kebijakan link sebelum sistem operasi dimulai, dan sistem operasi dapat menerapkan kebijakannya sendiri jika platform mengizinkannya.

Linux, misalnya, mengekspos kontrol kebijakan PCIe ASPM pada sistem yang mendukungnya. Kebijakan berorientasi performa dapat memilih perilaku yang lebih dangkal, sedangkan kebijakan berorientasi daya dapat mengizinkan penghematan lebih agresif ketika batas hardware dan platform mendukungnya.

Nama kebijakan bukan jaminan bahwa setiap link mencapai state tertentu. State yang tidak didukung, pembatasan platform, traffic aktif, batas perangkat, dan kekhasan implementasi dapat membatasi hasilnya.

Perbedaan ini mencegah kesalahan diagnosis: ASPM yang terlihat aktif di software tidak membuktikan bahwa link tertentu menghabiskan waktu yang berarti dalam state terdalam yang tersedia.

Menonaktifkan ASPM dapat menyamarkan gangguan kompatibilitas

Sebagian sistem menonaktifkan ASPM untuk kombinasi hardware tertentu karena transisi daya link dapat mengekspos cacat firmware, endpoint, clocking, atau signal integrity.

Mematikan ASPM dapat membuat gejala tersebut hilang dengan mempertahankan link dalam kondisi yang lebih terus aktif. Hal itu tidak membuktikan bahwa ASPM sendiri melanggar kontrak PCIe. Kondisi tersebut dapat menunjukkan implementasi platform atau perangkat yang gagal saat menjalankan transisi yang diizinkan.

Untuk diagnosis production, batas yang berguna harus spesifik: identifikasi link yang terdampak, state yang didukung, kebijakan aktif, error counter, dan transisi yang berkaitan dengan gangguan. Penonaktifan global mengubah perilaku daya untuk semua link yang terdampak dan dapat menyembunyikan komponen yang sebenarnya perlu diperiksa.

ASPM paling terlihat pada batas idle

ASPM terutama mengubah perilaku link PCIe di antara burst pekerjaan yang berguna. Manfaatnya berasal dari pengurangan aktivitas link fisik selama idle; biayanya muncul ketika link harus aktif kembali.

Perilaku akhir bergantung pada lebih dari endpoint. Kedua sisi link, clocking platform, konfigurasi firmware, kebijakan sistem operasi, timing traffic, dan substate yang didukung membentuk transisi state.

Batas tersebut menjelaskan pertukaran praktisnya: idle state yang lebih dalam dapat mengurangi daya link, tetapi transaksi berikutnya dapat membawa langkah pemulihan tambahan sebelum transfer paket normal berlanjut.