Lập trình bộ nhớ dùng chung

Một phần của tài liệu Các hệ vi xử lý tiên tiến (Trang 71 - 74)

Có lẽ lập trình song song bộ nhớ dùng chung là một mơ hình dễ hiểu nhất do nó giống với lập trình hệ điều hành và đa lập trình chung. Lập trình bộ nhớ dùng chung được thực hiện thông qua việc mở rộng sang một số ngơn ngữ lập trình, các hệ điều hành, và các thư viện mã hiện có. Trong một chương trình song song bộ nhớ dùng chung, thì phải có ba cấu trúc lập trình chính:

Hình 4.12 Lập trình phân phối Stanford (a) thêm vào danh sách chia sẻ (SDD), và (b) loại bỏ danh sách chia sẻ write miss (SDD).

4.6.1 Tạo tác vụ

Ở cấp độ thơ sơ, một hệ thống bộ nhớ dùng chung có thể cung cấp thêm chức năng chia sẻ thời gian truyền thống. Mỗi khi một q trình mới được kích họat, các bộ vi xử lí rỗi

được cung cấp để chạy quá trình mới. Nếu hệ thống được tải, bộ vi xử lý với số lượng cơng việc ít được phân cơng thực hiện một q trình mới. Các q trình thơ này thường được gọi là các nhiệm vụ nặng vì chi phí của chúng cao. Một nhiệm vụ nặng trong một hệ thống đa nhiệm như UNIX bao gồm các bảng trang, bộ nhớ và mơ tả tệp cùng với mã chương trình và dữ liệu. Những nhiệm vụ này được tạo ra trong UNIX bằng lời gọi fork, exec, và các lệnh UNIX khác có liên quan. Mức này là thích hợp nhất cho các tác vụ khơng đồng nhất.

Ở cấp độ tinh tế hơn, các quá trình tải nhẹ thực hiện song song trong một ứng dụng thực tế duy nhất, ở đây nó thích hợp nhất cho các nhiệm vụ đồng nhất. Ở cấp độ này, một ứng dụng là một loạt các cấu trúc fork-join. Mơ hình tạo tác vụ này được gọi là mơ hình Supervisor-cơng nhân, như biểu diễn trong hình 4.13.

4.6.2 Truyền thơng

Nói chung, khơng gian địa chỉ trong q trình thực thi có ba đoạn được gọi là text, dữ liệu, và stack. Text là nơi mã nhị phân cần thực thi được lưu trữ, đoạn dữ liệu là nơi dữ liệu chương trình được lưu trữ, và stack là nơi các bản ghi kích họat và dữ liệu động được lưu trữ. Các đoạn dữ liệu và stack mở rộng và thoả hiệp với nhau khi chương trình thực thi. Vì vậy, một khoảng trống được để lại một cách chủ định giữa các đoạn dữ liệu và stack. Các quá trình nối tiếp được giả định là độc lập với nhau và không dùng chung địa chỉ. Mã của từng quá trình nối tiếp được phép truy cập dữ liệu trong các đoạn dữ liệu và stack riêng của nó. Một q trình song song tương tự như quá trình nối tiếp cộng với một đoạn dữ liệu được chia sẻ (dùng chung). Khu vực dùng chung này được phép phát triển và được đặt trong một khoảng trống giữa từng đoạn dữ liệu và stack. Hình 4.14 biểu diễn sự khác nhau giữa một quá trình nối tiếp và song song.

Hình 4.13 Mơ hình Supervisor-cơng nhân được sử dụng trong hầu hết các ứng dụng song song trên các hệ thống bộ nhớ dùng chung.

Truyền thơng giữa các q trình song song có thể được thực hiện bằng cách viết và đọc từ các biến chung trong các đoạn dữ liệu dùng chung như biểu diễn trong hình 4.15.

4.6.3 Đồng bộ hóa

Đồng bộ hóa là cần thiết để bảo vệ các biến dùng chung bằng cách đảm bảo rằng chúng chỉ được truy cập bởi một quá trình tại một thời điểm nhất định (loại trừ lẫn nhau). Chúng cũng có thể được sử dụng để phối hợp thực hiện các quá trình song song và đồng bộ hóa tại một số điểm nhất định trong q trình thực hiện. Có hai cấu trúc đồng bộ hóa chính trong hệ thống bộ nhớ dùng chung: (1) các khóa và (2) các hàng rào. Hình 4.16a biểu diễn ba quá trình song song sử dụng các khoá để đảm bảo loại trừ lẫn nhau. Quá trình P2 phải chờ cho đến khi P1 mở khoá phần quan trọng, tương tự P3 phải chờ cho đến khi P2 phát ra một phát biểu mởi khoá. Trong hình 4.16b, P3 và P1 tới được phát biểu hàng rào của chúng trước P2, và chúng phải chờ cho đến khi P2 tới hàng rào của nó. Khi cả ba đều đạt tới phát biểu hàng rào, tất cả chúng được xử lý.

Hình 4.15 Hai quá trình song song giao tiếp bằng cách sử dụng đoạn dữ liệu chung (được chia sẻ).

Chương 5

LẬP TRÌNH SONG SONG TRÊN MÁY ẢO SONG SONG

Máy ảo song song (PVM: Parallel Virtual Machine ) ban đầu được phát triển tại Phịng thí nghiệm quốc gia Oak Ridge và Đại học Tennessee. Nó tạo ra khả năng có thể phát triển các ứng dụng trên một tập hợp các máy tính khơng đồng nhất được kết nối bởi một mạng mà theo logic của người dùng nó có thể là một máy tính song song duy nhất. PVM cung cấp một tập hợp các chức năng quản lý tài nguyên động và điều khiển quy trình mạnh mẽ. Nó cung cấp cho các lập trình viên một thư viện các thủ tục để khơi màu (khởi tạo) và kết thúc nhiệm vụ, đồng bộ hóa, và thay đổi cấu hình máy ảo. Nó cũng tạo điều kiện cho q trình truyền tin nhắn thông qua một số cấu trúc đơn giản. Khả năng tương tác giữa các máy tính khơng đồng nhất khác nhau là một lợi thế lớn trong hệ PVM. Các chương trình được viết cho một số kiến trúc có thể được sao chép sang kiến trúc khác, biên dịch và thực thi mà khơng cần sửa đổi. Ngồi ra, các file thực thi PVM này vẫn có thể giao tiếp với nhau. Một ứng dụng PVM được tạo ra từ một số tác vụ hợp tác để cùng giải một bài tốn duy nhất. Một tác vụ có thể thay đổi giữa những tính tốn và truyền thơng với các tác vụ khác. Mơ hình lập trình là một mạng truyền thơng các nhiệm vụ nối tiếp trong đó mỗi nhiệm vụ có vị trí điều khiển riêng của nó, và các nhiệm vụ nối tiếp giao tiếp bằng cách trao đổi tin nhắn.

Một phần của tài liệu Các hệ vi xử lý tiên tiến (Trang 71 - 74)