INTERRUPT dan DMA pada Processor Intel

Posted: November 20, 2009 in Tugas

Interrupt

Interupsi adalah upaya untuk mengalihkan perhatian Intel 8088 dari program yg sedang dikerjakan untuk memberikan pelayanan khusus terlebih dahulu pada yang menginterupsinya.

Contoh : Keyboard menginterupsi kerja 8088 karena ada tuts keyboard yg ditekan. Data

yg 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 INT

2. Hardware generated       : dihasilkan dengan mengaktifkan sinyal Interrupt pada pin 18 di Intel 8088 (active high)

Kedua jenis interupsi di atas akan menyebabkan Intel 8088 mengerjakan suatu routine (program kecil) khusus (Interrupt Service Routine).

Software Generated

Dihasilkan oleh instruksi INT yang diikuti nomor interupsinya. Contoh : INT 13 berarti interupsi 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 meninggalkan

program yg sedang dikerjakan, dan mengerjakan routine khusus untuk nomor interupsi

tersebut. Setelah routine tersebut selesai dikerjakan, maka 8088 akan kembali ke program semula yg tadinya ditinggalkan.

Urutan kerja 8088 saat mengerjakan instruksi INT XX

(nilai XX dapat berharga 00H sampai FFH) :

1.   Menyimpan isi register ke Stack

2.   Mencari alamat routine XX

3.   Lompat ke alamat routine tersebut

4.   Mengerjakan routine tersebut

5.   Kembali ke program semula dgn cara mengembalikan semua isi register dari        Stack

1. Menyimpan isi register ke Stack

Langkah ini ditujukan untuk mengembalikan kembali isi register setelah routine XX

selesai dijalankan. Yang dilakukan :

1.   Push Flag,

2.   Clear Interrupt Flag,

3.   Clear Trap Flag,

4.   Push CS,

5.   Push IP

2. Mencari alamat routine XX

Sebelum dapat menjalankan routine XX, 8088 harus mencari terlebih dahulu dimana routine XX tersebut berada.

Untuk mendapatkan alamat routine tsb,  8088 akan mencarinya di Interrupt Vector Table yg ada di alamat 00000H sampai 003FFH (setiap nomor interupsi membutuhkan 4 byte alamat yg disimpan oleh Interrupt Vector Table: 2 byte untuk alamat Segment dan 2 byte untuk alamat Offset)

address content Description
003FF 02 Segment address Interrupt #FF
003FE 46
003FD F0 Offset address
003FC 00
00003 00 Segment address Interrupt #00
00002 C9
00001 0F Offset address
00000 9E

3. Lompat ke alamat routine XX

Melompat ke instruksi awal dari routine XX dgn melakukan lompatan JMP SSSS:OOOO dimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset.

4. Mengerjakan routine XX

8088 akan mengerjakan semua instruksi yg ada sampai ditemukan instruksi IRET

(Interrupt Return)

5. Kembali ke program semula

Jika instruksi IRET dikerjakan, maka semua isi regiter yg tadi disimpan, akan

dikembalikan. Yang dilakukan :

1.   Pop IP,

2.   Pop CS,

3.   Set Trap Flag,

4.   Set Interrupt Flag,

5.   Pop Flag

Hardware Generated

Adanya sinyal +5V pada pin 18 pada 8088 akan menyebabkan 8088 meninggalkan program yg sedang dikerjakan, dan mengerjakan routine khusus untuk nomor interupsi

tersebut. Setelah routine tersebut selesai dikerjakan, maka 8088 akan kembali ke program semula yg tadinya ditinggalkan.

Urutan kerja 8088 saat mendapatkan sinyal aktif pada pin 18 (INTR) :

1. Menyimpan isi register ke Stack

2. Mengaktifkan sinyal INTA (Interrupt Acknowledged) di pin 24

3. Membaca nomor interupsi di Address Bus (A0  – A7)

4. Mencari alamat routine untuk nomor interupsi tersebut

5. Lompat ke alamat routine tersebut

6. Mengerjakan routine tersebut

7. Kembali ke program semula dgn cara mengembalikan semua isi register dari Stack

1. Menyimpan isi register ke Stack

Langkah ini ditujukan untuk mengembalikan kembali isi register setelah routine selesai

dijalankan.

Yang dilakukan :

1.   Push Flag,

2.   Clear Interrupt Flag,

3.   Clear Trap Flag,

4.   Push CS,

5.   Push IP

2. Mengaktifkan sinyal INTA

Langkah ini ditujukan agar Interrupt Controller (ex: 8259) memberitahukan 8088

nomor interupsinya

3. Membaca nomor interupsi

Membaca kondisi Address Bus A0  – A7  untuk mengetahui siapa yg menginterupsinya

