1. Trang chủ
  2. » Khoa Học Tự Nhiên

bài tập môn xử lý song song

20 294 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 516,69 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Tại mỗi thời điểm, máy tính chỉ thực hiện được một phép toán nên khi phải xử lý một khối lượng dữ liệu rất lớn thì sẽ mất rất nhiều thời gian để giải quyết.. Máy tính được xây dựng từ

Trang 1

Bài 1.1 Nêu đặc trưng cơ bản của kiến trúc máy tính tuần tự của von Neuman

- Máy tính Von Neumann là hệ thống đơn một bộ xử lý

- Không cho phép thực hiện nhiều công việc cùng một lúc

- Tại mỗi thời điểm, máy tính chỉ thực hiện được một phép toán nên khi phải xử lý một khối lượng dữ liệu rất lớn thì sẽ mất rất nhiều thời gian để giải quyết

- Tốc độ xử lý của các bộ xử lý theo kiểu Von Neumann đã dần tiến tới giới hạn, không thể cải tiến thêm được

Máy tính được xây dựng từ các khối cơ sở :

- Bộ nhớ: để lưu trữ dữ liệu;

- Các đơn vị logic và số học: thực hiện các phép toán được ký hiệu là ALU;

- Các phần tử xử lý: điều khiển CU và truyền dữ liệu vào/ra;

- Đường truyền dữ liệu

Sự khác nhau chính của các máy tính là sự liên kết giữa các khối đó với nhau Trong các hệ thống máy tính truyền thống có hai khối quan trọng nhất là bộ nhớ và BXL BXL thao tác trên các dữ liệu được lưu trữ trong bộ nhớ thông qua các chỉ thị (câu lệnh) Các câu lệnh cũng được lưu trong bộ nhớ và luôn luôn là dòng được chuyển từ bộ nhớ tới BXL để thực hiện Dữ liệu di chuyển trong hệ thống theo cả hai chiều, đọc và ghi vào bộ nhớ Hình 1-1 mô tả hoạt động của mô hình máy tính kiểu von Neumann

Mở rộng mô hình von Newmann là mạng các máy tính, trong đó mỗi nút là một máy tính

có thể thao tác độc lập với các đơn vị khác Mạng máy tính có thể tổ chức phân tán theo địa

1.2: Các kiến trúc máy tính có thể được phân loại như thế nào? dựa vào những yếu tố nào để phân loại? Một hệ thống như thế nào được gọi là máy tính song song?

Kiến trúc máy tính nghiên cứu cách tổ chức để liên kết các thành phần của các hệ thống máy tính Về cơ bản, máy tính được xây dựng từ các khối cơ sở như:

Bộ nhớ (Memory): Dùng để lưu trữ dữ liệu trong quá trình xử lý dữ liệu

Các đơn vị logic và số học (ALU): Nhằm thực hiện các phép toán logic và phép toán

số học

Khối điều khiển (CU): Điều khiển và truyền dữ liệu vào/ra

Các đường truyền dữ liệu (BUS)

Dựa vào kiến trúc trên thì có nhiều cách để phân loại các kiến trúc máy tính, nhưng cách thông dụng nhất là dựa vào các đặc tính về số lượng bộ xử lý (BXL), số chương trình thực hiện đồng thời, cấu trúc bộ nhớ, …

Bộ nhớ

Bộ xử lý Ghi dữ liệu Đọc dữ liệu Câu lệnh

Trang 2

Cách phân loại sau đây của Michael Flynn vào năm 1966 được nhiều người chấp nhận:

 SISD (Single Instruction stream, Single Data stream): Đơn luồng lệnh, đơn luồng dữ

liệu là loại máy tính chỉ có một CPU, ở mỗi thời điểm chỉ thực hiện một lệnh và chỉ đọc hoặc ghi một mục dữ liệu

 SIMD (Single Instruction stream, Multiple Data stream): Đơn luồng lệnh, đa luồng

