PCIe ATS Memindahkan Cache Translasi Alamat ke Dalam Perangkat

IOMMU dapat menerjemahkan alamat DMA atas nama perangkat, tetapi susunan ini menempatkan mekanisme translasi di jalur trafik memori perangkat. PCIe Address Translation Services (ATS) menyediakan pilihan lain: perangkat yang mendukungnya dapat meminta translasi lalu menyimpan hasilnya dalam cache translasi miliknya. Transaksi berikutnya dapat membawa alamat hasil translasi tanpa memerlukan pekerjaan translasi yang sama di IOMMU pada setiap akses.

Perubahan ini bukan sekadar memindahkan lokasi lookup. State translasi kini juga berada di dalam endpoint, sehingga software yang mengubah mapping address space harus memperhitungkan translasi yang tersimpan di perangkat sebagai bagian dari protokol invalidasi.

ATS memisahkan translation request dari memory request yang sudah ditranslasi

Tanpa ATS, perangkat umumnya mengirim alamat DMA yang diterjemahkan oleh IOMMU platform sebelum request mencapai memori. Dengan ATS aktif, perangkat dapat mengirim Address Translation Request untuk alamat yang akan dipakai. Translation agent mengembalikan Address Translation Completion berisi informasi translasi yang dapat disimpan perangkat sesuai aturan PCIe yang berlaku.

Jalur sederhananya seperti ini:

perangkat
  |
  | Address Translation Request
  v
IOMMU / translation agent
  |
  | Address Translation Completion
  v
cache translasi perangkat
  |
  | translated memory request
  v
jalur memori platform

Cache di sisi perangkat sering disebut device TLB dalam dokumentasi sistem operasi. Organisasi internalnya merupakan detail implementasi. ATS menetapkan perilaku protokol untuk memperoleh dan menginvalidasi translasi; ATS tidak mengharuskan setiap endpoint memakai geometri cache atau replacement policy yang sama.

Translasi yang tersimpan memperpanjang lifetime mapping melewati lookup IOMMU

Anggap sebuah alamat proses saat ini mengarah ke physical page A. Perangkat yang mendukung ATS memperoleh translasi tersebut dan menyimpannya secara lokal. Software kemudian mengubah mapping sehingga virtual address yang sama mengarah ke page B.

Perubahan pada CPU page table atau struktur translasi IOMMU tidak otomatis menghapus entry yang tersimpan di endpoint. Sampai protokol invalidasi yang relevan selesai, perangkat masih dapat memiliki state translasi yang berasal dari mapping sebelumnya.

state awal:
virtual address V -> page A
cache perangkat: V -> page A

mapping berubah:
virtual address V -> page B
cache perangkat: V -> page A   state stale harus dihentikan

Ini merupakan konsekuensi sistem utama ATS. Cache translasi dapat mengurangi pekerjaan lookup IOMMU yang berulang, tetapi perubahan mapping menghasilkan kewajiban konsistensi yang tersebar. Software tidak dapat menganggap modifikasi page table dan penghentian cache perangkat sebagai peristiwa yang sama.

Invalidasi melintasi batas PCIe

ATS menetapkan invalidation messaging agar translasi endpoint yang stale dapat dihapus. Kode platform dan sistem operasi mengoordinasikan mekanisme ini sehingga sebuah mapping tidak hilang ketika perangkat masih dapat memakai hasil cache lama.

Dokumentasi Shared Virtual Addressing Linux menjelaskan hubungan tersebut secara langsung: ATS memungkinkan perangkat menyimpan translasi, sedangkan integrasi IOMMU dan mekanisme notifikasi manajemen memori menjaga state translasi perangkat tetap sinkron dengan perubahan address space CPU. Jalur konkretnya bergantung pada IOMMU driver, arsitektur, kapabilitas perangkat, dan mode address sharing yang digunakan.

