Tải bản đầy đủ (.pdf) (138 trang)

Luận văn: Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.99 MB, 138 trang )









TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
B MÔN CÔNG NGH PHN MM


HUNH BÁ THANH TÙNG - 0112079
TRN VIT CNG - 0112339


NGHIÊN CU TÍNH TOÁN LI VÀ
TH NGHIM MT S THUT TOÁN
LÝ THUYT  TH



KHÓA LUN C NHÂN TIN HC



GIÁO VIÊN HNG DN
TS. TRN AN TH
Th.S NGUYN THANH SN


NI ÊN KHÓA 2001-2005








NHN XÉT CA GIÁO VIÊN HNG DN








































NHN XÉT CA GIÁO VIÊN PHN BIN








































LI CM N

Chúng em xin bày t lòng bit n chân thành nht đn thy Trn an
Th và thy Nguyn Thanh Sn, hai thy đã tn tâm hng dn, giúp đ chúng
em trong sut thi gian thc hin lun vn này.
Chúng con xin gi tt c lòng bit n sâu sc và s kính trng đn ông
bà, cha m, cùng toàn th gia đình, nhng ngi đã nuôi dy chúng con trng
thành đn ngày hôm nay.
Chúng em cng xin chân thành cám n quý Thy cô trong Khoa Công
ngh thông tin, trng i hc Khoa hc T nhiên Tp.H Chí Minh đã tn tình
ging dy, hng dn, giúp đ và to điu kin cho chúng em thc hin tt
lun vn này.
Xin chân thành cám n s giúp đ, đng viên và ch bo rt nhit tình
ca các anh ch và tt c các bn, nhng ngi đã giúp chúng tôi có đ ngh lc
và ý chí đ hoàn thành lun vn này.
Mc dù đã c gng ht sc, song chc chn lun vn không khi nhng
thiu sót. Chúng em rt mong nhn đc s thông cm và ch bo tn tình ca
quý Thy Cô và các bn.

TP.HCM, 7/2005
Nhóm sinh viên thc hin
Hunh Bá Thanh Tùng - Trn Vit Cng











LI NÓI U
Nhân lai ngày nay đang chng kin s phát trin mnh m ca ngành
Công ngh Thông tin, mt trong nhng ngành mi nhn ca nhiu quc gia
trên th gii. S phát trin vt bc ca nó là kt qu tt yu ca s phát trin
kèm theo các thit b phn cng cng nh phn mm tin ích.
S phát trin đó đã kéo theo rt nhiu các ngành khác phát trin theo,
trong đó có lnh vc nghiên cu khoa hc. Tuy công ngh ngày càng phát trin,
tc đ x lý ca các thit b cng không ngng tng cao, nhng nhu cu tính
toán ca con ngi vn còn rt ln. Cho đn hin nay vn còn rt nhiu vn đ
mà các nhà khoa hc cùng vi kh nng tính toán ca các máy tính hin nay
vn cha gii quyt đc hay gii quyt đc nhng vi thi gian rt ln.
Các vn đ đó có th là :
• Mô hình hóa và gi lp
• X lý thao tác trên các d liu rt ln
• Các vn đ “grand challenge” (là các vn đ không th gii quyt
trong thi gian hp lý)
Li gii cho nhng vn đ này đã dn đn s ra đi ca các th h siêu
máy tính. Tuy nhiên vic đu t phát trin cho các thit b này gn nh là điu
quá khó kh
n đi vi nhiu ngi, t chc, trng hc…. Chính vì l đó mà
ngày nay ngi ta đang tp trung nghiên cu cách cách s dng các tài nguyên
phân b mt cách hp lý đ tn dng đc kh nng tính toán ca các máy tính
đn. Nhng gii pháp này đc bit đn vi nhiu tên gi khác nhau nh meta-
computing, salable-computing, global- computing, internet computing và gn
nht hin nay là peer to peer computing hay Grid computing.
ây là phng pháp nhm tn dng kh nng ca các máy tính trên toàn
mng thành mt máy tính “o” duy nht, nhm hp nht tài nguyên tính toán 
nhiu ni trên th gii đ to ra mt kh nng tính toán khng l, góp phn gii