4. Mencari alamat routine yg sesuai

Sebelum dapat menjalankan routine yg sesuai, 8088 harus mencari terlebih dahulu dimana routine tersebut berada.

Untuk mendapatkan alamat routine tsb, 8088 akan mencarinya di Interrupt Vector Table yg sama dgn tabel untuk Software Generated Interrupt.

5. Lompat ke alamat routine tersebut

Melompat ke instruksi awal dari routine dgn melakukan lompatan JMP SSSS:OOOO

dimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset.

6. Mengerjakan routine tersebut

8088 akan mengerjakan semua instruksi yg ada sampai ditemukan instruksi IRET (Interrupt Return)

7. Kembali ke program semula

Jika instruksi IRET dikerjakan, maka semua isi regiter yg tadi disimpan, akan

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 untuk melakukan transfer data yang besar. Transfer data dilakukan per word. Pada mekanisme interupsi, untuk tiap word data yang ditransfer, prosesor tidak akan menunggu data tersedia pada perangkat yang mengirim data maupun data selesai ditulis oleh perangkat yang menerima data. Dalam situasi tersebut prosesor akan mengganti proses yang sedang dieksekusinya (yang melakukan transfer data) dengan proses lain (context switch). Jika ukuran data yang ditransfer cukup besar, prosesor akan berulang kali melakukan context switch, padahal context switch akan menimbulkan overhead. Oleh karena itu kelemahan mekanisme interupsi untuk menangani transfer data yang besar disebabkan oleh context switch. Untuk menangani kelemahan tersebut, digunakan suatu unit kontrol khusus yang disediakan untuk mentrasfer data langsung antar perangkat eksternal dan memori utama tanpa intervensi terus menerus dari prosesor. Unit kontrol khusus tersebut adalah DMA.

Sistem modern dapat mengurangi beban CPU untuk melakukan operasi M/K, yaitu dengan menggunakan pengendali DMA. Dengan demikian CPU dapat melakukan tugas lain sementara operasi M/K dilakukan. Setiap pengendali peralatan dapat saja memiliki perangkat keras DMA tersendiri. Alternatif lain adalah dengan memiliki sebuah pengendali DMA pada motherboard yang mengatur transfer ke berbagai peralatan.

Untuk memulai transfer data secara DMA, driver peralatan akan menulis blok perintah DMA memori yang menunjuk sumber data, tujuan, dan jumlah byte yang akan ditransfer. CPU kemudian akan mengirimkan alamat blok perintah ini pada pengendali DMA. pengendali DMA akan memproses informasi ini untuk kemudian mengoperasikan bus memori.

Transfer sebanyak 1 byte/word per satuan waktu oleh pengendali DMA disebut sebagai cycle stealing karena pengendali menggunakan bus cycle milik CPU. Dengan cycle stealing penggunaan bus oleh CPU akan tertunda beberapa waktu karena bus digunakan untuk proses DMA.

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.
  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 tindakan berikutnya.

TRANSFER DMA

–  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/ destinasi transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskan alamat command block ini ke DMA controller, sehingga DMA controller dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU. Tiga langkah dalam transfer DMA:

–  Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari device, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang di transfer.

–  DMA controller memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di transfer.

–  DMA controller meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.

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 Burst Mode DMA, karena DMA controller memegang kontrol dari sistem bus dan mentransfer semua 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 internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.

n  Metode yang kedua, mengikut-sertakan DMA controller untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini disebut cycle stealing mode. Cycle stealing DMA lebih kompleks untuk diimplementasikan dibandingkan HALT DMA, karena DMA controller harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.

HANDSHAKING DMA

–  Proses handshaking antara DMA controller dan device controller dilakukan melalui sepasang kabel yang disebut DMA-request dan DMA-acknowledge. Device controller mengirimkan sinyal melalui DMA-request ketika akan mentransfer data sebanyak satu word. Hal ini kemudian akan mengakibatkan DMA controller memasukkan alamat-alamat yang dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA-acknowledge. Setelah sinyal melalui kabel DMA-acknowledge diterima, device controller mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request.

-Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat DMA controller mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masih dapat mengaksees data pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walau pun memperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke DMA controller meningkatkan performa 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 disebut direct virtual-memory address atau DVMA.

–  Keuntungan dari DVMA adalah dapat mendukung transfer antara dua memory mapped device tanpa intervensi CPU.

sumber : Link http://118.98.212.211/pustakamaya/download.php?id=1697

aqwamrosadi.staff.gunadarma.ac.id

Comments
  1. Pujianto says:

    salam blogger tuker link yuk. . . .
    http://fujhyzhu.wordpress.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s