Akses Memori Langsung (DMA): Ciri, Operasi dan Aplikasi

စက် ၁၆ ၂၀၂၅
Sumber: DiGi-Electronics
Lihat: 3897

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.

Direct Memory Access (DMA): Features, Operation, and Applications

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

LangkahApa yang berlaku?Isyarat / Tindakan
1Peranti meminta perkhidmatan DMA.Talian DRQ (Permintaan DMA) diaktifkan
2Pengawal DMA meminta kawalan bas sistem.BR (Permintaan Bas)
3CPU melepaskan bas buat sementara waktu kepada pengawal DMA.BG (Geran Bas)
4Pengawal DMA menetapkan alamat memori dan bilangan perkataan (unit data) yang akan dipindahkan.Daftar Alamat & Kiraan
5Data dipindahkan terus antara peranti I/O dan RAM, memintas CPU.Pemindahan Terus
6Selepas selesai, pengawal DMA memaklumkan CPU.INTR (Terganggu)

Pengawal DMA dan Sambungannya

DMA Controller and Its Connections

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

ModBagaimana Ia BerfungsiKelajuanKesan CPU
Mod PecahMemindahkan keseluruhan blok data dalam satu jujukan berterusanSangat tinggiCPU dihentikan sehingga pemindahan tamat
Mencuri KitaranMemindahkan satu perkataan setiap kitaran bas, berselang-seli dengan kitaran CPUSederhanaCPU perlahan sedikit, tetapi tidak berhenti
Mod TelusPemindahan hanya apabila CPU terbiar atau tidak menggunakan basLebih rendahCPU 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-ciriFungsiFaedah
Pemetaan AlamatMenterjemah permintaan DMA peranti kepada alamat memori yang sahMencegah rasuah data yang tidak disengajakan atau berbahaya
PengasinganMengehadkan setiap peranti kepada zon memori yang ditetapkanMelindungi sistem daripada peranti yang rosak atau berniat jahat
Sokongan 64-bitMemanjangkan alamat melebihi had 32-bitMenyokong 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.