Proses Transfer Data Melalui DMA
Pengertian DMA
DMA adalah singkatan dari Direct Memory Access adalah kemampuan pada komputer modern yang memungkinkan perangkat periferal untuk mengirim data ke memori motherboard tanpa intervensi dari CPU.
Pengontrol DMA adalah perangkat keras khusus – sekarang tertanam ke dalam chip dalam prosesor terintegrasi modern – yang mengelola transfer data dan menengahi akses ke bus sistem. Kontroler diprogram dengan pointer sumber dan tujuan (tempat membaca / menulis data), penghitung untuk melacak jumlah byte yang ditransfer, dan pengaturan, yang mencakup I / O dan tipe memori, interupsi dan status untuk siklus CPU.
Transfer dimulai ketika pengontrol DMA diberitahu tentang kebutuhan untuk memindahkan data ke memori oleh beberapa peristiwa (tekan keyboard atau klik mouse, misalnya). Pengontrol menegaskan sinyal permintaan DMA ke CPU untuk menggunakan bus sistem. CPU menyelesaikan operasi saat ini dan memberikan kontrol bus ke pengontrol DMA melalui sinyal yang dikenali DMA. Pengontrol kemudian membaca dan menulis data dan mengontrol sinyal seolah-olah itu adalah CPU, yang pada saat itu adalah dinyatakan (idle). Setelah menyelesaikan transfer, pengontrol DMA menegaskan sinyal permintaan DMA dan CPU pada gilirannya menghapus sinyal pengenalan DMA dan melanjutkan kontrol bus.
DMA diimplementasikan dalam arsitektur bus komputer untuk mempercepat operasi komputer dan memungkinkan multitasking. Biasanya, CPU akan terisi penuh dalam operasi baca / tulis apa pun; Mengaktifkan DMA memungkinkan membaca / menulis data dalam memori internal, memori eksternal dan periferal tanpa keterlibatan CPU, sehingga membuat prosesor tersedia untuk tugas-tugas lain. Ini memastikan operasi yang efisien, karena perpindahan data ke / dari memori adalah salah satu operasi komputer yang paling umum dan membebaskan CPU dari overhead ini dapat menyebabkan peningkatan kinerja yang signifikan.
DMA berguna dalam aplikasi komputasi real time di mana operasi kritis harus dilakukan secara bersamaan. Pemrosesan aliran adalah aplikasi DMA lain, di mana transfer dan pemrosesan data dilakukan secara bersamaan. Banyak sistem perangkat keras menggunakan DMA termasuk pengontrol floppy dan disk drive, kartu grafis, kartu jaringan, kartu suara dan unit pemrosesan grafik.
Kegunaan
DMA;
DMA memiliki kegunaan sebagai berikut :
1. untuk membantu CPU fokus penuh untuk mengerjakan Proses transfer data.
Dengan DMA CPU cukup memulai prosesnya dan bisa melakukan kerja lain selama proses transfer data itu berlangsung dan tinggal menunggu informasi dari DMA controller jika proses transfer itu telah selesai.
2. Membebaskan pemroses menunggui transfer data yang dilakukan perangkat I/O
Saat pemroses ingin membaca atau menulis data,
pemroses memerintahkan DMA controller dengan mengirim informasi berikut :
• Perintah penulisan/pembacaan.
• Alamat perangkat I/O.
• Awal lokasi memori yang ditulis/dibaca.
• Jumlah word (byte) yang
ditulis/dibaca.
3 3.Supaya CPU dapat melakukan pekerjaan atau instruksi yang
berbeda ketika melakukan operasi baca tulis dari perangkat peripheral.
4 4. Dma digunakan intra-chip untuk transfer
data dalam multi-core, terutama dalam sistem multiprocessor-on-chip, di mana
elemen-nya adalah proses yang dilengkapi dengan memori lokal (sering disebut
alas memori) dalam sebuah elemen pemrosesan multi-core processor dapat
mentransfer data ke dan dari memori tanpa menempati prosesor waktu, mesin dan
membuat data tumpang tindih.
5 5.DMA digunakan untuk mentransfer data
antara lokal memori dan memori utama. Komputer yang ada DMA channel dapat
mentransfer data dari dan ke perangkat dengan CPU overhead jauh lebih sedikit
daripada komputer tanpa saluran DMA
TRANSFER DMA (Direct Memory Access)
Jalur Transfer
DMA :
Ada
3 langkah dalam transfer DMA :
- Prosesor menyiapkan DMA prosesor Transfer dengan menyediakan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang akan menjadi sumber, tujuan data, dan banyaknya byte yang akan ditransfer.
- Pengendali DMA memulai operasi dengan menyiapkan bus,menyediakan alamat, menulis, dan membaca data sampai seluruh blok sudah ditransfer.
- Pengendali DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Pada Dasarnya DMA mempunyai 2 metode transfer data;
- HALT atau Burst Mode DMA ialah DMA yang memegang kontroldari sistem bus dan menstransfer semua blok data dari memori ke single burst atau sebaliknya,
- CYCLE STEALING DMA pada metode ini mengikutsertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosesor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus.
Data Transfer With DMA

