NPM : 10413780
Kelas : 4IB03C
Dikerjakan untuk memenuhi tugas RHIYAN EDYAL, Skom., MMSI
Sekalipun kontroler DMA dapat mentransfer data tanpa intervensi dari prosesor, operasinya tetap berada dibawah kontrol program yang dieksekusi oleh prosesor. Untuk menginisiasi transfer suatu blok word, prosesor mengirim alamat awal, jumlah word dalam blok, dan arah transfer. Pada saat seluruh blok telah ditransfer, kontroler tersebut memberitahu prosesor dengan memunculkan sinyal interupt. Pada saat transfer DMA terjadi, program yang meminta transfer tersebut berhenti bekerja dan prosesor dapat digunakan untuk mengeksekusi program lain. Setelah transfer DMA selesai, prosesor dapat kembali ke program yang meminta transfer tersebut.
Operasi I/O selalu dilakukan oleh OS sebagai respon terhadap request dari program aplikasi. OS juga bertanggung jawab untuk menunda eksekusi satu program dan memulai eksekusi program lain. Sehingga, untuk operasi I/O yang melibatkan DMA, OS menetapkan program yang meminta transfer tsb pada keadaan blocked, menginisiasi operasi DMA, dan memulai eksekusi program lain. Pada saat transfer selesai, kontroler DMA memberitahu prosesor dengan mengirim interupt request. Sebagai responnya, OS menetapkan program yang ditunda ke keadaan runnable sehingga dapat dipilih oleh scheduler untuk melanjutkan eksekusi.
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 (Direct Memory Access) adalah suatu hardware spesial (chip) yang dapat mengontrol aliran bit data antara memory (RAM) dan beberapa controller dari I/O devices tanpa memerlukan interferensi dari CPU secara terus menerus. (Mengakses dan mengontrol memori sistem tanpa interferensi CPU secara terus menerus).
DMA chip atau DMA controller sangat beragam tergantung dari teknologi yang ditanamkan padanya, untuk menjelaskan cara kerjanya akan digunakan jenis yang paling sederhana, yaitu DMA chip yang menangani sebuah transfer setiap waktunya. Berikut ini cara kerjanya:
Kemudian DMA chip akan menaikkan alamat memory untuk digunakan dan melakukan pengurangan pada counter bit data. Proses dari DMA chip melakukan request sampai disk controller mengirimkan sinyal kembali pada DMA chip akan terus berlangsung hingga counter mencapai 0. Ketika counter mencapai 0, maka DMA chip akan melakukan interupt dan memberitahukan pada CPU bahwa proses transfer sudah selesai. Semua transfer data dan sinyal ini dikirimkan melalui suatu bus yang menghubungkan CPU, DMA chip (controller), Disk controller dan main memory.
Sistem Bus, Standard I/O Interface, dan DMA
Jika melihat sebuah arsitektur komputer, tentu membutuhkan suatu penghubung yang dapat menghubungkan antara 'otak' dari komputer itu sendiri yaitu processor, dengan perangkat-perangkat lain, yang dapat memungkinkan untuk sebuah komputer dapat bekerja. Diantaranya merupakan sistem bus, I/O interface, dan DMA (Direct Memory Access).
1. Sistem Bus
Sistem bus, dalam arsitektur komputer adalah sebuah sistem yang digunakan oleh komputer untuk menghubungkan semua komponennya dalam menjalankan tugasnya. Sebuah bus adalah sebutan untuk jalur di mana data dapat mengalir dalam komputer. Jalur-jalur ini digunakan untuk komunikasi dan dapat dibuat antara dua elemen atau lebih. Data atau program yang tersimpan dalam memori dapat diakses dan dieksekusi oleh CPU melalui perantara sistem bus.
Sistem bus adalah suatu proses yang terikat atau saling ketergantungan dengan satu unsur dan unsur-unsur yang lainnya. Bus sendiri memiliki arti yaitu lintasan / jalur. Sistem bus dalam dunia komputer dapat didefinisikan sebagai proses yang menghubungkan antar komponen utama dari sebuah komputer yang memiliki jalur / lintasan masing-masing dimana tetap saling mempengaruhi satu dengan yang lain. Satu bus berisi satu jalur, bus biasanya berbentuk jalur-jalur parallel PCB, ribbon cables, strip connectors (ditemui dalam motherboard), ataupun kumpulan kabel.
Bus terdiri dari 3:
A. Bus Data
Saluran yang memberikan lintasan bagi perpindahan data antara dua modul sistem. Umumnya bus data terdiri dari 8, 16, 32 saluran, jumlah saluran dikaitkan dengan lebar bus data. Karena pada suatu saat tertentu masing-masing saluran hanya dapat membawa 1 bit, maka jumlah saluran menentukan jumlah bit yang dapat diindahkan pada suatu saat. Lebar bus data merupakan factor penting dalam
menentukan kinerja system secara keseluruahan. Bila bus data lebarnya 8 bit, dan setiap instruksi panjangnya 16 bit, maka CPU harus 2 kali mengakses modul memori dalam setiap siklus instruksinya.
B. Bus Alamat
Digunakan untuk menandakan sumber atau tujuan data pada bus data, misalnya CPU akan membaca sebuah word (8, 16, 32 bit) data dari memori, maka CPU akan menaruh alamat word yang dimaksud pada saluran alamat. Lebar bus alamat menentukan kapasitas memori maksimum sistem. Selain itu umumnya saluran alamt juga digunakan untuk mengalamati port-port I/O. Biasanya, bit-bit
berorde lebih tinggi dipakai untuk memilih lokasi memori atau port I/O pada modul. Sebagai contoh, pada alamat bus 8-bit, alamat 01111111 dan di bawahnya dapat mereferensi lokasi-lokasi di dalam modul memori (modul 0) dengan 128 word memori, dan alamat 10000000 dan di atasnya mengacu pada perangkat-perangkat yang terhubung dengan modul I/O (modul 1). Komputer dengan address bus 32 bit bisa mengalamatkan sekitar 4GB data dari memory, sedangkan yang 36 bit bisa mencapai 64GB.
C. Bus Kontrol
Digunakan untuk mengontrol akses ke saluran alamat,
penggunaan data dan saluran alamat. Karena data dan saluran alamat digunakan
bersama oleh seluruh komponen, maka harus ada alat untuk mengontrol
penggunaannya. Signal-signal kontrol melakukan transmisi baik perintah mauun
informasi pewaktuan diantra modul-modul system. Signal-signal pewaktuan
menunjukkan validitas data dan informasi alamat. Sinyal-sinyal perintah
mespesifikasikan operasi-operasi yang akan dibentuk. Umumnya saluran kontrol
meliputi : memory write, memory read, I/O write, I/O read, transfer ACK, bus
request, bus grant, interrupt request, interrupt ACK, clock, reset.
Memory Write : menyebabkan data pada bus akan dituliskan ke dalam lokasi
alamat.
Memory Read : menyebabkan data dari lokasi alamat ditempatkan pada bus .
I/O Write : menyebabkan data pada bus di output kan ke port I/O yang
beralamat.
I/O Read : menyebabkan data dari port I/O yang beralamat ditempatkan
pada bus.
Transfer ACK : menunjukkan bahwa data telah diterima dari bus atau telah
ditempatkan di bus.
Interrupt Request : menandakan bahwa sebuah interrupt ditangguhkan.
Interrupt ACK : memberitahukan bahwa interrupt yang ditangguhkan telah
diketahui.
Clock : digunakan untuk mensinkronkan operasi-operasi.
Reset : menginisialisasi seluruh modul
Operasi BUS
Bila sebuah modul akan mengirimkan data ke modul lainnya, maka modul itu harus
melakukan dua hal yaitu memperoleh penggunaan bus dan memindahkan data melalui bus.
Bila semuah modul akan meminta data dari modul lainnya, maka modul itu harus
memperoleh penggunaan bus dan memindahkan sebuah request ke madul lainnya melalui
6
saluran control dan saluran alamat yang sesuai. Kemudian modul harus menunggu modul
yang di-request untuk mengirimkan data.
Struktur Bus
Suatu sistem bus berisi, biasanya, dari sekitar 50 sampai ratusan saluran yang terpisah.
Masing-masing lintasan ditandai dengan arti atau fungsi. Walaupun ada banyak rancangan
bus yang berbeda, pada bus manapun saluran dapat digolongkan ke dalam tiga golongan
fungsional: data, alamat, dan saluran kontrol. Sebagai tambahan, terdapat saluran
distribusiyang memberikan kebutuhan daya bagi modul yang terhubung.
2. Standard I/O Interface
Interface atau antarmuka adalah penghubung antara dua sistem atau alat media penghubung antara satu subsistem dengan subsistem lainnya. Melalui penghubung ini memungkinkan sumber daya mengalir dari satu subsistem ke subsistem yang lainnya. Keluaran (output) dari suatu subsistem akan menjadi masukan (input) untuk subsistem lainnya dengan melalui penghubung.
Ketika suatu aplikasi ingin membuka data yang ada dalam suatu disk, sebenarnya aplikasi tersebut harus dapat membedakan jenis disk apa yang akan diaksesnya. Untuk mempermudah pengaksesan, sistem operasi melakukan standarisasi cara pengaksesan pada peralatan Input/Output. Pendekatan inilah yang dinamakan interface aplikasi Input/Output.
Interface aplikasi Input/Output melibatkan abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail peralatan-peralatan Input/Output ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini, maka akan lebih mudah untuk membuat fungsi-fungsi standar(interface) untuk mengaksesnya. Lalu kemudian adanya device driver pada masing-masing peralatan Input/Output, berfungsi untuk enkapsulasi perbedaan-perbedaan yang ada dari masing-masing anggota kelas-kelas yang umum tadi. Device driver mengenkapsulasi tiap -tiap peralatan Input/Output ke dalam masing-masing 1 kelas yang umum tadi(interface standar). Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem Input/Output pada kernel. Karena hal ini, subsistem Input/Output dapat bersifat independen dari hardware.
Karena subsistem Input/Output independen dari hardware maka hal ini akan sangat menguntungkan dari segi pengembangan hardware. Tidak perlu menunggu vendor sistem operasi untuk mengeluarkan support code untuk hardware-hardware baru yang akan dikeluarkan oleh vendor hardware.
Perbedaan dari alat-alat I/O dapat dipisahkan dengan mengelompokkan alat-alat yang serupa
ke beberapa kelas generik. Untuk setiap kelas generik terdapat beberapa fungsi yang diberikan
melalui antarmuka standar yang diberikan. Perbedaan detil untuk setiap alat akan dienkapsulasi
pada modul kernel yang disebut device driver. Driver ini dibuat oleh pembuat perangkat untuk
memenuhi kebutuhan setiap peralatan dengan menggunakan salah satu antarmuka standar, atau standard I/O interface.
Penggunaan layer untuk driver peralatan ini menyembunyikan perbedaan setiap pengendali
peralatan dari subsistem I/O pada kernel, sama seperti bagaimana system call I/O menyembunyikan
perbedaan perangkat keras dari aplikasi melalui abstraksi yang berisi kelas-kelas peralatan generik.
Karakteristik peralatan dapat berupa:
1. Character stream , atau blok sebuah peralatan character stream (contoh: terminal) untuk
mentransfer byte satu per satu sedangkan block device akan mentransfer sekumpulan byte
sebagai unit, contohnya adalah disk.
2. Sequensial atau random-access, Sebuah perangkat yang sekuensial memindahkan data yang
sudah pasti seperti yang ditentukan oleh perangkat, contohnya modem, sedangkan pengguna
akses random dapat meminta perangkat untuk mencari ke seluruh lokasi penyimpanan data
yang tersedia, contohnya CD-ROM.
3. Synchronous atau asyinchronous. Perangkat synchronous menampilkan data-data transfer
dengan reaksi yang dapat diduga, contohnya tape, sedangkan perangkat asyinchronous
menampilkan waktu reaksi yang tidak dapat diduga, contohnya keyboard.
4. Sharable atau dedicated. Perangkat yang dapat dibagi digunakan secara bersamaan oleh
beberapa prosesor atau sharable, contohnya keyboard, sedangkan perangkat yang dedicated
tidak dapat digunakan secara bersamaan oleh beberapa prosesor, contohnya tape.
5. Speed of operation. Rentangan kecepatan perangkat dari beberapa bytes per detik sampai
beberapa gigabytes per detik.
6. Read-write, read only, write only.
3. DMA (Direct Memory Access)
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. Transfer DMA dilakukan oleh sirkuit kontrol yang merupakan bagian dari antar muka perangkat I/O. Istilah ini yang sering banyak kita ketahui adalah sebagai kontroler DMA. Kontroler DMA melakukan fungsi yang biasanya dilakukan oleh prosesor pada saat mengakses memori utama (yang sering disebut :RAM). Untuk setiap word yang ditransfer, kontroler ini menyediakan alamat memori dan semua sinyal bus yang mengontrol transfer data. Karena harus mentransfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori untuk word yang berurutan dan mencatat jumlah transfer.
Operasi I/O selalu dilakukan oleh OS sebagai respon terhadap request dari program aplikasi. OS juga bertanggung jawab untuk menunda eksekusi satu program dan memulai eksekusi program lain. Sehingga, untuk operasi I/O yang melibatkan DMA, OS menetapkan program yang meminta transfer tsb pada keadaan blocked, menginisiasi operasi DMA, dan memulai eksekusi program lain. Pada saat transfer selesai, kontroler DMA memberitahu prosesor dengan mengirim interupt request. Sebagai responnya, OS menetapkan program yang ditunda ke keadaan runnable sehingga dapat dipilih oleh scheduler untuk melanjutkan eksekusi.
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 (Direct Memory Access) adalah suatu hardware spesial (chip) yang dapat mengontrol aliran bit data antara memory (RAM) dan beberapa controller dari I/O devices tanpa memerlukan interferensi dari CPU secara terus menerus. (Mengakses dan mengontrol memori sistem tanpa interferensi CPU secara terus menerus).
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 chip atau DMA controller sangat beragam tergantung dari teknologi yang ditanamkan padanya, untuk menjelaskan cara kerjanya akan digunakan jenis yang paling sederhana, yaitu DMA chip yang menangani sebuah transfer setiap waktunya. Berikut ini cara kerjanya:
Pertama, CPU akan memprogram atau mengeset DMA chip dengan mengatur registerinya, agar DMA chip mengetahui apa saja yang perlu ditransfer dan kemana informasi tersebut perlu ditransfer. Selain itu CPU juga akan memberikan command atau perintah pada disk controller untuk membaca data dari disk dan menuliskannya pada internal buffer, serta melakukan checksum untuk memastikan tidak adanya error yang terjadi ketika membaca dan menuliskan data dari disk menuju internal buffer. Bila tidak ada terjadi error maka DMA chip dapat memulai untuk melakukan transfer. DMA chip akan melakukan request kepada disk controller untuk melakukan transfer data menuju main memory (RAM). Selama melakukan transfer menuju memory akan terjadi bus cycle, dan setiap kali selesai menuliskan data pada memory, disk controller akan mengirim suatu sinyal (acknowledgement signal) pada DMA chip.
Kemudian DMA chip akan menaikkan alamat memory untuk digunakan dan melakukan pengurangan pada counter bit data. Proses dari DMA chip melakukan request sampai disk controller mengirimkan sinyal kembali pada DMA chip akan terus berlangsung hingga counter mencapai 0. Ketika counter mencapai 0, maka DMA chip akan melakukan interupt dan memberitahukan pada CPU bahwa proses transfer sudah selesai. Semua transfer data dan sinyal ini dikirimkan melalui suatu bus yang menghubungkan CPU, DMA chip (controller), Disk controller dan main memory.
Sumber:
Eko Budi Setiawan, S.Kom., System Bus Computer Organization, Indonesian Computer University, 2009
No comments:
Post a Comment