INTERRUPT dan DMA pada Processor IntelInterruptInterupsi adalah upaya untuk mengalihkan perhatian Intel 8088 dari program ...
Urutan kerja 8088 saat mengerjakan instruksi INT XX(nilai XX dapat berharga 00H sampai FFH) :1. Menyimpan isi register ke ...
3. Lompat ke alamat routine XXMelompat ke instruksi awal dari routine XX dgn melakukan lompatan JMP SSSS:OOOOdimana SSSS a...
1. Menyimpan isi register ke StackLangkah ini ditujukan untuk mengembalikan kembali isi register setelah routine selesaidi...
dikembalikan. Yang dilakukan :1. Pop IP,2. Pop CS,3. Set Trap Flag,4. Set Interrupt Flag,5. Pop Flag               DMA(DIR...
2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat,menulis      dan membaca data) samapai seluruh blok ...
-Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat DMAcontroller mengambil alih memori, CPU semen...
Upcoming SlideShare
Loading in...5
×

Direct memoryaccess

176

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
176
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Direct memoryaccess"

  1. 1. INTERRUPT dan DMA pada Processor IntelInterruptInterupsi adalah upaya untuk mengalihkan perhatian Intel 8088 dari program yg sedangdikerjakan untuk memberikan pelayanan khusus terlebih dahulu pada yang menginterupsinya.Contoh : Keyboard menginterupsi kerja 8088 karena ada tuts keyboard yg ditekan. Datayg dihasilkan oleh tuts tersebut harus diambil sesegera mungkin oleh Intel 8088.Dilihat dari siapa yg menginterupsi, interupsi dapat dibedakan menjadi 2, yaitu :1. Software generated : dihasilkan dengan menggunakan instruksi INT2. Hardware generated : dihasilkan dengan mengaktifkan sinyal Interrupt pada pin 18 diIntel 8088 (active high)Kedua jenis interupsi di atas akan menyebabkan Intel 8088 mengerjakan suatu routine(program kecil) khusus (Interrupt Service Routine).Software GeneratedDihasilkan oleh instruksi INT yang diikuti nomor interupsinya. Contoh : INT 13 berartiinterupsi nomor 13H.Tipe interupsi ini ada 2 jenis :1. Interupsi yg dihasilkan oleh ROMBIOS(untuk nomor interupsi 0 s.d. nomor interupsi 1FH)2. Interupsi yg dihasilkan oleh sistem operasi yg digunakan(untuk nomor interupsi 20H keatas)Adanya instruksi INT dalam program akan menyebabkan 8088 meninggalkanprogram yg sedang dikerjakan, dan mengerjakan routine khusus untuk nomor interupsitersebut. Setelah routine tersebut selesai dikerjakan, maka 8088 akan kembali ke programsemula yg tadinya ditinggalkan. Pujianto
  2. 2. Urutan kerja 8088 saat mengerjakan instruksi INT XX(nilai XX dapat berharga 00H sampai FFH) :1. Menyimpan isi register ke Stack2. Mencari alamat routine XX3. Lompat ke alamat routine tersebut4. Mengerjakan routine tersebut5. Kembali ke program semula dgn cara mengembalikan semua isi register dari Stack1. Menyimpan isi register ke StackLangkah ini ditujukan untuk mengembalikan kembali isi register setelah routine XXselesai dijalankan. Yang dilakukan :1. Push Flag,2. Clear Interrupt Flag,3. Clear Trap Flag,4. Push CS,5. Push IP2. Mencari alamat routine XXSebelum dapat menjalankan routine XX, 8088 harus mencari terlebih dahulu dimana routineXX tersebut berada.Untuk mendapatkan alamat routine tsb, 8088 akan mencarinya di Interrupt Vector Tableyg ada di alamat 00000H sampai 003FFH (setiap nomor interupsi membutuhkan 4 bytealamat yg disimpan oleh Interrupt Vector Table: 2 byte untuk alamat Segment dan 2 byteuntuk alamat Offset)address content Description003FF 02 Segment address Interrupt #FF003FE 46003FD F0 Offset address003FC 0000003 00 Segment address Interrupt #0000002 C900001 0F Offset address00000 9E Pujianto
  3. 3. 3. Lompat ke alamat routine XXMelompat ke instruksi awal dari routine XX dgn melakukan lompatan JMP SSSS:OOOOdimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset.4. Mengerjakan routine XX8088 akan mengerjakan semua instruksi yg ada sampai ditemukan instruksi IRET(Interrupt Return)5. Kembali ke program semulaJika instruksi IRET dikerjakan, maka semua isi regiter yg tadi disimpan, akandikembalikan. Yang dilakukan :1. Pop IP,2. Pop CS,3. Set Trap Flag,4. Set Interrupt Flag,5. Pop FlagHardware GeneratedAdanya sinyal +5V pada pin 18 pada 8088 akan menyebabkan 8088 meninggalkan programyg sedang dikerjakan, dan mengerjakan routine khusus untuk nomor interupsitersebut. Setelah routine tersebut selesai dikerjakan, maka 8088 akan kembali ke programsemula yg tadinya ditinggalkan.Urutan kerja 8088 saat mendapatkan sinyal aktif pada pin 18 (INTR) :1. Menyimpan isi register ke Stack2. Mengaktifkan sinyal INTA (Interrupt Acknowledged) di pin 243. Membaca nomor interupsi di Address Bus (A0 – A7)4. Mencari alamat routine untuk nomor interupsi tersebut5. Lompat ke alamat routine tersebut6. Mengerjakan routine tersebut7. Kembali ke program semula dgn cara mengembalikan semua isi register dari Stack Pujianto
  4. 4. 1. Menyimpan isi register ke StackLangkah ini ditujukan untuk mengembalikan kembali isi register setelah routine selesaidijalankan.Yang dilakukan :1. Push Flag,2. Clear Interrupt Flag,3. Clear Trap Flag,4. Push CS,5. Push IP2. Mengaktifkan sinyal INTALangkah ini ditujukan agar Interrupt Controller (ex: 8259) memberitahukan 8088nomor interupsinya3. Membaca nomor interupsiMembaca kondisi Address Bus A0 – A7 untuk mengetahui siapa yg menginterupsinya4. Mencari alamat routine yg sesuaiSebelum dapat menjalankan routine yg sesuai, 8088 harus mencari terlebih dahulu dimanaroutine tersebut berada.Untuk mendapatkan alamat routine tsb, 8088 akan mencarinya di Interrupt Vector Table ygsama dgn tabel untuk Software Generated Interrupt.5. Lompat ke alamat routine tersebutMelompat ke instruksi awal dari routine dgn melakukan lompatan JMP SSSS:OOOOdimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset.6. Mengerjakan routine tersebut8088 akan mengerjakan semua instruksi yg ada sampai ditemukan instruksi IRET (InterruptReturn)7. Kembali ke program semulaJika instruksi IRET dikerjakan, maka semua isi regiter yg tadi disimpan, akan Pujianto
  5. 5. dikembalikan. Yang dilakukan :1. Pop IP,2. Pop CS,3. Set Trap Flag,4. Set Interrupt Flag,5. Pop Flag DMA(DIRRECT ACCESS MEMORY)Seperti yang telah dijelaskan sebelumnya bahwa mekanisme interupsi tidak efisien untukmelakukan transfer data yang besar. Transfer data dilakukan per word. Pada mekanismeinterupsi, untuk tiap word data yang ditransfer, prosesor tidak akan menunggu data tersediapada perangkat yang mengirim data maupun data selesai ditulis oleh perangkat yangmenerima data. Dalam situasi tersebut prosesor akan mengganti proses yang sedangdieksekusinya (yang melakukan transfer data) dengan proses lain (context switch). Jikaukuran data yang ditransfer cukup besar, prosesor akan berulang kali melakukan contextswitch, padahal context switch akan menimbulkan overhead. Oleh karena itu kelemahanmekanisme interupsi untuk menangani transfer data yang besar disebabkan oleh contextswitch. Untuk menangani kelemahan tersebut, digunakan suatu unit kontrol khusus yangdisediakan untuk mentrasfer data langsung antar perangkat eksternal dan memori utama tanpaintervensi terus menerus dari prosesor. Unit kontrol khusus tersebut adalah DMA.Sistem modern dapat mengurangi beban CPU untuk melakukan operasi M/K, yaitu denganmenggunakan pengendali DMA. Dengan demikian CPU dapat melakukan tugas lainsementara operasi M/K dilakukan. Setiap pengendali peralatan dapat saja memiliki perangkatkeras DMA tersendiri. Alternatif lain adalah dengan memiliki sebuah pengendali DMA padamotherboard yang mengatur transfer ke berbagai peralatan.Untuk memulai transfer data secara DMA, driver peralatan akan menulis blok perintah DMAmemori yang menunjuk sumber data, tujuan, dan jumlah byte yang akan ditransfer. CPUkemudian akan mengirimkan alamat blok perintah ini pada pengendali DMA. pengendaliDMA akan memproses informasi ini untuk kemudian mengoperasikan bus memori.Transfer sebanyak 1 byte/word per satuan waktu oleh pengendali DMA disebut sebagai cyclestealing karena pengendali menggunakan bus cycle milik CPU. Dengan cycle stealingpenggunaan bus oleh CPU akan tertunda beberapa waktu karena bus digunakan untuk prosesDMA.Tiga langkah dalam transfer DMA: 1. prosesor menyiapkan DMA transfer dengan menyediakan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer. Pujianto
  6. 6. 2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat,menulis dan membaca data) samapai seluruh blok sudah ditransfer.Pengendali DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakanberikutnya.TRANSFER DMA- Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command blockyang berisi pointer yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan/destinasi transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskanalamat command block ini ke DMA controller, sehingga DMA controller dapat kemudianmengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bustersebut untuk melakukan transfer tanpa bantuan CPU. Tiga langkah dalam transfer DMA:- Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari device, operasiyang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknyabyte yang di transfer.- DMA controller memulai operasi (menyiapkan bus, menyediakan alamat, menulis danmembaca data), sampai seluruh blok sudah di transfer.- DMA controller meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakanberikutnya.METODE DMA- Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data.Metode yang pertama adalah metode yang sangat baku dan simple disebut HALT, atau BurstMode DMA, karena DMA controller memegang kontrol dari sistem bus dan mentransfersemua blok data ke atau dari memori pada single burst. Selagi transfer masih dalam progres,sistem mikroprosessor di-set idle, tidak melakukan instruksi operasi untuk menjaga internalregister. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.n Metode yang kedua, mengikut-sertakan DMA controller untuk memegang kontrol darisistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibukdengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA inidisebut cycle stealing mode. Cycle stealing DMA lebih kompleks untuk diimplementasikandibandingkan HALT DMA, karena DMA controller harus mempunyai kepintaran untukmerasakan waktu pada saat sistem bus terbuka.HANDSHAKING DMA- Proses handshaking antara DMA controller dan device controller dilakukan melaluisepasang kabel yang disebut DMA-request dan DMA-acknowledge. Device controllermengirimkan sinyal melalui DMA-request ketika akan mentransfer data sebanyak satu word.Hal ini kemudian akan mengakibatkan DMA controller memasukkan alamat-alamat yangdinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA-acknowledge. Setelah sinyal melalui kabel DMA-acknowledge diterima, device controllermengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request. Pujianto
  7. 7. -Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat DMAcontroller mengambil alih memori, CPU sementara tidak dapat mengakses memori(dihalangi), walau pun masih dapat mengaksees data pada cache primer dan sekunder. Hal inidisebut cycle stealing, yang walau pun memperlambat komputasi CPU, tidak menurunkankinerja karena memindahkan pekerjaan data transfer ke DMA controller meningkatkanperforma sistem secara keseluruhan.Cara-cara Implementasi DMA- Dalam pelaksanaannya, beberapa komputer menggunakan memori fisik untuk proses DMA, sedangkan jenis komputer lain menggunakan alamat virtual dengan melalui tahap“penerjemahan” dari alamat memori virtual menjadi alamat memori fisik, hal ini disebutdirect virtual-memory address atau DVMA.- Keuntungan dari DVMA adalah dapat mendukung transfer antara dua memory mappeddevice tanpa intervensi CPU. Pujianto

×