quyt các vn đ khó khn trong khoa hc và công ngh. Ngày nay nó đang
càng đc s h tr mnh hn ca các thit b phn cng, bng thông…
Grid Computing có kh nng chia s, chn la, và thu gom mt s lng
ln nhng tài nguyên khác nhau bao gm nhng siêu máy tính, các h thng
lu tr, cùng vi nhng ngun d liu, các thit b đt bit… Nhng tài nguyên
này đc phân b  các vùng đa lý khác nhau và thuc v các t chc khác
nhau.

Nhn thy đc nhu cu phát trin y, nhóm chúng em đã quyt đnh
chn thc hin đ tài “Nghiên cu tính toán li và thc nghim trên mt
s thut toán lý thuyt đ th”
Mc tiêu ca đ tài đ ra là tìm hiu v tính toán li, và qua đó tn
dng các kin thc có đc đ có th cài đt mt s thut toán lý thuyt đ th,
nhm có th gii quyt các vn đ tìm đng đi khi s đnh tng đi ln…
Các ni dung chính:
• Nghiên cu tính toán li










• Tìm hiu các môi trng h tr
• Tìm hiu lp trinh song song và phân tán
• Cài đt mt s thut toán vi kin thc có đc
Ni dung ca lun vn đc chia làm 6 chng :
Chng 1. Gii thiu : Gii thiu tng quan v tính toán li, khái
nim lch s phát trin.
Chng 2. Tính toán song song và phân b : Trình bày v các kin
trúc, mô hình x lý song song và phân b, cách thc xây dng chng trình,
thit k thut toán…
Chng 3. Các môi trng h tr tính toán li : Tìm hiu v các
môi trng đang đc s dng và nghiên cu hin nay trên th gii.
Chng 4. Mô hình lp trình truyn thông đip - MPI : Mô hình c
th đc dùng đ phát trin ng dng MPI.
Chng 5. Th nghim các thut toán lý thuyt đ th : Cách thc
xây dng chng trình , các khái nim lý thuyt, thc nghim thc t …
Chng 6. Tng kt : Nêu các kt qu đã đt đc, mt s vn đ còn
tn ti, đnh hng mc tiêu m rng phát trin đ tài trong tng lai.









Mc lc
Danh sách hình 11

Chng 1. Gii thiu 13
1.1. Các khái nim 13
1.2. Nhng thách thc đi vi tính toán li 16
Chng 2. Tính toán song song và phân b 17
2.1. Khái nim 17
2.2. Nn tng tính toán song song và phân b 18
2.2.1. Kin trúc x lý song song và phân b 18
2.2.2. T chc vt lý ca các nn tng song song và phân b 25
2.3. Mt s mô hình lp trình song song thông dng 26
2.3.1. Mô hình chia s không gian b nh 26
2.3.2. Mô hình truyn thông đip 27
2.4. Cách thc xây dng mt chng trình song song và phân b 29
2.4.1. Các thut ng cn bn 29
2.4.2. Thit k thut toán song song 31
2.4.3. Mt s phng pháp ti u 43
2.4.4. Các mô hình thut toán song song 48
Chng 3. Các môi trng h tr tính toán li 52
3.1. Gii thiu 52
3.2. Các vn đ khi lp trình lui 53
3.2.1. Tính mang chuyn, tính kh thi và kh nng thích ng 53
3.2.2. Kh nng phát hin tài nguyên 54
3.2.3. Hiu nng 54
3.2.4. Dung li 55
3.2.5. Bo mt 55
3.2.6. Các siêu mô hình 55
3.3. Tng quát v các môi trng h tr 56
3.3.1. Mt s môi trng Grid 56
3.3.2. Nhng mô hình lp trình và công c h tr 59
3.3.3. Môi trng cài đt 64










3.4. Nhng k thut nâng cao h tr lp trình 75
3.4.1. Các k thut truyn thng 76
3.4.2. Các k thut hng d liu 76
3.4.3. Các k thut suy đoán và ti u 77
3.4.4. Các k thut phân tán 77
3.4.5. Nhp xut hng Grid 78
3.4.6. Các dch v giao tip cp cao 78
3.4.7. Bo mt 80
3.4.8. Dung li 80
3.4.9. Các siêu mô hình và h thng thi gian thc hng Grid 82
3.5. Tóm tt 83
Chng 4. Mô hình lp trình truyn thông đip - MPI 85

