Team Stanford University
MIPS =
Million Instructions Per Second
= Microprocessor without Interlocked
Pipeline Stages
John L. Hennesy 1981
Ide dasar: peningkatan kinerja prosesor
dengan
pipeline
Pengeksekusian sebuah instruksi dibagi
dalam beberapa step
Instruksi dieksekusi secara independen Problem:
interlock
MIPS Computer System
1984: Hannessy meninggalkan Stanford dan
beralih ke MIPS Computer System
1985: MIPS Computer System me-
release
design
pertamanya R2000 1988:
Me-release R3000
Bentuk CPU berbasis 32 bit
Design ini mengimplementasikan hampir semua
interlock di hardware-nya dan men-suply full multiple dan dividing instruction
MIPS Technologies
1990-an awal: MIPS mulai melisensi produknya ke 3
vendor
1990-an MIPS menjadi sebuah power house dalam
embedded processor
1991: MIPS me-release mikroprosesor 64 bit untuk
yang pertama kali yaitu R4000
1992: SGI membeli MIPS Computer System,
kemudian perusahaan ini berganti nama menjadi MIPS Technologies
1997: 48 juta perancangan CPU menggunakan
microprocessor MIPS
1998: MIPS menjadi sangat sukses setelah SGI
Lisensi MIPS
1999: MIPS membentuk lisensinya dalam 2
kelas besar
32-bit dengan MIPS 32
64-bit dengan MIPS 64
NEC, Toshiba, dan SysBite memperoleh
licency untuk MIPS64
MIPS design Team merancang R4300
Alchemy Semikonduktor memproduksi AU1000
SOC
Lexra menggunakan MIPS untuk audio chip
Keluarga CPU MIPS
(1) Model CPU MIPS yang pertama adalah R2000
yang dipasarkan sekitar tahun 1985
R2000 juga di-
support
oleh empatco-processor
, salah satunya dibangun di main CPU dan menggunakanexception
dantrap
Salah satu dari ketiga
co-processo
r tersebutdapat diisi dengan pilihan R2010 FPU yang
memiliki 32 bit register yang dapat digunakan sebagai 64 bit register dengan
double
Keluarga CPU MIPS
(2) R3000 merupakan pengembangan dari R2000
dengan penambahan 32 kB cache untuk instruksi dan data
Penggunaan cache coherency dapat mendukung
dalam penggunaan multi processor
R3000 juga dibangun di dalam MMU yang
merupakan fitur umum yang terdapat pada CPU pada era tersebut
R3000A digunakan oleh Sony Play Station dengan
frekuensi 4 MHz yang menghasilkan performansi 32 VUPs
Keluarga CPU MIPS
(3) Seri R4000 dirilis pada pada tahun 1991
R4000 menggunakan full 64 bit MIPS architecture dengan
memindahkan FPU ke dalam main die
Frekuensi clock sekitar 100 MHz Frekuensi clock tersebut dicapai
dengan mengurangi cache-nya menjadi 8 kB
Versi R4000 diikuti oleh R4400 yang dirilis pada tahun 1993 yang
menggunakan 16 kB cache, 64 bit operation untuk bug free, dan
sebuah controller external sebesar 1 MB cache
Pengembangan MIPS
(1) Quantum Effect Devices
(QED) adalah perusahaan pecahan dari MIPS
Technologies
QED merancang R4600
“Orion”, R4700”Orion”, R4650 dan R5000
QED design menekan
cache sehingga bisa
diakses hanya oleh dua
siklus dan mengefisienkan penggunaan silicon area
Pengembangan MIPS
(2) R4600 dan R4700
digunakan dalam versi
low-cost
versi oleh SGI Indy Workstation sebagai MIPS pertama yangberbasis pada Cisco
Routers seperti router seri 36 x 0 dan 7 x 00
R4650 digunakan secara
original dalam Web TV Setup Boxes (sekarang microsoft TV)
QED (
Quantum Effect Devices
)
QED merancang RM7000 dan
RM9000
Keduanya merupakan
embedded device untuk
networking/jaringan
komputer dan laser printer
R8000 merupakan rancangan
superscalar MIPS yang pertama kali
R8000 dapat mengeksekusi
dua operasi ALU dan dua
memory operation tiap satu siklusnya
Prosesor R8000
Prosesor ini memiliki enam chip yang berbeda yakni:
Sebuah integer unit dengan 16 kB instruction dan 16 kB
L1 data caches
Sebuah floating point unit
Tiga full custom secondary cache tag RAMs (dua untuk
secondary access cache dan satu untuk Bus snooping
(bus pengintai)
dan sebuah cache controller ASIC
Design ini memiliki dua pipelines penuh dengan
tingkat ketelitian double untuk unit perkalian dan
unit penambahan yang dapat mengalirkan data dari 4 MB secondary cache
Prosesor R10000
Pada tahun 1995, R10000 dirilis
Processor dengan single chip design
R10000 memiliki 32 kB primary instruction dan data
cache
Design-design berikutnya banyak yang berbasis
pada design R10000 core
R12000 dikembangkan secara manufacturing untuk
menyusutkan chip dan melakukan operasi dalam tingkat clock rate yang tinggi
R14000 memiliki clock rate yang tinggi dengan
tambahan support yaitu DDR RAM
Perkembangan berikutnya R16000 dan R16000A
Aplikasi MIPS
Beberapa perusahaan yang menggunakan MIPS
adalah SGI, MIPS Computer System Inc, Olivetti, Siemens-Nixdorf, Acer, Digital Equipment
Corporation, NEC dan Desk Station
Beberapa sistem operasi yang bisa dipasang pada
MIPS diantaranya:
SGI’s IRIX
Microsoft’s Windows NT (Windows NT yang mensupport
MIPS adalah Windows NT 4.0)
Windows CE LINUX BSD Unix System V SINIX RISC/OS
Perkembangan Lanjut MIPS
Anggota lain dari MIPS
family
yang termasukdalam R6000 adalah implementasi ECL dari
MIPS architecture
yang diproduksi oleh Bipolar Integrated Technology Pada R6000 diperkenalkan MIPS II ins
truction
set
RM7000 merupakan versi dari R5000 yang
dibangun dengan
2 level cache
dengankapasitas 256 kB per
cache
-nya dan sebuahcontroller
sebagai pilihan untuk menggunakan tiga levelcache
Komponen
Utama
MIPS
1.
Control Unit
: Bagian pengendali2.
Program Counter (PC
): Pencacah program 3.Instruction Memory
: Memori instruksi4.
Data Memory
: Memori data 5.Register
: File register6.
ALU (Arithmetic and Logical Unit):
Bagian pemroses aritmetik dan logikaKomponen
Pendukung
MIPS
1.
Adder
: Penjumlah 2.Shifter
: Penggeser3.
MUX (Multiplexer):
Multiplekser4.
Sign Extend
: menambah jumlah bitDatapath MIPS
Read Address Instruction (31-0) INSTRUCTION MEMORYAddress ReadData
DATA MEMORY Write Data Read Register 1 Read Data 1 REGISTERS Write Data Read Register 2 Write Register Read Data 2 CONTROL UNIT ALU Zero Flag Result ADD ALU Result ADD Result Sign Extend ALU Control Shift Left 2 M U X 0 1 M U X 0 1 M U X 1 0 PC 4 M U X 0 1 Instruction (31-26) Instruction (25-21) Instruction (20-16) Instruction (15-11) Instruction (15-0) RegDst Branch MemRead MemToReg ALUOp MemWrite ALUSrc RegWrite Instruction (5-0) 16 32 32 32 32 5 5 5 32 2 6 6 PCSrc 32 3 M e m T o R e g A L U S rc RegDst M e m W ri te MemRead 32 32 32 32 32 32 32 32
Bagian Pengendali
(Control Unit)
(1) Tujuan: Mengendalikan semua aktifitas prosesor Masukan: Kode operasi (Opcode) = 6 bit
Bagian Pengendali
(Control Unit)
(2) Input pada bagian pengendali adalah kode
operasi sebanyak 6 bit
Kode operasi ini diterjemahkan (di-
decode
)untuk mengetahui jenis instruksinya
Setelah mengetahui jenis instruksi tersebut,
bagian pengendali mengeluarkan 9 bit kendali
Bit kendali yang dikeluarkan oleh
Control Unit
(CU)
akan menentukan operasi padaBagian Pengendali
(Control Unit)
(3) Nama-nama kendali yang dihasilkan oleh CU:
1. RegDst (1 bit)
2. Branch (1 bit)
3. MemRead (1 bit)
4. MemToReg (1 bit)
5. ALUOp (2 bit)
6. MemWrite (1 bit)
7. ALUSrc (1 bit)
Pencacah Program (PC)
(1) Tujuan: Untuk menghitung alamat instruksi
berikutnya yang akan dieksekusi
Masukan: nilai PC = 32 bit
Pencacah Program (PC)
(2) Pencacah program lebarnya 32 bit sehingga
maksimal instruksi yang dapat diakses adalah 232 buah
Pencacah akan mengeluarkan nilai secara
sekuensial dari 0x00000000 sampai 0x11111111
Jika tidak ada instruksi pencabangan, maka
nilai pencacah akan ditambah 4 setiap kali selesai instruksi
Memori Instruksi
(1) Tujuan: Untuk menyimpan instruksi yang akan
dieksekusi
Masukan: alamat memori yang digunakan untuk
menyimpan instruksi sebanyak 32 bit dari PC Keluaran: instruksi sebanyak 32 bit
Memori Instruksi
(2) Menyimpan instruksi yang akan dieksekusi Lebar data pada setiap alamat 8 bit
Lebar instruksi adalah 32 bit
Setiap instruksi menempati 4 buah alamat
dalam memori instruksi
Instruksi yang telah dibaca masuk ke dalam
bus dan diterjemahkan oleh bagian pengendali
Memori Data
(1) Tujuan: menyimpan hasil penghitungan ALU
Masukan:
Alamat memori yang akan digunakan untuk menyimpan
data (akan ditulisi) sebanyak 32 bit
Data yang akan disimpan/ditulis sebanyak 32 bit
Memori Data
(2) Lebar data setiap alamat adalah 8 bit
Pada MIPS memori data dan memori instruksi
sebenarnya disatukan
Data biasanya disimpan pada alamat-alamat tinggi sedangkan instruksi pada
alamat-alamat rendah/awal
Memori data dikendalikan oleh jalur kontrol
MemRead
untuk membaca danMemWrite
untuk menulisRegister
(1) Tujuan: menyimpan data yang akan dihitung oleh ALU dan menyimpan data hasil perhitungannya
Masukan:
Alamat register 1 yang akan dibaca (5 bit)
Alamat register 2 yang akan dibaca (5 bit)
Alamat register yang akan ditulisi (5 bit)
Data yang akan ditulis ke resister (32 bit)
Register
(2) Register umum
(general)
jumlahnya 32 buah Masing-masing lebarnya 32 bit Menyimpan data hasil perhitungan ALU atau
data yang berasal dari memori
Data keluaran register menjadi masukan bagi
ALU untuk dihitung
Register-register diakses berdasarkan nomor
Register
(3) Penulisan register dikendalikan oleh jalur
kendali
RegWrite
Pada pemrograman, nama register tidak
diakses berdasarkan nomornya, tetapi berdasarkan namanya
Masing-masing register diberi nama umum
Register dan Fungsinya
(2) Register yang dipersiapkan untuk dipanggil
dengan
syscall
(prosedur dan fungsi) tidak dapat diubah Sebagai contoh:
$s harus disimpan di dalam stack oleh prosedur
jika ingin menggunakannya
$sp dan $fp selalu di-increment dengan
konstanta kemudian di-increment kembali
setelah prosedur selesai dilakukan
Sementara itu $ra berubah secara otomatis
ALU
(Arithmatic and Logical Unit)
(1) Tujuan: Mengolah (penjumlahan,
pengurangan, logika) dua buah data masukan
Masukan: input 1 (32 bit) dan input 2(32 bit) Keluaran: hasil pengolahan dan
zero flag
ALU
(2) MIPS adalah komputer 32 bit
Jenis komputer ini ditentukan oleh lebar bus
data yang masuk ke dalam ALU
Selain mengeluarkan hasil penghitungan
(ALU
Result)
ALU juga mengeluarkanzero flag
Zero flag
digunakan sebagai indikator apakahnilai keluarannya nol atau bukan
Jika nilai keluarannya adalah nol maka
zero
ALU
(3) ALU memiliki 3 jalur kendali (3 bit):
Pada kelas instruksi R-format, ALU menjalankan
salah satu dari kelima fungsi di atas, tergantung pada nilai 6-bit fungsinya
Pada instruksi LW (load word) dan SW (store word)
ALU digunakan untuk menghitung alamat memori
dengan melakukan penjumlahan
Pada instruksi beq (branch on equal) ALU
Adder
(1) Tujuan: Menjumlahkan dua buah
input
Masukan: dua buahinput
n bitAdder
(2) Rangkaian yang ada dalam
Adder
adalahfull
adder
Simbol adder sama dengan simbol ALU, tetapi
diberi nama Add
Terdapat dua buah
adder:
Adder yang menjumlahkan input dari PC (32 bit)
dengan bilangan 4
Adder yang menjumlahkan hasil penjumlahan
PC+4 (32 bit) dengan bilangan yang berasal dari
Shifter
(1) Tujuan: menggeser bit-bit input ke kiri sebanyak 2
kali atau mengalikan input dengan 4
Masukan: 1 input (32 bit) Keluaran: 1 output (32 bit)
Shifter
(2) Shift left 2: Menggeser
input
ke kiri sebanyak2 bit
Operasi ini sama dengan mengalikan bilangan
input
dengan 4 Contoh: Masukan: 0000000000000000 0000000000000010 2 Keluaran: 0000000000000000 0000000000001000 8MUX (Multiplexer)
(1) Tujuan: Memilih satu dari 2 input yang tersedia
untuk disalurkan ke output
Masukan: 2 buah input masing-masing 32 bit dan
sebuah select (1 bit)
MUX (Multiplexer)
(2) Multiplexer ini disebut mux 2 ke 1
Terdapat 2 buah
input
dan 1 buahoutput
Select
berfungsi menentukan input manayang dipilih datanya untuk dikeluarkan
Jumlah
select
tergantung banyaknyainput
Karenainput
-nya ada 2 maka jumlahselect
-nya cukup 1 buah saja yang dapat bernilai 0 atau 1
Sign Extend
(1) Tujuan: Mengubah data 16 bit menjadi data
32 bit
Masukan: 1 input sebanyak 16 bit Keluaran: 1 output sebanyak 32 bit
Sign Extend
(2) Menambah bilangan 0 sebanyak 16 bit di
awal (sebelah kiri) sehingga jumlah bit menjadi 32 bit
Keluaran dari
Sign Extend
menjadiinput
ALUatau menjadi input
Shift left 2
yang terhubung ke Adder Contoh :
Masukan: 0000 0000 0010 1101
Keluaran:
Referensi
http://en.wikipedia.org/wiki/MIPS_architecture Hennessy, John L. dan Patterson, David A. 2005,
“Computer Organization and Design: The
Hardware/Software Interface”. 3nd edition. Morgan