dữ liệu là loại máy tính có nhiều đơn vị xử lý thực hiện theo một luồng các câu lệnh CPU phát sinh tín hiệu điều khiển đến tất cả các phần tử xử lý, những bộ xử lý

này cùng thực hiện một phép toán trên các mục dữ liệu khác nhau, nghĩa là mỗi bộ

xử lý có luồng dữ liệu riêng

 MISD (Multiple Instruction stream, Single Data stream): Đa luồng lệnh, đơn luồng

dữ liệu là loại máy tính có thể thực hiện nhiều chương trình (nhiều lệnh) trên cùng một mục dữ liệu Loại máy tính được chia thành hai lớp:

o Lớp các máy tính yêu cầu những đơn vị xử lý khác nhau có thể nhận được những chỉ lệnh khác nhau để thực hiện trên cùng một mục dữ liệu

o Lớp các máy tính có các luồng dữ liệu được chuyển tuần tự theo dãy các CPU liên tiếp

CU 1

Phần tử

xử lý 2 Luồng lệnh 1

Phần tử

xử lý n

Phần tử

xử lý 1

CU 2

CU n

Luồng lệnh 2

Luồng lệnh n

Luồng

dữ liệu

Đơn vị điều khiển (CU)

Phần tử

xử lý 1

Tín hiệu điều khiển

Phần tử

xử lý n

Phần tử

xử lý 2

Tín hiệu

điều khiển

Đơn vị điều khiển

Bộ nhớ

BXL số học

Tín hiệu điều khiển

Trang 3

 MIMD (Multiple Instruction stream, Multiple Data stream): Đa luồng lệnh, đa luồng

dữ liệu là loại máy tính đa bộ xử lý, trong đó mỗi bộ xử lý có thể thực hiện những luồng lệnh (chương trình) khác nhau trên các luồng dữ liệu riêng

Một hệ thống có thể phân rã bài toán ban đầu thành các bài toán con nhỏ hơn để thực hiện (giải quyết) đồng thời các bài toán con đó, sau đó tổng hợp các kết quả ở các bài toán con để thu được kết quả của bài toán ban đầu Hệ thống như vậy được gọi là máy tính song song Với khái niệm như vậy thì ta thấy hai loại kiến trúc máy tính SIMD và MIMD có thể được xem như là máy tính song song

Câu 1.4: Máy tính kiểu MIMD khác với mạng các máy tính như thế nào?

+ Đa bộ xử lý, trong đó mỗi bộ xử lý có thể thực

hiện những luồng lệnh (chương trình) khác nhau

trên các luồng dữ liệu riêng

+ Đa máy tính nối lại với nhau

+ Có bộ nhớ riêng và cũng có thể truy cập vào

được bộ nhớ chung (global) khi cần, do vậy

giảm thiểu được sự trao đổi giữa các BXL trong

hệ thống

+ Bộ nhớ riêng

+ Có không gian địa chỉ ảo chung + Mỗi máy có không gian địa chỉ riêng + Xử lý phân tán trên một số BXL độc lập + Xử lý phân tán trên các máy

+Mỗi BXL thao tác độc lập và có thể thực hiện

đồng thời với nhau

+ Mỗi máy trong mạng thao tác độc lập

và có thể thực hiện đồng thời với nhau + Mỗi BXL chạy một chương trình riêng + Mỗi máy chạy một chương trình riêng

CU 1

Phần tử

xử lý 2 Luồng lệnh 1

Phần tử

xử lý n

Phần tử

xử lý 1

CU 2

CU n

Luồng lệnh 2

Luồng lệnh n

Luồng dữ liệu 1

Luồng dữ liệu 2

Luồng dữ liệu n

Trang 4

Bài 1.5 Nêu nguyên lý xử lý theo hình ống Những bài toán có những tính chất gì thì thích hợp với kiến trúc xử lý hình ống?

Nguyên lý hình ống (pipelined) dựa vào phương pháp phân đoạn hoặc chia nhỏ một