Completion tetap penting. Invalidation request yang sedang menuju perangkat dan selesainya invalidasi yang diwajibkan pada perangkat adalah dua titik waktu berbeda. Memori di balik mapping lama tidak aman untuk langsung dialihfungsikan hanya karena software sudah memulai penghentian translasi. Kontrak platform dan PCIe yang berlaku menentukan ordering sebelum reuse.

Situasi ini mirip persoalan invalidasi IOTLB, tetapi lokasi cache berbeda. IOMMU IOTLB adalah state translasi di dalam remapping unit. ATS memungkinkan state translasi berada di endpoint. Sistem yang memakai keduanya dapat memiliki beberapa lapisan state alamat turunan yang lifetime-nya harus tetap konsisten dengan mapping otoritatif.

PASID memberi konteks proses pada translation request

ATS menjadi semakin relevan bersama Shared Virtual Addressing (SVA). Dalam model ini, perangkat dapat beroperasi pada alamat dari process address space, bukan hanya mengandalkan namespace mapping DMA yang terpisah.

PCIe Process Address Space ID (PASID) menyediakan konteks agar mekanisme translasi platform dapat membedakan address space yang terkait dengan transaksi perangkat. Dokumentasi Linux menyebut PASID sebagai prasyarat SVA bersama dukungan IOMMU yang sesuai. Transaksi perangkat yang diberi tag untuk satu proses harus diselesaikan dalam konteks translasi proses tersebut, bukan address space lain.

ATS dan PASID menangani bagian berbeda dari jalur ini. PASID mengidentifikasi konteks address space. ATS menyediakan protokol untuk memperoleh dan menyimpan translasi. Keduanya sendiri tidak berarti perangkat dapat memulihkan kondisi page yang belum resident.

PRI menangani fault yang tidak dapat diselesaikan ATS sendiri

Translation request dapat menemui alamat yang mapping-nya belum dapat menghasilkan translasi yang bisa dipakai. PCIe Page Request Interface (PRI) melengkapi ATS dengan memungkinkan perangkat yang mendukungnya meminta software menangani kondisi terkait page.

Model SVA Linux menggabungkan komponen ini. Perangkat dapat meminta translasi melalui ATS; ketika alamat memerlukan pekerjaan paging, PRI menyediakan jalur request untuk melibatkan sistem operasi. Setelah mapping tersedia, perangkat meminta translasi lagi sebelum melanjutkan.

Pembagian perannya tetap jelas:

PASID -> mengidentifikasi konteks address space
ATS   -> memperoleh dan menyimpan translasi alamat
PRI   -> meminta penanganan kondisi addressability

Dukungan bersifat kondisional. Kapabilitas perangkat, kapabilitas IOMMU, konfigurasi firmware, dukungan kernel, dan kebijakan driver semuanya berperan. Keberadaan satu kapabilitas PCIe tidak berarti jalur SVA lengkap sedang aktif.

Cache translasi perangkat mengubah batas biaya

ATS dapat mengurangi trafik translasi berulang pada workload ketika perangkat memakai kembali translasi alamat, tetapi fitur ini tidak menjamin peningkatan latency atau throughput secara universal. Hasil bergantung pada locality akses, perilaku cache endpoint, implementasi IOMMU, frekuensi invalidasi, topologi PCIe, dan karakteristik workload.

Perubahan mapping yang sering juga dapat meningkatkan aktivitas invalidasi. Desain yang memperoleh manfaat dari translasi tersimpan selama akses stabil dapat menghadapi profil biaya berbeda ketika address space berubah cepat. Efek tersebut berasal dari implementasi dan workload, bukan sifat tetap protokol.

Pokok arsitektural yang lebih stabil adalah penempatan state. ATS memungkinkan endpoint menyimpan translasi alamat turunan. Setelah state itu berada di luar IOMMU, lifetime mapping dan invalidasi juga harus mencakup endpoint. Peluang performa dan kewajiban konsistensi berasal dari mekanisme yang sama.