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
Posting Komentar