4.1. Các khái nim c bn 86
4.2. Cu trúc chng trình MPI 89
4.3. Trao đi thông tin đim-đim 90
4.3.1. Các thông tin ca thông đip 90
4.3.2. Các hình thc truyn thông 91
4.3.3. Giao tip blocking 92
4.3.4. Giao tip non-blocking 96
4.4. Trao đi thông tin tp hp 101
4.4.1. ng b hóa 101

4.4.2. Di di d liu trong nhóm 101
4.4.3. Tính toán gp 105
4.5. Các kiu d liu 109
4.5.1. Nhng kiu d liu đã đc đnh ngha 109
4.5.2. Các kiu d liu b sung 110
4.5.3. Pack và UnPack 113
Chng 5. Th nghim các thut toán lý thuyt đ th 114
5.1. Các khái nim c bn 114
5.2. Dijkstra 115
5.2.1. Tun t 115









5.2.2. Song song 119
5.2.3. Thc nghim chng trình 120
5.3. Prim 122
5.3.1. Tun t 122
5.3.2. Song song 124
5.3.3. Thc nghim chng trình 126
5.4. Bellman – Ford 128
5.4.1. Tun t 128
5.4.2. Song song 130
5.4.3. Thc nghim chng trình 132
5.5. ánh giá chung 134

Chng 6. Tng kt 136
6.1. Kt lun 136
6.2. Hng phát trin 136
Tài liu tham kho 138









Danh sách hình
Hình 1-1 : 3 tng ca Grid 15
Hình 2-1 : Phân lai h thng máy tính theo Flynn-Johnson 19
Hình 2-2 : Kin trúc SISD 19
Hình 2-3 : Kin trúc SIMD 20
Hình 2-4 : Kin trúc MISD 22
Hình 2-5 : Kin trúc MIMD 23
Hình 2-6 : Mô hình chía s không gian b nh 27
Hình 2-7 : Mô hình truyn thông đip 28
Hình 3-1 : Mô hình NetSolve 56
Hình 3-2 : Các thành phn ca Globus 59
Hình 4-1 : Các tin trình to lp trên mô hình lp trình MPI 86
Hình 4-2 : Cách thc truyn thông ca các process 87
Hình 4-3 : Blocking và non-blocking 88
Hình 4-4 : Group, communicator và rank 88
Hình 4-5 : Cu trúc ca chng trình MPI 89
Hình 4-6 : Giao tip blocking 92

Hình 4-7 : Th t các x lý 95
Hình 4-8 : Cách thc x lý tin trình 95
Hình 4-9 : Giao tip non-blocking 96
Hình 4-10 : Broadcast d liu 102
Hình 4-11 : Ví d hàm Scatter 103
Hình 4-12 : Hàm MPI_Gather 103
Hình 4-13 : Hàm MPI_Allgather 104
Hình 4-14 : Hàm MPI_Alltoall 104
Hình 4-15 : Hàm MPI_Reduce 105
Hình 4-16 : S dng 8 x lý đ tính giá tr tuyt đi 107
Hình 4-17 Hàm Mpi-Allreduce 108
Hình 4-18 : Hàm MPI_Reduce_scatter 108
Hình 4-19 : Hàm MPI_Scan 109
Hình 4-20 : MPI_Type_contiguous 110









Trang 12
Hình 4-21 : MPI_Type_vetor 111
Hình 4-22 : MPI_Type_indexed 112

Hình 4-23 : MPI_Type_struct 112
Hình 5-1. Thut toán Dijkstra tun t 118
Hình 5-2 : Thut toán Dijkstra song song 119

Hình 5-3. Thut toán Prim tun t 124
Hình 5-3 : Thut toán Prim song song 125
Hình 5-4: Thut toán Bellman-Ford tun t 130
Hình 5-5 : Thut toán Bellman-Ford song song 132









Trang 13
Chng 1. Gii thiu
1.1. Các khái nim

