Akses Memori Langsung (DMA) ialah kaedah yang membolehkan komputer memindahkan data dengan lebih cekap. Daripada CPU mengendalikan setiap pemindahan, pengawal DMA menghantar data terus antara memori dan peranti. Ini menjimatkan masa, mengurangkan penggunaan kuasa dan membolehkan CPU menumpukan pada tugas lain.

Gambaran Keseluruhan Akses Memori Langsung
Akses Memori Langsung, atau DMA, ialah kaedah yang digunakan komputer untuk memindahkan data dengan lebih cekap. CPU menyelia penghantaran maklumat dari satu tempat ke tempat lain di dalam komputer. Ini mengambil masa dan membuatkan CPU sibuk dengan tugas-tugas kecil.
Dengan DMA, bahagian khas sistem yang dipanggil pengawal DMA mengambil alih tugas ini. Ia membolehkan peranti menghantar atau menerima data terus daripada memori komputer tanpa membuat CPU mengendalikan setiap langkah. Semasa pemindahan berlaku, CPU bebas untuk terus mengerjakan tugas lain.
Persediaan ini menjadikan sistem berjalan lebih lancar kerana CPU tidak diperlahankan oleh pergerakan data yang berterusan. Ia juga membantu menjimatkan kuasa dan meningkatkan prestasi keseluruhan komputer.
Ciri Akses Memori Langsung
Pemindahan Data Berkelajuan Tinggi
DMA membenarkan pemindahan pantas blok data besar tanpa penglibatan CPU, meningkatkan daya proses.
Pemunggahan CPU
CPU dibebaskan daripada tugas pemindahan data yang berulang, menjadikannya tersedia untuk pengiraan.
Mengurangkan Overhed Gangguan
DMA meminimumkan bilangan gangguan berbanding I/O yang diprogramkan, menurunkan overhed sistem.
Memori Langsung
Perifera boleh terus membaca daripada atau menulis ke memori, mengelakkan salinan pengantara CPU tambahan.
Sokongan Berbilang Saluran
Pengawal DMA moden menyokong berbilang saluran bebas, membolehkan pemindahan serentak.
Keupayaan Pemindahan Pecah
DMA menyokong mod pecah, memindahkan blok data dalam satu aliran berterusan untuk kecekapan.
Keutamaan & Timbang Tara
Pengawal DMA menggunakan tahap keutamaan untuk memutuskan saluran mana yang mendapat akses kepada bas memori.
Mod Pemindahan
Menyokong mod yang berbeza seperti pemindahan tunggal, blok, pecah dan berasaskan permintaan bergantung pada keperluan sistem.
Keserasian dengan Berbilang Bas
Berfungsi dengan pelbagai bas sistem untuk penyepaduan yang fleksibel.
Pengesanan & Pengendalian Ralat
Banyak sistem DMA termasuk semakan pariti atau pembetulan ralat untuk memastikan integriti data.
Pemindahan Memori ke Memori
Sesetengah pengawal DMA membolehkan penyalinan data terus dari satu lokasi memori ke lokasi memori yang lain tanpa memerlukan campur tangan CPU.
Operasi DMA Langkah demi Langkah
| Langkah | Apa yang berlaku? | Isyarat / Tindakan |
|---|---|---|
| 1 | Peranti meminta perkhidmatan DMA. | Talian DRQ (Permintaan DMA) diaktifkan |
| 2 | Pengawal DMA meminta kawalan bas sistem. | BR (Permintaan Bas) |
| 3 | CPU melepaskan bas buat sementara waktu kepada pengawal DMA. | BG (Geran Bas) |
| 4 | Pengawal DMA menetapkan alamat memori dan bilangan perkataan (unit data) yang akan dipindahkan. | Daftar Alamat & Kiraan |
| 5 | Data dipindahkan terus antara peranti I/O dan RAM, memintas CPU. | Pemindahan Terus |
| 6 | Selepas selesai, pengawal DMA memaklumkan CPU. | INTR (Terganggu) |
Pengawal DMA dan Sambungannya

