ORGANISASI PROCESSOR,REGISTER,SIKLUS
INTRUKSI,FETCHING,DECODING,DAN EXECUTING
Hal-hal
yang perlu dilakukan CPU adalah :
1.Fetch
Instruction / mengambil instruksi : CPU harus membaca instruksi dari memori.
2.Interpret
Instruction / menerjemahkan instruksi : instruksi harus didekode untuk
menentukan aksi apa yang diperlukan.
3.Fetch
Data / mengambil data : eksekusi suatu instruksi mungkin memerlukan pembacaan
data dari memori atau modul I/O.
4.Process
Data / mengolah data : eksekusi suatu instruksi mungkin memerlukan operasi
aritmetika atau logika terhadap data.
5.Write
Data / menulis data : hasil eksekusi mungkin memerlukan penulisan data ke
memori atau modul I/O.
Organisasi register
meliputi jenis-jenis register di bawah ini :
•General
: terdapat 8 buah register general-purpose 32-bit. Register-register ini dapat
digunakan untuk semua jenis instruksi Pentium; register-register ini juga dapat
menampung operand-operand untuk keperluan kalkulasi alamat. Selain itu,
sebagian dari register-register ini juga melayani keperluan-keperluan tertentu.
Misalnya : kalkulasi untai menggunakan isi register-register ECX, ESI dan EDI
sebagai operand tanpa harus mereferensi register-register ini secara eksplisit
di dalam instruksi. Akibatnya, sejumlah instruksi dapat di-enkode lebih
ringkas.
•Segment
: keenam register segmen 16-bit berisi pemilih segmen, yang diindex ke dalam
tabel segmen. Register code segment (CS) mereferensi segmen yang berisi
instruksi yang sedang dieksekusi. Register stack segment (SS) mereferensi
segmen yang berisi user-visible stack. Register-register segmen lainnya (DS,
ES, FS, GS) mengizinkan pengguna untuk mereferensi hingga empat buah segmen
data yang berlainan sekaligus.
•Flags :
register EFLAG berisi kode kondisi (persyaratan) dan bermacam-macam bit mode.
•Instruction
Pointer : berisi alamat instruksi saat itu.
Terdapat
juga register-register yang secara khusus ditujukan bagi unit floating point :
•Numeric
: semua register menampung bilangan floating point 80 bit extended-precision.
Terdapat 8 buah register yang berfungsi sebagai suatu stack, yang pada
register-register ini operasi-operasi push dan pop-nya dapat diperoleh di dalam
set instruksi.
•Control
: register control 16-bit berisi bit-bit yang mengontrol operasi unit floating
point, termasuk jenis kontrol pembulatan ; single atau double extended
precision ; dan bit-bit untuk mengizinkan atau tidak mengizinkan bermacam-macam
kondisi pengecualian.
•Status
: register status 16-bit berisi bit-bit yang merefleksikan status unit floating
point saat itu, termasuk pointer 3-bit ke puncak stack ; kode kondisi yang
melaporkan hasil operasi terakhir ; exception flags.
•Tag
word : register 16-bit ini berisi tag 2-bit bagi semua register numerik floating
point, yang mengindikasikan sifat-sifat isi register yang berkaitan. Keempat
nilainya adalah valid, nol, special (NaN, infinity, denormalized) dan kosong.
Tag-tag ini mengizinkan program untuk memeriksa isi register numerik tanpa
melakukan pendekodean yang kompleks terhadap data sebenarnya yang terdapat di
dalam register.
Register
EFLAG
Mengindikasikan
kondisi processor dan membantu pengontrolan operasinya. Register ini meliputi 6
buah kode kondisi yang didefinisikan dalam carry, parity, auxiliary, nol, sign,
overflow, yang melaporkan hasil operasi integer. Selain itu, terdapat bit-bit
dalam register yang dapat disebut sebagai bit-bit kontrol, yaitu :
•Trap
Flag (TF) : apabila disetel, akan menyebabkan interrupt setelah semua
instruksi. Flag ini digunakan untuk debugging.
•Interrupt
Enable Flag (IF) : apabila disetel, processor akan mengetahui
interrupt-interrupt eksternal.
•Direction
Flag : menentukan apakah instruksi pengolahan string menambah atau mengurangi
half-register SI dan DI 16-bit atau register ESI dan EDI 32-bit.
•I / O
Privilege Flag (IOPL)
•Resume
Flag (RF)
•Alignment
Check (AC)
•Identification
Flag (ID)
Sistem
komputer menggunakan hirarki memori. Pada tingkatan yang atas, memori lebih
cepat, lebih kecil dan lebih mahal (per bit). Di dalam CPU, terdapat sekumpulan
register yang tingkatan memorinya berada di atas hirarki memori utama dan
cache. Register pada CPU memiliki 2 fungsi :
1.
User-visible Registers : register ini memungkinkan pemrogram bahasa mesin dan
bahasa assembler meminimalkan referensi main memori dengan cara mengoptimasi
penggunaan register. Register ini adalah register yang dapat direfensikan
dengan menggunakan bahasa mesin yang dieksekusi CPU.
Secara
virtual semua rancangan CPU modem memiliki sejumlah user-visible register, yang
merupakan kebalikan akumulator tunggal. Kita dapat membedakannya dengan
kategori-kategori berikut ini :
•Register
General Purpose
•Register
Data
•Register
Alamat
•Register
Kode-kode Kondisi
General-Purpose
register dapat di-assign ke berbagai fungsi oleh pemrogram. General-Purpose
register dapat berisi operand sembarang opcode. Dapat digunakan untuk
fungsi-fungsi pengalamatan (mis: register indirect, displacement).
Register
Data hanya dapat dipakai untuk menampung data dan tidak dapat digunakan untuk
kalkulasi dan alamat operand.
Register
alamat menyerupai general-purpose register, atau register-register tersebut
dapat digunakan untuk mode pengalamatan tertentu. Contohnya :
•Segment
pointer => pada sebuah mesin yang memiliki pengalamatan bersegmen, register
segmen menyimpan alamat basis segmen.
•Register
index => register ini digunakan untuk alamat-alamat yang terindeks dan
mungkin autoindexed.
•Stack
pointer => apabila terdapat pengalamatan stack yang user-visible, maka
biasanya stack berada di dalam memori dan terdapat register dedicated yang
menunjuk ke bagian atas stack. Hal ini memungkinkan pengalamatan implisit,
yaitu : push, pop dan instruksi stack lainnya tidak perlu operand stack
eksplisi.
Register
yang harus menampung alamat sedikitnya harus dapat menampung alamat yang
terpanjang. Register-register data harus dapat menampung nilai-nilai sebagian
besar jenis data.
Register
kode-kode kondisi adalah bit-bit yang disetel perangkat keras CPU sebagai hasil
operasi.
2.
Control and Status Registers : register-register ini digunakan oleh unit
kontrol untuk mengontrol operasi CPU dan oleh program sistem operasi untuk
mengontrol eksekusi program. Terdapat 4 macam register yang penting bagi
eksekusi instruksi :
•Program
Counter (PC) atau pencacah program : berisi alamat instruksi yang akan diambil.
•Instruction
Register (IR) : berisi instruksi yang terakhir diambil.
•Memori
Address Register (MAR) : berisi alamat sebuah lokasi di dalam memori.
•Memori
Buffer Register (MBR) : berisi sebuah word data yang akan dituliskan ke dalam
memori atau word yang terakhir dibaca.
Program
counter berisi alamat instruksi. Umumnya program counter di-update oleh CPU
setiap kali mengambil instruksi sehingga program counter selalu menunjuk ke
instruksi berikutnya yang akan dieksekusi.
MAR
terhubung langsung dengan bus alamat, sedangkan MBR terhubung langsung dengan
bus data. Pada saatnya, user-visible register bertukar data dengan MBR.
Keempat
register yang dibahas di atas digunakan untuk perpindahan data di antara CPU
dengan memori. Di dalam CPU, data harus diberikan ke ALU untuk diproses lebih
lanjut. ALU dapat memiliki akses langsung ke MBR dan user-visible register.
Akan tetapi mungkin juga terdapat register buffering lainnya pada batas ALU,
register-register ini berfungsi sebagai register input dan output bagi ALU dan
pertukaran data dengan MBR dan user-visible register.
Semua
rancangan CPU mencakup sebuah register atau sekumpulan register, sering kali
disebut program status word (PSW), yang berisi informasi status. Biasanya PSW
berisi kode kondisi dan informasi status lainnya. Common field atau flag
meliputi hal-hal berikut ini :
•Sign :
berisi bit tanda hasil operasi aritmetika terakhir.
•Zero :
disetel bila hasil sama dengan nol.
•Carry :
disetel bila operasi yang dihasilkan di dalam carry (penambahan) ke dalam bit
yang lebih tinggi atau borrow (pengurangan) dari bit yang lebih tinggi.
Digunakan untuk operasi aritmetika multiword.
•Equal :
disetel bila hasil pembandingan logikanya sama.
•Overflow
: digunakan untuk mengindikasikan overflow aritmetika.
•Interrupt
Enable/Disable : digunakan untuk mengizinkan atau mencegah interrupt.
•Supervisor
: mengindikasikan apakah CPU sedang mengeksekusi dalam mode supervisor atau
mode user. Instruksi privileged tertentu hanya dapat dieksekusi dalam mode
supervisor saja dan daerah-daerah tertentu di dalam memori hanya dapat diakses
dalam mode supervisor saja.
Terdapat
beberapa register lainnya yang berkaitan denga status dan kontrol yang dapat
ditemukan di dalam rancangan CPU tertentu. Selain PSW, mungkin terdapat suatu
pointer ke blok memori yang berisi informasi status tambahan. Pada mesin yang
memakai interrupt bervektor, dapat disediakan register vektor interrupt.
Apabila stack digunakan untuk mengimplementasikan fungsi-fungsi tertentu, maka
diperlukan stack pointer sistem. Register juga dapat digunakan dalam
pengontrolan operasi I/O.
Siklus
Instruksi (Instruction Cycle)
Sebuah
siklus instruksi meliputi subsiklus-subsiklus berikut ini :
•Fetch :
membaca instruksi berikutnya dari memori ke dalam CPU.
•Execute
: menginterpretasikan opcode dan melakukan operasi yang diindikasikan.
•Interrupt
: apabila interrupt diaktifkan dan interrupt telah terjadi, simpan status
proses saat itu dan layani interrupt.
Siklus
Tak Langsung
Eksekusi
sebuah instruksi melibatkan sebuah operand atau lebih di dalam memori, yang
masing-masing operand memerlukan akses memori. Kemudian, apabila digunakan
pengalamatan tak langsung, maka diperlukan akses memori tambahan.
Aliran Data
Urutan
kejadian selama siklus instruksi berlangsung tergantung pada rancangan CPU.
Asumsikan sebuah CPU yang menggunakan register memori alamat (MAR), register
memori buffer (MBR), pencacah program (PC) dan register instruksi (IR)
Pada
saat siklus pengambilan (fetch cycle), instruksi dibaca dari memori. Siklus
pengambilan dan siklus tak langsung cukup sederhana dan dapat diramalkan.
Siklus instruksi (instruction cycle) mengambil banyak bentuk karena bentuk
tergantung pada bermacam-macam instruksi mesin yang terdapat di dalam IR.
Siklus ini dapat meliputi pemindahan data di antara register-register,
pembacaan atau penulisan dari memori atau I/O dan penggunaan ALU. Siklus
interrupt (interrupt cycle) juga cukup sederhana dan juga dapat diramalkan.
Pipelining
Instruksi
Proses
pipelining => proses dimana input baru akan diterima pada sebuah sisi
sebelum input yang diterima sebelumnya keluar sebagai output di sisi lainnya.
Pipeline memiliki dua tahapan yang independen. Tahapan pertama mengambil
instruksi dan mem-buffer-kannya. Ketika tahapan kedua bebas, tahapan pertama
mengirimkan instruksi yang di-buffer-kan tersebut. Pada saat tahapan kedua
sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang
tidak dipakai untuk mengambil dan membufferkan instruksi berikutnya. Proses ini
disebut instruction prefetch atau fetch overlap.
Penggandaan
kecepatan eksekusi tidak akan terjadi karena adanya kedua alasan berikut ini:
•Umumnya
waktu eksekusi akan lebih lama dibandingkan dengan pengambilan instruksi. Eksekusi
akan meliputi pembacaan dan penyimpanan operand serta kinerja sejumlah operasi.
Sehingga tahapan pengambilan mungkin perlu menunggu beberapa saat sebelum
mengosongkan buffer-nya.
•Instruksi
pencabangan bersyarat akan membuat alamat instruksi berikutnya yang akan
diambil tidak diketahui. Sehingga tahapan pengambilan harus menunggu sampai
menerima alamat instruksi berikutnya dari tahapan eksekusi. Dengan demikian
tahapan eksekusi harus menunggu pada saat instruksi berikutnya diambil.
Kerugian
waktu yang diakibatkan tahapan kedua dapat dikurangi dengan cara menebak.
Aturan sederhananya adalah sebagai berikut : ketika instruksi pencabangan
bersyarat dikirimkan dari tahapan pengambilan ke tahapan eksekusi, tahapan
pengambilan mengambil instruksi berikutnya di dalam memori setelah terjadinya
instruksi pencabangan itu. Kemudian apabila pencabangan tidak dilakukan, maka
tidak akan terdapat waktu yang hilang. Apabila pencabangan dilakukan, instruksi
yang diambil harus dibuang dan instruksi yang baru harus diambil.
Dekomposisi
pengolahan instruksi :
•Fetch
instruction (FI) : membaca instruksi berikutnya yang diharapkan ke dalam
buffer.
•Decode
instruction (DI) : menentukan opcode dan operand specifier.
•Calculate
operand (CO) : menghitung alamat efektif seluruh operand sumber. Hal ini
mungkin melibatkan displacement, register indirect, indirect atau bentuk
kalkulasi alamat lainnya.
•Fetch
operand (FO) : mengambil semua operand dari memori. Operand-operand yang berada
di dalam register tidak perlu diambil.
•Execute
instruction (EI) : melakukan operasi yang diindikasikan dan menyimpan hasilnya,
bila ada, di lokasi operand tujuan yang telah ditentukan.
•Write
operand (WO) : menyimpan hasilnya di dalam memori.
Menangani
Pencabangan
Salah
satu masalah besar dalam merancang pipeline instruksi adalah menjamin
terjadinya aliran instruksi yang stabil bagi tahapan awal pipeline. Telah
dilakukan beberapa pendekatan yang berhubungan dengan pencabangan bersyarat :
•Multiple
Streams
Sebuah
pendekatan yang kasar adalah dengan melakukan peniruan bagian pipeline awal dan
membiarkan pipeline untuk mengambil kedua instruksi itu, dengan menggunakan dua
buah stream, Terdapat beberapa masalah yang terjadi dalam menggunakan
pendekatan ini :
1.Pada
multiple pipelines terdapat delay akibat adanya persaingan untuk mengakses
register dan memori.
2.Instruksi
pencabangan tambahan mungkin masuk ke pipeline atau stream sebelum pengambilan
keputusan pencabangan yang sebenarnya dilakukan. Semua instruksi ini memerlukan
stream tambahan.
•Prefetch
Branch Target
Bila
pencabangan bersyarat telah diketahui, maka selain terhadap instruksi yang
berada setelah pencabangan dilakukan juga prefetch terhadap target pencabangan
itu. Kemudian target itu disimpan hingga instruksi pencabangan selesai dieksekusi.
Apabila pencabangan dilakukan, maka target telah di-prefetch.
•Loop
Buffer
Merupakan
memori berukuran kecil yang berkecepatan tinggi yang digunakan oleh tahapan
pengambilan instruksi pipeline dan berisi n buah instruksi yang paling baru
diambil secara berurutan.
Loop
buffer memiliki 3 kelebihan :
1.Pada
penggunaan prefetching, loop buffer akan berisi beberapa instruksi sekuensial
yang berada di depan alamat pengambilan instruksi saat itu. Jadi instruksi yang
diambil secara berurutan akan diperoleh tanpa memerlukan waktu akses memori
yang biasa.
2.Apabila
pencabangan terjadi dengan target yang hanya terletak beberapa lokasi di depan
alamat instruksi pencabangan, maka target akan telah berada di dalam buffer.
Hal ini sangat berguna bagi keberadaan rangkaian IF-THEN dan IF-THEN-ELSE.
3.Strategi
ini sangat cocok terutama bagi pencabangan atau iterasi, karena itu dinamakan
loop buffer. Apabila loop buffer cukup besar untuk diisi seluruh instruksi yang
terdapat dalam loop, maka instruksi-instruksi itu perlu diambil dari memori
sekaligus, yaitu pada iterasi petama. Untuk iterasi berikutnya, maka
instruksi-instruksi yang dibutuhkan telah terdapat di dalam buffer.
•Branch
Prediction
Macam-macam
teknik yang dapat digunakan untuk memprediksi apakah suatu pencabangan akan
dilaksanakan atau tidaknya, yaitu :
•Predict
Never Taken
•Predict
Always Taken
•Predict
by Opcode
•Taken /
Not Taken Switch
•Branch
History Table
Tiga
teknik pertama bersifat statik : teknik-teknik itu tidak bergantung pada
sejarah eksekusi sampai dengan waktu instruksi pencabangan bersyarat terjadi.
Sedangkan dua teknik terakhir bersifat dinamik : tergantung pada sejarah
eksekusi.
• Delayed Branch
Kinerja
pipeline dapat ditingkatkan dengan cara pengaturan kembali instruksi secara
otomatis, sehingga instruksi pencabangan terjadi lebih lambat daripada apa yang
diinginkan.
Machine
Cycle
Machine cycle atau nama lainnya adalah
processor cycle atau instruction cyclemerupakan merupakan suatu siklus
instruksi dasar yang dikerjakan oleh CPU di dalam melakukan eksekusi suatu
instruksi. Rangkaian proses eksekusi instruksi ini dimulai dari proses fetching
data dan instruksi yang ada didalam memori hingga proses penulisan kembali
hasil eksekusi instruksi tersebut ke dalam memori.
Sebelum
suatu instruksi dieksekusi oleh processor, terlebih dahulu sekumpulan instruksi
tersebut disimpan dalam memori. Ketika akan dieksekusi, instruksi tersebut akan
diambil (fetch) ke dalam memori, berdasarkan alamat instruksi yang disimpan
dalam PC (Program Counter) yang terdapat dalam CPU. Setelah instruksi tersebut
diload dari memori, nilai PC akan di-increment untuk menunjuk alamat berikutnya
dari dari instruksi yang akan dieksekusi. Tahapan berikutnya setelah proses
load (fetch) dilakukan, instruksi tersebut akan di-decode, dan kemudian
dilakukan proses eksekusi. Setelah itu ,
hasil dari eksekusi instruksi tersebut akan dikembalikan lagi ke dalam memori.
Siklus instruksi tersebut akan dikerjakan secara berulang oleh CPU selama masih
ada instruksi yang akan dieksekusi.
Gambar
1. Siklus Instruksi
Sesuai
dengan Gambar 1, secara garis besar siklus instruksi (machine cycle) dibagi ke
dalam beberapa tahapan yaitu:
1. Proses
Fetching
Merupakan
proses dimana instruksi dan data akan di load dari memori ke dalam CPU. Proses
ini dimulai dari pengambilan alamat instruksi yang terdapat di dalam PC
(Program Counter). Alamat yang terdapat di dalam PC ini merupakan alamat valid
dari instruksi dan data yang disimpan ke dalam memori utama, dan merupakan
alamat instruksi yang akan dieksekusi. Berdasarkan alamat instruksi yang
terdapat di dalam PC, CPU akan mengambil instruksi tersebut untuk ditempatkan ke
dalam register (Instruction Register/ IR) yang menyimpan instruksi yang akan
dieksekusi.
MAR
(Memory Address Register) akan bertanggung jawab untuk menyimpan alamat dari
data yang disimpan ke dalam memori untuk selanjutnya akan di fetch ke dalam
CPU. Sedangkan MDR (Memory Data Register) akan menyimpan data yang akan
dioperasikan berdasarkan instruksi tertentu oleh CPU.
Setelah
instruksi dan data di-fetch ke dalam CPU, Program Counter (PC) akan melakukan
increment untuk menunjuk alamat dari instruksi dan data berikutnya yang akan
dieksekusi. Secara garis besar, tahap fetching dapat dilihat pada Gambar 2
Gambar
2. Proses Fetching
1. 2. Proses Decoding
Merupakan tahapan dimana instruksi
akan di terjemahkan (interpret) ke dalam perintah-perintah bahasa mesin dasar
(ADD, SB, MBA, STA, JMP, dll). Proses ini dilakukan oleh instruction decoder.
Proses decoder dapat dilihat pada Gambar 3.
Gambar
3. Proses Decoding
1. 3.Proses Executing
Pada tahapan dimana instruksi akan
dieksekusi di dalam CPU, yaitu oleh ALU (Arithmetic Logic Unit). Proses
eksekusi instruksi yang terdapat di dalam ALU dapat dilihat pada Gambar 4
Gambar
4. Proses Executing
Setelah
tahapan diatas dikerjakan, maka hasil dari eksekusi tersebut akan dikembalikan
ke dalam memori untuk disimpan. Berdasarkan Gambar 5 dibawah ini, proses
penyimpanan kembali hasil eksekusi isntruksi terdiri dari beberapa tahapan
yaitu:
•
Proses penempatan alamat memori yang digunakan untuk menyimpan hasil
instruksi ke dalam MAR
•
Proses penempatan data (hasil instruksi) kedalam MDR
•
Proses mengaktifkan memory write control signal pada control bus
•
Proses menunggu memori untuk melakukan write data pada alamat tertentu
•
Proses untuk menonaktifkan memory write control signal pada bus
Gambar
5. Proses Penyimpanan Kembali Hasil Instruksi ke Memori
Dalam
menjalakan instruction cycle / machine cycle ada beberapa komponen yang
berperan, yaitu:
Program Counter (PC)
Nama
lainnya adalah Instruction Pointer, merupakan suatu pointer (penunjuk), bagi
sejumlah instruksi yang ditempatkan di dalam memori dan akan dieksekusi oleh
CPU. Terletak di dalam CPU, program counter akan menunjuk alamat memori dari
instruksi sebelum dilakukan proses fetch ke dalam CPU. Isi dari program counter
ini akan di increment setiap selesai melakukan proses fetching instruksi, untuk
menunjuk instruksi berikutnya yang akan dieksekusi
2
Memory Address Register (MAR)
Adalah
salah satu register yang terdapat di dalam CPU yang fungsinya adalah untuk
menyimpan alamat memori dari data yang akan diambil (fetch) oleh CPU untuk
dieksekusi. Selain itu MAR juga akan menyimpan alamat memori dari data (hasil
instruksi) yang akan ditulis kembali ke dalam memori.
3
Memory Data Register (MDR)
Merupakan
register yang terdapat dalam CPU yang fungsinya adalah menyimpan data sementara
yang akan dieksekusi oleh CPU. Setiap kali proses fetching berlangsung, data
akan disimpan di dalam MDR sebelum dilakukan proses eksekusi. Demikian juga
hasil dari eksekusi instruksi akan disimpan di dalam register ini sebelum
dilakukan proses penulisan kembali ke memori
Instruction Register
Sama
seperti MAR dan MDR, Instruction Register (IR) ini terletak di dalam CPU. IR
ini bertanggung jawab untuk menyimpan instruksi yang akan dieksekusi oleh CPU.
Pada beberapa jenis prosesor (terutama yang ada sekarang), digunakan konsep
pipeline pada IR ini, dimana pada setiap stage pipeline melakukan proses
decoding, dan proses yang lain pada waktu instruksi dikerjakan.
5
Control Unit (CU)
Control
unit mengkoordinasi semua komponen-komponen yang ada di sistem computer,
terutama yang berkaitan dengan pengolahan data dan eksekusi instruksi. CU mengatur
proses fetching instruksi maupun data dari memori ke CPU. Selain itu juga
mengatur unit yang lain dengan menyediakan timing dan control signal.
Arithmetic Logic Unit (ALU)
Merupakan
sirkuit digital yang terdapat di dalam CPU yang memiliki fungsi untuk melakukan
komputasi aritmatika dan logika. ALU merupakan unit dasar dari pengolah data
dan eksekusi instruksi.
Tidak ada komentar:
Posting Komentar