Beruflich Dokumente
Kultur Dokumente
CPU CU
CU : Control Unit
I/O
(b) Memory
CPU
Pipeline1 Pipeline2 PipelineN
I/O
(c) Memory
I/O
jaringan interkoneksi
Klasifikasi Arsitektur Komputer berdasarkan Flynn
Menurut Flynn (1972), arsitektur komputer dapat
diklasifikasikan berdasarkan
banyaknya aliran instruksi (#Instruction Stream)
banyaknya aliran data (#Data Stream)
dalam eksekusi program oleh komputer.
#Data Streams :
Single Multiple
1 aliran instruksi
CPU
Arsitektur Von Neumann
CU
1 aliran
ALU Memory
data
lts 7
SIMD Single Instruction-stream Multiple Data-stream
CU
N aliran data
Strukur dasar :
N aliran
CU1 CU2 CUN
instruksi
Catatan :
Arsitektur MISD jarang (tidak pernah) dijumpai pada General
Purpose Computer komersial.
Strukur alternatif : Systolic
N aliran
CU1 CU2 CUN instruksi
1 aliran data
Catatan :
Arsitektur Systolic sering dijumpai pada signal processor.
MIMD : Multiple Instruction-stream Multiple Data-stream
N aliran
CU1 CU2 CUN
instruksi
N aliran data
Teknologi IC (1970an)
Masalah :
prosesor pipeline Teknologi IC masih cukup mahal.
Vector processor Fokus pengembangan : peningkatan
prosesor super skalar/VLIW kinerja ars. prosesor tunggal.
periode idle
Masalah :
Tuntutan aplikasi dg kinerja tinggi. kebangkitan kembali
ars. multi prosesor (2000an)
Rasio Cost/ Performance yg tinggi.
lts 14
Level Pemaralelan
level Program
level Proses
level Thread
level Instruksi
Pemaralelan level program
// //
t
Pemaralelan level proses
Proses adalah program yang sedang dieksekusi oleh CPU.
Proses A Proses B
: :
Proses A1 Proses B1
: :
Proses A2 Proses B2
:
:
Proses B3
Proses A1 Proses B2
Cost = getCost();
for (i=0; i<n; i++) A = computeSum();
sum = sum + a[i]; B = A + Cost;
for (i=0; i<n; i++)
prod = prod * a[i];
Proses A1 // Proses B2
18
Contoh : Dua proses perkalian matriks di dalam suatu program
yang tidak memiliki saling ketergantungan data dapat
dieksekusi secara paralel.
Proses1 : C = A x B A B C
X =
Proses2 : F = D x E E F
D
=
X
proses B
threadA1 :
:
threadB1
threadA2 :
X =
proses A : thread :
Pada tiap iterasi, tidak ada ketergantungan antar loop1 dan loop2
sehingga loop1 dan loop2 dapat dieksekusi secara paralel.
(3) Misalkan prosedur getcost() dan prosedur computeSum()
adalah threads dalam proses B, apakah kedua threads tsb dapat
dieksekusi paralel ?
thread :
proses B :
Cost = getCost(); getCost()
A = computeSum(); computeSum()
B = A + Cost;
Proses A :
for (i=0; i<8; i++)
a[i] = b[i] + a[i] ;
sum[i] = sum[i] + c[i] ;
end for
25
Analisis ketergantungan data antar iterasi :
..
Proses B :
for (i=0; i<8; i++)
a[i] = b[i] + a[i+1];
sum[i] = sum[i] + c[i];
end for
iterasi 0 : iterasi 1 :
IA1
IA2
threadA
:
IAk
Bila tidak ada ketergantungan data antara instruksi IA1 dan instruksi
IA2, maka kedua instruksi tsb dapat dieksekusi secara paralel.
IA1 // IA2
Contoh : Keparalelan level instruksi.
A B C
X =
I1 I2 I2
MUL A[1,1], B[1,1] MUL A[1,2], B[2,1] MUL A[1,3], B[3,1] ...
C[1 , 1] = + + + ...
Ragam Arsitektur Paralel
Main
Prosesor I/O
Memory
Arsitektur Pipeline.
IF
I1 I2 I3 I4 I5 I6
STO ID/OF
EX I1 I2 I3 I4 I5 I6 I7
I1 I2 I3 I4 I5 I6 I7 I8 EX
ID/OF
IF I1 I2 I3 I4 I5 I6 I7 I8 I9
t STO
ILP
Arsitektur Superscalar
Arsitektur superscalar pd dasarnya adalah arsitektur prosesor
tunggal dengan multiple pipeline, dilengkapi dengan modul
Instruction Prefetch & Buffer.
prefetch & buffer
t I5 t I4 I5 I4 // I5
2-issue
* Analisis ketergantungan data antar instruksi dilakukan secara
hardware.
I1 pipeline1
I2
I1 I3 IF1 ID/OF1
I3
I4 analisis I2
pipeline2
I5 I4 I5
IF2 ID/OF2
buffer1 buffer2
2 issue superscalar
STO2
STO1
EX2
EX1
ID/OF2
ID/OF1
IF2
IF1
37
:
VLIW
LD R0, 34(R2) ;
LD R0, 34(R2) LD R7, 45(R3)
ADD R4, R0, R2 ;
LD R7, 45(R3) ;
ADD R4, R0, R2 ADD R8, R7, R6
ADD R8, R7, R6 ;
:
Multithreading
Multithreading adalah teknik peningkatan kinerja prosesor
superskalar dengan mengeksploitasi keparalelan level instruksi
(ILP : Instruction Level Parallelism) dari beberapa thread yg
dieksekusi secara paralel (TLP : Thread Level Parallelism).
Multithreading vs Singlethreading :
Keparalelan level instruksi (ILP) dieksploitasi diantara instruksi-
instruksi yang berasal dari
Singlethreading
ILPA N issue superscalar
IF1 ID/OF1 EX1 STO1
instruction
buffer
IF2 ID/OF2 EX2 STO2
thread A
thread A 4-issue
I1A I1A I3A 4-issue
ILPA
5 cycles
5 cycles
I2A
I5A t
t I4A I5A
I1B I2B
ILPB
thread B 4-issue I3B I4B I5B
I2A I2A
multithreading
3 cycles
I3A I4A I5A
I4A I1A I3A I1B I2B
3 cycles
I5A ILPA,B
I2A I3B I4B I5B
I4A I5A
thread B
4-issue
I1B
ILPB I1B I2B
5 cycles
I2B
I3B I4B I5B
I3B
I4B 2 cycles singlethreading : 5 cycles
I5B multithreading : 3 cycles
Contoh : Singlethreading pada 2-issue superscalar :
thread A : ILPA
IA2 issue
thread A IF1 cycle1 IA1
Instruction 1 2
IA3 cycle2 IA2
Buffer IA1
IF2 cycle3 IA3
IA2 IA3
cycle4 IA4
ILPA IA4 IA5
cycle5 IA5
IA6
cycle6 IA6
Instruksi-instruksi yg diparalelkan IA7 IA8
cycle7 IA7
eksekusi-nya berasal dari thread cycle8 IA8 5 cycles
tunggal (thread A).
8 cycles
issue
1 2 3 4
: Ixi , satu instruksi dalam thread X
cycle1
cycle2 : slot yg tidak terpakai.
cycle3
cycle4
cycle5
Halt
cycle6
cycle7 Halt diakibatkan oleh cache
cycle8 miss atau pipeline stall.
cycle9
cycle10
Halt
cycle11
cycle12
Contoh : Simultaneous Multithreading pada 2-issue superscalar :
thread A ?
IF1
Instruction 2-issues
thread B Buffer ?
IF1
ILPAB
multithreading thread A dan thread B
IA1 IB1
singlethreading thread B
IA2 IA3
7 cycles
cycle1
cycle2
cycle3
cycle4
cycle5
cycle7
dengan singlethreading : 9 cycles
dengan multithreading : 7 cycles
Ragam Multithreading :
- Coarse Grain MT
- Fine Grain MT
- Simultaneous MT
thread A
buffer
1 2 3 4
Halt B
threadA cycle1
cycle2
threadB
cycle3
threadC cycle4
cycle5
threadC
cycle6
idle cycle7
cycle9
Resources Utility
Dari gambar pada slide berikut ini, diperoleh Resource Utility sbb :
16/48 = 33.3% 27/48 = 56.3% 27/48 = 56.3% 42/48 = 87.5% 29/48 = 60.4%
Power 5 - 2 threads
2 fetch (PC),
2 initial decodes
59
See www.ibm.com/servers/eserver/pseries/news/related/2004/m2040.pdf
6.2 Sistem Multiprosesor
Arsitektur Mutiprosesor
Ragam Arsitektur Multiprosesor
Jaringan Interkoneksi sistem MP.
P1 P2 PN P1 P2 PN
M1 M2 MN
interkoneksi
interkoneksi
M I/O
M1 M2 MK
I/O
lts
Multiprocessor vs Multicore (on chip multiprocessor)
Multiprocessor :
P1 P2 PN
N prosesor, masing-
cache1 cache2 cacheN
masing prosesor
interkoneksi
berada dalam satu
chip.
M1 M MK I/O
M 2
interkoneksi
Multiprosesor Multikomputer
P1 P2 PN
M1 M2 MN
interkoneksi
64
Contoh Sistem multiprosesor :
oct-core oct-core
Quad-core Processor
Centralized Memory MP
Distributed Memory MP
Shared Memory MP
Message Passing MP
Centralized Memory MP.
Pi : Prosesori (corei),
P1 P2 PN
i = 1, N.
cache1 cache2 cacheN
M : Memory bersama
(terpusat) , dapat interkoneksi
diakses oleh semua
Pi . M I/O
M1 M2 MK
Mk : Memory modulek ,
k = 1, K, K > N
0
P1 P2 PN M1
a
load store
cache1 cache2 cacheN
M2
interkoneksi
b
M1 M2 MK I/O :
:
P1 P2 PN
proses di P1 load store
... cache1 cache2 cacheN
...
load a ;
M1 M2 MN
...
...
interkoneksi
proses di PN I/O
...
...
store b ; Data a berada di M1, b berada di M2
...
...
Pemetaan alamat virtual pada Distributed shared-memory MP.
Globally shared virtual memory
0 1 2 3 4 5 6 7 8
0 3 P0 4 7 P1 2 8 P2
5 M0 M1 1 M2
interkoneksi
P0 P1 P2
interkoneksi
0 3 4 7 2 8
5 M0 M1 1 M2
Sinkronisasi pengaksesan data berbagi.
Ketika harga shared data x akan diubah (update) oleh proses di
prosesor PI , maka proses-proses pada prosesor lainnya tidak
diperbolehkan mengakses data x sebelum proses updating selesai
dikerjakan.
P1 : Update harga x
t
P1 : lock P1 : unlock
P1 : Update harga x
t
on y off y off
on
M1 M2 M3 MK
x
(2) load x P1 P2 PN
on y off y off
on
M1 M2 M3 MK
x
(3) update x P1 P2 PN
on y off y off
on
M1 M2 M3 MK
x
(4) store x P1 P2 PN
on y off y off
on
M1 M2 M3 MK
x
(5) unlock P1 P2 PN
on on on
on
M1 M2 M3 MK
x
begin parallel // spawn a child
Program sekuensial
thread
for (i=0; i<8; i++) private int start_iter, end_iter, i;
a[i] = b[i] + c[i]; shared int local_iter=4, sum=0;
sum = 0; shared double sum=0.0, a[], b[], c[];
for (i=0; i<8; i++) shared lock_type mylock;
if (a[i] > 0)
sum = sum + a[i]; start_iter = getid() * local_iter;
Print sum; end_iter = start_iter + local_iter;
for (i=start_iter; i<end_iter; i++)
a[i] = b[i] + c[i];
Program paralel
barrier;
P1 P2 PN
L1 L1 L1
cache cache cache
interkoneksi
shared
Shared Memory IO
L2 cache
Cache coherence.
Shared variable dapat memiliki harga yg berbeda di dalam cache
yg berbeda.
Step 1 : P1 membaca X Step 2 : P3 membaca X
dari memory dari memory
P3 mengubah harga X
Step 3
Step 4 : P2 membaca X dari memory
Message Passing Multiprocessor :
Arsitektur dasarnya adalah arsitektur MP dengan memory
terdistribusi.
(4) write a b
a data
b
Jaringan Interkoneksi
Bus P1 P2 PN
M1 M2 MK
B Y
A X A X A X
B Y B Y B Y
A X A X A X
B Y B Y B Y
Contoh : N = 8 , K = 8,
Interkoneksi : P1 M1 , P3 M6
3-stages
P1 M1
P2 b M2
b b
P3 M3
P4 M4
b
P5 M5
P6 M6
P7 a a M7
P8 M2
a a
Scalability
Speed-up S(N)
N fP = 50% fP = 90% fP = 99%
10 1.82 5.26 9.17
100 1.98 9.17 50.25
1000 1.99 9.91 90.99
10.000 1.99 9.91 99.02
Scalabilitynya terbaik*
fP/2
Eksekusi paralel : misal : N = 2
t
105