Komputer digital terdiri atas komponen-komponen
utama prosesor, memori dan perangkat masukan/keluaran. Bab ini akan memberikan
gambaran tentang tiga komponen utama tersebut dan akan menjadi langkah awal
untuk memahami komputer secara menyeluruh. Prosesor, memori, dan perangkat
masukan/keluaran adalah konsep kunci untuk memahami sistem komputer.
A. Prosesor
Organisasi komputer sederhana ditunjukkan pada
Gambar 1 berikut ini. Prosesor atau mikroprosesor
merupakan unit pemroses pusat (Central
Processing Unit) yang sering dikatakan sebagai “otak” komputer.
Fungsi prosesor adalah untuk mengeksekusi
program yang disimpan dalam memori. Tahapan pelaksanaan instruksi adalah: (1)
pengambilan (fecthing) instruksi, (2)
memeriksa dan menginterpretasi instruksi, dan (3) mengeksekusi instruksi.
Komponen-komponen atau bagian komputer tersebut saling tersambung oleh jalur-jalur
konduktor, yang disebut sebagai bus, yang berfungsi sebagai sarana transmisi
data, alamat, dan isyarat kendali.
Prosesor sebenarnya terdiri atas beberapa
bagian fungsional. Pada masa lalu, prosesor direalisasikan dengan beberapa cip
atau beberapa modul rangkaian elektronik. Saat ini prosesor biasanya berupa
saru cip rangkaian terpadu. Secara fungsional, prosesor terdiri atas: (1) unit
kontrol (control unit) yang
bertanggungjawab dalam mengambil instruksi dari memori utama dan memastikan
jenisnya untuk diinterpretasi, (2) ALU (arithmetic
and logic unit) berfungsi untuk melakukan operasi-operasi aritmetika
(jumlah, kurang, kali, bagi, dsb) maupun logika (AND, OR, NOT, SHIFT, dsb).
Prosesor juga berisi memori berukuran kecil,
berkecepatan tinggi untuk menyimpan hasil operasi sementara ataupun informasi
pengendalian tertentu. Memori ini terdiri atas sejumlah register, masing-masing
memiliki ukuran dan fungsi tertentu. Biasanya register-register ini memiliki
ukuran lebar yang sama. Isi register dapat dibaca atau dituliskan dengan
kecepatan tinggi karena ia berada dalam satu cip dengan prosesornya.
Register paling penting di dalam prosesor
adalah Program Counter (PC) atau Pencacah Program, yang berisi alamat memori
yang akan diambil kode atau datanya untuk dieksekusi. Register lainnya adalah
Instruction Register (IR) atau Register Instruksi, yang menyimpan sementara
instruksi yang saat ini sedang dieksekusi. Register-register lain banyak juga
diimplementasikan dalam prosesor, ada yang berdifat serbaguna, ada pula yang
berfugsi khusus.
1. Organisasi Prosesor
Organisasi internal dari prosesor yang
mengikuti arsitektur von Neumann ditunjukkan pada Gambar 2 berikut
ini. Bagian ini disebut sebagai alur data (data path) dan terdiri atas
register-register (antara 1-32 buah), ALU, dan beberapa bus yang menghubungkan
bagian-bagian tersebut. Register-register memberikan masukan pada dua masukan
ALU, yang diberi label A dan B pada Gambar 2
tersebut. Register-register ini menyimpan masukan ALU sementara ALU melakukan
beberapa komputasi.
ALU berfungsi melakukan operasi aritmetika
maupun logika terhadap operan pada kedua lengan masukannya dan mengirimkan
hasilnya ke register tertentu. Dari register penampung ini (biasanya register
khusus yang diberi nama Akumulator) hasil operasi tadi bisa dikirimkan atau
dituliskan ke memori ataupun ke perangkat keluaran.
Kebanyakan instruksi yang dijalankan oleh
prosesor dapat dibagi menjadi dua kategori, yakni operasi dari register ke
memori atau dari register ke register. Instruksi register ke memori
memungkinkan data dalam memori diambil dan dimasukkan ke dalam register, di
mana selanjutnya dapat digunakan sebagai masukan bagi ALU pada instruksi
berikutnya. Satu satuan data dengan lebar tertentu yang dapat ditransfer dari
memori ke regiter dan sebaliknya disebut satu kata (word). Instruksi register ke memori lainnya memungkinkan data yang
ada di register dipindahkan kembali ke memori.
Instruksi jenis lain adalah instruksi register
ke register. Instruksi register ke register pada umumnya mengambil dua operan
dari register, memberikannya ke register masukan ALU, melakukan operasi
aritmetika atau logika tertentu, dan menyimpan kembali hasilnya ke satu
register tertentu. Proses menjalankan dua operan melalui ALU dan menyimpan
hasilnya disebut siklus alur data (data
cycle path). Semakin cepat siklus alur data, semakin cepat prosesor
bekerja.
2.
Eksekusi
Instruksi
Prosesor mengeksekusi
setiap instruksi dalam sederetan langkah-langkah kecil. Langkah-langkah kecil
itu adalah sebagai berikut:
1.
Mengambil
instruksi yang akan dijalankan dari memori dan memasukkannya ke dalam register
instruksi;
2.
Mengubah
isi Program Counter menjadi alamat instruksi berikutnya;
3.
Menentukan
jenis instruksi yang baru saja diambil;
4.
Jika
instruksi menggunakan word di memory,
maka alamat memori tersebut dipastikan keberadaannya;
5.
Mengambil word jika diperlukan, ke dalam register
CPU;
6.
Mengeksekusi
instruksi;
7.
Kembali ke
langkah 1 untuk memulai instruksi berikutnya.
Langkah berurutan
tersebut sering disebut sebagai siklus fetch-decode-execute
yang merupakan langkah operasi utama semua komputer.
Komputer-komputer
generasi awal hanya memiliki perangkat instruksi sederhana dan sedikit
jumlahnya. Perangkat instruksi (instruction
set) adalah kumpulan instruksi-instruksi yang dapat dieksekusi oleh
prosesor. Pada generasi berikutnya, kebutuhan akan komputer dengan kemampuan
besar mendorong berkembangnya instruksi yang kompleks. Sebagai contoh,
instruksi penjumlahan adalah instruksi sederhana yang dapat dilakukan oleh
prosesor dalam satu siklus fetch-decode-execute.
Implementasi instruksi perkalian, yang pada dasarnya adalah penjumlahan
berulang, dilakukan dalam beberapa siklus fetch-decode-execute
dengan instruksi utama yang dilakukan perangkat keras sebenarnya adalah
instruksi penjumlahan itu sendiri. Jadi, instruksi perkalian dilakukan dengan
mengulang-ulang operasi penjumlahan. Operasi penjumlahan dilakukan oleh
perangkat keras prosesor, perulangannya ditentukan oleh program atau deretan
instruksi.
Pada masa awal
perkembangan prosesor, diketahui bahwa instruksi yang lebih kompleks mampu
mempercepat eksekusi program. Instruksi
yang makin kompleks lebih baik karena eksekusi operasi individual kadang-kadang
saling tumpang tindih, atau dieksekusi secara paralel dengan menggunakan
perangkat keras yang berbeda. Untuk komputer yang berharga mahal dan dengen
kinerja sangat tinggi, biaya untuk menambahkan perangkat keras ke dalam cip
atau sistem prosesor (bila diimplementasikan dengan modul-modul rangkaian)
sudah diperhitungkan. Jadi, komputer
yang mahal dan berkinera tinggi memiliki lebih banyak instruksi daripada yang
berharga murah. Meskipun demikian, pada perkembangan berikutnya, meningkatnya
biaya pengembangan perangkat lunak dan kebutuhan akan kompatibilitas antar
komputer menciptakan kebutuhan untuk mengimplementasikan instruksi kompleks
pada komputer murah di mana biaya jauh lebih penting dari pada kecepatan
operasi.
3. RISC versus CISC
Selama tahun 1970-an, banyak eksperimen
dilakukan untuk menggunakan instruksi-instruksi sangat kompleks, yang
dimungkinkan dilakukan oleh prosesor dengan perantaraan interpreter. Perancang
mencoba mendekatkan “semantic gap” antara apa yang bisa dikerjakan oleh mesin
dan apa yang diperlukan oleh bahasa tingkat tinggi. Hampir semua peneliti
berfikir tentang merancang mesin yang sederhana, sebagaimana sekarang dilakukan
untuk merancang sistem operasi, jaringan, pengolah naskah yang lebih sederhana.
Salah satu grup peneliti yang mengikuti
kecenderungan itu dan mencoba mengimplementasikan ide Seymour Cray mengenai minikomputer
berkinerja tinggi adalah grup yang dipimpin oleh John Cocke dari IBM. Karya
mereka menghasilkan minikomputer eksperimental yang diberi nama 801. Meskipun
IBMtidak pernah memasarkan mesin ini dan hasilnya tidak dipublikasikan sampai
beberapa tahun kemudian, beritanya menyebar
dan para peneliti lain memulai
meneliti hal yang sama.
Pada tahun 1980, satu grup di Berkeley di
bawah pimpinan David Patterson dan Carlo Sequinmemulai merancang CPU VLSIyang
tidak menggunakan interpreter. Mereka mengenalkan istilah RISC untuk konsep ini
dan memberi nama prosesornya sebagai RISC I CPU atau disingkat sebagai RISC
II. Tidak lama kemudian, pada tahun
1981, di Stanford, John Henessy merancang dan membuat cip yang agak berbeda
yang diberinama MIPS. Cip ini bergulir menjadi produk komersial penting, SPARC
dan MIPS.
Prosesor-prosesor baru tersebut secara
signifikan berbeda dari pada prosesor komersial yang ada di pasaran saat itu.
Oleh karena prosesor baru ini tidak harus kompatibel ke belakang dengan produk
yang ada sebelumnya maka perancang bebas memilih perangkat instruksi baru yang
akan memaksimalkan performa keseluruhannya. Meskipun titik berat semula adalah
pada instruksi yang sederhana dan dapat dieksekusi dengan sangat cepat, segera
dapat diketahui bahwa merancang instruksi yang dapat dieksekusi dengan cepat
adalah kunci bagi kinerja prosesor yang tinggi.
Pada waktu prosesor sederhana pertama kali
dirancang, karakteristik yang memikat perhatian semua orang adalah sangat
sedikitnya jumlah instruksi yang dimiliki oleh prosesor, yakni hanya sekitar
50. Jumlah instruksi ini jauh lebih kecil dibandingkan dengan angka 200 sampai
300 buah instruksi yang dimiliki oleh komputer DEC VAX dan mainframe IBM. RISC adalah singkatan dari Reduced Instruction Set Computer, dikontraskan dengan CISC (Complex Instruction Set Computer) yang
merujuk pada komputer VAX yang mendominasi pemilikan komputer di departemen
komputer universitas.
Singkat cerita, terjadi persaingan antara dua
kubu, yakni kubu yang mengklaim RISC lebih baik dibandingkan dengan CISC yang
saat itu didominasi oleh komputer-komputer yang sudah mapan (antara lain VAX,
Intel, dan mainframe IBM). Kubu RISC
mengklaim bahwa cara terbaik untuk merancang komputer adalah dengan memberikan
sedikit perangkat instruksi sederhana yang dieksekusi dalam satu siklus alur
data, misalnya, mengambil data dari dua register, mengoperasikannya (aritmetika
ataupun logika), dan menyimpan kembali hasilnya ke register. Argumentasinya adalah,
meskipun mesin RISC memerlukan 4-5 instruksi untuk menjalankan apa yang
dilakukan oleh mesin CISC, jika mesin RISC mampu mengeksekusi 10 kali lebih
cepat maka mesin RISC akan bekerja lebih cepat. Perlu dicatat bahwa saat itu
kecepatan memori utama sepadan dengan kecepatan unit control sehingga lambatnya
interpretasi menurunkan kinerja mesin, sesuatu yang menguntungkan bagi mesin
RISC.
Mungkin anda berfikir, kalau benar teknologi
RISC (yang dimiliki antara lain oleh prosesor UltraSPARC dari Sun) unggul
dibandingkan mesin CISC (misalnya Pentium dari Intel) mengapa prosesor Intel
tepat unggul di pasaran?
Masalah utamanya adalah isu mengenai
kompatibilitas dan jutaan dolar investasi yang telah ditanamkan untuk perangkat
lunak bagi mesin-mesin Intel. Masalah lain adalah, Intel telah memanfaatkan ide
yang sama di dalam mesin CISC. Mulai generasi 486, prosesor Intel berintikan
mesin RISC yang mengeksekusi instruksi paling sederhana (dan paling umum) dalam
satu siklus alur data sementara instruksi-instruksi yang kompleks dieksekusi
dengan cara CISC. Hasil akhirnya adalah untuk instruksi-instruksi yang
sederhana dan umum, eksekusinya sangat cepat, dan tidak cukup cepat untuk
instruksi yang kurang umum. Meskipun pendekatan hibrid ini menjadikan prosesor
Intel tidak secepat prosesor yang murni RISC, performa keseluruhannya cukup
kompetitif, lagi pula masih memungkinkan perangkat lunak lama dioperasikan pada
prosesor generasi barutanpa perlu modifikasi. Ini adalah keuntungan
kompatibilitas yang tidak dimiliki oleh komputer RISC murni.
4. Prinsip Perancangan Komputer Modern
Saat ini telah lewat tigadekade sejak mesin
RISC pertama kali dikenalkan. Beberapa prinsip perancangan RISC diterima
sebagai cara yang baik untuk merancang komputer berdasarkan teknologi perangkat
keras saat ini. Jika perubahan besar pada teknologi perangkat keras ini terjadi
(misalnya suatu teknik pembuatan menjadikan siklus memori 10 kali lebih cepat
daripada waktu siklus CPU saat ini), prinsip perancangan ini bisa saja berubah.
Jadi, para perancang senantiasa harus mencermati perkembangan teknologi karena
mungkin saja akan berpengaruh terhadap perancangan sistem.
Jadi, ada beberapa prinsip perancangan,
kadang-kadang disebut prinsip perancangan RISC yang berupaya diikuti oleh para
perancang prosesor serbaguna. Kendala eksternal, misalnya perlunya
kompatibilitas dengan sistem yang telah dibuat sebelumnya, selalu menjadi salah
satu yang harus dikompromikan dari waktu ke waktu.
Beberapa prinsip perancangan prosesor modern,
antara lain:
1.
Seluruh instruksi dieksekusi
langsung oleh perangkat keras.
Seluruh instruksi
yang umum harus dieksekusi oleh perangkat keras secara langsunng, tidak
diinterpretasi oleh mikroinstruksi. Menghilangkan unit interpretasi memberikan
kecepatan yang tinggi bagi kebanyakan instruksi. Pada komputer yang
mengimplementasikan perangkat instruksi CISC, instruksi yang lebih kompleks
mungkin dipecah-pecah menjadi beberapa bagian yang dieksekusi sebagai urutan
mikroinstruksi. Langkah ekstra ini memperlambat mesin, tetapi untuk
instruksi-instruksi yang jarang digunakan hal ini masih bisa diterima;
2.
Memaksimalkan kecepatan instruksi
diissue (diterbitkan).
Komputer modern menggunakan
banyak trik untuk memaksimalkan performanya, diantaranya dengan mencoba memulai
pengambilan atau penerbitan sebanyak mungkin instruksi perdetik. Jika anda
dapat menerbitkan 500 juta instruksi per detik, anda dapat membangun prosesor
berkecepatan 500 MIPS, tidak peduli berapa lamanya instruksi-instruksi tersebut
selesai dilaksanakan. MIPS adalah kependekan dari Millions of Instruction Per Second.
Prinsip ini menyarankan bahwa paralelisme, yakni mengeksekusi instruksi
secara paralel dapat memegang peran penting dalam memperbaiki performa, karena
penerbitan sejumlah besar instruksi yang lambat dalam waktu yang singkathanya
dimungkinkan jika banyak instruksi dapat dieksekusi sekaligus. Meskipun
instruksi selalu ditemui dalam program secara berurutan, instruksi-instruksi
tersebut tidak selalu diterbitkan secara berurutan (karena mungkin saja sumber
daya yang diperlukan sedang sibuk) dan juga mungkin tidak perlu diselesaikan
secara berurutan. Tentu saja jika instruksi 1 mengisi register dan instruksi 2
menggunakan isi register tersebut, kita harus berhati-hati agar instruksi 2
tidak membaca isi register sampai isinya telah benar sesuai dengan yang dikehendaki.
3.
Instruksi harus mudah didekode
Batas kritis yang
mempengaruhi kecepatan penerbitan instruksi adalah pendekodean instruksi satu
persatu untuk menentukan sumber daya apa sajakah yang diperlukan. Apapun
bantuan yang dapat menolong mekanisme proses ini sangat diperlukan. Misalnya
dengan membuat instruksi teratur, panjangnya tertentu dan tetap, sedikit jumlah
field-nya, dan sebagainya. Semakin
sedikit format berbeda semakin baik.
4.
Hanya instruksi Load dan Store
yang merujuk ke memori.
Salah satu cara untuk memecah
operasi ke dalam step-step yang berbeda adalah menjadikan operan bagi
kebanyakan instruksidatang dan kembali ke register dalam prosesor. Operasi
untuk memindahkan operan dari memori ke register dapat dilakukan oleh instruksi
lainnya.
5.
Sebanyak mungkin disediakan
register
Karena mengakses memori relatif
lambat, maka banyak semakin register yang tersedia (paling kurang 32) semakin
baik sehingga satu word sekaligus
dapat disimpan sampai tidak lagi diperlukan.
0 komentar:
Posting Komentar