organisasi sistem komputer

advertisement
Arsitektur Komputer
ORGANISASI SISTEM KOMPUTER
Disadur oleh : Freddy
Sebuah komputer digital terdiri dari sebuah sistem interkoneksi processor,
memory, dan input/output device. Bahasan ini mempekenalkan 3 komponen
tersebut dan interkoneksi mereka. Processor, memory, dan I/O device adalah
konsep penting dan akan selalu dibahas pada setiap pelajaran mengenai arsitektur
komputer, sehingga perlu untuk memulai pelajaran arsitektur komputer dengan
memperhatikan 3 komponen tersebut secara keseluruhan.
1. PROCESSORS
Organisasi simple bus –komputer seperti ditunjukkan pada Figure 2.1. CPU
(central processing unit) adalah “otak” dari komputer. Fungsinya mengeksekusi
program yang dikirimkan ke dalam memory utama dengan mengambil instruksiinstruksinya, memeriksanya, dan kemudian mengeksekusi satu per satu.
Komposisi CPU memiliki beberapa bagian yang berbeda. Control unit (CU)
bertanggung jawab mengambil instruksi dari memory utama dan menentukan
tipenya. Aritmetic and logical unit (ALU) melaksanakan operasi-operasi misalnya
seperti penambahan dan Boolean AND yang diperlukan untuk melaksanakan
instruksi-instruksi tersebut.
CPU juga berisi memory berkecepatan tinggi yang digunakan untuk
menyimpan hasil-hasil sementara dan infomarsi kendali tertentu. Memory ini
terdiri dari sejumlah register yang masing-masing mempunyai fungsi tertentu.
Register yang paling penting adalah program counter (PC), yang menunjuk ke
instruksi berikutnya untuk dieksekusi.
Central processing unit (CPU)
Control
unit
Arithmetic
logical unit
(ALU)
I/O Devices
Registers
Main
Memory
Disk
Printer
Bus
Figure 1. Organisasi komputer sederhana dengan satu CPU dan dua I/O devices
Arsitektur Komputer
Penamaan “program counter” agaknya adalah sesuatu yang keliru karena ia
tidak berhubungan sama sekali dengan “counting” (penghitungan), akan tetapi apa
boleh buat istilah ini telah digunakan secara umum. Yang juga penting adalah
instruction register (IR), yang menggenggam instruksi yang secara langsung
dieksekusi. Banyak komputer mempunyai register-register yang lain juga,
beberapanya tersedia pada programmer tingkat 2 dan 3 untuk menyimpan hasilhasil yang segera.
1.1. Eksekusi Instruksi
CPU mengeksekusi setiap instruksi dalam sebuah rangkaian dari langkahlangkah kecil:
1. Mengambil instruksi berikutnya dari memori ke dalam instruction register
(IR).
2. Mengubah program counter (PC) guna menunjuk ke instruksi selanjutnya.
3. Menentukan tipe instruksi yang baru saja diraih.
4. Jika instruksi menggunakan data di dalam memory, menentukan dimana
instruksi tersebut berada.
5. Mengambil data ke dalam internal CPU registers.
6. Mengeksekusi instruksi.
7. Menyimpan hasil di tempat yang layak.
8. Kembali langkah 1 untuk memulai mengeksekusi instruksi selanjutnya.
Rangkaian langkah-langkah ini berulang-ulang ini disebut sebagai fetch-decodeexcute cycle. Ia merupakan pusat dari operasi seluruh komputer.
Uraian ini menerangkan cara sebuah CPU bekerja menyerupai sebuah
program yang ditulis dalam bahasa Inggris. Figure 2 menunjukkan program
informal yang ditulis ulang dalam prosedur Pascal. Fakta yang mungkin adalah
menulis sebuah program yang bisa meniru fungsi dari sebuah CPU yang
memperagakan bahwa sebuah program tidak perlu dieksekusi oleh sebuah
“hardware” CPU yang terdiri dari sebuah kotak yang penuh berisi komponen
elektronik. Malahan, sebuah program dapat dilaksanakan dengan mempunyai
program lain yang mengambil, memeriksa, dan mengeksekusi instruksiinstruksinya. Sebuah program (seperti Fig.2) yang mengambil, memeriksa, dan
mengeksekusi instruksi-instruksi program lain disebut sebuah interpreter.
Padanan antara processor hardware dan interpreter mempunyai implikasi
penting bagi organisasi komputer. Setelah menentukan bahasa mesin (seterusnya
kita sebut L saja) untuk sebuah komputer baru. Kelompok desain bisa
memutuskan apakah mereka ingin membangun sebuah processor hardware untuk
mengeksekusi program-program di dalam L secara langsung, atau apakah mereka
malahan menginginkan menulis sebuah interpreter saja.
Karena sebuah interpreter memecah instruksi-instruksi mesin targetnya ke
dalam langkah-langkah kecil, mesin di mana interpreter dijalankan bisa jadi lebih
sederhana dibandingkan hardware processor. Karena alasan ekonomis dan juga
Arsitektur Komputer
alasan-alasan lain, program-program pada level mesin konvesional dari komputerkomputer sangat modern dilaksanakan oleh interpreter yang berjalan secara total
pada mesin level 1 yang lebih primitif yang kita sebut microprogramming level.
Type word = … ;
address = … ;
mem = array[0..4095] of word ;
procedure interpreter (memory : mem ; ac : word ; StartingAddress : address) ;
{Prosedur ini menginterprestasikan program-program untuk mesin sederhana dengan
1 instruksi per word. Memory terdiri dari sebuah rangkaian word yang berangka
0, …,4095. Mesin mempunyai sebuah processor register yang dinamakan ac, yang
digunakan untuk perhitungan aritmatika. Sebagai contoh, instruksi ADD
menambahkan sebuah word ke ac. Interpreter terus berjalan sampai run bit dimatikan
oleh instruksi HALT. Bentuk dari sebuah proses yang berjalan pada mesin ini terdiri
dari memory, program counter, run bit, dan ac. Bentuk awal (initial state) dilewatkan
melalui parameter-parameter}
var ProgramCounter, DataLocation : address ;
InstrRegister, data : word ;
DataNeeded : boolean ;
InstrType : integer ;
RunBit : 0..1 ;
begin
ProgramCounter := StartingAddress ;
RunBit := 1 ;
while RunBit = 1 do
begin
{Mengambil instruksi berikutnya ke dalam instruction register}
InstrRegister := memory [ProgramCounter] ;
{Memajukan program counter untuk menunjuk kepada instruksi berikutnya}
ProgramCounter := ProgramCounter + 1 ;
{Membaca kode instruksi dan merekam tipenya}
DetermineInstrType(InstrRegister, InstrType} ;
{Melokasikan data yang digunakan oleh instruksi}
FindData(InstrType, InstrRegister, DataLocation, DataNeeded) ;
{Mengambil data dari memory jika ada};
if DataNeeded then data := [memory, DataLocation] ;
{Memajukan proses dengan mengeksekusi isntruksi}
excute(InstrType, data, memory, ac, ProgramCounter, RunBit) ;
end
end;
Figure 2. Interpreter untuk komputer sederhana.
Kumpulan seluruh instruksi yang tersedia bagi programmer pada sebuah
level dinamakan instruction set dari level itu. Sejumlah instruksi di dalam
instruction set berbeda dari mesin ke mesin dan dari level ke level. Misalnya,
Arsitektur Komputer
untuk level mesin konvensional, ukuran instruksi berada pada range 20 sampai
300. Instruction set yang besar tidak terlalu diperlukan, lebih baik yang kecil saja.
Sebuah instructions set yang besar sering berarti bahwa instruksi-instruksinya
sangat tidak umum. Compiler untuk high-level languages, contohnya Ada,
Modula 2, dan Pascal, pada umum tampil lebih baik dengan instruction set kecil.
Mesin-mesin dengan instruction set sangat kecil dinamakan mesin RISC.
1.2. Organisasi CPU
Organisasi internal dari bagian CPU von Neumann klasik ditunjukkan secara
rinnci pada Fig.3. Bagian ini disebut data path dan terdiri dari register-register
(dengan tipe 1 sampai 16) dan ALU (Arithmetic Logical Unit). Register-register
mengumpan dua ALU input register, diberi label A dan B di dalam figure.
Register-register ini menggenggam ALU input selama ALU sedang berhitung.
A+B
A
Registers
B
A
B
ALU input register
ALU
A+B
ALU output register
Figure 3. Data path dari mesin von Neumann
ALU sendiri melaksanakan operasi penambahan, pengurangan, dan operasi
sederhana lainnya pada input, yang menghasilkan sebuah hasil di dalam output
register. Output register ini bisa disimpan kembali ke dalam sebuah register, dan
dari sini jika dibutuhkan akan kembali ke memory.
Instruksi-instruksi bisa dibagi kedalam tiga kategori: register-memory,
register-register, dan memory-memory. Instruksi-instruksi register-memory
mengijinkan memory words untuk diraih ke dalam register-register, dimana
mereka bisa digunakan sebagai input-input ALU dalam sub-rangkaian instruksi.
Sebuah instruksi register-register mengambil dua operand dari register-register,
membawa mereka ke ALU input register, melaksanakan beberapa operasinya,
kemudian menulis hasilnya kembali ke dalam memory. Operasi dari jalur data
adalah jantung dari sebagian besar CPU. Perluasan yang bisa dipertimbangkan, ia
mendefinisikan apa yang mesin bisa kerjakan.
Arsitektur Komputer
1.3. Eksekusi Instruksi Paralel
Para desainer telah berusaha membuat mesin berjalan lebih cepat. Beberapa
perluasan, mesin-mesin dapat diaklerasi dengan hanya meningkatkan kinerja
hardware. Tetapi, beragam keterbatasan fisik membuat hal tersebut seperti
menggapai langit saja. Hukum fisika menyatakan bahwa tak ada satupun benda
yang bisa bergerak melebihi kecepatan cahaya, kira-kira 30 cm/nanosecond dalam
dalam ruang hampa dan 20 cm/nanosecond dalam kabel baja. Ini berarti bahwa
membuat sebuah komputer dengan 1 nanosecond waktu instruksi, jarak total
sinyal-sinyal listrik berjalan dalam CPU ke memory dan kembali lagi ke CPU,
tidak bisa lebih dari 20 cm. Oleh karena itu computer super cepat haruslah
berukuran sangat kecil.
Sayangnya, komputer-komputer cepat menghasilkan lebih banyak panas
dibandingkan komputer-komputer yang lambat, dan menyesuaikan komputer ke
dalam volume kecil menyebabkan penghilangan panas ini menjadi sulit Super
komputer kadang-kadang direndam di dalam cairan freon, sebuah pendinginan,
agar bisa mentransfer panas keluar secepat mungkin. Terutama sekali, membuat
komputer yang berjalan semakin cepat akan semakin sulit, dan juga sangat mahal.
Tetapi, pendekatan lain dimungkinkan. Mungkin sekali membuat sebuah
mesin dengan banyak ALU yang lebih lambat (dan lebih murah) atau bahkan CPU
lengkap dengan kemampuan komputasi yang sama tetapi dengan biaya lebih
rendah. Banyak riset telah dicurahkan pada pembuatan mesin-mesin parallel.
Dalam bahasan ini, kita akan berkenalan dengan beberapa teknik yang digunakan.
Mesin paralel dapat dibagi ke dalam tiga kategori berdasarkan pada seberapa
banyak instruksi dan aliran data yang ia miliki, yakni:
1. SISD : Single Instruction stream, Single Data stream.
2. SIMD : Single Instruction stream, Multiple Data stream.
3. MIMD : Multiple Instruction stream, Multiple Data stream.
Mesin tradisional von Neumann adalah SISD. Ia memiliki satu aliran instruksi (i.e.
satu program), yang dieksekusi oleh satu CPU, dan satu memory yang berisi
datanya. Instruksi pertama diambil dari memory kemudian dieksekusi. Setelah itu
instruksi kedua diambil dan dieksekusi.
Meskipun begitu, dalam model sekuensial ini, sejumlah paralelisme terbatas
bisa jadi mengambil dan memulai instruksi berikutnyan sebelum instruksi yang
sekarang selesai. CDC 6600, misalnya, mempunyai unit fungsional lebih dari satu
(khususnya pada ALU), setiap dari fungsi tersebut bisa melaksanakan operasi
tunggal pada kecepatan tinggi, seperti yang diilustrasikan pada Figure 4. Dalam
contoh ini, kita mempunyai lima unit fungsional, dua masing-masing untuk
operasi-operasi umum penambahan dan perkalian, satu masing-masing untuk
pengurangan dan pembagian.
Arsitektur Komputer
PROCESSORS
Registers
+
+
-
x
:
Figure 4. Sebuah CPU dengan lima unit fungsional yang dapat berjalan secara paralel
Ide dari desain ini adalah control unit mengambil sebuah insruksi kemudian
menyerahkan kepada satu unit fungsional untuk pengeksekusian. Sementara itu,
control unit mengambil instruksi berikutnya dan menyerahkan pada unit
fungsional yang berbeda. Proses ini berlanjut sampai tidak bisa berlangsung lebih
jauh lagi, ini disebabkan seluruh unit fungsional dari tipe yang diperlukan sibuk,
atau disebabkan sebuah operand masih sedang dikomputasi.
Strategi umum jelas sekali mengandung arti bahwa waktu untuk
melaksanakan sebuah operasi jauh lebih lama daripada waktu untuk mengambil
instruksi, sehingga sangat umum digunakan untuk operasi-operasi floating-point
(bilangan float) yang rumit dan lambat, daripada operasi-operasi integer yang
simpel dan cepat.
Penyimpanan pada ide ini adal memecah eksekusi dari setiap instruksi ke
dalam beberapa bagian. Pada
Download