Sabtu, 27 Oktober 2018
TRANSFER DATA DENGAN DMA CONTROLLER
PENJELASAN DARI GAMBAR BERIKUT.
Transfer data dengan pengontrol DMA
Selama transfer byte input byte, urutan berikut terjadi ketika data dikirim dari antarmuka ke memori :
- I/O interface mengirimkan DMA controller sebuah permintaan untuk layanan DMA.
- Permintaan Bus dibuat ke pin HOLD (aktif Tinggi) pada mikroprosesor 8086 dan pengendali mendapatkan kontrol bus.
- Sebuah hibah Bus dikembalikan ke pengontrol DMA dari pin Hold Acknowledge (HLDA) (aktif High) pada mikroprosesor 8086.
- Pengendali DMA menempatkan isi register alamat ke bus alamat.
- Pengontrol mengirimkan antarmuka pengakuan DMA, yang memberi tahu antarmuka untuk menempatkan data pada bus data. (Untuk output, ini memberi sinyal antarmuka untuk mengunci data berikutnya yang ditempatkan di bus.)
- Data byte ditransfer ke lokasi memori yang ditunjukkan oleh bus alamat.
- Antarmuka mengaitkan data.
- Permintaan Bus dijatuhkan, pin HOLD pergi Rendah, dan pengendali melepaskan bus.
- Biaya dari mikroprosesor 8086 dijatuhkan dan pin HLDA menjadi Rendah.
- Daftar alamat bertambah sebanyak 1.
- Hitungan byte dikurangi dengan 1.
- Jika jumlah byte tidak nol, kembali ke langkah 1, jika tidak hentikan
PENJELASAN LAIN TENTANG DMA CONTROLLER
transfer data dengan dma controller :
- I/O Device terhubung dengan DMA controller memberikan instruksi yang harus di proses
- DMA controller mengirimkan pemberitahuan ke processor akan ada proses yang dihandle oleh DMA controller
- Processor menginformasikan ke memory bahwa DMA akan mengakses memory untuk pemrosesan suatu instruksi
- DMA Controller terhubung dengan memory dan akses alamat, data yang diperlukan
- DMA controller mengirimkan hasil proses kembali ke I/O device
- Jika proses selesai, DMA controller kembali melaporkan ke processor bahwa proses telah beres dilakukan. Menurut reverensi lain cara kerja DMA sebagai berikut: CPU mengirimkan data data berikut ini ke DMA controller: Perintah read/write Alamat device yang akan diakses Alamat awal blok memori yang akan dibaca/ditulis Jumlah blok data yang akan ditransfer - CPU mengeksekusi program lain - DMA controller mengirimkan seluruh blok data (per satu word) langsung ke memori(tanpa melibatkan CPU) - DMA controller mengirm interrupt ke CPU jika selesai
KEGUNAAN DMA :
Untuk membantu CPU fokus penuh untuk mengerjakan proses transfer data.Dengan 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.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.
Setelah mengirim informasi-informasi itu ke DMA controller, pemroses
dapat melanjutkan kerja lain. Pemroses mendelegasikan operasi I/O ke DMA.
DMA mentransfer seluruh data yang diminta ke/dari memori secara langsung
tanpa melewati pemroses. Ketika transfer data selesai, DMA mengirim
sinyal interupsi ke pemroses. Sehingga pemroses hanya dilibatkan pada
awal dan akhir transfer data. Operasi transfer antara perangkat dan
memori utama dilakukan sepenuhnya oleh DMA lepas dari pemroses dan hanya
melakukan interupsi bila operasi telah selesai.
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 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.
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 .
Seperti yang telah disebutkan , DMA ialah sebuah prosesor khusus (special purpose processor) yang berguna untuk menghindari pembebanan CPU utama oleh program I/O (PIO). Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskan alamat command block ini ke pengendali DMA, sehingga pengendali DMA dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamatalamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.
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) 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 ke dan dari memori tanpa menempati prosesor waktu, mesin dan membuat data tumpang tindih.
Cara Kerja DMA :
CPU mengirimkan CPU data-data berikut ini ke DMA controller:
a)Perintah read/write
b)Alamat device yang akan diakses
c)Alamat awal blok memori yang akan dibaca atau ditulis.
d)Jumlah blok yang akan ditransfer.
CPU klien mengeksekusi program lain.
DMA controller mengirimkan seluruh blok data (per satu word) langsung ke memori tanpa melibatkan CPU)
DMA controler mengirimkan interupt ke CPU jika telah selesai.
DMA controler mengambil alih sistem bus sebanyak 1 siklus.
DMA men-transfer satu word data
Pengambil alihan bus oleh DMA bukan interrupt CPU tidak perlumenyimpan context
CPU hanya tertunda sessaat satu siklus sebelum mengakses bus yaitu sebelum operan atau data diambil atau data ditulis diagram modul DMA
Konfigurasi Modul DMA :
Ø Konfigurasi I
Ø Hanya menggunakan single bus
Ø DMA dan modul I/O terpisah
Ø Setiap transfer harus mengakses bus 2 kali
Ø Konfigurasi II
Ø Hanya menggunakan single bus
Ø DMA controller dan modul I/O terintegrasi
Ø satu DMA controller dapat mengangani lebih dari 1 modu I/O
Ø Setiap transfer hanya perlu mengakses bus satu kali saja
Ø Konfigurasi III
Ø digunakan bus I/O secara terpisah
Ø semua modul I/O cukup dilayani dengan sebuah DMA
Ø Setiap transfer hanya perlu mengakses bus satu kali saja
Jalur Transfer DMA :
Ada 3 langkah dalam transfer DMA :
1. 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.
2. Pengendali DMA memulai operasi dengan menyiapkan bus,menyediakan alamat, menulis, dan membaca data sampai seluruh blok sudah ditransfer.
3. Pengendali DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Pada dasarnya, DMA mempunyai 2 metode untuk transfer data
1. HALT atau Burst Mode DMA ialah DMA yang memegang kontroldari sistem bus dan menstransfer semua blok data dari memori ke single burst atau sebaliknya,
2. 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.
Kelemahan DMA :
Tanpa DMA, diprogram menggunakan input / Output (PIO) 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 yg 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.
Kelebihan DMA :
Kelebihan menggunakan mode DMA sangat terasa pada sistem operasi multitasking seperti Windows, Linux, UNIX, dan sebagainya. Karena transfer data akan menghemat resource processor sehingga processor dapat mengerjakan pekerjaan lain. Keuntungan lainnya adalah kecepatan transfer data dengan menggunakan mode DMA jauh lebih cepat bila dibandingkan dengan menggunakan mode PIO.
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.