Bahagian utama ialah CPU, memori, pengawal DMA dan peranti input/output (I/O). Pengawal DMA menyelia memindahkan data antara memori dan peranti I/O tanpa memerlukan CPU untuk melakukan semua kerja.
Apabila peranti I/O perlu menghantar atau menerima data, ia menghantar permintaan kepada pengawal DMA. Pengawal kemudian meminta kebenaran CPU untuk menggunakan bas sistem, yang merupakan laluan utama untuk data di dalam komputer. Sebaik sahaja CPU membenarkannya, pengawal DMA mengawal dan memindahkan data terus antara memori dan peranti I/O. Selepas pemindahan selesai, ia memberitahu CPU bahawa kerja telah selesai.
Gambar rajah juga menunjukkan garisan berbeza yang membawa maklumat. Baris alamat (kelabu) menentukan ke mana data harus pergi, baris data (hijau) membawa maklumat sebenar dan talian kawalan (oren) menguruskan proses. Bas DMA menyambungkan beberapa peranti I/O ke pengawal. Persediaan ini membantu sistem mengendalikan data dengan lebih lancar dan memastikan CPU percuma untuk tugas lain.
Mod Pemindahan DMA dan Perbezaannya
| Mod | Bagaimana Ia Berfungsi | Kelajuan | Kesan CPU |
|---|---|---|---|
| Mod Pecah | Memindahkan keseluruhan blok data dalam satu jujukan berterusan | Sangat tinggi | CPU dihentikan sehingga pemindahan tamat |
| Mencuri Kitaran | Memindahkan satu perkataan setiap kitaran bas, berselang-seli dengan kitaran CPU | Sederhana | CPU perlahan sedikit, tetapi tidak berhenti |
| Mod Telus | Pemindahan hanya apabila CPU terbiar atau tidak menggunakan bas | Lebih rendah | CPU berjalan tanpa gangguan |
Gaya Utama DMA
Penguasaan Bas (DMA Pihak Pertama)
Dalam penguasaan bas, peranti itu sendiri buat sementara waktu mengambil peranan pengawal bas sistem. Ini bermakna ia boleh membaca terus daripada atau menulis ke memori tanpa pengawasan CPU yang berterusan. Oleh kerana peranti menguruskan pemindahannya sendiri, prosesnya sangat pantas dan cekap. Komponen berprestasi tinggi moden seperti GPU PCIe, pemacu NVMe dan kad rangkaian sering menggunakan kaedah ini. CPU kebanyakannya percuma semasa pemindahan ini, yang meningkatkan prestasi sistem keseluruhan.
DMA Pihak Ketiga (Berasaskan Pengawal)
Dalam model ini, pengawal DMA pusat bertanggungjawab mengendalikan pemindahan data bagi pihak beberapa peranti. Setiap peranti menghantar permintaannya kepada pengawal, yang kemudiannya mengawal bas untuk memindahkan data. Pendekatan ini adalah standard dalam sistem komputer terdahulu dan masih biasa dalam mikropengawal terbenam di mana perkakasan mesti kekal mudah dan menjimatkan kos. Ia lebih perlahan daripada penguasaan bas kerana semua peranti berkongsi pengawal yang sama, yang memperkenalkan masa menunggu dan overhed.
Kumpulkan DMA Berselerak
Dalam banyak kes, data dalam memori tidak disimpan dalam satu garis lurus. Ia boleh dibahagikan kepada tempat yang berbeza. Scatter-Gather DMA memungkinkan untuk memindahkan semua data ini sekaligus, walaupun ia tersebar.
Pengawal DMA menyimpan senarai di mana setiap data terletak. Ia kemudian mengikuti senarai itu untuk mengumpul kepingan dan memindahkannya sebagai satu blok.
Faedah Scatter-Collect DMA
• Menggerakkan data yang tersebar tanpa langkah tambahan.
• Memerlukan lebih sedikit isyarat kepada CPU.
• Menjadikan pemindahan data lebih pantas dan lancar.
• Menjimatkan ruang memori dengan mengelakkan salinan tambahan.
Penyegerakan DMA dan Cache
DMA memindahkan data terus antara peranti dan memori, manakala CPU sering berfungsi dengan cachenya sendiri. Oleh sebab itu, CPU dan DMA kadangkala boleh melihat versi berbeza bagi data yang sama. Ia adalah masalah kerana jika cache CPU masih mempunyai data lama, perubahan yang dibuat oleh peranti mungkin diabaikan. Jika CPU mempunyai data baharu hanya dalam cachenya, peranti boleh membaca nilai lapuk daripada memori. Ia ditetapkan oleh:
• CPU boleh menyiram cache sebelum peranti membaca, jadi memori mempunyai data terbaharu.
• CPU boleh membatalkan cache selepas peranti menulis, jadi ia memuatkan data yang dikemas kini daripada memori.
• Pemproses moden menggunakan DMA koheren cache, yang mengendalikannya secara automatik.
Peranan IOMMU dalam Keselamatan DMA
| Ciri-ciri | Fungsi | Faedah |
|---|---|---|
| Pemetaan Alamat | Menterjemah permintaan DMA peranti kepada alamat memori yang sah | Mencegah rasuah data yang tidak disengajakan atau berbahaya |
| Pengasingan | Mengehadkan setiap peranti kepada zon memori yang ditetapkan | Melindungi sistem daripada peranti yang rosak atau berniat jahat |
| Sokongan 64-bit | Memanjangkan alamat melebihi had 32-bit | Menyokong peranti moden dengan keperluan memori yang besar |
Kebimbangan Keselamatan: Serangan & Perlindungan DMA
Risiko Keselamatan
• Kecurian data melalui akses DMA yang tidak dibenarkan.
• Suntikan perisian hasad ke dalam memori sistem.
• Serangan pembantu rumah jahat Thunderbolt pada komputer riba.
2 Perlindungan
• Dayakan IOMMU / VT-d / AMD-Vi.
• Gunakan Perlindungan DMA Kernel (Windows).
• Lumpuhkan port luaran yang tidak digunakan.
• Gunakan PC teras selamat dan sekatan BIOS/UEFI.
Aplikasi DMA yang berbeza
Pemindahan Cakera dan Storan
DMA membolehkan pemacu keras, SSD dan pemacu optik memindahkan blok data yang besar terus ke dalam memori tanpa membebankan CPU.
Antara Muka Rangkaian
Kad rangkaian menggunakan DMA untuk memindahkan paket masuk dan keluar dengan cepat, membolehkan komunikasi berkelajuan tinggi tanpa memperlahankan pemproses.
Pemprosesan Audio dan Video
Kad bunyi, pemproses grafik dan peranti tangkapan video bergantung pada DMA untuk mengendalikan aliran data berterusan dengan kependaman yang minimum.
Sistem Terbenam
Mikropengawal menggunakan DMA untuk memunggah pergerakan data berulang (seperti bacaan ADC atau penimbal UART), membebaskan kitaran CPU untuk tugas kawalan.
Rendering Grafik
GPU menggunakan DMA untuk memuatkan tekstur dan kemas kini penimbal bingkai, menyokong pemaparan lancar dalam permainan dan aplikasi visual.
Kesimpulannya
Akses Memori Langsung (DMA) meningkatkan kecekapan komputer dengan memindahkan data terus antara memori dan peranti tanpa bergantung pada CPU. Ini mengurangkan kelewatan, mengurangkan penggunaan kuasa dan membolehkan operasi yang lebih lancar dalam tugas seperti storan, rangkaian dan grafik. Dengan pengendalian ralat dan ciri keselamatan terbina dalam, DMA kekal sebagai kaedah yang boleh dipercayai untuk pemindahan data yang pantas dan cekap.
Soalan Lazim [Soalan Lazim]
Bagaimanakah DMA berbeza daripada I/O yang diprogramkan?
DMA memindahkan data menggunakan pengawal, manakala I/O yang diprogramkan bergantung pada CPU untuk setiap pemindahan.
Bagaimanakah DMA menjimatkan kuasa?
Ia membebaskan CPU daripada pemindahan berterusan, membolehkannya memasuki keadaan kuasa rendah dengan lebih kerap.
Apakah memori yang boleh diakses oleh DMA?
DMA boleh mengakses RAM sistem, memori video, memori penimbal dan kadangkala menyalin data antara kawasan memori.
Bolehkah DMA mengendalikan berbilang peranti sekaligus?
Ya, pengawal DMA menggunakan keutamaan dan timbang tara untuk memutuskan pemindahan peranti yang terlebih dahulu.
Apakah had utama DMA?
Ia tidak cekap untuk pemindahan kecil dan boleh menyebabkan ketidakkonsistenan cache tanpa penyegerakan yang betul.
Mengapakah DMA penting dalam sistem sebenar?
Ia menyediakan pemindahan data kependaman rendah yang pantas supaya CPU boleh menumpukan pada tugas kritikal masa.