Peripheral Component Interconnect (PCI)
Defenisi PCI
Peripheral
Component Interconnect (PCI) merupakan bus lokal yang dirancang
sebagai bus bandwidth tinggi yang menyediakan jalur data antara CPU dan beberapa
perangkat peripheral dengan
kinerja tinggi.
PCI masih digunakan untuk kartu khusus tertentu, meskipun banyak tugas yang secara
tradisional dilakukan oleh kartu ekspansi,
sekarang dapat dilakukan sama baiknya oleh perangkat USB.
PCI menyediakan jalur data bersama antara CPU dan
pengendali peripheral di setiap model komputer, mulai dari laptop hingga mainframe. PCI dikembangkan oleh Intel Corporation, PCI pertama kali digunakan di komputer pada tahun 1993 bersamaan dengan bus ISA selama beberapa tahun. Beralih
dari bus lokal ISA
dan VESA,
PCI menjadi bus ekspansi standar
yang digunakan di PC. Dibandingkan
dengan spesifikasi bus lainnya, PCI memberikan sistem yang lebih baik bagi
subsistem I/O berkecepatan tinggi (misalnya graphic display adapter, network
interface controller, disk controller, dll). Saat ini, kebanyakan komputer hanya memiliki slot PCI dan
satu slot AGP untuk adaptor layar.
PCI mendukung
32-bit dan 64-bit jalur data dan dapat berjalan pada kecepatan clock 33
MHz atau 66 MHz. PCI juga memiliki
kemampuan untuk mendukung bus mastering. Spesifikasi
PCI meliputi ukuran fisik dari bus, termasuk wire spacing, bus timing, karakteristik listrik, dan protokol.
Perkembangan PCI :
- PCI 1.0 Juni 1992 memiliki spesifikasi aslinya yang memiliki lebar bus 32 bit atau 64 bit
- PCI 2.0 April 1993, jenis konektor dan papan ekspansi
- PCI 2.1 Juni 1995, operasi 66 MHz di berlakukan, perubahan pada latency, adanya fungsi transaction ordering
- PCI 2.2 Januari 1999, fitur manajemen daya mulai berlaku
- PCI X.1.0 September 1999, spesifikasi PCI. X 133MHz
- Mini PCI November 1999 untuk motherboard dengan foam factor yang kecil.
- PCI 2.3 Maret 20002 pensinyalan 3.3 volt
- X2.0 Juli 2003 dukungan modus kerja 266 MHz sampai 533 MHz
- PCI Express 1.0 Juli 2002, cara transmisi serial dengan kecepatan 2500mb/s. Tiap jalur tiap transmisi tiap arah, menggunakan sinyal 0.8 volt yang di desain untuk menggantikan PCI 2.X dalam sistem komputer
Konfigurasi PCI
PCI
dirancang untuk mendukung bermacam-macam konfigurasi berbasis microprocessor,
baik sistem microprocessor tunggal maupun banyak. PCI memanfaatkan timing
sinkron dan pola arbitrasi tersentralisasi.
Standar PCI mencakup kemampuan plug-and-play penuh. Ini
berarti BIOS komputer atau sistem operasi dapat menentukan kebutuhan sumber
daya (memori, I / O, atau interupsi) dari kartu perangkat secara
otomatis dan menetapkan sumber daya agar tidak ada
konflik dengan kartu perangkat lainnya.
Struktur Bus
PCI dapat dikonfigurasikan sebagai
bus 32-bit atau 64-bit. Ada 50 saluran signal yang diharuskan bagi PCI.
Signal-signal ini dibagi menjadi kelompok-kelompok fungsional sebagai berikut:
·
System pins: Meliputi pin waktu dan reset.
·
Address and Data
pins: Meliputi 32 saluran
yang time-multiplexed bagi alamat dan data. Saluran lainnya di dalam kelompok
ini digunakan untuk menginterpretasi dan memvalidasi saluran-saluran signal
yang membawa alamat dan data.
·
Interface
Control Pins: Mengontrol
timing transaksi dan mengkoordinasikan antara inisiator dan target
·
Arbitration Pins: Tidak seperti saluran signal PCI lainnya, pin-pin
ini bukan saluran yang dipakai bersama-sama. Melainkan , masing-masing master
PCI memiliki pasangan saluran arbitrasinya sendiri yang menghubungkan secar
langsung dengan arbiter bus PCI.
·
Error Reporting
Pins: Digunakan untuk
melaporkan error parity dan error-error lainnya.
Selain itu, spesifikasi PCI mendefinisikan 50 saluran signal optional yang dibagi menjadi kelompok-kelompok fungsional sebagai berikut:
·
Interrupt Pins: Saluran signal ini disediakan bagi
perangkat-perangkat PCI yang harus menghasilkan request untuk layanan. Seperti
halnya pin arbitrasi, pin-pin ini pun bukan
saluran yang dapat dipakai bersama. Melainkan, masing-masing perangkat
PCI memiliki sendiri saluran interrupt ke pengontrol interrupt.
·
Cache Support
Pins: Pin-pin ini
diperlukan untuk mendukung memori pada PCI yang dapat di cache-kan di dalam
processor atau perangkat lainnya. Pin-pin ini mendukung protokol-protokol
snoopy cache.
·
64-bit Bus
Extension Pins: Meliputi 32
saluran yang merupakan time-multiplexed bagi alamat dan data dan dikombinasikan
dengan saluran alamat/data untuk membentuk bus alamat/data 64-bit. Saluran
lainnya didalam kelompok ini digunakan untuk menginterpretasi dan memvalidasi
salura-saluran signal yang membawa alamat dan data. Terakhir, terdapat dua
saluran yang memungkinkan dua buah perangkat PCI untuk menyetujui penggunaan
kemampuan 64-bit.
·
JTAG/Boundary
Scan Pins: Saluran-saluran
signal ini mendukung pengujian prosedur-prosedur yang ditentukan dalam standart
149.1 IEEE.
Perintah-Perintah PCI
Aktifitas bus terjadi dalam bentuk transaksi antara sebuah inisiator, atau
master dengan sebuah target.
Ketika memperoleh kontrol bus, master bus menentukan jenis transaksi yang akan terjadi berikutnya. Selama fase alamat dari suatu transaksi, saluran C/BE dipakai untuk memberikan signal jenis transaksi. Perintah-perintah itu adalah:
Ketika memperoleh kontrol bus, master bus menentukan jenis transaksi yang akan terjadi berikutnya. Selama fase alamat dari suatu transaksi, saluran C/BE dipakai untuk memberikan signal jenis transaksi. Perintah-perintah itu adalah:
1.
Interrupt Acknowledge adalah perintah baca yang ditujukan bagi perangkat
yang berfungsi sebagai pengontrol interrupt pada bus PCI. Saluran alamat tidak
digunakan selama fase alamat, dan saluran byte enable menunjukkan ukuran
interrupt identifier untuk dikembalikan.
2.
Perintah Special Cycle digunakan oleh inisiator untuk melakukan broadcast
pesan ke sebuah target atau lebih.
3.
Perintah I/O Read dan I/O Write digunakan untuk melakukan transfer data antara
inisiator dengan pengontrol I/O. Setiap perangkat I/O memiliki ruang alamatnya
sendiri, dan saluran alamat yang digunakan untuk menunjukkan perangkat tertentu
dan untuk menspesifikasikan data yang akan ditransfer ke perangkat itu atau
ditransfer dari perangkat tersebut.
4.
Perintah-perintah memory read dan write seperti
Memory Read, Memory Read Line, Memory Read Multiple, Memory Write dan Memory
Write and Invalidate digunakan untuk
menspesifikasikan transfer data, yang menempati satu siklus waktu atau lebih.
Interpretasi perintah-perintah ini tergantung pada apakah pengontrol memori
pada bus PCI mendukung protokol PCI untuk transfer antara memori dengan cache
atau tidak. Bila demikian, transfer data ke memori atau dari memori berada pada
saluran cache atau blok. Perintah Memory Write and Invalidate mentransfer data
dalam satu siklus waktu atau lebih ke memori. Selain itu, perintah ini menjamin
bahwa sedikitnya satu saluran cache akan ditulis. Perintah ini mendukung fungsi
cache tentang penulisan kembali ke saluran memori.
5.
Configuration Read dan Configuration Write memungkinkan suatu transfer membaca dan meng-update parameter-parameter
konfigurasi pada perangkat yang terhubung ke PCI. Masing-masing perangkat PCI
dapat meliputi hingga 256 buah register internal yang digunakan selama
inisialisasi sistem untuk mengkonfigurasi perangkat itu.
6.
Perintah Dual Address digunakan oleh inisiator untuk menunjukkan bahwa
inisiator memakai pengalamatan 64 bit.
Transfer Data
Setiap transfer data pada bus PCI
merupakan transaksi tunggal yang terdiri dari sebuah fase alamat dan satu atau
lebih fase data. Disini dijelaskan tentang timing transaksi pembacaan. Semua
kejadian disinkronkan dengan transisi balik pewaktu, yang terjadi di
tengah-tengah pada setiap siklus waktu. Perangkat bus men-sample saluran bus
pada ujung yang naik pada awal siklus bus. Berikut ini adalah kejadian penting Operasi Pembacaan PCI:
a)
Sekali master
bus telah memperoleh kontrol bus, maka master bus akan memulai transaksi dengan
menegaskan FRAME. Saluran ini akan tetap ditegaskan sampai inisiator siap untuk
menyelesaikan fase data yang terakhir. Inisiator juga menaruh alamat awal pada
bus alamat, dan membaca perintah pada saluran C/BE.
b)
Pada awal waktu
ke -2, perangkat target akan mengetahui alamatnya di saluran AD.
c)
Inisiator
berhenti mengendalikan bus AD. Siklus balik (turnaround) diperlukan pada semua
saluran signal yang akan dikendalikan oleh lebih dari sebuah perangkat,
sehingga penurunan signal alamat akan mempersiapkan bus untuk dipakai oleh
perangkat target. Inisiator mengubah informasi pada saluran C/BE untuk memilih
saluran AD yang akan digunakan untuk melakukan transfer data beralamat (dari 1
hingga 4 bit) saat itu. Inisiator mengaskan IRDY untuk menandakan bahwa dirinya
siap untuk butir data pertama.
d)
Target yang
terpilih menunjuk DEVSEL untuk menunjukkan bahwa target telah mengetahui
alamatnya dan akan memberikan respon. Target yang terpilih menempatkan data
yang diminta saluran AD dan menegaskan TRDY untuk mengindikasikan bahwa data
yang valid terdapat pada bus.
e)
Inisiator
membaca data pada awal waktu ke-4 dan mengubah saluran enable byte begitu
diperlukan dalam persiapan pembacaan berikutnya.
f)
Dalam contoh
ini, target membutuhkan beberapa saat untuk mempersiapkan blok kedua untuk
transmisi. Karena itu, target melepaskan TRDY untuk memberi signal kepada
inisiator bahwa tidak akan terdapat data baru selama siklus berikutnya.
Kemudian, inisiator tidak akan membaca saluran data pada awal siklus waktu ke-5
dan tidak mengubah byte enable selama siklus itu. Blok data dibaca pada awal
waktu ke-6
g)
Selama waktu
ke-6, target menempatkan butir data ketiga pada bus. Namun, dalam contoh ini,
inisiator belum siap untuk membaca butir data (misalnya, inisiator mempunyai
kondisi penuh buffer sementara). Karena itu inisiator melepaskan IRDY. Hal ini
akan menyebabkan target untuk menyediakan butir data ketiga pada bus sklus
waktu tambahan.
h)
Inisiator
mengetahui bahwa transfer data ketiga adalah yang terakhir, karena itu
inisiator melepaskan FRAME untuk memberikan signal ke target bahwa itu
merupakan transfer data yang terakhir. Inisiator juga menegaskan IRDY untuk
memberikan signal bahwa dirinya siap untuk menyelesaikan transfer tersebut.
i)
Inisiator
melepaskan IRDY, yang mengembalikan bus ke keadaan idle, dan target melepaskan
TRDY dan DEVSEL.
Arbitrasi
PCI
memanfaatkan pola arbitrasi sentral dan sinkron yang masing-masing masternya
memiliki request unik (REQ) dan signal grant (GNT). Saluran-saluran signal ini
dihubungkan dengan arbitrer sentral dan request-grant handshake sederhana
digunakan untuk memberikan akses ke bus.
Spesifikasi
PCI tidak mengharuskan algoritma arbitrasi khusus. Arbiter dapat menggunakan
pendekatan first-come-first-serve, pendekatan round-robin, atau pola prioritas
lainnya. Master PCI harus mengarbitrasi setiap transaksi yang ingin
dibentuknya, yaitu sebuah transaksi terdiri dari sebuah fase alamat yang
diikuti oleh satu fase data kontigus atau lebih. Langkah-langkah yang terjadi
ketika terjadi arbitrasi untuk bus antara perangkat A dan B adalah sbb:
a)
Pada suatu titik
sebelum awal waktu ke-1, A telah menegaskan signal REQ-nya. Arbiter men-sample
signal ini pada awal siklus waktu ke-1.
PCI Bus Arbiter
b)
Selama siklus
waktu ke-1, B membuat request untuk menggunakan bus dengan menegaskan signal REQ-nya
c)
Pada saat yang
sama. Arbitrer menegaskan GNT-A untuk memberikan hak akses bus kepada A.
d)
Master bus A
men-sample GNT-A pada awal waktu ke-2 dan memeriksa apakah dirinya telah diberi
hak mengakses bus. Master bus juga menemukan pelepasan IRDY dan TRDY, yang
menandakan bahwa bus tersebut dalam keadaan idle. Setelah itu, master bus
menegaskan FRAME dan menempatkan informasi alamat pada bus alamat dan perintah
pada bus C/BE. Master bus juga melanjutkan penegasan REQ-A, karena master bus
memiliki transaksi kedua yang akan dibentuk setelah transaksi ini.
Arbitrasi Bus PCI antara Dua Master
e)
Arbitrer bus
men-sample semua saluran GNT pada awal waktu ke-3 dan membuat keputusan
arbitrasi untuk memberikan hak mengakses bus ke B pada transaksi berikutnya.
Kemudian arbitrer bus menegaskan GNT-B dan melepaskan GNT-A. B tidak akan dapat
menggunakan bus hingga bus itu dikembalikan ke keadaan idle.
f)
A melepaskan
FRAME untuk menandakan bahwa transfer data terakhir (dan satu-satunya) sedang
dilakukan. A menaruh data pada bus data dan memberi signal ke target dengan
IRDY. Target membaca data pada awal siklus waktu berikutnya.
g)
Pada awal waktu
ke-5, B menemukan IRDY dan FRAME yang dilepaskan dan karena itu B dapat
melakukan kontrol terhadap bus dengan menegaskan FRAME. B juga melepaskan
saluran REQ-nya karena B hanya perlu membentuk satu transaksi saja.
Kemudian, master A
memberikan hak akses ke bus bagi transaksi berikutnya.
Perlu dicatat bahwa arbitrasi ada pada saat yang
sama, ketika master bus saat itu sedang melakukan transfer data. Sehingga,
tidak akan terdapat siklus bus yang hilang dalam pembentukan arbitrasi. Hal ini
dikenal sebagai hidden arbitration
(arbitrasi tersembunyi).
Sumber-sumber:
Stallings, William. 1998. Organisasi dan Arsitektur Komputer. Jakarta:
PT. Prenhallindo.
http://www.meinberg.in/support/information/pci-pcix-bus.htm
Sumber
gambar :
PCI Bus Arbiter : http://www.slideshare.net/jeanie_d_a/03-buses
Arbitrasi Bus PCI antara Dua Master : http://slideplayer.com/slide/5157751/