ARSITEKTUR KOMPUTER“Struktur dan Fungsi CPU”
Di Susun Oleh :
RINI ANDINI1129040148
PTIK 02
JURUSAN PENDIDIKAN TEKNIK ELEKTROPROGRAM STUDI PTIK
UNIVERSITAS NEGERI MAKASSAR2014
BAB 12
STRUKTUR DAN FUNGSI CPU
A. Organisasi Prosesor
Untuk memahami organisasi CPU, kita perhatikan syarat-syarat yang terdapat pada
CPU, hal-hal yang harus dilakukan :
Mengambil instruksi : CPU membaca instruksi dari memori.
Interupsi instruksi : instruksi dikodekan untuk menentukan tindakan apa yang
diperlukan.
Mengambil Data : eksekusi suatu instruksi dapat memerlukan pembacaan data dari
memori atau modul I/O.
Mengolah Data : eksekusi suatu eksekusi dapat memerlukan penulisan data ke
memori atau modul I/O
Untuk melakukan hal ini, harus jelas bahwa CPU diperlukan untuk menyimpan
beberapa data untuk sementara. CPU harus mengingat lokasi instruksi terakhir sehingga CPU
dapat mengetahui di mana mendapatkan instruksi selanjutnya. CPU diperlukan untuk
menyimpan instruksi dan data untuk sementara selagi suatu instruksi sedang dieksekusi.
Dengan kata lain, CPU memerlukan sebuah memori internal kecil.
Gambar 12.1 CPU dengan Bus sistem
2Struktur dan Fungsi CPU
Gambar 12.1 merupakan pandangan sederhana tentang CPU, mengindikasikan koneksi
yang lain dari sistem via bus sistem. Sebuah antar-muka yang serupa akan diperlukan untuk
sembarang struktur interkoneksi yang diuraikan pada Bab 3. Pembaca akan mengingat bahwa
komponen utama CPU adalah unit logika dan aritmatika (Arithmetic and Logic Unit - ALU)
dan unit kendali (Control Unit - CU). ALU melakukan perhitungan aktual atau pengolahan
data. Unit kontrol mengontrol pergerakan data dan instruksi ke dalam CPU dan ke luar CPU
dan mengontrol operasi ALU. Sebagai tambahan, gambar menunjukkan memori internal
minimal, terdiri dari set lokasi penyimpanan, disebut register.
Gambar 12.2 merupakan gambaran CPU secara lebih terperinci. Diindikasikan lintasan
transfer data dan kontrol logika, mencakup elemen internal yang ditandai bus CPU. Elemen
ini diperlukan untuk memindahkan data antara berbagai register dan ALU, karena ALU
sesungguhnya beroperasi hanya pada data di dalam memori CPU internal. Gambar tersebut
juga menunjukkan elemen-elemen dasar umum dari ALU. Perlu dicatat persamaan antara
struktur internal komputer secara keseluruhan dan struktur internal CPU. Pada kedua kasus,
terdapat koleksi elemen-elemen utama yang kecil (komputer:CPU, I/O, memori;CPU: unit
kontrol, ALU, register) yang dihubungkan oleh lintasan data.
Gambar 12.2 Struktur Internal CPU
3Struktur dan Fungsi CPU
B. Organisasi Register
Sistem computer menggunakan hirarki memori.
Pada tingkatan yang di atas , memori yang 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 chace.
Fungsi register pada CPU :
1. User-Viesible Registers
Register ini memungkinkan pemograman bahasa mesin dan bahasa assembler
meminimalkan referensi main memori dengan cara mengoptimasi penggunaan
register. Register yang dapat di referensikan dengan menggunakan bahasa mesin
yang di eksekusi CPU. Kategorinya :
general purpouse
data
alamat
kode-kode kondisi
General purpose register dapat digunakan untuk berbagai funsi oleh
pemrogram dan berisi operan-operan sembarang op-code, dimana pada kasus-kasus
tertentu general purpouse register dapat digunakan untuk funsi-fungsi
pengalamatan misalnya register indirect,displacement . Pada kasus lainnya terdapat
partial atau batasan yang jelas antara register data dengan register alamat
Register data hanya dipakai menampung data dan tidak digunakan untuk
kalkulasi dan alamat operand , sedangkan register alamat menyerupai general
purpouse register atau register-register tersebut dapat digunakan untuk mode
pengalamatan tertentu.
Contohnya :
Segmen register
Segmen register menyimpan alamat berbasis segmen dan mungkin terdapat
register-register misalnya satu register untuk proses saat itu
Index register
Untuk alamat yang terindeks dan mungkin autoindexed
4Struktur dan Fungsi CPU
Stack Pointer
Apabila terdapat pengamatan stack yang user visible maka biasanya stack
berada didalam memori dan terdapat register dedicated yang menunjuk ke
bagian atas stack dan memungkinkan pengalaman implicit yaitu push,popdan
istruksi stack lainnya yang tidak perlu stack eksplisit.
2. Control and status register
Register ini digunakan oleh unit control untuk mengontrol operasi CPU dan
oleh program system operasi untuk mengontrol eksekusi program. Bermacam-
macam register CPU yang digunakan untuk mengontrol operasi CPU. Register
yang penting bagi eksekusi instruksi
Program counter (PC) atau pencacah program yang berisi alamat instruksi
yang akan diambil
Inctrusion register (IR) berisi instruksi yang diambil terakhir
Memori address Register (MAR) berisi alamat sebuah lokasi didalam memori
Memori buffer register ( MBR) berisih sebuah word data yang dituliskan
kedalam memori atau word yang terakhir dibaca
Program status word adalah semua rancangan CPU mencakup sebuah register
atau sekumpulan register yang berisi informasi status, berisi kode kondisi dan
informasi lainnya.
Seperti yang telah kita bahas pada Bab 4, sistem komputer menggunakan hierarki
memori. Pada tingkat hierarki yang lebih tinggi, memori lebih cepat, lebih kecil, dan lebih
mahal (per bit). Di dalam CPU, terdapat set daftar yuang berfungsi sebagai tingkatan memori
di atas memori utama dan cache pada hierarki. Register pada CPU membentuk dua peran:
Register terlihat oleh pengguna : ini memungkinkan pemrogram bahasa mesin
atau bahasa asembli untuk memperkecil acuan memori dengan pengoptimalan
penggunaan register
Register kontrol dan status : ini digunakan oleh unit kontrol untuk mengontrol
operasi CPU dan program sistem operasi mengontrol eksekusi program.
Tidak ada satupun separasi register yang bersih ke dalam dua kategori ini. Sebagai
contoh, pada beberapa mesin pencacah program adalah terlihat oleh pengguna (misalnya,
Pentium), tetapi pada umumnya tidak (misalnya, PowerPC). Karena tujuan pembahasan
berikutnya, bagaimanapun, kita akan menggunakan kategori ini.
5Struktur dan Fungsi CPU
Register Terlihat oleh Pengguna
Suatu register terlihat oleh pengguna merupakan salah satu yang dapat diacu dengan
menggunakan bahasa mesin yang mengeksekusi CPU. Kita dapat menandainya di dalam
kategori berikut:
Tujuan umum
Data
Alamat
Kode kondisi
Register bertujuan umum oleh pemrogram dapat ditugaskan untuk berbagai macam
fungsi. Kadang-kadang penggunanya di dalam set instruksi merupakan orthogonal ke operasi
tersebut. Yaitu, sembarang regsiter bertujuan umum dapat terdiri dari operand untuk setiap
opcode. Hal ini memberikan penggunaan register bertujuan umum yang benar.
Bagaimanapun, sering ada pembatasan. Sebagai contoh, mungkin terdapat register yuang
didedikasikan untuk titik-mengambang dan operasi stack.
Dalam beberapa hal, register bertujuan umum dapat digunakan untuk fungsi
pengalamatan (misalnya, register tidak langsung, penggantian). Pada kasus lain, terdapat
sparasi parsial atau separasi bersih antara register data dan register alamat. Register data
hanya dapat digunakan untuk menampung data dan tidak dapat digunakan dalam kalkulasi
alamat operand. Register alamat dapat berdiri sendiri menjadi bertujuan umum, atau dapat
diabdikan bagi mode pengalamatan tertentu. Contohnya meliputi yang berikut:
Pointer segmen: Pada mesin dengan pengalamatan tersegmen (lihat Subbab
8.3), register segmen menampung alamat basis segmen. Mungkin ada berbagai
register: sebagai contoh, satu untuk sistem operasi dan satu untuk proses akhir.
Register indeks: Ini digunakan untuk pengalamatan terindeks indexed dan
mungkin adalah terindeks otomatis.
Pointer stack: Jika terdapat pengalamatan stack terlihat oleh pengguna, maka
stack secara umum berada dalam memori dan terdapat register terdedikasi
yang mengarah ke puncak stack. Hal ini memungkinkan pengalamatan
tersembunyi; yaitu, push, pop, dan instruksi stack lain yang tidak perlu terdiri
dari operand stack eksplisit.
Terdapat beberapa masalah rancangan perlu diperhatikan di sini. Salah satu masalah
penting adalah apakah perlu menggunakan register bertujuan umum seluruhnya atau hanya
untuk keperluan khusus saja. Kita telah membahas masalah ini pada bab sebelumnya, karena
6Struktur dan Fungsi CPU
masalah ini mempengaruhi rancangan set instruksi. Dengan penggunaan register-register
khusus, hal ini umumnya dapat berupa implisit tentang jenis register yang mana akan diacu
oleh spesifier operand tertentu. Spesifier operand hanya perlu mengidentifikasi salah satu set
register khusus tidak perlu mengidentifikasi seluruh register, karena akan dapat menghemat
bit. Pada sisi lain, spesialisasi ini membahas fleksibilitas pemrogram.
Masalah rancangan lainnya adalah jumlah register yang tersedia, baik register bertujuan
umum maupun register data ditambah register alamat. Seperti halnya di atas, masalah ini
mempengaruhi rancangan set instruksi karena register yang lebih banyak akan memerlukan
bit operand spesifier yang lebih banyak pula. Seperti yang telah dibahas sebelumnya, register
yang berukuran antara 8 dan 32 dapat dikatakan optimum [LUND77]. Register yang
jumlahnya lebih sedikit mengakibatkan acuan memori secara berarti (misalnya, lihat
[WILL90]). Namun, suatu pendekatan baru, yang mendapatkan keuntungannya dengan
menggunakan ratusan register, telah terbukti pada beberapa sistem RISC dan akan dibahas
pada Bab 13.
Akhirnya, ada masalah panjang register. Register yang harus menampung alamat jelas
sedikitnya harus cukup panjang untuk menampung alamat yang paling besar. Register data
harus biasa menampung nilai-nilai kebanyakan jenis data. Beberapa mesin memungkinkan
dua register berdekatan untuk digunakan sebagai mesin untuk menampung nilai-nilai dengan
panjang ganda.
Suatu kategori register akhir, yang secara parsial sedikit kelihatan oleh pemakai, kode
kondisi penampung (juga dikenal sebagai flag). Kode kondisi adalah set bit oleh hardware
CPU sebagai hasil operasi. Sebagai contoh, suatu operasi aritmatika dapat menghasilkan hasil
positif, negatif, nol, atau overflow. Sebagai tambahan terhadap hasilnya sendiri yang
disimpan dalam register atau memori, kode kondisi juga di-set. Kode sesudah itu diuji
sebagai bagian dari operasi cabang bersyarat.
Bit kode kondisi dikumpulkan ke dalam satu register atau lebih. Pada umumnya,
mereka membentuk bagian register kontrol. Umumnya, instruksi mesin memungkinkan bit ini
dibaca oleh acuan implisit, tetapi pemrogram tidak bisa mengubahnya.
Dalam beberapa mesin, panggilan subrutin akan mengakibatkan penyimpanan otomatis
semua register terlihat leh pengguna, untuk dikembalikan ke kondisi semula. CPU melakukan
penyimpanan dan pengembalian sebagai bagian dari eksekusi instruksi panggilan dan
instruksi kembalian. Hal ini memungkinkan masing-masing subrutin untuk menggunakan
register terlihat oleh pengguna secara independen. Pada mesin yang lain, merupakan
7Struktur dan Fungsi CPU
tanggung jawab pemrogram untuk menyimpan isi register utama yang relevan terlihat oleh
pengguna ke panggilan subrutin, termasuk instruksi untuk tujuan ini pada proggram.
Register Kontrol dan Status
Terdapat berbagai macam register CPU yang dilakukan untuk mengontrol operasi CPU.
Kebanyakan CPU, pada kebanyakan mesin, tidak terlihat oleh pengguna. Sebagian register
dapat terdeteksi oleh instruksi mesin dieksekusi di dalam mode kontrol atau mode sistem
operasi.
Tentu saja, mesin yang berbeda akan mempunyai organisasi register yang berbeda dan
penggunaan istilah yang berbeda. Kita mendaftarnya di sini suatu daftar lengkap jenis
register, dengan suatu uraian ringkas.
Empat register penting untuk eksekusi instruksi:
Pencacah Program (Program counter-PC): Terisi alamat instruksi yang diambil
Register instruksi (Instruction register-IR): Terisi instruksi yang paling akhir
diambil
Register alamat memori (Memory address register-MAR): Terdiri alamat lokasi
dalam memori
Register buffer memori (Memory buffer register-MBR): Terdiri word data yang
perlu ditulis ke memori atau word yang paling akhir dibaca.
Secara umum, CPU meng-update PC setelah instruksi diambil sedemikian sehingga PC
selalu menunjuk kepada instruksi berikutnya untuk dieksekusi. Sebuah instruksi cabang atau
skip juga akan memodifikasi isi dari PC. Instruksi yang diambil terisi ke dalam IR, di mana
spesifier opcode dan operand dianalisis. Data ditukar dengan memori dengan menggunakan
MAR dan MBR. Pada sistem bus terorganissasi, MAR menghubungkan bus alamat secara
langsung, dan MBR menghubungkan bus data secara langsung. Regsiter terlihat oleh
pengguna, pada gilirannya, menukar data dengan MBR.
Empat register yang baru saja disebutkan digunakan untuk pemindahan data antara CPU
dan memori. Di dalam CPU, data harus diperkenalkan kepada ALU untuk dioalah. ALU
dapat mempunyai akses langsung ke MBR dan register terlihat oleh pengguna. Sebagai
alternatif, mungkin terdapat register pem-buffer-an tambahan pada batas ALU; register ini
bertindak sebagai register input dan output untuk ALU dan pertukaran data dengan MBR dan
register terlihat oleh pengguna.
Semua rancangan CPU meliputi sebuah register atau sekelompok register, sering
dikenal sebgai word status program (Program Status Word-PSW), yang terdiri dari informasi
8Struktur dan Fungsi CPU
status. PSW secara umum terdiri dari kode kondisi ditambah informasi status lainnya. Bidang
umum atau flag meliputi hal-hal berikut:
Tanda: Terdiri bit tanda hasil dari operasi aritmatika terakhir
Nol: Di-set ketika hasilnya sama dengan 0
Pembawa: Di-set jika sebuah operasi menghasilkan suatu pembawa (penambahan) ke
dalam atau meminjam (pengurangan) ke luar dari bit order tinggi. Digunakan untuk
operasi aritmatika multiword
Sama: Di-set jika hasil perbandingan logis adalah persamaan
Overflow: Digunakan untuk mengindikasikan overflow aritmatika
Interupsi enable/disable: Digunakan untuk interupsi enable atau disable
Supervisor: Mengindikasikan apakah CPU melakukan pengeksekusian dalam mode
supervisor atau pengguna. Instruksi khusus tertentu hanya dapat dieksekusi dalam
mode supervisor, dan area memori tertentu hanya dapat diakses dalam mode
supervisor.
Sejumlah daftar lain berhubungan dengan status dan kontrol dapat ditemukan di dalam
rancangan CPU tertentu. Sebagai tambahan terhadap PSW, mungkin terdapat pointer bagi
blok memori yang terdiri dari informasi status tambahan (misalnya, blok-blok kontrol
proses). Pada mesin yang menggunakan interupsi tervektor, suatu register vektor interupsi
dapat diberikan. Jika suatu stack digunakan untuk mengimplementasikan fungsi tertentu
(misalnya, panggilan subrutin), maka pointer stack sistem diperlukan. Suatu pointer tabel
halaman digunakan dengan sistem memori virtual. Pada akhirnya, regsiter dapat digunakan
dalam kontrol operasi I/O.
Sejumlah faktor mempengaruhi rancangan kontrol dan status organisasi register.
Sebuah masalah penting adalah dukungan sistem operasi. Jenis informasi kontrol tertentu
merupakan kegunaan sistem operasi yang spesifik. Jika perancang CPU mempunyai
pemahaman fungsional dari sistem operasi digunakan, maka organisasi register dapat
dikhususkan kepada sistem operasi sampai taraf tertentu.
Keputusan rancangan penting lainnya merupakan alokasi informasi antara register dan
memori. Adalah umum untuk mempunyai dedikasi dahulu (paling rendah) sedikit ratusan
atau ribuan word memori untuk tujuan kontrol. Perancang harus memutuskan berapa banyak
informasi kontrol harus berada di dalam register dan berapa banyak berada di dalam memori.
Kerugian yang umum adalah biaya versus kecepatan.
Contoh Organisasi Regiter Mikroprosesor
9Struktur dan Fungsi CPU
Untuk menguji dan membandingkan organisasi register adalah instruksi dari sistem
yang dapat diperbandingkan. Pada bagian ini, kita memperhatikan dua mikroprosesor 16-bit
yang dirancang pada waktu yang sama; Motorola MC68000 [STRI79] dan Intel 8086
[MORS78]. Gambar 12.3a dan b menunjukkan setiap organisasi register; register semata-
mata internal, seperti register alamat memori (MAR), tidak ditunjukkan.
Gambar 12.3 Contoh Organisasi Register Mikro Prosesor
Partisi MC68000 register 32-bit ke dalam
10Struktur dan Fungsi CPU
11Struktur dan Fungsi CPU
12Struktur dan Fungsi CPU
13Struktur dan Fungsi CPU
14Struktur dan Fungsi CPU
C. Siklus Instruksi
Pada sub bab 3.2, diuraikan siklus instruksi CPU. Untuk mengingat, siklus instruksi meliputi
subsiklus yang berikut :
Mengambil : Baca instruksi berikutnya dari memori kedalam CPU
Eksekusi : Menginterpretasikan opcode dan membentuk operasi yang ditandai
Interupsi : Jika interupsi dimungkinkan dan suatu interupsi telah terjadi,
menyimpan status proses tertentu dan melayani interupsi.
Kita kini dalam posisi untuk merinci sedikit banyak pada siklus instruksi. Pertama, kita
harus memperkenalkan salah satu subsiklus tambahan, dikenal sebagai siklus tidak langsung.
a. Siklus Tidak Langsung
Kita telah melihat, pada bab 11 bahwa eksekusi instruksi dapat melibatkan
satu operand atau lebih dalam memori, yang masing-masing memerlukan akses
memori. Lebih lanjut, jika pengalamatan tidak langsung digunakan, maka diperlukan
akses memori tambahan.
15Struktur dan Fungsi CPU
Kita dapat berpikir tentang pengambilan alamat tidak langsung sebagai satu
lagi subsiklus instruksi. Hasilnya ditunjukkan pada gambar 12.4. Pipeline utama
aktivitas terdiri dari mengambil instruksi bertukar-tukar dan aktivitas eksekusi
instruksi. Setelah instruksi diambil, instruksi diuji untuk menentukan bila sembarang
pengalamatan tidak langsung dilibatkan. Jika demikian, operan yang diperlukan di
ambil dengan menggunakan pengalamatan tidak langsung. Eksekusi berikut, sebuah
interupsi dapat diproses sebelum pengambilan instruksi berikutnya.
Cara lain untuk memandang proses ini di tunjukkan pada gambar 12.5, yang
merupakan versi yang ditinjau kembali terhadap gambar 3.12. Hal ini
mengilustrasikan dengan tepat sifat siklus instruksi. Sekali suatu instruksi diambil,
spesifier operand-nya harus dikenali. Masing-masing operand input pada memori
kemudian diambil, dan proses ini mungkin memerlukan pengalamatan tidak langsung.
Operand berbasis register tidak perlu diambil. Sekali opcode dieksekusi, proses
serupa dapat diperlukan untuk menyimpan hasilnya di dalam memori utama.
b. Aliran Data
Urutan peristiwa yang tepat selama siklus instruksi tergantung pada rancangan
CPU. Kita dapat, bagaimanapun, mengindikasikan pada garis besarnya apa yang
harus terjadi. Mari kita asumsikan bahwa CPU yang memberikan register alamat
memori (RUSAKKAN), suatu register penyangga memori(MBR) register alamat
memori(Memory Address Register-MAR), pencacah program(program counter-PC)
dan register instruksi (instuction register-IR).
Sepanjang siklus pengambilan, instruksi dibaca dari memori.. Gambar 12.6
menunjukkan aliran data selama siklus ini. PC terdiri dari alamat instruksi berikutnya
untuk diambil. Alamat ini dipindah ke MAR dan menempatkannya pada bus alamat.
Unit kontrol meminta pembacaan memori, dan hasilnya ditempatkan pada bus data
dan disalin ke dalam MBR dan kemudian di pindah ke IR. Sementara itu, PC
ditambahklan dengan 1, yang berkenaan dengan persiapan untuk pengambilan
berikutnya.
Sekali siklus pengambilan selesai, unit kontrol menguji isi IR untuk
menentukan jika IR terdiri dari spesifier operand dengan menggunakan pengalamatan
tidak langsung. Jika demekian, dibentuk siklus tidak langsung. Seperti ditunjukkan
pada gambar 12.7, mertupakan siklus sederhana. N bit MBR paling kanan, yang
16Struktur dan Fungsi CPU
terdiri dari acuan alamat, ditransfer ke MBR. Kemudian unit kontrol meminta
pembacaan memori, untuk mendapatkan alamat yang diinginkan dari operand ke
MBR.
Siklus pengambilan dan siklus tidak langsung adalah sederhana dan dapat
diramalkan. Siklus eksekusi mempunyai banyak bentuk, bentuknya tergantung pada
berbagai macam instruksi mesin di dalam IR. Siklus ini dapat melibatkan pemindahan
data antar register, baca atau tulis dari memori atau I/O dan atau pernyataan dari
ALU.
Seperti siklus pengambilan dan siklus tidak langsung, siklus interupsi adalah
sederhana dan dapat diramalkan (Gambar 12.8). Isi terakhir PC harus disimpan
sehingga CPU dapat melakukan aktivitas normal setelah interupsi. Jadi, isi PC di
transfer ke MBR untuk di tulis ke dalam memori. Lokasi memori khusus yang
tersedia untuk tujuan ini terisi ke dalam MAR unit kontrol. Hal itu dapat, sebagai
contoh, menjadi pointer stack. PC terisi dengan alamat rutin interupsi. Sebagai
hasilnya, siklus instruksi berikutnya akan di mulai dengan pengambilan instruksi yang
sesuai.
12.4 Pipelining Instruksia. Strategi Pipelining
1. Pengertian Pipeline
Pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara
bersama tetapi dalam tahap yang berbeda yang dialirkan secara kontinu pada unit
pemrosesan. Dengan cara ini, maka unit pemrosesan selalu bekerja.
Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam sistemkomputer.
Bisa pada level yang tinggi, misalnya program aplikasi, sampai pada tingkat yang rendah,
seperti pada instruksi yang dijaankan oleh microprocessor.
Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan
sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam
microprocessor yang menggunakan teknik pipeline, ketika satu instruksi sedangkan diproses,
maka instruksi yang berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi,
17Struktur dan Fungsi CPU
instruksi yang diproses secara bersamaan ini, ada dalam tahap proses yang berbeda. Jadi, ada
sejumlah tahapan yang akan dilewati oleh sebuah instruksi.
Dengan penerapan pipeline ini pada microprocessor akan didapatkan peningkatan
dalam unjuk kerja microprocessor. Hal ini terjadi karena beberapa instruksi dapat dilakukan
secara parallel dalam waktu yang bersamaan. Secara kasarnya diharapkan akan didapatkan
peningkatan sebesar X kali dibandingkan dengan microprocessor yang tidak menggunakan
pipeline, apabila tahapan yang ada dalam satu kali pemrosesan instruksi adalah X tahap.
Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi
tersebut sama-sama memerlukan resource yang sama, sehingga diperlukan adanya pengaturan
yang tepat agar proses tetap berjalan dengan benar. Sedangkan ketergantungan terhadap data,
bisa muncul, misalnya instruksi yang berurutan memerlukan data dari instruksi yang
sebelumnya. Kasus Jump, juga perlu perhatian, karena ketika sebuah instruksi meminta untuk
melompat ke suatu lokasi memori tertentu, akan terjadi perubahan program counter,
sedangkan instruksi yang sedang berada dalam salah satu tahap proses yang berikutnya
mungkin tidak mengharapkan terjadinya perubahan program counter.
Teknik pipeline yang diterapkan pada microprocessor, dapat dikatakan sebuah
arsitektur khusus. Ada perbedaan khusus antara model microprocessor yang tidak
menggunakan arsitektur pipeline dengan microprocessor yang menerapkan teknik ini. Pada
microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai,
baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessoryang
menggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yang
berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diproses
secara bersamaan ini, ada dalam tahap proses yang berbeda.
Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi. Misalnya sebuah
microprocessor menyelesaikan sebuah instruksi dalam 4 langkah. Ketika instruksi pertama
masuk ke langkah 2, maka instruksi berikutnya diambil untuk diproses pada langkah 1
instruksi tersebut. Begitu seterusnya, ketika instruksi pertama masuk ke langkah 3, instruksi
kedua masuk ke langkah 2 dan instruksi ketiga masuk ke langkah 1.
2. Kenapa komputer menggunakan teknik Pipelining??
18Struktur dan Fungsi CPU
Drive for computing speed never ends.
Improvements from architecture or organization point of view are limited
Clock speed enhancement is done, but more improvement should be sought from
instruction execution perspective, instead of hardware design
Flyn’s Taxonomy : SISD (Single Instruction Single stream of Data), SIMD (Single
Instruction Multiple stream of data) or MIMD – Parallel
Parallel Processor : may be a solution
Use two processors (or more, instead of one) in a computer system
How do it runs the code ? (program)
Suppose, we have a problem :
C = (A2+ B2)
3. Intruksi pipeline
Tahapan pipeline
Mengambil instruksi dan membuffferkannya
Ketika tahapn kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkan
tersebut
Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama
memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan
membuffferkan instruksi berikutnya .
Instuksi pipeline:
Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja berbeda, maka
dimungkinkan untuk mengisi kekosongan kerja di komponen tersebut. Sebagai contoh :
Instruksi 1: ADD AX, AX
Instruksi 2: ADD EX, CX
Setelah CU menjemput instruksi 1 dari memori (IF), CU akan menerjemahkan instruksi
tersebut(ID). Pada menerjemahkan instruksi 1 tersebut, komponen IF tidak bekerja. Adanya
teknologi pipeline menyebabkan IF akan menjemput instruksi 2 pada saat ID menerjemahkan
19Struktur dan Fungsi CPU
instruksi 1. Demikian seterusnya pada saat CU menjalankan instruksi 1 (EX), instruksi 2
diterjemahkan (ID).
Contoh pengerjaan instruksi tanpa pipeline
t = 1 2 3 4 5 6 7 8 9 10
ADD AX,AX IF DE IF DE EX
ADD BX,CX IF DE IF DE EX
Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan.
Contoh
pengerjaan instruksi dengan pipeline
Disini instruksi baru akan dipanggil setelah tahap IF menganggur (t2).
Dengan adanya pipeline dua instruksi selesai dilaksanakan pada detik keenam (sedangkan
pada kasus tanpa pipeline baru selesai pada detik kesepuluh). Dengan demikian telah terjadi
percepatan sebanyak 1,67x dari 10T menjadi hanya 6T. Sedangkan untuk pengerjaan 3 buah
instruksi terjadi percepatan sebanyak 2, 14 dari 15T menjadi hanya 7T.
Untuk kasus pipeline sendiri, 2 instruksi dapat dikerjakan dalam 6T(CPI = 3) dan instruksi
dapat dikerjakan dalam 7T (CPT = 2,3) dan untuk 4 instruksi dapat dikerjakan dalam 8T
(CPI =2). Ini berarti utnuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1,04).
Pada kondisi ideal CPI akan harga 1.
4. Permasalahan di (dalam) Instruksi Pipelining
VARIASI WAKTU:
20Struktur dan Fungsi CPU
t = 1 2 3 4 5 6 7 8 9 10
ADD AX,AX IF DE IF DE EX
ADD BX,CX IF DE IF DE EX
ADD DX,DX IF DE IF DE EX
Tidak semua tahap memakan waktu yang sama. Ini berarti untuk mendapatkan kecepatan
dalam intruksi pipelining sangat ditentukan oleh tahap yang paling lambat. Masalah ini
sangat akut dalam memproses instruksi, sejak instruksi yang berbeda memiliki persyaratan
operand waktu proses yang berbeda. Selain itu, diperlukan mekanisme sinkronisasi untuk
memastikan bahwa data lewat dari stage ke stage hanya ketika kedua stage siap.
DATA BERBAHAYA (DATA HAZARDS):
Ketika beberapa instruksi di eksekusi secara parsial, masalah timbul jika mereka referensi
data yang sama. Kita harus memastikan bahwa instruksi selanjutnya tidak berusaha untuk
mengakses data lebih cepat dari instruksi sebelumnya, jika ini terjadi akan menyebabkan
hasil yang salah. Sebagai contoh, instruksi N +1 tidak harus diperbolehkan untuk mengambil
sebuah operand yang belum disimpan oleh instruksi N.
PERCABANGAN (BRANCH):
untuk mengambil instruksi berikutnya, kita harus tahu mana saja yang dibutuhkan, Jika
instruksi ini adalah cabang bersyarat (conditional branch) instruksi berikutnya mungkin tidak
diketahui sampai saat diproses.
JEDA(INTERUPTSI):
interupsi membuat instruksi extra yang tidak terencana untuk masuk kedalam aliran intruksi.
jeda(Interrupt) harus berperan antar instruksi. yaitu, ketika satu instruksi telah selesai dan
berikutnya belum dimulai. Dengan pipelining, instruksi berikutnya biasanya dimulai sebelum
yang sekarang telah selesai.
Semua masalah ini harus diselesaikan dalam konteks kebutuhan kita untuk mendaatkan
kinerja dengan kecepatan tinggi. Jika kita tidak dapat mencapai kecepatan yang cukup,
pipelining mungkin tidak sepadan.
5. Beberapa Solusi
Strategi pemecahan masalah diatas adalah sebagai berikut :
VARIASI PEMILIHAN WAKTU (TIMING VARIATIONS)
21Struktur dan Fungsi CPU
Untuk memaksimalkan kecepatan, untuk menyeragam, tahap pertama yang harus dilakukan
adalah mekanisme waktu yang diperlukan. Sebuah metode sinkron dapat digunakan,jika
tahapan telah dianggap lengkap dari sejumlah tertentu siklus waktu. Namun, teknik
asynchronous secara umum lebih efisien. Bit atau garis sinyal dilewatkan maju ke tahap
berikutnya menunjukkan data sudah valid. Sebuah sinyal juga harus lulus kembali dari tahap
berikutnya ketika data telah diterima.
Dalam semua kasus harus ada sebuah penyangga antar tahap untuk menyimpan data, kadang-
kadang penyangga ini diperluas ke memori yang dapat menyimpan beberapa item data.
Setiap tahap harus berhati-hati untuk tidak menerima input data sampai berlaku, dan tidak
untuk menghasilkan data output sampai ada ruang dalam penyangga (buffer).
DATA BERBAHAYA (DATA HAZARDS)
Untuk melindungi dari data yang berbahaya, perlu untuk menyadari setiap tahap yang
digunakan oleh tahap pipelining yang lebih jauh . Jenis penggunaan juga harus diketahui,
dua pembacaan yang terurut tidak boleh bertentangan dan tidak boleh menyebabkan
perlambatan pada pipeline. Namun akan ada kemungkinan konflik jika terjadi penulisan.
Pipeline biasanya dilengkapi dengan small associative check memory yang dapat menyimpan
alamat dan jenis operasi (read atau write) untuk setiap instruksi yang ada di pipeline. Konsep
“alamat(address)t” harus diperluas untuk mengidentifikasi register. Setiap instruksi hanya
dapat mempengaruhi sejumlah kecil dari operand, tapi efek yang tidak langsung addressing
tidak boleh diabaikan.
Ketika instruksi bersiap memasuki pipa, alamat operan telah disimpan.Jika ada konflik,
instruksi (dan yang di belakangnya) harus menunggu. Ketika ada konflik, instruksi memasuki
pipa dan alamat operan disimpan dalam memori cek. Ketika instruksi selesai, alamat ini akan
dihapus. memori harus bisa untuk menangani proses pencarian berkecepatan tinggi
yangdiperlukan.
PERCABANGAN (BRANCHING)
Masalah dalam percabangan adalah pipelining diperlambat oleh instruksi karena kita tidak
tahu cabang yang mana yang harus kita ikuti. Dengan tidak adanya bantuan spesial dalam
22Struktur dan Fungsi CPU
masalah ini, perlu menunda pemrosesan instruksi selanjutnya sampai tujuan percabangan
diselesaikan. Karena cabang sangat sering, penundaan ini bersifat tidak dapat diterima.
Salah satu solusi yang banyak digunakan, terutama di RISC, adalah menunda percabangan.
Dalam metode ini, rangkaian instruksi ini dirangkai sedemikian rupa, sehingga setelah
suatuinstruksi, instruksi berikutnya bisa selalu di ekskusi, dan kemudian cabang di hapus.
Dengan begitu tiap-tiap cabang harus diikuti oleh satu instruksi yang secara logika
mendahuluinya dan diharapkan untuk dieksekusi dalam semua kasus. Hal ini akan
memberikan ruang bernafas (istirahat) bagi pipeline. Jika perlu, instruksi ini bisa merupakan
suatu no-op, tapi, seringnya penggunaan no-op akan merusak fungsi kecepatan.
Penggunaan teknik ini memerlukan metode pengkodean yang membingungkan bagi
progammer, tetapi tidak terlalu sulit bagi generator kode compiler.
Kebanyakan teknik lain menggunakan ekskusi spekulatif, di mana instruksi yang diproses
yang tidak dikenal dengan pasti, dianggap sebagai benar. Hal ini harus dihindari, harus
dibuang dan tidak di simpan.
Solusi yang biasa digunakan adalah dengan mengikuti cabang yang jelas, yaitu instruksi
sekuensial berikutnya, berhati-hati untuk tidak melakukan tindakan yang tidak bisa dirubah.
Operan mungkin diambil dan di proses, tetapi tidak akan ada hasil sampai cabang di
terjemahkan. Jika pilihan itu salah, dapat di tinggalkan dan cabang alternatif dapat di proses.
Metode ini bekerja dengan cukup baik jika cabang jelas dan benar. Ketika coding
menggunakan pipelined CPU, perawatan harus dilakukan untuk kode cabang (terutama
transfer error) sehingga jalur luruslah yang biasanya diambil. Tentu saja, bercabang yang
tidak di perlukan harus dihindari.
Kemungkinan lain adalah untuk menyusun kembali program sehingga cabang ada lebih
sedikit, misalnya dengan tidak mengikuti jenis loop tertentu. Ini dapat dilakukan dengan
mengoptimalkan kompiler atau, dalam beberapa kasus, dengan perangkat keras itu sendiri.
Sebuah strategi yang pada umumya di gunakan oleh banyak arsitektur saat ini beberapa jenis
prediksi cabang. Hal ini mungkin berdasarkan informasi yang diberikan oleh kompilator atau
pada statistik yang dikumpulkan oleh perangkat keras. Tujuaannya adalah membuat perkiraan
23Struktur dan Fungsi CPU
terbaik apakah cabang tertentu akan diambil atau tidak, dan menggunakan perkiraan ini untuk
melanjutkan pipelining.
Solusi yang membutuhkan harga yang lebih, kadang-kadang digunakan untuk memisahkan
pipeline dan memulai memproses kedua cabang. Gagasan ini mendapat perhatian baru dalam
beberapa prosesor terbaru.
6. Keuntungan dan Kerugian
Pipelining tidak membantu dalam semua kasus. Ada beberapa kemungkinan kerugian. Pipa
instruksi dikatakan sepenuhnya pipelined jika dapat menerima instruksi baru setiap clock
cycle. Sebuah pipa yang tidak sepenuhnya pipelined telah menunggu siklus yang menunda
kemajuan pipa.
Keuntungan dari Pipelining:
1. Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi dalam
kebanyakan kasus( lebih cepat selesai).
2. Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih
cepat dengan menambahkan lebih banyak sirkuit. Jika pipelining digunakan sebagai
pengganti, hal itu dapat menghemat sirkuit & combinational yang lebih kompleks.
3. Pemrosesan dapat dilakukan lebih cepat, dikarenakan beberapa proses dilakukan
secara bersamaan dalam satu waktu.
Kekurangan Pipelining:
1. Pipelined prosesor menjalankan beberapa instruksi pada satu waktu. Jika ada
beberapa cabang yang mengalami penundaan cabang (penundaan memproses data)
dan akibatnya proses yang dilakukan cenderung lebih lama.
2. Instruksi latency di non-pipelined prosesor sedikit lebih rendah daripada dalam
pipelined setara. Hal ini disebabkan oleh fakta bahwa intruksi ekstra harus
ditambahkan ke jalur data dari prosesor pipeline.
3. Kinerja prosesor di pipeline jauh lebih sulit untuk meramalkan dan dapat bervariasi
lebih luas di antara program yang berbeda.
24Struktur dan Fungsi CPU
4. Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi
tersebut sama-sama memerlukan resource yang sama, sehingga diperlukan adanya
pengaturan yang tepat agar proses tetap berjalan dengan benar.
5. Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang
berurutan memerlukan data dari instruksi yang sebelumnya.
6. Kasus Jump, juga perlu perhatian, karena ketika sebuah instruksi meminta untuk
melompat ke suatu lokasi memori tertentu, akan terjadi perubahan program counter,
sedangkan instruksi yang sedang berada dalam salah satu tahap proses yang
berikutnya mungkin tidak mengharapkan terjadinya perubahan program counter.
.
7. Kesulitan dalam Pipeline
Untuk menerapkan prinsip multi-stage atau mulai saat ini kita namakan pipelining di
prosesor, diperlukan organisasi prosesor khusus. Pada dasarnya, prosesor dipartisi menjadi
sejumlah unit-unit kecil dengan fungsi spesifik. Setiap unit berperan untuk menyelesaikan
sebagian dari instruksi-intruksi berikut :
Instruction fetch, decode, operand address calculation, operand fetch, execute dan store
result.
Dalam proses di atas terkadang sering terjadi kendala/conflict seperti:
Terjadinya pause (Pi), karena adanya data conflict dalam program tersebut
Terjadinya data error dikarenakan banyaknya proses yang dilakukan bersamaan
Terjadinya pengambilan data secara bersamaan, sehingga salah satu proses tertunda
Terjadinya penumpukan data di salah satu intruksi sehingga ada beberapa proses yg di
tunda
Dengan terjadinya conflict tadi, speed-up yang diperoleh menjadi lebih kecil (lambat)
dibandingkan dengan tanpa conclict.
b. Kinerja Pipeline
25Struktur dan Fungsi CPU
Pada bagian ini,kita mengembangkan beberapa ukuran kinerja pipeline sederhana dan
peningkatan kecepatan relatifnya.Waktu yang diperlukan untuk melanjutkan set intruksi satu
langkah melalui pipeline,setiap kolom pada gambar merepresentasikan satu waktu
siklus.waktu siklus dapat ditentukan sebagai
Dimana
Secara umum,waktu tunda d ekuivalen dengan pulsa pewaktu dan total waktu yang
diperlukan Tk untuk mengeksekusi semua instruksi n adalah
26Struktur dan Fungsi CPU
Penundaan langkah maksimum(menunda langkah yang mengalami penundaan paling besar)
Jumlah langkah-langkah di dalam pipeline instruksi
Waktu tunda lanch,diperlukan untuk meneruskan sinyal dan data dari satu langkah ke langkah yang
GAMBAR 1 : CARA LAIN PENGGAMBARAN PIPELINE
Total siklus k diperlukan untuk menyelesaikan eksekusi instruksi pertama,dan issanya
instruksi n-1 memerlukan siklus .instruksi kesembilan melengkapi pada siklus
waktu 14:
14= [6+(9-1)]
Faktor meningkatnya kecepatan untuk pipeline instruksi yang diperbandingkan
dengan eksekusi tanpa pipeline digambarkan sebagai:
Gambar 2 berikut merencanakan factor akselerasi sebagai fungsi dari jumlah instruksi
yang dieksekusi tanpa percabangan.seperti yang diharapkan,pada batas (n->∞), kita
mempunyai akselerasi k-fold.gambar 2 menunjukkan factor akselerasi sebagai fungsi
sejumlah langkah pada pipeline instruksi. Dalam hal ini,factor akselerasi mendekati jumlah
instruksi yang dapat digiring ke dalam pipeline tanpa percabangan.Jadi,semakin besar jumlah
langkah-langkah pipeline,semakin besar pula potensi untuk akselerasi .bagaimanapun,sebagai
persoalan praktis,keuntungan potensial dari langkah-langkah pipeline tambahan
diperhitungkan yang memerlukan pengosongan pipeline.
27Struktur dan Fungsi CPU
GAMBAR 2: FAKTOR AKSELERAS DENGAN PIPELINING INSTRUKSI
c. Berhadapan dengan cabangSalah satu masalah utama dalam perancangan pipeline instruksi adalah meyakinkan aliran
stasioner instruksi ke langkah-langkah awal pipeline.Hambatan utama,seperti yang telah kita
lihat,adalah instruksi percabangan bersyarat.Sampai instruksi benar-benardieksekusi,adalah
mustahil untuk menentukan apakah percabangan akan diambil atau tidak.
Berbagai pendekatan telah diambil untuk berhadapan dengan percabangan bersyarat:
*Berbagai macam arus (Multiple streams)
*Target percabangan prefetch (Prefetch branch target)
*Buffer pengulangan (Loop buffer)
28Struktur dan Fungsi CPU
*Prediksi percabangan (Branch prediction)
*Percabangan tertunda (Delayed branch)
1. Multiple Streams
Kedua instruksi percabangan diambil dengan dua buah stream.
Kelemahan :
Adanya persaingan dalam mengakses register dan memori untuk dimasukkan
dalam pipeline.
Bila dalam percabangan terdapat percabangan percabangan lagi, tidak mampu
ditangani oleh dua stream.
Walaupun terdapat kelemahan tapi terbukti meningkatkan kinerja kinerja
pipelining.
Teknik Teknik ini ini diterapkan diterapkan pada pada IBM 370/168 IBM
370/168 dan dan IBM 3033 IBM 3033
.2. Prefetch branch target
Apabila pencabangan bersyarat telah diketahui prosesnya :
Dilakukan pengambilan awal (prefetch) terhadap instruksi setelah pencabangan dan
target pencabangan.
Diterapkan pada IBM 360/91.
Masalah :
Diperlukan buffer dan register untuk prefetch
3. Loop buffer
Apabila terdapat pencabangan maka perangkat keras memeriksa apakah target
pencabangan telah ada dalam buffer, bila telah ada maka instruksi berikutnya diambil dari
buffer. Perbedaan dengan prefetch adalah pada loop buffer akan membuffer instruksi ke
depan dalam jumlah yang banyak, sehingga bila target tidak berjauhan lokasinya maka
secara secara otomatis telah terbuffer. Terkesan teknik ini seperti cache memori, namun
terdapat perbedaan karena loop buffer masih mempertahankan urutan instruksi yang
diambilnya
4. Branch prediction
Penganalisaan sejarah instruksi. Kenapa ?
29Struktur dan Fungsi CPU
Instruksi komputer seringkali terjadi berulang.
Sehingga :
Teknik prediksi ini juga diterapkan dalam pengambilan instruksi pada cache memori.
Diperlukan algoritma khusus untuk melakukan prediksi tersebut.
Patokan memprediksi target pencabangan
Penganalisaan eksekusi – eksekusi yang telah terjadi dan aspek lokalitas.
Aspek lokalitas memori adalah kecenderungan penyimpanan instruksi yang
berhubungan dalam tempat yang berdekatan
5. Delayed branch
Eksekusi pada tahapan yang melibatkan pencabangan akan akan dilakukan penundaan
proses beberapa saat sampai didapatkan hasil pencabangan. Namun tahapan pipelining
lainnya dapat berjalan seiring penundaan tersebut. Teknik penundaan ini menggunakan
instruksi NOOP.
d. Pipelining Intel 80486Implementasi 80486 pipeline lima langkah :
Pengambilan : Instruksi diambil dri cache atau dari memori eksternal dan
ditempatkan ke salah satu dari dua buffer prefetch 16-byte. Tujuan langkah
pengambilan aadalah untuk mengisi buffer prefetch dengan data yang baru secepat
data yang lama telah dikonsumsi oleh pendecode instruksi. Karena panjang
instruksi variabel (dari satu sampai 11 byte tidak menghitung awalan), status
prefetcher relative dengan langkah-langkah pipeline yang bervariasi dari instruksi
ke instruksi. Pada rata-rata sekitar lima instruksi diambil dengan setiap isi 16-byte
30Struktur dan Fungsi CPU
[CRAW90]. Langkah pengambilan beroperasi secara independen dari langkah-
langkah lain untuj menjaga buffer prefetch penuh.
Memecahkan kode langkah 1 : Semua opcode dan informasi mode pengalamatan
dikodekan pada langkah D1. Informasi yang ditemukan, seperti halnya informasi
panjang instruksi, tercakup paling banyak 3 byte pertama dari instruksi itu.
Karenanya 3 byte diberikan ke langkah D1 dari buffer prefetch. Pendekode D1
kemudian dapat mengarahkan langkah D2 untuk menangkap sisa instruksi (data
penggantian dan data segera), yang tidak dilibatkan dalam pemecahan kode D1.
Memecahkan kode langkah 2 : langkah D2 memperluas setiap opcode ke dalam
sinyal control untuk ALU. Langkah D2 juga megontrol perhitungan mode
pengalamatan yang lebih kompleks.
Eksekusi : langkah ini meliputi operasi ALU, akses cache dan update register.
Tulis : Langkah ini, jika diperlukan, meng-update register dan flag status yang
dimodifikasi sepanjang langkah eksekusi yang terdahulu. Jika instruksi terakhir
meng-update memori, nilai yang dihitung dikirim ke cache dank e antar muka bus
buffer tulis pada waktu yang sama.
Dengan menggunakan dua langkah memecahkan kode, pipeline dapat mendukung
throughput dengan satu instruksi per siklus pewaktu. Instruksi-instruksi kompleks dan
percabangan bersyarat dapat melambatka n kelajuan ini.
31Struktur dan Fungsi CPU
Gambar 12.19 Contoh Pipeline instruksi 80486
Pipelining intel 80486DX Intel adalah anggota pertama dari keluarga 486 (yang
memiliki banyak anggota lebih dari 386 keluarga itu). Ini memberikan peningkatan yang
sangat signifikan dalam kekuasaan atas prosesor 80386DX, pada kenyataannya, jauh lebih
secara proporsional daripada 386 lakukan selama 286. Sebuah prosesor 486DX memberikan
performa sekitar 100 sampai 150% lebih dari sebuah 386DX dari kecepatan clock yang sama.
Para 80.486 membawa GUI untuk arus utama pada PC, itu adalah prosesor minimum yang
kebanyakan orang anggap "berguna" untuk menjalankan sistem operasi seperti Microsoft
Windows.
Menariknya, 486 tidak menyediakan perbaikan kinerjanya dengan pelebaran salah satu bus,
seperti yang telah kasus dalam dua generasi sebelumnya: itu masih merupakan prosesor 32-
bit dengan 32-bit data dan bus alamat, sama seperti 386DX tersebut. Namun, secara internal,
486 menggabungkan beberapa perbaikan yang signifikan selama 386:
Instruksi Cepat keseluruhan waktu eksekusi: Inti chip dapat mengeksekusi
instruksi dalam waktu kurang dari prosesor sebelumnya.
Pipa Child: pipa eksekusi meningkat sebesar satu langkah.
Cache Primer: Prosesor 486 adalah yang pertama untuk menggabungkan tingkat
1 cache pada chip, untuk mengurangi jumlah akses yang diperlukan ke memori.
Point Unit Terpadu Mengambang: chip ini mencakup Coprocessor matematika
terpadu (tidak pada versi SX namun). Selain itu, Coprocessor memberikan
kinerja yang jauh lebih dari 80.387 opsional digunakan dengan 386 keripik,
sebagian karena terintegrasi ke dalam chip.
Burst Mode: The 486 memperkenalkan penggunaan burst mode untuk
mengurangi waktu menunggu di akses memori.
Manajemen Power: SL manajemen daya perangkat tambahan sebagai pilihan
(bukan chip SL khusus seperti yang terjadi untuk 386SL).
Arsitektur Dukungan Peningkatan: Secara umum, 486 motherboard lebih efisien
daripada 386 orang, dan mulai menggunakan cache sekunder juga. Hal ini
meningkatkan kinerja prosesor secara signifikan.
32Struktur dan Fungsi CPU
Menariknya, Coprocessor 80487SX yang dimaksudkan untuk digunakan dengan versi
SX dari 80486, pada kenyataannya merupakan prosesor full-blown 80486DX. Ini adalah
bagian dari bagaimana Intel terstruktur jalur upgrade keempat generasi keluarga. Lihat
deskripsi 80486SX untuk rincian lebih lanjut tentang ini. AMD dan Cyrix tidak menghasilkan
klon dari 80486 prosesor asli Intel, tapi mereka bukan pemain besar di pasar klon 486 hingga
semakin tinggi kecepatan DX2 dan DX4 prosesor. 486DX ini dianggap usang, meskipun chip
masih memiliki kekuatan yang cukup baik untuk melakukan berbagai tugas ringan, seperti
pengolah kata dan beberapa permainan yang lebih tua, dan akses Internet cahaya. Para
486DX-50, yang berjalan pada sistem bus 50 MHz, memberikan performa sebanding dengan
486DX2-66 dengan berbagai cara, karena yang terakhir hanya menggunakan sistem bus 33
MHz. Para 486DX-50 tidak digunakan dalam sistem hampir sebanyak kecepatan prosesor
lainnya. Seharusnya tidak bingung dengan 486DX2-50, yang berjalan pada kecepatan clock
prosesor yang sama tetapi jam-dua kali lipat dibandingkan dengan sistem bus (yang berjalan
pada 25 MHz).
E. Prosesor Pentium
1. Organisasi Register
Organisasi register meliputi jenis register yang berikut (tabel 12.1):
Umum: terdapat delapan register bertujuan umum 32 bit. Ini bias digunakan untuk
semua jenis instruksi Pentium; register tersebut dapat juga menampung operand untuk
kalkulasi alamat. Sebagai tambahan, beberapa dari register ini juga memberikan
tujuan khusus. Sebagai contoh, perintah string menggunakan isi register ECX, ESI,
dan EDI sebagai operand tanpa keharusan untuk mengacu register ini secara eksplisit
dalam instruksi. Sebagai hasilnya, sejumlah perintah dapat dikodekan dengan singkat.
Segmen: enam register bersegmen 16 bit terdiri dari selector segmen, yang
mengindeks ke dalam tabel bersegmen. Register segmen kode mengacu segmen yang
terdiri dari instruksi yang sedang dieksekusi. Register segmen stack mengacu segmen
yang terdiri dari stack terlihat oleh pengguna. Register bersegmen yang meninggalkan
enable pengguna (DS,ES,FS,GS) mengacu sampai ke tempat segmen data terpisah
pada waktu yang sama.
Flag: register EFLAG terdiri dari kode kondisi dan berbagai bit mode.
Pointer Instruksi: terdiri dari alamat instruksi tertentu.
33Struktur dan Fungsi CPU
Terdapat juga register yang diberikan secara spesifik bagi unit titik-mengambang:
Numerik: setiap register menampung sejumlah titik mengambang 80 bit dengan
ketetapan luas. Terdapat 8 register yang berfungsi sebagai stack, dengan operasi push
dan pop yang tersedia pada set instruksi.
Kontrol: register control 16 bit terdiri dari bit yang mengontrol pengoperasian unit
titik mengambang, termasuk jenis control pembulatan; ketepatan tunggal, ganda, atau
luas; dan bit yang enable atau disable multiple kondisi-kondisi perkecualian.
Status: register status 16 bit terdiri dari bit yang mencerminkan status tertentu dari
unit titik mengambang, termasuk pointer 3 bit ke puncak stack; kode kondisi
melaporkan hasil operasi terakhir; dan flag perkecualian.
Word tag: register 16 bit ini terdiri dari tag 2 bit untuk setiap register numeric titik
mengambang, yang mengindekasikan sifat isi register yang bersesuaian. Empat nilai-
nilai yang mengkin valid adalah nol, khusus (NaN, ketidak terbatas, denormalisasi)
dan kosong. Tag ini memungkinkan program untuk memeriksa isi dari register
numeric tanpa melakukan pengkodean yang kompleks data actual dalam register
tersebut. Sebagai contoh, ketika tombol konteks dibuat, prosesor tidak perlu
menyimpan setiap register titik mengambang yang kosong.
Register EFLAG
Register EFLAG (gambar 12.20) mengindikasikan kondisi prosesor dan membantu
mengontrol operasinya. Termasuk enam kode kondisi yang didefiinisikan (pembawa,
paritas, pelengkap, nol, tanda, overflow), yang melaporkan hasil operasi integer. Sebagai
tambahan, terdapat beberapa bit dalam register yang dapat diacu sebagai bit control:
34Struktur dan Fungsi CPU
Flag Jebakan (Trap flag-TF): ketika di-set, menyebabkan interupsi setelah
eksekusi setiap instruksi. Ini digunakan untuk debugging.
Flag enable interupsi (Interupt enable flag-IF): ketika di-set, prosesor akan
mengenali interupsi eksternal.
Flag arah (Direction flag-DF): menentukan apakah pengolahan string
menaikkan atau menurunkan instruksi register separuh 16 bit S1 dan D1 (untuk
operasi 16 bit) atau register 32 bit ESI dan EDI (untuk operasi 32 bit).
Flag khusus I/O: ketika di-set, menyebabkan prosesor menghasilkan
perkecualian pada semua akses ke perangkat I/O selama opersi mode proteksi.
Flag mulai lagi: memungkinkan pemrograman untuk disable debug perkecualian
sehingga instruksi dapat dimulai kembali setelah debug perkecualian hingga batas
tertentu tanpa menyebabkan debug perkecualian yang lain.
Cek kelurusan: mengaktifkan jika word atau doubleword dialamatkan pada batas
nonword atau nondoubleword.
Flag identifikasi: jika bit ini dapat diset dan dibersihkan, maka prosesor ini
mendukung instruksi CPUID instruksi. Instruksi ini memberikan informasi
tentang vendor, jenis, dan model.
Sebagai tambahan, terdapat 4 bit yang berhubungan dengan mode pengoperasian.
Flag tugas tersarang mengindikasikan bahwa tugas tertentu tersarang didalam tugas
lainnya pada operasi mode terproteksi. Bit mode virtual memungkinkan pemrogram
untuk enable atau disable mode virtual 8086, yang menentukan apakah prosesor
35Struktur dan Fungsi CPU
berjalann sebagai mesin 8086. Flag interupsi virtual dan flag penungguan interupsi
virtual digunakan pada lingkungan multitasking.
Register Kontrol
Pentium menggunakan empat register control 32 bit untuk mengontrol berbagai aspek
operasi prosesor. Register CR0 terdiri dari flag control system, yang mengontrol mode-mode
atau mengindikasikan keadaan bahwa aplikasi secara umum ke prosesor daripada ke eksekusi
tugas individu. Flag adalah sebagai berikut:
Enable Proteksi: mode proteksi operasi enable atau disable.
Monitor Coprosesor: menarik perhatian hanya ketika menjalankan program dari
mesin sebelum Pentium; ini berhubungan dengan kehadiran coprosesor aritmetika.
Emulasi: di-set ketika prosesor tidak mempunyai unit titik mengambang, dan
menyebabkan interupsi ketika dibuat untuk mengeksekusi instruksi titik
mengambang.
Tugas yang di switch: mengindikasikan bahwa prosesor mempunyai tugas yang di
switch.
Jenis Ekstensi: tidak digunakan pada Pentium; digunakan untuk mengindikasikan
dukungan instruksi coprosesor matematik pada mesin sebelumnya.
Kesalahan numeris: memungkinkan mekanisme baku pelaporan kesalahan titik
mengambang pada saluran bus eksternal.
Proteksi Tulis: ketika bit ini kosong, halaman read only tingkat pengguna dapat
ditulis dengan proses supervisor. Fitur ini bermanfaat untuk mendukung pembuatan
proses dalam beberapa system operasi.
Alignment mask: enable/disable cek perataan.
Tidak tulis melalui: memilih mode operasi cache data. Ketika bit ini di-set, cache
data dilarang melakukan operasi melalui penulisan cache.
Cache disable: enable/disable mekanisme pengisian cache internal.
Pemberian nomor halaman: enable/disable pemberian nomor halaman.
Ketika pemberian nomor halaman dimungkinkan, register CR2 dan CR3 valid.
Register CR2 menampung alamat linear 32 bit halaman terakhir yang diakses sebelum
interupsi halaman kesalahan. Bit 20 paling kiri dari CR3 menampung 20 lebih bit signifikan
dari alamat dasar direktori halaman; perlu diingat alamat terdiri dari nol. Dua bit dari CR3
digunakan untuk mengemudikan pin-pin yang mengontrol operasi cache eksternal. Page-level
36Struktur dan Fungsi CPU
cache disable enable atau disable cache eksternal, page-level writes transparent mengontrol
bit melalui penulisan cache eksternal.
Sembilan bit control tambahan didefinisikan dalam CR4:
Virtual-8086 mode extention: memungkinkan mendukung untuk interupsi virtual
dalam mode virtual-8086.
Protected-mode virtual interrupts: memungkinkan mendukung untuk flag interupsi
virtual dalam mode yang terproteksi.
Time stamp disable: men-disable instruksi read time stamp counter, yang digunakan
untuk tujuan debugging.
Ekstens; Debugging: enable breakpoint I/O; hal ini mengijinkan prosesor untuk
menginterupsi pada pembacaan dan penulisan I/O.
Perluasan ukuran halaman: memungkinkan penggunaan halaman 4Mbyte ketika di-
set pada halaman Pentium atau 2 Mbyte ketika di-set pada Pentium pro dan Pentium.
Perluasan alamat fisik: memungkinkan saluran alamat A35 melalui A32 kapan saja
mode pengalamatan baru khusus, dikontrol oleh PSE, dimungkinkan untuk arsitektur
Pentium pro dan Pentium berikutnya.
37Struktur dan Fungsi CPU
Enable cek mesin: memungkinkan interupsi memeriksa mesin, yang terjadi ketika
kesalahan paritas dan terjadi ketika kesalahan paritas data terjadi selama siklus bus
baca atau ketika siklus bus tidak berhasil diselesaikan.
Enable menyeluruh halaman: memungkinkan penggunaan halaman menyeluruh.
Ketika PGE=1 dan tombol tugas dilakukan, semua masukan TLB di-flush dengan
pengecualian yang ditandai menyeluruhnya.
Enable pencacah kinerja: memungkinkan eksekusi instruksi RDPMC pada
sembarang tingkatan khusus. Dua pencacah kinerja digunakan untuk mengukur
jangka waktu jenis peristiwa spesifik dan banyaknya kejadian dari jenis peristiwa
spesifik.
Register MMX
Mengingat bahwa kemampuan PENTIUM MMX dapat menggunakan beberapa jenis
data 64 bit. Instruksi MMX dapat menggunakan bidang alamat register 3 bit, sehingga di
dukung delapan register MMX. Kenyataannya, prosesor tidak meliputi register MMX yang
spesifik. Melainkan prosesor menggunakan teknik alias. Register titik mengambang yang ada
digunakan untuk nilai-nilai penyimpan MMX. Secara rinci, 64 bit order rendah (mantisa)
setiap register titik mengambang digunakan untuk membentuk DELAPAN register MMX.
Sehingga, arsitetur Pentium yang ada dengan mudah diperluas untuk mendukung kemampuan
MMX. Beberapa karakter penting MMX yang menggunakan register ini adalah sebagai
berikut:
Mengingat bahwa register titik mengambang diperlakukan sebagai stack untuk
operasi titik mengambang. Karena operasi MMX, register yang sama ini dapat diakses
secara langsung.
Pertama kali instruksi MMX dieksekusi setelah terdapat sembarang operasi titik
mengambang, tag word FP ditandai valid. Hal ini mencerminkan perubahan dari
operasi stack ke pengalamatan register langsung.
Instruksi EMMS menetapkan bit dari tag word FP untuk mengindikasikan bahwa
semua register adalah kosong. Adalah penting bahwa pemrograman menyisipkan
instruksi ini pada ujung blok kode MMX sehingga fungsi operasi titik mengambang
berikut berjalan dengan baik.
Ketika suatu nilai ditulis keregister MMX, bit [79:64] yang bersesuaian dengan
register FP (bit tanda dan bit eksponen) diset kesemua orang. Hal ini mengeset nilai
38Struktur dan Fungsi CPU
dalam register FP ke NAN (bukan bilangan) atau ketidakterbatasan ketika dipandang
sebagai nilai titik mengambang. Hal ini memastikan bahwa nilai data MMX tidak
akan terlihat seperti nilai titik mengambbang yang valid.
Pengolahan Interupsi
Pengolahan interupsi didalam prosesor merupakan fasilitas yang diberikan untuk
mendukung sistem operasi. System tersebut mengizinkan program aplikasi ditahan, supaya
berbagai kondisi-kondiisi interupsi dapat dilayani dan kemudian setelah itu dilanjutkan.
Interupsi dan Perkecualian
Dua kelas peristiwa menyababkan Pentium menghentikan eksekusi instruksi terakhir
dan merespons kejadian: interupsi dan perkecualian. Pada kedua kasus, prosesor menyimpan
isi dari proses terakhir dan memindahkannya ke suatu rutin yang telah dikenal untuk
melayani kondisi. Sebuah interupsi dihasilkan oleh sinyal hardware, dan dapat terjadi secara
acak sepanjang waktu eksekusi program. Sebuah perkecualian diturunkan dari software dan
ini diprovok oleh eksekusi instruksi. Terdapat dua sumber interupsi dan dua sumber
perkecualian:
1. Interrupsi
Maskable Interrupts: diterima pada pin INTR prosesor. Prosesor tidak mengenali
interupsi askable kecuali jika flag enable interupsi di set.
Nonmaskable Interrupts: diterima pada pin NMI prosesor. Pengenalan interupsi
seperti itu tidak bias dicegah.
39Struktur dan Fungsi CPU
2. Perkecualian
Perkecualian Terdeteksi Prosesor: dihasilkan ketika prosesor menghadapi suatu
kesalahan ketika mencoba mengeksekusi instruksi.
Perkecualian Terprogram: ini adalah instruksi yang menghasilkan perkecualian.
Tabel Vektor Interupsi
Pengolahan interupsi pada Pentium menggunakan tabel vektor interupsi. Setiap jenis
interupsi ditugaskan sebagai bilangan, dan bilangan ini digunakan untuk mengindeks ke
dalam tabel vektor interupsi. Tabel ini terdiri dari 256 vektor interupsi 32 bit yang merupakan
alamat (segmen dan offset) dari layanan rutin interupsi untuk bilangan interupsi tersebut.
Tabel 12.2 menunjukkan penjelasan bilangan-bilangan pada vektor interupsi tabel;
masukan yang berbayangan merepresentasikan interupsi, ketika masukan tidak berbayanagan
berarti perkecualian. Interupsi hardware NMI adalah jenis 2. Interupsi hardware INTR adalah
bilangan yang berada disekitar 32 sampai 255; ketika interupsi INTR dihasilkan, interupsi
INTR harus berada pada bus dengan bilangan vektor interupsi untuk interupsi ini. Bilangan
vektor sisanya digunakan sebagai perkecualian jika lebih banyak dari satu perkecualian atau
interupsinya menunggu, layanan prosesornya pada pesanan yang dapat diprediksi. Lokasi
bilangan vektor dengan tabel tidak mencerminkan prioritas. Sebagai gantinya, prioritas antar
perkecualian dan interupsi diorganisasikan dalam lima kelas. Pada urutan prioritas menurun,
yaitu:
Kelas 1: terjebak pada instruksi sebelumnya (bilangan vektor 1)
Kelas 2: interupsi eksternal (2,32-255)
Kelas 3: kesalahan dari pengambilan instruksi berikutnya (3,14)
Kelas 4: kesalahan dari memecahkan kode instruksi berikutnya (6,7)
Kelas 5: kesalahan pada pengeksekusian instruksi (0,4,5,8,10-14,16,17)
Penanganan Interupsi
Sama halnya dengan perpindahan eksekusi yang menggunakan instruksi CALL,
perpindahan ke rutin penanganan interupsi menggunakan stack system untuk menyimpan
status prosesor. Ketika interupsi terjadi dan dikenal oleh prosesor, rangkaian berikut akan
berlangsung:
40Struktur dan Fungsi CPU
1. Jika perpindahan melibatkan perubahan tingkatan khusus, maka register segmen
stack tertentu dan register pointer stack yang diperluas tertentu register dipush ke
stack.
2. Nilai tergantung register EFLAG dipush ke stack.
3. Baik flag interupsi maupun flag jebakan dikosongkan. Hal ini mendisable
interupsi INTR dan jebakan atau fitur langkah tunggal.
4. Pointer segmen kode dan pointer instruksi di push ke stack.
5. Jika interupsi menyertai kode kesalahan, maka kode kesalahan di push ke stack.
6. Muatan vektor interupsi diambil dan di isi kedalamm register CS dan IP atau EIP.
Eksekusi berlanjut dari rutin layanan interupsi.
Untuk kembali dari interupsi, rutin layanan interupsi mengeksekusi instruksi IRET.
Hal ini menyebabkan semua nilai-nilai yang tersimpan pada stack dikembalikan; eksekusi
melanjutkan dari point interupsi.
F. Prosesor Powerpc
Organisasi Register
Gambar register terlihat oleh pengguna PowerPC menggambarkan register terlihat
oleh pengguna untuk PowerPC. Termasuk unit titik tetap.
Umum : terdapat tigapuluh dua register bertujuan umum 64-bit. Ini dapat digunakan
untuk mengisi, menyimpan, dan memanipulasi operand data dan juga dapat digunakan
untuk pengalamatan tidak langsung register. Register 0 diperlakukan sedikit banyak
secara berbeda. Untuk operasi load dan store beberapa instruksi tambahan, register 0
diperlakukan sebagai yang mempunyai nilai tetap nol dengan mengabaikan muatan
nyatanya.
Register perkecualian (Exception register-XER) : meliputi 3 bit yang melaporkan
perkecualian dalam operasi aritmatika integer. Register ini juga meliputi bidang
penghitung byte yang digunakan sebagai operand untuk beberapa perintah string.
Tabel Perkecualian Pentium dan Vektor Interupsi
Nama Vektor Penjelasan
0 Kesalahan pembagian; overflow pembagian atau pembagian oleh nol
1Perkecualaian Debug; meliputi berbagai kesalahan dan jebakan yang
dihubungkan dengan debugging
2 Interupsi pin NMI; sinyal pada pin NMI
41Struktur dan Fungsi CPU
3Breakpoint; disebabkan oleh instruksi INT 3, yang merupakan
instruksi 1-byte yang bermanfaat untuk debugging
4Overflow terdeteksi INTO; terjadi ketika prosesor mengeksekusi
INTO dengan flag OF yang
5
Melebihi set cakupan BOUND; instruksi BOUND membandingkan
sebuah register dengan batasan-batasan yang tersimpan dalam memori
dan menghasilkan suatu interupsi jika muatan register di luar batas
6 Opcode tidak terdefinisi
7Perangkat tidak tersedia; berusaha untuk menggunakan instruksi ESC
atau WAIT gagal dalam kaitannya dengan ketiadaan
8‘Double fault’ perangkat eksternal; dua interupsi terjadi sepanjang
instruksi yang sama dan tidak bisa ditangani secara berturutan
9 Dipesan
10
Tugas tidak valid menyatakan segmen; segmen menguraikan suatu
tugas yang diminta tidak diinisialisasikan atau segmen yang tidak valid
tidak disajikan
11 Segmen yang diperlukan tidak tersajikan
12Kesalahan stack; batas dari segmen stack yang terlewati atau segmen
stack tidak memberikan proteksi umum
13Pelanggaran proteksi yang tidak menyebabkan perkecualian yang lain
(misalnya, penulisan ke segmen read-only)
14 Kesalahan halaman
15 Dipesan
16Kesalahan titik mengambang; Dihasilkan oleh suatu cek perataan
instruksi aritmatika
17
Titik mengambang; mengakses ke word tersimpan pada alamat bit
ganjil atau doubleword tersimpan pada alamat yang tidak satu pun
berbagai macam cek mesin 4; model spesifik
18 Dipesan
32-255 Vektor interupsi pengguna; diberikan ketika sinyal INTR diaktifkan
Tidak berbayangan : perkecualian
Berbayangan : interupsi
Tabel Bit Status Titik Mengambang dan Register Kontrol PowerPC
Bit Definisi
0 Ringkasan perkecualian. Di-set jika sembarang perkecualian terjadi:
42Struktur dan Fungsi CPU
sisanya di-set sampai di-reset oleh software
1Ringkasan perkecualian yang enabled. Di-set jika setiap perkecualian
enabled telah terjadi
2Ringkasan perkecualian operasi tidak valid. Di-set jika perkecualian
operasi tidak valid telah terjadi
3Perkecualian overflow. Nilai hasilnya melebihi apa yang dapat
direpresentasikan
4 Perkecualian underflow. Hasilnya terlalu kecil untuk dinormalisasikan
5Perkecualian pembagi nol. Pembagi nol dan dividennya adalah
nonzero terbatas
6Perkecualian tidak tepat. Hasilnya dibulatkan berbeda dari hasil antara
atau sebuah overflow terjadi dengan disabled perkecualian overflow
7:12
Perkecualaian operasi tidak valid. 7: pemberian sinyal NaN: 8; (∞ -
∞); 9(∞ + ∞); 10(0 + 0); 11(∞ - 0) 12; perbandingan yang
menyertakan NaN
13 Pecahan yang dibulatkan. Pembulatan hasil pertambahan pecahan
14Pecahan tidak tepat. Hasilnya dibulatkan mengubah pecahan atau
overflow terjadi dengan disabled perkeualian overflow
15:19
Flag hasil. Kode lima bit menspesifikasikan kurang dari, lebih dari,
sama dengan, tidak diperintah, NaN, ±∞, ± normalisasi, ±
denormalisasi, ±0
20 Dipesan
21:23
Perkecualian operasi tidak valid. 21: permintaan software, 22: akar
kuadrat bilangan negatif: 23: konversi bilangan bulat menyertakan
sejumlah besar bilangan, tidak terhingga, atau NaN
24 Enable perkecualian operasi tidak valid
25 Enable perkecualian overflow
26 Enable perkecualian underflow
27 Enable perkecualian pembagi nol
28 Enable perkecualian tidak tepat
29 Mode Non-IEEE
30:31Kontrol pembulatan. Kode dua bit menspesifikasikan ke yang paling
dekat, ke arah 0, ke arah
Tidak berbayangan : bit status
Berbayangan : bit kontrol
43Struktur dan Fungsi CPU
Unit titik mengambang terdiri dari register terlihat oleh pengguna tambahan :
Umum : Terdapat tigapuluh dua register bertujuan umum 64-bit, digunakan untuk semua
operasi titik mengambang.
Register status dan control titikj mengambang (floting-point status and control register-
FPSCR) : Register 32-bit ini terdiri dari bit yang mengontrol pengoperasian unit titik
mengambang dan bit yang merekam status sebagai hasil dari opersai titik mengambang.
Tabel Interpretasi Bit dalm Register Kondisi
Posisi
Bit
CR0 (Instruksi
integer dengan
Rc = 1)
CR1 (Instruksi
titik
mengambang
dengan Rc = 1)
CRi (Titik tetap
perbandingkan
instruksi)
CRi (Titik
mengambang
perbandingka
n instruksi)
i Hasil < 0 Ringkasan
perkecualian
op1 < op22 op1 < op2
i + 1 Hasil > 0 Ringkasan
perkecualian
enable
op1 > op2 op1 > op2
i + 2 Hasil = 0 Ringkasan
perkecualaian
operasi tidak valid
op1 = op2 op1 = op2
i + 3 Overflow
ringkasan
Perkecualian
overflow
Overflow
ringkasan
Tidak
diperintah
(satu operand
adalah NaN)
Unit pengolahan percabangan terdiri dari register terlihat oleh pengguna ini :
Register kondisi : Terdiri dari delapan bidang kode kondisi 4-bit.
Register penghubung (Link) : Register penghubung dapat digunakan pada instruksi
percabangan bersyarat untuk pengalamatan tidak langsung alamat target. Register ini juga
digunakan untuk perilaku call/return. Jika LK bit pada instruksi percabangan bersyarat di-
set, maka alamat mengikuti instruksi percabangan yang ditempatkan pada register
penghubung, register dapat digunakan untuk hasil selanjutnya.
Perhitungan : Register penghitungan dapat digunakan untuk mengontrol pengulangan
iterasi; register penghitungan diturunkan setiap waktu yang diuji pada instruksi
44Struktur dan Fungsi CPU
percabangan bersyarat. Penggunaan lain register ini adalah pengalamatan tidak langsung
dari alamat target pada instruksi percabangan.
Bidang register kondisi mempunyai sejumlah kegunaan. Pertama 4 bit (CR0) di-set
untuk semua instruksi aritmatika integer di man bit Rc di-set. Bidang mengindikasikan
apakah hasil operasi berupa bilangan positif, negatif, atau nol. Bit yang keempat merupakan
salinan ringkasan bit dari XER. Bidang berikutnya (CR1) di-set untuk semua instruksi
aritmatika titik mengambang di mana bit Rc di-set. Dalam hal ini, 4 bit dibuat sam dengan
empat bit yang pertama dari FSPCR. Akhirnya, delapan bidang kondisi (CR0 sampai CR7)
dapat digunakan dengan membandingkan instruksi; pada setiap kasus, identitas bidang
dispesifikasikan pada instruksi dirinya sendiri. Untuk perbandingan instruksi baik titik tetap
maupun titik mengambang, pertama 3 bit merancang rekaman bidang kondisi apakah operand
pertama kurang dari, lebih besar dari, atau sama dengan operand kedua. Bit keempat
merupakan bit overflow ringkasan untuk membandingkan titik tetap, dan indikator yang tidak
diperintah untuk membandingkan titik mengambang.
Pengolahan Interupsi
Sebagaimana dengan prosesor yang lain, PowerPC meliputi fasilitas yang
memungkinkan prosesor untuk menginterupsi eksekusi program terakhir untuk berhubungan
dengan kondisi perkecualian.
Jenis Interupsi
Interupsi pada PiwerPc digolongkan sebagai penyebab beberapa kondisi sistem atau
peristiwa dan yang disebabkan oleh eksekusi suatu instruksi. Tabel interupsi PowerPC
mendaftar interupsi yang dikenali oleh PowerPC.
Kebanyakan interupsi yang didaftar pada tabel mudah dipahami. Beberapa menjamin
komentar lebih lanjut. Interupsi reset sistem terjadi pada daya dan ketika tombol reset pada
unit sistem ditekan, dan hal itu menyebabkan sistem melakukan booting ulang. Interupsi cek
mesin berhadapan dengan keganjilan tertentu, seperti kesalahan paritas cache dan acuan ke
lokasi memori non-eksisten, dan dapat menyebabkan sistem untuk masuk apa yang dikenal
sebagai status checkstop; status ini menghentikan eksekusi prosesor dan membekukan isi
register sampai booting ulang. Titik mengambang membantu memungkinkan prosesor untuk
memelihara rutin perangkat lunak untuk menyelesaikan operasi yang tidak bisa ditangani
45Struktur dan Fungsi CPU
secara langsung oleh unit titik mengambang, seperti menyertakan bilangan-bilangan
didenormalisasi atau opcode titik mengambang yang tidak bisa diterapkan.
Register Status Mesin
Hal pokok untuk intrupsi suatu program adalah kemampuan untuk memulihkan status
prosesor pada waktu intrupsi. Hal ini meliputi tidak hanya berbagai register tetapi juga
berbagai kondisi-kondisi control yang berhubungan dengan eksekusi. Kondisi-kondisi ini
terkandung dalam MSR. Lagipula, beberapa bit register ini memerlukan keterangan lebih
lanjut.
Ketika bit mode khusus (bit 49) di-set, prosesor beroperasi pada tingkatan khusus
pengguna. Hanya subset instruksi yang di-set tersedia. Ketika bit dikosongkan, prosesor
beroperasi pada tingkatan khusus supervisor. Hal ini memungkinkan semua instruksi dan
memberikan akses ke register system tertentu (seperti MSR) tidak dapat diakses dari
tingkatan khusus pengguna.
Nila-nilai dua bit perkecualian titik mengambang (bit 52 dan 55) mendefinisikan jenis
interupsi bahwa unit titik mengambang dapat menghasilkan. Interpretasinya adalah sebagai
berikut :
FE0 FE1 Interupsi yang akan dikenali
0 0 Tidak ada
0 1 Tidak dapat dipulihkan tidak tepat
1 0 Dapat dipulihkan tidak tepat
1 1 Tepat
Ketika bit pelacak langkah tunggal (bit 53) di-set, percabangan prosesor ke jejak
penangan interupsi setelah penyelesaian yang berhasil dari setiap instruksi. Ketika
percabangan melacak bit (bit 54) di-set, percabangan prosesor ke percabangan melacak
penangan interupsi setelah penyelesaian yang berhasil dari setiap instruksi percabangan, ya
atau tidaknya percabangan telah diambil.
Penerjemahan alamat instruksi (bit 58) dan penerjemahan alamat data (bit59)
menentukan apakah pengalamatan riil digunakan atau apakah unit manajemen memori
melakukan penerjemahan alamat.
Penanganan Interupsi
46Struktur dan Fungsi CPU
Ketika ssebuah interupsi terjadi dan dikenali oleh prosesor, urutan kejadian berikut
mengambil-alih :
1. Prosesor menempatkan alamat intruksi dieksekusi berikutnya dalam register save/restore
0 (save/restore register 0-SRR0). Yaitu alamat instruksi eksekusi terakhir jika intrupsi
disebabkan oleh kegagalan usaha untuk mengeksekusi instruksi tersebut; selain itu,
adalah alamat instruksi berikutnya dieksekusi setelah instruksi terakhir.
Poin Masukan Jenis Interupsi Penjelasan
00000h Dipesan
00100h Reset sistem Pernyataan prosesor mereset keras atau lunak
suatu sinyal input oleh logika eksternal
00200h Cek mesin Pernyataan TEA# ke prossesor ketika
pernyataan itu enable untuk mengenali cek
mesin
00300h Penyimpanan data Contoh : kesalahan halaman data; mengakses
pelanggaran yang benar pada load/store
00400h Penyimpanan instruksi Keslahan halaman kode; instruksi yangn dicoba
diambil dari segmen I/O; akses pelanggaran
yang benar
00500h Eksternal Pernyataan interupsi sinyal input eksternal
prosesor oleh logika eksternal ketika pengenalan
interupsi eksternal enabled
00600h Perataan Usaha gagal untuk akses memori berkaitan
dengan operand yang tidak dapat diratakan
00700h Program Interupsi titik mengambang; pengguna mencoba
mengeksekusi instruksi yang dikhususkan;
instruksi jebakan dieksekusi dengan kondisi
yang dispeifikasikan; instruksi ilegal
00800h Titik mengambang yang tidak tersedia Berusaha mengeksekusi instruksi titik
mengambang dengan unit titik mengambang
disabled
00900h Pengurang Kejenuhan register pengurang ketika pengenalan
interupsi eksternal enabled
00A00h Dipesan
00B00h Dipesan
00C00h Panggilan sistem Eksekusi instruksi panggilan sistem
00D00h Jejak Dipesan melacak interupsi satu langkah atau
percabangan
00E00h Bantuan titik mengambang Berusaha mengeksekusi operasi titik
47Struktur dan Fungsi CPU
mengambang yang kompleks secara relatif
jarang (misalnya, operasi pada bilangan yang
dinormalisasikan)
00E00-00FFFh Dipesan
01000h-02FFFh Dipesan (tergantung implementasi
tertentu)
Tidak berbayangan : Interupsi disebabkan oleh eksekusi instruksi
Berbayangan : Interupsi tidak disebabkan oleh eksekusi instruksi
2. Prosesor menyalin informasi status mesin dari MSR ke register save/restore1
(Save/restore Register 1-SSR1). Bit yang digambarkan sebagai tidak berbayangan dalam
tabel register status mesin PowerPC disalin. Bit SSR1 sisanya terisi dengan informasi
jenis interupsi spesifik.
3. MSR di-set nilai spesifik terdefinisikan hardware sebagai jenis intrupsi. Untuk semua
jenis interupsi, penerjemahan alamat dipadamkan dan interupsi eksternal disabled.
4. Prosesor kemudian mengontrol transfer ke penangan interupsi yang sesuai. Alamat
pengangan interupsi disimpan dalam tabel interupsi. Alamat dasar tabel itu ditentukan
oleh bit 57 dari MSR.
Untuk kembali dari interupsi, interupsi melayani instruksi rfi (return from interrupt).
Hal ini menyebabkan nilai-nilai bit tersimpan dalam SSr1 untuk dikembalikan ke MSR.
Eksekusi dilakukan pada lokasi yang tersimpan dalam SRR0.
Tabel Register Status Mesin PowerPC
Bit Definisi
0 Prosesor berada dalam mode 32 bit/64 bit
1:44 Dipesan
45 Enabled/disabled manajemen daya
46 Implementasi independen
47 Mendefinisikan apakah penangan interupsi berjalan dalam mode big-endian atau little-endian
48 Enabled/disabled interupsi eksternal
49 Keadaan dikhususkan/tidak dikhususkan
50 Ketersediaan/ketersediaan unit titik mengambang
51 Enabled/disabled interupsi cek mesin
52 Perkecualaian titik mengambang mode 0
53 Enabled/disabled jejak satu langkah
54 Enabled/disabled jejak percabangan
55 Perkecualian titik mengambang mode 1
48Struktur dan Fungsi CPU
56 Dipesan
57 Bagian paling signifikan alamat perkecualian adalah 000h/FFFh
58 On/off penerjemahan alamat instruksi
59 On/off penerjemahan alamat data
60:61 Dipesan
62 Interupsi dapat diperbaiki/tidak dapat diperbaiki
63 Prosesor berada dalam mode big-endian/little-endian
Berbayangan : tersalin ke SSR1
Tidak berbayangan : tidak tersalin ke SSR1
49Struktur dan Fungsi CPU
Top Related