Capaian ingatan terus

**Capaian Ingatan Terus** (**DMA**) membenarkan subsistem perkakasan yang tertentu di dalam sistem komputer untuk mengakses sistem memori untuk membaca dan/atau menulis tanpa pergantungan dengan CPU. Kebanyakan sistem menggunakan DMA termasuklah cakera keras, kad video, kad antara muka LAN, dan kad bunyi.

## Prinsip

DMA adalah satu ciri penting bagi kebanyakan komputer moden, untuk membolehkan perkakasan menghantar data tanpa perlu pergantungan dari CPU dan mengelakkannya dari beban berlebihan. Jika tidak, CPU terpaksa membuat salinan setiap cebisan data dari sumber ke destinasi. Jika ini berlaku, proses membuat salinan akan menjadi perlahan berbanding dengan proses membuat salinan secara blok kerana capaian ke I/O perkakasan akan perlahan disebabkan oleh sistem bas I/O yang lebih perlahan dari sistem RAM. Selain dari itu, juga CPU juga tidak dapat digunakan untuk membuat tugas yang lain.

Pemindahan DMA merupakan proses membuat salinan secara blok dari satu perkakasan ke perkakasan yang lain. Proses ini tidak boleh berlaku secara automatik dan memerlukan CPU untuk memacu pada permulaannya. Untuk sistem DMA dari "pihak ketiga", secara kebiasaanya menggunakan sistem bas ISA, dan proses pemindahan akan dilakukan oleh pengawal DMA (DMAC) di mana alat ini adalah sebahagian dari *chipset* papan induk. Terdapat sistem bas yang lebih laju seperti PCI yang pada kebiasaanya digunakan untuk pengawasian-bas (*bus-mastering*) DMA, di mana perkakasan mengambil alih kawalan ke atas bas dan melakukan pemindahan itu.

Penggunaan utama DMA adalah untuk membuat salinan blok memori dari sistem RAM ke/dari daftar penimbal (*buffer register*) perkakasan. Operasi ini kurang memberikan kesan ketara kepada pemproses, dan pemproses boleh digunakan untuk tugas-tugas yang lain. DMA telah menjadi penting untuk sistem komputer yang berkuasa tinggi. Selain dari itu, DMA penting untuk melakukan persalinan sifar ke perkakasan pemacu alat. Kegunaannya adalah untuk menyelaras paket data, main-semula audio dan penyaluran video (*video streaming*).

## Contoh

### ISA

Sebuah komputer peribadi yang mempunyai sistem ISA dan mengandungi pengawal DMA yang mempunyai 16 saluran, 7 daripadanya adalah untuk kegunaan pemproses. Setiap saluran mempunyai 16-bit daftar alamat dan 16-bit daftar pembilang. Untuk memulakan pemindahan data, pemacu perkakasan perlu menentukan alamat saluran DMA dan daftar pembilangnya bersama-sama dengan arah pemindahan data, sama ada tulis atau baca. Kemudian, beri arahan kepada sistem DMA untuk memulakan pemindahan. Setelah pemindahan tamat, perkakasan akan memberikan isyarat sampukan kepada pemproses.

"Penceraian-pengumpulan" (*scatter-gather*) DMA membenarkan pemindahan berlaku dalam kawasan memori yang berlainan walaupun untuk satu proses pemindahan DMA. Ini bersamaan dengan merantaikan beberapa permintaan DMA. Inovasi ini adalah untuk mengurangkan kesan beban kepada sampukan I/O dan tugas salinan data dari pemproses.

'DRQ' adalah permintaan DMA (*DMA request*); 'DACK' adalah untuk penerimaan DMA (*DMA acknowledge*). Simbol ini telah menjadi umum di dalam skematik sistem komputer yang mempunyai fungsi DMA. Kedua-duanya merupakan saluran isyarat di antara pemproses dan pengawal DMA.