TÍNH TOÁN SONG SONG

LÊ HUY TH PẬ

GIÁO TRÌNH

1. 1. T ng quan

ộ ề

ỏ ơ ờ

ế ượ

ể ự ệ

ế

ộ ử

M t công vi c, m t v n đ nào đó hay m t bài toán ộ ấ ề , đô nào đó,… (nh xây d ng m t công trình nhà ộ ự ư th , c u c ng, may m c, gi i m t bài toán,… ) n u ị ầ ế ả ặ c phân chia thành các v n đ nh h n, các v n đ ượ ấ ấ đ nh này n u có th th c hi n đ ng th i, thì ta nói ỏ ề ệ c th c hi n song song. Sau khi t v n đ đó đ t c ấ ả ề ấ ự c th c hi n xong, các k t qu các v n đ con đ ả ế ệ ề ấ ượ i đ có k t qu chung c k t n i l c a chúng s đ ẽ ượ ế ố ạ ể ủ i quy t. Ch ng h n vi c đào cho c v n đ c n gi ạ ế ả ề ầ ả ấ móng công trình và chu n b s t làm móng có th ể ị ắ làm đ ng th i. Sau khi hai c hai ph n vi c này xong, chúng ta có th đ móng cho công trình. Ho c khi ể ổ ơ n ph n t , chúng ta có th phân c ng hai véc t ử ộ nhóm các ph n t và chia cho các b x lý cùng th c ầ ử hi n phép c ng,…

Tính toán song song là s phát tri n c a tính toán tu n t

ầ ự

ự ấ

ự ệ

ị ầ

ườ

, ể tính toán song song r t ph c t p, các s ki n liên quan ứ ạ i cùng th i đi m, cùng trong ph m vi v i nhau x y ra t ể ờ ạ ớ m t chu i hành đ ng. Ch ng h n: ạ ỗ ộ ộ • H hô h p và h tu n hoàn c a các loài đ ng v t ệ ầ ấ ệ ủ • Vi c hình thành dãy Ngân Hà ệ • V n đ ng c a hành tinh ộ ậ • Đ i d t ng và th i ti ờ ế ạ ươ • Trôi d t, tích t và ki n t o đ a t ng. ế ạ ụ ạ • Giao thông gi cao đi m ể ờ • Tuy n đ ng Ô tô trong thành ph ế • Xây d ng các tuy n giao thông trong thành ph ố ự

ế

, ch

ng trình

ầ ự

1.1.1. Tính toán tu n t tu n t

ươ và song song

ầ ự

Tính toán tu n tầ ự M t v n đ đ

ề ượ

ờ ạ

mà chúng xu t

c chia thành m t dãy r i r c các ch th ị ộ ấ mà máy tính có th hi u đ th c hi n. ệ ể ể Máy tính th c hi n các ch th theo th t ứ ự

ộ ể ự ị

c th c hi n t

ị ượ

Ch có duy nh t m t ch th đ ấ

ệ ạ

i m t th i ờ

Ch

ế

c g i là ch

ng

t trên m t ngôn ng nào đó đ ể ọ

ộ đ ầ ự ượ

ươ

.

hi n. ệ ỉ đi m.ể ng trình tu n t ươ ầ ự Ch c vi ng trình đ ượ ươ th hi n vi c tính toán tu n t ệ ể ệ trình tu n t ầ ự

Máy tính tu n tầ ự

ầ ự

ộ ỉ ộ

ự ỉ

ỉ ỉ

Lo i máy tính th c hi n các l nh m t ự và t cách tu n t i m i th i đi m ch m t ể ỗ ạ c th c hi n – máy tính ch th duy nh t đ ấ ượ ị ch có m t CPU. Vì ch có m t CPU nên ộ còn g i là máy tính đ n nguyên. ơ

MINH H A TÍNH TOÁN TU N T

Ầ Ự

Bài toán c n gi

i ả

Các câu l nh s

sn

si

..

CPU

s3

s2

s1

Hình 1-1. Cách gi ả ề ủ ầ

i quy t v n ế ấ đ c a máy tính tu n .ự t

Ví d 1-1ụ

ng trình có tên HELLO.CPP (trong C++) đ đ a

