TÍNH TOÁN SONG SONG 1 Khái niệ m tính toán song song

Một phần của tài liệu đánh giá hiệu năng của vi xử lý đa lõi dựa trên kiến trúc kết nối (Trang 34 - 37)

CHƯƠNG 2: TÍNH TOÁN SONG SONG VÀ LUẬT AMDAHL

2.1. TÍNH TOÁN SONG SONG 1 Khái niệ m tính toán song song

Tính toán song song là một dạng tính toán trong đó nhiều lệnh được thực hiện đồng thời. Tính toán song song vận hành trên nguyên tắc là các bài toán lớn được chia ra thành những phần nhỏ mà những phần nhỏ này có thể được thực hiện tương tranh (song song). Tính toán song song đã được sử dụng từ nhiều năm nay, chủ yếu cho những tính toán hiệu năng cao và trở nên một đặc điểm quan trọng trong kiến trúc máy tính, đặc biệt ở dạng các bộ xử lý nhiều lõi.

Tính toán song song có một số dạng khác nhau: • Song song mức bit

• Song song mức lệnh • Song song dữ liệu. • Song song nhiệm vụ.

Tuy nhiên, khó khăn để viết các chương trình cho máy tính song song hơn là cho máy tính tuần tự.

Có 3 kiểu song song có thể có trong một chương trình thực hiện:

• Song song dữ liệu: nhiều khoản dữ liệu có thể được xử lý trong cùng một cách và ở cùng một thời gian.

• Song song chức năng: chương trình có các module khác nhau và độc lập với nhau có thể được thực hiện đồng thời.

• Chồng lấn nhau (overlapped)/song song tạm thời (temporary parallelism): chương trình có một chuỗi các nhiệm vụ (task) có thể được thực hiện theo kiểu chồng lấn nhau. Hình thức quan trọng nhất của chồng lấn nhau là kỹ thuật đường ống (pipelining).

• Có thể được xử lý tuần tự theo từ, bit theo bit trong bộ xử lý hay máy tính, thì bộ xử lý hay máy tính đó gọi là bộ xử lý hay máy tính tuần tự (sequential), hay đơn xử lý (uniprocessor).

• Nếu được phân chia thành những phần con có kích thước xấp xỉ nhau: T1,

T2, T3, …TNvà tất cả các thành phần con này được xử lý đồng thời (thực hiện song song) thì tốc độ thực hiện nhiệm vụ T nhanh gấp N lần và bộ xử lý (máy tính) có chức năng thực hiện như vậy gọi là bộ xử lý song song (máy tính song song).

Ví dụ, một nhiệm vụ T là tính tổng SUM của N số (hằng số): b1, b2,…,bN. Thuật toán tính tổng N hằng số có thể đơn giản là: For i = 1 to N do SUM <- SUM + b[i]

Nếu thuật toán này được thực hiện trong máy tính tuần tự thì phải có N

phép cộng, mỗi phép cộng chiếm một quãng thời gian là Tadd, nghĩa là để có được kết quả cuối cùng của SUM cần phải mất khoảng thời gian là NTadd.

Nếu một máy tính có N bộ xử lý giống nhau Pi, i = 1,2,…,N và chúng kết nối với nhau trong một cấu trúc mảng tuyến tính hai chiều: mỗi một bộ xử lý đồng thời nhận (receive) và gửi dữ liệu với bộ xử lý lân cận (send) (hình 2.1).

Bằng mô hình máy tính kiểu này có thể giải bài toán tính tổng SUM một cách song song như sau: cho N = kn, trong đó: k- số nguyên ; n - số lượng bộ xử lý. Mỗi bộ xử lý xử lý k số và tất cả n bộ xử lý đồng thời thi hành nhiệm vụ. Như vậy N = kn phép cộng được phân ra n phép cộng (n bộ xử lý), mỗi phép cộng với k số. Bộ xử lý Pi chuyển kết quả phép cộng của nó cho bộ xử lý tiếp theo Pi+1 , và Pi+1 cộng kết quả của chính nó với kết quả từ Pi gửi vào. Kết quả phép cộng của Pi+1 được chuyển tới Pi+2. Sau (n-1) phép cộng và chuyển dữ liệu, kết quả cuối cùng được cất trong Pn. Chương trình thể hiện quá trình xử lý song song phép SUM được biểu diễn bằng đoạn chương trình sau đây:

P1 P2 Pn

{Với mỗi bộ xử lý Pi xác định SUM nhờ các số cục bộ của nó

b(1:k)}

SUM <- 0;

For i = 1 to k do SUM <- SUM + b(i);

{Bộ xử lý Pi gửi kết quả cục bộ SUM đến bộ xử lý Pi+1}

if INDEX = 1 then

begin

if n > 1 then send (RIGHT,SUM); {RIGHT only processor

Pi+1}

end else

{Mỗi bộ xử lý Pi chờ đợi để nhận một kết quả từ Pi-1}

begin

receive(LEFT,LEFTSUM);

SUM <- SUM + LEFTSUM;

{Mỗi bộ xử ly Pi (trừ Pn) gửi kết quả SUM cục bộ cho

Pi+1}

if INDEX < n then send (RIGHT,SUM);

end;

Thời gian T(n) cần thiết để thực hiện tính tổng SUM theo thuật toán song song trên n bộ xử lý gồm có hai thành phần chính: thời gian tính cục bộ TL để thực hiện k = N/n phép cộng đồng thời trên n bộ xử lý. Có thể viết TL = K1N/n, trong đó, K1 là một hằng số phụ thuộc vào thời gian cộng và lưu giữ trên một bộ xử lý. Thành phần thứ hai của T(n) là thời gian TC (thời gian truyền thông) - là thời gian gửi dữ liệu trung gian qua (n-1) phép cộng. Có thể viết TC = K2(n- 1), trong đó: K2 là hằng số phụ thuộc vào độ trễ truyền thông giữa các bộ xử lý. Như vậy, thời gian T(n) sẽ là:

)1 1 ( / ) (n =T +T =K1N n+K2 nT L C (2.1)

Bởi vì K2 liên quan đến thời gian truyền dữ liệu (kết quả trung gian) giữa các bộ xử lý, nó lớn hơn nhiều so với K1, nên sự tăng số lượng các bộ xử lý sẽ kéo theo tăng thời gian K2. Nếu n = 1 thì công thức (2.1) trở thành:

T(n)=TL =K1N (2.2)

Một phần của tài liệu đánh giá hiệu năng của vi xử lý đa lõi dựa trên kiến trúc kết nối (Trang 34 - 37)

Tải bản đầy đủ (PDF)

(76 trang)