Bài giảng Kiến trúc máy tính - Tuần 13: Kỹ thuật ống dẫn (Pipeline)

KIẾN TRÚC MÁY TÍNH  
Tuần 13  
Kỹ thuật ống dẫn  
(Pipeline)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
1
Kỹ thuật ống dẫn (pipeline)  
Mục đích:  
Tꢀng quan vꢁ kỹ thuật Pipeline  
Nhꢂng vꢃn đꢁ phꢄt sinh vꢅ hưꢆng giꢇi quyꢈt trong  
pipeline  
Slide được dịch và cá c hì nh được lấy từ sá ch tham khảo:  
Computer Organization and Design: The Hardware/Software Interface,  
Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition,  
2011.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
2
Kỹ thuật ống dẫn (pipeline)  
Pipeline một kỹ thuật mà trong đó các lệnh được thực thi  
theo kiểu chồng lꢃn lên nhau (overlap).  
dụ minh họa hoạt động như thꢈ nào là không pipeline hay  
pipeline:  
Giꢇ sử một phòng có nhiꢁu người, mỗi người đꢁu cần giặt quần áo  
bẩn của mình. Quá trình giặt quần áo bao gồm 4 công đoạn:  
1. Đặt quần áo bẩn vào máy giặt để giặt  
2. Khi máy giặt hoàn thành, đưa quần áo ưꢆt vào máy sꢃy  
3. Khi máy sꢃy hoàn thành, đặt quần áo khô lên bàn và ủi  
4. Khi ủi hoàn tꢃt, xꢈp quần áo vào tủ  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
3
Kỹ thuật ống dẫn (pipeline)  
Nꢈu một người hoàn tꢃt tꢃt cꢇ các công đoạn giặt quần áo  
(xong công đoạn ủi, xꢈp quần áo vào tủ) thì người khác mꢆi  
bắt đầu (bắt đầu đặt quần áo bẩn vào máy giặt), quá trình  
thực hiện này gọi không pipeline.  
Tuy nhiên, rõ ràng rằng khi người trưꢆc hoàn thành công  
đoạn 1, sang công đoạn 2 thì máy giặt đã trống, lúc này  
người tiꢈp theo có thể đưa quần áo bẩn vào giặt. Như vậy,  
người tiꢈp theo không cần phꢇi chờ người trưꢆc xong công  
đoạn thứ 4 mꢆi thể bắt đầu, mà ngay khi người trưꢆc đꢈn  
công đoạn thứ 2 thì người tiꢈp theo đã thể bắt đầu công  
đoạn thứ nhꢃt cứ tiꢈp tục như vậy. Quá trình thực hiện  
chồng lꢃn này gọi pipeline.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
4
Kỹ thuật ống dẫn (pipeline)  
Hình ảnh 4 người A, B, C, D giặt  
quần áo theo kiểu tiếp cận không  
pipeline (hình trên) và pipeline (hình  
dưới)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
5
Kỹ thuật ống dẫn (pipeline)  
Cách tiꢈp cận dùng kỹ thuật pipeline tiêu tốn ít thời gian hơn cho tꢃt cꢇ các  
công việc hoàn tꢃt bởi vì các công việc được thực hiện song song, vì vậy số  
công việc hoàn thành trong một giờ sẽ nhiꢁu hơn so vꢆi không pipeline.  
Chú ý, pipeline không làm giꢇm thời gian hoàn thành một công việc mà làm  
giꢇm thời gian hoàn thành tꢀng số công việc (như trong ví dụ trên, thời gian  
cho người A hoàn thành việc giặt khi áp dụng pipeline hay không pipeline  
đꢁu là 2 giờ, nhưng tꢀng số giờ cho 4 người A, B, C và D hoàn thành dùng  
pipeline giꢇm rꢃt nhiꢁu so vꢆi không pipeline)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
6
Kỹ thuật ống dẫn (pipeline)  
Tương tự việc giặt quần áo, thay vì một lệnh phꢇi chờ lệnh trưꢆc đó hoàn thành  
mꢆi được thực thi thì các lệnh trong một chương trình của bộ xử lý có thể thực  
thi theo kiểu pipeline.  
Khi thực thi, các lệnh MIPS được chia làm 5 công đoạn:  
1. Nạp lệnh từ bộ nhớ  
2. Giải lệnh đọc các thanh ghi cần thiết (MIPS cho phép đọc và  
giải đồng thời)  
3. Thực thi các phép tính hoặc tính toán địa chỉ  
4. Truy xuất các toán hạng trong bộ nhớ  
5. Ghi kết quả cuối vào thanh ghi  
vậy, MIPS pipeline trong chương này xem như có 5 công đoạn (còn gọi là  
pipeline 5 tầng)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
7
1. Nạp lệnh từ bộ nhꢆ IF  
2. Giꢇi lệnh đọc các thanh ghi ID  
3. Thực thi EX  
4. Truy xuꢃt bộ nhꢆ MEM  
5. Ghi kꢈt quꢇ vào thanh ghi WB  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
8
Kỹ thuật ống dẫn (pipeline)  
- Xét một bộ xử vꢆi 8 lệnh cơ bꢇn: load word (lw), store word (sw), add  
(add), subtract (sub), AND (and), OR (or), set less than (slt), và nhꢇy vꢆi  
điꢁu kiện bằng (beq).  
- Giꢇ sử thời gian hoạt động các công đoạn như sau: 200 ps cho truy xuꢃt  
bộ nhꢆ, 200 ps cho tính toán của ALU, 100 ps cho thao tác đọc/ghi thanh  
ghi  
- So sánh thời gian trung bình giꢂa các lệnh của hiện thực đơn chu kỳ và  
pipeline.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
9
Kỹ thuật ống dẫn (pipeline)  
Ví dụ hình ảnh 3 lệnh lw thực hiện theo kiểu không pipeline, đơn chu kỳ (hình trên)  
và có pipeline (hình dưới)  
Thời gian giꢂa lệnh thứ nhꢃt thứ tư trong không pipeline là 3 x 800 =  
2400 ps, nhưng trong pipeline là 3 x 200 = 600 ps  
10  
Kỹ thuật ống dẫn (pipeline)  
Sự tăng tốc của pipeline  
Trong trường hợp tưởng: khi mà các công đoạn pipeline hoàn toàn bằng nhau thì  
thời gian giꢂa hai lệnh liên tiꢈp được thực thi trong pipeline bằng:  
Như vậy, trong ví dụ trên, thời gian giữa hai lệnh liên tiếp có pipeline bằng 160 ps (800:5 = 160)  
Trong trường hợp lý tưởng, pipeline sẽ tăng tốc so với không pipeline với số lần đúng  
bằng số tầng của pipeline.  
Trong thực tế: Các công đoạn thực tꢈ không bằng nhau, việc áp dụng pipeline phꢇi chọn  
công đoạn dài nhꢃt để làm một chu kỳ pipeline.  
vậy, trong ví dụ trên, thời gian liên tiꢈp giꢂa hai lệnh pipeline là 200 ps. Và áp dụng pipeline  
tăng tốc gꢃp 4 lần so vꢆi không pipeline.  
Speed-up ≈ Thời gian giữa hai lệnh liên tiếp không pipeline : Thời gian giữa hai lệnh liên tiếp pipeline ≈  
800 : 200 = 4 < 5 (number pipeline stages)  
Trong thực tế, pipeline sẽ tăng tốc so với không pipeline với số lần nhỏ hơn số tầng của  
pipeline.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
11  
Kỹ thuật ống dẫn (pipeline)  
Lưu ý, pipeline tăng tốc so với không pipeline:  
Kỹ thuật pipeline không giúp giꢇm thời gian thực thi  
của từng lệnh riêng lẻ mà giúp giꢇm tꢀng thời gian thực  
thi của đoạn lệnh/chương trình chứa nhiꢁu lệnh (từ đó  
giúp thời gian trung bình của mỗi lệnh giꢇm)  
Việc giúp giꢇm thời gian thực thi cho nhiꢁu lệnh vô cùng  
quan trọng, vì các chương trình chạy trong thực tꢈ thông  
thường lên đꢈn hàng tỉ lệnh.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
12  
Kỹ thuật ống dẫn (pipeline)  
Quy ước trình bày 5 công đoạn thực thi một lệnh của pipeline:  
Lưu ý cách vẽ hình các công đoạn pipeline như sau:  
Khối đen hoàn toàn hoặc để trắng hoàn toàn: Trong mỗi công đoạn pipeline, nꢈu  
lệnh thực thi không làm gì trong công đoạn này sẽ được trắng, ngược lại sẽ được tô  
đen.  
dụ lệnh “add” có EX đen và MEM trắng tức lệnh này có tính toán trong công  
đoạn EX và không truy xuất bộ nhớ dữ liệu trong công đoạn MEM.  
Các công đoạn liên qua đꢈn bộ nhꢆ và thanh ghi có thể nꢂa trái hoặc nꢂa phꢇi đen:  
Nꢈu nꢂa phꢇi đen, tức công đoạn đó đang thực hiện thao tác đọc; ngược lại nꢈu nꢂa  
trái tô đen, công đoạn đó đang thực hiện thao tác ghi.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
13  
Kỹ thuật ống dẫn (pipeline)  
Hình ảnh datapath có hỗ trợ pipeline  
Chi tiết về datapath và control cho pipeline có thể xem thêm tại phần 4.6 sá ch  
tham khảo chí nh.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
14  
Kỹ thuật ống dẫn (pipeline)  
Các xung đột thể xảy ra khi áp dụng kỹ thuật pipeline (Pipeline Hazards):  
Xung đột trạng thái mà lệnh tiꢈp theo không thể thực thi trong chu kỳ pipeline  
ngay sau đó (hoặc thực thi nhưng sẽ cho ra kꢈt quꢇ sai), thường do một trong ba  
nguyên nhân sau:  
Xung đột cấu trúc (Structural hazard): là khi một lệnh dự kiꢈn không thể  
thực thi trong đúng chu kỳ pipeline của nó do phần cứng cần không thể hỗ trợ.  
Nói cách khác, xung đột cꢃu trúc xꢇy ra khi có hai lệnh cùng truy xuꢃt vào một  
tài nguyên phần cứng nào đó cùng một lúc.  
Xung đột dữ liệu (Data hazard): là khi một lệnh dự kiꢈn không thể thực thi  
trong đúng chu kỳ pipeline của nó do dꢂ liệu lệnh này cần vẫn chưa sẵn  
sàng.  
Xung đột điều khiển (Control/Branch hazard): là khi một lệnh dự kiꢈn  
không thể thực thi trong đúng chu kỳ pipeline của nó do lệnh nạp vào không  
phꢇi lệnh được cần. Xung đột này xꢇy ra trong trường hợp luồng thực thi  
chứa các lệnh nhꢇy.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
15  
Kỹ thuật ống dẫn (pipeline)  
Xung đột cấu trúc  
dụ vꢁ xung đột cꢃu trúc:  
Giꢇ sử rằng chúng ta có một bộ nhꢆ đơn duy nhꢃt thay vì hai bộ nhꢆ lệnh dꢂ  
liệu rời rạc nhau. Nꢈu pipeline trong ví dụ ở hình trên có thêm lệnh thứ tư thì  
trong chu kỳ pipeline từ 600 tꢆi 800 khi lệnh thứ nhꢃt thực hiện truy xuꢃt bộ nhꢆ  
lꢃy dꢂ liệu thì lệnh thứ tư sẽ thực hiện truy xuꢃt bộ nhꢆ lꢃy lệnh. Do không có bộ  
nhꢆ lệnh dꢂ liệu riêng lẻ, trong trường hợp này sẽ có xung đột cꢃu trúc xꢇy ra.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
16  
Kỹ thuật ống dẫn (pipeline)  
Xung đột dữ liệu  
Ví dụ cho đoạn lệnh sau: add $s0, $t0, $t1  
sub $t2, $s0, $t3  
Trong ví dụ trên, nꢈu áp dụng pipeline bình thường thì công đoạn  
ID của lệnh sub sẽ thực hiện cùng lúc vꢆi cộng đoạn EX của lệnh  
add. Trong công đoạn ID, lệnh sub sẽ cần đọc giá trị của thanh ghi  
$s0, trong khi đó giá trị mꢆi của thanh ghi $s0 phꢇi tꢆi công đoạn  
WB của lệnh add mꢆi sẵn sàng. Vì vậy, nꢈu thực hiện pipeline  
thông thường, trường hợp này sẽ xꢇy ra xung đột dꢂ liệu  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
17  
Kỹ thuật ống dẫn (pipeline)  
Xung đột dữ liệu  
dụ cho đoạn lệnh sau: add $s0, $t0, $t1  
sub $t2, $s0, $t3  
Một cách giꢇi quyꢈt thể trong trường hợp này là chờ thêm hai  
chu kỳ xung xung clock thì lệnh sub mꢆi được nạp vào  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
18  
Kỹ thuật ống dẫn (pipeline)  
Xung đột dữ liệu  
Thay vì chờ một số chu kỳ đꢈn khi dꢂ liệu cần sẵn sàng, một kỹ thuật có  
thể được áp dụng để rút ngắn số chu kỳ rỗi, gọi kỹ thuật nhìn trước  
(forwarding hay bypassing).  
Như trong ví dụ trưꢆc, thay vì chờ sau hai chu kỳ rỗi mꢆi nạp lệnh sub vào,  
ngay khi ALU hoàn thành tính toán tꢀng cho lệnh add thì tꢀng này cũng  
được cung cꢃp ngay cho công đoạn EX của lệnh sub (thông qua một bộ đệm  
dꢂ liệu gắn thêm bên trong) để ALU tính toán kꢈt quꢇ cho sub nhanh.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
19  
Kỹ thuật ống dẫn (pipeline)  
Xung đột dữ liệu  
Kỹ thuật nhìn trưꢆc: một phương pháp giꢇi quyꢈt xung đột dꢂ liệu bằng  
đưa thêm vào các bộ đệm phụ bên trong, các dꢂ liệu cần thể được truy  
xuꢃt từ bộ đệm này hơn chờ đợi đꢈn khi nó sẵn sàng trong bộ nhꢆ hay  
trong thanh ghi.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
20  
Tải về để xem bản đầy đủ
pptx 29 trang yennguyen 12/04/2022 7020
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Tuần 13: Kỹ thuật ống dẫn (Pipeline)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptxbai_giang_kien_truc_may_tinh_tuan_13_ky_thuat_ong_dan_pipeli.pptx