Apa itu Direct Memory Access (DMA)?
Direct Memory Access (DMA) adalah fitur di beberapa arsitektur computer bus yang memungkinkan data dikirim langsung dari perangkat eksternal — seperti hard disk — ke main memory di motherboard komputer, tanpa harus lewat proses panjang di prosesor atau CPU. Artinya, CPU jadi bebas dari kerjaan mindahin data dan bisa fokus ke tugas lain, sehingga kinerja komputer jadi lebih cepat.
Dengan DMA, perangkat seperti hard disk, memori eksternal, kartu grafis, kartu jaringan, atau kartu suara bisa langsung bertukar data dengan memori utama komputer, sambil membiarkan CPU tetap mengerjakan hal lain di waktu yang sama.
Kalau nggak ada DMA, CPU bakal sibuk banget nangani permintaan data dari perangkat eksternal, dan nggak bisa ngerjain proses lain selama transfer berlangsung. Tapi dengan DMA, CPU cukup memulai proses transfer data, lalu bisa lanjut mengerjakan hal lain sementara DMA mengurus proses pengiriman. Hasilnya, transfer data jadi lebih efisien dan CPU nggak terlalu terbebani.
Selain DMA, ada juga Ultra DMA, yang bisa ngasih kecepatan transfer data sampai 33 MBps. Hard disk yang pakai Ultra DMA/33 biasanya juga support mode PIO 1, 3, dan 4, plus multiword DMA mode 2 di 16,6 MBps.
Bagaimana cara kerja DMA?
Biasanya, ada bagian memori tertentu yang disiapkan khusus untuk DMA. Misalnya, di standar bus Industry Standard Architecture (ISA), DMA bisa mengakses memori sampai 16 MB. Standar bus lain bisa saja mengakses seluruh alamat memori. Di PCI (Peripheral Component Interconnect), CPU mendelegasikan kontrol I/O ke PCI controller menggunakan sistem bus master.
DMA bekerja lewat saluran (channel) yang mengirim data antara perangkat eksternal dan memori sistem. Semua komponen seperti CPU, memori, perangkat I/O, dan DMA controller terhubung lewat bus yang juga dipakai untuk channel DMA. DMA controller bertugas memulai proses baca/tulis memori dan membuat alamat memori untuk data yang sedang ditransfer.
CPU akan memerintahkan DMA controller untuk mulai mentransfer data ke alamat memori tertentu. DMA controller akan mengatur alamat tujuan dan jalur baca/tulis, lalu memindahkan data byte demi byte sampai semua blok data terkirim.
DMA controller bisa memindahkan data dengan tiga metode utama:
- Burst mode. CPU memberikan akses penuh ke bus sistem untuk DMA controller, lalu DMA langsung mengirim seluruh blok data dalam satu rangkaian tanpa putus. Setelah selesai, kontrol bus kembali ke CPU. Metode ini cepat, tapi CPU harus berhenti bekerja sementara transfer berlangsung.
- Cycle-stealing mode. Mirip burst mode, tapi di sini DMA hanya mengambil bus untuk memindahkan satu byte, lalu mengembalikan kontrol ke CPU. Proses ini diulang sampai semua data selesai dikirim. Metode ini cocok untuk sistem yang butuh memantau data secara real-time.
- Transparent mode. DMA hanya mentransfer data ketika CPU sedang menjalankan operasi yang nggak pakai bus. Jadi CPU bisa tetap bekerja tanpa berhenti. Metode ini paling lambat, tapi paling efisien untuk performa keseluruhan sistem.
DMA vs. RDMA
Remote Direct Memory Access (RDMA) adalah teknologi serupa DMA, tapi digunakan antar komputer yang terhubung lewat jaringan. Dengan RDMA, dua komputer bisa saling mengakses memori utama tanpa lewat CPU, cache, atau OS masing-masing. Sama seperti DMA lokal, RDMA membebaskan sumber daya dan meningkatkan kecepatan serta efisiensi transfer data, menghasilkan latensi rendah dan throughput tinggi.
RDMA biasanya dipakai di high-performance computing (HPC), analisis big data, superkomputer, atau machine learning yang butuh transfer cepat dan latensi rendah.
Pelajari lebih lanjut cara kerja RDMA dan manfaatnya.