Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
ARSITEKTUR PARALEL lts
2
Serial Vs. Paralel COUNTER 2 COUNTER COUNTER 1 Q Please lts
3
Sistem Komputer dengan Arsitektur Parallel
Adalah sistem komputasi yang elemen elemen pemrosesnya bekerjasama mengerjakan sub- komputasi secara serentak (paralel) Mengapa dipilih arsitektur paralel ? Tuntutan aplikasi , skala komputasi yang makin besar dan kompleks perlu peningkatan kecepatan. Trend Teknologi memungkinkan implementasi arsitektur paralel secara ekonomis Antisipasi terhadap mandegnya peningkatan kecepatan melalui pendekatan teknologis. lts
4
Level Paralel * / Large grain (task level) level Program Medium grain
(process level) level proses, fungsi, thread Fine grain (inter instruction level) level Instruksi Very fine grain (intra instruction level) level Operasi2 dalam Instruksi Task i Task j Task p func1 ( ) { .... } func2 ( ) { .... } funcM ( ) { .... } c(i,j) =.. c(k,l) =.. c(m,n) =.. level OS/ kompiler + * / level mesin + + + lts
5
Large grain (task level)
Beberapa Program dieksekusi secara serentak (paralel) Medium grain (control level) Beberapa Fungsi/Proses/Thread dieksekusi secara paralel Fine grain (data level) Beberapa Instruksi (assembly) dieksekusi secara paralel Very fine grain (instruction level) Beberapa Operasi dalam Instruksi dieksekusi secara (paralel) Task i-1 Task i Task i +1 func1 ( ) func2 ( ) funcM ( ) c(i,j) =.. c(k,l) =.. c(m,n) =.. * lts + /
6
t1 t2 function1( ) { } function2( ) { } Komputasi Sekuensial
Komputasi Paralel function1 ( ): function2 ( ): Elemen pemroses tunggal Waktu komputasi : (t1 + t2) function1( ) || function2 ( ) Elemen pemroses jamak Waktu komputasi : max (t1, t2) lts
7
Contoh : Fungsi Perkalian Matriks
Fungsi 1 : C = A x B A B C X = komputasi elemen2 diagonal dapat dieksekusi paralel Fungsi 2 : F = D x E D E F X = lts
8
C[i , j] = Jumlah perkalian elemen elemen baris i matriks A
Perkalian Matriks A B C = X C[i , j] = Jumlah perkalian elemen elemen baris i matriks A dengan elemen elemen kolom j pada matriks B. C[1 , 1] = A[1, 1] * B[1 , 1] + A[1 , 2] * B[2 , 1] C[2 , 2] = A[2, 1] * B[1 , 2] + A[2 , 2] * B[2 , 2] C[N ,N] = A[N,1] * B[1 , N] + A[N ,2] * B[2 , N] lts
9
sistem komputer dengan prosesor (CPU) tunggal
(a) Keparalelan pada sistem komputer berprosesor tunggal CPU Main Memory I/O IF unit ID/OF unit sistem komputer dengan prosesor (CPU) tunggal CPU dengan EX unit tunggal (single functional unit) EX unit lts
10
(multiple functional/
IF unit CPU dengan N buah unit EX (multiple functional/ execution unit) ID/OF unit EX unit-1 EX unit-2 EX unit-N lts
11
arsitektur dengan multiple
functional units FU RegFile Memory ICache HUF DCT CPU lts
12
y = x + z instruksi skalar vect a(i) = b(i) * c(i) instruksivektor
Main Memory P1 CPU P2 P3 t 1 2 3 4 5 6 7 8 9 Program P1 : . . . y = x + z instruksi skalar vect a(i) = b(i) * c(i) instruksivektor lts
13
Keparalelan Level Antar Instruksi
CPU Instruction Buffer/Queue CU jalur eksekusi instruksi skalar jalur eksekusi instruksi vektor bagian pengolah vektor bagian pengolah skalar ALU ALU1 ALU2 ALUN lts
14
Bentuk bentuk Keparalelan pada Arsitektur dengan Prosesor tunggal :
Pipelining Pada saat yang sama ada beberapa instruksi yang sedang dieksekusi (keparalelan akibat overlapping eksekusi instruksi) Aktifitas dalam CPU dan aktifitas pada I/O unit berlangsung pada saat yang sama STO I1 I2 I3 I4 I5 I6 I7 I8 I9 EX ID/OF IF t lts
15
Superscalar: PowerPC 604 and Pentium Pro
Multiple FU lts
16
TMS320C67x CPU Core Multiple FU Di utk perhitungan alamat Data Path 1
Arithmetic Logic Unit Auxiliary Logic Unit Multiplier Unit ’C67x Floating-Point CPU Core Data Path 1 D1 M1 S1 L1 A Register File Data Path 2 L2 S2 M2 D2 B Register File Instruction Decode Instruction Dispatch Program Fetch Interrupts Control Registers Control Logic Emulation Test Floating-Point Capabilities [30] Now to go into more detail about the changes between the 62x CPU and the 67x CPU. In this slide I have tried to blow up to show you where we have added floating-point capability. We've added floating-point capability to six of the eight total functional units, so the ALU, or the Arithmetic Logic Unit, the auxiliary logic unit, and the multiplier all support floating-point. The D-unit, or the address calculation unit, it doesn't care what kind of data it's looking at, so it didn't need floating-point capability. So we've only added floating-point capability to six of the eight functional units. Multiple FU lts Di utk perhitungan alamat
17
Keparalelan pada sistem komputer berprosesor banyak (multiprosesor)
ProsesorN Jaringan interkoneksi Memory I/O sistem komputer multiprosesor lts
18
Contoh : sistem komputer multiprosesor dengan
jaringan interkoneksi berupa bus Prosesor1 Prosesor2 ProsesorN Cache reg.array Cache reg.array Cache reg.array Bus P1 , { DP1 } Shared Memory P3 , { DP3 } P2 , { DP2 } lts
19
Keparalelan s/d Level Task
1b 1c 1d PU1 P1 2a 2b 2c P2 PU2 3a 3b P3 PU3 Misalkan fungsi 1a dapat dieksekusi bersamaan dengan 1b , dan fungsi 2b dapat dieksekusi bersamaan dengan 2c 1a 1c 1d PU1 P1 2a 2b 1b P2 PU2 3a 3b 2c P3 PU3 lts
20
Operating System Hardware Aplikasi 2 Aplikasi 1 Aplikasi 3
Thread (urutan) Process Operating System CPU CPU CPU CPU Hardware Thread adalah potongan program yang dapat dieksekusi bersamaan waktu dengan potongan potongan program lainnya. lts
21
Multi-Processing, Multi-Threaded
Aplikasi 1 Aplikasi 2 Aplikasi 3 CPU CPU CPU Aplikasi i CPU CPU CPU lts Untuk aplikasi yang dapat diparalelkan
22
Stanford: Hydra Design
2.Approach: including innovative ideas and constructive plans for achieving the stated objectives. Single-chip multiprocessor 4 buah prosesor Cache level1 L1 bersifat lokal Cache level2, L2 bersifat berbagi lts
23
Klasifikasi Arsitektur Komputer berdasarkan Flynn
Menurut Flynn (1972), arsitektur sebuah komputer dapat dibedakan berdasarkan banyaknya aliran instruksi dan (Instruction Stream) banyaknya aliran data (Data Stream) yang dieksekusi didalam komputer tersebut pada setiap saat. Proses Single-threaded Proses Multiplethreaded Threads of Execution lts Single instruction stream Multiple instruction stream
24
Single Instruction-stream Single Data-stream
1 aliran instruksi 1 aliran data CPU CU : Control Unit DS : Data Stream PU : Processing Unit IS : Instruction Stream MU : Memory Unit lts
25
Ij I1 I2 I3 I4 1 aliran instruksi t {D}1 {D}2 {D}3 {D}4 {D}j dari MU t
PU CU 1 aliran data ke MU lts
26
(Array atau Vector Processor)
Single Instruction-stream Multiple Data-stream IS PU ke MU dari MU 1 n 1 aliran instruksi n aliran data CU : Control Unit DSi : Data Streami PEi : Processing Elementi (= ALU) ISi : Instruction Streami MU : Memory Unit LMi : Local Memoryi lts
27
Operasi yang sama (Ij) dikerjakan secara serentak pada n set data
{D1}j diproses di PE1 t {D2}1 {D2}2 {D2}3 {D2}4 {D2}j diproses di PE2 t {Dn}1 {Dn}2 {Dn}3 {Dn}4 {Dn}j t diproses di PEn Operasi yang sama (Ij) dikerjakan secara serentak pada n set data lts
28
MU (Multiprosesor) Multiple Instruction-stream Multiple Data-stream
1 MU 1 1 n aliran instruksi n n n aliran data n CU : Control Unit DSi : Data Streami PUi : Processing Uniti (ALUi) ISi : Instruction Streami MU : Memory Unit LMi : Local Memoryi lts
29
n operasi yang berbeda dikerjakan secara serentak pada n set data
I1j I11 I12 I13 I14 t diproses di PU1 {D1}1 {D1}2 {D1}3 {D1}4 {D1}j t I2j I21 I22 I23 I24 t diproses di PU2 {D2}1 {D2}2 {D2}3 {D2}4 {D2}j t Inj In1 In2 In3 In4 t diproses di PUn {Dn}1 {Dn}2 {Dn}3 {Dn}4 {Dn}j t n operasi yang berbeda dikerjakan secara serentak pada n set data lts
30
Multiple Instruction-stream Single Data-stream n aliran instruksi
( Systolic ) Multiple Instruction-stream Single Data-stream n aliran instruksi IS2 n 1 MU 1 n 2 1 aliran data CUi : Control Uniti DSi : Data Streami PUi : Processing Uniti (ALUi) ISi : Instruction Streami MU : Memory Unit lts
31
Data Streams Instruction Streams
MISD SISD MIMD SIMD 1 Many Data Streams Instruction Streams lts
32
Kategori Komputer Prosesor tunggal Prosesor Paralel
- SISD : Komputer Von Neuman MIMD : (komputer skalar) SIMD : Komputer Array, (1) Multiprosesor tipe Komputer Vektor Shared-memory (2) Multiprosesor tipe Message Passing* - MISD : Komputer Systolic Spesial Purposed Computer lts
33
(N operasi secara paralel)
+ r1 r2 r3 add r3, r1, r2 SCALAR (1 operasi) Aplikasi image processing (signal processing), multi media v1 v2 v3 panjang vektor = N vadd vv v3, v1, v2 VECTOR (N operasi secara paralel) vektor N elemen SISD vs SIMD N processing elements 1 lts
34
Instruksi Vektor dasar
Opcode Operands Operasi VADD.VV V1,V2,V V1 = V2 + V vector + vector VADD.SV V1,R0,V V1 = R0 + V scalar + vector VMUL.VV V1,V2,V V1 = V2 x V vector x vector VMUL.SV V1,R0,V V1 = R0 x V scalar x vector VLD V1,R V1 = M[ R1...R ] load, stride=1 VLDS V1,R1,R V1 = M[ R1...R * R2] load, stride=R2 VLDX V1,R1,V V1 = M[R1 + V2i , i = ] indexed VST V1,R M[ R1...R1 + 63] = V store, stride=1 VSTS V1,R1,R V1 = M[R1..R * R2] store, stride=R2 VSTX V1,R1,V V1 = M[R1 + V2i , i = 0..63] indexed lts
35
tanpa instruksi vektor dengan instruksi vektor
Contoh Program Vector Y[0:63] = Y[0:653] + a * X[0:63] tanpa instruksi vektor dengan instruksi vektor LD R0,a ADDI R4,Rx,#512 loop: LD R2, 0(Rx) MULTD R2,R0,R2 LD R4, 0(Ry) ADDD R4,R2,R4 SD R4, 0(Ry) ADDI Rx,Rx,#8 ADDI Ry,Ry,#8 SUB R20,R4,Rx BNZ R20,loop LD R0,a #load scalar a VLD V1,Rx #load vector X VMUL.SV V2,R0,V1 #vector mult VLD V3,Ry #load vector Y VADD.VV V4,V2,V3 #vector add VST Ry,V4 #store vector Y lts
36
Shared Memory MIMD machine
sebuah sistem komputer Multiprosesor tipe Shared Memory Global /Shared Memory Processor A B C M E O R Y U S local memory cache cache cache lts
37
Distributed Memory MIMD
sebuah sistem komputer Multiprosesor tipe Message Passing Jaringan Interkoneksi Processor A B C Memory System A System B System C M E O R Y U S lts
38
data digunakan secara berbagi (shared) lewat jaringan interkoneksi,
dengan melalui pertukaran pesan (message passing) antar proses (pada prosesor yg berbeda) , menggunakan instruksi SEND dan RECEIVE lts
39
yang saling bekerjasama
3 buah sistem komputer yang saling bekerjasama Sistem Multikomputer Jaringan komunikasi Processor A B C Memory System A System B System C M E O R Y U S lts
40
Masalah dalam Multiprosesor tipe Shared-Memory
Beberapa processors berbagi memory, berbagi variabel (data). Masalah konflik pengaksesan & pemakaian data karena adanya data dependency karena satu ruang pengingat digunakan secara berbagi Perlu Sinkronisasi dalam pengaksesan memory berbagi Perlu analisis ketergantungan data pada level kompilasi dan level Operating System. lts
41
A(j) = A(j-1) * 2.0 B(j) = A(j) + C(j)
DATA DEPENDENCY Data dependency terjadi bila dlm komputasinya bbrp proses/sub- proses (threads) memakai data yg sama, dng logika ketergantungan tertentu Contoh1 : pa pb DO 500 j = 1, N DO 100 j =1, N A(j) = A(j-1) * B(j) = A(j) + C(j) 500 CONTINUE CONTINUE pa dan pb dieksekusi secara paralel. Karena harga B(j) tergantung hasil perhitungan A(j) oleh pa, maka pb tidak boleh mengakses data A(j) pada saat pa sedang mengubahnya . Kalau ini dilanggar maka hasil perhitungan B(j) tidak seperti yang diharapkan. lts
42
Harga y tergantung pada harga x .
Contoh2 : pc pd x = x = 4 y = x** y = x **3 Harga y tergantung pada harga x . Untuk mencegah kesalahan perhitungan akibat adanya data- dependency, maka akses ke data berbagi harus disinkronkan melalui mekanisme sinkronisasi. lts
43
p1 p2 data a Shared Memory SINKRONISASI Mutual exclusion (locks)
Menjamin operasi operasi pada data berbagi hanya dapat dilakukan oleh satu proses pada setiap waktu. p1 p2 reader() { } membaca data a writer() { } mengubah data a data a critical section Shared Memory lts
44
Apa yang terjadi Bila p1 membaca data a (dari memory) pada saat t1 ?
baca a (dari memory) ubah a (di prosesor) simpan a (ke memory) p2: t p1: t1 t2 t3 Apa yang terjadi Bila p1 membaca data a (dari memory) pada saat t1 ? t2 ? t3 ? p1 akan membaca data lama p1 akan membaca data yang sudah diubah oleh p2. Untuk menjamin agar p1 mendapatkan data a yang sudah diperbaharui maka akses data dalam critical section harus bersifat mutual exclusive lts
45
Critical section adalah bagian didalam program dimana terdapat
akses ke data berbagi. Mutual exclusive : Karena data berbagi (shared atau mutual) tidak boleh diakses oleh sebuah proses ketika data tersebut sedang diubah oleh proses lain, maka akses data berbagi tersebut harus dikerjakan secara exclusive. Untuk menjamin mutual-exclusion , maka critical section harus dibingkai oleh instruksi LOCK dibagian awal dan instruksi UNLOCK dibagian akhir. Eksekusi instruksi LOCK oleh prosesor, diawal critical section, akan mendisable (secara hardware) akses prosesor prosesor lain ke shared memory. Sebaliknya, eksekusi instruksi UNLOCK diakhir critical section akan meng enable kembali akses prosesor-prosesor lain ke shared memory. lts
46
T1 T2 a Shared Memory reader() { writer() - - - - - - - - - - {
lock(DISK); unlock(DISK); } writer() { lock(DISK); unlock(DISK); } a critical section Shared Memory lts
47
Sinyal kendali disable/enable akan men-disable atau meng-enable
P P P cache cache cache Network M global, shared memory Sinyal kendali disable/enable akan men-disable atau meng-enable untai pembacaan/penulisan memory pada prosesor prosesor lain. lts
48
Deadlocks Deadlock adalah kondisi ketika dua atau beberapa proses/threads saling menunggu resources yang sedang digunakan oleh proses lainnya p1 p2 lock( M1 ); lock( M2 ); lock( M2 ); lock( M1 ); p1 menunggu resource (modul pengingat M2) yang sedang di-lock oleh p2 dan pada saat yang sama p2 menunggu resource (M1) yang sedang di-lock oleh p1 (saling tunggu !) Contoh : Dua proses yang diprogram untuk saling membaca (receive) dan saling mengirim (send) data antar proses. lts
49
Apakah komputasi ybs perlu diparalelkan eksekusinya ?
Pemrograman Paralel Apakah komputasi ybs perlu diparalelkan eksekusinya ? Bagaimana mendekomposisi komputasi tsb untuk mengeksploitasi keparalelannya ? Arsitektur apa yang harus digunakan ? Resources paralel apa yang ada (dalam arsitektur tsb) ? lts
50
Pemrograman Paralel Algoritma komputasi Algoritma sekuensial
Algoritma paralel Source Code Sekuensial Source Code Paralel Kompiler Pemaralel Kompiler Paralel Kompiler sekuensial Object Code Paralel Object Code Paralel Object Code Sekuensial Komputer sekuensial Komputer paralel lts
51
Dua pendekatan dalam Pemrograman Paralel
Pemaralelan Implisit Kompiler Pemaralel Source code ditulis dengan statement2 sekuensial (C,Pascal,..) Object code Paralel Pemaralelan Eksplisit Kompiler paralel Source code ditulis dengan stetement2 paralel (C,Pascal,..) Object code Paralel lts
52
komputasi paralel pemetaan komputasi sekuensial tasks proses P1 P2 PN
dekom- posisi assign- ment orkes- trasi p1 p2 p1 p2 p3 p4 p3 p4 komputasi paralel pemetaan komputasi sekuensial tasks proses P1 P2 PN network pi : proses i Pj : prosesor j lts
53
OS Kernel Multi-threaded OS Aplikasi B Aplikasi A Aplikasi C pBj pAi
Application Aplikasi A Application Aplikasi C Application pBj pAi pCk OS Kernel Multi-threaded OS Mendekomposisi aplikasi menjadi proses proses (dan threads) Menjadwalkan ekse- kusi proses (threads). CPU lts CPU CPU
54
printing thread editting thread lts
55
Independent Threads printing() { - - - - - - - - - - - - } editing()
main() id1 = thread_create(printing); id2 = thread_create(editing); thread_run(id1, id2); lts
56
Cooperative Parallel Synchronized Threads
cooperative thread - filecopy reader() { lock(buff[i]); read(src,buff[i]); unlock(buff[i]); } writer() { lock(buff[i]); write(src,buff[i]); unlock(buff[i]); } buff[0] buff[1] Cooperative Parallel Synchronized Threads lts
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.