Tải bản đầy đủ (.pptx) (15 trang)

Xử lý song song mức tập lệnh

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 (845.64 KB, 15 trang )

GROUP 1
1.

Trần Đức Thao

2.

Nguyễn Quang Huy

3.

Lê Đắc Duy

4.

Đỗ Thanh Tùng

5.

Kiều Mạnh Quang

6.

Vũ Mạnh Hoàng

7.

Nguyễn Thanh Trúc


INSTRUCTION LEVEL


PARALLELISM
(Xử lý song song cấp tập
lệnh)
Presented by Trần Đức Thao


INTRODUCTION (GIỚI THIỆU)
 Instruction-level

parallelism (ILP) về bản chất là một loạt
những câu lệnh được thực hiệ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ành các nhóm mà
sau đó được thực hiện song song mà không thay đổi kết quả
của chương trình
Từ "parallel" trong ILP có nghĩa chính là “đồng thời”


Xử lý song song là gì?
(Parallel instructions)


Xử lý song song: là sự phân chia bài toán to thành nhiều bài toán nhỏ, rồi giải
cùng lúc, nhờ đó làm tăng tốc độ giải toán



Ví dụ: Chúng ta cần tính tích phân trong khoảng [0, 100], thì có thể phân làm 2
bài toán nhỏ là tính tích phân trong khoảng [0, 50] và [50, 100], rồi cộng 2 kết quả
lại.




Hình thức song song:


Song song cấp bit:


16 bit thêm vào 8 bit processor



Song song cấp lệnh



Song song dữ liệu (trong vòng lặp chương trình)




for (i=1; i<=1000; i= i+1)
x[i] = x[i] + y[i];

Song song cấp bộ xử lý


Máy tính có CPU đa nhân, CPU đa lõi



ILP Hữu ích


VD: Xem xét chương trình sau: 1. E = a + b

2. F = c + d

3. M = E * F

Hoạt động 3 phụ thuộc vào kết quả của hoạt động 1 và 2. Do đó, nó không thể được tính
trước khi cả 1 và 2 đều được hoàn thành. Tuy nhiên, các thao tác 1 và 2 không phụ thuộc vào bất
kỳ hoạt động nào khác, vì vậy chúng có thể được tính toán đồng thời. Nếu chúng ta giả định rằng
mỗi hoạt động có thể được hoàn thành trong một đơn vị thời gian thì ba hướng dẫn này có thể
được hoàn thành trong tổng số hai đơn vị thời gian, tức là thời gian thực thi khi sử dụng ILP sẽ
giảm chỉ còn bằng 2/3 so với khi không sử dụng.


Vậy nên, mục tiêu của nhà thiết kế trình biên dịch và bộ xử lý là xác định và tận dụng ILP càng
nhiều càng tốt. Các chương trình thông thường thường được viết dưới một mô hình thực thi
tuần tự (các lệnh thực hiện theo thứ tự) được chỉ định bởi lập trình viên. ILP cho phép trình biên
dịch và bộ xử lý chồng lên nhau để thực hiện nhiều lệnh hoặc thậm chí thay đổi thứ tự các
hướng dẫn được thực hiện.


XỬ LÝ SONG SONG MỨC TẬP LỆNH
(ILP)
Các kỹ thuật kiến trúc

vi mô sử dụng ILP bao gồm:



Instruction pipelining (Cấu trúc đường ống lệnh)



Superscalar (Siêu vô hướng)



Out-of-order execution (Thực thi công việc không theo thứ tự)



Register renaming (Đăng ký đổi tên)



Speculative execution (Thực hiện suy đoán)



Branch prediction (Dự đoán rẽ nhánh)


INSTRUCTION PIPELINE ( Kiến trúc
đường ống lệnh)
 instruction

pipeline


Là một kỹ thuật phần cứng cho phép xử lý đa tác vụ được sử
dụng trên các thiết kế hiện đại như trên các bộ vi xử lý, vi điều
khiển hay CPU.
=>>> Tối ưu được khả năng hoạt động của CPU (gia tăng tốc
độ xử lý của CPU).


Ý tưởng về kiến trúc đường ống lệnh


Ý tưởng chính là để phân chia việc xử lý một lệnh CPU thành một
loạt các bước độc lập để xử lý và được lưu trữ vào cuối mỗi bước



Điều này cho phép điều khiển CPU xử lý các chỉ lệnh với tốc độ xử
lý của bước chậm nhất nhưng nhanh hơn nhiều so với thời gian cần
thiết để thực hiện quá trình xử lý như đơn bước.


