Chapter 11 - I/O INTERFACE
DASAR I/O ANTARMUKA
Set instruksi berisi satu jenis instruksi untuk mentransfer informasi ke perangkat I/O (OUT) dan satu lagi untuk membaca informasi dari perangkat I/O (IN). Instruksi (INS dan OUTS, yang ditemukan pada semua versi kecuali 8086/8088) juga disediakan untuk mentransfer string data antara memori dan perangkat I/O. Tabel 11–1 mencantumkan semua versi dari setiap instruksi yang ditemukan dalam set instruksi mikroprosesor.
Instruksi yang mentransfer data antara perangkat I/O dan akumulator mikroprosesor (AL, AX, atau EAX) disebut IN dan OUT. Alamat I/O disimpan dalam register DX sebagai alamat I/O 16-bit atau dalam byte (p8) yang langsung mengikuti opcode sebagai alamat I/O 8-bit. Intel menyebut bentuk 8-bit (p8) sebagai alamat tetap karena disimpan bersama instruksi, biasanya dalam ROM. Alamat I/O 16-bit di DX disebut alamat variabel karena disimpan di DX, dan kemudian digunakan untuk mengalamatkan perangkat I/O. Instruksi lain yang menggunakan DX untuk mengalamatkan I/O adalah instruksi INS dan OUTS.
Port I/O memiliki lebar 8-bit, jadi setiap kali port 16-bit diakses, dua port 8-bit yang berurutan sebenarnya diakses. Port I/O 32-bit sebenarnya adalah empat port 8-bit. Sebagai contoh, port 100H diakses sebagai word, maka 100H dan 101H yang sebenarnya diakses. Port 100H berisi bagian data yang paling tidak signifikan dan port 101H berisi bagian yang paling signifikan.
Setiap kali data ditransfer menggunakan instruksi IN atau OUT, alamat I/O, yang sering disebut nomor port (atau singkatnya port), akan muncul pada bus alamat. Antarmuka I/O eksternal akan mendekode nomor port dengan cara yang sama seperti mendekode alamat memori. Nomor port tetap 8-bit (p8) akan muncul pada koneksi bus alamat A7–A0 dengan bit A15–A8 sama dengan 000000002. Koneksi alamat di atas A15 tidak terdefinisi untuk instruksi I/O. Nomor port variabel 16-bit (DX) akan muncul pada koneksi alamat A15–A0.
Ini berarti bahwa 256 alamat port I/O pertama (00H–FFH) diakses oleh instruksi I/O tetap maupun variabel, tetapi alamat I/O apa pun dari 0100H hingga FFFFH hanya dapat diakses oleh alamat I/O variabel. Dalam banyak sistem khusus, hanya 8 bit paling kanan dari alamat yang didekode, sehingga mengurangi jumlah sirkuit yang diperlukan untuk dekode. Pada komputer PC, semua 16 bit bus alamat didekode dengan lokasi 0000H–03FFH, yang merupakan alamat I/O yang digunakan untuk I/O di dalam PC pada bus ISA (industry standard architecture).
Instruksi INS dan OUTS mengakses perangkat I/O menggunakan register DX, tetapi tidak mentransfer data antara akumulator dan perangkat I/O seperti yang dilakukan oleh instruksi IN dan OUT. Sebaliknya, instruksi-instruksi ini mentransfer data antara memori dan perangkat I/O. Alamat memori ditentukan oleh ES:DI untuk instruksi INS dan oleh DS:SI untuk instruksi OUTS. Seperti instruksi string lainnya, isi penunjuk diinkrementasi atau didekrementasi, seperti yang ditentukan oleh status flag arah (DF). Kedua INS dan OUTS dapat diawali dengan awalan REP, memungkinkan lebih dari satu byte, word, atau doubleword ditransfer antara I/O dan memori.
Pentium 4 dan Core2 yang beroperasi dalam mode 64-bit memiliki instruksi I/O yang sama. Tidak ada instruksi I/O 64-bit dalam mode 64-bit. Alasan utamanya adalah sebagian besar I/O masih 8 bit dan kemungkinan besar akan tetap seperti itu untuk waktu yang tidak terbatas.
FIGURE 11–1 The memory
and I/O maps for the 8086/
8088 microprocessors.
(a) Isolated I/O. (b) Memory-
mapped I/O
Ada dua metode berbeda untuk menghubungkan I/O ke mikroprosesor: isolated I/O dan memory-mapped I/O. Dalam skema isolated I/O, instruksi IN, INS, OUT, dan OUTS mentransfer data antara akumulator atau memori mikroprosesor dan perangkat I/O. Sementara itu, dalam skema memory-mapped I/O, setiap instruksi yang merujuk pada memori dapat melakukan transfer tersebut. Baik isolated maupun memory-mapped I/O masih digunakan, oleh karena itu keduanya dibahas dalam teks ini. Namun, PC tidak menggunakan memory-mapped I/O.
Isolate I/O
Teknik transfer I/O yang paling umum digunakan dalam sistem berbasis mikroprosesor Intel adalah isolated I/O. Istilah isolated menggambarkan bagaimana lokasi I/O diisolasi dari sistem memori di ruang alamat I/O yang terpisah. (Gambar 11–1 mengilustrasikan ruang alamat isolated dan memory-mapped untuk setiap mikroprosesor Intel 80X86 atau Pentium–Core2.) Alamat untuk perangkat isolated I/O, yang disebut port, terpisah dari memori. Karena port terpisah, pengguna dapat memperluas memori hingga ukuran penuh tanpa menggunakan ruang memori apa pun untuk perangkat I/O.
Kekurangan dari isolated I/O adalah data yang ditransfer antara I/O dan mikroprosesor harus diakses oleh instruksi IN, INS, OUT, dan OUTS. Sinyal kontrol terpisah untuk ruang I/O dikembangkan (menggunakan dan ), yang menunjukkan operasi pembacaan ( ) atau penulisan ( ) I/O. Sinyal ini menunjukkan bahwa alamat port I/O, yang muncul di bus alamat, digunakan untuk memilih perangkat I/O. Pada komputer pribadi, port isolated I/O digunakan untuk mengontrol perangkat periferal. Alamat port 8-bit digunakan untuk mengakses perangkat yang terletak di papan sistem, seperti pengatur waktu dan antarmuka keyboard, sementara port 16-bit digunakan untuk mengakses port serial dan paralel, serta sistem video dan drive disk.
Komentar
Posting Komentar