tiến trình tính toán thành một số đoạn nhỏ hơn để thực hiện trong các pha liên tiếp Tất cả các giai đoạn của một tiến trình được thực hiện tuần tự, khi thực hiện xong thì bắt đầu thực hiện của tiến trình tiếp theo Mỗi pha thực hiện xong sẽ truyền kết quả cho pha tiếp theo

Như vậy, trong cách thực hiện theo nguyên lý hình ống, khi một giai đoạn công việc đang thực hiện thì một giai đoạn khác có thể nạp dữ liệu vào, và dữ liệu vào của giai đoạn này có thể là kết quả của giai đoạn trước nó

Ví dụ, hình 1-10 mô tả một tiến trình được phân thành 4 giai đoạn thực hiện tuần tự,

nhưng có thể thực hiện song song theo nguyên lý hình ống để tăng tốc độ tính toán khi phải thực hiện nhiều tiến trình như thế

Một tiến trình được chia thành 4 giai đoạn:

Thực hiện tuần tự hai tiến trình phải qua 8 giai đoạn:

Thực hiện theo hình ống hai tiến trình trên chỉ cần trải qua 5 giai đoạn:

Hình 1-10: Thực hiện tuần tự và hình ống của hai tiến trình gồm 4 giai đoạn Nếu ký hiệu Si là thời gian cần thiết để thực hiện giai đoạn thứ i thì:

Tổng thời gian tính toán tuần tự là: 2 * (S1 + S2 + S3+ S4)

Tổng thời gian tính toán hình ống là: S1 + S2 + S3+ S4 + S4

Nguyên lý hình ống có thể áp dụng theo hai mức:

Hình ống theo đơn vị số học: Các đơn vị số học và logic ALU được tổ chức thành

mảng, các phép toán bên trong được thực hiện theo nguyên lý hình ống (hình (a))

Hình ống theo đơn vị câu lệnh: Các đơn vị điều khiển CU được phân đoạn và tổ

chức theo hình ống (hình (b))

Hình 1-11: (a) Xử lý hình ống theo ALU, (b) Xử lý hình ống theo CU

Pha 1 Pha 2 Pha 3 Pha 4

Pha 1 Pha 2 Pha 3 Pha 4

Pha 1 Pha 2 Pha 3 Pha 4

Pha 1 Pha 2 Pha 3 Pha 4 Pha 1 Pha 2 Pha 3 Pha 4

CU ALU ALU ALU

Bộ nhớ

CU

CU

CU ALU

Bộ nhớ

Trang 5

Như chúng ta đã biết, việc xử lý theo hình ống được sử dụng để thực hiện gối đầu nhiều pha thực hiện các câu lệnh liên tiếp và sự truyền thông dữ liệu Do vậy có thể xây

dựng hình ống vòng tròn giữa các BXL, bộ nhớ và mạng liên kết như sau:

Các phép toán thực hiện bởi CU theo kiến trúc này có thể chia thành 5 giai đoạn:

Giai đoạn 1 Đọc dữ liệu: đọc dữ liệu từ bộ nhớ chia sẻ

Giai đoạn 2 Chuyển tải dữ liệu: chuyển dữ liệu từ bộ nhớ tới các phần tử xử lý PE thông qua mạng đọc (Read Network)

Giai đoạn 3 Thực hiện câu lệnh: sử dụng PE để thực hiện các câu lệnh

Giai đoạn 4 Chuyển tải dữ liệu: chuyển các kết quả từ các PE tới bộ nhớ thông qua mạng ghi (Write Network)

Giai đoạn 5 Lưu trữ dữ liệu : ghi lại các kết quả vào bộ nhớ chia sẻ

Nói chung, nguyên lý hình ống cho phép nhiều thao tác gối đầu nhau thực hiện đồng thời và hỗ trợ để khai thác được khả năng của kiến trúc song song theo các mức khác nhau

