Arsitektur Prosesor MIPS Multi Siklus (Pertemuan ke-27)
Diedit ulang oleh: Endro Ariyanto
Prodi S1 Teknik Informatika Fakultas Informatika
Universitas Telkom
April 2016
Implementasi Multisiklus
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #1
Datapath Siklus Tunggal MIPS
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #2
Implementasi Datapath Multisiklus
• Setiap step eksekusi membutuhkan 1 siklus clock • Unit fungsional bisa digunakan lebih dari sekali untuk setiap instruksi, asal dalam siklus yang berbeda • Bertujuan untuk mereduksi jumlah hardware
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #3
Abstraksi Datapath Multisiklus
PC
Instruction register
Address Instruction Or data
MEMORY Data
Data Register #
A
Register #
Memory data register
ALU
ALUOut
Register #
REGISTERS
B
Perbedaan dengan siklus tunggal: Menggunakan satu unit memory untuk data maupun instruksi Menggunakan satu ALU saja Satu atau lebih register (buffer) ditambahkan pada setiap unit utama untuk menahan sementara waktu nilai output karena akan digunakan pada siklus clock berikutnya Instruction register, memory data register, A, B, ALUOut Organisasi dan Arsitektur Komputer – CSG2G3/2016 #4
Multisiklus Datapath Untuk Instruksi Dasar (1) 0
PC
0
M U X
Instruction (25-21)
Address MemData
1
MEMORY Write data
Read register 2
Instruction (20-16) Instruction (15-0)
Instruction Register
M U X
Read register1
0
M U Instruction X (15-11) 1
Read data 1
A
Zero Flag
ALU
ALUOut
Result
REGISTERS Write register
Read data 2
B
Write data
4
0
M U 2X 1
3
0
Instruction (15-0)
1
M U X
1
Memory data register 16
Sign Extend
32
Shift Left 2
IR (Instruction Register) dan MDR (Memory Data Register) digunakan untuk menyimpan output memory pada saat pembacaan instruksi dan pembacaan data Register A dan B digunakan untuk menahan operan register yang dibaca dari file register Register ALUOut digunakan untuk menahan output dari ALU Organisasi dan Arsitektur Komputer – CSG2G3/2016 #5
Multisiklus Datapath Untuk Instruksi Dasar (2)
• ALU dilengkapi dengan: – Multiplexer tambahan untuk input pertama: pilihan antara register A atau PC – Multiplexer untuk input ALU kedua (4 pilihan): register B, konstanta 4, sign extend, dan branch address
• Kemungkinan input untuk PC: – Output ALU: PC+4 – Register ALUOut: branch address – Lower 26 bit IR yang di-shift left 2 bit dan digabungkan dengan bit 31-28 dari PC+4 (instruksi jump) Organisasi dan Arsitektur Komputer – CSG2G3/2016 #6
Kendali Multisiklus Datapath IorD
MemRead MemWrite
RegDst
IRWrite
RegWrite
ALUSrcA
0
PC
0
M U X
Instruction (25-21)
Address MemData
1
MEMORY Write data
Instruction Register
Read data 1
Read register 2
Instruction (20-16) Instruction (15-0)
M U X
Read register1
A
Zero Flag
ALUOut
ALU Result
REGISTERS
0
M U Instruction X (15-11)
Write register
1
Read data 2
B
Write data
4
0
M U 2X 1
3
0
Instruction (15-0)
1
M U X
1
Memory data register 16
Sign Extend
32
Shift Left 2
ALU Control
Instruction (5-0)
MemtoReg
ALUSrcB
ALUOp
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #7
Datapath Multisiklus MIPS PCWriteCond PCSource PCWrite ALUOp
IorD MemRead MemWrite
CONTROL ALUSrcB UNIT ALUSrcA
MemtoReg
RegWrite RegDst
IRWrite
0
M
Shift Left 28 2
Instruction(25-0) 26
0
M U X
Address MemData
1
MEMORY Write data
Instruction (25-21)
Read register1
Instruction (20-16)
Read register 2 0
Instruction (15-0)
Instruction Register
1U
X
2
0
Instruction (31-26)
PC
Jump Address (31-0)
M U Instruction X (15-11) 1
M U X
Read data 1
A
Zero Flag
ALU
ALUOut
Result
REGISTERS Write register
Read data 2
B
Write data
4
0
M U
1
2X 3
0
Instruction (15-0)
1
M U X
1
Memory data register 16
Sign Extend
32
Shift Left 2
ALU Control
Instruction(5-0)
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #8
Rangkuman
• Rangkuman tahapan yang diambil untuk mengeksekusi kelas instruksi
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #9
Bit-Bit Kendali Multisiklus (1) 1 Bit Kendali Nama Sinyal
Akibat sinyal Tidak aktif
Akibat sinyal aktif
RegDst
Nomor register tujuan untuk penulisan datang dari field rt
Nomor register tujuan untuk penulisan datang dari field rt
RegWrite
None
Terpilih nomor register yang akan ditulisi dengan data pada write data
ALUSrcA
Operan pertama ALU = PC
Operan ALU adalah register A
MemRead
None
MemWrite
None
MemtoReg IorID IRWrite
None
PCWrite
None
PCWriteCond
None
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #10
Bit-Bit Kendali Multisiklus (2) 2 Bit Kendali Nama Sinyal Value ALUOp
ALUSrcB1
PCSource
Effect
00 01 10 11 00 01 10 11 00 01 10
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #11
Eksekusi Instruksi
Siklus: 1. Mengambil instruksi: Instruction Fetch (IF) 2. Menerjemahkan instruksi: Instruction Decode (ID) 3. Eksekusi: Execution (EX) 4. Akses Memori: Memory Access (MEM) 5. Penyelesaian pembacaan memori: Memory Read Completion Organisasi dan Arsitektur Komputer – CSG2G3/2016 #12
Siklus 1: Pengambilan Instruksi (Instruction Fetch / IF) (1)
• Mengambil instruksi dari memori dan menghitung alamat instruksi berikutnya: IR = Memory [PC] PC = PC + 4 • Operasi: – Mengirim nilai PC ke memori sebagai alamat, membaca instruksi dan menyimpannya dalam Instruction Register (IR) – Nilai PC ditambah 4 • Sinyal kendali apa saja yang digunakan? Organisasi dan Arsitektur Komputer – CSG2G3/2016 #13
Siklus 1: Pengambilan Instruksi (Instruction Fetch / IF) (2) • Setting untuk memilih PC sebagai sumber alamat: – set IorD 0 (alamat yang masuk ke memori adalah alamat instruksi) – MemRead 1 (agar memori dapat dibaca) – IRWrite 1 (agar IR bisa ditulisi)
• Setting untuk menambah nilai PC dengan 4: – ALUSrcA 0 (mengirim PC ke ALU) – ALUSrcB 01 (mengirim 4 ke ALU) – ALUOp 00 (agar ALU menjumlah)
• Setting untuk menyimpan alamat instruksi yang telah ditambah 4 ke dalam PC: – PCSource 00 (agar nilai PC baru menuju PC) – PCWrite1 (agar PC dapat ditulisi) Organisasi dan Arsitektur Komputer – CSG2G3/2016 #14
Siklus 2: Penterjemahan Instruksi (Instruction Decode / ID) dan Fetch Register (1)
• A = Reg[IR[25-21]] • B = Reg[IR[20-16]] • ALUOut = PC + (Sign-extend(IR[15-0])<<2)
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #15
Siklus 2: Penterjemahan Instruksi (Instruction Decode / ID) dan Fetch Register (2)
• Operasi: – mengakses register file untuk membaca register rs dan rt – menyimpan hasilnya ke dalam register A dan B
• Karena register A dan B ditulisi pada setiap siklus, register file dapat dibaca pada setiap siklus dengan nilai yang disimpan ke dalam A dan B Organisasi dan Arsitektur Komputer – CSG2G3/2016 #16
Siklus 2: Penterjemahan Instruksi (Instruction Decode / ID) dan Fetch Register (3)
• Dilakukan perhitungan alamat tujuan pencabangan dan menyimpannya ke dalam ALUOut – Alamat pada ALUOut akan digunakan pada clock berikutnya jika instruksinya adalah branch
• Setting yang diperlukan: – ALUSrcA 0 (sehingga nilai PC dikirim ke ALU) – ALUSrcB 11 (sehingga sign-extended dan shifted offset field dikirim ke ALU) – ALUOp 00 (sehingga ALU menjumlah)
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #17
Siklus 3: Execution (EX)
• Operasi datapath ditentukan oleh kelas instruksinya: – R-type: • ALUOut = A op B
– Memory reference: (lw dan sw) • ALUOut = A + sign-extend(IR[15-0])
– Branch: • if (A==B) PC = ALUOut
– Jump: (|| = concat) • PC = PC[31-28] || (IR[25-0]<<2) Organisasi dan Arsitektur Komputer – CSG2G3/2016 #18
Siklus 4: Akses Memori atau Penyelesaian Tipe-R
• Operasi datapath ditentukan oleh kelas instruksinya: – R-Type • Reg[IR[15-11]] = ALUOut
– Memory reference: • MDR = Memory [ALUOut] untuk operasi load • Memory[ALUOut] = B untuk operasi store
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #19
Siklus 5: Memory Read Completion (MRC)
• Load: Reg[IR[20-16]] = MDR
• Data dari Register Data Memori disimpan ke dalam register • Alamat register menggunakan instruksi bit 20-16
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #20
Rangkuman
• Rangkuman tahapan yang diambil untuk mengeksekusi kelas instruksi
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #21
Mendefinisikan Kendali
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #22
Datapath Multisiklus MIPS
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #23
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #24
Finite State Machine
• Menggambarkan serangkaian state pada prosesor
• Level abstraksi tinggi kendali finite state machine Organisasi dan Arsitektur Komputer – CSG2G3/2016 #25
IF dan ID
• Bagian fetch dan decode instruksi sama untuk semua instruksi Organisasi dan Arsitektur Komputer – CSG2G3/2016 #26
Instruksi Mengacu Memori • Finite state machine untuk mengendalikan instruksi memoryreference memiliki empat state
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #27
Instruksi Tipe-R
• Instruksi R-type dapat diimplementasikan dengan dua buah finite state machine
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #28
Instruksi Pencabangan
• Instruksi branch memerlukan satu state Organisasi dan Arsitektur Komputer – CSG2G3/2016 #29
Instruksi Jump
• Instruksi jump memerlukan satu state yang mengaktifkan dua sinyal kendali untuk menulis PC dengan 26 bit bawah pada register instruksi, digeser ke kiri 2 bit dan digabnungkan dengan 4 bit atas pada PC Organisasi dan Arsitektur Komputer – CSG2G3/2016 #30
FSM • Kendali finite state machine keseluruh an
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #31
Pengendali FSM • Kendali finite state machine biasanya diimplementasi kan menggunakan satu blok rangkaian kombinasional dan register yang menyimpan state terakhir Organisasi dan Arsitektur Komputer – CSG2G3/2016 #32
Pengendali FSM
• Terdiri dari dua jenis rangkaian: – Rangkaian kombinasional – Rangkaian sekuensial
• State register digunakan untuk menyimpan nilai state sebelumnya • Keluaran rangkaian kombinasional menyertakan state terakhir
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #33
Referensi • Hennessy, John L. dan Patterson, David A. 2005. “Computer Organization and Design: The Hardware/Software Interface”. 3rd edition. Morgan Kaufmann publisher Inc. San Fransisco. USA
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #34