Sie sind auf Seite 1von 105

Bab 6 Arsitektur Paralel

6.1 Konsep Arsitektur Paralel


Klasifikasi Flynn
Perkembangan Arsitektur Paralel
Ragam Arsitektur Paralel
6.2 Sistem Multiprosesor
Arsitektur Mutiprosesor
Ragam Arsitektur Multiprosesor
Jaringan Interkoneksi sistem MP.
Kinerja sistem multiprosesor
Modern computers, even laptops, are parallel in architecture with
multiple processors/ cores.
Parallel software is specifically intended for parallel hardware with
multiple processors/cores, threads, etc.
In most cases, sequential programs run on modern computers
"waste" potential computing power.

if a programmer is aware of parallel architecture , he/she can choose


an algorithm that can exploit this new capability : Parallel Execution.
6.1 Konsep Arsitektur Paralel
Definisi :
A parallel computer is a collection of processing elements that
can communicate and cooperate to solve a large problem fast. -
Almasi & Gottlieb

Tergantung pada level pemaralelannya, processing element dapat


berupa

(a) Unit eksekusi (ALU)


Sistem Uniprosesor
(b) Instruction Pipeline

(c) CPU Sistem Multiprosesor

(d) Komputer Sistem Multikomputer


(a) Memory

CPU CU
CU : Control Unit

ALU ALU ALU

I/O

(b) Memory

CPU
Pipeline1 Pipeline2 PipelineN

I/O
(c) Memory

CPU1 CPU2 CPUN

I/O

(d) Komputer Komputer Komputer

Memory Memory Memory

CPU CPU CPU

I/O I/O 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

Single SISD SIMD


#Instruction
Streams :
Multiple MISD MIMD
SISD: Single Instruction stream, Single Data stream

1 aliran instruksi
CPU
Arsitektur Von Neumann

CU

1 aliran
ALU Memory
data

Instruksi1 Instruksi2 Instruksi3 single instruction stream


t
OperandI OperandI OperandI single data stream
1 2 3

lts 7
SIMD Single Instruction-stream Multiple Data-stream

CPU 1 aliran instruksi

CU

ALU1 ALU2 ALUN Memory

N aliran data

Seluruh ALUj mengeksekusi instruksi yang sama (Ii) tetapi untuk


operand yang berbeda (Operand I untuk j = 1, 2, 3, .., N)
i, j ,
Contoh :

ADD X(i), Y(i) MUL A(i), B(i) single stream

X(1) +Y(1) A(1) *B(1)


ALU1 : t

X(2) +Y(2) A(2) *B(2)


ALU2 : t multiple
stream

X(N) +Y(N) A(N) *B(N)


ALUN : t

Prosesor prosesor grafis (GPU: Graphic Processor Unit) , memiliki


instruksi vektor dalam instruction setnya dan unit-eksekusi vektor
dengan arsitektur SIMD.
MISD: Multiple Instruction streams, Single Data stream

Strukur dasar :

N aliran
CU1 CU2 CUN
instruksi

ALU1 ALU2 ALUN Memory


1 aliran data

Catatan :
Arsitektur MISD jarang (tidak pernah) dijumpai pada General
Purpose Computer komersial.
Strukur alternatif : Systolic

N aliran
CU1 CU2 CUN instruksi

ALU1 ALU2 ALUN Memory

1 aliran data

Catatan :
Arsitektur Systolic sering dijumpai pada signal processor.
MIMD : Multiple Instruction-stream Multiple Data-stream

CPU1 CPU2 CPUN

N aliran
CU1 CU2 CUN
instruksi

ALU1 ALU2 ALUN Memory

N aliran data

Arsitektur MIMD ini dikenal sebagai arsitektur Multiprosesor, terdiri


dari N buah CPU. Masing masing CPU mengeksekusi aliran instruksi
dan aliran data yang berbeda.
Perkembangan Arsitektur Komputer di era teknologi IC

Teknologi IC (1970an)

Arsitektur prosesor tunggal arsitektur multiprosesor

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.

parallelism is the future of computing.


Mengapa beralih ke arsitektur paralel ?
Tuntutan aplikasi :
aplikasi scientific (biologi, kimia, fisika, )
aplikasi general purpose (CAD, multi media, database,
skala komputasi yang makin besar dan kompleks perlu
peningkatan kecepatan komputasi.
Pengembangan arsitektur mikroprosesor dengan prosesor
tunggal mencapai titik dimana eksploitasi keparalelan dalam
arsitektur prosesor-tunggal menjadi sangat mahal (rasio
cost/performance tinggi).

Kemajuan teknologi IC memungkinkan implementasi arsitektur


paralel secara ekonomis dibandingkan masa-masa sebelumnya.

lts 14
Level Pemaralelan

Komputasi secara paralel dimungkinkan dengan mengidentifikasi-


kan bagian-bagian dalam komputasi yang dapat dieksekusi secara
paralel.

Berdasarkan identifikasi bagian-bagian dalam komputasi yang


dapat dieksekusi secara paralel, pemaralelan dapat dilakukan pada
level-level sbb. :

level Program
level Proses
level Thread
level Instruksi
Pemaralelan level program

N buah program, yang tidak memiliki saling ketergantungan data,


dapat dieksekusi pada N buah prosesor secara paralel.

Program A Program B Program C

// //

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 // Proses B3

Proses A1 , B2 dan B3 dapat dieksekusi se-cara paralel bila tidak ada


saling ketergantungan data antar proses A1 , B2 dan B3 .
Contoh :

Proses A1 dan proses B2 tidak memiliki ketergantungan data,


maka kedua proses tsb dapat dieksekusi secara paralel.

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

Keparalelan level proses : C = A x B // F = D x E 19


lts
Pemaralelan level thread (TLP : Thread Level Parallelism).
Thread adalah bagian didalam suatu proses.
Suatu proses dapat memiliki lebih dari satu threads,
Beberapa threads (dari suatu proses maupun dari beberapa proses),
yang tidak memiliki ketergantungan data, dapat dieksekusi secara
paralel. proses A
:

proses B
threadA1 :

:
threadB1

threadA2 :

Bila threadA1 , threadA2 , dan threadB1 tidak memiliki ketergantungan


data, maka ketiga threads tersebut dapat dieksekusi secara paralel.
Contoh :
(1) Dalam proses perkalian matriks C = A x B ,
A B C

X =

Bila komputasi tiap elemen diagonal C[i, i] dianggap sebagai threadi,

Thread1 : C[1 , 1] = A[1, 1] * B[1 , 1] + A[1 , 2] * B[2 , 1] + ... //

Thread2 : C[2 , 2] = A[2, 1] * B[1 , 2] + A[2 , 2] * B[2 , 2] + ... //

ThreadN : C[N , N] = A[N,1] * B[1, N] + A[N ,2] * B[2 , N] + ... , //


Karena tidak ada ketergantungan data antar threadi , maka
thread
lts 1, thread2 , , threadN ,dapat dieksekusi secara paralel. 21
(2) Misalkan loop1 dan loop2 adalah threads dalam proses A,
apakah kedua threads tsb dapat dieksekusi secara paralel ?

proses A : thread :

for (i=0; i<n; i++)


loop1
sum = sum + a[i];
for (i=0; i<n; i++)
loop2
prod = prod * a[i];

Analisis ketergantungan data antar thread :

iterasi loop1 loop2

0 sum = sum + a[0] prod = prod * a[0]

1 sum = sum + a[1] prod = prod * a[1]

2 sum = sum + a[2] prod = prod * a[2]


23
3 sum = sum + a[3] prod = prod * a[3]

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;

Perlu dilakukan analisis ketergantungan data antar kedua


prosedur tsb. Bila tidak ada ketergantungan data maka keduanya
dapat dieksekusi secara paralel.
(4) Bila setiap iterasi dalam loop dibawah ini dianggap sebagai
threadi (untuk i = 0, 7), apakah threads tersebut dapat dieksekusi
secara paralel ?

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 :

iterasi 0 iterasi 1 iterasi 2 ..

(thread0) (thread1) (thread2)

a[0] = b[0] + a[0] a[1] = b[1] + a[1] a[2] = b[2] + a[2] ..

sum[0] = sum[0] + c[0] sum[1] = sum[1]+c[1] sum[2] = sum[2]+c[2] ..

..

tidak ada ketergantungan data antar iterasi , dengan demikian


threadi , untuk i = 0, 7 dapat dieksekusi secara paralel !
(5) Bila setiap iterasi dalam loop dibawah ini dianggap sebagai
threadi (untuk i = 0, 7), apakah threads tersebut dapat dieksekusi
secara paralel ?

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 :

a[0] = b[0] + a[0+1] ; a[1] = b[1] + a[1+1] ;



sum[0] = sum[0] + c[0] ; sum[1] = sum[1] + c[1] ; 27
Analisis ketergantungan data antar iterasi :

iterasi 0 iterasi 1 iterasi 2


thread0 thread1 thread2

a[0] = b[0] + a[1] a[1] = b[1] + a[2] a[2] = b[2] + a[3]

sum[0] = sum[0] + c[0] sum[1] = sum[1] + c[1] sum[2] = sum[2] + c[2]


Ada ketergantungan data antar iterasi , threadi menggunakan


data yg diubah oleh thread i 1 ,
dengan demikian threadi untuk i = 0, 7 tidak dapat dieksekusi
secara paralel !
Pemaralelan level Instruksi (ILP : Instruction Level
Parallelism)

Beberapa instruksi (dari suatu thread maupun dari beberapa


threads), yang tidak memiliki saling ketergantungan data, dapat
dieksekusi secara paralel

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.

Misalkan CPI rerata = N cycles

Komputasi sekuensial : LD R0, 34(R2)


ADD R4, R0, R2
4 N cycles
LD R7, 45(R3)
ADD R8, R7, R6

Analisis ketergantungan data


Komputasi paralel :

LD R0, 34(R2) // LD R7, 45(R3)


2 N cycles
ADD R4, R0, R2 // ADD R8, R0, R6

Makin tinggi derajat keparalelan dalam komputasi sekuensial,


makin cepat waktu komputasi paralelnya.
Contoh : Komputasi elemen diagonal C(i, i).

A B C

X =

Misalkan komputasi elemen diagonal untuk i = 1,

C[1 , 1] = A[1, 1] * B[1 , 1] + A[1 , 2] * B[2 , 1] + A[1, 3] * B[3 , 1] + ...

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

Instruction Level Thread level Process level

Pipelined Superscalar Distributed Shared


VLIW
processor processor Memory Memory
processor
arch. arch Multiprocessor Multiprocessor
arch.
arch. arch,

Keparalelan dalam Uni prosesor Keparalelan dalam Multiprosesor


Keparalelan dalam sistem prosesor tunggal

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

IF1 ID/OF1 EX1 STO1


instruction

IF2 ID/OF2 EX2 STO2 N issue


superscalar

IFN ID/OFN EXN STON

Instruction Prefetch & Buffer akan :

membaca seruntun instruksi dari pengingat cache,


menganalisis ketergantungan data antar instruksi dalam runtun,
menyusun instruksi-instruksi yg dpt dieksekusi secara paralel. 34
Contoh : Analisis ketergantungan data antar instruksi dalam runtun,
pada 2-issue superscalar.

Catatan : Pada pipeline, CPIideal = 1 cycle.

Runtun eksekusi Runtun eksekusi pada


pada pipeline tunggal 2-issue superscalar
I1 analisis ketergantungan data *
I2
5 cycles I3 I1 I3 I1 // I3
I4 3 cycles I2

t I5 t I4 I5 I4 // I5
2-issue
* Analisis ketergantungan data antar instruksi dilakukan secara
hardware.

Urutan eksekusi instruksi tdk sama dgn urutan instruksi dlm


runtun sekuensial sering disebut eksekusi Out of Order 35
instruction prefetch & buffer

I1 pipeline1
I2
I1 I3 IF1 ID/OF1
I3
I4 analisis I2
pipeline2
I5 I4 I5
IF2 ID/OF2
buffer1 buffer2
2 issue superscalar

1. Instruksi-instruksi dibaca lebih dulu (dari pengingat) dan


ditempatkan dalam buffer1.
2. Ketergantungan data antar instruksi dianalisis, hasil analisis
diletakkan dalam buffer2.
3. Dua pipeline paralel membaca (IF) instruksi-instruksi yang akan
dieksekusi dari buffer2 untuk diproses secara pipeline.
36
Contoh : Gantt chart untuk 2-issue superscalar ideal.

STO2
STO1
EX2
EX1
ID/OF2
ID/OF1
IF2
IF1
37

maks. 2 instruksi/cycle 1 cycle

Pipeline : Throughput ideal = 1 instruksi/cycle


N-issue Superscalar : Throughput ideal = N instruksi/cycle

Masalah : - Terbatasnya derajat keparalelan dalam runtun instruksi.


- Pipeline hazard
Arsitektur Very Large Instruction Word (VLIW)

Prosesor VLIW, adalah prosesor superscalar, akan tetapi analisis


ketergantungan data, dan penyusunan instruksi-instruksi tsb dalam
format paralel VLIW (Very Large Instruction Width) dilakukan oleh
compiler (static scheduling) bukan secara hardware.

Intruksi-instruksi didalam format VLIW tsb akan dieksekusi secara


paralel.

Karena urutan eksekusi instruksi tidak sesuai dengan urutan letak


instruksi didalam program maka eksekusi disebut Out of Order (tidak
sesuai dengan urutan).
Analisis keparalelan level instruksi oleh compiler :

:
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

a) thread tunggal (singlethreading)

b) beberapa thread (multithreading).

Instruksi-instruksi paralel tsb dieksekusi pada prosesor N-issue


superscalar.
(a) Instruksi-instruksi yg diparalel berasal dari thread A.

Singlethreading
ILPA N issue superscalar
IF1 ID/OF1 EX1 STO1

instruction
buffer
IF2 ID/OF2 EX2 STO2
thread A

IFN ID/OFN EXN STON

(b) Instruksi-instruksi yg diparalel berasal dari thread A, thread B dan


thread C.
N issue superscalar
ILPA, B, C
Multithreading
IF1 ID/OF1 EX1 STO1
thread A
instruction
buffer

IF2 ID/OF2 EX2 STO2


thread B

thread C IFN ID/OFN EXN STON


Contoh : Singlethreading

thread A 4-issue
I1A I1A I3A 4-issue
ILPA
5 cycles

I2A I2A singlethreading


I3A I4A I5A
I1A I3A
I4A 3 cycles ILPA

5 cycles
I2A
I5A t
t I4A I5A
I1B I2B
ILPB
thread B 4-issue I3B I4B I5B

I1B I1B I2B


ILPB
5 cycles

I2B I3B I4B I5B


I3B
2 cycles t
I4B
I5B
t
Contoh : Simultaneous Multithreading, dengan asumsi tidak ada
ketergantungan data antara thread A dan B.
thread A 4-issue
I1A I1A I3A
ILPA 4-issue
5 cycles

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

Tanpa pemaralelan level instruksi (ILP), thread A dieksekusi dalam 8


cycles. Dengan ILP, thread A dieksekusi dalam 5 cycles.
Contoh : Singlethreading thread X pada 4-issue superscalar

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

thread A : ILPA thread B ILPB


:
IA1 IA1 IB1 IB1
IA2 IA2 IA3 IB2 IB2 IB3
IA3 IA4 IA5 IB3 IB4
IA4 IA6 IB4 IB5 IB6
IA5 IA7 IA8 IB5
4 cycles
IA6 IB6
5 cycles
IA7 6 cycles
IA8 Tanpa ILP, eksekusi thread A dan thread B membutuhkan
8 cycles waktu 8 + 6 = 14 cycles
Dengan multithreading, instruksi-instruksi yg diparalelkan eksekusi-
nya berasal dari thread A dan thread B (multiplethreads).

ILPAB
multithreading thread A dan thread B
IA1 IB1
singlethreading thread B
IA2 IA3
7 cycles

IB2 IB3 sekuensial thread B


IA4 IA5
7 cycles < 5 cycles + 4 cycles < 8 cycles + 6 cycles
IA6 IB4
IA7 IA8
singlethreading thread A
IB5 IB6 sekuensial thread A

Multithreading (MT) meningkatkan efisiensi penggunaan resources


(slot) pada prosesor superscalar.
single thread A single thread B multiple thread

issue issue issue


1 2 1 2 1 2

cycle1
cycle2

cycle3

cycle4

cycle5

5 cycles 4 cycles cycle6

cycle7
dengan singlethreading : 9 cycles
dengan multithreading : 7 cycles
Ragam Multithreading :
- Coarse Grain MT
- Fine Grain MT
- Simultaneous MT

Coarse Grain Multithreading


Perpindahan eksekusi dari satu thread ke thread lainnya (thread
switch) dilakukan pada saat terjadi stall.

Contoh : Coarse Grain Multitreading pada 4-issue superscalar

IF1 ID/OF1 EX1 STO1


instruction

thread A
buffer

IF2 ID/OF2 EX2 STO2

thread B IF1 ID/OF1 EX1 STO1

IFN ID/OFN EXN STON


4 issue superscalar

1 2 3 4

: IAi , 1 instruksi dalam thread A

: IBj , 1 instruksi dalam thread B


Halt A
: slot yg tidak terpakai.

Halt B

Bagaimana efisiensi penggunaan slot??


Halt A
Mengapa slot-slot pada issue ke 4
kosong ??
Halt B
Fine Grain Multithreading
Setiap cycle dialokasikan untuk intruksi-instruksi paralel yg berasal
dari thread yg sama.

Perpindahan antar threads dilakukan per cycle.

Thread yang mengalami halt akan dilewati (digantikan oleh thread


berikutnya).

Contoh : Fine Grain Multitreading pada 4-issue superscalar,


dengan thread A, thread B, thread C dan thread D.

thread A IF1 ID/OF1 EX1 STO1


instruction
buffer

thread B IF2 ID/OF2 EX2 STO2

thread C IF1 ID/OF1 EX1 STO1

thread D IFN ID/OFN EXN STON


issue
1 2 3 4

threadA cycle1 threadA


cycle2 threadB
threadB
cycle3 threadC
threadC cycle4 threadD
cycle5 threadA
threadD
cycle6 threadB
idle cycle7 threadC
cycle8 threadD
cycle9 threadA
halt B
cycle10 threadC
cycle11 threadD
cycle12
Simultaneous Multithreading (SMT)
Setiap cycle dapat digunakan bersama-sama oleh instruksi-instruksi
yang berasal dari thread berbeda.

SMT memberikan efisiensi terbaik dalam pemanfaatan superscalar


resources.
EX1 EX2 EX3 EX4

threadA cycle1
cycle2
threadB
cycle3
threadC cycle4
cycle5
threadC
cycle6
idle cycle7
cycle9
Resources Utility

Efisiensi penggunaan slot dalam multithreading dinyatakan dalam


persentase Resource Utility.
#slot yg terpakai
Resource Utility = x 100%
#slot yg tersedia

Dari gambar pada slide berikut ini, diperoleh Resource Utility sbb :

#slot terpakai #slot tersedia Resource


Utility
Single Thread 16 48 33.3%
CG MT 27 48 56.3%
FG MT 27 48 56.3%
S MT 42 48 87.5%
Multiprocessor MT 29 48 60.4%
4-issues 4-issues 4-issues 4 issues 2 x 2-issues

Singlethread CG MT FG MT SMT Multiproc.


cycle

16/48 = 33.3% 27/48 = 56.3% 27/48 = 56.3% 42/48 = 87.5% 29/48 = 60.4%

Thread 1 Thread 3 Thread 5 Thread 2 Thread 4 Idle slot


55
SMT
menghasilkan efisiensi tertinggi.
Kompleksitas implementasi SMT pada 4-issue superscalar sangat
tinggi sehingga :
harga implementasi mahal,
(a)
daya (listrik) yg dibutuhkan tinggi.

MT pada multi processor.


efisiensi < efisiensi SMT, tetapi > FG & CG MT.
MT pada multiprocessor diimplementasikan menggunakan dua 2-
issue superscalar yg kompleksitasnya tidak setinggi 4-issue
superscalar, sehingga :
harga implementasinya jauh lebih murah dibandingkan SMT.
(b)
daya (listrik) yg dibutuhkan lebih rendah.

(a) dan (b) mendorong beralihnya trend pengembangan arsitektur


paralel dalam prosesor tunggal ke arsitektur multiprosesor (multicore).
Prosesor komersial dengan kemampuan SMT.
Intel Pentium 4 adalah prosesor Intel pertama (2002) yang
menerapkan SMT , untuk dua threads (disebut Hyperthreading di
lingkungan Intel), diikuti dengan Pentium M, Core-Duo dan Core-2-
Duo .
Rancangan prosesor MIPS MT dengan 8 cores, mengimplementasikan
Fine Grain MT atau SMT 4-threads pada masing-masing core.
IBM Blue Gene/Q mengimplementasikan 4-issue SMT.

IBM POWER5, pada 2004, memunculkan modul dual core dual-chip,


atau quad-core disusul modul octal-core multi-chip dengan masing
masing core mendukung SMT 2-threads. Pada 2010, IBM
mengeluarkan sistem berbasiskan prosesor POWER7 dengan 8
cores, masing-masing core memiliki kemampuan SMT 8-threads.
IBM POWER8 memiliki SMT 8-threads per core (SMT8).
UltraSPARC T1 dari Sun Microsystems.

Sparc T3, T4, T5, M5 dan M6 dari Oracle Corporation memiliki 8-


issue fine-grained MT per core.

Sparc64 VI Fujitsu mengimplementasikan coarse-grain MT, Sparc VII


memiliki 2-issue SMT.

Intel Itanium mengimplementasikan coarse-grain MT dan 2-issue


SMT .

Intel Xeon Phi mengimplementasikan 4-issue SMT.

Intel Atom (2008), 2-issue SMT.


Power 4 - 1 thread

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.

Kinerja sistem multiprosesor


Arsitektur Multiprosesor (Multicore)
Sistem Multiprosesor mempekerjakan N buah prosesor (core),
N > 1, sebagai elemen-komputasi yang saling bekerjasama.

Sistem Multiprosesor dengan N buah prosesor disebut N-prosesor


Multiprocessor, N-core Multiprocessor, atau N-core Processor.

Centralized MP. Distributed Memory MP.

P1 P2 PN P1 P2 PN

cache1 cache2 cacheN cache1 cache2 cacheN

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

core1 core2 coreN


Prosesor Multicore :
P1 P2 PN
N prosesor (disebut N
cache1 cache2 cacheN core), seluruhnya
berada dalam satu
interkoneksi
chip.
M1 M MK I/O
M 2
Sistem Multiprosesor vs Sistem Multikomputer

komputer1 komputer2 komputerN

interkoneksi

Multiprosesor Multikomputer

Elemen komputasi Prosesor (core) Komputer

Interkoneksi Jarak dekat Jaringan internet :


(dalam chip, LAN : cluster computing
papan rangkaian). WAN: distributed computing
komputer1 komputer2 komputerN

P1 P2 PN

cache1 cache2 cacheN

M1 M2 MN

I/O I/O I/O

interkoneksi

64
Contoh Sistem multiprosesor :

Prosesor Intel Xeon dengan 6 cores dan 6 pengingat cache level 3.


(p. cache level 1 dan level 2 ada didalam masing-masing core).
2 quad-core, Intel Xeon e5345 (Clovertown)
quad-core quad-core

Intel Xeon E7 v3 Haswell-EX (2014) mempekerjakan 18 cores,


dengan teknik Hyper-Threading .
2 oct-core , IBM Cell QS20

oct-core oct-core
Quad-core Processor

Untuk aplikasi mobile konsumsi daya rendah


Multi Core Processor SPARC64 Series (Fujitsu)

SPARC64 VII+ chip

SPARC64 VII/VII+ chip


mempekerjakan 4-core/chip
dan teknik SMT dua threads
pada tiap core . Pengingat
cache level-2 berada dalam
chip.
SPARC64 VII SPARC64 VII+
CPU cores per chip 4 4

Threads per CPU core 2 (SMT) 2 (SMT)

128KB with 2ways per 128KB with 2ways per


Level1 cache
core core
6MB with 12 ways at
Maximum Level2 12MB with 12 ways
maximum (per CPU
cache (per CPU chip)
chip)

multiprosesor skala kecil (2-32 prosesor)


multiprosesor skala besar (> 64 prosesor)
2 oct-core, Sun UltraSPARC T2 5140 (Niagara 2)
Ragam Multiprosesor (MP) :

Berdasarkan lokasi fisik memorynya

Centralized Memory MP
Distributed Memory MP

Berdasarkan model pemrogramannya (komunikasi


antar prosesnya)

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

Cachei : Memory pribadi (private) dari Pi, hanya dapat diakses


oleh Pi .

Waktu yg dibutuhkan oleh Pi, i = 1, N, untuk mengakses M sama


arsitektur Uniform Memory Access (UMA) MP.
Distributed Memory Multiprocessor.
Pi : Prosesori (corei),
P1 P2 PN
i = 1, N.
cache1 cache2 cacheN
Mi :
memory lokal dari Pi. M1 M2 MN
remote memory dari Pj ,
interkoneksi
untuk j K i .

Cachei : Memory pribadi (private) Pi , I/O


hanya dapat diakses oleh Pi .

Waktu yang dibutuhkan oleh Pi untuk akses ke local memory Kwaktu


akses Pi ke remote memory arsitektur Non Uniform Memory
Access (NUMA) multiprocessor.
Akses Pi Mi tidak perlu melalui jaringan interkoneksi.
Akses Pi Mj , i K j, harus melalui jaringan interkoneksi.
Shared Memory Multiprocessor
0
M1 , M2 , , MK , membentuk satu ruang
1 M1
alamat memory berbagi (shared) yang
2
dapat diakses oleh semua prosesor Pi .
3 :

shared address space


Shared memory multiprocessor juga 4
disebut Shared Address Space 5
multiprocessor. M2
6
Interaksi antar proses yang sedang 7
dijalankan pada prosesor Pi terjadi melalui : :
instruksi load/store dari/ke ruang alamat : :
bersama (shared address space) tersebut.

MK


Shared Memory MP dengan memory terpusat

Proses pada P1 membaca data dari alamat a di M1 : load a

Proses pada PN menuliskan data ke alamat b di M2 : store b

0

P1 P2 PN M1
a
load store
cache1 cache2 cacheN

M2
interkoneksi
b

M1 M2 MK I/O :
:

Operasi load a dan store a dilakukan secara MK


paralel.
Shared Memory MP dengan memory terdistribusi

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.

Proses updating data x oleh prosesor PI terdiri dari operasi-operasi :

load x ; data x dibaca oleh PI dari shared memory

update x ; data x diubah didalam PI

store x ; data x yg baru disimpan oleh PI ke shared memory

Operasi-operasi tersebut harus dilakukan secara mutually


exclusive, artinya walaupun proses-proses yg berjalan di P1, P2, .. ,
PN adalah proses yang saling bekerjasama (mutual) tetapi ada
bagian-bagian dari proses yang harus dijalankan secara eksklusif,
tidak boleh diintervensi oleh proses lainnya.
lock unlock

Sinkronisasi lock-unlock diterapkan agar prosesor lain tidak dapat


mengintervensi proses updating data x (mengakses data x sebelum
harga x selesai diperbaharui).

Instruksi lock unlock digunakan untuk membingkai proses updating


data x oleh PI :

I1 : lock ; interkoneksi Pi , ke shared memory, untuk i KI , diputus.

I2 : load x ; data x dibaca oleh PI dari shared memory

I3 : add x, 6 ; data x diubah didalam PI

I3 : store x ; data x yg baru disimpan oleh PI ke shared memory

I4 : unlock ; interkoneksi Pi , ke memory, untuk i KI , dipulihkan.

bagian yg mutually exclusive


Tanpa lock - unlock

P1 : Update harga x
t

P1: Baca x dari memory. P1 : simpan harga x baru


ke memory
P2 : Baca x dari memory data x di memory
belum berubah.
Dengan lock - unlock

P1 : lock P1 : unlock
P1 : Update harga x
t

P1: Baca x dari memory. P1 : simpan harga x baru


ke memory
shared memory hanya
dapat diakses oleh P1.
(1) lock P1 P2 PN

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;

for (i=start_iter; i<end_iter; i++)


if (a[i] > 0) {
lock(mylock);
sum = sum + a[i];
unlock(mylock);
}
barrier; // necessary

end parallel // kill the child thread


Print sum;
Variasi multiprosesor tipe shared memory :

P1 P2 PN

L1 L1 L1
cache cache cache

interkoneksi

shared
Shared Memory IO
L2 cache

UMA Shared Cache Architecture:


Pentium Pro Quad , IBM Power4, Sun Enterprise
Masalah pada Shared Memory MP

Scalability (pada share-memory


P1 P2 PN
MP dengan interkoneksi bus).
cache1 cache2 cacheN

Penambahan jumlah prosesor Bus


akan menambah trafik pada bus,
M1 M2 MK I/O
terjadi antrian untuk pengaksesan
memory. UMA Memory
Pada titik tertentu, penambahan
jumlah prosesor tidak P1 P2 PN
menghasilkan peningkatan kinerja
cache1 cache2 cacheN
secara linear.
Mem.1 Mem.2 MemN
Bus
I/O
NUMA
Masalah pada Shared Memory MP

Scalability (pada share-memory MP dengan interkoneksi bus).

Penambahan jumlah prosesor akan menambah trafik pada


bus, terjadi bottleneck dalam pengaksesan memory.

Pada titik tertentu, penambahan jumlah prosesor tidak akan


menghasilkan peningkatan kinerja secara linear.

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.

Prosesor Pi tidak dapat


P1 P2 PN
mengakses langsung memori
Mj untuk i =/= j.
cache cache cache
Akses langsung hanya dapat
dilakukan pada memory lokal
M1 M2 MN
( Pi ke Mi ).

Komunikasi antar prosesor


interkoneksi
dilakukan dengan pengiriman
pesan antar prosesor (dengan
IO
pesan send dan receive).
Mekanisme send-receive.
Proses X di P1 akan mengirimkan data ke proses Y di P2 :

Pesan Send dikirimkan oleh proses X di P1 ke proses Y di P2,


disertai alamat data yang akan dikirim , nama proses yang harus
menerimanya dan tag.

send alamat data yg akan dikirim proses penerima tag

Melalui tag tsb OS memeriksa, apakah proses X berhak


mengirimkan data ke proses Y.

Bila proses X berhak, maka pesan Receive dikirimkan oleh


proses Y di P2 ke proses X di P1. Pesan Receive menyatakan
calon alamat penyimpanan data, nama proses pengirim dan tag.

receive alamat yg akan menerima data proses pengirim tag


Proses X di P1 akan mengirimkan data ke proses Y di P2 :

(1) send a ,Y , tag


(2) match
proses X tag ? proses Y
di P1
di P2
OS

(3) receive b, X, tag


M1 M2

(4) write a b
a data
b
Jaringan Interkoneksi

Bus P1 P2 PN

cache1 cache2 cacheN

M1 M2 MK

Interkoneksi bus dapat memunculkan bottleneck pada


pengaksesan memory M.

Jaringan Interkoneksi selain bus memungkinkan pengaksesan Mi


secara paralel, sehingga mengurangi bottleneck.
Multistage switching networks
Jaringan intekoneksi terhubung menggunakan saklar-saklar 2x2
yang sambungannya dapat diprogram.
A X

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

Waktu yg dibutuhkan untuk pengaksesan dari prosesor Pi ke


memory Mj sama Uniform Memory Access (UMA).
Crossbar Switch

Waktu yg dibutuhkan untuk pengaksesan dari prosesor Pi ke


memory Mj , untuk i = 1, N dan j = 1, K , sama Uniform Memory
Access (UMA).
Kinerja sistem multiprosesor dengan N prosesor

Waktu Eksekusi sistem dengan N prosesor : T(N)

Speedup sistem dengan N prosesor : S(N)


S(N) = T(1) / T(N)
Pada umumnya, 1 < S(N) < N

Efficiency sistem dengan N prosesor : E(N)


E(N) = S(N) / N
Pada umumnya, E(N) < 1

Scalability

Suatu sistem multiprosesor disebut scalable bila


penambahan jumlah prosesor (N) berbanding lurus dengan
peningkatan kecepatannya (S(N).
fp : fraksi atau bagian dari program sekuensial yang dapat
dieksekusi secara paralel pada sistem dengan N prosesor.

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*

*Daerah linear kurve hijau lebih lebar dibandingkan lainnya


Amdahl's Law menyatakan bahwa peningkatan kecepatan eksekusi
program pada multiprosesor ditentukan oleh seberapa bagian dari
program yang dapat dieksekusi secara paralel (fP), seberapa bagian
yang harus dieksekusi seara sekuensial (fS) dan berapa jumlah
prosesor (N).
1
speedup(N) = fP : fraksi paralel
fS + (fP/N)
fS : fraksi sekuensial
1
Eksekusi sekuensial :
fs fP = 1 - fS

fP/2
Eksekusi paralel : misal : N = 2
t

Amdahl's Law hanya memperhitungkan waktu eksekusi pada prosesor-


prosesornya saja !
Kendala Scalability :
1. Terbatasnya bagian program yang dapat diparalelkan.
2. Penambahan prosesor pada sistem multiprosesor berbasiskan
bus akan meningkatkan bottle neck dalam pengaksesan memory.
3. Waktu pengaksesan yang berbeda antara local memory dengan
remote memory pada mikroprosesor tipe NUMA. Semakin
banyak persentase pengaksesan ke remote memory maka waktu
eksekusi akan bertambah.
4. Sinkronisasi dalam pengaksesan data bersama pada Shared
Memory MP (melalui mekanisme lock-unlock) dan sinkronisasi
(melalui mekanisme Send-Receive) pada Message Passing MP
memberi tambahan waktu eksekusi.

2, 3 & 4 merupakan communication & synchronization costs.

Amdahl Law mengabaikan communication & synchronization costs !!!


Berdasarkan Amdahl Law, untuk speedup 80 pada
multiprosesor dengan 100 prosesors, berapakah persentase
program asli yang boleh dieksekusi secara sekuensial ?
a. 10%
b. 5%
c. 1%
d. <1%

Mengapa Amdahl Law tidak dapat menggambarkan secara


akurat kinerja sistem multiprosesor ?

105

Das könnte Ihnen auch gefallen