Penjelasan :
Selama transfer byte masukan blok, urutan berikut terjadi saat byte data dikirim dari antarmuka ke memori:
JENIS-JENIS DMA (Direct Memory Access)
Ada 2 jenis DMA, yaitu:
Selama transfer byte masukan blok, urutan berikut terjadi saat byte data dikirim dari antarmuka ke memori:
- Antarmuka mengirimkan DMA controller permintaan untuk layanan DMA.
- Permintaan bus dibuat ke pin HOLD (aktif Tinggi) pada mikroprosesor tebhe 8086 dan pengendali mendapatkan kontrol bus.
- Isi bus dikembalikan ke kontroler DMA dari pin HOLD Acknowledge (HLDA) (aktve High) pada mikroprosesor 8086.
- Pengontrol DMA menempatkan isi register alamat ke alamat bus
- Pengontrol mengirimkan antarmuka pengakuan DMA, yang memberi tahu antarmuka untuk menempatkan bus data (untuk keluarannya memberi sinyal antarmuka untuk mengunci data berikutnya yang ditempatkan di bus)
- Data dalam bentuk byte ditransfer ke lokasi memori yang ditunjukkan oleh alamat bus.
- Interface mengaitkan data / memasang datanya.
- Permintaan bus dijatuhkan, pin HOLD menjadi rendah, dan pengendali melepaskan bus.
- Isi bus dari mikroprosesor 8086 menurun dan pin HLDA menjadi turun..Register alamat bertambah 1,Hitungan byte dikurangi 1.Jika jumlah byte tidak nol, kembali ke langkah 1, jika tidak hentikan.
Cara kerja DMA adalah sebagai berikut,
disajikan dalam 4 langkah seringkas mungkin.
1. CPU memberikan sinyal pada DMA module
bahwa ada I/O interrupt.
2. DMA module mengambil alih process I/O,
mengambil memory yang berkaitan dari CPU dan memasukkannya dalam address
register di DMA.
3. Sementara CPU melakukan process lain, DMA
mengatur I/O process hingga selesai dengan mengikuti pointer yang ada di
register.
4. Register dan memory yang berubah
dikembalikan pada CPU setelah I/O process selesai.
Dalam
I/O Management di Sistem Operasi, DMA sangat berpengaruh untuk menghindari CPU
yang terlalu lama menangani I/O request. Secara kecepatan akses dan respon
serta data rate, I/O device umumnya membutuhkan waktu jauh lebih lama dari
pemrosesan process pada umumnya. Sehingga daripada CPU disia-siakan untuk
menunggu, dibuatlah DMA module yang mendukung DMA.
Ada 2 jenis DMA, yaitu:
- Third−party DMA, untuk melakukan operasi transfer data menggunakan DMA controller yang ada pada motherboard.
- First−party DMA (busmastering DMA). Untuk melakukan operasi transfer data dikerjakan oleh bagian logic di interface card
- Transfer data dari buffer ke memori atau sebaliknya dilakukan perkarakter
- Dimana setiap kali transfer selalu ada interrup dari CPU sebelum dan sesudah transfer.
- Jika waktu untuk mentranfer satu karakter sebesar 2 us dan sekali interrupt butuh 1ms , maka untuk mentransfer data dari memori ke buffer butuh 4 us per karakter
- Dengan menggunakan DMA transfer data dapat dilakukan secara langsung oleh device controller per-blok tanpa ada campur tangan dari CPU.
- CPU hanya memberikan interrupt sebelum dan sesudah transfer setiap blok
Fungsi dari DMA sendiri adalah agar
CPU dapat melakukan pekerjaan atau instruksi yang berbeda ketika melakukan
operasi baca tulis dari perangkat peripheral. Tanpa adanya DMA CPU akan terus
sibuk melakukan operasi baca tulis (transfer data) dan tidak dapat melakukan
atau menyelesaikan instruksi yang lain. Dengan adanya DMA, CPU cukup
mempersiapkan DMA chip dengan cara memberikan beberapa informasi seperti jumlah
data bit yang ditransfer, alamat dari device dan memory yang diperlukan dan
arah dari aliran data tersebut, setelah itu DMA chip sendiri yang akan menyelesaikannya.
DMA chip akan melakukan interupt, ketika pekerjaannya sudah selesai. Selama DMA
chip melakukan tugasnya hingga munculnya interupt, CPU dapat menyelesaikan
instruksi yang lainnya.
DMA juga digunakan intra-chip untuk transfer data dalam multi-core, terutama dalam sistem multiprocessor-on-chip, di mana elemen-nya adalah proses yang dilengkapi dengan memori lokal (sering disebut alas memori) dan DMA digunakan untuk mentransfer data antara lokal memori dan memori utama. Komputer yang ada DMA channel dapat mentransfer data dari dan ke perangkat dengan CPU overhead jauh lebih sedikit daripada komputer tanpa saluran DMA . Demikian pula di dalam sebuah elemen pemrosesan multi-core processor dapat mentransfer data dari memori tanpa menempati prosesor waktu, mesin dan membuat data tumpang tindih.
Hubungan DMA dengan Input dan
Output :
Hubungan antara CPU dengan main
memory ataupun dengan alat-alat input atau output dilakukan dengan suatu jalur
yang di sebut dengan bus. Hubungan antara CPU dengan main memory melalui jalur
bus yang dilekatkan pada memory data register, memory address register dan
control unit di CPU. Sedangkan bus yang menghubungkan CPU dengan alat-alat
input/output tidak dilekatkan langsung ke alat-alat input/output tersebut, tapi
dapat melalui suatu alat port atau DMA controller atau channel.
Kesimpulan Komputer tersusun atas
beberapa komponen penting, seperti CPU, memory, perangkat I/O. Sistem bus
adalah penghubung bagi keseluruhan komponen dalam menjalankan tugasnya.
Kumpulan lintasan atau saluran berbagai modul disebut interkoneksi. Direct
memory access (DMA) adalah suatu alat pengendali khusus disediakan untuk
memungkinkan transfes blok data langsung antar perangkat eksternal dan memori
utama, tanpa intervensi terus menerus dari prosesor. Tanpa adanya DMA, maka
proses input/output akan selalu membuat CPU fokus penuh untuk mengerjakan
proses transfer data dan menyebabkan proses menjadi lambat. Dengan adanya DMA,
CPU cukup memulai prosesnya dan bisa melakukan kerja lain selama proses
transfer itu berlangsung dan tinggal menunggu informasi dari DMA controller
jika proses transfer sudah selesai sehingga alur pemrosesan menjadi jauh lebih
efisien
Kelebihan DMA
- Dapat menirukan sebagian fungsi processor.
- Dapat mengambil alih fungsi processor yang berhubungan dengan transfer data.
- CPU dapat melakukan menejemen operasi baca tulis (transfer data) dengan baik dan juga dapat menyelesaikan instruksi yang lain.
- Mendapat informasi tentang jumlah data bit yang ditransfer, alamat dari device dan memory yang diperlukan dan arah dari aliran data.
- Transfer rate data terbatas.
- Masih memerlukan keterlibatan CPU, sehingga CPU menjadi lebih sibuk.
Tanpa DMA, diprogram menggunakan Input/ Output (I/O) mode untuk berkomunikasi dengan perangkat pinggiran, atau menggunakan/ menyimpan instruksi dalam kasus multicore chips, CPU biasanya penuh diduduki untuk seluruh durasi dari operasi membaca atau menulis, dan dengandemikian tidak tersedia untuk melakukan pekerjaan lain. Dengan DMA, CPU akan melakukan transfer, lakukan operasi lainnya sementara transfer yang sedang berlangsung, dan menerima mengganggu dari DMA controller setelah operasi telah selesai. Hal ini sangat berguna dalam real-time komputasi di mana aplikasi tidak stalling belakang yang berbarengan operasi adalah penting. Dan aplikasi lain yang berhubungan dengan berbagai daerah adalah bentuk streaming pemrosesan dimana perlu ada pengolahan data dan transfer paralel, untuk mencapai throughput memadai.
https://www.sridianti.com/pengertian-dma-direct-memory-access.html