ARSITEKTUR PARALEL lts
Serial Vs. Paralel COUNTER 2 COUNTER COUNTER 1 Q Please lts
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
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
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 + /
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
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
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
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
(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
arsitektur dengan multiple functional units FU RegFile Memory ICache HUF DCT CPU lts
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
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
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
Superscalar: PowerPC 604 and Pentium Pro Multiple FU lts
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
Keparalelan pada sistem komputer berprosesor banyak (multiprosesor) ProsesorN Jaringan interkoneksi Memory I/O sistem komputer multiprosesor lts
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
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
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
Multi-Processing, Multi-Threaded Aplikasi 1 Aplikasi 2 Aplikasi 3 CPU CPU CPU Aplikasi i CPU CPU CPU lts Untuk aplikasi yang dapat diparalelkan
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
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
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
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
(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
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
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
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
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
Data Streams Instruction Streams MISD SISD MIMD SIMD 1 Many Data Streams Instruction Streams lts
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
(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
Instruksi Vektor dasar Opcode Operands Operasi VADD.VV V1,V2,V3 V1 = V2 + V3 vector + vector VADD.SV V1,R0,V2 V1 = R0 + V2 scalar + vector VMUL.VV V1,V2,V3 V1 = V2 x V3 vector x vector VMUL.SV V1,R0,V2 V1 = R0 x V2 scalar x vector VLD V1,R1 V1 = M[ R1...R 1 + 63] load, stride=1 VLDS V1,R1,R2 V1 = M[ R1...R1 + 63 * R2] load, stride=R2 VLDX V1,R1,V2 V1 = M[R1 + V2i , i = 0...63] indexed VST V1,R1 M[ R1...R1 + 63] = V1 store, stride=1 VSTS V1,R1,R2 V1 = M[R1..R1 + 63 * R2] store, stride=R2 VSTX V1,R1,V2 V1 = M[R1 + V2i , i = 0..63] indexed lts
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
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
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
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
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
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
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) * 2.0 B(j) = A(j) + C(j) 500 CONTINUE 100 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
Harga y tergantung pada harga x . Contoh2 : pc pd x = 2 x = 4 y = x**2 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
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
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
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
T1 T2 a Shared Memory reader() { writer() - - - - - - - - - - { lock(DISK); ........... unlock(DISK); } writer() { - - - - - - - - - - lock(DISK); .............. unlock(DISK); } a critical section Shared Memory lts
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
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
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
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
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
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
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
printing thread editting thread lts
Independent Threads printing() { - - - - - - - - - - - - } editing() main() id1 = thread_create(printing); id2 = thread_create(editing); thread_run(id1, id2); lts
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