Vi

ươ

ể ư ng trình tu n ầ

ươ

. Ch

t ch ế dòng “Hello World !” ra màn hình là ch t ự

ươ

cout << "Hello World ! \n " , return 0 ;

ng trình cho:

ươ

ng trình có d ng sau đây: ạ t1 : #include t2 : int main ( ) t3: { t4 : t5 : t6: } K t qu th c hi n ch ả ự ế Hello World !

ng trình đ

c th c hi n

ươ

l nh t1 đ n l nh t2, …, cho đ n l nh cu i cùng

ượ ế ệ

ủ ế ệ

Rõ ràng là các l nh c a ch t th t ứ ự ừ ệ là l nh t6. ệ

ế

ồ ộ ấ

ờ ề

ệ ố

ề ầ

ượ

Tính toán song song Tính toán song song là quá trình tính toán g m nhi u ề i ti n trình đ ng th i và cùng tham gia tính toán gi ả ế quy t m t v n đ , và nói chung ph i th c hi n trên các h th ng đa b x lí ộ ử . M t v n đ c n tính toán đ c phân ho ch thành các ạ ộ ấ ph n tính toán r i r c, các ph n này đ c tính toán ượ ờ ạ ầ song song v i nhau.

Các ch thi c a t ng ph n th c hi n đ ng th i trên

ớ ủ ừ

các CPU khác nhau.

ơ

ượ

Quan ni m đ n gi n nh t, tính toán song song là s ả ử c k t n i l d ng đ ng th i nhi u máy tính đ i ố ạ ế ho c trên m t máy tính có nhi u h n hai b x lý. ộ ử ơ

MINH H A TÍNH TOÁN SONG SONG

CPU

CPU

CPU

CPU

ự ệ ầ

Hình 1-2. Cách th c hi n các ph n song song trên máy tính song song

NH N XÉT

Đ tính toán song song chúng ta c n m t trong nh ng tài

ư

• Ho c m t máy tính nh ng có nhi u b x lý, • Ho c m t s tùy ý các máy tính đ ế

c k t n i thành ố

ộ ử ượ

ộ ộ

ể nguyên: ặ ặ m ng.ạ • Ho c t Các công vi c có th tính toán song song có các tính ch t

h p c hai lo i trên. ể

ặ ổ ợ ệ

sau: ể

Có th chia thành các ph n r i r c, các ph n đó có th ể

ờ ạ

th c hi n đ ng th i;

ệ ể ự

• Có th th c hi n nhi u câu l nh t i cùng m t th i đi m; ệ • Hi u năng-theo nghĩa s d ng ít th i gian (hay ti n b c) ờ

ử ụ

ể ạ

ờ ề

h n tính toán tu n t

ầ ự

trên máy đ n nguyên. ơ

ệ ơ

Ch

ng trình song song

ươ

ươ

ng trình đ ượ ể ể ượ

c vi ự ọ

ươ

t trên m t ngôn ng Ch ộ ữ ế nào đó đ th th c hi n vi c tính toán ệ ệ song song đ ng trình song c g i là ch song.

Ví d 1-2ụ

ơ C = A + B

trên máy tính đ n nguyên có

ơ

mã)

: Tính t ng hai véc t ổ ng trình tu n t Ch ầ ự ả