Mức câu lệnh Từng câu lệnh chuyển vào cho một đoạn trong chu trình thực hiện

sao cho sau khi đưa các lệnh vào hình ống thì chúng sẽ thực hiện lặp lại theo từng chu kỳ

Mức hệ thống con Nhiều phép toán có thể thực hiện theo hình ống như ADD,

MUL, DIV, và SORT thường có trong nhiều kiến trúc của máy tính Những phép

toán này được sử dụng theo hình ống rất thường xuyên

Mức hệ thống Nhiều đoạn trong hình ống không cần phải thực hiện ở mức phần cứng mà có thể ở mức phần mềm

Kết quả nguyên lý hình ống đã được ứng dụng để thiết kế nhiều hệ máy tính như: CDC STAR 100, Texas Instruments ASC, Cray 1, v.v

Bài 1.7 Một công việc được chia thành m công việc con, mỗi công việc con đòi hỏi một đơn vị thời gian để thực hiện Hỏi cần bao nhiêu đơn vị thời gian để hệ hình ống gồm m-bộ xử lý tuyến tính (gồm m –pha thực hiện) thực hiện được nhiệm vụ cho trước?

Cách 1: Theo kiến trúc của bộ xử lý hình ống m bộ xử lý tuyến tính thì với nhiệm vụ cho trước được chia thành m công việc con như vậy sẽ mất 01 đơn vị thời gian để thực hiện

Cách 2:

Giả sử có n công việc với một công việc được chia thành m công việc con, mỗi công việc con đòi hỏi một đơn vị thời gian để thực hiện

Nếu xử lý theo kiểu tuần từ thì mất n*m đơn vị thời gian xử lý

Nếu Sử dụng nguyên lý hình ống mất m+n -1 đơn vị thời gian xử lý

Write Network

Shared

Memory

Shared Memory Read

Network

Trang 6

Nếu một công việc được chia thành m công việc con, mỗi công việc con đòi hỏi một đơn vị thời gian để thực hiện thì cần m đơn vị thời gian xử lý

Bài 2.1 Nêu những vấn đề cần quan tâm khi thiết kế kiến trúc máy tính song song

Sử dụng tập nhiều thanh ghi: sẽ làm giảm hiệu ứng phụ của các thanh ngắt

Sử dụng không gian nhớ lớn: làm giảm hiệu ứng phụ của sự đổi chỗ, làm tăng hiệu

quả trao đổi dữ liệu của hệ thống

Lập lịch cho BXL: vấn đề là xây dựng bộ lịch cấp phát hữu hiệu các BXL cho từng

nhiệm vụ đơn lẻ một cách động như các chương trình ứng dụng yêu cầu

Đồng bộ các BXL: điều khiển nhiều tiến trình hoạt động đồng thời, cùng truy cập

đến một số hữu hạn các tài nguyên chung, ví dụ như bộ nhớ, đảm bảo tránh được

sự tắc nghẽn (deadlock)

Thiết kế cấu hình mạng liên kết: tập trung vào việc kết nối BXL với BXL, BXL

với bộ nhớ trong hệ thống Cấu hình tôpô của mạng kết nối là vấn đề rất quan

trọng trong thiết kế hệ thống song song

Phân đoạn: xác định mức độ song song trong các thuật toán để xác định được các

luồng xử lý đồng thời Sự phân đoạn có thể thực hiện ở nhiều mức khác nhau: mức

lệnh, mức thủ tục, hoặc mức chương trình, v.v

Đảm bảo tin cậy: vấn đề dung thứ lỗi (Fault Tolerance) đảm bảo nếu có một BXL

nào đó không thực hiện được thì công việc mà nó phải đảm nhiệm sẽ được giao cho BXL khác thực hiện để đảm bảo trong mọi tình huống để công việc chung vẫn

được hoàn thành

Bài 2.2: Bộ nhớ kết hợp là gì? nêu nguyên lý họat động của bộ nhớ kết hợp