Trong nhng nm đu thp niên 90, nhiu nhóm nghiên cu đã bt đu
khai thác các ngun tài nguyên tính toán phân tán trên Internet. Các nhà khoa
hc đã tp trung và s dng hàng trm các máy trm đ thc hin các chng
trình song song nh thit k phân t và hin th đ ha máy tính. Trong khi đó
các nhóm nghiên cu khác đã kt hp các siêu máy tính ln li vi nhau thành
mt siêu máy tính o duy nht, ri phân phi các phn ca mt ng dng rt
ln cho các máy tính trên mt mng din rng, ví d nh máy tính gi lp các
ng dng tng tác gia cht lng và cánh qut ca chân vt tàu…Thêm vào đó
phm vi ca các d án nghiên cu này đã nêu ra tim nng thc s ca mng
máy tính, cùng vi c s phn mm và tin hc đ phát trin nó xa hn.
H thng đa b x lý (Multiprocessor Systems - MPs), Cluster, Grids là
các ví d ca kin trúc tính toán phân tán. Trong MPs, các b x lý đc kt
hp cht ch vi nhau, thông qua b nh chia s chung và đng truyn kt ni

rt cao. Ví d nh là PVPs (Parallel Vector Processors), chúng hu nh rt
thích hp cho tính toán hiu nng cao, nh là các ng dng song song da vào
trao đi thông đip tc đ cao gia các tin trình song song.









Trang 14
Trong khi đó Cluster li là các máy tính đn hay đa b x lý đc kt
hp tng đi vi nhau thông qua đng mng, vì th nó chm hn t 1 đn 2
ln so vi kt ni MP. Ví d nh cluster Beowulf chy Linux, hay TCF
(Technical Compute Farm) ca Sun chy h điu hành Solaris/TM, chúng đc
s dng cho các tính toán s lng ln, phân phi các tác v tính toán (thng
là không song song) cho các b x lý, ri thu thp li các kt qu tính toán vào
kt qu toàn cc. Các tính toán này có th là vic hin th hàng ngàn khung
hình đ làm phim hay là gi lp vic kim tra và thit k đ xây dng th h
tip theo ca chip VLSI, hay nh trong công ngh sinh hc, đó là vic ct lp
hàng trm ngàn chui gen.
Trong khi MPs và Cluster ch là các h thng đn, thng là trong mt
domain đn. Grid đin toán bao gm các cluster ca mng các MPs hay/và
cluster, nm trên nhiu domain khác nhau, phân b  nhiu phòng ban, xí
nghip hay thm chí là trên mng Internet. V bn cht, nhng grid có mt đ
phc tp cao hn, đc bit là  tng trung gian, trong vic thc thi, qun lý, và
s dng các tài nguyên tính toán phân tán, và  tng ng dng là vic thit k,
phát trin, chy các phn mm đ trin khai grid mt cách hiu qu.

Tóm li Grid là mt kin trúc tính toán phân tán cho phép chuyn giao
các tài nguyên lu tr và tính toán nh th là mt dch v trên Internet. ây là
bc phát trin tip theo v c s h tng k thut, cho phép kt ni các máy
tính phân tán, các thit b lu tr, các thit b di đng, các công c, c s d
liu, và các ng dng phn mm, và cung cp cách thc truy cp duy nht đn
cng đng ngi dùng đ cho phép tính toán, trao đi thông tin và cng tác.
Mt s h thng grid hin ti nh là NASA Information Power Grid (IPG);
DoD Distance Computing và NetSolve cho chia s và khai thác phn mm toán
hc; Nimrod cho chia s tài nguyên trên phm vi trng hc; SETI@Home cho
tìm kim trí thông minh ngòai trái đt; hay là APGrid đ kt ni các trung tâm
máy tính  vành đai Châu Á Thái Bình Dng trong tng lai gn.









Trang 15

