• Các máy tính song song có thể được phân loại tùy theo cấp độ hỗ trợ cho songsong của phần cứng, với những chiếc máy tính đa nhân và đa xử lý có bộ phận đa xử lý trong một máy đơn lẻ, t
Trang 1MỤC LỤC
Trang 2CHƯƠNG I TÍNH TOÁN SONG SONG
1 Tổng quan
• Tính toán song song là một hình thức tính toán trong đó nhiều phép tính được
thực hiện đồng thời, hoạt động trên nguyên tắc là những vấn đề lớn đều có thểchia thành nhiều phần nhỏ hơn, sau đó được giải quyết tương tranh ("trong lĩnhvực tính toán") Có nhiều hình thức khác nhau của tính toán song song: songsong cấp bit, song song cấp lệnh, song song dữ liệu, và song song tác vụ Songsong đã được sử dụng từ nhiều năm qua, chủ yếu là trong lĩnh vực tính toán hiệunăng cao
• Gần đây hình thức tính toán này được quan tâm nhiều hơn, do những hạn chế vật
lý ngăn chặn việc tăng hiệu năng tính toán chỉ bằng cách tăng tần số.Vì việc tiêuhao điện năng (dẫn đến sinh nhiệt) từ máy tính đã trở thành một mối lo ngại trongnhững năm gần đây,tính toán song song đã trở thành mô hình thống trị trong lĩnhvực kiến trúc máy tính, phần lớn là dưới dạng bộ xử lý đa nhân Xử lý thông tinhay dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và một trongnhững trở ngại chính mà các nhà phát triển hiện nay phải đối mặt là khác biệtgiữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đềcàng phức tạp hơn với sự xuất hiện của XML (eXtensible Markup Language -ngôn ngữ đánh dấu mở rộng)
• Các máy tính song song có thể được phân loại tùy theo cấp độ hỗ trợ cho songsong của phần cứng, với những chiếc máy tính đa nhân và đa xử lý có bộ phận đa
xử lý trong một máy đơn lẻ, trong khi cụm máy tính, xử lý song song hàng loạt,
và điện toán lưới sử dụng nhiều máy tính để xử lý cùng một công việc Nhữngkiến trúc máy tính song song chuyên dụng thỉnh thoảng cũng sử dụng các bộ xử
lý truyền thống nhằm tăng tốc độ cho những công việc đặc trưng
Trang 3• Thuật toán song song khó viết hơn so với những thuật toán tuần tự,vì sự tươngtranh tạo ra nhiều lớp mới tiềm tàng các lỗi phần mềm, trong đó lỗi điều kiệnganh đua là phổ biến nhất Mạng máy tính và đồng bộ giữa các phần việc nhỏ làmột trong những trở ngại lớn nhất để tạo ra một chương trình song song tốt.
• Khả năng tăng tốc cao nhất có thể đạt được của một chương trình khi được songsong hóa tuân theo định luật Amdahl
2 Bối cảnh
• Theo truyền thống, phần mềm máy tính được viết cho tính toán tuần tự Để giảiquyết một vấn đề, một thuật toán được xây dựng và thực thi tuần tự theo cácdòng lệnh Những câu lệnh này lại được chạy trên một đơn vị xử lý trung tâm(CPU) của chiếc máy tính Chỉ có một câu lệnh được chạy trong một khoảng thờigian Sau khi câu lệnh đó kết thúc, câu tiếp theo mới được thực hiện
• Tính toán song song, mặt khác, lại sử dụng đồng thời các bộ đa xử lý để giảiquyết một vấn đề Việc này được hoàn thành bằng cách tách vấn đề thành nhiềuphần độc lập sau đó mỗi bộ xử lý có thể chạy thuật toán của nó đồng thời vớinhững cái khác Các bộ phận xử lý có thể khác nhau và bao gồm các dạng tàinguyên như: một máy tính đơn gồm nhiều bộ đa xử lý, nhiều máy tính được kếtnối mạng, phần cứng chuyên biệt, hoặc có thể là sự kết hợp của những dạng trên
• Tăng tần số là cách chủ đạo để cải thiện khả năng xử lý của máy tính từ giữanhững năm 1980 cho đến năm 2004 Thời gian chạy của một chương trình đượctính bằng số câu lệnh nhân với thời gian trung bình của một câu lệnh Như vậynếu duy trì tất cả những thứ khác ổn định, gia tăng tần số xung nhịp sẽ làm giảmthời gian trung bình để thực thi một câu lệnh Như vậy tần số tăng sẽ giảm đi thờigian chạy của những chương trình chạy trong CPU
• Tuy nhiên, mức tiêu hao năng lượng của một con chip được tính bởi công thức P
= C × V2 × F, trong đó P là công suất tiêu thụ, C là điện dung được chuyển trongmỗi chu kỳ xung nhịp (tỷ lệ thuận với số lượng transistor có đầu vào thay đổi), V
Trang 4là điện áp, và F là tần số của bộ xử lý (số chu kỳ mỗi giây) Như vậy tăng tần sốcũng làm năng lượng sử dụng của bộ xử lý tăng theo Việc tăng tiêu hao nănglượng này đã dẫn đến quyết định ngừng phát triển bộ xử lý Tejas và Jayhawk củaIntel tháng 5 năm 2004, được cho là sự chấm dứt của việc sử dụng tăng tần sốnhư một kiến trúc máy tính chủ đạo
• Định luật Moore là một quan sát thực tế cho thấy mật độ transistor trong bộ vi xử
lý tăng gấp hai lần sau mỗi 18 đến 24 tháng Bất chấp nhược điểm về tiêu haonăng lượng, và những dự đoán về sự chấm dứt của nó, định luật Moore vẫn kháthông dụng Với sự kết thúc của phương pháp tăng tần số, các transistor bổ sungnày (không còn được sử dụng cho việc tăng tần số) có thể được sử dụng để tạo raphần cứng bổ sung cho tính toán song song
Trang 5CHƯƠNG II ĐỊNH LUẬT AMDAHI VÀ ĐỊNH
LUẬT GUSTAFSON
3 Giới thiệu
• Trong trường hợp tối ưu, khả năng tăng tốc từ việc song song hóa là tuyến tínhgấp đôi các thành phần xử lý sẽ làm giảm một nửa thời gian chạy, và gấp đôi lầnnữa sẽ lại tiếp tục giảm thời gian chạy xuống còn một nửa Tuy nhiên, có rất ítthuật toán song song có thể đạt được sự tăng tốc tối ưu Hầu hết đều chỉ đạt đếngần mức tuyến tính khi số thành phần xử lý là nhỏ, và tiệm cận đến một giá trịkhông đổi khi số lượng các thành phần xử lý tăng lên nhiều
• Tiềm năng của việc tăng tốc bởi một thuật toán trên nền tảng tính toán song songđược đưa ra bởi định luật Amdahl, ban đầu được xây dựng bởi Gene Amdahl
trong những năm 1960 Trong đó nói rõ rằng chỉ một phần nhỏ của chương trìnhkhông thể được song song cũng sẽ hạn chế khả năng tăng tốc tổng thể của việcsong song hóa Một chương trình giải quyết một vấn đề toán học hoặc kỹ thuậtlớn thường sẽ bao gồm một số bộ phận song song và bộ phận không song song(tuần tự) Nếu là tỷ lệ thời gian chạy mà một chương trình tuần tự bỏ ra trên bộphận không song song, thì
là tỷ lệ tăng tốc tối đa khi song song hóa chương trình Ví dụ, nếu coi phần tuần
tự của một chương trình là 10% thời gian chạy, tốc độ tăng sẽ không thể đạtđược quá 10 lần, bất kể có bao nhiêu bộ xử lý được thêm vào Điều này đặt ramột giới hạn về tính hữu ích của việc thêm các đơn vị thực hiện song song vớinhau nhiều hơn "Khi công việc không thể được phân chia vì ràng buộc về trình
tự, dù có áp dụng thêm nhiều phương pháp cũng không ảnh hưởng đến tiến độ
Trang 6Mang thai một đứa trẻ phải mất 9 tháng, cho dù có bao nhiêu người phụ nữ đinữa.
• Định luật Gustafson: là một nguyên lý khác trong tính toán, liên quan chặt chẽđến định luật Amdahl.Nó chỉ ra rằng việc tăng tốc với bộ xử lý là
Định luật Amdahl giả định kích thước bài toán là cố định và thời gian chạy của cácphần tuần tự của chương trình là độc lập với số lượng bộ xử lý, trong khi định luậtGustafson không đưa ra giả thuyết này
4 Phụ thuộc
• Hiểu biết về phụ thuộc dữ liệu là bước cơ bản trong việc thực hiện thuật toánsong song Không một chương trình nào có thể chạy nhanh hơn chuỗi dài nhấtcủa các phép tính phụ thuộc (được biết đến như là đường tới hạn), khi mà cácphép tính phụ thuộc vào các phép tính trước trong chuỗi phải được thực hiện theothứ tự Tuy nhiên, hầu hết các thuật toán không chỉ bao gồm một chuỗi dài cácphép tính phụ thuộc, luôn luôn có khả năng phải thực hiện các phép tính độc lậpsong song
• Cho Pi và Pj là hai đoạn của chương trình Bernstein's conditions[14] mô tả khinào hai đoạn độc lập với nhau và có thể được thực hiện song song Với Pi, đặt Ii
là tất cả các biến đầu vào, Oi là biến đầu ra, tương tự ta làm như vậy với Pj P i
và Pj là độc lập nếu chúng thỏa mãn
Không thỏa mãn điều kiện đầu tiên sẽ tạo ra một phụ thuộc lưu lượng, giông nhưcâu lệnh đầu tiên sẽ tạo ra một kết quả được sử dụng ở câu lệnh thứ hai Điều
kiện thứ hai có thể coi là chống phụ thuộc, khi mà câu lệnh thứ hai (P j) sẽ ghi đè
Trang 7lên biến được sử dụng ở biểu thức thứ nhất (P i) Điều kiện thứ ba và cuối cùngthể hiện một sự phụ thuộc đầu ra: Khi hai câu lệnh cùng thực hiện một công việc,kết quả cuối cùng phải lấy từ các câu lệnh thực hiện một cách hợp lý nhất.
• Xem xét các hàm sau đây, trong đó thể hiện nhiều loại phụ thuộc:
Trong ví dụ này, không có phụ thuộc giữa các chỉ lệnh, do đó, tất cả đều có thể chạysong song
Điều kiện của Bernstein không cho phép bộ nhớ được chia sẻ giữa các quá trìnhkhác nhau Nó cho rằng, một số phương tiện thực thi một lệnh giữa các truy cập làcần thiết, ví dụ như semaphores, barriers hoặc một số phương pháp đồng bộ khác
Trang 8CHƯƠNG III HÌNH THỨC SONG SONG
5 Song song cấp Bit
• Từ sự ra đời của công nghệ chế tạo chip máy tính very-large-scale integration
(VLSI) từ những năm 1970 cho đến năm 1986, tăng tốc trong kiến trúc máy tínhđược điều khiển bằng cách tăng gấp đôi kích cỡ từ máy tính—khối lượng thôngtin bộ xử lý có thể thao tác trên một chu kỳ Tăng kích thước từ làm giảm sốlượng chỉ lệnh các bộ xử lý phải thực thi để thực hiện một hoạt động trên cácbiến có kích cỡ lớn hơn độ dài của từ Ví dụ, khi một bộ xử lý 8-bit phải tạo thêm
2 nguyên số 16-bit, trước tiên bộ xử lý phải thêm vào các bit bậc thấp hơn 8 từmỗi số nguyên bằng cách sử dụng lệnh cộng tiêu chuẩn, sau đó thêm vào các bitbậc cao hơn 8 bằng cách sử dụng lệnh cộng có nhớ và bit nhớ lấy từ việc thêmvào bậc thấp; do đó, bộ xử lý 8-bit cần đến hai câu lệnh để hoàn thành một thaotác, trong khi bộ xử lý 16-bit có thể làm xong công việc này chỉ với một câu lệnhduy nhất
• Trong lịch sử, các vi xử lý 4-bit đã từng được thay thế bằng 8-bit, 16-bit, sau đó
là 32-bit Xu hướng này đã kết thúc với sự ra đời của bộ vi xử lý 32-bit, đã trởthành tiêu chuẩn cho các tính toán chung trong hai thập kỷ Cho đến gần đây(khoảng 2003–2004), với sự ra đời của kiến trúc x86-64, bộ xử lý 64-bit đã trởnên phổ biến
6 Song song cấp lệnh
• Một chương trình máy tính, về bản chất là một loạt những câu lệnh được thựchiện bởi một bộ xử lý Những câu lệnh này sẽ được sắp xếp lại và kết hợp thànhcác nhóm mà sau đó được thực hiện song song mà không thay đổi kết quả củachương trình Đây được gọi là song song cấp câu lệnh Những ưu điểm của songsong cấp câu lệnh đã thống trị kiến trúc máy tính từ giữa những năm 1980 chođến giữa thập niên 1990
Trang 9Một bộ xử lý siêu vô hướng với liên kết 5 giai đoạn, có khả năng phát ra 2 câu lệnh một chu kỳ Nó có thể có 2 câu lệnh trong mỗi giai đoạn của đường liên kết, với tổng số lên đến 10 câu lệnh (màu xanh lá cây) được thực hiện đồng thời.
• Các bộ xử lý hiện đại có những đường liên kết câu lệnh đa công đoạn Mỗi giaiđoạn trong đường liên kết tương ứng với mỗi hành động khác nhau mà bộ xử lýthực hiện với câu lệnh trong giai đoạn đó; bộ xử lý với một đường liên kết N giaiđoạn có thể có đến N câu lệnh ở những giai đoạn khác nhau Ví dụ tiêu chuẩn củamột bộ xử lý đường liên kết là bộ xử lý RISC, với 5 công đoạn: nạp lệnh, giải
mã, thực thi, truy cập bộ nhớ, và write back Bộ xử lý Pentium 4 có một đườngliên kết 35 giai đoạn
• Ngoài mô hình song song cấp câu lệnh từ đường liên kết, một số bộ xử lý cũng
có thể tạo ra nhiều hơn một câu lệnh tại một thời điểm Chúng được gọi là bộ xử
lý siêu vô hướng Các câu lệnh chỉ được nhóm lại với nhau khi giữa chúng không
có phụ thuộc dữ liệu Scoreboarding và thuật toán Tomasulo (tương tự nhưscoreboarding nhưng sử dụng đổi tên thanh ghi) là hai trong số những kỹ thuậtphổ biến nhất cho việc thực thi sai thứ tự và song song cấp câu lệnh
7 Song song dữ liệu
• Song song dữ liệu là song song vốn có trong Vòng lặp chương trình, trong đó tậptrung vào phân phối dữ liệu qua các nút tính toán khác nhau để được xử lý song
Trang 10song "Vòng song song thường dẫn đến những chuỗi hoạt động tương tự (khôngnhất thiết phải giống nhau) hoặc các chức năng được thực hiện trên các yếu tốcủa một cấu trúc dữ liệu lớn."[21] Nhiều ứng dụng khoa học và kỹ thuật áp dụngsong song dữ liệu.
• Một phụ thuộc loop-carried là sự phụ thuộc của một vòng lặp đi lặp lại trên đầu
ra của một hoặc nhiều lần lặp lại trước Phụ thuộc loop-carried ngăn chặn sự songsong hóa của các vòng Ví dụ, xem xét giả mã sau khi tính một vài số Fibonacci
đầu tiên:
Vòng này không thể song song vì CUR phụ thuộc vào chính nó (PREV2) vàPREV1, được tính toán trong mỗi lần lặp vòng Vì mỗi lần lặp phụ thuộc vào kếtquả của lần lặp trước đó, nên chúng không thể song song Khi vấn đề trở nên lớnhơn, khối lượng của dữ liệu song song luôn luôn tăng theo
8 Song song tác vụ
• Song song tác vụ là thuộc tính của một chương trình song song mà "các phép tínhhoàn toàn khác nhau có thể được thực hiện trên các bộ dữ liệu giống hoặc khácnhau" This contrasts with data parallelism, where the same calculation isperformed on the same or different sets of data Task parallelism does not usuallyscale with the size of a problem.Khi gọi SubmitChanges() trên lớp DataContext,các lệnh cập nhật sẽ luôn được thực thi trong cùng một transaction Có nghĩa làCSDL của bạn sẽ không bao giờ ở trong một trạng thái không toàn vẹn nếu bạnthực thi nhiều câu lệnh – hoặc tất cả các thao tác bạn làm sẽ được lưu lại, hoặckhông có bất kỳ thay đổi nào
Trang 11• Hệ thống máy tính sử dụng các vùng nhớ đệm—các bộ nhớ nhỏ, nhanh đặt gần
bộ xử lý mà lưu trữ các bản sao tạm thời của các giá trị bộ nhớ (gần trong cả ýnghĩa về vật lý và logic) Hệ thống máy tính song song gặp khó khăn với vùngnhớ đệm có thể lưu trữ cùng một giá trị ở nhiều vị trí, với khả năng thực thichương trình không chính xác Những máy tính này yêu cầu một hệ thống đồng
bộ vùng nhớ đệm, trong đó theo dõi các giá trị lưu trữ và dọn dẹp chúng theotrình tự, do đó đảm bảo chương trình được thực hiện đúng Bus snooping là mộttrong những phương pháp phổ biến nhất cho việc theo dõi những giá trị nào đangđược truy cập (và nên được thanh lọc) Thiết kế hệ thống đồng bộ vùng nhớ đệmlớn, hiệu suất cao là một vấn đề rất khó trong kiến trúc máy tính Kết quả là, kiến
Trang 12trúc máy tính chia sẻ bộ nhớ không được coi trọng như hệ thống bộ nhớ phântán.Phân biệt kiến trúc đa tầng/nhiều lớp.
• Kiểu kết nối bộ xử lý-bộ xử lý và bộ xử lý-bộ nhớ có thể được thực hiện trongphần cứng theo nhiều cách, bao gồm thông qua chia sẻ (bộ nhớ đa cổng hoặc đahợp), một bộ chuyển mạch thanh ngang, một dòng chia sẻ hay một mạng liên kếtcủa vô số các cấu trúc liên kết bao gồm star, ring, tree, hypercube, fat hypercube(một hypercube với nhiều hơn một bộ xử lý tại nút a), hoặc mạng n chiều
• Máy tính song song dựa trên kết nối mạng cần phải có một số loại định tuyến đểcho phép việc truyền thông điệp giữa các nút không được kết nối trực tiếp.Phương pháp được sử dụng cho kết nối giữa các bộ xử lý có thể được phân cấptrong các máy vi xử lý lớn
10 Các dạng máy tính song song
Máy tính song song có thể được tạm phân loại theo mức độ các phần cứng hỗtrợ song song Kiểu phân loại này nói chung tương tự như khoảng cách giữa cácnút tính toán cơ bản Đây không phải là loại trừ lẫn nhau; ví dụ, các cụm đa xử
lý đối xứng là tương đối phổ biến
10.1 Tính toán đa nhân
• Một bộ xử lý đa lõi là một bộ xử lý bao gồm nhiều đơn vị thực hiện
("nhân") trên cùng một chip Những bộ xử lý này khác với bộ xử lý siêu vôhướng, có thể tạo ra nhiều câu lệnh trên một chu kỳ từ một dòng lệnh(thread) Mỗi lõi trong bộ xử lý đa lõi đều có khả năng là siêu vô hướng, cónghĩa là, trên mỗi chu kỳ, mỗi lõi có thể tạo ra nhiều câu lệnh từ một dònglệnh
• Xử lý đa luồng đồng thời (trong đó HyperThreading của Intel là nổitiếng nhất) là một hình thức ban đầu của giả đa nhân Một bộ xử lý có khảnăng xử lý đa luồng đồng thời chỉ có một đơn vị thực hiện ("nhân"), nhưng
Trang 13khi đơn vị thực hiện đó không hoạt động (chẳng hạn như trong lỗi không tìmthấy trong vùng nhớ đệm), nó sử dụng đơn vị thực hiện đó để xử lý mộtchuỗi thứ hai.Cell microprocessor của IBM, được thiết kế để sử dụng cho
SonyPlayStation 3, là một bộ xử lý đa lỗi nổi bật khác
10.2 Đa xử lý đối xứng
• Một bộ đa xử lý đối xứng (SMP) là một hệ thống máy tính với nhiều
bộ xử lý giống hệt nhau chia sẻ bộ nhớ và kết nối thông qua một kênh Buscontention ngăn chặn các kiến trúc khỏi việc mở rộng Kết quả là, SMPSthường không bao gồm hơn 32 bộ xử lý "Vì kích thước nhỏ của bộ xử lý vàviệc giảm đáng kể trong các yêu cầu về băng thông đạt được bởi các vùngnhớ đệm lớn, bộ đa xử lý đối xứng như vậy là cực kỳ hiệu quả, với điều kiện
là tồn tại một băng thông bộ nhớ đủ dung lượng”
10.3 Tính toán phân tán
• Một máy tính phân tán (còn được gọi là bộ đa xử lý bộ nhớ phân tán)
là một hệ thống máy tính phân tán bộ nhớ trong đó các thành phần xử lýđược kết nối bởi mạng Máy tính phân tán có khả năng mở rộng cao.Cungcấp các dịch vụ cho lớp Business sử dụng
10.4 Tính toán cụm
• Cluster là một nhóm các máy tính kết nối lỏng làm việc cùng nhauchặt chẽ, như vậy trong một số khía cạnh nào đó chúng có thể được coi làmột chiếc máy tính.[26] Các cụm gồm nhiều máy tính độc lập được kết nốiqua mạng Khi các máy trong cụm không cần phải đối xứng, cân bằng tải sẽtrở nên khó hơn nếu chúng không đối xứng Dạng phổ biến nhất của cụm là
cụm Beowulf, là một cụm thực hiện trên nhiều máy tính commercial shelf giống nhau kết nối qua mạng cục bộ TCP/IP Ethernet.[27] Công nghệBeowulf được phát triển đầu tiên bởi Thomas Sterling và Donald Becker.Đại đa số các siêu máy tính TOP500 là cụm