Versi dasar
dari MIPS adalah versi R2000 yang merupakan MIPS yang pertama kali di-release.
Dibagi menjadi 2 jenis, yaitu MIPS satu siklus dan MIPS 2 siklus.
Komponen utama
- Control Unit Merupakan bagian pengendali yang berfungsi mengendalikan bagian-bagian MIPS yang lain (aktivitas prosesor). Instruksi tediri dari 2 bagian yaitu input dan operan. Instruksi di MIPS panjangnya 32 bit. Namun yang masuk ke dalam control unit hanya 6 bit, yaitu bit ke 26-31. Kemudian mengeluarkan output 9 bit kendali komponen yang akan menjadi input bagian-bagian MIPS yang lain. Bit kendali yang dihasilkan :
- RegDst (Register destination) : jadi inputan ke mux untuk selector data mana yang akan ditulis ke register
- Branch : menangani pencabangan(di set 1 ketika terjadi pencabangan)
- MemRead (Memory Read) : di set 1 untuk membaca data dari memory, 0 jika tidak
- MemToReg (Memory To Register) : inputan buat mux untuk selector apakah data disimpan dalam memory dikirim ke register
- ALU Op (ALU operation)
- MemWrite (Memory write) : di set 1 untuk menyimpan data ke memory, 0 jika tidak
- ALU src (ALU source)
- RegWrite (Register Write)
- Program Counter (PC) : Menghitung alamat instruksi berikutnya yang akan di eksekusi. Yang disimpan dalam PC adalah alamat memory. Alamat instruksi sama dengan alamat memory. Sedangkan alamat sediri tidak sama dengan instruksi. Masukkan dan keluaran dari PC sama yaitu sepanjang 32 bit (satu instruksi 32 bit). Daya tampung 1 alamat memory pada MIPS sepanjang 8 bit. Alamat memory sendiri merentang dari 000..00 sampai 111..11 sepanjang 32 bit. Jika tidak ada instruksi pencabangan maka nilai di dalam PC ditambah 4 setiap selesai melakukkan instruksi. Karena panjang instruksi 32 bit sedangkan daya tampung setiap alamat memory hanya 8 bit.
- Memory Instruksi : Menyimpan Instruksi yang akan di eksekusi. Inputnya alamat yang tadi disimpan dalam PC sebanyak 32 bit. Keluarannya instruksi sepanjang 32 bit juga.
- Memory data : Menyimpan data hasil pemrosesan ALU. Masukkannya berupa alamat yang akan dipakai untuk menyimpan data (32 bit) dan data yang akan disimpan (32 bit). Keluarannya data 32 bit. Ada 2 macam memory data : memory read untuk membaca data dan memory write untuk menyimpan data, yang pemakaiannya diatur oleh control unit.
- Register :Menyimpan data yang akan diproses oleh ALU dan menyimpan data hasil perhitungan. Setiap register mempunyai nama, nomor, dan fungsinya masing-masing. Banyaknya 32 buah dengan masing-masing panjangnya 32 bit. Diakses berdasarkan nomornya. Namun pada pemrograman, akses berdasarkan nama registernya.
- ALU (arithmetic and Logical unit) : Mengolah dua buah data masukkan. Bisa penjumlahan pengurangan atau pembandingan. Masukkan berupa input 1 sepanjang 32 bit dan input 2 sepanjang 32 bit. Keluaran berupa hasil pengolahan dan zero flag. Zero flag di set 1 ketika hasil keluaran bernilai 0. Di set 0 jika sebaliknya.
- Shifter : penggeser bit, 2 kali ke kiri (shift left 2) atau mengalikan dengan 4.
- Adder : penjumlah 2 buah inputan n bit dan menghasilkan sebuah keluaran n bit. Di MIPS ada 2 buah adder.
- Multiplexer : selector dari 2 buah input yang tersedia untuk di alirkan ke output.
- Sign extend : mengubah data 16 bit menjadi 32 bit dengan menambah 0 sebanyak 16 bit di awal.