IO yang dipetakan memori berarti bahwa register perangkat dipetakan ke dalam ruang memori mesin - ketika wilayah memori tersebut dibaca atau ditulis oleh CPU, itu membaca dari atau menulis ke perangkat, bukan memori sebenarnya. Untuk mentransfer data dari perangkat ke buffer memori aktual, CPU harus membaca data dari register perangkat yang dipetakan memori dan menuliskannya ke buffer (dan sebaliknya untuk mentransfer data ke perangkat).
Dengan transfer DMA, perangkat dapat langsung mentransfer data ke atau dari buffer memori nyata itu sendiri. CPU memberi tahu perangkat lokasi buffer, lalu dapat melakukan pekerjaan lain saat perangkat mengakses memori secara langsung.
Karena yang lain sudah menjawab pertanyaan, saya hanya akan menambahkan sedikit sejarah.
Dulu, pada perangkat keras x86 (PC), hanya ada ruang I/O dan ruang memori. Ini adalah dua ruang alamat yang berbeda, diakses dengan protokol bus yang berbeda dan instruksi CPU yang berbeda, tetapi dapat berbicara melalui slot kartu plug-in yang sama.
Sebagian besar perangkat menggunakan ruang I/O untuk antarmuka kontrol dan antarmuka transfer data massal. Cara sederhana untuk mengakses data adalah dengan menjalankan banyak instruksi CPU untuk mentransfer data satu kata setiap kali dari alamat I/O ke alamat memori (terkadang dikenal sebagai "bit-banging".)
Untuk memindahkan data dari perangkat ke memori host secara mandiri, tidak ada dukungan dalam protokol bus ISA untuk perangkat yang memulai transfer. Solusi kompromi ditemukan:pengontrol DMA. Ini adalah perangkat keras yang dipasang oleh CPU dan memulai transfer untuk memindahkan data dari alamat I/O perangkat ke memori, atau sebaliknya. Karena alamat I/O-nya sama, pengontrol DMA melakukan operasi yang persis sama seperti yang dilakukan CPU, tetapi sedikit lebih efisien dan memungkinkan kebebasan untuk tetap berjalan di latar belakang (walaupun mungkin tidak selama itu tidak bisa berbicara dengan memori).
Maju cepat ke masa PCI, dan protokol bus menjadi jauh lebih pintar:perangkat apa pun dapat memulai transfer. Jadi, katakanlah, kartu pengontrol RAID dapat memindahkan data apa pun yang disukainya ke atau dari host kapan pun diinginkan. Ini disebut mode "master bus", tetapi tanpa alasan tertentu orang terus menyebut mode ini sebagai "DMA" meskipun pengontrol DMA lama sudah lama hilang. Tidak seperti transfer DMA lama, sering kali tidak ada sama sekali alamat I/O yang sesuai, dan mode master bus seringkali merupakan satu-satunya antarmuka yang ada di perangkat, tanpa mode "bit-banging" CPU sama sekali.
I/O yang dipetakan memori memungkinkan CPU untuk mengontrol perangkat keras dengan membaca dan menulis alamat memori tertentu. Biasanya, ini akan digunakan untuk operasi bandwidth rendah seperti mengubah bit kontrol.
DMA memungkinkan perangkat keras membaca dan menulis memori secara langsung tanpa melibatkan CPU. Biasanya, ini akan digunakan untuk operasi bandwidth tinggi seperti I/O disk atau masukan video kamera.
Ini adalah makalah yang memiliki perbandingan menyeluruh antara MMIO dan DMA.
Pedoman Desain untuk Sistem RDMA Kinerja Tinggi
Direct Memory Access (DMA) adalah teknik untuk mentransfer data dari I/O ke memori dan dari memori ke I/O tanpa campur tangan CPU. Untuk tujuan ini, sebuah chip khusus, bernama DMA controller, digunakan untuk mengontrol semua aktivitas dan sinkronisasi data. Hasilnya, dibandingkan dengan teknik transfer data lainnya, DMA jauh lebih cepat.
Di sisi lain, memori virtual bertindak sebagai cache antara memori utama dan memori sekunder. Data diambil terlebih dahulu dari memori sekunder (hard disk) ke dalam memori utama sehingga data sudah tersedia di memori utama pada saat dibutuhkan. Ini memungkinkan kami untuk menjalankan lebih banyak aplikasi pada sistem daripada yang kami miliki untuk mendukung memori fisik.