Bộ nhớ (Memory) là một trong những thành phần quan trọng nhất của kiến trúc máy

tính John von Neumann

Bộ nhớ kết hợp (AM – Associative Memory) bao gồm các ô nhớ (gọi là cell) và logic

kết hợp Mỗi ô nhớ của AM có 4 đầu vào và hai đầu ra, như hình sau:

Các đầu vào của mỗi ô nhớ bao gồm:

 Bit đối số a

s

k q

a R/W m

Kết quả

Đối sánh

Chọn

Khóa

Đối số

Đọc/Ghi

Cấu trúc của ô nhớ AM

Trang 7

 Bit đọc/ghi R/W nhằm xác định thao tác tương ứng cần thực hiện

 Bit khóa k

 Bit lựa chọn s để xác định ô nhớ thích hợp cho việc thực hiện đọc/ghi

Hai kết quả ở đầu ra bao gồm:

 Bit đối sánh m chỉ ra dữ liệu được lưu trong bộ nhớ có sánh được với bit đối số a

hay không

 Bit ra kết quả q

Nguyên lý hoạt động của bộ nhớ kết hợp: Tất cả các bộ nhớ kết hợp được tổ chức

thành các từ (word) và được xây dựng thành mảng các ô giống nhau Hình sau đây mô tả một bộ nhớ kết hợp có n từ và mỗi từ có m bit Mỗi ô trong số m*n ô nhớ có một mạch vòng

để so sánh đối số với giá trị được lưu trữ trong các ô nhớ, đồng thời chỉ ra kết quả khi đối sánh thành công Hệ thống có thanh ghi lưu trữ đối số, một thanh ghi đánh sấu những trường của mỗi từ mà bộ nhớ cần so sánh và thanh ghi đối sánh (các bit đối sánh) chỉ ra những từ tìm thấy

Buffer Register

Output

0

1

m-1

Tags 0 1 n-1 Mask Register

Cấu trúc của bộ nhớ kết hợp

Trang 8

Bài 2.4: Dựa vào định nghĩa chung của mạng liên kết hình khối để xây dựng cấu trúc tôpô cho mạng liên kết hình khối cho 16 bộ xử lý

Câu 2.7 Xây dựng mạng liên kết theo mô hình xáo trộn hoàn hảo cho 16 phần tử

3.1: Xác định sự phụ thuộc dữ liệu của các lệnh trong chu trình sau:

Do i = 1 to N

a[i+1] = e[i] + 2*d[i] (S2)

end

 DEF(S1)  USE(S2) ≠ : phụ thuộc dòng dữ liệu giữa câu lệnh S1 và S2

 DEF(S1)  USE(S3) ≠ ): phụ thuộc dòng dữ liệu giữa câu lệnh S1 và S3

 USE(S2)  USE(S3) ≠ : phụ thuộc dữ liệu vào giữa lệnh S2 và S3

0

3

2

1

5

4

P0011

P0111

P0110

P0010

0101

8

11

10

9

13

12

P1011

P1111

P1110

P1010

1101

Trang 9

Từ đó ta có đồ thị phụ thuộc dữ liệu như sau:

Câu 3.2 Hai chu trình sau có tương đương về nội dung tính toán hay không? Hãy bình luận về khả năng thực hiện song song của các chu trình đó

1 Do i = 1 to N

a[i] = a[i + 1] + i end

2 Do i = N downto 1

a[i] = a[i + 1] + i end

- Hai chu trình trên không tương đương về nội dung tính toán vì

Chu trình 1 : giá trị phần tử mảng thứ i bằng giá trị phần tử mảng thứ i + 1 cộng với chỉ số i.( trong đó giá trị phần tử mảng thứ i + 1 không bị thay đổi trong chu trình trước đó)

Chu trình 2 : Giá trị phần tử mảng thứ i bằng giá trị phần tử mảng thứ i + 1 cộng với chỉ số i ( trong đó giá trị phần tử mảng thứ i + 1 đã bị thay đổi trong chu trình trước đó)