Hình 1-1 : 3 tng ca Grid
Grid là mt c s h tng v phn cng ln phn mm cung cp truy cp
ph thuc, thích hp, rng khp và chi phí thp vào các kh nng tính toán.
Trong mt tng lai không xa, nhng grid này s đc các k s, nhà khoa
hc, khoa hc thc nghim, công ty, t chc, môi trng, giáo dc và đào to,
khách hàng, … s dng rng rãi. Chúng s đc dành riêng cho tính toán theo
yêu cu, tính toán trên thông tin nhy cm, tính toán cng tác, và siêu tính toán,
da trên c s ca khách hàng/nhà cung cp.

Ngày nay chúng ta đang thy nhng n lc đu tiên nhm khai thác mt
cách có h thng các ngun tài nguyên tính toán li trên mng Internet.
Nhng d án này đc gi là peer-to-peer computing, nh SETI@home,
Distributed.Net và Folderol, cho phép ngi dùng Internet ti v các d liu
khoa hc, chy trên các máy cá nhân theo chu trình x lý chia s, và gi li kt
qu cho c s d liu trung tâm. Gn đây có mt d án  mt trng đi hc,
đc gi là Compute Power Market, đc xây dng nên nhm phát trin các k
thut phn mm cho phép to lp nhng Grid, mà  đó bt c ai cng có th
mua hay bán kh nng kh nng tính toán ging nh cách mà ngi ta s dng
đin hin nay.









Trang 16
1.2. Nhng thách thc đi vi tính toán li
Hu ht các k thut phc tp bên di dành cho Grid hin nay đang
đc tip tc phát trin. Các môi trng Grid mu tn ti ging nh các d án
Globus và Legion.  án EcoGrid thì đang nghiên cu cách thc qun lý tài
nguyên, và các khi xây dng nh vy đang tn ti trong trình qun lý tài
nguyên mang tính thng mi ca phn mm Sun Grid Engine.
Din đàn Grid (GGF – Global Grid Forum), đc thành lp vào nm
1998, đã tp hp đc hàng trm các nhà khoa hc đ cùng nhau nghiên cu và
tho lun v mt kin trúc Grid chung. Trong đó vn còn tn ti mt s thách
thc sau:

• Phát trin phn mm ng dng cho Grid
• Ch ra và truy cp các ngun tài nguyên tính toán thích hp trên môi
trng phân tán
• nh ngha nhng giao tip chun cho phép giao tip gia các khi
Grid vi nhau, nhm đáp ng nhu cu phát trin ng dng.
• Bo
đm các truy cp đc xác nhn và truyn d liu an toàn.
• Cung cp các dch v cho phép theo dõi, qung cáo và kt xut báo
cáo.
• Thit k các nghi thc mng cho vic trao đi và đnh dng thông
đip.




















Trang 17
Chng 2. Tính toán song song và phân b
2.1. Khái nim
Ngày nay trong khi công ngh ngày mt phát trin thì nhu cu v tc đ
tính toán ca các h thng máy tính cng ngày mt tng cao. Các lnh vc đòi
hi tính tóan hiu nng cao nh là mô hình s và gi lp các vn đ ca khoa
hc và công ngh.
Ngoài ra nó còn nhm gii quyt các lai vn đ cn tc đ x lý cao
nh:
• Mô hình hóa và gi lp
Mô hình các mu DNA
Mô hình hóa chuyn đng ca các phi hành gia

• X lý/Thao tác trên các d liu rt ln
X lý nh và tín hiu
Khai thác d liu và c s d liu
Xác đnh đa chn

• Các vn đ “grand challenge” (là nhng vn đ không th gii quyt
trong thi gian “hp lý”, nh cn 100, 1000,…nm đ có đáp án)
Mô hình khí hu
S chuyn đng ca cht lng
B gene con ngi
Mô hình cht bán dn

Xut phát t nhu cu đó đã dn đn s cn thit phi có nhng h thng
song song và phân b nhm tn dng ti đa kh nng thc thi ca các b x lý,
và đ gii quyt các vn đ nan gii trên.