ươ th nh sau (gi ư ể for(i = 0 ; i < n; i++)

{ C[i] = A[i] + B[i]; }

ộ ử

c a hai m ng

ạ N ph n ầ A và B thành p ph n, b x lý ộ ử

Máy tính có p b x lý. Hãy phân ho ch t ử ủ th ứ k nh n ậ nk ph n tầ ử.

… p B x lý ộ ử

Các ch s ph n t ỉ ố ầ ử m ng ả

… n2-1 … np-1

… np-1

1 0 … n1-1 2 n1

A

Các ch s ph n t ỉ ố ầ ử m ng ả 0 … n1-1 n1

… n2-1 … np-1

… np-1

B

m ng Các ch s ph n t ỉ ố ầ ử ả 0 … n1-1 n1

… n2-1 … np-1

… np-1

for (j = nk -1 ; j < (nk -1) ; j++) { C(j) = A[j] + B[j] } Trong đó k = 1, 2,3, …và n0 = 0

C

M c đích c a tính toán song song ủ 1. Nâng cao hi u năng tính toán ệ 2. Mô hình hóa các v n đ khoa h c k thu t r t ph c

ậ ấ

ế ớ

i th c.… ự

ng ạ

ụ ng t

ọ ử

t k m ch, Vi đi n t

ế ế ạ

ệ ử

t p trong th gi ạ Ch ng h n: ạ ẳ • Khí quy n, Trái đ t, Môi tr ườ ể • V t lý ng d ng, H t nhân, H t, Áp su t cao, S nóng ạ ứ ậ ánh sáng ch y, L ượ ả • Sinh h c, Công ngh sinh h c, Di truy n h c ệ ọ • Hóa h c, Khoa h c phân t ọ ọ • Đ a ch t, Đ a ch n h c ấ ị ấ • Công ngh vũ tr ụ ệ • K thu t đi n, Thi ậ • Khoa h c máy tính, Toán h c ọ ọ • …..

ử ụ

t ki m th i gian và / ho c tài chính

1.1.2. T i sao s d ng tính toán song song Ti ệ ế

ề ượ

ệ ệ

c xây d ng v i giá

ể ượ

Khi chi phí nhi u tài nguyên cho m t công vi c nào đó ộ c th i gian hoàn thành công vi c đó, và s rút ng n đ ẽ t ki m các chi phí ti m năng. ti ệ ế Ph n c ng song song có th đ ầ thành th p và d mua. ễ

ứ ấ

ề ớ

ơ

ấ ớ

i quy t đ c các v n đ l n h n, ph c t p h n Gi ơ ế ượ • Nhi u v n đ quá l n, quá ph c t p đ n n i nó ứ ạ ề ấ i quy t ế ả ả ự ế t là b nh máy ớ ệ

i b h n ch . Ch ng h n các v n đ :

ứ ạ ế ho c không có kh năng gi ặ ạ

ạ ị ạ

ơ ẳ

• D báo th i ti

không th c t chúng trên máy tính đ n, đ c bi tính l ế t, bão, đ ng đ t, sóng th n, mô ự

ờ ế hình sinh thái, …

ể ử

ệ ế

• Máy dò tìm web/CSDL đ x lý hàng tri u tri u giao d ch trên m t giây (công c tìm ki m ộ web/CSDL x lý hàng tri u giao d ch/giây) ệ

• …..

• Cung c p tính đ ng th i

ồ ộ ệ

ỉ ể ể ự

ờ Tài nguyên c a m t máy tính đ n nguyên ch có ủ ơ i m t th i đi m. kh năng th c hi n m t l nh t ự ờ ạ ộ ệ Tài nguyên c a máy tính đa b x lý có th th c ộ ử ủ hi n nhi u l nh đ ng th i. ờ

ề ệ

ụ ộ

ế

ệ • S d ng tài nguyên phi c c b ử ụ S d ng tài nguyên tính toán trên m t m ng ử ụ di n r ng, ho c th m chí Internet khi tài nguyên ệ ộ t i n i tính toán tài nguyên đang khan hi m, ơ ạ không đ . ủ

Nh ng h n ch khi tính toán tu n t

ầ ự

ế

• ộ ộ ố ề

ộ ữ ệ ố ộ ủ ph thu c tr c ự ộ ụ i h n t c đ tuy t Gi ớ ạ ố ệ ủ ề ầ ạ

• - làm m t b x lý đ n càng nhanh thì ộ ộ ử ế ề ế ơ

T c đ truy n - t c đ c a m t máy tính tu n t ầ ự ộ ủ ố ti p vào t c đ chuy n d li u qua ph n c ng. ( ứ ế ể đ i là t c đ c a ánh sáng (30 cm/nanosecond) và h n ch s lan truy n (băng thông) c a ế ự ố dây đ ng (9 cm/nanosecond)) Các h n ch v kinh t ạ càng đ t ti n. ắ ề ……..

• • Các ki n trúc máy tính hi n t ế

i đang ngày càng d a vào kh ả ệ ự ấ ể ả ệ ầ

ng ng (Pipelined instructions) ị ử ườ ố

ệ ạ năng song song hóa ph n c ng đ c i thi n hi u su t nh : ư ứ Có nhi u đ n v x lí ơ ề Dùng các l nh đ ệ Đa nhân (Multi-core)

• • • •

u - Nh

c đi m c b n c a v n đ

Ư

ượ

ủ ấ

ơ ả ể song song

u đi m:

ể ể ế

ơ

ệ ề

ơ

ể c đi m:

ượ

ệ ố

Ư • Có th k t thúc công vi c s m h n, • Chi phí có th ít h n nhi u, ể • ... • Nh • Tăng tính ph c t p cho h th ng. ứ ạ • Tăng chi phí cho nhân l c vì ph i tăng nhân l c ả ự

t b .

ế ị

ặ ệ ố

• Tăng chi phí mua các thi • Tăng chi phí l p đ t h th ng. ắ • …..

1.3. Ki n trúc máy tính và thu t ng

ế

1.3.1. Ki n trúc máy tính đ n nguyên-Tu n t

ế

ơ

ầ ự Ki n trúc máy tính Von Neumann

ế

1. Memory - B nhộ 2. Control Unit – B đi u ớ ộ ề

khi nể

3. Arithmetic Logic Unit – B logic và s ố h cọ

4. Input/Output – Các t b vào ra thi ế ị

ơ ồ ủ

S đ c a máy tính đ n nguyên, có th th ể ể ơ hi n nh hình 1.6 ư

B nh chính ớ

ộ RAM

ROM

Đ ng h ồ h ệ th ngố

CPU

Bus h th ng

ệ ố

Ngu n ồ nuôi

Ghép n i ố ra

Ghép n i ố vào

Thi

t b vào:

H đi u ệ ề hành

ế ị Bàn phím, Chu t,ộ Scanner, đĩa,…Ổ

Thi t b ra: ế ị Màn hình, Máy in, Máy v ,ẽ đĩa,…Ổ

Hình 1.6. S đ ch c năng c a máy vi tính

Thi ế ị ơ ồ ứ

t b ngo i vi ủ

1.3.2. Máy tính song song và cách phân lo i ạ

ặ ế ẽ ế

ầ ậ ề ệ ố ế ữ ậ

ợ ồ

ồ ấ ạ ế ố ớ ộ

ổ ữ ệ ế ắ ớ

ạ ộ ữ

Máy tính song song • Tính toán song song liên quan ch t ch đ n ki n trúc máy tính, đ n ph n m m h th ng, thu t toán và c ngôn ng l p trình, v,v… ả • Máy tính song song bao g m m t t p h p các b x lý, nói chung ộ ử ộ ậ c k t n i v i nhau theo m t ki n là cùng lo i (đ ng nh t) chúng đ ượ trúc nào đó cùng v i các nghi th c trao đ i d li u và các quy t c ứ ho t đ ng gi a các b x lý này. • Các h đi u hành hi n nay đ u đ ề ộ ử ệ ỗ ợ ượ ệ

ươ ề ấ

ậ ộ ậ ể ế

ạ ộ ượ ự ế ệ

c h tr đa đa nhi m nên có ng pháp l p trình song song trên đó. V n đ là làm i ả c th c hi n trên các b ộ i ả ả ử ả

c. ệ ề th dùng ph th nào đ các b x lý đ c l p cùng ho t đ ng, cùng tham gia gi quy t m t v n đ , t c là các ti n trình đ ế x lý m t cách đ ng b , ph i trao đ i v i nhau, và ph i cùng gi ộ ổ ớ quy t m t v n đ cho tr ướ ể ộ ấ ộ ộ ấ ộ ử ề ứ ồ ề ế

Phân lo i máy tính song song - Ki u phân lo i kinh đi n c a Flynn ể ủ

ế

ạ ộ ử

ơ

Phân lo i ki n trúc máy tính song song (hay đa b x lý) c a Flynn là d a vào ủ cách th c mà máy đó t i các các dòng ch ỉ ả th và các lu ng d li u. M i m t trong ữ ệ các cách đó là ch ra tr ng thái đ n hay đa ạ ch th ho c /và d li u .

ỉ ữ ệ

B n cách phân lo i theo Flynn đ

c

ượ

ị ố

ạ t trên hình 1.7:

trình bày tóm t

S I S D Single Instruction, Single Data

S I M D Single Instruction, Multiple Data

M I S D Multiple Instruction, Single Data

M I M D Multiple Instruction, Multiple Data

Hình 1.7. B n lo i máy tính song song theo Flynn

1. Cách phân lo i th nh t SISD (Single Instruction, Single

Data). Dùng cho máy tính đ n nguyên tu n t

ầ ự

ơ

• Đ n ch th : ỉ ỉ ờ ỗ

ị ộ ơ ỉ ộ c x lý b i ở

ử ồ ỉ ộ

Ch ng h n, chu kỳ đ ng h th nh t ồ ồ ứ ồ

ị m i th i đi m ch dùng m t ể ch có m t ch th đang đ ượ CPU trong m t chu kỳ đ ng h nào đó. ồ ấ load, ồ ứ ẳ chu kỳ đ ng h th hai load, … , chu kỳ đ ng h cu i ồ ố cùng Store ồ

ộ ữ ệ

ơ ượ ỉ ư ầ ộ

ạ Hình 1.8. Đ n ch th , ị ơ ỉ đ n lu ng d li u ữ ệ ồ ơ

ứ ồ ồ ồ

Đ n lu ng d li u: ữ ệ ch có m t d li u đang ồ c s d ng nh đ u vào trong m t chu đ ử ụ kỳ đ ng h nào đó. Ch ng h n , hình 1.8, ẳ ồ ồ chu kỳ đ ng h th nh t A, chu kỳ đ ng ấ h th hai B, … , chu kỳ đ ng h cu i A ồ ứ ồ ố ồ

ượ

ế

Nh n xét: ậ •Th c hi n theo ti n đ nh, nghĩa là công vi c đ c ho ch đ nh rõ ệ ị ự ràng khi l p trình (tĩnh), trong qúa trình th c thi các câu l nh và d ữ ậ li u không b thay đ i. ị •Đây là lo i máy tính lâu đ i nh t và th m chí cho đ n ngày nay ấ v n là lo i máy tính ph bi n nh t ấ

ờ ổ ế

2. Cách phân lo i th hai: SIMD ạ

C U

Contol Signal

P1

P2

Pn

Hình 1-9. Ki n trúc ki n trúc SIMD

ế

ế

• Đ n ch th : Các b v x lý p1, p2, …, pn cùng th c thi m t ch th ị

load, chu kỳ

ộ ị ử ồ ộ ử

ấ n b x lý này cùng có m t ch th là

ỉ n b x lý cùng có m t ch th là

load, … , chu kỳ

ộ ử

ộ ỉ

ộ ử

• Đa lu ng d li u: M i b x lý có th ho t đ ng trên m t ph n t

ơ ị t i cùng m t chu kỳ đ ng h đã cho. Ch ng h n, hình 1.8, chu kỳ ạ ộ đ ng h th nh t, ồ ứ ồ đ ng h th hai, ồ ứ ồ ị ồ ứ n b x lý cùng có m t ch th là đ ng h th 4, ồ ữ ệ

ị ỉ ạ ộ

ỗ ộ ử

ộ ể

Store,… ộ ữ ệ

ầ ử d li u khác v i d li u c a b x lý khác - có nhi u d li u đang ộ ử c s d ng nh đ u vào trong m t chu kỳ đ ng h nào đó. đ

ồ ữ ệ ượ ử ụ

ớ ữ ệ ư ầ

Hình minh h a cách truy c p SIMD

ồ ứ

ậ A(1), A(2), …,

ậ B(1), B(2), …, B(n) ;

Ch ng h n, chu kỳ đ ng h th nh t nh p ồ A(n); chu kỳ đ ng h th hai nh p ồ ứ … , chu kỳ đ ng h th 3 là tính

C(1), C(2), …, C(n); …

ồ ứ

Nh n xét ậ

ượ

ợ ặ

ề ồ

• Lo i máy tính này r t phù h p cho các c đ c tr ng b i v n đ chuyên ngành đ ở ư m c đ ng b cao, ch ng h n nh x lý ư ử ẳ ộ đ h a ho c hình nh,….

ấ ứ ồ ọ ồ

ả • Đ ng b và th c hi n ti n đ nh. ị ệ ự • Hai ki n trúc b x lý hay đ c s d ng ử ụ ượ ộ ử ng h p này là: B x lý ộ ử ườ ơ

ấ ả

ườ

ế nh t trong tr ng ng vect m ng và x lý ki u đ ể ử (Processor Arrays and Vector Pipelines)

3. Cách phân lo i th ba: MISD ạ

ứ Instruction Stream1

CU

PE1

Instruction Stream2

CU

PE2

Data Stream

. . .

. . .

CU

Instruction Streamn

PEn

Hình 1-11. Ki n trúc ki n trúc MISD

ế

ế

ấ ượ ư ơ ị

ộ ỗ ơ c đ a vào các đ n v đa x lý. ộ ử ộ ậ ữ ệ

qua các lu ng ch th đ c l p khác nhau • M t dòng d li u duy nh t đ ữ ệ • M i đ n v x lý ho t đ ng trên các d li u m t cách đ c l p thông ị ử ồ ạ ộ ị ộ ậ ỉ

4. Cách phân lo i th t

: MIMD

ứ ư

Hi n nay, các lo i ph bi n nh t c a máy tính song song hi n đ i ấ ủ ệ ạ ạ

ệ ổ ế đ u thu c vào lo i này. ộ ạ

ề Đa ch th : ỉ

ị ỗ ộ ử ể ượ ộ ớ ệ ỉ ị

M i b x lý có th đ các dòng ch th c a các b x lý khác. c th c hi n m t dòng ch th khác v i ự ộ ử ị ủ ỉ

Đa d li u: ữ ệ ỗ ộ ử ữ ệ ớ ể

c đ ng b ho c không ệ ộ ử ỉ ộ ồ ệ ặ ị

M i b x lý có th làm vi c v i m t dòng d li u khác v i các ộ ớ dòng d li u c a các b x lý khác. Vi c th c hi n các ch th có th đ ể ượ đ ng b , ti n đ nh ho c không ti n đ nh. ị ữ ệ ự ộ ề ủ ệ ị ồ ề ặ

ư

L u ý: • Ki n trúc MIMD cũng có th bao g m các SIMD th c hi n các ế ự ồ ể ệ

thành ph n con.

ầ • Ki n trúc MIMD còn đ ế ỗ ộ ử

có th th c hi n b i lu ng l nh và lu ng d li u riêng c g i là máy đa b x lý, m i b x lý ộ ử ữ ệ ượ ồ ể ự ọ ệ ồ ở ệ

ộ ề

ộ ầ ớ

• MIMD có b nh chung, các b x lý c a MIMD đ u có b nh ớ ớ ủ ộ ử c phép truy c p vào b nh chung khi c n, do ộ ậ ượ c các thao tác trao đ i gi a các b x lý trong h ệ ữ ộ ử ổ

riêng, nh ng đ ư v y gi m đ ượ ả th ng, xem hình 1-12. ậ ố

Instruction Stream1

Data Stream1

CU

PE1

CU

Instruction Stream2

PE2

Data Stream2

. . .

. . .

CU

Instruction Streamn

PEn

Data Streamn

Hình 1-12. Ki n trúc ki n trúc MIMD

ế

ế

1.3.3. Phân nhóm ki n trúc MT song song ế

MIMD

Multiprocesor Multicomputer Data Flow Machine Array vector processor SIMD

Pipelined procssor Pipelined vector processor MISD

Systolic Array SIMD - MIMD Hybrid

MIMD - SIMD

ế

ẽ ạ

ử ể ậ

ế

ộ ự

ể ự

ố ớ ạ

ấ ả

ươ

Chú ý Các ki n trúc khác nhau s t o ra các kh năng x lý song song khác nhau. Trong ki n trúc máy tu n t cũng có th t n d ng ầ ự t c đ c c nhanh c a các CPU đ th c hi n song song theo nguyên ệ ố lý Shared time ho c Shared Resource. T t nhiên đ i v i các ki n trúc ế ng trình song song thì m c đích hàng đ u là kh năng ch y các ch ụ song song trên đó.