- Chu trình 1 có thể thực hiện song song được vì

Chu trình 1 làm nhiệm vụ sao tất cả các phần tử của một mảng sang chính mảng đó với chỉ số giảm đi một và giá trị của mảng được cộng thêm giá trị chính bằng chỉ số mảng,

do đó nó phải thực hiện tuần tự

Nếu hai mảng đích và mảng nguồn của chu trình trên là khác nhau thì bằng cách tạo

ra một bản sao của mảng gốc, chúng ta có đoạn chương trình sau:

1.1 Do i = 1 to N

a1[i] = a[i];

end

Do i = 1 to N

a[i] = a1[i + 1] + i ; end

cả hai chu trình trên là khả song song Nếu chúng ta có N bộ xử lý thì chỉ cần hai đơn

vị thời gian của CPU là thực hiện được chu trình trên

- Chu trình 2 không thể thực hiện song song vì

Trang 10

Chu trình 2 có thể khai triển thành

a[N] = a[N + 1] + N;

a[N – 1] = a[N] + N – 1;

a[i] = a[i + 1] + i

a[j] = a[j + 1] + j

(giả sử i > j)

Để kiểm tra sự phụ thuộc của các lệnh trên chúng ta tính DEF và USE

USE(i) = {a[i + 1]}

DEF(i) = {a[i]}

USE(j) = {a[j + 1]}

DEF(j) = {a[j]}

Ta nói rằng vòng lặp thứ i và thứ j là phụ thuộc dòng dữ liệu, nếu DEF(i) và USE(j)

có chứa biến chung Trong chu trình trên, hai tập DEF(i) = {a[i]} và USE(j) = {a[j + 1]} có chứa phần tử chung khi i = j + 1 Theo giả thiết các bước triển khai trên i > j nên phương trình i = j + 1 có vô số nghiệm do đó có thể kết luận chu trình 2 không thể thực hiện song song

Câu 3.3 : Xác định tất cả các sự phụ thuộc dữ liệu trong đoạn chương trình sau:

int a[MAX];

read(a);

for(i = 0; i < N; i++)

for(j = 0; j < i; j++){

S1: a[i] = max(a[i], a[j]);

S2: a[j] = min(a[i], a[j]);

}

Ở đoạn chương trình trên có lệnh khai báo mảng a và lệnh đọc dữ liệu vào cho mảng đó

Tuy nhiên hai lệnh này không ảnh hưởng gì đến sự phụ thuộc dữ liệu nên ta chỉ xét đến các

lệnh gán ở hai chu trình lồng nhau theo các biến i và j

DEF(S1) = {a[i]}, USE(S1) = {a[i], a[j]}

DEF(S2) = {a[j]}, USE(S2) = {a[i], a[j]}

Ta có các phụ thuộc dữ liệu sau :

DEF(S1)  USE(S2) = {a[i]} ≠  suy ra S1 và S2 phụ thuộc dòng dữ liệu

DEF(S2)  USE(S1) = {a[j]} ≠  suy ra S1 và S2 phản phụ thuộc dữ liệu

Ngày đăng: 02/06/2015, 16:14

HÌNH ẢNH LIÊN QUAN

Hình 1-10: Thực hiện tuần tự và hình ống của hai tiến trình gồm 4 giai đoạn  Nếu ký hiệu S i  là thời gian cần thiết để thực hiện giai đoạn thứ i thì: - bài tập môn xử lý song song
Hình 1 10: Thực hiện tuần tự và hình ống của hai tiến trình gồm 4 giai đoạn Nếu ký hiệu S i là thời gian cần thiết để thực hiện giai đoạn thứ i thì: (Trang 4)
Đồ thị phụ thuộc dữ liệu - bài tập môn xử lý song song
th ị phụ thuộc dữ liệu (Trang 13)

TỪ KHÓA LIÊN QUAN

w