°PROSESOR: CONTROL DAN DATAPATH
Oky Dwi Nurhayati, ST, MT email:
[email protected] 1
Prosesor: Control & Datapath
Computer Processor (active) Control (“brain”) Datapath (“brawn”)
Memory (passive) (where programs, data live when running)
Devices Input
Output
2
Organisasi Prosesor (Singlebus) Control lines
Address lines Memory bus
Data lines
PC
Instruction Decoder
MAR
IR
MDR
R0
Control Unit
Y R(n-1) ALU control lines
Add Sub
Datapath Unit
ALU XOR
Carry-in
Z
TEMP
3
Siklus Eksekusi Instruksi
Eksekusi instruksi yang ukurannya tetap do { 1. IR ← M[PC]
// Fetch instruksi
2. PC ← PC + d // Tunjuk ke lokasi instruksi berikutnya 3. Eksekusi instruksi } while (!stop)
Eksekusi instruksi yang ukurannya bervariasi do { do {
// Fetch instruksi
IR ← M[PC] PC ← PC + d } while (!end-of-instruction) Eksekusi instruksi } while (!stop)
4
Operasi-operasi Dasar & Waktu Eksekusi ° Operasi-operasi Dasar: • Mengambil (fetching) Data dari Memori • Menyimpan (storing) Data ke Memori • Pertukaran Data Antar-Register • Operasi Aritmatika & Logika di Datapath
° Waktu Eksekusi Gate Delay - Waktu yang dibutuhkan output suatu gerbang logika berubah sesuai kondisi inputnya Register’s Delay - Waktu yang dibutuhkan isi register berubah sesuai inputnya
5
Mengambil Data dari Memori Read
Instruksi: LD R2,(R1) ; R2 ← M[R1] Address lines
Langkah-langkah: °
MAR ← R1
°
Read
°
Tunggu sinyal MFC
°
Data lines
PC
Instruction Decoder
MAR
IR
MDR
R1
Y
// MFC = Memory Function Completed // Pada saat MFC aktif: Add // MDR ← M[MAR]
R2 ← MDR
MFC
R2
Sub
ALU XOR
Carry-in
Z
TEMP
6
Menyimpan Data ke Memori Write
Instruksi: ST (R1),R2 ; M[R1] ← R2 Address lines
Langkah-langkah: °
MAR ← R1
°
MDR ← R2, Write
°
Tunggu sinyal MFC
Data lines
MFC
PC
Instruction Decoder
MAR
IR
MDR
R1
Y
// MFC = Memory Function Completed // Pada saat MFC aktif: Add // M[MAR] ← MDR
R2
Sub
ALU XOR
Carry-in
Z
TEMP
7
Pengendalian Transfer Data Dari/Ke Register
8
Pertukaran Data Antar-Register: Input & Output Gating 1 bit line of common bus S Q
output: 1, 0, open-circuit
R
_ Q 3-state switch
operasi tulis & baca dilakukan secara bergantian
Zin
Zout
Operasi Baca
Operasi Tulis Zin
Q
Zout
Q
output
X
0
Q
0
X
3-state
0
1
0
1
1
1
1
1
1
1
0
0
1-bit bus
memungkinkan peranti lain menggunakan bus
9
Pertukaran Data Antar-Register Instruksi:
R1in
MOV R4,R1
X
; R4 ← R1
R1 X R1out
R4in X
Langkah-langkah: °
Enable output of R1
°
Enable input of R4
// setting R1out to 1 // setting R4in to 1
R4 X R4out
10
Operasi Aritmatika dan Logika Riin X
Instruksi: ADD R1,R2
Ri
; R1 ← R1 + R2
X Riout Yin
Langkah-langkah: X
Y X Yout
°
R1out, Yin
°
R2out, Add, Zin
°
Zout, R1in
B
A
ALU Add
X
Zin
Z X Zout
11
Waktu Eksekusi
12
Waktu Eksekusi: Gate Delay ° When input 0 → 1, output 1 → 0 but NOT instantly • Output goes 1 → 0: output voltage goes from Vdd (5v) to 0v
° When input 1 → 0, output 0 → 1 but NOT instantly • Output goes 0 → 1: output voltage goes from 0v to Vdd (5v)
° Voltage does not like to change instantaneously Voltage 1 => Vdd
In
Out
Vout
Vin
0 => GND Time 13
Waktu Eksekusi: Series Connection Vdd Vin
V1 G1
Vdd
Vout Vin
G2
G1
V1 C1
G2
Vout Cout
Voltage Vdd V1
Vin
Vout
Vdd/2 d1
d2
GND Time
° Total Propagation Delay = Sum of individual delays = d1 + d2 ° Capacitance C1 has two components: • Capacitance of the wire connecting the two gates • Input capacitance of the second inverter 14
Waktu Eksekusi: Register’s Delay Clk D
Q
Setup D
Don’t Care
Hold Don’t Care Clock-to-Q
Clk
Q
Unknown
° Setup Time: Input must be stable BEFORE the trigger clock edge ° Hold Time: Input must REMAIN stable after the trigger clock edge ° Clock-to-Q time: • Output cannot change instantaneously at the trigger clock edge
15
Waktu Eksekusi R2out, Add, Zin Riin X
Turn-on time for 3-state driver
Ri X Riout Yin
Transmission time
X Y X
Propagation delay through ALU
Yout B
A
ALU Setup time Add
X
Zin
Hold time
Z X Zout
16
Langkah-langkah Pengeksekusian Instruksi
17
Operasi (A&L): Bagian dari Pertukaran Data Komponen-komponen Datapath: • Register: tempat penyimpanan data • ALU: tempat pemrosesan aritmatika & logika • Bus: penghubung antar-register & antara register-ALU
° Eksekusi Instruksi merupakan kombinasi pertukaran data antara: • Register ↔ Bus ↔ Register • Register ↔ Bus ↔ ALU • Register ↔ Bus ↔ Memori
° Pertukaran data dilakukan dengan cara mengaktifkan gerbang-gerbang register dengan menggunakan sinyal-sinyal kendali (PCout, PCin, dst.) • Selain itu, juga ada sinyal-sinyal kendali yang berhubungan dengan komponen-komponen lain (Memori: Read, Write; ALU: Add, Sub, Set Carry-in, dst.)
18
Tahapan Eksekusi Instruksi Instruksi: Add
R1,(R3)
; R1 ← R1 + M[R3]
Langkah-langkah: 3.
4.
Fetch instruksi • PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin •
Zout, PCin, WMFC
•
MDRout, IRin
Fetch operand #1 (isi lokasi memori yg ditunjuk oleh R3) • R3out, MARin, Read •
R1out, Yin, WMFC
5.
Lakukan operasi penjumlahan • MDRout, Add, Zin
6.
Simpan hasil penjumlahan di R1 • Zout, R1in, End 19
1. Fetch PC , MAR • instruksi
, Read, Clear Y, Set carry-in to ALU, Add, Zin Control lines Zout, PCin, WMFC MDRout, IRin out
• •
in
Address lines Data lines
PC
Instruction Decoder
MAR
IR
MDR
R1
00000000 Y R3 Add
ALU
1
PC+1 Carry-in Z
TEMP
20
2. Fetch operand #1 R3 , MAR , Read • out
•
in
R1out, Yin, WMFC
Address lines Data lines
PC=PC+1
Instruction Decoder
MAR
IR
MDR
R1
Y R3
ALU Z
TEMP
21
3. Lakukan operasi penjumlahan
•
MDRout, Add, Zin
Address lines Data lines
PC=PC+1
Instruction Decoder
MAR
IR
MDR=M[R3]
R1
Y=R1 R3 Add
ALU Carry-in Zin
Z
TEMP
22
4. Simpan hasil penjumlahan •
Zout, R1in, End
Address lines Data lines
PC=PC+1
Instruction Decoder
MAR
IR
MDR=M[R3]
R1
Y=R1 R3
ALU Z=R1+M[R3]
TEMP
23
Tahapan Eksekusi “Branching” Unconditional (JMP Loop) •
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
•
Zout, PCin, WMFC
•
MDRout, IRin
•
PCout, Yin
•
Offset-field-of-IRout, Add, Zin
•
Zout, PCin, End
// PC ← PC + Offset
Conditional (contoh: BRNeg Loop) •
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
•
Zout, PCin, WMFC
•
MDRout, IRin
•
PCout, Yin , If N=0 then End
// take the branch?
•
Offset-field-of-IRout, Add, Zin
// PC ← PC + Offset
•
Zout, PCin, End 24
LD
Rd,X
25
Tahapan Eksekusi Instruksi: LD Rd,X Instruksi: LD R16,X
; R16 ← M[X]
Langkah-langkah: 3.
4.
Fetch instruksi • PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin •
Zout, PCin, WMFC
•
MDRout, IRin
Fetch operand dari lokasi memori yang ditunjuk oleh X • Xout, MARin, Read •
WMFC
°
Lakukan operasi ALU
°
Simpan hasil penjumlahan di R16 • MDRout, R16in, End 26
Tahapan Eksekusi Instruksi: LD Rd,X °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
Xout, MARin, Read
°
WMFC
°
MDRout, R16in, End
Control lines Read
Instruction Decoder
PC Address lines Data lines
Clear Y
PCout
MAR
IR
MARin
MDR
X
00000000 Y R16
Add
ALU
1 Set
PC+1 Carry-in Z
TEMP
Zin 27
Tahapan Eksekusi Instruksi: LD Rd,X °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
Xout, MARin, Read
°
WMFC
°
MDRout, R16in, End
Control lines WMFC
PC Address lines Data lines
Instruction Decoder
PCin
MAR
IR
MDR
X
Y R16
ALU Z = PC+1
TEMP
Zout 28
Tahapan Eksekusi Instruksi: LD Rd,X °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
Xout, MARin, Read
°
WMFC
°
MDRout, R16in, End
Address lines Data lines
Control lines
PC+1
Instruction Decoder
MAR
IR IRin
MDR
X
MDRout
Y R16
ALU Z
TEMP
29
Tahapan Eksekusi Instruksi: LD Rd,X °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
Xout, MARin, Read
°
WMFC
°
MDRout, R16in, End
Control lines Read
Address lines Data lines
PC+1
Instruction Decoder
MAR
IR
MARin
MDR
X Xout
Y R16
ALU Z
TEMP
30
Tahapan Eksekusi Instruksi: LD Rd,X °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
Xout, MARin, Read
°
WMFC
°
MDRout, R16in, End
Control lines WMFC
Address lines Data lines
PC+1
Instruction Decoder
MAR
IR
MDR
X
Y R16
ALU Z
TEMP
31
Tahapan Eksekusi Instruksi: LD Rd,X °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
Xout, MARin, Read
°
WMFC
°
MDRout, R16in, End
Address lines Data lines
Control lines
PC+1
Instruction Decoder
MAR
IR
MDR
X
MDRout
Y R16 R16in
ALU Z
TEMP
32
ADD Rd,Rs
33
Tahapan Eksekusi Instruksi: ADD Rd, Rs Instruksi: ADD
R16,R17
; R16 ← R16 + R17
Langkah-langkah: 3.
Fetch instruksi • PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin •
Zout, PCin, WMFC
•
MDRout, IRin
4.
Fetch operand ke-1 (R16) • R16out, Yin
5.
Fetch operand ke-2 (R17) dan Lakukan operasi ALU • R17out, Add, Zin
6.
Simpan hasil penjumlahan di R16 • Zout, R16in, End 34
Tahapan Eksekusi Instruksi: ADD Rd, Rs °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
R16out, Yin
°
R17out, Add, Zin
°
Zout, R16in, End
Control lines Read
Instruction Decoder
PC Address lines Data lines
Clear Y
PCout
MAR
IR
MARin
MDR
R17
00000000 Y R16
Add
ALU
1 Set
PC+1 Carry-in Z
TEMP
Zin 35
Tahapan Eksekusi Instruksi: ADD Rd, Rs °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
R16out, Yin
°
R17out, Add, Zin
°
Zout, R16in, End
Control lines WMFC
PC Address lines Data lines
Instruction Decoder
PCin
MAR
IR
MDR
R17
Y R16
ALU Z = PC+1
TEMP
Zout 36
Tahapan Eksekusi Instruksi: ADD Rd, Rs °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
R16out, Yin
°
R17out, Add, Zin
°
Zout, R16in, End
Address lines Data lines
Control lines
PC+1
Instruction Decoder
MAR
IR IRin
MDR
R17
MDRout
Y R16
ALU Z
TEMP
37
Tahapan Eksekusi Instruksi: ADD Rd, Rs °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
R16out, Yin
°
R17out, Add, Zin
°
Zout, R16in, End
Address lines Data lines
Yin
Control lines
PC+1
Instruction Decoder
MAR
IR
MDR
R17
Y R16 R16out
ALU Z
TEMP
38
Tahapan Eksekusi Instruksi: ADD Rd, Rs °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
R16out, Yin
°
R17out, Add, Zin
°
Zout, R16in, End
Address lines Data lines
Control lines
PC+1
Instruction Decoder
MAR
IR
MDR
R17 R17out
Y=R16 R16 Add
Zin
ALU Z
TEMP
39
Tahapan Eksekusi Instruksi: ADD Rd, Rs °
PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin
°
Zout, PCin, WMFC
°
MDRout, IRin
°
R16out, Yin
°
R17out, Add, Zin
°
Zout, R16in, End
Address lines Data lines
Control lines
PC+1
Instruction Decoder
MAR
IR
MDR
R17
Y=R16 R16 R16out
ALU Zout
Z=R16+R17
TEMP
40
Peningkatan Kinerja Prosesor
41
Multiple-bus: salah satu cara peningkatan kinerja C
B
Instruction Decoder IR PC Register File
Add R1,R2,R3 ;R1←R2+R3
TEMP
ALU
A
MDR MAR Data lines
Address lines
Memory Bus
42
Bandingkan dengan Organisasi Singlebus PC
Instruction Decoder
MAR
IR
MDR
R1
Y
Add R1,R2,R3 ;R1←R2+R3
R2 R3
ALU Z
TEMP
43
Beberapa Teknik Peningkatan Kinerja Prosesor Lainnya ° Pre-fetching: instruksi berikutnya (i+1) di-fetch pada waktu pengeksekusian instruksi (i) • Perlu teknik “Branch Prediction”
° Pipelining: eksekusi instruksi dipecah kedalam tahap-tahap yang dapat dilakukan secara “overlap” • Fetch Instruksi • Decode Instruksi • Baca Operand (dari register asal) • Lakukan Operasi • Tulis Hasil (ke register tujuan)
° On-chip Cache: mempercepat akses data dari/ke memori 44
Arsitektur Intel P6 (Pentium Pro)
45
Arsitektur SPARCstation20 ° TI SuperSPARCtm TMS390Z50 in Sun SPARCstation20 MBus Module
SuperSPARC Floating-point Unit
L2 $
Integer Unit
Inst Cache
Ref MMU
Data Cache Store Buffer
Bus Interface
CC MBus
L64852 MBus control M-S Adapter
SBus SBus DMA
SBus Cards
SCSI Ethernet
DRAM Controller
STDIO serial kbd mouse audio RTC Boot PROM Floppy
46