Data Transfer With a DMA Controller


Pengertian DMA



Direct Memory Access (DMA) atau akses memori langsung adalah fitur sistem komputer yang memungkinkan subsistem perangkat keras tertentu mengakses memori sistem utama ( memori akses acak ) yang tidak bergantung pada unit pemrosesan pusat (CPU). Tanpa DMA, saat CPU menggunakan input / output yang diprogram , biasanya CPU tersebut akan terisi penuh selama seluruh durasi operasi baca atau tulis, dan karenanya tidak tersedia untuk melakukan pekerjaan lain. Dengan DMA, CPU pertama-tama memulai transfer, kemudian melakukan operasi lain saat transfer sedang berlangsung, dan akhirnya menerima interupsi dari pengontrol DMA (DMAC) saat operasi selesai. 

Perangkat perangkat keras yang digunakan untuk akses memori langsung disebut pengontrol DMA. Pengontrol DMA adalah unit kontrol, bagian dari rangkaian antarmuka perangkat I/O, yang dapat mentransfer blok data antara perangkat I/O dan memori utama dengan intervensi minimal dari prosesor.

Pengontrol DMA menyediakan antarmuka antara bus dan perangkat input-output. Meskipun mentransfer data tanpa campur tangan prosesor, ia dikendalikan oleh prosesor. Prosesor memulai pengontrol DMA dengan mengirim alamat awal, jumlah kata dalam blok data dan arah transfer data. Yaitu dari perangkat I/O ke memori atau dari memori utama ke perangkat I/O. Lebih dari satu perangkat eksternal dapat dihubungkan ke pengontrol DMA.

Pengontrol DMA berisi unit alamat, untuk menghasilkan alamat dan memilih perangkat I/O untuk transfer. Ini juga berisi unit kontrol dan jumlah data untuk menjaga jumlah jumlah blok yang ditransfer dan menunjukkan arah transfer data.

Ketika transfer selesai, DMA menginformasikan prosesor dengan meningkatkan interupsi. Diagram blok khas pengontrol DMA ditunjukkan pada gambar di bawah ini.

 

Prinsip Kerja DMA Controller

 

Pengontrol DMA harus berbagi bus dengan prosesor untuk melakukan transfer data. Perangkat yang memegang bus pada waktu tertentu disebut bus master. Ketika transfer dari perangkat I/O ke memori atau sebaliknya harus dilakukan, prosesor menghentikan eksekusi arus program, menambah penghitung program, memindahkan data di atas tumpukan, kemudian mengirim sinyal pilih DMA ke pengontrol DMA ke alamat bus.

Jika pengontrol DMA bebas, ia meminta kontrol bus dari prosesor dengan menaikkan sinyal permintaan bus. Prosesor memberikan bus ke pengontrol dengan menaikkan sinyal pemberian bus, sekarang pengontrol DMA adalah master bus.

Prosesor memulai pengontrol DMA dengan mengirimkan alamat memori, jumlah blok data yang akan ditransfer dan arah transfer data. Setelah menetapkan tugas transfer data ke pengontrol DMA, alih-alih menunggu idealnya sampai penyelesaian transfer data, prosesor melanjutkan eksekusi program setelah mengambil instruksi dari stack.

Pengontrol DMA sekarang memiliki kontrol penuh bus dan dapat berinteraksi langsung dengan memori dan perangkat I/O yang tidak tergantung pada CPU. Itu membuat transfer data sesuai dengan instruksi kontrol yang diterima oleh prosesor. Setelah selesai transfer data, ini menonaktifkan sinyal permintaan bus dan CPU menonaktifkan sinyal pemberian bus sehingga memindahkan kontrol bus ke CPU.

Ketika perangkat I/O ingin memulai transfer maka ia mengirim sinyal permintaan DMA ke pengontrol DMA, yang pengontrolnya akui jika bebas. Kemudian pengontrol meminta prosesor untuk bus, menaikkan sinyal permintaan bus. Setelah menerima sinyal bus, transfer data dari perangkat. Untuk pengontrol DMA yang disalurkan, sejumlah perangkat eksternal dapat dihubungkan.

a)     DMA mentransfer data dalam tiga mode yang meliputi yang berikut ini.
Mode Burst : Dalam mode ini DMA menyerahkan bus ke CPU hanya setelah menyelesaikan seluruh transfer data. Sementara itu, jika CPU membutuhkan bus itu harus tetap ideal dan menunggu transfer data.