EXAMPLE


Ví dụ: Cấu trúc đường ống lệnh theo RISC được chia thành 5 giai đoạn với một bộ flip flops (mạch có
hai trạng thái bền và được sử dụng để lưu trữ thông tin trạng thái) giữa mỗi giai đoạn như sau:


Instruction fetch (Lấy lệnh) (IF)

Instruction decode & register fetch

(Giải mã và đăng ký tìm nạp)





Execute (Thi hành) (EX)



Memory access (thâm nhập bộ nhớ) (MEM)



Register write back (Lưu kết quả) (WB)



Trục dọc là hướng dẫn kế tiếp, trục ngang là thời gian. Ta thấy trong cột màu xanh lá cây, trong khi
chỉ lệnh đầu tiên ở giai đoạn WB thì chỉ lệnh cuối cùng cũng đang trải qua giai đoạn IF (lấy lệnh)


SIÊU VÔ HƯỚNG (Superscalar)


Bộ xử lý Siêu vô hướng thực hiện việc xử lý nhiều câu lệnh trong một bộ xử lý
đơn, nó làm cho tốc độ CPU nhanh hơn so với trước.




Một bộ xử lý Siêu vô hướng thực hiện nhiều lệnh trong một chu kỳ bằng cách gửi
nhiều chỉ lệnh ( dispatched instruction instruction ) tới nhiều đơn vị chức năng dự
phòng được xây dựng trong bộ vi xử lý.



Mỗi đơn vị chức năng không phải là một lõi CPU riêng biệt mà là một tài nguyên
thực thi bên trong CPU như một đơn vị logic số học, đơn vị dấu chấm động (FPU),
một bộ điều chỉnh bit hoặc một số nhân...


EXAMPLE


Trong một đường ống lệnh siêu vô hướng đơn giản. Bằng cách tìm nạp và gửi đi hai hướng
cùng một lúc, có thể hoàn thành tối đa hai hướng dẫn cho mỗi chu kỳ.


Thực hiện không theo tuần tự
(OUT-OF-ORDER EXECUTION)
 OoOE

Là một mô hình được sử dụng trong hầu hết các bộ vi xử lý hiệu suất cao để sử dụng trong hầu hết
các tính năng cao bộ vi xử lý để nâng cao hiệu năng sử dụng các chu kỳ chỉ lệnh mà nếu không có nó, có
thể sẽ bị lãng phí thời gian bởi một sự chậm trễ nào đó.

 Trong

mô hình này, một bộ xử lý thực hiện các câu lệnh theo trật tự chi phối sẵn có của dữ liệu đầu vào,
chứ không phải là theo lệnh ban đầu của lập trình viên


Bộ xử lý có thể tránh được nhàn rỗi trong khi chờ đợi cho các câu lệnh trước đó hoàn thành để lấy dữ liệu
cho các lệnh tiếp theo, xử lý không theo tuần tự để các hướng dẫn tiếp theo có thể chạy ngay lập tức và chạy
một cách độc lập hoàn toàn.
 Hầu

hết các thiết kế CPU hiện đại đều hỗ trợ cho việc thực hiện không theo tuần tự


Các bước thực hiện xử lý không theo
tuần tự


Out-of-order processors breaks up the processing of instructions into these steps:
Nhận chỉ lệnh
Gửi lệnh
Bộ đệm lệnh
Đơn vị
chức
năng 1

Đơn vị
chức
năng 2

.....................
Xử lý

Mọi thứ hoàn tất


Ghi kết quả vào sổ đăng kí

Đơn vị
chức
năng n

Lưu trữ ngược


Các kỹ thuật ILP khác


Register renaming (Đăng kí thay đổi tên) là một kỹ thuật được sử dụng để tránh sự tuần tự
không cần thiết của các chương trình hoạt động do việc tái sử dụng các sổ đăng ký, được sử
dụng để cho phép thực hiện không theo tuần tự (OUT-OF-ORDER EXECUTION)



Speculative execution (Thực hiện đầu cơ) Cho phép thực hiện các hướng dẫn hoàn chỉnh
hoặc các bộ phận của chỉ lệnh trước khi đảm bảo việc thực hiện này là bắt buộc.



Branch prediction (Dự báo nhanh) (Được sử dụng để tránh sự chậm trễ gây ra sự phụ thuộc
kiểm soát để được giải quyết) Dự đoán chi nhánh sẽ xác định liệu một chi nhánh có điều kiện
(nhảy) trong luồng chỉ lệnh của một chương trình có thể được thực hiện hay không.


Love all <3




×