Trang 18
2.2. Nn tng tính toán song song và phân b
Trong phn này chúng ta s xem xét cách t chc logic và vt lý ca các
nn tng song song và phân tán. Cách t chc logic liên quan đn quan đim
ca ngi lp trình (kin trúc x lý song song và phân b) trong khi cách t
chc vt lý liên quan đn cách c cu thc s ca các phn cng bên di.
Trong tính toán song song thì t quan đim ca ngi lp trình gm 2 thành
phn chính quan trng đó là cách thc th hin các tác v song song (cu trúc
điu khin) và nhng phng pháp xác đnh tng tác gia các tác v này (mô
hình giao tip).
2.2.1. Kin trúc x lý song song và phân b
Máy tính song song có th đc chia theo 2 lai chính là : dòng điu
khin (control flow) và dòng d liu (data flow). Máy tính song song dòng điu
khin da ch yu theo các nguyên tc ca máy tính Von Neumann, ngai tr
nhiu dòng điu khin có th thc hin vào bt c thi gian nào. Máy tính song
song dòng d liu , đôi khi đc bit đn là “phi Von Neumann”, thì hoàn toàn
khác bit  ch nó không có con tr tr ti các ch th hin hành hay trung tâm
điu khin.  đây chúng ta ch tp trung vào các máy tính song song dòng điu
khin.
Nm 1966, M.J.Flynn đã phân chia các h thng máy tính da trên dòng
ch th và dòng điu khin thành 4 loi sau:
• SISD (
Single Instruction stream, a Single Data stream)

• SIMD (
Single Instruction stream, Multiple Data streams)
• MISD (
Multiple Instruction streams, a Single Data stream)
• MIMD (
Multiple Instruction streams, Multiple Data streams)
Phân theo mc đ hay đc s dng:



MIMD > SIMD > MISD









Trang 19
Instruction Stream(s)
SISD
(Uniprocessors)
SIMD
(Array Processors)
MISD
GMSV GMMP
DMSV
Data Stream(s)

Single Multiple
Multiple Single
Shared Variables Message Passing
GlobalDistributed
Memory
Communication
DMMP
MIMD

Hình 2-1 : Phân lai h thng máy tính theo Flynn-Johnson
2.2.1.1. SISD

Hình 2-2 : Kin trúc SISD
Kin trúc này tng t vi kin trúc Von Neumann. Mt đn v điu
khin tip nhn mt ch th đn t b nh, sau đó đa vào cho b x lý thc thi
trên mt đn v d liu đc ch ra trong ch th nhn đc, và cui cùng là đa
kt qu nhn đc vào b nh.
2.2.1.2. SIMD
Hu ht các máy tính song song ban đu đu đc thit k theo kin trúc
SIMD. Trong kin trúc này, mt đn v x lý trung tâm s thông dch và qung
bá các tín hiu điu khin thích hp cho các b x lý theo chiu kim đng h.
Tng b x lý s thc thi các ch th mt cách đng thi, và chúng cng có
quyn không tip nhn trên các ch th nào đó. S ph bin ca kin trúc SIMD
là do tính nng ca các ng dng song song ban đu và t yêu cu ca nn kinh










Trang 20
t. Theo quan đim ca ngi dùng thì các ng dng s dng kin trúc SIMD
thì d dàng đc lp trình hn và tn dng hiu qu hn các thit b phn cng.

Hình 2-3 : Kin trúc SIMD
Bên trong SIMD, tn ti hai la chn thit k c bn sau:
1. SIMD đng b và bt đng b. Trong mt máy SIMD, tng b x
lý có th thc thi hay b qua các ch th đc qung bá da vào trng
thái cc b ca nó hay nhng điu kin ph thuc vào d liu. Tuy
nhiên điu này có th dn đn x lý mt vài tính toán điu kin
không hiu qu. Mt cách gii quyt kh thi là s dng phiên bn bt
đng b ca S1IMD, đc bit đn là SPMD (Single Program
Multiple Data), trong đó tng b x lý s chy mt bn sao ca









Trang 21
chng trình chung. im thun li ca SPMD là trong lúc tính toán
biu thc điu kin “if-then-else”, tng b x lý s ch thc hin 
nhánh thích hp mà không mt thi gian cho các chi phí tính toán
khác.