b)    Mode Stealing Cycle : Dalam mode ini, DMA memberikan kendali bus ke CPU setelah transfer setiap byte. Itu terus mengeluarkan permintaan untuk kontrol bus, melakukan transfer satu byte dan mengembalikan bus. Dengan CPU ini tidak perlu menunggu lama jika membutuhkan bus untuk tugas dengan prioritas lebih tinggi.

c)     Mode Transparan: Di sini, DMA mentransfer data hanya ketika CPU menjalankan instruksi yang tidak memerlukan penggunaan bus.

 

Transfer DMA dengan Pengontrol DMA

 


Dari gambar diatas,  dari alur yang berjalan pada sebuah DMA Controller diatas maka cara kerjanya yaitu :

1.     I/O Interface mengirimkan DMA Controler sebuah request untuk DMA service yaitu data dari I/O Interface melalui modul I/O yang bertanggung jawab atas pengontrolan sebuah perangkat luar menuju Direct memory access.

2.     DMA mengendalikan transfer blok data langsung melalui Control BUS kepada HOLD yang akan menghentikan kegiatan dan melepas bus yang berhubungan dengan unit memori dan I/O, sehingga hal ini memberikan kesempatan bagi proses lain untuk mengambil alih system. Kemudian data yang di alihkan oleh HOLD akan diproses dan diolah oleh sebuah otak dari computer yaitu Central Processing Unit (CPU).

3.     Kemudian CPU mengirimkan Sinyal yang digunakan sebagai pengakuan dari µP bahwa sinyal HOLD telah diterima dan sistem dapat diambil alih oleh prosesor lain. Data akan dikirim melalui Control BUS menuju Memori address register untuk penyimpanan informasi yang harus diatur dan dijaga sebaik-baiknya.

4.     Data yang telah diatur dan dijaga oleh MAR akan dikirimkan melalui Address BUS menuju Direct memory access control. Untuk setiap word yang ditransfer, kontroler ini menyediakan alamat memori dan semua sinyal bus yang mengontrol transfer data.

5.     Karena DMAC harus mentransfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori untuk word yang berurutan dan mencatat jumlah transfer. Alamat memori ini akan melakukan pertukaran data antara perangkat luar dilanjutkan kepada Modul I/O.

6.     Data dalam bentuk byte ditransfer ke lokasi memori yang terindikasi oleh alamat Bus.

7.     Interface memasang datanya .

8.     Bus request kemudian turun melalui Control BUS, Pin HOLD turun dan controller melepaskan Bus masuk pada Central Processing Unit.

9.     Isi Bus dari microprosesor 8086 menurun dan Pin HLDA juga turun, alamat register naik satu jumlah dari byte turun satu. jika jumlah byte bukan 0, kembali ketahap 1 jika sebaliknya maka berhenti.

 

Keterangan:

*      Hold Request ( HOLD). Bila logika 1 diberikan pada pena HOLD, µP akan menghentikan kegiatan dan melepas bus yang berhubungan dengan unit memori dan I/O, sehingga hal ini memberikan kesempatan bagi proses lain untuk mengambil alih system.

*      Hold Acknowledge (HLDA) Sinyal ini digunakan sebagai pengakuan dari µP bahwa sinyal HOLD telah diterima dan sistem dapat diambil alih oleh prosesor lain.

 

Kelebihan dan kekurangan DMA Controller

 

Kelebihan

·       DMA mempercepat operasi memori dengan mem-bypass keterlibatan CPU.

·       Overload kerja pada CPU berkurang.

·       Untuk setiap transfer, hanya beberapa siklus jam yang diperlukan

Kekurangan

·       Masalah koherensi cache dapat dilihat ketika DMA digunakan untuk transfer data.

·       Meningkatkan harga sistem.

Pengontrol DMA ( Direct Memory Access ) digunakan dalam kartu grafis, kartu jaringan, kartu suara, dll. DMA juga digunakan untuk transfer intra-chip pada prosesor multi-core. Beroperasi di salah satu dari tiga mode, DMA dapat sangat mengurangi beban prosesor.

 

Sumber :

https://en.wikipedia.org/wiki/Direct_memory_access

https://abdulelektro.blogspot.com/2019/11/kontrol-direct-memory-access-dma-dalam.html

http://prasetiyo-dbj.blogspot.com/2018/10/data-transfer-with-dma-controller.html

Komentar