Sejarah MIPS
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 #1
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 #2
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 mengubah proses MIPS Technologies
#3
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 market #4
Keluarga CPU MIPS
(1)
Model CPU MIPS yang pertama adalah R2000 yang dipasarkan sekitar tahun 1985 R2000 juga di-support oleh empat coprocessor, salah satunya dibangun di main CPU dan menggunakan exception dan trap Salah satu dari ketiga co-processor tersebut dapat diisi dengan pilihan R2010 FPU yang memiliki 32 bit register yang dapat digunakan sebagai 64 bit register dengan double
precission
#5
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 #6
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 #7
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 #8
Pengembangan MIPS
(2)
R4600 dan R4700 digunakan dalam versi low-cost versi oleh SGI Indy Workstation sebagai MIPS pertama yang berbasis 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) #9
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 #10
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 #11
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 dengan fitur clock rate yang lebih tinggi
#12
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 #13
Perkembangan Lanjut MIPS Anggota lain dari MIPS family yang termasuk dalam R6000 adalah implementasi ECL dari MIPS architecture yang diproduksi oleh Bipolar Integrated Technology Pada R6000 diperkenalkan MIPS II instruction set RM7000 merupakan versi dari R5000 yang dibangun dengan 2 level cache dengan kapasitas 256 kB per cache-nya dan sebuah controller sebagai pilihan untuk menggunakan tiga level cache #14
Ringkasan Keluarga MIPS
#15
Komponen Utama MIPS
Komponen Utama MIPS 1. 2. 3. 4. 5. 6.
Control Unit: Bagian pengendali Program Counter (PC): Pencacah program Instruction Memory: Memori instruksi Data Memory: Memori data Register: File register ALU (Arithmetic and Logical Unit): Bagian
pemroses aritmetik dan logika
#17
Komponen Pendukung MIPS 1. 2. 3. 4. 5.
Adder: Penjumlah Shifter: Penggeser MUX (Multiplexer): Multiplekser Sign Extend: menambah jumlah bit ALU control: menentukan operasi ALU
#18
Datapath MIPS 32
0 M U X 1
32 32 32
ALU Result
32
ADD
Shift Left 2 32
Result RegDst
4
32
ADD PCSrc
Branch MemRead Instruction (31-26) 6
MemToReg
CONTROL ALUOp UNIT
MemWrite
PC
Instruction (31-0)
INSTRUCTION MEMORY
Instruction (25-21)
5
Instruction (20-16)
5
32
Read Register 1 Read Register 2
0
M U Instruction (15-11) X
5
1
RegDst
Read Data 1
MemToReg
Read Address
ALUSrc
RegWrite
MemWrite
ALUSrc
32
Zero Flag
REGISTERS Write Read Register Data 2 Write Data
ALU 0 M U X 1
Result 32
32
Read Data
Address
DATA MEMORY 32
32
Write Data
1 M U X 0
3 Instruction (15-0)
16
Sign Extend
32
ALU Control
MemRead 6 Instruction (5-0)
2
ALUOp 32
#19
Bagian Pengendali (Control Unit)
(1)
Tujuan: Mengendalikan semua aktifitas prosesor Masukan: Kode operasi (Opcode) = 6 bit Keluaran: kendali semua komponen = 9 bit #20
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 pada
datapath
#21
Bagian Pengendali (Control Unit)
(3)
Nama-nama kendali yang dihasilkan oleh CU: 1. 2. 3. 4. 5. 6. 7. 8.
RegDst Branch MemRead MemToReg ALUOp MemWrite ALUSrc RegWrite
(1 (1 (1 (1 (2 (1 (1 (1
bit) bit) bit) bit) bit) bit) bit) bit) #22
Pencacah Program (PC)
(1)
Tujuan: Untuk menghitung alamat instruksi berikutnya yang akan dieksekusi Masukan: nilai PC = 32 bit Keluaran: alamat 32 bit pada memori instruksi #23
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 #24
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
#25
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
#26
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
Keluaran: Data yang dibaca sebanyak 32 bit #27
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 alamatalamat rendah/awal Memori data dikendalikan oleh jalur kontrol MemRead untuk membaca dan MemWrite untuk menulis #28
Register
(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)
Keluaran: data yang dibaca dari register 1 dan 2 #29
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 registernya
#30
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 agar mudah diingat oleh pemrogram
#31
Register dan Fungsinya
(1)
#32
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 dengan adanya call function #33
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 #34
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 mengeluarkan zero flag Zero flag digunakan sebagai indikator apakah nilai keluarannya nol atau bukan Jika nilai keluarannya adalah nol maka zero flag bernilai 1 dan sebaliknya bernilai nol #35
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 melakukan proses pengurangan
#36
Adder
(1)
Tujuan: Menjumlahkan dua buah input Masukan: dua buah input n bit Keluaran: sebuah n bit output #37
Adder
(2)
Rangkaian yang ada dalam Adder adalah full
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 bagian shift left 2 (32 bit) #38
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) #39
Shifter
(2)
Shift left 2: Menggeser input ke kiri sebanyak 2 bit Operasi ini sama dengan mengalikan bilangan input dengan 4 Contoh: Masukan: 0000000000000000 0000000000000010 2 Keluaran: 0000000000000000 0000000000001000 8 #40
MUX (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) Keluaran: 1 output (32 bit)
#41
MUX (Multiplexer)
(2)
Multiplexer ini disebut mux 2 ke 1 Terdapat 2 buah input dan 1 buah output Select berfungsi menentukan input mana yang dipilih datanya untuk dikeluarkan Jumlah select tergantung banyaknya input Karena input-nya ada 2 maka jumlah selectnya cukup 1 buah saja yang dapat bernilai 0 atau 1
#42
Sign Extend
(1)
Tujuan: Mengubah data 16 bit menjadi data 32 bit Masukan: 1 input sebanyak 16 bit Keluaran: 1 output sebanyak 32 bit #43
Sign Extend
(2)
Menambah bilangan 0 sebanyak 16 bit di awal (sebelah kiri) sehingga jumlah bit menjadi 32 bit Keluaran dari Sign Extend menjadi input ALU atau menjadi input Shift left 2 yang terhubung ke Adder Contoh : Masukan: 0000 0000 0010 1101 Keluaran: 0000 0000 0000 0000 0000 0000 0010 1101 #44
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 Kaufmann publisher Inc. San Fransisco. USA
#45