2. Chip SIMD tùy chn hay thng nht (commodity). Mt máy
SIMD có th đc thit k da trên nhng thành phn thng nht
hay là t nhng con chip tùy chn. Trong cách tip cn th nht thì
các thành phn có xu hng r hn do sn xut hàng lot. Tuy nhiên
nhng thành phn mang mc đích chung nh vy có th cha các
yu t không cn thit cho mt thit k c th nào đó. Nhng thành
phn thêm vào có th làm phc tp vic thit k, sn xut và kim
th các máy SIMD và cng có th đem li khim khuyt v tc đ
x lý. Còn các thành phn tùy chn thì nhìn chung h tr tt hn cho
thc thi tuy nhiên nó cng dn đn chi phí cao hn cho vic phát
trin. Khi vic tích hp nhiu b x lý cùng vi b nh d dt trên
mt con chip VLSI đn tr nên kh thi, thì vic kt hp u đim ca
2 cách tip cn trên là hoàn toàn có th.
2.2.1.3. MISD
Mô hình này hu nh không thy nhiu trong các ng dng. Mt trong
nhng lý do là bi vì hu ht các ng dng không th áp dng mt cách d
dàng vào kin trúc MISD, điu này dn đn vic thit k ra mt kin trúc đ
tha mãn cho mt mc đích chung là điu không th. Tuy nhiên có th áp dng
các b x lý song song kiu MISD vào trong mt ng dng c th nào đó.









Trang 22


Hình 2-4 : Kin trúc MISD
Trong hình trên là ví d v mt b x lý song song vi kin trúc MISD.
Mt dòng d liu đn đi vào mt máy tính gm 5 b x lý. Nhiu phép bin
đi đc thc hin trên tng đn v d liu trc khi nó đc chuyn sang mt
(hay nhiu) b x lý khác. Các đn v d liu k tip có th đi qua các phép
bin đi khác do điu kin đc lp d liu ca các dòng ch th hay do các th
điu khin đc bit đc truyn cùng vi d liu. Chính vì vy mà cách t chc
theo kin trúc MISD có th đc xem nh là mt h thng ng lnh cp đ cao
và phc tp vi nhiu đng dn và trong đó tng giai đan có th đc lp
trình riêng bit.
2.2.1.4. MIMD
c tiên đoán bi các doanh nghip vào thp niên 90, mô hình MIMD
gn đây đã tr nên khá ph bin. Lý do cho s thay đi này là vì tính uyn
chuyn cao ca kin trúc MIMD và bi kh nng tn dng đc nhng u
đim ca các b vi x lý đc sn xut hàng lat (commodity
microprocessors), vì th tránh đc nhng vòng phát trin dài dòng và qua đó
có th đc phát trin cùng vi s ci thin ca các b x lý. Các máy tính
MIMD đc áp dng rt hiu qu cho các ng dng song song mà vn đ ca
nó đc phân rã t trung bình cho đn tt (medium- to coarse-grain parallel
applications).u đim ca các máy tính MIMD bao gm kh nng uyn









Trang 23

chuyn cao trong vic khai thác nhiu dng thc song song khác nhau, d phân
chia nh hn cho các b x lý đc lp trong môi trng đa ngi dùng (tính
cht này là ng ý quan trng cho tính dung li), ít khó khn trong vic m rng
(scalability). Nhng bên cnh đó kin trúc này cng có khuyt đim là s quá
ti do giao tip gia các b x lý và vic lp trình gp nhiu khó khn.

Hình 2-5 : Kin trúc MIMD
Bên trong kin trúc MIMD, tn ti 3 loi vn đ c bn hay còn đc
gi là cách la chn thit k hin vn là ch đ đang đc tranh cãi trong cng
đng các nhà nghiên cu.
1. MPP – massively or moderately parallel processor. Vic xây
dng mt b x lý song song t mt s lng nh các b x lý









Trang 24
mnh m hay t mt s lng rt ln các b x lý bình thng (mt
“by voi” hay là mt “đàn kin”) thì cách nào s hiu qu hn ?.
Theo lut ca Amdahl thì cách đu tiên thích hp hn cho nhng
phn tun t ca mt tính toán, trong khi cách tip cn th hai s làm
tng tc hn na nhng phn mang tính song song. Không th đa ra
mt câu tr li chung cho câu hi này, s la chn tt nht tùy thuc
vào loi công ngh và ng dng đang đc s dng.
2. MIMD “cht ch” hay “lng lo”. Cách tip cn nào tt hn cho

vic tính toán hiu nng cao, bng cách s dng đa b x lý đc
thit k đc bit trên nhiu máy tính hay là tp hp ca nhng máy
trm bình thng đc kt ni vi nhau bi các h thng mng “tin
nghi” (nh là Ethernet hay ATM) và nhng tng tác nào s đc
kt ni vi nhau bng h thng phn mm đc bit và các h thng
tp tin phân tán? Cách tip cn th hai đôi khi đc bit đn là mng
ca các máy trm (network of workstations hay là NOW) hay là tính
toán cluster, đã đc s dng rng rãi trong nhng nm gn đây. Tuy
nhiên vn còn nhiu vn đ m còn tn ti nhm phát huy ti đa kh
nng ca nhng kin trúc có nn tng là mng. Thit b phn cng,
h thng phn mm, và nhng khía cnh ng dng ca NOW đang
đc đu t tìm hiu bi mt s lng ln các nhóm ngiên cu. Mt
cách tip cn trung gian là kt hp các cluster nhng b x lý thông
qua môi trng mng. iu này v c bn là mt phng pháp phân
nhánh, đc bit thích hp khi có mt s truy cp rt ln đn d liu
cc b.
3. Truyn thông đip tng minh hay chia s b nh o. Lai nào
s tt hn, cho phép ngi dùng ch ra tt c các loi thông đip s
đc truyn gia các b x lý hay là cho phép h lp trình  mt cp
đ tru tng cao hn, cùng vi các thông đip cn thit t đng
đc phát sinh bi h thng phn mm? Câu hi này v c bn là
tng t vi câu đc hi trong nhng ngày đu ca nhng ngôn










Trang 25
ng lp trình cp cao và b nh o. Ti mt vài thi đim trong quá
kh, vic lp trình bng hp ng và thc hin trao đi gia b nh
chính và b nh ph có th đem li hiu qu cao hn. Tuy nhiên, do
ngày nay các phm mm đã đt đn mc quá phc tp, các trình biên
dch cùng vi h điu hành cng đã quá cp cao đn ni vic ti u
các chng trình bng tay không còn là điu gì quá khó. Tuy nhiên
chúng ta vn cha  thi đim x lý song song đáng k, và vic che
giu cu trúc giao tip tng minh gia các máy tính song song ra
khi ngi lp trình s đem li hiu nng thc thi rt đáng k.
2.2.2. T chc vt lý ca các nn tng song song và phân b
Trong phn này chúng ta s ch mô t mt máy tính song song lý tng
là PRAM. ây là mt cách m rng t nhiên ca mô hình tính toán tun t
(Random Access Machine hay là RAM) bao gm p b x lý và mt vùng nh
toàn cc có kích thc không gii hn và đc truy cp t tt cá các b x lý.
Tt c chúng đu có s dng cùng chung mt không gian đa ch. Các b x lý
có th cùng chia s mt đng h chung nhng cng có th thc thi các ch th
khác nhau trên cùng mt chu k. Mô hình này đc bit đn là parallel random
access machine (PRAM). Tùy thuc vào cách thc truy cp b nh, PRAM
đc phân thành 4 loi sau.
1. Toàn quyn đc - Toàn quyn ghi (exclusive-read, exclusive write)
EREW. Trong loi này, truy cp vào vùng nh là toàn quyn. Không
có thao tác đc ghi nào đc cho phép. ây là mô hình PRAM
không chc chn nht, ch h tr truy cp đng thi vào b nh mt
cách ti thiu.
2. ng thi đc – Toàn quyn ghi (concurrent read, exclusive write)
CREW. Cho phép nhiu thao tác đc cùng lúc trên cùng mt vùng
nh, tuy nhiên nhiu thao tác ghi ch thc hin theo tun t.
3. Toàn quyn đc – ng thi ghi (exclusive read, concurrent write)

ERCW. Cho phép nhiu thao tác ghi cùng lúc trên cùng mt vùng
nh, tuy nhiên nhiu thao tác đc ch thc hin theo tun t.

×